Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2018
12,387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 436.03 KB | None | 0 0
  1. # 1 "driver.cpp"
  2. # 1 "<built-in>"
  3. # 1 "<command-line>"
  4. # 1 "/usr/include/stdc-predef.h" 1 3 4
  5. # 1 "<command-line>" 2
  6. # 1 "driver.cpp"
  7. # 1 "/usr/include/c++/5/iostream" 1 3
  8. # 36 "/usr/include/c++/5/iostream" 3
  9.        
  10. # 37 "/usr/include/c++/5/iostream" 3
  11.  
  12. # 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 1 3
  13. # 194 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 3
  14.  
  15. # 194 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 3
  16. namespace std
  17. {
  18.   typedef long unsigned int size_t;
  19.   typedef long int ptrdiff_t;
  20.  
  21.  
  22.  
  23.  
  24. }
  25. # 216 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 3
  26. namespace std
  27. {
  28.   inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
  29. }
  30. namespace __gnu_cxx
  31. {
  32.   inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
  33. }
  34. # 482 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 3
  35. # 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h" 1 3
  36. # 39 "/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h" 3
  37. # 1 "/usr/include/features.h" 1 3 4
  38. # 367 "/usr/include/features.h" 3 4
  39. # 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4
  40. # 410 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
  41. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  42. # 411 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4
  43. # 368 "/usr/include/features.h" 2 3 4
  44. # 391 "/usr/include/features.h" 3 4
  45. # 1 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 1 3 4
  46. # 10 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4
  47. # 1 "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h" 1 3 4
  48. # 11 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 2 3 4
  49. # 392 "/usr/include/features.h" 2 3 4
  50. # 40 "/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h" 2 3
  51. # 483 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 2 3
  52.  
  53.  
  54. # 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h" 1 3
  55. # 486 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h" 2 3
  56. # 39 "/usr/include/c++/5/iostream" 2 3
  57. # 1 "/usr/include/c++/5/ostream" 1 3
  58. # 36 "/usr/include/c++/5/ostream" 3
  59.        
  60. # 37 "/usr/include/c++/5/ostream" 3
  61.  
  62. # 1 "/usr/include/c++/5/ios" 1 3
  63. # 36 "/usr/include/c++/5/ios" 3
  64.        
  65. # 37 "/usr/include/c++/5/ios" 3
  66.  
  67. # 1 "/usr/include/c++/5/iosfwd" 1 3
  68. # 36 "/usr/include/c++/5/iosfwd" 3
  69.        
  70. # 37 "/usr/include/c++/5/iosfwd" 3
  71.  
  72.  
  73. # 1 "/usr/include/c++/5/bits/stringfwd.h" 1 3
  74. # 37 "/usr/include/c++/5/bits/stringfwd.h" 3
  75.        
  76. # 38 "/usr/include/c++/5/bits/stringfwd.h" 3
  77.  
  78.  
  79. # 1 "/usr/include/c++/5/bits/memoryfwd.h" 1 3
  80. # 46 "/usr/include/c++/5/bits/memoryfwd.h" 3
  81.        
  82. # 47 "/usr/include/c++/5/bits/memoryfwd.h" 3
  83.  
  84.  
  85.  
  86. namespace std __attribute__ ((__visibility__ ("default")))
  87. {
  88.  
  89. # 63 "/usr/include/c++/5/bits/memoryfwd.h" 3
  90.   template<typename>
  91.     class allocator;
  92.  
  93.   template<>
  94.     class allocator<void>;
  95.  
  96.  
  97.   template<typename, typename>
  98.     struct uses_allocator;
  99.  
  100.  
  101.  
  102.  
  103. }
  104. # 41 "/usr/include/c++/5/bits/stringfwd.h" 2 3
  105.  
  106. namespace std __attribute__ ((__visibility__ ("default")))
  107. {
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.   template<class _CharT>
  117.     struct char_traits;
  118.  
  119.   template<> struct char_traits<char>;
  120.  
  121.  
  122.   template<> struct char_traits<wchar_t>;
  123. # 67 "/usr/include/c++/5/bits/stringfwd.h" 3
  124. namespace __cxx11 {
  125.  
  126.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  127.            typename _Alloc = allocator<_CharT> >
  128.     class basic_string;
  129.  
  130.  
  131.   typedef basic_string<char> string;
  132.  
  133.  
  134.  
  135.   typedef basic_string<wchar_t> wstring;
  136. # 90 "/usr/include/c++/5/bits/stringfwd.h" 3
  137. }
  138.  
  139.  
  140.  
  141.  
  142. }
  143. # 40 "/usr/include/c++/5/iosfwd" 2 3
  144. # 1 "/usr/include/c++/5/bits/postypes.h" 1 3
  145. # 38 "/usr/include/c++/5/bits/postypes.h" 3
  146.        
  147. # 39 "/usr/include/c++/5/bits/postypes.h" 3
  148.  
  149. # 1 "/usr/include/c++/5/cwchar" 1 3
  150. # 39 "/usr/include/c++/5/cwchar" 3
  151.        
  152. # 40 "/usr/include/c++/5/cwchar" 3
  153.  
  154.  
  155.  
  156.  
  157. # 1 "/usr/include/wchar.h" 1 3 4
  158. # 36 "/usr/include/wchar.h" 3 4
  159. # 1 "/usr/include/stdio.h" 1 3 4
  160. # 44 "/usr/include/stdio.h" 3 4
  161. struct _IO_FILE;
  162.  
  163.  
  164.  
  165. typedef struct _IO_FILE FILE;
  166.  
  167.  
  168.  
  169.  
  170.  
  171. # 64 "/usr/include/stdio.h" 3 4
  172. typedef struct _IO_FILE __FILE;
  173. # 37 "/usr/include/wchar.h" 2 3 4
  174.  
  175.  
  176. # 1 "/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h" 1 3 4
  177. # 40 "/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h" 3 4
  178. typedef __builtin_va_list __gnuc_va_list;
  179. # 40 "/usr/include/wchar.h" 2 3 4
  180.  
  181. # 1 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 1 3 4
  182. # 42 "/usr/include/wchar.h" 2 3 4
  183. # 51 "/usr/include/wchar.h" 3 4
  184. # 1 "/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h" 1 3 4
  185. # 216 "/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h" 3 4
  186. typedef long unsigned int size_t;
  187. # 357 "/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h" 3 4
  188. typedef unsigned int wint_t;
  189. # 52 "/usr/include/wchar.h" 2 3 4
  190. # 82 "/usr/include/wchar.h" 3 4
  191. typedef struct
  192. {
  193.   int __count;
  194.   union
  195.   {
  196.  
  197.     unsigned int __wch;
  198.  
  199.  
  200.  
  201.     char __wchb[4];
  202.   } __value;
  203. } __mbstate_t;
  204. # 104 "/usr/include/wchar.h" 3 4
  205.  
  206.  
  207. typedef __mbstate_t mbstate_t;
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214. # 132 "/usr/include/wchar.h" 3 4
  215. extern "C" {
  216.  
  217.  
  218.  
  219.  
  220. struct tm;
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230. extern wchar_t *wcscpy (wchar_t *__restrict __dest,
  231.    const wchar_t *__restrict __src)
  232.      throw () __attribute__ ((__nonnull__ (1, 2)));
  233.  
  234.  
  235. extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
  236.     const wchar_t *__restrict __src, size_t __n)
  237.      throw () __attribute__ ((__nonnull__ (1, 2)));
  238.  
  239.  
  240. extern wchar_t *wcscat (wchar_t *__restrict __dest,
  241.    const wchar_t *__restrict __src)
  242.      throw () __attribute__ ((__nonnull__ (1, 2)));
  243.  
  244. extern wchar_t *wcsncat (wchar_t *__restrict __dest,
  245.     const wchar_t *__restrict __src, size_t __n)
  246.      throw () __attribute__ ((__nonnull__ (1, 2)));
  247.  
  248.  
  249. extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2)
  250.      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
  251.  
  252. extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
  253.      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
  254.  
  255.  
  256.  
  257.  
  258. extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) throw ();
  259.  
  260.  
  261. extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2,
  262.    size_t __n) throw ();
  263.  
  264.  
  265.  
  266. # 1 "/usr/include/xlocale.h" 1 3 4
  267. # 27 "/usr/include/xlocale.h" 3 4
  268. typedef struct __locale_struct
  269. {
  270.  
  271.   struct __locale_data *__locales[13];
  272.  
  273.  
  274.   const unsigned short int *__ctype_b;
  275.   const int *__ctype_tolower;
  276.   const int *__ctype_toupper;
  277.  
  278.  
  279.   const char *__names[13];
  280. } *__locale_t;
  281.  
  282.  
  283. typedef __locale_t locale_t;
  284. # 184 "/usr/include/wchar.h" 2 3 4
  285.  
  286. extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2,
  287.     __locale_t __loc) throw ();
  288.  
  289. extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2,
  290.      size_t __n, __locale_t __loc) throw ();
  291.  
  292.  
  293.  
  294.  
  295.  
  296. extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) throw ();
  297.  
  298.  
  299.  
  300. extern size_t wcsxfrm (wchar_t *__restrict __s1,
  301.          const wchar_t *__restrict __s2, size_t __n) throw ();
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310. extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2,
  311.         __locale_t __loc) throw ();
  312.  
  313.  
  314.  
  315.  
  316. extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2,
  317.     size_t __n, __locale_t __loc) throw ();
  318.  
  319.  
  320. extern wchar_t *wcsdup (const wchar_t *__s) throw () __attribute__ ((__malloc__));
  321.  
  322.  
  323.  
  324.  
  325.  
  326. extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc)
  327.      throw () __asm ("wcschr") __attribute__ ((__pure__));
  328. extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc)
  329.      throw () __asm ("wcschr") __attribute__ ((__pure__));
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336. extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc)
  337.      throw () __asm ("wcsrchr") __attribute__ ((__pure__));
  338. extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc)
  339.      throw () __asm ("wcsrchr") __attribute__ ((__pure__));
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349. extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc)
  350.      throw () __attribute__ ((__pure__));
  351.  
  352.  
  353.  
  354.  
  355.  
  356. extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject)
  357.      throw () __attribute__ ((__pure__));
  358.  
  359.  
  360. extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept)
  361.      throw () __attribute__ ((__pure__));
  362.  
  363.  
  364. extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept)
  365.      throw () __asm ("wcspbrk") __attribute__ ((__pure__));
  366. extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs,
  367.          const wchar_t *__accept)
  368.      throw () __asm ("wcspbrk") __attribute__ ((__pure__));
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375. extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle)
  376.      throw () __asm ("wcsstr") __attribute__ ((__pure__));
  377. extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack,
  378.         const wchar_t *__needle)
  379.      throw () __asm ("wcsstr") __attribute__ ((__pure__));
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386. extern wchar_t *wcstok (wchar_t *__restrict __s,
  387.    const wchar_t *__restrict __delim,
  388.    wchar_t **__restrict __ptr) throw ();
  389.  
  390.  
  391. extern size_t wcslen (const wchar_t *__s) throw () __attribute__ ((__pure__));
  392.  
  393.  
  394.  
  395.  
  396.  
  397. extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle)
  398.      throw () __asm ("wcswcs") __attribute__ ((__pure__));
  399. extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack,
  400.         const wchar_t *__needle)
  401.      throw () __asm ("wcswcs") __attribute__ ((__pure__));
  402. # 309 "/usr/include/wchar.h" 3 4
  403. extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen)
  404.      throw () __attribute__ ((__pure__));
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411. extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n)
  412.      throw () __asm ("wmemchr") __attribute__ ((__pure__));
  413. extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c,
  414.          size_t __n)
  415.      throw () __asm ("wmemchr") __attribute__ ((__pure__));
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422. extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
  423.      throw () __attribute__ ((__pure__));
  424.  
  425.  
  426. extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
  427.     const wchar_t *__restrict __s2, size_t __n) throw ();
  428.  
  429.  
  430.  
  431. extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n)
  432.      throw ();
  433.  
  434.  
  435. extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ();
  436.  
  437.  
  438.  
  439.  
  440.  
  441. extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
  442.      const wchar_t *__restrict __s2, size_t __n)
  443.      throw ();
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450. extern wint_t btowc (int __c) throw ();
  451.  
  452.  
  453.  
  454. extern int wctob (wint_t __c) throw ();
  455.  
  456.  
  457.  
  458. extern int mbsinit (const mbstate_t *__ps) throw () __attribute__ ((__pure__));
  459.  
  460.  
  461.  
  462. extern size_t mbrtowc (wchar_t *__restrict __pwc,
  463.          const char *__restrict __s, size_t __n,
  464.          mbstate_t *__restrict __p) throw ();
  465.  
  466.  
  467. extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
  468.          mbstate_t *__restrict __ps) throw ();
  469.  
  470.  
  471. extern size_t __mbrlen (const char *__restrict __s, size_t __n,
  472.    mbstate_t *__restrict __ps) throw ();
  473. extern size_t mbrlen (const char *__restrict __s, size_t __n,
  474.         mbstate_t *__restrict __ps) throw ();
  475.  
  476. # 408 "/usr/include/wchar.h" 3 4
  477.  
  478.  
  479.  
  480. extern size_t mbsrtowcs (wchar_t *__restrict __dst,
  481.     const char **__restrict __src, size_t __len,
  482.     mbstate_t *__restrict __ps) throw ();
  483.  
  484.  
  485.  
  486. extern size_t wcsrtombs (char *__restrict __dst,
  487.     const wchar_t **__restrict __src, size_t __len,
  488.     mbstate_t *__restrict __ps) throw ();
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495. extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
  496.      const char **__restrict __src, size_t __nmc,
  497.      size_t __len, mbstate_t *__restrict __ps) throw ();
  498.  
  499.  
  500.  
  501. extern size_t wcsnrtombs (char *__restrict __dst,
  502.      const wchar_t **__restrict __src,
  503.      size_t __nwc, size_t __len,
  504.      mbstate_t *__restrict __ps) throw ();
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511. extern int wcwidth (wchar_t __c) throw ();
  512.  
  513.  
  514.  
  515. extern int wcswidth (const wchar_t *__s, size_t __n) throw ();
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522. extern double wcstod (const wchar_t *__restrict __nptr,
  523.         wchar_t **__restrict __endptr) throw ();
  524.  
  525.  
  526.  
  527.  
  528.  
  529. extern float wcstof (const wchar_t *__restrict __nptr,
  530.        wchar_t **__restrict __endptr) throw ();
  531. extern long double wcstold (const wchar_t *__restrict __nptr,
  532.        wchar_t **__restrict __endptr) throw ();
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540. extern long int wcstol (const wchar_t *__restrict __nptr,
  541.    wchar_t **__restrict __endptr, int __base) throw ();
  542.  
  543.  
  544.  
  545. extern unsigned long int wcstoul (const wchar_t *__restrict __nptr,
  546.       wchar_t **__restrict __endptr, int __base)
  547.      throw ();
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554. __extension__
  555. extern long long int wcstoll (const wchar_t *__restrict __nptr,
  556.          wchar_t **__restrict __endptr, int __base)
  557.      throw ();
  558.  
  559.  
  560.  
  561. __extension__
  562. extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr,
  563.      wchar_t **__restrict __endptr,
  564.      int __base) throw ();
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571. __extension__
  572. extern long long int wcstoq (const wchar_t *__restrict __nptr,
  573.         wchar_t **__restrict __endptr, int __base)
  574.      throw ();
  575.  
  576.  
  577.  
  578. __extension__
  579. extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr,
  580.            wchar_t **__restrict __endptr,
  581.            int __base) throw ();
  582. # 533 "/usr/include/wchar.h" 3 4
  583. extern long int wcstol_l (const wchar_t *__restrict __nptr,
  584.      wchar_t **__restrict __endptr, int __base,
  585.      __locale_t __loc) throw ();
  586.  
  587. extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr,
  588.         wchar_t **__restrict __endptr,
  589.         int __base, __locale_t __loc) throw ();
  590.  
  591. __extension__
  592. extern long long int wcstoll_l (const wchar_t *__restrict __nptr,
  593.     wchar_t **__restrict __endptr,
  594.     int __base, __locale_t __loc) throw ();
  595.  
  596. __extension__
  597. extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr,
  598.        wchar_t **__restrict __endptr,
  599.        int __base, __locale_t __loc)
  600.      throw ();
  601.  
  602. extern double wcstod_l (const wchar_t *__restrict __nptr,
  603.    wchar_t **__restrict __endptr, __locale_t __loc)
  604.      throw ();
  605.  
  606. extern float wcstof_l (const wchar_t *__restrict __nptr,
  607.          wchar_t **__restrict __endptr, __locale_t __loc)
  608.      throw ();
  609.  
  610. extern long double wcstold_l (const wchar_t *__restrict __nptr,
  611.          wchar_t **__restrict __endptr,
  612.          __locale_t __loc) throw ();
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619. extern wchar_t *wcpcpy (wchar_t *__restrict __dest,
  620.    const wchar_t *__restrict __src) throw ();
  621.  
  622.  
  623.  
  624. extern wchar_t *wcpncpy (wchar_t *__restrict __dest,
  625.     const wchar_t *__restrict __src, size_t __n)
  626.      throw ();
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633. extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) throw ();
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640. extern int fwide (__FILE *__fp, int __mode) throw ();
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647. extern int fwprintf (__FILE *__restrict __stream,
  648.        const wchar_t *__restrict __format, ...)
  649.                                                            ;
  650.  
  651.  
  652.  
  653.  
  654. extern int wprintf (const wchar_t *__restrict __format, ...)
  655.                                                            ;
  656.  
  657. extern int swprintf (wchar_t *__restrict __s, size_t __n,
  658.        const wchar_t *__restrict __format, ...)
  659.      throw () ;
  660.  
  661.  
  662.  
  663.  
  664.  
  665. extern int vfwprintf (__FILE *__restrict __s,
  666.         const wchar_t *__restrict __format,
  667.         __gnuc_va_list __arg)
  668.                                                            ;
  669.  
  670.  
  671.  
  672.  
  673. extern int vwprintf (const wchar_t *__restrict __format,
  674.        __gnuc_va_list __arg)
  675.                                                            ;
  676.  
  677.  
  678. extern int vswprintf (wchar_t *__restrict __s, size_t __n,
  679.         const wchar_t *__restrict __format,
  680.         __gnuc_va_list __arg)
  681.      throw () ;
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688. extern int fwscanf (__FILE *__restrict __stream,
  689.       const wchar_t *__restrict __format, ...)
  690.                                                           ;
  691.  
  692.  
  693.  
  694.  
  695. extern int wscanf (const wchar_t *__restrict __format, ...)
  696.                                                           ;
  697.  
  698. extern int swscanf (const wchar_t *__restrict __s,
  699.       const wchar_t *__restrict __format, ...)
  700.      throw () ;
  701. # 683 "/usr/include/wchar.h" 3 4
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711. extern int vfwscanf (__FILE *__restrict __s,
  712.        const wchar_t *__restrict __format,
  713.        __gnuc_va_list __arg)
  714.                                                           ;
  715.  
  716.  
  717.  
  718.  
  719. extern int vwscanf (const wchar_t *__restrict __format,
  720.       __gnuc_va_list __arg)
  721.                                                           ;
  722.  
  723. extern int vswscanf (const wchar_t *__restrict __s,
  724.        const wchar_t *__restrict __format,
  725.        __gnuc_va_list __arg)
  726.      throw () ;
  727. # 739 "/usr/include/wchar.h" 3 4
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737. extern wint_t fgetwc (__FILE *__stream);
  738. extern wint_t getwc (__FILE *__stream);
  739.  
  740.  
  741.  
  742.  
  743.  
  744. extern wint_t getwchar (void);
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751. extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
  752. extern wint_t putwc (wchar_t __wc, __FILE *__stream);
  753.  
  754.  
  755.  
  756.  
  757.  
  758. extern wint_t putwchar (wchar_t __wc);
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766. extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
  767.    __FILE *__restrict __stream);
  768.  
  769.  
  770.  
  771.  
  772.  
  773. extern int fputws (const wchar_t *__restrict __ws,
  774.      __FILE *__restrict __stream);
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781. extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
  782.  
  783. # 804 "/usr/include/wchar.h" 3 4
  784. extern wint_t getwc_unlocked (__FILE *__stream);
  785. extern wint_t getwchar_unlocked (void);
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793. extern wint_t fgetwc_unlocked (__FILE *__stream);
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801. extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
  802. # 830 "/usr/include/wchar.h" 3 4
  803. extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
  804. extern wint_t putwchar_unlocked (wchar_t __wc);
  805. # 840 "/usr/include/wchar.h" 3 4
  806. extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
  807.      __FILE *__restrict __stream);
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815. extern int fputws_unlocked (const wchar_t *__restrict __ws,
  816.        __FILE *__restrict __stream);
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824. extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
  825.    const wchar_t *__restrict __format,
  826.    const struct tm *__restrict __tp) throw ();
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834. extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
  835.      const wchar_t *__restrict __format,
  836.      const struct tm *__restrict __tp,
  837.      __locale_t __loc) throw ();
  838. # 894 "/usr/include/wchar.h" 3 4
  839. }
  840. # 45 "/usr/include/c++/5/cwchar" 2 3
  841. # 62 "/usr/include/c++/5/cwchar" 3
  842. namespace std
  843. {
  844.   using ::mbstate_t;
  845. }
  846. # 135 "/usr/include/c++/5/cwchar" 3
  847. namespace std __attribute__ ((__visibility__ ("default")))
  848. {
  849.  
  850.  
  851.   using ::wint_t;
  852.  
  853.   using ::btowc;
  854.   using ::fgetwc;
  855.   using ::fgetws;
  856.   using ::fputwc;
  857.   using ::fputws;
  858.   using ::fwide;
  859.   using ::fwprintf;
  860.   using ::fwscanf;
  861.   using ::getwc;
  862.   using ::getwchar;
  863.   using ::mbrlen;
  864.   using ::mbrtowc;
  865.   using ::mbsinit;
  866.   using ::mbsrtowcs;
  867.   using ::putwc;
  868.   using ::putwchar;
  869.  
  870.   using ::swprintf;
  871.  
  872.   using ::swscanf;
  873.   using ::ungetwc;
  874.   using ::vfwprintf;
  875.  
  876.   using ::vfwscanf;
  877.  
  878.  
  879.   using ::vswprintf;
  880.  
  881.  
  882.   using ::vswscanf;
  883.  
  884.   using ::vwprintf;
  885.  
  886.   using ::vwscanf;
  887.  
  888.   using ::wcrtomb;
  889.   using ::wcscat;
  890.   using ::wcscmp;
  891.   using ::wcscoll;
  892.   using ::wcscpy;
  893.   using ::wcscspn;
  894.   using ::wcsftime;
  895.   using ::wcslen;
  896.   using ::wcsncat;
  897.   using ::wcsncmp;
  898.   using ::wcsncpy;
  899.   using ::wcsrtombs;
  900.   using ::wcsspn;
  901.   using ::wcstod;
  902.  
  903.   using ::wcstof;
  904.  
  905.   using ::wcstok;
  906.   using ::wcstol;
  907.   using ::wcstoul;
  908.   using ::wcsxfrm;
  909.   using ::wctob;
  910.   using ::wmemcmp;
  911.   using ::wmemcpy;
  912.   using ::wmemmove;
  913.   using ::wmemset;
  914.   using ::wprintf;
  915.   using ::wscanf;
  916.   using ::wcschr;
  917.   using ::wcspbrk;
  918.   using ::wcsrchr;
  919.   using ::wcsstr;
  920.   using ::wmemchr;
  921. # 232 "/usr/include/c++/5/cwchar" 3
  922.  
  923. }
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931. namespace __gnu_cxx
  932. {
  933.  
  934.  
  935.  
  936.  
  937.  
  938.   using ::wcstold;
  939. # 257 "/usr/include/c++/5/cwchar" 3
  940.   using ::wcstoll;
  941.   using ::wcstoull;
  942.  
  943. }
  944.  
  945. namespace std
  946. {
  947.   using ::__gnu_cxx::wcstold;
  948.   using ::__gnu_cxx::wcstoll;
  949.   using ::__gnu_cxx::wcstoull;
  950. }
  951. # 41 "/usr/include/c++/5/bits/postypes.h" 2 3
  952. # 68 "/usr/include/c++/5/bits/postypes.h" 3
  953. namespace std __attribute__ ((__visibility__ ("default")))
  954. {
  955.  
  956. # 88 "/usr/include/c++/5/bits/postypes.h" 3
  957.   typedef long streamoff;
  958. # 98 "/usr/include/c++/5/bits/postypes.h" 3
  959.   typedef ptrdiff_t streamsize;
  960. # 111 "/usr/include/c++/5/bits/postypes.h" 3
  961.   template<typename _StateT>
  962.     class fpos
  963.     {
  964.     private:
  965.       streamoff _M_off;
  966.       _StateT _M_state;
  967.  
  968.     public:
  969.  
  970.  
  971.  
  972.  
  973.       fpos()
  974.       : _M_off(0), _M_state() { }
  975. # 133 "/usr/include/c++/5/bits/postypes.h" 3
  976.       fpos(streamoff __off)
  977.       : _M_off(__off), _M_state() { }
  978.  
  979.  
  980.       operator streamoff() const { return _M_off; }
  981.  
  982.  
  983.       void
  984.       state(_StateT __st)
  985.       { _M_state = __st; }
  986.  
  987.  
  988.       _StateT
  989.       state() const
  990.       { return _M_state; }
  991.  
  992.  
  993.  
  994.  
  995.  
  996.       fpos&
  997.       operator+=(streamoff __off)
  998.       {
  999.  _M_off += __off;
  1000.  return *this;
  1001.       }
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.       fpos&
  1008.       operator-=(streamoff __off)
  1009.       {
  1010.  _M_off -= __off;
  1011.  return *this;
  1012.       }
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.       fpos
  1021.       operator+(streamoff __off) const
  1022.       {
  1023.  fpos __pos(*this);
  1024.  __pos += __off;
  1025.  return __pos;
  1026.       }
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.       fpos
  1035.       operator-(streamoff __off) const
  1036.       {
  1037.  fpos __pos(*this);
  1038.  __pos -= __off;
  1039.  return __pos;
  1040.       }
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.       streamoff
  1048.       operator-(const fpos& __other) const
  1049.       { return _M_off - __other._M_off; }
  1050.     };
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.   template<typename _StateT>
  1058.     inline bool
  1059.     operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
  1060.     { return streamoff(__lhs) == streamoff(__rhs); }
  1061.  
  1062.   template<typename _StateT>
  1063.     inline bool
  1064.     operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
  1065.     { return streamoff(__lhs) != streamoff(__rhs); }
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.   typedef fpos<mbstate_t> streampos;
  1072.  
  1073.   typedef fpos<mbstate_t> wstreampos;
  1074. # 239 "/usr/include/c++/5/bits/postypes.h" 3
  1075.  
  1076. }
  1077. # 41 "/usr/include/c++/5/iosfwd" 2 3
  1078.  
  1079. namespace std __attribute__ ((__visibility__ ("default")))
  1080. {
  1081.  
  1082. # 74 "/usr/include/c++/5/iosfwd" 3
  1083.   class ios_base;
  1084.  
  1085.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1086.     class basic_ios;
  1087.  
  1088.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1089.     class basic_streambuf;
  1090.  
  1091.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1092.     class basic_istream;
  1093.  
  1094.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1095.     class basic_ostream;
  1096.  
  1097.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1098.     class basic_iostream;
  1099.  
  1100.  
  1101. namespace __cxx11 {
  1102.  
  1103.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  1104.      typename _Alloc = allocator<_CharT> >
  1105.     class basic_stringbuf;
  1106.  
  1107.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  1108.     typename _Alloc = allocator<_CharT> >
  1109.     class basic_istringstream;
  1110.  
  1111.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  1112.     typename _Alloc = allocator<_CharT> >
  1113.     class basic_ostringstream;
  1114.  
  1115.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  1116.     typename _Alloc = allocator<_CharT> >
  1117.     class basic_stringstream;
  1118.  
  1119. }
  1120.  
  1121.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1122.     class basic_filebuf;
  1123.  
  1124.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1125.     class basic_ifstream;
  1126.  
  1127.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1128.     class basic_ofstream;
  1129.  
  1130.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1131.     class basic_fstream;
  1132.  
  1133.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1134.     class istreambuf_iterator;
  1135.  
  1136.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  1137.     class ostreambuf_iterator;
  1138.  
  1139.  
  1140.  
  1141.   typedef basic_ios<char> ios;
  1142.  
  1143.  
  1144.   typedef basic_streambuf<char> streambuf;
  1145.  
  1146.  
  1147.   typedef basic_istream<char> istream;
  1148.  
  1149.  
  1150.   typedef basic_ostream<char> ostream;
  1151.  
  1152.  
  1153.   typedef basic_iostream<char> iostream;
  1154.  
  1155.  
  1156.   typedef basic_stringbuf<char> stringbuf;
  1157.  
  1158.  
  1159.   typedef basic_istringstream<char> istringstream;
  1160.  
  1161.  
  1162.   typedef basic_ostringstream<char> ostringstream;
  1163.  
  1164.  
  1165.   typedef basic_stringstream<char> stringstream;
  1166.  
  1167.  
  1168.   typedef basic_filebuf<char> filebuf;
  1169.  
  1170.  
  1171.   typedef basic_ifstream<char> ifstream;
  1172.  
  1173.  
  1174.   typedef basic_ofstream<char> ofstream;
  1175.  
  1176.  
  1177.   typedef basic_fstream<char> fstream;
  1178.  
  1179.  
  1180.  
  1181.   typedef basic_ios<wchar_t> wios;
  1182.  
  1183.  
  1184.   typedef basic_streambuf<wchar_t> wstreambuf;
  1185.  
  1186.  
  1187.   typedef basic_istream<wchar_t> wistream;
  1188.  
  1189.  
  1190.   typedef basic_ostream<wchar_t> wostream;
  1191.  
  1192.  
  1193.   typedef basic_iostream<wchar_t> wiostream;
  1194.  
  1195.  
  1196.   typedef basic_stringbuf<wchar_t> wstringbuf;
  1197.  
  1198.  
  1199.   typedef basic_istringstream<wchar_t> wistringstream;
  1200.  
  1201.  
  1202.   typedef basic_ostringstream<wchar_t> wostringstream;
  1203.  
  1204.  
  1205.   typedef basic_stringstream<wchar_t> wstringstream;
  1206.  
  1207.  
  1208.   typedef basic_filebuf<wchar_t> wfilebuf;
  1209.  
  1210.  
  1211.   typedef basic_ifstream<wchar_t> wifstream;
  1212.  
  1213.  
  1214.   typedef basic_ofstream<wchar_t> wofstream;
  1215.  
  1216.  
  1217.   typedef basic_fstream<wchar_t> wfstream;
  1218.  
  1219.  
  1220.  
  1221.  
  1222. }
  1223. # 39 "/usr/include/c++/5/ios" 2 3
  1224. # 1 "/usr/include/c++/5/exception" 1 3
  1225. # 33 "/usr/include/c++/5/exception" 3
  1226.        
  1227. # 34 "/usr/include/c++/5/exception" 3
  1228.  
  1229. #pragma GCC visibility push(default)
  1230.  
  1231.  
  1232. # 1 "/usr/include/c++/5/bits/atomic_lockfree_defines.h" 1 3
  1233. # 33 "/usr/include/c++/5/bits/atomic_lockfree_defines.h" 3
  1234.        
  1235. # 34 "/usr/include/c++/5/bits/atomic_lockfree_defines.h" 3
  1236. # 39 "/usr/include/c++/5/exception" 2 3
  1237.  
  1238. extern "C++" {
  1239.  
  1240. namespace std
  1241. {
  1242. # 60 "/usr/include/c++/5/exception" 3
  1243.   class exception
  1244.   {
  1245.   public:
  1246.     exception() throw() { }
  1247.     virtual ~exception() throw();
  1248.  
  1249.  
  1250.  
  1251.     virtual const char* what() const throw();
  1252.   };
  1253.  
  1254.  
  1255.  
  1256.   class bad_exception : public exception
  1257.   {
  1258.   public:
  1259.     bad_exception() throw() { }
  1260.  
  1261.  
  1262.  
  1263.     virtual ~bad_exception() throw();
  1264.  
  1265.  
  1266.     virtual const char* what() const throw();
  1267.   };
  1268.  
  1269.  
  1270.   typedef void (*terminate_handler) ();
  1271.  
  1272.  
  1273.   typedef void (*unexpected_handler) ();
  1274.  
  1275.  
  1276.   terminate_handler set_terminate(terminate_handler) throw();
  1277. # 102 "/usr/include/c++/5/exception" 3
  1278.   void terminate() throw() __attribute__ ((__noreturn__));
  1279.  
  1280.  
  1281.   unexpected_handler set_unexpected(unexpected_handler) throw();
  1282. # 114 "/usr/include/c++/5/exception" 3
  1283.   void unexpected() __attribute__ ((__noreturn__));
  1284. # 127 "/usr/include/c++/5/exception" 3
  1285.   bool uncaught_exception() throw() __attribute__ ((__pure__));
  1286.  
  1287.  
  1288. }
  1289.  
  1290. namespace __gnu_cxx
  1291. {
  1292.  
  1293. # 152 "/usr/include/c++/5/exception" 3
  1294.   void __verbose_terminate_handler();
  1295.  
  1296.  
  1297. }
  1298.  
  1299. }
  1300.  
  1301. #pragma GCC visibility pop
  1302. # 40 "/usr/include/c++/5/ios" 2 3
  1303. # 1 "/usr/include/c++/5/bits/char_traits.h" 1 3
  1304. # 37 "/usr/include/c++/5/bits/char_traits.h" 3
  1305.        
  1306. # 38 "/usr/include/c++/5/bits/char_traits.h" 3
  1307.  
  1308. # 1 "/usr/include/c++/5/bits/stl_algobase.h" 1 3
  1309. # 60 "/usr/include/c++/5/bits/stl_algobase.h" 3
  1310. # 1 "/usr/include/c++/5/bits/functexcept.h" 1 3
  1311. # 40 "/usr/include/c++/5/bits/functexcept.h" 3
  1312. # 1 "/usr/include/c++/5/bits/exception_defines.h" 1 3
  1313. # 41 "/usr/include/c++/5/bits/functexcept.h" 2 3
  1314.  
  1315. namespace std __attribute__ ((__visibility__ ("default")))
  1316. {
  1317.  
  1318.  
  1319.  
  1320.   void
  1321.   __throw_bad_exception(void) __attribute__((__noreturn__));
  1322.  
  1323.  
  1324.   void
  1325.   __throw_bad_alloc(void) __attribute__((__noreturn__));
  1326.  
  1327.  
  1328.   void
  1329.   __throw_bad_cast(void) __attribute__((__noreturn__));
  1330.  
  1331.   void
  1332.   __throw_bad_typeid(void) __attribute__((__noreturn__));
  1333.  
  1334.  
  1335.   void
  1336.   __throw_logic_error(const char*) __attribute__((__noreturn__));
  1337.  
  1338.   void
  1339.   __throw_domain_error(const char*) __attribute__((__noreturn__));
  1340.  
  1341.   void
  1342.   __throw_invalid_argument(const char*) __attribute__((__noreturn__));
  1343.  
  1344.   void
  1345.   __throw_length_error(const char*) __attribute__((__noreturn__));
  1346.  
  1347.   void
  1348.   __throw_out_of_range(const char*) __attribute__((__noreturn__));
  1349.  
  1350.   void
  1351.   __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__))
  1352.     __attribute__((__format__(__gnu_printf__, 1, 2)));
  1353.  
  1354.   void
  1355.   __throw_runtime_error(const char*) __attribute__((__noreturn__));
  1356.  
  1357.   void
  1358.   __throw_range_error(const char*) __attribute__((__noreturn__));
  1359.  
  1360.   void
  1361.   __throw_overflow_error(const char*) __attribute__((__noreturn__));
  1362.  
  1363.   void
  1364.   __throw_underflow_error(const char*) __attribute__((__noreturn__));
  1365.  
  1366.  
  1367.   void
  1368.   __throw_ios_failure(const char*) __attribute__((__noreturn__));
  1369.  
  1370.   void
  1371.   __throw_system_error(int) __attribute__((__noreturn__));
  1372.  
  1373.   void
  1374.   __throw_future_error(int) __attribute__((__noreturn__));
  1375.  
  1376.  
  1377.   void
  1378.   __throw_bad_function_call() __attribute__((__noreturn__));
  1379.  
  1380.  
  1381. }
  1382. # 61 "/usr/include/c++/5/bits/stl_algobase.h" 2 3
  1383. # 1 "/usr/include/c++/5/bits/cpp_type_traits.h" 1 3
  1384. # 35 "/usr/include/c++/5/bits/cpp_type_traits.h" 3
  1385.        
  1386. # 36 "/usr/include/c++/5/bits/cpp_type_traits.h" 3
  1387. # 68 "/usr/include/c++/5/bits/cpp_type_traits.h" 3
  1388. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  1389. {
  1390.  
  1391.  
  1392.   template<typename _Iterator, typename _Container>
  1393.     class __normal_iterator;
  1394.  
  1395.  
  1396. }
  1397.  
  1398. namespace std __attribute__ ((__visibility__ ("default")))
  1399. {
  1400.  
  1401.  
  1402.   struct __true_type { };
  1403.   struct __false_type { };
  1404.  
  1405.   template<bool>
  1406.     struct __truth_type
  1407.     { typedef __false_type __type; };
  1408.  
  1409.   template<>
  1410.     struct __truth_type<true>
  1411.     { typedef __true_type __type; };
  1412.  
  1413.  
  1414.  
  1415.   template<class _Sp, class _Tp>
  1416.     struct __traitor
  1417.     {
  1418.       enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };
  1419.       typedef typename __truth_type<__value>::__type __type;
  1420.     };
  1421.  
  1422.  
  1423.   template<typename, typename>
  1424.     struct __are_same
  1425.     {
  1426.       enum { __value = 0 };
  1427.       typedef __false_type __type;
  1428.     };
  1429.  
  1430.   template<typename _Tp>
  1431.     struct __are_same<_Tp, _Tp>
  1432.     {
  1433.       enum { __value = 1 };
  1434.       typedef __true_type __type;
  1435.     };
  1436.  
  1437.  
  1438.   template<typename _Tp>
  1439.     struct __is_void
  1440.     {
  1441.       enum { __value = 0 };
  1442.       typedef __false_type __type;
  1443.     };
  1444.  
  1445.   template<>
  1446.     struct __is_void<void>
  1447.     {
  1448.       enum { __value = 1 };
  1449.       typedef __true_type __type;
  1450.     };
  1451.  
  1452.  
  1453.  
  1454.  
  1455.   template<typename _Tp>
  1456.     struct __is_integer
  1457.     {
  1458.       enum { __value = 0 };
  1459.       typedef __false_type __type;
  1460.     };
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.   template<>
  1467.     struct __is_integer<bool>
  1468.     {
  1469.       enum { __value = 1 };
  1470.       typedef __true_type __type;
  1471.     };
  1472.  
  1473.   template<>
  1474.     struct __is_integer<char>
  1475.     {
  1476.       enum { __value = 1 };
  1477.       typedef __true_type __type;
  1478.     };
  1479.  
  1480.   template<>
  1481.     struct __is_integer<signed char>
  1482.     {
  1483.       enum { __value = 1 };
  1484.       typedef __true_type __type;
  1485.     };
  1486.  
  1487.   template<>
  1488.     struct __is_integer<unsigned char>
  1489.     {
  1490.       enum { __value = 1 };
  1491.       typedef __true_type __type;
  1492.     };
  1493.  
  1494.  
  1495.   template<>
  1496.     struct __is_integer<wchar_t>
  1497.     {
  1498.       enum { __value = 1 };
  1499.       typedef __true_type __type;
  1500.     };
  1501. # 199 "/usr/include/c++/5/bits/cpp_type_traits.h" 3
  1502.   template<>
  1503.     struct __is_integer<short>
  1504.     {
  1505.       enum { __value = 1 };
  1506.       typedef __true_type __type;
  1507.     };
  1508.  
  1509.   template<>
  1510.     struct __is_integer<unsigned short>
  1511.     {
  1512.       enum { __value = 1 };
  1513.       typedef __true_type __type;
  1514.     };
  1515.  
  1516.   template<>
  1517.     struct __is_integer<int>
  1518.     {
  1519.       enum { __value = 1 };
  1520.       typedef __true_type __type;
  1521.     };
  1522.  
  1523.   template<>
  1524.     struct __is_integer<unsigned int>
  1525.     {
  1526.       enum { __value = 1 };
  1527.       typedef __true_type __type;
  1528.     };
  1529.  
  1530.   template<>
  1531.     struct __is_integer<long>
  1532.     {
  1533.       enum { __value = 1 };
  1534.       typedef __true_type __type;
  1535.     };
  1536.  
  1537.   template<>
  1538.     struct __is_integer<unsigned long>
  1539.     {
  1540.       enum { __value = 1 };
  1541.       typedef __true_type __type;
  1542.     };
  1543.  
  1544.   template<>
  1545.     struct __is_integer<long long>
  1546.     {
  1547.       enum { __value = 1 };
  1548.       typedef __true_type __type;
  1549.     };
  1550.  
  1551.   template<>
  1552.     struct __is_integer<unsigned long long>
  1553.     {
  1554.       enum { __value = 1 };
  1555.       typedef __true_type __type;
  1556.     };
  1557. # 270 "/usr/include/c++/5/bits/cpp_type_traits.h" 3
  1558. template<> struct __is_integer<__int128> { enum { __value = 1 }; typedef __true_type __type; }; template<> struct __is_integer<unsigned __int128> { enum { __value = 1 }; typedef __true_type __type; };
  1559. # 287 "/usr/include/c++/5/bits/cpp_type_traits.h" 3
  1560.   template<typename _Tp>
  1561.     struct __is_floating
  1562.     {
  1563.       enum { __value = 0 };
  1564.       typedef __false_type __type;
  1565.     };
  1566.  
  1567.  
  1568.   template<>
  1569.     struct __is_floating<float>
  1570.     {
  1571.       enum { __value = 1 };
  1572.       typedef __true_type __type;
  1573.     };
  1574.  
  1575.   template<>
  1576.     struct __is_floating<double>
  1577.     {
  1578.       enum { __value = 1 };
  1579.       typedef __true_type __type;
  1580.     };
  1581.  
  1582.   template<>
  1583.     struct __is_floating<long double>
  1584.     {
  1585.       enum { __value = 1 };
  1586.       typedef __true_type __type;
  1587.     };
  1588.  
  1589.  
  1590.  
  1591.  
  1592.   template<typename _Tp>
  1593.     struct __is_pointer
  1594.     {
  1595.       enum { __value = 0 };
  1596.       typedef __false_type __type;
  1597.     };
  1598.  
  1599.   template<typename _Tp>
  1600.     struct __is_pointer<_Tp*>
  1601.     {
  1602.       enum { __value = 1 };
  1603.       typedef __true_type __type;
  1604.     };
  1605.  
  1606.  
  1607.  
  1608.  
  1609.   template<typename _Tp>
  1610.     struct __is_normal_iterator
  1611.     {
  1612.       enum { __value = 0 };
  1613.       typedef __false_type __type;
  1614.     };
  1615.  
  1616.   template<typename _Iterator, typename _Container>
  1617.     struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
  1618.              _Container> >
  1619.     {
  1620.       enum { __value = 1 };
  1621.       typedef __true_type __type;
  1622.     };
  1623.  
  1624.  
  1625.  
  1626.  
  1627.   template<typename _Tp>
  1628.     struct __is_arithmetic
  1629.     : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
  1630.     { };
  1631.  
  1632.  
  1633.  
  1634.  
  1635.   template<typename _Tp>
  1636.     struct __is_scalar
  1637.     : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >
  1638.     { };
  1639.  
  1640.  
  1641.  
  1642.  
  1643.   template<typename _Tp>
  1644.     struct __is_char
  1645.     {
  1646.       enum { __value = 0 };
  1647.       typedef __false_type __type;
  1648.     };
  1649.  
  1650.   template<>
  1651.     struct __is_char<char>
  1652.     {
  1653.       enum { __value = 1 };
  1654.       typedef __true_type __type;
  1655.     };
  1656.  
  1657.  
  1658.   template<>
  1659.     struct __is_char<wchar_t>
  1660.     {
  1661.       enum { __value = 1 };
  1662.       typedef __true_type __type;
  1663.     };
  1664.  
  1665.  
  1666.   template<typename _Tp>
  1667.     struct __is_byte
  1668.     {
  1669.       enum { __value = 0 };
  1670.       typedef __false_type __type;
  1671.     };
  1672.  
  1673.   template<>
  1674.     struct __is_byte<char>
  1675.     {
  1676.       enum { __value = 1 };
  1677.       typedef __true_type __type;
  1678.     };
  1679.  
  1680.   template<>
  1681.     struct __is_byte<signed char>
  1682.     {
  1683.       enum { __value = 1 };
  1684.       typedef __true_type __type;
  1685.     };
  1686.  
  1687.   template<>
  1688.     struct __is_byte<unsigned char>
  1689.     {
  1690.       enum { __value = 1 };
  1691.       typedef __true_type __type;
  1692.     };
  1693.  
  1694.  
  1695.  
  1696.  
  1697.   template<typename _Tp>
  1698.     struct __is_move_iterator
  1699.     {
  1700.       enum { __value = 0 };
  1701.       typedef __false_type __type;
  1702.     };
  1703. # 443 "/usr/include/c++/5/bits/cpp_type_traits.h" 3
  1704.  
  1705. }
  1706. # 62 "/usr/include/c++/5/bits/stl_algobase.h" 2 3
  1707. # 1 "/usr/include/c++/5/ext/type_traits.h" 1 3
  1708. # 32 "/usr/include/c++/5/ext/type_traits.h" 3
  1709.        
  1710. # 33 "/usr/include/c++/5/ext/type_traits.h" 3
  1711.  
  1712.  
  1713.  
  1714.  
  1715. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  1716. {
  1717.  
  1718.  
  1719.  
  1720.   template<bool, typename>
  1721.     struct __enable_if
  1722.     { };
  1723.  
  1724.   template<typename _Tp>
  1725.     struct __enable_if<true, _Tp>
  1726.     { typedef _Tp __type; };
  1727.  
  1728.  
  1729.  
  1730.   template<bool _Cond, typename _Iftrue, typename _Iffalse>
  1731.     struct __conditional_type
  1732.     { typedef _Iftrue __type; };
  1733.  
  1734.   template<typename _Iftrue, typename _Iffalse>
  1735.     struct __conditional_type<false, _Iftrue, _Iffalse>
  1736.     { typedef _Iffalse __type; };
  1737.  
  1738.  
  1739.  
  1740.   template<typename _Tp>
  1741.     struct __add_unsigned
  1742.     {
  1743.     private:
  1744.       typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
  1745.  
  1746.     public:
  1747.       typedef typename __if_type::__type __type;
  1748.     };
  1749.  
  1750.   template<>
  1751.     struct __add_unsigned<char>
  1752.     { typedef unsigned char __type; };
  1753.  
  1754.   template<>
  1755.     struct __add_unsigned<signed char>
  1756.     { typedef unsigned char __type; };
  1757.  
  1758.   template<>
  1759.     struct __add_unsigned<short>
  1760.     { typedef unsigned short __type; };
  1761.  
  1762.   template<>
  1763.     struct __add_unsigned<int>
  1764.     { typedef unsigned int __type; };
  1765.  
  1766.   template<>
  1767.     struct __add_unsigned<long>
  1768.     { typedef unsigned long __type; };
  1769.  
  1770.   template<>
  1771.     struct __add_unsigned<long long>
  1772.     { typedef unsigned long long __type; };
  1773.  
  1774.  
  1775.   template<>
  1776.     struct __add_unsigned<bool>;
  1777.  
  1778.   template<>
  1779.     struct __add_unsigned<wchar_t>;
  1780.  
  1781.  
  1782.  
  1783.   template<typename _Tp>
  1784.     struct __remove_unsigned
  1785.     {
  1786.     private:
  1787.       typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
  1788.  
  1789.     public:
  1790.       typedef typename __if_type::__type __type;
  1791.     };
  1792.  
  1793.   template<>
  1794.     struct __remove_unsigned<char>
  1795.     { typedef signed char __type; };
  1796.  
  1797.   template<>
  1798.     struct __remove_unsigned<unsigned char>
  1799.     { typedef signed char __type; };
  1800.  
  1801.   template<>
  1802.     struct __remove_unsigned<unsigned short>
  1803.     { typedef short __type; };
  1804.  
  1805.   template<>
  1806.     struct __remove_unsigned<unsigned int>
  1807.     { typedef int __type; };
  1808.  
  1809.   template<>
  1810.     struct __remove_unsigned<unsigned long>
  1811.     { typedef long __type; };
  1812.  
  1813.   template<>
  1814.     struct __remove_unsigned<unsigned long long>
  1815.     { typedef long long __type; };
  1816.  
  1817.  
  1818.   template<>
  1819.     struct __remove_unsigned<bool>;
  1820.  
  1821.   template<>
  1822.     struct __remove_unsigned<wchar_t>;
  1823.  
  1824.  
  1825.  
  1826.   template<typename _Type>
  1827.     inline bool
  1828.     __is_null_pointer(_Type* __ptr)
  1829.     { return __ptr == 0; }
  1830.  
  1831.   template<typename _Type>
  1832.     inline bool
  1833.     __is_null_pointer(_Type)
  1834.     { return false; }
  1835. # 165 "/usr/include/c++/5/ext/type_traits.h" 3
  1836.   template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
  1837.     struct __promote
  1838.     { typedef double __type; };
  1839.  
  1840.  
  1841.  
  1842.  
  1843.   template<typename _Tp>
  1844.     struct __promote<_Tp, false>
  1845.     { };
  1846.  
  1847.   template<>
  1848.     struct __promote<long double>
  1849.     { typedef long double __type; };
  1850.  
  1851.   template<>
  1852.     struct __promote<double>
  1853.     { typedef double __type; };
  1854.  
  1855.   template<>
  1856.     struct __promote<float>
  1857.     { typedef float __type; };
  1858.  
  1859.   template<typename _Tp, typename _Up,
  1860.            typename _Tp2 = typename __promote<_Tp>::__type,
  1861.            typename _Up2 = typename __promote<_Up>::__type>
  1862.     struct __promote_2
  1863.     {
  1864.       typedef __typeof__(_Tp2() + _Up2()) __type;
  1865.     };
  1866.  
  1867.   template<typename _Tp, typename _Up, typename _Vp,
  1868.            typename _Tp2 = typename __promote<_Tp>::__type,
  1869.            typename _Up2 = typename __promote<_Up>::__type,
  1870.            typename _Vp2 = typename __promote<_Vp>::__type>
  1871.     struct __promote_3
  1872.     {
  1873.       typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type;
  1874.     };
  1875.  
  1876.   template<typename _Tp, typename _Up, typename _Vp, typename _Wp,
  1877.            typename _Tp2 = typename __promote<_Tp>::__type,
  1878.            typename _Up2 = typename __promote<_Up>::__type,
  1879.            typename _Vp2 = typename __promote<_Vp>::__type,
  1880.            typename _Wp2 = typename __promote<_Wp>::__type>
  1881.     struct __promote_4
  1882.     {
  1883.       typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type;
  1884.     };
  1885.  
  1886.  
  1887. }
  1888. # 63 "/usr/include/c++/5/bits/stl_algobase.h" 2 3
  1889. # 1 "/usr/include/c++/5/ext/numeric_traits.h" 1 3
  1890. # 32 "/usr/include/c++/5/ext/numeric_traits.h" 3
  1891.        
  1892. # 33 "/usr/include/c++/5/ext/numeric_traits.h" 3
  1893.  
  1894.  
  1895.  
  1896.  
  1897. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  1898. {
  1899.  
  1900. # 54 "/usr/include/c++/5/ext/numeric_traits.h" 3
  1901.   template<typename _Value>
  1902.     struct __numeric_traits_integer
  1903.     {
  1904.  
  1905.       static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0);
  1906.       static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0);
  1907.  
  1908.  
  1909.  
  1910.       static const bool __is_signed = ((_Value)(-1) < 0);
  1911.       static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0));
  1912.     };
  1913.  
  1914.   template<typename _Value>
  1915.     const _Value __numeric_traits_integer<_Value>::__min;
  1916.  
  1917.   template<typename _Value>
  1918.     const _Value __numeric_traits_integer<_Value>::__max;
  1919.  
  1920.   template<typename _Value>
  1921.     const bool __numeric_traits_integer<_Value>::__is_signed;
  1922.  
  1923.   template<typename _Value>
  1924.     const int __numeric_traits_integer<_Value>::__digits;
  1925. # 99 "/usr/include/c++/5/ext/numeric_traits.h" 3
  1926.   template<typename _Value>
  1927.     struct __numeric_traits_floating
  1928.     {
  1929.  
  1930.       static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 64) * 643L / 2136);
  1931.  
  1932.  
  1933.       static const bool __is_signed = true;
  1934.       static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 18);
  1935.       static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932);
  1936.     };
  1937.  
  1938.   template<typename _Value>
  1939.     const int __numeric_traits_floating<_Value>::__max_digits10;
  1940.  
  1941.   template<typename _Value>
  1942.     const bool __numeric_traits_floating<_Value>::__is_signed;
  1943.  
  1944.   template<typename _Value>
  1945.     const int __numeric_traits_floating<_Value>::__digits10;
  1946.  
  1947.   template<typename _Value>
  1948.     const int __numeric_traits_floating<_Value>::__max_exponent10;
  1949.  
  1950.   template<typename _Value>
  1951.     struct __numeric_traits
  1952.     : public __conditional_type<std::__is_integer<_Value>::__value,
  1953.     __numeric_traits_integer<_Value>,
  1954.     __numeric_traits_floating<_Value> >::__type
  1955.     { };
  1956.  
  1957.  
  1958. }
  1959. # 64 "/usr/include/c++/5/bits/stl_algobase.h" 2 3
  1960. # 1 "/usr/include/c++/5/bits/stl_pair.h" 1 3
  1961. # 59 "/usr/include/c++/5/bits/stl_pair.h" 3
  1962. # 1 "/usr/include/c++/5/bits/move.h" 1 3
  1963. # 34 "/usr/include/c++/5/bits/move.h" 3
  1964. # 1 "/usr/include/c++/5/bits/concept_check.h" 1 3
  1965. # 33 "/usr/include/c++/5/bits/concept_check.h" 3
  1966.        
  1967. # 34 "/usr/include/c++/5/bits/concept_check.h" 3
  1968. # 35 "/usr/include/c++/5/bits/move.h" 2 3
  1969.  
  1970. namespace std __attribute__ ((__visibility__ ("default")))
  1971. {
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.   template<typename _Tp>
  1980.     inline _Tp*
  1981.     __addressof(_Tp& __r)
  1982.     {
  1983.       return reinterpret_cast<_Tp*>
  1984.  (&const_cast<char&>(reinterpret_cast<const volatile char&>(__r)));
  1985.     }
  1986.  
  1987.  
  1988. }
  1989. # 159 "/usr/include/c++/5/bits/move.h" 3
  1990. namespace std __attribute__ ((__visibility__ ("default")))
  1991. {
  1992.  
  1993. # 174 "/usr/include/c++/5/bits/move.h" 3
  1994.   template<typename _Tp>
  1995.     inline void
  1996.     swap(_Tp& __a, _Tp& __b)
  1997.  
  1998.  
  1999.  
  2000.  
  2001.     {
  2002.  
  2003.      
  2004.  
  2005.       _Tp __tmp = (__a);
  2006.       __a = (__b);
  2007.       __b = (__tmp);
  2008.     }
  2009.  
  2010.  
  2011.  
  2012.  
  2013.   template<typename _Tp, size_t _Nm>
  2014.     inline void
  2015.     swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
  2016.  
  2017.  
  2018.  
  2019.     {
  2020.       for (size_t __n = 0; __n < _Nm; ++__n)
  2021.  swap(__a[__n], __b[__n]);
  2022.     }
  2023.  
  2024.  
  2025.  
  2026. }
  2027. # 60 "/usr/include/c++/5/bits/stl_pair.h" 2 3
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033. namespace std __attribute__ ((__visibility__ ("default")))
  2034. {
  2035.  
  2036. # 95 "/usr/include/c++/5/bits/stl_pair.h" 3
  2037.   template<class _T1, class _T2>
  2038.     struct pair
  2039.     {
  2040.       typedef _T1 first_type;
  2041.       typedef _T2 second_type;
  2042.  
  2043.       _T1 first;
  2044.       _T2 second;
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.       pair()
  2051.       : first(), second() { }
  2052.  
  2053.  
  2054.       pair(const _T1& __a, const _T2& __b)
  2055.       : first(__a), second(__b) { }
  2056.  
  2057.  
  2058.  
  2059.       template<class _U1, class _U2>
  2060.  pair(const pair<_U1, _U2>& __p)
  2061.  : first(__p.first), second(__p.second) { }
  2062. # 209 "/usr/include/c++/5/bits/stl_pair.h" 3
  2063.     };
  2064.  
  2065.  
  2066.   template<class _T1, class _T2>
  2067.     inline bool
  2068.     operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2069.     { return __x.first == __y.first && __x.second == __y.second; }
  2070.  
  2071.  
  2072.   template<class _T1, class _T2>
  2073.     inline bool
  2074.     operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2075.     { return __x.first < __y.first
  2076.       || (!(__y.first < __x.first) && __x.second < __y.second); }
  2077.  
  2078.  
  2079.   template<class _T1, class _T2>
  2080.     inline bool
  2081.     operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2082.     { return !(__x == __y); }
  2083.  
  2084.  
  2085.   template<class _T1, class _T2>
  2086.     inline bool
  2087.     operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2088.     { return __y < __x; }
  2089.  
  2090.  
  2091.   template<class _T1, class _T2>
  2092.     inline bool
  2093.     operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2094.     { return !(__y < __x); }
  2095.  
  2096.  
  2097.   template<class _T1, class _T2>
  2098.     inline bool
  2099.     operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
  2100.     { return !(__x < __y); }
  2101. # 284 "/usr/include/c++/5/bits/stl_pair.h" 3
  2102.   template<class _T1, class _T2>
  2103.     inline pair<_T1, _T2>
  2104.     make_pair(_T1 __x, _T2 __y)
  2105.     { return pair<_T1, _T2>(__x, __y); }
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111. }
  2112. # 65 "/usr/include/c++/5/bits/stl_algobase.h" 2 3
  2113. # 1 "/usr/include/c++/5/bits/stl_iterator_base_types.h" 1 3
  2114. # 62 "/usr/include/c++/5/bits/stl_iterator_base_types.h" 3
  2115.        
  2116. # 63 "/usr/include/c++/5/bits/stl_iterator_base_types.h" 3
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124. namespace std __attribute__ ((__visibility__ ("default")))
  2125. {
  2126.  
  2127. # 89 "/usr/include/c++/5/bits/stl_iterator_base_types.h" 3
  2128.   struct input_iterator_tag { };
  2129.  
  2130.  
  2131.   struct output_iterator_tag { };
  2132.  
  2133.  
  2134.   struct forward_iterator_tag : public input_iterator_tag { };
  2135.  
  2136.  
  2137.  
  2138.   struct bidirectional_iterator_tag : public forward_iterator_tag { };
  2139.  
  2140.  
  2141.  
  2142.   struct random_access_iterator_tag : public bidirectional_iterator_tag { };
  2143. # 116 "/usr/include/c++/5/bits/stl_iterator_base_types.h" 3
  2144.   template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
  2145.            typename _Pointer = _Tp*, typename _Reference = _Tp&>
  2146.     struct iterator
  2147.     {
  2148.  
  2149.       typedef _Category iterator_category;
  2150.  
  2151.       typedef _Tp value_type;
  2152.  
  2153.       typedef _Distance difference_type;
  2154.  
  2155.       typedef _Pointer pointer;
  2156.  
  2157.       typedef _Reference reference;
  2158.     };
  2159. # 165 "/usr/include/c++/5/bits/stl_iterator_base_types.h" 3
  2160.   template<typename _Iterator>
  2161.     struct iterator_traits
  2162.     {
  2163.       typedef typename _Iterator::iterator_category iterator_category;
  2164.       typedef typename _Iterator::value_type value_type;
  2165.       typedef typename _Iterator::difference_type difference_type;
  2166.       typedef typename _Iterator::pointer pointer;
  2167.       typedef typename _Iterator::reference reference;
  2168.     };
  2169.  
  2170.  
  2171.  
  2172.   template<typename _Tp>
  2173.     struct iterator_traits<_Tp*>
  2174.     {
  2175.       typedef random_access_iterator_tag iterator_category;
  2176.       typedef _Tp value_type;
  2177.       typedef ptrdiff_t difference_type;
  2178.       typedef _Tp* pointer;
  2179.       typedef _Tp& reference;
  2180.     };
  2181.  
  2182.  
  2183.   template<typename _Tp>
  2184.     struct iterator_traits<const _Tp*>
  2185.     {
  2186.       typedef random_access_iterator_tag iterator_category;
  2187.       typedef _Tp value_type;
  2188.       typedef ptrdiff_t difference_type;
  2189.       typedef const _Tp* pointer;
  2190.       typedef const _Tp& reference;
  2191.     };
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.   template<typename _Iter>
  2198.     inline typename iterator_traits<_Iter>::iterator_category
  2199.     __iterator_category(const _Iter&)
  2200.     { return typename iterator_traits<_Iter>::iterator_category(); }
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.   template<typename _Iterator, bool _HasBase>
  2207.     struct _Iter_base
  2208.     {
  2209.       typedef _Iterator iterator_type;
  2210.       static iterator_type _S_base(_Iterator __it)
  2211.       { return __it; }
  2212.     };
  2213.  
  2214.   template<typename _Iterator>
  2215.     struct _Iter_base<_Iterator, true>
  2216.     {
  2217.       typedef typename _Iterator::iterator_type iterator_type;
  2218.       static iterator_type _S_base(_Iterator __it)
  2219.       { return __it.base(); }
  2220.     };
  2221. # 235 "/usr/include/c++/5/bits/stl_iterator_base_types.h" 3
  2222.  
  2223. }
  2224. # 66 "/usr/include/c++/5/bits/stl_algobase.h" 2 3
  2225. # 1 "/usr/include/c++/5/bits/stl_iterator_base_funcs.h" 1 3
  2226. # 62 "/usr/include/c++/5/bits/stl_iterator_base_funcs.h" 3
  2227.        
  2228. # 63 "/usr/include/c++/5/bits/stl_iterator_base_funcs.h" 3
  2229.  
  2230.  
  2231. # 1 "/usr/include/c++/5/debug/debug.h" 1 3
  2232. # 46 "/usr/include/c++/5/debug/debug.h" 3
  2233. namespace std
  2234. {
  2235.   namespace __debug { }
  2236. }
  2237.  
  2238.  
  2239.  
  2240.  
  2241. namespace __gnu_debug
  2242. {
  2243.   using namespace std::__debug;
  2244. }
  2245. # 66 "/usr/include/c++/5/bits/stl_iterator_base_funcs.h" 2 3
  2246.  
  2247. namespace std __attribute__ ((__visibility__ ("default")))
  2248. {
  2249.  
  2250.  
  2251.   template<typename _InputIterator>
  2252.     inline typename iterator_traits<_InputIterator>::difference_type
  2253.     __distance(_InputIterator __first, _InputIterator __last,
  2254.                input_iterator_tag)
  2255.     {
  2256.  
  2257.      
  2258.  
  2259.       typename iterator_traits<_InputIterator>::difference_type __n = 0;
  2260.       while (__first != __last)
  2261.  {
  2262.    ++__first;
  2263.    ++__n;
  2264.  }
  2265.       return __n;
  2266.     }
  2267.  
  2268.   template<typename _RandomAccessIterator>
  2269.     inline typename iterator_traits<_RandomAccessIterator>::difference_type
  2270.     __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
  2271.                random_access_iterator_tag)
  2272.     {
  2273.  
  2274.      
  2275.  
  2276.       return __last - __first;
  2277.     }
  2278. # 112 "/usr/include/c++/5/bits/stl_iterator_base_funcs.h" 3
  2279.   template<typename _InputIterator>
  2280.     inline typename iterator_traits<_InputIterator>::difference_type
  2281.     distance(_InputIterator __first, _InputIterator __last)
  2282.     {
  2283.  
  2284.       return std::__distance(__first, __last,
  2285.         std::__iterator_category(__first));
  2286.     }
  2287.  
  2288.   template<typename _InputIterator, typename _Distance>
  2289.     inline void
  2290.     __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)
  2291.     {
  2292.  
  2293.      
  2294.       ;
  2295.       while (__n--)
  2296.  ++__i;
  2297.     }
  2298.  
  2299.   template<typename _BidirectionalIterator, typename _Distance>
  2300.     inline void
  2301.     __advance(_BidirectionalIterator& __i, _Distance __n,
  2302.        bidirectional_iterator_tag)
  2303.     {
  2304.  
  2305.      
  2306.  
  2307.       if (__n > 0)
  2308.         while (__n--)
  2309.    ++__i;
  2310.       else
  2311.         while (__n++)
  2312.    --__i;
  2313.     }
  2314.  
  2315.   template<typename _RandomAccessIterator, typename _Distance>
  2316.     inline void
  2317.     __advance(_RandomAccessIterator& __i, _Distance __n,
  2318.               random_access_iterator_tag)
  2319.     {
  2320.  
  2321.      
  2322.  
  2323.       __i += __n;
  2324.     }
  2325. # 171 "/usr/include/c++/5/bits/stl_iterator_base_funcs.h" 3
  2326.   template<typename _InputIterator, typename _Distance>
  2327.     inline void
  2328.     advance(_InputIterator& __i, _Distance __n)
  2329.     {
  2330.  
  2331.       typename iterator_traits<_InputIterator>::difference_type __d = __n;
  2332.       std::__advance(__i, __d, std::__iterator_category(__i));
  2333.     }
  2334. # 202 "/usr/include/c++/5/bits/stl_iterator_base_funcs.h" 3
  2335.  
  2336. }
  2337. # 67 "/usr/include/c++/5/bits/stl_algobase.h" 2 3
  2338. # 1 "/usr/include/c++/5/bits/stl_iterator.h" 1 3
  2339. # 66 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2340. # 1 "/usr/include/c++/5/bits/ptr_traits.h" 1 3
  2341. # 67 "/usr/include/c++/5/bits/stl_iterator.h" 2 3
  2342.  
  2343. namespace std __attribute__ ((__visibility__ ("default")))
  2344. {
  2345.  
  2346. # 96 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2347.   template<typename _Iterator>
  2348.     class reverse_iterator
  2349.     : public iterator<typename iterator_traits<_Iterator>::iterator_category,
  2350.         typename iterator_traits<_Iterator>::value_type,
  2351.         typename iterator_traits<_Iterator>::difference_type,
  2352.         typename iterator_traits<_Iterator>::pointer,
  2353.                       typename iterator_traits<_Iterator>::reference>
  2354.     {
  2355.     protected:
  2356.       _Iterator current;
  2357.  
  2358.       typedef iterator_traits<_Iterator> __traits_type;
  2359.  
  2360.     public:
  2361.       typedef _Iterator iterator_type;
  2362.       typedef typename __traits_type::difference_type difference_type;
  2363.       typedef typename __traits_type::pointer pointer;
  2364.       typedef typename __traits_type::reference reference;
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.       reverse_iterator() : current() { }
  2373.  
  2374.  
  2375.  
  2376.  
  2377.       explicit
  2378.       reverse_iterator(iterator_type __x) : current(__x) { }
  2379.  
  2380.  
  2381.  
  2382.  
  2383.       reverse_iterator(const reverse_iterator& __x)
  2384.       : current(__x.current) { }
  2385.  
  2386.  
  2387.  
  2388.  
  2389.  
  2390.       template<typename _Iter>
  2391.         reverse_iterator(const reverse_iterator<_Iter>& __x)
  2392.  : current(__x.base()) { }
  2393.  
  2394.  
  2395.  
  2396.  
  2397.       iterator_type
  2398.       base() const
  2399.       { return current; }
  2400. # 160 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2401.       reference
  2402.       operator*() const
  2403.       {
  2404.  _Iterator __tmp = current;
  2405.  return *--__tmp;
  2406.       }
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.       pointer
  2414.       operator->() const
  2415.       { return &(operator*()); }
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.       reverse_iterator&
  2423.       operator++()
  2424.       {
  2425.  --current;
  2426.  return *this;
  2427.       }
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.       reverse_iterator
  2435.       operator++(int)
  2436.       {
  2437.  reverse_iterator __tmp = *this;
  2438.  --current;
  2439.  return __tmp;
  2440.       }
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.       reverse_iterator&
  2448.       operator--()
  2449.       {
  2450.  ++current;
  2451.  return *this;
  2452.       }
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.       reverse_iterator
  2460.       operator--(int)
  2461.       {
  2462.  reverse_iterator __tmp = *this;
  2463.  ++current;
  2464.  return __tmp;
  2465.       }
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.       reverse_iterator
  2473.       operator+(difference_type __n) const
  2474.       { return reverse_iterator(current - __n); }
  2475.  
  2476.  
  2477.  
  2478.  
  2479.  
  2480.  
  2481.  
  2482.       reverse_iterator&
  2483.       operator+=(difference_type __n)
  2484.       {
  2485.  current -= __n;
  2486.  return *this;
  2487.       }
  2488.  
  2489.  
  2490.  
  2491.  
  2492.  
  2493.  
  2494.       reverse_iterator
  2495.       operator-(difference_type __n) const
  2496.       { return reverse_iterator(current + __n); }
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.       reverse_iterator&
  2505.       operator-=(difference_type __n)
  2506.       {
  2507.  current += __n;
  2508.  return *this;
  2509.       }
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.       reference
  2517.       operator[](difference_type __n) const
  2518.       { return *(*this + __n); }
  2519.     };
  2520. # 290 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2521.   template<typename _Iterator>
  2522.     inline bool
  2523.     operator==(const reverse_iterator<_Iterator>& __x,
  2524.         const reverse_iterator<_Iterator>& __y)
  2525.     { return __x.base() == __y.base(); }
  2526.  
  2527.   template<typename _Iterator>
  2528.     inline bool
  2529.     operator<(const reverse_iterator<_Iterator>& __x,
  2530.        const reverse_iterator<_Iterator>& __y)
  2531.     { return __y.base() < __x.base(); }
  2532.  
  2533.   template<typename _Iterator>
  2534.     inline bool
  2535.     operator!=(const reverse_iterator<_Iterator>& __x,
  2536.         const reverse_iterator<_Iterator>& __y)
  2537.     { return !(__x == __y); }
  2538.  
  2539.   template<typename _Iterator>
  2540.     inline bool
  2541.     operator>(const reverse_iterator<_Iterator>& __x,
  2542.        const reverse_iterator<_Iterator>& __y)
  2543.     { return __y < __x; }
  2544.  
  2545.   template<typename _Iterator>
  2546.     inline bool
  2547.     operator<=(const reverse_iterator<_Iterator>& __x,
  2548.         const reverse_iterator<_Iterator>& __y)
  2549.     { return !(__y < __x); }
  2550.  
  2551.   template<typename _Iterator>
  2552.     inline bool
  2553.     operator>=(const reverse_iterator<_Iterator>& __x,
  2554.         const reverse_iterator<_Iterator>& __y)
  2555.     { return !(__x < __y); }
  2556.  
  2557.   template<typename _Iterator>
  2558.     inline typename reverse_iterator<_Iterator>::difference_type
  2559.     operator-(const reverse_iterator<_Iterator>& __x,
  2560.        const reverse_iterator<_Iterator>& __y)
  2561.     { return __y.base() - __x.base(); }
  2562.  
  2563.   template<typename _Iterator>
  2564.     inline reverse_iterator<_Iterator>
  2565.     operator+(typename reverse_iterator<_Iterator>::difference_type __n,
  2566.        const reverse_iterator<_Iterator>& __x)
  2567.     { return reverse_iterator<_Iterator>(__x.base() - __n); }
  2568.  
  2569.  
  2570.  
  2571.   template<typename _IteratorL, typename _IteratorR>
  2572.     inline bool
  2573.     operator==(const reverse_iterator<_IteratorL>& __x,
  2574.         const reverse_iterator<_IteratorR>& __y)
  2575.     { return __x.base() == __y.base(); }
  2576.  
  2577.   template<typename _IteratorL, typename _IteratorR>
  2578.     inline bool
  2579.     operator<(const reverse_iterator<_IteratorL>& __x,
  2580.        const reverse_iterator<_IteratorR>& __y)
  2581.     { return __y.base() < __x.base(); }
  2582.  
  2583.   template<typename _IteratorL, typename _IteratorR>
  2584.     inline bool
  2585.     operator!=(const reverse_iterator<_IteratorL>& __x,
  2586.         const reverse_iterator<_IteratorR>& __y)
  2587.     { return !(__x == __y); }
  2588.  
  2589.   template<typename _IteratorL, typename _IteratorR>
  2590.     inline bool
  2591.     operator>(const reverse_iterator<_IteratorL>& __x,
  2592.        const reverse_iterator<_IteratorR>& __y)
  2593.     { return __y < __x; }
  2594.  
  2595.   template<typename _IteratorL, typename _IteratorR>
  2596.     inline bool
  2597.     operator<=(const reverse_iterator<_IteratorL>& __x,
  2598.         const reverse_iterator<_IteratorR>& __y)
  2599.     { return !(__y < __x); }
  2600.  
  2601.   template<typename _IteratorL, typename _IteratorR>
  2602.     inline bool
  2603.     operator>=(const reverse_iterator<_IteratorL>& __x,
  2604.         const reverse_iterator<_IteratorR>& __y)
  2605.     { return !(__x < __y); }
  2606.  
  2607.   template<typename _IteratorL, typename _IteratorR>
  2608.  
  2609.  
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.     inline typename reverse_iterator<_IteratorL>::difference_type
  2616.     operator-(const reverse_iterator<_IteratorL>& __x,
  2617.        const reverse_iterator<_IteratorR>& __y)
  2618.  
  2619.     { return __y.base() - __x.base(); }
  2620. # 414 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2621.   template<typename _Container>
  2622.     class back_insert_iterator
  2623.     : public iterator<output_iterator_tag, void, void, void, void>
  2624.     {
  2625.     protected:
  2626.       _Container* container;
  2627.  
  2628.     public:
  2629.  
  2630.       typedef _Container container_type;
  2631.  
  2632.  
  2633.       explicit
  2634.       back_insert_iterator(_Container& __x) : container(&__x) { }
  2635. # 441 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2636.       back_insert_iterator&
  2637.       operator=(typename _Container::const_reference __value)
  2638.       {
  2639.  container->push_back(__value);
  2640.  return *this;
  2641.       }
  2642. # 464 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2643.       back_insert_iterator&
  2644.       operator*()
  2645.       { return *this; }
  2646.  
  2647.  
  2648.       back_insert_iterator&
  2649.       operator++()
  2650.       { return *this; }
  2651.  
  2652.  
  2653.       back_insert_iterator
  2654.       operator++(int)
  2655.       { return *this; }
  2656.     };
  2657. # 490 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2658.   template<typename _Container>
  2659.     inline back_insert_iterator<_Container>
  2660.     back_inserter(_Container& __x)
  2661.     { return back_insert_iterator<_Container>(__x); }
  2662. # 505 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2663.   template<typename _Container>
  2664.     class front_insert_iterator
  2665.     : public iterator<output_iterator_tag, void, void, void, void>
  2666.     {
  2667.     protected:
  2668.       _Container* container;
  2669.  
  2670.     public:
  2671.  
  2672.       typedef _Container container_type;
  2673.  
  2674.  
  2675.       explicit front_insert_iterator(_Container& __x) : container(&__x) { }
  2676. # 531 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2677.       front_insert_iterator&
  2678.       operator=(typename _Container::const_reference __value)
  2679.       {
  2680.  container->push_front(__value);
  2681.  return *this;
  2682.       }
  2683. # 554 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2684.       front_insert_iterator&
  2685.       operator*()
  2686.       { return *this; }
  2687.  
  2688.  
  2689.       front_insert_iterator&
  2690.       operator++()
  2691.       { return *this; }
  2692.  
  2693.  
  2694.       front_insert_iterator
  2695.       operator++(int)
  2696.       { return *this; }
  2697.     };
  2698. # 580 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2699.   template<typename _Container>
  2700.     inline front_insert_iterator<_Container>
  2701.     front_inserter(_Container& __x)
  2702.     { return front_insert_iterator<_Container>(__x); }
  2703. # 599 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2704.   template<typename _Container>
  2705.     class insert_iterator
  2706.     : public iterator<output_iterator_tag, void, void, void, void>
  2707.     {
  2708.     protected:
  2709.       _Container* container;
  2710.       typename _Container::iterator iter;
  2711.  
  2712.     public:
  2713.  
  2714.       typedef _Container container_type;
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.       insert_iterator(_Container& __x, typename _Container::iterator __i)
  2721.       : container(&__x), iter(__i) {}
  2722. # 642 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2723.       insert_iterator&
  2724.       operator=(typename _Container::const_reference __value)
  2725.       {
  2726.  iter = container->insert(iter, __value);
  2727.  ++iter;
  2728.  return *this;
  2729.       }
  2730. # 668 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2731.       insert_iterator&
  2732.       operator*()
  2733.       { return *this; }
  2734.  
  2735.  
  2736.       insert_iterator&
  2737.       operator++()
  2738.       { return *this; }
  2739.  
  2740.  
  2741.       insert_iterator&
  2742.       operator++(int)
  2743.       { return *this; }
  2744.     };
  2745. # 694 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2746.   template<typename _Container, typename _Iterator>
  2747.     inline insert_iterator<_Container>
  2748.     inserter(_Container& __x, _Iterator __i)
  2749.     {
  2750.       return insert_iterator<_Container>(__x,
  2751.       typename _Container::iterator(__i));
  2752.     }
  2753.  
  2754.  
  2755.  
  2756.  
  2757. }
  2758.  
  2759. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  2760. {
  2761.  
  2762. # 718 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2763.   using std::iterator_traits;
  2764.   using std::iterator;
  2765.   template<typename _Iterator, typename _Container>
  2766.     class __normal_iterator
  2767.     {
  2768.     protected:
  2769.       _Iterator _M_current;
  2770.  
  2771.       typedef iterator_traits<_Iterator> __traits_type;
  2772.  
  2773.     public:
  2774.       typedef _Iterator iterator_type;
  2775.       typedef typename __traits_type::iterator_category iterator_category;
  2776.       typedef typename __traits_type::value_type value_type;
  2777.       typedef typename __traits_type::difference_type difference_type;
  2778.       typedef typename __traits_type::reference reference;
  2779.       typedef typename __traits_type::pointer pointer;
  2780.  
  2781.       __normal_iterator()
  2782.       : _M_current(_Iterator()) { }
  2783.  
  2784.       explicit
  2785.       __normal_iterator(const _Iterator& __i)
  2786.       : _M_current(__i) { }
  2787.  
  2788.  
  2789.       template<typename _Iter>
  2790.         __normal_iterator(const __normal_iterator<_Iter,
  2791.      typename __enable_if<
  2792.               (std::__are_same<_Iter, typename _Container::pointer>::__value),
  2793.         _Container>::__type>& __i)
  2794.         : _M_current(__i.base()) { }
  2795.  
  2796.  
  2797.       reference
  2798.       operator*() const
  2799.       { return *_M_current; }
  2800.  
  2801.       pointer
  2802.       operator->() const
  2803.       { return _M_current; }
  2804.  
  2805.       __normal_iterator&
  2806.       operator++()
  2807.       {
  2808.  ++_M_current;
  2809.  return *this;
  2810.       }
  2811.  
  2812.       __normal_iterator
  2813.       operator++(int)
  2814.       { return __normal_iterator(_M_current++); }
  2815.  
  2816.  
  2817.       __normal_iterator&
  2818.       operator--()
  2819.       {
  2820.  --_M_current;
  2821.  return *this;
  2822.       }
  2823.  
  2824.       __normal_iterator
  2825.       operator--(int)
  2826.       { return __normal_iterator(_M_current--); }
  2827.  
  2828.  
  2829.       reference
  2830.       operator[](difference_type __n) const
  2831.       { return _M_current[__n]; }
  2832.  
  2833.       __normal_iterator&
  2834.       operator+=(difference_type __n)
  2835.       { _M_current += __n; return *this; }
  2836.  
  2837.       __normal_iterator
  2838.       operator+(difference_type __n) const
  2839.       { return __normal_iterator(_M_current + __n); }
  2840.  
  2841.       __normal_iterator&
  2842.       operator-=(difference_type __n)
  2843.       { _M_current -= __n; return *this; }
  2844.  
  2845.       __normal_iterator
  2846.       operator-(difference_type __n) const
  2847.       { return __normal_iterator(_M_current - __n); }
  2848.  
  2849.       const _Iterator&
  2850.       base() const
  2851.       { return _M_current; }
  2852.     };
  2853. # 818 "/usr/include/c++/5/bits/stl_iterator.h" 3
  2854.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2855.     inline bool
  2856.     operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2857.         const __normal_iterator<_IteratorR, _Container>& __rhs)
  2858.    
  2859.     { return __lhs.base() == __rhs.base(); }
  2860.  
  2861.   template<typename _Iterator, typename _Container>
  2862.     inline bool
  2863.     operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
  2864.         const __normal_iterator<_Iterator, _Container>& __rhs)
  2865.    
  2866.     { return __lhs.base() == __rhs.base(); }
  2867.  
  2868.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2869.     inline bool
  2870.     operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2871.         const __normal_iterator<_IteratorR, _Container>& __rhs)
  2872.    
  2873.     { return __lhs.base() != __rhs.base(); }
  2874.  
  2875.   template<typename _Iterator, typename _Container>
  2876.     inline bool
  2877.     operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
  2878.         const __normal_iterator<_Iterator, _Container>& __rhs)
  2879.    
  2880.     { return __lhs.base() != __rhs.base(); }
  2881.  
  2882.  
  2883.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2884.     inline bool
  2885.     operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2886.        const __normal_iterator<_IteratorR, _Container>& __rhs)
  2887.    
  2888.     { return __lhs.base() < __rhs.base(); }
  2889.  
  2890.   template<typename _Iterator, typename _Container>
  2891.     inline bool
  2892.     operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
  2893.        const __normal_iterator<_Iterator, _Container>& __rhs)
  2894.    
  2895.     { return __lhs.base() < __rhs.base(); }
  2896.  
  2897.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2898.     inline bool
  2899.     operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2900.        const __normal_iterator<_IteratorR, _Container>& __rhs)
  2901.    
  2902.     { return __lhs.base() > __rhs.base(); }
  2903.  
  2904.   template<typename _Iterator, typename _Container>
  2905.     inline bool
  2906.     operator>(const __normal_iterator<_Iterator, _Container>& __lhs,
  2907.        const __normal_iterator<_Iterator, _Container>& __rhs)
  2908.    
  2909.     { return __lhs.base() > __rhs.base(); }
  2910.  
  2911.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2912.     inline bool
  2913.     operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2914.         const __normal_iterator<_IteratorR, _Container>& __rhs)
  2915.    
  2916.     { return __lhs.base() <= __rhs.base(); }
  2917.  
  2918.   template<typename _Iterator, typename _Container>
  2919.     inline bool
  2920.     operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,
  2921.         const __normal_iterator<_Iterator, _Container>& __rhs)
  2922.    
  2923.     { return __lhs.base() <= __rhs.base(); }
  2924.  
  2925.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2926.     inline bool
  2927.     operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2928.         const __normal_iterator<_IteratorR, _Container>& __rhs)
  2929.    
  2930.     { return __lhs.base() >= __rhs.base(); }
  2931.  
  2932.   template<typename _Iterator, typename _Container>
  2933.     inline bool
  2934.     operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,
  2935.         const __normal_iterator<_Iterator, _Container>& __rhs)
  2936.    
  2937.     { return __lhs.base() >= __rhs.base(); }
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.   template<typename _IteratorL, typename _IteratorR, typename _Container>
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951.     inline typename __normal_iterator<_IteratorL, _Container>::difference_type
  2952.     operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
  2953.        const __normal_iterator<_IteratorR, _Container>& __rhs)
  2954.  
  2955.     { return __lhs.base() - __rhs.base(); }
  2956.  
  2957.   template<typename _Iterator, typename _Container>
  2958.     inline typename __normal_iterator<_Iterator, _Container>::difference_type
  2959.     operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
  2960.        const __normal_iterator<_Iterator, _Container>& __rhs)
  2961.    
  2962.     { return __lhs.base() - __rhs.base(); }
  2963.  
  2964.   template<typename _Iterator, typename _Container>
  2965.     inline __normal_iterator<_Iterator, _Container>
  2966.     operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
  2967.        __n, const __normal_iterator<_Iterator, _Container>& __i)
  2968.    
  2969.     { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
  2970.  
  2971.  
  2972. }
  2973. # 68 "/usr/include/c++/5/bits/stl_algobase.h" 2 3
  2974.  
  2975.  
  2976.  
  2977. # 1 "/usr/include/c++/5/bits/predefined_ops.h" 1 3
  2978. # 33 "/usr/include/c++/5/bits/predefined_ops.h" 3
  2979. namespace __gnu_cxx
  2980. {
  2981. namespace __ops
  2982. {
  2983.   struct _Iter_less_iter
  2984.   {
  2985.     template<typename _Iterator1, typename _Iterator2>
  2986.      
  2987.       bool
  2988.       operator()(_Iterator1 __it1, _Iterator2 __it2) const
  2989.       { return *__it1 < *__it2; }
  2990.   };
  2991.  
  2992.   inline _Iter_less_iter
  2993.   __iter_less_iter()
  2994.   { return _Iter_less_iter(); }
  2995.  
  2996.   struct _Iter_less_val
  2997.   {
  2998.     template<typename _Iterator, typename _Value>
  2999.       bool
  3000.       operator()(_Iterator __it, _Value& __val) const
  3001.       { return *__it < __val; }
  3002.     };
  3003.  
  3004.   inline _Iter_less_val
  3005.   __iter_less_val()
  3006.   { return _Iter_less_val(); }
  3007.  
  3008.   inline _Iter_less_val
  3009.   __iter_comp_val(_Iter_less_iter)
  3010.   { return _Iter_less_val(); }
  3011.  
  3012.   struct _Val_less_iter
  3013.   {
  3014.     template<typename _Value, typename _Iterator>
  3015.       bool
  3016.       operator()(_Value& __val, _Iterator __it) const
  3017.       { return __val < *__it; }
  3018.     };
  3019.  
  3020.   inline _Val_less_iter
  3021.   __val_less_iter()
  3022.   { return _Val_less_iter(); }
  3023.  
  3024.   inline _Val_less_iter
  3025.   __val_comp_iter(_Iter_less_iter)
  3026.   { return _Val_less_iter(); }
  3027.  
  3028.   struct _Iter_equal_to_iter
  3029.   {
  3030.     template<typename _Iterator1, typename _Iterator2>
  3031.       bool
  3032.       operator()(_Iterator1 __it1, _Iterator2 __it2) const
  3033.       { return *__it1 == *__it2; }
  3034.     };
  3035.  
  3036.   inline _Iter_equal_to_iter
  3037.   __iter_equal_to_iter()
  3038.   { return _Iter_equal_to_iter(); }
  3039.  
  3040.   struct _Iter_equal_to_val
  3041.   {
  3042.     template<typename _Iterator, typename _Value>
  3043.       bool
  3044.       operator()(_Iterator __it, _Value& __val) const
  3045.       { return *__it == __val; }
  3046.     };
  3047.  
  3048.   inline _Iter_equal_to_val
  3049.   __iter_equal_to_val()
  3050.   { return _Iter_equal_to_val(); }
  3051.  
  3052.   inline _Iter_equal_to_val
  3053.   __iter_comp_val(_Iter_equal_to_iter)
  3054.   { return _Iter_equal_to_val(); }
  3055.  
  3056.   template<typename _Compare>
  3057.     struct _Iter_comp_iter
  3058.     {
  3059.       _Compare _M_comp;
  3060.      
  3061.       _Iter_comp_iter(_Compare __comp)
  3062.  : _M_comp(__comp)
  3063.       { }
  3064.  
  3065.       template<typename _Iterator1, typename _Iterator2>
  3066.        
  3067.         bool
  3068.         operator()(_Iterator1 __it1, _Iterator2 __it2)
  3069.         { return bool(_M_comp(*__it1, *__it2)); }
  3070.     };
  3071.  
  3072.   template<typename _Compare>
  3073.    
  3074.     inline _Iter_comp_iter<_Compare>
  3075.     __iter_comp_iter(_Compare __comp)
  3076.     { return _Iter_comp_iter<_Compare>(__comp); }
  3077.  
  3078.   template<typename _Compare>
  3079.     struct _Iter_comp_val
  3080.     {
  3081.       _Compare _M_comp;
  3082.  
  3083.       _Iter_comp_val(_Compare __comp)
  3084.  : _M_comp(__comp)
  3085.       { }
  3086.  
  3087.       template<typename _Iterator, typename _Value>
  3088.  bool
  3089.  operator()(_Iterator __it, _Value& __val)
  3090.  { return bool(_M_comp(*__it, __val)); }
  3091.     };
  3092.  
  3093.   template<typename _Compare>
  3094.    inline _Iter_comp_val<_Compare>
  3095.     __iter_comp_val(_Compare __comp)
  3096.     { return _Iter_comp_val<_Compare>(__comp); }
  3097.  
  3098.   template<typename _Compare>
  3099.     inline _Iter_comp_val<_Compare>
  3100.     __iter_comp_val(_Iter_comp_iter<_Compare> __comp)
  3101.     { return _Iter_comp_val<_Compare>(__comp._M_comp); }
  3102.  
  3103.   template<typename _Compare>
  3104.     struct _Val_comp_iter
  3105.     {
  3106.       _Compare _M_comp;
  3107.  
  3108.       _Val_comp_iter(_Compare __comp)
  3109.  : _M_comp(__comp)
  3110.       { }
  3111.  
  3112.       template<typename _Value, typename _Iterator>
  3113.  bool
  3114.  operator()(_Value& __val, _Iterator __it)
  3115.  { return bool(_M_comp(__val, *__it)); }
  3116.     };
  3117.  
  3118.   template<typename _Compare>
  3119.     inline _Val_comp_iter<_Compare>
  3120.     __val_comp_iter(_Compare __comp)
  3121.     { return _Val_comp_iter<_Compare>(__comp); }
  3122.  
  3123.   template<typename _Compare>
  3124.     inline _Val_comp_iter<_Compare>
  3125.     __val_comp_iter(_Iter_comp_iter<_Compare> __comp)
  3126.     { return _Val_comp_iter<_Compare>(__comp._M_comp); }
  3127.  
  3128.   template<typename _Value>
  3129.     struct _Iter_equals_val
  3130.     {
  3131.       _Value& _M_value;
  3132.  
  3133.       _Iter_equals_val(_Value& __value)
  3134.  : _M_value(__value)
  3135.       { }
  3136.  
  3137.       template<typename _Iterator>
  3138.  bool
  3139.  operator()(_Iterator __it)
  3140.  { return *__it == _M_value; }
  3141.     };
  3142.  
  3143.   template<typename _Value>
  3144.     inline _Iter_equals_val<_Value>
  3145.     __iter_equals_val(_Value& __val)
  3146.     { return _Iter_equals_val<_Value>(__val); }
  3147.  
  3148.   template<typename _Iterator1>
  3149.     struct _Iter_equals_iter
  3150.     {
  3151.       typename std::iterator_traits<_Iterator1>::reference _M_ref;
  3152.  
  3153.       _Iter_equals_iter(_Iterator1 __it1)
  3154.  : _M_ref(*__it1)
  3155.       { }
  3156.  
  3157.       template<typename _Iterator2>
  3158.  bool
  3159.  operator()(_Iterator2 __it2)
  3160.  { return *__it2 == _M_ref; }
  3161.     };
  3162.  
  3163.   template<typename _Iterator>
  3164.     inline _Iter_equals_iter<_Iterator>
  3165.     __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it)
  3166.     { return _Iter_equals_iter<_Iterator>(__it); }
  3167.  
  3168.   template<typename _Predicate>
  3169.     struct _Iter_pred
  3170.     {
  3171.       _Predicate _M_pred;
  3172.  
  3173.       _Iter_pred(_Predicate __pred)
  3174.  : _M_pred(__pred)
  3175.       { }
  3176.  
  3177.       template<typename _Iterator>
  3178.  bool
  3179.  operator()(_Iterator __it)
  3180.  { return bool(_M_pred(*__it)); }
  3181.     };
  3182.  
  3183.   template<typename _Predicate>
  3184.     inline _Iter_pred<_Predicate>
  3185.     __pred_iter(_Predicate __pred)
  3186.     { return _Iter_pred<_Predicate>(__pred); }
  3187.  
  3188.   template<typename _Compare, typename _Value>
  3189.     struct _Iter_comp_to_val
  3190.     {
  3191.       _Compare _M_comp;
  3192.       _Value& _M_value;
  3193.  
  3194.       _Iter_comp_to_val(_Compare __comp, _Value& __value)
  3195.  : _M_comp(__comp), _M_value(__value)
  3196.       { }
  3197.  
  3198.       template<typename _Iterator>
  3199.  bool
  3200.  operator()(_Iterator __it)
  3201.  { return bool(_M_comp(*__it, _M_value)); }
  3202.     };
  3203.  
  3204.   template<typename _Compare, typename _Value>
  3205.     _Iter_comp_to_val<_Compare, _Value>
  3206.     __iter_comp_val(_Compare __comp, _Value &__val)
  3207.     { return _Iter_comp_to_val<_Compare, _Value>(__comp, __val); }
  3208.  
  3209.   template<typename _Compare, typename _Iterator1>
  3210.     struct _Iter_comp_to_iter
  3211.     {
  3212.       _Compare _M_comp;
  3213.       typename std::iterator_traits<_Iterator1>::reference _M_ref;
  3214.  
  3215.       _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1)
  3216.  : _M_comp(__comp), _M_ref(*__it1)
  3217.       { }
  3218.  
  3219.       template<typename _Iterator2>
  3220.  bool
  3221.  operator()(_Iterator2 __it2)
  3222.  { return bool(_M_comp(*__it2, _M_ref)); }
  3223.     };
  3224.  
  3225.   template<typename _Compare, typename _Iterator>
  3226.     inline _Iter_comp_to_iter<_Compare, _Iterator>
  3227.     __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it)
  3228.     { return _Iter_comp_to_iter<_Compare, _Iterator>(__comp._M_comp, __it); }
  3229.  
  3230.   template<typename _Predicate>
  3231.     struct _Iter_negate
  3232.     {
  3233.       _Predicate _M_pred;
  3234.  
  3235.       _Iter_negate(_Predicate __pred)
  3236.  : _M_pred(__pred)
  3237.       { }
  3238.  
  3239.       template<typename _Iterator>
  3240.  bool
  3241.  operator()(_Iterator __it)
  3242.  { return !bool(_M_pred(*__it)); }
  3243.     };
  3244.  
  3245.   template<typename _Predicate>
  3246.     inline _Iter_negate<_Predicate>
  3247.     __negate(_Iter_pred<_Predicate> __pred)
  3248.     { return _Iter_negate<_Predicate>(__pred._M_pred); }
  3249.  
  3250. }
  3251. }
  3252. # 72 "/usr/include/c++/5/bits/stl_algobase.h" 2 3
  3253.  
  3254. namespace std __attribute__ ((__visibility__ ("default")))
  3255. {
  3256.  
  3257.  
  3258.  
  3259.  
  3260.  
  3261.  
  3262.   template<bool _BoolType>
  3263.     struct __iter_swap
  3264.     {
  3265.       template<typename _ForwardIterator1, typename _ForwardIterator2>
  3266.         static void
  3267.         iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
  3268.         {
  3269.           typedef typename iterator_traits<_ForwardIterator1>::value_type
  3270.             _ValueType1;
  3271.           _ValueType1 __tmp = (*__a);
  3272.           *__a = (*__b);
  3273.           *__b = (__tmp);
  3274.  }
  3275.     };
  3276.  
  3277.   template<>
  3278.     struct __iter_swap<true>
  3279.     {
  3280.       template<typename _ForwardIterator1, typename _ForwardIterator2>
  3281.         static void
  3282.         iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
  3283.         {
  3284.           swap(*__a, *__b);
  3285.         }
  3286.     };
  3287. # 118 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3288.   template<typename _ForwardIterator1, typename _ForwardIterator2>
  3289.     inline void
  3290.     iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
  3291.     {
  3292.  
  3293.      
  3294.  
  3295.      
  3296.  
  3297.  
  3298.  
  3299.       typedef typename iterator_traits<_ForwardIterator1>::value_type
  3300.  _ValueType1;
  3301.       typedef typename iterator_traits<_ForwardIterator2>::value_type
  3302.  _ValueType2;
  3303.  
  3304.      
  3305.  
  3306.      
  3307.  
  3308.  
  3309.       typedef typename iterator_traits<_ForwardIterator1>::reference
  3310.  _ReferenceType1;
  3311.       typedef typename iterator_traits<_ForwardIterator2>::reference
  3312.  _ReferenceType2;
  3313.       std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value
  3314.  && __are_same<_ValueType1&, _ReferenceType1>::__value
  3315.  && __are_same<_ValueType2&, _ReferenceType2>::__value>::
  3316.  iter_swap(__a, __b);
  3317.  
  3318.  
  3319.  
  3320.     }
  3321. # 164 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3322.   template<typename _ForwardIterator1, typename _ForwardIterator2>
  3323.     _ForwardIterator2
  3324.     swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
  3325.   _ForwardIterator2 __first2)
  3326.     {
  3327.  
  3328.      
  3329.  
  3330.      
  3331.  
  3332.       ;
  3333.  
  3334.       for (; __first1 != __last1; ++__first1, ++__first2)
  3335.  std::iter_swap(__first1, __first2);
  3336.       return __first2;
  3337.     }
  3338. # 192 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3339.   template<typename _Tp>
  3340.    
  3341.     inline const _Tp&
  3342.     min(const _Tp& __a, const _Tp& __b)
  3343.     {
  3344.  
  3345.      
  3346.  
  3347.       if (__b < __a)
  3348.  return __b;
  3349.       return __a;
  3350.     }
  3351. # 216 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3352.   template<typename _Tp>
  3353.    
  3354.     inline const _Tp&
  3355.     max(const _Tp& __a, const _Tp& __b)
  3356.     {
  3357.  
  3358.      
  3359.  
  3360.       if (__a < __b)
  3361.  return __b;
  3362.       return __a;
  3363.     }
  3364. # 240 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3365.   template<typename _Tp, typename _Compare>
  3366.    
  3367.     inline const _Tp&
  3368.     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
  3369.     {
  3370.  
  3371.       if (__comp(__b, __a))
  3372.  return __b;
  3373.       return __a;
  3374.     }
  3375. # 262 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3376.   template<typename _Tp, typename _Compare>
  3377.    
  3378.     inline const _Tp&
  3379.     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
  3380.     {
  3381.  
  3382.       if (__comp(__a, __b))
  3383.  return __b;
  3384.       return __a;
  3385.     }
  3386.  
  3387.  
  3388.  
  3389.   template<typename _Iterator>
  3390.     struct _Niter_base
  3391.     : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value>
  3392.     { };
  3393.  
  3394.   template<typename _Iterator>
  3395.     inline typename _Niter_base<_Iterator>::iterator_type
  3396.     __niter_base(_Iterator __it)
  3397.     { return std::_Niter_base<_Iterator>::_S_base(__it); }
  3398.  
  3399.  
  3400.   template<typename _Iterator>
  3401.     struct _Miter_base
  3402.     : _Iter_base<_Iterator, __is_move_iterator<_Iterator>::__value>
  3403.     { };
  3404.  
  3405.   template<typename _Iterator>
  3406.     inline typename _Miter_base<_Iterator>::iterator_type
  3407.     __miter_base(_Iterator __it)
  3408.     { return std::_Miter_base<_Iterator>::_S_base(__it); }
  3409.  
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415.  
  3416.   template<bool, bool, typename>
  3417.     struct __copy_move
  3418.     {
  3419.       template<typename _II, typename _OI>
  3420.         static _OI
  3421.         __copy_m(_II __first, _II __last, _OI __result)
  3422.         {
  3423.    for (; __first != __last; ++__result, ++__first)
  3424.      *__result = *__first;
  3425.    return __result;
  3426.  }
  3427.     };
  3428. # 330 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3429.   template<>
  3430.     struct __copy_move<false, false, random_access_iterator_tag>
  3431.     {
  3432.       template<typename _II, typename _OI>
  3433.         static _OI
  3434.         __copy_m(_II __first, _II __last, _OI __result)
  3435.         {
  3436.    typedef typename iterator_traits<_II>::difference_type _Distance;
  3437.    for(_Distance __n = __last - __first; __n > 0; --__n)
  3438.      {
  3439.        *__result = *__first;
  3440.        ++__first;
  3441.        ++__result;
  3442.      }
  3443.    return __result;
  3444.  }
  3445.     };
  3446. # 368 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3447.   template<bool _IsMove>
  3448.     struct __copy_move<_IsMove, true, random_access_iterator_tag>
  3449.     {
  3450.       template<typename _Tp>
  3451.         static _Tp*
  3452.         __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
  3453.         {
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.    const ptrdiff_t _Num = __last - __first;
  3462.    if (_Num)
  3463.      __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
  3464.    return __result + _Num;
  3465.  }
  3466.     };
  3467.  
  3468.   template<bool _IsMove, typename _II, typename _OI>
  3469.     inline _OI
  3470.     __copy_move_a(_II __first, _II __last, _OI __result)
  3471.     {
  3472.       typedef typename iterator_traits<_II>::value_type _ValueTypeI;
  3473.       typedef typename iterator_traits<_OI>::value_type _ValueTypeO;
  3474.       typedef typename iterator_traits<_II>::iterator_category _Category;
  3475.       const bool __simple = (__is_trivial(_ValueTypeI)
  3476.                       && __is_pointer<_II>::__value
  3477.                       && __is_pointer<_OI>::__value
  3478.         && __are_same<_ValueTypeI, _ValueTypeO>::__value);
  3479.  
  3480.       return std::__copy_move<_IsMove, __simple,
  3481.                        _Category>::__copy_m(__first, __last, __result);
  3482.     }
  3483.  
  3484.  
  3485.  
  3486.   template<typename _CharT>
  3487.     struct char_traits;
  3488.  
  3489.   template<typename _CharT, typename _Traits>
  3490.     class istreambuf_iterator;
  3491.  
  3492.   template<typename _CharT, typename _Traits>
  3493.     class ostreambuf_iterator;
  3494.  
  3495.   template<bool _IsMove, typename _CharT>
  3496.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  3497.       ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
  3498.     __copy_move_a2(_CharT*, _CharT*,
  3499.      ostreambuf_iterator<_CharT, char_traits<_CharT> >);
  3500.  
  3501.   template<bool _IsMove, typename _CharT>
  3502.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  3503.       ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
  3504.     __copy_move_a2(const _CharT*, const _CharT*,
  3505.      ostreambuf_iterator<_CharT, char_traits<_CharT> >);
  3506.  
  3507.   template<bool _IsMove, typename _CharT>
  3508.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  3509.         _CharT*>::__type
  3510.     __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >,
  3511.      istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);
  3512.  
  3513.   template<bool _IsMove, typename _II, typename _OI>
  3514.     inline _OI
  3515.     __copy_move_a2(_II __first, _II __last, _OI __result)
  3516.     {
  3517.       return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first),
  3518.           std::__niter_base(__last),
  3519.           std::__niter_base(__result)));
  3520.     }
  3521. # 460 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3522.   template<typename _II, typename _OI>
  3523.     inline _OI
  3524.     copy(_II __first, _II __last, _OI __result)
  3525.     {
  3526.  
  3527.      
  3528.      
  3529.  
  3530.       ;
  3531.  
  3532.       return (std::__copy_move_a2<__is_move_iterator<_II>::__value>
  3533.        (std::__miter_base(__first), std::__miter_base(__last),
  3534.         __result));
  3535.     }
  3536. # 512 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3537.   template<bool, bool, typename>
  3538.     struct __copy_move_backward
  3539.     {
  3540.       template<typename _BI1, typename _BI2>
  3541.         static _BI2
  3542.         __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
  3543.         {
  3544.    while (__first != __last)
  3545.      *--__result = *--__last;
  3546.    return __result;
  3547.  }
  3548.     };
  3549. # 540 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3550.   template<>
  3551.     struct __copy_move_backward<false, false, random_access_iterator_tag>
  3552.     {
  3553.       template<typename _BI1, typename _BI2>
  3554.         static _BI2
  3555.         __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
  3556.         {
  3557.    typename iterator_traits<_BI1>::difference_type __n;
  3558.    for (__n = __last - __first; __n > 0; --__n)
  3559.      *--__result = *--__last;
  3560.    return __result;
  3561.  }
  3562.     };
  3563. # 570 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3564.   template<bool _IsMove>
  3565.     struct __copy_move_backward<_IsMove, true, random_access_iterator_tag>
  3566.     {
  3567.       template<typename _Tp>
  3568.         static _Tp*
  3569.         __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
  3570.         {
  3571.  
  3572.  
  3573.  
  3574.  
  3575.  
  3576.  
  3577.  
  3578.    const ptrdiff_t _Num = __last - __first;
  3579.    if (_Num)
  3580.      __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
  3581.    return __result - _Num;
  3582.  }
  3583.     };
  3584.  
  3585.   template<bool _IsMove, typename _BI1, typename _BI2>
  3586.     inline _BI2
  3587.     __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result)
  3588.     {
  3589.       typedef typename iterator_traits<_BI1>::value_type _ValueType1;
  3590.       typedef typename iterator_traits<_BI2>::value_type _ValueType2;
  3591.       typedef typename iterator_traits<_BI1>::iterator_category _Category;
  3592.       const bool __simple = (__is_trivial(_ValueType1)
  3593.                       && __is_pointer<_BI1>::__value
  3594.                       && __is_pointer<_BI2>::__value
  3595.         && __are_same<_ValueType1, _ValueType2>::__value);
  3596.  
  3597.       return std::__copy_move_backward<_IsMove, __simple,
  3598.                                 _Category>::__copy_move_b(__first,
  3599.          __last,
  3600.          __result);
  3601.     }
  3602.  
  3603.   template<bool _IsMove, typename _BI1, typename _BI2>
  3604.     inline _BI2
  3605.     __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result)
  3606.     {
  3607.       return _BI2(std::__copy_move_backward_a<_IsMove>
  3608.     (std::__niter_base(__first), std::__niter_base(__last),
  3609.      std::__niter_base(__result)));
  3610.     }
  3611. # 636 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3612.   template<typename _BI1, typename _BI2>
  3613.     inline _BI2
  3614.     copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
  3615.     {
  3616.  
  3617.      
  3618.      
  3619.      
  3620.  
  3621.  
  3622.       ;
  3623.  
  3624.       return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value>
  3625.        (std::__miter_base(__first), std::__miter_base(__last),
  3626.         __result));
  3627.     }
  3628. # 694 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3629.   template<typename _ForwardIterator, typename _Tp>
  3630.     inline typename
  3631.     __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type
  3632.     __fill_a(_ForwardIterator __first, _ForwardIterator __last,
  3633.        const _Tp& __value)
  3634.     {
  3635.       for (; __first != __last; ++__first)
  3636.  *__first = __value;
  3637.     }
  3638.  
  3639.   template<typename _ForwardIterator, typename _Tp>
  3640.     inline typename
  3641.     __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type
  3642.     __fill_a(_ForwardIterator __first, _ForwardIterator __last,
  3643.       const _Tp& __value)
  3644.     {
  3645.       const _Tp __tmp = __value;
  3646.       for (; __first != __last; ++__first)
  3647.  *__first = __tmp;
  3648.     }
  3649.  
  3650.  
  3651.   template<typename _Tp>
  3652.     inline typename
  3653.     __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type
  3654.     __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c)
  3655.     {
  3656.       const _Tp __tmp = __c;
  3657.       if (const size_t __len = __last - __first)
  3658.  __builtin_memset(__first, static_cast<unsigned char>(__tmp), __len);
  3659.     }
  3660. # 738 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3661.   template<typename _ForwardIterator, typename _Tp>
  3662.     inline void
  3663.     fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)
  3664.     {
  3665.  
  3666.      
  3667.  
  3668.       ;
  3669.  
  3670.       std::__fill_a(std::__niter_base(__first), std::__niter_base(__last),
  3671.       __value);
  3672.     }
  3673.  
  3674.   template<typename _OutputIterator, typename _Size, typename _Tp>
  3675.     inline typename
  3676.     __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type
  3677.     __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
  3678.     {
  3679.       for (__decltype(__n + 0) __niter = __n;
  3680.     __niter > 0; --__niter, ++__first)
  3681.  *__first = __value;
  3682.       return __first;
  3683.     }
  3684.  
  3685.   template<typename _OutputIterator, typename _Size, typename _Tp>
  3686.     inline typename
  3687.     __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type
  3688.     __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
  3689.     {
  3690.       const _Tp __tmp = __value;
  3691.       for (__decltype(__n + 0) __niter = __n;
  3692.     __niter > 0; --__niter, ++__first)
  3693.  *__first = __tmp;
  3694.       return __first;
  3695.     }
  3696.  
  3697.   template<typename _Size, typename _Tp>
  3698.     inline typename
  3699.     __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type
  3700.     __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c)
  3701.     {
  3702.       std::__fill_a(__first, __first + __n, __c);
  3703.       return __first + __n;
  3704.     }
  3705. # 798 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3706.   template<typename _OI, typename _Size, typename _Tp>
  3707.     inline _OI
  3708.     fill_n(_OI __first, _Size __n, const _Tp& __value)
  3709.     {
  3710.  
  3711.      
  3712.  
  3713.       return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value));
  3714.     }
  3715.  
  3716.   template<bool _BoolType>
  3717.     struct __equal
  3718.     {
  3719.       template<typename _II1, typename _II2>
  3720.         static bool
  3721.         equal(_II1 __first1, _II1 __last1, _II2 __first2)
  3722.         {
  3723.    for (; __first1 != __last1; ++__first1, ++__first2)
  3724.      if (!(*__first1 == *__first2))
  3725.        return false;
  3726.    return true;
  3727.  }
  3728.     };
  3729.  
  3730.   template<>
  3731.     struct __equal<true>
  3732.     {
  3733.       template<typename _Tp>
  3734.         static bool
  3735.         equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
  3736.         {
  3737.    if (const size_t __len = (__last1 - __first1))
  3738.      return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len);
  3739.    return true;
  3740.  }
  3741.     };
  3742.  
  3743.   template<typename _II1, typename _II2>
  3744.     inline bool
  3745.     __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2)
  3746.     {
  3747.       typedef typename iterator_traits<_II1>::value_type _ValueType1;
  3748.       typedef typename iterator_traits<_II2>::value_type _ValueType2;
  3749.       const bool __simple = ((__is_integer<_ValueType1>::__value
  3750.          || __is_pointer<_ValueType1>::__value)
  3751.                       && __is_pointer<_II1>::__value
  3752.                       && __is_pointer<_II2>::__value
  3753.         && __are_same<_ValueType1, _ValueType2>::__value);
  3754.  
  3755.       return std::__equal<__simple>::equal(__first1, __last1, __first2);
  3756.     }
  3757.  
  3758.   template<typename, typename>
  3759.     struct __lc_rai
  3760.     {
  3761.       template<typename _II1, typename _II2>
  3762.         static _II1
  3763.         __newlast1(_II1, _II1 __last1, _II2, _II2)
  3764.         { return __last1; }
  3765.  
  3766.       template<typename _II>
  3767.         static bool
  3768.         __cnd2(_II __first, _II __last)
  3769.         { return __first != __last; }
  3770.     };
  3771.  
  3772.   template<>
  3773.     struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag>
  3774.     {
  3775.       template<typename _RAI1, typename _RAI2>
  3776.         static _RAI1
  3777.         __newlast1(_RAI1 __first1, _RAI1 __last1,
  3778.      _RAI2 __first2, _RAI2 __last2)
  3779.         {
  3780.    const typename iterator_traits<_RAI1>::difference_type
  3781.      __diff1 = __last1 - __first1;
  3782.    const typename iterator_traits<_RAI2>::difference_type
  3783.      __diff2 = __last2 - __first2;
  3784.    return __diff2 < __diff1 ? __first1 + __diff2 : __last1;
  3785.  }
  3786.  
  3787.       template<typename _RAI>
  3788.         static bool
  3789.         __cnd2(_RAI, _RAI)
  3790.         { return true; }
  3791.     };
  3792.  
  3793.   template<typename _II1, typename _II2, typename _Compare>
  3794.     bool
  3795.     __lexicographical_compare_impl(_II1 __first1, _II1 __last1,
  3796.        _II2 __first2, _II2 __last2,
  3797.        _Compare __comp)
  3798.     {
  3799.       typedef typename iterator_traits<_II1>::iterator_category _Category1;
  3800.       typedef typename iterator_traits<_II2>::iterator_category _Category2;
  3801.       typedef std::__lc_rai<_Category1, _Category2> __rai_type;
  3802.  
  3803.       __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2);
  3804.       for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
  3805.     ++__first1, ++__first2)
  3806.  {
  3807.    if (__comp(__first1, __first2))
  3808.      return true;
  3809.    if (__comp(__first2, __first1))
  3810.      return false;
  3811.  }
  3812.       return __first1 == __last1 && __first2 != __last2;
  3813.     }
  3814.  
  3815.   template<bool _BoolType>
  3816.     struct __lexicographical_compare
  3817.     {
  3818.       template<typename _II1, typename _II2>
  3819.         static bool __lc(_II1, _II1, _II2, _II2);
  3820.     };
  3821.  
  3822.   template<bool _BoolType>
  3823.     template<typename _II1, typename _II2>
  3824.       bool
  3825.       __lexicographical_compare<_BoolType>::
  3826.       __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
  3827.       {
  3828.  return std::__lexicographical_compare_impl(__first1, __last1,
  3829.          __first2, __last2,
  3830.      __gnu_cxx::__ops::__iter_less_iter());
  3831.       }
  3832.  
  3833.   template<>
  3834.     struct __lexicographical_compare<true>
  3835.     {
  3836.       template<typename _Tp, typename _Up>
  3837.         static bool
  3838.         __lc(const _Tp* __first1, const _Tp* __last1,
  3839.       const _Up* __first2, const _Up* __last2)
  3840.  {
  3841.    const size_t __len1 = __last1 - __first1;
  3842.    const size_t __len2 = __last2 - __first2;
  3843.    if (const size_t __len = std::min(__len1, __len2))
  3844.      if (int __result = __builtin_memcmp(__first1, __first2, __len))
  3845.        return __result < 0;
  3846.    return __len1 < __len2;
  3847.  }
  3848.     };
  3849.  
  3850.   template<typename _II1, typename _II2>
  3851.     inline bool
  3852.     __lexicographical_compare_aux(_II1 __first1, _II1 __last1,
  3853.       _II2 __first2, _II2 __last2)
  3854.     {
  3855.       typedef typename iterator_traits<_II1>::value_type _ValueType1;
  3856.       typedef typename iterator_traits<_II2>::value_type _ValueType2;
  3857.       const bool __simple =
  3858.  (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value
  3859.   && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed
  3860.   && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed
  3861.   && __is_pointer<_II1>::__value
  3862.   && __is_pointer<_II2>::__value);
  3863.  
  3864.       return std::__lexicographical_compare<__simple>::__lc(__first1, __last1,
  3865.            __first2, __last2);
  3866.     }
  3867.  
  3868.   template<typename _ForwardIterator, typename _Tp, typename _Compare>
  3869.     _ForwardIterator
  3870.     __lower_bound(_ForwardIterator __first, _ForwardIterator __last,
  3871.     const _Tp& __val, _Compare __comp)
  3872.     {
  3873.       typedef typename iterator_traits<_ForwardIterator>::difference_type
  3874.  _DistanceType;
  3875.  
  3876.       _DistanceType __len = std::distance(__first, __last);
  3877.  
  3878.       while (__len > 0)
  3879.  {
  3880.    _DistanceType __half = __len >> 1;
  3881.    _ForwardIterator __middle = __first;
  3882.    std::advance(__middle, __half);
  3883.    if (__comp(__middle, __val))
  3884.      {
  3885.        __first = __middle;
  3886.        ++__first;
  3887.        __len = __len - __half - 1;
  3888.      }
  3889.    else
  3890.      __len = __half;
  3891.  }
  3892.       return __first;
  3893.     }
  3894. # 998 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3895.   template<typename _ForwardIterator, typename _Tp>
  3896.     inline _ForwardIterator
  3897.     lower_bound(_ForwardIterator __first, _ForwardIterator __last,
  3898.   const _Tp& __val)
  3899.     {
  3900.  
  3901.      
  3902.      
  3903.  
  3904.       ;
  3905.  
  3906.       return std::__lower_bound(__first, __last, __val,
  3907.     __gnu_cxx::__ops::__iter_less_val());
  3908.     }
  3909.  
  3910.  
  3911.  
  3912.   inline int
  3913.   __lg(int __n)
  3914.   { return sizeof(int) * 8 - 1 - __builtin_clz(__n); }
  3915.  
  3916.   inline unsigned
  3917.   __lg(unsigned __n)
  3918.   { return sizeof(int) * 8 - 1 - __builtin_clz(__n); }
  3919.  
  3920.   inline long
  3921.   __lg(long __n)
  3922.   { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); }
  3923.  
  3924.   inline unsigned long
  3925.   __lg(unsigned long __n)
  3926.   { return sizeof(long) * 8 - 1 - __builtin_clzl(__n); }
  3927.  
  3928.   inline long long
  3929.   __lg(long long __n)
  3930.   { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); }
  3931.  
  3932.   inline unsigned long long
  3933.   __lg(unsigned long long __n)
  3934.   { return sizeof(long long) * 8 - 1 - __builtin_clzll(__n); }
  3935.  
  3936.  
  3937.  
  3938.  
  3939. # 1055 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3940.   template<typename _II1, typename _II2>
  3941.     inline bool
  3942.     equal(_II1 __first1, _II1 __last1, _II2 __first2)
  3943.     {
  3944.  
  3945.      
  3946.      
  3947.      
  3948.  
  3949.  
  3950.       ;
  3951.  
  3952.       return std::__equal_aux(std::__niter_base(__first1),
  3953.          std::__niter_base(__last1),
  3954.          std::__niter_base(__first2));
  3955.     }
  3956. # 1087 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3957.   template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
  3958.     inline bool
  3959.     equal(_IIter1 __first1, _IIter1 __last1,
  3960.    _IIter2 __first2, _BinaryPredicate __binary_pred)
  3961.     {
  3962.  
  3963.      
  3964.      
  3965.       ;
  3966.  
  3967.       for (; __first1 != __last1; ++__first1, ++__first2)
  3968.  if (!bool(__binary_pred(*__first1, *__first2)))
  3969.    return false;
  3970.       return true;
  3971.     }
  3972. # 1215 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3973.   template<typename _II1, typename _II2>
  3974.     inline bool
  3975.     lexicographical_compare(_II1 __first1, _II1 __last1,
  3976.        _II2 __first2, _II2 __last2)
  3977.     {
  3978.  
  3979.  
  3980.  
  3981.  
  3982.  
  3983.      
  3984.      
  3985.      
  3986.      
  3987.       ;
  3988.       ;
  3989.  
  3990.       return std::__lexicographical_compare_aux(std::__niter_base(__first1),
  3991.       std::__niter_base(__last1),
  3992.       std::__niter_base(__first2),
  3993.       std::__niter_base(__last2));
  3994.     }
  3995. # 1251 "/usr/include/c++/5/bits/stl_algobase.h" 3
  3996.   template<typename _II1, typename _II2, typename _Compare>
  3997.     inline bool
  3998.     lexicographical_compare(_II1 __first1, _II1 __last1,
  3999.        _II2 __first2, _II2 __last2, _Compare __comp)
  4000.     {
  4001.  
  4002.      
  4003.      
  4004.       ;
  4005.       ;
  4006.  
  4007.       return std::__lexicographical_compare_impl
  4008.  (__first1, __last1, __first2, __last2,
  4009.   __gnu_cxx::__ops::__iter_comp_iter(__comp));
  4010.     }
  4011.  
  4012.   template<typename _InputIterator1, typename _InputIterator2,
  4013.     typename _BinaryPredicate>
  4014.     pair<_InputIterator1, _InputIterator2>
  4015.     __mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
  4016.         _InputIterator2 __first2, _BinaryPredicate __binary_pred)
  4017.     {
  4018.       while (__first1 != __last1 && __binary_pred(__first1, __first2))
  4019.         {
  4020.    ++__first1;
  4021.    ++__first2;
  4022.         }
  4023.       return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
  4024.     }
  4025. # 1294 "/usr/include/c++/5/bits/stl_algobase.h" 3
  4026.   template<typename _InputIterator1, typename _InputIterator2>
  4027.     inline pair<_InputIterator1, _InputIterator2>
  4028.     mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
  4029.       _InputIterator2 __first2)
  4030.     {
  4031.  
  4032.      
  4033.      
  4034.      
  4035.  
  4036.  
  4037.       ;
  4038.  
  4039.       return std::__mismatch(__first1, __last1, __first2,
  4040.         __gnu_cxx::__ops::__iter_equal_to_iter());
  4041.     }
  4042. # 1327 "/usr/include/c++/5/bits/stl_algobase.h" 3
  4043.   template<typename _InputIterator1, typename _InputIterator2,
  4044.     typename _BinaryPredicate>
  4045.     inline pair<_InputIterator1, _InputIterator2>
  4046.     mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
  4047.       _InputIterator2 __first2, _BinaryPredicate __binary_pred)
  4048.     {
  4049.  
  4050.      
  4051.      
  4052.       ;
  4053.  
  4054.       return std::__mismatch(__first1, __last1, __first2,
  4055.  __gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
  4056.     }
  4057. # 1427 "/usr/include/c++/5/bits/stl_algobase.h" 3
  4058.  
  4059. }
  4060. # 40 "/usr/include/c++/5/bits/char_traits.h" 2 3
  4061.  
  4062. # 1 "/usr/include/c++/5/cwchar" 1 3
  4063. # 39 "/usr/include/c++/5/cwchar" 3
  4064.        
  4065. # 40 "/usr/include/c++/5/cwchar" 3
  4066.  
  4067.  
  4068.  
  4069.  
  4070. # 1 "/usr/include/wchar.h" 1 3 4
  4071. # 45 "/usr/include/c++/5/cwchar" 2 3
  4072. # 42 "/usr/include/c++/5/bits/char_traits.h" 2 3
  4073.  
  4074. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  4075. {
  4076.  
  4077. # 57 "/usr/include/c++/5/bits/char_traits.h" 3
  4078.   template<typename _CharT>
  4079.     struct _Char_types
  4080.     {
  4081.       typedef unsigned long int_type;
  4082.       typedef std::streampos pos_type;
  4083.       typedef std::streamoff off_type;
  4084.       typedef std::mbstate_t state_type;
  4085.     };
  4086. # 82 "/usr/include/c++/5/bits/char_traits.h" 3
  4087.   template<typename _CharT>
  4088.     struct char_traits
  4089.     {
  4090.       typedef _CharT char_type;
  4091.       typedef typename _Char_types<_CharT>::int_type int_type;
  4092.       typedef typename _Char_types<_CharT>::pos_type pos_type;
  4093.       typedef typename _Char_types<_CharT>::off_type off_type;
  4094.       typedef typename _Char_types<_CharT>::state_type state_type;
  4095.  
  4096.       static void
  4097.       assign(char_type& __c1, const char_type& __c2)
  4098.       { __c1 = __c2; }
  4099.  
  4100.       static bool
  4101.       eq(const char_type& __c1, const char_type& __c2)
  4102.       { return __c1 == __c2; }
  4103.  
  4104.       static bool
  4105.       lt(const char_type& __c1, const char_type& __c2)
  4106.       { return __c1 < __c2; }
  4107.  
  4108.       static int
  4109.       compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
  4110.  
  4111.       static std::size_t
  4112.       length(const char_type* __s);
  4113.  
  4114.       static const char_type*
  4115.       find(const char_type* __s, std::size_t __n, const char_type& __a);
  4116.  
  4117.       static char_type*
  4118.       move(char_type* __s1, const char_type* __s2, std::size_t __n);
  4119.  
  4120.       static char_type*
  4121.       copy(char_type* __s1, const char_type* __s2, std::size_t __n);
  4122.  
  4123.       static char_type*
  4124.       assign(char_type* __s, std::size_t __n, char_type __a);
  4125.  
  4126.       static char_type
  4127.       to_char_type(const int_type& __c)
  4128.       { return static_cast<char_type>(__c); }
  4129.  
  4130.       static int_type
  4131.       to_int_type(const char_type& __c)
  4132.       { return static_cast<int_type>(__c); }
  4133.  
  4134.       static bool
  4135.       eq_int_type(const int_type& __c1, const int_type& __c2)
  4136.       { return __c1 == __c2; }
  4137.  
  4138.       static int_type
  4139.       eof()
  4140.       { return static_cast<int_type>(-1); }
  4141.  
  4142.       static int_type
  4143.       not_eof(const int_type& __c)
  4144.       { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
  4145.     };
  4146.  
  4147.   template<typename _CharT>
  4148.     int
  4149.     char_traits<_CharT>::
  4150.     compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
  4151.     {
  4152.       for (std::size_t __i = 0; __i < __n; ++__i)
  4153.  if (lt(__s1[__i], __s2[__i]))
  4154.    return -1;
  4155.  else if (lt(__s2[__i], __s1[__i]))
  4156.    return 1;
  4157.       return 0;
  4158.     }
  4159.  
  4160.   template<typename _CharT>
  4161.     std::size_t
  4162.     char_traits<_CharT>::
  4163.     length(const char_type* __p)
  4164.     {
  4165.       std::size_t __i = 0;
  4166.       while (!eq(__p[__i], char_type()))
  4167.         ++__i;
  4168.       return __i;
  4169.     }
  4170.  
  4171.   template<typename _CharT>
  4172.     const typename char_traits<_CharT>::char_type*
  4173.     char_traits<_CharT>::
  4174.     find(const char_type* __s, std::size_t __n, const char_type& __a)
  4175.     {
  4176.       for (std::size_t __i = 0; __i < __n; ++__i)
  4177.         if (eq(__s[__i], __a))
  4178.           return __s + __i;
  4179.       return 0;
  4180.     }
  4181.  
  4182.   template<typename _CharT>
  4183.     typename char_traits<_CharT>::char_type*
  4184.     char_traits<_CharT>::
  4185.     move(char_type* __s1, const char_type* __s2, std::size_t __n)
  4186.     {
  4187.       return static_cast<_CharT*>(__builtin_memmove(__s1, __s2,
  4188.           __n * sizeof(char_type)));
  4189.     }
  4190.  
  4191.   template<typename _CharT>
  4192.     typename char_traits<_CharT>::char_type*
  4193.     char_traits<_CharT>::
  4194.     copy(char_type* __s1, const char_type* __s2, std::size_t __n)
  4195.     {
  4196.  
  4197.       std::copy(__s2, __s2 + __n, __s1);
  4198.       return __s1;
  4199.     }
  4200.  
  4201.   template<typename _CharT>
  4202.     typename char_traits<_CharT>::char_type*
  4203.     char_traits<_CharT>::
  4204.     assign(char_type* __s, std::size_t __n, char_type __a)
  4205.     {
  4206.  
  4207.       std::fill_n(__s, __n, __a);
  4208.       return __s;
  4209.     }
  4210.  
  4211.  
  4212. }
  4213.  
  4214. namespace std __attribute__ ((__visibility__ ("default")))
  4215. {
  4216.  
  4217. # 226 "/usr/include/c++/5/bits/char_traits.h" 3
  4218.   template<class _CharT>
  4219.     struct char_traits : public __gnu_cxx::char_traits<_CharT>
  4220.     { };
  4221.  
  4222.  
  4223.  
  4224.   template<>
  4225.     struct char_traits<char>
  4226.     {
  4227.       typedef char char_type;
  4228.       typedef int int_type;
  4229.       typedef streampos pos_type;
  4230.       typedef streamoff off_type;
  4231.       typedef mbstate_t state_type;
  4232.  
  4233.       static void
  4234.       assign(char_type& __c1, const char_type& __c2)
  4235.       { __c1 = __c2; }
  4236.  
  4237.       static bool
  4238.       eq(const char_type& __c1, const char_type& __c2)
  4239.       { return __c1 == __c2; }
  4240.  
  4241.       static bool
  4242.       lt(const char_type& __c1, const char_type& __c2)
  4243.       {
  4244.  
  4245.  return (static_cast<unsigned char>(__c1)
  4246.   < static_cast<unsigned char>(__c2));
  4247.       }
  4248.  
  4249.       static int
  4250.       compare(const char_type* __s1, const char_type* __s2, size_t __n)
  4251.       {
  4252.  if (__n == 0)
  4253.    return 0;
  4254.  return __builtin_memcmp(__s1, __s2, __n);
  4255.       }
  4256.  
  4257.       static size_t
  4258.       length(const char_type* __s)
  4259.       { return __builtin_strlen(__s); }
  4260.  
  4261.       static const char_type*
  4262.       find(const char_type* __s, size_t __n, const char_type& __a)
  4263.       {
  4264.  if (__n == 0)
  4265.    return 0;
  4266.  return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n));
  4267.       }
  4268.  
  4269.       static char_type*
  4270.       move(char_type* __s1, const char_type* __s2, size_t __n)
  4271.       {
  4272.  if (__n == 0)
  4273.    return __s1;
  4274.  return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n));
  4275.       }
  4276.  
  4277.       static char_type*
  4278.       copy(char_type* __s1, const char_type* __s2, size_t __n)
  4279.       {
  4280.  if (__n == 0)
  4281.    return __s1;
  4282.  return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));
  4283.       }
  4284.  
  4285.       static char_type*
  4286.       assign(char_type* __s, size_t __n, char_type __a)
  4287.       {
  4288.  if (__n == 0)
  4289.    return __s;
  4290.  return static_cast<char_type*>(__builtin_memset(__s, __a, __n));
  4291.       }
  4292.  
  4293.       static char_type
  4294.       to_char_type(const int_type& __c)
  4295.       { return static_cast<char_type>(__c); }
  4296.  
  4297.  
  4298.  
  4299.       static int_type
  4300.       to_int_type(const char_type& __c)
  4301.       { return static_cast<int_type>(static_cast<unsigned char>(__c)); }
  4302.  
  4303.       static bool
  4304.       eq_int_type(const int_type& __c1, const int_type& __c2)
  4305.       { return __c1 == __c2; }
  4306.  
  4307.       static int_type
  4308.       eof()
  4309.       { return static_cast<int_type>(-1); }
  4310.  
  4311.       static int_type
  4312.       not_eof(const int_type& __c)
  4313.       { return (__c == eof()) ? 0 : __c; }
  4314.   };
  4315.  
  4316.  
  4317.  
  4318.  
  4319.   template<>
  4320.     struct char_traits<wchar_t>
  4321.     {
  4322.       typedef wchar_t char_type;
  4323.       typedef wint_t int_type;
  4324.       typedef streamoff off_type;
  4325.       typedef wstreampos pos_type;
  4326.       typedef mbstate_t state_type;
  4327.  
  4328.       static void
  4329.       assign(char_type& __c1, const char_type& __c2)
  4330.       { __c1 = __c2; }
  4331.  
  4332.       static bool
  4333.       eq(const char_type& __c1, const char_type& __c2)
  4334.       { return __c1 == __c2; }
  4335.  
  4336.       static bool
  4337.       lt(const char_type& __c1, const char_type& __c2)
  4338.       { return __c1 < __c2; }
  4339.  
  4340.       static int
  4341.       compare(const char_type* __s1, const char_type* __s2, size_t __n)
  4342.       {
  4343.  if (__n == 0)
  4344.    return 0;
  4345.  return wmemcmp(__s1, __s2, __n);
  4346.       }
  4347.  
  4348.       static size_t
  4349.       length(const char_type* __s)
  4350.       { return wcslen(__s); }
  4351.  
  4352.       static const char_type*
  4353.       find(const char_type* __s, size_t __n, const char_type& __a)
  4354.       {
  4355.  if (__n == 0)
  4356.    return 0;
  4357.  return wmemchr(__s, __a, __n);
  4358.       }
  4359.  
  4360.       static char_type*
  4361.       move(char_type* __s1, const char_type* __s2, size_t __n)
  4362.       {
  4363.  if (__n == 0)
  4364.    return __s1;
  4365.  return wmemmove(__s1, __s2, __n);
  4366.       }
  4367.  
  4368.       static char_type*
  4369.       copy(char_type* __s1, const char_type* __s2, size_t __n)
  4370.       {
  4371.  if (__n == 0)
  4372.    return __s1;
  4373.  return wmemcpy(__s1, __s2, __n);
  4374.       }
  4375.  
  4376.       static char_type*
  4377.       assign(char_type* __s, size_t __n, char_type __a)
  4378.       {
  4379.  if (__n == 0)
  4380.    return __s;
  4381.  return wmemset(__s, __a, __n);
  4382.       }
  4383.  
  4384.       static char_type
  4385.       to_char_type(const int_type& __c)
  4386.       { return char_type(__c); }
  4387.  
  4388.       static int_type
  4389.       to_int_type(const char_type& __c)
  4390.       { return int_type(__c); }
  4391.  
  4392.       static bool
  4393.       eq_int_type(const int_type& __c1, const int_type& __c2)
  4394.       { return __c1 == __c2; }
  4395.  
  4396.       static int_type
  4397.       eof()
  4398.       { return static_cast<int_type>((0xffffffffu)); }
  4399.  
  4400.       static int_type
  4401.       not_eof(const int_type& __c)
  4402.       { return eq_int_type(__c, eof()) ? 0 : __c; }
  4403.   };
  4404.  
  4405.  
  4406.  
  4407. }
  4408. # 41 "/usr/include/c++/5/ios" 2 3
  4409. # 1 "/usr/include/c++/5/bits/localefwd.h" 1 3
  4410. # 37 "/usr/include/c++/5/bits/localefwd.h" 3
  4411.        
  4412. # 38 "/usr/include/c++/5/bits/localefwd.h" 3
  4413.  
  4414.  
  4415. # 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h" 1 3
  4416. # 39 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h" 3
  4417.        
  4418. # 40 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h" 3
  4419.  
  4420. # 1 "/usr/include/c++/5/clocale" 1 3
  4421. # 39 "/usr/include/c++/5/clocale" 3
  4422.        
  4423. # 40 "/usr/include/c++/5/clocale" 3
  4424.  
  4425.  
  4426. # 1 "/usr/include/locale.h" 1 3 4
  4427. # 28 "/usr/include/locale.h" 3 4
  4428. # 1 "/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h" 1 3 4
  4429. # 29 "/usr/include/locale.h" 2 3 4
  4430. # 1 "/usr/include/x86_64-linux-gnu/bits/locale.h" 1 3 4
  4431. # 30 "/usr/include/locale.h" 2 3 4
  4432.  
  4433. extern "C" {
  4434. # 50 "/usr/include/locale.h" 3 4
  4435.  
  4436.  
  4437.  
  4438. struct lconv
  4439. {
  4440.  
  4441.  
  4442.   char *decimal_point;
  4443.   char *thousands_sep;
  4444.  
  4445.  
  4446.  
  4447.  
  4448.  
  4449.   char *grouping;
  4450.  
  4451.  
  4452.  
  4453.  
  4454.  
  4455.   char *int_curr_symbol;
  4456.   char *currency_symbol;
  4457.   char *mon_decimal_point;
  4458.   char *mon_thousands_sep;
  4459.   char *mon_grouping;
  4460.   char *positive_sign;
  4461.   char *negative_sign;
  4462.   char int_frac_digits;
  4463.   char frac_digits;
  4464.  
  4465.   char p_cs_precedes;
  4466.  
  4467.   char p_sep_by_space;
  4468.  
  4469.   char n_cs_precedes;
  4470.  
  4471.   char n_sep_by_space;
  4472.  
  4473.  
  4474.  
  4475.  
  4476.  
  4477.  
  4478.   char p_sign_posn;
  4479.   char n_sign_posn;
  4480.  
  4481.  
  4482.   char int_p_cs_precedes;
  4483.  
  4484.   char int_p_sep_by_space;
  4485.  
  4486.   char int_n_cs_precedes;
  4487.  
  4488.   char int_n_sep_by_space;
  4489.  
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.   char int_p_sign_posn;
  4496.   char int_n_sign_posn;
  4497. # 120 "/usr/include/locale.h" 3 4
  4498. };
  4499.  
  4500.  
  4501.  
  4502. extern char *setlocale (int __category, const char *__locale) throw ();
  4503.  
  4504.  
  4505. extern struct lconv *localeconv (void) throw ();
  4506.  
  4507.  
  4508. # 151 "/usr/include/locale.h" 3 4
  4509. extern __locale_t newlocale (int __category_mask, const char *__locale,
  4510.         __locale_t __base) throw ();
  4511. # 186 "/usr/include/locale.h" 3 4
  4512. extern __locale_t duplocale (__locale_t __dataset) throw ();
  4513.  
  4514.  
  4515.  
  4516. extern void freelocale (__locale_t __dataset) throw ();
  4517.  
  4518.  
  4519.  
  4520.  
  4521.  
  4522.  
  4523. extern __locale_t uselocale (__locale_t __dataset) throw ();
  4524.  
  4525.  
  4526.  
  4527.  
  4528.  
  4529.  
  4530.  
  4531. }
  4532. # 43 "/usr/include/c++/5/clocale" 2 3
  4533. # 51 "/usr/include/c++/5/clocale" 3
  4534. namespace std
  4535. {
  4536.   using ::lconv;
  4537.   using ::setlocale;
  4538.   using ::localeconv;
  4539. }
  4540. # 42 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h" 2 3
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  4548. {
  4549.  
  4550.  
  4551.   extern "C" __typeof(uselocale) __uselocale;
  4552.  
  4553.  
  4554. }
  4555.  
  4556.  
  4557. namespace std __attribute__ ((__visibility__ ("default")))
  4558. {
  4559.  
  4560.  
  4561.   typedef __locale_t __c_locale;
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567.   inline int
  4568.   __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)),
  4569.      char* __out,
  4570.      const int __size __attribute__ ((__unused__)),
  4571.      const char* __fmt, ...)
  4572.   {
  4573.  
  4574.     __c_locale __old = __gnu_cxx::__uselocale(__cloc);
  4575. # 88 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h" 3
  4576.     __builtin_va_list __args;
  4577.     __builtin_va_start(__args, __fmt);
  4578.  
  4579.  
  4580.     const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
  4581.  
  4582.  
  4583.  
  4584.  
  4585.     __builtin_va_end(__args);
  4586.  
  4587.  
  4588.     __gnu_cxx::__uselocale(__old);
  4589.  
  4590.  
  4591.  
  4592.  
  4593.  
  4594.  
  4595.  
  4596.     return __ret;
  4597.   }
  4598.  
  4599.  
  4600. }
  4601. # 41 "/usr/include/c++/5/bits/localefwd.h" 2 3
  4602.  
  4603. # 1 "/usr/include/c++/5/cctype" 1 3
  4604. # 39 "/usr/include/c++/5/cctype" 3
  4605.        
  4606. # 40 "/usr/include/c++/5/cctype" 3
  4607.  
  4608.  
  4609. # 1 "/usr/include/ctype.h" 1 3 4
  4610. # 26 "/usr/include/ctype.h" 3 4
  4611. # 1 "/usr/include/x86_64-linux-gnu/bits/types.h" 1 3 4
  4612. # 27 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
  4613. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  4614. # 28 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4
  4615.  
  4616.  
  4617. typedef unsigned char __u_char;
  4618. typedef unsigned short int __u_short;
  4619. typedef unsigned int __u_int;
  4620. typedef unsigned long int __u_long;
  4621.  
  4622.  
  4623. typedef signed char __int8_t;
  4624. typedef unsigned char __uint8_t;
  4625. typedef signed short int __int16_t;
  4626. typedef unsigned short int __uint16_t;
  4627. typedef signed int __int32_t;
  4628. typedef unsigned int __uint32_t;
  4629.  
  4630. typedef signed long int __int64_t;
  4631. typedef unsigned long int __uint64_t;
  4632.  
  4633.  
  4634.  
  4635.  
  4636.  
  4637.  
  4638.  
  4639. typedef long int __quad_t;
  4640. typedef unsigned long int __u_quad_t;
  4641. # 121 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
  4642. # 1 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 1 3 4
  4643. # 122 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4
  4644.  
  4645.  
  4646. typedef unsigned long int __dev_t;
  4647. typedef unsigned int __uid_t;
  4648. typedef unsigned int __gid_t;
  4649. typedef unsigned long int __ino_t;
  4650. typedef unsigned long int __ino64_t;
  4651. typedef unsigned int __mode_t;
  4652. typedef unsigned long int __nlink_t;
  4653. typedef long int __off_t;
  4654. typedef long int __off64_t;
  4655. typedef int __pid_t;
  4656. typedef struct { int __val[2]; } __fsid_t;
  4657. typedef long int __clock_t;
  4658. typedef unsigned long int __rlim_t;
  4659. typedef unsigned long int __rlim64_t;
  4660. typedef unsigned int __id_t;
  4661. typedef long int __time_t;
  4662. typedef unsigned int __useconds_t;
  4663. typedef long int __suseconds_t;
  4664.  
  4665. typedef int __daddr_t;
  4666. typedef int __key_t;
  4667.  
  4668.  
  4669. typedef int __clockid_t;
  4670.  
  4671.  
  4672. typedef void * __timer_t;
  4673.  
  4674.  
  4675. typedef long int __blksize_t;
  4676.  
  4677.  
  4678.  
  4679.  
  4680. typedef long int __blkcnt_t;
  4681. typedef long int __blkcnt64_t;
  4682.  
  4683.  
  4684. typedef unsigned long int __fsblkcnt_t;
  4685. typedef unsigned long int __fsblkcnt64_t;
  4686.  
  4687.  
  4688. typedef unsigned long int __fsfilcnt_t;
  4689. typedef unsigned long int __fsfilcnt64_t;
  4690.  
  4691.  
  4692. typedef long int __fsword_t;
  4693.  
  4694. typedef long int __ssize_t;
  4695.  
  4696.  
  4697. typedef long int __syscall_slong_t;
  4698.  
  4699. typedef unsigned long int __syscall_ulong_t;
  4700.  
  4701.  
  4702.  
  4703. typedef __off64_t __loff_t;
  4704. typedef __quad_t *__qaddr_t;
  4705. typedef char *__caddr_t;
  4706.  
  4707.  
  4708. typedef long int __intptr_t;
  4709.  
  4710.  
  4711. typedef unsigned int __socklen_t;
  4712. # 27 "/usr/include/ctype.h" 2 3 4
  4713.  
  4714. extern "C" {
  4715. # 39 "/usr/include/ctype.h" 3 4
  4716. # 1 "/usr/include/endian.h" 1 3 4
  4717. # 36 "/usr/include/endian.h" 3 4
  4718. # 1 "/usr/include/x86_64-linux-gnu/bits/endian.h" 1 3 4
  4719. # 37 "/usr/include/endian.h" 2 3 4
  4720. # 60 "/usr/include/endian.h" 3 4
  4721. # 1 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 1 3 4
  4722. # 28 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4
  4723. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  4724. # 29 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 2 3 4
  4725.  
  4726.  
  4727.  
  4728.  
  4729.  
  4730.  
  4731. # 1 "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h" 1 3 4
  4732. # 36 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 2 3 4
  4733. # 44 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4
  4734. static __inline unsigned int
  4735. __bswap_32 (unsigned int __bsx)
  4736. {
  4737.   return __builtin_bswap32 (__bsx);
  4738. }
  4739. # 108 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4
  4740. static __inline __uint64_t
  4741. __bswap_64 (__uint64_t __bsx)
  4742. {
  4743.   return __builtin_bswap64 (__bsx);
  4744. }
  4745. # 61 "/usr/include/endian.h" 2 3 4
  4746. # 40 "/usr/include/ctype.h" 2 3 4
  4747.  
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753. enum
  4754. {
  4755.   _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
  4756.   _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
  4757.   _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
  4758.   _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
  4759.   _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
  4760.   _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
  4761.   _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
  4762.   _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
  4763.   _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
  4764.   _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
  4765.   _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
  4766.   _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
  4767. };
  4768. # 79 "/usr/include/ctype.h" 3 4
  4769. extern const unsigned short int **__ctype_b_loc (void)
  4770.      throw () __attribute__ ((__const__));
  4771. extern const __int32_t **__ctype_tolower_loc (void)
  4772.      throw () __attribute__ ((__const__));
  4773. extern const __int32_t **__ctype_toupper_loc (void)
  4774.      throw () __attribute__ ((__const__));
  4775. # 104 "/usr/include/ctype.h" 3 4
  4776.  
  4777.  
  4778.  
  4779.  
  4780.  
  4781.  
  4782. extern int isalnum (int) throw ();
  4783. extern int isalpha (int) throw ();
  4784. extern int iscntrl (int) throw ();
  4785. extern int isdigit (int) throw ();
  4786. extern int islower (int) throw ();
  4787. extern int isgraph (int) throw ();
  4788. extern int isprint (int) throw ();
  4789. extern int ispunct (int) throw ();
  4790. extern int isspace (int) throw ();
  4791. extern int isupper (int) throw ();
  4792. extern int isxdigit (int) throw ();
  4793.  
  4794.  
  4795.  
  4796. extern int tolower (int __c) throw ();
  4797.  
  4798.  
  4799. extern int toupper (int __c) throw ();
  4800.  
  4801.  
  4802.  
  4803.  
  4804.  
  4805.  
  4806.  
  4807.  
  4808. extern int isblank (int) throw ();
  4809.  
  4810.  
  4811.  
  4812.  
  4813.  
  4814.  
  4815. extern int isctype (int __c, int __mask) throw ();
  4816.  
  4817.  
  4818.  
  4819.  
  4820.  
  4821.  
  4822. extern int isascii (int __c) throw ();
  4823.  
  4824.  
  4825.  
  4826. extern int toascii (int __c) throw ();
  4827.  
  4828.  
  4829.  
  4830. extern int _toupper (int) throw ();
  4831. extern int _tolower (int) throw ();
  4832. # 271 "/usr/include/ctype.h" 3 4
  4833. extern int isalnum_l (int, __locale_t) throw ();
  4834. extern int isalpha_l (int, __locale_t) throw ();
  4835. extern int iscntrl_l (int, __locale_t) throw ();
  4836. extern int isdigit_l (int, __locale_t) throw ();
  4837. extern int islower_l (int, __locale_t) throw ();
  4838. extern int isgraph_l (int, __locale_t) throw ();
  4839. extern int isprint_l (int, __locale_t) throw ();
  4840. extern int ispunct_l (int, __locale_t) throw ();
  4841. extern int isspace_l (int, __locale_t) throw ();
  4842. extern int isupper_l (int, __locale_t) throw ();
  4843. extern int isxdigit_l (int, __locale_t) throw ();
  4844.  
  4845. extern int isblank_l (int, __locale_t) throw ();
  4846.  
  4847.  
  4848.  
  4849. extern int __tolower_l (int __c, __locale_t __l) throw ();
  4850. extern int tolower_l (int __c, __locale_t __l) throw ();
  4851.  
  4852.  
  4853. extern int __toupper_l (int __c, __locale_t __l) throw ();
  4854. extern int toupper_l (int __c, __locale_t __l) throw ();
  4855. # 347 "/usr/include/ctype.h" 3 4
  4856. }
  4857. # 43 "/usr/include/c++/5/cctype" 2 3
  4858. # 62 "/usr/include/c++/5/cctype" 3
  4859. namespace std
  4860. {
  4861.   using ::isalnum;
  4862.   using ::isalpha;
  4863.   using ::iscntrl;
  4864.   using ::isdigit;
  4865.   using ::isgraph;
  4866.   using ::islower;
  4867.   using ::isprint;
  4868.   using ::ispunct;
  4869.   using ::isspace;
  4870.   using ::isupper;
  4871.   using ::isxdigit;
  4872.   using ::tolower;
  4873.   using ::toupper;
  4874. }
  4875. # 43 "/usr/include/c++/5/bits/localefwd.h" 2 3
  4876.  
  4877. namespace std __attribute__ ((__visibility__ ("default")))
  4878. {
  4879.  
  4880. # 55 "/usr/include/c++/5/bits/localefwd.h" 3
  4881.   class locale;
  4882.  
  4883.   template<typename _Facet>
  4884.     bool
  4885.     has_facet(const locale&) throw();
  4886.  
  4887.   template<typename _Facet>
  4888.     const _Facet&
  4889.     use_facet(const locale&);
  4890.  
  4891.  
  4892.   template<typename _CharT>
  4893.     bool
  4894.     isspace(_CharT, const locale&);
  4895.  
  4896.   template<typename _CharT>
  4897.     bool
  4898.     isprint(_CharT, const locale&);
  4899.  
  4900.   template<typename _CharT>
  4901.     bool
  4902.     iscntrl(_CharT, const locale&);
  4903.  
  4904.   template<typename _CharT>
  4905.     bool
  4906.     isupper(_CharT, const locale&);
  4907.  
  4908.   template<typename _CharT>
  4909.     bool
  4910.     islower(_CharT, const locale&);
  4911.  
  4912.   template<typename _CharT>
  4913.     bool
  4914.     isalpha(_CharT, const locale&);
  4915.  
  4916.   template<typename _CharT>
  4917.     bool
  4918.     isdigit(_CharT, const locale&);
  4919.  
  4920.   template<typename _CharT>
  4921.     bool
  4922.     ispunct(_CharT, const locale&);
  4923.  
  4924.   template<typename _CharT>
  4925.     bool
  4926.     isxdigit(_CharT, const locale&);
  4927.  
  4928.   template<typename _CharT>
  4929.     bool
  4930.     isalnum(_CharT, const locale&);
  4931.  
  4932.   template<typename _CharT>
  4933.     bool
  4934.     isgraph(_CharT, const locale&);
  4935.  
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.  
  4942.   template<typename _CharT>
  4943.     _CharT
  4944.     toupper(_CharT, const locale&);
  4945.  
  4946.   template<typename _CharT>
  4947.     _CharT
  4948.     tolower(_CharT, const locale&);
  4949.  
  4950.  
  4951.   class ctype_base;
  4952.   template<typename _CharT>
  4953.     class ctype;
  4954.   template<> class ctype<char>;
  4955.  
  4956.   template<> class ctype<wchar_t>;
  4957.  
  4958.   template<typename _CharT>
  4959.     class ctype_byname;
  4960.  
  4961.  
  4962.   class codecvt_base;
  4963.   template<typename _InternT, typename _ExternT, typename _StateT>
  4964.     class codecvt;
  4965.   template<> class codecvt<char, char, mbstate_t>;
  4966.  
  4967.   template<> class codecvt<wchar_t, char, mbstate_t>;
  4968.  
  4969.   template<typename _InternT, typename _ExternT, typename _StateT>
  4970.     class codecvt_byname;
  4971.  
  4972.  
  4973.  
  4974.   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
  4975.     class num_get;
  4976.   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
  4977.     class num_put;
  4978.  
  4979. namespace __cxx11 {
  4980.   template<typename _CharT> class numpunct;
  4981.   template<typename _CharT> class numpunct_byname;
  4982. }
  4983.  
  4984. namespace __cxx11 {
  4985.  
  4986.   template<typename _CharT>
  4987.     class collate;
  4988.   template<typename _CharT>
  4989.     class collate_byname;
  4990. }
  4991.  
  4992.  
  4993.   class time_base;
  4994. namespace __cxx11 {
  4995.   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
  4996.     class time_get;
  4997.   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
  4998.     class time_get_byname;
  4999. }
  5000.   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
  5001.     class time_put;
  5002.   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
  5003.     class time_put_byname;
  5004.  
  5005.  
  5006.   class money_base;
  5007. namespace __cxx11 {
  5008.   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
  5009.     class money_get;
  5010.   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
  5011.     class money_put;
  5012. }
  5013. namespace __cxx11 {
  5014.   template<typename _CharT, bool _Intl = false>
  5015.     class moneypunct;
  5016.   template<typename _CharT, bool _Intl = false>
  5017.     class moneypunct_byname;
  5018. }
  5019.  
  5020.  
  5021.   class messages_base;
  5022. namespace __cxx11 {
  5023.   template<typename _CharT>
  5024.     class messages;
  5025.   template<typename _CharT>
  5026.     class messages_byname;
  5027. }
  5028.  
  5029.  
  5030. }
  5031. # 42 "/usr/include/c++/5/ios" 2 3
  5032. # 1 "/usr/include/c++/5/bits/ios_base.h" 1 3
  5033. # 37 "/usr/include/c++/5/bits/ios_base.h" 3
  5034.        
  5035. # 38 "/usr/include/c++/5/bits/ios_base.h" 3
  5036.  
  5037. # 1 "/usr/include/c++/5/ext/atomicity.h" 1 3
  5038. # 32 "/usr/include/c++/5/ext/atomicity.h" 3
  5039.        
  5040. # 33 "/usr/include/c++/5/ext/atomicity.h" 3
  5041.  
  5042.  
  5043. # 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h" 1 3
  5044. # 30 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h" 3
  5045. #pragma GCC visibility push(default)
  5046. # 148 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h" 3
  5047. # 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h" 1 3
  5048. # 35 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h" 3
  5049. # 1 "/usr/include/pthread.h" 1 3 4
  5050. # 23 "/usr/include/pthread.h" 3 4
  5051. # 1 "/usr/include/sched.h" 1 3 4
  5052. # 28 "/usr/include/sched.h" 3 4
  5053. # 1 "/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h" 1 3 4
  5054. # 29 "/usr/include/sched.h" 2 3 4
  5055.  
  5056.  
  5057.  
  5058.  
  5059.  
  5060. # 1 "/usr/include/time.h" 1 3 4
  5061. # 73 "/usr/include/time.h" 3 4
  5062.  
  5063.  
  5064. typedef __time_t time_t;
  5065.  
  5066.  
  5067.  
  5068. # 120 "/usr/include/time.h" 3 4
  5069. struct timespec
  5070.   {
  5071.     __time_t tv_sec;
  5072.     __syscall_slong_t tv_nsec;
  5073.   };
  5074. # 35 "/usr/include/sched.h" 2 3 4
  5075.  
  5076.  
  5077. typedef __pid_t pid_t;
  5078.  
  5079.  
  5080.  
  5081.  
  5082.  
  5083. # 1 "/usr/include/x86_64-linux-gnu/bits/sched.h" 1 3 4
  5084. # 72 "/usr/include/x86_64-linux-gnu/bits/sched.h" 3 4
  5085. struct sched_param
  5086.   {
  5087.     int __sched_priority;
  5088.   };
  5089.  
  5090. extern "C" {
  5091.  
  5092.  
  5093.  
  5094. extern int clone (int (*__fn) (void *__arg), void *__child_stack,
  5095.     int __flags, void *__arg, ...) throw ();
  5096.  
  5097.  
  5098. extern int unshare (int __flags) throw ();
  5099.  
  5100.  
  5101. extern int sched_getcpu (void) throw ();
  5102.  
  5103.  
  5104. extern int setns (int __fd, int __nstype) throw ();
  5105.  
  5106.  
  5107.  
  5108. }
  5109.  
  5110.  
  5111.  
  5112.  
  5113.  
  5114.  
  5115.  
  5116. struct __sched_param
  5117.   {
  5118.     int __sched_priority;
  5119.   };
  5120. # 118 "/usr/include/x86_64-linux-gnu/bits/sched.h" 3 4
  5121. typedef unsigned long int __cpu_mask;
  5122.  
  5123.  
  5124.  
  5125.  
  5126.  
  5127.  
  5128. typedef struct
  5129. {
  5130.   __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
  5131. } cpu_set_t;
  5132. # 201 "/usr/include/x86_64-linux-gnu/bits/sched.h" 3 4
  5133. extern "C" {
  5134.  
  5135. extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
  5136.   throw ();
  5137. extern cpu_set_t *__sched_cpualloc (size_t __count) throw () ;
  5138. extern void __sched_cpufree (cpu_set_t *__set) throw ();
  5139.  
  5140. }
  5141. # 44 "/usr/include/sched.h" 2 3 4
  5142.  
  5143.  
  5144.  
  5145.  
  5146. extern "C" {
  5147.  
  5148.  
  5149. extern int sched_setparam (__pid_t __pid, const struct sched_param *__param)
  5150.      throw ();
  5151.  
  5152.  
  5153. extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();
  5154.  
  5155.  
  5156. extern int sched_setscheduler (__pid_t __pid, int __policy,
  5157.           const struct sched_param *__param) throw ();
  5158.  
  5159.  
  5160. extern int sched_getscheduler (__pid_t __pid) throw ();
  5161.  
  5162.  
  5163. extern int sched_yield (void) throw ();
  5164.  
  5165.  
  5166. extern int sched_get_priority_max (int __algorithm) throw ();
  5167.  
  5168.  
  5169. extern int sched_get_priority_min (int __algorithm) throw ();
  5170.  
  5171.  
  5172. extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();
  5173. # 118 "/usr/include/sched.h" 3 4
  5174. extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
  5175.          const cpu_set_t *__cpuset) throw ();
  5176.  
  5177.  
  5178. extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
  5179.          cpu_set_t *__cpuset) throw ();
  5180.  
  5181.  
  5182. }
  5183. # 24 "/usr/include/pthread.h" 2 3 4
  5184. # 1 "/usr/include/time.h" 1 3 4
  5185. # 29 "/usr/include/time.h" 3 4
  5186. extern "C" {
  5187.  
  5188.  
  5189.  
  5190.  
  5191.  
  5192.  
  5193.  
  5194. # 1 "/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h" 1 3 4
  5195. # 38 "/usr/include/time.h" 2 3 4
  5196.  
  5197.  
  5198.  
  5199. # 1 "/usr/include/x86_64-linux-gnu/bits/time.h" 1 3 4
  5200. # 30 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4
  5201. struct timeval
  5202.   {
  5203.     __time_t tv_sec;
  5204.     __suseconds_t tv_usec;
  5205.   };
  5206. # 88 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4
  5207. # 1 "/usr/include/x86_64-linux-gnu/bits/timex.h" 1 3 4
  5208. # 25 "/usr/include/x86_64-linux-gnu/bits/timex.h" 3 4
  5209. struct timex
  5210. {
  5211.   unsigned int modes;
  5212.   __syscall_slong_t offset;
  5213.   __syscall_slong_t freq;
  5214.   __syscall_slong_t maxerror;
  5215.   __syscall_slong_t esterror;
  5216.   int status;
  5217.   __syscall_slong_t constant;
  5218.   __syscall_slong_t precision;
  5219.   __syscall_slong_t tolerance;
  5220.   struct timeval time;
  5221.   __syscall_slong_t tick;
  5222.   __syscall_slong_t ppsfreq;
  5223.   __syscall_slong_t jitter;
  5224.   int shift;
  5225.   __syscall_slong_t stabil;
  5226.   __syscall_slong_t jitcnt;
  5227.   __syscall_slong_t calcnt;
  5228.   __syscall_slong_t errcnt;
  5229.   __syscall_slong_t stbcnt;
  5230.  
  5231.   int tai;
  5232.  
  5233.  
  5234.   int :32; int :32; int :32; int :32;
  5235.   int :32; int :32; int :32; int :32;
  5236.   int :32; int :32; int :32;
  5237. };
  5238. # 89 "/usr/include/x86_64-linux-gnu/bits/time.h" 2 3 4
  5239.  
  5240. extern "C" {
  5241.  
  5242.  
  5243. extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw ();
  5244.  
  5245. }
  5246. # 42 "/usr/include/time.h" 2 3 4
  5247. # 57 "/usr/include/time.h" 3 4
  5248.  
  5249.  
  5250. typedef __clock_t clock_t;
  5251.  
  5252.  
  5253.  
  5254. # 91 "/usr/include/time.h" 3 4
  5255. typedef __clockid_t clockid_t;
  5256. # 103 "/usr/include/time.h" 3 4
  5257. typedef __timer_t timer_t;
  5258. # 131 "/usr/include/time.h" 3 4
  5259.  
  5260.  
  5261. struct tm
  5262. {
  5263.   int tm_sec;
  5264.   int tm_min;
  5265.   int tm_hour;
  5266.   int tm_mday;
  5267.   int tm_mon;
  5268.   int tm_year;
  5269.   int tm_wday;
  5270.   int tm_yday;
  5271.   int tm_isdst;
  5272.  
  5273.  
  5274.   long int tm_gmtoff;
  5275.   const char *tm_zone;
  5276.  
  5277.  
  5278.  
  5279.  
  5280. };
  5281.  
  5282.  
  5283.  
  5284.  
  5285.  
  5286.  
  5287.  
  5288.  
  5289. struct itimerspec
  5290.   {
  5291.     struct timespec it_interval;
  5292.     struct timespec it_value;
  5293.   };
  5294.  
  5295.  
  5296. struct sigevent;
  5297. # 186 "/usr/include/time.h" 3 4
  5298.  
  5299.  
  5300.  
  5301. extern clock_t clock (void) throw ();
  5302.  
  5303.  
  5304. extern time_t time (time_t *__timer) throw ();
  5305.  
  5306.  
  5307. extern double difftime (time_t __time1, time_t __time0)
  5308.      throw () __attribute__ ((__const__));
  5309.  
  5310.  
  5311. extern time_t mktime (struct tm *__tp) throw ();
  5312.  
  5313.  
  5314.  
  5315.  
  5316.  
  5317. extern size_t strftime (char *__restrict __s, size_t __maxsize,
  5318.    const char *__restrict __format,
  5319.    const struct tm *__restrict __tp) throw ();
  5320.  
  5321.  
  5322.  
  5323.  
  5324.  
  5325. extern char *strptime (const char *__restrict __s,
  5326.          const char *__restrict __fmt, struct tm *__tp)
  5327.      throw ();
  5328.  
  5329.  
  5330.  
  5331.  
  5332.  
  5333.  
  5334.  
  5335. extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
  5336.      const char *__restrict __format,
  5337.      const struct tm *__restrict __tp,
  5338.      __locale_t __loc) throw ();
  5339.  
  5340.  
  5341.  
  5342. extern char *strptime_l (const char *__restrict __s,
  5343.     const char *__restrict __fmt, struct tm *__tp,
  5344.     __locale_t __loc) throw ();
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  
  5351. extern struct tm *gmtime (const time_t *__timer) throw ();
  5352.  
  5353.  
  5354.  
  5355. extern struct tm *localtime (const time_t *__timer) throw ();
  5356.  
  5357.  
  5358.  
  5359.  
  5360.  
  5361. extern struct tm *gmtime_r (const time_t *__restrict __timer,
  5362.        struct tm *__restrict __tp) throw ();
  5363.  
  5364.  
  5365.  
  5366. extern struct tm *localtime_r (const time_t *__restrict __timer,
  5367.           struct tm *__restrict __tp) throw ();
  5368.  
  5369.  
  5370.  
  5371.  
  5372.  
  5373. extern char *asctime (const struct tm *__tp) throw ();
  5374.  
  5375.  
  5376. extern char *ctime (const time_t *__timer) throw ();
  5377.  
  5378.  
  5379.  
  5380.  
  5381.  
  5382.  
  5383.  
  5384. extern char *asctime_r (const struct tm *__restrict __tp,
  5385.    char *__restrict __buf) throw ();
  5386.  
  5387.  
  5388. extern char *ctime_r (const time_t *__restrict __timer,
  5389.         char *__restrict __buf) throw ();
  5390.  
  5391.  
  5392.  
  5393.  
  5394. extern char *__tzname[2];
  5395. extern int __daylight;
  5396. extern long int __timezone;
  5397.  
  5398.  
  5399.  
  5400.  
  5401. extern char *tzname[2];
  5402.  
  5403.  
  5404.  
  5405. extern void tzset (void) throw ();
  5406.  
  5407.  
  5408.  
  5409. extern int daylight;
  5410. extern long int timezone;
  5411.  
  5412.  
  5413.  
  5414.  
  5415.  
  5416. extern int stime (const time_t *__when) throw ();
  5417. # 319 "/usr/include/time.h" 3 4
  5418. extern time_t timegm (struct tm *__tp) throw ();
  5419.  
  5420.  
  5421. extern time_t timelocal (struct tm *__tp) throw ();
  5422.  
  5423.  
  5424. extern int dysize (int __year) throw () __attribute__ ((__const__));
  5425. # 334 "/usr/include/time.h" 3 4
  5426. extern int nanosleep (const struct timespec *__requested_time,
  5427.         struct timespec *__remaining);
  5428.  
  5429.  
  5430.  
  5431. extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw ();
  5432.  
  5433.  
  5434. extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw ();
  5435.  
  5436.  
  5437. extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
  5438.      throw ();
  5439.  
  5440.  
  5441.  
  5442.  
  5443.  
  5444.  
  5445. extern int clock_nanosleep (clockid_t __clock_id, int __flags,
  5446.        const struct timespec *__req,
  5447.        struct timespec *__rem);
  5448.  
  5449.  
  5450. extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw ();
  5451.  
  5452.  
  5453.  
  5454.  
  5455. extern int timer_create (clockid_t __clock_id,
  5456.     struct sigevent *__restrict __evp,
  5457.     timer_t *__restrict __timerid) throw ();
  5458.  
  5459.  
  5460. extern int timer_delete (timer_t __timerid) throw ();
  5461.  
  5462.  
  5463. extern int timer_settime (timer_t __timerid, int __flags,
  5464.      const struct itimerspec *__restrict __value,
  5465.      struct itimerspec *__restrict __ovalue) throw ();
  5466.  
  5467.  
  5468. extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
  5469.      throw ();
  5470.  
  5471.  
  5472. extern int timer_getoverrun (timer_t __timerid) throw ();
  5473.  
  5474.  
  5475.  
  5476.  
  5477.  
  5478. extern int timespec_get (struct timespec *__ts, int __base)
  5479.      throw () __attribute__ ((__nonnull__ (1)));
  5480. # 403 "/usr/include/time.h" 3 4
  5481. extern int getdate_err;
  5482. # 412 "/usr/include/time.h" 3 4
  5483. extern struct tm *getdate (const char *__string);
  5484. # 426 "/usr/include/time.h" 3 4
  5485. extern int getdate_r (const char *__restrict __string,
  5486.         struct tm *__restrict __resbufp);
  5487.  
  5488.  
  5489. }
  5490. # 25 "/usr/include/pthread.h" 2 3 4
  5491.  
  5492. # 1 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 1 3 4
  5493. # 21 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4
  5494. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  5495. # 22 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 2 3 4
  5496. # 60 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4
  5497. typedef unsigned long int pthread_t;
  5498.  
  5499.  
  5500. union pthread_attr_t
  5501. {
  5502.   char __size[56];
  5503.   long int __align;
  5504. };
  5505.  
  5506. typedef union pthread_attr_t pthread_attr_t;
  5507.  
  5508.  
  5509.  
  5510.  
  5511.  
  5512. typedef struct __pthread_internal_list
  5513. {
  5514.   struct __pthread_internal_list *__prev;
  5515.   struct __pthread_internal_list *__next;
  5516. } __pthread_list_t;
  5517. # 90 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4
  5518. typedef union
  5519. {
  5520.   struct __pthread_mutex_s
  5521.   {
  5522.     int __lock;
  5523.     unsigned int __count;
  5524.     int __owner;
  5525.  
  5526.     unsigned int __nusers;
  5527.  
  5528.  
  5529.  
  5530.     int __kind;
  5531.  
  5532.     short __spins;
  5533.     short __elision;
  5534.     __pthread_list_t __list;
  5535. # 125 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4
  5536.   } __data;
  5537.   char __size[40];
  5538.   long int __align;
  5539. } pthread_mutex_t;
  5540.  
  5541. typedef union
  5542. {
  5543.   char __size[4];
  5544.   int __align;
  5545. } pthread_mutexattr_t;
  5546.  
  5547.  
  5548.  
  5549.  
  5550. typedef union
  5551. {
  5552.   struct
  5553.   {
  5554.     int __lock;
  5555.     unsigned int __futex;
  5556.     __extension__ unsigned long long int __total_seq;
  5557.     __extension__ unsigned long long int __wakeup_seq;
  5558.     __extension__ unsigned long long int __woken_seq;
  5559.     void *__mutex;
  5560.     unsigned int __nwaiters;
  5561.     unsigned int __broadcast_seq;
  5562.   } __data;
  5563.   char __size[48];
  5564.   __extension__ long long int __align;
  5565. } pthread_cond_t;
  5566.  
  5567. typedef union
  5568. {
  5569.   char __size[4];
  5570.   int __align;
  5571. } pthread_condattr_t;
  5572.  
  5573.  
  5574.  
  5575. typedef unsigned int pthread_key_t;
  5576.  
  5577.  
  5578.  
  5579. typedef int pthread_once_t;
  5580.  
  5581.  
  5582.  
  5583.  
  5584.  
  5585. typedef union
  5586. {
  5587.  
  5588.   struct
  5589.   {
  5590.     int __lock;
  5591.     unsigned int __nr_readers;
  5592.     unsigned int __readers_wakeup;
  5593.     unsigned int __writer_wakeup;
  5594.     unsigned int __nr_readers_queued;
  5595.     unsigned int __nr_writers_queued;
  5596.     int __writer;
  5597.     int __shared;
  5598.     signed char __rwelision;
  5599.  
  5600.  
  5601.  
  5602.  
  5603.     unsigned char __pad1[7];
  5604.  
  5605.  
  5606.     unsigned long int __pad2;
  5607.  
  5608.  
  5609.     unsigned int __flags;
  5610.  
  5611.   } __data;
  5612. # 220 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4
  5613.   char __size[56];
  5614.   long int __align;
  5615. } pthread_rwlock_t;
  5616.  
  5617. typedef union
  5618. {
  5619.   char __size[8];
  5620.   long int __align;
  5621. } pthread_rwlockattr_t;
  5622.  
  5623.  
  5624.  
  5625.  
  5626.  
  5627. typedef volatile int pthread_spinlock_t;
  5628.  
  5629.  
  5630.  
  5631.  
  5632. typedef union
  5633. {
  5634.   char __size[32];
  5635.   long int __align;
  5636. } pthread_barrier_t;
  5637.  
  5638. typedef union
  5639. {
  5640.   char __size[4];
  5641.   int __align;
  5642. } pthread_barrierattr_t;
  5643. # 27 "/usr/include/pthread.h" 2 3 4
  5644. # 1 "/usr/include/x86_64-linux-gnu/bits/setjmp.h" 1 3 4
  5645. # 26 "/usr/include/x86_64-linux-gnu/bits/setjmp.h" 3 4
  5646. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  5647. # 27 "/usr/include/x86_64-linux-gnu/bits/setjmp.h" 2 3 4
  5648.  
  5649.  
  5650.  
  5651.  
  5652. typedef long int __jmp_buf[8];
  5653. # 28 "/usr/include/pthread.h" 2 3 4
  5654. # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
  5655. # 29 "/usr/include/pthread.h" 2 3 4
  5656.  
  5657.  
  5658.  
  5659. enum
  5660. {
  5661.   PTHREAD_CREATE_JOINABLE,
  5662.  
  5663.   PTHREAD_CREATE_DETACHED
  5664.  
  5665. };
  5666.  
  5667.  
  5668.  
  5669. enum
  5670. {
  5671.   PTHREAD_MUTEX_TIMED_NP,
  5672.   PTHREAD_MUTEX_RECURSIVE_NP,
  5673.   PTHREAD_MUTEX_ERRORCHECK_NP,
  5674.   PTHREAD_MUTEX_ADAPTIVE_NP
  5675.  
  5676.   ,
  5677.   PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
  5678.   PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
  5679.   PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
  5680.   PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
  5681.  
  5682.  
  5683.  
  5684.   , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP
  5685.  
  5686. };
  5687.  
  5688.  
  5689.  
  5690.  
  5691. enum
  5692. {
  5693.   PTHREAD_MUTEX_STALLED,
  5694.   PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED,
  5695.   PTHREAD_MUTEX_ROBUST,
  5696.   PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST
  5697. };
  5698.  
  5699.  
  5700.  
  5701.  
  5702.  
  5703. enum
  5704. {
  5705.   PTHREAD_PRIO_NONE,
  5706.   PTHREAD_PRIO_INHERIT,
  5707.   PTHREAD_PRIO_PROTECT
  5708. };
  5709. # 114 "/usr/include/pthread.h" 3 4
  5710. enum
  5711. {
  5712.   PTHREAD_RWLOCK_PREFER_READER_NP,
  5713.   PTHREAD_RWLOCK_PREFER_WRITER_NP,
  5714.   PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
  5715.   PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
  5716. };
  5717. # 155 "/usr/include/pthread.h" 3 4
  5718. enum
  5719. {
  5720.   PTHREAD_INHERIT_SCHED,
  5721.  
  5722.   PTHREAD_EXPLICIT_SCHED
  5723.  
  5724. };
  5725.  
  5726.  
  5727.  
  5728. enum
  5729. {
  5730.   PTHREAD_SCOPE_SYSTEM,
  5731.  
  5732.   PTHREAD_SCOPE_PROCESS
  5733.  
  5734. };
  5735.  
  5736.  
  5737.  
  5738. enum
  5739. {
  5740.   PTHREAD_PROCESS_PRIVATE,
  5741.  
  5742.   PTHREAD_PROCESS_SHARED
  5743.  
  5744. };
  5745. # 190 "/usr/include/pthread.h" 3 4
  5746. struct _pthread_cleanup_buffer
  5747. {
  5748.   void (*__routine) (void *);
  5749.   void *__arg;
  5750.   int __canceltype;
  5751.   struct _pthread_cleanup_buffer *__prev;
  5752. };
  5753.  
  5754.  
  5755. enum
  5756. {
  5757.   PTHREAD_CANCEL_ENABLE,
  5758.  
  5759.   PTHREAD_CANCEL_DISABLE
  5760.  
  5761. };
  5762. enum
  5763. {
  5764.   PTHREAD_CANCEL_DEFERRED,
  5765.  
  5766.   PTHREAD_CANCEL_ASYNCHRONOUS
  5767.  
  5768. };
  5769. # 228 "/usr/include/pthread.h" 3 4
  5770. extern "C" {
  5771.  
  5772.  
  5773.  
  5774.  
  5775. extern int pthread_create (pthread_t *__restrict __newthread,
  5776.       const pthread_attr_t *__restrict __attr,
  5777.       void *(*__start_routine) (void *),
  5778.       void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3)));
  5779.  
  5780.  
  5781.  
  5782.  
  5783.  
  5784. extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
  5785.  
  5786.  
  5787.  
  5788.  
  5789.  
  5790.  
  5791.  
  5792. extern int pthread_join (pthread_t __th, void **__thread_return);
  5793.  
  5794.  
  5795.  
  5796.  
  5797. extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw ();
  5798.  
  5799.  
  5800.  
  5801.  
  5802.  
  5803.  
  5804.  
  5805. extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
  5806.      const struct timespec *__abstime);
  5807.  
  5808.  
  5809.  
  5810.  
  5811.  
  5812.  
  5813. extern int pthread_detach (pthread_t __th) throw ();
  5814.  
  5815.  
  5816.  
  5817. extern pthread_t pthread_self (void) throw () __attribute__ ((__const__));
  5818.  
  5819.  
  5820. extern int pthread_equal (pthread_t __thread1, pthread_t __thread2)
  5821.   throw () __attribute__ ((__const__));
  5822.  
  5823.  
  5824.  
  5825.  
  5826.  
  5827.  
  5828.  
  5829. extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1)));
  5830.  
  5831.  
  5832. extern int pthread_attr_destroy (pthread_attr_t *__attr)
  5833.      throw () __attribute__ ((__nonnull__ (1)));
  5834.  
  5835.  
  5836. extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
  5837.      int *__detachstate)
  5838.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5839.  
  5840.  
  5841. extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
  5842.      int __detachstate)
  5843.      throw () __attribute__ ((__nonnull__ (1)));
  5844.  
  5845.  
  5846.  
  5847. extern int pthread_attr_getguardsize (const pthread_attr_t *__attr,
  5848.           size_t *__guardsize)
  5849.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5850.  
  5851.  
  5852. extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
  5853.           size_t __guardsize)
  5854.      throw () __attribute__ ((__nonnull__ (1)));
  5855.  
  5856.  
  5857.  
  5858. extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr,
  5859.            struct sched_param *__restrict __param)
  5860.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5861.  
  5862.  
  5863. extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
  5864.            const struct sched_param *__restrict
  5865.            __param) throw () __attribute__ ((__nonnull__ (1, 2)));
  5866.  
  5867.  
  5868. extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
  5869.      __attr, int *__restrict __policy)
  5870.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5871.  
  5872.  
  5873. extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
  5874.      throw () __attribute__ ((__nonnull__ (1)));
  5875.  
  5876.  
  5877. extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
  5878.       __attr, int *__restrict __inherit)
  5879.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5880.  
  5881.  
  5882. extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
  5883.       int __inherit)
  5884.      throw () __attribute__ ((__nonnull__ (1)));
  5885.  
  5886.  
  5887.  
  5888. extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
  5889.       int *__restrict __scope)
  5890.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5891.  
  5892.  
  5893. extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
  5894.      throw () __attribute__ ((__nonnull__ (1)));
  5895.  
  5896.  
  5897. extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
  5898.           __attr, void **__restrict __stackaddr)
  5899.      throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));
  5900.  
  5901.  
  5902.  
  5903.  
  5904.  
  5905. extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
  5906.           void *__stackaddr)
  5907.      throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));
  5908.  
  5909.  
  5910. extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
  5911.           __attr, size_t *__restrict __stacksize)
  5912.      throw () __attribute__ ((__nonnull__ (1, 2)));
  5913.  
  5914.  
  5915.  
  5916.  
  5917. extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
  5918.           size_t __stacksize)
  5919.      throw () __attribute__ ((__nonnull__ (1)));
  5920.  
  5921.  
  5922.  
  5923. extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
  5924.       void **__restrict __stackaddr,
  5925.       size_t *__restrict __stacksize)
  5926.      throw () __attribute__ ((__nonnull__ (1, 2, 3)));
  5927.  
  5928.  
  5929.  
  5930.  
  5931. extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
  5932.       size_t __stacksize) throw () __attribute__ ((__nonnull__ (1)));
  5933.  
  5934.  
  5935.  
  5936.  
  5937.  
  5938. extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
  5939.      size_t __cpusetsize,
  5940.      const cpu_set_t *__cpuset)
  5941.      throw () __attribute__ ((__nonnull__ (1, 3)));
  5942.  
  5943.  
  5944.  
  5945. extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr,
  5946.      size_t __cpusetsize,
  5947.      cpu_set_t *__cpuset)
  5948.      throw () __attribute__ ((__nonnull__ (1, 3)));
  5949.  
  5950.  
  5951. extern int pthread_getattr_default_np (pthread_attr_t *__attr)
  5952.      throw () __attribute__ ((__nonnull__ (1)));
  5953.  
  5954.  
  5955.  
  5956. extern int pthread_setattr_default_np (const pthread_attr_t *__attr)
  5957.      throw () __attribute__ ((__nonnull__ (1)));
  5958.  
  5959.  
  5960.  
  5961.  
  5962. extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
  5963.      throw () __attribute__ ((__nonnull__ (2)));
  5964.  
  5965.  
  5966.  
  5967.  
  5968.  
  5969.  
  5970.  
  5971. extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
  5972.       const struct sched_param *__param)
  5973.      throw () __attribute__ ((__nonnull__ (3)));
  5974.  
  5975.  
  5976. extern int pthread_getschedparam (pthread_t __target_thread,
  5977.       int *__restrict __policy,
  5978.       struct sched_param *__restrict __param)
  5979.      throw () __attribute__ ((__nonnull__ (2, 3)));
  5980.  
  5981.  
  5982. extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
  5983.      throw ();
  5984.  
  5985.  
  5986.  
  5987.  
  5988. extern int pthread_getname_np (pthread_t __target_thread, char *__buf,
  5989.           size_t __buflen)
  5990.      throw () __attribute__ ((__nonnull__ (2)));
  5991.  
  5992.  
  5993. extern int pthread_setname_np (pthread_t __target_thread, const char *__name)
  5994.      throw () __attribute__ ((__nonnull__ (2)));
  5995.  
  5996.  
  5997.  
  5998.  
  5999.  
  6000. extern int pthread_getconcurrency (void) throw ();
  6001.  
  6002.  
  6003. extern int pthread_setconcurrency (int __level) throw ();
  6004.  
  6005.  
  6006.  
  6007.  
  6008.  
  6009.  
  6010.  
  6011. extern int pthread_yield (void) throw ();
  6012.  
  6013.  
  6014.  
  6015.  
  6016. extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
  6017.        const cpu_set_t *__cpuset)
  6018.      throw () __attribute__ ((__nonnull__ (3)));
  6019.  
  6020.  
  6021. extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
  6022.        cpu_set_t *__cpuset)
  6023.      throw () __attribute__ ((__nonnull__ (3)));
  6024. # 494 "/usr/include/pthread.h" 3 4
  6025. extern int pthread_once (pthread_once_t *__once_control,
  6026.     void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
  6027. # 506 "/usr/include/pthread.h" 3 4
  6028. extern int pthread_setcancelstate (int __state, int *__oldstate);
  6029.  
  6030.  
  6031.  
  6032. extern int pthread_setcanceltype (int __type, int *__oldtype);
  6033.  
  6034.  
  6035. extern int pthread_cancel (pthread_t __th);
  6036.  
  6037.  
  6038.  
  6039.  
  6040. extern void pthread_testcancel (void);
  6041.  
  6042.  
  6043.  
  6044.  
  6045. typedef struct
  6046. {
  6047.   struct
  6048.   {
  6049.     __jmp_buf __cancel_jmp_buf;
  6050.     int __mask_was_saved;
  6051.   } __cancel_jmp_buf[1];
  6052.   void *__pad[4];
  6053. } __pthread_unwind_buf_t __attribute__ ((__aligned__));
  6054. # 540 "/usr/include/pthread.h" 3 4
  6055. struct __pthread_cleanup_frame
  6056. {
  6057.   void (*__cancel_routine) (void *);
  6058.   void *__cancel_arg;
  6059.   int __do_it;
  6060.   int __cancel_type;
  6061. };
  6062.  
  6063.  
  6064.  
  6065.  
  6066. class __pthread_cleanup_class
  6067. {
  6068.   void (*__cancel_routine) (void *);
  6069.   void *__cancel_arg;
  6070.   int __do_it;
  6071.   int __cancel_type;
  6072.  
  6073.  public:
  6074.   __pthread_cleanup_class (void (*__fct) (void *), void *__arg)
  6075.     : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { }
  6076.   ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); }
  6077.   void __setdoit (int __newval) { __do_it = __newval; }
  6078.   void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED,
  6079.         &__cancel_type); }
  6080.   void __restore () const { pthread_setcanceltype (__cancel_type, 0); }
  6081. };
  6082. # 742 "/usr/include/pthread.h" 3 4
  6083. struct __jmp_buf_tag;
  6084. extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) throw ();
  6085.  
  6086.  
  6087.  
  6088.  
  6089.  
  6090. extern int pthread_mutex_init (pthread_mutex_t *__mutex,
  6091.           const pthread_mutexattr_t *__mutexattr)
  6092.      throw () __attribute__ ((__nonnull__ (1)));
  6093.  
  6094.  
  6095. extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
  6096.      throw () __attribute__ ((__nonnull__ (1)));
  6097.  
  6098.  
  6099. extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
  6100.      throw () __attribute__ ((__nonnull__ (1)));
  6101.  
  6102.  
  6103. extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
  6104.      throw () __attribute__ ((__nonnull__ (1)));
  6105.  
  6106.  
  6107.  
  6108. extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
  6109.         const struct timespec *__restrict
  6110.         __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
  6111.  
  6112.  
  6113.  
  6114. extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
  6115.      throw () __attribute__ ((__nonnull__ (1)));
  6116.  
  6117.  
  6118.  
  6119. extern int pthread_mutex_getprioceiling (const pthread_mutex_t *
  6120.       __restrict __mutex,
  6121.       int *__restrict __prioceiling)
  6122.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6123.  
  6124.  
  6125.  
  6126. extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
  6127.       int __prioceiling,
  6128.       int *__restrict __old_ceiling)
  6129.      throw () __attribute__ ((__nonnull__ (1, 3)));
  6130.  
  6131.  
  6132.  
  6133.  
  6134. extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
  6135.      throw () __attribute__ ((__nonnull__ (1)));
  6136.  
  6137. extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
  6138.      throw () __attribute__ ((__nonnull__ (1)));
  6139. # 806 "/usr/include/pthread.h" 3 4
  6140. extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
  6141.      throw () __attribute__ ((__nonnull__ (1)));
  6142.  
  6143.  
  6144. extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
  6145.      throw () __attribute__ ((__nonnull__ (1)));
  6146.  
  6147.  
  6148. extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
  6149.       __restrict __attr,
  6150.       int *__restrict __pshared)
  6151.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6152.  
  6153.  
  6154. extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
  6155.       int __pshared)
  6156.      throw () __attribute__ ((__nonnull__ (1)));
  6157.  
  6158.  
  6159.  
  6160. extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
  6161.           __attr, int *__restrict __kind)
  6162.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6163.  
  6164.  
  6165.  
  6166.  
  6167. extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
  6168.      throw () __attribute__ ((__nonnull__ (1)));
  6169.  
  6170.  
  6171.  
  6172. extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t *
  6173.        __restrict __attr,
  6174.        int *__restrict __protocol)
  6175.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6176.  
  6177.  
  6178.  
  6179. extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
  6180.        int __protocol)
  6181.      throw () __attribute__ ((__nonnull__ (1)));
  6182.  
  6183.  
  6184. extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *
  6185.           __restrict __attr,
  6186.           int *__restrict __prioceiling)
  6187.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6188.  
  6189.  
  6190. extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
  6191.           int __prioceiling)
  6192.      throw () __attribute__ ((__nonnull__ (1)));
  6193.  
  6194.  
  6195.  
  6196. extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr,
  6197.      int *__robustness)
  6198.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6199.  
  6200. extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr,
  6201.         int *__robustness)
  6202.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6203.  
  6204.  
  6205.  
  6206. extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr,
  6207.      int __robustness)
  6208.      throw () __attribute__ ((__nonnull__ (1)));
  6209.  
  6210. extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
  6211.         int __robustness)
  6212.      throw () __attribute__ ((__nonnull__ (1)));
  6213. # 888 "/usr/include/pthread.h" 3 4
  6214. extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
  6215.     const pthread_rwlockattr_t *__restrict
  6216.     __attr) throw () __attribute__ ((__nonnull__ (1)));
  6217.  
  6218.  
  6219. extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
  6220.      throw () __attribute__ ((__nonnull__ (1)));
  6221.  
  6222.  
  6223. extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
  6224.      throw () __attribute__ ((__nonnull__ (1)));
  6225.  
  6226.  
  6227. extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
  6228.   throw () __attribute__ ((__nonnull__ (1)));
  6229.  
  6230.  
  6231.  
  6232. extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
  6233.            const struct timespec *__restrict
  6234.            __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
  6235.  
  6236.  
  6237.  
  6238. extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
  6239.      throw () __attribute__ ((__nonnull__ (1)));
  6240.  
  6241.  
  6242. extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
  6243.      throw () __attribute__ ((__nonnull__ (1)));
  6244.  
  6245.  
  6246.  
  6247. extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
  6248.            const struct timespec *__restrict
  6249.            __abstime) throw () __attribute__ ((__nonnull__ (1, 2)));
  6250.  
  6251.  
  6252.  
  6253. extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
  6254.      throw () __attribute__ ((__nonnull__ (1)));
  6255.  
  6256.  
  6257.  
  6258.  
  6259.  
  6260. extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
  6261.      throw () __attribute__ ((__nonnull__ (1)));
  6262.  
  6263.  
  6264. extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
  6265.      throw () __attribute__ ((__nonnull__ (1)));
  6266.  
  6267.  
  6268. extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
  6269.        __restrict __attr,
  6270.        int *__restrict __pshared)
  6271.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6272.  
  6273.  
  6274. extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
  6275.        int __pshared)
  6276.      throw () __attribute__ ((__nonnull__ (1)));
  6277.  
  6278.  
  6279. extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *
  6280.        __restrict __attr,
  6281.        int *__restrict __pref)
  6282.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6283.  
  6284.  
  6285. extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
  6286.        int __pref) throw () __attribute__ ((__nonnull__ (1)));
  6287.  
  6288.  
  6289.  
  6290.  
  6291.  
  6292.  
  6293.  
  6294. extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
  6295.          const pthread_condattr_t *__restrict __cond_attr)
  6296.      throw () __attribute__ ((__nonnull__ (1)));
  6297.  
  6298.  
  6299. extern int pthread_cond_destroy (pthread_cond_t *__cond)
  6300.      throw () __attribute__ ((__nonnull__ (1)));
  6301.  
  6302.  
  6303. extern int pthread_cond_signal (pthread_cond_t *__cond)
  6304.      throw () __attribute__ ((__nonnull__ (1)));
  6305.  
  6306.  
  6307. extern int pthread_cond_broadcast (pthread_cond_t *__cond)
  6308.      throw () __attribute__ ((__nonnull__ (1)));
  6309.  
  6310.  
  6311.  
  6312.  
  6313.  
  6314.  
  6315. extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
  6316.          pthread_mutex_t *__restrict __mutex)
  6317.      __attribute__ ((__nonnull__ (1, 2)));
  6318. # 1000 "/usr/include/pthread.h" 3 4
  6319. extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
  6320.        pthread_mutex_t *__restrict __mutex,
  6321.        const struct timespec *__restrict __abstime)
  6322.      __attribute__ ((__nonnull__ (1, 2, 3)));
  6323.  
  6324.  
  6325.  
  6326.  
  6327. extern int pthread_condattr_init (pthread_condattr_t *__attr)
  6328.      throw () __attribute__ ((__nonnull__ (1)));
  6329.  
  6330.  
  6331. extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
  6332.      throw () __attribute__ ((__nonnull__ (1)));
  6333.  
  6334.  
  6335. extern int pthread_condattr_getpshared (const pthread_condattr_t *
  6336.      __restrict __attr,
  6337.      int *__restrict __pshared)
  6338.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6339.  
  6340.  
  6341. extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
  6342.      int __pshared) throw () __attribute__ ((__nonnull__ (1)));
  6343.  
  6344.  
  6345.  
  6346. extern int pthread_condattr_getclock (const pthread_condattr_t *
  6347.           __restrict __attr,
  6348.           __clockid_t *__restrict __clock_id)
  6349.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6350.  
  6351.  
  6352. extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
  6353.           __clockid_t __clock_id)
  6354.      throw () __attribute__ ((__nonnull__ (1)));
  6355. # 1044 "/usr/include/pthread.h" 3 4
  6356. extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
  6357.      throw () __attribute__ ((__nonnull__ (1)));
  6358.  
  6359.  
  6360. extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
  6361.      throw () __attribute__ ((__nonnull__ (1)));
  6362.  
  6363.  
  6364. extern int pthread_spin_lock (pthread_spinlock_t *__lock)
  6365.      throw () __attribute__ ((__nonnull__ (1)));
  6366.  
  6367.  
  6368. extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
  6369.      throw () __attribute__ ((__nonnull__ (1)));
  6370.  
  6371.  
  6372. extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
  6373.      throw () __attribute__ ((__nonnull__ (1)));
  6374.  
  6375.  
  6376.  
  6377.  
  6378.  
  6379.  
  6380. extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
  6381.      const pthread_barrierattr_t *__restrict
  6382.      __attr, unsigned int __count)
  6383.      throw () __attribute__ ((__nonnull__ (1)));
  6384.  
  6385.  
  6386. extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
  6387.      throw () __attribute__ ((__nonnull__ (1)));
  6388.  
  6389.  
  6390. extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
  6391.      throw () __attribute__ ((__nonnull__ (1)));
  6392.  
  6393.  
  6394.  
  6395. extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
  6396.      throw () __attribute__ ((__nonnull__ (1)));
  6397.  
  6398.  
  6399. extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
  6400.      throw () __attribute__ ((__nonnull__ (1)));
  6401.  
  6402.  
  6403. extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
  6404.         __restrict __attr,
  6405.         int *__restrict __pshared)
  6406.      throw () __attribute__ ((__nonnull__ (1, 2)));
  6407.  
  6408.  
  6409. extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
  6410.         int __pshared)
  6411.      throw () __attribute__ ((__nonnull__ (1)));
  6412. # 1111 "/usr/include/pthread.h" 3 4
  6413. extern int pthread_key_create (pthread_key_t *__key,
  6414.           void (*__destr_function) (void *))
  6415.      throw () __attribute__ ((__nonnull__ (1)));
  6416.  
  6417.  
  6418. extern int pthread_key_delete (pthread_key_t __key) throw ();
  6419.  
  6420.  
  6421. extern void *pthread_getspecific (pthread_key_t __key) throw ();
  6422.  
  6423.  
  6424. extern int pthread_setspecific (pthread_key_t __key,
  6425.     const void *__pointer) throw () ;
  6426.  
  6427.  
  6428.  
  6429.  
  6430. extern int pthread_getcpuclockid (pthread_t __thread_id,
  6431.       __clockid_t *__clock_id)
  6432.      throw () __attribute__ ((__nonnull__ (2)));
  6433. # 1145 "/usr/include/pthread.h" 3 4
  6434. extern int pthread_atfork (void (*__prepare) (void),
  6435.       void (*__parent) (void),
  6436.       void (*__child) (void)) throw ();
  6437. # 1159 "/usr/include/pthread.h" 3 4
  6438. }
  6439. # 36 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h" 2 3
  6440. # 47 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h" 3
  6441. typedef pthread_t __gthread_t;
  6442. typedef pthread_key_t __gthread_key_t;
  6443. typedef pthread_once_t __gthread_once_t;
  6444. typedef pthread_mutex_t __gthread_mutex_t;
  6445. typedef pthread_mutex_t __gthread_recursive_mutex_t;
  6446. typedef pthread_cond_t __gthread_cond_t;
  6447. typedef struct timespec __gthread_time_t;
  6448. # 101 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h" 3
  6449. static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once")));
  6450. static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific")));
  6451. static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific")));
  6452.  
  6453. static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create")));
  6454. static __typeof(pthread_join) __gthrw_pthread_join __attribute__ ((__weakref__("pthread_join")));
  6455. static __typeof(pthread_equal) __gthrw_pthread_equal __attribute__ ((__weakref__("pthread_equal")));
  6456. static __typeof(pthread_self) __gthrw_pthread_self __attribute__ ((__weakref__("pthread_self")));
  6457. static __typeof(pthread_detach) __gthrw_pthread_detach __attribute__ ((__weakref__("pthread_detach")));
  6458.  
  6459. static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel")));
  6460.  
  6461. static __typeof(sched_yield) __gthrw_sched_yield __attribute__ ((__weakref__("sched_yield")));
  6462.  
  6463. static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock")));
  6464. static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock")));
  6465.  
  6466. static __typeof(pthread_mutex_timedlock) __gthrw_pthread_mutex_timedlock __attribute__ ((__weakref__("pthread_mutex_timedlock")));
  6467.  
  6468. static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock")));
  6469. static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init")));
  6470. static __typeof(pthread_mutex_destroy) __gthrw_pthread_mutex_destroy __attribute__ ((__weakref__("pthread_mutex_destroy")));
  6471.  
  6472. static __typeof(pthread_cond_init) __gthrw_pthread_cond_init __attribute__ ((__weakref__("pthread_cond_init")));
  6473. static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast")));
  6474. static __typeof(pthread_cond_signal) __gthrw_pthread_cond_signal __attribute__ ((__weakref__("pthread_cond_signal")));
  6475. static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait")));
  6476. static __typeof(pthread_cond_timedwait) __gthrw_pthread_cond_timedwait __attribute__ ((__weakref__("pthread_cond_timedwait")));
  6477. static __typeof(pthread_cond_destroy) __gthrw_pthread_cond_destroy __attribute__ ((__weakref__("pthread_cond_destroy")));
  6478.  
  6479. static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create")));
  6480. static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete")));
  6481. static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init")));
  6482. static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype")));
  6483. static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy")));
  6484. # 236 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h" 3
  6485. static __typeof(pthread_key_create) __gthrw___pthread_key_create __attribute__ ((__weakref__("__pthread_key_create")));
  6486. # 246 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h" 3
  6487. static inline int
  6488. __gthread_active_p (void)
  6489. {
  6490.   static void *const __gthread_active_ptr
  6491.     = __extension__ (void *) &__gthrw___pthread_key_create;
  6492.   return __gthread_active_ptr != 0;
  6493. }
  6494. # 658 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h" 3
  6495. static inline int
  6496. __gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
  6497.     void *__args)
  6498. {
  6499.   return __gthrw_pthread_create (__threadid, __null, __func, __args);
  6500. }
  6501.  
  6502. static inline int
  6503. __gthread_join (__gthread_t __threadid, void **__value_ptr)
  6504. {
  6505.   return __gthrw_pthread_join (__threadid, __value_ptr);
  6506. }
  6507.  
  6508. static inline int
  6509. __gthread_detach (__gthread_t __threadid)
  6510. {
  6511.   return __gthrw_pthread_detach (__threadid);
  6512. }
  6513.  
  6514. static inline int
  6515. __gthread_equal (__gthread_t __t1, __gthread_t __t2)
  6516. {
  6517.   return __gthrw_pthread_equal (__t1, __t2);
  6518. }
  6519.  
  6520. static inline __gthread_t
  6521. __gthread_self (void)
  6522. {
  6523.   return __gthrw_pthread_self ();
  6524. }
  6525.  
  6526. static inline int
  6527. __gthread_yield (void)
  6528. {
  6529.   return __gthrw_sched_yield ();
  6530. }
  6531.  
  6532. static inline int
  6533. __gthread_once (__gthread_once_t *__once, void (*__func) (void))
  6534. {
  6535.   if (__gthread_active_p ())
  6536.     return __gthrw_pthread_once (__once, __func);
  6537.   else
  6538.     return -1;
  6539. }
  6540.  
  6541. static inline int
  6542. __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
  6543. {
  6544.   return __gthrw_pthread_key_create (__key, __dtor);
  6545. }
  6546.  
  6547. static inline int
  6548. __gthread_key_delete (__gthread_key_t __key)
  6549. {
  6550.   return __gthrw_pthread_key_delete (__key);
  6551. }
  6552.  
  6553. static inline void *
  6554. __gthread_getspecific (__gthread_key_t __key)
  6555. {
  6556.   return __gthrw_pthread_getspecific (__key);
  6557. }
  6558.  
  6559. static inline int
  6560. __gthread_setspecific (__gthread_key_t __key, const void *__ptr)
  6561. {
  6562.   return __gthrw_pthread_setspecific (__key, __ptr);
  6563. }
  6564.  
  6565. static inline void
  6566. __gthread_mutex_init_function (__gthread_mutex_t *__mutex)
  6567. {
  6568.   if (__gthread_active_p ())
  6569.     __gthrw_pthread_mutex_init (__mutex, __null);
  6570. }
  6571.  
  6572. static inline int
  6573. __gthread_mutex_destroy (__gthread_mutex_t *__mutex)
  6574. {
  6575.   if (__gthread_active_p ())
  6576.     return __gthrw_pthread_mutex_destroy (__mutex);
  6577.   else
  6578.     return 0;
  6579. }
  6580.  
  6581. static inline int
  6582. __gthread_mutex_lock (__gthread_mutex_t *__mutex)
  6583. {
  6584.   if (__gthread_active_p ())
  6585.     return __gthrw_pthread_mutex_lock (__mutex);
  6586.   else
  6587.     return 0;
  6588. }
  6589.  
  6590. static inline int
  6591. __gthread_mutex_trylock (__gthread_mutex_t *__mutex)
  6592. {
  6593.   if (__gthread_active_p ())
  6594.     return __gthrw_pthread_mutex_trylock (__mutex);
  6595.   else
  6596.     return 0;
  6597. }
  6598.  
  6599.  
  6600. static inline int
  6601. __gthread_mutex_timedlock (__gthread_mutex_t *__mutex,
  6602.       const __gthread_time_t *__abs_timeout)
  6603. {
  6604.   if (__gthread_active_p ())
  6605.     return __gthrw_pthread_mutex_timedlock (__mutex, __abs_timeout);
  6606.   else
  6607.     return 0;
  6608. }
  6609.  
  6610.  
  6611. static inline int
  6612. __gthread_mutex_unlock (__gthread_mutex_t *__mutex)
  6613. {
  6614.   if (__gthread_active_p ())
  6615.     return __gthrw_pthread_mutex_unlock (__mutex);
  6616.   else
  6617.     return 0;
  6618. }
  6619. # 807 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h" 3
  6620. static inline int
  6621. __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
  6622. {
  6623.   return __gthread_mutex_lock (__mutex);
  6624. }
  6625.  
  6626. static inline int
  6627. __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
  6628. {
  6629.   return __gthread_mutex_trylock (__mutex);
  6630. }
  6631.  
  6632.  
  6633. static inline int
  6634. __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex,
  6635.          const __gthread_time_t *__abs_timeout)
  6636. {
  6637.   return __gthread_mutex_timedlock (__mutex, __abs_timeout);
  6638. }
  6639.  
  6640.  
  6641. static inline int
  6642. __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
  6643. {
  6644.   return __gthread_mutex_unlock (__mutex);
  6645. }
  6646.  
  6647. static inline int
  6648. __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex)
  6649. {
  6650.   return __gthread_mutex_destroy (__mutex);
  6651. }
  6652. # 849 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h" 3
  6653. static inline int
  6654. __gthread_cond_broadcast (__gthread_cond_t *__cond)
  6655. {
  6656.   return __gthrw_pthread_cond_broadcast (__cond);
  6657. }
  6658.  
  6659. static inline int
  6660. __gthread_cond_signal (__gthread_cond_t *__cond)
  6661. {
  6662.   return __gthrw_pthread_cond_signal (__cond);
  6663. }
  6664.  
  6665. static inline int
  6666. __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
  6667. {
  6668.   return __gthrw_pthread_cond_wait (__cond, __mutex);
  6669. }
  6670.  
  6671. static inline int
  6672. __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
  6673.      const __gthread_time_t *__abs_timeout)
  6674. {
  6675.   return __gthrw_pthread_cond_timedwait (__cond, __mutex, __abs_timeout);
  6676. }
  6677.  
  6678. static inline int
  6679. __gthread_cond_wait_recursive (__gthread_cond_t *__cond,
  6680.           __gthread_recursive_mutex_t *__mutex)
  6681. {
  6682.   return __gthread_cond_wait (__cond, __mutex);
  6683. }
  6684.  
  6685. static inline int
  6686. __gthread_cond_destroy (__gthread_cond_t* __cond)
  6687. {
  6688.   return __gthrw_pthread_cond_destroy (__cond);
  6689. }
  6690. # 149 "/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h" 2 3
  6691.  
  6692.  
  6693. #pragma GCC visibility pop
  6694. # 36 "/usr/include/c++/5/ext/atomicity.h" 2 3
  6695. # 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h" 1 3
  6696. # 32 "/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h" 3
  6697. typedef int _Atomic_word;
  6698. # 37 "/usr/include/c++/5/ext/atomicity.h" 2 3
  6699.  
  6700. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  6701. {
  6702.  
  6703.  
  6704.  
  6705.  
  6706.  
  6707.  
  6708.  
  6709.   static inline _Atomic_word
  6710.   __exchange_and_add(volatile _Atomic_word* __mem, int __val)
  6711.   { return __atomic_fetch_add(__mem, __val, 4); }
  6712.  
  6713.   static inline void
  6714.   __atomic_add(volatile _Atomic_word* __mem, int __val)
  6715.   { __atomic_fetch_add(__mem, __val, 4); }
  6716. # 64 "/usr/include/c++/5/ext/atomicity.h" 3
  6717.   static inline _Atomic_word
  6718.   __exchange_and_add_single(_Atomic_word* __mem, int __val)
  6719.   {
  6720.     _Atomic_word __result = *__mem;
  6721.     *__mem += __val;
  6722.     return __result;
  6723.   }
  6724.  
  6725.   static inline void
  6726.   __atomic_add_single(_Atomic_word* __mem, int __val)
  6727.   { *__mem += __val; }
  6728.  
  6729.   static inline _Atomic_word
  6730.   __attribute__ ((__unused__))
  6731.   __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)
  6732.   {
  6733.  
  6734.     if (__gthread_active_p())
  6735.       return __exchange_and_add(__mem, __val);
  6736.     else
  6737.       return __exchange_and_add_single(__mem, __val);
  6738.  
  6739.  
  6740.  
  6741.   }
  6742.  
  6743.   static inline void
  6744.   __attribute__ ((__unused__))
  6745.   __atomic_add_dispatch(_Atomic_word* __mem, int __val)
  6746.   {
  6747.  
  6748.     if (__gthread_active_p())
  6749.       __atomic_add(__mem, __val);
  6750.     else
  6751.       __atomic_add_single(__mem, __val);
  6752.  
  6753.  
  6754.  
  6755.   }
  6756.  
  6757.  
  6758. }
  6759. # 40 "/usr/include/c++/5/bits/ios_base.h" 2 3
  6760.  
  6761. # 1 "/usr/include/c++/5/bits/locale_classes.h" 1 3
  6762. # 37 "/usr/include/c++/5/bits/locale_classes.h" 3
  6763.        
  6764. # 38 "/usr/include/c++/5/bits/locale_classes.h" 3
  6765.  
  6766.  
  6767. # 1 "/usr/include/c++/5/string" 1 3
  6768. # 36 "/usr/include/c++/5/string" 3
  6769.        
  6770. # 37 "/usr/include/c++/5/string" 3
  6771.  
  6772.  
  6773.  
  6774.  
  6775. # 1 "/usr/include/c++/5/bits/allocator.h" 1 3
  6776. # 46 "/usr/include/c++/5/bits/allocator.h" 3
  6777. # 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h" 1 3
  6778. # 33 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h" 3
  6779. # 1 "/usr/include/c++/5/ext/new_allocator.h" 1 3
  6780. # 33 "/usr/include/c++/5/ext/new_allocator.h" 3
  6781. # 1 "/usr/include/c++/5/new" 1 3
  6782. # 37 "/usr/include/c++/5/new" 3
  6783.        
  6784. # 38 "/usr/include/c++/5/new" 3
  6785.  
  6786.  
  6787.  
  6788.  
  6789. #pragma GCC visibility push(default)
  6790.  
  6791. extern "C++" {
  6792.  
  6793. namespace std
  6794. {
  6795.  
  6796.  
  6797.  
  6798.  
  6799.  
  6800.  
  6801.   class bad_alloc : public exception
  6802.   {
  6803.   public:
  6804.     bad_alloc() throw() { }
  6805.  
  6806.  
  6807.  
  6808.     virtual ~bad_alloc() throw();
  6809.  
  6810.  
  6811.     virtual const char* what() const throw();
  6812.   };
  6813. # 82 "/usr/include/c++/5/new" 3
  6814.   struct nothrow_t { };
  6815.  
  6816.   extern const nothrow_t nothrow;
  6817.  
  6818.  
  6819.  
  6820.   typedef void (*new_handler)();
  6821.  
  6822.  
  6823.  
  6824.   new_handler set_new_handler(new_handler) throw();
  6825.  
  6826.  
  6827.  
  6828.  
  6829.  
  6830. }
  6831. # 111 "/usr/include/c++/5/new" 3
  6832. void* operator new(std::size_t) throw(std::bad_alloc)
  6833.   __attribute__((__externally_visible__));
  6834. void* operator new[](std::size_t) throw(std::bad_alloc)
  6835.   __attribute__((__externally_visible__));
  6836. void operator delete(void*) throw()
  6837.   __attribute__((__externally_visible__));
  6838. void operator delete[](void*) throw()
  6839.   __attribute__((__externally_visible__));
  6840. void* operator new(std::size_t, const std::nothrow_t&) throw()
  6841.   __attribute__((__externally_visible__));
  6842. void* operator new[](std::size_t, const std::nothrow_t&) throw()
  6843.   __attribute__((__externally_visible__));
  6844. void operator delete(void*, const std::nothrow_t&) throw()
  6845.   __attribute__((__externally_visible__));
  6846. void operator delete[](void*, const std::nothrow_t&) throw()
  6847.   __attribute__((__externally_visible__));
  6848.  
  6849.  
  6850. inline void* operator new(std::size_t, void* __p) throw()
  6851. { return __p; }
  6852. inline void* operator new[](std::size_t, void* __p) throw()
  6853. { return __p; }
  6854.  
  6855.  
  6856. inline void operator delete (void*, void*) throw() { }
  6857. inline void operator delete[](void*, void*) throw() { }
  6858.  
  6859. }
  6860.  
  6861. #pragma GCC visibility pop
  6862. # 34 "/usr/include/c++/5/ext/new_allocator.h" 2 3
  6863.  
  6864.  
  6865.  
  6866.  
  6867.  
  6868.  
  6869. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  6870. {
  6871.  
  6872.  
  6873.   using std::size_t;
  6874.   using std::ptrdiff_t;
  6875. # 57 "/usr/include/c++/5/ext/new_allocator.h" 3
  6876.   template<typename _Tp>
  6877.     class new_allocator
  6878.     {
  6879.     public:
  6880.       typedef size_t size_type;
  6881.       typedef ptrdiff_t difference_type;
  6882.       typedef _Tp* pointer;
  6883.       typedef const _Tp* const_pointer;
  6884.       typedef _Tp& reference;
  6885.       typedef const _Tp& const_reference;
  6886.       typedef _Tp value_type;
  6887.  
  6888.       template<typename _Tp1>
  6889.         struct rebind
  6890.         { typedef new_allocator<_Tp1> other; };
  6891.  
  6892.  
  6893.  
  6894.  
  6895.  
  6896.  
  6897.  
  6898.       new_allocator() throw() { }
  6899.  
  6900.       new_allocator(const new_allocator&) throw() { }
  6901.  
  6902.       template<typename _Tp1>
  6903.         new_allocator(const new_allocator<_Tp1>&) throw() { }
  6904.  
  6905.       ~new_allocator() throw() { }
  6906.  
  6907.       pointer
  6908.       address(reference __x) const
  6909.       { return std::__addressof(__x); }
  6910.  
  6911.       const_pointer
  6912.       address(const_reference __x) const
  6913.       { return std::__addressof(__x); }
  6914.  
  6915.  
  6916.  
  6917.       pointer
  6918.       allocate(size_type __n, const void* = 0)
  6919.       {
  6920.  if (__n > this->max_size())
  6921.    std::__throw_bad_alloc();
  6922.  
  6923.  return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
  6924.       }
  6925.  
  6926.  
  6927.       void
  6928.       deallocate(pointer __p, size_type)
  6929.       { ::operator delete(__p); }
  6930.  
  6931.       size_type
  6932.       max_size() const throw()
  6933.       { return size_t(-1) / sizeof(_Tp); }
  6934. # 128 "/usr/include/c++/5/ext/new_allocator.h" 3
  6935.       void
  6936.       construct(pointer __p, const _Tp& __val)
  6937.       { ::new((void *)__p) _Tp(__val); }
  6938.  
  6939.       void
  6940.       destroy(pointer __p) { __p->~_Tp(); }
  6941.  
  6942.     };
  6943.  
  6944.   template<typename _Tp>
  6945.     inline bool
  6946.     operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
  6947.     { return true; }
  6948.  
  6949.   template<typename _Tp>
  6950.     inline bool
  6951.     operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
  6952.     { return false; }
  6953.  
  6954.  
  6955. }
  6956. # 34 "/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h" 2 3
  6957. # 47 "/usr/include/c++/5/bits/allocator.h" 2 3
  6958.  
  6959.  
  6960.  
  6961.  
  6962.  
  6963. namespace std __attribute__ ((__visibility__ ("default")))
  6964. {
  6965.  
  6966.  
  6967.  
  6968.  
  6969.  
  6970.  
  6971.  
  6972.  
  6973.   template<>
  6974.     class allocator<void>
  6975.     {
  6976.     public:
  6977.       typedef size_t size_type;
  6978.       typedef ptrdiff_t difference_type;
  6979.       typedef void* pointer;
  6980.       typedef const void* const_pointer;
  6981.       typedef void value_type;
  6982.  
  6983.       template<typename _Tp1>
  6984.         struct rebind
  6985.         { typedef allocator<_Tp1> other; };
  6986.  
  6987.  
  6988.  
  6989.  
  6990.  
  6991.  
  6992.     };
  6993. # 91 "/usr/include/c++/5/bits/allocator.h" 3
  6994.   template<typename _Tp>
  6995.     class allocator: public __gnu_cxx::new_allocator<_Tp>
  6996.     {
  6997.    public:
  6998.       typedef size_t size_type;
  6999.       typedef ptrdiff_t difference_type;
  7000.       typedef _Tp* pointer;
  7001.       typedef const _Tp* const_pointer;
  7002.       typedef _Tp& reference;
  7003.       typedef const _Tp& const_reference;
  7004.       typedef _Tp value_type;
  7005.  
  7006.       template<typename _Tp1>
  7007.         struct rebind
  7008.         { typedef allocator<_Tp1> other; };
  7009.  
  7010.  
  7011.  
  7012.  
  7013.  
  7014.  
  7015.  
  7016.       allocator() throw() { }
  7017.  
  7018.       allocator(const allocator& __a) throw()
  7019.       : __gnu_cxx::new_allocator<_Tp>(__a) { }
  7020.  
  7021.       template<typename _Tp1>
  7022.         allocator(const allocator<_Tp1>&) throw() { }
  7023.  
  7024.       ~allocator() throw() { }
  7025.  
  7026.  
  7027.     };
  7028.  
  7029.   template<typename _T1, typename _T2>
  7030.     inline bool
  7031.     operator==(const allocator<_T1>&, const allocator<_T2>&)
  7032.     throw()
  7033.     { return true; }
  7034.  
  7035.   template<typename _Tp>
  7036.     inline bool
  7037.     operator==(const allocator<_Tp>&, const allocator<_Tp>&)
  7038.     throw()
  7039.     { return true; }
  7040.  
  7041.   template<typename _T1, typename _T2>
  7042.     inline bool
  7043.     operator!=(const allocator<_T1>&, const allocator<_T2>&)
  7044.     throw()
  7045.     { return false; }
  7046.  
  7047.   template<typename _Tp>
  7048.     inline bool
  7049.     operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
  7050.     throw()
  7051.     { return false; }
  7052.  
  7053.  
  7054.  
  7055.  
  7056.  
  7057.  
  7058.   extern template class allocator<char>;
  7059.   extern template class allocator<wchar_t>;
  7060.  
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.   template<typename _Alloc, bool = __is_empty(_Alloc)>
  7067.     struct __alloc_swap
  7068.     { static void _S_do_it(_Alloc&, _Alloc&) { } };
  7069.  
  7070.   template<typename _Alloc>
  7071.     struct __alloc_swap<_Alloc, false>
  7072.     {
  7073.       static void
  7074.       _S_do_it(_Alloc& __one, _Alloc& __two)
  7075.       {
  7076.  
  7077.  if (__one != __two)
  7078.    swap(__one, __two);
  7079.       }
  7080.     };
  7081.  
  7082.  
  7083.   template<typename _Alloc, bool = __is_empty(_Alloc)>
  7084.     struct __alloc_neq
  7085.     {
  7086.       static bool
  7087.       _S_do_it(const _Alloc&, const _Alloc&)
  7088.       { return false; }
  7089.     };
  7090.  
  7091.   template<typename _Alloc>
  7092.     struct __alloc_neq<_Alloc, false>
  7093.     {
  7094.       static bool
  7095.       _S_do_it(const _Alloc& __one, const _Alloc& __two)
  7096.       { return __one != __two; }
  7097.     };
  7098. # 226 "/usr/include/c++/5/bits/allocator.h" 3
  7099.  
  7100. }
  7101. # 42 "/usr/include/c++/5/string" 2 3
  7102.  
  7103.  
  7104. # 1 "/usr/include/c++/5/bits/ostream_insert.h" 1 3
  7105. # 33 "/usr/include/c++/5/bits/ostream_insert.h" 3
  7106.        
  7107. # 34 "/usr/include/c++/5/bits/ostream_insert.h" 3
  7108.  
  7109.  
  7110. # 1 "/usr/include/c++/5/bits/cxxabi_forced.h" 1 3
  7111. # 34 "/usr/include/c++/5/bits/cxxabi_forced.h" 3
  7112.        
  7113. # 35 "/usr/include/c++/5/bits/cxxabi_forced.h" 3
  7114.  
  7115. #pragma GCC visibility push(default)
  7116.  
  7117.  
  7118. namespace __cxxabiv1
  7119. {
  7120.  
  7121.  
  7122.  
  7123.  
  7124.  
  7125.  
  7126.  
  7127.   class __forced_unwind
  7128.   {
  7129.     virtual ~__forced_unwind() throw();
  7130.  
  7131.  
  7132.     virtual void __pure_dummy() = 0;
  7133.   };
  7134. }
  7135.  
  7136.  
  7137. #pragma GCC visibility pop
  7138. # 37 "/usr/include/c++/5/bits/ostream_insert.h" 2 3
  7139.  
  7140. namespace std __attribute__ ((__visibility__ ("default")))
  7141. {
  7142.  
  7143.  
  7144.   template<typename _CharT, typename _Traits>
  7145.     inline void
  7146.     __ostream_write(basic_ostream<_CharT, _Traits>& __out,
  7147.       const _CharT* __s, streamsize __n)
  7148.     {
  7149.       typedef basic_ostream<_CharT, _Traits> __ostream_type;
  7150.       typedef typename __ostream_type::ios_base __ios_base;
  7151.  
  7152.       const streamsize __put = __out.rdbuf()->sputn(__s, __n);
  7153.       if (__put != __n)
  7154.  __out.setstate(__ios_base::badbit);
  7155.     }
  7156.  
  7157.   template<typename _CharT, typename _Traits>
  7158.     inline void
  7159.     __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n)
  7160.     {
  7161.       typedef basic_ostream<_CharT, _Traits> __ostream_type;
  7162.       typedef typename __ostream_type::ios_base __ios_base;
  7163.  
  7164.       const _CharT __c = __out.fill();
  7165.       for (; __n > 0; --__n)
  7166.  {
  7167.    const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c);
  7168.    if (_Traits::eq_int_type(__put, _Traits::eof()))
  7169.      {
  7170.        __out.setstate(__ios_base::badbit);
  7171.        break;
  7172.      }
  7173.  }
  7174.     }
  7175.  
  7176.   template<typename _CharT, typename _Traits>
  7177.     basic_ostream<_CharT, _Traits>&
  7178.     __ostream_insert(basic_ostream<_CharT, _Traits>& __out,
  7179.        const _CharT* __s, streamsize __n)
  7180.     {
  7181.       typedef basic_ostream<_CharT, _Traits> __ostream_type;
  7182.       typedef typename __ostream_type::ios_base __ios_base;
  7183.  
  7184.       typename __ostream_type::sentry __cerb(__out);
  7185.       if (__cerb)
  7186.  {
  7187.    try
  7188.      {
  7189.        const streamsize __w = __out.width();
  7190.        if (__w > __n)
  7191.   {
  7192.     const bool __left = ((__out.flags()
  7193.      & __ios_base::adjustfield)
  7194.            == __ios_base::left);
  7195.     if (!__left)
  7196.       __ostream_fill(__out, __w - __n);
  7197.     if (__out.good())
  7198.       __ostream_write(__out, __s, __n);
  7199.     if (__left && __out.good())
  7200.       __ostream_fill(__out, __w - __n);
  7201.   }
  7202.        else
  7203.   __ostream_write(__out, __s, __n);
  7204.        __out.width(0);
  7205.      }
  7206.    catch(__cxxabiv1::__forced_unwind&)
  7207.      {
  7208.        __out._M_setstate(__ios_base::badbit);
  7209.        throw;
  7210.      }
  7211.    catch(...)
  7212.      { __out._M_setstate(__ios_base::badbit); }
  7213.  }
  7214.       return __out;
  7215.     }
  7216.  
  7217.  
  7218.  
  7219.  
  7220.   extern template ostream& __ostream_insert(ostream&, const char*, streamsize);
  7221.  
  7222.  
  7223.   extern template wostream& __ostream_insert(wostream&, const wchar_t*,
  7224.           streamsize);
  7225.  
  7226.  
  7227.  
  7228.  
  7229. }
  7230. # 45 "/usr/include/c++/5/string" 2 3
  7231.  
  7232.  
  7233.  
  7234. # 1 "/usr/include/c++/5/bits/stl_function.h" 1 3
  7235. # 63 "/usr/include/c++/5/bits/stl_function.h" 3
  7236. namespace std __attribute__ ((__visibility__ ("default")))
  7237. {
  7238.  
  7239. # 104 "/usr/include/c++/5/bits/stl_function.h" 3
  7240.   template<typename _Arg, typename _Result>
  7241.     struct unary_function
  7242.     {
  7243.  
  7244.       typedef _Arg argument_type;
  7245.  
  7246.  
  7247.       typedef _Result result_type;
  7248.     };
  7249.  
  7250.  
  7251.  
  7252.  
  7253.   template<typename _Arg1, typename _Arg2, typename _Result>
  7254.     struct binary_function
  7255.     {
  7256.  
  7257.       typedef _Arg1 first_argument_type;
  7258.  
  7259.  
  7260.       typedef _Arg2 second_argument_type;
  7261.  
  7262.  
  7263.       typedef _Result result_type;
  7264.     };
  7265. # 166 "/usr/include/c++/5/bits/stl_function.h" 3
  7266.   template<typename _Tp>
  7267.     struct plus : public binary_function<_Tp, _Tp, _Tp>
  7268.     {
  7269.      
  7270.       _Tp
  7271.       operator()(const _Tp& __x, const _Tp& __y) const
  7272.       { return __x + __y; }
  7273.     };
  7274.  
  7275.  
  7276.   template<typename _Tp>
  7277.     struct minus : public binary_function<_Tp, _Tp, _Tp>
  7278.     {
  7279.      
  7280.       _Tp
  7281.       operator()(const _Tp& __x, const _Tp& __y) const
  7282.       { return __x - __y; }
  7283.     };
  7284.  
  7285.  
  7286.   template<typename _Tp>
  7287.     struct multiplies : public binary_function<_Tp, _Tp, _Tp>
  7288.     {
  7289.      
  7290.       _Tp
  7291.       operator()(const _Tp& __x, const _Tp& __y) const
  7292.       { return __x * __y; }
  7293.     };
  7294.  
  7295.  
  7296.   template<typename _Tp>
  7297.     struct divides : public binary_function<_Tp, _Tp, _Tp>
  7298.     {
  7299.      
  7300.       _Tp
  7301.       operator()(const _Tp& __x, const _Tp& __y) const
  7302.       { return __x / __y; }
  7303.     };
  7304.  
  7305.  
  7306.   template<typename _Tp>
  7307.     struct modulus : public binary_function<_Tp, _Tp, _Tp>
  7308.     {
  7309.      
  7310.       _Tp
  7311.       operator()(const _Tp& __x, const _Tp& __y) const
  7312.       { return __x % __y; }
  7313.     };
  7314.  
  7315.  
  7316.   template<typename _Tp>
  7317.     struct negate : public unary_function<_Tp, _Tp>
  7318.     {
  7319.      
  7320.       _Tp
  7321.       operator()(const _Tp& __x) const
  7322.       { return -__x; }
  7323.     };
  7324. # 351 "/usr/include/c++/5/bits/stl_function.h" 3
  7325.   template<typename _Tp>
  7326.     struct equal_to : public binary_function<_Tp, _Tp, bool>
  7327.     {
  7328.      
  7329.       bool
  7330.       operator()(const _Tp& __x, const _Tp& __y) const
  7331.       { return __x == __y; }
  7332.     };
  7333.  
  7334.  
  7335.   template<typename _Tp>
  7336.     struct not_equal_to : public binary_function<_Tp, _Tp, bool>
  7337.     {
  7338.      
  7339.       bool
  7340.       operator()(const _Tp& __x, const _Tp& __y) const
  7341.       { return __x != __y; }
  7342.     };
  7343.  
  7344.  
  7345.   template<typename _Tp>
  7346.     struct greater : public binary_function<_Tp, _Tp, bool>
  7347.     {
  7348.      
  7349.       bool
  7350.       operator()(const _Tp& __x, const _Tp& __y) const
  7351.       { return __x > __y; }
  7352.     };
  7353.  
  7354.  
  7355.   template<typename _Tp>
  7356.     struct less : public binary_function<_Tp, _Tp, bool>
  7357.     {
  7358.      
  7359.       bool
  7360.       operator()(const _Tp& __x, const _Tp& __y) const
  7361.       { return __x < __y; }
  7362.     };
  7363.  
  7364.  
  7365.   template<typename _Tp>
  7366.     struct greater_equal : public binary_function<_Tp, _Tp, bool>
  7367.     {
  7368.      
  7369.       bool
  7370.       operator()(const _Tp& __x, const _Tp& __y) const
  7371.       { return __x >= __y; }
  7372.     };
  7373.  
  7374.  
  7375.   template<typename _Tp>
  7376.     struct less_equal : public binary_function<_Tp, _Tp, bool>
  7377.     {
  7378.      
  7379.       bool
  7380.       operator()(const _Tp& __x, const _Tp& __y) const
  7381.       { return __x <= __y; }
  7382.     };
  7383. # 524 "/usr/include/c++/5/bits/stl_function.h" 3
  7384.   template<typename _Tp>
  7385.     struct logical_and : public binary_function<_Tp, _Tp, bool>
  7386.     {
  7387.      
  7388.       bool
  7389.       operator()(const _Tp& __x, const _Tp& __y) const
  7390.       { return __x && __y; }
  7391.     };
  7392.  
  7393.  
  7394.   template<typename _Tp>
  7395.     struct logical_or : public binary_function<_Tp, _Tp, bool>
  7396.     {
  7397.      
  7398.       bool
  7399.       operator()(const _Tp& __x, const _Tp& __y) const
  7400.       { return __x || __y; }
  7401.     };
  7402.  
  7403.  
  7404.   template<typename _Tp>
  7405.     struct logical_not : public unary_function<_Tp, bool>
  7406.     {
  7407.      
  7408.       bool
  7409.       operator()(const _Tp& __x) const
  7410.       { return !__x; }
  7411.     };
  7412. # 617 "/usr/include/c++/5/bits/stl_function.h" 3
  7413.   template<typename _Tp>
  7414.     struct bit_and : public binary_function<_Tp, _Tp, _Tp>
  7415.     {
  7416.      
  7417.       _Tp
  7418.       operator()(const _Tp& __x, const _Tp& __y) const
  7419.       { return __x & __y; }
  7420.     };
  7421.  
  7422.   template<typename _Tp>
  7423.     struct bit_or : public binary_function<_Tp, _Tp, _Tp>
  7424.     {
  7425.      
  7426.       _Tp
  7427.       operator()(const _Tp& __x, const _Tp& __y) const
  7428.       { return __x | __y; }
  7429.     };
  7430.  
  7431.   template<typename _Tp>
  7432.     struct bit_xor : public binary_function<_Tp, _Tp, _Tp>
  7433.     {
  7434.      
  7435.       _Tp
  7436.       operator()(const _Tp& __x, const _Tp& __y) const
  7437.       { return __x ^ __y; }
  7438.     };
  7439.  
  7440.   template<typename _Tp>
  7441.     struct bit_not : public unary_function<_Tp, _Tp>
  7442.     {
  7443.    
  7444.       _Tp
  7445.       operator()(const _Tp& __x) const
  7446.       { return ~__x; }
  7447.     };
  7448. # 741 "/usr/include/c++/5/bits/stl_function.h" 3
  7449.   template<typename _Predicate>
  7450.     class unary_negate
  7451.     : public unary_function<typename _Predicate::argument_type, bool>
  7452.     {
  7453.     protected:
  7454.       _Predicate _M_pred;
  7455.  
  7456.     public:
  7457.      
  7458.       explicit
  7459.       unary_negate(const _Predicate& __x) : _M_pred(__x) { }
  7460.  
  7461.      
  7462.       bool
  7463.       operator()(const typename _Predicate::argument_type& __x) const
  7464.       { return !_M_pred(__x); }
  7465.     };
  7466.  
  7467.  
  7468.   template<typename _Predicate>
  7469.    
  7470.     inline unary_negate<_Predicate>
  7471.     not1(const _Predicate& __pred)
  7472.     { return unary_negate<_Predicate>(__pred); }
  7473.  
  7474.  
  7475.   template<typename _Predicate>
  7476.     class binary_negate
  7477.     : public binary_function<typename _Predicate::first_argument_type,
  7478.         typename _Predicate::second_argument_type, bool>
  7479.     {
  7480.     protected:
  7481.       _Predicate _M_pred;
  7482.  
  7483.     public:
  7484.      
  7485.       explicit
  7486.       binary_negate(const _Predicate& __x) : _M_pred(__x) { }
  7487.  
  7488.      
  7489.       bool
  7490.       operator()(const typename _Predicate::first_argument_type& __x,
  7491.    const typename _Predicate::second_argument_type& __y) const
  7492.       { return !_M_pred(__x, __y); }
  7493.     };
  7494.  
  7495.  
  7496.   template<typename _Predicate>
  7497.    
  7498.     inline binary_negate<_Predicate>
  7499.     not2(const _Predicate& __pred)
  7500.     { return binary_negate<_Predicate>(__pred); }
  7501. # 818 "/usr/include/c++/5/bits/stl_function.h" 3
  7502.   template<typename _Arg, typename _Result>
  7503.     class pointer_to_unary_function : public unary_function<_Arg, _Result>
  7504.     {
  7505.     protected:
  7506.       _Result (*_M_ptr)(_Arg);
  7507.  
  7508.     public:
  7509.       pointer_to_unary_function() { }
  7510.  
  7511.       explicit
  7512.       pointer_to_unary_function(_Result (*__x)(_Arg))
  7513.       : _M_ptr(__x) { }
  7514.  
  7515.       _Result
  7516.       operator()(_Arg __x) const
  7517.       { return _M_ptr(__x); }
  7518.     };
  7519.  
  7520.  
  7521.   template<typename _Arg, typename _Result>
  7522.     inline pointer_to_unary_function<_Arg, _Result>
  7523.     ptr_fun(_Result (*__x)(_Arg))
  7524.     { return pointer_to_unary_function<_Arg, _Result>(__x); }
  7525.  
  7526.  
  7527.   template<typename _Arg1, typename _Arg2, typename _Result>
  7528.     class pointer_to_binary_function
  7529.     : public binary_function<_Arg1, _Arg2, _Result>
  7530.     {
  7531.     protected:
  7532.       _Result (*_M_ptr)(_Arg1, _Arg2);
  7533.  
  7534.     public:
  7535.       pointer_to_binary_function() { }
  7536.  
  7537.       explicit
  7538.       pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))
  7539.       : _M_ptr(__x) { }
  7540.  
  7541.       _Result
  7542.       operator()(_Arg1 __x, _Arg2 __y) const
  7543.       { return _M_ptr(__x, __y); }
  7544.     };
  7545.  
  7546.  
  7547.   template<typename _Arg1, typename _Arg2, typename _Result>
  7548.     inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
  7549.     ptr_fun(_Result (*__x)(_Arg1, _Arg2))
  7550.     { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }
  7551.  
  7552.  
  7553.   template<typename _Tp>
  7554.     struct _Identity
  7555.     : public unary_function<_Tp,_Tp>
  7556.     {
  7557.       _Tp&
  7558.       operator()(_Tp& __x) const
  7559.       { return __x; }
  7560.  
  7561.       const _Tp&
  7562.       operator()(const _Tp& __x) const
  7563.       { return __x; }
  7564.     };
  7565.  
  7566.   template<typename _Pair>
  7567.     struct _Select1st
  7568.     : public unary_function<_Pair, typename _Pair::first_type>
  7569.     {
  7570.       typename _Pair::first_type&
  7571.       operator()(_Pair& __x) const
  7572.       { return __x.first; }
  7573.  
  7574.       const typename _Pair::first_type&
  7575.       operator()(const _Pair& __x) const
  7576.       { return __x.first; }
  7577. # 905 "/usr/include/c++/5/bits/stl_function.h" 3
  7578.     };
  7579.  
  7580.   template<typename _Pair>
  7581.     struct _Select2nd
  7582.     : public unary_function<_Pair, typename _Pair::second_type>
  7583.     {
  7584.       typename _Pair::second_type&
  7585.       operator()(_Pair& __x) const
  7586.       { return __x.second; }
  7587.  
  7588.       const typename _Pair::second_type&
  7589.       operator()(const _Pair& __x) const
  7590.       { return __x.second; }
  7591.     };
  7592. # 938 "/usr/include/c++/5/bits/stl_function.h" 3
  7593.   template<typename _Ret, typename _Tp>
  7594.     class mem_fun_t : public unary_function<_Tp*, _Ret>
  7595.     {
  7596.     public:
  7597.       explicit
  7598.       mem_fun_t(_Ret (_Tp::*__pf)())
  7599.       : _M_f(__pf) { }
  7600.  
  7601.       _Ret
  7602.       operator()(_Tp* __p) const
  7603.       { return (__p->*_M_f)(); }
  7604.  
  7605.     private:
  7606.       _Ret (_Tp::*_M_f)();
  7607.     };
  7608.  
  7609.  
  7610.  
  7611.   template<typename _Ret, typename _Tp>
  7612.     class const_mem_fun_t : public unary_function<const _Tp*, _Ret>
  7613.     {
  7614.     public:
  7615.       explicit
  7616.       const_mem_fun_t(_Ret (_Tp::*__pf)() const)
  7617.       : _M_f(__pf) { }
  7618.  
  7619.       _Ret
  7620.       operator()(const _Tp* __p) const
  7621.       { return (__p->*_M_f)(); }
  7622.  
  7623.     private:
  7624.       _Ret (_Tp::*_M_f)() const;
  7625.     };
  7626.  
  7627.  
  7628.  
  7629.   template<typename _Ret, typename _Tp>
  7630.     class mem_fun_ref_t : public unary_function<_Tp, _Ret>
  7631.     {
  7632.     public:
  7633.       explicit
  7634.       mem_fun_ref_t(_Ret (_Tp::*__pf)())
  7635.       : _M_f(__pf) { }
  7636.  
  7637.       _Ret
  7638.       operator()(_Tp& __r) const
  7639.       { return (__r.*_M_f)(); }
  7640.  
  7641.     private:
  7642.       _Ret (_Tp::*_M_f)();
  7643.   };
  7644.  
  7645.  
  7646.  
  7647.   template<typename _Ret, typename _Tp>
  7648.     class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>
  7649.     {
  7650.     public:
  7651.       explicit
  7652.       const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const)
  7653.       : _M_f(__pf) { }
  7654.  
  7655.       _Ret
  7656.       operator()(const _Tp& __r) const
  7657.       { return (__r.*_M_f)(); }
  7658.  
  7659.     private:
  7660.       _Ret (_Tp::*_M_f)() const;
  7661.     };
  7662.  
  7663.  
  7664.  
  7665.   template<typename _Ret, typename _Tp, typename _Arg>
  7666.     class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>
  7667.     {
  7668.     public:
  7669.       explicit
  7670.       mem_fun1_t(_Ret (_Tp::*__pf)(_Arg))
  7671.       : _M_f(__pf) { }
  7672.  
  7673.       _Ret
  7674.       operator()(_Tp* __p, _Arg __x) const
  7675.       { return (__p->*_M_f)(__x); }
  7676.  
  7677.     private:
  7678.       _Ret (_Tp::*_M_f)(_Arg);
  7679.     };
  7680.  
  7681.  
  7682.  
  7683.   template<typename _Ret, typename _Tp, typename _Arg>
  7684.     class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>
  7685.     {
  7686.     public:
  7687.       explicit
  7688.       const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const)
  7689.       : _M_f(__pf) { }
  7690.  
  7691.       _Ret
  7692.       operator()(const _Tp* __p, _Arg __x) const
  7693.       { return (__p->*_M_f)(__x); }
  7694.  
  7695.     private:
  7696.       _Ret (_Tp::*_M_f)(_Arg) const;
  7697.     };
  7698.  
  7699.  
  7700.  
  7701.   template<typename _Ret, typename _Tp, typename _Arg>
  7702.     class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
  7703.     {
  7704.     public:
  7705.       explicit
  7706.       mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg))
  7707.       : _M_f(__pf) { }
  7708.  
  7709.       _Ret
  7710.       operator()(_Tp& __r, _Arg __x) const
  7711.       { return (__r.*_M_f)(__x); }
  7712.  
  7713.     private:
  7714.       _Ret (_Tp::*_M_f)(_Arg);
  7715.     };
  7716.  
  7717.  
  7718.  
  7719.   template<typename _Ret, typename _Tp, typename _Arg>
  7720.     class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
  7721.     {
  7722.     public:
  7723.       explicit
  7724.       const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const)
  7725.       : _M_f(__pf) { }
  7726.  
  7727.       _Ret
  7728.       operator()(const _Tp& __r, _Arg __x) const
  7729.       { return (__r.*_M_f)(__x); }
  7730.  
  7731.     private:
  7732.       _Ret (_Tp::*_M_f)(_Arg) const;
  7733.     };
  7734.  
  7735.  
  7736.  
  7737.   template<typename _Ret, typename _Tp>
  7738.     inline mem_fun_t<_Ret, _Tp>
  7739.     mem_fun(_Ret (_Tp::*__f)())
  7740.     { return mem_fun_t<_Ret, _Tp>(__f); }
  7741.  
  7742.   template<typename _Ret, typename _Tp>
  7743.     inline const_mem_fun_t<_Ret, _Tp>
  7744.     mem_fun(_Ret (_Tp::*__f)() const)
  7745.     { return const_mem_fun_t<_Ret, _Tp>(__f); }
  7746.  
  7747.   template<typename _Ret, typename _Tp>
  7748.     inline mem_fun_ref_t<_Ret, _Tp>
  7749.     mem_fun_ref(_Ret (_Tp::*__f)())
  7750.     { return mem_fun_ref_t<_Ret, _Tp>(__f); }
  7751.  
  7752.   template<typename _Ret, typename _Tp>
  7753.     inline const_mem_fun_ref_t<_Ret, _Tp>
  7754.     mem_fun_ref(_Ret (_Tp::*__f)() const)
  7755.     { return const_mem_fun_ref_t<_Ret, _Tp>(__f); }
  7756.  
  7757.   template<typename _Ret, typename _Tp, typename _Arg>
  7758.     inline mem_fun1_t<_Ret, _Tp, _Arg>
  7759.     mem_fun(_Ret (_Tp::*__f)(_Arg))
  7760.     { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
  7761.  
  7762.   template<typename _Ret, typename _Tp, typename _Arg>
  7763.     inline const_mem_fun1_t<_Ret, _Tp, _Arg>
  7764.     mem_fun(_Ret (_Tp::*__f)(_Arg) const)
  7765.     { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
  7766.  
  7767.   template<typename _Ret, typename _Tp, typename _Arg>
  7768.     inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
  7769.     mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
  7770.     { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
  7771.  
  7772.   template<typename _Ret, typename _Tp, typename _Arg>
  7773.     inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
  7774.     mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)
  7775.     { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
  7776.  
  7777.  
  7778.  
  7779.  
  7780. }
  7781.  
  7782.  
  7783. # 1 "/usr/include/c++/5/backward/binders.h" 1 3
  7784. # 60 "/usr/include/c++/5/backward/binders.h" 3
  7785. #pragma GCC diagnostic push
  7786. #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
  7787.  
  7788. namespace std __attribute__ ((__visibility__ ("default")))
  7789. {
  7790.  
  7791. # 107 "/usr/include/c++/5/backward/binders.h" 3
  7792.   template<typename _Operation>
  7793.     class binder1st
  7794.     : public unary_function<typename _Operation::second_argument_type,
  7795.        typename _Operation::result_type>
  7796.     {
  7797.     protected:
  7798.       _Operation op;
  7799.       typename _Operation::first_argument_type value;
  7800.  
  7801.     public:
  7802.       binder1st(const _Operation& __x,
  7803.   const typename _Operation::first_argument_type& __y)
  7804.       : op(__x), value(__y) { }
  7805.  
  7806.       typename _Operation::result_type
  7807.       operator()(const typename _Operation::second_argument_type& __x) const
  7808.       { return op(value, __x); }
  7809.  
  7810.  
  7811.  
  7812.       typename _Operation::result_type
  7813.       operator()(typename _Operation::second_argument_type& __x) const
  7814.       { return op(value, __x); }
  7815.     } ;
  7816.  
  7817.  
  7818.   template<typename _Operation, typename _Tp>
  7819.     inline binder1st<_Operation>
  7820.     bind1st(const _Operation& __fn, const _Tp& __x)
  7821.     {
  7822.       typedef typename _Operation::first_argument_type _Arg1_type;
  7823.       return binder1st<_Operation>(__fn, _Arg1_type(__x));
  7824.     }
  7825.  
  7826.  
  7827.   template<typename _Operation>
  7828.     class binder2nd
  7829.     : public unary_function<typename _Operation::first_argument_type,
  7830.        typename _Operation::result_type>
  7831.     {
  7832.     protected:
  7833.       _Operation op;
  7834.       typename _Operation::second_argument_type value;
  7835.  
  7836.     public:
  7837.       binder2nd(const _Operation& __x,
  7838.   const typename _Operation::second_argument_type& __y)
  7839.       : op(__x), value(__y) { }
  7840.  
  7841.       typename _Operation::result_type
  7842.       operator()(const typename _Operation::first_argument_type& __x) const
  7843.       { return op(__x, value); }
  7844.  
  7845.  
  7846.  
  7847.       typename _Operation::result_type
  7848.       operator()(typename _Operation::first_argument_type& __x) const
  7849.       { return op(__x, value); }
  7850.     } ;
  7851.  
  7852.  
  7853.   template<typename _Operation, typename _Tp>
  7854.     inline binder2nd<_Operation>
  7855.     bind2nd(const _Operation& __fn, const _Tp& __x)
  7856.     {
  7857.       typedef typename _Operation::second_argument_type _Arg2_type;
  7858.       return binder2nd<_Operation>(__fn, _Arg2_type(__x));
  7859.     }
  7860.  
  7861.  
  7862.  
  7863. }
  7864.  
  7865. #pragma GCC diagnostic pop
  7866. # 1129 "/usr/include/c++/5/bits/stl_function.h" 2 3
  7867. # 49 "/usr/include/c++/5/string" 2 3
  7868.  
  7869.  
  7870. # 1 "/usr/include/c++/5/bits/range_access.h" 1 3
  7871. # 33 "/usr/include/c++/5/bits/range_access.h" 3
  7872.        
  7873. # 34 "/usr/include/c++/5/bits/range_access.h" 3
  7874. # 52 "/usr/include/c++/5/string" 2 3
  7875. # 1 "/usr/include/c++/5/bits/basic_string.h" 1 3
  7876. # 37 "/usr/include/c++/5/bits/basic_string.h" 3
  7877.        
  7878. # 38 "/usr/include/c++/5/bits/basic_string.h" 3
  7879.  
  7880.  
  7881. # 1 "/usr/include/c++/5/ext/alloc_traits.h" 1 3
  7882. # 32 "/usr/include/c++/5/ext/alloc_traits.h" 3
  7883.        
  7884. # 33 "/usr/include/c++/5/ext/alloc_traits.h" 3
  7885. # 41 "/usr/include/c++/5/ext/alloc_traits.h" 3
  7886. namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
  7887. {
  7888.  
  7889. # 94 "/usr/include/c++/5/ext/alloc_traits.h" 3
  7890. template<typename _Alloc>
  7891.   struct __alloc_traits
  7892.  
  7893.  
  7894.  
  7895.   {
  7896.     typedef _Alloc allocator_type;
  7897. # 172 "/usr/include/c++/5/ext/alloc_traits.h" 3
  7898.     typedef typename _Alloc::pointer pointer;
  7899.     typedef typename _Alloc::const_pointer const_pointer;
  7900.     typedef typename _Alloc::value_type value_type;
  7901.     typedef typename _Alloc::reference reference;
  7902.     typedef typename _Alloc::const_reference const_reference;
  7903.     typedef typename _Alloc::size_type size_type;
  7904.     typedef typename _Alloc::difference_type difference_type;
  7905.  
  7906.     static pointer
  7907.     allocate(_Alloc& __a, size_type __n)
  7908.     { return __a.allocate(__n); }
  7909.  
  7910.     static void deallocate(_Alloc& __a, pointer __p, size_type __n)
  7911.     { __a.deallocate(__p, __n); }
  7912.  
  7913.     template<typename _Tp>
  7914.       static void construct(_Alloc& __a, pointer __p, const _Tp& __arg)
  7915.       { __a.construct(__p, __arg); }
  7916.  
  7917.     static void destroy(_Alloc& __a, pointer __p)
  7918.     { __a.destroy(__p); }
  7919.  
  7920.     static size_type max_size(const _Alloc& __a)
  7921.     { return __a.max_size(); }
  7922.  
  7923.     static const _Alloc& _S_select_on_copy(const _Alloc& __a) { return __a; }
  7924.  
  7925.     static void _S_on_swap(_Alloc& __a, _Alloc& __b)
  7926.     {
  7927.  
  7928.  
  7929.       std::__alloc_swap<_Alloc>::_S_do_it(__a, __b);
  7930.     }
  7931.  
  7932.     template<typename _Tp>
  7933.       struct rebind
  7934.       { typedef typename _Alloc::template rebind<_Tp>::other other; };
  7935.  
  7936.   };
  7937.  
  7938.  
  7939. }
  7940. # 41 "/usr/include/c++/5/bits/basic_string.h" 2 3
  7941.  
  7942.  
  7943.  
  7944.  
  7945.  
  7946. namespace std __attribute__ ((__visibility__ ("default")))
  7947. {
  7948.  
  7949.  
  7950.  
  7951. namespace __cxx11 {
  7952. # 70 "/usr/include/c++/5/bits/basic_string.h" 3
  7953.   template<typename _CharT, typename _Traits, typename _Alloc>
  7954.     class basic_string
  7955.     {
  7956.       typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
  7957.  rebind<_CharT>::other _Char_alloc_type;
  7958.       typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits;
  7959.  
  7960.  
  7961.     public:
  7962.       typedef _Traits traits_type;
  7963.       typedef typename _Traits::char_type value_type;
  7964.       typedef _Char_alloc_type allocator_type;
  7965.       typedef typename _Alloc_traits::size_type size_type;
  7966.       typedef typename _Alloc_traits::difference_type difference_type;
  7967.       typedef typename _Alloc_traits::reference reference;
  7968.       typedef typename _Alloc_traits::const_reference const_reference;
  7969.       typedef typename _Alloc_traits::pointer pointer;
  7970.       typedef typename _Alloc_traits::const_pointer const_pointer;
  7971.       typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;
  7972.       typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
  7973.        const_iterator;
  7974.       typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
  7975.       typedef std::reverse_iterator<iterator> reverse_iterator;
  7976.  
  7977.  
  7978.       static const size_type npos = static_cast<size_type>(-1);
  7979.  
  7980.     private:
  7981.  
  7982.  
  7983.       typedef iterator __const_iterator;
  7984.  
  7985.  
  7986.  
  7987.  
  7988.  
  7989.       struct _Alloc_hider : allocator_type
  7990.       {
  7991.  _Alloc_hider(pointer __dat, const _Alloc& __a = _Alloc())
  7992.  : allocator_type(__a), _M_p(__dat) { }
  7993.  
  7994.  pointer _M_p;
  7995.       };
  7996.  
  7997.       _Alloc_hider _M_dataplus;
  7998.       size_type _M_string_length;
  7999.  
  8000.       enum { _S_local_capacity = 15 / sizeof(_CharT) };
  8001.  
  8002.       union
  8003.       {
  8004.  _CharT _M_local_buf[_S_local_capacity + 1];
  8005.  size_type _M_allocated_capacity;
  8006.       };
  8007.  
  8008.       void
  8009.       _M_data(pointer __p)
  8010.       { _M_dataplus._M_p = __p; }
  8011.  
  8012.       void
  8013.       _M_length(size_type __length)
  8014.       { _M_string_length = __length; }
  8015.  
  8016.       pointer
  8017.       _M_data() const
  8018.       { return _M_dataplus._M_p; }
  8019.  
  8020.       pointer
  8021.       _M_local_data()
  8022.       {
  8023.  
  8024.  
  8025.  
  8026.  return pointer(_M_local_buf);
  8027.  
  8028.       }
  8029.  
  8030.       const_pointer
  8031.       _M_local_data() const
  8032.       {
  8033.  
  8034.  
  8035.  
  8036.  return const_pointer(_M_local_buf);
  8037.  
  8038.       }
  8039.  
  8040.       void
  8041.       _M_capacity(size_type __capacity)
  8042.       { _M_allocated_capacity = __capacity; }
  8043.  
  8044.       void
  8045.       _M_set_length(size_type __n)
  8046.       {
  8047.  _M_length(__n);
  8048.  traits_type::assign(_M_data()[__n], _CharT());
  8049.       }
  8050.  
  8051.       bool
  8052.       _M_is_local() const
  8053.       { return _M_data() == _M_local_data(); }
  8054.  
  8055.  
  8056.       pointer
  8057.       _M_create(size_type&, size_type);
  8058.  
  8059.       void
  8060.       _M_dispose()
  8061.       {
  8062.  if (!_M_is_local())
  8063.    _M_destroy(_M_allocated_capacity);
  8064.       }
  8065.  
  8066.       void
  8067.       _M_destroy(size_type __size) throw()
  8068.       { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); }
  8069.  
  8070.  
  8071.  
  8072.       template<typename _InIterator>
  8073.         void
  8074.         _M_construct_aux(_InIterator __beg, _InIterator __end,
  8075.     std::__false_type)
  8076.  {
  8077.           typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
  8078.           _M_construct(__beg, __end, _Tag());
  8079.  }
  8080.  
  8081.  
  8082.  
  8083.       template<typename _Integer>
  8084.         void
  8085.         _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type)
  8086.  { _M_construct_aux_2(static_cast<size_type>(__beg), __end); }
  8087.  
  8088.       void
  8089.       _M_construct_aux_2(size_type __req, _CharT __c)
  8090.       { _M_construct(__req, __c); }
  8091.  
  8092.       template<typename _InIterator>
  8093.         void
  8094.         _M_construct(_InIterator __beg, _InIterator __end)
  8095.  {
  8096.    typedef typename std::__is_integer<_InIterator>::__type _Integral;
  8097.    _M_construct_aux(__beg, __end, _Integral());
  8098.         }
  8099.  
  8100.  
  8101.       template<typename _InIterator>
  8102.         void
  8103.         _M_construct(_InIterator __beg, _InIterator __end,
  8104.        std::input_iterator_tag);
  8105.  
  8106.  
  8107.  
  8108.       template<typename _FwdIterator>
  8109.         void
  8110.         _M_construct(_FwdIterator __beg, _FwdIterator __end,
  8111.        std::forward_iterator_tag);
  8112.  
  8113.       void
  8114.       _M_construct(size_type __req, _CharT __c);
  8115.  
  8116.       allocator_type&
  8117.       _M_get_allocator()
  8118.       { return _M_dataplus; }
  8119.  
  8120.       const allocator_type&
  8121.       _M_get_allocator() const
  8122.       { return _M_dataplus; }
  8123.  
  8124.     private:
  8125. # 257 "/usr/include/c++/5/bits/basic_string.h" 3
  8126.       size_type
  8127.       _M_check(size_type __pos, const char* __s) const
  8128.       {
  8129.  if (__pos > this->size())
  8130.    __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)")
  8131.                                          ,
  8132.        __s, __pos, this->size());
  8133.  return __pos;
  8134.       }
  8135.  
  8136.       void
  8137.       _M_check_length(size_type __n1, size_type __n2, const char* __s) const
  8138.       {
  8139.  if (this->max_size() - (this->size() - __n1) < __n2)
  8140.    __throw_length_error((__s));
  8141.       }
  8142.  
  8143.  
  8144.  
  8145.       size_type
  8146.       _M_limit(size_type __pos, size_type __off) const
  8147.       {
  8148.  const bool __testoff = __off < this->size() - __pos;
  8149.  return __testoff ? __off : this->size() - __pos;
  8150.       }
  8151.  
  8152.  
  8153.       bool
  8154.       _M_disjunct(const _CharT* __s) const
  8155.       {
  8156.  return (less<const _CharT*>()(__s, _M_data())
  8157.   || less<const _CharT*>()(_M_data() + this->size(), __s));
  8158.       }
  8159.  
  8160.  
  8161.  
  8162.       static void
  8163.       _S_copy(_CharT* __d, const _CharT* __s, size_type __n)
  8164.       {
  8165.  if (__n == 1)
  8166.    traits_type::assign(*__d, *__s);
  8167.  else
  8168.    traits_type::copy(__d, __s, __n);
  8169.       }
  8170.  
  8171.       static void
  8172.       _S_move(_CharT* __d, const _CharT* __s, size_type __n)
  8173.       {
  8174.  if (__n == 1)
  8175.    traits_type::assign(*__d, *__s);
  8176.  else
  8177.    traits_type::move(__d, __s, __n);
  8178.       }
  8179.  
  8180.       static void
  8181.       _S_assign(_CharT* __d, size_type __n, _CharT __c)
  8182.       {
  8183.  if (__n == 1)
  8184.    traits_type::assign(*__d, __c);
  8185.  else
  8186.    traits_type::assign(__d, __n, __c);
  8187.       }
  8188.  
  8189.  
  8190.  
  8191.       template<class _Iterator>
  8192.         static void
  8193.         _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
  8194.         {
  8195.    for (; __k1 != __k2; ++__k1, ++__p)
  8196.      traits_type::assign(*__p, *__k1);
  8197.  }
  8198.  
  8199.       static void
  8200.       _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
  8201.       { _S_copy_chars(__p, __k1.base(), __k2.base()); }
  8202.  
  8203.       static void
  8204.       _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
  8205.      
  8206.       { _S_copy_chars(__p, __k1.base(), __k2.base()); }
  8207.  
  8208.       static void
  8209.       _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
  8210.       { _S_copy(__p, __k1, __k2 - __k1); }
  8211.  
  8212.       static void
  8213.       _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
  8214.      
  8215.       { _S_copy(__p, __k1, __k2 - __k1); }
  8216.  
  8217.       static int
  8218.       _S_compare(size_type __n1, size_type __n2)
  8219.       {
  8220.  const difference_type __d = difference_type(__n1 - __n2);
  8221.  
  8222.  if (__d > __gnu_cxx::__numeric_traits<int>::__max)
  8223.    return __gnu_cxx::__numeric_traits<int>::__max;
  8224.  else if (__d < __gnu_cxx::__numeric_traits<int>::__min)
  8225.    return __gnu_cxx::__numeric_traits<int>::__min;
  8226.  else
  8227.    return int(__d);
  8228.       }
  8229.  
  8230.       void
  8231.       _M_assign(const basic_string& __rcs);
  8232.  
  8233.       void
  8234.       _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
  8235.   size_type __len2);
  8236.  
  8237.       void
  8238.       _M_erase(size_type __pos, size_type __n);
  8239.  
  8240.     public:
  8241.  
  8242.  
  8243.  
  8244.  
  8245.  
  8246.  
  8247.  
  8248.       basic_string()
  8249.  
  8250.  
  8251.  
  8252.       : _M_dataplus(_M_local_data())
  8253.       { _M_set_length(0); }
  8254.  
  8255.  
  8256.  
  8257.  
  8258.       explicit
  8259.       basic_string(const _Alloc& __a)
  8260.       : _M_dataplus(_M_local_data(), __a)
  8261.       { _M_set_length(0); }
  8262.  
  8263.  
  8264.  
  8265.  
  8266.  
  8267.       basic_string(const basic_string& __str)
  8268.       : _M_dataplus(_M_local_data(), __str._M_get_allocator())
  8269.       { _M_construct(__str._M_data(), __str._M_data() + __str.length()); }
  8270. # 410 "/usr/include/c++/5/bits/basic_string.h" 3
  8271.       basic_string(const basic_string& __str, size_type __pos,
  8272.      size_type __n = npos)
  8273.       : _M_dataplus(_M_local_data())
  8274.       {
  8275.  const _CharT* __start = __str._M_data()
  8276.    + __str._M_check(__pos, "basic_string::basic_string");
  8277.  _M_construct(__start, __start + __str._M_limit(__pos, __n));
  8278.       }
  8279. # 426 "/usr/include/c++/5/bits/basic_string.h" 3
  8280.       basic_string(const basic_string& __str, size_type __pos,
  8281.      size_type __n, const _Alloc& __a)
  8282.       : _M_dataplus(_M_local_data(), __a)
  8283.       {
  8284.  const _CharT* __start
  8285.    = __str._M_data() + __str._M_check(__pos, "string::string");
  8286.  _M_construct(__start, __start + __str._M_limit(__pos, __n));
  8287.       }
  8288. # 444 "/usr/include/c++/5/bits/basic_string.h" 3
  8289.       basic_string(const _CharT* __s, size_type __n,
  8290.      const _Alloc& __a = _Alloc())
  8291.       : _M_dataplus(_M_local_data(), __a)
  8292.       { _M_construct(__s, __s + __n); }
  8293.  
  8294.  
  8295.  
  8296.  
  8297.  
  8298.  
  8299.       basic_string(const _CharT* __s, const _Alloc& __a = _Alloc())
  8300.       : _M_dataplus(_M_local_data(), __a)
  8301.       { _M_construct(__s, __s ? __s + traits_type::length(__s) : __s+npos); }
  8302.  
  8303.  
  8304.  
  8305.  
  8306.  
  8307.  
  8308.  
  8309.       basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc())
  8310.       : _M_dataplus(_M_local_data(), __a)
  8311.       { _M_construct(__n, __c); }
  8312. # 532 "/usr/include/c++/5/bits/basic_string.h" 3
  8313.       template<typename _InputIterator>
  8314.  
  8315.         basic_string(_InputIterator __beg, _InputIterator __end,
  8316.        const _Alloc& __a = _Alloc())
  8317.  : _M_dataplus(_M_local_data(), __a)
  8318.  { _M_construct(__beg, __end); }
  8319.  
  8320.  
  8321.  
  8322.  
  8323.       ~basic_string()
  8324.       { _M_dispose(); }
  8325.  
  8326.  
  8327.  
  8328.  
  8329.  
  8330.       basic_string&
  8331.       operator=(const basic_string& __str)
  8332.       { return this->assign(__str); }
  8333.  
  8334.  
  8335.  
  8336.  
  8337.  
  8338.       basic_string&
  8339.       operator=(const _CharT* __s)
  8340.       { return this->assign(__s); }
  8341. # 568 "/usr/include/c++/5/bits/basic_string.h" 3
  8342.       basic_string&
  8343.       operator=(_CharT __c)
  8344.       {
  8345.  this->assign(1, __c);
  8346.  return *this;
  8347.       }
  8348. # 610 "/usr/include/c++/5/bits/basic_string.h" 3
  8349.       iterator
  8350.       begin()
  8351.       { return iterator(_M_data()); }
  8352.  
  8353.  
  8354.  
  8355.  
  8356.  
  8357.       const_iterator
  8358.       begin() const
  8359.       { return const_iterator(_M_data()); }
  8360.  
  8361.  
  8362.  
  8363.  
  8364.  
  8365.       iterator
  8366.       end()
  8367.       { return iterator(_M_data() + this->size()); }
  8368.  
  8369.  
  8370.  
  8371.  
  8372.  
  8373.       const_iterator
  8374.       end() const
  8375.       { return const_iterator(_M_data() + this->size()); }
  8376.  
  8377.  
  8378.  
  8379.  
  8380.  
  8381.  
  8382.       reverse_iterator
  8383.       rbegin()
  8384.       { return reverse_iterator(this->end()); }
  8385.  
  8386.  
  8387.  
  8388.  
  8389.  
  8390.  
  8391.       const_reverse_iterator
  8392.       rbegin() const
  8393.       { return const_reverse_iterator(this->end()); }
  8394.  
  8395.  
  8396.  
  8397.  
  8398.  
  8399.  
  8400.       reverse_iterator
  8401.       rend()
  8402.       { return reverse_iterator(this->begin()); }
  8403.  
  8404.  
  8405.  
  8406.  
  8407.  
  8408.  
  8409.       const_reverse_iterator
  8410.       rend() const
  8411.       { return const_reverse_iterator(this->begin()); }
  8412. # 710 "/usr/include/c++/5/bits/basic_string.h" 3
  8413.     public:
  8414.  
  8415.  
  8416.  
  8417.       size_type
  8418.       size() const
  8419.       { return _M_string_length; }
  8420.  
  8421.  
  8422.  
  8423.       size_type
  8424.       length() const
  8425.       { return _M_string_length; }
  8426.  
  8427.  
  8428.       size_type
  8429.       max_size() const
  8430.       { return (_Alloc_traits::max_size(_M_get_allocator()) - 1) / 2; }
  8431. # 739 "/usr/include/c++/5/bits/basic_string.h" 3
  8432.       void
  8433.       resize(size_type __n, _CharT __c);
  8434. # 752 "/usr/include/c++/5/bits/basic_string.h" 3
  8435.       void
  8436.       resize(size_type __n)
  8437.       { this->resize(__n, _CharT()); }
  8438. # 777 "/usr/include/c++/5/bits/basic_string.h" 3
  8439.       size_type
  8440.       capacity() const
  8441.       {
  8442.  return _M_is_local() ? size_type(_S_local_capacity)
  8443.                       : _M_allocated_capacity;
  8444.       }
  8445. # 801 "/usr/include/c++/5/bits/basic_string.h" 3
  8446.       void
  8447.       reserve(size_type __res_arg = 0);
  8448.  
  8449.  
  8450.  
  8451.  
  8452.       void
  8453.       clear()
  8454.       { _M_set_length(0); }
  8455.  
  8456.  
  8457.  
  8458.  
  8459.  
  8460.       bool
  8461.       empty() const
  8462.       { return this->size() == 0; }
  8463. # 830 "/usr/include/c++/5/bits/basic_string.h" 3
  8464.       const_reference
  8465.       operator[] (size_type __pos) const
  8466.       {
  8467.  ;
  8468.  return _M_data()[__pos];
  8469.       }
  8470. # 847 "/usr/include/c++/5/bits/basic_string.h" 3
  8471.       reference
  8472.       operator[](size_type __pos)
  8473.       {
  8474.  
  8475.  
  8476.  ;
  8477.  
  8478.  ;
  8479.  return _M_data()[__pos];
  8480.       }
  8481. # 868 "/usr/include/c++/5/bits/basic_string.h" 3
  8482.       const_reference
  8483.       at(size_type __n) const
  8484.       {
  8485.  if (__n >= this->size())
  8486.    __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)")
  8487.  
  8488.                             ,
  8489.        __n, this->size());
  8490.  return _M_data()[__n];
  8491.       }
  8492. # 889 "/usr/include/c++/5/bits/basic_string.h" 3
  8493.       reference
  8494.       at(size_type __n)
  8495.       {
  8496.  if (__n >= size())
  8497.    __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)")
  8498.  
  8499.                             ,
  8500.        __n, this->size());
  8501.  return _M_data()[__n];
  8502.       }
  8503. # 940 "/usr/include/c++/5/bits/basic_string.h" 3
  8504.       basic_string&
  8505.       operator+=(const basic_string& __str)
  8506.       { return this->append(__str); }
  8507.  
  8508.  
  8509.  
  8510.  
  8511.  
  8512.  
  8513.       basic_string&
  8514.       operator+=(const _CharT* __s)
  8515.       { return this->append(__s); }
  8516.  
  8517.  
  8518.  
  8519.  
  8520.  
  8521.  
  8522.       basic_string&
  8523.       operator+=(_CharT __c)
  8524.       {
  8525.  this->push_back(__c);
  8526.  return *this;
  8527.       }
  8528. # 981 "/usr/include/c++/5/bits/basic_string.h" 3
  8529.       basic_string&
  8530.       append(const basic_string& __str)
  8531.       { return _M_append(__str._M_data(), __str.size()); }
  8532. # 998 "/usr/include/c++/5/bits/basic_string.h" 3
  8533.       basic_string&
  8534.       append(const basic_string& __str, size_type __pos, size_type __n)
  8535.       { return _M_append(__str._M_data()
  8536.     + __str._M_check(__pos, "basic_string::append"),
  8537.     __str._M_limit(__pos, __n)); }
  8538.  
  8539.  
  8540.  
  8541.  
  8542.  
  8543.  
  8544.  
  8545.       basic_string&
  8546.       append(const _CharT* __s, size_type __n)
  8547.       {
  8548.  ;
  8549.  _M_check_length(size_type(0), __n, "basic_string::append");
  8550.  return _M_append(__s, __n);
  8551.       }
  8552.  
  8553.  
  8554.  
  8555.  
  8556.  
  8557.  
  8558.       basic_string&
  8559.       append(const _CharT* __s)
  8560.       {
  8561.  ;
  8562.  const size_type __n = traits_type::length(__s);
  8563.  _M_check_length(size_type(0), __n, "basic_string::append");
  8564.  return _M_append(__s, __n);
  8565.       }
  8566. # 1040 "/usr/include/c++/5/bits/basic_string.h" 3
  8567.       basic_string&
  8568.       append(size_type __n, _CharT __c)
  8569.       { return _M_replace_aux(this->size(), size_type(0), __n, __c); }
  8570. # 1067 "/usr/include/c++/5/bits/basic_string.h" 3
  8571.       template<class _InputIterator>
  8572.  
  8573.         basic_string&
  8574.         append(_InputIterator __first, _InputIterator __last)
  8575.         { return this->replace(end(), end(), __first, __last); }
  8576.  
  8577.  
  8578.  
  8579.  
  8580.  
  8581.       void
  8582.       push_back(_CharT __c)
  8583.       {
  8584.  const size_type __size = this->size();
  8585.  if (__size + 1 > this->capacity())
  8586.    this->_M_mutate(__size, size_type(0), 0, size_type(1));
  8587.  traits_type::assign(this->_M_data()[__size], __c);
  8588.  this->_M_set_length(__size + 1);
  8589.       }
  8590.  
  8591.  
  8592.  
  8593.  
  8594.  
  8595.  
  8596.       basic_string&
  8597.       assign(const basic_string& __str)
  8598.       {
  8599.  this->_M_assign(__str);
  8600.  return *this;
  8601.       }
  8602. # 1130 "/usr/include/c++/5/bits/basic_string.h" 3
  8603.       basic_string&
  8604.       assign(const basic_string& __str, size_type __pos, size_type __n)
  8605.       { return _M_replace(size_type(0), this->size(), __str._M_data()
  8606.      + __str._M_check(__pos, "basic_string::assign"),
  8607.      __str._M_limit(__pos, __n)); }
  8608. # 1146 "/usr/include/c++/5/bits/basic_string.h" 3
  8609.       basic_string&
  8610.       assign(const _CharT* __s, size_type __n)
  8611.       {
  8612.  ;
  8613.  return _M_replace(size_type(0), this->size(), __s, __n);
  8614.       }
  8615. # 1162 "/usr/include/c++/5/bits/basic_string.h" 3
  8616.       basic_string&
  8617.       assign(const _CharT* __s)
  8618.       {
  8619.  ;
  8620.  return _M_replace(size_type(0), this->size(), __s,
  8621.      traits_type::length(__s));
  8622.       }
  8623. # 1179 "/usr/include/c++/5/bits/basic_string.h" 3
  8624.       basic_string&
  8625.       assign(size_type __n, _CharT __c)
  8626.       { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
  8627. # 1195 "/usr/include/c++/5/bits/basic_string.h" 3
  8628.       template<class _InputIterator>
  8629.  
  8630.         basic_string&
  8631.         assign(_InputIterator __first, _InputIterator __last)
  8632.         { return this->replace(begin(), end(), __first, __last); }
  8633. # 1250 "/usr/include/c++/5/bits/basic_string.h" 3
  8634.       void
  8635.       insert(iterator __p, size_type __n, _CharT __c)
  8636.       { this->replace(__p, __p, __n, __c); }
  8637. # 1293 "/usr/include/c++/5/bits/basic_string.h" 3
  8638.       template<class _InputIterator>
  8639.         void
  8640.         insert(iterator __p, _InputIterator __beg, _InputIterator __end)
  8641.         { this->replace(__p, __p, __beg, __end); }
  8642. # 1326 "/usr/include/c++/5/bits/basic_string.h" 3
  8643.       basic_string&
  8644.       insert(size_type __pos1, const basic_string& __str)
  8645.       { return this->replace(__pos1, size_type(0),
  8646.         __str._M_data(), __str.size()); }
  8647. # 1349 "/usr/include/c++/5/bits/basic_string.h" 3
  8648.       basic_string&
  8649.       insert(size_type __pos1, const basic_string& __str,
  8650.       size_type __pos2, size_type __n)
  8651.       { return this->replace(__pos1, size_type(0), __str._M_data()
  8652.         + __str._M_check(__pos2, "basic_string::insert"),
  8653.         __str._M_limit(__pos2, __n)); }
  8654. # 1372 "/usr/include/c++/5/bits/basic_string.h" 3
  8655.       basic_string&
  8656.       insert(size_type __pos, const _CharT* __s, size_type __n)
  8657.       { return this->replace(__pos, size_type(0), __s, __n); }
  8658. # 1391 "/usr/include/c++/5/bits/basic_string.h" 3
  8659.       basic_string&
  8660.       insert(size_type __pos, const _CharT* __s)
  8661.       {
  8662.  ;
  8663.  return this->replace(__pos, size_type(0), __s,
  8664.         traits_type::length(__s));
  8665.       }
  8666. # 1415 "/usr/include/c++/5/bits/basic_string.h" 3
  8667.       basic_string&
  8668.       insert(size_type __pos, size_type __n, _CharT __c)
  8669.       { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
  8670.          size_type(0), __n, __c); }
  8671. # 1433 "/usr/include/c++/5/bits/basic_string.h" 3
  8672.       iterator
  8673.       insert(__const_iterator __p, _CharT __c)
  8674.       {
  8675.  ;
  8676.  const size_type __pos = __p - begin();
  8677.  _M_replace_aux(__pos, size_type(0), size_type(1), __c);
  8678.  return iterator(_M_data() + __pos);
  8679.       }
  8680. # 1457 "/usr/include/c++/5/bits/basic_string.h" 3
  8681.       basic_string&
  8682.       erase(size_type __pos = 0, size_type __n = npos)
  8683.       {
  8684.  this->_M_erase(_M_check(__pos, "basic_string::erase"),
  8685.          _M_limit(__pos, __n));
  8686.  return *this;
  8687.       }
  8688. # 1473 "/usr/include/c++/5/bits/basic_string.h" 3
  8689.       iterator
  8690.       erase(__const_iterator __position)
  8691.       {
  8692.  
  8693.                            ;
  8694.  const size_type __pos = __position - begin();
  8695.  this->_M_erase(__pos, size_type(1));
  8696.  return iterator(_M_data() + __pos);
  8697.       }
  8698. # 1492 "/usr/include/c++/5/bits/basic_string.h" 3
  8699.       iterator
  8700.       erase(__const_iterator __first, __const_iterator __last)
  8701.       {
  8702.  
  8703.                         ;
  8704.         const size_type __pos = __first - begin();
  8705.  this->_M_erase(__pos, __last - __first);
  8706.  return iterator(this->_M_data() + __pos);
  8707.       }
  8708. # 1530 "/usr/include/c++/5/bits/basic_string.h" 3
  8709.       basic_string&
  8710.       replace(size_type __pos, size_type __n, const basic_string& __str)
  8711.       { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
  8712. # 1552 "/usr/include/c++/5/bits/basic_string.h" 3
  8713.       basic_string&
  8714.       replace(size_type __pos1, size_type __n1, const basic_string& __str,
  8715.        size_type __pos2, size_type __n2)
  8716.       { return this->replace(__pos1, __n1, __str._M_data()
  8717.         + __str._M_check(__pos2, "basic_string::replace"),
  8718.         __str._M_limit(__pos2, __n2)); }
  8719. # 1577 "/usr/include/c++/5/bits/basic_string.h" 3
  8720.       basic_string&
  8721.       replace(size_type __pos, size_type __n1, const _CharT* __s,
  8722.        size_type __n2)
  8723.       {
  8724.  ;
  8725.  return _M_replace(_M_check(__pos, "basic_string::replace"),
  8726.      _M_limit(__pos, __n1), __s, __n2);
  8727.       }
  8728. # 1602 "/usr/include/c++/5/bits/basic_string.h" 3
  8729.       basic_string&
  8730.       replace(size_type __pos, size_type __n1, const _CharT* __s)
  8731.       {
  8732.  ;
  8733.  return this->replace(__pos, __n1, __s, traits_type::length(__s));
  8734.       }
  8735. # 1626 "/usr/include/c++/5/bits/basic_string.h" 3
  8736.       basic_string&
  8737.       replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
  8738.       { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
  8739.          _M_limit(__pos, __n1), __n2, __c); }
  8740. # 1644 "/usr/include/c++/5/bits/basic_string.h" 3
  8741.       basic_string&
  8742.       replace(__const_iterator __i1, __const_iterator __i2,
  8743.        const basic_string& __str)
  8744.       { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
  8745. # 1664 "/usr/include/c++/5/bits/basic_string.h" 3
  8746.       basic_string&
  8747.       replace(__const_iterator __i1, __const_iterator __i2,
  8748.        const _CharT* __s, size_type __n)
  8749.       {
  8750.  
  8751.                       ;
  8752.  return this->replace(__i1 - begin(), __i2 - __i1, __s, __n);
  8753.       }
  8754. # 1686 "/usr/include/c++/5/bits/basic_string.h" 3
  8755.       basic_string&
  8756.       replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s)
  8757.       {
  8758.  ;
  8759.  return this->replace(__i1, __i2, __s, traits_type::length(__s));
  8760.       }
  8761. # 1707 "/usr/include/c++/5/bits/basic_string.h" 3
  8762.       basic_string&
  8763.       replace(__const_iterator __i1, __const_iterator __i2, size_type __n,
  8764.        _CharT __c)
  8765.       {
  8766.  
  8767.                       ;
  8768.  return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c);
  8769.       }
  8770. # 1745 "/usr/include/c++/5/bits/basic_string.h" 3
  8771.       template<class _InputIterator>
  8772.  
  8773.  
  8774.  
  8775.         basic_string&
  8776.  
  8777.         replace(iterator __i1, iterator __i2,
  8778.   _InputIterator __k1, _InputIterator __k2)
  8779.         {
  8780.  
  8781.                         ;
  8782.    ;
  8783.    typedef typename std::__is_integer<_InputIterator>::__type _Integral;
  8784.    return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
  8785.  }
  8786.  
  8787.  
  8788.  
  8789.  
  8790.       basic_string&
  8791.       replace(__const_iterator __i1, __const_iterator __i2,
  8792.        _CharT* __k1, _CharT* __k2)
  8793.       {
  8794.  
  8795.                       ;
  8796.  ;
  8797.  return this->replace(__i1 - begin(), __i2 - __i1,
  8798.         __k1, __k2 - __k1);
  8799.       }
  8800.  
  8801.       basic_string&
  8802.       replace(__const_iterator __i1, __const_iterator __i2,
  8803.        const _CharT* __k1, const _CharT* __k2)
  8804.       {
  8805.  
  8806.                       ;
  8807.  ;
  8808.  return this->replace(__i1 - begin(), __i2 - __i1,
  8809.         __k1, __k2 - __k1);
  8810.       }
  8811.  
  8812.       basic_string&
  8813.       replace(__const_iterator __i1, __const_iterator __i2,
  8814.        iterator __k1, iterator __k2)
  8815.       {
  8816.  
  8817.                       ;
  8818.  ;
  8819.  return this->replace(__i1 - begin(), __i2 - __i1,
  8820.         __k1.base(), __k2 - __k1);
  8821.       }
  8822.  
  8823.       basic_string&
  8824.       replace(__const_iterator __i1, __const_iterator __i2,
  8825.        const_iterator __k1, const_iterator __k2)
  8826.       {
  8827.  
  8828.                       ;
  8829.  ;
  8830.  return this->replace(__i1 - begin(), __i2 - __i1,
  8831.         __k1.base(), __k2 - __k1);
  8832.       }
  8833. # 1828 "/usr/include/c++/5/bits/basic_string.h" 3
  8834.     private:
  8835.       template<class _Integer>
  8836.  basic_string&
  8837.  _M_replace_dispatch(const_iterator __i1, const_iterator __i2,
  8838.        _Integer __n, _Integer __val, __true_type)
  8839.         { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); }
  8840.  
  8841.       template<class _InputIterator>
  8842.  basic_string&
  8843.  _M_replace_dispatch(const_iterator __i1, const_iterator __i2,
  8844.        _InputIterator __k1, _InputIterator __k2,
  8845.        __false_type);
  8846.  
  8847.       basic_string&
  8848.       _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
  8849.        _CharT __c);
  8850.  
  8851.       basic_string&
  8852.       _M_replace(size_type __pos, size_type __len1, const _CharT* __s,
  8853.    const size_type __len2);
  8854.  
  8855.       basic_string&
  8856.       _M_append(const _CharT* __s, size_type __n);
  8857.  
  8858.     public:
  8859. # 1866 "/usr/include/c++/5/bits/basic_string.h" 3
  8860.       size_type
  8861.       copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
  8862. # 1876 "/usr/include/c++/5/bits/basic_string.h" 3
  8863.       void
  8864.       swap(basic_string& __s) ;
  8865. # 1886 "/usr/include/c++/5/bits/basic_string.h" 3
  8866.       const _CharT*
  8867.       c_str() const
  8868.       { return _M_data(); }
  8869.  
  8870.  
  8871.  
  8872.  
  8873.  
  8874.  
  8875.  
  8876.       const _CharT*
  8877.       data() const
  8878.       { return _M_data(); }
  8879.  
  8880.  
  8881.  
  8882.  
  8883.       allocator_type
  8884.       get_allocator() const
  8885.       { return _M_get_allocator(); }
  8886. # 1919 "/usr/include/c++/5/bits/basic_string.h" 3
  8887.       size_type
  8888.       find(const _CharT* __s, size_type __pos, size_type __n) const;
  8889. # 1932 "/usr/include/c++/5/bits/basic_string.h" 3
  8890.       size_type
  8891.       find(const basic_string& __str, size_type __pos = 0) const
  8892.  
  8893.       { return this->find(__str.data(), __pos, __str.size()); }
  8894. # 1947 "/usr/include/c++/5/bits/basic_string.h" 3
  8895.       size_type
  8896.       find(const _CharT* __s, size_type __pos = 0) const
  8897.       {
  8898.  ;
  8899.  return this->find(__s, __pos, traits_type::length(__s));
  8900.       }
  8901. # 1964 "/usr/include/c++/5/bits/basic_string.h" 3
  8902.       size_type
  8903.       find(_CharT __c, size_type __pos = 0) const ;
  8904. # 1977 "/usr/include/c++/5/bits/basic_string.h" 3
  8905.       size_type
  8906.       rfind(const basic_string& __str, size_type __pos = npos) const
  8907.  
  8908.       { return this->rfind(__str.data(), __pos, __str.size()); }
  8909. # 1994 "/usr/include/c++/5/bits/basic_string.h" 3
  8910.       size_type
  8911.       rfind(const _CharT* __s, size_type __pos, size_type __n) const;
  8912. # 2007 "/usr/include/c++/5/bits/basic_string.h" 3
  8913.       size_type
  8914.       rfind(const _CharT* __s, size_type __pos = npos) const
  8915.       {
  8916.  ;
  8917.  return this->rfind(__s, __pos, traits_type::length(__s));
  8918.       }
  8919. # 2024 "/usr/include/c++/5/bits/basic_string.h" 3
  8920.       size_type
  8921.       rfind(_CharT __c, size_type __pos = npos) const ;
  8922. # 2038 "/usr/include/c++/5/bits/basic_string.h" 3
  8923.       size_type
  8924.       find_first_of(const basic_string& __str, size_type __pos = 0) const
  8925.  
  8926.       { return this->find_first_of(__str.data(), __pos, __str.size()); }
  8927. # 2055 "/usr/include/c++/5/bits/basic_string.h" 3
  8928.       size_type
  8929.       find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
  8930. # 2068 "/usr/include/c++/5/bits/basic_string.h" 3
  8931.       size_type
  8932.       find_first_of(const _CharT* __s, size_type __pos = 0) const
  8933.       {
  8934.  ;
  8935.  return this->find_first_of(__s, __pos, traits_type::length(__s));
  8936.       }
  8937. # 2087 "/usr/include/c++/5/bits/basic_string.h" 3
  8938.       size_type
  8939.       find_first_of(_CharT __c, size_type __pos = 0) const
  8940.       { return this->find(__c, __pos); }
  8941. # 2102 "/usr/include/c++/5/bits/basic_string.h" 3
  8942.       size_type
  8943.       find_last_of(const basic_string& __str, size_type __pos = npos) const
  8944.  
  8945.       { return this->find_last_of(__str.data(), __pos, __str.size()); }
  8946. # 2119 "/usr/include/c++/5/bits/basic_string.h" 3
  8947.       size_type
  8948.       find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
  8949. # 2132 "/usr/include/c++/5/bits/basic_string.h" 3
  8950.       size_type
  8951.       find_last_of(const _CharT* __s, size_type __pos = npos) const
  8952.       {
  8953.  ;
  8954.  return this->find_last_of(__s, __pos, traits_type::length(__s));
  8955.       }
  8956. # 2151 "/usr/include/c++/5/bits/basic_string.h" 3
  8957.       size_type
  8958.       find_last_of(_CharT __c, size_type __pos = npos) const
  8959.       { return this->rfind(__c, __pos); }
  8960. # 2165 "/usr/include/c++/5/bits/basic_string.h" 3
  8961.       size_type
  8962.       find_first_not_of(const basic_string& __str, size_type __pos = 0) const
  8963.  
  8964.       { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
  8965. # 2182 "/usr/include/c++/5/bits/basic_string.h" 3
  8966.       size_type
  8967.       find_first_not_of(const _CharT* __s, size_type __pos,
  8968.    size_type __n) const;
  8969. # 2196 "/usr/include/c++/5/bits/basic_string.h" 3
  8970.       size_type
  8971.       find_first_not_of(const _CharT* __s, size_type __pos = 0) const
  8972.       {
  8973.  ;
  8974.  return this->find_first_not_of(__s, __pos, traits_type::length(__s));
  8975.       }
  8976. # 2213 "/usr/include/c++/5/bits/basic_string.h" 3
  8977.       size_type
  8978.       find_first_not_of(_CharT __c, size_type __pos = 0) const
  8979.  ;
  8980. # 2228 "/usr/include/c++/5/bits/basic_string.h" 3
  8981.       size_type
  8982.       find_last_not_of(const basic_string& __str, size_type __pos = npos) const
  8983.  
  8984.       { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
  8985. # 2245 "/usr/include/c++/5/bits/basic_string.h" 3
  8986.       size_type
  8987.       find_last_not_of(const _CharT* __s, size_type __pos,
  8988.          size_type __n) const;
  8989. # 2259 "/usr/include/c++/5/bits/basic_string.h" 3
  8990.       size_type
  8991.       find_last_not_of(const _CharT* __s, size_type __pos = npos) const
  8992.       {
  8993.  ;
  8994.  return this->find_last_not_of(__s, __pos, traits_type::length(__s));
  8995.       }
  8996. # 2276 "/usr/include/c++/5/bits/basic_string.h" 3
  8997.       size_type
  8998.       find_last_not_of(_CharT __c, size_type __pos = npos) const
  8999.  ;
  9000. # 2292 "/usr/include/c++/5/bits/basic_string.h" 3
  9001.       basic_string
  9002.       substr(size_type __pos = 0, size_type __n = npos) const
  9003.       { return basic_string(*this,
  9004.        _M_check(__pos, "basic_string::substr"), __n); }
  9005. # 2311 "/usr/include/c++/5/bits/basic_string.h" 3
  9006.       int
  9007.       compare(const basic_string& __str) const
  9008.       {
  9009.  const size_type __size = this->size();
  9010.  const size_type __osize = __str.size();
  9011.  const size_type __len = std::min(__size, __osize);
  9012.  
  9013.  int __r = traits_type::compare(_M_data(), __str.data(), __len);
  9014.  if (!__r)
  9015.    __r = _S_compare(__size, __osize);
  9016.  return __r;
  9017.       }
  9018. # 2343 "/usr/include/c++/5/bits/basic_string.h" 3
  9019.       int
  9020.       compare(size_type __pos, size_type __n, const basic_string& __str) const;
  9021. # 2369 "/usr/include/c++/5/bits/basic_string.h" 3
  9022.       int
  9023.       compare(size_type __pos1, size_type __n1, const basic_string& __str,
  9024.        size_type __pos2, size_type __n2) const;
  9025. # 2387 "/usr/include/c++/5/bits/basic_string.h" 3
  9026.       int
  9027.       compare(const _CharT* __s) const;
  9028. # 2411 "/usr/include/c++/5/bits/basic_string.h" 3
  9029.       int
  9030.       compare(size_type __pos, size_type __n1, const _CharT* __s) const;
  9031. # 2438 "/usr/include/c++/5/bits/basic_string.h" 3
  9032.       int
  9033.       compare(size_type __pos, size_type __n1, const _CharT* __s,
  9034.        size_type __n2) const;
  9035.   };
  9036. }
  9037. # 4781 "/usr/include/c++/5/bits/basic_string.h" 3
  9038.   template<typename _CharT, typename _Traits, typename _Alloc>
  9039.     basic_string<_CharT, _Traits, _Alloc>
  9040.     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9041.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9042.     {
  9043.       basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
  9044.       __str.append(__rhs);
  9045.       return __str;
  9046.     }
  9047.  
  9048.  
  9049.  
  9050.  
  9051.  
  9052.  
  9053.  
  9054.   template<typename _CharT, typename _Traits, typename _Alloc>
  9055.     basic_string<_CharT,_Traits,_Alloc>
  9056.     operator+(const _CharT* __lhs,
  9057.        const basic_string<_CharT,_Traits,_Alloc>& __rhs);
  9058.  
  9059.  
  9060.  
  9061.  
  9062.  
  9063.  
  9064.  
  9065.   template<typename _CharT, typename _Traits, typename _Alloc>
  9066.     basic_string<_CharT,_Traits,_Alloc>
  9067.     operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
  9068.  
  9069.  
  9070.  
  9071.  
  9072.  
  9073.  
  9074.  
  9075.   template<typename _CharT, typename _Traits, typename _Alloc>
  9076.     inline basic_string<_CharT, _Traits, _Alloc>
  9077.     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9078.        const _CharT* __rhs)
  9079.     {
  9080.       basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
  9081.       __str.append(__rhs);
  9082.       return __str;
  9083.     }
  9084.  
  9085.  
  9086.  
  9087.  
  9088.  
  9089.  
  9090.  
  9091.   template<typename _CharT, typename _Traits, typename _Alloc>
  9092.     inline basic_string<_CharT, _Traits, _Alloc>
  9093.     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
  9094.     {
  9095.       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
  9096.       typedef typename __string_type::size_type __size_type;
  9097.       __string_type __str(__lhs);
  9098.       __str.append(__size_type(1), __rhs);
  9099.       return __str;
  9100.     }
  9101. # 4902 "/usr/include/c++/5/bits/basic_string.h" 3
  9102.   template<typename _CharT, typename _Traits, typename _Alloc>
  9103.     inline bool
  9104.     operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9105.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9106.     { return __lhs.compare(__rhs) == 0; }
  9107.  
  9108.   template<typename _CharT>
  9109.     inline
  9110.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
  9111.     operator==(const basic_string<_CharT>& __lhs,
  9112.         const basic_string<_CharT>& __rhs)
  9113.     { return (__lhs.size() == __rhs.size()
  9114.        && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
  9115.           __lhs.size())); }
  9116.  
  9117.  
  9118.  
  9119.  
  9120.  
  9121.  
  9122.  
  9123.   template<typename _CharT, typename _Traits, typename _Alloc>
  9124.     inline bool
  9125.     operator==(const _CharT* __lhs,
  9126.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9127.     { return __rhs.compare(__lhs) == 0; }
  9128.  
  9129.  
  9130.  
  9131.  
  9132.  
  9133.  
  9134.  
  9135.   template<typename _CharT, typename _Traits, typename _Alloc>
  9136.     inline bool
  9137.     operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9138.         const _CharT* __rhs)
  9139.     { return __lhs.compare(__rhs) == 0; }
  9140. # 4948 "/usr/include/c++/5/bits/basic_string.h" 3
  9141.   template<typename _CharT, typename _Traits, typename _Alloc>
  9142.     inline bool
  9143.     operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9144.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9145.     { return !(__lhs == __rhs); }
  9146.  
  9147.  
  9148.  
  9149.  
  9150.  
  9151.  
  9152.  
  9153.   template<typename _CharT, typename _Traits, typename _Alloc>
  9154.     inline bool
  9155.     operator!=(const _CharT* __lhs,
  9156.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9157.     { return !(__lhs == __rhs); }
  9158.  
  9159.  
  9160.  
  9161.  
  9162.  
  9163.  
  9164.  
  9165.   template<typename _CharT, typename _Traits, typename _Alloc>
  9166.     inline bool
  9167.     operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9168.         const _CharT* __rhs)
  9169.     { return !(__lhs == __rhs); }
  9170. # 4985 "/usr/include/c++/5/bits/basic_string.h" 3
  9171.   template<typename _CharT, typename _Traits, typename _Alloc>
  9172.     inline bool
  9173.     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9174.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9175.     { return __lhs.compare(__rhs) < 0; }
  9176.  
  9177.  
  9178.  
  9179.  
  9180.  
  9181.  
  9182.  
  9183.   template<typename _CharT, typename _Traits, typename _Alloc>
  9184.     inline bool
  9185.     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9186.        const _CharT* __rhs)
  9187.     { return __lhs.compare(__rhs) < 0; }
  9188.  
  9189.  
  9190.  
  9191.  
  9192.  
  9193.  
  9194.  
  9195.   template<typename _CharT, typename _Traits, typename _Alloc>
  9196.     inline bool
  9197.     operator<(const _CharT* __lhs,
  9198.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9199.     { return __rhs.compare(__lhs) > 0; }
  9200. # 5022 "/usr/include/c++/5/bits/basic_string.h" 3
  9201.   template<typename _CharT, typename _Traits, typename _Alloc>
  9202.     inline bool
  9203.     operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9204.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9205.     { return __lhs.compare(__rhs) > 0; }
  9206.  
  9207.  
  9208.  
  9209.  
  9210.  
  9211.  
  9212.  
  9213.   template<typename _CharT, typename _Traits, typename _Alloc>
  9214.     inline bool
  9215.     operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9216.        const _CharT* __rhs)
  9217.     { return __lhs.compare(__rhs) > 0; }
  9218.  
  9219.  
  9220.  
  9221.  
  9222.  
  9223.  
  9224.  
  9225.   template<typename _CharT, typename _Traits, typename _Alloc>
  9226.     inline bool
  9227.     operator>(const _CharT* __lhs,
  9228.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9229.     { return __rhs.compare(__lhs) < 0; }
  9230. # 5059 "/usr/include/c++/5/bits/basic_string.h" 3
  9231.   template<typename _CharT, typename _Traits, typename _Alloc>
  9232.     inline bool
  9233.     operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9234.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9235.     { return __lhs.compare(__rhs) <= 0; }
  9236.  
  9237.  
  9238.  
  9239.  
  9240.  
  9241.  
  9242.  
  9243.   template<typename _CharT, typename _Traits, typename _Alloc>
  9244.     inline bool
  9245.     operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9246.         const _CharT* __rhs)
  9247.     { return __lhs.compare(__rhs) <= 0; }
  9248.  
  9249.  
  9250.  
  9251.  
  9252.  
  9253.  
  9254.  
  9255.   template<typename _CharT, typename _Traits, typename _Alloc>
  9256.     inline bool
  9257.     operator<=(const _CharT* __lhs,
  9258.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9259.     { return __rhs.compare(__lhs) >= 0; }
  9260. # 5096 "/usr/include/c++/5/bits/basic_string.h" 3
  9261.   template<typename _CharT, typename _Traits, typename _Alloc>
  9262.     inline bool
  9263.     operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9264.         const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9265.     { return __lhs.compare(__rhs) >= 0; }
  9266.  
  9267.  
  9268.  
  9269.  
  9270.  
  9271.  
  9272.  
  9273.   template<typename _CharT, typename _Traits, typename _Alloc>
  9274.     inline bool
  9275.     operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9276.         const _CharT* __rhs)
  9277.     { return __lhs.compare(__rhs) >= 0; }
  9278.  
  9279.  
  9280.  
  9281.  
  9282.  
  9283.  
  9284.  
  9285.   template<typename _CharT, typename _Traits, typename _Alloc>
  9286.     inline bool
  9287.     operator>=(const _CharT* __lhs,
  9288.       const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9289.     { return __rhs.compare(__lhs) <= 0; }
  9290. # 5133 "/usr/include/c++/5/bits/basic_string.h" 3
  9291.   template<typename _CharT, typename _Traits, typename _Alloc>
  9292.     inline void
  9293.     swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
  9294.   basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9295.     { __lhs.swap(__rhs); }
  9296. # 5152 "/usr/include/c++/5/bits/basic_string.h" 3
  9297.   template<typename _CharT, typename _Traits, typename _Alloc>
  9298.     basic_istream<_CharT, _Traits>&
  9299.     operator>>(basic_istream<_CharT, _Traits>& __is,
  9300.         basic_string<_CharT, _Traits, _Alloc>& __str);
  9301.  
  9302.   template<>
  9303.     basic_istream<char>&
  9304.     operator>>(basic_istream<char>& __is, basic_string<char>& __str);
  9305. # 5170 "/usr/include/c++/5/bits/basic_string.h" 3
  9306.   template<typename _CharT, typename _Traits, typename _Alloc>
  9307.     inline basic_ostream<_CharT, _Traits>&
  9308.     operator<<(basic_ostream<_CharT, _Traits>& __os,
  9309.         const basic_string<_CharT, _Traits, _Alloc>& __str)
  9310.     {
  9311.  
  9312.  
  9313.       return __ostream_insert(__os, __str.data(), __str.size());
  9314.     }
  9315. # 5193 "/usr/include/c++/5/bits/basic_string.h" 3
  9316.   template<typename _CharT, typename _Traits, typename _Alloc>
  9317.     basic_istream<_CharT, _Traits>&
  9318.     getline(basic_istream<_CharT, _Traits>& __is,
  9319.      basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
  9320. # 5210 "/usr/include/c++/5/bits/basic_string.h" 3
  9321.   template<typename _CharT, typename _Traits, typename _Alloc>
  9322.     inline basic_istream<_CharT, _Traits>&
  9323.     getline(basic_istream<_CharT, _Traits>& __is,
  9324.      basic_string<_CharT, _Traits, _Alloc>& __str)
  9325.     { return std::getline(__is, __str, __is.widen('\n')); }
  9326. # 5232 "/usr/include/c++/5/bits/basic_string.h" 3
  9327.   template<>
  9328.     basic_istream<char>&
  9329.     getline(basic_istream<char>& __in, basic_string<char>& __str,
  9330.      char __delim);
  9331.  
  9332.  
  9333.   template<>
  9334.     basic_istream<wchar_t>&
  9335.     getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str,
  9336.      wchar_t __delim);
  9337.  
  9338.  
  9339.  
  9340. }
  9341. # 53 "/usr/include/c++/5/string" 2 3
  9342. # 1 "/usr/include/c++/5/bits/basic_string.tcc" 1 3
  9343. # 42 "/usr/include/c++/5/bits/basic_string.tcc" 3
  9344.        
  9345. # 43 "/usr/include/c++/5/bits/basic_string.tcc" 3
  9346.  
  9347.  
  9348.  
  9349. namespace std __attribute__ ((__visibility__ ("default")))
  9350. {
  9351.  
  9352.  
  9353.  
  9354.  
  9355.   template<typename _CharT, typename _Traits, typename _Alloc>
  9356.     const typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9357.     basic_string<_CharT, _Traits, _Alloc>::npos;
  9358.  
  9359.   template<typename _CharT, typename _Traits, typename _Alloc>
  9360.     void
  9361.     basic_string<_CharT, _Traits, _Alloc>::
  9362.     swap(basic_string& __s)
  9363.     {
  9364.       if (this == &__s)
  9365.  return;
  9366.  
  9367.  
  9368.  
  9369.  
  9370.       std::__alloc_swap<allocator_type>::_S_do_it(_M_get_allocator(),
  9371.         __s._M_get_allocator());
  9372.  
  9373.       if (_M_is_local())
  9374.  if (__s._M_is_local())
  9375.    {
  9376.      if (length() && __s.length())
  9377.        {
  9378.   _CharT __tmp_data[_S_local_capacity + 1];
  9379.   traits_type::copy(__tmp_data, __s._M_local_buf,
  9380.       _S_local_capacity + 1);
  9381.   traits_type::copy(__s._M_local_buf, _M_local_buf,
  9382.       _S_local_capacity + 1);
  9383.   traits_type::copy(_M_local_buf, __tmp_data,
  9384.       _S_local_capacity + 1);
  9385.        }
  9386.      else if (__s.length())
  9387.        {
  9388.   traits_type::copy(_M_local_buf, __s._M_local_buf,
  9389.       _S_local_capacity + 1);
  9390.   _M_length(__s.length());
  9391.   __s._M_set_length(0);
  9392.   return;
  9393.        }
  9394.      else if (length())
  9395.        {
  9396.   traits_type::copy(__s._M_local_buf, _M_local_buf,
  9397.       _S_local_capacity + 1);
  9398.   __s._M_length(length());
  9399.   _M_set_length(0);
  9400.   return;
  9401.        }
  9402.    }
  9403.  else
  9404.    {
  9405.      const size_type __tmp_capacity = __s._M_allocated_capacity;
  9406.      traits_type::copy(__s._M_local_buf, _M_local_buf,
  9407.          _S_local_capacity + 1);
  9408.      _M_data(__s._M_data());
  9409.      __s._M_data(__s._M_local_buf);
  9410.      _M_capacity(__tmp_capacity);
  9411.    }
  9412.       else
  9413.  {
  9414.    const size_type __tmp_capacity = _M_allocated_capacity;
  9415.    if (__s._M_is_local())
  9416.      {
  9417.        traits_type::copy(_M_local_buf, __s._M_local_buf,
  9418.     _S_local_capacity + 1);
  9419.        __s._M_data(_M_data());
  9420.        _M_data(_M_local_buf);
  9421.      }
  9422.    else
  9423.      {
  9424.        pointer __tmp_ptr = _M_data();
  9425.        _M_data(__s._M_data());
  9426.        __s._M_data(__tmp_ptr);
  9427.        _M_capacity(__s._M_allocated_capacity);
  9428.      }
  9429.    __s._M_capacity(__tmp_capacity);
  9430.  }
  9431.  
  9432.       const size_type __tmp_length = length();
  9433.       _M_length(__s.length());
  9434.       __s._M_length(__tmp_length);
  9435.     }
  9436.  
  9437.   template<typename _CharT, typename _Traits, typename _Alloc>
  9438.     typename basic_string<_CharT, _Traits, _Alloc>::pointer
  9439.     basic_string<_CharT, _Traits, _Alloc>::
  9440.     _M_create(size_type& __capacity, size_type __old_capacity)
  9441.     {
  9442.  
  9443.  
  9444.       if (__capacity > max_size())
  9445.  std::__throw_length_error(("basic_string::_M_create"));
  9446.  
  9447.  
  9448.  
  9449.  
  9450.       if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
  9451.  {
  9452.    __capacity = 2 * __old_capacity;
  9453.  
  9454.    if (__capacity > max_size())
  9455.      __capacity = max_size();
  9456.  }
  9457.  
  9458.  
  9459.  
  9460.       return _Alloc_traits::allocate(_M_get_allocator(), __capacity + 1);
  9461.     }
  9462.  
  9463.  
  9464.  
  9465.  
  9466.  
  9467.   template<typename _CharT, typename _Traits, typename _Alloc>
  9468.     template<typename _InIterator>
  9469.       void
  9470.       basic_string<_CharT, _Traits, _Alloc>::
  9471.       _M_construct(_InIterator __beg, _InIterator __end,
  9472.      std::input_iterator_tag)
  9473.       {
  9474.  size_type __len = 0;
  9475.  size_type __capacity = size_type(_S_local_capacity);
  9476.  
  9477.  while (__beg != __end && __len < __capacity)
  9478.    {
  9479.      _M_data()[__len++] = *__beg;
  9480.      ++__beg;
  9481.    }
  9482.  
  9483.  try
  9484.    {
  9485.      while (__beg != __end)
  9486.        {
  9487.   if (__len == __capacity)
  9488.     {
  9489.  
  9490.       __capacity = __len + 1;
  9491.       pointer __another = _M_create(__capacity, __len);
  9492.       this->_S_copy(__another, _M_data(), __len);
  9493.       _M_dispose();
  9494.       _M_data(__another);
  9495.       _M_capacity(__capacity);
  9496.     }
  9497.   _M_data()[__len++] = *__beg;
  9498.   ++__beg;
  9499.        }
  9500.    }
  9501.  catch(...)
  9502.    {
  9503.      _M_dispose();
  9504.      throw;
  9505.    }
  9506.  
  9507.  _M_set_length(__len);
  9508.       }
  9509.  
  9510.   template<typename _CharT, typename _Traits, typename _Alloc>
  9511.     template<typename _InIterator>
  9512.       void
  9513.       basic_string<_CharT, _Traits, _Alloc>::
  9514.       _M_construct(_InIterator __beg, _InIterator __end,
  9515.      std::forward_iterator_tag)
  9516.       {
  9517.  
  9518.  if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end)
  9519.    std::__throw_logic_error(("basic_string::" "_M_construct null not valid")
  9520.                                          );
  9521.  
  9522.  size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
  9523.  
  9524.  if (__dnew > size_type(_S_local_capacity))
  9525.    {
  9526.      _M_data(_M_create(__dnew, size_type(0)));
  9527.      _M_capacity(__dnew);
  9528.    }
  9529.  
  9530.  
  9531.  try
  9532.    { this->_S_copy_chars(_M_data(), __beg, __end); }
  9533.  catch(...)
  9534.    {
  9535.      _M_dispose();
  9536.      throw;
  9537.    }
  9538.  
  9539.  _M_set_length(__dnew);
  9540.       }
  9541.  
  9542.   template<typename _CharT, typename _Traits, typename _Alloc>
  9543.     void
  9544.     basic_string<_CharT, _Traits, _Alloc>::
  9545.     _M_construct(size_type __n, _CharT __c)
  9546.     {
  9547.       if (__n > size_type(_S_local_capacity))
  9548.  {
  9549.    _M_data(_M_create(__n, size_type(0)));
  9550.    _M_capacity(__n);
  9551.  }
  9552.  
  9553.       if (__n)
  9554.  this->_S_assign(_M_data(), __n, __c);
  9555.  
  9556.       _M_set_length(__n);
  9557.     }
  9558.  
  9559.   template<typename _CharT, typename _Traits, typename _Alloc>
  9560.     void
  9561.     basic_string<_CharT, _Traits, _Alloc>::
  9562.     _M_assign(const basic_string& __str)
  9563.     {
  9564.       if (this != &__str)
  9565.  {
  9566.    const size_type __rsize = __str.length();
  9567.    const size_type __capacity = capacity();
  9568.  
  9569.    if (__rsize > __capacity)
  9570.      {
  9571.        size_type __new_capacity = __rsize;
  9572.        pointer __tmp = _M_create(__new_capacity, __capacity);
  9573.        _M_dispose();
  9574.        _M_data(__tmp);
  9575.        _M_capacity(__new_capacity);
  9576.      }
  9577.  
  9578.    if (__rsize)
  9579.      this->_S_copy(_M_data(), __str._M_data(), __rsize);
  9580.  
  9581.    _M_set_length(__rsize);
  9582.  }
  9583.     }
  9584.  
  9585.   template<typename _CharT, typename _Traits, typename _Alloc>
  9586.     void
  9587.     basic_string<_CharT, _Traits, _Alloc>::
  9588.     reserve(size_type __res)
  9589.     {
  9590.  
  9591.       if (__res < length())
  9592.  __res = length();
  9593.  
  9594.       const size_type __capacity = capacity();
  9595.       if (__res != __capacity)
  9596.  {
  9597.    if (__res > __capacity
  9598.        || __res > size_type(_S_local_capacity))
  9599.      {
  9600.        pointer __tmp = _M_create(__res, __capacity);
  9601.        this->_S_copy(__tmp, _M_data(), length() + 1);
  9602.        _M_dispose();
  9603.        _M_data(__tmp);
  9604.        _M_capacity(__res);
  9605.      }
  9606.    else if (!_M_is_local())
  9607.      {
  9608.        this->_S_copy(_M_local_data(), _M_data(), length() + 1);
  9609.        _M_destroy(__capacity);
  9610.        _M_data(_M_local_data());
  9611.      }
  9612.  }
  9613.     }
  9614.  
  9615.   template<typename _CharT, typename _Traits, typename _Alloc>
  9616.     void
  9617.     basic_string<_CharT, _Traits, _Alloc>::
  9618.     _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
  9619.        size_type __len2)
  9620.     {
  9621.       const size_type __how_much = length() - __pos - __len1;
  9622.  
  9623.       size_type __new_capacity = length() + __len2 - __len1;
  9624.       pointer __r = _M_create(__new_capacity, capacity());
  9625.  
  9626.       if (__pos)
  9627.  this->_S_copy(__r, _M_data(), __pos);
  9628.       if (__s && __len2)
  9629.  this->_S_copy(__r + __pos, __s, __len2);
  9630.       if (__how_much)
  9631.  this->_S_copy(__r + __pos + __len2,
  9632.         _M_data() + __pos + __len1, __how_much);
  9633.  
  9634.       _M_dispose();
  9635.       _M_data(__r);
  9636.       _M_capacity(__new_capacity);
  9637.     }
  9638.  
  9639.   template<typename _CharT, typename _Traits, typename _Alloc>
  9640.     void
  9641.     basic_string<_CharT, _Traits, _Alloc>::
  9642.     _M_erase(size_type __pos, size_type __n)
  9643.     {
  9644.       const size_type __how_much = length() - __pos - __n;
  9645.  
  9646.       if (__how_much && __n)
  9647.  this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much);
  9648.  
  9649.       _M_set_length(length() - __n);
  9650.     }
  9651.  
  9652.   template<typename _CharT, typename _Traits, typename _Alloc>
  9653.     void
  9654.     basic_string<_CharT, _Traits, _Alloc>::
  9655.     resize(size_type __n, _CharT __c)
  9656.     {
  9657.       const size_type __size = this->size();
  9658.       if (__size < __n)
  9659.  this->append(__n - __size, __c);
  9660.       else if (__n < __size)
  9661.  this->_M_erase(__n, __size - __n);
  9662.     }
  9663.  
  9664.   template<typename _CharT, typename _Traits, typename _Alloc>
  9665.     basic_string<_CharT, _Traits, _Alloc>&
  9666.     basic_string<_CharT, _Traits, _Alloc>::
  9667.     _M_append(const _CharT* __s, size_type __n)
  9668.     {
  9669.       const size_type __len = __n + this->size();
  9670.  
  9671.       if (__len <= this->capacity())
  9672.  {
  9673.    if (__n)
  9674.      this->_S_copy(this->_M_data() + this->size(), __s, __n);
  9675.  }
  9676.       else
  9677.  this->_M_mutate(this->size(), size_type(0), __s, __n);
  9678.  
  9679.       this->_M_set_length(__len);
  9680.       return *this;
  9681.     }
  9682.  
  9683.   template<typename _CharT, typename _Traits, typename _Alloc>
  9684.     template<typename _InputIterator>
  9685.       basic_string<_CharT, _Traits, _Alloc>&
  9686.       basic_string<_CharT, _Traits, _Alloc>::
  9687.       _M_replace_dispatch(const_iterator __i1, const_iterator __i2,
  9688.      _InputIterator __k1, _InputIterator __k2,
  9689.      std::__false_type)
  9690.       {
  9691.  const basic_string __s(__k1, __k2);
  9692.  const size_type __n1 = __i2 - __i1;
  9693.  return _M_replace(__i1 - begin(), __n1, __s._M_data(),
  9694.      __s.size());
  9695.       }
  9696.  
  9697.   template<typename _CharT, typename _Traits, typename _Alloc>
  9698.     basic_string<_CharT, _Traits, _Alloc>&
  9699.     basic_string<_CharT, _Traits, _Alloc>::
  9700.     _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
  9701.      _CharT __c)
  9702.     {
  9703.       _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
  9704.  
  9705.       const size_type __old_size = this->size();
  9706.       const size_type __new_size = __old_size + __n2 - __n1;
  9707.  
  9708.       if (__new_size <= this->capacity())
  9709.  {
  9710.    _CharT* __p = this->_M_data() + __pos1;
  9711.  
  9712.    const size_type __how_much = __old_size - __pos1 - __n1;
  9713.    if (__how_much && __n1 != __n2)
  9714.      this->_S_move(__p + __n2, __p + __n1, __how_much);
  9715.  }
  9716.       else
  9717.  this->_M_mutate(__pos1, __n1, 0, __n2);
  9718.  
  9719.       if (__n2)
  9720.  this->_S_assign(this->_M_data() + __pos1, __n2, __c);
  9721.  
  9722.       this->_M_set_length(__new_size);
  9723.       return *this;
  9724.     }
  9725.  
  9726.   template<typename _CharT, typename _Traits, typename _Alloc>
  9727.     basic_string<_CharT, _Traits, _Alloc>&
  9728.     basic_string<_CharT, _Traits, _Alloc>::
  9729.     _M_replace(size_type __pos, size_type __len1, const _CharT* __s,
  9730.         const size_type __len2)
  9731.     {
  9732.       _M_check_length(__len1, __len2, "basic_string::_M_replace");
  9733.  
  9734.       const size_type __old_size = this->size();
  9735.       const size_type __new_size = __old_size + __len2 - __len1;
  9736.  
  9737.       if (__new_size <= this->capacity())
  9738.  {
  9739.    _CharT* __p = this->_M_data() + __pos;
  9740.  
  9741.    const size_type __how_much = __old_size - __pos - __len1;
  9742.    if (_M_disjunct(__s))
  9743.      {
  9744.        if (__how_much && __len1 != __len2)
  9745.   this->_S_move(__p + __len2, __p + __len1, __how_much);
  9746.        if (__len2)
  9747.   this->_S_copy(__p, __s, __len2);
  9748.      }
  9749.    else
  9750.      {
  9751.  
  9752.        if (__len2 && __len2 <= __len1)
  9753.   this->_S_move(__p, __s, __len2);
  9754.        if (__how_much && __len1 != __len2)
  9755.   this->_S_move(__p + __len2, __p + __len1, __how_much);
  9756.        if (__len2 > __len1)
  9757.   {
  9758.     if (__s + __len2 <= __p + __len1)
  9759.       this->_S_move(__p, __s, __len2);
  9760.     else if (__s >= __p + __len1)
  9761.       this->_S_copy(__p, __s + __len2 - __len1, __len2);
  9762.     else
  9763.       {
  9764.         const size_type __nleft = (__p + __len1) - __s;
  9765.         this->_S_move(__p, __s, __nleft);
  9766.         this->_S_copy(__p + __nleft, __p + __len2,
  9767.         __len2 - __nleft);
  9768.       }
  9769.   }
  9770.      }
  9771.  }
  9772.       else
  9773.  this->_M_mutate(__pos, __len1, __s, __len2);
  9774.  
  9775.       this->_M_set_length(__new_size);
  9776.       return *this;
  9777.     }
  9778.  
  9779.   template<typename _CharT, typename _Traits, typename _Alloc>
  9780.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9781.     basic_string<_CharT, _Traits, _Alloc>::
  9782.     copy(_CharT* __s, size_type __n, size_type __pos) const
  9783.     {
  9784.       _M_check(__pos, "basic_string::copy");
  9785.       __n = _M_limit(__pos, __n);
  9786.       ;
  9787.       if (__n)
  9788.  _S_copy(__s, _M_data() + __pos, __n);
  9789.  
  9790.       return __n;
  9791.     }
  9792. # 1149 "/usr/include/c++/5/bits/basic_string.tcc" 3
  9793.   template<typename _CharT, typename _Traits, typename _Alloc>
  9794.     basic_string<_CharT, _Traits, _Alloc>
  9795.     operator+(const _CharT* __lhs,
  9796.        const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9797.     {
  9798.       ;
  9799.       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
  9800.       typedef typename __string_type::size_type __size_type;
  9801.       const __size_type __len = _Traits::length(__lhs);
  9802.       __string_type __str;
  9803.       __str.reserve(__len + __rhs.size());
  9804.       __str.append(__lhs, __len);
  9805.       __str.append(__rhs);
  9806.       return __str;
  9807.     }
  9808.  
  9809.   template<typename _CharT, typename _Traits, typename _Alloc>
  9810.     basic_string<_CharT, _Traits, _Alloc>
  9811.     operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs)
  9812.     {
  9813.       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
  9814.       typedef typename __string_type::size_type __size_type;
  9815.       __string_type __str;
  9816.       const __size_type __len = __rhs.size();
  9817.       __str.reserve(__len + 1);
  9818.       __str.append(__size_type(1), __lhs);
  9819.       __str.append(__rhs);
  9820.       return __str;
  9821.     }
  9822.  
  9823.   template<typename _CharT, typename _Traits, typename _Alloc>
  9824.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9825.     basic_string<_CharT, _Traits, _Alloc>::
  9826.     find(const _CharT* __s, size_type __pos, size_type __n) const
  9827.     {
  9828.       ;
  9829.       const size_type __size = this->size();
  9830.       const _CharT* __data = _M_data();
  9831.  
  9832.       if (__n == 0)
  9833.  return __pos <= __size ? __pos : npos;
  9834.  
  9835.       if (__n <= __size)
  9836.  {
  9837.    for (; __pos <= __size - __n; ++__pos)
  9838.      if (traits_type::eq(__data[__pos], __s[0])
  9839.   && traits_type::compare(__data + __pos + 1,
  9840.      __s + 1, __n - 1) == 0)
  9841.        return __pos;
  9842.  }
  9843.       return npos;
  9844.     }
  9845.  
  9846.   template<typename _CharT, typename _Traits, typename _Alloc>
  9847.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9848.     basic_string<_CharT, _Traits, _Alloc>::
  9849.     find(_CharT __c, size_type __pos) const
  9850.     {
  9851.       size_type __ret = npos;
  9852.       const size_type __size = this->size();
  9853.       if (__pos < __size)
  9854.  {
  9855.    const _CharT* __data = _M_data();
  9856.    const size_type __n = __size - __pos;
  9857.    const _CharT* __p = traits_type::find(__data + __pos, __n, __c);
  9858.    if (__p)
  9859.      __ret = __p - __data;
  9860.  }
  9861.       return __ret;
  9862.     }
  9863.  
  9864.   template<typename _CharT, typename _Traits, typename _Alloc>
  9865.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9866.     basic_string<_CharT, _Traits, _Alloc>::
  9867.     rfind(const _CharT* __s, size_type __pos, size_type __n) const
  9868.     {
  9869.       ;
  9870.       const size_type __size = this->size();
  9871.       if (__n <= __size)
  9872.  {
  9873.    __pos = std::min(size_type(__size - __n), __pos);
  9874.    const _CharT* __data = _M_data();
  9875.    do
  9876.      {
  9877.        if (traits_type::compare(__data + __pos, __s, __n) == 0)
  9878.   return __pos;
  9879.      }
  9880.    while (__pos-- > 0);
  9881.  }
  9882.       return npos;
  9883.     }
  9884.  
  9885.   template<typename _CharT, typename _Traits, typename _Alloc>
  9886.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9887.     basic_string<_CharT, _Traits, _Alloc>::
  9888.     rfind(_CharT __c, size_type __pos) const
  9889.     {
  9890.       size_type __size = this->size();
  9891.       if (__size)
  9892.  {
  9893.    if (--__size > __pos)
  9894.      __size = __pos;
  9895.    for (++__size; __size-- > 0; )
  9896.      if (traits_type::eq(_M_data()[__size], __c))
  9897.        return __size;
  9898.  }
  9899.       return npos;
  9900.     }
  9901.  
  9902.   template<typename _CharT, typename _Traits, typename _Alloc>
  9903.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9904.     basic_string<_CharT, _Traits, _Alloc>::
  9905.     find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
  9906.     {
  9907.       ;
  9908.       for (; __n && __pos < this->size(); ++__pos)
  9909.  {
  9910.    const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]);
  9911.    if (__p)
  9912.      return __pos;
  9913.  }
  9914.       return npos;
  9915.     }
  9916.  
  9917.   template<typename _CharT, typename _Traits, typename _Alloc>
  9918.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9919.     basic_string<_CharT, _Traits, _Alloc>::
  9920.     find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
  9921.     {
  9922.       ;
  9923.       size_type __size = this->size();
  9924.       if (__size && __n)
  9925.  {
  9926.    if (--__size > __pos)
  9927.      __size = __pos;
  9928.    do
  9929.      {
  9930.        if (traits_type::find(__s, __n, _M_data()[__size]))
  9931.   return __size;
  9932.      }
  9933.    while (__size-- != 0);
  9934.  }
  9935.       return npos;
  9936.     }
  9937.  
  9938.   template<typename _CharT, typename _Traits, typename _Alloc>
  9939.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9940.     basic_string<_CharT, _Traits, _Alloc>::
  9941.     find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
  9942.     {
  9943.       ;
  9944.       for (; __pos < this->size(); ++__pos)
  9945.  if (!traits_type::find(__s, __n, _M_data()[__pos]))
  9946.    return __pos;
  9947.       return npos;
  9948.     }
  9949.  
  9950.   template<typename _CharT, typename _Traits, typename _Alloc>
  9951.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9952.     basic_string<_CharT, _Traits, _Alloc>::
  9953.     find_first_not_of(_CharT __c, size_type __pos) const
  9954.     {
  9955.       for (; __pos < this->size(); ++__pos)
  9956.  if (!traits_type::eq(_M_data()[__pos], __c))
  9957.    return __pos;
  9958.       return npos;
  9959.     }
  9960.  
  9961.   template<typename _CharT, typename _Traits, typename _Alloc>
  9962.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9963.     basic_string<_CharT, _Traits, _Alloc>::
  9964.     find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
  9965.     {
  9966.       ;
  9967.       size_type __size = this->size();
  9968.       if (__size)
  9969.  {
  9970.    if (--__size > __pos)
  9971.      __size = __pos;
  9972.    do
  9973.      {
  9974.        if (!traits_type::find(__s, __n, _M_data()[__size]))
  9975.   return __size;
  9976.      }
  9977.    while (__size--);
  9978.  }
  9979.       return npos;
  9980.     }
  9981.  
  9982.   template<typename _CharT, typename _Traits, typename _Alloc>
  9983.     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  9984.     basic_string<_CharT, _Traits, _Alloc>::
  9985.     find_last_not_of(_CharT __c, size_type __pos) const
  9986.     {
  9987.       size_type __size = this->size();
  9988.       if (__size)
  9989.  {
  9990.    if (--__size > __pos)
  9991.      __size = __pos;
  9992.    do
  9993.      {
  9994.        if (!traits_type::eq(_M_data()[__size], __c))
  9995.   return __size;
  9996.      }
  9997.    while (__size--);
  9998.  }
  9999.       return npos;
  10000.     }
  10001.  
  10002.   template<typename _CharT, typename _Traits, typename _Alloc>
  10003.     int
  10004.     basic_string<_CharT, _Traits, _Alloc>::
  10005.     compare(size_type __pos, size_type __n, const basic_string& __str) const
  10006.     {
  10007.       _M_check(__pos, "basic_string::compare");
  10008.       __n = _M_limit(__pos, __n);
  10009.       const size_type __osize = __str.size();
  10010.       const size_type __len = std::min(__n, __osize);
  10011.       int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);
  10012.       if (!__r)
  10013.  __r = _S_compare(__n, __osize);
  10014.       return __r;
  10015.     }
  10016.  
  10017.   template<typename _CharT, typename _Traits, typename _Alloc>
  10018.     int
  10019.     basic_string<_CharT, _Traits, _Alloc>::
  10020.     compare(size_type __pos1, size_type __n1, const basic_string& __str,
  10021.      size_type __pos2, size_type __n2) const
  10022.     {
  10023.       _M_check(__pos1, "basic_string::compare");
  10024.       __str._M_check(__pos2, "basic_string::compare");
  10025.       __n1 = _M_limit(__pos1, __n1);
  10026.       __n2 = __str._M_limit(__pos2, __n2);
  10027.       const size_type __len = std::min(__n1, __n2);
  10028.       int __r = traits_type::compare(_M_data() + __pos1,
  10029.          __str.data() + __pos2, __len);
  10030.       if (!__r)
  10031.  __r = _S_compare(__n1, __n2);
  10032.       return __r;
  10033.     }
  10034.  
  10035.   template<typename _CharT, typename _Traits, typename _Alloc>
  10036.     int
  10037.     basic_string<_CharT, _Traits, _Alloc>::
  10038.     compare(const _CharT* __s) const
  10039.     {
  10040.       ;
  10041.       const size_type __size = this->size();
  10042.       const size_type __osize = traits_type::length(__s);
  10043.       const size_type __len = std::min(__size, __osize);
  10044.       int __r = traits_type::compare(_M_data(), __s, __len);
  10045.       if (!__r)
  10046.  __r = _S_compare(__size, __osize);
  10047.       return __r;
  10048.     }
  10049.  
  10050.   template<typename _CharT, typename _Traits, typename _Alloc>
  10051.     int
  10052.     basic_string <_CharT, _Traits, _Alloc>::
  10053.     compare(size_type __pos, size_type __n1, const _CharT* __s) const
  10054.     {
  10055.       ;
  10056.       _M_check(__pos, "basic_string::compare");
  10057.       __n1 = _M_limit(__pos, __n1);
  10058.       const size_type __osize = traits_type::length(__s);
  10059.       const size_type __len = std::min(__n1, __osize);
  10060.       int __r = traits_type::compare(_M_data() + __pos, __s, __len);
  10061.       if (!__r)
  10062.  __r = _S_compare(__n1, __osize);
  10063.       return __r;
  10064.     }
  10065.  
  10066.   template<typename _CharT, typename _Traits, typename _Alloc>
  10067.     int
  10068.     basic_string <_CharT, _Traits, _Alloc>::
  10069.     compare(size_type __pos, size_type __n1, const _CharT* __s,
  10070.      size_type __n2) const
  10071.     {
  10072.       ;
  10073.       _M_check(__pos, "basic_string::compare");
  10074.       __n1 = _M_limit(__pos, __n1);
  10075.       const size_type __len = std::min(__n1, __n2);
  10076.       int __r = traits_type::compare(_M_data() + __pos, __s, __len);
  10077.       if (!__r)
  10078.  __r = _S_compare(__n1, __n2);
  10079.       return __r;
  10080.     }
  10081.  
  10082.  
  10083.   template<typename _CharT, typename _Traits, typename _Alloc>
  10084.     basic_istream<_CharT, _Traits>&
  10085.     operator>>(basic_istream<_CharT, _Traits>& __in,
  10086.         basic_string<_CharT, _Traits, _Alloc>& __str)
  10087.     {
  10088.       typedef basic_istream<_CharT, _Traits> __istream_type;
  10089.       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
  10090.       typedef typename __istream_type::ios_base __ios_base;
  10091.       typedef typename __istream_type::int_type __int_type;
  10092.       typedef typename __string_type::size_type __size_type;
  10093.       typedef ctype<_CharT> __ctype_type;
  10094.       typedef typename __ctype_type::ctype_base __ctype_base;
  10095.  
  10096.       __size_type __extracted = 0;
  10097.       typename __ios_base::iostate __err = __ios_base::goodbit;
  10098.       typename __istream_type::sentry __cerb(__in, false);
  10099.       if (__cerb)
  10100.  {
  10101.    try
  10102.      {
  10103.  
  10104.        __str.erase();
  10105.        _CharT __buf[128];
  10106.        __size_type __len = 0;
  10107.        const streamsize __w = __in.width();
  10108.        const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
  10109.                                 : __str.max_size();
  10110.        const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
  10111.        const __int_type __eof = _Traits::eof();
  10112.        __int_type __c = __in.rdbuf()->sgetc();
  10113.  
  10114.        while (__extracted < __n
  10115.        && !_Traits::eq_int_type(__c, __eof)
  10116.        && !__ct.is(__ctype_base::space,
  10117.      _Traits::to_char_type(__c)))
  10118.   {
  10119.     if (__len == sizeof(__buf) / sizeof(_CharT))
  10120.       {
  10121.         __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
  10122.         __len = 0;
  10123.       }
  10124.     __buf[__len++] = _Traits::to_char_type(__c);
  10125.     ++__extracted;
  10126.     __c = __in.rdbuf()->snextc();
  10127.   }
  10128.        __str.append(__buf, __len);
  10129.  
  10130.        if (_Traits::eq_int_type(__c, __eof))
  10131.   __err |= __ios_base::eofbit;
  10132.        __in.width(0);
  10133.      }
  10134.    catch(__cxxabiv1::__forced_unwind&)
  10135.      {
  10136.        __in._M_setstate(__ios_base::badbit);
  10137.        throw;
  10138.      }
  10139.    catch(...)
  10140.      {
  10141.  
  10142.  
  10143.  
  10144.        __in._M_setstate(__ios_base::badbit);
  10145.      }
  10146.  }
  10147.  
  10148.       if (!__extracted)
  10149.  __err |= __ios_base::failbit;
  10150.       if (__err)
  10151.  __in.setstate(__err);
  10152.       return __in;
  10153.     }
  10154.  
  10155.   template<typename _CharT, typename _Traits, typename _Alloc>
  10156.     basic_istream<_CharT, _Traits>&
  10157.     getline(basic_istream<_CharT, _Traits>& __in,
  10158.      basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)
  10159.     {
  10160.       typedef basic_istream<_CharT, _Traits> __istream_type;
  10161.       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
  10162.       typedef typename __istream_type::ios_base __ios_base;
  10163.       typedef typename __istream_type::int_type __int_type;
  10164.       typedef typename __string_type::size_type __size_type;
  10165.  
  10166.       __size_type __extracted = 0;
  10167.       const __size_type __n = __str.max_size();
  10168.       typename __ios_base::iostate __err = __ios_base::goodbit;
  10169.       typename __istream_type::sentry __cerb(__in, true);
  10170.       if (__cerb)
  10171.  {
  10172.    try
  10173.      {
  10174.        __str.erase();
  10175.        const __int_type __idelim = _Traits::to_int_type(__delim);
  10176.        const __int_type __eof = _Traits::eof();
  10177.        __int_type __c = __in.rdbuf()->sgetc();
  10178.  
  10179.        while (__extracted < __n
  10180.        && !_Traits::eq_int_type(__c, __eof)
  10181.        && !_Traits::eq_int_type(__c, __idelim))
  10182.   {
  10183.     __str += _Traits::to_char_type(__c);
  10184.     ++__extracted;
  10185.     __c = __in.rdbuf()->snextc();
  10186.   }
  10187.  
  10188.        if (_Traits::eq_int_type(__c, __eof))
  10189.   __err |= __ios_base::eofbit;
  10190.        else if (_Traits::eq_int_type(__c, __idelim))
  10191.   {
  10192.     ++__extracted;
  10193.     __in.rdbuf()->sbumpc();
  10194.   }
  10195.        else
  10196.   __err |= __ios_base::failbit;
  10197.      }
  10198.    catch(__cxxabiv1::__forced_unwind&)
  10199.      {
  10200.        __in._M_setstate(__ios_base::badbit);
  10201.        throw;
  10202.      }
  10203.    catch(...)
  10204.      {
  10205.  
  10206.  
  10207.  
  10208.        __in._M_setstate(__ios_base::badbit);
  10209.      }
  10210.  }
  10211.       if (!__extracted)
  10212.  __err |= __ios_base::failbit;
  10213.       if (__err)
  10214.  __in.setstate(__err);
  10215.       return __in;
  10216.     }
  10217.  
  10218.  
  10219.  
  10220.  
  10221.   extern template class basic_string<char>;
  10222.   extern template
  10223.     basic_istream<char>&
  10224.     operator>>(basic_istream<char>&, string&);
  10225.   extern template
  10226.     basic_ostream<char>&
  10227.     operator<<(basic_ostream<char>&, const string&);
  10228.   extern template
  10229.     basic_istream<char>&
  10230.     getline(basic_istream<char>&, string&, char);
  10231.   extern template
  10232.     basic_istream<char>&
  10233.     getline(basic_istream<char>&, string&);
  10234.  
  10235.  
  10236.   extern template class basic_string<wchar_t>;
  10237.   extern template
  10238.     basic_istream<wchar_t>&
  10239.     operator>>(basic_istream<wchar_t>&, wstring&);
  10240.   extern template
  10241.     basic_ostream<wchar_t>&
  10242.     operator<<(basic_ostream<wchar_t>&, const wstring&);
  10243.   extern template
  10244.     basic_istream<wchar_t>&
  10245.     getline(basic_istream<wchar_t>&, wstring&, wchar_t);
  10246.   extern template
  10247.     basic_istream<wchar_t>&
  10248.     getline(basic_istream<wchar_t>&, wstring&);
  10249.  
  10250.  
  10251.  
  10252.  
  10253. }
  10254. # 54 "/usr/include/c++/5/string" 2 3
  10255. # 41 "/usr/include/c++/5/bits/locale_classes.h" 2 3
  10256.  
  10257.  
  10258. namespace std __attribute__ ((__visibility__ ("default")))
  10259. {
  10260.  
  10261. # 62 "/usr/include/c++/5/bits/locale_classes.h" 3
  10262.   class locale
  10263.   {
  10264.   public:
  10265.  
  10266.  
  10267.     typedef int category;
  10268.  
  10269.  
  10270.     class facet;
  10271.     class id;
  10272.     class _Impl;
  10273.  
  10274.     friend class facet;
  10275.     friend class _Impl;
  10276.  
  10277.     template<typename _Facet>
  10278.       friend bool
  10279.       has_facet(const locale&) throw();
  10280.  
  10281.     template<typename _Facet>
  10282.       friend const _Facet&
  10283.       use_facet(const locale&);
  10284.  
  10285.     template<typename _Cache>
  10286.       friend struct __use_cache;
  10287. # 98 "/usr/include/c++/5/bits/locale_classes.h" 3
  10288.     static const category none = 0;
  10289.     static const category ctype = 1L << 0;
  10290.     static const category numeric = 1L << 1;
  10291.     static const category collate = 1L << 2;
  10292.     static const category time = 1L << 3;
  10293.     static const category monetary = 1L << 4;
  10294.     static const category messages = 1L << 5;
  10295.     static const category all = (ctype | numeric | collate |
  10296.         time | monetary | messages);
  10297. # 117 "/usr/include/c++/5/bits/locale_classes.h" 3
  10298.     locale() throw();
  10299. # 126 "/usr/include/c++/5/bits/locale_classes.h" 3
  10300.     locale(const locale& __other) throw();
  10301. # 136 "/usr/include/c++/5/bits/locale_classes.h" 3
  10302.     explicit
  10303.     locale(const char* __s);
  10304. # 151 "/usr/include/c++/5/bits/locale_classes.h" 3
  10305.     locale(const locale& __base, const char* __s, category __cat);
  10306. # 192 "/usr/include/c++/5/bits/locale_classes.h" 3
  10307.     locale(const locale& __base, const locale& __add, category __cat);
  10308. # 205 "/usr/include/c++/5/bits/locale_classes.h" 3
  10309.     template<typename _Facet>
  10310.       locale(const locale& __other, _Facet* __f);
  10311.  
  10312.  
  10313.     ~locale() throw();
  10314. # 219 "/usr/include/c++/5/bits/locale_classes.h" 3
  10315.     const locale&
  10316.     operator=(const locale& __other) throw();
  10317. # 234 "/usr/include/c++/5/bits/locale_classes.h" 3
  10318.     template<typename _Facet>
  10319.       locale
  10320.       combine(const locale& __other) const;
  10321.  
  10322.  
  10323.  
  10324.  
  10325.  
  10326.  
  10327.     __attribute ((__abi_tag__ ("cxx11")))
  10328.     string
  10329.     name() const;
  10330. # 254 "/usr/include/c++/5/bits/locale_classes.h" 3
  10331.     bool
  10332.     operator==(const locale& __other) const throw();
  10333.  
  10334.  
  10335.  
  10336.  
  10337.  
  10338.  
  10339.  
  10340.     bool
  10341.     operator!=(const locale& __other) const throw()
  10342.     { return !(this->operator==(__other)); }
  10343. # 282 "/usr/include/c++/5/bits/locale_classes.h" 3
  10344.     template<typename _Char, typename _Traits, typename _Alloc>
  10345.       bool
  10346.       operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,
  10347.    const basic_string<_Char, _Traits, _Alloc>& __s2) const;
  10348. # 298 "/usr/include/c++/5/bits/locale_classes.h" 3
  10349.     static locale
  10350.     global(const locale& __loc);
  10351.  
  10352.  
  10353.  
  10354.  
  10355.     static const locale&
  10356.     classic();
  10357.  
  10358.   private:
  10359.  
  10360.     _Impl* _M_impl;
  10361.  
  10362.  
  10363.     static _Impl* _S_classic;
  10364.  
  10365.  
  10366.     static _Impl* _S_global;
  10367.  
  10368.  
  10369.  
  10370.  
  10371.  
  10372.     static const char* const* const _S_categories;
  10373. # 333 "/usr/include/c++/5/bits/locale_classes.h" 3
  10374.     enum { _S_categories_size = 6 + 6 };
  10375.  
  10376.  
  10377.     static __gthread_once_t _S_once;
  10378.  
  10379.  
  10380.     explicit
  10381.     locale(_Impl*) throw();
  10382.  
  10383.     static void
  10384.     _S_initialize();
  10385.  
  10386.     static void
  10387.     _S_initialize_once() throw();
  10388.  
  10389.     static category
  10390.     _S_normalize_category(category);
  10391.  
  10392.     void
  10393.     _M_coalesce(const locale& __base, const locale& __add, category __cat);
  10394.  
  10395.  
  10396.     static const id* const _S_twinned_facets[];
  10397.  
  10398.   };
  10399. # 371 "/usr/include/c++/5/bits/locale_classes.h" 3
  10400.   class locale::facet
  10401.   {
  10402.   private:
  10403.     friend class locale;
  10404.     friend class locale::_Impl;
  10405.  
  10406.     mutable _Atomic_word _M_refcount;
  10407.  
  10408.  
  10409.     static __c_locale _S_c_locale;
  10410.  
  10411.  
  10412.     static const char _S_c_name[2];
  10413.  
  10414.  
  10415.     static __gthread_once_t _S_once;
  10416.  
  10417.  
  10418.     static void
  10419.     _S_initialize_once();
  10420.  
  10421.   protected:
  10422. # 402 "/usr/include/c++/5/bits/locale_classes.h" 3
  10423.     explicit
  10424.     facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)
  10425.     { }
  10426.  
  10427.  
  10428.     virtual
  10429.     ~facet();
  10430.  
  10431.     static void
  10432.     _S_create_c_locale(__c_locale& __cloc, const char* __s,
  10433.          __c_locale __old = 0);
  10434.  
  10435.     static __c_locale
  10436.     _S_clone_c_locale(__c_locale& __cloc) throw();
  10437.  
  10438.     static void
  10439.     _S_destroy_c_locale(__c_locale& __cloc);
  10440.  
  10441.     static __c_locale
  10442.     _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s);
  10443.  
  10444.  
  10445.  
  10446.     static __c_locale
  10447.     _S_get_c_locale();
  10448.  
  10449.     __attribute__ ((__const__)) static const char*
  10450.     _S_get_c_name() throw();
  10451.  
  10452.   private:
  10453.     void
  10454.     _M_add_reference() const throw()
  10455.     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
  10456.  
  10457.     void
  10458.     _M_remove_reference() const throw()
  10459.     {
  10460.  
  10461.       ;
  10462.       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
  10463.  {
  10464.           ;
  10465.    try
  10466.      { delete this; }
  10467.    catch(...)
  10468.      { }
  10469.  }
  10470.     }
  10471.  
  10472.     facet(const facet&);
  10473.  
  10474.     facet&
  10475.     operator=(const facet&);
  10476.  
  10477.     class __shim;
  10478.  
  10479.     const facet* _M_sso_shim(const id*) const;
  10480.     const facet* _M_cow_shim(const id*) const;
  10481.   };
  10482. # 474 "/usr/include/c++/5/bits/locale_classes.h" 3
  10483.   class locale::id
  10484.   {
  10485.   private:
  10486.     friend class locale;
  10487.     friend class locale::_Impl;
  10488.  
  10489.     template<typename _Facet>
  10490.       friend const _Facet&
  10491.       use_facet(const locale&);
  10492.  
  10493.     template<typename _Facet>
  10494.       friend bool
  10495.       has_facet(const locale&) throw();
  10496.  
  10497.  
  10498.  
  10499.  
  10500.     mutable size_t _M_index;
  10501.  
  10502.  
  10503.     static _Atomic_word _S_refcount;
  10504.  
  10505.     void
  10506.     operator=(const id&);
  10507.  
  10508.     id(const id&);
  10509.  
  10510.   public:
  10511.  
  10512.  
  10513.  
  10514.     id() { }
  10515.  
  10516.     size_t
  10517.     _M_id() const throw();
  10518.   };
  10519.  
  10520.  
  10521.  
  10522.   class locale::_Impl
  10523.   {
  10524.   public:
  10525.  
  10526.     friend class locale;
  10527.     friend class locale::facet;
  10528.  
  10529.     template<typename _Facet>
  10530.       friend bool
  10531.       has_facet(const locale&) throw();
  10532.  
  10533.     template<typename _Facet>
  10534.       friend const _Facet&
  10535.       use_facet(const locale&);
  10536.  
  10537.     template<typename _Cache>
  10538.       friend struct __use_cache;
  10539.  
  10540.   private:
  10541.  
  10542.     _Atomic_word _M_refcount;
  10543.     const facet** _M_facets;
  10544.     size_t _M_facets_size;
  10545.     const facet** _M_caches;
  10546.     char** _M_names;
  10547.     static const locale::id* const _S_id_ctype[];
  10548.     static const locale::id* const _S_id_numeric[];
  10549.     static const locale::id* const _S_id_collate[];
  10550.     static const locale::id* const _S_id_time[];
  10551.     static const locale::id* const _S_id_monetary[];
  10552.     static const locale::id* const _S_id_messages[];
  10553.     static const locale::id* const* const _S_facet_categories[];
  10554.  
  10555.     void
  10556.     _M_add_reference() throw()
  10557.     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
  10558.  
  10559.     void
  10560.     _M_remove_reference() throw()
  10561.     {
  10562.  
  10563.       ;
  10564.       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
  10565.  {
  10566.           ;
  10567.    try
  10568.      { delete this; }
  10569.    catch(...)
  10570.      { }
  10571.  }
  10572.     }
  10573.  
  10574.     _Impl(const _Impl&, size_t);
  10575.     _Impl(const char*, size_t);
  10576.     _Impl(size_t) throw();
  10577.  
  10578.    ~_Impl() throw();
  10579.  
  10580.     _Impl(const _Impl&);
  10581.  
  10582.     void
  10583.     operator=(const _Impl&);
  10584.  
  10585.     bool
  10586.     _M_check_same_name()
  10587.     {
  10588.       bool __ret = true;
  10589.       if (_M_names[1])
  10590.  
  10591.  for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
  10592.    __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
  10593.       return __ret;
  10594.     }
  10595.  
  10596.     void
  10597.     _M_replace_categories(const _Impl*, category);
  10598.  
  10599.     void
  10600.     _M_replace_category(const _Impl*, const locale::id* const*);
  10601.  
  10602.     void
  10603.     _M_replace_facet(const _Impl*, const locale::id*);
  10604.  
  10605.     void
  10606.     _M_install_facet(const locale::id*, const facet*);
  10607.  
  10608.     template<typename _Facet>
  10609.       void
  10610.       _M_init_facet(_Facet* __facet)
  10611.       { _M_install_facet(&_Facet::id, __facet); }
  10612.  
  10613.     template<typename _Facet>
  10614.       void
  10615.       _M_init_facet_unchecked(_Facet* __facet)
  10616.       {
  10617.  __facet->_M_add_reference();
  10618.  _M_facets[_Facet::id._M_id()] = __facet;
  10619.       }
  10620.  
  10621.     void
  10622.     _M_install_cache(const facet*, size_t);
  10623.  
  10624.     void _M_init_extra(facet**);
  10625.     void _M_init_extra(void*, void*, const char*, const char*);
  10626.   };
  10627. # 632 "/usr/include/c++/5/bits/locale_classes.h" 3
  10628.   template<typename _CharT>
  10629.     class __cxx11:: collate : public locale::facet
  10630.     {
  10631.     public:
  10632.  
  10633.  
  10634.  
  10635.       typedef _CharT char_type;
  10636.       typedef basic_string<_CharT> string_type;
  10637.  
  10638.  
  10639.     protected:
  10640.  
  10641.  
  10642.       __c_locale _M_c_locale_collate;
  10643.  
  10644.     public:
  10645.  
  10646.       static locale::id id;
  10647. # 659 "/usr/include/c++/5/bits/locale_classes.h" 3
  10648.       explicit
  10649.       collate(size_t __refs = 0)
  10650.       : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
  10651.       { }
  10652. # 673 "/usr/include/c++/5/bits/locale_classes.h" 3
  10653.       explicit
  10654.       collate(__c_locale __cloc, size_t __refs = 0)
  10655.       : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
  10656.       { }
  10657. # 690 "/usr/include/c++/5/bits/locale_classes.h" 3
  10658.       int
  10659.       compare(const _CharT* __lo1, const _CharT* __hi1,
  10660.        const _CharT* __lo2, const _CharT* __hi2) const
  10661.       { return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
  10662. # 709 "/usr/include/c++/5/bits/locale_classes.h" 3
  10663.       string_type
  10664.       transform(const _CharT* __lo, const _CharT* __hi) const
  10665.       { return this->do_transform(__lo, __hi); }
  10666. # 723 "/usr/include/c++/5/bits/locale_classes.h" 3
  10667.       long
  10668.       hash(const _CharT* __lo, const _CharT* __hi) const
  10669.       { return this->do_hash(__lo, __hi); }
  10670.  
  10671.  
  10672.       int
  10673.       _M_compare(const _CharT*, const _CharT*) const throw();
  10674.  
  10675.       size_t
  10676.       _M_transform(_CharT*, const _CharT*, size_t) const throw();
  10677.  
  10678.   protected:
  10679.  
  10680.       virtual
  10681.       ~collate()
  10682.       { _S_destroy_c_locale(_M_c_locale_collate); }
  10683. # 752 "/usr/include/c++/5/bits/locale_classes.h" 3
  10684.       virtual int
  10685.       do_compare(const _CharT* __lo1, const _CharT* __hi1,
  10686.    const _CharT* __lo2, const _CharT* __hi2) const;
  10687. # 766 "/usr/include/c++/5/bits/locale_classes.h" 3
  10688.       virtual string_type
  10689.       do_transform(const _CharT* __lo, const _CharT* __hi) const;
  10690. # 779 "/usr/include/c++/5/bits/locale_classes.h" 3
  10691.       virtual long
  10692.       do_hash(const _CharT* __lo, const _CharT* __hi) const;
  10693.     };
  10694.  
  10695.   template<typename _CharT>
  10696.     locale::id collate<_CharT>::id;
  10697.  
  10698.  
  10699.   template<>
  10700.     int
  10701.     collate<char>::_M_compare(const char*, const char*) const throw();
  10702.  
  10703.   template<>
  10704.     size_t
  10705.     collate<char>::_M_transform(char*, const char*, size_t) const throw();
  10706.  
  10707.  
  10708.   template<>
  10709.     int
  10710.     collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const throw();
  10711.  
  10712.   template<>
  10713.     size_t
  10714.     collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const throw();
  10715.  
  10716.  
  10717.  
  10718.   template<typename _CharT>
  10719.     class __cxx11:: collate_byname : public collate<_CharT>
  10720.     {
  10721.     public:
  10722.  
  10723.  
  10724.       typedef _CharT char_type;
  10725.       typedef basic_string<_CharT> string_type;
  10726.  
  10727.  
  10728.       explicit
  10729.       collate_byname(const char* __s, size_t __refs = 0)
  10730.       : collate<_CharT>(__refs)
  10731.       {
  10732.  if (__builtin_strcmp(__s, "C") != 0
  10733.      && __builtin_strcmp(__s, "POSIX") != 0)
  10734.    {
  10735.      this->_S_destroy_c_locale(this->_M_c_locale_collate);
  10736.      this->_S_create_c_locale(this->_M_c_locale_collate, __s);
  10737.    }
  10738.       }
  10739.  
  10740.  
  10741.  
  10742.  
  10743.  
  10744.  
  10745.  
  10746.     protected:
  10747.       virtual
  10748.       ~collate_byname() { }
  10749.     };
  10750.  
  10751.  
  10752. }
  10753.  
  10754. # 1 "/usr/include/c++/5/bits/locale_classes.tcc" 1 3
  10755. # 37 "/usr/include/c++/5/bits/locale_classes.tcc" 3
  10756.        
  10757. # 38 "/usr/include/c++/5/bits/locale_classes.tcc" 3
  10758.  
  10759. namespace std __attribute__ ((__visibility__ ("default")))
  10760. {
  10761.  
  10762.  
  10763.   template<typename _Facet>
  10764.     locale::
  10765.     locale(const locale& __other, _Facet* __f)
  10766.     {
  10767.       _M_impl = new _Impl(*__other._M_impl, 1);
  10768.  
  10769.       try
  10770.  { _M_impl->_M_install_facet(&_Facet::id, __f); }
  10771.       catch(...)
  10772.  {
  10773.    _M_impl->_M_remove_reference();
  10774.    throw;
  10775.  }
  10776.       delete [] _M_impl->_M_names[0];
  10777.       _M_impl->_M_names[0] = 0;
  10778.     }
  10779.  
  10780.   template<typename _Facet>
  10781.     locale
  10782.     locale::
  10783.     combine(const locale& __other) const
  10784.     {
  10785.       _Impl* __tmp = new _Impl(*_M_impl, 1);
  10786.       try
  10787.  {
  10788.    __tmp->_M_replace_facet(__other._M_impl, &_Facet::id);
  10789.  }
  10790.       catch(...)
  10791.  {
  10792.    __tmp->_M_remove_reference();
  10793.    throw;
  10794.  }
  10795.       return locale(__tmp);
  10796.     }
  10797.  
  10798.   template<typename _CharT, typename _Traits, typename _Alloc>
  10799.     bool
  10800.     locale::
  10801.     operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1,
  10802.         const basic_string<_CharT, _Traits, _Alloc>& __s2) const
  10803.     {
  10804.       typedef std::collate<_CharT> __collate_type;
  10805.       const __collate_type& __collate = use_facet<__collate_type>(*this);
  10806.       return (__collate.compare(__s1.data(), __s1.data() + __s1.length(),
  10807.     __s2.data(), __s2.data() + __s2.length()) < 0);
  10808.     }
  10809. # 102 "/usr/include/c++/5/bits/locale_classes.tcc" 3
  10810.   template<typename _Facet>
  10811.     bool
  10812.     has_facet(const locale& __loc) throw()
  10813.     {
  10814.       const size_t __i = _Facet::id._M_id();
  10815.       const locale::facet** __facets = __loc._M_impl->_M_facets;
  10816.       return (__i < __loc._M_impl->_M_facets_size
  10817.  
  10818.        && dynamic_cast<const _Facet*>(__facets[__i]));
  10819.  
  10820.  
  10821.  
  10822.     }
  10823. # 130 "/usr/include/c++/5/bits/locale_classes.tcc" 3
  10824.   template<typename _Facet>
  10825.     const _Facet&
  10826.     use_facet(const locale& __loc)
  10827.     {
  10828.       const size_t __i = _Facet::id._M_id();
  10829.       const locale::facet** __facets = __loc._M_impl->_M_facets;
  10830.       if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i])
  10831.         __throw_bad_cast();
  10832.  
  10833.       return dynamic_cast<const _Facet&>(*__facets[__i]);
  10834.  
  10835.  
  10836.  
  10837.     }
  10838.  
  10839.  
  10840.  
  10841.   template<typename _CharT>
  10842.     int
  10843.     collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw ()
  10844.     { return 0; }
  10845.  
  10846.  
  10847.   template<typename _CharT>
  10848.     size_t
  10849.     collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw ()
  10850.     { return 0; }
  10851.  
  10852.   template<typename _CharT>
  10853.     int
  10854.     collate<_CharT>::
  10855.     do_compare(const _CharT* __lo1, const _CharT* __hi1,
  10856.         const _CharT* __lo2, const _CharT* __hi2) const
  10857.     {
  10858.  
  10859.  
  10860.       const string_type __one(__lo1, __hi1);
  10861.       const string_type __two(__lo2, __hi2);
  10862.  
  10863.       const _CharT* __p = __one.c_str();
  10864.       const _CharT* __pend = __one.data() + __one.length();
  10865.       const _CharT* __q = __two.c_str();
  10866.       const _CharT* __qend = __two.data() + __two.length();
  10867.  
  10868.  
  10869.  
  10870.  
  10871.       for (;;)
  10872.  {
  10873.    const int __res = _M_compare(__p, __q);
  10874.    if (__res)
  10875.      return __res;
  10876.  
  10877.    __p += char_traits<_CharT>::length(__p);
  10878.    __q += char_traits<_CharT>::length(__q);
  10879.    if (__p == __pend && __q == __qend)
  10880.      return 0;
  10881.    else if (__p == __pend)
  10882.      return -1;
  10883.    else if (__q == __qend)
  10884.      return 1;
  10885.  
  10886.    __p++;
  10887.    __q++;
  10888.  }
  10889.     }
  10890.  
  10891.   template<typename _CharT>
  10892.     typename collate<_CharT>::string_type
  10893.     collate<_CharT>::
  10894.     do_transform(const _CharT* __lo, const _CharT* __hi) const
  10895.     {
  10896.       string_type __ret;
  10897.  
  10898.  
  10899.       const string_type __str(__lo, __hi);
  10900.  
  10901.       const _CharT* __p = __str.c_str();
  10902.       const _CharT* __pend = __str.data() + __str.length();
  10903.  
  10904.       size_t __len = (__hi - __lo) * 2;
  10905.  
  10906.       _CharT* __c = new _CharT[__len];
  10907.  
  10908.       try
  10909.  {
  10910.  
  10911.  
  10912.  
  10913.    for (;;)
  10914.      {
  10915.  
  10916.        size_t __res = _M_transform(__c, __p, __len);
  10917.  
  10918.  
  10919.        if (__res >= __len)
  10920.   {
  10921.     __len = __res + 1;
  10922.     delete [] __c, __c = 0;
  10923.     __c = new _CharT[__len];
  10924.     __res = _M_transform(__c, __p, __len);
  10925.   }
  10926.  
  10927.        __ret.append(__c, __res);
  10928.        __p += char_traits<_CharT>::length(__p);
  10929.        if (__p == __pend)
  10930.   break;
  10931.  
  10932.        __p++;
  10933.        __ret.push_back(_CharT());
  10934.      }
  10935.  }
  10936.       catch(...)
  10937.  {
  10938.    delete [] __c;
  10939.    throw;
  10940.  }
  10941.  
  10942.       delete [] __c;
  10943.  
  10944.       return __ret;
  10945.     }
  10946.  
  10947.   template<typename _CharT>
  10948.     long
  10949.     collate<_CharT>::
  10950.     do_hash(const _CharT* __lo, const _CharT* __hi) const
  10951.     {
  10952.       unsigned long __val = 0;
  10953.       for (; __lo < __hi; ++__lo)
  10954.  __val =
  10955.    *__lo + ((__val << 7)
  10956.      | (__val >> (__gnu_cxx::__numeric_traits<unsigned long>::
  10957.     __digits - 7)));
  10958.       return static_cast<long>(__val);
  10959.     }
  10960.  
  10961.  
  10962.  
  10963.  
  10964.   extern template class collate<char>;
  10965.   extern template class collate_byname<char>;
  10966.  
  10967.   extern template
  10968.     const collate<char>&
  10969.     use_facet<collate<char> >(const locale&);
  10970.  
  10971.   extern template
  10972.     bool
  10973.     has_facet<collate<char> >(const locale&);
  10974.  
  10975.  
  10976.   extern template class collate<wchar_t>;
  10977.   extern template class collate_byname<wchar_t>;
  10978.  
  10979.   extern template
  10980.     const collate<wchar_t>&
  10981.     use_facet<collate<wchar_t> >(const locale&);
  10982.  
  10983.   extern template
  10984.     bool
  10985.     has_facet<collate<wchar_t> >(const locale&);
  10986.  
  10987.  
  10988.  
  10989.  
  10990. }
  10991. # 843 "/usr/include/c++/5/bits/locale_classes.h" 2 3
  10992. # 42 "/usr/include/c++/5/bits/ios_base.h" 2 3
  10993.  
  10994.  
  10995. # 1 "/usr/include/c++/5/stdexcept" 1 3
  10996. # 36 "/usr/include/c++/5/stdexcept" 3
  10997.        
  10998. # 37 "/usr/include/c++/5/stdexcept" 3
  10999.  
  11000.  
  11001.  
  11002.  
  11003. namespace std __attribute__ ((__visibility__ ("default")))
  11004. {
  11005.  
  11006.  
  11007.  
  11008.  
  11009.  
  11010.   struct __cow_string
  11011.   {
  11012.     union {
  11013.       const char* _M_p;
  11014.       char _M_bytes[sizeof(const char*)];
  11015.     };
  11016.  
  11017.     __cow_string();
  11018.     __cow_string(const std::string&);
  11019.     __cow_string(const char*, size_t);
  11020.     __cow_string(const __cow_string&) throw();
  11021.     __cow_string& operator=(const __cow_string&) throw();
  11022.     ~__cow_string();
  11023.  
  11024.  
  11025.  
  11026.  
  11027.   };
  11028.  
  11029.   typedef basic_string<char> __sso_string;
  11030. # 113 "/usr/include/c++/5/stdexcept" 3
  11031.   class logic_error : public exception
  11032.   {
  11033.     __cow_string _M_msg;
  11034.  
  11035.   public:
  11036.  
  11037.     explicit
  11038.     logic_error(const string& __arg);
  11039.  
  11040.  
  11041.  
  11042.  
  11043.  
  11044.  
  11045.  
  11046.     logic_error(const logic_error&) throw();
  11047.     logic_error& operator=(const logic_error&) throw();
  11048.  
  11049.  
  11050.     virtual ~logic_error() throw();
  11051.  
  11052.  
  11053.  
  11054.     virtual const char*
  11055.     what() const throw();
  11056.   };
  11057.  
  11058.  
  11059.  
  11060.   class domain_error : public logic_error
  11061.   {
  11062.   public:
  11063.     explicit domain_error(const string& __arg);
  11064.  
  11065.  
  11066.  
  11067.     virtual ~domain_error() throw();
  11068.   };
  11069.  
  11070.  
  11071.   class invalid_argument : public logic_error
  11072.   {
  11073.   public:
  11074.     explicit invalid_argument(const string& __arg);
  11075.  
  11076.  
  11077.  
  11078.     virtual ~invalid_argument() throw();
  11079.   };
  11080.  
  11081.  
  11082.  
  11083.   class length_error : public logic_error
  11084.   {
  11085.   public:
  11086.     explicit length_error(const string& __arg);
  11087.  
  11088.  
  11089.  
  11090.     virtual ~length_error() throw();
  11091.   };
  11092.  
  11093.  
  11094.  
  11095.   class out_of_range : public logic_error
  11096.   {
  11097.   public:
  11098.     explicit out_of_range(const string& __arg);
  11099.  
  11100.  
  11101.  
  11102.     virtual ~out_of_range() throw();
  11103.   };
  11104.  
  11105.  
  11106.  
  11107.  
  11108.  
  11109.  
  11110.   class runtime_error : public exception
  11111.   {
  11112.     __cow_string _M_msg;
  11113.  
  11114.   public:
  11115.  
  11116.     explicit
  11117.     runtime_error(const string& __arg);
  11118.  
  11119.  
  11120.  
  11121.  
  11122.  
  11123.  
  11124.  
  11125.     runtime_error(const runtime_error&) throw();
  11126.     runtime_error& operator=(const runtime_error&) throw();
  11127.  
  11128.  
  11129.     virtual ~runtime_error() throw();
  11130.  
  11131.  
  11132.  
  11133.     virtual const char*
  11134.     what() const throw();
  11135.   };
  11136.  
  11137.  
  11138.   class range_error : public runtime_error
  11139.   {
  11140.   public:
  11141.     explicit range_error(const string& __arg);
  11142.  
  11143.  
  11144.  
  11145.     virtual ~range_error() throw();
  11146.   };
  11147.  
  11148.  
  11149.   class overflow_error : public runtime_error
  11150.   {
  11151.   public:
  11152.     explicit overflow_error(const string& __arg);
  11153.  
  11154.  
  11155.  
  11156.     virtual ~overflow_error() throw();
  11157.   };
  11158.  
  11159.  
  11160.   class underflow_error : public runtime_error
  11161.   {
  11162.   public:
  11163.     explicit underflow_error(const string& __arg);
  11164.  
  11165.  
  11166.  
  11167.     virtual ~underflow_error() throw();
  11168.   };
  11169.  
  11170.  
  11171.  
  11172.  
  11173. }
  11174. # 45 "/usr/include/c++/5/bits/ios_base.h" 2 3
  11175.  
  11176.  
  11177.  
  11178.  
  11179. namespace std __attribute__ ((__visibility__ ("default")))
  11180. {
  11181.  
  11182.  
  11183.  
  11184.  
  11185.  
  11186.  
  11187.   enum _Ios_Fmtflags
  11188.     {
  11189.       _S_boolalpha = 1L << 0,
  11190.       _S_dec = 1L << 1,
  11191.       _S_fixed = 1L << 2,
  11192.       _S_hex = 1L << 3,
  11193.       _S_internal = 1L << 4,
  11194.       _S_left = 1L << 5,
  11195.       _S_oct = 1L << 6,
  11196.       _S_right = 1L << 7,
  11197.       _S_scientific = 1L << 8,
  11198.       _S_showbase = 1L << 9,
  11199.       _S_showpoint = 1L << 10,
  11200.       _S_showpos = 1L << 11,
  11201.       _S_skipws = 1L << 12,
  11202.       _S_unitbuf = 1L << 13,
  11203.       _S_uppercase = 1L << 14,
  11204.       _S_adjustfield = _S_left | _S_right | _S_internal,
  11205.       _S_basefield = _S_dec | _S_oct | _S_hex,
  11206.       _S_floatfield = _S_scientific | _S_fixed,
  11207.       _S_ios_fmtflags_end = 1L << 16,
  11208.       _S_ios_fmtflags_max = 0x7fffffff,
  11209.       _S_ios_fmtflags_min = ~0x7fffffff
  11210.     };
  11211.  
  11212.   inline _Ios_Fmtflags
  11213.   operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
  11214.   { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); }
  11215.  
  11216.   inline _Ios_Fmtflags
  11217.   operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
  11218.   { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); }
  11219.  
  11220.   inline _Ios_Fmtflags
  11221.   operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
  11222.   { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); }
  11223.  
  11224.   inline _Ios_Fmtflags
  11225.   operator~(_Ios_Fmtflags __a)
  11226.   { return _Ios_Fmtflags(~static_cast<int>(__a)); }
  11227.  
  11228.   inline const _Ios_Fmtflags&
  11229.   operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
  11230.   { return __a = __a | __b; }
  11231.  
  11232.   inline const _Ios_Fmtflags&
  11233.   operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
  11234.   { return __a = __a & __b; }
  11235.  
  11236.   inline const _Ios_Fmtflags&
  11237.   operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
  11238.   { return __a = __a ^ __b; }
  11239.  
  11240.  
  11241.   enum _Ios_Openmode
  11242.     {
  11243.       _S_app = 1L << 0,
  11244.       _S_ate = 1L << 1,
  11245.       _S_bin = 1L << 2,
  11246.       _S_in = 1L << 3,
  11247.       _S_out = 1L << 4,
  11248.       _S_trunc = 1L << 5,
  11249.       _S_ios_openmode_end = 1L << 16,
  11250.       _S_ios_openmode_max = 0x7fffffff,
  11251.       _S_ios_openmode_min = ~0x7fffffff
  11252.     };
  11253.  
  11254.   inline _Ios_Openmode
  11255.   operator&(_Ios_Openmode __a, _Ios_Openmode __b)
  11256.   { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); }
  11257.  
  11258.   inline _Ios_Openmode
  11259.   operator|(_Ios_Openmode __a, _Ios_Openmode __b)
  11260.   { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); }
  11261.  
  11262.   inline _Ios_Openmode
  11263.   operator^(_Ios_Openmode __a, _Ios_Openmode __b)
  11264.   { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); }
  11265.  
  11266.   inline _Ios_Openmode
  11267.   operator~(_Ios_Openmode __a)
  11268.   { return _Ios_Openmode(~static_cast<int>(__a)); }
  11269.  
  11270.   inline const _Ios_Openmode&
  11271.   operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)
  11272.   { return __a = __a | __b; }
  11273.  
  11274.   inline const _Ios_Openmode&
  11275.   operator&=(_Ios_Openmode& __a, _Ios_Openmode __b)
  11276.   { return __a = __a & __b; }
  11277.  
  11278.   inline const _Ios_Openmode&
  11279.   operator^=(_Ios_Openmode& __a, _Ios_Openmode __b)
  11280.   { return __a = __a ^ __b; }
  11281.  
  11282.  
  11283.   enum _Ios_Iostate
  11284.     {
  11285.       _S_goodbit = 0,
  11286.       _S_badbit = 1L << 0,
  11287.       _S_eofbit = 1L << 1,
  11288.       _S_failbit = 1L << 2,
  11289.       _S_ios_iostate_end = 1L << 16,
  11290.       _S_ios_iostate_max = 0x7fffffff,
  11291.       _S_ios_iostate_min = ~0x7fffffff
  11292.     };
  11293.  
  11294.   inline _Ios_Iostate
  11295.   operator&(_Ios_Iostate __a, _Ios_Iostate __b)
  11296.   { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); }
  11297.  
  11298.   inline _Ios_Iostate
  11299.   operator|(_Ios_Iostate __a, _Ios_Iostate __b)
  11300.   { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); }
  11301.  
  11302.   inline _Ios_Iostate
  11303.   operator^(_Ios_Iostate __a, _Ios_Iostate __b)
  11304.   { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); }
  11305.  
  11306.   inline _Ios_Iostate
  11307.   operator~(_Ios_Iostate __a)
  11308.   { return _Ios_Iostate(~static_cast<int>(__a)); }
  11309.  
  11310.   inline const _Ios_Iostate&
  11311.   operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)
  11312.   { return __a = __a | __b; }
  11313.  
  11314.   inline const _Ios_Iostate&
  11315.   operator&=(_Ios_Iostate& __a, _Ios_Iostate __b)
  11316.   { return __a = __a & __b; }
  11317.  
  11318.   inline const _Ios_Iostate&
  11319.   operator^=(_Ios_Iostate& __a, _Ios_Iostate __b)
  11320.   { return __a = __a ^ __b; }
  11321.  
  11322.  
  11323.   enum _Ios_Seekdir
  11324.     {
  11325.       _S_beg = 0,
  11326.       _S_cur = 1,
  11327.       _S_end = 2,
  11328.       _S_ios_seekdir_end = 1L << 16
  11329.     };
  11330. # 228 "/usr/include/c++/5/bits/ios_base.h" 3
  11331.   class ios_base
  11332.   {
  11333.  
  11334.  
  11335.  
  11336.     struct system_error : std::runtime_error
  11337.     {
  11338.  
  11339.       struct error_code
  11340.       {
  11341.  error_code() { }
  11342.       private:
  11343.  int _M_value;
  11344.  const void* _M_cat;
  11345.       } _M_code;
  11346.     };
  11347.  
  11348.  
  11349.   public:
  11350. # 255 "/usr/include/c++/5/bits/ios_base.h" 3
  11351.     class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error
  11352.     {
  11353.     public:
  11354.       explicit
  11355.       failure(const string& __str);
  11356. # 269 "/usr/include/c++/5/bits/ios_base.h" 3
  11357.       virtual
  11358.       ~failure() throw();
  11359.  
  11360.       virtual const char*
  11361.       what() const throw();
  11362.     };
  11363. # 323 "/usr/include/c++/5/bits/ios_base.h" 3
  11364.     typedef _Ios_Fmtflags fmtflags;
  11365.  
  11366.  
  11367.     static const fmtflags boolalpha = _S_boolalpha;
  11368.  
  11369.  
  11370.     static const fmtflags dec = _S_dec;
  11371.  
  11372.  
  11373.     static const fmtflags fixed = _S_fixed;
  11374.  
  11375.  
  11376.     static const fmtflags hex = _S_hex;
  11377.  
  11378.  
  11379.  
  11380.  
  11381.     static const fmtflags internal = _S_internal;
  11382.  
  11383.  
  11384.  
  11385.     static const fmtflags left = _S_left;
  11386.  
  11387.  
  11388.     static const fmtflags oct = _S_oct;
  11389.  
  11390.  
  11391.  
  11392.     static const fmtflags right = _S_right;
  11393.  
  11394.  
  11395.     static const fmtflags scientific = _S_scientific;
  11396.  
  11397.  
  11398.  
  11399.     static const fmtflags showbase = _S_showbase;
  11400.  
  11401.  
  11402.  
  11403.     static const fmtflags showpoint = _S_showpoint;
  11404.  
  11405.  
  11406.     static const fmtflags showpos = _S_showpos;
  11407.  
  11408.  
  11409.     static const fmtflags skipws = _S_skipws;
  11410.  
  11411.  
  11412.     static const fmtflags unitbuf = _S_unitbuf;
  11413.  
  11414.  
  11415.  
  11416.     static const fmtflags uppercase = _S_uppercase;
  11417.  
  11418.  
  11419.     static const fmtflags adjustfield = _S_adjustfield;
  11420.  
  11421.  
  11422.     static const fmtflags basefield = _S_basefield;
  11423.  
  11424.  
  11425.     static const fmtflags floatfield = _S_floatfield;
  11426. # 398 "/usr/include/c++/5/bits/ios_base.h" 3
  11427.     typedef _Ios_Iostate iostate;
  11428.  
  11429.  
  11430.  
  11431.     static const iostate badbit = _S_badbit;
  11432.  
  11433.  
  11434.     static const iostate eofbit = _S_eofbit;
  11435.  
  11436.  
  11437.  
  11438.  
  11439.     static const iostate failbit = _S_failbit;
  11440.  
  11441.  
  11442.     static const iostate goodbit = _S_goodbit;
  11443. # 429 "/usr/include/c++/5/bits/ios_base.h" 3
  11444.     typedef _Ios_Openmode openmode;
  11445.  
  11446.  
  11447.     static const openmode app = _S_app;
  11448.  
  11449.  
  11450.     static const openmode ate = _S_ate;
  11451.  
  11452.  
  11453.  
  11454.  
  11455.     static const openmode binary = _S_bin;
  11456.  
  11457.  
  11458.     static const openmode in = _S_in;
  11459.  
  11460.  
  11461.     static const openmode out = _S_out;
  11462.  
  11463.  
  11464.     static const openmode trunc = _S_trunc;
  11465. # 461 "/usr/include/c++/5/bits/ios_base.h" 3
  11466.     typedef _Ios_Seekdir seekdir;
  11467.  
  11468.  
  11469.     static const seekdir beg = _S_beg;
  11470.  
  11471.  
  11472.     static const seekdir cur = _S_cur;
  11473.  
  11474.  
  11475.     static const seekdir end = _S_end;
  11476.  
  11477.  
  11478.     typedef int io_state;
  11479.     typedef int open_mode;
  11480.     typedef int seek_dir;
  11481.  
  11482.     typedef std::streampos streampos;
  11483.     typedef std::streamoff streamoff;
  11484. # 487 "/usr/include/c++/5/bits/ios_base.h" 3
  11485.     enum event
  11486.     {
  11487.       erase_event,
  11488.       imbue_event,
  11489.       copyfmt_event
  11490.     };
  11491. # 504 "/usr/include/c++/5/bits/ios_base.h" 3
  11492.     typedef void (*event_callback) (event __e, ios_base& __b, int __i);
  11493. # 516 "/usr/include/c++/5/bits/ios_base.h" 3
  11494.     void
  11495.     register_callback(event_callback __fn, int __index);
  11496.  
  11497.   protected:
  11498.     streamsize _M_precision;
  11499.     streamsize _M_width;
  11500.     fmtflags _M_flags;
  11501.     iostate _M_exception;
  11502.     iostate _M_streambuf_state;
  11503.  
  11504.  
  11505.  
  11506.     struct _Callback_list
  11507.     {
  11508.  
  11509.       _Callback_list* _M_next;
  11510.       ios_base::event_callback _M_fn;
  11511.       int _M_index;
  11512.       _Atomic_word _M_refcount;
  11513.  
  11514.       _Callback_list(ios_base::event_callback __fn, int __index,
  11515.        _Callback_list* __cb)
  11516.       : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { }
  11517.  
  11518.       void
  11519.       _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
  11520.  
  11521.  
  11522.       int
  11523.       _M_remove_reference()
  11524.       {
  11525.  
  11526.         ;
  11527.         int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1);
  11528.         if (__res == 0)
  11529.           {
  11530.             ;
  11531.           }
  11532.         return __res;
  11533.       }
  11534.     };
  11535.  
  11536.      _Callback_list* _M_callbacks;
  11537.  
  11538.     void
  11539.     _M_call_callbacks(event __ev) throw();
  11540.  
  11541.     void
  11542.     _M_dispose_callbacks(void) throw();
  11543.  
  11544.  
  11545.     struct _Words
  11546.     {
  11547.       void* _M_pword;
  11548.       long _M_iword;
  11549.       _Words() : _M_pword(0), _M_iword(0) { }
  11550.     };
  11551.  
  11552.  
  11553.     _Words _M_word_zero;
  11554.  
  11555.  
  11556.  
  11557.     enum { _S_local_word_size = 8 };
  11558.     _Words _M_local_word[_S_local_word_size];
  11559.  
  11560.  
  11561.     int _M_word_size;
  11562.     _Words* _M_word;
  11563.  
  11564.     _Words&
  11565.     _M_grow_words(int __index, bool __iword);
  11566.  
  11567.  
  11568.     locale _M_ios_locale;
  11569.  
  11570.     void
  11571.     _M_init() throw();
  11572.  
  11573.   public:
  11574.  
  11575.  
  11576.  
  11577.  
  11578.  
  11579.     class Init
  11580.     {
  11581.       friend class ios_base;
  11582.     public:
  11583.       Init();
  11584.       ~Init();
  11585.  
  11586.     private:
  11587.       static _Atomic_word _S_refcount;
  11588.       static bool _S_synced_with_stdio;
  11589.     };
  11590.  
  11591.  
  11592.  
  11593.  
  11594.  
  11595.  
  11596.     fmtflags
  11597.     flags() const
  11598.     { return _M_flags; }
  11599. # 629 "/usr/include/c++/5/bits/ios_base.h" 3
  11600.     fmtflags
  11601.     flags(fmtflags __fmtfl)
  11602.     {
  11603.       fmtflags __old = _M_flags;
  11604.       _M_flags = __fmtfl;
  11605.       return __old;
  11606.     }
  11607. # 645 "/usr/include/c++/5/bits/ios_base.h" 3
  11608.     fmtflags
  11609.     setf(fmtflags __fmtfl)
  11610.     {
  11611.       fmtflags __old = _M_flags;
  11612.       _M_flags |= __fmtfl;
  11613.       return __old;
  11614.     }
  11615. # 662 "/usr/include/c++/5/bits/ios_base.h" 3
  11616.     fmtflags
  11617.     setf(fmtflags __fmtfl, fmtflags __mask)
  11618.     {
  11619.       fmtflags __old = _M_flags;
  11620.       _M_flags &= ~__mask;
  11621.       _M_flags |= (__fmtfl & __mask);
  11622.       return __old;
  11623.     }
  11624.  
  11625.  
  11626.  
  11627.  
  11628.  
  11629.  
  11630.  
  11631.     void
  11632.     unsetf(fmtflags __mask)
  11633.     { _M_flags &= ~__mask; }
  11634. # 688 "/usr/include/c++/5/bits/ios_base.h" 3
  11635.     streamsize
  11636.     precision() const
  11637.     { return _M_precision; }
  11638.  
  11639.  
  11640.  
  11641.  
  11642.  
  11643.  
  11644.     streamsize
  11645.     precision(streamsize __prec)
  11646.     {
  11647.       streamsize __old = _M_precision;
  11648.       _M_precision = __prec;
  11649.       return __old;
  11650.     }
  11651.  
  11652.  
  11653.  
  11654.  
  11655.  
  11656.  
  11657.  
  11658.     streamsize
  11659.     width() const
  11660.     { return _M_width; }
  11661.  
  11662.  
  11663.  
  11664.  
  11665.  
  11666.  
  11667.     streamsize
  11668.     width(streamsize __wide)
  11669.     {
  11670.       streamsize __old = _M_width;
  11671.       _M_width = __wide;
  11672.       return __old;
  11673.     }
  11674. # 739 "/usr/include/c++/5/bits/ios_base.h" 3
  11675.     static bool
  11676.     sync_with_stdio(bool __sync = true);
  11677. # 751 "/usr/include/c++/5/bits/ios_base.h" 3
  11678.     locale
  11679.     imbue(const locale& __loc) throw();
  11680. # 762 "/usr/include/c++/5/bits/ios_base.h" 3
  11681.     locale
  11682.     getloc() const
  11683.     { return _M_ios_locale; }
  11684. # 773 "/usr/include/c++/5/bits/ios_base.h" 3
  11685.     const locale&
  11686.     _M_getloc() const
  11687.     { return _M_ios_locale; }
  11688. # 792 "/usr/include/c++/5/bits/ios_base.h" 3
  11689.     static int
  11690.     xalloc() throw();
  11691. # 808 "/usr/include/c++/5/bits/ios_base.h" 3
  11692.     long&
  11693.     iword(int __ix)
  11694.     {
  11695.       _Words& __word = (__ix < _M_word_size)
  11696.    ? _M_word[__ix] : _M_grow_words(__ix, true);
  11697.       return __word._M_iword;
  11698.     }
  11699. # 829 "/usr/include/c++/5/bits/ios_base.h" 3
  11700.     void*&
  11701.     pword(int __ix)
  11702.     {
  11703.       _Words& __word = (__ix < _M_word_size)
  11704.    ? _M_word[__ix] : _M_grow_words(__ix, false);
  11705.       return __word._M_pword;
  11706.     }
  11707. # 846 "/usr/include/c++/5/bits/ios_base.h" 3
  11708.     virtual ~ios_base();
  11709.  
  11710.   protected:
  11711.     ios_base() throw ();
  11712.  
  11713.  
  11714.  
  11715.  
  11716.   private:
  11717.     ios_base(const ios_base&);
  11718.  
  11719.     ios_base&
  11720.     operator=(const ios_base&);
  11721. # 873 "/usr/include/c++/5/bits/ios_base.h" 3
  11722.   };
  11723.  
  11724.  
  11725.  
  11726.   inline ios_base&
  11727.   boolalpha(ios_base& __base)
  11728.   {
  11729.     __base.setf(ios_base::boolalpha);
  11730.     return __base;
  11731.   }
  11732.  
  11733.  
  11734.   inline ios_base&
  11735.   noboolalpha(ios_base& __base)
  11736.   {
  11737.     __base.unsetf(ios_base::boolalpha);
  11738.     return __base;
  11739.   }
  11740.  
  11741.  
  11742.   inline ios_base&
  11743.   showbase(ios_base& __base)
  11744.   {
  11745.     __base.setf(ios_base::showbase);
  11746.     return __base;
  11747.   }
  11748.  
  11749.  
  11750.   inline ios_base&
  11751.   noshowbase(ios_base& __base)
  11752.   {
  11753.     __base.unsetf(ios_base::showbase);
  11754.     return __base;
  11755.   }
  11756.  
  11757.  
  11758.   inline ios_base&
  11759.   showpoint(ios_base& __base)
  11760.   {
  11761.     __base.setf(ios_base::showpoint);
  11762.     return __base;
  11763.   }
  11764.  
  11765.  
  11766.   inline ios_base&
  11767.   noshowpoint(ios_base& __base)
  11768.   {
  11769.     __base.unsetf(ios_base::showpoint);
  11770.     return __base;
  11771.   }
  11772.  
  11773.  
  11774.   inline ios_base&
  11775.   showpos(ios_base& __base)
  11776.   {
  11777.     __base.setf(ios_base::showpos);
  11778.     return __base;
  11779.   }
  11780.  
  11781.  
  11782.   inline ios_base&
  11783.   noshowpos(ios_base& __base)
  11784.   {
  11785.     __base.unsetf(ios_base::showpos);
  11786.     return __base;
  11787.   }
  11788.  
  11789.  
  11790.   inline ios_base&
  11791.   skipws(ios_base& __base)
  11792.   {
  11793.     __base.setf(ios_base::skipws);
  11794.     return __base;
  11795.   }
  11796.  
  11797.  
  11798.   inline ios_base&
  11799.   noskipws(ios_base& __base)
  11800.   {
  11801.     __base.unsetf(ios_base::skipws);
  11802.     return __base;
  11803.   }
  11804.  
  11805.  
  11806.   inline ios_base&
  11807.   uppercase(ios_base& __base)
  11808.   {
  11809.     __base.setf(ios_base::uppercase);
  11810.     return __base;
  11811.   }
  11812.  
  11813.  
  11814.   inline ios_base&
  11815.   nouppercase(ios_base& __base)
  11816.   {
  11817.     __base.unsetf(ios_base::uppercase);
  11818.     return __base;
  11819.   }
  11820.  
  11821.  
  11822.   inline ios_base&
  11823.   unitbuf(ios_base& __base)
  11824.   {
  11825.      __base.setf(ios_base::unitbuf);
  11826.      return __base;
  11827.   }
  11828.  
  11829.  
  11830.   inline ios_base&
  11831.   nounitbuf(ios_base& __base)
  11832.   {
  11833.      __base.unsetf(ios_base::unitbuf);
  11834.      return __base;
  11835.   }
  11836.  
  11837.  
  11838.  
  11839.   inline ios_base&
  11840.   internal(ios_base& __base)
  11841.   {
  11842.      __base.setf(ios_base::internal, ios_base::adjustfield);
  11843.      return __base;
  11844.   }
  11845.  
  11846.  
  11847.   inline ios_base&
  11848.   left(ios_base& __base)
  11849.   {
  11850.     __base.setf(ios_base::left, ios_base::adjustfield);
  11851.     return __base;
  11852.   }
  11853.  
  11854.  
  11855.   inline ios_base&
  11856.   right(ios_base& __base)
  11857.   {
  11858.     __base.setf(ios_base::right, ios_base::adjustfield);
  11859.     return __base;
  11860.   }
  11861.  
  11862.  
  11863.  
  11864.   inline ios_base&
  11865.   dec(ios_base& __base)
  11866.   {
  11867.     __base.setf(ios_base::dec, ios_base::basefield);
  11868.     return __base;
  11869.   }
  11870.  
  11871.  
  11872.   inline ios_base&
  11873.   hex(ios_base& __base)
  11874.   {
  11875.     __base.setf(ios_base::hex, ios_base::basefield);
  11876.     return __base;
  11877.   }
  11878.  
  11879.  
  11880.   inline ios_base&
  11881.   oct(ios_base& __base)
  11882.   {
  11883.     __base.setf(ios_base::oct, ios_base::basefield);
  11884.     return __base;
  11885.   }
  11886.  
  11887.  
  11888.  
  11889.   inline ios_base&
  11890.   fixed(ios_base& __base)
  11891.   {
  11892.     __base.setf(ios_base::fixed, ios_base::floatfield);
  11893.     return __base;
  11894.   }
  11895.  
  11896.  
  11897.   inline ios_base&
  11898.   scientific(ios_base& __base)
  11899.   {
  11900.     __base.setf(ios_base::scientific, ios_base::floatfield);
  11901.     return __base;
  11902.   }
  11903. # 1076 "/usr/include/c++/5/bits/ios_base.h" 3
  11904.  
  11905. }
  11906. # 43 "/usr/include/c++/5/ios" 2 3
  11907. # 1 "/usr/include/c++/5/streambuf" 1 3
  11908. # 36 "/usr/include/c++/5/streambuf" 3
  11909.        
  11910. # 37 "/usr/include/c++/5/streambuf" 3
  11911. # 45 "/usr/include/c++/5/streambuf" 3
  11912. namespace std __attribute__ ((__visibility__ ("default")))
  11913. {
  11914.  
  11915.  
  11916.   template<typename _CharT, typename _Traits>
  11917.     streamsize
  11918.     __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,
  11919.      basic_streambuf<_CharT, _Traits>*, bool&);
  11920. # 119 "/usr/include/c++/5/streambuf" 3
  11921.   template<typename _CharT, typename _Traits>
  11922.     class basic_streambuf
  11923.     {
  11924.     public:
  11925.  
  11926.  
  11927.  
  11928.  
  11929.  
  11930.  
  11931.       typedef _CharT char_type;
  11932.       typedef _Traits traits_type;
  11933.       typedef typename traits_type::int_type int_type;
  11934.       typedef typename traits_type::pos_type pos_type;
  11935.       typedef typename traits_type::off_type off_type;
  11936.  
  11937.  
  11938.  
  11939.  
  11940.       typedef basic_streambuf<char_type, traits_type> __streambuf_type;
  11941.  
  11942.  
  11943.       friend class basic_ios<char_type, traits_type>;
  11944.       friend class basic_istream<char_type, traits_type>;
  11945.       friend class basic_ostream<char_type, traits_type>;
  11946.       friend class istreambuf_iterator<char_type, traits_type>;
  11947.       friend class ostreambuf_iterator<char_type, traits_type>;
  11948.  
  11949.       friend streamsize
  11950.       __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&);
  11951.  
  11952.       template<bool _IsMove, typename _CharT2>
  11953.         friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  11954.             _CharT2*>::__type
  11955.         __copy_move_a2(istreambuf_iterator<_CharT2>,
  11956.          istreambuf_iterator<_CharT2>, _CharT2*);
  11957.  
  11958.       template<typename _CharT2>
  11959.         friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  11960.       istreambuf_iterator<_CharT2> >::__type
  11961.         find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
  11962.       const _CharT2&);
  11963.  
  11964.       template<typename _CharT2, typename _Traits2>
  11965.         friend basic_istream<_CharT2, _Traits2>&
  11966.         operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);
  11967.  
  11968.       template<typename _CharT2, typename _Traits2, typename _Alloc>
  11969.         friend basic_istream<_CharT2, _Traits2>&
  11970.         operator>>(basic_istream<_CharT2, _Traits2>&,
  11971.      basic_string<_CharT2, _Traits2, _Alloc>&);
  11972.  
  11973.       template<typename _CharT2, typename _Traits2, typename _Alloc>
  11974.         friend basic_istream<_CharT2, _Traits2>&
  11975.         getline(basic_istream<_CharT2, _Traits2>&,
  11976.   basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2);
  11977.  
  11978.     protected:
  11979.  
  11980.  
  11981.  
  11982.  
  11983.  
  11984.  
  11985.  
  11986.       char_type* _M_in_beg;
  11987.       char_type* _M_in_cur;
  11988.       char_type* _M_in_end;
  11989.       char_type* _M_out_beg;
  11990.       char_type* _M_out_cur;
  11991.       char_type* _M_out_end;
  11992.  
  11993.  
  11994.       locale _M_buf_locale;
  11995.  
  11996.   public:
  11997.  
  11998.       virtual
  11999.       ~basic_streambuf()
  12000.       { }
  12001. # 208 "/usr/include/c++/5/streambuf" 3
  12002.       locale
  12003.       pubimbue(const locale& __loc)
  12004.       {
  12005.  locale __tmp(this->getloc());
  12006.  this->imbue(__loc);
  12007.  _M_buf_locale = __loc;
  12008.  return __tmp;
  12009.       }
  12010. # 225 "/usr/include/c++/5/streambuf" 3
  12011.       locale
  12012.       getloc() const
  12013.       { return _M_buf_locale; }
  12014. # 238 "/usr/include/c++/5/streambuf" 3
  12015.       basic_streambuf*
  12016.       pubsetbuf(char_type* __s, streamsize __n)
  12017.       { return this->setbuf(__s, __n); }
  12018. # 250 "/usr/include/c++/5/streambuf" 3
  12019.       pos_type
  12020.       pubseekoff(off_type __off, ios_base::seekdir __way,
  12021.    ios_base::openmode __mode = ios_base::in | ios_base::out)
  12022.       { return this->seekoff(__off, __way, __mode); }
  12023. # 262 "/usr/include/c++/5/streambuf" 3
  12024.       pos_type
  12025.       pubseekpos(pos_type __sp,
  12026.    ios_base::openmode __mode = ios_base::in | ios_base::out)
  12027.       { return this->seekpos(__sp, __mode); }
  12028.  
  12029.  
  12030.  
  12031.  
  12032.       int
  12033.       pubsync() { return this->sync(); }
  12034. # 283 "/usr/include/c++/5/streambuf" 3
  12035.       streamsize
  12036.       in_avail()
  12037.       {
  12038.  const streamsize __ret = this->egptr() - this->gptr();
  12039.  return __ret ? __ret : this->showmanyc();
  12040.       }
  12041. # 297 "/usr/include/c++/5/streambuf" 3
  12042.       int_type
  12043.       snextc()
  12044.       {
  12045.  int_type __ret = traits_type::eof();
  12046.  if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(),
  12047.              __ret), true))
  12048.    __ret = this->sgetc();
  12049.  return __ret;
  12050.       }
  12051. # 315 "/usr/include/c++/5/streambuf" 3
  12052.       int_type
  12053.       sbumpc()
  12054.       {
  12055.  int_type __ret;
  12056.  if (__builtin_expect(this->gptr() < this->egptr(), true))
  12057.    {
  12058.      __ret = traits_type::to_int_type(*this->gptr());
  12059.      this->gbump(1);
  12060.    }
  12061.  else
  12062.    __ret = this->uflow();
  12063.  return __ret;
  12064.       }
  12065. # 337 "/usr/include/c++/5/streambuf" 3
  12066.       int_type
  12067.       sgetc()
  12068.       {
  12069.  int_type __ret;
  12070.  if (__builtin_expect(this->gptr() < this->egptr(), true))
  12071.    __ret = traits_type::to_int_type(*this->gptr());
  12072.  else
  12073.    __ret = this->underflow();
  12074.  return __ret;
  12075.       }
  12076. # 356 "/usr/include/c++/5/streambuf" 3
  12077.       streamsize
  12078.       sgetn(char_type* __s, streamsize __n)
  12079.       { return this->xsgetn(__s, __n); }
  12080. # 371 "/usr/include/c++/5/streambuf" 3
  12081.       int_type
  12082.       sputbackc(char_type __c)
  12083.       {
  12084.  int_type __ret;
  12085.  const bool __testpos = this->eback() < this->gptr();
  12086.  if (__builtin_expect(!__testpos ||
  12087.         !traits_type::eq(__c, this->gptr()[-1]), false))
  12088.    __ret = this->pbackfail(traits_type::to_int_type(__c));
  12089.  else
  12090.    {
  12091.      this->gbump(-1);
  12092.      __ret = traits_type::to_int_type(*this->gptr());
  12093.    }
  12094.  return __ret;
  12095.       }
  12096. # 396 "/usr/include/c++/5/streambuf" 3
  12097.       int_type
  12098.       sungetc()
  12099.       {
  12100.  int_type __ret;
  12101.  if (__builtin_expect(this->eback() < this->gptr(), true))
  12102.    {
  12103.      this->gbump(-1);
  12104.      __ret = traits_type::to_int_type(*this->gptr());
  12105.    }
  12106.  else
  12107.    __ret = this->pbackfail();
  12108.  return __ret;
  12109.       }
  12110. # 423 "/usr/include/c++/5/streambuf" 3
  12111.       int_type
  12112.       sputc(char_type __c)
  12113.       {
  12114.  int_type __ret;
  12115.  if (__builtin_expect(this->pptr() < this->epptr(), true))
  12116.    {
  12117.      *this->pptr() = __c;
  12118.      this->pbump(1);
  12119.      __ret = traits_type::to_int_type(__c);
  12120.    }
  12121.  else
  12122.    __ret = this->overflow(traits_type::to_int_type(__c));
  12123.  return __ret;
  12124.       }
  12125. # 449 "/usr/include/c++/5/streambuf" 3
  12126.       streamsize
  12127.       sputn(const char_type* __s, streamsize __n)
  12128.       { return this->xsputn(__s, __n); }
  12129.  
  12130.     protected:
  12131. # 463 "/usr/include/c++/5/streambuf" 3
  12132.       basic_streambuf()
  12133.       : _M_in_beg(0), _M_in_cur(0), _M_in_end(0),
  12134.       _M_out_beg(0), _M_out_cur(0), _M_out_end(0),
  12135.       _M_buf_locale(locale())
  12136.       { }
  12137. # 481 "/usr/include/c++/5/streambuf" 3
  12138.       char_type*
  12139.       eback() const { return _M_in_beg; }
  12140.  
  12141.       char_type*
  12142.       gptr() const { return _M_in_cur; }
  12143.  
  12144.       char_type*
  12145.       egptr() const { return _M_in_end; }
  12146. # 497 "/usr/include/c++/5/streambuf" 3
  12147.       void
  12148.       gbump(int __n) { _M_in_cur += __n; }
  12149. # 508 "/usr/include/c++/5/streambuf" 3
  12150.       void
  12151.       setg(char_type* __gbeg, char_type* __gnext, char_type* __gend)
  12152.       {
  12153.  _M_in_beg = __gbeg;
  12154.  _M_in_cur = __gnext;
  12155.  _M_in_end = __gend;
  12156.       }
  12157. # 528 "/usr/include/c++/5/streambuf" 3
  12158.       char_type*
  12159.       pbase() const { return _M_out_beg; }
  12160.  
  12161.       char_type*
  12162.       pptr() const { return _M_out_cur; }
  12163.  
  12164.       char_type*
  12165.       epptr() const { return _M_out_end; }
  12166. # 544 "/usr/include/c++/5/streambuf" 3
  12167.       void
  12168.       pbump(int __n) { _M_out_cur += __n; }
  12169. # 554 "/usr/include/c++/5/streambuf" 3
  12170.       void
  12171.       setp(char_type* __pbeg, char_type* __pend)
  12172.       {
  12173.  _M_out_beg = _M_out_cur = __pbeg;
  12174.  _M_out_end = __pend;
  12175.       }
  12176. # 575 "/usr/include/c++/5/streambuf" 3
  12177.       virtual void
  12178.       imbue(const locale& __loc)
  12179.       { }
  12180. # 590 "/usr/include/c++/5/streambuf" 3
  12181.       virtual basic_streambuf<char_type,_Traits>*
  12182.       setbuf(char_type*, streamsize)
  12183.       { return this; }
  12184. # 601 "/usr/include/c++/5/streambuf" 3
  12185.       virtual pos_type
  12186.       seekoff(off_type, ios_base::seekdir,
  12187.        ios_base::openmode = ios_base::in | ios_base::out)
  12188.       { return pos_type(off_type(-1)); }
  12189. # 613 "/usr/include/c++/5/streambuf" 3
  12190.       virtual pos_type
  12191.       seekpos(pos_type,
  12192.        ios_base::openmode = ios_base::in | ios_base::out)
  12193.       { return pos_type(off_type(-1)); }
  12194. # 626 "/usr/include/c++/5/streambuf" 3
  12195.       virtual int
  12196.       sync() { return 0; }
  12197. # 648 "/usr/include/c++/5/streambuf" 3
  12198.       virtual streamsize
  12199.       showmanyc() { return 0; }
  12200. # 664 "/usr/include/c++/5/streambuf" 3
  12201.       virtual streamsize
  12202.       xsgetn(char_type* __s, streamsize __n);
  12203. # 686 "/usr/include/c++/5/streambuf" 3
  12204.       virtual int_type
  12205.       underflow()
  12206.       { return traits_type::eof(); }
  12207. # 699 "/usr/include/c++/5/streambuf" 3
  12208.       virtual int_type
  12209.       uflow()
  12210.       {
  12211.  int_type __ret = traits_type::eof();
  12212.  const bool __testeof = traits_type::eq_int_type(this->underflow(),
  12213.        __ret);
  12214.  if (!__testeof)
  12215.    {
  12216.      __ret = traits_type::to_int_type(*this->gptr());
  12217.      this->gbump(1);
  12218.    }
  12219.  return __ret;
  12220.       }
  12221. # 723 "/usr/include/c++/5/streambuf" 3
  12222.       virtual int_type
  12223.       pbackfail(int_type __c = traits_type::eof())
  12224.       { return traits_type::eof(); }
  12225. # 741 "/usr/include/c++/5/streambuf" 3
  12226.       virtual streamsize
  12227.       xsputn(const char_type* __s, streamsize __n);
  12228. # 767 "/usr/include/c++/5/streambuf" 3
  12229.       virtual int_type
  12230.       overflow(int_type __c = traits_type::eof())
  12231.       { return traits_type::eof(); }
  12232.  
  12233.  
  12234.  
  12235.     public:
  12236. # 782 "/usr/include/c++/5/streambuf" 3
  12237.       void
  12238.       stossc()
  12239.       {
  12240.  if (this->gptr() < this->egptr())
  12241.    this->gbump(1);
  12242.  else
  12243.    this->uflow();
  12244.       }
  12245.  
  12246.  
  12247.  
  12248.       void
  12249.       __safe_gbump(streamsize __n) { _M_in_cur += __n; }
  12250.  
  12251.       void
  12252.       __safe_pbump(streamsize __n) { _M_out_cur += __n; }
  12253.  
  12254.  
  12255.     private:
  12256.  
  12257.  
  12258.  
  12259.       basic_streambuf(const basic_streambuf&);
  12260.  
  12261.       basic_streambuf&
  12262.       operator=(const basic_streambuf&);
  12263. # 822 "/usr/include/c++/5/streambuf" 3
  12264.     };
  12265. # 836 "/usr/include/c++/5/streambuf" 3
  12266.   template<>
  12267.     streamsize
  12268.     __copy_streambufs_eof(basic_streambuf<char>* __sbin,
  12269.      basic_streambuf<char>* __sbout, bool& __ineof);
  12270.  
  12271.   template<>
  12272.     streamsize
  12273.     __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin,
  12274.      basic_streambuf<wchar_t>* __sbout, bool& __ineof);
  12275.  
  12276.  
  12277.  
  12278. }
  12279.  
  12280. # 1 "/usr/include/c++/5/bits/streambuf.tcc" 1 3
  12281. # 37 "/usr/include/c++/5/bits/streambuf.tcc" 3
  12282.        
  12283. # 38 "/usr/include/c++/5/bits/streambuf.tcc" 3
  12284.  
  12285. namespace std __attribute__ ((__visibility__ ("default")))
  12286. {
  12287.  
  12288.  
  12289.   template<typename _CharT, typename _Traits>
  12290.     streamsize
  12291.     basic_streambuf<_CharT, _Traits>::
  12292.     xsgetn(char_type* __s, streamsize __n)
  12293.     {
  12294.       streamsize __ret = 0;
  12295.       while (__ret < __n)
  12296.  {
  12297.    const streamsize __buf_len = this->egptr() - this->gptr();
  12298.    if (__buf_len)
  12299.      {
  12300.        const streamsize __remaining = __n - __ret;
  12301.        const streamsize __len = std::min(__buf_len, __remaining);
  12302.        traits_type::copy(__s, this->gptr(), __len);
  12303.        __ret += __len;
  12304.        __s += __len;
  12305.        this->__safe_gbump(__len);
  12306.      }
  12307.  
  12308.    if (__ret < __n)
  12309.      {
  12310.        const int_type __c = this->uflow();
  12311.        if (!traits_type::eq_int_type(__c, traits_type::eof()))
  12312.   {
  12313.     traits_type::assign(*__s++, traits_type::to_char_type(__c));
  12314.     ++__ret;
  12315.   }
  12316.        else
  12317.   break;
  12318.      }
  12319.  }
  12320.       return __ret;
  12321.     }
  12322.  
  12323.   template<typename _CharT, typename _Traits>
  12324.     streamsize
  12325.     basic_streambuf<_CharT, _Traits>::
  12326.     xsputn(const char_type* __s, streamsize __n)
  12327.     {
  12328.       streamsize __ret = 0;
  12329.       while (__ret < __n)
  12330.  {
  12331.    const streamsize __buf_len = this->epptr() - this->pptr();
  12332.    if (__buf_len)
  12333.      {
  12334.        const streamsize __remaining = __n - __ret;
  12335.        const streamsize __len = std::min(__buf_len, __remaining);
  12336.        traits_type::copy(this->pptr(), __s, __len);
  12337.        __ret += __len;
  12338.        __s += __len;
  12339.        this->__safe_pbump(__len);
  12340.      }
  12341.  
  12342.    if (__ret < __n)
  12343.      {
  12344.        int_type __c = this->overflow(traits_type::to_int_type(*__s));
  12345.        if (!traits_type::eq_int_type(__c, traits_type::eof()))
  12346.   {
  12347.     ++__ret;
  12348.     ++__s;
  12349.   }
  12350.        else
  12351.   break;
  12352.      }
  12353.  }
  12354.       return __ret;
  12355.     }
  12356.  
  12357.  
  12358.  
  12359.  
  12360.   template<typename _CharT, typename _Traits>
  12361.     streamsize
  12362.     __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin,
  12363.      basic_streambuf<_CharT, _Traits>* __sbout,
  12364.      bool& __ineof)
  12365.     {
  12366.       streamsize __ret = 0;
  12367.       __ineof = true;
  12368.       typename _Traits::int_type __c = __sbin->sgetc();
  12369.       while (!_Traits::eq_int_type(__c, _Traits::eof()))
  12370.  {
  12371.    __c = __sbout->sputc(_Traits::to_char_type(__c));
  12372.    if (_Traits::eq_int_type(__c, _Traits::eof()))
  12373.      {
  12374.        __ineof = false;
  12375.        break;
  12376.      }
  12377.    ++__ret;
  12378.    __c = __sbin->snextc();
  12379.  }
  12380.       return __ret;
  12381.     }
  12382.  
  12383.   template<typename _CharT, typename _Traits>
  12384.     inline streamsize
  12385.     __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin,
  12386.         basic_streambuf<_CharT, _Traits>* __sbout)
  12387.     {
  12388.       bool __ineof;
  12389.       return __copy_streambufs_eof(__sbin, __sbout, __ineof);
  12390.     }
  12391.  
  12392.  
  12393.  
  12394.  
  12395.   extern template class basic_streambuf<char>;
  12396.   extern template
  12397.     streamsize
  12398.     __copy_streambufs(basic_streambuf<char>*,
  12399.         basic_streambuf<char>*);
  12400.   extern template
  12401.     streamsize
  12402.     __copy_streambufs_eof(basic_streambuf<char>*,
  12403.      basic_streambuf<char>*, bool&);
  12404.  
  12405.  
  12406.   extern template class basic_streambuf<wchar_t>;
  12407.   extern template
  12408.     streamsize
  12409.     __copy_streambufs(basic_streambuf<wchar_t>*,
  12410.         basic_streambuf<wchar_t>*);
  12411.   extern template
  12412.     streamsize
  12413.     __copy_streambufs_eof(basic_streambuf<wchar_t>*,
  12414.      basic_streambuf<wchar_t>*, bool&);
  12415.  
  12416.  
  12417.  
  12418.  
  12419. }
  12420. # 851 "/usr/include/c++/5/streambuf" 2 3
  12421. # 44 "/usr/include/c++/5/ios" 2 3
  12422. # 1 "/usr/include/c++/5/bits/basic_ios.h" 1 3
  12423. # 33 "/usr/include/c++/5/bits/basic_ios.h" 3
  12424.        
  12425. # 34 "/usr/include/c++/5/bits/basic_ios.h" 3
  12426.  
  12427.  
  12428.  
  12429. # 1 "/usr/include/c++/5/bits/locale_facets.h" 1 3
  12430. # 37 "/usr/include/c++/5/bits/locale_facets.h" 3
  12431.        
  12432. # 38 "/usr/include/c++/5/bits/locale_facets.h" 3
  12433.  
  12434. # 1 "/usr/include/c++/5/cwctype" 1 3
  12435. # 39 "/usr/include/c++/5/cwctype" 3
  12436.        
  12437. # 40 "/usr/include/c++/5/cwctype" 3
  12438. # 50 "/usr/include/c++/5/cwctype" 3
  12439. # 1 "/usr/include/wctype.h" 1 3 4
  12440. # 33 "/usr/include/wctype.h" 3 4
  12441. # 1 "/usr/include/wchar.h" 1 3 4
  12442. # 34 "/usr/include/wctype.h" 2 3 4
  12443. # 49 "/usr/include/wctype.h" 3 4
  12444.  
  12445.  
  12446.  
  12447. typedef unsigned long int wctype_t;
  12448.  
  12449. # 71 "/usr/include/wctype.h" 3 4
  12450. enum
  12451. {
  12452.   __ISwupper = 0,
  12453.   __ISwlower = 1,
  12454.   __ISwalpha = 2,
  12455.   __ISwdigit = 3,
  12456.   __ISwxdigit = 4,
  12457.   __ISwspace = 5,
  12458.   __ISwprint = 6,
  12459.   __ISwgraph = 7,
  12460.   __ISwblank = 8,
  12461.   __ISwcntrl = 9,
  12462.   __ISwpunct = 10,
  12463.   __ISwalnum = 11,
  12464.  
  12465.   _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))),
  12466.   _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))),
  12467.   _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))),
  12468.   _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))),
  12469.   _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))),
  12470.   _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))),
  12471.   _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))),
  12472.   _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))),
  12473.   _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))),
  12474.   _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))),
  12475.   _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))),
  12476.   _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24))))
  12477. };
  12478.  
  12479.  
  12480.  
  12481. extern "C" {
  12482.  
  12483.  
  12484.  
  12485.  
  12486.  
  12487.  
  12488.  
  12489.  
  12490. extern int iswalnum (wint_t __wc) throw ();
  12491.  
  12492.  
  12493.  
  12494.  
  12495.  
  12496. extern int iswalpha (wint_t __wc) throw ();
  12497.  
  12498.  
  12499. extern int iswcntrl (wint_t __wc) throw ();
  12500.  
  12501.  
  12502.  
  12503. extern int iswdigit (wint_t __wc) throw ();
  12504.  
  12505.  
  12506.  
  12507. extern int iswgraph (wint_t __wc) throw ();
  12508.  
  12509.  
  12510.  
  12511.  
  12512. extern int iswlower (wint_t __wc) throw ();
  12513.  
  12514.  
  12515. extern int iswprint (wint_t __wc) throw ();
  12516.  
  12517.  
  12518.  
  12519.  
  12520. extern int iswpunct (wint_t __wc) throw ();
  12521.  
  12522.  
  12523.  
  12524.  
  12525. extern int iswspace (wint_t __wc) throw ();
  12526.  
  12527.  
  12528.  
  12529.  
  12530. extern int iswupper (wint_t __wc) throw ();
  12531.  
  12532.  
  12533.  
  12534.  
  12535. extern int iswxdigit (wint_t __wc) throw ();
  12536.  
  12537.  
  12538.  
  12539.  
  12540.  
  12541. extern int iswblank (wint_t __wc) throw ();
  12542. # 171 "/usr/include/wctype.h" 3 4
  12543. extern wctype_t wctype (const char *__property) throw ();
  12544.  
  12545.  
  12546.  
  12547. extern int iswctype (wint_t __wc, wctype_t __desc) throw ();
  12548.  
  12549.  
  12550.  
  12551.  
  12552.  
  12553.  
  12554.  
  12555.  
  12556.  
  12557.  
  12558. typedef const __int32_t *wctrans_t;
  12559.  
  12560.  
  12561.  
  12562.  
  12563.  
  12564.  
  12565.  
  12566. extern wint_t towlower (wint_t __wc) throw ();
  12567.  
  12568.  
  12569. extern wint_t towupper (wint_t __wc) throw ();
  12570.  
  12571.  
  12572. }
  12573. # 213 "/usr/include/wctype.h" 3 4
  12574. extern "C" {
  12575.  
  12576.  
  12577.  
  12578.  
  12579. extern wctrans_t wctrans (const char *__property) throw ();
  12580.  
  12581.  
  12582. extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw ();
  12583.  
  12584.  
  12585.  
  12586.  
  12587.  
  12588.  
  12589.  
  12590.  
  12591. extern int iswalnum_l (wint_t __wc, __locale_t __locale) throw ();
  12592.  
  12593.  
  12594.  
  12595.  
  12596.  
  12597. extern int iswalpha_l (wint_t __wc, __locale_t __locale) throw ();
  12598.  
  12599.  
  12600. extern int iswcntrl_l (wint_t __wc, __locale_t __locale) throw ();
  12601.  
  12602.  
  12603.  
  12604. extern int iswdigit_l (wint_t __wc, __locale_t __locale) throw ();
  12605.  
  12606.  
  12607.  
  12608. extern int iswgraph_l (wint_t __wc, __locale_t __locale) throw ();
  12609.  
  12610.  
  12611.  
  12612.  
  12613. extern int iswlower_l (wint_t __wc, __locale_t __locale) throw ();
  12614.  
  12615.  
  12616. extern int iswprint_l (wint_t __wc, __locale_t __locale) throw ();
  12617.  
  12618.  
  12619.  
  12620.  
  12621. extern int iswpunct_l (wint_t __wc, __locale_t __locale) throw ();
  12622.  
  12623.  
  12624.  
  12625.  
  12626. extern int iswspace_l (wint_t __wc, __locale_t __locale) throw ();
  12627.  
  12628.  
  12629.  
  12630.  
  12631. extern int iswupper_l (wint_t __wc, __locale_t __locale) throw ();
  12632.  
  12633.  
  12634.  
  12635.  
  12636. extern int iswxdigit_l (wint_t __wc, __locale_t __locale) throw ();
  12637.  
  12638.  
  12639.  
  12640.  
  12641. extern int iswblank_l (wint_t __wc, __locale_t __locale) throw ();
  12642.  
  12643.  
  12644.  
  12645. extern wctype_t wctype_l (const char *__property, __locale_t __locale)
  12646.      throw ();
  12647.  
  12648.  
  12649.  
  12650. extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale)
  12651.      throw ();
  12652.  
  12653.  
  12654.  
  12655.  
  12656.  
  12657.  
  12658.  
  12659. extern wint_t towlower_l (wint_t __wc, __locale_t __locale) throw ();
  12660.  
  12661.  
  12662. extern wint_t towupper_l (wint_t __wc, __locale_t __locale) throw ();
  12663.  
  12664.  
  12665.  
  12666. extern wctrans_t wctrans_l (const char *__property, __locale_t __locale)
  12667.      throw ();
  12668.  
  12669.  
  12670. extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc,
  12671.       __locale_t __locale) throw ();
  12672.  
  12673.  
  12674.  
  12675. }
  12676. # 51 "/usr/include/c++/5/cwctype" 2 3
  12677. # 80 "/usr/include/c++/5/cwctype" 3
  12678. namespace std
  12679. {
  12680.   using ::wctrans_t;
  12681.   using ::wctype_t;
  12682.   using ::wint_t;
  12683.  
  12684.   using ::iswalnum;
  12685.   using ::iswalpha;
  12686.  
  12687.   using ::iswblank;
  12688.  
  12689.   using ::iswcntrl;
  12690.   using ::iswctype;
  12691.   using ::iswdigit;
  12692.   using ::iswgraph;
  12693.   using ::iswlower;
  12694.   using ::iswprint;
  12695.   using ::iswpunct;
  12696.   using ::iswspace;
  12697.   using ::iswupper;
  12698.   using ::iswxdigit;
  12699.   using ::towctrans;
  12700.   using ::towlower;
  12701.   using ::towupper;
  12702.   using ::wctrans;
  12703.   using ::wctype;
  12704. }
  12705. # 40 "/usr/include/c++/5/bits/locale_facets.h" 2 3
  12706. # 1 "/usr/include/c++/5/cctype" 1 3
  12707. # 39 "/usr/include/c++/5/cctype" 3
  12708.        
  12709. # 40 "/usr/include/c++/5/cctype" 3
  12710. # 41 "/usr/include/c++/5/bits/locale_facets.h" 2 3
  12711. # 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h" 1 3
  12712. # 36 "/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h" 3
  12713. namespace std __attribute__ ((__visibility__ ("default")))
  12714. {
  12715.  
  12716.  
  12717.  
  12718.   struct ctype_base
  12719.   {
  12720.  
  12721.     typedef const int* __to_type;
  12722.  
  12723.  
  12724.  
  12725.     typedef unsigned short mask;
  12726.     static const mask upper = _ISupper;
  12727.     static const mask lower = _ISlower;
  12728.     static const mask alpha = _ISalpha;
  12729.     static const mask digit = _ISdigit;
  12730.     static const mask xdigit = _ISxdigit;
  12731.     static const mask space = _ISspace;
  12732.     static const mask print = _ISprint;
  12733.     static const mask graph = _ISalpha | _ISdigit | _ISpunct;
  12734.     static const mask cntrl = _IScntrl;
  12735.     static const mask punct = _ISpunct;
  12736.     static const mask alnum = _ISalpha | _ISdigit;
  12737.  
  12738.  
  12739.  
  12740.   };
  12741.  
  12742.  
  12743. }
  12744. # 42 "/usr/include/c++/5/bits/locale_facets.h" 2 3
  12745.  
  12746.  
  12747.  
  12748.  
  12749.  
  12750.  
  12751. # 1 "/usr/include/c++/5/bits/streambuf_iterator.h" 1 3
  12752. # 33 "/usr/include/c++/5/bits/streambuf_iterator.h" 3
  12753.        
  12754. # 34 "/usr/include/c++/5/bits/streambuf_iterator.h" 3
  12755.  
  12756.  
  12757.  
  12758.  
  12759. namespace std __attribute__ ((__visibility__ ("default")))
  12760. {
  12761.  
  12762. # 49 "/usr/include/c++/5/bits/streambuf_iterator.h" 3
  12763.   template<typename _CharT, typename _Traits>
  12764.     class istreambuf_iterator
  12765.     : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type,
  12766.                       _CharT*,
  12767.  
  12768.  
  12769.  
  12770.  
  12771.         _CharT&>
  12772.  
  12773.     {
  12774.     public:
  12775.  
  12776.  
  12777.  
  12778.       typedef _CharT char_type;
  12779.       typedef _Traits traits_type;
  12780.       typedef typename _Traits::int_type int_type;
  12781.       typedef basic_streambuf<_CharT, _Traits> streambuf_type;
  12782.       typedef basic_istream<_CharT, _Traits> istream_type;
  12783.  
  12784.  
  12785.       template<typename _CharT2>
  12786.  friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  12787.                       ostreambuf_iterator<_CharT2> >::__type
  12788.  copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
  12789.       ostreambuf_iterator<_CharT2>);
  12790.  
  12791.       template<bool _IsMove, typename _CharT2>
  12792.  friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  12793.             _CharT2*>::__type
  12794.  __copy_move_a2(istreambuf_iterator<_CharT2>,
  12795.          istreambuf_iterator<_CharT2>, _CharT2*);
  12796.  
  12797.       template<typename _CharT2>
  12798.  friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  12799.                istreambuf_iterator<_CharT2> >::__type
  12800.  find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
  12801.       const _CharT2&);
  12802.  
  12803.     private:
  12804.  
  12805.  
  12806.  
  12807.  
  12808.  
  12809.  
  12810.  
  12811.       mutable streambuf_type* _M_sbuf;
  12812.       mutable int_type _M_c;
  12813.  
  12814.     public:
  12815.  
  12816.       istreambuf_iterator() throw()
  12817.       : _M_sbuf(0), _M_c(traits_type::eof()) { }
  12818. # 112 "/usr/include/c++/5/bits/streambuf_iterator.h" 3
  12819.       istreambuf_iterator(istream_type& __s) throw()
  12820.       : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
  12821.  
  12822.  
  12823.       istreambuf_iterator(streambuf_type* __s) throw()
  12824.       : _M_sbuf(__s), _M_c(traits_type::eof()) { }
  12825.  
  12826.  
  12827.  
  12828.  
  12829.       char_type
  12830.       operator*() const
  12831.       {
  12832.  
  12833.  
  12834.  
  12835.  
  12836.  
  12837.  
  12838.  
  12839.  return traits_type::to_char_type(_M_get());
  12840.       }
  12841.  
  12842.  
  12843.       istreambuf_iterator&
  12844.       operator++()
  12845.       {
  12846.  
  12847.  
  12848.                         ;
  12849.  if (_M_sbuf)
  12850.    {
  12851.      _M_sbuf->sbumpc();
  12852.      _M_c = traits_type::eof();
  12853.    }
  12854.  return *this;
  12855.       }
  12856.  
  12857.  
  12858.       istreambuf_iterator
  12859.       operator++(int)
  12860.       {
  12861.  
  12862.  
  12863.                         ;
  12864.  
  12865.  istreambuf_iterator __old = *this;
  12866.  if (_M_sbuf)
  12867.    {
  12868.      __old._M_c = _M_sbuf->sbumpc();
  12869.      _M_c = traits_type::eof();
  12870.    }
  12871.  return __old;
  12872.       }
  12873.  
  12874.  
  12875.  
  12876.  
  12877.  
  12878.       bool
  12879.       equal(const istreambuf_iterator& __b) const
  12880.       { return _M_at_eof() == __b._M_at_eof(); }
  12881.  
  12882.     private:
  12883.       int_type
  12884.       _M_get() const
  12885.       {
  12886.  const int_type __eof = traits_type::eof();
  12887.  int_type __ret = __eof;
  12888.  if (_M_sbuf)
  12889.    {
  12890.      if (!traits_type::eq_int_type(_M_c, __eof))
  12891.        __ret = _M_c;
  12892.      else if (!traits_type::eq_int_type((__ret = _M_sbuf->sgetc()),
  12893.             __eof))
  12894.        _M_c = __ret;
  12895.      else
  12896.        _M_sbuf = 0;
  12897.    }
  12898.  return __ret;
  12899.       }
  12900.  
  12901.       bool
  12902.       _M_at_eof() const
  12903.       {
  12904.  const int_type __eof = traits_type::eof();
  12905.  return traits_type::eq_int_type(_M_get(), __eof);
  12906.       }
  12907.     };
  12908.  
  12909.   template<typename _CharT, typename _Traits>
  12910.     inline bool
  12911.     operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
  12912.         const istreambuf_iterator<_CharT, _Traits>& __b)
  12913.     { return __a.equal(__b); }
  12914.  
  12915.   template<typename _CharT, typename _Traits>
  12916.     inline bool
  12917.     operator!=(const istreambuf_iterator<_CharT, _Traits>& __a,
  12918.         const istreambuf_iterator<_CharT, _Traits>& __b)
  12919.     { return !__a.equal(__b); }
  12920.  
  12921.  
  12922.   template<typename _CharT, typename _Traits>
  12923.     class ostreambuf_iterator
  12924.     : public iterator<output_iterator_tag, void, void, void, void>
  12925.     {
  12926.     public:
  12927.  
  12928.  
  12929.  
  12930.       typedef _CharT char_type;
  12931.       typedef _Traits traits_type;
  12932.       typedef basic_streambuf<_CharT, _Traits> streambuf_type;
  12933.       typedef basic_ostream<_CharT, _Traits> ostream_type;
  12934.  
  12935.  
  12936.       template<typename _CharT2>
  12937.  friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
  12938.                       ostreambuf_iterator<_CharT2> >::__type
  12939.  copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
  12940.       ostreambuf_iterator<_CharT2>);
  12941.  
  12942.     private:
  12943.       streambuf_type* _M_sbuf;
  12944.       bool _M_failed;
  12945.  
  12946.     public:
  12947.  
  12948.       ostreambuf_iterator(ostream_type& __s) throw()
  12949.       : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { }
  12950.  
  12951.  
  12952.       ostreambuf_iterator(streambuf_type* __s) throw()
  12953.       : _M_sbuf(__s), _M_failed(!_M_sbuf) { }
  12954.  
  12955.  
  12956.       ostreambuf_iterator&
  12957.       operator=(_CharT __c)
  12958.       {
  12959.  if (!_M_failed &&
  12960.      _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof()))
  12961.    _M_failed = true;
  12962.  return *this;
  12963.       }
  12964.  
  12965.  
  12966.       ostreambuf_iterator&
  12967.       operator*()
  12968.       { return *this; }
  12969.  
  12970.  
  12971.       ostreambuf_iterator&
  12972.       operator++(int)
  12973.       { return *this; }
  12974.  
  12975.  
  12976.       ostreambuf_iterator&
  12977.       operator++()
  12978.       { return *this; }
  12979.  
  12980.  
  12981.       bool
  12982.       failed() const throw()
  12983.       { return _M_failed; }
  12984.  
  12985.       ostreambuf_iterator&
  12986.       _M_put(const _CharT* __ws, streamsize __len)
  12987.       {
  12988.  if (__builtin_expect(!_M_failed, true)
  12989.      && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len,
  12990.     false))
  12991.    _M_failed = true;
  12992.  return *this;
  12993.       }
  12994.     };
  12995.  
  12996.  
  12997.   template<typename _CharT>
  12998.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  12999.                            ostreambuf_iterator<_CharT> >::__type
  13000.     copy(istreambuf_iterator<_CharT> __first,
  13001.   istreambuf_iterator<_CharT> __last,
  13002.   ostreambuf_iterator<_CharT> __result)
  13003.     {
  13004.       if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed)
  13005.  {
  13006.    bool __ineof;
  13007.    __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof);
  13008.    if (!__ineof)
  13009.      __result._M_failed = true;
  13010.  }
  13011.       return __result;
  13012.     }
  13013.  
  13014.   template<bool _IsMove, typename _CharT>
  13015.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  13016.             ostreambuf_iterator<_CharT> >::__type
  13017.     __copy_move_a2(_CharT* __first, _CharT* __last,
  13018.      ostreambuf_iterator<_CharT> __result)
  13019.     {
  13020.       const streamsize __num = __last - __first;
  13021.       if (__num > 0)
  13022.  __result._M_put(__first, __num);
  13023.       return __result;
  13024.     }
  13025.  
  13026.   template<bool _IsMove, typename _CharT>
  13027.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  13028.         ostreambuf_iterator<_CharT> >::__type
  13029.     __copy_move_a2(const _CharT* __first, const _CharT* __last,
  13030.      ostreambuf_iterator<_CharT> __result)
  13031.     {
  13032.       const streamsize __num = __last - __first;
  13033.       if (__num > 0)
  13034.  __result._M_put(__first, __num);
  13035.       return __result;
  13036.     }
  13037.  
  13038.   template<bool _IsMove, typename _CharT>
  13039.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  13040.             _CharT*>::__type
  13041.     __copy_move_a2(istreambuf_iterator<_CharT> __first,
  13042.      istreambuf_iterator<_CharT> __last, _CharT* __result)
  13043.     {
  13044.       typedef istreambuf_iterator<_CharT> __is_iterator_type;
  13045.       typedef typename __is_iterator_type::traits_type traits_type;
  13046.       typedef typename __is_iterator_type::streambuf_type streambuf_type;
  13047.       typedef typename traits_type::int_type int_type;
  13048.  
  13049.       if (__first._M_sbuf && !__last._M_sbuf)
  13050.  {
  13051.    streambuf_type* __sb = __first._M_sbuf;
  13052.    int_type __c = __sb->sgetc();
  13053.    while (!traits_type::eq_int_type(__c, traits_type::eof()))
  13054.      {
  13055.        const streamsize __n = __sb->egptr() - __sb->gptr();
  13056.        if (__n > 1)
  13057.   {
  13058.     traits_type::copy(__result, __sb->gptr(), __n);
  13059.     __sb->__safe_gbump(__n);
  13060.     __result += __n;
  13061.     __c = __sb->underflow();
  13062.   }
  13063.        else
  13064.   {
  13065.     *__result++ = traits_type::to_char_type(__c);
  13066.     __c = __sb->snextc();
  13067.   }
  13068.      }
  13069.  }
  13070.       return __result;
  13071.     }
  13072.  
  13073.   template<typename _CharT>
  13074.     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
  13075.           istreambuf_iterator<_CharT> >::__type
  13076.     find(istreambuf_iterator<_CharT> __first,
  13077.   istreambuf_iterator<_CharT> __last, const _CharT& __val)
  13078.     {
  13079.       typedef istreambuf_iterator<_CharT> __is_iterator_type;
  13080.       typedef typename __is_iterator_type::traits_type traits_type;
  13081.       typedef typename __is_iterator_type::streambuf_type streambuf_type;
  13082.       typedef typename traits_type::int_type int_type;
  13083.  
  13084.       if (__first._M_sbuf && !__last._M_sbuf)
  13085.  {
  13086.    const int_type __ival = traits_type::to_int_type(__val);
  13087.    streambuf_type* __sb = __first._M_sbuf;
  13088.    int_type __c = __sb->sgetc();
  13089.    while (!traits_type::eq_int_type(__c, traits_type::eof())
  13090.    && !traits_type::eq_int_type(__c, __ival))
  13091.      {
  13092.        streamsize __n = __sb->egptr() - __sb->gptr();
  13093.        if (__n > 1)
  13094.   {
  13095.     const _CharT* __p = traits_type::find(__sb->gptr(),
  13096.        __n, __val);
  13097.     if (__p)
  13098.       __n = __p - __sb->gptr();
  13099.     __sb->__safe_gbump(__n);
  13100.     __c = __sb->sgetc();
  13101.   }
  13102.        else
  13103.   __c = __sb->snextc();
  13104.      }
  13105.  
  13106.    if (!traits_type::eq_int_type(__c, traits_type::eof()))
  13107.      __first._M_c = __c;
  13108.    else
  13109.      __first._M_sbuf = 0;
  13110.  }
  13111.       return __first;
  13112.     }
  13113.  
  13114.  
  13115.  
  13116.  
  13117. }
  13118. # 49 "/usr/include/c++/5/bits/locale_facets.h" 2 3
  13119.  
  13120. namespace std __attribute__ ((__visibility__ ("default")))
  13121. {
  13122.  
  13123. # 71 "/usr/include/c++/5/bits/locale_facets.h" 3
  13124.   template<typename _Tp>
  13125.     void
  13126.     __convert_to_v(const char*, _Tp&, ios_base::iostate&,
  13127.      const __c_locale&) throw();
  13128.  
  13129.  
  13130.   template<>
  13131.     void
  13132.     __convert_to_v(const char*, float&, ios_base::iostate&,
  13133.      const __c_locale&) throw();
  13134.  
  13135.   template<>
  13136.     void
  13137.     __convert_to_v(const char*, double&, ios_base::iostate&,
  13138.      const __c_locale&) throw();
  13139.  
  13140.   template<>
  13141.     void
  13142.     __convert_to_v(const char*, long double&, ios_base::iostate&,
  13143.      const __c_locale&) throw();
  13144.  
  13145.  
  13146.  
  13147.   template<typename _CharT, typename _Traits>
  13148.     struct __pad
  13149.     {
  13150.       static void
  13151.       _S_pad(ios_base& __io, _CharT __fill, _CharT* __news,
  13152.       const _CharT* __olds, streamsize __newlen, streamsize __oldlen);
  13153.     };
  13154.  
  13155.  
  13156.  
  13157.  
  13158.  
  13159.  
  13160.   template<typename _CharT>
  13161.     _CharT*
  13162.     __add_grouping(_CharT* __s, _CharT __sep,
  13163.      const char* __gbeg, size_t __gsize,
  13164.      const _CharT* __first, const _CharT* __last);
  13165.  
  13166.  
  13167.  
  13168.  
  13169.   template<typename _CharT>
  13170.     inline
  13171.     ostreambuf_iterator<_CharT>
  13172.     __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len)
  13173.     {
  13174.       __s._M_put(__ws, __len);
  13175.       return __s;
  13176.     }
  13177.  
  13178.  
  13179.   template<typename _CharT, typename _OutIter>
  13180.     inline
  13181.     _OutIter
  13182.     __write(_OutIter __s, const _CharT* __ws, int __len)
  13183.     {
  13184.       for (int __j = 0; __j < __len; __j++, ++__s)
  13185.  *__s = __ws[__j];
  13186.       return __s;
  13187.     }
  13188. # 149 "/usr/include/c++/5/bits/locale_facets.h" 3
  13189.   template<typename _CharT>
  13190.     class __ctype_abstract_base : public locale::facet, public ctype_base
  13191.     {
  13192.     public:
  13193.  
  13194.  
  13195.       typedef _CharT char_type;
  13196. # 168 "/usr/include/c++/5/bits/locale_facets.h" 3
  13197.       bool
  13198.       is(mask __m, char_type __c) const
  13199.       { return this->do_is(__m, __c); }
  13200. # 185 "/usr/include/c++/5/bits/locale_facets.h" 3
  13201.       const char_type*
  13202.       is(const char_type *__lo, const char_type *__hi, mask *__vec) const
  13203.       { return this->do_is(__lo, __hi, __vec); }
  13204. # 201 "/usr/include/c++/5/bits/locale_facets.h" 3
  13205.       const char_type*
  13206.       scan_is(mask __m, const char_type* __lo, const char_type* __hi) const
  13207.       { return this->do_scan_is(__m, __lo, __hi); }
  13208. # 217 "/usr/include/c++/5/bits/locale_facets.h" 3
  13209.       const char_type*
  13210.       scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
  13211.       { return this->do_scan_not(__m, __lo, __hi); }
  13212. # 231 "/usr/include/c++/5/bits/locale_facets.h" 3
  13213.       char_type
  13214.       toupper(char_type __c) const
  13215.       { return this->do_toupper(__c); }
  13216. # 246 "/usr/include/c++/5/bits/locale_facets.h" 3
  13217.       const char_type*
  13218.       toupper(char_type *__lo, const char_type* __hi) const
  13219.       { return this->do_toupper(__lo, __hi); }
  13220. # 260 "/usr/include/c++/5/bits/locale_facets.h" 3
  13221.       char_type
  13222.       tolower(char_type __c) const
  13223.       { return this->do_tolower(__c); }
  13224. # 275 "/usr/include/c++/5/bits/locale_facets.h" 3
  13225.       const char_type*
  13226.       tolower(char_type* __lo, const char_type* __hi) const
  13227.       { return this->do_tolower(__lo, __hi); }
  13228. # 292 "/usr/include/c++/5/bits/locale_facets.h" 3
  13229.       char_type
  13230.       widen(char __c) const
  13231.       { return this->do_widen(__c); }
  13232. # 311 "/usr/include/c++/5/bits/locale_facets.h" 3
  13233.       const char*
  13234.       widen(const char* __lo, const char* __hi, char_type* __to) const
  13235.       { return this->do_widen(__lo, __hi, __to); }
  13236. # 330 "/usr/include/c++/5/bits/locale_facets.h" 3
  13237.       char
  13238.       narrow(char_type __c, char __dfault) const
  13239.       { return this->do_narrow(__c, __dfault); }
  13240. # 352 "/usr/include/c++/5/bits/locale_facets.h" 3
  13241.       const char_type*
  13242.       narrow(const char_type* __lo, const char_type* __hi,
  13243.        char __dfault, char* __to) const
  13244.       { return this->do_narrow(__lo, __hi, __dfault, __to); }
  13245.  
  13246.     protected:
  13247.       explicit
  13248.       __ctype_abstract_base(size_t __refs = 0): facet(__refs) { }
  13249.  
  13250.       virtual
  13251.       ~__ctype_abstract_base() { }
  13252. # 377 "/usr/include/c++/5/bits/locale_facets.h" 3
  13253.       virtual bool
  13254.       do_is(mask __m, char_type __c) const = 0;
  13255. # 396 "/usr/include/c++/5/bits/locale_facets.h" 3
  13256.       virtual const char_type*
  13257.       do_is(const char_type* __lo, const char_type* __hi,
  13258.      mask* __vec) const = 0;
  13259. # 415 "/usr/include/c++/5/bits/locale_facets.h" 3
  13260.       virtual const char_type*
  13261.       do_scan_is(mask __m, const char_type* __lo,
  13262.    const char_type* __hi) const = 0;
  13263. # 434 "/usr/include/c++/5/bits/locale_facets.h" 3
  13264.       virtual const char_type*
  13265.       do_scan_not(mask __m, const char_type* __lo,
  13266.     const char_type* __hi) const = 0;
  13267. # 452 "/usr/include/c++/5/bits/locale_facets.h" 3
  13268.       virtual char_type
  13269.       do_toupper(char_type __c) const = 0;
  13270. # 469 "/usr/include/c++/5/bits/locale_facets.h" 3
  13271.       virtual const char_type*
  13272.       do_toupper(char_type* __lo, const char_type* __hi) const = 0;
  13273. # 485 "/usr/include/c++/5/bits/locale_facets.h" 3
  13274.       virtual char_type
  13275.       do_tolower(char_type __c) const = 0;
  13276. # 502 "/usr/include/c++/5/bits/locale_facets.h" 3
  13277.       virtual const char_type*
  13278.       do_tolower(char_type* __lo, const char_type* __hi) const = 0;
  13279. # 521 "/usr/include/c++/5/bits/locale_facets.h" 3
  13280.       virtual char_type
  13281.       do_widen(char __c) const = 0;
  13282. # 542 "/usr/include/c++/5/bits/locale_facets.h" 3
  13283.       virtual const char*
  13284.       do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0;
  13285. # 563 "/usr/include/c++/5/bits/locale_facets.h" 3
  13286.       virtual char
  13287.       do_narrow(char_type __c, char __dfault) const = 0;
  13288. # 588 "/usr/include/c++/5/bits/locale_facets.h" 3
  13289.       virtual const char_type*
  13290.       do_narrow(const char_type* __lo, const char_type* __hi,
  13291.   char __dfault, char* __to) const = 0;
  13292.     };
  13293. # 611 "/usr/include/c++/5/bits/locale_facets.h" 3
  13294.   template<typename _CharT>
  13295.     class ctype : public __ctype_abstract_base<_CharT>
  13296.     {
  13297.     public:
  13298.  
  13299.       typedef _CharT char_type;
  13300.       typedef typename __ctype_abstract_base<_CharT>::mask mask;
  13301.  
  13302.  
  13303.       static locale::id id;
  13304.  
  13305.       explicit
  13306.       ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { }
  13307.  
  13308.    protected:
  13309.       virtual
  13310.       ~ctype();
  13311.  
  13312.       virtual bool
  13313.       do_is(mask __m, char_type __c) const;
  13314.  
  13315.       virtual const char_type*
  13316.       do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
  13317.  
  13318.       virtual const char_type*
  13319.       do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
  13320.  
  13321.       virtual const char_type*
  13322.       do_scan_not(mask __m, const char_type* __lo,
  13323.     const char_type* __hi) const;
  13324.  
  13325.       virtual char_type
  13326.       do_toupper(char_type __c) const;
  13327.  
  13328.       virtual const char_type*
  13329.       do_toupper(char_type* __lo, const char_type* __hi) const;
  13330.  
  13331.       virtual char_type
  13332.       do_tolower(char_type __c) const;
  13333.  
  13334.       virtual const char_type*
  13335.       do_tolower(char_type* __lo, const char_type* __hi) const;
  13336.  
  13337.       virtual char_type
  13338.       do_widen(char __c) const;
  13339.  
  13340.       virtual const char*
  13341.       do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
  13342.  
  13343.       virtual char
  13344.       do_narrow(char_type, char __dfault) const;
  13345.  
  13346.       virtual const char_type*
  13347.       do_narrow(const char_type* __lo, const char_type* __hi,
  13348.   char __dfault, char* __to) const;
  13349.     };
  13350.  
  13351.   template<typename _CharT>
  13352.     locale::id ctype<_CharT>::id;
  13353. # 680 "/usr/include/c++/5/bits/locale_facets.h" 3
  13354.   template<>
  13355.     class ctype<char> : public locale::facet, public ctype_base
  13356.     {
  13357.     public:
  13358.  
  13359.  
  13360.       typedef char char_type;
  13361.  
  13362.     protected:
  13363.  
  13364.       __c_locale _M_c_locale_ctype;
  13365.       bool _M_del;
  13366.       __to_type _M_toupper;
  13367.       __to_type _M_tolower;
  13368.       const mask* _M_table;
  13369.       mutable char _M_widen_ok;
  13370.       mutable char _M_widen[1 + static_cast<unsigned char>(-1)];
  13371.       mutable char _M_narrow[1 + static_cast<unsigned char>(-1)];
  13372.       mutable char _M_narrow_ok;
  13373.  
  13374.  
  13375.     public:
  13376.  
  13377.       static locale::id id;
  13378.  
  13379.       static const size_t table_size = 1 + static_cast<unsigned char>(-1);
  13380. # 717 "/usr/include/c++/5/bits/locale_facets.h" 3
  13381.       explicit
  13382.       ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0);
  13383. # 730 "/usr/include/c++/5/bits/locale_facets.h" 3
  13384.       explicit
  13385.       ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false,
  13386.      size_t __refs = 0);
  13387. # 743 "/usr/include/c++/5/bits/locale_facets.h" 3
  13388.       inline bool
  13389.       is(mask __m, char __c) const;
  13390. # 758 "/usr/include/c++/5/bits/locale_facets.h" 3
  13391.       inline const char*
  13392.       is(const char* __lo, const char* __hi, mask* __vec) const;
  13393. # 772 "/usr/include/c++/5/bits/locale_facets.h" 3
  13394.       inline const char*
  13395.       scan_is(mask __m, const char* __lo, const char* __hi) const;
  13396. # 786 "/usr/include/c++/5/bits/locale_facets.h" 3
  13397.       inline const char*
  13398.       scan_not(mask __m, const char* __lo, const char* __hi) const;
  13399. # 801 "/usr/include/c++/5/bits/locale_facets.h" 3
  13400.       char_type
  13401.       toupper(char_type __c) const
  13402.       { return this->do_toupper(__c); }
  13403. # 818 "/usr/include/c++/5/bits/locale_facets.h" 3
  13404.       const char_type*
  13405.       toupper(char_type *__lo, const char_type* __hi) const
  13406.       { return this->do_toupper(__lo, __hi); }
  13407. # 834 "/usr/include/c++/5/bits/locale_facets.h" 3
  13408.       char_type
  13409.       tolower(char_type __c) const
  13410.       { return this->do_tolower(__c); }
  13411. # 851 "/usr/include/c++/5/bits/locale_facets.h" 3
  13412.       const char_type*
  13413.       tolower(char_type* __lo, const char_type* __hi) const
  13414.       { return this->do_tolower(__lo, __hi); }
  13415. # 871 "/usr/include/c++/5/bits/locale_facets.h" 3
  13416.       char_type
  13417.       widen(char __c) const
  13418.       {
  13419.  if (_M_widen_ok)
  13420.    return _M_widen[static_cast<unsigned char>(__c)];
  13421.  this->_M_widen_init();
  13422.  return this->do_widen(__c);
  13423.       }
  13424. # 898 "/usr/include/c++/5/bits/locale_facets.h" 3
  13425.       const char*
  13426.       widen(const char* __lo, const char* __hi, char_type* __to) const
  13427.       {
  13428.  if (_M_widen_ok == 1)
  13429.    {
  13430.      __builtin_memcpy(__to, __lo, __hi - __lo);
  13431.      return __hi;
  13432.    }
  13433.  if (!_M_widen_ok)
  13434.    _M_widen_init();
  13435.  return this->do_widen(__lo, __hi, __to);
  13436.       }
  13437. # 929 "/usr/include/c++/5/bits/locale_facets.h" 3
  13438.       char
  13439.       narrow(char_type __c, char __dfault) const
  13440.       {
  13441.  if (_M_narrow[static_cast<unsigned char>(__c)])
  13442.    return _M_narrow[static_cast<unsigned char>(__c)];
  13443.  const char __t = do_narrow(__c, __dfault);
  13444.  if (__t != __dfault)
  13445.    _M_narrow[static_cast<unsigned char>(__c)] = __t;
  13446.  return __t;
  13447.       }
  13448. # 962 "/usr/include/c++/5/bits/locale_facets.h" 3
  13449.       const char_type*
  13450.       narrow(const char_type* __lo, const char_type* __hi,
  13451.       char __dfault, char* __to) const
  13452.       {
  13453.  if (__builtin_expect(_M_narrow_ok == 1, true))
  13454.    {
  13455.      __builtin_memcpy(__to, __lo, __hi - __lo);
  13456.      return __hi;
  13457.    }
  13458.  if (!_M_narrow_ok)
  13459.    _M_narrow_init();
  13460.  return this->do_narrow(__lo, __hi, __dfault, __to);
  13461.       }
  13462.  
  13463.  
  13464.  
  13465.  
  13466.  
  13467.       const mask*
  13468.       table() const throw()
  13469.       { return _M_table; }
  13470.  
  13471.  
  13472.       static const mask*
  13473.       classic_table() throw();
  13474.     protected:
  13475.  
  13476.  
  13477.  
  13478.  
  13479.  
  13480.  
  13481.  
  13482.       virtual
  13483.       ~ctype();
  13484. # 1011 "/usr/include/c++/5/bits/locale_facets.h" 3
  13485.       virtual char_type
  13486.       do_toupper(char_type __c) const;
  13487. # 1028 "/usr/include/c++/5/bits/locale_facets.h" 3
  13488.       virtual const char_type*
  13489.       do_toupper(char_type* __lo, const char_type* __hi) const;
  13490. # 1044 "/usr/include/c++/5/bits/locale_facets.h" 3
  13491.       virtual char_type
  13492.       do_tolower(char_type __c) const;
  13493. # 1061 "/usr/include/c++/5/bits/locale_facets.h" 3
  13494.       virtual const char_type*
  13495.       do_tolower(char_type* __lo, const char_type* __hi) const;
  13496. # 1081 "/usr/include/c++/5/bits/locale_facets.h" 3
  13497.       virtual char_type
  13498.       do_widen(char __c) const
  13499.       { return __c; }
  13500. # 1104 "/usr/include/c++/5/bits/locale_facets.h" 3
  13501.       virtual const char*
  13502.       do_widen(const char* __lo, const char* __hi, char_type* __to) const
  13503.       {
  13504.  __builtin_memcpy(__to, __lo, __hi - __lo);
  13505.  return __hi;
  13506.       }
  13507. # 1130 "/usr/include/c++/5/bits/locale_facets.h" 3
  13508.       virtual char
  13509.       do_narrow(char_type __c, char __dfault) const
  13510.       { return __c; }
  13511. # 1156 "/usr/include/c++/5/bits/locale_facets.h" 3
  13512.       virtual const char_type*
  13513.       do_narrow(const char_type* __lo, const char_type* __hi,
  13514.   char __dfault, char* __to) const
  13515.       {
  13516.  __builtin_memcpy(__to, __lo, __hi - __lo);
  13517.  return __hi;
  13518.       }
  13519.  
  13520.     private:
  13521.       void _M_narrow_init() const;
  13522.       void _M_widen_init() const;
  13523.     };
  13524. # 1181 "/usr/include/c++/5/bits/locale_facets.h" 3
  13525.   template<>
  13526.     class ctype<wchar_t> : public __ctype_abstract_base<wchar_t>
  13527.     {
  13528.     public:
  13529.  
  13530.  
  13531.       typedef wchar_t char_type;
  13532.       typedef wctype_t __wmask_type;
  13533.  
  13534.     protected:
  13535.       __c_locale _M_c_locale_ctype;
  13536.  
  13537.  
  13538.       bool _M_narrow_ok;
  13539.       char _M_narrow[128];
  13540.       wint_t _M_widen[1 + static_cast<unsigned char>(-1)];
  13541.  
  13542.  
  13543.       mask _M_bit[16];
  13544.       __wmask_type _M_wmask[16];
  13545.  
  13546.     public:
  13547.  
  13548.  
  13549.       static locale::id id;
  13550. # 1214 "/usr/include/c++/5/bits/locale_facets.h" 3
  13551.       explicit
  13552.       ctype(size_t __refs = 0);
  13553. # 1225 "/usr/include/c++/5/bits/locale_facets.h" 3
  13554.       explicit
  13555.       ctype(__c_locale __cloc, size_t __refs = 0);
  13556.  
  13557.     protected:
  13558.       __wmask_type
  13559.       _M_convert_to_wmask(const mask __m) const throw();
  13560.  
  13561.  
  13562.       virtual
  13563.       ~ctype();
  13564. # 1249 "/usr/include/c++/5/bits/locale_facets.h" 3
  13565.       virtual bool
  13566.       do_is(mask __m, char_type __c) const;
  13567. # 1268 "/usr/include/c++/5/bits/locale_facets.h" 3
  13568.       virtual const char_type*
  13569.       do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
  13570. # 1286 "/usr/include/c++/5/bits/locale_facets.h" 3
  13571.       virtual const char_type*
  13572.       do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
  13573. # 1304 "/usr/include/c++/5/bits/locale_facets.h" 3
  13574.       virtual const char_type*
  13575.       do_scan_not(mask __m, const char_type* __lo,
  13576.     const char_type* __hi) const;
  13577. # 1321 "/usr/include/c++/5/bits/locale_facets.h" 3
  13578.       virtual char_type
  13579.       do_toupper(char_type __c) const;
  13580. # 1338 "/usr/include/c++/5/bits/locale_facets.h" 3
  13581.       virtual const char_type*
  13582.       do_toupper(char_type* __lo, const char_type* __hi) const;
  13583. # 1354 "/usr/include/c++/5/bits/locale_facets.h" 3
  13584.       virtual char_type
  13585.       do_tolower(char_type __c) const;
  13586. # 1371 "/usr/include/c++/5/bits/locale_facets.h" 3
  13587.       virtual const char_type*
  13588.       do_tolower(char_type* __lo, const char_type* __hi) const;
  13589. # 1391 "/usr/include/c++/5/bits/locale_facets.h" 3
  13590.       virtual char_type
  13591.       do_widen(char __c) const;
  13592. # 1413 "/usr/include/c++/5/bits/locale_facets.h" 3
  13593.       virtual const char*
  13594.       do_widen(const char* __lo, const char* __hi, char_type* __to) const;
  13595. # 1436 "/usr/include/c++/5/bits/locale_facets.h" 3
  13596.       virtual char
  13597.       do_narrow(char_type __c, char __dfault) const;
  13598. # 1462 "/usr/include/c++/5/bits/locale_facets.h" 3
  13599.       virtual const char_type*
  13600.       do_narrow(const char_type* __lo, const char_type* __hi,
  13601.   char __dfault, char* __to) const;
  13602.  
  13603.  
  13604.       void
  13605.       _M_initialize_ctype() throw();
  13606.     };
  13607.  
  13608.  
  13609.  
  13610.   template<typename _CharT>
  13611.     class ctype_byname : public ctype<_CharT>
  13612.     {
  13613.     public:
  13614.       typedef typename ctype<_CharT>::mask mask;
  13615.  
  13616.       explicit
  13617.       ctype_byname(const char* __s, size_t __refs = 0);
  13618.  
  13619.  
  13620.  
  13621.  
  13622.  
  13623.  
  13624.  
  13625.     protected:
  13626.       virtual
  13627.       ~ctype_byname() { };
  13628.     };
  13629.  
  13630.  
  13631.   template<>
  13632.     class ctype_byname<char> : public ctype<char>
  13633.     {
  13634.     public:
  13635.       explicit
  13636.       ctype_byname(const char* __s, size_t __refs = 0);
  13637.  
  13638.  
  13639.  
  13640.  
  13641.  
  13642.  
  13643.     protected:
  13644.       virtual
  13645.       ~ctype_byname();
  13646.     };
  13647.  
  13648.  
  13649.   template<>
  13650.     class ctype_byname<wchar_t> : public ctype<wchar_t>
  13651.     {
  13652.     public:
  13653.       explicit
  13654.       ctype_byname(const char* __s, size_t __refs = 0);
  13655.  
  13656.  
  13657.  
  13658.  
  13659.  
  13660.  
  13661.     protected:
  13662.       virtual
  13663.       ~ctype_byname();
  13664.     };
  13665.  
  13666.  
  13667.  
  13668. }
  13669.  
  13670.  
  13671. # 1 "/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h" 1 3
  13672. # 37 "/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h" 3
  13673. namespace std __attribute__ ((__visibility__ ("default")))
  13674. {
  13675.  
  13676.  
  13677.   bool
  13678.   ctype<char>::
  13679.   is(mask __m, char __c) const
  13680.   { return _M_table[static_cast<unsigned char>(__c)] & __m; }
  13681.  
  13682.   const char*
  13683.   ctype<char>::
  13684.   is(const char* __low, const char* __high, mask* __vec) const
  13685.   {
  13686.     while (__low < __high)
  13687.       *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
  13688.     return __high;
  13689.   }
  13690.  
  13691.   const char*
  13692.   ctype<char>::
  13693.   scan_is(mask __m, const char* __low, const char* __high) const
  13694.   {
  13695.     while (__low < __high
  13696.     && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
  13697.       ++__low;
  13698.     return __low;
  13699.   }
  13700.  
  13701.   const char*
  13702.   ctype<char>::
  13703.   scan_not(mask __m, const char* __low, const char* __high) const
  13704.   {
  13705.     while (__low < __high
  13706.     && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
  13707.       ++__low;
  13708.     return __low;
  13709.   }
  13710.  
  13711.  
  13712. }
  13713. # 1535 "/usr/include/c++/5/bits/locale_facets.h" 2 3
  13714.  
  13715. namespace std __attribute__ ((__visibility__ ("default")))
  13716. {
  13717.  
  13718.  
  13719.  
  13720.   class __num_base
  13721.   {
  13722.   public:
  13723.  
  13724.  
  13725.     enum
  13726.       {
  13727.  _S_ominus,
  13728.  _S_oplus,
  13729.  _S_ox,
  13730.  _S_oX,
  13731.  _S_odigits,
  13732.  _S_odigits_end = _S_odigits + 16,
  13733.  _S_oudigits = _S_odigits_end,
  13734.  _S_oudigits_end = _S_oudigits + 16,
  13735.  _S_oe = _S_odigits + 14,
  13736.  _S_oE = _S_oudigits + 14,
  13737.  _S_oend = _S_oudigits_end
  13738.       };
  13739.  
  13740.  
  13741.  
  13742.  
  13743.  
  13744.  
  13745.     static const char* _S_atoms_out;
  13746.  
  13747.  
  13748.  
  13749.     static const char* _S_atoms_in;
  13750.  
  13751.     enum
  13752.     {
  13753.       _S_iminus,
  13754.       _S_iplus,
  13755.       _S_ix,
  13756.       _S_iX,
  13757.       _S_izero,
  13758.       _S_ie = _S_izero + 14,
  13759.       _S_iE = _S_izero + 20,
  13760.       _S_iend = 26
  13761.     };
  13762.  
  13763.  
  13764.  
  13765.     static void
  13766.     _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw();
  13767.   };
  13768.  
  13769.   template<typename _CharT>
  13770.     struct __numpunct_cache : public locale::facet
  13771.     {
  13772.       const char* _M_grouping;
  13773.       size_t _M_grouping_size;
  13774.       bool _M_use_grouping;
  13775.       const _CharT* _M_truename;
  13776.       size_t _M_truename_size;
  13777.       const _CharT* _M_falsename;
  13778.       size_t _M_falsename_size;
  13779.       _CharT _M_decimal_point;
  13780.       _CharT _M_thousands_sep;
  13781.  
  13782.  
  13783.  
  13784.  
  13785.  
  13786.       _CharT _M_atoms_out[__num_base::_S_oend];
  13787.  
  13788.  
  13789.  
  13790.  
  13791.  
  13792.       _CharT _M_atoms_in[__num_base::_S_iend];
  13793.  
  13794.       bool _M_allocated;
  13795.  
  13796.       __numpunct_cache(size_t __refs = 0)
  13797.       : facet(__refs), _M_grouping(0), _M_grouping_size(0),
  13798.  _M_use_grouping(false),
  13799.  _M_truename(0), _M_truename_size(0), _M_falsename(0),
  13800.  _M_falsename_size(0), _M_decimal_point(_CharT()),
  13801.  _M_thousands_sep(_CharT()), _M_allocated(false)
  13802.  { }
  13803.  
  13804.       ~__numpunct_cache();
  13805.  
  13806.       void
  13807.       _M_cache(const locale& __loc);
  13808.  
  13809.     private:
  13810.       __numpunct_cache&
  13811.       operator=(const __numpunct_cache&);
  13812.  
  13813.       explicit
  13814.       __numpunct_cache(const __numpunct_cache&);
  13815.     };
  13816.  
  13817.   template<typename _CharT>
  13818.     __numpunct_cache<_CharT>::~__numpunct_cache()
  13819.     {
  13820.       if (_M_allocated)
  13821.  {
  13822.    delete [] _M_grouping;
  13823.    delete [] _M_truename;
  13824.    delete [] _M_falsename;
  13825.  }
  13826.     }
  13827.  
  13828. namespace __cxx11 {
  13829. # 1665 "/usr/include/c++/5/bits/locale_facets.h" 3
  13830.   template<typename _CharT>
  13831.     class numpunct : public locale::facet
  13832.     {
  13833.     public:
  13834.  
  13835.  
  13836.  
  13837.       typedef _CharT char_type;
  13838.       typedef basic_string<_CharT> string_type;
  13839.  
  13840.       typedef __numpunct_cache<_CharT> __cache_type;
  13841.  
  13842.     protected:
  13843.       __cache_type* _M_data;
  13844.  
  13845.     public:
  13846.  
  13847.       static locale::id id;
  13848.  
  13849.  
  13850.  
  13851.  
  13852.  
  13853.  
  13854.       explicit
  13855.       numpunct(size_t __refs = 0)
  13856.       : facet(__refs), _M_data(0)
  13857.       { _M_initialize_numpunct(); }
  13858. # 1703 "/usr/include/c++/5/bits/locale_facets.h" 3
  13859.       explicit
  13860.       numpunct(__cache_type* __cache, size_t __refs = 0)
  13861.       : facet(__refs), _M_data(__cache)
  13862.       { _M_initialize_numpunct(); }
  13863. # 1717 "/usr/include/c++/5/bits/locale_facets.h" 3
  13864.       explicit
  13865.       numpunct(__c_locale __cloc, size_t __refs = 0)
  13866.       : facet(__refs), _M_data(0)
  13867.       { _M_initialize_numpunct(__cloc); }
  13868. # 1731 "/usr/include/c++/5/bits/locale_facets.h" 3
  13869.       char_type
  13870.       decimal_point() const
  13871.       { return this->do_decimal_point(); }
  13872. # 1744 "/usr/include/c++/5/bits/locale_facets.h" 3
  13873.       char_type
  13874.       thousands_sep() const
  13875.       { return this->do_thousands_sep(); }
  13876. # 1775 "/usr/include/c++/5/bits/locale_facets.h" 3
  13877.       string
  13878.       grouping() const
  13879.       { return this->do_grouping(); }
  13880. # 1788 "/usr/include/c++/5/bits/locale_facets.h" 3
  13881.       string_type
  13882.       truename() const
  13883.       { return this->do_truename(); }
  13884. # 1801 "/usr/include/c++/5/bits/locale_facets.h" 3
  13885.       string_type
  13886.       falsename() const
  13887.       { return this->do_falsename(); }
  13888.  
  13889.     protected:
  13890.  
  13891.       virtual
  13892.       ~numpunct();
  13893. # 1818 "/usr/include/c++/5/bits/locale_facets.h" 3
  13894.       virtual char_type
  13895.       do_decimal_point() const
  13896.       { return _M_data->_M_decimal_point; }
  13897. # 1830 "/usr/include/c++/5/bits/locale_facets.h" 3
  13898.       virtual char_type
  13899.       do_thousands_sep() const
  13900.       { return _M_data->_M_thousands_sep; }
  13901. # 1843 "/usr/include/c++/5/bits/locale_facets.h" 3
  13902.       virtual string
  13903.       do_grouping() const
  13904.       { return _M_data->_M_grouping; }
  13905. # 1856 "/usr/include/c++/5/bits/locale_facets.h" 3
  13906.       virtual string_type
  13907.       do_truename() const
  13908.       { return _M_data->_M_truename; }
  13909. # 1869 "/usr/include/c++/5/bits/locale_facets.h" 3
  13910.       virtual string_type
  13911.       do_falsename() const
  13912.       { return _M_data->_M_falsename; }
  13913.  
  13914.  
  13915.       void
  13916.       _M_initialize_numpunct(__c_locale __cloc = 0);
  13917.     };
  13918.  
  13919.   template<typename _CharT>
  13920.     locale::id numpunct<_CharT>::id;
  13921.  
  13922.   template<>
  13923.     numpunct<char>::~numpunct();
  13924.  
  13925.   template<>
  13926.     void
  13927.     numpunct<char>::_M_initialize_numpunct(__c_locale __cloc);
  13928.  
  13929.  
  13930.   template<>
  13931.     numpunct<wchar_t>::~numpunct();
  13932.  
  13933.   template<>
  13934.     void
  13935.     numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc);
  13936.  
  13937.  
  13938.  
  13939.   template<typename _CharT>
  13940.     class numpunct_byname : public numpunct<_CharT>
  13941.     {
  13942.     public:
  13943.       typedef _CharT char_type;
  13944.       typedef basic_string<_CharT> string_type;
  13945.  
  13946.       explicit
  13947.       numpunct_byname(const char* __s, size_t __refs = 0)
  13948.       : numpunct<_CharT>(__refs)
  13949.       {
  13950.  if (__builtin_strcmp(__s, "C") != 0
  13951.      && __builtin_strcmp(__s, "POSIX") != 0)
  13952.    {
  13953.      __c_locale __tmp;
  13954.      this->_S_create_c_locale(__tmp, __s);
  13955.      this->_M_initialize_numpunct(__tmp);
  13956.      this->_S_destroy_c_locale(__tmp);
  13957.    }
  13958.       }
  13959.  
  13960.  
  13961.  
  13962.  
  13963.  
  13964.  
  13965.  
  13966.     protected:
  13967.       virtual
  13968.       ~numpunct_byname() { }
  13969.     };
  13970.  
  13971. }
  13972.  
  13973.  
  13974. # 1947 "/usr/include/c++/5/bits/locale_facets.h" 3
  13975.   template<typename _CharT, typename _InIter>
  13976.     class num_get : public locale::facet
  13977.     {
  13978.     public:
  13979.  
  13980.  
  13981.  
  13982.       typedef _CharT char_type;
  13983.       typedef _InIter iter_type;
  13984.  
  13985.  
  13986.  
  13987.       static locale::id id;
  13988. # 1968 "/usr/include/c++/5/bits/locale_facets.h" 3
  13989.       explicit
  13990.       num_get(size_t __refs = 0) : facet(__refs) { }
  13991. # 1994 "/usr/include/c++/5/bits/locale_facets.h" 3
  13992.       iter_type
  13993.       get(iter_type __in, iter_type __end, ios_base& __io,
  13994.    ios_base::iostate& __err, bool& __v) const
  13995.       { return this->do_get(__in, __end, __io, __err, __v); }
  13996. # 2031 "/usr/include/c++/5/bits/locale_facets.h" 3
  13997.       iter_type
  13998.       get(iter_type __in, iter_type __end, ios_base& __io,
  13999.    ios_base::iostate& __err, long& __v) const
  14000.       { return this->do_get(__in, __end, __io, __err, __v); }
  14001.  
  14002.       iter_type
  14003.       get(iter_type __in, iter_type __end, ios_base& __io,
  14004.    ios_base::iostate& __err, unsigned short& __v) const
  14005.       { return this->do_get(__in, __end, __io, __err, __v); }
  14006.  
  14007.       iter_type
  14008.       get(iter_type __in, iter_type __end, ios_base& __io,
  14009.    ios_base::iostate& __err, unsigned int& __v) const
  14010.       { return this->do_get(__in, __end, __io, __err, __v); }
  14011.  
  14012.       iter_type
  14013.       get(iter_type __in, iter_type __end, ios_base& __io,
  14014.    ios_base::iostate& __err, unsigned long& __v) const
  14015.       { return this->do_get(__in, __end, __io, __err, __v); }
  14016.  
  14017.  
  14018.       iter_type
  14019.       get(iter_type __in, iter_type __end, ios_base& __io,
  14020.    ios_base::iostate& __err, long long& __v) const
  14021.       { return this->do_get(__in, __end, __io, __err, __v); }
  14022.  
  14023.       iter_type
  14024.       get(iter_type __in, iter_type __end, ios_base& __io,
  14025.    ios_base::iostate& __err, unsigned long long& __v) const
  14026.       { return this->do_get(__in, __end, __io, __err, __v); }
  14027. # 2091 "/usr/include/c++/5/bits/locale_facets.h" 3
  14028.       iter_type
  14029.       get(iter_type __in, iter_type __end, ios_base& __io,
  14030.    ios_base::iostate& __err, float& __v) const
  14031.       { return this->do_get(__in, __end, __io, __err, __v); }
  14032.  
  14033.       iter_type
  14034.       get(iter_type __in, iter_type __end, ios_base& __io,
  14035.    ios_base::iostate& __err, double& __v) const
  14036.       { return this->do_get(__in, __end, __io, __err, __v); }
  14037.  
  14038.       iter_type
  14039.       get(iter_type __in, iter_type __end, ios_base& __io,
  14040.    ios_base::iostate& __err, long double& __v) const
  14041.       { return this->do_get(__in, __end, __io, __err, __v); }
  14042. # 2134 "/usr/include/c++/5/bits/locale_facets.h" 3
  14043.       iter_type
  14044.       get(iter_type __in, iter_type __end, ios_base& __io,
  14045.    ios_base::iostate& __err, void*& __v) const
  14046.       { return this->do_get(__in, __end, __io, __err, __v); }
  14047.  
  14048.     protected:
  14049.  
  14050.       virtual ~num_get() { }
  14051.  
  14052.       __attribute ((__abi_tag__ ("cxx11")))
  14053.       iter_type
  14054.       _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&,
  14055.          string&) const;
  14056.  
  14057.       template<typename _ValueT>
  14058.  __attribute ((__abi_tag__ ("cxx11")))
  14059.  iter_type
  14060.  _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&,
  14061.          _ValueT&) const;
  14062.  
  14063.       template<typename _CharT2>
  14064.       typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type
  14065.  _M_find(const _CharT2*, size_t __len, _CharT2 __c) const
  14066.  {
  14067.    int __ret = -1;
  14068.    if (__len <= 10)
  14069.      {
  14070.        if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len))
  14071.   __ret = __c - _CharT2('0');
  14072.      }
  14073.    else
  14074.      {
  14075.        if (__c >= _CharT2('0') && __c <= _CharT2('9'))
  14076.   __ret = __c - _CharT2('0');
  14077.        else if (__c >= _CharT2('a') && __c <= _CharT2('f'))
  14078.   __ret = 10 + (__c - _CharT2('a'));
  14079.        else if (__c >= _CharT2('A') && __c <= _CharT2('F'))
  14080.   __ret = 10 + (__c - _CharT2('A'));
  14081.      }
  14082.    return __ret;
  14083.  }
  14084.  
  14085.       template<typename _CharT2>
  14086.       typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value,
  14087.           int>::__type
  14088.  _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const
  14089.  {
  14090.    int __ret = -1;
  14091.    const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c);
  14092.    if (__q)
  14093.      {
  14094.        __ret = __q - __zero;
  14095.        if (__ret > 15)
  14096.   __ret -= 6;
  14097.      }
  14098.    return __ret;
  14099.  }
  14100. # 2207 "/usr/include/c++/5/bits/locale_facets.h" 3
  14101.       virtual iter_type
  14102.       do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
  14103.  
  14104.       virtual iter_type
  14105.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14106.       ios_base::iostate& __err, long& __v) const
  14107.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  14108.  
  14109.       virtual iter_type
  14110.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14111.       ios_base::iostate& __err, unsigned short& __v) const
  14112.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  14113.  
  14114.       virtual iter_type
  14115.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14116.       ios_base::iostate& __err, unsigned int& __v) const
  14117.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  14118.  
  14119.       virtual iter_type
  14120.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14121.       ios_base::iostate& __err, unsigned long& __v) const
  14122.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  14123.  
  14124.  
  14125.       virtual iter_type
  14126.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14127.       ios_base::iostate& __err, long long& __v) const
  14128.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  14129.  
  14130.       virtual iter_type
  14131.       do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14132.       ios_base::iostate& __err, unsigned long long& __v) const
  14133.       { return _M_extract_int(__beg, __end, __io, __err, __v); }
  14134.  
  14135.  
  14136.       virtual iter_type
  14137.       do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const;
  14138.  
  14139.       virtual iter_type
  14140.       do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
  14141.       double&) const;
  14142.  
  14143.  
  14144.  
  14145.  
  14146.  
  14147.  
  14148.  
  14149.       virtual iter_type
  14150.       do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
  14151.       long double&) const;
  14152.  
  14153.  
  14154.       virtual iter_type
  14155.       do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const;
  14156. # 2270 "/usr/include/c++/5/bits/locale_facets.h" 3
  14157.     };
  14158.  
  14159.   template<typename _CharT, typename _InIter>
  14160.     locale::id num_get<_CharT, _InIter>::id;
  14161. # 2288 "/usr/include/c++/5/bits/locale_facets.h" 3
  14162.   template<typename _CharT, typename _OutIter>
  14163.     class num_put : public locale::facet
  14164.     {
  14165.     public:
  14166.  
  14167.  
  14168.  
  14169.       typedef _CharT char_type;
  14170.       typedef _OutIter iter_type;
  14171.  
  14172.  
  14173.  
  14174.       static locale::id id;
  14175. # 2309 "/usr/include/c++/5/bits/locale_facets.h" 3
  14176.       explicit
  14177.       num_put(size_t __refs = 0) : facet(__refs) { }
  14178. # 2327 "/usr/include/c++/5/bits/locale_facets.h" 3
  14179.       iter_type
  14180.       put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
  14181.       { return this->do_put(__s, __io, __fill, __v); }
  14182. # 2369 "/usr/include/c++/5/bits/locale_facets.h" 3
  14183.       iter_type
  14184.       put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
  14185.       { return this->do_put(__s, __io, __fill, __v); }
  14186.  
  14187.       iter_type
  14188.       put(iter_type __s, ios_base& __io, char_type __fill,
  14189.    unsigned long __v) const
  14190.       { return this->do_put(__s, __io, __fill, __v); }
  14191.  
  14192.  
  14193.       iter_type
  14194.       put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const
  14195.       { return this->do_put(__s, __io, __fill, __v); }
  14196.  
  14197.       iter_type
  14198.       put(iter_type __s, ios_base& __io, char_type __fill,
  14199.    unsigned long long __v) const
  14200.       { return this->do_put(__s, __io, __fill, __v); }
  14201. # 2432 "/usr/include/c++/5/bits/locale_facets.h" 3
  14202.       iter_type
  14203.       put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
  14204.       { return this->do_put(__s, __io, __fill, __v); }
  14205.  
  14206.       iter_type
  14207.       put(iter_type __s, ios_base& __io, char_type __fill,
  14208.    long double __v) const
  14209.       { return this->do_put(__s, __io, __fill, __v); }
  14210. # 2457 "/usr/include/c++/5/bits/locale_facets.h" 3
  14211.       iter_type
  14212.       put(iter_type __s, ios_base& __io, char_type __fill,
  14213.    const void* __v) const
  14214.       { return this->do_put(__s, __io, __fill, __v); }
  14215.  
  14216.     protected:
  14217.       template<typename _ValueT>
  14218.  iter_type
  14219.  _M_insert_float(iter_type, ios_base& __io, char_type __fill,
  14220.    char __mod, _ValueT __v) const;
  14221.  
  14222.       void
  14223.       _M_group_float(const char* __grouping, size_t __grouping_size,
  14224.        char_type __sep, const char_type* __p, char_type* __new,
  14225.        char_type* __cs, int& __len) const;
  14226.  
  14227.       template<typename _ValueT>
  14228.  iter_type
  14229.  _M_insert_int(iter_type, ios_base& __io, char_type __fill,
  14230.         _ValueT __v) const;
  14231.  
  14232.       void
  14233.       _M_group_int(const char* __grouping, size_t __grouping_size,
  14234.      char_type __sep, ios_base& __io, char_type* __new,
  14235.      char_type* __cs, int& __len) const;
  14236.  
  14237.       void
  14238.       _M_pad(char_type __fill, streamsize __w, ios_base& __io,
  14239.       char_type* __new, const char_type* __cs, int& __len) const;
  14240.  
  14241.  
  14242.       virtual
  14243.       ~num_put() { };
  14244. # 2505 "/usr/include/c++/5/bits/locale_facets.h" 3
  14245.       virtual iter_type
  14246.       do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const;
  14247.  
  14248.       virtual iter_type
  14249.       do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
  14250.       { return _M_insert_int(__s, __io, __fill, __v); }
  14251.  
  14252.       virtual iter_type
  14253.       do_put(iter_type __s, ios_base& __io, char_type __fill,
  14254.       unsigned long __v) const
  14255.       { return _M_insert_int(__s, __io, __fill, __v); }
  14256.  
  14257.  
  14258.       virtual iter_type
  14259.       do_put(iter_type __s, ios_base& __io, char_type __fill,
  14260.       long long __v) const
  14261.       { return _M_insert_int(__s, __io, __fill, __v); }
  14262.  
  14263.       virtual iter_type
  14264.       do_put(iter_type __s, ios_base& __io, char_type __fill,
  14265.       unsigned long long __v) const
  14266.       { return _M_insert_int(__s, __io, __fill, __v); }
  14267.  
  14268.  
  14269.       virtual iter_type
  14270.       do_put(iter_type, ios_base&, char_type, double) const;
  14271.  
  14272.  
  14273.  
  14274.  
  14275.  
  14276.  
  14277.       virtual iter_type
  14278.       do_put(iter_type, ios_base&, char_type, long double) const;
  14279.  
  14280.  
  14281.       virtual iter_type
  14282.       do_put(iter_type, ios_base&, char_type, const void*) const;
  14283.  
  14284.  
  14285.  
  14286.  
  14287.  
  14288.  
  14289.  
  14290.     };
  14291.  
  14292.   template <typename _CharT, typename _OutIter>
  14293.     locale::id num_put<_CharT, _OutIter>::id;
  14294.  
  14295.  
  14296.  
  14297.  
  14298.  
  14299.  
  14300.  
  14301.  
  14302.  
  14303.   template<typename _CharT>
  14304.     inline bool
  14305.     isspace(_CharT __c, const locale& __loc)
  14306.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); }
  14307.  
  14308.  
  14309.   template<typename _CharT>
  14310.     inline bool
  14311.     isprint(_CharT __c, const locale& __loc)
  14312.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); }
  14313.  
  14314.  
  14315.   template<typename _CharT>
  14316.     inline bool
  14317.     iscntrl(_CharT __c, const locale& __loc)
  14318.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); }
  14319.  
  14320.  
  14321.   template<typename _CharT>
  14322.     inline bool
  14323.     isupper(_CharT __c, const locale& __loc)
  14324.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); }
  14325.  
  14326.  
  14327.   template<typename _CharT>
  14328.     inline bool
  14329.     islower(_CharT __c, const locale& __loc)
  14330.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); }
  14331.  
  14332.  
  14333.   template<typename _CharT>
  14334.     inline bool
  14335.     isalpha(_CharT __c, const locale& __loc)
  14336.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); }
  14337.  
  14338.  
  14339.   template<typename _CharT>
  14340.     inline bool
  14341.     isdigit(_CharT __c, const locale& __loc)
  14342.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); }
  14343.  
  14344.  
  14345.   template<typename _CharT>
  14346.     inline bool
  14347.     ispunct(_CharT __c, const locale& __loc)
  14348.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); }
  14349.  
  14350.  
  14351.   template<typename _CharT>
  14352.     inline bool
  14353.     isxdigit(_CharT __c, const locale& __loc)
  14354.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); }
  14355.  
  14356.  
  14357.   template<typename _CharT>
  14358.     inline bool
  14359.     isalnum(_CharT __c, const locale& __loc)
  14360.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); }
  14361.  
  14362.  
  14363.   template<typename _CharT>
  14364.     inline bool
  14365.     isgraph(_CharT __c, const locale& __loc)
  14366.     { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); }
  14367. # 2637 "/usr/include/c++/5/bits/locale_facets.h" 3
  14368.   template<typename _CharT>
  14369.     inline _CharT
  14370.     toupper(_CharT __c, const locale& __loc)
  14371.     { return use_facet<ctype<_CharT> >(__loc).toupper(__c); }
  14372.  
  14373.  
  14374.   template<typename _CharT>
  14375.     inline _CharT
  14376.     tolower(_CharT __c, const locale& __loc)
  14377.     { return use_facet<ctype<_CharT> >(__loc).tolower(__c); }
  14378.  
  14379.  
  14380. }
  14381.  
  14382. # 1 "/usr/include/c++/5/bits/locale_facets.tcc" 1 3
  14383. # 33 "/usr/include/c++/5/bits/locale_facets.tcc" 3
  14384.        
  14385. # 34 "/usr/include/c++/5/bits/locale_facets.tcc" 3
  14386.  
  14387. namespace std __attribute__ ((__visibility__ ("default")))
  14388. {
  14389.  
  14390.  
  14391.  
  14392.  
  14393.   template<typename _Facet>
  14394.     struct __use_cache
  14395.     {
  14396.       const _Facet*
  14397.       operator() (const locale& __loc) const;
  14398.     };
  14399.  
  14400.  
  14401.   template<typename _CharT>
  14402.     struct __use_cache<__numpunct_cache<_CharT> >
  14403.     {
  14404.       const __numpunct_cache<_CharT>*
  14405.       operator() (const locale& __loc) const
  14406.       {
  14407.  const size_t __i = numpunct<_CharT>::id._M_id();
  14408.  const locale::facet** __caches = __loc._M_impl->_M_caches;
  14409.  if (!__caches[__i])
  14410.    {
  14411.      __numpunct_cache<_CharT>* __tmp = 0;
  14412.      try
  14413.        {
  14414.   __tmp = new __numpunct_cache<_CharT>;
  14415.   __tmp->_M_cache(__loc);
  14416.        }
  14417.      catch(...)
  14418.        {
  14419.   delete __tmp;
  14420.   throw;
  14421.        }
  14422.      __loc._M_impl->_M_install_cache(__tmp, __i);
  14423.    }
  14424.  return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]);
  14425.       }
  14426.     };
  14427.  
  14428.   template<typename _CharT>
  14429.     void
  14430.     __numpunct_cache<_CharT>::_M_cache(const locale& __loc)
  14431.     {
  14432.       const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
  14433.  
  14434.       char* __grouping = 0;
  14435.       _CharT* __truename = 0;
  14436.       _CharT* __falsename = 0;
  14437.       try
  14438.  {
  14439.    const string& __g = __np.grouping();
  14440.    _M_grouping_size = __g.size();
  14441.    __grouping = new char[_M_grouping_size];
  14442.    __g.copy(__grouping, _M_grouping_size);
  14443.    _M_use_grouping = (_M_grouping_size
  14444.         && static_cast<signed char>(__grouping[0]) > 0
  14445.         && (__grouping[0]
  14446.      != __gnu_cxx::__numeric_traits<char>::__max));
  14447.  
  14448.    const basic_string<_CharT>& __tn = __np.truename();
  14449.    _M_truename_size = __tn.size();
  14450.    __truename = new _CharT[_M_truename_size];
  14451.    __tn.copy(__truename, _M_truename_size);
  14452.  
  14453.    const basic_string<_CharT>& __fn = __np.falsename();
  14454.    _M_falsename_size = __fn.size();
  14455.    __falsename = new _CharT[_M_falsename_size];
  14456.    __fn.copy(__falsename, _M_falsename_size);
  14457.  
  14458.    _M_decimal_point = __np.decimal_point();
  14459.    _M_thousands_sep = __np.thousands_sep();
  14460.  
  14461.    const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
  14462.    __ct.widen(__num_base::_S_atoms_out,
  14463.        __num_base::_S_atoms_out
  14464.        + __num_base::_S_oend, _M_atoms_out);
  14465.    __ct.widen(__num_base::_S_atoms_in,
  14466.        __num_base::_S_atoms_in
  14467.        + __num_base::_S_iend, _M_atoms_in);
  14468.  
  14469.    _M_grouping = __grouping;
  14470.    _M_truename = __truename;
  14471.    _M_falsename = __falsename;
  14472.    _M_allocated = true;
  14473.  }
  14474.       catch(...)
  14475.  {
  14476.    delete [] __grouping;
  14477.    delete [] __truename;
  14478.    delete [] __falsename;
  14479.    throw;
  14480.  }
  14481.     }
  14482. # 139 "/usr/include/c++/5/bits/locale_facets.tcc" 3
  14483.   __attribute__ ((__pure__)) bool
  14484.   __verify_grouping(const char* __grouping, size_t __grouping_size,
  14485.       const string& __grouping_tmp) throw ();
  14486.  
  14487.  
  14488.  
  14489.   template<typename _CharT, typename _InIter>
  14490.     __attribute ((__abi_tag__ ("cxx11")))
  14491.     _InIter
  14492.     num_get<_CharT, _InIter>::
  14493.     _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,
  14494.        ios_base::iostate& __err, string& __xtrc) const
  14495.     {
  14496.       typedef char_traits<_CharT> __traits_type;
  14497.       typedef __numpunct_cache<_CharT> __cache_type;
  14498.       __use_cache<__cache_type> __uc;
  14499.       const locale& __loc = __io._M_getloc();
  14500.       const __cache_type* __lc = __uc(__loc);
  14501.       const _CharT* __lit = __lc->_M_atoms_in;
  14502.       char_type __c = char_type();
  14503.  
  14504.  
  14505.       bool __testeof = __beg == __end;
  14506.  
  14507.  
  14508.       if (!__testeof)
  14509.  {
  14510.    __c = *__beg;
  14511.    const bool __plus = __c == __lit[__num_base::_S_iplus];
  14512.    if ((__plus || __c == __lit[__num_base::_S_iminus])
  14513.        && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  14514.        && !(__c == __lc->_M_decimal_point))
  14515.      {
  14516.        __xtrc += __plus ? '+' : '-';
  14517.        if (++__beg != __end)
  14518.   __c = *__beg;
  14519.        else
  14520.   __testeof = true;
  14521.      }
  14522.  }
  14523.  
  14524.  
  14525.       bool __found_mantissa = false;
  14526.       int __sep_pos = 0;
  14527.       while (!__testeof)
  14528.  {
  14529.    if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  14530.        || __c == __lc->_M_decimal_point)
  14531.      break;
  14532.    else if (__c == __lit[__num_base::_S_izero])
  14533.      {
  14534.        if (!__found_mantissa)
  14535.   {
  14536.     __xtrc += '0';
  14537.     __found_mantissa = true;
  14538.   }
  14539.        ++__sep_pos;
  14540.  
  14541.        if (++__beg != __end)
  14542.   __c = *__beg;
  14543.        else
  14544.   __testeof = true;
  14545.      }
  14546.    else
  14547.      break;
  14548.  }
  14549.  
  14550.  
  14551.       bool __found_dec = false;
  14552.       bool __found_sci = false;
  14553.       string __found_grouping;
  14554.       if (__lc->_M_use_grouping)
  14555.  __found_grouping.reserve(32);
  14556.       const char_type* __lit_zero = __lit + __num_base::_S_izero;
  14557.  
  14558.       if (!__lc->_M_allocated)
  14559.  
  14560.  while (!__testeof)
  14561.    {
  14562.      const int __digit = _M_find(__lit_zero, 10, __c);
  14563.      if (__digit != -1)
  14564.        {
  14565.   __xtrc += '0' + __digit;
  14566.   __found_mantissa = true;
  14567.        }
  14568.      else if (__c == __lc->_M_decimal_point
  14569.        && !__found_dec && !__found_sci)
  14570.        {
  14571.   __xtrc += '.';
  14572.   __found_dec = true;
  14573.        }
  14574.      else if ((__c == __lit[__num_base::_S_ie]
  14575.         || __c == __lit[__num_base::_S_iE])
  14576.        && !__found_sci && __found_mantissa)
  14577.        {
  14578.  
  14579.   __xtrc += 'e';
  14580.   __found_sci = true;
  14581.  
  14582.  
  14583.   if (++__beg != __end)
  14584.     {
  14585.       __c = *__beg;
  14586.       const bool __plus = __c == __lit[__num_base::_S_iplus];
  14587.       if (__plus || __c == __lit[__num_base::_S_iminus])
  14588.         __xtrc += __plus ? '+' : '-';
  14589.       else
  14590.         continue;
  14591.     }
  14592.   else
  14593.     {
  14594.       __testeof = true;
  14595.       break;
  14596.     }
  14597.        }
  14598.      else
  14599.        break;
  14600.  
  14601.      if (++__beg != __end)
  14602.        __c = *__beg;
  14603.      else
  14604.        __testeof = true;
  14605.    }
  14606.       else
  14607.  while (!__testeof)
  14608.    {
  14609.  
  14610.  
  14611.      if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  14612.        {
  14613.   if (!__found_dec && !__found_sci)
  14614.     {
  14615.  
  14616.  
  14617.       if (__sep_pos)
  14618.         {
  14619.    __found_grouping += static_cast<char>(__sep_pos);
  14620.    __sep_pos = 0;
  14621.         }
  14622.       else
  14623.         {
  14624.  
  14625.  
  14626.    __xtrc.clear();
  14627.    break;
  14628.         }
  14629.     }
  14630.   else
  14631.     break;
  14632.        }
  14633.      else if (__c == __lc->_M_decimal_point)
  14634.        {
  14635.   if (!__found_dec && !__found_sci)
  14636.     {
  14637.  
  14638.  
  14639.  
  14640.       if (__found_grouping.size())
  14641.         __found_grouping += static_cast<char>(__sep_pos);
  14642.       __xtrc += '.';
  14643.       __found_dec = true;
  14644.     }
  14645.   else
  14646.     break;
  14647.        }
  14648.      else
  14649.        {
  14650.   const char_type* __q =
  14651.     __traits_type::find(__lit_zero, 10, __c);
  14652.   if (__q)
  14653.     {
  14654.       __xtrc += '0' + (__q - __lit_zero);
  14655.       __found_mantissa = true;
  14656.       ++__sep_pos;
  14657.     }
  14658.   else if ((__c == __lit[__num_base::_S_ie]
  14659.      || __c == __lit[__num_base::_S_iE])
  14660.     && !__found_sci && __found_mantissa)
  14661.     {
  14662.  
  14663.       if (__found_grouping.size() && !__found_dec)
  14664.         __found_grouping += static_cast<char>(__sep_pos);
  14665.       __xtrc += 'e';
  14666.       __found_sci = true;
  14667.  
  14668.  
  14669.       if (++__beg != __end)
  14670.         {
  14671.    __c = *__beg;
  14672.    const bool __plus = __c == __lit[__num_base::_S_iplus];
  14673.    if ((__plus || __c == __lit[__num_base::_S_iminus])
  14674.        && !(__lc->_M_use_grouping
  14675.      && __c == __lc->_M_thousands_sep)
  14676.        && !(__c == __lc->_M_decimal_point))
  14677.         __xtrc += __plus ? '+' : '-';
  14678.    else
  14679.      continue;
  14680.         }
  14681.       else
  14682.         {
  14683.    __testeof = true;
  14684.    break;
  14685.         }
  14686.     }
  14687.   else
  14688.     break;
  14689.        }
  14690.  
  14691.      if (++__beg != __end)
  14692.        __c = *__beg;
  14693.      else
  14694.        __testeof = true;
  14695.    }
  14696.  
  14697.  
  14698.  
  14699.       if (__found_grouping.size())
  14700.         {
  14701.  
  14702.    if (!__found_dec && !__found_sci)
  14703.      __found_grouping += static_cast<char>(__sep_pos);
  14704.  
  14705.           if (!std::__verify_grouping(__lc->_M_grouping,
  14706.           __lc->_M_grouping_size,
  14707.           __found_grouping))
  14708.      __err = ios_base::failbit;
  14709.         }
  14710.  
  14711.       return __beg;
  14712.     }
  14713.  
  14714.   template<typename _CharT, typename _InIter>
  14715.     template<typename _ValueT>
  14716.       __attribute ((__abi_tag__ ("cxx11")))
  14717.       _InIter
  14718.       num_get<_CharT, _InIter>::
  14719.       _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,
  14720.        ios_base::iostate& __err, _ValueT& __v) const
  14721.       {
  14722.         typedef char_traits<_CharT> __traits_type;
  14723.  using __gnu_cxx::__add_unsigned;
  14724.  typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
  14725.  typedef __numpunct_cache<_CharT> __cache_type;
  14726.  __use_cache<__cache_type> __uc;
  14727.  const locale& __loc = __io._M_getloc();
  14728.  const __cache_type* __lc = __uc(__loc);
  14729.  const _CharT* __lit = __lc->_M_atoms_in;
  14730.  char_type __c = char_type();
  14731.  
  14732.  
  14733.  const ios_base::fmtflags __basefield = __io.flags()
  14734.                                         & ios_base::basefield;
  14735.  const bool __oct = __basefield == ios_base::oct;
  14736.  int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10);
  14737.  
  14738.  
  14739.  bool __testeof = __beg == __end;
  14740.  
  14741.  
  14742.  bool __negative = false;
  14743.  if (!__testeof)
  14744.    {
  14745.      __c = *__beg;
  14746.      __negative = __c == __lit[__num_base::_S_iminus];
  14747.      if ((__negative || __c == __lit[__num_base::_S_iplus])
  14748.   && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  14749.   && !(__c == __lc->_M_decimal_point))
  14750.        {
  14751.   if (++__beg != __end)
  14752.     __c = *__beg;
  14753.   else
  14754.     __testeof = true;
  14755.        }
  14756.    }
  14757.  
  14758.  
  14759.  
  14760.  bool __found_zero = false;
  14761.  int __sep_pos = 0;
  14762.  while (!__testeof)
  14763.    {
  14764.      if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  14765.   || __c == __lc->_M_decimal_point)
  14766.        break;
  14767.      else if (__c == __lit[__num_base::_S_izero]
  14768.        && (!__found_zero || __base == 10))
  14769.        {
  14770.   __found_zero = true;
  14771.   ++__sep_pos;
  14772.   if (__basefield == 0)
  14773.     __base = 8;
  14774.   if (__base == 8)
  14775.     __sep_pos = 0;
  14776.        }
  14777.      else if (__found_zero
  14778.        && (__c == __lit[__num_base::_S_ix]
  14779.     || __c == __lit[__num_base::_S_iX]))
  14780.        {
  14781.   if (__basefield == 0)
  14782.     __base = 16;
  14783.   if (__base == 16)
  14784.     {
  14785.       __found_zero = false;
  14786.       __sep_pos = 0;
  14787.     }
  14788.   else
  14789.     break;
  14790.        }
  14791.      else
  14792.        break;
  14793.  
  14794.      if (++__beg != __end)
  14795.        {
  14796.   __c = *__beg;
  14797.   if (!__found_zero)
  14798.     break;
  14799.        }
  14800.      else
  14801.        __testeof = true;
  14802.    }
  14803.  
  14804.  
  14805.  
  14806.  const size_t __len = (__base == 16 ? __num_base::_S_iend
  14807.          - __num_base::_S_izero : __base);
  14808.  
  14809.  
  14810.  string __found_grouping;
  14811.  if (__lc->_M_use_grouping)
  14812.    __found_grouping.reserve(32);
  14813.  bool __testfail = false;
  14814.  bool __testoverflow = false;
  14815.  const __unsigned_type __max =
  14816.    (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
  14817.    ? -__gnu_cxx::__numeric_traits<_ValueT>::__min
  14818.    : __gnu_cxx::__numeric_traits<_ValueT>::__max;
  14819.  const __unsigned_type __smax = __max / __base;
  14820.  __unsigned_type __result = 0;
  14821.  int __digit = 0;
  14822.  const char_type* __lit_zero = __lit + __num_base::_S_izero;
  14823.  
  14824.  if (!__lc->_M_allocated)
  14825.  
  14826.    while (!__testeof)
  14827.      {
  14828.        __digit = _M_find(__lit_zero, __len, __c);
  14829.        if (__digit == -1)
  14830.   break;
  14831.  
  14832.        if (__result > __smax)
  14833.   __testoverflow = true;
  14834.        else
  14835.   {
  14836.     __result *= __base;
  14837.     __testoverflow |= __result > __max - __digit;
  14838.     __result += __digit;
  14839.     ++__sep_pos;
  14840.   }
  14841.  
  14842.        if (++__beg != __end)
  14843.   __c = *__beg;
  14844.        else
  14845.   __testeof = true;
  14846.      }
  14847.  else
  14848.    while (!__testeof)
  14849.      {
  14850.  
  14851.  
  14852.        if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
  14853.   {
  14854.  
  14855.  
  14856.     if (__sep_pos)
  14857.       {
  14858.         __found_grouping += static_cast<char>(__sep_pos);
  14859.         __sep_pos = 0;
  14860.       }
  14861.     else
  14862.       {
  14863.         __testfail = true;
  14864.         break;
  14865.       }
  14866.   }
  14867.        else if (__c == __lc->_M_decimal_point)
  14868.   break;
  14869.        else
  14870.   {
  14871.     const char_type* __q =
  14872.       __traits_type::find(__lit_zero, __len, __c);
  14873.     if (!__q)
  14874.       break;
  14875.  
  14876.     __digit = __q - __lit_zero;
  14877.     if (__digit > 15)
  14878.       __digit -= 6;
  14879.     if (__result > __smax)
  14880.       __testoverflow = true;
  14881.     else
  14882.       {
  14883.         __result *= __base;
  14884.         __testoverflow |= __result > __max - __digit;
  14885.         __result += __digit;
  14886.         ++__sep_pos;
  14887.       }
  14888.   }
  14889.  
  14890.        if (++__beg != __end)
  14891.   __c = *__beg;
  14892.        else
  14893.   __testeof = true;
  14894.      }
  14895.  
  14896.  
  14897.  
  14898.  if (__found_grouping.size())
  14899.    {
  14900.  
  14901.      __found_grouping += static_cast<char>(__sep_pos);
  14902.  
  14903.      if (!std::__verify_grouping(__lc->_M_grouping,
  14904.      __lc->_M_grouping_size,
  14905.      __found_grouping))
  14906.        __err = ios_base::failbit;
  14907.    }
  14908.  
  14909.  
  14910.  
  14911.  if ((!__sep_pos && !__found_zero && !__found_grouping.size())
  14912.      || __testfail)
  14913.    {
  14914.      __v = 0;
  14915.      __err = ios_base::failbit;
  14916.    }
  14917.  else if (__testoverflow)
  14918.    {
  14919.      if (__negative
  14920.   && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
  14921.        __v = __gnu_cxx::__numeric_traits<_ValueT>::__min;
  14922.      else
  14923.        __v = __gnu_cxx::__numeric_traits<_ValueT>::__max;
  14924.      __err = ios_base::failbit;
  14925.    }
  14926.  else
  14927.    __v = __negative ? -__result : __result;
  14928.  
  14929.  if (__testeof)
  14930.    __err |= ios_base::eofbit;
  14931.  return __beg;
  14932.       }
  14933.  
  14934.  
  14935.  
  14936.   template<typename _CharT, typename _InIter>
  14937.     _InIter
  14938.     num_get<_CharT, _InIter>::
  14939.     do_get(iter_type __beg, iter_type __end, ios_base& __io,
  14940.            ios_base::iostate& __err, bool& __v) const
  14941.     {
  14942.       if (!(__io.flags() & ios_base::boolalpha))
  14943.         {
  14944.  
  14945.  
  14946.  
  14947.    long __l = -1;
  14948.           __beg = _M_extract_int(__beg, __end, __io, __err, __l);
  14949.    if (__l == 0 || __l == 1)
  14950.      __v = bool(__l);
  14951.    else
  14952.      {
  14953.  
  14954.  
  14955.        __v = true;
  14956.        __err = ios_base::failbit;
  14957.        if (__beg == __end)
  14958.   __err |= ios_base::eofbit;
  14959.      }
  14960.         }
  14961.       else
  14962.         {
  14963.  
  14964.    typedef __numpunct_cache<_CharT> __cache_type;
  14965.    __use_cache<__cache_type> __uc;
  14966.    const locale& __loc = __io._M_getloc();
  14967.    const __cache_type* __lc = __uc(__loc);
  14968.  
  14969.    bool __testf = true;
  14970.    bool __testt = true;
  14971.    bool __donef = __lc->_M_falsename_size == 0;
  14972.    bool __donet = __lc->_M_truename_size == 0;
  14973.    bool __testeof = false;
  14974.    size_t __n = 0;
  14975.    while (!__donef || !__donet)
  14976.      {
  14977.        if (__beg == __end)
  14978.   {
  14979.     __testeof = true;
  14980.     break;
  14981.   }
  14982.  
  14983.        const char_type __c = *__beg;
  14984.  
  14985.        if (!__donef)
  14986.   __testf = __c == __lc->_M_falsename[__n];
  14987.  
  14988.        if (!__testf && __donet)
  14989.   break;
  14990.  
  14991.        if (!__donet)
  14992.   __testt = __c == __lc->_M_truename[__n];
  14993.  
  14994.        if (!__testt && __donef)
  14995.   break;
  14996.  
  14997.        if (!__testt && !__testf)
  14998.   break;
  14999.  
  15000.        ++__n;
  15001.        ++__beg;
  15002.  
  15003.        __donef = !__testf || __n >= __lc->_M_falsename_size;
  15004.        __donet = !__testt || __n >= __lc->_M_truename_size;
  15005.      }
  15006.    if (__testf && __n == __lc->_M_falsename_size && __n)
  15007.      {
  15008.        __v = false;
  15009.        if (__testt && __n == __lc->_M_truename_size)
  15010.   __err = ios_base::failbit;
  15011.        else
  15012.   __err = __testeof ? ios_base::eofbit : ios_base::goodbit;
  15013.      }
  15014.    else if (__testt && __n == __lc->_M_truename_size && __n)
  15015.      {
  15016.        __v = true;
  15017.        __err = __testeof ? ios_base::eofbit : ios_base::goodbit;
  15018.      }
  15019.    else
  15020.      {
  15021.  
  15022.  
  15023.        __v = false;
  15024.        __err = ios_base::failbit;
  15025.        if (__testeof)
  15026.   __err |= ios_base::eofbit;
  15027.      }
  15028.  }
  15029.       return __beg;
  15030.     }
  15031.  
  15032.   template<typename _CharT, typename _InIter>
  15033.     _InIter
  15034.     num_get<_CharT, _InIter>::
  15035.     do_get(iter_type __beg, iter_type __end, ios_base& __io,
  15036.     ios_base::iostate& __err, float& __v) const
  15037.     {
  15038.       string __xtrc;
  15039.       __xtrc.reserve(32);
  15040.       __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
  15041.       std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
  15042.       if (__beg == __end)
  15043.  __err |= ios_base::eofbit;
  15044.       return __beg;
  15045.     }
  15046.  
  15047.   template<typename _CharT, typename _InIter>
  15048.     _InIter
  15049.     num_get<_CharT, _InIter>::
  15050.     do_get(iter_type __beg, iter_type __end, ios_base& __io,
  15051.            ios_base::iostate& __err, double& __v) const
  15052.     {
  15053.       string __xtrc;
  15054.       __xtrc.reserve(32);
  15055.       __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
  15056.       std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
  15057.       if (__beg == __end)
  15058.  __err |= ios_base::eofbit;
  15059.       return __beg;
  15060.     }
  15061. # 735 "/usr/include/c++/5/bits/locale_facets.tcc" 3
  15062.   template<typename _CharT, typename _InIter>
  15063.     _InIter
  15064.     num_get<_CharT, _InIter>::
  15065.     do_get(iter_type __beg, iter_type __end, ios_base& __io,
  15066.            ios_base::iostate& __err, long double& __v) const
  15067.     {
  15068.       string __xtrc;
  15069.       __xtrc.reserve(32);
  15070.       __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
  15071.       std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
  15072.       if (__beg == __end)
  15073.  __err |= ios_base::eofbit;
  15074.       return __beg;
  15075.     }
  15076.  
  15077.   template<typename _CharT, typename _InIter>
  15078.     _InIter
  15079.     num_get<_CharT, _InIter>::
  15080.     do_get(iter_type __beg, iter_type __end, ios_base& __io,
  15081.            ios_base::iostate& __err, void*& __v) const
  15082.     {
  15083.  
  15084.       typedef ios_base::fmtflags fmtflags;
  15085.       const fmtflags __fmt = __io.flags();
  15086.       __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex);
  15087.  
  15088.       typedef __gnu_cxx::__conditional_type<(sizeof(void*)
  15089.           <= sizeof(unsigned long)),
  15090.  unsigned long, unsigned long long>::__type _UIntPtrType;
  15091.  
  15092.       _UIntPtrType __ul;
  15093.       __beg = _M_extract_int(__beg, __end, __io, __err, __ul);
  15094.  
  15095.  
  15096.       __io.flags(__fmt);
  15097.  
  15098.       __v = reinterpret_cast<void*>(__ul);
  15099.       return __beg;
  15100.     }
  15101.  
  15102.  
  15103.  
  15104.   template<typename _CharT, typename _OutIter>
  15105.     void
  15106.     num_put<_CharT, _OutIter>::
  15107.     _M_pad(_CharT __fill, streamsize __w, ios_base& __io,
  15108.     _CharT* __new, const _CharT* __cs, int& __len) const
  15109.     {
  15110.  
  15111.  
  15112.       __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new,
  15113.         __cs, __w, __len);
  15114.       __len = static_cast<int>(__w);
  15115.     }
  15116.  
  15117.  
  15118.  
  15119.   template<typename _CharT, typename _ValueT>
  15120.     int
  15121.     __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit,
  15122.     ios_base::fmtflags __flags, bool __dec)
  15123.     {
  15124.       _CharT* __buf = __bufend;
  15125.       if (__builtin_expect(__dec, true))
  15126.  {
  15127.  
  15128.    do
  15129.      {
  15130.        *--__buf = __lit[(__v % 10) + __num_base::_S_odigits];
  15131.        __v /= 10;
  15132.      }
  15133.    while (__v != 0);
  15134.  }
  15135.       else if ((__flags & ios_base::basefield) == ios_base::oct)
  15136.  {
  15137.  
  15138.    do
  15139.      {
  15140.        *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits];
  15141.        __v >>= 3;
  15142.      }
  15143.    while (__v != 0);
  15144.  }
  15145.       else
  15146.  {
  15147.  
  15148.    const bool __uppercase = __flags & ios_base::uppercase;
  15149.    const int __case_offset = __uppercase ? __num_base::_S_oudigits
  15150.                                          : __num_base::_S_odigits;
  15151.    do
  15152.      {
  15153.        *--__buf = __lit[(__v & 0xf) + __case_offset];
  15154.        __v >>= 4;
  15155.      }
  15156.    while (__v != 0);
  15157.  }
  15158.       return __bufend - __buf;
  15159.     }
  15160.  
  15161.  
  15162.  
  15163.   template<typename _CharT, typename _OutIter>
  15164.     void
  15165.     num_put<_CharT, _OutIter>::
  15166.     _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep,
  15167.    ios_base&, _CharT* __new, _CharT* __cs, int& __len) const
  15168.     {
  15169.       _CharT* __p = std::__add_grouping(__new, __sep, __grouping,
  15170.      __grouping_size, __cs, __cs + __len);
  15171.       __len = __p - __new;
  15172.     }
  15173.  
  15174.   template<typename _CharT, typename _OutIter>
  15175.     template<typename _ValueT>
  15176.       _OutIter
  15177.       num_put<_CharT, _OutIter>::
  15178.       _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill,
  15179.       _ValueT __v) const
  15180.       {
  15181.  using __gnu_cxx::__add_unsigned;
  15182.  typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
  15183.  typedef __numpunct_cache<_CharT> __cache_type;
  15184.  __use_cache<__cache_type> __uc;
  15185.  const locale& __loc = __io._M_getloc();
  15186.  const __cache_type* __lc = __uc(__loc);
  15187.  const _CharT* __lit = __lc->_M_atoms_out;
  15188.  const ios_base::fmtflags __flags = __io.flags();
  15189.  
  15190.  
  15191.  const int __ilen = 5 * sizeof(_ValueT);
  15192.  _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  15193.             * __ilen));
  15194.  
  15195.  
  15196.  
  15197.  const ios_base::fmtflags __basefield = __flags & ios_base::basefield;
  15198.  const bool __dec = (__basefield != ios_base::oct
  15199.        && __basefield != ios_base::hex);
  15200.  const __unsigned_type __u = ((__v > 0 || !__dec)
  15201.          ? __unsigned_type(__v)
  15202.          : -__unsigned_type(__v));
  15203.   int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec);
  15204.  __cs += __ilen - __len;
  15205.  
  15206.  
  15207.  if (__lc->_M_use_grouping)
  15208.    {
  15209.  
  15210.  
  15211.      _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  15212.           * (__len + 1)
  15213.           * 2));
  15214.      _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size,
  15215.     __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len);
  15216.      __cs = __cs2 + 2;
  15217.    }
  15218.  
  15219.  
  15220.  if (__builtin_expect(__dec, true))
  15221.    {
  15222.  
  15223.      if (__v >= 0)
  15224.        {
  15225.   if (bool(__flags & ios_base::showpos)
  15226.       && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
  15227.     *--__cs = __lit[__num_base::_S_oplus], ++__len;
  15228.        }
  15229.      else
  15230.        *--__cs = __lit[__num_base::_S_ominus], ++__len;
  15231.    }
  15232.  else if (bool(__flags & ios_base::showbase) && __v)
  15233.    {
  15234.      if (__basefield == ios_base::oct)
  15235.        *--__cs = __lit[__num_base::_S_odigits], ++__len;
  15236.      else
  15237.        {
  15238.  
  15239.   const bool __uppercase = __flags & ios_base::uppercase;
  15240.   *--__cs = __lit[__num_base::_S_ox + __uppercase];
  15241.  
  15242.   *--__cs = __lit[__num_base::_S_odigits];
  15243.   __len += 2;
  15244.        }
  15245.    }
  15246.  
  15247.  
  15248.  const streamsize __w = __io.width();
  15249.  if (__w > static_cast<streamsize>(__len))
  15250.    {
  15251.      _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  15252.           * __w));
  15253.      _M_pad(__fill, __w, __io, __cs3, __cs, __len);
  15254.      __cs = __cs3;
  15255.    }
  15256.  __io.width(0);
  15257.  
  15258.  
  15259.  
  15260.  return std::__write(__s, __cs, __len);
  15261.       }
  15262.  
  15263.   template<typename _CharT, typename _OutIter>
  15264.     void
  15265.     num_put<_CharT, _OutIter>::
  15266.     _M_group_float(const char* __grouping, size_t __grouping_size,
  15267.      _CharT __sep, const _CharT* __p, _CharT* __new,
  15268.      _CharT* __cs, int& __len) const
  15269.     {
  15270.  
  15271.  
  15272.  
  15273.       const int __declen = __p ? __p - __cs : __len;
  15274.       _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping,
  15275.       __grouping_size,
  15276.       __cs, __cs + __declen);
  15277.  
  15278.  
  15279.       int __newlen = __p2 - __new;
  15280.       if (__p)
  15281.  {
  15282.    char_traits<_CharT>::copy(__p2, __p, __len - __declen);
  15283.    __newlen += __len - __declen;
  15284.  }
  15285.       __len = __newlen;
  15286.     }
  15287. # 971 "/usr/include/c++/5/bits/locale_facets.tcc" 3
  15288.   template<typename _CharT, typename _OutIter>
  15289.     template<typename _ValueT>
  15290.       _OutIter
  15291.       num_put<_CharT, _OutIter>::
  15292.       _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod,
  15293.          _ValueT __v) const
  15294.       {
  15295.  typedef __numpunct_cache<_CharT> __cache_type;
  15296.  __use_cache<__cache_type> __uc;
  15297.  const locale& __loc = __io._M_getloc();
  15298.  const __cache_type* __lc = __uc(__loc);
  15299.  
  15300.  
  15301.  const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision();
  15302.  
  15303.  const int __max_digits =
  15304.    __gnu_cxx::__numeric_traits<_ValueT>::__digits10;
  15305.  
  15306.  
  15307.  int __len;
  15308.  
  15309.  char __fbuf[16];
  15310.  __num_base::_S_format_float(__io, __fbuf, __mod);
  15311.  
  15312.  
  15313.  
  15314.  const bool __use_prec =
  15315.    (__io.flags() & ios_base::floatfield) != ios_base::floatfield;
  15316.  
  15317.  
  15318.  
  15319.  int __cs_size = __max_digits * 3;
  15320.  char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
  15321.  if (__use_prec)
  15322.    __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
  15323.      __fbuf, __prec, __v);
  15324.  else
  15325.    __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
  15326.      __fbuf, __v);
  15327.  
  15328.  
  15329.  if (__len >= __cs_size)
  15330.    {
  15331.      __cs_size = __len + 1;
  15332.      __cs = static_cast<char*>(__builtin_alloca(__cs_size));
  15333.      if (__use_prec)
  15334.        __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
  15335.          __fbuf, __prec, __v);
  15336.      else
  15337.        __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size,
  15338.          __fbuf, __v);
  15339.    }
  15340. # 1044 "/usr/include/c++/5/bits/locale_facets.tcc" 3
  15341.  const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
  15342.  
  15343.  _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  15344.             * __len));
  15345.  __ctype.widen(__cs, __cs + __len, __ws);
  15346.  
  15347.  
  15348.  _CharT* __wp = 0;
  15349.  const char* __p = char_traits<char>::find(__cs, __len, '.');
  15350.  if (__p)
  15351.    {
  15352.      __wp = __ws + (__p - __cs);
  15353.      *__wp = __lc->_M_decimal_point;
  15354.    }
  15355.  
  15356.  
  15357.  
  15358.  
  15359.  if (__lc->_M_use_grouping
  15360.      && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9'
  15361.           && __cs[1] >= '0' && __cs[2] >= '0')))
  15362.    {
  15363.  
  15364.  
  15365.      _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  15366.           * __len * 2));
  15367.  
  15368.      streamsize __off = 0;
  15369.      if (__cs[0] == '-' || __cs[0] == '+')
  15370.        {
  15371.   __off = 1;
  15372.   __ws2[0] = __ws[0];
  15373.   __len -= 1;
  15374.        }
  15375.  
  15376.      _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size,
  15377.       __lc->_M_thousands_sep, __wp, __ws2 + __off,
  15378.       __ws + __off, __len);
  15379.      __len += __off;
  15380.  
  15381.      __ws = __ws2;
  15382.    }
  15383.  
  15384.  
  15385.  const streamsize __w = __io.width();
  15386.  if (__w > static_cast<streamsize>(__len))
  15387.    {
  15388.      _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  15389.           * __w));
  15390.      _M_pad(__fill, __w, __io, __ws3, __ws, __len);
  15391.      __ws = __ws3;
  15392.    }
  15393.  __io.width(0);
  15394.  
  15395.  
  15396.  
  15397.  return std::__write(__s, __ws, __len);
  15398.       }
  15399.  
  15400.   template<typename _CharT, typename _OutIter>
  15401.     _OutIter
  15402.     num_put<_CharT, _OutIter>::
  15403.     do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
  15404.     {
  15405.       const ios_base::fmtflags __flags = __io.flags();
  15406.       if ((__flags & ios_base::boolalpha) == 0)
  15407.         {
  15408.           const long __l = __v;
  15409.           __s = _M_insert_int(__s, __io, __fill, __l);
  15410.         }
  15411.       else
  15412.         {
  15413.    typedef __numpunct_cache<_CharT> __cache_type;
  15414.    __use_cache<__cache_type> __uc;
  15415.    const locale& __loc = __io._M_getloc();
  15416.    const __cache_type* __lc = __uc(__loc);
  15417.  
  15418.    const _CharT* __name = __v ? __lc->_M_truename
  15419.                               : __lc->_M_falsename;
  15420.    int __len = __v ? __lc->_M_truename_size
  15421.                    : __lc->_M_falsename_size;
  15422.  
  15423.    const streamsize __w = __io.width();
  15424.    if (__w > static_cast<streamsize>(__len))
  15425.      {
  15426.        const streamsize __plen = __w - __len;
  15427.        _CharT* __ps
  15428.   = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
  15429.        * __plen));
  15430.  
  15431.        char_traits<_CharT>::assign(__ps, __plen, __fill);
  15432.        __io.width(0);
  15433.  
  15434.        if ((__flags & ios_base::adjustfield) == ios_base::left)
  15435.   {
  15436.     __s = std::__write(__s, __name, __len);
  15437.     __s = std::__write(__s, __ps, __plen);
  15438.   }
  15439.        else
  15440.   {
  15441.     __s = std::__write(__s, __ps, __plen);
  15442.     __s = std::__write(__s, __name, __len);
  15443.   }
  15444.        return __s;
  15445.      }
  15446.    __io.width(0);
  15447.    __s = std::__write(__s, __name, __len);
  15448.  }
  15449.       return __s;
  15450.     }
  15451.  
  15452.   template<typename _CharT, typename _OutIter>
  15453.     _OutIter
  15454.     num_put<_CharT, _OutIter>::
  15455.     do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
  15456.     { return _M_insert_float(__s, __io, __fill, char(), __v); }
  15457. # 1169 "/usr/include/c++/5/bits/locale_facets.tcc" 3
  15458.   template<typename _CharT, typename _OutIter>
  15459.     _OutIter
  15460.     num_put<_CharT, _OutIter>::
  15461.     do_put(iter_type __s, ios_base& __io, char_type __fill,
  15462.     long double __v) const
  15463.     { return _M_insert_float(__s, __io, __fill, 'L', __v); }
  15464.  
  15465.   template<typename _CharT, typename _OutIter>
  15466.     _OutIter
  15467.     num_put<_CharT, _OutIter>::
  15468.     do_put(iter_type __s, ios_base& __io, char_type __fill,
  15469.            const void* __v) const
  15470.     {
  15471.       const ios_base::fmtflags __flags = __io.flags();
  15472.       const ios_base::fmtflags __fmt = ~(ios_base::basefield
  15473.       | ios_base::uppercase);
  15474.       __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase));
  15475.  
  15476.       typedef __gnu_cxx::__conditional_type<(sizeof(const void*)
  15477.           <= sizeof(unsigned long)),
  15478.  unsigned long, unsigned long long>::__type _UIntPtrType;
  15479.  
  15480.       __s = _M_insert_int(__s, __io, __fill,
  15481.      reinterpret_cast<_UIntPtrType>(__v));
  15482.       __io.flags(__flags);
  15483.       return __s;
  15484.     }
  15485.  
  15486.  
  15487. # 1206 "/usr/include/c++/5/bits/locale_facets.tcc" 3
  15488.   template<typename _CharT, typename _Traits>
  15489.     void
  15490.     __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,
  15491.        _CharT* __news, const _CharT* __olds,
  15492.        streamsize __newlen, streamsize __oldlen)
  15493.     {
  15494.       const size_t __plen = static_cast<size_t>(__newlen - __oldlen);
  15495.       const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;
  15496.  
  15497.  
  15498.       if (__adjust == ios_base::left)
  15499.  {
  15500.    _Traits::copy(__news, __olds, __oldlen);
  15501.    _Traits::assign(__news + __oldlen, __plen, __fill);
  15502.    return;
  15503.  }
  15504.  
  15505.       size_t __mod = 0;
  15506.       if (__adjust == ios_base::internal)
  15507.  {
  15508.  
  15509.  
  15510.  
  15511.           const locale& __loc = __io._M_getloc();
  15512.    const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
  15513.  
  15514.    if (__ctype.widen('-') == __olds[0]
  15515.        || __ctype.widen('+') == __olds[0])
  15516.      {
  15517.        __news[0] = __olds[0];
  15518.        __mod = 1;
  15519.        ++__news;
  15520.      }
  15521.    else if (__ctype.widen('0') == __olds[0]
  15522.      && __oldlen > 1
  15523.      && (__ctype.widen('x') == __olds[1]
  15524.          || __ctype.widen('X') == __olds[1]))
  15525.      {
  15526.        __news[0] = __olds[0];
  15527.        __news[1] = __olds[1];
  15528.        __mod = 2;
  15529.        __news += 2;
  15530.      }
  15531.  
  15532.  }
  15533.       _Traits::assign(__news, __plen, __fill);
  15534.       _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod);
  15535.     }
  15536.  
  15537.   template<typename _CharT>
  15538.     _CharT*
  15539.     __add_grouping(_CharT* __s, _CharT __sep,
  15540.      const char* __gbeg, size_t __gsize,
  15541.      const _CharT* __first, const _CharT* __last)
  15542.     {
  15543.       size_t __idx = 0;
  15544.       size_t __ctr = 0;
  15545.  
  15546.       while (__last - __first > __gbeg[__idx]
  15547.       && static_cast<signed char>(__gbeg[__idx]) > 0
  15548.       && __gbeg[__idx] != __gnu_cxx::__numeric_traits<char>::__max)
  15549.  {
  15550.    __last -= __gbeg[__idx];
  15551.    __idx < __gsize - 1 ? ++__idx : ++__ctr;
  15552.  }
  15553.  
  15554.       while (__first != __last)
  15555.  *__s++ = *__first++;
  15556.  
  15557.       while (__ctr--)
  15558.  {
  15559.    *__s++ = __sep;
  15560.    for (char __i = __gbeg[__idx]; __i > 0; --__i)
  15561.      *__s++ = *__first++;
  15562.  }
  15563.  
  15564.       while (__idx--)
  15565.  {
  15566.    *__s++ = __sep;
  15567.    for (char __i = __gbeg[__idx]; __i > 0; --__i)
  15568.      *__s++ = *__first++;
  15569.  }
  15570.  
  15571.       return __s;
  15572.     }
  15573.  
  15574.  
  15575.  
  15576.  
  15577.   extern template class __cxx11:: numpunct<char>;
  15578.   extern template class __cxx11:: numpunct_byname<char>;
  15579.   extern template class num_get<char>;
  15580.   extern template class num_put<char>;
  15581.   extern template class ctype_byname<char>;
  15582.  
  15583.   extern template
  15584.     const ctype<char>&
  15585.     use_facet<ctype<char> >(const locale&);
  15586.  
  15587.   extern template
  15588.     const numpunct<char>&
  15589.     use_facet<numpunct<char> >(const locale&);
  15590.  
  15591.   extern template
  15592.     const num_put<char>&
  15593.     use_facet<num_put<char> >(const locale&);
  15594.  
  15595.   extern template
  15596.     const num_get<char>&
  15597.     use_facet<num_get<char> >(const locale&);
  15598.  
  15599.   extern template
  15600.     bool
  15601.     has_facet<ctype<char> >(const locale&);
  15602.  
  15603.   extern template
  15604.     bool
  15605.     has_facet<numpunct<char> >(const locale&);
  15606.  
  15607.   extern template
  15608.     bool
  15609.     has_facet<num_put<char> >(const locale&);
  15610.  
  15611.   extern template
  15612.     bool
  15613.     has_facet<num_get<char> >(const locale&);
  15614.  
  15615.  
  15616.   extern template class __cxx11:: numpunct<wchar_t>;
  15617.   extern template class __cxx11:: numpunct_byname<wchar_t>;
  15618.   extern template class num_get<wchar_t>;
  15619.   extern template class num_put<wchar_t>;
  15620.   extern template class ctype_byname<wchar_t>;
  15621.  
  15622.   extern template
  15623.     const ctype<wchar_t>&
  15624.     use_facet<ctype<wchar_t> >(const locale&);
  15625.  
  15626.   extern template
  15627.     const numpunct<wchar_t>&
  15628.     use_facet<numpunct<wchar_t> >(const locale&);
  15629.  
  15630.   extern template
  15631.     const num_put<wchar_t>&
  15632.     use_facet<num_put<wchar_t> >(const locale&);
  15633.  
  15634.   extern template
  15635.     const num_get<wchar_t>&
  15636.     use_facet<num_get<wchar_t> >(const locale&);
  15637.  
  15638.  extern template
  15639.     bool
  15640.     has_facet<ctype<wchar_t> >(const locale&);
  15641.  
  15642.   extern template
  15643.     bool
  15644.     has_facet<numpunct<wchar_t> >(const locale&);
  15645.  
  15646.   extern template
  15647.     bool
  15648.     has_facet<num_put<wchar_t> >(const locale&);
  15649.  
  15650.   extern template
  15651.     bool
  15652.     has_facet<num_get<wchar_t> >(const locale&);
  15653.  
  15654.  
  15655.  
  15656.  
  15657. }
  15658. # 2652 "/usr/include/c++/5/bits/locale_facets.h" 2 3
  15659. # 38 "/usr/include/c++/5/bits/basic_ios.h" 2 3
  15660.  
  15661.  
  15662.  
  15663. namespace std __attribute__ ((__visibility__ ("default")))
  15664. {
  15665.  
  15666.  
  15667.   template<typename _Facet>
  15668.     inline const _Facet&
  15669.     __check_facet(const _Facet* __f)
  15670.     {
  15671.       if (!__f)
  15672.  __throw_bad_cast();
  15673.       return *__f;
  15674.     }
  15675. # 66 "/usr/include/c++/5/bits/basic_ios.h" 3
  15676.   template<typename _CharT, typename _Traits>
  15677.     class basic_ios : public ios_base
  15678.     {
  15679.     public:
  15680.  
  15681.  
  15682.  
  15683.  
  15684.  
  15685.  
  15686.       typedef _CharT char_type;
  15687.       typedef typename _Traits::int_type int_type;
  15688.       typedef typename _Traits::pos_type pos_type;
  15689.       typedef typename _Traits::off_type off_type;
  15690.       typedef _Traits traits_type;
  15691.  
  15692.  
  15693.  
  15694.  
  15695.  
  15696.  
  15697.       typedef ctype<_CharT> __ctype_type;
  15698.       typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
  15699.            __num_put_type;
  15700.       typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
  15701.            __num_get_type;
  15702.  
  15703.  
  15704.  
  15705.     protected:
  15706.       basic_ostream<_CharT, _Traits>* _M_tie;
  15707.       mutable char_type _M_fill;
  15708.       mutable bool _M_fill_init;
  15709.       basic_streambuf<_CharT, _Traits>* _M_streambuf;
  15710.  
  15711.  
  15712.       const __ctype_type* _M_ctype;
  15713.  
  15714.       const __num_put_type* _M_num_put;
  15715.  
  15716.       const __num_get_type* _M_num_get;
  15717.  
  15718.     public:
  15719. # 120 "/usr/include/c++/5/bits/basic_ios.h" 3
  15720.       operator void*() const
  15721.       { return this->fail() ? 0 : const_cast<basic_ios*>(this); }
  15722.  
  15723.  
  15724.       bool
  15725.       operator!() const
  15726.       { return this->fail(); }
  15727. # 136 "/usr/include/c++/5/bits/basic_ios.h" 3
  15728.       iostate
  15729.       rdstate() const
  15730.       { return _M_streambuf_state; }
  15731. # 147 "/usr/include/c++/5/bits/basic_ios.h" 3
  15732.       void
  15733.       clear(iostate __state = goodbit);
  15734.  
  15735.  
  15736.  
  15737.  
  15738.  
  15739.  
  15740.  
  15741.       void
  15742.       setstate(iostate __state)
  15743.       { this->clear(this->rdstate() | __state); }
  15744.  
  15745.  
  15746.  
  15747.  
  15748.       void
  15749.       _M_setstate(iostate __state)
  15750.       {
  15751.  
  15752.  
  15753.  _M_streambuf_state |= __state;
  15754.  if (this->exceptions() & __state)
  15755.    throw;
  15756.       }
  15757.  
  15758.  
  15759.  
  15760.  
  15761.  
  15762.  
  15763.  
  15764.       bool
  15765.       good() const
  15766.       { return this->rdstate() == 0; }
  15767.  
  15768.  
  15769.  
  15770.  
  15771.  
  15772.  
  15773.  
  15774.       bool
  15775.       eof() const
  15776.       { return (this->rdstate() & eofbit) != 0; }
  15777. # 200 "/usr/include/c++/5/bits/basic_ios.h" 3
  15778.       bool
  15779.       fail() const
  15780.       { return (this->rdstate() & (badbit | failbit)) != 0; }
  15781.  
  15782.  
  15783.  
  15784.  
  15785.  
  15786.  
  15787.  
  15788.       bool
  15789.       bad() const
  15790.       { return (this->rdstate() & badbit) != 0; }
  15791. # 221 "/usr/include/c++/5/bits/basic_ios.h" 3
  15792.       iostate
  15793.       exceptions() const
  15794.       { return _M_exception; }
  15795. # 256 "/usr/include/c++/5/bits/basic_ios.h" 3
  15796.       void
  15797.       exceptions(iostate __except)
  15798.       {
  15799.         _M_exception = __except;
  15800.         this->clear(_M_streambuf_state);
  15801.       }
  15802.  
  15803.  
  15804.  
  15805.  
  15806.  
  15807.  
  15808.  
  15809.       explicit
  15810.       basic_ios(basic_streambuf<_CharT, _Traits>* __sb)
  15811.       : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0),
  15812.  _M_ctype(0), _M_num_put(0), _M_num_get(0)
  15813.       { this->init(__sb); }
  15814.  
  15815.  
  15816.  
  15817.  
  15818.  
  15819.  
  15820.  
  15821.       virtual
  15822.       ~basic_ios() { }
  15823. # 294 "/usr/include/c++/5/bits/basic_ios.h" 3
  15824.       basic_ostream<_CharT, _Traits>*
  15825.       tie() const
  15826.       { return _M_tie; }
  15827. # 306 "/usr/include/c++/5/bits/basic_ios.h" 3
  15828.       basic_ostream<_CharT, _Traits>*
  15829.       tie(basic_ostream<_CharT, _Traits>* __tiestr)
  15830.       {
  15831.         basic_ostream<_CharT, _Traits>* __old = _M_tie;
  15832.         _M_tie = __tiestr;
  15833.         return __old;
  15834.       }
  15835.  
  15836.  
  15837.  
  15838.  
  15839.  
  15840.  
  15841.  
  15842.       basic_streambuf<_CharT, _Traits>*
  15843.       rdbuf() const
  15844.       { return _M_streambuf; }
  15845. # 346 "/usr/include/c++/5/bits/basic_ios.h" 3
  15846.       basic_streambuf<_CharT, _Traits>*
  15847.       rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
  15848. # 360 "/usr/include/c++/5/bits/basic_ios.h" 3
  15849.       basic_ios&
  15850.       copyfmt(const basic_ios& __rhs);
  15851.  
  15852.  
  15853.  
  15854.  
  15855.  
  15856.  
  15857.  
  15858.       char_type
  15859.       fill() const
  15860.       {
  15861.  if (!_M_fill_init)
  15862.    {
  15863.      _M_fill = this->widen(' ');
  15864.      _M_fill_init = true;
  15865.    }
  15866.  return _M_fill;
  15867.       }
  15868. # 389 "/usr/include/c++/5/bits/basic_ios.h" 3
  15869.       char_type
  15870.       fill(char_type __ch)
  15871.       {
  15872.  char_type __old = this->fill();
  15873.  _M_fill = __ch;
  15874.  return __old;
  15875.       }
  15876. # 409 "/usr/include/c++/5/bits/basic_ios.h" 3
  15877.       locale
  15878.       imbue(const locale& __loc);
  15879. # 429 "/usr/include/c++/5/bits/basic_ios.h" 3
  15880.       char
  15881.       narrow(char_type __c, char __dfault) const
  15882.       { return __check_facet(_M_ctype).narrow(__c, __dfault); }
  15883. # 448 "/usr/include/c++/5/bits/basic_ios.h" 3
  15884.       char_type
  15885.       widen(char __c) const
  15886.       { return __check_facet(_M_ctype).widen(__c); }
  15887.  
  15888.     protected:
  15889.  
  15890.  
  15891.  
  15892.  
  15893.  
  15894.  
  15895.  
  15896.       basic_ios()
  15897.       : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false),
  15898.  _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
  15899.       { }
  15900.  
  15901.  
  15902.  
  15903.  
  15904.  
  15905.  
  15906.  
  15907.       void
  15908.       init(basic_streambuf<_CharT, _Traits>* __sb);
  15909. # 509 "/usr/include/c++/5/bits/basic_ios.h" 3
  15910.       void
  15911.       _M_cache_locale(const locale& __loc);
  15912.     };
  15913.  
  15914.  
  15915. }
  15916.  
  15917. # 1 "/usr/include/c++/5/bits/basic_ios.tcc" 1 3
  15918. # 33 "/usr/include/c++/5/bits/basic_ios.tcc" 3
  15919.        
  15920. # 34 "/usr/include/c++/5/bits/basic_ios.tcc" 3
  15921.  
  15922. namespace std __attribute__ ((__visibility__ ("default")))
  15923. {
  15924.  
  15925.  
  15926.   template<typename _CharT, typename _Traits>
  15927.     void
  15928.     basic_ios<_CharT, _Traits>::clear(iostate __state)
  15929.     {
  15930.       if (this->rdbuf())
  15931.  _M_streambuf_state = __state;
  15932.       else
  15933.    _M_streambuf_state = __state | badbit;
  15934.       if (this->exceptions() & this->rdstate())
  15935.  __throw_ios_failure(("basic_ios::clear"));
  15936.     }
  15937.  
  15938.   template<typename _CharT, typename _Traits>
  15939.     basic_streambuf<_CharT, _Traits>*
  15940.     basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb)
  15941.     {
  15942.       basic_streambuf<_CharT, _Traits>* __old = _M_streambuf;
  15943.       _M_streambuf = __sb;
  15944.       this->clear();
  15945.       return __old;
  15946.     }
  15947.  
  15948.   template<typename _CharT, typename _Traits>
  15949.     basic_ios<_CharT, _Traits>&
  15950.     basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs)
  15951.     {
  15952.  
  15953.  
  15954.       if (this != &__rhs)
  15955.  {
  15956.  
  15957.  
  15958.  
  15959.  
  15960.    _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ?
  15961.                       _M_local_word : new _Words[__rhs._M_word_size];
  15962.  
  15963.  
  15964.    _Callback_list* __cb = __rhs._M_callbacks;
  15965.    if (__cb)
  15966.      __cb->_M_add_reference();
  15967.    _M_call_callbacks(erase_event);
  15968.    if (_M_word != _M_local_word)
  15969.      {
  15970.        delete [] _M_word;
  15971.        _M_word = 0;
  15972.      }
  15973.    _M_dispose_callbacks();
  15974.  
  15975.  
  15976.    _M_callbacks = __cb;
  15977.    for (int __i = 0; __i < __rhs._M_word_size; ++__i)
  15978.      __words[__i] = __rhs._M_word[__i];
  15979.    _M_word = __words;
  15980.    _M_word_size = __rhs._M_word_size;
  15981.  
  15982.    this->flags(__rhs.flags());
  15983.    this->width(__rhs.width());
  15984.    this->precision(__rhs.precision());
  15985.    this->tie(__rhs.tie());
  15986.    this->fill(__rhs.fill());
  15987.    _M_ios_locale = __rhs.getloc();
  15988.    _M_cache_locale(_M_ios_locale);
  15989.  
  15990.    _M_call_callbacks(copyfmt_event);
  15991.  
  15992.  
  15993.    this->exceptions(__rhs.exceptions());
  15994.  }
  15995.       return *this;
  15996.     }
  15997.  
  15998.  
  15999.   template<typename _CharT, typename _Traits>
  16000.     locale
  16001.     basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
  16002.     {
  16003.       locale __old(this->getloc());
  16004.       ios_base::imbue(__loc);
  16005.       _M_cache_locale(__loc);
  16006.       if (this->rdbuf() != 0)
  16007.  this->rdbuf()->pubimbue(__loc);
  16008.       return __old;
  16009.     }
  16010.  
  16011.   template<typename _CharT, typename _Traits>
  16012.     void
  16013.     basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb)
  16014.     {
  16015.  
  16016.       ios_base::_M_init();
  16017.  
  16018.  
  16019.       _M_cache_locale(_M_ios_locale);
  16020. # 146 "/usr/include/c++/5/bits/basic_ios.tcc" 3
  16021.       _M_fill = _CharT();
  16022.       _M_fill_init = false;
  16023.  
  16024.       _M_tie = 0;
  16025.       _M_exception = goodbit;
  16026.       _M_streambuf = __sb;
  16027.       _M_streambuf_state = __sb ? goodbit : badbit;
  16028.     }
  16029.  
  16030.   template<typename _CharT, typename _Traits>
  16031.     void
  16032.     basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc)
  16033.     {
  16034.       if (__builtin_expect(has_facet<__ctype_type>(__loc), true))
  16035.  _M_ctype = &use_facet<__ctype_type>(__loc);
  16036.       else
  16037.  _M_ctype = 0;
  16038.  
  16039.       if (__builtin_expect(has_facet<__num_put_type>(__loc), true))
  16040.  _M_num_put = &use_facet<__num_put_type>(__loc);
  16041.       else
  16042.  _M_num_put = 0;
  16043.  
  16044.       if (__builtin_expect(has_facet<__num_get_type>(__loc), true))
  16045.  _M_num_get = &use_facet<__num_get_type>(__loc);
  16046.       else
  16047.  _M_num_get = 0;
  16048.     }
  16049.  
  16050.  
  16051.  
  16052.  
  16053.   extern template class basic_ios<char>;
  16054.  
  16055.  
  16056.   extern template class basic_ios<wchar_t>;
  16057.  
  16058.  
  16059.  
  16060.  
  16061. }
  16062. # 517 "/usr/include/c++/5/bits/basic_ios.h" 2 3
  16063. # 45 "/usr/include/c++/5/ios" 2 3
  16064. # 39 "/usr/include/c++/5/ostream" 2 3
  16065.  
  16066.  
  16067. namespace std __attribute__ ((__visibility__ ("default")))
  16068. {
  16069.  
  16070. # 57 "/usr/include/c++/5/ostream" 3
  16071.   template<typename _CharT, typename _Traits>
  16072.     class basic_ostream : virtual public basic_ios<_CharT, _Traits>
  16073.     {
  16074.     public:
  16075.  
  16076.       typedef _CharT char_type;
  16077.       typedef typename _Traits::int_type int_type;
  16078.       typedef typename _Traits::pos_type pos_type;
  16079.       typedef typename _Traits::off_type off_type;
  16080.       typedef _Traits traits_type;
  16081.  
  16082.  
  16083.       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
  16084.       typedef basic_ios<_CharT, _Traits> __ios_type;
  16085.       typedef basic_ostream<_CharT, _Traits> __ostream_type;
  16086.       typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
  16087.              __num_put_type;
  16088.       typedef ctype<_CharT> __ctype_type;
  16089. # 83 "/usr/include/c++/5/ostream" 3
  16090.       explicit
  16091.       basic_ostream(__streambuf_type* __sb)
  16092.       { this->init(__sb); }
  16093.  
  16094.  
  16095.  
  16096.  
  16097.  
  16098.  
  16099.       virtual
  16100.       ~basic_ostream() { }
  16101.  
  16102.  
  16103.       class sentry;
  16104.       friend class sentry;
  16105. # 107 "/usr/include/c++/5/ostream" 3
  16106.       __ostream_type&
  16107.       operator<<(__ostream_type& (*__pf)(__ostream_type&))
  16108.       {
  16109.  
  16110.  
  16111.  
  16112.  return __pf(*this);
  16113.       }
  16114.  
  16115.       __ostream_type&
  16116.       operator<<(__ios_type& (*__pf)(__ios_type&))
  16117.       {
  16118.  
  16119.  
  16120.  
  16121.  __pf(*this);
  16122.  return *this;
  16123.       }
  16124.  
  16125.       __ostream_type&
  16126.       operator<<(ios_base& (*__pf) (ios_base&))
  16127.       {
  16128.  
  16129.  
  16130.  
  16131.  __pf(*this);
  16132.  return *this;
  16133.       }
  16134. # 165 "/usr/include/c++/5/ostream" 3
  16135.       __ostream_type&
  16136.       operator<<(long __n)
  16137.       { return _M_insert(__n); }
  16138.  
  16139.       __ostream_type&
  16140.       operator<<(unsigned long __n)
  16141.       { return _M_insert(__n); }
  16142.  
  16143.       __ostream_type&
  16144.       operator<<(bool __n)
  16145.       { return _M_insert(__n); }
  16146.  
  16147.       __ostream_type&
  16148.       operator<<(short __n);
  16149.  
  16150.       __ostream_type&
  16151.       operator<<(unsigned short __n)
  16152.       {
  16153.  
  16154.  
  16155.  return _M_insert(static_cast<unsigned long>(__n));
  16156.       }
  16157.  
  16158.       __ostream_type&
  16159.       operator<<(int __n);
  16160.  
  16161.       __ostream_type&
  16162.       operator<<(unsigned int __n)
  16163.       {
  16164.  
  16165.  
  16166.  return _M_insert(static_cast<unsigned long>(__n));
  16167.       }
  16168.  
  16169.  
  16170.       __ostream_type&
  16171.       operator<<(long long __n)
  16172.       { return _M_insert(__n); }
  16173.  
  16174.       __ostream_type&
  16175.       operator<<(unsigned long long __n)
  16176.       { return _M_insert(__n); }
  16177. # 219 "/usr/include/c++/5/ostream" 3
  16178.       __ostream_type&
  16179.       operator<<(double __f)
  16180.       { return _M_insert(__f); }
  16181.  
  16182.       __ostream_type&
  16183.       operator<<(float __f)
  16184.       {
  16185.  
  16186.  
  16187.  return _M_insert(static_cast<double>(__f));
  16188.       }
  16189.  
  16190.       __ostream_type&
  16191.       operator<<(long double __f)
  16192.       { return _M_insert(__f); }
  16193. # 244 "/usr/include/c++/5/ostream" 3
  16194.       __ostream_type&
  16195.       operator<<(const void* __p)
  16196.       { return _M_insert(__p); }
  16197. # 269 "/usr/include/c++/5/ostream" 3
  16198.       __ostream_type&
  16199.       operator<<(__streambuf_type* __sb);
  16200. # 302 "/usr/include/c++/5/ostream" 3
  16201.       __ostream_type&
  16202.       put(char_type __c);
  16203.  
  16204.  
  16205.  
  16206.  
  16207.  
  16208.  
  16209.       void
  16210.       _M_write(const char_type* __s, streamsize __n)
  16211.       {
  16212.  const streamsize __put = this->rdbuf()->sputn(__s, __n);
  16213.  if (__put != __n)
  16214.    this->setstate(ios_base::badbit);
  16215.       }
  16216. # 334 "/usr/include/c++/5/ostream" 3
  16217.       __ostream_type&
  16218.       write(const char_type* __s, streamsize __n);
  16219. # 347 "/usr/include/c++/5/ostream" 3
  16220.       __ostream_type&
  16221.       flush();
  16222. # 357 "/usr/include/c++/5/ostream" 3
  16223.       pos_type
  16224.       tellp();
  16225. # 368 "/usr/include/c++/5/ostream" 3
  16226.       __ostream_type&
  16227.       seekp(pos_type);
  16228. # 380 "/usr/include/c++/5/ostream" 3
  16229.        __ostream_type&
  16230.       seekp(off_type, ios_base::seekdir);
  16231.  
  16232.     protected:
  16233.       basic_ostream()
  16234.       { this->init(0); }
  16235. # 413 "/usr/include/c++/5/ostream" 3
  16236.       template<typename _ValueT>
  16237.  __ostream_type&
  16238.  _M_insert(_ValueT __v);
  16239.     };
  16240. # 425 "/usr/include/c++/5/ostream" 3
  16241.   template <typename _CharT, typename _Traits>
  16242.     class basic_ostream<_CharT, _Traits>::sentry
  16243.     {
  16244.  
  16245.       bool _M_ok;
  16246.       basic_ostream<_CharT, _Traits>& _M_os;
  16247.  
  16248.     public:
  16249. # 444 "/usr/include/c++/5/ostream" 3
  16250.       explicit
  16251.       sentry(basic_ostream<_CharT, _Traits>& __os);
  16252. # 454 "/usr/include/c++/5/ostream" 3
  16253.       ~sentry()
  16254.       {
  16255.  
  16256.  if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception())
  16257.    {
  16258.  
  16259.      if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)
  16260.        _M_os.setstate(ios_base::badbit);
  16261.    }
  16262.       }
  16263. # 475 "/usr/include/c++/5/ostream" 3
  16264.       operator bool() const
  16265.       { return _M_ok; }
  16266.     };
  16267. # 495 "/usr/include/c++/5/ostream" 3
  16268.   template<typename _CharT, typename _Traits>
  16269.     inline basic_ostream<_CharT, _Traits>&
  16270.     operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
  16271.     { return __ostream_insert(__out, &__c, 1); }
  16272.  
  16273.   template<typename _CharT, typename _Traits>
  16274.     inline basic_ostream<_CharT, _Traits>&
  16275.     operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
  16276.     { return (__out << __out.widen(__c)); }
  16277.  
  16278.  
  16279.   template <class _Traits>
  16280.     inline basic_ostream<char, _Traits>&
  16281.     operator<<(basic_ostream<char, _Traits>& __out, char __c)
  16282.     { return __ostream_insert(__out, &__c, 1); }
  16283.  
  16284.  
  16285.   template<class _Traits>
  16286.     inline basic_ostream<char, _Traits>&
  16287.     operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
  16288.     { return (__out << static_cast<char>(__c)); }
  16289.  
  16290.   template<class _Traits>
  16291.     inline basic_ostream<char, _Traits>&
  16292.     operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
  16293.     { return (__out << static_cast<char>(__c)); }
  16294. # 537 "/usr/include/c++/5/ostream" 3
  16295.   template<typename _CharT, typename _Traits>
  16296.     inline basic_ostream<_CharT, _Traits>&
  16297.     operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
  16298.     {
  16299.       if (!__s)
  16300.  __out.setstate(ios_base::badbit);
  16301.       else
  16302.  __ostream_insert(__out, __s,
  16303.     static_cast<streamsize>(_Traits::length(__s)));
  16304.       return __out;
  16305.     }
  16306.  
  16307.   template<typename _CharT, typename _Traits>
  16308.     basic_ostream<_CharT, _Traits> &
  16309.     operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);
  16310.  
  16311.  
  16312.   template<class _Traits>
  16313.     inline basic_ostream<char, _Traits>&
  16314.     operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
  16315.     {
  16316.       if (!__s)
  16317.  __out.setstate(ios_base::badbit);
  16318.       else
  16319.  __ostream_insert(__out, __s,
  16320.     static_cast<streamsize>(_Traits::length(__s)));
  16321.       return __out;
  16322.     }
  16323.  
  16324.  
  16325.   template<class _Traits>
  16326.     inline basic_ostream<char, _Traits>&
  16327.     operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
  16328.     { return (__out << reinterpret_cast<const char*>(__s)); }
  16329.  
  16330.   template<class _Traits>
  16331.     inline basic_ostream<char, _Traits> &
  16332.     operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
  16333.     { return (__out << reinterpret_cast<const char*>(__s)); }
  16334. # 588 "/usr/include/c++/5/ostream" 3
  16335.   template<typename _CharT, typename _Traits>
  16336.     inline basic_ostream<_CharT, _Traits>&
  16337.     endl(basic_ostream<_CharT, _Traits>& __os)
  16338.     { return flush(__os.put(__os.widen('\n'))); }
  16339. # 600 "/usr/include/c++/5/ostream" 3
  16340.   template<typename _CharT, typename _Traits>
  16341.     inline basic_ostream<_CharT, _Traits>&
  16342.     ends(basic_ostream<_CharT, _Traits>& __os)
  16343.     { return __os.put(_CharT()); }
  16344.  
  16345.  
  16346.  
  16347.  
  16348.  
  16349.  
  16350.   template<typename _CharT, typename _Traits>
  16351.     inline basic_ostream<_CharT, _Traits>&
  16352.     flush(basic_ostream<_CharT, _Traits>& __os)
  16353.     { return __os.flush(); }
  16354. # 635 "/usr/include/c++/5/ostream" 3
  16355.  
  16356. }
  16357.  
  16358. # 1 "/usr/include/c++/5/bits/ostream.tcc" 1 3
  16359. # 37 "/usr/include/c++/5/bits/ostream.tcc" 3
  16360.        
  16361. # 38 "/usr/include/c++/5/bits/ostream.tcc" 3
  16362.  
  16363.  
  16364.  
  16365. namespace std __attribute__ ((__visibility__ ("default")))
  16366. {
  16367.  
  16368.  
  16369.   template<typename _CharT, typename _Traits>
  16370.     basic_ostream<_CharT, _Traits>::sentry::
  16371.     sentry(basic_ostream<_CharT, _Traits>& __os)
  16372.     : _M_ok(false), _M_os(__os)
  16373.     {
  16374.  
  16375.       if (__os.tie() && __os.good())
  16376.  __os.tie()->flush();
  16377.  
  16378.       if (__os.good())
  16379.  _M_ok = true;
  16380.       else
  16381.  __os.setstate(ios_base::failbit);
  16382.     }
  16383.  
  16384.   template<typename _CharT, typename _Traits>
  16385.     template<typename _ValueT>
  16386.       basic_ostream<_CharT, _Traits>&
  16387.       basic_ostream<_CharT, _Traits>::
  16388.       _M_insert(_ValueT __v)
  16389.       {
  16390.  sentry __cerb(*this);
  16391.  if (__cerb)
  16392.    {
  16393.      ios_base::iostate __err = ios_base::goodbit;
  16394.      try
  16395.        {
  16396.   const __num_put_type& __np = __check_facet(this->_M_num_put);
  16397.   if (__np.put(*this, *this, this->fill(), __v).failed())
  16398.     __err |= ios_base::badbit;
  16399.        }
  16400.      catch(__cxxabiv1::__forced_unwind&)
  16401.        {
  16402.   this->_M_setstate(ios_base::badbit);
  16403.   throw;
  16404.        }
  16405.      catch(...)
  16406.        { this->_M_setstate(ios_base::badbit); }
  16407.      if (__err)
  16408.        this->setstate(__err);
  16409.    }
  16410.  return *this;
  16411.       }
  16412.  
  16413.   template<typename _CharT, typename _Traits>
  16414.     basic_ostream<_CharT, _Traits>&
  16415.     basic_ostream<_CharT, _Traits>::
  16416.     operator<<(short __n)
  16417.     {
  16418.  
  16419.  
  16420.       const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
  16421.       if (__fmt == ios_base::oct || __fmt == ios_base::hex)
  16422.  return _M_insert(static_cast<long>(static_cast<unsigned short>(__n)));
  16423.       else
  16424.  return _M_insert(static_cast<long>(__n));
  16425.     }
  16426.  
  16427.   template<typename _CharT, typename _Traits>
  16428.     basic_ostream<_CharT, _Traits>&
  16429.     basic_ostream<_CharT, _Traits>::
  16430.     operator<<(int __n)
  16431.     {
  16432.  
  16433.  
  16434.       const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
  16435.       if (__fmt == ios_base::oct || __fmt == ios_base::hex)
  16436.  return _M_insert(static_cast<long>(static_cast<unsigned int>(__n)));
  16437.       else
  16438.  return _M_insert(static_cast<long>(__n));
  16439.     }
  16440.  
  16441.   template<typename _CharT, typename _Traits>
  16442.     basic_ostream<_CharT, _Traits>&
  16443.     basic_ostream<_CharT, _Traits>::
  16444.     operator<<(__streambuf_type* __sbin)
  16445.     {
  16446.       ios_base::iostate __err = ios_base::goodbit;
  16447.       sentry __cerb(*this);
  16448.       if (__cerb && __sbin)
  16449.  {
  16450.    try
  16451.      {
  16452.        if (!__copy_streambufs(__sbin, this->rdbuf()))
  16453.   __err |= ios_base::failbit;
  16454.      }
  16455.    catch(__cxxabiv1::__forced_unwind&)
  16456.      {
  16457.        this->_M_setstate(ios_base::badbit);
  16458.        throw;
  16459.      }
  16460.    catch(...)
  16461.      { this->_M_setstate(ios_base::failbit); }
  16462.  }
  16463.       else if (!__sbin)
  16464.  __err |= ios_base::badbit;
  16465.       if (__err)
  16466.  this->setstate(__err);
  16467.       return *this;
  16468.     }
  16469.  
  16470.   template<typename _CharT, typename _Traits>
  16471.     basic_ostream<_CharT, _Traits>&
  16472.     basic_ostream<_CharT, _Traits>::
  16473.     put(char_type __c)
  16474.     {
  16475.  
  16476.  
  16477.  
  16478.  
  16479.  
  16480.  
  16481.       sentry __cerb(*this);
  16482.       if (__cerb)
  16483.  {
  16484.    ios_base::iostate __err = ios_base::goodbit;
  16485.    try
  16486.      {
  16487.        const int_type __put = this->rdbuf()->sputc(__c);
  16488.        if (traits_type::eq_int_type(__put, traits_type::eof()))
  16489.   __err |= ios_base::badbit;
  16490.      }
  16491.    catch(__cxxabiv1::__forced_unwind&)
  16492.      {
  16493.        this->_M_setstate(ios_base::badbit);
  16494.        throw;
  16495.      }
  16496.    catch(...)
  16497.      { this->_M_setstate(ios_base::badbit); }
  16498.    if (__err)
  16499.      this->setstate(__err);
  16500.  }
  16501.       return *this;
  16502.     }
  16503.  
  16504.   template<typename _CharT, typename _Traits>
  16505.     basic_ostream<_CharT, _Traits>&
  16506.     basic_ostream<_CharT, _Traits>::
  16507.     write(const _CharT* __s, streamsize __n)
  16508.     {
  16509.  
  16510.  
  16511.  
  16512.  
  16513.  
  16514.  
  16515.  
  16516.       sentry __cerb(*this);
  16517.       if (__cerb)
  16518.  {
  16519.    try
  16520.      { _M_write(__s, __n); }
  16521.    catch(__cxxabiv1::__forced_unwind&)
  16522.      {
  16523.        this->_M_setstate(ios_base::badbit);
  16524.        throw;
  16525.      }
  16526.    catch(...)
  16527.      { this->_M_setstate(ios_base::badbit); }
  16528.  }
  16529.       return *this;
  16530.     }
  16531.  
  16532.   template<typename _CharT, typename _Traits>
  16533.     basic_ostream<_CharT, _Traits>&
  16534.     basic_ostream<_CharT, _Traits>::
  16535.     flush()
  16536.     {
  16537.  
  16538.  
  16539.  
  16540.       ios_base::iostate __err = ios_base::goodbit;
  16541.       try
  16542.  {
  16543.    if (this->rdbuf() && this->rdbuf()->pubsync() == -1)
  16544.      __err |= ios_base::badbit;
  16545.  }
  16546.       catch(__cxxabiv1::__forced_unwind&)
  16547.  {
  16548.    this->_M_setstate(ios_base::badbit);
  16549.    throw;
  16550.  }
  16551.       catch(...)
  16552.  { this->_M_setstate(ios_base::badbit); }
  16553.       if (__err)
  16554.  this->setstate(__err);
  16555.       return *this;
  16556.     }
  16557.  
  16558.   template<typename _CharT, typename _Traits>
  16559.     typename basic_ostream<_CharT, _Traits>::pos_type
  16560.     basic_ostream<_CharT, _Traits>::
  16561.     tellp()
  16562.     {
  16563.       pos_type __ret = pos_type(-1);
  16564.       try
  16565.  {
  16566.    if (!this->fail())
  16567.      __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
  16568.  }
  16569.       catch(__cxxabiv1::__forced_unwind&)
  16570.  {
  16571.    this->_M_setstate(ios_base::badbit);
  16572.    throw;
  16573.  }
  16574.       catch(...)
  16575.  { this->_M_setstate(ios_base::badbit); }
  16576.       return __ret;
  16577.     }
  16578.  
  16579.   template<typename _CharT, typename _Traits>
  16580.     basic_ostream<_CharT, _Traits>&
  16581.     basic_ostream<_CharT, _Traits>::
  16582.     seekp(pos_type __pos)
  16583.     {
  16584.       ios_base::iostate __err = ios_base::goodbit;
  16585.       try
  16586.  {
  16587.    if (!this->fail())
  16588.      {
  16589.  
  16590.  
  16591.        const pos_type __p = this->rdbuf()->pubseekpos(__pos,
  16592.             ios_base::out);
  16593.  
  16594.  
  16595.        if (__p == pos_type(off_type(-1)))
  16596.   __err |= ios_base::failbit;
  16597.      }
  16598.  }
  16599.       catch(__cxxabiv1::__forced_unwind&)
  16600.  {
  16601.    this->_M_setstate(ios_base::badbit);
  16602.    throw;
  16603.  }
  16604.       catch(...)
  16605.  { this->_M_setstate(ios_base::badbit); }
  16606.       if (__err)
  16607.  this->setstate(__err);
  16608.       return *this;
  16609.     }
  16610.  
  16611.   template<typename _CharT, typename _Traits>
  16612.     basic_ostream<_CharT, _Traits>&
  16613.     basic_ostream<_CharT, _Traits>::
  16614.     seekp(off_type __off, ios_base::seekdir __dir)
  16615.     {
  16616.       ios_base::iostate __err = ios_base::goodbit;
  16617.       try
  16618.  {
  16619.    if (!this->fail())
  16620.      {
  16621.  
  16622.  
  16623.        const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
  16624.             ios_base::out);
  16625.  
  16626.  
  16627.        if (__p == pos_type(off_type(-1)))
  16628.   __err |= ios_base::failbit;
  16629.      }
  16630.  }
  16631.       catch(__cxxabiv1::__forced_unwind&)
  16632.  {
  16633.    this->_M_setstate(ios_base::badbit);
  16634.    throw;
  16635.  }
  16636.       catch(...)
  16637.  { this->_M_setstate(ios_base::badbit); }
  16638.       if (__err)
  16639.  this->setstate(__err);
  16640.       return *this;
  16641.     }
  16642.  
  16643.   template<typename _CharT, typename _Traits>
  16644.     basic_ostream<_CharT, _Traits>&
  16645.     operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
  16646.     {
  16647.       if (!__s)
  16648.  __out.setstate(ios_base::badbit);
  16649.       else
  16650.  {
  16651.  
  16652.  
  16653.    const size_t __clen = char_traits<char>::length(__s);
  16654.    try
  16655.      {
  16656.        struct __ptr_guard
  16657.        {
  16658.   _CharT *__p;
  16659.   __ptr_guard (_CharT *__ip): __p(__ip) { }
  16660.   ~__ptr_guard() { delete[] __p; }
  16661.   _CharT* __get() { return __p; }
  16662.        } __pg (new _CharT[__clen]);
  16663.  
  16664.        _CharT *__ws = __pg.__get();
  16665.        for (size_t __i = 0; __i < __clen; ++__i)
  16666.   __ws[__i] = __out.widen(__s[__i]);
  16667.        __ostream_insert(__out, __ws, __clen);
  16668.      }
  16669.    catch(__cxxabiv1::__forced_unwind&)
  16670.      {
  16671.        __out._M_setstate(ios_base::badbit);
  16672.        throw;
  16673.      }
  16674.    catch(...)
  16675.      { __out._M_setstate(ios_base::badbit); }
  16676.  }
  16677.       return __out;
  16678.     }
  16679.  
  16680.  
  16681.  
  16682.  
  16683.   extern template class basic_ostream<char>;
  16684.   extern template ostream& endl(ostream&);
  16685.   extern template ostream& ends(ostream&);
  16686.   extern template ostream& flush(ostream&);
  16687.   extern template ostream& operator<<(ostream&, char);
  16688.   extern template ostream& operator<<(ostream&, unsigned char);
  16689.   extern template ostream& operator<<(ostream&, signed char);
  16690.   extern template ostream& operator<<(ostream&, const char*);
  16691.   extern template ostream& operator<<(ostream&, const unsigned char*);
  16692.   extern template ostream& operator<<(ostream&, const signed char*);
  16693.  
  16694.   extern template ostream& ostream::_M_insert(long);
  16695.   extern template ostream& ostream::_M_insert(unsigned long);
  16696.   extern template ostream& ostream::_M_insert(bool);
  16697.  
  16698.   extern template ostream& ostream::_M_insert(long long);
  16699.   extern template ostream& ostream::_M_insert(unsigned long long);
  16700.  
  16701.   extern template ostream& ostream::_M_insert(double);
  16702.   extern template ostream& ostream::_M_insert(long double);
  16703.   extern template ostream& ostream::_M_insert(const void*);
  16704.  
  16705.  
  16706.   extern template class basic_ostream<wchar_t>;
  16707.   extern template wostream& endl(wostream&);
  16708.   extern template wostream& ends(wostream&);
  16709.   extern template wostream& flush(wostream&);
  16710.   extern template wostream& operator<<(wostream&, wchar_t);
  16711.   extern template wostream& operator<<(wostream&, char);
  16712.   extern template wostream& operator<<(wostream&, const wchar_t*);
  16713.   extern template wostream& operator<<(wostream&, const char*);
  16714.  
  16715.   extern template wostream& wostream::_M_insert(long);
  16716.   extern template wostream& wostream::_M_insert(unsigned long);
  16717.   extern template wostream& wostream::_M_insert(bool);
  16718.  
  16719.   extern template wostream& wostream::_M_insert(long long);
  16720.   extern template wostream& wostream::_M_insert(unsigned long long);
  16721.  
  16722.   extern template wostream& wostream::_M_insert(double);
  16723.   extern template wostream& wostream::_M_insert(long double);
  16724.   extern template wostream& wostream::_M_insert(const void*);
  16725.  
  16726.  
  16727.  
  16728.  
  16729. }
  16730. # 639 "/usr/include/c++/5/ostream" 2 3
  16731. # 40 "/usr/include/c++/5/iostream" 2 3
  16732. # 1 "/usr/include/c++/5/istream" 1 3
  16733. # 36 "/usr/include/c++/5/istream" 3
  16734.        
  16735. # 37 "/usr/include/c++/5/istream" 3
  16736.  
  16737.  
  16738.  
  16739.  
  16740. namespace std __attribute__ ((__visibility__ ("default")))
  16741. {
  16742.  
  16743. # 57 "/usr/include/c++/5/istream" 3
  16744.   template<typename _CharT, typename _Traits>
  16745.     class basic_istream : virtual public basic_ios<_CharT, _Traits>
  16746.     {
  16747.     public:
  16748.  
  16749.       typedef _CharT char_type;
  16750.       typedef typename _Traits::int_type int_type;
  16751.       typedef typename _Traits::pos_type pos_type;
  16752.       typedef typename _Traits::off_type off_type;
  16753.       typedef _Traits traits_type;
  16754.  
  16755.  
  16756.       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
  16757.       typedef basic_ios<_CharT, _Traits> __ios_type;
  16758.       typedef basic_istream<_CharT, _Traits> __istream_type;
  16759.       typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
  16760.         __num_get_type;
  16761.       typedef ctype<_CharT> __ctype_type;
  16762.  
  16763.     protected:
  16764.  
  16765.  
  16766.  
  16767.  
  16768.  
  16769.       streamsize _M_gcount;
  16770.  
  16771.     public:
  16772.  
  16773.  
  16774.  
  16775.  
  16776.  
  16777.  
  16778.  
  16779.       explicit
  16780.       basic_istream(__streambuf_type* __sb)
  16781.       : _M_gcount(streamsize(0))
  16782.       { this->init(__sb); }
  16783.  
  16784.  
  16785.  
  16786.  
  16787.  
  16788.  
  16789.       virtual
  16790.       ~basic_istream()
  16791.       { _M_gcount = streamsize(0); }
  16792.  
  16793.  
  16794.       class sentry;
  16795.       friend class sentry;
  16796. # 119 "/usr/include/c++/5/istream" 3
  16797.       __istream_type&
  16798.       operator>>(__istream_type& (*__pf)(__istream_type&))
  16799.       { return __pf(*this); }
  16800.  
  16801.       __istream_type&
  16802.       operator>>(__ios_type& (*__pf)(__ios_type&))
  16803.       {
  16804.  __pf(*this);
  16805.  return *this;
  16806.       }
  16807.  
  16808.       __istream_type&
  16809.       operator>>(ios_base& (*__pf)(ios_base&))
  16810.       {
  16811.  __pf(*this);
  16812.  return *this;
  16813.       }
  16814. # 167 "/usr/include/c++/5/istream" 3
  16815.       __istream_type&
  16816.       operator>>(bool& __n)
  16817.       { return _M_extract(__n); }
  16818.  
  16819.       __istream_type&
  16820.       operator>>(short& __n);
  16821.  
  16822.       __istream_type&
  16823.       operator>>(unsigned short& __n)
  16824.       { return _M_extract(__n); }
  16825.  
  16826.       __istream_type&
  16827.       operator>>(int& __n);
  16828.  
  16829.       __istream_type&
  16830.       operator>>(unsigned int& __n)
  16831.       { return _M_extract(__n); }
  16832.  
  16833.       __istream_type&
  16834.       operator>>(long& __n)
  16835.       { return _M_extract(__n); }
  16836.  
  16837.       __istream_type&
  16838.       operator>>(unsigned long& __n)
  16839.       { return _M_extract(__n); }
  16840.  
  16841.  
  16842.       __istream_type&
  16843.       operator>>(long long& __n)
  16844.       { return _M_extract(__n); }
  16845.  
  16846.       __istream_type&
  16847.       operator>>(unsigned long long& __n)
  16848.       { return _M_extract(__n); }
  16849. # 213 "/usr/include/c++/5/istream" 3
  16850.       __istream_type&
  16851.       operator>>(float& __f)
  16852.       { return _M_extract(__f); }
  16853.  
  16854.       __istream_type&
  16855.       operator>>(double& __f)
  16856.       { return _M_extract(__f); }
  16857.  
  16858.       __istream_type&
  16859.       operator>>(long double& __f)
  16860.       { return _M_extract(__f); }
  16861. # 234 "/usr/include/c++/5/istream" 3
  16862.       __istream_type&
  16863.       operator>>(void*& __p)
  16864.       { return _M_extract(__p); }
  16865. # 258 "/usr/include/c++/5/istream" 3
  16866.       __istream_type&
  16867.       operator>>(__streambuf_type* __sb);
  16868. # 268 "/usr/include/c++/5/istream" 3
  16869.       streamsize
  16870.       gcount() const
  16871.       { return _M_gcount; }
  16872. # 301 "/usr/include/c++/5/istream" 3
  16873.       int_type
  16874.       get();
  16875. # 315 "/usr/include/c++/5/istream" 3
  16876.       __istream_type&
  16877.       get(char_type& __c);
  16878. # 342 "/usr/include/c++/5/istream" 3
  16879.       __istream_type&
  16880.       get(char_type* __s, streamsize __n, char_type __delim);
  16881. # 353 "/usr/include/c++/5/istream" 3
  16882.       __istream_type&
  16883.       get(char_type* __s, streamsize __n)
  16884.       { return this->get(__s, __n, this->widen('\n')); }
  16885. # 376 "/usr/include/c++/5/istream" 3
  16886.       __istream_type&
  16887.       get(__streambuf_type& __sb, char_type __delim);
  16888. # 386 "/usr/include/c++/5/istream" 3
  16889.       __istream_type&
  16890.       get(__streambuf_type& __sb)
  16891.       { return this->get(__sb, this->widen('\n')); }
  16892. # 415 "/usr/include/c++/5/istream" 3
  16893.       __istream_type&
  16894.       getline(char_type* __s, streamsize __n, char_type __delim);
  16895. # 426 "/usr/include/c++/5/istream" 3
  16896.       __istream_type&
  16897.       getline(char_type* __s, streamsize __n)
  16898.       { return this->getline(__s, __n, this->widen('\n')); }
  16899. # 450 "/usr/include/c++/5/istream" 3
  16900.       __istream_type&
  16901.       ignore(streamsize __n, int_type __delim);
  16902.  
  16903.       __istream_type&
  16904.       ignore(streamsize __n);
  16905.  
  16906.       __istream_type&
  16907.       ignore();
  16908. # 467 "/usr/include/c++/5/istream" 3
  16909.       int_type
  16910.       peek();
  16911. # 485 "/usr/include/c++/5/istream" 3
  16912.       __istream_type&
  16913.       read(char_type* __s, streamsize __n);
  16914. # 504 "/usr/include/c++/5/istream" 3
  16915.       streamsize
  16916.       readsome(char_type* __s, streamsize __n);
  16917. # 521 "/usr/include/c++/5/istream" 3
  16918.       __istream_type&
  16919.       putback(char_type __c);
  16920. # 537 "/usr/include/c++/5/istream" 3
  16921.       __istream_type&
  16922.       unget();
  16923. # 555 "/usr/include/c++/5/istream" 3
  16924.       int
  16925.       sync();
  16926. # 570 "/usr/include/c++/5/istream" 3
  16927.       pos_type
  16928.       tellg();
  16929. # 585 "/usr/include/c++/5/istream" 3
  16930.       __istream_type&
  16931.       seekg(pos_type);
  16932. # 601 "/usr/include/c++/5/istream" 3
  16933.       __istream_type&
  16934.       seekg(off_type, ios_base::seekdir);
  16935.  
  16936.  
  16937.     protected:
  16938.       basic_istream()
  16939.       : _M_gcount(streamsize(0))
  16940.       { this->init(0); }
  16941. # 639 "/usr/include/c++/5/istream" 3
  16942.       template<typename _ValueT>
  16943.  __istream_type&
  16944.  _M_extract(_ValueT& __v);
  16945.     };
  16946.  
  16947.  
  16948.   template<>
  16949.     basic_istream<char>&
  16950.     basic_istream<char>::
  16951.     getline(char_type* __s, streamsize __n, char_type __delim);
  16952.  
  16953.   template<>
  16954.     basic_istream<char>&
  16955.     basic_istream<char>::
  16956.     ignore(streamsize __n);
  16957.  
  16958.   template<>
  16959.     basic_istream<char>&
  16960.     basic_istream<char>::
  16961.     ignore(streamsize __n, int_type __delim);
  16962.  
  16963.  
  16964.   template<>
  16965.     basic_istream<wchar_t>&
  16966.     basic_istream<wchar_t>::
  16967.     getline(char_type* __s, streamsize __n, char_type __delim);
  16968.  
  16969.   template<>
  16970.     basic_istream<wchar_t>&
  16971.     basic_istream<wchar_t>::
  16972.     ignore(streamsize __n);
  16973.  
  16974.   template<>
  16975.     basic_istream<wchar_t>&
  16976.     basic_istream<wchar_t>::
  16977.     ignore(streamsize __n, int_type __delim);
  16978. # 685 "/usr/include/c++/5/istream" 3
  16979.   template<typename _CharT, typename _Traits>
  16980.     class basic_istream<_CharT, _Traits>::sentry
  16981.     {
  16982.  
  16983.       bool _M_ok;
  16984.  
  16985.     public:
  16986.  
  16987.       typedef _Traits traits_type;
  16988.       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
  16989.       typedef basic_istream<_CharT, _Traits> __istream_type;
  16990.       typedef typename __istream_type::__ctype_type __ctype_type;
  16991.       typedef typename _Traits::int_type __int_type;
  16992. # 721 "/usr/include/c++/5/istream" 3
  16993.       explicit
  16994.       sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
  16995. # 734 "/usr/include/c++/5/istream" 3
  16996.       operator bool() const
  16997.       { return _M_ok; }
  16998.     };
  16999. # 750 "/usr/include/c++/5/istream" 3
  17000.   template<typename _CharT, typename _Traits>
  17001.     basic_istream<_CharT, _Traits>&
  17002.     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);
  17003.  
  17004.   template<class _Traits>
  17005.     inline basic_istream<char, _Traits>&
  17006.     operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
  17007.     { return (__in >> reinterpret_cast<char&>(__c)); }
  17008.  
  17009.   template<class _Traits>
  17010.     inline basic_istream<char, _Traits>&
  17011.     operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
  17012.     { return (__in >> reinterpret_cast<char&>(__c)); }
  17013. # 792 "/usr/include/c++/5/istream" 3
  17014.   template<typename _CharT, typename _Traits>
  17015.     basic_istream<_CharT, _Traits>&
  17016.     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);
  17017.  
  17018.  
  17019.   template<>
  17020.     basic_istream<char>&
  17021.     operator>>(basic_istream<char>& __in, char* __s);
  17022.  
  17023.   template<class _Traits>
  17024.     inline basic_istream<char, _Traits>&
  17025.     operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
  17026.     { return (__in >> reinterpret_cast<char*>(__s)); }
  17027.  
  17028.   template<class _Traits>
  17029.     inline basic_istream<char, _Traits>&
  17030.     operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
  17031.     { return (__in >> reinterpret_cast<char*>(__s)); }
  17032. # 823 "/usr/include/c++/5/istream" 3
  17033.   template<typename _CharT, typename _Traits>
  17034.     class basic_iostream
  17035.     : public basic_istream<_CharT, _Traits>,
  17036.       public basic_ostream<_CharT, _Traits>
  17037.     {
  17038.     public:
  17039.  
  17040.  
  17041.  
  17042.       typedef _CharT char_type;
  17043.       typedef typename _Traits::int_type int_type;
  17044.       typedef typename _Traits::pos_type pos_type;
  17045.       typedef typename _Traits::off_type off_type;
  17046.       typedef _Traits traits_type;
  17047.  
  17048.  
  17049.       typedef basic_istream<_CharT, _Traits> __istream_type;
  17050.       typedef basic_ostream<_CharT, _Traits> __ostream_type;
  17051.  
  17052.  
  17053.  
  17054.  
  17055.  
  17056.  
  17057.  
  17058.       explicit
  17059.       basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)
  17060.       : __istream_type(__sb), __ostream_type(__sb) { }
  17061.  
  17062.  
  17063.  
  17064.  
  17065.       virtual
  17066.       ~basic_iostream() { }
  17067.  
  17068.     protected:
  17069.       basic_iostream()
  17070.       : __istream_type(), __ostream_type() { }
  17071. # 884 "/usr/include/c++/5/istream" 3
  17072.     };
  17073. # 906 "/usr/include/c++/5/istream" 3
  17074.   template<typename _CharT, typename _Traits>
  17075.     basic_istream<_CharT, _Traits>&
  17076.     ws(basic_istream<_CharT, _Traits>& __is);
  17077. # 931 "/usr/include/c++/5/istream" 3
  17078.  
  17079. }
  17080.  
  17081. # 1 "/usr/include/c++/5/bits/istream.tcc" 1 3
  17082. # 37 "/usr/include/c++/5/bits/istream.tcc" 3
  17083.        
  17084. # 38 "/usr/include/c++/5/bits/istream.tcc" 3
  17085.  
  17086.  
  17087.  
  17088. namespace std __attribute__ ((__visibility__ ("default")))
  17089. {
  17090.  
  17091.  
  17092.   template<typename _CharT, typename _Traits>
  17093.     basic_istream<_CharT, _Traits>::sentry::
  17094.     sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false)
  17095.     {
  17096.       ios_base::iostate __err = ios_base::goodbit;
  17097.       if (__in.good())
  17098.  {
  17099.    if (__in.tie())
  17100.      __in.tie()->flush();
  17101.    if (!__noskip && bool(__in.flags() & ios_base::skipws))
  17102.      {
  17103.        const __int_type __eof = traits_type::eof();
  17104.        __streambuf_type* __sb = __in.rdbuf();
  17105.        __int_type __c = __sb->sgetc();
  17106.  
  17107.        const __ctype_type& __ct = __check_facet(__in._M_ctype);
  17108.        while (!traits_type::eq_int_type(__c, __eof)
  17109.        && __ct.is(ctype_base::space,
  17110.     traits_type::to_char_type(__c)))
  17111.   __c = __sb->snextc();
  17112.  
  17113.  
  17114.  
  17115.  
  17116.        if (traits_type::eq_int_type(__c, __eof))
  17117.   __err |= ios_base::eofbit;
  17118.      }
  17119.  }
  17120.  
  17121.       if (__in.good() && __err == ios_base::goodbit)
  17122.  _M_ok = true;
  17123.       else
  17124.  {
  17125.    __err |= ios_base::failbit;
  17126.    __in.setstate(__err);
  17127.  }
  17128.     }
  17129.  
  17130.   template<typename _CharT, typename _Traits>
  17131.     template<typename _ValueT>
  17132.       basic_istream<_CharT, _Traits>&
  17133.       basic_istream<_CharT, _Traits>::
  17134.       _M_extract(_ValueT& __v)
  17135.       {
  17136.  sentry __cerb(*this, false);
  17137.  if (__cerb)
  17138.    {
  17139.      ios_base::iostate __err = ios_base::goodbit;
  17140.      try
  17141.        {
  17142.   const __num_get_type& __ng = __check_facet(this->_M_num_get);
  17143.   __ng.get(*this, 0, *this, __err, __v);
  17144.        }
  17145.      catch(__cxxabiv1::__forced_unwind&)
  17146.        {
  17147.   this->_M_setstate(ios_base::badbit);
  17148.   throw;
  17149.        }
  17150.      catch(...)
  17151.        { this->_M_setstate(ios_base::badbit); }
  17152.      if (__err)
  17153.        this->setstate(__err);
  17154.    }
  17155.  return *this;
  17156.       }
  17157.  
  17158.   template<typename _CharT, typename _Traits>
  17159.     basic_istream<_CharT, _Traits>&
  17160.     basic_istream<_CharT, _Traits>::
  17161.     operator>>(short& __n)
  17162.     {
  17163.  
  17164.  
  17165.       sentry __cerb(*this, false);
  17166.       if (__cerb)
  17167.  {
  17168.    ios_base::iostate __err = ios_base::goodbit;
  17169.    try
  17170.      {
  17171.        long __l;
  17172.        const __num_get_type& __ng = __check_facet(this->_M_num_get);
  17173.        __ng.get(*this, 0, *this, __err, __l);
  17174.  
  17175.  
  17176.  
  17177.        if (__l < __gnu_cxx::__numeric_traits<short>::__min)
  17178.   {
  17179.     __err |= ios_base::failbit;
  17180.     __n = __gnu_cxx::__numeric_traits<short>::__min;
  17181.   }
  17182.        else if (__l > __gnu_cxx::__numeric_traits<short>::__max)
  17183.   {
  17184.     __err |= ios_base::failbit;
  17185.     __n = __gnu_cxx::__numeric_traits<short>::__max;
  17186.   }
  17187.        else
  17188.   __n = short(__l);
  17189.      }
  17190.    catch(__cxxabiv1::__forced_unwind&)
  17191.      {
  17192.        this->_M_setstate(ios_base::badbit);
  17193.        throw;
  17194.      }
  17195.    catch(...)
  17196.      { this->_M_setstate(ios_base::badbit); }
  17197.    if (__err)
  17198.      this->setstate(__err);
  17199.  }
  17200.       return *this;
  17201.     }
  17202.  
  17203.   template<typename _CharT, typename _Traits>
  17204.     basic_istream<_CharT, _Traits>&
  17205.     basic_istream<_CharT, _Traits>::
  17206.     operator>>(int& __n)
  17207.     {
  17208.  
  17209.  
  17210.       sentry __cerb(*this, false);
  17211.       if (__cerb)
  17212.  {
  17213.    ios_base::iostate __err = ios_base::goodbit;
  17214.    try
  17215.      {
  17216.        long __l;
  17217.        const __num_get_type& __ng = __check_facet(this->_M_num_get);
  17218.        __ng.get(*this, 0, *this, __err, __l);
  17219.  
  17220.  
  17221.  
  17222.        if (__l < __gnu_cxx::__numeric_traits<int>::__min)
  17223.   {
  17224.     __err |= ios_base::failbit;
  17225.     __n = __gnu_cxx::__numeric_traits<int>::__min;
  17226.   }
  17227.        else if (__l > __gnu_cxx::__numeric_traits<int>::__max)
  17228.   {
  17229.     __err |= ios_base::failbit;
  17230.     __n = __gnu_cxx::__numeric_traits<int>::__max;
  17231.   }
  17232.        else
  17233.   __n = int(__l);
  17234.      }
  17235.    catch(__cxxabiv1::__forced_unwind&)
  17236.      {
  17237.        this->_M_setstate(ios_base::badbit);
  17238.        throw;
  17239.      }
  17240.    catch(...)
  17241.      { this->_M_setstate(ios_base::badbit); }
  17242.    if (__err)
  17243.      this->setstate(__err);
  17244.  }
  17245.       return *this;
  17246.     }
  17247.  
  17248.   template<typename _CharT, typename _Traits>
  17249.     basic_istream<_CharT, _Traits>&
  17250.     basic_istream<_CharT, _Traits>::
  17251.     operator>>(__streambuf_type* __sbout)
  17252.     {
  17253.       ios_base::iostate __err = ios_base::goodbit;
  17254.       sentry __cerb(*this, false);
  17255.       if (__cerb && __sbout)
  17256.  {
  17257.    try
  17258.      {
  17259.        bool __ineof;
  17260.        if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof))
  17261.   __err |= ios_base::failbit;
  17262.        if (__ineof)
  17263.   __err |= ios_base::eofbit;
  17264.      }
  17265.    catch(__cxxabiv1::__forced_unwind&)
  17266.      {
  17267.        this->_M_setstate(ios_base::failbit);
  17268.        throw;
  17269.      }
  17270.    catch(...)
  17271.      { this->_M_setstate(ios_base::failbit); }
  17272.  }
  17273.       else if (!__sbout)
  17274.  __err |= ios_base::failbit;
  17275.       if (__err)
  17276.  this->setstate(__err);
  17277.       return *this;
  17278.     }
  17279.  
  17280.   template<typename _CharT, typename _Traits>
  17281.     typename basic_istream<_CharT, _Traits>::int_type
  17282.     basic_istream<_CharT, _Traits>::
  17283.     get(void)
  17284.     {
  17285.       const int_type __eof = traits_type::eof();
  17286.       int_type __c = __eof;
  17287.       _M_gcount = 0;
  17288.       ios_base::iostate __err = ios_base::goodbit;
  17289.       sentry __cerb(*this, true);
  17290.       if (__cerb)
  17291.  {
  17292.    try
  17293.      {
  17294.        __c = this->rdbuf()->sbumpc();
  17295.  
  17296.        if (!traits_type::eq_int_type(__c, __eof))
  17297.   _M_gcount = 1;
  17298.        else
  17299.   __err |= ios_base::eofbit;
  17300.      }
  17301.    catch(__cxxabiv1::__forced_unwind&)
  17302.      {
  17303.        this->_M_setstate(ios_base::badbit);
  17304.        throw;
  17305.      }
  17306.    catch(...)
  17307.      { this->_M_setstate(ios_base::badbit); }
  17308.  }
  17309.       if (!_M_gcount)
  17310.  __err |= ios_base::failbit;
  17311.       if (__err)
  17312.  this->setstate(__err);
  17313.       return __c;
  17314.     }
  17315.  
  17316.   template<typename _CharT, typename _Traits>
  17317.     basic_istream<_CharT, _Traits>&
  17318.     basic_istream<_CharT, _Traits>::
  17319.     get(char_type& __c)
  17320.     {
  17321.       _M_gcount = 0;
  17322.       ios_base::iostate __err = ios_base::goodbit;
  17323.       sentry __cerb(*this, true);
  17324.       if (__cerb)
  17325.  {
  17326.    try
  17327.      {
  17328.        const int_type __cb = this->rdbuf()->sbumpc();
  17329.  
  17330.        if (!traits_type::eq_int_type(__cb, traits_type::eof()))
  17331.   {
  17332.     _M_gcount = 1;
  17333.     __c = traits_type::to_char_type(__cb);
  17334.   }
  17335.        else
  17336.   __err |= ios_base::eofbit;
  17337.      }
  17338.    catch(__cxxabiv1::__forced_unwind&)
  17339.      {
  17340.        this->_M_setstate(ios_base::badbit);
  17341.        throw;
  17342.      }
  17343.    catch(...)
  17344.      { this->_M_setstate(ios_base::badbit); }
  17345.  }
  17346.       if (!_M_gcount)
  17347.  __err |= ios_base::failbit;
  17348.       if (__err)
  17349.  this->setstate(__err);
  17350.       return *this;
  17351.     }
  17352.  
  17353.   template<typename _CharT, typename _Traits>
  17354.     basic_istream<_CharT, _Traits>&
  17355.     basic_istream<_CharT, _Traits>::
  17356.     get(char_type* __s, streamsize __n, char_type __delim)
  17357.     {
  17358.       _M_gcount = 0;
  17359.       ios_base::iostate __err = ios_base::goodbit;
  17360.       sentry __cerb(*this, true);
  17361.       if (__cerb)
  17362.  {
  17363.    try
  17364.      {
  17365.        const int_type __idelim = traits_type::to_int_type(__delim);
  17366.        const int_type __eof = traits_type::eof();
  17367.        __streambuf_type* __sb = this->rdbuf();
  17368.        int_type __c = __sb->sgetc();
  17369.  
  17370.        while (_M_gcount + 1 < __n
  17371.        && !traits_type::eq_int_type(__c, __eof)
  17372.        && !traits_type::eq_int_type(__c, __idelim))
  17373.   {
  17374.     *__s++ = traits_type::to_char_type(__c);
  17375.     ++_M_gcount;
  17376.     __c = __sb->snextc();
  17377.   }
  17378.        if (traits_type::eq_int_type(__c, __eof))
  17379.   __err |= ios_base::eofbit;
  17380.      }
  17381.    catch(__cxxabiv1::__forced_unwind&)
  17382.      {
  17383.        this->_M_setstate(ios_base::badbit);
  17384.        throw;
  17385.      }
  17386.    catch(...)
  17387.      { this->_M_setstate(ios_base::badbit); }
  17388.  }
  17389.  
  17390.  
  17391.       if (__n > 0)
  17392.  *__s = char_type();
  17393.       if (!_M_gcount)
  17394.  __err |= ios_base::failbit;
  17395.       if (__err)
  17396.  this->setstate(__err);
  17397.       return *this;
  17398.     }
  17399.  
  17400.   template<typename _CharT, typename _Traits>
  17401.     basic_istream<_CharT, _Traits>&
  17402.     basic_istream<_CharT, _Traits>::
  17403.     get(__streambuf_type& __sb, char_type __delim)
  17404.     {
  17405.       _M_gcount = 0;
  17406.       ios_base::iostate __err = ios_base::goodbit;
  17407.       sentry __cerb(*this, true);
  17408.       if (__cerb)
  17409.  {
  17410.    try
  17411.      {
  17412.        const int_type __idelim = traits_type::to_int_type(__delim);
  17413.        const int_type __eof = traits_type::eof();
  17414.        __streambuf_type* __this_sb = this->rdbuf();
  17415.        int_type __c = __this_sb->sgetc();
  17416.        char_type __c2 = traits_type::to_char_type(__c);
  17417.  
  17418.        while (!traits_type::eq_int_type(__c, __eof)
  17419.        && !traits_type::eq_int_type(__c, __idelim)
  17420.        && !traits_type::eq_int_type(__sb.sputc(__c2), __eof))
  17421.   {
  17422.     ++_M_gcount;
  17423.     __c = __this_sb->snextc();
  17424.     __c2 = traits_type::to_char_type(__c);
  17425.   }
  17426.        if (traits_type::eq_int_type(__c, __eof))
  17427.   __err |= ios_base::eofbit;
  17428.      }
  17429.    catch(__cxxabiv1::__forced_unwind&)
  17430.      {
  17431.        this->_M_setstate(ios_base::badbit);
  17432.        throw;
  17433.      }
  17434.    catch(...)
  17435.      { this->_M_setstate(ios_base::badbit); }
  17436.  }
  17437.       if (!_M_gcount)
  17438.  __err |= ios_base::failbit;
  17439.       if (__err)
  17440.  this->setstate(__err);
  17441.       return *this;
  17442.     }
  17443.  
  17444.   template<typename _CharT, typename _Traits>
  17445.     basic_istream<_CharT, _Traits>&
  17446.     basic_istream<_CharT, _Traits>::
  17447.     getline(char_type* __s, streamsize __n, char_type __delim)
  17448.     {
  17449.       _M_gcount = 0;
  17450.       ios_base::iostate __err = ios_base::goodbit;
  17451.       sentry __cerb(*this, true);
  17452.       if (__cerb)
  17453.         {
  17454.           try
  17455.             {
  17456.               const int_type __idelim = traits_type::to_int_type(__delim);
  17457.               const int_type __eof = traits_type::eof();
  17458.               __streambuf_type* __sb = this->rdbuf();
  17459.               int_type __c = __sb->sgetc();
  17460.  
  17461.               while (_M_gcount + 1 < __n
  17462.                      && !traits_type::eq_int_type(__c, __eof)
  17463.                      && !traits_type::eq_int_type(__c, __idelim))
  17464.                 {
  17465.                   *__s++ = traits_type::to_char_type(__c);
  17466.                   __c = __sb->snextc();
  17467.                   ++_M_gcount;
  17468.                 }
  17469.               if (traits_type::eq_int_type(__c, __eof))
  17470.                 __err |= ios_base::eofbit;
  17471.               else
  17472.                 {
  17473.                   if (traits_type::eq_int_type(__c, __idelim))
  17474.                     {
  17475.                       __sb->sbumpc();
  17476.                       ++_M_gcount;
  17477.                     }
  17478.                   else
  17479.                     __err |= ios_base::failbit;
  17480.                 }
  17481.             }
  17482.    catch(__cxxabiv1::__forced_unwind&)
  17483.      {
  17484.        this->_M_setstate(ios_base::badbit);
  17485.        throw;
  17486.      }
  17487.           catch(...)
  17488.             { this->_M_setstate(ios_base::badbit); }
  17489.         }
  17490.  
  17491.  
  17492.       if (__n > 0)
  17493.  *__s = char_type();
  17494.       if (!_M_gcount)
  17495.         __err |= ios_base::failbit;
  17496.       if (__err)
  17497.         this->setstate(__err);
  17498.       return *this;
  17499.     }
  17500.  
  17501.  
  17502.  
  17503.  
  17504.   template<typename _CharT, typename _Traits>
  17505.     basic_istream<_CharT, _Traits>&
  17506.     basic_istream<_CharT, _Traits>::
  17507.     ignore(void)
  17508.     {
  17509.       _M_gcount = 0;
  17510.       sentry __cerb(*this, true);
  17511.       if (__cerb)
  17512.  {
  17513.    ios_base::iostate __err = ios_base::goodbit;
  17514.    try
  17515.      {
  17516.        const int_type __eof = traits_type::eof();
  17517.        __streambuf_type* __sb = this->rdbuf();
  17518.  
  17519.        if (traits_type::eq_int_type(__sb->sbumpc(), __eof))
  17520.   __err |= ios_base::eofbit;
  17521.        else
  17522.   _M_gcount = 1;
  17523.      }
  17524.    catch(__cxxabiv1::__forced_unwind&)
  17525.      {
  17526.        this->_M_setstate(ios_base::badbit);
  17527.        throw;
  17528.      }
  17529.    catch(...)
  17530.      { this->_M_setstate(ios_base::badbit); }
  17531.    if (__err)
  17532.      this->setstate(__err);
  17533.  }
  17534.       return *this;
  17535.     }
  17536.  
  17537.   template<typename _CharT, typename _Traits>
  17538.     basic_istream<_CharT, _Traits>&
  17539.     basic_istream<_CharT, _Traits>::
  17540.     ignore(streamsize __n)
  17541.     {
  17542.       _M_gcount = 0;
  17543.       sentry __cerb(*this, true);
  17544.       if (__cerb && __n > 0)
  17545.         {
  17546.           ios_base::iostate __err = ios_base::goodbit;
  17547.           try
  17548.             {
  17549.               const int_type __eof = traits_type::eof();
  17550.               __streambuf_type* __sb = this->rdbuf();
  17551.               int_type __c = __sb->sgetc();
  17552. # 513 "/usr/include/c++/5/bits/istream.tcc" 3
  17553.        bool __large_ignore = false;
  17554.        while (true)
  17555.   {
  17556.     while (_M_gcount < __n
  17557.     && !traits_type::eq_int_type(__c, __eof))
  17558.       {
  17559.         ++_M_gcount;
  17560.         __c = __sb->snextc();
  17561.       }
  17562.     if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
  17563.         && !traits_type::eq_int_type(__c, __eof))
  17564.       {
  17565.         _M_gcount =
  17566.    __gnu_cxx::__numeric_traits<streamsize>::__min;
  17567.         __large_ignore = true;
  17568.       }
  17569.     else
  17570.       break;
  17571.   }
  17572.  
  17573.        if (__large_ignore)
  17574.   _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
  17575.  
  17576.        if (traits_type::eq_int_type(__c, __eof))
  17577.                 __err |= ios_base::eofbit;
  17578.             }
  17579.    catch(__cxxabiv1::__forced_unwind&)
  17580.      {
  17581.        this->_M_setstate(ios_base::badbit);
  17582.        throw;
  17583.      }
  17584.           catch(...)
  17585.             { this->_M_setstate(ios_base::badbit); }
  17586.           if (__err)
  17587.             this->setstate(__err);
  17588.         }
  17589.       return *this;
  17590.     }
  17591.  
  17592.   template<typename _CharT, typename _Traits>
  17593.     basic_istream<_CharT, _Traits>&
  17594.     basic_istream<_CharT, _Traits>::
  17595.     ignore(streamsize __n, int_type __delim)
  17596.     {
  17597.       _M_gcount = 0;
  17598.       sentry __cerb(*this, true);
  17599.       if (__cerb && __n > 0)
  17600.         {
  17601.           ios_base::iostate __err = ios_base::goodbit;
  17602.           try
  17603.             {
  17604.               const int_type __eof = traits_type::eof();
  17605.               __streambuf_type* __sb = this->rdbuf();
  17606.               int_type __c = __sb->sgetc();
  17607.  
  17608.  
  17609.        bool __large_ignore = false;
  17610.        while (true)
  17611.   {
  17612.     while (_M_gcount < __n
  17613.     && !traits_type::eq_int_type(__c, __eof)
  17614.     && !traits_type::eq_int_type(__c, __delim))
  17615.       {
  17616.         ++_M_gcount;
  17617.         __c = __sb->snextc();
  17618.       }
  17619.     if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
  17620.         && !traits_type::eq_int_type(__c, __eof)
  17621.         && !traits_type::eq_int_type(__c, __delim))
  17622.       {
  17623.         _M_gcount =
  17624.    __gnu_cxx::__numeric_traits<streamsize>::__min;
  17625.         __large_ignore = true;
  17626.       }
  17627.     else
  17628.       break;
  17629.   }
  17630.  
  17631.        if (__large_ignore)
  17632.   _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
  17633.  
  17634.               if (traits_type::eq_int_type(__c, __eof))
  17635.                 __err |= ios_base::eofbit;
  17636.        else if (traits_type::eq_int_type(__c, __delim))
  17637.   {
  17638.     if (_M_gcount
  17639.         < __gnu_cxx::__numeric_traits<streamsize>::__max)
  17640.       ++_M_gcount;
  17641.     __sb->sbumpc();
  17642.   }
  17643.             }
  17644.    catch(__cxxabiv1::__forced_unwind&)
  17645.      {
  17646.        this->_M_setstate(ios_base::badbit);
  17647.        throw;
  17648.      }
  17649.           catch(...)
  17650.             { this->_M_setstate(ios_base::badbit); }
  17651.           if (__err)
  17652.             this->setstate(__err);
  17653.         }
  17654.       return *this;
  17655.     }
  17656.  
  17657.   template<typename _CharT, typename _Traits>
  17658.     typename basic_istream<_CharT, _Traits>::int_type
  17659.     basic_istream<_CharT, _Traits>::
  17660.     peek(void)
  17661.     {
  17662.       int_type __c = traits_type::eof();
  17663.       _M_gcount = 0;
  17664.       sentry __cerb(*this, true);
  17665.       if (__cerb)
  17666.  {
  17667.    ios_base::iostate __err = ios_base::goodbit;
  17668.    try
  17669.      {
  17670.        __c = this->rdbuf()->sgetc();
  17671.        if (traits_type::eq_int_type(__c, traits_type::eof()))
  17672.   __err |= ios_base::eofbit;
  17673.      }
  17674.    catch(__cxxabiv1::__forced_unwind&)
  17675.      {
  17676.        this->_M_setstate(ios_base::badbit);
  17677.        throw;
  17678.      }
  17679.    catch(...)
  17680.      { this->_M_setstate(ios_base::badbit); }
  17681.    if (__err)
  17682.      this->setstate(__err);
  17683.  }
  17684.       return __c;
  17685.     }
  17686.  
  17687.   template<typename _CharT, typename _Traits>
  17688.     basic_istream<_CharT, _Traits>&
  17689.     basic_istream<_CharT, _Traits>::
  17690.     read(char_type* __s, streamsize __n)
  17691.     {
  17692.       _M_gcount = 0;
  17693.       sentry __cerb(*this, true);
  17694.       if (__cerb)
  17695.  {
  17696.    ios_base::iostate __err = ios_base::goodbit;
  17697.    try
  17698.      {
  17699.        _M_gcount = this->rdbuf()->sgetn(__s, __n);
  17700.        if (_M_gcount != __n)
  17701.   __err |= (ios_base::eofbit | ios_base::failbit);
  17702.      }
  17703.    catch(__cxxabiv1::__forced_unwind&)
  17704.      {
  17705.        this->_M_setstate(ios_base::badbit);
  17706.        throw;
  17707.      }
  17708.    catch(...)
  17709.      { this->_M_setstate(ios_base::badbit); }
  17710.    if (__err)
  17711.      this->setstate(__err);
  17712.  }
  17713.       return *this;
  17714.     }
  17715.  
  17716.   template<typename _CharT, typename _Traits>
  17717.     streamsize
  17718.     basic_istream<_CharT, _Traits>::
  17719.     readsome(char_type* __s, streamsize __n)
  17720.     {
  17721.       _M_gcount = 0;
  17722.       sentry __cerb(*this, true);
  17723.       if (__cerb)
  17724.  {
  17725.    ios_base::iostate __err = ios_base::goodbit;
  17726.    try
  17727.      {
  17728.  
  17729.        const streamsize __num = this->rdbuf()->in_avail();
  17730.        if (__num > 0)
  17731.   _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n));
  17732.        else if (__num == -1)
  17733.   __err |= ios_base::eofbit;
  17734.      }
  17735.    catch(__cxxabiv1::__forced_unwind&)
  17736.      {
  17737.        this->_M_setstate(ios_base::badbit);
  17738.        throw;
  17739.      }
  17740.    catch(...)
  17741.      { this->_M_setstate(ios_base::badbit); }
  17742.    if (__err)
  17743.      this->setstate(__err);
  17744.  }
  17745.       return _M_gcount;
  17746.     }
  17747.  
  17748.   template<typename _CharT, typename _Traits>
  17749.     basic_istream<_CharT, _Traits>&
  17750.     basic_istream<_CharT, _Traits>::
  17751.     putback(char_type __c)
  17752.     {
  17753.  
  17754.  
  17755.       _M_gcount = 0;
  17756.  
  17757.       this->clear(this->rdstate() & ~ios_base::eofbit);
  17758.       sentry __cerb(*this, true);
  17759.       if (__cerb)
  17760.  {
  17761.    ios_base::iostate __err = ios_base::goodbit;
  17762.    try
  17763.      {
  17764.        const int_type __eof = traits_type::eof();
  17765.        __streambuf_type* __sb = this->rdbuf();
  17766.        if (!__sb
  17767.     || traits_type::eq_int_type(__sb->sputbackc(__c), __eof))
  17768.   __err |= ios_base::badbit;
  17769.      }
  17770.    catch(__cxxabiv1::__forced_unwind&)
  17771.      {
  17772.        this->_M_setstate(ios_base::badbit);
  17773.        throw;
  17774.      }
  17775.    catch(...)
  17776.      { this->_M_setstate(ios_base::badbit); }
  17777.    if (__err)
  17778.      this->setstate(__err);
  17779.  }
  17780.       return *this;
  17781.     }
  17782.  
  17783.   template<typename _CharT, typename _Traits>
  17784.     basic_istream<_CharT, _Traits>&
  17785.     basic_istream<_CharT, _Traits>::
  17786.     unget(void)
  17787.     {
  17788.  
  17789.  
  17790.       _M_gcount = 0;
  17791.  
  17792.       this->clear(this->rdstate() & ~ios_base::eofbit);
  17793.       sentry __cerb(*this, true);
  17794.       if (__cerb)
  17795.  {
  17796.    ios_base::iostate __err = ios_base::goodbit;
  17797.    try
  17798.      {
  17799.        const int_type __eof = traits_type::eof();
  17800.        __streambuf_type* __sb = this->rdbuf();
  17801.        if (!__sb
  17802.     || traits_type::eq_int_type(__sb->sungetc(), __eof))
  17803.   __err |= ios_base::badbit;
  17804.      }
  17805.    catch(__cxxabiv1::__forced_unwind&)
  17806.      {
  17807.        this->_M_setstate(ios_base::badbit);
  17808.        throw;
  17809.      }
  17810.    catch(...)
  17811.      { this->_M_setstate(ios_base::badbit); }
  17812.    if (__err)
  17813.      this->setstate(__err);
  17814.  }
  17815.       return *this;
  17816.     }
  17817.  
  17818.   template<typename _CharT, typename _Traits>
  17819.     int
  17820.     basic_istream<_CharT, _Traits>::
  17821.     sync(void)
  17822.     {
  17823.  
  17824.  
  17825.       int __ret = -1;
  17826.       sentry __cerb(*this, true);
  17827.       if (__cerb)
  17828.  {
  17829.    ios_base::iostate __err = ios_base::goodbit;
  17830.    try
  17831.      {
  17832.        __streambuf_type* __sb = this->rdbuf();
  17833.        if (__sb)
  17834.   {
  17835.     if (__sb->pubsync() == -1)
  17836.       __err |= ios_base::badbit;
  17837.     else
  17838.       __ret = 0;
  17839.   }
  17840.      }
  17841.    catch(__cxxabiv1::__forced_unwind&)
  17842.      {
  17843.        this->_M_setstate(ios_base::badbit);
  17844.        throw;
  17845.      }
  17846.    catch(...)
  17847.      { this->_M_setstate(ios_base::badbit); }
  17848.    if (__err)
  17849.      this->setstate(__err);
  17850.  }
  17851.       return __ret;
  17852.     }
  17853.  
  17854.   template<typename _CharT, typename _Traits>
  17855.     typename basic_istream<_CharT, _Traits>::pos_type
  17856.     basic_istream<_CharT, _Traits>::
  17857.     tellg(void)
  17858.     {
  17859.  
  17860.  
  17861.       pos_type __ret = pos_type(-1);
  17862.       sentry __cerb(*this, true);
  17863.       if (__cerb)
  17864.  {
  17865.    try
  17866.      {
  17867.        if (!this->fail())
  17868.   __ret = this->rdbuf()->pubseekoff(0, ios_base::cur,
  17869.         ios_base::in);
  17870.      }
  17871.    catch(__cxxabiv1::__forced_unwind&)
  17872.      {
  17873.        this->_M_setstate(ios_base::badbit);
  17874.        throw;
  17875.      }
  17876.    catch(...)
  17877.      { this->_M_setstate(ios_base::badbit); }
  17878.  }
  17879.       return __ret;
  17880.     }
  17881.  
  17882.   template<typename _CharT, typename _Traits>
  17883.     basic_istream<_CharT, _Traits>&
  17884.     basic_istream<_CharT, _Traits>::
  17885.     seekg(pos_type __pos)
  17886.     {
  17887.  
  17888.  
  17889.  
  17890.       this->clear(this->rdstate() & ~ios_base::eofbit);
  17891.       sentry __cerb(*this, true);
  17892.       if (__cerb)
  17893.  {
  17894.    ios_base::iostate __err = ios_base::goodbit;
  17895.    try
  17896.      {
  17897.        if (!this->fail())
  17898.   {
  17899.  
  17900.     const pos_type __p = this->rdbuf()->pubseekpos(__pos,
  17901.          ios_base::in);
  17902.  
  17903.  
  17904.     if (__p == pos_type(off_type(-1)))
  17905.       __err |= ios_base::failbit;
  17906.   }
  17907.      }
  17908.    catch(__cxxabiv1::__forced_unwind&)
  17909.      {
  17910.        this->_M_setstate(ios_base::badbit);
  17911.        throw;
  17912.      }
  17913.    catch(...)
  17914.      { this->_M_setstate(ios_base::badbit); }
  17915.    if (__err)
  17916.      this->setstate(__err);
  17917.  }
  17918.       return *this;
  17919.     }
  17920.  
  17921.   template<typename _CharT, typename _Traits>
  17922.     basic_istream<_CharT, _Traits>&
  17923.     basic_istream<_CharT, _Traits>::
  17924.     seekg(off_type __off, ios_base::seekdir __dir)
  17925.     {
  17926.  
  17927.  
  17928.  
  17929.       this->clear(this->rdstate() & ~ios_base::eofbit);
  17930.       sentry __cerb(*this, true);
  17931.       if (__cerb)
  17932.  {
  17933.    ios_base::iostate __err = ios_base::goodbit;
  17934.    try
  17935.      {
  17936.        if (!this->fail())
  17937.   {
  17938.  
  17939.     const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
  17940.          ios_base::in);
  17941.  
  17942.  
  17943.     if (__p == pos_type(off_type(-1)))
  17944.       __err |= ios_base::failbit;
  17945.   }
  17946.      }
  17947.    catch(__cxxabiv1::__forced_unwind&)
  17948.      {
  17949.        this->_M_setstate(ios_base::badbit);
  17950.        throw;
  17951.      }
  17952.    catch(...)
  17953.      { this->_M_setstate(ios_base::badbit); }
  17954.    if (__err)
  17955.      this->setstate(__err);
  17956.  }
  17957.       return *this;
  17958.     }
  17959.  
  17960.  
  17961.   template<typename _CharT, typename _Traits>
  17962.     basic_istream<_CharT, _Traits>&
  17963.     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
  17964.     {
  17965.       typedef basic_istream<_CharT, _Traits> __istream_type;
  17966.       typedef typename __istream_type::int_type __int_type;
  17967.  
  17968.       typename __istream_type::sentry __cerb(__in, false);
  17969.       if (__cerb)
  17970.  {
  17971.    ios_base::iostate __err = ios_base::goodbit;
  17972.    try
  17973.      {
  17974.        const __int_type __cb = __in.rdbuf()->sbumpc();
  17975.        if (!_Traits::eq_int_type(__cb, _Traits::eof()))
  17976.   __c = _Traits::to_char_type(__cb);
  17977.        else
  17978.   __err |= (ios_base::eofbit | ios_base::failbit);
  17979.      }
  17980.    catch(__cxxabiv1::__forced_unwind&)
  17981.      {
  17982.        __in._M_setstate(ios_base::badbit);
  17983.        throw;
  17984.      }
  17985.    catch(...)
  17986.      { __in._M_setstate(ios_base::badbit); }
  17987.    if (__err)
  17988.      __in.setstate(__err);
  17989.  }
  17990.       return __in;
  17991.     }
  17992.  
  17993.   template<typename _CharT, typename _Traits>
  17994.     basic_istream<_CharT, _Traits>&
  17995.     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
  17996.     {
  17997.       typedef basic_istream<_CharT, _Traits> __istream_type;
  17998.       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
  17999.       typedef typename _Traits::int_type int_type;
  18000.       typedef _CharT char_type;
  18001.       typedef ctype<_CharT> __ctype_type;
  18002.  
  18003.       streamsize __extracted = 0;
  18004.       ios_base::iostate __err = ios_base::goodbit;
  18005.       typename __istream_type::sentry __cerb(__in, false);
  18006.       if (__cerb)
  18007.  {
  18008.    try
  18009.      {
  18010.  
  18011.        streamsize __num = __in.width();
  18012.        if (__num <= 0)
  18013.   __num = __gnu_cxx::__numeric_traits<streamsize>::__max;
  18014.  
  18015.        const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
  18016.  
  18017.        const int_type __eof = _Traits::eof();
  18018.        __streambuf_type* __sb = __in.rdbuf();
  18019.        int_type __c = __sb->sgetc();
  18020.  
  18021.        while (__extracted < __num - 1
  18022.        && !_Traits::eq_int_type(__c, __eof)
  18023.        && !__ct.is(ctype_base::space,
  18024.      _Traits::to_char_type(__c)))
  18025.   {
  18026.     *__s++ = _Traits::to_char_type(__c);
  18027.     ++__extracted;
  18028.     __c = __sb->snextc();
  18029.   }
  18030.        if (_Traits::eq_int_type(__c, __eof))
  18031.   __err |= ios_base::eofbit;
  18032.  
  18033.  
  18034.  
  18035.        *__s = char_type();
  18036.        __in.width(0);
  18037.      }
  18038.    catch(__cxxabiv1::__forced_unwind&)
  18039.      {
  18040.        __in._M_setstate(ios_base::badbit);
  18041.        throw;
  18042.      }
  18043.    catch(...)
  18044.      { __in._M_setstate(ios_base::badbit); }
  18045.  }
  18046.       if (!__extracted)
  18047.  __err |= ios_base::failbit;
  18048.       if (__err)
  18049.  __in.setstate(__err);
  18050.       return __in;
  18051.     }
  18052.  
  18053.  
  18054.   template<typename _CharT, typename _Traits>
  18055.     basic_istream<_CharT, _Traits>&
  18056.     ws(basic_istream<_CharT, _Traits>& __in)
  18057.     {
  18058.       typedef basic_istream<_CharT, _Traits> __istream_type;
  18059.       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
  18060.       typedef typename __istream_type::int_type __int_type;
  18061.       typedef ctype<_CharT> __ctype_type;
  18062.  
  18063.       const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
  18064.       const __int_type __eof = _Traits::eof();
  18065.       __streambuf_type* __sb = __in.rdbuf();
  18066.       __int_type __c = __sb->sgetc();
  18067.  
  18068.       while (!_Traits::eq_int_type(__c, __eof)
  18069.       && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))
  18070.  __c = __sb->snextc();
  18071.  
  18072.        if (_Traits::eq_int_type(__c, __eof))
  18073.   __in.setstate(ios_base::eofbit);
  18074.       return __in;
  18075.     }
  18076.  
  18077.  
  18078.  
  18079.  
  18080.   extern template class basic_istream<char>;
  18081.   extern template istream& ws(istream&);
  18082.   extern template istream& operator>>(istream&, char&);
  18083.   extern template istream& operator>>(istream&, char*);
  18084.   extern template istream& operator>>(istream&, unsigned char&);
  18085.   extern template istream& operator>>(istream&, signed char&);
  18086.   extern template istream& operator>>(istream&, unsigned char*);
  18087.   extern template istream& operator>>(istream&, signed char*);
  18088.  
  18089.   extern template istream& istream::_M_extract(unsigned short&);
  18090.   extern template istream& istream::_M_extract(unsigned int&);
  18091.   extern template istream& istream::_M_extract(long&);
  18092.   extern template istream& istream::_M_extract(unsigned long&);
  18093.   extern template istream& istream::_M_extract(bool&);
  18094.  
  18095.   extern template istream& istream::_M_extract(long long&);
  18096.   extern template istream& istream::_M_extract(unsigned long long&);
  18097.  
  18098.   extern template istream& istream::_M_extract(float&);
  18099.   extern template istream& istream::_M_extract(double&);
  18100.   extern template istream& istream::_M_extract(long double&);
  18101.   extern template istream& istream::_M_extract(void*&);
  18102.  
  18103.   extern template class basic_iostream<char>;
  18104.  
  18105.  
  18106.   extern template class basic_istream<wchar_t>;
  18107.   extern template wistream& ws(wistream&);
  18108.   extern template wistream& operator>>(wistream&, wchar_t&);
  18109.   extern template wistream& operator>>(wistream&, wchar_t*);
  18110.  
  18111.   extern template wistream& wistream::_M_extract(unsigned short&);
  18112.   extern template wistream& wistream::_M_extract(unsigned int&);
  18113.   extern template wistream& wistream::_M_extract(long&);
  18114.   extern template wistream& wistream::_M_extract(unsigned long&);
  18115.   extern template wistream& wistream::_M_extract(bool&);
  18116.  
  18117.   extern template wistream& wistream::_M_extract(long long&);
  18118.   extern template wistream& wistream::_M_extract(unsigned long long&);
  18119.  
  18120.   extern template wistream& wistream::_M_extract(float&);
  18121.   extern template wistream& wistream::_M_extract(double&);
  18122.   extern template wistream& wistream::_M_extract(long double&);
  18123.   extern template wistream& wistream::_M_extract(void*&);
  18124.  
  18125.   extern template class basic_iostream<wchar_t>;
  18126.  
  18127.  
  18128.  
  18129.  
  18130. }
  18131. # 935 "/usr/include/c++/5/istream" 2 3
  18132. # 41 "/usr/include/c++/5/iostream" 2 3
  18133.  
  18134. namespace std __attribute__ ((__visibility__ ("default")))
  18135. {
  18136.  
  18137. # 60 "/usr/include/c++/5/iostream" 3
  18138.   extern istream cin;
  18139.   extern ostream cout;
  18140.   extern ostream cerr;
  18141.   extern ostream clog;
  18142.  
  18143.  
  18144.   extern wistream wcin;
  18145.   extern wostream wcout;
  18146.   extern wostream wcerr;
  18147.   extern wostream wclog;
  18148.  
  18149.  
  18150.  
  18151.  
  18152.   static ios_base::Init __ioinit;
  18153.  
  18154.  
  18155. }
  18156. # 2 "driver.cpp" 2
  18157.  
  18158. # 2 "driver.cpp"
  18159. using namespace std;
  18160.  
  18161.  
  18162. int main() {
  18163.     cout << "Hello, world!" << endl;
  18164.     return 0;
  18165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement