Caml1999I037  ,Stdlib__Char!t3;@@@A$charB@@@@@@@(char.mli\\@@A@@@A@$code4@@@@@@#intA@@@@@ѐ)%identityAA @@@__ @@/A@@#chr5@@@@@@4@@@@@@2c3c@@DB@@'escaped6@E@@@@@&stringQ@@@@@@Ih::Jh:V@@[C@@'compare7@d@@@@@@@@@@@O@@@@@@@@esfs@@wD@@%equal8@@@@@@@#@@@@@$boolE@@@@@@@@y  y  &@@E@@Ӡ%Ascii9@#min?@@@@R ; =R ; K@@F@@#max@@@@@U i kU i y@@G@@(is_validA@@@@@@7@@@@@@Z  Z  @@H@@(is_upperB@@@@@@L@@@@@@^[]^[x@@I@@(is_lowerC@@@@@@a@@@@@@bb,@@J@@)is_letterD@@@@@@v@@@@@@ff@@K@@+is_alphanumE@ @@@@@@@@@@@ i!# i!A@@L@@(is_whiteF@@@@@@@@@@@@ l!l@@2M@@(is_blankG@3@@@@@@@@@@@5s6s@@GN@@*is_graphicH@H@@@@@@@@@@@JwdfKwd@@\O@@(is_printI@]@@@@@@@@@@@_{`{+@@qP@@*is_controlJ@r@@@@@@@@@@@t~dfu~d@@Q@@(is_digitK@@@@@@ @@@@@@DFDa@@R@@,digit_to_intL@@@@@@@@@@@@@@S@@,digit_of_intM@@@@@@@@@@@@@@T@@,is_hex_digitN@@@@@@H@@@@@@dfd@@U@@0hex_digit_to_intO@@@@@@@@@@@@}}@@V@@6lower_hex_digit_of_intP@@@@@@@@@@@@LNLv@@W@@6upper_hex_digit_of_intQ@@@@@@ @@@@@@@@X@@)uppercaseR@@@@@@@@@@@@@@.Y@@)lowercaseS@/@@@@@3@@@@@@12@@CZ@@@@5N  6eh@G[@@@/lowercase_ascii:@H@@@@@L@@@@@@JjjKj@@\\@@/uppercase_ascii;@]@@@@@a@@@@@@_`@@q]@@+seeded_hash<@Z@@@@@@@@@@@e@@@@@@@@{ZZ|Z{@@^@@$hash=@2@@@@@y@@@@@@YYYl@@_@@*unsafe_chr>@@@@@@@@@@@)%identityAA@@@@@`@@@j:.,Stdlib__Char0Oe+v}9]&Stdlib0t0VoS%{<F:8CamlinternalFormatBasics0|.e1R$|o@@@Caml1999T037q ?90C,Stdlib__Char*ocaml.text&_none_@@A G Character operations. Characters are the elements of [string] and [bytes] values. Characters represent bytes, that is an integer in the range \[[0x00];[0xFF]\]. Some of the functions of this module interpret the characters in the range \[[0x00];[0x7F]\] as the characters of the ASCII character set. (char.mliP77Xx@@@@@@3@@@@@@#intA;@@#intA@@@@@;@A@$charB;@@$charA@@@@@A@A@&stringQ;@@&stringA@@@@@G@@@%bytesC;@@%bytesA@@@@@M@@@%floatD;@@%floatA@@@@@S@@@$boolE;@@%falsec@@]@$trued@@c@@@A@@@@@d@A@$unitF;@@"()e@@n@@@A@@@@@o@A@ #exnG;@@@A@@@@@s@@@#effH;@@O@A@A@@@@@@|@@@,continuationI;@@Q@@P@B,continuationA@nY@@@@@@@@@%arrayJ;@@R@A%arrayA@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@)nativeintA@@@@@@@@%int32N;@@%int32A@@@@@@@@%int64O;@@%int64A@@@@@@@@&lazy_tP;@@X@A&lazy_tA@Y@@@@@@@@ 5extension_constructorR;@@5extension_constructorA@@@@@@@@*floatarrayS;@@*floatarrayA@@@@@@@@&iarrayT;@@Y@A&iarrayA@Y@@@@@@@@ *atomic_locU;@@Z@A*atomic_locA@@@@@@ @@@ .Assert_failure`#@@@@@J@@@@@@@@[@@A!=ocaml.warn_on_literal_pattern%@&@0Division_by_zero]#@@@A+ . .@+End_of_file\#$@@@A366@'FailureY#,@'@@A<??@0Invalid_argumentX#5@0@@AE$H#H@-Match_failureV#>@@=@9@;@@a@@AV5Y4Y@)Not_foundZ#O@@@A^=a<a@-Out_of_memoryW#W@@@AfEiDi@.Stack_overflow^#_@@@AnMqLq@.Sys_blocked_io_#g@@@AvUyTy@)Sys_error[#o@j@@A^]@:Undefined_recursive_modulea#x@@w@s@u@@h@@Aon@:Continuation_already_takenb#@@@Awv@&Stdlib@A; {1:characters Characters} ZZ@@@@@@A+!tA\\@@;@@@A@@@|@@@@\\@)ocaml.docɐ & An alias for the type of characters. ]]@@@@@@@A@@@@@Aг$char\@@ 3@+;@@@A3@@@@{@@@@'$@@@A &@@(%퐠$#@##@@@#@#@@32@$code__@б@гɠ$char__@@ @@@3@[U@A@@гޠ#int _ _@@ @@@@@@@@@@ @@)%identityAA @@@__ @g [code c] is the byte corresponding to [c]. If [c] is an ASCII character this corresponds to its encoding in ASCII or UTF-8. +`  ,aX@@@@@@@DA@@@x@@@@@@@:#chrCcDc@б@г!#intNcOc@@ @@@3POOPPPPP@Sh?@A@@г*$char]c^c@@ @@@@@@@@@@ @@@jc @ Return the character with the given integer code. @raise Invalid_argument if the argument is outside the range \[[0x00];[0xFF]\]. wdxf8@@@@@@@B@@@@@@@@@3'escapedh:>h:E@б@гf$charh:Hh:L@@ @@@3@La8@A@@гo&stringh:Ph:V@@ @@@@@@@@@@ @@@h:: @  Return a string representing the given character, with special characters escaped following the lexical conventions of OCaml. All characters outside the ASCII printable range \[[0x20];[0x7E]\] are escaped, as well as backslash, double-quote, and single-quote. iWWm,q@@@@@@@C@@@֐@@@@@@3㐠 N {1:predicates Predicates and comparisons} See also the {!Ascii} module. ossq@@@@@@3@EZ1@A'comparess@б@гK!tss@@ @@@@@б@гZ!tss@@ @@@)@@г栐#intss@@ @@@6@@@@@@@; @@@)@@ @@@,@@@%s@n # The comparison function for characters, with the same specification as {!Stdlib.compare}. Along with the type [t], this function [compare] allows the module [Char] to be passed as argument to the functors {!Set.Make} and {!Map.Make}. The order is compatible with {!Char.code}. 2t3w  @@@@@@@KD@@"@~F@@@@@@_%equalIy  Jy  @б@г!tTy  Uy  @@ @@@3VUUVVVVV@xs8@A@@б@г!tey  fy  @@ @@@@@г'$boolry  "sy  &@@ @@@@@@@@@@# @@@+@@ @@(.@@@y  @͐ / The equal function for chars. @since 4.03 z ' '{ I [@@@@@@@E@@"@@@@@@@G ' {1:ascii_characters ASCII characters} } ] ]} ] @@@@@@3@Yn1@A%Ascii-BN  N  @[@@БՐ; {1:characters Characters} P  P  9@@@@@@3@#@A#minR ; AR ; D@г$charR ; GR ; K@@ @@@@@@R ; =@74 [min] is ['\x00']. S L NS L g@@@@@@@F@@@G@@@@@@6#maxU i oU i r@г蠐$charU i uU i y@@ @@@3@pI6@A@@@%U i k @n4 [max] is ['\x7F']. 2V z |3V z @@@@@@@KG@@@~F@@@@@@!TS; {1:predicates Predicates} PX  QX  @@@@@@3ONNOOOOO@3F1@A(is_valid\Z  ]Z  @б@г4$chargZ  hZ  @@ @@@@@г)$booltZ  uZ  @@ @@@'@@@@@@@, @@@Z   @ʐ x [is_valid c] is [true] if and only if [c] is an ASCII character, that is a byte in the range \[{!min};{!max}\]. [  \!Y@@@@@@@H@@@@@@@@@K(is_upper^[a^[i@б@г}$char^[l^[p@@ @@@3@d_8@A@@гt$bool^[t^[x@@ @@@@@@@@@@ @@@^[] @ [is_upper c] is [true] if and only if [c] is an ASCII uppercase letter ['A'] to ['Z'], that is a byte in the range \[[0x41];[0x5A]\]. _y{` @@@@@@@I@@@%퐠@@@@@@3(is_lowerbb@б@гȠ$charb b$@@ @@@3@La8@A@@г$bool b( b,@@ @@@@@@@@@@ @@@b @` [is_lower c] is [true] if and only if [c] is an ASCII lowercase letter ['a'] to ['z'], that is a byte in the range \[[0x61];[0x7A]\]. $c-/%dz@@@@@@@=J@@@p8@@@@@@3)is_letter;f<f@б@г$charFfGf@@ @@@3HGGHHHHH@La8@A@@г $boolUfVf@@ @@@@@@@@@@ @@@bf @ 6 [is_letter c] is {!is_lower}[ c || ]{!is_upper}[ c]. ogpg@@@@@@@K@@@@@@@@@3+is_alphanumi!'i!2@б@г^$chari!5i!9@@ @@@3@La8@A@@гU$booli!=i!A@@ @@@@@@@@@@ @@@i!# @ 9 [is_alphanum c] is {!is_letter}[ c || ]{!is_digit}[ c]. jBDjB@@@@@@@L@@@ΐ@@@@@@3(is_whitell@б@г$charll@@ @@@3@La8@A@@г$boolll@@ @@@@@@@@@@ @@@l @A  [is_white c] is [true] if and only if [c] is an ASCII white space character, that is one of tab ['\t'] ([0x09]), newline ['\n'] ([0x0A]), vertical tab ([0x0B]), form feed ([0x0C]), carriage return ['\r'] ([0x0D]) or space [' '] ([0x20]), mqo@@@@@@@M@@@Q@@@@@@3(is_blank ss@б@г$char's(s@@ @@@3)(()))))@La8@A@@г렐$bool6s7s@@ @@@@@@@@@@ @@@Cs @ [is_blank c] is [true] if and only if [c] is an ASCII blank character, that is either space [' '] ([0x20]) or tab ['\t'] ([0x09]). PtQub@@@@@@@iN@@@d@@@@@@3*is_graphic!gwdjhwdt@б@г?$charrwdwswd{@@ @@@3tssttttt@La8@A@@г6$boolwdwd@@ @@@@@@@@@@ @@@wdf @א [is_graphic c] is [true] if and only if [c] is an ASCII graphic character, that is a byte in the range \[[0x21];[0x7E]\]. xy @@@@@@@O@@@@@@@@@3(is_print"{{@б@г$char{{#@@ @@@3@La8@A@@г$bool{'{+@@ @@@@@@@@@@ @@@{ @" / [is_print c] is {!is_graphic}[ c || c = ' ']. |,.|,b@@@@@@@P@@@2@@@@@@3*is_control#~dj~dt@б@гՠ$char~dw ~d{@@ @@@3        @La8@A@@г̠$bool~d~d@@ @@@@@@@@@@ @@@$~df @m [is_control c] is [true] if and only if [c] is an ASCII control character, that is a byte in the range \[[0x00];[0x1F]\] or [0x7F]. 12@@@@@@@JQ@@@}E@@@@@@3SR # {1:decimal_digits Decimal digits} OPB@@@@@@3NMMNNNNN@EZ1@A(is_digit$[DJ\DR@б@г3$charfDUgDY@@ @@@@@г($boolsD]tDa@@ @@@'@@@@@@@, @@@DF @ɐ [is_digit c] is [true] if and only if [c] is an ASCII decimal digit ['0'] to ['9'], that is a byte in the range \[[0x30];[0x39]\]. bd@@@@@@@R@@@@@@@@@K,digit_to_int%@б@г|$char @@ @@@3@d_8@A@@г#int@@ @@@@@@@@@@ @@@ @ [digit_to_int c] is the numerical value of a digit that satisfies {!is_digit}. Raises [Invalid_argument] if {!is_digit}[ c] is [false]. @@@@@@@S@@@$쐠@@@@@@3,digit_of_int&@б@г͠#int@@ @@@3@La8@A@@г֠$char  @@ @@@@@@@@@@ @@@ @_ Z [digit_of_int n] is an ASCII decimal digit for the decimal value [abs (n mod 10)]. #$6@@@@@@@ {1:casing Casing transforms}  ~ @@@@@@3 } | | } } } } }@EZ1@A)uppercase+  @б@г b$char  @@ @@@@@г o$char  @@ @@@'@@@@@@@, @@@  @ [uppercase c] is [c] with ASCII characters ['a'] to ['z'] respectively mapped to uppercase characters ['A'] to ['Z']. Other characters are left untouched.   @@@@@@@ Y@@@ А@@@@@@K)lowercase,  @б@г $char  @@ @@@3        @d_8@A@@г $char  @@ @@@@@@@@@@ @@@  @C [lowercase c] is [c] with ASCII characters ['A'] to ['Z'] respectively mapped to lowercase characters ['a'] to ['z']. Other characters are left untouched.   Ld@@@@@@@ Z@@@S @@@@@@3@?,@ @@}T@4 @@y@Y0@@@~U@5 @@i@I @@}@]4@@@qH@@3 = < < = = = = =@^sJ@A- DN   Eeh@@ V r ASCII character set support. These functions give meaning to the integers \[[0x00];[0x7F]\] of the {{:https://en.wikipedia.org/wiki/ASCII#Character_set}ASCII character set}. Since the UTF-8 encoding of Unicode has the same encoding and character semantics (U+0000 to U+001F) for these bytes, the functions can be safely used on elements of UTF-8 encoded [string] and [bytes] values. However the functions only deal with ASCII related matters. For example the notion of Unicode whitespace is much larger than the ASCII whitespace determined by {!Char.Ascii.is_white}. @since 5.4  S   TM  @@@@@@@ VN  @@/lowercase_ascii. `jn aj}@б@г 8$char kj lj@@ @@@3 m l l m m m m m@@@jU@"@@i@I @@@nE@%@@j@7@@~@K$@@@rI@@@@搠WV@VV@@@V@V@S@A>=@@г }$char j j@@ @@@E@@@M@@@@JP @@@ jj @  @ Use the equivalent {!Ascii.lowercase} instead. @since 4.03   @@@@@@@ \@@@  ސ@@@@@@i/uppercase_ascii/  @б@г $char  @@ @@@3        @8@A@@г Ƞ$char  @@ @@@@@@@@@@ @@@  @ Q @ Use the equivalent {!Ascii.uppercase} instead. @since 4.03   *<@@@@@@@ .]@@@ a )@@@@@@3 7 65 {1:hashing Hashing}  3>> 4>X@@@@@@3 2 1 1 2 2 2 2 2@EZ1@A+seeded_hash0 ?Z^ @Zi@б@г #int JZl KZo@@ @@@@@б@г !t YZs ZZt@@ @@@)@@г 9#int fZx gZ{@@ @@@6@@@@@@@; @@@)@@ @@@,@@@ xZZ@ A seeded hash function for characters, with the same output value as {!Hashtbl.seeded_hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.MakeSeeded}. @since 5.1  || FW@@@@@@@ ^@@"@  @@@@@@_$hash1 Y] Ya@б@г !t Yd Ye@@ @@@3        @xs8@A@@г #int Yi Yl@@ @@@@@@@@@@ @@@ YY @ An unseeded hash function for characters, with the same output value as {!Hashtbl.hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.Make}. @since 5.1  mm ->@@@@@@@ _@@@  䐠@@@@@@3  񐠠"/* @@ @G@@@@@@3        @EZ1@A*unsafe_chr2  @б@г ؠ#int  @@ @@@@@г ߠ$char  @@ @@@'@@@@@@@, @@)%identityAA @@@ # $@@ <`@@@@8@  |A@ ? @  @  }@ J @@~@x@@~@^5@@~@K$@@3 > = = > > > > >@RM&@A@ H************************************************************************ GA@@ HA@L@ H  MBMM NBM@ H OCaml  SC TC@ H  YD ZD3@ H Xavier Leroy, projet Cristal, INRIA Rocquencourt  _E44 `E4@ H  eF fF@ H Copyright 1996 Institut National de Recherche en Informatique et  kG lG@ H en Automatique.  qH rHg@ H  wIhh xIh@ H All rights reserved. This file is distributed under the terms of  }J ~J@ H the GNU Lesser General Public License version 2.1, with the  K KN@ H special exception on linking described in the file LICENSE.  LOO LO@ H  M M@ H************************************************************************ N N5@ H* Character operations. Characters are the elements of [string] and [bytes] values. Characters represent bytes, that is an integer in the range \[[0x00];[0xFF]\]. Some of the functions of this module interpret the characters in the range \[[0x00];[0x7F]\] as the characters of the ASCII character set.  <* {1:characters Characters}  '* An alias for the type of characters.  ۠ * [code c] is the byte corresponding to [c]. If [c] is an ASCII character this corresponds to its encoding in ASCII or UTF-8.  y * Return the character with the given integer code. @raise Invalid_argument if the argument is outside the range \[[0x00];[0xFF]\].  0 * Return a string representing the given character, with special characters escaped following the lexical conventions of OCaml. All characters outside the ASCII printable range \[[0x20];[0x7E]\] are escaped, as well as backslash, double-quote, and single-quote.  蠠 O* {1:predicates Predicates and comparisons} See also the {!Ascii} module.  ͠ $* The comparison function for characters, with the same specification as {!Stdlib.compare}. Along with the type [t], this function [compare] allows the module [Char] to be passed as argument to the functors {!Set.Make} and {!Map.Make}. The order is compatible with {!Char.code}.  ~ 0* The equal function for chars. @since 4.03  " (* {1:ascii_characters ASCII characters}   s* ASCII character set support. These functions give meaning to the integers \[[0x00];[0x7F]\] of the {{:https://en.wikipedia.org/wiki/ASCII#Character_set}ASCII character set}. Since the UTF-8 encoding of Unicode has the same encoding and character semantics (U+0000 to U+001F) for these bytes, the functions can be safely used on elements of UTF-8 encoded [string] and [bytes] values. However the functions only deal with ASCII related matters. For example the notion of Unicode whitespace is much larger than the ASCII whitespace determined by {!Char.Ascii.is_white}. @since 5.4 f<* {1:characters Characters} ꠠ5* [min] is ['\x00']. Ġ5* [max] is ['\x7F']. <* {1:predicates Predicates} u y* [is_valid c] is [true] if and only if [c] is an ASCII character, that is a byte in the range \[{!min};{!max}\]. : * [is_upper c] is [true] if and only if [c] is an ASCII uppercase letter ['A'] to ['Z'], that is a byte in the range \[[0x41];[0x5A]\].  * [is_lower c] is [true] if and only if [c] is an ASCII lowercase letter ['a'] to ['z'], that is a byte in the range \[[0x61];[0x7A]\].  7* [is_letter c] is {!is_lower}[ c || ]{!is_upper}[ c]. b :* [is_alphanum c] is {!is_letter}[ c || ]{!is_digit}[ c].   * [is_white c] is [true] if and only if [c] is an ASCII white space character, that is one of tab ['\t'] ([0x09]), newline ['\n'] ([0x0A]), vertical tab ([0x0B]), form feed ([0x0C]), carriage return ['\r'] ([0x0D]) or space [' '] ([0x20]), Ҡ * [is_blank c] is [true] if and only if [c] is an ASCII blank character, that is either space [' '] ([0x20]) or tab ['\t'] ([0x09]).  * [is_graphic c] is [true] if and only if [c] is an ASCII graphic character, that is a byte in the range \[[0x21];[0x7E]\]. B 0* [is_print c] is {!is_graphic}[ c || c = ' '].  * [is_control c] is [true] if and only if [c] is an ASCII control character, that is a byte in the range \[[0x00];[0x1F]\] or [0x7F].  $* {1:decimal_digits Decimal digits}  * [is_digit c] is [true] if and only if [c] is an ASCII decimal digit ['0'] to ['9'], that is a byte in the range \[[0x30];[0x39]\]. \ * [digit_to_int c] is the numerical value of a digit that satisfies {!is_digit}. Raises [Invalid_argument] if {!is_digit}[ c] is [false].  [* [digit_of_int n] is an ASCII decimal digit for the decimal value [abs (n mod 10)]. ̠ $* {1:hex_digits Hexadecimal digits}  * [is_hex_digit c] is [true] if and only if [c] is an ASCII hexadecimal digit ['0'] to ['9'], ['a'] to ['f'] or ['A'] to ['F'], that is a byte in one of the ranges \[[0x30];[0x39]\], \[[0x41];[0x46]\], \[[0x61];[0x66]\]. v * [hex_digit_to_int c] is the numerical value of a digit that satisfies {!is_hex_digit}. Raises [Invalid_argument] if {!is_hex_digit}[ c] is [false]. . v* [lower_hex_digit_of_int n] is a lowercase ASCII hexadecimal digit for the hexadecimal value [abs (n mod 16)]. 栠 w* [upper_hex_digit_of_int n] is an uppercase ASCII hexadecimal digit for the hexadecimal value [abs (n mod 16)]. ?* {1:casing Casing transforms}  * [uppercase c] is [c] with ASCII characters ['a'] to ['z'] respectively mapped to uppercase characters ['A'] to ['Z']. Other characters are left untouched. H * [lowercase c] is [c] with ASCII characters ['A'] to ['Z'] respectively mapped to lowercase characters ['a'] to ['z']. Other characters are left untouched.  A* Use the equivalent {!Ascii.lowercase} instead. @since 4.03 @ A* Use the equivalent {!Ascii.uppercase} instead. @since 4.03 6* {1:hashing Hashing} ݠ * A seeded hash function for characters, with the same output value as {!Hashtbl.seeded_hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.MakeSeeded}. @since 5.1  * An unseeded hash function for characters, with the same output value as {!Hashtbl.hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.Make}. @since 5.1 F#*/*+ = The following is for system use only. Do not call directly.  II I@@?)../ocamlc0-strict-sequence(-absname"-w5+a-4-9-41-42-44-45-48"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal"-o0stdlib__Char.cmi"-c , - Z/home/teraram/ci/builds/workspace/parallel-build/flambda/true/label/ocaml-manycores/stdlib @@0h=]U3 1 0 0 1 1 1 1 1@ /@@8CamlinternalFormatBasics0|.e1R$|o&Stdlib0t0VoS%{<F: W0Oe+v}9]@0Oe+v}9]Aa?{  @  a@W@ϐ @  l@͐Ɛ @3dr@@@ a @@@@@;w . V@@Ր@@ǰ  @@  @U@  3@ \@@אP@R E  @@@(Ȑ@@o@@P@@