sig   type input   type 'a output   exception No_more_input   exception Input_closed   exception Output_closed   val read : IO.input -> char   val nread : IO.input -> int -> ExtBytes.Bytes.t   val really_nread : IO.input -> int -> ExtBytes.Bytes.t   val nread_string : IO.input -> int -> string   val really_nread_string : IO.input -> int -> string   val input : IO.input -> ExtBytes.Bytes.t -> int -> int -> int   val really_input : IO.input -> ExtBytes.Bytes.t -> int -> int -> int   val close_in : IO.input -> unit   val write : 'IO.output -> char -> unit   val nwrite : 'IO.output -> ExtBytes.Bytes.t -> unit   val nwrite_string : 'IO.output -> string -> unit   val output : 'IO.output -> ExtBytes.Bytes.t -> int -> int -> int   val really_output : 'IO.output -> ExtBytes.Bytes.t -> int -> int -> int   val flush : 'IO.output -> unit   val close_out : 'IO.output -> 'a   val input_string : string -> IO.input   val input_bytes : ExtBytes.Bytes.t -> IO.input   val output_string : unit -> string IO.output   val output_bytes : unit -> ExtBytes.Bytes.t IO.output   val output_strings : unit -> string list IO.output   val input_channel : Pervasives.in_channel -> IO.input   val output_channel : Pervasives.out_channel -> unit IO.output   val input_enum : char Enum.t -> IO.input   val output_enum : unit -> char Enum.t IO.output   val create_in :     read:(unit -> char) ->     input:(ExtBytes.Bytes.t -> int -> int -> int) ->     close:(unit -> unit) -> IO.input   val create_out :     write:(char -> unit) ->     output:(ExtBytes.Bytes.t -> int -> int -> int) ->     flush:(unit -> unit) -> close:(unit -> 'a) -> 'IO.output   val scanf : IO.input -> ('a, 'b, 'c, 'd) Scanf.scanner   val printf :     'IO.output -> ('b, unit, string, unit) Pervasives.format4 -> 'b   val read_all : IO.input -> string   val pipe : unit -> IO.input * unit IO.output   val pos_in : IO.input -> IO.input * (unit -> int)   val pos_out : 'IO.output -> 'IO.output * (unit -> int)   external cast_output : 'IO.output -> unit IO.output = "%identity"   exception Overflow of string   val read_byte : IO.input -> int   val read_signed_byte : IO.input -> int   val read_ui16 : IO.input -> int   val read_i16 : IO.input -> int   val read_i32 : IO.input -> int   val read_real_i32 : IO.input -> int32   val read_i64 : IO.input -> int64   val read_float32 : IO.input -> float   val read_double : IO.input -> float   val read_string : IO.input -> string   val read_bytes : IO.input -> ExtBytes.Bytes.t   val read_line : IO.input -> string   val write_byte : 'IO.output -> int -> unit   val write_ui16 : 'IO.output -> int -> unit   val write_i16 : 'IO.output -> int -> unit   val write_i32 : 'IO.output -> int -> unit   val write_real_i32 : 'IO.output -> int32 -> unit   val write_i64 : 'IO.output -> int64 -> unit   val write_float32 : 'IO.output -> float -> unit   val write_double : 'IO.output -> float -> unit   val write_string : 'IO.output -> string -> unit   val write_bytes : 'IO.output -> ExtBytes.Bytes.t -> unit   val write_line : 'IO.output -> string -> unit   module BigEndian :     sig       val read_ui16 : IO.input -> int       val read_i16 : IO.input -> int       val read_i32 : IO.input -> int       val read_real_i32 : IO.input -> int32       val read_i64 : IO.input -> int64       val read_float32 : IO.input -> float       val read_double : IO.input -> float       val write_ui16 : 'IO.output -> int -> unit       val write_i16 : 'IO.output -> int -> unit       val write_i32 : 'IO.output -> int -> unit       val write_real_i32 : 'IO.output -> int32 -> unit       val write_i64 : 'IO.output -> int64 -> unit       val write_float32 : 'IO.output -> float -> unit       val write_double : 'IO.output -> float -> unit     end   type in_bits   type out_bits   exception Bits_error   val input_bits : IO.input -> IO.in_bits   val output_bits : 'IO.output -> IO.out_bits   val read_bits : IO.in_bits -> int -> int   val write_bits : IO.out_bits -> nbits:int -> int -> unit   val flush_bits : IO.out_bits -> unit   val drop_bits : IO.in_bits -> unit   class in_channel :     IO.input ->     object       method close_in : unit -> unit       method input : ExtBytes.Bytes.t -> int -> int -> int     end   class out_channel :     'IO.output ->     object       method close_out : unit -> unit       method flush : unit -> unit       method output : ExtBytes.Bytes.t -> int -> int -> int     end   class in_chars :     IO.input ->     object method close_in : unit -> unit method get : unit -> char end   class out_chars :     'IO.output ->     object       method close_out : unit -> unit       method flush : unit -> unit       method put : char -> unit     end   val from_in_channel : #IO.in_channel -> IO.input   val from_out_channel : #IO.out_channel -> unit IO.output   val from_in_chars : #IO.in_chars -> IO.input   val from_out_chars : #IO.out_chars -> unit IO.output end