úÎkîf6B      !"#$%&'()*+,-./0123456789:;<=> ? @ A   Safe-InferredBBBNone=Class of types which can be used as the input and outputs of  these process functions. ?Read the list of chunks from this handle. For lazy types this  is just a call to C followed by toChunks. For strict @ types it might return a singleton list. Strings are trickier. ;Methods for turning the output of a process into a monoid. DA process usually has one E at the end of its output, this F - instance lets us build the type returned by   . DD NoneGHIJKGHIJKNoneFor the , function, we need to wrap a newtype around B the output type so we can build a ProcessOutput instance for it. ( Otherwise it would overlap everything. ?Read the output of a process and use the argument functions to E convert it into a Monoid, preserving the order of appearance of the E different chunks of output from standard output and standard error. @Simultaneously read the output from several file handles, using A the associated functions to add them to a Monoid b in the order C they appear. This closes each handle on EOF, because AFAIK it is A the only useful thing to do with a file handle that has reached  EOF. An implementation of    B with a two generalizations: (1) The input and outputs can be any  instance of ), and (2) The CreateProcess is passes an ! argument, so you can use either L or   ' and you can modify its fields such as  M before the process starts  A version of    that uses  any instance of  instead of N, implemented  using . Implementation of   that uses any  instance of  instead of N, implemented using    . As with   , Stderr C goes directly to the console, only stdout is returned. Also like   $, an IO error of type OtherError is 1 thrown when the result code is not ExitSuccess. O=Write and flush process input, closing the handle when done. C Catch and ignore Resource Vanished exceptions, they just mean the 3 process exited before all of its output was read. P6Wrapper for a process that provides a handler for the A ResourceVanished exception. This is frequently an exception we ? wish to ignore, because many processes will deliberately exit + before they have read all of their input.  Qprocess to run standard input exitcode, stdout, stderr command to run any arguments standard input exitcode, stdout, stderr command to run any arguments standard input stdout OPRS      QOPRSNoneLike T, but takes a E CreateProcess instead of a command and argument list, and reads and  writes type U Like T , but using U Like V , but using U command to run standard input exitcode, stdout, stderr NoneWBThe monad state, are we at the beginning of a line or the middle? ;A concrete representation of the methods in ProcessOutput. This will always come first A concrete use of   - build a list containing ? chunks of process output, any exceptions that get thrown, and C finally an exit code. If a is a lazy type the returned list will  be lazy. )Eliminate empty Stdout or Stderr chunks. AMerge adjacent Stdout or Stderr chunks. This may be undesirable C if you want to get your input as soon as it becomes available, it % has the effect of making the result  less lazy. !2Pure function to indent the text of a chunk list. XBIndent the text of a chunk with the prefixes given for stdout and ? stderr. The state monad keeps track of whether we are at the E beginning of a line - when we are and more text comes we insert one  of the prefixes. Y?dotifyChunk charsPerDot dot chunk - Replaces every charsPerDot C characters in the Stdout and Stderr chunks with one dot. Runs in D the state monad to keep track of how many characters had been seen , when the previous chunk finished. chunks. #CWrite the Stdout chunks to stdout and the Stderr chunks to stderr. $:Apply a function to the chunk list and output the result, . return the original (unmodified) chunk list. %BOutput the indented text of a chunk list, but return the original  unindented list. '?Output the dotified text of a chunk list. Returns the original  (undotified) list. (@Output the dotified text of a chunk list with a newline at EOF.  Returns the original list. )?Insert a chunk displaying the command and its arguments at the  beginning of the chunk list. *;Insert a chunk displaying the command and the result code. ZThis lets us use DeepSeq's  on a stream  of Chunks. !W[\ !X"Y#$%&'()*+,-Z]^ !"#$%&'()*+,- !"#$%&'()*+,-W\[ !X"Y#$%&'()*+,-Z]^None_BThis String instance is implemented using the Lazy Text instance. B Otherwise (without some serious coding) String would be a strict  instance . Note that the   in the D process library is strict, while our equivalent is not - see test4  in Tests/ Dots.hs. __None.:For the unthreaded implementation we need a more powerful  ListLikeLazyIO class. `@Wait until at least one handle is ready and then write input or D read output. Note that there is no way to check whether the input C handle is ready except to try to write to it and see if any bytes @ are accepted. If no input is accepted, or the input handle is B already closed, and none of the output descriptors are ready for . reading the function sleeps and tries again. a6Return the next output element and the updated handle ' from a handle which is assumed ready. bcde./0fgh1i`a23jk./0123./0123 bedc./0fgh1i`a23jkNonellNone45command to run standard input exitcode, stdout, stderr 454545None7Like T, but takes a E CreateProcess instead of a command and argument list, and reads and  writes type  ByteString 8Like T , but using  ByteString 9Like V , but using m 67command to run standard input exitcode, stdout, stderr 89678967896789None;Like T , but using n <Like T , but using  ByteString =Like V , but using n :;command to run standard input exitcode, stdout, stderr <=:;<=:;<=:;<=None  None?Like T, but takes a E CreateProcess instead of a command and argument list, and reads and  writes type o @Like T , but using o ALike V , but using o >?command to run standard input exitcode, stdout, stderr @A>?@A>?@A>?@Ap !" " #$%&'()*+,-./0123456789:;<=>" "" "   "  ?@ABCDEFDGH I J K L MN ONPQDRSTUVWXN YZ[N \]^_`\abcdefghijklmnocpqrpsrYt[uprocess-listlike-0.10System.Process.ListLike.ClassesSystem.Process.ListLike.ReadSystem.Process.ByteString.LazySystem.Process.Chunks%System.Process.ListLike.ReadNoThreadsSystem.Process.StringSystem.Process.TextSystem.Process.Text.LazySystem.Process.ByteStringUtilsSystem.ProcessreadProcessWithExitCode!System.Process.ListLike.Instances rawSystem readProcessControl.DeepSeqforce"System.Process.ListLike.LazyString$System.Process.ListLike.StrictStringSystem.Process.ListLikeListLikeLazyIO readChunks ProcessOutputpidfoutferrfintfcodef StdoutWrapperunStdoutWrapperreadCreateProcessreadCreateProcess'readInterleavedreadCreateProcessWithExitCodeChunkResult ExceptionStderrStdout ProcessHandlereadCreateProcessChunksdiscardEmptyChunks fuseChunkscollectProcessTriplecollectProcessResultcollectProcessOutput indentChunks dotifyChunksputChunkputMappedChunks putIndentedputIndentedShowCommandputDots putDotsLninsertCommandStartinsertCommandResultinsertCommandDisplayshowCreateProcessForUsershowCmdSpecForUserListLikeIOPlushPutNonBlockingchunksforkWaitListLike-4.1.0Data.ListLike.IO hGetContents$fMonoidExitCodebaseGHC.IO.ExceptionExitCode Data.MonoidMonoid$fProcessOutputa(,,)$fListLikeLazyIOTextChar$fListLikeLazyIOByteStringWord8$fListLikeLazyIOTextChar0 $fListLikeLazyIOByteStringWord80process-1.1.0.2procSystem.Process.InternalscwdGHC.BaseString writeInputresourceVanishedreadInterleaved'$fProcessOutputaStdoutWrapper$fMonoidStdoutWrapperbytestring-0.10.0.2Data.ByteString.Lazy.Internal ByteStringBOL indentChunk dotifyChunk$fNFDataExitCodeMOL$fProcessOutputa(,)$fProcessOutputa[]$fListLikeLazyIO[]CharreadynextOut Readyness EndOfFileUnreadyReadybufSizeuSecsmaxUSecshReady'$fListLikeIOPlusTextChar$fListLikeIOPlusByteStringWord8 text-1.1.1.3Data.Text.InternalTextData.Text.Internal.LazyData.ByteString.Internal