ϊΞBΦ;W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽNoneM       None 06=BKMf,Sets a custom variable in the sandbox monad.g-Checks that a custom sandbox variable is set.h]Returns the value of a previously set sandbox variable (or a provided default value if unset)iUnsets a custom variable.e !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef!Variable key for future referenceVariable valueg Variable keyh Variable keyDefault value if not foundi Variable keyjklmnopqrstub !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqre@?<=>9:;uABC/012345678$%&'()*+,-.#"! DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnotspqr?#"! $ %&'()*+,-./ 0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu)Benjamin Surma <benjamin.surma@gmail.com>NoneMvDOptional parameters when registering a process in the Sandbox monad.xATime to wait (in s.) before checking that the process is still upy!Which outputs to capture (if any)z@Creates a sandbox and execute the given actions in the IO monad.|)Registers a process in the Sandbox monad.}[Communicates with a sandboxed process via TCP and returns the answered message as a string.~ˆStarts the given process, runs the action, then stops the process. The process is managed by the functions start and stop respectively.[Helper function: starts a process, wait for it to terminate and return its captured output.€0Starts a previously registered process (verbose)=Starts all registered processes (in their registration order)‚7Gracefully stops a previously started process (verbose)ƒ!Sends a POSIX signal to a process„OGracefully stops all registered processes (in their reverse registration order)…:Returns the effective binary path of a registered process.†UReturns the handles used to communicate with a registered process using standard I/O.‡6Returns the last captured output of a started process.ˆ4Interacts with a sandboxed process via standard I/O.‰DReturns an unbound user TCP port and stores it for future reference.Š2Explicitely sets a port to be returned by getPort.‹=Creates a temporary file in the sandbox and returns its path.Œ9Returns the path of a file previously created by setFile.BTemporarily sets a variable for the execution of the given action.ŽEReturns the temporary directory used to host the sandbox environment.#Executes the given action silently.vwxyzName of the sandbox environmentAction to perform{| Process namePath to the application binary%Arguments to pass on the command-lineProcess settings}Name of the registered port  Input string.Time to wait before timeout (in milli-seconds)~ Process name Action to run€ Process name‘‚ Process nameƒ Process nameSignal to send„… Process name† Process name‡ Process nameˆ Process name Input string.Time to wait before timeout (in milli-seconds)‰Port name for future referenceŠPort name for future referenceTCP port number‹File name for future reference File contentsŒFile name used during setFile Variable keyVariable value Action to runŽAction to execute’. !"#<ACfghivwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ.<vwxy#"! z{AC|~€‚„ƒˆ}‡†‰…ŠŒ‹Žghfivwxyz{|}~€‘‚ƒ„…†‡ˆ‰Š‹ŒŽ’“   !"#$%&'()*+,-../01234567889:;<=>?@AABCCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{||}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜test-sandbox-0.1.0 Test.SandboxTest.Sandbox.ProcessTest.Sandbox.Internalsdata-default-class-0.0.1Data.Default.Classdeflifted-base-0.2.3.3Control.Exception.Liftedfinallybrackettransformers-0.4.2.0Control.Monad.IO.ClassliftIO mtl-2.2.1Control.Monad.Error.Class catchError throwError ProcessInfopiPidpiStatpiPpidpiPgidgetProcessInfogetProcessInfosgetProcessGroupIDs getProcessIDscleanUpProcessGroupIDsSandboxTestOptionsstoSeedstoMaximumGeneratedTests"stoMaximumUnsuitableGeneratedTestsstoMaximumTestSize SandboxSeedSandboxRandomSeedSandboxFixedSeedSandboxedProcessInstanceStoppedInstanceRunningInstanceCaptureCaptureBothWithFileCaptureStderrWithFileCaptureStdoutWithFile CaptureBoth CaptureStderr CaptureStdoutSandboxedProcessspNamespBinaryspArgsspWait spCapture spInstancespPidspPGid spHandles SandboxStatessName ssDataDir ssProcessesssProcessOrderssAllocatedPortsssAvailablePortsssFiles ssVariables StMSandbox runStMSandboxSandboxrunSBSandboxStateRefPort runSandbox errorHandler runSandbox'getputprettyheaderfooternewSandboxStateregisterProcessisValidProcessName getProcess updateProcess secondInΒ΅ssetFile' bufferSizehReadWithTimeout sendToPort getNewPort isBindable startProcessformatCommandLine stopProcessgetAvailablePidscleanUpProcesseshSignalProcess killProcess hGetProcessIDinteractWithProcessgetProcessInputHandlegetProcessCapturedOutputHandlegetProcessBinaryfindExecutables tryBinarygetProcessCandidateBinariesexpandwhenM setVariable checkVariable getVariable unsetVariable isVerbose verbosityKey isCleanUp cleanUpKey displayBannerinstallSignalHandlers putOptions getOptionsoptionsVariable$fSerializeSandboxTestOptions$fSerializeSandboxSeed$fMonadBaseControlIOSandboxProcessSettingspsWait psCapturesandbox withSandboxregistersendTo withProcessrunstartstartAllstopsignalstopAll getBinary getHandlesreadLastCapturedOutput interactWithgetPortsetPortsetFilegetFile withVariable getDataDirsilentlycleanUpwaitFor$fDefaultProcessSettings