Îõ³h&>z: ’      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘(c) 2020-2021 Tim EmiolaBSD30Tim Emiola  Safe-Inferred)*01ÁÂÃÄÅÌÙÚÜïÙ’tmp-proc Used internally by @SortSymbols.“tmp-proc Used internally by @SortSymbols.tmp-procSort a list of type-level symbols using merge sort.Examples):kind! SortSymbols '["xyz", "def", "abc"].SortSymbols '["xyz", "def", "abc"] :: [Symbol]= '["abc", "def", "xyz"]”tmp-proc Implements .tmp-proc"Computes the midpoint of a number.ÚN.B: maximum value that this works for depends on the reduction limit of the type-checker.Examples:kind! CmpNat 49 (HalfOf 99)!CmpNat 49 (HalfOf 99) :: Ordering= 'EQ:kind! CmpNat 50 (HalfOf 100)"CmpNat 50 (HalfOf 100) :: Ordering= 'EQtmp-proc#Counts a list, 1 element at a time.Examples(:kind! CmpNat 4 (LengthOf '[1, 2, 3, 4])-CmpNat 4 (LengthOf '[1, 2, 3, 4]) :: Ordering= 'EQtmp-procÂDrops 1 element at a time until the the dropped target is reached.Examples#:kind! Drop '["a", "b", "c", "d"] 2(Drop '["a", "b", "c", "d"] 2 :: [Symbol] = '["c", "d"]:kind! Drop '["a"] 2Drop '["a"] 2 :: [Symbol]= '[]tmp-procÊTakes 1 element at a time from a list until the desired length is reached.Examples#:kind! Take '["a", "b", "c", "d"] 2(Take '["a", "b", "c", "d"] 2 :: [Symbol] = '["a", "b"](c) 2020-2021 Tim EmiolaBSD30Tim Emiola  Safe-Inferred ")*/01ÁÂÃÄÅÌÙÚÜïÉtmp-procGenerate proof instances of •.•tmp-proc2Proves a type is present in a list of other types.tmp-procAllows reordering of similar s.ExamplesÐhReorder @_ @'[Bool, Int] ('c' &: (3 :: Int) &: True &: (3.1 :: Double) &: HNil)True &: 3 &: HNilØhReorder @_ @'[Double, Bool, Int] ('c' &: (3 :: Int) &: True &: (3.1 :: Double) &: HNil)3.1 &: True &: 3 &: HNiltmp-procGenerate proof instances of –.–tmp-proc8Proves that symbols with corresponding types occur as a  in a list of  typesNote - both the list symbols and  types need to be sorted, with  types sorted by key. TODO:? is there an easy way to incorporate this rule into the proof ? tmp-procGenerate proof instances of  . tmp-proc9Proves a symbol and its type occur as entry in a list of  types.tmp-procËA constraint that confirms that a type is not present in a type-level list.tmp-procUse a type-level symbol as key type that indexes a value type.tmp-procDefines a Heterogenous list.tmp-procObtain the first element of a .tmp-procGet an item in an  given its type.tmp-procAn infix alias for .tmp-procConstruct a two-item HList.tmp-procAn infix alias for .tmp-procConstruct a singleton HListtmp-procSelect an item from an  of s by key.N.BÉ Returns the first item. It assumes the keys in the KV HList are unique. TODO:& enforce this rule using a constraint.ExamplesÚselect @"d" @Double @'[KV "b" Bool, KV "d" Double] (V True &: V (3.1 :: Double) &: HNil)3.1tmp-proc)Select items with specified keys from an  of s by key.N.B.# this this is an internal function.€The keys must be provided in the same order as they occur in the HList, any other order will likely result in an compiler error.ExamplesáselectMany @'["b"] @'[Bool] @'[KV "b" Bool, KV "d" Double] (V True &: V (3.1 :: Double) &: HNil) True &: HNil    5566(c) 2020-2021 Tim EmiolaBSD30Tim Emiola  Safe-Inferred "')*/01ÁÂÃÄÅÇÌ×ÙÚÜãëï/ŸÐ—tmp-procSort lists of V types.˜tmp-procñUsed to support type classes that prove a list of types is constrained to unique instances of another type class.™tmp-procConvert list of G types to corresponding H types.+tmp-proc4Declares a proof that a list of types only contains Gs.štmp-proc,Used to prove a list of types just contains >s.›tmp-proc,Used to prove a list of types just contains Vs.,tmp-proc4Declares a proof that a list of types only contains >s.œtmp-procConvert list of V types to corresponding  types.tmp-procConverts list of > the corresponding @ symbols.-tmp-proc A list of VÙ values of different types with the name of the docker network connecting their processes.tmp-proc A list of V values./tmp-proc,Converts list of types to the corresponding V types.žtmp-proc*Specifies how to obtain the service URI a V at an index in a list.0tmp-procÑObtains the service URI of the handle whose index is specified by the proxy type.Ÿtmp-procSpecifies how to ping a V at an index in a list.1tmp-proc type looks up a value in an  of V.7tmp-procA  Constraint that combines > and its supporting typeclasses8tmp-procÀA connection string used to access the service once its running.9tmp-proc"The IP address of the docker host.:tmp-proc"Indicates the result of pinging a >.If the ping succeeds, D should return ;.D8 should catch any exceptions that are expected when the >s% service is not available and return <.` uses =1 to report any unexpected exceptions that escape D.;tmp-procThe service is running OK.<tmp-procThe service is not running.=tmp-proc+Contact to the service failed unexpectedly.>tmp-proc9Specifies how to launch a temporary process using Docker.?tmp-proc)The image name of the docker image, e.g,  postgres:10.6@tmp-procÏA label used to refer to the running tmp proc created from this image, e.g,  a-postgres-dbAtmp-procÆAdditional arguments to the docker command that launches the tmp proc.Btmp-proc.Htmp-procThe connection type.Itmp-proc%Get a connection to the Proc via its V.Jtmp-procClose a connection to a >.Ktmp-proc:Allow customization of the docker command that launches a >/The docker launch command is `docker run -d  optional-args! --name $(name a) $(imageText a)`A Proc( datatype should declare an instance of ToRunCmd to control  optional-argsThis module provides an  Overlappable< fallback instance with default behaviour that matches all >*, so this typeclass is only needed when a >/ datatypes actually needs additional argumentsMtmp-proc Prepare resources for use by a >ùPreparation occurs before the docker container is a launched; once the resources are set up, they are located using the prepared datatype.'Usually, this means it will be used by L) to provide additional arguments to the  docker run commandThis module provides an  Overlappable% fallback instance that matches all >*, so this typeclass is only needed when a >/ datatype actually requires preparatory setup.The first argument to N is a [P] that gives access to other  tmp-procs0 previously launched in the same test, to allow N' to setup links to them when necessaryNtmp-proc Generate a prepared' before the docker container is startedOtmp-proc'Clean up any resources associated with preparedPtmp-proc*Provides an untyped view of the data in a VVtmp-procProvides access to a > that has been started.Wtmp-procA pattern, constructor the provides selectors for the  ProcHandle fieldsËThe selectors are readonly, i.e they only match in a pattern context since  ProcHandleÃs cannot be constructed directly; they are constructed by invoking ` or h\tmp-proc-Determine if the docker daemon is accessible.]tmp-proc Set up some >s4, run an action that uses them, then terminate them.^tmp-proc Obtain the P._tmp-proc Obtain the P of several >s`tmp-procStart up processes for each > typeØthe processes' are able to communicate via a docker network with a unique generated nameatmp-procLike `<, but reveals the generated network name via the deprecated -btmp-procStart up processes for each > type.ctmp-proc&Terminate all processes owned by some Vs.dtmp-procLike c?, but also removes the docker network connecting the processes.¢tmp-proc!Terminate the process owned by a Vs.etmp-procName of a process.ftmp-procSimplifies use of A.£tmp-procSimplifies use of E.¤tmp-procSimplifies use of F.gtmp-procSimplifies use of B.¥tmp-procThe full args of a  docker run command for starting up a >.htmp-proc Starts a >.It uses D to determine if the >Å started up ok, and will fail by throwing an exception if it did not. Returns the V used to access and control the > once a ping has succeeded.itmp-proc6Use an action that might throw an exception as a ping.¦tmp-procPing a V several times.jtmp-procRun an action on a G handle as a callback on its Hktmp-procSelect the named Vs from an  of V.ltmp-proc Builds on 3 ; gives the H of the V to a callback.§tmp-proc Create a  of s from a  of Vs.¨tmp-proc Convert a V to a .mtmp-proc Open all the G types to corresponding H types.ntmp-proc Close some G types.otmp-proc9Open some connections, use them in an action; close them.ptmp-proc>Open all known connections; use them in an action; close them.qtmp-proc>Open the named connections; use them in an action; close them.rtmp-procgenerate a random network nameWtmp-procthe > that led to this  ProcHandletmp-proc@?CABDEFGHIJKLMNOPQRSTUVWZY[X\]^_`abcdefghijklmnopqrá>@?CABDEFhegf:;<=i,KLMNO7`c]bdaVWZY[XW3PQRSTU^/65.210k_4-GHIJjmnolpq+\r98 (c) 2020-2021 Tim EmiolaBSD30Tim Emiola  Safe-Inferred'Âã9s©tmp-proc&Simplifies creation of a ready action.…tmp-proc.Represents a started Warp application and any , dependencies.†tmp-procRuns an ª with  ProcHandle dependencies on a free port.‡tmp-procLike †; with an additional ready* that determines if the server is ready.'.ˆtmp-procLike †; the port is secured with «.‰tmp-procLike ‡; the port is secured with «.¬tmp-procUsed to implement ‡Štmp-procShuts down the … server and its tmp proc dependencies.‹tmp-procThe …s  ProcHandles.Œtmp-procThe ­ on which the …s server is running.tmp-proc Set up some  ProcHandles then run an ª" that uses them on a free port.-Allows the app to configure itself using the  tmp procs6, then provides a callback with access to the handles.The  tmp procs1 are shut down when the application is shut down.Žtmp-procLike 6, but the port is secured using a 'Warp.TLSSettings. 'tmp-proc Set up some  ProcHandles then run an ª" that uses them on a free port.-Allows the app to configure itself using the  tmp procs6, then provides a callback with access to the handles. Also runs a ready? action that to determine if the application started correctly.The  tmp procs1 are shut down when the application is shut down.tmp-procLike ; the port is secured with «.‘tmp-proc-Simplifies writing the health checks used by ready variants of this module.®tmp-procA ¯ configured with a ready action.9The ready action is used to check if a server is healthy.°tmp-procA ¯ configured with a ready action.9The ready action is used to check if a server is healthy.±tmp-proc&Simplifies creation of a ready action.²tmp-proc*Gap between service pings in milliseconds.³tmp-procLike ´. , but the port is secured using the provided «.µtmp-procÒLike "Network.Wai.Handler.Warp.openFreePort" but closes the socket before exiting.¶tmp-procImproves readability... …†‡ˆ‰Š‹ŒŽ‘ Ž…Œ‹Š†‡ˆ‰‘(c) 2020-2021 Tim EmiolaBSD30Tim Emiola  Safe-Inferred:ð +,-./0123456789:=;<>FEDBAC@??@GJHIHKLMNOPUTSQRVX[YWZ\]^_`abcdefghijklmnopqr…†‡ˆ‰Š‹ŒŽ‘·      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVWXYZ[[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸µ¹º»¼½¾µ¿ÀÁÂÃtmp-proc-0.7.2.1-inplaceSystem.TmpProc.DockerSystem.TmpProc.TypeLevelSystem.TmpProc.WarpSystem.TmpProc.TypeLevel.SortSystem.TmpProc SortSymbolsHalfOfLengthOfDropTake IsInProofReorderHhReorder ManyMemberKV manyProofMemberKV lookupProofLookupKVAtHead OtherKeysIsAbsentKVVHListHNilHConshHeadhOf&:both&:&onlyselect selectMany $fEqHList $fEqHList0 $fShowHList $fShowHList0 $fMemberKVkt:$fMemberKVkt:0$fMemberKVkt:1$fManyMemberKVksts:$fManyMemberKV:::$fManyMemberKV:::0$fReorderHxs[] $fIsInProoft:$fIsInProoft:0 $fReorderHxs: ConnectablesAreProcsNetworkHandlesOf HandlesOf Proc2HandleixUriOfixPingixResethandleOfSomeNamedHandlesHasNamedHandle HasHandleProcPlusSvcURI HostIpAddressPingedOKNotOK PingFailedProcImageNamerunArgsuriOfresetping pingCountpingGap ConnectableConnopenConn closeConnToRunCmdtoRunCmdPreparerpreparetidy SlimHandleshName shIpAddressshPidshUri ProcHandlehProchPidhUrihAddr hasDocker withTmpProcsslimmapSlim startupAllnetwStartupAll startupAll' terminateAllnetwTerminateAllnameOfrunArgs'uriOf'startuptoPinged withTmpConn manyNamed withConnOfopenAllcloseAll withConnswithKnownConnswithNamedConnsgenNetworkName $fToRunCmdaa' $fPrepareraa' $fAreProcs: $fAreProcs[]$fIxUriOfSymbolnameprocs$fIxPingSymbolnameprocs$fIxResetSymbolnameprocs$fHandleOfSymbolnameprocsp$fIxUriOfTYPEpprocs$fIxPingTYPEpprocs$fIxResetTYPEpprocs$fHandleOfTYPEpprocsp$fConnectables:$fConnectables[]$fEqSlimHandle$fShowSlimHandle $fEqPinged $fShowPinged ServerHandle runServerrunReadyServer runTLSServerrunReadyTLSServershutdownhandles serverPorttestWithApplicationtestWithTLSApplicationtestWithReadyApplicationtestWithReadyTLSApplication checkHealth MergeSymbolsSortSymbolsStep HalfOfImplIsIn LookupMany SortHandlesUniquelyConnsOf SomeProcs SomeHandles Handle2KV Proc2NameIxUriOfIxPingIxResetHandleOf terminate pingCount'pingGap' dockerCmdArgsnPingstoKVstoKV PortWaiter wai-3.2.4-H5KWwItqYu46W8YT04DR2f Network.Wai Application%warp-tls-3.4.5-4raGMTK0u2775o2ioJ0TZE$Network.Wai.Handler.WarpTLS.Internal TLSSettingsrunReadyServer'"warp-3.3.31-F4FiSPa5D7mGPyWR9C7qZrNetwork.Wai.Handler.Warp.TypesPort readySettings!Network.Wai.Handler.Warp.SettingsSettingswaiterSettingsmkWaiter pingPeriodwithTLSApplicationSettings(Network.Wai.Handler.Warp.WithApplicationtestWithApplicationSettings withFreePort doNothing