!:5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                              !"#$%&'()*+,-./01234SafeSafe&',-/=>?@AHSUVX(_ funflow<Freely generated arrows with both choice and error handling. funflowcArrowError represents those arrows which can catch exceptions within the processing of the flow.funflowFreely generated 5 over an effect.funflow'Freely generated arrows over an effect.6funflow;Annoying hackery to let us tuple constraints and still use  and 7funflowSmall class letting us define  and + generally over multiple free structuresfunflow?A natural transformation on type constructors of two arguments.funflowMap an arrow over a list.funflowBMap an arrow over a list, forcing sequencing between each element.funflow#Filter a list given an arrow filter    None=>?@A*,funflowCLift an AsyncA through a monad transformer of the underlying monad./funflow)*+,)*+,SafeX_+89:;<=Safe+Y89:;<=Safe &'/=?@AX,;funflowConstruct a labelled node 165432789:; 789:165432;None>X>@funflowThread and process write lock.Only ever have one @" object per lock file per process!Afunflow,Open the lock file and create a lock object.This does not acquire the lock.Only ever have one @" object per lock file per process!BfunflowClose the lock file.Does not release the lock.Blocks if the lock is taken.CfunflowHAcquire the lock for the duration of the given action and release after.>funflow'Generate unique (per process) filename.&Combines the host name and process ID.?funflowAcquire the lock.ZUses an algorithm that is described in the man-page of open (2) in the last paragraph to O_EXCL0 in release 4.14 of the Linux man-pages project.iCreates a file under a unique (per process) filename. Attempts to hard-link that file to a common lock path. If the operation succeeds, then the lock was acquired. If not, but if the link count of the file under the unique filename increased to two, then the lock was acquired. Otherwise, another process holds the lock and this process waits and retries.@funflowRelease the lock.EUnlinks the file under the unique file name and the common lock file.@ABC@ABCNone=??)None78=>?@AFUV_kn)Hfunflow:Path to a directory to be treated as _externally assured_.4For an externally assured directory, we _do_ traverse its contents and verify those as we would externally assured files, rather than just relying on the directory path. Doing this traversal is pretty cheap, and it's quite likely for directory contents to be modified without modifying the contents.If an item in the directory cannot be read due to lacking permissions, then it will be ignored and not included in the hash. If the flow does not have permissions to access the contents of a subdirectory, then these contents cannot influence the outcome of a task and it is okay to exclude them from the hash. In that case we only hash the name, as that could influence the outcome of a task.Jfunflow5Path to a file to be treated as _externally assured_.4An externally assured file is handled in a somewhat cheating way by funflow. The P instance for such assumes that some external agent guarantees the integrity of the file being referenced. Thus, rather than hashing the file contents, we only consider its (absolute) path, size and modification time, which can be rapidly looked up from filesystem metadata.-For a similar approach, see the instance for ObjectInBucket~ in Control.Funflow.AWS.S3, where we exploit the fact that S3 is already content hashed to avoid performing any hashing.LfunflowPath to a directoryOnly the contents of the directory and their path relative to the directory are taken into account when generating the content hash. The path to the directory is ignored.NfunflowPath to a regular fileOnly the file's content and its executable permission is taken into account when generating the content hash. The path itself is ignored.Qfunflow/Update a hash context based on the given value.See A.%XXX: Consider swapping the arguments.Rfunflow!Generate hash of the given value.See .Vfunflow(File path appropriate encoding of a hashWfunflow Inverse of V if given a valid input."decodeHash (encodeHash x) = Just xXfunflow(File path appropriate encoding of a hashYfunflow Inverse of X if given a valid input."pathToHash (hashToPath x) = Just xZfunflowDUpdate hash context based on binary in memory representation due to B.*XXX: Do we need to worry about endianness?[funflow&Update hash context based on a type's ._The fingerprint is constructed from the library-name, module-name, and name of the type itself.\funflow!Update hash context by combining [ and Z%. Intended for primitive types like C.]funflow?Update hash context based on binary contents of the given file.^funflowUpdate hash context based on D$ by copying into a newly allocated E+ and updating the hash context from there.XXX:  :: D ->  could be used together with F instead. However, ; explicitly says, that it is only safe to use on a pinned D.Gfunflow6Update hash context based on the contents of a strict  .HIJKLMNOPQRSTUVWXYZ[\]^STUPQR]^[\ZNOLMJKHIVWXYNone=?@A_}cHfunflow(An in-memory cache, for testing purposesfunflow6A dummy remote cache implementation which does nothingfunflow&A simple mechanism for remote-caching.<Provides a way to push a path to the cache and pull it back.No assumption is made on the availability of a store path. In particular, pushing a path to the cache doesn't mean that we can pull it back.funflow2The result of a tentative push to the remote cachefunflow4The result of a tentative pull from the remote cachefunflow/Push the path as an archive to the remote cachefunflowIf a is a > then 'Maybe a' is a cacher such that 'Just x' behavies like x and I doesn't cache anythingfunflowPrimary key: hash of the contentfunflow Secondary key: hash of the dependenciesfunflowPath to the contentfunflowHow to create the aliasesfunflowHow to push the contentfunflow Primary keyfunflow Secondary key None"#$&'17=>?@AMX_gMfunflow)File or directory within a content store .funflowA completed item in the .funflow*A hash addressed store on the file system.JfunflowRoot directory of the content store. The process must be able to create this directory if missing, change permissions, and create files and directories within.KfunflowWrite lock on store metadata to ensure multi thread and process safety. The lock is taken when item state is changed or queried.Lfunflow)Used to watch for updates on store items.Mfunflow+Connection to the metadata SQLite database.funflow6Errors that can occur when interacting with the store.funflow4An item is not under construction when it should be.funflow@An item is already under construction when it should be missing.funflow1An item is already complete when it shouldn't be.funflow8The link under the given hash points to an invalid path.funflow@A failure occurred while waiting for the item to be constructed.funflow1IncompatibleStoreVersion storeDir actual expected> The given store has a version number that is incompatible.funflowMalformedMetadataEntry hash key$ The metadata entry for the give hash, key pair is malformed.funflow*Update about the status of a pending item.funflow4The item is now completed and ready for consumption.funflowConstructing the item failed.funflowStatus of an item in the store.funflowThe item does not exist, yet.funflow=The item is under construction and not ready for consumption.funflow/The item is complete and ready for consumption.funflow'Append to the path within a store item.funflow The root directory of the store.funflow3The scoped path to a content item within the store.funflow#The store path of a completed item.funflow(Store item containing the given content.funflow.The absolute path to content within the store.funflow open root. opens a store under the given root directory.+The root directory is created if necessary.PIt is not safe to have multiple store objects refer to the same root directory.funflow:Free the resources associated with the given store object.,The store object may not be used afterwards.funflowoOpen the store under the given root and perform the given action. Closes the store once the action is complete See also: funflow List all elements in the store /(pending keys, completed keys, completed items).funflow#List all pending keys in the store.funflow%List all completed keys in the store.funflow&List all completed items in the store.funflow0Query the state of the item under the given key.funflowBCheck if there is no complete or pending item under the given key.funflow5Check if there is a pending item under the given key.funflow7Check if there is a completed item under the given key.funflowlQuery the state under the given key and return the item if completed. Doesn't block if the item is pending.funflowQQuery the state under the given key and return the item if completed. Return an !" to await an update, if pending.funflowqQuery the state under the given key and return the item once completed. Blocks if the item is pending. Returns I3 if the item is missing, or failed to be completed.funflowKAtomically query the state under the given key and mark pending if missing.Returns  item# if the item is complete. Returns  async if the item is pending, where async is an !" to await updates on. Returns  buildDirU if the item was missing, and is now pending. It should be constructed in the given buildDir%, and then marked as complete using .funflowAtomically query the state under the given key and mark pending if missing. Wait for the item to be completed, if already pending. Throws a  error if construction fails.Returns  item# if the item is complete. Returns  buildDirU if the item was missing, and is now pending. It should be constructed in the given buildDir%, and then marked as complete using .funflowKAtomically query the state under the given key and mark pending if missing.funflowAtomically query the state under the given key and mark pending if missing. Execute the given function to construct the item, mark as complete on success and remove on failure. Forcibly removes if an uncaught exception occurs during item construction.funflow$Mark a non-existent item as pending.1Creates the build directory and returns its path. See also: .funflow Mark a pending item as complete.funflowRemove a pending item.It is the callers responsibility to ensure that no other threads or processes will attempt to access the item's contents afterwards.funflowxRemove a key association independent of the corresponding item state. Do nothing if no item exists under the given key.~It is the callers responsibility to ensure that no other threads or processes will attempt to access the contents afterwards.Note, this will leave an orphan item behind if no other keys point to it. There is no garbage collection mechanism in place at the moment.funflowCRemove a completed item in the store. Do nothing if not completed.~It is the callers responsibility to ensure that no other threads or processes will attempt to access the contents afterwards.|Note, this will leave keys pointing to that item dangling. There is no garbage collection mechanism in place at the moment.funflowWLink the given alias to the given item. If the alias existed before it is overwritten.funflow/Lookup an item under the given alias. Returns I if the alias does not exist.funflowRemove the given alias.funflow*List all aliases and the respective items.funflow/Get all hashes that resulted in the given item.funflow$Define the input items to a subtree.funflow5Get the input items to a subtree if any were defined.funflow Set a metadata entry on an item.funflow)Retrieve a metadata entry on an item, or I if missing.funflowDCreate and open a new metadata file on a pending item in write mode.funflow0Return the path to a metadata file if it exists.NfunflowHolds a lock on the global OC and on the global lock file for the duration of the given action.Pfunflow4Return the full build path for the given input hash.Qfunflow3Return the full link path for the given input hash.Rfunflow4Return the full store path to the given output hash.Sfunflow;Return the full store path to the given metadata directory.Tfunflow6Return the full store path to the given metadata file.Ufunflow:Query the state under the given key without taking a lock.VfunflowmCreate the build directory for the given input hash and make the metadata directory writable if it exists.WfunflowQWatch the build directory of the pending item under the given key. The returned X1 completes after the item is completed or failed.Yfunflow(Set write permissions on the given path.Zfunflow*Unset write permissions on the given path.[funflowCSet write permissions on all items in a directory tree recursively.\funflowEUnset write permissions on all items in a directory tree recursively.]funflowInitialize the database.^funflow3Adds a link between input hash and the output hash..Assumes that the store is locked and writable.BB54 None &'7=?@AM%$funflowdA monomorphic description of an external task. This is basically just a command which can be run.'funflow<Environment variables to set for the scope of the execution.*funflowControl the environment set for the external process. This can either inherit from the surrounding environment, or explicitly set things.+funflowInherit all environment variables from the surrounding shell. Note that the values of these variables will not be taken into account in the content hash, and so changes to them will not trigger a rerun of the step.-funflowControl how and where stdout from the process is captured. Some external steps will write their output to stdout rather than to a file..funflowwSpecify that the step will write its output files directly, and that stdout will not be captured in the step output./funflowCapture output to a file named out in the output directory.0funflow>Capture output to a custom named file in the output directory.1funflowConverter of path components.3funflow,Resolve a reference to a content store item.4funflow Resolve an environment variable.5funflowResolve the effective user ID.6funflowResolve the effective group ID.7funflow-Resolve the output path in the content store.8funflowA parameter to an external taskThe runtime values to external references, e.g. environment variables, should not significantly influence the result of the external task. In particular, the content hash will not depend on these runtime values.:funflowComponent of a parameter;funflowText component.<funflow,Reference to a path to a content store item.=funflow%Reference to an environment variable.>funflow3Reference to the effective user ID of the executor.?funflow4Reference to the effective group ID of the executor.@funflow2Reference to the output path in the content store.AfunflowEA quoted command that we can pass to another program as an argument.BfunflowGSet of items which may be treated as an input path to an external task.CfunflowAn item in the content store.DfunflowOAn external file whose contents are considered assured by the external system.EfunflowTAn external directory whose contents are considered assured by the external system.Gfunflow8Transform a parameter to text using the given converter.JfunflowgReference to a path to either: - a content store item, or - an externally assured file/directory.Kfunflow?Reference to a path to a file or directory within a store item.Lfunflow$Reference an externally assured fileMfunflow$Reference an externally assured fileNfunflow%Reference to an environment variable.Ofunflow3Reference to the effective user ID of the executor.Pfunflow4Reference to the effective group ID of the executor.Qfunflow2Reference to the output path in the content store.Rfunflow4Get the file to write output to, if this is desired.9 !#"$%)('&*,+-0/.127654389:A@?>=<;BEDCFGHIJKLMNOPQR|}~9BEDC:A@?>=<;891276543FGHIJKLMNOPQ-0/.R*,+$%)('& !#"~}| None%7=?@A#_funflow"Convertion state for mapping from  to `afunflowFresh name generatorbfunflow No inputscfunflow?Single input, and the path to its mountpoint within the system.dfunflowMultiple inputs.   None HMV_m> funflowCPerform any necessary initialisation to connect to the coordinator.funflowLSubmit a task to the task queue. It is allowed to overwrite a known task.funflow'View the size of the current task queuefunflow%Fetch information on the current taskfunflowdPop a task off of the queue for execution. The popped task should be added to the execution queuefunflowAwait task completion.If the task is complete, this will return 'KnownTask Completed'. If the task is failed, this will return 'KnownTask Failed'. If the task is not known to the system, this will return p. Otherwise (if the task is pending or running), this will block until the task either completes or fails.funflowaUpdate execution status for a running task. This should error for a task which is not running.funflow(Remove all pending tasks from the queue.funflow0Task is in the queue and has not begun executingfunflow"Task has failed with failure countfunflowtInformation about an executor capable of running tasks. Currently this is just a newtype wrapper around hostname.funflowHCheck if a task is currently 'in progress' - e.g. pending or running.funflowPop a task off of the queue for execution. Passes the popped task to the given function for execution. If the function returns success (eg), then the task will be marked as completed in the given time. If the function returns failure (f), then the task will be marked as failed. If the function raises an exception or is interrupted by an asynchronous exception, then the task will be placed back on the task queue and the exception propagated. Returns I if no task is available and g ()' on task completion or regular failure.   NoneX_Nl funflowThe result already exists in the store and there is no need to execute. This is also returned if the job is already running elsewhere.funflowThe computation is already running elsewhere. This is probably indicative of a bug, because the coordinator should only allow one instance of a task to be running at any time.funflow@Execution completed successfully after a certain amount of time.funflowLExecution failed with the following exit code. TODO where should logs go?funflowfThe executor itself failed to execute the external task. E.g. because the executable was not found.funflowExecute an individual task.funflowExecute tasks foreverfunflowSame as !, but allows specifying a custom h for loggingfunflowwithFollowFile in out follows the file in and prints contents to outH as they appear. The file must exist. Doesn't handle file truncation.  None HV_]vifunflowSQLite coordinator hook.funflowSQLite coordinator tag.jfunflowSQLite task info query result.kfunflowWrapper around  for SQLite serialization.lfunflowEnumeration of possible  cases for SQLite status column.mfunflow@Take the lock and run the given action on the SQLite connection.nfunflowCErrors that can occur when interacting with the SQLite coordinator.ofunflowMissingDBTaskEntry output field/ The task database entry is missing a field.pfunflowDecodingError field error Failed to decode the field.qfunflowNonRunningTask output The task is not running.rfunflow!IllegalStatusUpdate output status) Cannot update the status of the task.sfunflowWrapper around   for SQLite serialization.tfunflowWrapper around $ for SQLite serialization.ufunflow Helper for NULL valued data-base fields.Throws o on I, otherwise returns the value.vfunflowUnlifted version of .None &'@AHVX_funflow3Allow a preestablished redis connection to be used.NoneHV_  #None %&'=>?EUVXp' funflow5Additional properties associated with external tasks.funflow/Write additional metadata to the content store.funflowMSpecify that this external step is impure, and as such should not be cached.funflowSName of this step. Used when describing the step in diagrams or other reporting.funflowKSpecify whether this step can be cached or not and, if so, how to do so.funflow/Write additional metadata to the content store.funflow=A cacher is responsible for controlling how steps are cached.funflow%This step cannot be cached (default).funflow_Function to encode the input into a content hash. This function additionally takes an  identities, which gets incorporated into the cacher.funflow;Attempt to read the cache value back. May throw exceptions.funflowMetadata writerwfunflow$Since there are no constructors for 3, this code can never be reached and so is fine.xfunflow;Convert a flow to a diagram, for inspection/pretty printingfunflowSeed for the cacher#wxNone&'XqNone&'>SUVX_ifunflowSimple evaulation of a flowyfunflow Run a flow in a logging context.funflow#Run a flow, discarding all logging. funflow1Run a simple flow. Logging will be sent to stderr funflowCreate a full pipeline runner locally. This includes an executor for executing external tasks. This function is specialised to  since in cases where a custom term algebra is in use, we assume that probably a centralised coordinator and external runners may be desired as well.funflow+Natural transformation from wrapped effectsfunflow:Flow configuration identity. This forms part of the caching system and is used to disambiguate the same flow run in multiple configurations. If Nothing, then it means this flow has no identity, this implies that steps will be executed without cache, and external tasks will all be considered impure.yfunflow+Natural transformation from wrapped effectsfunflowFlow configuration identity. This forms part of the caching system and is used to disambiguate the same flow run in multiple configurations.funflow+Natural transformation from wrapped effectsfunflowFlow configuration identity. This forms part of the caching system and is used to disambiguate the same flow run in multiple configurations. funflowPath to content store    $None=>?@AC=  funflow#Create a flow from a pure function. funflow Create a flow from an IO action.funflow$Create an external task in the flow.funflow2Create an external task with additional propertiesfunflow)Create a flow from a user-defined effect.funflow>Create a flow which will write its incoming data to the store.funflow=Create a flow which will read data from the given store item.funflow8Perform some internal manipulation of the content store.funflow<Create a flow from a pure function. This is a variant on  # which uses the default properties.funflow9Create a flow from an IO action. This is a variant on  # which uses the default properties.    None>@AXfunflow/Create a default cacher with a random identity.Note that this cacher is deliberately conservative - e.g. if the application is recompiled, the cache will not be reused.funflowCreate a default cacher based on the location of this splice. Note that this may lead to invalid cacheing if the code is changed without the version being updated.funflowVersionNone &'>@APX8funflowpause for a given number of seconds. Thread through a value to ensure delay does not happen inparallel with other processing funflowon first invocation die and leave a suicide note on second invocation it is resurrected and destroys suicide note, returning contents!funflow`retry n s f` reruns f, on failure at most n times with a delay of s seconds between retries%funflowcopyFileToStore (fIn, fOut) copies the contents of fIn) into the store under the relative path fOut within the subtree.&funflowcopyDirToStore (dIn, Nothing) copies the contents of dIn) into the store right under the subtree.| copyDirToStore (dIn, Just dOut) copies the contents of dIn% into the store under relative path dOut within the subtree'funflow1List the contents of a directory within the store(funflowUSearch for files in the directory matching the given text string, as a glob pattern.)funflow=Search for files in the directory matching the given pattern.*funflowMerge a number of store directories together into a single output directory. This uses hardlinks to avoid duplicating the data on disk.+funflow7Merge a number of files into a single output directory.,funflow1Read the contents of the given file in the store.-funflow"Read the contents of a file named out within the given item..funflow?Create and write into a file under the given path in the store.0funflow#Create and write into a file named out within the given item.1funflow2Read a YAML file from the given file in the store.2funflow4Write a YAML file under the given name to the store.3funflowWrite a YAML file named out.yaml to the store. !"#$%&'()*+,-./01234!#&%'()"*+$,-1/.0234 NoneUVV !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR|}~      !"#$%&'()*+,-./012340   z%&'%()%(*++,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPPQRSTUVWXYZ[\]]^_`abcdefghijklmmnnooppqrstuvwxyz{|}~                                                         ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ? @ A B B C D E F G H I J K L M N N O P Q R S T 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:;<=>?@ABCDEFGHIJKLM%N@OPQRSQTUVWUXYZ[@\] ^ _ ` a b@cd e f g h i j k lmn" o p q r s t u v w x y z@{|@{}@\~##$funflow-1.5.0-IcEGfJSp3ag8T7kfAGHQUpControl.Funflow.ContentHashableControl.Arrow.AppArrowControl.Arrow.FreeControl.Arrow.AsyncControl.Funflow.DiagramControl.Funflow.LockControl.Funflow.OrphansControl.Funflow.RemoteCacheControl.Funflow.ContentStoreControl.Funflow.ExternalControl.Funflow.External.Docker$Control.Funflow.External.Coordinator!Control.Funflow.External.Executor+Control.Funflow.External.Coordinator.SQLite*Control.Funflow.External.Coordinator.Redis+Control.Funflow.External.Coordinator.MemoryControl.FunflowControl.Funflow.PrettyControl.Funflow.Exec.SimpleControl.Funflow.Cache.THControl.Funflow.Steps)Control.Funflow.ContentStore.Notify.Linux#Control.Funflow.ContentStore.Notify Crypto.HashhashGHC.Fingerprint.Type FingerprintGHC.PrimbyteArrayContents#Addr# Data.TextTextControl.ConcurrentAsyncControl.Funflow.BaseControl.Funflow.Class&cryptonite-0.26-IijLzbS4q70FSbXhABK4XrCrypto.Hash.SHA256SHA256Crypto.Hash.TypesContextDigestAppArrow unAppArrowappArrow$fApplicativeAppArrow$fFunctorAppArrow$fArrowChoiceAppArrow$fArrowAppArrow$fCategoryTYPEAppArrow ErrorChoice ArrowErrortryChoiceFreeeffecteval~>catchmapAmapSeqAfilterA $fJoinkabx$fFreeArrowLikeTYPEFree $fArrowFree$fCategoryTYPEFree$fFreeArrowLikeTYPEChoice$fArrowChoiceChoice $fArrowChoice$fCategoryTYPEChoice$fArrowErrorTYPEexKleisli$fArrowErrorTYPEexAppArrow$fArrowErrorTYPEexAppArrow0$fArrowErrorTYPEexAppArrow1$fFreeArrowLikeTYPEErrorChoice$fArrowErrorTYPEexErrorChoice$fArrowChoiceErrorChoice$fArrowErrorChoice$fCategoryTYPEErrorChoiceAsyncA runAsyncA liftAsyncA$fArrowErrorTYPEexAsyncA$fArrowChoiceAsyncA $fArrowAsyncA$fCategoryTYPEAsyncADiagramNodeSeqParFaninTryNodePropertieslabelsemptyNodePropertiesnode$fArrowErrorTYPEexDiagram$fArrowChoiceDiagram$fArrowDiagram$fCategoryTYPEDiagramLockopenLock closeLockwithLock $fStorePath $fStorePath0 $fStorePath1 $fStorePath2ExternallyAssuredDirectoryExternallyAssuredFileDirectoryContent FileContentContentHashablecontentHashUpdate contentHash ContentHashtoBytes fromBytes encodeHash decodeHash hashToPath pathToHashcontentHashUpdate_storablecontentHashUpdate_fingerprintcontentHashUpdate_primitivecontentHashUpdate_binaryFilecontentHashUpdate_byteArray#$fToFieldContentHash$fFromFieldContentHash$fStoreContentHash$fShowContentHash$fHashableContentHash$fToJSONContentHash$fFromJSONContentHash$fGContentHashablem:+:$fGContentHashablem:*:$fGContentHashablemM1$fGContentHashablemM10$fGContentHashablemM11$fGContentHashablemU1$fGContentHashablemV1$fContentHashablemUTCTime$fContentHashablemPath$fGContentHashablemK1$fContentHashablemValue$fContentHashablemEither$fContentHashablemMaybe$fContentHashablem(,,,,,,)$fContentHashablem(,,,,,)$fContentHashablem(,,,,)$fContentHashablem(,,,)$fContentHashablem(,,)$fContentHashablem(,)$fContentHashablem()$fContentHashablemVector$fContentHashablemNonEmpty$fContentHashablem[]$fContentHashablemHashSet$fContentHashablemHashMap$fContentHashablemMap$fContentHashablemText$fContentHashablemText0$fContentHashablemByteString$fContentHashablemByteString0$fContentHashablemNatural$fContentHashablemInteger$fContentHashablemScientific$fContentHashablemRatio$fContentHashablemDouble$fContentHashablemFloat$fContentHashablemWord64$fContentHashablemWord32$fContentHashablemWord16$fContentHashablemWord8$fContentHashablemWord$fContentHashablemInt64$fContentHashablemInt32$fContentHashablemInt16$fContentHashablemInt8$fContentHashablemInt$fContentHashablemChar$fContentHashablemBool$fContentHashablemFingerprint$fContentHashableIOFileContent"$fContentHashablemDirectoryContent($fContentHashableIOExternallyAssuredFile$fStoreExternallyAssuredFile$fToJSONExternallyAssuredFile$fFromJSONExternallyAssuredFile-$fContentHashableIOExternallyAssuredDirectory!$fStoreExternallyAssuredDirectory"$fToJSONExternallyAssuredDirectory$$fFromJSONExternallyAssuredDirectory$fEqContentHash$fOrdContentHash$fGenericContentHash$fGenericExternallyAssuredFile$fShowExternallyAssuredFile#$fGenericExternallyAssuredDirectory $fShowExternallyAssuredDirectoryNoCacheCacherpushpull AliasResultAliasOKTargetNotInCache AliasError PushResultPushOK PushError PullResultPullOK NotInCache PullError pushAsArchive pullAsArchive memoryCache$fCachermMaybe$fCachermNoCache$fCachermMemoryCache$fEqPullResult$fOrdPullResult$fShowPullResult$fEqPushResult$fOrdPushResult$fShowPushResultAliasunAliasContentAll:ItemitemHash ContentStore StoreError NotPendingAlreadyPendingAlreadyComplete CorruptedLinkFailedToConstructIncompatibleStoreVersionMalformedMetadataEntryUpdate CompletedFailedStatus_StatusMissingPendingComplete^root itemRelPathitemPath contentItemcontentFilename contentPathopenclose withStorelistAll listPending listComplete listItemsquery isMissing isPending isCompletelookup lookupOrWaitwaitUntilCompleteconstructOrAsyncconstructOrWaitconstructIfMissingwithConstructIfMissing markPending markComplete removeFailedremoveForciblyremoveItemForcibly assignAlias lookupAlias removeAlias listAliasesgetBackReferences setInputs getInputs setMetadata getMetadatacreateMetadataFilegetMetadataFile$fExceptionStoreError $fStoreItem$fHashableItem $fToJSONItem$fFromJSONItem$fContentHashablemItem$fContentHashablemContent$fContentHashablemContent0 $fEqStatus $fShowStatus$fShowStoreError$fEqItem $fOrdItem $fShowItem $fGenericItem $fEqUpdate $fShowUpdate$fContentHashableAlias $fEqAlias $fOrdAlias $fShowAlias$fFromFieldAlias$fToFieldAlias $fStoreAlias $fShowContent $fEqContentTaskDescription _tdOutput_tdTask ExternalTask _etCommand _etParams_etEnv_etWriteToStdOutEnv EnvInherit EnvExplicit OutputCaptureNoOutputCapture StdOutCaptureCustomOutCapture ConvParamconvPathconvEnvconvUidconvGidconvOutParam ParamField ParamText ParamPathParamEnvParamUidParamGidParamOutParamCmd InputPathIPItemIPExternalFile IPExternalDirparamFieldToText paramToText stringParam textParam pathParam contentParamexternalFileParamexternalDirectoryParamenvParamuidParamgidParamoutParamoutputCaptureToRelFile$fStoreInputPath$fToJSONInputPath$fFromJSONInputPath$fContentHashableIOInputPath $fStoreParam $fToJSONParam$fFromJSONParam$fContentHashableIOParam$fIsStringParam$fStoreParamField$fToJSONParamField$fFromJSONParamField$fContentHashableIOParamField$fStoreOutputCapture$fToJSONOutputCapture$fFromJSONOutputCapture $fContentHashableIOOutputCapture $fStoreEnv $fToJSONEnv $fFromJSONEnv$fContentHashableIOEnv$fStoreExternalTask$fToJSONExternalTask$fFromJSONExternalTask$fContentHashableIOExternalTask$fGenericInputPath$fShowInputPath$fGenericParam $fMonoidParam$fSemigroupParam $fShowParam$fGenericParamField$fShowParamField$fGenericOutputCapture$fShowOutputCapture $fGenericEnv $fShowEnv$fGenericExternalTask$fShowExternalTask$fGenericTaskDescription$fShowTaskDescription etCommandetEnvetParamsetWriteToStdOuttdOutputtdTaskConfigimage optImageIDcommandargsenvstdout toExternal $fMonoidBind$fSemigroupBind$fContentHashableIOBind$fContentHashableIODocker $fGenericBind$fGenericConfig$fGenericDocker CoordinatorHook initialise submitTask queueSizetaskInfopopTask awaitTaskupdateTaskStatus dropTasks TaskErrorExternalTaskFailed ExecutionInfo _eiExecutor _eiElapsedTaskInfo KnownTask UnknownTask TaskStatusRunningExecutor$fExceptionTaskError$fShowExecutor$fStoreExecutor$fShowExecutionInfo$fShowTaskStatus$fShowTaskInfo$fShowTaskError eiElapsed eiExecutor$fStoreTaskStatus$fStoreExecutionInfo startTask isInProgress withPopTask$fStoreTaskInfoExecutionResultCachedAlreadyRunningSuccessFailureExecutorFailureexecute executeLoopexecuteLoopWithScribewithFollowFileSQLite$fToFieldSqlTaskStatus$fFromFieldSqlTaskStatus$fToFieldSqlExecutor$fFromFieldSqlExecutor$fEnumSqlTaskStatus$fFromRowSqlTaskInfo$fToFieldSqlExternal$fFromRowSqlTask$fCoordinatorSQLite!$fExceptionSQLiteCoordinatorError$fFromFieldSqlExternal$fShowSQLiteCoordinatorErrorRedisPreconnectedRedis$fCoordinatorRedis$fCoordinatorRedisPreconnectedMemHook _mhTaskQueue_mhExecutionQueueMemoryCoordinatormhExecutionQueue mhTaskQueuecreateMemoryCoordinator$fCoordinatorMemoryCoordinator==> SimpleFlowNoEffectFlowFlow'StepStepIOExternal PutInStore GetFromStoreInternalManipulateStoreWrappedExternalProperties ep_mdpolicy ep_impureEpPurityEpPureEpImpure PropertiesnamecachemdpolicyCache cacherKeycacherStoreValuecacherReadValueMDWriterdefaultCacherWithIdentalwaysRecompileppFlowshowFlow runFlowExrunFlow runSimpleFlowwithSimpleLocalRunner ArrowFlowstep'stepIO'external external'wrap' putInStore getFromStoreinternalManipulateStorestepstepIOwrap defaultCacherdefaultCacherLoc $fHashableLoc promptForprintSfailStepcachedFailStepworstBernoulli pauseWithmelancholicLazarusretrylookupAliasInStoreassignAliasInStore putInStoreAtcopyFileToStorecopyDirToStorelistDirContentsglobDirglobDirPattern mergeDirs mergeFiles readString readString_ writeStringwriteExecutableString writeString_readYaml writeYaml writeYaml_dockerbase Control.Arrow ArrowChoiceJoin FreeArrowLikeWatchNotifier initNotifier killNotifier addDirWatchremoveDirWatchgetUniqueFileNameacquireDirLockreleaseDirLock hashUpdateForeign.StorableStorableghc-prim GHC.TypesInt ByteArray#$memory-0.15.0-BDpL7xANPQtKTtLLiFSTuVData.ByteArray.BytesBytesData.ByteArray.MemViewMemViewcontentHashUpdate_text MemoryCache GHC.MaybeNothing storeRoot storeLock storeNotifierstoreDb withStoreLockGHC.MVarMVar mkPendingPathmkCompletePath mkItemPathmkMetadataDirPathmkMetadataFilePath internalQueryinternalMarkPendinginternalWatchPending"async-2.2.2-JNOgs3QkEuXLm97AkAPhACControl.Concurrent.Async setWritable unsetWritablesetWritableRecursivelyunsetWritableRecursivelyinitDbaddBackReference ConvertStateDocker_csFreshNoInput SingleInput MultiInput Data.EitherRightLeftJust$katip-0.8.3.0-4klGi1DbAvVHYrJyBUCbk0 Katip.CoreScribe SQLiteHook SqlTaskInfo SqlExecutor SqlTaskStatus withSQLiteSQLiteCoordinatorErrorMissingDBTaskEntry DecodingErrorNonRunningTaskIllegalStatusUpdateSqlTask SqlExternalfromMaybeField taskInfo' runNoEffect toDiagram runFlowLog