!~u      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None4FSXoE fast-builderA  is like a , but an upper bound of its size is known before it actually starts filling buffers. It means just one overflow check is sufficient for each . fast-builderFAn internal type for making it easier to define builders. A value of  a can do everything a 3 can do, and in addition, returns a value of type a upon completion. fast-builderUsed in the implementation of &. This is a message sent from the consumer thread to the builder thread, requesting the builder thread to temporarily pause execution. Later, the consumer thread may request resumption by filling the . fast-builderUsed in the implementation of &. This is an exception thrown by the consumer thread to itself when it has finished filling the first chunk of the output. After this, a thread will be forked, and the execution of the builder will be resumed in the new thread, using . fast-builder8A response from the builder thread to the driver thread. fast-builder1A synchronous exception was thrown by the builder  fast-builder!The builder thread has completed.  fast-builderuThe builder thread has finished generating one chunk, and waits for another request with the specified minimum size.  fast-builderThe builder thread has partially filled the current chunk, and wants to emit the bytestring to be included in the final output.  fast-builder7A request from the driver thread to the builder thread. fast-builderA mutable buffer. fast-builderStarting position. fast-builder#Bytes written to the handle so far. fast-builderVariable-destination cases. fast-builder!Bytes are sent to another thread. fast-builderzBytes are accumulated in a contiguous buffer until the size limit is reached. After that, the destination switches to a . fast-builder0Specifies where bytes generated by a builder go. fast-builder=The destination of data changes while the builder is running. fast-builder-Bytes are accumulated in a contiguous buffer. fast-builder#Bytes are first accumulated in the , then flushed to the . fast-builder+The state of a builder. The components are:The "cur" pointerThe "end" pointerThe state token fast-builder9 is an auxiliary type for efficiently generating a long . It is isomorphic to lazy ., but offers constant-time concatanation via .Use & to turn a  into a  fast-builderCreate a builder from a BuildM. fast-builder&Embed a builder in the BuildM context.  fast-builderGet the .! fast-builderGet the current pointer." fast-builderGet the end-of-buffer pointer.# fast-builderSet the current pointer.$ fast-builderSet the end-of-buffer pointer. fast-builder Perform IO. fast-builderEmbed a  transformer into . fast-builderTurn a  into a .% fast-builderRun a builder.& fast-builderTurn a  into a lazy .Performance hint: when the resulting  does not fit in one chunk, this function forks a thread. Due to this, the performance degrades sharply if you use this function from a bound thread. Note in particular that the main thread is a bound thread when you use ghc -threaded.'To avoid this problem, do one of these:Make sure the resulting 6 is consumed in an unbound thread. Consider using runInUnboundThread for this.Use other function to run the 1 instead. Functions that don't return a lazy  do not have this issue.Link your program without  -threaded.' fast-builderLike &V, but allows the user to specify the initial and the subsequent desired buffer sizes. fast-builder+Continue a suspended builder using threads. fast-builder3Run the given suspended builder using a new thread. fast-builderThe body of the builder thread. fast-builderRun a .( fast-builderTurn a  into a strict .) fast-builder Output a  to a .* fast-builder Output a  to a &. Returns the number of bytes written.+ fast-builderLike  hPutBuffer, but allows the user to specify the initial and the subsequent desired buffer sizes. This function may be useful for setting large buffer when high throughput I/O is needed. fast-builderTurn a  into a , using UTF-8,, fast-builderTurn a value of type a into a , using the given . fast-builderTurn a  into a .- fast-builderTurn a value of type a into a , using the given .. fast-builderTurn a list of values of type a into a , using the given ./ fast-builderTurn a list of values of type a into a , using the given .0 fast-builderTurn a  to a .1 fast-builderTurn a  to a . If the size of the L is larger than the given threshold, avoid copying it as much as possible.2 fast-builderTurn a  to a . The 7 will be copied to the buffer, regardless of the size.3 fast-builderLike 26, but assumes that the current buffer is large enough.4 fast-builderTurn a  to a . When possible, the given D will not be copied, and inserted directly into the output instead. fast-builderThe body of the 4, worker-wrappered manually.5 fast-builderTurn a C String into a *. The behavior is undefined if the given 5 does not point to a constant null-terminated string.6 fast-builderTurn a  into a *. The behavior is undefined if the given + does not point to a constant memory block.7 fast-builder7 n ensures that at least ne bytes of free space is available in the current buffer, by allocating a new buffer when necessary.8 fast-builder8 n- allocates a new buffer, containing at least n bytes. fast-builderThe body of the 8% function, worker-wrappered manually. fast-builder:Return the remaining size of the current buffer, in bytes.9 fast-builder9 b is equivalent to b$, but it allows GHC to assume that bd will be run at most once. This can enable various optimizations that greately improve performance.9There are two types of typical situations where a use of 9 is often a win:?When constructing a builder using a recursive function. e.g. rebuild $ foldr ....CWhen constructing a builder using a conditional expression. e.g. rebuild $ case x of ...  fast-builder/Wait for a request, and switch to a new buffer. fast-buildergrowBuffer bufRef req1 reallocates the buffer, growing it by at least req. fast-builderPut the content of the  to the , and empty the . fast-builderswitchQueue qRef minSize adv discards the old  and sets up a new empty  of at least minSize large. If the old ! is large enough, it is re-used. fast-builder%growBufferBounded dRef fptr bound req1 reallocates the buffer, growing it by at least req". If the buffer size would exceed bound1, it instead interrupts execution by throwing a , and switches to a . fast-builderThrow a  and switches to a .: fast-builder =  stringUtf8:   !"#$%&'()*+,-./0123456789:    !"#$%&'()*+,-./0123456789Noneq>GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Nones L&'()*+,-01249GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~L&'()*+9,-0421HSILOTWZ]`JMPUX[^aGKNQRVY\_bcdefghijklmnopqrstuvwxyz{|}~Noneu5656      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~+fast-builder-0.1.2.0-7hNnHZKIaoq9N4LayfgzF1$Data.ByteString.FastBuilder.InternalData.ByteString.FastBuilder)Data.ByteString.FastBuilder.Internal.Prim"Data.ByteString.FastBuilder.UnsafeBuildM runBuildMSuspendBuilderExceptionChunkOverflowExceptionResponseErrorDone MoreBufferInsertByteStringRequestQueue queueBuffer queueStart queueTotal DynamicSink ThreadedSinkBoundedGrowingBufferDataSink GrowingBuffer HandleSink BuilderStateBuilder unBuilder mkBuilder useBuildergetSinkgetCurgetEndsetCursetEnd runBuildertoLazyByteStringtoLazyByteStringWithtoStrictByteString hPutBuilderhPutBuilderLenhPutBuilderWith primBounded primFixedprimMapListBoundedprimMapListFixed byteStringbyteStringThresholdbyteStringCopybyteStringCopyNoCheckbyteStringInsert unsafeCStringunsafeCStringLen ensureBytesgetBytesrebuild$fIsStringBuilder$fMonoidBuilder$fSemigroupBuilder!$fExceptionChunkOverflowException$fShowChunkOverflowException"$fExceptionSuspendBuilderException$fShowSuspendBuilderException $fMonadBuildM$fApplicativeBuildM $fMonoidWrite$fSemigroupWrite$fShowResponse$fFunctorBuildMintHostint8int16LEint16BE int16Hostint32LEint32BE int32Hostint64LEint64BE int64HostwordHostword8word16LEword16BE word16Hostword32LEword32BE word32Hostword64LEword64BE word64HostfloatLEfloatBE floatHostdoubleLEdoubleBE doubleHostintDecint8Decint16Decint32Decint64DecwordDecword8Dec word16Dec word32Dec word64DecwordHexword8Hex word16Hex word32Hex word64Hex int8HexFixed int16HexFixed int32HexFixed int64HexFixed word8HexFixedword16HexFixedword32HexFixedword64HexFixed floatHexFixeddoubleHexFixedchar7string7char8string8charUtf8 stringUtf8 integerDecfloatDec doubleDecWritebaseGHC.MVarMVarGHC.IO.Handle.TypesHandlebytestring-0.10.8.2Data.ByteString.Lazy.Internal ByteStringGHC.Base<>io updateStatewriteBoundedPrim%Data.ByteString.Builder.Prim.Internal BoundedPrimcontinueBuilderThreadedtoBufferWriterbuilderThreadWithUnmask makeChunksData.ByteString.Builder.Extra BufferWriterData.ByteString.InternalbuilderFromStringStringwrite FixedPrimbyteStringInsert_Foreign.C.StringCString CStringLen getBytes_remainingBytes handleRequest growBuffer flushQueue switchQueuegrowBufferBounded chunkOverflow Data.String fromString