5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./01234None 24:M"Chunk is a part of quasy-quotation$(expr) or @(expr)the text A simple 5 to interpolate 6 into other pieces of 6. 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. 789:;<789:;< Safe-Inferred+246Simple wrapper for FilePath.Convert File back to FilePathRedefine 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  PrerequisitesA list of shell commandsContainer of variables(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))'The representation of Makefile variable+The name of a variable,UNothing means that variable is defined elsewhere (eg. borrowed from the environment)=YDeclare the variable which is defined in the current Makefile and has it's default value>@Declare the variable which is not defined in the target Makefile?Special variable $(MAKE)' !"#$%&'()*+,-./0123456789:;<= Variable name Default value>?' !"#$%&'()*+,-./0123456789:;<=>?')*+,(%'&-."$# !/0123456789:;<=>? !"$#%'&()*+,-./0123456789:;<=>?None +2468B1@fClass of things which may be referenced using '$(expr)' from inside of quasy-quoted shell expressionsA@Register the input item, return it's shell-script representationBfClass of things which may be referenced using '@(expr)' syntax of the quasi-quoted shell expressions.CRegister 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.DESimple wrapper for strings, a target for various typeclass instances.GcCommandGen is a recipe-builder packed in the newtype to prevent partial expantion of it's commandsJ<A class of monads providing access to the underlying A monadL*Verison of Action monad with fixed parentsML 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.TAA Monad providing access to MakeState. TODO: not mention IO here.VYMakeState describes the state of the EDSL synthesizers during the the program execution.XkPrebuild commands. targets/prerequsites of the recipe are ignored, commands are executed before any targetYPostbuild commands.ZThe set of recipes[&Current location. FIXME: fix or remove\*Set of files which the Makefile depends on]FPlacement list is the order of targets to be placed in the output file^DSet of files to include in the output file (Makefile specific thing)_Errors found so far`Warnings found so fara$Name of the Makefile being generatedbIndex to build temp namesiAdd prebuild commandjAdd prebuild commandkFind recipes without targetslFind recipes sharing a targetmReturns a MakeStateqFAdd 'include ...' directive to the final Makefile for each input file.r=Run the Action monad, using already existing Recipe as input.s-Create new empty recipe and run action on it.t8Version of runA discarding the result of A's computationu"Get a list of targets added so farv(Get a list of prerequisites added so farwMark the recipe as PHONYI i.e. claim that all it's targets are not real files. Makefile-specific.x0Adds the phony target for a rule. Typical usage: <rule $ do phony "clean" unsafeShell [cmd|rm $elf $os $d|] yMark the recipe as  INTERMEDIATE] i.e. claim that all it's targets may be removed after the build process. Makefile-specific.zObtain 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 CommandGen|7Modifie the recipe builder: ignore all the dependencies}aApply 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.GAdd variables to the list of variables referenced by 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]@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs$Location string (in the Cakefile.hs)Recipe buildertuvwxA name of phony targetyzFile to read contents of{|}/Command builder as returned by cmd quasi-quoter~9File 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 onI@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~]cVWXYZ[\]^_`abdefghijklTUQRSPmnopqMNOLJKrstuvwxyzGHIF{|}~DEBC@AF@ABCDEFGHIJKLMNOPQRSTUV WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None234B=$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 cmd1>hOperate 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 c? Define a cleanY phony target. The rule removes all targets except phony targets and the Makefile itselfRule referring to the @'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).(ABCDEFGHIJKLMNOPQRST=>UVW?XY@Z[\]^_`ab"ABCDEFGHIJKLMNOPQRST=>UVW?XY@Z[\]^_`abNone23468BExecute the Make monad, build the Makefile, write it to the output file. Also note, that errors (if any) go to the stderr. fail will be executed in such casestA General Make runner. Executes the monad, returns the Makefile as a String. Errors go to stdout. fail is possible.cIRaise 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 explicitlyd Output file Make builderHandler to output the file Output fileMakefile buildercRecipe builder1The recipe itself and the recipe builder's resultRecipe builderefghijklmnopqrstuvwxyz{|}~ )=>?@ABCDGHILPTUijqvxz|}~<)@ABCDLPqTUx|ij zv}~=>GHI? dcNone +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 target MBuild a file from external project. It is expected, that this project has a Makwfile in it's root directory Build 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     !"#$%&'()*+,-./012}      !"#$%&'()210/.-,+*      !"#$%&'()V      !"#$%&'()*+,-./012None34343434      !""#$%&'()*+,-./00123456789:;<=>?@ABCDEFGHIJJKLLMNOPQQRSTSUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a_`b_`c_`d_`e_fg_hi_hj_hk_lm_ln_lo_`p_`q_hr_fs_lt_`u_lv_lw_hx_hy_lz_l{_l|_l}_l~_l_l_l_l_l_l_l_l_l_l_l_l_l_l_l_l______h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_h_` cake3-0.5.2.0Text.QuasiMakeSystem.FilePath.WrapperDevelopment.Cake3.TypesDevelopment.Cake3.MonadDevelopment.Cake3.WriterDevelopment.Cake3Development.Cake3.Ext.UrWebDevelopment.Cake3.Utils.FindChunkET getChunksFileLikecombine takeDirectory takeBaseName takeFileName makeRelativereplaceExtension takeExtensiontakeExtensionsdropExtensions dropExtensionFileFileT toFilePath fromFilePath.= $fFileLike[]$fFileLikeFileT $fMonoidFileTTargetRecipertgtrsrcrcmdrvarsrlocrflagsFlag IntermediatePhony CommandPieceCmdFileCmdStrCommandVariablevnamevval return_text return_file emptyRecipeaddPrerequisitesaddPrerequisitegroupSet groupRecipesflatternapplyPlacement'applyPlacementtransformRecipestransformRecipesM_queryVariablesqueryVariablesE queryTargetsvarmakevarextvarmakeRefInputrefInput RefOutput refOutput CakeString CommandGen CommandGen' unCommand MonadAction liftActionAA'unA'MakeMake'unMake MonadMakeliftMake MakeStateMS prebuilds postbuildsrecipesslocmakeDeps placementincludeserrorswarnings outputFiletmpIndexLocationinitialMakeStategetPlacementPos addPlacement addMakeDeptmpFileprebuild postbuildcheckForEmptyTargetcheckForTargetConflictsevalMake modifyLoc addRecipegetLocincludeMakefilerunA'runArunA_targets prerequisites markPhonyphonymarkIntermediatereadFileForMake commandGen ignoreDependsshell unsafeShellstring inbetweenspacifydependproduce variablescommandslocationflagscmd$fRefInputamCommandGen'$fRefInputamCakeString$fRefInputamVariable$fRefInputamMaybe$fRefInputamMake'$fRefInputamMake'0$fRefInputamIO$fRefInputamSet$fRefInputam[]$fRefInputamRecipe$fRefInputamFileT$fRefOutputmMaybe$fRefOutputmSet$fRefOutputm[]$fRefOutputmFileT$fMonadActionA'm$fMonadLocMake'$fMonadMakeStateT $fMonadMakeA'$fMonadMakeMake'defaultMakefile buildMakeProjectLocationrootoffcurrentDirLocationfile' writeMakerunMakerule2rulerule'genFile genTmpFilegenTmpFileWithPrefixJSTypeurtdeclJSFuncurdeclurnamejsname BinOption UseUrembedNoScan BinOptionsUrpGenunUrpGen ToUrpLine toUrpLine ToUrpWord toUrpWordUrpStateurpst urautogenUrpLiketoUrp tempfilesUWExeUWLibUrpurpuexeuhdrumod UrpModToken UrpModuleSys UrpModule2 UrpModule1 UrpHdrToken UrpScript UrpSafeGet UrpJSFuncUrpFFI UrpPkgConfigUrpSrcUrpLink UrpIncludeUrpDebug UrpLibrary UrpRewriteUrpAllowUrpSql UrpDatabaseUrpAllUrpStyle UrpHeader UrpEnvVarUrpResponseHeaderUrpUrlUrpMimeurpDepsurpSql'urpSqlurpSrcsurpObjsurpLibsurpExe'urpExe urpPkgCfgdefState maskPkgCfgtoFile toTmpFilelineuwlibuwapp setAutogenDiraddHdraddModdatabaseallowrewriteurpUplibrary'library externalMake3 externalMake' externalMakeexternalMakeTarget externalMake2module_urpairsinglesysdebugincludelink'linkcsrc'csrcffisqljsFuncsafeGeturlmimestyleallenvhdr requestHeaderresponseHeaderscript guessMime pkgconfigbinbin'parse_js transform_css parse_css$fToUrpLineUrpModToken$fToUrpLineUrpHdrToken$fToUrpWordUrpRewrite$fToUrpWordUrpAllow$fUrpLikeUWExe$fUrpLikeUWLib $fUrpLikeUrp$fRefInputamUWExe$fRefInputamUWLib filterExtsgetDirectoryContentsRecursivetemplate-haskellLanguage.Haskell.TH.Quote QuasiQuoter text-1.2.0.0Data.Text.InternalTextTextishtoText $fTextisha $fTextish[] $fTextishText $fLiftTextfixMultiTargetcompleteMultiTarget defineClean addMakeDepsLines MakeRegionMRmrnamemrtextMakeLLunMakeLL ToMakeText toMakeText escapeFile escapeFile'smaptextfresh runMakeLL copyRecipeLLruleLLapplySubprojectshasCleanintermediateFiles cleanRuleLLaddRebuildDeps isRequiredForrunLines writeRegionsregion writeRules$fToMakeTextSet$fToMakeTextCommandPiece$fToMakeText[]$fToMakeTextFileT$fToMakeText[]0 withPlacementrunMake'baseGHC.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=<<<$