o      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz { | } ~   !"#$%&'()*+,-./0112233455596    +Expand type synonyms in a data declaration  !"#$%&'()*+,-./0123456  !"#$%&'()*+,-./0123456 !"#$%&'()*+,-./0123456 !"#$%&'()*+,-./0123456<7AThis class is used to overload literal construction based on the  type of the literal. 89?The class used to overload lifting operations. To reduce code C duplication, we overload the wrapped constructors (and everything  else, but that'4s irrelevant) to work in patterns, expressions, and  types. :8Build an application node, with a name for a head and a  provided list of arguments. ;Reference a named variable. < Lift a TH  =Tupling >Listing ?@ABCD*A simple clause, without where or guards. E#A default clause with N arguments. FA simple Val clause GHI,We provide 3 standard instance constructors ; instance_default requires C for each free type variable % instance_none requires no context - instance_context requires a given context JKLBBuild an instance of a class for a data type, using the heuristic 9 that the type is itself required on all type arguments. MQBuild an instance of a class for a data type, using the class at the given types N6Build a type signature declaration with a string name O#Build a fundecl with a string name P/Build an application node without a given head QR/Common pattern: list of a familiy of variables S$Variable based on a letter + number TAMake a list of variables, one for each argument to a constructor U,Make a simple pattern to bind a constructor V!Reference the constructor itself WXYZ[\]^_`abcdefghijklmn;Build a chain of expressions, with an appropriate terminal Z sequence__ does not require a unit at the end (all others are optimised automatically) opqr K-way liftM >789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr<BCADEFGHIJKLMNO?@9:;<=>P78QRSTUVWXY[\Z^]_`bacefghikjdlnoqpmr<7889:;<=>:;<=>?@@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu stusutstuvwvwvwvww7     xyxyxyxyy8 z{|}~c !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>z{|}?~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab~}|{zz{|}~ c y !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<?@ABCDEFGHIJKMNOPQRSTUWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>z{|}?~@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijkl mno   pqrstuvwxyz {|}~$The type of ways to derive classes. ( Should not really be in this module! The derivation function proper The name of the derivation M      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu WXYZ[\]^_`abcde f!g"h#i$%j&k'lmno(p)q*r+s,tuv-w.xyz{|}~/09"Information on argument positions 'Monad that collects required instances (What argument of the current data type? %What argument position of that type? (What kind of traversal are we deriving? $On what position are we traversing?  covariant? name of the traversal function Identity traversal  Traversal of a !Apply the sub-traversal function .Apply two non-identity traversals in sequence Traverse a function type *Construct a tuple from applied traversals .Construct a data type from applied traversals -Construct a clause of the traversal function @An expression representing a traversal of a subpart of the data ;Derivation for a Traversable like class with just 1 method 9Instance for a Traversable like class with just 1 method &Instance for a Traversable like class  Derive a traverse like function Derive a clause of a traverse! like function for a constructor Derive a traversal for a type BFind all arguments to a type application, then derive a traversal 7Lift a traversal to the argument of a type constructor )Position of an argument in the data type  In the type  data X a b c ) positions are: a -> 3, b -> 2, c -> 1  12344XYZ[\`abcjkqr5"Derive an instance of some class. derive only derives instances  for the type of the argument. "Derive an instance of some class.  deriveFromDec only derives instances  for the type of the argument. 7XYZ[\`abcjkqr:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                            !"#$%&' (!)"*#+$,%-&.'/(0)1*1+2,2-3.3/40551523456789:;<=>?7@7@777A77B7C7D7EFGHIJKIJLIJMIJNIJOIJPIQRIQSIQTIQUIQVIQWIQXIQYIQZIQ[IQ\IQ]IQ^IQ_IQ`IQaIQbIQcIQdIQeIQfIQgIQhIijIikIilIimIinIioIipIiqIirIisIitIiuIivIiwIixIiyIizIi{Ii|Ii}Ii}Ii~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII I I I I I IIIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I5I6I6I7I7I8I9I:I8I;I;I<I=I>I?II@IAIBICIDIIEIFIGIHIIIJIKILILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIaIbIcIdIeIfIgIhIIIiIjIkIlImInIoIpIqIrIsI:ItIIuIvIwIxIyIzI{I|I}II~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 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@IABIABICDICEICDICFICGICHICIICJICKICLIMNIMOIMPIMQIMQRSTRSURSVRSWRSXRSYRSYRSZRS[RS\RS] ^ _ ` 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 D F    898989898989898989898989689898989W8989898989a898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989896898989898989898989898989 89 89 89 89 8989898989898989898989898989898989898989 89!89"89#89$89%89&89'89(89)89*89+89,89a89-89.89/89089189289898938948958968989789889989:89:89;89<89f89=89>89?89@89A89B89C89s89D89E89F89G89H89I89J89K89L89M89N89O89P89Q89`8RS8RT8RUVWXYZ[\VV]^_`ab c!d"e#f%g&h'\'i'j'k(l)m*n+o,\,p,q-r.s.t.u.v.w.x.y.z.{.|.}.~...../09999999999999999999999999999999235 derive-2.2.0Language.Haskell.TH.CompatLanguage.Haskell.TH.Data!Language.Haskell.TH.ExpandSynonymLanguage.Haskell.TH.FixedPprLanguage.Haskell.TH.HelperLanguage.Haskell.TH.PeepholeData.Derive.Class.DefaultData.Derive.Class.AritiesLanguage.HaskellLanguage.Haskell.ConvertData.Derive.DSL.HSEData.Derive.DSL.DSLData.Derive.DSL.ApplyData.Derive.DSL.DeriveData.Derive.DSL.SYBData.DeriveDSLLanguage.Haskell.TH.AllData.Derive.Internal.DerivationData.Derive.ArbitraryData.Derive.ArbitraryOldData.Derive.AritiesData.Derive.BinaryData.Derive.BinaryDeferData.Derive.BoundedData.Derive.DataData.Derive.DataAbstractData.Derive.DefaultData.Derive.EnumData.Derive.EnumCyclicData.Derive.EqData.Derive.FoldData.Derive.FromData.Derive.HasData.Derive.IsData.Derive.LazySetData.Derive.MonoidData.Derive.NFDataData.Derive.OrdData.Derive.ReadData.Derive.RefData.Derive.SerialData.Derive.SerializeData.Derive.SetData.Derive.ShowData.Derive.TypeableData.Derive.UniplateDirectData.Derive.UniplateTypeableData.Derive.UpdateData.Derive.FoldableData.Derive.FunctorData.Derive.TraversableData.Derive.All Data.DeriveTHLanguage.Haskell.TH.SYBData.Derive.Internal.InstanceData.Derive.Instance.AritiesData.Derive.Internal.Traversal fromTyVardataDefinitionTypeArgs typeToPredCtorDefDataDefdataNamequalifiedDataName dataAritydataArgs dataCtorsctorNamequalifiedCtorName ctorArityctorStrictTypes ctorTypes ctorFields dropModule dropNumbernormDataunqualifiedNametypeAppeqConTisTupleT expandDataPprpprppr_list Precedence nestDepthappPrecopPrecnoPrecparensIf showNameRaw isPrefixNamepprName_pprint pprFixity pprExpInfixpprExp pprFields pprMaybeExppprBodypprLitpprPat deQualLhsHead deQualNamepprVarStrictType pprStrictType pprParendTypepprTyAppsplitpprCxt where_clause showtextlLitClitValconlKvrraw_littuplstNameLiketoName applyWith foldl1With foldr1Withsclause defclausesvalcase'->: instance_noneinstance_defaultinstance_contextsimple_instancegeneric_instancesigNfunNappdataVarsvarsvrnctvctpctcl0l1l2truefalsenilhNil'hZero'consboxreturn'const'hSucc'==:&&:++:>>=:>>:.:>:ap'hCons'&&::++::>>::.:: sequence__liftmkpeephole replaceVars replaceVarDefaultdefAritiesarities FullDataDecl FieldDeclCtorDeclDataDeclforallssimplify dataDeclTypedataDeclFieldsbindbinds isDataDecldataDeclSrcLoc dataDeclName dataDeclVars dataDeclArity dataDeclCtors ctorDeclName ctorDeclName'ctorDeclFields ctorDeclAritydeclNameConvertconvertOutputOCustomOIgnoreOListOAppOIntOStringOutCtorInputsampleoutEq ctorIndextoInputtoOutput fromOutput fromStateDSL ApplicationInstanceTailHeadFold FieldIndex CtorArity CtorIndexCtorNameDataNameMapCtorMapFieldListIntShowIntStringReverseConcatAppfromOut simplifyDSL prettyTexEnvenvInputenvCtorenvFieldenvFoldapplyenvapplyEnvderivedslSYB deriveDSLapplyDSL dynamicDSL DerivationderivationDeriverderivationName derivation derivationQ derivationOpderivationParamsderivationCustom derivationDSLderivationCustomDSL customSplice customContext makeArbitrarymakeArbitraryOld makeArities makeBinarymakeBinaryDefer makeBoundedmakeDatamakeDataAbstract makeDefaultmakeEnummakeEnumCyclicmakeEqmakeFoldmakeFrommakeHasmakeIs makeLazySet makeMonoid makeNFDatamakeOrdmakeReadmakeRef makeSerial makeSerializemakeSetmakeShow makeTypeablemakeUniplateDirectmakeUniplateTypeable makeUpdate makeFoldable makeFoldableN makeFunctor makeFunctorNmakeTraversablemakeTraversableN derivationsderives deriveFromDec expandType expandType' expandSyn substituteppr_sigtemplate-haskellLanguage.Haskell.TH.SyntaxLitunitid'peeppeepPatpeepBinBoxctorTypectorRep d_ctorArity d_ctorValue d_dataCtorsbase Data.DataDatahaskell-src-exts-1.6.1Language.Haskell.ExtsreadExtensionsparseFileContentsWithModeparseFileContentsparseFileWithModeparseFileWithExts parseFileLanguage.Haskell.Exts.ParserparseStmtWithCommentsparseStmtWithMode parseStmtparseTypeWithCommentsparseTypeWithMode parseTypeparseDeclWithCommentsparseDeclWithMode parseDeclparsePatWithCommentsparsePatWithModeparsePatparseExpWithCommentsparseExpWithModeparseExpparseModuleWithCommentsparseModuleWithMode parseModule getTopPragmasparseWithComments parseWithModeparse ParseableLanguage.Haskell.Exts.Pretty prettyPrintprettyPrintWithModeprettyPrintStyleMode defaultMode PPOffsideRule PPSemiColonPPInLine PPNoLayoutPPLayoutIndent linePragmaslayoutspacing onsideIndent whereIndent letIndent caseIndentdoIndent classIndentPPHsModePretty Language.Haskell.Exts.ParseMonaddefaultParseModefromParseResultParseOk ParseFailed ParseResultfixitiesignoreLinePragmasignoreLanguagePragmas extensions parseFilename ParseModeLanguage.Haskell.Exts.Fixityinfix_infixl_infixr_ baseFixitiespreludeFixitiesFixity applyFixities AppFixityLanguage.Haskell.Exts.Build metaConPat metaFunctionnameBind patBindWherepatBind simpleFunsfungenNameswildcardnoBindsletStmtgenStmtqualStmtpParenpeListeListlistEaltGWaltcaseEletElamEdoEintPcharPstrPintEcharEstrEfunction pvarTuplevarTuplepTupletuplepAppappFuninfixApppvarqvaropsymnameLanguage.Haskell.Exts.Syntax tuple_tyconunboxed_singleton_tycon list_tycon fun_tycon unit_tycontuple_tycon_nameunboxed_singleton_tycon_namelist_tycon_namefun_tycon_nameunit_tycon_name ccall_name stdcall_namethreadsafe_name unsafe_name safe_name export_name star_namedot_name bang_name minus_name hiding_namequalified_nameas_nameunboxed_singleton_con tuple_conunit_conunboxed_singleton_con_namelist_cons_nametuple_con_name unit_con_name main_namemain_mod prelude_mod ModuleNameUnitConListConFunConTupleConConsUnboxedSingleCon SpecialConQualUnQualSpecialQNameIdentSymbolNameIPDupIPLinIPNameQVarOpQConOpQOpVarOpConOpOpVarNameConNameCNameModuleEVarEAbs EThingAll EThingWithEModuleContents ExportSpec importSpecsimportAs importPkg importSrcimportQualified importModule importLoc ImportDeclIVarIAbs IThingAll IThingWith ImportSpec AssocNone AssocLeft AssocRightAssocDerivingTypeDecl TypeFamDecl GDataDecl DataFamDecl TypeInsDecl DataInsDecl GDataInsDecl ClassDeclInstDecl DerivDecl InfixDecl DefaultDecl SpliceDeclTypeSigFunBindPatBindForImpForExpRulePragmaDeclDeprPragmaDeclWarnPragmaDecl InlineSigSpecSig SpecInlineSigInstSigDeclDataTypeNewType DataOrNewBDeclsIPBindsBindsIPBindMatch QualConDeclConDecl InfixConDeclRecDeclGadtDeclClsDecl ClsDataFamClsTyFamClsTyDefInsDeclInsTypeInsDataInsGData InsInlineBangedTy UnBangedTy UnpackedTyBangType UnGuardedRhs GuardedRhssRhs GuardedRhsTyForallTyFunTyTupleTyListTyAppTyVarTyConTyParenTyInfixTyKindType KindedVar UnkindedVar TyVarBindKindStarKindBangKindFn KindParenKindVarKindFunDepContextClassAInfixAIParamEqualPAsstCharFracPrimIntPrimWord PrimFloat PrimDoublePrimChar PrimStringLiteralVarIPVarConInfixAppNegAppLambdaLetIfCaseDoMDoTuple TupleSectionParen LeftSection RightSection RecConstr RecUpdateEnumFrom EnumFromTo EnumFromThenEnumFromThenToListCompParComp ExpTypeSigVarQuoteTypQuote BracketExp SpliceExp QuasiQuoteXTagXETagXPcdataXExpTag CorePragma SCCPragma GenPragmaProc LeftArrApp RightArrAppLeftArrHighAppRightArrHighAppExpXNameXDomNameXAttr ExpBracket PatBracket TypeBracket DeclBracketBracketIdSplice ParenSpliceSplice PlayRiskyPlaySafeSafetyStdCallCCallCallConvLanguagePragma IncludePragma CFilesPragma OptionsPragma OptionPragma AlwaysActive ActiveFrom ActiveUntil ActivationRuleRuleVar TypedRuleVarDeprTextWarnText WarningTextPVarPLitPNegPNPlusK PInfixAppPAppPTuplePListPParenPRecPAsPat PWildCardPIrrPat PatTypeSigPViewPatPRPatPXTagPXETagPXPcdataPXPatTagPXRPats PExplTypeArg PQuasiQuotePBangPatPatPXAttrRPStarRPStarGRPPlusRPPlusGRPOptRPOptGRPatOpRPOpRPEitherRPSeqRPGuardRPCAsRPAsRPParenRPPatRPat PFieldPat PFieldPunPFieldWildcardPatField Generator QualifierLetStmtRecStmtStmtQualStmt ThenTransThenByGroupBy GroupUsing GroupByUsing FieldUpdateFieldPun FieldWildcardAlt UnGuardedAlt GuardedAlts GuardedAltLanguage.Haskell.Exts.ExtensionclassifyExtension glasgowExts impliesExtsOverlappingInstancesUndecidableInstancesIncoherentInstances RecursiveDoParallelListCompMultiParamTypeClassesNoMonomorphismRestrictionFunctionalDependenciesExplicitForall Rank2Types RankNTypesPolymorphicComponentsExistentialQuantificationScopedTypeVariablesImplicitParamsFlexibleContextsFlexibleInstancesEmptyDataDeclsCPPKindSignatures BangPatternsTypeSynonymInstancesTemplateHaskellForeignFunctionInterfaceArrowsGenericsNoImplicitPreludeNamedFieldPuns PatternGuardsGeneralizedNewtypeDerivingExtensibleRecordsRestrictedTypeSynonyms HereDocuments MagicHash TypeFamiliesStandaloneDeriving UnicodeSyntaxPatternSignaturesUnliftedFFITypesLiberalTypeSynonyms TypeOperatorsRecordWildCards RecordPunsDisambiguateRecordFieldsOverloadedStringsGADTs MonoPatBindsNoMonoPatBindsRelaxedPolyRecExtendedDefaultRules UnboxedTuplesDeriveDataTypeableConstrainedClassMethodsPackageImportsImpredicativeTypesNewQualifiedOperatorsPostfixOperators QuasiQuotesTransformListComp ViewPatterns XmlSyntaxRegularPatterns TupleSectionsUnknownExtension ExtensionLanguage.Haskell.Exts.CommentsComment&Language.Haskell.Exts.Annotated.SyntaxBoxedUnboxedGHCHUGSNHC98YHCHADDOCK UnknownToolToolLanguage.Haskell.Exts.SrcLoc srcColumnsrcLine srcFilenameSrcLocpretty-1.0.1.1Text.PrettyPrint.HughesPJMode OneLineModeLeftMode ZigZagModePageModeStylemode lineLengthribbonsPerLinestyle?tyApps fromTyApps fromTyTuple fromTyParen fromTyParenstyRootisTyFun isTyParen fromTyList~=appP isGuardFalserenameisAtomparenslnoSltitleqnamevarcontyVar tyVarBindtyConpVarqvop moduleName moduleDecls moduleImports modulePragmas showDeclstyApptyFunapps fromBangTypeconvshowOutcoercereadConoutappend GuessStateGuessGuessCtrGuessFldguess guessListlift fromGuesstoGuessmaximsybdlistAnydlistdappderrdsimple dinstancedstringdmapctordsingle dapplicationreturnQbindQ sequenceQnewNamemkName mkNameG_v mkNameG_d mkNameG_tcmkNameLClauseQDecFieldExpFieldPatPred TyVarBndr defaultFixity maxPrecedence tupleTypeName tupleDataName showName'showNamemkNameU nameModulenameBase occString mkOccName pkgString mkPkgName modString mkModName liftStringrunIOlocationreifyrecoverreportrunQqRunIO qLocationqReifyqRecoverqReportqNewNameQuasiLiftNameSNameQNameUNameLNameG NameFlavour TcClsName NameSpaceUniqAloneAppliedInfixNameIsloc_end loc_start loc_module loc_package loc_filenameLocCharPosClassIClassOpITyConI PrimTyConIDataConIVarITyVarIInfoInfixLInfixRInfixNFixityDirectionCharLStringLIntegerL RationalLIntPrimL WordPrimL FloatPrimL DoublePrimLLitPVarPTupPConPInfixPTildePBangPAsPWildPRecPListPSigPVarEConELitEAppEInfixELamETupECondELetECaseEDoECompE ArithSeqEListESigERecConERecUpdEGuardedBNormalBBodyNormalGPatGGuardBindSLetSNoBindSParSFromR FromThenRFromToR FromThenToRRangeFunDValDDataDNewtypeDTySynDClassD InstanceDSigDForeignDPragmaDFamilyD DataInstD NewtypeInstD TySynInstDTypeFamDataFam FamFlavourImportFExportFForeignCallconvUnsafeSafe ThreadsafeInlineP SpecialisePPragma InlineSpecCxtClassPIsStrict NotStrictStrictNormalCRecCInfixCForallC StrictType VarStrictTypeForallTVarTConTTupleTArrowTListTAppTSigTPlainTVKindedTVStarKArrowK$Language.Haskell.TH.Syntax.InternalsModNamePkgNameOccNamecontextdslArbitraryOld dslArities dslBinarydslBinaryDefer dslBoundedsplice dslDefaultdslEnum dslEnumCyclicdslEqmkFoldfoldType makeFromCtor makeHasField makeIsCtormakeLazySetField dslNFDatadslOrdreadCtor readFieldsmatchStr makeRefField dslSerial dslSerialize makeSetField customPlain customFields mkTypeableSAnsListTryListHitTryMissHitmakemake1runoperator operator2subst substData substType knownCtors tupleDefncustommakeUpdateField ArgPositions WithInstancesRequiredInstancerequiredDataArgrequiredPosition TraveralType traversalArg traversalCo traversalName traversalIdtraversalDirect traversalFunc traversalPlus traverseArrow traverseTuple traverseCtor traverseFuncTravtraversalDerivation1traversalInstance1traversalInstancederiveTraversalderiveTraversalCtorderiveTraversalTypederiveTraversalApp traverseArgtraversalNameN argPositionsdefaultTraversalTypefunctorForArrowTypeliftANtoFullDataDecl