!?I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH None 24:M"Chunk is a part of quasy-quotation$(expr) or @(expr)the text A simple I to interpolate J into other pieces of J. Expressions can be embedded using $(expr) or @(expr), and values can be interpolated with $name. Inside $( )s, if you have a string of ambiguous type, it will default to the Show instance for toText, which will escape unicode characters in the string, and add quotes around them. KLMNOPKLMNOP Safe-Inferred+246Simple wrapper for FilePath.Convert File back to FilePath1Convert File back to FilePath with escaped spacesRedefine standard  / operator to work with FilesAlias for replaceExtension       Safe-Inferred+Recipe answers to the question 'How to build the targets'. Internally, it contains sets of targets and prerequisites, as well as shell commands required to build former from latterTargets  Prerequisites A list of shell commands!A set of variables employed in the recipe. The target Makefile should notice changes in those variables and rebuild the targets"+A set of tools employed in the recipe. Make#%Location (probably, doesn't function)$ Set of flags (Makefile-specific)+Command represents OS command line and consists of a list of fragments. Each fragment is either text (may contain spaces) or FilePath (spaces should be escaped),NThe representation a tool used by the Makefile's recipe. Typical example are gcc or bison. Name of tool./(The representation of Makefile variable.1The name of a variable2UNothing means that variable is defined elsewhere (eg. borrowed from the environment)IEDefine the Makefile-level variable. Rules, referring to a variable, notice it's changes.JDeclare the variable defined elsewhere. Typycally, environment variables may be decalred with this functions. Variables are tracked by the cake3. Rules, referring to a variable, notice it's changes.KReref to special variable $(MAKE)1 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI Variable name Default valueJK1 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK1/012,-.+(*)34%'& !"#$56789:;<=>?@ABCDEFGHIJK  !"#$%'&(*)+,-./0123456789:;<=>?@ABCDEFGHIJKNone +2468B2LeClass of things which may be referenced using '$(expr)' syntax of the quasy-quoted shell expressionsM@Register the input item, return it's shell-script representationNfClass of things which may be referenced using '@(expr)' syntax of the quasi-quoted shell expressions.ORegister the output item, return it's shell-command representation. Files are rendered using space protection quotation, variables are wrapped into $(VAR) syntax, item lists are converted into space-separated lists.PESimple wrapper for strings, a target for various typeclass instances.ScCommandGen is a recipe-builder packed in the newtype to prevent partial expantion of it's commandsV<A class of monads providing access to the underlying A monadX*Verison of Action monad with fixed parentsYX here stands for Action. It is a State monad carrying a Recipe as its state. Various monadic actions add targets, prerequisites and shell commands to this recipe. After that, rule function records it to the  MakeStateC. After the recording, no modification is allowed for this recipe.`AA Monad providing access to MakeState. TODO: not mention IO here.bYMakeState describes the state of the EDSL synthesizers during the the program execution.dkPrebuild commands. targets/prerequsites of the recipe are ignored, commands are executed before any targetePostbuild commands.f;The set of recipes, to be checked and renderd as a Makefileg&Current location. FIXME: fix or removeh*Set of files which the Makefile depends oniFPlacement list is the order of targets to be placed in the output filejDSet of files to include in the output file (Makefile specific thing)kErrors found so farlWarnings found so farmTName of the Makefile being generated , tmpIndex :: Int ^ Index to build temp namesnextra clean filesuAdd prebuild commandvAdd prebuild commandw<Find recipes without targets. Empty result means 'No errors'x=Find recipes sharing a target. Empty result means 'No errors'yEvaluate the Make monad mf0, return MakeState containing the result. Name mf& is used for self-referencing recipes.}FAdd 'include ...' directive to the final Makefile for each input file.~=Run the Action monad, using already existing Recipe as input.-Create new empty recipe and run action on it.8Version of runA discarding the result of A's computation"Get a list of targets added so far(Get a list of prerequisites added so farMark the recipe as PHONYI i.e. claim that all it's targets are not real files. Makefile-specific.0Adds the phony target for a rule. Typical usage: <rule $ do phony "clean" unsafeShell [cmd|rm $elf $os $d|] Mark the recipe as  INTERMEDIATE] i.e. claim that all it's targets may be removed after the build process. Makefile-specific.Obtain the contents of a File. Note, that this generally means, that Makefile should be regenerated each time the File is changed.*Pack the command builder into a CommandGen7Modifie the recipe builder: ignore all the dependenciesaApply the recipe builder to the current recipe state. Return the list of targets of the current Recipe under construction Version of shell& which doesn't track it's dependencies"An alias to CakeString constructordAdd it's argument to the list of dependencies (prerequsites) of a current recipe under construction:Declare that current recipe produces some producable item.Add variables vs' to tracking list of the current recipe Add tools ts+ to the tracking list of the current recipeAdd commands to the list of commands of a current recipe under construction. Warning: this function behaves like unsafeShell i.e. it doesn't analyze the command text,Set the recipe's location in the Cakefile.hsSet additional flagsHas effect of a function QQ -> CommandGen7 where QQ is a string supporting the following syntax:P$(expr) evaluates to expr and adds it to the list of dependencies (prerequsites)<@(expr) evaluates to expr and adds it to the list of targets$$ and @@ evaluates to $ and @Example [cmd|gcc $flags -o @file|]is equivalent to  return $ CommandGen $ do s1 <- refInput "gcc " s2 <- refInput (flags :: Variable) s3 <- refInput " -o " s4 <- refOutput (file :: File) return (s1 ++ s2 ++ s3 ++ s4)^Later, this command may be examined or passed to the shell function to apply it to the recipe_LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$Location string (in the Cakefile.hs)Recipe builderA name of phony targetFile to read contents of/Command builder as returned by cmd quasi-quoter9File or [File] or (Set File) or other form of dependency.'File or [File] or other form of target.*A set of variables to depend the recipe on"A set of tools used by this recipeJLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_obcdefghijklmnpqrstuvwx`a]^_\yz{|}YZ[XVW~STURPQNOLMHLMNOPQRSTUVWXYZ[\]^_`ab cdefghijklmnopqrstuvwxyz{|}~None234BQ$Turns multi-target rules of the forma b c : d e f cmd1into the pair:(a : stampX b : stampX c : stampX2.INTERMEDIATE:stampX stampX : d e f cmd1RhOperate on a prerequisites which themselfs are targets of a multitarget rule. Make the conversion from:a b c : x x : a y : bto%a b c : x x : a b c y : a b cS Define a cleanY phony target. The rule removes all targets except phony targets and the Makefile itselfDefault Makefile locationT'There are only 2 kind of rules: 1) rules which depend on the Makefile, and 2) rules which Makefile depends on. Case-2 is known in advance (for example, when the contents of a file is required to build a Makefile then Makefile depends on this file). This function adds the case-1 dependencies.RRender the Makefile. Return either the content (Right), or error messages (Left).%UVWXYZ[\]^_`abcdefQRghSijTklmnopqrsUVWXYZ[\]^_`abcdefQRghSijTklmnopqrsNone23468B Converts string representation of Path into type-safe File. Internally, files are stored as a relative offsets from the project root directory/A Generic Make monad runner. Execute the monad mk, provide the output handler with Makefile encoded as a string. Note that Makefile may contain rules which references the file itself by the name makefileK. In case of errors, print report to stderr and abort the execution with fail call A Version of runMakeH returning no state Execute the mkr monad, return the Makefile as a String. In case of errors, print report to stderr and abort the execution with fail call Execute the mk monad, build the Makefile, write it to the output file. In case of errors, print report to stderr and abort the execution with fail calltIRaise the recipe's priority (it will appear higher in the final Makefile)Build a Recipe using the builder provided and record it to the MakeState. Return the copy of Recipe (which should not be changed in future) and the result of recipe builder. The typical recipe builder result is the list of it's targets.Example@ Lets declare a rule which builds "main.o" out of "main.c" and CFLAGS variable Ulet c = file "main.c" rule $ shell [cmd| gcc -c $(extvar "CFLAGS") -o @(c.="o") $c |]OA version of rule2. Rule places it's recipe above all recipies defined so far./A version of rule, without monad set explicitlyResult of evalMakeHandler to output the fileResult of evalMakeHandler to output the file Output fileMakefile buildertRecipe builder1The recipe itself and the recipe builder's resultRecipe builderuvwxyz{|}~ /HIJKLMNOPSTUX\`auv}>/LMNOPX\}`auv IJHSTUK tNone +2346BMT !URS declaration for this functionUrWeb name of this function JavaScript name of this function(Module name, UrWeb name, JavaScript name?A general method of including a library into the UrWeb project.:Include a library defined somewhere in the current project.Build a file using external Makefile facility..Build a file using external Makefile facility.MBuild a file from external project. It is expected, that this project has a Makwfile> in it's root directory. Call Makefile with the default targetMBuild a file from external project. It is expected, that this project has a Makwfile in it's root directoryBuild a file from external project. It is expected, that this project has a fiel.mk (a Makefile with an unusual name) in it's root directory:Parse the JavaScript file, extract top-level functions, convert their signatures into Ur/Web format, return them as the list of strings     :A monadic action, returning a list of libraries to includeExternal MakefileExternal file to refer toThe name of the target to runExternal MakefileExternal file to refer to'File from the external project to build'File from the external project to build !"#$%&'()*+,-./0123456789:;<=>?@ABCDE      !"#$%&'()*+,-./0123456789:;<EDCBA@?>=      !"#$%&'()*+,-./0123456789:;<Y      !"#$%&'()*+,-./0123456789:;<=>?@ABCDENoneFGFGFGFG NoneHBuild the full Makefile named fo and a set of sliced versions. SlicingW here means filtering out all rules which depends on certain tools (second element of sls) and all upstream rules.HHHH     !"#$%%&'()*+,-./012344566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVWXXYZ[\]]^_`_abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVVWXYZ[\]^_`abcdefghijklmnopqopropsoptopuovwoxyoxzox{o|}o|~o|opopoxovo|opo|o|oxoxo|o|o|o|o|o|o|o|o|o|o|o|o|o|o|o|o|o|o|o|o|ooooooxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxop cake3-0.6.0Text.QuasiMakeSystem.FilePath.WrapperDevelopment.Cake3.TypesDevelopment.Cake3.MonadDevelopment.Cake3.WriterDevelopment.Cake3Development.Cake3.Ext.UrWebDevelopment.Cake3.Utils.FindDevelopment.Cake3.Utils.SliceChunkET getChunksFileLikecombine takeDirectory takeBaseName takeFileName makeRelativereplaceExtension takeExtensiontakeExtensionsdropExtensions dropExtensionsplitDirectoriesFileFileT toFilePath fromFilePath escapeFile.= $fFileLike[]$fFileLikeFileT $fMonoidFileTTargetRecipertgtrsrcrcmdrvarsrtoolsrlocrflagsFlag IntermediatePhony CommandPieceCmdFileCmdStrCommandTooltnameVariablevnamevval return_text return_file emptyRecipeaddPrerequisitesaddPrerequisitegroupSet groupRecipesflatternapplyPlacement'filterRecipesByToolsfilterRecipesByTargetsfilterRecipesByToolsDeepapplyPlacementtransformRecipestransformRecipesM_queryVariablesqueryVariablesE queryTargets queryPrereqvarintermediateFilestoolmakevarextvarmakeRefInputrefInput RefOutput refOutput CakeString CommandGen CommandGen' unCommand MonadAction liftActionAA'unA'MakeMake'unMake MonadMakeliftMake MakeStateMS prebuilds postbuildsrecipesslocmakeDeps placementincludeserrorswarnings outputFile extraCleanLocationinitialMakeStategetPlacementPos addPlacement addMakeDeptmp_fileprebuild postbuildcheckForEmptyTargetcheckForTargetConflictsevalMake modifyLoc addRecipegetLocincludeMakefilerunA'runArunA_targets prerequisites markPhonyphonymarkIntermediatereadFileForMake commandGen ignoreDependsshell unsafeShellstring inbetweenspacifydependproduce variablestoolscommandslocationflagscmd$fRefInputamCommandGen'$fRefInputamCakeString$fRefInputamTool$fRefInputamVariable$fRefInputamMaybe$fRefInputamMake'$fRefInputamMake'0$fRefInputamIO$fRefInputamSet$fRefInputam[]$fRefInputamRecipe$fRefInputamFileT$fRefOutputmMaybe$fRefOutputmSet$fRefOutputm[]$fRefOutputmFileT$fMonadActionA'm$fMonadLocMake'$fMonadMakeStateT $fMonadMakeA'$fMonadMakeMake'defaultMakefile buildMakeProjectLocationrootoffcurrentDirLocationfile'runMakeH runMakeH_runMake writeMakerule2rulerule'genFileJSTypeurtdeclJSFuncurdeclurnamejsname BinOption UseUrembedNoScan BinOptionsUrpGenunUrpGen ToUrpLine toUrpLine ToUrpWord toUrpWordUrpStateurpst urautogenUrpLiketoUrp tempfilesUWExeUWLibUrpurpuexeuhdrumod UrpModToken UrpModuleSys UrpModule2 UrpModule1 UrpHdrToken UrpClientOnly UrpScript UrpSafeGet UrpJSFuncUrpFFI UrpPkgConfigUrpSrcUrpLink UrpIncludeUrpDebug UrpLibrary UrpRewriteUrpAllowUrpSql UrpDatabaseUrpTableUrpAllUrpStyle UrpHeader UrpEnvVarUrpResponseHeaderUrpUrlUrpMimeurpDepsurpSql'urpSqlurpSrcsurpObjsurpLibsurpExe'urpExe urpPkgCfgdefState maskPkgCfgtoFile tempPrefix mkFileRulelineuwlibuwapp setAutogenDiraddHdraddModdatabaseallowrewriteurpUplibrary'library externalMake3 externalMake' externalMakeexternalMakeTarget externalMake2module_urpairsinglesysdebugincludelink'linkcsrc'csrcffisqljsFuncsafeGet'safeGeturlmimestylealltableenvhdr requestHeaderresponseHeaderscript guessMime pkgconfigbinbin'parse_js transform_css parse_css$fToUrpLineUrpModToken$fToUrpLineUrpHdrToken$fToUrpWordUrpRewrite$fToUrpWordUrpAllow$fUrpLikeUWExe$fUrpLikeUWLib $fUrpLikeUrp$fRefInputamUWExe$fRefInputamUWLib filterExtsgetDirectoryContentsRecursive writeSlicedtemplate-haskellLanguage.Haskell.TH.Quote QuasiQuoter text-1.2.0.4Data.Text.InternalTextTextishtoText $fTextisha $fTextish[] $fTextishText $fLiftTextfixMultiTargetcompleteMultiTarget defineClean addMakeDepsLines MakeRegionMRmrnamemrtextMakeLLunMakeLL ToMakeText toMakeTextsmaptextfresh runMakeLL copyRecipeLLruleLLapplySubprojectshasClean cleanRuleLLaddRebuildDeps isRequiredForrunLines writeRegionsregion writeRules$fToMakeTextSet$fToMakeTextCommandPiece$fToMakeText[]$fToMakeTextFileT$fToMakeText[]0 withPlacementbaseGHC.Basefail>>=>>fmapreturn Data.String fromString Control.MonadguardliftMjoinControl.Applicative<*>pure AlternativeMonadFunctor MonadPlusIsString ApplicativeString<**>mplusmzerooptionalliftA3liftA2liftA<**>manysome<|>emptygetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Functor<$> Data.ListunwordswordsunlineslinesmfilterapliftM5liftM4liftM3liftM2unlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMvoidforever<=<>=>msumforM_forMfilterMmapM_mapM sequence_sequence=<<<$