úÎSBN¨3      !"#$%&'()*+,-./012None33Distance between two labels. 4A reference to a label. 56The location of a label with number of padding bytes. 6.Some data emitted to the region and its size. ;The byte ordering to be used when serializing a reference.  Big endian Little endian !Host byte order (and endianness) /The size of a reference (1, 2, 4, or 8 bytes). 2 byte but don't fail if out of range 1 byte but don't fail if out of range &A logical section of the data stream. A location in the data stream. 1Monad for constructing the serialised structure.  Translate  into matching number of bytes. Create a new region. Emit a single byte. Emit a list of bytes. Emit a 7 in little endian format. Emit a 7 in big endian format. Emit a 7+ in native host order and host endianness. Emit a 8 in little endian format. Emit a 8 in big endian format. Emit a 8+ in native host order and host endianness. Emit a 9 in little endian format. Emit a 9 in big endian format. Emit a 9+ in native host order and host endianness. Emit a single byte. Emit a list of bytes. Emit a : in little endian format. Emit a : in big endian format. Emit a :+ in native host order and host endianness. Emit a ; in little endian format. !Emit a ; in big endian format. "Emit a ;+ in native host order and host endianness. #Emit a < in little endian format. $Emit a < in big endian format. %Emit a <+ in native host order and host endianness. &Emit a strict =. ' Emit a lazy >. (Emit an instance of ?). Does not take into account alignment. )Emit a list of ? instances. Ignores alignment. *:Emit a label at the current location in the given region. +6Create a new label (with no location attached to it). DIt is up to the user to ensure that if this label is ever used in a  /+, then the label must have been placed via ,. 9This is intended for forward references within a region:  example r = do  l <- makeLabel  reference S4 Host r l  ... more stuff ...  placeLabel r l  ... other stuff ... ,&Place a label previously created with +. ?This function must only be called once per label. If the same E label is placed multiple times, it is undefined where references to  it point to. -;Insert padding bytes into given region until its size is a % multiple of the expected alignment. .=Emit an aligned label at the current location in the region.  The label'4s address relative to the region start will be at a ! multiple of the given alignment /;Emit a reference to the given label in the current region. AThe reference will be encoded as a signed integer that specifies C the relative distance (in bytes) from the current location to the  target label. @The current location starts before the reference. A serialised  reference with value 0 therefore refers to itself. CIt is up to the user to ensure that references are large enough to 6 encode the required range. If they are not in range  2 will fail. 0;Emit a reference to the given label in the current region. ;The calculated offset will be passed to the function being > supplied. This can be use for example to change the unit of & reference from bytes to, say, words. Say, you'3re generating bytecode where each instruction is a E multiple of 4 bytes. Then a reference is known to be a multiple of B 4. If our bytecode only uses 16 bit references then it would be C wasteful to store the lowest 2 bits which we know to be zero. We . can implement this transformation by passing (`shiftR` 2) as  the transformation function. 1&Emit the distance between two labels. IIf the start label occurs before the end label, then the written integer ' will be positive, negative otherwise.  For example:  test3 = (2 id $ do  r <-   l1 <- * r   r 42  l2 < - label r  1 S4 LE id r l1 l2) == @ [42,0,0,0,4,0,0,0] 2 Serialise the graph into a lazy >. OA3456BCDEFG HI J KLMNOPQ !"#$%&'()*+,-Intended alignment Fill with these bytes. ./$The size of the reference in bytes. ,Byte order used for encoding the reference. *The region in which the reference will be  emitted. The target label. 0$The size of the reference in bytes. ,Byte order used for encoding the reference.  Offset transformation function. *The region in which the reference will be  emitted. The target label. 1$The size of the reference in bytes. ,Byte order used for encoding the reference.  Offset transformation function. *The region in which the reference will be  emitted.  Start label  End label 25Determines the ordering of the regions. If you pass R ' regions will occur in creation order. STUVWXY3  !"#$%&'()*+,-./0123 2  *+,/0 1 !"#$%&'()-.:A6543BCDEFG  HI J KLMNOPQ !"#$%&'()*+,-./012STUVWXYZ      !"#$%&'()*+,-./0123456789:;9:<9:=9>?9>@9>ABCDBED9FGBHIJKKLMNO PQRSTUV9WXYZ[\]^_`graph-serialize-0.1.5.2Data.Serialize.References ByteOrderBELEHostSizeS2NoRCS1NoRCS8S4S2S1RegionLabelBuildM sizeToBytes newRegion emitWord8 emitWord8s emitWord16le emitWord16beemitWord16host emitWord32le emitWord32beemitWord32host emitWord64le emitWord64beemitWord64hostemitInt8 emitInt8s emitInt16le emitInt16be emitInt16host emitInt32le emitInt32be emitInt32host emitInt64le emitInt64be emitInt64hostemitByteStringemitLazyByteString emitStorableemitStorableListlabel makeLabel placeLabelpadTo alignedLabel reference reference'offset'toLazyByteString LabelOffsLabelRef LabelItemDataItembaseGHC.WordWord16Word32Word64GHC.IntInt16Int32Int64bytestring-0.10.0.2Data.ByteString.Internal ByteStringData.ByteString.Lazy.InternalForeign.StorableStorableData.ByteString.Lazypack RegionItem RegionContentrcItemsrcSize NextLabel NextRegion regionToIntunBuildMemptyRegionContentgenLabel withRegion getRegionemit_GHC.BaseiddanglingwriteRef $fShowLabel $fShowRegion$fApplicativeBuildM$fFunctorBuildM $fMonadBuildM