v;k      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef 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[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./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)0None059;<= ! ! ! !None059;<= "#$%&'()*+,-"#$%"#$% "#$%&'()*+,-None059;<= 3456789:;<=>?3456734567 3456789:;<=>?None059;<= EFGHIJKLMNOEFGEFG EFGHIJKLMNONone059;<= UVWXYZ[\]^_`UVWXUVWX UVWXYZ[\]^_` None059;<= fghijklmnopqfghifghi fghijklmnopq None059;<= wxyz{|}~wxyzwxyz wxyz{|}~ None059;<=   None059;<=   None059;<=  None059;<=  None059;<=  None059;<=  None059;<=  None059;<=,Generate arguments for tests and benchmarks.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental!POSIX \( \def\C{\mathbb{C}} \)Safe9;<=DRGeneralization of Testable+ from QuickCheck: generates function inputs/Type of the output of a fully-applied function.!Generate arguments to a function.2Types for using crypto-api with MonadCryptoRandom.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNoneITurns a k g into a standard l. Evaluate a m. computation using a cryptographic generator gN, seeded by system entropy. Note that the updated generator is not returned.nn>Convenient interfaces for serialization with protocol buffers.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone *+9:;DRT  KConversion between Haskell types and their protocol buffer representations. :Convert from a type to its protocol buffer representation. .Convert from a protocol buffer representation.)Constraint synonym for end-to-end readingparsing writing of   types.0Serialize a Haskell type to its protocol buffer o.Read a protocol buffer o to a Haskell type.*Read a serialized protobuffer from a file.4Writes any auto-gen'd proto object to path/filename.VRead a protocol buffer stream at the given path and convert it to typed Haskell data.BWrite a protocol buffer stream for Haskell data to the given path.                   *(Modifications to NumericPrelude for Lol.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone%&)*,9;<=QRT Sane synonym for p.Sane synonym for q.Sane synonym for r.Sane synonym for s.Sane synonym for t.Sane synonym for u.Convenient synonym for (v a,   a)Sane synonym for w. Sane synonym for x.!Sane synonym for y."Sane synonym for z.#Sane synonym for {.$Sane synonym for |.%Sane synonym for }.&Sane synonym for ~.'Sane synonym for .(Sane synonym for .)Sane synonym for .*Sane synonym for .+The Prelude definition of .,The Prelude definition of .-The sane definition of  from +, rather than the default from NumericPrelude..The hidden NP function from Algebra.ToRational./BOur custom exponentiation, overriding NP's version that requires  exponent. Copied from Jhttp://hackage.haskell.org/package/base-4.7.0.0/docs/src/GHC-Real.html#%5E0 Inverse of a modulo q , in range [0,q-1]'. (Argument order is infix-friendly.)1XDecompose an element into a list of "centered" digits with respect to relative radices.23Deterministically round to the nearest multiple of  i .3<Randomly round to the nearest larger or smaller multiple of  i 1, where the round-off term has expectation zero.4 Variant of -.) in which the remainder is in the range  [-b/2,b/2). instance for , missing from NP instance for , missing from NP& instance for   !"#$%&'()*+,-./01234 dividend adivisor b(quotient, remainder) v      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw !"#$%&'()*+,-./01234  !"#$%&'()*+,-./012348Data type, functions, and instances for complex numbers.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone),/9:;<=DIRT59Newtype wrapper (with slightly different instances) for Number.Complex.7@Rounds the real and imaginary components to the nearest integer.88 t/ is a complex value with magnitude 1 and phase t \bmod 2\cdot\pi).9#Real component of a complex number.:(Imaginary component of a complex number.;:Embeds a scalar as the real component of a complex number.>Custom instance replacing the one provided by numeric prelude: it always returns 0 as the remainder of a division. (The NP instance sometimes has precision issues, because it yields nonzero remainders, which is a problem for divG methods.) 56789:;<=>56789:;56789:; 56789:;<=>/Internal module.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental<POSIX \( \def\Z{\mathbb{Z}} \) \( \def\C{\mathbb{C}} \)None%&)*+,-DORTQ Convert a  to an integral type.RKind-restricted synonym for x.SKind-restricted synonym for x.ZConvert an integral type to a .[ Convert a  to an integral type.\Convert an integral type to a .]Reify a  as a singleton.^Reify a  for a x constraint._Reify a  as a singleton.`Reify a  for a x constraint.a Template Haskell splice for the  type representing a given , e.g.,  $(posType 8).b Template Haskell splice for the  type representing a given , e.g.,  $(binType 89).c)Template Haskell splice that defines the  type synonym Pn.d)Template Haskell splice that defines the  type synonym Bn.e6Template Haskell splice that declares a type synonym <pfx>n as the type f n.f;Infinite list of primes, built using Sieve of Erastothenes.gSearch for the argument in f. This is not particularly fast, but works well enough for moderate-sized numbers that would appear as (divisors of) cyclotomic indices of interest.Xyz {|}~EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde pfx f nfg2 EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg?yz {|}~EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg01Type-level positive naturals in Peano and binary.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone,hijklmnopqrstuvwxyz{|}~ EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~hijklmnopqrstuvwxyz{|}~1Internal module.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone%&*+,-DOQRT=Type synonym for (prime, exponent) pair.&Constraint synonym for coprimality of  types.'Constraint synonym for divisibility of  types.Kind-restricted synonym for x.Kind-restricted synonym for x.Kind-restricted synonym for x.,Type (family) synonym for multiplication of  types.&Type (family) synonym for division of  types.Reify a  as a singleton.Reify a  for a  constraint.Reify a  as a singleton.Reify a  for a  constraint.Reify a  as a singleton.Reify a  for a  constraint.:Entails constraint for transitivity of division, i.e. if  k \mid l  and  l \mid m , then  k \mid m .(Entailment for divisibility by GCD: if  g=\gcd(m_1,m_2)  then  g \mid m_1  and  g \mid m_2 .%Entailment for LCM divisibility: if  l=\lcm(m_1,m_2)  then  m_1 \mid l  and  m_2 \mid l . =Entailment for LCM divisibility: the LCM of two divisors of  m  also divides  m .!Entailment for  p -free division: if  f  is m  after removing all  p -factors, then  f \mid m  and  \gcd(f,p)=1 ."Entailment for  p -free division: if  m \mid m' , then ) \text{p-free}(m) \mid \text{p-free}(m') .# Conversion.$ Reflect a  type to a  value.%2Value-level prime-power factorization tagged by a  type.&The value of a  type.'The value of a  type.(The totient of a  type's value.)The "hat" of a  type's value: _ \hat{m} = \begin{cases} m & \mbox{if } m \text{ is odd} \\ m/2 & \text{otherwise} \end{cases} .*-The radical (product of prime divisors) of a  type.+5The odd radical (product of odd prime divisors) of a  type.,The value of a .- Totient of a .. The hat of a ./The radical of a .0The odd radical of a .1!Reflect the prime component of a  type.2$Reflect the exponent component of a  type.3The value of a  type.4The totient of a  type's value.5The "hat" of a  type's value:  p^e  if  p  is odd,  2^{e-1}  otherwise.6The radical of a  type's value.7The odd radical of a  type's value. Product of values of individual s"Product of totients of individual s"Product of radicals of individual s&Product of odd radicals of individual s8The value of a prime power.9Totient of a prime power.:The "hat" of a prime power:  p^e  if  p  is odd,  2^{e-1}  otherwise.;The radical of a prime power.<!The odd radical of a prime power.= Value of a .>Return  m  if  m  is odd, and  m/2  otherwise.? Template Haskell splice for the ? type corresponding to a given positive prime integer. (Uses g to enforce primality of the base, so should only be used on small-to-moderate-sized arguments.) This is the preferred (and only) way of constructing a concrete ! type (and is used to define the Primep type synonyms).@ Template Haskell splice for the  type corresponding to a given  . (Calls ? on the first component of its argument, so should only be used on small-to-moderate-sized numbers.) This is the preferred (and only) way of constructing a concrete  type.A Template Haskell splice for the u type corresponding to a given positive integer. Factors its argument using a naive trial-division algorithm with fo, so should only be used on small-to-moderate-sized arguments (any reasonable cyclotomic index should be OK).B)Template Haskell splice that defines the  type synonym Primep for a positive prime integer  p .C)Template Haskell splice that defines the  type synonym PPn, where  n=p^e .D)Template Haskell splice that defines the  type synonym Fn for a positive integer n.E!Converts input to its data-level  representation.Factorize a positive integer into an ordered list of its prime divisors, with possible duplicates. First argument is infinite list of primes left to consider.kFactorize a positive integer into a list of (prime,exponent) pairs, in strictly increasing order by prime.?       !"#$%&'()*+,-./0123  456789:;<=>?@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:;<=>?@ABCDE $  EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE       !"#$%&'()*+,-./0123  456789:;<=>?@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:;<=>?@ABCDE Type-level factored naturals.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental#POSIX \( \def\lcm{\text{lcm}} \)None,LFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ADE@C?B=         %'(*+)$1234675&,-/0. !">#89;<:ESac]^QZPFOGNLMHIJK TRbd_`[\YWXUVefgwvutsrqponmlkjih~}|{zyxEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFGFNMLKJIHRQPOUTS~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Alternate Prelude.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental<POSIX \( \def\Z{\mathbb{Z}} \) \( \def\C{\mathbb{C}} \)None)*+,/9:;<=?DIOQRT!Represents that the target ring can "noisily encode" values from the source ring, in either "most significant digit" (MSD) or "least significant digit" (LSD) encodings, and provides conversion factors between the two types of encodings.The factor that converts an element from LSD to MSD encoding in the target field, with associated scale factor to apply to correct the resulting encoded value.Represents that a can be rescaled to b-, as an "approximate" additive homomorphism.Fun-dep version of Lift.The type of representatives of b.Represents that b can be lifted to a "short" a congruent to b.Represents that b is a quotient group of a.Represents that a is a subgroup of b.0Represents a quotient group modulo some integer. Poor man's .4The characteristic of a ring, represented as a type.Inverted entries of .*A default implementation of rescaling for  types.?Deterministically round to a nearby value in the desired coset. Version of   with an error message.Apply any applicative to a   value.Expose the monad of a   value.Hide the monad of a   value.7Use a singleton as a witness to extract a value from a   value.Transformer version of .Encode for a product ringRescale up to a product ring of \Z_qsRescale up to a product ring of \Z_qs"Rescale a (multi-)product ring of \Z_qs"Rescale a (multi-)product ring of \Z_qsRescale a product ring of \Z_qsRescale a product ring of \Z_qsReduce into product ring.Product ring of \Z_qs as a \Z_q (with  modulus)+Product ring as an (almost) integral domain!Product ring as an (almost) fieldPair as product ringLift product ring of \Z_qs to -  v         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw  !"#$%&'()*+,-./012345789:;EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~9+,-.*)('&%$#"! /01234#  >Interfaces for "gadgets," decomposition, and error correction.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone*+,9:;<=DLRT&Error correction relative to a gadget.4Error-correct a "noisy" encoding of an element (see 7), returning the encoded element and the error vector.#Decomposition relative to a gadget.The ring that u decomposes over.Yield a short vector  x  such that  \langle g, x\rangle = u .Gadget) vectors, parameterized by an index type.The gadget vector over u.Yield an error-tolerant encoding of an element with respect to the gadget. (Mathematically, this should just be the product of the input with the gadget, but it is a class method to allow for optimized implementations.)#Dummy type representing the gadget  [1,b,b^2,\ldots] .#Dummy type representing the gadget  [1] .Alternative to .Decompose a list entry-wise. Decompose a matrix entry-wise.  Product ring <Product ring: concatenate decompositions for component rings 6Product ring: concatenate gadgets over component rings           Gaussian sampling.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone)T Using polar form of Box-Muller transform, returns a pair of centered, Gaussian-distributed real numbers with scaled variance svar = true variance * (2*pi). See < Thttp://www.alpheratz.net/murison/Maple/GaussianDistribution/GaussianDistribution.pdf this link> for details. Generate n0 real, independent gaussians of scaled variance svar = true variance * (2*pi). |Execute an action repeatedly until its result fails to satisfy a predicate, and return that result (discarding all others).      1Generic interface for reflecting types to values.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone +,9:;<=DTReflection without fundep, and with tagged value. Intended only for low-level code; build specialized wrappers around it for specific functionality.)Reflect the value assiated with the type a.CA class and helper functions for rescaling cycltomic ring elements.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental!POSIX \( \def\Z{\mathbb{Z}} \)None<=Represents cyclotomic rings that are rescalable over their base rings. (This is a class because it allows for more efficient specialized implementations.)Rescale in the given basis.?Represents the basis used to rescale a cyclotomic ring element."Specialized convenience functions."Specialized convenience functions.5Functions related to the Chinese Remainder Transform.I(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017 GPL-2 ecrockett0@email.com  experimental $POSIX \( \def\C{\mathbb{C}} \) None )+9:;<=DRT,A ring with a ring embedding into some ring  r0 that has an invertible CRT transformation for every positive index m. Embeds from r to  r Projects from  r to r!aA ring that (possibly) supports invertible Chinese remainder transformations of various indices.The values of " for different indices m- should be consistent, in the sense that if \omega_m,  \omega_{m'} are respectively mth, m'th roots of unity where m divides m'#, then it should be the case that \omega_{m'}^{m'/m}=\omega_m."# for a given index mn. The method itself may be slow, but the function it returns should be fast, e.g., via internal memoization.#^Information that characterizes the (invertible) Chinese remainder transformation over a ring R (represented by the type r ), namely: a function that returns the ith power of some  principal m'th root of unity (for any integer i)the multiplicative inverse of  \hat{m}\in R.$ Embeds into the complex numbers \C(. (May not have sufficient precision.)% Embeds into the complex numbers \C.& Embeds into the complex numbers \C.' Embeds into the complex numbers \C.(Returns )Returns *Returns +Returns , Self-embed-Complex numbers have ! for any index m. Product ring/ Product ring !"# $%&'()*+,-./ !"#!" # !"# $%&'()*+,-./,Basic (unoptimized) finite field arithmetic.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental!POSIX \( \def\F{\mathbb{F}} \)None)*+,-:<=DEIRT 0"Convenience data type for writing 2 instances.2Represents fields over which we can get irreducible polynomials of desired degrees. (An instance of this class is defined in !Crypto.Lol.Types.IrreducibleChar2 and exported from Crypto.Lol.Types.)4=This wrapper for a list of coefficients is used to define a \F_{p^d}#-module structure for tensors over \F_p of dimension n, where d \mid n.7&Constraint synonym for a finite field.8%Constraint synonym for a prime field.9$A finite field of given degree over \F_p.:Yield a list of length exactly d* (i.e., including trailing zeros) of the \F_p.-coefficients with respect to the power basis.;"Yield a field element given up to d/ coefficients with respect to the power basis.<The order of the field: size (GF fp d) =  p^d =Trace into the prime subfield. #Traces of the power basis elements \{1, x, x^2, \ldots, x^{d-1}\}.>!Convenience function for writing 2 instances.0123456789 :; < = >?@ABCD0123456789:;<=>987<=:;2301>4560123456789 :; < = >?@ABCDYInterface for cyclotomic tensors, and helper functions for tensor indexing.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIX \( \def\Z{\mathbb{Z}} \) \( \def\Tw{\text{Tw}} \) \( \def\Tr{\text{Tr}} \) \( \def\CRT{\text{CRT}} \) \( \def\O{\mathcal{O}} \)None*+,:<=DLOQRT=K2A Kronecker product of zero of more matrices over r.LLY encapsulates all the core linear transformations needed for cyclotomic ring arithmetic. The type t m r6 represents a cyclotomic coefficient tensor of index m over base ring r. Most of the methods represent linear transforms corresponding to operations in particular bases. CRT-related methods are wrapped in K because they are well-defined only when a CRT basis exists over the ring r for index m._The superclass constraints are for convenience, to ensure that we can sample error tensors of s.WARNING:5 as with all fixed-point arithmetic, the methods in L may result in overflow (and thereby incorrect answers and potential security flaws) if the input arguments are too close to the bounds imposed by the base type. The acceptable range of inputs for each method is determined by the linear transform it implements.MConstraints needed by t to hold type r.N-Properties that hold for any index. Use with .O5Holds for any (legal) fully-applied tensor. Use with .P5Holds for any (legal) fully-applied tensor. Use with .Q5Holds for any (legal) fully-applied tensor. Use with .R5Holds for any (legal) fully-applied tensor. Use with .S5Holds for any (legal) fully-applied tensor. Use with .T5Holds for any (legal) fully-applied tensor. Use with .U3Convert a scalar to a tensor in the powerful basis.VVP converts from decoding-basis representation to powerful-basis representation; W is its inverse.WVP converts from decoding-basis representation to powerful-basis representation; W is its inverse.X Multiply by g_m in the powerful/decoding basisY Multiply by g_m in the powerful/decoding basisZ Divide by g_m& in the powerful/decoding basis. The j output indicates that the operation may fail, which happens exactly when the input is not divisible by g_m.[ Divide by g_m& in the powerful/decoding basis. The j output indicates that the operation may fail, which happens exactly when the input is not divisible by g_m.\FA tuple of all the operations relating to the CRT basis, in a single  value for safety. Clients should typically not use this method directly, but instead call the corresponding top-level functions: the elements of the tuple correpond to the functions j, k, l, m, n.]6Sample from the "tweaked" Gaussian error distribution t\cdot D in the decoding basis, where D has scaled variance v.^ Given the coefficient tensor of e( with respect to the decoding basis of R&, yield the (scaled) squared norm of  g_m \cdot e) under the canonical embedding, namely, .\hat{m}^{-1} \cdot \| \sigma(g_m \cdot e) \|^2._The twaceS linear transformation, which is the same in both the powerful and decoding bases.`The embed> linear transformations, for the powerful and decoding bases.aThe embed> linear transformations, for the powerful and decoding bases.bA tuple of all the extension-related operations involving the CRT bases, for safety. Clients should typically not use this method directly, but instead call the corresponding top-level functions: the elements of the tuple correpond to the functions o, p.cBMap a tensor in the powerful/decoding/CRT basis, representing an \O_{m'}/ element, to a vector of tensors representing \O_m$ elements in the same kind of basis.d7The powerful extension basis w.r.t. the powerful basis.e'A list of tensors representing the mod-p CRT set of the extension.f!Potentially optimized version of  for types that satisfy M.g5Potentially optimized zipWith for types that satisfy M.h3Potentially optimized unzip for types that satisfy M.i%Convenience value indicating whether \ exists.jcYield a tensor for a scalar in the CRT basis. (This function is simply an appropriate entry from \.)k Multiply by g_mG in the CRT basis. (This function is simply an appropriate entry from \.)l Divide by g_mH in the CRT basis. (This function is simply an appropriate entry from \.)mHThe CRT transform. (This function is simply an appropriate entry from \.)nPThe inverse CRT transform. (This function is simply an appropriate entry from \.)oSThe "tweaked trace" function for tensors in the CRT basis: For cyclotomic indices  m \mid m', 5\Tw(x) = (\hat{m}/\hat{m}') \cdot \Tr((g'/g) \cdot x)6. (This function is simply an appropriate entry from b.)pEmbed a tensor with index m* in the CRT basis to a tensor with index m'G in the CRT basis. (This function is simply an appropriate entry from b.) For a prime power p^e, converts any matrix M for prime p to \vece{1}_(p^{e-1}) \otimes M, where \vece{1} denotes the all-1s vector.q Extract the (i,j) element of a K.rA  \varphi(m)(-by-1 matrix of the CRT coefficients of g_m, for mth cyclotomic.sA  \varphi(m)0-by-1 matrix of the inverse CRT coefficients of g_m, for mth cyclotomic.tThe "tweaked" \CRT^* matrix: %\CRT^* \cdot \text{diag}(\sigma(g_m)). The "tweaked" \CRT^* matrix (for prime powers): %\CRT^* \cdot \text{diag}(\sigma(g_p)). A (p-1)(-by-1 matrix of the CRT coefficients of g_p, for pth cyclotomic. A (p-1)0-by-1 matrix of the inverse CRT coefficients of g_p , for the pth cyclotomic.u1Base-(p) digit reversal; input and output are in [p^e].v Convert a \Z_m^*# index to a linear tensor index in [m]. For a prime power p^e1, map a tensor index to the corresponding power j \in [\varphi(p^e)], as in the powerful basis. For a prime power p^e3, map a tensor index to the corresponding element i \in \Z_{p^e}^*.  Convert a \Z_m^* index to a linear tensor index.  Inverse of  . =Correspondences between the one-dim indexes into a basis of \O_{m'}=, and pair indices into [extension basis of ( O_{m'}/O_m )] \otimes [basis of \O_m]. The correspondences are the same for Pow, Dec, and CRT bases because they all have such a factorization. The first argument is the list of (\varphi(m),\varphi(m'))) pairs for the (merged) prime powers of m,(m').wqA collection of useful information for working with tensor extensions. The first component is a list of triples (p,e,e') where e, e') are respectively the exponents of prime p in m, m'. The next two components are  \varphi(m) and  \varphi(m')!. The final component is a pair ! ( \varphi(p^e), \varphi(p^{e'}))) for each triple in the first component.x A vector of  \varphi(m) entries, where the i;th entry is the index into the powerful/decoding basis of \O_{m'} of the i+th entry of the powerful/decoding basis of \O_m.y A vector of  \varphi(m) blocks of \varphi(m')/\varphi(m)T consecutive entries. Each block contains all those indices into the CRT basis of \O_{m'}A that "lie above" the corresponding index into the CRT basis of \O_m.zA lookup table for   applied to indices  [\varphi(m')].{A lookup table for   applied to indices  [\varphi(m')].|Same as z7, but only includes the second component of each pair.}The i_0th entry of the i_1th vector is    (i_1,i_0). Convenient reindexing functionsMaps an index of the extension ring array to its corresponding index in the base ring array (if it exists), with sign, under the decoding basis.JK LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop qrst u v wxy z{|} 3KLMcUZ[`aVNOPQRSTWXY\]^_bdefghijklmnopqrstuvwxyz{|}3LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopKqrstvwxy}z{|u+K  LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop qrst u v wxy z{|} 2|Safely exposes a "sentinel" indicating usage of either CRT basis over a base ring, or over its extension ring.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone *+:<=DQRT    Orphan instance of 2 for characteristic-2 fields.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone )+9;DRT ~ ~'A class for integers mod a prime power.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental!POSIX \( \def\Z{\mathbb{Z}} \)None:DR)Represents integers modulo a prime power.8An implementation of the integers modulo the prime base.&The prime and exponent of the modulus. Lift from \Z_p to a representative./A low-level implementation of cyclotomic rings.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalsPOSIX \( \def\Z{\mathbb{Z}} \) \( \def\F{\mathbb{F}} \) \( \def\Q{\mathbb{Q}} \) \( \def\O{\mathcal{O}} \)None%&)*+,-9:;<=DOQRT.Convenient synonym for  -able element type.1Constraints needed for CRT-related operations on  data.%Represents a cyclotomic ring such as  \Z[\zeta_m],  \Z_q[\zeta_m], and  \Q(\zeta_m)! in an explicit representation: t is the L( type for storing coefficient tensors; m is the cyclotomic index; rep is the representation (, , or ); r- is the base ring of the coefficients (e.g., \Z, \Z_q).The ,  ,   and  ? instances all work coefficient-wise (in the specified basis).'Convenient synonym for random sampling.1Convenient synonym for either CRT representation.KNullary index type representing the CRT basis over extension of base ring.=Nullary index type representing the CRT basis over base ring.3Nullary index type representing the decoding basis.3Nullary index type representing the powerful basis."Embed a scalar from the base ring."Embed a scalar from the base ring.1Type-restricted (and potentially more efficient) $ for powerful-basis representation.1Type-restricted (and potentially more efficient) $ for decoding-basis representation.Unzip in the powerful basis.Unzip in the decoding basis.GUnzip in the CRT basis over the base ring. The output components are / because each target base ring may not support .XUnzip in the CRT basis over the extension of the base ring. The output components are 1 because each target base might instead support . Multiply by the special element g_m.Divide by the special element g_m. WARNING: this implementation is not a constant-time algorithm, so information about the argument may be leaked through a timing channel. Similar to . Similar to .!Yield the scaled squared norm of  g_m \cdot e* under the canonical embedding, namely, .\hat{m}^{-1} \cdot \| \sigma(g_m \cdot e) \|^2 .6Sample from the "tweaked" Gaussian error distribution t\cdot D in the decoding basis, where D has scaled variance v.Generate an LWE error term from the "tweaked" Gaussian with given scaled variance, deterministically rounded using the decoding basis. (Note: This implementation uses m precision to generate the Gaussian sample, which may not be sufficient for rigorous proof-based security.)MGenerate an LWE error term from the "tweaked" Gaussian with scaled variance  v \cdot p^23, deterministically rounded to the given coset of R_p< using the decoding basis. (Note: This implementation uses m precision to generate the Gaussian sample, which may not be sufficient for rigorous proof-based security.)5Embed into an extension ring, for the powerful basis.5Embed into an extension ring, for the decoding basis.EEmbed into an extension ring, for the CRT basis. (The output is an . because the extension ring might not support .) Similar to . (The output is an + because the extension ring might support , in which case we never use .)-Twace into a subring, for the powerful basis.-Twace into a subring, for the decoding basis.=Twace into a subring, for the CRT basis. (The output is an ' because the subring might not support .) Similar to . (The output is an $ because the subring might support , in which case we never use .) Yield the \O_m-coefficients of an \O_{m'}1-element, with respect to the relative powerful \O_m-basis. Yield the \O_m-coefficients of an \O_{m'}1 element, with respect to the relative decoding \O_m-basis.The relative powerful basis of \O_{m'} / \O_m. The relative mod-(r) CRT set of \O_{m'} / \O_mm, represented with respect to the powerful basis (which seems to be the best choice for typical use cases).)Convert to powerful-basis representation. Convenient version of  for  CRT basis type.)Convert to decoding-basis representation.&Convert to a CRT-basis representation.7apply coefficient-wise (with respect to decoding basis)7apply coefficient-wise (with respect to powerful basis)R_p is an \F_{p^d} -module when d divides  \varphi(m), by applying d -dimensional \F_p-linear transform on d&-dim chunks of powerful basis coeffs.'only for appropriate CRT representation3only for appropriate CRT representation (otherwise u# would violate internal invariant)S  ((O   mAn implementation of cyclotomic rings that hides the internal representations of ring elements.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIX \( \def\Z{\mathbb{Z}} \) \( \def\F{\mathbb{F}} \) \( \def\Q{\mathbb{Q}} \) \( \def\Tw{\text{Tw}} \) \( \def\Tr{\text{Tr}} \) \( \def\O{\mathcal{O}} \)None%&*+,9:;<=DOQRT*1Constraints needed for most operations involving  data.%Represents a cyclotomic ring such as  \Z[\zeta_m],  \Z_q[\zeta_m], and  \Q[\zeta_m]! in an explicit representation: t is the L' type for storing coefficient tensors; m is the cyclotomic index; r. is the base ring of the coefficients (e.g., \Z, \Z_q).Wrap a  as a .Wrap a  as a .Wrap a  as a .Wrap a  as a .Wrap a  as a .Convenience wrapper.Convenience wrapper.:Embed a scalar from the base ring as a cyclotomic element. Unwrap a  as a " in powerful-basis representation. Unwrap a  as a " in decoding-basis representation. Unwrap a  as a  in a CRT-basis representation.Same as ,, but for the powerful-basis representation.Same as ,, but for the powerful-basis representation.!Yield an equivalent element that mayS be in a CRT representation. This can serve as an optimization hint. E.g., call ; prior to multiplying the same value by many other values. Multiply by the special element g of the mth cyclotomic. Divide by g , returning  if not evenly divisible. WARNING: this implementation is not a constant-time algorithm, so information about the argument may be leaked through a timing channel.6Sample from the "tweaked" Gaussian error distribution t\cdot D in the decoding basis, where D has scaled variance v.!Yield the scaled squared norm of  g_m \cdot e* under the canonical embedding, namely, .\hat{m}^{-1} \cdot \| \sigma(g_m \cdot e) \|^2.Generate an LWE error term with given scaled variance, deterministically rounded with respect to the decoding basis. (Note: This implementation uses m precision to generate the Gaussian sample, which may not be sufficient for rigorous proof-based security.)6Generate an LWE error term with given scaled variance  v \cdot p^2x over the given coset, deterministically rounded with respect to the decoding basis. (Note: This implementation uses m precision to generate the Gaussian sample, which may not be sufficient for rigorous proof-based security.)&Embed (lazily) into an extension ring. Force to a non- % constructor (for internal use only).&The "tweaked trace" (twace) function 9\Tw(x) = (\hat{m} / \hat{m}') \cdot \Tr((g' / g) \cdot x), which fixes R pointwise (i.e., twace . embed == id).Return the given element's coefficient vector with respect to the (relative) powerful/decoding basis of the cyclotomic extension \O_{m'} / \O_m . See also , .Specialized version of  for powerful basis.Specialized version of  for decoding basis.The relative powerful basis of \O_{m'} / \O_m.The relative mod-r CRT set of the extension.Lift using the specified basis.Lift using the powerful basis.Lift using the decoding basis.Unzip for a pair base ring. ?Force to powerful-basis representation (for internal use only). ?Force to decoding-basis representation (for internal use only). 6Force to a CRT representation (for internal use only).Cpromoted from base ring, using the decoding basis for best geometryCpromoted from base ring, using the powerful basis for best geometrypromoted from base ring*specialized instance for product rings of \Z_qs: ~2x faster algorithmR_p is an \F_{p^d} -module when d divides  \varphi(m), by applying d -dimensional \F_p-linear transform on d&-dim chunks of powerful basis coeffs.;   ""6   !bFunctions from one cyclotomic ring to another that are linear over a common subring.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental#POSIX \( \def\lcm{\text{lcm}} \)None*,/:<=DEIQRTQA convenient constraint synonym for extending a linear function to larger rings.An E-linear function from R to S. Construct an E8-linear function given a list of its output values (in S$) on the relative decoding basis of R/EM. The number of elements in the list must not exceed the size of the basis.1Evaluates the given linear function on the input. Extend an E-linear function R\to S to an E'-linear function R'\to S'1. (Mathematically, such extension only requires \lcm(r,e') | r' (not equality), but this generality would significantly complicate the implementation, and for our purposes there's no reason to use any larger r'.)7lifts with respect to powerful basis, for best geometry      "AFunctions and types for working with continuous ring-LWE samples.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental<POSIX \( \def\Z{\mathbb{Z}} \) \( \def\R{\mathbb{R}} \)None)*:<=T 4Common constraints for working with continuous RLWE. A continuous RLWE sample  (a,b) \in R_q \times K/(qR). (The second component is a  because the base type rrq representing \R/(q\Z)I, is an additive group but not a ring, so we can't usefully work with a  over it.) CA continuous RLWE sample with the given scaled variance and secret.=The error term of an RLWE sample, given the purported secret.The B of the error term of an RLWE sample, given the purported secret.A bound such that the % of a continuous error generated by  with scaled variance v (over the mTth cyclotomic field) is less than the bound except with probability approximately \epsilon.   the scaled variance\epsilon         #BFunctions and types for working with discretized ring-LWE samples.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone)*:<=T2Common constraints for working with discrete RLWE.A discrete RLWE sample  (a,b) \in R_q \times R_q.AA discrete RLWE sample with the given scaled variance and secret.=The error term of an RLWE sample, given the purported secret.The B of the error term of an RLWE sample, given the purported secret.A bound such that the + of a discretized error term generated by  with scaled variance v (over the mSth cyclotomic field) is less than the bound except with probability approximately \epsilon.the scaled variance\epsilon$:An implementation of modular arithmetic over the integers.I(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017 GPL-2 ecrockett0@email.com  experimental @POSIX \( \def\Z{\mathbb{Z}} \) \( \def\C{\mathbb{C}} \) None)*+,9:;<=DEIRT The ring \Z_q of integers modulo q!, using underlying integer type z. Yield a  principal mth root of unity \omega_m \in \Z_q^*. The implementation requires q3 to be prime. It works by finding a generator of \Z_q^* and raising it to the  (q-1)/m4 power. Therefore, outputs for different values of m are consistent, i.e., \omega_{m'}^(m'/m) = \omega_m.  The base-(b) gadget for modulus q$, over integers (not mod anything). SYield the error vector for a noisy multiple of the gadget (all over the integers).% Embeds into the complex numbers  \C . modulus qbase b input vector v = s cdot g^t + eerror e !"#$%&'()*+,-.  !"#$%&'()*+,-.%7An implementation of modular arithmetic over the reals.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental<POSIX \( \def\Z{\mathbb{Z}} \) \( \def\R{\mathbb{R}} \)None)*+9:;<=DIRT4 The ring \R/(q\Z) of reals modulo q", using underlying floating type r.45 6789454545 67893@Concrete types needed to instantiate cryptographic applications.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone 789:;4&8Provides applicative-like functions for indexed vectors.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone!")*+,2349:;<=DEIRT?/Indexed Zip Vector: a wrapper around a (boxed)   that has zip-py   behavior, analogous to   for lists. The index m9 enforces proper lengths (and is necessary to implement  ).@ DeconstructorAVSmart constructor that checks whether length of input is right (should be totient of m).BUnzip an IZipVector.? @AB CDEFGHI?@AB?@A@B? @AB CDEFGHI'Multiplicative groups mod q.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental!POSIX \( \def\Z{\mathbb{Z}} \)None)*+,:<=DQRTQThe multiplicative order of p (the argument) modulo m . Requires  \gcd(p,m)=1.RGiven p', returns a partition of the cosets of \Z_{m'}^* / <p>y (specified by representatives), where the cosets in each component are in bijective correspondence with the cosets of  \Z_m^* / <p>, under the natural ((bmod m)) homomorphism.Q RQRQRQ R4%Primary interface to the Lol library.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIX \( \def\Z{\mathbb{Z}} \) \( \def\C{\mathbb{C}} \) \( \def\Q{\mathbb{Q}} \) \( \def\R{\mathbb{R}} \) \( \def\F{\mathbb{F}} \) \( \def\O{\mathcal{O}} \)None2v         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw  !"#$%&'()*+,-./012345789:;EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (6Functions and types for working with ring-LWR samples.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimentalPOSIXNone*:<=TS)Common constraints for working with RLWR.TAn RLWR sample  (a,b) \in R_q \times R_p.U%An RLWR sample with the given secret.VThe b( component of an RLWR sample for secret s and given a, produced by rounding a\cdot s in the decoding basis.STUVSTUVTSUVSTUV)Pretty print type parameters.G(c) Eric Crockett, 2011-2017 Chris Peikert, 2011-2017GPL-2ecrockett0@email.com experimental!POSIX \( \def\C{\mathbb{C}} \)None%&*+,9:;<=DOQRTW/Constraint synonym for printing test parametersX.Wrapper type for printing test/benchmark namesYPrint a showable type argument WX    YZ[\]^_`abcdefghijWXYXYW WX    YZ[\]^_`abcdefghij 9  567/8/9/:/;/</=/>/?/@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1RSTUVWXVWYZ[\]^__`abcdefghijklmnoopqrstuvwxyz{|}~`a   ` a   ` a   ` a   p r   pqr`a     `a]^ !"#$%&'()*+,-./01234*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*QRRSTUVWXYZ[\]^_`/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/{/|/}/~/////00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 0 0 000000>11111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~otuz{                                                 ! ! ! !!!!!!!""""""######$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$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)lmnopqrstu#vwxyz{y|{y}y~yyyyyyyyyy-yyyyHIyJ***555555555555555555555555555555555555555555555555555555555555555555555555555555 5 5 5  55555555555555555 5!5"5#5$5%5&5'5(5)5*5+5,5-5.5/50515253545556575859:5;5<5=5>5?5@5A5B5C5D5EF5EGHIJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy[y\y]y^y_y`yaybycydyeyfygyhyiyjykylymy0ynyoypyqryqsyqtyquy~vy~wy~xyyy}zy}{y}|y}}y}~yyyyy-y-y-y-y-y-.yyyyy/yyyyyyyyyyZ[////////////////////////////////////////////111111111)1111111111111111111111`11111111111111111111111111111111111111 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@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 !1 "1 #1 $1 %1 &1 '1 (1 )1 *1 +1 ,1 -1 .1 /1 01 11 21 31 41 51 61 71 81 91 :1 ;1 <1 =1 >1 ?1 @1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 O1 P1 Q1 R1 S1 T1 U1 V1 W1 X1 Y1 Z1 [1 \1 ]1 ^1 _1 `1 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 {1 |1 }1 ~1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 59     5 5  5  5  5        S                            2 2 2 2 2 2 2 2 2 2 2 2 2 2    5 5 5  45   4 5     ! $ $ $ $ $ $ $ % %  5  5 &C& & & & ' ) ) ) ) ) ) )X "lol-0.6.0.0-3WEWYXTcbEL6epkR7FpjkeCrypto.Lol.PreludeCrypto.Lol.FactoredCrypto.Lol.Types.ProtoCrypto.Proto.RLWECrypto.Proto.Lol.TypeRepCrypto.Proto.Lol.Rq1Crypto.Proto.Lol.RqProductCrypto.Proto.RLWE.SampleDiscCrypto.Proto.RLWE.SampleRLWRCrypto.Proto.RLWE.SampleDisc1Crypto.Proto.RLWE.SampleRLWR1Crypto.Proto.Lol.RCrypto.Proto.Lol.LinearRqCrypto.Proto.Lol.Kq1Crypto.Proto.Lol.KqProductCrypto.Proto.RLWE.SampleContCrypto.Proto.RLWE.SampleCont1Crypto.Proto.LolCrypto.Lol.Utils.GenArgsCrypto.Lol.Types.RandomCrypto.Lol.Types.Unsafe.ComplexCrypto.Lol.GadgetCrypto.Lol.GaussRandomCrypto.Lol.Reflects Crypto.Lol.Cyclotomic.RescaleCycCrypto.Lol.CRTransCrypto.Lol.Types.FiniteFieldCrypto.Lol.Cyclotomic.Tensor!Crypto.Lol.Types.IrreducibleChar2Crypto.Lol.Types.ZPPCrypto.Lol.Cyclotomic.UCycCrypto.Lol.Cyclotomic.CycCrypto.Lol.Cyclotomic.LinearCrypto.Lol.RLWE.ContinuousCrypto.Lol.RLWE.DiscreteCrypto.Lol.Types.Unsafe.ZqBasicCrypto.Lol.Types.Unsafe.RRqCrypto.Lol.Types.IZipVectorCrypto.Lol.Types.ZmStarCrypto.Lol.RLWE.RLWRCrypto.Lol.Utils.ShowTypeCrypto.Lol.Types.NumericNumericPreludeNumericAlgebra.IntegralDomaindivModCrypto.Lol.PosBinDefsCrypto.Lol.PosBinCrypto.Lol.FactoredDefs!Crypto.Lol.Cyclotomic.CRTSentinelCrypto.Lol.Types Crypto.LolbaseGHC.IntInt64subPosaddPosPosOSBinB1D0D1unFunPPprimePP exponentPPPrimeBin PrimePowerFactoredfMulfPPMul fOddRadicalfDivfDividesfLCMfGCDppToFpToPPpToFpFree&constraints-0.9-EWSvp5BdRVq32HLVS7vhUMData.Constraint\\-protocol-buffers-2.4.0-FY61mPd2lnrD0nNyY4U3nrText.ProtocolBuffers.Basic uFromString uToString%singletons-2.2-FasjPmSs0nIHwLeRbL9UnkData.SingletonsSing protoInfofileDescriptorProtoTypeRepab$fTextMsgTypeRep$fTextTypeTypeRep$fReflectDescriptorTypeRep $fGPBTypeRep$fMessageAPImsg'(->)TypeRep $fWireTypeRep$fDefaultTypeRep$fMergeableTypeRep $fShowTypeRep $fEqTypeRep $fOrdTypeRep $fDataTypeRep$fGenericTypeRepRq1mqxs $fTextMsgRq1 $fTextTypeRq1$fReflectDescriptorRq1$fGPBRq1$fMessageAPImsg'(->)Rq1 $fWireRq1 $fDefaultRq1$fMergeableRq1 $fShowRq1$fEqRq1$fOrdRq1 $fDataRq1 $fGenericRq1 RqProductrqlist$fTextMsgRqProduct$fTextTypeRqProduct$fReflectDescriptorRqProduct$fGPBRqProduct$fMessageAPImsg'(->)RqProduct$fWireRqProduct$fDefaultRqProduct$fMergeableRqProduct$fShowRqProduct $fEqRqProduct$fOrdRqProduct$fDataRqProduct$fGenericRqProduct SampleDisc$fTextMsgSampleDisc$fTextTypeSampleDisc$fReflectDescriptorSampleDisc$fGPBSampleDisc$fMessageAPImsg'(->)SampleDisc$fWireSampleDisc$fDefaultSampleDisc$fMergeableSampleDisc$fShowSampleDisc$fEqSampleDisc$fOrdSampleDisc$fDataSampleDisc$fGenericSampleDisc SampleRLWR$fTextMsgSampleRLWR$fTextTypeSampleRLWR$fReflectDescriptorSampleRLWR$fGPBSampleRLWR$fMessageAPImsg'(->)SampleRLWR$fWireSampleRLWR$fDefaultSampleRLWR$fMergeableSampleRLWR$fShowSampleRLWR$fEqSampleRLWR$fOrdSampleRLWR$fDataSampleRLWR$fGenericSampleRLWR SampleDisc1$fTextMsgSampleDisc1$fTextTypeSampleDisc1$fReflectDescriptorSampleDisc1$fGPBSampleDisc1$fMessageAPImsg'(->)SampleDisc1$fWireSampleDisc1$fDefaultSampleDisc1$fMergeableSampleDisc1$fShowSampleDisc1$fEqSampleDisc1$fOrdSampleDisc1$fDataSampleDisc1$fGenericSampleDisc1 SampleRLWR1$fTextMsgSampleRLWR1$fTextTypeSampleRLWR1$fReflectDescriptorSampleRLWR1$fGPBSampleRLWR1$fMessageAPImsg'(->)SampleRLWR1$fWireSampleRLWR1$fDefaultSampleRLWR1$fMergeableSampleRLWR1$fShowSampleRLWR1$fEqSampleRLWR1$fOrdSampleRLWR1$fDataSampleRLWR1$fGenericSampleRLWR1R $fTextMsgR $fTextTypeR$fReflectDescriptorR$fGPBR$fMessageAPImsg'(->)R$fWireR $fDefaultR $fMergeableR$fShowR$fEqR$fOrdR$fDataR $fGenericRLinearRqercoeffs$fTextMsgLinearRq$fTextTypeLinearRq$fReflectDescriptorLinearRq $fGPBLinearRq$fMessageAPImsg'(->)LinearRq$fWireLinearRq$fDefaultLinearRq$fMergeableLinearRq$fShowLinearRq $fEqLinearRq $fOrdLinearRq$fDataLinearRq$fGenericLinearRqKq1 $fTextMsgKq1 $fTextTypeKq1$fReflectDescriptorKq1$fGPBKq1$fMessageAPImsg'(->)Kq1 $fWireKq1 $fDefaultKq1$fMergeableKq1 $fShowKq1$fEqKq1$fOrdKq1 $fDataKq1 $fGenericKq1 KqProductkqlist$fTextMsgKqProduct$fTextTypeKqProduct$fReflectDescriptorKqProduct$fGPBKqProduct$fMessageAPImsg'(->)KqProduct$fWireKqProduct$fDefaultKqProduct$fMergeableKqProduct$fShowKqProduct $fEqKqProduct$fOrdKqProduct$fDataKqProduct$fGenericKqProduct SampleCont$fTextMsgSampleCont$fTextTypeSampleCont$fReflectDescriptorSampleCont$fGPBSampleCont$fMessageAPImsg'(->)SampleCont$fWireSampleCont$fDefaultSampleCont$fMergeableSampleCont$fShowSampleCont$fEqSampleCont$fOrdSampleCont$fDataSampleCont$fGenericSampleCont SampleCont1$fTextMsgSampleCont1$fTextTypeSampleCont1$fReflectDescriptorSampleCont1$fGPBSampleCont1$fMessageAPImsg'(->)SampleCont1$fWireSampleCont1$fDefaultSampleCont1$fMergeableSampleCont1$fShowSampleCont1$fEqSampleCont1$fOrdSampleCont1$fDataSampleCont1$fGenericSampleCont1GenArgsgenArgsResultOf $fGenArgs(->) CryptoRandevalCryptoRandIO$fRandomGenCryptoRand$fCryptoRandomGenCryptoRand Protoable ProtoTypetoProto fromProto ProtoReadablemsgPutmsgGet readProtoTypewriteProtoTypeparseProtoFilewriteProtoFile$fProtoableFingerprint$fProtoable(,) $fProtoable[]Matrix PolynomialPID RealIntegralAbsolute ToIntegerOrdFloatRealTranscendentalTranscendental Algebraic RealFieldRealRingField ToRationalIntegralDomainModuleRingAdditive ZeroTestablemaxminabs realToField^modinvdecomp roundMultroundScalarCentered divModCentComplex roundComplexcisrealimagfromReal$fRandomComplex$fNFDataComplex $fCComplex $fCComplex0 $fCComplex1 $fCComplex2 $fCComplex3 $fEqComplex $fShowComplexSPosAddPosSubPos AddPosSym0 AddPosSym1 SubPosSym0 SubPosSym1SSym0SSym1OSym0sSubPossAddPosposToIntBinCPosCSBinD1Sym0D1Sym1D0Sym0D0Sym1B1Sym0intToPosbinToIntintToBinreifyPos reifyPosIreifyBin reifyBinIposTypebinTypeposDecbinDecintDecprimesprimeP16P15P14P13P12P11P10P9P8P7P6P5P4P3P2P1B128B127B126B125B124B123B122B121B120B119B118B117B116B115B114B113B112B111B110B109B108B107B106B105B104B103B102B101B100B99B98B97B96B95B94B93B92B91B90B89B88B87B86B85B84B83B82B81B80B79B78B77B76B75B74B73B72B71B70B69B68B67B66B65B64B63B62B61B60B59B58B57B56B55B54B53B52B51B50B49B48B47B46B45B44B43B42B41B40B39B38B37B36B35B34B33B32B31B30B29B28B27B26B25B24B23B22B21B20B19B18B17B16B15B14B13B12B11B10B9B8B7B6B5B4B3B2 SFactored SPrimePower SPrimeBin ExponentPPPrimePPUnPPUnFsUnFsUnPPFPPMulFMulPToFPToPPPpToFFGCDFLCMFDividesFDiv FOddRadicalsPpToFsPToPPsPToFPPCoprimeDividesFactPPowPrime*/PFree reifyPrime reifyPrimeI reifyPPow reifyPPowI reifyFact reifyFactI transDivides gcdDivides lcmDivides lcm2DividespSplitTheorems pFreeDividesppToPPppPPowppsFact valuePrime valueFact totientFact valueHatFact radicalFactoddRadicalFactvalueFtotientF valueHatFradicalF oddRadicalF primePPow exponentPPow valuePPow totientPPow valueHatPPow radicalPPowoddRadicalPPowvaluePP totientPP valueHatPP radicalPP oddRadicalPPvaluePvalueHatpTypeppTypefTypepDecppDecfDec intToFactF512F511F510F509F508F507F506F505F504F503F502F501F500F499F498F497F496F495F494F493F492F491F490F489F488F487F486F485F484F483F482F481F480F479F478F477F476F475F474F473F472F471F470F469F468F467F466F465F464F463F462F461F460F459F458F457F456F455F454F453F452F451F450F449F448F447F446F445F444F443F442F441F440F439F438F437F436F435F434F433F432F431F430F429F428F427F426F425F424F423F422F421F420F419F418F417F416F415F414F413F412F411F410F409F408F407F406F405F404F403F402F401F400F399F398F397F396F395F394F393F392F391F390F389F388F387F386F385F384F383F382F381F380F379F378F377F376F375F374F373F372F371F370F369F368F367F366F365F364F363F362F361F360F359F358F357F356F355F354F353F352F351F350F349F348F347F346F345F344F343F342F341F340F339F338F337F336F335F334F333F332F331F330F329F328F327F326F325F324F323F322F321F320F319F318F317F316F315F314F313F312F311F310F309F308F307F306F305F304F303F302F301F300F299F298F297F296F295F294F293F292F291F290F289F288F287F286F285F284F283F282F281F280F279F278F277F276F275F274F273F272F271F270F269F268F267F266F265F264F263F262F261F260F259F258F257F256F255F254F253F252F251F250F249F248F247F246F245F244F243F242F241F240F239F238F237F236F235F234F233F232F231F230F229F228F227F226F225F224F223F222F221F220F219F218F217F216F215F214F213F212F211F210F209F208F207F206F205F204F203F202F201F200F199F198F197F196F195F194F193F192F191F190F189F188F187F186F185F184F183F182F181F180F179F178F177F176F175F174F173F172F171F170F169F168F167F166F165F164F163F162F161F160F159F158F157F156F155F154F153F152F151F150F149F148F147F146F145F144F143F142F141F140F139F138F137F136F135F134F133F132F131F130F129F128F127F126F125F124F123F122F121F120F119F118F117F116F115F114F113F112F111F110F109F108F107F106F105F104F103F102F101F100F99F98F97F96F95F94F93F92F91F90F89F88F87F86F85F84F83F82F81F80F79F78F77F76F75F74F73F72F71F70F69F68F67F66F65F64F63F62F61F60F59F58F57F56F55F54F53F52F51F50F49F48F47F46F45F44F43F42F41F40F39F38F37F36F35F34F33F32F31F30F29F28F27F26F25F24F23F22F21F20F19F18F17F16F15F14F13F12F11F10F9F8F7F6F5F4F3F2F1F2048F1024PP128PP64PP32PP16PP8PP4PP2PP81PP27PP9PP3PP11PP7PP5Prime659Prime653Prime647Prime643Prime641Prime631Prime619Prime617Prime613Prime607Prime601Prime599Prime593Prime587Prime577Prime571Prime569Prime563Prime557Prime547Prime541Prime523Prime521Prime509Prime503Prime499Prime491Prime487Prime479Prime467Prime463Prime461Prime457Prime449Prime443Prime439Prime433Prime431Prime421Prime419Prime409Prime401Prime397Prime389Prime383Prime379Prime373Prime367Prime359Prime353Prime349Prime347Prime337Prime331Prime317Prime313Prime311Prime307Prime293Prime283Prime281Prime277Prime271Prime269Prime263Prime257Prime251Prime241Prime239Prime233Prime229Prime227Prime223Prime211Prime199Prime197Prime193Prime191Prime181Prime179Prime173Prime167Prime163Prime157Prime151Prime149Prime139Prime137Prime131Prime127Prime113Prime109Prime107Prime103Prime101Prime97Prime89Prime83Prime79Prime73Prime71Prime67Prime61Prime59Prime53Prime47Prime43Prime41Prime37Prime31Prime29Prime23Prime19Prime17Prime13Prime11Prime7Prime5Prime3Prime2$fMonadRandomTaggedT$fNFDataTaggedTEncodelsdToMSDRescalerescaleLift'liftLiftOfLiftReducereduceSubgroup fromSubgroupModModRepmodulus EnumerablevaluesCharOfmsdToLSD rescaleMod roundCoset fromJust'pureTpeelTpasteT withWitness withWitnessT $fRandom(,) $fEncodes(,) $fRescaleb(,) $fRescalea(,) $fRescale(,)a $fRescale(,)c$fRescale(,)a0 $fRescale(,)b $fReducea(,)$fMod(,)$fC(,)$fC(,)0$fC(,)1 $fLift'(,) $fDefaultBool$fVectorVectorMaybe$fMVectorMVectorMaybe $fUnboxMaybeCorrectcorrect DecomposeDecompOf decomposeGadgetgadgetencodeBaseBGadTrivGad decomposeT decomposeListdecomposeMatrix$fCorrectkgad(,)$fDecomposekgad(,)$fGadgetkgad(,) realGaussian realGaussiansReflectsvalue$fReflectsTYPEqr$fReflectsFactoredmi$fReflectsPrimePowerppi$fReflectsPrimeBinpi$fReflectsNatai RescaleCyc rescaleCycBasisPowDec rescalePow rescaleDecCRTEmbedCRTExttoExtfromExtCRTranscrtInfoCRTInfo$fCRTEmbedInteger$fCRTEmbedInt64 $fCRTEmbedInt$fCRTEmbedDouble$fCRTransMaybeInteger$fCRTransMaybeInt64$fCRTransMaybeInt$fCRTransMaybeDouble$fCRTEmbedComplex$fCRTransmonComplex $fCRTEmbed(,)$fCRTransmon(,)XIrreduciblePolyirreduciblePoly TensorCoeffsCoeffsunCoeffsGFCtx PrimeFieldGFtoListfromListsizetrace^^$fCGFTensorCoeffs$fCRTransMaybeGF$fCGF$fCGF0 $fRandomGF$fEnumerableGF$fEqGF$fShowGF$fCGF1$fCGF2 $fNFDataGF$fCTensorCoeffsKronTensorTElt entailIndexT entailEqT entailZTT entailNFDataT entailRandomT entailShowT entailModuleT scalarPowllInvmulGPowmulGDecdivGPowdivGDeccrtFuncs tGaussianDec gSqNormDec twacePowDecembedPowembedDec crtExtFuncs powBasisPow crtSetDecfmapTzipWithTunzipT hasCRTFuncs scalarCRTmulGCRTdivGCRTcrtcrtInvtwaceCRTembedCRTindexKgCRTKgInvCRTKtwCRTsdigitRevzmsToIndexFact indexInfoextIndicesPowDec extIndicesCRTbaseIndicesPowbaseIndicesDecbaseIndicesCRTextIndicesCoeffs$fIrreduciblePolyaZPPZpOf modulusZPPliftZpNFEltUCRTEltUCycUCycPCUCycECECDPfmapPowfmapDecunzipPowunzipDec unzipCRTC unzipCRTEmulGdivGCRTCgSqNorm tGaussian errorRounded errorCoset embedCRTC embedCRTEtwacePowtwaceDec twaceCRTC twaceCRTE coeffsPow coeffsDecpowBasiscrtSettoPowtoDectoCRT $fShowUCyc $fShowUCyc0 $fShowUCyc1 $fShowUCyc2$fProtoableUCyc $fNFDataUCyc$fRandomEither $fRandomUCyc $fRandomUCyc0$fTraversableUCyc$fTraversableUCyc0$fFoldableUCyc$fFoldableUCyc0$fFoldableUCyc1$fApplicativeUCyc$fApplicativeUCyc0 $fFunctorUCyc$fFunctorUCyc0$fRescaleUCycUCyc$fRescaleUCycUCyc0 $fLift'UCyc $fLift'UCyc0$fReduceUCycUCyc$fReduceUCycUCyc0 $fCGFUCyc $fCrEither$fCrUCyc $fCrUCyc0 $fCEither $fCEither0$fCUCyc$fCUCyc0$fCUCyc1$fCUCyc2$fCUCyc3$fEqUCyc $fEqUCyc0 $fEqUCyc1CEltCyccycPowcycDeccycCRTcycCRTCcycCRTEcycPCcycPE scalarCycuncycPowuncycDecuncycCRT advisePow adviseDec adviseCRTdivGembedtwace coeffsCycliftCycliftPowliftDecunzipCyc $fShowCyc$fProtoableCyc $fRandomCyc $fNFDataCyc$fCorrectkgadCyc$fDecomposekgadCyc$fGadgetkgadCyc$fRescaleCycCyc(,)b$fRescaleCycCycab$fReduceCycCyc$fCGFCyc$fCCyc$fCCyc0$fEqCyc$fCCyc1 ExtendLinIdxLinear linearDecevalLin extendLin$fProtoableLinear $fLift'Linear$fReduceLinearLinear $fCLinear$fNFDataLinearRLWECtxSamplesample errorTerm errorGSqNorm errorBoundZqBasicZqBgoodQs$fRandomZqBasic$fCorrectTYPEBaseBGadZqBasic$fDecomposeTYPEBaseBGadZqBasic$fGadgetTYPEBaseBGadZqBasic$fCorrectTYPETrivGadZqBasic$fDecomposeTYPETrivGadZqBasic$fGadgetTYPETrivGadZqBasic $fCZqBasic $fCZqBasic0 $fCZqBasic1 $fCZqBasic2$fCRTEmbedZqBasic$fCRTransMaybeZqBasic$fEncodeZqBasicZqBasic$fRescaleZqBasicZqBasic$fLift'ZqBasic$fReduceIntegerZqBasic$fReducezZqBasic $fZPPZqBasic $fModZqBasic$fEnumerableZqBasic $fEqZqBasic $fOrdZqBasic $fCZqBasic3 $fShowZqBasic$fNFDataZqBasicRRqRRq'$fSubgroupZqBasicRRq$fCRRq $fLift'RRq $fReducerRRq$fEqRRq$fOrdRRq$fCRRq0 $fShowRRq $fNFDataRRq IZipVector unIZipVector iZipVectorunzipIZV$fProtoableIZipVector$fProtoableIZipVector0$fProtoableIZipVector1$fProtoableIZipVector2$fProtoableIZipVector3 $fCVector$fApplicativeIZipVector$fShowIZipVector$fEqIZipVector$fNFDataIZipVector$fFunctorIZipVector$fFoldableIZipVector$fTraversableIZipVector $fCIZipVectororderpartitionCosetsRLWRCtx roundedProdShowTypeArgTypeshowType $fShowArgType$fShowArgType0$fShowArgType1$fShowArgType2$fShowArgType3$fShowArgType4$fShowArgType5$fShowArgType6$fShowArgType7$fShowArgType8$fShowArgType9$fShowArgType10$fShowArgType11$fShowArgType12$fShowArgType13$fShowArgType14$fShowArgType15(crypto-api-0.13.2-GrgsV9tsmc9F0uD4JVFF0p Crypto.RandomCryptoRandomGen!random-1.1-54KmMHXjttlERYcr1mvsAe System.Random RandomGen(MonadRandom-0.5.1-JZDHh48XIiFIW3gNAP3ZYGControl.Monad.Trans.Random.LazyRandTbytestring-0.10.8.1Data.ByteString.Lazy.Internal ByteString,numeric-prelude-0.4.2-3zukeMm1bMAKY8cRoZU5IOMathObj.MatrixTMathObj.PolynomialAlgebra.PrincipalIdealDomainAlgebra.RealIntegralAlgebra.AbsoluteAlgebra.ToIntegerghc-prim GHC.ClassesOrdAlgebra.RealTranscendentalAlgebra.TranscendentalAlgebra.AlgebraicAlgebra.RealFieldAlgebra.RealRing Algebra.FieldAlgebra.ToRationalAlgebra.Module Algebra.RingAlgebra.AdditiveAlgebra.ZeroTestable integer-gmpGHC.Integer.TypeInteger $fNFDataTdeepseq-1.4.2.0Control.DeepSeqNFData $fNFDataT0 $fCDouble GHC.TypesDoubleGHC.Base++GHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$GHC.Real realToFracGHC.EnumBoundedmaxBoundminBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpredEq==/=Monadfailreturn>>=>>Functorfmap<$>=><<=compareGHC.ReadRead readsPrecreadListGHC.ShowShow showsPrecshowshowList Data.Foldablefoldrnulllengthfoldlfoldl1foldr1maximumminimumelemData.TraversablemapMsequenceBoolFalseTrueCharFloatIntMaybeNothingJustOrderingLTEQGTIO Data.EitherEitherLeftRight=<<mapM_ sequence_ takeWhilereadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar Text.ReadreadreadsGHC.IO.ExceptionioErrornotElemallanyorand concatMapconcatGHC.IOFilePath userErrorIOErroreither Data.OldListunwordswordsunlineslineslex readParenText.ParserCombinators.ReadPReadS showParen showStringshowCharshowsShowSunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlinitlasttailhead Data.MaybemaybeuncurrycurryasTypeOfuntil$!flip.constidStringGHC.Err undefinederror&&||notatan2approxRationaltruncateroundceilingfloor splitFractionfraction*>^?piexplog**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanhsqrt^/ fieldPower ringPower fromIntegral toInteger toRational fromRationalrecip fromRational'^- Number.Ratio% numerator denominatorRationalquotremquotRemsignumextendedEuclideuclid extendedGCDgcdlcm Algebra.UnitsisUnit stdAssociatestdUnit stdUnitInvoddevendividesmoddivisZeroproduct1productsqr fromIntegeronesum1sumsubtract+-negatezeroNumericPrelude.Basecatch(utility-ht-0.0.12-IQc75ZjtSJC6jKWDjW00ebData.Bool.HT.Private ifThenElseSingIEquals_1627625776Compare_1627626540Equals_1627629164Case_1627629215Case_1627629228Compare_1627629233Compare_1627626540Sym0#Compare_1627626540Sym0KindInferenceCompare_1627626540Sym1#Compare_1627626540Sym1KindInferenceCompare_1627626540Sym2AddPosSym0KindInferenceAddPosSym1KindInference AddPosSym2SubPosSym0KindInferenceSubPosSym1KindInference SubPosSym2SSym0KindInferenceSOSSD:R:DemoteRepPosCompare_1627629233Sym0#Compare_1627629233Sym0KindInferenceCompare_1627629233Sym1#Compare_1627629233Sym1KindInferenceCompare_1627629233Sym2!Let1627629220Scrutinee_1627629160%Let1627629220Scrutinee_1627629160Sym02Let1627629220Scrutinee_1627629160Sym0KindInference%Let1627629220Scrutinee_1627629160Sym12Let1627629220Scrutinee_1627629160Sym1KindInference%Let1627629220Scrutinee_1627629160Sym2!Let1627629207Scrutinee_1627629162%Let1627629207Scrutinee_1627629162Sym02Let1627629207Scrutinee_1627629162Sym0KindInference%Let1627629207Scrutinee_1627629162Sym12Let1627629207Scrutinee_1627629162Sym1KindInference%Let1627629207Scrutinee_1627629162Sym2D1Sym0KindInferenceD0Sym0KindInferenceSB1SD0SD1D:R:DemoteRepBinvaluePPs totientPPs radicalPPs oddRadicalPPs factorize' factorizeunPFEquals_1627678459Equals_1627678470Equals_1627678481Compare_1627678534ppMulppsMulCase_1627682076 ppsOddRadppsDiv ppsDividesppsLCMppsGCDCase_1627688568Case_1627688688Case_1627688724Case_1627688760Case_1627688857Case_1627689053Case_1627689181Case_1627711774Compare_1627678534Sym0#Compare_1627678534Sym0KindInferenceCompare_1627678534Sym1#Compare_1627678534Sym1KindInferenceCompare_1627678534Sym2UnPUnPSym0UnPSym0KindInferenceUnPSym1ExponentPPSym0ExponentPPSym0KindInferenceExponentPPSym1 PrimePPSym0PrimePPSym0KindInference PrimePPSym1UnPPSym0UnPPSym0KindInferenceUnPPSym1UnFSym0UnFSym0KindInferenceUnFSym1FSym0FSym0KindInferenceFSym1PPSym0PPSym0KindInferencePPSym1PSym0PSym0KindInferencePSym1SFSPPSPsPrimePP sExponentPPsUnPD:R:DemoteRepFactoredPpsMulPpMul FPPMulSym0FPPMulSym0KindInference FPPMulSym1FPPMulSym1KindInference FPPMulSym2FMulSym0FMulSym0KindInferenceFMulSym1FMulSym1KindInferenceFMulSym2 PpsMulSym0PpsMulSym0KindInference PpsMulSym1PpsMulSym1KindInference PpsMulSym2 PpMulSym0PpMulSym0KindInference PpMulSym1PpMulSym1KindInference PpMulSym2!Let1627682050Scrutinee_1627681957%Let1627682050Scrutinee_1627681957Sym02Let1627682050Scrutinee_1627681957Sym0KindInference%Let1627682050Scrutinee_1627681957Sym12Let1627682050Scrutinee_1627681957Sym1KindInference%Let1627682050Scrutinee_1627681957Sym22Let1627682050Scrutinee_1627681957Sym2KindInference%Let1627682050Scrutinee_1627681957Sym32Let1627682050Scrutinee_1627681957Sym3KindInference%Let1627682050Scrutinee_1627681957Sym42Let1627682050Scrutinee_1627681957Sym4KindInference%Let1627682050Scrutinee_1627681957Sym5Let1627681974PpLet1627681974PpsLet1627681974Pp'Let1627681974PpSym0 Let1627681974PpSym0KindInferenceLet1627681974PpSym1 Let1627681974PpSym1KindInferenceLet1627681974PpSym2 Let1627681974PpSym2KindInferenceLet1627681974PpSym3 Let1627681974PpSym3KindInferenceLet1627681974PpSym4 Let1627681974PpSym4KindInferenceLet1627681974PpSym5Let1627681974PpsSym0!Let1627681974PpsSym0KindInferenceLet1627681974PpsSym1!Let1627681974PpsSym1KindInferenceLet1627681974PpsSym2!Let1627681974PpsSym2KindInferenceLet1627681974PpsSym3!Let1627681974PpsSym3KindInferenceLet1627681974PpsSym4!Let1627681974PpsSym4KindInferenceLet1627681974PpsSym5Let1627681974Pp'Sym0!Let1627681974Pp'Sym0KindInferenceLet1627681974Pp'Sym1!Let1627681974Pp'Sym1KindInferenceLet1627681974Pp'Sym2!Let1627681974Pp'Sym2KindInferenceLet1627681974Pp'Sym3!Let1627681974Pp'Sym3KindInferenceLet1627681974Pp'Sym4!Let1627681974Pp'Sym4KindInferenceLet1627681974Pp'Sym5sPpMulsPpsMulsFMulsFPPMul#D:R:ApplyPrimePower(->)FPPMulSym0l0PpsGCDPpsLCM PpsDividesPpsDiv PpsOddRadPToFSym0PToFSym0KindInferencePToFSym1 PToPPSym0PToPPSym0KindInference PToPPSym1 PpToFSym0PpToFSym0KindInference PpToFSym1FGCDSym0FGCDSym0KindInferenceFGCDSym1FGCDSym1KindInferenceFGCDSym2FLCMSym0FLCMSym0KindInferenceFLCMSym1FLCMSym1KindInferenceFLCMSym2 FDividesSym0FDividesSym0KindInference FDividesSym1FDividesSym1KindInference FDividesSym2FDivSym0FDivSym0KindInferenceFDivSym1FDivSym1KindInferenceFDivSym2FOddRadicalSym0FOddRadicalSym0KindInferenceFOddRadicalSym1 PpsGCDSym0PpsGCDSym0KindInference PpsGCDSym1PpsGCDSym1KindInference PpsGCDSym2 PpsLCMSym0PpsLCMSym0KindInference PpsLCMSym1PpsLCMSym1KindInference PpsLCMSym2PpsDividesSym0PpsDividesSym0KindInferencePpsDividesSym1PpsDividesSym1KindInferencePpsDividesSym2 PpsDivSym0PpsDivSym0KindInference PpsDivSym1PpsDivSym1KindInference PpsDivSym2 PpsOddRadSym0PpsOddRadSym0KindInference PpsOddRadSym1!Let1627689147Scrutinee_1627688528%Let1627689147Scrutinee_1627688528Sym02Let1627689147Scrutinee_1627688528Sym0KindInference%Let1627689147Scrutinee_1627688528Sym12Let1627689147Scrutinee_1627688528Sym1KindInference%Let1627689147Scrutinee_1627688528Sym22Let1627689147Scrutinee_1627688528Sym2KindInference%Let1627689147Scrutinee_1627688528Sym32Let1627689147Scrutinee_1627688528Sym3KindInference%Let1627689147Scrutinee_1627688528Sym42Let1627689147Scrutinee_1627688528Sym4KindInference%Let1627689147Scrutinee_1627688528Sym52Let1627689147Scrutinee_1627688528Sym5KindInference%Let1627689147Scrutinee_1627688528Sym6Let1627689080YsLet1627689080XsLet1627689080YsSym0 Let1627689080YsSym0KindInferenceLet1627689080YsSym1 Let1627689080YsSym1KindInferenceLet1627689080YsSym2 Let1627689080YsSym2KindInferenceLet1627689080YsSym3 Let1627689080YsSym3KindInferenceLet1627689080YsSym4 Let1627689080YsSym4KindInferenceLet1627689080YsSym5 Let1627689080YsSym5KindInferenceLet1627689080YsSym6Let1627689080XsSym0 Let1627689080XsSym0KindInferenceLet1627689080XsSym1 Let1627689080XsSym1KindInferenceLet1627689080XsSym2 Let1627689080XsSym2KindInferenceLet1627689080XsSym3 Let1627689080XsSym3KindInferenceLet1627689080XsSym4 Let1627689080XsSym4KindInferenceLet1627689080XsSym5 Let1627689080XsSym5KindInferenceLet1627689080XsSym6!Let1627689019Scrutinee_1627688530%Let1627689019Scrutinee_1627688530Sym02Let1627689019Scrutinee_1627688530Sym0KindInference%Let1627689019Scrutinee_1627688530Sym12Let1627689019Scrutinee_1627688530Sym1KindInference%Let1627689019Scrutinee_1627688530Sym22Let1627689019Scrutinee_1627688530Sym2KindInference%Let1627689019Scrutinee_1627688530Sym32Let1627689019Scrutinee_1627688530Sym3KindInference%Let1627689019Scrutinee_1627688530Sym42Let1627689019Scrutinee_1627688530Sym4KindInference%Let1627689019Scrutinee_1627688530Sym52Let1627689019Scrutinee_1627688530Sym5KindInference%Let1627689019Scrutinee_1627688530Sym6Let1627688886Pp'Let1627688886YsLet1627688886PpLet1627688886XsLet1627688886Pp'Sym0!Let1627688886Pp'Sym0KindInferenceLet1627688886Pp'Sym1!Let1627688886Pp'Sym1KindInferenceLet1627688886Pp'Sym2!Let1627688886Pp'Sym2KindInferenceLet1627688886Pp'Sym3!Let1627688886Pp'Sym3KindInferenceLet1627688886Pp'Sym4!Let1627688886Pp'Sym4KindInferenceLet1627688886Pp'Sym5!Let1627688886Pp'Sym5KindInferenceLet1627688886Pp'Sym6Let1627688886YsSym0 Let1627688886YsSym0KindInferenceLet1627688886YsSym1 Let1627688886YsSym1KindInferenceLet1627688886YsSym2 Let1627688886YsSym2KindInferenceLet1627688886YsSym3 Let1627688886YsSym3KindInferenceLet1627688886YsSym4 Let1627688886YsSym4KindInferenceLet1627688886YsSym5 Let1627688886YsSym5KindInferenceLet1627688886YsSym6Let1627688886PpSym0 Let1627688886PpSym0KindInferenceLet1627688886PpSym1 Let1627688886PpSym1KindInferenceLet1627688886PpSym2 Let1627688886PpSym2KindInferenceLet1627688886PpSym3 Let1627688886PpSym3KindInferenceLet1627688886PpSym4 Let1627688886PpSym4KindInferenceLet1627688886PpSym5 Let1627688886PpSym5KindInferenceLet1627688886PpSym6Let1627688886XsSym0 Let1627688886XsSym0KindInferenceLet1627688886XsSym1 Let1627688886XsSym1KindInferenceLet1627688886XsSym2 Let1627688886XsSym2KindInferenceLet1627688886XsSym3 Let1627688886XsSym3KindInferenceLet1627688886XsSym4 Let1627688886XsSym4KindInferenceLet1627688886XsSym5 Let1627688886XsSym5KindInferenceLet1627688886XsSym6Let1627688872XsLet1627688872XsSym0 Let1627688872XsSym0KindInferenceLet1627688872XsSym1 Let1627688872XsSym1KindInferenceLet1627688872XsSym2!Let1627688823Scrutinee_1627688536%Let1627688823Scrutinee_1627688536Sym02Let1627688823Scrutinee_1627688536Sym0KindInference%Let1627688823Scrutinee_1627688536Sym12Let1627688823Scrutinee_1627688536Sym1KindInference%Let1627688823Scrutinee_1627688536Sym22Let1627688823Scrutinee_1627688536Sym2KindInference%Let1627688823Scrutinee_1627688536Sym32Let1627688823Scrutinee_1627688536Sym3KindInference%Let1627688823Scrutinee_1627688536Sym42Let1627688823Scrutinee_1627688536Sym4KindInference%Let1627688823Scrutinee_1627688536Sym52Let1627688823Scrutinee_1627688536Sym5KindInference%Let1627688823Scrutinee_1627688536Sym6Let1627688789XsLet1627688789XsSym0 Let1627688789XsSym0KindInferenceLet1627688789XsSym1 Let1627688789XsSym1KindInferenceLet1627688789XsSym2 Let1627688789XsSym2KindInferenceLet1627688789XsSym3 Let1627688789XsSym3KindInferenceLet1627688789XsSym4 Let1627688789XsSym4KindInferenceLet1627688789XsSym5 Let1627688789XsSym5KindInferenceLet1627688789XsSym6!Let1627688726Scrutinee_1627688542%Let1627688726Scrutinee_1627688542Sym02Let1627688726Scrutinee_1627688542Sym0KindInference%Let1627688726Scrutinee_1627688542Sym12Let1627688726Scrutinee_1627688542Sym1KindInference%Let1627688726Scrutinee_1627688542Sym22Let1627688726Scrutinee_1627688542Sym2KindInference%Let1627688726Scrutinee_1627688542Sym32Let1627688726Scrutinee_1627688542Sym3KindInference%Let1627688726Scrutinee_1627688542Sym42Let1627688726Scrutinee_1627688542Sym4KindInference%Let1627688726Scrutinee_1627688542Sym52Let1627688726Scrutinee_1627688542Sym5KindInference%Let1627688726Scrutinee_1627688542Sym6!Let1627688690Scrutinee_1627688540%Let1627688690Scrutinee_1627688540Sym02Let1627688690Scrutinee_1627688540Sym0KindInference%Let1627688690Scrutinee_1627688540Sym12Let1627688690Scrutinee_1627688540Sym1KindInference%Let1627688690Scrutinee_1627688540Sym22Let1627688690Scrutinee_1627688540Sym2KindInference%Let1627688690Scrutinee_1627688540Sym32Let1627688690Scrutinee_1627688540Sym3KindInference%Let1627688690Scrutinee_1627688540Sym42Let1627688690Scrutinee_1627688540Sym4KindInference%Let1627688690Scrutinee_1627688540Sym52Let1627688690Scrutinee_1627688540Sym5KindInference%Let1627688690Scrutinee_1627688540Sym6!Let1627688654Scrutinee_1627688538%Let1627688654Scrutinee_1627688538Sym02Let1627688654Scrutinee_1627688538Sym0KindInference%Let1627688654Scrutinee_1627688538Sym12Let1627688654Scrutinee_1627688538Sym1KindInference%Let1627688654Scrutinee_1627688538Sym22Let1627688654Scrutinee_1627688538Sym2KindInference%Let1627688654Scrutinee_1627688538Sym32Let1627688654Scrutinee_1627688538Sym3KindInference%Let1627688654Scrutinee_1627688538Sym42Let1627688654Scrutinee_1627688538Sym4KindInference%Let1627688654Scrutinee_1627688538Sym52Let1627688654Scrutinee_1627688538Sym5KindInference%Let1627688654Scrutinee_1627688538Sym6Let1627688587YsLet1627688587PpLet1627688587YsSym0 Let1627688587YsSym0KindInferenceLet1627688587YsSym1 Let1627688587YsSym1KindInferenceLet1627688587YsSym2 Let1627688587YsSym2KindInferenceLet1627688587YsSym3 Let1627688587YsSym3KindInferenceLet1627688587YsSym4 Let1627688587YsSym4KindInferenceLet1627688587YsSym5 Let1627688587YsSym5KindInferenceLet1627688587YsSym6Let1627688587PpSym0 Let1627688587PpSym0KindInferenceLet1627688587PpSym1 Let1627688587PpSym1KindInferenceLet1627688587PpSym2 Let1627688587PpSym2KindInferenceLet1627688587PpSym3 Let1627688587PpSym3KindInferenceLet1627688587PpSym4 Let1627688587PpSym4KindInferenceLet1627688587PpSym5 Let1627688587PpSym5KindInferenceLet1627688587PpSym6!Let1627688555Scrutinee_1627688544%Let1627688555Scrutinee_1627688544Sym02Let1627688555Scrutinee_1627688544Sym0KindInference%Let1627688555Scrutinee_1627688544Sym12Let1627688555Scrutinee_1627688544Sym1KindInference%Let1627688555Scrutinee_1627688544Sym22Let1627688555Scrutinee_1627688544Sym2KindInference%Let1627688555Scrutinee_1627688544Sym3 sPpsOddRadsPpsDiv sPpsDividessPpsLCMsPpsGCD sFOddRadicalsFDiv sFDividessFLCMsFGCD#D:R:ApplyPrimeBinFactoredPToFSym0l0 PFreeSym0PFreeSym0KindInference PFreeSym1PFreeSym1KindInference PFreeSym2Let1627711705GoLet1627711705GoSym0 Let1627711705GoSym0KindInferenceLet1627711705GoSym1 Let1627711705GoSym1KindInferenceLet1627711705GoSym2 Let1627711705GoSym2KindInferenceLet1627711705GoSym3!Let1627711748Scrutinee_1627711690%Let1627711748Scrutinee_1627711690Sym02Let1627711748Scrutinee_1627711690Sym0KindInference%Let1627711748Scrutinee_1627711690Sym12Let1627711748Scrutinee_1627711690Sym1KindInference%Let1627711748Scrutinee_1627711690Sym22Let1627711748Scrutinee_1627711690Sym2KindInference%Let1627711748Scrutinee_1627711690Sym32Let1627711748Scrutinee_1627711690Sym3KindInference%Let1627711748Scrutinee_1627711690Sym42Let1627711748Scrutinee_1627711690Sym4KindInference%Let1627711748Scrutinee_1627711690Sym5Let1627711722PpLet1627711722PpSym0 Let1627711722PpSym0KindInferenceLet1627711722PpSym1 Let1627711722PpSym1KindInferenceLet1627711722PpSym2 Let1627711722PpSym2KindInferenceLet1627711722PpSym3 Let1627711722PpSym3KindInferenceLet1627711722PpSym4 Let1627711722PpSym4KindInferenceLet1627711722PpSym5sPFree coerceFDivs coerceGCD D:R:ApplyPrimeBin(->)PFreeSym0l0fromJust-tagged-transformer-0.8-88JdiDbIMP9EWtk3vRDnETData.Functor.Trans.TaggedTaggedV_MaybeMV_MaybeD:R:VectorMaybe0 Data.Proxy asProxyTypeOfProxyKProxywitnessTtagTWith untagTSelftagTSelfunproxyTproxyTasTaggedTypeOf reflectedM reflected mapTaggedTretagtagTwitnesstagWith untagSelftagSelfunproxyproxyuntagtagTaggedTTagTuntagT iterateWhilecrtInfoC omegaPowC powTraceschunksOfsizePP isPrimitivedotptrace'ppKron twCRTsPPow gCRTPrime gInvCRTPrime indexToPow indexToZms zmsToIndex zmsToIndexPP toIndexPair baseIndexDec fromIndexPairMNilMKronKronCMCfKrongCRTPPow gInvCRTPPowindexToPowPPowindexToZmsPPow baseWrappermergePPstotients ESentinel CSentinel crtSentinel crtCSentinel crtESentinel scalarCRTCScrtCScrtInvCS mulGCRTCS divGCRTCS embedCRTCS twaceCRTCSpolyMap coeffsToPolydeepseq ApplicativeFoldable TraversabletoPowCECRTCCRTEembed'SubtoPow'toDec'toCRT'CRTScalartoZLfromZLRDprincipalRootUnitygadgetZcorrectZreduce'decode'mhatInvgadlen&vector-0.12.0.0-4Id7FElSeAC3wKuJGC9cw4 Data.VectorVectorControl.ApplicativeZipListpurezipIZVrepltoProtoProductfromProtoNestRightcosets InternalListATGo<*><$>Zq