xpX      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None2BOTGA  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 .FAn 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.'An internal type that is isomorphic to F. This is a maximaly efficient representation for NOINLINE functions.Used 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 .Used 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 .8A response from the builder thread to the driver thread. 1A synchronous exception was thrown by the builder !The builder thread has completed. uThe builder thread has finished generating one chunk, and waits for another request with the specified minimum size. The builder thread has partially filled the current chunk, and wants to emit the bytestring to be included in the final output. 7A request from the driver thread to the builder thread.A mutable buffer. The  specifies where the data start.Variable-destination cases.!Bytes are sent to another thread.zBytes are accumulated in a contiguous buffer until the size limit is reached. After that, the destination switches to a .0Specifies where bytes generated by a builder go.=The destination of data changes while the builder is running.-Bytes are accumulated in a contiguous buffer.#Bytes are first accumulated in the , then flushed to the .=This datatype exists only to work around the limitation that * cannot work with unboxed argument types.9 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  Convert a  into a . Convert a  into a .Create a builder from a BuildM. &Embed a builder in the BuildM context.!Get the ."Get the current pointer.#Get the end-of-buffer pointer.$Set the current pointer.%Set the end-of-buffer pointer. Perform IO.Embed a  transformer into .Turn a  into a .&Run a builder.'Turn 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.(Like 'V, but allows the user to specify the initial and the subsequent desired buffer sizes.+Continue a suspended builder using threads.3Run the given suspended builder using a new thread.The body of the builder thread.Run a .)Turn a  into a strict .* Output a  to a .+Like  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.Turn a  into a , using UTF-8,,Turn a value of type a into a , using the given .Turn a  into a .( as a state transformer. Used for RULES.-Turn a value of type a into a , using the given ..Turn a list of values of type a into a , using the given ./Turn a list of values of type a into a , using the given .0Turn a  to a .1Turn a  to a . If the size of the L is larger than the given threshold, avoid copying it as much as possible.2Turn a  to a . The 7 will be copied to the buffer, regardless of the size.3Like 26, but assumes that the current buffer is large enough.4Turn a  to a . When possible, the given D will not be copied, and inserted directly into the output instead.The body of the 4, worker-wrappered manually.5Turn a C String into a *. The behavior is undefined if the given 5 does not point to a constant null-terminated string.6Turn a  into a *. The behavior is undefined if the given + does not point to a constant memory block.77 n ensures that at least ne bytes of free space is available in the current buffer, by allocating a new buffer when necessary.88 n- allocates a new buffer, containing at least n bytes.The body of the 8% function, worker-wrappered manually.:Return the remaining size of the current buffer, in bytes.99 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 ... 1Tell GHC that the builder will be only used once./Wait for a request, and switch to a new buffer.growBuffer bufRef req1 reallocates the buffer, growing it by at least req.Put the content of the  to the , and empty the .switchQueue qRef minSize discards the old  and sets up a new empty  of at least minSize large. If the old ! is large enough, it is re-used.%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 .Throw a  and switches to a .A =  stringUtf8[  !"#$%&'()*+,-./0123456789:;<=>?@AB:  !"#$%&'()*+,-./0123456789:   !"#$%&'()*+,-./0123456789H  !"#$%&'()*+,-./0123456789:;<=>?@ABNone>EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~>EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~>EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None5656NoneK'()*+,-01249EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~K'()*+9,-0421FQGJMRUX[^HKNSVY\_EILOPTWZ]`abcdefghijklmnopqrstuvwxy~z{|}       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~+fast-builder-0.0.1.0-5PAYNoFbDhLFFr3c7qi8j8$Data.ByteString.FastBuilder.InternalData.ByteString.FastBuilder)Data.ByteString.FastBuilder.Internal.Prim"Data.ByteString.FastBuilder.UnsafeBuildM runBuildMBuilder_SuspendBuilderExceptionChunkOverflowExceptionResponseErrorDone MoreBufferInsertByteStringRequestQueue DynamicSink ThreadedSinkBoundedGrowingBufferDataSink GrowingBuffer HandleSink BuilderStateBuilder unBuilder toBuilder_ fromBuilder_ mkBuilder useBuildergetSinkgetCurgetEndsetCursetEnd runBuildertoLazyByteStringtoLazyByteStringWithtoStrictByteString hPutBuilderhPutBuilderWith primBounded primFixedprimMapListBoundedprimMapListFixed byteStringbyteStringThresholdbyteStringCopybyteStringCopyNoCheckbyteStringInsert unsafeCStringunsafeCStringLen ensureBytesgetBytesrebuild $fMonoidWrite $fMonadBuildM$fApplicativeBuildM"$fExceptionSuspendBuilderException$fShowSuspendBuilderException!$fExceptionChunkOverflowException$fShowChunkOverflowException$fIsStringBuilder$fMonoidBuilder$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-prim GHC.TypesIntGHC.IO.Handle.TypesHandle GHC.MagiconeShotbytestring-0.10.8.1Data.ByteString.Lazy.Internal ByteString Data.Monoid<>io updateStatewriteBoundedPrim%Data.ByteString.Builder.Prim.Internal BoundedPrimcontinueBuilderThreadedtoBufferWriterbuilderThreadWithUnmask makeChunksData.ByteString.Builder.Extra BufferWriterData.ByteString.InternalbuilderFromStringGHC.BaseStringwritewrite' FixedPrimbyteStringInsert_Foreign.C.StringCString CStringLen getBytes_remainingBytesoneShotBuilder handleRequest growBuffer flushQueue switchQueuegrowBufferBounded chunkOverflow Data.String fromString c_pure_strlenmaximalCopySize