!&/s"U>!      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~             !!!"!#!$!%!&!'!(!)!*!+!,!-!."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M#N#O#P#Q#R#S#T#U#V$W$X%Y%Z%[%\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))***********************++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-.////00000000000000000011111111111111222222222222 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 !2 "2 #2 $2 %2 &2 '2 (2 )2 *2 +2 ,2 -2 .2 /2 02 12 22 32 42 52 62 72 82 92 :2 ;2 <2 =2 >2 ?2 @2 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 K3 L3 M3 N3 O3 P3 Q3 R3 S3 T3 U3 V3 W3 X3 Y4 Z4 [4 \4 ]4 ^4 _4 `4 a4 b4 c4 d4 e4 f4 g4 h4 i4 j4 k4 l4 m4 n4 o4 p4 q4 r4 s4 t4 u4 v4 w4 x4 y4 z4 {4 |4 }4 ~4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 9 : ; ; ; ;                                      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { |< }< ~< < < < < < < < < < < < < < < < < < < < < < < < < = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = > > > > > > > > > > > > > > > > > > > > > > > ? ? ? ? ? ? ? ? ? @ @ @ @ @ @ @ A A A A A A A A A A A A A A A B B B B B B B B B B C C C C C C C !C "C #C $C %C &C 'C (C )C *C +C ,C -C .C /C 0C 1C 2C 3C 4C 5C 6C 7C 8C 9C :C ;C <C =C >C ?C @C AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC WC XC YC ZC [C \C ]C ^C _C `C aC bC cC d/ e/ f/ g/ h/ i/ j/ k/ l/ m/ n/ o/ p/ q/ r/ s/ t/ u/ v/ w/ x/ y/ z/ {/ |/ }/ ~/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / !/ "/ #/ $/ %/ &/ '/ (/ )/ */ +/ ,/ -/ ./ // 0/ 1/ 2/ 3/ 4/ 5/ 6/ 7/ 8/ 9/ :/ ;/ </ =/ >/ ?/ @/ A/ B/ C/ D/ E/ F/ G/ H/ I/ J/ K/ L/ M/ ND OE PF QG RF SE TF UD VF WE XE YF ZF [F \F ]F ^H _H `H aH bI cI dI eI fI gI hI iI jI kI lI mI nI oI pI qI rJ sJ tJ uJ vJ wJ xJ yJ zJ {J |J }J ~J J J J J J J J J K K K K K K K K K K K K K K L L L L L L L L L L L M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M N N N N N N O O O O O O O O O O O O O P P P P P P P P P P !P "P #P $P %P &P 'P (P )P *P +P ,P -P .P /P 0P 1P 2P 3P 4P 5P 6P 7P 8P 9P :P ;P <P =P >P ?P @P AP BP CP DP EP FP GP HP IP JP KP LP MP NP OP PP QP RP SP TP UP VP WP XP YP ZP [P \P ]P ^P _P `P aP bP cP dP eP fP gP hP iP jP kP lP mP nP oP pP qP rP sP tP uP vP wP xP yP zP {P |P }P ~P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P PPPPPPPPPP P P P P PPPPPPPPPPPPPPPPPPP P!P"P#P$P%P&P'P(P)P*P+P,P-P.P/P0P1P2P3P4P5P6P7P8P9P:P;P<P=P>P?P@PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYQZQ[Q\Q]Q^Q_Q`QaQbQcQdQeQfQgQhQiQjQkQlQmQnQoQpQqQrQsQtQuQvQwQxQyQzQ{Q|Q}Q~QQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T T T TUUUUUUUUUUUUUUUUUU U!U"U#U$U%U&U'U(U)U*U+U,U-U.U/U0U1U2U3U4U5U6U7U8U9U:U;U<U=U>V?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\W]W^W_W`WaWbWcWdWeWfWgWhWiWjWkWlWmWnWoWpWqWrWsWtXuXvXwXxXyXzX{X|X}X~XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX????????????????????????????????????????????????? ? ? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????YYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[\\\\\\\\\\\\\\\\\ \ \ \ \ \\\\\\]]]]]]]]]]]]] ]!]"]#]$]%]&]'](])]*]+],]-].]/]0]1]2]3]4]5]6]7]8]9]:];]<]=]>]?]@]A]B]C]D]E]F]G]H]I]J]K]L]MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs^t^u^v^w^x^y^z^{^|^}^~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^______________________________________________________________3333333333333333333333333333333333333333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333................................................. . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~------------------------------------``````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbccccccccccccccccccccccccd d d d d dddddddddddeeefffff f!f"f#f$f%f&f'f(f)f*f+f,f-f.f/f0f1f23456789:;<=>?@ABCDEFGHIJKLMNOPQRSgTgUgVOWOXOYOZO[O\O]O^O_O`OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOpOqOrOsOtOuOvOwOxOyOzO{O|O}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@hhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiii i i i i iiiiiiiiiiiiiiiiiii i!i"i#i$i%i&i'i(i)i*i+i,i-i.i/i0i1i2i3i4i5i6i7i8i9i:i;i<i=j>j?j@jAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVkWkXkYkZk[k\k]k^k_k`kakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzk{k|k}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;Y<Y=Y>Y?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;Y<Y=Y>Y?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;Y<Y=Y>Y?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;Y<Y=Y>Y?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYlllllllllllllllllllllllllllllllllllll l l l l lllllllllllllllllll l!l"l#l$l%l&l'l(l)l*l+l,l-l.l/l0l1l2l3l4l5l6l7l8l9l:l;l<l=l>l?l@lAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl[l\l]l^l_l`lalblcldlelflglhliljlklllmlnlolplqlrlsmtmumvmwmxmymzm{m|m}m~mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm m m m m mmmmmmmmmmmmmmmmmmm m!m"m#m$m%m&m'm(m)m*m+m,m-m.m/m0m1m2m3m4m5m6m7m8m9m:m;m<m=m>m?m@mAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm[m\m]m^m_m`mambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzm{m|m}m~mmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooo o o o o oooooooooooooFooooo o!o"o#o$p%p&q'q(q)q*q+r,r-r.r/r0r1r2s3s4s5s6s7s8s9s:s;s<s=s>s?s@sAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsXsYsZs[s\s]s^s_s`sasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszs{s|s}s~ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s !s "s #s $s %s &s 's (s )s *s +s ,s -s .s /s 0s 1s 2s 3s 4s 5s 6s 7s 8s 9s :s ;s <s =s >s ?s @s As Bs Cs Ds Es Fs Gs Hs Is Js Ks Ls Ms Ns Os Ps Qs Rs Ss Ts Us Vs Ws Xs Ys Zs [s \s ]s ^s _s `s as bs cs ds es fs gs hs is js ks ls ms ns os ps qs rs ss ts us vs ws xs ys zs {s |s }s ~s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s t t u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u v v v v v v v v v v v v v w w w w w w w w w w w w w w x x x x y y y y y!y!y!y!y!y!y!y!y!y! y! y! y! y! y!y!y!y!y!y!y!y!y!y!y!y!y!y!y!y!y!y!y! y!!y!"y!#y!$y!%y!&y!'y!(y!)y!*z!+z!,z!-z!.z!/z!0z!1z!2z!3z!4z!5z!6z!7z!8z!9z!:z!;z!<z!=z!>z!?z!@z!Az!Bz!Cz!Dz!Ez!Fz!Gz!Hz!Iz!Jz!Kz!Lz!Mz!Nz!Oz!Pz!Qz!Rz!Sz!Tz!Uz!Vz!Wz!Xz!Yz!Zz![z!\z!]z!^z!_z!`z!az!bz!cz!dz!ez!fz!gz!hz!iz!jz!kz!lz!mz!nz!oz!pz!qz!rz!sz!tz!uz!vz!wz!xz!yz!zz!{z!|z!}z!~z!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!E!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!{!|!|!|!|!|!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}"}"}"}"}"}"}"}"}"}" }" }" }" }" }"}"}"}"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~" ~"!~""~"#~"$~"%~"&~"'~"(~")~"*~"+~",~"-~".~"/~"0~"1~"2~"3~"4~"5~"6~"7~"8~"9~":~";~"<~"=~">~"?~"@~"A~"B~"C~"D~"E~"F~"G~"H~"I~"J~"K~"L~"M~"N~"O~"P~"Q~"R~"S~"T~"U~"V~"W~"X~"Y~"Z~"[~"\~"]~"^~"_~"`~"a~"b~"c~"d~"e~"f~"g~"h~"i~"j~"k~"l~"m~"n~"o~"p~"q~"r~"s~"t~"u~"v~"w~"x~"y~"z~"{~"|~"}~"~~"~"~";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";#;#;#;#;#;#;#;#;#;# ;# ;# ;# ;# ;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;#;# ;#!;#";##;#$;#%;#&;#';#(;#);#*;#+;#,;#-;#.;#/;#0;#1;#2;#3;#4;#5;#6;#7;#8;#9;#:;#;;#<;#=;#>;#?;#@;#A;#B;#C;#D;#E;#F;#G;#H;#I;#J;#K;#L;#M;#N;#O;#P;#Q;#R;#S;#T;#U;#V;#W;#X;#Y;#Z;#[;#\;#];#^;#_;#`;#a;#b;#c;#d;#e;#f;#g;#h;#i;#j;#k;#lF#mF#nF#oF#pF#qF#rF#sF#tF#uF#vF#wF#xr#yr#zr#{r#|r#}r#~r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r$$$$$$$$$$ $ $ $ $ $$$$$$$$$E$F$F$E$E$E$E$D$D$D$ D$!E$"E$#E$$D$%E$&E$'D$(D$)D$*D$+D$,D$-D$.D$/D$0D$1D$2D$3D$4D$5D$6D$7D$8D$9D$:D$;D$<F$=D$>D$?D$@D$AD$BD$CD$DD$ED$FD$GF$HF$IF$JF$KF$LF$MF$NH$OD$PF$QF$RF$SD$TD$UF$VF$WH$XH$YF$ZF$[D$\F$]F$^F$_F$`F$aF$bF$cF$dG$eG$fD$gD$hF$iE$jE$kF$lF$mE$nE$oD$pD$qF$rH$sH$tH$uF$vF$wF$xF$yH$zE${D$|E$}E$~F$F$E$D$D$D$D$F$D$F$E$F$F$F$F$F$F$H$D$F$E$F$F$F$F$F$D$F$F$F$F$F$F$F$F$F$F$D$F$F$F$F$F$D$F$F$F$F$F$F$D$E$F$H$F$D$F$D$D$F$F$F$F$F$F$F$F$D$F$E$F$E$D$D$E$E$E$F$F$F$F$E$D$F$F$F$F$D$D$F$E$E$F$F$H$F$F$F$F$F$F$F$F$D$D$F$F$F$F$D$F$F$F$F$F$F$F$F$F$F$F$F$F$E$E$F$E$D$D$D%D%D%D%D%D%D%D%D%D% D% D% D% D% D%D%D%D%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%G%G%G%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F&F&F&F&F&F&F&F&F&F& F& F& F& F& F&F&F&F&F&F&F&F&F&F&F&F&F&F&F&F&F&F&F& F&!F&"F&#F&$F&%F&&F&'F&(F&)F&*F&+F&,F&-F&.F&/F&0F&1F&2F&3F&4F&5F&6F&7F&8F&9F&:F&;F&<F&=F&>F&?F&@F&AF&BF&CF&DF&EF&FF&GF&HF&IF&JF&KF&LF&MF&NF&OF&PF&QF&RF&SF&TF&UF&VF&WF&XF&YF&ZF&[F&\F&]F&^F&_F&`F&aF&bF&cF&dF&eF&fF&gF&hF&iF&jF&kF&lF&mF&nF&oF&pF&qF&rF&sF&tF&uF&vF&wF&xF&yF&zF&{F&|F&}F&~F&F&F&F&F&F&F&F&F&F&F&F&F&F&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&q&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'=E'>E'?E'@E'AE'BE'CE'DE'EE'FE'GE'HE'IE'JE'KE'LE'ME'NE'OE'PE'QE'RE'SE'TE'UE'VE'WE'XE'YE'ZE'[E'\E']E'^E'_E'`E'aE'bE'cE'dE'eE'fE'gE'hE'iE'jE'kE'lE'mE'nE'oE'pE'qE'rE'sE'tE'uE'vE'wE'xE'yE'zE'{E'|E'}E'~E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'''''''''''''''''''''''''''''''''''''''''w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w(w(w(w(w(w(w(w(w(w( w( w( w( w( w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w(w( w(!w("w(#w($w(%w(&w('w((w()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x((((()))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********** * * N* N* N*N*N*N*N*N*N*N*N*N*N*N*N*N*N*N*N*N*N* N*!N*"N*#N*$N*%N*&N*'N*(N*)N**N*+N*,N*-N*.N*/N*0N*1N*2N*3N*4N*5N*6N*7N*8N*9N*:N*;N*<N*=N*>N*?N*@N*AN*BN*CN*DN*EN*FN*GN*HN*IN*JN*KN*LN*MN*NN*ON*PN*QN*RN*SN*TN*UN*VN*WN*XN*YN*ZN*[N*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~*******************************************************************************o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o+o+o+o+o+o+o+o+o+o+ o+ o+ o+ o+ o+o+o+o+o+o+o+o+o+o+o+o+o+o+o+o+o+o+o+ o+!o+"o+#o+$o+%o+&o+'o+(o+)o+*o++o+,o+-o+.o+/o+0o+1o+2o+3o+4o+5o+6o+7o+8o+9o+:o+;o+<o+=o+>o+?o+@o+A+B+C+D+E+F+G+H+I+J6+K6+L6+M6+N6+O6+P6+Q6+R6+S6+T6+U6+V6+W6+X6+Y6+Z6+[6+\6+]6+^6+_6+`6+a6+b6+c6+d6+e6+f6+g6+h6+i6+j6+k6+l6+m6+n6+o6+p6+q6+r6+s6+t6+u6+v6+w6+x6+y6+z6+{6+|6+}6+~6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6,6,6,6,6,6,6,6,6,6, 6, 6, 6, 6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,!6,"6,#6,$6,%6,&6,'6,(6,)6,*6,+6,,6,-6,.6,/6,06,16,26,36,46,56,66,76,86,96,:6,;6,<6,=6,>6,?6,@6,A6,B6,C6,D6,E6,F6,G6,H6,I6,J6,K6,L6,M6,N6,O6,P6,Q6,R6,S6,T6,U6,V6,W6,X6,Y6,Z6,[6,\6,]6,^6,_6,`6,a6,b6,c6,d6,e6,f6,g6,h6,i6,j6,k6,l6,m6,n6,o6,p6,q6,r6,s6,t6,u6,v6,w6,x6,y6,z6,{6,|6,}6,~6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6-6-6-6-6-6-6-6-6-6- 6- 6- 6- 6- 6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6- 6-!6-"6-#6-$6-%6-&6-'6-(6-)6-*6-+6-,6--6-.6-/6-06-16-26-36-46-56-66-76-86-96-:6-;6-<6-=6->6-?6-@6-A6-B6-C6-D6-E6-F6-G6-H6-I6-J6-K6-L6-M6-N6-O6-P6-Q6-R6-S6-T6-U6-V6-W6-X6-Y6-Z6-[6-\6-]6-^6-_6-`6-a6-b6-c6-d6-e6-f6-g6-h6-i6-j6-k6-l6-m6-n6-o6-p6-q6-r6-s6-t6-u6-v6-w6-x6-y6-z6-{6-|6-}6-~6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6-6--------------------------------------------------------------------------------------------.......... . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~.................................................................................................................................////////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;/</=/>/?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0000000000 0 0 0 0 0000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0pH0qH0rH0sH0tH0uH0vH0wH0xH0yH0zH0{H0|H0}H0~H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H1H1H1H1H1H1H1H1H1H1 H1 H1 H1 H1 H1H1H1H1H1H1H1H1H1H1H1H1H1H1H1H1H1H1H1 H1!H1"H1#H1$H1%H1&H1'H1(H1)H1*H1+H1,H1-H1.H1/H10H11H12H13H14H15H16H17H18H19H1:H1;H1<H1=H1>H1?H1@H1AH1BH1CH1DH1EH1FH1GH1HH1IH1JH1KH1LH1MH1NH1OH1PH1QH1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222222222 2 2 2 2 2222222222222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~222222222222222222222222222222222222222222222222222t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2223333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_v4`v4av4bv4cv4dv4ev4fv4gv4hv4iv4jv4kv4lv4mv4nv4ov4pv4qv4rv4sv4tv4uv4vv4wv4xv4yv4zv4{v4|v4}v4~v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v5v5v5v5v5v5v5v5v5v5 v5 v5 v5 v5 v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5 v5!v5"v5#v5$v5%v5&v5'v5(v5)v5*v5+v5,v5-v5.v5/v50v51v52v53v54v55v56v57v58v59v5:v5;v5<v5=v5>v5?v5@v5Av5Bv5Cv5Dv5Ev5Fv5Gv5Hv5Iv5Jv5Kv5Lv5Mv5Nv5Ov5Pv5Qv5Rv5Sv5Tv5Uv5Vv5Wv5Xv5Yv5Zv5[v5\v5]v5^v5_v5`v5av5bv5cv5dv5ev5fv5gv5hv5iv5jv5kv5lv5mv5nv5ov5pv5qv5rv5sv5tv5uv5vv5wv5xv5yv5zv5{v5|v5}v5~v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v5v55555555555555555555555555555555555555555555555555555555555555555555555556666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667777777777 7 7 7 7 7777777777777777777 7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888 8 8 8 8 8888888888888888888 8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8\8]8^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999 9 9 9 9 9999999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`9a9b9c9d9e9f9g9h9i9j9k9l9m9n9o9p:9q:9r:9s:9t:9u:9v:9w:9x:9y:9z:9{:9|:9}:9~:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:::::::::::::::::::: :: :: :: :: :::::::::::::::::::::::::::::::::::::: ::!::"::#::$::%::&::'::(::)::*::+::,::-::.::/::0::1::2::3::4::5::6::7::8::9:::::;::<::=::>::?::@::A::B::C::D::E::F::G::H::I::J::K::L::M::N::O::P::Q::R::S::T::U::V::W::X::Y::Z::[::\::]::^::_::`::a::b::c::d::e::f::g::h::i::j::k::l::m::n::o::p::q::r::s::t::u::v::w::x::y::z::{::|::}::~:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:;:;:;:;:;:;:;:;:; :; :; :; :; :;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:; :;!:;":;#:;$:;%:;&:;':;(:;):;*:;+:;,:;-:;.:;/:;0:;1:;2:;3:;4:;5:;6:;7:;8:;9:;::;;:;<:;=:;>:;?:;@:;A:;B:;C:;D:;E:;F:;G:;H:;I:;J:;K:;L:;M:;N:;O:;P:;Q:;R:;S:;T:;U:;V:;W:;X:;Y:;Z:;[:;\:;]:;^:;_:;`:;a:;b:;c:;d:;e:;f:;g:;h:;i:;j:;k:;l:;m:;n:;o:;p:;q:;r:;s:;t:;u:;v:;w:;x:;y:;z:;{:;|:;}:;~:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5<5<5<5<5<5<5<5<5<5< 5< 5< 5< 5< 5<5<5<5<5<5<5<5<5<5<5<5<5<5<5<5<5<5<5< 5g=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~=================================================================================================================|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|>|>|>|>|>|>|>>>> > > > > >>>>>>>>>>>>>>>>>>>  Safe7)fghc-lib-parser/Return the size of the closures header in wordsC$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefC$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef Safe+Wlmnlnm Safe7.oghc-lib-parserBThis is a somewhat faithful representation of an info table. See  Ihttp://ghc.haskell.org/trac/ghc/browser/includes/rts/storage/InfoTables.h* for more details on this data structure. opqrstuvwxy opqrstuvwxy Safe3|ghc-lib-parserRead an InfoTable from the heap into a haskell type. WARNING: This code assumes it is passed a pointer to a "standard" info table. If tables_next_to_code is enabled, it will look 1 byte before the start for the entry field.~ghc-lib-parser%Size in bytes of a standard InfoTableopqrstuvwxy|}~~|}Safe8<ghc-lib-parserRead an InfoTable from the heap into a haskell type. WARNING: This code assumes it is passed a pointer to a "standard" info table. If tables_next_to_code is enabled, it will look 1 byte before the start for the entry field.opqrstuvwxyNone "#4567Fr9ghc-lib-parserHThis is the representation of a Haskell value on the heap. It reflects Ghttp://ghc.haskell.org/trac/ghc/browser/includes/rts/storage/Closures.hUThe data type is parametrized by the type to store references in. Usually this is a  with the type synonym .All Heap objects have the same basic layout. A header containing a pointer to the info table and a payload with various fields. The infon field below always refers to the info table pointed to by the header. The remaining fields are the payload.See  Hhttps://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/HeapObjects for more information.ghc-lib-parserA data constructorghc-lib-parser A functionghc-lib-parser8A thunk, an expression not obviously in head normal formghc-lib-parser3A thunk which performs a simple selection operationghc-lib-parser#An unsaturated function applicationghc-lib-parserA function applicationghc-lib-parserA suspended thunk evaluationghc-lib-parserWA pointer to another closure, introduced when a thunk is updated to point at its valueghc-lib-parserhA byte-code object (BCO) which can be interpreted by GHC's byte-code interpreter (e.g. as used by GHCi)ghc-lib-parser*A thunk under evaluation by another threadghc-lib-parserA  ByteArray#ghc-lib-parserA MutableByteArray#ghc-lib-parserAn MVar#7, with a queue of thread state objects blocking on themghc-lib-parserA MutVar#ghc-lib-parserAn STM blocking queue.ghc-lib-parser Primitive Intghc-lib-parserPrimitive Wordghc-lib-parserPrimitive Int64ghc-lib-parserPrimitive Word64ghc-lib-parserPrimitive Addrghc-lib-parserPrimitive Floatghc-lib-parserPrimitive Doubleghc-lib-parserAnother kind of closureghc-lib-parserPointer argumentsghc-lib-parserNon-pointer argumentsghc-lib-parser Package nameghc-lib-parser Module nameghc-lib-parserConstructor nameghc-lib-parser,Pointer to the object being selected fromghc-lib-parser Arity of the partial applicationghc-lib-parserSize of the payload in wordsghc-lib-parser Pointer to a ghc-lib-parser(Sequence of already applied argumentsghc-lib-parserTarget closureghc-lib-parser+A pointer to an ArrWords of instructionsghc-lib-parser'A pointer to an ArrWords of literalsghc-lib-parser0A pointer to an ArrWords of byte code objectsghc-lib-parserThe size of this BCO in wordsghc-lib-parserEAn StgLargeBitmap describing the pointerhood of its args/free varsghc-lib-parserSize of array in bytesghc-lib-parser Array payloadghc-lib-parserNumber of pointersghc-lib-parser ?? Closures.h vs ClosureMacros.hghc-lib-parser!Array payload Card table ignoredghc-lib-parserPointer to head of queueghc-lib-parserPointer to tail of queueghc-lib-parserPointer to closureghc-lib-parserPointer to contentsghc-lib-parser?? Here so it looks like an INDghc-lib-parserThe blackhole closureghc-lib-parserThe owning thread state objectghc-lib-parser??ghc-lib-parserAn arbitrary Haskell value in a safe Box. The point is that even unevaluated thunks can safely be moved around inside the Box, and when required, e.g. in getBoxedClosureData>, the function knows how far it has to evaluate the argument.ghc-lib-parserKThis takes an arbitrary value and puts it into a box. Note that calls like asBox (head list)-will put the thunk "head list" into the box, notN the element at the head of the list. For that, use careful case expressions: case list of x:_ -> asBox xghc-lib-parser~Boxes can be compared, but this is not pure, as different heap objects can, after garbage collection, become the same object.ghc-lib-parser@For generic code, this function returns all referenced closures.OONoneFu(c) 2012 Joachim BreitnerBSD3+Joachim Breitner <mail@joachim-breitner.de>None -.=?FHV>!ghc-lib-parserbThis returns the raw representation of the given argument. The second component of the triple is the raw words of the closure on the heap, and the third component is those words that are actually pointers. Once back in the Haskell world, the raw words that hold pointers may be outdated after a garbage collector run, but the corresponding values in )s will still point to the correct value.>"ghc-lib-parserThis function returns a parsed heap representation of the argument _at this moment_, even if it is unevaluated or an indirection or other exotic stuff. Beware when passing something to this function, the same caveats as for  apply.ghc-lib-parserLike , but taking a , so it is easier to work with.$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeopqrstuvwxy|}~ݢ$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeopqrstuvwxy~|}Safe7ghc-lib-parser'Foreign formats supported by GHC via THghc-lib-parserCghc-lib-parserC++ghc-lib-parser Objective Cghc-lib-parser Objective C++ghc-lib-parserAssembly language (.s)ghc-lib-parser Object (.o)Safe(c) The GHC Teamghc-devs@haskell.orgportableSafe7lghc-lib-parser%The language extensions known to GHC.Note that there is an orphan Binary) instance for this type supplied by the GHC.LanguageExtensions module provided by ghc-bootV. We can't provide here as this would require adding transitive dependencies to the template-haskell3 package, which must have a minimal dependency set.t_% 2 S')(9@!;$<F10 C*6R4,8Z+   "#&-./357:=>?ABDEGHIJKLMNOPQTUVWXY[\]^`abcdet_% 2 S')(9@!;$<F10 C*6R4,8Z+   "#&-./357:=>?ABDEGHIJKLMNOPQTUVWXY[\]^`abcdeSafeBt_% 2 S')(9@!;$<F10 C*6R4,8Z+   "#&-./357:=>?ABDEGHIJKLMNOPQTUVWXY[\]^`abcde(c) The GHC Teamghc-devs@haskell.orgportableSafelghc-lib-parser\Is this character acceptable in a symbol (after the first char)? See alexGetByte in Lexer.xlmnopqrmonpqrl6(c) The University of Glasgow 2009, Duncan Coutts 2014ghc-devs@haskell.orgportableNone&',.1456@ACHP_sghc-lib-parsers holds a value of type t but only in x mode. So it is like @V but with a type argument for the mode to enforce that the mode is used consistently.vghc-lib-parserMode to open a package db in.yghc-lib-parser"Represents a lock of a package db.}ghc-lib-parserghc-boot 's copy of UnitId0, i.e. what is serialized to the database. Use  to convert it into an actual UnitIde. It has phantom type parameters as this is the most convenient way to avoid undecidable instances.ghc-lib-parserghc-boot 's copy of Module0, i.e. what is serialized to the database. Use  to convert it into an actual Modulee. It has phantom type parameters as this is the most convenient way to avoid undecidable instances.ghc-lib-parser7A type-class for the types which can be converted into 'DbModule'/'DbUnitId'. There is only one type class because these types are mutually recursive. NB: The functional dependency helps out type inference in cases where types would be ambiguous.>#ghc-lib-parserLA convenience constraint synonym for common constraints over parameters to .ghc-lib-parserThis is a subset of Cabal's , with just the bits that GHC is interested in. See Cabal's documentation for a more detailed description of all of the fields.ghc-lib-parserLike Z, but each dependency is annotated with the ABI hash we expect the dependency to respect.>$ghc-lib-parserHAcquire a lock of given type related to package DB under given location.ghc-lib-parserEAcquire an exclusive lock related to package DB under given location.ghc-lib-parser'Release the lock related to package DB.ghc-lib-parser:Read the part of the package DB that GHC is interested in.ghc-lib-parser=Read the part of the package DB that ghc-pkg is interested inNote that the Binary instance for ghc-pkg's representation of packages is not defined in this package. This is because ghc-pkg uses Cabal types (and Binary instances for these) which this package does not depend on.If we open the package db in read only mode, we get its contents. Otherwise we additionally receive a PackageDbLock that represents a lock on the database, so that we can safely update it later.ghc-lib-parser.Write the whole of the package DB, both parts.>%ghc-lib-parserFeed a >&& decoder with data chunks from a file.>stuvwxyz{|}~>}~z{|yvwxstuSafe&'SX̃ghc-lib-parserkRepresents a serialized value of a particular type. Attempts can be made to deserialize it at certain typesghc-lib-parserIPut a Typeable value that we are able to actually turn into bytes into a & value ready for deserialization laterghc-lib-parserIf the [ value contains something of the given type, then use the specified deserializer to return Just that. Otherwise return Nothing.ghc-lib-parserUse a >'> instance to implement a serialization scheme dual to that of ghc-lib-parserUse a >'@ instance to implement a deserialization scheme dual to that of NoneFSafe79͇None1Mghc-lib-parserAn HValueRef with a finalizerghc-lib-parserIA reference to a remote value. These are allocated and freed explicitly.ghc-lib-parserMake a reference to a local value that we can send remotely. This reference will keep the value that it refers to alive until  is called.ghc-lib-parserbConvert an HValueRef to an HValue. Should only be used if the HValue originated in this process.ghc-lib-parser4Release an HValueRef that originated in this processghc-lib-parser Create a  from a ). The finalizer should arrange to call  freeHValueRef on the M. (since this function needs to be called in the process that created the 3, it cannot be called directly from the finalizer).ghc-lib-parserUse a Safeڻ %&'() *+, -  ./01235#"$ 67\Z[Y89 !:FI;<=>?@GHALMNBCDEJK`abcdefghijknpqrwxyz{|}~   %&'() *+, -  ./01235#"$ 67\Z[Y89 !:FI;<=>?@GHALMNBCDEJK`abcdefghijknpqrwxyz{|}~  SafeNoneW ]^_O O_^]NoneF      NoneF{  Safe, ghc-lib-parserSA monad that can catch exceptions. A minimal definition requires a definition of .Implementations on top of C should implement # to eventually call the primitive >(n. These are used for implementations that support asynchronous exceptions. The default implementations of  and  use ! thus rarely require overriding.ghc-lib-parserGeneralised version of >)B, allowing an arbitrary exception handling monad instead of just C.ghc-lib-parserGeneralised version of >*B, allowing an arbitrary exception handling monad instead of just C.ghc-lib-parserGeneralised version of >+B, allowing an arbitrary exception handling monad instead of just C.ghc-lib-parserGeneralised version of >,B, allowing an arbitrary exception handling monad instead of just C.ghc-lib-parserGeneralised version of >-B, allowing an arbitrary exception handling monad instead of just C.ghc-lib-parserAlways executes the first argument. If this throws an exception the second argument is executed and the exception is raised again.d>.>/>0>1>2>3>4>,>+>5>6l>7>8>->9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>Imn>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>(>*>e>f>g>)>h>i>j>k>l>m>n>o>pvuts>q>r>s>t>u>v>w>x>y    Safe!NoneF>zghc-lib-parser6Size of a 64-bit word when written as a base-62 string,ghc-lib-parser,Converts a 64-bit word into a base-62 string !"#$%&'()*+,- "#!$%'()&*+-,"Safe^.0/123456789:;<=>?@ABCDEFGHIJK.0/123456789:;<=>?@ABCDEFGHIJK#SafeQghc-lib-parsereDefault maximum depth for both class instance search and type family reduction. See also Trac #5395.Rghc-lib-parserPDefault maximum constraint-solver iterations Typically there should be very few MNOPQRSTU MNOPQRSTU"(c) The University of Glasgow 2015/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.org experimentalportableSafeGt_% 2 S')(9@!;$<F10 C*6R4,8Z+   "#&-./357:=>?ABDEGHIJKLMNOPQTUVWXY[\]^`abcdet_% 2 S')(9@!;$<F10 C*6R4,8Z+   "#&-./357:=>?ABDEGHIJKLMNOPQTUVWXY[\]^`abcde%Safe%XYZ[XY[Z&"(c) The University of Glasgow 2003/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.org experimentalportable Trustworthy 278=?ISXI\ghc-lib-parser{To avoid duplication between kinds and types, they are defined to be the same. Naturally, you would never have a type be % and you would never have a kind be uE, but many of the other constructors are shared. Note that the kind Bool is denoted with w, not x'. Similarly, tuple kinds are made with |, not .]ghc-lib-parser&Annotation target for reifyAnnotations`ghc-lib-parserRole annotationsaghc-lib-parser nominalbghc-lib-parser representationalcghc-lib-parser phantomdghc-lib-parser _fghc-lib-parser 2gghc-lib-parser "Hello"hghc-lib-parserInjectivity annotationjghc-lib-parserType family result signaturekghc-lib-parser no signaturelghc-lib-parser kmghc-lib-parser = r, = (r :: k)oghc-lib-parser apghc-lib-parser (a :: k)rghc-lib-parser forall <vars>. <ctxt> => <type>sghc-lib-parser T a btghc-lib-parser T @k tughc-lib-parser t :: kvghc-lib-parser awghc-lib-parser Txghc-lib-parser 'Tyghc-lib-parser T + Tzghc-lib-parser T + TSee  Language.Haskell.TH.Syntax#infix{ghc-lib-parser (T)|ghc-lib-parser (,), (,,), etc.}ghc-lib-parser (#,#), (#,,#), etc.~ghc-lib-parser (#|#), (#||#), etc.ghc-lib-parser ->ghc-lib-parser ~ghc-lib-parser []ghc-lib-parser '(), '(,), '(,,), etc.ghc-lib-parser '[]ghc-lib-parser (':)ghc-lib-parser *ghc-lib-parser  Constraintghc-lib-parser  0,1,2, etc.ghc-lib-parser _ghc-lib-parser ?x :: tghc-lib-parser"A pattern synonym's argument type.ghc-lib-parser pattern P {x y z} = pghc-lib-parser pattern {x P y} = pghc-lib-parser pattern P { {x,y,z} } = pghc-lib-parser#A pattern synonym's directionality.ghc-lib-parser pattern P x {<-} pghc-lib-parser pattern P x {=} pghc-lib-parser  pattern P x {<-} p where P x = eghc-lib-parserAs of template-haskell-2.11.0.0,  has been replaced by .ghc-lib-parserAs of template-haskell-2.11.0.0,  has been replaced by .ghc-lib-parserAs of template-haskell-2.11.0.0,  has been replaced by .ghc-lib-parser C { {-# UNPACK #-} !}aghc-lib-parserA single data constructor.The constructors for _ can roughly be divided up into two categories: those for constructors with "vanilla" syntax (, , and 0), and those for constructors with GADT syntax ( and ). The  constructor, which quantifies additional type variables and class contexts, can surround either variety of constructor. However, the type variables that it quantifies are different depending on what constructor syntax is used:If a : surrounds a constructor with vanilla syntax, then the  will only quantify  existential type variables. For example: % data Foo a = forall b. MkFoo a b In MkFoo,  will quantify b , but not a.If a 7 surrounds a constructor with GADT syntax, then the  will quantify all8 type variables used in the constructor. For example: > data Bar a b where MkBar :: (a ~ b) => c -> MkBar a b In MkBar,  will quantify a, b, and c.ghc-lib-parser C Int aghc-lib-parser C { v :: Int, w :: a }ghc-lib-parser Int :+ aghc-lib-parser forall a. Eq a => C [a]ghc-lib-parser C :: a -> b -> T b Intghc-lib-parser C :: { v :: Int } -> T b Intghc-lib-parserUnlike  and ,  refers to the strictness that the compiler chooses for a data constructor field, which may be different from what is written in source code. See  for more information.ghc-lib-parser C aghc-lib-parser C {~}aghc-lib-parser C {!}aghc-lib-parser C aghc-lib-parser C { {-# NOUNPACK #-} } aghc-lib-parser C { {-# UNPACK #-} } aghc-lib-parserSince the advent of ConstraintKindsC, constraints are really just types. Equality constraints use the C constructor. Constraints may also be tuples of other constraints.ghc-lib-parser +{ {-# COMPLETE C_1, ..., C_i [ :: T ] #-} }ghc-lib-parserOne equation of a type family instance or closed type family. The arguments are the left-hand-side type and the right-hand-side result.3For instance, if you had the following type family: Ftype family Foo (a :: k) :: k where forall k (a :: k). Foo @k a = a The  Foo @k a = a* equation would be represented as follows:  (H [o k, p a (v k)]) (s (t (w ''Foo) (v k)) (v a)) (v a) ghc-lib-parserCommon elements of  and S. By analogy with "head" for type classes and type class instances as defined in 0Type classes: an exploration of the design space, the TypeFamilyHead; is defined to be the elements of the declaration between  type family and where.ghc-lib-parser8A pattern synonym's type. Note that a pattern synonym's fully specified type has a peculiar shape coming with two forall quantifiers and two constraint contexts. For example, consider the pattern synonym 'pattern P x1 x2 ... xn = <some-pattern>*P's complete type is of the following form pattern P :: forall universals. required constraints => forall existentials. provided constraints => t1 -> t2 -> ... -> tn -> tconsisting of four parts: kthe (possibly empty lists of) universally quantified type variables and required constraints on them.qthe (possibly empty lists of) existentially quantified type variables and the provided constraints on them. the types t1, t2, .., tn of x1, x2, .., xn, respectively the type t of <some-pattern>, mentioning only universals.Pattern synonym types interact with TH when (a) reifying a pattern synonym, (b) pretty printing, or (c) specifying a pattern synonym's type signature explicitly:/Reification always returns a pattern synonym's fully( specified type in abstract syntax.Pretty printing via ( abbreviates a pattern synonym's type unambiguously in concrete syntax: The rule of thumb is to print initial empty universals and the required context as () =>, if existentials and a provided context follow. If only universals and their required context, but no existentials are specified, only the universals and their required context are printed. If both or none are specified, so both (or none) are printed.>When specifying a pattern synonym's type explicitly with Z either one of the universals, the existentials, or their contexts may be left empty.USee the GHC user's guide for more information on pattern synonyms and their types:  bhttps://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#pattern-synonyms.ghc-lib-parser<What the user explicitly requests when deriving an instance.ghc-lib-parserA "standard" derived instanceghc-lib-parser -XDeriveAnyClassghc-lib-parser -XGeneralizedNewtypeDerivingghc-lib-parser  -XDerivingViaghc-lib-parser A single deriving! clause at the end of a datatype.ghc-lib-parser { deriving stock (Eq, Ord) }ghc-lib-parser&Varieties of allowed instance overlap.ghc-lib-parser,May be overlapped by more specific instancesghc-lib-parser#May overlap a more general instanceghc-lib-parserBoth  and ghc-lib-parserBoth  and @, and pick an arbitrary one if multiple choices are available.ghc-lib-parser { f p1 p2 = b where decs }ghc-lib-parser { p = b where decs }ghc-lib-parser T{ data Cxt x => T x = A x | B (T x) deriving (Z,W) deriving stock Eq }ghc-lib-parser S{ newtype Cxt x => T x = A (B x) deriving (Z,W Q) deriving stock Eq }ghc-lib-parser { type T x = (x,x) }ghc-lib-parser  { class Eq a => Ord a where ds }ghc-lib-parser A{ instance {-# OVERLAPS #-} Show w => Show [w] where ds }ghc-lib-parser { length :: [a] -> Int }ghc-lib-parser -{ foreign import ... } { foreign export ... }ghc-lib-parser { infix 3 foo }ghc-lib-parser { {-# INLINE [1] foo #-} }ghc-lib-parser { data family T a b c :: * }ghc-lib-parser f{ data instance Cxt x => T [x] = A x | B (T x) deriving (Z,W) deriving stock Eq }ghc-lib-parser f{ newtype instance Cxt x => T [x] = A (B x) deriving (Z,W) deriving stock Eq }ghc-lib-parser { type instance ... }ghc-lib-parser -{ type family T a b c = (r :: *) | r -> a b }ghc-lib-parser 3{ type family F a b = (r :: *) | r -> a where ... }ghc-lib-parser ({ type role T nominal representational }ghc-lib-parser 0{ deriving stock instance Ord a => Ord (Foo a) }ghc-lib-parser &{ default size :: Data a => a -> Int }ghc-lib-parser{ pattern P v1 v2 .. vn <- p }! unidirectional or { pattern P v1 v2 .. vn = p }! implicit bidirectional or ?{ pattern P v1 v2 .. vn <- p where P v1 v2 .. vn = e } explicit bidirectionalbalso, besides prefix pattern synonyms, both infix and record pattern synonyms are supported. See  for detailsghc-lib-parser#A pattern synonym's type signature.ghc-lib-parser  { ?x = expr }Implicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.ghc-lib-parser p <- eghc-lib-parser { let { x=e1; y=e2 } }ghc-lib-parser e ghc-lib-parserx <- e1 | s2, s3 | s4 (in &) ghc-lib-parser rec { s1; s2 } ghc-lib-parser f x { | odd x } = x ghc-lib-parser &f x { | Just y <- x, Just z <- y } = zghc-lib-parser +f p { | e1 = e2 | e3 = e4 } where dsghc-lib-parser f p { = e } where dsghc-lib-parser { x }ghc-lib-parser "data T1 = C1 t1 t2; p = {C1} e1 e2ghc-lib-parser  { 5 or 'c'}ghc-lib-parser { f x }ghc-lib-parser  { f @Int }ghc-lib-parser %{x + y} or {(x+)} or {(+ x)} or {(+)}ghc-lib-parser {x + y}See  Language.Haskell.TH.Syntax#infixghc-lib-parser { (e) }See  Language.Haskell.TH.Syntax#infixghc-lib-parser { \ p1 p2 -> e }ghc-lib-parser { \case m1; m2 }ghc-lib-parser  { (e1,e2) }ghc-lib-parser { (# e1,e2 #) }ghc-lib-parser  { (#|e|#) } ghc-lib-parser { if e1 then e2 else e3 }!ghc-lib-parser { if | g1 -> e1 | g2 -> e2 }"ghc-lib-parser { let { x=e1; y=e2 } in e3 }#ghc-lib-parser { case e of m1; m2 }$ghc-lib-parser { do { p <- e1; e2 } }%ghc-lib-parser !{ mdo { x <- e1 y; y <- e2 x; } }&ghc-lib-parser  { [ (x,y) | x <- xs, y <- ys ] }3The result expression of the comprehension is the last of the s, and should be a .E.g. translation: [ f x | x <- xs ] BCompE [BindS (VarP x) (VarE xs), NoBindS (AppE (VarE f) (VarE x))]'ghc-lib-parser { [ 1 ,2 .. 10 ] }(ghc-lib-parser  { [1,2,3] })ghc-lib-parser  { e :: t }*ghc-lib-parser { T { x = y, z = w } }+ghc-lib-parser { (f x) { z = w } },ghc-lib-parser  { static e }-ghc-lib-parser { _x }This is used for holes or unresolved identifiers in AST quotes. Note that it could either have a variable name or constructor name..ghc-lib-parser{ #x } ( Overloaded label )/ghc-lib-parser{ ?x } ( Implicit parameter )1ghc-lib-parser f { p1 p2 = body where decs }3ghc-lib-parser $case e of { pat -> body where decs }5ghc-lib-parserPattern in Haskell given in {}6ghc-lib-parser  { 5 or 'c' }7ghc-lib-parser { x }8ghc-lib-parser  { (p1,p2) }9ghc-lib-parser { (# p1,p2 #) }:ghc-lib-parser  { (#|p|#) };ghc-lib-parser "data T1 = C1 t1 t2; {C1 p1 p1} = e<ghc-lib-parser foo ({x :+ y}) = e=ghc-lib-parser foo ({x :+ y}) = eSee  Language.Haskell.TH.Syntax#infix>ghc-lib-parser {(p)}See  Language.Haskell.TH.Syntax#infix?ghc-lib-parser { ~p }@ghc-lib-parser { !p }Aghc-lib-parser  { x @ p }Bghc-lib-parser { _ }Cghc-lib-parser f (Pt { pointx = x }) = g xDghc-lib-parser  { [1,2,3] }Eghc-lib-parser  { p :: t }Fghc-lib-parser  { e -> p }Jghc-lib-parserUsed for overloaded and non-overloaded literals. We don't have a good way to represent non-overloaded literals at the moment. Maybe that doesn't matter?Pghc-lib-parser&A primitive C-style string, type Addr#Xghc-lib-parserXG desribes a single instance of a class or type function. It is just a ,, but guaranteed to be one of the following: (with empty []) or  (with empty derived [])Yghc-lib-parserIn e#, is the type constructor unlifted?Zghc-lib-parserIn e, arity of the type constructor[ghc-lib-parserIn , ~, and :, the total number of \s. For example, (#|#) has a [ of 2.\ghc-lib-parserIn  and :=, the number associated with a particular data constructor. \Js are one-indexed and should never exceed the value of its corresponding [. For example:(#_|#) has \ 1 (out of a total [ of 2)(#|_#) has \ 2 (out of a total [ of 2)]ghc-lib-parserIn b and f", name of the parent class or type^ghc-lib-parserObtained from  in the  Monad._ghc-lib-parser'Contains the import list of the module.`ghc-lib-parserObtained from  in the  Monad.aghc-lib-parser-A class, with a list of its visible instancesbghc-lib-parserA class methodcghc-lib-parserLA "plain" type constructor. "Fancier" type constructors are returned using e or d as appropriate. At present, this reified declaration will never have derived instances attached to it (if you wish to check for an instance, see ).dghc-lib-parserpA type or data family, with a list of its visible instances. A closed type family is returned with 0 instances.eghc-lib-parser@A "primitive" type constructor, which can't be expressed with a  . Examples: (->), Int#.fghc-lib-parserA data constructorgghc-lib-parserA pattern synonymhghc-lib-parser7A "value" variable (as opposed to a type variable, see i).The  Maybe Dec field contains Justa the declaration which defined the variable - including the RHS of the declaration - or else NothingX, in the case where the RHS is unavailable to the compiler. At present, this value is always NothingQ: returning the RHS has not yet been implemented because of lack of interest.ighc-lib-parserA type variable.The TypeT field contains the type which underlies the variable. At present, this is always v theName5, but future changes may permit refinement of this.xghc-lib-parser Variablesyghc-lib-parserData constructorszghc-lib-parserPType constructors and classes; Haskell has them in the same name space for now.|ghc-lib-parser&An unqualified name; dynamically bound}ghc-lib-parser#A qualified name; dynamically bound~ghc-lib-parserA unique local nameghc-lib-parser&Local name bound outside of the TH ASTghc-lib-parserGlobal name bound outside of the TH AST: An original name (occurrences only, not binders) Need the namespace too to be sure which thing we are namingghc-lib-parser7An abstract type representing names in the syntax tree.]s can be constructed in several ways, which come with different name-capture guarantees (see &Language.Haskell.TH.Syntax#namecapture% for an explanation of name capture):the built-in syntax 'f and ''T4 can be used to construct names, The expression 'f gives a Name which refers to the value f currently in scope, and ''T gives a Name which refers to the type T7 currently in scope. These names can never be captured. and  are similar to 'f and ''T respectively, but the Nameps are looked up at the point where the current splice is being run. These names can never be captured.D monadically generates a new name, which can never be captured. generates a capturable name.Names constructed using newName and mkName" may be used in bindings (such as  let x = ... or x -> ...), but names constructed using lookupValueName, lookupTypeName, 'f, ''T may not.ghc-lib-parserObtained from  and *.ghc-lib-parserA  instance can have any of its values turned into a Template Haskell expression. This is needed when a value used within a Template Haskell quotation is bound outside the Oxford brackets ( [| ... |]+) but not at the top level. As an example: )add1 :: Int -> Q Exp add1 x = [| x + 1 |]2Template Haskell has no way of knowing what value x: will take on at splice-time, so it requires the type of x to be an instance of .A  instance must satisfy  $(lift x) "a x for all x, where $(...) is a Template Haskell splice.6 instances can be derived automatically by use of the  -XDeriveLift GHC language extension: {-# LANGUAGE DeriveLift #-} module Foo where import Language.Haskell.TH.Syntax data Bar a = Bar1 a (Bar a) | Bar2 String deriving Liftghc-lib-parserOTurn a value into a Template Haskell expression, suitable for use in a splice.ghc-lib-parser0Generate a fresh name, which cannot be captured.For example, this: *f = $(do nm1 <- newName "x" let nm2 =  "x" return ( [7 nm1] (LamE [VarP nm2] ( nm1))) )will produce the splice f = \x0 -> \x -> x0In particular, the occurrence VarE nm1 refers to the binding VarP nm1%, and is not captured by the binding VarP nm2.Although names generated by newName cannot  be captured , they can capture other names. For example, this: og = $(do nm1 <- newName "x" let nm2 = mkName "x" return (LamE [VarP nm2] (LamE [VarP nm1] (VarE nm2))) )will produce the splice g = \x -> \x0 -> x0since the occurrence VarE nm2) is captured by the innermost binding of x , namely VarP nm1.ghc-lib-parser>Report an error (True) or warning (False), but carry on; use  to stop.ghc-lib-parsersReport an error to the user, but allow the current splice's computation to carry on. To abort the computation, use .ghc-lib-parser+Report a warning to the user, and carry on.ghc-lib-parserRecover from errors raised by  or .ghc-lib-parserRLook up the given name in the (type namespace of the) current splice's scope. See %Language.Haskell.TH.Syntax#namelookup for more details.ghc-lib-parserSLook up the given name in the (value namespace of the) current splice's scope. See %Language.Haskell.TH.Syntax#namelookup for more details.ghc-lib-parser looks up information about the .<It is sometimes useful to construct the argument name using  or X to ensure that we are reifying from the right namespace. For instance, in this context:  data D = Dwhich D does reify (mkName "D")$ return information about? (Answer: DE-the-type, but don't rely on it.) To ensure we get information about D-the-value, use : .do Just nm <- lookupValueName "D" reify nmand to get information about D-the-type, use .ghc-lib-parserreifyFixity nm+ attempts to find a fixity declaration for nm. For example, if the function foo has the fixity declaration  infixr 7 foo, then reifyFixity 'foo would return H (V 7 T). If the function bar* does not have a fixity declaration, then reifyFixity 'bar returns G, so you may assume bar has .ghc-lib-parserreifyInstances nm tys( returns a list of visible instances of nm tys. That is, if nmL is the name of a type class, then all instances of this class at the types tys! are returned. Alternatively, if nmX is the name of a data family or type family, all instances of this family at the types tys are returned.jNote that this is a "shallow" test; the declarations returned merely have instance heads which unify with nm tys(, they need not actually be satisfiable.reifyInstances ''Eq [ | 2 `s` w ''A `s` w ''B ] contains the "instance (Eq a, Eq b) => Eq (a, b) regardless of whether A and B themselves implement 'reifyInstances ''Show [ v ( "a") ]* produces every available instance of 'There is one edge case: reifyInstances ''Typeable tys9 currently always produces an empty list (no matter what tys are given).ghc-lib-parser reifyRoles nmG returns the list of roles associated with the parameters of the tycon nm . Fails if nmK cannot be found or is not a tycon. The returned list should never contain d.ghc-lib-parserreifyAnnotations target2 returns the list of annotations associated with targetS. Only the annotations that are appropriately typed is returned. So if you have Int and StringH annotations for the same target, you have to call this function twice.ghc-lib-parserreifyModule mod# looks up information about module modP. To look up the current module, call this function with the return value of *.ghc-lib-parserreifyConStrictness nmV looks up the strictness information for the fields of the constructor with the name nm-. Note that the strictness information that s returns may not correspond to what is written in the source code. For example, in the following data declaration: data Pair a = Pair a a  would return [, DecidedLazy]0 under most circumstances, but it would return [, DecidedStrict] if the  -XStrictData language extension was enabled.ghc-lib-parser%Is the list of instances returned by  nonempty?ghc-lib-parser2The location at which this computation is spliced.ghc-lib-parserThe 1 function lets you run an I/O computation in the @ monad. Take care: you are guaranteed the ordering of calls to  within a single ? computation, but not about the order in which splices are run.Note: for various murky reasons, stdout and stderr handles are not necessarily flushed when the compiler finishes running, so you should flush them yourself.ghc-lib-parserRecord external files that runIO is using (dependent upon). The compiler can then recognize that it should re-compile the Haskell file when an external file changes.Expects an absolute file path.Notes:Gghc -M does not know about these dependencies - it does not execute TH.@The dependency is based on file content, not a modification timeghc-lib-parserjObtain a temporary file path with the given suffix. The compiler will delete this file after compilation.ghc-lib-parser}Add additional top-level declarations. The added declarations will be type checked along with the current declaration group.ghc-lib-parserghc-lib-parserEmit a foreign file which will be compiled and linked to the object for the current module. Currently only languages that can be compiled with the C compiler are supported, and the flags passed as part of -optc will be also applied to the C compiler invocation that will compile them.0Note that for non-C languages (for example C++) extern CI directives must be used to get symbols that we can access from Haskell.YTo get better errors, it is recommended to use #line pragmas when emitting C files, e.g. {-# LANGUAGE CPP #-} ... addForeignSource LangC $ unlines [ "#line " ++ show (500 + 1) ++ " " ++ show "libraries/template-haskell/Language/Haskell/TH/Syntax.hs" , ... ]ghc-lib-parserSame as K, but expects to receive a path pointing to the foreign file instead of a  ; of its contents. Consider using this in conjunction with .This is a good alternative to 9 when you are trying to directly link in an object file.ghc-lib-parserAdd a finalizer that will run in the Q monad after the current module has been type checked. This only makes sense when run within a top-level splice.MThe finalizer is given the local type environment at the splice point. Thus K is able to find the local definitions when executed inside the finalizer.ghc-lib-parser/Adds a core plugin to the compilation pipeline.addCorePlugin m' has almost the same effect as passing  -fplugin=mM to ghc in the command line. The major difference is that the plugin module m must not belong to the current package. When TH executes, it is too late to tell the compiler that we needed to compile first a plugin module in the current package.ghc-lib-parserGet state from the q monad. Note that the state is local to the Haskell module in which the Template Haskell expression is executed.ghc-lib-parserReplace the state in the q monad. Note that the state is local to the Haskell module in which the Template Haskell expression is executed.ghc-lib-parserADetermine whether the given language extension is enabled in the  monad.ghc-lib-parser%List all enabled language extensions.ghc-lib-parser` is an internal utility function for constructing generic conversion functions from types with >'I instances to various quasi-quoting representations. See the source of  and  for two example usages: mkCon, mkLit and appQQ are overloadable to account for different syntax for expressions and patterns; antiQE allows you to override type-specific cases, a common usage is just  const Nothing#, which results in no overloading.ghc-lib-parser converts a value to a 'Q Exp' representation of the same value, in the SYB style. It is generalized to take a function override type-specific cases; see # for a more commonly used variant.ghc-lib-parser is a variant of  in the - type class which works for any type with a >' instance.ghc-lib-parser converts a value to a 'Q Pat' representation of the same value, in the SYB style. It takes a function to handle type-specific cases, alternatively, pass  const Nothing to get default behavior.ghc-lib-parser#The name without its module prefix.ExamplesnameBase ''Data.Either.Either"Either"nameBase (mkName "foo")"foo"nameBase (mkName "Module.foo")"foo"ghc-lib-parser&Module prefix of a name, if it exists.ExamplesnameModule ''Data.Either.EitherJust "Data.Either"nameModule (mkName "foo")Nothing nameModule (mkName "Module.foo") Just "Module"ghc-lib-parserA name's package, if it exists.Examples namePackage ''Data.Either.Either Just "base"namePackage (mkName "foo")Nothing!namePackage (mkName "Module.foo")Nothingghc-lib-parserJReturns whether a name represents an occurrence of a top-level variable (x), data constructor (y%), type constructor, or type class (z#). If we can't be sure, it returns G.ExamplesnameSpace 'Prelude.id Just VarNamenameSpace (mkName "id")2Nothing -- only works for top-level variable namesnameSpace 'Data.Maybe.Just Just DataNamenameSpace ''Data.Maybe.MaybeJust TcClsNamenameSpace ''Data.Ord.OrdJust TcClsNameghc-lib-parserGenerate a capturable name. Occurrences of such names will be resolved according to the Haskell scoping rules at the occurrence site. For example: =f = [| pi + $(varE (mkName "pi")) |] ... g = let pi = 3 in $fIn this case, g is desugared to g = Prelude.pi + 3 Note that mkName" may be used with qualified names: mkName "Prelude.pi" See also *E for a useful combinator. The above example could be rewritten using * as f = [| pi + $(dyn "pi") |]ghc-lib-parserOnly used internallyghc-lib-parserOnly used internallyghc-lib-parser4Used for 'x etc, but not available to the programmerghc-lib-parserTuple data constructorghc-lib-parserTuple type constructorghc-lib-parserUnboxed tuple data constructorghc-lib-parserUnboxed tuple type constructorghc-lib-parserUnboxed sum data constructorghc-lib-parserUnboxed sum type constructorghc-lib-parser(Highest allowed operator precedence for V constructor (answer: 9)ghc-lib-parserDefault fixity: infixl 9 ghc-lib-parserghc-lib-parserghc-lib-parser  (Eq a, Ord b)jghc-lib-parserLine and character positionghc-lib-parser Fresh namesghc-lib-parser@Report an error (True) or warning (False) ...but carry on; use  to stopghc-lib-parserthe error handlerghc-lib-parseraction which may failghc-lib-parserRecover from the monadic ghc-lib-parserhandler to invoke on failureghc-lib-parsercomputation to run_% 2 S')(9@!;$<F10 C*6R4,8Z+   "#&-./357:=>?ABDEGHIJKLMNOPQTUVWXY[\]^`abcde\]^_`abcdefghijklmnopqrstuvwxyz{|}~     ( !"#$%&')*+,-./0123456;789:<=>?@ABCDEFGJKHILMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrustvwyxz{|}~\]^_`abcdefghijklmnopqrstuvwxyz{|}~     ( !"#$%&')*+,-./0123456;789:<=>?@ABCDEFGJKHILMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrustvwyxz{|}~'Safe=?!%ghc-lib-parserReturns I if the document is empty&ghc-lib-parserAn empty document'ghc-lib-parserA ';' character(ghc-lib-parserA ',' character)ghc-lib-parserA : character*ghc-lib-parser A "::" string+ghc-lib-parserA space character,ghc-lib-parserA '=' character-ghc-lib-parser A "->" string.ghc-lib-parserA '(' character/ghc-lib-parserA ')' character0ghc-lib-parserA '[' character1ghc-lib-parserA ']' character2ghc-lib-parserA '{' character3ghc-lib-parserA '}' character<ghc-lib-parserWrap document in (...)=ghc-lib-parserWrap document in [...]>ghc-lib-parserWrap document in {...}?ghc-lib-parserWrap document in '...'@ghc-lib-parserWrap document in "..."Aghc-lib-parserBesideBghc-lib-parserList version of ACghc-lib-parserBeside, separated by spaceDghc-lib-parserList version of CEghc-lib-parser5Above; if there is no overlap it "dovetails" the twoFghc-lib-parserAbove, without dovetailing.Gghc-lib-parserList version of EHghc-lib-parserEither hcat or vcatIghc-lib-parserEither hsep or vcatJghc-lib-parser"Paragraph fill" version of catKghc-lib-parser"Paragraph fill" version of sepLghc-lib-parserNestedMghc-lib-parser "hang d1 n d2 = sep [d1, nest n d2]Nghc-lib-parser @punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]/ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN/ !&'()*+,-./0123465789:;<=>?@ACBDEFGIHKJLMN%$"#A6C6E5F5(Safeֿdghc-lib-parser.Pretty prints a pattern synonym type signatureeghc-lib-parserPretty prints a pattern synonym's type; follows the usual conventions to print a pattern synonym type compactly, yet unambiguously. See the note on S and the section on pattern synonyms in the GHC user's guide for more information.CSUTVXWYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CZY[\]^_`aVXWbcdefghijklmnopqrstuvwxyz{|}~SUT)Safe  ghc-lib-parser Use with   ghc-lib-parser Use with 4 ghc-lib-parser*Dynamically binding a variable (unhygenic)ghc-lib-parserSingle-arg lambda+ghc-lib-parser staticE x = [| static x |]Rghc-lib-parserPattern synonym declarationSghc-lib-parserPattern synonym type signatureTghc-lib-parserImplicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.ghc-lib-parserJReturn the Module at the place of splicing. Can be used as an input for .      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*Safe      !"#$%&'()*+,-./012349:;<=>?@ABCEFGJNOQRSTVXYZ[\]^`acdefghijklmnoqrstuvwxyz{|}~    ,-. + %&'()*/012$!"#cdhijefgqkmnolrvwxysz{|}~Vtu\]^`a34XYZ[9:;OQNJ=>?<@ABCEFGRSTSafep_% 2 S')(9@!;$<F10 C*6R4,8Z+   "#&-./357:=>?ABDEGHIJKLMNOPQTUVWXY[\]^`abcde\]^_`abcdefghijklmnopqrstuvwxyz{|}~     ( !"#$%&')*+,-./0123456;789:<=>?@ABCDEFGJKHILMNOPQRSTUVWXYZ[\]^_`abcdefghiklmnopqwVWXaior      !"#$%&'()*+,-./012349:;<=>?@ABCEFGJNOQRSTVXYZ[\]^`acdefghijklmnoqrstuvwxyz{|}~klmnopq`abcdefghi^_X]\[ZY_% 2 S')(9@!;$<F10 C*6R4,8Z+   "#&-./357:=>?ABDEGHIJKLMNOPQTUVWXY[\]^`abcde]^_w01VWRSTU( !"#$%&')*+,-./23     GJKHILMNOPQ56;789:<=>?@ABCDEF4qrstuvwxyz{|}~nopefg\`abcdjklmhiVWXaior+Safe &'-=?HX:,None "#&'17EMX5>%ghc-lib-parserThe server-side Template Haskell state. This is created by the StartTH message. A new one is created per module that GHC typechecks.ghc-lib-parser+persistent data between splices in a moduleghc-lib-parser#location for current splice, if anyghc-lib-parserpipe to communicate with GHCghc-lib-parser!We can pass simple expressions to EvalStmt, consisting of values and application. This allows us to wrap the statement to be executed in another function, which is used by GHCi to implement :set args and :set prog. It might be worthwhile to extend this little language in the future.-ghc-lib-parserEMessages sent back to GHC from GHCi.TH, to implement the methods of Quasid. For an overview of how TH works with Remote GHCi, see Note [Remote Template Haskell] in GHCi.TH.Cghc-lib-parsereIndicates that this RunTH is finished, and the next message will be the result of RunTH (a QResult).Dghc-lib-parserTemplate Haskell return valuesEghc-lib-parser1RunTH finished successfully; return value followsFghc-lib-parserRunTH threw an exceptionGghc-lib-parser RunTH called Hghc-lib-parserA  Message a+ is a message that returns a value of type a2. These are requests sent from GHC to the server.Ighc-lib-parserExit the iserv processUghc-lib-parserCreate a set of BCO objects, and return HValueRefs to them Note: Each ByteString contains a Binary-encoded [ResolvedBCO], not a ResolvedBCO. The list is to allow us to serialise the ResolvedBCOs in parallel. See  createBCOs in compilerghci GHCi.hsc.Vghc-lib-parserRelease sWghc-lib-parser'Add entries to the Static Pointer TableXghc-lib-parserMalloc some data and return a  to itZghc-lib-parserCalls [ghc-lib-parser Free data previously created by Z\ghc-lib-parser&Create an info table for a constructor]ghc-lib-parserEvaluate a statement^ghc-lib-parser3Resume evaluation of a statement after a breakpoint_ghc-lib-parser4Abandon evaluation of a statement after a breakpoint`ghc-lib-parserEvaluate something of type  IO Stringaghc-lib-parserEvaluate something of type String -> IO Stringbghc-lib-parserEvaluate something of type IO ()cghc-lib-parser5Create a set of CostCentres with the same module namedghc-lib-parserShow a >{ as a [String]eghc-lib-parser&Create a new array of breakpoint flagsfghc-lib-parserEnable a breakpointgghc-lib-parser'Query the status of a breakpoint (True  = enabled)hghc-lib-parser2Get a reference to a free variable at a breakpointighc-lib-parser:Start a new TH module, return a state token that should bejghc-lib-parserEvaluate a TH computation.Returns a ByteString, because we have to force the result before returning it to ensure there are no errors lurking in it. The TH types don't have NFData instances, and even if they did, we have to serialize the value anyway, so we might as well serialize it to force it.kghc-lib-parserRun the given mod finalizers.lghc-lib-parserRemote interface to GHC.Exts.Heap.getClosureData. This is used by the GHCi debugger to inspect values in the heap for :print and type reconstruction.mghc-lib-parser;Evaluate something. This is used to support :force in GHCi.{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHmIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklnopqrstuvw{HmIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl-./0123456789:;<=>?@ABC+,DEFG%&'()*pq      !"#$rsnotuwvSafeNvghc-lib-parserLift an C- operation with 1 argument into another monadghc-lib-parserLift an C. operation with 2 arguments into another monadghc-lib-parserLift an C. operation with 3 arguments into another monadghc-lib-parserLift an C. operation with 4 arguments into another monadghc-lib-parsermapAndUnzipM for triplesghc-lib-parserMonadic version of mapAccumLghc-lib-parserMonadic version of mapSndghc-lib-parserMonadic version of concatMapghc-lib-parserApplicative version of mapMaybeghc-lib-parserMonadic version of fmapghc-lib-parserMonadic version of fmapghc-lib-parserMonadic version of y&, aborts the computation at the first True valueghc-lib-parserMonad version of x&, aborts the computation at the first False valueghc-lib-parserMonadic version of orghc-lib-parserMonadic version of foldlghc-lib-parser1Monadic version of foldl that discards its resultghc-lib-parserMonadic version of foldrghc-lib-parser-Monadic version of fmap specialised for Maybeghc-lib-parserMonadic version of when#, taking the condition in the monadghc-lib-parserMonadic version of unless#, taking the condition in the monadghc-lib-parserLike >|), only it reverses the sense of the test.ghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputs'45#"$  SRT'5#"$  4SRT0NoneX_bghc-lib-parserThis type is very similar to C, but it omits the constructors that involve pretty-printing via / . Due to the implementation of t for  , this type can be caught as a .RNote that this should only be used for throwing exceptions, not for catching, as 3 will not be converted to this type when catching.ghc-lib-parser(Some other fatal signal (SIGHUP,SIGTERM)ghc-lib-parser*Prints the short usage msg after the errorghc-lib-parserAA problem with the command line arguments, but don't print usage.ghc-lib-parserThe  impossible happened.ghc-lib-parser_The user tickled something that's known not to work yet, but we're not counting it as a bug.ghc-lib-parserAn installation problem.ghc-lib-parser&An error in the user's code, probably.ghc-lib-parserThe name of this GHC.>}ghc-lib-parserRShort usage information to display when we are given the wrong cmd line arguments.ghc-lib-parser;Append a description of the given exception to this string.ghc-lib-parserPanics and asserts.ghc-lib-parserPanics and asserts.ghc-lib-parserPanics and asserts.ghc-lib-parserHThrow a failed assertion exception for a given filename and line number.NoneX_~ughc-lib-parser=GHC's own exception type error messages all take the form:   location:  error BIf the location is on the command line, or in GHC itself, then  location9="ghc". All of the error types below correspond to a  locationx of "ghc", except for ProgramError (where the string is assumed to contain a location already, so we don't print one).ghc-lib-parser(Some other fatal signal (SIGHUP,SIGTERM)ghc-lib-parser*Prints the short usage msg after the errorghc-lib-parserAA problem with the command line arguments, but don't print usage.ghc-lib-parserThe  impossible happened.ghc-lib-parser_The user tickled something that's known not to work yet, but we're not counting it as a bug.ghc-lib-parserAn installation problem.ghc-lib-parser&An error in the user's code, probably.ghc-lib-parserShow an exception as a string.ghc-lib-parsersShow an exception which can possibly throw other exceptions. Used when displaying exception thrown within TH code.ghc-lib-parser;Append a description of the given exception to this string.Note that this uses 3>, which may have some uninitialized fields if invoked before  has been called. If the error message to be printed includes a pretty-printer document which forces one of these fields this call may bottom.ghc-lib-parserLike try, but pass through UserInterrupt and Panic exceptions. Used when we want soft failures when reading interface files, for example. TODO: I'm not entirely sure if this is catching what we really want to catch>~ghc-lib-parser-We use reference counting for signal handlersghc-lib-parsersTemporarily install standard signal handlers for catching ^C, which just throw an exception in the current thread.$lmvuts$vutslm1None>ghc-lib-parser\The predicates below look costly, but aren't, GHC+GCC do a great job at the big case below.>ghc-lib-parsernWe really mean .|. instead of + below, but GHC currently doesn't do any constant folding with bitops. *sigh*2SafeEghc-lib-parserPowerPC 64-bit ABI ghc-lib-parser4ARM Instruction Set Architecture, Extensions and ABI ghc-lib-parserOperating systems that the native code generator knows about. Having OSUnknown should produce a sensible default, but no promises. ghc-lib-parserArchitectures that the native code generator knows about. TODO: It might be nice to extend these constructors with information about what instruction set extensions an architecture might support. &ghc-lib-parser_Contains enough information for the native code generator to emit code for this platform. 1ghc-lib-parser7This predicate tells us whether the platform is 32-bit. 2ghc-lib-parserJThis predicate tells us whether the OS supports ELF-like shared libraries. 3ghc-lib-parserGThis predicate tells us whether the OS support Mach-O shared libraries.B                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5B & ' ( ) * + , - . /             ! " # $ %                1 0 2 3 5 44Safe Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  ކ Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  7Safe17   8NoneX ghc-lib-parserExpand occurrences of the $topdir interpolation in a string. ghc-lib-parserExpand occurrences of the $tooldirM interpolation in a string on Windows, leave the string untouched otherwise.>ghc-lib-parser expandPathVar var value str replaces occurences of variable $var with value in str. ghc-lib-parser.Returns a Unix-format path pointing to TopDir. ghc-lib-parsertopdir  9SafeX ghc-lib-parserFCheck if ANSI escape sequences can be used to control color in stderr.  None,HPd ghc-lib-parser'A call stack constraint, but only when  isDebugOn. ghc-lib-parser@Compose a function with itself n times. (nth rather than twice) ghc-lib-parser3Like filter, only it reverses the sense of the test ghc-lib-parserSUses a function to determine which of two output lists an input element should join ghc-lib-parser  is a kind of 0 that is lazy in the second list (observe the ~) ghc-lib-parser  is like o but is lazy in the second list. The length of the output is always the same as the length of the first list. !ghc-lib-parser ! is like z but is lazy in the second and third lists. The length of the output is always the same as the length of the first list. "ghc-lib-parser " takes a list of Bools and a list of some elements and filters out these elements for which the corresponding value in the list of Bools is False. This function does not check whether the lists have equal length. #ghc-lib-parser # takes a list of Bools and two lists as input, and outputs a new list consisting of elements from the last two input lists. For each Bool in the list, if it is I;, then it takes an element from the former list. If it is F~, it takes an element from the latter list. The elements taken correspond to the index of the Bool in its list. For example: @filterByLists [True, False, True, False] "abcd" "wxyz" = "axcz" AThis function does not check whether the lists have equal length. $ghc-lib-parser $ takes a list of Bools and a list of some elements and partitions the list according to the list of Bools. Elements corresponding to I+ go to the left; elements corresponding to F go to the right. For example, ;partitionByList [True, False, True] [1,2,3] == ([1,3], [2])D This function does not check whether the lists have equal length. %ghc-lib-parserstretchZipWith p z f xs ys stretches ys by inserting z in the places where p returns True +ghc-lib-parserfThis has the effect of making the two lists have equal length by dropping the tail of the longer one. .ghc-lib-parseratLength atLen atEnd ls n unravels list ls to position n . Precisely:  atLength atLenPred atEndPred ls n | n < 0 = atLenPred ls | length ls < n = atEndPred (n - length ls) | otherwise = atLenPred (drop n ls) /ghc-lib-parser &(lengthExceeds xs n) = (length xs > n) 0ghc-lib-parser '(lengthAtLeast xs n) = (length xs >= n) 1ghc-lib-parser "(lengthIs xs n) = (length xs == n) 2ghc-lib-parser %(lengthIsNot xs n) = (length xs /= n) 3ghc-lib-parser &(lengthAtMost xs n) = (length xs <= n) 4ghc-lib-parser ((lengthLessThan xs n) == (length xs < n) 6ghc-lib-parserTrue if length xs == length ys 8ghc-lib-parserTrue if length xs <= length ys 9ghc-lib-parserTrue if length xs < length ys @ghc-lib-parserSplit a list into chunks of n elements Aghc-lib-parser8Replace the last element of a list with another element. Dghc-lib-parser=Remove duplicates but keep elements in order. O(n * log n) Oghc-lib-parser+spanEnd p l == reverse (span p (reverse l))b. The first list returns actually comes after the second list (when you look at the input list). Pghc-lib-parser-Get the last two elements in a list. Partial! Sghc-lib-parser=Convert a word to title case by capitalising the first letter>ghc-lib-parserSFind the "restricted" Damerau-Levenshtein edit distance between two strings. See:  9http://en.wikipedia.org/wiki/Damerau-Levenshtein_distance. Based on the algorithm presented in "A Bit-Vector Algorithm for Computing Levenshtein and Damerau Edit Distances" in PSC'02 (Heikki Hyyro). See  *http://www.cs.uta.fi/~helmu/pubs/psc02.pdf and  ,http://www.cs.uta.fi/~helmu/pubs/PSCerr.html for an explanation ]ghc-lib-parsermSearch for possible matches to the users input in the given list, returning a small number of ranked results yghc-lib-parserqA sample hash function for Strings. We keep multiplying by the golden ratio and adding. The implementation is: rhashString = foldl' f golden where f m c = fromIntegral (ord c) * magic + hashInt32 m magic = 0xdeadbeef2Where hashInt32 works just as hashInt shown above.Knuth argues that repeated multiplication by the golden ratio will minimize gaps in the hash space, and thus it's a good choice for combining together multiple keys to form one.;Here we know that individual characters c are often small, and this produces frequent collisions if we use ord c alone. A particular problem are the shorter low ASCII and ISO-8859-1 character strings. We pre-multiply by a magic twiddle factor to obtain a good distribution. In fact, given the following test: testp :: Int32 -> Int testp k = (n - ) . length . group . sort . map hs . take n $ ls where ls = [] : [c : l | l <- ls, c <- ['\0'..'\xff']] hs = foldl' f golden f m c = fromIntegral (ord c) * k + hashInt32 m n = 100000!We discover that testp magic = 0.>ghc-lib-parserA sample (and useful) hash function for Int32, implemented by extracting the uppermost 32 bits of the 64-bit result of multiplying by a 33-bit constant. The constant is from Knuth, derived from the golden ratio: $golden = round ((sqrt 5 - 1) * 2^32)We get good key uniqueness on small inputs (a problem with previous versions): (length $ group $ sort $ map hashInt32 [-32767..65536]) == 65536 + 32768PQ                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z          % * + ! " # $ ^ & '  ( ) , -   N O P F H I G / 1 2 0 3 4 5 . 6 7 8 9 ; = : < Q > ? @ A           J K L R M S P B C D T V W U X Y Z [ \ ] E _ e f g h i j k l m n o p q ` a b c d  r s    t u v wQ x y z U9  Z3 [2<NoneW ghc-lib-parserA colour/style for use with coloured. ghc-lib-parser;Parse the colour scheme from a string (presumably from the  GHC_COLORS environment variable). ghc-lib-parserdAllow colours to be combined (e.g. bold + red); In case of conflict, right side takes precedence. | }  ~  | }  ~ None,>H< ghc-lib-parserTakes a list of Maybes and returns the first Just if there is one, or Nothing otherwise. ghc-lib-parserFlipped version of  fromMaybe, useful for chaining. ghc-lib-parserTry performing an C action, failing on error.@GH>>>>>>>>#"!  #"!  4=NoneFM E ghc-lib-parserA  5 is a pointer to some array of Latin-1 encoded chars. ghc-lib-parserA   is an array of bytes, hashed to support fast O(1) comparison. It is also associated with a character encoding, so that we know how to convert a  M to the local encoding, or to the Z-encoding used by the compiler internally. @s support a memoized conversion to the Z-encoding via zEncodeFS. ghc-lib-parser Create a   from an existing >#; the difference between this and  L is that we don't have to copy the bytes if the string is new to the table. ghc-lib-parser Create a   from an existing >#; the difference between this and  L is that we don't have to copy the bytes if the string is new to the table. ghc-lib-parserCreates a UTF-8 encoded   from a  ghc-lib-parser Creates a   from a UTF-8 encoded [Word8]>ghc-lib-parserCreates a Z-encoded   from a  ghc-lib-parserReturns the length of the   in characters ghc-lib-parserReturns True if this  Q is not Z-encoded but already has a Z-encoding cached (used in producing stats). ghc-lib-parserReturns True if the   is empty ghc-lib-parser"Unpacks and decodes the FastString ghc-lib-parser1Gives the UTF-8 encoded bytes corresponding to a  ghc-lib-parser!Returns a Z-encoded version of a  w. This might be the original, if it was already Z-encoded. The first time this function is applied to a particular  , the results are memoized. ghc-lib-parser Outputs a   with no decoding at all,, that is, you get the actual bytes in the   written to the >. ghc-lib-parserWrap an unboxed address into a  . ghc-lib-parser Encode a   into a newly allocated  i using Latin-1 encoding. The original string must not contain non-Latin-1 characters (above codepoint 0xff). ghc-lib-parser Decode a   back into a  H using Latin-1 encoding. This does not free the memory associated with  . ghc-lib-parserReturn the length of a  + + >NoneFJ ghc-lib-parserA StringBuffer is an internal pointer to a sized chunk of bytes. The bytes are intended to be *immutable*. There are pure operations to read the contents of a StringBuffer.GA StringBuffer may have a finalizer, depending on how it was obtained. ghc-lib-parserRead a file into a  K. The resulting buffer is automatically managed by the garbage collector.>ghc-lib-parser.Skip the byte-order mark if there is one (see  1744 and ;6016), and return the new position of the handle in bytes.This is better than treating #FEFF as whitespace, because that would mess up layout. We don't have a concept of zero-width whitespace in Haskell: all whitespace codepoints have a width of one column. ghc-lib-parser Encode a   into a  T as UTF-8. The resulting buffer is automatically managed by the garbage collector. ghc-lib-parser/Return the first UTF-8 character of a nonempty  2 and as well the remaining portion (analogous to ). Warning:# The behavior is undefined if the  L is empty. The result shares the same buffer as the original. Similar to !0, if the character cannot be decoded as UTF-8, '\0' is returned. ghc-lib-parser/Return the first UTF-8 character of a nonempty   (analogous to ). Warning:# The behavior is undefined if the   is empty. Similar to !0, if the character cannot be decoded as UTF-8, '\0' is returned. ghc-lib-parser Return a  7 with the first UTF-8 character removed (analogous to ). Warning:# The behavior is undefined if the  ? is empty. The result shares the same buffer as the original. ghc-lib-parser Return a   with the first n bytes removed. Warning:2 If there aren't enough characters, the returned  x will be invalid and any use of it may lead to undefined behavior. The result shares the same buffer as the original. ghc-lib-parser-Compute the difference in offset between two   s that share the same buffer. Warning:# The behavior is undefined if the  s use separate buffers. ghc-lib-parserCheck whether a   is empty (analogous to ). ghc-lib-parser Computes a  K which points to the first character of the wanted line. Lines begin at 1. ghc-lib-parserDecode the first n bytes of a   as UTF-8 into a  . Similar to !K, if the character cannot be decoded as UTF-8, they will be replaced with '\0'. ghc-lib-parserReturn the previous n* characters (or fewer if we are less than n characters into the buffer. ghc-lib-parsern, the number of bytes ghc-lib-parsern, the number of bytes ghc-lib-parsern, the number of bytes  ANone\b ghc-lib-parser$Is this an acceptable variable name? ghc-lib-parser'Is this an acceptable constructor name? ghc-lib-parser Is this an acceptable type name? ghc-lib-parser`Is this an acceptable alphanumeric variable name, assuming it starts with an acceptable letter? ghc-lib-parser_Is this an acceptable symbolic variable name, assuming it starts with an acceptable character? ghc-lib-parsercIs this an acceptable alphanumeric constructor name, assuming it starts with an acceptable letter? ghc-lib-parserbIs this an acceptable symbolic constructor name, assuming it starts with an acceptable character?>ghc-lib-parserIs this string an acceptable id, possibly with a suffix of hashes, but not worrying about case or clashing with reserved words?>ghc-lib-parsercIs this character acceptable in an identifier (after the first letter)? See alexGetByte in Lexer.x>ghc-lib-parserDAll reserved identifiers. Taken from section 2.4 of the 2010 Report.>ghc-lib-parserBAll reserved operators. Taken from section 2.4 of the 2010 Report.>ghc-lib-parser@Does this string contain only dashes and has at least 2 of them?mnop                  monp  BNone] ghc-lib-parserReplicate an 8-bit character                    C"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei <code@davidterei.com>stableportableNoneF* ghc-lib-parserRendering mode. ghc-lib-parserNormal ghc-lib-parserWith zig-zag cuts ghc-lib-parser%No indentation, infinitely long lines ghc-lib-parserAll on one line ghc-lib-parserA rendering style. !ghc-lib-parserThe rendering mode "ghc-lib-parserLength of line, in chars #ghc-lib-parser%Ratio of line length to ribbon length $ghc-lib-parserThe TextDetails data typeOA TextDetails represents a fragment of text that will be output at some point. %ghc-lib-parserA single Char fragment &ghc-lib-parserA whole String fragment>ghc-lib-parserMRDoc is a "reduced GDoc", guaranteed not to have a top-level Above or Beside. +ghc-lib-parserThe abstract type of documents. A Doc represents a *set* of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout. ,ghc-lib-parserAA document of height and width 1, containing a literal character. -ghc-lib-parser5A document of height 1 containing a literal string.  - satisfies the following laws:  - s  V  - t =  - (st) - ""  V x = x, if x non-empty8The side condition on the last law is necessary because  - "" has height 1, while  3 has no height. 1ghc-lib-parserSome text with any width. (text s = sizedText (length s) s) 2ghc-lib-parserYSome text, but without any width. Use for non-printing text such as a HTML or Latex tags 3ghc-lib-parser2The empty document, with no height and no width.  3 is the identity for  V,  W,  T and  U), and anywhere in the argument list for  X,  M,  N,  O,  Z etc. 4ghc-lib-parserReturns I if the document is empty Lghc-lib-parserApply  I to  + if boolean is true.>ghc-lib-parser*Perform some simplification of a built up GDoc. Mghc-lib-parserList version of  V. Nghc-lib-parserList version of  W. Oghc-lib-parserList version of  T. Pghc-lib-parser[Nest (or indent) a document by a given number of positions (which may also be negative).  P satisfies the laws:  P 0 x = x  P k ( P k' x) =  P (k+k') x  P k (x  V y) =  P k z  V  P k y  P k (x  T y) =  P k x  T  P k y  P k  3 =  3x  V  P k y = x  V y, if x non-empty6The side condition on the last law is needed because  3 is a left identity for  V. Qghc-lib-parser "hang d1 n d2 = sep [d1, nest n d2] Rghc-lib-parserApply  Q to the arguments if the first  + is not empty. Sghc-lib-parser @punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn] Tghc-lib-parserAbove, except that if the last line of the first argument stops at least one position before the first line of the second begins, these two lines are overlapped. For example: % text "hi" $$ nest 5 (text "there") lays out as  hi there rather than  hi there T is associative, with identity  3, and also satisfies(x  T y)  V z = x  T (y  V z), if y non-empty. Ughc-lib-parserAbove, with no overlapping.  U is associative, with identity  3. Vghc-lib-parser Beside.  V is associative, with identity  3. Wghc-lib-parser;Beside, separated by space, unless one of the arguments is  3.  W is associative, with identity  3. Xghc-lib-parserEither  N or  O. Yghc-lib-parserEither  M or  O. Zghc-lib-parser"Paragraph fill" version of  Y. [ghc-lib-parser"Paragraph fill" version of  X.>ghc-lib-parserfirstE returns its first argument if it is non-empty, otherwise its second. \ghc-lib-parserThe default style (1mode=PageMode, lineLength=100, ribbonsPerLine=1.5). ]ghc-lib-parser Render the Doc to a String using the given Style. ^ghc-lib-parserDefault TextDetails printer _ghc-lib-parser The general rendering interface. 5ghc-lib-parserA ';' character 6ghc-lib-parserA ',' character 7ghc-lib-parserA : character 8ghc-lib-parserA space character 9ghc-lib-parserA '=' character :ghc-lib-parserA '(' character ;ghc-lib-parserA ')' character <ghc-lib-parserA '[' character =ghc-lib-parserA ']' character >ghc-lib-parserA '{' character ?ghc-lib-parserA '}' character @ghc-lib-parser int n = text (show n) Aghc-lib-parser integer n = text (show n) Bghc-lib-parser float n = text (show n) Cghc-lib-parser double n = text (show n) Dghc-lib-parser rational n = text (show n) Eghc-lib-parser%See Note [Print Hexadecimal Literals] Fghc-lib-parserWrap document in '...' Hghc-lib-parserWrap document in "..." Ighc-lib-parserWrap document in (...) Jghc-lib-parserWrap document in [...] Kghc-lib-parserWrap document in {...} _ghc-lib-parserRendering modeghc-lib-parser Line lengthghc-lib-parserRibbons per lineghc-lib-parserWhat to do with textghc-lib-parserWhat to do at the endghc-lib-parser The documentghc-lib-parserResultI       ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a bI + $ % & ' ( ) * , - . / 0 1 2 @ A B C D E 5 6 7 8 9 : ; < = > ? I J K F G H L 3 V W M N T U O X Y [ Z P Q R S 4  ! " # \ ]      _ ^ ` a b T5 U5 V6 W6/None4<ghc-lib-parser'Represents a pretty-printable document.To display an , use  ,  ,  , or  . Avoid calling  q. directly as it breaks the abstraction layer.ghc-lib-parserJust warn about an assertion failure, recording the given file and line number. Should typically be accessed with the WARN macros dghc-lib-parserBWhen we print a binder, we often want to print its type too. The OutputableBndr class encapsulates this idea. ighc-lib-parser i is used to tell the thing that prints binder what language construct is binding the identifier. This can be used to decide how much info to print. Also see Note [Binding-site specific printing] in PprCore jghc-lib-parserThe x in (x. e) kghc-lib-parser+The x in case scrut of x { (y,z) -> ... } lghc-lib-parser+The y,z in case scrut of x { (y,z) -> ... } mghc-lib-parserThe x in (let x = rhs in e) nghc-lib-parser(Class designating that some type has an  representation>ghc-lib-parser<The most recently used colour. This allows nesting colours. wghc-lib-parsercFor a given package, we need to know whether to print it with the component id to disambiguate it. xghc-lib-parser`For a given module, we need to know whether to print it with a package name to disambiguate it. yghc-lib-parserGiven a Name's   and (, decide whether and how to qualify it. zghc-lib-parserWhen printing code that contains original names, we need to map the original names back to something the user understands. This is the purpose of the triple of functions that gets passed around when rendering . ghc-lib-parser$NB: This won't ever show package IDs ghc-lib-parser!Style for printing error messages ghc-lib-parser(This is not a recommended way to render ,, since it breaks the abstraction layer of . Prefer to use  ,  ,  , or   instead. ghc-lib-parser6Truncate a list that is longer than the current depth. ghc-lib-parser,Says what to do with and without -dppr-debug ghc-lib-parser7Says what to do with -dppr-debug; without, return empty ghc-lib-parserThe analog of  a for , which tries to make sure the terminal doesn't get screwed up by the ANSI color codes if an exception is thrown during pretty-printing. ghc-lib-parserLike   but appends an extra newline. ghc-lib-parserLike   but specialized with   and >  -. This is typically used to output C-- code. ghc-lib-parserAn efficient variant of   specialized for   that outputs to a  . ghc-lib-parserdoublePrec p n shows a floating point number n with p. digits of precision after the decimal point. ghc-lib-parserIndent  some specified amount ghc-lib-parser Join two $ together horizontally without a gap ghc-lib-parser Join two . together horizontally with a gap between them ghc-lib-parser Join two [ together vertically; if there is no vertical overlap it "dovetails" the two onto one line ghc-lib-parser Join two  together vertically ghc-lib-parser Concatenate  horizontally ghc-lib-parser Concatenate + horizontally with a space between each one ghc-lib-parser Concatenate  vertically with dovetailing ghc-lib-parserSeparate: is either like   or like  , depending on what fits ghc-lib-parserCatenate: is either like   or like  , depending on what fits ghc-lib-parserwA paragraph-fill combinator. It's much like sep, only it keeps fitting things on one line until it can't fit any more. ghc-lib-parserThis behaves like  , but it uses  ( for horizontal conposition rather than  ghc-lib-parserThis behaves like  D, but does not indent the second document when the header is empty. ghc-lib-parser.Apply the given colour/style for the argument.)Only takes effect if colours are enabled. ghc-lib-parser2Special combinator for showing character literals. ghc-lib-parser/Special combinator for showing string literals. ghc-lib-parser3Special combinator for showing bytestring literals. ghc-lib-parser0Special combinator for showing unboxed literals. ghc-lib-parserAReturns the separated concatenation of the pretty printed things. ghc-lib-parserGReturns the comma-separated concatenation of the pretty printed things. ghc-lib-parserNReturns the comma-separated concatenation of the quoted pretty printed things. ,y,z] ==> `x', `y', `z' ghc-lib-parser&Converts an integer to a verbal index: MspeakNth 1 = text "first" speakNth 5 = text "fifth" speakNth 21 = text "21st" ghc-lib-parser-Converts an integer to a verbal multiplicity: CspeakN 0 = text "none" speakN 5 = text "five" speakN 10 = text "10" ghc-lib-parsercConverts an integer and object description to a statement about the multiplicity of those objects: speakNOf 0 (text "melon") = text "no melons" speakNOf 1 (text "melon") = text "one melon" speakNOf 3 (text "melon") = text "three melons" ghc-lib-parserIDetermines the pluralisation suffix appropriate for the length of a list: Rplural [] = char 's' plural ["Hello"] = empty plural ["Hello", "World"] = char 's' !ghc-lib-parserBDetermines the form of to be appropriate for the length of a list: ]isOrAre [] = text "are" isOrAre ["Hello"] = text "is" isOrAre ["Hello", "World"] = text "are" "ghc-lib-parserBDetermines the form of to do appropriate for the length of a list: `doOrDoes [] = text "do" doOrDoes ["Hello"] = text "does" doOrDoes ["Hello", "World"] = text "do" $ghc-lib-parser&Throw an exception saying "bug in GHC" %ghc-lib-parser3Throw an exception saying "this isn't finished yet" &ghc-lib-parserWThrow an exception saying "bug in pgm being compiled" (used for unusual program errors) (ghc-lib-parser!If debug output is on, show some  on the screen *ghc-lib-parserpprTraceIt desc x is equivalent to pprTrace desc (ppr x) x +ghc-lib-parserpprTraceException desc x action< runs action, printing a message if it throws an exception. ,ghc-lib-parser!If debug output is on, show some 7 on the screen along with a call stack when available. -ghc-lib-parserPanic with an assertation failure, recording the given file and line number. Should typically be accessed with the ASSERT family of macros ghc-lib-parser The headerghc-lib-parserAmount to indent the hung bodyghc-lib-parser3The hung body, indented and placed below the header ghc-lib-parserThe punctuationghc-lib-parserQThe list that will have punctuation added between every adjacent pair of elementsghc-lib-parserPunctuated list ghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parsera where the things have been pretty printed, comma-separated and finally packed into a paragraph. ghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parser_ where the things have been pretty printed, bar-separated and finally packed into a paragraph. q d f e g h i j k l m n o p r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . n o p d f e g h q             ! "                 i j k l m z { | } ~ y x w r s t u v  $ % - & ( ' * , + ) . #INone b c d e f g h i j b c d e f g h i jJNone r s t u v w x y z { | } ~   r s y t z v u w x | {  } ~  u5 v5 z5KNone  ghc-lib-parser4Calculate the set difference of two lists. This is O((m + n) log n), where we subtract a list of n elements from a list of m elements.3Extremely short cases are handled specially: When m or n is 0, this takes O(1) time. When m is 1, it takes O(n) time.  LNone&'" ghc-lib-parser-Simple data type to represent JSON documents. MNone"#%12456=>?HVgkp/ ghc-lib-parserA typeclass to set/get SrcSpans ghc-lib-parser Composes a  Q decoration with an undecorated syntactic entity to form its decorated variant ghc-lib-parser1Decomposes a decorated syntactic entity into its  * decoration and its undecorated variant ghc-lib-parserSDetermines the type of undecorated syntactic entities For most syntactic entities E@, where source location spans are introduced by a wrapper construtor of the same syntactic entity, we have `SrcSpanLess E = E`. However, some syntactic entities have a different type compared to a syntactic entity `e :: E` may have the type `Located E` when decorated by wrapping it with `L sp e` for a source span sp. ghc-lib-parserFWe attach SrcSpans to lots of things, so let's have a datatype for it. ghc-lib-parser Source SpanA  d identifies either a specific portion of a text file or a human-readable description of a location. ghc-lib-parserA   delimits a portion of a text file. It could be represented by a pair of (line,column) coordinates, but in fact we optimise slightly by using more compact representations for single-line and zero-length spans, both of which are quite common.-The end position is defined to be the column after the end of the span. That is, a span of (1,1)-(1,2) is one character long, and a span of (1,1)-(1,1) is zero characters long.Real Source Span ghc-lib-parserSource Location ghc-lib-parserReal Source Location'Represents a single point within a file ghc-lib-parser%A Pattern Synonym to Set/Get SrcSpans ghc-lib-parserBuilt-in "bad"   values for particular locations ghc-lib-parserBuilt-in "bad"   values for particular locations ghc-lib-parserBuilt-in "bad"   values for particular locations ghc-lib-parserCreates a "bad"  4 that has no detailed information about its location ghc-lib-parserGives the filename of the  ghc-lib-parser%Raises an error when used on a "bad"  ghc-lib-parser%Raises an error when used on a "bad"  ghc-lib-parser Move the   down by one line if the character is a newline, to the next 8-char tabstop if it is a tab, and across by one character in any other case ghc-lib-parserBuilt-in "bad"  ,s for common sources of location uncertainty ghc-lib-parserBuilt-in "bad"  ,s for common sources of location uncertainty ghc-lib-parserBuilt-in "bad"  ,s for common sources of location uncertainty ghc-lib-parserCreate a "bad"  " that has not location information ghc-lib-parser Create a   corresponding to a single point ghc-lib-parser Create a   between two points in a file>ghc-lib-parserI0 if the span is known to straddle only one line.>ghc-lib-parserI if the span is a single point ghc-lib-parser Create a   between two points in a file ghc-lib-parser Combines two  o into one that spans at least all the characters within both spans. Returns UnhelpfulSpan if the files differ.>ghc-lib-parser Combines two  w into one that spans at least all the characters within both spans. Assumes the "file" part is the same in both inputs ghc-lib-parserCConvert a SrcSpan into one that represents only its first character ghc-lib-parser Test if a  1 is "good", i.e. has precise location information ghc-lib-parser@True if the span is known to straddle only one line. For "bad"  , it returns False ghc-lib-parserTests whether the first span "contains" the other span, meaning that it covers at least as much source code. True where spans are equal. ghc-lib-parser)Returns the location at the start of the   or a "bad"   if that is unavailable ghc-lib-parser'Returns the location at the end of the   or a "bad"   if that is unavailable ghc-lib-parserObtains the filename for a   if it is "good" ghc-lib-parserCombine locations from two  % things and add them to a third thing ghc-lib-parser.Tests whether the two located things are equal ghc-lib-parser,Tests the ordering of the two located things ghc-lib-parser$Alternative strategies for ordering  s ghc-lib-parser$Alternative strategies for ordering  s ghc-lib-parser$Alternative strategies for ordering  s ghc-lib-parser@Determines whether a span encloses a given line and column index ghc-lib-parser4Determines whether a span is enclosed by another one ghc-lib-parserMAn abbreviated form of decomposeSrcSpan, mainly to be used in ViewPatterns ghc-lib-parserJAn abbreviated form of composeSrcSpan, mainly to replace the hardcoded  ghc-lib-parserALifts a function of undecorated entities to one of decorated ones ghc-lib-parser*The span that may be enclosed by the otherghc-lib-parserThe span it may be enclosed byG G PNone2/ ghc-lib-parser = $(f x y) ghc-lib-parser =* f x y, i.e. a naked top level expression ghc-lib-parserAn integer or infinity ghc-lib-parserFractional LiteralMUsed (instead of Rational) to represent exactly the floating point literal that we encountered in the user's source program. This allows us to pretty-print exactly what the user wrote, which is important e.g. for floating point numbers that can't represented as Doubles (we used to via Double for pretty-printing). See also #2245. ghc-lib-parserIntegral LiteralUsed (instead of Integer) to represent negative zegative zero which is required for NegativeLiterals extension to correctly parse  `-0::Double`$ as negative zero. See also #13211. %ghc-lib-parserInline Specification 1ghc-lib-parserRule Match Information <ghc-lib-parser Phase Number ?ghc-lib-parservFor when code is generated, e.g. TH, deriving. The pretty printer will then make its own representation of the item. Cghc-lib-parserDefault Method Specification Jghc-lib-parser Inside Lambda Kghc-lib-parserInteresting Context Lghc-lib-parser!identifier Occurrence Information Mghc-lib-parser2There are many occurrences, or unknown occurrences Nghc-lib-parserOMarks unused variables. Sometimes useful for lambda and case-bound variables. Oghc-lib-parser3Occurs exactly once (per branch), not inside a rule Pghc-lib-parserThis identifier breaks a loop of mutually recursive functions. The field marks whether it is only a loop breaker due to a reference in a rule Vghc-lib-parserEmbedding Projection pair ^ghc-lib-parser2A general-purpose pretty-printing precedence type. aghc-lib-parser'This instance must not overlap another  a- instance. However, it may be overlapped by  c instances, and it may overlap  b instances. bghc-lib-parseruSilently ignore this instance if you find a more specific one that matches the constraint you are trying to resolveYExample: constraint (Foo [Int]) instance Foo [Int] instance {- OVERLAPPABLE  -} Foo [a]Since the second instance has the Overlappable flag, the first instance will be chosen (otherwise its ambiguous which to choose) cghc-lib-parserWSilently ignore any more general instances that may be used to solve the constraint..Example: constraint (Foo [Int]) instance {- OVERLAPPING 4-} Foo [Int] instance Foo [a]Since the first instance has the Overlapping flag, the second---more general---instance will be ignored (otherwise it is ambiguous which to choose) dghc-lib-parserEquivalent to having both  c and  b flags. eghc-lib-parserBehave like Overlappable and Overlapping, and in addition pick an an arbitrary one if there are multiple matching candidates, and don't worry about later instantiationExample: constraint (Foo [b]) instance {-# INCOHERENT -} Foo [Int] instance Foo [a] Without the Incoherent flag, we'd complain that instantiating bY would change which instance was chosen. See also note [Incoherent instances] in InstEnv fghc-lib-parservThe semantics allowed for overlapping instances for a particular instance. See Note [Safe Haskell isSafeOverlap] (in ) for a explanation of the  i field.l : l '{-# OVERLAPPABLE'" or '{-# OVERLAPPING'" or '{-# OVERLAPS'" or '{-# INCOHERENT', l `#-}`, mghc-lib-parserRecursivity Flag vghc-lib-parserCaptures the fixity of declarations as they are parsed. This is not necessarily the same as the fixity declaration, as the normal fixity may be overridden using parens or backticks. ghc-lib-parser Warning Text6reason/explanation from a WARNING or DEPRECATED pragma ghc-lib-parserrA String Literal in the source, including its original raw format for use by source to source manipulation tools. ghc-lib-parserIIs a TyCon a promoted data constructor or just a normal type constructor? ghc-lib-parserIf the Id is a lambda-bound variable then it may have lambda-bound variable info. Sometimes we know whether the lambda binding this variable is a "one-shot" lambda; that is, whether it is applied at most once.This information may be useful in optimisation, as computations may safely be floated inside such a lambda without risk of duplicating work. ghc-lib-parserNo information ghc-lib-parser#The lambda is applied at most once. ghc-lib-parser A *zero-indexed* constructor tag ghc-lib-parserConstructor TagUType of the tags associated with each constructor possibility or superclass selector ghc-lib-parserThe number of arguments that a join point takes. Unlike the arity of a function, this is a purely syntactic property and is fixed when the join point is created (or converted from a value). Both type and value arguments are counted. ghc-lib-parserRepresentation ArityThe number of represented arguments that can be applied to a value before it does "real work". So: fib 100 has representation arity 0 x -> fib x has representation arity 1 ( x, y +) -> fib (x + y) has representation arity 2 ghc-lib-parserThe number of value arguments that can be applied to a value before it does "real work". So: fib 100 has arity 0 x -> fib x has arity 1 See also Note [Definition of arity] in CoreArity ghc-lib-parserQTags are allocated from here for real constructors or for superclass selectors ghc-lib-parser$It is always safe to assume that an Id) has no lambda-bound variable information ghc-lib-parser=Pretty print an alternative in an unboxed sum e.g. "| a | |". ghc-lib-parser/Special combinator for showing string literals. ghc-lib-parserA representation of infinity>ghc-lib-parserAdd two  s>ghc-lib-parser Multiply two  s ghc-lib-parserTurn a positive number into an  , where 0 represents infinityghc-lib-parserInject any integer into an   ghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parserAlternative (one-based)ghc-lib-parserArityghc-lib-parserU where the alternative havs been pretty printed and finally packed into a paragraph.          ! " # $ % ( & ' ) * + , - . / 0 1 2 3 4 8 5 6 7 9 : ; < = > ? @ A B C D E F H G I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` b c d e a f g h i j k l m n o p q r s t u v w x y z { | } ~   } ~ y z { | v w x m n o j k l  s t u f g h i ` b c d e a p q r ^ _ Z [ \ ] L M N O P Q R S T U J I K F H G V W X Y C D E 9 : ; < 4 8 5 6 7 1 2 3 % ( & ' ) * + , - . / 0 @ A B ! " # $      = > ?     QNoneFqYghc-lib-parser%Class of things that we can obtain a [ from[ghc-lib-parserUnique identifier.The type of unique identifiers that are used in many places in GHC for fast ordering and equality tests. You should generate these with the functions from the  UniqSupply moduleBThese are sometimes also referred to as "keys" in comments in GHC.>ghc-lib-parserSHow many bits are devoted to the unique index (as opposed to the class character).cghc-lib-parsereThe interface file symbol-table encoding assumes that known-key uniques fit in 30-bits; verify this.HSee Note [Symbol table representation of names] in BinIface for details.*YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*[YZ\dh]^abef_`tgciqrsnlkj~y{|z}uvwxmopRNonegghc-lib-parser)A monad for generating unique identifiersghc-lib-parserGet a new UniqueSupplyghc-lib-parserGet a new unique identifierghc-lib-parser.Get an infinite list of new unique identifiersghc-lib-parser/A monad which just gives the ability to obtain [sghc-lib-parser Unique SupplyA value of type  is unique, and it can supply one distinct [S. Also, from the supply, one can also manufacture an arbitrary number of further  UniqueSupplyD values, which will be distinct from the first and from all others.ghc-lib-parserCreate a unique supply out of thin air. The character given must be distinct from those of all calls to this function in the compiler for the values generated to be truly unique.ghc-lib-parser Build two 6 from a single one, each of which can supply its own [.ghc-lib-parserCreate an infinite list of  from a single oneghc-lib-parser Obtain the [ from this particular ghc-lib-parserObtain an infinite list of [: that can be generated by constant splitting of the supplyghc-lib-parser Obtain the [ from this particular , and a new supplyghc-lib-parser Build three < from a single one, each of which can supply its own uniqueghc-lib-parser Build four < from a single one, each of which can supply its own uniqueghc-lib-parserRun the  action, returning the final ghc-lib-parserRun the  action, discarding the final SNone2M ghc-lib-parser1`plusUFM_CD f m1 d1 m2 d2` merges the maps using f! as the combinding function and d1 resp. d2/ as the default value if there is no entry in m1 reps. m2-. The domain is the union of the domains of m1 and m2.Representative example: UplusUFM_CD f {A: 1, B: 2} 23 {B: 3, C: 4} 42 == {A: f 1 42, B: f 2 3, C: f 23 4 } ghc-lib-parserPretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetEltsUFM.ghc-lib-parserPretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetUFMToList.ghc-lib-parserDetermines the pluralisation suffix appropriate for the length of a set in the same way that plural from Outputable does for lists.ghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser+ where the things have been pretty printedghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser+ where the things have been pretty printed<<TNone2M Tghc-lib-parser converts a  a into a  a0 assuming, without checking, that it maps each [ to a value that has that [. See Note [UniqSet invariant].##UNone24> (C ghc-lib-parser(Type of unique deterministic finite maps>ghc-lib-parser+A type of values tagged with insertion time>ghc-lib-parserinsertion timeghc-lib-parserePerforms a deterministic fold over the UniqDFM. It's O(n log n) while the corresponding function on  is O(n).ghc-lib-parserePerforms a nondeterministic fold over the UniqDFM. It's O(n), same as the corresponding function on [. If you use this please provide a justification why it doesn't introduce nondeterminism.ghc-lib-parser Converts g to a list, with elements in deterministic order. It's O(n log n) while the corresponding function on  is O(n).*ghc-lib-parser>Partition UniqDFM into two UniqDFMs according to the predicate+ghc-lib-parser(Delete a list of elements from a UniqDFM,ghc-lib-parser7This allows for lossy conversion from UniqDFM to UniqFM.ghc-lib-parser(Apply a function to a particular element/ghc-lib-parserThe expression (alterUDFM f k map) alters value x at k, or absence thereof. alterUDFM can be used to insert, delete, or update a value in UniqDFM. Use addToUDFM, delFromUDFM or adjustUDFM when possible, they are more efficient.0ghc-lib-parser,Map a function over every value in a UniqDFM5ghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser+ where the things have been pretty printed( !"#$%&'()*+,-./012345(+./0!"#$%&' (-)*1245,3VNone2M )>?@ABCDEFGHIJKLMNOPQRSTUV>UVDE?@ABCFGHIJKLMNOPQRSTWNone /]ghc-lib-parserA non-deterministic set of FastStrings. See Note [Deterministic UniqFM] in UniqDFM for explanation why it's not deterministic and why it matters. Use DFastStringEnv if the set eventually gets converted into a list or folded over in a way where the order changes the generated code.\]^_`abcdefghijklmnopqrs]d^_hj`aknfgcbolmei\rpqsXNone &'-=?HX` Dvghc-lib-parserInformation we keep around during interface file serialization/deserialization. Namely we keep the functions for serializing and deserializing s and  Ns. We do this because we actually use serialization in two distinct settings,+When serializing interface files themselvesjWhen computing the fingerprint of an IfaceDecl (which we computing by hashing its Binary serialization)@These two settings have different needs while serializing Names:|Names in interface files are serialized via a symbol table (see Note [Symbol table representation of names] in BinIface).During fingerprinting a binding Name is serialized as the OccName and a non-binding Name is serialized as the fingerprint of the thing they represent. See Note [Fingerprinting IfaceDecls] for further discussion.zghc-lib-parserserialize a non-binding ( (e.g. a reference to another binding).{ghc-lib-parserserialize a binding  (e.g. the name of an IfaceDecl)ghc-lib-parser$Get access to the underlying buffer.0It is quite important that no references to the >; leak out of the continuation lest terrible things happen.ghc-lib-parserhow to deserialize sghc-lib-parserhow to serialize non-binding sghc-lib-parserhow to serialize binding s%tuvwxyz{|}~%}~tuvwxyz{|?None"#@A _7 ghc-lib-parserA   consists of the package name, package version, component ID, the transitive dependencies of the component, and other information to uniquely identify the source code and build configuration of a component.This used to be known as an InstalledPackageId7, but a package can contain multiple components and a  ` uniquely identifies a component within a package. When a package only has one component, the   coincides with the InstalledPackageId ghc-lib-parserAn installed unit identifier identifies a library which has been installed to the package database. These strings are provided to us via the  -this-unit-id flag. The library in question may be definite or indefinite; if it is indefinite, none of the holes have been filled (we never install partially instantiated libraries.) Put another way, an installed unit id is either fully instantiated, or not instantiated at all./Installed unit identifiers look something like p+af23SAj2dZ219, or maybe just p if they don't use Backpack. ghc-lib-parserlA unit identifier identifies a (possibly partially) instantiated library. It is primarily used as part of  , which in turn is used in Name=, which is used to give names to entities when typechecking.#There are two possible forms for a  . It can be a A, in which case we just have a string that uniquely identifies some fully compiled, installed library we have on disk. However, when we are typechecking a library with missing holes, we may need to instantiate a library on the fly (in which case we don't have any on-disk representation.) In that case, you have an Q, which explicitly records the instantiation, so that we can substitute over it. ghc-lib-parser2A ModuleName is essentially a simple string, e.g.  Data.List. ghc-lib-parserA Module is a pair of a   and a  .Module variables (i.e.  Hd) which can be instantiated to a specific module at some later point in time are represented with   set to >* (this allows us to avoid having to make   a partial operation.)ghc-lib-parserA map keyed off of  s (actually, their [Ls) Has deterministic folds and can be deterministically converted to a listghc-lib-parserA map keyed off of  s (actually, their [s)ghc-lib-parser A set of  sghc-lib-parserA map keyed off of  sghc-lib-parserNSubstitution on module variables, mapping module names to module identifiers.ghc-lib-parserA map keyed off of ghc-lib-parserA  is an  f with the invariant that it only refers to a definite library; i.e., one we have generated code for.ghc-lib-parserA  is a   which contains a  .ghc-lib-parserJThe full hashed unit identifier, including the component id and the hash.ghc-lib-parserA unit identifier which identifies an indefinite library (with holes) that has been *on-the-fly* instantiated with a substitution . In fact, an indefinite unit identifier could have no holes, but we haven't gotten around to compiling the actual library yet.?An indefinite unit identifier pretty-prints to something like p[H= H ,A=aimpl:A>] (p is the  5, and the brackets enclose the module substitution).ghc-lib-parserA private, uniquely identifying representation of a UnitId. This string is completely private to GHC and is just used to get a unique; in particular, we don't use it for symbols (indefinite libraries are not compiled).ghc-lib-parserCached unique of .ghc-lib-parserMThe component identity of the indefinite library that is being instantiated.ghc-lib-parserThe sorted (by  !) instantiations of this library.ghc-lib-parser(A cache of the free module variables of  unitIdInsts&. This lets us efficiently tell if a  w has been fully instantiated (free module variables are empty) and whether or not a substitution can have any effect.ghc-lib-parserModule LocationlWhere a module lives on the file system: the actual locations of the .hs, .hi and .o files, if we have themghc-lib-parserAdd the -boot suffix to .hs, .hi and .o filesghc-lib-parserAdd the -boot suffix if the Bool argument is Trueghc-lib-parserAdd the -boot4 suffix to all file paths associated with the moduleghc-lib-parserAdd the -boota suffix to all output file paths associated with the module, not including the input file itselfghc-lib-parser6Compares module names lexically, rather than by their [sghc-lib-parser!Get a string representation of a  p that's unique and stable across recompilations. eg. "$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal" ghc-lib-parserMReturns the string version of the module name, with dots replaced by slashes. ghc-lib-parserLReturns the string version of the module name, with dots replaced by colons. ghc-lib-parserCalculate the free holes of a  m. If this set is non-empty, this module was defined in an indefinite library that had required signatures.If a module has free holes, that means that substitutions can operate on it; if it has no free holes, substituting over a module has no effect. ghc-lib-parserA  % is definite if it has no free holes.ghc-lib-parser!Create a module variable at some  5. See Note [Representation of module/name variables]ghc-lib-parsercThis gives a stable ordering, as opposed to the Ord instance which gives an ordering based on the [Ns of the components, which may not be stable from run to run of the compiler.ghc-lib-parser Create a new ' given an explicit module substitution.ghc-lib-parser Injects an > (indefinite library which was on-the-fly instantiated) to a  - (either an indefinite or definite library).ghc-lib-parser Injects an  to   (see also .ghc-lib-parser Lossy conversion to the on-disk   for a component.ghc-lib-parser Test if a   corresponds to a given , modulo instantiation.ghc-lib-parser Test if a   corresponds to a given  , modulo instantiation.#ghc-lib-parser$Retrieve the set of free holes of a  .$ghc-lib-parserA  % is definite if it has no free holes.%ghc-lib-parser Generate a uniquely identifying   for a unit identifier. This is a one-way function. You can rely on one special property: if a unit identifier is in most general form, its   coincides with its  [. This hash is completely internal to GHC and is not used for symbol names or file paths.>ghc-lib-parser1Generate a hash for a sorted module substitution.&ghc-lib-parser(Create a new, un-hashed unit identifier.'ghc-lib-parser5Compares package ids lexically, rather than by their [s(ghc-lib-parser6Create a new simple unit identifier (no holes) from a  .)ghc-lib-parser+Create a new simple unit identifier from a  L. Internally, this is primarily used to specify wired-in unit identifiers.+ghc-lib-parserSubstitutes holes in a  0. NOT suitable for being called directly on a  nameModule6, see Note [Representation of module/name variable]. p[A= A]:B maps to  p[A=q():A]:B with A=q():A; similarly,  A maps to q():A.,ghc-lib-parserSubstitutes holes in a  c, suitable for renaming when an include occurs; see Note [Representation of module/name variable].p[A= A] maps to p[A= B] with A= B.-ghc-lib-parserLike +, but requires only   so it can be used by Packages..ghc-lib-parser*Like 'renameHoleUnitId, but requires only   so it can be used by Packages./ghc-lib-parserBGiven a possibly on-the-fly instantiated module, split it into a   that we definitely can find on-disk, as well as an instantiation if we need to instantiate it on the fly. If the instantiation is Nothing" no on-the-fly renaming is needed.0ghc-lib-parserSee /.?ghc-lib-parserThis is the package Id for the current program. It is the default package Id if you don't specify a package name. We don't add this prefix to symbol names, since there can be only one main package per program.>ghc-lib-parserThis is a fake package id used to provide identities to any un-implemented signatures. The set of hole identities is global over an entire compilation. Don't use this directly: use  or A= instead. See Note [Representation of module/name variables]          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a        $ #&(%)*',+.-/0123456789:;<?=A>@B   !"DEGHIJKLMNOPQRSTUVFCZW[XY_\]^`aNone"#=?@A Jghc-lib-parser Get the GHC   right out of a Cabalish 2XWVU 2 XWVUZNone2 ghc-lib-parser A C type, used in CAPI FFI callsl : l  '{-# CTYPE' , l,l , l '#-}',ghc-lib-parser,How to call a particular function in C-land.!![None2M ԧghc-lib-parser9An index into a given cost centre module,name,flavour setghc-lib-parser2Per-module state for tracking cost centre indices.See documentation of y for more details.ghc-lib-parserInitialize cost centre state.ghc-lib-parser-Get a new index for a given cost centre name.\None2456 %      ]None =ghc-lib-parserWhen we are given files (modified by -x arguments) we need to determine if they are Haskellish or not to figure out how we should try to compile it. The rules are: If no -x flag was specified, we check to see if the file looks like a module name, has no extension, or has a Haskell source extension.^If an -x flag was specified, we just make sure the specified suffix is a Haskell one.3$ !"#%&'()*+,-./0123456789:;<=>?@ABCDE3'()*,-+$ !"#%&10./23475:8;96<=>?CD@EABNone%MX  Mghc-lib-parser*Edge direction based on DFS ClassificationPghc-lib-parser7Loop back towards the root node. Eg backjumps in loopsQghc-lib-parserv -> vRghc-lib-parser&Representation for nodes of the Graph.The payload1 is user data, just carried around in this moduleThe keyL is the node identifier. Key has an Ord instance for performance reasons.The [key] are the dependencies of the node; it's ok to have extra keys in the dependencies that are not the key of any Node in the graphTghc-lib-parser User dataUghc-lib-parserUser defined node idVghc-lib-parser#Dependencies/successors of the nodeZghc-lib-parserFind a reasonably short cycle a->b->c->a, in a strongly connected component. The input nodes are presumed to be a SCC, so you can start anywhere.bghc-lib-parser1Given a list of roots return all reachable nodes.hghc-lib-parservGiven a start vertex, a way to get successors from a node and a list of (directed) edges classify the types of edges.! MNOPQRSTUVWXYZ[\]^_`abcdefgh!WXY RSTUV[`decabfgZ\^]_MNOPQh^NoneX Yghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputsghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputs&stuvwxyz{|}~&stuyxwv~|}z{z3{3_None ghc-lib-parser6A command-line warning message and the reason it aroseghc-lib-parserA command-line error messageghc-lib-parser[Used when filtering warnings: if a reason is given it can be filtered out when displaying.ghc-lib-parser4GHC flag modes describing when a flag has an effect.ghc-lib-parser-The flag only affects the non-interactive GHCghc-lib-parser)The flag only affects the interactive GHCghc-lib-parser#The flag affects multiple ghc modesghc-lib-parser.This flag should not be seen in cli completion>ghc-lib-parser Parse an IntlLooks for "433" or "=342", with no trailing gubbins * n or =n => Just n * gibberish => Nothing>ghc-lib-parserDiscards a leading equals sign443None=? G Kghc-lib-parser-Enumerates the simple on-or-off dynamic flags Mghc-lib-parser"Contains not only a collection of  Kas but also a plethora of information relating to the compilation of a single file or GHC session Sghc-lib-parserEAn internal helper to check whether to use unicode syntax for output.&Note: You should very likely be using   instead of this function.ghc-lib-parseryA collection of files that must be deleted before ghc exits. The current collection is stored in an IORef in DynFlags, .ghc-lib-parser2Files that will be deleted at the end of runGhc(T)ghc-lib-parser*Files that will be deleted the next time h4 is called, or otherwise at the end of the session.ghc-lib-parserFlag in string formghc-lib-parserFlag in internal formghc-lib-parserNExtra action to run when the flag is found Typically, emit a warning or errorghc-lib-parser%In which ghc mode the flag has effectghc-lib-parserWhen invoking external tools as part of the compilation pipeline, we pass these a sequence of options on the command-line. Rather than just using a list of Strings, we use a type that allows us to distinguish between filepaths and 'other stuff'. The reason for this is that this type gives us a handle on transforming filenames, and filenames only, to whatever format they're expected to be on a particular platform.ghc-lib-parser+Flags for manipulating packages visibility.ghc-lib-parser-package,  -package-idghc-lib-parser  -hide-packageghc-lib-parser%Flags for manipulating package trust.ghc-lib-parser -trustghc-lib-parser  -distrustghc-lib-parser6Flags for manipulating the set of non-broken packages.ghc-lib-parser -ignore-packageghc-lib-parserRRepresents the renaming that may be associated with an exposed package, e.g. the rns part of -package "foo (rns)"._Here are some example parsings of the package flags (where a string literal is punned to be a  : -package foo is ModRenaming True []-package foo () is ModRenaming False []-package foo (A) is ModRenaming False [(A, A)]-package foo (A as B) is ModRenaming False [(A, B)]-package foo with (A as B) is ModRenaming True [(A, B)]ghc-lib-parser%Bring all exposed modules into scope? ghc-lib-parser Bring module m into scope under name n.!ghc-lib-parserWe accept flags which make packages visible, but how they select the package varies; this data type reflects what selection criterion is used."ghc-lib-parser-package, by #ghc-lib-parser -package-id, by  $ghc-lib-parser-What to do in the link step, if there is one.%ghc-lib-parserDon't link at all&ghc-lib-parserLink object code into a binary'ghc-lib-parserNUse the in-memory dynamic linker (works for both bytecode and object code).(ghc-lib-parserFLink objects into a dynamic lib (DLL on Windows, DSO on ELF platforms))ghc-lib-parserLink objects into a static lib*ghc-lib-parserThe *L tells us whether we're doing multi-module compilation (controlled via the GHC[ API) or one-shot (single-module) compilation. This makes a difference primarily to the Finder: in one-shot mode we look for interface files for imported modules, but in multi-module mode we look for source files in order to check whether they need to be recompiled.+ghc-lib-parser--make , GHCi, etc.,ghc-lib-parser  ghc -c Foo.hs-ghc-lib-parserghc -M, see Finder for why we need this.ghc-lib-parser1The target code type of the compilation (if any).6Whenever you change the target, also make sure to set  to something sensible.3A can be used to avoid generating any output, however, note that:If a program uses Template Haskell the typechecker may need to run code from an imported module. To facilitate this, code generation is enabled for modules imported by modules that use template haskell. See Note [-fno-code mode]./ghc-lib-parserGenerate C code.0ghc-lib-parser2Generate assembly using the native code generator.1ghc-lib-parser0Generate assembly using the llvm code generator.2ghc-lib-parserGenerate bytecode. (Requires ')3ghc-lib-parser*Don't generate any code. See notes above.mghc-lib-parserno SCC annotations addednghc-lib-parser,top-level and nested functions are annotatedoghc-lib-parser"top-level functions annotated onlypghc-lib-parser!exported functions annotated onlyqghc-lib-parserannotate call-sitesvghc-lib-parser2Edge weights to use when generating a CFG from CMMghc-lib-parserIntegerGMP or IntegerSimple. Set at configure time, but may be overriden by GHC-API users. See Note [The integer library] in PrelNamesghc-lib-parser,Verbosity level: see Note [Verbosity levels]ghc-lib-parserOptimisation levelghc-lib-parser%How much debug information to produceghc-lib-parserNumber of simplifier phasesghc-lib-parserMax simplifier iterationsghc-lib-parser!Max no iterations for pm checkingghc-lib-parser+A prefix to report inlining decisions aboutghc-lib-parserAdditional demand analysisghc-lib-parserThe number of modules to compile in parallel in --make mode, where Nothing ==> compile as many in parallel as there are CPUs.ghc-lib-parserEnable RTS timing statistics?ghc-lib-parserThe heap size to set.ghc-lib-parserOMaximum number of bindings from the type envt to show in type error messagesghc-lib-parserCMaximum number of hole fits to show in typed hole error messagesghc-lib-parserQMaximum number of refinement hole fits to show in typed hole error messagesghc-lib-parserWMaximum level of refinement for refinement hole fits in typed hole error messagesghc-lib-parserNMaximum number of unmatched patterns to show in non-exhaustiveness warningsghc-lib-parserMultiplier for simplifier ticksghc-lib-parserThreshold for SpecConstrghc-lib-parser2Max number of specialisations for any one functionghc-lib-parseriMax number of specialisations for recursive types Not optional; otherwise ForceSpecConstr can diverge.ghc-lib-parserThreshold for LiberateCaseghc-lib-parser?Arg count for lambda floating See CoreMonad.FloatOutSwitchesghc-lib-parserIMaximum number of arguments after lambda lifting a recursive function.ghc-lib-parserMMaximum number of arguments after lambda lifting a non-recursive function.ghc-lib-parserFLambda lift even when this turns a known call into an unknown call.ghc-lib-parser4Align Cmm functions at this boundary or use default.ghc-lib-parserSimplification history sizeghc-lib-parserTypechecker maximum stack depthghc-lib-parserLNumber of iterations in the constraints solver Typically only 1 is neededghc-lib-parserWay flags from the command lineghc-lib-parser$The global "way" (e.g. "p" for prof)ghc-lib-parserThis is set by ( based on where its output is going.ghc-lib-parser Override the  set by  . Set by -ddump-file-prefixghc-lib-parserPath to store the .mix filesghc-lib-parserthe -ffrontend-opta flags given on the command line, in *reverse* order that they're specified on the command line.ghc-lib-parserplugins dynamically loaded after processing arguments. What will be loaded here is directed by pluginModNames. Arguments are loaded from pluginModNameOpts. The purpose of this field is to cache the plugins so they don't have to be loaded each time they are needed. See .ghc-lib-parserstaic plugins which do not need dynamic loading. These plugins are intended to be added by GHC API users directly to this list.;To add dynamically loaded plugins through the GHC API see  instead.ghc-lib-parserThe  -package-db flags given on the command line, In *reverse* order that they're specified on the command line. This is intended to be applied with the list of "initial" package databases derived from GHC_PACKAGE_PATH; see getPackageConfRefs.ghc-lib-parserThe -ignore-package] flags from the command line. In *reverse* order that they're specified on the command line.ghc-lib-parserThe -package and  -hide-package] flags from the command-line. In *reverse* order that they're specified on the command line.ghc-lib-parserThe -plugin-package-idY flags from command line. In *reverse* order that they're specified on the command line.ghc-lib-parserThe -trust and  -distrustG flags. In *reverse* order that they're specified on the command line.ghc-lib-parser@Filepath to the package environment file (if overriding default)ghc-lib-parserSafe Haskell modeghc-lib-parserMsgDoc output action: use ErrUtils instead of this if you canghc-lib-parser8GHCi scripts specified by -ghci-script, in reverse orderghc-lib-parserwhat kind of {- SCC -} to add automaticallyghc-lib-parserMachine dependent flags (-m blah stuff)ghc-lib-parser8Run-time linker information (what options we need, etc.)ghc-lib-parserRun-time compiler informationghc-lib-parser0Max size, in bytes, of inline array allocations.ghc-lib-parser^Only inline memcpy if it generates no more than this many pseudo (roughly: Cmm) instructions.ghc-lib-parser^Only inline memset if it generates no more than this many pseudo (roughly: Cmm) instructions.ghc-lib-parser/Reverse the order of error messages in GHC/GHCighc-lib-parser*Limit the maximum number of errors to showghc-lib-parser9Unique supply configuration for testing build determinismghc-lib-parser/Temporary: CFG Edge weights for fast iterationsghc-lib-parserThe various Safe Haskell modesnghc-lib-parserUsed to differentiate the scope an include needs to apply to. We have to split the include paths to avoid accidentally forcing recursive includes since -I overrides the system search paths. See Trac #14312.rghc-lib-parserUsed when outputting warnings: if a reason is given, it is displayed. If a warning isn't controlled by a flag, this is made explicit at the point of use.tghc-lib-parser!Warning was enabled with the flagughc-lib-parserCWarning was made an error because of -Werror or -Werror=WarningFlagvghc-lib-parser.Append dump output to files instead of stdout.ghc-lib-parser)Use the cfg based block layout algorithm.ghc-lib-parser+Layout based on last instruction per block.ghc-lib-parser -fPICghc-lib-parser -fPIEghc-lib-parser -pieghc-lib-parserSuppress timestamps in dumps8ghc-lib-parser#Dump the cfg used for block layout.|ghc-lib-parserCAppend to the list of includes a path that shall be included using `-I`J when the C compiler is called. These paths override system search paths.}ghc-lib-parserDAppend to the list of includes a path that shall be included using  `-iquote`l when the C compiler is called. These paths only apply when quoted includes are used. e.g. #include "foo.h"~ghc-lib-parserdConcatenate and flatten the list of global and quoted includes returning just a flat list of paths.ghc-lib-parser]The directory for this version of ghc in the user's app directory (typically something like ~.ghcx86_64-linux-7.6.3)>ghc-lib-parserA filepath like x86_64-linux-7.6.3k with the platform string to use when constructing platform-version-dependent files that need to co-exist.ghc-lib-parser6Will this target result in an object file on the disk?ghc-lib-parserbDoes this target retain *all* top-level bindings for a module, rather than just the exported bindings, in the TypeEnv and compiled code (if any)? In interpreted mode we do this, so that GHCi can call functions inside a module. In HscNothing mode we also do it, so that Haddock can get access to the GlobalRdrEnv for a module after typechecking it.ghc-lib-parserThe .X value corresponding to the default way to create object files on the current platform.ghc-lib-parserAre we building with -fPIE or -fPIC enabled?ghc-lib-parserUsed by  to partially initialize a new  M valueghc-lib-parser The normal  MY. Note that they are not suitable for use in this form and must be fully initialized by  first.ghc-lib-parserLike  but appends an extra newline.ghc-lib-parserTest whether a  L is setghc-lib-parserSet a  Lghc-lib-parserUnset a  Lghc-lib-parserTest whether a  K is setghc-lib-parserSet a  Kghc-lib-parserUnset a  Kghc-lib-parserTest whether a # is setghc-lib-parserSet a #ghc-lib-parserUnset a #ghc-lib-parserTest whether a # is set as fatalghc-lib-parserMark a # as fatal (do not set the flag)ghc-lib-parserMark a # as not fatalghc-lib-parserTest whether a  is setghc-lib-parserSet a ghc-lib-parserUnset a ghc-lib-parserSet or unset a 7, unless it has been explicitly set or unset before.>ghc-lib-parser(Set the Haskell language standard to useghc-lib-parserYSome modules have dependencies on others through the DynFlags rather than textual importsghc-lib-parserIs the -fpackage-trust mode onghc-lib-parser9Is Safe Haskell on in some way (including inference mode)ghc-lib-parser(Is the Safe Haskell safe language in useghc-lib-parser.Is the Safe Haskell safe inference mode activeghc-lib-parser(Test if Safe Imports are on in some form>ghc-lib-parserSet a 'Safe Haskell' flagghc-lib-parserAre all direct imports required to be safe for this Safe Haskell mode? Direct imports are when the code explicitly imports a moduleghc-lib-parserAre all implicit imports required to be safe for this Safe Haskell mode? Implicit imports are things in the prelude. e.g System.IO when print is used.>ghc-lib-parserCombine two Safe Haskell modes correctly. Used for dealing with multiple flags. This makes Safe Haskell very much a monoid but for now I prefer this as I don't want to export this functionality from the module but do want to export the type constructors.ghc-lib-parserA list of unsafe flags under Safe Haskell. Tuple elements are: * name of the flag * function to get srcspan that enabled the flag * function to test if the flag is on * function to turn the flag offghc-lib-parserA list of unsafe flags under Safe Haskell. Tuple elements are: * name of the flag * function to get srcspan that enabled the flag * function to test if the flag is on * function to turn the flag offghc-lib-parser3Retrieve the options corresponding to a particular opt_* field in the correct orderghc-lib-parser{Gets the verbosity flag for the current verbosity level. This is fed to other tools, so GHC-specific verbosity flags like  -ddump-most are not includedghc-lib-parser Sets the  M, to be appropriate to the optimisation levelghc-lib-parserPParse dynamic flags from a list of command line arguments. Returns the parsed  M=, the left-over arguments, and a list of warnings. Throws a Q if errors occurred during parsing (such as unknown flags or missing arguments).ghc-lib-parserLike  but does not allow the package flags (-package, -hide-package, -ignore-package, -hide-all-packages, -package-db). Used to parse flags set in a modules pragma.ghc-lib-parserParses the dynamically set flags for GHC. This is the most general form of the dynamic flag parser that the other methods simply wrap. It allows saying which flags are valid flags and indicating if we are parsing arguments from the command line or from a file pragma.ghc-lib-parser!Write an error or warning to the  LogOutput.>ghc-lib-parserQCheck (and potentially disable) any extensions that aren't allowed in safe mode.The bool is to indicate if we are parsing command line flags (false means file pragma). This allows us to generate better warnings.ghc-lib-parserAll dynamic flags option strings without the deprecated ones. These are the user facing strings for enabling and disabling options.>ghc-lib-parser4All flags with possibility to filter deprecated ones>ghc-lib-parserThis is where we handle unrecognised warning flags. We only issue a warning if -Wunrecognised-warning-flags is set. See Trac #11429 for context.ghc-lib-parseryMake a list of flags for shell completion. Filter all available flags into two groups, for interactive GHC vs all other.>ghc-lib-parserDefine a new flag.>ghc-lib-parser!Define a new flag with an effect.>ghc-lib-parser,Define a new deprecated flag with an effect.>ghc-lib-parserDefine a new deprecated flag.>ghc-lib-parserdDefine a new deprecated flag with an effect where the deprecation message depends on the flag value>ghc-lib-parserUDefine a new deprecated flag where the deprecation message depends on the flag value>ghc-lib-parser`Define a new deprecated flag where the deprecation message is shown depending on the flag value>ghc-lib-parserDefine a new flag for GHCi.>ghc-lib-parser*Define a new flag for GHCi with an effect.>ghc-lib-parser.Define a new flag invisible to CLI completion.>ghc-lib-parser=Define a new flag invisible to CLI completion with an effect.>ghc-lib-parserHide a  from being displayed in --show-options.vThis is for example useful for flags that are obsolete, but should not (yet) be deprecated for compatibility reasons.>ghc-lib-parser Find the  for a #.ghc-lib-parserThese -W<blah> flags can all be reversed with  -Wno-<blah>>ghc-lib-parserThese -<blah> flags can all be reversed with  -no-<blah>>ghc-lib-parserThese -d<blah> flags can all be reversed with  -dno-<blah>ghc-lib-parserThese -f<blah> flags can all be reversed with  -fno-<blah>>ghc-lib-parserThese -f<blah> flags have to do with the typed-hole error message or the valid hole fits in that message. See Note [Valid hole fits include ...] in the TcHoleErrors module. These flags can all be reversed with  -fno-<blah>ghc-lib-parserThese -f<blah> flags can all be reversed with  -fno-<blah>>ghc-lib-parserThese -X blah# flags cannot be reversed with -XNo blah>ghc-lib-parserThese -X blah# flags cannot be reversed with -XNo blah^ They are used to place hard requirements on what GHC Haskell language features can be used.ghc-lib-parserThese -X blah$ flags can all be reversed with -XNo blah>ghc-lib-parserThese are the default settings for the display and sorting of valid hole fits in typed-hole error messages. See Note [Valid hole fits include ...] in the TcHoleErrors module.ghc-lib-parserWarning groups.sAs all warnings are in the Weverything set, it is ignored when displaying to the user which group a warning is in.ghc-lib-parserJWarning group hierarchies, where there is an explicit inclusion relation.Each inner list is a hierarchy of warning groups, ordered from smallest to largest, where each group is a superset of the one before it.Separating this from J allows for multiple hierarchies with no inherent relation to be defined.3The special-case Weverything group is not included.>ghc-lib-parser^Find the smallest group in every hierarchy which a warning belongs to, excluding Weverything.>ghc-lib-parser+Warnings enabled unless specified otherwise>ghc-lib-parserThings you get with -W>ghc-lib-parserThings you get with -Wall>ghc-lib-parserAThings you get with -Weverything, i.e. *all* known warnings flags>ghc-lib-parserThings you get with -Wcompat.This is intended to group together warnings that will be enabled by default at some point in the future, so that library authors eager to make their code future compatible to fix issues before they even generate warnings.ghc-lib-parser4Was the runtime system built with profiling enabled?ghc-lib-parserGiven a  j of a signature in the home library, find out how it is instantiated. E.g., the canonical form of A in  p[A=q[]:A] is q[]:A.ghc-lib-parser,Find the package environment (if one exists){We interpret the package environment as a set of package flags; to be specific, if we find a package environment file like _clear-package-db global-package-db package-db blah/package.conf.d package-id id1 package-id id2we interpret this as [ -hide-all-packages , -clear-package-db , -global-package-db , -package-db blah/package.conf.d , -package-id id1 , -package-id id2 ]YThere's also an older syntax alias for package-id, which is just an unadorned package id id1 id2ghc-lib-parser1Resolve any internal inconsistencies in a set of  M. Returns the consistent  M6 as well as a list of warnings to report to the user.>ghc-lib-parserThis is the value that  U! takes before it is initialized.ghc-lib-parserAn empty FilesToCleanghc-lib-parser M to retrieve the options fromghc-lib-parser%Relevant record accessor: one of the opt_* accessorsghc-lib-parser#Correctly ordered extracted optionsghc-lib-parserUpdated  M-, left-over arguments, and list of warnings.ghc-lib-parserUpdated  M-, left-over arguments, and list of warnings.ghc-lib-parservalid flags to match againstghc-lib-parser(are the arguments from the command line?ghc-lib-parsercurrent dynamic flagsghc-lib-parserarguments to parse>ghc-lib-parserTrue  = it should be turned onghc-lib-parserThe flag prefixghc-lib-parser!What to do when the flag is foundghc-lib-parser&Specification of this particular flagU Kvwxyz{|}~      !"#$%&'( L)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz M W V T      N O P Q R S U X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*,+-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~U L)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz Kvwxyz{|}~      !"#$%&'(#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmrstu !" Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  lmnopq O N S R M W V T     turs    ./0123*,+-$%&'()!"#   Q P{ghijkfed456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc X      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Unopq|}~vwxyz{|}~.None2 y ghc-lib-parserOccurrence NamexIn this context that means: "classified (i.e. as a type name, value name, etc) but not qualified and not yet resolved"ghc-lib-parserOther names in the compiler add additional information to an OccName. This class provides a consistent way to access the underlying OccName. $ghc-lib-parserValue OccNamesKs are those that are either in the variable or data constructor namespaces&ghc-lib-parser Test if the 8 is a data constructor that starts with a symbol (e.g. :, or [])'ghc-lib-parser Test if the U is that for any operator (whether it is a data constructor or variable or whatever)(ghc-lib-parserWrap parens around an operator)ghc-lib-parserhHaskell 98 encourages compilers to suppress warnings about unsed names in a pattern if they start with _: this implements that test>ghc-lib-parser Build an  derived from another .4Note that the pieces of the name are passed in as a  [FastString]: so that the whole name can be constructed with a single  3, minimizing unnecessary intermediate allocations.*ghc-lib-parserTest for definitions internally generated by GHC. This predicte is used to suppress printing of internal definitions in some debug prints,ghc-lib-parserIs an  one of a Typeable TyCon or Modulew binding? This is needed as these bindings are renamed differently. See Note [Grand plan for Typeable] in TcTypeable.Gghc-lib-parser<Derive a name for the representation type constructor of a data/newtype instance.>ghc-lib-parserCA prefix which distinguishes one sort of derived name from anotherghc-lib-parserDThe name we are deriving from in pieces which will be concatenated.Eghc-lib-parserIndex of superclass, e.g. 3ghc-lib-parser Class, e.g. Ordghc-lib-parserDerived Occname, e.g. $p3OrdFghc-lib-parserUnique to combine with the ghc-lib-parserLocal name, e.g. satghc-lib-parserNice unique version, e.g. $L23satGghc-lib-parserFamily name, e.g. Mapghc-lib-parseravoid these Occsghc-lib-parser R:MapHghc-lib-parser3Typically the class and type glommed together e.g. OrdMaybe-. Only used in debug mode, for extra clarityghc-lib-parser Is this a hs-boot instance DFun?ghc-lib-parseravoid these Occsghc-lib-parserE.g.  $f3OrdMaybeIghc-lib-parserTyCon or data con stringghc-lib-parseravoid these Occsghc-lib-parserE.g.  $f3OrdMaybe data T = MkT ... deriving( Data ) needs definitions for $tT :: Data.Generics.Basics.DataType $cMkT :: Data.Generics.Basics.ConstrJghc-lib-parserTyCon or data con stringghc-lib-parseravoid these Occsghc-lib-parserE.g.  $f3OrdMaybe data T = MkT ... deriving( Data ) needs definitions for $tT :: Data.Generics.Basics.DataType $cMkT :: Data.Generics.Basics.Constr~]^`bd      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO~H *-./01+,92<=>834567@AIJCEDFKG:;B?!"#%&'$()     LMON]^b`d-None "#=?HVg ghc-lib-parserdA unique, unambiguous name for something, containing information about where that thing originated.^ghc-lib-parser*A class allowing convenient access to the  of various datatypesaghc-lib-parser!BuiltInSyntax is for things like (:), []Q and tuples, which have special syntactic forms. They aren't in scope as such.pghc-lib-parserwReturns True if the name is (a) Internal (b) External but from the specified module (c) External but from the  interactive packageThe key idea is that False means: the entity is defined in some other module you can find the details (type, fixity, instances) in some interface file those details will be stored in the EPT or HPTTrue means: the entity is defined in this module or earlier in the GHCi session you can find details (type, fixity, instances) in the TcGblEnv or TcLclEnvThe isInteractiveModule part is because successive interactions of a GHCi session each give rise to a fresh module (Ghci1, Ghci2, etc), but they all come from the magic  interactive package; and all the details are kept in the TcLclEnv, TcGblEnv, NOT in the HPT or EPT. See Note [The interactive package] in HscTypessghc-lib-parserjReturns True if the Name comes from some other package: neither this package nor the interactive package.zghc-lib-parseraCreate a name which is (for now at least) local to the current module and hence does not need a   to disambiguate it from other s}ghc-lib-parser=Create a name which definitely originates in the given module~ghc-lib-parser>Create a name which is actually defined by the compiler itselfghc-lib-parser0Create a name brought into being by the compilerghc-lib-parserMake a name for a foreign callghc-lib-parser Make the ? into an internal name, regardless of what it was to begin withghc-lib-parserrCompare Names lexicographically This only works for Names that originate in the source code or have been tidied.ghc-lib-parser0Print the string of Name unqualifiedly directly.ghc-lib-parser!Get a string representation of a  that's unique and stable across recompilations. Used for deterministic generation of binds for derived instances. eg. "$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal$String"ghc-lib-parserAssumes that the  is a non-binding one. See  and  for serializing binding s. See v( for the rationale for this distinction.ghc-lib-parserCaution#: This instance is implemented via gR, which means that the ordering is not stable across deserialization or rebuilds.See g] for further information, and trac #15240 for a bug caused by improper use of this instance.ghc-lib-parserThe same comments as for 's . instance apply.]^`bd      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO^`_abcdefghijklmnopqrstuvwxyz{|}~7abcz{|}~denofgylktuvwxhjmipqrs^`_`None ? ghc-lib-parser A number of s in dependency order: earlier  scope over later B In a single (def, use) pair, the defs also scope over the usesghc-lib-parser(Just ds, us) => The use of any member of the ds, implies that all the us+ are used too. Also, us may mention ds. Nothing => Nothing is defined in this group, but nevertheless all the uses are essential. Used for instance declarations, for exampleghc-lib-parser&A set of names that are used somewhereghc-lib-parser)A set of names that are defined somewhereghc-lib-parser,True if there is a non-empty intersection. s1  s2 doesn't compute s2 if s1 is emptyghc-lib-parserGet the elements of a NameSet with some stable ordering. This only works for Names that originate in the source code or have been tidied. See Note [Deterministic UniqFM] to learn about nondeterminismghc-lib-parser Just like , but  are not eliminated from the  returnedghc-lib-parser Collect all >, regardless of whether the group is itself used, but remove  on the wayghc-lib-parser Given some  and some J, find all the uses, transitively. The result is a superset of the input ,; and includes things defined in the input  (but only if they are used)**aNone Qghc-lib-parserDeterministic Name EnvironmentQSee Note [Deterministic UniqFM] in UniqDFM for explanation why we need DNameEnv.ghc-lib-parserName EnvironmentcNone2M =ghc-lib-parser>Docs for arguments. E.g. function arguments, method arguments.ghc-lib-parserEDocs for declarations: functions, data types, instances, methods etc.ghc-lib-parser$Located Haskell Documentation Stringghc-lib-parserHaskell Documentation String"Internally this is a UTF8-Encoded >.ghc-lib-parser Create a  from a UTF8-encoded >.ghc-lib-parserReturn the contents of a  as a UTF8-encoded >.ghc-lib-parserJoin two docstrings.`Non-empty docstrings are joined with two newlines in between, resulting in separate paragraphs.ghc-lib-parser/Concat docstrings with two newlines in between.Empty docstrings are skipped.If all inputs are empty, G is returned.dNone12456 =ghc-lib-parser"Fields in an algebraic record type ghc-lib-parserUser-visible label of the field ghc-lib-parserIWas DuplicateRecordFields on in the defining module for this datatype? ghc-lib-parserRecord selector functionghc-lib-parser2A map from labels to all the auxiliary informationghc-lib-parsereField labels are just represented as strings; they are not necessarily unique (even within a module)ghc-lib-parserRecord selector OccNames are built from the underlying field name and the name of the first data constructor of the type, to support duplicate record field names. See Note [Why selector names include data constructors].            eNone ghc-lib-parserxUsed when we want to fingerprint a structure without depending on the fingerprints of external Names that it refers to.fNone ghc-lib-parser^A collection of annotations Can't use a type synonym or we hit bug #2412 due to source importghc-lib-parserEThe kind of annotation target found in the middle end of the compilerghc-lib-parserAn annotation targetghc-lib-parserCWe are annotating something with a name: a type or identifierghc-lib-parser%We are annotating a particular module!ghc-lib-parser]Represents an annotation after it has been sufficiently desugared from it's initial form of #ghc-lib-parserThe target of the annotation%ghc-lib-parserGet the name& of an annotation target if it exists.&ghc-lib-parser An empty annotation environment.'ghc-lib-parserWConstruct a new annotation environment that contains the list of annotations provided.(ghc-lib-parser,Add the given annotation to the environment.)ghc-lib-parser"Union two annotation environments.*ghc-lib-parser5Find the annotations attached to the given target as >k values of your choice. If no deserializer is specified, only transient annotations will be returned.+ghc-lib-parser5Find the annotations attached to the given target as >k values of your choice. If no deserializer is specified, only transient annotations will be returned.,ghc-lib-parserDeserialize all annotations of a given type. This happens lazily, that is no deserialization will take place until the [a] is actually demanded and the [a] can also be empty (the UniqFM is not filtered). ghc-lib-parser|The "payload" of an annotation allows recovery of its value at a given type, and can be persisted to an interface file !"#$%&'()*+,!"#$ %'()&*+,None Bghc-lib-parserwAtomically update the reference. Does not force the evaluation of the new variable contents. For strict update, use C.Cghc-lib-parserStrict variant of B.Eghc-lib-parser2Perform a computation with a different environmentFghc-lib-parser1Perform a computation with an altered environment=45#"$  SRTo23456789:;<=>?@ABCDEF45623DEF7<=9:;8o>@?ABCONone"# Z ghc-lib-parser5Log message intended for compiler developers No fileline column stuff ghc-lib-parser-Log messages intended for end users. No fileline column stuff. ghc-lib-parserTSevWarning and SevError are used for warnings and errors o The message has a filelinercolumn heading, plus "warning:" or "error:", added by mkLocMessags o Output is intended for end users ghc-lib-parserA wrapper around  which uses PprDump style. ghc-lib-parser;Make a possibly annotated error message with location info. ghc-lib-parser5Make an unannotated error message with location info.Wghc-lib-parserCategorise error msgs by their importance. This is so each section can be rendered visually distinct. See Note [Error report] for where these come from.Xghc-lib-parserPrimary error msg.Yghc-lib-parser-Context e.g. "In the second argument of ...".Zghc-lib-parser@Supplementary information, e.g. "Relevant bindings include ...".>ghc-lib-parser6This has the same text as errDocImportant . errMsgDoc.eghc-lib-parserEverything is finefghc-lib-parser%A problem, and some indication of whyighc-lib-parser*If they aren't all valid, return the firstqghc-lib-parser!A long (multi-line) error messagerghc-lib-parser A short (one-line) error messagesghc-lib-parser;Variant that doesn't care about qualified/unqualified namestghc-lib-parser!A long (multi-line) error messageughc-lib-parser A short (one-line) error messagevghc-lib-parser;Variant that doesn't care about qualified/unqualified namesghc-lib-parsera wrapper around  F. First check whether the dump flag is set Do nothing if it is unsetghc-lib-parsera wrapper around  F. First check whether the dump flag is set Do nothing if it is unsetUnlike 0, has a printer argument but no header argument>ghc-lib-parser#Run an action with the handle of a  L, if we are outputting to a file, otherwise G.ghc-lib-parserA wrapper around  which uses PprUser style.ghc-lib-parser`Write out a dump. If --dump-to-file is set then this goes to a file. otherwise emit to stdout.When hdrM is empty, we print in a more compact format (no separators and blank lines)The  L/ is used only to choose the filename to use if --dump-to-file> is used; it is not used to decide whether to dump the output>ghc-lib-parser1Choose where to put a dump file based on DynFlags>ghc-lib-parser&Build a nice file name from name of a  L constructorghc-lib-parserTime a compilation phase.(When timings are enabled (e.g. with the -v2o flag), the allocations and CPU time used by the phase will be reported to stderr. Consider a typical usage: 3withTiming getDynFlags (text "simplify") force passY. When timings are enabled the following costs are included in the produced accounting,The cost of executing pass to a result r in WHNFThe cost of evaluating force r to WHNF (e.g. ())The choice of the force function depends upon the amount of forcing desired; the goal here is to ensure that the cost of evaluating the result is, to the greatest extent possible, included in the accounting provided by [. Often the pass already sufficiently forces its result during construction; in this case const () is a reasonable choice. In other cases, it is necessary to evaluate the result to normal form, in which case something like Control.DeepSeq.rnf is appropriate.To avoid adversely affecting compiler performance when timings are not requested, the result is only forced when timings are enabled.ghc-lib-parserLike  but with   rather then  ghc-lib-parserChecks if given V is a fatal warning. ghc-lib-parseroptional annotationghc-lib-parserseverityghc-lib-parserlocationghc-lib-parsermessageghc-lib-parserA means of getting a  M (often u will work here)ghc-lib-parserThe name of the phaseghc-lib-parser.A function to force the result (often either const () or rnf)ghc-lib-parser!The body of the phase to be timedN         VWZYX[]\`_^abcdefghijklmnopqrstuvwxyz{|}~Ndefhigjk     [^_`WmXYZV cabl\]yxn|}z{w  orspquvt  ~@None>X /U ghc-lib-parser map from   to 3, plus the transitive closure of preload packages. ghc-lib-parser Retrieve the   from  M; used in the hs-boot loop-breaker. ghc-lib-parserGiven a fully instantiated  , improve it into a  + if we can find it in the package database.ghc-lib-parser!The result of performing a lookupghc-lib-parser-Found the module uniquely, nothing else to doghc-lib-parser,Multiple modules with the same name in scopeghc-lib-parserNo modules found, but there were some hidden ones with an exact name match. First is due to package hidden, second is due to module being hiddenghc-lib-parserMNo modules found, but there were some unusable ones with an exact name matchghc-lib-parser6Nothing found, here are some suggested different names>ghc-lib-parsergFor each package, a mapping from uid -> i indicates that this package was brought into GHC by the ith  -package-db flag on the command line. We use this mapping to make sure we prefer packages that were defined later on the command line, if there is an ambiguity.>ghc-lib-parser'A reverse dependency index, mapping an   to the   s which have a dependency on it.ghc-lib-parser%The reason why a package is unusable.ghc-lib-parserWe ignored it explicitly using -ignore-package.ghc-lib-parserhThis package transitively depends on a package that was never present in any of the provided databases.ghc-lib-parser[This package transitively depends on a package involved in a cycle. Note that the list of   reports the direct dependencies of this package that (transitively) depended on the cycle, and not the actual cycle itself (which we report separately at high verbosity.)ghc-lib-parserAThis package transitively depends on a package which was ignored.ghc-lib-parserbThis package transitively depends on a package which was shadowed by an ABI-incompatible package.>ghc-lib-parser A mapping of   to A. This list is adjusted so that only valid packages are here. 5 reflects what was stored *on disk*, except for the _ flag, which is adjusted at runtime. (In particular, some packages in this map may have the  flag be F.)>ghc-lib-parser A mapping of  to  C. This is used when users refer to packages in Backpack includes.>ghc-lib-parserOA mapping from wired in names to the original names from the package database.ghc-lib-parserThe packages we're going to link in eagerly. This list should be in reverse dependency order; that is, a package is always mentioned before the packages it depends on.ghc-lib-parsernPackages which we explicitly depend on (from a command line flag). We'll use this to generate version macros.ghc-lib-parserThis is a full map from   to all modules which may possibly be providing it. These providers may be hidden (but we'll still want to report them in error messages), or it may be an ambiguous import.>ghc-lib-parser A map, like $, but controlling plugin visibility.ghc-lib-parserA map saying, for each requirement, what interfaces must be merged together when we use them. For example, if our dependencies are p[A= A] and q[A= A,B=r[C= A]:B]*, then the interfaces to merge for A are p[A= A]:A, q[A= A,B=r[C= A]:B]:A and r[C= A]:C.?There's an entry in this map for each hole in our home library.>ghc-lib-parser Map from   to  4 to all the origins of the bindings in scope. The  PackageConfk is not cached, mostly for convenience reasons (since this is the slow path, we'll just look it up again).>ghc-lib-parser>< records the various aspects of visibility of a particular  .>ghc-lib-parser-Any custom renamings that should bring extra  s into scope.>ghc-lib-parser(The package name is associated with the  4. This is used to implement legacy behavior where -package foo-0.1& implicitly hides any packages named foo>ghc-lib-parserTThe signatures which are contributed to the requirements context from this unit ID.>ghc-lib-parser^Whether or not this unit was explicitly brought into scope, as opposed to implicitly via the ' fields in the package database (when -hide-all-packages is not passed.)>ghc-lib-parser map from   to a >.>ghc-lib-parserThe set of transitively reachable packages according to the explicitly provided command line arguments. See Note [UnitId to InstalledUnitId improvement]>ghc-lib-parser map from  ghc-lib-parserPackage state is all stored in  Mf, including the details of all packages, which packages are exposed, and which modules they provide.!The package state is computed by C, and kept in DynFlags. It is influenced by various package flags: -package pkg and  -package-id pkg cause  pkg to become exposed. If -hide-all-packagesk was not specified, these commands also cause all other packages with the same name to become hidden.-hide-package pkg causes  pkg to become hidden.=(there are a few more flags, check below for their semantics)/The package state has the following properties.Let exposedPackages/ be the set of packages thus exposed. Let depExposedPackages be the transitive closure from exposedPackages of their dependencies.`When searching for a module from a preload import declaration, only the exposed modules in exposedPackages are valid.KWhen searching for a module from an implicit import, all modules from depExposedPackages are valid.When linking in a compilation manager mode, we link in packages the program depends on (the compiler knows this list by the time it gets to the link step). Also, we link in all packages which were mentioned with preload -package flags on the command-line, or are a transitive dependency of same, or are "base"/"rts". The reason for this is that we might need packages which don't contain any Haskell modules, and therefore won't be discovered by the normal mechanism of dependency tracking.Given a module name, there may be multiple ways it came into scope, possibly simultaneously. This data type tracks all the possible ways it could have come into scope. Warning: don't use the record functions, they're partial!ghc-lib-parserModule is hidden, and thus never will be available for import. (But maybe the user didn't realize), so we'll still keep track of these modules.)ghc-lib-parser6Module is unavailable because the package is unusable.ghc-lib-parser7Module is public, and could have come from some places.ghc-lib-parser Just False) means that this module is in someone's exported-modules$ list, but that package is hidden;  Just True means that it is available; Nothing means neither applies.ghc-lib-parserXIs the module available from a reexport of an exposed package? There could be multiple.ghc-lib-parser<Is the module available from a reexport of a hidden package?ghc-lib-parserODid the module export come from a package flag? (ToDo: track more information.>ghc-lib-parser+Smart constructor for a module which is in exposed-modulesH. Takes as an argument whether or not the defining package is exposed.>ghc-lib-parser+Smart constructor for a module which is in reexported-modulesY. Takes as an argument whether or not the reexporting package is expsed, and also its .>ghc-lib-parserASmart constructor for a module which was bound by a package flag.>ghc-lib-parserIs the name from the import actually visible? (i.e. does it cause ambiguity, or is it only relevant when we're making suggestions?)>ghc-lib-parser~Are there actually no providers for this module? This will never occur except when we're filtering based on package imports.>ghc-lib-parserEmpty package configuration mapghc-lib-parser=Find the package we know about with the given unit id, if anyghc-lib-parserA more specialized interface, which takes a boolean specifying whether or not to look for on-the-fly renamed interfaces, and just a   rather than a  M. (so it can be used while we're initializing  Mghc-lib-parserAFind the package we know about with the given package name (e.g. fooP), if any (NB: there might be a locally defined unit name which overrides this)ghc-lib-parser<Search for packages with a given package ID (e.g. "foo-0.1")>ghc-lib-parserEExtends the package configuration map with a list of package configs.ghc-lib-parserYLooks up the package with the given id in the package state, panicing if it is not foundghc-lib-parserGet a list of entries from the package database. NB: be careful with this function, although all packages in this map are "visible", this does not imply that the exposed-modules of the package are available (they may have been thinned or renamed).ghc-lib-parserCall this after 3. It reads the package database files, and sets up various internal tables of package information, according to the package-related flags on the command-line (-package,  -hide-package etc.)Returns a list of packages to link in if we're doing dynamic linking. This list contains the packages that the user explicitly mentioned with -package flags.6 can be called again subsequently after updating the  field of the  M, and it will update the  in  M+ and return a list of packages to link in.ghc-lib-parser A little utility to tell if the H is indefinite (if it is not, we should never use on-the-fly renaming.)>ghc-lib-parserLike >p, but doesn't return a list of unmatched packages. Furthermore, any packages it returns are *renamed* if the UnitArg# has a renaming associated with it.>ghc-lib-parser Rename a ( according to some module instantiation.>ghc-lib-parserHThis sorts a list of packages, putting "preferred" packages first. See ># for the semantics of "preference".>ghc-lib-parserReturns N if pkg should be preferred over pkg'J when picking which should be "active". Here is the order of preference:  First, prefer the latest version`If the versions are the same, prefer the package that came in the latest package database.Pursuant to #12518, we could change this policy to, for example, remove the version preference, meaning that we would always prefer the packages in later package database.Instead, we use that preference based policy only when one of the packages is integer-gmp and the other is integer-simple. This currently only happens when we're looking up which concrete package to use in place of integer-wired-inh and that two different package databases supply a different integer library. For more about the fake integer-wired-in1 package, see Note [The integer library] in the  PrelNames module.>ghc-lib-parser;Compute the reverse dependency index of a package database.>ghc-lib-parserGiven a list of  Is to remove, a database, and a reverse dependency index (as computed by >v), remove those packages, plus any packages which depend on them. Returns the pruned database, as well as a list of s that was removed.>ghc-lib-parserGiven a  from some >, return all entries in > which correspond to packages that do not exist in the index.>ghc-lib-parserGiven a  from some > return all entries in K which correspond to packages that do not exist, OR have mismatching ABIs.>ghc-lib-parserGiven a list of databases, merge them together, where packages with the same unit id in later databases override earlier ones. This does NOT check if the resulting database makes sense (that's done by >).>ghc-lib-parserValidates a database, removing unusable packages from it (this includes removing packages that the user has explicitly ignored.) Our general strategy: 2Remove all broken packages (dangling dependencies)#Remove all packages that are cyclicApply ignore flags9Remove all packages which have deps with mismatching ABIsghc-lib-parserGiven a wired-in  , "unwire" it into the  2 that it was recorded as in the package database.>ghc-lib-parser-Makes the mapping from module to package info>ghc-lib-parserMake a >% covering a set of unusable packages.>ghc-lib-parser.Add a list of key/value pairs to a nested map. The outer map is processed with  to prevent memory leaks when reloading modules in GHCi (see Trac #4029). This ensures that each value is forced before installing into the map.>ghc-lib-parser!Create a singleton module mappingghc-lib-parserBFind all the include directories in these and the preload packagesghc-lib-parser<Find all the library paths in these and the preload packagesghc-lib-parserFind all the link options in these and the preload packages, returning (package hs lib options, extra library options, other flags)>ghc-lib-parser Either the  or  as appropriate for the way.ghc-lib-parserAFind all the C-compiler options in these and the preload packagesghc-lib-parserFFind all the package framework paths in these and the preload packagesghc-lib-parserAFind all the package frameworks in these and the preload packagesghc-lib-parserTakes a  T, and if the module is in any package returns list of modules which take that name.ghc-lib-parser Find all the # in both the preload packages from  M# and corresponding to the list of sghc-lib-parser Will the ( come from a dynamically linked library?ghc-lib-parser Show (very verbose) package infoghc-lib-parserShow simplified package info.The idea is to only print package id, and any information that might be different from the package databases (exposure, trust)ghc-lib-parser4Show the mapping of modules to where they come from.zXWVU  H     hNone N? ghc-lib-parsermUsed when a temp file is created. This determines which component Set of FilesToClean will get the temp fileghc-lib-parserSA file with lifetime TFL_CurrentModule will be cleaned up at the end of upweep_modghc-lib-parserOA file with lifetime TFL_GhcSession will be cleaned up at the end of runGhc(T)ghc-lib-parserDelete all files in filesToClean dflags.ghc-lib-parserDelete all files in filesToClean dflags. That have lifetime TFL_CurrentModule. If a file must be cleaned eventually, but must survive a cleanCurrentModuleTempFiles, ensure it has lifetime TFL_GhcSession.ghc-lib-parser7Ensure that new_files are cleaned on the next call of  or j, depending on lifetime. If any of new_files are already tracked, they will have their lifetime updated.ghc-lib-parseroUpdate the lifetime of files already being tracked. If any files are not being tracked they will be discarded.ghc-lib-parserQCreate and use a temporary directory in the system standard temporary directory.Behaves exactly the same as G, except that the parent temporary directory will be that returned by >.ghc-lib-parser%Create and use a temporary directory.Creates a new temporary directory inside the given directory, making use of the template. The temp directory is deleted after use. For example: 4withTempDirectory "src" "sdist." $ \tmpDir -> do ...The tmpDir: will be a new subdirectory of the given directory, e.g.  src/sdist.342.ghc-lib-parserDirectory name template. See  openTempFile.ghc-lib-parser#Callback that can use the directoryghc-lib-parser)Temp directory to create the directory inghc-lib-parserDirectory name template. See  openTempFile.ghc-lib-parser#Callback that can use the directory  iNone NE      !"#$%&'()*+,-./01234E      !1234"#$%&'()*+,-./0jNone2 o~=ghc-lib-parserA collection of >& - several things that are "available">ghc-lib-parser2Records what things are "available", i.e. in scope?ghc-lib-parserAn ordinary identifier in scope@ghc-lib-parserA type or class in scopeThe AvailTC Invariant=: If the type or class is itself to be in scope, it must be first in this list. Thus, typically: AvailTC Eq [Eq, ==, \/=] []Aghc-lib-parserCompare lexicographicallyFghc-lib-parsermJust the main name made available, i.e. not the available pieces of type or class brought into scope by the  GenAvailInfoGghc-lib-parserYAll names made available by the availability information (excluding overloaded selectors)Hghc-lib-parserYAll names made available by the availability information (including overloaded selectors)Ighc-lib-parserCNames for non-fields made available by the availability informationJghc-lib-parser5Fields made available by the availability informationLghc-lib-parserCs made available by the availability information, paired with the  used to refer to each one.When DuplicateRecordFields is in use, the 5 may be the mangled name of a record selector (e.g.  $sel:foo:MkT ) while the & will be the label of the field (e.g. foo).,See Note [Representing fields in AvailInfo].Nghc-lib-parser trims an > to keep only a single nameOghc-lib-parserfilters >s by the given predicatePghc-lib-parser filters an > by the given predicateQghc-lib-parser Combines >s from the same family avails may have several items with the same availName E.g import Ix( Ix(..), index ) will give Ix(Ix,index,range) and Ix(index) We want to combine these; addAvail does thatTghc-lib-parser/Used when deciding if the interface has changed@ghc-lib-parserThe name of the type or classghc-lib-parserBThe available pieces of type or class, excluding field selectors.ghc-lib-parserMThe record fields of the type (see Note [Representing fields in AvailInfo]).=>?@ABCDEFGHIJKLMNOPQ=>?@BCDEFGIHJKLAMNPOQkNone2 #Vghc-lib-parserImport Item Specification'Describes import info a particular NameWghc-lib-parser4The import had no import list, or had a hiding listXghc-lib-parser$The import had an import list. The Y field is True iff the thing was named  explicitlyT in the import specs rather than being imported as part of a "..." group. Consider: import C( T(..) )Here the constructors of T! are not named explicitly; only T is named explicitly.[ghc-lib-parser Import Declaration SpecificationGDescribes a particular import declaration and is shared among all the  Provenances for that decl]ghc-lib-parserModule imported, e.g.  import Muggle Note the Muggle5 may well not be the defining module for this thing!^ghc-lib-parserImport alias, e.g. from as M (or Muggle if there is no as clause)_ghc-lib-parserWas this import qualified?`ghc-lib-parser-The location of the entire import declarationaghc-lib-parserImport SpecificationThe av of something says how it came to be imported It's quite elaborate so that we can give accurate unused-name warnings.eghc-lib-parserwThe children of a Name are the things that are abbreviated by the ".." notation in export lists. See Note [Parents]hghc-lib-parser$See Note [Parents for record fields]kghc-lib-parserGlobal Reader ElementAn element of the qoghc-lib-parserTrue  = the thing was defined locallypghc-lib-parserIn scope through these importsqghc-lib-parserGlobal Reader Environment Keyed by 3; when looking up a qualified name we look up the  part, and then check the  Provenance to see if the appropriate qualification is valid. This saves routinely doubling the size of the env by adding both qualified and unqualified names to the domain.~The list in the codomain is required because there may be name clashes These only get reported on lookup, not on constructionEINVARIANT 1: All the members of the list have distinct m$ fields; that is, no duplicate Names>INVARIANT 2: Imported provenance => Name is an ExternalName However LocalDefs can have an InternalName. This happens only when type-checking a [d| ... |] Template Haskell quotation; see this note in RnNames Note [Top-level Names in Template Haskell decl quotes]^INVARIANT 3: If the GlobalRdrEnv maps [occ -> gre], then greOccName gre = occNB: greOccName gre is usually the same as nameOccName (gre_name gre), but not always in the case of record seectors; see greOccNamerghc-lib-parserLocal Reader Environment3This environment is used to store local bindings (let, where , lambda, case). It is keyed by OccName, because we never use it for qualified names We keep the current mapping, *and* the set of all Names in scope Reason: see Note [Splicing Exact names] in RnEnvsghc-lib-parser Reader NameqDo not use the data constructors of RdrName directly: prefer the family of functions that creates them, such as {`Note: A Located RdrName will only have API Annotations if it is a compound one, e.g.  `bar` ( ~ )l : l , l '(' or '[' or '[:' , l ')' or ']' or ':]',, l '`' , l l,tghc-lib-parserUnqualified name1Used for ordinary, unqualified occurrences, e.g. x, y or Foo. Create such a s with {ughc-lib-parserQualified name)A qualified name written by the user in source code. The module isn't necessarily the module where the thing is defined; just the one from which it is imported. Examples are Bar.x, Bar.y or Bar.Foo. Create such a s with |vghc-lib-parser Original name$An original name; the module is the defining module. This is used when GHC generates code that will be fed into the renamer (e.g. from deriving clauses), but where we want to say "Use Prelude.map dammit". One of these can be created with }wghc-lib-parser Exact nameWe know exactly the . This is used: ,When the parser parses built-in syntax like [] and (,), but wants a s from it8By Template Haskell, when TH has generated a unique nameSuch a s can be created by using  on a ghc-lib-parserMake a qualified s& in the given namespace and where the   and the G are taken from the first and second elements of the tuple respectivelyghc-lib-parsermake a qp where all the elements point to the same Provenance (useful for "hiding" imports, or imports with no details).ghc-lib-parserTakes a list of distinct GREs and folds them into AvailInfos. This is more efficient than mapping each individual GRE to an AvailInfo and the folding using M& but needs the uniqueness assumption.ghc-lib-parserLook for precisely this w in the environment. This tests whether it is in scope, ignoring anything else that might be in scope with the same .ghc-lib-parserLook for a particular record field selector in the environment, where the selector name and field label may be different: the GlobalRdrEnv is keyed on the label. See Note [Parents for record fields] for why this happens.ghc-lib-parserLook for precisely this ! in the environment, but with an % that might differ from that of the . See ' and Note [Parents for record fields].ghc-lib-parser>Test if an unqualified version of this thing would be in scopeghc-lib-parser2Takes a list of GREs which have the right OccName x: Pick those GREs that are in scope * Qualified, as 4 if want_qual is Qual M _ * Unqualified, as x if want_unqual is Unqual _Return each such GRE, with its ImportSpecs filtered, to reflect how it is in scope qualified or unqualified respectively. See Note [GRE filtering]ghc-lib-parserPick GREs that are in scope *both* qualified *and* unqualified Return each GRE that is, as a pair (qual_gre, unqual_gre) These two GREs are the original GRE with imports filtered to express how it is in scope qualified an unqualified respectivelySUsed only for the 'module M' item in export list; see RnNames.exports_from_availghc-lib-parser>Apply a transformation function to the GREs for these OccNamesghc-lib-parserIs in scope unqualified?ghc-lib-parser,Is in scope qualified with the given module?ghc-lib-parserZPrint out one place where the name was define/imported (With -dppr-debug, print them all)ghc-lib-parser$Display info about the treatment of  under NoStarIsType.%With StarIsType, three properties of  hold:f(a) it is not an infix operator (b) it is always in scope (c) it is a synonym for Data.Kind.TypeHowever, the user might not know that he's working on a module with NoStarIsType and write code that still assumes (a), (b), and (c), which actually do not hold in that module.[Violation of (a) shows up in the parser. For instance, in the following examples, we have ! not applied to enough arguments:data A :: * data F :: * -> *_Violation of (b) or (c) show up in the renamer and the typechecker respectively. For instance:type K = Either * BoolThis will parse differently depending on whether StarIsType is enabled, but it will parse nonetheless. With NoStarIsType it is parsed as a type operator, thus we have ((*) Either Bool). Now there are two cases to consider: There is no definition of (*) in scope. In this case the renamer will fail to look it up. This is a violation of assumption (b).There is a definition of the (*) type operator in scope (for example coming from GHC.TypeNats). In this case the user will get a kind mismatch error. This is a violation of assumption (c).LThe user might unknowingly be working on a module with NoStarIsType or use  as FO out of habit. So it is important to give a hint whenever an assumption about n is violated. Unfortunately, it is somewhat difficult to deal with (c), so we limit ourselves to (a) and (b). generates an appropriate hint to the user depending on the extensions enabled in the module and the name that triggered the error. That is, if we have NoStarIsType and the error is related to g or its Unicode variant, the resulting SDoc will contain a helpful suggestion. Otherwise it is empty.gVWXYZ[\^_`]abcdefghijklmnopqrstuvwxyz{|}~gstuvw{|~}xyzrqklmnopefghijabcd[\^_`]VWXYZYNone YZ[d      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~[YZd      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~lNone2QLghc-lib-parser<Some template haskell tokens have two variants, one with an e the other not:  [| or [e| [|| or [e|| This type indicates whether the e is present or not.ghc-lib-parserCertain tokens can have alternate representations when unicode syntax is enabled. This flag is attached to those tokens in the lexer so that the original source representation can be reproduced in the corresponding  ApiAnnotationghc-lib-parser : +, ,, : H May have  when in a listghc-lib-parsersomething beginning '-- |'ghc-lib-parsersomething beginning '-- ^'ghc-lib-parsersomething beginning '-- $'ghc-lib-parsera section headingghc-lib-parser(doc options (prune, ignore-exports, etc)ghc-lib-parsercomment starting by "--"ghc-lib-parsercomment in {- -}ghc-lib-parserAPI Annotations exist so that tools can perform source to source conversions of Haskell code. They are used to keep track of the various syntactic keywords that are not captured in the existing AST.SThe annotations, together with original source comments are made available in the pm_annotations field of !. Comments are only retained if Opt_KeepRawTokenStream is set in 33 before parsing.*The wiki page describing this feature is 4https://ghc.haskell.org/trac/ghc/wiki/ApiAnnotationsNote: in general the names of these are taken from the corresponding token, unless otherwise noted See note [Api annotations] above for details of the usageghc-lib-parser!ghc-lib-parser'`'ghc-lib-parsercase or lambda caseghc-lib-parser'#)' or '#-}' etcghc-lib-parser'|)'ghc-lib-parser'|)', unicode variantghc-lib-parser'}'ghc-lib-parser'|]'ghc-lib-parser'|]', unicode variantghc-lib-parser')'ghc-lib-parser']'ghc-lib-parseras a list separatorghc-lib-parserin a RdrName for a tupleghc-lib-parser'=>'ghc-lib-parser'=>', unicode variant ghc-lib-parser'::' ghc-lib-parser'::', unicode variantghc-lib-parserghc-lib-parser'..'ghc-lib-parserUnicode variantghc-lib-parserRfor function name in matches where there are multiple equations for the function.ghc-lib-parser for CTypeghc-lib-parser'infix' or 'infixl' or 'infixr'"ghc-lib-parser'<-'#ghc-lib-parser'<-', unicode variant&ghc-lib-parser )ghc-lib-parser;where a name loses its location in the AST, this carries it+ghc-lib-parser'(#' or '{-# LANGUAGE' etc,ghc-lib-parser'(|'-ghc-lib-parser'(|', unicode variant.ghc-lib-parser'{'/ghc-lib-parser'[e|' or '[e||'0ghc-lib-parser'[|'1ghc-lib-parser'[|', unicode variant2ghc-lib-parser'('3ghc-lib-parser'$('4ghc-lib-parser'$$('5ghc-lib-parser'[':ghc-lib-parser'->';ghc-lib-parser'->', unicode variant?ghc-lib-parser';'@ghc-lib-parser'''Bghc-lib-parserstaticEghc-lib-parser Fghc-lib-parser Gghc-lib-parser double '''Hghc-lib-parser'~'Jghc-lib-parser'()' for typesLghc-lib-parser e.g. INTEGERMghc-lib-parser*String value, will need quotes when outputNghc-lib-parser'|'Oghc-lib-parserviaQghc-lib-parser-<Rghc-lib-parser-<, unicode variantSghc-lib-parser'->'Tghc-lib-parser'->', unicode variantUghc-lib-parser-<<Vghc-lib-parser-<<, unicode variantWghc-lib-parser>>-Xghc-lib-parser>>-, unicode variant\ghc-lib-parserRetrieve a list of annotation  s based on the  E of the annotated AST element, and the known type of the annotation.]ghc-lib-parserRetrieve a list of annotation  s based on the  p of the annotated AST element, and the known type of the annotation. The list is removed from the annotations.^ghc-lib-parser/Retrieve the comments allocated to the current  Note: A given  < may appear in multiple AST elements, beware of duplicates_ghc-lib-parser/Retrieve the comments allocated to the current  ', and remove them from the annotations`ghc-lib-parser;Convert a normal annotation into its unicode equivalent one}+LIH      !"#$%&'()*,-./0123456789:;<=>?@ABCDEFGJKMNOPQRSTUVWXYZ[\]^_`}\]^_[Z+LIH      !"#$%&'()*,-./0123456789:;<=>?@ABCDEFGJKMNOPQRSTUVWXY`mNoneF_x!sghc-lib-parserEncapsulated call to addAnnotation, requiring only the SrcSpan of the AST construct the annotation belongs to; together with the AnnKeywordId, this is the key of the annotation map.'This type is useful for places in the parser where it is not yet known what SrcSpan an annotation should be added to. The most common situation is when we are parsing a list: the annotations need to be associated with the AST element that *contains* the list, not the list itself. s lets us defer adding the annotations until we finish parsing the list and are now parsing the enclosing element; we then apply the s' to associate the annotations. Another common situation is where a common fragment of the AST has been factored out but there is no separate AST node for this fragment (this occurs in class and data declarations). In this case, the annotation belongs to the parent data declaration.The usual way an s is created is using the mjD ("make jump") function, and then it can be discharged using the ams function.tghc-lib-parserVarious boolean flags, mostly language extensions, that impact lexing and parsing. Note that a handful of these can change during lexing/parsing.ghc-lib-parserIf this is enabled, '{- LINE ... - }' and '{- COLUMN ... ^-}' update the internal position. Otherwise, those pragmas are lexed as tokens of their own.>ghc-lib-parserlFor reasons of efficiency, boolean parsing flags (eg, language extensions or whether we are currently in a RULE2 pragma) are represented by a bitmap stored in a Word64.ghc-lib-parserThe subset of the  M used by the parser. See u or t for ways to construct this.>ghc-lib-parser'key of package currently being compiled>ghc-lib-parserbitmap of permitted extensions>ghc-lib-parserDo we want to generate ';' layout tokens? In some cases we just want to generate '}', e.g. in MultiWayIf we don't need ';'s because '|'# separates alternatives (unlike a `case`G expression where we need ';' to as a separator between alternatives).Vghc-lib-parser (|Wghc-lib-parser |)Xghc-lib-parser -<Yghc-lib-parser >-Zghc-lib-parser -<<[ghc-lib-parser >>-\ghc-lib-parserType application '@'$ (lexed differently than as-pattern '@',, due to checking for preceding whitespace)]ghc-lib-parser*Used when the lexer can't make sense of it^ghc-lib-parserend of file token_ghc-lib-parsersomething beginning -- |`ghc-lib-parsersomething beginning -- ^aghc-lib-parsersomething beginning -- $bghc-lib-parsera section headingcghc-lib-parser(doc options (prune, ignore-exports, etc)dghc-lib-parsercomment starting by "--"eghc-lib-parsercomment in {- -}>ghc-lib-parserTest whether a # is setrghc-lib-parser5Check if a given flag is currently set in the bitmap.tghc-lib-parser1Given exactly the information needed, set up the ughc-lib-parser0Extracts the flag information needed for parsingvghc-lib-parserCreates a parse state from a  M valuewghc-lib-parserCreates a parse state from a  valueghc-lib-parserFGiven a location and a list of AddAnn, apply them all to the location.ghc-lib-parserGiven a   that surrounds a HsPar or HsParTy , generate sO values for the opening and closing bordering on the start and end of the span>ghc-lib-parserGo through the  comment_q in PState; and remove all comments that belong within the given spantghc-lib-parserwarnings flags enabledghc-lib-parser%permitted language extensions enabledghc-lib-parser'key of package currently being compiledghc-lib-parserare safe imports on?ghc-lib-parserkeeping Haddock comment tokensghc-lib-parserkeep regular comment tokensghc-lib-parserIf this is enabled, '{- LINE ... - }' and '{- COLUMN ... ]-}' update the internal position kept by the parser. Otherwise, those pragmas are lexed as  and  tokens.stzyx{|uvw}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde}svwutkhifg|yz{ljqmpontzyx{|uvw}~rx~snNone2=>?`*&ghc-lib-parserVariable BinderA  is the binder of a ForAllTy It's convenient to define this synonym here rather its natural home in TyCoRep, because it's used in DataCon.hs-bootA  is a binder with only TyVarghc-lib-parser Argument Flag3Is something required to appear in source Haskell (), permitted by request (X) (visible type application), or prohibited entirely from appearing in source Haskell (P)? See Note [VarBndrs, TyCoVarBinders, TyConBinders, and visibility] in TyCoRep>ghc-lib-parser,Not exported: may be discarded as dead code.>ghc-lib-parserExported: kept alive>ghc-lib-parserIdentifier Scopeghc-lib-parserVariableEssentially a typed ?, that may also contain some additional information about the  and its use sites.?ghc-lib-parserTKey for fast comparison Identical to the Unique in the name, cached here for speedghc-lib-parserThe type or kind of the  in questionghc-lib-parserType or Coercion Variableghc-lib-parserEquality Variableghc-lib-parserImplicit parameter Identifierghc-lib-parserDictionary Identifierghc-lib-parserDictionary Function Identifierghc-lib-parserEvidence Variableghc-lib-parserEvidence Identifierghc-lib-parser Kind Variableghc-lib-parser Type Variableghc-lib-parser*Type variable that might be a metavariableghc-lib-parserType or Kind Variableghc-lib-parserType or kind Variableghc-lib-parserghc-lib-parserCoercion Variableghc-lib-parser Identifierghc-lib-parserCompare Vars by their Uniques. This is what Ord Var does, provided here to make it explicit at the call-site that it can introduce non-determinism. See Note [Unique Determinism]ghc-lib-parser Does this 1 classify an argument that is written in Haskell?ghc-lib-parser Does this 5 classify an argument that is not written in Haskell?ghc-lib-parser.Do these denote the same level of visibility? C arguments are visible, others are not. So this function equates  and . Used for printing.ghc-lib-parserMake a named binderghc-lib-parserMake a named binder var should be a type variableghc-lib-parserMake many named bindersghc-lib-parser<Make many named binders Input vars should be type variablesghc-lib-parser Exported "s will not be removed as dead codeghc-lib-parserIf it's a local, make it globalghc-lib-parserExports the given local . Can also be called on global Ms, such as data constructors and class operations, which are born as global s and automatically exportedghc-lib-parserWe can only do this to LocalIdsghc-lib-parser returns True% for type variables as well as local ws These are the variables that we need to pay attention to when finding free variables, or doing dependency analysis.ghc-lib-parser returns True of s and es that must have a binding in this module. The converse is not quite right: there are some global vs that must have bindings, such as record selectors. But that doesn't matter, because it's only used for assertionsghc-lib-parserisExportedIdVar means "don't throw this away"WWpNone,12>HVp$ghc-lib-parser Follow the id+, but never beyond Name. This is used in a HsMatchContext&, for printing messages related to a Match$%%$sNone,.12=>?@ACHVg 2ghc-lib-parser1Constraint type to bundle up the requirement for  d on both the id and the $ type for it3ghc-lib-parsereProvide a summary constraint that gives all am Outputable constraint to extension points needing one4ghc-lib-parserKA constraint capturing all the extension points that can be converted via instance Convertable a a5ghc-lib-parserConversion of annotations from one type index to another. This is required where the AST is converted from one pass to another, and the extension values need to be brought along if possible. So for example a  SourceText is converted via =, but needs a type signature to keep the type checker happy.Nghc-lib-parserhHelper to apply a constraint to all extension points. It has one entry per extension point type family.ghc-lib-parserhHelper to apply a constraint to all extension points. It has one entry per extension point type family. ghc-lib-parserMarks that a field uses the GhcRn variant even when the pass parameter is GhcTc. Useful for storing HsTypes in HsExprs, say, because HsType GhcTc should never occur. ghc-lib-parser*Maps the "normal" id type for a given pass ghc-lib-parser+Used as a data type index for the hsSyn AST ghc-lib-parser"used as place holder in TTG values ghc-lib-parser=Used when constructing a term with an unused extension point.m23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  m  ~ } | { z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                           ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:98756432uNone12>HV ghc-lib-parserImported or Exported Wildcard ghc-lib-parserImported or exported entity. ghc-lib-parserImported or Exported Variable ghc-lib-parser+Imported or exported Thing with Absent list+The thing is a Class/Type (can't tell) - ls : l, l,l ghc-lib-parser8Imported or exported Thing with All imported or exportedThe thing is a Class"Type and the All refers to methods constructorsls : l , l,l#, l ghc-lib-parser:Imported or exported Thing With given imported or exportedThe thing is a Class/Type and the imported or exported things are methods/constructors and record fields; see Note [IEThingWith] - ls : l%, l%, l%, l ghc-lib-parser$Imported or exported module contents (Export Only)ls : l ghc-lib-parserDoc section heading ghc-lib-parserSome documentation ghc-lib-parserReference to named doc ghc-lib-parserLocated Import or Export ghc-lib-parser(Located name with possible adornment - ls : l , l ghc-lib-parserA name in an import or export specification which may have adornments. Used primarily for accurate pretty printing of ParsedSource, and API Annotation placement. ghc-lib-parserno extra ghc-lib-parser pattern X ghc-lib-parser type (:+:) ghc-lib-parserImport DeclarationA single Haskell import declaration. ghc-lib-parserlsll, l for ideclSourcel,l, l,l, ll,l, l) attached to location in ideclHiding ghc-lib-parser Module name. ghc-lib-parserPackage qualifier. ghc-lib-parserTrue  = {-# SOURCE #-} import ghc-lib-parserTrue => safe import ghc-lib-parserTrue => qualified ghc-lib-parser$True => implicit import (of Prelude) ghc-lib-parser as Module ghc-lib-parser(True => hiding, names) ghc-lib-parserLocated Import Declaration ghc-lib-parserWhen in a list this may havel : l ghc-lib-parserWhen in a list this may havel : l* * yNone2) ghc-lib-parserTA Cost Centre Stack is something that can be attached to a closure. This is either:$the current cost centre stack (CCCS)Xa pre-defined cost centre stack (there are several pre-defined CCSs, see below). ghc-lib-parserThe flavour of a cost centre.wIndex fields represent 0-based indices giving source-code ordering of centres with the same module, name, and flavour. ghc-lib-parserAuto-generated top-level thunk ghc-lib-parserExplicitly annotated expression!ghc-lib-parser Explicitly annotated declaration!ghc-lib-parserGenerated by HPC for coverage!ghc-lib-parserA Cost Centre is a single {- SCC -} annotation.!ghc-lib-parserhTwo cost centres may have the same name and module but different SrcSpans, so we need a way to distinguish them easily and give them different object-code labels. So every CostCentre has an associated flavour that indicates how it was generated, and flavours that allow multiple instances of the same name and module have a deterministic 0-based index.!ghc-lib-parserName of the cost centre itself!ghc-lib-parser Name of module defining this CC.?ghc-lib-parser Extract the index from a flavour! ghc-lib-parser.Is this a cost-centre which records scc counts! ghc-lib-parser)Is this a cost-centre which can be sccd ?!ghc-lib-parserPrint a flavour in Core?ghc-lib-parserPrint a flavour's index in Core?ghc-lib-parser(Print the flavour component of a C label?ghc-lib-parser.Print the flavour index component of a C label# !!!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!#!!!!!!! ! !! !!!!!!!!!!!! ! ! !!!!!! zNone &'.12HIX3!/ghc-lib-parser,For now, we work only with nominal equality.!4ghc-lib-parsercoaxrProves returns Nothing when it doesn't like the supplied arguments. When this happens in a coercion that means that the coercion is ill-formed, and Core Lint checks for that.!5ghc-lib-parser-A more explicit representation for `t1 ~ t2`.!Dghc-lib-parserA !D: is a "coercion constructor", i.e. a named equality axiom.!Wghc-lib-parserThe  [CoAxBranch]O passed into the mapping function is a list of all previous branches, reversedD!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!mD!Q!P!O!R!L!M!N!S!T!U!V!W!D!E!F!G!H!I!J!K!:!;!<!=!>!?!@!A!B!C!X!Y!]!\!_!b!i!Z![!`!^!a!c!d!g!e!f!h!j!k!6!7!8!9!l!/!0!1!2!3!4!5!*!+!,!-!.!m{None5!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}NoneW!ghc-lib-parser+Deterministic Type or Coercion Variable Set!ghc-lib-parserDeterministic Type Variable Set!ghc-lib-parserDeterministic Identifier Set!ghc-lib-parserDeterministic Variable Set!ghc-lib-parserType or Coercion Variable Set!ghc-lib-parserCoercion Variable Set!ghc-lib-parserType Variable Set!ghc-lib-parserIdentifier Set!ghc-lib-parser A non-deterministic Variable Set<A non-deterministic set of variables. See Note [Deterministic UniqFM] in UniqDFM for explanation why it's not deterministic and why it matters. Use DVarSet if the set eventually gets converted into a list or folded over in a way where the order changes the generated code, for example when abstracting variables.!ghc-lib-parser5map the function over the list, and union the results!ghc-lib-parserDetermines the pluralisation suffix appropriate for the length of a set in the same way that plural from Outputable does for lists.!ghc-lib-parserPretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetEltsUFM. Passing a list to the pretty-printing function allows the caller to decide on the order of Vars (eg. toposort them) without them having to use nonDetEltsUFM at the call site. This prevents from let-binding non-deterministically ordered lists and reusing them where determinism matters.!ghc-lib-parser5Map the function over the list, and union the results!ghc-lib-parserTrue if empty intersection"ghc-lib-parserTrue if non-empty intersection" ghc-lib-parser2Partition DVarSet according to the predicate given" ghc-lib-parser'Delete a list of variables from DVarSet"ghc-lib-parser"Add a list of variables to DVarSet"ghc-lib-parserAConvert a DVarSet to a VarSet by forgeting the order of insertion"ghc-lib-parsertransCloVarSet for DVarSet!ghc-lib-parserThe things to be pretty printedghc-lib-parser4The pretty printing function to use on the elementsghc-lib-parser+ where the things have been pretty printedH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """H!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!!!!!"!""" """ """""" " " "~None"ghc-lib-parser'Deterministic Type Variable Environment"ghc-lib-parser$Deterministic Identifier Environment"ghc-lib-parser"Deterministic Variable Environment"ghc-lib-parserCoercion Variable Environment"ghc-lib-parser%Type or Coercion Variable Environment"ghc-lib-parserType Variable Environment"ghc-lib-parserIdentifier Environment"ghc-lib-parserVariable Environment"ghc-lib-parserTidy EnvironmentKWhen tidying up print names, we keep a mapping of in-scope occ-names (the +) and a Var-to-Var of the current renamings"ghc-lib-parserRename Environment 2When we are comparing (or matching) types or terms, we are faced with "going under" corresponding binders. E.g. when comparing: \x. e1 ~ \y. e2Basically we want to rename [x -> y] or [y -> xH], but there are lots of things we must be careful of. In particular, x might be free in e2 , or y in e1[. So the idea is that we come up with a fresh binder that is free in neither, and rename x and y, respectively. That means we must maintain: 'A renaming for the left-hand expression)A renaming for the right-hand expressionsAn in-scope setVFurthermore, when matching, we want to be able to have an 'occurs check', to prevent: \x. f ~ \y. ymatching with [f -> y]. So for each expression we want to know that set of locally-bound variables. That is precisely the domain of the mappings 1. and 2., but we must ensure that we always extend the mappings as we go in.-All of this information is bundled up in the ""ghc-lib-parserA set of variables that are in scope at some point "Secrets of the Glasgow Haskell Compiler inliner" Section 3.2 provides the motivation for this abstraction."$ghc-lib-parserLook up a variable the "N. This lets you map from the variable's identity (unique) to its full value."(ghc-lib-parseruniqAway in_scope vK finds a unique that is not used in the in-scope set, and gives that to v."-ghc-lib-parserRetrieve the left mapping".ghc-lib-parserRetrieve the right mapping"/ghc-lib-parserApplies "0E to several variables: the two variable lists must be of equal length"0ghc-lib-parserrnBndr2 env bL bR goes under a binder bL5 in the Left term, and binder bR, in the Right term. It finds a new binder, new_b&, and returns an environment mapping  bL -> new_b and  bR -> new_b"1ghc-lib-parser Similar to "0= but returns the new variable as well as the new environment"2ghc-lib-parser Similar to "07 but used when there's a binder on the left side only."3ghc-lib-parser Similar to "08 but used when there's a binder on the right side only."4ghc-lib-parser Similar to "25 but used for eta expansion See Note [Eta expansion]"5ghc-lib-parser Similar to "05 but used for eta expansion See Note [Eta expansion]":ghc-lib-parser?Look up the renaming of an occurrence in the left or right term";ghc-lib-parser?Look up the renaming of an occurrence in the left or right term"<ghc-lib-parser?Look up the renaming of an occurrence in the left or right term"=ghc-lib-parser?Look up the renaming of an occurrence in the left or right term">ghc-lib-parser)Tells whether a variable is locally bound"?ghc-lib-parser)Tells whether a variable is locally bound"Aghc-lib-parser$Wipe the left or right side renaming"Bghc-lib-parser$Wipe the left or right side renaming"Cghc-lib-parser"swap the meaning of left and righto"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~"o""""""^"_"\"]"F"H"J"K"L"M"N"V"O"P"Q"W"I"R"S"c"T"U"X"g"Z"["f"h"i"`"G"a"Y"b"e"d""""j"l"k"m"{"~"o"z"y"p"q"r"|"s"t"u"v"w"x"n"}"""""""" "!""$"%"&"#"("'"")"0"/"1":";">"?"<"="2"3"A"B"C"6"7"8"9"*"4"5"+","@"-".""D"E;None=? ghc-lib-parserXTyCons represent type constructors. Type constructors are introduced by things such as:1) Data declarations: data Foo = ... creates the Foo type constructor of kind *2) Type synonyms: type Foo = ... creates the Foo type constructor 3) Newtypes: newtype Foo a = MkFoo ... creates the Foo type constructor of kind * -> *4) Class declarations: class Foo where creates the Foo type constructor of kind *zThis data type also encodes a number of primitive, built in type constructors such as those for function and tuple types. ghc-lib-parser Is this the   for an unboxed tuple? ghc-lib-parser Does this   represent a tuple?NB: when compiling  Data.Tuple, the tycons won't reply True to  , because they are built as  AlgTyCons`. However they get spat into the interface file as tuple tycons, so I don't think it matters."ghc-lib-parserPaints a picture of what a  U represents, in broad strokes. This is used towards more informative error messages."ghc-lib-parser e.g., the (->)  ."ghc-lib-parserA " is an abstraction of a type. It contains information that the code generator needs in order to pass arguments, return results, and store values of this type."ghc-lib-parserUnlifted pointer"ghc-lib-parserSigned, 8-bit value"ghc-lib-parserSigned, 16-bit value"ghc-lib-parserSigned, word-sized value"ghc-lib-parserUnsigned, word-sized value"ghc-lib-parser-Signed, 64 bit value (with 32-bit words only)"ghc-lib-parserUnsigned, 8 bit value"ghc-lib-parserUnsigned, 16 bit value"ghc-lib-parser/Unsigned, 64 bit value (with 32-bit words only)"ghc-lib-parserA pointer, but not) to a Haskell value (use '(Un)liftedRep')"ghc-lib-parserA vector"ghc-lib-parser;Information pertaining to the expansion of a type synonym (type)"ghc-lib-parsernRepresents an open type family without a fixed right hand side. Additional instances can appear at any time.7These are introduced by either a top level declaration: data family T a :: *COr an associated data type declaration, within a class declaration: !class C a b where data T b :: *"ghc-lib-parser"An open type synonym family e.g. type family F x y :: * -> *"ghc-lib-parser$A closed type synonym family e.g. &type family F x where { F Int = Bool }"ghc-lib-parserWA closed type synonym family declared in an hs-boot file with type family F a where .."ghc-lib-parser0Built-in type family used by the TypeNats solver"ghc-lib-parser+An ordinary type constructor has no parent."ghc-lib-parserAn unboxed type constructor. The TyConRepName is a Maybe since we currently don't allow unboxed sums to be Typeable since there are too many of them. See #13276."ghc-lib-parser\Type constructors representing a class dictionary. See Note [ATyCon for classes] in TyCoRep"ghc-lib-parserMType constructors representing an *instance* of a *data* family. Parameters:1) The type family in question*2) Instance types; free variables are the " of the current  X (not the family one). INVARIANT: the number of types matches the arity of the family  3) A CoTyConD identifying the representation type with the type instance family"ghc-lib-parserMSome promoted datacons signify extra info relevant to GHC. For example, the IntRep constructor of  RuntimeRep corresponds to the " constructor of "H. This data structure allows us to store this information right in the  6. The other approach would be to look up things like  RuntimeRep's PrimRep by known-key every time."ghc-lib-parseran ordinary promoted data con"ghc-lib-parserA constructor of  RuntimeRepX. The argument to the function should be the list of arguments to the promoted datacon."ghc-lib-parserA constructor of VecCount"ghc-lib-parserA constructor of VecElem"ghc-lib-parserRepresents right-hand-sides of  s for algebraic types"ghc-lib-parserSays that we know nothing about this data type, except that it's represented by a pointer. Used when we export a data type abstractly into an .hi file."ghc-lib-parserInformation about those  s derived from a dataE declaration. This includes data types with no constructors at all."ghc-lib-parserAn unboxed sum type."ghc-lib-parserInformation about those  s derived from a newtype declaration"ghc-lib-parseraThe data type constructors; can be empty if the user declares the type to have no constructors'INVARIANT: Kept in order of increasing  / tag (see the tag assignment in mkTyConTagMap)"ghc-lib-parserCached value: length data_cons"ghc-lib-parserJCached value: is this an enumeration type? See Note [Enumeration types]"ghc-lib-parserThe unique constructor for the newtype. It has no existentials"ghc-lib-parser.Is this a boxed, unboxed or constraint tuple?"ghc-lib-parsercCached value: the argument type of the constructor, which is just the representation type of the   (remember that newtypeEs do not exist at runtime so need a different representation type). The free s of this type are the " from the corresponding  "ghc-lib-parser Same as the "0, but this time eta-reduced. Hence the list of ?s in this field may be shorter than the declared arity of the  .?ghc-lib-parserThe function type constructor, (->)?ghc-lib-parser"Algebraic data types, from - data declarations - newtype declarations - data instance declarations - type instance declarations - the TyCon generated by a class declaration - boxed tuples - unboxed tuples - constraint tuples All these constructors are lifted and boxed except unboxed tuples which should have an " parent. Datanewtypetype families are handled by ?. See " for more information.?ghc-lib-parserRepresents type synonyms?ghc-lib-parserHRepresents families (both type and data) Argument roles are all Nominal? ghc-lib-parserZPrimitive types; cannot be defined in Haskell. This includes the usual suspects (such as Int#0) as well as foreign-imported types and kinds (*, #, and ?)? ghc-lib-parser%Represents promoted data constructor.? ghc-lib-parserTThese exist only during type-checking. See Note [How TcTyCons work] in TcTyClsDecls"ghc-lib-parser[A Unique of this TyCon. Invariant: identical to Unique of Name stored in tyConName field."ghc-lib-parserName of the constructor"ghc-lib-parser Full binders"ghc-lib-parser Result kind"ghc-lib-parserKind of this TyCon"ghc-lib-parserArity"ghc-lib-parser TyVar binders? ghc-lib-parseriThe role for each type variable This list has length = tyConArity See also Note [TyCon Role signatures]"ghc-lib-parserJThe C type that should be used for this type when using the FFI and CAPI? ghc-lib-parserWas the data type declared with GADT syntax? If so, that doesn't mean it's a true GADT; only that the "where" form was used. This field is used only to guide pretty-printing?ghc-lib-parserThe "stupid theta" for the data type (always empty for GADTs). A "stupid theta" is the context to the left of an algebraic type declaration, e.g. Eq a in the declaration data Eq a => T a ....?ghc-lib-parserGContains information about the data constructors of the algebraic type"ghc-lib-parser,Maps a label to information about the field?ghc-lib-parser'Gives the class or family declaration   for derived  8s representing class or family instances, respectively.?ghc-lib-parser8Contains information about the expansion of the synonym"ghc-lib-parservName of result type variable, used for pretty-printing with --show-iface and for reifying TyCon in Template Haskell?ghc-lib-parserVType family flavour: open, closed, abstract, built-in. See comments for FamTyConFlav?ghc-lib-parserFor *associated* type/data families The class tycon in which the family is declared See Note [Associated families and their parent class]?ghc-lib-parsergis this a type family injective in its type variables? Nothing if no injectivity annotation was given?ghc-lib-parserYMost primitive tycons are unlifted (may not contain bottom) but other are lifted, e.g.  RealWorld Only relevant if tyConKind = *?ghc-lib-parserCorresponding data constructor?ghc-lib-parserSee comments with ""ghc-lib-parser4Scoped tyvars over the tycon's body See Note [How TcTyCons work] in TcTyClsDecls Order *does* matter: for TcTyCons with a CUSK, it's the correct dependency order. For TcTyCons without a CUSK, it's the original left-to-right that the user wrote. Nec'y for getting Specified variables in the right order."ghc-lib-parser#Original, user-written tycon tyvars"ghc-lib-parser$Is this TcTyCon already generalized??ghc-lib-parser What sort of   this represents."ghc-lib-parserMake a Required TyConBinder. It chooses between NamedTCB and AnonTCB based on whether the tv is mentioned in the dependent set"ghc-lib-parserBoth type classes as well as family instances imply implicit type constructors. These implicit type constructors refer to their parent structure (ie, the class or family from which they derive) using a type of the following form.Extract those  s that we are able to learn about. Note that visibility in this sense does not correspond to visibility in the context of any particular user program!?ghc-lib-parserChecks the invariants of a "/ given the appropriate type class name, if any"ghc-lib-parserMake a  for the Typeable* representation of the given wired-in type"ghc-lib-parser^The name (and defining module) for the Typeable representation (TyCon) of a type constructor.&See Note [Grand plan for Typeable] in  TcTypeable in TcTypeable."ghc-lib-parserThe size of a " in bytes.cThis applies also when used in a constructor, where we allow packing the fields. For instance, in data Foo = Foo Float Float the two fields will take only 8 bytes, which for 64-bit arch will be equal to 1 word. See also mkVirtHeapOffsetsWithPadding for details of how data fields are layed out."ghc-lib-parserJReturn if Rep stands for floating type, returns Nothing for vector types."ghc-lib-parser-The labels for the fields of this particular  ?ghc-lib-parser-The labels for the fields of this particular  "ghc-lib-parser(Look up a field label belonging to this  ?ghc-lib-parser^Make a map from strings to FieldLabels from all the data constructors of this algebraic tycon"ghc-lib-parserYGiven the name of the function type constructor and it's kind, create the corresponding  . It is recommended to use D if you want this functionality"ghc-lib-parser#This is the making of an algebraic  . Notably, you have to pass in the generic (in the -XGenerics sense) information about the type constructor - you can get hold of it easily (see Generics module)"ghc-lib-parserSimpler specialization of " for classes"ghc-lib-parsermMakes a tycon suitable for use during type-checking. It stores a variety of details about the definition of the TyCon, but no right-hand side. It lives only during the type-checking of a mutually-recursive group of tycons; it is then zonked to a proper TyCon in zonkTcTyCon. See also Note [Kind checking recursive type and class declarations] in TcTyClsDecls."ghc-lib-parserCreate an unlifted primitive   , such as Int#."ghc-lib-parserKind constructors#ghc-lib-parserCreate a lifted primitive   such as  RealWorld#ghc-lib-parserCreate a type synonym  #ghc-lib-parserCreate a type family  #ghc-lib-parser#Create a promoted data constructor   Somewhat dodgily, we give it the same Name as the data constructor itself; when we pretty-print the TyCon we add a quote; see the Outputable TyCon instance#ghc-lib-parser Test if the  8 is algebraic but abstract (invisible data constructors)#ghc-lib-parserMake a fake, recovery  8 from an existing one. Used when recovering from errors#ghc-lib-parser Does this  7 represent something that cannot be defined in Haskell?#ghc-lib-parserIs this  i unlifted (i.e. cannot contain bottom)? Note that this can only be true for primitive and unboxed-tuple  s#ghc-lib-parserReturns True if the supplied   resulted from either a data or newtype declaration# ghc-lib-parserReturns True9 for vanilla AlgTyCons -- that is, those created with a data or newtype declaration.# ghc-lib-parserReturns True for data types that are  definitelyT represented by heap-allocated constructors. These are scrutinised by Core-level case: expressions, and they get info tables allocated for them.-Generally, the function will be true for all data types and false for newtype1s, unboxed tuples, unboxed sums and type family  &s. But it is not guaranteed to return True in all cases that it could.%NB: for a data type family, only the instance  2s get an info table. The family declaration   does not# ghc-lib-parser#  is true of   s for which this property holds (where X is the role passed in): If (T a1 b1 c1) ~X (T a2 b2 c2), then (a1 ~X1 a2), (b1 ~X2 b2), and (c1 ~X3 c2) (where X1, X2, and X3, are the roles given by tyConRolesX tc X) See also Note [Decomposing equality] in TcCanonical# ghc-lib-parser#  is true of  s for which this property holds (where X is the role passed in): If (T tys ~X t), then (t's head ~X T). See also Note [Decomposing equality] in TcCanonical# ghc-lib-parser Is this an " of a  M that is generative and injective with respect to representational equality?#ghc-lib-parserIs this   that for a newtype#ghc-lib-parserTake a   apart into the s it scopes over, the  ZR it expands into, and (possibly) a coercion from the representation type to the newtype . Returns Nothing if this is not possible.#ghc-lib-parser Is this a  * representing a regular H98 type synonym (type)?#ghc-lib-parserTrue iff we can decompose (T a b c) into ((T a b) c) I.e. is it injective and generative w.r.t nominal equality? That is, if (T a b) ~N d e f, is it always the case that (T ~N d), (a ~N e) and (b ~N f)? Specifically NOT true of synonyms (open and otherwise)It'd be unusual to call mightBeUnsaturatedTyCon on a regular H98 type synonym, because you should probably have expanded it first But regardless, it's not decomposable#ghc-lib-parserIs this an algebraic   declared with the GADT syntax?#ghc-lib-parserIs this an algebraic  ( which is just an enumeration of values?#ghc-lib-parser Is this a  ., synonym or otherwise, that defines a family?#ghc-lib-parser Is this a  >, synonym or otherwise, that defines a family with instances?#ghc-lib-parserIs this a synonym  1 that can have may have further instances appear?#ghc-lib-parserIs this a synonym  1 that can have may have further instances appear?#ghc-lib-parser"Is this an open type family TyCon?#ghc-lib-parser0Is this a non-empty closed type family? Returns G( for abstract or empty closed families.# ghc-lib-parser#  tc returns " is is tc is an injective tycon (where is states for which " tc is injective), or " otherwise.#"ghc-lib-parser%Is this TyCon for an associated type?##ghc-lib-parserDGet the enclosing class TyCon (if there is one) for the given TyCon.#$ghc-lib-parserJGet the enclosing class TyCon (if there is one) for the given TyConFlavour#&ghc-lib-parser Is this the   for a boxed tuple?#'ghc-lib-parser Is this the   for an unboxed sum?#(ghc-lib-parser Is this the   for a promoted tuple?#)ghc-lib-parserIs this a PromotedDataCon?#*ghc-lib-parser<Retrieves the promoted DataCon if this is a PromotedDataCon;#+ghc-lib-parserkIs this tycon really meant for use at the kind level? That is, should it be permitted without -XDataKinds??ghc-lib-parserLThese TyCons should be allowed at the kind level, even without -XDataKinds.#-ghc-lib-parserIdentifies implicit tycons that, in particular, do not go into interface files (because they are implicitly reconstructed when the interface is read). Note that:tAssociated families are implicit, as they are re-constructed from the class declaration in which they reside, andFamily instances are not? implicit as they represent the instance body (similar to a dfun! does that for a class instance).Tuples are implicit iff they have a wired-in name (namely: boxed and unboxed tupeles are wired-in and implicit, but constraint tuples are not)#/ghc-lib-parserAIs this a TcTyCon? (That is, one only used during type-checking?)#0ghc-lib-parserCould this TyCon ever be levity-polymorphic when fully applied? True is safe. False means we're sure. Does only a quick check based on the TyCon's category. Precondition: The fully-applied TyCon has kind (TYPE blah)#1ghc-lib-parser)Expand a type synonym application, if any#2ghc-lib-parser/Check if the tycon actually refers to a proper `data` or  `newtype`W with user defined constructors rather than one from a class or other construction.#3ghc-lib-parserAs #4O, but returns the empty list of constructors if no constructors could be found#4ghc-lib-parserDetermine the  s originating from the given   , if the  d is the sort that can have any constructors (note: this does not include abstract algebraic types)#5ghc-lib-parser If the given   has a single data constructor, i.e. it is a data/ type with one alternative, a tuple type or a newtype, then that constructor is returned. If the  ] has more than one constructor, or represents a primitive or function type constructor then Nothing5 is returned. In any other case, the function panics#8ghc-lib-parser-Determine the number of value constructors a   has. Panics if the   is not algebraic or a tuple#9ghc-lib-parser Extract an "F with information about data constructors from an algebraic or tuple  . Panics for any other sort of  #:ghc-lib-parser@Extract type variable naming the result of injective type family#;ghc-lib-parser8Get the list of roles for the type parameters of a TyCon#<ghc-lib-parserGExtract the bound type variables and type expansion of a type synonym  . Panics if the   is not a synonym#=ghc-lib-parserThe number of type parameters that need to be passed to a newtype to resolve it. May be less than in the definition if it can be eta-contracted.#>ghc-lib-parserWExtract the bound type variables and type expansion of an eta-contracted type synonym  . Panics if the   is not a synonym#?ghc-lib-parser Extracts the newtype coercion from such a  5, which can be used to construct something with the newtypeHs type from its representation type (right hand side). If the supplied   is not a newtype , returns Nothing#Bghc-lib-parserFind the "stupid theta" of the  V. A "stupid theta" is the context to the left of an algebraic type declaration, e.g. Eq a in the declaration data Eq a => T a ...#Cghc-lib-parser Extract the Ys bound by a vanilla type synonym and the corresponding (unsubstituted) right hand side.#Dghc-lib-parserNExtract the information pertaining to the right hand side of a type synonym (type) declaration.#Eghc-lib-parserVExtract the flavour of a type family (with all the extra information that it carries)#Fghc-lib-parserIs this   that for a class instance?#Gghc-lib-parserIf this  N is that for a class instance, return the class it is for. Otherwise returns Nothing#Hghc-lib-parser#Return the associated types of the  , if any#Ighc-lib-parserIs this  ! that for a data family instance?#Kghc-lib-parserIf this  m is that of a data family instance, return the family in question and the instance types. Otherwise, return Nothing#Lghc-lib-parserIf this  - is that of a data family instance, return a  u which represents a coercion identifying the representation type with the type instance family. Otherwise, return Nothing#Mghc-lib-parser Extract any " from this TyCon#Pghc-lib-parserCan this flavour of   appear unsaturated?#Qghc-lib-parserIs this flavour of  & an open type family or a data family?#Sghc-lib-parser Initialise a " with #T.#Tghc-lib-parser8The default upper bound (100) for the number of times a " is allowed to encounter each  .#Ughc-lib-parser1Change the upper bound for the number of times a " is allowed to encounter each  .#Wghc-lib-parserReturns whether or not this  d is definite, or a hole that may be filled in at some later point. See Note [Skolem abstract data] "ghc-lib-parserBinders of the  ghc-lib-parser Result kindghc-lib-parserThe roles for each TyVarghc-lib-parser>The C type this type corresponds to when using the CAPI FFIghc-lib-parserStupid theta: see ?ghc-lib-parser#Information about data constructorsghc-lib-parser0What flavour is it? (e.g. vanilla, type family)ghc-lib-parserWas the   declared with GADT syntax?"ghc-lib-parserResult kind of the  ghc-lib-parserArity of the tuple  ghc-lib-parser%Whether the tuple is boxed or unboxed"ghc-lib-parserKind of the resulting  ghc-lib-parserArity of the sumghc-lib-parsers scoped over: see ""ghc-lib-parseruser-written tycon tyvarsghc-lib-parserresult kind onlyghc-lib-parserDScoped type variables; see Note [How TcTyCons work] in TcTyClsDeclsghc-lib-parser$Is this TcTyCon generalised already?ghc-lib-parser What sort of   this represents"ghc-lib-parserresult kind, never levity-polymorphic"ghc-lib-parserresult kind#ghc-lib-parserresult kind?ghc-lib-parserresultd kind, never levity-polymorphic (If you need a levity-polymorphic PrimTyCon, change isTcLevPoly.)#ghc-lib-parserresult kind#ghc-lib-parserresult kind#1ghc-lib-parser Arguments to  ghc-lib-parser Returns a u substitution, the body type of the synonym (not yet substituted) and any arguments remaining from the application """"""""""""" !6!7!8!9""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""########## # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W """""""""""""""""""""""""""!6!7!8!9"""""""""""""""""""""""""""""""""""""""""""#"""###"## #F#I # #&#'#(###)#*#+#,### ############# #!### # # #"###$#-#2#/#0"#W"""""#.#3#4#5#6#7#8#B"#;#O#%#G#H#K#J#L#:#C#D#E"#9#<#=#>###A"#M""""""#N#1##@#?#R"#P#Q"""""""""""""""""""""""""""""""""""""#S#T#U#VrNone=?P`0ghc-lib-parser3A kind of universal type, used for types and kinds. Any time a Type0 is pretty-printed, it is first converted to an 0M before being printed. See Note [Pretty printing via IfaceSyn] in PprTyThing1ghc-lib-parser;Stores the arguments in a type application as a list. See &Note [Suppressing invisible arguments].#xghc-lib-parserShow forall flag1Unconditionally show the forall quantifier with (#y ) or when (#zY) the names used are free in the binder or when compiling with -fprint-explicit-foralls.#ghc-lib-parser!See Note [Holes in IfaceCoercion]#ghc-lib-parser@The various types of TyCons which have special, built-in syntax.#ghc-lib-parsera regular tycon#ghc-lib-parsere.g.  (a, b, c) or (a, b, c)p. The arity is the tuple width, not the tycon arity (which is twice the width in the case of unboxed tuples).#ghc-lib-parsere.g.  (a | b | c)#ghc-lib-parserA heterogeneous equality TyCon (i.e. eqPrimTyCon, eqReprPrimTyCon, heqTyCon) that is actually being applied to two types of the same kind. This affects pretty-printing only: see Note [Equality predicates in IfaceType]#ghc-lib-parserMake an + from an #.#ghc-lib-parser Extract an , from an +.#ghc-lib-parser"Extract the variable name from an +.#ghc-lib-parser Extract an , from an #.#ghc-lib-parser"Extract the variable name from an #.?ghc-lib-parserDefault " variables to  LiftedPtr. e.g. U($) :: forall (r :: GHC.Types.RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b  turns in to, - ($) :: forall a (b :: *). (a -> b) -> a -> bWe do this to prevent RuntimeRep variables from incurring a significant syntactic overhead in otherwise simple type signatures (e.g. ($)). See Note [Defaulting RuntimeRep variables] and #11549 for further discussion.#ghc-lib-parserLike #, but always uses an explicit forall.#ghc-lib-parser;Render the "forall ... ." or "forall ... ->" bit of a type.?ghc-lib-parserRender the ... in (forall ... .) or (forall ... ->)]. Returns both the list of not-yet-rendered binders and the doc. No anonymous binders here!? ghc-lib-parserPrefix a space if the given 0 is a promoted  1. See Note [Printing promoted type constructors]?!ghc-lib-parserMPretty-print a type-level equality. Returns (Just doc) if the argument is a  saturated| application of eqTyCon (~) eqPrimTyCon (~#) eqReprPrimTyCon (~R#) heqTyCon (~~)[See Note [Equality predicates in IfaceType] and Note [The equality types story] in TysPrim?"ghc-lib-parserPretty-prints an application of a type constructor to some arguments (whose visibilities are known). This is polymorphic (over aC) since we use this function to pretty-print two different things:  Types (from ?#)Coercions (from #)#ghc-lib-parseriPrints "(C a, D b) =>", including the arrow. Used when we want to print a context in a type, so we use  Q to decide whether to parenthesise a singleton predicate; e.g. Num a => a -> a#ghc-lib-parserPrints a context or ()- if empty You give it the context precedence?$ghc-lib-parserif printing coercionsghc-lib-parser otherwise?ghc-lib-parser*visibility of the first binder in the list{+,##-###################.##/###0###########1###x#y#z#{#|#}#~##################################################################{##0#############-#######################{#|#}#~#/############.##1###,#########+#x#y#z#########################################None7$ghc-lib-parser.Predicate on possible free variables: returns True! iff the variable is interesting$ ghc-lib-parserRun a free variable computation, returning a list of distinct free variables in deterministic order and a non-deterministic set containing those variables.$ ghc-lib-parsereRun a free variable computation, returning a list of distinct free variables in deterministic order.$ ghc-lib-parserRun a free variable computation, returning a deterministic set of free variables. Note that this is just a wrapper around the version that returns a deterministic list. If you need a list you should use $ .$ ghc-lib-parserRun a free variable computation, returning a non-deterministic set of free variables. Don't use if the set will be later converted to a list and the order of that list will impact the generated code.$ ghc-lib-parsertAdd a variable - when free, to the returned free variables. Ignores duplicates and respects the filtering function.$ghc-lib-parserReturn no free variables.$ghc-lib-parser%Union two free variable computations.$ghc-lib-parser5Mark the variable as not free by putting it in scope.$ghc-lib-parser%Mark many free variables as not free.$ghc-lib-parser#Filter a free variable computation.$ghc-lib-parserBMap a free variable computation over a list and union the results.$ghc-lib-parser&Union many free variable computations.$ghc-lib-parser|Add multiple variables - when free, to the returned free variables. Ignores duplicates and respects the filtering function.$$$ $ $ $ $ $$$$$$$$$$$ $ $ $ $ $$$$$$$$DNone2`8d Pghc-lib-parserA collection of  Rs Qghc-lib-parser0The key type representing kinds in the compiler. Rghc-lib-parserA type of the form p of kind  Constraint9 represents a value whose type is the Haskell predicate p/, where a predicate is what occurs before the => in a Haskell type.We use  RK as documentation to mark those types that we guarantee to have this kind.0It can be expanded into its representation, but:(The type checker must treat it as opaque1The rest of the compiler treats it as transparentConsider these examples: ]f :: (Eq a) => a -> Int g :: (?x :: Int -> Int) => a -> Int h :: (r\l) => {r} => {l::Int | r} Here the Eq a and ?x :: Int -> Int and rl are all called "predicates" Sghc-lib-parserRA semantically more meaningful type to represent what may or may not be a useful  X. Tghc-lib-parserA  TF represents an argument to a function. TyCoBinders can be dependent ($:) or nondependent ($;;). They may also be visible or not. See Note [TyCoBinders] Vghc-lib-parserType & coercion substitutiontcvsubst_invariant* The following invariants must hold of a  V: The in-scope set is needed only* to guide the generation of fresh uniquesIn particular, the kind; of the type variables in the in-scope set is not relevantqThe substitution is only applied ONCE! This is because in general such application will not reach a fixed point. Wghc-lib-parserOFor simplicity, we have just one UnivCo that represents a coercion from some type to some other type, with (in general) no restrictions on the type. The UnivCoProvenance specifies more exactly what the coercion really is and why a program should (or shouldn't!) trust the coercion. It is reasonable to consider each constructor of  W as a totally independent coercion form; their only commonality is that they don't tell you what types they coercion between. (That info is in the $0 constructor of  X. Xghc-lib-parserA  XC is concrete evidence of the equality/convertibility of two types. Yghc-lib-parser_A global typecheckable-thing, essentially anything that has a name. Not to be confused with a  TcTyThingH, which is also a typecheckable thing but in the *local* context. See TcEnv for how to retrieve a  Y given a . [ghc-lib-parserIs this the type "?$ghc-lib-parserA substitution of  Xs for s$ghc-lib-parserA substitution of  Zs for s and  Qs for s$ghc-lib-parserIA coercion to be filled in by the type-checker. See Note [Coercion holes]$ghc-lib-parserFrom  unsafeCoerce#. These are unsound.$ghc-lib-parser>See Note [Phantom coercions]. Only in Phantom roled coercions$ghc-lib-parserFrom the fact that any two coercions are considered equivalent. See Note [ProofIrrelProv]. Can be used in Nominal or Representational coercions$ ghc-lib-parsereFrom a plugin, which asserts that this coercion is sound. The string is for the use of the plugin.$8ghc-lib-parser;See Note [Coercion holes] Only present during typechecking$9ghc-lib-parser$9 is like  T, but there can only be  in the $: field.$<ghc-lib-parserA type labeled $<t might have knot-tied tycons in it. See Note [Type checking recursive type and class declarations] in TcTyClsDecls$?ghc-lib-parser;Vanilla type or kind variable (*never* a coercion variable)$@ghc-lib-parser+Type application to something other than a   . Parameters:1) Function: must not be a $A or $E, must be another $@, or $? See Note  EQ1 Respecting definitional equality about the no $E requirement2) Argument type$Aghc-lib-parserApplication of a  , including newtypes and1 synonyms. Invariant: saturated applications of FunTyCon must use $CC and saturated synonyms must use their own constructors. However,  unsaturated FunTyCons do appear as $As. Parameters:%1) Type constructor being applied to.2) Type arguments. Might not have enough type arguments here to saturate the constructor. Even type synonyms are not necessarily saturated; for example unsaturated type synonyms can appear as the right hand side of a type synonym.$Bghc-lib-parser A  type.$Cghc-lib-parser4t1 -> t2 Very common, so an important special case$Dghc-lib-parser/Type literals are similar to type constructors.$Eghc-lib-parserA kind cast. The coercion is always nominal. INVARIANT: The cast is never refl. INVARIANT: The Type is not a CastTy (use TransCo instead) See Note  EQ2 Respecting definitional equality and (EQ3)$Fghc-lib-parserInjection of a Coercion into a type This should only ever be used in the RHS of an AppTy, in the list of a TyConApp, when applying a promoted GADT data constructor$Gghc-lib-parser3The key representation of types within the compiler$Oghc-lib-parserIRemove the binder's variable from the set, if the binder has a variable.$Pghc-lib-parser,Does this binder bind an invisible argument?$Qghc-lib-parser)Does this binder bind a visible argument?$Sghc-lib-parserTIf its a named binder, is the binder a tyvar? Returns True for nondependent binder.$Yghc-lib-parserMake an arrow type$Zghc-lib-parserMake nested arrow types$[ghc-lib-parserIf tv is a coercion variable and it is not used in the body, returns a FunTy, otherwise makes a forall type. See Note [Unused coercion variable in ForAllTy]$\ghc-lib-parserLike $[b, but does not check the occurrence of the binder See Note [Unused coercion variable in ForAllTy]$]ghc-lib-parser/Wraps foralls over the type using the provided s from left to right?%ghc-lib-parserLike $^1, but does not check the occurrence of the binder$`ghc-lib-parserLike $_1, but does not check the occurrence of the binder$aghc-lib-parserZCreate the plain type constructor type which has been applied to no type arguments at all.$bghc-lib-parserIExtract the RuntimeRep classifier of a type from its kind. For example, kindRep * = LiftedRepF; Panics if this is not possible. Treats * and Constraint as the same$cghc-lib-parserLGiven a kind (TYPE rr), extract its RuntimeRep classifier rr. For example,  kindRep_maybe * = Just LiftedRep Returns GJ if the kind is not of form (TYPE rr) Treats * and Constraint as the same$dghc-lib-parserThis version considers Constraint to be the same as *. Returns True if the argument is equivalent to Type/Constraint and False otherwise. See Note [Kind Constraint and kind Type]$eghc-lib-parserReturns True if the kind classifies unlifted types and False otherwise. Note that this returns False for levity-polymorphic kinds, which may be specialized to a kind that classifies unlifted types.$hghc-lib-parserIs a tyvar of type "?$pghc-lib-parser]Generates an in-scope set from the free variables in a list of types and a list of coercions$qghc-lib-parser$u] that returns free variables of a type in a deterministic set. For explanation of why using !9 is not deterministic see Note [Deterministic FV] in FV.$rghc-lib-parser$u] that returns free variables of a type in deterministic order. For explanation of why using !9 is not deterministic see Note [Deterministic FV] in FV.?&ghc-lib-parserqReturns free variables of types, including kind variables as a non-deterministic set. For type synonyms it does not expand the synonym.$sghc-lib-parsermReturns free variables of types, including kind variables as a deterministic set. For type synonyms it does not expand the synonym.$tghc-lib-parserzReturns free variables of types, including kind variables as a deterministically ordered list. For type synonyms it does not expand the synonym.$ughc-lib-parserThe worker for $u and tyCoFVsOfTypeList$. The previous implementation used ! which is O(n+m) and can make the function quadratic. It's exported, so that it can be composed with other functions that compute free variables. See Note [FV naming conventions] in FV.nEta-expanded because that makes it run faster (apparently) See Note [FV eta expansion] in FV for explanation.$zghc-lib-parser6Get a deterministic set of the vars free in a coercion$ghc-lib-parserGiven a covar and a coercion, returns True if covar is almost devoid in the coercion. That is, covar can only appear in Refl and GRefl. See last wrinkle in Note [Unused coercion variable in ForAllCo] in Coercion$ghc-lib-parser Returns the free variables of a  Z3 that are in injective positions. For example, if F& is a non-injective type family, then: 9injectiveTyVarsOf( Either c (Maybe (a, F b c)) ) = {a,c} If $ ty = itvs, then knowing ty fixes itvs. More formally, if a is in $ ty and S1(ty) ~ S2(ty), then S1(a) ~ S2(a) , where S1 and S2 are arbitrary substitutions.See ENote [When does a tycon application need an explicit kind signature?].$ghc-lib-parserDoes a   (that is applied to some number of arguments) need to be ascribed with an explicit kind signature to resolve ambiguity if rendered as a source-syntax type? (See ENote [When does a tycon application need an explicit kind signature?]; for a full explanation of what this function checks for.)$ghc-lib-parserReturns True if this type has no free variables. Should be the same as isEmptyVarSet . tyCoVarsOfType, but faster in the non-forall case.$ghc-lib-parserReturns True if this coercion has no free variables. Should be the same as isEmptyVarSet . tyCoVarsOfCo, but faster in the non-forall case.?'ghc-lib-parserReturns True if this UnivCoProv has no free variables. Should be the same as isEmptyVarSet . tyCoVarsOfProv, but faster in the non-forall case.$ghc-lib-parser(compose env1 env2)(x) is  env1(env2(x)) ; i.e. apply env2 then env14. It assumes that both are idempotent. Typically, env1* is the refinement to a base substitution env2$ghc-lib-parserbComposes two substitutions, applying the second one provided first, like in function composition.$ghc-lib-parser@Make a TCvSubst with specified tyvar subst and empty covar subst$ghc-lib-parser@Make a TCvSubst with specified covar subst and empty tyvar subst$ghc-lib-parsercReturns the free variables of the types in the range of a substitution as a non-deterministic set.$ghc-lib-parser#Generates the in-scope set for the  V@ from the types in the incoming environment. No CoVars, please!$ghc-lib-parser#Generates the in-scope set for the  VA from the types in the incoming environment. No TyVars, please!$ghc-lib-parser#Generates the in-scope set for the  V@ from the types in the incoming environment. No CoVars, please!$ghc-lib-parserType substitution, see $$ghc-lib-parserType substitution, see $ . Disables sanity checks. The problems that the sanity checks in substTy catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substTyUnchecked to substTy and remove this function. Please don't use in new code.$ghc-lib-parser.Substitute tyvars within a type using a known ". Pre-condition: the in_scopeh set should satisfy Note [The substitution invariant]; specifically it should include the free vars of tys , and of ty minus the domain of the subst.$ghc-lib-parserCoercion substitution, see $$ghc-lib-parserCoercion substitution, see $ . Disables sanity checks. The problems that the sanity checks in substCo catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substCoUnchecked to substCo and remove this function. Please don't use in new code.$ghc-lib-parserSubstitute covars within a type$ghc-lib-parserType substitution, see $$ghc-lib-parserType substitution, see $$ghc-lib-parserSubstitute within a  Z after adding the free variables of the type to the in-scope set. This is useful for the case when the free variables aren't already in the in-scope set or easily available. See also Note [The substitution invariant].$ghc-lib-parser When calling $ it should be the case that the in-scope set in the substitution is a superset of the free vars of the range of the substitution. See also Note [The substitution invariant].$ghc-lib-parser`This checks if the substitution satisfies the invariant from Note [The substitution invariant].$ghc-lib-parserSubstitute within a  Za The substitution has to satisfy the invariants described in Note [The substitution invariant].$ghc-lib-parserSubstitute within a  Z disabling the sanity checks. The problems that the sanity checks in substTy catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substTyUnchecked to substTy and remove this function. Please don't use in new code.$ghc-lib-parserSubstitute within several  Zbs The substitution has to satisfy the invariants described in Note [The substitution invariant].$ghc-lib-parserSubstitute within several  Zs disabling the sanity checks. The problems that the sanity checks in substTys catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substTysUnchecked to substTys and remove this function. Please don't use in new code.$ghc-lib-parserSubstitute within a  Pa The substitution has to satisfy the invariants described in Note [The substitution invariant].$ghc-lib-parserSubstitute within a  P disabling the sanity checks. The problems that the sanity checks in substTys catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substThetaUnchecked to substTheta and remove this function. Please don't use in new code.$ghc-lib-parserSubstitute within a  Xa The substitution has to satisfy the invariants described in Note [The substitution invariant].$ghc-lib-parserSubstitute within a  X disabling sanity checks. The problems that the sanity checks in substCo catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substCoUnchecked to substCo and remove this function. Please don't use in new code.$ghc-lib-parserSubstitute within several  Xbs The substitution has to satisfy the invariants described in Note [The substitution invariant].?(ghc-lib-parserLike $, but disables sanity checks. The problems that the sanity checks in substCo catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substCoUnchecked to substCo and remove this function. Please don't use in new code.?)ghc-lib-parserLike $, but disables sanity checks. The problems that the sanity checks in substTy catch are described in Note [The substitution invariant]. The goal of #11371 is to migrate all the calls of substTyUnchecked to substTy and remove this function. Please don't use in new code.?*ghc-lib-parserSubstitute a tyvar in a binding position, returning an extended subst and a new tyvar. Use the supplied function to substitute in the kind?+ghc-lib-parserSubstitute a covar in a binding position, returning an extended subst and a new covar. Use the supplied function to substitute in the kind$ghc-lib-parser;Print a user-level forall; see Note [When to print foralls]$ghc-lib-parserdebugPprType is a simple pretty printer that prints a type without going through IfaceType. It does not format as prettily as the normal route, but it's much more direct, and that can be useful for debugging. E.g. with -dppr-debug it prints the kind on type-variable  occurrences1 which the normal route fundamentally cannot do.$ghc-lib-parser#Display all kind information (with -fprint-explicit-kinds) when the provided : argument is I. See 'Note [Kind arguments in error messages] in TcErrors.$ghc-lib-parserQThis tidies up a type for printing in an error message, or in an interface file.;It doesn't change the uniques at all, just the print names.$ghc-lib-parser Add the free Is to the env in tidy form, so that we can tidy the type they are free in$ghc-lib-parser Treat a new t as a binder, and give it a fresh tidy name using the environment if one has not already been allocated. See also $$ghc-lib-parser:Grabs the free type variables, tidies them and then uses $ to work over the type itself$ghc-lib-parserCalls $= on a top-level type (i.e. with an empty tidying environment)$ghc-lib-parserWShould specified binders count towards injective positions in the kind of the TyCon?ghc-lib-parserThe number of args the   is applied to.ghc-lib-parserDoes  T t_1 ... t_n need a kind signature? (Where n is the number of arguments)?*ghc-lib-parser"Use this to substitute in the kind N O P Q R S$"$# T$:$; U$=$> V$ W$$$$ X$'$($-$)$*$+$,$.$/$0$1$2$3$4$5$6$7$8 Y$H$I$J$K Z$?$@$A$B$C$D$E$F [ \ ] ^ _ $$$$$$$!$$$%$&$9$<$G$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Y$H$I$J$K$N$M$L Z$?$@$A$B$C$D$E$F U$=$>$G Q$< R P X$'$($-$)$*$+$,$.$/$0$1$2$3$4$5$6$7$8 W$$$$ $$$$$i$j O$&$%$$ S$"$#$! N$a$U$V$W$X$Y$Z$[$]$\$^$_$`$c$b$d$e$f$g [$h T$:$;$9$O$P$Q$S$R$T \$$$$$$$$$$$$$$$ ]$$ ^ _ $$$$$$k$q$l$s$v$x$w$u$r$y$t$~$$$$m$n$z$|$}${$o$$$$$ V$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$p$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Y3NoneK%ghc-lib-parser Primitive  s that are defined in GHC.Prim but not exposed. It's important to keep these separate as we don't want users to be able to write them (see Trac #15209) or see them in GHCi's :browse output (see Trac #12023).%ghc-lib-parser Primitive  *s that are defined in, and exported from, GHC.Prim.%@ghc-lib-parserThe (->) type constructor. ^(->) :: forall (rep1 :: RuntimeRep) (rep2 :: RuntimeRep). TYPE rep1 -> TYPE rep2 -> * %Dghc-lib-parserGGiven a RuntimeRep, applies TYPE to it. see Note [TYPE and RuntimeRep]%Eghc-lib-parser Convert a " to a  Z> of kind RuntimeRep Defined here to avoid (more) module loops%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%˻%C%"%$%#%&%%%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%=%>%;%<%A%B%D%E%@%?%%%%G%F%%I%H%%S%R%%]%\%%_%^% %a%`%!%h%g%c%b%d%e%f%j%i%n%v%q%w%r%x%t%y%o%z%p%{%s%|%u%}%~%%%%%%%%%%%%%%%%%%K%J%%U%T%%M%L%%W%V%%O%N%%Y%X%%Q%P%%[%Z%%k%l%m%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%GNoneW%ghc-lib-parser5Tests whether the given kind (which should look like TYPE x) is something other than a constructor tree (that is, constructors at every node). E.g. True of TYPE k, TYPE (F Int) False of TYPE 'LiftedRep%ghc-lib-parservDoes this classify a type allowed to have values? Responds True to things like *, #, TYPE Lifted, TYPE v, Constraint.$True of any sub-kind of OpenTypeKind Q$d$e%%% Q$d$e%%%FNone>x|#lghc-lib-parserxAttempts to tease a type apart into a type constructor and the application of a number of arguments to that constructor#mghc-lib-parserDo a topological sort on a list of tyvars, so that binders occur before occurrences E.g. given [ a::k, k::*, b::k ] it'll return a well-scoped list [ k::*, a::k, b::k ]PThis is a deterministic sorting operation (that is, doesn't depend on Uniques).It is also meant to be stable: that is, variables should not be reordered unnecessarily. This is specified in Note [ScopedSort] See also Note [Ordering of implicit variables] in RnTypes#nghc-lib-parser+Get the free vars of a type in scoped order#oghc-lib-parser*Get the free vars of types in scoped order#pghc-lib-parserHGives the typechecker view of a type. This unwraps synonyms but leaves  Constraint alone. c.f. coreView, which turns Constraint into TYPE LiftedRep. Returns Nothing if no unwrapping happens. See also Note [coreView vs tcView]#qghc-lib-parserThis function Strips off the top layer only of a type synonym application (if any) its underlying representation type. Returns Nothing if there is nothing to look through. This function considers  Constraint to be a synonym of TYPE LiftedRep.By being non-recursive and inlined, this case analysis gets efficiently joined onto the case analysis that the caller is already doing#rghc-lib-parser5Type equality on source types. Does not look through newtypes or  Rs, but it does look through type synonyms. This first checks that the kinds of the types are equal and then checks whether the types are equal, ignoring casts and coercions. (The kind check is a recursive call, but since all kinds have type Typeo, there is no need to check the types of kinds.) See also Note [Non-trivial definitional equality] in TyCoRep.#tghc-lib-parserMake a $E. The Coercion must be nominal. Checks the Coercion for reflexivity, dropping it if it's reflexive. See Note [Respecting definitional equality] in TyCoRep#ughc-lib-parser&Applies a type to another, as in e.g. k a?,ghc-lib-parser!An ordering relation between two  Zs (known below as t1 :: k1 and t2 :: k2)?-ghc-lib-parser t1 < t2?.ghc-lib-parsert1 ~ t2> and there are no casts in either, therefore we can conclude k1 ~ k2?/ghc-lib-parsert1 ~ t2B yet one of the types contains a cast so they may differ in kind.?0ghc-lib-parser t1 > t2%ghc-lib-parser>A choice of equality relation. This is separate from the type !6 because !93 does not define a (non-trivial) equality relation.%ghc-lib-parserGThis describes how a "map" operation over a type/coercion should behave%ghc-lib-parser8Should the new type be created with smart constructors?%ghc-lib-parserFWhat to do with coercion holes. See Note [Coercion holes] in TyCoRep.%ghc-lib-parser.The returned env is used in the extended scope%ghc-lib-parserThis is used only to turn TcTyCons into  Ss. See Note [Type checking recursive type and class declarations] in TcTyClsDecls%ghc-lib-parserExpand out all type synonyms. Actually, it'd suffice to expand out just the ones that discard type variables (e.g. type Funny a = Int) But we don't know which those are currently, so we just expand all.%u only expands out type synonyms mentioned in the type, not in the kinds of any TyCon or TyVar mentioned in the type.Keep this synchronized with synonymTyConsOfType%ghc-lib-parser2Attempts to obtain the type variable underlying a  ZS, and panics with the given message if this is not a type variable type. See also %%ghc-lib-parser2Attempts to obtain the type variable underlying a  Z%ghc-lib-parserzIf the type is a tyvar, possibly under a cast, returns it, along with the coercion. Thus, the co is :: kind tv ~N kind ty%ghc-lib-parser2Attempts to obtain the type variable underlying a  Z, without any expansion%ghc-lib-parserAttempt to take a type application apart, whether it is a function, type constructor, or plain type application. Note that type family applications are NEVER unsaturated by this!%ghc-lib-parserDoes the AppTy split as in %7, but assumes that any Core view stuff is already done%ghc-lib-parserDoes the AppTy split as in tcSplitAppTy_maybeX, but assumes that any coreView stuff is already done. Refuses to look through (c => t)%ghc-lib-parserLike &8( but doesn't look through type synonyms.%ghc-lib-parserLike tcSplitTyConApp( but doesn't look through type synonyms.%ghc-lib-parser1Attempts to take a type application apart, as in %%, and panics if this is not possible%ghc-lib-parserRecursively splits a type as far as is possible, leaving a residual type being applied to and the type arguments applied to it. Never fails, even if that means returning an empty list of type applications.%ghc-lib-parserLike %(, but doesn't look through type synonyms%ghc-lib-parser>Is this a numeric literal. We also look through type synonyms.%ghc-lib-parser=Is this a symbol literal. We also look through type synonyms.%ghc-lib-parser+Is this a type literal (symbol or numeric).%ghc-lib-parserQIs this type a custom user error? If so, give us the kind and the error message.%ghc-lib-parser=Render a type corresponding to a user type error into a SDoc.%ghc-lib-parsermAttempts to extract the argument and result types from a type, and panics if that is not possible. See also %%ghc-lib-parser=Attempts to extract the argument and result types from a type%ghc-lib-parserBExtract the function result type and panic if that is not possible%ghc-lib-parser Just like %/ but for a single argument Try not to iterate #s[, because it's inefficient to substitute one variable at a time; instead use 'piResultTys"DExtract the function argument type and panic if that is not possible%ghc-lib-parserW(piResultTys f_ty [ty1, .., tyn]) gives the type of (f ty1 .. tyn) where f :: f_ty %" is interesting because: 1. f_ty4 may have more for-alls than there are args 2. Less obviously, it may have fewer for-alls For case 2. think of: piResultTys (forall a.a) [forall b.b, Int] This really can happen, but only (I think) in situations involving undefined. For example: undefined :: forall a. a Term: undefined (forall b. b->b) hInt This term should have type (Int -> Int), but notice that there are more type args than foralls in s type.%ghc-lib-parserA key function: builds a $A or $C` as appropriate to its arguments. Applies its arguments to the constructor from left to right.&ghc-lib-parser<Retrieve the tycon heading this type, if there is one. Does not look through synonyms.&ghc-lib-parser The same as fst . splitTyConApp&ghc-lib-parser The same as snd . splitTyConApp&ghc-lib-parserAttempts to tease a type apart into a type constructor and the application of a number of arguments to that constructor. Panics if that is not possible. See also #l&ghc-lib-parserLike #l], but doesn't look through synonyms. This assumes the synonyms have already been dealt with.&ghc-lib-parsersAttempts to tease a list type apart and gives the type of the elements if successful (looks through type synonyms)& ghc-lib-parser Unwrap one layerZ of newtype on a type constructor and its arguments, using an eta-reduced version of the newtype2 if possible. This requires tys to have at least newTyConInstArity tycon elements.&ghc-lib-parser2Make a dependent forall over an Inferred variablem&ghc-lib-parser0Like mkTyCoInvForAllTy, but tv should be a tyvar&ghc-lib-parserVLike mkForAllTys, but assumes all variables are dependent and Inferred, a common case&ghc-lib-parserLike &#, but tvs should be a list of tyvar&ghc-lib-parserWLike mkForAllTys, but assumes all variables are dependent and Specified, a common case&ghc-lib-parserELike mkForAllTys, but assumes all variables are dependent and visible&ghc-lib-parserMakes a (->) type or an implicit forall type, depending on whether it is given a type variable or a term variable. This is used, for example, when producing the type of a lambda. Always uses Inferred binders.&ghc-lib-parser&% for multiple type or value arguments&ghc-lib-parserGiven a list of type-level vars and the free vars of a result kind, makes TyCoBinders, preferring anonymous binders if the variable is, in fact, not dependent. e.g. mkTyConBindersPreferAnon  k->k(k:*),(b:k),(c:k)- We want (k:*) Named, (b:k) Anon, (c:k) AnonAll non-coercion binders are visible.&ghc-lib-parserTake a ForAllTy apart, returning the list of tycovars and the result type. This always succeeds, even if it returns only an empty list. Note that the result type returned may have free variables that were bound by a forall.?1ghc-lib-parserLike splitForAllTys, but split only for tyvars. This always succeeds, even if it returns only an empty list. Note that the result type returned may have free variables that were bound by a forall.&ghc-lib-parser<Checks whether this is a proper forall (with a named binder)&ghc-lib-parserLike &/, but returns True only if it is a tyvar binder&ghc-lib-parserLike &/, but returns True only if it is a covar binder&ghc-lib-parserIs this a function or forall?&ghc-lib-parser<Take a forall type apart, or panics if that is not possible.&ghc-lib-parserDrops all ForAllTys& ghc-lib-parser\Attempts to take a forall type apart, but only if it's a proper forall, with a named binder&!ghc-lib-parserHLike splitForAllTy_maybe, but only returns Just if it is a tyvar binder.&"ghc-lib-parserHLike splitForAllTy_maybe, but only returns Just if it is a covar binder.&#ghc-lib-parserNAttempts to take a forall type apart; works with proper foralls and functions&$ghc-lib-parser$Takes a forall type apart, or panics&%ghc-lib-parserQSplit off all TyCoBinders to a type, splitting both proper foralls and functions&&ghc-lib-parserLike &% but split off only named> binders and returns TyCoVarBinders rather than TyCoBinders&*ghc-lib-parserGiven a  @ and a list of argument types, filter out any invisible (i.e.,  or  ) arguments.&+ghc-lib-parserGiven a  . and a list of argument types, filter out any  arguments.&,ghc-lib-parserGiven a  = and a list of argument types, partition the arguments into:  or  (i.e., invisible) arguments and (i.e., visible) arguments&-ghc-lib-parseruGiven a list of things paired with their visibilities, partition the things into (invisible things, visible things).&.ghc-lib-parserGiven a  + and a list of argument types to which the  5 is applied, determine each argument's visibility (, , or ).)Wrinkle: consider the following scenario: FT :: forall k. k -> k tyConArgFlags T [forall m. m -> m -> m, S, R, Q]After substituting, we get MT (forall m. m -> m -> m) :: (forall m. m -> m -> m) -> forall n. n -> n -> n'Thus, the first argument is invisible, S is visible, R is invisible again, and Q is visible.&/ghc-lib-parserGiven a  Z+ and a list of argument types to which the  Z5 is applied, determine each argument's visibility (, , or ).(Most of the time, the arguments will be , but not always. Consider f :: forall a. a -> Type. In  f Type Bool, the first argument (Type) is  and the second argument (Bool) is ?. It is precisely this sort of higher-rank situation in which &/ comes in handy, since  f Type Bool$ would be represented in Core using $@s. (See also Trac #15792).?2ghc-lib-parserGiven a function kind and a list of argument types (where each argument's kind aligns with the corresponding position in the argument kind), determine each argument's visibility (, , or ).&1ghc-lib-parserMake an anonymous binder&2ghc-lib-parser)Does this binder bind a variable that is not erased? Returns I for anonymous binders.&6ghc-lib-parser)Extract a relevant type, if there is one.&7ghc-lib-parserLike , but for binders.&8ghc-lib-parser|Split a type constructor application into its type constructor and applied types. Note that this may fail in the case of a $C# with an argument of unknown kind $C (e.g. FunTy (a :: k) Int. since the kind of a isn't of the form TYPE repL). Consequently, you may need to zonk your type before using this function.If you only need the  , consider using tcTyConAppTyCon_maybe.&:ghc-lib-parserIs this kind equivalent to *?This considers  Constraint to be distinct from *8. For a version that treats them as the same type, see $d.&=ghc-lib-parseriDoes this type classify a core (unlifted) Coercion? At either role nominal or representational (t1 ~ t2) or (t1 ~R> t2) See Note [Types for coercions, predicates, and evidence]&Fghc-lib-parser3Makes a lifted equality predicate at the given role&Gghc-lib-parserTCreates a primitive type equality predicate. Invariant: the types are not Coercions&Hghc-lib-parser=Creates a primite type equality predicate with explicit kinds&Ighc-lib-parserQCreates a primitive representational type equality predicate with explicit kinds&Jghc-lib-parser>Try to split up a coercion type into the types that it coerces&Wghc-lib-parser3Get the equality relation relevant for a pred type.&Xghc-lib-parseruExtract a well-scoped list of variables from a deterministic set of variables. The result is deterministic. NB: There used to exist varSetElemsWellScoped :: VarSet -> [Var] which took a non-deterministic set and produced a non-deterministic well-scoped list. If you care about the list being well-scoped you also most likely care about it being in deterministic order.&Yghc-lib-parseroGiven the suffix of a telescope, returns the prefix. Ex: given [(k :: j), (a :: Proxy k)], returns [(j :: *)].&Zghc-lib-parserjAdd the kind variables free in the kinds of the tyvars in the given set. Returns a non-deterministic set.&[ghc-lib-parserGiven a list of tyvars returns a deterministic FV computation that returns the given tyvars with the kind variables free in the kinds of the given tyvars.&\ghc-lib-parsersAdd the kind variables free in the kinds of the tyvars in the given set. Returns a deterministically ordered list.&]ghc-lib-parserfAdd the kind variables free in the kinds of the tyvars in the given set. Returns a deterministic set.&^ghc-lib-parser]Given a family instance TyCon and its arg types, return the corresponding family type. E.g: 1data family T a data instance T (Maybe b) = MkT b%Where the instance tycon is :RTL, so: +mkFamilyTyConApp :RTL Int = T (Maybe Int)&_ghc-lib-parserNGet the type on the LHS of a coercion induced by a type/data family instance.&`ghc-lib-parserPretty prints a  M, using the family instance in case of a representation tycon. For example: data T [a] = ...In that case we want to print T [a], where T is the family  &bghc-lib-parserReturns Just True if this type is surely lifted, Just False if it is surely unlifted, Nothing if we can't be sure (i.e., it is levity polymorphic), and panics if the kind does not have the shape TYPE r.&cghc-lib-parserSee Type#type_classificationC for what an unlifted type is. Panics on levity polymorphic types.&dghc-lib-parser3Is this a type of kind RuntimeRep? (e.g. LiftedRep)&eghc-lib-parser+Drops prefix of RuntimeRep constructors in $AVs. Useful for e.g. dropping 'LiftedRep arguments of unboxed tuple TyCon applications:LdropRuntimeRepArgs [ 'LiftedRep, 'IntRep , String, Int ] == [String, Int]&fghc-lib-parser<Extract the RuntimeRep classifier of a type. For instance, #getRuntimeRep_maybe Int = LiftedRep . Returns G if this is not possible.&gghc-lib-parser<Extract the RuntimeRep classifier of a type. For instance, #getRuntimeRep_maybe Int = LiftedRep!. Panics if this is not possible.&jghc-lib-parserSee Type#type_classification; for what an algebraic type is. Should only be applied to types;, as opposed to e.g. partially saturated type constructors&kghc-lib-parser*Check whether a type is a data family type&lghc-lib-parserComputes whether an argument (or let right hand side) should be computed strictly or lazily, based only on its type. Currently, it's just &c%. Panics on levity-polymorphic types.&mghc-lib-parser1Returns true of types that are opaque to Haskell.&nghc-lib-parserDetermine whether a type could be the type of a join point of given total arity, according to the polymorphism rule. A join point cannot be polymorphic in its return type, since given join j a b x y z = e1 in e2, the types of e1 and e2 must be the same, and a and b are not in scope for e2. (See Note [The polymorphism rule of join points] in CoreSyn.) Returns False also if the type simply doesn't have enough arguments.Note that we need to know how many arguments (type *and* value) the putative join point takes; for instance, if j :: forall a. a -> Int then j could be a binary join point returning an Int, but it could *not* be a unary join point returning a -> Int.4TODO: See Note [Excess polymorphism and join points]&qghc-lib-parser7Compare types with respect to a (presumably) non-empty ".&rghc-lib-parserQType equality on lists of types, looking through type synonyms but not newtypes.&xghc-lib-parser Compare two  s. NB: This should never see  ConstraintQ (as recognized by Kind.isConstraintKindCon) which is considered a synonym for  Ze in Core. See Note [Kind Constraint and kind Type] in Kind. See Note [nonDetCmpType nondeterminism]&{ghc-lib-parserReturns True if a type is levity polymorphic. Should be the same as (isKindLevPoly . typeKind) but much faster. Precondition: The type has kind (TYPE blah)&|ghc-lib-parserLooking past all pi-types, is the end result potentially levity polymorphic? Example: True for (forall r (a :: TYPE r). String -> a) Example: False for (forall r1 r2 (a :: TYPE r1) (b :: TYPE r2). a -> b -> Type)&~ghc-lib-parserAll type constructors occurring in the type; looking through type synonyms, but not newtypes. When it finds a Class, it returns the class TyCon.&ghc-lib-parserFind the result  Q. of a type synonym, after applying it to its arityj number of type variables Actually this function works fine on data types too, but they'd always return , so we never need to ask&ghc-lib-parserRetrieve the free variables in this type, splitting them based on whether they are used visibly or invisibly. Invisible ones come first.&ghc-lib-parsermThis variant preserves any use of TYPE in a type, effectively locally setting -fprint-explicit-runtime-reps.&ghc-lib-parserbindersghc-lib-parserfree variables of result&7ghc-lib-parserbinder to scrutinizeghc-lib-parser named caseghc-lib-parseranonymous cased P Q R T V$ Y$H$I$J$K Z [ \ ] ^ _ #l#m#n#o#p#q#r#s#t#u#v#w$$<$G$L$M$P$Q$R$U$V$Y$Z$\$]$^$_$`$a$b$c$h$k$l$q$u$v$w$x$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&d Y$H$I$J$K Z$G R P T$<$U$V%%%%#u%%%%%%%$Y$Z%%%%%%$a&&&&&#l&&& %%&8&&$\$]&&&&&&&&&& &&!&"&#&$&%$^$_&$`&&#s%%&%%%%%&f$c$b#t& & %%&_&&J&(&)&'&*&+&,&-&.&/&&&%%%%%%%%%%& &^&O&G&K&F&L&H&I&M&>&?&@&A&E&B&C&D%%%%%%%%&P&Q&R&S&T&U&V&W&1&2&4&3&5&6&7$Q$P$R& %@%%&N#w#v&&&&&&0&a&=&<&n&b&c&h&i&j&k&m&l [$h&d&e&g Q&y&z&{&|&:&9&;$u$v$x$w$k$l$q$~$&]&[&\&Z$&&%$&}&X#m#n#o&Y#r&q&r&t&u&v&w&x&s&o&p#q#p&~$ V$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ \$$$$M$L$$$$$$$$$ ]$&` ^ _ $$&$$$$$$$$$$$$$$$qNoneh&ghc-lib-parserPattern SynonymXSee Note [Pattern synonym representation] See Note [Pattern synonym signature contexts]'ghc-lib-parserThe  of the &+, giving it a unique, rooted identification*ghc-lib-parserArity of the pattern synonym&ghc-lib-parserBuild a new pattern synonym&ghc-lib-parser Should the & be presented infix?&ghc-lib-parser5Extract the type for any given labelled field of the DataCon&ghc-lib-parserGPrint the type of a pattern synonym. The foralls are printed explicitly&ghc-lib-parser&Is the pattern synonym declared infix?ghc-lib-parser:Universially-quantified type variables and required dictsghc-lib-parser;Existentially-quantified type variables and provided dictsghc-lib-parserOriginal argumentsghc-lib-parserOriginal result typeghc-lib-parserName of matcherghc-lib-parserName of builderghc-lib-parser/Names of fields for a record pattern synonym&'()*&&&&&&&&&&&&&&&'*&&&&&(&&)&&&&&None2X2&ghc-lib-parserNumeric literal type&ghc-lib-parserInteger (see Note [Integer literals])&ghc-lib-parserNatural (see Note [Natural literals])&ghc-lib-parserInt# - according to target machine&ghc-lib-parserInt64# - exactly 64 bits&ghc-lib-parserWord# - according to target machine&ghc-lib-parserWord64# - exactly 64 bits&ghc-lib-parser So-called & s are one of:xAn unboxed numeric literal or floating-point literal which is presumed to be surrounded by appropriate constructors (Int#2, etc.), so that the overall thing makes sense.#We maintain the invariant that the ? in the & constructor is actually in the (possibly target-dependent) range. The mkLit{Int,Word}*Wrap smart constructors ensure this by applying the target machine's wrapping semantics. Use these in situations where you know the wrapping semantics are correct.RThe literal derived from the label mentioned in a "foreign label" declaration (&)A &" to be used in place of values of " (i.e.  'MutVar#'#) when the the value is never used. A characterA stringThe NULL pointer&ghc-lib-parserChar#" - at least 31 bits. Create with &&ghc-lib-parserGAny numeric literal that can be internally represented with an Integer&ghc-lib-parserrA string-literal: stored and emitted UTF-8 encoded, we'll arrange to decode it at runtime. Also emitted with a '\0' terminator. Create with &&ghc-lib-parserThe NULLU pointer, the only pointer value that can be represented as a Literal. Create with &&ghc-lib-parserIA nonsense value, used when an unlifted binding is absent and has type  forall (a :: TYPE "). aV. May be lowered by code-gen to any possible value. Also see Note [Rubbish literals]&ghc-lib-parserFloat#. Create with &&ghc-lib-parserDouble#. Create with &&ghc-lib-parserA label literal. Parameters::1) The name of the symbol mentioned in the declarationX2) The size (in bytes) of the arguments the label expects. Only applicable with stdcall labels. Just x => <x>? will be appended to label name when emitting assembly.I3) Flag indicating whether the symbol references a function or a data&ghc-lib-parser<Indicate if a numeric literal type supports negative numbers?3ghc-lib-parser+Wrap a literal number according to its type&ghc-lib-parserCreate a numeric & of the given type&ghc-lib-parser>Check that a given number is in the range of a numeric literal&ghc-lib-parserCreate a numeric & of the given type&ghc-lib-parser Creates a & of type Int#&ghc-lib-parser Creates a & of type Int#]. If the argument is out of the (target-dependent) range, it is wrapped. See Note [Word Int underflow overflow]?4ghc-lib-parser Creates a & of type Int# without checking its range.&ghc-lib-parser Creates a & of type Int#, as well as a :ean flag indicating overflow. That is, if the argument is out of the (target-dependent) range the argument is wrapped and the overflow flag will be set. See Note [Word Int underflow overflow]&ghc-lib-parser Creates a & of type Word#&ghc-lib-parser Creates a & of type Word#]. If the argument is out of the (target-dependent) range, it is wrapped. See Note [Word Int underflow overflow]?5ghc-lib-parser Creates a & of type Word# without checking its range.&ghc-lib-parser Creates a & of type Word#, as well as a :ean flag indicating carry. That is, if the argument is out of the (target-dependent) range the argument is wrapped and the carry flag will be set. See Note [Word Int underflow overflow]&ghc-lib-parser Creates a & of type Int64#&ghc-lib-parser Creates a & of type Int64#8. If the argument is out of the range, it is wrapped.?6ghc-lib-parser Creates a & of type Int64# without checking its range.&ghc-lib-parser Creates a & of type Word64#&ghc-lib-parser Creates a & of type Word64#8. If the argument is out of the range, it is wrapped.?7ghc-lib-parser Creates a & of type Word64# without checking its range.&ghc-lib-parser Creates a & of type Float#&ghc-lib-parser Creates a & of type Double#&ghc-lib-parser Creates a & of type Char#&ghc-lib-parser Creates a & of type Addr#], which is appropriate for passing to e.g. some of the "error" functions in GHC.Err such as GHC.Err.runtimeError&ghc-lib-parserBTests whether the literal represents a zero of whatever type it is&ghc-lib-parser Returns the ? contained in the &', for when that makes sense, i.e. for ;, >, D,  LitInteger and  LitNatural.&ghc-lib-parser Returns the ? contained in the &', for when that makes sense, i.e. for ; and numbers.&ghc-lib-parserApply a function to the ? contained in the &', for when that makes sense, e.g. for ; and numbers. For fixed-size integral literals, the result will be wrapped in accordance with the semantics of the target type. See Note [Word Int underflow overflow]&ghc-lib-parserIndicate if the & contains an ? value, e.g. ;, >, D,  LitInteger and  LitNatural.&ghc-lib-parser0Narrow a literal number (unchecked result range)&ghc-lib-parserA nonsense literal of type  forall (a :: TYPE "). a.&ghc-lib-parseraTrue if there is absolutely no penalty to duplicating the literal. False principally of strings."Why?", you say? I'm glad you asked. Well, for one duplicating strings would blow up code sizes. Not only this, it's also unsafe.Consider a program that wants to traverse a string. One way it might do this is to first compute the Addr# pointing to the end of the string, and then, starting from the beginning, bump a pointer using eqAddr# to determine the end. For instance, s-- Given pointers to the start and end of a string, count how many zeros -- the string contains. countZeros :: Addr -> AddrN -> -> Int countZeros start end = go start 0 where go off n | off  `addrEq#`- end = n | otherwise = go (off  `plusAddr#` 1) n' where n' | isTrue (indexInt8OffAddr off 0 ==L 0#) = n + 1 | otherwise = n qConsider what happens if we considered strings to be trivial (and therefore duplicable) and emitted a call like countZeros "hello" ("hello" plusAddr# 5). The beginning and end pointers do not belong to the same string, meaning that an iteration like the above would blow up terribly. This is what happened in #12757.Ultimately the solution here is to make primitive strings a bit more structured, ensuring that the compiler can't inline in ways that will break user code. One approach to this is described in #8472.&ghc-lib-parser?True if code space does not go bad if we duplicate this literal&ghc-lib-parserFind the Haskell  Z the literal occupies&ghc-lib-parserNeeded for the Ord instance of AltCon, which in turn is needed in .G&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&G&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&None =>?HSVX&&&&&&&&&&&&&&&&&'''''''&&&&&&&&&&&&&&&&'&''''''&1&1&1None ,12=>HVv'ghc-lib-parserOverloaded Literal Value'ghc-lib-parserInteger-looking literals;'ghc-lib-parserFrac-looking literals'ghc-lib-parserString-looking literals'ghc-lib-parserHaskell Overloaded Literal'ghc-lib-parserHaskell Literal'ghc-lib-parser Character'ghc-lib-parserUnboxed character' ghc-lib-parserString'!ghc-lib-parser Packed bytes'"ghc-lib-parserGenuinely an Int; arises from  TcGenDeriv, and from TRANSLATION'#ghc-lib-parserliteral Int#'$ghc-lib-parserliteral Word#'%ghc-lib-parserliteral Int64#'&ghc-lib-parserliteral Word64#''ghc-lib-parserbGenuinely an integer; arises only from TRANSLATION (overloaded literals are done with HsOverLit)'(ghc-lib-parserbGenuinely a rational; arises only from TRANSLATION (overloaded literals are done with HsOverLit)')ghc-lib-parser Unboxed Float'*ghc-lib-parserUnboxed Double'.ghc-lib-parserfConvert a literal from one index type to another, updating the annotations according to the relevant 5 instance'0ghc-lib-parserXpmPprHsLit pretty prints literals and is used when pretty printing pattern match warnings. All are printed the same (i.e., without hashes if they are primitive and not wrapped in constructors if they are boxed). This happens mainly for too reasons: * We do not want to expose their internal representation * The warnings become too messy'1ghc-lib-parser'1 p l returns I if a literal l- needs to be parenthesized under precedence p.'2ghc-lib-parser'2 p ol returns I if an overloaded literal ol, needs to be parenthesized under precedence p.$''''''''''''''''+'*')'('''&'%'$'#'"'!' ''','-'.'/'0'1'2$''+'*')'('''&'%'$'#'"'!' ''''''''''''''''','-'.'/'0'1'2ENone>SX`͍T!ghc-lib-parserIf it is the case that c :: (t1 ~ t2)i.e. the kind of c relates t1 and t2, then coercionKind c = Pair t1 t2.!ghc-lib-parserliftCoSubst role lc ty produces a coercion (at role role) that coerces between  lc_left(ty) and  lc_right(ty) , where lc_left] is a substitution mapping type variables to the left-hand types of the mapped coercions in lc, and similar for lc_right.!ghc-lib-parserZMakes a coercion type from two types: the types whose equality is proven by the relevant  X!ghc-lib-parsermSlowly checks if the coercion is reflexive. Don't call this in a loop, as it walks over the entire coercion.!ghc-lib-parserTests if this coercion is obviously reflexive. Guaranteed to work very quickly. Sometimes a coercion can be reflexive, but not obviously so. c.f. !!ghc-lib-parsergTests if this coercion is obviously a generalized reflexive coercion. Guaranteed to work very quickly.!ghc-lib-parser$Make a "coercion between coercions".!ghc-lib-parserGiven co :: (a :: k) ~ (b :: k') produce  co' :: k ~ k'.!ghc-lib-parser!Make a nominal reflexive coercion!ghc-lib-parser%Make a generalized reflexive coercion!ghc-lib-parserInstantiates a  X.!ghc-lib-parser Create a new  X by composing the two given  Xs transitively. (co1 ; co2)!ghc-lib-parser(Create a symmetric version of the given  X_ that asserts equality between the same types but in the other "direction", so a kind of t1 ~ t2 becomes the kind t2 ~ t1.!ghc-lib-parser6Make a universal coercion between two arbitrary types.!ghc-lib-parserjManufacture an unsafe coercion from thin air. Currently (May 14) this is used only to implement the  unsafeCoerce#C primitive. Optimise by pushing down through type constructors.!ghc-lib-parser~Make a phantom coercion between two types. The coercion passed in must be a nominal coercion between the kinds of the types.!ghc-lib-parserBuild a function  X from two other  Xs. That is, given  co1 :: a ~ b and  co2 :: x ~ y produce co :: (a -> x) ~ (b -> y).!ghc-lib-parserMake a Coercion from a tycovar, a kind coercion, and a body coercion. The kind of the tycovar should be the left-hand kind of the kind coercion. See Note [Unused coercion variable in ForAllCo]!ghc-lib-parserApply a  X to another  X. The second coercion must be Nominal, unless the first is Phantom. If the first is Phantom, then the second can be either Phantom or Nominal.!ghc-lib-parserApply a type constructor to a list of coercions. It is the caller's responsibility to get the roles correct on argument coercions.!ghc-lib-parserMake a reflexive coercion'?ghc-lib-parser9The result of stepping in a normalisation function. See '.'@ghc-lib-parserNothing more to do'Aghc-lib-parser2Utter failure. The outer function should fail too.'Bghc-lib-parserVWe stepped, yielding new bits; ^ ev is evidence; Usually a co :: old type ~ new type'Cghc-lib-parserDA function to check if we can reduce a type by one step. Used with '.'Mghc-lib-parserThis breaks a  X with type T A B C ~ T D E F into a list of  X s of kinds A ~ D, B ~ E and E ~ F. Hence: CdecomposeCo 3 c [r1, r2, r3] = [nth r1 0 c, nth r2 1 c, nth r3 2 c]'Oghc-lib-parser2Attempts to obtain the type variable underlying a  X'Pghc-lib-parserAttempts to tease a coercion apart into a type constructor and the application of a number of coercion arguments to that constructor'Qghc-lib-parser-Attempt to take a coercion application apart.'Tghc-lib-parserLike 'S(, but only returns Just for tyvar binder'Ughc-lib-parserLike 'S(, but only returns Just for covar binder?8ghc-lib-parserGiven a coercion &co1 :: (a :: TYPE r1) ~ (b :: TYPE r2), produce a coercion rep_co :: r1 ~ r2.?9ghc-lib-parser\Tests if this MCoercion is obviously generalized reflexive Guaranteed to work very quickly.'Zghc-lib-parserpReturns the type coerced if this coercion is a generalized reflexive coercion. Guaranteed to work very quickly.'[ghc-lib-parserReturns the type coerced if this coercion is reflexive. Guaranteed to work very quickly. Sometimes a coercion can be reflexive, but not obviously so. c.f. '\'\ghc-lib-parserExtracts the coerced type from a reflexive coercion. This potentially walks over the entire coercion, so avoid doing this in a loop.']ghc-lib-parser*Make a representational reflexive coercion'^ghc-lib-parserApplies multiple  X s to another  X , from left to right. See also !.?:ghc-lib-parserLike !g, but the inner coercion shouldn't be an obvious reflexive coercion. For example, it is guaranteed in '_M. The kind of the tycovar should be the left-hand kind of the kind coercion.'_ghc-lib-parserMake nested ForAllCos'`ghc-lib-parserwMake a Coercion quantified over a type/coercion variable; the variable has the same type in both sides of the coercion?;ghc-lib-parserLike '`g, but the inner coercion shouldn't be an obvious reflexive coercion. For example, it is guaranteed in '`.'bghc-lib-parserExtract a covar, if possible. This check is dirty. Be ashamed of yourself. (It's dirty because it cares about the structure of a coercion, which is morally reprehensible.)'gghc-lib-parser[Return the left-hand type of the axiom, when the axiom is instantiated at the types given.'hghc-lib-parser5Instantiate the left-hand side of an unbranched axiom'ighc-lib-parser$Make a coercion from a coercion hole'jghc-lib-parser'Compose two MCoercions via transitivity'kghc-lib-parserIf you're about to call mkNthCo r n co, then r should be whatever nthCoRole n co returns.'lghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2 , produces co' :: ty ~r (ty |> co)'mghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2 , produces co' :: (ty |> co) ~r ty'nghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2, co2:: ty ~r ty', produces @co' :: (ty |> co) ~r ty' It is not only a utility function, but it saves allocation when co is a GRefl coercion.'oghc-lib-parserGiven ty :: k1,  co :: k1 ~ k2, co2:: ty' ~r ty, produces @co' :: ty' ~r (ty |> co) It is not only a utility function, but it saves allocation when co is a GRefl coercion.?<ghc-lib-parserIChanges a role, but only a downgrade. See Note [Role twiddling functions]'pghc-lib-parserLike ?<R, but panics if the change isn't a downgrade. See Note [Role twiddling functions]'qghc-lib-parserwIf the EqRel is ReprEq, makes a SubCo; otherwise, does nothing. Note that the input coercion should always be nominal.'rghc-lib-parserTConverts a coercion to be nominal, if possible. See Note [Role twiddling functions]'wghc-lib-parserylike mkKindCo, but aggressively & recursively optimizes to avoid using a KindCo constructor. The output role is nominal.?=ghc-lib-parsersay g = promoteCoercion h. Then, instCoercion g w yields Just g' , where g' = promoteCoercion (h w)%. fails if this is not possible, if gz coerces between a forall and an -> or if second parameter has a representational role and can't be used with an InstCo.?>ghc-lib-parserRepeated use of ?='xghc-lib-parserICreates a new coercion with both of its types casted by different casts  castCoercionKind g r t1 t2 h1 h2, where  g :: t1 ~r t2 , has type (t1 |> h1) ~r (t2 |> h2). h1 and h2 must be nominal.'yghc-lib-parserICreates a new coercion with both of its types casted by different casts castCoercionKind g h1 h2, where  g :: t1 ~r t2 , has type (t1 |> h1) ~r (t2 |> h2). h1 and h2 must be nominal. It calls coercionKindRole#, so it's quite inefficient (which I stands for) Use castCoercionKind instead if t1, t2, and r are known beforehand.'{ghc-lib-parserMake a forall  XR, where both types related by the coercion are quantified over the same variable.'}ghc-lib-parserIf co :: T ts ~ rep_ty then: +instNewTyCon_maybe T ts = Just (rep_ty, co)-Checks for a newtype, and for being saturated'ghc-lib-parserTry one stepper and then try the next, if the first doesn't make progress. So if it returns NS_Done, it means that both steppers are satisfied'ghc-lib-parserA 'Cd that unwraps newtypes, careful not to fall into a loop. If it would fall into a loop, it produces 'A.'ghc-lib-parser^A general function for normalising the top-level of a type. It continues to use the provided 'Ci until that function fails, and then this function returns. The roles of the coercions produced by the 'CD must all be the same, which is the role returned from the call to '.Typically ev is Coercion.jIf topNormaliseTypeX step plus ty = Just (ev, ty') then ty ~ev1~ t1 ~ev2~ t2 ... ~evn~ ty' and ev = ev1 plus ev2 plus ... plusC evn If it returns Nothing then no newtype unwrapping could happen'ghc-lib-parser$Sometimes we want to look through a newtype< and get its associated coercion. This function strips off newtype1 layers enough to reveal something that isn't a newtype&. Specifically, here's the invariant: 5topNormaliseNewType_maybe rec_nts ty = Just (co, ty') then (a) co : ty0 ~ ty'". (b) ty' is not a newtype.The function returns Nothing for non-newtypes, or unsaturated applications?This function does *not* look through type families, because it has no access to the type family environment. If you do have that at hand, consider to use topNormaliseType_maybe, which should be a drop-in replacement for topNormaliseNewType_maybe If topNormliseNewType_maybe ty = Just (co, ty'), then co : ty ~R ty''ghc-lib-parserSyntactic equality of coercions'ghc-lib-parser Compare two  Xs, with respect to an RnEnv2'ghc-lib-parser,Extend a lifting context with a new mapping.'ghc-lib-parserHExtend a lifting context with a new mapping, and extend the in-scope set??ghc-lib-parser_Extend a lifting context with existential-variable bindings. See Note [extendLiftingContextEx]'ghc-lib-parser+Erase the environments in a lifting context'ghc-lib-parserLike $ , but works on a lifting context?@ghc-lib-parserjThe "lifting" operation which substitutes coercions for type variables in a type to produce a coercion.For the inverse operation, see  liftCoMatch'ghc-lib-parser,Is a var in the domain of a lifting context?'ghc-lib-parser"Apply "sym" to all coercions in a '='ghc-lib-parser;Extract the underlying substitution from the LiftingContext'ghc-lib-parserGet the " from a !'ghc-lib-parserApply ! to multiple  Xs'ghc-lib-parserGet a coercion's kind and role.'ghc-lib-parser"Retrieve the role from a coercion.'ghc-lib-parser Assuming that two types are the same, ignoring coercions, find a nominal coercion between the types. This is useful when optimizing transitivity over coercion applications, where splitting two AppCos might yield different kinds. See Note [EtaAppCo] in OptCoercion.!ghc-lib-parser!role of the created coercion, "r"ghc-lib-parser:: phi1 ~N phi2ghc-lib-parser g1 :: phi1ghc-lib-parser g2 :: phi2ghc-lib-parser :: g1 ~r g2!ghc-lib-parserrole of the built coercion, "r"ghc-lib-parsert1 :: k1ghc-lib-parsert2 :: k2ghc-lib-parser :: t1 ~r t2!ghc-lib-parser :: t1 ~r t2ghc-lib-parser%:: s1 ~N s2, where s1 :: k1, s2 :: k2ghc-lib-parser:: t1 s1 ~r t2 s2?<ghc-lib-parser desired roleghc-lib-parser current role?=ghc-lib-parsermust be nominal'ghc-lib-parser original LCghc-lib-parsernew variable to map...ghc-lib-parser...to this lifted version'ghc-lib-parser Original LCghc-lib-parsernew variable to map...ghc-lib-parserto this coercion??ghc-lib-parseroriginal lifting contextghc-lib-parserex. var / value pairs O S$"$# W X !6!7!8!9!'>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$!$%$&$i$j$m$n$z$|$}$$$$$$$$$$$$$$$$'='?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''''''''''''''''''''''''''''' X O$&$% S$"$#$! W$$$$$i$j !6!7!8!9'v'V'W!!!!'!''!!']!!'a'c'd'e'f'g'h'{'z'|!!'j!'k!!!'^!!!'_'`!!'i!!!!'p'q!'l'm'n'o!'x'y'X'}'C'?'@'A'B''~''''M'N!'O'P'Q'R'S'T'U'u's't'r !!'['Z!'\'Y'D'F'E'b$m$n$$|$}$z$$$$$$$$$$$$!''''''''''''''=!'>'''''''''!$$'H'K'J'I'L'G$$'w''None4X$'ghc-lib-parsertcMatchTy t1 t2) produces a substitution (over fvs(t1)) s such that s(t1) equals t2r. The returned substitution might bind coercion variables, if the variable is an argument to a GADT constructor.Precondition: typeKind ty1 #r typeKind ty2We don't pass in a set of "template variables" to be bound by the match, because tcMatchTy (and similar functions) are always used on top-level types, so we can bind any of the free variables of the LHS. See also Note [tcMatchTy vs tcMatchTyKi]'ghc-lib-parserLike 'x, but allows the kinds of the types to differ, and thus matches them as well. See also Note [tcMatchTy vs tcMatchTyKi]'ghc-lib-parserThis is similar to 'F, but extends a substitution See also Note [tcMatchTy vs tcMatchTyKi]'ghc-lib-parserLike 'D but over a list of types. See also Note [tcMatchTy vs tcMatchTyKi]'ghc-lib-parserLike 'D but over a list of types. See also Note [tcMatchTy vs tcMatchTyKi]'ghc-lib-parserLike 'H, but extending a substitution See also Note [tcMatchTy vs tcMatchTyKi]'ghc-lib-parserLike 'H, but extending a substitution See also Note [tcMatchTy vs tcMatchTyKi]?Aghc-lib-parser=Same as tc_match_tys_x, but starts with an empty substitution?Bghc-lib-parser Worker for ' and ''ghc-lib-parserUThis one is called from the expression matcher, which already has a MatchEnv in hand'ghc-lib-parserGiven a list of pairs of types, are any two members of a pair surely apart, even after arbitrary type function evaluation and substitution?'ghc-lib-parserkSimple unification of two types; all type variables are bindable Precondition: the kinds are already equal'ghc-lib-parserLike ', but also unifies the kinds'ghc-lib-parserUnify two types, treating type family applications as possibly unifying with anything and looking through injective type family applications. Precondition: kinds are the same'ghc-lib-parserLike ' but also unifies the kinds'ghc-lib-parsertcUnifyTysFG bind_tv tys1 tys2 attepts to find a substitution s% (whose domain elements all respond ' to bind_tv ) such that s(tys1) and that of s(tys2) are equal, as witnessed by the returned Coercions. This version requires that the kinds of the types are the same, if you unify left-to-right.?Cghc-lib-parserkThis function is actually the one to call the unifier -- a little too general for outside clients, though.?Dghc-lib-parser(Converts any SurelyApart to a MaybeApart'ghc-lib-parser' is sort of inverse to !. In particular, if  liftCoMatch vars ty co == Just s, then liftCoSubst s ty == co , where == there means that the result of ! has the same type as the original co; but may be different under the hood. That is, it matches a type against a coercion of the same "shape", and returns a lifting substitution which could have been used to produce the given coercion from the given type. Note that this function is incomplete -- it might return Nothing when there does indeed exist a possible lifting context.HThis function is incomplete in that it doesn't respect the equality in #rV. That is, it's possible that this will succeed for t1 and fail for t2, even when t1 #r t2. That's because it depends on there being a very similar structure between the type and the coercion. This incompleteness shouldn't be all that surprising, especially because it depends on the structure of the coercion, which is a silly thing to do.The lifting context produced doesn't have to be exacting in the roles of the mappings. This is because any use of the lifting context will also require a desired role. Thus, this algorithm prefers mapping to nominal coercions where it can do so.?Eghc-lib-parser?E does all the actual work for '. 'ghc-lib-parserSubstitution to extendghc-lib-parserTemplateghc-lib-parserTarget'ghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserJOne-shot; in principle the template variables could be free in the target'ghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot substitution'ghc-lib-parserSubstitution to extendghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot substitution'ghc-lib-parserSubstitution to extendghc-lib-parserTemplateghc-lib-parserTargetghc-lib-parserOne-shot substitution?Aghc-lib-parser match kinds??Bghc-lib-parser match kinds?'ghc-lib-parsertemplate variablesghc-lib-parsertype substitution to extendghc-lib-parserTemplateghc-lib-parserTarget'ghc-lib-parserTrue  =" do two-way unification; False  =: do one-way matching. See end of sec 5.2 from the paper'ghc-lib-parser_A regular one-shot (idempotent) substitution that unifies the erased types. See comments for '?Cghc-lib-parserTrue  = unify; False  = matchghc-lib-parserTrue  = doing an injectivity checkghc-lib-parserTrue  = treat the kinds as wellghc-lib-parsersubstitution to extend?Eghc-lib-parserambient helpful infoghc-lib-parserincoming substghc-lib-parserty, type to matchghc-lib-parserco, coercion to match againstghc-lib-parser/:: kind of L type of substed ty ~N L kind of coghc-lib-parser/:: kind of R type of substed ty ~N R kind of co''''''''''''''''''''''''''''''''''''''''''''''''''''''wNone2? ghc-lib-parserAn  T is a tyvar/type pair representing an equality made in rejigging a GADT constructor ghc-lib-parserQData Constructor Representation See Note [Data constructor workers and wrappers] ghc-lib-parserA data constructorl : l, l,l ghc-lib-parserThe "full signature" of the   returns, in order:1) The result of '2) The result of  ~3) The non-dependent GADT equalities. Dependent GADT equalities are implied by coercion variables in return value (2).Q4) The other constraints of the data constructor type, excluding GADT equalities&5) The original argument types to the  ? (i.e. before any change of the representation of the type)#6) The original result type of the  ghc-lib-parserThe "stupid theta" of the   , such as  data Eq a in: data Eq a => T a = ... ghc-lib-parserReturns just the instantiated value argument types of a  , (excluding dictionary args) ghc-lib-parser-The labels for the fields of this particular  ghc-lib-parser*Source-level arity of the data constructor ghc-lib-parserNs for the type variables of the constructor, in the order the user wrote them ghc-lib-parserGThe type variables of the constructor, in the order the user wrote them ghc-lib-parsertThe existentially-quantified type/coercion variables of the constructor including dependent (kind-) GADT equalities ghc-lib-parserCThe type constructor that we are building via this data constructor ghc-lib-parserThe  of the  +, giving it a unique, rooted identification'ghc-lib-parserSource Unpackedness$What unpackedness the user requested'ghc-lib-parser{- UNPACK  -} specified'ghc-lib-parser{- NOUNPACK  -} specified'ghc-lib-parserno unpack pragma'ghc-lib-parserSource Strictness)What strictness annotation the user wrote'ghc-lib-parser Lazy, ie '~''ghc-lib-parser Strict, ie !'ghc-lib-parserno strictness annotation'ghc-lib-parserHaskell Implementation BangiBangs of data constructor arguments as generated by the compiler after consulting HsSrcBang, flags, etc.'ghc-lib-parser(Lazy field, or one with an unlifted type'ghc-lib-parserStrict but not unpacked field'ghc-lib-parser;Strict and unpacked field co :: arg-ty ~ product-ty HsBang'ghc-lib-parserHaskell Source BangOBangs on data constructor arguments as the user wrote them in the source code.(HsSrcBang _ SrcUnpack SrcLazy) and #(HsSrcBang _ SrcUnpack NoSrcStrict)c (without StrictData) makes no sense, we emit a warning (in checkValidDataCon) and treat it like !(HsSrcBang _ NoSrcUnpack SrcLazy)?Fghc-lib-parserTag, used for ordering  s'ghc-lib-parserMake a non-dependent  'ghc-lib-parserSubstitute in an  {. Precondition: if the LHS of the EqSpec is mapped in the substitution, it is mapped to a type variable, not a full type.'ghc-lib-parserFilter out any s mentioned in an  .'ghc-lib-parserCompare strictness annotations'ghc-lib-parserBuild a new data constructor'ghc-lib-parserThe tag used for ordering  s'ghc-lib-parserThe original type constructor used in the definition of this data constructor. In case of a data family instance, that will be the family type constructor.'ghc-lib-parserwThe representation type of the data constructor, i.e. the sort type that will represent values of this type at runtime'ghc-lib-parser Should the   be presented infix?'ghc-lib-parser<The universally-quantified type variables of the constructor'ghc-lib-parserMBoth the universal and existential type/coercion variables of the constructor'ghc-lib-parserEqualities derived from the result type of the data constructor, as written by the programmer in any GADT declaration. This includes *all* GADT-like equalities, including those written in by hand by the programmer.?Gghc-lib-parserDependent (kind-level) equalities in a constructor. There are extracted from the existential variables. See Note [Existential coercion variables]'ghc-lib-parserUThe *full* constraints on the constructor type, including dependent GADT equalities.'ghc-lib-parserGet the Id of the   worker: a function that is the "actual" constructor and has no top level binding in the program. The type may be different from the obvious one written in the source program. Panics if there is no such  for this  'ghc-lib-parserGet the Id of the  r wrapper: a function that wraps the "actual" constructor so it has the type visible in the source program: c.f. '. Returns Nothing if there is no wrapper, which occurs for an algebraic data constructor and also for a newtype (whose constructor is inlined compulsorily)'ghc-lib-parserfReturns an Id which looks like the Haskell-source constructor by using the wrapper if it exists (see '') and failing over to the worker (see ')'ghc-lib-parser Find all the Vs implicitly brought into scope by the data constructor. Currently, the union of the ' and the ''ghc-lib-parser5Extract the type for any given labelled field of the  'ghc-lib-parser@Extract the label and type for any given labelled field of the   , or return G# if the field does not belong to it'ghc-lib-parserStrictness/unpack annotations, from user; or, for imported DataCons, from the interface file The list is in one-to-one correspondence with the arity of the  'ghc-lib-parser)Gives the number of actual fields in the representation of the data constructor. This may be more than appear in the source code; the extra ones are the existentially quantified dictionaries'ghc-lib-parser5Return whether there are any argument types for this  2s original source type See Note [DataCon arities]'ghc-lib-parser5Return whether there are any argument types for this  9s runtime representation type See Note [DataCon arities]'ghc-lib-parserRGive the demands on the arguments of a Core constructor application (Con dc args)(ghc-lib-parserThe "signature" of the   returns, in order:1) The result of ', 2) All the  Ps relating to the   (coercion, dictionary, implicit parameter - whatever), including dependent GADT equalities. Dependent GADT equalities are *also* listed in return value (1), so be careful!(3) The type arguments to the constructor4) The original result type of the  (ghc-lib-parserInstantiate the universal tyvars of a data con, returning ( instantiated existentials , instantiated constraints including dependent GADT equalities which are *also* listed in the instantiated existentials , instantiated args)(ghc-lib-parserIThe user-declared type of the data constructor in the nice-to-read form:  T :: forall a b. a -> b -> T [a] rather than: 3T :: forall a c. forall b. (c~[a]) => a -> b -> T cNThe type variables are quantified in the order that the user wrote them. See )Note [DataCon user type variable binders].tNB: If the constructor is part of a data instance, the result type mentions the family tycon, not the internal one.(ghc-lib-parserGFinds the instantiated types of the arguments required to construct a   representation NB: these INCLUDE any dictionary args but EXCLUDE the data-declaration context, which is discarded It's all post-flattening etc; this is a representation type(ghc-lib-parser~Returns the argument types of the wrapper, excluding all dictionary arguments and without substituting for any type variables(ghc-lib-parserReturns the arg types of the worker, including *all* non-dependent evidence, after any flattening has been done and without substituting for any type variables( ghc-lib-parser The string package:module.namet identifying a constructor, which is attached to its info table and used by the GHCi debugger and the heap profiler( ghc-lib-parserVanilla  8s are those that are nice boring Haskell 98 constructors( ghc-lib-parsereShould this DataCon be allowed in a type even without -XDataKinds? Currently, only Lifted & Unlifted(ghc-lib-parserWere the type variables of the data con written in a different order than the regular order (universal tyvars followed by existential tyvars)?This is not a cheap test, so we minimize its use in GHC as much as possible. Currently, its only call site in the GHC codebase is in  mkDataConRep in MkId , and so (C is only called at most once during a data constructor's lifetime.(ghc-lib-parserHExtract the type constructor, type argument, data constructor and it's representation4 argument types from a type if it is a product type.Precisely, we return Just for any type that is all of:$Concrete (i.e. constructors visible)Single-constructorNot existentially quantifiedWhether the type is a data type or a newtype'ghc-lib-parser"Is the constructor declared infix?ghc-lib-parser#TyConRepName for the promoted TyConghc-lib-parser(Strictness/unpack annotations, from userghc-lib-parserEField labels for the constructor, if it is a record, otherwise emptyghc-lib-parser Universals.ghc-lib-parser Existentials.ghc-lib-parser User-written /s. These must be Inferred/Specified. See Note [TyVarBinders in DataCons]ghc-lib-parserGADT equalities ghc-lib-parser0Theta-type occurring before the arguments proper ghc-lib-parserOriginal argument types ghc-lib-parserOriginal result type ghc-lib-parserSee comments on " ghc-lib-parserRepresentation type constructorghc-lib-parserConstructor tagghc-lib-parser:The "stupid theta", context of the data declaration e.g. data Eq a => T a ...ghc-lib-parser Worker Idghc-lib-parserRepresentation(ghc-lib-parserA datacon with no existentials or equality constraints However, it can have a dcTheta (notably it can be a class dictionary, with superclasses)ghc-lib-parserInstantiated at these types(ghc-lib-parserA product type, perhaps(ghc-lib-parser!Kind variables and type variablesghc-lib-parser Stupid thetaghc-lib-parserTrue  = was declared in GADT syntax(ghc-lib-parserresult kinde       ''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((( ( ( ( ( (((((((e '''''''''''''''''''''''' '''''''     '(( '(( ( '' '(' ' '' ((( ( ''' '''''''(((''( ( ( ((('''''( (None>r (3ghc-lib-parserGets rid of the stuff that prevents us from understanding the runtime representation of a type. Including: 1. Casts 2. Newtypes 3. Foralls 4. Synonyms But not type/data families, because we don't have the envs to hand.(6ghc-lib-parser True if the type has zero width.(7ghc-lib-parser^Given the arguments of a sum type constructor application, return the unboxed sum rep type.E.g.( Int | Maybe Int | ( Int, Float ) #)~We call `ubxSumRepType [ [IntRep], [LiftedRep], [IntRep, FloatRep] ]`, which returns [WordSlot, PtrSlot, WordSlot, FloatSlot]wINVARIANT: Result slots are sorted (via Ord SlotTy), except that at the head of the list we have the slot for the tag.?Hghc-lib-parserAReturns the bigger type if one fits into the other. (commutative)(<ghc-lib-parser,Discovers the primitive representation of a  Z. Returns a list of "m: it's a list because of the possibility of no runtime representation (void) or multiple (unboxed tuple/sum)(=ghc-lib-parserLike (<*, but assumes that there is precisely one "5 output; an empty list of PrimReps becomes a VoidRep(>ghc-lib-parser%Find the runtime representation of a  W. Defined here to avoid module loops. Returns a list of the register shapes necessary.(?ghc-lib-parserLike (>3, but assumed that there is precisely zero or one " output?Ighc-lib-parserTake a kind (of shape TYPE rr) and produce the "#s of values of types of this kind.(@ghc-lib-parser7Take a type of kind RuntimeRep and extract the list of " that it encodes.(Aghc-lib-parserConvert a PrimRep back to a Type. Used only in the unariser to give types to fresh Ids. Really, only the type's representation matters.)""""""""""""""""()(+(*(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A)(/(0(1(3(6(<(=(@(2""""""""""""""""(A(4(5(>(?(7(8(9()(+(*(,(-(.(;(:None"#=?^(Tghc-lib-parserAbstract counting of usages(Ughc-lib-parserDomain for genuine usage(Vghc-lib-parser?Call demand for absence. Used only for values of function type(Wghc-lib-parser]Product. Used only for values of product type See Note [Don't optimise UProd(Used) to Used]@Invariant: Not all components are Abs (in that case, use UHead)(Xghc-lib-parserMay be used but its sub-components are definitely *not* used. For product types, UHead is equivalent to U(AAA); see mkUProd./UHead is needed only to express the demand of  and 'case'? which are polymorphic; i.e. the scrutinised value is of type aD rather than a product type. That's why we can't use UProd [A,A,A]GSince (UCall _ Abs) is ill-typed, UHead doesn't make sense for lambdas(Yghc-lib-parserEMay be used and its sub-components may be used. (top of the lattice)?Jghc-lib-parser.How are exceptions handled for strict demands??Kghc-lib-parserVanilla case, ordinary strictness?Lghc-lib-parser Str ExnStr d means be strict like d but then degrade the ?M info ?N to ?O. e.g. the first argument of catch has this strictness.?Pghc-lib-parserStrictness demand.?Qghc-lib-parserLazy (top of the lattice)?Rghc-lib-parserStrict?Sghc-lib-parser"Strictness of a function argument.(Zghc-lib-parserVanilla strictness domain?Tghc-lib-parserJHyper-strict (bottom of the lattice). See Note [HyperStr and Use demands]?Ughc-lib-parser2Call demand Used only for values of function type?Vghc-lib-parserProduct Used only for values of product type Invariant: not all components are HyperStr (use HyperStr) not all components are Lazy (use HeadStr)?Wghc-lib-parserqHead-Strict A polymorphic demand: used for values of all types, including a type variable(ghc-lib-parserBRemove all 1* information (but not C1 information) from the demand(ghc-lib-parserSRemove all 1* information (but not C1 information) from the strictness signaturez(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((z(Z(U(V(W(X(Y(T(R(G(S([(\(e(b(c(a(t((p(q(r(s(j(k(n(o(l(m(u(v(w(](|((`(^(I(J(((((((((H(((K((((M(L((((((((((((((E(F(((((((((((((y(z(((d(h(i({((}(((((((f(g(((((((~(N(O(P(Q(_(x(((((((((xNone ghc-lib-parserA constructor-like thing(ghc-lib-parserNumber of arguments(ghc-lib-parser"Names of fields used for selectors(ghc-lib-parserReturns just the instantiated value argument types of a  , (excluding dictionary args)(ghc-lib-parser0Existentially quantified type/coercion variables(ghc-lib-parserThe "stupid theta" of the   , such as  data Eq a in: data Eq a => T a = ...It is empty for  $ as they do not allow such contexts.(ghc-lib-parser Returns the  of the wrapper. This is also known as the builder in some contexts. The value is Nothing only in the case of unidirectional pattern synonyms.(ghc-lib-parser7Returns the strictness information for each constructor(ghc-lib-parser%Returns the type of the whole pattern(ghc-lib-parserThe "full signature" of the   returns, in order:,1) The universally quantified type variables72) The existentially quantified type/coercion variables3) The equality specification;4) The provided theta (the constraints provided by a match)<5) The required theta (the constraints required for a match)]6) The original argument types (i.e. before any change of the representation of the type)7) The original result type(ghc-lib-parser5Extract the type for any given labelled field of the  (ghc-lib-parser-The ConLikes that have *all* the given fields (((((((((((( (((( ((((((((None$2>(ghc-lib-parserA clone of the )x0 type but allowing annotation at every tree node(ghc-lib-parserA clone of the )0 type but allowing annotation at every tree node(ghc-lib-parserA clone of the )0 type but allowing annotation at every tree node) ghc-lib-parser;Annotated core: allows annotation at every node in the tree)ghc-lib-parser Binders are tagged with a t)ghc-lib-parser$Case alternatives where binders are )s)ghc-lib-parser!Binding groups where binders are )s)ghc-lib-parser'Argument expressions where binders are )s)ghc-lib-parserExpressions where binders are )s)ghc-lib-parserlThe common case for the type of binders and variables when we are manipulating the Core language within GHC)ghc-lib-parser)& says when unfolding should take place)%ghc-lib-parser Records the  unfolding of an identifier, which is approximately the form the identifier would have if we substituted its definition in for the identifier. This type should be treated as abstract everywhere except in  CoreUnfold)&ghc-lib-parser+We have no information about the unfolding.)'ghc-lib-parser:We have no information about the unfolding, because this  came from an hi-bootT file. See Note [Inlining and hs-boot files] in ToIface for what this is used for.)(ghc-lib-parser%It ain't one of these constructors.  OtherCon xsd also indicates that something has been evaluated and hence there's no point in re-evaluating it.  OtherCon []N is used even for non-data-type values to indicated evaluated-ness. Notably: 1data C = C !(Int -> Int) case x of { C f -> ... }Here, f gets an  OtherCon [] unfolding.)*ghc-lib-parser;An unfolding with redundant cached information. Parameters:uf_tmpl: Template used to perform unfolding; NB: Occurrence info is guaranteed correct: see Note [OccInfo in unfoldings and rules]'uf_is_top: Is this a top level binding? uf_is_value:  exprIsHNF* template (cached); it is ok to discard a  on this variableuf_is_work_free: Does this waste only a little work if we expand it inside an inlining? Basically this is a cached version of exprIsWorkFree!uf_guidance: Tells us about the size of the unfolding template)9ghc-lib-parserA )9 is:]"Local" if the function it is a rule for is defined in the same module as the rule itself.R"Orphan" if nothing on the LHS is defined in the same module as the rule itself);ghc-lib-parserBuilt-in rules are used for constant folding and suchlike. They have no free variables. A built-in rule is always visible (there is no such thing as an orphan built-in rule.))<ghc-lib-parser1Name of the rule, for communication with the user)=ghc-lib-parserWhen the rule is active)>ghc-lib-parser Name of the  at the head of this rule)?ghc-lib-parser7Name at the head of each argument to the left hand side)@ghc-lib-parserVariables quantified over)Aghc-lib-parserLeft hand side arguments)Bghc-lib-parsernRight hand side of the rule Occurrence info is guaranteed correct See Note [OccInfo in unfoldings and rules])Cghc-lib-parserTrue  =U this rule is auto-generated (notably by Specialise or SpecConstr) False  =o generated at the user's behest See Note [Trimming auto-rules] in TidyPgm for the sole purpose of this field.)Dghc-lib-parser H the rule was defined in, used to test if we should see an orphan rule.)Eghc-lib-parser%Whether or not the rule is an orphan.)Fghc-lib-parserTrueg iff the fn at the head of the rule is defined in the same module as the rule and is not an implicit [ (like a record selector, class operation, or data constructor). This is different from )Ex, where a rule can avoid being an orphan if *any* Name in LHS of the rule was defined in the same module as the rule.)Gghc-lib-parserNumber of arguments that )H1 consumes, if it fires, including type arguments)Hghc-lib-parsereThis function does the rewrite. It given too many arguments, it simply discards them; the returned ) is just the rewrite of )> applied to the first )G args)Ighc-lib-parser?A full rule environment which we can apply rules from. Like a )M, but it also includes the set of visible orphans we use to filter out orphan rules which are not visible (even though we can see them...))Mghc-lib-parserGathers a collection of )9s. Maps (the name of) an  to its rules)Nghc-lib-parserAIs this instance an orphan? If it is not an orphan, contains an ? witnessing the instance's non-orphanhood. See Note [Orphans])Qghc-lib-parser_Governs the kind of expression that the tick gets placed on when annotating for example using mkTick. If we find that we want to put a tickish on an expression ruled out here, we try to float it inwards until we find a suitable expression.)Rghc-lib-parserPPlace ticks exactly on run-time expressions. We can still move the tick through pure compile-time constructs such as other ticks, casts or type lambdas. This is the most restrictive placement rule for ticks, as all tickishs have in common that they want to track runtime processes. The only legal placement rule for counting ticks.)Sghc-lib-parserAs  PlaceRuntime, but we float the tick through all lambdas. This makes sense where there is little difference between annotating the lambda and annotating the lambda's code.)Tghc-lib-parserIn addition to floating through lambdas, cost-centre style tickishs can also be moved from constructors, non-function variables and literals. For example: let x = scc ... C (scc ... y) (scc ... 3) in ...Neither the constructor application, the variable or the literal are likely to have any cost worth mentioning. And even if y names a thunk, the call would not care about the evaluation context. Therefore removing all annotations in the above example is safe.)Ughc-lib-parserSpecifies the scoping behaviour of ticks. This governs the behaviour of ticks that care about the covered code and the cost associated with it. Important for ticks relating to profiling.)Vghc-lib-parserNo scoping: The tick does not care about what code it covers. Transformations can freely move code inside as well as outside without any additional annotation obligations)Wghc-lib-parserSoft scoping: We want all code that is covered to stay covered. Note that this scope type does not forbid transformations from happening, as long as all results of the transformations are still covered by this tick or a copy of it. For example let x = tick ...6 (let y = foo in bar) in baz ===> let x = tick ... bar; y = tick ... foo in bazrIs a valid transformation as far as "bar" and "foo" is concerned, because both still are scoped over by the tick. Note though that one might object to the "let" not being covered by the tick any more. However, we are generally lax with this - constant costs don't matter too much, and given that the "let" was effectively merged we can view it as having lost its identity anyway.rAlso note that this scoping behaviour allows floating a tick "upwards" in pretty much any situation. For example:case foo of x -> tick ... bar ==> tick ... case foo of x -> barWhile this is always leagl, we want to make a best effort to only make us of this where it exposes transformation opportunities.)Xghc-lib-parser%Cost centre scoping: We don't want any costs to move to other cost-centre stacks. This means we not only want no code or cost to get moved out of their cost centres, but we also object to code getting associated with new cost-centre ticks - or changing the order in which they get applied.}A rule of thumb is that we don't want any code to gain new annotations. However, there are notable exceptions, for example:let f = y -> foo in tick ... ... (f x) ... ==> tick ... ... foo[x/y] ...In-lining lambdas like this is always legal, because inlining a function does not change the cost-centre stack when the function is called.)Yghc-lib-parser;Allows attaching extra information to points in expressions)Zghc-lib-parserAn {- SCC -}t profiling annotation, either automatically added by the desugarer as a result of -auto-all, or added by the user.)[ghc-lib-parser_A "tick" used by HPC to track the execution of each subexpression in the original source code.)\ghc-lib-parserA breakpoint for the GHCi debugger. This behaves like an HPC tick, but has a list of free variables which will be available for inspection in GHCi when the program stops at the breakpoint.yNB. we must take account of these Ids when (a) counting free variables, and (b) substituting (don't substitute for them))]ghc-lib-parserA source note.Source notes are pure annotations: Their presence should neither influence compilation nor execution. The semantics are given by causality: The presence of a source note means that a local change in the referenced source code span will possibly provoke the generated code to change. On the flip-side, the functionality of annotated code *must* be invariant against changes to all source code *except* the spans referenced in the source notes (see "Causality of optimized Haskell" paper for details).$Therefore extending the scope of any given source note is always valid. Note that it is still undesirable though, as this reduces their usefulness for debugging and profiling. Therefore we will generally try only to make use of this property where it is necessary to enable optimizations.)^ghc-lib-parserthe cost centre)_ghc-lib-parserbump the entry count?)`ghc-lib-parser;scopes over the enclosed expression (i.e. not just a tick))dghc-lib-parserxthe order of this list is important: it matches the order of the lists in the appropriate entry in HscTypes.ModBreaks.CCareful about substitution! See Note [substTickish] in CoreSubst.)eghc-lib-parserSource covered)fghc-lib-parser4Name for source location (uses same names as CCs))xghc-lib-parserIBinding, used for top level bindings in a module and local bindings in a let.){ghc-lib-parser3A case alternative constructor (i.e. pattern match))}ghc-lib-parser A literal: case e of { 1 -> ... }J Invariant: always an *unlifted* literal See Note [Literal alternatives])~ghc-lib-parserTrivial alternative: case e of { _ -> ... })ghc-lib-parserA case split alternative. Consists of the constructor leading to the alternative, the variables bound from the constructor, and the expression to be executed given that binding. The default alternative is (DEFAULT, [], rhs))ghc-lib-parserNType synonym for expressions that occur in function argument positions. Only ) should contain a ) at top level, general ) should not)ghc-lib-parsereThis is the data type that represents GHCs core intermediate language. Currently GHC uses System FC  [https://www.microsoft.com/en-us/research/publication/system-f-with-type-equality-coercions/V for this purpose, which is closely related to the simpler and better known System F  %http://en.wikipedia.org/wiki/System_F.GWe get from Haskell source to this Core language in a number of stages: bThe source code is parsed into an abstract syntax tree, which is represented by the data type vv with the names being kThis syntax tree is renamed, which attaches a QQ to every kk (yielding a [) to disambiguate identifiers which are lexically identical. For example, this program: 3 f x = let f x = x + 1 in f (x - 2) Would be renamed by having Unique,s attached so it looked something like this: E f_1 x_2 = let f_3 x_4 = x_4 + 1 in f_3 (x_2 - 2) But see Note [Shadowing] below. |The resulting syntax tree undergoes type checking (which also deals with instantiating type class arguments) to yield a vv type that has  as it's names.Finally the syntax tree is  desugared from the expressive vv type into this )y type, which has far fewer constructors and hence is easier to perform optimization, analysis and code generation on.The type parameter b3 is for the type of binders in the expression tree.0The language consists of the following elements:5Variables See Note [Variable occurrences in Core]Primitive literals.Applications: note that the argument may be a )X. See Note [CoreSyn let/app invariant] See Note [Levity polymorphism invariants]@Lambda abstraction See Note [Levity polymorphism invariants]Recursive and non recursive let{s. Operationally this corresponds to allocating a thunk for the things bound and then executing the sub-expression.See Note [CoreSyn letrec invariant] See Note [CoreSyn let/app invariant] See Note [Levity polymorphism invariants] See Note [CoreSyn type and coercion invariant]Case expression. Operationally this corresponds to evaluating the scrutinee (expression examined) to weak head normal form and then examining at most one level of resulting constructor (i.e. you cannot do nested pattern matching directly with this).AThe binder gets bound to the value of the scrutinee, and the )* must be that of all the case alternativescase_invariantst This is one of the more complicated elements of the Core language, and comes with a number of restrictions: PThe list of alternatives may be empty; See Note [Empty case alternatives]The )~H case alternative must be first in the list, if it occurs at all.BThe remaining cases are in order of increasing tag (for DataAlts) or lit (for LitAltsc). This makes finding the relevant constructor easy, and makes comparison easier too.0The list of alternatives must be exhaustive. An  exhaustive; case does not necessarily mention all constructors:  data Foo = Red | Green | Blue ... case x of Red -> True other -> f (case x of Green -> ... Blue -> ... ) ... The inner case does not need a Red alternative, because x can't be Red at that program point. Floating-point values must not be scrutinised against literals. See Trac #9238 and Note [Rules for floating-point comparisons] in PrelRules for rationale.GCast an expression to a particular type. This is used to implement newtypes (a newtype. constructor or destructor just becomes a ) in Core) and GADTs.XNotes. These allow general information to be added to expressions in the syntax tree;A type: this should only show up at the top level of an Arg A coercion)ghc-lib-parserA "counting tick" (where tickishCounts is True) is one that counts evaluations in some way. We cannot discard a counting tick, and the compiler should preserve the number of counting ticks as far as possible.However, we still allow the simplifier to increase or decrease sharing, so in practice the actual number of ticks may vary, except that we never change the value from zero to non-zero or vice versa.)ghc-lib-parser/Returns the intended scoping rule for a Tickish)ghc-lib-parser[Returns whether the tick scoping rule is at least as permissive as the given scoping rule.)ghc-lib-parserReturns Trued for ticks that can be floated upwards easily even where it might change execution counts, such as: Just (tick ... foo) ==> tick ... (Just foo)This is a combination of tickishSoftScope and  tickishCountsF. Note that in principle splittable ticks can become floatable using mkNoTickI -- even though there's currently no tickish for which that is the case.)ghc-lib-parserReturns True" for a tick that is both counting and> scoping and can be split into its (tick, scope) parts using ) and mkNoTick respectively.)ghc-lib-parserReturn True if this source annotation compiles to some backend code. Without this flag, the tickish is seen as a simple annotation that does not have any associated evaluation code.What this means that we are allowed to disregard the tick if doing so means that we can skip generating any code in the first place. A typical example is top-level bindings: foo = tick ...% y -> ... ==> foo = y -> tick ... ...Here there is just no operational difference between the first and the second version. Therefore code generation should simply translate the code as if it found the latter.)ghc-lib-parser)Placement behaviour we want for the ticks)ghc-lib-parser_Returns whether one tick "contains" the other one, therefore making the second tick redundant.)ghc-lib-parserReturns true if )N is orphan.)ghc-lib-parserReturns true if )N is not an orphan.)ghc-lib-parserThe number of arguments the )>4 must be applied to before the rule can match on it)ghc-lib-parserThe  of the ' at the head of the rule left hand side)ghc-lib-parserSet the  of the ' at the head of the rule left hand side)ghc-lib-parserThere is no known )%)ghc-lib-parser<This unfolding marks the associated thing as being evaluated)ghc-lib-parserThere is no known )%*, because this came from an hi-boot file.)ghc-lib-parser?Retrieves the template of an unfolding: panics if none is known)ghc-lib-parserRetrieves the template of an unfolding if possible maybeUnfoldingTemplate is used mainly wnen specialising, and we do want to specialise DFuns, so it's important to return a template for DFunUnfoldings)ghc-lib-parser=The constructors that the unfolding could never be: returns [] if no information is available)ghc-lib-parserjDetermines if it is certainly the case that the unfolding will yield a value (something in HNF): returns False if unsure)ghc-lib-parserRDetermines if it possibly the case that the unfolding will yield a value. Unlike ) it returns True for )()ghc-lib-parserTrueZ if the unfolding is a constructor application, the application of a CONLIKE function or )()ghc-lib-parser1Is the thing we will unfold into certainly cheap?)ghc-lib-parserHOnly returns False if there is no unfolding information available at all)ghc-lib-parser Compares ){s within a single list of alternatives DEFAULT comes out smallest, so that sorting by AltCon puts alternatives in the order required by case_invariants)ghc-lib-parserbApply a list of argument expressions to a function expression in a nested fashion. Prefer to use  if possible)ghc-lib-parserZApply a list of coercion argument expressions to a function expression in a nested fashion)ghc-lib-parserTApply a list of type or value variables to a function expression in a nested fashion)ghc-lib-parser_Apply a list of argument expressions to a data constructor in a nested fashion. Prefer to use  if possible)ghc-lib-parserVApply a list of type argument expressions to a function expression in a nested fashion)ghc-lib-parser4Create a machine integer literal expression of type Int# from an Integer%. If you want an expression of type Int use )ghc-lib-parser4Create a machine integer literal expression of type Int# from an Int%. If you want an expression of type Int use )ghc-lib-parser2Create a machine word literal expression of type Word# from an Integer%. If you want an expression of type Word use )ghc-lib-parser2Create a machine word literal expression of type Word# from a Word%. If you want an expression of type Word use )ghc-lib-parser6Create a machine character literal expression of type Char#%. If you want an expression of type Char use )ghc-lib-parser3Create a machine string literal expression of type Addr#%. If you want an expression of type String use )ghc-lib-parser=Create a machine single precision literal expression of type Float# from a Rational%. If you want an expression of type Float use )ghc-lib-parser=Create a machine single precision literal expression of type Float# from a Float%. If you want an expression of type Float use )ghc-lib-parser=Create a machine double precision literal expression of type Double# from a Rational%. If you want an expression of type Double use )ghc-lib-parser=Create a machine double precision literal expression of type Double# from a Double%. If you want an expression of type Double use )ghc-lib-parser[Bind all supplied binders over an expression in a nested lambda expression. Prefer to use  if possible)ghc-lib-parserBind all supplied binding groups over an expression in a nested let expression. Assumes that the rhs satisfies the let/app invariant. Prefer to use 1 if possible, which does guarantee the invariant)ghc-lib-parsermkLetNonRec bndr rhs body wraps body in a let binding bndr.)ghc-lib-parsermkLetRec binds body wraps body in a let rec with the given set of binds if binds is non-empty.)ghc-lib-parserECreate a binding group where a type variable is bound to a type. Per CoreSyn#type_let>, this can only be used to bind something in a non-recursive let expression)ghc-lib-parserECreate a binding group where a type variable is bound to a type. Per CoreSyn#type_let>, this can only be used to bind something in a non-recursive let expression)ghc-lib-parserConvert a binder into either a ) or ) ) appropriately)ghc-lib-parseriDetermines the type resulting from applying an expression with given type to a given argument expression)ghc-lib-parserIf the expression is a )., converts. Otherwise, panics. NB: This does not convert ) to  CoercionTy.)ghc-lib-parserIf the expression is a ) , converts.)ghc-lib-parser$Extract every variable by this group)ghc-lib-parser)$ applied to a list of binding groups)ghc-lib-parserpCollapse all the bindings in the supplied groups into a single list of lhs/rhs pairs suitable for binding in a )z binding group)ghc-lib-parserZWe often want to strip off leading lambdas before getting down to business. Variants are ), ?X, and ))ghc-lib-parserTStrip off exactly N leading lambdas (type or value). Good for use with join points.)ghc-lib-parservTakes a nested application expression and returns the function being applied and the arguments to which it is applied)ghc-lib-parserAttempt to remove the last N arguments of a function call. Strip off any ticks or coercions encountered along the way and any at the end.)ghc-lib-parserLike  collectArgs_, but also collects looks through floatable ticks if it means that we can find more arguments.)ghc-lib-parser$Will this variable exist at runtime?)ghc-lib-parser/Will this argument expression exist at runtime?)ghc-lib-parserReturns True for value arguments, false for type args NB: coercions are value arguments (zero width, to be sure, like State#, but still value args).)ghc-lib-parserReturns True iff the expression is a ) or ) expression at its top level)ghc-lib-parserReturns True iff the expression is a ) expression at its top level)ghc-lib-parserReturns True iff the expression is a ); expression at its top level. Note this does NOT include )s.)ghc-lib-parser8The number of binders that bind values rather than types)ghc-lib-parserWThe number of argument expressions that are values rather than types at their top level)ghc-lib-parservTakes a nested application expression and returns the function being applied and the arguments to which it is applied)ghc-lib-parserAs ) but for )  rather than ))ghc-lib-parserAs ) but for )  rather than ) ((((()))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) )))))))))))))x)y)z){)|)})~))Y)Z)[)\)])^)_)`)a)b)c)d)e)f)U)V)W)X)Q)R)S)T))))))) ) )) ))))t)s)r)q)v)u)w)p)k)j)i)h)n)m)o)l)g)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))%)&)')()))*)+),)-).)/)0)1)2)3)4)5)))))))))) )!)")#)$)))))))))))))))))))))))))) ()))))))))) (((()))))))))N)O)P))))9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)M )8)6)7)I)J)K)L))))))))))))4)4)4)4)4NNone>- ghc-lib-parserIdentifier DetailsThe   of an Id7 give stable, and necessary, information about the Id. ghc-lib-parserIdentifier InformationAn   gives optional information about an Id. If present it never lies, but it may not be present, in which case there is always a conservative assumption which can be made.Two Id:s may have different info even though they have the same Unique (and are hence the same IdE); for example, one might lack the properties attached to the other. Most of the  ; gives information about the value, or definition, of the Id4, independent of its usage. Exceptions to this are *, *, * and *.!Performance note: when we update  n, we have to reallocate this entire record, so it is a good idea not to let this data structure get too big. ghc-lib-parser Check if an   says *-. ghc-lib-parserJust a synonym for *-@. Written separately so it can be exported in the hs-boot file. ghc-lib-parserBasic  . that carries no useful information whatsoever* ghc-lib-parserTick box for Hpc-style coverage*ghc-lib-parser%Constant applicative form InformationRecords whether an Id+ makes Constant Applicative Form references*ghc-lib-parserIndicates that the Id is for either: HA function or static constructor that refers to one or more CAFs, orA real live CAF*ghc-lib-parser9A function or static constructor that refers to no CAFs.*ghc-lib-parserRule Information$Records the specializations of this Id, that we know about in the form of rewrite )9s that target them*ghc-lib-parserInline Pragma InformationlTells when the inlining is active. When it is active the thing may be inlined, depending on how big it is.If there was an INLINEb pragma, then as a separate matter, the RHS will have been made to look small with a Core inline Note The default * is  6L, so the info serves entirely as a way to inhibit inlining until we want it*ghc-lib-parserArity InformationAn * of n, tells us that partial application of this Id to up to n-1* value arguments does essentially no work.7That is not necessarily the same as saying that it has n6 leading lambdas, because coerces may get in the way.mThe arity might increase later in the compilation process, if an extra lambda floats up to the binding site.*ghc-lib-parserId arity*ghc-lib-parserSpecialisations of the IdFs function which exist See Note [Specialisations and RULES in IdInfo]*ghc-lib-parserThe Id s unfolding*ghc-lib-parserId CAF info*ghc-lib-parser+Info about a lambda-bound variable, if the Id is one*ghc-lib-parser!Any inline pragma atached to the Id*ghc-lib-parserHow the Id occurs in the program*ghc-lib-parserID demand information*ghc-lib-parserHow this is called. n  =$ all calls have at least n arguments* ghc-lib-parser?when applied, will this Id ever have a levity-polymorphic type?*!ghc-lib-parserRecursive Selector Parent*%ghc-lib-parserThe Id for a record selector*&ghc-lib-parserThe Id is for a data constructor worker*'ghc-lib-parserThe Id is for a data constructor wrapper*(ghc-lib-parserThe Id9 is a superclass selector, or class operation of a class*)ghc-lib-parserThe Id is for a primitive operator**ghc-lib-parserThe IdM is for a foreign call. Type will be simple: no type families, newtypes, etc*+ghc-lib-parserThe Id4 is for a HPC tick box (both traditional and binary)*,ghc-lib-parser$A dictionary function. Bool = True  = the class has only one method, so may be implemented with a newtype, so it might be bad to be strict on this dictionary*-ghc-lib-parser&A coercion variable This only covers  un-lifted coercions, of type (t1 ~ t2) or (t1 ~R t2), not their lifted variants*.ghc-lib-parserAn IdC for a join point taking n arguments Note [Join points] in CoreSyn*<ghc-lib-parserMore informative   we can use when we know the Id has no CAF references*=ghc-lib-parser$It is always safe to assume that an Id has an arity of 0*@ghc-lib-parser0Assume that no specilizations exist: always safe*Bghc-lib-parsernRetrieve the locally-defined free variables of both the left and right hand sides of the specialization rules*Dghc-lib-parserCChange the name of the function the rule is keyed on on all of the )9s?Yghc-lib-parserAssumes that the Id$ has CAF references: definitely safe*Gghc-lib-parserThis is used to remove information on lambda binders that we have setup as part of a lambda group, assuming they will be applied all at once, but turn out to be part of an unsaturated lambda as in e.g: (\x1. \x2. e) arg1*Hghc-lib-parserRemove all demand info on the  *Ighc-lib-parser.Remove usage (but not strictness) info on the  *Jghc-lib-parserCRemove usage environment info from the strictness signature on the  *Lghc-lib-parser'Zap info that depends on free variables*Pghc-lib-parserMarks an IdInfo describing an Id that is never levity polymorphic (even when applied). The Type is only there for checking that it's really never levity polymorphicl *.*,*$*%*&*'*(*)***+*-*/*0 * **********    F H G I J L M N O P Q R S T U * * * *********!*"*#*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*Rl *.*,*$*%*&*'*(*)***+*-*/*0    *1*!*"*#  *< * *9*G*L*H*I*J*K*N*O*M**=**6*>**7**;**:*?**5***3 L M N O P Q R S T U **4 J I F H G ***@*A*B*C*D**2****F*E**8* * ** * *P*Q*R *21*31*41*51*61*81*91*:1*;1*P1*Q1None#*aghc-lib-parserNot only does this set the   Z;, it also evaluates the type to try and reduce space usage*ighc-lib-parser'For an explanation of global vs. local s, see Var#globalvslocal*jghc-lib-parserMake a global % without any extra information at all*kghc-lib-parserMake a global - with no global information but some generic  *lghc-lib-parser'For an explanation of global vs. local s, see Var#globalvslocal*mghc-lib-parserMake a local CoVar*nghc-lib-parserLike *l6, but checks the type to see if it should make a covar*oghc-lib-parserMMake a local id, with the IdDetails set to CoVarId if the type indicates so.*qghc-lib-parserCreate a local  that is marked as exported. This prevents things attached to it from being removed as dead code. See Note [Exported LocalIds]*sghc-lib-parserCreate a system local . These are local s (see Var#globalvslocal3) that are created by the compiler out of thin air*tghc-lib-parserLike *s+, but checks to see if we have a covar type*wghc-lib-parserCreate a user local . These are local s (see Var#globalvslocal8) with a name and location that the user might recognize*xghc-lib-parserLike *w', but checks if we have a coercion type*yghc-lib-parserWorkers get local names. CoreTidy$ will externalise these if necessary*zghc-lib-parser Create a template local: a family of system local s in bijection with Ints, typically used in unfoldings*{ghc-lib-parser-Create a template local for a series of types*|ghc-lib-parserWCreate a template local for a series of type, but start from a specified template local*}ghc-lib-parserIf the , is that for a record selector, extract the */. Panic otherwise.*ghc-lib-parser*Get from either the worker or the wrapper  to the  '. Currently used only in the desugarer. INVARIANT: idDataCon (dataConWrapId d) = d : remember, ', can return either the wrapper or the worker*ghc-lib-parserReturns True of an I which may not have a binding, even though it is defined in this module.*ghc-lib-parser* tells whether an s info is implied by other declarations, so we don't need to put its signature in an interface file, even if it's mentioned in some other interface unfolding.*ghc-lib-parser6Returns true if an application to n args would diverge*ghc-lib-parser This predicate says whether the  has a strict demand placed on it or has a type such that it can always be evaluated strictly (i.e an unlifted type, as of GHC 7.6). We need to check separately whether the D has a so-called "strict type" because if the demand for the given id hasn't been computed yet but id# has a strict type, we still want  isStrictId id to be True.*ghc-lib-parserLike *f, but taking the Horrible State Hack in to account See Note [The state-transformer hack] in CoreArity*ghc-lib-parser/Returns whether the lambda associated with the  is certainly applied at most once This one is the "business end", called externally. It works on type variables as well as Ids, returning True Its main purpose is to encapsulate the Horrible State Hack See Note [The state-transformer hack] in CoreArity*ghc-lib-parser1Should we apply the state hack to values of this  Z?*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~******************************************************************************̀*i*j*k*l*m*n*o*p*q*r*s*u*t*v*w*x*{*|*z*y*\*^*]*}*_*`*a*b*c*d*f*e*g*h**************~***************************************************************** *1*1*1*1*1*1*1*1*1*1*1*1*1oNone4ghc-lib-parserMake a *promoted* list.ghc-lib-parserSpecialization of ?Z for tuplesghc-lib-parserFBuild the type of a small tuple that holds the specified type of thing*ghc-lib-parserDBuilt-in syntax isn't "in scope" so these OccNames map to wired-in Names with BuiltInSyntax. However, this should only be necessary while resolving names produced by Template Haskell splices since we take care to encode built-in syntax names specially in interface files. See Note [Symbol table representation of names].Moreover, there is no need to include names of things that the user can't write (e.g. type representation bindings like $tc(,,,)).*ghc-lib-parserbIf the given name is that of a constraint tuple, return its arity. Note that this is inefficient.?Zghc-lib-parserMGiven the TupleRep/SumRep tycon and list of RuntimeReps of the unboxed tuple;sum arguments, produces the return kind of an unboxed tuplesum type constructor. WunboxedTupleSumKind [IntRep, LiftedRep] --> TYPE (TupleRep/SumRep [IntRep, LiftedRep])?[ghc-lib-parser/OccName for n-ary unboxed sum type constructor.?\ghc-lib-parserCOccName for i-th alternative of n-ary unboxed sum data constructor.+ghc-lib-parser'Type constructor for n-ary unboxed sum.+ghc-lib-parser=Data constructor for i-th alternative of a n-ary unboxed sum.?]ghc-lib-parserCached type and data constructors for sums. The outer array is indexed by the arity of the sum and the inner array is indexed by the alternative.+ghc-lib-parserSpecialization of ?Z for sums?^ghc-lib-parserDCreate type constructor and data constructors for n-ary unboxed sum.+6ghc-lib-parser,Make a tuple type. The list of types should not( include any RuntimeRep specifications.?_ghc-lib-parserSExtract the elements of a promoted list. Panics if the type is not a promoted listghc-lib-parserof the elements of the listghc-lib-parserelements?`ghc-lib-parserdeclared infix?ghc-lib-parser datacon nameghc-lib-parser univ tyvarsghc-lib-parser ex tycovarsghc-lib-parseruser-written tycovarsghc-lib-parserargs?_ghc-lib-parserThe promoted list@      !"##,***************************************************++++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@**#"**+#+$**+&+(*+%+'*+9+8+)+*+-+++.+,+/+<+=+>+++*++*+!+"+ *+++*++***+++*+++*+!**@+1**+2*+@+?+0+3*+4*+:+5*+;+6**********++********+7++** #,+ ***+++*++**+ + ++ +      NoneSX@U+Aghc-lib-parserThe NameCache makes sure that there is just one Unique assigned for each original name; i.e. (module-name, occ-name) pair and provides something of a lookup mechanism for those names.+Cghc-lib-parserSupply of uniques+Dghc-lib-parser.Ensures that one original name gets one unique+Eghc-lib-parserPer-module cache of original s given s+Ighc-lib-parser6Return a function to atomically update the name cache. +A+B+C+D+E+F+G+H+I +F+G+H+I+A+B+C+D+E6NoneB-ghc-lib-parser Returns the * of the wrapper associated with the given  . See Note [Primop wrappers].W +S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~-----------------+J+K+L+M+N+O+P+Q+R----------------W +S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------- - - - - ------------------- -!-"-#-$-%-&-'-(-)-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~-----------------+O+P+Q+R----------------+L+M+N+J+KbNoneVighc-lib-parserGet the  associated with a known-key [.NoneX-ghc-lib-parser stepping mode-ghc-lib-parserfilename (for errors)-ghc-lib-parserline number (for errors)(----------------------------------------(----------------------------------------None ,12=>?HV<-ghc-lib-parserAmbiguous Field OccurrenceRepresents an *occurrence* of a field that is potentially ambiguous after the renamer, with the ambiguity resolved by the typechecker. We always store the s that the user originally wrote, and store the selector function after the renamer (for unambiguous occurrences) or the typechecker (for ambiguous occurrences).See Note [HsRecField and HsRecUpdField] in HsPat and Note [Disambiguating record fields] in TcExpr. See Note [Located RdrNames] in HsExpr-ghc-lib-parserField OccurrenceHRepresents an *occurrence* of an unambiguous field. We store both the sJ the user originally wrote, and after the renamer, the selector function.-ghc-lib-parser%See Note [Located RdrNames] in HsExpr-ghc-lib-parserLocated Field Occurrence-ghc-lib-parserHaskell Constructor Details-ghc-lib-parserConstructor Declaration Field-ghc-lib-parserl : l-ghc-lib-parserSee Note [ConDeclField passs]-ghc-lib-parser%Located Constructor Declaration Field-ghc-lib-parserHaskell Tuple Sort-ghc-lib-parserHaskell Type Literal-ghc-lib-parser Haskell Type-ghc-lib-parserl : l , l,lB For details on above see note [Api annotations] in ApiAnnotation-ghc-lib-parserl : None-ghc-lib-parserl : None-ghc-lib-parserl : l,-ghc-lib-parserl : l '[' , l ']'-ghc-lib-parserl : l  '(' or '(#' , l  ')' or '#)'-ghc-lib-parserl : l '(#' , l '#)'@-ghc-lib-parserl : None-ghc-lib-parserl : l '(' , l ')'-ghc-lib-parser  (?x :: ty)l : l-ghc-lib-parserl : None-ghc-lib-parser  (ty :: kind)l : l '(' , l,l ')'.ghc-lib-parserl : l '$(' , l ')'.ghc-lib-parserl : None.ghc-lib-parserl : l '{-# UNPACK' or '{-# NOUNPACK' , l '#-}' l '!'.ghc-lib-parserl : l '{' , l '}'.ghc-lib-parserl : l "'[" , l ']'.ghc-lib-parserl : l "'(" , l ')'.ghc-lib-parserl : None.ghc-lib-parserl : None.ghc-lib-parserHaskell Type Variable Binder.ghc-lib-parserl : l , l, l.ghc-lib-parseryThese names are used early on to store the names of implicit parameters. They completely disappear after type-checking..ghc-lib-parser'Located Haskell Signature Wildcard Type.ghc-lib-parserLocated Haskell Wildcard Type.ghc-lib-parserLocated Haskell Signature Type.ghc-lib-parserHaskell Wildcard Binders.ghc-lib-parserHaskell Implicit Binders.%ghc-lib-parser)Located Haskell Quantified Type Variables.*ghc-lib-parser$Located Haskell Type Variable Binder.+ghc-lib-parserLocated Haskell Kind.,ghc-lib-parser Haskell Kind.-ghc-lib-parserLocated Haskell Type..ghc-lib-parserHaskell Context./ghc-lib-parserLocated Haskell Context.0ghc-lib-parser Bang Type.1ghc-lib-parserLocated Bang Type.Bghc-lib-parser Does this .' come with an explicit kind annotation?.Cghc-lib-parserDo all type variables in this .% come with kind annotations?.Lghc-lib-parser0Convert a LHsTyVarBndr to an equivalent LHsType..Mghc-lib-parserYConvert a LHsTyVarBndrs to a list of types. Works on *type* variable only, no kind vars..gghc-lib-parser3Prints a forall; When passed an empty list, prints forall. only when  -dppr-debug.hghc-lib-parser Version of .g: that can also print an extra-constraints wildcard, e.g. _ => a -> Bool or (Show a, _) => a -> StringJ. This underscore will be printed when the 'Maybe SrcSpan' argument is a H containing the location of the extra-constraints wildcard. A special function for this is needed, as the extra-constraints wildcard is removed from the actual context and type, and stored in a separate field, thus just printing the type will not print the extra-constraints wildcard..ighc-lib-parser Version of  pprHsForall or pprHsForallExtra that will always print forall. when passed Just []. Prints nothing if passed G.mghc-lib-parser.m p t returns I if the type t% needs parentheses under precedence p..nghc-lib-parser.n p ty checks if .m p ty is true, and if so, surrounds ty with an - . Otherwise, it simply returns ty..oghc-lib-parser.o p ctxt checks if ctxt is a single constraint c such that .m p c is true, and if so, surrounds c with an - to form a parenthesized ctxt . Otherwise, it simply returns ctxt unchanged..ghc-lib-parserl : None-ghc-lib-parser May have l : l when in a list.+ghc-lib-parserl : l.-ghc-lib-parser May have l : l when in a list./ghc-lib-parserl : lB For details on above see note [Api annotations] in ApiAnnotation''''''''''''''--------------------------------------.-.-------------........ . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o-.-.-------------........ . . . . --.-.,.+.....*.%.&.'.(.).!.".#.$..... ........-----.../.4---...A----.W-.1.0''''''''''''''.2.3--------.k----------.`----.a.b.c.d.e.P.f.=.>.9.?.@.5.6.7.8.B.C.O.E.D.<.F.I.K.G.J.H.].^._.Y.[.\.Z.U.X.V.Q.R.S.T.N.:.;.L.M.l.g.h.i.j.m.n.oNone"#FM .ghc-lib-parser6All the information about the breakpoints for a module.ghc-lib-parserRThe array of flags, one per breakpoint, indicating which breakpoints are enabled..ghc-lib-parser3An array giving the source span of each breakpoint..ghc-lib-parserCAn array giving the names of the free variables at each breakpoint..ghc-lib-parserHAn array giving the names of the declarations enclosing each breakpoint..ghc-lib-parser1Array pointing to cost centre for each breakpoint.ghc-lib-parser6info about each breakpoint from the bytecode generator.ghc-lib-parserC CostCentre type.ghc-lib-parserBreakpoint index.ghc-lib-parserCInformation about a breakpoint that we know at code-generation time.ghc-lib-parserConstruct an empty ModBreaks..............................................................................................None.ghc-lib-parserA measure of the size of the expressions, strictly greater than 0 Counts *leaves*, not internal nodes. Types and coercions are not counted. ........... ...........None`?aghc-lib-parser?A function to produce an annotation for a given right-hand-side?bghc-lib-parser-Annotate with the size of the right-hand-side?cghc-lib-parser No annotation?dghc-lib-parser4Pretty print the argument in a function application.?eghc-lib-parser3generate an annotation to place before the bindingghc-lib-parserbindings to showghc-lib-parserthe pretty result ......... .........NoneE.ghc-lib-parser Header information only, not rhs.ghc-lib-parser,Show only some sub-components. Specifically, @[@] Print all sub-components.(n:ns)Print sub-component n with  ShowSub = ns!; elide other sub-components to ...6 May 14: the list is max 1 element long at the moment.ghc-lib-parserDEverything including GHC-internal information (used in --show-iface)/9ghc-lib-parserThis corresponds to HsSrcBang/;ghc-lib-parsermThis corresponds to an HsImplBang; that is, the final implementation decision about the data constructor arg/bghc-lib-parserHName of associated axiom and branches for pretty printing purposes, or Gc for an empty closed family without an axiom See Note [Pretty printing via IfaceSyn] in PprTyThing/ghc-lib-parserA binding top-level , in an interface file (e.g. the name of an /o)./ghc-lib-parserPretty Print an IfaceExpresThe first argument should be a function that adds parens in context that need an atomic value (e.g. function args)H+,##-###################.##/###0###########1###x#y#z#{#|#}#~##################################################################''''''''..................................////////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;/</=/>/?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~/////////////////////////////////////o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~////////////////////////_/`/a/b/c/d/]/^/[/\/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/@.......////////.............///// / / / / ///////////"/#/$/%/&/'/(/)/*/+/// /!//2/3/4/5/6/7/8/,/-/.///0/1..../h/i/j/k/l/m/n/;/</=/>/?/9/:''''''''/R/S/T/U/V/W/X/Y/Z/e/f/g/////////////..........//?f3Nonea/ghc-lib-parserEvaluate all the fields of the  - that are generally demanded by the compiler//////////////None =>?HSVX ?gghc-lib-parserA ?g is a ?h| which allows us to distinguish between binding forms whose binders have different types. For example, if we are doing a & lookup on (x :: Int) -> ()), we should not pick up an entry in the & for (x :: Bool) -> ()i: we can disambiguate this by matching on the type (or kind, if this a binder in a type) of the binder.?ighc-lib-parser DeBruijn a represents aI modulo alpha-renaming. This is achieved by equipping the value with a /O, which tracks an on-the-fly deBruijn numbering. This allows us to define an ' instance for  DeBruijn a., even if this was not (easily) possible for an. Note: we purposely don't export the constructor. Make a helper function if you find yourself needing it./ghc-lib-parserA / doesn't do a kind-check. Thus, when lookup up (t |> g), you'll find entries inserted under (t), even if (g) is non-reflexive./ghc-lib-parser TypeMap a is a map from ) to ab. If you are a client, this is the type you want. The keys in this map may have different kinds.?jghc-lib-parser TypeMapX a is the base map from  DeBruijn Type to a, but without the & optimization.?hghc-lib-parser TypeMapG a is a map from  DeBruijn Type to a. The extended key makes it suitable for recursive traversal, since it can track binders, but it is strictly internal to this module. If you are including a / inside another &, this is the type you want. Note that this lookup does not do a kind-check. Thus, all keys in this map must have the same kind. Also note that this map respects the distinction between Type and  ConstraintC, despite the fact that they are equivalent type synonyms in Core.?kghc-lib-parser CoreMapX a is the base map from DeBruijn CoreExpr to a, but without the & optimization.?lghc-lib-parser CoreMapG a is a map from DeBruijn CoreExpr to a. The extended key makes it suitable for recursive traversal, since it can track binders, but it is strictly internal to this module. If you are including a / inside another &, this is the type you want./ghc-lib-parser CoreMap a is a map from ) to a3. If you are a client, this is the type you want.?mghc-lib-parserySqueeze out any synonyms, and change TyConApps to nested AppTys. Why the last one? See Note [Equality on AppTys] in TypeNote, however, that we keep Constraint and Type apart here, despite the fact that they are both synonyms of TYPE 'LiftedRep (see #11715)./ghc-lib-parser Extend a /$ with a type in the given context. 8extendTypeMapWithScope m (mkDeBruijnContext [a,b,c]) t v is equivalent to #extendTypeMap m (forall a b c. t) v<, but allows reuse of the context over multiple insertions./ghc-lib-parserJConstruct a deBruijn environment with the given variables in scope. e.g. mkDeBruijnEnv [a,b,c] constructs a context  forall a b c.?nghc-lib-parserSynthesizes a  DeBruijn a from an a9, by assuming that there are no bound binders (an empty /<). This is usually what you want if there isn't already a / in scope.$&&&&&&&&&&&&&&&&////////////////////$////////////////&&&&&&&&&&&&&////&&&None&'PX5 ?oghc-lib-parser1a monad for the normalisation functions, reading 0, a !, and a !6.0ghc-lib-parser;Result of testing two type family equations for injectiviy.0ghc-lib-parserMEither RHSs are distinct or unification of RHSs leads to unification of LHSs0ghc-lib-parserRHSs unify but LHSs don't unify under that substitution. Relevant for closed type families where equation after unification might be overlpapped (in which case it is OK if they don't unify). Constructor stores axioms after unification.0&ghc-lib-parserJCheck whether two type family axioms don't violate injectivity annotation.0+ghc-lib-parserHCreate a coercion constructor (axiom) suitable for the given newtype  . The % should be that of a new coercion !D, the  s the arguments expected by the newtype8 and the type the appropriate right hand side of the newtype/, with the free variables a subset of those s.0/ghc-lib-parserCheck whether an open type family equation can be added to already existing instance environment without causing conflicts with supplied injectivity annotations. Returns list of conflicting axioms (type instance declarations).02ghc-lib-parserDo an apartness check, as described in the "Closed Type Families" paper (POPL '14). This should be used when determining if an equation (!:Z) of a closed type family can be used to reduce a certain target type family application.04ghc-lib-parserLGet rid of *outermost* (or toplevel) * type function redex * data family redex * newtypes returning an appropriate Representational coercion. Specifically, if topNormaliseType_maybe env ty = Just (co, ty') then (a) co :: ty ~R ty' (b) ty' is not a newtype, and is not a type-family or data-family redexLHowever, ty' can be something like (Maybe (F ty)), where (F ty) is a redex.Always operates homogeneously: the returned type has the same kind as the original type, and the returned coercion is always homogeneous.06ghc-lib-parserNormalise arguments to a tycon?pghc-lib-parser~Get the set of all type/coercion variables mentioned anywhere in the list of types. These variables are not necessarily free.?qghc-lib-parserHGet the set of all type/coercion variables mentioned anywhere in a type.02ghc-lib-parser flattened target arguments. Make sure they're flattened! See Note [Flattening]. (NB: This "flat" is a different "flat" than is used in TcFlatten.)ghc-lib-parserLthe candidate equation we wish to use Precondition: this matches the targetghc-lib-parserTrue  = equation can fire06ghc-lib-parserenv't with family instancesghc-lib-parserdesired role of output coercionghc-lib-parsertcghc-lib-parsertysghc-lib-parserlco :: tc tys ~ tc new_tys NB: co might not be homogeneous last coercion :: kind(tc tys) ~ kind(tc new_tys):/0000000000 0 0 0 0 0000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708:0 0 000000000 0 0 000000000000 00%0$0!0"0#0'0(0)0*0+/00000-0.0,00020000/0&03040705060108None%0@ghc-lib-parserkEvery node in an expression annotated with its (non-global) free variables, both Ids and TyVars, and type.0Bghc-lib-parserEvery node in an expression annotated with its (non-global) free variables, both Ids and TyVars, and type. NB: see Note [The FVAnn invariant]0Cghc-lib-parsermEvery node in a binding group annotated with its (non-global) free variables, both Ids and TyVars, and type.0Eghc-lib-parserhFind all locally-defined free Ids or type variables in an expression returning a non-deterministic set.?rghc-lib-parserFind all locally-defined free Ids or type variables in an expression returning a composable FV computation. See Note [FV naming conventions] in FV for why export it.0Fghc-lib-parserdFind all locally-defined free Ids or type variables in an expression returning a deterministic set.0Gghc-lib-parserqFind all locally-defined free Ids or type variables in an expression returning a deterministically ordered list.0Hghc-lib-parser2Find all locally-defined free Ids in an expression0Ighc-lib-parserRFind all locally-defined free Ids in an expression returning a deterministic set.0Jghc-lib-parser_Find all locally-defined free Ids in an expression returning a deterministically ordered list.0Kghc-lib-parserXFind all locally-defined free Ids in several expressions returning a deterministic set.0Lghc-lib-parsereFind all locally-defined free Ids in several expressions returning a deterministically ordered list.0Mghc-lib-parsernFind all locally-defined free Ids or type variables in several expressions returning a non-deterministic set.?sghc-lib-parserFind all locally-defined free Ids or type variables in several expressions returning a composable FV computation. See Note [FV naming conventions] in FV for why export it.0Nghc-lib-parserwFind all locally-defined free Ids or type variables in several expressions returning a deterministically ordered list.0Oghc-lib-parser4Find all locally defined free Ids in a binding group0Pghc-lib-parser=Finds free variables in an expression selected by a predicate0Qghc-lib-parserjFinds free variables in an expression selected by a predicate returning a deterministically ordered list.?tghc-lib-parser]Finds free variables in an expression selected by a predicate returning a deterministic set.0Rghc-lib-parserCFinds free variables in several expressions selected by a predicate0Sghc-lib-parserpFinds free variables in several expressions selected by a predicate returning a deterministically ordered list.?ughc-lib-parsercFinds free variables in several expressions selected by a predicate returning a deterministic set.?vghc-lib-parserFinds the free externalo names of an expression, notably including the names of type constructors (which of course do not show up in 0E).0Ughc-lib-parserFinds the free external# names of several expressions: see ?v for details0[ghc-lib-parserorphNamesOfAxiom collects the names of the concrete types and type constructors that make up the LHS of a type family instance, including the family name itself.mFor instance, given `type family Foo a b`: `type instance Foo (F (G (H a))) b = ...` would yield [Foo,F,G,H].Used in the implementation of ":info" in GHCi.0\ghc-lib-parserZThose variables free in the right hand side of a rule returned as a non-deterministic set0]ghc-lib-parseriThose variables free in the both the left right hand sides of a rule returned as a non-deterministic set?wghc-lib-parser`Those variables free in the both the left right hand sides of a rule returned as FV computation?xghc-lib-parser_Those variables free in the both the left right hand sides of rules returned as FV computation0^ghc-lib-parserdThose variables free in the both the left right hand sides of rules returned as a deterministic set0`ghc-lib-parser<Those variables free in the right hand side of several rules0aghc-lib-parsertThis finds all locally-defined free Ids on the left hand side of a rule and returns them as a non-deterministic set0bghc-lib-parser}This finds all locally-defined free Ids on the left hand side of a rule and returns them as a determinisitcally ordered list?yghc-lib-parserfThis finds all locally-defined free Ids on the left hand side of a rule and returns an FV computation0cghc-lib-parserInverse function to 0o0dghc-lib-parser$Extract the vars reported in a FVAnn0oghc-lib-parser Annotate a )K with its (non-global) free type and value variables at every tree node.0Pghc-lib-parser Says which )s are interesting0Qghc-lib-parser Says which )s are interesting?tghc-lib-parser Says which )s are interesting?ughc-lib-parser Says which )s are interesting1$0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o10E0F0G0H0I0J0K0L0M0N0O$0P0R0Q0S0e0f0l0g0h0j0i0k0_0m0\0]0`0^0a0b0T0V0X0Z0W0Y0U0[0D0B0A0C0@0o0n0c0dHNone>X`.0ghc-lib-parserLWhat to expect for an argument to a rebindable-syntax operator. Quite like  Z, but allows for holes to be filled in by tcSyntaxOp. The callback called from tcSyntaxOp gets a list of types; the meaning of these types is determined by a left-to-right depth-first traversal of the 0 tree. So if you pass in >SynAny `SynFun` (SynList `SynFun` SynType Int) `SynFun` SynAny/you'll get three types back: one for the first 0, the element) type of the list, and one for the last 0". You don't get anything for the 0O, because you've said positively that it should be an Int, and so it shall be.<This is defined here to avoid defining it in TcExpr.hs-boot.0ghc-lib-parserAny type0ghc-lib-parser<A rho type, deeply skolemised or instantiated as appropriate0ghc-lib-parser6A list type. You get back the element type of the list0ghc-lib-parser A function.0ghc-lib-parser A known type.0ghc-lib-parser|An expected type to check against during type-checking. See Note [ExpType] in TcMType, where you'll also find manipulators.0ghc-lib-parserMake an 0 suitable for checking.0ghc-lib-parserLike 0 but accepts a regular TcType0ghc-lib-parserLike $Z but for 00ghc-lib-parser8Change the TcLevel in a skolem, extending a substitution0ghc-lib-parserFFinds outermost type-family applications occurring in a type, after expanding synonyms. In the list (F, tys) that is returned we guarantee that tys matches F's arity. For example, given type family F a :: * -> * (arity 1) calling tcTyFamInsts on (Maybe (F Int Bool) will return (F, [Int]), not (F, [Int,Bool])This is important for its use in deciding termination of type instances (see Trac #11581). E.g. type instance G [Int] = ...(F Int  bigtype)... we don't need to take  bigtypeK into account when asking if the calls on the RHS are smaller than the LHS0ghc-lib-parserLike 0X, except that the output records whether the type family and its arguments occur as an  invisiblek argument in some type application. This information is useful because it helps GHC know when to turn on -fprint-explicit-kindsX during error reporting so that users can actually see the type family being mentioned.As an example, consider: Pclass C a data T (a :: k) type family F a :: k instance C (T @(F Int) (F Bool)) -There are two occurrences of the type family F in that C instance, so 0 (C (T @(F Int) (F Bool))) will return: [ (I, F, [Int]) , (F, F, [Bool]) ] F Int is paired with I since it appears as an  invisible argument to C , whereas F Bool is paired with F since it appears an a visible argument to C. See also 'Note [Kind arguments in error messages] in TcErrors.0ghc-lib-parserIn an application of a   to some arguments, find the outermost occurrences of type family applications within the arguments. This function will not consider the  4 itself when checking for type family applications.See 0K for more details on how this works (as this function is called inside of 0).0ghc-lib-parser@Check that a type does not contain any type family applications.0ghc-lib-parser;True of both given and wanted flatten-skolems (fmv and fsk)0ghc-lib-parser-Make a sigma ty where all type variables are >. That is, they cannot be used with visible type application.0ghc-lib-parserrMake a sigma ty where all type variables are "specified". That is, they can be used with visible type application0ghc-lib-parser$Splits a forall type into a list of $9Is and the inner type. Always succeeds, even if it returns an empty list.0ghc-lib-parserGSplits a type into a TyBinder and a body, if possible. Panics otherwise0ghc-lib-parserLike 0B, but splits off only named binders, returning just the tycovars.0ghc-lib-parserLike 0$, but splits off only named binders.0ghc-lib-parser'Is this a ForAllTy with a named binder?0ghc-lib-parser"Split a sigma type into its parts.0ghc-lib-parser<Split a sigma type into its parts, going underneath as many ForAllTy5s as possible. For example, given this type synonym: Ktype Traversal s t a b = forall f. Applicative f => (a -> f b) -> s -> f t if you called tcSplitSigmaTy on this type: 2forall s t a b. Each s t a b => Traversal s t a b then it would return .([s,t,a,b], [Each s t a b], Traversal s t a b). But if you instead called tcSplitNestedSigmaTys on the type, it would return D([s,t,a,b,f], [Each s t a b, Applicative f], (a -> f b) -> s -> f t).1ghc-lib-parserLike %, but only returns the  .1ghc-lib-parserLike %, but returns G if, ?the type is structurally not a type constructor application, or1the type is a function type (e.g. application of %@u), but we currently don't even enough information to fully determine its RuntimeRep variables. For instance, FunTy (a :: k) Int. By contrast % panics in the second case.The behavior here is needed during canonicalization; see Note [FunTy and decomposing tycon applications] in TcCanonical for details.1ghc-lib-parserWSplit off exactly the specified number argument types Returns (Left m) if there are m] missing arrows in the type (Right (tys,res)) if the type looks like t1 -> ... -> tn -> res1 ghc-lib-parser?Strips off n *visible* arguments and returns the resulting type1 ghc-lib-parserReturns the number of arguments in the given type, without looking through synonyms. This is used only for error reporting. We don't look through synonyms because of #11313.1ghc-lib-parser|If the type is a tyvar, possibly under a cast, returns it, along with the coercion. Thus, the co is :: kind tv ~N kind type1ghc-lib-parser Just like 1j, but will return True for types of different kinds as long as their non-coercion structure is identical.1ghc-lib-parserLike 1_, but returns information about whether the difference is visible in the case of a mismatch. Nothing : the types are equal  Just True> : the types differ, and the point of difference is visible  Just False= : the types differ, and the point of difference is invisible?zghc-lib-parserReal worker for 1. No kind check!1ghc-lib-parserLike pickyEqTypeVis$, but returns a Bool for convenience1ghc-lib-parserHWhen inferring types, should we quantify over a given predicate? Generally true of classes; generally false of equality constraints. Equality constraints that mention quantified type variables and implicit variables complicate the story. See Notes [Inheriting implicit parameters] and [Quantifying over equality constraints]1%ghc-lib-parserIs the equality a ~r ...a.... definitely insoluble or not? a ~r Maybe a -- Definitely insoluble a ~N ...(F a)... -- Not definitely insoluble -- Perhaps (F a) reduces to Int a ~R ...(N a)... -- Not definitely insoluble -- Perhaps newtype N a = MkN Int See Note [Occurs check error] in TcCanonical for the motivation for this function.1(ghc-lib-parserLike 1', but also says I for 0 types12ghc-lib-parser.Does a type represent a floating-point number?13ghc-lib-parser Is a type  ?14ghc-lib-parser Is a type a  CallStack?15ghc-lib-parserIs a  R a  CallStack implicit parameter?(If so, return the name of the parameter.17ghc-lib-parserUDoes the given tyvar appear at the head of a chain of applications (a t1 ... tn)1Gghc-lib-parserFor every arg a tycon can take, the returned list says True if the argument is taken visibly, and False otherwise. Ends with an infinite tail of Trues to allow for oversaturation.1Hghc-lib-parserCIf the tycon is applied to the types, is the next argument visible?1Ighc-lib-parser2Should this type be applied to a visible argument??{ghc-lib-parser7Is this an invisible argument to some type application??|ghc-lib-parser7Is this an invisible argument to some type application??zghc-lib-parsertcView, if you want unwrappingb P Q R T V$ Z \ ] ^000000 _00 ` a##m#p#q#r#u#w$$<$M$N$P$Q$U$V$W$X$Y$Z$\$]$a$d$e$h$k$l$q$r$s$t$u$y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%& &&&&&&0&8&>&?&@&A&M&O&Z&]&c&h&m&q&r&t&u&y&z0V0W0X0Y0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1Ib000000000000000$<000000000000000000000q0r000000000000s0t0u0v0w0x0y0z0{0|0}0~00000000000000000 ^000000 a `0 _00000000000%0000000000000000000000000000%000000011111 11&8%%10111 1 1 %1 111& 000#r&r&t&u&q111111&1'1(1)121+1*1-1.131,1/1011141516&0#10#w1171%1118190V0X0W0Y011!1"11 1#11$00000001<1>1?1=1@1B1C1A1;1D1: Q&y&z$d$e% Z R P T$\$]&&&&&$Y$Z%#u%$a$U$V$W$X&>&?&@&A&M&O111$h%$Q$P V$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&c&h&m#p#q$k$l&Z$u$y$q$s&]$r$t$ ]$$ \$$$M$N$$$$$$0p1E1F#m1G1H1I00?}3None251Ughc-lib-parserSet of visible orphan modules, according to what modules have been directly imported. This is based off of the dep_orphs field, which records transitively reachable orphan modules (modules that define orphan instances).1Vghc-lib-parser1V represents the combination of the global type class instance environment, the local type class instance environment, and the set of transitively reachable orphan modules (according to what modules have been directly imported) used to test orphan instance visibility.1\ghc-lib-parserA type-class instance. Note that there is some tricky laziness at work here. See Note [ClsInst laziness and the rough-match fields] for more details.1^ghc-lib-parser Class name1_ghc-lib-parserTop of type args1`ghc-lib-parseris_dfun_name = idName . is_dfun.We use 1` for the visibility check, 1x, which needs to know the  A which the dictionary is defined in. However, we cannot use the   attached to 1d since doing so would mean we would potentially pull in an entire interface file unnecessarily. This was the cause of #12367.1gghc-lib-parsertA fuzzy comparison function for class instances, intended for sorting instances before displaying them to the user.1rghc-lib-parserCollects the names of concrete types and type constructors that make up the head of a class instance. For instance, given `class Foo a b`:W`instance Foo (Either (Maybe Int) a) Bool` would yield [Either, Maybe, Int, Bool].Used in the implementation of ":info" in GHCi.The 0 is because of instance Foo a => Baz T where ... The decl is an orphan if Baz and T are both not locally defined, even if Foo *is* locally defined1xghc-lib-parserJTest if an instance is visible, by checking that its origin module is in 1U2. See Note [Instance lookup and orphan instances]1zghc-lib-parserzChecks for an exact match of ClsInst in the instance environment. We use this when we do signature checking in TcRnDriver1ghc-lib-parserTrue when when the instance heads are the same e.g. both are Eq [(a,b)] Used for overriding in GHCi Obviously should be insenstive to alpha-renaming1ghc-lib-parserLook up an instance in the given instance environment. The given class application must match exactly one instance and the match may not contain any flexi type variables. If the lookup is unsuccessful, yield 'Left errorMessage'.1ghc-lib-parserSee Note [Rules for instance lookup] ^ See Note [Safe Haskell Overlapping Instances] in TcSimplify ^ See Note [Safe Haskell Overlapping Instances Implementation] in TcSimplify?~ghc-lib-parserbAdd a new solution, knocking out strictly less specific ones See Note [Rules for instance lookup]1ughc-lib-parserthe name of the classghc-lib-parser(the types which the class was applied toghc-lib-parserthe  of the dictionary bindingghc-lib-parserthe  of the dictionary.ghc-lib-parsermay this instance overlap?ghc-lib-parseris this instance an orphan?? ` b c d e a f g h i ''1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111?1S1R f g h i ` b c d e a 1\1]1^1_1`1a1b1c1d1e1f1T1n1o1p1q1s1t1u1k1l1m1g1r1V1W1X1Y1Z1U1[1v1|1}1~11{111w1z1x1y1''1h1i1jNoneJ ?ghc-lib-parser.Do we force the result to be representational??ghc-lib-parserDo we apply a sym to the result?1ghc-lib-parserZoptCoercion applies a substitution to a coercion, *and* optimises it to reduce its size?ghc-lib-parser|Optimize a coercion, making no assumptions. All coercions in the lifting context are already optimized (and sym'd if nec'y)?ghc-lib-parserGOptimize a coercion, knowing the coercion's role. No other assumptions.?ghc-lib-parser=Optimize a coercion, knowing the coercion's non-Phantom role.?ghc-lib-parser Optimize a non-phantom coercion.?ghc-lib-parser Optimize a non-phantom coercion.?ghc-lib-parseroOptimize a phantom coercion. The input coercion may not necessarily be a phantom, but the output sure will be.1ghc-lib-parserCheck to make sure that an AxInstCo is internally consistent. Returns the conflicting branch, if it exists See Note [Conflict checking with AxiomInstCo]?ghc-lib-parser/Conditionally set a role to be representational?ghc-lib-parsercIf we require a representational role, return that. Otherwise, return the "default" role provided.?ghc-lib-parserThe role of the input coercion?ghc-lib-parser current role?ghc-lib-parser"default" role1111None2h 1ghc-lib-parser Evidence for  CallStack implicit parameters.1ghc-lib-parserEvCsPushCall name loc stk represents a call to name, occurring at loc, in a calling context stk.1ghc-lib-parserInstructions on how to make a Typeable0 dictionary. See Note [Typeable evidence terms]1ghc-lib-parserDictionary for  Typeable T where TF is a type constructor with all of its kind variables saturated. The [EvTerm] is Typeable" evidence for the applied kinds..1ghc-lib-parserDictionary for Typeable (s t), given a dictionaries for s and t.1ghc-lib-parserDictionary for Typeable (s -> t), given a dictionaries for s and t.1ghc-lib-parser%Dictionary for a type literal, e.g. Typeable "foo" or  Typeable 3 The 1 is evidence of, e.g.,  KnownNat 3 (see Trac #10348)1ghc-lib-parser\This version does a slow check, calculating the related types and seeing if they are equal.1ghc-lib-parser5mkWpFuns [(ty1, wrap1), (ty2, wrap2)] ty_res wrap_res , where wrap1 :: ty1 "->" ty1' and wrap2 :: ty2 "->" ty2', wrap3 :: ty3 "->" ty3' and ty_res is either ty3 or ty3', gives a wrapper /(ty1' -> ty2' -> ty3) "->" (ty1 -> ty2 -> ty3'). Notice that the result wrapper goes the other way round to all the others. This is a result of sub-typing contravariance. The SDoc is a description of what you were doing when you called mkWpFuns.1ghc-lib-parser,Any sort of evidence Id, including coercions1ghc-lib-parserd |> co2ghc-lib-parser Create a )s that unwraps an implicit-parameter or overloaded-label dictionary to expose the underlying value. We expect the )A to have the form `IP sym ty` or `IsLabel sym ty`, and return a ) `co :: IP sym ty ~ ty` or `co :: IsLabel sym ty ~ Proxy# sym -> ty`. See also Note [Type-checking overloaded labels] in TcExpr.2ghc-lib-parser Create a )> that wraps a value in an implicit-parameter dictionary. See 2. !6!7!8!9$111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111$!6!7!8!9 11111111111111111111111111111122None ,12>HVH2ghc-lib-parser!Haskell Pattern Synonym Direction2ghc-lib-parserRecord Pattern Synonym Field2ghc-lib-parserHaskell Pattern Synonym Details2ghc-lib-parser!Type checker Specification Pragma2ghc-lib-parser~The Id to be specialised, a wrapper that specialises the polymorphic function, and inlining spec for the specialised function2ghc-lib-parser*Located Type checker Specification Pragmas2ghc-lib-parser#Type checker Specialisation Pragmas2 conveys  SPECIALISE/ pragmas from the type checker to the desugarer2ghc-lib-parserPSuper-specialised: a default method should be macro-expanded at every call site2ghc-lib-parserFixity Signature2"ghc-lib-parserLocated Fixity Signature2#ghc-lib-parserSignatures and pragmas2$ghc-lib-parserAn ordinary type signature f :: Num a => a -> axAfter renaming, this list of Names contains the named wildcards brought into scope by this signature. For a signature _ -> _a -> Bool., the renamer will leave the unnamed wildcard _$ untouched, and the named wildcard _a is then replaced with fresh meta vars in the type. Their names are stored in the type signature that brought them into scope, in this third field to be more specific.l : l , l2%ghc-lib-parser A pattern synonym type signature ,pattern Single :: () => (Show a) => a -> [a]l : l , l,l l,l2&ghc-lib-parserA signature for a class method False: ordinary class-method signature True: generic-default class method signature e.g. class C a where op :: a -> a -- Ordinary default op :: Eq a => a -> a -- Generic default No wildcards allowed herel : l , l2'ghc-lib-parserA type signature in generated code, notably the code generated for record selectors. We simply record the desired Id itself, replete with its name, type and IdDetails. Otherwise it's just like a type signature: there should be an accompanying binding2(ghc-lib-parserAn ordinary fixity declaration  infixl 8 ***l : l , l2)ghc-lib-parserAn inline pragma {#- INLINE f #-}l : l  '{-# INLINE' and '[' , l,l , l,l , l2*ghc-lib-parserA specialisation pragma "{-# SPECIALISE f :: Int -> Int #-}l : l, l '{-# SPECIALISE' and '[', l, l, l ']' and '#-}', l2+ghc-lib-parser6A specialisation pragma for instance declarations only ${-# SPECIALISE instance Eq [Int] #-}L(Class tys); should be a specialisation of the current instance declarationl : l, l,l2,ghc-lib-parser$A minimal complete definition pragma ${-# MINIMAL a | (b, c | (d | e)) #-}l : l, l,l, l2-ghc-lib-parser+A "set cost centre" pragma for declarations {-# SCC funName #-}or &{-# SCC funName "cost_centre_name" #-}2.ghc-lib-parserA complete match pragma {-# COMPLETE C, D [:: T] #-}Used to inform the pattern match checker about additional complete matchings which, for example, arise from pattern synonym definitions.20ghc-lib-parserLocated Signature21ghc-lib-parserImplicit parameter bindings.These bindings start off as (Left "x") in the parser and stay that way until after type-checking when they are replaced with (Right d), where "d" is the name of the dictionary holding the evidence for the implicit parameter.l : l24ghc-lib-parser"Located Implicit Parameter Binding May have l : l when in a list25ghc-lib-parser#Haskell Implicit Parameter Bindings28ghc-lib-parserl : l, l,l l,l '{', l '}',Pattern Synonym binding2;ghc-lib-parser.Post renaming, FVs. See Note [Bind free vars]2<ghc-lib-parserName of the pattern synonym2=ghc-lib-parserFormal parameter names2>ghc-lib-parserRight-hand side2?ghc-lib-parserDirectionality2@ghc-lib-parserAbtraction Bindings Export2Dghc-lib-parser(Any INLINE pragma is attached to this Id2Fghc-lib-parserXSee Note [ABExport wrapper] Shape: (forall abs_tvs. abs_ev_vars => abe_mono) ~ abe_poly2Gghc-lib-parserSPECIALISE pragmas2Jghc-lib-parserFree variables2Kghc-lib-parserType of the GRHSs2Lghc-lib-parser1Haskell Binding with separate Left and Right id's2Mghc-lib-parserFunction-like Binding'FunBind is used for both functions f x = e) and variables  f = x -> e) and strict variables  !x = x + 1/Reason 1: Special case for type inference: see .Reason 2: Instance decls can only have FunBinds, which is convenient. If you change this, you'll need to change e.g. rnMethodBinds'But note that the form f :: a->a = ...Q parses as a pattern binding, just like (f :: a -> a) = ... 6Strict bindings have their strictness recorded in the ' of their  MatchContext`. See Note [FunBind vs PatBind] for details about the relationship between FunBind and PatBind.lsl), attached to each element of fun_matchesl,l, l,l,2Nghc-lib-parserPattern BindingThe pattern is never a simple variable; That case is done by FunBind. See Note [FunBind vs PatBind] for details about the relationship between FunBind and PatBind.2Oghc-lib-parserVariable BindingQDictionary binding and suchlike. All VarBinds are introduced by the type checker2Pghc-lib-parserAbstraction Bindings2Qghc-lib-parserl : l , l,l , l l '{',l '}'2Sghc-lib-parsermAfter the renamer, this contains the locally-bound free variables of this defn. See Note [Bind free vars]2Ughc-lib-parser The payload2Vghc-lib-parserJCoercion from the type of the MatchGroup to the type of the Id. Example: 1 f :: Int -> forall a. a -> a f x y = y Then the MatchGroup will have type (Int -> a' -> a') (with a free type variable a'). The coercion will take a CoreExpr of this type and convert it to a CoreExpr of type Int -> forall a'. a' -> a' Notice that the coercion captures the free a'.2Wghc-lib-parserTicks to put on the rhs, if any2Xghc-lib-parserSee Note [Bind free vars]2[ghc-lib-parserJTicks to put on the rhs, if any, and ticks to put on the bound variables.2^ghc-lib-parserLocated only for consistency2_ghc-lib-parserTrue  =H inline this binding regardless (used for implication constraints only)2bghc-lib-parserIncludes equality constraints2cghc-lib-parserAbsBinds only gets used when idL = idR after renaming, but these need to be idL's for the collect... code in HsUtil to have the right type2dghc-lib-parseraEvidence bindings Why a list? See TcInstDcls Note [Typechecking plan for instance declarations]2eghc-lib-parserTypechecked user bindings2gghc-lib-parserELocated Haskell Binding with separate Left and Right identifier types2hghc-lib-parserFLocated Haskell Bindings with separate Left and Right identifier types2ighc-lib-parserHaskell Binding2jghc-lib-parserLocated Haskell Bindings2kghc-lib-parserLocated Haskell Binding2nghc-lib-parserHaskell Value bindings with separate Left and Right identifier types (not implicit parameters) Used for both top level and nested bindings May contain pattern synonym bindings2oghc-lib-parserValue Bindings InYBefore renaming RHS; idR is always RdrName Not dependency analysed Recursive by default2pghc-lib-parserValue Bindings OutvAfter renaming RHS; idR can be Name or Id Dependency analysed, later bindings in the list may depend on earlier ones.2qghc-lib-parserHaskell Value Bindings2sghc-lib-parserDHaskell Local Bindings with separate Left and Right identifier typesBindings in a 'let' expression or a 'where' clause2tghc-lib-parserHaskell Value Bindings2ughc-lib-parser#Haskell Implicit Parameter Bindings2vghc-lib-parserEmpty Local Bindings2xghc-lib-parserLocated Haskell local bindings2yghc-lib-parserHaskell Local Bindings2ghc-lib-parserOUsing SourceText in case the pragma was spelled differently or used mixed case22222222222222222 2!2"2#2/2.2-2,2+2*2)2(2'2&2%2$202123222425262728292:2?2>2=2<2;2@2B2A2G2F2E2D2C2H2I2K2J2L2R2Q2P2O2N2M2f2e2d2c2b2a2`2_2^2]2\2[2Z2Y2X2W2V2U2T2S2g2h2i2j2k2l2m2n2p2o2q2r2s2w2v2u2t2x2y2z2{2|2}2~222222222222222222222222222222222y2x2s2w2v2u2t2r2q2n2p2o2l2m2k2j2i2h2g2L2R2Q2P2O2N2M2f2e2d2c2b2a2`2_2^2]2\2[2Z2Y2X2W2V2U2T2S2H2I2K2J2@2B2A2G2F2E2D2C28292:2?2>2=2<2;2z2{2|2}2~22222222222526272224212322202#2/2.2-2,2+2*2)2(2'2&2%2$2"22 2!22222222222222222222222222222222222tNone%,12456=>?HV! ghc-lib-parserPatternl : l2ghc-lib-parserHaskell Record Fieldl : l,@For details on above see note [Api annotations] in ApiAnnotation2ghc-lib-parser!Filled in by renamer when punning2ghc-lib-parserNote [Punning]2ghc-lib-parserHaskell Record Update Field2ghc-lib-parserHaskell Record Field2ghc-lib-parser#Located Haskell Record Update Field2ghc-lib-parserLocated Haskell Record Field2ghc-lib-parserLocated Haskell Record Field2ghc-lib-parserHaskell Record FieldsSHsRecFields is used only for patterns and expressions (not data type declarations)2ghc-lib-parser#Haskell Constructor Pattern Details2ghc-lib-parserdWildcard Pattern The sole reason for a type on a WildPat is to support hsPatType :: Pat Id -> Type2ghc-lib-parserVariable Pattern2ghc-lib-parserLazy Pattern ^ - l : l2ghc-lib-parserAs pattern ^ - l : l2ghc-lib-parserAParenthesised pattern See Note [Parens in HsSyn] in HsExpr ^ - l : l '('&, l ')'2ghc-lib-parserBang pattern ^ - l : l2ghc-lib-parserSyntactic Listl : l '['&, l ']'2ghc-lib-parserTuple sub-patternsl : l '(' or '(#', l ')' or '#)'2ghc-lib-parserAnonymous sum patternl : l '(#', l '#)'2ghc-lib-parserConstructor Pattern In2ghc-lib-parserConstructor Pattern Out2ghc-lib-parser View Pattern2ghc-lib-parser&Splice Pattern (Includes quasi-quotes)2ghc-lib-parserALiteral Pattern Used for *non-overloaded* literal patterns: Int, Char, Int, Char, String, etc.2ghc-lib-parserNatural Patternl : l 2ghc-lib-parser n+k pattern2ghc-lib-parserPattern with a type signature2ghc-lib-parserCoercion Pattern2ghc-lib-parser4Trees that Grow extension point for new constructors2ghc-lib-parser2 p pat returns I if the pattern pat% needs parentheses under precedence p.?ghc-lib-parser? p cp returns I if the constructor patterns cp% needs parentheses under precedence p.2ghc-lib-parser2 p pat checks if 2 p pat is true, and if so, surrounds pat with a 2. Otherwise, it simply returns pat.C 22222222222222222222222222222222222222222222222222222222222222222C 2222222222222222222222222222 2222222222222222222222222222222222222None ,12456>HV2ghc-lib-parserRole Annotation Declaration2ghc-lib-parserl : l , l3ghc-lib-parser#Located Role Annotation Declaration3ghc-lib-parserAnnotation Provenance3ghc-lib-parserAnnotation Declaration3ghc-lib-parserl : l , l l l3ghc-lib-parserLocated Annotation Declaration3 ghc-lib-parserWarning pragma Declaration3 ghc-lib-parser"Located Warning pragma Declaration3 ghc-lib-parserWarning pragma Declarations3ghc-lib-parserLocated Warning Declarations3ghc-lib-parser!Documentation comment Declaration3ghc-lib-parser)Located Documentation comment Declaration3ghc-lib-parser Rule Binder3ghc-lib-parserl : l, l,l3ghc-lib-parserLocated Rule Binder3!ghc-lib-parserRule Declaration3"ghc-lib-parserl : l,l , l , l , l,l , l,3$ghc-lib-parser-After renamer, free-vars from the LHS and RHS3%ghc-lib-parser'Note [Pragma source text] in BasicTypes3'ghc-lib-parserForall'd type vars3(ghc-lib-parser_Forall'd term vars, before typechecking; after typechecking this includes all forall'd vars3+ghc-lib-parserLocated Rule Declaration3,ghc-lib-parserRule Declarations32ghc-lib-parserLocated Rule Declarations3;ghc-lib-parserForeign Declaration3=ghc-lib-parserl : l , l,l , l3Eghc-lib-parserLocated Foreign Declaration3Fghc-lib-parserDefault Declaration3Gghc-lib-parserls : l , l,l3Ighc-lib-parserLocated Default Declaration3Jghc-lib-parserHWhich technique the user explicitly requested when deriving an instance.3Kghc-lib-parserGHC's "standard" strategy, which is to implement a custom instance for the data type. This only works for certain types that GHC knows about (e.g., ', 3, , when -XDeriveFunctor is enabled, etc.)3Lghc-lib-parser -XDeriveAnyClass3Mghc-lib-parser -XGeneralizedNewtypeDeriving3Nghc-lib-parser  -XDerivingVia3Oghc-lib-parserA   3J.3Pghc-lib-parser+Stand-alone 'deriving instance' declaration3Tghc-lib-parserThe instance type to derive. It uses an .9 because the context is allowed to be a single wildcard: !deriving instance _ => Eq (Foo a)4Which signifies that the context should be inferred.3Vghc-lib-parserl : l , l, l , l,    , l,l3Wghc-lib-parser3Located stand-alone 'deriving instance' declaration3Xghc-lib-parserInstance Declaration3cghc-lib-parserLocated Instance Declaration3dghc-lib-parserClass Instance Declaration3eghc-lib-parserl : l , l , l,l,3mghc-lib-parserl : l&, l,3nghc-lib-parser"Located Class Instance Declaration3oghc-lib-parserFamily EquationOne equation in a type family instance declaration, data family instance declaration, or type family default. See Note [Type family instance declarations in HsSyn] See Note [Family instance declaration binders]3pghc-lib-parserl : l3tghc-lib-parserOptional quantified type vars3vghc-lib-parserFixity used in the declaration3xghc-lib-parserFamily Instance Equation3yghc-lib-parser Located Family Instance Equation3zghc-lib-parser Data Family Instance Declaration3{ghc-lib-parserl : l  , l ,l , l l,l , l3}ghc-lib-parser(Located Data Family Instance Declaration3~ghc-lib-parser Type Family Instance Declaration3ghc-lib-parserl : l , l,3ghc-lib-parser(Located Type Family Instance Declaration3ghc-lib-parserType Family Default Equation3ghc-lib-parserType Family Instance Equation3ghc-lib-parserHaskell Type Patterns3ghc-lib-parser$Located Type Family Default Equation3ghc-lib-parser%Located Type Family Instance Equation3ghc-lib-parser,Haskell data Constructor Declaration Details3ghc-lib-parser data T b = forall a. Eq a => MkT a b MkT :: forall b a. Eq a => MkT a b data T b where MkT1 :: Int -> T Int data T = Int MkT, Int | MkT2 data T a where Int MkT Int :: T Int ls : l, l,l , l,l, l,l, l,ldata Constructor Declaration3ghc-lib-parserTrue  =2 explicit forall False => hsq_explicit is empty3ghc-lib-parserUser-written context (if any)3ghc-lib-parserArguments; never InfixCon3ghc-lib-parser Result type3ghc-lib-parserA possible Haddock comment.3ghc-lib-parserExistentials only3ghc-lib-parser$Located data Constructor Declaration3ghc-lib-parser newtype Blah ...3ghc-lib-parser  data Blah ...3ghc-lib-parser A single deriving clause of a data declaration.l : l, l , l,    , l,l3ghc-lib-parser;The user-specified strategy (if any) to use when deriving 3.3ghc-lib-parserThe types to derive.It uses .s because, with -XGeneralizedNewtypeDerivingH, we can mention type variables that aren't bound by the datatype, e.g. data T b = ... deriving (C [a])&should produce a derived instance for  C [a] (T b).3ghc-lib-parserHaskell Deriving clause3ghc-lib-parserHaskell Data type Definition3ghc-lib-parser:Declares a data type or newtype, giving its constructors  data/newtype T a =  constrs! data/newtype instance T [a] =  constrs 3ghc-lib-parserContext3ghc-lib-parserOptional kind signature.(Just k) for a GADT-style data, or  data instance decl, with explicit kind sigAlways Nothing for H98-syntax decls3ghc-lib-parserData constructorsFor data T a = T1 | T2 a the 3 s all have 3. For data T a where { T1 :: T a } the  LConDecls all have 3.3ghc-lib-parser Optional  'deriving' claues3ghc-lib-parserGL if we're in an hs-boot file and the user said "type family Foo x where .."3ghc-lib-parser.If the user supplied an injectivity annotation it is represented using InjectivityAnn. At the moment this is a single injectivity condition - see Note [Injectivity annotation]. `Located name` stores the LHS of injectivity condition. `[Located name]` stores the RHS of injectivity condition. Example:.type family Foo a b c = r | r -> a c where ...,This will be represented as "InjectivityAnn r [a, c]"3ghc-lib-parserl : l, l3ghc-lib-parserLocated Injectivity Annotation3ghc-lib-parsertype Family Declaration3ghc-lib-parserl : l, l , l, l, l, l, l, l, l, l3ghc-lib-parserLocated type Family Declaration3ghc-lib-parsertype Family Result Signature3ghc-lib-parserl :3ghc-lib-parserl : l,l, l3ghc-lib-parserl : l,l, l, l3ghc-lib-parser$Located type Family Result Signature3ghc-lib-parserType or Class Group3ghc-lib-parserdoes this have a CUSK?3ghc-lib-parserA type or class declaration.3ghc-lib-parser type/data family T :: *->*l : l, l , l,l, l,l, l,l, l,l, l3ghc-lib-parsertype declarationl : l, l,3ghc-lib-parserdata declarationl : l , l, l , l ,l l,3ghc-lib-parserl : l , l,l , lThe tcdFDs will have l, l l3ghc-lib-parserPost renameer, FVs3ghc-lib-parserType constructor3ghc-lib-parserDType variables; for an associated type these include outer binders3ghc-lib-parserFixity used in the declaration3ghc-lib-parserPost renamer, CUSK flag, FVs3ghc-lib-parserPost renamer, FVs3ghc-lib-parser Context...3ghc-lib-parserFunctional deps3ghc-lib-parserMethods' signatures3ghc-lib-parserDefault methods3ghc-lib-parserAssociated types;3ghc-lib-parserAssociated type defaults3ghc-lib-parser Haddock docs3ghc-lib-parser&Located Declaration of a Type or Class3ghc-lib-parserSplice Declaration3ghc-lib-parserLocated Splice Declaration3ghc-lib-parser Haskell GroupA 3 is categorised into a 3" before being fed to the renamer.3ghc-lib-parserA Haskell Declaration3ghc-lib-parserType or Class Declaration3ghc-lib-parserInstance declaration3ghc-lib-parserDeriving declaration4ghc-lib-parserValue declaration4ghc-lib-parserSignature declaration4ghc-lib-parser 'default' declaration4ghc-lib-parserForeign declaration4ghc-lib-parserWarning declaration4ghc-lib-parserAnnotation declaration4ghc-lib-parserRule declaration4ghc-lib-parser+Splice declaration (Includes quasi-quotes)4ghc-lib-parser!Documentation comment declaration4 ghc-lib-parserRole annotation declaration4ghc-lib-parserTrue  = argument is a data/newtype declaration.4ghc-lib-parser!type or type instance declaration4ghc-lib-parser type class4ghc-lib-parsertype/data family declaration4ghc-lib-parsertype family declaration4ghc-lib-parseropen type family info4ghc-lib-parserclosed type family info4ghc-lib-parserdata family declaration4ghc-lib-parser~Does this declaration have a complete, user-supplied kind signature? See Note [CUSKs: complete user-supplied kind signatures]4%ghc-lib-parserDoes this family declaration have a complete, user-supplied kind signature? See Note [CUSKs: complete user-supplied kind signatures]?ghc-lib-parserFDoes this family declaration have user-supplied return kind signature?4&ghc-lib-parser-Maybe return name of the result type variable4'ghc-lib-parser Convert a 3 to a "4/ghc-lib-parserA short description of a DerivStrategy'.3xghc-lib-parser Here, the pats^ are type patterns (with kind and type bndrs). See Note [Family instance declaration binders]3ghc-lib-parser May have l : l when in a list3ghc-lib-parser May have l : l# when in a GADT constructor list3ghc-lib-parser The optional deriving clauses of a data declaration. ClausesI is plural because one can specify multiple deriving clauses using the -XDerivingStrategies language extension. The list of 3s corresponds to exactly what the user requested to derive, in order. If no deriving clauses were specified, the list is empty.4 ghc-lib-parserWhen in a list this may havel : l4%ghc-lib-parser4if associated, does the enclosing class have a CUSK?<   2223333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3s3r3t3u3v3w3x3y3z3{3|3}3~333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444 33344444444 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445<3444 33344444444 4 33333333333333333333334'333333333333333333333333333333333334$4 4!4"4#44444444444444444%333333333333X3Y3Z3[3\3]3^3_3`3a3b3c33333~3334.3z3{3|3}4,4-3x3y3o3p3q3s3r3t3u3v3w333333n3d3e3f3g3h3i3j3k3l3m3P3Q3R3S3T3U3V3W3J3K3L3M3N3O4/323,3-3.3/30313!3"3#3$3%3&3'3(3)3*3+33 333334140423F3G3H3I   33333;3<3=3>3?3@3A3B3C3D3E393:333435363738333333333333333334*4+4(4)333333433 3 3 3 3 33333333333333442223453333333334&3333333333333334 4 44vNone,124>EHVXa ghc-lib-parserLocated Haskell Expression ghc-lib-parserSyntax ExpressionSyntaxExpr is like 5VY, but it's filled in a little earlier, by the renamer. It's used for rebindable syntax.E.g. (>>=)4 is filled in before the renamer by the appropriate  for (>>=)H, and then instantiated by the type checker with its type args etcThis should desugar to csyn_res_wrap $ syn_expr (syn_arg_wraps[0] arg0) (syn_arg_wraps[1] arg1) ...Xwhere the actual arguments come from elsewhere in the AST. This could be defined using  GhcPass pA and such, but it's harder to get it all to work out that way. (5X! is hard to write, for example.) ghc-lib-parserGuarded Right-Hand Sides8GRHSs are used both for pattern bindings and for Matchesl : l , l,l , l,l l,l ghc-lib-parserHaskell Splice ghc-lib-parser;Haskell Command (e.g. a "statement" in an Arrow proc block) ghc-lib-parserA Haskell expression.4_ghc-lib-parserGHaskell Statement Context. It expects to be parameterised with one of RdrName,  or Id4bghc-lib-parser do { ... }4cghc-lib-parser'mdo { ... } ie recursive do-expression4dghc-lib-parser'do-notation in an arrow-command context4eghc-lib-parser&A command-line Stmt in GHCi pat <- rhs4fghc-lib-parser!Pattern guard for specified thing4gghc-lib-parserA branch of a parallel stmt4hghc-lib-parserA branch of a transform stmt4ighc-lib-parserHaskell Match ContextmContext of a pattern match. This is more subtle than it would seem. See Note [Varieties of pattern matches].4jghc-lib-parser8A pattern matching on an argument of a function binding4kghc-lib-parserPatterns of a lambda4lghc-lib-parser)Patterns and guards on a case alternative4mghc-lib-parser$Guards of a multi-way if alternative4nghc-lib-parserPatterns of a proc4oghc-lib-parser"A pattern binding eg [y] <- e = e4pghc-lib-parser`Guards of pattern bindings, e.g., (Just b) | Just _ <- x = e | otherwise = e'4qghc-lib-parseroRecord update [used only in DsExpr to tell matchWrapper what sort of runtime error message to generate]4rghc-lib-parser=Pattern of a do-stmt, list comprehension, pattern guard, etc4sghc-lib-parser!A Template Haskell pattern splice4tghc-lib-parser1A Template Haskell pattern quotation [p| (a,b) |]4ughc-lib-parserA pattern synonym declaration4vghc-lib-parserfunction binder of f4wghc-lib-parser fixing of f4xghc-lib-parserwas f' banged? See Note [FunBind vs PatBind]4yghc-lib-parserArithmetic Sequence Information4~ghc-lib-parserHaskell Bracket4ghc-lib-parserPending Type-checker Splice4ghc-lib-parserPending Renamer Splice4ghc-lib-parserHaskell Spliced Thing-Values that can result from running a splice.4ghc-lib-parserHaskell Spliced Expression4ghc-lib-parserHaskell Spliced Type4ghc-lib-parserHaskell Spliced Pattern4ghc-lib-parser&Finalizers produced by a splice with &XSee Note [Delaying modFinalizers in untyped splices] in RnSplice. For how this is used.4ghc-lib-parserA splice can appear with various decorations wrapped around it. This data type captures explicitly how it was originally written, for use in the pretty printer.4ghc-lib-parser$( splice ) or $$( splice )4ghc-lib-parser$splice or $$splice4ghc-lib-parser bare splice4ghc-lib-parserApplicative Argument4ghc-lib-parserParenthesised Statement Block4ghc-lib-parser6API Annotations when in qualifier lists or guards - l : l , l,l , l,l , l,l4ghc-lib-parser42 represents an applicative expression built with  and ". It is generated by the renamer, and is desugared into the appropriate applicative expression by the desugarer, but it is intended to be invisible in error messages.4For full details, see Note [ApplicativeDo] in RnExpr4ghc-lib-parserl : l l '{',l '}',4ghc-lib-parserl : l4ghc-lib-parserGhci Statement4ghc-lib-parserGhci Located Statement4ghc-lib-parserGuard Statement4ghc-lib-parserGuard Located Statement4ghc-lib-parserExpression Statement4ghc-lib-parserExpression Located Statement4ghc-lib-parserCommand Statement4ghc-lib-parserCommand Located Statement4ghc-lib-parserdo block Statement4ghc-lib-parser3Located Statement with separate Left and Right id's4ghc-lib-parserLocated do block Statement4ghc-lib-parserGuarded Right Hand Side.4ghc-lib-parserLocated Guarded Right-Hand Side4ghc-lib-parser Guarded RHSs4ghc-lib-parserThe where clause4ghc-lib-parser Located Match May have l : l when in a list4ghc-lib-parserHaskell Record Bindings4ghc-lib-parserHaskell Top-level Command4ghc-lib-parserTop-level command, introducing a new arrow. This may occur inside a proc (where the stack is empty) or as an argument of a command-forming operator.!Located Haskell Top-level Command4ghc-lib-parserHaskell Array Application Type4ghc-lib-parserl : l , l,l , l4ghc-lib-parserl : l '(|' , l '|)'4ghc-lib-parserl : l , l,5ghc-lib-parserl : l '(', l ')'5ghc-lib-parserl : l  , l!,l '{' , l '}'5ghc-lib-parserl : l" , l , l,l , l#,5ghc-lib-parserl : l , l '{' , l '}',l$5ghc-lib-parserl : l%, l, l, l, l5ghc-lib-parser*Located Haskell Command (for arrow syntax)5ghc-lib-parserl : lHaskell Tuple Argument5 ghc-lib-parser The argument5 ghc-lib-parser-The argument is missing, but this is its type5 ghc-lib-parser&Note [Trees that Grow] extension point5 ghc-lib-parserLocated Haskell Tuple Argument5 is used for tuple sections (,a,) is represented by 3ExplicitTuple [Missing ty1, Present a, Missing ty3] Which in turn stands for (x:ty1 y:ty2. (x,a,y))5 ghc-lib-parserExtra data fields for a 51, added by the type checker5ghc-lib-parserExtra data fields for a 50, added by the type checker5ghc-lib-parserVariable5ghc-lib-parserUnbound variable; also used for "holes" (_ or _x). Turned from HsVar to HsUnboundVar by the renamer, when it finds an out-of-scope variable or hole. Turned into HsVar by type checker, to support deferred type errors.5ghc-lib-parserDAfter typechecker only; must be different HsVar for pretty printing5ghc-lib-parserCVariable pointing to record selector Not in use after typechecking5ghc-lib-parserGOverloaded label (Note [Overloaded labels] in GHC.OverloadedLabels) Just id means RebindableSyntax0 is in use, and gives the id of the in-scope  fromLabel&. NB: Not in use after typechecking5ghc-lib-parser2Implicit parameter (not in use after typechecking)5ghc-lib-parserOverloaded literals5ghc-lib-parser Simple (non-overloaded) literals5ghc-lib-parser3Lambda abstraction. Currently always a single matchl : l , l,5 ghc-lib-parser Lambda-casel : l , l ,l , l5!ghc-lib-parser Application5"ghc-lib-parserVisible type applicationZExplicit type argument; e.g f @Int x y NB: Has wildcards, but no implicit quantificationl : l,5#ghc-lib-parserFOperator applications: NB Bracketed ops such as (+) come out as Vars.5$ghc-lib-parserDNegation operator. Contains the negated expression and the name of l : l&5%ghc-lib-parser.Parenthesised expr; see Note [Parens in HsSyn]5(ghc-lib-parser-Used for explicit tuples and sections thereofl : l , l5)ghc-lib-parserUsed for unboxed sum typesl : l '(#' , l, l '#)',There will be multiple lK, (1 - alternative) before the expression, (arity - alternative) after it5*ghc-lib-parserl : l  , l!,l '{' , l '}'5+ghc-lib-parserl : l" , l , l,l , l#,5,ghc-lib-parser Multi-way ifl : l" l,l,5-ghc-lib-parserlet(rec)l : l , l '{' , l '}',l$5.ghc-lib-parserl : l%, l, l, l, l5/ghc-lib-parserSyntactic list: [a,b,c,...]l : l '[', l ']'50ghc-lib-parserRecord constructionl : l '{' , l,l '}'51ghc-lib-parser Record updatel : l '{' , l,l '}'52ghc-lib-parser,Expression with an explicit type signature.  e :: typel : l53ghc-lib-parserArithmetic sequencel : l '[', l,l, l ']'55ghc-lib-parserl : l  '{-# CORE', l, l '#-}'56ghc-lib-parserl : l , l',l( , l,l)59ghc-lib-parserl : l , l5:ghc-lib-parserproc notation for Arrowsl : l* , l5;ghc-lib-parserl : l+,5<ghc-lib-parserl : l , l,l , l5=ghc-lib-parserl : l '(|' , l '|)'5@ghc-lib-parserl : l , l '{-# GENERATED' , l,l , l,,l , l& , l,l, , l , l '#-}'5Bghc-lib-parserl : l5Cghc-lib-parserl : l5Dghc-lib-parserl : l5Mghc-lib-parserRAn unbound variable; used for treating out-of-scope variables as expression holesHEither "x", "y" Plain OutOfScope or "_", "_x" A TrueExprHoleWBoth forms indicate an out-of-scope variable, but the latter indicates that the user expects> it to be out of scope, and just wants GHC to report its type5Nghc-lib-parserlAn (unqualified) out-of-scope variable, together with the GlobalRdrEnv with respect to which it is unbound5Oghc-lib-parser"A "true" expression hole (_ or _x)5Pghc-lib-parser'Command Syntax Table (for Arrow syntax)5Ughc-lib-parserPost-Type checking TablerWe use a PostTcTable where there are a bunch of pieces of evidence, more than is convenient to keep individually.5Vghc-lib-parserPost-Type checking ExpressionhPostTcExpr is an evidence expression attached to the syntax tree by the type checker (c.f. postTcType).5Wghc-lib-parseruThis is used for rebindable-syntax pieces that are too polymorphic for tcSyntaxOp (trS_fmap and the mzip in ParStmt)5Yghc-lib-parser7Make a 'SyntaxExpr (HsExpr _)', missing its HsWrappers.5Zghc-lib-parserdMake a 'SyntaxExpr Name' (the "rn" is because this is used in the renamer), missing its HsWrappers.5fghc-lib-parser5f p e returns I if the expression e% needs parentheses under precedence p.5gghc-lib-parser5g p e checks if 5f p e is true, and if so, surrounds e with an 5%. Otherwise, it simply returns e.5qghc-lib-parser.Is there only one RHS in this list of matches?5ghc-lib-parser"Should pattern match failure in a 4_ be desugared using  MonadFail? ghc-lib-parser May have l : l when in a listE 5Q5T5S5R 44444 44444 444444 55555554444 5F5E5D5C5B5A5@5?5>5=5<5;5:595857565554535251505/5.5-5,5+5*5)5(5'5&5$5#5"5!5 555555555%55L5K5J5I5H5G 4_4h4g4f4a4`4c4e4b4d4i4t4s4r4q4p4n4m4l4k4o4j4u4x4v4w4y4}4|4{4z4~4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555 5 5 5 5 5555555555M5O5N5P5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~555555555555555555555555E 5V5U 5Q5T5S5R5W5X5Y5Z5P5M5O5N5[ 5F5E5D5C5B5A5@5?5>5=5<5;5:595857565554535251505/5.5-5,5+5*5)5(5'5&5$5#5"5!5 555555555%55L5K5J5I5H5G55555 555555 55 5 5 5\ 5]5^5_5`5a5b5c5d5e5f5g5h5 555555544444444444445i5j5k5l5m5n4 444444444444444445o5p5q5r5s 4444444445t 5u5v5w5x444444444444444444444444444444444444444444444444444445y5z5{5|5}5~55 444444444454444444444444444445 5 554~4444444455554y4}4|4{4z54i4t4s4r4q4p4n4m4l4k4o4j4u4x4v4w54_4h4g4f4a4`4c4e4b4d55555555555None %>HVX 5ghc-lib-parserWA simple case alternative with a single pattern, no binds, no guards; pre-typechecking6ghc-lib-parserNLifts a "small" constructor into a "big" constructor by recursive decompositon6ghc-lib-parserSplit a list into lists that are small enough to have a corresponding tuple arity. The sub-lists of the result all have length <= N But there may be more than N sub-lists6ghc-lib-parser_Converting a Type to an HsType RdrName This is needed to implement GeneralizedNewtypeDeriving.Note that we use B extensively, which generates Exact RdrNames rather than strings.6&ghc-lib-parserIf any of the matches in the 2M are infix, the 2M is considered infix.6(ghc-lib-parser#Make a prefix, non-strict function 4i6*ghc-lib-parserShould we treat this as an unlifted bind? This will be true for any bind that binds an unlifted variable, but we must be careful around AbsBinds. See Note [Unlifted id check in isUnliftedHsBind]. For usage information, see Note [Strict binds check] is DsBinds.6+ghc-lib-parser5Is a binding a strict variable or pattern bind (e.g. !x = ...)?6;ghc-lib-parserReturns all the binding$ names of the decl. The first one is guaranteed to be the name of the decl. The first component represents all binding names except record fields; the second represents field occurrences. For record fields mentioned in multiple constructors, the SrcLoc will be from the first occurrence.3Each returned (Located name) has a SrcSpan for the whole- declaration. See Note [SrcSpan for binders]6ghc-lib-parser5"Small" constructor function, of maximum input arity Nghc-lib-parser/Possible "big" list of things to construct fromghc-lib-parser:Constructed thing made possible by recursive decomposition.R.T55555555555555555555555555555555555555555555555555555555555555555555555556666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B5555555556)6(55666666 5555665665555555555555556666 6 6666!6$6#6'6"6%6&5555555555555555556 556 6 66.R.T556666666666555555555555555555556*6+6,6.616-606/626768636465666;6:6=6>6<696?6@6A6BNone 12=>?HVNone ,12=>?HV7$ghc-lib-parserHaskell ModuleEAll we actually declare here is the top-level structure for a module.7%ghc-lib-parserlsl,ll,l, lW for explicit braces and semi around hsmodImports,hsmodDecls if this style is used.7&ghc-lib-parserNothingP: "module X where" is omitted (in which case the next field is Nothing too)7'ghc-lib-parser Export listNothing+: export list omitted, so export everythingJust [] : export nothing Just [...]: as you would expect...ls : l% ,l7(ghc-lib-parserWe snaffle interesting stuff out of the imported interfaces early on, adding that info to TyDecls/etc; so this list is often empty, downstream.7)ghc-lib-parser1Type, class, value, and interface signature decls7*ghc-lib-parser9reason/explanation for warning/deprecation of this modulels : l% ,l7+ghc-lib-parser-Haddock module info and description, unparsedls : l% ,lf    }$%23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  22222222222222222222222222 5Q5R5S5T 44444 44444 444444 44445555555 55%555555555 5!5"5#5$5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L '''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2''''''''''''''--------------------------------------.-.-------------........ . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o22222222222222222!2 2"2#2$2%2&2'2(2)2*2+2,2-2.2/2021222324252726282:292;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~222222222222222222222222222222222222222222222222222222222222222222222222223333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3s3r3t3u3v3w3x3y3z3{3|3}3~333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444 33344444444 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/4041424344454_4d4b4e4c4`4a4f4g4h4i4u4j4o4k4l4m4n4p4q4r4s4t4w4v4x4y4z4{4|4}4~4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555 5 5 5 5 5555555555M5N5O5P5U5V5W5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B7$7%7&7'7(7)7*7+ }7$7%7&7'7(7)7*7+None%>FHV7<ghc-lib-parser!Either an operator or an operand.7Dghc-lib-parserEssentially a wrapper for a RuleBndr GhcPs7Gghc-lib-parserSmkClassDecl builds a RdrClassDecl, filling in the names for tycon and datacon by deriving them from the name of the class. We fill in the names for the tycon and datacon corresponding to the class, by deriving them from the name of the class itself. This saves recording the names in the interface file (which would be equally good).7Jghc-lib-parserTake a type-family instance declaration and turn it into a type-family default equation for a class declaration. We parse things as the former and use this function to convert to the latter6We use the Either monad because this also called from Convert.The P () we return corresponds represents an action which will add some necessary paren annotations to the parsing context. Naturally, this is not something that the Convert use cares about.7Sghc-lib-parserFunction definitions are restructured here. Each is assumed to be recursive initially, and non recursive definitions are discovered by the dependency analyser.?ghc-lib-parserReinterpret a type constructor, including type operators, as a data constructor. See Note [Parsing data constructors is hard]?ghc-lib-parseroThis function ensures that fields with strictness or packedness annotations put these annotations on an outer ..The problem is that in the parser, strictness and packedness annotations bind more tightly that docstrings. However, the expectation downstream of the parser (by functions such as .2 and .30) is that docstrings bind more tightly so that .# may end up as the top-level type. See #152067Yghc-lib-parserJThis rather gruesome function is used mainly by the parser. When parsing: data T a = T | T1 Int"we parse the data constructors as types? because of parser ambiguities, so then we need to change the  type constr to a  data constrThe exact-name case can occur when parsing: data [] a = [] | a : [a]3For the exact-name case we return an original name.7Zghc-lib-parser>Replaces constraint tuple names with corresponding boxed ones.?ghc-lib-parserCheck whether the given list of type parameters are all type variables (possibly with a kind signature). We use the Either monad because it's also called (via 7J) from Convert.7_ghc-lib-parserCheck if the gadt_constrlist is empty. Only raise parse error for `data T where` to avoid affecting existing error message, see #8258.7`ghc-lib-parserqYield a parse error if we have a function applied directly to a do block etc. and BlockArguments is not enabled.7aghc-lib-parserSValidate the context constraints and break up a context into a list of predicates.  (Eq a, Ord b) --> [Eq a, Ord b] Eq a --> [Eq a] (Eq a) --> [Eq a] (((Eq a))) --> [Eq a] ?ghc-lib-parser#Check recursively if there are any .Gs in the given type. This only works on a subset of types produced by  btype_no_ops?ghc-lib-parserKExtract a strictness/unpackedness annotation from the front of a reversed 7< list.7jghc-lib-parserMerge a reversed and  non-empty/ soup of operators and operands into a type. User input: F x y + G a b * X Input to 7j: [X, *, b, a, G, +, y, x, F] Output corresponds to what the user wrote assuming all operators are of the same fixity and right-associative.It's a bit silly that we're doing it at all, as the renamer will have to rearrange this, and it'd be easier to keep things separate.,See Note [Parsing data constructors is hard]7kghc-lib-parserMerge a reversed and  non-empty; soup of operators and operands into a data constructor. User input: C !A B -- ^ doc Input to 7k<: ["doc", B, !, A, C] Output: (C, PrefixCon [!A, B], "doc")QSee Note [Parsing data constructors is hard] See Note [isFunLhs vs mergeDataCon]7lghc-lib-parserCheck for monad comprehensions1If the flag MonadComprehensions is set, return a 4a# context, otherwise use the usual 4` context7nghc-lib-parserdCheck if a fixity is valid. We support bypassing the usual bound checks for some special operators.7~ghc-lib-parser#Hint about bang patterns, assuming  BangPatterns is off.7nghc-lib-parser precedenceghc-lib-parser operatorsX555556707172737475767778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7{7|7}7~777X555557Q7R7I7K7N7L7M7O7P67r7V7o7G7H7q7p7Y7Z7T7U7S7d7s7t7u7v7X7W7J7`7n7a7b7e7f7c7l7m7g7h7i7F7D7E7[7\7]7^7_7}7~7<7=7>7?7@7A7B7C7j7k7778797:7;737475767w7x7z7y777{7|7071727None%7ghc-lib-parserTerm equalities7ghc-lib-parserALiterals (simple and overloaded ones) for pattern match checking.7ghc-lib-parser.Lifted expressions for pattern match checking.7ghc-lib-parser5Equality between literals for pattern match checking.7ghc-lib-parserLift a 7 to a 77ghc-lib-parser Expression I7ghc-lib-parser Expression F7ghc-lib-parser'Check if an expression is lifted or not?ghc-lib-parser"Check whether a literal is negated7ghc-lib-parser6Check whether a PmExpr is syntactically equal to term I.7ghc-lib-parser6Check whether a PmExpr is syntactically equal to term F.?ghc-lib-parser)Check whether a PmExpr is syntactically e?ghc-lib-parserCheck whether a PmExpr is syntactically equal to (x == y). Since (==) is overloaded and can have an arbitrary implementation, we use the PmExprEq constructor to represent only equalities with non-overloaded literals where it coincides with a syntactic equality check.?ghc-lib-parserCheck if a DataCon is (:).?ghc-lib-parserWe return a boolean along with the expression. Hence, if substitution was a no-op, we know that the expression still cannot progress.7ghc-lib-parserSubstitute in a complex equality. We return (Left eq) if the substitution affected the equality or (Right eq) if nothing happened.?ghc-lib-parserPretty print a pmexpr, but remember to prettify the names of the variables that refer to neg-literals. The ones that cannot be shown are printed as underscores.777777777777777777777777777777777777777777777777None"#%X7ghc-lib-parserA map keyed by the 7.7ghc-lib-parserPA list of conlikes which represents a complete pattern match. These arise from COMPLETE signatures.7ghc-lib-parser>The ConLikes that form a covering family (e.g. Nothing, Just)7ghc-lib-parser&The TyCon that they cover (e.g. Maybe)7ghc-lib-parser3Objects which have yet to be linked by the compiler7ghc-lib-parserAn object file (.o)7ghc-lib-parserStatic archive file (.a)7ghc-lib-parser3Dynamically linked library file (.so, .dll, .dylib)7ghc-lib-parserA byte-code object, lives only in memory. Also carries some static pointer table entries which should be loaded along with the BCOs. See Note [Grant plan for static forms] in StaticPtrTable.7ghc-lib-parserDInformation we can use to dynamically link modules into the compiler7ghc-lib-parsersTime at which this linkable was built (i.e. when the bytecodes were produced, or the mod date on the files)7ghc-lib-parserThe linkable module itself7ghc-lib-parser3Those files and chunks of code we have yet to link.4INVARIANT: A valid linkable always has at least one 7 item. If this list is empty, the Linkable represents a fake linkable, which is generated in HscNothing mode to avoid recompiling modules.?ToDo: Do items get removed from this list when they get linked?7ghc-lib-parserMextra source files (e.g. from #includes). The lexer collects these from '#  file  line' pragmas, which the C preprocessor leaves behind. These files and their timestamps are stored in the .hi file, so that we can force recompilation if any of them change (#3589)7ghc-lib-parserSafe Haskell information for 8bF Simply a wrapper around SafeHaskellMode to sepperate iface and flags7ghc-lib-parserIs an import a safe import?7ghc-lib-parserpThis is used to signal if one of my imports used HPC instrumentation even if there is no module-local HPC usage7ghc-lib-parser;Information about a modules use of Haskell Program Coverage7ghc-lib-parser*Is hpc used anywhere on the module *tree*?7ghc-lib-parserXIndicates whether a given module's source has been modified since it was last compiled.7ghc-lib-parserthe source has been modified7ghc-lib-parserthe source has not been modified. Compilation may or may not be necessary, depending on whether any dependencies have changed since we last compiled.7ghc-lib-parser=the source has not been modified, and furthermore all of its (transitive) dependencies are up to date; it definitely does not need to be recompiled. This is important for two reasons: (a) we can omit the version check in checkOldIface, and (b) if the module used TH splices we don't need to force recompilation.7ghc-lib-parserA single node in a 7,. The nodes of the module graph are one of:A regular Haskell source moduleA hi-boot source module7ghc-lib-parserIdentity of the module7ghc-lib-parser1The module source either plain Haskell or hs-boot7ghc-lib-parser5Location of the various files belonging to the module7ghc-lib-parserTimestamp of source file7ghc-lib-parser#Timestamp of object, if we have one7ghc-lib-parser<Timestamp of hi file, if we *only* are typechecking (it is GJ otherwise. See Note [Recompilation checking in -fno-code mode] and #92437ghc-lib-parser%Timestamp of hie file, if we have one7ghc-lib-parserSource imports of the module7ghc-lib-parser7Non-source imports of the module from the module *text*7ghc-lib-parservThe parsed, nonrenamed source, if we have it. This is also used to support "inline module syntax" in Backpack files.7ghc-lib-parser$Filename of preprocessed source file7ghc-lib-parserCached flags from OPTIONS, INCLUDE and LANGUAGE$ pragmas in the modules source code7ghc-lib-parser-The actual preprocessed source, if we have it7ghc-lib-parserA ModuleGraph contains all the nodes from the home package (only). There will be a node for each source module, plus a node for each hi-boot module.IThe graph is not necessarily stored in topologically-sorted order. Use - and . to achieve this.7ghc-lib-parser:Accumulated statistics about what we are putting into the 7!. "In" means stuff that is just readG from interface files, "Out" means actually sucked in and type-checked7ghc-lib-parserZInformation about other packages that we have slurped in by reading their interface files7ghc-lib-parser*In OneShot mode (only), home-package modules accumulate in the external package state, and are sucked in lazily. For these home-pkg modules (only) we need to record which are boot modules. We set this field after loading all the explicitly-imported interfaces, but before doing anything elseThe  u part is not necessary, but it's useful for debug prints, and it's convenient because this field comes direct from :/7ghc-lib-parserThe 8bs for modules in external packages whose interfaces we have opened. The declarations in these interface files are held in the  eps_decls, 7, 7 and  eps_rules$ fields of this record, not in the 8w, fields of the interface we have sucked in.What is in the PIT is: The ModuleFingerprint info Its exportsFixitiesDeprecations and warnings7ghc-lib-parser Cache for 8#. Ordinarily, we can rely on the 7\ for this information, EXCEPT that when we do dependency analysis, we need to look at the 7A of our imports to determine what their precise free holes are (moduleFreeHolesPrecise). We don't want to repeatedly reread in the interface for every import, so cache it here. When the PIT gets filled in we can drop these entries.7ghc-lib-parserResult of typechecking all the external package interface files we have sucked in. The domain of the mapping is external-package modules7ghc-lib-parser The total 1[3 accumulated from all the external-package modules7ghc-lib-parser The total 03 accumulated from all the external-package modules7ghc-lib-parser The total RuleEnv3 accumulated from all the external-package modules7ghc-lib-parser The total 3 accumulated from all the external-package modules7ghc-lib-parser The total 73 accumulated from all the external-package modules7ghc-lib-parseraThe family instances accumulated from external packages, keyed off the module that declared them7ghc-lib-parser5Stastics about what was loaded from external packages7ghc-lib-parserTRecords modules for which changes may force recompilation of this module See wiki: Ohttp://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/RecompilationAvoidanceThis differs from Dependencies. A module X may be in the dep_mods of this module (via an import chain) but if we don't use anything from X it won't appear in our Usage7ghc-lib-parserModule from another package7ghc-lib-parsermModule from the current package | A file upon which the module depends, e.g. a CPP #include, or using TH's addDependentFile7ghc-lib-parser-A requirement which was merged into this one.7ghc-lib-parser#External package module depended on7ghc-lib-parserCached module fingerprint7ghc-lib-parser)Was this module imported as a safe import7ghc-lib-parserName of the module7ghc-lib-parserEntities we depend on, sorted by occurrence name and fingerprinted. NB: usages are for parent names only, e.g. type constructors but not the associated data constructors.7ghc-lib-parsertFingerprint for the export list of this module, if we directly imported it (and hence we depend on its export list)7ghc-lib-parserZExternal file dependency. From a CPP #include or TH addDependentFile. Should be absolute.7ghc-lib-parser of the file contents.7ghc-lib-parser^Dependency information about ALL modules and packages below this one in the import hierarchy.(Invariant: the dependencies of a module M never includes M.0Invariant: none of the lists contain duplicates.7ghc-lib-parserAll home-package modules transitively below this one I.e. modules that this one imports, or that are in the dep_mods of those directly-imported modules7ghc-lib-parserHAll packages transitively below this module I.e. packages to which this module's direct imports belong, or that are in the dep_pkgs of those modules The bool indicates if the package is required to be trusted when the module is imported as a safe import (Safe Haskell). See Note [RnNames . Tracking Trust Transitively]7ghc-lib-parserETransitive closure of orphan modules (whether home or external pkg)._(Possible optimization: don't include family instance orphans as they are anyway included in 7z. But then be careful about code which relies on dep_orphs having the complete list!) This does NOT include us, unlike  imp_orphs.7ghc-lib-parseryTransitive closure of depended upon modules which contain family instances (whether home or external). This is used by checkFamInstConsistency%. This does NOT include us, unlike  imp_finsts9. See Note [The type family instance consistency story].7ghc-lib-parser1All the plugins used while compiling this module.7ghc-lib-parser-Did this module originate from a *-boot file??ghc-lib-parser)Does this module define family instances?7ghc-lib-parser<Records whether a module has orphans. An "orphan" is one of:An instance declaration in a module other than the definition module for one of the type constructors or classes in the instance headeA transformation rule in a module other than the one defining the function in the head of the rule7ghc-lib-parserFixity information for an P. We keep the OccName in the range so that we can generate an interface from it8ghc-lib-parser2Fixity environment mapping names to their fixities8ghc-lib-parser Warning information for a module8ghc-lib-parserNothing deprecated8ghc-lib-parserWhole module deprecated8ghc-lib-parserSome specific things deprecated8ghc-lib-parserNClass that abstracts out the common ability of the monads in GHC to lookup a  Y in the monadic environment by Y. Provides a number of related convenience functions for accessing particular kinds of  Y8 ghc-lib-parser A map from s to  YEs, constructed by typechecking local declarations or interface files8 ghc-lib-parserQBring the exports of a particular module (filtered by an import decl) into scope8ghc-lib-parserfBring into scope the entire top-level envt of of this module, including the things imported into it.8ghc-lib-parser~Interactive context, recording information about the state of the context in which statements are executed in a GHCi session.8ghc-lib-parserThe  M9 used to evaluate interative expressions and statements.8ghc-lib-parserEach GHCi stmt or declaration brings some new things into scope. We give them names like interactive:Ghci9.T, where the ic_index is the '9'p. The ic_mod_index is incremented whenever we add something to ic_tythings See Note [The interactive package]8ghc-lib-parserHThe GHCi top-level scope (ic_rn_gbl_env) is extended with these importsThis field is only stored here so that the client can retrieve it with GHC.getContext. GHC itself doesn't use it, but does reset it to empty sometimes (such as before a GHC.load). The context is set with GHC.setContext.8ghc-lib-parsersTyThings defined by the user, in reverse order of definition (ie most recent at the front) See Note [ic_tythings]8ghc-lib-parser The cached q , built by 01q and updated regularly It contains everything in scope at the command line, including everything in ic_tythings8ghc-lib-parser9All instances and family instances created during this session. These are grabbed en masse after each update to be sure that proper overlapping is retained. That is, rather than re-check the overlapping each time we update the context, we just take the results from the instance code that already does that.8ghc-lib-parser#Fixities declared in let statements8ghc-lib-parser$The current default types, set by a  'default' declaration8ghc-lib-parser The stack of breakpoint contexts8ghc-lib-parser#The monad that GHCi is executing in8ghc-lib-parserSThe function that is used for printing results of expressions in ghci and -e mode.8ghc-lib-parserxAn entry to be inserted into a module's static pointer table. See Note [Grand plan for static forms] in StaticPtrTable.8ghc-lib-parserForeign export stubs8 ghc-lib-parserWe don't have any stubs8!ghc-lib-parser!There are some stubs. Parameters:?1) Header file prototypes for "foreign exported" functions@2) C stubs to use when calling "foreign exported" functions8"ghc-lib-parserA restricted form of 8- for code generation purposes8$ghc-lib-parserModule being compiled8%ghc-lib-parserAlgebraic data types (including ones that started life as classes); generate constructors and info tables. Includes newtypes, just for the benefit of External Core8&ghc-lib-parserThe tidied main bindings, including previously-implicit bindings for record and class selectors, and data constructor wrappers. But *not* data constructor workers; reason: we regard them as part of the code-gen of tycons8'ghc-lib-parserForeign export stubs8)ghc-lib-parser>Dependent packages, used to generate #includes for C code gen8*ghc-lib-parser%Program coverage tick box information8+ghc-lib-parserModule breakpoints8,ghc-lib-parserStatic pointer table entries for static forms defined in the module. See Note [Grand plan for static forms] in StaticPtrTable8-ghc-lib-parserA ModGuts is carried through the compiler, accumulating stuff as it goes There is only one ModGuts at any time, the one for the module being compiled right now. Once it is compiled, a 8b and 8X, are extracted and the ModGuts is discarded.8/ghc-lib-parserModule being compiled80ghc-lib-parserWhether it's an hs-boot module81ghc-lib-parser$For error messages from inner passes82ghc-lib-parserWhat it exports83ghc-lib-parser*What it depends on, directly or otherwise84ghc-lib-parser$What was used? Used for interfaces.85ghc-lib-parserDid we run a TH splice?86ghc-lib-parserTop-level lexical environment87ghc-lib-parserEFixities declared in this module. Used for creating interface files.88ghc-lib-parser=TyCons declared in this module (includes TyCons for classes)89ghc-lib-parser'Class instances declared in this module8:ghc-lib-parser(Family instances declared in this module8;ghc-lib-parser(Pattern synonyms declared in this module8<ghc-lib-parser\Before the core pipeline starts, contains See Note [Overall plumbing for rules] in Rules.hs8=ghc-lib-parserBindings for this module8>ghc-lib-parser'Foreign exports declared in this module8?ghc-lib-parser(Files to be compiled with the C compiler8@ghc-lib-parserWarnings declared in the module8Aghc-lib-parser#Annotations declared in this module8Bghc-lib-parserComplete Matches8Cghc-lib-parser!Coverage tick boxes in the module8Dghc-lib-parserBreakpoints for the module8Eghc-lib-parser Class instance environment for  home-package% modules (including this one); c.f.  tcg_inst_env8Fghc-lib-parser&Type-family instance environment for  home-package% modules (including this one); c.f. tcg_fam_inst_env8Gghc-lib-parserSafe Haskell mode8Hghc-lib-parser^Do we need to trust our own package for Safe Haskell? See Note [RnNames . Trust Own Package]8Ighc-lib-parserModule header.8Jghc-lib-parserDocs on declarations.8Kghc-lib-parserDocs on arguments.8Nghc-lib-parser$The name the module is imported with8Oghc-lib-parser#the source span of the whole import8Pghc-lib-parserwhether this is a safe import8Qghc-lib-parser"whether this is an "hiding" import8Rghc-lib-parser]all the things the module could provide NB. BangPattern here: otherwise this leaks. (#15111)8Sghc-lib-parser"whether this is a qualified import8Tghc-lib-parser^If a module was "imported" by the user, we associate it with more detailed usage information 8LH; a module imported by the system only gets used for usage information.8Wghc-lib-parserRecords the modules directly imported by a module for extracting e.g. usage information, and also to give better error message8Xghc-lib-parserThe 8X/ is essentially a cache for information in the 8bf for home modules only. Information relating to packages will be loaded into global environments in 7.8[ghc-lib-parserPLocal type environment for this particular module Includes Ids, TyCons, PatSyns8\ghc-lib-parser"s for the instances in this module8^ghc-lib-parserDomain may include s from other modules8_ghc-lib-parsereAnnotations present in this module: currently they only annotate things also declared in this module8`ghc-lib-parser&Complete match pragmas for this module8aghc-lib-parserAThe original names declared of a certain module that are exported8bghc-lib-parserA 8b plus a 8X> summarises everything we know about a compiled module. The 8b is the stuff *before* linking, and can be written out to an interface file. The 'ModDetails is after linking and can be completely recovered from just the 8b.4When we read an interface file, we also construct a 8b. from it, except that we explicitly make the 8w and a few other fields empty; as when reading we consolidate the declarations etc. into a number of indexed maps and environments in the 7.8dghc-lib-parserName of the module we are for8eghc-lib-parserAre we a sig of another mod?8fghc-lib-parserHash of the whole interface8gghc-lib-parserHash of the ABI only8hghc-lib-parserZHash of the important flags used when compiling the module, excluding optimisation flags8ighc-lib-parserHash of optimisation flags8jghc-lib-parserHash of hpc flags8kghc-lib-parserHash of plugins8lghc-lib-parserWhether this module has orphans8mghc-lib-parseraWhether this module has family instances. See Note [The type family instance consistency story].8nghc-lib-parserBoot? Signature?8oghc-lib-parserzThe dependencies of the module. This is consulted for directly-imported modules, but not for anything else (hence lazy)8pghc-lib-parserUsages; kept sorted so that it's easy to decide whether to write a new iface file (changing usages doesn't affect the hash of this module) NOT STRICT! we read this field lazily from the interface file It is *only* consulted by the recompilation checker8qghc-lib-parserExports Kept sorted by (mod,occ), to make version comparisons easier Records the modules that are the declaration points for things exported by this module, and the s of those things8rghc-lib-parserHash of export list8sghc-lib-parsercModule required TH splices when it was compiled. This disables recompilation avoidance (see #481).8tghc-lib-parserHFixities NOT STRICT! we read this field lazily from the interface file8ughc-lib-parserHWarnings NOT STRICT! we read this field lazily from the interface file8vghc-lib-parserKAnnotations NOT STRICT! we read this field lazily from the interface file8wghc-lib-parserType, class and variable declarations The hash of an Id changes if its fixity or deprecations change (as well as its type of course) Ditto data constructors, class operations, except that the hash of the parent class/tycon changes8xghc-lib-parser6Binds all the things defined at the top level in the original source code for this module. which is NOT the same as mi_exports, nor mi_decls (which may contains declarations for things not actually defined by the user). Used for GHCi and for inspecting the contents of modules via the GHC API only.(We need the source file to figure out the top-level environment, if we didn't compile this module from source then this field contains Nothing).1Strictly speaking this field should live in the 8", but that leads to more plumbing.8yghc-lib-parserSorted class instance8zghc-lib-parserSorted family instances8{ghc-lib-parser Sorted rules8|ghc-lib-parser;Hash for orphan rules, class and family instances combined8}ghc-lib-parserCached lookup for 8u8~ghc-lib-parserCached lookup for 8t8ghc-lib-parserCached lookup for 8w. The Nothing in 8 means that the thing isn't in decls. It's useful to know that when seeing if we are up to date wrt. the old interface. The * is the parent of the name, if it has one.8ghc-lib-parser:True if this program uses Hpc at any point in the program.8ghc-lib-parser/Safe Haskell Trust information for this module.8ghc-lib-parserQDo we require the package this module resides in be trusted to trust this module? This is used for the situation where a module is Safe (so doesn't require the package be trusted itself) but imports some trustworthy modules from its own package (which does require its own package be trusted). See Note [RnNames . Trust Own Package]8ghc-lib-parserModule header.8ghc-lib-parserDocs on declarations.8ghc-lib-parserDocs on arguments.8ghc-lib-parser/The result of searching for an imported module.MNB: FindResult manages both user source-import lookups (which can result in  D) as well as direct imports for interfaces (which always result in ).8ghc-lib-parserThe module was found8ghc-lib-parser#The requested package was not found8ghc-lib-parser"_Error_: both in multiple packages8ghc-lib-parser Not found8ghc-lib-parserThe 8 maps modules to the result of searching for that module. It records the results of searching for modules along the search path. On :load., we flush the entire contents of this cache.8ghc-lib-parser<data constructors not exported to ensure correct result type8ghc-lib-parser*The supported metaprogramming result types8ghc-lib-parser7Information about modules in the package being compiled8ghc-lib-parsersThe basic loaded interface file: every loaded module has one of these, even if it is imported from another package8ghc-lib-parser1Extra information that has been created from the 8b/ for the module, typically during typechecking8ghc-lib-parserKThe actual artifact we would like to link to access things in this module.8 might be Nothing: If this is an .hs-boot modulecTemporarily during compilation if we pruned away the old linkable because it was out of date.After a complete compilation (2), all 8 fields in the 8 will be Just.When re-linking a module (34), we construct the 8 by building a new 8X from the old 8b (only).8ghc-lib-parser@Helps us find information about modules in the imported packages8ghc-lib-parser;Helps us find information about modules in the home package8ghc-lib-parser"A module name: search for the file8ghc-lib-parserA filename: preprocess & parse it to find the module name. If specified, the Phase indicates how to compile this file (which phase to start from). Nothing indicates the starting phase should be determined from the suffix of the filename.8ghc-lib-parserA compilation target.A target may be supplied with the actual text of the module. If so, use this instead of the file contents (this is for use in an IDE where the file hasn't been saved by the user yet).8ghc-lib-parsermodule or filename8ghc-lib-parserobject code allowed?8ghc-lib-parseruOptional in-memory buffer containing the source code GHC should use for this target instead of reading it from disk.vSince GHC version 8.10 modules which require preprocessors such as Literate Haskell or CPP to run are also supported.MIf a corresponding source file does not exist on disk this will result in a 8 exception if targetId = TargetModule _! is used. However together with targetId = TargetFile _/ GHC will not complain about the file missing.8ghc-lib-parserHscEnv is like Session, except that some of the fields are immutable. An HscEnv is used to compile a single module from plain Haskell source code (after preprocessing) to either C, assembly or C--. Things like the module graph don't change during a single compilation.(Historical note: "hsc" used to be the name of the compiler binary, when there was a separate driver and compiler. To compile a single module, the driver would invoke hsc on the source code... so nowadays we think of hsc as the layer of the compiler that deals with compiling a single module.8ghc-lib-parserThe dynamic flag settings8ghc-lib-parser-The targets (or roots) of the current session8ghc-lib-parser'The module graph of the current session8ghc-lib-parser1The context for evaluating interactive statements8ghc-lib-parserIThe home package table describes already-compiled home-package modules,  excluding# the module we are compiling right now. (In one-shot mode the current module is the only home-package module, so hsc_HPT is empty. All other modules count as "external-package" modules. However, even in GHCi mode, hi-boot interfaces are demand-loaded into the external-package table.)8 is not mutable because we only demand-load external packages; the home package is eagerly loaded, module by module, by the compilation manager.0The HPT may contain modules compiled earlier by --makeE but not actually below the current module in the dependency graph.4(This changes a previous invariant: changed Jan 05.)8ghc-lib-parserInformation about the currently loaded external packages. This is mutable because packages will be demand-loaded during a compilation run as required.8ghc-lib-parserAs with 8, this is side-effected by compiling to reflect sucking in interface files. They cache the state of external interface files, in effect.8ghc-lib-parser:The cached result of performing finding in the file system8ghc-lib-parser7Used for one-shot compilation only, to initialise the IfGblEnv. See :5 for :6(. See also Note [hsc_type_env_var hack]8ghc-lib-parserBinteractive server process. Created the first time it is needed.8ghc-lib-parser?An error thrown if the GHC API is used in an incorrect fashion.8ghc-lib-parserXA source error is an error that is caused by one or more errors in the source code. A 8l is thrown by many functions in the compilation pipeline. Inside GHC these errors are merely printed via , but API clients may treat them differently, for example, insert them into a list box. If you want the default behaviour, use the idiom: RhandleSourceError printExceptionAndWarnings $ do ... api calls that may fail ...The 8%s error messages can be accessed via 88. This list may be empty if the compiler failed due to -Werror ().See printExceptionAndWarningsS for more information on what to take care of when writing a custom error handler.8ghc-lib-parser$Status of a compilation to hard-code8ghc-lib-parserThrow some errors.8ghc-lib-parserPPerform the given action and call the exception handler if the action throws a 8. See 8 for more information.8ghc-lib-parseriGiven a bag of warnings, turn them into an exception if -Werror is enabled, or print them out otherwise.8ghc-lib-parser(Retrieve the ExternalPackageState cache.8ghc-lib-parser$Constructs an empty HomePackageTable8ghc-lib-parser%Constructs an empty PackageIfaceTable8ghc-lib-parser Find the 8b for a  L, searching in both the loaded home and external package module information8ghc-lib-parserFind all the instance declarations (of classes and families) from the Home Package Table filtered by the provided predicate function. Used in  tcRnImportsl, to select the instances that are in the transitive closure of imports from the currently compiled module.8ghc-lib-parserAGet rules from modules "below" this one (in the dependency sense)?ghc-lib-parserGGet annotations from modules "below" this one (in the dependency sense)?ghc-lib-parserYGet things from modules "below" this one (in the dependency sense) C.f Inst.hptInstances8ghc-lib-parser`Deal with gathering annotations in from all possible places and combining them into a single 8ghc-lib-parserNOld-style accessor for whether or not the ModIface came from an hs-boot file.8ghc-lib-parser-Lookups up a (possibly cached) fixity from a 8b. If one cannot be found,   is returned instead.8ghc-lib-parserWThe semantic module for this interface; e.g., if it's a interface for a signature, if 8d is p[A= A]:A, 8 will be  A.8ghc-lib-parser:The "precise" free holes, e.g., the signatures that this 8b depends on.8ghc-lib-parserGiven a set of free holes, and a unit identifier, rename the free holes according to the instantiation of the unit identifier. For example, if we have A and B free, and our unit identity is p[A= C ,B=impl:B]%, the renamed free holes are just C.8ghc-lib-parserConstructs an empty ModIface8ghc-lib-parserConstructs cache for the 8 field of a 8b8ghc-lib-parserConstructs an empty ModDetails8ghc-lib-parser'Constructs an empty InteractiveContext.8ghc-lib-parserRThis function returns the list of visible TyThings (useful for e.g. showBindings)8ghc-lib-parserPGet the PrintUnqualified function based on the flags and this InteractiveContext8ghc-lib-parserextendInteractiveContext is called with new TyThings recently defined to update the InteractiveContext to include them. Ids are easily removed when shadowed, but Classes and TyCons are not. Some work could be done to determine whether they are entirely shadowed, but as you could still have references to them (e.g. instances for classes or values of the type for TyCons), it's not clear whether removing them is even the appropriate behavior.9ghc-lib-parserAdd TyThings to the GlobalRdrEnv, earlier ones in the list shadowing later ones, and shadowing existing entries in the GlobalRdrEnv.9ghc-lib-parserrCreates some functions that work out the best ways to format names for the user according to a set of heuristics.9ghc-lib-parserCreates a function for formatting modules based on two heuristics: (1) if the module is the current module, don't qualify, and (2) if there is only one exposed package which exports this module, don't qualify.9ghc-lib-parserCreates a function for formatting packages based on two heuristics: (1) don't qualify if the package in question is "main", and (2) only qualify with a unit id if the package ID would be ambiguous.9ghc-lib-parseraA function which only qualifies package names if necessary; but qualifies all other identifiers.9 ghc-lib-parserDetermine the  Y s brought into scope by another  Y other than itself. For example, Id's don't have any implicit TyThings as they just bring themselves into scope, but classes bring their dictionary datatype, type constructor and some selector functions into scope, just for a start!9 ghc-lib-parserReturns True if there should be no interface-file declaration for this thing on its own: either it is built-in, or it is part of some other declaration, or it is generated implicitly by some other declaration.9 ghc-lib-parser6tyThingParent_maybe x returns (Just p) when pprTyThingInContext should print a declaration for p (albeit with some "..." in it) when asked to show x It returns the *immediate* parent. So a datacon returns its tycon but the tycon could be the associated type of a class, so it in turn might have a parent.9ghc-lib-parsernThe Names that a TyThing should bring into scope. Used to build the GlobalRdrEnv for the InteractiveContext.9 ghc-lib-parser Find the  Y for the given J by using all the resources at our disposal: the compiled modules in the 8: and the compiled modules in other packages that live in 7'. Note that this does NOT look up the  YH in the module being compiled: you have to do that yourself, if desired9!ghc-lib-parserAs 9 ?, but with a marginally easier-to-use interface if you have a 89"ghc-lib-parserGet the   from a  Y4 if it is a type constructor thing. Panics otherwise9#ghc-lib-parserGet the !D from a  Y2 if it is a coercion axiom thing. Panics otherwise9$ghc-lib-parserGet the   from a  Y4 if it is a data constructor thing. Panics otherwise9%ghc-lib-parserGet the   from a  Y5 if it is a data constructor thing. Panics otherwise9&ghc-lib-parserGet the  from a  Y< if it is a id *or* data constructor thing. Panics otherwise9'ghc-lib-parserConstructs the cache for the 8} field of a 8b9*ghc-lib-parserCreates cached lookup for the 8~ field of 8b9.ghc-lib-parser&Add stats for one newly-read interface93ghc-lib-parserNDetermines whether a set of modules requires Template Haskell or Quasi QuotesNote that if the session's  M enabled Template Haskell when depanal was called, then each module in the returned module graph will have Template Haskell enabled whether it is actually needed or not.94ghc-lib-parserMap a function f over all the  ModSummaries. To preserve invariants f can't change the isBoot status.98ghc-lib-parser'Look up a ModSummary in the ModuleGraph9;ghc-lib-parsergAdd a ModSummary to ModuleGraph. Assumes that the new ModSummary is not an element of the ModuleGraph.9Cghc-lib-parser Did this 7 originate from a hs-boot file?9Fghc-lib-parserMFind out if HPC is used by this module or any of the modules it depends upon9Nghc-lib-parser6Is this an actual file on disk we can link in somehow?9Oghc-lib-parser1Is this a bytecode linkable with no file on disk?9Pghc-lib-parserTRetrieve the filename of the linkable if possible. Panic if it is a byte-code object9Qghc-lib-parserQRetrieve the compiled byte-code if possible. Panic if it is a file-based linkable8ghc-lib-parserexception handlerghc-lib-parseraction to perform Y$H$I$J$K '()*+,-..........7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888 8 8 8 8 8888888888888888888!8 8"8#8$8%8&8'8(8)8*8+8,8-8.8A838/8081828485868788898:8;8<8=8>8?8@8B8C8D8E8F8G8H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8[8`8\8]8^8_8Z8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888889999999999 9 9 9 9 9999999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/909192939495969798999:9;9<9=9>9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S88888888888888888888888888888888888888888888888888887999<9;949697989395888888X8Y8[8`8\8]8^8_8Z88-8.8A838/8081828485868788898:8;8<8=8>8?8@8B8C8D8E8F8G8H8I8J8K8"8#8$8%8&8'8(8)8*8+8,88!8 88W8T8U8V88L8M8N8O8P8Q8R8S887777777777777779?9=9>9D9C9@9A9B77779:'()*,-+88888888888888888888877777777777777777777779.788888777790919288888888888888888888888888888889899988 8 8999998b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u8v8w8x8y8z8{8|8}8~888888889'89*9(888888789,9+ Y$H$I$J$K99"9$9%9&9#9 99 9 9 9 8 9 9!99999999999999998888 8 77777777777777777777779-9/8a8888 9)777779L9M77777.9N9P9O9Q7777779E9F7.........79G9H9I9J9K7777778888888888777779R9S:None%EMX i9rghc-lib-parserwThe plugin found a contradiction. The returned constraints are removed from the inert set, and recorded as insoluble.9sghc-lib-parserThe first field is for constraints that were solved. These are removed from the inert set, and the evidence for them is recorded. The second field contains new work, that should be processed by the constraint solver.9vghc-lib-parser.Initialize plugin, when entering type-checker.9wghc-lib-parserDSolve some constraints. TODO: WRITE MORE DETAILS ON HOW THIS WORKS.9xghc-lib-parser9Clean up after the plugin, when exiting the type-checker.9{ghc-lib-parserDFlag to see whether we're type-checking terms or kind-checking types9ghc-lib-parser The thing that has type "actual"9ghc-lib-parserIs at least one of the three elements above visible? (Errors from the polymorphic subsumption check are considered visible.) Only used for prioritizing error messages.9ghc-lib-parserSee Note [SubGoalDepth]9ghc-lib-parserWhether or not one 9~ can rewrite another is determined by its flavour and its equality relation. See also Note [Flavours with roles] in TcSMonad9ghc-lib-parserA place for type-checking evidence to go after it is generated. Wanted equalities are always HoleDest; other wanteds are always EvVarDest.9ghc-lib-parsergbind this var to the evidence EvVarDest is always used for non-type-equalities e.g. class constraints9ghc-lib-parservfill in this hole with the evidence HoleDest is always used for type-equalities See Note [Coercion holes] in TyCoRep9ghc-lib-parserAn expression or type hole9ghc-lib-parserOEither an out-of-scope variable or a "true" hole in an expression (TypedHoles)9ghc-lib-parser(A hole in a type (PartialTypeSignatures):4ghc-lib-parser:4} summarises what was imported from where, irrespective of whether the imported things are actually used or not. It is used: when processing the export list,4when constructing usage info for the interface file,to identify the list of directly imported modules for initialisation purposes and for optimised overlap checking of family instances,/when figuring out what things are really unused:6ghc-lib-parser'Domain is all directly-imported modulesTSee the documentation on ImportedModsVal in HscTypes for the meaning of the fields.We need a full ModuleEnv rather than a ModuleNameEnv here, because we might be importing modules of the same name from different packages. (currently not the case, but might be in the future).:7ghc-lib-parser8Home-package modules needed by the module being compiledBIt doesn't matter whether any of these dependencies are actually used when compiling the module; they are listed if they are below it at all. For example, suppose M imports A which imports X. Then compiling M might not need to consult X.hi, but X is still listed in M's dependencies.:8ghc-lib-parserPackages needed by the module being compiled, whether directly, or via other modules in this package, or via modules imported from other packages.:9ghc-lib-parser This is strictly a subset of imp_dep_pkgs and records the packages the current module needs to trust for Safe Haskell compilation to succeed. A package is required to be trusted if we are dependent on a trustworthy module in that package. While perhaps making imp_dep_pkgs a tuple of (UnitId, Bool) where True for the bool indicates the package is required to be trusted is the more logical design, doing so complicates a lot of code not concerned with Safe Haskell. See Note [RnNames . Tracking Trust Transitively]::ghc-lib-parserDo we require that our own package is trusted? This is to handle efficiently the case where a Safe module imports a Trustworthy module that resides in the same package as it. See Note [RnNames . Trust Own Package]:;ghc-lib-parserYOrphan modules below us in the import tree (and maybe including us for imported modules):<ghc-lib-parserbFamily instance modules below us in the import tree (and maybe including us for imported modules):?ghc-lib-parser>IsGroupClosed describes a group of mutually-recursive bindings:Aghc-lib-parser+IdBindingInfo describes how an Id is bound.It is used for the following purposes: a) for static forms in TcExpr.checkClosedInStaticForm and b) to figure out when a nested binding can be generalised, in TcBinds.decideGeneralisationPlan.:Oghc-lib-parser?A typecheckable thing available in a local context. Could be :P  Y1, but also lexically scoped variables, etc. See TcEnv for how to retrieve a  Y given a .:nghc-lib-parserType alias for o@; the convention is we'll use this for mutable bits of data in :@ which are updated during typechecking and returned at the end.:ghc-lib-parser: describes the top-level of the module at the point at which the typechecker is finished work. It is this structure that is handed on to the desugarer For state that needs to be updated during the typechecking phase and returned at end, use a :n (= o).:ghc-lib-parserModule being compiled:ghc-lib-parserSIf a signature, the backing module See also Note [Identity versus semantic module]:ghc-lib-parser4What kind of module (regular Haskell, hs-boot, hsig):ghc-lib-parser$Top level envt; used during renaming:ghc-lib-parserTypes used for defaulting. Nothing => no default decl:ghc-lib-parserJust for things in this module:ghc-lib-parserNJust for things in this module See Note [The interactive package] in HscTypes:ghc-lib-parserGlobal type env for the module we are compiling now. All TyCons and Classes (for this module) end up in here right away, along with their derived constructors, selectors.j(Ids defined in this module start in the local envt, though they move to the global envt during zonking)[NB: for what "things in this module" means, see Note [The interactive package] in HscTypes:ghc-lib-parserInstance envt for all  home-packageX modules; Includes the dfuns in tcg_insts NB. BangPattern is to fix a leak, see #15111:ghc-lib-parserHDitto for family instances NB. BangPattern is to fix a leak, see #15111:ghc-lib-parserAnd for annotations:ghc-lib-parserWhat is exported:ghc-lib-parserInformation about what was imported from where, including things bound in this module. Also store Safe Haskell info here about transitive trusted package requirements.EThere are not many uses of this field, so you can grep for all them.AThe ImportAvails records information about the following things: 6All of the modules you directly imported (tcRnImports)WThe orphans (only!) of all imported modules in a GHCi session (runTcInteractive)(The module that instantiated a signature%Each of the signatures that merged inDIt is used in the following ways: - imp_orphs is used to determine what orphan modules should be visible in the context (tcVisibleOrphanMods) - imp_finsts is used to determine what family instances should be visible (tcExtendLocalFamInstEnv) - To resolve the meaning of the export list of a module (tcRnExports) - imp_mods is used to compute usage info (mkIfaceTc, deSugar) - imp_trust_own_pkg is used for Safe Haskell in interfaces (mkIfaceTc, as well as in HscMain) - To create the Dependencies field in interface (mkDependencies):ghc-lib-parser0What is defined in this module and what is used.:ghc-lib-parserRecords occurrences of imported entities One entry for each occurrence; but may have different GREs for the same Name See Note [Tracking unused binding and imports]:ghc-lib-parser.Locally-defined top-level names to keep alive."Keep alive" means give them an Exported flag, so that the simplifier does not discard them as dead code, and so that they are exposed in the interface file (but not to export to the user).Some things, like dict-fun Ids and default-method Ids are "born" with the Exported flag on, for exactly the above reason, but some we only discover as we go. Specifically:,The to/from functions for generic data typesDTop-level variables appearing free in the RHS of an orphan rule2Top-level variables appearing free in a TH bracket:ghc-lib-parserTrue  = Template Haskell syntax used.We need this so that we can generate a dependency on the Template Haskell package, because the desugarer is going to emit loads of references to TH symbols. The reference is implicit rather than explicit, so we have to zap a mutable variable.:ghc-lib-parserTrue  =$ A Template Haskell splice was used.2Splices disable recompilation avoidance (see #481):ghc-lib-parseruLocations of the top-level splices; used for providing details on scope in error messages for out-of-scope variables:ghc-lib-parser&Allows us to choose unique DFun names.:ghc-lib-parserVThe requirements we merged with; we always have to recompile if any of these changed.:ghc-lib-parserRenamed decls, maybe. Nothing  = Don't retain renamed decls.:ghc-lib-parser"dependencies from addDependentFile:ghc-lib-parser'Top-level declarations from addTopDecls:ghc-lib-parserForeign files emitted from TH.:ghc-lib-parser>Exact names bound in top-level declarations in tcg_th_topdecls:ghc-lib-parser#Template Haskell module finalizers.+They can use particular local environments.:ghc-lib-parser,Core plugins added by Template Haskell code.:ghc-lib-parserTemplate Haskell state:ghc-lib-parserMaybe Haddock header docs:ghc-lib-parserTrueb if any part of the prog uses hpc instrumentation. NB. BangPattern is to fix a leak, see #15111:ghc-lib-parser5Whether this module has a corresponding hi-boot file:ghc-lib-parserCThe Name of the main function, if this module is the main module.:ghc-lib-parserHas the typechecker inferred this module as -XSafe (Safe Haskell) See Note [Safe Haskell Overlapping Instances Implementation], although this is used for more than just that failure case.:ghc-lib-parser9A list of user-defined plugins for the constraint solver.:ghc-lib-parser%The RealSrcSpan this module came from:ghc-lib-parserLWanted constraints of static forms. See Note [Constraints in static forms].:ghc-lib-parser,Tracking indices for cost centre annotations:ghc-lib-parser:\ describes the result of running the frontend of a Haskell module. Usually, you'll get a :, since running the frontend involves typechecking a program, but for an hs-boot merge you'll just get a ModIface, since no actual typechecking occurred.iThis data type really should be in HscTypes, but it needs to have a TcGblEnv which is only defined here.:ghc-lib-parser0Historical "type-checking monad" (now it's just :).:ghc-lib-parser+Historical "renaming monad" (now it's just :).:ghc-lib-parserA : is a substitution on ^s that can be used to refine the identities of a hole while we are renaming interfaces (see  RnModIface). Specifically, a : for ns_module_name A, defines a mapping from {A.T} (for some  T) to some arbitrary other ."The most intruiging thing about a :(, however, is how it's constructed. A : is *implied* by the exported >Fs of the implementor of an interface: if an implementor of signature  H exports M.T-, you implicitly define a substitution from {H.T} to M.T. So a : is computed from the list of >s that are exported by the implementation of a module, or successively merged together by the export lists of signatures which are joining together.PIt's not the most obvious way to go about doing this, but it does seem to work!gNB: Can't boot this and put it in NameShape because then we start pulling in too many DynFlags things.;ghc-lib-parserUnion two ImportAvailsThis function is a key part of Import handling, basically for each import we create a separate ImportAvails structure and then union them all together with this function.;ghc-lib-parser#No signature or a partial signature;ghc-lib-parserIMakes a new equality predicate with the same role as the given evidence.;ghc-lib-parserGet the flavour of the given 9;ghc-lib-parser(Get the equality relation for the given 9;ghc-lib-parser@Returns free variables of constraints as a non-deterministic set;ghc-lib-parseroReturns free variables of constraints as a deterministically ordered. list. See Note [Deterministic FV] in FV.?ghc-lib-parseriReturns free variables of constraints as a composable FV computation. See Note [Deterministic FV] in FV.;ghc-lib-parsernReturns free variables of a bag of constraints as a non-deterministic set. See Note [Deterministic FV] in FV.;ghc-lib-parservReturns free variables of a bag of constraints as a deterministically odered list. See Note [Deterministic FV] in FV.?ghc-lib-parserrReturns free variables of a bag of constraints as a composable FV computation. See Note [Deterministic FV] in FV.;ghc-lib-parserkReturns free variables of WantedConstraints as a non-deterministic set. See Note [Deterministic FV] in FV.;ghc-lib-parsertReturns free variables of WantedConstraints as a deterministically ordered list. See Note [Deterministic FV] in FV.?ghc-lib-parseroReturns free variables of WantedConstraints as a composable FV computation. See Note [Deterministic FV] in FV.?ghc-lib-parseriReturns free variables of Implication as a composable FV computation. See Note [Deterministic FV] in FV.;*ghc-lib-parserA constraint is considered to be a custom type error, if it contains custom type errors anywhere in it. See Note [Custom type errors in constraints];.ghc-lib-parserTrue if taking superclasses of givens, or of wanteds (to perhaps expose more equalities or functional dependencies) might help to solve this constraint. See Note [When superclasses help];?ghc-lib-parserChecks whether a the given wanted constraints are solved, i.e. that there are no simple constraints left and all the implications are solved.;Lghc-lib-parser Create a new 9K with as many sensible defaults for its fields as possible. Note that the 9, 9, and 9 fields do notM have sensible defaults, so they are initialized with lazy thunks that will O if forced, so one should take care to initialize these fields after creation.&This is monadic purely to look up the :, which is used to initialize 9.;Nghc-lib-parserRetrieve the enclosed   from an 9.;Oghc-lib-parserRetrieve the enclosed  M from an 9.;Sghc-lib-parserWraps the given type with the constraints (via ic_given) in the given implication, according to the variables mentioned (via ic_skols) in the implication, but taking care to only wrap those variables that are mentioned in the type or the implication.;Xghc-lib-parser)Get the equality relation relevant for a 9;Yghc-lib-parserGet the role relevant for a 9;cghc-lib-parser-Extract the flavour, role, and boxity from a 9;dghc-lib-parser$Extract the flavour and role from a 9;pghc-lib-parser+Take a CtLoc and moves it to the kind level;ghc-lib-parser)Extract a suitable CtOrigin from a HsExpr;ghc-lib-parser-Extract a suitable CtOrigin from a MatchGroup;ghc-lib-parser-Extract a suitable CtOrigin from guarded RHSs?ghc-lib-parser7Extract a suitable CtOrigin from a list of guarded RHSs?ghc-lib-parserShort one-liners;ghc-lib-parser;This function provides an escape for direct access to the :: monad. It should not be used lightly, and the provided 9y API should be favoured instead.;ghc-lib-parser Access the 1 carried by the 9y& during constraint solving. Returns G if invoked during 9v or 9x.1 :q:r:s:t:u:v:w:x:y:z:{:|:}777779R9S9p9q9r9s9t9u9v9w9x9y9z9{9}9|9~999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999:::::::::: : : : : ::::::::::::::::::: :!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4:5:;:<:7:6:8:9:::=:>:?:@:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:Y:X:Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:~:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;; ; ; ; ; ;;;;;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2;3;4;5;6;7;8;9;:;;;<;=;>;?;@;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;;;;;;;;;;;1::::::::n:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :q:r:s:t:u:v:w:x:y:z:{:|:}:::::::::::::::::p::4:5:;:<:7:6:8:9::;;:0:1:2:3:::o:k:g:h:i:j:O:P:Q:R:S:T:U:V:E:F:G:H:I:J:K:L:M:N:A:B:C:D:=:>:?:@:~::::::7777:::::::::::::::::::::79R9S:_:`:a:b:c:d:e:f:[:\:]:^::::Z::::W:Y:X:/:,:-:.:$:%:&:':(:):*:+::::: :!:":#:::::::::;;999999;-:99:::::::::: : : : : ::::;8;1;7;:;0;2;3;4;5;6;9;!;$;,;.;/;";#;%;; ;;&;';(;);+;*; ; ; ;;;; ;;;;; ;;;U;V;W;X;[;Z;\;];;;;9999;I;;;>;?;@;A;<;=;D;E;B;C;;;;;J;K;;H;99999999999999;L;M;N;O999999;G;F9;k;m;l;n999999;v;r;s;u;w;t;y;;z;{;|;x9~99999999999999999999999999999999999999999999999;;;;;;9{9}9|;;;;;};~99999999999999999999;;999999999999;o;p;q;^;_;`;a;Y;T;S:9t9u9v9w9x9q9r9s9z9y;;;9999999;b9;c;d;e;f;g;j;h;i;Q;P;R:m:l999;:::::9p;;;;None$ 9 ;ghc-lib-parserfOutput should be to a temporary file: we're going to run more compilation steps on this output later.;ghc-lib-parserWe want a persistent file, i.e. a file in the current directory derived from the input filename, but with the appropriate extension. eg. in "ghc -c Foo.hs" the output goes into ./Foo.o.;ghc-lib-parserThe output must go into the specific outputFile in DynFlags. We don't store the filename in the constructor as it changes when doing -dynamic-too.;ghc-lib-parseronly the DynFlags change in the HscEnv. The DynFlags change at various points, for example when we read the OPTIONS_GHC pragmas in the Cpp phase.;ghc-lib-parserkthe ModLocation. This is discovered during compilation, in the Hsc phase where we read the module header.;ghc-lib-parseradditional object files resulting from compiling foreign code. They come from two sources: foreign stubs, and add{C,Cxx,Objc,Objcxx}File from template haskell;ghc-lib-parserStop just before this phase;ghc-lib-parser!basename of original input source;ghc-lib-parser!basename of original input source;ghc-lib-parser its extension;ghc-lib-parser%says where to put the pipeline output;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;NoneSX X ;ghc-lib-parser-A function called to log warnings and errors.;ghc-lib-parserBA monad transformer to add GHC specific features to another monad.GNote that the wrapped monad must support IO and handling of exceptions.;ghc-lib-parserThe Session is a handle to the complete state of a compilation session. A compilation session consists of a set of modules constituting the current program or library, the context for interactive evaluation, and various caches.;ghc-lib-parserA minimal implementation of a ;j. If you need a custom monad, e.g., to maintain additional state consider wrapping this monad or using ;.;ghc-lib-parser:A monad that has all the features needed by GHC API calls.In short, a GHC monadallows embedding of IO actions,can log warnings,/allows handling of (extensible) exceptions, andmaintains a current session.If you do not use ; or ;, make sure to call 5 before any call to the GHC API functions can occur.;ghc-lib-parser+Call the argument with the current session.;ghc-lib-parser#Grabs the DynFlags from the Session;ghc-lib-parserWSet the current session to the result of applying the current session to the argument.;ghc-lib-parser3Call an action with a temporarily modified Session.;ghc-lib-parser(A monad that allows logging of warnings.;ghc-lib-parserReflect a computation in the ; monad into the C monad.>You can use this to call functions returning an action in the ; monad inside an Cb action. This is needed for some (too restrictive) callback arguments of some library functions: libFunc :: String -> (Int -> IO a) -> IO a ghcFunc :: Int -> Ghc a ghcFuncUsingLibFunc :: String -> Ghc a -> Ghc a ghcFuncUsingLibFunc str = reifyGhc $ \s -> libFunc $ \i -> do reflectGhc (ghcFunc i) s;ghc-lib-parserpPrint the error message and all warnings. Useful inside exception handlers. Clears warnings after printing.R;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;R;;;;;;;;;5NoneSX - ghc-lib-parser]A static plugin with its arguments. For registering compiled-in plugins through the GHC API. ghc-lib-parser>A plugin with its arguments. The result of loading the plugin. ghc-lib-parser u is the compiler plugin data type. Try to avoid constructing one of these directly, and just modify some fields of  $ HsLet (snd $ unLoc $2) $4) (mj AnnLet $1:mj AnnIn $3 :(fst $ unLoc $2)) } #This adds an AnnLet annotation for let, an AnnIn for in, as well as any annotations that may arise in the binds. This will include open and closing braces if they are used to delimit the let expressions.?ghc-lib-parser4Add all [AddAnn] to an AST element wrapped in a Just?ghc-lib-parseriAdd a list of AddAnns to the given AST element, where the AST element is the result of a monadic action?ghc-lib-parserOAdd a list of AddAnns to the AST element, and return the element as a OrdList?ghc-lib-parser4Synonyms for AddAnn versions of AnnOpen and AnnClose?ghc-lib-parser4Synonyms for AddAnn versions of AnnOpen and AnnClose?ghc-lib-parsereGiven a list of the locations of commas, provide a [AddAnn] with an AnnComma entry for each SrcSpan?ghc-lib-parser!Given a list of the locations of '|'>s, provide a [AddAnn] with an AnnVbar entry for each SrcSpan?ghc-lib-parser?Get the location of the last element of a OrdList, or noSrcSpan?ghc-lib-parserjAdd a semicolon annotation in the right place in a list. If the leading list is empty, add it to the tail <<<<<<<<<<<<< <<<<<<<<<<<<<?9 ?9 None%HV <ghc-lib-parser#Parse the imports of a source file. Throws a 8 if parsing fails.<ghc-lib-parser6Parse OPTIONS and LANGUAGE pragmas of the source file. Throws a 85 if flag parsing fails (including unsupported flags.)<ghc-lib-parser6Parse OPTIONS and LANGUAGE pragmas of the source file. Throws a 85 if flag parsing fails (including unsupported flags.)<ghc-lib-parser4Complain about non-dynamic flags in OPTIONS pragmas. Throws a 8K if the input list is non-empty claiming that the input flags are unknown.<ghc-lib-parser Parse this.ghc-lib-parserLFilename the buffer came from. Used for reporting parse error locations.ghc-lib-parserKThe original source filename (used for locations in the function result)ghc-lib-parser8The source imports, normal imports, and the module name.<ghc-lib-parser Input fileghc-lib-parserParsed options, if any.<ghc-lib-parser Input Bufferghc-lib-parser)Source filename. Used for location info.ghc-lib-parserParsed options.<<<<<<<<<<<<$None Wghc-lib-parserHooks can be used by GHC API clients to replace parts of the compiler pipeline. If a hook is not installed, GHC uses the default built-in behaviourV<<<<<<<<<<<<W<<VW<<<<<<<<<<<<<<None!} (<ghc-lib-parserTRecover the type of a well-typed Core expression. Fails when applied to the actual )7 expression as it cannot really be said to have a type<ghc-lib-parser4Returns the type of the alternatives right hand side<ghc-lib-parser[Returns the type of the first alternative, which should be the same as for all alternatives<ghc-lib-parserIs this expression levity polymorphic? This should be the same as saying (isKindLevPoly . typeKind . exprType) but much faster.<ghc-lib-parserA more efficient version of )b when we have several arguments. The first argument is just for debugging, and gives some context<ghc-lib-parsernWrap the given expression in the coercion safely, dropping identity coercions and coalescing nested coercions<ghc-lib-parserZWraps the given expression in the source annotation, dropping the annotation if possible.<ghc-lib-parser<Strip ticks satisfying a predicate from top of an expression<ghc-lib-parseraStrip ticks satisfying a predicate from top of an expression, returning the remaining expression<ghc-lib-parserRStrip ticks satisfying a predicate from top of an expression, returning the ticks<ghc-lib-parsersCompletely strip ticks satisfying a predicate from an expression. Note this is O(n) in the size of the expression!<ghc-lib-parserbindNonRec x r b produces either: let x = r in bor: case r of x { _DEFAULT_ -> b }&depending on whether we have to use a case or let" binding for the expression (see <). It's used by the desugarer to avoid building bindings that give Core Lint a heart attack, although actually the simplifier deals with them perfectly well. See also 7<ghc-lib-parserTests whether we have to use a case rather than let7 binding for this expression as per the invariants of ): see CoreSyn#let_app_invariant<ghc-lib-parserqThis guy constructs the value that the scrutinee must have given that you are in one particular branch of a case<ghc-lib-parser$Extract the default case alternative<ghc-lib-parserjFind the case alternative corresponding to a particular constructor: panics if no such constructor exists<ghc-lib-parserbMerge alternatives preserving order; alternatives in the first argument shadow ones in the second<ghc-lib-parserGiven: )case (C a b x y) of C b x y -> ...nWe want to drop the leading type argument of the scrutinee leaving the arguments to match against the pattern<ghc-lib-parser$Refine the default alternative to a )|D, if there is a unique way to do so. See Note [Refine Default Alts]=ghc-lib-parser=' returns True of an expression that is:[Safe to evaluate even if normal order eval might not evaluate the expression at all, orSafe not- to evaluate even if normal order would do soIt is usually called on arguments of unlifted type, but not always In particular, Simplify.rebuildCase calls it on lifted types when a 'case' is a plain I. See the example in Note [exprOkForSpeculation: case expressions] belowPrecisely, it returns True iff: a) The expression guarantees to terminate, b) soon, c) without causing a write side effect (e.g. writing a mutable variable) d) without throwing a Haskell exception e) without risking an unchecked runtime exception (array out of bounds, divide by zero)For exprOkForSideEffects( the list is the same, but omitting (e).uNote that exprIsHNF implies exprOkForSpeculation exprOkForSpeculation implies exprOkForSideEffectsSee Note [PrimOp can_fail and has_side_effects] in PrimOp and Note [Transformations affected by can_fail and has_side_effects];As an example of the considerations in this test, consider: -let x = case y# +# 1# of { r# -> I# r# } in Ebeing translated to: 3case y# +# 1# of { r# -> let x = I# r# in E }We can only do this if the y + 1Y is ok for speculation: it has no side effects, and can't diverge or raise an exception.=ghc-lib-parser=' returns True of an expression that is:[Safe to evaluate even if normal order eval might not evaluate the expression at all, orSafe not- to evaluate even if normal order would do soIt is usually called on arguments of unlifted type, but not always In particular, Simplify.rebuildCase calls it on lifted types when a 'case' is a plain I. See the example in Note [exprOkForSpeculation: case expressions] belowPrecisely, it returns True iff: a) The expression guarantees to terminate, b) soon, c) without causing a write side effect (e.g. writing a mutable variable) d) without throwing a Haskell exception e) without risking an unchecked runtime exception (array out of bounds, divide by zero)For exprOkForSideEffects( the list is the same, but omitting (e).uNote that exprIsHNF implies exprOkForSpeculation exprOkForSpeculation implies exprOkForSideEffectsSee Note [PrimOp can_fail and has_side_effects] in PrimOp and Note [Transformations affected by can_fail and has_side_effects];As an example of the considerations in this test, consider: -let x = case y# +# 1# of { r# -> I# r# } in Ebeing translated to: 3case y# +# 1# of { r# -> let x = I# r# in E }We can only do this if the y + 1Y is ok for speculation: it has no side effects, and can't diverge or raise an exception.?ghc-lib-parserFTrue of dyadic operators that can fail only if the second arg is zero!=ghc-lib-parser:exprIsHNF returns true for expressions that are certainly already evaluated to headA normal form. This is used to decide whether it's ok to change: case x of _ -> einto: e-and to decide whether it's safe to discard a . So, it does notF treat variables as evaluated, unless they say they are. However, it does treat partial applications and constructor applications as values, even if their arguments are non-trivial, provided the argument type is lifted. For example, both of these are values: &(:) (f x) (map f xs) map (...redex...)because & on such things completes immediately.3For unlifted argument types, we have to be careful: C (f x :: Int#)Suppose f x diverges; then C (f x)1 is not a value. However this can't happen: see CoreSyn#let_app_invariant`. This invariant states that arguments of unboxed type must be ok-for-speculation (or trivial).= ghc-lib-parser Similar to =| but includes CONLIKE functions as well as data constructors. Conlike arguments are considered interesting by the inliner.?ghc-lib-parserReturns true for values or value-like expressions. These are lambdas, constructors / CONLIKE functions (as determined by the function argument) or PAPs.= ghc-lib-parserCan we bind this ) at the top level?= ghc-lib-parserOCheck if the expression is zero or more Ticks wrapped around a literal string.= ghc-lib-parserExtract a literal string from an expression that is zero or more Ticks wrapped around a literal string. Returns Nothing if the expression has a different shape. Used to "look through" Ticks in places that need to handle literal strings.=ghc-lib-parser@A cheap equality test which bales out fast! If it returns TrueS the arguments are definitely equal, otherwise, they may or may not be equal. See also ==ghc-lib-parser9Cheap expression equality test, can ignore ticks by type.=ghc-lib-parserReturns True3 of expressions that are too big to be compared by ==ghc-lib-parserPFinds differences between core expressions, modulo alpha and renaming. Setting top means that the IdInfo6 of bindings will be checked for differences as well.=ghc-lib-parser-Finds differences between core bindings, see diffExpr.The main problem here is that while we expect the binds to have the same order in both lists, this is not guaranteed. To do this properly we'd either have to do some sort of unification or check all possible mappings, which would be seriously expensive. So instead we simply match single bindings as far as we can. This leaves us just with mutually recursive and/or mismatching bindings, which we then speculatively match by ordering them. It's by no means perfect, but gets the job done well enough.?ghc-lib-parserFind differences in IdInfoJ. We will especially check whether the unfoldings match, if present (see  diffUnfold).?ghc-lib-parserPFind differences in unfoldings. Note that we will not check for differences of IdInfof in unfoldings, as this is generally redundant, and can lead to an exponential blow-up in complexity.?ghc-lib-parser)Add location information to diff messages=ghc-lib-parserGThis function is called only on *top-level* right-hand sides. Returns TrueW if the RHS can be allocated statically in the output, with no thunks involved at all.=ghc-lib-parserTrue if the type has no non-bottom elements, e.g. when it is an empty datatype, or a GADT with non-satisfiable type parameters, e.g. Int :~: Bool. See Note [Bottoming expressions]GSee Note [No alternatives lint check] for another use of this function.=ghc-lib-parser-collectMakeStaticArgs (makeStatic t srcLoc e) yields Just (makeStatic, t, srcLoc, e).Returns Nothing for every other expression.=ghc-lib-parserJDoes this binding bind a join point (or a recursive group of join points)?<ghc-lib-parserCase alternative constructorghc-lib-parser!Things bound by the pattern matchghc-lib-parser*The type arguments to the case alternative<ghc-lib-parserBType constructor of scrutinee's type (used to prune possibilities)ghc-lib-parserAnd its type argumentsghc-lib-parser imposs_consF: constructors known to be impossible due to the form of the scrutineeghc-lib-parser Alternatives<ghc-lib-parser$Uniques for constructing new bindersghc-lib-parser$Type constructor of scrutinee's typeghc-lib-parser"Type arguments of scrutinee's typeghc-lib-parser3Constructors that cannot match the DEFAULT (if any)ghc-lib-parserI', if a default alt was replaced with a )|?)))<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<========== = = = = ============?<<<<<<<<<<<<<<<<<<<<<<<<<<===<===<== ==== = = =======))<)= ==<<<<<==None!C*=ghc-lib-parser1Bind a binding group over an expression, using a let or case as appropriate (see CoreSyn#let_app_invariant)=ghc-lib-parserBind a list of binding groups over an expression. The leftmost binding group becomes the outermost group in the resulting expression?ghc-lib-parserConstruct an expression which represents the application of one expression paired with its type to an argument. The result is paired with its type. This function is not exported and used in the definition of =  and =!. Respects the let/app invariant by building a case expression where necessary See CoreSyn Note [CoreSyn let/app invariant]= ghc-lib-parserConstruct an expression which represents the application of one expression to the other Respects the let/app invariant by building a case expression where necessary See CoreSyn Note [CoreSyn let/app invariant]=!ghc-lib-parserConstruct an expression which represents the application of a number of expressions to another. The leftmost expression in the list is applied first Respects the let/app invariant by building a case expression where necessary See CoreSyn Note [CoreSyn let/app invariant]="ghc-lib-parserConstruct an expression which represents the application of a number of expressions to that of a data constructor expression. The leftmost expression in the list is applied first=$ghc-lib-parserMake a wildcard binder4. This is typically used when you need a binder that you expect to use only at a *binding* site. Do not use it at occurrence sites because it has a single, fixed unique, and it's very easy to get into difficulties with shadowing. That's why it is used so little. See Note [WildCard binders] in SimplEnv=(ghc-lib-parserCreate a lambda where the given expression has a number of variables bound over it. The leftmost binder is that bound by the outermost lambda in the result=)ghc-lib-parser Create a )" which will evaluate to the given Int=*ghc-lib-parser Create a )" which will evaluate to the given Int=+ghc-lib-parser Create a ) which will evaluate to the a Word with the given value=,ghc-lib-parser Create a )" which will evaluate to the given Word=-ghc-lib-parser Create a )" which will evaluate to the given Integer=.ghc-lib-parser Create a )" which will evaluate to the given Natural=/ghc-lib-parser Create a )" which will evaluate to the given Float=0ghc-lib-parser Create a )" which will evaluate to the given Double=1ghc-lib-parser Create a )" which will evaluate to the given Char=2ghc-lib-parser Create a )" which will evaluate to the given String=3ghc-lib-parser Create a )A which will evaluate to a string morally equivalent to the given  FastString=5ghc-lib-parseroBuild a small tuple holding the specified variables One-tuples are flattened; see Note [Flattening one-tuples]=6ghc-lib-parser~Build the type of a small tuple that holds the specified variables One-tuples are flattened; see Note [Flattening one-tuples]=7ghc-lib-parserqBuild a small tuple holding the specified expressions One-tuples are flattened; see Note [Flattening one-tuples]=8ghc-lib-parserBuild a small unboxed tuple holding the specified expressions, with the given types. The types must be the types of the expressions. Do not include the RuntimeRep specifiers; this function calculates them for you. Does not5 flatten one-tuples; see Note [Flattening one-tuples]=9ghc-lib-parser%Make a core tuple of the given boxity=:ghc-lib-parsermBuild a big tuple holding the specified variables One-tuples are flattened; see Note [Flattening one-tuples]=<ghc-lib-parser|Build the type of a big tuple that holds the specified variables One-tuples are flattened; see Note [Flattening one-tuples]==ghc-lib-parseroBuild a big tuple holding the specified expressions One-tuples are flattened; see Note [Flattening one-tuples]=>ghc-lib-parserBuild the type of a big tuple that holds the specified type of thing One-tuples are flattened; see Note [Flattening one-tuples]=?ghc-lib-parserThe unit expression=@ghc-lib-parser=A is like =@E but one-tuples are NOT flattened (see Note [Flattening one-tuples])Builds a selector which scrutises the given expression and extracts the one name from the list given. If you want the no-shadowing rule to apply, the caller is responsible for making sure that none of these names are in scope.If there is just one 7 in the tuple, then the selector is just the identity.0If necessary, we pattern match on a "big" tuple.=Aghc-lib-parserBuilds a selector which scrutises the given expression and extracts the one name from the list given. If you want the no-shadowing rule to apply, the caller is responsible for making sure that none of these names are in scope.If there is just one 7 in the tuple, then the selector is just the identity.0If necessary, we pattern match on a "big" tuple.=Bghc-lib-parser? is like =BE but one-tuples are NOT flattened (see Note [Flattening one-tuples])Like =@7 but for tuples that are guaranteed never to be "big". pmkSmallTupleSelector [x] x v e = [| e |] mkSmallTupleSelector [x,y,z] x v e = [| case e of v { (x,y,z) -> x } |]?ghc-lib-parserLike =@7 but for tuples that are guaranteed never to be "big". pmkSmallTupleSelector [x] x v e = [| e |] mkSmallTupleSelector [x,y,z] x v e = [| case e of v { (x,y,z) -> x } |]=Cghc-lib-parserA generalization of =@?, allowing the body of the case to be an arbitrary expression.;To avoid shadowing, we use uniques to invent new variables./If necessary we pattern match on a "big" tuple.=Dghc-lib-parserAs =CM, but for a tuple that is small enough to be guaranteed not to need nesting.=Fghc-lib-parser Makes a list [] for lists of the specified type=Gghc-lib-parser Makes a list (:) for lists of the specified type=Hghc-lib-parserOMake a list containing the given expressions, where the list has the given type=Ighc-lib-parserMake a fully applied  expression=Jghc-lib-parserMake a build6 expression applied to a locally-bound worker function=Kghc-lib-parser&Makes a Nothing for the specified type=Lghc-lib-parser/Makes a Just from a value of the specified type=@ghc-lib-parserThe $s to pattern match the tuple againstghc-lib-parserThe  to selectghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutineeghc-lib-parserSelector expression=Aghc-lib-parserThe $s to pattern match the tuple againstghc-lib-parserThe  to selectghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutineeghc-lib-parserSelector expression=Cghc-lib-parser-For inventing names of intermediate variablesghc-lib-parser)The tuple identifiers to pattern match onghc-lib-parserBody of the caseghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutinee=Dghc-lib-parserThe tuple argsghc-lib-parserBody of the caseghc-lib-parser,A variable of the same type as the scrutineeghc-lib-parser Scrutinee=Ighc-lib-parserElement type of the listghc-lib-parserFold result typeghc-lib-parserCons! function expression for the foldghc-lib-parserNil expression for the foldghc-lib-parser#List expression being folded acress=Jghc-lib-parser!Type of list elements to be builtghc-lib-parser+Function that, given information about the Qs of the binders for the build worker function, returns the body of that worker@======= =!="=#=$=%=&='=(=)=*=+=,=-=.=/=0=1=2=3=4=5=6=7=8=9=:=;=<===>=?=@=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y@=== =!="=(=%=&=$=#=='=+=,=)=*=-=.=/=0=1=2=3=4====E=5=6=7=8=9=?=:=;=<=>===B=D=@=A=C=F=G=H=I=J=K=L=M=N=Y=O=R=Q=U=T=S=P=X=V=W= 4=!4None";#"=[ghc-lib-parser$An environment for substituting for s=\ghc-lib-parser'A substitution environment, containing , , and  substitutions.6Some invariants apply to how you use the substitution: ,Note [The substitution invariant] in TyCoRep/Note [Substitutions apply only once] in TyCoRep=bghc-lib-parserDFind the in-scope set: see TyCoRep Note [The substitution invariant]=cghc-lib-parserRemove all substitutions for s and )Bs that might have been built up while preserving the in-scope set=dghc-lib-parserAdd a substitution for an  to the =\: you must ensure that the in-scope set is such that TyCoRep Note [The substitution invariant] holds after extending the substitution like this=eghc-lib-parserAdds multiple  substitutions to the =\ : see also =d=fghc-lib-parserAdd a substitution for a  to the =\ The  *must* be a real TyVar, and not a CoVar You must ensure that the in-scope set is such that TyCoRep Note [The substitution invariant] holds after extending the substitution like this.=gghc-lib-parserAdds multiple  substitutions to the =\ : see also =f=hghc-lib-parserAdd a substitution from a  to a ) to the =\: you must ensure that the in-scope set satisfies TyCoRep Note [The substitution invariant] after extending the substitution like this=ighc-lib-parseryAdd a substitution appropriate to the thing being substituted (whether an expression, type, or coercion). See also =d, =f, =h=kghc-lib-parserAdd a substitution as appropriate to each of the terms being substituted (whether expressions, types, or coercions). See also =i.=lghc-lib-parserFind the substitution for an  in the =\=mghc-lib-parserFind the substitution for a  in the =\=pghc-lib-parserSimultaneously substitute for a bunch of variables No left-right shadowing ie the substitution for (x y. e) a1 a2 so neither x nor y scope over a1 a2=rghc-lib-parserAdd the )J to the in-scope set, but do not remove any existing substitutions for it=sghc-lib-parserAdd the )U to the in-scope set: as a side effect, and remove any existing substitutions for it=tghc-lib-parserAdd the ) s to the in-scope set: see also =s=ughc-lib-parserOptimized version of =tE that can be used if you are certain all the things being added are s and hence none are s or s=wghc-lib-parser"Apply a substitution to an entire )1. Remember, you may only apply the substitution once6: see Note [Substitutions apply only once] in TyCoRepcDo *not* attempt to short-cut in the case of an empty substitution! See Note [Extending the Subst]=yghc-lib-parser"Apply a substitution to an entire )$, additionally returning an updated =\2 that should be used by subsequent substitutions.=zghc-lib-parser"Apply a substitution to an entire )$, additionally returning an updated =\2 that should be used by subsequent substitutions.={ghc-lib-parserDe-shadowing the program is sometimes a useful pre-pass. It can be done simply by running over the bindings with an empty substitution, because substitution returns a result that has no-shadowing guaranteed.(Actually, within a single type* there might still be shadowing, because =@ is a no-op for the empty substitution, but that's probably OK.) Aug 09wThis function is not used in GHC at the moment, but seems so short and simple that I'm going to leave it here=|ghc-lib-parserSubstitutes a )" for another one according to the =\- given, returning the result and an updated =\3 that should be used by subsequent substitutions.  M is preserved by this process, although it is substituted into appropriately.=}ghc-lib-parserApplies =| to a number of )s, accumulating a new =\ left-to-right=~ghc-lib-parser,Substitute in a mutually recursive group of s=ghc-lib-parserVery similar to =| , but it always allocates a new [E for each variable in its output. It substitutes the IdInfo though.=ghc-lib-parserApplies = to a number of 8s, accumulating a final substitution from left to right=ghc-lib-parser$Clone a mutually recursive group of s=ghc-lib-parserSee $=ghc-lib-parserSee $=ghc-lib-parserSubstitute into some  ! with regard to the supplied new .=ghc-lib-parserSubstitutes for the s within an unfolding=ghc-lib-parserSubstitutes for the s within an unfolding=ghc-lib-parserSubstitutes for the  s within the  WorkerInfo given the new function ?ghc-lib-parser"Substitution to use for the IdInfoghc-lib-parser Substitution and Id to transformghc-lib-parser-Transformed pair NB: unfolding may be zapped9"$$=[=\=]=^=_=`=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}=~==================9=\=]$=["={=====x=w=z=y===l=m=====_=`=a=p=b=^=d=e$=g=i=k=j=c=r=s=t=u=q=v==f=h=n=o=|=}=~=======None"H =ghc-lib-parser[manifestArity sees how many leading value lambdas there are, after looking through casts=ghc-lib-parser!An approximate, fast, version of =?ghc-lib-parserhThe Arity returned is the number of value args the expression can be applied to without doing much work=ghc-lib-parser etaExpand n e1 returns an expression with the same meaning as e, but with arity n.Given: e' = etaExpand n eWe should have that: ty = exprType e = exprType e'=ghc-lib-parser~Split an expression into the given number of binders and a body, eta-expanding if necessary. Counts value *and* type binders.=ghc-lib-parser,Result should have this number of value argsghc-lib-parserExpression to expand ========== ==========None%`"P?ghc-lib-parserNDecide whether some bindings should be made into join points or not. Returns F if they can't be join points. Note that it's an all-or-nothing decision, as if multiple binders are given, they're assumed to be mutually recursive.1It must, however, be a final decision. If we say True for f , and then subsequently decide not make f= into a join point, then the decision about another binding g might be invalidated if (say) f tail-calls g.0See Note [Invariants on join points] in CoreSyn.======None"Q;========None"[{=ghc-lib-parser+Returns Just (bndr,rhs) if the binding is a join point: If it's a JoinId, just return it If it's not yet a JoinId but is always tail-called, make it into a JoinId and return it. In the latter case, eta-expand the RHS if necessary, to make the lambdas explicit, as is required for join points]Precondition: the InBndr has been occurrence-analysed, so its OccInfo is valid=ghc-lib-parserReturns Just (dc, [t1..tk], [x1..xn])R if the argument expression is a *saturated* constructor application of the form dc t1..tk x1 .. xn>, where t1..tk are the *universally-quantified* type args of dc ============ ============None"ve=ghc-lib-parser Used to make )9 for an 1 defined in the module being compiled. See also )9=ghc-lib-parserIFind the "top" free names of several expressions. Such names are either: cThe function finally being applied to in an application chain (if that name is a GlobalId: see Var#globalvslocal), orThe TyCon if the expression is a )cThis is used for the fast-match-check for rules; if the top names don't match, the rest can't?ghc-lib-parserruleCantMatch tpl actual returns True only if actual definitely can't match tpl by instantiating tplV. It's only a one-way match; unlike instance matching we don't consider unification.Notice that [_$_] )ruleCantMatch [Nothing] [Just n2] = FalseR Reason: a template variable can be instantiated by a constant Also: )ruleCantMatch [Just n1] [Nothing] = False Reason: a local variable v in the actuals might [_$_]=ghc-lib-parserMake a * containing a number of )9!s, suitable for putting into an IdInfo=ghc-lib-parserMGather all the rules for locally bound identifiers from the supplied bindings=ghc-lib-parserThe main rule matching function. Attempts to apply all (active) supplied rules to this instance of an application in a given context, returning the rule applied and the resulting expression if successful.=ghc-lib-parseriReport partial matches for rules beginning with the specified string for the purposes of error reporting?ghc-lib-parser0Target; can have more elements than the template=ghc-lib-parserRule activation testghc-lib-parser Rule patternghc-lib-parserRules for an Idghc-lib-parserBindings to check inghc-lib-parserResulting check message================================None"+ ?ghc-lib-parser0The size of a candidate expression for unfolding?ghc-lib-parser Size found?ghc-lib-parser2Arguments cased herein, and discount for each such?ghc-lib-parser?Size to subtract if result is scrutinised by a case expression=ghc-lib-parserMake an unfolding that may be used unsaturated (ug_unsat_ok = unSaturatedOk) and that is reported as having its manifest arity (the number of outer lambdas applications will resolve before doing any work).=ghc-lib-parserXMake an unfolding that will be used once the RHS has been saturated to the given arity.?ghc-lib-parser)Finds a nominal size of a string literal.?ghc-lib-parserThe size of a function call?ghc-lib-parser"The size of a jump to a join point?ghc-lib-parsernumber of value argsghc-lib-parser"number of value args that are void?ghc-lib-parsernumber of value argsghc-lib-parser"number of value args that are void"))%)===============================")%))===============================None"#%SXg"5?ghc-lib-parser9Explicit "type-class"-like dictionary for numeric primopsHDepends on DynFlags because creating a literal value depends on DynFlags?ghc-lib-parserAdd two numbers?ghc-lib-parserSub two numbers?ghc-lib-parserMultiply two numbers?ghc-lib-parserCreate a literal value?ghc-lib-parserMatch a subtraction?ghc-lib-parser<Match a multiplication with a literal (handle commutativity)?ghc-lib-parserMatch a multiplication?ghc-lib-parser7Match an addition with a literal (handle commutativity)?ghc-lib-parserMatch an addition?ghc-lib-parserMatch a literal?ghc-lib-parserMatch a primop?ghc-lib-parser(Match the application of a binary primop?ghc-lib-parserCheck if there is comparison with minBound or maxBound, that is always true or false. For instance, an Int cannot be smaller than its minBound, so we can replace such comparison with False.?ghc-lib-parser]Create an Int literal expression while ensuring the given Integer is in the target Int range?ghc-lib-parserCreate an unboxed pair of an Int literal expression, ensuring the given Integer is in the target Int range and the corresponding overflow flag (0#/1#) if it wasn't.?ghc-lib-parser^Create a Word literal expression while ensuring the given Integer is in the target Word range?ghc-lib-parserCreate an unboxed pair of a Word literal expression, ensuring the given Integer is in the target Word range and the corresponding carry flag (0#/1#) if it wasn't.?ghc-lib-parser$Left identity rule for PrimOps like IntAddC and WordAddCX, where, in addition to the result, we have to indicate that no carry/overflow occured.?ghc-lib-parser%Right identity rule for PrimOps like IntSubC and WordSubCX, where, in addition to the result, we have to indicate that no carry/overflow occured.?ghc-lib-parserIdentity rule for PrimOps like IntAddC and WordAddCX, where, in addition to the result, we have to indicate that no carry/overflow occured.?ghc-lib-parser9Rules to perform constant folding into nested expressions6See Note [Constant folding through nested expressions]=ghc-lib-parserzMatch the scrutinee of a case and potentially return a new scrutinee and a function to apply to each literal alternative.======|None"!ghc-lib-parserData Constructor Boxer?ghc-lib-parser/Unpack/Strictness decisions from source module.~This function should only ever be invoked for data constructor fields, and never on the field of a newtype constructor. See Note [HsImplBangs for newtypes].?ghc-lib-parserWrappers+Workers and representation following UnpackStrictness decisions x!=!!!!===================>>>>>>==!=!===!==!====>>>===x>!>=>=None"A"$$$$$$$>>>> > > > > >>>>>>>>>>>>>>>>>>> ">>>> $> > > $> $$>$>>$>$>>>>>>>>>>>>>>> ?89:;<=8>?8>@8AB8CD8CE89F8GH89I89J8KL8KM8NO8PQ8PR8PS8PT;UV;UW8KX89Y89Z89[89\89]8^_8N`8Na8Nb8Nc89d89e89f89g89h89i8Pj8Pk;Ul8mn8No8Np89q89r8Ks;Ut8uv8Nw8mx8Ny8z{8^|89}8~88989;;;;;8;8N;;8;88;88;;;888888888888888888A8A8A8A8A8A8A8A8A8A8A8A888888888888~8~8~8~8~8~8~8~8~8~8~8~8~8~8~8~8~8~8~8~8~8~88888888888u8u8u8u88m8m8m8m8m8m8m8m8m8m8m8m8m8m8m8m8m8m8m8m 8m 8m 8m 8m 8m8m8m8m8m8m8m8m88N8N8N8N8N8N8N8N8N 8N!8N"8N#8N$8N%8N&8N'8N(8N)8N*8P+8P,8P-8P.8P/8P08z18z28z38z48z58z68z78z88>98>:8>;8><8>=8>>8>?8>@8>A8>B8>C8>D8>E8>F8>G8>H8>I8>J8>K8>L8>M8>N8>O8>P8>Q8>R8>8>8ST8CU8CV8KW8KX8KY8KZ8K[89\89]89^89_89`89a89b89c89d89e89f89g8hi8hj8hk8lm;Un;Uo;Up;Uq;Ur;Us;Ut;Uu;Uv;Uwxy.xyzxy{xy|xy}~~~                                                                                                 !"#$%&&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;;<<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi  j k l m n o!p!q!r!s!t!u!v!w!x!y!z!{!|!}"~""""""""""""""""""""""""""""""#########$$$%%o%?%k&G&&&&&&&&&&&&&&&&&&&&&F&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&x&&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&&&&& &!&"&#&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&q&r&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&-&-&.&.&?&?&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P'Q'R'S'T'U'V'o'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~''''(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7))8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))*a*b*c*d*p*t*u*w*x*y*************|++++++++++++++++++++++++++++++++++++ + + + + + + + + + + + + + + + + , , , , , , , , , , , , , , , , , , , , !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, 0, 1, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, :, :, ;, <, =, >, ?, @, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, [, \, ], ^, _, `, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, {, |, }, ~, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,                            --..//d/ / 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0                       1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 !2 "2 #2 $2 %2 &2 '2 (2 )2 *2 +2 ,22222 -2 .2 /2 02 12 22 32 42 52 62 72 82 92 :2 ;2 <2 =2 >2 ?2 @2 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 K2 L2 M2 N2 O3 P3 Q333 R3 S3 T3 U3 V3 W3 X33 Y3 Z3 [44444 \4 ]4 ^4 _4 `4 a4 b4 c4 d4 e4 f4 g4 h4 i4 j4 k4 l4 m4 n4 o4 p4 q4 r4 s4 t4 u4 v4 w4 x4 y4 z4 {4 |4 }4 ~4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 6677777 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 9 : ;;; ; ;                                          ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P- Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v< w< w< x< y< z< {< |< }<<<<< ~< < < < < < < < < < < < < < < <    = = ===== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = >>>>> > > > > > > > > > > > > > > > > > > > > ? ? ? ? ? ??? ? ? @ @ @ @ @ @ @ A A A A A A A A A A A A A A A B B B B B B B B B B C C C C C C C C C C C C C C C C C CQCfCdC CeC C C CoCVCWCXCYC[C\C^C_C`CaCbCcCgChCiCjCkC CoC CpClCmCnC CrCtCwC|C}C !C~CuCvCqCsCyCxCzC{C "C #C $C %C &C 'C (C )/ */ +// ,/ -/ ./ // 0/ 1/ 2//// 3/ 4/ 5/ 6/ 7/ 8/ 9/ :/ ;/ </ =/ >/ ?/ @/ A/ B/ C/ D/ E/ F/ G/ H/ I/ J/ K/ L/ M/ N/ O/ P/ Q/ R/ S/ T/ U/ V/ W/ X/ Y/ Z/ [/ \/ ]/ ^/ _/ `/ a/ b/ c/ d/ e/ f/ g/ h/ i/ j/ k/ l/ m/ n/ o/ p/ q/ r/ s/ t/ u/ v/ w/ x/ y/ z/ {/ |/ }/ ~/ / / /V/ /o/f/ /e/ /g/h/i/j/k/ / /l/n/m/ /p/ / /o/ /Z/]/ / / / / / /W/X/Y/\/[/ / / /^/_/`/a/b/c/ / / / /|/q/s/u/v/r/t/w/y/x/{/z/}/ !/~/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / D D D DGD D D DD D DED DFD D D H H H H IIIII I I I I I I I I I I I I I JJJ J J J J J J J J J J J J J J J J J J J K K K K K K K K K K K K !K "K #L $L %L &L 'L (L )L *L +L ,L -L .M /M 0M 1M 2M 3M 4M 5M 6M 7M 8M 9M 8M :MMM ;M <M ;M =M >M ?M @M AM BM CM DM EM FM GM HM IM JM KM LM MM NM OM PM QM RM SM TM UM VM WM XM YM ZM [M \M ]M ^M _M `M aM bM cM dM eM fM gM hM iM jM kM lM mM nM oM pM qM rM sM tM uM vM wM xM yM zM {M |M }M ~M M M M M M M M M M M M M M M M M N NNN N N N O O O O O O O O O O O O O P P P P P P P P P P P P P P P PPPP P P P P P P P P PxPP P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P%P&P'P(P P P P P P P P P P P P P P P P P P PPPPPPPP P P P P P P P PP P P P P P P PPPPPPPPPP PP P P P PPPPPPPPPPPPPPP*PP+PPPP P!P"P#P$P%P&P'P(P)P*P+PP,PPP-P.P/P0P1P2P3P4P5P6P7P8P9P:P;P<P=P>P?P@PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP[P\P]P^P_P`PaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzP{P|PP}P~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSS S S S S SSSSSSSSSSSSSSSSSSS S!S"S#S$S%S&S'S(S)S*S+S,S-S.S/S0S1S2S3S4S5S6S7S8S9S:S;S<S=S>S?S@SASBSCSDSESFSGSHSITTTJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZT[T\T]T^T_T`TaTbTcTdTeTfTgThTiTjTkTlTmTnToTpUUUqUrUsUtUuUvUwUxUyUzU{U|U}U~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X X X XXXXXXXXXXXXXXXXXXX X!X"X#X$X%X&X'X(X)X*X+X,X-X.X/X0X1X2?3?4?5?6?7?8?9?9?:?;?;?<?=? ?>?????@?A?B?B?C?D?E?F?G?H?I?J?K?L?M???N?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~????????????????????????????????????????????????????????????????????????????????????????????a? ????????????_?`???YYZZZZZZZZZZZZZZZ Z Z Z Z Z Z ZZZZZZZZZZZZZZZZZZZZZZZ Z!Z"Z#Z$Z%ZZZZ&Z'Z(Z)Z*Z+Z,Z-Z.Z/Z0[1[2[[[3[4[5[6[7[8\\\n\9\:\;\<\=\>\?\@\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q] ]R]L]S]T]U]V]W]X]Y]Z][]\]]]^]_]`]a]b]c]d]e]f]g]h]i]j]k]l]m]n]o]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____________________ __________________________________ _ _ _ _ ____3333333333333333 3!3"3#3$3%3&3'3'3(3)3*3+3,3-3,3.3.3/3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3O3P3Q3R3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 3 3 3 3 3333333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333333333333333333333333333333333333333333333333333333333333333333333333 3333333333333333333333333333333333333333333333333333333333............... . . . . .................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H..I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p. ..q.r.s.t.f.e.d.u.v.h.i.w-x-y-z-{-{-|-}-~--------------------------------------------------- -r--/-s-----```````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbcccccccccc c c c c ccccccccccddddddddddddd d!d"d#d$d%e&e'e(f)f*ff+f,f-f.f.f/f0f1f2f3f4f5f6f7f8ff9f:f;f<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[g\g]g^O_O`OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOpOqOrOsOtOuOvOwOxOyOzO{O|O}O~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@hhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiii i i i i iiiiiiiiiiiiiiiiiii i!i"i#i$i%i&i'i(i)i*i+i,i-i.i/i0i1i2i3i4i5i6i7i8i9i:i;i<i=i>i?i@iAiBiCjDjEjjjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj[k\k]k^k_k`kakakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkkkxkykzk{k|k}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;Y<Y=Y>Y?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;Y<Y=Y>Y?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;Y<Y=Y>Y?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY Y Y Y Y YYYYYYYYYYYYYYYYYYY Y!Y"Y#Y$Y%Y&Y'Y(Y)Y*Y+Y,Y-Y.Y/Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y:Y;Y<Y=Y>Y?Y@YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxYyYzY{Y|Y}Y~YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYlllllllllllllllllllllll llllll)llll,lllll lllll%lll#lllllllllll"ll$llllllll&ll ll!lllll'l(llllllll*lllllllll l+lll l l llllll lllllllllllllllllllllllll l!l"l#l$l%l&l'l(l)l*l+l,m-m.m/m0m1m2m3m4m5m6m7m8m9m:m;m<m=m>m?m@mAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm[m\m\m]m^m^m_m`mambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzm{m|m}m~mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm m m m m mmmmmmmmmmmmmmmmmmm m!m"m#m$m%m&m'm(m)m*m+m,m-m.m/m0m1m2m3m4m5m6m7m8m9m:m;m<m=m>m?m@mAmBnCnDnEnFnGnHnInJnnn nKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn[n\n]n^n_n`nanbnncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn{n|n}n~nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooppqqqqqqrrrrrrrrsssssssssssssssssssssssssssssssssssss s s s s sssssssssssssssssss s!s"s#s$s%s&s's(s)s*s+s,s-s.s/s0s1s2s3s4s5s6s7s8s9s:s;s<s=s>s?s@sAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsXsYsZs[s\s]s^s_s`sasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszs{s|s}s~ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s !s "s #s $s %s &s 's (s )s *s +s ,s -s .s /s 0s 1s 2s 3s 4s 5s 6s 7s 8s 9s :s ;s <s =s >s ?s @s As Bs Cs Ds Es Fs Gs Hs Is Js Ks Ls Ms Ns Os Os Ps Qs Rs Ss Ts Us Vs Ws Xt Yttu Zu [u Zu \u ]u ^u _u `u au bu cu du eu fu gu hu iu ju ku lu lu mu nu ou pu qu ru su tu uu vu wu xu yu zu {u |u }u ~u u u u u u u u u u u u v v v v v v vvv v v v v v w w www w w w w w w w w w w xxx x x y y y y y y y y yyy y yy y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y z z z z z z z z z z z z zz z z z z z z z z z z z z zzzzz z z z z z z z z z z z z z z z z z z z z z z!z!z!z!z!z!z!z!z!z! z! z! z! z! z!z!z!z!z z!z!z!z!z!z!z!z!z!z!z!z!zzzz!E!E! E!!E!"E!#E!$E!%E!&E!'E!(E!)E!*E!+E!,E!-E!.E!/E!0E!1E!2E!3E!4E!5E!6E!7E!8E!9E!:E!;E!<E!=E!>E!?{!@{!A{!B{!C{!D{{{{!E{!F{!G{!H{!I{!J{!K{!L{!M{!N{!O{!P{!Q{!R{!S{!T{!U{!V{!W{!X{!Y{!Z{![{!\{!]{!^{!_{!`{!a|!b|!c|!d|!e|!f}!g}!h}!i}!j}!k}!l}!m}!n}}}!o}!p}!q}!r}!s}!t}!u}!v}!w}!x}!y}!z}!{}!|}!}}!~}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!}!~!~!~!~!~!~!~!~~~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~"~"~"~"~"~"~"~"~"~" ~" ~" ~" ~" ~"~"~"~"~"~"~"~"~"~"~"~"~"~"~";";";";" ;"!;"";"#;"$;"%;"&;"';"(;");"*;"+;",;"-;".;"/;"0;"1;"2;"3;"4;"5;"6;"7;"8;"9;":;";;"<;"=;">;"?;"@;"A;"B;"C;"D;"E;"F;"G;"H;"I;"J;"K;"L;"M;"N;"O;"P;"Q;"R;"S;"T;"U;"V;"W;"X;"Y;"Z;"[;"\;"];"^;"_;"`;"a;"b;"c;"d;"e;"f;"g;"h;"i;"j;"k;"l;"m;"n;"o;"p;"q;"r;"s;"t;"u;"v;"w;"x;"y;"z;"{;"|;"};"~;";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";";;";";";";";";";";";";";#;#;#;#;#;#;#F#F#F# F# F# F# F# F#F#F#F#F#r#r#r#r#r#r#r#r#r#r#r#r#r#r# r#!r#"r##r#$r#%r#&r#'r#(r#)r#*r#+r#,r#-r#.r#/r#0r#1r#1r#2r#3r#4r#5r#6r#7r#8rr#9r#:r#;r#<r#=r#>r#?r#@r#Ar#Br#Cr#Dr#Er#Fr#Gr#Hr#Ir#Jr#Kr#Lr#Mr#Nr#Or#Nr#Pr#Qr#Rr#Rr#Qr#Sr#Tr#Ur#Vr#Wr#Xr#Yr#Zr#[r#\r#]r#^r#_r#`r#ar#br#cr#dr#er#fr#gr#hr#ir#jr#kr#lr#mr#nr#or#pr#qr#rr#sr#tr#ur#vr#wr#xr#yr#zr#{r#|r#}r#~r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r##################D#D#D D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#DDD#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D$D$D$D$D$D$D$D$D$D$ D$ D$ D$ D$ D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$ D$!D$"D$#D$$D$%D$&D$'D$(D$)D$*D$+D$,D$-D$.D$/D$0D$1D$2D$3D$4D$5D$6D$7D$8D$9D$:D$;D$<D$=D$>D$?D$@D$AD$BD$CD$DD$ED$FD$GD$HD$ID$JD$KD$LD$MD$ND$OD$PD$QD$RD$SD$TD$UD$VD$WD$XD$YD$ZD$[D$\D$]D$^D$_DD$`D$aDD$bD$cD$dD$eD$fD$gD$hD$iD$jD$kD$lD$mD$nD$oD$pD$qD$rD$sD$tD$uD$vD$wD$xD$yD$zD${D$|D$}D$~D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$D$DDDD$D$D$DD$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%QG%RG%SG%TF%UF%VF%WF%XF%YF%ZF%[F%\F%]F%]F%^F%_F%`F%aF%bF%cF%dF%eF%fF%gF%hF%iF%jF%kF%lF%mF%nF%oF%pF%qF%rF%sF%tF%uF%vF%wF%xF%yF%zF%{F%|F%}F%~F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F%F&F&F&F&F&F&F&F&F&F& F& F& F& F& F&F&F&q&q&q&q&q&q&q&q&q&q&q&q&qq&q&q&q& q&!q&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&7&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E&E'E'E'E'E'E'E'E'E'E' E' E' E' E' E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'E'''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'Ew'Fw'Gw'Hw'Iw'Jw'Kw'Lw'Mw'Nw'Ow'Pw'Qw'Rw'Sw'Tw'Uw'Uw'Vw'Ww'Xw'Yw'Zw'[w'\w']w'^w'_w'`w'aw'bw'cw'dw'ew'fw'gw'hw'iw'jw'kw'lw'mw'nw'ow'pw'qw'rw'sw'tw'uw'vw'ww'xw'yw'zw'{w'|w'}w'~w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w'w''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(cx(dx(ex(fx(gx(hx(ix(jx(kx(lx(mx(nx(ox(px(qx(rx(sx(tx(u(v(w(x(y(z({(| (}(~(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((n((((((FE(((()))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)zN){N)|N)}N)~N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)NYN)NUN)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N))))))))))))))))))))))))))))))))))))))))))))))))))))))))********** * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6o*7o*8o*9o*:o*;o*<o*=o*>o*?o*@o*Ao*Bo*Co*Do*Eo*Fo*Go*Ho*Io*Jo*Ko*Lo*Mo*No*Oo*Po*Qo*Ro*So*To*Uo*Vo*Wo*Xo*Yo*Zo*[o*\o*]o*^o*_o*`o*ao*bo*co*do*eo*fo*go*ho*io*jo*ko*lo*mo*no*oo*po*qo*ro*so*to*uo*vo*wo*xo*yo*zo*{o*|o*}o*~o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o*o********6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6*6+6+6+6+6+6+6+6+6+6+ 6+ 6+ 6+ 6+ 6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+ 6+!6+"6+#6+$6+%6+&6+'6+(6+)6+*6++6+,6+-6+.6+/6+06+16+26+36+46+56+66+76+86+96+:6+;6+<6+=6+>6+?6+@6+A6+B6+C6+D6+E6+F6+G6+H6+I6+J6+K6+L6+M6+N6+O6+P6+Q6+R6+S6+T6+U6+V6+W6+X6+Y6+Z6+[6+\6+]6+^6+_6+`6+a6+b6+c6+d6+e6+f6+g6+h6+i6+j6+k6+l6+m6+n6+o6+p6+q6+r6+s6+t6+u6+v6+w6+x6+y6+z6+{6+|6+}6+~6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6,6,6,6,6,6,6,6,6,6, 6, 6, 6, 6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,!6,"6,#6,$6,%6,&6,'6,(6,)6,*6,+6,,6,-6,.6,/6,06,16,26,36,46,56,66,76,86,96,:6,;6,<6,=6,>6,?6,@6,A6,B6,C6,D6,E6,F6,G6,H6,I6,J6,K6,L6,M6,N6,O6,P6,Q6,R6,S6,T6,U6,V6,W6,X6,Y6,Z6,[6,\6,]6,^6,_6,`6,a6,b6,c6,d6,e6,f6,g6,h6,i6,j6,k6,l6,m6,n6,o6,p6,q6,r6,s6,t6,u6,v6,w6,x6,y6,z6,{6,|6,}6,~6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6-6-6-6-6-6-6-6-6-6- 6- - - - - --------------------- -!-"-#-$-%-&-%-'-(-(-)-*-+-,---.-/-0-1-2-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-[-\-]-^-_-`-a-b-c-d-K-e-f-g-h-i-j-k-l-m-n-o-p-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~-~------------------------------------------------------------------------------------------------------------------------------------............. . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.6.7.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.Mr.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.l.m.n.n.o.p.q.q.r.s.t.u.v.w.x.y.z.z.{.|.}.~.....................................................................................................................................////////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:&/;/</=/>/?/@/A/B/C/D/D/E/F/G/H/I/J/K/L/M/N/O/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~///////////////////////////////////////////////////H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/H/HHH/H/H/H/H/H/H0H0H0H0H0H0H0H0H0H0 H0 H0 H0 H0 H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0 H0!H0"H0#H0$H0%H0&H0'H0(H0)H0*H0+H0,H0-H0.H0/H00H01H02H03H04H05H06H07H08H09H0:H0;H0<H0=H0>H0?H0@H0AH0BH0CH0DH0EH0FH0GH0HH0IH0JH0KH0LH0MH0NH0OH0PH0QH0RH0SH0TH0UH0VH0WH0XH0YH0ZH0[H0\H0]H0^H0_H0`H0aH0bH0cH0dH0eH0fH0gH0hH0iH0jH0kH0lH0mH0nH0oH0pH0qH0rH0sH0tH0uH0vH0wH0xH0yH0zH0{H0|H0}H0~H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H0H000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1K1L1M1N1O1P1Q1R1S1T1U1U 1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1e1f1g1h1i @1j1k 51l1m1n1o1p1q1r1s1t1u1v1w1x1y1y1z1{1|1}1~111j111111111111111111111111111111111111h1111111111111111111111111111111111111111111111111111111111t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t2t2t2t2t2t2t2t2t2t2 t2 t2 t2 t2 t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2t2 t2!t2"t2#t2$t2%2&2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2]2W2`2a2b2c2d2e2f2g2h2h2i2j !"2k2l2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222333333333+13 3 3 3 3 33;33333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3dv3ev3fv3gv3hv3iv3jv3kv3lv3mv3nv3ov3pv3qv3rv3sv3tv3uv3vv3wv3xv3yv3zvqv3{v3|v3}v3~v3v3v3v3v3v3v3v3v3v3v3v3vv3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3vMv3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3vFv3v3v3v3v3v3v v3v3v3v3vrvrv3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3vrv3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v3v4v4v4v4v4v4v4v4v4v4v4v4 v4 v4 v4 v4 v4v&vv4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4 v4!v4"v4#v4$v4%v3v4&v4'v4(v4)v4*v4+v4,v4-v4.v4/v40v41v42v43v44v45v46v47v48v49v4:v4;v4<v4=v4>v4?v v4@v4Av4Bv4Cv4Dv4Ev4Fv4Gv4Hv4Iv4Jv4Kv4Lv4Mv4Nv4Ov4Pv4Qv4Rv.$v4Sv4Tv4Uv4Vv4Wv4Xv4Yv4Zv4[v4\v4]v4^v4_v4`v4av4bv4cv4dv4ev4fv4gv4hv4iv4jv4kv4lv4mv4nv4ov4pv4qv4rv4sv4tv4uv4vv4wv4xv4yv4zv4{v4|v4}v4~v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4v4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444445555555555 5 5 5 5 5555555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/505152535455565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5WE5X5Y5Z5[5\5]5^5_5`5a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~555@5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556666666666 6 6 6 6 6 6666666666666666666 6!6"6#6$6%6&6'6(6)6*6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}6~666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666625666666666666666666666666666666666666677777777777 7 7 7 7 7777777777777777777 7!7"7#7#7$7%7&7'7(7)7*7+7,7-7.7.7/70717273747576777778797:7;7<7=7>7?7@7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z7[7\7]7^7_7`7a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7s7t7u7v7w7x7y7z7{7|7}7}7~7777777777777777777777TT77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777778888888888 8 8 8 8 8888888888888888888 8!8"8#8$8%8&8'8(8)8*8+8,8-8.8/808182838485868788898:8;8<8=:8>:8?:8@:8A:8B:8B:8C:8D:8E:8F:8G:8H:8I:8J:8K:8L:8M:8N:8O:8P:8Q:8R:8S:8T:8U:8V:8W:8X:8Y:8Z:8[:8\:8]:8^:8_:8`:8a:8b:8c:8d:8e:8f:8g:8h:8i:8j:8k:8l:8m:8n:8o:8p:8q:8r:8s:8t:8u:8v:8w:8x:8y:8z:8{:8|:8}:8~:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:8:9:9:9:/:9:9:9:9:9:9:9:9 :9 :9 :9 :9 :9 :9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9 :9!:9 :9":9#:9$:9%:9&:9':9(:9):9*:9+:9,:9-:9.:9/:90:91:92:93:94:95:96:97:98: :99:9::9;:9<:9=:9>:9?:9@:9A:9B:9C:9D:9E:9F:9G:9H:9I:9J:6:6:9K:9L:9M:9N:9O:9P:9Q:9R:5:9S:9T:9U:9V:9W:9X:9Y:9Z:9[:9\:9]:9^:9_:9`:9a:9b:9c:9d:9e:9f:9g:9h:9i:9j:9k:9l:9m:9n:9o:9p:9q:9r:9s:9t:9u:9v:9w:9x:9y:9z:9{:9|:9}:9~:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:::::::::::::::::::: :: :: :: :: :::::::::::::::::::::::::::::::::::::: ::!::"::#::$::%::&::'::(::)::*::+::,::-::.::/::0::1::2::3::4::5::6::7::8::9:::::;::<::=::>::?::@::A::B::C::D::E::F::G::H::I::J::K::L::M::N::O::P::Q::R::S::T::U::V::W::X::Y::Z::[::\::]::^::_::`::a::b::c::d::e::f::g::h::i::j::k::l::m::n::o::p::q::r::s::t:u:v:w:x:y:y:z:{:|:}:}:~::::::::\]:::::::::::::::::::::::::::::::::::::::::::::::::5:5:5:5:58B5:5:5:5:5:5 5:5 5:5:5:5:5:5:5 5:5:5:5:5:5:5:5:5:5:5:5:5:5:5:5:5:5:5:5:5:5:5:5:g(g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g:g;g;g;g;g;g;g;g;g;g; g; g; gg; g; g;g;g;g;g;g;g;g;g;g;g;g;g;g;g;g;g;g;g; g;!g;"g;#g;$g;%g;&g;'gg;(ggg;)gg;*ggg;+g;,g;-g;.g;/g;0g;1g;2g;3g;4g;5g;6g;7g;8g;9;:;;;<;=;>;?;@;@;A;B;C;C;D;E;F;G;H;I;J;K;L;M;N;O;O;P;Q;R;S;T;S;U;V;W;X;X;Y;Y;Z;[;\;];^;_;`;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o$;p$;q$;r$;s$;t$;u$;v$;w$;x$;y$;z$;{$;|$;};~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$,$2$/;;;;;;<<$"<<<<<<<< < < < < <<<<<<$X$\$F<$P<<<<<<<<<<<< =A=A=A=A=A=C=C=C=/=/=M=M=M=P=P=Q=U=U== =!="?=#?=$_=%_=&3='3=(3=)3=*3=+3=,3=-3=.3=/3=03=13=23=33=43=53=63=73=83=93=:3=;3=<3==3=>3=?3=@3=A3=B3=C3=D3=E3=F3=G3=H.=I8=J=KO=LO=MO=NO=O@=P@=Q@=R@=S@=T@=U@=V@=W@=X@=Y@=Z@=[@=\@=]@=^@=_@=`@=a@=b@=c@=d@=e@=f@=g@=h@=i@=j@=k@=l@=m@=n@=o@=p@=q@=r@=s@=t@=u@=v=w=x=ym=zm={m=|m=}m=~m=n=n=n=n=y=y=y=y=;=;=;=;=;=;=;/;=;=;=;=;=;=;=;=;=;=;=;=;=;=;=;=;=;=r=r=r=r=r=r=r=D=D=D=D=D=D=D=F=F=F=F=F=F=F======E=E=E=E=E=E=E=E=E======w=w========= = ======N=o=o=o=o=o=o=o=.========================H=H=H=H=====>>>>>>>t>>> > > > > >>>>>>>>>:>:>:>:>:>:>g>>>> >!>">#>$>%>&>'>(>)>*>+>,>->.>.>/>0>1>2>3>4>5>6>7>8>9>:>;><>=>>>?>@>A>B>C>D>E>F>G>H>I>J>K 6>L>M>N>O>P>Q>R>S>T>U>V|>W|>X>Y+ghc-lib-parser-8.8.2-Gap2OYnzCBOEqXTuKXFo6a GhcPreludePanic MonadUtils FingerprintUtil PackageConfigIOEnvDigraphMaybesGHC.Exts.Heap.ClosureTypesGHC.Exts.Heap.ConstantsGHC.Exts.Heap.InfoTable.TypesGHC.Exts.Heap.InfoTableGHC.Exts.Heap.InfoTableProfGHC.Exts.Heap.ClosuresGHC.Exts.Heap.Utils GHC.Exts.HeapGHC.ForeignSrcLang.TypeGHC.ForeignSrcLangGHC.LanguageExtensions.TypeGHC.LanguageExtensions GHC.Lexeme GHC.PackageDbGHC.SerializedGHCi.BreakArrayGHCi.FFIGHCi.RemoteTypes FiniteMap FastMutInt FastFunctions ExceptionEnumSetEncodingConfig ConstantsHooksLanguage.Haskell.TH.Lib.MapLanguage.Haskell.TH.SyntaxLanguage.Haskell.TH.PprLibLanguage.Haskell.TH.Ppr Language.Haskell.TH.Lib.InternalLanguage.Haskell.TH.LibGHCi.TH.Binary GHCi.MessageNameOccName Outputable PlainPanicCtypePlatformDynFlagsPlatformConstantsPluginsPrimOpSizedSeqSysTools.BaseDirSysTools.Terminal TcRnTypesTyCon PprColour FastString StringBufferModulePackagesLexemeBufWritePrettyTyCoRepCoercionTypeKindTcTypePairOrdList ListSetOpsJsonSrcLocIdInfoErrUtils BasicTypesUnique UniqSupplyUniqFMUniqSetUniqDFMUniqDSet FastStringEnvBinary PrelNames ForeignCallCostCentreStateBooleanFormula DriverPhasesBag CmdLineParserNameSetNameEnv KnownUniquesHsDoc FieldLabelBinFingerprint Annotations CoreMonad FileCleanupCmmTypeAvailRdrName ApiAnnotationLexerVar TysWiredIn PlaceHolderPatSyn IfaceType HsExtensionHsPatHsImpExpHsExprDataConConLike CostCentreCoAxiomClassMkIdVarSetVarEnvToIfaceFVTysPrimLiteralTrieMapHsLitUnifyRepTypeDemandCoreSynId NameCacheInteractiveEvalTypesHsTypes ByteCodeTypes CoreStatsPprCoreIfaceSynCoreSeqCoreMap FamInstEnvCoreFVsInstEnv OptCoercion TcEvidenceHsBindsHsDeclsHsUtils HsInstancesHsSynRdrHsSynPmExprHscTypes PipelineMonadGhcMonad HaddockUtilsBkpSynParser HeaderInfo CoreUtilsMkCore CoreSubst CoreArity OccurAnalCoreTidyCoreOptRules CoreUnfold PrelRules&Language.Haskell.TH.LanguageExtensions pprPatSynType thisModuledynLanguage.Haskell.THprepareForeignCall GhcExceptionSDocunsafeGlobalDynFlagsGHC initGhcMonad Data.Listunconsheadtailnullhs AnnKeywordIdAnnOpenAnnClose AnnHeaderAnnVal cc_flavourcleanCurrentModuleTempFilesDriverPipeline runPipelineDynamicLoadinginitializePluginsrunGhcputIfaceTopBndrgetIfaceTopBndrAnnDecl parseDynFlagsData.MapStrictAnnType AnnBackquoteAnnTildeMx Data.Kind ParsedModule AnnPattern AnnDotdotAnnComma AnnModule AnnImportAnnSafe AnnQualifiedAnnPackageNameAnnAs AnnHidingAnnSemifunTyConRdrNames mkCoreApps mkCoreConApps mkIntExpr mkWordExpr mkCharExpr mkStringExpr mkFloatExpr mkDoubleExpr mkCoreLams mkCoreLets AnnDcolon AnnForallAnnDot AnnDarrow AnnRarrowAnnBangAnnUnit AnnDefaultAnnInfix AnnInstanceAnnVbarAnnEqual AnnLarrowAnnWhereTcBinds tcMonoBindsAnnFunIdAnnAtAnnRole AnnForeign AnnExport AnnDerivingAnnStock AnnAnyClassApi AnnNewtypeAnnData AnnNewTypeAnnCLose AnnFamilyAnnOpenP AnnClosePAnnClassaddModFinalizerAnnThenAnnByAnnGroupAnnUsingAnnLetAnnRec Annlarrowtail Annrarrowtail AnnLarrowtail AnnRarrowtailAnnOpenB AnnCloseBAnnLamAnnCaseAnnOfAnnIfAnnElseAnnInAnnDoAnnMinusAnnOpenE AnnOpenEQ AnnCloseQAnnProc AnnStaticAnnColontopSortModuleGraph flattenSCC imp_dep_modsInteractiveEval setContextloadHscMain HscNoRecomptcg_type_env_varTcGblEnv mkCoreLetbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwise Debug.Tracetracemap$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negatefail>>=>>fmapreturnControl.Monad.Fixmfix fromIntegral realToFrac toInteger toRationalmemptymappendmconcat<*>pure*>BoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowMonadFix Applicative Data.FoldableFoldableData.Traversable Traversable SemigroupMonoid GHC.TypesBoolCharDoubleFloatInt integer-gmpGHC.Integer.TypeInteger GHC.MaybeMaybeOrderingRationalIOWord Data.EitherEitherFalseNothingJustTrueLeftRightLTEQGTGHC.Fingerprint.TypeGHC.ExtssortWith Data.Data mkNoRepTypeControl.Monad.IO.ClassliftIOMonadIO Control.Monad mapAndUnzipM Data.Version versionTags versionBranchVersionsequencemapM sequenceAtraverseGHC.Fingerprint getFileHashfingerprintData fingerprint0readIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharControl.Exception.Basetry GHC.Conc.SyncthrowToGHC.IO.ExceptionioError GHC.IORefIORefGHC.IOFilePath userErrorIOErrorGHC.Exception.TypedisplayException fromException toExceptionnotElemallanyorand concatMapconcat sequence_mapM_productsumminimummaximumelemlengthfoldl1foldr1foldl'foldlfoldrfoldMap Data.OldListunwordswordsunlineslines Text.ReadreadreadseitherfingerprintFingerprintsfingerprintStringlex readParenreadList readsPrecText.ParserCombinators.ReadPReadSatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadix Data.Functor<$>lcmgcd^^^oddevendivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumtoEnumpredsucc showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlfoldl1'initlast Data.Maybemaybeuncurrycurrysubtractsignumabs*+asTypeOfuntil$!flip.constid=<<<$<*liftA2StringGHC.Err undefinederrorWithoutStackTraceerrorGHC.Stack.Types HasCallStack/=<=compare&&||not<>maxmincontainers-0.6.0.1 Data.Graph flattenSCCs CyclicSCC AcyclicSCCSCCtransformers-0.5.5.0Control.Monad.Trans.Maybe runMaybeTMaybeT ClosureTypeINVALID_OBJECTCONSTR CONSTR_1_0 CONSTR_0_1 CONSTR_2_0 CONSTR_1_1 CONSTR_0_2 CONSTR_NOCAFFUNFUN_1_0FUN_0_1FUN_2_0FUN_1_1FUN_0_2 FUN_STATICTHUNK THUNK_1_0 THUNK_0_1 THUNK_2_0 THUNK_1_1 THUNK_0_2 THUNK_STATICTHUNK_SELECTORBCOAPPAPAP_STACKIND IND_STATICRET_BCO RET_SMALLRET_BIGRET_FUN UPDATE_FRAME CATCH_FRAMEUNDERFLOW_FRAME STOP_FRAMEBLOCKING_QUEUE BLACKHOLE MVAR_CLEAN MVAR_DIRTYTVAR ARR_WORDSMUT_ARR_PTRS_CLEANMUT_ARR_PTRS_DIRTYMUT_ARR_PTRS_FROZEN_DIRTYMUT_ARR_PTRS_FROZEN_CLEAN MUT_VAR_CLEAN MUT_VAR_DIRTYWEAKPRIMMUT_PRIMTSOSTACK TREC_CHUNKATOMICALLY_FRAMECATCH_RETRY_FRAMECATCH_STM_FRAME WHITEHOLESMALL_MUT_ARR_PTRS_CLEANSMALL_MUT_ARR_PTRS_DIRTYSMALL_MUT_ARR_PTRS_FROZEN_DIRTYSMALL_MUT_ARR_PTRS_FROZEN_CLEANCOMPACT_NFDATAN_CLOSURE_TYPESclosureTypeHeaderSize$fEnumClosureType$fEqClosureType$fOrdClosureType$fShowClosureType$fGenericClosureType wORD_SIZEwORD_SIZE_IN_BITStAG_MASK StgInfoTableentryptrsnptrstipesrtlencode EntryFunPtrHalfWord ItblCodes$fShowStgInfoTable$fGenericStgInfoTablepeekItblpokeItblitblSizePrimTypePIntPWordPInt64PWord64PAddrPFloatPDouble GenClosure ConstrClosure FunClosure ThunkClosureSelectorClosure PAPClosure APClosureAPStackClosure IndClosure BCOClosureBlackholeClosureArrWordsClosure MutArrClosure MVarClosure MutVarClosureBlockingQueueClosure IntClosure WordClosure Int64Closure Word64Closure AddrClosure FloatClosure DoubleClosure OtherClosureUnsupportedClosureinfoptrArgsdataArgspkgmodlnameselecteearityn_argsfunpayload indirecteeinstrsliteralsbcoptrssizebitmapbytesarrWordsmccPtrsmccSize mccPayload queueHead queueTailvaluevarlink blackHoleownerqueueptipeintValwordValint64Val word64ValaddrValfloatVal doubleValhvaluesrawWordsClosureBoxasBox areBoxesEqual allClosures $fShowBox $fEqPrimType$fShowPrimType$fGenericPrimType$fShowGenClosure$fGenericGenClosure$fFunctorGenClosure$fFoldableGenClosure$fTraversableGenClosure dataConNames HasHeapRepgetClosureDatagetBoxedClosureData$fHasHeapRepDoubleRepa$fHasHeapRepFloatRepa$fHasHeapRepAddrRepa$fHasHeapRepWord64Repa$fHasHeapRepInt64Repa$fHasHeapRepWordRepa$fHasHeapRepIntRepa$fHasHeapRepUnliftedRepa$fHasHeapRepLiftedRepaForeignSrcLangLangCLangCxxLangObjc LangObjcxxLangAsm RawObject$fEqForeignSrcLang$fShowForeignSrcLang$fGenericForeignSrcLang$fBinaryForeignSrcLang ExtensionCppOverlappingInstancesUndecidableInstancesIncoherentInstancesUndecidableSuperClassesMonomorphismRestriction MonoPatBindsMonoLocalBindsRelaxedPolyRecExtendedDefaultRulesForeignFunctionInterfaceUnliftedFFITypesInterruptibleFFICApiFFIGHCForeignImportPrim JavaScriptFFIParallelArraysArrowsTemplateHaskellTemplateHaskellQuotes QuasiQuotesImplicitParamsImplicitPreludeScopedTypeVariablesAllowAmbiguousTypes UnboxedTuples UnboxedSums BangPatterns TypeFamiliesTypeFamilyDependencies TypeInTypeOverloadedStringsOverloadedLists NumDecimalsDisambiguateRecordFieldsRecordWildCards RecordPuns ViewPatternsGADTs GADTSyntaxNPlusKPatternsDoAndIfThenElseBlockArgumentsRebindableSyntaxConstraintKinds PolyKinds DataKinds InstanceSigs ApplicativeDoStandaloneDerivingDeriveDataTypeableAutoDeriveTypeable DeriveFunctorDeriveTraversableDeriveFoldable DeriveGenericDefaultSignaturesDeriveAnyClass DeriveLiftDerivingStrategies DerivingViaTypeSynonymInstancesFlexibleContextsFlexibleInstancesConstrainedClassMethodsMultiParamTypeClassesNullaryTypeClassesFunctionalDependencies UnicodeSyntaxExistentialQuantification MagicHashEmptyDataDeclsKindSignaturesRoleAnnotationsParallelListCompTransformListCompMonadComprehensionsGeneralizedNewtypeDeriving RecursiveDoPostfixOperators TupleSections PatternGuardsLiberalTypeSynonyms RankNTypesImpredicativeTypes TypeOperatorsExplicitNamespacesPackageImportsExplicitForAllAlternativeLayoutRule!AlternativeLayoutRuleTransitionalDatatypeContextsNondecreasingIndentation RelaxedLayoutTraditionalRecordSyntax LambdaCase MultiWayIfBinaryLiteralsNegativeLiteralsHexFloatLiteralsDuplicateRecordFieldsOverloadedLabels EmptyCasePatternSynonymsPartialTypeSignaturesNamedWildCardsStaticPointersTypeApplications StrictDataMonadFailDesugaringEmptyDataDerivingNumericUnderscoresQuantifiedConstraints StarIsType $fEqExtension$fEnumExtension$fShowExtension$fGenericExtension$fBoundedExtension$fBinaryExtension okSymChar startsVarSym startsConSym startsVarId startsConIdstartsVarSymASCII isVarSymChar DbOpenModeDbOpenReadOnlyDbOpenReadWriteDbMode DbReadOnly DbReadWrite PackageDbLockBinaryStringRep fromStringRep toStringRepDbUnitIdDbInstalledUnitIdDbModule DbModuleVardbModuleUnitId dbModuleNamedbModuleVarNameDbUnitIdModuleRep fromDbModule toDbModule fromDbUnitId toDbUnitIdInstalledPackageInfounitId componentIdinstantiatedWithsourcePackageId packageNamepackageVersion sourceLibNameabiHashdepends abiDepends importDirs hsLibrariesextraLibrariesextraGHCiLibraries libraryDirslibraryDynDirs frameworks frameworkDirs ldOptions ccOptionsincludes includeDirshaddockInterfaces haddockHTMLsexposedModules hiddenModules indefiniteexposedtrustedemptyInstalledPackageInfo lockPackageDbunlockPackageDbisDbOpenReadModereadPackageDbForGhcreadPackageDbForGhcPkgwritePackageDb$fBinaryDbUnitId$fBinaryDbModule$fBinaryInstalledPackageInfo$fEqInstalledPackageInfo$fShowInstalledPackageInfo $fEqDbModule$fShowDbModule $fEqDbUnitId$fShowDbUnitId$fTraversableDbOpenMode$fFoldableDbOpenMode$fFunctorDbOpenMode Serialized toSerializedfromSerializedserializeWithDatadeserializeWithData BreakArrayBAshowBreakArray setBreakOn setBreakOffgetBreak newBreakArray C_ffi_cifFFIConvFFICCall FFIStdCallFFITypeFFIVoid FFIPointerFFIFloat FFIDoubleFFISInt8 FFISInt16 FFISInt32 FFISInt64FFIUInt8 FFIUInt16 FFIUInt32 FFIUInt64prepForeignCallfreeForeignCallInfo $fShowFFIType$fGenericFFIType$fBinaryFFIType $fShowFFIConv$fGenericFFIConv$fBinaryFFIConv ForeignHValue ForeignRef HValueRef RemoteRefHValue RemotePtr toRemotePtr fromRemotePtr castRemotePtr toHValueRef mkRemoteReflocalRef freeRemoteRef mkForeignRefwithForeignRefunsafeForeignRefToRemoteReffinalizeForeignRef $fShowHValue$fNFDataForeignRef$fShowRemoteRef$fBinaryRemoteRef$fNFDataRemotePtr$fBinaryRemotePtr$fShowRemotePtr insertListinsertListWith deleteList foldRightfoldRightWithKeyreadHexFingerprintfingerprintByteString FastMutPtr newFastMutIntreadFastMutIntwriteFastMutInt newFastMutPtrreadFastMutPtrwriteFastMutPtrinlinePerformIOExceptionMonadgcatchgmaskgbracketgfinallycatchIOhandleIOtryIOgtryghandle gonException$fExceptionMonadIOmemberinsertdeletetoListfromListemptyutf8DecodeChar#utf8DecodeChar utf8PrevChar utf8CharStartutf8DecodeByteStringutf8DecodeStringLazycountUTF8Charsutf8EncodeCharutf8EncodeStringutf8EncodedLength zEncodeString zDecodeStringtoBase62PaddedtoBase62IntegerLibrary IntegerGMP IntegerSimplecBuildPlatformStringcHostPlatformStringcTargetPlatformString cProjectNamecProjectGitCommitIdcProjectVersioncProjectVersionIntcProjectPatchLevelcProjectPatchLevel1cProjectPatchLevel2cBooterVersioncStagecIntegerLibrarycIntegerLibraryTypecSupportsSplitObjscGhcWithInterpretercGhcWithNativeCodeGen cGhcWithSMP cGhcRTSWayscGhcEnableTablesNextToCodecLeadingUnderscorecGHC_UNLIT_PGMcGHC_SPLIT_PGMcLibFFI cGhcThreaded cGhcDebuggedcGhcRtsWithLibdw$fEqIntegerLibrary hiVersionmAX_TUPLE_SIZEmAX_CTUPLE_SIZE mAX_SUM_SIZEmAX_REDUCTION_DEPTHmAX_SOLVER_ITERATIONS wORD64_SIZE fLOAT_SIZEtARGET_MAX_CHAR emptyHooksMap AnnLookupAnnLookupModule AnnLookupNameRoleNominalRRepresentationalRPhantomRInferRTyLitNumTyLitStrTyLitInjectivityAnnFamilyResultSigNoSigKindSigTyVarSig TyVarBndrPlainTVKindedTVForallTAppTAppKindTSigTVarTConT PromotedTInfixTUInfixTParensTTupleT UnboxedTupleT UnboxedSumTArrowT EqualityTListTPromotedTupleT PromotedNilT PromotedConsTStarT ConstraintTLitT WildCardTImplicitParamT PatSynArgs PrefixPatSyn InfixPatSyn RecordPatSyn PatSynDirUnidir ImplBidir ExplBidir VarStrictType StrictType VarBangTypeBangTypeBangConNormalCRecCInfixCForallCGadtCRecGadtCDecidedStrictness DecidedLazy DecidedStrict DecidedUnpackSourceStrictnessNoSourceStrictness SourceLazy SourceStrictSourceUnpackednessNoSourceUnpackednessSourceNoUnpack SourceUnpackPredCxt AnnTargetModuleAnnotationTypeAnnotationValueAnnotationRuleBndrRuleVar TypedRuleVarPhases AllPhases FromPhase BeforePhase RuleMatchFunLikeInlineNoInline InlinablePragmaInlineP SpecialisePSpecialiseInstPRulePAnnPLineP CompletePSafetyUnsafeSafe InterruptibleCallconvCCallStdCallCApiPrim JavaScriptForeignImportFExportFFunDepTySynEqnTypeFamilyHead PatSynType DerivStrategy StockStrategyAnyclassStrategyNewtypeStrategy ViaStrategy DerivClauseOverlap Overlappable OverlappingOverlaps IncoherentDecFunDValDDataDNewtypeDTySynDClassD InstanceDSigDForeignDInfixDPragmaD DataFamilyD DataInstD NewtypeInstD TySynInstDOpenTypeFamilyDClosedTypeFamilyD RoleAnnotDStandaloneDerivD DefaultSigDPatSynD PatSynSigDImplicitParamBindDRangeFromR FromThenRFromToR FromThenToRStmtBindSLetSNoBindSParSRecSGuardNormalGPatGBodyGuardedBNormalBFieldExpExpVarEConELitEAppEAppTypeEInfixEUInfixEParensELamELamCaseETupE UnboxedTupE UnboxedSumECondEMultiIfELetECaseEDoEMDoECompE ArithSeqEListESigERecConERecUpdEStaticE UnboundVarELabelEImplicitParamVarEClauseMatchFieldPatPatLitPVarPTupP UnboxedTupP UnboxedSumPConPInfixPUInfixPParensPTildePBangPAsPWildPRecPListPSigPViewPLitCharLStringLIntegerL RationalLIntPrimL WordPrimL FloatPrimL DoublePrimL StringPrimL CharPrimLFixityDirectionInfixLInfixRInfixNFixity InstanceDecUnliftedAritySumAritySumAlt ParentName ModuleInfoInfoClassIClassOpITyConIFamilyI PrimTyConIDataConIPatSynIVarITyVarICharPosLoc loc_filename loc_package loc_module loc_startloc_endNameIsAloneAppliedInfixUniq NameSpaceVarNameDataName TcClsName NameFlavourNameSNameQNameUNameLNameGPkgNameModNameLiftliftTExpunTypeQunQQuasiqNewNameqReportqRecover qLookupNameqReify qReifyFixityqReifyInstances qReifyRolesqReifyAnnotations qReifyModuleqReifyConStrictness qLocationqRunIOqAddDependentFile qAddTempFile qAddTopDeclsqAddForeignFilePathqAddModFinalizerqAddCorePluginqGetQqPutQ qIsExtEnabled qExtsEnabledbadIOcounterrunQunTypeQunsafeTExpCoercenewNamereport reportError reportWarningrecover lookupNamelookupTypeNamelookupValueNamereify reifyFixityreifyInstances reifyRolesreifyAnnotations reifyModulereifyConStrictness isInstancelocationrunIOaddDependentFile addTempFile addTopDeclsaddForeignFileaddForeignSourceaddForeignFilePath addCorePlugingetQputQ isExtEnabled extsEnabledreturnQbindQ sequenceQ liftStringtrueName falseName nothingNamejustNameleftName rightName nonemptyNamedataToQa dataToExpQliftData dataToPatQ mkModName modString mkPkgName pkgString mkOccName occStringnameBase nameModule namePackage nameSpacemkNamemkNameUmkNameLmkNameGmkNameS mkNameG_v mkNameG_tc mkNameG_dshowName showName' tupleDataName tupleTypeName mk_tup_nameunboxedTupleDataNameunboxedTupleTypeNamemk_unboxed_tup_nameunboxedSumDataNameunboxedSumTypeName maxPrecedence defaultFixitycmpEqthenCmp $fShowName $fOrdName$fQuasiQ $fMonadIOQ$fApplicativeQ $fFunctorQ $fMonadFailQ$fMonadQ $fQuasiIO$fLift(,,,,,,) $fLift(,,,,,) $fLift(,,,,) $fLift(,,,) $fLift(,,) $fLift(,)$fLift() $fLiftVoid$fLiftNonEmpty$fLift[] $fLiftEither $fLiftMaybe $fLiftBool $fLiftChar $fLiftDouble $fLiftFloat $fLiftRatio $fLiftNatural $fLiftWord64 $fLiftWord32 $fLiftWord16 $fLiftWord8 $fLiftWord $fLiftInt64 $fLiftInt32 $fLiftInt16 $fLiftInt8 $fLiftInt $fLiftInteger $fShowModName $fEqModName $fOrdModName $fDataModName$fGenericModName $fShowPkgName $fEqPkgName $fOrdPkgName $fDataPkgName$fGenericPkgName $fShowModule $fEqModule $fOrdModule $fDataModule$fGenericModule $fShowOccName $fEqOccName $fOrdOccName $fDataOccName$fGenericOccName $fEqNameSpace$fOrdNameSpace$fShowNameSpace$fDataNameSpace$fGenericNameSpace$fDataNameFlavour$fEqNameFlavour$fOrdNameFlavour$fShowNameFlavour$fGenericNameFlavour $fDataName$fEqName $fGenericName $fShowLoc$fEqLoc$fOrdLoc $fDataLoc $fGenericLoc$fShowModuleInfo$fEqModuleInfo$fOrdModuleInfo$fDataModuleInfo$fGenericModuleInfo$fEqFixityDirection$fOrdFixityDirection$fShowFixityDirection$fDataFixityDirection$fGenericFixityDirection $fEqFixity $fOrdFixity $fShowFixity $fDataFixity$fGenericFixity $fShowLit$fEqLit$fOrdLit $fDataLit $fGenericLit $fShowOverlap $fEqOverlap $fOrdOverlap $fDataOverlap$fGenericOverlap $fShowFunDep $fEqFunDep $fOrdFunDep $fDataFunDep$fGenericFunDep$fShowCallconv $fEqCallconv $fOrdCallconv$fDataCallconv$fGenericCallconv $fShowSafety $fEqSafety $fOrdSafety $fDataSafety$fGenericSafety $fShowInline $fEqInline $fOrdInline $fDataInline$fGenericInline$fShowRuleMatch $fEqRuleMatch$fOrdRuleMatch$fDataRuleMatch$fGenericRuleMatch $fShowPhases $fEqPhases $fOrdPhases $fDataPhases$fGenericPhases$fShowAnnTarget $fEqAnnTarget$fOrdAnnTarget$fDataAnnTarget$fGenericAnnTarget$fShowSourceUnpackedness$fEqSourceUnpackedness$fOrdSourceUnpackedness$fDataSourceUnpackedness$fGenericSourceUnpackedness$fShowSourceStrictness$fEqSourceStrictness$fOrdSourceStrictness$fDataSourceStrictness$fGenericSourceStrictness$fShowDecidedStrictness$fEqDecidedStrictness$fOrdDecidedStrictness$fDataDecidedStrictness$fGenericDecidedStrictness $fShowBang$fEqBang $fOrdBang $fDataBang $fGenericBang$fShowPatSynArgs$fEqPatSynArgs$fOrdPatSynArgs$fDataPatSynArgs$fGenericPatSynArgs$fShowInjectivityAnn$fEqInjectivityAnn$fOrdInjectivityAnn$fDataInjectivityAnn$fGenericInjectivityAnn $fShowTyLit $fEqTyLit $fOrdTyLit $fDataTyLit$fGenericTyLit $fShowRole$fEqRole $fOrdRole $fDataRole $fGenericRole$fShowAnnLookup $fEqAnnLookup$fOrdAnnLookup$fDataAnnLookup$fGenericAnnLookup $fShowType$fEqType $fOrdType $fDataType $fGenericType$fShowTyVarBndr $fEqTyVarBndr$fOrdTyVarBndr$fDataTyVarBndr$fGenericTyVarBndr$fShowFamilyResultSig$fEqFamilyResultSig$fOrdFamilyResultSig$fDataFamilyResultSig$fGenericFamilyResultSig$fShowTypeFamilyHead$fEqTypeFamilyHead$fOrdTypeFamilyHead$fDataTypeFamilyHead$fGenericTypeFamilyHead $fShowCon$fEqCon$fOrdCon $fDataCon $fGenericCon$fShowRuleBndr $fEqRuleBndr $fOrdRuleBndr$fDataRuleBndr$fGenericRuleBndr $fShowForeign $fEqForeign $fOrdForeign $fDataForeign$fGenericForeign$fShowTySynEqn $fEqTySynEqn $fOrdTySynEqn$fDataTySynEqn$fGenericTySynEqn$fShowDerivStrategy$fEqDerivStrategy$fOrdDerivStrategy$fDataDerivStrategy$fGenericDerivStrategy$fShowDerivClause$fEqDerivClause$fOrdDerivClause$fDataDerivClause$fGenericDerivClause $fShowDec$fEqDec$fOrdDec $fDataDec $fGenericDec$fShowPatSynDir $fEqPatSynDir$fOrdPatSynDir$fDataPatSynDir$fGenericPatSynDir $fShowClause $fEqClause $fOrdClause $fDataClause$fGenericClause $fShowBody$fEqBody $fOrdBody $fDataBody $fGenericBody $fShowGuard $fEqGuard $fOrdGuard $fDataGuard$fGenericGuard $fShowStmt$fEqStmt $fOrdStmt $fDataStmt $fGenericStmt $fShowExp$fEqExp$fOrdExp $fDataExp $fGenericExp $fShowRange $fEqRange $fOrdRange $fDataRange$fGenericRange $fShowMatch $fEqMatch $fOrdMatch $fDataMatch$fGenericMatch $fShowPat$fEqPat$fOrdPat $fDataPat $fGenericPat $fShowPragma $fEqPragma $fOrdPragma $fDataPragma$fGenericPragma $fShowInfo$fEqInfo $fOrdInfo $fDataInfo $fGenericInfoDocPprMpprNamepprName' to_HPJ_DocisEmptysemicommacolondcolonspaceequalsarrowlparenrparenlbrackrbracklbracerbracetextptextcharintintegerfloatdoublerationalparensbracketsbracesquotes doubleQuotes<>hcat<+>hsep$$$+$vcatcatsepfcatfsepnesthang punctuate $fMonadPprM$fApplicativePprM $fFunctorPprM $fShowPprMTypeArgTANormalTyArgPprpprppr_list Precedence nestDepthappPrecopPrecunopPrecsigPrecnoPrecparensIfpprintppr_sig pprFixity pprPatSynSig pprPrefixOccisSymOcc pprInfixExppprExp pprFields pprMaybeExp pprMatchPat pprGuardedpprBodypprLit bytesToString pprStringpprPatppr_decppr_deriv_strategy ppr_overlapppr_data ppr_newtypeppr_deriv_clause ppr_tySyn ppr_tf_head ppr_bndrscommaSepApplied pprForall pprRecFields pprGadtRHSpprVarBangType pprBangTypepprVarStrictType pprStrictType pprParendType pprUInfixTpprParendTypeArgpprTyApp pprFunArgTypesplitpprTyLitpprCxt ppr_cxt_preds where_clause showtextl hashParens quoteParenscommaSep commaSepWithsemiSepunboxedSumBarsbar$fPprLoc $fPprRange $fPprRole$fPprTyVarBndr $fPprTyLit $fPprType$fPprDecidedStrictness$fPprSourceStrictness$fPprSourceUnpackedness $fPprBang$fPprPatSynArgs$fPprPatSynDir$fPprCon $fPprClause $fPprRuleBndr $fPprPhases$fPprRuleMatch $fPprInline $fPprPragma $fPprForeign$fPprInjectivityAnn$fPprFamilyResultSig $fPprFunDep$fPprDec$fPprPat$fPprLit $fPprMatch $fPprStmt$fPprExp$fPprModuleInfo $fPprModule $fPprInfo $fPprName$fPpr[] $fPprTypeArgDerivStrategyQFamilyResultSigQ PatSynArgsQ PatSynDirQ TySynEqnQ RuleBndrQ FieldExpQVarStrictTypeQ StrictTypeQ VarBangTypeQ BangTypeQBangQSourceUnpackednessQSourceStrictnessQRangeQStmtQGuardQBodyQClauseQMatchQ DerivClauseQPredQCxtQTyLitQ TyVarBndrQKindQTypeQConQDecsQDecQTExpQExpQ FieldPatQPatQInfoQintPrimL wordPrimL floatPrimL doublePrimLintegerLcharL charPrimLstringL stringPrimL rationalLlitPvarPtupP unboxedTupP unboxedSumPconPinfixPuInfixPparensPtildePbangPasPwildPrecPlistPsigPviewPfieldPatbindSletSnoBindSparSrecSfromR fromThenRfromToR fromThenToRnormalBguardedBnormalGnormalGEpatGpatGEmatchclausevarEconElitEappEappTypeEparensEuInfixEinfixEinfixAppsectionLsectionRlamElam1ElamCaseEtupE unboxedTupE unboxedSumEcondEmultiIfEletEcaseEdoEmdoEcompE arithSeqElistEsigErecConErecUpdEstringEfieldExpstaticE unboundVarElabelEimplicitParamVarEfromE fromThenEfromToE fromThenToEvalDfunDtySynDdataDnewtypeDclassD instanceDinstanceWithOverlapDsigDforImpDinfixLDinfixRDinfixNDpragInlD pragSpecD pragSpecInlD pragSpecInstD pragRuleDpragAnnD pragLineD pragCompleteD dataInstD newtypeInstD tySynInstD dataFamilyDopenTypeFamilyDclosedTypeFamilyD roleAnnotDstandaloneDerivDstandaloneDerivWithStrategyD defaultSigDpatSynD patSynSigDimplicitParamBindDtySynEqncxt derivClause stockStrategyanyclassStrategynewtypeStrategy viaStrategynormalCrecCinfixCforallCgadtCrecGadtCforallTvarTconTinfixTuInfixTparensTappTappKindTarrowTlistTlitTtupleT unboxedTupleT unboxedSumTsigT equalityT wildCardTimplicitParamTclassPequalP promotedTpromotedTupleT promotedNilT promotedConsTnoSourceUnpackednesssourceNoUnpack sourceUnpacknoSourceStrictness sourceLazy sourceStrictisStrict notStrictunpackedbangbangType varBangType strictType varStrictTypenumTyLitstrTyLitplainTVkindedTVvarKconKtupleKarrowKlistKappKstarK constraintKnoSigkindSigtyVarSiginjectivityAnnnominalRrepresentationalRphantomRinferRcCallstdCallcApiprim javaScriptunsafesafe interruptiblefunDepruleVar typedRuleVarvalueAnnotationtypeAnnotationmoduleAnnotationunidir implBidir explBidir prefixPatSyn recordPatSyn infixPatSynappsE$fBinarySerialized$fBinaryPatSynArgs$fBinaryPatSynDir$fBinaryTypeFamilyHead$fBinaryFamilyResultSig$fBinaryInjectivityAnn$fBinaryClause$fBinaryModuleInfo$fBinaryAnnLookup $fBinaryCon$fBinaryOccName$fBinaryFixityDirection$fBinaryDecidedStrictness$fBinarySourceStrictness$fBinarySourceUnpackedness $fBinaryBang$fBinaryForeign$fBinaryCallconv$fBinarySafety$fBinaryPragma$fBinaryInline$fBinaryRuleMatch$fBinaryPhases$fBinaryRuleBndr$fBinaryAnnTarget$fBinaryFunDep$fBinaryTySynEqn$fBinaryFixity $fBinaryMatch $fBinaryBody $fBinaryGuard$fBinaryDerivStrategy$fBinaryDerivClause$fBinaryOverlap $fBinaryDec $fBinaryExp $fBinaryPat $fBinaryStmt $fBinaryRange $fBinaryLit $fBinaryRole$fBinaryTyVarBndr $fBinaryTyLit $fBinaryType $fBinaryInfo$fBinaryModule$fBinaryNameSpace$fBinaryPkgName$fBinaryNameFlavour$fBinaryModName $fBinaryName $fBinaryLocPipepipeRead pipeWrite pipeLeftoversMsgQStateqsMap qsLocationqsPipe THResultTypeTHExpTHPatTHTypeTHDec THAnnWrapperTHResult THException THCompleteSerializableExceptionEUserInterrupt EExitCodeEOtherException EvalResult EvalException EvalSuccess EvalStatus_ EvalComplete EvalBreak EvalStatusEvalExprEvalThisEvalApp ResumeContextresumeBreakMVarresumeStatusMVarresumeThreadIdEvalOptsuseSandboxThread singleStepbreakOnException breakOnErrorTHMsg THMessageNewNameReport LookupNameReify ReifyFixityReifyInstances ReifyRolesReifyAnnotations ReifyModuleReifyConStrictnessAddDependentFile AddTempFileAddModFinalizer AddCorePlugin AddTopDeclsAddForeignFilePath IsExtEnabled ExtsEnabled StartRecover EndRecover FailIfErrs RunTHDoneQResultQDone QExceptionQFailMessageShutdown InitLinker LookupSymbol LookupClosureLoadDLL LoadArchiveLoadObj UnloadObjAddLibrarySearchPathRemoveLibrarySearchPath ResolveObjsFindSystemLibrary CreateBCOsFreeHValueRefs AddSptEntry MallocData MallocStringsPrepFFIFreeFFIMkConInfoTableEvalStmt ResumeStmt AbandonStmt EvalStringEvalStringToStringEvalIO MkCostCentresCostCentreStackInfo NewBreakArrayEnableBreakpointBreakpointStatusGetBreakpointVarStartTHRunTHRunModFinalizers GetClosureSeq getTHMessage putTHMessagetoSerializableExceptionfromSerializableException getMessage putMessage remoteCall remoteTHCall writePipereadPipe$fBinaryGenClosure$fBinaryPrimType$fBinaryClosureType$fBinaryStgInfoTable$fBinaryFunPtr $fBinaryPtr$fBinaryExitCode$fBinaryQResult$fBinaryEvalOpts$fBinaryEvalExpr$fBinarySerializableException$fBinaryEvalResult$fBinaryEvalStatus_$fBinaryTHResult$fBinaryTHResultType $fShowQState$fGenericQResult $fShowQResult$fGenericEvalOpts$fShowEvalOpts$fGenericEvalExpr$fShowEvalExpr$fGenericSerializableException$fShowSerializableException$fGenericEvalResult$fShowEvalResult$fGenericEvalStatus_$fShowEvalStatus_$fGenericTHResult$fShowTHResult$fEnumTHResultType$fShowTHResultType$fGenericTHResultType$fShowTHMessage $fShowMessageliftIO1liftIO2liftIO3liftIO4 zipWith3M zipWith3M_ zipWith4MzipWithAndUnzipM mapAndUnzip3M mapAndUnzip4M mapAndUnzip5M mapAccumLMmapSndM concatMapM mapMaybeM fmapMaybeM fmapEitherManyMallMorMfoldlMfoldlM_foldrM maybeMapMwhenMunlessM filterOutM warnPprTraceshowSDocUnsafePlainGhcException PlainSignalPlainUsageErrorPlainCmdLineError PlainSorryPlainInstallationErrorPlainProgramErrorprogNameshowPlainGhcExceptionpanicsorrypgmError cmdLineErrorcmdLineErrorIO assertPanic$fShowPlainGhcException$fExceptionPlainGhcExceptionSignal UsageError CmdLineErrorPprPanicSorryPprSorryInstallationError ProgramErrorPprProgramError showExceptionsafeShowExceptionshowGhcExceptionthrowGhcExceptionthrowGhcExceptionIOhandleGhcExceptionpanicDocsorryDoc pgmErrorDoctryMostwithSignalHandlers$fShowGhcException$fExceptionGhcExceptionis_ident is_symbolis_anyis_spaceis_loweris_upperis_digit is_alphanumhexDigit octDecDigit is_decdigit is_hexdigit is_octdigit is_bindigit PPC_64ABIELF_V1ELF_V2ArmABISOFTSOFTFPHARD ArmISAExtVFPv2VFPv3VFPv3D16NEONIWMMX2ArmISAARMv5ARMv6ARMv7OS OSUnknownOSLinuxOSDarwin OSSolaris2 OSMinGW32 OSFreeBSD OSDragonFly OSOpenBSDOSNetBSD OSKFreeBSDOSHaikuOSQNXNTOOSAIXOSHurdArch ArchUnknownArchX86 ArchX86_64ArchPPC ArchPPC_64 ArchSPARC ArchSPARC64ArchARM ArchARM64 ArchAlpha ArchMipseb ArchMipselArchJavaScript ppc_64ABIarmISA armISAExtarmABI platformArch platformOSplatformWordSizeplatformUnregisterisedplatformHasGnuNonexecStackplatformHasIdentDirective platformHasSubsectionsViaSymbolsplatformIsCrossCompilingisARM target32Bit osElfTarget osMachOTargetplatformUsesFrameworksosSubsectionsViaSymbols$fReadOS$fShowOS$fEqOS $fReadArmISA $fShowArmISA $fEqArmISA$fReadArmISAExt$fShowArmISAExt $fEqArmISAExt $fReadArmABI $fShowArmABI $fEqArmABI$fReadPPC_64ABI$fShowPPC_64ABI $fEqPPC_64ABI $fReadArch $fShowArch$fEqArch$fReadPlatform$fShowPlatform $fEqPlatform GeneralFlagDumpFlaghasNoDebugOutput hasPprDebugshouldUseHexWordLiteralsshouldUseColor useStarIsTypeuseUnicodeSyntax useUnicodepprCols pprUserLengthtargetPlatformpc_platformConstantspc_CONTROL_GROUP_CONST_291pc_STD_HDR_SIZEpc_PROF_HDR_SIZE pc_BLOCK_SIZEpc_BLOCKS_PER_MBLOCKpc_TICKY_BIN_COUNTpc_OFFSET_StgRegTable_rR1pc_OFFSET_StgRegTable_rR2pc_OFFSET_StgRegTable_rR3pc_OFFSET_StgRegTable_rR4pc_OFFSET_StgRegTable_rR5pc_OFFSET_StgRegTable_rR6pc_OFFSET_StgRegTable_rR7pc_OFFSET_StgRegTable_rR8pc_OFFSET_StgRegTable_rR9pc_OFFSET_StgRegTable_rR10pc_OFFSET_StgRegTable_rF1pc_OFFSET_StgRegTable_rF2pc_OFFSET_StgRegTable_rF3pc_OFFSET_StgRegTable_rF4pc_OFFSET_StgRegTable_rF5pc_OFFSET_StgRegTable_rF6pc_OFFSET_StgRegTable_rD1pc_OFFSET_StgRegTable_rD2pc_OFFSET_StgRegTable_rD3pc_OFFSET_StgRegTable_rD4pc_OFFSET_StgRegTable_rD5pc_OFFSET_StgRegTable_rD6pc_OFFSET_StgRegTable_rXMM1pc_OFFSET_StgRegTable_rXMM2pc_OFFSET_StgRegTable_rXMM3pc_OFFSET_StgRegTable_rXMM4pc_OFFSET_StgRegTable_rXMM5pc_OFFSET_StgRegTable_rXMM6pc_OFFSET_StgRegTable_rYMM1pc_OFFSET_StgRegTable_rYMM2pc_OFFSET_StgRegTable_rYMM3pc_OFFSET_StgRegTable_rYMM4pc_OFFSET_StgRegTable_rYMM5pc_OFFSET_StgRegTable_rYMM6pc_OFFSET_StgRegTable_rZMM1pc_OFFSET_StgRegTable_rZMM2pc_OFFSET_StgRegTable_rZMM3pc_OFFSET_StgRegTable_rZMM4pc_OFFSET_StgRegTable_rZMM5pc_OFFSET_StgRegTable_rZMM6pc_OFFSET_StgRegTable_rL1pc_OFFSET_StgRegTable_rSppc_OFFSET_StgRegTable_rSpLimpc_OFFSET_StgRegTable_rHppc_OFFSET_StgRegTable_rHpLimpc_OFFSET_StgRegTable_rCCCS!pc_OFFSET_StgRegTable_rCurrentTSO%pc_OFFSET_StgRegTable_rCurrentNurserypc_OFFSET_StgRegTable_rHpAllocpc_OFFSET_stgEagerBlackholeInfopc_OFFSET_stgGCEnter1pc_OFFSET_stgGCFunpc_OFFSET_Capability_rpc_OFFSET_bdescr_startpc_OFFSET_bdescr_freepc_OFFSET_bdescr_blockspc_OFFSET_bdescr_flagspc_SIZEOF_CostCentreStack#pc_OFFSET_CostCentreStack_mem_alloc pc_REP_CostCentreStack_mem_alloc#pc_OFFSET_CostCentreStack_scc_count pc_REP_CostCentreStack_scc_countpc_OFFSET_StgHeader_ccspc_OFFSET_StgHeader_ldvwpc_SIZEOF_StgSMPThunkHeaderpc_OFFSET_StgEntCounter_allocspc_REP_StgEntCounter_allocspc_OFFSET_StgEntCounter_allocdpc_REP_StgEntCounter_allocd#pc_OFFSET_StgEntCounter_registeredppc_OFFSET_StgEntCounter_link#pc_OFFSET_StgEntCounter_entry_countpc_SIZEOF_StgUpdateFrame_NoHdrpc_SIZEOF_StgMutArrPtrs_NoHdrpc_OFFSET_StgMutArrPtrs_ptrspc_OFFSET_StgMutArrPtrs_size"pc_SIZEOF_StgSmallMutArrPtrs_NoHdr!pc_OFFSET_StgSmallMutArrPtrs_ptrspc_SIZEOF_StgArrBytes_NoHdrpc_OFFSET_StgArrBytes_bytespc_OFFSET_StgTSO_alloc_limitpc_OFFSET_StgTSO_cccspc_OFFSET_StgTSO_stackobjpc_OFFSET_StgStack_sppc_OFFSET_StgStack_stack pc_OFFSET_StgUpdateFrame_updatee"pc_OFFSET_StgFunInfoExtraFwd_aritypc_REP_StgFunInfoExtraFwd_aritypc_SIZEOF_StgFunInfoExtraRev"pc_OFFSET_StgFunInfoExtraRev_aritypc_REP_StgFunInfoExtraRev_aritypc_MAX_SPEC_SELECTEE_SIZEpc_MAX_SPEC_AP_SIZEpc_MIN_PAYLOAD_SIZEpc_MIN_INTLIKEpc_MAX_INTLIKEpc_MIN_CHARLIKEpc_MAX_CHARLIKEpc_MUT_ARR_PTRS_CARD_BITSpc_MAX_Vanilla_REGpc_MAX_Float_REGpc_MAX_Double_REGpc_MAX_Long_REGpc_MAX_XMM_REGpc_MAX_Real_Vanilla_REGpc_MAX_Real_Float_REGpc_MAX_Real_Double_REGpc_MAX_Real_XMM_REGpc_MAX_Real_Long_REGpc_RESERVED_C_STACK_BYTESpc_RESERVED_STACK_WORDSpc_AP_STACK_SPLIM pc_WORD_SIZEpc_DOUBLE_SIZE pc_CINT_SIZE pc_CLONG_SIZEpc_CLONG_LONG_SIZEpc_BITMAP_BITS_SHIFT pc_TAG_BITSpc_WORDS_BIGENDIANpc_DYNAMIC_BY_DEFAULT pc_LDV_SHIFTpc_ILDV_CREATE_MASKpc_ILDV_STATE_CREATEpc_ILDV_STATE_USE$fReadPlatformConstants StaticPlugin LoadedPluginPluginemptySSaddToSS addListToSSssEltssizeSS$fNFDataSizedSeq$fBinarySizedSeq$fTraversableSizedSeq$fFoldableSizedSeq$fFunctorSizedSeq$fGenericSizedSeq$fShowSizedSeq expandTopDir expandToolDir findTopDir findToolDirstderrSupportsAnsiColorsTcLclEnv isFunTyConisUnboxedTupleTyCon isTupleTyConOverridingBoolAutoAlwaysNeverHasDebugCallStack DirectionForwards BackwardsSuffix ghciSupported debugIsOn ncgDebugIsOnghciTablesNextToCode isWindowsHost isDarwinHostnTimesfstOf3sndOf3thdOf3fst3snd3third3uncurry3liftFstliftSndfirstMfirst3MsecondM filterOut partitionWith chkAppendzipEqual zipWithEqual zipWith3Equal zipWith4EqualzipLazy zipWithLazy zipWith3Lazy filterByList filterByListspartitionByListstretchZipWithmapFstmapSnd mapAndUnzip mapAndUnzip3zipWithAndUnzip zipAndUnzip mapAccumL2nOfThematLength lengthExceeds lengthAtLeastlengthIs lengthIsNot lengthAtMostlengthLessThan listLengthCmp equalLength compareLengthleLengthltLength singleton isSingletonnotNullonlyisInisn'tIn chunkList changeLastminWithnubSortordNubtransitiveClosurefoldl2all2count countWhiletakeListdropList splitAtListdropTaildropWhileEndLEspanEndlast2snocView capitaliseisEqualeqListBy eqMaybeBycmpList removeSpaces<&&><||> fuzzyMatch fuzzyLookup unzipWithseqListglobal consIORefglobalM sharedGlobal sharedGlobalMlooksLikeModuleNamelooksLikePackageNamegetCmd toCmdArgstoArgs exactLog2 readRationalreadHexRational maybeReadmaybeReadFuzzydoesDirNameExistgetModificationUTCTimemodificationTimeIfExistssplitLongestPrefix escapeSpacesreslashmakeRelativeToabstractConstrabstractDataTypecharToC hashString overrideWith$fShowOverridingBoolSchemesHeadersMessagesWarningsErrorsFatalsMargin renderColourrenderColourAfresh colCustomcolResetcolBold colBlackFgcolRedFg colGreenFg colYellowFg colBlueFg colMagentaFg colCyanFg colWhiteFg defaultScheme parseScheme$fMonoidPprColour$fSemigroupPprColourMaybeErr SucceededFailed firstJust firstJusts expectJust whenIsJustorElse rightToMaybe liftMaybeT tryMaybeT isSuccessfailME$fMonadMaybeErr$fApplicativeMaybeErr$fFunctorMaybeErr PtrStringuniqn_charsfs_bsfs_ref FastZStringfastStringToByteStringfastZStringToByteStringunsafeMkByteStringhPutFZSzString lengthFZS mkFastString#mkFastStringBytesmkFastStringForeignPtrmkFastStringByteString mkFastStringmkFastStringByteListlengthFS hasZEncodingnullFSunpackFSbytesFS zEncodeFSappendFSconcatFSheadFStailFSconsFS uniqueOfFSnilFSisUnderscoreFSgetFastStringTablehPutFS mkPtrString# mkPtrStringunpackPtrStringlengthPSsLitfsLit$fDataFastString$fShowFastString$fMonoidFastString$fSemigroupFastString$fIsStringFastString$fOrdFastString$fEqFastString$fNFDataFastZStringbuflencurhGetStringBufferhGetStringBufferBlockhPutStringBufferappendStringBuffersstringToStringBuffernextChar currentCharprevCharstepOn offsetBytesbyteDiffatEndatLinelexemeToStringlexemeToFastStringdecodePrevNCharsparseUnsignedInteger$fShowStringBuffer ComponentIdInstalledUnitIdUnitId ModuleName unitIdString moduleUnitId moduleNamePackageConfigMap PackageStategetPackageConfigMap improveUnitIddisplayInstalledUnitIdcomponentIdStringemptyPackageStateisLexConisLexVarisLexIdisLexSym isLexConId isLexVarId isLexConSym isLexVarSymokVarOccokConOccokTcOcc okVarIdOcc okVarSymOcc okConIdOcc okConSymOcc BufHandle newBufHandlebPutCharbPutStrbPutFSbPutFZS bPutPtrString bPutReplicatebFlushModePageMode ZigZagModeLeftMode OneLineModeStylemode lineLengthribbonsPerLine TextDetailsChrStrPStrZStrLStrRStrftextztext sizedText zeroWidthTexthexquote maybeParens hangNotEmptystyle renderStyle txtPrinter fullRenderprintDoc printDoc_ bufLeftRender $fShowDocOutputableBndrpprBndr pprInfixOccbndrIsJoin_maybe BindingSite LambdaBindCaseBind CasePatBindLetBindpprPrecrunSDoc QualifyName NameUnqualNameQualNameNotInScope1NameNotInScope2QueryQualifyPackageQueryQualifyModuleQueryQualifyNamePrintUnqualified QueryQualifyqueryQualifyNamequeryQualifyModulequeryQualifyPackageDepth AllTheWayPartWay CodeStyleCStyleAsmStylePprStylereallyAlwaysQualifyNamesalwaysQualifyNamesneverQualifyNamesalwaysQualifyModulesneverQualifyModulesalwaysQualifyPackagesneverQualifyPackagesreallyAlwaysQualify alwaysQualify neverQualifydefaultUserStyledefaultDumpStyle mkDumpStyledefaultErrStyle mkErrStylecmdlineParserStyle mkUserStylesetStyleColouredinitSDocContext withPprStylewithPprStyleDoc pprDeeper pprDeeperList pprSetDepth getPprStylesdocWithDynFlagssdocWithPlatformupdSDocDynFlagsqualName qualModule qualPackage queryQual codeStyleasmStyle dumpStyle debugStyle userStyle getPprDebug ifPprDebug whenPprDebug printSDoc printSDocLn printForUserprintForUserPartWay printForCbufLeftRenderSDocpprCode mkCodeStyleshowSDocshowPprshowSDocUnqualshowSDocForUser showSDocDump showSDocDebugrenderWithStyleshowSDocOneLineshowSDocDumpOneLine docToSDocword doublePrec angleBracketscparen blankLinelarrowdarrowarrowtlarrowtarrowttlarrowtt underscoredotvbar forAllLitkindTypebullet unicodeSyntaxppWhenppUnlesscolouredkeyword pprHsChar pprHsString pprHsBytesprimCharSuffixprimFloatSuffix primIntSuffixprimDoubleSuffixprimWordSuffixprimInt64SuffixprimWord64Suffix pprPrimChar pprPrimInt pprPrimWord pprPrimInt64 pprPrimWord64 pprPrefixVar pprInfixVarpprFastFilePath pprWithCommas pprWithBars interppSP interpp'SP pprQuotedListquotedListWithOrquotedListWithNor intWithCommasspeakNthspeakNspeakNOfpluralisOrAredoOrDoes callStackDocpprPanicpprSorry pprPgmError pprTraceDebugpprTrace pprTraceM pprTraceItpprTraceException pprSTraceassertPprPanicpprDebugAndThen$fIsStringSDoc$fOutputableExtension$fOutputableSerialized$fOutputableSCC$fOutputableFingerprint$fOutputableIntMap$fOutputableMap$fOutputableFastString$fOutputable(,,,,,,)$fOutputable(,,,,,)$fOutputable(,,,,)$fOutputable(,,,)$fOutputable(,,)$fOutputableEither$fOutputableMaybe$fOutputable(,)$fOutputableSet$fOutputable[]$fOutputable()$fOutputableWord$fOutputableWord32$fOutputableWord16$fOutputableInteger$fOutputableInt$fOutputableInt64$fOutputableInt32$fOutputableOrdering$fOutputableBool$fOutputableChar$fOutputablePprStyle$fOutputableQualifyName MCoercionN CoercionN ThetaTypePredType MCoercion TyCoBinderTCvSubstUnivCoProvenanceTyThingisRuntimeRepTypprTypepprKindTcTyVarDetails MetaDetailsvanillaSkolemTvpprTcTyVarDetailspFstpSndunPairtoPairswappLiftFstpLiftSnd$fOutputablePair $fMonoidPair$fSemigroupPair$fTraversablePair$fFoldablePair$fApplicativePair $fFunctorPairnilOLunitOLsnocOLconsOLconcatOLlastOLisNilOLappOLfromOLmapOLfoldrOLfoldlOLtoOL reverseOL$fTraversableOrdList$fFoldableOrdList$fFunctorOrdList$fMonoidOrdList$fSemigroupOrdList$fOutputableOrdListAssocgetNth deleteBys unionLists minusListassocDefaultUsingassoc assocDefault assocUsing assocMaybe hasNoDups equivClasses removeDups findDupsEqToJsonjsonJsonDocJSNullJSBoolJSIntJSStringJSArrayJSObject renderJSONescapeJsonString HasSrcSpancomposeSrcSpandecomposeSrcSpan SrcSpanLess RealLocatedLocated GenLocatedLSrcSpan RealSrcSpan UnhelpfulSpan srcSpanFile RealSrcLoc UnhelpfulLocLLmkSrcLoc mkRealSrcLocnoSrcLocgeneratedSrcLocinteractiveSrcLocmkGeneralSrcLoc srcLocFile srcLocLine srcLocCol advanceSrcLoc sortLocated noSrcSpanwiredInSrcSpaninteractiveSrcSpanmkGeneralSrcSpan srcLocSpanrealSrcLocSpan mkRealSrcSpan mkSrcSpancombineSrcSpanssrcSpanFirstCharacter isGoodSrcSpan isOneLineSpan containsSpansrcSpanStartLinesrcSpanEndLinesrcSpanStartCol srcSpanEndCol srcSpanStart srcSpanEndrealSrcSpanStartrealSrcSpanEndsrcSpanFileName_maybepprUserRealSpanunLocgetLocnoLocmkGeneralLocated combineLocsaddCLoc eqLocated cmpLocated rightmostleftmost_smallestleftmost_largestspans isSubspanOfdLcL onHasSrcSpanliftLgetRealSrcSpan unRealSrcSpan$fShowRealSrcLoc$fOutputableRealSrcLoc$fOutputableSrcLoc$fOutputableRealSrcSpan$fShowRealSrcSpan$fOrdRealSrcSpan$fToJsonRealSrcSpan$fDataRealSrcSpan$fOutputableSrcSpan$fNFDataSrcSpan$fToJsonSrcSpan $fDataSrcSpan$fOutputableGenLocated$fHasSrcSpanGenLocated$fEqRealSrcLoc$fOrdRealSrcLoc $fEqSrcLoc $fOrdSrcLoc $fShowSrcLoc$fEqRealSrcSpan $fEqSrcSpan $fOrdSrcSpan $fShowSrcSpan$fEqGenLocated$fOrdGenLocated$fDataGenLocated$fFunctorGenLocated$fFoldableGenLocated$fTraversableGenLocated IdDetails pprIdDetailsisCoVarDetails coVarDetails vanillaIdInfoMsgDocSeverity SevOutputSevFatalSevInteractiveSevDumpSevInfo SevWarningSevErrordumpSDocgetCaretDiagnosticmkLocMessageAnn mkLocMessageSpliceExplicitFlagExplicitSpliceImplicitSplice IntWithInf FractionalLitFLfl_textfl_negfl_value IntegralLitILil_textil_negil_value InlineSpec NoUserInline InlinePragmainl_src inl_inlineinl_satinl_actinl_rule RuleMatchInfo Activation NeverActive AlwaysActive ActiveBefore ActiveAfter CompilerPhasePhase InitialPhasePhaseNum SourceText NoSourceText SuccessFlag DefMethSpec VanillaDM GenericDM TailCallInfoAlwaysTailCalledNoTailCallInfo OneBranch InsideLamInterestingCxtOccInfoManyOccsIAmDeadOneOccIAmALoopBreakerocc_tail occ_in_lam occ_one_br occ_int_cxtocc_rules_onlyEPfromEPtoEP TupleSort BoxedTuple UnboxedTupleConstraintTuplePprPrec OverlapMode NoOverlap OverlapFlag overlapMode isSafeOverlapOrigin FromSource GeneratedRecFlag Recursive NonRecursiveBoxityBoxedUnboxed TopLevelFlagTopLevel NotTopLevel LexicalFixityPrefixRuleName WarningTxt DeprecatedTxt StringLiteralsl_stsl_fsFunctionOrData IsFunctionIsData PromotionFlag NotPromoted IsPromotedSwapFlag NotSwapped IsSwapped OneShotInfo NoOneShotInfo OneShotLam AlignmentConTagZConTag JoinArityRepArity LeftOrRightCLeftCRightpickLR fIRST_TAG noOneShotInfo isOneShotInfohasNoOneShotInfo worstOneShot bestOneShotflipSwap isSwappedunSwap isPromoted bumpVersioninitialVersionpprWarningTxtForMsg pprRuleName minPrecedence negateFixity funTyFixity compareFixity isNotTopLevel isTopLevelisBoxedisRecisNonRec boolToRecFlag isGeneratedsetOverlapModeMaybehasIncoherentFlaghasOverlappableFlaghasOverlappingFlagtopPrecfunPrec maybeParentupleSortBoxityboxityTupleSort tupleParens sumParenspprAlternative noOccInfo isManyOccs seqOccInfo insideLam notInsideLam oneBranch notOneBranch tailCallInfozapOccTailCallInfoisAlwaysTailCalledstrongLoopBreakerweakLoopBreakerisWeakLoopBreakerisStrongLoopBreaker isDeadOccisOneOcc zapFragileOcc successIf succeededfailedpprWithSourceTextactiveAfterInitialactiveDuringFinal isConLike isFunLikenoUserInlineSpecdefaultInlinePragmaalwaysInlinePragmaneverInlinePragmainlinePragmaSpecdfunInlinePragmaisDefaultInlinePragmaisInlinePragmaisInlinablePragmaisAnyInlinePragmainlinePragmaSatinlinePragmaActivationinlinePragmaRuleMatchInfosetInlinePragmaActivationsetInlinePragmaRuleMatchInfo pprInlinepprInlineDebugisActive isActiveIn competesWith isNeverActiveisAlwaysActive isEarlyActive mkIntegralLitnegateIntegralLitmkFractionalLitnegateFractionalLitintegralFractionalLitinfinity intGtLimittreatZeroAsInf mkIntWithInf$fOutputableLeftOrRight$fOutputableOneShotInfo$fOutputableSwapFlag$fOutputableFunctionOrData$fOutputableFixityDirection$fOutputableLexicalFixity$fOutputableTopLevelFlag$fOutputableBoxity$fOutputableRecFlag$fOutputableOrigin$fOutputableTailCallInfo$fOutputableOccInfo$fOutputableDefMethSpec$fOutputableSuccessFlag$fOutputableSourceText$fOutputableOverlapMode$fOutputableOverlapFlag$fOutputableFixity$fOutputableStringLiteral$fEqStringLiteral$fOutputableWarningTxt$fOutputableCompilerPhase$fOutputableActivation$fOutputableRuleMatchInfo$fOutputableInlineSpec$fOutputableInlinePragma$fOutputableIntegralLit$fOrdIntegralLit$fEqIntegralLit$fOutputableFractionalLit$fOrdFractionalLit$fEqFractionalLit$fNumIntWithInf$fOutputableIntWithInf$fOrdIntWithInf$fEqLeftOrRight$fDataLeftOrRight$fEqOneShotInfo$fEqPromotionFlag$fDataPromotionFlag$fEqFunctionOrData$fOrdFunctionOrData$fDataFunctionOrData$fDataLexicalFixity$fEqLexicalFixity $fEqBoxity $fDataBoxity $fEqRecFlag $fDataRecFlag $fEqOrigin $fDataOrigin $fEqPprPrec $fOrdPprPrec $fShowPprPrec $fEqTupleSort$fDataTupleSort$fEqTailCallInfo $fEqOccInfo$fDataSourceText$fShowSourceText$fEqSourceText$fEqOverlapMode$fDataOverlapMode$fEqOverlapFlag$fDataOverlapFlag$fDataStringLiteral$fEqWarningTxt$fDataWarningTxt$fEqActivation$fDataActivation$fEqRuleMatchInfo$fDataRuleMatchInfo$fShowRuleMatchInfo$fEqInlineSpec$fDataInlineSpec$fShowInlineSpec$fEqInlinePragma$fDataInlinePragma$fDataIntegralLit$fShowIntegralLit$fDataFractionalLit$fShowFractionalLit$fEqIntWithInf$fDataSpliceExplicitFlag Uniquable getUnique uNIQUE_BITSmkUniqueGrimilygetKey deriveUnique newTagUniquemkUnique unpkUniqueisValidKnownKeyUniquehasKeyeqUniqueltUniquenonDetCmpUniquepprUniqueAlwaysmkAlphaTyVarUnique mkCoVarUniquemkPreludeClassUniquemkPreludeTyConUniquetyConRepNameUniquemkPreludeDataConUniquedataConWorkerUniquedataConTyRepNameUniquemkPrimOpIdUniquemkPrimOpWrapperUniquemkPreludeMiscIdUniqueinitTyVarUniquemkBuiltinUniquemkPseudoUniqueDmkPseudoUniqueEmkPseudoUniqueHmkRegSingleUniquemkRegSubUniquemkRegPairUniquemkRegClassUniquemkCostCentreUniquemkVarOccUniquemkDataOccUnique mkTvOccUnique mkTcOccUniqueinitExitJoinUnique $fShowUnique$fOutputableUnique $fEqUnique$fUniquableUnique$fUniquableInt$fUniquableFastString MonadUniquegetUniqueSupplyM getUniqueM getUniquesMUniqSMinitUniqSupplymkSplitUniqSupplysplitUniqSupplylistSplitUniqSupplyuniqFromSupplyuniqsFromSupplytakeUniqFromSupplysplitUniqSupply3splitUniqSupply4initUsinitUs_ lazyThenUsgetUniqueSupplyM3liftUs lazyMapUs$fMonadFixUniqSM$fMonadFailUniqSM$fApplicativeUniqSM$fFunctorUniqSM $fMonadUniqSM$fMonadUniqueUniqSMemptyUFM isNullUFMunitUFMunitDirectlyUFM listToUFMlistToUFM_Directly listToUFM_CaddToUFM addListToUFMaddListToUFM_DirectlyaddToUFM_Directly addToUFM_C addToUFM_AccalterUFMaddListToUFM_C adjustUFMadjustUFM_Directly delFromUFMdelListFromUFMdelListFromUFM_DirectlydelFromUFM_DirectlyplusUFM plusUFM_C plusUFM_CDplusMaybeUFM_C plusUFMListminusUFM intersectUFMintersectUFM_C disjointUFMfoldUFMmapUFMmapUFM_Directly filterUFMfilterUFM_Directly partitionUFMsizeUFMelemUFMelemUFM_Directly lookupUFMlookupUFM_DirectlylookupWithDefaultUFMlookupWithDefaultUFM_DirectlyeltsUFMufmToSet_DirectlyanyUFMallUFM seqEltsUFM nonDetEltsUFM nonDetKeysUFM nonDetFoldUFMnonDetFoldUFM_DirectlynonDetUFMToList ufmToIntMap equalKeysUFM pprUniqFMpprUFMpprUFMWithKeys pluralUFM$fOutputableUniqFM$fMonoidUniqFM$fSemigroupUniqFM $fDataUniqFM $fEqUniqFM$fFunctorUniqFM emptyUniqSet unitUniqSet mkUniqSetaddOneToUniqSetaddListToUniqSetdelOneFromUniqSetdelOneFromUniqSet_DirectlydelListFromUniqSetdelListFromUniqSet_Directly unionUniqSetsunionManyUniqSets minusUniqSetintersectUniqSetsrestrictUniqSetToUFMuniqSetMinusUFMelementOfUniqSetelemUniqSet_Directly filterUniqSetfilterUniqSet_DirectlypartitionUniqSet uniqSetAny uniqSetAll sizeUniqSetisEmptyUniqSet lookupUniqSetlookupUniqSet_DirectlynonDetEltsUniqSetnonDetKeysUniqSetnonDetFoldUniqSetnonDetFoldUniqSet_Directly mapUniqSet getUniqSetunsafeUFMToUniqSet pprUniqSet$fOutputableUniqSet $fEqUniqSet $fDataUniqSet$fSemigroupUniqSet$fMonoidUniqSet emptyUDFMunitUDFM addToUDFM addToUDFM_C addListToUDFM delFromUDFM plusUDFM_CplusUDFM lookupUDFMlookupUDFM_DirectlyelemUDFMfoldUDFMnonDetFoldUDFMeltsUDFM filterUDFMfilterUDFM_Directly udfmToList equalKeysUDFM isNullUDFMsizeUDFM intersectUDFMudfmIntersectUFMintersectsUDFM disjointUDFMdisjointUdfmUfm minusUDFM udfmMinusUFM partitionUDFMdelListFromUDFM udfmToUfm listToUDFM adjustUDFM alterUDFMmapUDFManyUDFMallUDFMalwaysUnsafeUfmToUdfm pprUniqDFMpprUDFM$fFunctorTaggedVal $fEqTaggedVal$fOutputableUniqDFM$fMonoidUniqDFM$fSemigroupUniqDFM$fDataTaggedVal $fDataUniqDFM$fFunctorUniqDFM emptyUniqDSet unitUniqDSet mkUniqDSetaddOneToUniqDSetaddListToUniqDSetdelOneFromUniqDSetdelListFromUniqDSetunionUniqDSetsunionManyUniqDSets minusUniqDSetuniqDSetMinusUniqSetintersectUniqDSetsuniqDSetIntersectUniqSet foldUniqDSetelementOfUniqDSetfilterUniqDSet sizeUniqDSetisEmptyUniqDSetlookupUniqDSetuniqDSetToListpartitionUniqDSet mapUniqDSet getUniqDSet pprUniqDSet$fOutputableUniqDSet $fEqUniqDSet$fDataUniqDSet$fSemigroupUniqDSet$fMonoidUniqDSetDFastStringEnv emptyFsEnv unitFsEnv extendFsEnvextendFsEnvList lookupFsEnv alterFsEnvmkFsEnv elemFsEnv plusFsEnv plusFsEnv_C extendFsEnv_CmapFsEnvextendFsEnv_AccextendFsEnvList_C delFromFsEnvdelListFromFsEnv filterFsEnvlookupFsEnv_NF emptyDFsEnv dFsEnvEltsmkDFsEnv lookupDFsEnv SymbolTable DictionaryUserData ud_get_name ud_get_fsud_put_nonbinding_nameud_put_binding_name ud_put_fsput_putgetBin BinHandle getUserData setUserData withBinBuffercastBinputAtgetAt openBinMemtellBinseekBinseekByisEOFBin writeBinMem readBinMemputBytegetBytelazyPutlazyGet newReadState newWriteState putDictionary getDictionaryputFS$fBinarySourceText$fBinarySrcSpan$fBinaryRealSrcSpan$fBinaryGenLocated$fBinaryStringLiteral$fBinaryWarningTxt$fBinaryOverlapFlag$fBinaryOverlapMode$fBinaryRecFlag$fBinaryInlineSpec$fBinaryRuleMatchInfo$fBinaryInlinePragma$fBinaryActivation$fBinaryTupleSort$fBinaryFunctionOrData$fBinaryFingerprint$fBinaryPromotionFlag$fBinaryLeftOrRight$fBinaryFastString$fBinaryByteString$fBinarySomeTypeRep$fBinaryTypeRep$fBinaryTypeLitSort$fBinaryKindRep$fBinaryRuntimeRep$fBinaryVecElem$fBinaryVecCount $fBinaryTyCon $fBinaryBin $fBinaryRatio$fBinaryInteger$fBinaryDiffTime $fBinaryDay$fBinaryUTCTime$fBinaryEither $fBinaryMaybe$fBinary(,,,,,,)$fBinary(,,,,,)$fBinary(,,,,) $fBinary(,,,) $fBinary(,,) $fBinary(,) $fBinaryArray $fBinary[] $fBinaryInt $fBinaryChar $fBinaryBool $fBinary() $fBinaryInt64 $fBinaryInt32 $fBinaryInt16 $fBinaryInt8$fBinaryWord64$fBinaryWord32$fBinaryWord16 $fBinaryWord8$fEqBin$fOrdBin $fShowBin $fBoundedBinDModuleNameEnv ModuleNameEnv ModuleSet ModuleEnv ShHoleSubstInstalledModuleEnv DefUnitId unDefUnitIdInstalledModuleinstalledModuleUnitIdinstalledModuleNameinstalledUnitIdFS IndefModuleindefModuleUnitIdindefModuleName IndefUnitId indefUnitIdFSindefUnitIdKeyindefUnitIdComponentIdindefUnitIdInstsindefUnitIdFreeHolesIndefiniteUnitIdDefiniteUnitId HasModule getModuleContainsModule extractModule ModLocation ml_hs_file ml_hi_file ml_obj_file ml_hie_file addBootSuffixaddBootSuffix_maybeaddBootSuffixLocnaddBootSuffixLocnOutstableModuleNameCmp pprModuleName moduleNameFSmoduleNameStringmoduleStableString mkModuleNamemkModuleNameFSmoduleNameSlashesmoduleNameColonsmoduleFreeHolesmoduleIsDefinite mkHoleModulestableModuleCmpmkModule pprModuleunitIdFS unitIdKeynewIndefUnitIdindefUnitIdToUnitIdindefModuleToModuletoInstalledUnitIdinstalledUnitIdStringfsToInstalledUnitIdcomponentIdToInstalledUnitIdstringToInstalledUnitIdinstalledModuleEqinstalledUnitIdEqemptyInstalledModuleEnvlookupInstalledModuleEnvextendInstalledModuleEnvfilterInstalledModuleEnvdelInstalledModuleEnvunitIdFreeHolesunitIdIsDefinite hashUnitId newUnitIdstableUnitIdCmpnewSimpleUnitId fsToUnitIdstringToUnitIdrenameHoleModulerenameHoleUnitIdrenameHoleModule'renameHoleUnitId'splitModuleInstssplitUnitIdInstsgeneralizeIndefUnitIdgeneralizeIndefModuleparseModuleName parseUnitIdparseComponentId parseModuleId parseModSubst primUnitId integerUnitId baseUnitId rtsUnitIdthUnitId thisGhcUnitIdinteractiveUnitId mainUnitIdisInteractiveModule isHoleModulewiredInUnitIdsfilterModuleEnv elemModuleEnvextendModuleEnvextendModuleEnvWithextendModuleEnvListextendModuleEnvList_CplusModuleEnv_CdelModuleEnvList delModuleEnv plusModuleEnvlookupModuleEnvlookupWithDefaultModuleEnv mapModuleEnv mkModuleEnvemptyModuleEnv moduleEnvKeys moduleEnvEltsmoduleEnvToList unitModuleEnvisEmptyModuleEnv mkModuleSetextendModuleSetextendModuleSetListemptyModuleSet moduleSetElts elemModuleSetintersectModuleSetminusModuleSet delModuleSetunionModuleSet unitModuleSet$fOutputableModLocation$fNFDataModuleName$fDataModuleName$fBinaryStringRepModuleName$fBinaryModuleName$fOutputableModuleName$fOrdModuleName$fEqModuleName$fUniquableModuleName$fBinaryComponentId$fOutputableComponentId$fUniquableComponentId$fBinaryStringRepComponentId$fOutputableInstalledUnitId$fUniquableInstalledUnitId$fOrdInstalledUnitId$fEqInstalledUnitId $fBinaryStringRepInstalledUnitId$fBinaryInstalledUnitId$fOutputableInstalledModule$fBinaryDefUnitId$fOutputableDefUnitId$fBinaryUnitId$fOutputableUnitId$fNFDataUnitId $fDataUnitId $fOrdUnitId$fUniquableUnitId $fEqUnitId $fShowUnitId$fOutputableIndefUnitId$fBinaryIndefUnitId$fOrdIndefUnitId$fEqIndefUnitIdC$fDbUnitIdModuleRepInstalledUnitIdComponentIdUnitIdModuleNameModule$fNFDataModule$fOutputableModule$fUniquableModule$fOutputableIndefModule $fOrdNDModule$fShowModLocation$fEqComponentId$fOrdComponentId$fEqInstalledModule$fOrdInstalledModule $fEqDefUnitId$fOrdDefUnitId$fEqIndefModule$fOrdIndefModule $fEqNDModuleliftedTypeKindTyConKeymAIN PackageNameSourcePackageIddefaultPackageConfigsourcePackageIdStringpackageNameStringpprPackageConfiginstalledPackageConfigIdpackageConfigIdexpandedPackageConfigIddefinitePackageConfigId$fOutputableSourcePackageId$fUniquableSourcePackageId $fBinaryStringRepSourcePackageId$fOutputablePackageName$fUniquablePackageName$fBinaryStringRepPackageName$fEqSourcePackageId$fOrdSourcePackageId$fEqPackageName$fOrdPackageNameCTypeHeader CLabelString CCallConvCApiConv StdCallConv PrimCallConvJavaScriptCallConv CCallTarget StaticTarget DynamicTarget CCallSpec CExportSpec CExportStaticPlaySafePlayInterruptible PlayRiskyisSafeForeignCallplaySafeplayInterruptibleisDynamicTargetdefaultCCallConvccallConvToIntccallConvAttributepprCLabelStringisCLabelString$fOutputableSafety$fBinaryCCallConv$fOutputableCCallConv$fBinaryCCallTarget$fBinaryCCallSpec$fOutputableCCallSpec$fBinaryForeignCall$fOutputableForeignCall$fBinaryCExportSpec$fOutputableCExportSpec$fBinaryHeader$fOutputableHeader $fBinaryCType$fOutputableCType $fEqCCallConv$fDataCCallConv$fEqCCallTarget$fDataCCallTarget $fEqCCallSpec$fEqForeignCall$fDataCExportSpec $fEqHeader $fDataHeader $fEqCType $fDataCTypeCostCentreIndexunCostCentreIndexnewCostCentreState getCCIndex$fEqCostCentreIndex$fOrdCostCentreIndex$fDataCostCentreIndex$fBinaryCostCentreIndexAndOrParensLBooleanFormulamkVarmkFalsemkTruemkAndmkOrisFalseisTrueevalsimplify isUnsatisfied impliesAtomimpliespprBooleanFormulapprBooleanFormulaNice$fBinaryBooleanFormula$fOutputableBooleanFormula$fEqBooleanFormula$fDataBooleanFormula$fFunctorBooleanFormula$fFoldableBooleanFormula$fTraversableBooleanFormulaUnlitHsPpHscCcxxCcCobjcCobjcxxHCcSplitterSplitAsAsLlvmOptLlvmLlc LlvmMangleCmmCppCmm MergeForeignStopLn HscSource HsSrcFile HsBootFileHsigFilehscSourceString isHsBootOrSig isHsigFileanyHscisStopLneqPhase happensBefore startPhase phaseInputExtisHaskellishSuffixisBackpackishSuffixisHaskellSigSuffixisHaskellSrcSuffix isCishSuffixisHaskellUserSrcSuffixisObjectSuffixisDynLibSuffixisSourceSuffixisHaskellishTargetisHaskellishFilenameisHaskellSrcFilenameisCishFilenameisHaskellUserSrcFilenameisSourceFilenameisHaskellSigFilenameisObjectFilenameisDynLibFilename$fBinaryHscSource$fOutputablePhase $fEqHscSource$fOrdHscSource$fShowHscSource $fEqPhase $fShowPhaseEdgeTypeForwardCrossBackwardSelfLoopNode DigraphNode node_payloadnode_keynode_dependenciesGraphgraphFromEdgedVerticesOrdgraphFromEdgedVerticesUniq findCyclestronglyConnCompG$stronglyConnCompFromEdgedVerticesOrd%stronglyConnCompFromEdgedVerticesUniq%stronglyConnCompFromEdgedVerticesOrdR&stronglyConnCompFromEdgedVerticesUniqRtopologicalSortG reachableG reachablesG hasVertexG verticesGedgesG transposeGemptyG classifyEdges$fOutputableEdge$fOutputableNode$fOutputableGraph$fOutputableEdgeType $fEqEdgeType $fOrdEdgeType$fEqTime $fOrdTime $fNumTime$fOutputableTimeemptyBagunitBag lengthBagelemBag unionManyBags unionBagsconsBagsnocBag isEmptyBagisSingletonBag filterBag filterBagMallBaganyBaganyBagM concatBag catBagMaybes partitionBagpartitionBagWithfoldBagfoldrBagfoldlBag foldrBagM foldlBagMmapBag concatMapBagconcatMapBagPair mapMaybeBagmapBagMmapBagM_ flatMapBagMflatMapBagPairMmapAndUnzipBagM mapAccumBagL mapAccumBagLM listToBag bagToList $fFoldableBag $fFunctorBag $fDataBag$fOutputableBagCmdLineP runCmdLineEwMWarn warnReasonwarnMsgErrerrMsg WarnReasonNoReasonReasonDeprecatedFlagReasonUnrecognisedFlagOptKindNoArgHasArgSepArg OptPrefix OptIntSuffix IntSuffix FloatSuffixPassFlag AnySuffix GhcFlagModeOnlyGhcOnlyGhciAllModes HiddenFlagFlagflagName flagOptKind flagGhcModedefFlag defGhcFlag defGhciFlag defHiddenFlagrunEwMaddErraddWarn addFlagWarn deprecategetArg getCurLocliftEwMgetCmdLineStateputCmdLineState processArgserrorsToGhcException$fToJsonWarnReason$fOutputableWarnReason $fMonadEwM$fApplicativeEwM $fFunctorEwM$fMonadCmdLineP$fApplicativeCmdLineP$fFunctorCmdLineP$fEqWarnReason$fShowWarnReason FilesToClean ftcGhcSessionftcCurrentModule CompilerInfoGCCClang AppleClang AppleClang51 UnknownCC LinkerInfoGnuLDGnuGoldLlvmLLDDarwinLD SolarisLDAixLD UnknownLD PkgConfRef GlobalPkgConf UserPkgConf PkgConfFileFlagSpec flagSpecName flagSpecFlagflagSpecActionflagSpecGhcModeOption FileOptionFlushErrFlushOut LogAction FatalMessagerWay WayCustom WayThreadedWayDebugWayProf WayEventLogWayDynRtsOptsEnabled RtsOptsNone RtsOptsIgnoreRtsOptsIgnoreAllRtsOptsSafeOnly RtsOptsAll DynLibLoader DeployableSystemDependent PackageDBFlag PackageDBNoUserPackageDBNoGlobalPackageDBClearPackageDBs PackageFlag ExposePackage HidePackage TrustFlag TrustPackageDistrustPackageIgnorePackageFlag IgnorePackage ModRenamingmodRenamingWithImplicit modRenamings PackageArg UnitIdArgGhcLinkNoLink LinkBinary LinkInMemory LinkDynLib LinkStaticLibGhcMode CompManagerOneShotMkDepend HscTargetHscCHscAsmHscLlvmHscInterpreted HscNothingSettingssTargetPlatform sGhcUsagePathsGhciUsagePathsToolDirsTopDirsTmpDir sProgramNamesProjectVersion sRawSettingssExtraGccViaCFlagssSystemPackageConfigsLdSupportsCompactUnwindsLdSupportsBuildIdsLdSupportsFilelist sLdIsGnuLdsGccSupportsNoPiesPgm_LsPgm_PsPgm_FsPgm_csPgm_ssPgm_asPgm_lsPgm_dllsPgm_T sPgm_windres sPgm_libtoolsPgm_ar sPgm_ranlibsPgm_losPgm_lcsPgm_lccsPgm_isOpt_LsOpt_PsOpt_P_fingerprintsOpt_FsOpt_csOpt_asOpt_l sOpt_windressOpt_losOpt_lcsOpt_lccsOpt_isPlatformConstants LlvmConfig LlvmPasses LlvmTargets LlvmTarget lDataLayoutlCPU lAttributesProfAuto NoProfAuto ProfAutoAll ProfAutoTopProfAutoExports ProfAutoCallsContainsDynFlagsextractDynFlags HasDynFlags getDynFlags CfgWeights CFGWeights uncondWeightcondBranchWeight switchWeight callWeightlikelyCondWeightunlikelyCondWeightinfoTablePenalty backEdgeBonusghcModeghcLink hscTargetsettingsintegerLibrary llvmTargets llvmPasses verbosityoptLevel debugLevel simplPhasesmaxSimplIterationsmaxPmCheckIterations ruleCheck inlineCheckstrictnessBefore parMakeCountenableTimeStats ghcHeapSizemaxRelevantBindsmaxValidHoleFitsmaxRefHoleFitsrefLevelHoleFitsmaxUncoveredPatternssimplTickFactorspecConstrThresholdspecConstrCountspecConstrRecursiveliberateCaseThreshold floatLamArgsliftLamsRecArgsliftLamsNonRecArgs liftLamsKnowncmmProcAlignment historySize importPaths mainModIs mainFunIsreductionDepthsolverIterationsthisInstalledUnitIdthisComponentId_thisUnitIdInsts_waysbuildTag splitInfo objectDirdylibInstallNamehiDirhieDirstubDirdumpDir objectSufhcSufhiSufhieSufcanGenerateDynamicToo dynObjectSufdynHiSuf outputFile dynOutputFileoutputHi dynLibLoader dumpPrefixdumpPrefixForceldInputs includePaths libraryPathsframeworkPathscmdlineFrameworksrtsOptsrtsOptsEnabledrtsOptsSuggestionshpcDirpluginModNamespluginModNameOptsfrontendPluginOpts cachedPlugins staticPluginshooks depMakefiledepIncludePkgDepsdepExcludeMods depSuffixespackageDBFlagsignorePackageFlags packageFlagspluginPackageFlags trustFlags packageEnv pkgDatabasepkgState filesToClean dirsToCleannextTempSuffixgeneratedDumps dumpFlags generalFlags warningFlagsfatalWarningFlagslanguage safeHaskell safeInfer safeInferredthOnLoc newDerivOnLocoverlapInstLocincoherentOnLoc pkgTrustOnLoc warnSafeOnLocwarnUnsafeOnLoctrustworthyOnLoc extensionsextensionFlagsufCreationThresholdufUseThresholdufFunAppDiscountufDictDiscountufKeenessFactorufDearOpufVeryAggressive maxWorkerArgs ghciHistSize log_actionflushOutflushErrghcVersionFilehaddockOptions ghciScriptsuseColor canUseColor colSchemeprofAutointeractivePrintnextWrapperNum sseVersion bmiVersionavxavx2avx512cdavx512eravx512favx512pfrtldInfortccInfomaxInlineAllocSizemaxInlineMemcpyInsnsmaxInlineMemsetInsns reverseErrors maxErrors initialUniqueuniqueIncrement cfgWeightInfoSafeHaskellModeSf_None Sf_UnsafeSf_TrustworthySf_Safe Sf_IgnoreLanguage Haskell98 Haskell2010 WarningFlagOpt_WarnDuplicateExportsOpt_WarnDuplicateConstraintsOpt_WarnRedundantConstraintsOpt_WarnHiShadowsOpt_WarnImplicitPreludeOpt_WarnIncompletePatternsOpt_WarnIncompleteUniPatterns Opt_WarnIncompletePatternsRecUpdOpt_WarnOverflowedLiteralsOpt_WarnEmptyEnumerationsOpt_WarnMissingFieldsOpt_WarnMissingImportListOpt_WarnMissingMethodsOpt_WarnMissingSignaturesOpt_WarnMissingLocalSignaturesOpt_WarnNameShadowingOpt_WarnOverlappingPatternsOpt_WarnTypeDefaultsOpt_WarnMonomorphismOpt_WarnUnusedTopBindsOpt_WarnUnusedLocalBindsOpt_WarnUnusedPatternBindsOpt_WarnUnusedImportsOpt_WarnUnusedMatchesOpt_WarnUnusedTypePatternsOpt_WarnUnusedForallsOpt_WarnWarningsDeprecationsOpt_WarnDeprecatedFlags!Opt_WarnMissingMonadFailInstancesOpt_WarnSemigroupOpt_WarnDodgyExportsOpt_WarnDodgyImportsOpt_WarnOrphansOpt_WarnAutoOrphansOpt_WarnIdentities Opt_WarnTabsOpt_WarnUnrecognisedPragmasOpt_WarnDodgyForeignImportsOpt_WarnUnusedDoBindOpt_WarnWrongDoBind)Opt_WarnAlternativeLayoutRuleTransitionalOpt_WarnUnsafe Opt_WarnSafeOpt_WarnTrustworthySafeOpt_WarnMissedSpecsOpt_WarnAllMissedSpecs%Opt_WarnUnsupportedCallingConventionsOpt_WarnUnsupportedLlvmVersionOpt_WarnMissedExtraSharedLibOpt_WarnInlineRuleShadowingOpt_WarnTypedHolesOpt_WarnPartialTypeSignatures!Opt_WarnMissingExportedSignatures$Opt_WarnUntickedPromotedConstructorsOpt_WarnDerivingTypeableOpt_WarnDeferredTypeErrors#Opt_WarnDeferredOutOfScopeVariables"Opt_WarnNonCanonicalMonadInstances&Opt_WarnNonCanonicalMonadFailInstances#Opt_WarnNonCanonicalMonoidInstances'Opt_WarnMissingPatternSynonymSignatures Opt_WarnUnrecognisedWarningFlags$Opt_WarnSimplifiableClassConstraintsOpt_WarnCPPUndefOpt_WarnUnbangedStrictPatternsOpt_WarnMissingHomeModulesOpt_WarnPartialFieldsOpt_WarnMissingExportListOpt_WarnInaccessibleCodeOpt_WarnStarIsTypeOpt_WarnStarBinderOpt_WarnImplicitKindVarsOpt_WarnSpaceAfterBang!Opt_WarnMissingDerivingStrategies IncludeSpecsincludePathsQuoteincludePathsGlobalReason ErrReasonOpt_DumpToFileOpt_D_faststring_statsOpt_D_dump_minimal_importsOpt_DoCoreLintingOpt_DoStgLintingOpt_DoCmmLintingOpt_DoAsmLintingOpt_DoAnnotationLintingOpt_NoLlvmMangler Opt_FastLlvmOpt_WarnIsErrorOpt_ShowWarnGroupsOpt_HideSourcePathsOpt_PrintExplicitForallsOpt_PrintExplicitKindsOpt_PrintExplicitCoercionsOpt_PrintExplicitRuntimeRepsOpt_PrintEqualityRelationsOpt_PrintUnicodeSyntaxOpt_PrintExpandedSynonymsOpt_PrintPotentialInstancesOpt_PrintTypecheckerElaboration Opt_CallArityOpt_ExitificationOpt_StrictnessOpt_LateDmdAnalOpt_KillAbsenceOpt_KillOneShotOpt_FullLaziness Opt_FloatInOpt_LateSpecialiseOpt_SpecialiseOpt_SpecialiseAggressivelyOpt_CrossModuleSpecialise Opt_StaticArgumentTransformationOpt_CSE Opt_StgCSEOpt_StgLiftLamsOpt_LiberateCaseOpt_SpecConstrOpt_SpecConstrKeenOpt_DoLambdaEtaExpansionOpt_IgnoreAssertsOpt_DoEtaReduction Opt_CaseMergeOpt_CaseFoldingOpt_UnboxStrictFieldsOpt_UnboxSmallStrictFieldsOpt_DictsCheapOpt_EnableRewriteRules Opt_RegsGraphOpt_RegsIterativeOpt_PedanticBottoms Opt_LlvmTBAAOpt_LlvmFillUndefWithGarbageOpt_IrrefutableTuples Opt_CmmSinkOpt_CmmElimCommonBlocksOpt_AsmShortcuttingOpt_OmitYieldsOpt_FunToThunkOpt_DictsStrictOpt_DmdTxDictSelOpt_LoopificationOpt_CfgBlocklayoutOpt_WeightlessBlocklayout Opt_CprAnalOpt_WorkerWrapperOpt_SolveConstantDictsOpt_AlignmentSanitisationOpt_CatchBottomsOpt_NumConstantFoldingOpt_SimplPreInliningOpt_IgnoreInterfacePragmasOpt_OmitInterfacePragmasOpt_ExposeAllUnfoldingsOpt_WriteInterface Opt_WriteHieOpt_AutoSccsOnIndividualCafsOpt_ProfCountEntriesOpt_PpOpt_ForceRecompOpt_IgnoreOptimChangesOpt_IgnoreHpcChangesOpt_ExcessPrecisionOpt_EagerBlackHoling Opt_NoHsMain Opt_SplitObjsOpt_SplitSections Opt_StgStatsOpt_HideAllPackagesOpt_HideAllPluginPackagesOpt_PrintBindResult Opt_HaddockOpt_HaddockOptionsOpt_BreakOnExceptionOpt_BreakOnErrorOpt_PrintEvldWithShowOpt_PrintBindContentsOpt_GenManifestOpt_EmbedManifestOpt_SharedImplibOpt_BuildingCabalPackageOpt_IgnoreDotGhciOpt_GhciSandboxOpt_GhciHistoryOpt_GhciLeakCheckOpt_ValidateHieOpt_LocalGhciHistoryOpt_NoItOpt_HelpfulErrorsOpt_DeferTypeErrorsOpt_DeferTypedHolesOpt_DeferOutOfScopeVariablesOpt_PICOpt_PIEOpt_PICExecutableOpt_ExternalDynamicRefsOpt_SccProfilingOn Opt_TickyOpt_Ticky_Allocd Opt_Ticky_LNEOpt_Ticky_Dyn_Thunk Opt_RPathOpt_RelativeDynlibPathsOpt_Hpc Opt_FlatCacheOpt_ExternalInterpreterOpt_OptimalApplicativeDoOpt_VersionMacrosOpt_WholeArchiveHsLibsOpt_SingleLibFolder Opt_KeepCAFsOpt_ErrorSpansOpt_DiagnosticsShowCaretOpt_PprCaseAsLetOpt_PprShowTicksOpt_ShowHoleConstraintsOpt_ShowValidHoleFitsOpt_SortValidHoleFitsOpt_SortBySizeHoleFitsOpt_SortBySubsumHoleFitsOpt_AbstractRefHoleFitsOpt_UnclutterValidHoleFitsOpt_ShowTypeAppOfHoleFitsOpt_ShowTypeAppVarsOfHoleFitsOpt_ShowDocsOfHoleFitsOpt_ShowTypeOfHoleFitsOpt_ShowProvOfHoleFitsOpt_ShowMatchesOfHoleFitsOpt_ShowLoadedModulesOpt_HexWordLiteralsOpt_SuppressCoercionsOpt_SuppressVarKindsOpt_SuppressModulePrefixesOpt_SuppressTypeApplicationsOpt_SuppressIdInfoOpt_SuppressUnfoldingsOpt_SuppressTypeSignaturesOpt_SuppressUniquesOpt_SuppressStgExtsOpt_SuppressTicksOpt_SuppressTimestampsOpt_AutoLinkPackagesOpt_ImplicitImportQualifiedOpt_KeepHscppFilesOpt_KeepHiDiffsOpt_KeepHcFilesOpt_KeepSFilesOpt_KeepTmpFilesOpt_KeepRawTokenStreamOpt_KeepLlvmFilesOpt_KeepHiFilesOpt_KeepOFilesOpt_BuildDynamicTooOpt_DistrustAllPackagesOpt_PackageTrustOpt_G_NoStateHackOpt_G_NoOptCoercionOpt_D_dump_cmmOpt_D_dump_cmm_from_stgOpt_D_dump_cmm_rawOpt_D_dump_cmm_verboseOpt_D_dump_cmm_cfgOpt_D_dump_cmm_cbeOpt_D_dump_cmm_switchOpt_D_dump_cmm_procOpt_D_dump_cmm_spOpt_D_dump_cmm_sinkOpt_D_dump_cmm_cafOpt_D_dump_cmm_procmapOpt_D_dump_cmm_splitOpt_D_dump_cmm_infoOpt_D_dump_cmm_cpsOpt_D_dump_cfg_weightsOpt_D_dump_asmOpt_D_dump_asm_nativeOpt_D_dump_asm_livenessOpt_D_dump_asm_regallocOpt_D_dump_asm_regalloc_stagesOpt_D_dump_asm_conflictsOpt_D_dump_asm_statsOpt_D_dump_asm_expandedOpt_D_dump_llvmOpt_D_dump_core_statsOpt_D_dump_deriv Opt_D_dump_dsOpt_D_dump_ds_preoptOpt_D_dump_foreignOpt_D_dump_inliningsOpt_D_dump_rule_firingsOpt_D_dump_rule_rewritesOpt_D_dump_simpl_traceOpt_D_dump_occur_analOpt_D_dump_parsedOpt_D_dump_parsed_ast Opt_D_dump_rnOpt_D_dump_rn_astOpt_D_dump_shapeOpt_D_dump_simplOpt_D_dump_simpl_iterationsOpt_D_dump_specOpt_D_dump_prepOpt_D_dump_stgOpt_D_dump_call_arityOpt_D_dump_exitifyOpt_D_dump_stranalOpt_D_dump_str_signatures Opt_D_dump_tcOpt_D_dump_tc_astOpt_D_dump_typesOpt_D_dump_rulesOpt_D_dump_cseOpt_D_dump_worker_wrapperOpt_D_dump_rn_traceOpt_D_dump_rn_statsOpt_D_dump_opt_cmmOpt_D_dump_simpl_statsOpt_D_dump_cs_traceOpt_D_dump_tc_traceOpt_D_dump_ec_traceOpt_D_dump_if_traceOpt_D_dump_vt_traceOpt_D_dump_splicesOpt_D_th_dec_fileOpt_D_dump_BCOsOpt_D_dump_tickedOpt_D_dump_rttiOpt_D_source_statsOpt_D_verbose_stg2stg Opt_D_dump_hiOpt_D_dump_hi_diffsOpt_D_dump_mod_cyclesOpt_D_dump_mod_mapOpt_D_dump_timings!Opt_D_dump_view_pattern_commoningOpt_D_verbose_core2coreOpt_D_dump_debugOpt_D_dump_jsonOpt_D_ppr_debugOpt_D_no_debug_outputoptimisationFlagsaddGlobalIncludeaddQuoteIncludeflattenIncludesbackendMaintainsCfg programNameprojectVersion ghcUsagePath ghciUsagePathtopDirtmpDir rawSettingsextraGccViaCFlagssystemPackageConfigpgm_Lpgm_Ppgm_Fpgm_cpgm_spgm_apgm_lpgm_dllpgm_T pgm_windres pgm_libtoolpgm_lccpgm_ar pgm_ranlibpgm_lopgm_lcpgm_iopt_Lopt_Popt_P_signatureopt_Fopt_copt_aopt_l opt_windresopt_lccopt_loopt_lcopt_iversionedAppDirisObjectTargettargetRetainsAllBindings isOneShotisNoLinkpackageFlagsChangeddefaultObjectTargettablesNextToCodemkTablesNextToCodepositionIndependent mkBuildTag wayRTSOnlywayGeneralFlagswayUnsetGeneralFlagswhenGeneratingDynamicTooifGeneratingDynamicToowhenCannotGenerateDynamicToodynamicTooMkDynamicDynFlags initDynFlagsdefaultDynFlags defaultWays interpWaysinterpreterProfiledinterpreterDynamicdefaultFatalMessagerdefaultLogActiondefaultLogActionHPrintDocdefaultLogActionHPutStrDocdefaultFlushOutdefaultFlushErrlanguageExtensionshasNoStateHackhasNoOptCoerciondoptdopt_set dopt_unsetgoptgopt_set gopt_unsetwoptwopt_set wopt_unset wopt_fatalwopt_set_fatalwopt_unset_fatalxoptxopt_set xopt_unsetxopt_set_unlessExplSpeclang_setdynFlagDependenciespackageTrustOn safeHaskellOnsafeHaskellModeEnabledsafeLanguageOn safeInferOn safeImportsOnsafeDirectImpsReqsafeImplicitImpsReq unsafeFlagsunsafeFlagsForInfergetOpts getVerbFlagsthisComponentIdthisUnitIdInsts thisPackageaddPluginModuleNameshowOpt updOptLevelparseDynamicFlagsCmdLineparseDynamicFilePragmaparseDynamicFlagsFull putLogMsg updateWaysallNonDeprecatedFlagsflagsAll flagsDynamic flagsPackageflagsForCompletion wWarningFlagsfFlags fLangFlagssupportedLanguagesAndExtensionsxFlags warningGroupswarningHierarchiesglasgowExtsFlags rtsIsProfiled dynamicGhcaddWay'setGeneralFlag'unSetGeneralFlag' setUnitIdcanonicalizeHomeModulecanonicalizeModuleIfHomeinterpretPackageEnv setTmpDir picCCOptspicPOpts compilerInfocONTROL_GROUP_CONST_291 sTD_HDR_SIZE pROF_HDR_SIZE bLOCK_SIZEbLOCKS_PER_MBLOCKtICKY_BIN_COUNToFFSET_StgRegTable_rR1oFFSET_StgRegTable_rR2oFFSET_StgRegTable_rR3oFFSET_StgRegTable_rR4oFFSET_StgRegTable_rR5oFFSET_StgRegTable_rR6oFFSET_StgRegTable_rR7oFFSET_StgRegTable_rR8oFFSET_StgRegTable_rR9oFFSET_StgRegTable_rR10oFFSET_StgRegTable_rF1oFFSET_StgRegTable_rF2oFFSET_StgRegTable_rF3oFFSET_StgRegTable_rF4oFFSET_StgRegTable_rF5oFFSET_StgRegTable_rF6oFFSET_StgRegTable_rD1oFFSET_StgRegTable_rD2oFFSET_StgRegTable_rD3oFFSET_StgRegTable_rD4oFFSET_StgRegTable_rD5oFFSET_StgRegTable_rD6oFFSET_StgRegTable_rXMM1oFFSET_StgRegTable_rXMM2oFFSET_StgRegTable_rXMM3oFFSET_StgRegTable_rXMM4oFFSET_StgRegTable_rXMM5oFFSET_StgRegTable_rXMM6oFFSET_StgRegTable_rYMM1oFFSET_StgRegTable_rYMM2oFFSET_StgRegTable_rYMM3oFFSET_StgRegTable_rYMM4oFFSET_StgRegTable_rYMM5oFFSET_StgRegTable_rYMM6oFFSET_StgRegTable_rZMM1oFFSET_StgRegTable_rZMM2oFFSET_StgRegTable_rZMM3oFFSET_StgRegTable_rZMM4oFFSET_StgRegTable_rZMM5oFFSET_StgRegTable_rZMM6oFFSET_StgRegTable_rL1oFFSET_StgRegTable_rSpoFFSET_StgRegTable_rSpLimoFFSET_StgRegTable_rHpoFFSET_StgRegTable_rHpLimoFFSET_StgRegTable_rCCCSoFFSET_StgRegTable_rCurrentTSO"oFFSET_StgRegTable_rCurrentNurseryoFFSET_StgRegTable_rHpAllocoFFSET_stgEagerBlackholeInfooFFSET_stgGCEnter1oFFSET_stgGCFunoFFSET_Capability_roFFSET_bdescr_startoFFSET_bdescr_freeoFFSET_bdescr_blocksoFFSET_bdescr_flagssIZEOF_CostCentreStack oFFSET_CostCentreStack_mem_alloc oFFSET_CostCentreStack_scc_countoFFSET_StgHeader_ccsoFFSET_StgHeader_ldvwsIZEOF_StgSMPThunkHeaderoFFSET_StgEntCounter_allocsoFFSET_StgEntCounter_allocd oFFSET_StgEntCounter_registeredpoFFSET_StgEntCounter_link oFFSET_StgEntCounter_entry_countsIZEOF_StgUpdateFrame_NoHdrsIZEOF_StgMutArrPtrs_NoHdroFFSET_StgMutArrPtrs_ptrsoFFSET_StgMutArrPtrs_sizesIZEOF_StgSmallMutArrPtrs_NoHdroFFSET_StgSmallMutArrPtrs_ptrssIZEOF_StgArrBytes_NoHdroFFSET_StgArrBytes_bytesoFFSET_StgTSO_alloc_limitoFFSET_StgTSO_cccsoFFSET_StgTSO_stackobjoFFSET_StgStack_spoFFSET_StgStack_stackoFFSET_StgUpdateFrame_updateeoFFSET_StgFunInfoExtraFwd_aritysIZEOF_StgFunInfoExtraRevoFFSET_StgFunInfoExtraRev_aritymAX_SPEC_SELECTEE_SIZEmAX_SPEC_AP_SIZEmIN_PAYLOAD_SIZE mIN_INTLIKE mAX_INTLIKE mIN_CHARLIKE mAX_CHARLIKEmUT_ARR_PTRS_CARD_BITSmAX_Vanilla_REG mAX_Float_REGmAX_Double_REG mAX_Long_REG mAX_XMM_REGmAX_Real_Vanilla_REGmAX_Real_Float_REGmAX_Real_Double_REGmAX_Real_XMM_REGmAX_Real_Long_REGrESERVED_C_STACK_BYTESrESERVED_STACK_WORDSaP_STACK_SPLIM dOUBLE_SIZE cINT_SIZE cLONG_SIZEcLONG_LONG_SIZEbITMAP_BITS_SHIFTtAG_BITSwORDS_BIGENDIANdYNAMIC_BY_DEFAULT lDV_SHIFTiLDV_CREATE_MASKiLDV_STATE_CREATEiLDV_STATE_USE bLOCK_SIZE_W mAX_PTR_TAGtARGET_MIN_INTtARGET_MAX_INTtARGET_MAX_WORDmakeDynFlagsConsistentsetUnsafeGlobalDynFlags isSseEnabled isSse2EnabledisSse4_2Enabled isAvxEnabled isAvx2EnabledisAvx512cdEnabledisAvx512erEnabledisAvx512fEnabledisAvx512pfEnabled isBmiEnabled isBmi2EnabledemptyFilesToClean$fOutputableLanguage$fOutputableSafeHaskellMode$fShowSafeHaskellMode$fOutputableGhcMode$fOutputablePackageArg$fOutputableModRenaming$fOutputablePackageFlag$fOutputableOnOff$fHasDynFlagsExceptT$fHasDynFlagsMaybeT$fHasDynFlagsReaderT$fHasDynFlagsWriterT $fEqDumpFlag$fShowDumpFlag$fEnumDumpFlag$fEqGeneralFlag$fShowGeneralFlag$fEnumGeneralFlag$fShowIncludeSpecs$fEqWarningFlag$fShowWarningFlag$fEnumWarningFlag $fEqLanguage$fEnumLanguage$fShowLanguage$fEqSafeHaskellMode $fEqProfAuto$fEnumProfAuto $fEqHscTarget$fShowHscTarget $fEqGhcMode $fEqGhcLink $fShowGhcLink$fEqPackageArg$fShowPackageArg$fEqModRenaming$fEqIgnorePackageFlag $fEqTrustFlag$fEqPackageFlag$fEqDynLibLoader$fShowRtsOptsEnabled$fEqWay$fOrdWay $fShowWay $fEqOnOff $fShowOnOff $fEqOption$fEqDeprecation$fOrdDeprecation$fEqPkgConfRef$fEqPackageDBFlag$fEqSseVersion$fOrdSseVersion$fEqBmiVersion$fOrdBmiVersion$fEqLinkerInfo$fEqCompilerInfo TidyOccEnvOccSetOccEnv HasOccNameoccName occNameSpace occNameFStcNameclsName tcClsNamedataName srcDataNametvNamevarNameisDataConNameSpaceisTcClsNameSpace isTvNameSpaceisVarNameSpaceisValNameSpace pprNameSpacepprNonVarNameSpacepprNameSpaceBrief pprOccName mkOccNameFSmkVarOcc mkVarOccFS mkDataOcc mkDataOccFS mkTyVarOcc mkTyVarOccFSmkTcOcc mkTcOccFSmkClsOcc mkClsOccFS demoteOccNamenameSpacesRelated emptyOccEnv unitOccEnv extendOccEnvextendOccEnvList lookupOccEnvmkOccEnv elemOccEnv foldOccEnv occEnvElts plusOccEnv plusOccEnv_CextendOccEnv_CextendOccEnv_Acc mapOccEnv mkOccEnv_C delFromOccEnvdelListFromOccEnv filterOccEnv alterOccEnv pprOccEnv emptyOccSet unitOccSetmkOccSet extendOccSetextendOccSetList unionOccSetsunionManyOccSets minusOccSet elemOccSet isEmptyOccSetintersectOccSetintersectsOccSet filterOccSet occNameStringsetOccNameSpaceisVarOccisTvOccisTcOccisValOcc isDataOcc isDataSymOcc parenSymOccstartsWithUnderscoreisDerivedOccNameisDefaultMethodOccisTypeableBindOccmkDataConWrapperOcc mkWorkerOcc mkMatcherOcc mkBuilderOccmkDefaultMethodOccmkClassOpAuxOcc mkDictOccmkIPOcc mkSpecOccmkForeignExportOcc mkRepEqOccmkClassDataConOcc mkNewTyCoOcc mkInstTyCoOcc mkEqPredCoOcc mkCon2TagOcc mkTag2ConOcc mkMaxTagOcc mkTyConRepOccmkGenRmkGen1RmkRecFldSelOccmkDataConWorkerOccmkSuperDictAuxOccmkSuperDictSelOcc mkLocalOcc mkInstTyTcOcc mkDFunOcc mkDataTOcc mkDataCOcc mkMethodOccemptyTidyOccEnvinitTidyOccEnvavoidClashesOccEnv tidyOccName$fUniquableOccName$fOutputableBndrOccName$fOutputableOccName$fNFDataOccName$fHasOccNameOccName$fOutputableOccEnv $fDataOccEnv NamedThing getOccNamegetName BuiltInSyntax UserSyntax nameUnique nameOccName nameSrcLoc nameSrcSpan isWiredInNamewiredInNameTyThing_maybeisBuiltInSyntaxisExternalNameisInternalName isHoleNamenameModule_maybenameIsLocalOrFromnameIsHomePackagenameIsHomePackageImportnameIsFromExternalPackage isTyVarName isTyConName isDataConName isValName isVarName isSystemNamemkInternalNamemkClonedInternalNamemkDerivedInternalNamemkExternalName mkWiredInName mkSystemNamemkSystemNameAtmkSystemVarName mkSysTvName mkFCallName setNameUnique setNameLoc tidyNameOcc localiseName stableNameCmppprNameUnqualifiedpprModulePrefix pprDefinedAtpprNameDefnLocnameStableString getSrcLoc getSrcSpan getOccStringgetOccFS pprInfixName pprPrefixName$fNFDataNameSort$fOutputableNameSort$fOutputableBndrName$fOutputableName$fUniquableName$fHasSrcSpanName$fHasOccNameName $fNFDataName$fNamedThingGenLocated$fNamedThingNameDefUsesDefUseUsesDefsFreeVarsisEmptyNameSet emptyNameSet unitNameSet mkNameSetextendNameSetList extendNameSet unionNameSet unionNameSets minusNameSet elemNameSetdelFromNameSet filterNameSetintersectNameSetdelListFromNameSetintersectsNameSet nameSetAny nameSetAllnameSetElemsStable isEmptyFVsemptyFVsplusFVsplusFVmkFVsaddOneFVunitFVdelFVdelFVs intersectFVsemptyDUsusesOnlymkDUsplusDUduDefsallUsesduUsesfindUsesDNameEnvdepAnal nameEnvElts emptyNameEnvisEmptyNameEnv unitNameEnv extendNameEnvextendNameEnvList lookupNameEnv alterNameEnv mkNameEnv elemNameEnv plusNameEnv plusNameEnv_CextendNameEnv_C mapNameEnvextendNameEnv_AccextendNameEnvList_CdelFromNameEnvdelListFromNameEnv filterNameEnv anyNameEnvdisjointNameEnvlookupNameEnv_NF emptyDNameEnvlookupDNameEnv mapDNameEnv alterDNameEnvmkTupleDataConUniquemkTupleTyConUniquemkCTupleDataConUniquemkCTupleTyConUniquemkSumDataConUniquemkSumTyConUniqueknownUniqueName ArgDocMap DeclDocMap LHsDocString HsDocString mkHsDocStringmkHsDocStringUtf8ByteString unpackHDShsDocStringToByteString ppr_mbDoc appendDocs concatDocsemptyDeclDocMapemptyArgDocMap$fOutputableHsDocString$fBinaryHsDocString$fOutputableDeclDocMap$fBinaryDeclDocMap$fOutputableArgDocMap$fBinaryArgDocMap$fEqHsDocString$fShowHsDocString$fDataHsDocStringFieldLblflLabelflIsOverloaded flSelector FieldLabelEnvFieldLabelStringmkFieldLabelOccs$fBinaryFieldLbl$fOutputableFieldLbl $fEqFieldLbl$fFunctorFieldLbl$fFoldableFieldLbl$fTraversableFieldLbl$fDataFieldLblfingerprintBinMemcomputeFingerprintputNameLiterallyAnnEnv CoreAnnTarget NamedTarget ModuleTarget AnnPayload Annotation ann_target ann_valuegetAnnTargetName_maybe emptyAnnEnvmkAnnEnvextendAnnEnvList plusAnnEnvfindAnnsfindAnnsByTypeRepdeserializeAnns$fOutputableAnnTarget$fUniquableAnnTarget$fFunctorAnnTarget$fOutputableAnnotation IOEnvFailurefailM failWithMrunIOEnvfixMtryMtryAllMtryMostMunsafeInterleaveMuninterruptibleMaskM_ newMutVar writeMutVar readMutVar updMutVaratomicUpdMutVaratomicUpdMutVar'getEnvsetEnvupdEnv$fMonadIOIOEnv$fMonadPlusIOEnv$fAlternativeIOEnv$fHasModuleIOEnv$fHasDynFlagsIOEnv$fExceptionMonadIOEnv$fFunctorIOEnv$fApplicativeIOEnv$fMonadFailIOEnv $fMonadIOEnv$fExceptionIOEnvFailure$fShowIOEnvFailureCoreToDoCoreM SimplCountWarnMsgErrDocerrDocImportant errDocContexterrDocSupplementaryErrMsg errMsgSpan errMsgContext errMsgDocerrMsgSeverity errMsgReason ErrorMessagesWarningMessagesMessagesValidityIsValidNotValidisValidandValidallValid getInvalidsorValid unionMessageserrDoc pprMessageBagmakeIntoWarningmkErrDoc mkLongErrMsgmkErrMsg mkPlainErrMsg mkLongWarnMsg mkWarnMsgmkPlainWarnMsg emptyMessagesisEmptyMessages errorsFoundprintBagOfErrors formatErrDocpprErrMsgBagWithLoc pprLocErrMsgghcExitdoIfSet doIfSet_dyn dumpIfSet dumpIfSet_dyndumpIfSet_dyn_printer mkDumpDocdumpSDocForUserdumpSDocWithStyleerrorMsg warningMsg fatalErrorMsgfatalErrorMsg''compilationProgressMsgshowPass withTiming debugTraceMsgputMsgprintInfoForUserprintOutputForUserlogInfo logOutputprettyPrintGhcErrorsisWarnMsgFataltraceCmd$fToJsonSeverity $fShowErrMsg$fShowSeverityModuleSuggestionSuggestVisible SuggestHidden LookupResult LookupFoundLookupMultiple LookupHiddenLookupUnusableLookupNotFoundUnusablePackageReasonIgnoredWithFlagBrokenDependenciesCyclicDependenciesIgnoredDependenciesShadowedDependenciespreloadPackagesexplicitPackagesmoduleToPkgConfAllrequirementContext ModuleOrigin ModHidden ModUnusable ModOriginfromOrigPackagefromExposedReexportfromHiddenReexportfromPackageFlag lookupPackagelookupPackage'lookupPackageNamesearchPackageIdgetPackageDetailslookupInstalledPackagegetInstalledPackageDetailslistPackageConfigMap initPackagesreadPackageConfigsgetPackageConfRefsresolvePackageConfigreadPackageConfig isIndefinitepprFlag pprReason unwireUnitIdgetPackageIncludePathcollectIncludeDirsgetPackageLibraryPathcollectLibraryPathsgetPackageLinkOptscollectLinkOptscollectArchivesgetLibs packageHsLibsgetPackageExtraCcOptsgetPackageFrameworkPathgetPackageFrameworkslookupModuleInAllPackageslookupModuleWithSuggestions!lookupPluginModuleWithSuggestionslistVisibleModuleNamesgetPreloadPackagesAnd isDllName pprPackagespprPackagesSimple pprModuleMap$fMonoidUnitVisibility$fSemigroupUnitVisibility$fOutputableUnitVisibility!$fOutputableUnusablePackageReason$fMonoidModuleOrigin$fSemigroupModuleOrigin$fOutputableModuleOriginTempFileLifetimeTFL_CurrentModuleTFL_GhcSession cleanTempDirscleanTempFilesaddFilesToCleanchangeTempFilesLifetime newTempName newTempDirnewTempLibNamewithSystemTempDirectorywithTempDirectory$fShowTempFileLifetime ForeignHintNoHintAddrHint SignedHintLengthWidthW8W16W32W64W80W128W256W512 cmmEqTypecmmEqType_ignoring_ptrhood typeWidthcmmBitscmmFloatb8b16b32b64b128b256b512f32f64bWord bHalfWordgcWordcInt isFloatType isGcPtrType isBitsTypeisWord64isWord32 isFloat32 isFloat64 wordWidth halfWordWidth halfWordMask cIntWidth widthInBits widthInByteswidthFromBytes widthInLognarrowUnarrowSvecvec2vec4vec8vec16vec2f64vec2b64vec4f32vec4b32vec8b16vec16b8cmmVec vecLength vecElemType isVecTyperEP_CostCentreStack_mem_allocrEP_CostCentreStack_scc_countrEP_StgEntCounter_allocsrEP_StgEntCounter_allocd$fOutputableWidth$fOutputableCmmCat$fOutputableCmmType $fEqWidth $fOrdWidth $fShowWidth $fEqCmmCat$fEqForeignHintAvails AvailInfoAvailTCstableAvailCmpavailavailsToNameSetavailsToNameSetWithSelectorsavailsToNameEnv availName availNamesavailNamesWithSelectorsavailNonFldNames availFldsavailsNamesWithOccsavailNamesWithOccs plusAvail trimAvail filterAvails filterAvail nubAvails$fBinaryAvailInfo$fOutputableAvailInfo $fEqAvailInfo$fDataAvailInfo ImpItemSpecImpAllImpSome is_explicitis_iloc ImpDeclSpecis_modis_asis_qualis_dloc ImportSpecImpSpecis_declis_itemParentNoParentParentIs FldParentpar_ispar_lbl GlobalRdrEltGREgre_namegre_pargre_lclgre_imp GlobalRdrEnv LocalRdrEnvUnqualQualOrigExact rdrNameOcc rdrNameSpace demoteRdrName mkRdrUnqual mkRdrQualmkOrigmkUnqual mkVarUnqualmkQual getRdrName nameRdrName isRdrDataCon isRdrTyVarisRdrTc isSrcRdrNameisUnqualisQual isQual_maybeisOrig isOrig_maybeisExact isExact_maybeemptyLocalRdrEnvextendLocalRdrEnvextendLocalRdrEnvListlookupLocalRdrEnvlookupLocalRdrOccelemLocalRdrEnvlocalRdrEnvEltsinLocalRdrEnvScopedelLocalRdrEnvListgresFromAvailslocalGREsFromAvail gresFromAvailgreQualModName greRdrNames greSrcSpangreParent_maybegresToAvailInfo availFromGREemptyGlobalRdrEnvglobalRdrEnvEltspprGlobalRdrEnvlookupGlobalRdrEnv greOccNamelookupGRE_RdrNamelookupGRE_NamelookupGRE_FieldLabellookupGRE_Name_OccNamegetGRE_NameQualifier_maybes isLocalGRE isRecFldGREgreLabelunQualOKpickGREspickGREsModExpplusGlobalRdrEnvmkGlobalRdrEnv transformGREsextendGlobalRdrEnv shadowNames bestImport unQualSpecOK qualSpecOK importSpecLocimportSpecModuleisExplicitItempprNameProvenancestarInfo $fOrdRdrName $fEqRdrName$fOutputableBndrRdrName$fOutputableRdrName$fHasOccNameRdrName$fOutputableLocalRdrEnv$fOutputableParent$fOrdImpDeclSpec$fEqImpDeclSpec$fOrdImpItemSpec$fEqImpItemSpec$fOutputableImportSpec$fOutputableGlobalRdrElt $fDataRdrName $fEqParent $fDataParent$fDataImpDeclSpec$fDataImpItemSpec$fEqImportSpec$fOrdImportSpec$fDataImportSpec$fDataGlobalRdrElt$fEqGlobalRdrEltallNameStringsitName mkUnboundName isUnboundNamebasicKnownKeyNamesgenericTyConNamespRELUDEgHC_PRIM gHC_TYPES gHC_MAGIC gHC_CSTRING gHC_CLASSESgHC_PRIMOPWRAPPERSgHC_BASEgHC_ENUMgHC_GHCIgHC_GHCI_HELPERSgHC_SHOWgHC_READgHC_NUM gHC_MAYBEgHC_INTEGER_TYPE gHC_NATURALgHC_LIST gHC_TUPLE dATA_TUPLE dATA_EITHER dATA_STRING dATA_FOLDABLEdATA_TRAVERSABLEgHC_CONCgHC_IOgHC_IO_ExceptiongHC_STgHC_ARR gHC_STABLEgHC_PTRgHC_ERRgHC_REAL gHC_FLOATgHC_TOP_HANDLER sYSTEM_IOdYNAMICtYPEABLEtYPEABLE_INTERNALgENERICS rEAD_PREClEXgHC_INTgHC_WORDmONAD mONAD_FIX mONAD_ZIP mONAD_FAILaRROWcONTROL_APPLICATIVE gHC_DESUGARrANDOMgHC_EXTScONTROL_EXCEPTION_BASE gHC_GENERICS gHC_TYPELITS gHC_TYPENATSdATA_TYPE_EQUALITY dATA_COERCE dEBUG_TRACE gHC_SRCLOC gHC_STACKgHC_STACK_TYPES gHC_STATICPTRgHC_STATICPTR_INTERNALgHC_FINGERPRINT_TYPEgHC_OVER_LABELS gHC_RECORDS rOOT_MAINmkInteractiveModule pRELUDE_NAME mAIN_NAMEdATA_ARRAY_PARALLEL_NAMEdATA_ARRAY_PARALLEL_PRIM_NAME mkPrimModulemkIntegerModule mkBaseModule mkBaseModule_mkThisGhcModulemkThisGhcModule_ mkMainModule mkMainModule_main_RDR_Unqualeq_RDRge_RDRle_RDRlt_RDRgt_RDR compare_RDR ltTag_RDR eqTag_RDR gtTag_RDR eqClass_RDR numClass_RDR ordClass_RDR enumClass_RDRmonadClass_RDRmap_RDR append_RDR foldr_RDR build_RDR returnM_RDR bindM_RDR failM_RDRleft_RDR right_RDR fromEnum_RDR toEnum_RDR enumFrom_RDRenumFromTo_RDRenumFromThen_RDRenumFromThenTo_RDRratioDataCon_RDRplusInteger_RDRtimesInteger_RDR ioDataCon_RDR eqString_RDRunpackCString_RDRunpackCStringFoldr_RDRunpackCStringUtf8_RDRnewStablePtr_RDR bindIO_RDR returnIO_RDRfromInteger_RDRfromRational_RDR minus_RDR times_RDRplus_RDR toInteger_RDRtoRational_RDRfromIntegral_RDR stringTy_RDRfromString_RDR fromList_RDR fromListN_RDR toList_RDR compose_RDRand_RDRnot_RDR getTag_RDRsucc_RDRpred_RDR minBound_RDR maxBound_RDR range_RDR inRange_RDR index_RDRunsafeIndex_RDRunsafeRangeSize_RDR readList_RDRreadListDefault_RDRreadListPrec_RDRreadListPrecDefault_RDR readPrec_RDR parens_RDR choose_RDRlexP_RDR expectP_RDR readField_RDRreadFieldHash_RDRreadSymField_RDRpunc_RDR ident_RDR symbol_RDRstep_RDRalt_RDR reset_RDRprec_RDR pfail_RDR showsPrec_RDR shows_RDRshowString_RDR showSpace_RDRshowCommaSpace_RDR showParen_RDR undefined_RDR error_RDR u1DataCon_RDRpar1DataCon_RDRrec1DataCon_RDR k1DataCon_RDR m1DataCon_RDR l1DataCon_RDR r1DataCon_RDRprodDataCon_RDRcomp1DataCon_RDR unPar1_RDR unRec1_RDRunK1_RDR unComp1_RDRfrom_RDR from1_RDRto_RDRto1_RDRdatatypeName_RDRmoduleName_RDRpackageName_RDRisNewtypeName_RDR selName_RDR conName_RDR conFixity_RDRconIsRecord_RDRprefixDataCon_RDRinfixDataCon_RDRleftAssocDataCon_RDRrightAssocDataCon_RDRnotAssocDataCon_RDRuAddrDataCon_RDRuCharDataCon_RDRuDoubleDataCon_RDRuFloatDataCon_RDRuIntDataCon_RDRuWordDataCon_RDR uAddrHash_RDR uCharHash_RDRuDoubleHash_RDRuFloatHash_RDR uIntHash_RDR uWordHash_RDRfmap_RDR replace_RDRpure_RDRap_RDR liftA2_RDRfoldable_foldr_RDR foldMap_RDRnull_RDRall_RDR traverse_RDR mempty_RDR mappend_RDR varQual_RDR tcQual_RDR clsQual_RDR dataQual_RDR wildCardName runMainIOName runRWNameorderingTyConNameordLTDataConNameordEQDataConNameordGTDataConName specTyConNameeitherTyConNameleftDataConNamerightDataConName v1TyConName u1TyConName par1TyConName rec1TyConName k1TyConName m1TyConName sumTyConName prodTyConName compTyConName rTyConName dTyConName cTyConName sTyConName rec0TyConName d1TyConName c1TyConName s1TyConNamenoSelTyConName repTyConName rep1TyConName uRecTyConNameuAddrTyConNameuCharTyConNameuDoubleTyConNameuFloatTyConName uIntTyConNameuWordTyConNameprefixIDataConNameinfixIDataConNameleftAssociativeDataConNamerightAssociativeDataConNamenotAssociativeDataConNamesourceUnpackDataConNamesourceNoUnpackDataConNamenoSourceUnpackednessDataConNamesourceLazyDataConNamesourceStrictDataConNamenoSourceStrictnessDataConNamedecidedLazyDataConNamedecidedStrictDataConNamedecidedUnpackDataConNamemetaDataDataConNamemetaConsDataConNamemetaSelDataConName divIntName modIntNameunpackCStringNameunpackCStringFoldrNameunpackCStringUtf8Name eqStringName inlineIdName eqClassNameeqName ordClassNamegeNamefunctorClassNamefmapNamemonadClassName thenMName bindMName returnMNamemonadFailClassName failMNameapplicativeClassNameapAName pureAName thenANamefoldableClassNametraversableClassNamesemigroupClassName sappendNamemonoidClassName memptyName mappendName mconcatName joinMNamealternativeClassName joinMIdKey apAClassOpKeypureAClassOpKeythenAClassOpKeyalternativeClassKey groupWithName dollarNameotherwiseIdName foldrName buildName augmentNamemapName appendName assertNamebreakpointNamebreakpointCondNamebreakpointAutoNameopaqueTyConNamefromStringNamebreakpointJumpNamebreakpointCondJumpNamebreakpointAutoJumpNamefstNamesndName numClassNamefromIntegerName minusName negateNameintegerTyConNameintegerSDataConName mkIntegerNameintegerToWord64NameintegerToInt64Nameword64ToIntegerNameint64ToIntegerNameplusIntegerNametimesIntegerNamesmallIntegerNamewordToIntegerNameintegerToWordNameintegerToIntNameminusIntegerNamenegateIntegerNameeqIntegerPrimNameneqIntegerPrimNameabsIntegerNamesignumIntegerNameleIntegerPrimNamegtIntegerPrimNameltIntegerPrimNamegeIntegerPrimNamecompareIntegerNamequotRemIntegerNamedivModIntegerNamequotIntegerNameremIntegerNamedivIntegerNamemodIntegerNamefloatFromIntegerNamedoubleFromIntegerNameencodeFloatIntegerNameencodeDoubleIntegerNamedecodeDoubleIntegerNamegcdIntegerNamelcmIntegerNameandIntegerName orIntegerNamexorIntegerNamecomplementIntegerNameshiftLIntegerNameshiftRIntegerNamebitIntegerNamenaturalTyConNamenaturalSDataConNamenaturalFromIntegerNamenaturalToIntegerNameplusNaturalNameminusNaturalNametimesNaturalName mkNaturalNamewordToNaturalNamerationalTyConNameratioTyConNameratioDataConName realClassNameintegralClassNamerealFracClassNamefractionalClassNamefromRationalName toIntegerNametoRationalNamefromIntegralNamerealToFracNamefloatingClassNamerealFloatClassNamerationalToFloatNamerationalToDoubleName ixClassNametrModuleTyConNametrModuleDataConNametrNameTyConNametrNameSDataConNametrNameDDataConNametrTyConTyConNametrTyConDataConNamekindRepTyConNamekindRepTyConAppDataConNamekindRepVarDataConNamekindRepAppDataConNamekindRepFunDataConNamekindRepTYPEDataConNamekindRepTypeLitSDataConNamekindRepTypeLitDDataConNametypeLitSortTyConNametypeLitSymbolDataConNametypeLitNatDataConNametypeableClassNametypeRepTyConNamesomeTypeRepTyConNamesomeTypeRepDataConName typeRepIdName mkTrTypeName mkTrConName mkTrAppName mkTrFunNametypeNatTypeRepNametypeSymbolTypeRepNametrGhcPrimModuleNamestarKindRepNamestarArrStarKindRepNamestarArrStarArrStarKindRepNameerrorMessageTypeErrorFamNametypeErrorTextDataConNametypeErrorAppendDataConNametypeErrorVAppendDataConNametypeErrorShowTypeDataConName toDynName dataClassNameassertErrorName traceName enumClassName enumFromNameenumFromToNameenumFromThenNameenumFromThenToNameboundedClassName concatName filterNamezipNameisListClassName fromListName fromListNName toListName showClassName readClassName genClassName gen1ClassNamedatatypeClassNameconstructorClassNameselectorClassNamegenericClassNamesghciIoClassNameghciStepIoMName ioTyConName ioDataConName thenIOName bindIOName returnIOName failIOName printName int8TyConNameint16TyConNameint32TyConNameint64TyConNameword16TyConNameword32TyConNameword64TyConName ptrTyConNamefunPtrTyConNamestablePtrTyConNamenewStablePtrNamemonadFixClassNamemfixNamearrAName composeAName firstANameappAName choiceAName loopAName guardMName liftMNamemzipNametoAnnotationWrapperNamemonadPlusClassNamerandomClassNamerandomGenClassNameisStringClassNameknownNatClassNameknownSymbolClassNameisLabelClassName ipClassNamehasFieldClassNamecallStackTyConNameemptyCallStackNamepushCallStackNamesrcLocDataConNamepLUGINSpluginTyConNamefrontendPluginTyConNamemakeStaticNamestaticPtrInfoTyConNamestaticPtrInfoDataConNamestaticPtrTyConNamestaticPtrDataConNamefromStaticPtrNamefingerprintDataConNamevarQualtcQualclsQualdcQualmk_known_key_nameboundedClassKey enumClassKey eqClassKeyfloatingClassKeyfractionalClassKeyintegralClassKey monadClassKey dataClassKeyfunctorClassKey numClassKey ordClassKey readClassKey realClassKeyrealFloatClassKeyrealFracClassKey showClassKey ixClassKeytypeableClassKeytypeable1ClassKeytypeable2ClassKeytypeable3ClassKeytypeable4ClassKeytypeable5ClassKeytypeable6ClassKeytypeable7ClassKeymonadFixClassKeymonadFailClassKeymonadPlusClassKeyrandomClassKeyrandomGenClassKeyisStringClassKeyapplicativeClassKeyfoldableClassKeytraversableClassKey genClassKey gen1ClassKeydatatypeClassKeyconstructorClassKeyselectorClassKeyknownNatClassNameKeyknownSymbolClassNameKeyghciIoClassKeyisLabelClassNameKeysemigroupClassKeymonoidClassKey ipClassKeyhasFieldClassNameKeyaddrPrimTyConKeyarrayPrimTyConKey boolTyConKeybyteArrayPrimTyConKeycharPrimTyConKey charTyConKeydoublePrimTyConKeydoubleTyConKeyfloatPrimTyConKey floatTyConKey funTyConKeyintPrimTyConKey intTyConKeyint8PrimTyConKey int8TyConKeyint16PrimTyConKey int16TyConKeyint32PrimTyConKey int32TyConKeyint64PrimTyConKey int64TyConKeyintegerTyConKeynaturalTyConKey listTyConKeyforeignObjPrimTyConKey maybeTyConKeyweakPrimTyConKeymutableArrayPrimTyConKeymutableByteArrayPrimTyConKeyorderingTyConKeymVarPrimTyConKey ratioTyConKeyrationalTyConKeyrealWorldTyConKeystablePtrPrimTyConKeystablePtrTyConKey eqTyConKey heqTyConKeyarrayArrayPrimTyConKeymutableArrayArrayPrimTyConKeystatePrimTyConKeystableNamePrimTyConKeystableNameTyConKeyeqPrimTyConKeyeqReprPrimTyConKeyeqPhantPrimTyConKeymutVarPrimTyConKey ioTyConKeyvoidPrimTyConKeywordPrimTyConKey wordTyConKeyword8PrimTyConKey word8TyConKeyword16PrimTyConKeyword16TyConKeyword32PrimTyConKeyword32TyConKeyword64PrimTyConKeyword64TyConKey liftedConKeyunliftedConKey anyBoxConKey kindConKey boxityConKey typeConKeythreadIdPrimTyConKeybcoPrimTyConKey ptrTyConKeyfunPtrTyConKeytVarPrimTyConKeycompactPrimTyConKeyobjectTyConKeyeitherTyConKey tYPETyConKeyconstraintKindTyConKeyruntimeRepTyConKeyvecCountTyConKeyvecElemTyConKeypluginTyConKeyfrontendPluginTyConKeyunknownTyConKeyunknown1TyConKeyunknown2TyConKeyunknown3TyConKeyopaqueTyConKey v1TyConKey u1TyConKey par1TyConKey rec1TyConKey k1TyConKey m1TyConKey sumTyConKey prodTyConKey compTyConKey rTyConKey dTyConKey cTyConKey sTyConKey rec0TyConKey d1TyConKey c1TyConKey s1TyConKey noSelTyConKey repTyConKey rep1TyConKey uRecTyConKey uAddrTyConKey uCharTyConKeyuDoubleTyConKeyuFloatTyConKey uIntTyConKey uWordTyConKeytypeNatKindConNameKeytypeSymbolKindConNameKeytypeNatAddTyFamNameKeytypeNatMulTyFamNameKeytypeNatExpTyFamNameKeytypeNatLeqTyFamNameKeytypeNatSubTyFamNameKeytypeSymbolCmpTyFamNameKeytypeNatCmpTyFamNameKeytypeNatDivTyFamNameKeytypeNatModTyFamNameKeytypeNatLogTyFamNameKeyerrorMessageTypeErrorFamKey ntTyConKeycoercibleTyConKeyproxyPrimTyConKey specTyConKey anyTyConKeysmallArrayPrimTyConKeysmallMutableArrayPrimTyConKeystaticPtrTyConKeystaticPtrInfoTyConKeycallStackTyConKeytypeRepTyConKeysomeTypeRepTyConKeysomeTypeRepDataConKeytypeSymbolAppendFamNameKeyint8X16PrimTyConKeyint16X8PrimTyConKeyint32X4PrimTyConKeyint64X2PrimTyConKeyint8X32PrimTyConKeyint16X16PrimTyConKeyint32X8PrimTyConKeyint64X4PrimTyConKeyint8X64PrimTyConKeyint16X32PrimTyConKeyint32X16PrimTyConKeyint64X8PrimTyConKeyword8X16PrimTyConKeyword16X8PrimTyConKeyword32X4PrimTyConKeyword64X2PrimTyConKeyword8X32PrimTyConKeyword16X16PrimTyConKeyword32X8PrimTyConKeyword64X4PrimTyConKeyword8X64PrimTyConKeyword16X32PrimTyConKeyword32X16PrimTyConKeyword64X8PrimTyConKeyfloatX4PrimTyConKeydoubleX2PrimTyConKeyfloatX8PrimTyConKeydoubleX4PrimTyConKeyfloatX16PrimTyConKeydoubleX8PrimTyConKeycharDataConKeyconsDataConKeydoubleDataConKeyfalseDataConKeyfloatDataConKey intDataConKeyintegerSDataConKeynothingDataConKeyjustDataConKey eqDataConKey nilDataConKeyratioDataConKeyword8DataConKeystableNameDataConKeytrueDataConKeywordDataConKey ioDataConKeyintegerDataConKey heqDataConKeycrossDataConKey inlDataConKey inrDataConKeygenUnitDataConKeyleftDataConKeyrightDataConKeyordLTDataConKeyordEQDataConKeyordGTDataConKeycoercibleDataConKeystaticPtrDataConKeystaticPtrInfoDataConKeyfingerprintDataConKeysrcLocDataConKeytrTyConTyConKeytrTyConDataConKeytrModuleTyConKeytrModuleDataConKeytrNameTyConKeytrNameSDataConKeytrNameDDataConKeytrGhcPrimModuleKeykindRepTyConKeytypeLitSortTyConKeytypeErrorTextDataConKeytypeErrorAppendDataConKeytypeErrorVAppendDataConKeytypeErrorShowTypeDataConKeyprefixIDataConKeyinfixIDataConKeyleftAssociativeDataConKeyrightAssociativeDataConKeynotAssociativeDataConKeysourceUnpackDataConKeysourceNoUnpackDataConKeynoSourceUnpackednessDataConKeysourceLazyDataConKeysourceStrictDataConKeynoSourceStrictnessDataConKeydecidedLazyDataConKeydecidedStrictDataConKeydecidedUnpackDataConKeymetaDataDataConKeymetaConsDataConKeymetaSelDataConKeyvecRepDataConKeytupleRepDataConKeysumRepDataConKeyruntimeRepSimpleDataConKeysliftedRepDataConKeyunliftedSimpleRepDataConKeysunliftedRepDataConKeysvecCountDataConKeysvecElemDataConKeyskindRepTyConAppDataConKeykindRepVarDataConKeykindRepAppDataConKeykindRepFunDataConKeykindRepTYPEDataConKeykindRepTypeLitSDataConKeykindRepTypeLitDDataConKeytypeLitSymbolDataConKeytypeLitNatDataConKey wildCardKeyabsentErrorIdKey augmentIdKey appendIdKey buildIdKey errorIdKey foldrIdKeyrecSelErrorIdKeyseqIdKey eqStringIdKeynoMethodBindingErrorIdKeynonExhaustiveGuardsErrorIdKeyruntimeErrorIdKey patErrorIdKeyrealWorldPrimIdKeyrecConErrorIdKeyunpackCStringUtf8IdKeyunpackCStringAppendIdKeyunpackCStringFoldrIdKeyunpackCStringIdKey voidPrimIdKeytypeErrorIdKey divIntIdKey modIntIdKeyabsentSumFieldErrorIdKeyunsafeCoerceIdKey concatIdKey filterIdKeyzipIdKey bindIOIdKey returnIOIdKeynewStablePtrIdKey printIdKey failIOIdKey nullAddrIdKey voidArgIdKeyfstIdKeysndIdKeyotherwiseIdKey assertIdKeymkIntegerIdKeysmallIntegerIdKeyintegerToWordIdKeyintegerToIntIdKeyintegerToWord64IdKeyintegerToInt64IdKeyplusIntegerIdKeytimesIntegerIdKeyminusIntegerIdKeynegateIntegerIdKeyeqIntegerPrimIdKeyneqIntegerPrimIdKeyabsIntegerIdKeysignumIntegerIdKeyleIntegerPrimIdKeygtIntegerPrimIdKeyltIntegerPrimIdKeygeIntegerPrimIdKeycompareIntegerIdKeyquotIntegerIdKeyremIntegerIdKeydivIntegerIdKeymodIntegerIdKeydivModIntegerIdKeyquotRemIntegerIdKeyfloatFromIntegerIdKeydoubleFromIntegerIdKeyencodeFloatIntegerIdKeyencodeDoubleIntegerIdKeygcdIntegerIdKeylcmIntegerIdKeyandIntegerIdKeyorIntegerIdKeyxorIntegerIdKeycomplementIntegerIdKeyshiftLIntegerIdKeyshiftRIntegerIdKeywordToIntegerIdKeyword64ToIntegerIdKeyint64ToIntegerIdKeydecodeDoubleIntegerIdKey rootMainKey runMainKey thenIOIdKey lazyIdKeyassertErrorIdKey oneShotKeyrunRWKeytraceKeybreakpointIdKeybreakpointCondIdKeybreakpointAutoIdKeybreakpointJumpIdKeybreakpointCondJumpIdKeybreakpointAutoJumpIdKey inlineIdKeymapIdKeygroupWithIdKey dollarIdKeycoercionTokenIdKey noinlineIdKeyrationalToFloatIdKeyrationalToDoubleIdKeyunmarshalObjectIdKeymarshalObjectIdKeymarshalStringIdKeyunmarshalStringIdKeycheckDotnetResNameIdKey undefinedKey magicDictKey coerceKey unboundKeyfromIntegerClassOpKeyminusClassOpKeyfromRationalClassOpKeyenumFromClassOpKeyenumFromThenClassOpKeyenumFromToClassOpKeyenumFromThenToClassOpKey eqClassOpKey geClassOpKeynegateClassOpKeybindMClassOpKeythenMClassOpKeyfmapClassOpKeyreturnMClassOpKey mfixIdKeyfailMClassOpKey arrAIdKey composeAIdKey firstAIdKey appAIdKey choiceAIdKey loopAIdKeyfromStringClassOpKeytoAnnotationWrapperIdKeyfromIntegralIdKeyrealToFracIdKeytoIntegerClassOpKeytoRationalClassOpKey guardMIdKey liftMIdKey mzipIdKeyghciStepIoMClassOpKeyisListClassKeyfromListClassOpKeyfromListNClassOpKeytoListClassOpKey proxyHashKey mkTyConKey mkTrTypeKey mkTrConKey mkTrAppKeytypeNatTypeRepKeytypeSymbolTypeRepKey typeRepIdKey mkTrFunKey trTYPEKeytrTYPE'PtrRepLiftedKeytrRuntimeRepKeytr'PtrRepLiftedKeystarKindRepKeystarArrStarKindRepKeystarArrStarArrStarKindRepKey toDynIdKeybitIntegerIdKey eqSCSelIdKey heqSCSelIdKeycoercibleSCSelIdKeysappendClassOpKeymemptyClassOpKeymappendClassOpKeymconcatClassOpKeyemptyCallStackKeypushCallStackKeyfromStaticPtrClassOpKey makeStaticKeynaturalFromIntegerIdKeynaturalToIntegerIdKeyplusNaturalIdKeyminusNaturalIdKeytimesNaturalIdKeymkNaturalIdKeynaturalSDataConKeywordToNaturalIdKeynumericClassKeysfractionalClassKeysstandardClassKeysderivableClassKeysinteractiveClassNamesinteractiveClassKeyspretendNameIsInScopeHasENoEIsUnicodeSyntax NormalSyntaxLRdrNameAnnotationCommentAnnDocCommentNextAnnDocCommentPrevAnnDocCommentNamed AnnDocSection AnnDocOptionsAnnLineCommentAnnBlockComment AnnAnyclass AnnCloseBU AnnCloseC AnnCloseQU AnnCloseS AnnCommaTuple AnnDarrowU AnnDcolonU AnnForallU AnnLarrowUAnnMdoAnnName AnnOpenBUAnnOpenC AnnOpenEQU AnnOpenPE AnnOpenPTEAnnOpenS AnnRarrowUAnnSimpleQuote AnnSignature AnnThIdSpliceAnnThIdTySplice AnnThTyQuote AnnValStrAnnViaAnnlarrowtailUAnnrarrowtailUAnnLarrowtailUAnnRarrowtailU AnnEofPos ApiAnnKeyApiAnns getAnnotationgetAndRemoveAnnotationgetAnnotationCommentsgetAndRemoveAnnotationComments unicodeAnn$fOutputableAnnKeywordId$fOutputableAnnotationComment$fEqAnnKeywordId$fOrdAnnKeywordId$fDataAnnKeywordId$fShowAnnKeywordId$fEqAnnotationComment$fOrdAnnotationComment$fDataAnnotationComment$fShowAnnotationComment$fEqIsUnicodeSyntax$fOrdIsUnicodeSyntax$fDataIsUnicodeSyntax$fShowIsUnicodeSyntax$fEqHasE $fOrdHasE $fDataHasE $fShowHasEAddAnnExtBitsFfiBitInterruptibleFfiBit CApiFfiBit ArrowsBitThBit ThQuotesBitIpBitOverloadedLabelsBitExplicitForallBit BangPatBitPatternSynonymsBit HaddockBit MagicHashBitRecursiveDoBitUnicodeSyntaxBitUnboxedTuplesBitUnboxedSumsBitDatatypeContextsBitMonadComprehensionsBitTransformComprehensionsBitQqBitRawTokenStreamBitAlternativeLayoutRuleBitALRTransitionalBitRelaxedLayoutBitNondecreasingIndentationBitSafeHaskellBitTraditionalRecordSyntaxBitExplicitNamespacesBit LambdaCaseBitBinaryLiteralsBitNegativeLiteralsBitHexFloatLiteralsBitTypeApplicationsBitStaticPointersBitNumericUnderscoresBit StarIsTypeBitBlockArgumentsBitNPlusKPatternsBitDoAndIfThenElseBit MultiWayIfBit GadtSyntaxBit InRulePragBitInNestedCommentBitUsePosPragsBitPunPPStatebufferoptionsmessages tab_first tab_countlast_tklast_loclast_lenloccontext lex_statesrcfilesalr_pending_implicit_tokensalr_next_token alr_last_loc alr_contextalr_expecting_ocurlyalr_justClosedExplicitLetBlock annotations comment_qannotations_comments ParserFlags ParseResultPOkPFailedTokenITasITcaseITclassITdata ITdefault ITderivingITdoITelseIThiding ITforeignITifITimportITinITinfixITinfixlITinfixr ITinstanceITletITmodule ITnewtypeITof ITqualifiedITthenITtypeITwhereITforallITexportITlabel ITdynamicITsafeITinterruptibleITunsafe ITstdcallconv ITccallconv ITcapiconvITprimcallconvITjavascriptcallconvITmdoITfamilyITroleITgroupITbyITusing ITpatternITstaticITstock ITanyclassITviaITunit ITsignature ITdependency ITrequires ITinline_prag ITspec_pragITspec_inline_prag ITsource_prag ITrules_pragITwarning_pragITdeprecated_prag ITline_prag ITcolumn_prag ITscc_pragITgenerated_prag ITcore_prag ITunpack_pragITnounpack_prag ITann_pragITcomplete_prag ITclose_pragIToptions_pragITinclude_pragITlanguage_pragITminimal_pragIToverlappable_pragIToverlapping_pragIToverlaps_pragITincoherent_pragITctypeITcomment_line_pragITdotdotITcolonITdcolonITequalITlamITlcaseITvbarITlarrowITrarrowITatITtildeITdarrowITminusITbangITstarITdotITbiglamITocurlyITccurly ITvocurly ITvccurlyITobrack ITopabrack ITcpabrackITcbrackIToparenITcparen IToubxparen ITcubxparenITsemiITcomma ITunderscore ITbackquote ITsimpleQuoteITvaridITconidITvarsymITconsymITqvaridITqconid ITqvarsym ITqconsym ITdupipvarid ITlabelvaridITcharITstring ITinteger ITrational ITprimchar ITprimstring ITprimint ITprimword ITprimfloat ITprimdoubleITopenExpQuoteITopenPatQuoteITopenDecQuoteITopenTypQuote ITcloseQuoteITopenTExpQuoteITcloseTExpQuote ITidEscape ITparenEscape ITidTyEscapeITparenTyEscape ITtyQuote ITquasiQuote ITqQuasiQuoteITprocITrec IToparenbar ITcparenbar ITlarrowtail ITrarrowtail ITLarrowtail ITRarrowtail ITtypeApp ITunknownITeofITdocCommentNextITdocCommentPrevITdocCommentNamed ITdocSection ITdocOptions ITlineCommentITblockComment failLocMsgP failSpanMsgP getPStatewithThisPackage setSrcLoc getRealSrcLoc setLastToken nextIsEOF pushLexState popLexState getLexState activeContextgetBit pragStatemkParserFlags' mkParserFlagsmkPState mkPStatePure addWarning getMessages popContextpushModuleContext srcParseFaillexerlexTokenStream addAnnotation addAnnsAtmkParensApiAnncommentToAnnotation$fOutputableToken $fMonadFailP$fMonadP$fApplicativeP $fFunctorP $fShowToken$fShowLayoutContext $fEnumExtBits TyVarBinder TyCoVarBinderVarBndrBndrArgFlagInferred SpecifiedRequiredvarTypeOutIdOutCoVarOutTyVarOutVarInIdInCoVarInTyVarInVarTyCoVarJoinIdEqVarIpIdDictIdDFunIdEvVarEvIdKindVarTypeVarTcTyVarTKVarTyVarNcIdCoVar nonDetCmpVar varUnique setVarUnique setVarName setVarType updateVarTypeupdateVarTypeMisVisibleArgFlagisInvisibleArgFlagsameVis binderVar binderVars binderArgFlag binderTypemkTyCoVarBinder mkTyVarBindermkTyCoVarBindersmkTyVarBinders isTyVarBinder tyVarName tyVarKindsetTyVarUnique setTyVarName setTyVarKindupdateTyVarKindupdateTyVarKindMmkTyVar mkTcTyVartcTyVarDetailssetTcTyVarDetailsidInfo idDetails mkGlobalVar mkLocalVarmkCoVarmkExportedLocalVar lazySetIdInfo setIdDetails globaliseId setIdExportedsetIdNotExportedisTyVar isTcTyVar isTyCoVarisIdisCoVar isNonCoVarId isLocalId isLocalVar isGlobalIdmustHaveLocalBinding isExportedId$fHasOccNameVar $fDataVar$fOrdVar$fEqVar$fUniquableVar$fNamedThingVar$fOutputableVar$fBinaryArgFlag$fOutputableArgFlag$fNamedThingVarBndr$fBinaryVarBndr$fOutputableVarBndr $fEqArgFlag $fOrdArgFlag $fDataArgFlag $fDataVarBndrmkPromotedListTyunboxedTupleKind anyTypeOfKindint8ElemRepDataConTyint16ElemRepDataConTyint32ElemRepDataConTyint64ElemRepDataConTyword8ElemRepDataConTyword16ElemRepDataConTyword32ElemRepDataConTyword64ElemRepDataConTyfloatElemRepDataConTydoubleElemRepDataConTy vec2DataConTy vec4DataConTy vec8DataConTyvec16DataConTyvec32DataConTyvec64DataConTyliftedRepDataConTyunliftedRepDataConTyintRepDataConTyint8RepDataConTyint16RepDataConTyword16RepDataConTywordRepDataConTyint64RepDataConTyword8RepDataConTyword64RepDataConTyaddrRepDataConTyfloatRepDataConTydoubleRepDataConTyliftedRepDataConTyConvecRepDataConTyContupleRepDataConTyCon runtimeRepTyruntimeRepTyCon vecCountTyCon vecElemTyConconstraintKindliftedTypeKindunitTycoercibleTyConheqTyConmkBoxedTupleTy typeNatKindtypeSymbolKind listTyCon mkForAllKind mkFunKind NameOrRdrNameplaceHolderNamesTc patSynNamepatSynExTyVarspatSynInstArgTys patSynArityIfaceForAllBndr IfaceBndr IfaceCoercion IfaceTyLit IfaceTyCon IfaceAppArgsOutputableBndrId OutputableX ConvertIdX Convertableconvert ForallXIEXXIE XIEDocNamedXIEDocXIEGroupXIEModuleContents XIEThingWith XIEThingAll XIEThingAbsXIEVarForallXImportDecl XXImportDecl XCImportDeclForallXFieldOcc XXFieldOcc XCFieldOccForallXConDeclFieldXXConDeclField XConDeclFieldForallXTyVarBndr XXTyVarBndr XKindedTyVar XUserTyVar ForallXTypeXXType XWildCardTyXTyLitXExplicitTupleTyXExplicitListTyXRecTyXBangTyXDocTy XSpliceTyXKindSigXStarTy XIParamTyXParTyXOpTyXSumTyXTupleTyXListTyXFunTy XAppKindTyXAppTyXTyVarXQualTy XForAllTyForallXHsWildCardBndrsXXHsWildCardBndrsXHsWCForallXHsImplicitBndrsXXHsImplicitBndrsXHsIBForallXLHsQTyVars XXLHsQTyVarsXHsQTvs ForallXPatXXPatXCoPatXSigPat XNPlusKPatXNPatXLitPat XSplicePatXViewPatXConPatXSumPat XTuplePatXListPatXBangPatXParPatXAsPatXLazyPatXVarPatXWildPatForallXOverLit XXOverLitXOverLit ForallXHsLitXXLit XHsDoublePrim XHsFloatPrimXHsRat XHsInteger XHsWord64Prim XHsInt64Prim XHsWordPrim XHsIntPrimXHsInt XHsStringPrim XHsString XHsCharPrimXHsCharForallXApplicativeArgXXApplicativeArgXApplicativeArgManyXApplicativeArgOneForallXParStmtBlockXXParStmtBlock XParStmtBlock ForallXCmdXXCmdXCmdWrapXCmdDoXCmdLetXCmdIfXCmdCaseXCmdParXCmdLamXCmdApp XCmdArrForm XCmdArrApp ForallXStmtLRXXStmtLRXRecStmt XTransStmtXParStmtXLetStmt XBodyStmtXApplicativeStmt XBindStmt XLastStmt ForallXGRHSXXGRHSXCGRHS ForallXGRHSsXXGRHSsXCGRHSs ForallXMatchXXMatchXCMatchForallXMatchGroup XXMatchGroupXMG ForallXCmdTopXXCmdTopXCmdTopForallXBracket XXBracketXTExpBrXVarBrXTypBrXDecBrGXDecBrLXPatBrXExpBr ForallXSpliceXXSpliceXSpliced XQuasiQuoteXUntypedSplice XTypedSplice ForallXTupArgXXTupArgXMissingXPresentForallXAmbiguousFieldOccXXAmbiguousFieldOcc XAmbiguous XUnambiguous ForallXExprXXExprXWrap XELazyPat XEViewPatXEAsPat XEWildPat XTickPragmaXBinTickXTickXArrFormXArrAppXStaticXProcXSpliceE XTcBracketOut XRnBracketOutXBracketXCoreAnnXSCC XArithSeqXExprWithTySig XRecordUpd XRecordCon XExplicitListXDoXLetXMultiIfXIfXCase XExplicitSumXExplicitTuple XSectionR XSectionLXParXNegAppXOpApp XAppTypeEXAppXLamCaseXLamXLitE XOverLitEXIPVar XOverLabelXRecFld XConLikeOut XUnboundVarXVarForallXRoleAnnotDeclXXRoleAnnotDeclXCRoleAnnotDeclForallXAnnDecl XXAnnDecl XHsAnnotationForallXWarnDecl XXWarnDeclXWarningForallXWarnDecls XXWarnDecls XWarningsForallXRuleBndr XXRuleBndr XRuleBndrSig XCRuleBndrForallXRuleDecl XXRuleDeclXHsRuleForallXRuleDecls XXRuleDecls XCRuleDeclsForallXForeignDecl XXForeignDeclXForeignExportXForeignImportForallXDefaultDecl XXDefaultDecl XCDefaultDecl XViaStrategyForallXDerivDecl XXDerivDecl XCDerivDeclForallXInstDecl XXInstDecl XTyFamInstD XDataFamInstD XClsInstDForallXClsInstDecl XXClsInstDecl XCClsInstDecl ForallXFamEqnXXFamEqnXCFamEqnForallXConDecl XXConDecl XConDeclH98 XConDeclGADTForallXHsDerivingClauseXXHsDerivingClauseXCHsDerivingClauseForallXHsDataDefn XXHsDataDefn XCHsDataDefnForallXFamilyDecl XXFamilyDecl XCFamilyDeclForallXFamilyResultSigXXFamilyResultSig XTyVarSig XCKindSigXNoSigForallXTyClGroup XXTyClGroup XCTyClGroupForallXTyClDecl XXTyClDecl XClassDecl XDataDeclXSynDeclXFamDeclForallXSpliceDecl XXSpliceDecl XSpliceDeclForallXHsGroup XXHsGroup XCHsGroup ForallXHsDeclXXHsDecl XRoleAnnotDXDocDXSpliceDXRuleDXAnnD XWarningDXForDXDefDXSigDXValDXDerivDXInstDXTyClDForallXFixitySig XXFixitySig XFixitySig ForallXSigXXSigXCompleteMatchSig XSCCFunSig XMinimalSig XSpecInstSigXSpecSig XInlineSigXFixSigXIdSig XClassOpSig XPatSynSigXTypeSig ForallXIPBindXXIPBindXCIPBindForallXHsIPBinds XXHsIPBindsXIPBindsForallXPatSynBind XXPatSynBindXPSBForallXABExport XXABExportXABEForallXHsBindsLR XXHsBindsLR XPatSynBind XAbsBindsXVarBindXPatBindXFunBindForallXValBindsLR XXValBindsLR XValBindsForallXHsLocalBindsLRXXHsLocalBindsLRXEmptyLocalBinds XHsIPBinds XHsValBinds NoGhcTcPassNoGhcTcLIdPIdPGhcTcIdGhcTcGhcRnGhcPsPassParsedRenamed TypecheckedGhcPassNoExtnoExt$fOutputableNoExt$fConvertableaa $fDataNoExt $fEqNoExt $fOrdNoExt $fDataPass $fDataGhcPass $fEqGhcPassLPat IEWildcard NoIEWildcardIEIEVar IEThingAbs IEThingAll IEThingWithIEModuleContentsIEGroupIEDoc IEDocNamedXIELIELIEWrappedName IEWrappedNameIEName IEPatternIEType ImportDecl XImportDeclideclExtideclSourceSrc ideclName ideclPkgQual ideclSource ideclSafeideclQualified ideclImplicitideclAs ideclHiding LImportDeclsimpleImportDeclieNameieNames ieWrappedNamelieWrappedNameieLWrappedNamereplaceWrappedNamereplaceLWrappedName pprImpExp$fOutputableIEWrappedName$fOutputableBndrIEWrappedName$fHasOccNameIEWrappedName$fOutputableIE$fOutputableImportDecl$fEqIEWrappedName$fDataIEWrappedName$fEqIEWildcard$fDataIEWildcardLHsExpr SyntaxExprGRHSs MatchGroupHsSpliceHsCmd pprFunBind pprPatBind pprSpliceDecl pprSplicepprExprpprLExprEqSpec DataConRepisUnboxedSumCondataConFullSigdataConStupidThetadataConInstOrigArgTysdataConFieldLabelsdataConSourceAritydataConUserTyVarBindersdataConUserTyVarsdataConExTyCoVars dataConTyCon dataConName RealDataCon PatSynCon conLikeName CollectedCCsCostCentreStack CCFlavourCafCCExprCCDeclCCHpcCCCcNameNormalCC AllCafsCCcc_namecc_modcc_loc cmpCostCentreisCafCC isSccCountCC sccAbleCCccFromThisModulemkUserCCmkAutoCC mkAllCafsCCemptyCollectedCCs collectCC currentCCS dontCareCCS isCurrentCCSisCafCCSmaybeSingletonCCSmkSingletonCCSpprCostCentreCorecostCentreUserNamecostCentreUserNameFScostCentreSrcSpan$fBinaryCCFlavour$fBinaryCostCentre$fOutputableCostCentre$fOrdCostCentre$fEqCostCentre$fOutputableCostCentreStack $fEqCCFlavour$fOrdCCFlavour$fDataCCFlavour$fDataCostCentre$fEqCostCentreStack$fOrdCostCentreStackBuiltInSynFamily sfMatchFam sfInteractTopsfInteractInert CoAxiomRule coaxrNamecoaxrAsmpRoles coaxrRole coaxrProvesTypeEqnNominalRepresentationalPhantom CoAxBranchcab_loccab_tvs cab_eta_tvscab_cvs cab_rolescab_lhscab_rhs cab_incomps co_ax_unique co_ax_name co_ax_roleco_ax_tcco_ax_branchesco_ax_implicitBranches MkBranches unMkBranches UnbranchedBranched BranchFlag BranchIndex manyBranches unbranched fromBranches numBranchesmapAccumBranchestoBranchedAxiomtoUnbranchedAxiomcoAxiomNumPatscoAxiomNthBranch coAxiomArity coAxiomName coAxiomRolecoAxiomBranchescoAxiomSingleBranch_maybecoAxiomSingleBranch coAxiomTyConcoAxBranchTyVarscoAxBranchCoVars coAxBranchLHS coAxBranchRHScoAxBranchRolescoAxBranchSpanisImplicitCoAxiomcoAxBranchIncompsplaceHolderIncomps fsFromRoletrivialBuiltInFamily$fOutputableRole$fOutputableCoAxBranch $fDataCoAxiom$fNamedThingCoAxiom$fOutputableCoAxiom$fUniquableCoAxiom $fEqCoAxiom$fOutputableCoAxiomRule$fOrdCoAxiomRule$fEqCoAxiomRule$fUniquableCoAxiomRule$fDataCoAxiomRule$fDataCoAxBranchLiftingContext coercionType coercionKindseqCo liftCoSubstmkCoercionType coVarRolecoVarKindsTypesRoledecomposePiCos isReflexiveCoisReflCo isGReflCo mkAxiomRuleComkProofIrrelComkSubComkKindCo mkNomReflCo mkGReflComkInstComkLRComkNthCo mkTransComkSymComkUnivCo mkUnsafeCo mkPhantomCo mkAxiomInstCo mkCoVarComkFunCo mkForAllComkAppCo mkTyConAppComkReflCoClassMinimalDef ClassATItemATI DefMethInfo ClassOpItem classTyCon classNameclassKey classTyVarsclassMinimalDefmkClassmkAbstractClass classArityclassAllSelIds classSCSelIds classSCSelId classMethods classOpItemsclassATs classATItems classSCTheta classTvsFds classHasFds classBigSigclassExtraBigSigisAbstractClasspprDefMethInfo pprFundeps pprFunDep $fDataClass$fOutputableClass$fNamedThingClass$fUniquableClass $fEqClass DataConBoxer magicDictId mkPrimOpId mkDictSelIdmkDataConWorkId DTyCoVarSet DTyVarSetDIdSetDVarSet TyCoVarSetCoVarSetTyVarSetIdSet emptyVarSet unitVarSet extendVarSetextendVarSetListintersectVarSet unionVarSet unionVarSets elemVarSet minusVarSet delVarSet delVarSetList isEmptyVarSetmkVarSetlookupVarSet_Directly lookupVarSetlookupVarSetByName sizeVarSet filterVarSetdelVarSetByKeyelemVarSetByKeypartitionVarSetmapUnionVarSetintersectsVarSetdisjointVarSet subVarSet anyVarSet allVarSet mapVarSet fixVarSettransCloVarSet seqVarSet pluralVarSet pprVarSet emptyDVarSet unitDVarSet mkDVarSet extendDVarSet elemDVarSet dVarSetElems subDVarSet unionDVarSet unionDVarSetsmapUnionDVarSetintersectDVarSetdVarSetIntersectVarSetdisjointDVarSetintersectsDVarSetisEmptyDVarSet delDVarSet minusDVarSetdVarSetMinusVarSet foldDVarSet anyDVarSet allDVarSet mapDVarSet filterDVarSet sizeDVarSetpartitionDVarSetdelDVarSetList seqDVarSetextendDVarSetListdVarSetToVarSettransCloDVarSet DTyVarEnvDIdEnvDVarEnvCoVarEnv TyCoVarEnvTyVarEnvIdEnvTidyEnvRnEnv2 InScopeSetemptyInScopeSetgetInScopeVars mkInScopeSetextendInScopeSetextendInScopeSetListextendInScopeSetSet delInScopeSetelemInScopeSet lookupInScopelookupInScope_Directly unionInScope varSetInScopeuniqAwaymkRnEnv2addRnInScopeSet rnInScope rnInScopeSetrnEnvLrnEnvRrnBndrs2rnBndr2 rnBndr2_varrnBndrLrnBndrRrnEtaLrnEtaRdelBndrLdelBndrR delBndrsL delBndrsRrnOccLrnOccR rnOccL_maybe rnOccR_maybeinRnEnvLinRnEnvRlookupRnInScope nukeRnEnvL nukeRnEnvRrnSwap emptyTidyEnvmkEmptyTidyEnv elemVarEnvelemVarEnvByKeydisjointVarEnv alterVarEnv extendVarEnvextendVarEnv_CextendVarEnv_AccextendVarEnv_DirectlyextendVarEnvList plusVarEnv_C plusVarEnv_CDplusMaybeVarEnv_C delVarEnvList delVarEnv minusVarEnvintersectsVarEnv plusVarEnvplusVarEnvList lookupVarEnv filterVarEnvlookupWithDefaultVarEnv mapVarEnvmkVarEnvmkVarEnv_Directly emptyVarEnv unitVarEnv isEmptyVarEnvlookupVarEnv_DirectlyfilterVarEnv_DirectlydelVarEnv_DirectlypartitionVarEnvrestrictVarEnv zipVarEnvlookupVarEnv_NF modifyVarEnvmodifyVarEnv_Directly emptyDVarEnv dVarEnvElts mkDVarEnv extendDVarEnv minusDVarEnv lookupDVarEnv foldDVarEnv mapDVarEnv filterDVarEnv alterDVarEnv plusDVarEnv plusDVarEnv_C unitDVarEnv delDVarEnvdelDVarEnvListisEmptyDVarEnv elemDVarEnvextendDVarEnv_C modifyDVarEnvpartitionDVarEnvextendDVarEnvList anyDVarEnv$fOutputableInScopeSet RecTcChecker TyConFlavour ClassFlavour TupleFlavour SumFlavourDataTypeFlavourNewtypeFlavourAbstractTypeFlavourDataFamilyFlavourOpenTypeFamilyFlavourClosedTypeFamilyFlavourTypeSynonymFlavourBuiltInTypeFlavourPromotedDataConFlavour PrimElemRep Int8ElemRep Int16ElemRep Int32ElemRep Int64ElemRep Word8ElemRep Word16ElemRep Word32ElemRep Word64ElemRep FloatElemRep DoubleElemRepPrimRepVoidRep LiftedRep UnliftedRepInt8RepInt16RepIntRepWordRepInt64RepWord8Rep Word16Rep Word64RepAddrRepFloatRep DoubleRepVecRep TyConRepName FamTyConFlavDataFamilyTyConOpenSynFamilyTyConClosedSynFamilyTyConAbstractClosedSynFamilyTyConBuiltInSynFamTyCon Injectivity NotInjective Injective AlgTyConFlavVanillaAlgTyConUnboxedAlgTyCon ClassTyConDataFamInstTyConRuntimeRepInfoNoRRI RuntimeRepVecCountVecElem AlgTyConRhs AbstractTyCon DataTyCon TupleTyConSumTyConNewTyCon data_consdata_cons_sizeis_enumdata_contup_sortnt_rhs nt_etad_rhsnt_co tyConUnique tyConName tyConBinders tyConResKind tyConKind tyConArity tyConTyVars tyConCType algTcFields famTcResVartcTyConScopedTyVarstcTyConUserTyVars tcTyConIsPoly TyConBndrVisNamedTCBAnonTCBTyConTyCoBinder TyConBindermkAnonTyConBindermkAnonTyConBindersmkNamedTyConBindermkNamedTyConBindersmkRequiredTyConBindertyConBinderArgFlagtyConBndrVisArgFlagisNamedTyConBinderisVisibleTyConBinderisInvisibleTyConBinder mkTyConKindtyConTyVarBinderstyConVisibleTyVarsmkDataTyConRhsvisibleDataCons isNoParenttyConRepName_maybemkPrelTyConRepNametyConRepModOcc isVoidRep isGcPtrRep primRepSizeBprimElemRepSizeBprimRepIsFloattyConFieldLabelslookupTyConFieldLabel mkFunTyCon mkAlgTyCon mkClassTyCon mkTupleTyCon mkSumTyCon mkTcTyCon mkPrimTyCon mkKindTyConmkLiftedPrimTyConmkSynonymTyCon mkFamilyTyConmkPromotedDataConisAbstractTyConmakeRecoveryTyCon isPrimTyConisUnliftedTyCon isAlgTyConisVanillaAlgTyCon isDataTyConisInjectiveTyConisGenerativeTyConisGenInjAlgRhs isNewTyConunwrapNewTyCon_maybeunwrapNewTyConEtad_maybeisProductTyConisDataProductTyCon_maybeisDataSumTyCon_maybeisTypeSynonymTyCon isTauTyConisFamFreeTyConmightBeUnsaturatedTyConisGadtSyntaxTyConisEnumerationTyCon isFamilyTyConisOpenFamilyTyConisTypeFamilyTyConisDataFamilyTyConisOpenTypeFamilyTyCon%isClosedSynFamilyTyConWithAxiom_maybetyConInjectivityInfoisBuiltInSynFamTyCon_maybe isTyConAssoctyConAssoc_maybetyConFlavourAssoc_maybetyConTuple_maybeisBoxedTupleTyConisUnboxedSumTyConisPromotedTupleTyConisPromotedDataConisPromotedDataCon_maybe isKindTyConisLiftedTypeKindTyConNameisImplicitTyContyConCType_maybe isTcTyCon isTcLevPolyexpandSynTyCon_maybeisTyConWithSrcDataCons tyConDataConstyConDataCons_maybetyConSingleDataCon_maybetyConSingleDataContyConSingleAlgDataCon_maybetyConFamilySize algTyConRhstyConFamilyResVar_maybe tyConRoles newTyConRhsnewTyConEtadAritynewTyConEtadRhsnewTyConCo_maybe newTyConConewTyConDataCon_maybetyConStupidThetasynTyConDefn_maybesynTyConRhs_maybefamTyConFlav_maybe isClassTyContyConClass_maybetyConATsisFamInstTyContyConFamInstSig_maybetyConFamInst_maybetyConFamilyCoercion_maybetyConRuntimeRepInfo mkTyConTagMap tyConFlavourtcFlavourCanBeUnsaturatedtcFlavourIsOpenpprPromotionQuote initRecTcdefaultRecTcMaxBoundsetRecTcMaxBound checkRecTc tyConSkolem$fBinaryTyConBndrVis$fOutputableTyConBndrVis$fBinaryInjectivity$fOutputableFamTyConFlav$fOutputablePrimElemRep$fOutputablePrimRep $fDataTyCon$fNamedThingTyCon$fOutputableTyConFlavour$fOutputableTyCon$fUniquableTyCon $fEqTyCon$fOutputableAlgTyConFlav$fEqInjectivity$fEqPrimElemRep$fShowPrimElemRep $fEqPrimRep $fShowPrimRep$fEqTyConFlavoursplitTyConApp_maybe scopedSorttyCoVarsOfTypeWellScopedtyCoVarsOfTypesWellScopedtcViewcoreVieweqType piResultTymkCastTymkAppTy isCoercionTyisPredTyShowForAllFlagShowForAllMustShowForAllWhenIfaceUnivCoProvIfaceUnsafeCoerceProvIfacePhantomProvIfaceProofIrrelProvIfacePluginProv IfaceReflCo IfaceGReflCo IfaceFunCoIfaceTyConAppCo IfaceAppCo IfaceForAllCo IfaceCoVarCoIfaceAxiomInstCoIfaceAxiomRuleCo IfaceUnivCo IfaceSymCo IfaceTransCo IfaceNthCo IfaceLRCo IfaceInstCo IfaceKindCo IfaceSubCoIfaceFreeCoVar IfaceHoleCoIfaceMCoercion IfaceMReflIfaceMCoIfaceTyConInfoifaceTyConIsPromotedifaceTyConSortIfaceTyConSortIfaceNormalTyConIfaceTupleTyCon IfaceSumTyConIfaceEqualityTyConifaceTyConNameifaceTyConInfoIA_NilIA_ArgIfaceTyConBinder IfaceNumTyLit IfaceStrTyLit IfaceContext IfacePredTypeIfaceFreeTyVar IfaceTyVar IfaceLitTy IfaceAppTy IfaceFunTy IfaceDFunTy IfaceForAllTy IfaceTyConApp IfaceCastTyIfaceCoercionTy IfaceTupleTy IfaceKind IfaceOneShotIfaceNoOneShot IfaceLamBndr IfaceTvBndr IfaceIdBndr IfExtName IfLclName ifaceBndrNamemkIfaceForAllTvBndrisIfaceLiftedTypeKindsplitIfaceSigmaTysuppressIfaceInvisiblesstripIfaceInvisVarsifForAllBndrVarifForAllBndrNameifTyConBinderVarifTyConBinderNamemkIfaceTySubstinDomIfaceTySubstsubstIfaceAppArgssubstIfaceTyVarstripInvisArgsappArgsIfaceTypesappArgsIfaceTypesArgFlagspprIfacePrefixApp pprIfaceBndrspprIfaceLamBndrpprIfaceIdBndrpprIfaceTvBndrpprIfaceTyConBinders pprIfaceTypepprParendIfaceTypepprPrecIfaceTypepprIfaceAppArgspprParendIfaceAppArgspprIfaceForAllPartpprIfaceForAllPartMustpprIfaceForAllpprIfaceSigmaTypepprUserIfaceForAllpprIfaceTypeApp pprTyTcApppprIfaceCoTcApp pprIfaceTyLitpprIfaceCoercionpprParendIfaceCoercionpprIfaceContextArrpprIfaceContext$fBinaryIfaceOneShot$fBinaryIfaceTyLit$fOutputableIfaceTyLit$fBinaryIfaceTyConSort$fBinaryIfaceTyConInfo$fBinaryIfaceTyCon$fOutputableIfaceTyCon$fBinaryDefMethSpec$fBinaryIfaceUnivCoProv$fBinaryIfaceCoercion$fBinaryIfaceMCoercion$fBinaryIfaceType$fBinaryIfaceAppArgs$fOutputableIfaceCoercion$fOutputableIfaceAppArgs$fOutputableIfaceType$fBinaryIfaceBndr$fOutputableIfaceBndr$fMonoidIfaceAppArgs$fSemigroupIfaceAppArgs$fEqIfaceTyLit$fEqIfaceTyConSort$fEqIfaceTyConInfo$fEqIfaceTyContidyToIfaceTcArgstoIfaceCoercionX toIfaceTcArgs toIfaceTyContoIfaceForAllBndr toIfaceTyLit toIfaceTypeXInterestingVarFunfvVarListVarSet fvVarList fvDVarSetfvVarSetemptyFVunionFVfilterFV mapUnionFVunionsFV CvSubstEnv TvSubstEnv CoercionHole ch_co_varch_refUnsafeCoerceProv PhantomProvProofIrrelProv PluginProv MCoercionRMReflMCo KindCoercion CoercionP CoercionRReflGRefl TyConAppCoAppCoForAllCoFunCoCoVarCo AxiomInstCo AxiomRuleCoUnivCoSymCoTransCoNthCoLRCoInstCoKindCoSubCoHoleCoTyBinderNamedAnonKnotTiedTyVarTyAppTyTyConAppForAllTyFunTyLitTyCastTy CoercionTy KindOrTypeAnIdAConLikeATyConACoAxiompprShortTyThingpprTyThingCategorytyThingCategory delBinderVarisInvisibleBinderisVisibleBinder isNamedBinder isTyBindertyCoBinderArgFlag mkTyVarTy mkTyVarTys mkTyCoVarTy mkTyCoVarTysmkFunTymkFunTysmkTyCoForAllTy mkForAllTy mkForAllTys mkTyCoPiTy mkTyCoPiTysmkPiTys mkTyConTykindRep kindRep_maybeisLiftedTypeKindisUnliftedTypeKindisLiftedRuntimeRepisUnliftedRuntimeRepisRuntimeRepVar coHoleCoVarsetCoHoleCoVartyCoVarsOfTypetyCoVarsOfTypes tyCoVarsOfCo tyCoVarsOfCostyCoVarsOfProvmkTyCoInScopeSettyCoVarsOfTypeDSettyCoVarsOfTypeListtyCoVarsOfTypesDSettyCoVarsOfTypesList tyCoFVsOfType tyCoFVsBndrtyCoFVsVarBndrstyCoFVsVarBndrtyCoFVsOfTypestyCoVarsOfCoDSettyCoVarsOfCoList tyCoFVsOfCo tyCoFVsOfCos coVarsOfType coVarsOfTypes coVarsOfCo coVarsOfCosalmostDevoidCoVarOfCoinjectiveVarsOfTypetyConAppNeedsKindSignoFreeVarsOfTypenoFreeVarsOfCoemptyTvSubstEnvemptyCvSubstEnvcomposeTCvSubstEnvcomposeTCvSubst emptyTCvSubstmkEmptyTCvSubstisEmptyTCvSubst mkTCvSubst mkTvSubst mkCvSubst getTvSubstEnv getCvSubstEnv getTCvInScopegetTCvSubstRangeFVs isInScopenotElemTCvSubst setTvSubstEnv setCvSubstEnv zapTCvSubstextendTCvInScopeextendTCvInScopeListextendTCvInScopeSetextendTCvSubstextendTCvSubstWithClone extendTvSubstextendTvSubstBinderAndInScopeextendTvSubstWithClone extendCvSubstextendCvSubstWithCloneextendTvSubstAndInScopeextendTvSubstListextendTCvSubstList unionTCvSubst zipTvSubst zipCvSubst zipTCvSubst mkTvSubstPrszipTyEnvzipCoEnv substTyWithsubstTyWithUncheckedsubstTyWithInScope substCoWithsubstCoWithUncheckedsubstTyWithCoVars substTysWithsubstTysWithCoVarssubstTyAddInScopeisValidTCvSubstcheckValidSubstsubstTysubstTyUncheckedsubstTyssubstTysUnchecked substThetasubstThetaUnchecked substTyVar substTyVars substTyCoVars lookupTyVarsubstCosubstCoUncheckedsubstCossubstForAllCoBndrsubstForAllCoBndrUsing substCoVar substCoVars lookupCoVarsubstTyVarBndrsubstTyVarBndrs substVarBndr substVarBndrssubstCoVarBndrsubstVarBndrUsingcloneTyVarBndrcloneTyVarBndrs pprPrecType pprPrecTypeX pprParendKindpprCo pprParendCo pprClassPredpprThetapprParendThetapprThetaArrowTy pprSigmaType pprForAll pprUserForAll pprTCvBndrs pprTCvBndr pprTyVarspprTyVar debugPprType pprDataCons pprTypeApppprWithExplicitKindsWhen tidyVarBndrs tidyVarBndravoidNameClashestidyTyCoVarBindertidyTyCoVarBinderstidyFreeTyCoVarstidyOpenTyCoVarstidyOpenTyCoVartidyTyCoVarOcc tidyTypestidyType tidyOpenTypes tidyOpenType tidyTopType tidyOpenKindtidyKindtidyCotidyCostypeSize coercionSizeprovSize$fNamedThingTyThing$fOutputableTyThing$fOutputableTyLit$fOutputableCoercion$fOutputableType$fOutputableCoercionHole$fDataCoercionHole$fOutputableUnivCoProvenance$fOutputableMCoercion$fOutputableTyCoBinder$fOutputableTCvSubst$fDataCoercion$fDataUnivCoProvenance$fDataMCoercion$fDataTyCoBinder primTyConsunexposedPrimTyConsexposedPrimTyConscharPrimTyConNameintPrimTyConNameint8PrimTyConNameint16PrimTyConNameint32PrimTyConNameint64PrimTyConNamewordPrimTyConNameword8PrimTyConNameword16PrimTyConNameword32PrimTyConNameword64PrimTyConNameaddrPrimTyConNamefloatPrimTyConNamedoublePrimTyConNamemkTemplateKindVarsmkTemplateTyVarsFrommkTemplateTyVarsmkTemplateTyConBindersmkTemplateKiTyVarsmkTemplateKindTyConBindersmkTemplateAnonTyConBinders alphaTyVars alphaTyVar betaTyVar gammaTyVar deltaTyVaralphaTysalphaTybetaTygammaTydeltaTyalphaTyVarsUnliftedRepalphaTyVarUnliftedRepalphaTysUnliftedRepalphaTyUnliftedRepruntimeRep1TyVarruntimeRep2TyVar runtimeRep1Ty runtimeRep2TyopenAlphaTyVar openBetaTyVar openAlphaTy openBetaTy funTyConName tYPETyCon tYPETyConNamemkPrimTyConNametYPEprimRepToRuntimeRep charPrimTy charPrimTyCon intPrimTy intPrimTyCon int8PrimTy int8PrimTyCon int16PrimTyint16PrimTyCon int32PrimTyint32PrimTyCon int64PrimTyint64PrimTyCon wordPrimTy wordPrimTyCon word8PrimTyword8PrimTyCon word16PrimTyword16PrimTyCon word32PrimTyword32PrimTyCon word64PrimTyword64PrimTyCon addrPrimTy addrPrimTyCon floatPrimTyfloatPrimTyCon doublePrimTydoublePrimTyCon mkStatePrimTystatePrimTyConrealWorldTyCon realWorldTyrealWorldStatePrimTy voidPrimTy voidPrimTyCon mkProxyPrimTyproxyPrimTyCon eqPrimTyConeqReprPrimTyConeqPhantPrimTyConarrayPrimTyConmutableArrayPrimTyConmutableByteArrayPrimTyConbyteArrayPrimTyConarrayArrayPrimTyConmutableArrayArrayPrimTyConsmallArrayPrimTyConsmallMutableArrayPrimTyCon mkArrayPrimTybyteArrayPrimTymkArrayArrayPrimTymkSmallArrayPrimTymkMutableArrayPrimTymkMutableByteArrayPrimTymkMutableArrayArrayPrimTymkSmallMutableArrayPrimTymutVarPrimTyConmkMutVarPrimTy mVarPrimTyCon mkMVarPrimTy tVarPrimTyCon mkTVarPrimTystablePtrPrimTyConmkStablePtrPrimTystableNamePrimTyConmkStableNamePrimTycompactPrimTyCon compactPrimTy bcoPrimTy bcoPrimTyCon weakPrimTyCon mkWeakPrimTythreadIdPrimTythreadIdPrimTyCon int8X16PrimTyint8X16PrimTyCon int16X8PrimTyint16X8PrimTyCon int32X4PrimTyint32X4PrimTyCon int64X2PrimTyint64X2PrimTyCon int8X32PrimTyint8X32PrimTyConint16X16PrimTyint16X16PrimTyCon int32X8PrimTyint32X8PrimTyCon int64X4PrimTyint64X4PrimTyCon int8X64PrimTyint8X64PrimTyConint16X32PrimTyint16X32PrimTyConint32X16PrimTyint32X16PrimTyCon int64X8PrimTyint64X8PrimTyConword8X16PrimTyword8X16PrimTyConword16X8PrimTyword16X8PrimTyConword32X4PrimTyword32X4PrimTyConword64X2PrimTyword64X2PrimTyConword8X32PrimTyword8X32PrimTyConword16X16PrimTyword16X16PrimTyConword32X8PrimTyword32X8PrimTyConword64X4PrimTyword64X4PrimTyConword8X64PrimTyword8X64PrimTyConword16X32PrimTyword16X32PrimTyConword32X16PrimTyword32X16PrimTyConword64X8PrimTyword64X8PrimTyCon floatX4PrimTyfloatX4PrimTyCondoubleX2PrimTydoubleX2PrimTyCon floatX8PrimTyfloatX8PrimTyCondoubleX4PrimTydoubleX4PrimTyConfloatX16PrimTyfloatX16PrimTyCondoubleX8PrimTydoubleX8PrimTyConisConstraintKindCon isKindLevPolyclassifiesTypeWithValuesPredTree ClassPredEqPred IrredPred ForAllPredEqRelNomEqReprEq TyCoMapper tcm_smart tcm_tyvar tcm_covartcm_holetcm_tycobinder tcm_tyconexpandTypeSynonymsmapType mapCoerciongetTyVar isTyVarTygetTyVar_maybegetCastedTyVar_mayberepGetTyVar_maybemkAppTyssplitAppTy_mayberepSplitAppTy_maybetcRepSplitAppTy_maybetcRepSplitTyConApp_maybetcRepSplitTyConApp splitAppTy splitAppTysrepSplitAppTys mkNumLitTy isNumLitTy mkStrLitTy isStrLitTyisLitTyuserTypeError_maybepprUserTypeErrorTyisFunTy splitFunTysplitFunTy_maybe splitFunTys funResultTyfunArgTy piResultTys applyTysX mkTyConApptyConAppTyConPicky_maybetyConAppTyCon_maybe tyConAppTyContyConAppArgs_maybe tyConAppArgs tyConAppArgN splitTyConApprepSplitTyConApp_maybesplitListTyConApp_maybenextRolenewTyConInstRhssplitCastTy_maybetyConBindersTyCoBinders mkCoercionTyisCoercionTy_maybestripCoercionTymkTyCoInvForAllTy mkInvForAllTymkTyCoInvForAllTysmkInvForAllTysmkSpecForAllTysmkVisForAllTys mkLamType mkLamTypesmkTyConBindersPreferAnonsplitForAllTys isForAllTy isForAllTy_ty isForAllTy_coisPiTy splitForAllTy dropForAllssplitForAllTy_maybesplitForAllTy_ty_maybesplitForAllTy_co_maybesplitPiTy_maybe splitPiTy splitPiTyssplitForAllVarBndrsinvisibleTyBndrCountsplitPiTysInvisiblesplitPiTysInvisibleNfilterOutInvisibleTypesfilterOutInferredTypespartitionInvisibleTypespartitionInvisibles tyConArgFlags appTyArgFlagsisTauTy mkAnonBinderisAnonTyCoBindertyCoBinderVar_maybetyCoBinderType tyBinderTypebinderRelevantType_maybe caseBindertcSplitTyConApp_maybetcIsConstraintKindtcIsLiftedTypeKindtcReturnsConstraintKind isEvVarType isCoVarType isClassPredisEqPred isNomEqPredisIPPred isIPTyCon isIPClass isCTupleClassisIPPred_maybemkPrimEqPredRole mkPrimEqPredmkHeteroPrimEqPredmkHeteroReprPrimEqPredsplitCoercionType_maybemkReprPrimEqPred equalityTyCon mkClassPredisDictTy isDictLikeTy eqRelRoleclassifyPredTypegetClassPredTysgetClassPredTys_maybe getEqPredTysgetEqPredTys_maybe getEqPredRole predTypeEqReldVarSetElemsWellScopedtyCoVarsOfBindersWellScopedcloseOverKindscloseOverKindsFVcloseOverKindsListcloseOverKindsDSetmkFamilyTyConApp coAxNthLHSpprSourceTyCon isFamFreeTyisLiftedType_maybeisUnliftedTypeisRuntimeRepKindedTydropRuntimeRepArgsgetRuntimeRep_maybe getRuntimeRepisUnboxedTupleTypeisUnboxedSumType isAlgTypeisDataFamilyAppType isStrictTypeisPrimitiveTypeisValidJoinPointTypeseqTypeseqTypeseqTypeXeqTypes eqVarBndrs nonDetCmpTypenonDetCmpTypesnonDetCmpTypeXnonDetCmpTypesX nonDetCmpTctypeKind tcTypeKind isTypeLevPolyresultIsLevPolyoccCheckExpand tyConsOfTypesynTyConResKindsplitVisVarsOfTypesplitVisVarsOfTypesmodifyJoinResTy setJoinResTy pprWithTYPE$fOutputableEqRel $fEqEqRel $fOrdEqRel$fEqTypeOrdering$fOrdTypeOrdering$fEnumTypeOrdering$fBoundedTypeOrderingmkPatSyn patSynIsInfix patSynArgspatSynFieldLabelspatSynFieldTypepatSynUnivTyVarBinderspatSynExTyVarBinders patSynSig patSynMatcher patSynBuilderupdatePatSynIdspatSynInstResTy $fDataPatSyn$fOutputableBndrPatSyn$fOutputablePatSyn$fNamedThingPatSyn$fUniquablePatSyn $fEqPatSyn LitNumType LitNumInteger LitNumNatural LitNumInt LitNumInt64 LitNumWord LitNumWord64LitChar LitNumber LitString LitNullAddr LitRubbishLitFloat LitDoubleLitLabellitNumIsSignedmkLitNumberWraplitNumCheckRange mkLitNumbermkLitInt mkLitIntWrap mkLitIntWrapC mkLitWord mkLitWordWrapmkLitWordWrapC mkLitInt64mkLitInt64Wrap mkLitWord64mkLitWord64Wrap mkLitFloat mkLitDouble mkLitChar mkLitString mkLitInteger mkLitNatural inIntRange inWordRange inCharRange isZeroLitlitValueisLitValue_maybe mapLitValue isLitValue word2IntLit int2WordLit narrowLit narrow8IntLitnarrow16IntLitnarrow32IntLitnarrow8WordLitnarrow16WordLitnarrow32WordLit char2IntLit int2CharLit float2IntLit int2FloatLit double2IntLit int2DoubleLitfloat2DoubleLitdouble2FloatLit nullAddrLit rubbishLit litIsTrivial litIsDupable litFitsInChar litIsLifted literalTypeabsentLiteralOf pprLiteral$fBinaryLitNumType $fOrdLiteral $fEqLiteral$fOutputableLiteral$fBinaryLiteral$fDataLitNumType$fEnumLitNumType$fEqLitNumType$fOrdLitNumType $fDataLiteralGenMap LiteralMapListMapMaybeMapKeyemptyTMlookupTMalterTMmapTMfoldTMXTinsertTMdeleteTM>.>|>|>>lkListxtList foldMaybelkGxtGmapGfdG$fTrieMapUniqDFM $fTrieMapMap$fTrieMapIntMap$fTrieMapMaybeMap$fOutputableListMap$fTrieMapListMap$fTrieMapGenMap$fOutputableGenMap OverLitVal HsIntegral HsFractional HsIsString OverLitTc ol_rebindableol_type HsOverLitOverLitol_extol_val ol_witnessHsChar HsCharPrimHsString HsStringPrimHsInt HsIntPrim HsWordPrim HsInt64Prim HsWord64Prim HsIntegerHsRat HsFloatPrim HsDoublePrimXLitnegateOverLitVal overLitType convertLit pp_st_suffix pmPprHsLithsLitNeedsParenshsOverLitNeedsParens$fOutputableHsLit $fEqHsLit$fOutputableOverLitVal$fOrdOverLitVal$fEqOverLitVal$fOutputableHsOverLit$fOrdHsOverLit $fEqHsOverLit$fDataOverLitTc$fDataOverLitVal LiftCoEnvLCNormaliseStepResultNS_DoneNS_AbortNS_StepNormaliseStepper coVarNamesetCoVarUnique setCoVarNameetaExpandCoAxBranch pprCoAxiompprCoAxBranchUserpprCoAxBranchLHS pprCoAxBranchtidyCoAxBndrsForUser decomposeCodecomposeFunCogetCoVar_maybesplitTyConAppCo_maybesplitAppCo_maybesplitFunCo_maybesplitForAllCo_maybesplitForAllCo_ty_maybesplitForAllCo_co_maybe coVarTypes coVarKindmkHeteroCoercionTypeisReflCoVar_maybeisGReflCo_maybeisReflCo_maybeisReflexiveCo_maybe mkRepReflComkAppCos mkForAllCosmkHomoForAllCos mkCoVarCos isCoVar_maybe mkAxInstComkUnbranchedAxInstCo mkAxInstRHSmkUnbranchedAxInstRHS mkAxInstLHSmkUnbranchedAxInstLHSmkHoleCo mkTransMCo nthCoRolemkGReflRightCo mkGReflLeftComkCoherenceLeftComkCoherenceRightCo downgradeRole maybeSubCosetNominalRole_maybe tyConRolesXtyConRolesRepresentationalnthRoleltRolepromoteCoercioncastCoercionKindcastCoercionKindImkPiCosmkPiComkCoCastinstNewTyCon_maybe mapStepResultcomposeSteppersunwrapNewTypeSteppertopNormaliseTypeXtopNormaliseNewType_maybe eqCoercion eqCoercionXliftCoSubstWithExliftCoSubstWithemptyLiftingContextmkSubstLiftingContextextendLiftingContextextendLiftingContextAndInScopezapLiftingContextsubstForAllCoBndrUsingLCliftCoSubstTyVarliftCoSubstVarBndrUsing isMappedByLC substLeftCo substRightCo swapLiftCoEnv lcSubstLeft lcSubstRightliftEnvSubstLeftliftEnvSubstRight lcTCvSubst lcInScopeSet coercionKindscoercionKindRole coercionRole buildCoercionsimplifyArgsWorker$fOutputableLiftingContextBindFlagBindMeSkolem UnifyResultM Unifiable MaybeApart SurelyApart UnifyResult tcMatchTy tcMatchTyX_BM tcMatchTyKi tcMatchTyX tcMatchTys tcMatchTyKis tcMatchTysX tcMatchTyKisXruleMatchTyKiX roughMatchTcsinstanceCantMatchtypesCantMatch tcUnifyTy tcUnifyTyKitcUnifyTyWithTFs tcUnifyTys tcUnifyTyKis tcUnifyTysFG liftCoMatch$fOutputableUnifyResultM$fMonadPlusUnifyResultM$fAlternativeUnifyResultM$fMonadUnifyResultM$fApplicativeUnifyResultM $fMonadFailUM $fMonadPlusUM$fAlternativeUM $fMonadUM$fApplicativeUM $fFunctorUM$fFunctorUnifyResultM $fEqBindFlagStrictnessMark MarkedStrictNotMarkedStrictSrcUnpackedness SrcUnpack SrcNoUnpack NoSrcUnpack SrcStrictnessSrcLazy SrcStrict NoSrcStrict HsImplBangHsLazyHsStrictHsUnpack HsSrcBang NoDataConRepDCR dcr_wrap_id dcr_boxer dcr_arg_tys dcr_stricts dcr_bangsmkEqSpec eqSpecTyVar eqSpecType eqSpecPair eqSpecPreds substEqSpec filterEqSpeceqHsBangisBanged isSrcStrict isSrcUnpackedisMarkedStrict mkDataCon dataConTag dataConTagZdataConOrigTyCondataConRepTypedataConIsInfixdataConUnivTyVarsdataConUnivAndExTyCoVars dataConEqSpec dataConTheta dataConWorkIddataConWrapId_maybe dataConWrapIddataConImplicitTyThingsdataConFieldTypedataConFieldType_maybedataConSrcBangsdataConRepArityisNullarySrcDataConisNullaryRepDataCondataConRepStrictnessdataConImplBangs dataConBoxer dataConSigdataConInstSigdataConOrigResTydataConUserTypedataConInstArgTysdataConOrigArgTysdataConRepArgTysdataConIdentityisTupleDataConisUnboxedTupleConisVanillaDataConspecialPromotedDc classDataCondataConCannotMatchdataConUserTyVarsArePermutedpromoteDataConsplitDataProductType_maybe buildAlgTyCon buildSynTyCon$fOutputableHsImplBang$fBinarySrcStrictness$fOutputableSrcStrictness$fBinarySrcUnpackedness$fOutputableSrcUnpackedness$fOutputableHsSrcBang$fOutputableStrictnessMark$fOutputableEqSpec $fDataDataCon$fOutputableBndrDataCon$fOutputableDataCon$fNamedThingDataCon$fUniquableDataCon $fEqDataCon$fDataHsImplBang$fEqSrcStrictness$fDataSrcStrictness$fEqSrcUnpackedness$fDataSrcUnpackedness$fDataHsSrcBangSlotTyPtrSlotWordSlot Word64Slot FloatSlot DoubleSlot UnaryType NvUnaryType isNvUnaryTypetypePrimRepArgs unwrapTypecountFunRepArgscountConRepArgsisVoidTy ubxSumRepType layoutUbxSum typeSlotTy primRepSlot slotPrimRep typePrimRep typePrimRep1 tyConPrimRep tyConPrimRep1runtimeRepPrimRep primRepToType$fOutputableSlotTy $fEqSlotTy $fOrdSlotTy StrictSigDmdShell BothDmdArgDmdTypeDmdEnv CPRResult DmdResult TypeShapeTsFunTsProdTsUnk CleanDemandCountUseDmdUCallUProdUHeadUsedStrDmd getStrDmd getUseDmd peelUseCalladdCaseBndrDmduseCount bothCleanDmd mkHeadStrict mkOnceUsedDmd mkManyUsedDmdevalDmd mkProdDmd mkCallDmdmkWorkerDemand cleanEvalDmdcleanEvalProdDmdlubDmdbothDmdstrictApply1Dmd catchArgDmd lazyApply1Dmd lazyApply2DmdabsDmdtopDmdbotDmdseqDmd oneifyDmdisTopDmdisAbsDmdisSeqDmd isUsedOnce seqDemand seqDemandList isStrictDmdcleanUseDmd_maybesplitFVs trimToTypesplitProdDmd_maybetopResexnResbotRes cprSumRes cprProdResvanillaCprProdResisTopResisBotRes trimCPRInforeturnsCPR_maybe lubDmdType mkBothDmdArg toBothDmdArg bothDmdType emptyDmdEnv nopDmdType botDmdType mkDmdType dmdTypeDepthremoveDmdTyArgs seqDmdType splitDmdTy deferAfterIO strictenDmd toCleanDmdpostProcessDmdTypereuseEnvpostProcessUnsat peelCallDmd peelManyCallspeelFV addDemand findIdDemandpprIfaceStrictSig mkStrictSigmkClosedStrictSigsplitStrictSigincreaseStrictSigArityetaExpandStrictSigisTopSighasDemandEnvSigstrictSigDmdEnvisBottomingSignopSigbotSigexnSig cprProdSig seqStrictSigdmdTransformSigdmdTransformDataConSigdmdTransformDictSelSig argsOneShotssaturatedByOneShots argOneShots appIsBottomzapUsageEnvSigzapUsageDemandzapUsedOnceDemandzapUsedOnceSigkillUsageDemand killUsageSigstrictifyDictDmd strictifyDmd$fBinaryJointDmd$fOutputableJointDmd$fBinaryExnStr $fBinaryStr$fBinaryStrDmd$fOutputableStr$fOutputableStrDmd $fBinaryCount$fOutputableCount$fBinaryUseDmd $fBinaryUse$fOutputableUseDmd$fOutputableUse$fOutputableTypeShape$fOutputableTermination$fBinaryCPRResult$fOutputableCPRResult$fBinaryTermination$fBinaryDmdType$fOutputableDmdType $fEqDmdType$fBinaryStrictSig$fOutputableStrictSig $fEqJointDmd$fShowJointDmd $fEqExnStr $fShowExnStr$fEqStr $fShowStr $fEqStrDmd $fShowStrDmd $fEqCount $fShowCount$fEqUse $fShowUse $fEqUseDmd $fShowUseDmd$fEqTermination$fShowTermination $fEqCPRResult$fShowCPRResult $fEqStrictSig conLikeArityconLikeFieldLabelsconLikeInstOrigArgTysconLikeExTyCoVarsconLikeStupidThetaconLikeWrapId_maybeconLikeImplBangs conLikeResTyconLikeFullSigconLikeFieldTypeconLikesWithFieldsconLikeIsInfix $fDataConLike$fOutputableBndrConLike$fOutputableConLike$fNamedThingConLike$fUniquableConLike $fEqConLikeAnnBind AnnNonRecAnnAltAnnExpr'AnnVarAnnLitAnnAppAnnCastAnnTick AnnCoercionAnnExpr TaggedAlt TaggedArg TaggedExpr TaggedBind TaggedBndrTBCoreAltCoreBindCoreArgCoreExprCoreBndr CoreProgramUnfoldingGuidanceUnfWhen UnfIfGoodArgsUnfNeverug_arity ug_unsat_ok ug_boring_okug_argsug_sizeug_resUnfoldingSource InlineRhs InlineStableInlineCompulsory Unfolding NoUnfolding BootUnfoldingOtherCon DFunUnfolding CoreUnfoldingdf_bndrsdf_condf_argsuf_tmpluf_src uf_is_top uf_is_value uf_is_conlikeuf_is_work_free uf_expandable uf_guidanceIdUnfoldingFun InScopeEnvRuleFunCoreRuleRule BuiltinRuleru_nameru_actru_fnru_roughru_bndrsru_argsru_rhsru_auto ru_origin ru_orphanru_localru_nargsru_tryRuleEnvre_basere_visible_orphsRuleBaseIsOrphan NotOrphanTickishPlacement PlaceRuntime PlaceNonLamPlaceCostCentreTickishScopingNoScope SoftScopeCostCentreScopeTickishProfNoteHpcTick Breakpoint SourceNote profNoteCC profNoteCount profNoteScope tickModuletickId breakpointId breakpointFVs sourceSpan sourceName MOutCoercionOutArgOutAltOutExprOutBind OutCoercionOutKindOutTypeOutBndr InCoercionInArgInAltInExprInBindInKindInTypeInBndrBindNonRecRecAltConDataAltLitAltDEFAULTAltArgExprAppLamLetCaseCastTick tickishCounts tickishScopedtickishScopesLiketickishFloatabletickishCanSplit mkNoCount mkNoScope tickishIsCode tickishPlacetickishContainsisOrphan notOrphanchooseOrphanAnchor mkRuleEnv emptyRuleEnv isBuiltinRule isAutoRule ruleArityruleName ruleModuleruleActivation ruleIdName isLocalRule setRuleIdName needSaturated unSaturatedOk boringCxtOkboringCxtNotOk noUnfoldingevaldUnfolding bootUnfolding mkOtherConisStableSourceunfoldingTemplatemaybeUnfoldingTemplate otherConsisValueUnfoldingisEvaldUnfoldingisConLikeUnfoldingisCheapUnfoldingisExpandableUnfoldingexpandUnfolding_maybeisCompulsoryUnfoldingisStableUnfoldinghasSomeUnfoldingisBootUnfoldingneverUnfoldGuidanceisFragileUnfolding canUnfoldcmpAltltAlt cmpAltCon deTagExprmkAppsmkCoApps mkVarAppsmkConAppmkTyApps mkConApp2mkTyArgmkIntLit mkIntLitInt mkWordLit mkWordLitWordmkWord64LitWord64mkInt64LitInt64 mkCharLit mkStringLit mkFloatLitmkFloatLitFloat mkDoubleLitmkDoubleLitDoublemkLamsmkLetsmkLet mkLetNonRecmkLetRecmkTyBindmkCoBind varToCoreExprvarsToCoreExprsapplyTypeToArg exprToTypeexprToCoercion_maybe bindersOfbindersOfBinds rhssOfBind rhssOfAlts flattenBindscollectBinderscollectTyBinderscollectTyAndValBinderscollectNBinders collectArgs stripNArgscollectArgsTicks isRuntimeVar isRuntimeArgisValArg isTyCoArgisCoArg isTypeArg valBndrCount valArgCountcollectAnnArgscollectAnnArgsTicks deAnnotate deAnnotate'deAnnAlt deAnnBindcollectAnnBndrscollectNAnnBndrs$fOutputableAltCon $fOrdAltCon$fBinaryIsOrphan$fOutputableTaggedBndr $fEqAltCon $fDataAltCon $fEqTickish $fOrdTickish $fDataTickish $fDataExpr $fDataBind$fEqTickishScoping$fEqTickishPlacement$fDataIsOrphan$fEqUnfoldingGuidance LevityInfo TickBoxOpTickBox TickBoxIdCafInfoMayHaveCafRefs NoCafRefsRuleInfoInlinePragInfo ArityInfo arityInforuleInfo unfoldingInfocafInfo oneShotInfoinlinePragInfooccInfostrictnessInfo demandInfo callArityInfo levityInfo RecSelParent RecSelData RecSelPatSyn VanillaIdRecSelId DataConWorkId DataConWrapId ClassOpIdPrimOpIdFCallId TickBoxOpIdCoVarId sel_tycon sel_naughtyisJoinIdDetails_maybe setRuleInfosetInlinePragInfo setOccInfosetUnfoldingInfo setArityInfosetCallArityInfo setCafInfosetOneShotInfo setDemandInfosetStrictnessInfo noCafIdInfo unknownArity ppArityInfo pprStrictness emptyRuleInfoisEmptyRuleInforuleInfoFreeVars ruleInfoRulessetRuleInfoHeadmayHaveCafRefs ppCafInfo zapLamInfo zapDemandInfo zapUsageInfozapUsageEnvInfozapUsedOnceInfozapFragileInfo zapUnfoldingzapTailCallInfozapCallArityInfosetNeverLevPolysetLevityInfoWithTypeisNeverLevPolyIdInfo$fOutputableRecSelParent$fOutputableCafInfo$fOutputableTickBoxOp$fOutputableIdDetails$fOutputableLevityInfo$fEqRecSelParent $fEqCafInfo $fOrdCafInfo$fEqLevityInfoidNameidUniqueidType setIdName setIdUnique setIdType localiseId setIdInfo modifyIdInfomaybeModifyIdInfo mkGlobalIdmkVanillaGlobalmkVanillaGlobalWithInfo mkLocalId mkLocalCoVarmkLocalIdOrCoVarmkLocalIdOrCoVarWithInfomkLocalIdWithInfomkExportedLocalIdmkExportedVanillaId mkSysLocalmkSysLocalOrCoVar mkSysLocalMmkSysLocalOrCoVarM mkUserLocalmkUserLocalOrCoVar mkWorkerIdmkTemplateLocalmkTemplateLocalsmkTemplateLocalsNumrecordSelectorTyConisRecordSelectorisDataConRecordSelectorisPatSynRecordSelectorisNaughtyRecordSelectorisClassOpId_maybe isPrimOpIdisDFunIdisPrimOpId_maybe isFCallIdisFCallId_maybeisDataConWorkIdisDataConWorkId_maybeisDataConId_maybeisJoinIdisJoinId_maybe idDataCon hasNoBinding isImplicitIdidIsFrom isDeadBinderisEvVarisDictId idJoinArityasJoinId zapJoinIdasJoinId_maybeidArity setIdArity idCallAritysetIdCallArity idFunRepArity isBottomingId idStrictnesssetIdStrictnesszapIdStrictness isStrictId idUnfoldingrealIdUnfoldingsetIdUnfolding idDemandInfosetIdDemandInfosetCaseBndrEvaldidSpecialisation idCoreRules idHasRulessetIdSpecialisation idCafInfo setIdCafInfo idOccInfo setIdOccInfo zapIdOccInfoidInlinePragmasetInlinePragmamodifyInlinePragmaidInlineActivationsetInlineActivationidRuleMatchInfo isConLikeId idOneShotInfoidStateHackOneShotInfo isOneShotBndrstateHackOneShot typeOneShotisStateHackTypeisProbablyOneShotLambdasetOneShotLambdaclearOneShotLambdasetIdOneShotInfoupdOneShotInfo zapLamIdInfozapFragileIdInfozapIdDemandInfozapIdUsageInfozapIdUsageEnvInfozapIdUsedOnceInfozapIdTailCallInfozapStableUnfoldingtransferPolyIdInfoisNeverLevPolyId wiredInTyConsmkWiredInTyConNamemkWiredInIdName eqTyConName eqTyCon_RDR heqTyConNamecoercibleTyConName charTyConName intTyConName boolTyConName listTyConNamenilDataConNameconsDataConNamemaybeTyConNamenothingDataConNamejustDataConName wordTyConNameword8TyConNamefloatTyConNamedoubleTyConNameanyTyConanyTyliftedTypeKindTyConName boolTyCon_RDR false_RDRtrue_RDR intTyCon_RDR charTyCon_RDRintDataCon_RDR listTyCon_RDRconsDataCon_RDRtypeNatKindContypeSymbolKindConconstraintKindTyConisBuiltInOcc_maybecTupleTyConNamecTupleTyConNamesisCTupleTyConNamecTupleTyConNameArity_maybecTupleDataConNamecTupleDataConNames tupleTyContupleTyConNamepromotedTupleDataCon tupleDataCon unitTyCon unitTyConKey unitDataCon unitDataConId pairTyConunboxedUnitTyConunboxedUnitDataConsumTyCon sumDataConunboxedSumKindeqTyConeqClass eqDataConheqClass heqDataConcoercibleClasscoercibleDataConliftedTypeKindTyConsumRepDataConTyConliftedRepDataCon liftedRepTyboxingDataCon_maybecharTy charTyCon charDataConstringTyintTyintTyCon intDataConwordTy wordTyCon wordDataConword8Ty word8TyCon word8DataConfloatTy floatTyCon floatDataCondoubleTy doubleTyCon doubleDataConboolTy boolTyCon falseDataCon trueDataConfalseDataConId trueDataConId orderingTyCon ordLTDataCon ordEQDataCon ordGTDataConordLTDataConIdordEQDataConIdordGTDataConIdmkListTy nilDataCon consDataCon maybeTyConnothingDataCon justDataCon mkTupleTymkSumTypromotedTrueDataConpromotedFalseDataConpromotedNothingDataConpromotedJustDataConpromotedLTDataConpromotedEQDataConpromotedGTDataConpromotedConsDataConpromotedNilDataConnsUniqsnsNames OrigNameCachelookupOrigNameCacheextendOrigNameCacheextendNameCache initNameCachePrimCallPrimOpResultInfo ReturnsPrim ReturnsAlg PrimOpVecCatIntVecWordVecFloatVecCharGtOpCharGeOpCharEqOpCharNeOpCharLtOpCharLeOpOrdOpIntAddOpIntSubOpIntMulOpIntMulMayOfloOp IntQuotOpIntRemOp IntQuotRemOpAndIOpOrIOpXorIOpNotIOpIntNegOp IntAddCOp IntSubCOpIntGtOpIntGeOpIntEqOpIntNeOpIntLtOpIntLeOpChrOp Int2WordOp Int2FloatOp Int2DoubleOp Word2FloatOp Word2DoubleOpISllOpISraOpISrlOp Int8Extend Int8Narrow Int8NegOp Int8AddOp Int8SubOp Int8MulOp Int8QuotOp Int8RemOp Int8QuotRemOpInt8EqOpInt8GeOpInt8GtOpInt8LeOpInt8LtOpInt8NeOp Word8Extend Word8Narrow Word8NotOp Word8AddOp Word8SubOp Word8MulOp Word8QuotOp Word8RemOpWord8QuotRemOp Word8EqOp Word8GeOp Word8GtOp Word8LeOp Word8LtOp Word8NeOp Int16Extend Int16Narrow Int16NegOp Int16AddOp Int16SubOp Int16MulOp Int16QuotOp Int16RemOpInt16QuotRemOp Int16EqOp Int16GeOp Int16GtOp Int16LeOp Int16LtOp Int16NeOp Word16Extend Word16Narrow Word16NotOp Word16AddOp Word16SubOp Word16MulOp Word16QuotOp Word16RemOpWord16QuotRemOp Word16EqOp Word16GeOp Word16GtOp Word16LeOp Word16LtOp Word16NeOp WordAddOp WordAddCOp WordSubCOp WordAdd2Op WordSubOp WordMulOp WordMul2Op WordQuotOp WordRemOp WordQuotRemOpWordQuotRem2OpAndOpOrOpXorOpNotOpSllOpSrlOp Word2IntOpWordGtOpWordGeOpWordEqOpWordNeOpWordLtOpWordLeOp PopCnt8Op PopCnt16Op PopCnt32Op PopCnt64OpPopCntOpPdep8OpPdep16OpPdep32OpPdep64OpPdepOpPext8OpPext16OpPext32OpPext64OpPextOpClz8OpClz16OpClz32OpClz64OpClzOpCtz8OpCtz16OpCtz32OpCtz64OpCtzOp BSwap16Op BSwap32Op BSwap64OpBSwapOp Narrow8IntOp Narrow16IntOp Narrow32IntOp Narrow8WordOpNarrow16WordOpNarrow32WordOp DoubleGtOp DoubleGeOp DoubleEqOp DoubleNeOp DoubleLtOp DoubleLeOp DoubleAddOp DoubleSubOp DoubleMulOp DoubleDivOp DoubleNegOp DoubleFabsOp Double2IntOpDouble2FloatOp DoubleExpOp DoubleLogOp DoubleSqrtOp DoubleSinOp DoubleCosOp DoubleTanOp DoubleAsinOp DoubleAcosOp DoubleAtanOp DoubleSinhOp DoubleCoshOp DoubleTanhOp DoubleAsinhOp DoubleAcoshOp DoubleAtanhOp DoublePowerOpDoubleDecode_2IntOpDoubleDecode_Int64Op FloatGtOp FloatGeOp FloatEqOp FloatNeOp FloatLtOp FloatLeOp FloatAddOp FloatSubOp FloatMulOp FloatDivOp FloatNegOp FloatFabsOp Float2IntOp FloatExpOp FloatLogOp FloatSqrtOp FloatSinOp FloatCosOp FloatTanOp FloatAsinOp FloatAcosOp FloatAtanOp FloatSinhOp FloatCoshOp FloatTanhOp FloatAsinhOp FloatAcoshOp FloatAtanhOp FloatPowerOpFloat2DoubleOpFloatDecode_IntOp NewArrayOpSameMutableArrayOp ReadArrayOp WriteArrayOp SizeofArrayOpSizeofMutableArrayOp IndexArrayOpUnsafeFreezeArrayOpUnsafeThawArrayOp CopyArrayOpCopyMutableArrayOp CloneArrayOpCloneMutableArrayOp FreezeArrayOp ThawArrayOp CasArrayOpNewSmallArrayOpSameSmallMutableArrayOpReadSmallArrayOpWriteSmallArrayOpSizeofSmallArrayOpSizeofSmallMutableArrayOpIndexSmallArrayOpUnsafeFreezeSmallArrayOpUnsafeThawSmallArrayOpCopySmallArrayOpCopySmallMutableArrayOpCloneSmallArrayOpCloneSmallMutableArrayOpFreezeSmallArrayOpThawSmallArrayOpCasSmallArrayOpNewByteArrayOp_CharNewPinnedByteArrayOp_Char NewAlignedPinnedByteArrayOp_CharMutableByteArrayIsPinnedOpByteArrayIsPinnedOpByteArrayContents_CharSameMutableByteArrayOpShrinkMutableByteArrayOp_CharResizeMutableByteArrayOp_CharUnsafeFreezeByteArrayOpSizeofByteArrayOpSizeofMutableByteArrayOpGetSizeofMutableByteArrayOpIndexByteArrayOp_CharIndexByteArrayOp_WideCharIndexByteArrayOp_IntIndexByteArrayOp_WordIndexByteArrayOp_AddrIndexByteArrayOp_FloatIndexByteArrayOp_DoubleIndexByteArrayOp_StablePtrIndexByteArrayOp_Int8IndexByteArrayOp_Int16IndexByteArrayOp_Int32IndexByteArrayOp_Int64IndexByteArrayOp_Word8IndexByteArrayOp_Word16IndexByteArrayOp_Word32IndexByteArrayOp_Word64IndexByteArrayOp_Word8AsChar IndexByteArrayOp_Word8AsWideCharIndexByteArrayOp_Word8AsAddrIndexByteArrayOp_Word8AsFloatIndexByteArrayOp_Word8AsDouble!IndexByteArrayOp_Word8AsStablePtrIndexByteArrayOp_Word8AsInt16IndexByteArrayOp_Word8AsInt32IndexByteArrayOp_Word8AsInt64IndexByteArrayOp_Word8AsIntIndexByteArrayOp_Word8AsWord16IndexByteArrayOp_Word8AsWord32IndexByteArrayOp_Word8AsWord64IndexByteArrayOp_Word8AsWordReadByteArrayOp_CharReadByteArrayOp_WideCharReadByteArrayOp_IntReadByteArrayOp_WordReadByteArrayOp_AddrReadByteArrayOp_FloatReadByteArrayOp_DoubleReadByteArrayOp_StablePtrReadByteArrayOp_Int8ReadByteArrayOp_Int16ReadByteArrayOp_Int32ReadByteArrayOp_Int64ReadByteArrayOp_Word8ReadByteArrayOp_Word16ReadByteArrayOp_Word32ReadByteArrayOp_Word64ReadByteArrayOp_Word8AsCharReadByteArrayOp_Word8AsWideCharReadByteArrayOp_Word8AsAddrReadByteArrayOp_Word8AsFloatReadByteArrayOp_Word8AsDouble ReadByteArrayOp_Word8AsStablePtrReadByteArrayOp_Word8AsInt16ReadByteArrayOp_Word8AsInt32ReadByteArrayOp_Word8AsInt64ReadByteArrayOp_Word8AsIntReadByteArrayOp_Word8AsWord16ReadByteArrayOp_Word8AsWord32ReadByteArrayOp_Word8AsWord64ReadByteArrayOp_Word8AsWordWriteByteArrayOp_CharWriteByteArrayOp_WideCharWriteByteArrayOp_IntWriteByteArrayOp_WordWriteByteArrayOp_AddrWriteByteArrayOp_FloatWriteByteArrayOp_DoubleWriteByteArrayOp_StablePtrWriteByteArrayOp_Int8WriteByteArrayOp_Int16WriteByteArrayOp_Int32WriteByteArrayOp_Int64WriteByteArrayOp_Word8WriteByteArrayOp_Word16WriteByteArrayOp_Word32WriteByteArrayOp_Word64WriteByteArrayOp_Word8AsChar WriteByteArrayOp_Word8AsWideCharWriteByteArrayOp_Word8AsAddrWriteByteArrayOp_Word8AsFloatWriteByteArrayOp_Word8AsDouble!WriteByteArrayOp_Word8AsStablePtrWriteByteArrayOp_Word8AsInt16WriteByteArrayOp_Word8AsInt32WriteByteArrayOp_Word8AsInt64WriteByteArrayOp_Word8AsIntWriteByteArrayOp_Word8AsWord16WriteByteArrayOp_Word8AsWord32WriteByteArrayOp_Word8AsWord64WriteByteArrayOp_Word8AsWordCompareByteArraysOpCopyByteArrayOpCopyMutableByteArrayOpCopyByteArrayToAddrOpCopyMutableByteArrayToAddrOpCopyAddrToByteArrayOpSetByteArrayOpAtomicReadByteArrayOp_IntAtomicWriteByteArrayOp_IntCasByteArrayOp_IntFetchAddByteArrayOp_IntFetchSubByteArrayOp_IntFetchAndByteArrayOp_IntFetchNandByteArrayOp_IntFetchOrByteArrayOp_IntFetchXorByteArrayOp_IntNewArrayArrayOpSameMutableArrayArrayOpUnsafeFreezeArrayArrayOpSizeofArrayArrayOpSizeofMutableArrayArrayOpIndexArrayArrayOp_ByteArrayIndexArrayArrayOp_ArrayArrayReadArrayArrayOp_ByteArray!ReadArrayArrayOp_MutableByteArrayReadArrayArrayOp_ArrayArray"ReadArrayArrayOp_MutableArrayArrayWriteArrayArrayOp_ByteArray"WriteArrayArrayOp_MutableByteArrayWriteArrayArrayOp_ArrayArray#WriteArrayArrayOp_MutableArrayArrayCopyArrayArrayOpCopyMutableArrayArrayOp AddrAddOp AddrSubOp AddrRemOp Addr2IntOp Int2AddrOpAddrGtOpAddrGeOpAddrEqOpAddrNeOpAddrLtOpAddrLeOpIndexOffAddrOp_CharIndexOffAddrOp_WideCharIndexOffAddrOp_IntIndexOffAddrOp_WordIndexOffAddrOp_AddrIndexOffAddrOp_FloatIndexOffAddrOp_DoubleIndexOffAddrOp_StablePtrIndexOffAddrOp_Int8IndexOffAddrOp_Int16IndexOffAddrOp_Int32IndexOffAddrOp_Int64IndexOffAddrOp_Word8IndexOffAddrOp_Word16IndexOffAddrOp_Word32IndexOffAddrOp_Word64ReadOffAddrOp_CharReadOffAddrOp_WideCharReadOffAddrOp_IntReadOffAddrOp_WordReadOffAddrOp_AddrReadOffAddrOp_FloatReadOffAddrOp_DoubleReadOffAddrOp_StablePtrReadOffAddrOp_Int8ReadOffAddrOp_Int16ReadOffAddrOp_Int32ReadOffAddrOp_Int64ReadOffAddrOp_Word8ReadOffAddrOp_Word16ReadOffAddrOp_Word32ReadOffAddrOp_Word64WriteOffAddrOp_CharWriteOffAddrOp_WideCharWriteOffAddrOp_IntWriteOffAddrOp_WordWriteOffAddrOp_AddrWriteOffAddrOp_FloatWriteOffAddrOp_DoubleWriteOffAddrOp_StablePtrWriteOffAddrOp_Int8WriteOffAddrOp_Int16WriteOffAddrOp_Int32WriteOffAddrOp_Int64WriteOffAddrOp_Word8WriteOffAddrOp_Word16WriteOffAddrOp_Word32WriteOffAddrOp_Word64 NewMutVarOp ReadMutVarOp WriteMutVarOp SameMutVarOpAtomicModifyMutVar2OpAtomicModifyMutVar_Op CasMutVarOpCatchOpRaiseOp RaiseIOOpMaskAsyncExceptionsOpMaskUninterruptibleOpUnmaskAsyncExceptionsOp MaskStatus AtomicallyOpRetryOp CatchRetryOp CatchSTMOp NewTVarOp ReadTVarOp ReadTVarIOOp WriteTVarOp SameTVarOp NewMVarOp TakeMVarOp TryTakeMVarOp PutMVarOp TryPutMVarOp ReadMVarOp TryReadMVarOp SameMVarOp IsEmptyMVarOpDelayOp WaitReadOp WaitWriteOpForkOpForkOnOp KillThreadOpYieldOp MyThreadIdOp LabelThreadOpIsCurrentThreadBoundOp NoDuplicateOpThreadStatusOpMkWeakOpMkWeakNoFinalizerOpAddCFinalizerToWeakOp DeRefWeakOpFinalizeWeakOpTouchOpMakeStablePtrOpDeRefStablePtrOp EqStablePtrOpMakeStableNameOpEqStableNameOpStableNameToIntOp CompactNewOpCompactResizeOpCompactContainsOpCompactContainsAnyOpCompactGetFirstBlockOpCompactGetNextBlockOpCompactAllocateBlockOpCompactFixupPointersOp CompactAddCompactAddWithSharing CompactSizeReallyUnsafePtrEqualityOpParOpSparkOpSeqOp GetSparkOp NumSparks DataToTagOp TagToEnumOp AddrToAnyOp AnyToAddrOp MkApUpd0_OpNewBCOOpUnpackClosureOpGetApStackValOp GetCCSOfOpGetCurrentCCSOp ClearCCSOp TraceEventOpTraceEventBinaryOp TraceMarkerOpGetThreadAllocationCounterSetThreadAllocationCounterVecBroadcastOp VecPackOp VecUnpackOp VecInsertOpVecAddOpVecSubOpVecMulOpVecDivOp VecQuotOpVecRemOpVecNegOpVecIndexByteArrayOpVecReadByteArrayOpVecWriteByteArrayOpVecIndexOffAddrOpVecReadOffAddrOpVecWriteOffAddrOpVecIndexScalarByteArrayOpVecReadScalarByteArrayOpVecWriteScalarByteArrayOpVecIndexScalarOffAddrOpVecReadScalarOffAddrOpVecWriteScalarOffAddrOpPrefetchByteArrayOp3PrefetchMutableByteArrayOp3PrefetchAddrOp3PrefetchValueOp3PrefetchByteArrayOp2PrefetchMutableByteArrayOp2PrefetchAddrOp2PrefetchValueOp2PrefetchByteArrayOp1PrefetchMutableByteArrayOp1PrefetchAddrOp1PrefetchValueOp1PrefetchByteArrayOp0PrefetchMutableByteArrayOp0PrefetchAddrOp0PrefetchValueOp0 maxPrimOpTag primOpTag allThePrimOps tagToEnumKey primOpFixityprimOpOutOfLineprimOpOkForSpeculationprimOpOkForSideEffects primOpIsCheapprimOpCodeSize primOpType primOpOccprimOpWrapperIdisComparisonPrimOp primOpSiggetPrimOpResultInfo$fOutputablePrimOp $fOrdPrimOp $fEqPrimOp$fOutputablePrimCallHistoryhistoryApStackhistoryBreakInfohistoryEnclosingDeclsResume resumeStmt resumeContextresumeBindingsresumeFinalIds resumeApStackresumeBreakInfo resumeSpan resumeDecl resumeCCS resumeHistoryresumeHistoryIx BreakInfobreakInfo_modulebreakInfo_number ExecResult ExecComplete ExecBreak execResultexecAllocation breakNames breakInfo SingleStepRunToCompletionRunAndLogSteps ExecOptionsexecSingleStepexecSourceFileexecLineNumberexecWrapisStepAmbiguousFieldOcc Unambiguous AmbiguousXAmbiguousFieldOccFieldOcc XFieldOcc extFieldOccrdrNameFieldOcc LFieldOcc LHsTypeArgHsArgHsValArg HsTypeArgHsArgPar HsConDetails PrefixConRecConInfixCon ConDeclField cd_fld_ext cd_fld_names cd_fld_type cd_fld_doc LConDeclField HsTupleSortHsUnboxedTuple HsBoxedTupleHsConstraintTupleHsBoxedOrConstraintTupleHsTyLitHsNumTyHsStrTy NewHsTypeX NHsCoreTyHsType HsForAllTyHsQualTyHsTyVarHsAppTy HsAppKindTyHsFunTyHsListTy HsTupleTyHsSumTyHsOpTyHsParTy HsIParamTyHsStarTy HsKindSig HsSpliceTyHsDocTyHsBangTyHsRecTyHsExplicitListTyHsExplicitTupleTy HsWildCardTyXHsType hst_xforall hst_bndrshst_body hst_xqualhst_ctxt HsTyVarBndr UserTyVar KindedTyVar XTyVarBndrHsIPName LHsSigWcType LHsWcType LHsSigTypeHsWildCardBndrsHsWCXHsWildCardBndrshswc_ext hswc_bodyHsImplicitBndrsHsIBXHsImplicitBndrshsib_ext hsib_bodyHsQTvsRn hsq_implicit hsq_dependent LHsQTyVarsHsQTvs XLHsQTyVarshsq_ext hsq_explicit LHsTyVarBndrLHsKindHsKindLHsType HsContext LHsContext LBangType getBangTypegetBangStrictness noLHsContextmkHsQTvs hsQTvExplicit emptyLHsQTvsisEmptyLHsQTvshsImplicitBody hsSigType hsSigWcType dropWildCardsmkHsImplicitBndrsmkHsWildCardBndrsmkEmptyImplicitBndrsmkEmptyWildCardBndrs hsIPNameFSisHsKindedTyVarhsTvbAllKinded hsWcScopedTvs hsScopedTvs hsTyVarName hsLTyVarNamehsExplicitLTyVarNameshsAllLTyVarNameshsLTyVarLocNamehsLTyVarLocNameshsLTyVarBndrToTypehsLTyVarBndrsToTypes ignoreParens isLHsForAllTymkAnonWildCardTymkHsOpTy mkHsAppTy mkHsAppTys mkHsAppKindTysplitHsFunTypehsTyGetAppHead_maybenumVisibleArgs splitHsAppTyssplitLHsPatSynTysplitLHsSigmaTysplitLHsForAllTysplitLHsQualTysplitLHsInstDeclTygetLHsInstDeclHeadgetLHsInstDeclClass_maybe mkFieldOccmkAmbiguousFieldOccrdrNameAmbiguousFieldOccselectorAmbiguousFieldOccunambiguousFieldOccambiguousFieldOccpprAnonWildCard pprHsForAllpprHsForAllExtrapprHsExplicitForAll pprLHsContextpprConDeclFields pprHsTypehsTypeNeedsParensparenthesizeHsTypeparenthesizeHsContext$fOutputableHsImplicitBndrs$fOutputableHsWildCardBndrs$fOutputableBndrHsIPName$fOutputableHsIPName$fOutputableNewHsTypeX$fOutputableHsTyLit$fOutputableHsConDetails$fOutputableHsArg$fOutputableFieldOcc$fOutputableHsTyVarBndr$fOutputableHsType$fOutputableConDeclField$fOutputableLHsQTyVars!$fOutputableBndrAmbiguousFieldOcc$fOutputableAmbiguousFieldOcc$fDataHsQTvsRn $fEqHsIPName$fDataHsIPName$fDataNewHsTypeX $fDataHsTyLit$fDataHsTupleSort$fDataHsConDetails $fOrdFieldOcc $fEqFieldOcc ModBreaksmodBreaks_flagsmodBreaks_locsmodBreaks_varsmodBreaks_decls modBreaks_ccsmodBreaks_breakInfo CCostCentre BreakIndex CgBreakInfocgb_vars cgb_restyBCONPtr BCONPtrWord BCONPtrLbl BCONPtrItbl BCONPtrStrBCOPtr BCOPtrName BCOPtrPrimOp BCOPtrBCOBCOPtrBreakArray UnlinkedBCOunlinkedBCONameunlinkedBCOArityunlinkedBCOInstrsunlinkedBCOBitmapunlinkedBCOLitsunlinkedBCOPtrsItblPtrItblEnvFFIInfoCompiledByteCodebc_bcosbc_itblsbc_ffisbc_strs bc_breaksseqCompiledByteCodeemptyModBreaks$fNFDataBCONPtr$fOutputableUnlinkedBCO$fNFDataBCOPtr$fNFDataUnlinkedBCO$fOutputableCgBreakInfo$fOutputableCompiledByteCode $fShowFFIInfo$fNFDataFFIInfo $fShowItblPtr$fNFDataItblPtrCScs_tmcs_tycs_cocs_vbcs_jbcoreBindsStats exprStats coreBindsSizeexprSize$fOutputableCoreStatspprCoreBindingspprCoreBindingpprCoreBindingsWithSizepprCoreBindingWithSize pprParendExpr pprCoreExprpprOptCo pprCoreAltpprRules$fOutputableTickish$fOutputableCoreRule$fOutputableUnfolding$fOutputableUnfoldingSource$fOutputableUnfoldingGuidance$fOutputableBndrTaggedBndr$fOutputableBndrVar$fOutputableExpr$fOutputableBind ShowHowMuch ShowHeaderShowSome ShowIfaceAltPprShowSub ss_how_much ss_forall IfaceJoinInfoIfaceNotJoinPointIfaceJoinPoint IfaceLetBndr IfLetBndr IfaceBinding IfaceNonRecIfaceRec IfaceConAlt IfaceDefault IfaceDataAlt IfaceLitAltIfaceAlt IfaceTickish IfaceHpcTickIfaceSCC IfaceSource IfaceExprIfaceLclIfaceExtIfaceCo IfaceTupleIfaceLamIfaceApp IfaceCase IfaceECaseIfaceLet IfaceCastIfaceLit IfaceFCall IfaceTickIfaceIdDetails IfVanillaId IfRecSelIdIfDFunIdIfaceUnfolding IfCoreUnfold IfCompulsory IfInlineRule IfDFunUnfold IfaceInfoItemHsArity HsStrictnessHsInlineHsUnfold HsNoCafRefsHsLevity IfaceIdInfoNoInfoHasInfoIfaceCompleteMatchIfaceAnnTargetIfaceAnnotationifAnnotatedTargetifAnnotatedValue IfaceRule ifRuleName ifActivation ifRuleBndrs ifRuleHead ifRuleArgs ifRuleRhs ifRuleAuto ifRuleOrph IfaceFamInst ifFamInstFam ifFamInstTysifFamInstAxiom ifFamInstOrph IfaceClsInst ifInstCls ifInstTysifDFunifOFlag ifInstOrph IfaceSrcBang IfSrcBang IfaceBangIfNoBangIfStrictIfUnpack IfUnpackCo IfaceEqSpec IfaceConDeclIfCon ifConName ifConWrapper ifConInfix ifConExTCvsifConUserTvBinders ifConEqSpec ifConCtxt ifConArgTys ifConFields ifConStrictsifConSrcStricts IfaceConDeclsIfAbstractTyCon IfDataTyCon IfNewTyCon IfaceAxBranch ifaxbTyVarsifaxbEtaTyVars ifaxbCoVarsifaxbLHS ifaxbRolesifaxbRHS ifaxbIncompsIfaceAT IfaceClassOpIfaceFamTyConFlavIfaceDataFamilyTyConIfaceOpenSynFamilyTyConIfaceClosedSynFamilyTyCon!IfaceAbstractClosedSynFamilyTyConIfaceBuiltInSynFamTyConIfaceTyConParent IfNoParentIfDataInstanceIfaceClassBodyIfAbstractClassIfConcreteClass ifClassCtxtifATsifSigsifMinDef IfaceDeclIfaceId IfaceData IfaceSynonym IfaceFamily IfaceClass IfaceAxiom IfacePatSynifNameifType ifIdDetailsifIdInfo ifBinders ifResKindifCTypeifRolesifCtxtifCons ifGadtSyntaxifParentifSynRhsifResVar ifFamFlavifFamInjifFDsifBodyifTyConifRole ifAxBranches ifPatIsInfix ifPatMatcher ifPatBuilderifPatUnivBndrs ifPatExBndrs ifPatProvCtxt ifPatReqCtxt ifPatArgsifPatTy ifFieldLabels IfaceTopBndrvisibleIfConDeclsifaceDeclImplicitBndrsifaceDeclFingerprints showToHeader showToIface pprIfaceDecl pprIfaceExprfreeNamesIfDeclfreeNamesIfRulefreeNamesIfFamInst$fBinaryIfaceTyConParent$fOutputableIfaceTyConParent$fBinaryIfaceClassOp$fOutputableIfaceClassOp$fHasOccNameIfaceClassOp$fNamedThingIfaceClassOp$fBinaryIfaceAxBranch$fBinaryIfaceFamTyConFlav$fBinaryIfaceBang$fBinaryIfaceSrcBang$fBinaryIfaceConDecl$fHasOccNameIfaceConDecl$fNamedThingIfaceConDecl$fBinaryIfaceConDecls$fBinaryIfaceClsInst$fOutputableIfaceClsInst$fBinaryIfaceFamInst$fOutputableIfaceFamInst$fBinaryIfaceAnnotation$fOutputableIfaceAnnotation$fBinaryIfaceCompleteMatch$fOutputableIfaceCompleteMatch$fBinaryIfaceTickish$fBinaryIfaceConAlt$fOutputableIfaceConAlt$fBinaryIfaceJoinInfo$fOutputableIfaceJoinInfo$fBinaryIfaceLetBndr$fBinaryIfaceBinding$fBinaryIfaceExpr$fBinaryIfaceUnfolding$fBinaryIfaceInfoItem$fBinaryIfaceIdInfo$fOutputableIfaceUnfolding$fOutputableIfaceInfoItem$fOutputableIfaceIdInfo$fOutputableIfaceExpr$fBinaryIfaceIdDetails$fBinaryIfaceAT$fBinaryIfaceDecl$fOutputableIfaceIdDetails$fOutputableIfaceAT$fOutputableIfaceDecl$fHasOccNameIfaceDecl$fNamedThingIfaceDecl$fBinaryIfaceRule$fOutputableIfaceRule$fOutputableShowHowMuch megaSeqIdInfo seqRuleInfoseqRulesseqExprseqExprsseqBinds seqUnfoldingCmEnv LooseTypeMapTypeMaplkDNamedxtDNamed lookupCoreMap extendCoreMap foldCoreMap emptyCoreMap foldTypeMap emptyTypeMap lookupTypeMap extendTypeMaplookupTypeMapWithScopeextendTypeMapWithScopemkDeBruijnContext lookupCME lkDFreeVar xtDFreeVar$fTrieMapTyLitMap $fEqDeBruijn $fEqDeBruijn0 $fEqDeBruijn1 $fEqDeBruijn2 $fEqDeBruijn3$fTrieMapVarMap$fTrieMapTypeMapX$fTrieMapLooseTypeMap$fTrieMapTypeMap$fTrieMapCoercionMapX$fTrieMapCoercionMap$fTrieMapAltMap$fTrieMapCoreMapX$fOutputableCoreMap$fTrieMapCoreMap FamInstMatch fim_instancefim_tysfim_cosInjectivityCheckResultInjectivityAcceptedInjectivityUnified FamInstEnvs FamFlavor SynFamilyInstDataFamilyInstFamInstfi_axiom fi_flavorfi_famfi_tcsfi_tvsfi_cvsfi_tysfi_rhs famInstAxiom famInstRHS famInstTyConfamInstsRepTyConsfamInstRepTyCon_maybedataFamInstRepTyCon pprFamInst pprFamInstsmkImportedFamInstemptyFamInstEnvsemptyFamInstEnvfamInstEnvEltsfamInstEnvSizefamilyInstancesextendFamInstEnvListextendFamInstEnvinjectiveBranches mkCoAxBranchmkBranchedCoAxiommkUnbranchedCoAxiommkSingleCoAxiommkNewTypeCoAxiomlookupFamInstEnvByTyConlookupFamInstEnvlookupFamInstEnvConflicts$lookupFamInstEnvInjectivityConflicts isDominatedByreduceTyFamApp_maybeapartnessChecktopNormaliseTypetopNormaliseType_maybenormaliseTcAppnormaliseTcArgs normaliseType flattenTys$fOutputableFamInst$fNamedThingFamInst$fOutputableFamilyInstEnv$fOutputableFamInstMatch$fApplicativeNormM$fFunctorNormM $fMonadNormMCoreAltWithFVsCoreExprWithFVs'CoreExprWithFVsCoreBindWithFVsFVAnn exprFreeVarsexprFreeVarsDSetexprFreeVarsList exprFreeIdsexprFreeIdsDSetexprFreeIdsListexprsFreeIdsDSetexprsFreeIdsList exprsFreeVarsexprsFreeVarsList bindFreeVarsexprSomeFreeVarsexprSomeFreeVarsListexprsSomeFreeVarsexprsSomeFreeVarsListexpr_fvsexprsOrphNamesorphNamesOfTypeorphNamesOfTypes orphNamesOfCoorphNamesOfCoConorphNamesOfAxiomorphNamesOfFamInstruleRhsFreeVars ruleFreeVarsrulesFreeVarsDSet idRuleRhsVars rulesFreeVarsruleLhsFreeIdsruleLhsFreeIdsList freeVarsOf freeVarsOfAnnvarTypeTyCoVarsvarTypeTyCoFVs idFreeVars dIdFreeVarsidFVsbndrRuleAndUnfoldingVarsDSet idRuleVarsidUnfoldingVarsstableUnfoldingVars freeVarsBindfreeVarsTypeSizeTcLevel UserTypeCtxt FunSigCtxt InfSigCtxt ExprSigCtxt KindSigCtxt TypeAppCtxt ConArgCtxt TySynCtxt PatSynCtxt PatSigCtxt RuleSigCtxt ResSigCtxt ForSigCtxtDefaultDeclCtxt InstDeclCtxt SpecInstCtxt ThBrackCtxt GenSigCtxtGhciCtxt ClassSCCtxt SigmaCtxt DataTyCtxtDerivClauseCtxtTyVarBndrKindCtxt DataKindCtxt TySynKindCtxtTyFamResKindCtxtMetaInfoTauTvTyVarTv FlatMetaTv FlatSkolTvFlexiIndirectSkolemTv RuntimeUnkMetaTvmtv_infomtv_ref mtv_tclvl SyntaxOpTypeSynAnySynRhoSynListSynFunSynType ExpRhoType ExpSigmaType InferResultIRir_uniqir_lvlir_instir_refExpTypeCheckInfer TcDTyCoVarSet TcDTyVarSet TcTyCoVarSet TcTyVarSetTcKind TcTauType TcRhoType TcSigmaType TcThetaType TcPredTypeTcTyCon TcTyVarBinder TcTyCoVarTcCoVarmkCheckExpType synKnownType mkSynFunTys superSkolemTvpprUserTypeCtxt isSigMaybe maxTcLevel topTcLevel isTopTcLevel pushTcLevelstrictlyDeeperThan sameDepthAs tcTyVarLevel tcTypeLevel promoteSkolempromoteSkolemXpromoteSkolemsX tcTyFamInststcTyFamInstsAndVistcTyConAppTyFamInstsAndVis isTyFamFreeexactTyCoVarsOfTypeexactTyCoVarsOfTypesanyRewritableTyVar tcIsTcTyVarisTouchableMetaTyVarisFloatedTouchableMetaTyVarisImmutableTyVarisTyConableTyVar isFmvTyVar isFskTyVarisFlattenTyVar isSkolemTyVarisOverlappableTyVar isMetaTyVarisAmbiguousTyVar isMetaTyVarTy metaTyVarInfometaTyVarTcLevelmetaTyVarTcLevel_maybe metaTyVarRefsetMetaTyVarTcLevel isTyVarTyVarisFlexi isIndirectisRuntimeUnkSkolmkTyVarNamePairsfindDupTyVarTvs mkSigmaTy mkInfSigmaTy mkSpecSigmaTymkPhiTy getDFunTyKey mkNakedAppTys mkNakedAppTy mkNakedCastTy nakedSubstTy tcSplitPiTystcSplitPiTy_maybetcSplitForAllTy_maybetcSplitForAllTystcSplitForAllVarBndrs tcIsForAllTytcSplitPredFunTy_maybe tcSplitPhiTytcSplitSigmaTytcSplitNestedSigmaTystcDeepSplitSigmaTy_maybetcTyConAppTyContcTyConAppTyCon_maybetcTyConAppArgstcSplitTyConApptcRepSplitTyConApp_maybe' tcSplitFunTystcSplitFunTy_maybetcSplitFunTysN tcFunArgTy tcFunResultTytcFunResultTyNtcSplitAppTy_maybe tcSplitAppTy tcSplitAppTystcRepGetNumAppTystcGetCastedTyVar_maybetcGetTyVar_maybe tcGetTyVar tcIsTyVarTy tcSplitDFunTytcSplitDFunHeadtcSplitMethodTytcEqKindtcEqTypetcEqTypeNoKindCheck tcEqTypeVis pickyEqTypeisTyVarClassPredcheckValidClsArgs hasTyVarHead evVarPredpickQuantifiablePreds boxEqPredpickCapturedPredsmkMinimalBySCstransSuperClassesimmSuperClassesisImprovementPredisInsolubleOccursCheck isSigmaTyisRhoTy isRhoExpTyisOverloadedTy isFloatTy isDoubleTy isIntegerTyisIntTyisWordTyisBoolTyisUnitTyisCharTy isFloatingTy isStringTy isCallStackTyisCallStackPred hasIPPred isTyVarHead isRigidTy deNoteTypetcSplitIOType_maybeisFFITyisFFIArgumentTyisFFIExternalTyisFFIImportResultTyisFFIExportResultTy isFFIDynTy isFFILabelTyisFFIPrimArgumentTyisFFIPrimResultTy isFunPtrTysizeType sizeTypestcTyConVisibilitiesisNextTyConArgVisibleisNextArgVisible$fOutputableMetaDetails$fOutputableMetaInfo$fOutputableTcLevel$fOutputableTcTyVarDetails$fOutputableInferResult$fOutputableExpType $fEqTcLevel $fOrdTcLevelClsInstLookupResult InstMatch DFunInstTypeVisibleOrphanModulesInstEnvs ie_globalie_local ie_visibleClsInst is_cls_nmis_tcs is_dfun_nameis_tvsis_clsis_tysis_dfunis_flag is_orphanfuzzyClsInstCmpisOverlappable isOverlapping isIncoherentinstanceDFunIdupdateClsInstDFuninstanceRoughTcs pprInstancepprInstanceHdr pprInstances instanceHeadorphNamesOfClsInst instanceSigmkLocalInstancemkImportedInstance emptyInstEnv instEnvElts instIsVisibleclassInstances memberInstEnvextendInstEnvList extendInstEnvdeleteFromInstEnvdeleteDFunFromInstEnvidenticalClsInstHeadlookupUniqueInstEnv lookupInstEnvinstanceBindFun$fOutputableClsInst$fNamedThingClsInst$fOutputableClsInstEnv $fDataClsInst optCoercion checkAxInstCo EvCallStack EvCsEmpty EvCsPushCall EvTypeableEvTypeableTyConEvTypeableTyAppEvTypeableTrFunEvTypeableTyLitEvExprEvTermEvFunet_tvset_givenet_bindset_bodyEvBindeb_lhseb_rhs eb_is_given EvBindMapev_bind_varenv EvBindsVar CoEvBindsVarebv_uniq ebv_bindsebv_tcvs TcEvBindsEvBinds HsWrapperWpHole WpComposeWpFunWpCastWpEvLamWpEvAppWpTyLamWpTyAppWpLet TcCoercionP TcCoercionR TcCoercionN TcCoercion mkTcReflCo mkTcSymCo mkTcTransCo mkTcNomReflCo mkTcRepReflComkTcTyConAppCo mkTcAppCo mkTcFunCo mkTcAxInstComkTcUnbranchedAxInstCo mkTcForAllCo mkTcForAllCos mkTcNthComkTcLRCo mkTcSubCo maybeTcSubCotcDowngradeRolemkTcAxiomRuleComkTcGReflRightComkTcGReflLeftComkTcCoherenceLeftComkTcCoherenceRightCo mkTcPhantomCo mkTcKindCo mkTcCoVarCotcCoercionKindtcCoercionRole coVarsOfTcCo isTcReflCoisTcReflexiveCo<.>mkWpFunmkWpFuns mkWpCastR mkWpCastN mkWpTyApps mkWpEvApps mkWpEvVarApps mkWpTyLamsmkWpLamsmkWpLet idHsWrapper isIdHsWrappercollectHsWrapBindersisCoEvBindsVaremptyEvBindMap extendEvBindsisEmptyEvBindMap lookupEvBindevBindMapBinds foldEvBindMapfilterEvBindMap evBindVarmkWantedEvBind mkGivenEvBindevId evCoercionevCast evDFunApp evDataConApp evSelector evTypeablemkEvCastmkEvScSelectorsemptyTcEvBindsisEmptyTcEvBindsevTermCoercion_maybeevTermCoercionfindNeededEvVars evVarsOfTerm pprHsWrapperunwrapIPwrapIP$fOutputableEvTypeable$fOutputableEvTerm$fOutputableEvBind$fUniquableEvBindsVar$fOutputableEvBindsVar$fOutputableTcEvBinds$fOutputableEvBindMap$fDataTcEvBinds$fOutputableHsWrapper$fDataHsWrapper$fOutputableEvCallStack$fDataEvTypeable $fDataEvTerm$fDataEvCallStack HsPatSynDirUnidirectionalImplicitBidirectionalExplicitBidirectionalRecordPatSynFieldrecordPatSynSelectorIdrecordPatSynPatVarHsPatSynDetails TcSpecPragSpecPrag LTcSpecPrag TcSpecPragsIsDefaultMethod SpecPrags FixitySig LFixitySigSigTypeSig PatSynSig ClassOpSigIdSigFixSig InlineSigSpecSig SpecInstSig MinimalSig SCCFunSigCompleteMatchSigXSigLSigIPBindXIPBindLIPBind HsIPBindsIPBinds PatSynBindPSBpsb_extpsb_idpsb_argspsb_defpsb_dirABExportABE XABExportabe_extabe_polyabe_monoabe_wrap abe_prags NPatBindTcpat_fvs pat_rhs_tyHsBindLRFunBindPatBindVarBindAbsBinds XHsBindsLRfun_extfun_id fun_matches fun_co_fnfun_tickpat_extpat_lhspat_rhs pat_ticksvar_extvar_idvar_rhs var_inlineabs_extabs_tvs abs_ev_vars abs_exports abs_ev_binds abs_bindsabs_sig LHsBindLR LHsBindsLRHsBindLHsBindsLHsBind NHsValBindsLR NValBinds HsValBindsLRValBinds XValBindsLR HsValBindsLHsLocalBindsLRHsLocalBindsLREmptyLocalBindsXHsLocalBindsLR LHsLocalBinds HsLocalBinds pprLHsBindspprLHsBindsForUser pprDeclListemptyLocalBindsisEmptyLocalBindsTcisEmptyLocalBindsPReqEmptyLocalBindsisEmptyValBindsemptyValBindsInemptyValBindsOut emptyLHsBindsisEmptyLHsBindsplusHsValBinds ppr_monobindpprTicksisEmptyIPBindsPRisEmptyIPBindsTc noSpecPrags hasSpecPragsisDefaultMethod isFixityLSig isTypeLSig isSpecLSigisSpecInstLSig isPragLSig isInlineLSig isMinimalLSig isSCCFunSigisCompleteMatchSighsSigDoc pragBracketspragSrcBrackets pprVarSigpprSpecpprTcSpecPrags pprMinimalSig$fOutputableIPBind$fOutputableHsIPBinds$fOutputableFixitySig$fOutputableSig$fOutputableTcSpecPrag$fOutputableABExport$fTraversableRecordPatSynField$fFoldableRecordPatSynField$fOutputableRecordPatSynField$fFunctorRecordPatSynField$fOutputablePatSynBind$fOutputableHsBindLR$fOutputableHsValBindsLR$fOutputableHsLocalBindsLR$fDataNPatBindTc$fDataTcSpecPrag$fDataTcSpecPrags$fDataRecordPatSynField HsRecField' HsRecField hsRecFieldLbl hsRecFieldArghsRecPun HsRecUpdFieldLHsRecUpdField LHsRecField LHsRecField' HsRecFieldsrec_flds rec_dotdotHsConPatDetails ListPatTcWildPatVarPatLazyPatAsPatParPatBangPatListPatTuplePatSumPatConPatIn ConPatOutViewPat SplicePatLitPatNPat NPlusKPatSigPatCoPatXPatpat_con pat_arg_tyspat_tvs pat_dicts pat_bindspat_argspat_wrapOutPatInPat hsConPatArgs hsRecFieldshsRecFieldsArgs hsRecFieldSel hsRecFieldIdhsRecUpdFieldRdrhsRecUpdFieldIdhsRecUpdFieldOcc pprParendLPat pprConArgsmkPrefixConPatmkNilPat mkCharLitPat isBangedLPatlooksLazyPatBindisIrrefutableHsPatpatNeedsParensparenthesizePatcollectEvVarsPatscollectEvVarsPat$fOutputableHsRecField'$fOutputableHsRecFields$fOutputablePat$fHasSrcSpanPat$fDataHsRecField'$fFunctorHsRecField'$fFoldableHsRecField'$fTraversableHsRecField'$fFunctorHsRecFields$fFoldableHsRecFields$fTraversableHsRecFields RoleAnnotDeclXRoleAnnotDeclLRoleAnnotDecl AnnProvenanceValueAnnProvenanceTypeAnnProvenanceModuleAnnProvenance HsAnnotationXAnnDeclLAnnDeclWarnDeclWarning XWarnDecl LWarnDecl WarnDeclsWarnings XWarnDeclswd_extwd_src wd_warnings LWarnDeclsDocDeclDocCommentNextDocCommentPrevDocCommentNamedDocGroupLDocDecl RuleBndrSig XRuleBndr LRuleBndrHsRuleRnRuleDeclHsRule XRuleDeclrd_extrd_namerd_actrd_tyvsrd_tmvsrd_lhsrd_rhs LRuleDecl RuleDeclsHsRules XRuleDeclsrds_extrds_src rds_rules LRuleDecls ForeignExportCExport CImportSpecCLabel CFunctionCWrapper ForeignImportCImport ForeignDecl XForeignDeclfd_i_extfd_name fd_sig_tyfd_fifd_e_extfd_fe LForeignDecl DefaultDecl XDefaultDecl LDefaultDeclLDerivStrategy DerivDecl XDerivDecl deriv_ext deriv_typederiv_strategyderiv_overlap_mode LDerivDeclInstDeclClsInstD DataFamInstD TyFamInstD XInstDecl cid_d_extcid_instdfid_ext dfid_insttfid_ext tfid_inst LInstDecl ClsInstDecl XClsInstDeclcid_ext cid_poly_ty cid_bindscid_sigscid_tyfam_instscid_datafam_instscid_overlap_mode LClsInstDeclFamEqnXFamEqnfeqn_ext feqn_tycon feqn_bndrs feqn_pats feqn_fixityfeqn_rhs FamInstEqn LFamInstEqnDataFamInstDecldfid_eqnLDataFamInstDecl TyFamInstDecltfid_eqnLTyFamInstDecl TyFamDefltEqn TyFamInstEqnHsTyPatsLTyFamDefltEqn LTyFamInstEqnHsConDeclDetailsConDecl ConDeclGADT ConDeclH98XConDecl con_g_ext con_names con_forall con_qvars con_mb_cxtcon_args con_res_tycon_doccon_extcon_name con_ex_tvsLConDecl NewOrDataNewTypeDataTypeHsDerivingClauseXHsDerivingClausederiv_clause_extderiv_clause_strategyderiv_clause_tysLHsDerivingClause HsDeriving HsDataDefn XHsDataDefndd_extdd_NDdd_ctxtdd_cType dd_kindSigdd_cons dd_derivs FamilyInfo DataFamilyOpenTypeFamilyClosedTypeFamilyLInjectivityAnn FamilyDecl XFamilyDeclfdExtfdInfofdLNamefdTyVarsfdFixity fdResultSigfdInjectivityAnn LFamilyDeclXFamilyResultSigLFamilyResultSig TyClGroup XTyClGroup group_ext group_tyclds group_roles group_instds DataDeclRn tcdDataCusktcdFVs LHsFunDepTyClDeclFamDeclSynDeclDataDecl ClassDecl XTyClDecltcdFExttcdFamtcdSExttcdLName tcdTyVars tcdFixitytcdRhstcdDExt tcdDataDefntcdCExttcdCtxttcdFDstcdSigstcdMethstcdATs tcdATDefstcdDocs LTyClDecl SpliceDecl LSpliceDeclHsGroupXHsGrouphs_exths_valds hs_splcds hs_tyclds hs_derivdshs_fixdshs_defdshs_fords hs_warndshs_annds hs_ruledshs_docsHsDeclTyClDInstDDerivDDefDForDWarningDAnnDRuleDSpliceDDocDXHsDeclLHsDecl emptyRdrGroup emptyRnGrouphsGroupInstDecls appendGroups isDataDecl isSynDecl isClassDecl isFamilyDeclisTypeFamilyDeclisOpenTypeFamilyInfoisClosedTypeFamilyInfoisDataFamilyDecltyFamInstDeclNametyFamInstDeclLName tyClDeclLNametcdNametyClDeclTyVarscountTyClDecls hsDeclHasCuskpprTyClDeclFlavouremptyTyClGrouptyClGroupTyClDeclstyClGroupInstDeclstyClGroupRoleDecls mkTyClGroupfamDeclHasCuskresultVariableNamenewOrDataToFlavour getConNames getConArgshsConDeclArgTyshsConDeclThetapprDataFamInstFlavourpprHsFamInstLHSinstDeclDataFamInstsderivStrategyNameflattenRuleDeclscollectRuleBndrSigTyspprFullRuleName docDeclDocannProvenanceName_mayberoleAnnotDeclName$fOutputableSpliceDecl$fOutputableNewOrData$fOutputableConDecl$fOutputableTyFamInstDecl$fOutputableFamilyInfo$fOutputableFamilyDecl$fOutputableDerivStrategy$fOutputableDerivDecl$fOutputableHsDerivingClause$fOutputableHsDataDefn$fOutputableDataFamInstDecl$fOutputableClsInstDecl$fOutputableInstDecl$fOutputableDefaultDecl$fOutputableForeignImport$fOutputableForeignExport$fOutputableForeignDecl$fOutputableRuleBndr$fOutputableRuleDecl$fOutputableRuleDecls$fOutputableDocDecl$fOutputableTyClDecl$fOutputableWarnDecl$fOutputableWarnDecls$fOutputableAnnDecl$fOutputableRoleAnnotDecl$fOutputableTyClGroup$fOutputableHsGroup$fOutputableHsDecl$fDataDataDeclRn $fEqNewOrData$fDataNewOrData$fDataCImportSpec$fDataForeignImport$fDataForeignExport$fDataHsRuleRn $fDataDocDecl$fDataAnnProvenance$fTraversableAnnProvenance$fFoldableAnnProvenance$fFunctorAnnProvenance HsStmtContextListComp MonadCompDoExprMDoExpr ArrowExpr GhciStmtCtxtPatGuard ParStmtCtxt TransStmtCtxtHsMatchContextFunRhs LambdaExprCaseAltIfAltProcExpr PatBindRhs PatBindGuardsRecUpdStmtCtxt ThPatSplice ThPatQuotemc_fun mc_fixity mc_strictness ArithSeqInfoFromFromThenFromTo FromThenTo HsBracketExpBrPatBrDecBrLDecBrGTypBrVarBrTExpBrPendingTcSpliceUntypedSpliceFlavourUntypedExpSpliceUntypedPatSpliceUntypedTypeSpliceUntypedDeclSplicePendingRnSpliceSplicePointNameHsSplicedThing HsSplicedExpr HsSplicedTy HsSplicedPat DelayedSpliceThModFinalizersSpliceDecoration HasParens HasDollarNoParens HsTypedSpliceHsUntypedSplice HsQuasiQuote HsSpliced HsSplicedTXSpliceApplicativeArgApplicativeArgOneApplicativeArgManyXApplicativeArg ParStmtBlock TransFormThenForm GroupForm RecStmtTc recS_bind_tyrecS_later_rets recS_rec_rets recS_ret_tyStmtLRLastStmtBindStmtApplicativeStmtBodyStmtLetStmtParStmt TransStmtRecStmtXStmtLRtrS_exttrS_form trS_stmts trS_bndrs trS_usingtrS_bytrS_rettrS_bindtrS_fmaprecS_ext recS_stmtsrecS_later_ids recS_rec_ids recS_bind_fn recS_ret_fn recS_mfix_fnGhciStmt GhciLStmt GuardStmt GuardLStmtExprStmt ExprLStmtCmdStmtCmdLStmtLStmtLRLStmtGRHSXGRHSLGRHSXGRHSsgrhssExt grhssGRHSsgrhssLocalBindsXMatchm_extm_ctxtm_patsm_grhssLMatch MatchGroupTc mg_arg_tys mg_res_tyMG XMatchGroupmg_extmg_alts mg_origin HsRecordBindsCmdTopTcHsCmdTop LHsCmdTop HsArrAppTypeHsHigherOrderAppHsFirstOrderApp HsCmdArrApp HsCmdArrFormHsCmdAppHsCmdLamHsCmdPar HsCmdCaseHsCmdIfHsCmdLetHsCmdDo HsCmdWrapXCmdLHsCmdHsTupArgPresentMissingXTupArg LHsTupArg RecordUpdTc rupd_cons rupd_in_tys rupd_out_tys rupd_wrap RecordConTc rcon_con_like rcon_con_exprHsVar HsUnboundVar HsConLikeOutHsRecFld HsOverLabelHsIPVarHsLam HsLamCaseHsApp HsAppTypeOpAppNegAppHsParSectionLSectionR ExplicitTuple ExplicitSumHsCaseHsIf HsMultiIfHsLetHsDo ExplicitList RecordCon RecordUpd ExprWithTySigArithSeqHsSCC HsCoreAnnHsRnBracketOutHsTcBracketOut HsSpliceEHsProcHsStaticHsArrApp HsArrFormHsTick HsBinTick HsTickPragmaEWildPatEAsPatEViewPatELazyPatHsWrapXExprrcon_ext rcon_con_name rcon_fldsrupd_ext rupd_expr rupd_flds UnboundVar OutOfScope TrueExprHoleCmdSyntaxTablesyn_expr syn_arg_wraps syn_res_wrap PostTcTable PostTcExprnoExpr noSyntaxExpr mkSyntaxExprmkRnSyntaxExpr unboundVarOcc tupArgPresent isQuietHsExprpprBinds ppr_lexprppr_exprppr_appspprExternalSrcLocpprDebugParendExprpprParendLExprhsExprNeedsParensparenthesizeHsExprisAtomicHsExprpprLCmdpprCmd isQuietHsCmdppr_lcmdppr_cmd pprCmdArg isInfixMatchisEmptyMatchGroupisSingletonMatchGroupmatchGroupArity hsLMatchPats pprMatchespprMatchpprGRHSspprGRHSpp_rhspprStmtpprTransformStmt pprTransStmtpprBypprDo ppr_do_stmtspprComppprQuals isTypedSplicepprPendingSpliceppr_splice_decl ppr_quasi ppr_spliceisTypedBracket pprHsBracket thBrackets thTyBrackets pp_dotdot isPatSynCtxtisComprehensionContextisMonadFailStmtContextisMonadCompContextmatchSeparatorpprMatchContextpprMatchContextNounpprAStmtContextpprStmtContextmatchContextErrStringpprMatchInCtxt pprStmtInCtxt$fOutputableUnboundVar$fOutputableSpliceDecoration$fDataThModFinalizers$fOutputableHsStmtContext$fOutputableHsMatchContext$fOutputableArithSeqInfo$fOutputablePendingTcSplice$fOutputablePendingRnSplice$fOutputableHsBracket$fOutputableHsSplice$fOutputableHsSplicedThing$fDataDelayedSplice$fOutputableStmtLR$fOutputableParStmtBlock$fOutputableMatch$fOutputableHsCmdTop$fOutputableHsCmd$fOutputableHsExpr$fOutputableSyntaxExpr$fDataUnboundVar$fDataRecordUpdTc$fDataHsArrAppType$fDataMatchGroupTc$fDataTransForm$fDataSpliceDecoration$fEqSpliceDecoration$fShowSpliceDecoration$fDataUntypedSpliceFlavour$fFunctorHsStmtContext$fFunctorHsMatchContext$fDataHsStmtContext$fDataHsMatchContextmkHsPar mkSimpleMatchunguardedGRHSs unguardedRHS mkMatchGroupmkHsApp mkHsAppType mkHsAppTypesmkHsLammkHsLams mkHsCaseAlt nlHsTyApp nlHsTyAppsmkLHsParmkParPatnlParPat mkHsIntegralmkHsFractional mkHsIsStringmkHsDomkHsCompmkHsIfmkNPat mkNPlusKPatemptyTransStmtmkTransformStmtmkTransformByStmtmkGroupUsingStmtmkGroupByUsingStmt mkLastStmt mkBodyStmt mkBindStmt mkTcBindStmt unitRecStmtTc emptyRecStmtemptyRecStmtNameemptyRecStmtId mkRecStmt mkHsOpAppmkUntypedSplice mkHsSpliceE mkHsSpliceTE mkHsSpliceTymkHsQuasiQuoteunqualQuasiQuote mkHsStringmkHsStringPrimLituserHsLTyVarBndrsuserHsTyVarBndrsnlHsVar nlHsDataConnlHsLit nlHsIntLitnlVarPatnlLitPatnlHsAppnlHsSyntaxAppsnlHsApps nlHsVarApps nlConVarPatnlConVarPatName nlInfixConPatnlConPat nlConPatNamenlNullaryConPat nlWildConPat nlWildPat nlWildPatNamenlHsDo nlHsOpAppnlHsLamnlHsParnlHsIfnlHsCasenlList nlHsAppTy nlHsTyVar nlHsFunTy nlHsParTy nlHsTyConApp nlHsAppKindTymkLHsTupleExpr mkLHsVarTuple nlTuplePat missingTupArgmkBigLHsVarTup mkBigLHsTupmkBigLHsVarPatTupmkBigLHsPatTup mkChunkifiedchunkify mkLHsSigTypemkLHsSigWcType mkHsSigEnv mkClassOpSigs typeToLHsType mkLHsWrapmkHsWrap mkHsWrapCo mkHsWrapCoR mkLHsWrapCo mkHsCmdWrap mkLHsCmdWrap mkHsWrapPat mkHsWrapPatCo mkHsDictLet mkFunBind mkTopFunBind mkHsVarBind mkVarBind mkPatSynBindisInfixFunBindmk_easy_FunBindmkPrefixFunRhsmkMatchisUnliftedHsBindisBangedHsBindcollectLocalBinderscollectHsIdBinderscollectHsValBinderscollectHsBindBinderscollectHsBindsBinderscollectHsBindListBinderscollectMethodBinderscollectLStmtsBinderscollectStmtsBinderscollectLStmtBinderscollectStmtBinderscollectPatBinderscollectPatsBindershsGroupBindershsTyClForeignBindershsLTyClDeclBindershsForeignDeclsBindershsPatSynSelectorsgetPatSynBindshsDataFamInstBinderslStmtsImplicitshsValBindsImplicits lPatImplicits$fEqIE$fEqIE0$fEqIE1$fDataIE $fDataIE0 $fDataIE1$fDataImportDecl$fDataImportDecl0$fDataImportDecl1$fDataAmbiguousFieldOcc$fDataAmbiguousFieldOcc0$fDataAmbiguousFieldOcc1$fDataFieldOcc$fDataFieldOcc0$fDataFieldOcc1$fDataConDeclField$fDataConDeclField0$fDataConDeclField1 $fDataHsArg $fDataHsArg0 $fDataHsArg1 $fDataHsType $fDataHsType0 $fDataHsType1$fDataHsTyVarBndr$fDataHsTyVarBndr0$fDataHsTyVarBndr1$fDataHsWildCardBndrs$fDataHsWildCardBndrs0$fDataHsWildCardBndrs1$fDataHsImplicitBndrs$fDataHsImplicitBndrs0$fDataHsImplicitBndrs1$fDataLHsQTyVars$fDataLHsQTyVars0$fDataLHsQTyVars1$fDataHsRecFields$fDataHsRecFields0$fDataHsRecFields1$fDataListPatTc $fDataPat0 $fDataPat1$fDataHsOverLit$fDataHsOverLit0$fDataHsOverLit1 $fDataHsLit $fDataHsLit0 $fDataHsLit1$fDataPendingTcSplice$fDataPendingRnSplice$fDataCmdTopTc$fDataRecordConTc$fDataArithSeqInfo$fDataArithSeqInfo0$fDataArithSeqInfo1$fDataHsBracket$fDataHsBracket0$fDataHsBracket1$fDataHsSplicedThing$fDataHsSplicedThing0$fDataHsSplicedThing1$fDataHsSplice$fDataHsSplice0$fDataHsSplice1$fDataApplicativeArg$fDataApplicativeArg0$fDataApplicativeArg1$fDataParStmtBlock$fDataParStmtBlock0$fDataParStmtBlock1$fDataParStmtBlock2$fDataRecStmtTc $fDataStmtLR $fDataStmtLR0 $fDataStmtLR1 $fDataStmtLR2 $fDataGRHS $fDataGRHS0 $fDataGRHS1 $fDataGRHSs $fDataGRHSs0 $fDataGRHSs1 $fDataMatch0 $fDataMatch1$fDataMatchGroup$fDataMatchGroup0$fDataMatchGroup1$fDataHsCmdTop$fDataHsCmdTop0$fDataHsCmdTop1 $fDataHsCmd $fDataHsCmd0 $fDataHsCmd1$fDataHsTupArg$fDataHsTupArg0$fDataHsTupArg1 $fDataHsExpr $fDataHsExpr0 $fDataHsExpr1$fDataSyntaxExpr$fDataSyntaxExpr0$fDataSyntaxExpr1$fDataRoleAnnotDecl$fDataRoleAnnotDecl0$fDataRoleAnnotDecl1 $fDataAnnDecl$fDataAnnDecl0$fDataAnnDecl1$fDataWarnDecl$fDataWarnDecl0$fDataWarnDecl1$fDataWarnDecls$fDataWarnDecls0$fDataWarnDecls1$fDataRuleBndr0$fDataRuleBndr1$fDataRuleDecl$fDataRuleDecl0$fDataRuleDecl1$fDataRuleDecls$fDataRuleDecls0$fDataRuleDecls1$fDataForeignDecl$fDataForeignDecl0$fDataForeignDecl1$fDataDefaultDecl$fDataDefaultDecl0$fDataDefaultDecl1$fDataDerivStrategy0$fDataDerivStrategy1$fDataDerivDecl$fDataDerivDecl0$fDataDerivDecl1$fDataInstDecl$fDataInstDecl0$fDataInstDecl1$fDataClsInstDecl$fDataClsInstDecl0$fDataClsInstDecl1 $fDataFamEqn $fDataFamEqn0 $fDataFamEqn1$fDataDataFamInstDecl$fDataDataFamInstDecl0$fDataDataFamInstDecl1$fDataTyFamInstDecl$fDataTyFamInstDecl0$fDataTyFamInstDecl1 $fDataConDecl$fDataConDecl0$fDataConDecl1$fDataHsDerivingClause$fDataHsDerivingClause0$fDataHsDerivingClause1$fDataHsDataDefn$fDataHsDataDefn0$fDataHsDataDefn1$fDataFamilyInfo$fDataFamilyInfo0$fDataFamilyInfo1$fDataInjectivityAnn0$fDataInjectivityAnn1$fDataFamilyDecl$fDataFamilyDecl0$fDataFamilyDecl1$fDataFamilyResultSig0$fDataFamilyResultSig1$fDataTyClGroup$fDataTyClGroup0$fDataTyClGroup1$fDataTyClDecl$fDataTyClDecl0$fDataTyClDecl1$fDataSpliceDecl$fDataSpliceDecl0$fDataSpliceDecl1 $fDataHsGroup$fDataHsGroup0$fDataHsGroup1 $fDataHsDecl $fDataHsDecl0 $fDataHsDecl1$fDataHsPatSynDir$fDataHsPatSynDir0$fDataHsPatSynDir1$fDataFixitySig$fDataFixitySig0$fDataFixitySig1 $fDataSig $fDataSig0 $fDataSig1 $fDataIPBind $fDataIPBind0 $fDataIPBind1$fDataHsIPBinds$fDataHsIPBinds0$fDataHsIPBinds1$fDataPatSynBind$fDataPatSynBind0$fDataPatSynBind1$fDataPatSynBind2$fDataABExport$fDataABExport0$fDataABExport1$fDataHsBindLR$fDataHsBindLR0$fDataHsBindLR1$fDataHsBindLR2$fDataNHsValBindsLR$fDataNHsValBindsLR0$fDataNHsValBindsLR1$fDataHsValBindsLR$fDataHsValBindsLR0$fDataHsValBindsLR1$fDataHsValBindsLR2$fDataHsLocalBindsLR$fDataHsLocalBindsLR0$fDataHsLocalBindsLR1$fDataHsLocalBindsLR2HsModule hsmodName hsmodExports hsmodImports hsmodDeclshsmodDeprecMessagehsmodHaddockModHeader$fOutputableHsModule$fDataHsModule$fDataHsModule0$fDataHsModule1 SumOrTupleSumTuple ImpExpQcSpec ImpExpQcName ImpExpQcTypeImpExpQcWildcard ImpExpSubSpec ImpExpAbs ImpExpAll ImpExpList ImpExpAllWithTyElTyElOprTyElOpd TyElKindApp TyElTildeTyElBangTyElUnpackedness TyElDocPrev RuleTyTmVar LRuleTyTmVarmkTyClDmkInstD mkClassDecl mkATDefaultmkTyData mkTySynonymmkTyFamInstEqn mkDataFamInst mkTyFamInst mkFamDecl mkSpliceDeclmkRoleAnnotDecl cvTopDecls cvBindGroupcvBindsAndSigsmkPatSynMatchGroup mkConDeclH98 mkGadtDeclsetRdrNameSpace filterCTuple mkRuleBndrsmkRuleTyVarBndrscheckRuleTyVarBndrNamescheckRecordSyntaxcheckEmptyGADTscheckBlockArguments checkContext checkPattern checkPatternsplaceHolderPunRhsbang_RDR isBangRdr checkValDefcheckValSigLhscheckDoAndIfThenElsemergeOps mergeDataConcheckMonadComp checkCommand checkPrecPmkRecConstrOrUpdatemkRdrRecordUpdmkRdrRecordConmkInlinePragmamkImport parseCImportmkExport mkExtNamemkModuleImpExp mkTypeImpExpcheckImportSpecmkImpExpSubSpecwarnStarIsType failOpFewArgsparseErrorSDoc hintBangPat mkSumOrTuplestarSym forallSym$fOutputableTyEl ComplexEqSimpleEqPmLitPmSLitPmOLit PmExprVar PmExprCon PmExprLitPmExprEq PmExprOthereqPmLit toComplex truePmExpr falsePmExprisNotPmExprOther isTruePmExpr isFalsePmExprsubstComplexEqlhsExprToPmExprhsExprToPmExpr filterComplex runPmPprMpprPmExprWithParens$fOutputablePmLit$fOutputablePmExprCompleteMatchMap CompleteMatchcompleteMatchConLikescompleteMatchTyConUnlinkedDotODotADotDLLBCOsLinkableLM linkableTimelinkableModulelinkableUnlinkedHsParsedModule hpm_module hpm_src_fileshpm_annotationsIfaceTrustInfo IsSafeImport AnyHpcUsageHpcInfo NoHpcInfohpcInfoTickCount hpcInfoHashhpcUsedSourceModifiedSourceUnmodifiedSourceUnmodifiedAndStable ModSummaryms_mod ms_hsc_src ms_location ms_hs_date ms_obj_date ms_iface_date ms_hie_date ms_srcimpsms_textual_imps ms_parsed_mod ms_hspp_file ms_hspp_opts ms_hspp_buf ModuleGraphEpsStats n_ifaces_in n_decls_in n_decls_out n_rules_in n_rules_out n_insts_in n_insts_outExternalPackageStateEPS eps_is_booteps_PITeps_free_holeseps_PTE eps_inst_enveps_fam_inst_env eps_rule_base eps_ann_enveps_complete_matcheseps_mod_fam_inst_env eps_statsPackageCompleteMatchMapPackageFamInstEnvPackageInstEnvPackageRuleBasePackageTypeEnvUsageUsagePackageModuleUsageHomeModule UsageFileUsageMergedRequirementusg_mod usg_mod_hashusg_safe usg_mod_name usg_entities usg_exports usg_file_path usg_file_hash DependenciesDepsdep_modsdep_pkgs dep_orphs dep_finsts dep_plginsIsBootInterfaceWhetherHasOrphansFixItem FixityEnv NoWarningsWarnAllWarnSome MonadThings lookupThinglookupId lookupDataCon lookupTyConTypeEnvInteractiveImportIIDeclIIModuleInteractiveContext ic_dflags ic_mod_index ic_imports ic_tythings ic_rn_gbl_env ic_instances ic_fix_env ic_default ic_resumeic_monad ic_int_printic_cwdSptEntry ForeignStubsNoStubsCgGuts cg_module cg_tyconscg_binds cg_foreigncg_foreign_files cg_dep_pkgs cg_hpc_info cg_modBreakscg_spt_entriesModGuts mg_module mg_hsc_srcmg_loc mg_exportsmg_deps mg_usages mg_used_th mg_rdr_env mg_fix_envmg_tcsmg_insts mg_fam_insts mg_patsynsmg_rulesmg_binds mg_foreignmg_foreign_filesmg_warnsmg_annsmg_complete_sigs mg_hpc_info mg_modBreaks mg_inst_envmg_fam_inst_envmg_safe_haskell mg_trust_pkg mg_doc_hdr mg_decl_docs mg_arg_docsImportedModsValimv_nameimv_span imv_is_safe imv_is_hidingimv_all_exports imv_qualified ImportedByImportedByUserImportedBySystem ImportedMods ModDetails md_exportsmd_typesmd_insts md_fam_instsmd_rulesmd_annsmd_complete_sigs IfaceExportModIface mi_module mi_sig_of mi_iface_hash mi_mod_hash mi_flag_hash mi_opt_hash mi_hpc_hashmi_plugin_hash mi_orphan mi_finsts mi_hsc_srcmi_deps mi_usages mi_exports mi_exp_hash mi_used_th mi_fixitiesmi_warnsmi_annsmi_decls mi_globalsmi_insts mi_fam_instsmi_rulesmi_orphan_hash mi_warn_fn mi_fix_fn mi_hash_fnmi_hpcmi_trust mi_trust_pkgmi_complete_sigs mi_doc_hdr mi_decl_docs mi_arg_docs FindResultFound NoPackage FoundMultipleNotFoundfr_pathsfr_pkgfr_mods_hiddenfr_pkgs_hidden fr_unusablesfr_suggestionsInstalledFindResultInstalledFoundInstalledNoPackageInstalledNotFound FinderCacheMetaHook MetaResult MetaRequestMetaEMetaPMetaTMetaDMetaAW HomeModInfohm_iface hm_details hm_linkablePackageIfaceTableHomePackageTableInputFileBufferTargetId TargetModule TargetFileTargettargetIdtargetAllowObjCodetargetContentsIServ iservPipe iservProcessiservLookupSymbolCacheiservPendingFreesHscEnv hsc_dflags hsc_targets hsc_mod_graphhsc_IChsc_HPThsc_EPShsc_NChsc_FChsc_type_env_var hsc_iserv GhcApiError SourceError HscStatusHscNotGeneratingCode HscUpToDate HscUpdateBoot HscUpdateSig HscRecomprunHscmkInteractiveHscEnvrunInteractiveHscmkSrcErrsrcErrorMessagesmkApiErr throwErrors throwOneErrorhandleSourceErrorprintOrThrowWarningshandleFlagWarningshscEPS pprTarget pprTargetIdemptyHomePackageTableemptyPackageIfaceTablepprHPT lookupHptlookupHptDirectlyeltsHpt filterHptallHptmapHpt delFromHptaddToHpt addListToHpt listToHptlookupHptByModulelookupIfaceByModulehptCompleteSigs hptInstanceshptRules metaRequestE metaRequestP metaRequestT metaRequestD metaRequestAWprepareAnnotationsmi_bootmi_fixmi_semantic_module mi_free_holesrenameFreeHoles emptyModIfacemkIfaceHashCacheemptyModDetailsimportedByUser appendStubCemptyInteractiveContexticInteractiveModule icInScopeTTs icPrintUnqualextendInteractiveContextextendInteractiveContextWithIdssetInteractivePackagesetInteractivePrintNameicExtendGblRdrEnvsubstInteractiveContextmkPrintUnqualified mkQualModule mkQualPackagepkgQualimplicitTyThingsimplicitClassThingsimplicitTyConThingsisImplicitTyThingtyThingParent_maybetyThingsTyCoVarstyThingAvailInfo emptyTypeEnv typeEnvElts typeEnvTyConstypeEnvCoAxioms typeEnvIdstypeEnvPatSynstypeEnvDataConstypeEnvClasses mkTypeEnvmkTypeEnvWithImplicitstypeEnvFromEntities lookupTypeEnv extendTypeEnvextendTypeEnvListextendTypeEnvWithIds plusTypeEnv lookupTypelookupTypeHscEnv tyThingTyContyThingCoAxiomtyThingDataContyThingConLike tyThingIdmkIfaceWarnCacheemptyIfaceWarnCache plusWarnsmkIfaceFixCacheemptyFixityEnv lookupFixitynoDependencies addEpsInStats updNameCachemkSOName mkHsSONamesoExtneedsTemplateHaskellOrQQmapMG mgBootModulesmgModSummaries mgElemModulemgLookupModuleemptyMGisTemplateHaskellOrQQNonBootextendMG mkModuleGraphms_installed_mod ms_mod_namems_imps msHsFilePath msHiFilePath msObjFilePath isBootSummary showModMsg emptyHpcInfo isHpcUsed getSafeMode setSafeModenoIfaceTrustInfotrustInfoToNumnumToTrustInfoisObjectLinkable linkableObjsisObjectisInterpretable nameOfObjectbyteCodeOfObjectmkCompleteMatchMapextendCompleteMatchMap$fExceptionSourceError$fShowSourceError$fExceptionGhcApiError$fShowGhcApiError$fOutputableTargetId$fOutputableTarget$fOutputableSptEntry$fOutputableInteractiveImport$fBinaryWarnings$fOutputableFixItem$fBinaryDependencies $fBinaryUsage$fBinaryIfaceTrustInfo$fOutputableIfaceTrustInfo$fBinaryModIface$fOutputableModSummary$fOutputableUnlinked$fOutputableLinkable$fOutputableCompleteMatch$fHasDynFlagsHsc $fMonadIOHsc $fMonadHsc$fApplicativeHsc $fFunctorHsc $fEqTargetId $fEqWarnings$fEqDependencies $fEqUsage RoleAnnotEnvTcPluginResultTcPluginContradiction TcPluginOkTcPlugin tcPluginInit tcPluginSolve tcPluginStop TcPluginMTcPluginSolver TypeOrKind TypeLevel KindLevelCtOrigin GivenOrigin OccurrenceOfOccurrenceOfRecSel AppOriginSpecPragOrigin TypeEqOrigin KindEqOrigin IPOccOriginOverLabelOrigin LiteralOrigin NegateOriginArithSeqOriginAssocFamPatOrigin SectionOrigin TupleOrigin ExprSigOrigin PatSigOrigin PatOriginProvCtxtOriginRecordUpdOrigin ViewPatOriginScOriginDerivClauseOrigin DerivOriginDCDerivOriginCoerceStandAloneDerivOrigin DefaultOriginDoOrigin DoPatOrigin MCompOriginMCompPatOriginIfOrigin ProcOrigin AnnOrigin FunDepOrigin1 FunDepOrigin2 HoleOriginUnboundOccurrenceOf ListOrigin StaticOriginFailablePatternShouldn'tHappenOriginInstProvidedOrigin uo_actual uo_expecteduo_thing uo_visible SkolemInfoSigSkol SigTypeSkol ForAllSkol DerivSkolInstSkolInstSC FamInstSkolPatSkol ArrowSkolIPSkolRuleSkol InferSkol BracketSkolUnifyForAllSkol TyConSkol DataConSkol ReifySkol QuantCtxtSkolUnkSkolCtLoc ctl_originctl_env ctl_t_or_k ctl_depth SubGoalDepth CtFlavourRole ShadowInfoWDerivWOnly CtFlavourGivenWantedDerived CtEvidenceCtGivenCtWanted CtDerived ctev_pred ctev_evarctev_loc ctev_dest ctev_noshTcEvDest EvVarDestHoleDest ImplicStatus IC_Solved IC_InsolubleIC_BadTelescope IC_Unsolvedics_dead ImplicationImplicic_tclvlic_skolsic_info ic_telescopeic_given ic_no_eqsic_env ic_wantedic_binds ic_need_inner ic_need_outer ic_statusWantedConstraintsWC wc_simplewc_implHoleExprHoleTypeHoleQCInstQCIqci_evqci_tvsqci_pred qci_pend_scCtCDictCan CIrredCanCTyEqCan CFunEqCan CNonCanonicalCHoleCan CQuantCancc_evcc_class cc_tyargs cc_pend_sccc_insolcc_tyvarcc_rhs cc_eq_relcc_funcc_fskcc_holeCtsXi TcPatSynInfoTPSI patsig_namepatsig_implicit_bndrspatsig_univ_bndrs patsig_reqpatsig_ex_bndrs patsig_provpatsig_body_ty TcIdSigInstTISI sig_inst_sigsig_inst_skolssig_inst_theta sig_inst_tau sig_inst_wcs sig_inst_wcx TcIdSigInfo CompleteSig PartialSigsig_bndrsig_ctxtsig_loc psig_name psig_hs_ty TcSigInfoTcIdSig TcPatSynSigTcSigFun WhereFrom ImportByUserImportBySystemImportByPlugin ImportAvailsimp_mods imp_dep_pkgsimp_trust_pkgsimp_trust_own_pkg imp_orphs imp_finsts ClosedTypeIdRhsNames IsGroupClosed IdBindingInfo NotLetBound ClosedLet NonClosedLet PromotionErrTyConPEClassPE FamDataConPEConstrainedDataConPEPatSynPE PatSynExPE RecDataConPE NoDataKindsTC NoDataKindsDC TcTyThingAGlobalATcIdATyVarATcTyCon APromotionErrtct_idtct_info ArrowCtxt NoArrowCtxtThLevel PendingStuffRnPendingUntypedRnPendingTyped TcPendingThStageSplice RunSpliceCompBrack SpliceTypeTypedUntypedTcBinderTcIdBndrTcIdBndr_ExpTypeTcTvBndr TcBinderStackTcIdSetTcIdTcRef TcTypeEnvErrCtxttcl_loctcl_ctxt tcl_tclvl tcl_th_ctxt tcl_th_bndrstcl_arrow_ctxttcl_rdrtcl_env tcl_bndrs tcl_tyvarstcl_lietcl_errs SelfBootInfo NoSelfBootSelfBootsb_mdssb_tcs RecFieldEnvtcg_modtcg_semantic_modtcg_src tcg_rdr_env tcg_default tcg_fix_env tcg_field_env tcg_type_env tcg_inst_envtcg_fam_inst_env tcg_ann_env tcg_exports tcg_importstcg_dus tcg_used_grestcg_keep tcg_th_usedtcg_th_splice_usedtcg_th_top_level_locs tcg_dfun_n tcg_mergedtcg_rn_exportstcg_rn_imports tcg_rn_declstcg_dependent_filestcg_th_topdeclstcg_th_foreign_filestcg_th_topnamestcg_th_modfinalizerstcg_th_coreplugins tcg_th_statetcg_th_remote_state tcg_ev_binds tcg_tr_module tcg_bindstcg_sigs tcg_imp_specs tcg_warnstcg_annstcg_tcs tcg_insts tcg_fam_insts tcg_rules tcg_fords tcg_patsyns tcg_doc_hdrtcg_hpc tcg_self_boottcg_main tcg_safeInfertcg_tc_plugins tcg_top_loc tcg_static_wctcg_complete_matches tcg_cc_stFrontendResultFrontendTypecheck DsMetaValDsBoundDsSplice DsMetaEnvDsLclEnvdsl_metadsl_loc dsl_dicts dsl_tm_cs dsl_pm_iterDsGblEnvds_modds_fam_inst_env ds_unqualds_msgs ds_if_envds_complete_matchesds_cc_stIfLclEnvif_modif_bootif_loc if_nsubstif_implicits_env if_tv_env if_id_envIfGblEnvif_doc if_rec_typesEnvenv_topenv_usenv_gblenv_lclTcMRnMDsMIfLIfGIfMTcRnTcRnIf NameShape ns_mod_name ns_exportsns_maptcVisibleOrphanModsremoveBindingShadowingtopStage topAnnStagetopSpliceStageimpLevel outerLevelthLevelpprTcTyThingCategory pprPECategory mkModDeps modDepsEltsemptyImportAvailsplusImportAvails isPartialSighasCompleteSigholeOccmkNonCanonicalmkNonCanonicalCt mkIrredCt mkInsolubleCtmkGivens ctEvidencectLocsetCtLocctOriginctPredctEvIdmkTcEqPredLikeEv ctFlavourctEqRel tyCoVarsOfCttyCoVarsOfCtList tyCoVarsOfCtstyCoVarsOfCtsList tyCoVarsOfWCtyCoVarsOfWCList dropDerivedWCdropDerivedSimples isDroppableCtarisesFromGivens isGivenLoc isWantedCt isGivenCt isDerivedCt isCTyEqCanisCDictCan_MaybeisCFunEqCan_maybe isCFunEqCanisCNonCanonicalisHoleCtisOutOfScopeCt isExprHoleCt isTypeHoleCtgetUserTypeErrorMsgisUserTypeErrorCtisPendingScDictisPendingScInstsuperClassesMightHelpgetPendingWantedScssingleCtandCts listToCtsctsEltsconsCtssnocCts extendCtsList andManyCtsemptyCts isEmptyCtspprCtsemptyWC mkSimpleWC mkImplicWC isEmptyWC isSolvedWCandWCunionsWC addSimples addImplics addInsolsinsolublesOnlyisSolvedStatusisInsolubleStatusinsolubleImplic insolubleWC insolubleCt insolubleEqCtnewImplicationimplicationPrototype implicLclEnvimplicDynFlags pprEvVars pprEvVarThetapprEvVarWithTypewrapTypeWithImplicationwrapTypectEvPredctEvLoc ctEvOrigin ctEvEqRelctEvRolectEvTermctEvExpr ctEvCoercionctEvEvIdisWantedisGiven isDerivedisGivenOrWDeriv ctEvFlavourctEvFlavourRole ctFlavourRole eqCanRewriteeqCanRewriteFReqMayRewriteFRfunEqCanDischargefunEqCanDischargeFeqCanDischargeFRinitialSubGoalDepthbumpSubGoalDepthmaxSubGoalDepthsubGoalDepthExceeded mkKindLoc toKindLoc mkGivenLocctLocEnv ctLocLevel ctLocDepth ctLocOrigin ctLocSpanctLocTypeOrKind_maybe setCtLocSpanbumpCtLocDepthsetCtLocOriginupdateCtLocOrigin setCtLocEnv pushErrCtxtpushErrCtxtSameOrigin pprSkolInfopprSigSkolInfo isTypeLevel isKindLevelisVisibleOrigintoInvisibleOrigin lexprCtOrigin exprCtOriginmatchesCtOrigin grhssCtOriginpprCtLoc pprCtOrigin runTcPluginMunsafeTcPluginTcMgetEvBindsTcPluginMmkRoleAnnotEnvemptyRoleAnnotEnvlookupRoleAnnot getRoleAnnots$fContainsModuleEnv$fContainsDynFlagsEnv$fContainsModuleDsGblEnv$fHasOccNameTcBinder$fOutputableTcBinder$fOutputablePromotionErr$fOutputableIdBindingInfo$fOutputableTcTyThing$fOutputableWhereFrom$fOutputableTcIdSigInfo$fOutputableTcIdSigInst$fOutputableTcPatSynInfo$fOutputableTcSigInfo$fOutputableHole$fOutputableImplicStatus$fOutputableTcEvDest$fOutputableCtFlavour$fOutputableSkolemInfo$fOutputableTypeOrKind$fMonadFailTcPluginM$fMonadTcPluginM$fApplicativeTcPluginM$fFunctorTcPluginM$fOutputableCtOrigin$fOutputableCtEvidence$fOutputableImplication$fOutputableWantedConstraints$fOutputableCt$fOutputableQCInst$fOutputableThStage$fContainsModuleTcGblEnv$fEqShadowInfo $fEqCtFlavour$fEqSubGoalDepth$fOrdSubGoalDepth$fOutputableSubGoalDepth$fEqTypeOrKindPipelineOutput Temporary Persistent SpecificFile PipeStatehsc_env maybe_loc foreign_osPipeEnv stop_phase src_filename src_basename src_suffix output_spec PhasePlus RealPhaseHscOut CompPipelineevalP getPipeEnv getPipeState setDynFlagssetModLocation setForeignOs$fOutputablePhasePlus$fHasDynFlagsCompPipeline$fMonadIOCompPipeline$fMonadCompPipeline$fApplicativeCompPipeline$fFunctorCompPipeline$fShowPipelineOutput WarnErrLoggerGhcTunGhcTSessionGhcunGhc getSession setSession withSessiongetSessionDynFlags modifySessionwithTempSession logWarnings reflectGhcreifyGhcliftGhcTprintExceptiondefaultWarnErrLogger $fGhcMonadGhc$fHasDynFlagsGhc$fExceptionMonadGhc $fMonadFixGhc $fMonadIOGhc $fMonadGhc$fApplicativeGhc $fFunctorGhc$fGhcMonadGhcT$fHasDynFlagsGhcT$fExceptionMonadGhcT $fMonadIOGhcT $fMonadGhcT$fApplicativeGhcT $fFunctorGhcTFrontendPluginfrontendFrontendPluginAction CorePluginPluginRecompileForceRecompileNoForceRecompileMaybeRecompilespPluginlpPluginlpModulePluginWithArgspaPlugin paArgumentsinstallCoreToDostcPluginpluginRecompileparsedResultActionrenamedResultActiontypeCheckResultActionspliceRunActioninterfaceLoadActionCommandLineOption lpModuleNamepluginRecompile' purePlugin impurePlugin flagRecompile defaultPluginkeepRenamedSourceplugins withPlugins mapPlugins withPlugins_defaultFrontendPlugin$fMonoidPluginRecompile$fSemigroupPluginRecompile$fOutputablePluginRecompilePreInlineUnconditionallyPostInlineUnconditionally UnfoldingDone RuleFiredLetFloatFromLet EtaExpansion EtaReduction BetaReduction CaseOfCase KnownBranch CaseMergeAltMergeCaseElim CaseIdentityFillInCaseDefaultSimplifierDoneCorePluginPassFloatOutSwitchesfloatOutLambdasfloatOutConstantsfloatOutOverSatAppsfloatToTopLevelOnly SimplModesm_namessm_phase sm_dflagssm_rules sm_inline sm_case_case sm_eta_expandCoreDoSimplifyCoreDoPluginPassCoreDoFloatInwardsCoreDoFloatOutwardsCoreLiberateCaseCoreDoPrintCoreCoreDoStaticArgsCoreDoCallArity CoreDoExitifyCoreDoStrictnessCoreDoWorkerWrapperCoreDoSpecialisingCoreDoSpecConstrCoreCSECoreDoRuleCheck CoreDoNothing CoreDoPasses CoreDesugarCoreDesugarOptCorePrep CoreOccurAnalpprPassDetailsrunWhenrunMaybe bindsOnlyPass simplCountNzeroSimplCountisZeroSimplCounthasDetailedCountsdoFreeSimplTick doSimplTickplusSimplCount pprSimplCountrunCoreMliftIOWithCount getHscEnv getRuleBasegetVisibleOrphanModsgetPrintUnqualified getSrcSpanM addSimplCountgetOrigNameCachegetPackageFamInstEnvreinitializeGlobalsgetAnnotationsgetFirstAnnotationsputMsgS errorMsgSfatalErrorMsgSdebugTraceMsgS$fOutputableSimplMode$fOutputableFloatOutSwitches $fOrdTick$fEqTick$fOutputableTick$fHasModuleCoreM$fHasDynFlagsCoreM$fMonadIOCoreM$fMonadUniqueCoreM$fMonadPlusCoreM$fAlternativeCoreM$fApplicativeCoreM $fMonadCoreM$fFunctorCoreM$fOutputableCoreToDo addFieldDoc addFieldDocs addConDoc addConDocsaddConDocFirst LRenamingRenaming renameFromrenameTo IncludeDeclidUnitId idModRenamingidSignatureInclude LHsUnitDecl HsUnitDeclDeclDIncludeD HsDeclTypeModuleD SignatureDLHsUnitHsUnit hsunitName hsunitBody LHsModuleId HsModuleId HsModuleVarLHsModuleSubst HsModuleSubst LHsUnitIdHsUnitId HsComponentId hsPackageName hsComponentId$fOutputableHsComponentId parseModuleparseSignature parseImportparseStatementparseDeclarationparseExpression parsePatternparseTypeSignature parseStmtparseIdentifier parseType parseBackpack parseHeader getImports mkPrelImportsgetOptionsFromFile getOptionscheckProcessArgsResultoptionsErrorMsgsdsForeignsHooktcForeignImportsHooktcForeignExportsHookhscFrontendHookhscCompileCoreExprHookghcPrimIfaceHook runPhaseHook runMetaHooklinkHookrunRnSpliceHookgetValueSafelyHookcreateIservProcessHook getHooked lookupHook CheapAppFunexprType coreAltType coreAltsType isExprLevPolyapplyTypeToArgsmkCastmkTickmkTicks mkTickNoHNF tickHNFArgs stripTicksTopstripTicksTopEstripTicksTopT stripTicksE stripTicksT bindNonRecneedsCaseBinding mkAltExpr findDefault addDefault isDefaultAltfindAlt mergeAlts trimConArgs filterAltsrefineDefaultAltcombineIdenticalAlts exprIsTrivialgetIdFromTrivialExprgetIdFromTrivialExpr_maybe exprIsBottom exprIsDupableexprIsWorkFree exprIsCheap exprIsCheapXexprIsExpandable isCheapAppisExpandableAppexprOkForSpeculationexprOkForSideEffectsaltsAreExhaustive exprIsHNF exprIsConLikeexprIsTopLevelBindableexprIsTickedStringexprIsTickedString_maybedataConRepInstPatdataConRepFSInstPat cheapEqExpr cheapEqExpr' exprIsBigeqExprdiffExpr diffBinds tryEtaReduce rhsIsStatic isEmptyTycollectMakeStaticArgs isJoinBind FloatBindFloatLet FloatCase sortQuantVars mkCoreAppmkWildEvBindermkWildValBinder mkWildCase mkIfThenElsecastBottomExpr mkIntExprIntmkWordExprWord mkIntegerExpr mkNaturalExprmkStringExprFSmkStringExprFSWith mkCoreVarTupmkCoreVarTupTy mkCoreTup mkCoreUbxTupmkCoreTupBoxitymkBigCoreVarTupmkBigCoreVarTup1mkBigCoreVarTupTy mkBigCoreTupmkBigCoreTupTyunitExprmkTupleSelectormkTupleSelector1mkSmallTupleSelector mkTupleCasemkSmallTupleCase wrapFloat mkNilExpr mkConsExpr mkListExpr mkFoldrExpr mkBuildExpr mkNothingExpr mkJustExprmkRuntimeErrorAppmkImpossibleExprerrorIdsrEC_SEL_ERROR_IDrUNTIME_ERROR_IDrEC_CON_ERROR_ID pAT_ERROR_IDnO_METHOD_BINDING_ERROR_IDnON_EXHAUSTIVE_GUARDS_ERROR_ID tYPE_ERROR_IDaBSENT_SUM_FIELD_ERROR_IDaBSENT_ERROR_IDmkAbsentErrorApp$fOutputableFloatBind IdSubstEnvSubst isEmptySubst emptySubst mkEmptySubstmkSubst substInScope zapSubstEnv extendIdSubstextendIdSubstList extendSubstextendSubstWithVarextendSubstList lookupIdSubstlookupTCvSubstdelBndrdelBndrs mkOpenSubst addInScopeSet extendInScopeextendInScopeListextendInScopeIds setInScope substExprSC substExpr substBindSC substBind deShadowBinds substBndr substBndrs substRecBndrs cloneIdBndr cloneIdBndrs cloneBndrs cloneBndrcloneRecIdBndrs getTCvSubst substIdInfosubstUnfoldingSCsubstUnfolding substIdOcc substSpecsubstRulesForImportedIds substDVarSet substTickish$fOutputableSubst manifestArity joinRhsArity exprArity typeArityexprBotStrictness_maybeexprEtaExpandArity findRhsArity etaExpandetaExpandToJoinPointetaExpandToJoinPointRule$fOutputableArityType$fOutputableEtaInfooccurAnalysePgmoccurAnalyseExproccurAnalyseExpr_NoBinderSwap$fOutputableOccEncl$fOutputableUsageDetails$fOutputableDetailstidyExpr tidyRulestidyRule tidyUnfolding simpleOptExprsimpleOptExprWith simpleOptPgmjoinPointBinding_maybejoinPointBindings_maybeexprIsConApp_maybeexprIsLiteral_maybeexprIsLambda_maybe pushCoArg pushCoTyArg pushCoValArgcollectBindersPushingCo$fOutputableSimpleOptEnvmkRule roughTopNamespprRulesForUser mkRuleInfoextendRuleInfo addRuleInfoaddIdSpecialisations rulesOfBindsgetRules emptyRuleBase mkRuleBaseextendRuleBaseList unionRuleBase pprRuleBase lookupRuleruleCheckProgramCallCtxt BoringCtxtRhsCtxt DiscArgCtxt RuleArgCtxt ValAppCtxtCaseCtxt ArgSummaryTrivArg NonTrivArgValueArgmkTopUnfoldingmkImplicitUnfoldingmkSimpleUnfoldingmkDFunUnfoldingmkWwInlineRulemkCompulsoryUnfoldingmkWorkerUnfoldingmkInlineUnfoldingmkInlineUnfoldingWithAritymkInlinableUnfolding specUnfoldingmkCoreUnfolding mkUnfoldinginlineBoringOkcouldBeSmallEnoughToInlinesmallEnoughToInlinecertainlyWillInlinecallSiteInline$fOutputableExprSize$fOutputableArgSummary$fOutputableCallCtxt primOpRules builtinRules caseRules$fHasDynFlagsRuleM$fMonadPlusRuleM$fAlternativeRuleM$fMonadFailRuleM $fMonadRuleM$fApplicativeRuleM$fFunctorRuleMDCB wiredInIds ghcPrimIds mkDictSelRhs mkDataConRepunwrapNewTypeBodywrapFamInstBody mkFCallId mkDictFunId mkDictFunTyunsafeCoerceNamenoinlineIdName proxyHashIdunsafeCoerceId nullAddrIdseqIdlazyId noinlineIdcoerceIdrealWorldPrimId voidPrimId voidArgIdcoercionTokenId toIfaceTvBndrtoIfaceTvBndrs toIfaceIdBndr toIfaceBndrtoIfaceTyCoVarBinders toIfaceKind toIfaceType toIfaceTyVartoIfaceTyCon_nametoIfaceCoerciontidyToIfaceTypetidyToIfaceContextpatSynToIfaceDecl toIfaceBangtoIfaceSrcBangtoIfaceLetBndrtoIfaceIdDetails toIfaceIdInfo toIfUnfolding toIfaceExprtoIfaceOneShottoIfaceTickish toIfaceBind toIfaceAlt toIfaceCon toIfaceApp toIfaceVar getClosureRaw getClosureRepInstalledPackageInfolockPackageDbWithdecodeFromFilebinary-0.8.6.0Data.Binary.Get.InternalGetDatamaskcatchmask_bracketfinallyhandleassertControl.ExceptionallowInterruptcatchesHandlerbracketOnErrorbracket_ onExceptiontryJust mapException handleJust catchJustPatternMatchFail RecSelError RecConError RecUpdError NoMethodError TypeErrorNonTerminationNestedAtomicallyasyncExceptionFromExceptionasyncExceptionToExceptionBlockedIndefinitelyOnMVarBlockedIndefinitelyOnSTMDeadlockAllocationLimitExceededCompactionFailedAssertionFailedSomeAsyncExceptionAsyncException StackOverflow HeapOverflow ThreadKilled UserInterruptArrayExceptionIndexOutOfBoundsUndefinedElementevaluateuninterruptibleMaskuninterruptibleMask_getMaskingStatethrowIO MaskingStateUnmaskedMaskedInterruptibleMaskedUninterruptible IOException GHC.Exceptionthrow ErrorCallErrorCallWithLocationArithExceptionOverflow UnderflowLossOfPrecision DivideByZeroDenormalRatioZeroDenominator SomeExceptionword64Base62Len GHC.Stack.CCSfilterM short_usagesignalHandlersRefCountis_ctypecharType expandPathVar$restrictedDamerauLevenshteinDistance hashInt32mapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustGHC.ForeignPtr ForeignPtr mkZFastStringGHC.IO.Handle.TypesHandleskipBOMokIdOccokIdChar reservedIds reservedOpsisDashesRDoc reduceDocfirstsdocLastColourPprCodeisOneLineRealSpanisPointRealSpancombineRealSrcSpans plusWithInf mulWithInf uniqueMask TaggedValbytestring-0.10.8.2Data.ByteString.Internal ByteString holeUnitId rawHashUnitIdparseIntdropEqversionedFilePath setLanguagesetSafeHaskellcombineSafeFlags safeFlagCheck allFlagsDepsunrecognisedWarningflagSpec flagSpec' depFlagSpecOp depFlagSpecdepFlagSpecOp' depFlagSpec'depFlagSpecCond flagGhciSpec flagGhciSpec'flagHiddenSpecflagHiddenSpec'hideFlag flagSpecOfnegatableFlagsDeps dFlagsDeps fHoleFlagslanguageFlagsDepssafeHaskellFlagsDepsvalidHoleFitDefaultssmallestGroupsstandardWarnings minusWOpts minusWallOptsminusWeverythingOptsminusWcompatOptsdefaultGlobalDynFlagsmkFlagmk_derivData.Typeable.InternalTypeableerrMsgShortStringwithDumpFileHandlechooseDumpFilebeautifyDumpNamePackagePrecedenceIndexRevIndexpkgIdMappackageNameMap unwireMappluginModuleToPkgConfAllModuleToPkgConfAllUnitVisibility uv_renamingsuv_package_nameuv_requirements uv_explicit VisibilityMappreloadClosureInstalledUnitIdMapfromExposedModulesfromReexportedModulesfromFlag originVisible originEmptyemptyPackageConfigMapextendPackageConfigMap findPackagesselectPackages renamePackagesortByPreferencecompareByPreference reverseDepsremovePackagesdepsNotAvailableInstalledPackageIndexdepsAbiMismatchmergeDatabasesvalidateDatabasemkModuleToPkgConfAllmkUnusableModuleToPkgConfAll addListTomkModMaplibraryDirsForWaydirectory-1.3.3.0System.DirectorygetTemporaryDirectory ExtsBitmap pThisPackage pExtsBitmapGenSemicwarnoptallocateComments NotExportedExportedIdScope realUnique flavourIndexpprFlavourCoreppCostCentreLblppFlavourLblComponentFunTyConAlgTyCon FamilyTyCon SynonymTyCon PrimTyConPromotedDataContcRolesalgTcGadtSyntaxalgTcStupidThetaalgTcRhs algTcParentsynTcRhs famTcFlav famTcParentfamTcInj isUnlifteddataCon promDcRepInfotcTyConFlavourokParenttyConFieldLabelEnvfieldsOfAlgTcRhs kindTyConKeys mkPrimTyCon'defaultRuntimeRepVars ppr_itv_bndrspprSpaceIfPromotedTyCon ppr_equalityppr_iface_tc_app pprTyTcApp'if_print_coercionsmkPiTytyCoVarsOfTypesSetnoFreeVarsOfProvsubstForAllCoBndrUncheckedsubstVarBndrUncheckedsubstTyVarBndrUsingsubstCoVarBndrUsing TypeOrderingTLTTEQTEQXTGTsplitTyVarForAllTysfun_kind_arg_flags wrapLitNumbermkLitIntUncheckedmkLitWordUncheckedmkLitInt64UncheckedmkLitWord64UncheckedmkRuntimeRepCo isGReflMComkForAllCo_NoReflmkHomoForAllCos_NoRefldowngradeRole_maybe instCoercion instCoercionsextendLiftingContextEx ty_co_subst tc_match_tystc_match_tys_x tc_unify_tys don'tBeSoSure ty_co_matchdcTagdataConKindEqSpecfitsIn kindPrimRepExnStrVanStr Termination ThrowsExnDunnoLazyArgStrHyperStrSCallSProdHeadStrcollectValBindersvanillaCafInfounboxedTupleSumKind mkSumTyConOccmkSumDataConOcc unboxedSumArrmk_sumextractPromotedListpcDataConWithFixitysizeAnnnoAnnpprArg pprTopBinds&&&BndrMapTypeMapGDeBruijnTypeMapXCoreMapXCoreMapG trieMapView deBruijnizeNormMallTyCoVarsInTysallTyCoVarsInTyexprFVsexprsFVsexprSomeFreeVarsDSetexprsSomeFreeVarsDSet exprOrphNamesruleFVsrulesFVs ruleLhsFVIds tc_eq_typetcTyFamInstsAndVisXtcTyConAppTyFamInstsAndVisXinsert_overlappingReprFlagSymFlagopt_co1opt_co2opt_co3 opt_co4_wrapopt_co4 opt_phantomwrapRole chooseRoleconPatNeedsParenshasReturnKindSignaturetyConToDataConnudgeHsSrcBangs checkTyVars checkNoDocs pStrictMarkisNegatedPmLit isNilPmExpr isPmExprEq isConsDataCon substPmExpr pprPmExprWhetherHasFamInsthptAnnshptSomeThingsBelowUs tyCoFVsOfCt tyCoFVsOfCts tyCoFVsOfWCtyCoFVsOfImplic lGRHSCtOriginpprCtO liftIOEnvwarnSpaceAfterBangmjmu toUnicodeAnnaaamamsajsammsamsumomcmcommasmvbarsollaslHappyStkisDivOp exprIsHNFlike diffIdInfo diffUnfoldlocBindmkCoreAppTypedmkSmallTupleSelector1 substIdBndrvanillaArityTypedecideJoinPointHood ruleCantMatchmatchNExprSize _es_size_is_es_args _es_discountlitSizecallSizejumpSizePrimOpsaddsubmulmkL:-::**::*::++::+:OpValBinOpApp boundsCmp intResult intCResult wordResult wordCResultleftIdentityCDynFlagsrightIdentityCDynFlagsidentityCDynFlagsnumFoldingRulesdataConSrcToImplBang dataConArgRep