Sun Jan 7 16:11:24 UTC 2024 I: starting to build guetzli/bookworm/arm64 on jenkins on '2024-01-07 16:11' Sun Jan 7 16:11:24 UTC 2024 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/arm64_14/22682/console.log Sun Jan 7 16:11:24 UTC 2024 I: Downloading source for bookworm/guetzli=1.0.1-1 --2024-01-07 16:11:24-- http://cdn-fastly.deb.debian.org/debian/pool/main/g/guetzli/guetzli_1.0.1-1.dsc Connecting to 78.137.99.97:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 1983 (1.9K) [text/prs.lines.tag] Saving to: ‘guetzli_1.0.1-1.dsc’ 0K . 100% 272M=0s 2024-01-07 16:11:24 (272 MB/s) - ‘guetzli_1.0.1-1.dsc’ saved [1983/1983] Sun Jan 7 16:11:24 UTC 2024 I: guetzli_1.0.1-1.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: guetzli Binary: guetzli Architecture: any Version: 1.0.1-1 Maintainer: Debian PhotoTools Maintainers Uploaders: ChangZhuo Chen (陳昌倬) Homepage: https://github.com/google/guetzli Standards-Version: 3.9.8 Vcs-Browser: https://anonscm.debian.org/git/pkg-phototools/guetzli.git Vcs-Git: https://anonscm.debian.org/git/pkg-phototools/guetzli.git Build-Depends: debhelper (>= 10), asciidoc-base, libpng-dev, pkg-config, xmlto Package-List: guetzli deb graphics optional arch=any Checksums-Sha1: afead6c93028521e3f336097f3547d20c17cefa5 97251 guetzli_1.0.1.orig.tar.gz 6143f37c0accaca6ce8985fcca327b2d65830e49 2320 guetzli_1.0.1-1.debian.tar.xz Checksums-Sha256: e52eb417a5c0fb5a3b08a858c8d10fa797627ada5373e203c196162d6a313697 97251 guetzli_1.0.1.orig.tar.gz 536b302d2d359bb81517da5dbc46d047cb9120f1bb931d8480b7a71cf0a9099c 2320 guetzli_1.0.1-1.debian.tar.xz Files: 942396efe07cab84532f12060a31894b 97251 guetzli_1.0.1.orig.tar.gz 75cbe8bac1cc62f6c2bdcee9b8837194 2320 guetzli_1.0.1-1.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEE5H9tOJ8ReWWaF1PGrc2MXdaTaQFAljSpLMACgkQGrc2MXda TaRZeRAAt+WL2jmmkB3R+lhAlIIlBU4sitXBVaoKHsUHO63dj/0o6+0dh9PsfNkW pXlNjhpPMrnnrZnBg2f0VABKoIYFxqKnozQzsOJW1U93xAuY5GPENqDtU7AWajGl cZ/6ZhtIuvAtzdq+oG5qqiQfdN8auRIy0cc2P8+5+rsHmlwHUX8nXIhlOvkQsi6B WWYskEGCe3HMOqkNM8SqS0s/+P3sIXHgBTqHLHd4a9PQQHTNHlNI4wx0pCtRNjQf I0+D8Ls1lu6hbil1uJrk0JEvkNkpPWIkVYs4ywWsWYtJBQv2zOofaHFq9Iqy1yFJ 1YEWhGwbANa+17bJTrXik8u2wt8UPmh4EXAToqGILfCM33PrMnxQGM8L3G7JA8HF OxQKzaCbjQmOPPOfV/HOiMuLS8R2Xn/f5PYb1C0UVAB4RSezeuXeLGWyZpsPl/OS asy7eX4PwvULaTCFLmdiuwiMO4qMziKW3mERMF6TPOIG816L/rwJY+vBARcZXqtK XdecruyjZ4T2zEKFU3eJpX95TkPSAqeB6gfilEj+a3kKCmiRbxvaU+/PoCyf3AQv TwqUs58X2rmKekkQif3Iaggs572/unlas2f7Cu7fXkgq41mOl8EBbgIfybEWuttT v9MwzFzUEoV330S2PsgvYv8N/I7oipR6tasj8pJpCGN2seeQMl8= =vAFz -----END PGP SIGNATURE----- Sun Jan 7 16:11:24 UTC 2024 I: Checking whether the package is not for us Sun Jan 7 16:11:24 UTC 2024 I: Starting 1st build on remote node codethink01-arm64.debian.net. Sun Jan 7 16:11:24 UTC 2024 I: Preparing to do remote build '1' on codethink01-arm64.debian.net. Sun Jan 7 16:12:08 UTC 2024 I: Deleting $TMPDIR on codethink01-arm64.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Sat Feb 8 10:34:26 -12 2025 I: pbuilder-time-stamp: 1739054066 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bookworm-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [guetzli_1.0.1-1.dsc] I: copying [./guetzli_1.0.1.orig.tar.gz] I: copying [./guetzli_1.0.1-1.debian.tar.xz] I: Extracting source gpgv: Signature made Wed Mar 22 16:22:11 2017 gpgv: using RSA key 1391FDB4E27C45E596685D4F1AB73631775A4DA4 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./guetzli_1.0.1-1.dsc: no acceptable signature found dpkg-source: info: extracting guetzli in guetzli-1.0.1 dpkg-source: info: unpacking guetzli_1.0.1.orig.tar.gz dpkg-source: info: unpacking guetzli_1.0.1-1.debian.tar.xz I: using fakeroot in build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/607344/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='arm64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' DISTRIBUTION='bookworm' HOME='/root' HOST_ARCH='arm64' IFS=' ' INVOCATION_ID='bbaded0f8d4141d7a9fe003abcbc27ff' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='607344' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.a7nKPhNm/pbuilderrc_IeYR --distribution bookworm --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.a7nKPhNm/b1 --logfile b1/build.log guetzli_1.0.1-1.dsc' SUDO_GID='109' SUDO_UID='104' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://192.168.101.104:3128' I: uname -a Linux codethink01-arm64 6.1.0-17-cloud-arm64 #1 SMP Debian 6.1.69-1 (2023-12-30) aarch64 GNU/Linux I: ls -l /bin total 7104 -rwxr-xr-x 1 root root 1346480 Apr 23 2023 bash -rwxr-xr-x 3 root root 67728 Sep 19 2022 bunzip2 -rwxr-xr-x 3 root root 67728 Sep 19 2022 bzcat lrwxrwxrwx 1 root root 6 Sep 19 2022 bzcmp -> bzdiff -rwxr-xr-x 1 root root 2225 Sep 19 2022 bzdiff lrwxrwxrwx 1 root root 6 Sep 19 2022 bzegrep -> bzgrep -rwxr-xr-x 1 root root 4893 Nov 27 2021 bzexe lrwxrwxrwx 1 root root 6 Sep 19 2022 bzfgrep -> bzgrep -rwxr-xr-x 1 root root 3775 Sep 19 2022 bzgrep -rwxr-xr-x 3 root root 67728 Sep 19 2022 bzip2 -rwxr-xr-x 1 root root 67664 Sep 19 2022 bzip2recover lrwxrwxrwx 1 root root 6 Sep 19 2022 bzless -> bzmore -rwxr-xr-x 1 root root 1297 Sep 19 2022 bzmore -rwxr-xr-x 1 root root 68536 Sep 20 2022 cat -rwxr-xr-x 1 root root 68616 Sep 20 2022 chgrp -rwxr-xr-x 1 root root 68552 Sep 20 2022 chmod -rwxr-xr-x 1 root root 68632 Sep 20 2022 chown -rwxr-xr-x 1 root root 200264 Sep 20 2022 cp -rwxr-xr-x 1 root root 133640 Jan 5 2023 dash -rwxr-xr-x 1 root root 134144 Sep 20 2022 date -rwxr-xr-x 1 root root 134248 Sep 20 2022 dd -rwxr-xr-x 1 root root 134888 Sep 20 2022 df -rwxr-xr-x 1 root root 200440 Sep 20 2022 dir -rwxr-xr-x 1 root root 141720 Mar 23 2023 dmesg lrwxrwxrwx 1 root root 8 Dec 19 2022 dnsdomainname -> hostname lrwxrwxrwx 1 root root 8 Dec 19 2022 domainname -> hostname -rwxr-xr-x 1 root root 68408 Sep 20 2022 echo -rwxr-xr-x 1 root root 41 Jan 24 2023 egrep -rwxr-xr-x 1 root root 68384 Sep 20 2022 false -rwxr-xr-x 1 root root 41 Jan 24 2023 fgrep -rwxr-xr-x 1 root root 134584 Mar 23 2023 findmnt -rwsr-xr-x 1 root root 67744 Mar 23 2023 fusermount -rwxr-xr-x 1 root root 198880 Jan 24 2023 grep -rwxr-xr-x 2 root root 2346 Apr 10 2022 gunzip -rwxr-xr-x 1 root root 6447 Apr 10 2022 gzexe -rwxr-xr-x 1 root root 93752 Apr 10 2022 gzip -rwxr-xr-x 1 root root 67592 Dec 19 2022 hostname -rwxr-xr-x 1 root root 68664 Sep 20 2022 ln -rwxr-xr-x 1 root root 69208 Mar 23 2023 login -rwxr-xr-x 1 root root 200440 Sep 20 2022 ls -rwxr-xr-x 1 root root 264360 Mar 23 2023 lsblk -rwxr-xr-x 1 root root 134384 Sep 20 2022 mkdir -rwxr-xr-x 1 root root 68768 Sep 20 2022 mknod -rwxr-xr-x 1 root root 68472 Sep 20 2022 mktemp -rwxr-xr-x 1 root root 67752 Mar 23 2023 more -rwsr-xr-x 1 root root 67744 Mar 23 2023 mount -rwxr-xr-x 1 root root 67744 Mar 23 2023 mountpoint -rwxr-xr-x 1 root root 134728 Sep 20 2022 mv lrwxrwxrwx 1 root root 8 Dec 19 2022 nisdomainname -> hostname lrwxrwxrwx 1 root root 14 Apr 3 2023 pidof -> /sbin/killall5 -rwxr-xr-x 1 root root 68496 Sep 20 2022 pwd lrwxrwxrwx 1 root root 4 Apr 23 2023 rbash -> bash -rwxr-xr-x 1 root root 68456 Sep 20 2022 readlink -rwxr-xr-x 1 root root 68592 Sep 20 2022 rm -rwxr-xr-x 1 root root 68480 Sep 20 2022 rmdir -rwxr-xr-x 1 root root 68392 Jul 28 2023 run-parts -rwxr-xr-x 1 root root 134536 Jan 5 2023 sed lrwxrwxrwx 1 root root 4 Jan 5 2023 sh -> dash -rwxr-xr-x 1 root root 68432 Sep 20 2022 sleep -rwxr-xr-x 1 root root 134088 Sep 20 2022 stty -rwsr-xr-x 1 root root 133312 Mar 23 2023 su -rwxr-xr-x 1 root root 68448 Sep 20 2022 sync -rwxr-xr-x 1 root root 539896 Apr 6 2023 tar -rwxr-xr-x 1 root root 67904 Jul 28 2023 tempfile -rwxr-xr-x 1 root root 134160 Sep 20 2022 touch -rwxr-xr-x 1 root root 68384 Sep 20 2022 true -rwxr-xr-x 1 root root 67664 Mar 23 2023 ulockmgr_server -rwsr-xr-x 1 root root 67744 Mar 23 2023 umount -rwxr-xr-x 1 root root 68416 Sep 20 2022 uname -rwxr-xr-x 2 root root 2346 Apr 10 2022 uncompress -rwxr-xr-x 1 root root 200440 Sep 20 2022 vdir -rwxr-xr-x 1 root root 133312 Mar 23 2023 wdctl lrwxrwxrwx 1 root root 8 Dec 19 2022 ypdomainname -> hostname -rwxr-xr-x 1 root root 1984 Apr 10 2022 zcat -rwxr-xr-x 1 root root 1678 Apr 10 2022 zcmp -rwxr-xr-x 1 root root 6460 Apr 10 2022 zdiff -rwxr-xr-x 1 root root 29 Apr 10 2022 zegrep -rwxr-xr-x 1 root root 29 Apr 10 2022 zfgrep -rwxr-xr-x 1 root root 2081 Apr 10 2022 zforce -rwxr-xr-x 1 root root 8103 Apr 10 2022 zgrep -rwxr-xr-x 1 root root 2206 Apr 10 2022 zless -rwxr-xr-x 1 root root 1842 Apr 10 2022 zmore -rwxr-xr-x 1 root root 4577 Apr 10 2022 znew I: user script /srv/workspace/pbuilder/607344/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: arm64 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper (>= 10), asciidoc-base, libpng-dev, pkg-config, xmlto dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 18171 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper (>= 10); however: Package debhelper is not installed. pbuilder-satisfydepends-dummy depends on asciidoc-base; however: Package asciidoc-base is not installed. pbuilder-satisfydepends-dummy depends on libpng-dev; however: Package libpng-dev is not installed. pbuilder-satisfydepends-dummy depends on pkg-config; however: Package pkg-config is not installed. pbuilder-satisfydepends-dummy depends on xmlto; however: Package xmlto is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: asciidoc-base{a} asciidoc-common{a} autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} debhelper{a} dh-autoreconf{a} dh-strip-nondeterminism{a} docbook-xml{a} docbook-xsl{a} dwz{a} file{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libdebhelper-perl{a} libelf1{a} libexpat1{a} libfile-stripnondeterminism-perl{a} libicu72{a} libmagic-mgc{a} libmagic1{a} libpipeline1{a} libpkgconf3{a} libpng-dev{a} libpng16-16{a} libpython3-stdlib{a} libpython3.11-minimal{a} libpython3.11-stdlib{a} libreadline8{a} libsub-override-perl{a} libtool{a} libuchardet0{a} libxml2{a} libxml2-utils{a} libxslt1.1{a} m4{a} man-db{a} media-types{a} pkg-config{a} pkgconf{a} pkgconf-bin{a} po-debconf{a} python3{a} python3-minimal{a} python3.11{a} python3.11-minimal{a} readline-common{a} sensible-utils{a} sgml-base{a} sgml-data{a} xml-core{a} xmlto{a} xsltproc{a} zlib1g-dev{a} The following packages are RECOMMENDED but will NOT be installed: ca-certificates curl dblatex fop libarchive-cpio-perl libltdl-dev libmail-sendmail-perl libpaper-utils libpng-tools lynx wget zip 0 packages upgraded, 59 newly installed, 0 to remove and 0 not upgraded. Need to get 27.6 MB of archives. After unpacking 123 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian bookworm/main arm64 libpython3.11-minimal arm64 3.11.2-6 [806 kB] Get: 2 http://deb.debian.org/debian bookworm/main arm64 libexpat1 arm64 2.5.0-1 [84.8 kB] Get: 3 http://deb.debian.org/debian bookworm/main arm64 python3.11-minimal arm64 3.11.2-6 [1858 kB] Get: 4 http://deb.debian.org/debian bookworm/main arm64 python3-minimal arm64 3.11.2-1+b1 [26.3 kB] Get: 5 http://deb.debian.org/debian bookworm/main arm64 media-types all 10.0.0 [26.1 kB] Get: 6 http://deb.debian.org/debian bookworm/main arm64 readline-common all 8.2-1.3 [69.0 kB] Get: 7 http://deb.debian.org/debian bookworm/main arm64 libreadline8 arm64 8.2-1.3 [155 kB] Get: 8 http://deb.debian.org/debian bookworm/main arm64 libpython3.11-stdlib arm64 3.11.2-6 [1747 kB] Get: 9 http://deb.debian.org/debian bookworm/main arm64 python3.11 arm64 3.11.2-6 [572 kB] Get: 10 http://deb.debian.org/debian bookworm/main arm64 libpython3-stdlib arm64 3.11.2-1+b1 [9296 B] Get: 11 http://deb.debian.org/debian bookworm/main arm64 python3 arm64 3.11.2-1+b1 [26.3 kB] Get: 12 http://deb.debian.org/debian bookworm/main arm64 sgml-base all 1.31 [15.4 kB] Get: 13 http://deb.debian.org/debian bookworm/main arm64 sensible-utils all 0.0.17+nmu1 [19.0 kB] Get: 14 http://deb.debian.org/debian bookworm/main arm64 libmagic-mgc arm64 1:5.44-3 [305 kB] Get: 15 http://deb.debian.org/debian bookworm/main arm64 libmagic1 arm64 1:5.44-3 [98.5 kB] Get: 16 http://deb.debian.org/debian bookworm/main arm64 file arm64 1:5.44-3 [42.5 kB] Get: 17 http://deb.debian.org/debian bookworm/main arm64 gettext-base arm64 0.21-12 [159 kB] Get: 18 http://deb.debian.org/debian bookworm/main arm64 libuchardet0 arm64 0.0.7-1 [67.9 kB] Get: 19 http://deb.debian.org/debian bookworm/main arm64 groff-base arm64 1.22.4-10 [861 kB] Get: 20 http://deb.debian.org/debian bookworm/main arm64 bsdextrautils arm64 2.38.1-5+b1 [86.9 kB] Get: 21 http://deb.debian.org/debian bookworm/main arm64 libpipeline1 arm64 1.5.7-1 [36.4 kB] Get: 22 http://deb.debian.org/debian bookworm/main arm64 man-db arm64 2.11.2-2 [1369 kB] Get: 23 http://deb.debian.org/debian bookworm/main arm64 asciidoc-common all 10.2.0-1 [109 kB] Get: 24 http://deb.debian.org/debian bookworm/main arm64 xml-core all 0.18+nmu1 [23.8 kB] Get: 25 http://deb.debian.org/debian bookworm/main arm64 docbook-xsl all 1.79.2+dfsg-2 [1237 kB] Get: 26 http://deb.debian.org/debian bookworm/main arm64 libicu72 arm64 72.1-3 [9204 kB] Get: 27 http://deb.debian.org/debian bookworm/main arm64 libxml2 arm64 2.9.14+dfsg-1.3~deb12u1 [619 kB] Get: 28 http://deb.debian.org/debian bookworm/main arm64 libxml2-utils arm64 2.9.14+dfsg-1.3~deb12u1 [97.2 kB] Get: 29 http://deb.debian.org/debian bookworm/main arm64 libxslt1.1 arm64 1.1.35-1 [231 kB] Get: 30 http://deb.debian.org/debian bookworm/main arm64 xsltproc arm64 1.1.35-1 [126 kB] Get: 31 http://deb.debian.org/debian bookworm/main arm64 asciidoc-base all 10.2.0-1 [89.5 kB] Get: 32 http://deb.debian.org/debian bookworm/main arm64 m4 arm64 1.4.19-3 [276 kB] Get: 33 http://deb.debian.org/debian bookworm/main arm64 autoconf all 2.71-3 [332 kB] Get: 34 http://deb.debian.org/debian bookworm/main arm64 autotools-dev all 20220109.1 [51.6 kB] Get: 35 http://deb.debian.org/debian bookworm/main arm64 automake all 1:1.16.5-1.3 [823 kB] Get: 36 http://deb.debian.org/debian bookworm/main arm64 autopoint all 0.21-12 [495 kB] Get: 37 http://deb.debian.org/debian bookworm/main arm64 libdebhelper-perl all 13.11.4 [81.2 kB] Get: 38 http://deb.debian.org/debian bookworm/main arm64 libtool all 2.4.7-5 [517 kB] Get: 39 http://deb.debian.org/debian bookworm/main arm64 dh-autoreconf all 20 [17.1 kB] Get: 40 http://deb.debian.org/debian bookworm/main arm64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 41 http://deb.debian.org/debian bookworm/main arm64 libsub-override-perl all 0.09-4 [9304 B] Get: 42 http://deb.debian.org/debian bookworm/main arm64 libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB] Get: 43 http://deb.debian.org/debian bookworm/main arm64 dh-strip-nondeterminism all 1.13.1-1 [8620 B] Get: 44 http://deb.debian.org/debian bookworm/main arm64 libelf1 arm64 0.188-2.1 [173 kB] Get: 45 http://deb.debian.org/debian bookworm/main arm64 dwz arm64 0.15-1 [101 kB] Get: 46 http://deb.debian.org/debian bookworm/main arm64 gettext arm64 0.21-12 [1248 kB] Get: 47 http://deb.debian.org/debian bookworm/main arm64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 48 http://deb.debian.org/debian bookworm/main arm64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 49 http://deb.debian.org/debian bookworm/main arm64 debhelper all 13.11.4 [942 kB] Get: 50 http://deb.debian.org/debian bookworm/main arm64 sgml-data all 2.0.11+nmu1 [179 kB] Get: 51 http://deb.debian.org/debian bookworm/main arm64 docbook-xml all 4.5-12 [85.2 kB] Get: 52 http://deb.debian.org/debian bookworm/main arm64 libpkgconf3 arm64 1.8.1-1 [35.3 kB] Get: 53 http://deb.debian.org/debian bookworm/main arm64 libpng16-16 arm64 1.6.39-2 [269 kB] Get: 54 http://deb.debian.org/debian bookworm/main arm64 zlib1g-dev arm64 1:1.2.13.dfsg-1 [913 kB] Get: 55 http://deb.debian.org/debian bookworm/main arm64 libpng-dev arm64 1.6.39-2 [354 kB] Get: 56 http://deb.debian.org/debian bookworm/main arm64 pkgconf-bin arm64 1.8.1-1 [28.9 kB] Get: 57 http://deb.debian.org/debian bookworm/main arm64 pkgconf arm64 1.8.1-1 [25.9 kB] Get: 58 http://deb.debian.org/debian bookworm/main arm64 pkg-config arm64 1.8.1-1 [13.7 kB] Get: 59 http://deb.debian.org/debian bookworm/main arm64 xmlto arm64 0.0.28-2.1 [33.3 kB] Fetched 27.6 MB in 0s (109 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:arm64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 18171 files and directories currently installed.) Preparing to unpack .../libpython3.11-minimal_3.11.2-6_arm64.deb ... Unpacking libpython3.11-minimal:arm64 (3.11.2-6) ... Selecting previously unselected package libexpat1:arm64. Preparing to unpack .../libexpat1_2.5.0-1_arm64.deb ... Unpacking libexpat1:arm64 (2.5.0-1) ... Selecting previously unselected package python3.11-minimal. Preparing to unpack .../python3.11-minimal_3.11.2-6_arm64.deb ... Unpacking python3.11-minimal (3.11.2-6) ... Setting up libpython3.11-minimal:arm64 (3.11.2-6) ... Setting up libexpat1:arm64 (2.5.0-1) ... Setting up python3.11-minimal (3.11.2-6) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 18487 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.11.2-1+b1_arm64.deb ... Unpacking python3-minimal (3.11.2-1+b1) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_10.0.0_all.deb ... Unpacking media-types (10.0.0) ... Selecting previously unselected package readline-common. Preparing to unpack .../2-readline-common_8.2-1.3_all.deb ... Unpacking readline-common (8.2-1.3) ... Selecting previously unselected package libreadline8:arm64. Preparing to unpack .../3-libreadline8_8.2-1.3_arm64.deb ... Unpacking libreadline8:arm64 (8.2-1.3) ... Selecting previously unselected package libpython3.11-stdlib:arm64. Preparing to unpack .../4-libpython3.11-stdlib_3.11.2-6_arm64.deb ... Unpacking libpython3.11-stdlib:arm64 (3.11.2-6) ... Selecting previously unselected package python3.11. Preparing to unpack .../5-python3.11_3.11.2-6_arm64.deb ... Unpacking python3.11 (3.11.2-6) ... Selecting previously unselected package libpython3-stdlib:arm64. Preparing to unpack .../6-libpython3-stdlib_3.11.2-1+b1_arm64.deb ... Unpacking libpython3-stdlib:arm64 (3.11.2-1+b1) ... Setting up python3-minimal (3.11.2-1+b1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 18921 files and directories currently installed.) Preparing to unpack .../00-python3_3.11.2-1+b1_arm64.deb ... Unpacking python3 (3.11.2-1+b1) ... Selecting previously unselected package sgml-base. Preparing to unpack .../01-sgml-base_1.31_all.deb ... Unpacking sgml-base (1.31) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../02-sensible-utils_0.0.17+nmu1_all.deb ... Unpacking sensible-utils (0.0.17+nmu1) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../03-libmagic-mgc_1%3a5.44-3_arm64.deb ... Unpacking libmagic-mgc (1:5.44-3) ... Selecting previously unselected package libmagic1:arm64. Preparing to unpack .../04-libmagic1_1%3a5.44-3_arm64.deb ... Unpacking libmagic1:arm64 (1:5.44-3) ... Selecting previously unselected package file. Preparing to unpack .../05-file_1%3a5.44-3_arm64.deb ... Unpacking file (1:5.44-3) ... Selecting previously unselected package gettext-base. Preparing to unpack .../06-gettext-base_0.21-12_arm64.deb ... Unpacking gettext-base (0.21-12) ... Selecting previously unselected package libuchardet0:arm64. Preparing to unpack .../07-libuchardet0_0.0.7-1_arm64.deb ... Unpacking libuchardet0:arm64 (0.0.7-1) ... Selecting previously unselected package groff-base. Preparing to unpack .../08-groff-base_1.22.4-10_arm64.deb ... Unpacking groff-base (1.22.4-10) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../09-bsdextrautils_2.38.1-5+b1_arm64.deb ... Unpacking bsdextrautils (2.38.1-5+b1) ... Selecting previously unselected package libpipeline1:arm64. Preparing to unpack .../10-libpipeline1_1.5.7-1_arm64.deb ... Unpacking libpipeline1:arm64 (1.5.7-1) ... Selecting previously unselected package man-db. Preparing to unpack .../11-man-db_2.11.2-2_arm64.deb ... Unpacking man-db (2.11.2-2) ... Selecting previously unselected package asciidoc-common. Preparing to unpack .../12-asciidoc-common_10.2.0-1_all.deb ... Unpacking asciidoc-common (10.2.0-1) ... Selecting previously unselected package xml-core. Preparing to unpack .../13-xml-core_0.18+nmu1_all.deb ... Unpacking xml-core (0.18+nmu1) ... Selecting previously unselected package docbook-xsl. Preparing to unpack .../14-docbook-xsl_1.79.2+dfsg-2_all.deb ... Unpacking docbook-xsl (1.79.2+dfsg-2) ... Selecting previously unselected package libicu72:arm64. Preparing to unpack .../15-libicu72_72.1-3_arm64.deb ... Unpacking libicu72:arm64 (72.1-3) ... Selecting previously unselected package libxml2:arm64. Preparing to unpack .../16-libxml2_2.9.14+dfsg-1.3~deb12u1_arm64.deb ... Unpacking libxml2:arm64 (2.9.14+dfsg-1.3~deb12u1) ... Selecting previously unselected package libxml2-utils. Preparing to unpack .../17-libxml2-utils_2.9.14+dfsg-1.3~deb12u1_arm64.deb ... Unpacking libxml2-utils (2.9.14+dfsg-1.3~deb12u1) ... Selecting previously unselected package libxslt1.1:arm64. Preparing to unpack .../18-libxslt1.1_1.1.35-1_arm64.deb ... Unpacking libxslt1.1:arm64 (1.1.35-1) ... Selecting previously unselected package xsltproc. Preparing to unpack .../19-xsltproc_1.1.35-1_arm64.deb ... Unpacking xsltproc (1.1.35-1) ... Selecting previously unselected package asciidoc-base. Preparing to unpack .../20-asciidoc-base_10.2.0-1_all.deb ... Unpacking asciidoc-base (10.2.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../21-m4_1.4.19-3_arm64.deb ... Unpacking m4 (1.4.19-3) ... Selecting previously unselected package autoconf. Preparing to unpack .../22-autoconf_2.71-3_all.deb ... Unpacking autoconf (2.71-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../23-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../24-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../25-autopoint_0.21-12_all.deb ... Unpacking autopoint (0.21-12) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../26-libdebhelper-perl_13.11.4_all.deb ... Unpacking libdebhelper-perl (13.11.4) ... Selecting previously unselected package libtool. Preparing to unpack .../27-libtool_2.4.7-5_all.deb ... Unpacking libtool (2.4.7-5) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../28-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../29-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../30-libsub-override-perl_0.09-4_all.deb ... Unpacking libsub-override-perl (0.09-4) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../31-libfile-stripnondeterminism-perl_1.13.1-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.13.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../32-dh-strip-nondeterminism_1.13.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.13.1-1) ... Selecting previously unselected package libelf1:arm64. Preparing to unpack .../33-libelf1_0.188-2.1_arm64.deb ... Unpacking libelf1:arm64 (0.188-2.1) ... Selecting previously unselected package dwz. Preparing to unpack .../34-dwz_0.15-1_arm64.deb ... Unpacking dwz (0.15-1) ... Selecting previously unselected package gettext. Preparing to unpack .../35-gettext_0.21-12_arm64.deb ... Unpacking gettext (0.21-12) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../36-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../37-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../38-debhelper_13.11.4_all.deb ... Unpacking debhelper (13.11.4) ... Selecting previously unselected package sgml-data. Preparing to unpack .../39-sgml-data_2.0.11+nmu1_all.deb ... Unpacking sgml-data (2.0.11+nmu1) ... Selecting previously unselected package docbook-xml. Preparing to unpack .../40-docbook-xml_4.5-12_all.deb ... Unpacking docbook-xml (4.5-12) ... Selecting previously unselected package libpkgconf3:arm64. Preparing to unpack .../41-libpkgconf3_1.8.1-1_arm64.deb ... Unpacking libpkgconf3:arm64 (1.8.1-1) ... Selecting previously unselected package libpng16-16:arm64. Preparing to unpack .../42-libpng16-16_1.6.39-2_arm64.deb ... Unpacking libpng16-16:arm64 (1.6.39-2) ... Selecting previously unselected package zlib1g-dev:arm64. Preparing to unpack .../43-zlib1g-dev_1%3a1.2.13.dfsg-1_arm64.deb ... Unpacking zlib1g-dev:arm64 (1:1.2.13.dfsg-1) ... Selecting previously unselected package libpng-dev:arm64. Preparing to unpack .../44-libpng-dev_1.6.39-2_arm64.deb ... Unpacking libpng-dev:arm64 (1.6.39-2) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../45-pkgconf-bin_1.8.1-1_arm64.deb ... Unpacking pkgconf-bin (1.8.1-1) ... Selecting previously unselected package pkgconf:arm64. Preparing to unpack .../46-pkgconf_1.8.1-1_arm64.deb ... Unpacking pkgconf:arm64 (1.8.1-1) ... Selecting previously unselected package pkg-config:arm64. Preparing to unpack .../47-pkg-config_1.8.1-1_arm64.deb ... Unpacking pkg-config:arm64 (1.8.1-1) ... Selecting previously unselected package xmlto. Preparing to unpack .../48-xmlto_0.0.28-2.1_arm64.deb ... Unpacking xmlto (0.0.28-2.1) ... Setting up media-types (10.0.0) ... Setting up libpipeline1:arm64 (1.5.7-1) ... Setting up libicu72:arm64 (72.1-3) ... Setting up bsdextrautils (2.38.1-5+b1) ... Setting up libmagic-mgc (1:5.44-3) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libdebhelper-perl (13.11.4) ... Setting up libmagic1:arm64 (1:5.44-3) ... Setting up gettext-base (0.21-12) ... Setting up m4 (1.4.19-3) ... Setting up file (1:5.44-3) ... Setting up autotools-dev (20220109.1) ... Setting up libpkgconf3:arm64 (1.8.1-1) ... Setting up libpng16-16:arm64 (1.6.39-2) ... Setting up autopoint (0.21-12) ... Setting up pkgconf-bin (1.8.1-1) ... Setting up autoconf (2.71-3) ... Setting up zlib1g-dev:arm64 (1:1.2.13.dfsg-1) ... Setting up sensible-utils (0.0.17+nmu1) ... Setting up libuchardet0:arm64 (0.0.7-1) ... Setting up libsub-override-perl (0.09-4) ... Setting up sgml-base (1.31) ... Setting up libelf1:arm64 (0.188-2.1) ... Setting up readline-common (8.2-1.3) ... Setting up libxml2:arm64 (2.9.14+dfsg-1.3~deb12u1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.13.1-1) ... Setting up gettext (0.21-12) ... Setting up libtool (2.4.7-5) ... Setting up libreadline8:arm64 (8.2-1.3) ... Setting up libpng-dev:arm64 (1.6.39-2) ... Setting up pkgconf:arm64 (1.8.1-1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up pkg-config:arm64 (1.8.1-1) ... Setting up dh-strip-nondeterminism (1.13.1-1) ... Setting up dwz (0.15-1) ... Setting up groff-base (1.22.4-10) ... Setting up xml-core (0.18+nmu1) ... Setting up libxslt1.1:arm64 (1.1.35-1) ... Setting up libxml2-utils (2.9.14+dfsg-1.3~deb12u1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libpython3.11-stdlib:arm64 (3.11.2-6) ... Setting up xsltproc (1.1.35-1) ... Setting up man-db (2.11.2-2) ... Not building database; man-db/auto-update is not 'true'. Setting up libpython3-stdlib:arm64 (3.11.2-1+b1) ... Setting up python3.11 (3.11.2-6) ... Setting up debhelper (13.11.4) ... Setting up python3 (3.11.2-1+b1) ... Setting up asciidoc-common (10.2.0-1) ... Processing triggers for libc-bin (2.36-9+deb12u3) ... Processing triggers for sgml-base (1.31) ... Setting up docbook-xsl (1.79.2+dfsg-2) ... Setting up sgml-data (2.0.11+nmu1) ... Setting up asciidoc-base (10.2.0-1) ... Processing triggers for sgml-base (1.31) ... Setting up docbook-xml (4.5-12) ... Processing triggers for sgml-base (1.31) ... Setting up xmlto (0.0.28-2.1) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps Reading package lists... Building dependency tree... Reading state information... fakeroot is already the newest version (1.31-1.2). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package I: Running cd /build/reproducible-path/guetzli-1.0.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../guetzli_1.0.1-1_source.changes dpkg-buildpackage: info: source package guetzli dpkg-buildpackage: info: source version 1.0.1-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by ChangZhuo Chen (陳昌倬) dpkg-source --before-build . dpkg-buildpackage: info: host architecture arm64 fakeroot debian/rules clean dh clean dh_auto_clean make -j12 clean make[1]: Entering directory '/build/reproducible-path/guetzli-1.0.1' Cleaning guetzli make[1]: Leaving directory '/build/reproducible-path/guetzli-1.0.1' dh_clean debian/rules build dh build dh_update_autotools_config dh_autoreconf debian/rules override_dh_auto_configure make[1]: Entering directory '/build/reproducible-path/guetzli-1.0.1' cat debian/*manpages | sed 's/$/.txt/p' | xargs -n 1 a2x --doctype manpage --format manpage dh_auto_configure make[1]: Leaving directory '/build/reproducible-path/guetzli-1.0.1' dh_auto_build make -j12 make[1]: Entering directory '/build/reproducible-path/guetzli-1.0.1' ==== Building guetzli (release) ==== Creating bin/Release Creating obj/Release butteraugli_comparator.cc dct_double.cc debug_print.cc entropy_encode.cc fdct.cc gamma_correct.cc guetzli.cc idct.cc jpeg_data.cc jpeg_data_decoder.cc jpeg_data_encoder.cc jpeg_data_reader.cc jpeg_data_writer.cc jpeg_huffman_decode.cc output_image.cc preprocess_downsample.cc processor.cc quality.cc quantize.cc score.cc butteraugli.cc during GIMPLE pass: vect third_party/butteraugli/butteraugli/butteraugli.cc: In function 'void butteraugli::MinSquareVal(size_t, size_t, size_t, size_t, float*)': third_party/butteraugli/butteraugli/butteraugli.cc:1318:6: internal compiler error: in vect_transform_reduction, at tree-vect-loop.cc:7457 1318 | void MinSquareVal(size_t square_size, size_t offset, | ^~~~~~~~~~~~ 0x18e9327 internal_error(char const*, ...) ???:0 0x6a6c8f fancy_abort(char const*, int, char const*) ???:0 0xf6c43b vect_transform_reduction(_loop_vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, gimple**, _slp_tree*) ???:0 0x18aedcf vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) ???:0 0xf79bcf vect_transform_loop(_loop_vec_info*, gimple*) ???:0 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See for instructions. Preprocessed source stored into /tmp/ccG3SI6a.out file, please attach this to your bugreport. === BEGIN GCC DUMP === 612825: // Target: aarch64-linux-gnu 612825: // Configured with: ../src/configure -v --with-pkgversion='Debian 12.2.0-14' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu 612825: // Thread model: posix 612825: // Supported LTO compression algorithms: zlib zstd 612825: // gcc version 12.2.0 (Debian 12.2.0-14) 612825: // 612825: // during GIMPLE pass: vect 612825: // third_party/butteraugli/butteraugli/butteraugli.cc: In function 'void butteraugli::MinSquareVal(size_t, size_t, size_t, size_t, float*)': 612825: // third_party/butteraugli/butteraugli/butteraugli.cc:1318:6: internal compiler error: in vect_transform_reduction, at tree-vect-loop.cc:7457 612825: // 1318 | void MinSquareVal(size_t square_size, size_t offset, 612825: // | ^~~~~~~~~~~~ 612825: // 0x18e9327 internal_error(char const*, ...) 612825: // ???:0 612825: // 0x6a6c8f fancy_abort(char const*, int, char const*) 612825: // ???:0 612825: // 0xf6c43b vect_transform_reduction(_loop_vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, gimple**, _slp_tree*) 612825: // ???:0 612825: // 0x18aedcf vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) 612825: // ???:0 612825: // 0xf79bcf vect_transform_loop(_loop_vec_info*, gimple*) 612825: // ???:0 612825: // Please submit a full bug report, with preprocessed source (by using -freport-bug). 612825: // Please include the complete backtrace with any bug report. 612825: // See for instructions. 612825: 612825: // /usr/lib/gcc/aarch64-linux-gnu/12/cc1plus -quiet -I . -I third_party/butteraugli -I /usr/include/libpng16 -imultiarch aarch64-linux-gnu -MMD obj/Release/butteraugli.d -MF obj/Release/butteraugli.d -MP -MQ obj/Release/butteraugli.o -D_GNU_SOURCE -D _FORTIFY_SOURCE=2 third_party/butteraugli/butteraugli/butteraugli.cc -quiet -dumpdir obj/Release/ -dumpbase butteraugli.cc -dumpbase-ext .cc -mlittle-endian -mabi=lp64 -g -g -O2 -O3 -Wformat=1 -Werror=format-security -Wdate-time -std=c++11 -ffile-prefix-map=/build/reproducible-path/guetzli-1.0.1=. -fstack-protector-strong -fasynchronous-unwind-tables -o - -frandom-seed=0 -fdump-noaddr 612825: 612825: # 0 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: # 1 "/build/reproducible-path/guetzli-1.0.1//" 612825: # 0 "" 612825: # 0 "" 612825: # 1 "/usr/include/stdc-predef.h" 1 3 4 612825: # 0 "" 2 612825: # 1 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: # 32 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: # 1 "third_party/butteraugli/butteraugli/butteraugli.h" 1 612825: # 22 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: # 1 "/usr/include/c++/12/cassert" 1 3 612825: # 41 "/usr/include/c++/12/cassert" 3 612825: 612825: # 42 "/usr/include/c++/12/cassert" 3 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++config.h" 1 3 612825: # 296 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++config.h" 3 612825: 612825: # 296 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++config.h" 3 612825: namespace std 612825: { 612825: typedef long unsigned int size_t; 612825: typedef long int ptrdiff_t; 612825: 612825: 612825: typedef decltype(nullptr) nullptr_t; 612825: 612825: 612825: #pragma GCC visibility push(default) 612825: 612825: 612825: extern "C++" __attribute__ ((__noreturn__, __always_inline__)) 612825: inline void __terminate() noexcept 612825: { 612825: void terminate() noexcept __attribute__ ((__noreturn__)); 612825: terminate(); 612825: } 612825: #pragma GCC visibility pop 612825: } 612825: # 329 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++config.h" 3 612825: namespace std 612825: { 612825: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 612825: } 612825: namespace __gnu_cxx 612825: { 612825: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } 612825: } 612825: # 508 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++config.h" 3 612825: namespace std 612825: { 612825: #pragma GCC visibility push(default) 612825: 612825: 612825: 612825: 612825: constexpr inline bool 612825: __is_constant_evaluated() noexcept 612825: { 612825: 612825: 612825: 612825: 612825: 612825: return __builtin_is_constant_evaluated(); 612825: 612825: 612825: 612825: } 612825: #pragma GCC visibility pop 612825: } 612825: # 655 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++config.h" 3 612825: # 1 "/usr/include/aarch64-linux-gnu/c++/12/bits/os_defines.h" 1 3 612825: # 39 "/usr/include/aarch64-linux-gnu/c++/12/bits/os_defines.h" 3 612825: # 1 "/usr/include/features.h" 1 3 4 612825: # 392 "/usr/include/features.h" 3 4 612825: # 1 "/usr/include/features-time64.h" 1 3 4 612825: # 20 "/usr/include/features-time64.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 612825: # 21 "/usr/include/features-time64.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 1 3 4 612825: # 22 "/usr/include/features-time64.h" 2 3 4 612825: # 393 "/usr/include/features.h" 2 3 4 612825: # 489 "/usr/include/features.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 1 3 4 612825: # 561 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 612825: # 562 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4 612825: # 563 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4 612825: # 490 "/usr/include/features.h" 2 3 4 612825: # 513 "/usr/include/features.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 1 3 4 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 612825: # 6 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/gnu/stubs-lp64.h" 1 3 4 612825: # 9 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4 612825: # 514 "/usr/include/features.h" 2 3 4 612825: # 40 "/usr/include/aarch64-linux-gnu/c++/12/bits/os_defines.h" 2 3 612825: # 656 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++config.h" 2 3 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/c++/12/bits/cpu_defines.h" 1 3 612825: # 659 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++config.h" 2 3 612825: # 44 "/usr/include/c++/12/cassert" 2 3 612825: # 1 "/usr/include/assert.h" 1 3 4 612825: # 66 "/usr/include/assert.h" 3 4 612825: extern "C" { 612825: 612825: 612825: extern void __assert_fail (const char *__assertion, const char *__file, 612825: unsigned int __line, const char *__function) 612825: noexcept (true) __attribute__ ((__noreturn__)); 612825: 612825: 612825: extern void __assert_perror_fail (int __errnum, const char *__file, 612825: unsigned int __line, const char *__function) 612825: noexcept (true) __attribute__ ((__noreturn__)); 612825: 612825: 612825: 612825: 612825: extern void __assert (const char *__assertion, const char *__file, int __line) 612825: noexcept (true) __attribute__ ((__noreturn__)); 612825: 612825: 612825: } 612825: # 45 "/usr/include/c++/12/cassert" 2 3 612825: # 23 "third_party/butteraugli/butteraugli/butteraugli.h" 2 612825: # 1 "/usr/include/c++/12/cmath" 1 3 612825: # 39 "/usr/include/c++/12/cmath" 3 612825: 612825: # 40 "/usr/include/c++/12/cmath" 3 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/cpp_type_traits.h" 1 3 612825: # 35 "/usr/include/c++/12/bits/cpp_type_traits.h" 3 612825: 612825: # 36 "/usr/include/c++/12/bits/cpp_type_traits.h" 3 612825: # 67 "/usr/include/c++/12/bits/cpp_type_traits.h" 3 612825: extern "C++" { 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: struct __true_type { }; 612825: struct __false_type { }; 612825: 612825: template 612825: struct __truth_type 612825: { typedef __false_type __type; }; 612825: 612825: template<> 612825: struct __truth_type 612825: { typedef __true_type __type; }; 612825: 612825: 612825: 612825: template 612825: struct __traitor 612825: { 612825: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; 612825: typedef typename __truth_type<__value>::__type __type; 612825: }; 612825: 612825: 612825: template 612825: struct __are_same 612825: { 612825: enum { __value = 0 }; 612825: typedef __false_type __type; 612825: }; 612825: 612825: template 612825: struct __are_same<_Tp, _Tp> 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: 612825: template 612825: struct __is_void 612825: { 612825: enum { __value = 0 }; 612825: typedef __false_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_void 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __is_integer 612825: { 612825: enum { __value = 0 }; 612825: typedef __false_type __type; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: # 184 "/usr/include/c++/12/bits/cpp_type_traits.h" 3 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_integer 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: # 289 "/usr/include/c++/12/bits/cpp_type_traits.h" 3 612825: template 612825: struct __is_floating 612825: { 612825: enum { __value = 0 }; 612825: typedef __false_type __type; 612825: }; 612825: 612825: 612825: template<> 612825: struct __is_floating 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_floating 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_floating 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __is_pointer 612825: { 612825: enum { __value = 0 }; 612825: typedef __false_type __type; 612825: }; 612825: 612825: template 612825: struct __is_pointer<_Tp*> 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __is_arithmetic 612825: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > 612825: { }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __is_scalar 612825: : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > 612825: { }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __is_char 612825: { 612825: enum { __value = 0 }; 612825: typedef __false_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_char 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: 612825: template<> 612825: struct __is_char 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: 612825: template 612825: struct __is_byte 612825: { 612825: enum { __value = 0 }; 612825: typedef __false_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_byte 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_byte 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template<> 612825: struct __is_byte 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: # 425 "/usr/include/c++/12/bits/cpp_type_traits.h" 3 612825: template struct iterator_traits; 612825: 612825: 612825: template 612825: struct __is_nonvolatile_trivially_copyable 612825: { 612825: enum { __value = __is_trivially_copyable(_Tp) }; 612825: }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __is_nonvolatile_trivially_copyable 612825: { 612825: enum { __value = 0 }; 612825: }; 612825: 612825: 612825: template 612825: struct __memcpyable 612825: { 612825: enum { __value = 0 }; 612825: }; 612825: 612825: template 612825: struct __memcpyable<_Tp*, _Tp*> 612825: : __is_nonvolatile_trivially_copyable<_Tp> 612825: { }; 612825: 612825: template 612825: struct __memcpyable<_Tp*, const _Tp*> 612825: : __is_nonvolatile_trivially_copyable<_Tp> 612825: { }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct __memcmpable 612825: { 612825: enum { __value = 0 }; 612825: }; 612825: 612825: 612825: template 612825: struct __memcmpable<_Tp*, _Tp*> 612825: : __is_nonvolatile_trivially_copyable<_Tp> 612825: { }; 612825: 612825: template 612825: struct __memcmpable 612825: : __is_nonvolatile_trivially_copyable<_Tp> 612825: { }; 612825: 612825: template 612825: struct __memcmpable<_Tp*, const _Tp*> 612825: : __is_nonvolatile_trivially_copyable<_Tp> 612825: { }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template::__value 612825: 612825: > 612825: struct __is_memcmp_ordered 612825: { 612825: static const bool __value = _Tp(-1) > _Tp(1); 612825: }; 612825: 612825: template 612825: struct __is_memcmp_ordered<_Tp, false> 612825: { 612825: static const bool __value = false; 612825: }; 612825: 612825: 612825: template 612825: struct __is_memcmp_ordered_with 612825: { 612825: static const bool __value = __is_memcmp_ordered<_Tp>::__value 612825: && __is_memcmp_ordered<_Up>::__value; 612825: }; 612825: 612825: template 612825: struct __is_memcmp_ordered_with<_Tp, _Up, false> 612825: { 612825: static const bool __value = false; 612825: }; 612825: # 550 "/usr/include/c++/12/bits/cpp_type_traits.h" 3 612825: template 612825: struct __is_move_iterator 612825: { 612825: enum { __value = 0 }; 612825: typedef __false_type __type; 612825: }; 612825: 612825: 612825: 612825: template 612825: 612825: inline _Iterator 612825: __miter_base(_Iterator __it) 612825: { return __it; } 612825: 612825: 612825: } 612825: } 612825: # 43 "/usr/include/c++/12/cmath" 2 3 612825: # 1 "/usr/include/c++/12/ext/type_traits.h" 1 3 612825: # 32 "/usr/include/c++/12/ext/type_traits.h" 3 612825: 612825: # 33 "/usr/include/c++/12/ext/type_traits.h" 3 612825: 612825: 612825: 612825: 612825: extern "C++" { 612825: 612825: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: template 612825: struct __enable_if 612825: { }; 612825: 612825: template 612825: struct __enable_if 612825: { typedef _Tp __type; }; 612825: 612825: 612825: 612825: template 612825: struct __conditional_type 612825: { typedef _Iftrue __type; }; 612825: 612825: template 612825: struct __conditional_type 612825: { typedef _Iffalse __type; }; 612825: 612825: 612825: 612825: template 612825: struct __add_unsigned 612825: { 612825: private: 612825: typedef __enable_if::__value, _Tp> __if_type; 612825: 612825: public: 612825: typedef typename __if_type::__type __type; 612825: }; 612825: 612825: template<> 612825: struct __add_unsigned 612825: { typedef unsigned char __type; }; 612825: 612825: template<> 612825: struct __add_unsigned 612825: { typedef unsigned char __type; }; 612825: 612825: template<> 612825: struct __add_unsigned 612825: { typedef unsigned short __type; }; 612825: 612825: template<> 612825: struct __add_unsigned 612825: { typedef unsigned int __type; }; 612825: 612825: template<> 612825: struct __add_unsigned 612825: { typedef unsigned long __type; }; 612825: 612825: template<> 612825: struct __add_unsigned 612825: { typedef unsigned long long __type; }; 612825: 612825: 612825: template<> 612825: struct __add_unsigned; 612825: 612825: template<> 612825: struct __add_unsigned; 612825: 612825: 612825: 612825: template 612825: struct __remove_unsigned 612825: { 612825: private: 612825: typedef __enable_if::__value, _Tp> __if_type; 612825: 612825: public: 612825: typedef typename __if_type::__type __type; 612825: }; 612825: 612825: template<> 612825: struct __remove_unsigned 612825: { typedef signed char __type; }; 612825: 612825: template<> 612825: struct __remove_unsigned 612825: { typedef signed char __type; }; 612825: 612825: template<> 612825: struct __remove_unsigned 612825: { typedef short __type; }; 612825: 612825: template<> 612825: struct __remove_unsigned 612825: { typedef int __type; }; 612825: 612825: template<> 612825: struct __remove_unsigned 612825: { typedef long __type; }; 612825: 612825: template<> 612825: struct __remove_unsigned 612825: { typedef long long __type; }; 612825: 612825: 612825: template<> 612825: struct __remove_unsigned; 612825: 612825: template<> 612825: struct __remove_unsigned; 612825: 612825: 612825: 612825: template 612825: constexpr 612825: inline bool 612825: __is_null_pointer(_Type* __ptr) 612825: { return __ptr == 0; } 612825: 612825: template 612825: constexpr 612825: inline bool 612825: __is_null_pointer(_Type) 612825: { return false; } 612825: 612825: 612825: constexpr bool 612825: __is_null_pointer(std::nullptr_t) 612825: { return true; } 612825: 612825: 612825: 612825: 612825: template::__value> 612825: struct __promote 612825: { typedef double __type; }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __promote<_Tp, false> 612825: { }; 612825: 612825: template<> 612825: struct __promote 612825: { typedef long double __type; }; 612825: 612825: template<> 612825: struct __promote 612825: { typedef double __type; }; 612825: 612825: template<> 612825: struct __promote 612825: { typedef float __type; }; 612825: # 211 "/usr/include/c++/12/ext/type_traits.h" 3 612825: template::__type, 612825: typename _Up2 = typename __promote<_Up>::__type> 612825: struct __promote_2 612825: { 612825: typedef __typeof__(_Tp2() + _Up2()) __type; 612825: }; 612825: 612825: template::__type, 612825: typename _Up2 = typename __promote<_Up>::__type, 612825: typename _Vp2 = typename __promote<_Vp>::__type> 612825: struct __promote_3 612825: { 612825: typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; 612825: }; 612825: 612825: template::__type, 612825: typename _Up2 = typename __promote<_Up>::__type, 612825: typename _Vp2 = typename __promote<_Vp>::__type, 612825: typename _Wp2 = typename __promote<_Wp>::__type> 612825: struct __promote_4 612825: { 612825: typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; 612825: }; 612825: 612825: 612825: 612825: } 612825: } 612825: # 44 "/usr/include/c++/12/cmath" 2 3 612825: 612825: # 1 "/usr/include/math.h" 1 3 4 612825: # 27 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 612825: # 28 "/usr/include/math.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C" { 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types.h" 1 3 4 612825: # 27 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 612825: # 28 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 1 3 4 612825: # 29 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 612825: 612825: 612825: typedef unsigned char __u_char; 612825: typedef unsigned short int __u_short; 612825: typedef unsigned int __u_int; 612825: typedef unsigned long int __u_long; 612825: 612825: 612825: typedef signed char __int8_t; 612825: typedef unsigned char __uint8_t; 612825: typedef signed short int __int16_t; 612825: typedef unsigned short int __uint16_t; 612825: typedef signed int __int32_t; 612825: typedef unsigned int __uint32_t; 612825: 612825: typedef signed long int __int64_t; 612825: typedef unsigned long int __uint64_t; 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef __int8_t __int_least8_t; 612825: typedef __uint8_t __uint_least8_t; 612825: typedef __int16_t __int_least16_t; 612825: typedef __uint16_t __uint_least16_t; 612825: typedef __int32_t __int_least32_t; 612825: typedef __uint32_t __uint_least32_t; 612825: typedef __int64_t __int_least64_t; 612825: typedef __uint64_t __uint_least64_t; 612825: 612825: 612825: 612825: typedef long int __quad_t; 612825: typedef unsigned long int __u_quad_t; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef long int __intmax_t; 612825: typedef unsigned long int __uintmax_t; 612825: # 141 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/typesizes.h" 1 3 4 612825: # 142 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/time64.h" 1 3 4 612825: # 143 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4 612825: 612825: 612825: typedef unsigned long int __dev_t; 612825: typedef unsigned int __uid_t; 612825: typedef unsigned int __gid_t; 612825: typedef unsigned long int __ino_t; 612825: typedef unsigned long int __ino64_t; 612825: typedef unsigned int __mode_t; 612825: typedef unsigned int __nlink_t; 612825: typedef long int __off_t; 612825: typedef long int __off64_t; 612825: typedef int __pid_t; 612825: typedef struct { int __val[2]; } __fsid_t; 612825: typedef long int __clock_t; 612825: typedef unsigned long int __rlim_t; 612825: typedef unsigned long int __rlim64_t; 612825: typedef unsigned int __id_t; 612825: typedef long int __time_t; 612825: typedef unsigned int __useconds_t; 612825: typedef long int __suseconds_t; 612825: typedef long int __suseconds64_t; 612825: 612825: typedef int __daddr_t; 612825: typedef int __key_t; 612825: 612825: 612825: typedef int __clockid_t; 612825: 612825: 612825: typedef void * __timer_t; 612825: 612825: 612825: typedef int __blksize_t; 612825: 612825: 612825: 612825: 612825: typedef long int __blkcnt_t; 612825: typedef long int __blkcnt64_t; 612825: 612825: 612825: typedef unsigned long int __fsblkcnt_t; 612825: typedef unsigned long int __fsblkcnt64_t; 612825: 612825: 612825: typedef unsigned long int __fsfilcnt_t; 612825: typedef unsigned long int __fsfilcnt64_t; 612825: 612825: 612825: typedef long int __fsword_t; 612825: 612825: typedef long int __ssize_t; 612825: 612825: 612825: typedef long int __syscall_slong_t; 612825: 612825: typedef unsigned long int __syscall_ulong_t; 612825: 612825: 612825: 612825: typedef __off64_t __loff_t; 612825: typedef char *__caddr_t; 612825: 612825: 612825: typedef long int __intptr_t; 612825: 612825: 612825: typedef unsigned int __socklen_t; 612825: 612825: 612825: 612825: 612825: typedef int __sig_atomic_t; 612825: # 38 "/usr/include/math.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 1 3 4 612825: # 27 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/libm-simd-decl-stubs.h" 1 3 4 612825: # 28 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 2 3 4 612825: # 41 "/usr/include/math.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 1 3 4 612825: # 23 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 2 3 4 612825: # 80 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4 612825: typedef long double _Float128; 612825: # 95 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4 612825: # 25 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 2 3 4 612825: # 214 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 612825: typedef float _Float32; 612825: # 251 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 612825: typedef double _Float64; 612825: # 268 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 612825: typedef double _Float32x; 612825: # 285 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4 612825: typedef long double _Float64x; 612825: # 96 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 2 3 4 612825: # 44 "/usr/include/math.h" 2 3 4 612825: # 152 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/flt-eval-method.h" 1 3 4 612825: # 153 "/usr/include/math.h" 2 3 4 612825: # 163 "/usr/include/math.h" 3 4 612825: typedef float float_t; 612825: typedef double double_t; 612825: # 204 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/fp-logb.h" 1 3 4 612825: # 205 "/usr/include/math.h" 2 3 4 612825: # 247 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/fp-fast.h" 1 3 4 612825: # 248 "/usr/include/math.h" 2 3 4 612825: 612825: 612825: 612825: enum 612825: { 612825: FP_INT_UPWARD = 612825: 612825: 0, 612825: FP_INT_DOWNWARD = 612825: 612825: 1, 612825: FP_INT_TOWARDZERO = 612825: 612825: 2, 612825: FP_INT_TONEARESTFROMZERO = 612825: 612825: 3, 612825: FP_INT_TONEAREST = 612825: 612825: 4, 612825: }; 612825: # 312 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 612825: # 20 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 612825: extern int __fpclassify (double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __signbit (double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern int __isinf (double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __finite (double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __isnan (double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __iseqsig (double __x, double __y) noexcept (true); 612825: 612825: 612825: extern int __issignaling (double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: # 313 "/usr/include/math.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 612825: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern double acos (double __x) noexcept (true); extern double __acos (double __x) noexcept (true); 612825: 612825: extern double asin (double __x) noexcept (true); extern double __asin (double __x) noexcept (true); 612825: 612825: extern double atan (double __x) noexcept (true); extern double __atan (double __x) noexcept (true); 612825: 612825: extern double atan2 (double __y, double __x) noexcept (true); extern double __atan2 (double __y, double __x) noexcept (true); 612825: 612825: 612825: extern double cos (double __x) noexcept (true); extern double __cos (double __x) noexcept (true); 612825: 612825: extern double sin (double __x) noexcept (true); extern double __sin (double __x) noexcept (true); 612825: 612825: extern double tan (double __x) noexcept (true); extern double __tan (double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern double cosh (double __x) noexcept (true); extern double __cosh (double __x) noexcept (true); 612825: 612825: extern double sinh (double __x) noexcept (true); extern double __sinh (double __x) noexcept (true); 612825: 612825: extern double tanh (double __x) noexcept (true); extern double __tanh (double __x) noexcept (true); 612825: 612825: 612825: 612825: extern void sincos (double __x, double *__sinx, double *__cosx) noexcept (true); extern void __sincos (double __x, double *__sinx, double *__cosx) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern double acosh (double __x) noexcept (true); extern double __acosh (double __x) noexcept (true); 612825: 612825: extern double asinh (double __x) noexcept (true); extern double __asinh (double __x) noexcept (true); 612825: 612825: extern double atanh (double __x) noexcept (true); extern double __atanh (double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern double exp (double __x) noexcept (true); extern double __exp (double __x) noexcept (true); 612825: 612825: 612825: extern double frexp (double __x, int *__exponent) noexcept (true); extern double __frexp (double __x, int *__exponent) noexcept (true); 612825: 612825: 612825: extern double ldexp (double __x, int __exponent) noexcept (true); extern double __ldexp (double __x, int __exponent) noexcept (true); 612825: 612825: 612825: extern double log (double __x) noexcept (true); extern double __log (double __x) noexcept (true); 612825: 612825: 612825: extern double log10 (double __x) noexcept (true); extern double __log10 (double __x) noexcept (true); 612825: 612825: 612825: extern double modf (double __x, double *__iptr) noexcept (true); extern double __modf (double __x, double *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: extern double exp10 (double __x) noexcept (true); extern double __exp10 (double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern double expm1 (double __x) noexcept (true); extern double __expm1 (double __x) noexcept (true); 612825: 612825: 612825: extern double log1p (double __x) noexcept (true); extern double __log1p (double __x) noexcept (true); 612825: 612825: 612825: extern double logb (double __x) noexcept (true); extern double __logb (double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern double exp2 (double __x) noexcept (true); extern double __exp2 (double __x) noexcept (true); 612825: 612825: 612825: extern double log2 (double __x) noexcept (true); extern double __log2 (double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern double pow (double __x, double __y) noexcept (true); extern double __pow (double __x, double __y) noexcept (true); 612825: 612825: 612825: extern double sqrt (double __x) noexcept (true); extern double __sqrt (double __x) noexcept (true); 612825: 612825: 612825: 612825: extern double hypot (double __x, double __y) noexcept (true); extern double __hypot (double __x, double __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern double cbrt (double __x) noexcept (true); extern double __cbrt (double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern double ceil (double __x) noexcept (true) __attribute__ ((__const__)); extern double __ceil (double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fabs (double __x) noexcept (true) __attribute__ ((__const__)); extern double __fabs (double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double floor (double __x) noexcept (true) __attribute__ ((__const__)); extern double __floor (double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fmod (double __x, double __y) noexcept (true); extern double __fmod (double __x, double __y) noexcept (true); 612825: # 183 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern int finite (double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern double drem (double __x, double __y) noexcept (true); extern double __drem (double __x, double __y) noexcept (true); 612825: 612825: 612825: 612825: extern double significand (double __x) noexcept (true); extern double __significand (double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern double copysign (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern double nan (const char *__tagb) noexcept (true); extern double __nan (const char *__tagb) noexcept (true); 612825: # 220 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern double j0 (double) noexcept (true); extern double __j0 (double) noexcept (true); 612825: extern double j1 (double) noexcept (true); extern double __j1 (double) noexcept (true); 612825: extern double jn (int, double) noexcept (true); extern double __jn (int, double) noexcept (true); 612825: extern double y0 (double) noexcept (true); extern double __y0 (double) noexcept (true); 612825: extern double y1 (double) noexcept (true); extern double __y1 (double) noexcept (true); 612825: extern double yn (int, double) noexcept (true); extern double __yn (int, double) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern double erf (double) noexcept (true); extern double __erf (double) noexcept (true); 612825: extern double erfc (double) noexcept (true); extern double __erfc (double) noexcept (true); 612825: extern double lgamma (double) noexcept (true); extern double __lgamma (double) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern double tgamma (double) noexcept (true); extern double __tgamma (double) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern double gamma (double) noexcept (true); extern double __gamma (double) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern double lgamma_r (double, int *__signgamp) noexcept (true); extern double __lgamma_r (double, int *__signgamp) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern double rint (double __x) noexcept (true); extern double __rint (double __x) noexcept (true); 612825: 612825: 612825: extern double nextafter (double __x, double __y) noexcept (true); extern double __nextafter (double __x, double __y) noexcept (true); 612825: 612825: extern double nexttoward (double __x, long double __y) noexcept (true); extern double __nexttoward (double __x, long double __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern double nextdown (double __x) noexcept (true); extern double __nextdown (double __x) noexcept (true); 612825: 612825: extern double nextup (double __x) noexcept (true); extern double __nextup (double __x) noexcept (true); 612825: 612825: 612825: 612825: extern double remainder (double __x, double __y) noexcept (true); extern double __remainder (double __x, double __y) noexcept (true); 612825: 612825: 612825: 612825: extern double scalbn (double __x, int __n) noexcept (true); extern double __scalbn (double __x, int __n) noexcept (true); 612825: 612825: 612825: 612825: extern int ilogb (double __x) noexcept (true); extern int __ilogb (double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long int llogb (double __x) noexcept (true); extern long int __llogb (double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern double scalbln (double __x, long int __n) noexcept (true); extern double __scalbln (double __x, long int __n) noexcept (true); 612825: 612825: 612825: 612825: extern double nearbyint (double __x) noexcept (true); extern double __nearbyint (double __x) noexcept (true); 612825: 612825: 612825: 612825: extern double round (double __x) noexcept (true) __attribute__ ((__const__)); extern double __round (double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern double trunc (double __x) noexcept (true) __attribute__ ((__const__)); extern double __trunc (double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern double remquo (double __x, double __y, int *__quo) noexcept (true); extern double __remquo (double __x, double __y, int *__quo) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long int lrint (double __x) noexcept (true); extern long int __lrint (double __x) noexcept (true); 612825: __extension__ 612825: extern long long int llrint (double __x) noexcept (true); extern long long int __llrint (double __x) noexcept (true); 612825: 612825: 612825: 612825: extern long int lround (double __x) noexcept (true); extern long int __lround (double __x) noexcept (true); 612825: __extension__ 612825: extern long long int llround (double __x) noexcept (true); extern long long int __llround (double __x) noexcept (true); 612825: 612825: 612825: 612825: extern double fdim (double __x, double __y) noexcept (true); extern double __fdim (double __x, double __y) noexcept (true); 612825: 612825: 612825: 612825: extern double fmax (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmax (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fmin (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmin (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern double fma (double __x, double __y, double __z) noexcept (true); extern double __fma (double __x, double __y, double __z) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern double roundeven (double __x) noexcept (true) __attribute__ ((__const__)); extern double __roundeven (double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern __intmax_t fromfp (double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: extern int canonicalize (double *__cx, const double *__x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern double fmaxmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fminmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern double fmaximum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fminimum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fmaximum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fminimum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fmaximum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fminimum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fmaximum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern double fminimum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern int totalorder (const double *__x, const double *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern int totalordermag (const double *__x, const double *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern double getpayload (const double *__x) noexcept (true); extern double __getpayload (const double *__x) noexcept (true); 612825: 612825: 612825: extern int setpayload (double *__x, double __payload) noexcept (true); 612825: 612825: 612825: extern int setpayloadsig (double *__x, double __payload) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern double scalb (double __x, double __n) noexcept (true); extern double __scalb (double __x, double __n) noexcept (true); 612825: # 314 "/usr/include/math.h" 2 3 4 612825: # 329 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 612825: # 20 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 612825: extern int __fpclassifyf (float __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __signbitf (float __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern int __isinff (float __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __finitef (float __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __isnanf (float __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __iseqsigf (float __x, float __y) noexcept (true); 612825: 612825: 612825: extern int __issignalingf (float __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: # 330 "/usr/include/math.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 612825: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern float acosf (float __x) noexcept (true); extern float __acosf (float __x) noexcept (true); 612825: 612825: extern float asinf (float __x) noexcept (true); extern float __asinf (float __x) noexcept (true); 612825: 612825: extern float atanf (float __x) noexcept (true); extern float __atanf (float __x) noexcept (true); 612825: 612825: extern float atan2f (float __y, float __x) noexcept (true); extern float __atan2f (float __y, float __x) noexcept (true); 612825: 612825: 612825: extern float cosf (float __x) noexcept (true); extern float __cosf (float __x) noexcept (true); 612825: 612825: extern float sinf (float __x) noexcept (true); extern float __sinf (float __x) noexcept (true); 612825: 612825: extern float tanf (float __x) noexcept (true); extern float __tanf (float __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern float coshf (float __x) noexcept (true); extern float __coshf (float __x) noexcept (true); 612825: 612825: extern float sinhf (float __x) noexcept (true); extern float __sinhf (float __x) noexcept (true); 612825: 612825: extern float tanhf (float __x) noexcept (true); extern float __tanhf (float __x) noexcept (true); 612825: 612825: 612825: 612825: extern void sincosf (float __x, float *__sinx, float *__cosx) noexcept (true); extern void __sincosf (float __x, float *__sinx, float *__cosx) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern float acoshf (float __x) noexcept (true); extern float __acoshf (float __x) noexcept (true); 612825: 612825: extern float asinhf (float __x) noexcept (true); extern float __asinhf (float __x) noexcept (true); 612825: 612825: extern float atanhf (float __x) noexcept (true); extern float __atanhf (float __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern float expf (float __x) noexcept (true); extern float __expf (float __x) noexcept (true); 612825: 612825: 612825: extern float frexpf (float __x, int *__exponent) noexcept (true); extern float __frexpf (float __x, int *__exponent) noexcept (true); 612825: 612825: 612825: extern float ldexpf (float __x, int __exponent) noexcept (true); extern float __ldexpf (float __x, int __exponent) noexcept (true); 612825: 612825: 612825: extern float logf (float __x) noexcept (true); extern float __logf (float __x) noexcept (true); 612825: 612825: 612825: extern float log10f (float __x) noexcept (true); extern float __log10f (float __x) noexcept (true); 612825: 612825: 612825: extern float modff (float __x, float *__iptr) noexcept (true); extern float __modff (float __x, float *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: extern float exp10f (float __x) noexcept (true); extern float __exp10f (float __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern float expm1f (float __x) noexcept (true); extern float __expm1f (float __x) noexcept (true); 612825: 612825: 612825: extern float log1pf (float __x) noexcept (true); extern float __log1pf (float __x) noexcept (true); 612825: 612825: 612825: extern float logbf (float __x) noexcept (true); extern float __logbf (float __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern float exp2f (float __x) noexcept (true); extern float __exp2f (float __x) noexcept (true); 612825: 612825: 612825: extern float log2f (float __x) noexcept (true); extern float __log2f (float __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern float powf (float __x, float __y) noexcept (true); extern float __powf (float __x, float __y) noexcept (true); 612825: 612825: 612825: extern float sqrtf (float __x) noexcept (true); extern float __sqrtf (float __x) noexcept (true); 612825: 612825: 612825: 612825: extern float hypotf (float __x, float __y) noexcept (true); extern float __hypotf (float __x, float __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern float cbrtf (float __x) noexcept (true); extern float __cbrtf (float __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern float ceilf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __ceilf (float __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fabsf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __fabsf (float __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float floorf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __floorf (float __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fmodf (float __x, float __y) noexcept (true); extern float __fmodf (float __x, float __y) noexcept (true); 612825: # 177 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern int isinff (float __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern int finitef (float __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern float dremf (float __x, float __y) noexcept (true); extern float __dremf (float __x, float __y) noexcept (true); 612825: 612825: 612825: 612825: extern float significandf (float __x) noexcept (true); extern float __significandf (float __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern float copysignf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern float nanf (const char *__tagb) noexcept (true); extern float __nanf (const char *__tagb) noexcept (true); 612825: # 213 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern int isnanf (float __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: 612825: extern float j0f (float) noexcept (true); extern float __j0f (float) noexcept (true); 612825: extern float j1f (float) noexcept (true); extern float __j1f (float) noexcept (true); 612825: extern float jnf (int, float) noexcept (true); extern float __jnf (int, float) noexcept (true); 612825: extern float y0f (float) noexcept (true); extern float __y0f (float) noexcept (true); 612825: extern float y1f (float) noexcept (true); extern float __y1f (float) noexcept (true); 612825: extern float ynf (int, float) noexcept (true); extern float __ynf (int, float) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern float erff (float) noexcept (true); extern float __erff (float) noexcept (true); 612825: extern float erfcf (float) noexcept (true); extern float __erfcf (float) noexcept (true); 612825: extern float lgammaf (float) noexcept (true); extern float __lgammaf (float) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern float tgammaf (float) noexcept (true); extern float __tgammaf (float) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern float gammaf (float) noexcept (true); extern float __gammaf (float) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern float lgammaf_r (float, int *__signgamp) noexcept (true); extern float __lgammaf_r (float, int *__signgamp) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern float rintf (float __x) noexcept (true); extern float __rintf (float __x) noexcept (true); 612825: 612825: 612825: extern float nextafterf (float __x, float __y) noexcept (true); extern float __nextafterf (float __x, float __y) noexcept (true); 612825: 612825: extern float nexttowardf (float __x, long double __y) noexcept (true); extern float __nexttowardf (float __x, long double __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern float nextdownf (float __x) noexcept (true); extern float __nextdownf (float __x) noexcept (true); 612825: 612825: extern float nextupf (float __x) noexcept (true); extern float __nextupf (float __x) noexcept (true); 612825: 612825: 612825: 612825: extern float remainderf (float __x, float __y) noexcept (true); extern float __remainderf (float __x, float __y) noexcept (true); 612825: 612825: 612825: 612825: extern float scalbnf (float __x, int __n) noexcept (true); extern float __scalbnf (float __x, int __n) noexcept (true); 612825: 612825: 612825: 612825: extern int ilogbf (float __x) noexcept (true); extern int __ilogbf (float __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long int llogbf (float __x) noexcept (true); extern long int __llogbf (float __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern float scalblnf (float __x, long int __n) noexcept (true); extern float __scalblnf (float __x, long int __n) noexcept (true); 612825: 612825: 612825: 612825: extern float nearbyintf (float __x) noexcept (true); extern float __nearbyintf (float __x) noexcept (true); 612825: 612825: 612825: 612825: extern float roundf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __roundf (float __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern float truncf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __truncf (float __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern float remquof (float __x, float __y, int *__quo) noexcept (true); extern float __remquof (float __x, float __y, int *__quo) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long int lrintf (float __x) noexcept (true); extern long int __lrintf (float __x) noexcept (true); 612825: __extension__ 612825: extern long long int llrintf (float __x) noexcept (true); extern long long int __llrintf (float __x) noexcept (true); 612825: 612825: 612825: 612825: extern long int lroundf (float __x) noexcept (true); extern long int __lroundf (float __x) noexcept (true); 612825: __extension__ 612825: extern long long int llroundf (float __x) noexcept (true); extern long long int __llroundf (float __x) noexcept (true); 612825: 612825: 612825: 612825: extern float fdimf (float __x, float __y) noexcept (true); extern float __fdimf (float __x, float __y) noexcept (true); 612825: 612825: 612825: 612825: extern float fmaxf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fminf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern float fmaf (float __x, float __y, float __z) noexcept (true); extern float __fmaf (float __x, float __y, float __z) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern float roundevenf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __roundevenf (float __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: extern int canonicalizef (float *__cx, const float *__x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern float fmaxmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fminmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern float fmaximumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fminimumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fmaximum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fminimum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fmaximum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fminimum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fmaximum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern float fminimum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern int totalorderf (const float *__x, const float *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern int totalordermagf (const float *__x, const float *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern float getpayloadf (const float *__x) noexcept (true); extern float __getpayloadf (const float *__x) noexcept (true); 612825: 612825: 612825: extern int setpayloadf (float *__x, float __payload) noexcept (true); 612825: 612825: 612825: extern int setpayloadsigf (float *__x, float __payload) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern float scalbf (float __x, float __n) noexcept (true); extern float __scalbf (float __x, float __n) noexcept (true); 612825: # 331 "/usr/include/math.h" 2 3 4 612825: # 398 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4 612825: # 20 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4 612825: extern int __fpclassifyl (long double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __signbitl (long double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern int __isinfl (long double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __finitel (long double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __isnanl (long double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern int __iseqsigl (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: extern int __issignalingl (long double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: # 399 "/usr/include/math.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 612825: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern long double acosl (long double __x) noexcept (true); extern long double __acosl (long double __x) noexcept (true); 612825: 612825: extern long double asinl (long double __x) noexcept (true); extern long double __asinl (long double __x) noexcept (true); 612825: 612825: extern long double atanl (long double __x) noexcept (true); extern long double __atanl (long double __x) noexcept (true); 612825: 612825: extern long double atan2l (long double __y, long double __x) noexcept (true); extern long double __atan2l (long double __y, long double __x) noexcept (true); 612825: 612825: 612825: extern long double cosl (long double __x) noexcept (true); extern long double __cosl (long double __x) noexcept (true); 612825: 612825: extern long double sinl (long double __x) noexcept (true); extern long double __sinl (long double __x) noexcept (true); 612825: 612825: extern long double tanl (long double __x) noexcept (true); extern long double __tanl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long double coshl (long double __x) noexcept (true); extern long double __coshl (long double __x) noexcept (true); 612825: 612825: extern long double sinhl (long double __x) noexcept (true); extern long double __sinhl (long double __x) noexcept (true); 612825: 612825: extern long double tanhl (long double __x) noexcept (true); extern long double __tanhl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: extern void sincosl (long double __x, long double *__sinx, long double *__cosx) noexcept (true); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern long double acoshl (long double __x) noexcept (true); extern long double __acoshl (long double __x) noexcept (true); 612825: 612825: extern long double asinhl (long double __x) noexcept (true); extern long double __asinhl (long double __x) noexcept (true); 612825: 612825: extern long double atanhl (long double __x) noexcept (true); extern long double __atanhl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern long double expl (long double __x) noexcept (true); extern long double __expl (long double __x) noexcept (true); 612825: 612825: 612825: extern long double frexpl (long double __x, int *__exponent) noexcept (true); extern long double __frexpl (long double __x, int *__exponent) noexcept (true); 612825: 612825: 612825: extern long double ldexpl (long double __x, int __exponent) noexcept (true); extern long double __ldexpl (long double __x, int __exponent) noexcept (true); 612825: 612825: 612825: extern long double logl (long double __x) noexcept (true); extern long double __logl (long double __x) noexcept (true); 612825: 612825: 612825: extern long double log10l (long double __x) noexcept (true); extern long double __log10l (long double __x) noexcept (true); 612825: 612825: 612825: extern long double modfl (long double __x, long double *__iptr) noexcept (true); extern long double __modfl (long double __x, long double *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: extern long double exp10l (long double __x) noexcept (true); extern long double __exp10l (long double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long double expm1l (long double __x) noexcept (true); extern long double __expm1l (long double __x) noexcept (true); 612825: 612825: 612825: extern long double log1pl (long double __x) noexcept (true); extern long double __log1pl (long double __x) noexcept (true); 612825: 612825: 612825: extern long double logbl (long double __x) noexcept (true); extern long double __logbl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long double exp2l (long double __x) noexcept (true); extern long double __exp2l (long double __x) noexcept (true); 612825: 612825: 612825: extern long double log2l (long double __x) noexcept (true); extern long double __log2l (long double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long double powl (long double __x, long double __y) noexcept (true); extern long double __powl (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: extern long double sqrtl (long double __x) noexcept (true); extern long double __sqrtl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: extern long double hypotl (long double __x, long double __y) noexcept (true); extern long double __hypotl (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long double cbrtl (long double __x) noexcept (true); extern long double __cbrtl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long double ceill (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __ceill (long double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fabsl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __fabsl (long double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double floorl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __floorl (long double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fmodl (long double __x, long double __y) noexcept (true); extern long double __fmodl (long double __x, long double __y) noexcept (true); 612825: # 177 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern int isinfl (long double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern int finitel (long double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: extern long double dreml (long double __x, long double __y) noexcept (true); extern long double __dreml (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: 612825: extern long double significandl (long double __x) noexcept (true); extern long double __significandl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long double copysignl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern long double nanl (const char *__tagb) noexcept (true); extern long double __nanl (const char *__tagb) noexcept (true); 612825: # 213 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern int isnanl (long double __value) noexcept (true) 612825: __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: 612825: extern long double j0l (long double) noexcept (true); extern long double __j0l (long double) noexcept (true); 612825: extern long double j1l (long double) noexcept (true); extern long double __j1l (long double) noexcept (true); 612825: extern long double jnl (int, long double) noexcept (true); extern long double __jnl (int, long double) noexcept (true); 612825: extern long double y0l (long double) noexcept (true); extern long double __y0l (long double) noexcept (true); 612825: extern long double y1l (long double) noexcept (true); extern long double __y1l (long double) noexcept (true); 612825: extern long double ynl (int, long double) noexcept (true); extern long double __ynl (int, long double) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern long double erfl (long double) noexcept (true); extern long double __erfl (long double) noexcept (true); 612825: extern long double erfcl (long double) noexcept (true); extern long double __erfcl (long double) noexcept (true); 612825: extern long double lgammal (long double) noexcept (true); extern long double __lgammal (long double) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long double tgammal (long double) noexcept (true); extern long double __tgammal (long double) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern long double gammal (long double) noexcept (true); extern long double __gammal (long double) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long double lgammal_r (long double, int *__signgamp) noexcept (true); extern long double __lgammal_r (long double, int *__signgamp) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long double rintl (long double __x) noexcept (true); extern long double __rintl (long double __x) noexcept (true); 612825: 612825: 612825: extern long double nextafterl (long double __x, long double __y) noexcept (true); extern long double __nextafterl (long double __x, long double __y) noexcept (true); 612825: 612825: extern long double nexttowardl (long double __x, long double __y) noexcept (true); extern long double __nexttowardl (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long double nextdownl (long double __x) noexcept (true); extern long double __nextdownl (long double __x) noexcept (true); 612825: 612825: extern long double nextupl (long double __x) noexcept (true); extern long double __nextupl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: extern long double remainderl (long double __x, long double __y) noexcept (true); extern long double __remainderl (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: 612825: extern long double scalbnl (long double __x, int __n) noexcept (true); extern long double __scalbnl (long double __x, int __n) noexcept (true); 612825: 612825: 612825: 612825: extern int ilogbl (long double __x) noexcept (true); extern int __ilogbl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long int llogbl (long double __x) noexcept (true); extern long int __llogbl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long double scalblnl (long double __x, long int __n) noexcept (true); extern long double __scalblnl (long double __x, long int __n) noexcept (true); 612825: 612825: 612825: 612825: extern long double nearbyintl (long double __x) noexcept (true); extern long double __nearbyintl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: extern long double roundl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __roundl (long double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern long double truncl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __truncl (long double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern long double remquol (long double __x, long double __y, int *__quo) noexcept (true); extern long double __remquol (long double __x, long double __y, int *__quo) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long int lrintl (long double __x) noexcept (true); extern long int __lrintl (long double __x) noexcept (true); 612825: __extension__ 612825: extern long long int llrintl (long double __x) noexcept (true); extern long long int __llrintl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: extern long int lroundl (long double __x) noexcept (true); extern long int __lroundl (long double __x) noexcept (true); 612825: __extension__ 612825: extern long long int llroundl (long double __x) noexcept (true); extern long long int __llroundl (long double __x) noexcept (true); 612825: 612825: 612825: 612825: extern long double fdiml (long double __x, long double __y) noexcept (true); extern long double __fdiml (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: 612825: extern long double fmaxl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fminl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern long double fmal (long double __x, long double __y, long double __z) noexcept (true); extern long double __fmal (long double __x, long double __y, long double __z) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long double roundevenl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __roundevenl (long double __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: extern int canonicalizel (long double *__cx, const long double *__x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long double fmaxmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fminmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern long double fmaximuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fminimuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fmaximum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fminimum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fmaximum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fminimum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fmaximum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern long double fminimum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern int totalorderl (const long double *__x, const long double *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern int totalordermagl (const long double *__x, const long double *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern long double getpayloadl (const long double *__x) noexcept (true); extern long double __getpayloadl (const long double *__x) noexcept (true); 612825: 612825: 612825: extern int setpayloadl (long double *__x, long double __payload) noexcept (true); 612825: 612825: 612825: extern int setpayloadsigl (long double *__x, long double __payload) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long double scalbl (long double __x, long double __n) noexcept (true); extern long double __scalbl (long double __x, long double __n) noexcept (true); 612825: # 400 "/usr/include/math.h" 2 3 4 612825: # 450 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 612825: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float32 acosf32 (_Float32 __x) noexcept (true); extern _Float32 __acosf32 (_Float32 __x) noexcept (true); 612825: 612825: extern _Float32 asinf32 (_Float32 __x) noexcept (true); extern _Float32 __asinf32 (_Float32 __x) noexcept (true); 612825: 612825: extern _Float32 atanf32 (_Float32 __x) noexcept (true); extern _Float32 __atanf32 (_Float32 __x) noexcept (true); 612825: 612825: extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); 612825: 612825: 612825: extern _Float32 cosf32 (_Float32 __x) noexcept (true); extern _Float32 __cosf32 (_Float32 __x) noexcept (true); 612825: 612825: extern _Float32 sinf32 (_Float32 __x) noexcept (true); extern _Float32 __sinf32 (_Float32 __x) noexcept (true); 612825: 612825: extern _Float32 tanf32 (_Float32 __x) noexcept (true); extern _Float32 __tanf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32 coshf32 (_Float32 __x) noexcept (true); extern _Float32 __coshf32 (_Float32 __x) noexcept (true); 612825: 612825: extern _Float32 sinhf32 (_Float32 __x) noexcept (true); extern _Float32 __sinhf32 (_Float32 __x) noexcept (true); 612825: 612825: extern _Float32 tanhf32 (_Float32 __x) noexcept (true); extern _Float32 __tanhf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern _Float32 acoshf32 (_Float32 __x) noexcept (true); extern _Float32 __acoshf32 (_Float32 __x) noexcept (true); 612825: 612825: extern _Float32 asinhf32 (_Float32 __x) noexcept (true); extern _Float32 __asinhf32 (_Float32 __x) noexcept (true); 612825: 612825: extern _Float32 atanhf32 (_Float32 __x) noexcept (true); extern _Float32 __atanhf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32 expf32 (_Float32 __x) noexcept (true); extern _Float32 __expf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: extern _Float32 frexpf32 (_Float32 __x, int *__exponent) noexcept (true); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) noexcept (true); 612825: 612825: 612825: extern _Float32 ldexpf32 (_Float32 __x, int __exponent) noexcept (true); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) noexcept (true); 612825: 612825: 612825: extern _Float32 logf32 (_Float32 __x) noexcept (true); extern _Float32 __logf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: extern _Float32 log10f32 (_Float32 __x) noexcept (true); extern _Float32 __log10f32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: extern _Float32 exp10f32 (_Float32 __x) noexcept (true); extern _Float32 __exp10f32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32 expm1f32 (_Float32 __x) noexcept (true); extern _Float32 __expm1f32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: extern _Float32 log1pf32 (_Float32 __x) noexcept (true); extern _Float32 __log1pf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: extern _Float32 logbf32 (_Float32 __x) noexcept (true); extern _Float32 __logbf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32 exp2f32 (_Float32 __x) noexcept (true); extern _Float32 __exp2f32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: extern _Float32 log2f32 (_Float32 __x) noexcept (true); extern _Float32 __log2f32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32 powf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) noexcept (true); 612825: 612825: 612825: extern _Float32 sqrtf32 (_Float32 __x) noexcept (true); extern _Float32 __sqrtf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32 cbrtf32 (_Float32 __x) noexcept (true); extern _Float32 __cbrtf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32 ceilf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fabsf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 floorf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); 612825: # 198 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float32 nanf32 (const char *__tagb) noexcept (true); extern _Float32 __nanf32 (const char *__tagb) noexcept (true); 612825: # 220 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float32 j0f32 (_Float32) noexcept (true); extern _Float32 __j0f32 (_Float32) noexcept (true); 612825: extern _Float32 j1f32 (_Float32) noexcept (true); extern _Float32 __j1f32 (_Float32) noexcept (true); 612825: extern _Float32 jnf32 (int, _Float32) noexcept (true); extern _Float32 __jnf32 (int, _Float32) noexcept (true); 612825: extern _Float32 y0f32 (_Float32) noexcept (true); extern _Float32 __y0f32 (_Float32) noexcept (true); 612825: extern _Float32 y1f32 (_Float32) noexcept (true); extern _Float32 __y1f32 (_Float32) noexcept (true); 612825: extern _Float32 ynf32 (int, _Float32) noexcept (true); extern _Float32 __ynf32 (int, _Float32) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32 erff32 (_Float32) noexcept (true); extern _Float32 __erff32 (_Float32) noexcept (true); 612825: extern _Float32 erfcf32 (_Float32) noexcept (true); extern _Float32 __erfcf32 (_Float32) noexcept (true); 612825: extern _Float32 lgammaf32 (_Float32) noexcept (true); extern _Float32 __lgammaf32 (_Float32) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32 tgammaf32 (_Float32) noexcept (true); extern _Float32 __tgammaf32 (_Float32) noexcept (true); 612825: # 252 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float32 lgammaf32_r (_Float32, int *__signgamp) noexcept (true); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32 rintf32 (_Float32 __x) noexcept (true); extern _Float32 __rintf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32 nextdownf32 (_Float32 __x) noexcept (true); extern _Float32 __nextdownf32 (_Float32 __x) noexcept (true); 612825: 612825: extern _Float32 nextupf32 (_Float32 __x) noexcept (true); extern _Float32 __nextupf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32 scalbnf32 (_Float32 __x, int __n) noexcept (true); extern _Float32 __scalbnf32 (_Float32 __x, int __n) noexcept (true); 612825: 612825: 612825: 612825: extern int ilogbf32 (_Float32 __x) noexcept (true); extern int __ilogbf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long int llogbf32 (_Float32 __x) noexcept (true); extern long int __llogbf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32 scalblnf32 (_Float32 __x, long int __n) noexcept (true); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32 nearbyintf32 (_Float32 __x) noexcept (true); extern _Float32 __nearbyintf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32 roundf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern _Float32 truncf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long int lrintf32 (_Float32 __x) noexcept (true); extern long int __lrintf32 (_Float32 __x) noexcept (true); 612825: __extension__ 612825: extern long long int llrintf32 (_Float32 __x) noexcept (true); extern long long int __llrintf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: extern long int lroundf32 (_Float32 __x) noexcept (true); extern long int __lroundf32 (_Float32 __x) noexcept (true); 612825: __extension__ 612825: extern long long int llroundf32 (_Float32 __x) noexcept (true); extern long long int __llroundf32 (_Float32 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fminf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32 roundevenf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float32 fmaximumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fminimumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fmaximum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fminimum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fmaximum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fminimum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32 fminimum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern int totalorderf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern int totalordermagf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern _Float32 getpayloadf32 (const _Float32 *__x) noexcept (true); extern _Float32 __getpayloadf32 (const _Float32 *__x) noexcept (true); 612825: 612825: 612825: extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) noexcept (true); 612825: 612825: 612825: extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) noexcept (true); 612825: # 451 "/usr/include/math.h" 2 3 4 612825: # 467 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 612825: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float64 acosf64 (_Float64 __x) noexcept (true); extern _Float64 __acosf64 (_Float64 __x) noexcept (true); 612825: 612825: extern _Float64 asinf64 (_Float64 __x) noexcept (true); extern _Float64 __asinf64 (_Float64 __x) noexcept (true); 612825: 612825: extern _Float64 atanf64 (_Float64 __x) noexcept (true); extern _Float64 __atanf64 (_Float64 __x) noexcept (true); 612825: 612825: extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); 612825: 612825: 612825: extern _Float64 cosf64 (_Float64 __x) noexcept (true); extern _Float64 __cosf64 (_Float64 __x) noexcept (true); 612825: 612825: extern _Float64 sinf64 (_Float64 __x) noexcept (true); extern _Float64 __sinf64 (_Float64 __x) noexcept (true); 612825: 612825: extern _Float64 tanf64 (_Float64 __x) noexcept (true); extern _Float64 __tanf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64 coshf64 (_Float64 __x) noexcept (true); extern _Float64 __coshf64 (_Float64 __x) noexcept (true); 612825: 612825: extern _Float64 sinhf64 (_Float64 __x) noexcept (true); extern _Float64 __sinhf64 (_Float64 __x) noexcept (true); 612825: 612825: extern _Float64 tanhf64 (_Float64 __x) noexcept (true); extern _Float64 __tanhf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern _Float64 acoshf64 (_Float64 __x) noexcept (true); extern _Float64 __acoshf64 (_Float64 __x) noexcept (true); 612825: 612825: extern _Float64 asinhf64 (_Float64 __x) noexcept (true); extern _Float64 __asinhf64 (_Float64 __x) noexcept (true); 612825: 612825: extern _Float64 atanhf64 (_Float64 __x) noexcept (true); extern _Float64 __atanhf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64 expf64 (_Float64 __x) noexcept (true); extern _Float64 __expf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: extern _Float64 frexpf64 (_Float64 __x, int *__exponent) noexcept (true); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) noexcept (true); 612825: 612825: 612825: extern _Float64 ldexpf64 (_Float64 __x, int __exponent) noexcept (true); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) noexcept (true); 612825: 612825: 612825: extern _Float64 logf64 (_Float64 __x) noexcept (true); extern _Float64 __logf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: extern _Float64 log10f64 (_Float64 __x) noexcept (true); extern _Float64 __log10f64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: extern _Float64 exp10f64 (_Float64 __x) noexcept (true); extern _Float64 __exp10f64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64 expm1f64 (_Float64 __x) noexcept (true); extern _Float64 __expm1f64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: extern _Float64 log1pf64 (_Float64 __x) noexcept (true); extern _Float64 __log1pf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: extern _Float64 logbf64 (_Float64 __x) noexcept (true); extern _Float64 __logbf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64 exp2f64 (_Float64 __x) noexcept (true); extern _Float64 __exp2f64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: extern _Float64 log2f64 (_Float64 __x) noexcept (true); extern _Float64 __log2f64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64 powf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: extern _Float64 sqrtf64 (_Float64 __x) noexcept (true); extern _Float64 __sqrtf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64 cbrtf64 (_Float64 __x) noexcept (true); extern _Float64 __cbrtf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64 ceilf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fabsf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 floorf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: # 198 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float64 nanf64 (const char *__tagb) noexcept (true); extern _Float64 __nanf64 (const char *__tagb) noexcept (true); 612825: # 220 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float64 j0f64 (_Float64) noexcept (true); extern _Float64 __j0f64 (_Float64) noexcept (true); 612825: extern _Float64 j1f64 (_Float64) noexcept (true); extern _Float64 __j1f64 (_Float64) noexcept (true); 612825: extern _Float64 jnf64 (int, _Float64) noexcept (true); extern _Float64 __jnf64 (int, _Float64) noexcept (true); 612825: extern _Float64 y0f64 (_Float64) noexcept (true); extern _Float64 __y0f64 (_Float64) noexcept (true); 612825: extern _Float64 y1f64 (_Float64) noexcept (true); extern _Float64 __y1f64 (_Float64) noexcept (true); 612825: extern _Float64 ynf64 (int, _Float64) noexcept (true); extern _Float64 __ynf64 (int, _Float64) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64 erff64 (_Float64) noexcept (true); extern _Float64 __erff64 (_Float64) noexcept (true); 612825: extern _Float64 erfcf64 (_Float64) noexcept (true); extern _Float64 __erfcf64 (_Float64) noexcept (true); 612825: extern _Float64 lgammaf64 (_Float64) noexcept (true); extern _Float64 __lgammaf64 (_Float64) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64 tgammaf64 (_Float64) noexcept (true); extern _Float64 __tgammaf64 (_Float64) noexcept (true); 612825: # 252 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float64 lgammaf64_r (_Float64, int *__signgamp) noexcept (true); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64 rintf64 (_Float64 __x) noexcept (true); extern _Float64 __rintf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64 nextdownf64 (_Float64 __x) noexcept (true); extern _Float64 __nextdownf64 (_Float64 __x) noexcept (true); 612825: 612825: extern _Float64 nextupf64 (_Float64 __x) noexcept (true); extern _Float64 __nextupf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64 scalbnf64 (_Float64 __x, int __n) noexcept (true); extern _Float64 __scalbnf64 (_Float64 __x, int __n) noexcept (true); 612825: 612825: 612825: 612825: extern int ilogbf64 (_Float64 __x) noexcept (true); extern int __ilogbf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long int llogbf64 (_Float64 __x) noexcept (true); extern long int __llogbf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64 scalblnf64 (_Float64 __x, long int __n) noexcept (true); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64 nearbyintf64 (_Float64 __x) noexcept (true); extern _Float64 __nearbyintf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64 roundf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern _Float64 truncf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long int lrintf64 (_Float64 __x) noexcept (true); extern long int __lrintf64 (_Float64 __x) noexcept (true); 612825: __extension__ 612825: extern long long int llrintf64 (_Float64 __x) noexcept (true); extern long long int __llrintf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: extern long int lroundf64 (_Float64 __x) noexcept (true); extern long int __lroundf64 (_Float64 __x) noexcept (true); 612825: __extension__ 612825: extern long long int llroundf64 (_Float64 __x) noexcept (true); extern long long int __llroundf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fminf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64 roundevenf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float64 fmaximumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fminimumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fmaximum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fminimum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fmaximum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fminimum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64 fminimum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern int totalorderf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern int totalordermagf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern _Float64 getpayloadf64 (const _Float64 *__x) noexcept (true); extern _Float64 __getpayloadf64 (const _Float64 *__x) noexcept (true); 612825: 612825: 612825: extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) noexcept (true); 612825: 612825: 612825: extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) noexcept (true); 612825: # 468 "/usr/include/math.h" 2 3 4 612825: # 484 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 612825: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float128 acosf128 (_Float128 __x) noexcept (true); extern _Float128 __acosf128 (_Float128 __x) noexcept (true); 612825: 612825: extern _Float128 asinf128 (_Float128 __x) noexcept (true); extern _Float128 __asinf128 (_Float128 __x) noexcept (true); 612825: 612825: extern _Float128 atanf128 (_Float128 __x) noexcept (true); extern _Float128 __atanf128 (_Float128 __x) noexcept (true); 612825: 612825: extern _Float128 atan2f128 (_Float128 __y, _Float128 __x) noexcept (true); extern _Float128 __atan2f128 (_Float128 __y, _Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float128 cosf128 (_Float128 __x) noexcept (true); extern _Float128 __cosf128 (_Float128 __x) noexcept (true); 612825: 612825: extern _Float128 sinf128 (_Float128 __x) noexcept (true); extern _Float128 __sinf128 (_Float128 __x) noexcept (true); 612825: 612825: extern _Float128 tanf128 (_Float128 __x) noexcept (true); extern _Float128 __tanf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float128 coshf128 (_Float128 __x) noexcept (true); extern _Float128 __coshf128 (_Float128 __x) noexcept (true); 612825: 612825: extern _Float128 sinhf128 (_Float128 __x) noexcept (true); extern _Float128 __sinhf128 (_Float128 __x) noexcept (true); 612825: 612825: extern _Float128 tanhf128 (_Float128 __x) noexcept (true); extern _Float128 __tanhf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: extern void sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) noexcept (true); extern void __sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern _Float128 acoshf128 (_Float128 __x) noexcept (true); extern _Float128 __acoshf128 (_Float128 __x) noexcept (true); 612825: 612825: extern _Float128 asinhf128 (_Float128 __x) noexcept (true); extern _Float128 __asinhf128 (_Float128 __x) noexcept (true); 612825: 612825: extern _Float128 atanhf128 (_Float128 __x) noexcept (true); extern _Float128 __atanhf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern _Float128 expf128 (_Float128 __x) noexcept (true); extern _Float128 __expf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float128 frexpf128 (_Float128 __x, int *__exponent) noexcept (true); extern _Float128 __frexpf128 (_Float128 __x, int *__exponent) noexcept (true); 612825: 612825: 612825: extern _Float128 ldexpf128 (_Float128 __x, int __exponent) noexcept (true); extern _Float128 __ldexpf128 (_Float128 __x, int __exponent) noexcept (true); 612825: 612825: 612825: extern _Float128 logf128 (_Float128 __x) noexcept (true); extern _Float128 __logf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float128 log10f128 (_Float128 __x) noexcept (true); extern _Float128 __log10f128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float128 modff128 (_Float128 __x, _Float128 *__iptr) noexcept (true); extern _Float128 __modff128 (_Float128 __x, _Float128 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: extern _Float128 exp10f128 (_Float128 __x) noexcept (true); extern _Float128 __exp10f128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float128 expm1f128 (_Float128 __x) noexcept (true); extern _Float128 __expm1f128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float128 log1pf128 (_Float128 __x) noexcept (true); extern _Float128 __log1pf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float128 logbf128 (_Float128 __x) noexcept (true); extern _Float128 __logbf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float128 exp2f128 (_Float128 __x) noexcept (true); extern _Float128 __exp2f128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float128 log2f128 (_Float128 __x) noexcept (true); extern _Float128 __log2f128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float128 powf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __powf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float128 sqrtf128 (_Float128 __x) noexcept (true); extern _Float128 __sqrtf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float128 hypotf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __hypotf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float128 cbrtf128 (_Float128 __x) noexcept (true); extern _Float128 __cbrtf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float128 ceilf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __ceilf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fabsf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fabsf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 floorf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __floorf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fmodf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __fmodf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: # 198 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float128 copysignf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __copysignf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float128 nanf128 (const char *__tagb) noexcept (true); extern _Float128 __nanf128 (const char *__tagb) noexcept (true); 612825: # 220 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float128 j0f128 (_Float128) noexcept (true); extern _Float128 __j0f128 (_Float128) noexcept (true); 612825: extern _Float128 j1f128 (_Float128) noexcept (true); extern _Float128 __j1f128 (_Float128) noexcept (true); 612825: extern _Float128 jnf128 (int, _Float128) noexcept (true); extern _Float128 __jnf128 (int, _Float128) noexcept (true); 612825: extern _Float128 y0f128 (_Float128) noexcept (true); extern _Float128 __y0f128 (_Float128) noexcept (true); 612825: extern _Float128 y1f128 (_Float128) noexcept (true); extern _Float128 __y1f128 (_Float128) noexcept (true); 612825: extern _Float128 ynf128 (int, _Float128) noexcept (true); extern _Float128 __ynf128 (int, _Float128) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern _Float128 erff128 (_Float128) noexcept (true); extern _Float128 __erff128 (_Float128) noexcept (true); 612825: extern _Float128 erfcf128 (_Float128) noexcept (true); extern _Float128 __erfcf128 (_Float128) noexcept (true); 612825: extern _Float128 lgammaf128 (_Float128) noexcept (true); extern _Float128 __lgammaf128 (_Float128) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float128 tgammaf128 (_Float128) noexcept (true); extern _Float128 __tgammaf128 (_Float128) noexcept (true); 612825: # 252 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float128 lgammaf128_r (_Float128, int *__signgamp) noexcept (true); extern _Float128 __lgammaf128_r (_Float128, int *__signgamp) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float128 rintf128 (_Float128 __x) noexcept (true); extern _Float128 __rintf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float128 nextafterf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __nextafterf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float128 nextdownf128 (_Float128 __x) noexcept (true); extern _Float128 __nextdownf128 (_Float128 __x) noexcept (true); 612825: 612825: extern _Float128 nextupf128 (_Float128 __x) noexcept (true); extern _Float128 __nextupf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float128 remainderf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __remainderf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: 612825: extern _Float128 scalbnf128 (_Float128 __x, int __n) noexcept (true); extern _Float128 __scalbnf128 (_Float128 __x, int __n) noexcept (true); 612825: 612825: 612825: 612825: extern int ilogbf128 (_Float128 __x) noexcept (true); extern int __ilogbf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long int llogbf128 (_Float128 __x) noexcept (true); extern long int __llogbf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float128 scalblnf128 (_Float128 __x, long int __n) noexcept (true); extern _Float128 __scalblnf128 (_Float128 __x, long int __n) noexcept (true); 612825: 612825: 612825: 612825: extern _Float128 nearbyintf128 (_Float128 __x) noexcept (true); extern _Float128 __nearbyintf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float128 roundf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __roundf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern _Float128 truncf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __truncf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float128 remquof128 (_Float128 __x, _Float128 __y, int *__quo) noexcept (true); extern _Float128 __remquof128 (_Float128 __x, _Float128 __y, int *__quo) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long int lrintf128 (_Float128 __x) noexcept (true); extern long int __lrintf128 (_Float128 __x) noexcept (true); 612825: __extension__ 612825: extern long long int llrintf128 (_Float128 __x) noexcept (true); extern long long int __llrintf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: extern long int lroundf128 (_Float128 __x) noexcept (true); extern long int __lroundf128 (_Float128 __x) noexcept (true); 612825: __extension__ 612825: extern long long int llroundf128 (_Float128 __x) noexcept (true); extern long long int __llroundf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float128 fdimf128 (_Float128 __x, _Float128 __y) noexcept (true); extern _Float128 __fdimf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: 612825: extern _Float128 fmaxf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaxf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fminf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern _Float128 fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); extern _Float128 __fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float128 roundevenf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); extern _Float128 __roundevenf128 (_Float128 __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern __intmax_t fromfpf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __intmax_t fromfpxf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: extern int canonicalizef128 (_Float128 *__cx, const _Float128 *__x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float128 fmaxmagf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaxmagf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fminmagf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminmagf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float128 fmaximumf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaximumf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fminimumf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminimumf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fmaximum_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaximum_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fminimum_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminimum_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fmaximum_magf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaximum_magf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fminimum_magf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminimum_magf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fmaximum_mag_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fmaximum_mag_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float128 fminimum_mag_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); extern _Float128 __fminimum_mag_numf128 (_Float128 __x, _Float128 __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern int totalorderf128 (const _Float128 *__x, const _Float128 *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern int totalordermagf128 (const _Float128 *__x, const _Float128 *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern _Float128 getpayloadf128 (const _Float128 *__x) noexcept (true); extern _Float128 __getpayloadf128 (const _Float128 *__x) noexcept (true); 612825: 612825: 612825: extern int setpayloadf128 (_Float128 *__x, _Float128 __payload) noexcept (true); 612825: 612825: 612825: extern int setpayloadsigf128 (_Float128 *__x, _Float128 __payload) noexcept (true); 612825: # 485 "/usr/include/math.h" 2 3 4 612825: # 501 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 612825: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float32x acosf32x (_Float32x __x) noexcept (true); extern _Float32x __acosf32x (_Float32x __x) noexcept (true); 612825: 612825: extern _Float32x asinf32x (_Float32x __x) noexcept (true); extern _Float32x __asinf32x (_Float32x __x) noexcept (true); 612825: 612825: extern _Float32x atanf32x (_Float32x __x) noexcept (true); extern _Float32x __atanf32x (_Float32x __x) noexcept (true); 612825: 612825: extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); 612825: 612825: 612825: extern _Float32x cosf32x (_Float32x __x) noexcept (true); extern _Float32x __cosf32x (_Float32x __x) noexcept (true); 612825: 612825: extern _Float32x sinf32x (_Float32x __x) noexcept (true); extern _Float32x __sinf32x (_Float32x __x) noexcept (true); 612825: 612825: extern _Float32x tanf32x (_Float32x __x) noexcept (true); extern _Float32x __tanf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32x coshf32x (_Float32x __x) noexcept (true); extern _Float32x __coshf32x (_Float32x __x) noexcept (true); 612825: 612825: extern _Float32x sinhf32x (_Float32x __x) noexcept (true); extern _Float32x __sinhf32x (_Float32x __x) noexcept (true); 612825: 612825: extern _Float32x tanhf32x (_Float32x __x) noexcept (true); extern _Float32x __tanhf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern _Float32x acoshf32x (_Float32x __x) noexcept (true); extern _Float32x __acoshf32x (_Float32x __x) noexcept (true); 612825: 612825: extern _Float32x asinhf32x (_Float32x __x) noexcept (true); extern _Float32x __asinhf32x (_Float32x __x) noexcept (true); 612825: 612825: extern _Float32x atanhf32x (_Float32x __x) noexcept (true); extern _Float32x __atanhf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32x expf32x (_Float32x __x) noexcept (true); extern _Float32x __expf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: extern _Float32x frexpf32x (_Float32x __x, int *__exponent) noexcept (true); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) noexcept (true); 612825: 612825: 612825: extern _Float32x ldexpf32x (_Float32x __x, int __exponent) noexcept (true); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) noexcept (true); 612825: 612825: 612825: extern _Float32x logf32x (_Float32x __x) noexcept (true); extern _Float32x __logf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: extern _Float32x log10f32x (_Float32x __x) noexcept (true); extern _Float32x __log10f32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: extern _Float32x exp10f32x (_Float32x __x) noexcept (true); extern _Float32x __exp10f32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32x expm1f32x (_Float32x __x) noexcept (true); extern _Float32x __expm1f32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: extern _Float32x log1pf32x (_Float32x __x) noexcept (true); extern _Float32x __log1pf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: extern _Float32x logbf32x (_Float32x __x) noexcept (true); extern _Float32x __logbf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32x exp2f32x (_Float32x __x) noexcept (true); extern _Float32x __exp2f32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: extern _Float32x log2f32x (_Float32x __x) noexcept (true); extern _Float32x __log2f32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32x powf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) noexcept (true); 612825: 612825: 612825: extern _Float32x sqrtf32x (_Float32x __x) noexcept (true); extern _Float32x __sqrtf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32x cbrtf32x (_Float32x __x) noexcept (true); extern _Float32x __cbrtf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32x ceilf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fabsf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x floorf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); 612825: # 198 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float32x nanf32x (const char *__tagb) noexcept (true); extern _Float32x __nanf32x (const char *__tagb) noexcept (true); 612825: # 220 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float32x j0f32x (_Float32x) noexcept (true); extern _Float32x __j0f32x (_Float32x) noexcept (true); 612825: extern _Float32x j1f32x (_Float32x) noexcept (true); extern _Float32x __j1f32x (_Float32x) noexcept (true); 612825: extern _Float32x jnf32x (int, _Float32x) noexcept (true); extern _Float32x __jnf32x (int, _Float32x) noexcept (true); 612825: extern _Float32x y0f32x (_Float32x) noexcept (true); extern _Float32x __y0f32x (_Float32x) noexcept (true); 612825: extern _Float32x y1f32x (_Float32x) noexcept (true); extern _Float32x __y1f32x (_Float32x) noexcept (true); 612825: extern _Float32x ynf32x (int, _Float32x) noexcept (true); extern _Float32x __ynf32x (int, _Float32x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32x erff32x (_Float32x) noexcept (true); extern _Float32x __erff32x (_Float32x) noexcept (true); 612825: extern _Float32x erfcf32x (_Float32x) noexcept (true); extern _Float32x __erfcf32x (_Float32x) noexcept (true); 612825: extern _Float32x lgammaf32x (_Float32x) noexcept (true); extern _Float32x __lgammaf32x (_Float32x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32x tgammaf32x (_Float32x) noexcept (true); extern _Float32x __tgammaf32x (_Float32x) noexcept (true); 612825: # 252 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32x rintf32x (_Float32x __x) noexcept (true); extern _Float32x __rintf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32x nextdownf32x (_Float32x __x) noexcept (true); extern _Float32x __nextdownf32x (_Float32x __x) noexcept (true); 612825: 612825: extern _Float32x nextupf32x (_Float32x __x) noexcept (true); extern _Float32x __nextupf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32x scalbnf32x (_Float32x __x, int __n) noexcept (true); extern _Float32x __scalbnf32x (_Float32x __x, int __n) noexcept (true); 612825: 612825: 612825: 612825: extern int ilogbf32x (_Float32x __x) noexcept (true); extern int __ilogbf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long int llogbf32x (_Float32x __x) noexcept (true); extern long int __llogbf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32x scalblnf32x (_Float32x __x, long int __n) noexcept (true); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32x nearbyintf32x (_Float32x __x) noexcept (true); extern _Float32x __nearbyintf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32x roundf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern _Float32x truncf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long int lrintf32x (_Float32x __x) noexcept (true); extern long int __lrintf32x (_Float32x __x) noexcept (true); 612825: __extension__ 612825: extern long long int llrintf32x (_Float32x __x) noexcept (true); extern long long int __llrintf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: extern long int lroundf32x (_Float32x __x) noexcept (true); extern long int __lroundf32x (_Float32x __x) noexcept (true); 612825: __extension__ 612825: extern long long int llroundf32x (_Float32x __x) noexcept (true); extern long long int __llroundf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fminf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float32x roundevenf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float32x fmaximumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fminimumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fmaximum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fminimum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fmaximum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fminimum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float32x fminimum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern int totalorderf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern int totalordermagf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern _Float32x getpayloadf32x (const _Float32x *__x) noexcept (true); extern _Float32x __getpayloadf32x (const _Float32x *__x) noexcept (true); 612825: 612825: 612825: extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) noexcept (true); 612825: 612825: 612825: extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) noexcept (true); 612825: # 502 "/usr/include/math.h" 2 3 4 612825: # 518 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4 612825: # 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float64x acosf64x (_Float64x __x) noexcept (true); extern _Float64x __acosf64x (_Float64x __x) noexcept (true); 612825: 612825: extern _Float64x asinf64x (_Float64x __x) noexcept (true); extern _Float64x __asinf64x (_Float64x __x) noexcept (true); 612825: 612825: extern _Float64x atanf64x (_Float64x __x) noexcept (true); extern _Float64x __atanf64x (_Float64x __x) noexcept (true); 612825: 612825: extern _Float64x atan2f64x (_Float64x __y, _Float64x __x) noexcept (true); extern _Float64x __atan2f64x (_Float64x __y, _Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float64x cosf64x (_Float64x __x) noexcept (true); extern _Float64x __cosf64x (_Float64x __x) noexcept (true); 612825: 612825: extern _Float64x sinf64x (_Float64x __x) noexcept (true); extern _Float64x __sinf64x (_Float64x __x) noexcept (true); 612825: 612825: extern _Float64x tanf64x (_Float64x __x) noexcept (true); extern _Float64x __tanf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64x coshf64x (_Float64x __x) noexcept (true); extern _Float64x __coshf64x (_Float64x __x) noexcept (true); 612825: 612825: extern _Float64x sinhf64x (_Float64x __x) noexcept (true); extern _Float64x __sinhf64x (_Float64x __x) noexcept (true); 612825: 612825: extern _Float64x tanhf64x (_Float64x __x) noexcept (true); extern _Float64x __tanhf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: extern void sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) noexcept (true); extern void __sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern _Float64x acoshf64x (_Float64x __x) noexcept (true); extern _Float64x __acoshf64x (_Float64x __x) noexcept (true); 612825: 612825: extern _Float64x asinhf64x (_Float64x __x) noexcept (true); extern _Float64x __asinhf64x (_Float64x __x) noexcept (true); 612825: 612825: extern _Float64x atanhf64x (_Float64x __x) noexcept (true); extern _Float64x __atanhf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64x expf64x (_Float64x __x) noexcept (true); extern _Float64x __expf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float64x frexpf64x (_Float64x __x, int *__exponent) noexcept (true); extern _Float64x __frexpf64x (_Float64x __x, int *__exponent) noexcept (true); 612825: 612825: 612825: extern _Float64x ldexpf64x (_Float64x __x, int __exponent) noexcept (true); extern _Float64x __ldexpf64x (_Float64x __x, int __exponent) noexcept (true); 612825: 612825: 612825: extern _Float64x logf64x (_Float64x __x) noexcept (true); extern _Float64x __logf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float64x log10f64x (_Float64x __x) noexcept (true); extern _Float64x __log10f64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float64x modff64x (_Float64x __x, _Float64x *__iptr) noexcept (true); extern _Float64x __modff64x (_Float64x __x, _Float64x *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: extern _Float64x exp10f64x (_Float64x __x) noexcept (true); extern _Float64x __exp10f64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64x expm1f64x (_Float64x __x) noexcept (true); extern _Float64x __expm1f64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float64x log1pf64x (_Float64x __x) noexcept (true); extern _Float64x __log1pf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float64x logbf64x (_Float64x __x) noexcept (true); extern _Float64x __logbf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64x exp2f64x (_Float64x __x) noexcept (true); extern _Float64x __exp2f64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float64x log2f64x (_Float64x __x) noexcept (true); extern _Float64x __log2f64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64x powf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __powf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: extern _Float64x sqrtf64x (_Float64x __x) noexcept (true); extern _Float64x __sqrtf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64x hypotf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __hypotf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64x cbrtf64x (_Float64x __x) noexcept (true); extern _Float64x __cbrtf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64x ceilf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __ceilf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fabsf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fabsf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x floorf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __floorf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fmodf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __fmodf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: # 198 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float64x copysignf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __copysignf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float64x nanf64x (const char *__tagb) noexcept (true); extern _Float64x __nanf64x (const char *__tagb) noexcept (true); 612825: # 220 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float64x j0f64x (_Float64x) noexcept (true); extern _Float64x __j0f64x (_Float64x) noexcept (true); 612825: extern _Float64x j1f64x (_Float64x) noexcept (true); extern _Float64x __j1f64x (_Float64x) noexcept (true); 612825: extern _Float64x jnf64x (int, _Float64x) noexcept (true); extern _Float64x __jnf64x (int, _Float64x) noexcept (true); 612825: extern _Float64x y0f64x (_Float64x) noexcept (true); extern _Float64x __y0f64x (_Float64x) noexcept (true); 612825: extern _Float64x y1f64x (_Float64x) noexcept (true); extern _Float64x __y1f64x (_Float64x) noexcept (true); 612825: extern _Float64x ynf64x (int, _Float64x) noexcept (true); extern _Float64x __ynf64x (int, _Float64x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64x erff64x (_Float64x) noexcept (true); extern _Float64x __erff64x (_Float64x) noexcept (true); 612825: extern _Float64x erfcf64x (_Float64x) noexcept (true); extern _Float64x __erfcf64x (_Float64x) noexcept (true); 612825: extern _Float64x lgammaf64x (_Float64x) noexcept (true); extern _Float64x __lgammaf64x (_Float64x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64x tgammaf64x (_Float64x) noexcept (true); extern _Float64x __tgammaf64x (_Float64x) noexcept (true); 612825: # 252 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4 612825: extern _Float64x lgammaf64x_r (_Float64x, int *__signgamp) noexcept (true); extern _Float64x __lgammaf64x_r (_Float64x, int *__signgamp) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64x rintf64x (_Float64x __x) noexcept (true); extern _Float64x __rintf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float64x nextafterf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __nextafterf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64x nextdownf64x (_Float64x __x) noexcept (true); extern _Float64x __nextdownf64x (_Float64x __x) noexcept (true); 612825: 612825: extern _Float64x nextupf64x (_Float64x __x) noexcept (true); extern _Float64x __nextupf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64x remainderf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __remainderf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64x scalbnf64x (_Float64x __x, int __n) noexcept (true); extern _Float64x __scalbnf64x (_Float64x __x, int __n) noexcept (true); 612825: 612825: 612825: 612825: extern int ilogbf64x (_Float64x __x) noexcept (true); extern int __ilogbf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern long int llogbf64x (_Float64x __x) noexcept (true); extern long int __llogbf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64x scalblnf64x (_Float64x __x, long int __n) noexcept (true); extern _Float64x __scalblnf64x (_Float64x __x, long int __n) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64x nearbyintf64x (_Float64x __x) noexcept (true); extern _Float64x __nearbyintf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64x roundf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __roundf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern _Float64x truncf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __truncf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float64x remquof64x (_Float64x __x, _Float64x __y, int *__quo) noexcept (true); extern _Float64x __remquof64x (_Float64x __x, _Float64x __y, int *__quo) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long int lrintf64x (_Float64x __x) noexcept (true); extern long int __lrintf64x (_Float64x __x) noexcept (true); 612825: __extension__ 612825: extern long long int llrintf64x (_Float64x __x) noexcept (true); extern long long int __llrintf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: extern long int lroundf64x (_Float64x __x) noexcept (true); extern long int __lroundf64x (_Float64x __x) noexcept (true); 612825: __extension__ 612825: extern long long int llroundf64x (_Float64x __x) noexcept (true); extern long long int __llroundf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64x fdimf64x (_Float64x __x, _Float64x __y) noexcept (true); extern _Float64x __fdimf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64x fmaxf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaxf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fminf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern _Float64x fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) noexcept (true); extern _Float64x __fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern _Float64x roundevenf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); extern _Float64x __roundevenf64x (_Float64x __x) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern __intmax_t fromfpf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __intmax_t fromfpxf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true); extern __intmax_t __fromfpxf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: 612825: 612825: extern __uintmax_t ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true); extern __uintmax_t __ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) noexcept (true) 612825: ; 612825: 612825: 612825: extern int canonicalizef64x (_Float64x *__cx, const _Float64x *__x) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern _Float64x fmaxmagf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaxmagf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fminmagf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminmagf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern _Float64x fmaximumf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaximumf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fminimumf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminimumf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fmaximum_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaximum_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fminimum_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminimum_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fmaximum_magf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaximum_magf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fminimum_magf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminimum_magf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fmaximum_mag_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fmaximum_mag_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern _Float64x fminimum_mag_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); extern _Float64x __fminimum_mag_numf64x (_Float64x __x, _Float64x __y) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: extern int totalorderf64x (const _Float64x *__x, const _Float64x *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern int totalordermagf64x (const _Float64x *__x, const _Float64x *__y) noexcept (true) 612825: 612825: __attribute__ ((__pure__)); 612825: 612825: 612825: extern _Float64x getpayloadf64x (const _Float64x *__x) noexcept (true); extern _Float64x __getpayloadf64x (const _Float64x *__x) noexcept (true); 612825: 612825: 612825: extern int setpayloadf64x (_Float64x *__x, _Float64x __payload) noexcept (true); 612825: 612825: 612825: extern int setpayloadsigf64x (_Float64x *__x, _Float64x __payload) noexcept (true); 612825: # 519 "/usr/include/math.h" 2 3 4 612825: # 566 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern float fadd (double __x, double __y) noexcept (true); 612825: 612825: 612825: extern float fdiv (double __x, double __y) noexcept (true); 612825: 612825: 612825: extern float ffma (double __x, double __y, double __z) noexcept (true); 612825: 612825: 612825: extern float fmul (double __x, double __y) noexcept (true); 612825: 612825: 612825: extern float fsqrt (double __x) noexcept (true); 612825: 612825: 612825: extern float fsub (double __x, double __y) noexcept (true); 612825: # 567 "/usr/include/math.h" 2 3 4 612825: # 587 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern float faddl (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: extern float fdivl (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: extern float ffmal (long double __x, long double __y, long double __z) noexcept (true); 612825: 612825: 612825: extern float fmull (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: extern float fsqrtl (long double __x) noexcept (true); 612825: 612825: 612825: extern float fsubl (long double __x, long double __y) noexcept (true); 612825: # 588 "/usr/include/math.h" 2 3 4 612825: # 616 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern double daddl (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: extern double ddivl (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: extern double dfmal (long double __x, long double __y, long double __z) noexcept (true); 612825: 612825: 612825: extern double dmull (long double __x, long double __y) noexcept (true); 612825: 612825: 612825: extern double dsqrtl (long double __x) noexcept (true); 612825: 612825: 612825: extern double dsubl (long double __x, long double __y) noexcept (true); 612825: # 617 "/usr/include/math.h" 2 3 4 612825: # 697 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); 612825: 612825: 612825: extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32sqrtf32x (_Float32x __x) noexcept (true); 612825: 612825: 612825: extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) noexcept (true); 612825: # 698 "/usr/include/math.h" 2 3 4 612825: # 707 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 612825: 612825: 612825: extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32sqrtf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: # 708 "/usr/include/math.h" 2 3 4 612825: # 717 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern _Float32 f32addf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32divf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) noexcept (true); 612825: 612825: 612825: extern _Float32 f32mulf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32sqrtf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float32 f32subf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: # 718 "/usr/include/math.h" 2 3 4 612825: # 727 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern _Float32 f32addf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32divf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); 612825: 612825: 612825: extern _Float32 f32mulf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float32 f32sqrtf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float32 f32subf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: # 728 "/usr/include/math.h" 2 3 4 612825: # 747 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xfmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xsqrtf64 (_Float64 __x) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) noexcept (true); 612825: # 748 "/usr/include/math.h" 2 3 4 612825: # 757 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern _Float32x f32xaddf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xdivf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xfmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xmulf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xsqrtf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xsubf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: # 758 "/usr/include/math.h" 2 3 4 612825: # 767 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern _Float32x f32xaddf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xdivf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xfmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xmulf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xsqrtf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float32x f32xsubf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: # 768 "/usr/include/math.h" 2 3 4 612825: # 787 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern _Float64 f64addf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: extern _Float64 f64divf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: extern _Float64 f64fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) noexcept (true); 612825: 612825: 612825: extern _Float64 f64mulf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: 612825: 612825: extern _Float64 f64sqrtf64x (_Float64x __x) noexcept (true); 612825: 612825: 612825: extern _Float64 f64subf64x (_Float64x __x, _Float64x __y) noexcept (true); 612825: # 788 "/usr/include/math.h" 2 3 4 612825: # 797 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern _Float64 f64addf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float64 f64divf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float64 f64fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); 612825: 612825: 612825: extern _Float64 f64mulf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float64 f64sqrtf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float64 f64subf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: # 798 "/usr/include/math.h" 2 3 4 612825: # 817 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4 612825: extern _Float64x f64xaddf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float64x f64xdivf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float64x f64xfmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) noexcept (true); 612825: 612825: 612825: extern _Float64x f64xmulf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: 612825: 612825: extern _Float64x f64xsqrtf128 (_Float128 __x) noexcept (true); 612825: 612825: 612825: extern _Float64x f64xsubf128 (_Float128 __x, _Float128 __y) noexcept (true); 612825: # 818 "/usr/include/math.h" 2 3 4 612825: # 854 "/usr/include/math.h" 3 4 612825: extern int signgam; 612825: # 934 "/usr/include/math.h" 3 4 612825: enum 612825: { 612825: FP_NAN = 612825: 612825: 0, 612825: FP_INFINITE = 612825: 612825: 1, 612825: FP_ZERO = 612825: 612825: 2, 612825: FP_SUBNORMAL = 612825: 612825: 3, 612825: FP_NORMAL = 612825: 612825: 4 612825: }; 612825: # 1054 "/usr/include/math.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/iscanonical.h" 1 3 4 612825: # 1055 "/usr/include/math.h" 2 3 4 612825: # 1066 "/usr/include/math.h" 3 4 612825: extern "C++" { 612825: inline int issignaling (float __val) { return __issignalingf (__val); } 612825: inline int issignaling (double __val) { return __issignaling (__val); } 612825: inline int 612825: issignaling (long double __val) 612825: { 612825: 612825: 612825: 612825: return __issignalingl (__val); 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: } 612825: # 1097 "/usr/include/math.h" 3 4 612825: extern "C++" { 612825: # 1128 "/usr/include/math.h" 3 4 612825: template inline bool 612825: iszero (__T __val) 612825: { 612825: return __val == 0; 612825: } 612825: 612825: } 612825: # 1363 "/usr/include/math.h" 3 4 612825: extern "C++" { 612825: template struct __iseqsig_type; 612825: 612825: template<> struct __iseqsig_type 612825: { 612825: static int __call (float __x, float __y) throw () 612825: { 612825: return __iseqsigf (__x, __y); 612825: } 612825: }; 612825: 612825: template<> struct __iseqsig_type 612825: { 612825: static int __call (double __x, double __y) throw () 612825: { 612825: return __iseqsig (__x, __y); 612825: } 612825: }; 612825: 612825: template<> struct __iseqsig_type 612825: { 612825: static int __call (long double __x, long double __y) throw () 612825: { 612825: 612825: return __iseqsigl (__x, __y); 612825: 612825: 612825: 612825: } 612825: }; 612825: # 1454 "/usr/include/math.h" 3 4 612825: template 612825: inline int 612825: iseqsig (_T1 __x, _T2 __y) throw () 612825: { 612825: 612825: typedef decltype (((__x) + (__y) + 0.0f)) _T3; 612825: 612825: 612825: 612825: return __iseqsig_type<_T3>::__call (__x, __y); 612825: } 612825: 612825: } 612825: 612825: 612825: 612825: 612825: } 612825: # 46 "/usr/include/c++/12/cmath" 2 3 612825: 612825: # 1 "/usr/include/c++/12/bits/std_abs.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/std_abs.h" 3 612825: 612825: # 34 "/usr/include/c++/12/bits/std_abs.h" 3 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/stdlib.h" 1 3 4 612825: # 26 "/usr/include/stdlib.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 612825: # 27 "/usr/include/stdlib.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 612825: # 214 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 3 4 612825: typedef long unsigned int size_t; 612825: # 33 "/usr/include/stdlib.h" 2 3 4 612825: 612825: extern "C" { 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/waitflags.h" 1 3 4 612825: # 41 "/usr/include/stdlib.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/waitstatus.h" 1 3 4 612825: # 42 "/usr/include/stdlib.h" 2 3 4 612825: # 59 "/usr/include/stdlib.h" 3 4 612825: typedef struct 612825: { 612825: int quot; 612825: int rem; 612825: } div_t; 612825: 612825: 612825: 612825: typedef struct 612825: { 612825: long int quot; 612825: long int rem; 612825: } ldiv_t; 612825: 612825: 612825: 612825: 612825: 612825: __extension__ typedef struct 612825: { 612825: long long int quot; 612825: long long int rem; 612825: } lldiv_t; 612825: # 98 "/usr/include/stdlib.h" 3 4 612825: extern size_t __ctype_get_mb_cur_max (void) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: extern double atof (const char *__nptr) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: extern int atoi (const char *__nptr) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: extern long int atol (const char *__nptr) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: __extension__ extern long long int atoll (const char *__nptr) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: extern double strtod (const char *__restrict __nptr, 612825: char **__restrict __endptr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern float strtof (const char *__restrict __nptr, 612825: char **__restrict __endptr) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: extern long double strtold (const char *__restrict __nptr, 612825: char **__restrict __endptr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: # 141 "/usr/include/stdlib.h" 3 4 612825: extern _Float32 strtof32 (const char *__restrict __nptr, 612825: char **__restrict __endptr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern _Float64 strtof64 (const char *__restrict __nptr, 612825: char **__restrict __endptr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern _Float128 strtof128 (const char *__restrict __nptr, 612825: char **__restrict __endptr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern _Float32x strtof32x (const char *__restrict __nptr, 612825: char **__restrict __endptr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern _Float64x strtof64x (const char *__restrict __nptr, 612825: char **__restrict __endptr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: # 177 "/usr/include/stdlib.h" 3 4 612825: extern long int strtol (const char *__restrict __nptr, 612825: char **__restrict __endptr, int __base) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: extern unsigned long int strtoul (const char *__restrict __nptr, 612825: char **__restrict __endptr, int __base) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: __extension__ 612825: extern long long int strtoq (const char *__restrict __nptr, 612825: char **__restrict __endptr, int __base) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: __extension__ 612825: extern unsigned long long int strtouq (const char *__restrict __nptr, 612825: char **__restrict __endptr, int __base) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: __extension__ 612825: extern long long int strtoll (const char *__restrict __nptr, 612825: char **__restrict __endptr, int __base) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: __extension__ 612825: extern unsigned long long int strtoull (const char *__restrict __nptr, 612825: char **__restrict __endptr, int __base) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: extern int strfromd (char *__dest, size_t __size, const char *__format, 612825: double __f) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: 612825: extern int strfromf (char *__dest, size_t __size, const char *__format, 612825: float __f) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: 612825: extern int strfroml (char *__dest, size_t __size, const char *__format, 612825: long double __f) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: # 233 "/usr/include/stdlib.h" 3 4 612825: extern int strfromf32 (char *__dest, size_t __size, const char * __format, 612825: _Float32 __f) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: 612825: 612825: 612825: extern int strfromf64 (char *__dest, size_t __size, const char * __format, 612825: _Float64 __f) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: 612825: 612825: 612825: extern int strfromf128 (char *__dest, size_t __size, const char * __format, 612825: _Float128 __f) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: 612825: 612825: 612825: extern int strfromf32x (char *__dest, size_t __size, const char * __format, 612825: _Float32x __f) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: 612825: 612825: 612825: extern int strfromf64x (char *__dest, size_t __size, const char * __format, 612825: _Float64x __f) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: # 273 "/usr/include/stdlib.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 1 3 4 612825: # 22 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h" 1 3 4 612825: # 27 "/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h" 3 4 612825: struct __locale_struct 612825: { 612825: 612825: struct __locale_data *__locales[13]; 612825: 612825: 612825: const unsigned short int *__ctype_b; 612825: const int *__ctype_tolower; 612825: const int *__ctype_toupper; 612825: 612825: 612825: const char *__names[13]; 612825: }; 612825: 612825: typedef struct __locale_struct *__locale_t; 612825: # 23 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 2 3 4 612825: 612825: typedef __locale_t locale_t; 612825: # 274 "/usr/include/stdlib.h" 2 3 4 612825: 612825: extern long int strtol_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, int __base, 612825: locale_t __loc) noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 612825: 612825: extern unsigned long int strtoul_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, 612825: int __base, locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 612825: 612825: __extension__ 612825: extern long long int strtoll_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, int __base, 612825: locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 612825: 612825: __extension__ 612825: extern unsigned long long int strtoull_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, 612825: int __base, locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); 612825: 612825: extern double strtod_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: 612825: extern float strtof_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: 612825: extern long double strtold_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, 612825: locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: # 317 "/usr/include/stdlib.h" 3 4 612825: extern _Float32 strtof32_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, 612825: locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: 612825: 612825: 612825: extern _Float64 strtof64_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, 612825: locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: 612825: 612825: 612825: extern _Float128 strtof128_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, 612825: locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: 612825: 612825: 612825: extern _Float32x strtof32x_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, 612825: locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: 612825: 612825: 612825: extern _Float64x strtof64x_l (const char *__restrict __nptr, 612825: char **__restrict __endptr, 612825: locale_t __loc) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: # 361 "/usr/include/stdlib.h" 3 4 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: __attribute__ ((__leaf__)) atoi (const char *__nptr) noexcept (true) 612825: { 612825: return (int) strtol (__nptr, (char **) __null, 10); 612825: } 612825: extern __inline __attribute__ ((__gnu_inline__)) long int 612825: __attribute__ ((__leaf__)) atol (const char *__nptr) noexcept (true) 612825: { 612825: return strtol (__nptr, (char **) __null, 10); 612825: } 612825: 612825: 612825: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int 612825: __attribute__ ((__leaf__)) atoll (const char *__nptr) noexcept (true) 612825: { 612825: return strtoll (__nptr, (char **) __null, 10); 612825: } 612825: # 386 "/usr/include/stdlib.h" 3 4 612825: extern char *l64a (long int __n) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: extern long int a64l (const char *__s) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/sys/types.h" 1 3 4 612825: # 27 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 612825: extern "C" { 612825: 612825: 612825: 612825: 612825: 612825: typedef __u_char u_char; 612825: typedef __u_short u_short; 612825: typedef __u_int u_int; 612825: typedef __u_long u_long; 612825: typedef __quad_t quad_t; 612825: typedef __u_quad_t u_quad_t; 612825: typedef __fsid_t fsid_t; 612825: 612825: 612825: typedef __loff_t loff_t; 612825: 612825: 612825: 612825: 612825: typedef __ino_t ino_t; 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef __ino64_t ino64_t; 612825: 612825: 612825: 612825: 612825: typedef __dev_t dev_t; 612825: 612825: 612825: 612825: 612825: typedef __gid_t gid_t; 612825: 612825: 612825: 612825: 612825: typedef __mode_t mode_t; 612825: 612825: 612825: 612825: 612825: typedef __nlink_t nlink_t; 612825: 612825: 612825: 612825: 612825: typedef __uid_t uid_t; 612825: 612825: 612825: 612825: 612825: 612825: typedef __off_t off_t; 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef __off64_t off64_t; 612825: 612825: 612825: 612825: 612825: typedef __pid_t pid_t; 612825: 612825: 612825: 612825: 612825: 612825: typedef __id_t id_t; 612825: 612825: 612825: 612825: 612825: typedef __ssize_t ssize_t; 612825: 612825: 612825: 612825: 612825: 612825: typedef __daddr_t daddr_t; 612825: typedef __caddr_t caddr_t; 612825: 612825: 612825: 612825: 612825: 612825: typedef __key_t key_t; 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/clock_t.h" 1 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef __clock_t clock_t; 612825: # 127 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/clockid_t.h" 1 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef __clockid_t clockid_t; 612825: # 129 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/time_t.h" 1 3 4 612825: # 10 "/usr/include/aarch64-linux-gnu/bits/types/time_t.h" 3 4 612825: typedef __time_t time_t; 612825: # 130 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/timer_t.h" 1 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef __timer_t timer_t; 612825: # 131 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 612825: 612825: 612825: 612825: typedef __useconds_t useconds_t; 612825: 612825: 612825: 612825: typedef __suseconds_t suseconds_t; 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 612825: # 145 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 612825: 612825: 612825: 612825: typedef unsigned long int ulong; 612825: typedef unsigned short int ushort; 612825: typedef unsigned int uint; 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/stdint-intn.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/stdint-intn.h" 3 4 612825: typedef __int8_t int8_t; 612825: typedef __int16_t int16_t; 612825: typedef __int32_t int32_t; 612825: typedef __int64_t int64_t; 612825: # 156 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 612825: 612825: 612825: typedef __uint8_t u_int8_t; 612825: typedef __uint16_t u_int16_t; 612825: typedef __uint32_t u_int32_t; 612825: typedef __uint64_t u_int64_t; 612825: 612825: 612825: typedef int register_t __attribute__ ((__mode__ (__word__))); 612825: # 176 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 612825: # 1 "/usr/include/endian.h" 1 3 4 612825: # 24 "/usr/include/endian.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/endian.h" 1 3 4 612825: # 35 "/usr/include/aarch64-linux-gnu/bits/endian.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/endianness.h" 1 3 4 612825: # 36 "/usr/include/aarch64-linux-gnu/bits/endian.h" 2 3 4 612825: # 25 "/usr/include/endian.h" 2 3 4 612825: # 35 "/usr/include/endian.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 1 3 4 612825: # 33 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4 612825: static __inline __uint16_t 612825: __bswap_16 (__uint16_t __bsx) 612825: { 612825: 612825: return __builtin_bswap16 (__bsx); 612825: 612825: 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: static __inline __uint32_t 612825: __bswap_32 (__uint32_t __bsx) 612825: { 612825: 612825: return __builtin_bswap32 (__bsx); 612825: 612825: 612825: 612825: } 612825: # 69 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4 612825: __extension__ static __inline __uint64_t 612825: __bswap_64 (__uint64_t __bsx) 612825: { 612825: 612825: return __builtin_bswap64 (__bsx); 612825: 612825: 612825: 612825: } 612825: # 36 "/usr/include/endian.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 1 3 4 612825: # 32 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 3 4 612825: static __inline __uint16_t 612825: __uint16_identity (__uint16_t __x) 612825: { 612825: return __x; 612825: } 612825: 612825: static __inline __uint32_t 612825: __uint32_identity (__uint32_t __x) 612825: { 612825: return __x; 612825: } 612825: 612825: static __inline __uint64_t 612825: __uint64_identity (__uint64_t __x) 612825: { 612825: return __x; 612825: } 612825: # 37 "/usr/include/endian.h" 2 3 4 612825: # 177 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/sys/select.h" 1 3 4 612825: # 30 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/select.h" 1 3 4 612825: # 31 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h" 1 3 4 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__sigset_t.h" 1 3 4 612825: 612825: 612825: 612825: 612825: typedef struct 612825: { 612825: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; 612825: } __sigset_t; 612825: # 5 "/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h" 2 3 4 612825: 612825: 612825: typedef __sigset_t sigset_t; 612825: # 34 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_timeval.h" 1 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: struct timeval 612825: { 612825: 612825: 612825: 612825: 612825: __time_t tv_sec; 612825: __suseconds_t tv_usec; 612825: 612825: }; 612825: # 38 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 1 3 4 612825: # 11 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 3 4 612825: struct timespec 612825: { 612825: 612825: 612825: 612825: __time_t tv_sec; 612825: 612825: 612825: 612825: 612825: __syscall_slong_t tv_nsec; 612825: # 31 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 3 4 612825: }; 612825: # 40 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 612825: # 49 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 612825: typedef long int __fd_mask; 612825: # 59 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 612825: typedef struct 612825: { 612825: 612825: 612825: 612825: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; 612825: 612825: 612825: 612825: 612825: 612825: } fd_set; 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef __fd_mask fd_mask; 612825: # 91 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 612825: extern "C" { 612825: # 102 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 612825: extern int select (int __nfds, fd_set *__restrict __readfds, 612825: fd_set *__restrict __writefds, 612825: fd_set *__restrict __exceptfds, 612825: struct timeval *__restrict __timeout); 612825: # 127 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 612825: extern int pselect (int __nfds, fd_set *__restrict __readfds, 612825: fd_set *__restrict __writefds, 612825: fd_set *__restrict __exceptfds, 612825: const struct timespec *__restrict __timeout, 612825: const __sigset_t *__restrict __sigmask); 612825: # 150 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/select2.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/select2.h" 3 4 612825: extern long int __fdelt_chk (long int __d); 612825: extern long int __fdelt_warn (long int __d) 612825: __attribute__((__warning__ ("bit outside of fd_set selected"))); 612825: # 151 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4 612825: 612825: 612825: } 612825: # 180 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: typedef __blksize_t blksize_t; 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef __blkcnt_t blkcnt_t; 612825: 612825: 612825: 612825: typedef __fsblkcnt_t fsblkcnt_t; 612825: 612825: 612825: 612825: typedef __fsfilcnt_t fsfilcnt_t; 612825: # 219 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4 612825: typedef __blkcnt64_t blkcnt64_t; 612825: typedef __fsblkcnt64_t fsblkcnt64_t; 612825: typedef __fsfilcnt64_t fsfilcnt64_t; 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 1 3 4 612825: # 23 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 1 3 4 612825: # 44 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes-arch.h" 1 3 4 612825: # 45 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/atomic_wide_counter.h" 1 3 4 612825: # 25 "/usr/include/aarch64-linux-gnu/bits/atomic_wide_counter.h" 3 4 612825: typedef union 612825: { 612825: __extension__ unsigned long long int __value64; 612825: struct 612825: { 612825: unsigned int __low; 612825: unsigned int __high; 612825: } __value32; 612825: } __atomic_wide_counter; 612825: # 47 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4 612825: 612825: 612825: 612825: 612825: typedef struct __pthread_internal_list 612825: { 612825: struct __pthread_internal_list *__prev; 612825: struct __pthread_internal_list *__next; 612825: } __pthread_list_t; 612825: 612825: typedef struct __pthread_internal_slist 612825: { 612825: struct __pthread_internal_slist *__next; 612825: } __pthread_slist_t; 612825: # 76 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 1 3 4 612825: # 27 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 3 4 612825: struct __pthread_mutex_s 612825: { 612825: int __lock ; 612825: unsigned int __count; 612825: int __owner; 612825: 612825: unsigned int __nusers; 612825: # 58 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 3 4 612825: int __kind; 612825: 612825: 612825: 612825: 612825: int __spins; 612825: __pthread_list_t __list; 612825: # 74 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 3 4 612825: }; 612825: # 77 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4 612825: # 89 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/struct_rwlock.h" 1 3 4 612825: # 23 "/usr/include/aarch64-linux-gnu/bits/struct_rwlock.h" 3 4 612825: struct __pthread_rwlock_arch_t 612825: { 612825: unsigned int __readers; 612825: unsigned int __writers; 612825: unsigned int __wrphase_futex; 612825: unsigned int __writers_futex; 612825: unsigned int __pad3; 612825: unsigned int __pad4; 612825: int __cur_writer; 612825: int __shared; 612825: unsigned long int __pad1; 612825: unsigned long int __pad2; 612825: unsigned int __flags; 612825: }; 612825: # 90 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4 612825: 612825: 612825: 612825: 612825: struct __pthread_cond_s 612825: { 612825: __atomic_wide_counter __wseq; 612825: __atomic_wide_counter __g1_start; 612825: unsigned int __g_refs[2] ; 612825: unsigned int __g_size[2]; 612825: unsigned int __g1_orig_size; 612825: unsigned int __wrefs; 612825: unsigned int __g_signals[2]; 612825: }; 612825: 612825: typedef unsigned int __tss_t; 612825: typedef unsigned long int __thrd_t; 612825: 612825: typedef struct 612825: { 612825: int __data ; 612825: } __once_flag; 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 2 3 4 612825: 612825: 612825: 612825: typedef unsigned long int pthread_t; 612825: 612825: 612825: 612825: 612825: typedef union 612825: { 612825: char __size[8]; 612825: int __align; 612825: } pthread_mutexattr_t; 612825: 612825: 612825: 612825: 612825: typedef union 612825: { 612825: char __size[8]; 612825: int __align; 612825: } pthread_condattr_t; 612825: 612825: 612825: 612825: typedef unsigned int pthread_key_t; 612825: 612825: 612825: 612825: typedef int pthread_once_t; 612825: 612825: 612825: union pthread_attr_t 612825: { 612825: char __size[64]; 612825: long int __align; 612825: }; 612825: 612825: typedef union pthread_attr_t pthread_attr_t; 612825: 612825: 612825: 612825: 612825: typedef union 612825: { 612825: struct __pthread_mutex_s __data; 612825: char __size[48]; 612825: long int __align; 612825: } pthread_mutex_t; 612825: 612825: 612825: typedef union 612825: { 612825: struct __pthread_cond_s __data; 612825: char __size[48]; 612825: __extension__ long long int __align; 612825: } pthread_cond_t; 612825: 612825: 612825: 612825: 612825: 612825: typedef union 612825: { 612825: struct __pthread_rwlock_arch_t __data; 612825: char __size[56]; 612825: long int __align; 612825: } pthread_rwlock_t; 612825: 612825: typedef union 612825: { 612825: char __size[8]; 612825: long int __align; 612825: } pthread_rwlockattr_t; 612825: 612825: 612825: 612825: 612825: 612825: typedef volatile int pthread_spinlock_t; 612825: 612825: 612825: 612825: 612825: typedef union 612825: { 612825: char __size[32]; 612825: long int __align; 612825: } pthread_barrier_t; 612825: 612825: typedef union 612825: { 612825: char __size[8]; 612825: int __align; 612825: } pthread_barrierattr_t; 612825: # 228 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4 612825: 612825: 612825: } 612825: # 396 "/usr/include/stdlib.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long int random (void) noexcept (true); 612825: 612825: 612825: extern void srandom (unsigned int __seed) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern char *initstate (unsigned int __seed, char *__statebuf, 612825: size_t __statelen) noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: extern char *setstate (char *__statebuf) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: struct random_data 612825: { 612825: int32_t *fptr; 612825: int32_t *rptr; 612825: int32_t *state; 612825: int rand_type; 612825: int rand_deg; 612825: int rand_sep; 612825: int32_t *end_ptr; 612825: }; 612825: 612825: extern int random_r (struct random_data *__restrict __buf, 612825: int32_t *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: extern int srandom_r (unsigned int __seed, struct random_data *__buf) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, 612825: size_t __statelen, 612825: struct random_data *__restrict __buf) 612825: noexcept (true) __attribute__ ((__nonnull__ (2, 4))); 612825: 612825: extern int setstate_r (char *__restrict __statebuf, 612825: struct random_data *__restrict __buf) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: 612825: 612825: extern int rand (void) noexcept (true); 612825: 612825: extern void srand (unsigned int __seed) noexcept (true); 612825: 612825: 612825: 612825: extern int rand_r (unsigned int *__seed) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern double drand48 (void) noexcept (true); 612825: extern double erand48 (unsigned short int __xsubi[3]) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern long int lrand48 (void) noexcept (true); 612825: extern long int nrand48 (unsigned short int __xsubi[3]) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern long int mrand48 (void) noexcept (true); 612825: extern long int jrand48 (unsigned short int __xsubi[3]) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern void srand48 (long int __seedval) noexcept (true); 612825: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: extern void lcong48 (unsigned short int __param[7]) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: struct drand48_data 612825: { 612825: unsigned short int __x[3]; 612825: unsigned short int __old_x[3]; 612825: unsigned short int __c; 612825: unsigned short int __init; 612825: __extension__ unsigned long long int __a; 612825: 612825: }; 612825: 612825: 612825: extern int drand48_r (struct drand48_data *__restrict __buffer, 612825: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: extern int erand48_r (unsigned short int __xsubi[3], 612825: struct drand48_data *__restrict __buffer, 612825: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int lrand48_r (struct drand48_data *__restrict __buffer, 612825: long int *__restrict __result) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: extern int nrand48_r (unsigned short int __xsubi[3], 612825: struct drand48_data *__restrict __buffer, 612825: long int *__restrict __result) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int mrand48_r (struct drand48_data *__restrict __buffer, 612825: long int *__restrict __result) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: extern int jrand48_r (unsigned short int __xsubi[3], 612825: struct drand48_data *__restrict __buffer, 612825: long int *__restrict __result) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: extern int seed48_r (unsigned short int __seed16v[3], 612825: struct drand48_data *__buffer) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: extern int lcong48_r (unsigned short int __param[7], 612825: struct drand48_data *__buffer) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern __uint32_t arc4random (void) 612825: noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: extern void arc4random_buf (void *__buf, size_t __size) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern __uint32_t arc4random_uniform (__uint32_t __upper_bound) 612825: noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern void *malloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) 612825: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: extern void *calloc (size_t __nmemb, size_t __size) 612825: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern void *realloc (void *__ptr, size_t __size) 612825: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); 612825: 612825: 612825: extern void free (void *__ptr) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 612825: noexcept (true) __attribute__ ((__warn_unused_result__)) 612825: __attribute__ ((__alloc_size__ (2, 3))) 612825: __attribute__ ((__malloc__ (__builtin_free, 1))); 612825: 612825: 612825: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) 612825: noexcept (true) __attribute__ ((__malloc__ (reallocarray, 1))); 612825: 612825: 612825: 612825: # 1 "/usr/include/alloca.h" 1 3 4 612825: # 24 "/usr/include/alloca.h" 3 4 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 612825: # 25 "/usr/include/alloca.h" 2 3 4 612825: 612825: extern "C" { 612825: 612825: 612825: 612825: 612825: 612825: extern void *alloca (size_t __size) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: } 612825: # 588 "/usr/include/stdlib.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: extern void *valloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) 612825: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern void *aligned_alloc (size_t __alignment, size_t __size) 612825: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1))) 612825: __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: extern void abort (void) noexcept (true) __attribute__ ((__noreturn__)); 612825: 612825: 612825: 612825: extern int atexit (void (*__func) (void)) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: extern "C++" int at_quick_exit (void (*__func) (void)) 612825: noexcept (true) __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); 612825: # 630 "/usr/include/stdlib.h" 3 4 612825: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: extern void exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 612825: 612825: 612825: 612825: 612825: 612825: extern void quick_exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 612825: 612825: 612825: 612825: 612825: 612825: extern void _Exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); 612825: 612825: 612825: 612825: 612825: extern char *getenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern char *secure_getenv (const char *__name) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int putenv (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: extern int setenv (const char *__name, const char *__value, int __replace) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: extern int unsetenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int clearenv (void) noexcept (true); 612825: # 695 "/usr/include/stdlib.h" 3 4 612825: extern char *mktemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: # 708 "/usr/include/stdlib.h" 3 4 612825: extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: # 718 "/usr/include/stdlib.h" 3 4 612825: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: # 730 "/usr/include/stdlib.h" 3 4 612825: extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: # 740 "/usr/include/stdlib.h" 3 4 612825: extern int mkstemps64 (char *__template, int __suffixlen) 612825: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: # 751 "/usr/include/stdlib.h" 3 4 612825: extern char *mkdtemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: # 762 "/usr/include/stdlib.h" 3 4 612825: extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: # 772 "/usr/include/stdlib.h" 3 4 612825: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: # 782 "/usr/include/stdlib.h" 3 4 612825: extern int mkostemps (char *__template, int __suffixlen, int __flags) 612825: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: # 794 "/usr/include/stdlib.h" 3 4 612825: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) 612825: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: # 804 "/usr/include/stdlib.h" 3 4 612825: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: extern char *canonicalize_file_name (const char *__name) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) 612825: __attribute__ ((__malloc__ (__builtin_free, 1))) __attribute__ ((__warn_unused_result__)); 612825: # 821 "/usr/include/stdlib.h" 3 4 612825: extern char *realpath (const char *__restrict __name, 612825: char *__restrict __resolved) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef int (*__compar_fn_t) (const void *, const void *); 612825: 612825: 612825: typedef __compar_fn_t comparison_fn_t; 612825: 612825: 612825: 612825: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); 612825: 612825: 612825: 612825: 612825: extern void *bsearch (const void *__key, const void *__base, 612825: size_t __nmemb, size_t __size, __compar_fn_t __compar) 612825: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/stdlib-bsearch.h" 1 3 4 612825: # 19 "/usr/include/aarch64-linux-gnu/bits/stdlib-bsearch.h" 3 4 612825: extern __inline __attribute__ ((__gnu_inline__)) void * 612825: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, 612825: __compar_fn_t __compar) 612825: { 612825: size_t __l, __u, __idx; 612825: const void *__p; 612825: int __comparison; 612825: 612825: __l = 0; 612825: __u = __nmemb; 612825: while (__l < __u) 612825: { 612825: __idx = (__l + __u) / 2; 612825: __p = (const void *) (((const char *) __base) + (__idx * __size)); 612825: __comparison = (*__compar) (__key, __p); 612825: if (__comparison < 0) 612825: __u = __idx; 612825: else if (__comparison > 0) 612825: __l = __idx + 1; 612825: else 612825: { 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wcast-qual" 612825: 612825: return (void *) __p; 612825: 612825: #pragma GCC diagnostic pop 612825: 612825: } 612825: } 612825: 612825: return __null; 612825: } 612825: # 847 "/usr/include/stdlib.h" 2 3 4 612825: 612825: 612825: 612825: 612825: extern void qsort (void *__base, size_t __nmemb, size_t __size, 612825: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); 612825: 612825: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, 612825: __compar_d_fn_t __compar, void *__arg) 612825: __attribute__ ((__nonnull__ (1, 4))); 612825: 612825: 612825: 612825: 612825: extern int abs (int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 612825: extern long int labs (long int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: __extension__ extern long long int llabs (long long int __x) 612825: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern div_t div (int __numer, int __denom) 612825: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 612825: extern ldiv_t ldiv (long int __numer, long int __denom) 612825: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: __extension__ extern lldiv_t lldiv (long long int __numer, 612825: long long int __denom) 612825: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); 612825: # 893 "/usr/include/stdlib.h" 3 4 612825: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, 612825: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, 612825: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern char *gcvt (double __value, int __ndigit, char *__buf) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern char *qecvt (long double __value, int __ndigit, 612825: int *__restrict __decpt, int *__restrict __sign) 612825: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 612825: extern char *qfcvt (long double __value, int __ndigit, 612825: int *__restrict __decpt, int *__restrict __sign) 612825: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); 612825: extern char *qgcvt (long double __value, int __ndigit, char *__buf) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, 612825: int *__restrict __sign, char *__restrict __buf, 612825: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 612825: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, 612825: int *__restrict __sign, char *__restrict __buf, 612825: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 612825: 612825: extern int qecvt_r (long double __value, int __ndigit, 612825: int *__restrict __decpt, int *__restrict __sign, 612825: char *__restrict __buf, size_t __len) 612825: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 612825: extern int qfcvt_r (long double __value, int __ndigit, 612825: int *__restrict __decpt, int *__restrict __sign, 612825: char *__restrict __buf, size_t __len) 612825: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); 612825: 612825: 612825: 612825: 612825: 612825: extern int mblen (const char *__s, size_t __n) noexcept (true); 612825: 612825: 612825: extern int mbtowc (wchar_t *__restrict __pwc, 612825: const char *__restrict __s, size_t __n) noexcept (true); 612825: 612825: 612825: extern int wctomb (char *__s, wchar_t __wchar) noexcept (true); 612825: 612825: 612825: 612825: extern size_t mbstowcs (wchar_t *__restrict __pwcs, 612825: const char *__restrict __s, size_t __n) noexcept (true) 612825: __attribute__ ((__access__ (__read_only__, 2))); 612825: 612825: extern size_t wcstombs (char *__restrict __s, 612825: const wchar_t *__restrict __pwcs, size_t __n) 612825: noexcept (true) 612825: __attribute__ ((__access__ (__write_only__, 1, 3))) 612825: __attribute__ ((__access__ (__read_only__, 2))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int rpmatch (const char *__response) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); 612825: # 980 "/usr/include/stdlib.h" 3 4 612825: extern int getsubopt (char **__restrict __optionp, 612825: char *const *__restrict __tokens, 612825: char **__restrict __valuep) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int grantpt (int __fd) noexcept (true); 612825: 612825: 612825: 612825: extern int unlockpt (int __fd) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern char *ptsname (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); 612825: 612825: 612825: extern int getpt (void); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int getloadavg (double __loadavg[], int __nelem) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: # 1036 "/usr/include/stdlib.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" 3 4 612825: extern __inline __attribute__ ((__gnu_inline__)) double 612825: __attribute__ ((__leaf__)) atof (const char *__nptr) noexcept (true) 612825: { 612825: return strtod (__nptr, (char **) __null); 612825: } 612825: # 1037 "/usr/include/stdlib.h" 2 3 4 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/stdlib.h" 1 3 4 612825: # 23 "/usr/include/aarch64-linux-gnu/bits/stdlib.h" 3 4 612825: extern char *__realpath_chk (const char *__restrict __name, 612825: char *__restrict __resolved, 612825: size_t __resolvedlen) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) noexcept (true) __asm__ ("" "realpath") 612825: 612825: __attribute__ ((__warn_unused_result__)); 612825: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) noexcept (true) __asm__ ("" "__realpath_chk") 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)) 612825: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 612825: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char *__restrict __resolved) noexcept (true) 612825: { 612825: size_t sz = __builtin_object_size (__resolved, 2 > 1); 612825: 612825: if (sz == (size_t) -1) 612825: return __realpath_alias (__name, __resolved); 612825: 612825: 612825: 612825: 612825: 612825: return __realpath_chk (__name, __resolved, sz); 612825: } 612825: 612825: 612825: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, 612825: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) 612825: __attribute__ ((__access__ (__write_only__, 2, 3))); 612825: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ptsname_r") 612825: 612825: __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); 612825: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ptsname_r_chk") 612825: 612825: 612825: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) ptsname_r (int __fd, char *__buf, size_t __buflen) noexcept (true) 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __ptsname_r_alias (__fd, __buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) 612825: 612825: ; 612825: } 612825: 612825: 612825: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) 612825: noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: extern int __wctomb_alias (char *__s, wchar_t __wchar) noexcept (true) __asm__ ("" "wctomb") 612825: __attribute__ ((__warn_unused_result__)); 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int 612825: __attribute__ ((__leaf__)) wctomb (char *__s, wchar_t __wchar) noexcept (true) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 612825: && 16 > __builtin_object_size (__s, 2 > 1)) 612825: return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); 612825: return __wctomb_alias (__s, __wchar); 612825: } 612825: 612825: 612825: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, 612825: const char *__restrict __src, 612825: size_t __len, size_t __dstlen) noexcept (true) 612825: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 612825: extern size_t __mbstowcs_nulldst (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") 612825: 612825: 612825: 612825: __attribute__ ((__access__ (__read_only__, 2))); 612825: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") 612825: 612825: 612825: 612825: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 612825: extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) noexcept (true) __asm__ ("" "__mbstowcs_chk") 612825: 612825: 612825: 612825: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 612825: __attribute__ ((__leaf__)) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) 612825: 612825: { 612825: if (__builtin_constant_p (__dst == __null) && __dst == __null) 612825: return __mbstowcs_nulldst (__dst, __src, __len); 612825: else 612825: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t)))))) ? __mbstowcs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbstowcs_chk_warn (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbstowcs_chk (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) 612825: ; 612825: } 612825: 612825: extern size_t __wcstombs_chk (char *__restrict __dst, 612825: const wchar_t *__restrict __src, 612825: size_t __len, size_t __dstlen) noexcept (true) 612825: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 612825: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "wcstombs") 612825: 612825: 612825: 612825: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); 612825: extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) noexcept (true) __asm__ ("" "__wcstombs_chk") 612825: 612825: 612825: 612825: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 612825: __attribute__ ((__leaf__)) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) 612825: 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char)))))) ? __wcstombs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)) : __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)))) 612825: 612825: ; 612825: } 612825: # 1041 "/usr/include/stdlib.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: } 612825: # 39 "/usr/include/c++/12/bits/std_abs.h" 2 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" 612825: { 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: using ::abs; 612825: 612825: 612825: inline long 612825: abs(long __i) { return __builtin_labs(__i); } 612825: 612825: 612825: 612825: inline long long 612825: abs(long long __x) { return __builtin_llabs (__x); } 612825: # 70 "/usr/include/c++/12/bits/std_abs.h" 3 612825: inline constexpr double 612825: abs(double __x) 612825: { return __builtin_fabs(__x); } 612825: 612825: inline constexpr float 612825: abs(float __x) 612825: { return __builtin_fabsf(__x); } 612825: 612825: inline constexpr long double 612825: abs(long double __x) 612825: { return __builtin_fabsl(__x); } 612825: # 107 "/usr/include/c++/12/bits/std_abs.h" 3 612825: 612825: } 612825: } 612825: # 48 "/usr/include/c++/12/cmath" 2 3 612825: # 77 "/usr/include/c++/12/cmath" 3 612825: extern "C++" 612825: { 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: using ::acos; 612825: 612825: 612825: inline constexpr float 612825: acos(float __x) 612825: { return __builtin_acosf(__x); } 612825: 612825: inline constexpr long double 612825: acos(long double __x) 612825: { return __builtin_acosl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: acos(_Tp __x) 612825: { return __builtin_acos(__x); } 612825: 612825: using ::asin; 612825: 612825: 612825: inline constexpr float 612825: asin(float __x) 612825: { return __builtin_asinf(__x); } 612825: 612825: inline constexpr long double 612825: asin(long double __x) 612825: { return __builtin_asinl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: asin(_Tp __x) 612825: { return __builtin_asin(__x); } 612825: 612825: using ::atan; 612825: 612825: 612825: inline constexpr float 612825: atan(float __x) 612825: { return __builtin_atanf(__x); } 612825: 612825: inline constexpr long double 612825: atan(long double __x) 612825: { return __builtin_atanl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: atan(_Tp __x) 612825: { return __builtin_atan(__x); } 612825: 612825: using ::atan2; 612825: 612825: 612825: inline constexpr float 612825: atan2(float __y, float __x) 612825: { return __builtin_atan2f(__y, __x); } 612825: 612825: inline constexpr long double 612825: atan2(long double __y, long double __x) 612825: { return __builtin_atan2l(__y, __x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: atan2(_Tp __y, _Up __x) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return atan2(__type(__y), __type(__x)); 612825: } 612825: 612825: using ::ceil; 612825: 612825: 612825: inline constexpr float 612825: ceil(float __x) 612825: { return __builtin_ceilf(__x); } 612825: 612825: inline constexpr long double 612825: ceil(long double __x) 612825: { return __builtin_ceill(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: ceil(_Tp __x) 612825: { return __builtin_ceil(__x); } 612825: 612825: using ::cos; 612825: 612825: 612825: inline constexpr float 612825: cos(float __x) 612825: { return __builtin_cosf(__x); } 612825: 612825: inline constexpr long double 612825: cos(long double __x) 612825: { return __builtin_cosl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: cos(_Tp __x) 612825: { return __builtin_cos(__x); } 612825: 612825: using ::cosh; 612825: 612825: 612825: inline constexpr float 612825: cosh(float __x) 612825: { return __builtin_coshf(__x); } 612825: 612825: inline constexpr long double 612825: cosh(long double __x) 612825: { return __builtin_coshl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: cosh(_Tp __x) 612825: { return __builtin_cosh(__x); } 612825: 612825: using ::exp; 612825: 612825: 612825: inline constexpr float 612825: exp(float __x) 612825: { return __builtin_expf(__x); } 612825: 612825: inline constexpr long double 612825: exp(long double __x) 612825: { return __builtin_expl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: exp(_Tp __x) 612825: { return __builtin_exp(__x); } 612825: 612825: using ::fabs; 612825: 612825: 612825: inline constexpr float 612825: fabs(float __x) 612825: { return __builtin_fabsf(__x); } 612825: 612825: inline constexpr long double 612825: fabs(long double __x) 612825: { return __builtin_fabsl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: fabs(_Tp __x) 612825: { return __builtin_fabs(__x); } 612825: 612825: using ::floor; 612825: 612825: 612825: inline constexpr float 612825: floor(float __x) 612825: { return __builtin_floorf(__x); } 612825: 612825: inline constexpr long double 612825: floor(long double __x) 612825: { return __builtin_floorl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: floor(_Tp __x) 612825: { return __builtin_floor(__x); } 612825: 612825: using ::fmod; 612825: 612825: 612825: inline constexpr float 612825: fmod(float __x, float __y) 612825: { return __builtin_fmodf(__x, __y); } 612825: 612825: inline constexpr long double 612825: fmod(long double __x, long double __y) 612825: { return __builtin_fmodl(__x, __y); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: fmod(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return fmod(__type(__x), __type(__y)); 612825: } 612825: 612825: using ::frexp; 612825: 612825: 612825: inline float 612825: frexp(float __x, int* __exp) 612825: { return __builtin_frexpf(__x, __exp); } 612825: 612825: inline long double 612825: frexp(long double __x, int* __exp) 612825: { return __builtin_frexpl(__x, __exp); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: frexp(_Tp __x, int* __exp) 612825: { return __builtin_frexp(__x, __exp); } 612825: 612825: using ::ldexp; 612825: 612825: 612825: inline constexpr float 612825: ldexp(float __x, int __exp) 612825: { return __builtin_ldexpf(__x, __exp); } 612825: 612825: inline constexpr long double 612825: ldexp(long double __x, int __exp) 612825: { return __builtin_ldexpl(__x, __exp); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: ldexp(_Tp __x, int __exp) 612825: { return __builtin_ldexp(__x, __exp); } 612825: 612825: using ::log; 612825: 612825: 612825: inline constexpr float 612825: log(float __x) 612825: { return __builtin_logf(__x); } 612825: 612825: inline constexpr long double 612825: log(long double __x) 612825: { return __builtin_logl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: log(_Tp __x) 612825: { return __builtin_log(__x); } 612825: 612825: using ::log10; 612825: 612825: 612825: inline constexpr float 612825: log10(float __x) 612825: { return __builtin_log10f(__x); } 612825: 612825: inline constexpr long double 612825: log10(long double __x) 612825: { return __builtin_log10l(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: log10(_Tp __x) 612825: { return __builtin_log10(__x); } 612825: 612825: using ::modf; 612825: 612825: 612825: inline float 612825: modf(float __x, float* __iptr) 612825: { return __builtin_modff(__x, __iptr); } 612825: 612825: inline long double 612825: modf(long double __x, long double* __iptr) 612825: { return __builtin_modfl(__x, __iptr); } 612825: 612825: 612825: using ::pow; 612825: 612825: 612825: inline constexpr float 612825: pow(float __x, float __y) 612825: { return __builtin_powf(__x, __y); } 612825: 612825: inline constexpr long double 612825: pow(long double __x, long double __y) 612825: { return __builtin_powl(__x, __y); } 612825: # 412 "/usr/include/c++/12/cmath" 3 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: pow(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return pow(__type(__x), __type(__y)); 612825: } 612825: 612825: using ::sin; 612825: 612825: 612825: inline constexpr float 612825: sin(float __x) 612825: { return __builtin_sinf(__x); } 612825: 612825: inline constexpr long double 612825: sin(long double __x) 612825: { return __builtin_sinl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: sin(_Tp __x) 612825: { return __builtin_sin(__x); } 612825: 612825: using ::sinh; 612825: 612825: 612825: inline constexpr float 612825: sinh(float __x) 612825: { return __builtin_sinhf(__x); } 612825: 612825: inline constexpr long double 612825: sinh(long double __x) 612825: { return __builtin_sinhl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: sinh(_Tp __x) 612825: { return __builtin_sinh(__x); } 612825: 612825: using ::sqrt; 612825: 612825: 612825: inline constexpr float 612825: sqrt(float __x) 612825: { return __builtin_sqrtf(__x); } 612825: 612825: inline constexpr long double 612825: sqrt(long double __x) 612825: { return __builtin_sqrtl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: sqrt(_Tp __x) 612825: { return __builtin_sqrt(__x); } 612825: 612825: using ::tan; 612825: 612825: 612825: inline constexpr float 612825: tan(float __x) 612825: { return __builtin_tanf(__x); } 612825: 612825: inline constexpr long double 612825: tan(long double __x) 612825: { return __builtin_tanl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: tan(_Tp __x) 612825: { return __builtin_tan(__x); } 612825: 612825: using ::tanh; 612825: 612825: 612825: inline constexpr float 612825: tanh(float __x) 612825: { return __builtin_tanhf(__x); } 612825: 612825: inline constexpr long double 612825: tanh(long double __x) 612825: { return __builtin_tanhl(__x); } 612825: 612825: 612825: template 612825: inline constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: tanh(_Tp __x) 612825: { return __builtin_tanh(__x); } 612825: # 536 "/usr/include/c++/12/cmath" 3 612825: constexpr int 612825: fpclassify(float __x) 612825: { return __builtin_fpclassify(0, 1, 4, 612825: 3, 2, __x); } 612825: 612825: constexpr int 612825: fpclassify(double __x) 612825: { return __builtin_fpclassify(0, 1, 4, 612825: 3, 2, __x); } 612825: 612825: constexpr int 612825: fpclassify(long double __x) 612825: { return __builtin_fpclassify(0, 1, 4, 612825: 3, 2, __x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: int>::__type 612825: fpclassify(_Tp __x) 612825: { return __x != 0 ? 4 : 2; } 612825: 612825: 612825: 612825: constexpr bool 612825: isfinite(float __x) 612825: { return __builtin_isfinite(__x); } 612825: 612825: constexpr bool 612825: isfinite(double __x) 612825: { return __builtin_isfinite(__x); } 612825: 612825: constexpr bool 612825: isfinite(long double __x) 612825: { return __builtin_isfinite(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: bool>::__type 612825: isfinite(_Tp __x) 612825: { return true; } 612825: 612825: 612825: 612825: constexpr bool 612825: isinf(float __x) 612825: { return __builtin_isinf(__x); } 612825: 612825: 612825: 612825: 612825: 612825: constexpr bool 612825: isinf(double __x) 612825: { return __builtin_isinf(__x); } 612825: 612825: 612825: constexpr bool 612825: isinf(long double __x) 612825: { return __builtin_isinf(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: bool>::__type 612825: isinf(_Tp __x) 612825: { return false; } 612825: 612825: 612825: 612825: constexpr bool 612825: isnan(float __x) 612825: { return __builtin_isnan(__x); } 612825: 612825: 612825: 612825: 612825: 612825: constexpr bool 612825: isnan(double __x) 612825: { return __builtin_isnan(__x); } 612825: 612825: 612825: constexpr bool 612825: isnan(long double __x) 612825: { return __builtin_isnan(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: bool>::__type 612825: isnan(_Tp __x) 612825: { return false; } 612825: 612825: 612825: 612825: constexpr bool 612825: isnormal(float __x) 612825: { return __builtin_isnormal(__x); } 612825: 612825: constexpr bool 612825: isnormal(double __x) 612825: { return __builtin_isnormal(__x); } 612825: 612825: constexpr bool 612825: isnormal(long double __x) 612825: { return __builtin_isnormal(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: bool>::__type 612825: isnormal(_Tp __x) 612825: { return __x != 0 ? true : false; } 612825: 612825: 612825: 612825: 612825: constexpr bool 612825: signbit(float __x) 612825: { return __builtin_signbit(__x); } 612825: 612825: constexpr bool 612825: signbit(double __x) 612825: { return __builtin_signbit(__x); } 612825: 612825: constexpr bool 612825: signbit(long double __x) 612825: { return __builtin_signbit(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: bool>::__type 612825: signbit(_Tp __x) 612825: { return __x < 0 ? true : false; } 612825: 612825: 612825: 612825: constexpr bool 612825: isgreater(float __x, float __y) 612825: { return __builtin_isgreater(__x, __y); } 612825: 612825: constexpr bool 612825: isgreater(double __x, double __y) 612825: { return __builtin_isgreater(__x, __y); } 612825: 612825: constexpr bool 612825: isgreater(long double __x, long double __y) 612825: { return __builtin_isgreater(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename 612825: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 612825: && __is_arithmetic<_Up>::__value), bool>::__type 612825: isgreater(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return __builtin_isgreater(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr bool 612825: isgreaterequal(float __x, float __y) 612825: { return __builtin_isgreaterequal(__x, __y); } 612825: 612825: constexpr bool 612825: isgreaterequal(double __x, double __y) 612825: { return __builtin_isgreaterequal(__x, __y); } 612825: 612825: constexpr bool 612825: isgreaterequal(long double __x, long double __y) 612825: { return __builtin_isgreaterequal(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename 612825: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 612825: && __is_arithmetic<_Up>::__value), bool>::__type 612825: isgreaterequal(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return __builtin_isgreaterequal(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr bool 612825: isless(float __x, float __y) 612825: { return __builtin_isless(__x, __y); } 612825: 612825: constexpr bool 612825: isless(double __x, double __y) 612825: { return __builtin_isless(__x, __y); } 612825: 612825: constexpr bool 612825: isless(long double __x, long double __y) 612825: { return __builtin_isless(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename 612825: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 612825: && __is_arithmetic<_Up>::__value), bool>::__type 612825: isless(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return __builtin_isless(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr bool 612825: islessequal(float __x, float __y) 612825: { return __builtin_islessequal(__x, __y); } 612825: 612825: constexpr bool 612825: islessequal(double __x, double __y) 612825: { return __builtin_islessequal(__x, __y); } 612825: 612825: constexpr bool 612825: islessequal(long double __x, long double __y) 612825: { return __builtin_islessequal(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename 612825: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 612825: && __is_arithmetic<_Up>::__value), bool>::__type 612825: islessequal(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return __builtin_islessequal(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr bool 612825: islessgreater(float __x, float __y) 612825: { return __builtin_islessgreater(__x, __y); } 612825: 612825: constexpr bool 612825: islessgreater(double __x, double __y) 612825: { return __builtin_islessgreater(__x, __y); } 612825: 612825: constexpr bool 612825: islessgreater(long double __x, long double __y) 612825: { return __builtin_islessgreater(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename 612825: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 612825: && __is_arithmetic<_Up>::__value), bool>::__type 612825: islessgreater(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return __builtin_islessgreater(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr bool 612825: isunordered(float __x, float __y) 612825: { return __builtin_isunordered(__x, __y); } 612825: 612825: constexpr bool 612825: isunordered(double __x, double __y) 612825: { return __builtin_isunordered(__x, __y); } 612825: 612825: constexpr bool 612825: isunordered(long double __x, long double __y) 612825: { return __builtin_isunordered(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename 612825: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value 612825: && __is_arithmetic<_Up>::__value), bool>::__type 612825: isunordered(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return __builtin_isunordered(__type(__x), __type(__y)); 612825: } 612825: # 1065 "/usr/include/c++/12/cmath" 3 612825: using ::double_t; 612825: using ::float_t; 612825: 612825: 612825: using ::acosh; 612825: using ::acoshf; 612825: using ::acoshl; 612825: 612825: using ::asinh; 612825: using ::asinhf; 612825: using ::asinhl; 612825: 612825: using ::atanh; 612825: using ::atanhf; 612825: using ::atanhl; 612825: 612825: using ::cbrt; 612825: using ::cbrtf; 612825: using ::cbrtl; 612825: 612825: using ::copysign; 612825: using ::copysignf; 612825: using ::copysignl; 612825: 612825: using ::erf; 612825: using ::erff; 612825: using ::erfl; 612825: 612825: using ::erfc; 612825: using ::erfcf; 612825: using ::erfcl; 612825: 612825: using ::exp2; 612825: using ::exp2f; 612825: using ::exp2l; 612825: 612825: using ::expm1; 612825: using ::expm1f; 612825: using ::expm1l; 612825: 612825: using ::fdim; 612825: using ::fdimf; 612825: using ::fdiml; 612825: 612825: using ::fma; 612825: using ::fmaf; 612825: using ::fmal; 612825: 612825: using ::fmax; 612825: using ::fmaxf; 612825: using ::fmaxl; 612825: 612825: using ::fmin; 612825: using ::fminf; 612825: using ::fminl; 612825: 612825: using ::hypot; 612825: using ::hypotf; 612825: using ::hypotl; 612825: 612825: using ::ilogb; 612825: using ::ilogbf; 612825: using ::ilogbl; 612825: 612825: using ::lgamma; 612825: using ::lgammaf; 612825: using ::lgammal; 612825: 612825: 612825: using ::llrint; 612825: using ::llrintf; 612825: using ::llrintl; 612825: 612825: using ::llround; 612825: using ::llroundf; 612825: using ::llroundl; 612825: 612825: 612825: using ::log1p; 612825: using ::log1pf; 612825: using ::log1pl; 612825: 612825: using ::log2; 612825: using ::log2f; 612825: using ::log2l; 612825: 612825: using ::logb; 612825: using ::logbf; 612825: using ::logbl; 612825: 612825: using ::lrint; 612825: using ::lrintf; 612825: using ::lrintl; 612825: 612825: using ::lround; 612825: using ::lroundf; 612825: using ::lroundl; 612825: 612825: using ::nan; 612825: using ::nanf; 612825: using ::nanl; 612825: 612825: using ::nearbyint; 612825: using ::nearbyintf; 612825: using ::nearbyintl; 612825: 612825: using ::nextafter; 612825: using ::nextafterf; 612825: using ::nextafterl; 612825: 612825: using ::nexttoward; 612825: using ::nexttowardf; 612825: using ::nexttowardl; 612825: 612825: using ::remainder; 612825: using ::remainderf; 612825: using ::remainderl; 612825: 612825: using ::remquo; 612825: using ::remquof; 612825: using ::remquol; 612825: 612825: using ::rint; 612825: using ::rintf; 612825: using ::rintl; 612825: 612825: using ::round; 612825: using ::roundf; 612825: using ::roundl; 612825: 612825: using ::scalbln; 612825: using ::scalblnf; 612825: using ::scalblnl; 612825: 612825: using ::scalbn; 612825: using ::scalbnf; 612825: using ::scalbnl; 612825: 612825: using ::tgamma; 612825: using ::tgammaf; 612825: using ::tgammal; 612825: 612825: using ::trunc; 612825: using ::truncf; 612825: using ::truncl; 612825: 612825: 612825: 612825: constexpr float 612825: acosh(float __x) 612825: { return __builtin_acoshf(__x); } 612825: 612825: constexpr long double 612825: acosh(long double __x) 612825: { return __builtin_acoshl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: acosh(_Tp __x) 612825: { return __builtin_acosh(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: asinh(float __x) 612825: { return __builtin_asinhf(__x); } 612825: 612825: constexpr long double 612825: asinh(long double __x) 612825: { return __builtin_asinhl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: asinh(_Tp __x) 612825: { return __builtin_asinh(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: atanh(float __x) 612825: { return __builtin_atanhf(__x); } 612825: 612825: constexpr long double 612825: atanh(long double __x) 612825: { return __builtin_atanhl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: atanh(_Tp __x) 612825: { return __builtin_atanh(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: cbrt(float __x) 612825: { return __builtin_cbrtf(__x); } 612825: 612825: constexpr long double 612825: cbrt(long double __x) 612825: { return __builtin_cbrtl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: cbrt(_Tp __x) 612825: { return __builtin_cbrt(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: copysign(float __x, float __y) 612825: { return __builtin_copysignf(__x, __y); } 612825: 612825: constexpr long double 612825: copysign(long double __x, long double __y) 612825: { return __builtin_copysignl(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: copysign(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return copysign(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr float 612825: erf(float __x) 612825: { return __builtin_erff(__x); } 612825: 612825: constexpr long double 612825: erf(long double __x) 612825: { return __builtin_erfl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: erf(_Tp __x) 612825: { return __builtin_erf(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: erfc(float __x) 612825: { return __builtin_erfcf(__x); } 612825: 612825: constexpr long double 612825: erfc(long double __x) 612825: { return __builtin_erfcl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: erfc(_Tp __x) 612825: { return __builtin_erfc(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: exp2(float __x) 612825: { return __builtin_exp2f(__x); } 612825: 612825: constexpr long double 612825: exp2(long double __x) 612825: { return __builtin_exp2l(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: exp2(_Tp __x) 612825: { return __builtin_exp2(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: expm1(float __x) 612825: { return __builtin_expm1f(__x); } 612825: 612825: constexpr long double 612825: expm1(long double __x) 612825: { return __builtin_expm1l(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: expm1(_Tp __x) 612825: { return __builtin_expm1(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: fdim(float __x, float __y) 612825: { return __builtin_fdimf(__x, __y); } 612825: 612825: constexpr long double 612825: fdim(long double __x, long double __y) 612825: { return __builtin_fdiml(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: fdim(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return fdim(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr float 612825: fma(float __x, float __y, float __z) 612825: { return __builtin_fmaf(__x, __y, __z); } 612825: 612825: constexpr long double 612825: fma(long double __x, long double __y, long double __z) 612825: { return __builtin_fmal(__x, __y, __z); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type 612825: fma(_Tp __x, _Up __y, _Vp __z) 612825: { 612825: typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; 612825: return fma(__type(__x), __type(__y), __type(__z)); 612825: } 612825: 612825: 612825: 612825: constexpr float 612825: fmax(float __x, float __y) 612825: { return __builtin_fmaxf(__x, __y); } 612825: 612825: constexpr long double 612825: fmax(long double __x, long double __y) 612825: { return __builtin_fmaxl(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: fmax(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return fmax(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr float 612825: fmin(float __x, float __y) 612825: { return __builtin_fminf(__x, __y); } 612825: 612825: constexpr long double 612825: fmin(long double __x, long double __y) 612825: { return __builtin_fminl(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: fmin(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return fmin(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr float 612825: hypot(float __x, float __y) 612825: { return __builtin_hypotf(__x, __y); } 612825: 612825: constexpr long double 612825: hypot(long double __x, long double __y) 612825: { return __builtin_hypotl(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: hypot(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return hypot(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr int 612825: ilogb(float __x) 612825: { return __builtin_ilogbf(__x); } 612825: 612825: constexpr int 612825: ilogb(long double __x) 612825: { return __builtin_ilogbl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr 612825: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: int>::__type 612825: ilogb(_Tp __x) 612825: { return __builtin_ilogb(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: lgamma(float __x) 612825: { return __builtin_lgammaf(__x); } 612825: 612825: constexpr long double 612825: lgamma(long double __x) 612825: { return __builtin_lgammal(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: lgamma(_Tp __x) 612825: { return __builtin_lgamma(__x); } 612825: 612825: 612825: 612825: constexpr long long 612825: llrint(float __x) 612825: { return __builtin_llrintf(__x); } 612825: 612825: constexpr long long 612825: llrint(long double __x) 612825: { return __builtin_llrintl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: long long>::__type 612825: llrint(_Tp __x) 612825: { return __builtin_llrint(__x); } 612825: 612825: 612825: 612825: constexpr long long 612825: llround(float __x) 612825: { return __builtin_llroundf(__x); } 612825: 612825: constexpr long long 612825: llround(long double __x) 612825: { return __builtin_llroundl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: long long>::__type 612825: llround(_Tp __x) 612825: { return __builtin_llround(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: log1p(float __x) 612825: { return __builtin_log1pf(__x); } 612825: 612825: constexpr long double 612825: log1p(long double __x) 612825: { return __builtin_log1pl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: log1p(_Tp __x) 612825: { return __builtin_log1p(__x); } 612825: 612825: 612825: 612825: 612825: constexpr float 612825: log2(float __x) 612825: { return __builtin_log2f(__x); } 612825: 612825: constexpr long double 612825: log2(long double __x) 612825: { return __builtin_log2l(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: log2(_Tp __x) 612825: { return __builtin_log2(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: logb(float __x) 612825: { return __builtin_logbf(__x); } 612825: 612825: constexpr long double 612825: logb(long double __x) 612825: { return __builtin_logbl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: logb(_Tp __x) 612825: { return __builtin_logb(__x); } 612825: 612825: 612825: 612825: constexpr long 612825: lrint(float __x) 612825: { return __builtin_lrintf(__x); } 612825: 612825: constexpr long 612825: lrint(long double __x) 612825: { return __builtin_lrintl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: long>::__type 612825: lrint(_Tp __x) 612825: { return __builtin_lrint(__x); } 612825: 612825: 612825: 612825: constexpr long 612825: lround(float __x) 612825: { return __builtin_lroundf(__x); } 612825: 612825: constexpr long 612825: lround(long double __x) 612825: { return __builtin_lroundl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: long>::__type 612825: lround(_Tp __x) 612825: { return __builtin_lround(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: nearbyint(float __x) 612825: { return __builtin_nearbyintf(__x); } 612825: 612825: constexpr long double 612825: nearbyint(long double __x) 612825: { return __builtin_nearbyintl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: nearbyint(_Tp __x) 612825: { return __builtin_nearbyint(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: nextafter(float __x, float __y) 612825: { return __builtin_nextafterf(__x, __y); } 612825: 612825: constexpr long double 612825: nextafter(long double __x, long double __y) 612825: { return __builtin_nextafterl(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: nextafter(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return nextafter(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: constexpr float 612825: nexttoward(float __x, long double __y) 612825: { return __builtin_nexttowardf(__x, __y); } 612825: 612825: constexpr long double 612825: nexttoward(long double __x, long double __y) 612825: { return __builtin_nexttowardl(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: nexttoward(_Tp __x, long double __y) 612825: { return __builtin_nexttoward(__x, __y); } 612825: 612825: 612825: 612825: constexpr float 612825: remainder(float __x, float __y) 612825: { return __builtin_remainderf(__x, __y); } 612825: 612825: constexpr long double 612825: remainder(long double __x, long double __y) 612825: { return __builtin_remainderl(__x, __y); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: remainder(_Tp __x, _Up __y) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return remainder(__type(__x), __type(__y)); 612825: } 612825: 612825: 612825: 612825: inline float 612825: remquo(float __x, float __y, int* __pquo) 612825: { return __builtin_remquof(__x, __y, __pquo); } 612825: 612825: inline long double 612825: remquo(long double __x, long double __y, int* __pquo) 612825: { return __builtin_remquol(__x, __y, __pquo); } 612825: 612825: 612825: 612825: template 612825: inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type 612825: remquo(_Tp __x, _Up __y, int* __pquo) 612825: { 612825: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; 612825: return remquo(__type(__x), __type(__y), __pquo); 612825: } 612825: 612825: 612825: 612825: constexpr float 612825: rint(float __x) 612825: { return __builtin_rintf(__x); } 612825: 612825: constexpr long double 612825: rint(long double __x) 612825: { return __builtin_rintl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: rint(_Tp __x) 612825: { return __builtin_rint(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: round(float __x) 612825: { return __builtin_roundf(__x); } 612825: 612825: constexpr long double 612825: round(long double __x) 612825: { return __builtin_roundl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: round(_Tp __x) 612825: { return __builtin_round(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: scalbln(float __x, long __ex) 612825: { return __builtin_scalblnf(__x, __ex); } 612825: 612825: constexpr long double 612825: scalbln(long double __x, long __ex) 612825: { return __builtin_scalblnl(__x, __ex); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: scalbln(_Tp __x, long __ex) 612825: { return __builtin_scalbln(__x, __ex); } 612825: 612825: 612825: 612825: constexpr float 612825: scalbn(float __x, int __ex) 612825: { return __builtin_scalbnf(__x, __ex); } 612825: 612825: constexpr long double 612825: scalbn(long double __x, int __ex) 612825: { return __builtin_scalbnl(__x, __ex); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: scalbn(_Tp __x, int __ex) 612825: { return __builtin_scalbn(__x, __ex); } 612825: 612825: 612825: 612825: constexpr float 612825: tgamma(float __x) 612825: { return __builtin_tgammaf(__x); } 612825: 612825: constexpr long double 612825: tgamma(long double __x) 612825: { return __builtin_tgammal(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: tgamma(_Tp __x) 612825: { return __builtin_tgamma(__x); } 612825: 612825: 612825: 612825: constexpr float 612825: trunc(float __x) 612825: { return __builtin_truncf(__x); } 612825: 612825: constexpr long double 612825: trunc(long double __x) 612825: { return __builtin_truncl(__x); } 612825: 612825: 612825: 612825: template 612825: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, 612825: double>::__type 612825: trunc(_Tp __x) 612825: { return __builtin_trunc(__x); } 612825: # 1931 "/usr/include/c++/12/cmath" 3 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: } 612825: # 24 "third_party/butteraugli/butteraugli/butteraugli.h" 2 612825: # 1 "/usr/include/c++/12/cstdint" 1 3 612825: # 32 "/usr/include/c++/12/cstdint" 3 612825: 612825: # 33 "/usr/include/c++/12/cstdint" 3 612825: # 41 "/usr/include/c++/12/cstdint" 3 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stdint.h" 1 3 4 612825: # 9 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stdint.h" 3 4 612825: # 1 "/usr/include/stdint.h" 1 3 4 612825: # 26 "/usr/include/stdint.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 612825: # 27 "/usr/include/stdint.h" 2 3 4 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/wchar.h" 1 3 4 612825: # 29 "/usr/include/stdint.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 612825: # 30 "/usr/include/stdint.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h" 3 4 612825: typedef __uint8_t uint8_t; 612825: typedef __uint16_t uint16_t; 612825: typedef __uint32_t uint32_t; 612825: typedef __uint64_t uint64_t; 612825: # 38 "/usr/include/stdint.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: typedef __int_least8_t int_least8_t; 612825: typedef __int_least16_t int_least16_t; 612825: typedef __int_least32_t int_least32_t; 612825: typedef __int_least64_t int_least64_t; 612825: 612825: 612825: typedef __uint_least8_t uint_least8_t; 612825: typedef __uint_least16_t uint_least16_t; 612825: typedef __uint_least32_t uint_least32_t; 612825: typedef __uint_least64_t uint_least64_t; 612825: 612825: 612825: 612825: 612825: 612825: typedef signed char int_fast8_t; 612825: 612825: typedef long int int_fast16_t; 612825: typedef long int int_fast32_t; 612825: typedef long int int_fast64_t; 612825: # 71 "/usr/include/stdint.h" 3 4 612825: typedef unsigned char uint_fast8_t; 612825: 612825: typedef unsigned long int uint_fast16_t; 612825: typedef unsigned long int uint_fast32_t; 612825: typedef unsigned long int uint_fast64_t; 612825: # 87 "/usr/include/stdint.h" 3 4 612825: typedef long int intptr_t; 612825: 612825: 612825: typedef unsigned long int uintptr_t; 612825: # 101 "/usr/include/stdint.h" 3 4 612825: typedef __intmax_t intmax_t; 612825: typedef __uintmax_t uintmax_t; 612825: # 10 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stdint.h" 2 3 4 612825: # 42 "/usr/include/c++/12/cstdint" 2 3 612825: 612825: 612825: namespace std 612825: { 612825: 612825: using ::int8_t; 612825: using ::int16_t; 612825: using ::int32_t; 612825: using ::int64_t; 612825: 612825: using ::int_fast8_t; 612825: using ::int_fast16_t; 612825: using ::int_fast32_t; 612825: using ::int_fast64_t; 612825: 612825: using ::int_least8_t; 612825: using ::int_least16_t; 612825: using ::int_least32_t; 612825: using ::int_least64_t; 612825: 612825: using ::intmax_t; 612825: using ::intptr_t; 612825: 612825: using ::uint8_t; 612825: using ::uint16_t; 612825: using ::uint32_t; 612825: using ::uint64_t; 612825: 612825: using ::uint_fast8_t; 612825: using ::uint_fast16_t; 612825: using ::uint_fast32_t; 612825: using ::uint_fast64_t; 612825: 612825: using ::uint_least8_t; 612825: using ::uint_least16_t; 612825: using ::uint_least32_t; 612825: using ::uint_least64_t; 612825: 612825: using ::uintmax_t; 612825: using ::uintptr_t; 612825: 612825: 612825: 612825: 612825: 612825: } 612825: # 25 "third_party/butteraugli/butteraugli/butteraugli.h" 2 612825: # 1 "/usr/include/c++/12/cstdio" 1 3 612825: # 39 "/usr/include/c++/12/cstdio" 3 612825: 612825: # 40 "/usr/include/c++/12/cstdio" 3 612825: 612825: 612825: # 1 "/usr/include/stdio.h" 1 3 4 612825: # 27 "/usr/include/stdio.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 612825: # 28 "/usr/include/stdio.h" 2 3 4 612825: 612825: extern "C" { 612825: 612825: 612825: 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 612825: # 34 "/usr/include/stdio.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stdarg.h" 1 3 4 612825: # 40 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stdarg.h" 3 4 612825: typedef __builtin_va_list __gnuc_va_list; 612825: # 37 "/usr/include/stdio.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 1 3 4 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 1 3 4 612825: # 13 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 3 4 612825: typedef struct 612825: { 612825: int __count; 612825: union 612825: { 612825: unsigned int __wch; 612825: char __wchb[4]; 612825: } __value; 612825: } __mbstate_t; 612825: # 6 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 2 3 4 612825: 612825: 612825: 612825: 612825: typedef struct _G_fpos_t 612825: { 612825: __off_t __pos; 612825: __mbstate_t __state; 612825: } __fpos_t; 612825: # 40 "/usr/include/stdio.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 1 3 4 612825: # 10 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 3 4 612825: typedef struct _G_fpos64_t 612825: { 612825: __off64_t __pos; 612825: __mbstate_t __state; 612825: } __fpos64_t; 612825: # 41 "/usr/include/stdio.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/__FILE.h" 1 3 4 612825: 612825: 612825: 612825: struct _IO_FILE; 612825: typedef struct _IO_FILE __FILE; 612825: # 42 "/usr/include/stdio.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/FILE.h" 1 3 4 612825: 612825: 612825: 612825: struct _IO_FILE; 612825: 612825: 612825: typedef struct _IO_FILE FILE; 612825: # 43 "/usr/include/stdio.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 1 3 4 612825: # 35 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 3 4 612825: struct _IO_FILE; 612825: struct _IO_marker; 612825: struct _IO_codecvt; 612825: struct _IO_wide_data; 612825: 612825: 612825: 612825: 612825: typedef void _IO_lock_t; 612825: 612825: 612825: 612825: 612825: 612825: struct _IO_FILE 612825: { 612825: int _flags; 612825: 612825: 612825: char *_IO_read_ptr; 612825: char *_IO_read_end; 612825: char *_IO_read_base; 612825: char *_IO_write_base; 612825: char *_IO_write_ptr; 612825: char *_IO_write_end; 612825: char *_IO_buf_base; 612825: char *_IO_buf_end; 612825: 612825: 612825: char *_IO_save_base; 612825: char *_IO_backup_base; 612825: char *_IO_save_end; 612825: 612825: struct _IO_marker *_markers; 612825: 612825: struct _IO_FILE *_chain; 612825: 612825: int _fileno; 612825: int _flags2; 612825: __off_t _old_offset; 612825: 612825: 612825: unsigned short _cur_column; 612825: signed char _vtable_offset; 612825: char _shortbuf[1]; 612825: 612825: _IO_lock_t *_lock; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: __off64_t _offset; 612825: 612825: struct _IO_codecvt *_codecvt; 612825: struct _IO_wide_data *_wide_data; 612825: struct _IO_FILE *_freeres_list; 612825: void *_freeres_buf; 612825: size_t __pad5; 612825: int _mode; 612825: 612825: char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; 612825: }; 612825: # 44 "/usr/include/stdio.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h" 1 3 4 612825: # 27 "/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h" 3 4 612825: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, 612825: size_t __nbytes); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, 612825: size_t __nbytes); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); 612825: 612825: 612825: typedef int cookie_close_function_t (void *__cookie); 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef struct _IO_cookie_io_functions_t 612825: { 612825: cookie_read_function_t *read; 612825: cookie_write_function_t *write; 612825: cookie_seek_function_t *seek; 612825: cookie_close_function_t *close; 612825: } cookie_io_functions_t; 612825: # 47 "/usr/include/stdio.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: typedef __gnuc_va_list va_list; 612825: # 84 "/usr/include/stdio.h" 3 4 612825: typedef __fpos_t fpos_t; 612825: 612825: 612825: 612825: 612825: typedef __fpos64_t fpos64_t; 612825: # 133 "/usr/include/stdio.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/stdio_lim.h" 1 3 4 612825: # 134 "/usr/include/stdio.h" 2 3 4 612825: # 143 "/usr/include/stdio.h" 3 4 612825: extern FILE *stdin; 612825: extern FILE *stdout; 612825: extern FILE *stderr; 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int remove (const char *__filename) noexcept (true); 612825: 612825: extern int rename (const char *__old, const char *__new) noexcept (true); 612825: 612825: 612825: 612825: extern int renameat (int __oldfd, const char *__old, int __newfd, 612825: const char *__new) noexcept (true); 612825: # 170 "/usr/include/stdio.h" 3 4 612825: extern int renameat2 (int __oldfd, const char *__old, int __newfd, 612825: const char *__new, unsigned int __flags) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int fclose (FILE *__stream); 612825: # 188 "/usr/include/stdio.h" 3 4 612825: extern FILE *tmpfile (void) 612825: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 612825: # 200 "/usr/include/stdio.h" 3 4 612825: extern FILE *tmpfile64 (void) 612825: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: extern char *tmpnam (char[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern char *tmpnam_r (char __s[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: # 222 "/usr/include/stdio.h" 3 4 612825: extern char *tempnam (const char *__dir, const char *__pfx) 612825: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int fflush (FILE *__stream); 612825: # 239 "/usr/include/stdio.h" 3 4 612825: extern int fflush_unlocked (FILE *__stream); 612825: # 249 "/usr/include/stdio.h" 3 4 612825: extern int fcloseall (void); 612825: # 258 "/usr/include/stdio.h" 3 4 612825: extern FILE *fopen (const char *__restrict __filename, 612825: const char *__restrict __modes) 612825: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern FILE *freopen (const char *__restrict __filename, 612825: const char *__restrict __modes, 612825: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 612825: # 283 "/usr/include/stdio.h" 3 4 612825: extern FILE *fopen64 (const char *__restrict __filename, 612825: const char *__restrict __modes) 612825: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 612825: extern FILE *freopen64 (const char *__restrict __filename, 612825: const char *__restrict __modes, 612825: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern FILE *fdopen (int __fd, const char *__modes) noexcept (true) 612825: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: extern FILE *fopencookie (void *__restrict __magic_cookie, 612825: const char *__restrict __modes, 612825: cookie_io_functions_t __io_funcs) noexcept (true) 612825: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) 612825: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) noexcept (true) 612825: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); 612825: # 328 "/usr/include/stdio.h" 3 4 612825: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) noexcept (true); 612825: 612825: 612825: 612825: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, 612825: int __modes, size_t __n) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, 612825: size_t __size) noexcept (true); 612825: 612825: 612825: extern void setlinebuf (FILE *__stream) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int fprintf (FILE *__restrict __stream, 612825: const char *__restrict __format, ...); 612825: 612825: 612825: 612825: 612825: extern int printf (const char *__restrict __format, ...); 612825: 612825: extern int sprintf (char *__restrict __s, 612825: const char *__restrict __format, ...) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, 612825: __gnuc_va_list __arg); 612825: 612825: 612825: 612825: 612825: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); 612825: 612825: extern int vsprintf (char *__restrict __s, const char *__restrict __format, 612825: __gnuc_va_list __arg) noexcept (true); 612825: 612825: 612825: 612825: extern int snprintf (char *__restrict __s, size_t __maxlen, 612825: const char *__restrict __format, ...) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); 612825: 612825: extern int vsnprintf (char *__restrict __s, size_t __maxlen, 612825: const char *__restrict __format, __gnuc_va_list __arg) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); 612825: 612825: 612825: 612825: 612825: 612825: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, 612825: __gnuc_va_list __arg) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 612825: extern int __asprintf (char **__restrict __ptr, 612825: const char *__restrict __fmt, ...) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 612825: extern int asprintf (char **__restrict __ptr, 612825: const char *__restrict __fmt, ...) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern int vdprintf (int __fd, const char *__restrict __fmt, 612825: __gnuc_va_list __arg) 612825: __attribute__ ((__format__ (__printf__, 2, 0))); 612825: extern int dprintf (int __fd, const char *__restrict __fmt, ...) 612825: __attribute__ ((__format__ (__printf__, 2, 3))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int fscanf (FILE *__restrict __stream, 612825: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); 612825: 612825: extern int sscanf (const char *__restrict __s, 612825: const char *__restrict __format, ...) noexcept (true); 612825: # 434 "/usr/include/stdio.h" 3 4 612825: extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf") 612825: 612825: __attribute__ ((__warn_unused_result__)); 612825: extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf") 612825: __attribute__ ((__warn_unused_result__)); 612825: extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc99_sscanf") 612825: 612825: ; 612825: # 459 "/usr/include/stdio.h" 3 4 612825: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, 612825: __gnuc_va_list __arg) 612825: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) 612825: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: extern int vsscanf (const char *__restrict __s, 612825: const char *__restrict __format, __gnuc_va_list __arg) 612825: noexcept (true) __attribute__ ((__format__ (__scanf__, 2, 0))); 612825: 612825: 612825: 612825: 612825: 612825: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf") 612825: 612825: 612825: 612825: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); 612825: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf") 612825: 612825: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); 612825: extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc99_vsscanf") 612825: 612825: 612825: 612825: __attribute__ ((__format__ (__scanf__, 2, 0))); 612825: # 513 "/usr/include/stdio.h" 3 4 612825: extern int fgetc (FILE *__stream); 612825: extern int getc (FILE *__stream); 612825: 612825: 612825: 612825: 612825: 612825: extern int getchar (void); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int getc_unlocked (FILE *__stream); 612825: extern int getchar_unlocked (void); 612825: # 538 "/usr/include/stdio.h" 3 4 612825: extern int fgetc_unlocked (FILE *__stream); 612825: # 549 "/usr/include/stdio.h" 3 4 612825: extern int fputc (int __c, FILE *__stream); 612825: extern int putc (int __c, FILE *__stream); 612825: 612825: 612825: 612825: 612825: 612825: extern int putchar (int __c); 612825: # 565 "/usr/include/stdio.h" 3 4 612825: extern int fputc_unlocked (int __c, FILE *__stream); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int putc_unlocked (int __c, FILE *__stream); 612825: extern int putchar_unlocked (int __c); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int getw (FILE *__stream); 612825: 612825: 612825: extern int putw (int __w, FILE *__stream); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 612825: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 612825: # 605 "/usr/include/stdio.h" 3 4 612825: extern char *gets (char *__s) __attribute__ ((__warn_unused_result__)) __attribute__ ((__deprecated__)); 612825: # 615 "/usr/include/stdio.h" 3 4 612825: extern char *fgets_unlocked (char *__restrict __s, int __n, 612825: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) 612825: __attribute__ ((__access__ (__write_only__, 1, 2))); 612825: # 632 "/usr/include/stdio.h" 3 4 612825: extern __ssize_t __getdelim (char **__restrict __lineptr, 612825: size_t *__restrict __n, int __delimiter, 612825: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 612825: extern __ssize_t getdelim (char **__restrict __lineptr, 612825: size_t *__restrict __n, int __delimiter, 612825: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern __ssize_t getline (char **__restrict __lineptr, 612825: size_t *__restrict __n, 612825: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int fputs (const char *__restrict __s, FILE *__restrict __stream); 612825: 612825: 612825: 612825: 612825: 612825: extern int puts (const char *__s); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int ungetc (int __c, FILE *__stream); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern size_t fread (void *__restrict __ptr, size_t __size, 612825: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern size_t fwrite (const void *__restrict __ptr, size_t __size, 612825: size_t __n, FILE *__restrict __s); 612825: # 691 "/usr/include/stdio.h" 3 4 612825: extern int fputs_unlocked (const char *__restrict __s, 612825: FILE *__restrict __stream); 612825: # 702 "/usr/include/stdio.h" 3 4 612825: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, 612825: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 612825: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, 612825: size_t __n, FILE *__restrict __stream); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int fseek (FILE *__stream, long int __off, int __whence); 612825: 612825: 612825: 612825: 612825: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern void rewind (FILE *__stream); 612825: # 736 "/usr/include/stdio.h" 3 4 612825: extern int fseeko (FILE *__stream, __off_t __off, int __whence); 612825: 612825: 612825: 612825: 612825: extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__)); 612825: # 760 "/usr/include/stdio.h" 3 4 612825: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); 612825: 612825: 612825: 612825: 612825: extern int fsetpos (FILE *__stream, const fpos_t *__pos); 612825: # 779 "/usr/include/stdio.h" 3 4 612825: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); 612825: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)); 612825: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); 612825: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); 612825: 612825: 612825: 612825: extern void clearerr (FILE *__stream) noexcept (true); 612825: 612825: extern int feof (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: extern int ferror (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: extern void clearerr_unlocked (FILE *__stream) noexcept (true); 612825: extern int feof_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: extern int ferror_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern void perror (const char *__s); 612825: 612825: 612825: 612825: 612825: extern int fileno (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: extern int fileno_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: # 823 "/usr/include/stdio.h" 3 4 612825: extern int pclose (FILE *__stream); 612825: 612825: 612825: 612825: 612825: 612825: extern FILE *popen (const char *__command, const char *__modes) 612825: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (pclose, 1))) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern char *ctermid (char *__s) noexcept (true) 612825: __attribute__ ((__access__ (__write_only__, 1))); 612825: 612825: 612825: 612825: 612825: 612825: extern char *cuserid (char *__s) 612825: __attribute__ ((__access__ (__write_only__, 1))); 612825: 612825: 612825: 612825: 612825: struct obstack; 612825: 612825: 612825: extern int obstack_printf (struct obstack *__restrict __obstack, 612825: const char *__restrict __format, ...) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))); 612825: extern int obstack_vprintf (struct obstack *__restrict __obstack, 612825: const char *__restrict __format, 612825: __gnuc_va_list __args) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern void flockfile (FILE *__stream) noexcept (true); 612825: 612825: 612825: 612825: extern int ftrylockfile (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: extern void funlockfile (FILE *__stream) noexcept (true); 612825: # 885 "/usr/include/stdio.h" 3 4 612825: extern int __uflow (FILE *); 612825: extern int __overflow (FILE *, int); 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/stdio2-decl.h" 1 3 4 612825: # 26 "/usr/include/aarch64-linux-gnu/bits/stdio2-decl.h" 3 4 612825: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, 612825: const char *__restrict __format, ...) noexcept (true) 612825: __attribute__ ((__access__ (__write_only__, 1, 3))); 612825: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, 612825: const char *__restrict __format, 612825: __gnuc_va_list __ap) noexcept (true) 612825: __attribute__ ((__access__ (__write_only__, 1, 3))); 612825: 612825: 612825: 612825: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, 612825: size_t __slen, const char *__restrict __format, 612825: ...) noexcept (true) 612825: __attribute__ ((__access__ (__write_only__, 1, 2))); 612825: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, 612825: size_t __slen, const char *__restrict __format, 612825: __gnuc_va_list __ap) noexcept (true) 612825: __attribute__ ((__access__ (__write_only__, 1, 2))); 612825: 612825: 612825: 612825: 612825: 612825: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, 612825: const char *__restrict __format, ...); 612825: extern int __printf_chk (int __flag, const char *__restrict __format, ...); 612825: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, 612825: const char *__restrict __format, __gnuc_va_list __ap); 612825: extern int __vprintf_chk (int __flag, const char *__restrict __format, 612825: __gnuc_va_list __ap); 612825: 612825: 612825: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, 612825: ...) __attribute__ ((__format__ (__printf__, 3, 4))); 612825: extern int __vdprintf_chk (int __fd, int __flag, 612825: const char *__restrict __fmt, __gnuc_va_list __arg) 612825: __attribute__ ((__format__ (__printf__, 3, 0))); 612825: 612825: 612825: 612825: 612825: extern int __asprintf_chk (char **__restrict __ptr, int __flag, 612825: const char *__restrict __fmt, ...) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); 612825: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, 612825: const char *__restrict __fmt, __gnuc_va_list __arg) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); 612825: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, 612825: int __flag, const char *__restrict __format, 612825: ...) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); 612825: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, 612825: int __flag, 612825: const char *__restrict __format, 612825: __gnuc_va_list __args) 612825: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); 612825: 612825: 612825: 612825: 612825: 612825: extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, 612825: FILE *__restrict __stream) 612825: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))); 612825: 612825: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, 612825: size_t __size, size_t __n, 612825: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, 612825: int __n, FILE *__restrict __stream) 612825: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))); 612825: 612825: 612825: 612825: 612825: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, 612825: size_t __size, size_t __n, 612825: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 612825: # 891 "/usr/include/stdio.h" 2 3 4 612825: # 902 "/usr/include/stdio.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/stdio.h" 1 3 4 612825: # 46 "/usr/include/aarch64-linux-gnu/bits/stdio.h" 3 4 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: getchar (void) 612825: { 612825: return getc (stdin); 612825: } 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: fgetc_unlocked (FILE *__fp) 612825: { 612825: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: getc_unlocked (FILE *__fp) 612825: { 612825: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); 612825: } 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: getchar_unlocked (void) 612825: { 612825: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); 612825: } 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: putchar (int __c) 612825: { 612825: return putc (__c, stdout); 612825: } 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: fputc_unlocked (int __c, FILE *__stream) 612825: { 612825: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: putc_unlocked (int __c, FILE *__stream) 612825: { 612825: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); 612825: } 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: putchar_unlocked (int __c) 612825: { 612825: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t 612825: getline (char **__lineptr, size_t *__n, FILE *__stream) 612825: { 612825: return __getdelim (__lineptr, __n, '\n', __stream); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) noexcept (true) 612825: { 612825: return (((__stream)->_flags & 0x0010) != 0); 612825: } 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) noexcept (true) 612825: { 612825: return (((__stream)->_flags & 0x0020) != 0); 612825: } 612825: # 903 "/usr/include/stdio.h" 2 3 4 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" 1 3 4 612825: # 27 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" 3 4 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) noexcept (true) 612825: { 612825: return __builtin___sprintf_chk (__s, 2 - 1, 612825: __builtin_object_size (__s, 2 > 1), __fmt, 612825: __builtin_va_arg_pack ()); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) vsprintf (char *__restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 612825: 612825: { 612825: return __builtin___vsprintf_chk (__s, 2 - 1, 612825: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 612825: } 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) noexcept (true) 612825: 612825: { 612825: return __builtin___snprintf_chk (__s, __n, 2 - 1, 612825: __builtin_object_size (__s, 2 > 1), __fmt, 612825: __builtin_va_arg_pack ()); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) vsnprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 612825: 612825: { 612825: return __builtin___vsnprintf_chk (__s, __n, 2 - 1, 612825: __builtin_object_size (__s, 2 > 1), __fmt, __ap); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) 612825: { 612825: return __fprintf_chk (__stream, 2 - 1, __fmt, 612825: __builtin_va_arg_pack ()); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: printf (const char *__restrict __fmt, ...) 612825: { 612825: return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: vprintf (const char *__restrict __fmt, __gnuc_va_list __ap) 612825: { 612825: 612825: return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); 612825: 612825: 612825: 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: vfprintf (FILE *__restrict __stream, 612825: const char *__restrict __fmt, __gnuc_va_list __ap) 612825: { 612825: return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); 612825: } 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: dprintf (int __fd, const char *__restrict __fmt, ...) 612825: { 612825: return __dprintf_chk (__fd, 2 - 1, __fmt, 612825: __builtin_va_arg_pack ()); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) 612825: { 612825: return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); 612825: } 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) 612825: { 612825: return __asprintf_chk (__ptr, 2 - 1, __fmt, 612825: __builtin_va_arg_pack ()); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) 612825: 612825: { 612825: return __asprintf_chk (__ptr, 2 - 1, __fmt, 612825: __builtin_va_arg_pack ()); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) noexcept (true) 612825: 612825: { 612825: return __obstack_printf_chk (__obstack, 2 - 1, __fmt, 612825: __builtin_va_arg_pack ()); 612825: } 612825: # 165 "/usr/include/aarch64-linux-gnu/bits/stdio2.h" 3 4 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 612825: 612825: { 612825: return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 612825: 612825: { 612825: return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, 612825: __ap); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern char *__gets_warn (char *__str) __asm__ ("" "gets") 612825: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * 612825: gets (char *__str) 612825: { 612825: if (__builtin_object_size (__str, 2 > 1) != (size_t) -1) 612825: return __gets_chk (__str, __builtin_object_size (__str, 2 > 1)); 612825: return __gets_warn (__str); 612825: } 612825: 612825: 612825: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 612825: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) char * 612825: fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 612825: { 612825: size_t sz = __builtin_object_size (__s, 2 > 1); 612825: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))) && (((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))))) 612825: return __fgets_alias (__s, __n, __stream); 612825: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (sizeof (char)))) && !(((long unsigned int) (__n)) <= (sz) / (sizeof (char))))) 612825: return __fgets_chk_warn (__s, sz, __n, __stream); 612825: return __fgets_chk (__s, sz, __n, __stream); 612825: } 612825: 612825: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)); 612825: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") 612825: 612825: 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 612825: fread (void *__restrict __ptr, size_t __size, size_t __n, 612825: FILE *__restrict __stream) 612825: { 612825: size_t sz = __builtin_object_size (__ptr, 0); 612825: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((__size)))) && (((long unsigned int) (__n)) <= ((sz)) / ((__size)))))) 612825: return __fread_alias (__ptr, __size, __n, __stream); 612825: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (__size))) && !(((long unsigned int) (__n)) <= (sz) / (__size)))) 612825: return __fread_chk_warn (__ptr, sz, __size, __n, __stream); 612825: return __fread_chk (__ptr, sz, __size, __n, __stream); 612825: } 612825: 612825: 612825: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); 612825: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) char * 612825: fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) 612825: { 612825: size_t sz = __builtin_object_size (__s, 2 > 1); 612825: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))) && (((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))))) 612825: return __fgets_unlocked_alias (__s, __n, __stream); 612825: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (sizeof (char)))) && !(((long unsigned int) (__n)) <= (sz) / (sizeof (char))))) 612825: return __fgets_unlocked_chk_warn (__s, sz, __n, __stream); 612825: return __fgets_unlocked_chk (__s, sz, __n, __stream); 612825: } 612825: 612825: 612825: 612825: 612825: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)); 612825: extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk") 612825: 612825: 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 612825: fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, 612825: FILE *__restrict __stream) 612825: { 612825: size_t sz = __builtin_object_size (__ptr, 0); 612825: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((__size)))) && (((long unsigned int) (__n)) <= ((sz)) / ((__size)))))) 612825: { 612825: 612825: if (__builtin_constant_p (__size) 612825: && __builtin_constant_p (__n) 612825: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) 612825: && __size * __n <= 8) 612825: { 612825: size_t __cnt = __size * __n; 612825: char *__cptr = (char *) __ptr; 612825: if (__cnt == 0) 612825: return 0; 612825: 612825: for (; __cnt > 0; --__cnt) 612825: { 612825: int __c = getc_unlocked (__stream); 612825: if (__c == (-1)) 612825: break; 612825: *__cptr++ = __c; 612825: } 612825: return (__cptr - (char *) __ptr) / __size; 612825: } 612825: 612825: return __fread_unlocked_alias (__ptr, __size, __n, __stream); 612825: } 612825: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (__size))) && !(((long unsigned int) (__n)) <= (sz) / (__size)))) 612825: return __fread_unlocked_chk_warn (__ptr, sz, __size, __n, __stream); 612825: return __fread_unlocked_chk (__ptr, sz, __size, __n, __stream); 612825: 612825: } 612825: # 907 "/usr/include/stdio.h" 2 3 4 612825: 612825: 612825: } 612825: # 43 "/usr/include/c++/12/cstdio" 2 3 612825: # 96 "/usr/include/c++/12/cstdio" 3 612825: namespace std 612825: { 612825: using ::FILE; 612825: using ::fpos_t; 612825: 612825: using ::clearerr; 612825: using ::fclose; 612825: using ::feof; 612825: using ::ferror; 612825: using ::fflush; 612825: using ::fgetc; 612825: using ::fgetpos; 612825: using ::fgets; 612825: using ::fopen; 612825: using ::fprintf; 612825: using ::fputc; 612825: using ::fputs; 612825: using ::fread; 612825: using ::freopen; 612825: using ::fscanf; 612825: using ::fseek; 612825: using ::fsetpos; 612825: using ::ftell; 612825: using ::fwrite; 612825: using ::getc; 612825: using ::getchar; 612825: 612825: 612825: using ::gets; 612825: 612825: using ::perror; 612825: using ::printf; 612825: using ::putc; 612825: using ::putchar; 612825: using ::puts; 612825: using ::remove; 612825: using ::rename; 612825: using ::rewind; 612825: using ::scanf; 612825: using ::setbuf; 612825: using ::setvbuf; 612825: using ::sprintf; 612825: using ::sscanf; 612825: using ::tmpfile; 612825: 612825: using ::tmpnam; 612825: 612825: using ::ungetc; 612825: using ::vfprintf; 612825: using ::vprintf; 612825: using ::vsprintf; 612825: } 612825: # 157 "/usr/include/c++/12/cstdio" 3 612825: namespace __gnu_cxx 612825: { 612825: # 175 "/usr/include/c++/12/cstdio" 3 612825: using ::snprintf; 612825: using ::vfscanf; 612825: using ::vscanf; 612825: using ::vsnprintf; 612825: using ::vsscanf; 612825: 612825: } 612825: 612825: namespace std 612825: { 612825: using ::__gnu_cxx::snprintf; 612825: using ::__gnu_cxx::vfscanf; 612825: using ::__gnu_cxx::vscanf; 612825: using ::__gnu_cxx::vsnprintf; 612825: using ::__gnu_cxx::vsscanf; 612825: } 612825: # 26 "third_party/butteraugli/butteraugli/butteraugli.h" 2 612825: # 1 "/usr/include/c++/12/cstdlib" 1 3 612825: # 39 "/usr/include/c++/12/cstdlib" 3 612825: 612825: # 40 "/usr/include/c++/12/cstdlib" 3 612825: # 121 "/usr/include/c++/12/cstdlib" 3 612825: extern "C++" 612825: { 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: using ::div_t; 612825: using ::ldiv_t; 612825: 612825: using ::abort; 612825: 612825: 612825: 612825: using ::atexit; 612825: 612825: 612825: using ::at_quick_exit; 612825: 612825: 612825: using ::atof; 612825: using ::atoi; 612825: using ::atol; 612825: using ::bsearch; 612825: using ::calloc; 612825: using ::div; 612825: using ::exit; 612825: using ::free; 612825: using ::getenv; 612825: using ::labs; 612825: using ::ldiv; 612825: using ::malloc; 612825: 612825: using ::mblen; 612825: using ::mbstowcs; 612825: using ::mbtowc; 612825: 612825: using ::qsort; 612825: 612825: 612825: using ::quick_exit; 612825: 612825: 612825: using ::rand; 612825: using ::realloc; 612825: using ::srand; 612825: using ::strtod; 612825: using ::strtol; 612825: using ::strtoul; 612825: using ::system; 612825: 612825: using ::wcstombs; 612825: using ::wctomb; 612825: 612825: 612825: 612825: inline ldiv_t 612825: div(long __i, long __j) { return ldiv(__i, __j); } 612825: 612825: 612825: 612825: 612825: } 612825: # 195 "/usr/include/c++/12/cstdlib" 3 612825: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: using ::lldiv_t; 612825: 612825: 612825: 612825: 612825: 612825: using ::_Exit; 612825: 612825: 612825: 612825: using ::llabs; 612825: 612825: inline lldiv_t 612825: div(long long __n, long long __d) 612825: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } 612825: 612825: using ::lldiv; 612825: # 227 "/usr/include/c++/12/cstdlib" 3 612825: using ::atoll; 612825: using ::strtoll; 612825: using ::strtoull; 612825: 612825: using ::strtof; 612825: using ::strtold; 612825: 612825: 612825: } 612825: 612825: namespace std 612825: { 612825: 612825: using ::__gnu_cxx::lldiv_t; 612825: 612825: using ::__gnu_cxx::_Exit; 612825: 612825: using ::__gnu_cxx::llabs; 612825: using ::__gnu_cxx::div; 612825: using ::__gnu_cxx::lldiv; 612825: 612825: using ::__gnu_cxx::atoll; 612825: using ::__gnu_cxx::strtof; 612825: using ::__gnu_cxx::strtoll; 612825: using ::__gnu_cxx::strtoull; 612825: using ::__gnu_cxx::strtold; 612825: } 612825: 612825: 612825: 612825: } 612825: # 27 "third_party/butteraugli/butteraugli/butteraugli.h" 2 612825: # 1 "/usr/include/c++/12/cstring" 1 3 612825: # 39 "/usr/include/c++/12/cstring" 3 612825: 612825: # 40 "/usr/include/c++/12/cstring" 3 612825: 612825: 612825: # 1 "/usr/include/string.h" 1 3 4 612825: # 26 "/usr/include/string.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 612825: # 27 "/usr/include/string.h" 2 3 4 612825: 612825: extern "C" { 612825: 612825: 612825: 612825: 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 612825: # 34 "/usr/include/string.h" 2 3 4 612825: # 43 "/usr/include/string.h" 3 4 612825: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, 612825: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern void *memmove (void *__dest, const void *__src, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: 612825: 612825: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, 612825: int __c, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 4))); 612825: 612825: 612825: 612825: 612825: extern void *memset (void *__s, int __c, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int memcmp (const void *__s1, const void *__s2, size_t __n) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: # 80 "/usr/include/string.h" 3 4 612825: extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: extern "C++" 612825: { 612825: extern void *memchr (void *__s, int __c, size_t __n) 612825: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: extern const void *memchr (const void *__s, int __c, size_t __n) 612825: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * 612825: memchr (void *__s, int __c, size_t __n) noexcept (true) 612825: { 612825: return __builtin_memchr (__s, __c, __n); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * 612825: memchr (const void *__s, int __c, size_t __n) noexcept (true) 612825: { 612825: return __builtin_memchr (__s, __c, __n); 612825: } 612825: 612825: } 612825: # 115 "/usr/include/string.h" 3 4 612825: extern "C++" void *rawmemchr (void *__s, int __c) 612825: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: extern "C++" const void *rawmemchr (const void *__s, int __c) 612825: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" void *memrchr (void *__s, int __c, size_t __n) 612825: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) 612825: __attribute__ ((__access__ (__read_only__, 1, 3))); 612825: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) 612825: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) 612825: __attribute__ ((__access__ (__read_only__, 1, 3))); 612825: # 141 "/usr/include/string.h" 3 4 612825: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: extern char *strncpy (char *__restrict __dest, 612825: const char *__restrict __src, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern char *strcat (char *__restrict __dest, const char *__restrict __src) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: extern char *strncat (char *__restrict __dest, const char *__restrict __src, 612825: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int strcmp (const char *__s1, const char *__s2) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: extern int strncmp (const char *__s1, const char *__s2, size_t __n) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int strcoll (const char *__s1, const char *__s2) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: extern size_t strxfrm (char *__restrict __dest, 612825: const char *__restrict __src, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 1, 3))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 612825: 612825: 612825: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, 612825: locale_t __l) noexcept (true) __attribute__ ((__nonnull__ (2, 4))) 612825: __attribute__ ((__access__ (__write_only__, 1, 3))); 612825: 612825: 612825: 612825: 612825: 612825: extern char *strdup (const char *__s) 612825: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern char *strndup (const char *__string, size_t __n) 612825: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 612825: # 224 "/usr/include/string.h" 3 4 612825: extern "C++" 612825: { 612825: extern char *strchr (char *__s, int __c) 612825: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: extern const char *strchr (const char *__s, int __c) 612825: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 612825: strchr (char *__s, int __c) noexcept (true) 612825: { 612825: return __builtin_strchr (__s, __c); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 612825: strchr (const char *__s, int __c) noexcept (true) 612825: { 612825: return __builtin_strchr (__s, __c); 612825: } 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" 612825: { 612825: extern char *strrchr (char *__s, int __c) 612825: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: extern const char *strrchr (const char *__s, int __c) 612825: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 612825: strrchr (char *__s, int __c) noexcept (true) 612825: { 612825: return __builtin_strrchr (__s, __c); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 612825: strrchr (const char *__s, int __c) noexcept (true) 612825: { 612825: return __builtin_strrchr (__s, __c); 612825: } 612825: 612825: } 612825: # 281 "/usr/include/string.h" 3 4 612825: extern "C++" char *strchrnul (char *__s, int __c) 612825: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: extern "C++" const char *strchrnul (const char *__s, int __c) 612825: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: # 293 "/usr/include/string.h" 3 4 612825: extern size_t strcspn (const char *__s, const char *__reject) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern size_t strspn (const char *__s, const char *__accept) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern "C++" 612825: { 612825: extern char *strpbrk (char *__s, const char *__accept) 612825: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: extern const char *strpbrk (const char *__s, const char *__accept) 612825: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 612825: strpbrk (char *__s, const char *__accept) noexcept (true) 612825: { 612825: return __builtin_strpbrk (__s, __accept); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 612825: strpbrk (const char *__s, const char *__accept) noexcept (true) 612825: { 612825: return __builtin_strpbrk (__s, __accept); 612825: } 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" 612825: { 612825: extern char *strstr (char *__haystack, const char *__needle) 612825: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: extern const char *strstr (const char *__haystack, const char *__needle) 612825: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 612825: strstr (char *__haystack, const char *__needle) noexcept (true) 612825: { 612825: return __builtin_strstr (__haystack, __needle); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 612825: strstr (const char *__haystack, const char *__needle) noexcept (true) 612825: { 612825: return __builtin_strstr (__haystack, __needle); 612825: } 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern char *strtok (char *__restrict __s, const char *__restrict __delim) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: extern char *__strtok_r (char *__restrict __s, 612825: const char *__restrict __delim, 612825: char **__restrict __save_ptr) 612825: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 612825: 612825: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, 612825: char **__restrict __save_ptr) 612825: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" char *strcasestr (char *__haystack, const char *__needle) 612825: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: extern "C++" const char *strcasestr (const char *__haystack, 612825: const char *__needle) 612825: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: # 389 "/usr/include/string.h" 3 4 612825: extern void *memmem (const void *__haystack, size_t __haystacklen, 612825: const void *__needle, size_t __needlelen) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))) 612825: __attribute__ ((__access__ (__read_only__, 1, 2))) 612825: __attribute__ ((__access__ (__read_only__, 3, 4))); 612825: 612825: 612825: 612825: extern void *__mempcpy (void *__restrict __dest, 612825: const void *__restrict __src, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: extern void *mempcpy (void *__restrict __dest, 612825: const void *__restrict __src, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: 612825: extern size_t strlen (const char *__s) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: extern size_t strnlen (const char *__string, size_t __maxlen) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: extern char *strerror (int __errnum) noexcept (true); 612825: # 444 "/usr/include/string.h" 3 4 612825: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); 612825: 612825: 612825: 612825: 612825: extern const char *strerrordesc_np (int __err) noexcept (true); 612825: 612825: extern const char *strerrorname_np (int __err) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern char *strerror_l (int __errnum, locale_t __l) noexcept (true); 612825: 612825: 612825: 612825: # 1 "/usr/include/strings.h" 1 3 4 612825: # 23 "/usr/include/strings.h" 3 4 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 612825: # 24 "/usr/include/strings.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C" { 612825: 612825: 612825: 612825: extern int bcmp (const void *__s1, const void *__s2, size_t __n) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern void bcopy (const void *__src, void *__dest, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern void bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern "C++" 612825: { 612825: extern char *index (char *__s, int __c) 612825: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: extern const char *index (const char *__s, int __c) 612825: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 612825: index (char *__s, int __c) noexcept (true) 612825: { 612825: return __builtin_index (__s, __c); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 612825: index (const char *__s, int __c) noexcept (true) 612825: { 612825: return __builtin_index (__s, __c); 612825: } 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" 612825: { 612825: extern char *rindex (char *__s, int __c) 612825: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: extern const char *rindex (const char *__s, int __c) 612825: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * 612825: rindex (char *__s, int __c) noexcept (true) 612825: { 612825: return __builtin_rindex (__s, __c); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * 612825: rindex (const char *__s, int __c) noexcept (true) 612825: { 612825: return __builtin_rindex (__s, __c); 612825: } 612825: 612825: } 612825: # 104 "/usr/include/strings.h" 3 4 612825: extern int ffs (int __i) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: 612825: extern int ffsl (long int __l) noexcept (true) __attribute__ ((__const__)); 612825: __extension__ extern int ffsll (long long int __ll) 612825: noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: extern int strcasecmp (const char *__s1, const char *__s2) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); 612825: 612825: 612825: 612825: extern int strncasecmp_l (const char *__s1, const char *__s2, 612825: size_t __n, locale_t __loc) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); 612825: 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/strings_fortified.h" 1 3 4 612825: # 22 "/usr/include/aarch64-linux-gnu/bits/strings_fortified.h" 3 4 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 612825: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) noexcept (true) 612825: { 612825: (void) __builtin___memmove_chk (__dest, __src, __len, 612825: __builtin_object_size (__dest, 0)); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 612825: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) noexcept (true) 612825: { 612825: (void) __builtin___memset_chk (__dest, '\0', __len, 612825: __builtin_object_size (__dest, 0)); 612825: } 612825: # 145 "/usr/include/strings.h" 2 3 4 612825: # 463 "/usr/include/string.h" 2 3 4 612825: 612825: 612825: 612825: extern void explicit_bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) 612825: __attribute__ ((__access__ (__write_only__, 1, 2))); 612825: 612825: 612825: 612825: extern char *strsep (char **__restrict __stringp, 612825: const char *__restrict __delim) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: 612825: extern char *strsignal (int __sig) noexcept (true); 612825: 612825: 612825: 612825: extern const char *sigabbrev_np (int __sig) noexcept (true); 612825: 612825: 612825: extern const char *sigdescr_np (int __sig) noexcept (true); 612825: 612825: 612825: 612825: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: extern char *__stpncpy (char *__restrict __dest, 612825: const char *__restrict __src, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: extern char *stpncpy (char *__restrict __dest, 612825: const char *__restrict __src, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: 612825: extern int strverscmp (const char *__s1, const char *__s2) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern char *strfry (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern void *memfrob (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) 612825: __attribute__ ((__access__ (__read_write__, 1, 2))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" char *basename (char *__filename) 612825: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); 612825: extern "C++" const char *basename (const char *__filename) 612825: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); 612825: # 535 "/usr/include/string.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 1 3 4 612825: # 25 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 3 4 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 612825: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) 612825: 612825: { 612825: return __builtin___memcpy_chk (__dest, __src, __len, 612825: __builtin_object_size (__dest, 0)); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 612825: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) noexcept (true) 612825: { 612825: return __builtin___memmove_chk (__dest, __src, __len, 612825: __builtin_object_size (__dest, 0)); 612825: } 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 612825: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) 612825: 612825: { 612825: return __builtin___mempcpy_chk (__dest, __src, __len, 612825: __builtin_object_size (__dest, 0)); 612825: } 612825: # 56 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 3 4 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * 612825: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) noexcept (true) 612825: { 612825: return __builtin___memset_chk (__dest, __ch, __len, 612825: __builtin_object_size (__dest, 0)); 612825: } 612825: 612825: 612825: 612825: 612825: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void 612825: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) noexcept (true) 612825: { 612825: __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0)); 612825: } 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 612825: __attribute__ ((__leaf__)) strcpy (char *__restrict __dest, const char *__restrict __src) noexcept (true) 612825: { 612825: return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 612825: } 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 612825: __attribute__ ((__leaf__)) stpcpy (char *__restrict __dest, const char *__restrict __src) noexcept (true) 612825: { 612825: return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 612825: } 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 612825: __attribute__ ((__leaf__)) strncpy (char *__restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) 612825: 612825: { 612825: return __builtin___strncpy_chk (__dest, __src, __len, 612825: __builtin_object_size (__dest, 2 > 1)); 612825: } 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 612825: __attribute__ ((__leaf__)) stpncpy (char *__dest, const char *__src, size_t __n) noexcept (true) 612825: { 612825: return __builtin___stpncpy_chk (__dest, __src, __n, 612825: __builtin_object_size (__dest, 2 > 1)); 612825: } 612825: # 127 "/usr/include/aarch64-linux-gnu/bits/string_fortified.h" 3 4 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 612825: __attribute__ ((__leaf__)) strcat (char *__restrict __dest, const char *__restrict __src) noexcept (true) 612825: { 612825: return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); 612825: } 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * 612825: __attribute__ ((__leaf__)) strncat (char *__restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) 612825: 612825: { 612825: return __builtin___strncat_chk (__dest, __src, __len, 612825: __builtin_object_size (__dest, 2 > 1)); 612825: } 612825: # 536 "/usr/include/string.h" 2 3 4 612825: 612825: 612825: 612825: } 612825: # 43 "/usr/include/c++/12/cstring" 2 3 612825: # 71 "/usr/include/c++/12/cstring" 3 612825: extern "C++" 612825: { 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: using ::memchr; 612825: using ::memcmp; 612825: using ::memcpy; 612825: using ::memmove; 612825: using ::memset; 612825: using ::strcat; 612825: using ::strcmp; 612825: using ::strcoll; 612825: using ::strcpy; 612825: using ::strcspn; 612825: using ::strerror; 612825: using ::strlen; 612825: using ::strncat; 612825: using ::strncmp; 612825: using ::strncpy; 612825: using ::strspn; 612825: using ::strtok; 612825: using ::strxfrm; 612825: using ::strchr; 612825: using ::strpbrk; 612825: using ::strrchr; 612825: using ::strstr; 612825: # 122 "/usr/include/c++/12/cstring" 3 612825: 612825: } 612825: } 612825: # 28 "third_party/butteraugli/butteraugli/butteraugli.h" 2 612825: # 1 "/usr/include/c++/12/memory" 1 3 612825: # 47 "/usr/include/c++/12/memory" 3 612825: 612825: # 48 "/usr/include/c++/12/memory" 3 612825: # 63 "/usr/include/c++/12/memory" 3 612825: # 1 "/usr/include/c++/12/bits/stl_algobase.h" 1 3 612825: # 60 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: # 1 "/usr/include/c++/12/bits/functexcept.h" 1 3 612825: # 40 "/usr/include/c++/12/bits/functexcept.h" 3 612825: # 1 "/usr/include/c++/12/bits/exception_defines.h" 1 3 612825: # 41 "/usr/include/c++/12/bits/functexcept.h" 2 3 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: void 612825: __throw_bad_exception(void) __attribute__((__noreturn__)); 612825: 612825: 612825: void 612825: __throw_bad_alloc(void) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_bad_array_new_length(void) __attribute__((__noreturn__)); 612825: 612825: 612825: void 612825: __throw_bad_cast(void) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_bad_typeid(void) __attribute__((__noreturn__)); 612825: 612825: 612825: void 612825: __throw_logic_error(const char*) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_domain_error(const char*) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_invalid_argument(const char*) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_length_error(const char*) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_out_of_range(const char*) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__)) 612825: __attribute__((__format__(__gnu_printf__, 1, 2))); 612825: 612825: void 612825: __throw_runtime_error(const char*) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_range_error(const char*) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_overflow_error(const char*) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_underflow_error(const char*) __attribute__((__noreturn__)); 612825: 612825: 612825: void 612825: __throw_ios_failure(const char*) __attribute__((__noreturn__)); 612825: 612825: void 612825: __throw_ios_failure(const char*, int) __attribute__((__noreturn__)); 612825: 612825: 612825: void 612825: __throw_system_error(int) __attribute__((__noreturn__)); 612825: 612825: 612825: void 612825: __throw_future_error(int) __attribute__((__noreturn__)); 612825: 612825: 612825: void 612825: __throw_bad_function_call() __attribute__((__noreturn__)); 612825: 612825: 612825: } 612825: # 61 "/usr/include/c++/12/bits/stl_algobase.h" 2 3 612825: 612825: 612825: # 1 "/usr/include/c++/12/ext/numeric_traits.h" 1 3 612825: # 32 "/usr/include/c++/12/ext/numeric_traits.h" 3 612825: 612825: # 33 "/usr/include/c++/12/ext/numeric_traits.h" 3 612825: 612825: 612825: 612825: 612825: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 50 "/usr/include/c++/12/ext/numeric_traits.h" 3 612825: template 612825: struct __is_integer_nonstrict 612825: : public std::__is_integer<_Tp> 612825: { 612825: using std::__is_integer<_Tp>::__value; 612825: 612825: 612825: enum { __width = __value ? sizeof(_Tp) * 8 : 0 }; 612825: }; 612825: 612825: template 612825: struct __numeric_traits_integer 612825: { 612825: 612825: static_assert(__is_integer_nonstrict<_Value>::__value, 612825: "invalid specialization"); 612825: 612825: 612825: 612825: 612825: static const bool __is_signed = (_Value)(-1) < 0; 612825: static const int __digits 612825: = __is_integer_nonstrict<_Value>::__width - __is_signed; 612825: 612825: 612825: static const _Value __max = __is_signed 612825: ? (((((_Value)1 << (__digits - 1)) - 1) << 1) + 1) 612825: : ~(_Value)0; 612825: static const _Value __min = __is_signed ? -__max - 1 : (_Value)0; 612825: }; 612825: 612825: template 612825: const _Value __numeric_traits_integer<_Value>::__min; 612825: 612825: template 612825: const _Value __numeric_traits_integer<_Value>::__max; 612825: 612825: template 612825: const bool __numeric_traits_integer<_Value>::__is_signed; 612825: 612825: template 612825: const int __numeric_traits_integer<_Value>::__digits; 612825: # 130 "/usr/include/c++/12/ext/numeric_traits.h" 3 612825: __extension__ template<> struct __is_integer_nonstrict<__int128> { enum { __value = 1 }; typedef std::__true_type __type; enum { __width = 128 }; }; __extension__ template<> struct __is_integer_nonstrict { enum { __value = 1 }; typedef std::__true_type __type; enum { __width = 128 }; }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: using __int_traits = __numeric_traits_integer<_Tp>; 612825: # 157 "/usr/include/c++/12/ext/numeric_traits.h" 3 612825: template 612825: struct __numeric_traits_floating 612825: { 612825: 612825: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 113) * 643L / 2136); 612825: 612825: 612825: static const bool __is_signed = true; 612825: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 33); 612825: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932); 612825: }; 612825: 612825: template 612825: const int __numeric_traits_floating<_Value>::__max_digits10; 612825: 612825: template 612825: const bool __numeric_traits_floating<_Value>::__is_signed; 612825: 612825: template 612825: const int __numeric_traits_floating<_Value>::__digits10; 612825: 612825: template 612825: const int __numeric_traits_floating<_Value>::__max_exponent10; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct __numeric_traits 612825: : public __numeric_traits_integer<_Value> 612825: { }; 612825: 612825: template<> 612825: struct __numeric_traits 612825: : public __numeric_traits_floating 612825: { }; 612825: 612825: template<> 612825: struct __numeric_traits 612825: : public __numeric_traits_floating 612825: { }; 612825: 612825: template<> 612825: struct __numeric_traits 612825: : public __numeric_traits_floating 612825: { }; 612825: # 238 "/usr/include/c++/12/ext/numeric_traits.h" 3 612825: 612825: } 612825: # 64 "/usr/include/c++/12/bits/stl_algobase.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_pair.h" 1 3 612825: # 60 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: # 1 "/usr/include/c++/12/type_traits" 1 3 612825: # 32 "/usr/include/c++/12/type_traits" 3 612825: 612825: # 33 "/usr/include/c++/12/type_traits" 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: template 612825: class reference_wrapper; 612825: # 61 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct integral_constant 612825: { 612825: static constexpr _Tp value = __v; 612825: typedef _Tp value_type; 612825: typedef integral_constant<_Tp, __v> type; 612825: constexpr operator value_type() const noexcept { return value; } 612825: 612825: 612825: 612825: 612825: 612825: 612825: }; 612825: 612825: 612825: template 612825: constexpr _Tp integral_constant<_Tp, __v>::value; 612825: 612825: 612825: 612825: using true_type = integral_constant; 612825: 612825: 612825: using false_type = integral_constant; 612825: 612825: 612825: 612825: template 612825: using __bool_constant = integral_constant; 612825: # 103 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct __conditional 612825: { 612825: template 612825: using type = _Tp; 612825: }; 612825: 612825: template<> 612825: struct __conditional 612825: { 612825: template 612825: using type = _Up; 612825: }; 612825: 612825: 612825: template 612825: using __conditional_t 612825: = typename __conditional<_Cond>::template type<_If, _Else>; 612825: 612825: 612825: template 612825: struct __type_identity 612825: { using type = _Type; }; 612825: 612825: template 612825: using __type_identity_t = typename __type_identity<_Tp>::type; 612825: 612825: template 612825: struct __or_; 612825: 612825: template<> 612825: struct __or_<> 612825: : public false_type 612825: { }; 612825: 612825: template 612825: struct __or_<_B1> 612825: : public _B1 612825: { }; 612825: 612825: template 612825: struct __or_<_B1, _B2> 612825: : public __conditional_t<_B1::value, _B1, _B2> 612825: { }; 612825: 612825: template 612825: struct __or_<_B1, _B2, _B3, _Bn...> 612825: : public __conditional_t<_B1::value, _B1, __or_<_B2, _B3, _Bn...>> 612825: { }; 612825: 612825: template 612825: struct __and_; 612825: 612825: template<> 612825: struct __and_<> 612825: : public true_type 612825: { }; 612825: 612825: template 612825: struct __and_<_B1> 612825: : public _B1 612825: { }; 612825: 612825: template 612825: struct __and_<_B1, _B2> 612825: : public __conditional_t<_B1::value, _B2, _B1> 612825: { }; 612825: 612825: template 612825: struct __and_<_B1, _B2, _B3, _Bn...> 612825: : public __conditional_t<_B1::value, __and_<_B2, _B3, _Bn...>, _B1> 612825: { }; 612825: 612825: template 612825: struct __not_ 612825: : public __bool_constant 612825: { }; 612825: # 224 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct is_reference; 612825: template 612825: struct is_function; 612825: template 612825: struct is_void; 612825: template 612825: struct remove_cv; 612825: template 612825: struct is_const; 612825: 612825: 612825: template 612825: struct __is_array_unknown_bounds; 612825: 612825: 612825: 612825: 612825: template 612825: constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) 612825: { return {}; } 612825: 612825: template 612825: constexpr typename __or_< 612825: is_reference<_NestedType>, 612825: is_function<_NestedType>, 612825: is_void<_NestedType>, 612825: __is_array_unknown_bounds<_NestedType> 612825: >::type __is_complete_or_unbounded(_TypeIdentity) 612825: { return {}; } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct __success_type 612825: { typedef _Tp type; }; 612825: 612825: struct __failure_type 612825: { }; 612825: 612825: 612825: template 612825: using __remove_cv_t = typename remove_cv<_Tp>::type; 612825: 612825: 612825: 612825: template 612825: struct __is_void_helper 612825: : public false_type { }; 612825: 612825: template<> 612825: struct __is_void_helper 612825: : public true_type { }; 612825: 612825: 612825: 612825: template 612825: struct is_void 612825: : public __is_void_helper<__remove_cv_t<_Tp>>::type 612825: { }; 612825: 612825: 612825: template 612825: struct __is_integral_helper 612825: : public false_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: 612825: 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_integral_helper 612825: : public true_type { }; 612825: # 412 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct is_integral 612825: : public __is_integral_helper<__remove_cv_t<_Tp>>::type 612825: { }; 612825: 612825: 612825: template 612825: struct __is_floating_point_helper 612825: : public false_type { }; 612825: 612825: template<> 612825: struct __is_floating_point_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_floating_point_helper 612825: : public true_type { }; 612825: 612825: template<> 612825: struct __is_floating_point_helper 612825: : public true_type { }; 612825: # 442 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct is_floating_point 612825: : public __is_floating_point_helper<__remove_cv_t<_Tp>>::type 612825: { }; 612825: 612825: 612825: template 612825: struct is_array 612825: : public false_type { }; 612825: 612825: template 612825: struct is_array<_Tp[_Size]> 612825: : public true_type { }; 612825: 612825: template 612825: struct is_array<_Tp[]> 612825: : public true_type { }; 612825: 612825: template 612825: struct __is_pointer_helper 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_pointer_helper<_Tp*> 612825: : public true_type { }; 612825: 612825: 612825: template 612825: struct is_pointer 612825: : public __is_pointer_helper<__remove_cv_t<_Tp>>::type 612825: { }; 612825: 612825: 612825: template 612825: struct is_lvalue_reference 612825: : public false_type { }; 612825: 612825: template 612825: struct is_lvalue_reference<_Tp&> 612825: : public true_type { }; 612825: 612825: 612825: template 612825: struct is_rvalue_reference 612825: : public false_type { }; 612825: 612825: template 612825: struct is_rvalue_reference<_Tp&&> 612825: : public true_type { }; 612825: 612825: template 612825: struct __is_member_object_pointer_helper 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_member_object_pointer_helper<_Tp _Cp::*> 612825: : public __not_>::type { }; 612825: 612825: 612825: template 612825: struct is_member_object_pointer 612825: : public __is_member_object_pointer_helper<__remove_cv_t<_Tp>>::type 612825: { }; 612825: 612825: template 612825: struct __is_member_function_pointer_helper 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_member_function_pointer_helper<_Tp _Cp::*> 612825: : public is_function<_Tp>::type { }; 612825: 612825: 612825: template 612825: struct is_member_function_pointer 612825: : public __is_member_function_pointer_helper<__remove_cv_t<_Tp>>::type 612825: { }; 612825: 612825: 612825: template 612825: struct is_enum 612825: : public integral_constant 612825: { }; 612825: 612825: 612825: template 612825: struct is_union 612825: : public integral_constant 612825: { }; 612825: 612825: 612825: template 612825: struct is_class 612825: : public integral_constant 612825: { }; 612825: 612825: 612825: template 612825: struct is_function 612825: : public __bool_constant::value> { }; 612825: 612825: template 612825: struct is_function<_Tp&> 612825: : public false_type { }; 612825: 612825: template 612825: struct is_function<_Tp&&> 612825: : public false_type { }; 612825: 612825: 612825: 612825: template 612825: struct __is_null_pointer_helper 612825: : public false_type { }; 612825: 612825: template<> 612825: struct __is_null_pointer_helper 612825: : public true_type { }; 612825: 612825: 612825: template 612825: struct is_null_pointer 612825: : public __is_null_pointer_helper<__remove_cv_t<_Tp>>::type 612825: { }; 612825: 612825: 612825: 612825: template 612825: struct __is_nullptr_t 612825: : public is_null_pointer<_Tp> 612825: { } __attribute__ ((__deprecated__ ("use '" "std::is_null_pointer" "' instead"))); 612825: 612825: 612825: 612825: 612825: template 612825: struct is_reference 612825: : public __or_, 612825: is_rvalue_reference<_Tp>>::type 612825: { }; 612825: 612825: 612825: template 612825: struct is_arithmetic 612825: : public __or_, is_floating_point<_Tp>>::type 612825: { }; 612825: 612825: 612825: template 612825: struct is_fundamental 612825: : public __or_, is_void<_Tp>, 612825: is_null_pointer<_Tp>>::type 612825: { }; 612825: 612825: 612825: template 612825: struct is_object 612825: : public __not_<__or_, is_reference<_Tp>, 612825: is_void<_Tp>>>::type 612825: { }; 612825: 612825: template 612825: struct is_member_pointer; 612825: 612825: 612825: template 612825: struct is_scalar 612825: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, 612825: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type 612825: { }; 612825: 612825: 612825: template 612825: struct is_compound 612825: : public __not_>::type { }; 612825: 612825: 612825: template 612825: struct __is_member_pointer_helper 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_member_pointer_helper<_Tp _Cp::*> 612825: : public true_type { }; 612825: 612825: 612825: 612825: template 612825: struct is_member_pointer 612825: : public __is_member_pointer_helper<__remove_cv_t<_Tp>>::type 612825: { }; 612825: 612825: template 612825: struct is_same; 612825: 612825: 612825: template 612825: using __is_one_of = __or_...>; 612825: 612825: 612825: __extension__ 612825: template 612825: using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>, 612825: signed char, signed short, signed int, signed long, 612825: signed long long 612825: # 659 "/usr/include/c++/12/type_traits" 3 612825: >; 612825: 612825: 612825: __extension__ 612825: template 612825: using __is_unsigned_integer = __is_one_of<__remove_cv_t<_Tp>, 612825: unsigned char, unsigned short, unsigned int, unsigned long, 612825: unsigned long long 612825: # 679 "/usr/include/c++/12/type_traits" 3 612825: >; 612825: 612825: 612825: template 612825: using __is_standard_integer 612825: = __or_<__is_signed_integer<_Tp>, __is_unsigned_integer<_Tp>>; 612825: 612825: 612825: template using __void_t = void; 612825: 612825: 612825: 612825: template 612825: struct __is_referenceable 612825: : public false_type 612825: { }; 612825: 612825: template 612825: struct __is_referenceable<_Tp, __void_t<_Tp&>> 612825: : public true_type 612825: { }; 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct is_const 612825: : public false_type { }; 612825: 612825: template 612825: struct is_const<_Tp const> 612825: : public true_type { }; 612825: 612825: 612825: template 612825: struct is_volatile 612825: : public false_type { }; 612825: 612825: template 612825: struct is_volatile<_Tp volatile> 612825: : public true_type { }; 612825: 612825: 612825: template 612825: struct is_trivial 612825: : public integral_constant 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct is_trivially_copyable 612825: : public integral_constant 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct is_standard_layout 612825: : public integral_constant 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct 612825: 612825: is_pod 612825: : public integral_constant 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct 612825: 612825: is_literal_type 612825: : public integral_constant 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct is_empty 612825: : public integral_constant 612825: { }; 612825: 612825: 612825: template 612825: struct is_polymorphic 612825: : public integral_constant 612825: { }; 612825: # 801 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct is_abstract 612825: : public integral_constant 612825: { }; 612825: 612825: 612825: template::value> 612825: struct __is_signed_helper 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_signed_helper<_Tp, true> 612825: : public integral_constant 612825: { }; 612825: 612825: 612825: 612825: template 612825: struct is_signed 612825: : public __is_signed_helper<_Tp>::type 612825: { }; 612825: 612825: 612825: template 612825: struct is_unsigned 612825: : public __and_, __not_>> 612825: { }; 612825: 612825: 612825: template 612825: _Up 612825: __declval(int); 612825: 612825: template 612825: _Tp 612825: __declval(long); 612825: 612825: 612825: template 612825: auto declval() noexcept -> decltype(__declval<_Tp>(0)); 612825: 612825: template 612825: struct extent; 612825: 612825: template 612825: struct remove_all_extents; 612825: 612825: 612825: template 612825: struct __is_array_known_bounds 612825: : public integral_constant::value > 0)> 612825: { }; 612825: 612825: template 612825: struct __is_array_unknown_bounds 612825: : public __and_, __not_>> 612825: { }; 612825: # 867 "/usr/include/c++/12/type_traits" 3 612825: struct __do_is_destructible_impl 612825: { 612825: template().~_Tp())> 612825: static true_type __test(int); 612825: 612825: template 612825: static false_type __test(...); 612825: }; 612825: 612825: template 612825: struct __is_destructible_impl 612825: : public __do_is_destructible_impl 612825: { 612825: typedef decltype(__test<_Tp>(0)) type; 612825: }; 612825: 612825: template, 612825: __is_array_unknown_bounds<_Tp>, 612825: is_function<_Tp>>::value, 612825: bool = __or_, is_scalar<_Tp>>::value> 612825: struct __is_destructible_safe; 612825: 612825: template 612825: struct __is_destructible_safe<_Tp, false, false> 612825: : public __is_destructible_impl::type>::type 612825: { }; 612825: 612825: template 612825: struct __is_destructible_safe<_Tp, true, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_destructible_safe<_Tp, false, true> 612825: : public true_type { }; 612825: 612825: 612825: 612825: template 612825: struct is_destructible 612825: : public __is_destructible_safe<_Tp>::type 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: struct __do_is_nt_destructible_impl 612825: { 612825: template 612825: static __bool_constant().~_Tp())> 612825: __test(int); 612825: 612825: template 612825: static false_type __test(...); 612825: }; 612825: 612825: template 612825: struct __is_nt_destructible_impl 612825: : public __do_is_nt_destructible_impl 612825: { 612825: typedef decltype(__test<_Tp>(0)) type; 612825: }; 612825: 612825: template, 612825: __is_array_unknown_bounds<_Tp>, 612825: is_function<_Tp>>::value, 612825: bool = __or_, is_scalar<_Tp>>::value> 612825: struct __is_nt_destructible_safe; 612825: 612825: template 612825: struct __is_nt_destructible_safe<_Tp, false, false> 612825: : public __is_nt_destructible_impl::type>::type 612825: { }; 612825: 612825: template 612825: struct __is_nt_destructible_safe<_Tp, true, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_nt_destructible_safe<_Tp, false, true> 612825: : public true_type { }; 612825: 612825: 612825: 612825: template 612825: struct is_nothrow_destructible 612825: : public __is_nt_destructible_safe<_Tp>::type 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct __is_constructible_impl 612825: : public __bool_constant<__is_constructible(_Tp, _Args...)> 612825: { }; 612825: 612825: 612825: 612825: template 612825: struct is_constructible 612825: : public __is_constructible_impl<_Tp, _Args...> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct is_default_constructible 612825: : public __is_constructible_impl<_Tp>::type 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template::value> 612825: struct __is_copy_constructible_impl; 612825: 612825: template 612825: struct __is_copy_constructible_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_copy_constructible_impl<_Tp, true> 612825: : public __is_constructible_impl<_Tp, const _Tp&> 612825: { }; 612825: 612825: 612825: 612825: template 612825: struct is_copy_constructible 612825: : public __is_copy_constructible_impl<_Tp> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template::value> 612825: struct __is_move_constructible_impl; 612825: 612825: template 612825: struct __is_move_constructible_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_move_constructible_impl<_Tp, true> 612825: : public __is_constructible_impl<_Tp, _Tp&&> 612825: { }; 612825: 612825: 612825: 612825: template 612825: struct is_move_constructible 612825: : public __is_move_constructible_impl<_Tp> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: using __is_nothrow_constructible_impl 612825: = __bool_constant<__is_nothrow_constructible(_Tp, _Args...)>; 612825: 612825: 612825: 612825: template 612825: struct is_nothrow_constructible 612825: : public __is_nothrow_constructible_impl<_Tp, _Args...>::type 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct is_nothrow_default_constructible 612825: : public __bool_constant<__is_nothrow_constructible(_Tp)> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template::value> 612825: struct __is_nothrow_copy_constructible_impl; 612825: 612825: template 612825: struct __is_nothrow_copy_constructible_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_nothrow_copy_constructible_impl<_Tp, true> 612825: : public __is_nothrow_constructible_impl<_Tp, const _Tp&> 612825: { }; 612825: 612825: 612825: 612825: template 612825: struct is_nothrow_copy_constructible 612825: : public __is_nothrow_copy_constructible_impl<_Tp>::type 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template::value> 612825: struct __is_nothrow_move_constructible_impl; 612825: 612825: template 612825: struct __is_nothrow_move_constructible_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_nothrow_move_constructible_impl<_Tp, true> 612825: : public __is_nothrow_constructible_impl<_Tp, _Tp&&> 612825: { }; 612825: 612825: 612825: 612825: template 612825: struct is_nothrow_move_constructible 612825: : public __is_nothrow_move_constructible_impl<_Tp>::type 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct is_assignable 612825: : public __bool_constant<__is_assignable(_Tp, _Up)> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: template::value> 612825: struct __is_copy_assignable_impl; 612825: 612825: template 612825: struct __is_copy_assignable_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_copy_assignable_impl<_Tp, true> 612825: : public __bool_constant<__is_assignable(_Tp&, const _Tp&)> 612825: { }; 612825: 612825: 612825: template 612825: struct is_copy_assignable 612825: : public __is_copy_assignable_impl<_Tp>::type 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: template::value> 612825: struct __is_move_assignable_impl; 612825: 612825: template 612825: struct __is_move_assignable_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_move_assignable_impl<_Tp, true> 612825: : public __bool_constant<__is_assignable(_Tp&, _Tp&&)> 612825: { }; 612825: 612825: 612825: template 612825: struct is_move_assignable 612825: : public __is_move_assignable_impl<_Tp>::type 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: template 612825: using __is_nothrow_assignable_impl 612825: = __bool_constant<__is_nothrow_assignable(_Tp, _Up)>; 612825: 612825: 612825: template 612825: struct is_nothrow_assignable 612825: : public __is_nothrow_assignable_impl<_Tp, _Up> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: template::value> 612825: struct __is_nt_copy_assignable_impl; 612825: 612825: template 612825: struct __is_nt_copy_assignable_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_nt_copy_assignable_impl<_Tp, true> 612825: : public __is_nothrow_assignable_impl<_Tp&, const _Tp&> 612825: { }; 612825: 612825: 612825: template 612825: struct is_nothrow_copy_assignable 612825: : public __is_nt_copy_assignable_impl<_Tp> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: template::value> 612825: struct __is_nt_move_assignable_impl; 612825: 612825: template 612825: struct __is_nt_move_assignable_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_nt_move_assignable_impl<_Tp, true> 612825: : public __is_nothrow_assignable_impl<_Tp&, _Tp&&> 612825: { }; 612825: 612825: 612825: template 612825: struct is_nothrow_move_assignable 612825: : public __is_nt_move_assignable_impl<_Tp> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct is_trivially_constructible 612825: : public __bool_constant<__is_trivially_constructible(_Tp, _Args...)> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct is_trivially_default_constructible 612825: : public __bool_constant<__is_trivially_constructible(_Tp)> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: struct __do_is_implicitly_default_constructible_impl 612825: { 612825: template 612825: static void __helper(const _Tp&); 612825: 612825: template 612825: static true_type __test(const _Tp&, 612825: decltype(__helper({}))* = 0); 612825: 612825: static false_type __test(...); 612825: }; 612825: 612825: template 612825: struct __is_implicitly_default_constructible_impl 612825: : public __do_is_implicitly_default_constructible_impl 612825: { 612825: typedef decltype(__test(declval<_Tp>())) type; 612825: }; 612825: 612825: template 612825: struct __is_implicitly_default_constructible_safe 612825: : public __is_implicitly_default_constructible_impl<_Tp>::type 612825: { }; 612825: 612825: template 612825: struct __is_implicitly_default_constructible 612825: : public __and_<__is_constructible_impl<_Tp>, 612825: __is_implicitly_default_constructible_safe<_Tp>> 612825: { }; 612825: 612825: template::value> 612825: struct __is_trivially_copy_constructible_impl; 612825: 612825: template 612825: struct __is_trivially_copy_constructible_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_trivially_copy_constructible_impl<_Tp, true> 612825: : public __and_<__is_copy_constructible_impl<_Tp>, 612825: integral_constant> 612825: { }; 612825: 612825: 612825: template 612825: struct is_trivially_copy_constructible 612825: : public __is_trivially_copy_constructible_impl<_Tp> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: template::value> 612825: struct __is_trivially_move_constructible_impl; 612825: 612825: template 612825: struct __is_trivially_move_constructible_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_trivially_move_constructible_impl<_Tp, true> 612825: : public __and_<__is_move_constructible_impl<_Tp>, 612825: integral_constant> 612825: { }; 612825: 612825: 612825: template 612825: struct is_trivially_move_constructible 612825: : public __is_trivially_move_constructible_impl<_Tp> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct is_trivially_assignable 612825: : public __bool_constant<__is_trivially_assignable(_Tp, _Up)> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: template::value> 612825: struct __is_trivially_copy_assignable_impl; 612825: 612825: template 612825: struct __is_trivially_copy_assignable_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_trivially_copy_assignable_impl<_Tp, true> 612825: : public __bool_constant<__is_trivially_assignable(_Tp&, const _Tp&)> 612825: { }; 612825: 612825: 612825: template 612825: struct is_trivially_copy_assignable 612825: : public __is_trivially_copy_assignable_impl<_Tp> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: template::value> 612825: struct __is_trivially_move_assignable_impl; 612825: 612825: template 612825: struct __is_trivially_move_assignable_impl<_Tp, false> 612825: : public false_type { }; 612825: 612825: template 612825: struct __is_trivially_move_assignable_impl<_Tp, true> 612825: : public __bool_constant<__is_trivially_assignable(_Tp&, _Tp&&)> 612825: { }; 612825: 612825: 612825: template 612825: struct is_trivially_move_assignable 612825: : public __is_trivially_move_assignable_impl<_Tp> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct is_trivially_destructible 612825: : public __and_<__is_destructible_safe<_Tp>, 612825: __bool_constant<__has_trivial_destructor(_Tp)>> 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: 612825: template 612825: struct has_virtual_destructor 612825: : public integral_constant 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct alignment_of 612825: : public integral_constant 612825: { 612825: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), 612825: "template argument must be a complete class or an unbounded array"); 612825: }; 612825: 612825: 612825: template 612825: struct rank 612825: : public integral_constant { }; 612825: 612825: template 612825: struct rank<_Tp[_Size]> 612825: : public integral_constant::value> { }; 612825: 612825: template 612825: struct rank<_Tp[]> 612825: : public integral_constant::value> { }; 612825: 612825: 612825: template 612825: struct extent 612825: : public integral_constant { }; 612825: 612825: template 612825: struct extent<_Tp[_Size], _Uint> 612825: : public integral_constant::value> 612825: { }; 612825: 612825: template 612825: struct extent<_Tp[], _Uint> 612825: : public integral_constant::value> 612825: { }; 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct is_same 612825: 612825: : public integral_constant 612825: 612825: 612825: 612825: { }; 612825: # 1445 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct is_base_of 612825: : public integral_constant 612825: { }; 612825: 612825: template, is_function<_To>, 612825: is_array<_To>>::value> 612825: struct __is_convertible_helper 612825: { 612825: typedef typename is_void<_To>::type type; 612825: }; 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 612825: template 612825: class __is_convertible_helper<_From, _To, false> 612825: { 612825: template 612825: static void __test_aux(_To1) noexcept; 612825: 612825: template(std::declval<_From1>()))> 612825: static true_type 612825: __test(int); 612825: 612825: template 612825: static false_type 612825: __test(...); 612825: 612825: public: 612825: typedef decltype(__test<_From, _To>(0)) type; 612825: }; 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: template 612825: struct is_convertible 612825: : public __is_convertible_helper<_From, _To>::type 612825: { }; 612825: 612825: 612825: template 612825: using __is_array_convertible 612825: = is_convertible<_FromElementType(*)[], _ToElementType(*)[]>; 612825: 612825: template, is_function<_To>, 612825: is_array<_To>>::value> 612825: struct __is_nt_convertible_helper 612825: : is_void<_To> 612825: { }; 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 612825: template 612825: class __is_nt_convertible_helper<_From, _To, false> 612825: { 612825: template 612825: static void __test_aux(_To1) noexcept; 612825: 612825: template 612825: static 612825: __bool_constant(std::declval<_From1>()))> 612825: __test(int); 612825: 612825: template 612825: static false_type 612825: __test(...); 612825: 612825: public: 612825: using type = decltype(__test<_From, _To>(0)); 612825: }; 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: template 612825: struct __is_nothrow_convertible 612825: : public __is_nt_convertible_helper<_From, _To>::type 612825: { }; 612825: # 1543 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct remove_const 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct remove_const<_Tp const> 612825: { typedef _Tp type; }; 612825: 612825: 612825: template 612825: struct remove_volatile 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct remove_volatile<_Tp volatile> 612825: { typedef _Tp type; }; 612825: 612825: 612825: template 612825: struct remove_cv 612825: { using type = _Tp; }; 612825: 612825: template 612825: struct remove_cv 612825: { using type = _Tp; }; 612825: 612825: template 612825: struct remove_cv 612825: { using type = _Tp; }; 612825: 612825: template 612825: struct remove_cv 612825: { using type = _Tp; }; 612825: 612825: 612825: template 612825: struct add_const 612825: { typedef _Tp const type; }; 612825: 612825: 612825: template 612825: struct add_volatile 612825: { typedef _Tp volatile type; }; 612825: 612825: 612825: template 612825: struct add_cv 612825: { 612825: typedef typename 612825: add_const::type>::type type; 612825: }; 612825: # 1627 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct remove_reference 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct remove_reference<_Tp&> 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct remove_reference<_Tp&&> 612825: { typedef _Tp type; }; 612825: 612825: template::value> 612825: struct __add_lvalue_reference_helper 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct __add_lvalue_reference_helper<_Tp, true> 612825: { typedef _Tp& type; }; 612825: 612825: 612825: template 612825: struct add_lvalue_reference 612825: : public __add_lvalue_reference_helper<_Tp> 612825: { }; 612825: 612825: template::value> 612825: struct __add_rvalue_reference_helper 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct __add_rvalue_reference_helper<_Tp, true> 612825: { typedef _Tp&& type; }; 612825: 612825: 612825: template 612825: struct add_rvalue_reference 612825: : public __add_rvalue_reference_helper<_Tp> 612825: { }; 612825: # 1686 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct __cv_selector; 612825: 612825: template 612825: struct __cv_selector<_Unqualified, false, false> 612825: { typedef _Unqualified __type; }; 612825: 612825: template 612825: struct __cv_selector<_Unqualified, false, true> 612825: { typedef volatile _Unqualified __type; }; 612825: 612825: template 612825: struct __cv_selector<_Unqualified, true, false> 612825: { typedef const _Unqualified __type; }; 612825: 612825: template 612825: struct __cv_selector<_Unqualified, true, true> 612825: { typedef const volatile _Unqualified __type; }; 612825: 612825: template::value, 612825: bool _IsVol = is_volatile<_Qualified>::value> 612825: class __match_cv_qualifiers 612825: { 612825: typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match; 612825: 612825: public: 612825: typedef typename __match::__type __type; 612825: }; 612825: 612825: 612825: template 612825: struct __make_unsigned 612825: { typedef _Tp __type; }; 612825: 612825: template<> 612825: struct __make_unsigned 612825: { typedef unsigned char __type; }; 612825: 612825: template<> 612825: struct __make_unsigned 612825: { typedef unsigned char __type; }; 612825: 612825: template<> 612825: struct __make_unsigned 612825: { typedef unsigned short __type; }; 612825: 612825: template<> 612825: struct __make_unsigned 612825: { typedef unsigned int __type; }; 612825: 612825: template<> 612825: struct __make_unsigned 612825: { typedef unsigned long __type; }; 612825: 612825: template<> 612825: struct __make_unsigned 612825: { typedef unsigned long long __type; }; 612825: # 1771 "/usr/include/c++/12/type_traits" 3 612825: template::value, 612825: bool _IsEnum = is_enum<_Tp>::value> 612825: class __make_unsigned_selector; 612825: 612825: template 612825: class __make_unsigned_selector<_Tp, true, false> 612825: { 612825: using __unsigned_type 612825: = typename __make_unsigned<__remove_cv_t<_Tp>>::__type; 612825: 612825: public: 612825: using __type 612825: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 612825: }; 612825: 612825: class __make_unsigned_selector_base 612825: { 612825: protected: 612825: template struct _List { }; 612825: 612825: template 612825: struct _List<_Tp, _Up...> : _List<_Up...> 612825: { static constexpr size_t __size = sizeof(_Tp); }; 612825: 612825: template 612825: struct __select; 612825: 612825: template 612825: struct __select<_Sz, _List<_Uint, _UInts...>, true> 612825: { using __type = _Uint; }; 612825: 612825: template 612825: struct __select<_Sz, _List<_Uint, _UInts...>, false> 612825: : __select<_Sz, _List<_UInts...>> 612825: { }; 612825: }; 612825: 612825: 612825: template 612825: class __make_unsigned_selector<_Tp, false, true> 612825: : __make_unsigned_selector_base 612825: { 612825: 612825: using _UInts = _List; 612825: 612825: using __unsigned_type = typename __select::__type; 612825: 612825: public: 612825: using __type 612825: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: template<> 612825: struct __make_unsigned 612825: { 612825: using __type 612825: = typename __make_unsigned_selector::__type; 612825: }; 612825: # 1845 "/usr/include/c++/12/type_traits" 3 612825: template<> 612825: struct __make_unsigned 612825: { 612825: using __type 612825: = typename __make_unsigned_selector::__type; 612825: }; 612825: 612825: template<> 612825: struct __make_unsigned 612825: { 612825: using __type 612825: = typename __make_unsigned_selector::__type; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct make_unsigned 612825: { typedef typename __make_unsigned_selector<_Tp>::__type type; }; 612825: 612825: 612825: template<> 612825: struct make_unsigned; 612825: 612825: 612825: 612825: 612825: template 612825: struct __make_signed 612825: { typedef _Tp __type; }; 612825: 612825: template<> 612825: struct __make_signed 612825: { typedef signed char __type; }; 612825: 612825: template<> 612825: struct __make_signed 612825: { typedef signed char __type; }; 612825: 612825: template<> 612825: struct __make_signed 612825: { typedef signed short __type; }; 612825: 612825: template<> 612825: struct __make_signed 612825: { typedef signed int __type; }; 612825: 612825: template<> 612825: struct __make_signed 612825: { typedef signed long __type; }; 612825: 612825: template<> 612825: struct __make_signed 612825: { typedef signed long long __type; }; 612825: # 1929 "/usr/include/c++/12/type_traits" 3 612825: template::value, 612825: bool _IsEnum = is_enum<_Tp>::value> 612825: class __make_signed_selector; 612825: 612825: template 612825: class __make_signed_selector<_Tp, true, false> 612825: { 612825: using __signed_type 612825: = typename __make_signed<__remove_cv_t<_Tp>>::__type; 612825: 612825: public: 612825: using __type 612825: = typename __match_cv_qualifiers<_Tp, __signed_type>::__type; 612825: }; 612825: 612825: 612825: template 612825: class __make_signed_selector<_Tp, false, true> 612825: { 612825: typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type; 612825: 612825: public: 612825: typedef typename __make_signed_selector<__unsigned_type>::__type __type; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: template<> 612825: struct __make_signed 612825: { 612825: using __type 612825: = typename __make_signed_selector::__type; 612825: }; 612825: # 1975 "/usr/include/c++/12/type_traits" 3 612825: template<> 612825: struct __make_signed 612825: { 612825: using __type 612825: = typename __make_signed_selector::__type; 612825: }; 612825: 612825: template<> 612825: struct __make_signed 612825: { 612825: using __type 612825: = typename __make_signed_selector::__type; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct make_signed 612825: { typedef typename __make_signed_selector<_Tp>::__type type; }; 612825: 612825: 612825: template<> 612825: struct make_signed; 612825: # 2015 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct remove_extent 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct remove_extent<_Tp[_Size]> 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct remove_extent<_Tp[]> 612825: { typedef _Tp type; }; 612825: 612825: 612825: template 612825: struct remove_all_extents 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct remove_all_extents<_Tp[_Size]> 612825: { typedef typename remove_all_extents<_Tp>::type type; }; 612825: 612825: template 612825: struct remove_all_extents<_Tp[]> 612825: { typedef typename remove_all_extents<_Tp>::type type; }; 612825: # 2052 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct __remove_pointer_helper 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct __remove_pointer_helper<_Tp, _Up*> 612825: { typedef _Up type; }; 612825: 612825: 612825: template 612825: struct remove_pointer 612825: : public __remove_pointer_helper<_Tp, __remove_cv_t<_Tp>> 612825: { }; 612825: 612825: template, 612825: is_void<_Tp>>::value> 612825: struct __add_pointer_helper 612825: { typedef _Tp type; }; 612825: 612825: template 612825: struct __add_pointer_helper<_Tp, true> 612825: { typedef typename remove_reference<_Tp>::type* type; }; 612825: 612825: 612825: template 612825: struct add_pointer 612825: : public __add_pointer_helper<_Tp> 612825: { }; 612825: # 2091 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct __aligned_storage_msa 612825: { 612825: union __type 612825: { 612825: unsigned char __data[_Len]; 612825: struct __attribute__((__aligned__)) { } __align; 612825: }; 612825: }; 612825: # 2111 "/usr/include/c++/12/type_traits" 3 612825: template::__type)> 612825: struct aligned_storage 612825: { 612825: union type 612825: { 612825: unsigned char __data[_Len]; 612825: struct __attribute__((__aligned__((_Align)))) { } __align; 612825: }; 612825: }; 612825: 612825: template 612825: struct __strictest_alignment 612825: { 612825: static const size_t _S_alignment = 0; 612825: static const size_t _S_size = 0; 612825: }; 612825: 612825: template 612825: struct __strictest_alignment<_Tp, _Types...> 612825: { 612825: static const size_t _S_alignment = 612825: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment 612825: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; 612825: static const size_t _S_size = 612825: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size 612825: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; 612825: }; 612825: # 2150 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct aligned_union 612825: { 612825: private: 612825: static_assert(sizeof...(_Types) != 0, "At least one type is required"); 612825: 612825: using __strictest = __strictest_alignment<_Types...>; 612825: static const size_t _S_len = _Len > __strictest::_S_size 612825: ? _Len : __strictest::_S_size; 612825: public: 612825: 612825: static const size_t alignment_value = __strictest::_S_alignment; 612825: 612825: typedef typename aligned_storage<_S_len, alignment_value>::type type; 612825: }; 612825: 612825: template 612825: const size_t aligned_union<_Len, _Types...>::alignment_value; 612825: 612825: 612825: 612825: 612825: 612825: template::value, 612825: bool _IsFunction = is_function<_Up>::value> 612825: struct __decay_selector; 612825: 612825: 612825: template 612825: struct __decay_selector<_Up, false, false> 612825: { typedef __remove_cv_t<_Up> __type; }; 612825: 612825: template 612825: struct __decay_selector<_Up, true, false> 612825: { typedef typename remove_extent<_Up>::type* __type; }; 612825: 612825: template 612825: struct __decay_selector<_Up, false, true> 612825: { typedef typename add_pointer<_Up>::type __type; }; 612825: 612825: 612825: 612825: template 612825: class decay 612825: { 612825: typedef typename remove_reference<_Tp>::type __remove_type; 612825: 612825: public: 612825: typedef typename __decay_selector<__remove_type>::__type type; 612825: }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __strip_reference_wrapper 612825: { 612825: typedef _Tp __type; 612825: }; 612825: 612825: template 612825: struct __strip_reference_wrapper > 612825: { 612825: typedef _Tp& __type; 612825: }; 612825: 612825: 612825: template 612825: using __decay_t = typename decay<_Tp>::type; 612825: 612825: template 612825: using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>; 612825: 612825: 612825: 612825: 612825: template 612825: struct enable_if 612825: { }; 612825: 612825: 612825: template 612825: struct enable_if 612825: { typedef _Tp type; }; 612825: 612825: 612825: 612825: 612825: template 612825: using __enable_if_t = typename enable_if<_Cond, _Tp>::type; 612825: 612825: 612825: template 612825: using _Require = __enable_if_t<__and_<_Cond...>::value>; 612825: 612825: 612825: template 612825: using __remove_cvref_t 612825: = typename remove_cv::type>::type; 612825: 612825: 612825: 612825: 612825: template 612825: struct conditional 612825: { typedef _Iftrue type; }; 612825: 612825: 612825: template 612825: struct conditional 612825: { typedef _Iffalse type; }; 612825: 612825: 612825: template 612825: struct common_type; 612825: 612825: 612825: 612825: 612825: struct __do_common_type_impl 612825: { 612825: template 612825: using __cond_t 612825: = decltype(true ? std::declval<_Tp>() : std::declval<_Up>()); 612825: 612825: 612825: 612825: template 612825: static __success_type<__decay_t<__cond_t<_Tp, _Up>>> 612825: _S_test(int); 612825: # 2290 "/usr/include/c++/12/type_traits" 3 612825: template 612825: static __failure_type 612825: _S_test_2(...); 612825: 612825: template 612825: static decltype(_S_test_2<_Tp, _Up>(0)) 612825: _S_test(...); 612825: }; 612825: 612825: 612825: template<> 612825: struct common_type<> 612825: { }; 612825: 612825: 612825: template 612825: struct common_type<_Tp0> 612825: : public common_type<_Tp0, _Tp0> 612825: { }; 612825: 612825: 612825: template, typename _Dp2 = __decay_t<_Tp2>> 612825: struct __common_type_impl 612825: { 612825: 612825: 612825: using type = common_type<_Dp1, _Dp2>; 612825: }; 612825: 612825: template 612825: struct __common_type_impl<_Tp1, _Tp2, _Tp1, _Tp2> 612825: : private __do_common_type_impl 612825: { 612825: 612825: 612825: using type = decltype(_S_test<_Tp1, _Tp2>(0)); 612825: }; 612825: 612825: 612825: template 612825: struct common_type<_Tp1, _Tp2> 612825: : public __common_type_impl<_Tp1, _Tp2>::type 612825: { }; 612825: 612825: template 612825: struct __common_type_pack 612825: { }; 612825: 612825: template 612825: struct __common_type_fold; 612825: 612825: 612825: template 612825: struct common_type<_Tp1, _Tp2, _Rp...> 612825: : public __common_type_fold, 612825: __common_type_pack<_Rp...>> 612825: { }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __common_type_fold<_CTp, __common_type_pack<_Rp...>, 612825: __void_t> 612825: : public common_type 612825: { }; 612825: 612825: 612825: template 612825: struct __common_type_fold<_CTp, _Rp, void> 612825: { }; 612825: 612825: template::value> 612825: struct __underlying_type_impl 612825: { 612825: using type = __underlying_type(_Tp); 612825: }; 612825: 612825: template 612825: struct __underlying_type_impl<_Tp, false> 612825: { }; 612825: 612825: 612825: 612825: template 612825: struct underlying_type 612825: : public __underlying_type_impl<_Tp> 612825: { }; 612825: 612825: 612825: template 612825: struct __declval_protector 612825: { 612825: static const bool __stop = false; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: auto declval() noexcept -> decltype(__declval<_Tp>(0)) 612825: { 612825: static_assert(__declval_protector<_Tp>::__stop, 612825: "declval() must not be used!"); 612825: return __declval<_Tp>(0); 612825: } 612825: 612825: 612825: template 612825: struct result_of; 612825: 612825: 612825: 612825: 612825: 612825: 612825: struct __invoke_memfun_ref { }; 612825: struct __invoke_memfun_deref { }; 612825: struct __invoke_memobj_ref { }; 612825: struct __invoke_memobj_deref { }; 612825: struct __invoke_other { }; 612825: 612825: 612825: template 612825: struct __result_of_success : __success_type<_Tp> 612825: { using __invoke_type = _Tag; }; 612825: 612825: 612825: struct __result_of_memfun_ref_impl 612825: { 612825: template 612825: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) 612825: ), __invoke_memfun_ref> _S_test(int); 612825: 612825: template 612825: static __failure_type _S_test(...); 612825: }; 612825: 612825: template 612825: struct __result_of_memfun_ref 612825: : private __result_of_memfun_ref_impl 612825: { 612825: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; 612825: }; 612825: 612825: 612825: struct __result_of_memfun_deref_impl 612825: { 612825: template 612825: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) 612825: ), __invoke_memfun_deref> _S_test(int); 612825: 612825: template 612825: static __failure_type _S_test(...); 612825: }; 612825: 612825: template 612825: struct __result_of_memfun_deref 612825: : private __result_of_memfun_deref_impl 612825: { 612825: typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; 612825: }; 612825: 612825: 612825: struct __result_of_memobj_ref_impl 612825: { 612825: template 612825: static __result_of_success().*std::declval<_Fp>() 612825: ), __invoke_memobj_ref> _S_test(int); 612825: 612825: template 612825: static __failure_type _S_test(...); 612825: }; 612825: 612825: template 612825: struct __result_of_memobj_ref 612825: : private __result_of_memobj_ref_impl 612825: { 612825: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; 612825: }; 612825: 612825: 612825: struct __result_of_memobj_deref_impl 612825: { 612825: template 612825: static __result_of_success()).*std::declval<_Fp>() 612825: ), __invoke_memobj_deref> _S_test(int); 612825: 612825: template 612825: static __failure_type _S_test(...); 612825: }; 612825: 612825: template 612825: struct __result_of_memobj_deref 612825: : private __result_of_memobj_deref_impl 612825: { 612825: typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; 612825: }; 612825: 612825: template 612825: struct __result_of_memobj; 612825: 612825: template 612825: struct __result_of_memobj<_Res _Class::*, _Arg> 612825: { 612825: typedef __remove_cvref_t<_Arg> _Argval; 612825: typedef _Res _Class::* _MemPtr; 612825: typedef typename __conditional_t<__or_, 612825: is_base_of<_Class, _Argval>>::value, 612825: __result_of_memobj_ref<_MemPtr, _Arg>, 612825: __result_of_memobj_deref<_MemPtr, _Arg> 612825: >::type type; 612825: }; 612825: 612825: template 612825: struct __result_of_memfun; 612825: 612825: template 612825: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> 612825: { 612825: typedef typename remove_reference<_Arg>::type _Argval; 612825: typedef _Res _Class::* _MemPtr; 612825: typedef typename __conditional_t::value, 612825: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, 612825: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> 612825: >::type type; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template> 612825: struct __inv_unwrap 612825: { 612825: using type = _Tp; 612825: }; 612825: 612825: template 612825: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> 612825: { 612825: using type = _Up&; 612825: }; 612825: 612825: template 612825: struct __result_of_impl 612825: { 612825: typedef __failure_type type; 612825: }; 612825: 612825: template 612825: struct __result_of_impl 612825: : public __result_of_memobj<__decay_t<_MemPtr>, 612825: typename __inv_unwrap<_Arg>::type> 612825: { }; 612825: 612825: template 612825: struct __result_of_impl 612825: : public __result_of_memfun<__decay_t<_MemPtr>, 612825: typename __inv_unwrap<_Arg>::type, _Args...> 612825: { }; 612825: 612825: 612825: struct __result_of_other_impl 612825: { 612825: template 612825: static __result_of_success()(std::declval<_Args>()...) 612825: ), __invoke_other> _S_test(int); 612825: 612825: template 612825: static __failure_type _S_test(...); 612825: }; 612825: 612825: template 612825: struct __result_of_impl 612825: : private __result_of_other_impl 612825: { 612825: typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; 612825: }; 612825: 612825: 612825: template 612825: struct __invoke_result 612825: : public __result_of_impl< 612825: is_member_object_pointer< 612825: typename remove_reference<_Functor>::type 612825: >::value, 612825: is_member_function_pointer< 612825: typename remove_reference<_Functor>::type 612825: >::value, 612825: _Functor, _ArgTypes... 612825: >::type 612825: { }; 612825: 612825: 612825: template 612825: struct result_of<_Functor(_ArgTypes...)> 612825: : public __invoke_result<_Functor, _ArgTypes...> 612825: { } ; 612825: # 2642 "/usr/include/c++/12/type_traits" 3 612825: template class _Op, typename... _Args> 612825: struct __detector 612825: { 612825: using value_t = false_type; 612825: using type = _Default; 612825: }; 612825: 612825: 612825: template class _Op, 612825: typename... _Args> 612825: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> 612825: { 612825: using value_t = true_type; 612825: using type = _Op<_Args...>; 612825: }; 612825: 612825: 612825: template class _Op, 612825: typename... _Args> 612825: using __detected_or = __detector<_Default, void, _Op, _Args...>; 612825: 612825: 612825: template class _Op, 612825: typename... _Args> 612825: using __detected_or_t 612825: = typename __detected_or<_Default, _Op, _Args...>::type; 612825: # 2684 "/usr/include/c++/12/type_traits" 3 612825: template 612825: struct __is_swappable; 612825: 612825: template 612825: struct __is_nothrow_swappable; 612825: 612825: template 612825: struct __is_tuple_like_impl : false_type 612825: { }; 612825: 612825: 612825: template 612825: struct __is_tuple_like 612825: : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type 612825: { }; 612825: 612825: 612825: template 612825: 612825: inline 612825: _Require<__not_<__is_tuple_like<_Tp>>, 612825: is_move_constructible<_Tp>, 612825: is_move_assignable<_Tp>> 612825: swap(_Tp&, _Tp&) 612825: noexcept(__and_, 612825: is_nothrow_move_assignable<_Tp>>::value); 612825: 612825: template 612825: 612825: inline 612825: __enable_if_t<__is_swappable<_Tp>::value> 612825: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 612825: noexcept(__is_nothrow_swappable<_Tp>::value); 612825: 612825: 612825: namespace __swappable_details { 612825: using std::swap; 612825: 612825: struct __do_is_swappable_impl 612825: { 612825: template(), std::declval<_Tp&>()))> 612825: static true_type __test(int); 612825: 612825: template 612825: static false_type __test(...); 612825: }; 612825: 612825: struct __do_is_nothrow_swappable_impl 612825: { 612825: template 612825: static __bool_constant< 612825: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) 612825: > __test(int); 612825: 612825: template 612825: static false_type __test(...); 612825: }; 612825: 612825: } 612825: 612825: template 612825: struct __is_swappable_impl 612825: : public __swappable_details::__do_is_swappable_impl 612825: { 612825: typedef decltype(__test<_Tp>(0)) type; 612825: }; 612825: 612825: template 612825: struct __is_nothrow_swappable_impl 612825: : public __swappable_details::__do_is_nothrow_swappable_impl 612825: { 612825: typedef decltype(__test<_Tp>(0)) type; 612825: }; 612825: 612825: template 612825: struct __is_swappable 612825: : public __is_swappable_impl<_Tp>::type 612825: { }; 612825: 612825: template 612825: struct __is_nothrow_swappable 612825: : public __is_nothrow_swappable_impl<_Tp>::type 612825: { }; 612825: # 2907 "/usr/include/c++/12/type_traits" 3 612825: template::value, typename = void> 612825: struct __is_invocable_impl : false_type { }; 612825: 612825: 612825: template 612825: struct __is_invocable_impl<_Result, _Ret, 612825: true, 612825: __void_t> 612825: : true_type 612825: { }; 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 612825: 612825: template 612825: struct __is_invocable_impl<_Result, _Ret, 612825: false, 612825: __void_t> 612825: { 612825: private: 612825: 612825: 612825: static typename _Result::type _S_get(); 612825: 612825: template 612825: static void _S_conv(_Tp); 612825: 612825: 612825: template(_S_get()))> 612825: static true_type 612825: _S_test(int); 612825: 612825: template 612825: static false_type 612825: _S_test(...); 612825: 612825: public: 612825: using type = decltype(_S_test<_Ret>(1)); 612825: }; 612825: #pragma GCC diagnostic pop 612825: 612825: template 612825: struct __is_invocable 612825: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type 612825: { }; 612825: 612825: template 612825: constexpr bool __call_is_nt(__invoke_memfun_ref) 612825: { 612825: using _Up = typename __inv_unwrap<_Tp>::type; 612825: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( 612825: std::declval<_Args>()...)); 612825: } 612825: 612825: template 612825: constexpr bool __call_is_nt(__invoke_memfun_deref) 612825: { 612825: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( 612825: std::declval<_Args>()...)); 612825: } 612825: 612825: template 612825: constexpr bool __call_is_nt(__invoke_memobj_ref) 612825: { 612825: using _Up = typename __inv_unwrap<_Tp>::type; 612825: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); 612825: } 612825: 612825: template 612825: constexpr bool __call_is_nt(__invoke_memobj_deref) 612825: { 612825: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); 612825: } 612825: 612825: template 612825: constexpr bool __call_is_nt(__invoke_other) 612825: { 612825: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); 612825: } 612825: 612825: template 612825: struct __call_is_nothrow 612825: : __bool_constant< 612825: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) 612825: > 612825: { }; 612825: 612825: template 612825: using __call_is_nothrow_ 612825: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; 612825: 612825: 612825: template 612825: struct __is_nothrow_invocable 612825: : __and_<__is_invocable<_Fn, _Args...>, 612825: __call_is_nothrow_<_Fn, _Args...>>::type 612825: { }; 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" 612825: struct __nonesuchbase {}; 612825: struct __nonesuch : private __nonesuchbase { 612825: ~__nonesuch() = delete; 612825: __nonesuch(__nonesuch const&) = delete; 612825: void operator=(__nonesuch const&) = delete; 612825: }; 612825: #pragma GCC diagnostic pop 612825: # 3703 "/usr/include/c++/12/type_traits" 3 612825: 612825: } 612825: # 61 "/usr/include/c++/12/bits/stl_pair.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/move.h" 1 3 612825: # 38 "/usr/include/c++/12/bits/move.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline constexpr _Tp* 612825: __addressof(_Tp& __r) noexcept 612825: { return __builtin_addressof(__r); } 612825: 612825: 612825: 612825: 612825: } 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 74 "/usr/include/c++/12/bits/move.h" 3 612825: template 612825: 612825: constexpr _Tp&& 612825: forward(typename std::remove_reference<_Tp>::type& __t) noexcept 612825: { return static_cast<_Tp&&>(__t); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: constexpr _Tp&& 612825: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept 612825: { 612825: static_assert(!std::is_lvalue_reference<_Tp>::value, 612825: "std::forward must not be used to convert an rvalue to an lvalue"); 612825: return static_cast<_Tp&&>(__t); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: constexpr typename std::remove_reference<_Tp>::type&& 612825: move(_Tp&& __t) noexcept 612825: { return static_cast::type&&>(__t); } 612825: 612825: 612825: template 612825: struct __move_if_noexcept_cond 612825: : public __and_<__not_>, 612825: is_copy_constructible<_Tp>>::type { }; 612825: # 121 "/usr/include/c++/12/bits/move.h" 3 612825: template 612825: 612825: constexpr 612825: __conditional_t<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&> 612825: move_if_noexcept(_Tp& __x) noexcept 612825: { return std::move(__x); } 612825: # 142 "/usr/include/c++/12/bits/move.h" 3 612825: template 612825: 612825: inline _Tp* 612825: addressof(_Tp& __r) noexcept 612825: { return std::__addressof(__r); } 612825: 612825: 612825: 612825: template 612825: const _Tp* addressof(const _Tp&&) = delete; 612825: 612825: 612825: template 612825: 612825: inline _Tp 612825: __exchange(_Tp& __obj, _Up&& __new_val) 612825: { 612825: _Tp __old_val = std::move(__obj); 612825: __obj = std::forward<_Up>(__new_val); 612825: return __old_val; 612825: } 612825: # 186 "/usr/include/c++/12/bits/move.h" 3 612825: template 612825: 612825: inline 612825: 612825: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 612825: is_move_constructible<_Tp>, 612825: is_move_assignable<_Tp>>::value>::type 612825: 612825: 612825: 612825: swap(_Tp& __a, _Tp& __b) 612825: noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value) 612825: 612825: { 612825: 612825: 612825: 612825: 612825: _Tp __tmp = std::move(__a); 612825: __a = std::move(__b); 612825: __b = std::move(__tmp); 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: 612825: inline 612825: 612825: typename enable_if<__is_swappable<_Tp>::value>::type 612825: 612825: 612825: 612825: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) 612825: noexcept(__is_nothrow_swappable<_Tp>::value) 612825: { 612825: for (size_t __n = 0; __n < _Nm; ++__n) 612825: swap(__a[__n], __b[__n]); 612825: } 612825: 612825: 612825: 612825: } 612825: # 62 "/usr/include/c++/12/bits/stl_pair.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/utility.h" 1 3 612825: # 36 "/usr/include/c++/12/bits/utility.h" 3 612825: 612825: # 37 "/usr/include/c++/12/bits/utility.h" 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: template 612825: struct tuple_size; 612825: 612825: 612825: 612825: 612825: 612825: template::type, 612825: typename = typename enable_if::value>::type, 612825: size_t = tuple_size<_Tp>::value> 612825: using __enable_if_has_tuple_size = _Tp; 612825: 612825: template 612825: struct tuple_size> 612825: : public tuple_size<_Tp> { }; 612825: 612825: template 612825: struct tuple_size> 612825: : public tuple_size<_Tp> { }; 612825: 612825: template 612825: struct tuple_size> 612825: : public tuple_size<_Tp> { }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct tuple_element; 612825: 612825: 612825: template 612825: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; 612825: 612825: template 612825: struct tuple_element<__i, const _Tp> 612825: { 612825: typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type; 612825: }; 612825: 612825: template 612825: struct tuple_element<__i, volatile _Tp> 612825: { 612825: typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type; 612825: }; 612825: 612825: template 612825: struct tuple_element<__i, const volatile _Tp> 612825: { 612825: typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type; 612825: }; 612825: # 140 "/usr/include/c++/12/bits/utility.h" 3 612825: template struct _Index_tuple { }; 612825: 612825: 612825: template 612825: struct _Build_index_tuple 612825: { 612825: # 154 "/usr/include/c++/12/bits/utility.h" 3 612825: using __type = _Index_tuple<__integer_pack(_Num)...>; 612825: 612825: }; 612825: # 227 "/usr/include/c++/12/bits/utility.h" 3 612825: template 612825: struct _Nth_type 612825: { }; 612825: 612825: template 612825: struct _Nth_type<0, _Tp0, _Rest...> 612825: { using type = _Tp0; }; 612825: 612825: template 612825: struct _Nth_type<1, _Tp0, _Tp1, _Rest...> 612825: { using type = _Tp1; }; 612825: 612825: template 612825: struct _Nth_type<2, _Tp0, _Tp1, _Tp2, _Rest...> 612825: { using type = _Tp2; }; 612825: 612825: template 612825: 612825: 612825: 612825: struct _Nth_type<_Np, _Tp0, _Tp1, _Tp2, _Rest...> 612825: : _Nth_type<_Np - 3, _Rest...> 612825: { }; 612825: 612825: 612825: template 612825: struct _Nth_type<0, _Tp0, _Tp1, _Rest...> 612825: { using type = _Tp0; }; 612825: 612825: template 612825: struct _Nth_type<0, _Tp0, _Tp1, _Tp2, _Rest...> 612825: { using type = _Tp0; }; 612825: 612825: template 612825: struct _Nth_type<1, _Tp0, _Tp1, _Tp2, _Rest...> 612825: { using type = _Tp1; }; 612825: 612825: 612825: 612825: } 612825: # 63 "/usr/include/c++/12/bits/stl_pair.h" 2 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 80 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; 612825: 612825: 612825: constexpr piecewise_construct_t piecewise_construct = 612825: piecewise_construct_t(); 612825: 612825: 612825: 612825: 612825: template 612825: class tuple; 612825: 612825: template 612825: struct _Index_tuple; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct _PCC 612825: { 612825: template 612825: static constexpr bool _ConstructiblePair() 612825: { 612825: return __and_, 612825: is_constructible<_T2, const _U2&>>::value; 612825: } 612825: 612825: template 612825: static constexpr bool _ImplicitlyConvertiblePair() 612825: { 612825: return __and_, 612825: is_convertible>::value; 612825: } 612825: 612825: template 612825: static constexpr bool _MoveConstructiblePair() 612825: { 612825: return __and_, 612825: is_constructible<_T2, _U2&&>>::value; 612825: } 612825: 612825: template 612825: static constexpr bool _ImplicitlyMoveConvertiblePair() 612825: { 612825: return __and_, 612825: is_convertible<_U2&&, _T2>>::value; 612825: } 612825: }; 612825: 612825: template 612825: struct _PCC 612825: { 612825: template 612825: static constexpr bool _ConstructiblePair() 612825: { 612825: return false; 612825: } 612825: 612825: template 612825: static constexpr bool _ImplicitlyConvertiblePair() 612825: { 612825: return false; 612825: } 612825: 612825: template 612825: static constexpr bool _MoveConstructiblePair() 612825: { 612825: return false; 612825: } 612825: 612825: template 612825: static constexpr bool _ImplicitlyMoveConvertiblePair() 612825: { 612825: return false; 612825: } 612825: }; 612825: 612825: 612825: 612825: template class __pair_base 612825: { 612825: 612825: template friend struct pair; 612825: __pair_base() = default; 612825: ~__pair_base() = default; 612825: __pair_base(const __pair_base&) = default; 612825: __pair_base& operator=(const __pair_base&) = delete; 612825: 612825: }; 612825: # 184 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: template 612825: struct pair 612825: : public __pair_base<_T1, _T2> 612825: { 612825: typedef _T1 first_type; 612825: typedef _T2 second_type; 612825: 612825: _T1 first; 612825: _T2 second; 612825: 612825: 612825: constexpr pair(const pair&) = default; 612825: constexpr pair(pair&&) = default; 612825: 612825: template 612825: 612825: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); 612825: 612825: 612825: void 612825: swap(pair& __p) 612825: noexcept(__and_<__is_nothrow_swappable<_T1>, 612825: __is_nothrow_swappable<_T2>>::value) 612825: { 612825: using std::swap; 612825: swap(first, __p.first); 612825: swap(second, __p.second); 612825: } 612825: 612825: private: 612825: template 612825: 612825: pair(tuple<_Args1...>&, tuple<_Args2...>&, 612825: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); 612825: public: 612825: # 378 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: template , 612825: __is_implicitly_default_constructible<_U2>> 612825: ::value, bool>::type = true> 612825: constexpr pair() 612825: : first(), second() { } 612825: 612825: template , 612825: is_default_constructible<_U2>, 612825: __not_< 612825: __and_<__is_implicitly_default_constructible<_U1>, 612825: __is_implicitly_default_constructible<_U2>>>> 612825: ::value, bool>::type = false> 612825: explicit constexpr pair() 612825: : first(), second() { } 612825: 612825: 612825: 612825: using _PCCP = _PCC; 612825: 612825: 612825: 612825: template() 612825: && _PCCP::template 612825: _ImplicitlyConvertiblePair<_U1, _U2>(), 612825: bool>::type=true> 612825: constexpr pair(const _T1& __a, const _T2& __b) 612825: : first(__a), second(__b) { } 612825: 612825: 612825: template() 612825: && !_PCCP::template 612825: _ImplicitlyConvertiblePair<_U1, _U2>(), 612825: bool>::type=false> 612825: explicit constexpr pair(const _T1& __a, const _T2& __b) 612825: : first(__a), second(__b) { } 612825: 612825: 612825: 612825: template 612825: using _PCCFP = _PCC::value 612825: || !is_same<_T2, _U2>::value, 612825: _T1, _T2>; 612825: 612825: 612825: template::template 612825: _ConstructiblePair<_U1, _U2>() 612825: && _PCCFP<_U1, _U2>::template 612825: _ImplicitlyConvertiblePair<_U1, _U2>(), 612825: bool>::type=true> 612825: constexpr pair(const pair<_U1, _U2>& __p) 612825: : first(__p.first), second(__p.second) { } 612825: 612825: template::template 612825: _ConstructiblePair<_U1, _U2>() 612825: && !_PCCFP<_U1, _U2>::template 612825: _ImplicitlyConvertiblePair<_U1, _U2>(), 612825: bool>::type=false> 612825: explicit constexpr pair(const pair<_U1, _U2>& __p) 612825: : first(__p.first), second(__p.second) { } 612825: # 460 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: private: 612825: 612825: 612825: 612825: struct __zero_as_null_pointer_constant 612825: { 612825: __zero_as_null_pointer_constant(int __zero_as_null_pointer_constant::*) 612825: { } 612825: template::value>> 612825: __zero_as_null_pointer_constant(_Tp) = delete; 612825: }; 612825: 612825: public: 612825: 612825: 612825: 612825: 612825: template>, 612825: is_pointer<_T2>, 612825: is_constructible<_T1, _U1>, 612825: __not_>, 612825: is_convertible<_U1, _T1>>::value, 612825: bool> = true> 612825: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 612825: constexpr 612825: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) 612825: : first(std::forward<_U1>(__x)), second(nullptr) { } 612825: 612825: template>, 612825: is_pointer<_T2>, 612825: is_constructible<_T1, _U1>, 612825: __not_>, 612825: __not_>>::value, 612825: bool> = false> 612825: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 612825: explicit constexpr 612825: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) 612825: : first(std::forward<_U1>(__x)), second(nullptr) { } 612825: 612825: template, 612825: __not_>, 612825: is_constructible<_T2, _U2>, 612825: __not_>, 612825: is_convertible<_U2, _T2>>::value, 612825: bool> = true> 612825: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 612825: constexpr 612825: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) 612825: : first(nullptr), second(std::forward<_U2>(__y)) { } 612825: 612825: template, 612825: __not_>, 612825: is_constructible<_T2, _U2>, 612825: __not_>, 612825: __not_>>::value, 612825: bool> = false> 612825: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) 612825: explicit constexpr 612825: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) 612825: : first(nullptr), second(std::forward<_U2>(__y)) { } 612825: 612825: 612825: 612825: template() 612825: && _PCCP::template 612825: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 612825: bool>::type=true> 612825: constexpr pair(_U1&& __x, _U2&& __y) 612825: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } 612825: 612825: template() 612825: && !_PCCP::template 612825: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 612825: bool>::type=false> 612825: explicit constexpr pair(_U1&& __x, _U2&& __y) 612825: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } 612825: 612825: 612825: template::template 612825: _MoveConstructiblePair<_U1, _U2>() 612825: && _PCCFP<_U1, _U2>::template 612825: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 612825: bool>::type=true> 612825: constexpr pair(pair<_U1, _U2>&& __p) 612825: : first(std::forward<_U1>(__p.first)), 612825: second(std::forward<_U2>(__p.second)) { } 612825: 612825: template::template 612825: _MoveConstructiblePair<_U1, _U2>() 612825: && !_PCCFP<_U1, _U2>::template 612825: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), 612825: bool>::type=false> 612825: explicit constexpr pair(pair<_U1, _U2>&& __p) 612825: : first(std::forward<_U1>(__p.first)), 612825: second(std::forward<_U2>(__p.second)) { } 612825: 612825: pair& 612825: operator=(__conditional_t<__and_, 612825: is_copy_assignable<_T2>>::value, 612825: const pair&, const __nonesuch&> __p) 612825: { 612825: first = __p.first; 612825: second = __p.second; 612825: return *this; 612825: } 612825: 612825: pair& 612825: operator=(__conditional_t<__and_, 612825: is_move_assignable<_T2>>::value, 612825: pair&&, __nonesuch&&> __p) 612825: noexcept(__and_, 612825: is_nothrow_move_assignable<_T2>>::value) 612825: { 612825: first = std::forward(__p.first); 612825: second = std::forward(__p.second); 612825: return *this; 612825: } 612825: 612825: template 612825: typename enable_if<__and_, 612825: is_assignable<_T2&, const _U2&>>::value, 612825: pair&>::type 612825: operator=(const pair<_U1, _U2>& __p) 612825: { 612825: first = __p.first; 612825: second = __p.second; 612825: return *this; 612825: } 612825: 612825: template 612825: typename enable_if<__and_, 612825: is_assignable<_T2&, _U2&&>>::value, 612825: pair&>::type 612825: operator=(pair<_U1, _U2>&& __p) 612825: { 612825: first = std::forward<_U1>(__p.first); 612825: second = std::forward<_U2>(__p.second); 612825: return *this; 612825: } 612825: # 629 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: }; 612825: # 638 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: template 612825: inline constexpr bool 612825: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 612825: { return __x.first == __y.first && __x.second == __y.second; } 612825: # 661 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: template 612825: inline constexpr bool 612825: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 612825: { return __x.first < __y.first 612825: || (!(__y.first < __x.first) && __x.second < __y.second); } 612825: 612825: 612825: template 612825: inline constexpr bool 612825: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 612825: { return !(__x == __y); } 612825: 612825: 612825: template 612825: inline constexpr bool 612825: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 612825: { return __y < __x; } 612825: 612825: 612825: template 612825: inline constexpr bool 612825: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 612825: { return !(__y < __x); } 612825: 612825: 612825: template 612825: inline constexpr bool 612825: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) 612825: { return !(__x < __y); } 612825: # 698 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: template 612825: inline 612825: 612825: 612825: 612825: 612825: 612825: void 612825: 612825: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) 612825: noexcept(noexcept(__x.swap(__y))) 612825: { __x.swap(__y); } 612825: # 738 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: template 612825: constexpr pair::__type, 612825: typename __decay_and_strip<_T2>::__type> 612825: make_pair(_T1&& __x, _T2&& __y) 612825: { 612825: typedef typename __decay_and_strip<_T1>::__type __ds_type1; 612825: typedef typename __decay_and_strip<_T2>::__type __ds_type2; 612825: typedef pair<__ds_type1, __ds_type2> __pair_type; 612825: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); 612825: } 612825: # 760 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: template 612825: struct __is_tuple_like_impl> : true_type 612825: { }; 612825: 612825: 612825: template 612825: struct tuple_size> 612825: : public integral_constant { }; 612825: 612825: 612825: template 612825: struct tuple_element<0, pair<_Tp1, _Tp2>> 612825: { typedef _Tp1 type; }; 612825: 612825: 612825: template 612825: struct tuple_element<1, pair<_Tp1, _Tp2>> 612825: { typedef _Tp2 type; }; 612825: # 797 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: template 612825: struct __pair_get; 612825: 612825: template<> 612825: struct __pair_get<0> 612825: { 612825: template 612825: static constexpr _Tp1& 612825: __get(pair<_Tp1, _Tp2>& __pair) noexcept 612825: { return __pair.first; } 612825: 612825: template 612825: static constexpr _Tp1&& 612825: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept 612825: { return std::forward<_Tp1>(__pair.first); } 612825: 612825: template 612825: static constexpr const _Tp1& 612825: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept 612825: { return __pair.first; } 612825: 612825: template 612825: static constexpr const _Tp1&& 612825: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept 612825: { return std::forward(__pair.first); } 612825: }; 612825: 612825: template<> 612825: struct __pair_get<1> 612825: { 612825: template 612825: static constexpr _Tp2& 612825: __get(pair<_Tp1, _Tp2>& __pair) noexcept 612825: { return __pair.second; } 612825: 612825: template 612825: static constexpr _Tp2&& 612825: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept 612825: { return std::forward<_Tp2>(__pair.second); } 612825: 612825: template 612825: static constexpr const _Tp2& 612825: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept 612825: { return __pair.second; } 612825: 612825: template 612825: static constexpr const _Tp2&& 612825: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept 612825: { return std::forward(__pair.second); } 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 612825: get(pair<_Tp1, _Tp2>& __in) noexcept 612825: { return __pair_get<_Int>::__get(__in); } 612825: 612825: template 612825: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 612825: get(pair<_Tp1, _Tp2>&& __in) noexcept 612825: { return __pair_get<_Int>::__move_get(std::move(__in)); } 612825: 612825: template 612825: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& 612825: get(const pair<_Tp1, _Tp2>& __in) noexcept 612825: { return __pair_get<_Int>::__const_get(__in); } 612825: 612825: template 612825: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& 612825: get(const pair<_Tp1, _Tp2>&& __in) noexcept 612825: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } 612825: # 921 "/usr/include/c++/12/bits/stl_pair.h" 3 612825: 612825: } 612825: # 65 "/usr/include/c++/12/bits/stl_algobase.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_iterator_base_types.h" 1 3 612825: # 62 "/usr/include/c++/12/bits/stl_iterator_base_types.h" 3 612825: 612825: # 63 "/usr/include/c++/12/bits/stl_iterator_base_types.h" 3 612825: # 74 "/usr/include/c++/12/bits/stl_iterator_base_types.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 93 "/usr/include/c++/12/bits/stl_iterator_base_types.h" 3 612825: struct input_iterator_tag { }; 612825: 612825: 612825: struct output_iterator_tag { }; 612825: 612825: 612825: struct forward_iterator_tag : public input_iterator_tag { }; 612825: 612825: 612825: 612825: struct bidirectional_iterator_tag : public forward_iterator_tag { }; 612825: 612825: 612825: 612825: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; 612825: # 125 "/usr/include/c++/12/bits/stl_iterator_base_types.h" 3 612825: template 612825: struct iterator 612825: { 612825: 612825: typedef _Category iterator_category; 612825: 612825: typedef _Tp value_type; 612825: 612825: typedef _Distance difference_type; 612825: 612825: typedef _Pointer pointer; 612825: 612825: typedef _Reference reference; 612825: }; 612825: # 149 "/usr/include/c++/12/bits/stl_iterator_base_types.h" 3 612825: template 612825: struct iterator_traits; 612825: 612825: 612825: 612825: 612825: template> 612825: struct __iterator_traits { }; 612825: 612825: 612825: 612825: template 612825: struct __iterator_traits<_Iterator, 612825: __void_t> 612825: { 612825: typedef typename _Iterator::iterator_category iterator_category; 612825: typedef typename _Iterator::value_type value_type; 612825: typedef typename _Iterator::difference_type difference_type; 612825: typedef typename _Iterator::pointer pointer; 612825: typedef typename _Iterator::reference reference; 612825: }; 612825: 612825: 612825: template 612825: struct iterator_traits 612825: : public __iterator_traits<_Iterator> { }; 612825: # 209 "/usr/include/c++/12/bits/stl_iterator_base_types.h" 3 612825: template 612825: struct iterator_traits<_Tp*> 612825: { 612825: typedef random_access_iterator_tag iterator_category; 612825: typedef _Tp value_type; 612825: typedef ptrdiff_t difference_type; 612825: typedef _Tp* pointer; 612825: typedef _Tp& reference; 612825: }; 612825: 612825: 612825: template 612825: struct iterator_traits 612825: { 612825: typedef random_access_iterator_tag iterator_category; 612825: typedef _Tp value_type; 612825: typedef ptrdiff_t difference_type; 612825: typedef const _Tp* pointer; 612825: typedef const _Tp& reference; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline constexpr 612825: typename iterator_traits<_Iter>::iterator_category 612825: __iterator_category(const _Iter&) 612825: { return typename iterator_traits<_Iter>::iterator_category(); } 612825: 612825: 612825: 612825: 612825: template 612825: using __iterator_category_t 612825: = typename iterator_traits<_Iter>::iterator_category; 612825: 612825: template 612825: using _RequireInputIter = 612825: __enable_if_t, 612825: input_iterator_tag>::value>; 612825: 612825: template> 612825: struct __is_random_access_iter 612825: : is_base_of 612825: { 612825: typedef is_base_of _Base; 612825: enum { __value = _Base::value }; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: } 612825: # 66 "/usr/include/c++/12/bits/stl_algobase.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_iterator_base_funcs.h" 1 3 612825: # 62 "/usr/include/c++/12/bits/stl_iterator_base_funcs.h" 3 612825: 612825: # 63 "/usr/include/c++/12/bits/stl_iterator_base_funcs.h" 3 612825: 612825: # 1 "/usr/include/c++/12/bits/concept_check.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/concept_check.h" 3 612825: 612825: # 34 "/usr/include/c++/12/bits/concept_check.h" 3 612825: # 65 "/usr/include/c++/12/bits/stl_iterator_base_funcs.h" 2 3 612825: # 1 "/usr/include/c++/12/debug/assertions.h" 1 3 612825: # 66 "/usr/include/c++/12/bits/stl_iterator_base_funcs.h" 2 3 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: template struct _List_iterator; 612825: template struct _List_const_iterator; 612825: 612825: 612825: template 612825: inline 612825: typename iterator_traits<_InputIterator>::difference_type 612825: __distance(_InputIterator __first, _InputIterator __last, 612825: input_iterator_tag) 612825: { 612825: 612825: 612825: 612825: typename iterator_traits<_InputIterator>::difference_type __n = 0; 612825: while (__first != __last) 612825: { 612825: ++__first; 612825: ++__n; 612825: } 612825: return __n; 612825: } 612825: 612825: template 612825: inline 612825: typename iterator_traits<_RandomAccessIterator>::difference_type 612825: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: random_access_iterator_tag) 612825: { 612825: 612825: 612825: 612825: return __last - __first; 612825: } 612825: 612825: 612825: 612825: template 612825: ptrdiff_t 612825: __distance(std::_List_iterator<_Tp>, 612825: std::_List_iterator<_Tp>, 612825: input_iterator_tag); 612825: 612825: template 612825: ptrdiff_t 612825: __distance(std::_List_const_iterator<_Tp>, 612825: std::_List_const_iterator<_Tp>, 612825: input_iterator_tag); 612825: 612825: 612825: 612825: 612825: template 612825: void 612825: __distance(_OutputIterator, _OutputIterator, output_iterator_tag) = delete; 612825: # 143 "/usr/include/c++/12/bits/stl_iterator_base_funcs.h" 3 612825: template 612825: 612825: inline 612825: typename iterator_traits<_InputIterator>::difference_type 612825: distance(_InputIterator __first, _InputIterator __last) 612825: { 612825: 612825: return std::__distance(__first, __last, 612825: std::__iterator_category(__first)); 612825: } 612825: 612825: template 612825: inline void 612825: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) 612825: { 612825: 612825: 612825: do { if (std::__is_constant_evaluated() && !bool(__n >= 0)) __builtin_unreachable(); } while (false); 612825: while (__n--) 612825: ++__i; 612825: } 612825: 612825: template 612825: inline void 612825: __advance(_BidirectionalIterator& __i, _Distance __n, 612825: bidirectional_iterator_tag) 612825: { 612825: 612825: 612825: 612825: if (__n > 0) 612825: while (__n--) 612825: ++__i; 612825: else 612825: while (__n++) 612825: --__i; 612825: } 612825: 612825: template 612825: inline void 612825: __advance(_RandomAccessIterator& __i, _Distance __n, 612825: random_access_iterator_tag) 612825: { 612825: 612825: 612825: 612825: if (__builtin_constant_p(__n) && __n == 1) 612825: ++__i; 612825: else if (__builtin_constant_p(__n) && __n == -1) 612825: --__i; 612825: else 612825: __i += __n; 612825: } 612825: 612825: 612825: 612825: template 612825: void 612825: __advance(_OutputIterator&, _Distance, output_iterator_tag) = delete; 612825: # 216 "/usr/include/c++/12/bits/stl_iterator_base_funcs.h" 3 612825: template 612825: inline void 612825: advance(_InputIterator& __i, _Distance __n) 612825: { 612825: 612825: typename iterator_traits<_InputIterator>::difference_type __d = __n; 612825: std::__advance(__i, __d, std::__iterator_category(__i)); 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: inline _InputIterator 612825: next(_InputIterator __x, typename 612825: iterator_traits<_InputIterator>::difference_type __n = 1) 612825: { 612825: 612825: 612825: std::advance(__x, __n); 612825: return __x; 612825: } 612825: 612825: template 612825: 612825: inline _BidirectionalIterator 612825: prev(_BidirectionalIterator __x, typename 612825: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) 612825: { 612825: 612825: 612825: 612825: std::advance(__x, -__n); 612825: return __x; 612825: } 612825: 612825: 612825: 612825: 612825: } 612825: # 67 "/usr/include/c++/12/bits/stl_algobase.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_iterator.h" 1 3 612825: # 67 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: # 1 "/usr/include/c++/12/bits/ptr_traits.h" 1 3 612825: # 46 "/usr/include/c++/12/bits/ptr_traits.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: class __undefined; 612825: 612825: 612825: 612825: template 612825: struct __get_first_arg 612825: { using type = __undefined; }; 612825: 612825: template class _SomeTemplate, typename _Tp, 612825: typename... _Types> 612825: struct __get_first_arg<_SomeTemplate<_Tp, _Types...>> 612825: { using type = _Tp; }; 612825: 612825: 612825: 612825: template 612825: struct __replace_first_arg 612825: { }; 612825: 612825: template class _SomeTemplate, typename _Up, 612825: typename _Tp, typename... _Types> 612825: struct __replace_first_arg<_SomeTemplate<_Tp, _Types...>, _Up> 612825: { using type = _SomeTemplate<_Up, _Types...>; }; 612825: # 81 "/usr/include/c++/12/bits/ptr_traits.h" 3 612825: template 612825: struct __ptr_traits_elem : __get_first_arg<_Ptr> 612825: { }; 612825: 612825: 612825: template 612825: struct __ptr_traits_elem<_Ptr, __void_t> 612825: { using type = typename _Ptr::element_type; }; 612825: 612825: template 612825: using __ptr_traits_elem_t = typename __ptr_traits_elem<_Ptr>::type; 612825: 612825: 612825: 612825: template::value> 612825: struct __ptr_traits_ptr_to 612825: { 612825: using pointer = _Ptr; 612825: using element_type = _Elt; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: static pointer 612825: pointer_to(element_type& __e) 612825: 612825: 612825: 612825: 612825: 612825: { return pointer::pointer_to(__e); } 612825: }; 612825: 612825: 612825: template 612825: struct __ptr_traits_ptr_to<_Ptr, _Elt, true> 612825: { }; 612825: 612825: 612825: template 612825: struct __ptr_traits_ptr_to<_Tp*, _Tp, false> 612825: { 612825: using pointer = _Tp*; 612825: using element_type = _Tp; 612825: 612825: 612825: 612825: 612825: 612825: 612825: static pointer 612825: pointer_to(element_type& __r) noexcept 612825: { return std::addressof(__r); } 612825: }; 612825: 612825: template 612825: struct __ptr_traits_impl : __ptr_traits_ptr_to<_Ptr, _Elt> 612825: { 612825: private: 612825: template 612825: struct __difference { using type = ptrdiff_t; }; 612825: 612825: template 612825: 612825: 612825: 612825: 612825: struct __difference<_Tp, __void_t> 612825: 612825: { using type = typename _Tp::difference_type; }; 612825: 612825: template 612825: struct __rebind : __replace_first_arg<_Tp, _Up> { }; 612825: 612825: template 612825: 612825: 612825: 612825: 612825: struct __rebind<_Tp, _Up, __void_t>> 612825: 612825: { using type = typename _Tp::template rebind<_Up>; }; 612825: 612825: public: 612825: 612825: using pointer = _Ptr; 612825: 612825: 612825: using element_type = _Elt; 612825: 612825: 612825: using difference_type = typename __difference<_Ptr>::type; 612825: 612825: 612825: template 612825: using rebind = typename __rebind<_Ptr, _Up>::type; 612825: }; 612825: 612825: 612825: 612825: template 612825: struct __ptr_traits_impl<_Ptr, __undefined> 612825: { }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct pointer_traits : __ptr_traits_impl<_Ptr, __ptr_traits_elem_t<_Ptr>> 612825: { }; 612825: # 209 "/usr/include/c++/12/bits/ptr_traits.h" 3 612825: template 612825: struct pointer_traits<_Tp*> : __ptr_traits_ptr_to<_Tp*, _Tp> 612825: { 612825: 612825: typedef _Tp* pointer; 612825: 612825: typedef _Tp element_type; 612825: 612825: typedef ptrdiff_t difference_type; 612825: 612825: template using rebind = _Up*; 612825: }; 612825: 612825: 612825: template 612825: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; 612825: 612825: template 612825: constexpr _Tp* 612825: __to_address(_Tp* __ptr) noexcept 612825: { 612825: static_assert(!std::is_function<_Tp>::value, "not a function pointer"); 612825: return __ptr; 612825: } 612825: 612825: 612825: template 612825: constexpr typename std::pointer_traits<_Ptr>::element_type* 612825: __to_address(const _Ptr& __ptr) 612825: { return std::__to_address(__ptr.operator->()); } 612825: # 282 "/usr/include/c++/12/bits/ptr_traits.h" 3 612825: 612825: } 612825: # 68 "/usr/include/c++/12/bits/stl_iterator.h" 2 3 612825: # 88 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 109 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: # 131 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: class reverse_iterator 612825: : public iterator::iterator_category, 612825: typename iterator_traits<_Iterator>::value_type, 612825: typename iterator_traits<_Iterator>::difference_type, 612825: typename iterator_traits<_Iterator>::pointer, 612825: typename iterator_traits<_Iterator>::reference> 612825: { 612825: template 612825: friend class reverse_iterator; 612825: # 150 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: protected: 612825: _Iterator current; 612825: 612825: typedef iterator_traits<_Iterator> __traits_type; 612825: 612825: public: 612825: typedef _Iterator iterator_type; 612825: typedef typename __traits_type::pointer pointer; 612825: 612825: typedef typename __traits_type::difference_type difference_type; 612825: typedef typename __traits_type::reference reference; 612825: # 181 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: 612825: reverse_iterator() 612825: noexcept(noexcept(_Iterator())) 612825: : current() 612825: { } 612825: 612825: 612825: 612825: 612825: explicit 612825: reverse_iterator(iterator_type __x) 612825: noexcept(noexcept(_Iterator(__x))) 612825: : current(__x) 612825: { } 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator(const reverse_iterator& __x) 612825: noexcept(noexcept(_Iterator(__x.current))) 612825: : current(__x.current) 612825: { } 612825: 612825: 612825: reverse_iterator& operator=(const reverse_iterator&) = default; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: 612825: 612825: 612825: reverse_iterator(const reverse_iterator<_Iter>& __x) 612825: noexcept(noexcept(_Iterator(__x.current))) 612825: : current(__x.current) 612825: { } 612825: 612825: 612825: template 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator& 612825: operator=(const reverse_iterator<_Iter>& __x) 612825: noexcept(noexcept(current = __x.current)) 612825: { 612825: current = __x.current; 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: iterator_type 612825: base() const 612825: noexcept(noexcept(_Iterator(current))) 612825: { return current; } 612825: # 258 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: 612825: reference 612825: operator*() const 612825: { 612825: _Iterator __tmp = current; 612825: return *--__tmp; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: pointer 612825: operator->() const 612825: 612825: 612825: 612825: 612825: { 612825: 612825: 612825: _Iterator __tmp = current; 612825: --__tmp; 612825: return _S_to_pointer(__tmp); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator& 612825: operator++() 612825: { 612825: --current; 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator 612825: operator++(int) 612825: { 612825: reverse_iterator __tmp = *this; 612825: --current; 612825: return __tmp; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator& 612825: operator--() 612825: { 612825: ++current; 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator 612825: operator--(int) 612825: { 612825: reverse_iterator __tmp = *this; 612825: ++current; 612825: return __tmp; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator 612825: operator+(difference_type __n) const 612825: { return reverse_iterator(current - __n); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator& 612825: operator+=(difference_type __n) 612825: { 612825: current -= __n; 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator 612825: operator-(difference_type __n) const 612825: { return reverse_iterator(current + __n); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator& 612825: operator-=(difference_type __n) 612825: { 612825: current += __n; 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: reference 612825: operator[](difference_type __n) const 612825: { return *(*this + __n); } 612825: # 418 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: private: 612825: template 612825: static _Tp* 612825: _S_to_pointer(_Tp* __p) 612825: { return __p; } 612825: 612825: template 612825: static pointer 612825: _S_to_pointer(_Tp __t) 612825: { return __t.operator->(); } 612825: }; 612825: # 441 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: 612825: inline bool 612825: operator==(const reverse_iterator<_Iterator>& __x, 612825: const reverse_iterator<_Iterator>& __y) 612825: { return __x.base() == __y.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator<(const reverse_iterator<_Iterator>& __x, 612825: const reverse_iterator<_Iterator>& __y) 612825: { return __y.base() < __x.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator!=(const reverse_iterator<_Iterator>& __x, 612825: const reverse_iterator<_Iterator>& __y) 612825: { return !(__x == __y); } 612825: 612825: template 612825: 612825: inline bool 612825: operator>(const reverse_iterator<_Iterator>& __x, 612825: const reverse_iterator<_Iterator>& __y) 612825: { return __y < __x; } 612825: 612825: template 612825: 612825: inline bool 612825: operator<=(const reverse_iterator<_Iterator>& __x, 612825: const reverse_iterator<_Iterator>& __y) 612825: { return !(__y < __x); } 612825: 612825: template 612825: 612825: inline bool 612825: operator>=(const reverse_iterator<_Iterator>& __x, 612825: const reverse_iterator<_Iterator>& __y) 612825: { return !(__x < __y); } 612825: 612825: 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator==(const reverse_iterator<_IteratorL>& __x, 612825: const reverse_iterator<_IteratorR>& __y) 612825: { return __x.base() == __y.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator<(const reverse_iterator<_IteratorL>& __x, 612825: const reverse_iterator<_IteratorR>& __y) 612825: { return __x.base() > __y.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator!=(const reverse_iterator<_IteratorL>& __x, 612825: const reverse_iterator<_IteratorR>& __y) 612825: { return __x.base() != __y.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator>(const reverse_iterator<_IteratorL>& __x, 612825: const reverse_iterator<_IteratorR>& __y) 612825: { return __x.base() < __y.base(); } 612825: 612825: template 612825: inline bool 612825: operator<=(const reverse_iterator<_IteratorL>& __x, 612825: const reverse_iterator<_IteratorR>& __y) 612825: { return __x.base() >= __y.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator>=(const reverse_iterator<_IteratorL>& __x, 612825: const reverse_iterator<_IteratorR>& __y) 612825: { return __x.base() <= __y.base(); } 612825: # 618 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: [[__nodiscard__]] 612825: inline auto 612825: operator-(const reverse_iterator<_IteratorL>& __x, 612825: const reverse_iterator<_IteratorR>& __y) 612825: -> decltype(__y.base() - __x.base()) 612825: { return __y.base() - __x.base(); } 612825: 612825: 612825: template 612825: 612825: inline reverse_iterator<_Iterator> 612825: operator+(typename reverse_iterator<_Iterator>::difference_type __n, 612825: const reverse_iterator<_Iterator>& __x) 612825: { return reverse_iterator<_Iterator>(__x.base() - __n); } 612825: 612825: 612825: 612825: template 612825: inline reverse_iterator<_Iterator> 612825: __make_reverse_iterator(_Iterator __i) 612825: { return reverse_iterator<_Iterator>(__i); } 612825: # 662 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: 612825: auto 612825: __niter_base(reverse_iterator<_Iterator> __it) 612825: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) 612825: { return __make_reverse_iterator(__niter_base(__it.base())); } 612825: 612825: template 612825: struct __is_move_iterator > 612825: : __is_move_iterator<_Iterator> 612825: { }; 612825: 612825: template 612825: 612825: auto 612825: __miter_base(reverse_iterator<_Iterator> __it) 612825: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) 612825: { return __make_reverse_iterator(__miter_base(__it.base())); } 612825: # 693 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: class back_insert_iterator 612825: : public iterator 612825: { 612825: protected: 612825: _Container* container; 612825: 612825: public: 612825: 612825: typedef _Container container_type; 612825: 612825: 612825: 612825: 612825: 612825: explicit 612825: back_insert_iterator(_Container& __x) 612825: : container(std::__addressof(__x)) { } 612825: # 731 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: 612825: back_insert_iterator& 612825: operator=(const typename _Container::value_type& __value) 612825: { 612825: container->push_back(__value); 612825: return *this; 612825: } 612825: 612825: 612825: back_insert_iterator& 612825: operator=(typename _Container::value_type&& __value) 612825: { 612825: container->push_back(std::move(__value)); 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: back_insert_iterator& 612825: operator*() 612825: { return *this; } 612825: 612825: 612825: 612825: back_insert_iterator& 612825: operator++() 612825: { return *this; } 612825: 612825: 612825: 612825: back_insert_iterator 612825: operator++(int) 612825: { return *this; } 612825: }; 612825: # 778 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: 612825: inline back_insert_iterator<_Container> 612825: back_inserter(_Container& __x) 612825: { return back_insert_iterator<_Container>(__x); } 612825: # 794 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: class front_insert_iterator 612825: : public iterator 612825: { 612825: protected: 612825: _Container* container; 612825: 612825: public: 612825: 612825: typedef _Container container_type; 612825: 612825: 612825: 612825: 612825: 612825: explicit 612825: front_insert_iterator(_Container& __x) 612825: : container(std::__addressof(__x)) { } 612825: # 832 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: 612825: front_insert_iterator& 612825: operator=(const typename _Container::value_type& __value) 612825: { 612825: container->push_front(__value); 612825: return *this; 612825: } 612825: 612825: 612825: front_insert_iterator& 612825: operator=(typename _Container::value_type&& __value) 612825: { 612825: container->push_front(std::move(__value)); 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: front_insert_iterator& 612825: operator*() 612825: { return *this; } 612825: 612825: 612825: 612825: front_insert_iterator& 612825: operator++() 612825: { return *this; } 612825: 612825: 612825: 612825: front_insert_iterator 612825: operator++(int) 612825: { return *this; } 612825: }; 612825: # 879 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: 612825: inline front_insert_iterator<_Container> 612825: front_inserter(_Container& __x) 612825: { return front_insert_iterator<_Container>(__x); } 612825: # 899 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: class insert_iterator 612825: : public iterator 612825: { 612825: 612825: 612825: 612825: typedef typename _Container::iterator _Iter; 612825: 612825: protected: 612825: _Container* container; 612825: _Iter iter; 612825: 612825: public: 612825: 612825: typedef _Container container_type; 612825: # 924 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: 612825: insert_iterator(_Container& __x, _Iter __i) 612825: : container(std::__addressof(__x)), iter(__i) {} 612825: # 960 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: 612825: insert_iterator& 612825: operator=(const typename _Container::value_type& __value) 612825: { 612825: iter = container->insert(iter, __value); 612825: ++iter; 612825: return *this; 612825: } 612825: 612825: 612825: insert_iterator& 612825: operator=(typename _Container::value_type&& __value) 612825: { 612825: iter = container->insert(iter, std::move(__value)); 612825: ++iter; 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: insert_iterator& 612825: operator*() 612825: { return *this; } 612825: 612825: 612825: 612825: insert_iterator& 612825: operator++() 612825: { return *this; } 612825: 612825: 612825: 612825: insert_iterator& 612825: operator++(int) 612825: { return *this; } 612825: }; 612825: 612825: #pragma GCC diagnostic pop 612825: # 1019 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: 612825: inline insert_iterator<_Container> 612825: inserter(_Container& __x, typename _Container::iterator __i) 612825: { return insert_iterator<_Container>(__x, __i); } 612825: 612825: 612825: 612825: 612825: 612825: } 612825: 612825: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 1042 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: class __normal_iterator 612825: { 612825: protected: 612825: _Iterator _M_current; 612825: 612825: typedef std::iterator_traits<_Iterator> __traits_type; 612825: 612825: 612825: template 612825: using __convertible_from 612825: = std::__enable_if_t::value>; 612825: 612825: 612825: public: 612825: typedef _Iterator iterator_type; 612825: typedef typename __traits_type::iterator_category iterator_category; 612825: typedef typename __traits_type::value_type value_type; 612825: typedef typename __traits_type::difference_type difference_type; 612825: typedef typename __traits_type::reference reference; 612825: typedef typename __traits_type::pointer pointer; 612825: 612825: 612825: 612825: 612825: 612825: constexpr __normal_iterator() noexcept 612825: : _M_current(_Iterator()) { } 612825: 612825: explicit 612825: __normal_iterator(const _Iterator& __i) noexcept 612825: : _M_current(__i) { } 612825: 612825: 612825: 612825: template> 612825: 612825: __normal_iterator(const __normal_iterator<_Iter, _Container>& __i) 612825: noexcept 612825: # 1090 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: : _M_current(__i.base()) { } 612825: 612825: 612825: 612825: reference 612825: operator*() const noexcept 612825: { return *_M_current; } 612825: 612825: 612825: pointer 612825: operator->() const noexcept 612825: { return _M_current; } 612825: 612825: 612825: __normal_iterator& 612825: operator++() noexcept 612825: { 612825: ++_M_current; 612825: return *this; 612825: } 612825: 612825: 612825: __normal_iterator 612825: operator++(int) noexcept 612825: { return __normal_iterator(_M_current++); } 612825: 612825: 612825: 612825: __normal_iterator& 612825: operator--() noexcept 612825: { 612825: --_M_current; 612825: return *this; 612825: } 612825: 612825: 612825: __normal_iterator 612825: operator--(int) noexcept 612825: { return __normal_iterator(_M_current--); } 612825: 612825: 612825: 612825: reference 612825: operator[](difference_type __n) const noexcept 612825: { return _M_current[__n]; } 612825: 612825: 612825: __normal_iterator& 612825: operator+=(difference_type __n) noexcept 612825: { _M_current += __n; return *this; } 612825: 612825: 612825: __normal_iterator 612825: operator+(difference_type __n) const noexcept 612825: { return __normal_iterator(_M_current + __n); } 612825: 612825: 612825: __normal_iterator& 612825: operator-=(difference_type __n) noexcept 612825: { _M_current -= __n; return *this; } 612825: 612825: 612825: __normal_iterator 612825: operator-(difference_type __n) const noexcept 612825: { return __normal_iterator(_M_current - __n); } 612825: 612825: 612825: const _Iterator& 612825: base() const noexcept 612825: { return _M_current; } 612825: }; 612825: # 1210 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: 612825: inline bool 612825: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, 612825: const __normal_iterator<_IteratorR, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() == __rhs.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, 612825: const __normal_iterator<_Iterator, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() == __rhs.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, 612825: const __normal_iterator<_IteratorR, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() != __rhs.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, 612825: const __normal_iterator<_Iterator, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() != __rhs.base(); } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, 612825: const __normal_iterator<_IteratorR, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() < __rhs.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, 612825: const __normal_iterator<_Iterator, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() < __rhs.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, 612825: const __normal_iterator<_IteratorR, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() > __rhs.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, 612825: const __normal_iterator<_Iterator, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() > __rhs.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, 612825: const __normal_iterator<_IteratorR, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() <= __rhs.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, 612825: const __normal_iterator<_Iterator, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() <= __rhs.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, 612825: const __normal_iterator<_IteratorR, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() >= __rhs.base(); } 612825: 612825: template 612825: 612825: inline bool 612825: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, 612825: const __normal_iterator<_Iterator, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() >= __rhs.base(); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: 612825: [[__nodiscard__]] 612825: inline auto 612825: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, 612825: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept 612825: -> decltype(__lhs.base() - __rhs.base()) 612825: 612825: 612825: 612825: 612825: 612825: { return __lhs.base() - __rhs.base(); } 612825: 612825: template 612825: 612825: inline typename __normal_iterator<_Iterator, _Container>::difference_type 612825: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, 612825: const __normal_iterator<_Iterator, _Container>& __rhs) 612825: noexcept 612825: { return __lhs.base() - __rhs.base(); } 612825: 612825: template 612825: 612825: inline __normal_iterator<_Iterator, _Container> 612825: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type 612825: __n, const __normal_iterator<_Iterator, _Container>& __i) 612825: noexcept 612825: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } 612825: 612825: 612825: } 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: template 612825: 612825: _Iterator 612825: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) 612825: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 612825: { return __it.base(); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: constexpr auto 612825: __to_address(const __gnu_cxx::__normal_iterator<_Iterator, 612825: _Container>& __it) noexcept 612825: -> decltype(std::__to_address(__it.base())) 612825: { return std::__to_address(__it.base()); } 612825: # 1417 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: namespace __detail 612825: { 612825: # 1433 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: } 612825: # 1444 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: class move_iterator 612825: 612825: 612825: 612825: { 612825: _Iterator _M_current; 612825: 612825: using __traits_type = iterator_traits<_Iterator>; 612825: 612825: using __base_ref = typename __traits_type::reference; 612825: 612825: 612825: template 612825: friend class move_iterator; 612825: # 1468 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: public: 612825: using iterator_type = _Iterator; 612825: # 1479 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: typedef typename __traits_type::iterator_category iterator_category; 612825: typedef typename __traits_type::value_type value_type; 612825: typedef typename __traits_type::difference_type difference_type; 612825: 612825: typedef _Iterator pointer; 612825: 612825: 612825: using reference 612825: = __conditional_t::value, 612825: typename remove_reference<__base_ref>::type&&, 612825: __base_ref>; 612825: 612825: 612825: 612825: move_iterator() 612825: : _M_current() { } 612825: 612825: explicit 612825: move_iterator(iterator_type __i) 612825: : _M_current(std::move(__i)) { } 612825: 612825: template 612825: 612825: 612825: 612825: 612825: move_iterator(const move_iterator<_Iter>& __i) 612825: : _M_current(__i._M_current) { } 612825: 612825: template 612825: 612825: 612825: 612825: 612825: 612825: move_iterator& operator=(const move_iterator<_Iter>& __i) 612825: { 612825: _M_current = __i._M_current; 612825: return *this; 612825: } 612825: 612825: 612825: [[__nodiscard__]] 612825: iterator_type 612825: base() const 612825: { return _M_current; } 612825: # 1537 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: [[__nodiscard__]] 612825: reference 612825: operator*() const 612825: 612825: 612825: 612825: { return static_cast(*_M_current); } 612825: 612825: 612825: [[__nodiscard__]] 612825: pointer 612825: operator->() const 612825: { return _M_current; } 612825: 612825: move_iterator& 612825: operator++() 612825: { 612825: ++_M_current; 612825: return *this; 612825: } 612825: 612825: move_iterator 612825: operator++(int) 612825: { 612825: move_iterator __tmp = *this; 612825: ++_M_current; 612825: return __tmp; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: move_iterator& 612825: operator--() 612825: { 612825: --_M_current; 612825: return *this; 612825: } 612825: 612825: move_iterator 612825: operator--(int) 612825: { 612825: move_iterator __tmp = *this; 612825: --_M_current; 612825: return __tmp; 612825: } 612825: 612825: [[__nodiscard__]] 612825: move_iterator 612825: operator+(difference_type __n) const 612825: { return move_iterator(_M_current + __n); } 612825: 612825: move_iterator& 612825: operator+=(difference_type __n) 612825: { 612825: _M_current += __n; 612825: return *this; 612825: } 612825: 612825: [[__nodiscard__]] 612825: move_iterator 612825: operator-(difference_type __n) const 612825: { return move_iterator(_M_current - __n); } 612825: 612825: move_iterator& 612825: operator-=(difference_type __n) 612825: { 612825: _M_current -= __n; 612825: return *this; 612825: } 612825: 612825: [[__nodiscard__]] 612825: reference 612825: operator[](difference_type __n) const 612825: 612825: 612825: 612825: { return std::move(_M_current[__n]); } 612825: # 1651 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: }; 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator==(const move_iterator<_IteratorL>& __x, 612825: const move_iterator<_IteratorR>& __y) 612825: 612825: 612825: 612825: { return __x.base() == __y.base(); } 612825: # 1672 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator!=(const move_iterator<_IteratorL>& __x, 612825: const move_iterator<_IteratorR>& __y) 612825: { return !(__x == __y); } 612825: 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator<(const move_iterator<_IteratorL>& __x, 612825: const move_iterator<_IteratorR>& __y) 612825: 612825: 612825: 612825: { return __x.base() < __y.base(); } 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator<=(const move_iterator<_IteratorL>& __x, 612825: const move_iterator<_IteratorR>& __y) 612825: 612825: 612825: 612825: { return !(__y < __x); } 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator>(const move_iterator<_IteratorL>& __x, 612825: const move_iterator<_IteratorR>& __y) 612825: 612825: 612825: 612825: { return __y < __x; } 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator>=(const move_iterator<_IteratorL>& __x, 612825: const move_iterator<_IteratorR>& __y) 612825: 612825: 612825: 612825: { return !(__x < __y); } 612825: 612825: 612825: 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator==(const move_iterator<_Iterator>& __x, 612825: const move_iterator<_Iterator>& __y) 612825: { return __x.base() == __y.base(); } 612825: # 1738 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator!=(const move_iterator<_Iterator>& __x, 612825: const move_iterator<_Iterator>& __y) 612825: { return !(__x == __y); } 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator<(const move_iterator<_Iterator>& __x, 612825: const move_iterator<_Iterator>& __y) 612825: { return __x.base() < __y.base(); } 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator<=(const move_iterator<_Iterator>& __x, 612825: const move_iterator<_Iterator>& __y) 612825: { return !(__y < __x); } 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator>(const move_iterator<_Iterator>& __x, 612825: const move_iterator<_Iterator>& __y) 612825: { return __y < __x; } 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline bool 612825: operator>=(const move_iterator<_Iterator>& __x, 612825: const move_iterator<_Iterator>& __y) 612825: { return !(__x < __y); } 612825: 612825: 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline auto 612825: operator-(const move_iterator<_IteratorL>& __x, 612825: const move_iterator<_IteratorR>& __y) 612825: -> decltype(__x.base() - __y.base()) 612825: { return __x.base() - __y.base(); } 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline move_iterator<_Iterator> 612825: operator+(typename move_iterator<_Iterator>::difference_type __n, 612825: const move_iterator<_Iterator>& __x) 612825: { return __x + __n; } 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline move_iterator<_Iterator> 612825: make_move_iterator(_Iterator __i) 612825: { return move_iterator<_Iterator>(std::move(__i)); } 612825: 612825: template::value_type>::value, 612825: _Iterator, move_iterator<_Iterator>>> 612825: inline _ReturnType 612825: __make_move_if_noexcept_iterator(_Iterator __i) 612825: { return _ReturnType(__i); } 612825: 612825: 612825: 612825: template::value, 612825: const _Tp*, move_iterator<_Tp*>>> 612825: inline _ReturnType 612825: __make_move_if_noexcept_iterator(_Tp* __i) 612825: { return _ReturnType(__i); } 612825: # 2552 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: template 612825: 612825: auto 612825: __niter_base(move_iterator<_Iterator> __it) 612825: -> decltype(make_move_iterator(__niter_base(__it.base()))) 612825: { return make_move_iterator(__niter_base(__it.base())); } 612825: 612825: template 612825: struct __is_move_iterator > 612825: { 612825: enum { __value = 1 }; 612825: typedef __true_type __type; 612825: }; 612825: 612825: template 612825: 612825: auto 612825: __miter_base(move_iterator<_Iterator> __it) 612825: -> decltype(__miter_base(__it.base())) 612825: { return __miter_base(__it.base()); } 612825: # 2601 "/usr/include/c++/12/bits/stl_iterator.h" 3 612825: 612825: } 612825: # 68 "/usr/include/c++/12/bits/stl_algobase.h" 2 3 612825: 612825: # 1 "/usr/include/c++/12/debug/debug.h" 1 3 612825: # 48 "/usr/include/c++/12/debug/debug.h" 3 612825: namespace std 612825: { 612825: namespace __debug { } 612825: } 612825: 612825: 612825: 612825: 612825: namespace __gnu_debug 612825: { 612825: using namespace std::__debug; 612825: 612825: template 612825: struct _Safe_iterator; 612825: } 612825: # 70 "/usr/include/c++/12/bits/stl_algobase.h" 2 3 612825: 612825: # 1 "/usr/include/c++/12/bits/predefined_ops.h" 1 3 612825: # 35 "/usr/include/c++/12/bits/predefined_ops.h" 3 612825: namespace __gnu_cxx 612825: { 612825: namespace __ops 612825: { 612825: struct _Iter_less_iter 612825: { 612825: template 612825: 612825: bool 612825: operator()(_Iterator1 __it1, _Iterator2 __it2) const 612825: { return *__it1 < *__it2; } 612825: }; 612825: 612825: 612825: inline _Iter_less_iter 612825: __iter_less_iter() 612825: { return _Iter_less_iter(); } 612825: 612825: struct _Iter_less_val 612825: { 612825: 612825: constexpr _Iter_less_val() = default; 612825: 612825: 612825: 612825: 612825: 612825: explicit 612825: _Iter_less_val(_Iter_less_iter) { } 612825: 612825: template 612825: 612825: bool 612825: operator()(_Iterator __it, _Value& __val) const 612825: { return *__it < __val; } 612825: }; 612825: 612825: 612825: inline _Iter_less_val 612825: __iter_less_val() 612825: { return _Iter_less_val(); } 612825: 612825: 612825: inline _Iter_less_val 612825: __iter_comp_val(_Iter_less_iter) 612825: { return _Iter_less_val(); } 612825: 612825: struct _Val_less_iter 612825: { 612825: 612825: constexpr _Val_less_iter() = default; 612825: 612825: 612825: 612825: 612825: 612825: explicit 612825: _Val_less_iter(_Iter_less_iter) { } 612825: 612825: template 612825: 612825: bool 612825: operator()(_Value& __val, _Iterator __it) const 612825: { return __val < *__it; } 612825: }; 612825: 612825: 612825: inline _Val_less_iter 612825: __val_less_iter() 612825: { return _Val_less_iter(); } 612825: 612825: 612825: inline _Val_less_iter 612825: __val_comp_iter(_Iter_less_iter) 612825: { return _Val_less_iter(); } 612825: 612825: struct _Iter_equal_to_iter 612825: { 612825: template 612825: 612825: bool 612825: operator()(_Iterator1 __it1, _Iterator2 __it2) const 612825: { return *__it1 == *__it2; } 612825: }; 612825: 612825: 612825: inline _Iter_equal_to_iter 612825: __iter_equal_to_iter() 612825: { return _Iter_equal_to_iter(); } 612825: 612825: struct _Iter_equal_to_val 612825: { 612825: template 612825: 612825: bool 612825: operator()(_Iterator __it, _Value& __val) const 612825: { return *__it == __val; } 612825: }; 612825: 612825: 612825: inline _Iter_equal_to_val 612825: __iter_equal_to_val() 612825: { return _Iter_equal_to_val(); } 612825: 612825: 612825: inline _Iter_equal_to_val 612825: __iter_comp_val(_Iter_equal_to_iter) 612825: { return _Iter_equal_to_val(); } 612825: 612825: template 612825: struct _Iter_comp_iter 612825: { 612825: _Compare _M_comp; 612825: 612825: explicit 612825: _Iter_comp_iter(_Compare __comp) 612825: : _M_comp(std::move(__comp)) 612825: { } 612825: 612825: template 612825: 612825: bool 612825: operator()(_Iterator1 __it1, _Iterator2 __it2) 612825: { return bool(_M_comp(*__it1, *__it2)); } 612825: }; 612825: 612825: template 612825: 612825: inline _Iter_comp_iter<_Compare> 612825: __iter_comp_iter(_Compare __comp) 612825: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } 612825: 612825: template 612825: struct _Iter_comp_val 612825: { 612825: _Compare _M_comp; 612825: 612825: 612825: explicit 612825: _Iter_comp_val(_Compare __comp) 612825: : _M_comp(std::move(__comp)) 612825: { } 612825: 612825: 612825: explicit 612825: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) 612825: : _M_comp(__comp._M_comp) 612825: { } 612825: 612825: 612825: 612825: explicit 612825: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) 612825: : _M_comp(std::move(__comp._M_comp)) 612825: { } 612825: 612825: 612825: template 612825: 612825: bool 612825: operator()(_Iterator __it, _Value& __val) 612825: { return bool(_M_comp(*__it, __val)); } 612825: }; 612825: 612825: template 612825: 612825: inline _Iter_comp_val<_Compare> 612825: __iter_comp_val(_Compare __comp) 612825: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 612825: 612825: template 612825: 612825: inline _Iter_comp_val<_Compare> 612825: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) 612825: { return _Iter_comp_val<_Compare>(std::move(__comp)); } 612825: 612825: template 612825: struct _Val_comp_iter 612825: { 612825: _Compare _M_comp; 612825: 612825: 612825: explicit 612825: _Val_comp_iter(_Compare __comp) 612825: : _M_comp(std::move(__comp)) 612825: { } 612825: 612825: 612825: explicit 612825: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) 612825: : _M_comp(__comp._M_comp) 612825: { } 612825: 612825: 612825: 612825: explicit 612825: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) 612825: : _M_comp(std::move(__comp._M_comp)) 612825: { } 612825: 612825: 612825: template 612825: 612825: bool 612825: operator()(_Value& __val, _Iterator __it) 612825: { return bool(_M_comp(__val, *__it)); } 612825: }; 612825: 612825: template 612825: 612825: inline _Val_comp_iter<_Compare> 612825: __val_comp_iter(_Compare __comp) 612825: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 612825: 612825: template 612825: 612825: inline _Val_comp_iter<_Compare> 612825: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) 612825: { return _Val_comp_iter<_Compare>(std::move(__comp)); } 612825: 612825: template 612825: struct _Iter_equals_val 612825: { 612825: _Value& _M_value; 612825: 612825: 612825: explicit 612825: _Iter_equals_val(_Value& __value) 612825: : _M_value(__value) 612825: { } 612825: 612825: template 612825: 612825: bool 612825: operator()(_Iterator __it) 612825: { return *__it == _M_value; } 612825: }; 612825: 612825: template 612825: 612825: inline _Iter_equals_val<_Value> 612825: __iter_equals_val(_Value& __val) 612825: { return _Iter_equals_val<_Value>(__val); } 612825: 612825: template 612825: struct _Iter_equals_iter 612825: { 612825: _Iterator1 _M_it1; 612825: 612825: 612825: explicit 612825: _Iter_equals_iter(_Iterator1 __it1) 612825: : _M_it1(__it1) 612825: { } 612825: 612825: template 612825: 612825: bool 612825: operator()(_Iterator2 __it2) 612825: { return *__it2 == *_M_it1; } 612825: }; 612825: 612825: template 612825: 612825: inline _Iter_equals_iter<_Iterator> 612825: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) 612825: { return _Iter_equals_iter<_Iterator>(__it); } 612825: 612825: template 612825: struct _Iter_pred 612825: { 612825: _Predicate _M_pred; 612825: 612825: 612825: explicit 612825: _Iter_pred(_Predicate __pred) 612825: : _M_pred(std::move(__pred)) 612825: { } 612825: 612825: template 612825: 612825: bool 612825: operator()(_Iterator __it) 612825: { return bool(_M_pred(*__it)); } 612825: }; 612825: 612825: template 612825: 612825: inline _Iter_pred<_Predicate> 612825: __pred_iter(_Predicate __pred) 612825: { return _Iter_pred<_Predicate>(std::move(__pred)); } 612825: 612825: template 612825: struct _Iter_comp_to_val 612825: { 612825: _Compare _M_comp; 612825: _Value& _M_value; 612825: 612825: 612825: _Iter_comp_to_val(_Compare __comp, _Value& __value) 612825: : _M_comp(std::move(__comp)), _M_value(__value) 612825: { } 612825: 612825: template 612825: 612825: bool 612825: operator()(_Iterator __it) 612825: { return bool(_M_comp(*__it, _M_value)); } 612825: }; 612825: 612825: template 612825: _Iter_comp_to_val<_Compare, _Value> 612825: 612825: __iter_comp_val(_Compare __comp, _Value &__val) 612825: { 612825: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); 612825: } 612825: 612825: template 612825: struct _Iter_comp_to_iter 612825: { 612825: _Compare _M_comp; 612825: _Iterator1 _M_it1; 612825: 612825: 612825: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) 612825: : _M_comp(std::move(__comp)), _M_it1(__it1) 612825: { } 612825: 612825: template 612825: 612825: bool 612825: operator()(_Iterator2 __it2) 612825: { return bool(_M_comp(*__it2, *_M_it1)); } 612825: }; 612825: 612825: template 612825: 612825: inline _Iter_comp_to_iter<_Compare, _Iterator> 612825: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) 612825: { 612825: return _Iter_comp_to_iter<_Compare, _Iterator>( 612825: std::move(__comp._M_comp), __it); 612825: } 612825: 612825: template 612825: struct _Iter_negate 612825: { 612825: _Predicate _M_pred; 612825: 612825: 612825: explicit 612825: _Iter_negate(_Predicate __pred) 612825: : _M_pred(std::move(__pred)) 612825: { } 612825: 612825: template 612825: 612825: bool 612825: operator()(_Iterator __it) 612825: { return !bool(_M_pred(*__it)); } 612825: }; 612825: 612825: template 612825: 612825: inline _Iter_negate<_Predicate> 612825: __negate(_Iter_pred<_Predicate> __pred) 612825: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } 612825: 612825: } 612825: } 612825: # 72 "/usr/include/c++/12/bits/stl_algobase.h" 2 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: inline int 612825: __memcmp(const _Tp* __first1, const _Up* __first2, size_t __num) 612825: { 612825: 612825: static_assert(sizeof(_Tp) == sizeof(_Up), "can be compared with memcmp"); 612825: # 105 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: return __builtin_memcmp(__first1, __first2, sizeof(_Tp) * __num); 612825: } 612825: # 149 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline void 612825: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) 612825: { 612825: 612825: 612825: 612825: 612825: # 182 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: swap(*__a, *__b); 612825: 612825: } 612825: # 198 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: _ForwardIterator2 612825: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 612825: _ForwardIterator2 __first2) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: for (; __first1 != __last1; ++__first1, (void)++__first2) 612825: std::iter_swap(__first1, __first2); 612825: return __first2; 612825: } 612825: # 227 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline const _Tp& 612825: min(const _Tp& __a, const _Tp& __b) 612825: { 612825: 612825: 612825: 612825: if (__b < __a) 612825: return __b; 612825: return __a; 612825: } 612825: # 251 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline const _Tp& 612825: max(const _Tp& __a, const _Tp& __b) 612825: { 612825: 612825: 612825: 612825: if (__a < __b) 612825: return __b; 612825: return __a; 612825: } 612825: # 275 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline const _Tp& 612825: min(const _Tp& __a, const _Tp& __b, _Compare __comp) 612825: { 612825: 612825: if (__comp(__b, __a)) 612825: return __b; 612825: return __a; 612825: } 612825: # 297 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline const _Tp& 612825: max(const _Tp& __a, const _Tp& __b, _Compare __comp) 612825: { 612825: 612825: if (__comp(__a, __b)) 612825: return __b; 612825: return __a; 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: inline _Iterator 612825: __niter_base(_Iterator __it) 612825: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) 612825: { return __it; } 612825: 612825: template 612825: _Ite 612825: __niter_base(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, 612825: std::random_access_iterator_tag>&); 612825: 612825: 612825: 612825: 612825: template 612825: 612825: inline _From 612825: __niter_wrap(_From __from, _To __res) 612825: { return __from + (__res - std::__niter_base(__from)); } 612825: 612825: 612825: template 612825: 612825: inline _Iterator 612825: __niter_wrap(const _Iterator&, _Iterator __res) 612825: { return __res; } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct __copy_move 612825: { 612825: template 612825: 612825: static _OI 612825: __copy_m(_II __first, _II __last, _OI __result) 612825: { 612825: for (; __first != __last; ++__result, (void)++__first) 612825: *__result = *__first; 612825: return __result; 612825: } 612825: }; 612825: 612825: 612825: template 612825: struct __copy_move 612825: { 612825: template 612825: 612825: static _OI 612825: __copy_m(_II __first, _II __last, _OI __result) 612825: { 612825: for (; __first != __last; ++__result, (void)++__first) 612825: *__result = std::move(*__first); 612825: return __result; 612825: } 612825: }; 612825: 612825: 612825: template<> 612825: struct __copy_move 612825: { 612825: template 612825: 612825: static _OI 612825: __copy_m(_II __first, _II __last, _OI __result) 612825: { 612825: typedef typename iterator_traits<_II>::difference_type _Distance; 612825: for(_Distance __n = __last - __first; __n > 0; --__n) 612825: { 612825: *__result = *__first; 612825: ++__first; 612825: ++__result; 612825: } 612825: return __result; 612825: } 612825: }; 612825: 612825: 612825: template<> 612825: struct __copy_move 612825: { 612825: template 612825: 612825: static _OI 612825: __copy_m(_II __first, _II __last, _OI __result) 612825: { 612825: typedef typename iterator_traits<_II>::difference_type _Distance; 612825: for(_Distance __n = __last - __first; __n > 0; --__n) 612825: { 612825: *__result = std::move(*__first); 612825: ++__first; 612825: ++__result; 612825: } 612825: return __result; 612825: } 612825: }; 612825: 612825: 612825: template 612825: struct __copy_move<_IsMove, true, random_access_iterator_tag> 612825: { 612825: template 612825: 612825: static _Tp* 612825: __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) 612825: { 612825: 612825: using __assignable = __conditional_t<_IsMove, 612825: is_move_assignable<_Tp>, 612825: is_copy_assignable<_Tp>>; 612825: 612825: static_assert( __assignable::value, "type must be assignable" ); 612825: 612825: const ptrdiff_t _Num = __last - __first; 612825: if (_Num) 612825: __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); 612825: return __result + _Num; 612825: } 612825: }; 612825: 612825: 612825: 612825: template 612825: struct _Deque_iterator; 612825: 612825: struct _Bit_iterator; 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct char_traits; 612825: 612825: template 612825: class istreambuf_iterator; 612825: 612825: template 612825: class ostreambuf_iterator; 612825: 612825: template 612825: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 612825: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 612825: __copy_move_a2(_CharT*, _CharT*, 612825: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 612825: 612825: template 612825: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 612825: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type 612825: __copy_move_a2(const _CharT*, const _CharT*, 612825: ostreambuf_iterator<_CharT, char_traits<_CharT> >); 612825: 612825: template 612825: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 612825: _CharT*>::__type 612825: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, 612825: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); 612825: 612825: template 612825: typename __gnu_cxx::__enable_if< 612825: __is_char<_CharT>::__value, 612825: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type 612825: __copy_move_a2( 612825: istreambuf_iterator<_CharT, char_traits<_CharT> >, 612825: istreambuf_iterator<_CharT, char_traits<_CharT> >, 612825: std::_Deque_iterator<_CharT, _CharT&, _CharT*>); 612825: 612825: template 612825: 612825: inline _OI 612825: __copy_move_a2(_II __first, _II __last, _OI __result) 612825: { 612825: typedef typename iterator_traits<_II>::iterator_category _Category; 612825: 612825: 612825: 612825: 612825: 612825: return std::__copy_move<_IsMove, __memcpyable<_OI, _II>::__value, 612825: _Category>::__copy_m(__first, __last, __result); 612825: } 612825: 612825: template 612825: _OI 612825: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 612825: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 612825: _OI); 612825: 612825: template 612825: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 612825: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr>, 612825: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 612825: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 612825: 612825: template 612825: typename __gnu_cxx::__enable_if< 612825: __is_random_access_iter<_II>::__value, 612825: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 612825: __copy_move_a1(_II, _II, std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 612825: 612825: template 612825: 612825: inline _OI 612825: __copy_move_a1(_II __first, _II __last, _OI __result) 612825: { return std::__copy_move_a2<_IsMove>(__first, __last, __result); } 612825: 612825: template 612825: 612825: inline _OI 612825: __copy_move_a(_II __first, _II __last, _OI __result) 612825: { 612825: return std::__niter_wrap(__result, 612825: std::__copy_move_a1<_IsMove>(std::__niter_base(__first), 612825: std::__niter_base(__last), 612825: std::__niter_base(__result))); 612825: } 612825: 612825: template 612825: _OI 612825: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 612825: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 612825: _OI); 612825: 612825: template 612825: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 612825: __copy_move_a(_II, _II, 612825: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 612825: 612825: template 612825: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 612825: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 612825: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 612825: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 612825: 612825: template 612825: 612825: _OutputIterator 612825: __copy_n_a(_InputIterator __first, _Size __n, _OutputIterator __result, 612825: bool) 612825: { 612825: if (__n > 0) 612825: { 612825: while (true) 612825: { 612825: *__result = *__first; 612825: ++__result; 612825: if (--__n > 0) 612825: ++__first; 612825: else 612825: break; 612825: } 612825: } 612825: return __result; 612825: } 612825: 612825: template 612825: typename __gnu_cxx::__enable_if< 612825: __is_char<_CharT>::__value, _CharT*>::__type 612825: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, 612825: _Size, _CharT*, bool); 612825: 612825: template 612825: typename __gnu_cxx::__enable_if< 612825: __is_char<_CharT>::__value, 612825: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type 612825: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, _Size, 612825: std::_Deque_iterator<_CharT, _CharT&, _CharT*>, 612825: bool); 612825: # 608 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline _OI 612825: copy(_II __first, _II __last, _OI __result) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__copy_move_a<__is_move_iterator<_II>::__value> 612825: (std::__miter_base(__first), std::__miter_base(__last), __result); 612825: } 612825: # 641 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline _OI 612825: move(_II __first, _II __last, _OI __result) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__copy_move_a(std::__miter_base(__first), 612825: std::__miter_base(__last), __result); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct __copy_move_backward 612825: { 612825: template 612825: 612825: static _BI2 612825: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 612825: { 612825: while (__first != __last) 612825: *--__result = *--__last; 612825: return __result; 612825: } 612825: }; 612825: 612825: 612825: template 612825: struct __copy_move_backward 612825: { 612825: template 612825: 612825: static _BI2 612825: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 612825: { 612825: while (__first != __last) 612825: *--__result = std::move(*--__last); 612825: return __result; 612825: } 612825: }; 612825: 612825: 612825: template<> 612825: struct __copy_move_backward 612825: { 612825: template 612825: 612825: static _BI2 612825: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 612825: { 612825: typename iterator_traits<_BI1>::difference_type 612825: __n = __last - __first; 612825: for (; __n > 0; --__n) 612825: *--__result = *--__last; 612825: return __result; 612825: } 612825: }; 612825: 612825: 612825: template<> 612825: struct __copy_move_backward 612825: { 612825: template 612825: 612825: static _BI2 612825: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) 612825: { 612825: typename iterator_traits<_BI1>::difference_type 612825: __n = __last - __first; 612825: for (; __n > 0; --__n) 612825: *--__result = std::move(*--__last); 612825: return __result; 612825: } 612825: }; 612825: 612825: 612825: template 612825: struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> 612825: { 612825: template 612825: 612825: static _Tp* 612825: __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) 612825: { 612825: 612825: using __assignable = __conditional_t<_IsMove, 612825: is_move_assignable<_Tp>, 612825: is_copy_assignable<_Tp>>; 612825: 612825: static_assert( __assignable::value, "type must be assignable" ); 612825: 612825: const ptrdiff_t _Num = __last - __first; 612825: if (_Num) 612825: __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); 612825: return __result - _Num; 612825: } 612825: }; 612825: 612825: template 612825: 612825: inline _BI2 612825: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) 612825: { 612825: typedef typename iterator_traits<_BI1>::iterator_category _Category; 612825: 612825: 612825: 612825: 612825: 612825: return std::__copy_move_backward<_IsMove, 612825: __memcpyable<_BI2, _BI1>::__value, 612825: _Category>::__copy_move_b(__first, 612825: __last, 612825: __result); 612825: } 612825: 612825: template 612825: 612825: inline _BI2 612825: __copy_move_backward_a1(_BI1 __first, _BI1 __last, _BI2 __result) 612825: { return std::__copy_move_backward_a2<_IsMove>(__first, __last, __result); } 612825: 612825: template 612825: _OI 612825: __copy_move_backward_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 612825: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 612825: _OI); 612825: 612825: template 612825: std::_Deque_iterator<_OTp, _OTp&, _OTp*> 612825: __copy_move_backward_a1( 612825: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 612825: std::_Deque_iterator<_ITp, _IRef, _IPtr>, 612825: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); 612825: 612825: template 612825: typename __gnu_cxx::__enable_if< 612825: __is_random_access_iter<_II>::__value, 612825: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type 612825: __copy_move_backward_a1(_II, _II, 612825: std::_Deque_iterator<_Tp, _Tp&, _Tp*>); 612825: 612825: template 612825: 612825: inline _OI 612825: __copy_move_backward_a(_II __first, _II __last, _OI __result) 612825: { 612825: return std::__niter_wrap(__result, 612825: std::__copy_move_backward_a1<_IsMove> 612825: (std::__niter_base(__first), std::__niter_base(__last), 612825: std::__niter_base(__result))); 612825: } 612825: 612825: template 612825: _OI 612825: __copy_move_backward_a( 612825: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 612825: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 612825: _OI); 612825: 612825: template 612825: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 612825: __copy_move_backward_a(_II, _II, 612825: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); 612825: 612825: template 612825: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> 612825: __copy_move_backward_a( 612825: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 612825: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, 612825: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); 612825: # 845 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline _BI2 612825: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__copy_move_backward_a<__is_move_iterator<_BI1>::__value> 612825: (std::__miter_base(__first), std::__miter_base(__last), __result); 612825: } 612825: # 880 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline _BI2 612825: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__copy_move_backward_a(std::__miter_base(__first), 612825: std::__miter_base(__last), 612825: __result); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: inline typename 612825: __gnu_cxx::__enable_if::__value, void>::__type 612825: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __value) 612825: { 612825: for (; __first != __last; ++__first) 612825: *__first = __value; 612825: } 612825: 612825: template 612825: 612825: inline typename 612825: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type 612825: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __value) 612825: { 612825: const _Tp __tmp = __value; 612825: for (; __first != __last; ++__first) 612825: *__first = __tmp; 612825: } 612825: 612825: 612825: template 612825: 612825: inline typename 612825: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type 612825: __fill_a1(_Tp* __first, _Tp* __last, const _Tp& __c) 612825: { 612825: const _Tp __tmp = __c; 612825: # 941 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: if (const size_t __len = __last - __first) 612825: __builtin_memset(__first, static_cast(__tmp), __len); 612825: } 612825: 612825: template 612825: 612825: inline void 612825: __fill_a1(::__gnu_cxx::__normal_iterator<_Ite, _Cont> __first, 612825: ::__gnu_cxx::__normal_iterator<_Ite, _Cont> __last, 612825: const _Tp& __value) 612825: { std::__fill_a1(__first.base(), __last.base(), __value); } 612825: 612825: template 612825: void 612825: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 612825: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, 612825: const _VTp&); 612825: 612825: 612825: void 612825: __fill_a1(std::_Bit_iterator, std::_Bit_iterator, 612825: const bool&); 612825: 612825: template 612825: 612825: inline void 612825: __fill_a(_FIte __first, _FIte __last, const _Tp& __value) 612825: { std::__fill_a1(__first, __last, __value); } 612825: 612825: template 612825: void 612825: __fill_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 612825: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, 612825: const _Tp&); 612825: # 988 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline void 612825: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) 612825: { 612825: 612825: 612825: 612825: ; 612825: 612825: std::__fill_a(__first, __last, __value); 612825: } 612825: 612825: 612825: inline constexpr int 612825: __size_to_integer(int __n) { return __n; } 612825: inline constexpr unsigned 612825: __size_to_integer(unsigned __n) { return __n; } 612825: inline constexpr long 612825: __size_to_integer(long __n) { return __n; } 612825: inline constexpr unsigned long 612825: __size_to_integer(unsigned long __n) { return __n; } 612825: inline constexpr long long 612825: __size_to_integer(long long __n) { return __n; } 612825: inline constexpr unsigned long long 612825: __size_to_integer(unsigned long long __n) { return __n; } 612825: # 1040 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: inline constexpr long long 612825: __size_to_integer(float __n) { return (long long)__n; } 612825: inline constexpr long long 612825: __size_to_integer(double __n) { return (long long)__n; } 612825: inline constexpr long long 612825: __size_to_integer(long double __n) { return (long long)__n; } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: inline typename 612825: __gnu_cxx::__enable_if::__value, _OutputIterator>::__type 612825: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) 612825: { 612825: for (; __n > 0; --__n, (void) ++__first) 612825: *__first = __value; 612825: return __first; 612825: } 612825: 612825: template 612825: 612825: inline typename 612825: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type 612825: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) 612825: { 612825: const _Tp __tmp = __value; 612825: for (; __n > 0; --__n, (void) ++__first) 612825: *__first = __tmp; 612825: return __first; 612825: } 612825: 612825: template 612825: ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> 612825: __fill_n_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>& __first, 612825: _Size __n, const _Tp& __value, 612825: std::input_iterator_tag); 612825: 612825: template 612825: 612825: inline _OutputIterator 612825: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 612825: std::output_iterator_tag) 612825: { 612825: 612825: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 612825: 612825: return __fill_n_a1(__first, __n, __value); 612825: } 612825: 612825: template 612825: 612825: inline _OutputIterator 612825: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 612825: std::input_iterator_tag) 612825: { 612825: 612825: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 612825: 612825: return __fill_n_a1(__first, __n, __value); 612825: } 612825: 612825: template 612825: 612825: inline _OutputIterator 612825: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, 612825: std::random_access_iterator_tag) 612825: { 612825: 612825: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); 612825: 612825: if (__n <= 0) 612825: return __first; 612825: 612825: ; 612825: 612825: std::__fill_a(__first, __first + __n, __value); 612825: return __first + __n; 612825: } 612825: # 1140 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline _OI 612825: fill_n(_OI __first, _Size __n, const _Tp& __value) 612825: { 612825: 612825: 612825: 612825: return std::__fill_n_a(__first, std::__size_to_integer(__n), __value, 612825: std::__iterator_category(__first)); 612825: } 612825: 612825: template 612825: struct __equal 612825: { 612825: template 612825: 612825: static bool 612825: equal(_II1 __first1, _II1 __last1, _II2 __first2) 612825: { 612825: for (; __first1 != __last1; ++__first1, (void) ++__first2) 612825: if (!(*__first1 == *__first2)) 612825: return false; 612825: return true; 612825: } 612825: }; 612825: 612825: template<> 612825: struct __equal 612825: { 612825: template 612825: 612825: static bool 612825: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) 612825: { 612825: if (const size_t __len = (__last1 - __first1)) 612825: return !std::__memcmp(__first1, __first2, __len); 612825: return true; 612825: } 612825: }; 612825: 612825: template 612825: typename __gnu_cxx::__enable_if< 612825: __is_random_access_iter<_II>::__value, bool>::__type 612825: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, 612825: std::_Deque_iterator<_Tp, _Ref, _Ptr>, 612825: _II); 612825: 612825: template 612825: bool 612825: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 612825: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 612825: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 612825: 612825: template 612825: typename __gnu_cxx::__enable_if< 612825: __is_random_access_iter<_II>::__value, bool>::__type 612825: __equal_aux1(_II, _II, 612825: std::_Deque_iterator<_Tp, _Ref, _Ptr>); 612825: 612825: template 612825: 612825: inline bool 612825: __equal_aux1(_II1 __first1, _II1 __last1, _II2 __first2) 612825: { 612825: typedef typename iterator_traits<_II1>::value_type _ValueType1; 612825: const bool __simple = ((__is_integer<_ValueType1>::__value 612825: || __is_pointer<_ValueType1>::__value) 612825: && __memcmpable<_II1, _II2>::__value); 612825: return std::__equal<__simple>::equal(__first1, __last1, __first2); 612825: } 612825: 612825: template 612825: 612825: inline bool 612825: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) 612825: { 612825: return std::__equal_aux1(std::__niter_base(__first1), 612825: std::__niter_base(__last1), 612825: std::__niter_base(__first2)); 612825: } 612825: 612825: template 612825: bool 612825: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 612825: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 612825: _II2); 612825: 612825: template 612825: bool 612825: __equal_aux(_II1, _II1, 612825: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 612825: 612825: template 612825: bool 612825: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 612825: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, 612825: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); 612825: 612825: template 612825: struct __lc_rai 612825: { 612825: template 612825: 612825: static _II1 612825: __newlast1(_II1, _II1 __last1, _II2, _II2) 612825: { return __last1; } 612825: 612825: template 612825: 612825: static bool 612825: __cnd2(_II __first, _II __last) 612825: { return __first != __last; } 612825: }; 612825: 612825: template<> 612825: struct __lc_rai 612825: { 612825: template 612825: 612825: static _RAI1 612825: __newlast1(_RAI1 __first1, _RAI1 __last1, 612825: _RAI2 __first2, _RAI2 __last2) 612825: { 612825: const typename iterator_traits<_RAI1>::difference_type 612825: __diff1 = __last1 - __first1; 612825: const typename iterator_traits<_RAI2>::difference_type 612825: __diff2 = __last2 - __first2; 612825: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; 612825: } 612825: 612825: template 612825: static bool 612825: __cnd2(_RAI, _RAI) 612825: { return true; } 612825: }; 612825: 612825: template 612825: 612825: bool 612825: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, 612825: _II2 __first2, _II2 __last2, 612825: _Compare __comp) 612825: { 612825: typedef typename iterator_traits<_II1>::iterator_category _Category1; 612825: typedef typename iterator_traits<_II2>::iterator_category _Category2; 612825: typedef std::__lc_rai<_Category1, _Category2> __rai_type; 612825: 612825: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); 612825: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); 612825: ++__first1, (void)++__first2) 612825: { 612825: if (__comp(__first1, __first2)) 612825: return true; 612825: if (__comp(__first2, __first1)) 612825: return false; 612825: } 612825: return __first1 == __last1 && __first2 != __last2; 612825: } 612825: 612825: template 612825: struct __lexicographical_compare 612825: { 612825: template 612825: 612825: static bool 612825: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 612825: { 612825: using __gnu_cxx::__ops::__iter_less_iter; 612825: return std::__lexicographical_compare_impl(__first1, __last1, 612825: __first2, __last2, 612825: __iter_less_iter()); 612825: } 612825: 612825: template 612825: 612825: static int 612825: __3way(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 612825: { 612825: while (__first1 != __last1) 612825: { 612825: if (__first2 == __last2) 612825: return +1; 612825: if (*__first1 < *__first2) 612825: return -1; 612825: if (*__first2 < *__first1) 612825: return +1; 612825: ++__first1; 612825: ++__first2; 612825: } 612825: return int(__first2 == __last2) - 1; 612825: } 612825: }; 612825: 612825: template<> 612825: struct __lexicographical_compare 612825: { 612825: template 612825: 612825: static bool 612825: __lc(const _Tp* __first1, const _Tp* __last1, 612825: const _Up* __first2, const _Up* __last2) 612825: { return __3way(__first1, __last1, __first2, __last2) < 0; } 612825: 612825: template 612825: 612825: static ptrdiff_t 612825: __3way(const _Tp* __first1, const _Tp* __last1, 612825: const _Up* __first2, const _Up* __last2) 612825: { 612825: const size_t __len1 = __last1 - __first1; 612825: const size_t __len2 = __last2 - __first2; 612825: if (const size_t __len = std::min(__len1, __len2)) 612825: if (int __result = std::__memcmp(__first1, __first2, __len)) 612825: return __result; 612825: return ptrdiff_t(__len1 - __len2); 612825: } 612825: }; 612825: 612825: template 612825: 612825: inline bool 612825: __lexicographical_compare_aux1(_II1 __first1, _II1 __last1, 612825: _II2 __first2, _II2 __last2) 612825: { 612825: typedef typename iterator_traits<_II1>::value_type _ValueType1; 612825: typedef typename iterator_traits<_II2>::value_type _ValueType2; 612825: const bool __simple = 612825: (__is_memcmp_ordered_with<_ValueType1, _ValueType2>::__value 612825: && __is_pointer<_II1>::__value 612825: && __is_pointer<_II2>::__value 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ); 612825: 612825: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, 612825: __first2, __last2); 612825: } 612825: 612825: template 612825: bool 612825: __lexicographical_compare_aux1( 612825: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 612825: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 612825: _Tp2*, _Tp2*); 612825: 612825: template 612825: bool 612825: __lexicographical_compare_aux1(_Tp1*, _Tp1*, 612825: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, 612825: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 612825: 612825: template 612825: bool 612825: __lexicographical_compare_aux1( 612825: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 612825: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, 612825: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, 612825: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); 612825: 612825: template 612825: 612825: inline bool 612825: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, 612825: _II2 __first2, _II2 __last2) 612825: { 612825: return std::__lexicographical_compare_aux1(std::__niter_base(__first1), 612825: std::__niter_base(__last1), 612825: std::__niter_base(__first2), 612825: std::__niter_base(__last2)); 612825: } 612825: 612825: template 612825: bool 612825: __lexicographical_compare_aux( 612825: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 612825: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 612825: _II2, _II2); 612825: 612825: template 612825: bool 612825: __lexicographical_compare_aux( 612825: _II1, _II1, 612825: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, 612825: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); 612825: 612825: template 612825: bool 612825: __lexicographical_compare_aux( 612825: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 612825: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, 612825: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, 612825: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val, _Compare __comp) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::difference_type 612825: _DistanceType; 612825: 612825: _DistanceType __len = std::distance(__first, __last); 612825: 612825: while (__len > 0) 612825: { 612825: _DistanceType __half = __len >> 1; 612825: _ForwardIterator __middle = __first; 612825: std::advance(__middle, __half); 612825: if (__comp(__middle, __val)) 612825: { 612825: __first = __middle; 612825: ++__first; 612825: __len = __len - __half - 1; 612825: } 612825: else 612825: __len = __half; 612825: } 612825: return __first; 612825: } 612825: # 1486 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__lower_bound(__first, __last, __val, 612825: __gnu_cxx::__ops::__iter_less_val()); 612825: } 612825: 612825: 612825: 612825: inline constexpr int 612825: __lg(int __n) 612825: { return (int)sizeof(int) * 8 - 1 - __builtin_clz(__n); } 612825: 612825: inline constexpr unsigned 612825: __lg(unsigned __n) 612825: { return (int)sizeof(int) * 8 - 1 - __builtin_clz(__n); } 612825: 612825: inline constexpr long 612825: __lg(long __n) 612825: { return (int)sizeof(long) * 8 - 1 - __builtin_clzl(__n); } 612825: 612825: inline constexpr unsigned long 612825: __lg(unsigned long __n) 612825: { return (int)sizeof(long) * 8 - 1 - __builtin_clzl(__n); } 612825: 612825: inline constexpr long long 612825: __lg(long long __n) 612825: { return (int)sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } 612825: 612825: inline constexpr unsigned long long 612825: __lg(unsigned long long __n) 612825: { return (int)sizeof(long long) * 8 - 1 - __builtin_clzll(__n); } 612825: 612825: 612825: # 1542 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline bool 612825: equal(_II1 __first1, _II1 __last1, _II2 __first2) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__equal_aux(__first1, __last1, __first2); 612825: } 612825: # 1573 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline bool 612825: equal(_IIter1 __first1, _IIter1 __last1, 612825: _IIter2 __first2, _BinaryPredicate __binary_pred) 612825: { 612825: 612825: 612825: 612825: ; 612825: 612825: for (; __first1 != __last1; ++__first1, (void)++__first2) 612825: if (!bool(__binary_pred(*__first1, *__first2))) 612825: return false; 612825: return true; 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: inline bool 612825: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) 612825: { 612825: using _RATag = random_access_iterator_tag; 612825: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 612825: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 612825: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 612825: if (_RAIters()) 612825: { 612825: auto __d1 = std::distance(__first1, __last1); 612825: auto __d2 = std::distance(__first2, __last2); 612825: if (__d1 != __d2) 612825: return false; 612825: return std::equal(__first1, __last1, __first2); 612825: } 612825: 612825: for (; __first1 != __last1 && __first2 != __last2; 612825: ++__first1, (void)++__first2) 612825: if (!(*__first1 == *__first2)) 612825: return false; 612825: return __first1 == __last1 && __first2 == __last2; 612825: } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, 612825: _BinaryPredicate __binary_pred) 612825: { 612825: using _RATag = random_access_iterator_tag; 612825: using _Cat1 = typename iterator_traits<_II1>::iterator_category; 612825: using _Cat2 = typename iterator_traits<_II2>::iterator_category; 612825: using _RAIters = __and_, is_same<_Cat2, _RATag>>; 612825: if (_RAIters()) 612825: { 612825: auto __d1 = std::distance(__first1, __last1); 612825: auto __d2 = std::distance(__first2, __last2); 612825: if (__d1 != __d2) 612825: return false; 612825: return std::equal(__first1, __last1, __first2, 612825: __binary_pred); 612825: } 612825: 612825: for (; __first1 != __last1 && __first2 != __last2; 612825: ++__first1, (void)++__first2) 612825: if (!bool(__binary_pred(*__first1, *__first2))) 612825: return false; 612825: return __first1 == __last1 && __first2 == __last2; 612825: } 612825: # 1728 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline bool 612825: lexicographical_compare(_II1 __first1, _II1 __last1, 612825: _II2 __first2, _II2 __last2) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__lexicographical_compare_aux(__first1, __last1, 612825: __first2, __last2); 612825: } 612825: # 1763 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline bool 612825: lexicographical_compare(_II1 __first1, _II1 __last1, 612825: _II2 __first2, _II2 __last2, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__lexicographical_compare_impl 612825: (__first1, __last1, __first2, __last2, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: # 1875 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: pair<_InputIterator1, _InputIterator2> 612825: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 612825: { 612825: while (__first1 != __last1 && __binary_pred(__first1, __first2)) 612825: { 612825: ++__first1; 612825: ++__first2; 612825: } 612825: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); 612825: } 612825: # 1903 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline pair<_InputIterator1, _InputIterator2> 612825: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__mismatch(__first1, __last1, __first2, 612825: __gnu_cxx::__ops::__iter_equal_to_iter()); 612825: } 612825: # 1937 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline pair<_InputIterator1, _InputIterator2> 612825: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _BinaryPredicate __binary_pred) 612825: { 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__mismatch(__first1, __last1, __first2, 612825: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 612825: } 612825: # 2041 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: 612825: 612825: 612825: template 612825: 612825: inline _InputIterator 612825: __find_if(_InputIterator __first, _InputIterator __last, 612825: _Predicate __pred, input_iterator_tag) 612825: { 612825: while (__first != __last && !__pred(__first)) 612825: ++__first; 612825: return __first; 612825: } 612825: 612825: 612825: template 612825: 612825: _RandomAccessIterator 612825: __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Predicate __pred, random_access_iterator_tag) 612825: { 612825: typename iterator_traits<_RandomAccessIterator>::difference_type 612825: __trip_count = (__last - __first) >> 2; 612825: 612825: for (; __trip_count > 0; --__trip_count) 612825: { 612825: if (__pred(__first)) 612825: return __first; 612825: ++__first; 612825: 612825: if (__pred(__first)) 612825: return __first; 612825: ++__first; 612825: 612825: if (__pred(__first)) 612825: return __first; 612825: ++__first; 612825: 612825: if (__pred(__first)) 612825: return __first; 612825: ++__first; 612825: } 612825: 612825: switch (__last - __first) 612825: { 612825: case 3: 612825: if (__pred(__first)) 612825: return __first; 612825: ++__first; 612825: 612825: case 2: 612825: if (__pred(__first)) 612825: return __first; 612825: ++__first; 612825: 612825: case 1: 612825: if (__pred(__first)) 612825: return __first; 612825: ++__first; 612825: 612825: case 0: 612825: default: 612825: return __last; 612825: } 612825: } 612825: 612825: template 612825: 612825: inline _Iterator 612825: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) 612825: { 612825: return __find_if(__first, __last, __pred, 612825: std::__iterator_category(__first)); 612825: } 612825: 612825: template 612825: 612825: typename iterator_traits<_InputIterator>::difference_type 612825: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 612825: { 612825: typename iterator_traits<_InputIterator>::difference_type __n = 0; 612825: for (; __first != __last; ++__first) 612825: if (__pred(__first)) 612825: ++__n; 612825: return __n; 612825: } 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __remove_if(_ForwardIterator __first, _ForwardIterator __last, 612825: _Predicate __pred) 612825: { 612825: __first = std::__find_if(__first, __last, __pred); 612825: if (__first == __last) 612825: return __first; 612825: _ForwardIterator __result = __first; 612825: ++__first; 612825: for (; __first != __last; ++__first) 612825: if (!__pred(__first)) 612825: { 612825: *__result = std::move(*__first); 612825: ++__result; 612825: } 612825: return __result; 612825: } 612825: 612825: 612825: template 612825: 612825: bool 612825: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 612825: _ForwardIterator2 __first2, _BinaryPredicate __pred) 612825: { 612825: 612825: 612825: for (; __first1 != __last1; ++__first1, (void)++__first2) 612825: if (!__pred(__first1, __first2)) 612825: break; 612825: 612825: if (__first1 == __last1) 612825: return true; 612825: 612825: 612825: 612825: _ForwardIterator2 __last2 = __first2; 612825: std::advance(__last2, std::distance(__first1, __last1)); 612825: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) 612825: { 612825: if (__scan != std::__find_if(__first1, __scan, 612825: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) 612825: continue; 612825: 612825: auto __matches 612825: = std::__count_if(__first2, __last2, 612825: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); 612825: if (0 == __matches || 612825: std::__count_if(__scan, __last1, 612825: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) 612825: != __matches) 612825: return false; 612825: } 612825: return true; 612825: } 612825: # 2199 "/usr/include/c++/12/bits/stl_algobase.h" 3 612825: template 612825: 612825: inline bool 612825: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 612825: _ForwardIterator2 __first2) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__is_permutation(__first1, __last1, __first2, 612825: __gnu_cxx::__ops::__iter_equal_to_iter()); 612825: } 612825: 612825: 612825: 612825: } 612825: # 64 "/usr/include/c++/12/memory" 2 3 612825: # 1 "/usr/include/c++/12/bits/allocator.h" 1 3 612825: # 46 "/usr/include/c++/12/bits/allocator.h" 3 612825: # 1 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++allocator.h" 1 3 612825: # 33 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++allocator.h" 3 612825: # 1 "/usr/include/c++/12/bits/new_allocator.h" 1 3 612825: # 34 "/usr/include/c++/12/bits/new_allocator.h" 3 612825: # 1 "/usr/include/c++/12/new" 1 3 612825: # 38 "/usr/include/c++/12/new" 3 612825: 612825: # 39 "/usr/include/c++/12/new" 3 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/exception.h" 1 3 612825: # 34 "/usr/include/c++/12/bits/exception.h" 3 612825: 612825: # 35 "/usr/include/c++/12/bits/exception.h" 3 612825: 612825: #pragma GCC visibility push(default) 612825: 612825: 612825: 612825: extern "C++" { 612825: 612825: namespace std 612825: { 612825: # 61 "/usr/include/c++/12/bits/exception.h" 3 612825: class exception 612825: { 612825: public: 612825: exception() noexcept { } 612825: virtual ~exception() noexcept; 612825: 612825: exception(const exception&) = default; 612825: exception& operator=(const exception&) = default; 612825: exception(exception&&) = default; 612825: exception& operator=(exception&&) = default; 612825: 612825: 612825: 612825: 612825: virtual const char* 612825: what() const noexcept; 612825: }; 612825: 612825: 612825: 612825: } 612825: 612825: } 612825: 612825: #pragma GCC visibility pop 612825: # 42 "/usr/include/c++/12/new" 2 3 612825: 612825: #pragma GCC visibility push(default) 612825: 612825: extern "C++" { 612825: 612825: namespace std 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: class bad_alloc : public exception 612825: { 612825: public: 612825: bad_alloc() throw() { } 612825: 612825: 612825: bad_alloc(const bad_alloc&) = default; 612825: bad_alloc& operator=(const bad_alloc&) = default; 612825: 612825: 612825: 612825: 612825: virtual ~bad_alloc() throw(); 612825: 612825: 612825: virtual const char* what() const throw(); 612825: }; 612825: 612825: 612825: class bad_array_new_length : public bad_alloc 612825: { 612825: public: 612825: bad_array_new_length() throw() { } 612825: 612825: 612825: 612825: virtual ~bad_array_new_length() throw(); 612825: 612825: 612825: virtual const char* what() const throw(); 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: struct nothrow_t 612825: { 612825: 612825: explicit nothrow_t() = default; 612825: 612825: }; 612825: 612825: extern const nothrow_t nothrow; 612825: 612825: 612825: 612825: typedef void (*new_handler)(); 612825: 612825: 612825: 612825: new_handler set_new_handler(new_handler) throw(); 612825: 612825: 612825: 612825: new_handler get_new_handler() noexcept; 612825: 612825: } 612825: # 126 "/usr/include/c++/12/new" 3 612825: void* operator new(std::size_t) 612825: __attribute__((__externally_visible__)); 612825: void* operator new[](std::size_t) 612825: __attribute__((__externally_visible__)); 612825: void operator delete(void*) noexcept 612825: __attribute__((__externally_visible__)); 612825: void operator delete[](void*) noexcept 612825: __attribute__((__externally_visible__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: void* operator new(std::size_t, const std::nothrow_t&) noexcept 612825: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); 612825: void* operator new[](std::size_t, const std::nothrow_t&) noexcept 612825: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); 612825: void operator delete(void*, const std::nothrow_t&) noexcept 612825: __attribute__((__externally_visible__)); 612825: void operator delete[](void*, const std::nothrow_t&) noexcept 612825: __attribute__((__externally_visible__)); 612825: # 174 "/usr/include/c++/12/new" 3 612825: inline void* operator new(std::size_t, void* __p) noexcept 612825: { return __p; } 612825: inline void* operator new[](std::size_t, void* __p) noexcept 612825: { return __p; } 612825: 612825: 612825: inline void operator delete (void*, void*) noexcept { } 612825: inline void operator delete[](void*, void*) noexcept { } 612825: 612825: } 612825: # 236 "/usr/include/c++/12/new" 3 612825: #pragma GCC visibility pop 612825: # 35 "/usr/include/c++/12/bits/new_allocator.h" 2 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 55 "/usr/include/c++/12/bits/new_allocator.h" 3 612825: template 612825: class __new_allocator 612825: { 612825: public: 612825: typedef _Tp value_type; 612825: typedef std::size_t size_type; 612825: typedef std::ptrdiff_t difference_type; 612825: 612825: typedef _Tp* pointer; 612825: typedef const _Tp* const_pointer; 612825: typedef _Tp& reference; 612825: typedef const _Tp& const_reference; 612825: 612825: template 612825: struct rebind 612825: { typedef __new_allocator<_Tp1> other; }; 612825: 612825: 612825: 612825: 612825: 612825: typedef std::true_type propagate_on_container_move_assignment; 612825: 612825: 612825: 612825: __new_allocator() noexcept { } 612825: 612825: 612825: __new_allocator(const __new_allocator&) noexcept { } 612825: 612825: template 612825: 612825: __new_allocator(const __new_allocator<_Tp1>&) noexcept { } 612825: 612825: 612825: ~__new_allocator() noexcept { } 612825: 612825: pointer 612825: address(reference __x) const noexcept 612825: { return std::__addressof(__x); } 612825: 612825: const_pointer 612825: address(const_reference __x) const noexcept 612825: { return std::__addressof(__x); } 612825: # 111 "/usr/include/c++/12/bits/new_allocator.h" 3 612825: _Tp* 612825: allocate(size_type __n, const void* = static_cast(0)) 612825: { 612825: 612825: 612825: 612825: static_assert(sizeof(_Tp) != 0, "cannot allocate incomplete types"); 612825: 612825: 612825: if (__builtin_expect(__n > this->_M_max_size(), false)) 612825: { 612825: 612825: 612825: if (__n > (std::size_t(-1) / sizeof(_Tp))) 612825: std::__throw_bad_array_new_length(); 612825: std::__throw_bad_alloc(); 612825: } 612825: # 137 "/usr/include/c++/12/bits/new_allocator.h" 3 612825: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); 612825: } 612825: 612825: 612825: void 612825: deallocate(_Tp* __p, size_type __n __attribute__ ((__unused__))) 612825: { 612825: # 158 "/usr/include/c++/12/bits/new_allocator.h" 3 612825: ::operator delete((__p)); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: size_type 612825: max_size() const noexcept 612825: { return _M_max_size(); } 612825: 612825: 612825: template 612825: void 612825: construct(_Up* __p, _Args&&... __args) 612825: noexcept(std::is_nothrow_constructible<_Up, _Args...>::value) 612825: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } 612825: 612825: template 612825: void 612825: destroy(_Up* __p) 612825: noexcept(std::is_nothrow_destructible<_Up>::value) 612825: { __p->~_Up(); } 612825: # 194 "/usr/include/c++/12/bits/new_allocator.h" 3 612825: template 612825: friend bool 612825: operator==(const __new_allocator&, const __new_allocator<_Up>&) 612825: noexcept 612825: { return true; } 612825: 612825: 612825: template 612825: friend bool 612825: operator!=(const __new_allocator&, const __new_allocator<_Up>&) 612825: noexcept 612825: { return false; } 612825: 612825: 612825: private: 612825: constexpr size_type 612825: _M_max_size() const noexcept 612825: { 612825: 612825: return std::size_t(0x7fffffffffffffffL) / sizeof(_Tp); 612825: 612825: 612825: 612825: } 612825: }; 612825: 612825: 612825: } 612825: # 34 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++allocator.h" 2 3 612825: 612825: 612825: namespace std 612825: { 612825: # 46 "/usr/include/aarch64-linux-gnu/c++/12/bits/c++allocator.h" 3 612825: template 612825: using __allocator_base = __new_allocator<_Tp>; 612825: } 612825: # 47 "/usr/include/c++/12/bits/allocator.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/memoryfwd.h" 1 3 612825: # 46 "/usr/include/c++/12/bits/memoryfwd.h" 3 612825: 612825: # 47 "/usr/include/c++/12/bits/memoryfwd.h" 3 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 63 "/usr/include/c++/12/bits/memoryfwd.h" 3 612825: template 612825: class allocator; 612825: 612825: template<> 612825: class allocator; 612825: 612825: 612825: 612825: template 612825: struct uses_allocator; 612825: 612825: template 612825: struct allocator_traits; 612825: 612825: 612825: 612825: 612825: 612825: } 612825: # 48 "/usr/include/c++/12/bits/allocator.h" 2 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 71 "/usr/include/c++/12/bits/allocator.h" 3 612825: template<> 612825: class allocator 612825: { 612825: public: 612825: typedef void value_type; 612825: typedef size_t size_type; 612825: typedef ptrdiff_t difference_type; 612825: 612825: 612825: 612825: typedef void* pointer; 612825: typedef const void* const_pointer; 612825: 612825: template 612825: struct rebind 612825: { typedef allocator<_Tp1> other; }; 612825: 612825: 612825: 612825: 612825: 612825: using propagate_on_container_move_assignment = true_type; 612825: 612825: using is_always_equal 612825: 612825: = true_type; 612825: # 113 "/usr/include/c++/12/bits/allocator.h" 3 612825: }; 612825: # 123 "/usr/include/c++/12/bits/allocator.h" 3 612825: template 612825: class allocator : public __allocator_base<_Tp> 612825: { 612825: public: 612825: typedef _Tp value_type; 612825: typedef size_t size_type; 612825: typedef ptrdiff_t difference_type; 612825: 612825: 612825: 612825: typedef _Tp* pointer; 612825: typedef const _Tp* const_pointer; 612825: typedef _Tp& reference; 612825: typedef const _Tp& const_reference; 612825: 612825: template 612825: struct rebind 612825: { typedef allocator<_Tp1> other; }; 612825: 612825: 612825: 612825: 612825: 612825: using propagate_on_container_move_assignment = true_type; 612825: 612825: using is_always_equal 612825: 612825: = true_type; 612825: 612825: 612825: 612825: 612825: 612825: allocator() noexcept { } 612825: 612825: 612825: allocator(const allocator& __a) noexcept 612825: : __allocator_base<_Tp>(__a) { } 612825: 612825: 612825: 612825: allocator& operator=(const allocator&) = default; 612825: 612825: 612825: template 612825: 612825: allocator(const allocator<_Tp1>&) noexcept { } 612825: 612825: 612825: 612825: 612825: ~allocator() noexcept { } 612825: # 204 "/usr/include/c++/12/bits/allocator.h" 3 612825: friend bool 612825: operator==(const allocator&, const allocator&) noexcept 612825: { return true; } 612825: 612825: 612825: friend bool 612825: operator!=(const allocator&, const allocator&) noexcept 612825: { return false; } 612825: 612825: 612825: 612825: }; 612825: 612825: template 612825: inline bool 612825: operator==(const allocator<_T1>&, const allocator<_T2>&) 612825: noexcept 612825: { return true; } 612825: 612825: 612825: template 612825: inline bool 612825: operator!=(const allocator<_T1>&, const allocator<_T2>&) 612825: noexcept 612825: { return false; } 612825: 612825: 612825: 612825: 612825: template 612825: class allocator 612825: { 612825: public: 612825: typedef _Tp value_type; 612825: template allocator(const allocator<_Up>&) { } 612825: }; 612825: 612825: template 612825: class allocator 612825: { 612825: public: 612825: typedef _Tp value_type; 612825: template allocator(const allocator<_Up>&) { } 612825: }; 612825: 612825: template 612825: class allocator 612825: { 612825: public: 612825: typedef _Tp value_type; 612825: template allocator(const allocator<_Up>&) { } 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern template class allocator; 612825: extern template class allocator; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct __alloc_swap 612825: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; 612825: 612825: template 612825: struct __alloc_swap<_Alloc, false> 612825: { 612825: static void 612825: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept 612825: { 612825: 612825: if (__one != __two) 612825: swap(__one, __two); 612825: } 612825: }; 612825: 612825: 612825: template 612825: struct __alloc_neq 612825: { 612825: static bool 612825: _S_do_it(const _Alloc&, const _Alloc&) 612825: { return false; } 612825: }; 612825: 612825: template 612825: struct __alloc_neq<_Alloc, false> 612825: { 612825: static bool 612825: _S_do_it(const _Alloc& __one, const _Alloc& __two) 612825: { return __one != __two; } 612825: }; 612825: 612825: 612825: template, 612825: is_nothrow_move_constructible>::value> 612825: struct __shrink_to_fit_aux 612825: { static bool _S_do_it(_Tp&) noexcept { return false; } }; 612825: 612825: template 612825: struct __shrink_to_fit_aux<_Tp, true> 612825: { 612825: 612825: static bool 612825: _S_do_it(_Tp& __c) noexcept 612825: { 612825: 612825: try 612825: { 612825: _Tp(__make_move_if_noexcept_iterator(__c.begin()), 612825: __make_move_if_noexcept_iterator(__c.end()), 612825: __c.get_allocator()).swap(__c); 612825: return true; 612825: } 612825: catch(...) 612825: { return false; } 612825: 612825: 612825: 612825: } 612825: }; 612825: 612825: 612825: 612825: } 612825: # 65 "/usr/include/c++/12/memory" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_construct.h" 1 3 612825: # 73 "/usr/include/c++/12/bits/stl_construct.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 106 "/usr/include/c++/12/bits/stl_construct.h" 3 612825: template 612825: 612825: inline void 612825: _Construct(_Tp* __p, _Args&&... __args) 612825: { 612825: # 119 "/usr/include/c++/12/bits/stl_construct.h" 3 612825: ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); 612825: } 612825: # 132 "/usr/include/c++/12/bits/stl_construct.h" 3 612825: template 612825: inline void 612825: _Construct_novalue(_T1* __p) 612825: { ::new((void*)__p) _T1; } 612825: 612825: template 612825: void 612825: _Destroy(_ForwardIterator __first, _ForwardIterator __last); 612825: 612825: 612825: 612825: 612825: template 612825: inline void 612825: _Destroy(_Tp* __pointer) 612825: { 612825: 612825: 612825: 612825: __pointer->~_Tp(); 612825: 612825: } 612825: 612825: template 612825: struct _Destroy_aux 612825: { 612825: template 612825: static void 612825: __destroy(_ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: for (; __first != __last; ++__first) 612825: std::_Destroy(std::__addressof(*__first)); 612825: } 612825: }; 612825: 612825: template<> 612825: struct _Destroy_aux 612825: { 612825: template 612825: static void 612825: __destroy(_ForwardIterator, _ForwardIterator) { } 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline void 612825: _Destroy(_ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _Value_type; 612825: 612825: 612825: static_assert(is_destructible<_Value_type>::value, 612825: "value type is destructible"); 612825: 612825: 612825: 612825: 612825: 612825: std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: 612825: __destroy(__first, __last); 612825: } 612825: 612825: template 612825: struct _Destroy_n_aux 612825: { 612825: template 612825: static _ForwardIterator 612825: __destroy_n(_ForwardIterator __first, _Size __count) 612825: { 612825: for (; __count > 0; (void)++__first, --__count) 612825: std::_Destroy(std::__addressof(*__first)); 612825: return __first; 612825: } 612825: }; 612825: 612825: template<> 612825: struct _Destroy_n_aux 612825: { 612825: template 612825: static _ForwardIterator 612825: __destroy_n(_ForwardIterator __first, _Size __count) 612825: { 612825: std::advance(__first, __count); 612825: return __first; 612825: } 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline _ForwardIterator 612825: _Destroy_n(_ForwardIterator __first, _Size __count) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _Value_type; 612825: 612825: 612825: static_assert(is_destructible<_Value_type>::value, 612825: "value type is destructible"); 612825: 612825: 612825: 612825: 612825: 612825: return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>:: 612825: __destroy_n(__first, __count); 612825: } 612825: # 264 "/usr/include/c++/12/bits/stl_construct.h" 3 612825: 612825: } 612825: # 66 "/usr/include/c++/12/memory" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_uninitialized.h" 1 3 612825: # 64 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: # 1 "/usr/include/c++/12/ext/alloc_traits.h" 1 3 612825: # 32 "/usr/include/c++/12/ext/alloc_traits.h" 3 612825: 612825: # 33 "/usr/include/c++/12/ext/alloc_traits.h" 3 612825: 612825: # 1 "/usr/include/c++/12/bits/alloc_traits.h" 1 3 612825: # 41 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: struct __allocator_traits_base 612825: { 612825: template 612825: struct __rebind : __replace_first_arg<_Tp, _Up> { }; 612825: 612825: template 612825: struct __rebind<_Tp, _Up, 612825: __void_t::other>> 612825: { using type = typename _Tp::template rebind<_Up>::other; }; 612825: 612825: protected: 612825: template 612825: using __pointer = typename _Tp::pointer; 612825: template 612825: using __c_pointer = typename _Tp::const_pointer; 612825: template 612825: using __v_pointer = typename _Tp::void_pointer; 612825: template 612825: using __cv_pointer = typename _Tp::const_void_pointer; 612825: template 612825: using __pocca = typename _Tp::propagate_on_container_copy_assignment; 612825: template 612825: using __pocma = typename _Tp::propagate_on_container_move_assignment; 612825: template 612825: using __pocs = typename _Tp::propagate_on_container_swap; 612825: template 612825: using __equal = typename _Tp::is_always_equal; 612825: }; 612825: 612825: template 612825: using __alloc_rebind 612825: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; 612825: # 89 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: template 612825: struct allocator_traits : __allocator_traits_base 612825: { 612825: 612825: typedef _Alloc allocator_type; 612825: 612825: typedef typename _Alloc::value_type value_type; 612825: 612825: 612825: 612825: 612825: 612825: 612825: using pointer = __detected_or_t; 612825: 612825: private: 612825: 612825: template class _Func, typename _Tp, typename = void> 612825: struct _Ptr 612825: { 612825: using type = typename pointer_traits::template rebind<_Tp>; 612825: }; 612825: 612825: template class _Func, typename _Tp> 612825: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> 612825: { 612825: using type = _Func<_Alloc>; 612825: }; 612825: 612825: 612825: template 612825: struct _Diff 612825: { using type = typename pointer_traits<_PtrT>::difference_type; }; 612825: 612825: template 612825: struct _Diff<_A2, _PtrT, __void_t> 612825: { using type = typename _A2::difference_type; }; 612825: 612825: 612825: template 612825: struct _Size : make_unsigned<_DiffT> { }; 612825: 612825: template 612825: struct _Size<_A2, _DiffT, __void_t> 612825: { using type = typename _A2::size_type; }; 612825: 612825: public: 612825: 612825: 612825: 612825: 612825: 612825: 612825: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: using void_pointer = typename _Ptr<__v_pointer, void>::type; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: using difference_type = typename _Diff<_Alloc, pointer>::type; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: using size_type = typename _Size<_Alloc, difference_type>::type; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: using propagate_on_container_copy_assignment 612825: = __detected_or_t; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: using propagate_on_container_move_assignment 612825: = __detected_or_t; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: using propagate_on_container_swap 612825: = __detected_or_t; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: using is_always_equal 612825: = __detected_or_t::type, __equal, _Alloc>; 612825: 612825: template 612825: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; 612825: template 612825: using rebind_traits = allocator_traits>; 612825: 612825: private: 612825: template 612825: static constexpr auto 612825: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int) 612825: -> decltype(__a.allocate(__n, __hint)) 612825: { return __a.allocate(__n, __hint); } 612825: 612825: template 612825: static constexpr pointer 612825: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...) 612825: { return __a.allocate(__n); } 612825: 612825: template 612825: struct __construct_helper 612825: { 612825: template()->construct( 612825: std::declval<_Tp*>(), std::declval<_Args>()...))> 612825: static true_type __test(int); 612825: 612825: template 612825: static false_type __test(...); 612825: 612825: using type = decltype(__test<_Alloc>(0)); 612825: }; 612825: 612825: template 612825: using __has_construct 612825: = typename __construct_helper<_Tp, _Args...>::type; 612825: 612825: template 612825: static _Require<__has_construct<_Tp, _Args...>> 612825: _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 612825: noexcept(noexcept(__a.construct(__p, std::forward<_Args>(__args)...))) 612825: { __a.construct(__p, std::forward<_Args>(__args)...); } 612825: 612825: template 612825: static 612825: _Require<__and_<__not_<__has_construct<_Tp, _Args...>>, 612825: is_constructible<_Tp, _Args...>>> 612825: _S_construct(_Alloc&, _Tp* __p, _Args&&... __args) 612825: noexcept(std::is_nothrow_constructible<_Tp, _Args...>::value) 612825: { 612825: 612825: ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); 612825: 612825: 612825: 612825: } 612825: 612825: template 612825: static auto 612825: _S_destroy(_Alloc2& __a, _Tp* __p, int) 612825: noexcept(noexcept(__a.destroy(__p))) 612825: -> decltype(__a.destroy(__p)) 612825: { __a.destroy(__p); } 612825: 612825: template 612825: static void 612825: _S_destroy(_Alloc2&, _Tp* __p, ...) 612825: noexcept(std::is_nothrow_destructible<_Tp>::value) 612825: { std::_Destroy(__p); } 612825: 612825: template 612825: static constexpr auto 612825: _S_max_size(_Alloc2& __a, int) 612825: -> decltype(__a.max_size()) 612825: { return __a.max_size(); } 612825: 612825: template 612825: static constexpr size_type 612825: _S_max_size(_Alloc2&, ...) 612825: { 612825: 612825: 612825: return __gnu_cxx::__numeric_traits::__max 612825: / sizeof(value_type); 612825: } 612825: 612825: template 612825: static constexpr auto 612825: _S_select(_Alloc2& __a, int) 612825: -> decltype(__a.select_on_container_copy_construction()) 612825: { return __a.select_on_container_copy_construction(); } 612825: 612825: template 612825: static constexpr _Alloc2 612825: _S_select(_Alloc2& __a, ...) 612825: { return __a; } 612825: 612825: public: 612825: # 316 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: static pointer 612825: allocate(_Alloc& __a, size_type __n) 612825: { return __a.allocate(__n); } 612825: # 331 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: static pointer 612825: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) 612825: { return _S_allocate(__a, __n, __hint, 0); } 612825: # 343 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: static void 612825: deallocate(_Alloc& __a, pointer __p, size_type __n) 612825: { __a.deallocate(__p, __n); } 612825: # 358 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: template 612825: static auto 612825: construct(_Alloc& __a, _Tp* __p, _Args&&... __args) 612825: noexcept(noexcept(_S_construct(__a, __p, 612825: std::forward<_Args>(__args)...))) 612825: -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...)) 612825: { _S_construct(__a, __p, std::forward<_Args>(__args)...); } 612825: # 374 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: template 612825: static void 612825: destroy(_Alloc& __a, _Tp* __p) 612825: noexcept(noexcept(_S_destroy(__a, __p, 0))) 612825: { _S_destroy(__a, __p, 0); } 612825: # 388 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: static size_type 612825: max_size(const _Alloc& __a) noexcept 612825: { return _S_max_size(__a, 0); } 612825: # 400 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: static _Alloc 612825: select_on_container_copy_construction(const _Alloc& __rhs) 612825: { return _S_select(__rhs, 0); } 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct allocator_traits> 612825: { 612825: 612825: using allocator_type = allocator<_Tp>; 612825: 612825: 612825: using value_type = _Tp; 612825: 612825: 612825: using pointer = _Tp*; 612825: 612825: 612825: using const_pointer = const _Tp*; 612825: 612825: 612825: using void_pointer = void*; 612825: 612825: 612825: using const_void_pointer = const void*; 612825: 612825: 612825: using difference_type = std::ptrdiff_t; 612825: 612825: 612825: using size_type = std::size_t; 612825: 612825: 612825: using propagate_on_container_copy_assignment = false_type; 612825: 612825: 612825: using propagate_on_container_move_assignment = true_type; 612825: 612825: 612825: using propagate_on_container_swap = false_type; 612825: 612825: 612825: using is_always_equal = true_type; 612825: 612825: template 612825: using rebind_alloc = allocator<_Up>; 612825: 612825: template 612825: using rebind_traits = allocator_traits>; 612825: # 462 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: static pointer 612825: allocate(allocator_type& __a, size_type __n) 612825: { return __a.allocate(__n); } 612825: # 476 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: static pointer 612825: allocate(allocator_type& __a, size_type __n, const_void_pointer __hint) 612825: { 612825: 612825: return __a.allocate(__n, __hint); 612825: 612825: 612825: 612825: } 612825: # 494 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: static void 612825: deallocate(allocator_type& __a, pointer __p, size_type __n) 612825: { __a.deallocate(__p, __n); } 612825: # 509 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: template 612825: static void 612825: construct(allocator_type& __a __attribute__((__unused__)), _Up* __p, 612825: _Args&&... __args) 612825: noexcept(std::is_nothrow_constructible<_Up, _Args...>::value) 612825: { 612825: 612825: __a.construct(__p, std::forward<_Args>(__args)...); 612825: 612825: 612825: 612825: } 612825: # 529 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: template 612825: static void 612825: destroy(allocator_type& __a __attribute__((__unused__)), _Up* __p) 612825: noexcept(is_nothrow_destructible<_Up>::value) 612825: { 612825: 612825: __a.destroy(__p); 612825: 612825: 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: static size_type 612825: max_size(const allocator_type& __a __attribute__((__unused__))) noexcept 612825: { 612825: 612825: return __a.max_size(); 612825: 612825: 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: static allocator_type 612825: select_on_container_copy_construction(const allocator_type& __rhs) 612825: { return __rhs; } 612825: }; 612825: 612825: 612825: template<> 612825: struct allocator_traits> 612825: { 612825: 612825: using allocator_type = allocator; 612825: 612825: 612825: using value_type = void; 612825: 612825: 612825: using pointer = void*; 612825: 612825: 612825: using const_pointer = const void*; 612825: 612825: 612825: using void_pointer = void*; 612825: 612825: 612825: using const_void_pointer = const void*; 612825: 612825: 612825: using difference_type = std::ptrdiff_t; 612825: 612825: 612825: using size_type = std::size_t; 612825: 612825: 612825: using propagate_on_container_copy_assignment = false_type; 612825: 612825: 612825: using propagate_on_container_move_assignment = true_type; 612825: 612825: 612825: using propagate_on_container_swap = false_type; 612825: 612825: 612825: using is_always_equal = true_type; 612825: 612825: template 612825: using rebind_alloc = allocator<_Up>; 612825: 612825: template 612825: using rebind_traits = allocator_traits>; 612825: 612825: 612825: static void* 612825: allocate(allocator_type&, size_type, const void* = nullptr) = delete; 612825: 612825: 612825: static void 612825: deallocate(allocator_type&, void*, size_type) = delete; 612825: # 631 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: template 612825: static void 612825: construct(allocator_type&, _Up* __p, _Args&&... __args) 612825: noexcept(std::is_nothrow_constructible<_Up, _Args...>::value) 612825: { std::_Construct(__p, std::forward<_Args>(__args)...); } 612825: # 644 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: template 612825: static void 612825: destroy(allocator_type&, _Up* __p) 612825: noexcept(is_nothrow_destructible<_Up>::value) 612825: { std::_Destroy(__p); } 612825: 612825: 612825: static size_type 612825: max_size(const allocator_type&) = delete; 612825: 612825: 612825: 612825: 612825: 612825: 612825: static allocator_type 612825: select_on_container_copy_construction(const allocator_type& __rhs) 612825: { return __rhs; } 612825: }; 612825: 612825: 612825: template 612825: inline void 612825: __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type) 612825: { __one = __two; } 612825: 612825: template 612825: inline void 612825: __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type) 612825: { } 612825: 612825: 612825: template 612825: inline void 612825: __alloc_on_copy(_Alloc& __one, const _Alloc& __two) 612825: { 612825: typedef allocator_traits<_Alloc> __traits; 612825: typedef typename __traits::propagate_on_container_copy_assignment __pocca; 612825: 612825: 612825: 612825: 612825: __do_alloc_on_copy(__one, __two, __pocca()); 612825: 612825: } 612825: 612825: template 612825: constexpr _Alloc 612825: __alloc_on_copy(const _Alloc& __a) 612825: { 612825: typedef allocator_traits<_Alloc> __traits; 612825: return __traits::select_on_container_copy_construction(__a); 612825: } 612825: 612825: 612825: template 612825: inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type) 612825: { __one = std::move(__two); } 612825: 612825: template 612825: inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type) 612825: { } 612825: 612825: 612825: template 612825: inline void 612825: __alloc_on_move(_Alloc& __one, _Alloc& __two) 612825: { 612825: typedef allocator_traits<_Alloc> __traits; 612825: typedef typename __traits::propagate_on_container_move_assignment __pocma; 612825: 612825: 612825: 612825: 612825: __do_alloc_on_move(__one, __two, __pocma()); 612825: 612825: } 612825: 612825: 612825: template 612825: inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type) 612825: { 612825: using std::swap; 612825: swap(__one, __two); 612825: } 612825: 612825: template 612825: inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type) 612825: { } 612825: 612825: 612825: template 612825: inline void 612825: __alloc_on_swap(_Alloc& __one, _Alloc& __two) 612825: { 612825: typedef allocator_traits<_Alloc> __traits; 612825: typedef typename __traits::propagate_on_container_swap __pocs; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: __do_alloc_on_swap(__one, __two, __pocs()); 612825: 612825: } 612825: 612825: template, 612825: typename = void> 612825: struct __is_alloc_insertable_impl 612825: : false_type 612825: { }; 612825: 612825: template 612825: struct __is_alloc_insertable_impl<_Alloc, _Tp, _ValueT, 612825: __void_t::construct( 612825: std::declval<_Alloc&>(), std::declval<_ValueT*>(), 612825: std::declval<_Tp>()))>> 612825: : true_type 612825: { }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __is_copy_insertable 612825: : __is_alloc_insertable_impl<_Alloc, 612825: typename _Alloc::value_type const&>::type 612825: { }; 612825: 612825: 612825: template 612825: struct __is_copy_insertable> 612825: : is_copy_constructible<_Tp> 612825: { }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __is_move_insertable 612825: : __is_alloc_insertable_impl<_Alloc, typename _Alloc::value_type>::type 612825: { }; 612825: 612825: 612825: template 612825: struct __is_move_insertable> 612825: : is_move_constructible<_Tp> 612825: { }; 612825: 612825: 612825: template 612825: struct __is_allocator : false_type { }; 612825: 612825: template 612825: struct __is_allocator<_Alloc, 612825: __void_t().allocate(size_t{}))>> 612825: : true_type { }; 612825: 612825: template 612825: using _RequireAllocator 612825: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; 612825: 612825: template 612825: using _RequireNotAllocator 612825: = typename enable_if::value, _Alloc>::type; 612825: # 829 "/usr/include/c++/12/bits/alloc_traits.h" 3 612825: template 612825: 612825: void 612825: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 612825: _Allocator& __alloc) 612825: { 612825: for (; __first != __last; ++__first) 612825: 612825: 612825: 612825: allocator_traits<_Allocator>::destroy(__alloc, 612825: std::__addressof(*__first)); 612825: 612825: } 612825: 612825: template 612825: 612825: inline void 612825: _Destroy(_ForwardIterator __first, _ForwardIterator __last, 612825: allocator<_Tp>&) 612825: { 612825: _Destroy(__first, __last); 612825: } 612825: 612825: 612825: } 612825: # 35 "/usr/include/c++/12/ext/alloc_traits.h" 2 3 612825: 612825: 612825: 612825: 612825: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct __alloc_traits 612825: 612825: : std::allocator_traits<_Alloc> 612825: 612825: { 612825: typedef _Alloc allocator_type; 612825: 612825: typedef std::allocator_traits<_Alloc> _Base_type; 612825: typedef typename _Base_type::value_type value_type; 612825: typedef typename _Base_type::pointer pointer; 612825: typedef typename _Base_type::const_pointer const_pointer; 612825: typedef typename _Base_type::size_type size_type; 612825: typedef typename _Base_type::difference_type difference_type; 612825: 612825: typedef value_type& reference; 612825: typedef const value_type& const_reference; 612825: using _Base_type::allocate; 612825: using _Base_type::deallocate; 612825: using _Base_type::construct; 612825: using _Base_type::destroy; 612825: using _Base_type::max_size; 612825: 612825: private: 612825: template 612825: using __is_custom_pointer 612825: = std::__and_, 612825: std::__not_>>; 612825: 612825: public: 612825: 612825: template 612825: static 612825: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 612825: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) 612825: noexcept(noexcept(_Base_type::construct(__a, std::__to_address(__p), 612825: std::forward<_Args>(__args)...))) 612825: { 612825: _Base_type::construct(__a, std::__to_address(__p), 612825: std::forward<_Args>(__args)...); 612825: } 612825: 612825: 612825: template 612825: static 612825: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> 612825: destroy(_Alloc& __a, _Ptr __p) 612825: noexcept(noexcept(_Base_type::destroy(__a, std::__to_address(__p)))) 612825: { _Base_type::destroy(__a, std::__to_address(__p)); } 612825: 612825: static constexpr _Alloc _S_select_on_copy(const _Alloc& __a) 612825: { return _Base_type::select_on_container_copy_construction(__a); } 612825: 612825: static void _S_on_swap(_Alloc& __a, _Alloc& __b) 612825: { std::__alloc_on_swap(__a, __b); } 612825: 612825: static constexpr bool _S_propagate_on_copy_assign() 612825: { return _Base_type::propagate_on_container_copy_assignment::value; } 612825: 612825: static constexpr bool _S_propagate_on_move_assign() 612825: { return _Base_type::propagate_on_container_move_assignment::value; } 612825: 612825: static constexpr bool _S_propagate_on_swap() 612825: { return _Base_type::propagate_on_container_swap::value; } 612825: 612825: static constexpr bool _S_always_equal() 612825: { return _Base_type::is_always_equal::value; } 612825: 612825: static constexpr bool _S_nothrow_move() 612825: { return _S_propagate_on_move_assign() || _S_always_equal(); } 612825: 612825: template 612825: struct rebind 612825: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; 612825: # 166 "/usr/include/c++/12/ext/alloc_traits.h" 3 612825: }; 612825: 612825: 612825: } 612825: # 65 "/usr/include/c++/12/bits/stl_uninitialized.h" 2 3 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 81 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: template 612825: constexpr bool 612825: __check_constructible() 612825: { 612825: 612825: 612825: 612825: 612825: 612825: static_assert(is_constructible<_ValueType, _Tp>::value, 612825: "result type must be constructible from input type"); 612825: 612825: return true; 612825: } 612825: # 110 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: template 612825: 612825: _ForwardIterator 612825: __do_uninit_copy(_InputIterator __first, _InputIterator __last, 612825: _ForwardIterator __result) 612825: { 612825: _ForwardIterator __cur = __result; 612825: try 612825: { 612825: for (; __first != __last; ++__first, (void)++__cur) 612825: std::_Construct(std::__addressof(*__cur), *__first); 612825: return __cur; 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__result, __cur); 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: struct __uninitialized_copy 612825: { 612825: template 612825: static _ForwardIterator 612825: __uninit_copy(_InputIterator __first, _InputIterator __last, 612825: _ForwardIterator __result) 612825: { return std::__do_uninit_copy(__first, __last, __result); } 612825: }; 612825: 612825: template<> 612825: struct __uninitialized_copy 612825: { 612825: template 612825: static _ForwardIterator 612825: __uninit_copy(_InputIterator __first, _InputIterator __last, 612825: _ForwardIterator __result) 612825: { return std::copy(__first, __last, __result); } 612825: }; 612825: # 161 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: template 612825: inline _ForwardIterator 612825: uninitialized_copy(_InputIterator __first, _InputIterator __last, 612825: _ForwardIterator __result) 612825: { 612825: typedef typename iterator_traits<_InputIterator>::value_type 612825: _ValueType1; 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _ValueType2; 612825: 612825: 612825: 612825: 612825: const bool __can_memmove = __is_trivial(_ValueType1); 612825: 612825: 612825: 612825: 612825: using _From = decltype(*__first); 612825: 612825: const bool __assignable 612825: = __is_trivial(_ValueType2) && __is_assignable(_ValueType2&, _From) && std::__check_constructible<_ValueType2, _From>(); 612825: 612825: return std::__uninitialized_copy<__can_memmove && __assignable>:: 612825: __uninit_copy(__first, __last, __result); 612825: } 612825: 612825: 612825: 612825: template 612825: void 612825: __do_uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __x) 612825: { 612825: _ForwardIterator __cur = __first; 612825: try 612825: { 612825: for (; __cur != __last; ++__cur) 612825: std::_Construct(std::__addressof(*__cur), __x); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur); 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: struct __uninitialized_fill 612825: { 612825: template 612825: static void 612825: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __x) 612825: { std::__do_uninit_fill(__first, __last, __x); } 612825: }; 612825: 612825: template<> 612825: struct __uninitialized_fill 612825: { 612825: template 612825: static void 612825: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __x) 612825: { std::fill(__first, __last, __x); } 612825: }; 612825: # 239 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: template 612825: inline void 612825: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __x) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _ValueType; 612825: 612825: 612825: 612825: const bool __can_fill 612825: = __is_trivial(_ValueType) && __is_assignable(_ValueType&, const _Tp&) && std::__check_constructible<_ValueType, const _Tp&>(); 612825: 612825: std::__uninitialized_fill<__can_fill>:: 612825: __uninit_fill(__first, __last, __x); 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __do_uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 612825: { 612825: _ForwardIterator __cur = __first; 612825: try 612825: { 612825: for (; __n > 0; --__n, (void) ++__cur) 612825: std::_Construct(std::__addressof(*__cur), __x); 612825: return __cur; 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur); 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: struct __uninitialized_fill_n 612825: { 612825: template 612825: static _ForwardIterator 612825: __uninit_fill_n(_ForwardIterator __first, _Size __n, 612825: const _Tp& __x) 612825: { return std::__do_uninit_fill_n(__first, __n, __x); } 612825: }; 612825: 612825: template<> 612825: struct __uninitialized_fill_n 612825: { 612825: template 612825: static _ForwardIterator 612825: __uninit_fill_n(_ForwardIterator __first, _Size __n, 612825: const _Tp& __x) 612825: { return std::fill_n(__first, __n, __x); } 612825: }; 612825: # 310 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: template 612825: inline _ForwardIterator 612825: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _ValueType; 612825: 612825: 612825: 612825: const bool __can_fill 612825: = __is_trivial(_ValueType) && __is_assignable(_ValueType&, const _Tp&) && std::__check_constructible<_ValueType, const _Tp&>() 612825: 612825: 612825: 612825: && __is_integer<_Size>::__value; 612825: 612825: return __uninitialized_fill_n<__can_fill>:: 612825: __uninit_fill_n(__first, __n, __x); 612825: } 612825: # 340 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: template 612825: 612825: _ForwardIterator 612825: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 612825: _ForwardIterator __result, _Allocator& __alloc) 612825: { 612825: _ForwardIterator __cur = __result; 612825: try 612825: { 612825: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 612825: for (; __first != __last; ++__first, (void)++__cur) 612825: __traits::construct(__alloc, std::__addressof(*__cur), *__first); 612825: return __cur; 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__result, __cur, __alloc); 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: 612825: inline _ForwardIterator 612825: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, 612825: _ForwardIterator __result, allocator<_Tp>&) 612825: { 612825: 612825: 612825: 612825: 612825: return std::uninitialized_copy(__first, __last, __result); 612825: } 612825: 612825: template 612825: 612825: inline _ForwardIterator 612825: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, 612825: _ForwardIterator __result, _Allocator& __alloc) 612825: { 612825: return std::__uninitialized_copy_a(std::make_move_iterator(__first), 612825: std::make_move_iterator(__last), 612825: __result, __alloc); 612825: } 612825: 612825: template 612825: 612825: inline _ForwardIterator 612825: __uninitialized_move_if_noexcept_a(_InputIterator __first, 612825: _InputIterator __last, 612825: _ForwardIterator __result, 612825: _Allocator& __alloc) 612825: { 612825: return std::__uninitialized_copy_a 612825: (std::__make_move_if_noexcept_iterator(__first), 612825: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); 612825: } 612825: 612825: template 612825: 612825: void 612825: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __x, _Allocator& __alloc) 612825: { 612825: _ForwardIterator __cur = __first; 612825: try 612825: { 612825: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 612825: for (; __cur != __last; ++__cur) 612825: __traits::construct(__alloc, std::__addressof(*__cur), __x); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur, __alloc); 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: 612825: inline void 612825: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __x, allocator<_Tp2>&) 612825: { 612825: 612825: 612825: 612825: 612825: std::uninitialized_fill(__first, __last, __x); 612825: } 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 612825: const _Tp& __x, _Allocator& __alloc) 612825: { 612825: _ForwardIterator __cur = __first; 612825: try 612825: { 612825: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 612825: for (; __n > 0; --__n, (void) ++__cur) 612825: __traits::construct(__alloc, std::__addressof(*__cur), __x); 612825: return __cur; 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur, __alloc); 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: 612825: inline _ForwardIterator 612825: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, 612825: const _Tp& __x, allocator<_Tp2>&) 612825: { 612825: 612825: 612825: 612825: 612825: return std::uninitialized_fill_n(__first, __n, __x); 612825: } 612825: # 480 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: template 612825: inline _ForwardIterator 612825: __uninitialized_copy_move(_InputIterator1 __first1, 612825: _InputIterator1 __last1, 612825: _InputIterator2 __first2, 612825: _InputIterator2 __last2, 612825: _ForwardIterator __result, 612825: _Allocator& __alloc) 612825: { 612825: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, 612825: __result, 612825: __alloc); 612825: try 612825: { 612825: return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__result, __mid, __alloc); 612825: throw; 612825: } 612825: } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline _ForwardIterator 612825: __uninitialized_move_copy(_InputIterator1 __first1, 612825: _InputIterator1 __last1, 612825: _InputIterator2 __first2, 612825: _InputIterator2 __last2, 612825: _ForwardIterator __result, 612825: _Allocator& __alloc) 612825: { 612825: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, 612825: __result, 612825: __alloc); 612825: try 612825: { 612825: return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__result, __mid, __alloc); 612825: throw; 612825: } 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: inline _ForwardIterator 612825: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, 612825: const _Tp& __x, _InputIterator __first, 612825: _InputIterator __last, _Allocator& __alloc) 612825: { 612825: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); 612825: try 612825: { 612825: return std::__uninitialized_move_a(__first, __last, __mid, __alloc); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__result, __mid, __alloc); 612825: throw; 612825: } 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: inline void 612825: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, 612825: _ForwardIterator __first2, 612825: _ForwardIterator __last2, const _Tp& __x, 612825: _Allocator& __alloc) 612825: { 612825: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, 612825: __first2, 612825: __alloc); 612825: try 612825: { 612825: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first2, __mid2, __alloc); 612825: throw; 612825: } 612825: } 612825: # 587 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: template 612825: struct __uninitialized_default_1 612825: { 612825: template 612825: static void 612825: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: _ForwardIterator __cur = __first; 612825: try 612825: { 612825: for (; __cur != __last; ++__cur) 612825: std::_Construct(std::__addressof(*__cur)); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur); 612825: throw; 612825: } 612825: } 612825: }; 612825: 612825: template<> 612825: struct __uninitialized_default_1 612825: { 612825: template 612825: static void 612825: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: if (__first == __last) 612825: return; 612825: 612825: typename iterator_traits<_ForwardIterator>::value_type* __val 612825: = std::__addressof(*__first); 612825: std::_Construct(__val); 612825: if (++__first != __last) 612825: std::fill(__first, __last, *__val); 612825: } 612825: }; 612825: 612825: template 612825: struct __uninitialized_default_n_1 612825: { 612825: template 612825: 612825: static _ForwardIterator 612825: __uninit_default_n(_ForwardIterator __first, _Size __n) 612825: { 612825: _ForwardIterator __cur = __first; 612825: try 612825: { 612825: for (; __n > 0; --__n, (void) ++__cur) 612825: std::_Construct(std::__addressof(*__cur)); 612825: return __cur; 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur); 612825: throw; 612825: } 612825: } 612825: }; 612825: 612825: template<> 612825: struct __uninitialized_default_n_1 612825: { 612825: template 612825: 612825: static _ForwardIterator 612825: __uninit_default_n(_ForwardIterator __first, _Size __n) 612825: { 612825: if (__n > 0) 612825: { 612825: typename iterator_traits<_ForwardIterator>::value_type* __val 612825: = std::__addressof(*__first); 612825: std::_Construct(__val); 612825: ++__first; 612825: __first = std::fill_n(__first, __n - 1, *__val); 612825: } 612825: return __first; 612825: } 612825: }; 612825: 612825: 612825: 612825: template 612825: inline void 612825: __uninitialized_default(_ForwardIterator __first, 612825: _ForwardIterator __last) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _ValueType; 612825: 612825: const bool __assignable = is_copy_assignable<_ValueType>::value; 612825: 612825: std::__uninitialized_default_1<__is_trivial(_ValueType) 612825: && __assignable>:: 612825: __uninit_default(__first, __last); 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: inline _ForwardIterator 612825: __uninitialized_default_n(_ForwardIterator __first, _Size __n) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _ValueType; 612825: 612825: constexpr bool __can_fill 612825: = __and_, is_copy_assignable<_ValueType>>::value; 612825: 612825: return __uninitialized_default_n_1<__is_trivial(_ValueType) 612825: && __can_fill>:: 612825: __uninit_default_n(__first, __n); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: void 612825: __uninitialized_default_a(_ForwardIterator __first, 612825: _ForwardIterator __last, 612825: _Allocator& __alloc) 612825: { 612825: _ForwardIterator __cur = __first; 612825: try 612825: { 612825: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 612825: for (; __cur != __last; ++__cur) 612825: __traits::construct(__alloc, std::__addressof(*__cur)); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur, __alloc); 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: inline void 612825: __uninitialized_default_a(_ForwardIterator __first, 612825: _ForwardIterator __last, 612825: allocator<_Tp>&) 612825: { std::__uninitialized_default(__first, __last); } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: _ForwardIterator 612825: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 612825: _Allocator& __alloc) 612825: { 612825: _ForwardIterator __cur = __first; 612825: try 612825: { 612825: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; 612825: for (; __n > 0; --__n, (void) ++__cur) 612825: __traits::construct(__alloc, std::__addressof(*__cur)); 612825: return __cur; 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur, __alloc); 612825: throw; 612825: } 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: inline _ForwardIterator 612825: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, 612825: allocator<_Tp>&) 612825: { return std::__uninitialized_default_n(__first, __n); } 612825: 612825: template 612825: struct __uninitialized_default_novalue_1 612825: { 612825: template 612825: static void 612825: __uninit_default_novalue(_ForwardIterator __first, 612825: _ForwardIterator __last) 612825: { 612825: _ForwardIterator __cur = __first; 612825: try 612825: { 612825: for (; __cur != __last; ++__cur) 612825: std::_Construct_novalue(std::__addressof(*__cur)); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur); 612825: throw; 612825: } 612825: } 612825: }; 612825: 612825: template<> 612825: struct __uninitialized_default_novalue_1 612825: { 612825: template 612825: static void 612825: __uninit_default_novalue(_ForwardIterator __first, 612825: _ForwardIterator __last) 612825: { 612825: } 612825: }; 612825: 612825: template 612825: struct __uninitialized_default_novalue_n_1 612825: { 612825: template 612825: static _ForwardIterator 612825: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 612825: { 612825: _ForwardIterator __cur = __first; 612825: try 612825: { 612825: for (; __n > 0; --__n, (void) ++__cur) 612825: std::_Construct_novalue(std::__addressof(*__cur)); 612825: return __cur; 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur); 612825: throw; 612825: } 612825: } 612825: }; 612825: 612825: template<> 612825: struct __uninitialized_default_novalue_n_1 612825: { 612825: template 612825: static _ForwardIterator 612825: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) 612825: { return std::next(__first, __n); } 612825: }; 612825: 612825: 612825: 612825: template 612825: inline void 612825: __uninitialized_default_novalue(_ForwardIterator __first, 612825: _ForwardIterator __last) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _ValueType; 612825: 612825: std::__uninitialized_default_novalue_1< 612825: is_trivially_default_constructible<_ValueType>::value>:: 612825: __uninit_default_novalue(__first, __last); 612825: } 612825: 612825: 612825: 612825: template 612825: inline _ForwardIterator 612825: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _ValueType; 612825: 612825: return __uninitialized_default_novalue_n_1< 612825: is_trivially_default_constructible<_ValueType>::value>:: 612825: __uninit_default_novalue_n(__first, __n); 612825: } 612825: 612825: template 612825: _ForwardIterator 612825: __uninitialized_copy_n(_InputIterator __first, _Size __n, 612825: _ForwardIterator __result, input_iterator_tag) 612825: { 612825: _ForwardIterator __cur = __result; 612825: try 612825: { 612825: for (; __n > 0; --__n, (void) ++__first, ++__cur) 612825: std::_Construct(std::__addressof(*__cur), *__first); 612825: return __cur; 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__result, __cur); 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: inline _ForwardIterator 612825: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, 612825: _ForwardIterator __result, 612825: random_access_iterator_tag) 612825: { return std::uninitialized_copy(__first, __first + __n, __result); } 612825: 612825: template 612825: pair<_InputIterator, _ForwardIterator> 612825: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 612825: _ForwardIterator __result, input_iterator_tag) 612825: { 612825: _ForwardIterator __cur = __result; 612825: try 612825: { 612825: for (; __n > 0; --__n, (void) ++__first, ++__cur) 612825: std::_Construct(std::__addressof(*__cur), *__first); 612825: return {__first, __cur}; 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__result, __cur); 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: inline pair<_RandomAccessIterator, _ForwardIterator> 612825: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, 612825: _ForwardIterator __result, 612825: random_access_iterator_tag) 612825: { 612825: auto __second_res = uninitialized_copy(__first, __first + __n, __result); 612825: auto __first_res = std::next(__first, __n); 612825: return {__first_res, __second_res}; 612825: } 612825: # 933 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: template 612825: inline _ForwardIterator 612825: uninitialized_copy_n(_InputIterator __first, _Size __n, 612825: _ForwardIterator __result) 612825: { return std::__uninitialized_copy_n(__first, __n, __result, 612825: std::__iterator_category(__first)); } 612825: 612825: 612825: template 612825: inline pair<_InputIterator, _ForwardIterator> 612825: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, 612825: _ForwardIterator __result) 612825: { 612825: return 612825: std::__uninitialized_copy_n_pair(__first, __n, __result, 612825: std::__iterator_category(__first)); 612825: } 612825: # 1053 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: template 612825: 612825: inline void 612825: __relocate_object_a(_Tp* __restrict __dest, _Up* __restrict __orig, 612825: _Allocator& __alloc) 612825: noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc, 612825: __dest, std::move(*__orig))) 612825: && noexcept(std::allocator_traits<_Allocator>::destroy( 612825: __alloc, std::__addressof(*__orig)))) 612825: { 612825: typedef std::allocator_traits<_Allocator> __traits; 612825: __traits::construct(__alloc, __dest, std::move(*__orig)); 612825: __traits::destroy(__alloc, std::__addressof(*__orig)); 612825: } 612825: 612825: 612825: 612825: template 612825: struct __is_bitwise_relocatable 612825: : is_trivial<_Tp> { }; 612825: 612825: template 612825: 612825: inline _ForwardIterator 612825: __relocate_a_1(_InputIterator __first, _InputIterator __last, 612825: _ForwardIterator __result, _Allocator& __alloc) 612825: noexcept(noexcept(std::__relocate_object_a(std::addressof(*__result), 612825: std::addressof(*__first), 612825: __alloc))) 612825: { 612825: typedef typename iterator_traits<_InputIterator>::value_type 612825: _ValueType; 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _ValueType2; 612825: static_assert(std::is_same<_ValueType, _ValueType2>::value, 612825: "relocation is only possible for values of the same type"); 612825: _ForwardIterator __cur = __result; 612825: for (; __first != __last; ++__first, (void)++__cur) 612825: std::__relocate_object_a(std::__addressof(*__cur), 612825: std::__addressof(*__first), __alloc); 612825: return __cur; 612825: } 612825: 612825: template 612825: 612825: inline __enable_if_t::value, _Tp*> 612825: __relocate_a_1(_Tp* __first, _Tp* __last, 612825: _Tp* __result, 612825: [[__maybe_unused__]] allocator<_Up>& __alloc) noexcept 612825: { 612825: ptrdiff_t __count = __last - __first; 612825: if (__count > 0) 612825: { 612825: # 1117 "/usr/include/c++/12/bits/stl_uninitialized.h" 3 612825: __builtin_memmove(__result, __first, __count * sizeof(_Tp)); 612825: } 612825: return __result + __count; 612825: } 612825: 612825: 612825: template 612825: 612825: inline _ForwardIterator 612825: __relocate_a(_InputIterator __first, _InputIterator __last, 612825: _ForwardIterator __result, _Allocator& __alloc) 612825: noexcept(noexcept(__relocate_a_1(std::__niter_base(__first), 612825: std::__niter_base(__last), 612825: std::__niter_base(__result), __alloc))) 612825: { 612825: return std::__relocate_a_1(std::__niter_base(__first), 612825: std::__niter_base(__last), 612825: std::__niter_base(__result), __alloc); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: } 612825: # 67 "/usr/include/c++/12/memory" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_tempbuf.h" 1 3 612825: # 62 "/usr/include/c++/12/bits/stl_tempbuf.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: namespace __detail 612825: { 612825: template 612825: inline void 612825: __return_temporary_buffer(_Tp* __p, 612825: size_t __len __attribute__((__unused__))) 612825: { 612825: 612825: 612825: 612825: ::operator delete(__p); 612825: 612825: } 612825: } 612825: # 98 "/usr/include/c++/12/bits/stl_tempbuf.h" 3 612825: template 612825: 612825: pair<_Tp*, ptrdiff_t> 612825: get_temporary_buffer(ptrdiff_t __len) noexcept 612825: { 612825: const ptrdiff_t __max = 612825: __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 612825: if (__len > __max) 612825: __len = __max; 612825: 612825: while (__len > 0) 612825: { 612825: _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), 612825: std::nothrow)); 612825: if (__tmp != 0) 612825: return std::pair<_Tp*, ptrdiff_t>(__tmp, __len); 612825: __len = __len == 1 ? 0 : ((__len + 1) / 2); 612825: } 612825: return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); 612825: } 612825: # 126 "/usr/include/c++/12/bits/stl_tempbuf.h" 3 612825: template 612825: inline void 612825: return_temporary_buffer(_Tp* __p) 612825: { ::operator delete(__p); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: class _Temporary_buffer 612825: { 612825: 612825: 612825: 612825: public: 612825: typedef _Tp value_type; 612825: typedef value_type* pointer; 612825: typedef pointer iterator; 612825: typedef ptrdiff_t size_type; 612825: 612825: protected: 612825: size_type _M_original_len; 612825: size_type _M_len; 612825: pointer _M_buffer; 612825: 612825: public: 612825: 612825: size_type 612825: size() const 612825: { return _M_len; } 612825: 612825: 612825: size_type 612825: requested_size() const 612825: { return _M_original_len; } 612825: 612825: 612825: iterator 612825: begin() 612825: { return _M_buffer; } 612825: 612825: 612825: iterator 612825: end() 612825: { return _M_buffer + _M_len; } 612825: 612825: 612825: 612825: 612825: 612825: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len); 612825: 612825: ~_Temporary_buffer() 612825: { 612825: std::_Destroy(_M_buffer, _M_buffer + _M_len); 612825: std::__detail::__return_temporary_buffer(_M_buffer, _M_len); 612825: } 612825: 612825: private: 612825: 612825: _Temporary_buffer(const _Temporary_buffer&); 612825: 612825: void 612825: operator=(const _Temporary_buffer&); 612825: }; 612825: 612825: 612825: template 612825: struct __uninitialized_construct_buf_dispatch 612825: { 612825: template 612825: static void 612825: __ucr(_Pointer __first, _Pointer __last, 612825: _ForwardIterator __seed) 612825: { 612825: if (__first == __last) 612825: return; 612825: 612825: _Pointer __cur = __first; 612825: try 612825: { 612825: std::_Construct(std::__addressof(*__first), 612825: std::move(*__seed)); 612825: _Pointer __prev = __cur; 612825: ++__cur; 612825: for(; __cur != __last; ++__cur, ++__prev) 612825: std::_Construct(std::__addressof(*__cur), 612825: std::move(*__prev)); 612825: *__seed = std::move(*__prev); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__first, __cur); 612825: throw; 612825: } 612825: } 612825: }; 612825: 612825: template<> 612825: struct __uninitialized_construct_buf_dispatch 612825: { 612825: template 612825: static void 612825: __ucr(_Pointer, _Pointer, _ForwardIterator) { } 612825: }; 612825: # 244 "/usr/include/c++/12/bits/stl_tempbuf.h" 3 612825: template 612825: inline void 612825: __uninitialized_construct_buf(_Pointer __first, _Pointer __last, 612825: _ForwardIterator __seed) 612825: { 612825: typedef typename std::iterator_traits<_Pointer>::value_type 612825: _ValueType; 612825: 612825: std::__uninitialized_construct_buf_dispatch< 612825: __has_trivial_constructor(_ValueType)>:: 612825: __ucr(__first, __last, __seed); 612825: } 612825: 612825: template 612825: _Temporary_buffer<_ForwardIterator, _Tp>:: 612825: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len) 612825: : _M_original_len(__original_len), _M_len(0), _M_buffer(0) 612825: { 612825: std::pair __p( 612825: std::get_temporary_buffer(_M_original_len)); 612825: 612825: if (__p.first) 612825: { 612825: try 612825: { 612825: std::__uninitialized_construct_buf(__p.first, __p.first + __p.second, 612825: __seed); 612825: _M_buffer = __p.first; 612825: _M_len = __p.second; 612825: } 612825: catch(...) 612825: { 612825: std::__detail::__return_temporary_buffer(__p.first, __p.second); 612825: throw; 612825: } 612825: } 612825: } 612825: 612825: 612825: } 612825: # 68 "/usr/include/c++/12/memory" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_raw_storage_iter.h" 1 3 612825: # 59 "/usr/include/c++/12/bits/stl_raw_storage_iter.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: 612825: 612825: 612825: 612825: template 612825: class raw_storage_iterator 612825: : public iterator 612825: { 612825: protected: 612825: _OutputIterator _M_iter; 612825: 612825: public: 612825: explicit 612825: raw_storage_iterator(_OutputIterator __x) 612825: : _M_iter(__x) {} 612825: 612825: raw_storage_iterator& 612825: operator*() { return *this; } 612825: 612825: raw_storage_iterator& 612825: operator=(const _Tp& __element) 612825: { 612825: std::_Construct(std::__addressof(*_M_iter), __element); 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: raw_storage_iterator& 612825: operator=(_Tp&& __element) 612825: { 612825: std::_Construct(std::__addressof(*_M_iter), std::move(__element)); 612825: return *this; 612825: } 612825: 612825: 612825: raw_storage_iterator& 612825: operator++() 612825: { 612825: ++_M_iter; 612825: return *this; 612825: } 612825: 612825: raw_storage_iterator 612825: operator++(int) 612825: { 612825: raw_storage_iterator __tmp = *this; 612825: ++_M_iter; 612825: return __tmp; 612825: } 612825: 612825: 612825: 612825: _OutputIterator base() const { return _M_iter; } 612825: }; 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: } 612825: # 69 "/usr/include/c++/12/memory" 2 3 612825: 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/align.h" 1 3 612825: # 35 "/usr/include/c++/12/bits/align.h" 3 612825: # 1 "/usr/include/c++/12/bit" 1 3 612825: # 32 "/usr/include/c++/12/bit" 3 612825: 612825: # 33 "/usr/include/c++/12/bit" 3 612825: # 36 "/usr/include/c++/12/bits/align.h" 2 3 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 61 "/usr/include/c++/12/bits/align.h" 3 612825: inline void* 612825: align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept 612825: { 612825: if (__space < __size) 612825: return nullptr; 612825: const auto __intptr = reinterpret_cast(__ptr); 612825: const auto __aligned = (__intptr - 1u + __align) & -__align; 612825: const auto __diff = __aligned - __intptr; 612825: if (__diff > (__space - __size)) 612825: return nullptr; 612825: else 612825: { 612825: __space -= __diff; 612825: return __ptr = reinterpret_cast(__aligned); 612825: } 612825: } 612825: # 108 "/usr/include/c++/12/bits/align.h" 3 612825: 612825: } 612825: # 73 "/usr/include/c++/12/memory" 2 3 612825: # 1 "/usr/include/c++/12/bits/uses_allocator.h" 1 3 612825: # 35 "/usr/include/c++/12/bits/uses_allocator.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: struct __erased_type { }; 612825: 612825: 612825: 612825: 612825: template 612825: using __is_erased_or_convertible 612825: = __or_, is_same<_Tp, __erased_type>>; 612825: 612825: 612825: struct allocator_arg_t { explicit allocator_arg_t() = default; }; 612825: 612825: constexpr allocator_arg_t allocator_arg = 612825: allocator_arg_t(); 612825: 612825: template> 612825: struct __uses_allocator_helper 612825: : false_type { }; 612825: 612825: template 612825: struct __uses_allocator_helper<_Tp, _Alloc, 612825: __void_t> 612825: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type 612825: { }; 612825: 612825: 612825: template 612825: struct uses_allocator 612825: : __uses_allocator_helper<_Tp, _Alloc>::type 612825: { }; 612825: 612825: struct __uses_alloc_base { }; 612825: 612825: struct __uses_alloc0 : __uses_alloc_base 612825: { 612825: struct _Sink { void operator=(const void*) { } } _M_a; 612825: }; 612825: 612825: template 612825: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; 612825: 612825: template 612825: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; 612825: 612825: template 612825: struct __uses_alloc; 612825: 612825: template 612825: struct __uses_alloc 612825: : __conditional_t< 612825: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value, 612825: __uses_alloc1<_Alloc>, 612825: __uses_alloc2<_Alloc>> 612825: { 612825: 612825: 612825: static_assert(__or_< 612825: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>, 612825: is_constructible<_Tp, _Args..., const _Alloc&>>::value, 612825: "construction with an allocator must be possible" 612825: " if uses_allocator is true"); 612825: }; 612825: 612825: template 612825: struct __uses_alloc 612825: : __uses_alloc0 { }; 612825: 612825: template 612825: using __uses_alloc_t = 612825: __uses_alloc::value, _Tp, _Alloc, _Args...>; 612825: 612825: template 612825: 612825: inline __uses_alloc_t<_Tp, _Alloc, _Args...> 612825: __use_alloc(const _Alloc& __a) 612825: { 612825: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; 612825: __ret._M_a = std::__addressof(__a); 612825: return __ret; 612825: } 612825: 612825: template 612825: void 612825: __use_alloc(const _Alloc&&) = delete; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template class _Predicate, 612825: typename _Tp, typename _Alloc, typename... _Args> 612825: struct __is_uses_allocator_predicate 612825: : __conditional_t::value, 612825: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, 612825: _Predicate<_Tp, _Args..., _Alloc>>, 612825: _Predicate<_Tp, _Args...>> { }; 612825: 612825: template 612825: struct __is_uses_allocator_constructible 612825: : __is_uses_allocator_predicate 612825: { }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct __is_nothrow_uses_allocator_constructible 612825: : __is_uses_allocator_predicate 612825: { }; 612825: # 165 "/usr/include/c++/12/bits/uses_allocator.h" 3 612825: template 612825: void __uses_allocator_construct_impl(__uses_alloc0 __a, _Tp* __ptr, 612825: _Args&&... __args) 612825: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } 612825: 612825: template 612825: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, 612825: _Args&&... __args) 612825: { 612825: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, 612825: std::forward<_Args>(__args)...); 612825: } 612825: 612825: template 612825: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, 612825: _Args&&... __args) 612825: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } 612825: 612825: template 612825: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, 612825: _Args&&... __args) 612825: { 612825: std::__uses_allocator_construct_impl( 612825: std::__use_alloc<_Tp, _Alloc, _Args...>(__a), __ptr, 612825: std::forward<_Args>(__args)...); 612825: } 612825: 612825: 612825: 612825: } 612825: # 74 "/usr/include/c++/12/memory" 2 3 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/unique_ptr.h" 1 3 612825: # 36 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: # 1 "/usr/include/c++/12/tuple" 1 3 612825: # 32 "/usr/include/c++/12/tuple" 3 612825: 612825: # 33 "/usr/include/c++/12/tuple" 3 612825: # 41 "/usr/include/c++/12/tuple" 3 612825: # 1 "/usr/include/c++/12/bits/invoke.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/invoke.h" 3 612825: 612825: # 34 "/usr/include/c++/12/bits/invoke.h" 3 612825: # 42 "/usr/include/c++/12/bits/invoke.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 53 "/usr/include/c++/12/bits/invoke.h" 3 612825: template::type> 612825: constexpr _Up&& 612825: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept 612825: { return static_cast<_Up&&>(__t); } 612825: 612825: template 612825: constexpr _Res 612825: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) 612825: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } 612825: 612825: template 612825: constexpr _Res 612825: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, 612825: _Args&&... __args) 612825: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } 612825: 612825: template 612825: constexpr _Res 612825: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, 612825: _Args&&... __args) 612825: { 612825: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); 612825: } 612825: 612825: template 612825: constexpr _Res 612825: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) 612825: { return __invfwd<_Tp>(__t).*__f; } 612825: 612825: template 612825: constexpr _Res 612825: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) 612825: { return (*std::forward<_Tp>(__t)).*__f; } 612825: 612825: 612825: template 612825: constexpr typename __invoke_result<_Callable, _Args...>::type 612825: __invoke(_Callable&& __fn, _Args&&... __args) 612825: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) 612825: { 612825: using __result = __invoke_result<_Callable, _Args...>; 612825: using __type = typename __result::type; 612825: using __tag = typename __result::__invoke_type; 612825: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 612825: std::forward<_Args>(__args)...); 612825: } 612825: # 119 "/usr/include/c++/12/bits/invoke.h" 3 612825: template 612825: using __can_invoke_as_void = __enable_if_t< 612825: __and_, __is_invocable<_Callable, _Args...>>::value, 612825: _Res 612825: >; 612825: 612825: template 612825: using __can_invoke_as_nonvoid = __enable_if_t< 612825: __and_<__not_>, 612825: is_convertible::type, 612825: _Res> 612825: >::value, 612825: _Res 612825: >; 612825: 612825: 612825: template 612825: constexpr __can_invoke_as_nonvoid<_Res, _Callable, _Args...> 612825: __invoke_r(_Callable&& __fn, _Args&&... __args) 612825: { 612825: using __result = __invoke_result<_Callable, _Args...>; 612825: using __type = typename __result::type; 612825: using __tag = typename __result::__invoke_type; 612825: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 612825: std::forward<_Args>(__args)...); 612825: } 612825: 612825: 612825: template 612825: __can_invoke_as_void<_Res, _Callable, _Args...> 612825: __invoke_r(_Callable&& __fn, _Args&&... __args) 612825: { 612825: using __result = __invoke_result<_Callable, _Args...>; 612825: using __type = typename __result::type; 612825: using __tag = typename __result::__invoke_type; 612825: std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), 612825: std::forward<_Args>(__args)...); 612825: } 612825: 612825: 612825: 612825: } 612825: # 42 "/usr/include/c++/12/tuple" 2 3 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: class tuple; 612825: 612825: template 612825: struct __is_empty_non_tuple : is_empty<_Tp> { }; 612825: 612825: 612825: template 612825: struct __is_empty_non_tuple> : false_type { }; 612825: 612825: 612825: template 612825: using __empty_not_final 612825: = __conditional_t<__is_final(_Tp), false_type, 612825: __is_empty_non_tuple<_Tp>>; 612825: 612825: template::value> 612825: struct _Head_base; 612825: 612825: 612825: template 612825: struct _Head_base<_Idx, _Head, true> 612825: { 612825: constexpr _Head_base() 612825: : _M_head_impl() { } 612825: 612825: constexpr _Head_base(const _Head& __h) 612825: : _M_head_impl(__h) { } 612825: 612825: constexpr _Head_base(const _Head_base&) = default; 612825: constexpr _Head_base(_Head_base&&) = default; 612825: 612825: template 612825: constexpr _Head_base(_UHead&& __h) 612825: : _M_head_impl(std::forward<_UHead>(__h)) { } 612825: 612825: 612825: _Head_base(allocator_arg_t, __uses_alloc0) 612825: : _M_head_impl() { } 612825: 612825: template 612825: 612825: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 612825: : _M_head_impl(allocator_arg, *__a._M_a) { } 612825: 612825: template 612825: 612825: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 612825: : _M_head_impl(*__a._M_a) { } 612825: 612825: template 612825: 612825: _Head_base(__uses_alloc0, _UHead&& __uhead) 612825: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 612825: 612825: template 612825: 612825: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 612825: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 612825: { } 612825: 612825: template 612825: 612825: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 612825: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 612825: 612825: static constexpr _Head& 612825: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 612825: 612825: static constexpr const _Head& 612825: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 612825: 612825: [[__no_unique_address__]] _Head _M_head_impl; 612825: }; 612825: # 186 "/usr/include/c++/12/tuple" 3 612825: template 612825: struct _Head_base<_Idx, _Head, false> 612825: { 612825: constexpr _Head_base() 612825: : _M_head_impl() { } 612825: 612825: constexpr _Head_base(const _Head& __h) 612825: : _M_head_impl(__h) { } 612825: 612825: constexpr _Head_base(const _Head_base&) = default; 612825: constexpr _Head_base(_Head_base&&) = default; 612825: 612825: template 612825: constexpr _Head_base(_UHead&& __h) 612825: : _M_head_impl(std::forward<_UHead>(__h)) { } 612825: 612825: 612825: _Head_base(allocator_arg_t, __uses_alloc0) 612825: : _M_head_impl() { } 612825: 612825: template 612825: 612825: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) 612825: : _M_head_impl(allocator_arg, *__a._M_a) { } 612825: 612825: template 612825: 612825: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) 612825: : _M_head_impl(*__a._M_a) { } 612825: 612825: template 612825: 612825: _Head_base(__uses_alloc0, _UHead&& __uhead) 612825: : _M_head_impl(std::forward<_UHead>(__uhead)) { } 612825: 612825: template 612825: 612825: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) 612825: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) 612825: { } 612825: 612825: template 612825: 612825: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) 612825: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } 612825: 612825: static constexpr _Head& 612825: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } 612825: 612825: static constexpr const _Head& 612825: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } 612825: 612825: _Head _M_head_impl; 612825: }; 612825: # 249 "/usr/include/c++/12/tuple" 3 612825: template 612825: struct _Tuple_impl; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct _Tuple_impl<_Idx, _Head, _Tail...> 612825: : public _Tuple_impl<_Idx + 1, _Tail...>, 612825: private _Head_base<_Idx, _Head> 612825: { 612825: template friend struct _Tuple_impl; 612825: 612825: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; 612825: typedef _Head_base<_Idx, _Head> _Base; 612825: 612825: static constexpr _Head& 612825: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 612825: 612825: static constexpr const _Head& 612825: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 612825: 612825: static constexpr _Inherited& 612825: _M_tail(_Tuple_impl& __t) noexcept { return __t; } 612825: 612825: static constexpr const _Inherited& 612825: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } 612825: 612825: constexpr _Tuple_impl() 612825: : _Inherited(), _Base() { } 612825: 612825: explicit constexpr 612825: _Tuple_impl(const _Head& __head, const _Tail&... __tail) 612825: : _Inherited(__tail...), _Base(__head) 612825: { } 612825: 612825: template> 612825: explicit constexpr 612825: _Tuple_impl(_UHead&& __head, _UTail&&... __tail) 612825: : _Inherited(std::forward<_UTail>(__tail)...), 612825: _Base(std::forward<_UHead>(__head)) 612825: { } 612825: 612825: constexpr _Tuple_impl(const _Tuple_impl&) = default; 612825: 612825: 612825: 612825: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 612825: 612825: _Tuple_impl(_Tuple_impl&&) = default; 612825: 612825: template 612825: constexpr 612825: _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) 612825: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), 612825: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) 612825: { } 612825: 612825: template 612825: constexpr 612825: _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 612825: : _Inherited(std::move 612825: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 612825: _Base(std::forward<_UHead> 612825: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 612825: : _Inherited(__tag, __a), 612825: _Base(__tag, __use_alloc<_Head>(__a)) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: const _Head& __head, const _Tail&... __tail) 612825: : _Inherited(__tag, __a, __tail...), 612825: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) 612825: { } 612825: 612825: template> 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: _UHead&& __head, _UTail&&... __tail) 612825: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), 612825: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 612825: std::forward<_UHead>(__head)) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: const _Tuple_impl& __in) 612825: : _Inherited(__tag, __a, _M_tail(__in)), 612825: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: _Tuple_impl&& __in) 612825: : _Inherited(__tag, __a, std::move(_M_tail(__in))), 612825: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 612825: std::forward<_Head>(_M_head(__in))) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: const _Tuple_impl<_Idx, _UHead, _UTails...>& __in) 612825: : _Inherited(__tag, __a, 612825: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)), 612825: _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), 612825: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 612825: : _Inherited(__tag, __a, std::move 612825: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), 612825: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 612825: std::forward<_UHead> 612825: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) 612825: { } 612825: 612825: template 612825: 612825: void 612825: _M_assign(const _Tuple_impl<_Idx, _UElements...>& __in) 612825: { 612825: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); 612825: _M_tail(*this)._M_assign( 612825: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)); 612825: } 612825: 612825: template 612825: 612825: void 612825: _M_assign(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) 612825: { 612825: _M_head(*this) = std::forward<_UHead> 612825: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); 612825: _M_tail(*this)._M_assign( 612825: std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))); 612825: } 612825: 612825: protected: 612825: 612825: void 612825: _M_swap(_Tuple_impl& __in) 612825: { 612825: using std::swap; 612825: swap(_M_head(*this), _M_head(__in)); 612825: _Inherited::_M_swap(_M_tail(__in)); 612825: } 612825: }; 612825: 612825: 612825: template 612825: struct _Tuple_impl<_Idx, _Head> 612825: : private _Head_base<_Idx, _Head> 612825: { 612825: template friend struct _Tuple_impl; 612825: 612825: typedef _Head_base<_Idx, _Head> _Base; 612825: 612825: static constexpr _Head& 612825: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 612825: 612825: static constexpr const _Head& 612825: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } 612825: 612825: constexpr 612825: _Tuple_impl() 612825: : _Base() { } 612825: 612825: explicit constexpr 612825: _Tuple_impl(const _Head& __head) 612825: : _Base(__head) 612825: { } 612825: 612825: template 612825: explicit constexpr 612825: _Tuple_impl(_UHead&& __head) 612825: : _Base(std::forward<_UHead>(__head)) 612825: { } 612825: 612825: constexpr _Tuple_impl(const _Tuple_impl&) = default; 612825: 612825: 612825: 612825: _Tuple_impl& operator=(const _Tuple_impl&) = delete; 612825: 612825: 612825: 612825: 612825: constexpr 612825: _Tuple_impl(_Tuple_impl&& __in) 612825: noexcept(is_nothrow_move_constructible<_Head>::value) 612825: : _Base(static_cast<_Base&&>(__in)) 612825: { } 612825: 612825: 612825: template 612825: constexpr 612825: _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) 612825: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) 612825: { } 612825: 612825: template 612825: constexpr 612825: _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) 612825: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) 612825: : _Base(__tag, __use_alloc<_Head>(__a)) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: const _Head& __head) 612825: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), __head) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: _UHead&& __head) 612825: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 612825: std::forward<_UHead>(__head)) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: const _Tuple_impl& __in) 612825: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), _M_head(__in)) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: _Tuple_impl&& __in) 612825: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), 612825: std::forward<_Head>(_M_head(__in))) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: const _Tuple_impl<_Idx, _UHead>& __in) 612825: : _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), 612825: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) 612825: { } 612825: 612825: template 612825: 612825: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, 612825: _Tuple_impl<_Idx, _UHead>&& __in) 612825: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), 612825: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) 612825: { } 612825: 612825: template 612825: 612825: void 612825: _M_assign(const _Tuple_impl<_Idx, _UHead>& __in) 612825: { 612825: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); 612825: } 612825: 612825: template 612825: 612825: void 612825: _M_assign(_Tuple_impl<_Idx, _UHead>&& __in) 612825: { 612825: _M_head(*this) 612825: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); 612825: } 612825: 612825: protected: 612825: 612825: void 612825: _M_swap(_Tuple_impl& __in) 612825: { 612825: using std::swap; 612825: swap(_M_head(*this), _M_head(__in)); 612825: } 612825: }; 612825: 612825: 612825: 612825: template 612825: struct _TupleConstraints 612825: { 612825: 612825: 612825: 612825: template 612825: static constexpr bool __is_implicitly_constructible() 612825: { 612825: return __and_..., 612825: is_convertible<_UTypes, _Types>... 612825: >::value; 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: static constexpr bool __is_explicitly_constructible() 612825: { 612825: return __and_..., 612825: __not_<__and_...>> 612825: >::value; 612825: } 612825: 612825: static constexpr bool __is_implicitly_default_constructible() 612825: { 612825: return __and_... 612825: >::value; 612825: } 612825: 612825: static constexpr bool __is_explicitly_default_constructible() 612825: { 612825: return __and_..., 612825: __not_<__and_< 612825: std::__is_implicitly_default_constructible<_Types>...> 612825: >>::value; 612825: } 612825: }; 612825: 612825: 612825: 612825: template 612825: struct _TupleConstraints 612825: { 612825: template 612825: static constexpr bool __is_implicitly_constructible() 612825: { return false; } 612825: 612825: template 612825: static constexpr bool __is_explicitly_constructible() 612825: { return false; } 612825: }; 612825: 612825: 612825: template 612825: class tuple : public _Tuple_impl<0, _Elements...> 612825: { 612825: typedef _Tuple_impl<0, _Elements...> _Inherited; 612825: 612825: template 612825: using _TCC = _TupleConstraints<_Cond, _Elements...>; 612825: 612825: 612825: template 612825: using _ImplicitDefaultCtor = __enable_if_t< 612825: _TCC<_Dummy>::__is_implicitly_default_constructible(), 612825: bool>; 612825: 612825: 612825: template 612825: using _ExplicitDefaultCtor = __enable_if_t< 612825: _TCC<_Dummy>::__is_explicitly_default_constructible(), 612825: bool>; 612825: 612825: 612825: template 612825: using _ImplicitCtor = __enable_if_t< 612825: _TCC<_Cond>::template __is_implicitly_constructible<_Args...>(), 612825: bool>; 612825: 612825: 612825: template 612825: using _ExplicitCtor = __enable_if_t< 612825: _TCC<_Cond>::template __is_explicitly_constructible<_Args...>(), 612825: bool>; 612825: 612825: template 612825: static constexpr 612825: __enable_if_t 612825: __assignable() 612825: { return __and_...>::value; } 612825: 612825: 612825: template 612825: static constexpr bool __nothrow_assignable() 612825: { 612825: return 612825: __and_...>::value; 612825: } 612825: 612825: 612825: template 612825: static constexpr bool __nothrow_constructible() 612825: { 612825: return 612825: __and_...>::value; 612825: } 612825: 612825: 612825: template 612825: static constexpr bool __valid_args() 612825: { 612825: return sizeof...(_Elements) == 1 612825: && !is_same>::value; 612825: } 612825: 612825: 612825: template 612825: static constexpr bool __valid_args() 612825: { return (sizeof...(_Tail) + 2) == sizeof...(_Elements); } 612825: # 684 "/usr/include/c++/12/tuple" 3 612825: template> 612825: struct _UseOtherCtor 612825: : false_type 612825: { }; 612825: 612825: 612825: template 612825: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Up>> 612825: : __or_, is_constructible<_Tp, _Tuple>> 612825: { }; 612825: 612825: 612825: template 612825: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Tp>> 612825: : true_type 612825: { }; 612825: 612825: 612825: 612825: 612825: template 612825: static constexpr bool __use_other_ctor() 612825: { return _UseOtherCtor<_Tuple>::value; } 612825: 612825: public: 612825: template::value> = true> 612825: constexpr 612825: tuple() 612825: noexcept(__and_...>::value) 612825: : _Inherited() { } 612825: 612825: template::value> = false> 612825: explicit constexpr 612825: tuple() 612825: noexcept(__and_...>::value) 612825: : _Inherited() { } 612825: 612825: template= 1), 612825: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 612825: constexpr 612825: tuple(const _Elements&... __elements) 612825: noexcept(__nothrow_constructible()) 612825: : _Inherited(__elements...) { } 612825: 612825: template= 1), 612825: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 612825: explicit constexpr 612825: tuple(const _Elements&... __elements) 612825: noexcept(__nothrow_constructible()) 612825: : _Inherited(__elements...) { } 612825: 612825: template(), 612825: _ImplicitCtor<_Valid, _UElements...> = true> 612825: constexpr 612825: tuple(_UElements&&... __elements) 612825: noexcept(__nothrow_constructible<_UElements...>()) 612825: : _Inherited(std::forward<_UElements>(__elements)...) { } 612825: 612825: template(), 612825: _ExplicitCtor<_Valid, _UElements...> = false> 612825: explicit constexpr 612825: tuple(_UElements&&... __elements) 612825: noexcept(__nothrow_constructible<_UElements...>()) 612825: : _Inherited(std::forward<_UElements>(__elements)...) { } 612825: 612825: constexpr tuple(const tuple&) = default; 612825: 612825: constexpr tuple(tuple&&) = default; 612825: 612825: template&>(), 612825: _ImplicitCtor<_Valid, const _UElements&...> = true> 612825: constexpr 612825: tuple(const tuple<_UElements...>& __in) 612825: noexcept(__nothrow_constructible()) 612825: : _Inherited(static_cast&>(__in)) 612825: { } 612825: 612825: template&>(), 612825: _ExplicitCtor<_Valid, const _UElements&...> = false> 612825: explicit constexpr 612825: tuple(const tuple<_UElements...>& __in) 612825: noexcept(__nothrow_constructible()) 612825: : _Inherited(static_cast&>(__in)) 612825: { } 612825: 612825: template&&>(), 612825: _ImplicitCtor<_Valid, _UElements...> = true> 612825: constexpr 612825: tuple(tuple<_UElements...>&& __in) 612825: noexcept(__nothrow_constructible<_UElements...>()) 612825: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } 612825: 612825: template&&>(), 612825: _ExplicitCtor<_Valid, _UElements...> = false> 612825: explicit constexpr 612825: tuple(tuple<_UElements...>&& __in) 612825: noexcept(__nothrow_constructible<_UElements...>()) 612825: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } 612825: 612825: 612825: 612825: template::value> = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a) 612825: : _Inherited(__tag, __a) { } 612825: 612825: template= 1), 612825: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: const _Elements&... __elements) 612825: : _Inherited(__tag, __a, __elements...) { } 612825: 612825: template= 1), 612825: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> 612825: 612825: explicit 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: const _Elements&... __elements) 612825: : _Inherited(__tag, __a, __elements...) { } 612825: 612825: template(), 612825: _ImplicitCtor<_Valid, _UElements...> = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: _UElements&&... __elements) 612825: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 612825: { } 612825: 612825: template(), 612825: _ExplicitCtor<_Valid, _UElements...> = false> 612825: 612825: explicit 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: _UElements&&... __elements) 612825: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) 612825: { } 612825: 612825: template 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 612825: : _Inherited(__tag, __a, static_cast(__in)) { } 612825: 612825: template 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 612825: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 612825: 612825: template&>(), 612825: _ImplicitCtor<_Valid, const _UElements&...> = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: const tuple<_UElements...>& __in) 612825: : _Inherited(__tag, __a, 612825: static_cast&>(__in)) 612825: { } 612825: 612825: template&>(), 612825: _ExplicitCtor<_Valid, const _UElements&...> = false> 612825: 612825: explicit 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: const tuple<_UElements...>& __in) 612825: : _Inherited(__tag, __a, 612825: static_cast&>(__in)) 612825: { } 612825: 612825: template&&>(), 612825: _ImplicitCtor<_Valid, _UElements...> = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: tuple<_UElements...>&& __in) 612825: : _Inherited(__tag, __a, 612825: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 612825: { } 612825: 612825: template&&>(), 612825: _ExplicitCtor<_Valid, _UElements...> = false> 612825: 612825: explicit 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: tuple<_UElements...>&& __in) 612825: : _Inherited(__tag, __a, 612825: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) 612825: { } 612825: 612825: 612825: 612825: 612825: tuple& 612825: operator=(__conditional_t<__assignable(), 612825: const tuple&, 612825: const __nonesuch&> __in) 612825: noexcept(__nothrow_assignable()) 612825: { 612825: this->_M_assign(__in); 612825: return *this; 612825: } 612825: 612825: 612825: tuple& 612825: operator=(__conditional_t<__assignable<_Elements...>(), 612825: tuple&&, 612825: __nonesuch&&> __in) 612825: noexcept(__nothrow_assignable<_Elements...>()) 612825: { 612825: this->_M_assign(std::move(__in)); 612825: return *this; 612825: } 612825: 612825: template 612825: 612825: __enable_if_t<__assignable(), tuple&> 612825: operator=(const tuple<_UElements...>& __in) 612825: noexcept(__nothrow_assignable()) 612825: { 612825: this->_M_assign(__in); 612825: return *this; 612825: } 612825: 612825: template 612825: 612825: __enable_if_t<__assignable<_UElements...>(), tuple&> 612825: operator=(tuple<_UElements...>&& __in) 612825: noexcept(__nothrow_assignable<_UElements...>()) 612825: { 612825: this->_M_assign(std::move(__in)); 612825: return *this; 612825: } 612825: 612825: 612825: 612825: void 612825: swap(tuple& __in) 612825: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value) 612825: { _Inherited::_M_swap(__in); } 612825: }; 612825: # 960 "/usr/include/c++/12/tuple" 3 612825: template<> 612825: class tuple<> 612825: { 612825: public: 612825: 612825: void swap(tuple&) noexcept { } 612825: 612825: 612825: tuple() = default; 612825: 612825: template 612825: 612825: tuple(allocator_arg_t, const _Alloc&) noexcept { } 612825: template 612825: 612825: tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept { } 612825: }; 612825: 612825: 612825: 612825: template 612825: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> 612825: { 612825: typedef _Tuple_impl<0, _T1, _T2> _Inherited; 612825: 612825: 612825: template 612825: using _ImplicitDefaultCtor = __enable_if_t< 612825: _TupleConstraints<_Dummy, _U1, _U2>:: 612825: __is_implicitly_default_constructible(), 612825: bool>; 612825: 612825: 612825: template 612825: using _ExplicitDefaultCtor = __enable_if_t< 612825: _TupleConstraints<_Dummy, _U1, _U2>:: 612825: __is_explicitly_default_constructible(), 612825: bool>; 612825: 612825: template 612825: using _TCC = _TupleConstraints<_Dummy, _T1, _T2>; 612825: 612825: 612825: template 612825: using _ImplicitCtor = __enable_if_t< 612825: _TCC<_Cond>::template __is_implicitly_constructible<_U1, _U2>(), 612825: bool>; 612825: 612825: 612825: template 612825: using _ExplicitCtor = __enable_if_t< 612825: _TCC<_Cond>::template __is_explicitly_constructible<_U1, _U2>(), 612825: bool>; 612825: 612825: template 612825: static constexpr bool __assignable() 612825: { 612825: return __and_, 612825: is_assignable<_T2&, _U2>>::value; 612825: } 612825: 612825: template 612825: static constexpr bool __nothrow_assignable() 612825: { 612825: return __and_, 612825: is_nothrow_assignable<_T2&, _U2>>::value; 612825: } 612825: 612825: template 612825: static constexpr bool __nothrow_constructible() 612825: { 612825: return __and_, 612825: is_nothrow_constructible<_T2, _U2>>::value; 612825: } 612825: 612825: static constexpr bool __nothrow_default_constructible() 612825: { 612825: return __and_, 612825: is_nothrow_default_constructible<_T2>>::value; 612825: } 612825: 612825: template 612825: static constexpr bool __is_alloc_arg() 612825: { return is_same<__remove_cvref_t<_U1>, allocator_arg_t>::value; } 612825: 612825: public: 612825: template = true> 612825: constexpr 612825: tuple() 612825: noexcept(__nothrow_default_constructible()) 612825: : _Inherited() { } 612825: 612825: template = false> 612825: explicit constexpr 612825: tuple() 612825: noexcept(__nothrow_default_constructible()) 612825: : _Inherited() { } 612825: 612825: template = true> 612825: constexpr 612825: tuple(const _T1& __a1, const _T2& __a2) 612825: noexcept(__nothrow_constructible()) 612825: : _Inherited(__a1, __a2) { } 612825: 612825: template = false> 612825: explicit constexpr 612825: tuple(const _T1& __a1, const _T2& __a2) 612825: noexcept(__nothrow_constructible()) 612825: : _Inherited(__a1, __a2) { } 612825: 612825: template(), _U1, _U2> = true> 612825: constexpr 612825: tuple(_U1&& __a1, _U2&& __a2) 612825: noexcept(__nothrow_constructible<_U1, _U2>()) 612825: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } 612825: 612825: template(), _U1, _U2> = false> 612825: explicit constexpr 612825: tuple(_U1&& __a1, _U2&& __a2) 612825: noexcept(__nothrow_constructible<_U1, _U2>()) 612825: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } 612825: 612825: constexpr tuple(const tuple&) = default; 612825: 612825: constexpr tuple(tuple&&) = default; 612825: 612825: template = true> 612825: constexpr 612825: tuple(const tuple<_U1, _U2>& __in) 612825: noexcept(__nothrow_constructible()) 612825: : _Inherited(static_cast&>(__in)) { } 612825: 612825: template = false> 612825: explicit constexpr 612825: tuple(const tuple<_U1, _U2>& __in) 612825: noexcept(__nothrow_constructible()) 612825: : _Inherited(static_cast&>(__in)) { } 612825: 612825: template = true> 612825: constexpr 612825: tuple(tuple<_U1, _U2>&& __in) 612825: noexcept(__nothrow_constructible<_U1, _U2>()) 612825: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } 612825: 612825: template = false> 612825: explicit constexpr 612825: tuple(tuple<_U1, _U2>&& __in) 612825: noexcept(__nothrow_constructible<_U1, _U2>()) 612825: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } 612825: 612825: template = true> 612825: constexpr 612825: tuple(const pair<_U1, _U2>& __in) 612825: noexcept(__nothrow_constructible()) 612825: : _Inherited(__in.first, __in.second) { } 612825: 612825: template = false> 612825: explicit constexpr 612825: tuple(const pair<_U1, _U2>& __in) 612825: noexcept(__nothrow_constructible()) 612825: : _Inherited(__in.first, __in.second) { } 612825: 612825: template = true> 612825: constexpr 612825: tuple(pair<_U1, _U2>&& __in) 612825: noexcept(__nothrow_constructible<_U1, _U2>()) 612825: : _Inherited(std::forward<_U1>(__in.first), 612825: std::forward<_U2>(__in.second)) { } 612825: 612825: template = false> 612825: explicit constexpr 612825: tuple(pair<_U1, _U2>&& __in) 612825: noexcept(__nothrow_constructible<_U1, _U2>()) 612825: : _Inherited(std::forward<_U1>(__in.first), 612825: std::forward<_U2>(__in.second)) { } 612825: 612825: 612825: 612825: template::value, _T1, _T2> = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a) 612825: : _Inherited(__tag, __a) { } 612825: 612825: template = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: const _T1& __a1, const _T2& __a2) 612825: : _Inherited(__tag, __a, __a1, __a2) { } 612825: 612825: template = false> 612825: explicit 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: const _T1& __a1, const _T2& __a2) 612825: : _Inherited(__tag, __a, __a1, __a2) { } 612825: 612825: template = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) 612825: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 612825: std::forward<_U2>(__a2)) { } 612825: 612825: template = false> 612825: explicit 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: _U1&& __a1, _U2&& __a2) 612825: : _Inherited(__tag, __a, std::forward<_U1>(__a1), 612825: std::forward<_U2>(__a2)) { } 612825: 612825: template 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) 612825: : _Inherited(__tag, __a, static_cast(__in)) { } 612825: 612825: template 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) 612825: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } 612825: 612825: template = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: const tuple<_U1, _U2>& __in) 612825: : _Inherited(__tag, __a, 612825: static_cast&>(__in)) 612825: { } 612825: 612825: template = false> 612825: explicit 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: const tuple<_U1, _U2>& __in) 612825: : _Inherited(__tag, __a, 612825: static_cast&>(__in)) 612825: { } 612825: 612825: template = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 612825: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 612825: { } 612825: 612825: template = false> 612825: explicit 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) 612825: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) 612825: { } 612825: 612825: template = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: const pair<_U1, _U2>& __in) 612825: : _Inherited(__tag, __a, __in.first, __in.second) { } 612825: 612825: template = false> 612825: explicit 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, 612825: const pair<_U1, _U2>& __in) 612825: : _Inherited(__tag, __a, __in.first, __in.second) { } 612825: 612825: template = true> 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 612825: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 612825: std::forward<_U2>(__in.second)) { } 612825: 612825: template = false> 612825: explicit 612825: 612825: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) 612825: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), 612825: std::forward<_U2>(__in.second)) { } 612825: 612825: 612825: 612825: 612825: tuple& 612825: operator=(__conditional_t<__assignable(), 612825: const tuple&, 612825: const __nonesuch&> __in) 612825: noexcept(__nothrow_assignable()) 612825: { 612825: this->_M_assign(__in); 612825: return *this; 612825: } 612825: 612825: 612825: tuple& 612825: operator=(__conditional_t<__assignable<_T1, _T2>(), 612825: tuple&&, 612825: __nonesuch&&> __in) 612825: noexcept(__nothrow_assignable<_T1, _T2>()) 612825: { 612825: this->_M_assign(std::move(__in)); 612825: return *this; 612825: } 612825: 612825: template 612825: 612825: __enable_if_t<__assignable(), tuple&> 612825: operator=(const tuple<_U1, _U2>& __in) 612825: noexcept(__nothrow_assignable()) 612825: { 612825: this->_M_assign(__in); 612825: return *this; 612825: } 612825: 612825: template 612825: 612825: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 612825: operator=(tuple<_U1, _U2>&& __in) 612825: noexcept(__nothrow_assignable<_U1, _U2>()) 612825: { 612825: this->_M_assign(std::move(__in)); 612825: return *this; 612825: } 612825: 612825: template 612825: 612825: __enable_if_t<__assignable(), tuple&> 612825: operator=(const pair<_U1, _U2>& __in) 612825: noexcept(__nothrow_assignable()) 612825: { 612825: this->_M_head(*this) = __in.first; 612825: this->_M_tail(*this)._M_head(*this) = __in.second; 612825: return *this; 612825: } 612825: 612825: template 612825: 612825: __enable_if_t<__assignable<_U1, _U2>(), tuple&> 612825: operator=(pair<_U1, _U2>&& __in) 612825: noexcept(__nothrow_assignable<_U1, _U2>()) 612825: { 612825: this->_M_head(*this) = std::forward<_U1>(__in.first); 612825: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); 612825: return *this; 612825: } 612825: 612825: 612825: void 612825: swap(tuple& __in) 612825: noexcept(__and_<__is_nothrow_swappable<_T1>, 612825: __is_nothrow_swappable<_T2>>::value) 612825: { _Inherited::_M_swap(__in); } 612825: }; 612825: 612825: 612825: 612825: template 612825: struct tuple_size> 612825: : public integral_constant { }; 612825: # 1354 "/usr/include/c++/12/tuple" 3 612825: template 612825: struct tuple_element<__i, tuple<_Types...>> 612825: { 612825: static_assert(__i < sizeof...(_Types), "tuple index must be in range"); 612825: 612825: using type = typename _Nth_type<__i, _Types...>::type; 612825: }; 612825: 612825: template 612825: constexpr _Head& 612825: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 612825: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 612825: 612825: template 612825: constexpr const _Head& 612825: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept 612825: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } 612825: 612825: 612825: template 612825: __enable_if_t<(__i >= sizeof...(_Types))> 612825: __get_helper(const tuple<_Types...>&) = delete; 612825: 612825: 612825: template 612825: constexpr __tuple_element_t<__i, tuple<_Elements...>>& 612825: get(tuple<_Elements...>& __t) noexcept 612825: { return std::__get_helper<__i>(__t); } 612825: 612825: 612825: template 612825: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& 612825: get(const tuple<_Elements...>& __t) noexcept 612825: { return std::__get_helper<__i>(__t); } 612825: 612825: 612825: template 612825: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& 612825: get(tuple<_Elements...>&& __t) noexcept 612825: { 612825: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 612825: return std::forward<__element_type>(std::__get_helper<__i>(__t)); 612825: } 612825: 612825: 612825: template 612825: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& 612825: get(const tuple<_Elements...>&& __t) noexcept 612825: { 612825: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; 612825: return std::forward(std::__get_helper<__i>(__t)); 612825: } 612825: 612825: 612825: 612825: template 612825: constexpr __enable_if_t<(__i >= sizeof...(_Elements))> 612825: get(const tuple<_Elements...>&) = delete; 612825: # 1465 "/usr/include/c++/12/tuple" 3 612825: template 612825: struct __tuple_compare 612825: { 612825: static constexpr bool 612825: __eq(const _Tp& __t, const _Up& __u) 612825: { 612825: return bool(std::get<__i>(__t) == std::get<__i>(__u)) 612825: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); 612825: } 612825: 612825: static constexpr bool 612825: __less(const _Tp& __t, const _Up& __u) 612825: { 612825: return bool(std::get<__i>(__t) < std::get<__i>(__u)) 612825: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) 612825: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); 612825: } 612825: }; 612825: 612825: template 612825: struct __tuple_compare<_Tp, _Up, __size, __size> 612825: { 612825: static constexpr bool 612825: __eq(const _Tp&, const _Up&) { return true; } 612825: 612825: static constexpr bool 612825: __less(const _Tp&, const _Up&) { return false; } 612825: }; 612825: 612825: template 612825: constexpr bool 612825: operator==(const tuple<_TElements...>& __t, 612825: const tuple<_UElements...>& __u) 612825: { 612825: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 612825: "tuple objects can only be compared if they have equal sizes."); 612825: using __compare = __tuple_compare, 612825: tuple<_UElements...>, 612825: 0, sizeof...(_TElements)>; 612825: return __compare::__eq(__t, __u); 612825: } 612825: # 1536 "/usr/include/c++/12/tuple" 3 612825: template 612825: constexpr bool 612825: operator<(const tuple<_TElements...>& __t, 612825: const tuple<_UElements...>& __u) 612825: { 612825: static_assert(sizeof...(_TElements) == sizeof...(_UElements), 612825: "tuple objects can only be compared if they have equal sizes."); 612825: using __compare = __tuple_compare, 612825: tuple<_UElements...>, 612825: 0, sizeof...(_TElements)>; 612825: return __compare::__less(__t, __u); 612825: } 612825: 612825: template 612825: constexpr bool 612825: operator!=(const tuple<_TElements...>& __t, 612825: const tuple<_UElements...>& __u) 612825: { return !(__t == __u); } 612825: 612825: template 612825: constexpr bool 612825: operator>(const tuple<_TElements...>& __t, 612825: const tuple<_UElements...>& __u) 612825: { return __u < __t; } 612825: 612825: template 612825: constexpr bool 612825: operator<=(const tuple<_TElements...>& __t, 612825: const tuple<_UElements...>& __u) 612825: { return !(__u < __t); } 612825: 612825: template 612825: constexpr bool 612825: operator>=(const tuple<_TElements...>& __t, 612825: const tuple<_UElements...>& __u) 612825: { return !(__t < __u); } 612825: 612825: 612825: 612825: template 612825: constexpr tuple::__type...> 612825: make_tuple(_Elements&&... __args) 612825: { 612825: typedef tuple::__type...> 612825: __result_type; 612825: return __result_type(std::forward<_Elements>(__args)...); 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: constexpr tuple<_Elements&&...> 612825: forward_as_tuple(_Elements&&... __args) noexcept 612825: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } 612825: 612825: 612825: 612825: 612825: template struct array; 612825: 612825: template 612825: constexpr _Tp& 612825: get(array<_Tp, _Nm>&) noexcept; 612825: 612825: template 612825: constexpr _Tp&& 612825: get(array<_Tp, _Nm>&&) noexcept; 612825: 612825: template 612825: constexpr const _Tp& 612825: get(const array<_Tp, _Nm>&) noexcept; 612825: 612825: template 612825: constexpr const _Tp&& 612825: get(const array<_Tp, _Nm>&&) noexcept; 612825: 612825: 612825: template 612825: struct __make_tuple_impl; 612825: 612825: template 612825: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> 612825: : __make_tuple_impl<_Idx + 1, 612825: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, 612825: _Tuple, _Nm> 612825: { }; 612825: 612825: template 612825: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> 612825: { 612825: typedef tuple<_Tp...> __type; 612825: }; 612825: 612825: template 612825: struct __do_make_tuple 612825: : __make_tuple_impl<0, tuple<>, _Tuple, tuple_size<_Tuple>::value> 612825: { }; 612825: 612825: 612825: template 612825: struct __make_tuple 612825: : public __do_make_tuple<__remove_cvref_t<_Tuple>> 612825: { }; 612825: 612825: 612825: template 612825: struct __combine_tuples; 612825: 612825: template<> 612825: struct __combine_tuples<> 612825: { 612825: typedef tuple<> __type; 612825: }; 612825: 612825: template 612825: struct __combine_tuples> 612825: { 612825: typedef tuple<_Ts...> __type; 612825: }; 612825: 612825: template 612825: struct __combine_tuples, tuple<_T2s...>, _Rem...> 612825: { 612825: typedef typename __combine_tuples, 612825: _Rem...>::__type __type; 612825: }; 612825: 612825: 612825: template 612825: struct __tuple_cat_result 612825: { 612825: typedef typename __combine_tuples 612825: ::__type...>::__type __type; 612825: }; 612825: 612825: 612825: 612825: template 612825: struct __make_1st_indices; 612825: 612825: template<> 612825: struct __make_1st_indices<> 612825: { 612825: typedef _Index_tuple<> __type; 612825: }; 612825: 612825: template 612825: struct __make_1st_indices<_Tp, _Tpls...> 612825: { 612825: typedef typename _Build_index_tuple::type>::value>::__type __type; 612825: }; 612825: 612825: 612825: 612825: 612825: template 612825: struct __tuple_concater; 612825: 612825: template 612825: struct __tuple_concater<_Ret, _Index_tuple<_Is...>, _Tp, _Tpls...> 612825: { 612825: template 612825: static constexpr _Ret 612825: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) 612825: { 612825: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 612825: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; 612825: return __next::_S_do(std::forward<_Tpls>(__tps)..., 612825: std::forward<_Us>(__us)..., 612825: std::get<_Is>(std::forward<_Tp>(__tp))...); 612825: } 612825: }; 612825: 612825: template 612825: struct __tuple_concater<_Ret, _Index_tuple<>> 612825: { 612825: template 612825: static constexpr _Ret 612825: _S_do(_Us&&... __us) 612825: { 612825: return _Ret(std::forward<_Us>(__us)...); 612825: } 612825: }; 612825: 612825: template 612825: struct __is_tuple_like_impl> : true_type 612825: { }; 612825: 612825: 612825: template...>::value>::type> 612825: constexpr auto 612825: tuple_cat(_Tpls&&... __tpls) 612825: -> typename __tuple_cat_result<_Tpls...>::__type 612825: { 612825: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; 612825: typedef typename __make_1st_indices<_Tpls...>::__type __idx; 612825: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; 612825: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: constexpr tuple<_Elements&...> 612825: tie(_Elements&... __args) noexcept 612825: { return tuple<_Elements&...>(__args...); } 612825: 612825: 612825: template 612825: 612825: inline 612825: 612825: 612825: 612825: 612825: 612825: void 612825: 612825: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) 612825: noexcept(noexcept(__x.swap(__y))) 612825: { __x.swap(__y); } 612825: # 1773 "/usr/include/c++/12/tuple" 3 612825: struct _Swallow_assign 612825: { 612825: template 612825: const _Swallow_assign& 612825: operator=(const _Tp&) const 612825: { return *this; } 612825: }; 612825: 612825: 612825: 612825: constexpr _Swallow_assign ignore{}; 612825: 612825: 612825: template 612825: struct uses_allocator, _Alloc> : true_type { }; 612825: # 1798 "/usr/include/c++/12/tuple" 3 612825: template 612825: template 612825: 612825: inline 612825: pair<_T1, _T2>:: 612825: pair(piecewise_construct_t, 612825: tuple<_Args1...> __first, tuple<_Args2...> __second) 612825: : pair(__first, __second, 612825: typename _Build_index_tuple::__type(), 612825: typename _Build_index_tuple::__type()) 612825: { } 612825: 612825: template 612825: template 612825: inline 612825: pair<_T1, _T2>:: 612825: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, 612825: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) 612825: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), 612825: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) 612825: { } 612825: # 1888 "/usr/include/c++/12/tuple" 3 612825: 612825: } 612825: # 37 "/usr/include/c++/12/bits/unique_ptr.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_function.h" 1 3 612825: # 63 "/usr/include/c++/12/bits/stl_function.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 116 "/usr/include/c++/12/bits/stl_function.h" 3 612825: template 612825: struct unary_function 612825: { 612825: 612825: typedef _Arg argument_type; 612825: 612825: 612825: typedef _Result result_type; 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct binary_function 612825: { 612825: 612825: typedef _Arg1 first_argument_type; 612825: 612825: 612825: typedef _Arg2 second_argument_type; 612825: 612825: 612825: typedef _Result result_type; 612825: } __attribute__ ((__deprecated__)); 612825: # 179 "/usr/include/c++/12/bits/stl_function.h" 3 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: 612825: template 612825: struct plus : public binary_function<_Tp, _Tp, _Tp> 612825: { 612825: 612825: 612825: _Tp 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x + __y; } 612825: }; 612825: 612825: 612825: template 612825: struct minus : public binary_function<_Tp, _Tp, _Tp> 612825: { 612825: 612825: _Tp 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x - __y; } 612825: }; 612825: 612825: 612825: template 612825: struct multiplies : public binary_function<_Tp, _Tp, _Tp> 612825: { 612825: 612825: _Tp 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x * __y; } 612825: }; 612825: 612825: 612825: template 612825: struct divides : public binary_function<_Tp, _Tp, _Tp> 612825: { 612825: 612825: _Tp 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x / __y; } 612825: }; 612825: 612825: 612825: template 612825: struct modulus : public binary_function<_Tp, _Tp, _Tp> 612825: { 612825: 612825: _Tp 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x % __y; } 612825: }; 612825: 612825: 612825: template 612825: struct negate : public unary_function<_Tp, _Tp> 612825: { 612825: 612825: _Tp 612825: operator()(const _Tp& __x) const 612825: { return -__x; } 612825: }; 612825: #pragma GCC diagnostic pop 612825: # 368 "/usr/include/c++/12/bits/stl_function.h" 3 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: 612825: template 612825: struct equal_to : public binary_function<_Tp, _Tp, bool> 612825: { 612825: 612825: bool 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x == __y; } 612825: }; 612825: 612825: 612825: template 612825: struct not_equal_to : public binary_function<_Tp, _Tp, bool> 612825: { 612825: 612825: bool 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x != __y; } 612825: }; 612825: 612825: 612825: template 612825: struct greater : public binary_function<_Tp, _Tp, bool> 612825: { 612825: 612825: bool 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x > __y; } 612825: }; 612825: 612825: 612825: template 612825: struct less : public binary_function<_Tp, _Tp, bool> 612825: { 612825: 612825: bool 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x < __y; } 612825: }; 612825: 612825: 612825: template 612825: struct greater_equal : public binary_function<_Tp, _Tp, bool> 612825: { 612825: 612825: bool 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x >= __y; } 612825: }; 612825: 612825: 612825: template 612825: struct less_equal : public binary_function<_Tp, _Tp, bool> 612825: { 612825: 612825: bool 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x <= __y; } 612825: }; 612825: 612825: 612825: template 612825: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 612825: { 612825: bool 612825: operator()(_Tp* __x, _Tp* __y) const noexcept 612825: { 612825: 612825: 612825: 612825: 612825: return (long unsigned int)__x > (long unsigned int)__y; 612825: } 612825: }; 612825: 612825: 612825: template 612825: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 612825: { 612825: bool 612825: operator()(_Tp* __x, _Tp* __y) const noexcept 612825: { 612825: 612825: 612825: 612825: 612825: return (long unsigned int)__x < (long unsigned int)__y; 612825: } 612825: }; 612825: 612825: 612825: template 612825: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 612825: { 612825: bool 612825: operator()(_Tp* __x, _Tp* __y) const noexcept 612825: { 612825: 612825: 612825: 612825: 612825: return (long unsigned int)__x >= (long unsigned int)__y; 612825: } 612825: }; 612825: 612825: 612825: template 612825: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> 612825: { 612825: bool 612825: operator()(_Tp* __x, _Tp* __y) const noexcept 612825: { 612825: 612825: 612825: 612825: 612825: return (long unsigned int)__x <= (long unsigned int)__y; 612825: } 612825: }; 612825: #pragma GCC diagnostic pop 612825: # 791 "/usr/include/c++/12/bits/stl_function.h" 3 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: 612825: template 612825: struct logical_and : public binary_function<_Tp, _Tp, bool> 612825: { 612825: 612825: bool 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x && __y; } 612825: }; 612825: 612825: 612825: template 612825: struct logical_or : public binary_function<_Tp, _Tp, bool> 612825: { 612825: 612825: bool 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x || __y; } 612825: }; 612825: 612825: 612825: template 612825: struct logical_not : public unary_function<_Tp, bool> 612825: { 612825: 612825: bool 612825: operator()(const _Tp& __x) const 612825: { return !__x; } 612825: }; 612825: #pragma GCC diagnostic pop 612825: # 887 "/usr/include/c++/12/bits/stl_function.h" 3 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: 612825: 612825: template 612825: struct bit_and : public binary_function<_Tp, _Tp, _Tp> 612825: { 612825: 612825: _Tp 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x & __y; } 612825: }; 612825: 612825: template 612825: struct bit_or : public binary_function<_Tp, _Tp, _Tp> 612825: { 612825: 612825: _Tp 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x | __y; } 612825: }; 612825: 612825: template 612825: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> 612825: { 612825: 612825: _Tp 612825: operator()(const _Tp& __x, const _Tp& __y) const 612825: { return __x ^ __y; } 612825: }; 612825: 612825: template 612825: struct bit_not : public unary_function<_Tp, _Tp> 612825: { 612825: 612825: _Tp 612825: operator()(const _Tp& __x) const 612825: { return ~__x; } 612825: }; 612825: #pragma GCC diagnostic pop 612825: # 987 "/usr/include/c++/12/bits/stl_function.h" 3 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: # 1023 "/usr/include/c++/12/bits/stl_function.h" 3 612825: template 612825: class unary_negate 612825: : public unary_function 612825: { 612825: protected: 612825: _Predicate _M_pred; 612825: 612825: public: 612825: 612825: explicit 612825: unary_negate(const _Predicate& __x) : _M_pred(__x) { } 612825: 612825: 612825: bool 612825: operator()(const typename _Predicate::argument_type& __x) const 612825: { return !_M_pred(__x); } 612825: }; 612825: 612825: 612825: template 612825: 612825: 612825: inline unary_negate<_Predicate> 612825: not1(const _Predicate& __pred) 612825: { return unary_negate<_Predicate>(__pred); } 612825: 612825: 612825: template 612825: class binary_negate 612825: : public binary_function 612825: { 612825: protected: 612825: _Predicate _M_pred; 612825: 612825: public: 612825: 612825: explicit 612825: binary_negate(const _Predicate& __x) : _M_pred(__x) { } 612825: 612825: 612825: bool 612825: operator()(const typename _Predicate::first_argument_type& __x, 612825: const typename _Predicate::second_argument_type& __y) const 612825: { return !_M_pred(__x, __y); } 612825: }; 612825: 612825: 612825: template 612825: 612825: 612825: inline binary_negate<_Predicate> 612825: not2(const _Predicate& __pred) 612825: { return binary_negate<_Predicate>(__pred); } 612825: # 1104 "/usr/include/c++/12/bits/stl_function.h" 3 612825: template 612825: class pointer_to_unary_function : public unary_function<_Arg, _Result> 612825: { 612825: protected: 612825: _Result (*_M_ptr)(_Arg); 612825: 612825: public: 612825: pointer_to_unary_function() { } 612825: 612825: explicit 612825: pointer_to_unary_function(_Result (*__x)(_Arg)) 612825: : _M_ptr(__x) { } 612825: 612825: _Result 612825: operator()(_Arg __x) const 612825: { return _M_ptr(__x); } 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) 612825: inline pointer_to_unary_function<_Arg, _Result> 612825: ptr_fun(_Result (*__x)(_Arg)) 612825: { return pointer_to_unary_function<_Arg, _Result>(__x); } 612825: 612825: 612825: template 612825: class pointer_to_binary_function 612825: : public binary_function<_Arg1, _Arg2, _Result> 612825: { 612825: protected: 612825: _Result (*_M_ptr)(_Arg1, _Arg2); 612825: 612825: public: 612825: pointer_to_binary_function() { } 612825: 612825: explicit 612825: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 612825: : _M_ptr(__x) { } 612825: 612825: _Result 612825: operator()(_Arg1 __x, _Arg2 __y) const 612825: { return _M_ptr(__x, __y); } 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) 612825: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> 612825: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) 612825: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } 612825: 612825: 612825: template 612825: struct _Identity 612825: : public unary_function<_Tp, _Tp> 612825: { 612825: _Tp& 612825: operator()(_Tp& __x) const 612825: { return __x; } 612825: 612825: const _Tp& 612825: operator()(const _Tp& __x) const 612825: { return __x; } 612825: }; 612825: 612825: 612825: template struct _Identity : _Identity<_Tp> { }; 612825: 612825: template 612825: struct _Select1st 612825: : public unary_function<_Pair, typename _Pair::first_type> 612825: { 612825: typename _Pair::first_type& 612825: operator()(_Pair& __x) const 612825: { return __x.first; } 612825: 612825: const typename _Pair::first_type& 612825: operator()(const _Pair& __x) const 612825: { return __x.first; } 612825: 612825: 612825: template 612825: typename _Pair2::first_type& 612825: operator()(_Pair2& __x) const 612825: { return __x.first; } 612825: 612825: template 612825: const typename _Pair2::first_type& 612825: operator()(const _Pair2& __x) const 612825: { return __x.first; } 612825: 612825: }; 612825: 612825: template 612825: struct _Select2nd 612825: : public unary_function<_Pair, typename _Pair::second_type> 612825: { 612825: typename _Pair::second_type& 612825: operator()(_Pair& __x) const 612825: { return __x.second; } 612825: 612825: const typename _Pair::second_type& 612825: operator()(const _Pair& __x) const 612825: { return __x.second; } 612825: }; 612825: # 1231 "/usr/include/c++/12/bits/stl_function.h" 3 612825: template 612825: class mem_fun_t : public unary_function<_Tp*, _Ret> 612825: { 612825: public: 612825: explicit 612825: mem_fun_t(_Ret (_Tp::*__pf)()) 612825: : _M_f(__pf) { } 612825: 612825: _Ret 612825: operator()(_Tp* __p) const 612825: { return (__p->*_M_f)(); } 612825: 612825: private: 612825: _Ret (_Tp::*_M_f)(); 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: template 612825: class const_mem_fun_t : public unary_function 612825: { 612825: public: 612825: explicit 612825: const_mem_fun_t(_Ret (_Tp::*__pf)() const) 612825: : _M_f(__pf) { } 612825: 612825: _Ret 612825: operator()(const _Tp* __p) const 612825: { return (__p->*_M_f)(); } 612825: 612825: private: 612825: _Ret (_Tp::*_M_f)() const; 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: template 612825: class mem_fun_ref_t : public unary_function<_Tp, _Ret> 612825: { 612825: public: 612825: explicit 612825: mem_fun_ref_t(_Ret (_Tp::*__pf)()) 612825: : _M_f(__pf) { } 612825: 612825: _Ret 612825: operator()(_Tp& __r) const 612825: { return (__r.*_M_f)(); } 612825: 612825: private: 612825: _Ret (_Tp::*_M_f)(); 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: template 612825: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> 612825: { 612825: public: 612825: explicit 612825: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) 612825: : _M_f(__pf) { } 612825: 612825: _Ret 612825: operator()(const _Tp& __r) const 612825: { return (__r.*_M_f)(); } 612825: 612825: private: 612825: _Ret (_Tp::*_M_f)() const; 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: template 612825: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> 612825: { 612825: public: 612825: explicit 612825: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) 612825: : _M_f(__pf) { } 612825: 612825: _Ret 612825: operator()(_Tp* __p, _Arg __x) const 612825: { return (__p->*_M_f)(__x); } 612825: 612825: private: 612825: _Ret (_Tp::*_M_f)(_Arg); 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: template 612825: class const_mem_fun1_t : public binary_function 612825: { 612825: public: 612825: explicit 612825: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) 612825: : _M_f(__pf) { } 612825: 612825: _Ret 612825: operator()(const _Tp* __p, _Arg __x) const 612825: { return (__p->*_M_f)(__x); } 612825: 612825: private: 612825: _Ret (_Tp::*_M_f)(_Arg) const; 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: template 612825: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 612825: { 612825: public: 612825: explicit 612825: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) 612825: : _M_f(__pf) { } 612825: 612825: _Ret 612825: operator()(_Tp& __r, _Arg __x) const 612825: { return (__r.*_M_f)(__x); } 612825: 612825: private: 612825: _Ret (_Tp::*_M_f)(_Arg); 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: template 612825: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> 612825: { 612825: public: 612825: explicit 612825: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) 612825: : _M_f(__pf) { } 612825: 612825: _Ret 612825: operator()(const _Tp& __r, _Arg __x) const 612825: { return (__r.*_M_f)(__x); } 612825: 612825: private: 612825: _Ret (_Tp::*_M_f)(_Arg) const; 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 612825: inline mem_fun_t<_Ret, _Tp> 612825: mem_fun(_Ret (_Tp::*__f)()) 612825: { return mem_fun_t<_Ret, _Tp>(__f); } 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 612825: inline const_mem_fun_t<_Ret, _Tp> 612825: mem_fun(_Ret (_Tp::*__f)() const) 612825: { return const_mem_fun_t<_Ret, _Tp>(__f); } 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 612825: inline mem_fun_ref_t<_Ret, _Tp> 612825: mem_fun_ref(_Ret (_Tp::*__f)()) 612825: { return mem_fun_ref_t<_Ret, _Tp>(__f); } 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 612825: inline const_mem_fun_ref_t<_Ret, _Tp> 612825: mem_fun_ref(_Ret (_Tp::*__f)() const) 612825: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 612825: inline mem_fun1_t<_Ret, _Tp, _Arg> 612825: mem_fun(_Ret (_Tp::*__f)(_Arg)) 612825: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 612825: inline const_mem_fun1_t<_Ret, _Tp, _Arg> 612825: mem_fun(_Ret (_Tp::*__f)(_Arg) const) 612825: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 612825: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> 612825: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) 612825: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) 612825: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> 612825: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) 612825: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } 612825: #pragma GCC diagnostic pop 612825: # 1434 "/usr/include/c++/12/bits/stl_function.h" 3 612825: 612825: } 612825: 612825: 612825: # 1 "/usr/include/c++/12/backward/binders.h" 1 3 612825: # 60 "/usr/include/c++/12/backward/binders.h" 3 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 107 "/usr/include/c++/12/backward/binders.h" 3 612825: template 612825: class binder1st 612825: : public unary_function 612825: { 612825: protected: 612825: _Operation op; 612825: typename _Operation::first_argument_type value; 612825: 612825: public: 612825: binder1st(const _Operation& __x, 612825: const typename _Operation::first_argument_type& __y) 612825: : op(__x), value(__y) { } 612825: 612825: typename _Operation::result_type 612825: operator()(const typename _Operation::second_argument_type& __x) const 612825: { return op(value, __x); } 612825: 612825: 612825: 612825: typename _Operation::result_type 612825: operator()(typename _Operation::second_argument_type& __x) const 612825: { return op(value, __x); } 612825: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); 612825: 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) 612825: inline binder1st<_Operation> 612825: bind1st(const _Operation& __fn, const _Tp& __x) 612825: { 612825: typedef typename _Operation::first_argument_type _Arg1_type; 612825: return binder1st<_Operation>(__fn, _Arg1_type(__x)); 612825: } 612825: 612825: 612825: template 612825: class binder2nd 612825: : public unary_function 612825: { 612825: protected: 612825: _Operation op; 612825: typename _Operation::second_argument_type value; 612825: 612825: public: 612825: binder2nd(const _Operation& __x, 612825: const typename _Operation::second_argument_type& __y) 612825: : op(__x), value(__y) { } 612825: 612825: typename _Operation::result_type 612825: operator()(const typename _Operation::first_argument_type& __x) const 612825: { return op(__x, value); } 612825: 612825: 612825: 612825: typename _Operation::result_type 612825: operator()(typename _Operation::first_argument_type& __x) const 612825: { return op(__x, value); } 612825: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); 612825: 612825: 612825: template 612825: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) 612825: inline binder2nd<_Operation> 612825: bind2nd(const _Operation& __fn, const _Tp& __x) 612825: { 612825: typedef typename _Operation::second_argument_type _Arg2_type; 612825: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); 612825: } 612825: 612825: 612825: 612825: } 612825: 612825: #pragma GCC diagnostic pop 612825: # 1439 "/usr/include/c++/12/bits/stl_function.h" 2 3 612825: # 38 "/usr/include/c++/12/bits/unique_ptr.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/functional_hash.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/functional_hash.h" 3 612825: 612825: # 34 "/usr/include/c++/12/bits/functional_hash.h" 3 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/hash_bytes.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/hash_bytes.h" 3 612825: 612825: # 34 "/usr/include/c++/12/bits/hash_bytes.h" 3 612825: 612825: 612825: 612825: namespace std 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: size_t 612825: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); 612825: 612825: 612825: 612825: 612825: 612825: size_t 612825: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); 612825: 612825: 612825: } 612825: # 37 "/usr/include/c++/12/bits/functional_hash.h" 2 3 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 50 "/usr/include/c++/12/bits/functional_hash.h" 3 612825: template 612825: struct __hash_base 612825: { 612825: typedef _Result result_type ; 612825: typedef _Arg argument_type ; 612825: }; 612825: 612825: 612825: template 612825: struct hash; 612825: 612825: template 612825: struct __poison_hash 612825: { 612825: static constexpr bool __enable_hash_call = false; 612825: private: 612825: 612825: __poison_hash(__poison_hash&&); 612825: ~__poison_hash(); 612825: }; 612825: 612825: template 612825: struct __poison_hash<_Tp, __void_t()(declval<_Tp>()))>> 612825: { 612825: static constexpr bool __enable_hash_call = true; 612825: }; 612825: 612825: 612825: template::value> 612825: struct __hash_enum 612825: { 612825: private: 612825: 612825: __hash_enum(__hash_enum&&); 612825: ~__hash_enum(); 612825: }; 612825: 612825: 612825: template 612825: struct __hash_enum<_Tp, true> : public __hash_base 612825: { 612825: size_t 612825: operator()(_Tp __val) const noexcept 612825: { 612825: using __type = typename underlying_type<_Tp>::type; 612825: return hash<__type>{}(static_cast<__type>(__val)); 612825: } 612825: }; 612825: 612825: 612825: 612825: template 612825: struct hash : __hash_enum<_Tp> 612825: { }; 612825: 612825: 612825: template 612825: struct hash<_Tp*> : public __hash_base 612825: { 612825: size_t 612825: operator()(_Tp* __p) const noexcept 612825: { return reinterpret_cast(__p); } 612825: }; 612825: # 125 "/usr/include/c++/12/bits/functional_hash.h" 3 612825: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; 612825: 612825: 612825: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; 612825: # 201 "/usr/include/c++/12/bits/functional_hash.h" 3 612825: struct _Hash_impl 612825: { 612825: static size_t 612825: hash(const void* __ptr, size_t __clength, 612825: size_t __seed = static_cast(0xc70f6907UL)) 612825: { return _Hash_bytes(__ptr, __clength, __seed); } 612825: 612825: template 612825: static size_t 612825: hash(const _Tp& __val) 612825: { return hash(&__val, sizeof(__val)); } 612825: 612825: template 612825: static size_t 612825: __hash_combine(const _Tp& __val, size_t __hash) 612825: { return hash(&__val, sizeof(__val), __hash); } 612825: }; 612825: 612825: 612825: struct _Fnv_hash_impl 612825: { 612825: static size_t 612825: hash(const void* __ptr, size_t __clength, 612825: size_t __seed = static_cast(2166136261UL)) 612825: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } 612825: 612825: template 612825: static size_t 612825: hash(const _Tp& __val) 612825: { return hash(&__val, sizeof(__val)); } 612825: 612825: template 612825: static size_t 612825: __hash_combine(const _Tp& __val, size_t __hash) 612825: { return hash(&__val, sizeof(__val), __hash); } 612825: }; 612825: 612825: 612825: template<> 612825: struct hash : public __hash_base 612825: { 612825: size_t 612825: operator()(float __val) const noexcept 612825: { 612825: 612825: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; 612825: } 612825: }; 612825: 612825: 612825: template<> 612825: struct hash : public __hash_base 612825: { 612825: size_t 612825: operator()(double __val) const noexcept 612825: { 612825: 612825: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; 612825: } 612825: }; 612825: 612825: 612825: template<> 612825: struct hash 612825: : public __hash_base 612825: { 612825: __attribute__ ((__pure__)) size_t 612825: operator()(long double __val) const noexcept; 612825: }; 612825: # 287 "/usr/include/c++/12/bits/functional_hash.h" 3 612825: template 612825: struct __is_fast_hash : public std::true_type 612825: { }; 612825: 612825: template<> 612825: struct __is_fast_hash> : public std::false_type 612825: { }; 612825: 612825: 612825: } 612825: # 39 "/usr/include/c++/12/bits/unique_ptr.h" 2 3 612825: # 52 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: template class auto_ptr; 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: 612825: 612825: template 612825: struct default_delete 612825: { 612825: 612825: constexpr default_delete() noexcept = default; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template>> 612825: 612825: default_delete(const default_delete<_Up>&) noexcept { } 612825: 612825: 612825: 612825: void 612825: operator()(_Tp* __ptr) const 612825: { 612825: static_assert(!is_void<_Tp>::value, 612825: "can't delete pointer to incomplete type"); 612825: static_assert(sizeof(_Tp)>0, 612825: "can't delete pointer to incomplete type"); 612825: delete __ptr; 612825: } 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct default_delete<_Tp[]> 612825: { 612825: public: 612825: 612825: constexpr default_delete() noexcept = default; 612825: # 119 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template>> 612825: 612825: default_delete(const default_delete<_Up[]>&) noexcept { } 612825: 612825: 612825: template 612825: 612825: typename enable_if::value>::type 612825: operator()(_Up* __ptr) const 612825: { 612825: static_assert(sizeof(_Tp)>0, 612825: "can't delete pointer to incomplete type"); 612825: delete [] __ptr; 612825: } 612825: }; 612825: 612825: 612825: 612825: 612825: template 612825: class __uniq_ptr_impl 612825: { 612825: template 612825: struct _Ptr 612825: { 612825: using type = _Up*; 612825: }; 612825: 612825: template 612825: struct 612825: _Ptr<_Up, _Ep, __void_t::type::pointer>> 612825: { 612825: using type = typename remove_reference<_Ep>::type::pointer; 612825: }; 612825: 612825: public: 612825: using _DeleterConstraint = enable_if< 612825: __and_<__not_>, 612825: is_default_constructible<_Dp>>::value>; 612825: 612825: using pointer = typename _Ptr<_Tp, _Dp>::type; 612825: 612825: static_assert( !is_rvalue_reference<_Dp>::value, 612825: "unique_ptr's deleter type must be a function object type" 612825: " or an lvalue reference type" ); 612825: 612825: __uniq_ptr_impl() = default; 612825: 612825: __uniq_ptr_impl(pointer __p) : _M_t() { _M_ptr() = __p; } 612825: 612825: template 612825: 612825: __uniq_ptr_impl(pointer __p, _Del&& __d) 612825: : _M_t(__p, std::forward<_Del>(__d)) { } 612825: 612825: 612825: __uniq_ptr_impl(__uniq_ptr_impl&& __u) noexcept 612825: : _M_t(std::move(__u._M_t)) 612825: { __u._M_ptr() = nullptr; } 612825: 612825: 612825: __uniq_ptr_impl& operator=(__uniq_ptr_impl&& __u) noexcept 612825: { 612825: reset(__u.release()); 612825: _M_deleter() = std::forward<_Dp>(__u._M_deleter()); 612825: return *this; 612825: } 612825: 612825: 612825: pointer& _M_ptr() noexcept { return std::get<0>(_M_t); } 612825: 612825: pointer _M_ptr() const noexcept { return std::get<0>(_M_t); } 612825: 612825: _Dp& _M_deleter() noexcept { return std::get<1>(_M_t); } 612825: 612825: const _Dp& _M_deleter() const noexcept { return std::get<1>(_M_t); } 612825: 612825: 612825: void reset(pointer __p) noexcept 612825: { 612825: const pointer __old_p = _M_ptr(); 612825: _M_ptr() = __p; 612825: if (__old_p) 612825: _M_deleter()(__old_p); 612825: } 612825: 612825: 612825: pointer release() noexcept 612825: { 612825: pointer __p = _M_ptr(); 612825: _M_ptr() = nullptr; 612825: return __p; 612825: } 612825: 612825: 612825: void 612825: swap(__uniq_ptr_impl& __rhs) noexcept 612825: { 612825: using std::swap; 612825: swap(this->_M_ptr(), __rhs._M_ptr()); 612825: swap(this->_M_deleter(), __rhs._M_deleter()); 612825: } 612825: 612825: private: 612825: tuple _M_t; 612825: }; 612825: 612825: 612825: template ::value, 612825: bool = is_move_assignable<_Dp>::value> 612825: struct __uniq_ptr_data : __uniq_ptr_impl<_Tp, _Dp> 612825: { 612825: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 612825: __uniq_ptr_data(__uniq_ptr_data&&) = default; 612825: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default; 612825: }; 612825: 612825: template 612825: struct __uniq_ptr_data<_Tp, _Dp, true, false> : __uniq_ptr_impl<_Tp, _Dp> 612825: { 612825: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 612825: __uniq_ptr_data(__uniq_ptr_data&&) = default; 612825: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete; 612825: }; 612825: 612825: template 612825: struct __uniq_ptr_data<_Tp, _Dp, false, true> : __uniq_ptr_impl<_Tp, _Dp> 612825: { 612825: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 612825: __uniq_ptr_data(__uniq_ptr_data&&) = delete; 612825: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default; 612825: }; 612825: 612825: template 612825: struct __uniq_ptr_data<_Tp, _Dp, false, false> : __uniq_ptr_impl<_Tp, _Dp> 612825: { 612825: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; 612825: __uniq_ptr_data(__uniq_ptr_data&&) = delete; 612825: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template > 612825: class unique_ptr 612825: { 612825: template 612825: using _DeleterConstraint = 612825: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 612825: 612825: __uniq_ptr_data<_Tp, _Dp> _M_t; 612825: 612825: public: 612825: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 612825: using element_type = _Tp; 612825: using deleter_type = _Dp; 612825: 612825: private: 612825: 612825: 612825: template 612825: using __safe_conversion_up = __and_< 612825: is_convertible::pointer, pointer>, 612825: __not_> 612825: >; 612825: 612825: public: 612825: 612825: 612825: 612825: template> 612825: constexpr unique_ptr() noexcept 612825: : _M_t() 612825: { } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template> 612825: 612825: explicit 612825: unique_ptr(pointer __p) noexcept 612825: : _M_t(__p) 612825: { } 612825: # 320 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template>> 612825: 612825: unique_ptr(pointer __p, const deleter_type& __d) noexcept 612825: : _M_t(__p, __d) { } 612825: # 333 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template>> 612825: 612825: unique_ptr(pointer __p, 612825: __enable_if_t::value, 612825: _Del&&> __d) noexcept 612825: : _M_t(__p, std::move(__d)) 612825: { } 612825: 612825: template::type> 612825: 612825: unique_ptr(pointer, 612825: __enable_if_t::value, 612825: _DelUnref&&>) = delete; 612825: 612825: 612825: template> 612825: constexpr unique_ptr(nullptr_t) noexcept 612825: : _M_t() 612825: { } 612825: 612825: 612825: 612825: 612825: unique_ptr(unique_ptr&&) = default; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template, 612825: __conditional_t::value, 612825: is_same<_Ep, _Dp>, 612825: is_convertible<_Ep, _Dp>>>> 612825: 612825: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 612825: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) 612825: { } 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: template, is_same<_Dp, default_delete<_Tp>>>> 612825: unique_ptr(auto_ptr<_Up>&& __u) noexcept; 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: 612825: 612825: 612825: 612825: ~unique_ptr() noexcept 612825: { 612825: static_assert(__is_invocable::value, 612825: "unique_ptr's deleter must be invocable with a pointer"); 612825: auto& __ptr = _M_t._M_ptr(); 612825: if (__ptr != nullptr) 612825: get_deleter()(std::move(__ptr)); 612825: __ptr = pointer(); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: unique_ptr& operator=(unique_ptr&&) = default; 612825: # 415 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template 612825: 612825: typename enable_if< __and_< 612825: __safe_conversion_up<_Up, _Ep>, 612825: is_assignable 612825: >::value, 612825: unique_ptr&>::type 612825: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept 612825: { 612825: reset(__u.release()); 612825: get_deleter() = std::forward<_Ep>(__u.get_deleter()); 612825: return *this; 612825: } 612825: 612825: 612825: 612825: unique_ptr& 612825: operator=(nullptr_t) noexcept 612825: { 612825: reset(); 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: typename add_lvalue_reference::type 612825: operator*() const noexcept(noexcept(*std::declval())) 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(get() != pointer())) __builtin_unreachable(); } while (false); 612825: return *get(); 612825: } 612825: 612825: 612825: 612825: pointer 612825: operator->() const noexcept 612825: { 612825: ; 612825: return get(); 612825: } 612825: 612825: 612825: 612825: pointer 612825: get() const noexcept 612825: { return _M_t._M_ptr(); } 612825: 612825: 612825: 612825: deleter_type& 612825: get_deleter() noexcept 612825: { return _M_t._M_deleter(); } 612825: 612825: 612825: 612825: const deleter_type& 612825: get_deleter() const noexcept 612825: { return _M_t._M_deleter(); } 612825: 612825: 612825: 612825: explicit operator bool() const noexcept 612825: { return get() == pointer() ? false : true; } 612825: 612825: 612825: 612825: 612825: 612825: pointer 612825: release() noexcept 612825: { return _M_t.release(); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: void 612825: reset(pointer __p = pointer()) noexcept 612825: { 612825: static_assert(__is_invocable::value, 612825: "unique_ptr's deleter must be invocable with a pointer"); 612825: _M_t.reset(std::move(__p)); 612825: } 612825: 612825: 612825: 612825: void 612825: swap(unique_ptr& __u) noexcept 612825: { 612825: static_assert(__is_swappable<_Dp>::value, "deleter must be swappable"); 612825: _M_t.swap(__u._M_t); 612825: } 612825: 612825: 612825: unique_ptr(const unique_ptr&) = delete; 612825: unique_ptr& operator=(const unique_ptr&) = delete; 612825: }; 612825: # 526 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template 612825: class unique_ptr<_Tp[], _Dp> 612825: { 612825: template 612825: using _DeleterConstraint = 612825: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; 612825: 612825: __uniq_ptr_data<_Tp, _Dp> _M_t; 612825: 612825: template 612825: using __remove_cv = typename remove_cv<_Up>::type; 612825: 612825: 612825: template 612825: using __is_derived_Tp 612825: = __and_< is_base_of<_Tp, _Up>, 612825: __not_, __remove_cv<_Up>>> >; 612825: 612825: public: 612825: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; 612825: using element_type = _Tp; 612825: using deleter_type = _Dp; 612825: 612825: 612825: 612825: template, 612825: typename _UP_pointer = typename _UPtr::pointer, 612825: typename _UP_element_type = typename _UPtr::element_type> 612825: using __safe_conversion_up = __and_< 612825: is_array<_Up>, 612825: is_same, 612825: is_same<_UP_pointer, _UP_element_type*>, 612825: is_convertible<_UP_element_type(*)[], element_type(*)[]> 612825: >; 612825: 612825: 612825: template 612825: using __safe_conversion_raw = __and_< 612825: __or_<__or_, 612825: is_same<_Up, nullptr_t>>, 612825: __and_, 612825: is_same, 612825: is_convertible< 612825: typename remove_pointer<_Up>::type(*)[], 612825: element_type(*)[]> 612825: > 612825: > 612825: >; 612825: 612825: 612825: 612825: 612825: template> 612825: constexpr unique_ptr() noexcept 612825: : _M_t() 612825: { } 612825: # 591 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template, 612825: typename = typename enable_if< 612825: __safe_conversion_raw<_Up>::value, bool>::type> 612825: 612825: explicit 612825: unique_ptr(_Up __p) noexcept 612825: : _M_t(__p) 612825: { } 612825: # 610 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template, 612825: is_copy_constructible<_Del>>> 612825: 612825: unique_ptr(_Up __p, const deleter_type& __d) noexcept 612825: : _M_t(__p, __d) { } 612825: # 625 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template, 612825: is_move_constructible<_Del>>> 612825: 612825: unique_ptr(_Up __p, 612825: __enable_if_t::value, 612825: _Del&&> __d) noexcept 612825: : _M_t(std::move(__p), std::move(__d)) 612825: { } 612825: 612825: template::type, 612825: typename = _Require<__safe_conversion_raw<_Up>>> 612825: unique_ptr(_Up, 612825: __enable_if_t::value, 612825: _DelUnref&&>) = delete; 612825: 612825: 612825: unique_ptr(unique_ptr&&) = default; 612825: 612825: 612825: template> 612825: constexpr unique_ptr(nullptr_t) noexcept 612825: : _M_t() 612825: { } 612825: 612825: template, 612825: __conditional_t::value, 612825: is_same<_Ep, _Dp>, 612825: is_convertible<_Ep, _Dp>>>> 612825: 612825: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept 612825: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) 612825: { } 612825: 612825: 612825: 612825: 612825: 612825: ~unique_ptr() 612825: { 612825: auto& __ptr = _M_t._M_ptr(); 612825: if (__ptr != nullptr) 612825: get_deleter()(__ptr); 612825: __ptr = pointer(); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: unique_ptr& 612825: operator=(unique_ptr&&) = default; 612825: # 689 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template 612825: 612825: typename 612825: enable_if<__and_<__safe_conversion_up<_Up, _Ep>, 612825: is_assignable 612825: >::value, 612825: unique_ptr&>::type 612825: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept 612825: { 612825: reset(__u.release()); 612825: get_deleter() = std::forward<_Ep>(__u.get_deleter()); 612825: return *this; 612825: } 612825: 612825: 612825: 612825: unique_ptr& 612825: operator=(nullptr_t) noexcept 612825: { 612825: reset(); 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: typename std::add_lvalue_reference::type 612825: operator[](size_t __i) const 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(get() != pointer())) __builtin_unreachable(); } while (false); 612825: return get()[__i]; 612825: } 612825: 612825: 612825: 612825: pointer 612825: get() const noexcept 612825: { return _M_t._M_ptr(); } 612825: 612825: 612825: 612825: deleter_type& 612825: get_deleter() noexcept 612825: { return _M_t._M_deleter(); } 612825: 612825: 612825: 612825: const deleter_type& 612825: get_deleter() const noexcept 612825: { return _M_t._M_deleter(); } 612825: 612825: 612825: 612825: explicit operator bool() const noexcept 612825: { return get() == pointer() ? false : true; } 612825: 612825: 612825: 612825: 612825: 612825: pointer 612825: release() noexcept 612825: { return _M_t.release(); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template , 612825: __and_, 612825: is_pointer<_Up>, 612825: is_convertible< 612825: typename remove_pointer<_Up>::type(*)[], 612825: element_type(*)[] 612825: > 612825: > 612825: > 612825: >> 612825: 612825: void 612825: reset(_Up __p) noexcept 612825: { _M_t.reset(std::move(__p)); } 612825: 612825: 612825: void reset(nullptr_t = nullptr) noexcept 612825: { reset(pointer()); } 612825: 612825: 612825: 612825: void 612825: swap(unique_ptr& __u) noexcept 612825: { 612825: static_assert(__is_swappable<_Dp>::value, "deleter must be swappable"); 612825: _M_t.swap(__u._M_t); 612825: } 612825: 612825: 612825: unique_ptr(const unique_ptr&) = delete; 612825: unique_ptr& operator=(const unique_ptr&) = delete; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline 612825: 612825: 612825: 612825: 612825: 612825: void 612825: 612825: swap(unique_ptr<_Tp, _Dp>& __x, 612825: unique_ptr<_Tp, _Dp>& __y) noexcept 612825: { __x.swap(__y); } 612825: # 820 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template 612825: 612825: inline bool 612825: operator==(const unique_ptr<_Tp, _Dp>& __x, 612825: const unique_ptr<_Up, _Ep>& __y) 612825: { return __x.get() == __y.get(); } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept 612825: { return !__x; } 612825: 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept 612825: { return !__x; } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator!=(const unique_ptr<_Tp, _Dp>& __x, 612825: const unique_ptr<_Up, _Ep>& __y) 612825: { return __x.get() != __y.get(); } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept 612825: { return (bool)__x; } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept 612825: { return (bool)__x; } 612825: 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator<(const unique_ptr<_Tp, _Dp>& __x, 612825: const unique_ptr<_Up, _Ep>& __y) 612825: { 612825: typedef typename 612825: std::common_type::pointer, 612825: typename unique_ptr<_Up, _Ep>::pointer>::type _CT; 612825: return std::less<_CT>()(__x.get(), __y.get()); 612825: } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 612825: { 612825: return std::less::pointer>()(__x.get(), 612825: nullptr); 612825: } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 612825: { 612825: return std::less::pointer>()(nullptr, 612825: __x.get()); 612825: } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator<=(const unique_ptr<_Tp, _Dp>& __x, 612825: const unique_ptr<_Up, _Ep>& __y) 612825: { return !(__y < __x); } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 612825: { return !(nullptr < __x); } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 612825: { return !(__x < nullptr); } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator>(const unique_ptr<_Tp, _Dp>& __x, 612825: const unique_ptr<_Up, _Ep>& __y) 612825: { return (__y < __x); } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 612825: { 612825: return std::less::pointer>()(nullptr, 612825: __x.get()); 612825: } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 612825: { 612825: return std::less::pointer>()(__x.get(), 612825: nullptr); 612825: } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator>=(const unique_ptr<_Tp, _Dp>& __x, 612825: const unique_ptr<_Up, _Ep>& __y) 612825: { return !(__x < __y); } 612825: 612825: 612825: template 612825: 612825: inline bool 612825: operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) 612825: { return !(__x < nullptr); } 612825: 612825: 612825: template 612825: inline bool 612825: operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) 612825: { return !(nullptr < __x); } 612825: # 1001 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: template::__enable_hash_call> 612825: struct __uniq_ptr_hash 612825: 612825: : private __poison_hash<_Ptr> 612825: 612825: { 612825: size_t 612825: operator()(const _Up& __u) const 612825: noexcept(noexcept(std::declval>()(std::declval<_Ptr>()))) 612825: { return hash<_Ptr>()(__u.get()); } 612825: }; 612825: 612825: template 612825: struct __uniq_ptr_hash<_Up, _Ptr, false> 612825: : private __poison_hash<_Ptr> 612825: { }; 612825: 612825: 612825: 612825: template 612825: struct hash> 612825: : public __hash_base>, 612825: public __uniq_ptr_hash> 612825: { }; 612825: # 1162 "/usr/include/c++/12/bits/unique_ptr.h" 3 612825: 612825: } 612825: # 77 "/usr/include/c++/12/memory" 2 3 612825: # 1 "/usr/include/c++/12/bits/shared_ptr.h" 1 3 612825: # 52 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: # 1 "/usr/include/c++/12/iosfwd" 1 3 612825: # 36 "/usr/include/c++/12/iosfwd" 3 612825: 612825: # 37 "/usr/include/c++/12/iosfwd" 3 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/stringfwd.h" 1 3 612825: # 37 "/usr/include/c++/12/bits/stringfwd.h" 3 612825: 612825: # 38 "/usr/include/c++/12/bits/stringfwd.h" 3 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct char_traits; 612825: 612825: template<> struct char_traits; 612825: 612825: template<> struct char_traits; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template<> struct char_traits; 612825: template<> struct char_traits; 612825: 612825: 612825: namespace __cxx11 { 612825: 612825: template, 612825: typename _Alloc = allocator<_CharT> > 612825: class basic_string; 612825: 612825: } 612825: 612825: 612825: typedef basic_string string; 612825: 612825: 612825: typedef basic_string wstring; 612825: # 89 "/usr/include/c++/12/bits/stringfwd.h" 3 612825: typedef basic_string u16string; 612825: 612825: 612825: typedef basic_string u32string; 612825: 612825: 612825: 612825: 612825: 612825: } 612825: # 40 "/usr/include/c++/12/iosfwd" 2 3 612825: # 1 "/usr/include/c++/12/bits/postypes.h" 1 3 612825: # 38 "/usr/include/c++/12/bits/postypes.h" 3 612825: 612825: # 39 "/usr/include/c++/12/bits/postypes.h" 3 612825: 612825: # 1 "/usr/include/c++/12/cwchar" 1 3 612825: # 39 "/usr/include/c++/12/cwchar" 3 612825: 612825: # 40 "/usr/include/c++/12/cwchar" 3 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/wchar.h" 1 3 4 612825: # 27 "/usr/include/wchar.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4 612825: # 28 "/usr/include/wchar.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 612825: # 36 "/usr/include/wchar.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stdarg.h" 1 3 4 612825: # 39 "/usr/include/wchar.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/wint_t.h" 1 3 4 612825: # 20 "/usr/include/aarch64-linux-gnu/bits/types/wint_t.h" 3 4 612825: typedef unsigned int wint_t; 612825: # 42 "/usr/include/wchar.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/mbstate_t.h" 1 3 4 612825: 612825: 612825: 612825: 612825: 612825: typedef __mbstate_t mbstate_t; 612825: # 43 "/usr/include/wchar.h" 2 3 4 612825: # 79 "/usr/include/wchar.h" 3 4 612825: extern "C" { 612825: 612825: 612825: 612825: struct tm; 612825: 612825: 612825: 612825: extern wchar_t *wcscpy (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern wchar_t *wcscat (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: extern wchar_t *wcsncat (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src, size_t __n) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 612825: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); 612825: 612825: 612825: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, 612825: size_t __n) noexcept (true); 612825: 612825: 612825: 612825: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 612825: locale_t __loc) noexcept (true); 612825: 612825: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, 612825: size_t __n, locale_t __loc) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); 612825: 612825: 612825: 612825: extern size_t wcsxfrm (wchar_t *__restrict __s1, 612825: const wchar_t *__restrict __s2, size_t __n) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, 612825: locale_t __loc) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, 612825: size_t __n, locale_t __loc) noexcept (true); 612825: 612825: 612825: extern wchar_t *wcsdup (const wchar_t *__s) noexcept (true) 612825: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (__builtin_free, 1))); 612825: 612825: 612825: 612825: 612825: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) 612825: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); 612825: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) 612825: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) 612825: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); 612825: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) 612825: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); 612825: # 182 "/usr/include/wchar.h" 3 4 612825: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) 612825: noexcept (true) __attribute__ ((__pure__)); 612825: 612825: 612825: 612825: 612825: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) 612825: noexcept (true) __attribute__ ((__pure__)); 612825: 612825: 612825: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) 612825: noexcept (true) __attribute__ ((__pure__)); 612825: 612825: 612825: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) 612825: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); 612825: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, 612825: const wchar_t *__accept) 612825: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) 612825: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); 612825: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, 612825: const wchar_t *__needle) 612825: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern wchar_t *wcstok (wchar_t *__restrict __s, 612825: const wchar_t *__restrict __delim, 612825: wchar_t **__restrict __ptr) noexcept (true); 612825: 612825: 612825: extern size_t wcslen (const wchar_t *__s) noexcept (true) __attribute__ ((__pure__)); 612825: 612825: 612825: 612825: 612825: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) 612825: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); 612825: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, 612825: const wchar_t *__needle) 612825: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); 612825: # 241 "/usr/include/wchar.h" 3 4 612825: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) 612825: noexcept (true) __attribute__ ((__pure__)); 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) 612825: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); 612825: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, 612825: size_t __n) 612825: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) 612825: noexcept (true) __attribute__ ((__pure__)); 612825: 612825: 612825: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, 612825: const wchar_t *__restrict __s2, size_t __n) noexcept (true); 612825: 612825: 612825: 612825: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) 612825: noexcept (true); 612825: 612825: 612825: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, 612825: const wchar_t *__restrict __s2, size_t __n) 612825: noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern wint_t btowc (int __c) noexcept (true); 612825: 612825: 612825: 612825: extern int wctob (wint_t __c) noexcept (true); 612825: 612825: 612825: 612825: extern int mbsinit (const mbstate_t *__ps) noexcept (true) __attribute__ ((__pure__)); 612825: 612825: 612825: 612825: extern size_t mbrtowc (wchar_t *__restrict __pwc, 612825: const char *__restrict __s, size_t __n, 612825: mbstate_t *__restrict __p) noexcept (true); 612825: 612825: 612825: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, 612825: mbstate_t *__restrict __ps) noexcept (true); 612825: 612825: 612825: extern size_t __mbrlen (const char *__restrict __s, size_t __n, 612825: mbstate_t *__restrict __ps) noexcept (true); 612825: extern size_t mbrlen (const char *__restrict __s, size_t __n, 612825: mbstate_t *__restrict __ps) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern wint_t __btowc_alias (int __c) __asm ("btowc"); 612825: extern __inline __attribute__ ((__gnu_inline__)) wint_t 612825: __attribute__ ((__leaf__)) btowc (int __c) noexcept (true) 612825: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' 612825: ? (wint_t) __c : __btowc_alias (__c)); } 612825: 612825: extern int __wctob_alias (wint_t __c) __asm ("wctob"); 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: __attribute__ ((__leaf__)) wctob (wint_t __wc) noexcept (true) 612825: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' 612825: ? (int) __wc : __wctob_alias (__wc)); } 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) size_t 612825: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) noexcept (true) 612825: 612825: { return (__ps != __null 612825: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } 612825: 612825: 612825: 612825: 612825: extern size_t mbsrtowcs (wchar_t *__restrict __dst, 612825: const char **__restrict __src, size_t __len, 612825: mbstate_t *__restrict __ps) noexcept (true); 612825: 612825: 612825: 612825: extern size_t wcsrtombs (char *__restrict __dst, 612825: const wchar_t **__restrict __src, size_t __len, 612825: mbstate_t *__restrict __ps) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, 612825: const char **__restrict __src, size_t __nmc, 612825: size_t __len, mbstate_t *__restrict __ps) noexcept (true); 612825: 612825: 612825: 612825: extern size_t wcsnrtombs (char *__restrict __dst, 612825: const wchar_t **__restrict __src, 612825: size_t __nwc, size_t __len, 612825: mbstate_t *__restrict __ps) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int wcwidth (wchar_t __c) noexcept (true); 612825: 612825: 612825: 612825: extern int wcswidth (const wchar_t *__s, size_t __n) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: extern double wcstod (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr) noexcept (true); 612825: 612825: 612825: 612825: extern float wcstof (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr) noexcept (true); 612825: extern long double wcstold (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr) noexcept (true); 612825: # 397 "/usr/include/wchar.h" 3 4 612825: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr) noexcept (true); 612825: 612825: 612825: 612825: extern _Float128 wcstof128 (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64x wcstof64x (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr) noexcept (true); 612825: # 429 "/usr/include/wchar.h" 3 4 612825: extern long int wcstol (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, int __base) noexcept (true); 612825: 612825: 612825: 612825: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, int __base) 612825: noexcept (true); 612825: 612825: 612825: 612825: 612825: __extension__ 612825: extern long long int wcstoll (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, int __base) 612825: noexcept (true); 612825: 612825: 612825: 612825: __extension__ 612825: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: int __base) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: __extension__ 612825: extern long long int wcstoq (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, int __base) 612825: noexcept (true); 612825: 612825: 612825: 612825: __extension__ 612825: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: int __base) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern long int wcstol_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, int __base, 612825: locale_t __loc) noexcept (true); 612825: 612825: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: int __base, locale_t __loc) noexcept (true); 612825: 612825: __extension__ 612825: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: int __base, locale_t __loc) noexcept (true); 612825: 612825: __extension__ 612825: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: int __base, locale_t __loc) 612825: noexcept (true); 612825: 612825: extern double wcstod_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, locale_t __loc) 612825: noexcept (true); 612825: 612825: extern float wcstof_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, locale_t __loc) 612825: noexcept (true); 612825: 612825: extern long double wcstold_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: locale_t __loc) noexcept (true); 612825: # 512 "/usr/include/wchar.h" 3 4 612825: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: locale_t __loc) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: locale_t __loc) noexcept (true); 612825: 612825: 612825: 612825: extern _Float128 wcstof128_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: locale_t __loc) noexcept (true); 612825: 612825: 612825: 612825: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: locale_t __loc) noexcept (true); 612825: 612825: 612825: 612825: extern _Float64x wcstof64x_l (const wchar_t *__restrict __nptr, 612825: wchar_t **__restrict __endptr, 612825: locale_t __loc) noexcept (true); 612825: # 552 "/usr/include/wchar.h" 3 4 612825: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src) noexcept (true); 612825: 612825: 612825: 612825: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src, size_t __n) 612825: noexcept (true); 612825: # 581 "/usr/include/wchar.h" 3 4 612825: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) noexcept (true) 612825: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))); 612825: 612825: 612825: 612825: 612825: 612825: extern int fwide (__FILE *__fp, int __mode) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int fwprintf (__FILE *__restrict __stream, 612825: const wchar_t *__restrict __format, ...) 612825: ; 612825: 612825: 612825: 612825: 612825: extern int wprintf (const wchar_t *__restrict __format, ...) 612825: ; 612825: 612825: extern int swprintf (wchar_t *__restrict __s, size_t __n, 612825: const wchar_t *__restrict __format, ...) 612825: noexcept (true) ; 612825: 612825: 612825: 612825: 612825: 612825: extern int vfwprintf (__FILE *__restrict __s, 612825: const wchar_t *__restrict __format, 612825: __gnuc_va_list __arg) 612825: ; 612825: 612825: 612825: 612825: 612825: extern int vwprintf (const wchar_t *__restrict __format, 612825: __gnuc_va_list __arg) 612825: ; 612825: 612825: 612825: extern int vswprintf (wchar_t *__restrict __s, size_t __n, 612825: const wchar_t *__restrict __format, 612825: __gnuc_va_list __arg) 612825: noexcept (true) ; 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int fwscanf (__FILE *__restrict __stream, 612825: const wchar_t *__restrict __format, ...) 612825: ; 612825: 612825: 612825: 612825: 612825: extern int wscanf (const wchar_t *__restrict __format, ...) 612825: ; 612825: 612825: extern int swscanf (const wchar_t *__restrict __s, 612825: const wchar_t *__restrict __format, ...) 612825: noexcept (true) ; 612825: # 657 "/usr/include/wchar.h" 3 4 612825: extern int fwscanf (__FILE *__restrict __stream, const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc99_fwscanf") 612825: 612825: 612825: ; 612825: extern int wscanf (const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc99_wscanf") 612825: 612825: ; 612825: extern int swscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc99_swscanf") 612825: 612825: 612825: ; 612825: # 688 "/usr/include/wchar.h" 3 4 612825: extern int vfwscanf (__FILE *__restrict __s, 612825: const wchar_t *__restrict __format, 612825: __gnuc_va_list __arg) 612825: ; 612825: 612825: 612825: 612825: 612825: extern int vwscanf (const wchar_t *__restrict __format, 612825: __gnuc_va_list __arg) 612825: ; 612825: 612825: extern int vswscanf (const wchar_t *__restrict __s, 612825: const wchar_t *__restrict __format, 612825: __gnuc_va_list __arg) 612825: noexcept (true) ; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int vfwscanf (__FILE *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfwscanf") 612825: 612825: 612825: ; 612825: extern int vwscanf (const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vwscanf") 612825: 612825: ; 612825: extern int vswscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc99_vswscanf") 612825: 612825: 612825: ; 612825: # 744 "/usr/include/wchar.h" 3 4 612825: extern wint_t fgetwc (__FILE *__stream); 612825: extern wint_t getwc (__FILE *__stream); 612825: 612825: 612825: 612825: 612825: 612825: extern wint_t getwchar (void); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); 612825: extern wint_t putwc (wchar_t __wc, __FILE *__stream); 612825: 612825: 612825: 612825: 612825: 612825: extern wint_t putwchar (wchar_t __wc); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, 612825: __FILE *__restrict __stream); 612825: 612825: 612825: 612825: 612825: 612825: extern int fputws (const wchar_t *__restrict __ws, 612825: __FILE *__restrict __stream); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); 612825: # 799 "/usr/include/wchar.h" 3 4 612825: extern wint_t getwc_unlocked (__FILE *__stream); 612825: extern wint_t getwchar_unlocked (void); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern wint_t fgetwc_unlocked (__FILE *__stream); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); 612825: # 825 "/usr/include/wchar.h" 3 4 612825: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); 612825: extern wint_t putwchar_unlocked (wchar_t __wc); 612825: # 835 "/usr/include/wchar.h" 3 4 612825: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, 612825: __FILE *__restrict __stream); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int fputws_unlocked (const wchar_t *__restrict __ws, 612825: __FILE *__restrict __stream); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, 612825: const wchar_t *__restrict __format, 612825: const struct tm *__restrict __tp) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, 612825: const wchar_t *__restrict __format, 612825: const struct tm *__restrict __tp, 612825: locale_t __loc) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/wchar2-decl.h" 1 3 4 612825: # 27 "/usr/include/aarch64-linux-gnu/bits/wchar2-decl.h" 3 4 612825: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, 612825: const wchar_t *__restrict __s2, size_t __n, 612825: size_t __ns1) noexcept (true); 612825: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, 612825: size_t __n, size_t __ns1) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, 612825: const wchar_t *__restrict __s2, size_t __n, 612825: size_t __ns1) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, 612825: size_t __ns) noexcept (true); 612825: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src, 612825: size_t __n) noexcept (true); 612825: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src, 612825: size_t __destlen) noexcept (true); 612825: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src, size_t __n, 612825: size_t __destlen) noexcept (true); 612825: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src, size_t __n, 612825: size_t __destlen) noexcept (true); 612825: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src, 612825: size_t __destlen) noexcept (true); 612825: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, 612825: const wchar_t *__restrict __src, 612825: size_t __n, size_t __destlen) noexcept (true); 612825: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, 612825: int __flag, size_t __s_len, 612825: const wchar_t *__restrict __format, ...) 612825: noexcept (true) ; 612825: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, 612825: int __flag, size_t __s_len, 612825: const wchar_t *__restrict __format, 612825: __gnuc_va_list __arg) 612825: noexcept (true) ; 612825: 612825: 612825: 612825: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, 612825: const wchar_t *__restrict __format, ...); 612825: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, 612825: ...); 612825: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, 612825: const wchar_t *__restrict __format, 612825: __gnuc_va_list __ap); 612825: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, 612825: __gnuc_va_list __ap); 612825: 612825: 612825: 612825: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, 612825: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, 612825: int __n, __FILE *__restrict __stream) 612825: __attribute__ ((__warn_unused_result__)); 612825: 612825: 612825: 612825: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, 612825: mbstate_t *__restrict __p, 612825: size_t __buflen) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, 612825: const char **__restrict __src, 612825: size_t __len, mbstate_t *__restrict __ps, 612825: size_t __dstlen) noexcept (true); 612825: extern size_t __wcsrtombs_chk (char *__restrict __dst, 612825: const wchar_t **__restrict __src, 612825: size_t __len, mbstate_t *__restrict __ps, 612825: size_t __dstlen) noexcept (true); 612825: 612825: 612825: 612825: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, 612825: const char **__restrict __src, size_t __nmc, 612825: size_t __len, mbstate_t *__restrict __ps, 612825: size_t __dstlen) noexcept (true); 612825: extern size_t __wcsnrtombs_chk (char *__restrict __dst, 612825: const wchar_t **__restrict __src, 612825: size_t __nwc, size_t __len, 612825: mbstate_t *__restrict __ps, size_t __dstlen) 612825: noexcept (true); 612825: # 869 "/usr/include/wchar.h" 2 3 4 612825: # 879 "/usr/include/wchar.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/wchar2.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/bits/wchar2.h" 3 4 612825: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmemcpy") 612825: 612825: 612825: ; 612825: extern wchar_t *__wmemcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemcpy_chk") 612825: 612825: 612825: 612825: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 612825: __attribute__ ((__leaf__)) wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) 612825: 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_object_size (__s1, 0)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmemcpy_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemcpy_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemcpy_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) 612825: 612825: ; 612825: } 612825: 612825: 612825: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) noexcept (true) __asm__ ("" "wmemmove") 612825: 612825: ; 612825: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemmove_chk") 612825: 612825: 612825: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 612825: __attribute__ ((__leaf__)) wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) noexcept (true) 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_object_size (__s1, 0)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmemmove_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemmove_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemmove_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) 612825: 612825: ; 612825: } 612825: 612825: 612825: 612825: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmempcpy") 612825: 612825: 612825: ; 612825: extern wchar_t *__wmempcpy_chk_warn (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmempcpy_chk") 612825: 612825: 612825: 612825: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 612825: __attribute__ ((__leaf__)) wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) 612825: 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_object_size (__s1, 0)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__s1, 0))) / ((sizeof (wchar_t)))))) ? __wmempcpy_alias (__s1, __s2, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmempcpy_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmempcpy_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) 612825: 612825: ; 612825: } 612825: 612825: 612825: 612825: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true) __asm__ ("" "wmemset") 612825: ; 612825: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) noexcept (true) __asm__ ("" "__wmemset_chk") 612825: 612825: 612825: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 612825: __attribute__ ((__leaf__)) wmemset (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true) 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__s, 0)) && (__builtin_object_size (__s, 0)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__s, 0))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__s, 0))) / ((sizeof (wchar_t)))))) ? __wmemset_alias (__s, __c, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__s, 0)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__s, 0)) / (sizeof (wchar_t)))) ? __wmemset_chk_warn (__s, __c, __n, (__builtin_object_size (__s, 0)) / (sizeof (wchar_t))) : __wmemset_chk (__s, __c, __n, (__builtin_object_size (__s, 0)) / (sizeof (wchar_t))))) 612825: 612825: ; 612825: } 612825: 612825: 612825: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscpy") 612825: 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 612825: __attribute__ ((__leaf__)) wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) 612825: { 612825: size_t sz = __builtin_object_size (__dest, 2 > 1); 612825: if (sz != (size_t) -1) 612825: return __wcscpy_chk (__dest, __src, sz / sizeof (wchar_t)); 612825: return __wcscpy_alias (__dest, __src); 612825: } 612825: 612825: 612825: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcpcpy") 612825: 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 612825: __attribute__ ((__leaf__)) wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) 612825: { 612825: size_t sz = __builtin_object_size (__dest, 2 > 1); 612825: if (sz != (size_t) -1) 612825: return __wcpcpy_chk (__dest, __src, sz / sizeof (wchar_t)); 612825: return __wcpcpy_alias (__dest, __src); 612825: } 612825: 612825: 612825: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncpy") 612825: 612825: 612825: ; 612825: extern wchar_t *__wcsncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) noexcept (true) __asm__ ("" "__wcsncpy_chk") 612825: 612825: 612825: 612825: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 612825: __attribute__ ((__leaf__)) wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 612825: 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__dest, 2 > 1)) && (__builtin_object_size (__dest, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t)))))) ? __wcsncpy_alias (__dest, __src, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) ? __wcsncpy_chk_warn (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))) : __wcsncpy_chk (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))))) 612825: 612825: ; 612825: } 612825: 612825: 612825: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcpncpy") 612825: 612825: 612825: ; 612825: extern wchar_t *__wcpncpy_chk_warn (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n, size_t __destlen) noexcept (true) __asm__ ("" "__wcpncpy_chk") 612825: 612825: 612825: 612825: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 612825: __attribute__ ((__leaf__)) wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 612825: 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__dest, 2 > 1)) && (__builtin_object_size (__dest, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t)))))) ? __wcpncpy_alias (__dest, __src, __n) : ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) ? __wcpncpy_chk_warn (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))) : __wcpncpy_chk (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))))) 612825: 612825: ; 612825: } 612825: 612825: 612825: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscat") 612825: 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 612825: __attribute__ ((__leaf__)) wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) 612825: { 612825: size_t sz = __builtin_object_size (__dest, 2 > 1); 612825: if (sz != (size_t) -1) 612825: return __wcscat_chk (__dest, __src, sz / sizeof (wchar_t)); 612825: return __wcscat_alias (__dest, __src); 612825: } 612825: 612825: 612825: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncat") 612825: 612825: 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * 612825: __attribute__ ((__leaf__)) wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) 612825: 612825: { 612825: size_t sz = __builtin_object_size (__dest, 2 > 1); 612825: if (sz != (size_t) -1) 612825: return __wcsncat_chk (__dest, __src, __n, sz / sizeof (wchar_t)); 612825: return __wcsncat_alias (__dest, __src, __n); 612825: } 612825: 612825: 612825: 612825: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) __asm__ ("" "swprintf") 612825: 612825: 612825: ; 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) 612825: 612825: { 612825: size_t sz = __builtin_object_size (__s, 2 > 1); 612825: if (sz != (size_t) -1 || 2 > 1) 612825: return __swprintf_chk (__s, __n, 2 - 1, 612825: sz / sizeof (wchar_t), __fmt, __builtin_va_arg_pack ()); 612825: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); 612825: } 612825: # 230 "/usr/include/aarch64-linux-gnu/bits/wchar2.h" 3 4 612825: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) __asm__ ("" "vswprintf") 612825: 612825: 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) 612825: 612825: { 612825: size_t sz = __builtin_object_size (__s, 2 > 1); 612825: if (sz != (size_t) -1 || 2 > 1) 612825: return __vswprintf_chk (__s, __n, 2 - 1, 612825: sz / sizeof (wchar_t), __fmt, __ap); 612825: return __vswprintf_alias (__s, __n, __fmt, __ap); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: wprintf (const wchar_t *__restrict __fmt, ...) 612825: { 612825: return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) 612825: { 612825: return __fwprintf_chk (__stream, 2 - 1, __fmt, 612825: __builtin_va_arg_pack ()); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 612825: { 612825: return __vwprintf_chk (2 - 1, __fmt, __ap); 612825: } 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int 612825: vfwprintf (__FILE *__restrict __stream, 612825: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) 612825: { 612825: return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap); 612825: } 612825: 612825: 612825: 612825: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") 612825: 612825: __attribute__ ((__warn_unused_result__)); 612825: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 612825: fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) 612825: { 612825: size_t sz = __builtin_object_size (__s, 2 > 1); 612825: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((sz)) / ((sizeof (wchar_t))))))) 612825: return __fgetws_alias (__s, __n, __stream); 612825: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (sz) / (sizeof (wchar_t))))) 612825: return __fgetws_chk_warn (__s, sz / sizeof (wchar_t), __n, __stream); 612825: return __fgetws_chk (__s, sz / sizeof (wchar_t), __n, __stream); 612825: } 612825: 612825: 612825: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)); 612825: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") 612825: 612825: 612825: 612825: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * 612825: fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) 612825: { 612825: size_t sz = __builtin_object_size (__s, 2 > 1); 612825: if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((sizeof (wchar_t))))) && (((long unsigned int) (__n)) <= ((sz)) / ((sizeof (wchar_t))))))) 612825: return __fgetws_unlocked_alias (__s, __n, __stream); 612825: if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (sizeof (wchar_t)))) && !(((long unsigned int) (__n)) <= (sz) / (sizeof (wchar_t))))) 612825: return __fgetws_unlocked_chk_warn (__s, sz / sizeof (wchar_t), __n, 612825: __stream); 612825: return __fgetws_unlocked_chk (__s, sz / sizeof (wchar_t), __n, __stream); 612825: } 612825: 612825: 612825: 612825: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcrtomb") 612825: 612825: __attribute__ ((__warn_unused_result__)); 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t 612825: __attribute__ ((__leaf__)) wcrtomb (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) 612825: 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 612825: && 16 > __builtin_object_size (__s, 2 > 1)) 612825: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1)); 612825: return __wcrtomb_alias (__s, __wchar, __ps); 612825: } 612825: 612825: 612825: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsrtowcs") 612825: 612825: 612825: 612825: ; 612825: extern size_t __mbsrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__mbsrtowcs_chk") 612825: 612825: 612825: 612825: 612825: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 612825: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 612825: 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t)))))) ? __mbsrtowcs_alias (__dst, __src, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbsrtowcs_chk (__dst, __src, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) 612825: 612825: ; 612825: } 612825: 612825: 612825: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsrtombs") 612825: 612825: 612825: 612825: ; 612825: extern size_t __wcsrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__wcsrtombs_chk") 612825: 612825: 612825: 612825: 612825: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 612825: __attribute__ ((__leaf__)) wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 612825: 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char)))))) ? __wcsrtombs_alias (__dst, __src, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)) : __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)))) 612825: 612825: ; 612825: } 612825: 612825: 612825: 612825: extern size_t __mbsnrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsnrtowcs") 612825: 612825: 612825: 612825: ; 612825: extern size_t __mbsnrtowcs_chk_warn (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__mbsnrtowcs_chk") 612825: 612825: 612825: 612825: 612825: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) 612825: ; 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 612825: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 612825: 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t)))))) ? __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) 612825: 612825: ; 612825: } 612825: 612825: 612825: extern size_t __wcsnrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsnrtombs") 612825: 612825: 612825: 612825: ; 612825: extern size_t __wcsnrtombs_chk_warn (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps, size_t __dstlen) noexcept (true) __asm__ ("" "__wcsnrtombs_chk") 612825: 612825: 612825: 612825: 612825: 612825: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); 612825: 612825: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t 612825: __attribute__ ((__leaf__)) wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) 612825: 612825: { 612825: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char)))))) ? __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, __builtin_object_size (__dst, 2 > 1)) : __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, __builtin_object_size (__dst, 2 > 1)))) 612825: 612825: ; 612825: } 612825: # 880 "/usr/include/wchar.h" 2 3 4 612825: 612825: 612825: } 612825: # 45 "/usr/include/c++/12/cwchar" 2 3 612825: # 62 "/usr/include/c++/12/cwchar" 3 612825: namespace std 612825: { 612825: using ::mbstate_t; 612825: } 612825: # 135 "/usr/include/c++/12/cwchar" 3 612825: extern "C++" 612825: { 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: using ::wint_t; 612825: 612825: using ::btowc; 612825: using ::fgetwc; 612825: using ::fgetws; 612825: using ::fputwc; 612825: using ::fputws; 612825: using ::fwide; 612825: using ::fwprintf; 612825: using ::fwscanf; 612825: using ::getwc; 612825: using ::getwchar; 612825: using ::mbrlen; 612825: using ::mbrtowc; 612825: using ::mbsinit; 612825: using ::mbsrtowcs; 612825: using ::putwc; 612825: using ::putwchar; 612825: 612825: using ::swprintf; 612825: 612825: using ::swscanf; 612825: using ::ungetwc; 612825: using ::vfwprintf; 612825: 612825: using ::vfwscanf; 612825: 612825: 612825: using ::vswprintf; 612825: 612825: 612825: using ::vswscanf; 612825: 612825: using ::vwprintf; 612825: 612825: using ::vwscanf; 612825: 612825: using ::wcrtomb; 612825: using ::wcscat; 612825: using ::wcscmp; 612825: using ::wcscoll; 612825: using ::wcscpy; 612825: using ::wcscspn; 612825: using ::wcsftime; 612825: using ::wcslen; 612825: using ::wcsncat; 612825: using ::wcsncmp; 612825: using ::wcsncpy; 612825: using ::wcsrtombs; 612825: using ::wcsspn; 612825: using ::wcstod; 612825: 612825: using ::wcstof; 612825: 612825: using ::wcstok; 612825: using ::wcstol; 612825: using ::wcstoul; 612825: using ::wcsxfrm; 612825: using ::wctob; 612825: using ::wmemcmp; 612825: using ::wmemcpy; 612825: using ::wmemmove; 612825: using ::wmemset; 612825: using ::wprintf; 612825: using ::wscanf; 612825: using ::wcschr; 612825: using ::wcspbrk; 612825: using ::wcsrchr; 612825: using ::wcsstr; 612825: using ::wmemchr; 612825: # 234 "/usr/include/c++/12/cwchar" 3 612825: 612825: } 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace __gnu_cxx 612825: { 612825: 612825: 612825: 612825: 612825: 612825: using ::wcstold; 612825: # 260 "/usr/include/c++/12/cwchar" 3 612825: using ::wcstoll; 612825: using ::wcstoull; 612825: 612825: } 612825: 612825: namespace std 612825: { 612825: using ::__gnu_cxx::wcstold; 612825: using ::__gnu_cxx::wcstoll; 612825: using ::__gnu_cxx::wcstoull; 612825: } 612825: # 280 "/usr/include/c++/12/cwchar" 3 612825: namespace std 612825: { 612825: 612825: using std::wcstof; 612825: 612825: 612825: using std::vfwscanf; 612825: 612825: 612825: using std::vswscanf; 612825: 612825: 612825: using std::vwscanf; 612825: 612825: 612825: 612825: using std::wcstold; 612825: using std::wcstoll; 612825: using std::wcstoull; 612825: 612825: } 612825: # 41 "/usr/include/c++/12/bits/postypes.h" 2 3 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 62 "/usr/include/c++/12/bits/postypes.h" 3 612825: typedef long int streamoff; 612825: 612825: 612825: 612825: 612825: 612825: typedef ptrdiff_t streamsize; 612825: # 81 "/usr/include/c++/12/bits/postypes.h" 3 612825: template 612825: class fpos 612825: { 612825: private: 612825: streamoff _M_off; 612825: _StateT _M_state; 612825: 612825: public: 612825: 612825: 612825: 612825: 612825: fpos() 612825: : _M_off(0), _M_state() { } 612825: # 103 "/usr/include/c++/12/bits/postypes.h" 3 612825: fpos(streamoff __off) 612825: : _M_off(__off), _M_state() { } 612825: 612825: 612825: fpos(const fpos&) = default; 612825: fpos& operator=(const fpos&) = default; 612825: ~fpos() = default; 612825: 612825: 612825: 612825: operator streamoff() const { return _M_off; } 612825: 612825: 612825: void 612825: state(_StateT __st) 612825: { _M_state = __st; } 612825: 612825: 612825: _StateT 612825: state() const 612825: { return _M_state; } 612825: 612825: 612825: 612825: 612825: 612825: fpos& 612825: operator+=(streamoff __off) 612825: { 612825: _M_off += __off; 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: fpos& 612825: operator-=(streamoff __off) 612825: { 612825: _M_off -= __off; 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: fpos 612825: operator+(streamoff __off) const 612825: { 612825: fpos __pos(*this); 612825: __pos += __off; 612825: return __pos; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: fpos 612825: operator-(streamoff __off) const 612825: { 612825: fpos __pos(*this); 612825: __pos -= __off; 612825: return __pos; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: streamoff 612825: operator-(const fpos& __other) const 612825: { return _M_off - __other._M_off; } 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline bool 612825: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 612825: { return streamoff(__lhs) == streamoff(__rhs); } 612825: 612825: template 612825: inline bool 612825: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) 612825: { return streamoff(__lhs) != streamoff(__rhs); } 612825: 612825: 612825: 612825: 612825: 612825: typedef fpos streampos; 612825: 612825: typedef fpos wstreampos; 612825: # 215 "/usr/include/c++/12/bits/postypes.h" 3 612825: typedef fpos u16streampos; 612825: 612825: typedef fpos u32streampos; 612825: 612825: 612825: 612825: } 612825: # 41 "/usr/include/c++/12/iosfwd" 2 3 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 74 "/usr/include/c++/12/iosfwd" 3 612825: class ios_base; 612825: 612825: template > 612825: class basic_ios; 612825: 612825: template > 612825: class basic_streambuf; 612825: 612825: template > 612825: class basic_istream; 612825: 612825: template > 612825: class basic_ostream; 612825: 612825: template > 612825: class basic_iostream; 612825: 612825: 612825: namespace __cxx11 { 612825: 612825: template, 612825: typename _Alloc = allocator<_CharT> > 612825: class basic_stringbuf; 612825: 612825: template, 612825: typename _Alloc = allocator<_CharT> > 612825: class basic_istringstream; 612825: 612825: template, 612825: typename _Alloc = allocator<_CharT> > 612825: class basic_ostringstream; 612825: 612825: template, 612825: typename _Alloc = allocator<_CharT> > 612825: class basic_stringstream; 612825: 612825: } 612825: 612825: template > 612825: class basic_filebuf; 612825: 612825: template > 612825: class basic_ifstream; 612825: 612825: template > 612825: class basic_ofstream; 612825: 612825: template > 612825: class basic_fstream; 612825: 612825: template > 612825: class istreambuf_iterator; 612825: 612825: template > 612825: class ostreambuf_iterator; 612825: 612825: 612825: 612825: typedef basic_ios ios; 612825: 612825: 612825: typedef basic_streambuf streambuf; 612825: 612825: 612825: typedef basic_istream istream; 612825: 612825: 612825: typedef basic_ostream ostream; 612825: 612825: 612825: typedef basic_iostream iostream; 612825: 612825: 612825: typedef basic_stringbuf stringbuf; 612825: 612825: 612825: typedef basic_istringstream istringstream; 612825: 612825: 612825: typedef basic_ostringstream ostringstream; 612825: 612825: 612825: typedef basic_stringstream stringstream; 612825: 612825: 612825: typedef basic_filebuf filebuf; 612825: 612825: 612825: typedef basic_ifstream ifstream; 612825: 612825: 612825: typedef basic_ofstream ofstream; 612825: 612825: 612825: typedef basic_fstream fstream; 612825: 612825: 612825: 612825: typedef basic_ios wios; 612825: 612825: 612825: typedef basic_streambuf wstreambuf; 612825: 612825: 612825: typedef basic_istream wistream; 612825: 612825: 612825: typedef basic_ostream wostream; 612825: 612825: 612825: typedef basic_iostream wiostream; 612825: 612825: 612825: typedef basic_stringbuf wstringbuf; 612825: 612825: 612825: typedef basic_istringstream wistringstream; 612825: 612825: 612825: typedef basic_ostringstream wostringstream; 612825: 612825: 612825: typedef basic_stringstream wstringstream; 612825: 612825: 612825: typedef basic_filebuf wfilebuf; 612825: 612825: 612825: typedef basic_ifstream wifstream; 612825: 612825: 612825: typedef basic_ofstream wofstream; 612825: 612825: 612825: typedef basic_fstream wfstream; 612825: # 253 "/usr/include/c++/12/iosfwd" 3 612825: 612825: } 612825: # 53 "/usr/include/c++/12/bits/shared_ptr.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/shared_ptr_base.h" 1 3 612825: # 52 "/usr/include/c++/12/bits/shared_ptr_base.h" 3 612825: # 1 "/usr/include/c++/12/typeinfo" 1 3 612825: # 32 "/usr/include/c++/12/typeinfo" 3 612825: 612825: # 33 "/usr/include/c++/12/typeinfo" 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: #pragma GCC visibility push(default) 612825: 612825: 612825: 612825: 612825: 612825: extern "C++" { 612825: 612825: namespace __cxxabiv1 612825: { 612825: class __class_type_info; 612825: } 612825: # 84 "/usr/include/c++/12/typeinfo" 3 612825: namespace std 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: class type_info 612825: { 612825: public: 612825: 612825: 612825: 612825: 612825: virtual ~type_info(); 612825: 612825: 612825: 612825: const char* name() const noexcept 612825: { return __name[0] == '*' ? __name + 1 : __name; } 612825: 612825: 612825: 612825: bool before(const type_info& __arg) const noexcept; 612825: 612825: 612825: bool operator==(const type_info& __arg) const noexcept; 612825: 612825: 612825: bool operator!=(const type_info& __arg) const noexcept 612825: { return !operator==(__arg); } 612825: 612825: 612825: 612825: size_t hash_code() const noexcept 612825: { 612825: 612825: return _Hash_bytes(name(), __builtin_strlen(name()), 612825: static_cast(0xc70f6907UL)); 612825: 612825: 612825: 612825: } 612825: 612825: 612825: 612825: virtual bool __is_pointer_p() const; 612825: 612825: 612825: virtual bool __is_function_p() const; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, 612825: unsigned __outer) const; 612825: 612825: 612825: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, 612825: void **__obj_ptr) const; 612825: 612825: protected: 612825: const char *__name; 612825: 612825: explicit type_info(const char *__n): __name(__n) { } 612825: 612825: private: 612825: 612825: 612825: type_info& operator=(const type_info&) = delete; 612825: type_info(const type_info&) = delete; 612825: # 167 "/usr/include/c++/12/typeinfo" 3 612825: }; 612825: 612825: 612825: inline bool 612825: type_info::before(const type_info& __arg) const noexcept 612825: { 612825: 612825: 612825: 612825: 612825: if (__name[0] != '*' || __arg.__name[0] != '*') 612825: return __builtin_strcmp (__name, __arg.__name) < 0; 612825: # 187 "/usr/include/c++/12/typeinfo" 3 612825: return __name < __arg.__name; 612825: } 612825: 612825: 612825: 612825: inline bool 612825: type_info::operator==(const type_info& __arg) const noexcept 612825: { 612825: if (std::__is_constant_evaluated()) 612825: return this == &__arg; 612825: 612825: if (__name == __arg.__name) 612825: return true; 612825: 612825: 612825: 612825: 612825: 612825: 612825: return __name[0] != '*' && __builtin_strcmp (__name, __arg.name()) == 0; 612825: 612825: 612825: 612825: } 612825: # 220 "/usr/include/c++/12/typeinfo" 3 612825: class bad_cast : public exception 612825: { 612825: public: 612825: bad_cast() noexcept { } 612825: 612825: 612825: 612825: virtual ~bad_cast() noexcept; 612825: 612825: 612825: virtual const char* what() const noexcept; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: class bad_typeid : public exception 612825: { 612825: public: 612825: bad_typeid () noexcept { } 612825: 612825: 612825: 612825: virtual ~bad_typeid() noexcept; 612825: 612825: 612825: virtual const char* what() const noexcept; 612825: }; 612825: } 612825: 612825: } 612825: 612825: #pragma GCC visibility pop 612825: # 53 "/usr/include/c++/12/bits/shared_ptr_base.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/allocated_ptr.h" 1 3 612825: # 40 "/usr/include/c++/12/bits/allocated_ptr.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: template 612825: struct __allocated_ptr 612825: { 612825: using pointer = typename allocator_traits<_Alloc>::pointer; 612825: using value_type = typename allocator_traits<_Alloc>::value_type; 612825: 612825: 612825: __allocated_ptr(_Alloc& __a, pointer __ptr) noexcept 612825: : _M_alloc(std::__addressof(__a)), _M_ptr(__ptr) 612825: { } 612825: 612825: 612825: template>> 612825: __allocated_ptr(_Alloc& __a, _Ptr __ptr) 612825: : _M_alloc(std::__addressof(__a)), 612825: _M_ptr(pointer_traits::pointer_to(*__ptr)) 612825: { } 612825: 612825: 612825: __allocated_ptr(__allocated_ptr&& __gd) noexcept 612825: : _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr) 612825: { __gd._M_ptr = nullptr; } 612825: 612825: 612825: ~__allocated_ptr() 612825: { 612825: if (_M_ptr != nullptr) 612825: std::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1); 612825: } 612825: 612825: 612825: __allocated_ptr& 612825: operator=(std::nullptr_t) noexcept 612825: { 612825: _M_ptr = nullptr; 612825: return *this; 612825: } 612825: 612825: 612825: value_type* get() { return std::__to_address(_M_ptr); } 612825: 612825: private: 612825: _Alloc* _M_alloc; 612825: pointer _M_ptr; 612825: }; 612825: 612825: 612825: template 612825: __allocated_ptr<_Alloc> 612825: __allocate_guarded(_Alloc& __a) 612825: { 612825: return { __a, std::allocator_traits<_Alloc>::allocate(__a, 1) }; 612825: } 612825: 612825: 612825: 612825: } 612825: # 54 "/usr/include/c++/12/bits/shared_ptr_base.h" 2 3 612825: 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/refwrap.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/refwrap.h" 3 612825: 612825: # 34 "/usr/include/c++/12/bits/refwrap.h" 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 52 "/usr/include/c++/12/bits/refwrap.h" 3 612825: template 612825: struct _Maybe_unary_or_binary_function { }; 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: 612825: template 612825: struct _Maybe_unary_or_binary_function<_Res, _T1> 612825: : std::unary_function<_T1, _Res> { }; 612825: 612825: 612825: template 612825: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> 612825: : std::binary_function<_T1, _T2, _Res> { }; 612825: 612825: #pragma GCC diagnostic pop 612825: 612825: template 612825: struct _Mem_fn_traits; 612825: 612825: template 612825: struct _Mem_fn_traits_base 612825: { 612825: using __result_type = _Res; 612825: using __maybe_type 612825: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; 612825: using __arity = integral_constant; 612825: }; 612825: # 103 "/usr/include/c++/12/bits/refwrap.h" 3 612825: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) > : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const > : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile > : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile > : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 612825: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 612825: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) &&> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const &&> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile &&> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile &&> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; 612825: # 117 "/usr/include/c++/12/bits/refwrap.h" 3 612825: template> 612825: struct _Maybe_get_result_type 612825: { }; 612825: 612825: template 612825: struct _Maybe_get_result_type<_Functor, 612825: __void_t> 612825: { typedef typename _Functor::result_type result_type; }; 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct _Weak_result_type_impl 612825: : _Maybe_get_result_type<_Functor> 612825: { }; 612825: 612825: 612825: template 612825: struct _Weak_result_type_impl<_Res(_ArgTypes...) > 612825: { typedef _Res result_type; }; 612825: 612825: 612825: template 612825: struct _Weak_result_type_impl<_Res(_ArgTypes......) > 612825: { typedef _Res result_type; }; 612825: 612825: 612825: template 612825: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) > 612825: { typedef _Res result_type; }; 612825: 612825: 612825: template 612825: struct 612825: _Weak_result_type_impl<_Res(*)(_ArgTypes......) > 612825: { typedef _Res result_type; }; 612825: 612825: 612825: template::value> 612825: struct _Weak_result_type_memfun 612825: : _Weak_result_type_impl<_Functor> 612825: { }; 612825: 612825: 612825: template 612825: struct _Weak_result_type_memfun<_MemFunPtr, true> 612825: { 612825: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 612825: }; 612825: 612825: 612825: template 612825: struct _Weak_result_type_memfun<_Func _Class::*, false> 612825: { }; 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct _Weak_result_type 612825: : _Weak_result_type_memfun::type> 612825: { }; 612825: 612825: 612825: 612825: template> 612825: struct _Refwrap_base_arg1 612825: { }; 612825: 612825: 612825: template 612825: struct _Refwrap_base_arg1<_Tp, 612825: __void_t> 612825: { 612825: typedef typename _Tp::argument_type argument_type; 612825: }; 612825: 612825: 612825: template> 612825: struct _Refwrap_base_arg2 612825: { }; 612825: 612825: 612825: template 612825: struct _Refwrap_base_arg2<_Tp, 612825: __void_t> 612825: { 612825: typedef typename _Tp::first_argument_type first_argument_type; 612825: typedef typename _Tp::second_argument_type second_argument_type; 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct _Reference_wrapper_base 612825: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> 612825: { }; 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: 612825: template 612825: struct _Reference_wrapper_base<_Res(_T1) > 612825: : unary_function<_T1, _Res> 612825: { }; 612825: 612825: template 612825: struct _Reference_wrapper_base<_Res(_T1) const> 612825: : unary_function<_T1, _Res> 612825: { }; 612825: 612825: template 612825: struct _Reference_wrapper_base<_Res(_T1) volatile> 612825: : unary_function<_T1, _Res> 612825: { }; 612825: 612825: template 612825: struct _Reference_wrapper_base<_Res(_T1) const volatile> 612825: : unary_function<_T1, _Res> 612825: { }; 612825: 612825: 612825: template 612825: struct _Reference_wrapper_base<_Res(_T1, _T2) > 612825: : binary_function<_T1, _T2, _Res> 612825: { }; 612825: 612825: template 612825: struct _Reference_wrapper_base<_Res(_T1, _T2) const> 612825: : binary_function<_T1, _T2, _Res> 612825: { }; 612825: 612825: template 612825: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> 612825: : binary_function<_T1, _T2, _Res> 612825: { }; 612825: 612825: template 612825: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> 612825: : binary_function<_T1, _T2, _Res> 612825: { }; 612825: 612825: 612825: template 612825: struct _Reference_wrapper_base<_Res(*)(_T1) > 612825: : unary_function<_T1, _Res> 612825: { }; 612825: 612825: 612825: template 612825: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) > 612825: : binary_function<_T1, _T2, _Res> 612825: { }; 612825: 612825: template::value> 612825: struct _Reference_wrapper_base_memfun 612825: : _Reference_wrapper_base<_Tp> 612825: { }; 612825: 612825: template 612825: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> 612825: : _Mem_fn_traits<_MemFunPtr>::__maybe_type 612825: { 612825: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; 612825: }; 612825: #pragma GCC diagnostic pop 612825: # 302 "/usr/include/c++/12/bits/refwrap.h" 3 612825: template 612825: class reference_wrapper 612825: 612825: 612825: 612825: : public _Reference_wrapper_base_memfun::type> 612825: 612825: { 612825: _Tp* _M_data; 612825: 612825: 612825: static _Tp* _S_fun(_Tp& __r) noexcept { return std::__addressof(__r); } 612825: 612825: static void _S_fun(_Tp&&) = delete; 612825: 612825: template> 612825: using __not_same 612825: = typename enable_if::value>::type; 612825: 612825: public: 612825: typedef _Tp type; 612825: 612825: 612825: 612825: 612825: template, typename 612825: = decltype(reference_wrapper::_S_fun(std::declval<_Up>()))> 612825: 612825: reference_wrapper(_Up&& __uref) 612825: noexcept(noexcept(reference_wrapper::_S_fun(std::declval<_Up>()))) 612825: : _M_data(reference_wrapper::_S_fun(std::forward<_Up>(__uref))) 612825: { } 612825: 612825: reference_wrapper(const reference_wrapper&) = default; 612825: 612825: reference_wrapper& 612825: operator=(const reference_wrapper&) = default; 612825: 612825: 612825: operator _Tp&() const noexcept 612825: { return this->get(); } 612825: 612825: 612825: _Tp& 612825: get() const noexcept 612825: { return *_M_data; } 612825: 612825: template 612825: 612825: typename result_of<_Tp&(_Args&&...)>::type 612825: operator()(_Args&&... __args) const 612825: { 612825: 612825: 612825: 612825: 612825: return std::__invoke(get(), std::forward<_Args>(__args)...); 612825: } 612825: }; 612825: # 370 "/usr/include/c++/12/bits/refwrap.h" 3 612825: template 612825: 612825: inline reference_wrapper<_Tp> 612825: ref(_Tp& __t) noexcept 612825: { return reference_wrapper<_Tp>(__t); } 612825: 612825: 612825: template 612825: 612825: inline reference_wrapper 612825: cref(const _Tp& __t) noexcept 612825: { return reference_wrapper(__t); } 612825: 612825: template 612825: void ref(const _Tp&&) = delete; 612825: 612825: template 612825: void cref(const _Tp&&) = delete; 612825: 612825: 612825: template 612825: 612825: inline reference_wrapper<_Tp> 612825: ref(reference_wrapper<_Tp> __t) noexcept 612825: { return __t; } 612825: 612825: 612825: template 612825: 612825: inline reference_wrapper 612825: cref(reference_wrapper<_Tp> __t) noexcept 612825: { return { __t.get() }; } 612825: 612825: 612825: 612825: 612825: } 612825: # 58 "/usr/include/c++/12/bits/shared_ptr_base.h" 2 3 612825: 612825: 612825: # 1 "/usr/include/c++/12/ext/aligned_buffer.h" 1 3 612825: # 32 "/usr/include/c++/12/ext/aligned_buffer.h" 3 612825: 612825: # 33 "/usr/include/c++/12/ext/aligned_buffer.h" 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace __gnu_cxx 612825: { 612825: 612825: 612825: 612825: 612825: template 612825: struct __aligned_membuf 612825: { 612825: 612825: 612825: 612825: 612825: 612825: struct _Tp2 { _Tp _M_t; }; 612825: 612825: alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)]; 612825: 612825: __aligned_membuf() = default; 612825: 612825: 612825: __aligned_membuf(std::nullptr_t) { } 612825: 612825: void* 612825: _M_addr() noexcept 612825: { return static_cast(&_M_storage); } 612825: 612825: const void* 612825: _M_addr() const noexcept 612825: { return static_cast(&_M_storage); } 612825: 612825: _Tp* 612825: _M_ptr() noexcept 612825: { return static_cast<_Tp*>(_M_addr()); } 612825: 612825: const _Tp* 612825: _M_ptr() const noexcept 612825: { return static_cast(_M_addr()); } 612825: }; 612825: # 89 "/usr/include/c++/12/ext/aligned_buffer.h" 3 612825: template 612825: struct __aligned_buffer 612825: : std::aligned_storage 612825: { 612825: typename 612825: std::aligned_storage::type _M_storage; 612825: 612825: __aligned_buffer() = default; 612825: 612825: 612825: __aligned_buffer(std::nullptr_t) { } 612825: 612825: void* 612825: _M_addr() noexcept 612825: { 612825: return static_cast(&_M_storage); 612825: } 612825: 612825: const void* 612825: _M_addr() const noexcept 612825: { 612825: return static_cast(&_M_storage); 612825: } 612825: 612825: _Tp* 612825: _M_ptr() noexcept 612825: { return static_cast<_Tp*>(_M_addr()); } 612825: 612825: const _Tp* 612825: _M_ptr() const noexcept 612825: { return static_cast(_M_addr()); } 612825: }; 612825: 612825: 612825: } 612825: # 61 "/usr/include/c++/12/bits/shared_ptr_base.h" 2 3 612825: # 1 "/usr/include/c++/12/ext/atomicity.h" 1 3 612825: # 32 "/usr/include/c++/12/ext/atomicity.h" 3 612825: 612825: # 33 "/usr/include/c++/12/ext/atomicity.h" 3 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr.h" 1 3 612825: # 30 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr.h" 3 612825: #pragma GCC visibility push(default) 612825: # 148 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr.h" 3 612825: # 1 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr-default.h" 1 3 612825: # 35 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr-default.h" 3 612825: # 1 "/usr/include/pthread.h" 1 3 4 612825: # 22 "/usr/include/pthread.h" 3 4 612825: # 1 "/usr/include/sched.h" 1 3 4 612825: # 29 "/usr/include/sched.h" 3 4 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 612825: # 30 "/usr/include/sched.h" 2 3 4 612825: # 43 "/usr/include/sched.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/sched.h" 1 3 4 612825: # 80 "/usr/include/aarch64-linux-gnu/bits/sched.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h" 1 3 4 612825: # 23 "/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h" 3 4 612825: struct sched_param 612825: { 612825: int sched_priority; 612825: }; 612825: # 81 "/usr/include/aarch64-linux-gnu/bits/sched.h" 2 3 4 612825: 612825: extern "C" { 612825: 612825: 612825: 612825: extern int clone (int (*__fn) (void *__arg), void *__child_stack, 612825: int __flags, void *__arg, ...) noexcept (true); 612825: 612825: 612825: extern int unshare (int __flags) noexcept (true); 612825: 612825: 612825: extern int sched_getcpu (void) noexcept (true); 612825: 612825: 612825: extern int getcpu (unsigned int *, unsigned int *) noexcept (true); 612825: 612825: 612825: extern int setns (int __fd, int __nstype) noexcept (true); 612825: 612825: 612825: } 612825: # 44 "/usr/include/sched.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 1 3 4 612825: # 32 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 3 4 612825: typedef unsigned long int __cpu_mask; 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef struct 612825: { 612825: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; 612825: } cpu_set_t; 612825: # 115 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 3 4 612825: extern "C" { 612825: 612825: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) 612825: noexcept (true); 612825: extern cpu_set_t *__sched_cpualloc (size_t __count) noexcept (true) __attribute__ ((__warn_unused_result__)); 612825: extern void __sched_cpufree (cpu_set_t *__set) noexcept (true); 612825: 612825: } 612825: # 45 "/usr/include/sched.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern "C" { 612825: 612825: 612825: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) 612825: noexcept (true); 612825: 612825: 612825: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) noexcept (true); 612825: 612825: 612825: extern int sched_setscheduler (__pid_t __pid, int __policy, 612825: const struct sched_param *__param) noexcept (true); 612825: 612825: 612825: extern int sched_getscheduler (__pid_t __pid) noexcept (true); 612825: 612825: 612825: extern int sched_yield (void) noexcept (true); 612825: 612825: 612825: extern int sched_get_priority_max (int __algorithm) noexcept (true); 612825: 612825: 612825: extern int sched_get_priority_min (int __algorithm) noexcept (true); 612825: 612825: 612825: 612825: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) noexcept (true); 612825: # 130 "/usr/include/sched.h" 3 4 612825: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, 612825: const cpu_set_t *__cpuset) noexcept (true); 612825: 612825: 612825: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, 612825: cpu_set_t *__cpuset) noexcept (true); 612825: 612825: 612825: } 612825: # 23 "/usr/include/pthread.h" 2 3 4 612825: # 1 "/usr/include/time.h" 1 3 4 612825: # 29 "/usr/include/time.h" 3 4 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 612825: # 30 "/usr/include/time.h" 2 3 4 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/time.h" 1 3 4 612825: # 73 "/usr/include/aarch64-linux-gnu/bits/time.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/timex.h" 1 3 4 612825: # 26 "/usr/include/aarch64-linux-gnu/bits/timex.h" 3 4 612825: struct timex 612825: { 612825: # 58 "/usr/include/aarch64-linux-gnu/bits/timex.h" 3 4 612825: unsigned int modes; 612825: __syscall_slong_t offset; 612825: __syscall_slong_t freq; 612825: __syscall_slong_t maxerror; 612825: __syscall_slong_t esterror; 612825: int status; 612825: __syscall_slong_t constant; 612825: __syscall_slong_t precision; 612825: __syscall_slong_t tolerance; 612825: struct timeval time; 612825: __syscall_slong_t tick; 612825: __syscall_slong_t ppsfreq; 612825: __syscall_slong_t jitter; 612825: int shift; 612825: __syscall_slong_t stabil; 612825: __syscall_slong_t jitcnt; 612825: __syscall_slong_t calcnt; 612825: __syscall_slong_t errcnt; 612825: __syscall_slong_t stbcnt; 612825: 612825: int tai; 612825: 612825: 612825: int :32; int :32; int :32; int :32; 612825: int :32; int :32; int :32; int :32; 612825: int :32; int :32; int :32; 612825: 612825: }; 612825: # 74 "/usr/include/aarch64-linux-gnu/bits/time.h" 2 3 4 612825: 612825: extern "C" { 612825: 612825: 612825: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: # 90 "/usr/include/aarch64-linux-gnu/bits/time.h" 3 4 612825: } 612825: # 34 "/usr/include/time.h" 2 3 4 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_tm.h" 1 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: struct tm 612825: { 612825: int tm_sec; 612825: int tm_min; 612825: int tm_hour; 612825: int tm_mday; 612825: int tm_mon; 612825: int tm_year; 612825: int tm_wday; 612825: int tm_yday; 612825: int tm_isdst; 612825: 612825: 612825: long int tm_gmtoff; 612825: const char *tm_zone; 612825: 612825: 612825: 612825: 612825: }; 612825: # 40 "/usr/include/time.h" 2 3 4 612825: # 48 "/usr/include/time.h" 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_itimerspec.h" 1 3 4 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: struct itimerspec 612825: { 612825: struct timespec it_interval; 612825: struct timespec it_value; 612825: }; 612825: # 49 "/usr/include/time.h" 2 3 4 612825: struct sigevent; 612825: # 68 "/usr/include/time.h" 3 4 612825: extern "C" { 612825: 612825: 612825: 612825: extern clock_t clock (void) noexcept (true); 612825: 612825: 612825: 612825: extern time_t time (time_t *__timer) noexcept (true); 612825: 612825: 612825: extern double difftime (time_t __time1, time_t __time0) 612825: noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern time_t mktime (struct tm *__tp) noexcept (true); 612825: # 100 "/usr/include/time.h" 3 4 612825: extern size_t strftime (char *__restrict __s, size_t __maxsize, 612825: const char *__restrict __format, 612825: const struct tm *__restrict __tp) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern char *strptime (const char *__restrict __s, 612825: const char *__restrict __fmt, struct tm *__tp) 612825: noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, 612825: const char *__restrict __format, 612825: const struct tm *__restrict __tp, 612825: locale_t __loc) noexcept (true); 612825: 612825: 612825: 612825: extern char *strptime_l (const char *__restrict __s, 612825: const char *__restrict __fmt, struct tm *__tp, 612825: locale_t __loc) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern struct tm *gmtime (const time_t *__timer) noexcept (true); 612825: 612825: 612825: 612825: extern struct tm *localtime (const time_t *__timer) noexcept (true); 612825: # 154 "/usr/include/time.h" 3 4 612825: extern struct tm *gmtime_r (const time_t *__restrict __timer, 612825: struct tm *__restrict __tp) noexcept (true); 612825: 612825: 612825: 612825: extern struct tm *localtime_r (const time_t *__restrict __timer, 612825: struct tm *__restrict __tp) noexcept (true); 612825: # 179 "/usr/include/time.h" 3 4 612825: extern char *asctime (const struct tm *__tp) noexcept (true); 612825: 612825: 612825: 612825: extern char *ctime (const time_t *__timer) noexcept (true); 612825: # 197 "/usr/include/time.h" 3 4 612825: extern char *asctime_r (const struct tm *__restrict __tp, 612825: char *__restrict __buf) noexcept (true); 612825: 612825: 612825: 612825: extern char *ctime_r (const time_t *__restrict __timer, 612825: char *__restrict __buf) noexcept (true); 612825: # 217 "/usr/include/time.h" 3 4 612825: extern char *__tzname[2]; 612825: extern int __daylight; 612825: extern long int __timezone; 612825: 612825: 612825: 612825: 612825: extern char *tzname[2]; 612825: 612825: 612825: 612825: extern void tzset (void) noexcept (true); 612825: 612825: 612825: 612825: extern int daylight; 612825: extern long int timezone; 612825: # 246 "/usr/include/time.h" 3 4 612825: extern time_t timegm (struct tm *__tp) noexcept (true); 612825: # 263 "/usr/include/time.h" 3 4 612825: extern time_t timelocal (struct tm *__tp) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int dysize (int __year) noexcept (true) __attribute__ ((__const__)); 612825: # 281 "/usr/include/time.h" 3 4 612825: extern int nanosleep (const struct timespec *__requested_time, 612825: struct timespec *__remaining); 612825: 612825: 612825: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) noexcept (true); 612825: 612825: 612825: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: # 323 "/usr/include/time.h" 3 4 612825: extern int clock_nanosleep (clockid_t __clock_id, int __flags, 612825: const struct timespec *__req, 612825: struct timespec *__rem); 612825: # 338 "/usr/include/time.h" 3 4 612825: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern int timer_create (clockid_t __clock_id, 612825: struct sigevent *__restrict __evp, 612825: timer_t *__restrict __timerid) noexcept (true); 612825: 612825: 612825: extern int timer_delete (timer_t __timerid) noexcept (true); 612825: 612825: 612825: 612825: extern int timer_settime (timer_t __timerid, int __flags, 612825: const struct itimerspec *__restrict __value, 612825: struct itimerspec *__restrict __ovalue) noexcept (true); 612825: 612825: 612825: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) 612825: noexcept (true); 612825: # 376 "/usr/include/time.h" 3 4 612825: extern int timer_getoverrun (timer_t __timerid) noexcept (true); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int timespec_get (struct timespec *__ts, int __base) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: # 399 "/usr/include/time.h" 3 4 612825: extern int timespec_getres (struct timespec *__ts, int __base) 612825: noexcept (true); 612825: # 425 "/usr/include/time.h" 3 4 612825: extern int getdate_err; 612825: # 434 "/usr/include/time.h" 3 4 612825: extern struct tm *getdate (const char *__string); 612825: # 448 "/usr/include/time.h" 3 4 612825: extern int getdate_r (const char *__restrict __string, 612825: struct tm *__restrict __resbufp); 612825: 612825: 612825: } 612825: # 24 "/usr/include/pthread.h" 2 3 4 612825: 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/setjmp.h" 1 3 4 612825: # 30 "/usr/include/aarch64-linux-gnu/bits/setjmp.h" 3 4 612825: __extension__ typedef unsigned long long __jmp_buf [22]; 612825: # 28 "/usr/include/pthread.h" 2 3 4 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4 612825: # 29 "/usr/include/pthread.h" 2 3 4 612825: 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/types/struct___jmp_buf_tag.h" 1 3 4 612825: # 26 "/usr/include/aarch64-linux-gnu/bits/types/struct___jmp_buf_tag.h" 3 4 612825: struct __jmp_buf_tag 612825: { 612825: 612825: 612825: 612825: 612825: __jmp_buf __jmpbuf; 612825: int __mask_was_saved; 612825: __sigset_t __saved_mask; 612825: }; 612825: # 32 "/usr/include/pthread.h" 2 3 4 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/bits/pthread_stack_min-dynamic.h" 1 3 4 612825: # 23 "/usr/include/aarch64-linux-gnu/bits/pthread_stack_min-dynamic.h" 3 4 612825: extern "C" { 612825: extern long int __sysconf (int __name) noexcept (true); 612825: } 612825: # 34 "/usr/include/pthread.h" 2 3 4 612825: 612825: 612825: 612825: enum 612825: { 612825: PTHREAD_CREATE_JOINABLE, 612825: 612825: PTHREAD_CREATE_DETACHED 612825: 612825: }; 612825: 612825: 612825: 612825: enum 612825: { 612825: PTHREAD_MUTEX_TIMED_NP, 612825: PTHREAD_MUTEX_RECURSIVE_NP, 612825: PTHREAD_MUTEX_ERRORCHECK_NP, 612825: PTHREAD_MUTEX_ADAPTIVE_NP 612825: 612825: , 612825: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, 612825: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, 612825: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, 612825: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL 612825: 612825: 612825: 612825: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP 612825: 612825: }; 612825: 612825: 612825: 612825: 612825: enum 612825: { 612825: PTHREAD_MUTEX_STALLED, 612825: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, 612825: PTHREAD_MUTEX_ROBUST, 612825: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: enum 612825: { 612825: PTHREAD_PRIO_NONE, 612825: PTHREAD_PRIO_INHERIT, 612825: PTHREAD_PRIO_PROTECT 612825: }; 612825: # 104 "/usr/include/pthread.h" 3 4 612825: enum 612825: { 612825: PTHREAD_RWLOCK_PREFER_READER_NP, 612825: PTHREAD_RWLOCK_PREFER_WRITER_NP, 612825: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, 612825: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP 612825: }; 612825: # 124 "/usr/include/pthread.h" 3 4 612825: enum 612825: { 612825: PTHREAD_INHERIT_SCHED, 612825: 612825: PTHREAD_EXPLICIT_SCHED 612825: 612825: }; 612825: 612825: 612825: 612825: enum 612825: { 612825: PTHREAD_SCOPE_SYSTEM, 612825: 612825: PTHREAD_SCOPE_PROCESS 612825: 612825: }; 612825: 612825: 612825: 612825: enum 612825: { 612825: PTHREAD_PROCESS_PRIVATE, 612825: 612825: PTHREAD_PROCESS_SHARED 612825: 612825: }; 612825: # 159 "/usr/include/pthread.h" 3 4 612825: struct _pthread_cleanup_buffer 612825: { 612825: void (*__routine) (void *); 612825: void *__arg; 612825: int __canceltype; 612825: struct _pthread_cleanup_buffer *__prev; 612825: }; 612825: 612825: 612825: enum 612825: { 612825: PTHREAD_CANCEL_ENABLE, 612825: 612825: PTHREAD_CANCEL_DISABLE 612825: 612825: }; 612825: enum 612825: { 612825: PTHREAD_CANCEL_DEFERRED, 612825: 612825: PTHREAD_CANCEL_ASYNCHRONOUS 612825: 612825: }; 612825: # 197 "/usr/include/pthread.h" 3 4 612825: extern "C" { 612825: 612825: 612825: 612825: 612825: extern int pthread_create (pthread_t *__restrict __newthread, 612825: const pthread_attr_t *__restrict __attr, 612825: void *(*__start_routine) (void *), 612825: void *__restrict __arg) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: 612825: 612825: 612825: 612825: 612825: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_join (pthread_t __th, void **__thread_return); 612825: 612825: 612825: 612825: 612825: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) noexcept (true); 612825: # 233 "/usr/include/pthread.h" 3 4 612825: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, 612825: const struct timespec *__abstime); 612825: # 243 "/usr/include/pthread.h" 3 4 612825: extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return, 612825: clockid_t __clockid, 612825: const struct timespec *__abstime); 612825: # 269 "/usr/include/pthread.h" 3 4 612825: extern int pthread_detach (pthread_t __th) noexcept (true); 612825: 612825: 612825: 612825: extern pthread_t pthread_self (void) noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) 612825: noexcept (true) __attribute__ ((__const__)); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_attr_init (pthread_attr_t *__attr) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_attr_destroy (pthread_attr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, 612825: int *__detachstate) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, 612825: int __detachstate) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, 612825: size_t *__guardsize) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, 612825: size_t __guardsize) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, 612825: struct sched_param *__restrict __param) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, 612825: const struct sched_param *__restrict 612825: __param) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict 612825: __attr, int *__restrict __policy) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict 612825: __attr, int *__restrict __inherit) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, 612825: int __inherit) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, 612825: int *__restrict __scope) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict 612825: __attr, void **__restrict __stackaddr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, 612825: void *__stackaddr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); 612825: 612825: 612825: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict 612825: __attr, size_t *__restrict __stacksize) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: 612825: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, 612825: size_t __stacksize) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, 612825: void **__restrict __stackaddr, 612825: size_t *__restrict __stacksize) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); 612825: 612825: 612825: 612825: 612825: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, 612825: size_t __stacksize) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, 612825: size_t __cpusetsize, 612825: const cpu_set_t *__cpuset) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: 612825: 612825: 612825: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, 612825: size_t __cpusetsize, 612825: cpu_set_t *__cpuset) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: 612825: 612825: extern int pthread_getattr_default_np (pthread_attr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr, 612825: const __sigset_t *sigmask); 612825: 612825: 612825: 612825: 612825: extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr, 612825: __sigset_t *sigmask); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, 612825: const struct sched_param *__param) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: 612825: 612825: extern int pthread_getschedparam (pthread_t __target_thread, 612825: int *__restrict __policy, 612825: struct sched_param *__restrict __param) 612825: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); 612825: 612825: 612825: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) 612825: noexcept (true); 612825: 612825: 612825: 612825: 612825: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, 612825: size_t __buflen) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_getconcurrency (void) noexcept (true); 612825: 612825: 612825: extern int pthread_setconcurrency (int __level) noexcept (true); 612825: 612825: 612825: 612825: extern int pthread_yield (void) noexcept (true); 612825: 612825: extern int pthread_yield (void) noexcept (true) __asm__ ("" "sched_yield") 612825: __attribute__ ((__deprecated__ ("pthread_yield is deprecated, use sched_yield instead"))) 612825: ; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, 612825: const cpu_set_t *__cpuset) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: 612825: 612825: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, 612825: cpu_set_t *__cpuset) 612825: noexcept (true) __attribute__ ((__nonnull__ (3))); 612825: # 509 "/usr/include/pthread.h" 3 4 612825: extern int pthread_once (pthread_once_t *__once_control, 612825: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); 612825: # 521 "/usr/include/pthread.h" 3 4 612825: extern int pthread_setcancelstate (int __state, int *__oldstate); 612825: 612825: 612825: 612825: extern int pthread_setcanceltype (int __type, int *__oldtype); 612825: 612825: 612825: extern int pthread_cancel (pthread_t __th); 612825: 612825: 612825: 612825: 612825: extern void pthread_testcancel (void); 612825: 612825: 612825: 612825: 612825: struct __cancel_jmp_buf_tag 612825: { 612825: __jmp_buf __cancel_jmp_buf; 612825: int __mask_was_saved; 612825: }; 612825: 612825: typedef struct 612825: { 612825: struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; 612825: void *__pad[4]; 612825: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); 612825: # 557 "/usr/include/pthread.h" 3 4 612825: struct __pthread_cleanup_frame 612825: { 612825: void (*__cancel_routine) (void *); 612825: void *__cancel_arg; 612825: int __do_it; 612825: int __cancel_type; 612825: }; 612825: 612825: 612825: 612825: 612825: class __pthread_cleanup_class 612825: { 612825: void (*__cancel_routine) (void *); 612825: void *__cancel_arg; 612825: int __do_it; 612825: int __cancel_type; 612825: 612825: public: 612825: __pthread_cleanup_class (void (*__fct) (void *), void *__arg) 612825: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } 612825: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } 612825: void __setdoit (int __newval) { __do_it = __newval; } 612825: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, 612825: &__cancel_type); } 612825: void __restore () const { pthread_setcanceltype (__cancel_type, 0); } 612825: }; 612825: # 766 "/usr/include/pthread.h" 3 4 612825: extern int __sigsetjmp_cancel (struct __cancel_jmp_buf_tag __env[1], int __savemask) noexcept (true) __asm__ ("" "__sigsetjmp") 612825: 612825: 612825: __attribute__ ((__returns_twice__)); 612825: # 781 "/usr/include/pthread.h" 3 4 612825: extern int pthread_mutex_init (pthread_mutex_t *__mutex, 612825: const pthread_mutexattr_t *__mutexattr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, 612825: const struct timespec *__restrict 612825: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: # 817 "/usr/include/pthread.h" 3 4 612825: extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex, 612825: clockid_t __clockid, 612825: const struct timespec *__restrict 612825: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: # 835 "/usr/include/pthread.h" 3 4 612825: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * 612825: __restrict __mutex, 612825: int *__restrict __prioceiling) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, 612825: int __prioceiling, 612825: int *__restrict __old_ceiling) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: 612825: 612825: 612825: 612825: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_mutex_consistent_np (pthread_mutex_t *) noexcept (true) __asm__ ("" "pthread_mutex_consistent") 612825: __attribute__ ((__nonnull__ (1))) 612825: __attribute__ ((__deprecated__ ("pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent"))) 612825: ; 612825: # 874 "/usr/include/pthread.h" 3 4 612825: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * 612825: __restrict __attr, 612825: int *__restrict __pshared) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, 612825: int __pshared) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict 612825: __attr, int *__restrict __kind) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: 612825: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * 612825: __restrict __attr, 612825: int *__restrict __protocol) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: 612825: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, 612825: int __protocol) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * 612825: __restrict __attr, 612825: int *__restrict __prioceiling) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, 612825: int __prioceiling) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, 612825: int *__robustness) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_mutexattr_getrobust_np (pthread_mutexattr_t *, int *) noexcept (true) __asm__ ("" "pthread_mutexattr_getrobust") 612825: 612825: __attribute__ ((__nonnull__ (1))) 612825: __attribute__ ((__deprecated__ ("pthread_mutexattr_getrobust_np is deprecated, use pthread_mutexattr_getrobust"))) 612825: ; 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, 612825: int __robustness) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *, int) noexcept (true) __asm__ ("" "pthread_mutexattr_setrobust") 612825: 612825: __attribute__ ((__nonnull__ (1))) 612825: __attribute__ ((__deprecated__ ("pthread_mutexattr_setrobust_np is deprecated, use pthread_mutexattr_setrobust"))) 612825: ; 612825: # 967 "/usr/include/pthread.h" 3 4 612825: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, 612825: const pthread_rwlockattr_t *__restrict 612825: __attr) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, 612825: const struct timespec *__restrict 612825: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: # 1004 "/usr/include/pthread.h" 3 4 612825: extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock, 612825: clockid_t __clockid, 612825: const struct timespec *__restrict 612825: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: # 1023 "/usr/include/pthread.h" 3 4 612825: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, 612825: const struct timespec *__restrict 612825: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: # 1051 "/usr/include/pthread.h" 3 4 612825: extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock, 612825: clockid_t __clockid, 612825: const struct timespec *__restrict 612825: __abstime) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); 612825: # 1071 "/usr/include/pthread.h" 3 4 612825: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * 612825: __restrict __attr, 612825: int *__restrict __pshared) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, 612825: int __pshared) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * 612825: __restrict __attr, 612825: int *__restrict __pref) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, 612825: int __pref) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, 612825: const pthread_condattr_t *__restrict __cond_attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_cond_destroy (pthread_cond_t *__cond) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_cond_signal (pthread_cond_t *__cond) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_cond_broadcast (pthread_cond_t *__cond) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, 612825: pthread_mutex_t *__restrict __mutex) 612825: __attribute__ ((__nonnull__ (1, 2))); 612825: # 1145 "/usr/include/pthread.h" 3 4 612825: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, 612825: pthread_mutex_t *__restrict __mutex, 612825: const struct timespec *__restrict __abstime) 612825: __attribute__ ((__nonnull__ (1, 2, 3))); 612825: # 1171 "/usr/include/pthread.h" 3 4 612825: extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond, 612825: pthread_mutex_t *__restrict __mutex, 612825: __clockid_t __clock_id, 612825: const struct timespec *__restrict __abstime) 612825: __attribute__ ((__nonnull__ (1, 2, 4))); 612825: # 1194 "/usr/include/pthread.h" 3 4 612825: extern int pthread_condattr_init (pthread_condattr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_condattr_getpshared (const pthread_condattr_t * 612825: __restrict __attr, 612825: int *__restrict __pshared) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, 612825: int __pshared) noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern int pthread_condattr_getclock (const pthread_condattr_t * 612825: __restrict __attr, 612825: __clockid_t *__restrict __clock_id) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, 612825: __clockid_t __clock_id) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: # 1230 "/usr/include/pthread.h" 3 4 612825: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_spin_lock (pthread_spinlock_t *__lock) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: 612825: 612825: 612825: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, 612825: const pthread_barrierattr_t *__restrict 612825: __attr, unsigned int __count) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: 612825: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * 612825: __restrict __attr, 612825: int *__restrict __pshared) 612825: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); 612825: 612825: 612825: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, 612825: int __pshared) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: # 1297 "/usr/include/pthread.h" 3 4 612825: extern int pthread_key_create (pthread_key_t *__key, 612825: void (*__destr_function) (void *)) 612825: noexcept (true) __attribute__ ((__nonnull__ (1))); 612825: 612825: 612825: extern int pthread_key_delete (pthread_key_t __key) noexcept (true); 612825: 612825: 612825: extern void *pthread_getspecific (pthread_key_t __key) noexcept (true); 612825: 612825: 612825: extern int pthread_setspecific (pthread_key_t __key, 612825: const void *__pointer) 612825: noexcept (true) __attribute__ ((__access__ (__none__, 2))); 612825: 612825: 612825: 612825: 612825: extern int pthread_getcpuclockid (pthread_t __thread_id, 612825: __clockid_t *__clock_id) 612825: noexcept (true) __attribute__ ((__nonnull__ (2))); 612825: # 1332 "/usr/include/pthread.h" 3 4 612825: extern int pthread_atfork (void (*__prepare) (void), 612825: void (*__parent) (void), 612825: void (*__child) (void)) noexcept (true); 612825: 612825: 612825: 612825: 612825: extern __inline __attribute__ ((__gnu_inline__)) int 612825: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) noexcept (true) 612825: { 612825: return __thread1 == __thread2; 612825: } 612825: 612825: 612825: } 612825: # 36 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr-default.h" 2 3 612825: # 47 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr-default.h" 3 612825: typedef pthread_t __gthread_t; 612825: typedef pthread_key_t __gthread_key_t; 612825: typedef pthread_once_t __gthread_once_t; 612825: typedef pthread_mutex_t __gthread_mutex_t; 612825: typedef pthread_mutex_t __gthread_recursive_mutex_t; 612825: typedef pthread_cond_t __gthread_cond_t; 612825: typedef struct timespec __gthread_time_t; 612825: # 102 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr-default.h" 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: # 299 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr-default.h" 3 612825: static inline int 612825: __gthread_active_p (void) 612825: { 612825: return 1; 612825: } 612825: # 659 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr-default.h" 3 612825: static inline int 612825: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), 612825: void *__args) 612825: { 612825: return pthread_create (__threadid, __null, __func, __args); 612825: } 612825: 612825: static inline int 612825: __gthread_join (__gthread_t __threadid, void **__value_ptr) 612825: { 612825: return pthread_join (__threadid, __value_ptr); 612825: } 612825: 612825: static inline int 612825: __gthread_detach (__gthread_t __threadid) 612825: { 612825: return pthread_detach (__threadid); 612825: } 612825: 612825: static inline int 612825: __gthread_equal (__gthread_t __t1, __gthread_t __t2) 612825: { 612825: return pthread_equal (__t1, __t2); 612825: } 612825: 612825: static inline __gthread_t 612825: __gthread_self (void) 612825: { 612825: return pthread_self (); 612825: } 612825: 612825: static inline int 612825: __gthread_yield (void) 612825: { 612825: return sched_yield (); 612825: } 612825: 612825: static inline int 612825: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) 612825: { 612825: if (__gthread_active_p ()) 612825: return pthread_once (__once, __func); 612825: else 612825: return -1; 612825: } 612825: 612825: static inline int 612825: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) 612825: { 612825: return pthread_key_create (__key, __dtor); 612825: } 612825: 612825: static inline int 612825: __gthread_key_delete (__gthread_key_t __key) 612825: { 612825: return pthread_key_delete (__key); 612825: } 612825: 612825: static inline void * 612825: __gthread_getspecific (__gthread_key_t __key) 612825: { 612825: return pthread_getspecific (__key); 612825: } 612825: 612825: static inline int 612825: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) 612825: { 612825: return pthread_setspecific (__key, __ptr); 612825: } 612825: 612825: static inline void 612825: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) 612825: { 612825: if (__gthread_active_p ()) 612825: pthread_mutex_init (__mutex, __null); 612825: } 612825: 612825: static inline int 612825: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) 612825: { 612825: if (__gthread_active_p ()) 612825: return pthread_mutex_destroy (__mutex); 612825: else 612825: return 0; 612825: } 612825: 612825: static inline int 612825: __gthread_mutex_lock (__gthread_mutex_t *__mutex) 612825: { 612825: if (__gthread_active_p ()) 612825: return pthread_mutex_lock (__mutex); 612825: else 612825: return 0; 612825: } 612825: 612825: static inline int 612825: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) 612825: { 612825: if (__gthread_active_p ()) 612825: return pthread_mutex_trylock (__mutex); 612825: else 612825: return 0; 612825: } 612825: 612825: 612825: static inline int 612825: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, 612825: const __gthread_time_t *__abs_timeout) 612825: { 612825: if (__gthread_active_p ()) 612825: return pthread_mutex_timedlock (__mutex, __abs_timeout); 612825: else 612825: return 0; 612825: } 612825: 612825: 612825: static inline int 612825: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) 612825: { 612825: if (__gthread_active_p ()) 612825: return pthread_mutex_unlock (__mutex); 612825: else 612825: return 0; 612825: } 612825: # 808 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr-default.h" 3 612825: static inline int 612825: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) 612825: { 612825: return __gthread_mutex_lock (__mutex); 612825: } 612825: 612825: static inline int 612825: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) 612825: { 612825: return __gthread_mutex_trylock (__mutex); 612825: } 612825: 612825: 612825: static inline int 612825: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, 612825: const __gthread_time_t *__abs_timeout) 612825: { 612825: return __gthread_mutex_timedlock (__mutex, __abs_timeout); 612825: } 612825: 612825: 612825: static inline int 612825: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) 612825: { 612825: return __gthread_mutex_unlock (__mutex); 612825: } 612825: 612825: static inline int 612825: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) 612825: { 612825: return __gthread_mutex_destroy (__mutex); 612825: } 612825: # 850 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr-default.h" 3 612825: static inline int 612825: __gthread_cond_broadcast (__gthread_cond_t *__cond) 612825: { 612825: return pthread_cond_broadcast (__cond); 612825: } 612825: 612825: static inline int 612825: __gthread_cond_signal (__gthread_cond_t *__cond) 612825: { 612825: return pthread_cond_signal (__cond); 612825: } 612825: 612825: static inline int 612825: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) 612825: { 612825: return pthread_cond_wait (__cond, __mutex); 612825: } 612825: 612825: static inline int 612825: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, 612825: const __gthread_time_t *__abs_timeout) 612825: { 612825: return pthread_cond_timedwait (__cond, __mutex, __abs_timeout); 612825: } 612825: 612825: static inline int 612825: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, 612825: __gthread_recursive_mutex_t *__mutex) 612825: { 612825: return __gthread_cond_wait (__cond, __mutex); 612825: } 612825: 612825: static inline int 612825: __gthread_cond_destroy (__gthread_cond_t* __cond) 612825: { 612825: return pthread_cond_destroy (__cond); 612825: } 612825: # 149 "/usr/include/aarch64-linux-gnu/c++/12/bits/gthr.h" 2 3 612825: 612825: 612825: #pragma GCC visibility pop 612825: # 36 "/usr/include/c++/12/ext/atomicity.h" 2 3 612825: # 1 "/usr/include/aarch64-linux-gnu/c++/12/bits/atomic_word.h" 1 3 612825: # 32 "/usr/include/aarch64-linux-gnu/c++/12/bits/atomic_word.h" 3 612825: typedef int _Atomic_word; 612825: # 37 "/usr/include/c++/12/ext/atomicity.h" 2 3 612825: 612825: # 1 "/usr/include/aarch64-linux-gnu/sys/single_threaded.h" 1 3 4 612825: # 24 "/usr/include/aarch64-linux-gnu/sys/single_threaded.h" 3 4 612825: extern "C" { 612825: 612825: 612825: 612825: 612825: extern char __libc_single_threaded; 612825: 612825: } 612825: # 39 "/usr/include/c++/12/ext/atomicity.h" 2 3 612825: 612825: 612825: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: __attribute__((__always_inline__)) 612825: inline bool 612825: __is_single_threaded() noexcept 612825: { 612825: 612825: 612825: 612825: return ::__libc_single_threaded; 612825: 612825: 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: inline _Atomic_word 612825: __attribute__((__always_inline__)) 612825: __exchange_and_add(volatile _Atomic_word* __mem, int __val) 612825: { return __atomic_fetch_add(__mem, __val, 4); } 612825: 612825: inline void 612825: __attribute__((__always_inline__)) 612825: __atomic_add(volatile _Atomic_word* __mem, int __val) 612825: { __atomic_fetch_add(__mem, __val, 4); } 612825: # 80 "/usr/include/c++/12/ext/atomicity.h" 3 612825: inline _Atomic_word 612825: __attribute__((__always_inline__)) 612825: __exchange_and_add_single(_Atomic_word* __mem, int __val) 612825: { 612825: _Atomic_word __result = *__mem; 612825: *__mem += __val; 612825: return __result; 612825: } 612825: 612825: inline void 612825: __attribute__((__always_inline__)) 612825: __atomic_add_single(_Atomic_word* __mem, int __val) 612825: { *__mem += __val; } 612825: 612825: inline _Atomic_word 612825: __attribute__ ((__always_inline__)) 612825: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) 612825: { 612825: if (__is_single_threaded()) 612825: return __exchange_and_add_single(__mem, __val); 612825: else 612825: return __exchange_and_add(__mem, __val); 612825: } 612825: 612825: inline void 612825: __attribute__ ((__always_inline__)) 612825: __atomic_add_dispatch(_Atomic_word* __mem, int __val) 612825: { 612825: if (__is_single_threaded()) 612825: __atomic_add_single(__mem, __val); 612825: else 612825: __atomic_add(__mem, __val); 612825: } 612825: 612825: 612825: } 612825: # 62 "/usr/include/c++/12/bits/shared_ptr_base.h" 2 3 612825: # 1 "/usr/include/c++/12/ext/concurrence.h" 1 3 612825: # 32 "/usr/include/c++/12/ext/concurrence.h" 3 612825: 612825: # 33 "/usr/include/c++/12/ext/concurrence.h" 3 612825: 612825: # 1 "/usr/include/c++/12/exception" 1 3 612825: # 33 "/usr/include/c++/12/exception" 3 612825: 612825: # 34 "/usr/include/c++/12/exception" 3 612825: 612825: #pragma GCC visibility push(default) 612825: 612825: 612825: 612825: 612825: extern "C++" { 612825: 612825: namespace std 612825: { 612825: # 53 "/usr/include/c++/12/exception" 3 612825: class bad_exception : public exception 612825: { 612825: public: 612825: bad_exception() noexcept { } 612825: 612825: 612825: 612825: virtual ~bad_exception() noexcept; 612825: 612825: 612825: virtual const char* 612825: what() const noexcept; 612825: }; 612825: 612825: 612825: typedef void (*terminate_handler) (); 612825: 612825: 612825: terminate_handler set_terminate(terminate_handler) noexcept; 612825: 612825: 612825: 612825: terminate_handler get_terminate() noexcept; 612825: 612825: 612825: 612825: 612825: void terminate() noexcept __attribute__ ((__noreturn__)); 612825: 612825: 612825: 612825: typedef void (*__attribute__ ((__deprecated__)) unexpected_handler) (); 612825: 612825: 612825: 612825: 612825: 612825: __attribute__ ((__deprecated__)) 612825: unexpected_handler set_unexpected(unexpected_handler) noexcept; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: __attribute__ ((__deprecated__)) 612825: unexpected_handler get_unexpected() noexcept; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: __attribute__ ((__deprecated__)) 612825: void unexpected() __attribute__ ((__noreturn__)); 612825: # 123 "/usr/include/c++/12/exception" 3 612825: 612825: bool uncaught_exception() noexcept __attribute__ ((__pure__)); 612825: # 136 "/usr/include/c++/12/exception" 3 612825: } 612825: 612825: namespace __gnu_cxx 612825: { 612825: 612825: # 158 "/usr/include/c++/12/exception" 3 612825: void __verbose_terminate_handler(); 612825: 612825: 612825: } 612825: 612825: } 612825: 612825: #pragma GCC visibility pop 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/exception_ptr.h" 1 3 612825: # 34 "/usr/include/c++/12/bits/exception_ptr.h" 3 612825: #pragma GCC visibility push(default) 612825: 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/cxxabi_init_exception.h" 1 3 612825: # 34 "/usr/include/c++/12/bits/cxxabi_init_exception.h" 3 612825: 612825: # 35 "/usr/include/c++/12/bits/cxxabi_init_exception.h" 3 612825: 612825: #pragma GCC visibility push(default) 612825: 612825: # 1 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 1 3 4 612825: # 145 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 3 4 612825: typedef long int ptrdiff_t; 612825: # 424 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 3 4 612825: typedef struct { 612825: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); 612825: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); 612825: # 435 "/usr/lib/gcc/aarch64-linux-gnu/12/include/stddef.h" 3 4 612825: } max_align_t; 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef decltype(nullptr) nullptr_t; 612825: # 39 "/usr/include/c++/12/bits/cxxabi_init_exception.h" 2 3 612825: # 50 "/usr/include/c++/12/bits/cxxabi_init_exception.h" 3 612825: namespace std 612825: { 612825: class type_info; 612825: } 612825: 612825: namespace __cxxabiv1 612825: { 612825: struct __cxa_refcounted_exception; 612825: 612825: extern "C" 612825: { 612825: 612825: void* 612825: __cxa_allocate_exception(size_t) noexcept; 612825: 612825: void 612825: __cxa_free_exception(void*) noexcept; 612825: 612825: 612825: __cxa_refcounted_exception* 612825: __cxa_init_primary_exception(void *object, std::type_info *tinfo, 612825: void ( *dest) (void *)) noexcept; 612825: 612825: } 612825: } 612825: 612825: 612825: 612825: #pragma GCC visibility pop 612825: # 39 "/usr/include/c++/12/bits/exception_ptr.h" 2 3 612825: # 52 "/usr/include/c++/12/bits/exception_ptr.h" 3 612825: extern "C++" { 612825: 612825: namespace std 612825: { 612825: class type_info; 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace __exception_ptr 612825: { 612825: class exception_ptr; 612825: } 612825: 612825: using __exception_ptr::exception_ptr; 612825: 612825: 612825: 612825: 612825: 612825: exception_ptr current_exception() noexcept; 612825: 612825: template 612825: exception_ptr make_exception_ptr(_Ex) noexcept; 612825: 612825: 612825: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); 612825: 612825: namespace __exception_ptr 612825: { 612825: using std::rethrow_exception; 612825: 612825: 612825: 612825: 612825: 612825: class exception_ptr 612825: { 612825: void* _M_exception_object; 612825: 612825: explicit exception_ptr(void* __e) noexcept; 612825: 612825: void _M_addref() noexcept; 612825: void _M_release() noexcept; 612825: 612825: void *_M_get() const noexcept __attribute__ ((__pure__)); 612825: 612825: friend exception_ptr std::current_exception() noexcept; 612825: friend void std::rethrow_exception(exception_ptr); 612825: template 612825: friend exception_ptr std::make_exception_ptr(_Ex) noexcept; 612825: 612825: public: 612825: exception_ptr() noexcept; 612825: 612825: exception_ptr(const exception_ptr&) noexcept; 612825: 612825: 612825: exception_ptr(nullptr_t) noexcept 612825: : _M_exception_object(nullptr) 612825: { } 612825: 612825: exception_ptr(exception_ptr&& __o) noexcept 612825: : _M_exception_object(__o._M_exception_object) 612825: { __o._M_exception_object = nullptr; } 612825: # 128 "/usr/include/c++/12/bits/exception_ptr.h" 3 612825: exception_ptr& 612825: operator=(const exception_ptr&) noexcept; 612825: 612825: 612825: exception_ptr& 612825: operator=(exception_ptr&& __o) noexcept 612825: { 612825: exception_ptr(static_cast(__o)).swap(*this); 612825: return *this; 612825: } 612825: 612825: 612825: ~exception_ptr() noexcept; 612825: 612825: void 612825: swap(exception_ptr&) noexcept; 612825: # 155 "/usr/include/c++/12/bits/exception_ptr.h" 3 612825: explicit operator bool() const noexcept 612825: { return _M_exception_object; } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: friend bool 612825: operator==(const exception_ptr& __x, const exception_ptr& __y) 612825: noexcept 612825: { return __x._M_exception_object == __y._M_exception_object; } 612825: 612825: friend bool 612825: operator!=(const exception_ptr& __x, const exception_ptr& __y) 612825: noexcept 612825: { return __x._M_exception_object != __y._M_exception_object; } 612825: 612825: 612825: const class std::type_info* 612825: __cxa_exception_type() const noexcept 612825: __attribute__ ((__pure__)); 612825: }; 612825: 612825: 612825: inline 612825: exception_ptr::exception_ptr() noexcept 612825: : _M_exception_object(0) 612825: { } 612825: 612825: 612825: inline 612825: exception_ptr::exception_ptr(const exception_ptr& __other) 612825: noexcept 612825: : _M_exception_object(__other._M_exception_object) 612825: { 612825: if (_M_exception_object) 612825: _M_addref(); 612825: } 612825: 612825: 612825: inline 612825: exception_ptr::~exception_ptr() noexcept 612825: { 612825: if (_M_exception_object) 612825: _M_release(); 612825: } 612825: 612825: 612825: inline exception_ptr& 612825: exception_ptr::operator=(const exception_ptr& __other) noexcept 612825: { 612825: exception_ptr(__other).swap(*this); 612825: return *this; 612825: } 612825: 612825: 612825: inline void 612825: exception_ptr::swap(exception_ptr &__other) noexcept 612825: { 612825: void *__tmp = _M_exception_object; 612825: _M_exception_object = __other._M_exception_object; 612825: __other._M_exception_object = __tmp; 612825: } 612825: 612825: 612825: inline void 612825: swap(exception_ptr& __lhs, exception_ptr& __rhs) 612825: { __lhs.swap(__rhs); } 612825: 612825: 612825: template 612825: 612825: inline void 612825: __dest_thunk(void* __x) 612825: { static_cast<_Ex*>(__x)->~_Ex(); } 612825: 612825: 612825: } 612825: 612825: 612825: 612825: template 612825: exception_ptr 612825: make_exception_ptr(_Ex __ex) noexcept 612825: { 612825: 612825: using _Ex2 = typename decay<_Ex>::type; 612825: void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); 612825: (void) __cxxabiv1::__cxa_init_primary_exception( 612825: __e, const_cast(&typeid(_Ex)), 612825: __exception_ptr::__dest_thunk<_Ex2>); 612825: try 612825: { 612825: ::new (__e) _Ex2(__ex); 612825: return exception_ptr(__e); 612825: } 612825: catch(...) 612825: { 612825: __cxxabiv1::__cxa_free_exception(__e); 612825: return current_exception(); 612825: } 612825: # 268 "/usr/include/c++/12/bits/exception_ptr.h" 3 612825: } 612825: # 282 "/usr/include/c++/12/bits/exception_ptr.h" 3 612825: } 612825: 612825: } 612825: 612825: #pragma GCC visibility pop 612825: # 169 "/usr/include/c++/12/exception" 2 3 612825: # 1 "/usr/include/c++/12/bits/nested_exception.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/nested_exception.h" 3 612825: #pragma GCC visibility push(default) 612825: # 42 "/usr/include/c++/12/bits/nested_exception.h" 3 612825: extern "C++" { 612825: 612825: namespace std 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: class nested_exception 612825: { 612825: exception_ptr _M_ptr; 612825: 612825: public: 612825: nested_exception() noexcept : _M_ptr(current_exception()) { } 612825: 612825: nested_exception(const nested_exception&) noexcept = default; 612825: 612825: nested_exception& operator=(const nested_exception&) noexcept = default; 612825: 612825: virtual ~nested_exception() noexcept; 612825: 612825: [[noreturn]] 612825: void 612825: rethrow_nested() const 612825: { 612825: if (_M_ptr) 612825: rethrow_exception(_M_ptr); 612825: std::terminate(); 612825: } 612825: 612825: exception_ptr 612825: nested_ptr() const noexcept 612825: { return _M_ptr; } 612825: }; 612825: 612825: 612825: 612825: template 612825: struct _Nested_exception : public _Except, public nested_exception 612825: { 612825: explicit _Nested_exception(const _Except& __ex) 612825: : _Except(__ex) 612825: { } 612825: 612825: explicit _Nested_exception(_Except&& __ex) 612825: : _Except(static_cast<_Except&&>(__ex)) 612825: { } 612825: }; 612825: 612825: 612825: 612825: 612825: template 612825: [[noreturn]] 612825: inline void 612825: __throw_with_nested_impl(_Tp&& __t, true_type) 612825: { 612825: using _Up = typename remove_reference<_Tp>::type; 612825: throw _Nested_exception<_Up>{std::forward<_Tp>(__t)}; 612825: } 612825: 612825: template 612825: [[noreturn]] 612825: inline void 612825: __throw_with_nested_impl(_Tp&& __t, false_type) 612825: { throw std::forward<_Tp>(__t); } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: [[noreturn]] 612825: inline void 612825: throw_with_nested(_Tp&& __t) 612825: { 612825: using _Up = typename decay<_Tp>::type; 612825: using _CopyConstructible 612825: = __and_, is_move_constructible<_Up>>; 612825: static_assert(_CopyConstructible::value, 612825: "throw_with_nested argument must be CopyConstructible"); 612825: using __nest = __and_, __bool_constant, 612825: __not_>>; 612825: std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{}); 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: using __rethrow_if_nested_cond = typename enable_if< 612825: __and_, 612825: __or_<__not_>, 612825: is_convertible<_Tp*, nested_exception*>>>::value 612825: >::type; 612825: 612825: 612825: template 612825: inline __rethrow_if_nested_cond<_Ex> 612825: __rethrow_if_nested_impl(const _Ex* __ptr) 612825: { 612825: if (auto __ne_ptr = dynamic_cast(__ptr)) 612825: __ne_ptr->rethrow_nested(); 612825: } 612825: 612825: 612825: inline void 612825: __rethrow_if_nested_impl(const void*) 612825: { } 612825: 612825: 612825: 612825: 612825: template 612825: inline void 612825: rethrow_if_nested(const _Ex& __ex) 612825: { std::__rethrow_if_nested_impl(std::__addressof(__ex)); } 612825: 612825: 612825: } 612825: 612825: } 612825: 612825: 612825: 612825: #pragma GCC visibility pop 612825: # 170 "/usr/include/c++/12/exception" 2 3 612825: # 35 "/usr/include/c++/12/ext/concurrence.h" 2 3 612825: 612825: 612825: 612825: 612825: 612825: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; 612825: 612825: 612825: 612825: static const _Lock_policy __default_lock_policy = 612825: 612825: 612825: 612825: _S_atomic; 612825: 612825: 612825: 612825: 612825: 612825: 612825: class __concurrence_lock_error : public std::exception 612825: { 612825: public: 612825: virtual char const* 612825: what() const throw() 612825: { return "__gnu_cxx::__concurrence_lock_error"; } 612825: }; 612825: 612825: class __concurrence_unlock_error : public std::exception 612825: { 612825: public: 612825: virtual char const* 612825: what() const throw() 612825: { return "__gnu_cxx::__concurrence_unlock_error"; } 612825: }; 612825: 612825: class __concurrence_broadcast_error : public std::exception 612825: { 612825: public: 612825: virtual char const* 612825: what() const throw() 612825: { return "__gnu_cxx::__concurrence_broadcast_error"; } 612825: }; 612825: 612825: class __concurrence_wait_error : public std::exception 612825: { 612825: public: 612825: virtual char const* 612825: what() const throw() 612825: { return "__gnu_cxx::__concurrence_wait_error"; } 612825: }; 612825: 612825: 612825: inline void 612825: __throw_concurrence_lock_error() 612825: { (throw (__concurrence_lock_error())); } 612825: 612825: inline void 612825: __throw_concurrence_unlock_error() 612825: { (throw (__concurrence_unlock_error())); } 612825: 612825: 612825: inline void 612825: __throw_concurrence_broadcast_error() 612825: { (throw (__concurrence_broadcast_error())); } 612825: 612825: inline void 612825: __throw_concurrence_wait_error() 612825: { (throw (__concurrence_wait_error())); } 612825: 612825: 612825: class __mutex 612825: { 612825: private: 612825: 612825: __gthread_mutex_t _M_mutex = { { 0, 0, 0, 0, PTHREAD_MUTEX_TIMED_NP, 0, { 0, 0 } } }; 612825: 612825: 612825: 612825: 612825: __mutex(const __mutex&); 612825: __mutex& operator=(const __mutex&); 612825: 612825: public: 612825: __mutex() 612825: { 612825: 612825: 612825: 612825: 612825: } 612825: # 144 "/usr/include/c++/12/ext/concurrence.h" 3 612825: void lock() 612825: { 612825: 612825: if (__gthread_active_p()) 612825: { 612825: if (__gthread_mutex_lock(&_M_mutex) != 0) 612825: __throw_concurrence_lock_error(); 612825: } 612825: 612825: } 612825: 612825: void unlock() 612825: { 612825: 612825: if (__gthread_active_p()) 612825: { 612825: if (__gthread_mutex_unlock(&_M_mutex) != 0) 612825: __throw_concurrence_unlock_error(); 612825: } 612825: 612825: } 612825: 612825: __gthread_mutex_t* gthread_mutex(void) 612825: { return &_M_mutex; } 612825: }; 612825: 612825: class __recursive_mutex 612825: { 612825: private: 612825: 612825: __gthread_recursive_mutex_t _M_mutex = { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0, 0 } } }; 612825: 612825: 612825: 612825: 612825: __recursive_mutex(const __recursive_mutex&); 612825: __recursive_mutex& operator=(const __recursive_mutex&); 612825: 612825: public: 612825: __recursive_mutex() 612825: { 612825: 612825: 612825: 612825: 612825: } 612825: # 199 "/usr/include/c++/12/ext/concurrence.h" 3 612825: void lock() 612825: { 612825: 612825: if (__gthread_active_p()) 612825: { 612825: if (__gthread_recursive_mutex_lock(&_M_mutex) != 0) 612825: __throw_concurrence_lock_error(); 612825: } 612825: 612825: } 612825: 612825: void unlock() 612825: { 612825: 612825: if (__gthread_active_p()) 612825: { 612825: if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0) 612825: __throw_concurrence_unlock_error(); 612825: } 612825: 612825: } 612825: 612825: __gthread_recursive_mutex_t* gthread_recursive_mutex(void) 612825: { return &_M_mutex; } 612825: }; 612825: 612825: 612825: 612825: 612825: class __scoped_lock 612825: { 612825: public: 612825: typedef __mutex __mutex_type; 612825: 612825: private: 612825: __mutex_type& _M_device; 612825: 612825: __scoped_lock(const __scoped_lock&); 612825: __scoped_lock& operator=(const __scoped_lock&); 612825: 612825: public: 612825: explicit __scoped_lock(__mutex_type& __name) : _M_device(__name) 612825: { _M_device.lock(); } 612825: 612825: ~__scoped_lock() throw() 612825: { _M_device.unlock(); } 612825: }; 612825: 612825: 612825: class __cond 612825: { 612825: private: 612825: 612825: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }; 612825: 612825: 612825: 612825: 612825: __cond(const __cond&); 612825: __cond& operator=(const __cond&); 612825: 612825: public: 612825: __cond() 612825: { 612825: 612825: 612825: 612825: 612825: } 612825: # 277 "/usr/include/c++/12/ext/concurrence.h" 3 612825: void broadcast() 612825: { 612825: 612825: if (__gthread_active_p()) 612825: { 612825: if (__gthread_cond_broadcast(&_M_cond) != 0) 612825: __throw_concurrence_broadcast_error(); 612825: } 612825: 612825: } 612825: 612825: void wait(__mutex *mutex) 612825: { 612825: 612825: { 612825: if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0) 612825: __throw_concurrence_wait_error(); 612825: } 612825: 612825: } 612825: 612825: void wait_recursive(__recursive_mutex *mutex) 612825: { 612825: 612825: { 612825: if (__gthread_cond_wait_recursive(&_M_cond, 612825: mutex->gthread_recursive_mutex()) 612825: != 0) 612825: __throw_concurrence_wait_error(); 612825: } 612825: 612825: } 612825: }; 612825: 612825: 612825: 612825: } 612825: # 63 "/usr/include/c++/12/bits/shared_ptr_base.h" 2 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: template class auto_ptr; 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: 612825: 612825: 612825: 612825: class bad_weak_ptr : public std::exception 612825: { 612825: public: 612825: virtual char const* what() const noexcept; 612825: 612825: virtual ~bad_weak_ptr() noexcept; 612825: }; 612825: 612825: 612825: inline void 612825: __throw_bad_weak_ptr() 612825: { (throw (bad_weak_ptr())); } 612825: 612825: using __gnu_cxx::_Lock_policy; 612825: using __gnu_cxx::__default_lock_policy; 612825: using __gnu_cxx::_S_single; 612825: using __gnu_cxx::_S_mutex; 612825: using __gnu_cxx::_S_atomic; 612825: 612825: 612825: template<_Lock_policy _Lp> 612825: class _Mutex_base 612825: { 612825: protected: 612825: 612825: enum { _S_need_barriers = 0 }; 612825: }; 612825: 612825: template<> 612825: class _Mutex_base<_S_mutex> 612825: : public __gnu_cxx::__mutex 612825: { 612825: protected: 612825: 612825: 612825: 612825: enum { _S_need_barriers = 1 }; 612825: }; 612825: 612825: template<_Lock_policy _Lp = __default_lock_policy> 612825: class _Sp_counted_base 612825: : public _Mutex_base<_Lp> 612825: { 612825: public: 612825: _Sp_counted_base() noexcept 612825: : _M_use_count(1), _M_weak_count(1) { } 612825: 612825: virtual 612825: ~_Sp_counted_base() noexcept 612825: { } 612825: 612825: 612825: 612825: virtual void 612825: _M_dispose() noexcept = 0; 612825: 612825: 612825: virtual void 612825: _M_destroy() noexcept 612825: { delete this; } 612825: 612825: virtual void* 612825: _M_get_deleter(const std::type_info&) noexcept = 0; 612825: 612825: 612825: void 612825: _M_add_ref_copy() 612825: { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } 612825: 612825: 612825: void 612825: _M_add_ref_lock() 612825: { 612825: if (!_M_add_ref_lock_nothrow()) 612825: __throw_bad_weak_ptr(); 612825: } 612825: 612825: 612825: bool 612825: _M_add_ref_lock_nothrow() noexcept; 612825: 612825: 612825: void 612825: _M_release() noexcept; 612825: 612825: 612825: void 612825: _M_release_last_use() noexcept 612825: { 612825: ; 612825: _M_dispose(); 612825: 612825: 612825: 612825: 612825: if (_Mutex_base<_Lp>::_S_need_barriers) 612825: { 612825: __atomic_thread_fence (4); 612825: } 612825: 612825: 612825: ; 612825: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, 612825: -1) == 1) 612825: { 612825: ; 612825: _M_destroy(); 612825: } 612825: } 612825: 612825: 612825: __attribute__((__noinline__)) 612825: void 612825: _M_release_last_use_cold() noexcept 612825: { _M_release_last_use(); } 612825: 612825: 612825: void 612825: _M_weak_add_ref() noexcept 612825: { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } 612825: 612825: 612825: void 612825: _M_weak_release() noexcept 612825: { 612825: 612825: ; 612825: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) 612825: { 612825: ; 612825: if (_Mutex_base<_Lp>::_S_need_barriers) 612825: { 612825: 612825: 612825: __atomic_thread_fence (4); 612825: } 612825: _M_destroy(); 612825: } 612825: } 612825: 612825: long 612825: _M_get_use_count() const noexcept 612825: { 612825: 612825: 612825: return __atomic_load_n(&_M_use_count, 0); 612825: } 612825: 612825: private: 612825: _Sp_counted_base(_Sp_counted_base const&) = delete; 612825: _Sp_counted_base& operator=(_Sp_counted_base const&) = delete; 612825: 612825: _Atomic_word _M_use_count; 612825: _Atomic_word _M_weak_count; 612825: }; 612825: 612825: template<> 612825: inline bool 612825: _Sp_counted_base<_S_single>:: 612825: _M_add_ref_lock_nothrow() noexcept 612825: { 612825: if (_M_use_count == 0) 612825: return false; 612825: ++_M_use_count; 612825: return true; 612825: } 612825: 612825: template<> 612825: inline bool 612825: _Sp_counted_base<_S_mutex>:: 612825: _M_add_ref_lock_nothrow() noexcept 612825: { 612825: __gnu_cxx::__scoped_lock sentry(*this); 612825: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) 612825: { 612825: _M_use_count = 0; 612825: return false; 612825: } 612825: return true; 612825: } 612825: 612825: template<> 612825: inline bool 612825: _Sp_counted_base<_S_atomic>:: 612825: _M_add_ref_lock_nothrow() noexcept 612825: { 612825: 612825: _Atomic_word __count = _M_get_use_count(); 612825: do 612825: { 612825: if (__count == 0) 612825: return false; 612825: 612825: 612825: } 612825: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, 612825: true, 4, 612825: 0)); 612825: return true; 612825: } 612825: 612825: template<> 612825: inline void 612825: _Sp_counted_base<_S_single>::_M_add_ref_copy() 612825: { ++_M_use_count; } 612825: 612825: template<> 612825: inline void 612825: _Sp_counted_base<_S_single>::_M_release() noexcept 612825: { 612825: if (--_M_use_count == 0) 612825: { 612825: _M_dispose(); 612825: if (--_M_weak_count == 0) 612825: _M_destroy(); 612825: } 612825: } 612825: 612825: template<> 612825: inline void 612825: _Sp_counted_base<_S_mutex>::_M_release() noexcept 612825: { 612825: 612825: ; 612825: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) 612825: { 612825: _M_release_last_use(); 612825: } 612825: } 612825: 612825: template<> 612825: inline void 612825: _Sp_counted_base<_S_atomic>::_M_release() noexcept 612825: { 612825: ; 612825: 612825: constexpr bool __lock_free 612825: = __atomic_always_lock_free(sizeof(long long), 0) 612825: && __atomic_always_lock_free(sizeof(_Atomic_word), 0); 612825: constexpr bool __double_word 612825: = sizeof(long long) == 2 * sizeof(_Atomic_word); 612825: 612825: 612825: constexpr bool __aligned = __alignof(long long) <= alignof(void*); 612825: if (__lock_free && __double_word && __aligned) 612825: { 612825: constexpr int __wordbits = 8 * sizeof(_Atomic_word); 612825: constexpr int __shiftbits = __double_word ? __wordbits : 0; 612825: constexpr long long __unique_ref = 1LL + (1LL << __shiftbits); 612825: auto __both_counts = reinterpret_cast(&_M_use_count); 612825: 612825: ; 612825: if (__atomic_load_n(__both_counts, 2) == __unique_ref) 612825: { 612825: 612825: 612825: 612825: 612825: _M_weak_count = _M_use_count = 0; 612825: ; 612825: ; 612825: _M_dispose(); 612825: _M_destroy(); 612825: return; 612825: } 612825: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) 612825: [[__unlikely__]] 612825: { 612825: _M_release_last_use_cold(); 612825: return; 612825: } 612825: } 612825: else 612825: 612825: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) 612825: { 612825: _M_release_last_use(); 612825: } 612825: } 612825: 612825: template<> 612825: inline void 612825: _Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept 612825: { ++_M_weak_count; } 612825: 612825: template<> 612825: inline void 612825: _Sp_counted_base<_S_single>::_M_weak_release() noexcept 612825: { 612825: if (--_M_weak_count == 0) 612825: _M_destroy(); 612825: } 612825: 612825: template<> 612825: inline long 612825: _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept 612825: { return _M_use_count; } 612825: 612825: 612825: 612825: template 612825: class __shared_ptr; 612825: 612825: template 612825: class __weak_ptr; 612825: 612825: template 612825: class __enable_shared_from_this; 612825: 612825: template 612825: class shared_ptr; 612825: 612825: template 612825: class weak_ptr; 612825: 612825: template 612825: struct owner_less; 612825: 612825: template 612825: class enable_shared_from_this; 612825: 612825: template<_Lock_policy _Lp = __default_lock_policy> 612825: class __weak_count; 612825: 612825: template<_Lock_policy _Lp = __default_lock_policy> 612825: class __shared_count; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: class _Sp_counted_ptr final : public _Sp_counted_base<_Lp> 612825: { 612825: public: 612825: explicit 612825: _Sp_counted_ptr(_Ptr __p) noexcept 612825: : _M_ptr(__p) { } 612825: 612825: virtual void 612825: _M_dispose() noexcept 612825: { delete _M_ptr; } 612825: 612825: virtual void 612825: _M_destroy() noexcept 612825: { delete this; } 612825: 612825: virtual void* 612825: _M_get_deleter(const std::type_info&) noexcept 612825: { return nullptr; } 612825: 612825: _Sp_counted_ptr(const _Sp_counted_ptr&) = delete; 612825: _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete; 612825: 612825: private: 612825: _Ptr _M_ptr; 612825: }; 612825: 612825: template<> 612825: inline void 612825: _Sp_counted_ptr::_M_dispose() noexcept { } 612825: 612825: template<> 612825: inline void 612825: _Sp_counted_ptr::_M_dispose() noexcept { } 612825: 612825: template<> 612825: inline void 612825: _Sp_counted_ptr::_M_dispose() noexcept { } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct _Sp_ebo_helper; 612825: 612825: 612825: template 612825: struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp 612825: { 612825: explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { } 612825: explicit _Sp_ebo_helper(_Tp&& __tp) : _Tp(std::move(__tp)) { } 612825: 612825: static _Tp& 612825: _S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); } 612825: }; 612825: 612825: 612825: template 612825: struct _Sp_ebo_helper<_Nm, _Tp, false> 612825: { 612825: explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { } 612825: explicit _Sp_ebo_helper(_Tp&& __tp) : _M_tp(std::move(__tp)) { } 612825: 612825: static _Tp& 612825: _S_get(_Sp_ebo_helper& __eboh) 612825: { return __eboh._M_tp; } 612825: 612825: private: 612825: _Tp _M_tp; 612825: }; 612825: 612825: 612825: template 612825: class _Sp_counted_deleter final : public _Sp_counted_base<_Lp> 612825: { 612825: class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc> 612825: { 612825: typedef _Sp_ebo_helper<0, _Deleter> _Del_base; 612825: typedef _Sp_ebo_helper<1, _Alloc> _Alloc_base; 612825: 612825: public: 612825: _Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept 612825: : _Del_base(std::move(__d)), _Alloc_base(__a), _M_ptr(__p) 612825: { } 612825: 612825: _Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); } 612825: _Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); } 612825: 612825: _Ptr _M_ptr; 612825: }; 612825: 612825: public: 612825: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>; 612825: 612825: 612825: _Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept 612825: : _M_impl(__p, std::move(__d), _Alloc()) { } 612825: 612825: 612825: _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept 612825: : _M_impl(__p, std::move(__d), __a) { } 612825: 612825: ~_Sp_counted_deleter() noexcept { } 612825: 612825: virtual void 612825: _M_dispose() noexcept 612825: { _M_impl._M_del()(_M_impl._M_ptr); } 612825: 612825: virtual void 612825: _M_destroy() noexcept 612825: { 612825: __allocator_type __a(_M_impl._M_alloc()); 612825: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; 612825: this->~_Sp_counted_deleter(); 612825: } 612825: 612825: virtual void* 612825: _M_get_deleter(const type_info& __ti [[__gnu__::__unused__]]) noexcept 612825: { 612825: 612825: 612825: 612825: return __ti == typeid(_Deleter) 612825: ? std::__addressof(_M_impl._M_del()) 612825: : nullptr; 612825: 612825: 612825: 612825: } 612825: 612825: private: 612825: _Impl _M_impl; 612825: }; 612825: 612825: 612825: 612825: struct _Sp_make_shared_tag 612825: { 612825: private: 612825: template 612825: friend class _Sp_counted_ptr_inplace; 612825: 612825: static const type_info& 612825: _S_ti() noexcept __attribute__ ((__visibility__ ("default"))) 612825: { 612825: alignas(type_info) static constexpr char __tag[sizeof(type_info)] = { }; 612825: return reinterpret_cast(__tag); 612825: } 612825: 612825: static bool _S_eq(const type_info&) noexcept; 612825: }; 612825: 612825: template 612825: struct _Sp_alloc_shared_tag 612825: { 612825: const _Alloc& _M_a; 612825: }; 612825: 612825: template 612825: class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp> 612825: { 612825: class _Impl : _Sp_ebo_helper<0, _Alloc> 612825: { 612825: typedef _Sp_ebo_helper<0, _Alloc> _A_base; 612825: 612825: public: 612825: explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { } 612825: 612825: _Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); } 612825: 612825: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; 612825: }; 612825: 612825: public: 612825: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>; 612825: 612825: 612825: template 612825: _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) 612825: : _M_impl(__a) 612825: { 612825: 612825: 612825: allocator_traits<_Alloc>::construct(__a, _M_ptr(), 612825: std::forward<_Args>(__args)...); 612825: } 612825: 612825: ~_Sp_counted_ptr_inplace() noexcept { } 612825: 612825: virtual void 612825: _M_dispose() noexcept 612825: { 612825: allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr()); 612825: } 612825: 612825: 612825: virtual void 612825: _M_destroy() noexcept 612825: { 612825: __allocator_type __a(_M_impl._M_alloc()); 612825: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; 612825: this->~_Sp_counted_ptr_inplace(); 612825: } 612825: 612825: private: 612825: friend class __shared_count<_Lp>; 612825: 612825: 612825: 612825: virtual void* 612825: _M_get_deleter(const std::type_info& __ti) noexcept override 612825: { 612825: auto __ptr = const_cast::type*>(_M_ptr()); 612825: 612825: 612825: 612825: 612825: if (&__ti == &_Sp_make_shared_tag::_S_ti() 612825: || 612825: 612825: __ti == typeid(_Sp_make_shared_tag) 612825: 612825: 612825: 612825: ) 612825: return __ptr; 612825: return nullptr; 612825: } 612825: 612825: _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); } 612825: 612825: _Impl _M_impl; 612825: }; 612825: # 886 "/usr/include/c++/12/bits/shared_ptr_base.h" 3 612825: struct __sp_array_delete 612825: { 612825: template 612825: void operator()(_Yp* __p) const { delete[] __p; } 612825: }; 612825: 612825: template<_Lock_policy _Lp> 612825: class __shared_count 612825: { 612825: 612825: template 612825: struct __not_alloc_shared_tag { using type = void; }; 612825: 612825: template 612825: struct __not_alloc_shared_tag<_Sp_alloc_shared_tag<_Tp>> { }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: public: 612825: constexpr __shared_count() noexcept : _M_pi(0) 612825: { } 612825: 612825: template 612825: explicit 612825: __shared_count(_Ptr __p) : _M_pi(0) 612825: { 612825: try 612825: { 612825: _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p); 612825: } 612825: catch(...) 612825: { 612825: delete __p; 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: __shared_count(_Ptr __p, false_type) 612825: : __shared_count(__p) 612825: { } 612825: 612825: template 612825: __shared_count(_Ptr __p, true_type) 612825: : __shared_count(__p, __sp_array_delete{}, allocator()) 612825: { } 612825: 612825: template::type> 612825: __shared_count(_Ptr __p, _Deleter __d) 612825: : __shared_count(__p, std::move(__d), allocator()) 612825: { } 612825: 612825: template::type> 612825: __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0) 612825: { 612825: typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type; 612825: try 612825: { 612825: typename _Sp_cd_type::__allocator_type __a2(__a); 612825: auto __guard = std::__allocate_guarded(__a2); 612825: _Sp_cd_type* __mem = __guard.get(); 612825: ::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a)); 612825: _M_pi = __mem; 612825: __guard = nullptr; 612825: } 612825: catch(...) 612825: { 612825: __d(__p); 612825: throw; 612825: } 612825: } 612825: 612825: template 612825: __shared_count(_Tp*& __p, _Sp_alloc_shared_tag<_Alloc> __a, 612825: _Args&&... __args) 612825: { 612825: typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type; 612825: typename _Sp_cp_type::__allocator_type __a2(__a._M_a); 612825: auto __guard = std::__allocate_guarded(__a2); 612825: _Sp_cp_type* __mem = __guard.get(); 612825: auto __pi = ::new (__mem) 612825: _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...); 612825: __guard = nullptr; 612825: _M_pi = __pi; 612825: __p = __pi->_M_ptr(); 612825: } 612825: # 1024 "/usr/include/c++/12/bits/shared_ptr_base.h" 3 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: template 612825: explicit 612825: __shared_count(std::auto_ptr<_Tp>&& __r); 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: 612825: template 612825: explicit 612825: __shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0) 612825: { 612825: 612825: 612825: if (__r.get() == nullptr) 612825: return; 612825: 612825: using _Ptr = typename unique_ptr<_Tp, _Del>::pointer; 612825: using _Del2 = __conditional_t::value, 612825: reference_wrapper::type>, 612825: _Del>; 612825: using _Sp_cd_type 612825: = _Sp_counted_deleter<_Ptr, _Del2, allocator, _Lp>; 612825: using _Alloc = allocator<_Sp_cd_type>; 612825: using _Alloc_traits = allocator_traits<_Alloc>; 612825: _Alloc __a; 612825: _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1); 612825: 612825: 612825: 612825: _Alloc_traits::construct(__a, __mem, __r.release(), 612825: std::forward<_Del>(__r.get_deleter())); 612825: _M_pi = __mem; 612825: } 612825: 612825: 612825: explicit __shared_count(const __weak_count<_Lp>& __r); 612825: 612825: 612825: explicit 612825: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) noexcept; 612825: 612825: ~__shared_count() noexcept 612825: { 612825: if (_M_pi != nullptr) 612825: _M_pi->_M_release(); 612825: } 612825: 612825: __shared_count(const __shared_count& __r) noexcept 612825: : _M_pi(__r._M_pi) 612825: { 612825: if (_M_pi != nullptr) 612825: _M_pi->_M_add_ref_copy(); 612825: } 612825: 612825: __shared_count& 612825: operator=(const __shared_count& __r) noexcept 612825: { 612825: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 612825: if (__tmp != _M_pi) 612825: { 612825: if (__tmp != nullptr) 612825: __tmp->_M_add_ref_copy(); 612825: if (_M_pi != nullptr) 612825: _M_pi->_M_release(); 612825: _M_pi = __tmp; 612825: } 612825: return *this; 612825: } 612825: 612825: void 612825: _M_swap(__shared_count& __r) noexcept 612825: { 612825: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 612825: __r._M_pi = _M_pi; 612825: _M_pi = __tmp; 612825: } 612825: 612825: long 612825: _M_get_use_count() const noexcept 612825: { return _M_pi ? _M_pi->_M_get_use_count() : 0; } 612825: 612825: bool 612825: _M_unique() const noexcept 612825: { return this->_M_get_use_count() == 1; } 612825: 612825: void* 612825: _M_get_deleter(const std::type_info& __ti) const noexcept 612825: { return _M_pi ? _M_pi->_M_get_deleter(__ti) : nullptr; } 612825: 612825: bool 612825: _M_less(const __shared_count& __rhs) const noexcept 612825: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 612825: 612825: bool 612825: _M_less(const __weak_count<_Lp>& __rhs) const noexcept 612825: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 612825: 612825: 612825: friend inline bool 612825: operator==(const __shared_count& __a, const __shared_count& __b) noexcept 612825: { return __a._M_pi == __b._M_pi; } 612825: 612825: private: 612825: friend class __weak_count<_Lp>; 612825: 612825: 612825: 612825: 612825: _Sp_counted_base<_Lp>* _M_pi; 612825: }; 612825: 612825: 612825: template<_Lock_policy _Lp> 612825: class __weak_count 612825: { 612825: public: 612825: constexpr __weak_count() noexcept : _M_pi(nullptr) 612825: { } 612825: 612825: __weak_count(const __shared_count<_Lp>& __r) noexcept 612825: : _M_pi(__r._M_pi) 612825: { 612825: if (_M_pi != nullptr) 612825: _M_pi->_M_weak_add_ref(); 612825: } 612825: 612825: __weak_count(const __weak_count& __r) noexcept 612825: : _M_pi(__r._M_pi) 612825: { 612825: if (_M_pi != nullptr) 612825: _M_pi->_M_weak_add_ref(); 612825: } 612825: 612825: __weak_count(__weak_count&& __r) noexcept 612825: : _M_pi(__r._M_pi) 612825: { __r._M_pi = nullptr; } 612825: 612825: ~__weak_count() noexcept 612825: { 612825: if (_M_pi != nullptr) 612825: _M_pi->_M_weak_release(); 612825: } 612825: 612825: __weak_count& 612825: operator=(const __shared_count<_Lp>& __r) noexcept 612825: { 612825: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 612825: if (__tmp != nullptr) 612825: __tmp->_M_weak_add_ref(); 612825: if (_M_pi != nullptr) 612825: _M_pi->_M_weak_release(); 612825: _M_pi = __tmp; 612825: return *this; 612825: } 612825: 612825: __weak_count& 612825: operator=(const __weak_count& __r) noexcept 612825: { 612825: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 612825: if (__tmp != nullptr) 612825: __tmp->_M_weak_add_ref(); 612825: if (_M_pi != nullptr) 612825: _M_pi->_M_weak_release(); 612825: _M_pi = __tmp; 612825: return *this; 612825: } 612825: 612825: __weak_count& 612825: operator=(__weak_count&& __r) noexcept 612825: { 612825: if (_M_pi != nullptr) 612825: _M_pi->_M_weak_release(); 612825: _M_pi = __r._M_pi; 612825: __r._M_pi = nullptr; 612825: return *this; 612825: } 612825: 612825: void 612825: _M_swap(__weak_count& __r) noexcept 612825: { 612825: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; 612825: __r._M_pi = _M_pi; 612825: _M_pi = __tmp; 612825: } 612825: 612825: long 612825: _M_get_use_count() const noexcept 612825: { return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; } 612825: 612825: bool 612825: _M_less(const __weak_count& __rhs) const noexcept 612825: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 612825: 612825: bool 612825: _M_less(const __shared_count<_Lp>& __rhs) const noexcept 612825: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } 612825: 612825: 612825: friend inline bool 612825: operator==(const __weak_count& __a, const __weak_count& __b) noexcept 612825: { return __a._M_pi == __b._M_pi; } 612825: 612825: private: 612825: friend class __shared_count<_Lp>; 612825: 612825: 612825: 612825: 612825: _Sp_counted_base<_Lp>* _M_pi; 612825: }; 612825: 612825: 612825: template<_Lock_policy _Lp> 612825: inline 612825: __shared_count<_Lp>::__shared_count(const __weak_count<_Lp>& __r) 612825: : _M_pi(__r._M_pi) 612825: { 612825: if (_M_pi == nullptr || !_M_pi->_M_add_ref_lock_nothrow()) 612825: __throw_bad_weak_ptr(); 612825: } 612825: 612825: 612825: template<_Lock_policy _Lp> 612825: inline 612825: __shared_count<_Lp>:: 612825: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) noexcept 612825: : _M_pi(__r._M_pi) 612825: { 612825: if (_M_pi && !_M_pi->_M_add_ref_lock_nothrow()) 612825: _M_pi = nullptr; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: struct __sp_compatible_with 612825: : false_type 612825: { }; 612825: 612825: template 612825: struct __sp_compatible_with<_Yp*, _Tp*> 612825: : is_convertible<_Yp*, _Tp*>::type 612825: { }; 612825: 612825: template 612825: struct __sp_compatible_with<_Up(*)[_Nm], _Up(*)[]> 612825: : true_type 612825: { }; 612825: 612825: template 612825: struct __sp_compatible_with<_Up(*)[_Nm], const _Up(*)[]> 612825: : true_type 612825: { }; 612825: 612825: template 612825: struct __sp_compatible_with<_Up(*)[_Nm], volatile _Up(*)[]> 612825: : true_type 612825: { }; 612825: 612825: template 612825: struct __sp_compatible_with<_Up(*)[_Nm], const volatile _Up(*)[]> 612825: : true_type 612825: { }; 612825: 612825: 612825: template 612825: struct __sp_is_constructible_arrN 612825: : false_type 612825: { }; 612825: 612825: template 612825: struct __sp_is_constructible_arrN<_Up, _Nm, _Yp, __void_t<_Yp[_Nm]>> 612825: : is_convertible<_Yp(*)[_Nm], _Up(*)[_Nm]>::type 612825: { }; 612825: 612825: 612825: template 612825: struct __sp_is_constructible_arr 612825: : false_type 612825: { }; 612825: 612825: template 612825: struct __sp_is_constructible_arr<_Up, _Yp, __void_t<_Yp[]>> 612825: : is_convertible<_Yp(*)[], _Up(*)[]>::type 612825: { }; 612825: 612825: 612825: template 612825: struct __sp_is_constructible; 612825: 612825: 612825: template 612825: struct __sp_is_constructible<_Up[_Nm], _Yp> 612825: : __sp_is_constructible_arrN<_Up, _Nm, _Yp>::type 612825: { }; 612825: 612825: 612825: template 612825: struct __sp_is_constructible<_Up[], _Yp> 612825: : __sp_is_constructible_arr<_Up, _Yp>::type 612825: { }; 612825: 612825: 612825: template 612825: struct __sp_is_constructible 612825: : is_convertible<_Yp*, _Tp*>::type 612825: { }; 612825: 612825: 612825: 612825: template::value, bool = is_void<_Tp>::value> 612825: class __shared_ptr_access 612825: { 612825: public: 612825: using element_type = _Tp; 612825: 612825: element_type& 612825: operator*() const noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(_M_get() != nullptr)) __builtin_unreachable(); } while (false); 612825: return *_M_get(); 612825: } 612825: 612825: element_type* 612825: operator->() const noexcept 612825: { 612825: ; 612825: return _M_get(); 612825: } 612825: 612825: private: 612825: element_type* 612825: _M_get() const noexcept 612825: { return static_cast*>(this)->get(); } 612825: }; 612825: 612825: 612825: template 612825: class __shared_ptr_access<_Tp, _Lp, false, true> 612825: { 612825: public: 612825: using element_type = _Tp; 612825: 612825: element_type* 612825: operator->() const noexcept 612825: { 612825: auto __ptr = static_cast*>(this)->get(); 612825: ; 612825: return __ptr; 612825: } 612825: }; 612825: 612825: 612825: template 612825: class __shared_ptr_access<_Tp, _Lp, true, false> 612825: { 612825: public: 612825: using element_type = typename remove_extent<_Tp>::type; 612825: 612825: 612825: [[__deprecated__("shared_ptr::operator* is absent from C++17")]] 612825: element_type& 612825: operator*() const noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(_M_get() != nullptr)) __builtin_unreachable(); } while (false); 612825: return *_M_get(); 612825: } 612825: 612825: [[__deprecated__("shared_ptr::operator-> is absent from C++17")]] 612825: element_type* 612825: operator->() const noexcept 612825: { 612825: ; 612825: return _M_get(); 612825: } 612825: 612825: 612825: element_type& 612825: operator[](ptrdiff_t __i) const noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(_M_get() != nullptr)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(!extent<_Tp>::value || __i < extent<_Tp>::value)) __builtin_unreachable(); } while (false); 612825: return _M_get()[__i]; 612825: } 612825: 612825: private: 612825: element_type* 612825: _M_get() const noexcept 612825: { return static_cast*>(this)->get(); } 612825: }; 612825: 612825: template 612825: class __shared_ptr 612825: : public __shared_ptr_access<_Tp, _Lp> 612825: { 612825: public: 612825: using element_type = typename remove_extent<_Tp>::type; 612825: 612825: private: 612825: 612825: template 612825: using _SafeConv 612825: = typename enable_if<__sp_is_constructible<_Tp, _Yp>::value>::type; 612825: 612825: 612825: template 612825: using _Compatible = typename 612825: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; 612825: 612825: 612825: template 612825: using _Assignable = _Compatible<_Yp, __shared_ptr&>; 612825: 612825: 612825: template::pointer> 612825: using _UniqCompatible = __enable_if_t<__and_< 612825: __sp_compatible_with<_Yp*, _Tp*>, 612825: is_convertible<_Ptr, element_type*>, 612825: is_move_constructible<_Del> 612825: >::value, _Res>; 612825: 612825: 612825: template 612825: using _UniqAssignable = _UniqCompatible<_Yp, _Del, __shared_ptr&>; 612825: 612825: public: 612825: 612825: 612825: 612825: 612825: 612825: constexpr __shared_ptr() noexcept 612825: : _M_ptr(0), _M_refcount() 612825: { } 612825: 612825: template> 612825: explicit 612825: __shared_ptr(_Yp* __p) 612825: : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type()) 612825: { 612825: static_assert( !is_void<_Yp>::value, "incomplete type" ); 612825: static_assert( sizeof(_Yp) > 0, "incomplete type" ); 612825: _M_enable_shared_from_this_with(__p); 612825: } 612825: 612825: template> 612825: __shared_ptr(_Yp* __p, _Deleter __d) 612825: : _M_ptr(__p), _M_refcount(__p, std::move(__d)) 612825: { 612825: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, 612825: "deleter expression d(p) is well-formed"); 612825: _M_enable_shared_from_this_with(__p); 612825: } 612825: 612825: template> 612825: __shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 612825: : _M_ptr(__p), _M_refcount(__p, std::move(__d), std::move(__a)) 612825: { 612825: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, 612825: "deleter expression d(p) is well-formed"); 612825: _M_enable_shared_from_this_with(__p); 612825: } 612825: 612825: template 612825: __shared_ptr(nullptr_t __p, _Deleter __d) 612825: : _M_ptr(0), _M_refcount(__p, std::move(__d)) 612825: { } 612825: 612825: template 612825: __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 612825: : _M_ptr(0), _M_refcount(__p, std::move(__d), std::move(__a)) 612825: { } 612825: 612825: 612825: template 612825: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r, 612825: element_type* __p) noexcept 612825: : _M_ptr(__p), _M_refcount(__r._M_refcount) 612825: { } 612825: 612825: 612825: template 612825: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r, 612825: element_type* __p) noexcept 612825: : _M_ptr(__p), _M_refcount() 612825: { 612825: _M_refcount._M_swap(__r._M_refcount); 612825: __r._M_ptr = nullptr; 612825: } 612825: 612825: __shared_ptr(const __shared_ptr&) noexcept = default; 612825: __shared_ptr& operator=(const __shared_ptr&) noexcept = default; 612825: ~__shared_ptr() = default; 612825: 612825: template> 612825: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept 612825: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) 612825: { } 612825: 612825: __shared_ptr(__shared_ptr&& __r) noexcept 612825: : _M_ptr(__r._M_ptr), _M_refcount() 612825: { 612825: _M_refcount._M_swap(__r._M_refcount); 612825: __r._M_ptr = nullptr; 612825: } 612825: 612825: template> 612825: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r) noexcept 612825: : _M_ptr(__r._M_ptr), _M_refcount() 612825: { 612825: _M_refcount._M_swap(__r._M_refcount); 612825: __r._M_ptr = nullptr; 612825: } 612825: 612825: template> 612825: explicit __shared_ptr(const __weak_ptr<_Yp, _Lp>& __r) 612825: : _M_refcount(__r._M_refcount) 612825: { 612825: 612825: 612825: _M_ptr = __r._M_ptr; 612825: } 612825: 612825: 612825: template> 612825: __shared_ptr(unique_ptr<_Yp, _Del>&& __r) 612825: : _M_ptr(__r.get()), _M_refcount() 612825: { 612825: auto __raw = __to_address(__r.get()); 612825: _M_refcount = __shared_count<_Lp>(std::move(__r)); 612825: _M_enable_shared_from_this_with(__raw); 612825: } 612825: 612825: 612825: protected: 612825: 612825: template>, is_array<_Tp1>, 612825: is_convertible::pointer, _Tp*> 612825: >::value, bool>::type = true> 612825: __shared_ptr(unique_ptr<_Tp1, _Del>&& __r, __sp_array_delete) 612825: : _M_ptr(__r.get()), _M_refcount() 612825: { 612825: auto __raw = __to_address(__r.get()); 612825: _M_refcount = __shared_count<_Lp>(std::move(__r)); 612825: _M_enable_shared_from_this_with(__raw); 612825: } 612825: public: 612825: 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: 612825: template> 612825: __shared_ptr(auto_ptr<_Yp>&& __r); 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { } 612825: 612825: template 612825: _Assignable<_Yp> 612825: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept 612825: { 612825: _M_ptr = __r._M_ptr; 612825: _M_refcount = __r._M_refcount; 612825: return *this; 612825: } 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: template 612825: _Assignable<_Yp> 612825: operator=(auto_ptr<_Yp>&& __r) 612825: { 612825: __shared_ptr(std::move(__r)).swap(*this); 612825: return *this; 612825: } 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: __shared_ptr& 612825: operator=(__shared_ptr&& __r) noexcept 612825: { 612825: __shared_ptr(std::move(__r)).swap(*this); 612825: return *this; 612825: } 612825: 612825: template 612825: _Assignable<_Yp> 612825: operator=(__shared_ptr<_Yp, _Lp>&& __r) noexcept 612825: { 612825: __shared_ptr(std::move(__r)).swap(*this); 612825: return *this; 612825: } 612825: 612825: template 612825: _UniqAssignable<_Yp, _Del> 612825: operator=(unique_ptr<_Yp, _Del>&& __r) 612825: { 612825: __shared_ptr(std::move(__r)).swap(*this); 612825: return *this; 612825: } 612825: 612825: void 612825: reset() noexcept 612825: { __shared_ptr().swap(*this); } 612825: 612825: template 612825: _SafeConv<_Yp> 612825: reset(_Yp* __p) 612825: { 612825: 612825: do { if (std::__is_constant_evaluated() && !bool(__p == nullptr || __p != _M_ptr)) __builtin_unreachable(); } while (false); 612825: __shared_ptr(__p).swap(*this); 612825: } 612825: 612825: template 612825: _SafeConv<_Yp> 612825: reset(_Yp* __p, _Deleter __d) 612825: { __shared_ptr(__p, std::move(__d)).swap(*this); } 612825: 612825: template 612825: _SafeConv<_Yp> 612825: reset(_Yp* __p, _Deleter __d, _Alloc __a) 612825: { __shared_ptr(__p, std::move(__d), std::move(__a)).swap(*this); } 612825: 612825: 612825: element_type* 612825: get() const noexcept 612825: { return _M_ptr; } 612825: 612825: 612825: explicit operator bool() const noexcept 612825: { return _M_ptr != nullptr; } 612825: 612825: 612825: bool 612825: unique() const noexcept 612825: { return _M_refcount._M_unique(); } 612825: 612825: 612825: long 612825: use_count() const noexcept 612825: { return _M_refcount._M_get_use_count(); } 612825: 612825: 612825: void 612825: swap(__shared_ptr<_Tp, _Lp>& __other) noexcept 612825: { 612825: std::swap(_M_ptr, __other._M_ptr); 612825: _M_refcount._M_swap(__other._M_refcount); 612825: } 612825: # 1697 "/usr/include/c++/12/bits/shared_ptr_base.h" 3 612825: template 612825: bool 612825: owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const noexcept 612825: { return _M_refcount._M_less(__rhs._M_refcount); } 612825: 612825: template 612825: bool 612825: owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept 612825: { return _M_refcount._M_less(__rhs._M_refcount); } 612825: 612825: 612825: protected: 612825: 612825: template 612825: __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) 612825: : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...) 612825: { _M_enable_shared_from_this_with(_M_ptr); } 612825: 612825: template 612825: friend __shared_ptr<_Tp1, _Lp1> 612825: __allocate_shared(const _Alloc& __a, _Args&&... __args); 612825: # 1731 "/usr/include/c++/12/bits/shared_ptr_base.h" 3 612825: __shared_ptr(const __weak_ptr<_Tp, _Lp>& __r, std::nothrow_t) noexcept 612825: : _M_refcount(__r._M_refcount, std::nothrow) 612825: { 612825: _M_ptr = _M_refcount._M_get_use_count() ? __r._M_ptr : nullptr; 612825: } 612825: 612825: friend class __weak_ptr<_Tp, _Lp>; 612825: 612825: private: 612825: 612825: template 612825: using __esft_base_t = decltype(__enable_shared_from_this_base( 612825: std::declval&>(), 612825: std::declval<_Yp*>())); 612825: 612825: 612825: template 612825: struct __has_esft_base 612825: : false_type { }; 612825: 612825: template 612825: struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> 612825: : __not_> { }; 612825: 612825: template::type> 612825: typename enable_if<__has_esft_base<_Yp2>::value>::type 612825: _M_enable_shared_from_this_with(_Yp* __p) noexcept 612825: { 612825: if (auto __base = __enable_shared_from_this_base(_M_refcount, __p)) 612825: __base->_M_weak_assign(const_cast<_Yp2*>(__p), _M_refcount); 612825: } 612825: 612825: template::type> 612825: typename enable_if::value>::type 612825: _M_enable_shared_from_this_with(_Yp*) noexcept 612825: { } 612825: 612825: void* 612825: _M_get_deleter(const std::type_info& __ti) const noexcept 612825: { return _M_refcount._M_get_deleter(__ti); } 612825: 612825: template friend class __shared_ptr; 612825: template friend class __weak_ptr; 612825: 612825: template 612825: friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept; 612825: 612825: template 612825: friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept; 612825: 612825: 612825: 612825: 612825: 612825: element_type* _M_ptr; 612825: __shared_count<_Lp> _M_refcount; 612825: }; 612825: 612825: 612825: 612825: template 612825: inline bool 612825: operator==(const __shared_ptr<_Tp1, _Lp>& __a, 612825: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 612825: { return __a.get() == __b.get(); } 612825: 612825: template 612825: inline bool 612825: operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 612825: { return !__a; } 612825: # 1817 "/usr/include/c++/12/bits/shared_ptr_base.h" 3 612825: template 612825: inline bool 612825: operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 612825: { return !__a; } 612825: 612825: template 612825: inline bool 612825: operator!=(const __shared_ptr<_Tp1, _Lp>& __a, 612825: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 612825: { return __a.get() != __b.get(); } 612825: 612825: template 612825: inline bool 612825: operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 612825: { return (bool)__a; } 612825: 612825: template 612825: inline bool 612825: operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 612825: { return (bool)__a; } 612825: 612825: template 612825: inline bool 612825: operator<(const __shared_ptr<_Tp, _Lp>& __a, 612825: const __shared_ptr<_Up, _Lp>& __b) noexcept 612825: { 612825: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 612825: using _Up_elt = typename __shared_ptr<_Up, _Lp>::element_type; 612825: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; 612825: return less<_Vp>()(__a.get(), __b.get()); 612825: } 612825: 612825: template 612825: inline bool 612825: operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 612825: { 612825: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 612825: return less<_Tp_elt*>()(__a.get(), nullptr); 612825: } 612825: 612825: template 612825: inline bool 612825: operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 612825: { 612825: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; 612825: return less<_Tp_elt*>()(nullptr, __a.get()); 612825: } 612825: 612825: template 612825: inline bool 612825: operator<=(const __shared_ptr<_Tp1, _Lp>& __a, 612825: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 612825: { return !(__b < __a); } 612825: 612825: template 612825: inline bool 612825: operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 612825: { return !(nullptr < __a); } 612825: 612825: template 612825: inline bool 612825: operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 612825: { return !(__a < nullptr); } 612825: 612825: template 612825: inline bool 612825: operator>(const __shared_ptr<_Tp1, _Lp>& __a, 612825: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 612825: { return (__b < __a); } 612825: 612825: template 612825: inline bool 612825: operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 612825: { return nullptr < __a; } 612825: 612825: template 612825: inline bool 612825: operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 612825: { return __a < nullptr; } 612825: 612825: template 612825: inline bool 612825: operator>=(const __shared_ptr<_Tp1, _Lp>& __a, 612825: const __shared_ptr<_Tp2, _Lp>& __b) noexcept 612825: { return !(__a < __b); } 612825: 612825: template 612825: inline bool 612825: operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept 612825: { return !(__a < nullptr); } 612825: 612825: template 612825: inline bool 612825: operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept 612825: { return !(nullptr < __a); } 612825: 612825: 612825: 612825: template 612825: inline void 612825: swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept 612825: { __a.swap(__b); } 612825: # 1927 "/usr/include/c++/12/bits/shared_ptr_base.h" 3 612825: template 612825: inline __shared_ptr<_Tp, _Lp> 612825: static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 612825: { 612825: using _Sp = __shared_ptr<_Tp, _Lp>; 612825: return _Sp(__r, static_cast(__r.get())); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline __shared_ptr<_Tp, _Lp> 612825: const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 612825: { 612825: using _Sp = __shared_ptr<_Tp, _Lp>; 612825: return _Sp(__r, const_cast(__r.get())); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline __shared_ptr<_Tp, _Lp> 612825: dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept 612825: { 612825: using _Sp = __shared_ptr<_Tp, _Lp>; 612825: if (auto* __p = dynamic_cast(__r.get())) 612825: return _Sp(__r, __p); 612825: return _Sp(); 612825: } 612825: # 1973 "/usr/include/c++/12/bits/shared_ptr_base.h" 3 612825: template 612825: class __weak_ptr 612825: { 612825: template 612825: using _Compatible = typename 612825: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; 612825: 612825: 612825: template 612825: using _Assignable = _Compatible<_Yp, __weak_ptr&>; 612825: 612825: public: 612825: using element_type = typename remove_extent<_Tp>::type; 612825: 612825: constexpr __weak_ptr() noexcept 612825: : _M_ptr(nullptr), _M_refcount() 612825: { } 612825: 612825: __weak_ptr(const __weak_ptr&) noexcept = default; 612825: 612825: ~__weak_ptr() = default; 612825: # 2009 "/usr/include/c++/12/bits/shared_ptr_base.h" 3 612825: template> 612825: __weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept 612825: : _M_refcount(__r._M_refcount) 612825: { _M_ptr = __r.lock().get(); } 612825: 612825: template> 612825: __weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept 612825: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) 612825: { } 612825: 612825: __weak_ptr(__weak_ptr&& __r) noexcept 612825: : _M_ptr(__r._M_ptr), _M_refcount(std::move(__r._M_refcount)) 612825: { __r._M_ptr = nullptr; } 612825: 612825: template> 612825: __weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept 612825: : _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount)) 612825: { __r._M_ptr = nullptr; } 612825: 612825: __weak_ptr& 612825: operator=(const __weak_ptr& __r) noexcept = default; 612825: 612825: template 612825: _Assignable<_Yp> 612825: operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept 612825: { 612825: _M_ptr = __r.lock().get(); 612825: _M_refcount = __r._M_refcount; 612825: return *this; 612825: } 612825: 612825: template 612825: _Assignable<_Yp> 612825: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept 612825: { 612825: _M_ptr = __r._M_ptr; 612825: _M_refcount = __r._M_refcount; 612825: return *this; 612825: } 612825: 612825: __weak_ptr& 612825: operator=(__weak_ptr&& __r) noexcept 612825: { 612825: _M_ptr = __r._M_ptr; 612825: _M_refcount = std::move(__r._M_refcount); 612825: __r._M_ptr = nullptr; 612825: return *this; 612825: } 612825: 612825: template 612825: _Assignable<_Yp> 612825: operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept 612825: { 612825: _M_ptr = __r.lock().get(); 612825: _M_refcount = std::move(__r._M_refcount); 612825: __r._M_ptr = nullptr; 612825: return *this; 612825: } 612825: 612825: __shared_ptr<_Tp, _Lp> 612825: lock() const noexcept 612825: { return __shared_ptr(*this, std::nothrow); } 612825: 612825: long 612825: use_count() const noexcept 612825: { return _M_refcount._M_get_use_count(); } 612825: 612825: bool 612825: expired() const noexcept 612825: { return _M_refcount._M_get_use_count() == 0; } 612825: 612825: template 612825: bool 612825: owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const noexcept 612825: { return _M_refcount._M_less(__rhs._M_refcount); } 612825: 612825: template 612825: bool 612825: owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const noexcept 612825: { return _M_refcount._M_less(__rhs._M_refcount); } 612825: 612825: void 612825: reset() noexcept 612825: { __weak_ptr().swap(*this); } 612825: 612825: void 612825: swap(__weak_ptr& __s) noexcept 612825: { 612825: std::swap(_M_ptr, __s._M_ptr); 612825: _M_refcount._M_swap(__s._M_refcount); 612825: } 612825: 612825: private: 612825: 612825: void 612825: _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept 612825: { 612825: if (use_count() == 0) 612825: { 612825: _M_ptr = __ptr; 612825: _M_refcount = __refcount; 612825: } 612825: } 612825: 612825: template friend class __shared_ptr; 612825: template friend class __weak_ptr; 612825: friend class __enable_shared_from_this<_Tp, _Lp>; 612825: friend class enable_shared_from_this<_Tp>; 612825: 612825: 612825: 612825: 612825: element_type* _M_ptr; 612825: __weak_count<_Lp> _M_refcount; 612825: }; 612825: 612825: 612825: template 612825: inline void 612825: swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept 612825: { __a.swap(__b); } 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: template 612825: struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool> 612825: { 612825: bool 612825: operator()(const _Tp& __lhs, const _Tp& __rhs) const noexcept 612825: { return __lhs.owner_before(__rhs); } 612825: 612825: bool 612825: operator()(const _Tp& __lhs, const _Tp1& __rhs) const noexcept 612825: { return __lhs.owner_before(__rhs); } 612825: 612825: bool 612825: operator()(const _Tp1& __lhs, const _Tp& __rhs) const noexcept 612825: { return __lhs.owner_before(__rhs); } 612825: }; 612825: #pragma GCC diagnostic pop 612825: 612825: template<> 612825: struct _Sp_owner_less 612825: { 612825: template 612825: auto 612825: operator()(const _Tp& __lhs, const _Up& __rhs) const noexcept 612825: -> decltype(__lhs.owner_before(__rhs)) 612825: { return __lhs.owner_before(__rhs); } 612825: 612825: using is_transparent = void; 612825: }; 612825: 612825: template 612825: struct owner_less<__shared_ptr<_Tp, _Lp>> 612825: : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>> 612825: { }; 612825: 612825: template 612825: struct owner_less<__weak_ptr<_Tp, _Lp>> 612825: : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>> 612825: { }; 612825: 612825: 612825: template 612825: class __enable_shared_from_this 612825: { 612825: protected: 612825: constexpr __enable_shared_from_this() noexcept { } 612825: 612825: __enable_shared_from_this(const __enable_shared_from_this&) noexcept { } 612825: 612825: __enable_shared_from_this& 612825: operator=(const __enable_shared_from_this&) noexcept 612825: { return *this; } 612825: 612825: ~__enable_shared_from_this() { } 612825: 612825: public: 612825: __shared_ptr<_Tp, _Lp> 612825: shared_from_this() 612825: { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } 612825: 612825: __shared_ptr 612825: shared_from_this() const 612825: { return __shared_ptr(this->_M_weak_this); } 612825: # 2206 "/usr/include/c++/12/bits/shared_ptr_base.h" 3 612825: private: 612825: template 612825: void 612825: _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept 612825: { _M_weak_this._M_assign(__p, __n); } 612825: 612825: friend const __enable_shared_from_this* 612825: __enable_shared_from_this_base(const __shared_count<_Lp>&, 612825: const __enable_shared_from_this* __p) 612825: { return __p; } 612825: 612825: template 612825: friend class __shared_ptr; 612825: 612825: mutable __weak_ptr<_Tp, _Lp> _M_weak_this; 612825: }; 612825: 612825: template 612825: inline __shared_ptr<_Tp, _Lp> 612825: __allocate_shared(const _Alloc& __a, _Args&&... __args) 612825: { 612825: static_assert(!is_array<_Tp>::value, "make_shared not supported"); 612825: 612825: return __shared_ptr<_Tp, _Lp>(_Sp_alloc_shared_tag<_Alloc>{__a}, 612825: std::forward<_Args>(__args)...); 612825: } 612825: 612825: template 612825: inline __shared_ptr<_Tp, _Lp> 612825: __make_shared(_Args&&... __args) 612825: { 612825: typedef typename std::remove_const<_Tp>::type _Tp_nc; 612825: return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(), 612825: std::forward<_Args>(__args)...); 612825: } 612825: 612825: 612825: template 612825: struct hash<__shared_ptr<_Tp, _Lp>> 612825: : public __hash_base> 612825: { 612825: size_t 612825: operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept 612825: { 612825: return hash::element_type*>()( 612825: __s.get()); 612825: } 612825: }; 612825: 612825: 612825: } 612825: # 54 "/usr/include/c++/12/bits/shared_ptr.h" 2 3 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 68 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: inline std::basic_ostream<_Ch, _Tr>& 612825: operator<<(std::basic_ostream<_Ch, _Tr>& __os, 612825: const __shared_ptr<_Tp, _Lp>& __p) 612825: { 612825: __os << __p.get(); 612825: return __os; 612825: } 612825: 612825: template 612825: inline _Del* 612825: get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept 612825: { 612825: 612825: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); 612825: 612825: 612825: 612825: } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline _Del* 612825: get_deleter(const shared_ptr<_Tp>& __p) noexcept 612825: { 612825: 612825: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); 612825: 612825: 612825: 612825: } 612825: # 111 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: using _NonArray = __enable_if_t::value, _Tp>; 612825: # 174 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: class shared_ptr : public __shared_ptr<_Tp> 612825: { 612825: template 612825: using _Constructible = typename enable_if< 612825: is_constructible<__shared_ptr<_Tp>, _Args...>::value 612825: >::type; 612825: 612825: template 612825: using _Assignable = typename enable_if< 612825: is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr& 612825: >::type; 612825: 612825: public: 612825: 612825: 612825: using element_type = typename __shared_ptr<_Tp>::element_type; 612825: # 202 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } 612825: 612825: shared_ptr(const shared_ptr&) noexcept = default; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template> 612825: explicit 612825: shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } 612825: # 229 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template> 612825: shared_ptr(_Yp* __p, _Deleter __d) 612825: : __shared_ptr<_Tp>(__p, std::move(__d)) { } 612825: # 247 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: shared_ptr(nullptr_t __p, _Deleter __d) 612825: : __shared_ptr<_Tp>(__p, std::move(__d)) { } 612825: # 266 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template> 612825: shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 612825: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } 612825: # 286 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 612825: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } 612825: # 310 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept 612825: : __shared_ptr<_Tp>(__r, __p) { } 612825: # 349 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template&>> 612825: shared_ptr(const shared_ptr<_Yp>& __r) noexcept 612825: : __shared_ptr<_Tp>(__r) { } 612825: 612825: 612825: 612825: 612825: 612825: 612825: shared_ptr(shared_ptr&& __r) noexcept 612825: : __shared_ptr<_Tp>(std::move(__r)) { } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template>> 612825: shared_ptr(shared_ptr<_Yp>&& __r) noexcept 612825: : __shared_ptr<_Tp>(std::move(__r)) { } 612825: # 379 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template&>> 612825: explicit shared_ptr(const weak_ptr<_Yp>& __r) 612825: : __shared_ptr<_Tp>(__r) { } 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: template>> 612825: shared_ptr(auto_ptr<_Yp>&& __r); 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: 612825: 612825: template>> 612825: shared_ptr(unique_ptr<_Yp, _Del>&& __r) 612825: : __shared_ptr<_Tp>(std::move(__r)) { } 612825: 612825: 612825: 612825: 612825: 612825: template, __sp_array_delete>* = 0> 612825: shared_ptr(unique_ptr<_Yp, _Del>&& __r) 612825: : __shared_ptr<_Tp>(std::move(__r), __sp_array_delete()) { } 612825: 612825: 612825: 612825: 612825: 612825: 612825: constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } 612825: 612825: shared_ptr& operator=(const shared_ptr&) noexcept = default; 612825: 612825: template 612825: _Assignable&> 612825: operator=(const shared_ptr<_Yp>& __r) noexcept 612825: { 612825: this->__shared_ptr<_Tp>::operator=(__r); 612825: return *this; 612825: } 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: template 612825: _Assignable> 612825: operator=(auto_ptr<_Yp>&& __r) 612825: { 612825: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 612825: return *this; 612825: } 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: shared_ptr& 612825: operator=(shared_ptr&& __r) noexcept 612825: { 612825: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 612825: return *this; 612825: } 612825: 612825: template 612825: _Assignable> 612825: operator=(shared_ptr<_Yp>&& __r) noexcept 612825: { 612825: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 612825: return *this; 612825: } 612825: 612825: template 612825: _Assignable> 612825: operator=(unique_ptr<_Yp, _Del>&& __r) 612825: { 612825: this->__shared_ptr<_Tp>::operator=(std::move(__r)); 612825: return *this; 612825: } 612825: 612825: private: 612825: 612825: template 612825: shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) 612825: : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...) 612825: { } 612825: 612825: template 612825: friend shared_ptr<_NonArray<_Yp>> 612825: allocate_shared(const _Alloc&, _Args&&...); 612825: 612825: template 612825: friend shared_ptr<_NonArray<_Yp>> 612825: make_shared(_Args&&...); 612825: # 535 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) noexcept 612825: : __shared_ptr<_Tp>(__r, std::nothrow) { } 612825: 612825: friend class weak_ptr<_Tp>; 612825: }; 612825: # 553 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: inline bool 612825: operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 612825: { return __a.get() == __b.get(); } 612825: 612825: 612825: template 612825: inline bool 612825: operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 612825: { return !__a; } 612825: # 580 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: inline bool 612825: operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 612825: { return !__a; } 612825: 612825: 612825: template 612825: inline bool 612825: operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 612825: { return __a.get() != __b.get(); } 612825: 612825: 612825: template 612825: inline bool 612825: operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 612825: { return (bool)__a; } 612825: 612825: 612825: template 612825: inline bool 612825: operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 612825: { return (bool)__a; } 612825: 612825: 612825: template 612825: inline bool 612825: operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 612825: { 612825: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 612825: using _Up_elt = typename shared_ptr<_Up>::element_type; 612825: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; 612825: return less<_Vp>()(__a.get(), __b.get()); 612825: } 612825: 612825: 612825: template 612825: inline bool 612825: operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 612825: { 612825: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 612825: return less<_Tp_elt*>()(__a.get(), nullptr); 612825: } 612825: 612825: 612825: template 612825: inline bool 612825: operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 612825: { 612825: using _Tp_elt = typename shared_ptr<_Tp>::element_type; 612825: return less<_Tp_elt*>()(nullptr, __a.get()); 612825: } 612825: 612825: 612825: template 612825: inline bool 612825: operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 612825: { return !(__b < __a); } 612825: 612825: 612825: template 612825: inline bool 612825: operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 612825: { return !(nullptr < __a); } 612825: 612825: 612825: template 612825: inline bool 612825: operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 612825: { return !(__a < nullptr); } 612825: 612825: 612825: template 612825: inline bool 612825: operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 612825: { return (__b < __a); } 612825: 612825: 612825: template 612825: inline bool 612825: operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 612825: { return nullptr < __a; } 612825: 612825: 612825: template 612825: inline bool 612825: operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 612825: { return __a < nullptr; } 612825: 612825: 612825: template 612825: inline bool 612825: operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept 612825: { return !(__a < __b); } 612825: 612825: 612825: template 612825: inline bool 612825: operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept 612825: { return !(__a < nullptr); } 612825: 612825: 612825: template 612825: inline bool 612825: operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept 612825: { return !(nullptr < __a); } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: inline void 612825: swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept 612825: { __a.swap(__b); } 612825: 612825: 612825: 612825: 612825: template 612825: inline shared_ptr<_Tp> 612825: static_pointer_cast(const shared_ptr<_Up>& __r) noexcept 612825: { 612825: using _Sp = shared_ptr<_Tp>; 612825: return _Sp(__r, static_cast(__r.get())); 612825: } 612825: 612825: 612825: template 612825: inline shared_ptr<_Tp> 612825: const_pointer_cast(const shared_ptr<_Up>& __r) noexcept 612825: { 612825: using _Sp = shared_ptr<_Tp>; 612825: return _Sp(__r, const_cast(__r.get())); 612825: } 612825: 612825: 612825: template 612825: inline shared_ptr<_Tp> 612825: dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept 612825: { 612825: using _Sp = shared_ptr<_Tp>; 612825: if (auto* __p = dynamic_cast(__r.get())) 612825: return _Sp(__r, __p); 612825: return _Sp(); 612825: } 612825: # 810 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: class weak_ptr : public __weak_ptr<_Tp> 612825: { 612825: template 612825: using _Constructible = typename enable_if< 612825: is_constructible<__weak_ptr<_Tp>, _Arg>::value 612825: >::type; 612825: 612825: template 612825: using _Assignable = typename enable_if< 612825: is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr& 612825: >::type; 612825: 612825: public: 612825: constexpr weak_ptr() noexcept = default; 612825: 612825: template&>> 612825: weak_ptr(const shared_ptr<_Yp>& __r) noexcept 612825: : __weak_ptr<_Tp>(__r) { } 612825: 612825: weak_ptr(const weak_ptr&) noexcept = default; 612825: 612825: template&>> 612825: weak_ptr(const weak_ptr<_Yp>& __r) noexcept 612825: : __weak_ptr<_Tp>(__r) { } 612825: 612825: weak_ptr(weak_ptr&&) noexcept = default; 612825: 612825: template>> 612825: weak_ptr(weak_ptr<_Yp>&& __r) noexcept 612825: : __weak_ptr<_Tp>(std::move(__r)) { } 612825: 612825: weak_ptr& 612825: operator=(const weak_ptr& __r) noexcept = default; 612825: 612825: template 612825: _Assignable&> 612825: operator=(const weak_ptr<_Yp>& __r) noexcept 612825: { 612825: this->__weak_ptr<_Tp>::operator=(__r); 612825: return *this; 612825: } 612825: 612825: template 612825: _Assignable&> 612825: operator=(const shared_ptr<_Yp>& __r) noexcept 612825: { 612825: this->__weak_ptr<_Tp>::operator=(__r); 612825: return *this; 612825: } 612825: 612825: weak_ptr& 612825: operator=(weak_ptr&& __r) noexcept = default; 612825: 612825: template 612825: _Assignable> 612825: operator=(weak_ptr<_Yp>&& __r) noexcept 612825: { 612825: this->__weak_ptr<_Tp>::operator=(std::move(__r)); 612825: return *this; 612825: } 612825: 612825: shared_ptr<_Tp> 612825: lock() const noexcept 612825: { return shared_ptr<_Tp>(*this, std::nothrow); } 612825: }; 612825: # 886 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: inline void 612825: swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept 612825: { __a.swap(__b); } 612825: 612825: 612825: 612825: template 612825: struct owner_less; 612825: 612825: 612825: template<> 612825: struct owner_less : _Sp_owner_less 612825: { }; 612825: 612825: 612825: template 612825: struct owner_less> 612825: : public _Sp_owner_less, weak_ptr<_Tp>> 612825: { }; 612825: 612825: 612825: template 612825: struct owner_less> 612825: : public _Sp_owner_less, shared_ptr<_Tp>> 612825: { }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: class enable_shared_from_this 612825: { 612825: protected: 612825: constexpr enable_shared_from_this() noexcept { } 612825: 612825: enable_shared_from_this(const enable_shared_from_this&) noexcept { } 612825: 612825: enable_shared_from_this& 612825: operator=(const enable_shared_from_this&) noexcept 612825: { return *this; } 612825: 612825: ~enable_shared_from_this() { } 612825: 612825: public: 612825: shared_ptr<_Tp> 612825: shared_from_this() 612825: { return shared_ptr<_Tp>(this->_M_weak_this); } 612825: 612825: shared_ptr 612825: shared_from_this() const 612825: { return shared_ptr(this->_M_weak_this); } 612825: # 957 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: private: 612825: template 612825: void 612825: _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept 612825: { _M_weak_this._M_assign(__p, __n); } 612825: 612825: 612825: friend const enable_shared_from_this* 612825: __enable_shared_from_this_base(const __shared_count<>&, 612825: const enable_shared_from_this* __p) 612825: { return __p; } 612825: 612825: template 612825: friend class __shared_ptr; 612825: 612825: mutable weak_ptr<_Tp> _M_weak_this; 612825: }; 612825: # 988 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: inline shared_ptr<_NonArray<_Tp>> 612825: allocate_shared(const _Alloc& __a, _Args&&... __args) 612825: { 612825: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, 612825: std::forward<_Args>(__args)...); 612825: } 612825: # 1003 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: inline shared_ptr<_NonArray<_Tp>> 612825: make_shared(_Args&&... __args) 612825: { 612825: using _Alloc = allocator; 612825: _Alloc __a; 612825: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, 612825: std::forward<_Args>(__args)...); 612825: } 612825: # 1152 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: template 612825: struct hash> 612825: : public __hash_base> 612825: { 612825: size_t 612825: operator()(const shared_ptr<_Tp>& __s) const noexcept 612825: { 612825: return std::hash::element_type*>()(__s.get()); 612825: } 612825: }; 612825: # 1187 "/usr/include/c++/12/bits/shared_ptr.h" 3 612825: 612825: } 612825: # 78 "/usr/include/c++/12/memory" 2 3 612825: # 1 "/usr/include/c++/12/bits/shared_ptr_atomic.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/shared_ptr_atomic.h" 3 612825: # 1 "/usr/include/c++/12/bits/atomic_base.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: 612825: # 34 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/atomic_lockfree_defines.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/atomic_lockfree_defines.h" 3 612825: 612825: # 34 "/usr/include/c++/12/bits/atomic_lockfree_defines.h" 3 612825: # 38 "/usr/include/c++/12/bits/atomic_base.h" 2 3 612825: # 48 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 78 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: typedef enum memory_order 612825: { 612825: memory_order_relaxed, 612825: memory_order_consume, 612825: memory_order_acquire, 612825: memory_order_release, 612825: memory_order_acq_rel, 612825: memory_order_seq_cst 612825: } memory_order; 612825: 612825: 612825: enum __memory_order_modifier 612825: { 612825: __memory_order_mask = 0x0ffff, 612825: __memory_order_modifier_mask = 0xffff0000, 612825: __memory_order_hle_acquire = 0x10000, 612825: __memory_order_hle_release = 0x20000 612825: }; 612825: 612825: constexpr memory_order 612825: operator|(memory_order __m, __memory_order_modifier __mod) 612825: { 612825: return memory_order(int(__m) | int(__mod)); 612825: } 612825: 612825: constexpr memory_order 612825: operator&(memory_order __m, __memory_order_modifier __mod) 612825: { 612825: return memory_order(int(__m) & int(__mod)); 612825: } 612825: 612825: 612825: constexpr memory_order 612825: __cmpexch_failure_order2(memory_order __m) noexcept 612825: { 612825: return __m == memory_order_acq_rel ? memory_order_acquire 612825: : __m == memory_order_release ? memory_order_relaxed : __m; 612825: } 612825: 612825: constexpr memory_order 612825: __cmpexch_failure_order(memory_order __m) noexcept 612825: { 612825: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) 612825: | __memory_order_modifier(__m & __memory_order_modifier_mask)); 612825: } 612825: 612825: constexpr bool 612825: __is_valid_cmpexch_failure_order(memory_order __m) noexcept 612825: { 612825: return (__m & __memory_order_mask) != memory_order_release 612825: && (__m & __memory_order_mask) != memory_order_acq_rel; 612825: } 612825: 612825: inline __attribute__((__always_inline__)) void 612825: atomic_thread_fence(memory_order __m) noexcept 612825: { __atomic_thread_fence(int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) void 612825: atomic_signal_fence(memory_order __m) noexcept 612825: { __atomic_signal_fence(int(__m)); } 612825: 612825: 612825: template 612825: inline _Tp 612825: kill_dependency(_Tp __y) noexcept 612825: { 612825: _Tp __ret(__y); 612825: return __ret; 612825: } 612825: 612825: 612825: template 612825: struct __atomic_base; 612825: # 161 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: template 612825: struct atomic; 612825: 612825: template 612825: struct atomic<_Tp*>; 612825: 612825: 612825: 612825: typedef bool __atomic_flag_data_type; 612825: # 184 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: extern "C" { 612825: 612825: struct __atomic_flag_base 612825: { 612825: __atomic_flag_data_type _M_i ; 612825: }; 612825: 612825: } 612825: 612825: 612825: 612825: 612825: struct atomic_flag : public __atomic_flag_base 612825: { 612825: atomic_flag() noexcept = default; 612825: ~atomic_flag() noexcept = default; 612825: atomic_flag(const atomic_flag&) = delete; 612825: atomic_flag& operator=(const atomic_flag&) = delete; 612825: atomic_flag& operator=(const atomic_flag&) volatile = delete; 612825: 612825: 612825: constexpr atomic_flag(bool __i) noexcept 612825: : __atomic_flag_base{ _S_init(__i) } 612825: { } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: test_and_set(memory_order __m = memory_order_seq_cst) noexcept 612825: { 612825: return __atomic_test_and_set (&_M_i, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { 612825: return __atomic_test_and_set (&_M_i, int(__m)); 612825: } 612825: # 268 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: inline __attribute__((__always_inline__)) void 612825: clear(memory_order __m = memory_order_seq_cst) noexcept 612825: { 612825: memory_order __b __attribute__ ((__unused__)) 612825: = __m & __memory_order_mask; 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 612825: 612825: __atomic_clear (&_M_i, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) void 612825: clear(memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { 612825: memory_order __b __attribute__ ((__unused__)) 612825: = __m & __memory_order_mask; 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 612825: 612825: __atomic_clear (&_M_i, int(__m)); 612825: } 612825: 612825: private: 612825: static constexpr __atomic_flag_data_type 612825: _S_init(bool __i) 612825: { return __i ? 1 : 0; } 612825: }; 612825: # 323 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: template 612825: struct __atomic_base 612825: { 612825: using value_type = _ITp; 612825: using difference_type = value_type; 612825: 612825: private: 612825: typedef _ITp __int_type; 612825: 612825: static constexpr int _S_alignment = 612825: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); 612825: 612825: alignas(_S_alignment) __int_type _M_i ; 612825: 612825: public: 612825: __atomic_base() noexcept = default; 612825: ~__atomic_base() noexcept = default; 612825: __atomic_base(const __atomic_base&) = delete; 612825: __atomic_base& operator=(const __atomic_base&) = delete; 612825: __atomic_base& operator=(const __atomic_base&) volatile = delete; 612825: 612825: 612825: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } 612825: 612825: operator __int_type() const noexcept 612825: { return load(); } 612825: 612825: operator __int_type() const volatile noexcept 612825: { return load(); } 612825: 612825: __int_type 612825: operator=(__int_type __i) noexcept 612825: { 612825: store(__i); 612825: return __i; 612825: } 612825: 612825: __int_type 612825: operator=(__int_type __i) volatile noexcept 612825: { 612825: store(__i); 612825: return __i; 612825: } 612825: 612825: __int_type 612825: operator++(int) noexcept 612825: { return fetch_add(1); } 612825: 612825: __int_type 612825: operator++(int) volatile noexcept 612825: { return fetch_add(1); } 612825: 612825: __int_type 612825: operator--(int) noexcept 612825: { return fetch_sub(1); } 612825: 612825: __int_type 612825: operator--(int) volatile noexcept 612825: { return fetch_sub(1); } 612825: 612825: __int_type 612825: operator++() noexcept 612825: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator++() volatile noexcept 612825: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator--() noexcept 612825: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator--() volatile noexcept 612825: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator+=(__int_type __i) noexcept 612825: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator+=(__int_type __i) volatile noexcept 612825: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator-=(__int_type __i) noexcept 612825: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator-=(__int_type __i) volatile noexcept 612825: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator&=(__int_type __i) noexcept 612825: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator&=(__int_type __i) volatile noexcept 612825: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator|=(__int_type __i) noexcept 612825: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator|=(__int_type __i) volatile noexcept 612825: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator^=(__int_type __i) noexcept 612825: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 612825: 612825: __int_type 612825: operator^=(__int_type __i) volatile noexcept 612825: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } 612825: 612825: bool 612825: is_lock_free() const noexcept 612825: { 612825: 612825: return __atomic_is_lock_free(sizeof(_M_i), 612825: reinterpret_cast(-_S_alignment)); 612825: } 612825: 612825: bool 612825: is_lock_free() const volatile noexcept 612825: { 612825: 612825: return __atomic_is_lock_free(sizeof(_M_i), 612825: reinterpret_cast(-_S_alignment)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) void 612825: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept 612825: { 612825: memory_order __b __attribute__ ((__unused__)) 612825: = __m & __memory_order_mask; 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 612825: 612825: __atomic_store_n(&_M_i, __i, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) void 612825: store(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { 612825: memory_order __b __attribute__ ((__unused__)) 612825: = __m & __memory_order_mask; 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 612825: 612825: __atomic_store_n(&_M_i, __i, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: load(memory_order __m = memory_order_seq_cst) const noexcept 612825: { 612825: memory_order __b __attribute__ ((__unused__)) 612825: = __m & __memory_order_mask; 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_load_n(&_M_i, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 612825: { 612825: memory_order __b __attribute__ ((__unused__)) 612825: = __m & __memory_order_mask; 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_load_n(&_M_i, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: exchange(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { 612825: return __atomic_exchange_n(&_M_i, __i, int(__m)); 612825: } 612825: 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: exchange(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { 612825: return __atomic_exchange_n(&_M_i, __i, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_weak(__int_type& __i1, __int_type __i2, 612825: memory_order __m1, memory_order __m2) noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 612825: int(__m1), int(__m2)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_weak(__int_type& __i1, __int_type __i2, 612825: memory_order __m1, 612825: memory_order __m2) volatile noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, 612825: int(__m1), int(__m2)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_weak(__int_type& __i1, __int_type __i2, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { 612825: return compare_exchange_weak(__i1, __i2, __m, 612825: __cmpexch_failure_order(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_weak(__int_type& __i1, __int_type __i2, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { 612825: return compare_exchange_weak(__i1, __i2, __m, 612825: __cmpexch_failure_order(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_strong(__int_type& __i1, __int_type __i2, 612825: memory_order __m1, memory_order __m2) noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 612825: int(__m1), int(__m2)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_strong(__int_type& __i1, __int_type __i2, 612825: memory_order __m1, 612825: memory_order __m2) volatile noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, 612825: int(__m1), int(__m2)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_strong(__int_type& __i1, __int_type __i2, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { 612825: return compare_exchange_strong(__i1, __i2, __m, 612825: __cmpexch_failure_order(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_strong(__int_type& __i1, __int_type __i2, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { 612825: return compare_exchange_strong(__i1, __i2, __m, 612825: __cmpexch_failure_order(__m)); 612825: } 612825: # 615 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: inline __attribute__((__always_inline__)) __int_type 612825: fetch_add(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: fetch_add(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: fetch_sub(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: fetch_sub(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: fetch_and(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: fetch_and(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: fetch_or(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: fetch_or(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: fetch_xor(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __int_type 612825: fetch_xor(__int_type __i, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } 612825: }; 612825: 612825: 612825: 612825: template 612825: struct __atomic_base<_PTp*> 612825: { 612825: private: 612825: typedef _PTp* __pointer_type; 612825: 612825: __pointer_type _M_p ; 612825: 612825: 612825: constexpr ptrdiff_t 612825: _M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); } 612825: 612825: constexpr ptrdiff_t 612825: _M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); } 612825: 612825: public: 612825: __atomic_base() noexcept = default; 612825: ~__atomic_base() noexcept = default; 612825: __atomic_base(const __atomic_base&) = delete; 612825: __atomic_base& operator=(const __atomic_base&) = delete; 612825: __atomic_base& operator=(const __atomic_base&) volatile = delete; 612825: 612825: 612825: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } 612825: 612825: operator __pointer_type() const noexcept 612825: { return load(); } 612825: 612825: operator __pointer_type() const volatile noexcept 612825: { return load(); } 612825: 612825: __pointer_type 612825: operator=(__pointer_type __p) noexcept 612825: { 612825: store(__p); 612825: return __p; 612825: } 612825: 612825: __pointer_type 612825: operator=(__pointer_type __p) volatile noexcept 612825: { 612825: store(__p); 612825: return __p; 612825: } 612825: 612825: __pointer_type 612825: operator++(int) noexcept 612825: { return fetch_add(1); } 612825: 612825: __pointer_type 612825: operator++(int) volatile noexcept 612825: { return fetch_add(1); } 612825: 612825: __pointer_type 612825: operator--(int) noexcept 612825: { return fetch_sub(1); } 612825: 612825: __pointer_type 612825: operator--(int) volatile noexcept 612825: { return fetch_sub(1); } 612825: 612825: __pointer_type 612825: operator++() noexcept 612825: { return __atomic_add_fetch(&_M_p, _M_type_size(1), 612825: int(memory_order_seq_cst)); } 612825: 612825: __pointer_type 612825: operator++() volatile noexcept 612825: { return __atomic_add_fetch(&_M_p, _M_type_size(1), 612825: int(memory_order_seq_cst)); } 612825: 612825: __pointer_type 612825: operator--() noexcept 612825: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), 612825: int(memory_order_seq_cst)); } 612825: 612825: __pointer_type 612825: operator--() volatile noexcept 612825: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), 612825: int(memory_order_seq_cst)); } 612825: 612825: __pointer_type 612825: operator+=(ptrdiff_t __d) noexcept 612825: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), 612825: int(memory_order_seq_cst)); } 612825: 612825: __pointer_type 612825: operator+=(ptrdiff_t __d) volatile noexcept 612825: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), 612825: int(memory_order_seq_cst)); } 612825: 612825: __pointer_type 612825: operator-=(ptrdiff_t __d) noexcept 612825: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), 612825: int(memory_order_seq_cst)); } 612825: 612825: __pointer_type 612825: operator-=(ptrdiff_t __d) volatile noexcept 612825: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), 612825: int(memory_order_seq_cst)); } 612825: 612825: bool 612825: is_lock_free() const noexcept 612825: { 612825: 612825: return __atomic_is_lock_free(sizeof(_M_p), 612825: reinterpret_cast(-__alignof(_M_p))); 612825: } 612825: 612825: bool 612825: is_lock_free() const volatile noexcept 612825: { 612825: 612825: return __atomic_is_lock_free(sizeof(_M_p), 612825: reinterpret_cast(-__alignof(_M_p))); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) void 612825: store(__pointer_type __p, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { 612825: memory_order __b __attribute__ ((__unused__)) 612825: = __m & __memory_order_mask; 612825: 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 612825: 612825: __atomic_store_n(&_M_p, __p, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) void 612825: store(__pointer_type __p, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { 612825: memory_order __b __attribute__ ((__unused__)) 612825: = __m & __memory_order_mask; 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) __builtin_unreachable(); } while (false); 612825: 612825: __atomic_store_n(&_M_p, __p, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) __pointer_type 612825: load(memory_order __m = memory_order_seq_cst) const noexcept 612825: { 612825: memory_order __b __attribute__ ((__unused__)) 612825: = __m & __memory_order_mask; 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_load_n(&_M_p, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) __pointer_type 612825: load(memory_order __m = memory_order_seq_cst) const volatile noexcept 612825: { 612825: memory_order __b __attribute__ ((__unused__)) 612825: = __m & __memory_order_mask; 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) __builtin_unreachable(); } while (false); 612825: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_load_n(&_M_p, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) __pointer_type 612825: exchange(__pointer_type __p, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { 612825: return __atomic_exchange_n(&_M_p, __p, int(__m)); 612825: } 612825: 612825: 612825: inline __attribute__((__always_inline__)) __pointer_type 612825: exchange(__pointer_type __p, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { 612825: return __atomic_exchange_n(&_M_p, __p, int(__m)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 612825: memory_order __m1, 612825: memory_order __m2) noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, 612825: int(__m1), int(__m2)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, 612825: memory_order __m1, 612825: memory_order __m2) volatile noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, 612825: int(__m1), int(__m2)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 612825: memory_order __m1, 612825: memory_order __m2) noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 612825: int(__m1), int(__m2)); 612825: } 612825: 612825: inline __attribute__((__always_inline__)) bool 612825: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, 612825: memory_order __m1, 612825: memory_order __m2) volatile noexcept 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) __builtin_unreachable(); } while (false); 612825: 612825: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, 612825: int(__m1), int(__m2)); 612825: } 612825: # 918 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: inline __attribute__((__always_inline__)) __pointer_type 612825: fetch_add(ptrdiff_t __d, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __pointer_type 612825: fetch_add(ptrdiff_t __d, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __pointer_type 612825: fetch_sub(ptrdiff_t __d, 612825: memory_order __m = memory_order_seq_cst) noexcept 612825: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); } 612825: 612825: inline __attribute__((__always_inline__)) __pointer_type 612825: fetch_sub(ptrdiff_t __d, 612825: memory_order __m = memory_order_seq_cst) volatile noexcept 612825: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); } 612825: }; 612825: # 1943 "/usr/include/c++/12/bits/atomic_base.h" 3 612825: 612825: } 612825: # 34 "/usr/include/c++/12/bits/shared_ptr_atomic.h" 2 3 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 47 "/usr/include/c++/12/bits/shared_ptr_atomic.h" 3 612825: struct _Sp_locker 612825: { 612825: _Sp_locker(const _Sp_locker&) = delete; 612825: _Sp_locker& operator=(const _Sp_locker&) = delete; 612825: 612825: 612825: explicit 612825: _Sp_locker(const void*) noexcept; 612825: _Sp_locker(const void*, const void*) noexcept; 612825: ~_Sp_locker(); 612825: 612825: private: 612825: unsigned char _M_key1; 612825: unsigned char _M_key2; 612825: 612825: 612825: 612825: }; 612825: # 74 "/usr/include/c++/12/bits/shared_ptr_atomic.h" 3 612825: template 612825: inline bool 612825: atomic_is_lock_free(const __shared_ptr<_Tp, _Lp>* __p) 612825: { 612825: 612825: return __gthread_active_p() == 0; 612825: 612825: 612825: 612825: } 612825: 612825: template 612825: inline bool 612825: atomic_is_lock_free(const shared_ptr<_Tp>* __p) 612825: { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); } 612825: # 101 "/usr/include/c++/12/bits/shared_ptr_atomic.h" 3 612825: template 612825: inline shared_ptr<_Tp> 612825: atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) 612825: { 612825: _Sp_locker __lock{__p}; 612825: return *__p; 612825: } 612825: 612825: template 612825: inline shared_ptr<_Tp> 612825: atomic_load(const shared_ptr<_Tp>* __p) 612825: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } 612825: 612825: template 612825: inline __shared_ptr<_Tp, _Lp> 612825: atomic_load_explicit(const __shared_ptr<_Tp, _Lp>* __p, memory_order) 612825: { 612825: _Sp_locker __lock{__p}; 612825: return *__p; 612825: } 612825: 612825: template 612825: inline __shared_ptr<_Tp, _Lp> 612825: atomic_load(const __shared_ptr<_Tp, _Lp>* __p) 612825: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } 612825: # 137 "/usr/include/c++/12/bits/shared_ptr_atomic.h" 3 612825: template 612825: inline void 612825: atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, 612825: memory_order) 612825: { 612825: _Sp_locker __lock{__p}; 612825: __p->swap(__r); 612825: } 612825: 612825: template 612825: inline void 612825: atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) 612825: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } 612825: 612825: template 612825: inline void 612825: atomic_store_explicit(__shared_ptr<_Tp, _Lp>* __p, 612825: __shared_ptr<_Tp, _Lp> __r, 612825: memory_order) 612825: { 612825: _Sp_locker __lock{__p}; 612825: __p->swap(__r); 612825: } 612825: 612825: template 612825: inline void 612825: atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) 612825: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } 612825: # 174 "/usr/include/c++/12/bits/shared_ptr_atomic.h" 3 612825: template 612825: inline shared_ptr<_Tp> 612825: atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, 612825: memory_order) 612825: { 612825: _Sp_locker __lock{__p}; 612825: __p->swap(__r); 612825: return __r; 612825: } 612825: 612825: template 612825: inline shared_ptr<_Tp> 612825: atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) 612825: { 612825: return std::atomic_exchange_explicit(__p, std::move(__r), 612825: memory_order_seq_cst); 612825: } 612825: 612825: template 612825: inline __shared_ptr<_Tp, _Lp> 612825: atomic_exchange_explicit(__shared_ptr<_Tp, _Lp>* __p, 612825: __shared_ptr<_Tp, _Lp> __r, 612825: memory_order) 612825: { 612825: _Sp_locker __lock{__p}; 612825: __p->swap(__r); 612825: return __r; 612825: } 612825: 612825: template 612825: inline __shared_ptr<_Tp, _Lp> 612825: atomic_exchange(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) 612825: { 612825: return std::atomic_exchange_explicit(__p, std::move(__r), 612825: memory_order_seq_cst); 612825: } 612825: # 223 "/usr/include/c++/12/bits/shared_ptr_atomic.h" 3 612825: template 612825: bool 612825: atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, 612825: shared_ptr<_Tp>* __v, 612825: shared_ptr<_Tp> __w, 612825: memory_order, 612825: memory_order) 612825: { 612825: shared_ptr<_Tp> __x; 612825: _Sp_locker __lock{__p, __v}; 612825: owner_less> __less; 612825: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) 612825: { 612825: __x = std::move(*__p); 612825: *__p = std::move(__w); 612825: return true; 612825: } 612825: __x = std::move(*__v); 612825: *__v = *__p; 612825: return false; 612825: } 612825: 612825: template 612825: inline bool 612825: atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, 612825: shared_ptr<_Tp> __w) 612825: { 612825: return std::atomic_compare_exchange_strong_explicit(__p, __v, 612825: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 612825: } 612825: 612825: template 612825: inline bool 612825: atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, 612825: shared_ptr<_Tp>* __v, 612825: shared_ptr<_Tp> __w, 612825: memory_order __success, 612825: memory_order __failure) 612825: { 612825: return std::atomic_compare_exchange_strong_explicit(__p, __v, 612825: std::move(__w), __success, __failure); 612825: } 612825: 612825: template 612825: inline bool 612825: atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, 612825: shared_ptr<_Tp> __w) 612825: { 612825: return std::atomic_compare_exchange_weak_explicit(__p, __v, 612825: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 612825: } 612825: 612825: template 612825: bool 612825: atomic_compare_exchange_strong_explicit(__shared_ptr<_Tp, _Lp>* __p, 612825: __shared_ptr<_Tp, _Lp>* __v, 612825: __shared_ptr<_Tp, _Lp> __w, 612825: memory_order, 612825: memory_order) 612825: { 612825: __shared_ptr<_Tp, _Lp> __x; 612825: _Sp_locker __lock{__p, __v}; 612825: owner_less<__shared_ptr<_Tp, _Lp>> __less; 612825: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) 612825: { 612825: __x = std::move(*__p); 612825: *__p = std::move(__w); 612825: return true; 612825: } 612825: __x = std::move(*__v); 612825: *__v = *__p; 612825: return false; 612825: } 612825: 612825: template 612825: inline bool 612825: atomic_compare_exchange_strong(__shared_ptr<_Tp, _Lp>* __p, 612825: __shared_ptr<_Tp, _Lp>* __v, 612825: __shared_ptr<_Tp, _Lp> __w) 612825: { 612825: return std::atomic_compare_exchange_strong_explicit(__p, __v, 612825: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 612825: } 612825: 612825: template 612825: inline bool 612825: atomic_compare_exchange_weak_explicit(__shared_ptr<_Tp, _Lp>* __p, 612825: __shared_ptr<_Tp, _Lp>* __v, 612825: __shared_ptr<_Tp, _Lp> __w, 612825: memory_order __success, 612825: memory_order __failure) 612825: { 612825: return std::atomic_compare_exchange_strong_explicit(__p, __v, 612825: std::move(__w), __success, __failure); 612825: } 612825: 612825: template 612825: inline bool 612825: atomic_compare_exchange_weak(__shared_ptr<_Tp, _Lp>* __p, 612825: __shared_ptr<_Tp, _Lp>* __v, 612825: __shared_ptr<_Tp, _Lp> __w) 612825: { 612825: return std::atomic_compare_exchange_weak_explicit(__p, __v, 612825: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); 612825: } 612825: # 796 "/usr/include/c++/12/bits/shared_ptr_atomic.h" 3 612825: 612825: } 612825: # 79 "/usr/include/c++/12/memory" 2 3 612825: 612825: 612825: 612825: # 1 "/usr/include/c++/12/backward/auto_ptr.h" 1 3 612825: # 36 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 47 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: template 612825: struct auto_ptr_ref 612825: { 612825: _Tp1* _M_ptr; 612825: 612825: explicit 612825: auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } 612825: } __attribute__ ((__deprecated__)); 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: # 88 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: template 612825: class auto_ptr 612825: { 612825: private: 612825: _Tp* _M_ptr; 612825: 612825: public: 612825: 612825: typedef _Tp element_type; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: explicit 612825: auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } 612825: # 114 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } 612825: # 126 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: template 612825: auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } 612825: # 137 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: auto_ptr& 612825: operator=(auto_ptr& __a) throw() 612825: { 612825: reset(__a.release()); 612825: return *this; 612825: } 612825: # 154 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: template 612825: auto_ptr& 612825: operator=(auto_ptr<_Tp1>& __a) throw() 612825: { 612825: reset(__a.release()); 612825: return *this; 612825: } 612825: # 172 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: ~auto_ptr() { delete _M_ptr; } 612825: # 182 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: element_type& 612825: operator*() const throw() 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(_M_ptr != 0)) __builtin_unreachable(); } while (false); 612825: return *_M_ptr; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: element_type* 612825: operator->() const throw() 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(_M_ptr != 0)) __builtin_unreachable(); } while (false); 612825: return _M_ptr; 612825: } 612825: # 212 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: element_type* 612825: get() const throw() { return _M_ptr; } 612825: # 226 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: element_type* 612825: release() throw() 612825: { 612825: element_type* __tmp = _M_ptr; 612825: _M_ptr = 0; 612825: return __tmp; 612825: } 612825: # 241 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: void 612825: reset(element_type* __p = 0) throw() 612825: { 612825: if (__p != _M_ptr) 612825: { 612825: delete _M_ptr; 612825: _M_ptr = __p; 612825: } 612825: } 612825: # 266 "/usr/include/c++/12/backward/auto_ptr.h" 3 612825: auto_ptr(auto_ptr_ref __ref) throw() 612825: : _M_ptr(__ref._M_ptr) { } 612825: 612825: auto_ptr& 612825: operator=(auto_ptr_ref __ref) throw() 612825: { 612825: if (__ref._M_ptr != this->get()) 612825: { 612825: delete _M_ptr; 612825: _M_ptr = __ref._M_ptr; 612825: } 612825: return *this; 612825: } 612825: 612825: template 612825: operator auto_ptr_ref<_Tp1>() throw() 612825: { return auto_ptr_ref<_Tp1>(this->release()); } 612825: 612825: template 612825: operator auto_ptr<_Tp1>() throw() 612825: { return auto_ptr<_Tp1>(this->release()); } 612825: } __attribute__ ((__deprecated__ ("use '" "std::unique_ptr" "' instead"))); 612825: 612825: 612825: 612825: template<> 612825: class auto_ptr 612825: { 612825: public: 612825: typedef void element_type; 612825: } __attribute__ ((__deprecated__)); 612825: 612825: 612825: template<_Lock_policy _Lp> 612825: template 612825: inline 612825: __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r) 612825: : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) 612825: { __r.release(); } 612825: 612825: template 612825: template 612825: inline 612825: __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r) 612825: : _M_ptr(__r.get()), _M_refcount() 612825: { 612825: 612825: static_assert( sizeof(_Tp1) > 0, "incomplete type" ); 612825: _Tp1* __tmp = __r.get(); 612825: _M_refcount = __shared_count<_Lp>(std::move(__r)); 612825: _M_enable_shared_from_this_with(__tmp); 612825: } 612825: 612825: template 612825: template 612825: inline 612825: shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r) 612825: : __shared_ptr<_Tp>(std::move(__r)) { } 612825: 612825: template 612825: template 612825: inline 612825: unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept 612825: : _M_t(__u.release(), deleter_type()) { } 612825: 612825: 612825: #pragma GCC diagnostic pop 612825: 612825: 612825: } 612825: # 83 "/usr/include/c++/12/memory" 2 3 612825: # 91 "/usr/include/c++/12/memory" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 109 "/usr/include/c++/12/memory" 3 612825: enum class pointer_safety { relaxed, preferred, strict }; 612825: 612825: 612825: inline void 612825: declare_reachable(void*) { } 612825: 612825: 612825: template 612825: inline _Tp* 612825: undeclare_reachable(_Tp* __p) { return __p; } 612825: 612825: 612825: inline void 612825: declare_no_pointers(char*, size_t) { } 612825: 612825: 612825: inline void 612825: undeclare_no_pointers(char*, size_t) { } 612825: 612825: 612825: inline pointer_safety 612825: get_pointer_safety() noexcept { return pointer_safety::relaxed; } 612825: 612825: 612825: 612825: } 612825: # 29 "third_party/butteraugli/butteraugli/butteraugli.h" 2 612825: # 1 "/usr/include/c++/12/vector" 1 3 612825: # 58 "/usr/include/c++/12/vector" 3 612825: 612825: # 59 "/usr/include/c++/12/vector" 3 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/stl_vector.h" 1 3 612825: # 63 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: # 1 "/usr/include/c++/12/initializer_list" 1 3 612825: # 33 "/usr/include/c++/12/initializer_list" 3 612825: 612825: # 34 "/usr/include/c++/12/initializer_list" 3 612825: 612825: 612825: 612825: 612825: 612825: #pragma GCC visibility push(default) 612825: 612825: 612825: 612825: namespace std 612825: { 612825: 612825: template 612825: class initializer_list 612825: { 612825: public: 612825: typedef _E value_type; 612825: typedef const _E& reference; 612825: typedef const _E& const_reference; 612825: typedef size_t size_type; 612825: typedef const _E* iterator; 612825: typedef const _E* const_iterator; 612825: 612825: private: 612825: iterator _M_array; 612825: size_type _M_len; 612825: 612825: 612825: constexpr initializer_list(const_iterator __a, size_type __l) 612825: : _M_array(__a), _M_len(__l) { } 612825: 612825: public: 612825: constexpr initializer_list() noexcept 612825: : _M_array(0), _M_len(0) { } 612825: 612825: 612825: constexpr size_type 612825: size() const noexcept { return _M_len; } 612825: 612825: 612825: constexpr const_iterator 612825: begin() const noexcept { return _M_array; } 612825: 612825: 612825: constexpr const_iterator 612825: end() const noexcept { return begin() + size(); } 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: constexpr const _Tp* 612825: begin(initializer_list<_Tp> __ils) noexcept 612825: { return __ils.begin(); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: constexpr const _Tp* 612825: end(initializer_list<_Tp> __ils) noexcept 612825: { return __ils.end(); } 612825: } 612825: 612825: #pragma GCC visibility pop 612825: # 64 "/usr/include/c++/12/bits/stl_vector.h" 2 3 612825: # 78 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: template 612825: struct _Vector_base 612825: { 612825: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 612825: rebind<_Tp>::other _Tp_alloc_type; 612825: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer 612825: pointer; 612825: 612825: struct _Vector_impl_data 612825: { 612825: pointer _M_start; 612825: pointer _M_finish; 612825: pointer _M_end_of_storage; 612825: 612825: 612825: _Vector_impl_data() noexcept 612825: : _M_start(), _M_finish(), _M_end_of_storage() 612825: { } 612825: 612825: 612825: 612825: _Vector_impl_data(_Vector_impl_data&& __x) noexcept 612825: : _M_start(__x._M_start), _M_finish(__x._M_finish), 612825: _M_end_of_storage(__x._M_end_of_storage) 612825: { __x._M_start = __x._M_finish = __x._M_end_of_storage = pointer(); } 612825: 612825: 612825: 612825: void 612825: _M_copy_data(_Vector_impl_data const& __x) noexcept 612825: { 612825: _M_start = __x._M_start; 612825: _M_finish = __x._M_finish; 612825: _M_end_of_storage = __x._M_end_of_storage; 612825: } 612825: 612825: 612825: void 612825: _M_swap_data(_Vector_impl_data& __x) noexcept 612825: { 612825: 612825: 612825: _Vector_impl_data __tmp; 612825: __tmp._M_copy_data(*this); 612825: _M_copy_data(__x); 612825: __x._M_copy_data(__tmp); 612825: } 612825: }; 612825: 612825: struct _Vector_impl 612825: : public _Tp_alloc_type, public _Vector_impl_data 612825: { 612825: 612825: _Vector_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value) 612825: 612825: : _Tp_alloc_type() 612825: { } 612825: 612825: 612825: _Vector_impl(_Tp_alloc_type const& __a) noexcept 612825: : _Tp_alloc_type(__a) 612825: { } 612825: 612825: 612825: 612825: 612825: 612825: _Vector_impl(_Vector_impl&& __x) noexcept 612825: : _Tp_alloc_type(std::move(__x)), _Vector_impl_data(std::move(__x)) 612825: { } 612825: 612825: 612825: _Vector_impl(_Tp_alloc_type&& __a) noexcept 612825: : _Tp_alloc_type(std::move(__a)) 612825: { } 612825: 612825: 612825: _Vector_impl(_Tp_alloc_type&& __a, _Vector_impl&& __rv) noexcept 612825: : _Tp_alloc_type(std::move(__a)), _Vector_impl_data(std::move(__rv)) 612825: { } 612825: # 291 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: }; 612825: 612825: public: 612825: typedef _Alloc allocator_type; 612825: 612825: 612825: _Tp_alloc_type& 612825: _M_get_Tp_allocator() noexcept 612825: { return this->_M_impl; } 612825: 612825: 612825: const _Tp_alloc_type& 612825: _M_get_Tp_allocator() const noexcept 612825: { return this->_M_impl; } 612825: 612825: 612825: allocator_type 612825: get_allocator() const noexcept 612825: { return allocator_type(_M_get_Tp_allocator()); } 612825: 612825: 612825: _Vector_base() = default; 612825: 612825: 612825: 612825: 612825: 612825: _Vector_base(const allocator_type& __a) noexcept 612825: : _M_impl(__a) { } 612825: 612825: 612825: 612825: 612825: _Vector_base(size_t __n) 612825: : _M_impl() 612825: { _M_create_storage(__n); } 612825: 612825: 612825: 612825: _Vector_base(size_t __n, const allocator_type& __a) 612825: : _M_impl(__a) 612825: { _M_create_storage(__n); } 612825: 612825: 612825: _Vector_base(_Vector_base&&) = default; 612825: 612825: 612825: 612825: 612825: _Vector_base(_Tp_alloc_type&& __a) noexcept 612825: : _M_impl(std::move(__a)) { } 612825: 612825: 612825: _Vector_base(_Vector_base&& __x, const allocator_type& __a) 612825: : _M_impl(__a) 612825: { 612825: if (__x.get_allocator() == __a) 612825: this->_M_impl._M_swap_data(__x._M_impl); 612825: else 612825: { 612825: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; 612825: _M_create_storage(__n); 612825: } 612825: } 612825: 612825: 612825: 612825: _Vector_base(const allocator_type& __a, _Vector_base&& __x) 612825: : _M_impl(_Tp_alloc_type(__a), std::move(__x._M_impl)) 612825: { } 612825: 612825: 612825: 612825: ~_Vector_base() noexcept 612825: { 612825: _M_deallocate(_M_impl._M_start, 612825: _M_impl._M_end_of_storage - _M_impl._M_start); 612825: } 612825: 612825: public: 612825: _Vector_impl _M_impl; 612825: 612825: 612825: pointer 612825: _M_allocate(size_t __n) 612825: { 612825: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 612825: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); 612825: } 612825: 612825: 612825: void 612825: _M_deallocate(pointer __p, size_t __n) 612825: { 612825: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; 612825: if (__p) 612825: _Tr::deallocate(_M_impl, __p, __n); 612825: } 612825: 612825: protected: 612825: 612825: void 612825: _M_create_storage(size_t __n) 612825: { 612825: this->_M_impl._M_start = this->_M_allocate(__n); 612825: this->_M_impl._M_finish = this->_M_impl._M_start; 612825: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 612825: } 612825: }; 612825: # 422 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: template > 612825: class vector : protected _Vector_base<_Tp, _Alloc> 612825: { 612825: # 435 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: static_assert(is_same::type, _Tp>::value, 612825: "std::vector must have a non-const, non-volatile value_type"); 612825: 612825: static_assert(is_same::value, 612825: "std::vector must have the same value_type as its allocator"); 612825: 612825: 612825: 612825: typedef _Vector_base<_Tp, _Alloc> _Base; 612825: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; 612825: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; 612825: 612825: public: 612825: typedef _Tp value_type; 612825: typedef typename _Base::pointer pointer; 612825: typedef typename _Alloc_traits::const_pointer const_pointer; 612825: typedef typename _Alloc_traits::reference reference; 612825: typedef typename _Alloc_traits::const_reference const_reference; 612825: typedef __gnu_cxx::__normal_iterator iterator; 612825: typedef __gnu_cxx::__normal_iterator 612825: const_iterator; 612825: typedef std::reverse_iterator const_reverse_iterator; 612825: typedef std::reverse_iterator reverse_iterator; 612825: typedef size_t size_type; 612825: typedef ptrdiff_t difference_type; 612825: typedef _Alloc allocator_type; 612825: 612825: private: 612825: 612825: static constexpr bool 612825: _S_nothrow_relocate(true_type) 612825: { 612825: return noexcept(std::__relocate_a(std::declval(), 612825: std::declval(), 612825: std::declval(), 612825: std::declval<_Tp_alloc_type&>())); 612825: } 612825: 612825: static constexpr bool 612825: _S_nothrow_relocate(false_type) 612825: { return false; } 612825: 612825: static constexpr bool 612825: _S_use_relocate() 612825: { 612825: 612825: 612825: 612825: return _S_nothrow_relocate(__is_move_insertable<_Tp_alloc_type>{}); 612825: } 612825: 612825: static pointer 612825: _S_do_relocate(pointer __first, pointer __last, pointer __result, 612825: _Tp_alloc_type& __alloc, true_type) noexcept 612825: { 612825: return std::__relocate_a(__first, __last, __result, __alloc); 612825: } 612825: 612825: static pointer 612825: _S_do_relocate(pointer, pointer, pointer __result, 612825: _Tp_alloc_type&, false_type) noexcept 612825: { return __result; } 612825: 612825: static pointer 612825: _S_relocate(pointer __first, pointer __last, pointer __result, 612825: _Tp_alloc_type& __alloc) noexcept 612825: { 612825: 612825: 612825: 612825: 612825: using __do_it = __bool_constant<_S_use_relocate()>; 612825: return _S_do_relocate(__first, __last, __result, __alloc, __do_it{}); 612825: 612825: } 612825: 612825: 612825: protected: 612825: using _Base::_M_allocate; 612825: using _Base::_M_deallocate; 612825: using _Base::_M_impl; 612825: using _Base::_M_get_Tp_allocator; 612825: 612825: public: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: vector() = default; 612825: # 535 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: explicit 612825: 612825: vector(const allocator_type& __a) noexcept 612825: : _Base(__a) { } 612825: # 549 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: explicit 612825: 612825: vector(size_type __n, const allocator_type& __a = allocator_type()) 612825: : _Base(_S_check_init_len(__n, __a), __a) 612825: { _M_default_initialize(__n); } 612825: # 563 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: vector(size_type __n, const value_type& __value, 612825: const allocator_type& __a = allocator_type()) 612825: : _Base(_S_check_init_len(__n, __a), __a) 612825: { _M_fill_initialize(__n, __value); } 612825: # 595 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: vector(const vector& __x) 612825: : _Base(__x.size(), 612825: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) 612825: { 612825: this->_M_impl._M_finish = 612825: std::__uninitialized_copy_a(__x.begin(), __x.end(), 612825: this->_M_impl._M_start, 612825: _M_get_Tp_allocator()); 612825: } 612825: # 615 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: vector(vector&&) noexcept = default; 612825: 612825: 612825: 612825: vector(const vector& __x, const __type_identity_t& __a) 612825: : _Base(__x.size(), __a) 612825: { 612825: this->_M_impl._M_finish = 612825: std::__uninitialized_copy_a(__x.begin(), __x.end(), 612825: this->_M_impl._M_start, 612825: _M_get_Tp_allocator()); 612825: } 612825: 612825: private: 612825: 612825: vector(vector&& __rv, const allocator_type& __m, true_type) noexcept 612825: : _Base(__m, std::move(__rv)) 612825: { } 612825: 612825: 612825: vector(vector&& __rv, const allocator_type& __m, false_type) 612825: : _Base(__m) 612825: { 612825: if (__rv.get_allocator() == __m) 612825: this->_M_impl._M_swap_data(__rv._M_impl); 612825: else if (!__rv.empty()) 612825: { 612825: this->_M_create_storage(__rv.size()); 612825: this->_M_impl._M_finish = 612825: std::__uninitialized_move_a(__rv.begin(), __rv.end(), 612825: this->_M_impl._M_start, 612825: _M_get_Tp_allocator()); 612825: __rv.clear(); 612825: } 612825: } 612825: 612825: public: 612825: 612825: 612825: vector(vector&& __rv, const __type_identity_t& __m) 612825: noexcept( noexcept( 612825: vector(std::declval(), std::declval(), 612825: std::declval())) ) 612825: : vector(std::move(__rv), __m, typename _Alloc_traits::is_always_equal{}) 612825: { } 612825: # 672 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: vector(initializer_list __l, 612825: const allocator_type& __a = allocator_type()) 612825: : _Base(__a) 612825: { 612825: _M_range_initialize(__l.begin(), __l.end(), 612825: random_access_iterator_tag()); 612825: } 612825: # 699 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: template> 612825: 612825: vector(_InputIterator __first, _InputIterator __last, 612825: const allocator_type& __a = allocator_type()) 612825: : _Base(__a) 612825: { 612825: _M_range_initialize(__first, __last, 612825: std::__iterator_category(__first)); 612825: } 612825: # 727 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: ~vector() noexcept 612825: { 612825: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: ; 612825: } 612825: # 744 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: vector& 612825: operator=(const vector& __x); 612825: # 759 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: vector& 612825: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) 612825: { 612825: constexpr bool __move_storage = 612825: _Alloc_traits::_S_propagate_on_move_assign() 612825: || _Alloc_traits::_S_always_equal(); 612825: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); 612825: return *this; 612825: } 612825: # 781 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: vector& 612825: operator=(initializer_list __l) 612825: { 612825: this->_M_assign_aux(__l.begin(), __l.end(), 612825: random_access_iterator_tag()); 612825: return *this; 612825: } 612825: # 801 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: void 612825: assign(size_type __n, const value_type& __val) 612825: { _M_fill_assign(__n, __val); } 612825: # 819 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: template> 612825: 612825: void 612825: assign(_InputIterator __first, _InputIterator __last) 612825: { _M_assign_dispatch(__first, __last, __false_type()); } 612825: # 848 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: void 612825: assign(initializer_list __l) 612825: { 612825: this->_M_assign_aux(__l.begin(), __l.end(), 612825: random_access_iterator_tag()); 612825: } 612825: 612825: 612825: 612825: using _Base::get_allocator; 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: iterator 612825: begin() noexcept 612825: { return iterator(this->_M_impl._M_start); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: const_iterator 612825: begin() const noexcept 612825: { return const_iterator(this->_M_impl._M_start); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: iterator 612825: end() noexcept 612825: { return iterator(this->_M_impl._M_finish); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: const_iterator 612825: end() const noexcept 612825: { return const_iterator(this->_M_impl._M_finish); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator 612825: rbegin() noexcept 612825: { return reverse_iterator(end()); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: const_reverse_iterator 612825: rbegin() const noexcept 612825: { return const_reverse_iterator(end()); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: reverse_iterator 612825: rend() noexcept 612825: { return reverse_iterator(begin()); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: const_reverse_iterator 612825: rend() const noexcept 612825: { return const_reverse_iterator(begin()); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: [[__nodiscard__]] 612825: const_iterator 612825: cbegin() const noexcept 612825: { return const_iterator(this->_M_impl._M_start); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: [[__nodiscard__]] 612825: const_iterator 612825: cend() const noexcept 612825: { return const_iterator(this->_M_impl._M_finish); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: [[__nodiscard__]] 612825: const_reverse_iterator 612825: crbegin() const noexcept 612825: { return const_reverse_iterator(end()); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: [[__nodiscard__]] 612825: const_reverse_iterator 612825: crend() const noexcept 612825: { return const_reverse_iterator(begin()); } 612825: 612825: 612825: 612825: 612825: 612825: size_type 612825: size() const noexcept 612825: { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } 612825: 612825: 612825: 612825: size_type 612825: max_size() const noexcept 612825: { return _S_max_size(_M_get_Tp_allocator()); } 612825: # 1006 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: void 612825: resize(size_type __new_size) 612825: { 612825: if (__new_size > size()) 612825: _M_default_append(__new_size - size()); 612825: else if (__new_size < size()) 612825: _M_erase_at_end(this->_M_impl._M_start + __new_size); 612825: } 612825: # 1027 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: void 612825: resize(size_type __new_size, const value_type& __x) 612825: { 612825: if (__new_size > size()) 612825: _M_fill_insert(end(), __new_size - size(), __x); 612825: else if (__new_size < size()) 612825: _M_erase_at_end(this->_M_impl._M_start + __new_size); 612825: } 612825: # 1061 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: void 612825: shrink_to_fit() 612825: { _M_shrink_to_fit(); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: size_type 612825: capacity() const noexcept 612825: { return size_type(this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_start); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: bool 612825: empty() const noexcept 612825: { return begin() == end(); } 612825: # 1103 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: void 612825: reserve(size_type __n); 612825: # 1119 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: reference 612825: operator[](size_type __n) noexcept 612825: { 612825: ; 612825: return *(this->_M_impl._M_start + __n); 612825: } 612825: # 1138 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: const_reference 612825: operator[](size_type __n) const noexcept 612825: { 612825: ; 612825: return *(this->_M_impl._M_start + __n); 612825: } 612825: 612825: protected: 612825: 612825: 612825: void 612825: _M_range_check(size_type __n) const 612825: { 612825: if (__n >= this->size()) 612825: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 612825: 612825: , 612825: __n, this->size()); 612825: } 612825: 612825: public: 612825: # 1171 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: reference 612825: at(size_type __n) 612825: { 612825: _M_range_check(__n); 612825: return (*this)[__n]; 612825: } 612825: # 1190 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: const_reference 612825: at(size_type __n) const 612825: { 612825: _M_range_check(__n); 612825: return (*this)[__n]; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: reference 612825: front() noexcept 612825: { 612825: ; 612825: return *begin(); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: const_reference 612825: front() const noexcept 612825: { 612825: ; 612825: return *begin(); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: reference 612825: back() noexcept 612825: { 612825: ; 612825: return *(end() - 1); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: const_reference 612825: back() const noexcept 612825: { 612825: ; 612825: return *(end() - 1); 612825: } 612825: # 1253 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: _Tp* 612825: data() noexcept 612825: { return _M_data_ptr(this->_M_impl._M_start); } 612825: 612825: 612825: const _Tp* 612825: data() const noexcept 612825: { return _M_data_ptr(this->_M_impl._M_start); } 612825: # 1274 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: void 612825: push_back(const value_type& __x) 612825: { 612825: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 612825: { 612825: ; 612825: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 612825: __x); 612825: ++this->_M_impl._M_finish; 612825: ; 612825: } 612825: else 612825: _M_realloc_insert(end(), __x); 612825: } 612825: 612825: 612825: 612825: void 612825: push_back(value_type&& __x) 612825: { emplace_back(std::move(__x)); } 612825: 612825: template 612825: 612825: 612825: 612825: 612825: void 612825: 612825: emplace_back(_Args&&... __args); 612825: # 1315 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: void 612825: pop_back() noexcept 612825: { 612825: ; 612825: --this->_M_impl._M_finish; 612825: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 612825: ; 612825: } 612825: # 1338 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: template 612825: 612825: iterator 612825: emplace(const_iterator __position, _Args&&... __args) 612825: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); } 612825: # 1355 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: iterator 612825: insert(const_iterator __position, const value_type& __x); 612825: # 1386 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: iterator 612825: insert(const_iterator __position, value_type&& __x) 612825: { return _M_insert_rval(__position, std::move(__x)); } 612825: # 1404 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: iterator 612825: insert(const_iterator __position, initializer_list __l) 612825: { 612825: auto __offset = __position - cbegin(); 612825: _M_range_insert(begin() + __offset, __l.begin(), __l.end(), 612825: std::random_access_iterator_tag()); 612825: return begin() + __offset; 612825: } 612825: # 1430 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: iterator 612825: insert(const_iterator __position, size_type __n, const value_type& __x) 612825: { 612825: difference_type __offset = __position - cbegin(); 612825: _M_fill_insert(begin() + __offset, __n, __x); 612825: return begin() + __offset; 612825: } 612825: # 1473 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: template> 612825: 612825: iterator 612825: insert(const_iterator __position, _InputIterator __first, 612825: _InputIterator __last) 612825: { 612825: difference_type __offset = __position - cbegin(); 612825: _M_insert_dispatch(begin() + __offset, 612825: __first, __last, __false_type()); 612825: return begin() + __offset; 612825: } 612825: # 1526 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: iterator 612825: 612825: erase(const_iterator __position) 612825: { return _M_erase(begin() + (__position - cbegin())); } 612825: # 1554 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: iterator 612825: 612825: erase(const_iterator __first, const_iterator __last) 612825: { 612825: const auto __beg = begin(); 612825: const auto __cbeg = cbegin(); 612825: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); 612825: } 612825: # 1579 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: void 612825: swap(vector& __x) noexcept 612825: { 612825: 612825: do { if (std::__is_constant_evaluated() && !bool(_Alloc_traits::propagate_on_container_swap::value || _M_get_Tp_allocator() == __x._M_get_Tp_allocator())) __builtin_unreachable(); } while (false) 612825: ; 612825: 612825: this->_M_impl._M_swap_data(__x._M_impl); 612825: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), 612825: __x._M_get_Tp_allocator()); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: void 612825: clear() noexcept 612825: { _M_erase_at_end(this->_M_impl._M_start); } 612825: 612825: protected: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: pointer 612825: _M_allocate_and_copy(size_type __n, 612825: _ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: pointer __result = this->_M_allocate(__n); 612825: try 612825: { 612825: std::__uninitialized_copy_a(__first, __last, __result, 612825: _M_get_Tp_allocator()); 612825: return __result; 612825: } 612825: catch(...) 612825: { 612825: _M_deallocate(__result, __n); 612825: throw; 612825: } 612825: } 612825: # 1659 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: template 612825: 612825: void 612825: _M_range_initialize(_InputIterator __first, _InputIterator __last, 612825: std::input_iterator_tag) 612825: { 612825: try { 612825: for (; __first != __last; ++__first) 612825: 612825: emplace_back(*__first); 612825: 612825: 612825: 612825: } catch(...) { 612825: clear(); 612825: throw; 612825: } 612825: } 612825: 612825: 612825: template 612825: 612825: void 612825: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, 612825: std::forward_iterator_tag) 612825: { 612825: const size_type __n = std::distance(__first, __last); 612825: this->_M_impl._M_start 612825: = this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator())); 612825: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 612825: this->_M_impl._M_finish = 612825: std::__uninitialized_copy_a(__first, __last, 612825: this->_M_impl._M_start, 612825: _M_get_Tp_allocator()); 612825: } 612825: 612825: 612825: 612825: 612825: void 612825: _M_fill_initialize(size_type __n, const value_type& __value) 612825: { 612825: this->_M_impl._M_finish = 612825: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, 612825: _M_get_Tp_allocator()); 612825: } 612825: 612825: 612825: 612825: 612825: void 612825: _M_default_initialize(size_type __n) 612825: { 612825: this->_M_impl._M_finish = 612825: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, 612825: _M_get_Tp_allocator()); 612825: } 612825: # 1725 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: template 612825: 612825: void 612825: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) 612825: { _M_fill_assign(__n, __val); } 612825: 612825: 612825: template 612825: 612825: void 612825: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, 612825: __false_type) 612825: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 612825: 612825: 612825: template 612825: 612825: void 612825: _M_assign_aux(_InputIterator __first, _InputIterator __last, 612825: std::input_iterator_tag); 612825: 612825: 612825: template 612825: 612825: void 612825: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 612825: std::forward_iterator_tag); 612825: 612825: 612825: 612825: 612825: void 612825: _M_fill_assign(size_type __n, const value_type& __val); 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: void 612825: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, 612825: __true_type) 612825: { _M_fill_insert(__pos, __n, __val); } 612825: 612825: 612825: template 612825: 612825: void 612825: _M_insert_dispatch(iterator __pos, _InputIterator __first, 612825: _InputIterator __last, __false_type) 612825: { 612825: _M_range_insert(__pos, __first, __last, 612825: std::__iterator_category(__first)); 612825: } 612825: 612825: 612825: template 612825: 612825: void 612825: _M_range_insert(iterator __pos, _InputIterator __first, 612825: _InputIterator __last, std::input_iterator_tag); 612825: 612825: 612825: template 612825: 612825: void 612825: _M_range_insert(iterator __pos, _ForwardIterator __first, 612825: _ForwardIterator __last, std::forward_iterator_tag); 612825: 612825: 612825: 612825: 612825: void 612825: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); 612825: 612825: 612825: 612825: 612825: void 612825: _M_default_append(size_type __n); 612825: 612825: 612825: bool 612825: _M_shrink_to_fit(); 612825: # 1824 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: struct _Temporary_value 612825: { 612825: template 612825: explicit 612825: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec) 612825: { 612825: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(), 612825: std::forward<_Args>(__args)...); 612825: } 612825: 612825: 612825: ~_Temporary_value() 612825: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } 612825: 612825: value_type& 612825: _M_val() noexcept { return _M_storage._M_val; } 612825: 612825: private: 612825: _Tp* 612825: _M_ptr() noexcept { return std::__addressof(_M_storage._M_val); } 612825: 612825: union _Storage 612825: { 612825: constexpr _Storage() : _M_byte() { } 612825: ~_Storage() { } 612825: _Storage& operator=(const _Storage&) = delete; 612825: unsigned char _M_byte; 612825: _Tp _M_val; 612825: }; 612825: 612825: vector* _M_this; 612825: _Storage _M_storage; 612825: }; 612825: 612825: 612825: 612825: template 612825: 612825: void 612825: _M_insert_aux(iterator __position, _Arg&& __arg); 612825: 612825: template 612825: 612825: void 612825: _M_realloc_insert(iterator __position, _Args&&... __args); 612825: 612825: 612825: 612825: iterator 612825: _M_insert_rval(const_iterator __position, value_type&& __v); 612825: 612825: 612825: template 612825: 612825: iterator 612825: _M_emplace_aux(const_iterator __position, _Args&&... __args); 612825: 612825: 612825: 612825: iterator 612825: _M_emplace_aux(const_iterator __position, value_type&& __v) 612825: { return _M_insert_rval(__position, std::move(__v)); } 612825: 612825: 612825: 612825: 612825: size_type 612825: _M_check_len(size_type __n, const char* __s) const 612825: { 612825: if (max_size() - size() < __n) 612825: __throw_length_error((__s)); 612825: 612825: const size_type __len = size() + (std::max)(size(), __n); 612825: return (__len < size() || __len > max_size()) ? max_size() : __len; 612825: } 612825: 612825: 612825: static size_type 612825: _S_check_init_len(size_type __n, const allocator_type& __a) 612825: { 612825: if (__n > _S_max_size(_Tp_alloc_type(__a))) 612825: __throw_length_error( 612825: ("cannot create std::vector larger than max_size()")); 612825: return __n; 612825: } 612825: 612825: static size_type 612825: _S_max_size(const _Tp_alloc_type& __a) noexcept 612825: { 612825: 612825: 612825: 612825: const size_t __diffmax 612825: = __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); 612825: const size_t __allocmax = _Alloc_traits::max_size(__a); 612825: return (std::min)(__diffmax, __allocmax); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: void 612825: _M_erase_at_end(pointer __pos) noexcept 612825: { 612825: if (size_type __n = this->_M_impl._M_finish - __pos) 612825: { 612825: std::_Destroy(__pos, this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: this->_M_impl._M_finish = __pos; 612825: ; 612825: } 612825: } 612825: 612825: 612825: iterator 612825: _M_erase(iterator __position); 612825: 612825: 612825: iterator 612825: _M_erase(iterator __first, iterator __last); 612825: 612825: 612825: private: 612825: 612825: 612825: 612825: 612825: void 612825: _M_move_assign(vector&& __x, true_type) noexcept 612825: { 612825: vector __tmp(get_allocator()); 612825: this->_M_impl._M_swap_data(__x._M_impl); 612825: __tmp._M_impl._M_swap_data(__x._M_impl); 612825: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); 612825: } 612825: 612825: 612825: 612825: 612825: void 612825: _M_move_assign(vector&& __x, false_type) 612825: { 612825: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) 612825: _M_move_assign(std::move(__x), true_type()); 612825: else 612825: { 612825: 612825: 612825: this->_M_assign_aux(std::make_move_iterator(__x.begin()), 612825: std::make_move_iterator(__x.end()), 612825: std::random_access_iterator_tag()); 612825: __x.clear(); 612825: } 612825: } 612825: 612825: 612825: template 612825: 612825: _Up* 612825: _M_data_ptr(_Up* __ptr) const noexcept 612825: { return __ptr; } 612825: 612825: 612825: template 612825: 612825: typename std::pointer_traits<_Ptr>::element_type* 612825: _M_data_ptr(_Ptr __ptr) const 612825: { return empty() ? nullptr : std::__to_address(__ptr); } 612825: # 2010 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: }; 612825: # 2032 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: template 612825: 612825: inline bool 612825: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 612825: { return (__x.size() == __y.size() 612825: && std::equal(__x.begin(), __x.end(), __y.begin())); } 612825: # 2072 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: template 612825: inline bool 612825: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 612825: { return std::lexicographical_compare(__x.begin(), __x.end(), 612825: __y.begin(), __y.end()); } 612825: 612825: 612825: template 612825: inline bool 612825: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 612825: { return !(__x == __y); } 612825: 612825: 612825: template 612825: inline bool 612825: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 612825: { return __y < __x; } 612825: 612825: 612825: template 612825: inline bool 612825: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 612825: { return !(__y < __x); } 612825: 612825: 612825: template 612825: inline bool 612825: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) 612825: { return !(__x < __y); } 612825: 612825: 612825: 612825: template 612825: 612825: inline void 612825: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) 612825: noexcept(noexcept(__x.swap(__y))) 612825: { __x.swap(__y); } 612825: 612825: 612825: # 2127 "/usr/include/c++/12/bits/stl_vector.h" 3 612825: 612825: } 612825: # 65 "/usr/include/c++/12/vector" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_bvector.h" 1 3 612825: # 64 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: typedef unsigned long _Bit_type; 612825: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; 612825: 612825: __attribute__((__nonnull__)) 612825: 612825: void 612825: __fill_bvector_n(_Bit_type*, size_t, bool) noexcept; 612825: 612825: 612825: 612825: struct _Bit_reference 612825: { 612825: _Bit_type * _M_p; 612825: _Bit_type _M_mask; 612825: 612825: 612825: _Bit_reference(_Bit_type * __x, _Bit_type __y) 612825: : _M_p(__x), _M_mask(__y) { } 612825: 612825: 612825: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { } 612825: 612825: 612825: _Bit_reference(const _Bit_reference&) = default; 612825: 612825: 612825: 612825: operator bool() const noexcept 612825: { return !!(*_M_p & _M_mask); } 612825: 612825: 612825: _Bit_reference& 612825: operator=(bool __x) noexcept 612825: { 612825: if (__x) 612825: *_M_p |= _M_mask; 612825: else 612825: *_M_p &= ~_M_mask; 612825: return *this; 612825: } 612825: 612825: 612825: _Bit_reference& 612825: operator=(const _Bit_reference& __x) noexcept 612825: { return *this = bool(__x); } 612825: 612825: 612825: bool 612825: operator==(const _Bit_reference& __x) const 612825: { return bool(*this) == bool(__x); } 612825: 612825: 612825: bool 612825: operator<(const _Bit_reference& __x) const 612825: { return !bool(*this) && bool(__x); } 612825: 612825: 612825: void 612825: flip() noexcept 612825: { *_M_p ^= _M_mask; } 612825: 612825: 612825: 612825: friend void 612825: swap(_Bit_reference __x, _Bit_reference __y) noexcept 612825: { 612825: bool __tmp = __x; 612825: __x = __y; 612825: __y = __tmp; 612825: } 612825: 612825: 612825: friend void 612825: swap(_Bit_reference __x, bool& __y) noexcept 612825: { 612825: bool __tmp = __x; 612825: __x = __y; 612825: __y = __tmp; 612825: } 612825: 612825: 612825: friend void 612825: swap(bool& __x, _Bit_reference __y) noexcept 612825: { 612825: bool __tmp = __x; 612825: __x = __y; 612825: __y = __tmp; 612825: } 612825: 612825: }; 612825: 612825: 612825: #pragma GCC diagnostic push 612825: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 612825: struct _Bit_iterator_base 612825: : public std::iterator 612825: { 612825: _Bit_type * _M_p; 612825: unsigned int _M_offset; 612825: 612825: 612825: _Bit_iterator_base(_Bit_type * __x, unsigned int __y) 612825: : _M_p(__x), _M_offset(__y) { } 612825: 612825: 612825: void 612825: _M_bump_up() 612825: { 612825: if (_M_offset++ == int(_S_word_bit) - 1) 612825: { 612825: _M_offset = 0; 612825: ++_M_p; 612825: } 612825: } 612825: 612825: 612825: void 612825: _M_bump_down() 612825: { 612825: if (_M_offset-- == 0) 612825: { 612825: _M_offset = int(_S_word_bit) - 1; 612825: --_M_p; 612825: } 612825: } 612825: 612825: 612825: void 612825: _M_incr(ptrdiff_t __i) 612825: { 612825: difference_type __n = __i + _M_offset; 612825: _M_p += __n / int(_S_word_bit); 612825: __n = __n % int(_S_word_bit); 612825: if (__n < 0) 612825: { 612825: __n += int(_S_word_bit); 612825: --_M_p; 612825: } 612825: _M_offset = static_cast(__n); 612825: } 612825: 612825: 612825: friend bool 612825: operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 612825: { return __x._M_p == __y._M_p && __x._M_offset == __y._M_offset; } 612825: # 225 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: 612825: friend bool 612825: operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 612825: { 612825: return __x._M_p < __y._M_p 612825: || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset); 612825: } 612825: 612825: 612825: friend bool 612825: operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 612825: { return !(__x == __y); } 612825: 612825: 612825: friend bool 612825: operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 612825: { return __y < __x; } 612825: 612825: 612825: friend bool 612825: operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 612825: { return !(__y < __x); } 612825: 612825: 612825: friend bool 612825: operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 612825: { return !(__x < __y); } 612825: 612825: 612825: friend ptrdiff_t 612825: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) 612825: { 612825: return (int(_S_word_bit) * (__x._M_p - __y._M_p) 612825: + __x._M_offset - __y._M_offset); 612825: } 612825: }; 612825: #pragma GCC diagnostic pop 612825: 612825: struct _Bit_iterator : public _Bit_iterator_base 612825: { 612825: typedef _Bit_reference reference; 612825: 612825: 612825: 612825: typedef _Bit_reference* pointer; 612825: 612825: typedef _Bit_iterator iterator; 612825: 612825: 612825: _Bit_iterator() : _Bit_iterator_base(0, 0) { } 612825: 612825: 612825: _Bit_iterator(_Bit_type * __x, unsigned int __y) 612825: : _Bit_iterator_base(__x, __y) { } 612825: 612825: 612825: iterator 612825: _M_const_cast() const 612825: { return *this; } 612825: 612825: 612825: reference 612825: operator*() const 612825: { return reference(_M_p, 1UL << _M_offset); } 612825: 612825: 612825: iterator& 612825: operator++() 612825: { 612825: _M_bump_up(); 612825: return *this; 612825: } 612825: 612825: 612825: iterator 612825: operator++(int) 612825: { 612825: iterator __tmp = *this; 612825: _M_bump_up(); 612825: return __tmp; 612825: } 612825: 612825: 612825: iterator& 612825: operator--() 612825: { 612825: _M_bump_down(); 612825: return *this; 612825: } 612825: 612825: 612825: iterator 612825: operator--(int) 612825: { 612825: iterator __tmp = *this; 612825: _M_bump_down(); 612825: return __tmp; 612825: } 612825: 612825: 612825: iterator& 612825: operator+=(difference_type __i) 612825: { 612825: _M_incr(__i); 612825: return *this; 612825: } 612825: 612825: 612825: iterator& 612825: operator-=(difference_type __i) 612825: { 612825: *this += -__i; 612825: return *this; 612825: } 612825: 612825: 612825: reference 612825: operator[](difference_type __i) const 612825: { return *(*this + __i); } 612825: 612825: 612825: friend iterator 612825: operator+(const iterator& __x, difference_type __n) 612825: { 612825: iterator __tmp = __x; 612825: __tmp += __n; 612825: return __tmp; 612825: } 612825: 612825: 612825: friend iterator 612825: operator+(difference_type __n, const iterator& __x) 612825: { return __x + __n; } 612825: 612825: 612825: friend iterator 612825: operator-(const iterator& __x, difference_type __n) 612825: { 612825: iterator __tmp = __x; 612825: __tmp -= __n; 612825: return __tmp; 612825: } 612825: }; 612825: 612825: struct _Bit_const_iterator : public _Bit_iterator_base 612825: { 612825: typedef bool reference; 612825: typedef bool const_reference; 612825: 612825: 612825: 612825: typedef const bool* pointer; 612825: 612825: typedef _Bit_const_iterator const_iterator; 612825: 612825: 612825: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } 612825: 612825: 612825: _Bit_const_iterator(_Bit_type * __x, unsigned int __y) 612825: : _Bit_iterator_base(__x, __y) { } 612825: 612825: 612825: _Bit_const_iterator(const _Bit_iterator& __x) 612825: : _Bit_iterator_base(__x._M_p, __x._M_offset) { } 612825: 612825: 612825: _Bit_iterator 612825: _M_const_cast() const 612825: { return _Bit_iterator(_M_p, _M_offset); } 612825: 612825: 612825: const_reference 612825: operator*() const 612825: { return _Bit_reference(_M_p, 1UL << _M_offset); } 612825: 612825: 612825: const_iterator& 612825: operator++() 612825: { 612825: _M_bump_up(); 612825: return *this; 612825: } 612825: 612825: 612825: const_iterator 612825: operator++(int) 612825: { 612825: const_iterator __tmp = *this; 612825: _M_bump_up(); 612825: return __tmp; 612825: } 612825: 612825: 612825: const_iterator& 612825: operator--() 612825: { 612825: _M_bump_down(); 612825: return *this; 612825: } 612825: 612825: 612825: const_iterator 612825: operator--(int) 612825: { 612825: const_iterator __tmp = *this; 612825: _M_bump_down(); 612825: return __tmp; 612825: } 612825: 612825: 612825: const_iterator& 612825: operator+=(difference_type __i) 612825: { 612825: _M_incr(__i); 612825: return *this; 612825: } 612825: 612825: 612825: const_iterator& 612825: operator-=(difference_type __i) 612825: { 612825: *this += -__i; 612825: return *this; 612825: } 612825: 612825: 612825: const_reference 612825: operator[](difference_type __i) const 612825: { return *(*this + __i); } 612825: 612825: 612825: friend const_iterator 612825: operator+(const const_iterator& __x, difference_type __n) 612825: { 612825: const_iterator __tmp = __x; 612825: __tmp += __n; 612825: return __tmp; 612825: } 612825: 612825: 612825: friend const_iterator 612825: operator-(const const_iterator& __x, difference_type __n) 612825: { 612825: const_iterator __tmp = __x; 612825: __tmp -= __n; 612825: return __tmp; 612825: } 612825: 612825: 612825: friend const_iterator 612825: operator+(difference_type __n, const const_iterator& __x) 612825: { return __x + __n; } 612825: }; 612825: 612825: template 612825: struct _Bvector_base 612825: { 612825: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template 612825: rebind<_Bit_type>::other _Bit_alloc_type; 612825: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> 612825: _Bit_alloc_traits; 612825: typedef typename _Bit_alloc_traits::pointer _Bit_pointer; 612825: 612825: struct _Bvector_impl_data 612825: { 612825: 612825: _Bit_iterator _M_start; 612825: # 502 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: _Bit_iterator _M_finish; 612825: _Bit_pointer _M_end_of_storage; 612825: 612825: 612825: _Bvector_impl_data() noexcept 612825: : _M_start(), _M_finish(), _M_end_of_storage() 612825: { } 612825: 612825: 612825: _Bvector_impl_data(const _Bvector_impl_data&) = default; 612825: 612825: _Bvector_impl_data& 612825: operator=(const _Bvector_impl_data&) = default; 612825: 612825: 612825: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept 612825: : _Bvector_impl_data(__x) 612825: { __x._M_reset(); } 612825: 612825: 612825: void 612825: _M_move_data(_Bvector_impl_data&& __x) noexcept 612825: { 612825: *this = __x; 612825: __x._M_reset(); 612825: } 612825: 612825: 612825: 612825: void 612825: _M_reset() noexcept 612825: { *this = _Bvector_impl_data(); } 612825: 612825: 612825: void 612825: _M_swap_data(_Bvector_impl_data& __x) noexcept 612825: { 612825: 612825: 612825: std::swap(*this, __x); 612825: } 612825: }; 612825: 612825: struct _Bvector_impl 612825: : public _Bit_alloc_type, public _Bvector_impl_data 612825: { 612825: 612825: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value) 612825: 612825: : _Bit_alloc_type() 612825: { } 612825: 612825: 612825: _Bvector_impl(const _Bit_alloc_type& __a) noexcept 612825: : _Bit_alloc_type(__a) 612825: { } 612825: 612825: 612825: 612825: 612825: 612825: _Bvector_impl(_Bvector_impl&& __x) noexcept 612825: : _Bit_alloc_type(std::move(__x)), _Bvector_impl_data(std::move(__x)) 612825: { } 612825: 612825: 612825: _Bvector_impl(_Bit_alloc_type&& __a, _Bvector_impl&& __x) noexcept 612825: : _Bit_alloc_type(std::move(__a)), _Bvector_impl_data(std::move(__x)) 612825: { } 612825: 612825: 612825: 612825: _Bit_type* 612825: _M_end_addr() const noexcept 612825: { 612825: if (this->_M_end_of_storage) 612825: return std::__addressof(this->_M_end_of_storage[-1]) + 1; 612825: return 0; 612825: } 612825: }; 612825: 612825: public: 612825: typedef _Alloc allocator_type; 612825: 612825: 612825: _Bit_alloc_type& 612825: _M_get_Bit_allocator() noexcept 612825: { return this->_M_impl; } 612825: 612825: 612825: const _Bit_alloc_type& 612825: _M_get_Bit_allocator() const noexcept 612825: { return this->_M_impl; } 612825: 612825: 612825: allocator_type 612825: get_allocator() const noexcept 612825: { return allocator_type(_M_get_Bit_allocator()); } 612825: 612825: 612825: _Bvector_base() = default; 612825: 612825: 612825: 612825: 612825: 612825: _Bvector_base(const allocator_type& __a) 612825: : _M_impl(__a) { } 612825: 612825: 612825: _Bvector_base(_Bvector_base&&) = default; 612825: 612825: 612825: _Bvector_base(_Bvector_base&& __x, const allocator_type& __a) noexcept 612825: : _M_impl(_Bit_alloc_type(__a), std::move(__x._M_impl)) 612825: { } 612825: 612825: 612825: 612825: ~_Bvector_base() 612825: { this->_M_deallocate(); } 612825: 612825: protected: 612825: _Bvector_impl _M_impl; 612825: 612825: 612825: _Bit_pointer 612825: _M_allocate(size_t __n) 612825: { 612825: _Bit_pointer __p = _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); 612825: # 640 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: return __p; 612825: } 612825: 612825: 612825: void 612825: _M_deallocate() 612825: { 612825: if (_M_impl._M_start._M_p) 612825: { 612825: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; 612825: _Bit_alloc_traits::deallocate(_M_impl, 612825: _M_impl._M_end_of_storage - __n, 612825: __n); 612825: _M_impl._M_reset(); 612825: } 612825: } 612825: 612825: 612825: 612825: void 612825: _M_move_data(_Bvector_base&& __x) noexcept 612825: { _M_impl._M_move_data(std::move(__x._M_impl)); } 612825: 612825: 612825: constexpr 612825: static size_t 612825: _S_nword(size_t __n) 612825: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } 612825: }; 612825: # 689 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: template 612825: class vector : protected _Bvector_base<_Alloc> 612825: { 612825: typedef _Bvector_base<_Alloc> _Base; 612825: typedef typename _Base::_Bit_pointer _Bit_pointer; 612825: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; 612825: 612825: 612825: friend struct std::hash; 612825: 612825: 612825: public: 612825: typedef bool value_type; 612825: typedef size_t size_type; 612825: typedef ptrdiff_t difference_type; 612825: typedef _Bit_reference reference; 612825: typedef bool const_reference; 612825: typedef _Bit_reference* pointer; 612825: typedef const bool* const_pointer; 612825: typedef _Bit_iterator iterator; 612825: typedef _Bit_const_iterator const_iterator; 612825: typedef std::reverse_iterator const_reverse_iterator; 612825: typedef std::reverse_iterator reverse_iterator; 612825: typedef _Alloc allocator_type; 612825: 612825: 612825: allocator_type 612825: get_allocator() const 612825: { return _Base::get_allocator(); } 612825: 612825: protected: 612825: using _Base::_M_allocate; 612825: using _Base::_M_deallocate; 612825: using _Base::_S_nword; 612825: using _Base::_M_get_Bit_allocator; 612825: 612825: public: 612825: 612825: vector() = default; 612825: 612825: 612825: 612825: 612825: 612825: explicit 612825: vector(const allocator_type& __a) 612825: : _Base(__a) { } 612825: 612825: 612825: 612825: explicit 612825: vector(size_type __n, const allocator_type& __a = allocator_type()) 612825: : vector(__n, false, __a) 612825: { } 612825: 612825: 612825: vector(size_type __n, const bool& __value, 612825: const allocator_type& __a = allocator_type()) 612825: 612825: 612825: 612825: 612825: 612825: : _Base(__a) 612825: { 612825: _M_initialize(__n); 612825: _M_initialize_value(__value); 612825: } 612825: 612825: 612825: vector(const vector& __x) 612825: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) 612825: { 612825: _M_initialize(__x.size()); 612825: _M_copy_aligned(__x.begin(), __x.end(), begin()); 612825: } 612825: 612825: 612825: vector(vector&&) = default; 612825: 612825: private: 612825: 612825: vector(vector&& __x, const allocator_type& __a, true_type) noexcept 612825: : _Base(std::move(__x), __a) 612825: { } 612825: 612825: 612825: vector(vector&& __x, const allocator_type& __a, false_type) 612825: : _Base(__a) 612825: { 612825: if (__x.get_allocator() == __a) 612825: this->_M_move_data(std::move(__x)); 612825: else 612825: { 612825: _M_initialize(__x.size()); 612825: _M_copy_aligned(__x.begin(), __x.end(), begin()); 612825: __x.clear(); 612825: } 612825: } 612825: 612825: public: 612825: 612825: vector(vector&& __x, const __type_identity_t& __a) 612825: noexcept(_Bit_alloc_traits::_S_always_equal()) 612825: : vector(std::move(__x), __a, 612825: typename _Bit_alloc_traits::is_always_equal{}) 612825: { } 612825: 612825: 612825: vector(const vector& __x, const __type_identity_t& __a) 612825: : _Base(__a) 612825: { 612825: _M_initialize(__x.size()); 612825: _M_copy_aligned(__x.begin(), __x.end(), begin()); 612825: } 612825: 612825: 612825: vector(initializer_list __l, 612825: const allocator_type& __a = allocator_type()) 612825: : _Base(__a) 612825: { 612825: _M_initialize_range(__l.begin(), __l.end(), 612825: random_access_iterator_tag()); 612825: } 612825: 612825: 612825: 612825: template> 612825: 612825: vector(_InputIterator __first, _InputIterator __last, 612825: const allocator_type& __a = allocator_type()) 612825: : _Base(__a) 612825: { 612825: _M_initialize_range(__first, __last, 612825: std::__iterator_category(__first)); 612825: } 612825: # 838 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: 612825: ~vector() noexcept { } 612825: 612825: 612825: vector& 612825: operator=(const vector& __x) 612825: { 612825: if (&__x == this) 612825: return *this; 612825: 612825: if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) 612825: { 612825: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) 612825: { 612825: this->_M_deallocate(); 612825: std::__alloc_on_copy(_M_get_Bit_allocator(), 612825: __x._M_get_Bit_allocator()); 612825: _M_initialize(__x.size()); 612825: } 612825: else 612825: std::__alloc_on_copy(_M_get_Bit_allocator(), 612825: __x._M_get_Bit_allocator()); 612825: } 612825: 612825: if (__x.size() > capacity()) 612825: { 612825: this->_M_deallocate(); 612825: _M_initialize(__x.size()); 612825: } 612825: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 612825: begin()); 612825: return *this; 612825: } 612825: 612825: 612825: 612825: vector& 612825: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) 612825: { 612825: if (_Bit_alloc_traits::_S_propagate_on_move_assign() 612825: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) 612825: { 612825: this->_M_deallocate(); 612825: this->_M_move_data(std::move(__x)); 612825: std::__alloc_on_move(_M_get_Bit_allocator(), 612825: __x._M_get_Bit_allocator()); 612825: } 612825: else 612825: { 612825: if (__x.size() > capacity()) 612825: { 612825: this->_M_deallocate(); 612825: _M_initialize(__x.size()); 612825: } 612825: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), 612825: begin()); 612825: __x.clear(); 612825: } 612825: return *this; 612825: } 612825: 612825: 612825: vector& 612825: operator=(initializer_list __l) 612825: { 612825: this->assign(__l.begin(), __l.end()); 612825: return *this; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: void 612825: assign(size_type __n, const bool& __x) 612825: { _M_fill_assign(__n, __x); } 612825: 612825: 612825: template> 612825: 612825: void 612825: assign(_InputIterator __first, _InputIterator __last) 612825: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } 612825: # 936 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: 612825: void 612825: assign(initializer_list __l) 612825: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } 612825: 612825: 612825: 612825: iterator 612825: begin() noexcept 612825: { return iterator(this->_M_impl._M_start._M_p, 0); } 612825: 612825: 612825: const_iterator 612825: begin() const noexcept 612825: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 612825: 612825: 612825: iterator 612825: end() noexcept 612825: { return this->_M_impl._M_finish; } 612825: 612825: 612825: const_iterator 612825: end() const noexcept 612825: { return this->_M_impl._M_finish; } 612825: 612825: 612825: reverse_iterator 612825: rbegin() noexcept 612825: { return reverse_iterator(end()); } 612825: 612825: 612825: const_reverse_iterator 612825: rbegin() const noexcept 612825: { return const_reverse_iterator(end()); } 612825: 612825: 612825: reverse_iterator 612825: rend() noexcept 612825: { return reverse_iterator(begin()); } 612825: 612825: 612825: const_reverse_iterator 612825: rend() const noexcept 612825: { return const_reverse_iterator(begin()); } 612825: 612825: 612825: [[__nodiscard__]] 612825: const_iterator 612825: cbegin() const noexcept 612825: { return const_iterator(this->_M_impl._M_start._M_p, 0); } 612825: 612825: [[__nodiscard__]] 612825: const_iterator 612825: cend() const noexcept 612825: { return this->_M_impl._M_finish; } 612825: 612825: [[__nodiscard__]] 612825: const_reverse_iterator 612825: crbegin() const noexcept 612825: { return const_reverse_iterator(end()); } 612825: 612825: [[__nodiscard__]] 612825: const_reverse_iterator 612825: crend() const noexcept 612825: { return const_reverse_iterator(begin()); } 612825: 612825: 612825: 612825: size_type 612825: size() const noexcept 612825: { return size_type(end() - begin()); } 612825: 612825: 612825: size_type 612825: max_size() const noexcept 612825: { 612825: const size_type __isize = 612825: __gnu_cxx::__numeric_traits::__max 612825: - int(_S_word_bit) + 1; 612825: const size_type __asize 612825: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); 612825: return (__asize <= __isize / int(_S_word_bit) 612825: ? __asize * int(_S_word_bit) : __isize); 612825: } 612825: 612825: 612825: size_type 612825: capacity() const noexcept 612825: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) 612825: - begin()); } 612825: 612825: 612825: bool 612825: empty() const noexcept 612825: { return begin() == end(); } 612825: 612825: 612825: reference 612825: operator[](size_type __n) 612825: { return begin()[__n]; } 612825: 612825: 612825: const_reference 612825: operator[](size_type __n) const 612825: { return begin()[__n]; } 612825: 612825: protected: 612825: 612825: void 612825: _M_range_check(size_type __n) const 612825: { 612825: if (__n >= this->size()) 612825: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") 612825: 612825: , 612825: __n, this->size()); 612825: } 612825: 612825: public: 612825: 612825: reference 612825: at(size_type __n) 612825: { 612825: _M_range_check(__n); 612825: return (*this)[__n]; 612825: } 612825: 612825: 612825: const_reference 612825: at(size_type __n) const 612825: { 612825: _M_range_check(__n); 612825: return (*this)[__n]; 612825: } 612825: 612825: 612825: void 612825: reserve(size_type __n) 612825: { 612825: if (__n > max_size()) 612825: __throw_length_error(("vector::reserve")); 612825: if (capacity() < __n) 612825: _M_reallocate(__n); 612825: } 612825: 612825: 612825: reference 612825: front() 612825: { return *begin(); } 612825: 612825: 612825: const_reference 612825: front() const 612825: { return *begin(); } 612825: 612825: 612825: reference 612825: back() 612825: { return *(end() - 1); } 612825: 612825: 612825: const_reference 612825: back() const 612825: { return *(end() - 1); } 612825: 612825: 612825: void 612825: push_back(bool __x) 612825: { 612825: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 612825: *this->_M_impl._M_finish++ = __x; 612825: else 612825: _M_insert_aux(end(), __x); 612825: } 612825: 612825: 612825: void 612825: swap(vector& __x) noexcept 612825: { 612825: 612825: do { if (std::__is_constant_evaluated() && !bool(_Bit_alloc_traits::propagate_on_container_swap::value || _M_get_Bit_allocator() == __x._M_get_Bit_allocator())) __builtin_unreachable(); } while (false) 612825: ; 612825: 612825: this->_M_impl._M_swap_data(__x._M_impl); 612825: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), 612825: __x._M_get_Bit_allocator()); 612825: } 612825: 612825: 612825: 612825: static void 612825: swap(reference __x, reference __y) noexcept 612825: { 612825: bool __tmp = __x; 612825: __x = __y; 612825: __y = __tmp; 612825: } 612825: 612825: 612825: iterator 612825: 612825: insert(const_iterator __position, const bool& __x) 612825: 612825: 612825: 612825: { 612825: const difference_type __n = __position - begin(); 612825: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() 612825: && __position == end()) 612825: *this->_M_impl._M_finish++ = __x; 612825: else 612825: _M_insert_aux(__position._M_const_cast(), __x); 612825: return begin() + __n; 612825: } 612825: 612825: 612825: __attribute__ ((__deprecated__ ("use '" "insert(position, false)" "' instead"))) 612825: iterator 612825: insert(const_iterator __position) 612825: { return this->insert(__position._M_const_cast(), false); } 612825: 612825: 612825: 612825: template> 612825: 612825: iterator 612825: insert(const_iterator __position, 612825: _InputIterator __first, _InputIterator __last) 612825: { 612825: difference_type __offset = __position - cbegin(); 612825: _M_insert_range(__position._M_const_cast(), 612825: __first, __last, 612825: std::__iterator_category(__first)); 612825: return begin() + __offset; 612825: } 612825: # 1186 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: 612825: iterator 612825: insert(const_iterator __position, size_type __n, const bool& __x) 612825: { 612825: difference_type __offset = __position - cbegin(); 612825: _M_fill_insert(__position._M_const_cast(), __n, __x); 612825: return begin() + __offset; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: iterator 612825: insert(const_iterator __p, initializer_list __l) 612825: { return this->insert(__p, __l.begin(), __l.end()); } 612825: 612825: 612825: 612825: void 612825: pop_back() 612825: { --this->_M_impl._M_finish; } 612825: 612825: 612825: iterator 612825: 612825: erase(const_iterator __position) 612825: 612825: 612825: 612825: { return _M_erase(__position._M_const_cast()); } 612825: 612825: 612825: iterator 612825: 612825: erase(const_iterator __first, const_iterator __last) 612825: 612825: 612825: 612825: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } 612825: 612825: 612825: void 612825: resize(size_type __new_size, bool __x = bool()) 612825: { 612825: if (__new_size < size()) 612825: _M_erase_at_end(begin() + difference_type(__new_size)); 612825: else 612825: insert(end(), __new_size - size(), __x); 612825: } 612825: 612825: 612825: 612825: void 612825: shrink_to_fit() 612825: { _M_shrink_to_fit(); } 612825: 612825: 612825: 612825: void 612825: flip() noexcept 612825: { 612825: _Bit_type * const __end = this->_M_impl._M_end_addr(); 612825: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) 612825: *__p = ~*__p; 612825: } 612825: 612825: 612825: void 612825: clear() noexcept 612825: { _M_erase_at_end(begin()); } 612825: 612825: 612825: template 612825: 612825: 612825: 612825: 612825: void 612825: 612825: emplace_back(_Args&&... __args) 612825: { 612825: push_back(bool(__args...)); 612825: 612825: 612825: 612825: } 612825: 612825: template 612825: 612825: iterator 612825: emplace(const_iterator __pos, _Args&&... __args) 612825: { return insert(__pos, bool(__args...)); } 612825: 612825: 612825: protected: 612825: 612825: 612825: iterator 612825: _M_copy_aligned(const_iterator __first, const_iterator __last, 612825: iterator __result) 612825: { 612825: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); 612825: return std::copy(const_iterator(__last._M_p, 0), __last, 612825: iterator(__q, 0)); 612825: } 612825: 612825: 612825: void 612825: _M_initialize(size_type __n) 612825: { 612825: if (__n) 612825: { 612825: _Bit_pointer __q = this->_M_allocate(__n); 612825: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 612825: iterator __start = iterator(std::__addressof(*__q), 0); 612825: this->_M_impl._M_start = __start; 612825: this->_M_impl._M_finish = __start + difference_type(__n); 612825: } 612825: } 612825: 612825: 612825: void 612825: _M_initialize_value(bool __x) noexcept 612825: { 612825: if (_Bit_type* __p = this->_M_impl._M_start._M_p) 612825: __fill_bvector_n(__p, this->_M_impl._M_end_addr() - __p, __x); 612825: } 612825: 612825: 612825: void 612825: _M_reallocate(size_type __n); 612825: 612825: 612825: 612825: bool 612825: _M_shrink_to_fit(); 612825: # 1347 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: template 612825: 612825: void 612825: _M_initialize_range(_InputIterator __first, _InputIterator __last, 612825: std::input_iterator_tag) 612825: { 612825: for (; __first != __last; ++__first) 612825: push_back(*__first); 612825: } 612825: 612825: template 612825: 612825: void 612825: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, 612825: std::forward_iterator_tag) 612825: { 612825: const size_type __n = std::distance(__first, __last); 612825: _M_initialize(__n); 612825: std::copy(__first, __last, begin()); 612825: } 612825: # 1383 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: 612825: void 612825: _M_fill_assign(size_t __n, bool __x) 612825: { 612825: if (__n > size()) 612825: { 612825: _M_initialize_value(__x); 612825: insert(end(), __n - size(), __x); 612825: } 612825: else 612825: { 612825: _M_erase_at_end(begin() + __n); 612825: _M_initialize_value(__x); 612825: } 612825: } 612825: 612825: template 612825: 612825: void 612825: _M_assign_aux(_InputIterator __first, _InputIterator __last, 612825: std::input_iterator_tag) 612825: { 612825: iterator __cur = begin(); 612825: for (; __first != __last && __cur != end(); ++__cur, (void)++__first) 612825: *__cur = *__first; 612825: if (__first == __last) 612825: _M_erase_at_end(__cur); 612825: else 612825: insert(end(), __first, __last); 612825: } 612825: 612825: template 612825: 612825: void 612825: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 612825: std::forward_iterator_tag) 612825: { 612825: const size_type __len = std::distance(__first, __last); 612825: if (__len < size()) 612825: _M_erase_at_end(std::copy(__first, __last, begin())); 612825: else 612825: { 612825: _ForwardIterator __mid = __first; 612825: std::advance(__mid, size()); 612825: std::copy(__first, __mid, begin()); 612825: insert(end(), __mid, __last); 612825: } 612825: } 612825: # 1450 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: 612825: void 612825: _M_fill_insert(iterator __position, size_type __n, bool __x); 612825: 612825: template 612825: 612825: void 612825: _M_insert_range(iterator __pos, _InputIterator __first, 612825: _InputIterator __last, std::input_iterator_tag) 612825: { 612825: for (; __first != __last; ++__first) 612825: { 612825: __pos = insert(__pos, *__first); 612825: ++__pos; 612825: } 612825: } 612825: 612825: template 612825: 612825: void 612825: _M_insert_range(iterator __position, _ForwardIterator __first, 612825: _ForwardIterator __last, std::forward_iterator_tag); 612825: 612825: 612825: void 612825: _M_insert_aux(iterator __position, bool __x); 612825: 612825: 612825: size_type 612825: _M_check_len(size_type __n, const char* __s) const 612825: { 612825: if (max_size() - size() < __n) 612825: __throw_length_error((__s)); 612825: 612825: const size_type __len = size() + std::max(size(), __n); 612825: return (__len < size() || __len > max_size()) ? max_size() : __len; 612825: } 612825: 612825: 612825: void 612825: _M_erase_at_end(iterator __pos) 612825: { this->_M_impl._M_finish = __pos; } 612825: 612825: 612825: iterator 612825: _M_erase(iterator __pos); 612825: 612825: 612825: iterator 612825: _M_erase(iterator __first, iterator __last); 612825: 612825: protected: 612825: 612825: 612825: 612825: 612825: 612825: 612825: void data() = delete; 612825: 612825: 612825: 612825: }; 612825: 612825: 612825: 612825: 612825: 612825: inline void 612825: __fill_bvector(_Bit_type* __v, unsigned int __first, unsigned int __last, 612825: bool __x) noexcept 612825: { 612825: const _Bit_type __fmask = ~0ul << __first; 612825: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); 612825: const _Bit_type __mask = __fmask & __lmask; 612825: 612825: if (__x) 612825: *__v |= __mask; 612825: else 612825: *__v &= ~__mask; 612825: } 612825: 612825: 612825: __attribute__((__nonnull__)) 612825: 612825: inline void 612825: __fill_bvector_n(_Bit_type* __p, size_t __n, bool __x) noexcept 612825: { 612825: # 1546 "/usr/include/c++/12/bits/stl_bvector.h" 3 612825: __builtin_memset(__p, __x ? ~0 : 0, __n * sizeof(_Bit_type)); 612825: } 612825: 612825: 612825: 612825: inline void 612825: __fill_a1(std::_Bit_iterator __first, 612825: std::_Bit_iterator __last, const bool& __x) 612825: { 612825: if (__first._M_p != __last._M_p) 612825: { 612825: _Bit_type* __first_p = __first._M_p; 612825: if (__first._M_offset != 0) 612825: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); 612825: 612825: __fill_bvector_n(__first_p, __last._M_p - __first_p, __x); 612825: 612825: if (__last._M_offset != 0) 612825: __fill_bvector(__last._M_p, 0, __last._M_offset, __x); 612825: } 612825: else if (__first._M_offset != __last._M_offset) 612825: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: struct hash> 612825: : public __hash_base> 612825: { 612825: size_t 612825: operator()(const std::vector&) const noexcept; 612825: }; 612825: 612825: 612825: 612825: } 612825: # 66 "/usr/include/c++/12/vector" 2 3 612825: 612825: # 1 "/usr/include/c++/12/bits/range_access.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/range_access.h" 3 612825: 612825: # 34 "/usr/include/c++/12/bits/range_access.h" 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline auto 612825: begin(_Container& __cont) -> decltype(__cont.begin()) 612825: { return __cont.begin(); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline auto 612825: begin(const _Container& __cont) -> decltype(__cont.begin()) 612825: { return __cont.begin(); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline auto 612825: end(_Container& __cont) -> decltype(__cont.end()) 612825: { return __cont.end(); } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline auto 612825: end(const _Container& __cont) -> decltype(__cont.end()) 612825: { return __cont.end(); } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline _Tp* 612825: begin(_Tp (&__arr)[_Nm]) noexcept 612825: { return __arr; } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: [[__nodiscard__]] 612825: inline _Tp* 612825: end(_Tp (&__arr)[_Nm]) noexcept 612825: { return __arr + _Nm; } 612825: # 367 "/usr/include/c++/12/bits/range_access.h" 3 612825: 612825: } 612825: # 68 "/usr/include/c++/12/vector" 2 3 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/vector.tcc" 1 3 612825: # 59 "/usr/include/c++/12/bits/vector.tcc" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: template 612825: 612825: void 612825: vector<_Tp, _Alloc>:: 612825: reserve(size_type __n) 612825: { 612825: if (__n > this->max_size()) 612825: __throw_length_error(("vector::reserve")); 612825: if (this->capacity() < __n) 612825: { 612825: const size_type __old_size = size(); 612825: pointer __tmp; 612825: 612825: if (_S_use_relocate()) 612825: { 612825: __tmp = this->_M_allocate(__n); 612825: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 612825: __tmp, _M_get_Tp_allocator()); 612825: } 612825: else 612825: 612825: { 612825: __tmp = _M_allocate_and_copy(__n, 612825: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), 612825: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); 612825: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: } 612825: ; 612825: _M_deallocate(this->_M_impl._M_start, 612825: this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_start); 612825: this->_M_impl._M_start = __tmp; 612825: this->_M_impl._M_finish = __tmp + __old_size; 612825: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; 612825: } 612825: } 612825: 612825: 612825: template 612825: template 612825: 612825: 612825: 612825: 612825: void 612825: 612825: vector<_Tp, _Alloc>:: 612825: emplace_back(_Args&&... __args) 612825: { 612825: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 612825: { 612825: ; 612825: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 612825: std::forward<_Args>(__args)...); 612825: ++this->_M_impl._M_finish; 612825: ; 612825: } 612825: else 612825: _M_realloc_insert(end(), std::forward<_Args>(__args)...); 612825: 612825: 612825: 612825: } 612825: 612825: 612825: template 612825: 612825: typename vector<_Tp, _Alloc>::iterator 612825: vector<_Tp, _Alloc>:: 612825: 612825: insert(const_iterator __position, const value_type& __x) 612825: 612825: 612825: 612825: { 612825: const size_type __n = __position - begin(); 612825: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 612825: if (__position == end()) 612825: { 612825: ; 612825: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 612825: __x); 612825: ++this->_M_impl._M_finish; 612825: ; 612825: } 612825: else 612825: { 612825: 612825: const auto __pos = begin() + (__position - cbegin()); 612825: 612825: 612825: _Temporary_value __x_copy(this, __x); 612825: _M_insert_aux(__pos, std::move(__x_copy._M_val())); 612825: 612825: 612825: 612825: } 612825: else 612825: 612825: _M_realloc_insert(begin() + (__position - cbegin()), __x); 612825: 612825: 612825: 612825: 612825: return iterator(this->_M_impl._M_start + __n); 612825: } 612825: 612825: template 612825: 612825: typename vector<_Tp, _Alloc>::iterator 612825: vector<_Tp, _Alloc>:: 612825: _M_erase(iterator __position) 612825: { 612825: if (__position + 1 != end()) 612825: std::move(__position + 1, end(), __position); 612825: --this->_M_impl._M_finish; 612825: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); 612825: ; 612825: return __position; 612825: } 612825: 612825: template 612825: 612825: typename vector<_Tp, _Alloc>::iterator 612825: vector<_Tp, _Alloc>:: 612825: _M_erase(iterator __first, iterator __last) 612825: { 612825: if (__first != __last) 612825: { 612825: if (__last != end()) 612825: std::move(__last, end(), __first); 612825: _M_erase_at_end(__first.base() + (end() - __last)); 612825: } 612825: return __first; 612825: } 612825: 612825: template 612825: 612825: vector<_Tp, _Alloc>& 612825: vector<_Tp, _Alloc>:: 612825: operator=(const vector<_Tp, _Alloc>& __x) 612825: { 612825: if (std::__addressof(__x) != this) 612825: { 612825: ; 612825: 612825: if (_Alloc_traits::_S_propagate_on_copy_assign()) 612825: { 612825: if (!_Alloc_traits::_S_always_equal() 612825: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) 612825: { 612825: 612825: this->clear(); 612825: _M_deallocate(this->_M_impl._M_start, 612825: this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_start); 612825: this->_M_impl._M_start = nullptr; 612825: this->_M_impl._M_finish = nullptr; 612825: this->_M_impl._M_end_of_storage = nullptr; 612825: } 612825: std::__alloc_on_copy(_M_get_Tp_allocator(), 612825: __x._M_get_Tp_allocator()); 612825: } 612825: 612825: const size_type __xlen = __x.size(); 612825: if (__xlen > capacity()) 612825: { 612825: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), 612825: __x.end()); 612825: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: _M_deallocate(this->_M_impl._M_start, 612825: this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_start); 612825: this->_M_impl._M_start = __tmp; 612825: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; 612825: } 612825: else if (size() >= __xlen) 612825: { 612825: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), 612825: end(), _M_get_Tp_allocator()); 612825: } 612825: else 612825: { 612825: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), 612825: this->_M_impl._M_start); 612825: std::__uninitialized_copy_a(__x._M_impl._M_start + size(), 612825: __x._M_impl._M_finish, 612825: this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: } 612825: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; 612825: } 612825: return *this; 612825: } 612825: 612825: template 612825: 612825: void 612825: vector<_Tp, _Alloc>:: 612825: _M_fill_assign(size_t __n, const value_type& __val) 612825: { 612825: if (__n > capacity()) 612825: { 612825: vector __tmp(__n, __val, _M_get_Tp_allocator()); 612825: __tmp._M_impl._M_swap_data(this->_M_impl); 612825: } 612825: else if (__n > size()) 612825: { 612825: std::fill(begin(), end(), __val); 612825: const size_type __add = __n - size(); 612825: ; 612825: this->_M_impl._M_finish = 612825: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 612825: __add, __val, _M_get_Tp_allocator()); 612825: ; 612825: } 612825: else 612825: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); 612825: } 612825: 612825: template 612825: template 612825: 612825: void 612825: vector<_Tp, _Alloc>:: 612825: _M_assign_aux(_InputIterator __first, _InputIterator __last, 612825: std::input_iterator_tag) 612825: { 612825: pointer __cur(this->_M_impl._M_start); 612825: for (; __first != __last && __cur != this->_M_impl._M_finish; 612825: ++__cur, (void)++__first) 612825: *__cur = *__first; 612825: if (__first == __last) 612825: _M_erase_at_end(__cur); 612825: else 612825: _M_range_insert(end(), __first, __last, 612825: std::__iterator_category(__first)); 612825: } 612825: 612825: template 612825: template 612825: 612825: void 612825: vector<_Tp, _Alloc>:: 612825: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, 612825: std::forward_iterator_tag) 612825: { 612825: const size_type __len = std::distance(__first, __last); 612825: 612825: if (__len > capacity()) 612825: { 612825: _S_check_init_len(__len, _M_get_Tp_allocator()); 612825: pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); 612825: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: ; 612825: _M_deallocate(this->_M_impl._M_start, 612825: this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_start); 612825: this->_M_impl._M_start = __tmp; 612825: this->_M_impl._M_finish = this->_M_impl._M_start + __len; 612825: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; 612825: } 612825: else if (size() >= __len) 612825: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); 612825: else 612825: { 612825: _ForwardIterator __mid = __first; 612825: std::advance(__mid, size()); 612825: std::copy(__first, __mid, this->_M_impl._M_start); 612825: const size_type __attribute__((__unused__)) __n = __len - size(); 612825: ; 612825: this->_M_impl._M_finish = 612825: std::__uninitialized_copy_a(__mid, __last, 612825: this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: ; 612825: } 612825: } 612825: 612825: 612825: template 612825: 612825: auto 612825: vector<_Tp, _Alloc>:: 612825: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator 612825: { 612825: const auto __n = __position - cbegin(); 612825: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 612825: if (__position == cend()) 612825: { 612825: ; 612825: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 612825: std::move(__v)); 612825: ++this->_M_impl._M_finish; 612825: ; 612825: } 612825: else 612825: _M_insert_aux(begin() + __n, std::move(__v)); 612825: else 612825: _M_realloc_insert(begin() + __n, std::move(__v)); 612825: 612825: return iterator(this->_M_impl._M_start + __n); 612825: } 612825: 612825: template 612825: template 612825: 612825: auto 612825: vector<_Tp, _Alloc>:: 612825: _M_emplace_aux(const_iterator __position, _Args&&... __args) 612825: -> iterator 612825: { 612825: const auto __n = __position - cbegin(); 612825: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) 612825: if (__position == cend()) 612825: { 612825: ; 612825: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 612825: std::forward<_Args>(__args)...); 612825: ++this->_M_impl._M_finish; 612825: ; 612825: } 612825: else 612825: { 612825: 612825: 612825: 612825: _Temporary_value __tmp(this, std::forward<_Args>(__args)...); 612825: _M_insert_aux(begin() + __n, std::move(__tmp._M_val())); 612825: } 612825: else 612825: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...); 612825: 612825: return iterator(this->_M_impl._M_start + __n); 612825: } 612825: 612825: template 612825: template 612825: 612825: void 612825: vector<_Tp, _Alloc>:: 612825: _M_insert_aux(iterator __position, _Arg&& __arg) 612825: 612825: 612825: 612825: 612825: 612825: 612825: { 612825: ; 612825: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, 612825: std::move(*(this->_M_impl._M_finish - 1))); 612825: ++this->_M_impl._M_finish; 612825: ; 612825: 612825: 612825: 612825: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) 612825: 612825: ; 612825: 612825: 612825: 612825: *__position = std::forward<_Arg>(__arg); 612825: 612825: } 612825: 612825: 612825: template 612825: template 612825: 612825: void 612825: vector<_Tp, _Alloc>:: 612825: _M_realloc_insert(iterator __position, _Args&&... __args) 612825: 612825: 612825: 612825: 612825: 612825: 612825: { 612825: const size_type __len = 612825: _M_check_len(size_type(1), "vector::_M_realloc_insert"); 612825: pointer __old_start = this->_M_impl._M_start; 612825: pointer __old_finish = this->_M_impl._M_finish; 612825: const size_type __elems_before = __position - begin(); 612825: pointer __new_start(this->_M_allocate(__len)); 612825: pointer __new_finish(__new_start); 612825: try 612825: { 612825: 612825: 612825: 612825: 612825: 612825: _Alloc_traits::construct(this->_M_impl, 612825: __new_start + __elems_before, 612825: 612825: std::forward<_Args>(__args)...); 612825: 612825: 612825: 612825: __new_finish = pointer(); 612825: 612825: 612825: if (_S_use_relocate()) 612825: { 612825: __new_finish = _S_relocate(__old_start, __position.base(), 612825: __new_start, _M_get_Tp_allocator()); 612825: 612825: ++__new_finish; 612825: 612825: __new_finish = _S_relocate(__position.base(), __old_finish, 612825: __new_finish, _M_get_Tp_allocator()); 612825: } 612825: else 612825: 612825: { 612825: __new_finish 612825: = std::__uninitialized_move_if_noexcept_a 612825: (__old_start, __position.base(), 612825: __new_start, _M_get_Tp_allocator()); 612825: 612825: ++__new_finish; 612825: 612825: __new_finish 612825: = std::__uninitialized_move_if_noexcept_a 612825: (__position.base(), __old_finish, 612825: __new_finish, _M_get_Tp_allocator()); 612825: } 612825: } 612825: catch(...) 612825: { 612825: if (!__new_finish) 612825: _Alloc_traits::destroy(this->_M_impl, 612825: __new_start + __elems_before); 612825: else 612825: std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator()); 612825: _M_deallocate(__new_start, __len); 612825: throw; 612825: } 612825: 612825: if (!_S_use_relocate()) 612825: 612825: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); 612825: ; 612825: _M_deallocate(__old_start, 612825: this->_M_impl._M_end_of_storage - __old_start); 612825: this->_M_impl._M_start = __new_start; 612825: this->_M_impl._M_finish = __new_finish; 612825: this->_M_impl._M_end_of_storage = __new_start + __len; 612825: } 612825: 612825: template 612825: 612825: void 612825: vector<_Tp, _Alloc>:: 612825: _M_fill_insert(iterator __position, size_type __n, const value_type& __x) 612825: { 612825: if (__n != 0) 612825: { 612825: if (size_type(this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_finish) >= __n) 612825: { 612825: 612825: 612825: 612825: _Temporary_value __tmp(this, __x); 612825: value_type& __x_copy = __tmp._M_val(); 612825: 612825: const size_type __elems_after = end() - __position; 612825: pointer __old_finish(this->_M_impl._M_finish); 612825: if (__elems_after > __n) 612825: { 612825: ; 612825: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 612825: this->_M_impl._M_finish, 612825: this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: this->_M_impl._M_finish += __n; 612825: ; 612825: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 612825: ; 612825: std::fill(__position.base(), __position.base() + __n, 612825: __x_copy); 612825: } 612825: else 612825: { 612825: ; 612825: this->_M_impl._M_finish = 612825: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, 612825: __n - __elems_after, 612825: __x_copy, 612825: _M_get_Tp_allocator()); 612825: ; 612825: std::__uninitialized_move_a(__position.base(), __old_finish, 612825: this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: this->_M_impl._M_finish += __elems_after; 612825: ; 612825: std::fill(__position.base(), __old_finish, __x_copy); 612825: } 612825: } 612825: else 612825: { 612825: const size_type __len = 612825: _M_check_len(__n, "vector::_M_fill_insert"); 612825: const size_type __elems_before = __position - begin(); 612825: pointer __new_start(this->_M_allocate(__len)); 612825: pointer __new_finish(__new_start); 612825: try 612825: { 612825: 612825: std::__uninitialized_fill_n_a(__new_start + __elems_before, 612825: __n, __x, 612825: _M_get_Tp_allocator()); 612825: __new_finish = pointer(); 612825: 612825: __new_finish 612825: = std::__uninitialized_move_if_noexcept_a 612825: (this->_M_impl._M_start, __position.base(), 612825: __new_start, _M_get_Tp_allocator()); 612825: 612825: __new_finish += __n; 612825: 612825: __new_finish 612825: = std::__uninitialized_move_if_noexcept_a 612825: (__position.base(), this->_M_impl._M_finish, 612825: __new_finish, _M_get_Tp_allocator()); 612825: } 612825: catch(...) 612825: { 612825: if (!__new_finish) 612825: std::_Destroy(__new_start + __elems_before, 612825: __new_start + __elems_before + __n, 612825: _M_get_Tp_allocator()); 612825: else 612825: std::_Destroy(__new_start, __new_finish, 612825: _M_get_Tp_allocator()); 612825: _M_deallocate(__new_start, __len); 612825: throw; 612825: } 612825: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: ; 612825: _M_deallocate(this->_M_impl._M_start, 612825: this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_start); 612825: this->_M_impl._M_start = __new_start; 612825: this->_M_impl._M_finish = __new_finish; 612825: this->_M_impl._M_end_of_storage = __new_start + __len; 612825: } 612825: } 612825: } 612825: 612825: 612825: template 612825: 612825: void 612825: vector<_Tp, _Alloc>:: 612825: _M_default_append(size_type __n) 612825: { 612825: if (__n != 0) 612825: { 612825: const size_type __size = size(); 612825: size_type __navail = size_type(this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_finish); 612825: 612825: if (__size > max_size() || __navail > max_size() - __size) 612825: __builtin_unreachable(); 612825: 612825: if (__navail >= __n) 612825: { 612825: ; 612825: this->_M_impl._M_finish = 612825: std::__uninitialized_default_n_a(this->_M_impl._M_finish, 612825: __n, _M_get_Tp_allocator()); 612825: ; 612825: } 612825: else 612825: { 612825: const size_type __len = 612825: _M_check_len(__n, "vector::_M_default_append"); 612825: pointer __new_start(this->_M_allocate(__len)); 612825: if (_S_use_relocate()) 612825: { 612825: try 612825: { 612825: std::__uninitialized_default_n_a(__new_start + __size, 612825: __n, _M_get_Tp_allocator()); 612825: } 612825: catch(...) 612825: { 612825: _M_deallocate(__new_start, __len); 612825: throw; 612825: } 612825: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 612825: __new_start, _M_get_Tp_allocator()); 612825: } 612825: else 612825: { 612825: pointer __destroy_from = pointer(); 612825: try 612825: { 612825: std::__uninitialized_default_n_a(__new_start + __size, 612825: __n, _M_get_Tp_allocator()); 612825: __destroy_from = __new_start + __size; 612825: std::__uninitialized_move_if_noexcept_a( 612825: this->_M_impl._M_start, this->_M_impl._M_finish, 612825: __new_start, _M_get_Tp_allocator()); 612825: } 612825: catch(...) 612825: { 612825: if (__destroy_from) 612825: std::_Destroy(__destroy_from, __destroy_from + __n, 612825: _M_get_Tp_allocator()); 612825: _M_deallocate(__new_start, __len); 612825: throw; 612825: } 612825: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: } 612825: ; 612825: _M_deallocate(this->_M_impl._M_start, 612825: this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_start); 612825: this->_M_impl._M_start = __new_start; 612825: this->_M_impl._M_finish = __new_start + __size + __n; 612825: this->_M_impl._M_end_of_storage = __new_start + __len; 612825: } 612825: } 612825: } 612825: 612825: template 612825: 612825: bool 612825: vector<_Tp, _Alloc>:: 612825: _M_shrink_to_fit() 612825: { 612825: if (capacity() == size()) 612825: return false; 612825: ; 612825: return std::__shrink_to_fit_aux::_S_do_it(*this); 612825: } 612825: 612825: 612825: template 612825: template 612825: 612825: void 612825: vector<_Tp, _Alloc>:: 612825: _M_range_insert(iterator __pos, _InputIterator __first, 612825: _InputIterator __last, std::input_iterator_tag) 612825: { 612825: if (__pos == end()) 612825: { 612825: for (; __first != __last; ++__first) 612825: insert(end(), *__first); 612825: } 612825: else if (__first != __last) 612825: { 612825: vector __tmp(__first, __last, _M_get_Tp_allocator()); 612825: insert(__pos, 612825: std::make_move_iterator(__tmp.begin()), 612825: std::make_move_iterator(__tmp.end())); 612825: } 612825: } 612825: 612825: template 612825: template 612825: 612825: void 612825: vector<_Tp, _Alloc>:: 612825: _M_range_insert(iterator __position, _ForwardIterator __first, 612825: _ForwardIterator __last, std::forward_iterator_tag) 612825: { 612825: if (__first != __last) 612825: { 612825: const size_type __n = std::distance(__first, __last); 612825: if (size_type(this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_finish) >= __n) 612825: { 612825: const size_type __elems_after = end() - __position; 612825: pointer __old_finish(this->_M_impl._M_finish); 612825: if (__elems_after > __n) 612825: { 612825: ; 612825: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, 612825: this->_M_impl._M_finish, 612825: this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: this->_M_impl._M_finish += __n; 612825: ; 612825: std::move_backward(__position.base(), __old_finish - __n, __old_finish) 612825: ; 612825: std::copy(__first, __last, __position); 612825: } 612825: else 612825: { 612825: _ForwardIterator __mid = __first; 612825: std::advance(__mid, __elems_after); 612825: ; 612825: std::__uninitialized_copy_a(__mid, __last, 612825: this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: this->_M_impl._M_finish += __n - __elems_after; 612825: ; 612825: std::__uninitialized_move_a(__position.base(), 612825: __old_finish, 612825: this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: this->_M_impl._M_finish += __elems_after; 612825: ; 612825: std::copy(__first, __mid, __position); 612825: } 612825: } 612825: else 612825: { 612825: const size_type __len = 612825: _M_check_len(__n, "vector::_M_range_insert"); 612825: pointer __new_start(this->_M_allocate(__len)); 612825: pointer __new_finish(__new_start); 612825: try 612825: { 612825: __new_finish 612825: = std::__uninitialized_move_if_noexcept_a 612825: (this->_M_impl._M_start, __position.base(), 612825: __new_start, _M_get_Tp_allocator()); 612825: __new_finish 612825: = std::__uninitialized_copy_a(__first, __last, 612825: __new_finish, 612825: _M_get_Tp_allocator()); 612825: __new_finish 612825: = std::__uninitialized_move_if_noexcept_a 612825: (__position.base(), this->_M_impl._M_finish, 612825: __new_finish, _M_get_Tp_allocator()); 612825: } 612825: catch(...) 612825: { 612825: std::_Destroy(__new_start, __new_finish, 612825: _M_get_Tp_allocator()); 612825: _M_deallocate(__new_start, __len); 612825: throw; 612825: } 612825: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 612825: _M_get_Tp_allocator()); 612825: ; 612825: _M_deallocate(this->_M_impl._M_start, 612825: this->_M_impl._M_end_of_storage 612825: - this->_M_impl._M_start); 612825: this->_M_impl._M_start = __new_start; 612825: this->_M_impl._M_finish = __new_finish; 612825: this->_M_impl._M_end_of_storage = __new_start + __len; 612825: } 612825: } 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: void 612825: vector:: 612825: _M_reallocate(size_type __n) 612825: { 612825: _Bit_pointer __q = this->_M_allocate(__n); 612825: iterator __start(std::__addressof(*__q), 0); 612825: iterator __finish(_M_copy_aligned(begin(), end(), __start)); 612825: this->_M_deallocate(); 612825: this->_M_impl._M_start = __start; 612825: this->_M_impl._M_finish = __finish; 612825: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); 612825: } 612825: 612825: template 612825: 612825: void 612825: vector:: 612825: _M_fill_insert(iterator __position, size_type __n, bool __x) 612825: { 612825: if (__n == 0) 612825: return; 612825: if (capacity() - size() >= __n) 612825: { 612825: std::copy_backward(__position, end(), 612825: this->_M_impl._M_finish + difference_type(__n)); 612825: std::fill(__position, __position + difference_type(__n), __x); 612825: this->_M_impl._M_finish += difference_type(__n); 612825: } 612825: else 612825: { 612825: const size_type __len = 612825: _M_check_len(__n, "vector::_M_fill_insert"); 612825: _Bit_pointer __q = this->_M_allocate(__len); 612825: iterator __start(std::__addressof(*__q), 0); 612825: iterator __i = _M_copy_aligned(begin(), __position, __start); 612825: std::fill(__i, __i + difference_type(__n), __x); 612825: iterator __finish = std::copy(__position, end(), 612825: __i + difference_type(__n)); 612825: this->_M_deallocate(); 612825: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 612825: this->_M_impl._M_start = __start; 612825: this->_M_impl._M_finish = __finish; 612825: } 612825: } 612825: 612825: template 612825: template 612825: 612825: void 612825: vector:: 612825: _M_insert_range(iterator __position, _ForwardIterator __first, 612825: _ForwardIterator __last, std::forward_iterator_tag) 612825: { 612825: if (__first != __last) 612825: { 612825: size_type __n = std::distance(__first, __last); 612825: if (capacity() - size() >= __n) 612825: { 612825: std::copy_backward(__position, end(), 612825: this->_M_impl._M_finish 612825: + difference_type(__n)); 612825: std::copy(__first, __last, __position); 612825: this->_M_impl._M_finish += difference_type(__n); 612825: } 612825: else 612825: { 612825: const size_type __len = 612825: _M_check_len(__n, "vector::_M_insert_range"); 612825: _Bit_pointer __q = this->_M_allocate(__len); 612825: iterator __start(std::__addressof(*__q), 0); 612825: iterator __i = _M_copy_aligned(begin(), __position, __start); 612825: __i = std::copy(__first, __last, __i); 612825: iterator __finish = std::copy(__position, end(), __i); 612825: this->_M_deallocate(); 612825: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 612825: this->_M_impl._M_start = __start; 612825: this->_M_impl._M_finish = __finish; 612825: } 612825: } 612825: } 612825: 612825: template 612825: 612825: void 612825: vector:: 612825: _M_insert_aux(iterator __position, bool __x) 612825: { 612825: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) 612825: { 612825: std::copy_backward(__position, this->_M_impl._M_finish, 612825: this->_M_impl._M_finish + 1); 612825: *__position = __x; 612825: ++this->_M_impl._M_finish; 612825: } 612825: else 612825: { 612825: const size_type __len = 612825: _M_check_len(size_type(1), "vector::_M_insert_aux"); 612825: _Bit_pointer __q = this->_M_allocate(__len); 612825: iterator __start(std::__addressof(*__q), 0); 612825: iterator __i = _M_copy_aligned(begin(), __position, __start); 612825: *__i++ = __x; 612825: iterator __finish = std::copy(__position, end(), __i); 612825: this->_M_deallocate(); 612825: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); 612825: this->_M_impl._M_start = __start; 612825: this->_M_impl._M_finish = __finish; 612825: } 612825: } 612825: 612825: template 612825: 612825: typename vector::iterator 612825: vector:: 612825: _M_erase(iterator __position) 612825: { 612825: if (__position + 1 != end()) 612825: std::copy(__position + 1, end(), __position); 612825: --this->_M_impl._M_finish; 612825: return __position; 612825: } 612825: 612825: template 612825: 612825: typename vector::iterator 612825: vector:: 612825: _M_erase(iterator __first, iterator __last) 612825: { 612825: if (__first != __last) 612825: _M_erase_at_end(std::copy(__last, end(), __first)); 612825: return __first; 612825: } 612825: 612825: 612825: template 612825: 612825: bool 612825: vector:: 612825: _M_shrink_to_fit() 612825: { 612825: if (capacity() - size() < int(_S_word_bit)) 612825: return false; 612825: try 612825: { 612825: if (size_type __n = size()) 612825: _M_reallocate(__n); 612825: else 612825: { 612825: this->_M_deallocate(); 612825: this->_M_impl._M_reset(); 612825: } 612825: return true; 612825: } 612825: catch(...) 612825: { return false; } 612825: } 612825: 612825: 612825: 612825: 612825: } 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: template 612825: size_t 612825: hash>:: 612825: operator()(const std::vector& __b) const noexcept 612825: { 612825: size_t __hash = 0; 612825: const size_t __words = __b.size() / _S_word_bit; 612825: if (__words) 612825: { 612825: const size_t __clength = __words * sizeof(_Bit_type); 612825: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); 612825: } 612825: 612825: const size_t __extrabits = __b.size() % _S_word_bit; 612825: if (__extrabits) 612825: { 612825: _Bit_type __hiword = *__b._M_impl._M_finish._M_p; 612825: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); 612825: 612825: const size_t __clength 612825: = (__extrabits + 8 - 1) / 8; 612825: if (__words) 612825: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); 612825: else 612825: __hash = std::_Hash_impl::hash(&__hiword, __clength); 612825: } 612825: 612825: return __hash; 612825: } 612825: 612825: 612825: } 612825: # 71 "/usr/include/c++/12/vector" 2 3 612825: # 30 "third_party/butteraugli/butteraugli/butteraugli.h" 2 612825: # 45 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: 612825: # 45 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: namespace butteraugli { 612825: 612825: template 612825: class Image; 612825: 612825: using Image8 = Image; 612825: using ImageF = Image; 612825: using ImageD = Image; 612825: # 86 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: bool ButteraugliInterface(const std::vector &rgb0, 612825: const std::vector &rgb1, 612825: ImageF &diffmap, 612825: double &diffvalue); 612825: 612825: const double kButteraugliQuantLow = 0.26; 612825: const double kButteraugliQuantHigh = 1.454; 612825: # 104 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: double ButteraugliFuzzyClass(double score); 612825: 612825: 612825: 612825: double ButteraugliFuzzyInverse(double seek); 612825: 612825: 612825: 612825: 612825: 612825: bool ButteraugliAdaptiveQuantization(size_t xsize, size_t ysize, 612825: const std::vector > &rgb, std::vector &quant); 612825: # 136 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: template 612825: using ConstRestrict = T const __restrict__; 612825: 612825: 612825: class CacheAligned { 612825: public: 612825: static constexpr size_t kPointerSize = sizeof(void *); 612825: static constexpr size_t kCacheLineSize = 64; 612825: 612825: 612825: static void *Allocate(const size_t bytes) __attribute__((assume_aligned(64))); 612825: static void Free(void *aligned_pointer); 612825: }; 612825: 612825: template 612825: using CacheAlignedUniquePtrT = std::unique_ptr; 612825: 612825: using CacheAlignedUniquePtr = CacheAlignedUniquePtrT; 612825: 612825: template 612825: static inline CacheAlignedUniquePtrT Allocate(const size_t entries) { 612825: return CacheAlignedUniquePtrT( 612825: static_cast>( 612825: CacheAligned::Allocate(entries * sizeof(T))), 612825: CacheAligned::Free); 612825: } 612825: 612825: 612825: 612825: template 612825: static inline size_t Align(const size_t amount) { 612825: static_assert(multiple != 0 && ((multiple & (multiple - 1)) == 0), 612825: "Align<> argument must be a power of two"); 612825: return (amount + multiple - 1) & ~(multiple - 1); 612825: } 612825: # 194 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: template 612825: class Image { 612825: 612825: static size_t BytesPerRow(const size_t xsize) { 612825: 612825: const size_t row_size = xsize * sizeof(T) + 32; 612825: const size_t align = CacheAligned::kCacheLineSize; 612825: size_t bytes_per_row = (row_size + align - 1) & ~(align - 1); 612825: 612825: 612825: 612825: 612825: if (bytes_per_row % 2048 == 0) { 612825: bytes_per_row += align; 612825: } 612825: return bytes_per_row; 612825: } 612825: 612825: public: 612825: using T = ComponentType; 612825: 612825: Image() : xsize_(0), ysize_(0), bytes_per_row_(0), bytes_(static_cast(nullptr), Ignore) {} 612825: 612825: Image(const size_t xsize, const size_t ysize) 612825: : xsize_(xsize), 612825: ysize_(ysize), 612825: bytes_per_row_(BytesPerRow(xsize)), 612825: bytes_(Allocate(bytes_per_row_ * ysize)) {} 612825: 612825: Image(const size_t xsize, const size_t ysize, ConstRestrict bytes, 612825: const size_t bytes_per_row) 612825: : xsize_(xsize), 612825: ysize_(ysize), 612825: bytes_per_row_(bytes_per_row), 612825: bytes_(bytes, Ignore) {} 612825: 612825: 612825: Image(Image &&other) 612825: : xsize_(other.xsize_), 612825: ysize_(other.ysize_), 612825: bytes_per_row_(other.bytes_per_row_), 612825: bytes_(std::move(other.bytes_)) {} 612825: 612825: 612825: Image &operator=(Image &&other) { 612825: xsize_ = other.xsize_; 612825: ysize_ = other.ysize_; 612825: bytes_per_row_ = other.bytes_per_row_; 612825: bytes_ = std::move(other.bytes_); 612825: return *this; 612825: } 612825: 612825: void Swap(Image &other) { 612825: std::swap(xsize_, other.xsize_); 612825: std::swap(ysize_, other.ysize_); 612825: std::swap(bytes_per_row_, other.bytes_per_row_); 612825: std::swap(bytes_, other.bytes_); 612825: } 612825: 612825: 612825: size_t xsize() const { return xsize_; } 612825: size_t ysize() const { return ysize_; } 612825: 612825: ConstRestrict Row(const size_t y) __attribute__((assume_aligned(64))) { 612825: 612825: if (y >= ysize_) { 612825: printf("Row %zu out of bounds (ysize=%zu)\n", y, ysize_); 612825: abort(); 612825: } 612825: 612825: return reinterpret_cast(bytes_.get() + y * bytes_per_row_); 612825: } 612825: 612825: ConstRestrict Row(const size_t y) const 612825: __attribute__((assume_aligned(64))) { 612825: 612825: if (y >= ysize_) { 612825: printf("Const row %zu out of bounds (ysize=%zu)\n", y, ysize_); 612825: abort(); 612825: } 612825: 612825: return reinterpret_cast(bytes_.get() + y * bytes_per_row_); 612825: } 612825: 612825: 612825: 612825: ConstRestrict bytes() { return bytes_.get(); } 612825: ConstRestrict bytes() const { return bytes_.get(); } 612825: size_t bytes_per_row() const { return bytes_per_row_; } 612825: 612825: 612825: 612825: intptr_t PixelsPerRow() const { 612825: static_assert(CacheAligned::kCacheLineSize % sizeof(T) == 0, 612825: "Padding must be divisible by the pixel size."); 612825: return static_cast(bytes_per_row_ / sizeof(T)); 612825: } 612825: 612825: private: 612825: 612825: static void Ignore(void *ptr) {} 612825: 612825: 612825: size_t xsize_; 612825: size_t ysize_; 612825: size_t bytes_per_row_; 612825: CacheAlignedUniquePtr bytes_; 612825: }; 612825: 612825: 612825: template 612825: static inline std::vector> CreatePlanes(const size_t xsize, 612825: const size_t ysize, 612825: const size_t num_planes) { 612825: std::vector> planes; 612825: planes.reserve(num_planes); 612825: for (size_t i = 0; i < num_planes; ++i) { 612825: planes.emplace_back(xsize, ysize); 612825: } 612825: return planes; 612825: } 612825: 612825: 612825: template 612825: static inline Image CopyPixels(const Image &other) { 612825: Image copy(other.xsize(), other.ysize()); 612825: const void *__restrict__ from = other.bytes(); 612825: void *__restrict__ to = copy.bytes(); 612825: memcpy(to, from, other.ysize() * other.bytes_per_row()); 612825: return copy; 612825: } 612825: 612825: 612825: template 612825: static inline std::vector> CopyPlanes( 612825: const std::vector> &planes) { 612825: std::vector> copy; 612825: copy.reserve(planes.size()); 612825: for (const Image &plane : planes) { 612825: copy.push_back(CopyPixels(plane)); 612825: } 612825: return copy; 612825: } 612825: 612825: 612825: template 612825: static inline void CopyToPacked(const Image &from, std::vector *to) { 612825: const size_t xsize = from.xsize(); 612825: const size_t ysize = from.ysize(); 612825: 612825: 612825: 612825: 612825: 612825: 612825: for (size_t y = 0; y < ysize; ++y) { 612825: ConstRestrict row_from = from.Row(y); 612825: ConstRestrict row_to = to->data() + y * xsize; 612825: memcpy(row_to, row_from, xsize * sizeof(T)); 612825: } 612825: } 612825: 612825: 612825: template 612825: static inline void CopyFromPacked(const std::vector &from, Image *to) { 612825: const size_t xsize = to->xsize(); 612825: const size_t ysize = to->ysize(); 612825: 612825: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 3 4 612825: (static_cast ( 612825: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: from.size() == xsize * ysize 612825: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: "from.size() == xsize * ysize" 612825: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.h", 361, __extension__ __PRETTY_FUNCTION__)) 612825: # 361 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: ; 612825: for (size_t y = 0; y < ysize; ++y) { 612825: ConstRestrict row_from = from.data() + y * xsize; 612825: ConstRestrict row_to = to->Row(y); 612825: memcpy(row_to, row_from, xsize * sizeof(T)); 612825: } 612825: } 612825: 612825: template 612825: static inline std::vector> PlanesFromPacked( 612825: const size_t xsize, const size_t ysize, 612825: const std::vector> &packed) { 612825: std::vector> planes; 612825: planes.reserve(packed.size()); 612825: for (const std::vector &p : packed) { 612825: planes.push_back(Image(xsize, ysize)); 612825: CopyFromPacked(p, &planes.back()); 612825: } 612825: return planes; 612825: } 612825: 612825: template 612825: static inline std::vector> PackedFromPlanes( 612825: const std::vector> &planes) { 612825: 612825: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 3 4 612825: (static_cast ( 612825: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: !planes.empty() 612825: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: "!planes.empty()" 612825: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.h", 385, __extension__ __PRETTY_FUNCTION__)) 612825: # 385 "third_party/butteraugli/butteraugli/butteraugli.h" 612825: ; 612825: const size_t num_pixels = planes[0].xsize() * planes[0].ysize(); 612825: std::vector> packed; 612825: packed.reserve(planes.size()); 612825: for (const Image &image : planes) { 612825: packed.push_back(std::vector(num_pixels)); 612825: CopyToPacked(image, &packed.back()); 612825: } 612825: return packed; 612825: } 612825: 612825: class ButteraugliComparator { 612825: public: 612825: ButteraugliComparator(size_t xsize, size_t ysize, int step); 612825: 612825: 612825: void Diffmap(const std::vector &rgb0, 612825: const std::vector &rgb1, 612825: ImageF &result); 612825: 612825: 612825: 612825: void DiffmapOpsinDynamicsImage(const std::vector &rgb0, 612825: const std::vector &rgb1, 612825: ImageF &result); 612825: 612825: private: 612825: void BlockDiffMap(const std::vector > &rgb0, 612825: const std::vector > &rgb1, 612825: std::vector* block_diff_dc, 612825: std::vector* block_diff_ac); 612825: 612825: 612825: void EdgeDetectorMap(const std::vector > &rgb0, 612825: const std::vector > &rgb1, 612825: std::vector* edge_detector_map); 612825: 612825: void EdgeDetectorLowFreq(const std::vector > &rgb0, 612825: const std::vector > &rgb1, 612825: std::vector* block_diff_ac); 612825: 612825: void CombineChannels(const std::vector >& scale_xyb, 612825: const std::vector >& scale_xyb_dc, 612825: const std::vector& block_diff_dc, 612825: const std::vector& block_diff_ac, 612825: const std::vector& edge_detector_map, 612825: std::vector* result); 612825: 612825: const size_t xsize_; 612825: const size_t ysize_; 612825: const size_t num_pixels_; 612825: const int step_; 612825: const size_t res_xsize_; 612825: const size_t res_ysize_; 612825: }; 612825: 612825: void ButteraugliDiffmap(const std::vector &rgb0, 612825: const std::vector &rgb1, 612825: ImageF &diffmap); 612825: 612825: double ButteraugliScoreFromDiffmap(const ImageF& distmap); 612825: 612825: 612825: 612825: void Mask(const std::vector > &rgb0, 612825: const std::vector > &rgb1, 612825: size_t xsize, size_t ysize, 612825: std::vector > *mask, 612825: std::vector > *mask_dc); 612825: 612825: 612825: void ButteraugliBlockDiff(double rgb0[192], 612825: double rgb1[192], 612825: double diff_xyb_dc[3], 612825: double diff_xyb_ac[3], 612825: double diff_xyb_edge_dc[3]); 612825: 612825: void OpsinAbsorbance(const double in[3], double out[3]); 612825: 612825: void OpsinDynamicsImage(size_t xsize, size_t ysize, 612825: std::vector > &rgb); 612825: 612825: void MaskHighIntensityChange( 612825: size_t xsize, size_t ysize, 612825: const std::vector > &c0, 612825: const std::vector > &c1, 612825: std::vector > &rgb0, 612825: std::vector > &rgb1); 612825: 612825: void Blur(size_t xsize, size_t ysize, float* channel, double sigma, 612825: double border_ratio = 0.0); 612825: 612825: void RgbToXyb(double r, double g, double b, 612825: double *valx, double *valy, double *valz); 612825: 612825: double SimpleGamma(double v); 612825: 612825: double GammaMinArg(); 612825: double GammaMaxArg(); 612825: 612825: 612825: 612825: 612825: template 612825: static inline void ClenshawRecursion(const double x, const double *coefficients, 612825: double *b1, double *b2) { 612825: const double x_b1 = x * (*b1); 612825: const double t = (x_b1 + x_b1) - (*b2) + coefficients[INDEX]; 612825: *b2 = *b1; 612825: *b1 = t; 612825: 612825: ClenshawRecursion(x, coefficients, b1, b2); 612825: } 612825: 612825: 612825: template <> 612825: inline void ClenshawRecursion<0>(const double x, const double *coefficients, 612825: double *b1, double *b2) { 612825: const double x_b1 = x * (*b1); 612825: 612825: *b1 = x_b1 - (*b2) + coefficients[0]; 612825: } 612825: 612825: 612825: 612825: struct RationalPolynomial { 612825: template 612825: static double EvaluatePolynomial(const double x, 612825: const double (&coefficients)[N]) { 612825: double b1 = 0.0; 612825: double b2 = 0.0; 612825: ClenshawRecursion(x, coefficients, &b1, &b2); 612825: return b1; 612825: } 612825: 612825: 612825: inline double operator()(const float x) const { 612825: 612825: const double x01 = (x - min_value) / (max_value - min_value); 612825: 612825: const double xc = 2.0 * x01 - 1.0; 612825: 612825: const double yp = EvaluatePolynomial(xc, p); 612825: const double yq = EvaluatePolynomial(xc, q); 612825: if (yq == 0.0) return 0.0; 612825: return static_cast(yp / yq); 612825: } 612825: 612825: 612825: double min_value; 612825: double max_value; 612825: 612825: 612825: 612825: double p[5 + 1]; 612825: double q[5 + 1]; 612825: }; 612825: 612825: static inline float GammaPolynomial(float value) { 612825: 612825: static const RationalPolynomial r = { 612825: 0.770000000000000, 274.579999999999984, 612825: { 612825: 881.979476556478289, 1496.058452015812463, 908.662212739659481, 612825: 373.566100223287378, 85.840860336314364, 6.683258861509244, 612825: }, 612825: { 612825: 12.262350348616792, 20.557285797683576, 12.161463238367844, 612825: 4.711532733641639, 0.899112889751053, 0.035662329617191, 612825: }}; 612825: return r(value); 612825: } 612825: 612825: } 612825: # 33 "third_party/butteraugli/butteraugli/butteraugli.cc" 2 612825: 612825: # 1 "/usr/include/assert.h" 1 3 4 612825: # 35 "third_party/butteraugli/butteraugli/butteraugli.cc" 2 612825: # 1 "/usr/include/c++/12/math.h" 1 3 612825: # 36 "/usr/include/c++/12/math.h" 3 612825: # 1 "/usr/include/c++/12/cmath" 1 3 612825: # 39 "/usr/include/c++/12/cmath" 3 612825: 612825: # 40 "/usr/include/c++/12/cmath" 3 612825: # 37 "/usr/include/c++/12/math.h" 2 3 612825: 612825: 612825: # 38 "/usr/include/c++/12/math.h" 3 612825: using std::abs; 612825: using std::acos; 612825: using std::asin; 612825: using std::atan; 612825: using std::atan2; 612825: using std::cos; 612825: using std::sin; 612825: using std::tan; 612825: using std::cosh; 612825: using std::sinh; 612825: using std::tanh; 612825: using std::exp; 612825: using std::frexp; 612825: using std::ldexp; 612825: using std::log; 612825: using std::log10; 612825: using std::modf; 612825: using std::pow; 612825: using std::sqrt; 612825: using std::ceil; 612825: using std::fabs; 612825: using std::floor; 612825: using std::fmod; 612825: 612825: 612825: using std::fpclassify; 612825: using std::isfinite; 612825: using std::isinf; 612825: using std::isnan; 612825: using std::isnormal; 612825: using std::signbit; 612825: using std::isgreater; 612825: using std::isgreaterequal; 612825: using std::isless; 612825: using std::islessequal; 612825: using std::islessgreater; 612825: using std::isunordered; 612825: 612825: 612825: 612825: using std::acosh; 612825: using std::asinh; 612825: using std::atanh; 612825: using std::cbrt; 612825: using std::copysign; 612825: using std::erf; 612825: using std::erfc; 612825: using std::exp2; 612825: using std::expm1; 612825: using std::fdim; 612825: using std::fma; 612825: using std::fmax; 612825: using std::fmin; 612825: using std::hypot; 612825: using std::ilogb; 612825: using std::lgamma; 612825: using std::llrint; 612825: using std::llround; 612825: using std::log1p; 612825: using std::log2; 612825: using std::logb; 612825: using std::lrint; 612825: using std::lround; 612825: using std::nearbyint; 612825: using std::nextafter; 612825: using std::nexttoward; 612825: using std::remainder; 612825: using std::remquo; 612825: using std::rint; 612825: using std::round; 612825: using std::scalbln; 612825: using std::scalbn; 612825: using std::tgamma; 612825: using std::trunc; 612825: # 36 "third_party/butteraugli/butteraugli/butteraugli.cc" 2 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/c++/12/algorithm" 1 3 612825: # 58 "/usr/include/c++/12/algorithm" 3 612825: 612825: # 59 "/usr/include/c++/12/algorithm" 3 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/stl_algo.h" 1 3 612825: # 59 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: # 1 "/usr/include/c++/12/bits/algorithmfwd.h" 1 3 612825: # 33 "/usr/include/c++/12/bits/algorithmfwd.h" 3 612825: 612825: # 34 "/usr/include/c++/12/bits/algorithmfwd.h" 3 612825: # 42 "/usr/include/c++/12/bits/algorithmfwd.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 199 "/usr/include/c++/12/bits/algorithmfwd.h" 3 612825: template 612825: 612825: bool 612825: all_of(_IIter, _IIter, _Predicate); 612825: 612825: template 612825: 612825: bool 612825: any_of(_IIter, _IIter, _Predicate); 612825: 612825: 612825: template 612825: 612825: bool 612825: binary_search(_FIter, _FIter, const _Tp&); 612825: 612825: template 612825: 612825: bool 612825: binary_search(_FIter, _FIter, const _Tp&, _Compare); 612825: # 232 "/usr/include/c++/12/bits/algorithmfwd.h" 3 612825: template 612825: 612825: _OIter 612825: copy(_IIter, _IIter, _OIter); 612825: 612825: template 612825: 612825: _BIter2 612825: copy_backward(_BIter1, _BIter1, _BIter2); 612825: 612825: 612825: template 612825: 612825: _OIter 612825: copy_if(_IIter, _IIter, _OIter, _Predicate); 612825: 612825: template 612825: 612825: _OIter 612825: copy_n(_IIter, _Size, _OIter); 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: pair<_FIter, _FIter> 612825: equal_range(_FIter, _FIter, const _Tp&); 612825: 612825: template 612825: 612825: pair<_FIter, _FIter> 612825: equal_range(_FIter, _FIter, const _Tp&, _Compare); 612825: 612825: template 612825: 612825: void 612825: fill(_FIter, _FIter, const _Tp&); 612825: 612825: template 612825: 612825: _OIter 612825: fill_n(_OIter, _Size, const _Tp&); 612825: 612825: 612825: 612825: template 612825: 612825: _FIter1 612825: find_end(_FIter1, _FIter1, _FIter2, _FIter2); 612825: 612825: template 612825: 612825: _FIter1 612825: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _IIter 612825: find_if_not(_IIter, _IIter, _Predicate); 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: bool 612825: includes(_IIter1, _IIter1, _IIter2, _IIter2); 612825: 612825: template 612825: 612825: bool 612825: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 612825: 612825: template 612825: void 612825: inplace_merge(_BIter, _BIter, _BIter); 612825: 612825: template 612825: void 612825: inplace_merge(_BIter, _BIter, _BIter, _Compare); 612825: 612825: 612825: template 612825: 612825: bool 612825: is_heap(_RAIter, _RAIter); 612825: 612825: template 612825: 612825: bool 612825: is_heap(_RAIter, _RAIter, _Compare); 612825: 612825: template 612825: 612825: _RAIter 612825: is_heap_until(_RAIter, _RAIter); 612825: 612825: template 612825: 612825: _RAIter 612825: is_heap_until(_RAIter, _RAIter, _Compare); 612825: 612825: template 612825: 612825: bool 612825: is_partitioned(_IIter, _IIter, _Predicate); 612825: 612825: template 612825: 612825: bool 612825: is_permutation(_FIter1, _FIter1, _FIter2); 612825: 612825: template 612825: 612825: bool 612825: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); 612825: 612825: template 612825: 612825: bool 612825: is_sorted(_FIter, _FIter); 612825: 612825: template 612825: 612825: bool 612825: is_sorted(_FIter, _FIter, _Compare); 612825: 612825: template 612825: 612825: _FIter 612825: is_sorted_until(_FIter, _FIter); 612825: 612825: template 612825: 612825: _FIter 612825: is_sorted_until(_FIter, _FIter, _Compare); 612825: 612825: 612825: template 612825: 612825: void 612825: iter_swap(_FIter1, _FIter2); 612825: 612825: template 612825: 612825: _FIter 612825: lower_bound(_FIter, _FIter, const _Tp&); 612825: 612825: template 612825: 612825: _FIter 612825: lower_bound(_FIter, _FIter, const _Tp&, _Compare); 612825: 612825: template 612825: 612825: void 612825: make_heap(_RAIter, _RAIter); 612825: 612825: template 612825: 612825: void 612825: make_heap(_RAIter, _RAIter, _Compare); 612825: 612825: template 612825: 612825: const _Tp& 612825: max(const _Tp&, const _Tp&); 612825: 612825: template 612825: 612825: const _Tp& 612825: max(const _Tp&, const _Tp&, _Compare); 612825: 612825: 612825: 612825: 612825: template 612825: 612825: const _Tp& 612825: min(const _Tp&, const _Tp&); 612825: 612825: template 612825: 612825: const _Tp& 612825: min(const _Tp&, const _Tp&, _Compare); 612825: 612825: 612825: 612825: 612825: template 612825: 612825: pair 612825: minmax(const _Tp&, const _Tp&); 612825: 612825: template 612825: 612825: pair 612825: minmax(const _Tp&, const _Tp&, _Compare); 612825: 612825: template 612825: 612825: pair<_FIter, _FIter> 612825: minmax_element(_FIter, _FIter); 612825: 612825: template 612825: 612825: pair<_FIter, _FIter> 612825: minmax_element(_FIter, _FIter, _Compare); 612825: 612825: template 612825: 612825: _Tp 612825: min(initializer_list<_Tp>); 612825: 612825: template 612825: 612825: _Tp 612825: min(initializer_list<_Tp>, _Compare); 612825: 612825: template 612825: 612825: _Tp 612825: max(initializer_list<_Tp>); 612825: 612825: template 612825: 612825: _Tp 612825: max(initializer_list<_Tp>, _Compare); 612825: 612825: template 612825: 612825: pair<_Tp, _Tp> 612825: minmax(initializer_list<_Tp>); 612825: 612825: template 612825: 612825: pair<_Tp, _Tp> 612825: minmax(initializer_list<_Tp>, _Compare); 612825: 612825: 612825: 612825: 612825: template 612825: 612825: bool 612825: next_permutation(_BIter, _BIter); 612825: 612825: template 612825: 612825: bool 612825: next_permutation(_BIter, _BIter, _Compare); 612825: 612825: 612825: template 612825: 612825: bool 612825: none_of(_IIter, _IIter, _Predicate); 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _RAIter 612825: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); 612825: 612825: template 612825: 612825: _RAIter 612825: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); 612825: 612825: 612825: 612825: 612825: template 612825: 612825: pair<_OIter1, _OIter2> 612825: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); 612825: 612825: template 612825: 612825: _FIter 612825: partition_point(_FIter, _FIter, _Predicate); 612825: 612825: 612825: template 612825: 612825: void 612825: pop_heap(_RAIter, _RAIter); 612825: 612825: template 612825: 612825: void 612825: pop_heap(_RAIter, _RAIter, _Compare); 612825: 612825: template 612825: 612825: bool 612825: prev_permutation(_BIter, _BIter); 612825: 612825: template 612825: 612825: bool 612825: prev_permutation(_BIter, _BIter, _Compare); 612825: 612825: template 612825: 612825: void 612825: push_heap(_RAIter, _RAIter); 612825: 612825: template 612825: 612825: void 612825: push_heap(_RAIter, _RAIter, _Compare); 612825: 612825: 612825: 612825: template 612825: 612825: _FIter 612825: remove(_FIter, _FIter, const _Tp&); 612825: 612825: template 612825: 612825: _FIter 612825: remove_if(_FIter, _FIter, _Predicate); 612825: 612825: template 612825: 612825: _OIter 612825: remove_copy(_IIter, _IIter, _OIter, const _Tp&); 612825: 612825: template 612825: 612825: _OIter 612825: remove_copy_if(_IIter, _IIter, _OIter, _Predicate); 612825: 612825: 612825: 612825: template 612825: 612825: _OIter 612825: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); 612825: 612825: template 612825: 612825: _OIter 612825: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); 612825: 612825: 612825: 612825: template 612825: 612825: void 612825: reverse(_BIter, _BIter); 612825: 612825: template 612825: 612825: _OIter 612825: reverse_copy(_BIter, _BIter, _OIter); 612825: 612825: inline namespace _V2 612825: { 612825: template 612825: 612825: _FIter 612825: rotate(_FIter, _FIter, _FIter); 612825: } 612825: 612825: template 612825: 612825: _OIter 612825: rotate_copy(_FIter, _FIter, _FIter, _OIter); 612825: # 625 "/usr/include/c++/12/bits/algorithmfwd.h" 3 612825: template 612825: void 612825: shuffle(_RAIter, _RAIter, _UGenerator&&); 612825: 612825: 612825: template 612825: 612825: void 612825: sort_heap(_RAIter, _RAIter); 612825: 612825: template 612825: 612825: void 612825: sort_heap(_RAIter, _RAIter, _Compare); 612825: 612825: template 612825: _BIter 612825: stable_partition(_BIter, _BIter, _Predicate); 612825: # 658 "/usr/include/c++/12/bits/algorithmfwd.h" 3 612825: template 612825: 612825: _FIter2 612825: swap_ranges(_FIter1, _FIter1, _FIter2); 612825: 612825: 612825: 612825: template 612825: 612825: _FIter 612825: unique(_FIter, _FIter); 612825: 612825: template 612825: 612825: _FIter 612825: unique(_FIter, _FIter, _BinaryPredicate); 612825: 612825: 612825: 612825: template 612825: 612825: _FIter 612825: upper_bound(_FIter, _FIter, const _Tp&); 612825: 612825: template 612825: 612825: _FIter 612825: upper_bound(_FIter, _FIter, const _Tp&, _Compare); 612825: 612825: 612825: 612825: template 612825: 612825: _FIter 612825: adjacent_find(_FIter, _FIter); 612825: 612825: template 612825: 612825: _FIter 612825: adjacent_find(_FIter, _FIter, _BinaryPredicate); 612825: 612825: template 612825: 612825: typename iterator_traits<_IIter>::difference_type 612825: count(_IIter, _IIter, const _Tp&); 612825: 612825: template 612825: 612825: typename iterator_traits<_IIter>::difference_type 612825: count_if(_IIter, _IIter, _Predicate); 612825: 612825: template 612825: 612825: bool 612825: equal(_IIter1, _IIter1, _IIter2); 612825: 612825: template 612825: 612825: bool 612825: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 612825: 612825: template 612825: 612825: _IIter 612825: find(_IIter, _IIter, const _Tp&); 612825: 612825: template 612825: 612825: _FIter1 612825: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); 612825: 612825: template 612825: 612825: _FIter1 612825: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 612825: 612825: template 612825: 612825: _IIter 612825: find_if(_IIter, _IIter, _Predicate); 612825: 612825: template 612825: 612825: _Funct 612825: for_each(_IIter, _IIter, _Funct); 612825: 612825: template 612825: 612825: void 612825: generate(_FIter, _FIter, _Generator); 612825: 612825: template 612825: 612825: _OIter 612825: generate_n(_OIter, _Size, _Generator); 612825: 612825: template 612825: 612825: bool 612825: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); 612825: 612825: template 612825: 612825: bool 612825: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); 612825: 612825: template 612825: 612825: _FIter 612825: max_element(_FIter, _FIter); 612825: 612825: template 612825: 612825: _FIter 612825: max_element(_FIter, _FIter, _Compare); 612825: 612825: template 612825: 612825: _OIter 612825: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 612825: 612825: template 612825: 612825: _OIter 612825: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 612825: 612825: template 612825: 612825: _FIter 612825: min_element(_FIter, _FIter); 612825: 612825: template 612825: 612825: _FIter 612825: min_element(_FIter, _FIter, _Compare); 612825: 612825: template 612825: 612825: pair<_IIter1, _IIter2> 612825: mismatch(_IIter1, _IIter1, _IIter2); 612825: 612825: template 612825: 612825: pair<_IIter1, _IIter2> 612825: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); 612825: 612825: template 612825: 612825: void 612825: nth_element(_RAIter, _RAIter, _RAIter); 612825: 612825: template 612825: 612825: void 612825: nth_element(_RAIter, _RAIter, _RAIter, _Compare); 612825: 612825: template 612825: 612825: void 612825: partial_sort(_RAIter, _RAIter, _RAIter); 612825: 612825: template 612825: 612825: void 612825: partial_sort(_RAIter, _RAIter, _RAIter, _Compare); 612825: 612825: template 612825: 612825: _BIter 612825: partition(_BIter, _BIter, _Predicate); 612825: 612825: template 612825: void 612825: random_shuffle(_RAIter, _RAIter); 612825: 612825: template 612825: void 612825: random_shuffle(_RAIter, _RAIter, 612825: 612825: _Generator&&); 612825: 612825: 612825: 612825: 612825: template 612825: 612825: void 612825: replace(_FIter, _FIter, const _Tp&, const _Tp&); 612825: 612825: template 612825: 612825: void 612825: replace_if(_FIter, _FIter, _Predicate, const _Tp&); 612825: 612825: template 612825: 612825: _FIter1 612825: search(_FIter1, _FIter1, _FIter2, _FIter2); 612825: 612825: template 612825: 612825: _FIter1 612825: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); 612825: 612825: template 612825: 612825: _FIter 612825: search_n(_FIter, _FIter, _Size, const _Tp&); 612825: 612825: template 612825: 612825: _FIter 612825: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); 612825: 612825: template 612825: 612825: _OIter 612825: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 612825: 612825: template 612825: 612825: _OIter 612825: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 612825: 612825: template 612825: 612825: _OIter 612825: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 612825: 612825: template 612825: 612825: _OIter 612825: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 612825: 612825: template 612825: 612825: _OIter 612825: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 612825: 612825: template 612825: 612825: _OIter 612825: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, 612825: _OIter, _Compare); 612825: 612825: template 612825: 612825: _OIter 612825: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); 612825: 612825: template 612825: 612825: _OIter 612825: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); 612825: 612825: template 612825: 612825: void 612825: sort(_RAIter, _RAIter); 612825: 612825: template 612825: 612825: void 612825: sort(_RAIter, _RAIter, _Compare); 612825: 612825: template 612825: void 612825: stable_sort(_RAIter, _RAIter); 612825: 612825: template 612825: void 612825: stable_sort(_RAIter, _RAIter, _Compare); 612825: 612825: template 612825: 612825: _OIter 612825: transform(_IIter, _IIter, _OIter, _UnaryOperation); 612825: 612825: template 612825: 612825: _OIter 612825: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); 612825: 612825: template 612825: 612825: _OIter 612825: unique_copy(_IIter, _IIter, _OIter); 612825: 612825: template 612825: 612825: _OIter 612825: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); 612825: 612825: 612825: 612825: } 612825: # 60 "/usr/include/c++/12/bits/stl_algo.h" 2 3 612825: # 1 "/usr/include/c++/12/bits/stl_heap.h" 1 3 612825: # 63 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _Distance 612825: __is_heap_until(_RandomAccessIterator __first, _Distance __n, 612825: _Compare& __comp) 612825: { 612825: _Distance __parent = 0; 612825: for (_Distance __child = 1; __child < __n; ++__child) 612825: { 612825: if (__comp(__first + __parent, __first + __child)) 612825: return __child; 612825: if ((__child & 1) == 0) 612825: ++__parent; 612825: } 612825: return __n; 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: inline bool 612825: __is_heap(_RandomAccessIterator __first, _Distance __n) 612825: { 612825: __gnu_cxx::__ops::_Iter_less_iter __comp; 612825: return std::__is_heap_until(__first, __n, __comp) == __n; 612825: } 612825: 612825: template 612825: 612825: inline bool 612825: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) 612825: { 612825: typedef __decltype(__comp) _Cmp; 612825: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 612825: return std::__is_heap_until(__first, __n, __cmp) == __n; 612825: } 612825: 612825: template 612825: 612825: inline bool 612825: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 612825: { return std::__is_heap(__first, std::distance(__first, __last)); } 612825: 612825: template 612825: 612825: inline bool 612825: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: return std::__is_heap(__first, std::move(__comp), 612825: std::distance(__first, __last)); 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: 612825: void 612825: __push_heap(_RandomAccessIterator __first, 612825: _Distance __holeIndex, _Distance __topIndex, _Tp __value, 612825: _Compare& __comp) 612825: { 612825: _Distance __parent = (__holeIndex - 1) / 2; 612825: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) 612825: { 612825: *(__first + __holeIndex) = std::move(*(__first + __parent)); 612825: __holeIndex = __parent; 612825: __parent = (__holeIndex - 1) / 2; 612825: } 612825: *(__first + __holeIndex) = std::move(__value); 612825: } 612825: # 159 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline void 612825: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 612825: { 612825: typedef typename iterator_traits<_RandomAccessIterator>::value_type 612825: _ValueType; 612825: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 612825: _DistanceType; 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: __gnu_cxx::__ops::_Iter_less_val __comp; 612825: _ValueType __value = std::move(*(__last - 1)); 612825: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 612825: _DistanceType(0), std::move(__value), __comp); 612825: } 612825: # 195 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline void 612825: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: typedef typename iterator_traits<_RandomAccessIterator>::value_type 612825: _ValueType; 612825: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 612825: _DistanceType; 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 612825: __cmp(std::move(__comp)); 612825: _ValueType __value = std::move(*(__last - 1)); 612825: std::__push_heap(__first, _DistanceType((__last - __first) - 1), 612825: _DistanceType(0), std::move(__value), __cmp); 612825: } 612825: 612825: template 612825: 612825: void 612825: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, 612825: _Distance __len, _Tp __value, _Compare __comp) 612825: { 612825: const _Distance __topIndex = __holeIndex; 612825: _Distance __secondChild = __holeIndex; 612825: while (__secondChild < (__len - 1) / 2) 612825: { 612825: __secondChild = 2 * (__secondChild + 1); 612825: if (__comp(__first + __secondChild, 612825: __first + (__secondChild - 1))) 612825: __secondChild--; 612825: *(__first + __holeIndex) = std::move(*(__first + __secondChild)); 612825: __holeIndex = __secondChild; 612825: } 612825: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) 612825: { 612825: __secondChild = 2 * (__secondChild + 1); 612825: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) 612825: ; 612825: __holeIndex = __secondChild - 1; 612825: } 612825: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) 612825: __cmp(std::move(__comp)); 612825: std::__push_heap(__first, __holeIndex, __topIndex, 612825: std::move(__value), __cmp); 612825: } 612825: 612825: template 612825: 612825: inline void 612825: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _RandomAccessIterator __result, _Compare& __comp) 612825: { 612825: typedef typename iterator_traits<_RandomAccessIterator>::value_type 612825: _ValueType; 612825: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 612825: _DistanceType; 612825: 612825: _ValueType __value = std::move(*__result); 612825: *__result = std::move(*__first); 612825: std::__adjust_heap(__first, _DistanceType(0), 612825: _DistanceType(__last - __first), 612825: std::move(__value), __comp); 612825: } 612825: # 280 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline void 612825: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: if (__last - __first > 1) 612825: { 612825: --__last; 612825: __gnu_cxx::__ops::_Iter_less_iter __comp; 612825: std::__pop_heap(__first, __last, __last, __comp); 612825: } 612825: } 612825: # 314 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline void 612825: pop_heap(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: if (__last - __first > 1) 612825: { 612825: typedef __decltype(__comp) _Cmp; 612825: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 612825: --__last; 612825: std::__pop_heap(__first, __last, __last, __cmp); 612825: } 612825: } 612825: 612825: template 612825: 612825: void 612825: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare& __comp) 612825: { 612825: typedef typename iterator_traits<_RandomAccessIterator>::value_type 612825: _ValueType; 612825: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 612825: _DistanceType; 612825: 612825: if (__last - __first < 2) 612825: return; 612825: 612825: const _DistanceType __len = __last - __first; 612825: _DistanceType __parent = (__len - 2) / 2; 612825: while (true) 612825: { 612825: _ValueType __value = std::move(*(__first + __parent)); 612825: std::__adjust_heap(__first, __parent, __len, std::move(__value), 612825: __comp); 612825: if (__parent == 0) 612825: return; 612825: __parent--; 612825: } 612825: } 612825: # 372 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline void 612825: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: __gnu_cxx::__ops::_Iter_less_iter __comp; 612825: std::__make_heap(__first, __last, __comp); 612825: } 612825: # 399 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline void 612825: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: typedef __decltype(__comp) _Cmp; 612825: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 612825: std::__make_heap(__first, __last, __cmp); 612825: } 612825: 612825: template 612825: 612825: void 612825: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare& __comp) 612825: { 612825: while (__last - __first > 1) 612825: { 612825: --__last; 612825: std::__pop_heap(__first, __last, __last, __comp); 612825: } 612825: } 612825: # 437 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline void 612825: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: __gnu_cxx::__ops::_Iter_less_iter __comp; 612825: std::__sort_heap(__first, __last, __comp); 612825: } 612825: # 465 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline void 612825: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: typedef __decltype(__comp) _Cmp; 612825: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 612825: std::__sort_heap(__first, __last, __cmp); 612825: } 612825: # 494 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline _RandomAccessIterator 612825: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: __gnu_cxx::__ops::_Iter_less_iter __comp; 612825: return __first + 612825: std::__is_heap_until(__first, std::distance(__first, __last), __comp); 612825: } 612825: # 523 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline _RandomAccessIterator 612825: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: typedef __decltype(__comp) _Cmp; 612825: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 612825: return __first 612825: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); 612825: } 612825: # 548 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline bool 612825: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) 612825: { return std::is_heap_until(__first, __last) == __last; } 612825: # 562 "/usr/include/c++/12/bits/stl_heap.h" 3 612825: template 612825: 612825: inline bool 612825: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: const auto __dist = std::distance(__first, __last); 612825: typedef __decltype(__comp) _Cmp; 612825: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); 612825: return std::__is_heap_until(__first, __dist, __cmp) == __dist; 612825: } 612825: 612825: 612825: 612825: } 612825: # 61 "/usr/include/c++/12/bits/stl_algo.h" 2 3 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/c++/12/bits/uniform_int_dist.h" 1 3 612825: # 41 "/usr/include/c++/12/bits/uniform_int_dist.h" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: # 58 "/usr/include/c++/12/bits/uniform_int_dist.h" 3 612825: namespace __detail 612825: { 612825: 612825: 612825: 612825: template 612825: constexpr bool 612825: _Power_of_2(_Tp __x) 612825: { 612825: return ((__x - 1) & __x) == 0; 612825: } 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: class uniform_int_distribution 612825: { 612825: static_assert(std::is_integral<_IntType>::value, 612825: "template argument must be an integral type"); 612825: 612825: public: 612825: 612825: typedef _IntType result_type; 612825: 612825: struct param_type 612825: { 612825: typedef uniform_int_distribution<_IntType> distribution_type; 612825: 612825: param_type() : param_type(0) { } 612825: 612825: explicit 612825: param_type(_IntType __a, 612825: _IntType __b = __gnu_cxx::__int_traits<_IntType>::__max) 612825: : _M_a(__a), _M_b(__b) 612825: { 612825: do { if (std::__is_constant_evaluated() && !bool(_M_a <= _M_b)) __builtin_unreachable(); } while (false); 612825: } 612825: 612825: result_type 612825: a() const 612825: { return _M_a; } 612825: 612825: result_type 612825: b() const 612825: { return _M_b; } 612825: 612825: friend bool 612825: operator==(const param_type& __p1, const param_type& __p2) 612825: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } 612825: 612825: friend bool 612825: operator!=(const param_type& __p1, const param_type& __p2) 612825: { return !(__p1 == __p2); } 612825: 612825: private: 612825: _IntType _M_a; 612825: _IntType _M_b; 612825: }; 612825: 612825: public: 612825: 612825: 612825: 612825: uniform_int_distribution() : uniform_int_distribution(0) { } 612825: 612825: 612825: 612825: 612825: explicit 612825: uniform_int_distribution(_IntType __a, 612825: _IntType __b 612825: = __gnu_cxx::__int_traits<_IntType>::__max) 612825: : _M_param(__a, __b) 612825: { } 612825: 612825: explicit 612825: uniform_int_distribution(const param_type& __p) 612825: : _M_param(__p) 612825: { } 612825: 612825: 612825: 612825: 612825: 612825: 612825: void 612825: reset() { } 612825: 612825: result_type 612825: a() const 612825: { return _M_param.a(); } 612825: 612825: result_type 612825: b() const 612825: { return _M_param.b(); } 612825: 612825: 612825: 612825: 612825: param_type 612825: param() const 612825: { return _M_param; } 612825: 612825: 612825: 612825: 612825: 612825: void 612825: param(const param_type& __param) 612825: { _M_param = __param; } 612825: 612825: 612825: 612825: 612825: result_type 612825: min() const 612825: { return this->a(); } 612825: 612825: 612825: 612825: 612825: result_type 612825: max() const 612825: { return this->b(); } 612825: 612825: 612825: 612825: 612825: template 612825: result_type 612825: operator()(_UniformRandomBitGenerator& __urng) 612825: { return this->operator()(__urng, _M_param); } 612825: 612825: template 612825: result_type 612825: operator()(_UniformRandomBitGenerator& __urng, 612825: const param_type& __p); 612825: 612825: template 612825: void 612825: __generate(_ForwardIterator __f, _ForwardIterator __t, 612825: _UniformRandomBitGenerator& __urng) 612825: { this->__generate(__f, __t, __urng, _M_param); } 612825: 612825: template 612825: void 612825: __generate(_ForwardIterator __f, _ForwardIterator __t, 612825: _UniformRandomBitGenerator& __urng, 612825: const param_type& __p) 612825: { this->__generate_impl(__f, __t, __urng, __p); } 612825: 612825: template 612825: void 612825: __generate(result_type* __f, result_type* __t, 612825: _UniformRandomBitGenerator& __urng, 612825: const param_type& __p) 612825: { this->__generate_impl(__f, __t, __urng, __p); } 612825: 612825: 612825: 612825: 612825: 612825: friend bool 612825: operator==(const uniform_int_distribution& __d1, 612825: const uniform_int_distribution& __d2) 612825: { return __d1._M_param == __d2._M_param; } 612825: 612825: private: 612825: template 612825: void 612825: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 612825: _UniformRandomBitGenerator& __urng, 612825: const param_type& __p); 612825: 612825: param_type _M_param; 612825: 612825: 612825: 612825: 612825: template 612825: static _Up 612825: _S_nd(_Urbg& __g, _Up __range) 612825: { 612825: using _Up_traits = __gnu_cxx::__int_traits<_Up>; 612825: using _Wp_traits = __gnu_cxx::__int_traits<_Wp>; 612825: static_assert(!_Up_traits::__is_signed, "U must be unsigned"); 612825: static_assert(!_Wp_traits::__is_signed, "W must be unsigned"); 612825: static_assert(_Wp_traits::__digits == (2 * _Up_traits::__digits), 612825: "W must be twice as wide as U"); 612825: 612825: 612825: 612825: 612825: _Wp __product = _Wp(__g()) * _Wp(__range); 612825: _Up __low = _Up(__product); 612825: if (__low < __range) 612825: { 612825: _Up __threshold = -__range % __range; 612825: while (__low < __threshold) 612825: { 612825: __product = _Wp(__g()) * _Wp(__range); 612825: __low = _Up(__product); 612825: } 612825: } 612825: return __product >> _Up_traits::__digits; 612825: } 612825: }; 612825: 612825: template 612825: template 612825: typename uniform_int_distribution<_IntType>::result_type 612825: uniform_int_distribution<_IntType>:: 612825: operator()(_UniformRandomBitGenerator& __urng, 612825: const param_type& __param) 612825: { 612825: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; 612825: typedef typename make_unsigned::type __utype; 612825: typedef typename common_type<_Gresult_type, __utype>::type __uctype; 612825: 612825: constexpr __uctype __urngmin = _UniformRandomBitGenerator::min(); 612825: constexpr __uctype __urngmax = _UniformRandomBitGenerator::max(); 612825: static_assert( __urngmin < __urngmax, 612825: "Uniform random bit generator must define min() < max()"); 612825: constexpr __uctype __urngrange = __urngmax - __urngmin; 612825: 612825: const __uctype __urange 612825: = __uctype(__param.b()) - __uctype(__param.a()); 612825: 612825: __uctype __ret; 612825: if (__urngrange > __urange) 612825: { 612825: 612825: 612825: const __uctype __uerange = __urange + 1; 612825: 612825: 612825: 612825: if (__urngrange == 0xffffffffffffffffUL) 612825: { 612825: 612825: 612825: long unsigned int __u64erange = __uerange; 612825: __ret = __extension__ _S_nd(__urng, 612825: __u64erange); 612825: } 612825: else 612825: 612825: if (__urngrange == 0xffffffffU) 612825: { 612825: 612825: 612825: unsigned int __u32erange = __uerange; 612825: __ret = _S_nd(__urng, __u32erange); 612825: } 612825: else 612825: 612825: { 612825: 612825: const __uctype __scaling = __urngrange / __uerange; 612825: const __uctype __past = __uerange * __scaling; 612825: do 612825: __ret = __uctype(__urng()) - __urngmin; 612825: while (__ret >= __past); 612825: __ret /= __scaling; 612825: } 612825: } 612825: else if (__urngrange < __urange) 612825: { 612825: # 348 "/usr/include/c++/12/bits/uniform_int_dist.h" 3 612825: __uctype __tmp; 612825: do 612825: { 612825: const __uctype __uerngrange = __urngrange + 1; 612825: __tmp = (__uerngrange * operator() 612825: (__urng, param_type(0, __urange / __uerngrange))); 612825: __ret = __tmp + (__uctype(__urng()) - __urngmin); 612825: } 612825: while (__ret > __urange || __ret < __tmp); 612825: } 612825: else 612825: __ret = __uctype(__urng()) - __urngmin; 612825: 612825: return __ret + __param.a(); 612825: } 612825: 612825: 612825: template 612825: template 612825: void 612825: uniform_int_distribution<_IntType>:: 612825: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, 612825: _UniformRandomBitGenerator& __urng, 612825: const param_type& __param) 612825: { 612825: 612825: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; 612825: typedef typename make_unsigned::type __utype; 612825: typedef typename common_type<_Gresult_type, __utype>::type __uctype; 612825: 612825: static_assert( __urng.min() < __urng.max(), 612825: "Uniform random bit generator must define min() < max()"); 612825: 612825: constexpr __uctype __urngmin = __urng.min(); 612825: constexpr __uctype __urngmax = __urng.max(); 612825: constexpr __uctype __urngrange = __urngmax - __urngmin; 612825: const __uctype __urange 612825: = __uctype(__param.b()) - __uctype(__param.a()); 612825: 612825: __uctype __ret; 612825: 612825: if (__urngrange > __urange) 612825: { 612825: if (__detail::_Power_of_2(__urngrange + 1) 612825: && __detail::_Power_of_2(__urange + 1)) 612825: { 612825: while (__f != __t) 612825: { 612825: __ret = __uctype(__urng()) - __urngmin; 612825: *__f++ = (__ret & __urange) + __param.a(); 612825: } 612825: } 612825: else 612825: { 612825: 612825: const __uctype __uerange = __urange + 1; 612825: const __uctype __scaling = __urngrange / __uerange; 612825: const __uctype __past = __uerange * __scaling; 612825: while (__f != __t) 612825: { 612825: do 612825: __ret = __uctype(__urng()) - __urngmin; 612825: while (__ret >= __past); 612825: *__f++ = __ret / __scaling + __param.a(); 612825: } 612825: } 612825: } 612825: else if (__urngrange < __urange) 612825: { 612825: # 433 "/usr/include/c++/12/bits/uniform_int_dist.h" 3 612825: __uctype __tmp; 612825: while (__f != __t) 612825: { 612825: do 612825: { 612825: constexpr __uctype __uerngrange = __urngrange + 1; 612825: __tmp = (__uerngrange * operator() 612825: (__urng, param_type(0, __urange / __uerngrange))); 612825: __ret = __tmp + (__uctype(__urng()) - __urngmin); 612825: } 612825: while (__ret > __urange || __ret < __tmp); 612825: *__f++ = __ret; 612825: } 612825: } 612825: else 612825: while (__f != __t) 612825: *__f++ = __uctype(__urng()) - __urngmin + __param.a(); 612825: } 612825: 612825: 612825: 612825: 612825: } 612825: # 66 "/usr/include/c++/12/bits/stl_algo.h" 2 3 612825: 612825: 612825: 612825: # 1 "/usr/include/c++/12/cstdlib" 1 3 612825: # 39 "/usr/include/c++/12/cstdlib" 3 612825: 612825: # 40 "/usr/include/c++/12/cstdlib" 3 612825: # 70 "/usr/include/c++/12/bits/stl_algo.h" 2 3 612825: 612825: 612825: 612825: 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: 612825: template 612825: 612825: void 612825: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, 612825: _Iterator __c, _Compare __comp) 612825: { 612825: if (__comp(__a, __b)) 612825: { 612825: if (__comp(__b, __c)) 612825: std::iter_swap(__result, __b); 612825: else if (__comp(__a, __c)) 612825: std::iter_swap(__result, __c); 612825: else 612825: std::iter_swap(__result, __a); 612825: } 612825: else if (__comp(__a, __c)) 612825: std::iter_swap(__result, __a); 612825: else if (__comp(__b, __c)) 612825: std::iter_swap(__result, __c); 612825: else 612825: std::iter_swap(__result, __b); 612825: } 612825: 612825: 612825: template 612825: 612825: inline _InputIterator 612825: __find_if_not(_InputIterator __first, _InputIterator __last, 612825: _Predicate __pred) 612825: { 612825: return std::__find_if(__first, __last, 612825: __gnu_cxx::__ops::__negate(__pred), 612825: std::__iterator_category(__first)); 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _InputIterator 612825: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) 612825: { 612825: for (; __len; --__len, (void) ++__first) 612825: if (!__pred(__first)) 612825: break; 612825: return __first; 612825: } 612825: # 141 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _ForwardIterator1 612825: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 612825: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 612825: _BinaryPredicate __predicate) 612825: { 612825: 612825: if (__first1 == __last1 || __first2 == __last2) 612825: return __first1; 612825: 612825: 612825: _ForwardIterator2 __p1(__first2); 612825: if (++__p1 == __last2) 612825: return std::__find_if(__first1, __last1, 612825: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 612825: 612825: 612825: _ForwardIterator1 __current = __first1; 612825: 612825: for (;;) 612825: { 612825: __first1 = 612825: std::__find_if(__first1, __last1, 612825: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); 612825: 612825: if (__first1 == __last1) 612825: return __last1; 612825: 612825: _ForwardIterator2 __p = __p1; 612825: __current = __first1; 612825: if (++__current == __last1) 612825: return __last1; 612825: 612825: while (__predicate(__current, __p)) 612825: { 612825: if (++__p == __last2) 612825: return __first1; 612825: if (++__current == __last1) 612825: return __last1; 612825: } 612825: ++__first1; 612825: } 612825: return __first1; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, 612825: _Integer __count, _UnaryPredicate __unary_pred, 612825: std::forward_iterator_tag) 612825: { 612825: __first = std::__find_if(__first, __last, __unary_pred); 612825: while (__first != __last) 612825: { 612825: typename iterator_traits<_ForwardIterator>::difference_type 612825: __n = __count; 612825: _ForwardIterator __i = __first; 612825: ++__i; 612825: while (__i != __last && __n != 1 && __unary_pred(__i)) 612825: { 612825: ++__i; 612825: --__n; 612825: } 612825: if (__n == 1) 612825: return __first; 612825: if (__i == __last) 612825: return __last; 612825: __first = std::__find_if(++__i, __last, __unary_pred); 612825: } 612825: return __last; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _RandomAccessIter 612825: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, 612825: _Integer __count, _UnaryPredicate __unary_pred, 612825: std::random_access_iterator_tag) 612825: { 612825: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type 612825: _DistanceType; 612825: 612825: _DistanceType __tailSize = __last - __first; 612825: _DistanceType __remainder = __count; 612825: 612825: while (__remainder <= __tailSize) 612825: { 612825: __first += __remainder; 612825: __tailSize -= __remainder; 612825: 612825: 612825: _RandomAccessIter __backTrack = __first; 612825: while (__unary_pred(--__backTrack)) 612825: { 612825: if (--__remainder == 0) 612825: return (__first - __count); 612825: } 612825: __remainder = __count + 1 - (__first - __backTrack); 612825: } 612825: return __last; 612825: } 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __search_n(_ForwardIterator __first, _ForwardIterator __last, 612825: _Integer __count, 612825: _UnaryPredicate __unary_pred) 612825: { 612825: if (__count <= 0) 612825: return __first; 612825: 612825: if (__count == 1) 612825: return std::__find_if(__first, __last, __unary_pred); 612825: 612825: return std::__search_n_aux(__first, __last, __count, __unary_pred, 612825: std::__iterator_category(__first)); 612825: } 612825: 612825: 612825: template 612825: 612825: _ForwardIterator1 612825: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 612825: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 612825: forward_iterator_tag, forward_iterator_tag, 612825: _BinaryPredicate __comp) 612825: { 612825: if (__first2 == __last2) 612825: return __last1; 612825: 612825: _ForwardIterator1 __result = __last1; 612825: while (1) 612825: { 612825: _ForwardIterator1 __new_result 612825: = std::__search(__first1, __last1, __first2, __last2, __comp); 612825: if (__new_result == __last1) 612825: return __result; 612825: else 612825: { 612825: __result = __new_result; 612825: __first1 = __new_result; 612825: ++__first1; 612825: } 612825: } 612825: } 612825: 612825: 612825: template 612825: 612825: _BidirectionalIterator1 612825: __find_end(_BidirectionalIterator1 __first1, 612825: _BidirectionalIterator1 __last1, 612825: _BidirectionalIterator2 __first2, 612825: _BidirectionalIterator2 __last2, 612825: bidirectional_iterator_tag, bidirectional_iterator_tag, 612825: _BinaryPredicate __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; 612825: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; 612825: 612825: _RevIterator1 __rlast1(__first1); 612825: _RevIterator2 __rlast2(__first2); 612825: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, 612825: _RevIterator2(__last2), __rlast2, 612825: __comp); 612825: 612825: if (__rresult == __rlast1) 612825: return __last1; 612825: else 612825: { 612825: _BidirectionalIterator1 __result = __rresult.base(); 612825: std::advance(__result, -std::distance(__first2, __last2)); 612825: return __result; 612825: } 612825: } 612825: # 367 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator1 612825: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 612825: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__find_end(__first1, __last1, __first2, __last2, 612825: std::__iterator_category(__first1), 612825: std::__iterator_category(__first2), 612825: __gnu_cxx::__ops::__iter_equal_to_iter()); 612825: } 612825: # 416 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator1 612825: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 612825: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 612825: _BinaryPredicate __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__find_end(__first1, __last1, __first2, __last2, 612825: std::__iterator_category(__first1), 612825: std::__iterator_category(__first2), 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: # 452 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 612825: { return __last == std::find_if_not(__first, __last, __pred); } 612825: # 470 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 612825: { return __last == std::find_if(__first, __last, __pred); } 612825: # 489 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) 612825: { return !std::none_of(__first, __last, __pred); } 612825: # 505 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _InputIterator 612825: find_if_not(_InputIterator __first, _InputIterator __last, 612825: _Predicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: return std::__find_if_not(__first, __last, 612825: __gnu_cxx::__ops::__pred_iter(__pred)); 612825: } 612825: # 530 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: is_partitioned(_InputIterator __first, _InputIterator __last, 612825: _Predicate __pred) 612825: { 612825: __first = std::find_if_not(__first, __last, __pred); 612825: if (__first == __last) 612825: return true; 612825: ++__first; 612825: return std::none_of(__first, __last, __pred); 612825: } 612825: # 552 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _ForwardIterator 612825: partition_point(_ForwardIterator __first, _ForwardIterator __last, 612825: _Predicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: typedef typename iterator_traits<_ForwardIterator>::difference_type 612825: _DistanceType; 612825: 612825: _DistanceType __len = std::distance(__first, __last); 612825: 612825: while (__len > 0) 612825: { 612825: _DistanceType __half = __len >> 1; 612825: _ForwardIterator __middle = __first; 612825: std::advance(__middle, __half); 612825: if (__pred(*__middle)) 612825: { 612825: __first = __middle; 612825: ++__first; 612825: __len = __len - __half - 1; 612825: } 612825: else 612825: __len = __half; 612825: } 612825: return __first; 612825: } 612825: 612825: 612825: template 612825: 612825: _OutputIterator 612825: __remove_copy_if(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result, _Predicate __pred) 612825: { 612825: for (; __first != __last; ++__first) 612825: if (!__pred(__first)) 612825: { 612825: *__result = *__first; 612825: ++__result; 612825: } 612825: return __result; 612825: } 612825: # 619 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: remove_copy(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result, const _Tp& __value) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__remove_copy_if(__first, __last, __result, 612825: __gnu_cxx::__ops::__iter_equals_val(__value)); 612825: } 612825: # 652 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: remove_copy_if(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result, _Predicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__remove_copy_if(__first, __last, __result, 612825: __gnu_cxx::__ops::__pred_iter(__pred)); 612825: } 612825: # 687 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _OutputIterator 612825: copy_if(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result, _Predicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: for (; __first != __last; ++__first) 612825: if (__pred(*__first)) 612825: { 612825: *__result = *__first; 612825: ++__result; 612825: } 612825: return __result; 612825: } 612825: 612825: template 612825: 612825: _OutputIterator 612825: __copy_n(_InputIterator __first, _Size __n, 612825: _OutputIterator __result, input_iterator_tag) 612825: { 612825: return std::__niter_wrap(__result, 612825: __copy_n_a(__first, __n, 612825: std::__niter_base(__result), true)); 612825: } 612825: 612825: template 612825: 612825: inline _OutputIterator 612825: __copy_n(_RandomAccessIterator __first, _Size __n, 612825: _OutputIterator __result, random_access_iterator_tag) 612825: { return std::copy(__first, __first + __n, __result); } 612825: # 743 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: const auto __n2 = std::__size_to_integer(__n); 612825: if (__n2 <= 0) 612825: return __result; 612825: 612825: ; 612825: ; 612825: 612825: return std::__copy_n(__first, __n2, __result, 612825: std::__iterator_category(__first)); 612825: } 612825: # 779 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: pair<_OutputIterator1, _OutputIterator2> 612825: partition_copy(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator1 __out_true, _OutputIterator2 __out_false, 612825: _Predicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: for (; __first != __last; ++__first) 612825: if (__pred(*__first)) 612825: { 612825: *__out_true = *__first; 612825: ++__out_true; 612825: } 612825: else 612825: { 612825: *__out_false = *__first; 612825: ++__out_false; 612825: } 612825: 612825: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); 612825: } 612825: # 830 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: remove(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __value) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__remove_if(__first, __last, 612825: __gnu_cxx::__ops::__iter_equals_val(__value)); 612825: } 612825: # 864 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: remove_if(_ForwardIterator __first, _ForwardIterator __last, 612825: _Predicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__remove_if(__first, __last, 612825: __gnu_cxx::__ops::__pred_iter(__pred)); 612825: } 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 612825: _BinaryPredicate __binary_pred) 612825: { 612825: if (__first == __last) 612825: return __last; 612825: _ForwardIterator __next = __first; 612825: while (++__next != __last) 612825: { 612825: if (__binary_pred(__first, __next)) 612825: return __first; 612825: __first = __next; 612825: } 612825: return __last; 612825: } 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __unique(_ForwardIterator __first, _ForwardIterator __last, 612825: _BinaryPredicate __binary_pred) 612825: { 612825: 612825: __first = std::__adjacent_find(__first, __last, __binary_pred); 612825: if (__first == __last) 612825: return __last; 612825: 612825: 612825: _ForwardIterator __dest = __first; 612825: ++__first; 612825: while (++__first != __last) 612825: if (!__binary_pred(__dest, __first)) 612825: *++__dest = std::move(*__first); 612825: return ++__dest; 612825: } 612825: # 933 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: unique(_ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__unique(__first, __last, 612825: __gnu_cxx::__ops::__iter_equal_to_iter()); 612825: } 612825: # 964 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: unique(_ForwardIterator __first, _ForwardIterator __last, 612825: _BinaryPredicate __binary_pred) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__unique(__first, __last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _OutputIterator 612825: __unique_copy(_ForwardIterator __first, _ForwardIterator __last, 612825: _OutputIterator __result, _BinaryPredicate __binary_pred, 612825: forward_iterator_tag, output_iterator_tag) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: _ForwardIterator __next = __first; 612825: *__result = *__first; 612825: while (++__next != __last) 612825: if (!__binary_pred(__first, __next)) 612825: { 612825: __first = __next; 612825: *++__result = *__first; 612825: } 612825: return ++__result; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _OutputIterator 612825: __unique_copy(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result, _BinaryPredicate __binary_pred, 612825: input_iterator_tag, output_iterator_tag) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: typename iterator_traits<_InputIterator>::value_type __value = *__first; 612825: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) 612825: __rebound_pred 612825: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); 612825: *__result = __value; 612825: while (++__first != __last) 612825: if (!__rebound_pred(__first, __value)) 612825: { 612825: __value = *__first; 612825: *++__result = __value; 612825: } 612825: return ++__result; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __unique_copy(_InputIterator __first, _InputIterator __last, 612825: _ForwardIterator __result, _BinaryPredicate __binary_pred, 612825: input_iterator_tag, forward_iterator_tag) 612825: { 612825: 612825: 612825: 612825: 612825: *__result = *__first; 612825: while (++__first != __last) 612825: if (!__binary_pred(__result, __first)) 612825: *++__result = *__first; 612825: return ++__result; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: void 612825: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, 612825: bidirectional_iterator_tag) 612825: { 612825: while (true) 612825: if (__first == __last || __first == --__last) 612825: return; 612825: else 612825: { 612825: std::iter_swap(__first, __last); 612825: ++__first; 612825: } 612825: } 612825: 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: void 612825: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: random_access_iterator_tag) 612825: { 612825: if (__first == __last) 612825: return; 612825: --__last; 612825: while (__first < __last) 612825: { 612825: std::iter_swap(__first, __last); 612825: ++__first; 612825: --__last; 612825: } 612825: } 612825: # 1125 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline void 612825: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) 612825: { 612825: 612825: 612825: 612825: ; 612825: std::__reverse(__first, __last, std::__iterator_category(__first)); 612825: } 612825: # 1153 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _OutputIterator 612825: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, 612825: _OutputIterator __result) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: while (__first != __last) 612825: { 612825: --__last; 612825: *__result = *__last; 612825: ++__result; 612825: } 612825: return __result; 612825: } 612825: 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _EuclideanRingElement 612825: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) 612825: { 612825: while (__n != 0) 612825: { 612825: _EuclideanRingElement __t = __m % __n; 612825: __m = __n; 612825: __n = __t; 612825: } 612825: return __m; 612825: } 612825: 612825: inline namespace _V2 612825: { 612825: 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __rotate(_ForwardIterator __first, 612825: _ForwardIterator __middle, 612825: _ForwardIterator __last, 612825: forward_iterator_tag) 612825: { 612825: if (__first == __middle) 612825: return __last; 612825: else if (__last == __middle) 612825: return __first; 612825: 612825: _ForwardIterator __first2 = __middle; 612825: do 612825: { 612825: std::iter_swap(__first, __first2); 612825: ++__first; 612825: ++__first2; 612825: if (__first == __middle) 612825: __middle = __first2; 612825: } 612825: while (__first2 != __last); 612825: 612825: _ForwardIterator __ret = __first; 612825: 612825: __first2 = __middle; 612825: 612825: while (__first2 != __last) 612825: { 612825: std::iter_swap(__first, __first2); 612825: ++__first; 612825: ++__first2; 612825: if (__first == __middle) 612825: __middle = __first2; 612825: else if (__first2 == __last) 612825: __first2 = __middle; 612825: } 612825: return __ret; 612825: } 612825: 612825: 612825: template 612825: 612825: _BidirectionalIterator 612825: __rotate(_BidirectionalIterator __first, 612825: _BidirectionalIterator __middle, 612825: _BidirectionalIterator __last, 612825: bidirectional_iterator_tag) 612825: { 612825: 612825: 612825: 612825: 612825: if (__first == __middle) 612825: return __last; 612825: else if (__last == __middle) 612825: return __first; 612825: 612825: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 612825: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 612825: 612825: while (__first != __middle && __middle != __last) 612825: { 612825: std::iter_swap(__first, --__last); 612825: ++__first; 612825: } 612825: 612825: if (__first == __middle) 612825: { 612825: std::__reverse(__middle, __last, bidirectional_iterator_tag()); 612825: return __last; 612825: } 612825: else 612825: { 612825: std::__reverse(__first, __middle, bidirectional_iterator_tag()); 612825: return __first; 612825: } 612825: } 612825: 612825: 612825: template 612825: 612825: _RandomAccessIterator 612825: __rotate(_RandomAccessIterator __first, 612825: _RandomAccessIterator __middle, 612825: _RandomAccessIterator __last, 612825: random_access_iterator_tag) 612825: { 612825: 612825: 612825: 612825: 612825: if (__first == __middle) 612825: return __last; 612825: else if (__last == __middle) 612825: return __first; 612825: 612825: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 612825: _Distance; 612825: typedef typename iterator_traits<_RandomAccessIterator>::value_type 612825: _ValueType; 612825: 612825: _Distance __n = __last - __first; 612825: _Distance __k = __middle - __first; 612825: 612825: if (__k == __n - __k) 612825: { 612825: std::swap_ranges(__first, __middle, __middle); 612825: return __middle; 612825: } 612825: 612825: _RandomAccessIterator __p = __first; 612825: _RandomAccessIterator __ret = __first + (__last - __middle); 612825: 612825: for (;;) 612825: { 612825: if (__k < __n - __k) 612825: { 612825: if (__is_pod(_ValueType) && __k == 1) 612825: { 612825: _ValueType __t = std::move(*__p); 612825: std::move(__p + 1, __p + __n, __p); 612825: *(__p + __n - 1) = std::move(__t); 612825: return __ret; 612825: } 612825: _RandomAccessIterator __q = __p + __k; 612825: for (_Distance __i = 0; __i < __n - __k; ++ __i) 612825: { 612825: std::iter_swap(__p, __q); 612825: ++__p; 612825: ++__q; 612825: } 612825: __n %= __k; 612825: if (__n == 0) 612825: return __ret; 612825: std::swap(__n, __k); 612825: __k = __n - __k; 612825: } 612825: else 612825: { 612825: __k = __n - __k; 612825: if (__is_pod(_ValueType) && __k == 1) 612825: { 612825: _ValueType __t = std::move(*(__p + __n - 1)); 612825: std::move_backward(__p, __p + __n - 1, __p + __n); 612825: *__p = std::move(__t); 612825: return __ret; 612825: } 612825: _RandomAccessIterator __q = __p + __n; 612825: __p = __q - __k; 612825: for (_Distance __i = 0; __i < __n - __k; ++ __i) 612825: { 612825: --__p; 612825: --__q; 612825: std::iter_swap(__p, __q); 612825: } 612825: __n %= __k; 612825: if (__n == 0) 612825: return __ret; 612825: std::swap(__n, __k); 612825: } 612825: } 612825: } 612825: # 1385 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: rotate(_ForwardIterator __first, _ForwardIterator __middle, 612825: _ForwardIterator __last) 612825: { 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__rotate(__first, __middle, __last, 612825: std::__iterator_category(__first)); 612825: } 612825: 612825: } 612825: # 1423 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, 612825: _ForwardIterator __last, _OutputIterator __result) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::copy(__first, __middle, 612825: std::copy(__middle, __last, __result)); 612825: } 612825: 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __partition(_ForwardIterator __first, _ForwardIterator __last, 612825: _Predicate __pred, forward_iterator_tag) 612825: { 612825: if (__first == __last) 612825: return __first; 612825: 612825: while (__pred(*__first)) 612825: if (++__first == __last) 612825: return __first; 612825: 612825: _ForwardIterator __next = __first; 612825: 612825: while (++__next != __last) 612825: if (__pred(*__next)) 612825: { 612825: std::iter_swap(__first, __next); 612825: ++__first; 612825: } 612825: 612825: return __first; 612825: } 612825: 612825: 612825: template 612825: 612825: _BidirectionalIterator 612825: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, 612825: _Predicate __pred, bidirectional_iterator_tag) 612825: { 612825: while (true) 612825: { 612825: while (true) 612825: if (__first == __last) 612825: return __first; 612825: else if (__pred(*__first)) 612825: ++__first; 612825: else 612825: break; 612825: --__last; 612825: while (true) 612825: if (__first == __last) 612825: return __first; 612825: else if (!bool(__pred(*__last))) 612825: --__last; 612825: else 612825: break; 612825: std::iter_swap(__first, __last); 612825: ++__first; 612825: } 612825: } 612825: # 1503 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: _ForwardIterator 612825: __stable_partition_adaptive(_ForwardIterator __first, 612825: _ForwardIterator __last, 612825: _Predicate __pred, _Distance __len, 612825: _Pointer __buffer, 612825: _Distance __buffer_size) 612825: { 612825: if (__len == 1) 612825: return __first; 612825: 612825: if (__len <= __buffer_size) 612825: { 612825: _ForwardIterator __result1 = __first; 612825: _Pointer __result2 = __buffer; 612825: 612825: 612825: 612825: 612825: *__result2 = std::move(*__first); 612825: ++__result2; 612825: ++__first; 612825: for (; __first != __last; ++__first) 612825: if (__pred(__first)) 612825: { 612825: *__result1 = std::move(*__first); 612825: ++__result1; 612825: } 612825: else 612825: { 612825: *__result2 = std::move(*__first); 612825: ++__result2; 612825: } 612825: 612825: std::move(__buffer, __result2, __result1); 612825: return __result1; 612825: } 612825: 612825: _ForwardIterator __middle = __first; 612825: std::advance(__middle, __len / 2); 612825: _ForwardIterator __left_split = 612825: std::__stable_partition_adaptive(__first, __middle, __pred, 612825: __len / 2, __buffer, 612825: __buffer_size); 612825: 612825: 612825: 612825: _Distance __right_len = __len - __len / 2; 612825: _ForwardIterator __right_split = 612825: std::__find_if_not_n(__middle, __right_len, __pred); 612825: 612825: if (__right_len) 612825: __right_split = 612825: std::__stable_partition_adaptive(__right_split, __last, __pred, 612825: __right_len, 612825: __buffer, __buffer_size); 612825: 612825: return std::rotate(__left_split, __middle, __right_split); 612825: } 612825: 612825: template 612825: _ForwardIterator 612825: __stable_partition(_ForwardIterator __first, _ForwardIterator __last, 612825: _Predicate __pred) 612825: { 612825: __first = std::__find_if_not(__first, __last, __pred); 612825: 612825: if (__first == __last) 612825: return __first; 612825: 612825: typedef typename iterator_traits<_ForwardIterator>::value_type 612825: _ValueType; 612825: typedef typename iterator_traits<_ForwardIterator>::difference_type 612825: _DistanceType; 612825: 612825: _Temporary_buffer<_ForwardIterator, _ValueType> 612825: __buf(__first, std::distance(__first, __last)); 612825: return 612825: std::__stable_partition_adaptive(__first, __last, __pred, 612825: _DistanceType(__buf.requested_size()), 612825: __buf.begin(), 612825: _DistanceType(__buf.size())); 612825: } 612825: # 1605 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: inline _ForwardIterator 612825: stable_partition(_ForwardIterator __first, _ForwardIterator __last, 612825: _Predicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__stable_partition(__first, __last, 612825: __gnu_cxx::__ops::__pred_iter(__pred)); 612825: } 612825: 612825: 612825: template 612825: 612825: void 612825: __heap_select(_RandomAccessIterator __first, 612825: _RandomAccessIterator __middle, 612825: _RandomAccessIterator __last, _Compare __comp) 612825: { 612825: std::__make_heap(__first, __middle, __comp); 612825: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) 612825: if (__comp(__i, __first)) 612825: std::__pop_heap(__first, __middle, __i, __comp); 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: _RandomAccessIterator 612825: __partial_sort_copy(_InputIterator __first, _InputIterator __last, 612825: _RandomAccessIterator __result_first, 612825: _RandomAccessIterator __result_last, 612825: _Compare __comp) 612825: { 612825: typedef typename iterator_traits<_InputIterator>::value_type 612825: _InputValueType; 612825: typedef iterator_traits<_RandomAccessIterator> _RItTraits; 612825: typedef typename _RItTraits::difference_type _DistanceType; 612825: 612825: if (__result_first == __result_last) 612825: return __result_last; 612825: _RandomAccessIterator __result_real_last = __result_first; 612825: while (__first != __last && __result_real_last != __result_last) 612825: { 612825: *__result_real_last = *__first; 612825: ++__result_real_last; 612825: ++__first; 612825: } 612825: 612825: std::__make_heap(__result_first, __result_real_last, __comp); 612825: while (__first != __last) 612825: { 612825: if (__comp(__first, __result_first)) 612825: std::__adjust_heap(__result_first, _DistanceType(0), 612825: _DistanceType(__result_real_last 612825: - __result_first), 612825: _InputValueType(*__first), __comp); 612825: ++__first; 612825: } 612825: std::__sort_heap(__result_first, __result_real_last, __comp); 612825: return __result_real_last; 612825: } 612825: # 1693 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _RandomAccessIterator 612825: partial_sort_copy(_InputIterator __first, _InputIterator __last, 612825: _RandomAccessIterator __result_first, 612825: _RandomAccessIterator __result_last) 612825: { 612825: # 1708 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__partial_sort_copy(__first, __last, 612825: __result_first, __result_last, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 1743 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _RandomAccessIterator 612825: partial_sort_copy(_InputIterator __first, _InputIterator __last, 612825: _RandomAccessIterator __result_first, 612825: _RandomAccessIterator __result_last, 612825: _Compare __comp) 612825: { 612825: # 1760 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__partial_sort_copy(__first, __last, 612825: __result_first, __result_last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: 612825: template 612825: 612825: void 612825: __unguarded_linear_insert(_RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: typename iterator_traits<_RandomAccessIterator>::value_type 612825: __val = std::move(*__last); 612825: _RandomAccessIterator __next = __last; 612825: --__next; 612825: while (__comp(__val, __next)) 612825: { 612825: *__last = std::move(*__next); 612825: __last = __next; 612825: --__next; 612825: } 612825: *__last = std::move(__val); 612825: } 612825: 612825: 612825: template 612825: 612825: void 612825: __insertion_sort(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, _Compare __comp) 612825: { 612825: if (__first == __last) return; 612825: 612825: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 612825: { 612825: if (__comp(__i, __first)) 612825: { 612825: typename iterator_traits<_RandomAccessIterator>::value_type 612825: __val = std::move(*__i); 612825: std::move_backward(__first, __i, __i + 1); 612825: *__first = std::move(__val); 612825: } 612825: else 612825: std::__unguarded_linear_insert(__i, 612825: __gnu_cxx::__ops::__val_comp_iter(__comp)); 612825: } 612825: } 612825: 612825: 612825: template 612825: 612825: inline void 612825: __unguarded_insertion_sort(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, _Compare __comp) 612825: { 612825: for (_RandomAccessIterator __i = __first; __i != __last; ++__i) 612825: std::__unguarded_linear_insert(__i, 612825: __gnu_cxx::__ops::__val_comp_iter(__comp)); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: enum { _S_threshold = 16 }; 612825: 612825: 612825: template 612825: 612825: void 612825: __final_insertion_sort(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, _Compare __comp) 612825: { 612825: if (__last - __first > int(_S_threshold)) 612825: { 612825: std::__insertion_sort(__first, __first + int(_S_threshold), __comp); 612825: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, 612825: __comp); 612825: } 612825: else 612825: std::__insertion_sort(__first, __last, __comp); 612825: } 612825: 612825: 612825: template 612825: 612825: _RandomAccessIterator 612825: __unguarded_partition(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, 612825: _RandomAccessIterator __pivot, _Compare __comp) 612825: { 612825: while (true) 612825: { 612825: while (__comp(__first, __pivot)) 612825: ++__first; 612825: --__last; 612825: while (__comp(__pivot, __last)) 612825: --__last; 612825: if (!(__first < __last)) 612825: return __first; 612825: std::iter_swap(__first, __last); 612825: ++__first; 612825: } 612825: } 612825: 612825: 612825: template 612825: 612825: inline _RandomAccessIterator 612825: __unguarded_partition_pivot(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, _Compare __comp) 612825: { 612825: _RandomAccessIterator __mid = __first + (__last - __first) / 2; 612825: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, 612825: __comp); 612825: return std::__unguarded_partition(__first + 1, __last, __first, __comp); 612825: } 612825: 612825: template 612825: 612825: inline void 612825: __partial_sort(_RandomAccessIterator __first, 612825: _RandomAccessIterator __middle, 612825: _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: std::__heap_select(__first, __middle, __last, __comp); 612825: std::__sort_heap(__first, __middle, __comp); 612825: } 612825: 612825: 612825: template 612825: 612825: void 612825: __introsort_loop(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, 612825: _Size __depth_limit, _Compare __comp) 612825: { 612825: while (__last - __first > int(_S_threshold)) 612825: { 612825: if (__depth_limit == 0) 612825: { 612825: std::__partial_sort(__first, __last, __last, __comp); 612825: return; 612825: } 612825: --__depth_limit; 612825: _RandomAccessIterator __cut = 612825: std::__unguarded_partition_pivot(__first, __last, __comp); 612825: std::__introsort_loop(__cut, __last, __depth_limit, __comp); 612825: __last = __cut; 612825: } 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: inline void 612825: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: if (__first != __last) 612825: { 612825: std::__introsort_loop(__first, __last, 612825: std::__lg(__last - __first) * 2, 612825: __comp); 612825: std::__final_insertion_sort(__first, __last, __comp); 612825: } 612825: } 612825: 612825: template 612825: 612825: void 612825: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, 612825: _RandomAccessIterator __last, _Size __depth_limit, 612825: _Compare __comp) 612825: { 612825: while (__last - __first > 3) 612825: { 612825: if (__depth_limit == 0) 612825: { 612825: std::__heap_select(__first, __nth + 1, __last, __comp); 612825: 612825: std::iter_swap(__first, __nth); 612825: return; 612825: } 612825: --__depth_limit; 612825: _RandomAccessIterator __cut = 612825: std::__unguarded_partition_pivot(__first, __last, __comp); 612825: if (__cut <= __nth) 612825: __first = __cut; 612825: else 612825: __last = __cut; 612825: } 612825: std::__insertion_sort(__first, __last, __comp); 612825: } 612825: # 1991 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: lower_bound(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__lower_bound(__first, __last, __val, 612825: __gnu_cxx::__ops::__iter_comp_val(__comp)); 612825: } 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __upper_bound(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val, _Compare __comp) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::difference_type 612825: _DistanceType; 612825: 612825: _DistanceType __len = std::distance(__first, __last); 612825: 612825: while (__len > 0) 612825: { 612825: _DistanceType __half = __len >> 1; 612825: _ForwardIterator __middle = __first; 612825: std::advance(__middle, __half); 612825: if (__comp(__val, __middle)) 612825: __len = __half; 612825: else 612825: { 612825: __first = __middle; 612825: ++__first; 612825: __len = __len - __half - 1; 612825: } 612825: } 612825: return __first; 612825: } 612825: # 2047 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__upper_bound(__first, __last, __val, 612825: __gnu_cxx::__ops::__val_less_iter()); 612825: } 612825: # 2078 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: upper_bound(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__upper_bound(__first, __last, __val, 612825: __gnu_cxx::__ops::__val_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: pair<_ForwardIterator, _ForwardIterator> 612825: __equal_range(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val, 612825: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) 612825: { 612825: typedef typename iterator_traits<_ForwardIterator>::difference_type 612825: _DistanceType; 612825: 612825: _DistanceType __len = std::distance(__first, __last); 612825: 612825: while (__len > 0) 612825: { 612825: _DistanceType __half = __len >> 1; 612825: _ForwardIterator __middle = __first; 612825: std::advance(__middle, __half); 612825: if (__comp_it_val(__middle, __val)) 612825: { 612825: __first = __middle; 612825: ++__first; 612825: __len = __len - __half - 1; 612825: } 612825: else if (__comp_val_it(__val, __middle)) 612825: __len = __half; 612825: else 612825: { 612825: _ForwardIterator __left 612825: = std::__lower_bound(__first, __middle, __val, __comp_it_val); 612825: std::advance(__first, __len); 612825: _ForwardIterator __right 612825: = std::__upper_bound(++__middle, __first, __val, __comp_val_it); 612825: return pair<_ForwardIterator, _ForwardIterator>(__left, __right); 612825: } 612825: } 612825: return pair<_ForwardIterator, _ForwardIterator>(__first, __first); 612825: } 612825: # 2151 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline pair<_ForwardIterator, _ForwardIterator> 612825: equal_range(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__equal_range(__first, __last, __val, 612825: __gnu_cxx::__ops::__iter_less_val(), 612825: __gnu_cxx::__ops::__val_less_iter()); 612825: } 612825: # 2188 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline pair<_ForwardIterator, _ForwardIterator> 612825: equal_range(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: ; 612825: 612825: return std::__equal_range(__first, __last, __val, 612825: __gnu_cxx::__ops::__iter_comp_val(__comp), 612825: __gnu_cxx::__ops::__val_comp_iter(__comp)); 612825: } 612825: # 2222 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: bool 612825: binary_search(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: _ForwardIterator __i 612825: = std::__lower_bound(__first, __last, __val, 612825: __gnu_cxx::__ops::__iter_less_val()); 612825: return __i != __last && !(__val < *__i); 612825: } 612825: # 2256 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: bool 612825: binary_search(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __val, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: ; 612825: 612825: _ForwardIterator __i 612825: = std::__lower_bound(__first, __last, __val, 612825: __gnu_cxx::__ops::__iter_comp_val(__comp)); 612825: return __i != __last && !bool(__comp(__val, *__i)); 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: void 612825: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result, _Compare __comp) 612825: { 612825: while (__first1 != __last1 && __first2 != __last2) 612825: { 612825: if (__comp(__first2, __first1)) 612825: { 612825: *__result = std::move(*__first2); 612825: ++__first2; 612825: } 612825: else 612825: { 612825: *__result = std::move(*__first1); 612825: ++__first1; 612825: } 612825: ++__result; 612825: } 612825: if (__first1 != __last1) 612825: std::move(__first1, __last1, __result); 612825: } 612825: 612825: 612825: template 612825: void 612825: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, 612825: _BidirectionalIterator1 __last1, 612825: _BidirectionalIterator2 __first2, 612825: _BidirectionalIterator2 __last2, 612825: _BidirectionalIterator3 __result, 612825: _Compare __comp) 612825: { 612825: if (__first1 == __last1) 612825: { 612825: std::move_backward(__first2, __last2, __result); 612825: return; 612825: } 612825: else if (__first2 == __last2) 612825: return; 612825: 612825: --__last1; 612825: --__last2; 612825: while (true) 612825: { 612825: if (__comp(__last2, __last1)) 612825: { 612825: *--__result = std::move(*__last1); 612825: if (__first1 == __last1) 612825: { 612825: std::move_backward(__first2, ++__last2, __result); 612825: return; 612825: } 612825: --__last1; 612825: } 612825: else 612825: { 612825: *--__result = std::move(*__last2); 612825: if (__first2 == __last2) 612825: return; 612825: --__last2; 612825: } 612825: } 612825: } 612825: 612825: 612825: template 612825: _BidirectionalIterator1 612825: __rotate_adaptive(_BidirectionalIterator1 __first, 612825: _BidirectionalIterator1 __middle, 612825: _BidirectionalIterator1 __last, 612825: _Distance __len1, _Distance __len2, 612825: _BidirectionalIterator2 __buffer, 612825: _Distance __buffer_size) 612825: { 612825: _BidirectionalIterator2 __buffer_end; 612825: if (__len1 > __len2 && __len2 <= __buffer_size) 612825: { 612825: if (__len2) 612825: { 612825: __buffer_end = std::move(__middle, __last, __buffer); 612825: std::move_backward(__first, __middle, __last); 612825: return std::move(__buffer, __buffer_end, __first); 612825: } 612825: else 612825: return __first; 612825: } 612825: else if (__len1 <= __buffer_size) 612825: { 612825: if (__len1) 612825: { 612825: __buffer_end = std::move(__first, __middle, __buffer); 612825: std::move(__middle, __last, __first); 612825: return std::move_backward(__buffer, __buffer_end, __last); 612825: } 612825: else 612825: return __last; 612825: } 612825: else 612825: return std::rotate(__first, __middle, __last); 612825: } 612825: 612825: 612825: template 612825: void 612825: __merge_adaptive(_BidirectionalIterator __first, 612825: _BidirectionalIterator __middle, 612825: _BidirectionalIterator __last, 612825: _Distance __len1, _Distance __len2, 612825: _Pointer __buffer, _Distance __buffer_size, 612825: _Compare __comp) 612825: { 612825: if (__len1 <= __len2 && __len1 <= __buffer_size) 612825: { 612825: _Pointer __buffer_end = std::move(__first, __middle, __buffer); 612825: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, 612825: __first, __comp); 612825: } 612825: else if (__len2 <= __buffer_size) 612825: { 612825: _Pointer __buffer_end = std::move(__middle, __last, __buffer); 612825: std::__move_merge_adaptive_backward(__first, __middle, __buffer, 612825: __buffer_end, __last, __comp); 612825: } 612825: else 612825: { 612825: _BidirectionalIterator __first_cut = __first; 612825: _BidirectionalIterator __second_cut = __middle; 612825: _Distance __len11 = 0; 612825: _Distance __len22 = 0; 612825: if (__len1 > __len2) 612825: { 612825: __len11 = __len1 / 2; 612825: std::advance(__first_cut, __len11); 612825: __second_cut 612825: = std::__lower_bound(__middle, __last, *__first_cut, 612825: __gnu_cxx::__ops::__iter_comp_val(__comp)); 612825: __len22 = std::distance(__middle, __second_cut); 612825: } 612825: else 612825: { 612825: __len22 = __len2 / 2; 612825: std::advance(__second_cut, __len22); 612825: __first_cut 612825: = std::__upper_bound(__first, __middle, *__second_cut, 612825: __gnu_cxx::__ops::__val_comp_iter(__comp)); 612825: __len11 = std::distance(__first, __first_cut); 612825: } 612825: 612825: _BidirectionalIterator __new_middle 612825: = std::__rotate_adaptive(__first_cut, __middle, __second_cut, 612825: __len1 - __len11, __len22, __buffer, 612825: __buffer_size); 612825: std::__merge_adaptive(__first, __first_cut, __new_middle, __len11, 612825: __len22, __buffer, __buffer_size, __comp); 612825: std::__merge_adaptive(__new_middle, __second_cut, __last, 612825: __len1 - __len11, 612825: __len2 - __len22, __buffer, 612825: __buffer_size, __comp); 612825: } 612825: } 612825: 612825: 612825: template 612825: void 612825: __merge_without_buffer(_BidirectionalIterator __first, 612825: _BidirectionalIterator __middle, 612825: _BidirectionalIterator __last, 612825: _Distance __len1, _Distance __len2, 612825: _Compare __comp) 612825: { 612825: if (__len1 == 0 || __len2 == 0) 612825: return; 612825: 612825: if (__len1 + __len2 == 2) 612825: { 612825: if (__comp(__middle, __first)) 612825: std::iter_swap(__first, __middle); 612825: return; 612825: } 612825: 612825: _BidirectionalIterator __first_cut = __first; 612825: _BidirectionalIterator __second_cut = __middle; 612825: _Distance __len11 = 0; 612825: _Distance __len22 = 0; 612825: if (__len1 > __len2) 612825: { 612825: __len11 = __len1 / 2; 612825: std::advance(__first_cut, __len11); 612825: __second_cut 612825: = std::__lower_bound(__middle, __last, *__first_cut, 612825: __gnu_cxx::__ops::__iter_comp_val(__comp)); 612825: __len22 = std::distance(__middle, __second_cut); 612825: } 612825: else 612825: { 612825: __len22 = __len2 / 2; 612825: std::advance(__second_cut, __len22); 612825: __first_cut 612825: = std::__upper_bound(__first, __middle, *__second_cut, 612825: __gnu_cxx::__ops::__val_comp_iter(__comp)); 612825: __len11 = std::distance(__first, __first_cut); 612825: } 612825: 612825: _BidirectionalIterator __new_middle 612825: = std::rotate(__first_cut, __middle, __second_cut); 612825: std::__merge_without_buffer(__first, __first_cut, __new_middle, 612825: __len11, __len22, __comp); 612825: std::__merge_without_buffer(__new_middle, __second_cut, __last, 612825: __len1 - __len11, __len2 - __len22, __comp); 612825: } 612825: 612825: template 612825: void 612825: __inplace_merge(_BidirectionalIterator __first, 612825: _BidirectionalIterator __middle, 612825: _BidirectionalIterator __last, 612825: _Compare __comp) 612825: { 612825: typedef typename iterator_traits<_BidirectionalIterator>::value_type 612825: _ValueType; 612825: typedef typename iterator_traits<_BidirectionalIterator>::difference_type 612825: _DistanceType; 612825: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; 612825: 612825: if (__first == __middle || __middle == __last) 612825: return; 612825: 612825: const _DistanceType __len1 = std::distance(__first, __middle); 612825: const _DistanceType __len2 = std::distance(__middle, __last); 612825: 612825: 612825: 612825: _TmpBuf __buf(__first, std::min(__len1, __len2)); 612825: 612825: if (__buf.begin() == 0) 612825: std::__merge_without_buffer 612825: (__first, __middle, __last, __len1, __len2, __comp); 612825: else 612825: std::__merge_adaptive 612825: (__first, __middle, __last, __len1, __len2, __buf.begin(), 612825: _DistanceType(__buf.size()), __comp); 612825: } 612825: # 2548 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: inline void 612825: inplace_merge(_BidirectionalIterator __first, 612825: _BidirectionalIterator __middle, 612825: _BidirectionalIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: std::__inplace_merge(__first, __middle, __last, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 2589 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: inline void 612825: inplace_merge(_BidirectionalIterator __first, 612825: _BidirectionalIterator __middle, 612825: _BidirectionalIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: std::__inplace_merge(__first, __middle, __last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: 612825: 612825: template 612825: _OutputIterator 612825: __move_merge(_InputIterator __first1, _InputIterator __last1, 612825: _InputIterator __first2, _InputIterator __last2, 612825: _OutputIterator __result, _Compare __comp) 612825: { 612825: while (__first1 != __last1 && __first2 != __last2) 612825: { 612825: if (__comp(__first2, __first1)) 612825: { 612825: *__result = std::move(*__first2); 612825: ++__first2; 612825: } 612825: else 612825: { 612825: *__result = std::move(*__first1); 612825: ++__first1; 612825: } 612825: ++__result; 612825: } 612825: return std::move(__first2, __last2, std::move(__first1, __last1, __result)) 612825: 612825: ; 612825: } 612825: 612825: template 612825: void 612825: __merge_sort_loop(_RandomAccessIterator1 __first, 612825: _RandomAccessIterator1 __last, 612825: _RandomAccessIterator2 __result, _Distance __step_size, 612825: _Compare __comp) 612825: { 612825: const _Distance __two_step = 2 * __step_size; 612825: 612825: while (__last - __first >= __two_step) 612825: { 612825: __result = std::__move_merge(__first, __first + __step_size, 612825: __first + __step_size, 612825: __first + __two_step, 612825: __result, __comp); 612825: __first += __two_step; 612825: } 612825: __step_size = std::min(_Distance(__last - __first), __step_size); 612825: 612825: std::__move_merge(__first, __first + __step_size, 612825: __first + __step_size, __last, __result, __comp); 612825: } 612825: 612825: template 612825: 612825: void 612825: __chunk_insertion_sort(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, 612825: _Distance __chunk_size, _Compare __comp) 612825: { 612825: while (__last - __first >= __chunk_size) 612825: { 612825: std::__insertion_sort(__first, __first + __chunk_size, __comp); 612825: __first += __chunk_size; 612825: } 612825: std::__insertion_sort(__first, __last, __comp); 612825: } 612825: 612825: enum { _S_chunk_size = 7 }; 612825: 612825: template 612825: void 612825: __merge_sort_with_buffer(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, 612825: _Pointer __buffer, _Compare __comp) 612825: { 612825: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 612825: _Distance; 612825: 612825: const _Distance __len = __last - __first; 612825: const _Pointer __buffer_last = __buffer + __len; 612825: 612825: _Distance __step_size = _S_chunk_size; 612825: std::__chunk_insertion_sort(__first, __last, __step_size, __comp); 612825: 612825: while (__step_size < __len) 612825: { 612825: std::__merge_sort_loop(__first, __last, __buffer, 612825: __step_size, __comp); 612825: __step_size *= 2; 612825: std::__merge_sort_loop(__buffer, __buffer_last, __first, 612825: __step_size, __comp); 612825: __step_size *= 2; 612825: } 612825: } 612825: 612825: template 612825: void 612825: __stable_sort_adaptive(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, 612825: _Pointer __buffer, _Distance __buffer_size, 612825: _Compare __comp) 612825: { 612825: const _Distance __len = (__last - __first + 1) / 2; 612825: const _RandomAccessIterator __middle = __first + __len; 612825: if (__len > __buffer_size) 612825: { 612825: std::__stable_sort_adaptive(__first, __middle, __buffer, 612825: __buffer_size, __comp); 612825: std::__stable_sort_adaptive(__middle, __last, __buffer, 612825: __buffer_size, __comp); 612825: } 612825: else 612825: { 612825: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); 612825: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); 612825: } 612825: 612825: std::__merge_adaptive(__first, __middle, __last, 612825: _Distance(__middle - __first), 612825: _Distance(__last - __middle), 612825: __buffer, __buffer_size, 612825: __comp); 612825: } 612825: 612825: 612825: template 612825: void 612825: __inplace_stable_sort(_RandomAccessIterator __first, 612825: _RandomAccessIterator __last, _Compare __comp) 612825: { 612825: if (__last - __first < 15) 612825: { 612825: std::__insertion_sort(__first, __last, __comp); 612825: return; 612825: } 612825: _RandomAccessIterator __middle = __first + (__last - __first) / 2; 612825: std::__inplace_stable_sort(__first, __middle, __comp); 612825: std::__inplace_stable_sort(__middle, __last, __comp); 612825: std::__merge_without_buffer(__first, __middle, __last, 612825: __middle - __first, 612825: __last - __middle, 612825: __comp); 612825: } 612825: # 2763 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: bool 612825: __includes(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _Compare __comp) 612825: { 612825: while (__first1 != __last1 && __first2 != __last2) 612825: { 612825: if (__comp(__first2, __first1)) 612825: return false; 612825: if (!__comp(__first1, __first2)) 612825: ++__first2; 612825: ++__first1; 612825: } 612825: 612825: return __first2 == __last2; 612825: } 612825: # 2801 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: includes(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__includes(__first1, __last1, __first2, __last2, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 2846 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: includes(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__includes(__first1, __last1, __first2, __last2, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: # 2882 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: bool 612825: __next_permutation(_BidirectionalIterator __first, 612825: _BidirectionalIterator __last, _Compare __comp) 612825: { 612825: if (__first == __last) 612825: return false; 612825: _BidirectionalIterator __i = __first; 612825: ++__i; 612825: if (__i == __last) 612825: return false; 612825: __i = __last; 612825: --__i; 612825: 612825: for(;;) 612825: { 612825: _BidirectionalIterator __ii = __i; 612825: --__i; 612825: if (__comp(__i, __ii)) 612825: { 612825: _BidirectionalIterator __j = __last; 612825: while (!__comp(__i, --__j)) 612825: {} 612825: std::iter_swap(__i, __j); 612825: std::__reverse(__ii, __last, 612825: std::__iterator_category(__first)); 612825: return true; 612825: } 612825: if (__i == __first) 612825: { 612825: std::__reverse(__first, __last, 612825: std::__iterator_category(__first)); 612825: return false; 612825: } 612825: } 612825: } 612825: # 2932 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: next_permutation(_BidirectionalIterator __first, 612825: _BidirectionalIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__next_permutation 612825: (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 2965 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: next_permutation(_BidirectionalIterator __first, 612825: _BidirectionalIterator __last, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__next_permutation 612825: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: bool 612825: __prev_permutation(_BidirectionalIterator __first, 612825: _BidirectionalIterator __last, _Compare __comp) 612825: { 612825: if (__first == __last) 612825: return false; 612825: _BidirectionalIterator __i = __first; 612825: ++__i; 612825: if (__i == __last) 612825: return false; 612825: __i = __last; 612825: --__i; 612825: 612825: for(;;) 612825: { 612825: _BidirectionalIterator __ii = __i; 612825: --__i; 612825: if (__comp(__ii, __i)) 612825: { 612825: _BidirectionalIterator __j = __last; 612825: while (!__comp(--__j, __i)) 612825: {} 612825: std::iter_swap(__i, __j); 612825: std::__reverse(__ii, __last, 612825: std::__iterator_category(__first)); 612825: return true; 612825: } 612825: if (__i == __first) 612825: { 612825: std::__reverse(__first, __last, 612825: std::__iterator_category(__first)); 612825: return false; 612825: } 612825: } 612825: } 612825: # 3035 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: prev_permutation(_BidirectionalIterator __first, 612825: _BidirectionalIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__prev_permutation(__first, __last, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 3068 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: prev_permutation(_BidirectionalIterator __first, 612825: _BidirectionalIterator __last, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__prev_permutation(__first, __last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: 612825: 612825: 612825: template 612825: 612825: _OutputIterator 612825: __replace_copy_if(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result, 612825: _Predicate __pred, const _Tp& __new_value) 612825: { 612825: for (; __first != __last; ++__first, (void)++__result) 612825: if (__pred(__first)) 612825: *__result = __new_value; 612825: else 612825: *__result = *__first; 612825: return __result; 612825: } 612825: # 3120 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: replace_copy(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result, 612825: const _Tp& __old_value, const _Tp& __new_value) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__replace_copy_if(__first, __last, __result, 612825: __gnu_cxx::__ops::__iter_equals_val(__old_value), 612825: __new_value); 612825: } 612825: # 3155 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: replace_copy_if(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result, 612825: _Predicate __pred, const _Tp& __new_value) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__replace_copy_if(__first, __last, __result, 612825: __gnu_cxx::__ops::__pred_iter(__pred), 612825: __new_value); 612825: } 612825: # 3184 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: is_sorted(_ForwardIterator __first, _ForwardIterator __last) 612825: { return std::is_sorted_until(__first, __last) == __last; } 612825: # 3199 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: is_sorted(_ForwardIterator __first, _ForwardIterator __last, 612825: _Compare __comp) 612825: { return std::is_sorted_until(__first, __last, __comp) == __last; } 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 612825: _Compare __comp) 612825: { 612825: if (__first == __last) 612825: return __last; 612825: 612825: _ForwardIterator __next = __first; 612825: for (++__next; __next != __last; __first = __next, (void)++__next) 612825: if (__comp(__next, __first)) 612825: return __next; 612825: return __next; 612825: } 612825: # 3230 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__is_sorted_until(__first, __last, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 3255 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__is_sorted_until(__first, __last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: # 3281 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline pair 612825: minmax(const _Tp& __a, const _Tp& __b) 612825: { 612825: 612825: 612825: 612825: return __b < __a ? pair(__b, __a) 612825: : pair(__a, __b); 612825: } 612825: # 3302 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline pair 612825: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) 612825: { 612825: return __comp(__b, __a) ? pair(__b, __a) 612825: : pair(__a, __b); 612825: } 612825: 612825: template 612825: 612825: pair<_ForwardIterator, _ForwardIterator> 612825: __minmax_element(_ForwardIterator __first, _ForwardIterator __last, 612825: _Compare __comp) 612825: { 612825: _ForwardIterator __next = __first; 612825: if (__first == __last 612825: || ++__next == __last) 612825: return std::make_pair(__first, __first); 612825: 612825: _ForwardIterator __min{}, __max{}; 612825: if (__comp(__next, __first)) 612825: { 612825: __min = __next; 612825: __max = __first; 612825: } 612825: else 612825: { 612825: __min = __first; 612825: __max = __next; 612825: } 612825: 612825: __first = __next; 612825: ++__first; 612825: 612825: while (__first != __last) 612825: { 612825: __next = __first; 612825: if (++__next == __last) 612825: { 612825: if (__comp(__first, __min)) 612825: __min = __first; 612825: else if (!__comp(__first, __max)) 612825: __max = __first; 612825: break; 612825: } 612825: 612825: if (__comp(__next, __first)) 612825: { 612825: if (__comp(__next, __min)) 612825: __min = __next; 612825: if (!__comp(__first, __max)) 612825: __max = __first; 612825: } 612825: else 612825: { 612825: if (__comp(__first, __min)) 612825: __min = __first; 612825: if (!__comp(__next, __max)) 612825: __max = __next; 612825: } 612825: 612825: __first = __next; 612825: ++__first; 612825: } 612825: 612825: return std::make_pair(__min, __max); 612825: } 612825: # 3382 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline pair<_ForwardIterator, _ForwardIterator> 612825: minmax_element(_ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__minmax_element(__first, __last, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 3410 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline pair<_ForwardIterator, _ForwardIterator> 612825: minmax_element(_ForwardIterator __first, _ForwardIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__minmax_element(__first, __last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: inline pair<_Tp, _Tp> 612825: minmax(initializer_list<_Tp> __l) 612825: { 612825: ; 612825: pair __p = 612825: std::__minmax_element(__l.begin(), __l.end(), 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: return std::make_pair(*__p.first, *__p.second); 612825: } 612825: 612825: template 612825: 612825: inline pair<_Tp, _Tp> 612825: minmax(initializer_list<_Tp> __l, _Compare __comp) 612825: { 612825: ; 612825: pair __p = 612825: std::__minmax_element(__l.begin(), __l.end(), 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: return std::make_pair(*__p.first, *__p.second); 612825: } 612825: # 3466 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline bool 612825: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 612825: _ForwardIterator2 __first2, _BinaryPredicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__is_permutation(__first1, __last1, __first2, 612825: __gnu_cxx::__ops::__iter_comp_iter(__pred)); 612825: } 612825: # 3671 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: pair<_IntType, _IntType> 612825: __gen_two_uniform_ints(_IntType __b0, _IntType __b1, 612825: _UniformRandomBitGenerator&& __g) 612825: { 612825: _IntType __x 612825: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g); 612825: return std::make_pair(__x / __b1, __x % __b1); 612825: } 612825: # 3693 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: void 612825: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _UniformRandomNumberGenerator&& __g) 612825: { 612825: 612825: 612825: 612825: ; 612825: 612825: if (__first == __last) 612825: return; 612825: 612825: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 612825: _DistanceType; 612825: 612825: typedef typename std::make_unsigned<_DistanceType>::type __ud_type; 612825: typedef typename std::uniform_int_distribution<__ud_type> __distr_type; 612825: typedef typename __distr_type::param_type __p_type; 612825: 612825: typedef typename remove_reference<_UniformRandomNumberGenerator>::type 612825: _Gen; 612825: typedef typename common_type::type 612825: __uc_type; 612825: 612825: const __uc_type __urngrange = __g.max() - __g.min(); 612825: const __uc_type __urange = __uc_type(__last - __first); 612825: 612825: if (__urngrange / __urange >= __urange) 612825: 612825: { 612825: _RandomAccessIterator __i = __first + 1; 612825: 612825: 612825: 612825: 612825: 612825: if ((__urange % 2) == 0) 612825: { 612825: __distr_type __d{0, 1}; 612825: std::iter_swap(__i++, __first + __d(__g)); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: while (__i != __last) 612825: { 612825: const __uc_type __swap_range = __uc_type(__i - __first) + 1; 612825: 612825: const pair<__uc_type, __uc_type> __pospos = 612825: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g); 612825: 612825: std::iter_swap(__i++, __first + __pospos.first); 612825: std::iter_swap(__i++, __first + __pospos.second); 612825: } 612825: 612825: return; 612825: } 612825: 612825: __distr_type __d; 612825: 612825: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 612825: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: # 3778 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _Function 612825: for_each(_InputIterator __first, _InputIterator __last, _Function __f) 612825: { 612825: 612825: 612825: ; 612825: for (; __first != __last; ++__first) 612825: __f(*__first); 612825: return __f; 612825: } 612825: # 3840 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _InputIterator 612825: find(_InputIterator __first, _InputIterator __last, 612825: const _Tp& __val) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: return std::__find_if(__first, __last, 612825: __gnu_cxx::__ops::__iter_equals_val(__val)); 612825: } 612825: # 3865 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _InputIterator 612825: find_if(_InputIterator __first, _InputIterator __last, 612825: _Predicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__find_if(__first, __last, 612825: __gnu_cxx::__ops::__pred_iter(__pred)); 612825: } 612825: # 3897 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _InputIterator 612825: find_first_of(_InputIterator __first1, _InputIterator __last1, 612825: _ForwardIterator __first2, _ForwardIterator __last2) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: for (; __first1 != __last1; ++__first1) 612825: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 612825: if (*__first1 == *__iter) 612825: return __first1; 612825: return __last1; 612825: } 612825: # 3938 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _InputIterator 612825: find_first_of(_InputIterator __first1, _InputIterator __last1, 612825: _ForwardIterator __first2, _ForwardIterator __last2, 612825: _BinaryPredicate __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: for (; __first1 != __last1; ++__first1) 612825: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) 612825: if (__comp(*__first1, *__iter)) 612825: return __first1; 612825: return __last1; 612825: } 612825: # 3971 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: adjacent_find(_ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__adjacent_find(__first, __last, 612825: __gnu_cxx::__ops::__iter_equal_to_iter()); 612825: } 612825: # 3997 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: adjacent_find(_ForwardIterator __first, _ForwardIterator __last, 612825: _BinaryPredicate __binary_pred) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__adjacent_find(__first, __last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); 612825: } 612825: # 4023 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline typename iterator_traits<_InputIterator>::difference_type 612825: count(_InputIterator __first, _InputIterator __last, const _Tp& __value) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__count_if(__first, __last, 612825: __gnu_cxx::__ops::__iter_equals_val(__value)); 612825: } 612825: # 4047 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline typename iterator_traits<_InputIterator>::difference_type 612825: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__count_if(__first, __last, 612825: __gnu_cxx::__ops::__pred_iter(__pred)); 612825: } 612825: # 4088 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator1 612825: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 612825: _ForwardIterator2 __first2, _ForwardIterator2 __last2) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__search(__first1, __last1, __first2, __last2, 612825: __gnu_cxx::__ops::__iter_equal_to_iter()); 612825: } 612825: # 4128 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator1 612825: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, 612825: _ForwardIterator2 __first2, _ForwardIterator2 __last2, 612825: _BinaryPredicate __predicate) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__search(__first1, __last1, __first2, __last2, 612825: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); 612825: } 612825: # 4164 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: search_n(_ForwardIterator __first, _ForwardIterator __last, 612825: _Integer __count, const _Tp& __val) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__search_n(__first, __last, __count, 612825: __gnu_cxx::__ops::__iter_equals_val(__val)); 612825: } 612825: # 4198 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: search_n(_ForwardIterator __first, _ForwardIterator __last, 612825: _Integer __count, const _Tp& __val, 612825: _BinaryPredicate __binary_pred) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__search_n(__first, __last, __count, 612825: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); 612825: } 612825: # 4248 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _OutputIterator 612825: transform(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result, _UnaryOperation __unary_op) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: for (; __first != __last; ++__first, (void)++__result) 612825: *__result = __unary_op(*__first); 612825: return __result; 612825: } 612825: # 4286 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _OutputIterator 612825: transform(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _OutputIterator __result, 612825: _BinaryOperation __binary_op) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) 612825: *__result = __binary_op(*__first1, *__first2); 612825: return __result; 612825: } 612825: # 4320 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: void 612825: replace(_ForwardIterator __first, _ForwardIterator __last, 612825: const _Tp& __old_value, const _Tp& __new_value) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: for (; __first != __last; ++__first) 612825: if (*__first == __old_value) 612825: *__first = __new_value; 612825: } 612825: # 4353 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: void 612825: replace_if(_ForwardIterator __first, _ForwardIterator __last, 612825: _Predicate __pred, const _Tp& __new_value) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: for (; __first != __last; ++__first) 612825: if (__pred(*__first)) 612825: *__first = __new_value; 612825: } 612825: # 4386 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: void 612825: generate(_ForwardIterator __first, _ForwardIterator __last, 612825: _Generator __gen) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: for (; __first != __last; ++__first) 612825: *__first = __gen(); 612825: } 612825: # 4420 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _OutputIterator 612825: generate_n(_OutputIterator __first, _Size __n, _Generator __gen) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: typedef __decltype(std::__size_to_integer(__n)) _IntSize; 612825: for (_IntSize __niter = std::__size_to_integer(__n); 612825: __niter > 0; --__niter, (void) ++__first) 612825: *__first = __gen(); 612825: return __first; 612825: } 612825: # 4458 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: unique_copy(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: if (__first == __last) 612825: return __result; 612825: return std::__unique_copy(__first, __last, __result, 612825: __gnu_cxx::__ops::__iter_equal_to_iter(), 612825: std::__iterator_category(__first), 612825: std::__iterator_category(__result)); 612825: } 612825: # 4499 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: unique_copy(_InputIterator __first, _InputIterator __last, 612825: _OutputIterator __result, 612825: _BinaryPredicate __binary_pred) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: if (__first == __last) 612825: return __result; 612825: return std::__unique_copy(__first, __last, __result, 612825: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), 612825: std::__iterator_category(__first), 612825: std::__iterator_category(__result)); 612825: } 612825: # 4538 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline void 612825: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) 612825: { 612825: 612825: 612825: 612825: ; 612825: 612825: if (__first != __last) 612825: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 612825: { 612825: 612825: _RandomAccessIterator __j = __first 612825: + std::rand() % ((__i - __first) + 1); 612825: if (__i != __j) 612825: std::iter_swap(__i, __j); 612825: } 612825: } 612825: # 4578 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: void 612825: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: 612825: _RandomNumberGenerator&& __rand) 612825: 612825: 612825: 612825: { 612825: 612825: 612825: 612825: ; 612825: 612825: if (__first == __last) 612825: return; 612825: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) 612825: { 612825: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); 612825: if (__i != __j) 612825: std::iter_swap(__i, __j); 612825: } 612825: } 612825: # 4619 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: partition(_ForwardIterator __first, _ForwardIterator __last, 612825: _Predicate __pred) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: 612825: return std::__partition(__first, __last, __pred, 612825: std::__iterator_category(__first)); 612825: } 612825: # 4653 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline void 612825: partial_sort(_RandomAccessIterator __first, 612825: _RandomAccessIterator __middle, 612825: _RandomAccessIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: std::__partial_sort(__first, __middle, __last, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 4692 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline void 612825: partial_sort(_RandomAccessIterator __first, 612825: _RandomAccessIterator __middle, 612825: _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: std::__partial_sort(__first, __middle, __last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: # 4729 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline void 612825: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 612825: _RandomAccessIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: if (__first == __last || __nth == __last) 612825: return; 612825: 612825: std::__introselect(__first, __nth, __last, 612825: std::__lg(__last - __first) * 2, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 4769 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline void 612825: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, 612825: _RandomAccessIterator __last, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: 612825: if (__first == __last || __nth == __last) 612825: return; 612825: 612825: std::__introselect(__first, __nth, __last, 612825: std::__lg(__last - __first) * 2, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: # 4807 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline void 612825: sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 4838 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline void 612825: sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: _OutputIterator 612825: __merge(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result, _Compare __comp) 612825: { 612825: while (__first1 != __last1 && __first2 != __last2) 612825: { 612825: if (__comp(__first2, __first1)) 612825: { 612825: *__result = *__first2; 612825: ++__first2; 612825: } 612825: else 612825: { 612825: *__result = *__first1; 612825: ++__first1; 612825: } 612825: ++__result; 612825: } 612825: return std::copy(__first2, __last2, 612825: std::copy(__first1, __last1, __result)); 612825: } 612825: # 4901 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: merge(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__merge(__first1, __last1, 612825: __first2, __last2, __result, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 4952 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: merge(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__merge(__first1, __last1, 612825: __first2, __last2, __result, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: inline void 612825: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: typedef typename iterator_traits<_RandomAccessIterator>::value_type 612825: _ValueType; 612825: typedef typename iterator_traits<_RandomAccessIterator>::difference_type 612825: _DistanceType; 612825: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; 612825: 612825: if (__first == __last) 612825: return; 612825: 612825: 612825: 612825: _TmpBuf __buf(__first, (__last - __first + 1) / 2); 612825: 612825: if (__buf.begin() == 0) 612825: std::__inplace_stable_sort(__first, __last, __comp); 612825: else 612825: std::__stable_sort_adaptive(__first, __last, __buf.begin(), 612825: _DistanceType(__buf.size()), __comp); 612825: } 612825: # 5022 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: inline void 612825: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: std::__stable_sort(__first, __last, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 5056 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: inline void 612825: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: std::__stable_sort(__first, __last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: _OutputIterator 612825: __set_union(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result, _Compare __comp) 612825: { 612825: while (__first1 != __last1 && __first2 != __last2) 612825: { 612825: if (__comp(__first1, __first2)) 612825: { 612825: *__result = *__first1; 612825: ++__first1; 612825: } 612825: else if (__comp(__first2, __first1)) 612825: { 612825: *__result = *__first2; 612825: ++__first2; 612825: } 612825: else 612825: { 612825: *__result = *__first1; 612825: ++__first1; 612825: ++__first2; 612825: } 612825: ++__result; 612825: } 612825: return std::copy(__first2, __last2, 612825: std::copy(__first1, __last1, __result)); 612825: } 612825: # 5126 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__set_union(__first1, __last1, 612825: __first2, __last2, __result, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 5177 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: set_union(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__set_union(__first1, __last1, 612825: __first2, __last2, __result, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: _OutputIterator 612825: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result, _Compare __comp) 612825: { 612825: while (__first1 != __last1 && __first2 != __last2) 612825: if (__comp(__first1, __first2)) 612825: ++__first1; 612825: else if (__comp(__first2, __first1)) 612825: ++__first2; 612825: else 612825: { 612825: *__result = *__first1; 612825: ++__first1; 612825: ++__first2; 612825: ++__result; 612825: } 612825: return __result; 612825: } 612825: # 5250 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__set_intersection(__first1, __last1, 612825: __first2, __last2, __result, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 5300 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__set_intersection(__first1, __last1, 612825: __first2, __last2, __result, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: _OutputIterator 612825: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result, _Compare __comp) 612825: { 612825: while (__first1 != __last1 && __first2 != __last2) 612825: if (__comp(__first1, __first2)) 612825: { 612825: *__result = *__first1; 612825: ++__first1; 612825: ++__result; 612825: } 612825: else if (__comp(__first2, __first1)) 612825: ++__first2; 612825: else 612825: { 612825: ++__first1; 612825: ++__first2; 612825: } 612825: return std::copy(__first1, __last1, __result); 612825: } 612825: # 5375 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__set_difference(__first1, __last1, 612825: __first2, __last2, __result, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 5427 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result, _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__set_difference(__first1, __last1, 612825: __first2, __last2, __result, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: _OutputIterator 612825: __set_symmetric_difference(_InputIterator1 __first1, 612825: _InputIterator1 __last1, 612825: _InputIterator2 __first2, 612825: _InputIterator2 __last2, 612825: _OutputIterator __result, 612825: _Compare __comp) 612825: { 612825: while (__first1 != __last1 && __first2 != __last2) 612825: if (__comp(__first1, __first2)) 612825: { 612825: *__result = *__first1; 612825: ++__first1; 612825: ++__result; 612825: } 612825: else if (__comp(__first2, __first1)) 612825: { 612825: *__result = *__first2; 612825: ++__first2; 612825: ++__result; 612825: } 612825: else 612825: { 612825: ++__first1; 612825: ++__first2; 612825: } 612825: return std::copy(__first2, __last2, 612825: std::copy(__first1, __last1, __result)); 612825: } 612825: # 5508 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__set_symmetric_difference(__first1, __last1, 612825: __first2, __last2, __result, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 5560 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _OutputIterator 612825: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, 612825: _InputIterator2 __first2, _InputIterator2 __last2, 612825: _OutputIterator __result, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: ; 612825: ; 612825: 612825: return std::__set_symmetric_difference(__first1, __last1, 612825: __first2, __last2, __result, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __min_element(_ForwardIterator __first, _ForwardIterator __last, 612825: _Compare __comp) 612825: { 612825: if (__first == __last) 612825: return __first; 612825: _ForwardIterator __result = __first; 612825: while (++__first != __last) 612825: if (__comp(__first, __result)) 612825: __result = __first; 612825: return __result; 612825: } 612825: # 5614 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: _ForwardIterator 612825: inline min_element(_ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__min_element(__first, __last, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 5639 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: min_element(_ForwardIterator __first, _ForwardIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__min_element(__first, __last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: _ForwardIterator 612825: __max_element(_ForwardIterator __first, _ForwardIterator __last, 612825: _Compare __comp) 612825: { 612825: if (__first == __last) return __first; 612825: _ForwardIterator __result = __first; 612825: while (++__first != __last) 612825: if (__comp(__result, __first)) 612825: __result = __first; 612825: return __result; 612825: } 612825: # 5678 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: max_element(_ForwardIterator __first, _ForwardIterator __last) 612825: { 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__max_element(__first, __last, 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: # 5703 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: template 612825: 612825: inline _ForwardIterator 612825: max_element(_ForwardIterator __first, _ForwardIterator __last, 612825: _Compare __comp) 612825: { 612825: 612825: 612825: 612825: 612825: 612825: ; 612825: ; 612825: 612825: return std::__max_element(__first, __last, 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: 612825: 612825: template 612825: 612825: inline _Tp 612825: min(initializer_list<_Tp> __l) 612825: { 612825: ; 612825: return *std::__min_element(__l.begin(), __l.end(), 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: 612825: template 612825: 612825: inline _Tp 612825: min(initializer_list<_Tp> __l, _Compare __comp) 612825: { 612825: ; 612825: return *std::__min_element(__l.begin(), __l.end(), 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: 612825: template 612825: 612825: inline _Tp 612825: max(initializer_list<_Tp> __l) 612825: { 612825: ; 612825: return *std::__max_element(__l.begin(), __l.end(), 612825: __gnu_cxx::__ops::__iter_less_iter()); 612825: } 612825: 612825: template 612825: 612825: inline _Tp 612825: max(initializer_list<_Tp> __l, _Compare __comp) 612825: { 612825: ; 612825: return *std::__max_element(__l.begin(), __l.end(), 612825: __gnu_cxx::__ops::__iter_comp_iter(__comp)); 612825: } 612825: # 5892 "/usr/include/c++/12/bits/stl_algo.h" 3 612825: 612825: 612825: } 612825: # 62 "/usr/include/c++/12/algorithm" 2 3 612825: # 41 "third_party/butteraugli/butteraugli/butteraugli.cc" 2 612825: # 1 "/usr/include/c++/12/array" 1 3 612825: # 32 "/usr/include/c++/12/array" 3 612825: 612825: # 33 "/usr/include/c++/12/array" 3 612825: 612825: 612825: 612825: 612825: 612825: # 1 "/usr/include/c++/12/compare" 1 3 612825: # 33 "/usr/include/c++/12/compare" 3 612825: 612825: # 34 "/usr/include/c++/12/compare" 3 612825: # 39 "/usr/include/c++/12/array" 2 3 612825: # 48 "/usr/include/c++/12/array" 3 612825: namespace std __attribute__ ((__visibility__ ("default"))) 612825: { 612825: 612825: 612825: template 612825: struct __array_traits 612825: { 612825: typedef _Tp _Type[_Nm]; 612825: typedef __is_swappable<_Tp> _Is_swappable; 612825: typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable; 612825: 612825: static constexpr _Tp& 612825: _S_ref(const _Type& __t, std::size_t __n) noexcept 612825: { return const_cast<_Tp&>(__t[__n]); } 612825: 612825: static constexpr _Tp* 612825: _S_ptr(const _Type& __t) noexcept 612825: { return const_cast<_Tp*>(__t); } 612825: }; 612825: 612825: template 612825: struct __array_traits<_Tp, 0> 612825: { 612825: struct _Type { }; 612825: typedef true_type _Is_swappable; 612825: typedef true_type _Is_nothrow_swappable; 612825: 612825: static constexpr _Tp& 612825: _S_ref(const _Type&, std::size_t) noexcept 612825: { return *static_cast<_Tp*>(nullptr); } 612825: 612825: static constexpr _Tp* 612825: _S_ptr(const _Type&) noexcept 612825: { return nullptr; } 612825: }; 612825: # 98 "/usr/include/c++/12/array" 3 612825: template 612825: struct array 612825: { 612825: typedef _Tp value_type; 612825: typedef value_type* pointer; 612825: typedef const value_type* const_pointer; 612825: typedef value_type& reference; 612825: typedef const value_type& const_reference; 612825: typedef value_type* iterator; 612825: typedef const value_type* const_iterator; 612825: typedef std::size_t size_type; 612825: typedef std::ptrdiff_t difference_type; 612825: typedef std::reverse_iterator reverse_iterator; 612825: typedef std::reverse_iterator const_reverse_iterator; 612825: 612825: 612825: typedef __array_traits<_Tp, _Nm> _AT_Type; 612825: typename _AT_Type::_Type _M_elems; 612825: 612825: 612825: 612825: 612825: void 612825: fill(const value_type& __u) 612825: { std::fill_n(begin(), size(), __u); } 612825: 612825: void 612825: swap(array& __other) 612825: noexcept(_AT_Type::_Is_nothrow_swappable::value) 612825: { std::swap_ranges(begin(), end(), __other.begin()); } 612825: 612825: 612825: [[__gnu__::__const__, __nodiscard__]] 612825: iterator 612825: begin() noexcept 612825: { return iterator(data()); } 612825: 612825: [[__nodiscard__]] 612825: const_iterator 612825: begin() const noexcept 612825: { return const_iterator(data()); } 612825: 612825: [[__gnu__::__const__, __nodiscard__]] 612825: iterator 612825: end() noexcept 612825: { return iterator(data() + _Nm); } 612825: 612825: [[__nodiscard__]] 612825: const_iterator 612825: end() const noexcept 612825: { return const_iterator(data() + _Nm); } 612825: 612825: [[__gnu__::__const__, __nodiscard__]] 612825: reverse_iterator 612825: rbegin() noexcept 612825: { return reverse_iterator(end()); } 612825: 612825: [[__nodiscard__]] 612825: const_reverse_iterator 612825: rbegin() const noexcept 612825: { return const_reverse_iterator(end()); } 612825: 612825: [[__gnu__::__const__, __nodiscard__]] 612825: reverse_iterator 612825: rend() noexcept 612825: { return reverse_iterator(begin()); } 612825: 612825: [[__nodiscard__]] 612825: const_reverse_iterator 612825: rend() const noexcept 612825: { return const_reverse_iterator(begin()); } 612825: 612825: [[__nodiscard__]] 612825: const_iterator 612825: cbegin() const noexcept 612825: { return const_iterator(data()); } 612825: 612825: [[__nodiscard__]] 612825: const_iterator 612825: cend() const noexcept 612825: { return const_iterator(data() + _Nm); } 612825: 612825: [[__nodiscard__]] 612825: const_reverse_iterator 612825: crbegin() const noexcept 612825: { return const_reverse_iterator(end()); } 612825: 612825: [[__nodiscard__]] 612825: const_reverse_iterator 612825: crend() const noexcept 612825: { return const_reverse_iterator(begin()); } 612825: 612825: 612825: [[__gnu__::__const__, __nodiscard__]] 612825: constexpr size_type 612825: size() const noexcept { return _Nm; } 612825: 612825: [[__gnu__::__const__, __nodiscard__]] 612825: constexpr size_type 612825: max_size() const noexcept { return _Nm; } 612825: 612825: [[__gnu__::__const__, __nodiscard__]] 612825: constexpr bool 612825: empty() const noexcept { return size() == 0; } 612825: 612825: 612825: [[__nodiscard__]] 612825: reference 612825: operator[](size_type __n) noexcept 612825: { 612825: ; 612825: return _AT_Type::_S_ref(_M_elems, __n); 612825: } 612825: 612825: [[__nodiscard__]] 612825: constexpr const_reference 612825: operator[](size_type __n) const noexcept 612825: { 612825: 612825: 612825: 612825: return _AT_Type::_S_ref(_M_elems, __n); 612825: } 612825: 612825: reference 612825: at(size_type __n) 612825: { 612825: if (__n >= _Nm) 612825: std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") 612825: , 612825: __n, _Nm); 612825: return _AT_Type::_S_ref(_M_elems, __n); 612825: } 612825: 612825: constexpr const_reference 612825: at(size_type __n) const 612825: { 612825: 612825: 612825: return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) 612825: : (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") 612825: , 612825: __n, _Nm), 612825: _AT_Type::_S_ref(_M_elems, 0)); 612825: } 612825: 612825: [[__nodiscard__]] 612825: reference 612825: front() noexcept 612825: { 612825: ; 612825: return *begin(); 612825: } 612825: 612825: [[__nodiscard__]] 612825: constexpr const_reference 612825: front() const noexcept 612825: { 612825: 612825: 612825: 612825: return _AT_Type::_S_ref(_M_elems, 0); 612825: } 612825: 612825: [[__nodiscard__]] 612825: reference 612825: back() noexcept 612825: { 612825: ; 612825: return _Nm ? *(end() - 1) : *end(); 612825: } 612825: 612825: [[__nodiscard__]] 612825: constexpr const_reference 612825: back() const noexcept 612825: { 612825: 612825: 612825: 612825: return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) 612825: : _AT_Type::_S_ref(_M_elems, 0); 612825: } 612825: 612825: [[__gnu__::__const__, __nodiscard__]] 612825: pointer 612825: data() noexcept 612825: { return _AT_Type::_S_ptr(_M_elems); } 612825: 612825: [[__nodiscard__]] 612825: const_pointer 612825: data() const noexcept 612825: { return _AT_Type::_S_ptr(_M_elems); } 612825: }; 612825: # 300 "/usr/include/c++/12/array" 3 612825: template 612825: [[__nodiscard__]] 612825: 612825: inline bool 612825: operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 612825: { return std::equal(__one.begin(), __one.end(), __two.begin()); } 612825: # 329 "/usr/include/c++/12/array" 3 612825: template 612825: [[__nodiscard__]] 612825: 612825: inline bool 612825: operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 612825: { return !(__one == __two); } 612825: 612825: template 612825: [[__nodiscard__]] 612825: 612825: inline bool 612825: operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) 612825: { 612825: return std::lexicographical_compare(__a.begin(), __a.end(), 612825: __b.begin(), __b.end()); 612825: } 612825: 612825: template 612825: [[__nodiscard__]] 612825: 612825: inline bool 612825: operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 612825: { return __two < __one; } 612825: 612825: template 612825: [[__nodiscard__]] 612825: 612825: inline bool 612825: operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 612825: { return !(__one > __two); } 612825: 612825: template 612825: [[__nodiscard__]] 612825: 612825: inline bool 612825: operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) 612825: { return !(__one < __two); } 612825: 612825: 612825: 612825: template 612825: 612825: inline 612825: 612825: 612825: 612825: 612825: 612825: 612825: void 612825: 612825: swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) 612825: noexcept(noexcept(__one.swap(__two))) 612825: { __one.swap(__two); } 612825: # 391 "/usr/include/c++/12/array" 3 612825: template 612825: [[__nodiscard__]] 612825: constexpr _Tp& 612825: get(array<_Tp, _Nm>& __arr) noexcept 612825: { 612825: static_assert(_Int < _Nm, "array index is within bounds"); 612825: return __array_traits<_Tp, _Nm>::_S_ref(__arr._M_elems, _Int); 612825: } 612825: 612825: template 612825: [[__nodiscard__]] 612825: constexpr _Tp&& 612825: get(array<_Tp, _Nm>&& __arr) noexcept 612825: { 612825: static_assert(_Int < _Nm, "array index is within bounds"); 612825: return std::move(std::get<_Int>(__arr)); 612825: } 612825: 612825: template 612825: [[__nodiscard__]] 612825: constexpr const _Tp& 612825: get(const array<_Tp, _Nm>& __arr) noexcept 612825: { 612825: static_assert(_Int < _Nm, "array index is within bounds"); 612825: return __array_traits<_Tp, _Nm>::_S_ref(__arr._M_elems, _Int); 612825: } 612825: 612825: template 612825: [[__nodiscard__]] 612825: constexpr const _Tp&& 612825: get(const array<_Tp, _Nm>&& __arr) noexcept 612825: { 612825: static_assert(_Int < _Nm, "array index is within bounds"); 612825: return std::move(std::get<_Int>(__arr)); 612825: } 612825: # 470 "/usr/include/c++/12/array" 3 612825: template 612825: struct tuple_size> 612825: : public integral_constant { }; 612825: 612825: 612825: template 612825: struct tuple_element<_Ind, array<_Tp, _Nm>> 612825: { 612825: static_assert(_Ind < _Nm, "array index is in range"); 612825: using type = _Tp; 612825: }; 612825: # 490 "/usr/include/c++/12/array" 3 612825: template 612825: struct __is_tuple_like_impl> : true_type 612825: { }; 612825: 612825: 612825: } 612825: # 42 "third_party/butteraugli/butteraugli/butteraugli.cc" 2 612825: 612825: 612825: 612825: 612825: 612825: 612825: 612825: # 48 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: namespace butteraugli { 612825: 612825: void *CacheAligned::Allocate(const size_t bytes) { 612825: char *const allocated = static_cast(malloc(bytes + kCacheLineSize)); 612825: if (allocated == nullptr) { 612825: return nullptr; 612825: } 612825: const uintptr_t misalignment = 612825: reinterpret_cast(allocated) & (kCacheLineSize - 1); 612825: 612825: 612825: 612825: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: misalignment % kPointerSize == 0 612825: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "misalignment % kPointerSize == 0" 612825: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 59, __extension__ __PRETTY_FUNCTION__)) 612825: # 59 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: char *const aligned = allocated + kCacheLineSize - misalignment; 612825: memcpy(aligned - kPointerSize, &allocated, kPointerSize); 612825: return aligned; 612825: } 612825: 612825: void CacheAligned::Free(void *aligned_pointer) { 612825: if (aligned_pointer == nullptr) { 612825: return; 612825: } 612825: char *const aligned = static_cast(aligned_pointer); 612825: 612825: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: reinterpret_cast(aligned) % kCacheLineSize == 0 612825: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "reinterpret_cast(aligned) % kCacheLineSize == 0" 612825: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 70, __extension__ __PRETTY_FUNCTION__)) 612825: # 70 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: char *allocated; 612825: memcpy(&allocated, aligned - kPointerSize, kPointerSize); 612825: 612825: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: allocated <= aligned - kPointerSize 612825: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "allocated <= aligned - kPointerSize" 612825: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 73, __extension__ __PRETTY_FUNCTION__)) 612825: # 73 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: 612825: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: allocated >= aligned - kCacheLineSize 612825: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "allocated >= aligned - kCacheLineSize" 612825: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 74, __extension__ __PRETTY_FUNCTION__)) 612825: # 74 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: free(allocated); 612825: } 612825: 612825: static inline bool IsNan(const float x) { 612825: uint32_t bits; 612825: memcpy(&bits, &x, sizeof(bits)); 612825: const uint32_t bitmask_exp = 0x7F800000; 612825: return (bits & bitmask_exp) == bitmask_exp && (bits & 0x7FFFFF); 612825: } 612825: 612825: static inline bool IsNan(const double x) { 612825: uint64_t bits; 612825: memcpy(&bits, &x, sizeof(bits)); 612825: return (0x7ff0000000000001ULL <= bits && bits <= 0x7fffffffffffffffULL) || 612825: (0xfff0000000000001ULL <= bits && bits <= 0xffffffffffffffffULL); 612825: } 612825: 612825: static inline void CheckImage(const ImageF &image, const char *name) { 612825: for (size_t y = 0; y < image.ysize(); ++y) { 612825: ConstRestrict row = image.Row(y); 612825: for (size_t x = 0; x < image.xsize(); ++x) { 612825: if (IsNan(row[x])) { 612825: printf("Image %s @ %lu,%lu (of %lu,%lu)\n", name, x, y, image.xsize(), 612825: image.ysize()); 612825: exit(1); 612825: } 612825: } 612825: } 612825: } 612825: # 125 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: static const double kInternalGoodQualityThreshold = 14.921561160295326; 612825: static const double kGlobalScale = 1.0 / kInternalGoodQualityThreshold; 612825: 612825: inline double DotProduct(const double u[3], const double v[3]) { 612825: return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]; 612825: } 612825: 612825: inline double DotProduct(const float u[3], const double v[3]) { 612825: return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]; 612825: } 612825: 612825: 612825: static void Convolution(size_t xsize, size_t ysize, 612825: size_t xstep, 612825: size_t len, size_t offset, 612825: const float* __restrict__ multipliers, 612825: const float* __restrict__ inp, 612825: double border_ratio, 612825: float* __restrict__ result) { 612825: ; 612825: double weight_no_border = 0; 612825: for (int j = 0; j <= 2 * offset; ++j) { 612825: weight_no_border += multipliers[j]; 612825: } 612825: for (size_t x = 0, ox = 0; x < xsize; x += xstep, ox++) { 612825: int minx = x < offset ? 0 : x - offset; 612825: int maxx = std::min(xsize, x + len - offset) - 1; 612825: double weight = 0.0; 612825: for (int j = minx; j <= maxx; ++j) { 612825: weight += multipliers[j - x + offset]; 612825: } 612825: 612825: weight = (1.0 - border_ratio) * weight + border_ratio * weight_no_border; 612825: double scale = 1.0 / weight; 612825: for (size_t y = 0; y < ysize; ++y) { 612825: double sum = 0.0; 612825: for (int j = minx; j <= maxx; ++j) { 612825: sum += inp[y * xsize + j] * multipliers[j - x + offset]; 612825: } 612825: result[ox * ysize + y] = sum * scale; 612825: } 612825: } 612825: } 612825: 612825: void Blur(size_t xsize, size_t ysize, float* channel, double sigma, 612825: double border_ratio) { 612825: ; 612825: double m = 2.25; 612825: const double scaler = -1.0 / (2 * sigma * sigma); 612825: 612825: const int diff = std::max(1, m * fabs(sigma)); 612825: const int expn_size = 2 * diff + 1; 612825: std::vector expn(expn_size); 612825: for (int i = -diff; i <= diff; ++i) { 612825: expn[i + diff] = exp(scaler * i * i); 612825: } 612825: const int xstep = std::max(1, int(sigma / 3)); 612825: const int ystep = xstep; 612825: int dxsize = (xsize + xstep - 1) / xstep; 612825: int dysize = (ysize + ystep - 1) / ystep; 612825: std::vector tmp(dxsize * ysize); 612825: std::vector downsampled_output(dxsize * dysize); 612825: Convolution(xsize, ysize, xstep, expn_size, diff, expn.data(), channel, 612825: border_ratio, 612825: tmp.data()); 612825: Convolution(ysize, dxsize, ystep, expn_size, diff, expn.data(), tmp.data(), 612825: border_ratio, 612825: downsampled_output.data()); 612825: for (int y = 0; y < ysize; y++) { 612825: for (int x = 0; x < xsize; x++) { 612825: 612825: channel[y * xsize + x] = 612825: downsampled_output[(y / ystep) * dxsize + (x / xstep)]; 612825: } 612825: } 612825: } 612825: 612825: 612825: constexpr size_t kBlockEdge = 8; 612825: constexpr size_t kBlockSize = kBlockEdge * kBlockEdge; 612825: constexpr size_t kBlockEdgeHalf = kBlockEdge / 2; 612825: constexpr size_t kBlockHalf = kBlockEdge * kBlockEdgeHalf; 612825: 612825: 612825: static const double *GetContrastSensitivityMatrix() { 612825: static double csf8x8[kBlockHalf + kBlockEdgeHalf + 1] = { 612825: 5.28270670524, 612825: 0.0, 612825: 0.0, 612825: 0.0, 612825: 0.3831134973, 612825: 0.676303603859, 612825: 3.58927792424, 612825: 18.6104367002, 612825: 18.6104367002, 612825: 3.09093131948, 612825: 1.0, 612825: 0.498250875965, 612825: 0.36198671102, 612825: 0.308982169883, 612825: 0.1312701920435, 612825: 2.37370549629, 612825: 3.58927792424, 612825: 1.0, 612825: 2.37370549629, 612825: 0.991205724152, 612825: 1.05178802919, 612825: 0.627264168628, 612825: 0.4, 612825: 0.1312701920435, 612825: 0.676303603859, 612825: 0.498250875965, 612825: 0.991205724152, 612825: 0.5, 612825: 0.3831134973, 612825: 0.349686450518, 612825: 0.627264168628, 612825: 0.308982169883, 612825: 0.3831134973, 612825: 0.36198671102, 612825: 1.05178802919, 612825: 0.3831134973, 612825: 0.12, 612825: }; 612825: return &csf8x8[0]; 612825: } 612825: 612825: std::array MakeHighFreqColorDiffDx() { 612825: std::array lut; 612825: static const double off = 11.38708334481672; 612825: static const double inc = 14.550189611520716; 612825: lut[0] = 0.0; 612825: lut[1] = off; 612825: for (int i = 2; i < 21; ++i) { 612825: lut[i] = lut[i - 1] + inc; 612825: } 612825: return lut; 612825: } 612825: 612825: const double *GetHighFreqColorDiffDx() { 612825: static const std::array kLut = MakeHighFreqColorDiffDx(); 612825: return kLut.data(); 612825: } 612825: 612825: std::array MakeHighFreqColorDiffDy() { 612825: std::array lut; 612825: static const double off = 1.4103373714040413; 612825: static const double inc = 0.7084088867024; 612825: lut[0] = 0.0; 612825: lut[1] = off; 612825: for (int i = 2; i < 21; ++i) { 612825: lut[i] = lut[i - 1] + inc; 612825: } 612825: return lut; 612825: } 612825: 612825: const double *GetHighFreqColorDiffDy() { 612825: static const std::array kLut = MakeHighFreqColorDiffDy(); 612825: return kLut.data(); 612825: } 612825: 612825: std::array MakeLowFreqColorDiffDy() { 612825: std::array lut; 612825: static const double inc = 5.2511644570349185; 612825: lut[0] = 0.0; 612825: for (int i = 1; i < 21; ++i) { 612825: lut[i] = lut[i - 1] + inc; 612825: } 612825: return lut; 612825: } 612825: 612825: const double *GetLowFreqColorDiffDy() { 612825: static const std::array kLut = MakeLowFreqColorDiffDy(); 612825: return kLut.data(); 612825: } 612825: 612825: inline double Interpolate(const double *array, int size, double sx) { 612825: double ix = fabs(sx); 612825: 612825: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ix < 10000 612825: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "ix < 10000" 612825: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 303, __extension__ __PRETTY_FUNCTION__)) 612825: # 303 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: int baseix = static_cast(ix); 612825: double res; 612825: if (baseix >= size - 1) { 612825: res = array[size - 1]; 612825: } else { 612825: double mix = ix - baseix; 612825: int nextix = baseix + 1; 612825: res = array[baseix] + mix * (array[nextix] - array[baseix]); 612825: } 612825: if (sx < 0) res = -res; 612825: return res; 612825: } 612825: 612825: inline double InterpolateClampNegative(const double *array, 612825: int size, double sx) { 612825: if (sx < 0) { 612825: sx = 0; 612825: } 612825: double ix = fabs(sx); 612825: int baseix = static_cast(ix); 612825: double res; 612825: if (baseix >= size - 1) { 612825: res = array[size - 1]; 612825: } else { 612825: double mix = ix - baseix; 612825: int nextix = baseix + 1; 612825: res = array[baseix] + mix * (array[nextix] - array[baseix]); 612825: } 612825: return res; 612825: } 612825: 612825: void RgbToXyb(double r, double g, double b, 612825: double *valx, double *valy, double *valz) { 612825: static const double a0 = 1.01611726948; 612825: static const double a1 = 0.982482243696; 612825: static const double a2 = 1.43571362627; 612825: static const double a3 = 0.896039849412; 612825: *valx = a0 * r - a1 * g; 612825: *valy = a2 * r + a3 * g; 612825: *valz = b; 612825: } 612825: 612825: static inline void XybToVals(double x, double y, double z, 612825: double *valx, double *valy, double *valz) { 612825: static const double xmul = 0.758304045695; 612825: static const double ymul = 2.28148649801; 612825: static const double zmul = 1.87816926918; 612825: *valx = Interpolate(GetHighFreqColorDiffDx(), 21, x * xmul); 612825: *valy = Interpolate(GetHighFreqColorDiffDy(), 21, y * ymul); 612825: *valz = zmul * z; 612825: } 612825: 612825: 612825: static void XybLowFreqToVals(double x, double y, double z, 612825: double *valx, double *valy, double *valz) { 612825: static const double xmul = 6.64482198135; 612825: static const double ymul = 0.837846224276; 612825: static const double zmul = 7.34905756986; 612825: static const double y_to_z_mul = 0.0812519812628; 612825: z += y_to_z_mul * y; 612825: *valz = z * zmul; 612825: *valx = x * xmul; 612825: *valy = Interpolate(GetLowFreqColorDiffDy(), 21, y * ymul); 612825: } 612825: 612825: double RemoveRangeAroundZero(double v, double range) { 612825: if (v >= -range && v < range) { 612825: return 0; 612825: } 612825: if (v < 0) { 612825: return v + range; 612825: } else { 612825: return v - range; 612825: } 612825: } 612825: 612825: void XybDiffLowFreqSquaredAccumulate(double r0, double g0, double b0, 612825: double r1, double g1, double b1, 612825: double factor, double res[3]) { 612825: double valx0, valy0, valz0; 612825: double valx1, valy1, valz1; 612825: XybLowFreqToVals(r0, g0, b0, &valx0, &valy0, &valz0); 612825: if (r1 == 0.0 && g1 == 0.0 && b1 == 0.0) { 612825: ; 612825: res[0] += factor * valx0 * valx0; 612825: res[1] += factor * valy0 * valy0; 612825: res[2] += factor * valz0 * valz0; 612825: return; 612825: } 612825: XybLowFreqToVals(r1, g1, b1, &valx1, &valy1, &valz1); 612825: 612825: 612825: double valx = valx0 - valx1; 612825: double valy = valy0 - valy1; 612825: double valz = valz0 - valz1; 612825: res[0] += factor * valx * valx; 612825: res[1] += factor * valy * valy; 612825: res[2] += factor * valz * valz; 612825: } 612825: 612825: struct Complex { 612825: public: 612825: double real; 612825: double imag; 612825: }; 612825: 612825: inline double abssq(const Complex& c) { 612825: return c.real * c.real + c.imag * c.imag; 612825: } 612825: 612825: static void TransposeBlock(Complex data[kBlockSize]) { 612825: for (int i = 0; i < kBlockEdge; i++) { 612825: for (int j = 0; j < i; j++) { 612825: std::swap(data[kBlockEdge * i + j], data[kBlockEdge * j + i]); 612825: } 612825: } 612825: } 612825: 612825: 612825: inline void FFT4(Complex* a) { 612825: double t1, t2, t3, t4, t5, t6, t7, t8; 612825: t5 = a[2].real; 612825: t1 = a[0].real - t5; 612825: t7 = a[3].real; 612825: t5 += a[0].real; 612825: t3 = a[1].real - t7; 612825: t7 += a[1].real; 612825: t8 = t5 + t7; 612825: a[0].real = t8; 612825: t5 -= t7; 612825: a[1].real = t5; 612825: t6 = a[2].imag; 612825: t2 = a[0].imag - t6; 612825: t6 += a[0].imag; 612825: t5 = a[3].imag; 612825: a[2].imag = t2 + t3; 612825: t2 -= t3; 612825: a[3].imag = t2; 612825: t4 = a[1].imag - t5; 612825: a[3].real = t1 + t4; 612825: t1 -= t4; 612825: a[2].real = t1; 612825: t5 += a[1].imag; 612825: a[0].imag = t6 + t5; 612825: t6 -= t5; 612825: a[1].imag = t6; 612825: } 612825: 612825: static const double kSqrtHalf = 0.70710678118654752440084436210484903; 612825: 612825: 612825: void FFT8(Complex* a) { 612825: double t1, t2, t3, t4, t5, t6, t7, t8; 612825: 612825: t7 = a[4].imag; 612825: t4 = a[0].imag - t7; 612825: t7 += a[0].imag; 612825: a[0].imag = t7; 612825: 612825: t8 = a[6].real; 612825: t5 = a[2].real - t8; 612825: t8 += a[2].real; 612825: a[2].real = t8; 612825: 612825: t7 = a[6].imag; 612825: a[6].imag = t4 - t5; 612825: t4 += t5; 612825: a[4].imag = t4; 612825: 612825: t6 = a[2].imag - t7; 612825: t7 += a[2].imag; 612825: a[2].imag = t7; 612825: 612825: t8 = a[4].real; 612825: t3 = a[0].real - t8; 612825: t8 += a[0].real; 612825: a[0].real = t8; 612825: 612825: a[4].real = t3 - t6; 612825: t3 += t6; 612825: a[6].real = t3; 612825: 612825: t7 = a[5].real; 612825: t3 = a[1].real - t7; 612825: t7 += a[1].real; 612825: a[1].real = t7; 612825: 612825: t8 = a[7].imag; 612825: t6 = a[3].imag - t8; 612825: t8 += a[3].imag; 612825: a[3].imag = t8; 612825: t1 = t3 - t6; 612825: t3 += t6; 612825: 612825: t7 = a[5].imag; 612825: t4 = a[1].imag - t7; 612825: t7 += a[1].imag; 612825: a[1].imag = t7; 612825: 612825: t8 = a[7].real; 612825: t5 = a[3].real - t8; 612825: t8 += a[3].real; 612825: a[3].real = t8; 612825: 612825: t2 = t4 - t5; 612825: t4 += t5; 612825: 612825: t6 = t1 - t4; 612825: t8 = kSqrtHalf; 612825: t6 *= t8; 612825: a[5].real = a[4].real - t6; 612825: t1 += t4; 612825: t1 *= t8; 612825: a[5].imag = a[4].imag - t1; 612825: t6 += a[4].real; 612825: a[4].real = t6; 612825: t1 += a[4].imag; 612825: a[4].imag = t1; 612825: 612825: t5 = t2 - t3; 612825: t5 *= t8; 612825: a[7].imag = a[6].imag - t5; 612825: t2 += t3; 612825: t2 *= t8; 612825: a[7].real = a[6].real - t2; 612825: t2 += a[6].real; 612825: a[6].real = t2; 612825: t5 += a[6].imag; 612825: a[6].imag = t5; 612825: 612825: FFT4(a); 612825: 612825: 612825: 612825: Complex tmp = a[2]; 612825: a[2] = a[3]; 612825: a[3] = a[5]; 612825: a[5] = a[7]; 612825: a[7] = a[4]; 612825: a[4] = a[1]; 612825: a[1] = a[6]; 612825: a[6] = tmp; 612825: } 612825: 612825: 612825: 612825: 612825: void RealFFT8(const double* in, Complex* out) { 612825: double t1, t2, t3, t5, t6, t7, t8; 612825: t8 = in[6]; 612825: t5 = in[2] - t8; 612825: t8 += in[2]; 612825: out[2].real = t8; 612825: out[6].imag = -t5; 612825: out[4].imag = t5; 612825: t8 = in[4]; 612825: t3 = in[0] - t8; 612825: t8 += in[0]; 612825: out[0].real = t8; 612825: out[4].real = t3; 612825: out[6].real = t3; 612825: t7 = in[5]; 612825: t3 = in[1] - t7; 612825: t7 += in[1]; 612825: out[1].real = t7; 612825: t8 = in[7]; 612825: t5 = in[3] - t8; 612825: t8 += in[3]; 612825: out[3].real = t8; 612825: t2 = -t5; 612825: t6 = t3 - t5; 612825: t8 = kSqrtHalf; 612825: t6 *= t8; 612825: out[5].real = out[4].real - t6; 612825: t1 = t3 + t5; 612825: t1 *= t8; 612825: out[5].imag = out[4].imag - t1; 612825: t6 += out[4].real; 612825: out[4].real = t6; 612825: t1 += out[4].imag; 612825: out[4].imag = t1; 612825: t5 = t2 - t3; 612825: t5 *= t8; 612825: out[7].imag = out[6].imag - t5; 612825: t2 += t3; 612825: t2 *= t8; 612825: out[7].real = out[6].real - t2; 612825: t2 += out[6].real; 612825: out[6].real = t2; 612825: t5 += out[6].imag; 612825: out[6].imag = t5; 612825: t5 = out[2].real; 612825: t1 = out[0].real - t5; 612825: t7 = out[3].real; 612825: t5 += out[0].real; 612825: t3 = out[1].real - t7; 612825: t7 += out[1].real; 612825: t8 = t5 + t7; 612825: out[0].real = t8; 612825: t5 -= t7; 612825: out[1].real = t5; 612825: out[2].imag = t3; 612825: out[3].imag = -t3; 612825: out[3].real = t1; 612825: out[2].real = t1; 612825: out[0].imag = 0; 612825: out[1].imag = 0; 612825: 612825: 612825: 612825: Complex tmp = out[2]; 612825: out[2] = out[3]; 612825: out[3] = out[5]; 612825: out[5] = out[7]; 612825: out[7] = out[4]; 612825: out[4] = out[1]; 612825: out[1] = out[6]; 612825: out[6] = tmp; 612825: } 612825: 612825: 612825: 612825: void ButteraugliFFTSquared(double block[kBlockSize]) { 612825: double global_mul = 0.000064; 612825: Complex block_c[kBlockSize]; 612825: 612825: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: kBlockEdge == 8 612825: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "kBlockEdge == 8" 612825: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 629, __extension__ __PRETTY_FUNCTION__)) 612825: # 629 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: for (int y = 0; y < kBlockEdge; ++y) { 612825: RealFFT8(block + y * kBlockEdge, block_c + y * kBlockEdge); 612825: } 612825: TransposeBlock(block_c); 612825: double r0[kBlockEdge]; 612825: double r1[kBlockEdge]; 612825: for (int x = 0; x < kBlockEdge; ++x) { 612825: r0[x] = block_c[x].real; 612825: r1[x] = block_c[kBlockHalf + x].real; 612825: } 612825: RealFFT8(r0, block_c); 612825: RealFFT8(r1, block_c + kBlockHalf); 612825: for (int y = 1; y < kBlockEdgeHalf; ++y) { 612825: FFT8(block_c + y * kBlockEdge); 612825: } 612825: for (int i = kBlockEdgeHalf; i < kBlockHalf + kBlockEdgeHalf + 1; ++i) { 612825: block[i] = abssq(block_c[i]); 612825: block[i] *= global_mul; 612825: } 612825: } 612825: 612825: 612825: 612825: 612825: void ButteraugliBlockDiff(double xyb0[3 * kBlockSize], 612825: double xyb1[3 * kBlockSize], 612825: double diff_xyb_dc[3], 612825: double diff_xyb_ac[3], 612825: double diff_xyb_edge_dc[3]) { 612825: ; 612825: const double *csf8x8 = GetContrastSensitivityMatrix(); 612825: 612825: double avgdiff_xyb[3] = {0.0}; 612825: double avgdiff_edge[3][4] = { {0.0} }; 612825: for (int i = 0; i < 3 * kBlockSize; ++i) { 612825: const double diff_xyb = xyb0[i] - xyb1[i]; 612825: const int c = i / kBlockSize; 612825: avgdiff_xyb[c] += diff_xyb / kBlockSize; 612825: const int k = i % kBlockSize; 612825: const int kx = k % kBlockEdge; 612825: const int ky = k / kBlockEdge; 612825: const int h_edge_idx = ky == 0 ? 1 : ky == 7 ? 3 : -1; 612825: const int v_edge_idx = kx == 0 ? 0 : kx == 7 ? 2 : -1; 612825: if (h_edge_idx >= 0) { 612825: avgdiff_edge[c][h_edge_idx] += diff_xyb / kBlockEdge; 612825: } 612825: if (v_edge_idx >= 0) { 612825: avgdiff_edge[c][v_edge_idx] += diff_xyb / kBlockEdge; 612825: } 612825: } 612825: XybDiffLowFreqSquaredAccumulate(avgdiff_xyb[0], 612825: avgdiff_xyb[1], 612825: avgdiff_xyb[2], 612825: 0, 0, 0, csf8x8[0], 612825: diff_xyb_dc); 612825: for (int i = 0; i < 4; ++i) { 612825: XybDiffLowFreqSquaredAccumulate(avgdiff_edge[0][i], 612825: avgdiff_edge[1][i], 612825: avgdiff_edge[2][i], 612825: 0, 0, 0, csf8x8[0], 612825: diff_xyb_edge_dc); 612825: } 612825: 612825: double* xyb_avg = xyb0; 612825: double* xyb_halfdiff = xyb1; 612825: for(int i = 0; i < 3 * kBlockSize; ++i) { 612825: double avg = (xyb0[i] + xyb1[i])/2; 612825: double halfdiff = (xyb0[i] - xyb1[i])/2; 612825: xyb_avg[i] = avg; 612825: xyb_halfdiff[i] = halfdiff; 612825: } 612825: double *y_avg = &xyb_avg[kBlockSize]; 612825: double *x_halfdiff_squared = &xyb_halfdiff[0]; 612825: double *y_halfdiff = &xyb_halfdiff[kBlockSize]; 612825: double *z_halfdiff_squared = &xyb_halfdiff[2 * kBlockSize]; 612825: ButteraugliFFTSquared(y_avg); 612825: ButteraugliFFTSquared(x_halfdiff_squared); 612825: ButteraugliFFTSquared(y_halfdiff); 612825: ButteraugliFFTSquared(z_halfdiff_squared); 612825: 612825: static const double xmul = 64.8; 612825: static const double ymul = 1.753123908348329; 612825: static const double ymul2 = 1.51983458269; 612825: static const double zmul = 2.4; 612825: 612825: for (size_t i = kBlockEdgeHalf; i < kBlockHalf + kBlockEdgeHalf + 1; ++i) { 612825: double d = csf8x8[i]; 612825: diff_xyb_ac[0] += d * xmul * x_halfdiff_squared[i]; 612825: diff_xyb_ac[2] += d * zmul * z_halfdiff_squared[i]; 612825: 612825: y_avg[i] = sqrt(y_avg[i]); 612825: y_halfdiff[i] = sqrt(y_halfdiff[i]); 612825: double y0 = y_avg[i] - y_halfdiff[i]; 612825: double y1 = y_avg[i] + y_halfdiff[i]; 612825: 612825: 612825: static const double ylimit = 0.04; 612825: y0 = RemoveRangeAroundZero(y0, ylimit); 612825: y1 = RemoveRangeAroundZero(y1, ylimit); 612825: if (y0 != y1) { 612825: double valy0 = Interpolate(GetHighFreqColorDiffDy(), 21, y0 * ymul2); 612825: double valy1 = Interpolate(GetHighFreqColorDiffDy(), 21, y1 * ymul2); 612825: double valy = ymul * (valy0 - valy1); 612825: diff_xyb_ac[1] += d * valy * valy; 612825: } 612825: } 612825: } 612825: 612825: 612825: 612825: 612825: void Butteraugli8x8CornerEdgeDetectorDiff( 612825: const size_t pos_x, 612825: const size_t pos_y, 612825: const size_t xsize, 612825: const size_t ysize, 612825: const std::vector > &blurred0, 612825: const std::vector > &blurred1, 612825: double diff_xyb[3]) { 612825: ; 612825: int local_count = 0; 612825: double local_xyb[3] = { 0 }; 612825: static const double w = 0.711100840192; 612825: for (int k = 0; k < 4; ++k) { 612825: size_t step = 3; 612825: size_t offset[4][2] = { { 0, 0 }, { 0, 7 }, { 7, 0 }, { 7, 7 } }; 612825: size_t x = pos_x + offset[k][0]; 612825: size_t y = pos_y + offset[k][1]; 612825: if (x >= step && x + step < xsize) { 612825: size_t ix = y * xsize + (x - step); 612825: size_t ix2 = ix + 2 * step; 612825: XybDiffLowFreqSquaredAccumulate( 612825: w * (blurred0[0][ix] - blurred0[0][ix2]), 612825: w * (blurred0[1][ix] - blurred0[1][ix2]), 612825: w * (blurred0[2][ix] - blurred0[2][ix2]), 612825: w * (blurred1[0][ix] - blurred1[0][ix2]), 612825: w * (blurred1[1][ix] - blurred1[1][ix2]), 612825: w * (blurred1[2][ix] - blurred1[2][ix2]), 612825: 1.0, local_xyb); 612825: ++local_count; 612825: } 612825: if (y >= step && y + step < ysize) { 612825: size_t ix = (y - step) * xsize + x; 612825: size_t ix2 = ix + 2 * step * xsize; 612825: XybDiffLowFreqSquaredAccumulate( 612825: w * (blurred0[0][ix] - blurred0[0][ix2]), 612825: w * (blurred0[1][ix] - blurred0[1][ix2]), 612825: w * (blurred0[2][ix] - blurred0[2][ix2]), 612825: w * (blurred1[0][ix] - blurred1[0][ix2]), 612825: w * (blurred1[1][ix] - blurred1[1][ix2]), 612825: w * (blurred1[2][ix] - blurred1[2][ix2]), 612825: 1.0, local_xyb); 612825: ++local_count; 612825: } 612825: } 612825: static const double weight = 0.01617112696; 612825: const double mul = weight * 8.0 / local_count; 612825: for (int i = 0; i < 3; ++i) { 612825: diff_xyb[i] += mul * local_xyb[i]; 612825: } 612825: } 612825: 612825: 612825: const double *GetOpsinAbsorbance() { 612825: static const double kMix[12] = { 612825: 0.348036746003, 612825: 0.577814843137, 612825: 0.0544556093735, 612825: 0.774145581713, 612825: 0.26922717275, 612825: 0.767247733938, 612825: 0.0366922708552, 612825: 0.920130265014, 612825: 0.0882062883536, 612825: 0.158581714673, 612825: 0.712857943858, 612825: 10.6524069248, 612825: }; 612825: return &kMix[0]; 612825: } 612825: 612825: void OpsinAbsorbance(const double in[3], double out[3]) { 612825: const double *mix = GetOpsinAbsorbance(); 612825: out[0] = mix[0] * in[0] + mix[1] * in[1] + mix[2] * in[2] + mix[3]; 612825: out[1] = mix[4] * in[0] + mix[5] * in[1] + mix[6] * in[2] + mix[7]; 612825: out[2] = mix[8] * in[0] + mix[9] * in[1] + mix[10] * in[2] + mix[11]; 612825: } 612825: 612825: double GammaMinArg() { 612825: double in[3] = { 0.0, 0.0, 0.0 }; 612825: double out[3]; 612825: OpsinAbsorbance(in, out); 612825: return std::min(out[0], std::min(out[1], out[2])); 612825: } 612825: 612825: double GammaMaxArg() { 612825: double in[3] = { 255.0, 255.0, 255.0 }; 612825: double out[3]; 612825: OpsinAbsorbance(in, out); 612825: return std::max(out[0], std::max(out[1], out[2])); 612825: } 612825: 612825: ButteraugliComparator::ButteraugliComparator( 612825: size_t xsize, size_t ysize, int step) 612825: : xsize_(xsize), 612825: ysize_(ysize), 612825: num_pixels_(xsize * ysize), 612825: step_(step), 612825: res_xsize_((xsize + step - 1) / step), 612825: res_ysize_((ysize + step - 1) / step) { 612825: 612825: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: step <= 4 612825: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "step <= 4" 612825: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 840, __extension__ __PRETTY_FUNCTION__)) 612825: # 840 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: } 612825: 612825: void MaskHighIntensityChange( 612825: size_t xsize, size_t ysize, 612825: const std::vector > &c0, 612825: const std::vector > &c1, 612825: std::vector > &xyb0, 612825: std::vector > &xyb1) { 612825: ; 612825: for (int y = 0; y < ysize; ++y) { 612825: for (int x = 0; x < xsize; ++x) { 612825: int ix = y * xsize + x; 612825: const double ave[3] = { 612825: (c0[0][ix] + c1[0][ix]) * 0.5, 612825: (c0[1][ix] + c1[1][ix]) * 0.5, 612825: (c0[2][ix] + c1[2][ix]) * 0.5, 612825: }; 612825: double sqr_max_diff = -1; 612825: { 612825: int offset[4] = 612825: { -1, 1, -static_cast(xsize), static_cast(xsize) }; 612825: int border[4] = 612825: { x == 0, x + 1 == xsize, y == 0, y + 1 == ysize }; 612825: for (int dir = 0; dir < 4; ++dir) { 612825: if (border[dir]) { 612825: continue; 612825: } 612825: const int ix2 = ix + offset[dir]; 612825: double diff = 0.5 * (c0[1][ix2] + c1[1][ix2]) - ave[1]; 612825: diff *= diff; 612825: if (sqr_max_diff < diff) { 612825: sqr_max_diff = diff; 612825: } 612825: } 612825: } 612825: static const double kReductionX = 275.19165240059317; 612825: static const double kReductionY = 18599.41286306991; 612825: static const double kReductionZ = 410.8995306951065; 612825: static const double kChromaBalance = 106.95800948271017; 612825: double chroma_scale = kChromaBalance / (ave[1] + kChromaBalance); 612825: 612825: const double mix[3] = { 612825: chroma_scale * kReductionX / (sqr_max_diff + kReductionX), 612825: kReductionY / (sqr_max_diff + kReductionY), 612825: chroma_scale * kReductionZ / (sqr_max_diff + kReductionZ), 612825: }; 612825: 612825: 612825: for (int i = 0; i < 3; ++i) { 612825: xyb0[i][ix] = mix[i] * c0[i][ix] + (1 - mix[i]) * ave[i]; 612825: xyb1[i][ix] = mix[i] * c1[i][ix] + (1 - mix[i]) * ave[i]; 612825: } 612825: } 612825: } 612825: } 612825: 612825: double SimpleGamma(double v) { 612825: static const double kGamma = 0.387494322593; 612825: static const double limit = 43.01745241042018; 612825: double bright = v - limit; 612825: if (bright >= 0) { 612825: static const double mul = 0.0383723643799; 612825: v -= bright * mul; 612825: } 612825: static const double limit2 = 94.68634353321337; 612825: double bright2 = v - limit2; 612825: if (bright2 >= 0) { 612825: static const double mul = 0.22885405968; 612825: v -= bright2 * mul; 612825: } 612825: static const double offset = 0.156775786057; 612825: static const double scale = 8.898059160493739; 612825: double retval = scale * (offset + pow(v, kGamma)); 612825: return retval; 612825: } 612825: 612825: static inline double Gamma(double v) { 612825: 612825: return GammaPolynomial(v); 612825: } 612825: 612825: void OpsinDynamicsImage(size_t xsize, size_t ysize, 612825: std::vector > &rgb) { 612825: ; 612825: std::vector > blurred = rgb; 612825: static const double kSigma = 1.1; 612825: for (int i = 0; i < 3; ++i) { 612825: Blur(xsize, ysize, blurred[i].data(), kSigma, 0.0); 612825: } 612825: for (int i = 0; i < rgb[0].size(); ++i) { 612825: double sensitivity[3]; 612825: { 612825: 612825: double pre_rgb[3] = { blurred[0][i], blurred[1][i], blurred[2][i] }; 612825: double pre_mixed[3]; 612825: OpsinAbsorbance(pre_rgb, pre_mixed); 612825: sensitivity[0] = Gamma(pre_mixed[0]) / pre_mixed[0]; 612825: sensitivity[1] = Gamma(pre_mixed[1]) / pre_mixed[1]; 612825: sensitivity[2] = Gamma(pre_mixed[2]) / pre_mixed[2]; 612825: } 612825: double cur_rgb[3] = { rgb[0][i], rgb[1][i], rgb[2][i] }; 612825: double cur_mixed[3]; 612825: OpsinAbsorbance(cur_rgb, cur_mixed); 612825: cur_mixed[0] *= sensitivity[0]; 612825: cur_mixed[1] *= sensitivity[1]; 612825: cur_mixed[2] *= sensitivity[2]; 612825: double x, y, z; 612825: RgbToXyb(cur_mixed[0], cur_mixed[1], cur_mixed[2], &x, &y, &z); 612825: rgb[0][i] = x; 612825: rgb[1][i] = y; 612825: rgb[2][i] = z; 612825: } 612825: } 612825: 612825: static void ScaleImage(double scale, std::vector *result) { 612825: ; 612825: for (size_t i = 0; i < result->size(); ++i) { 612825: (*result)[i] *= scale; 612825: } 612825: } 612825: 612825: 612825: 612825: void CalculateDiffmap(const size_t xsize, const size_t ysize, 612825: const int step, 612825: std::vector* diffmap) { 612825: ; 612825: 612825: 612825: 612825: 612825: 612825: int s2 = (8 - step) / 2; 612825: 612825: std::vector diffmap_out(xsize * ysize); 612825: const size_t res_xsize = (xsize + step - 1) / step; 612825: for (size_t res_y = 0; res_y + 8 - step < ysize; res_y += step) { 612825: for (size_t res_x = 0; res_x + 8 - step < xsize; res_x += step) { 612825: size_t res_ix = (res_y * res_xsize + res_x) / step; 612825: float orig_val = (*diffmap)[res_ix]; 612825: constexpr float kInitialSlope = 100; 612825: 612825: 612825: double val = orig_val < (1.0 / (kInitialSlope * kInitialSlope)) 612825: ? kInitialSlope * orig_val 612825: : std::sqrt(orig_val); 612825: for (size_t off_y = 0; off_y < step; ++off_y) { 612825: for (size_t off_x = 0; off_x < step; ++off_x) { 612825: diffmap_out[(res_y + off_y + s2) * xsize + res_x + off_x + s2] = val; 612825: } 612825: } 612825: } 612825: } 612825: *diffmap = diffmap_out; 612825: { 612825: static const double kSigma = 8.8510880283; 612825: static const double mul1 = 24.8235314874; 612825: static const double scale = 1.0 / (1.0 + mul1); 612825: const int s = 8 - step; 612825: std::vector blurred((xsize - s) * (ysize - s)); 612825: for (int y = 0; y < ysize - s; ++y) { 612825: for (int x = 0; x < xsize - s; ++x) { 612825: blurred[y * (xsize - s) + x] = (*diffmap)[(y + s2) * xsize + x + s2]; 612825: } 612825: } 612825: static const double border_ratio = 0.03027655136; 612825: Blur(xsize - s, ysize - s, blurred.data(), kSigma, border_ratio); 612825: for (int y = 0; y < ysize - s; ++y) { 612825: for (int x = 0; x < xsize - s; ++x) { 612825: (*diffmap)[(y + s2) * xsize + x + s2] 612825: += mul1 * blurred[y * (xsize - s) + x]; 612825: } 612825: } 612825: ScaleImage(scale, diffmap); 612825: } 612825: } 612825: 612825: void ButteraugliComparator::Diffmap(const std::vector &rgb0_arg, 612825: const std::vector &rgb1_arg, 612825: ImageF &result) { 612825: result = ImageF(xsize_, ysize_); 612825: if (xsize_ < 8 || ysize_ < 8) return; 612825: std::vector> rgb0_c = PackedFromPlanes(rgb0_arg); 612825: std::vector> rgb1_c = PackedFromPlanes(rgb1_arg); 612825: OpsinDynamicsImage(xsize_, ysize_, rgb0_c); 612825: OpsinDynamicsImage(xsize_, ysize_, rgb1_c); 612825: std::vector pg0 = PlanesFromPacked(xsize_, ysize_, rgb0_c); 612825: std::vector pg1 = PlanesFromPacked(xsize_, ysize_, rgb1_c); 612825: DiffmapOpsinDynamicsImage(pg0, pg1, result); 612825: } 612825: 612825: void ButteraugliComparator::DiffmapOpsinDynamicsImage( 612825: const std::vector &xyb0_arg, const std::vector &xyb1_arg, 612825: ImageF &result) { 612825: result = ImageF(xsize_, ysize_); 612825: if (xsize_ < 8 || ysize_ < 8) return; 612825: std::vector> xyb0 = PackedFromPlanes(xyb0_arg); 612825: std::vector> xyb1 = PackedFromPlanes(xyb1_arg); 612825: auto xyb0_c = xyb0; 612825: auto xyb1_c = xyb1; 612825: 612825: MaskHighIntensityChange(xsize_, ysize_, xyb0_c, xyb1_c, xyb0, xyb1); 612825: 612825: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: 8 <= xsize_ 612825: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "8 <= xsize_" 612825: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 1043, __extension__ __PRETTY_FUNCTION__)) 612825: # 1043 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: for (int i = 0; i < 3; i++) { 612825: 612825: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: xyb0[i].size() == num_pixels_ 612825: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "xyb0[i].size() == num_pixels_" 612825: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 1045, __extension__ __PRETTY_FUNCTION__)) 612825: # 1045 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: 612825: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: xyb1[i].size() == num_pixels_ 612825: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "xyb1[i].size() == num_pixels_" 612825: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 1046, __extension__ __PRETTY_FUNCTION__)) 612825: # 1046 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: } 612825: std::vector > mask_xyb(3); 612825: std::vector > mask_xyb_dc(3); 612825: std::vector block_diff_dc(3 * res_xsize_ * res_ysize_); 612825: std::vector block_diff_ac(3 * res_xsize_ * res_ysize_); 612825: std::vector edge_detector_map(3 * res_xsize_ * res_ysize_); 612825: std::vector packed_result; 612825: BlockDiffMap(xyb0, xyb1, &block_diff_dc, &block_diff_ac); 612825: EdgeDetectorMap(xyb0, xyb1, &edge_detector_map); 612825: EdgeDetectorLowFreq(xyb0, xyb1, &block_diff_ac); 612825: Mask(xyb0, xyb1, xsize_, ysize_, &mask_xyb, &mask_xyb_dc); 612825: CombineChannels(mask_xyb, mask_xyb_dc, block_diff_dc, block_diff_ac, 612825: edge_detector_map, &packed_result); 612825: CalculateDiffmap(xsize_, ysize_, step_, &packed_result); 612825: CopyFromPacked(packed_result, &result); 612825: } 612825: 612825: void ButteraugliComparator::BlockDiffMap( 612825: const std::vector > &xyb0, 612825: const std::vector > &xyb1, 612825: std::vector* block_diff_dc, 612825: std::vector* block_diff_ac) { 612825: ; 612825: for (size_t res_y = 0; res_y + (kBlockEdge - step_ - 1) < ysize_; 612825: res_y += step_) { 612825: for (size_t res_x = 0; res_x + (kBlockEdge - step_ - 1) < xsize_; 612825: res_x += step_) { 612825: size_t res_ix = (res_y * res_xsize_ + res_x) / step_; 612825: size_t offset = (std::min(res_y, ysize_ - 8) * xsize_ + 612825: std::min(res_x, xsize_ - 8)); 612825: double block0[3 * kBlockEdge * kBlockEdge]; 612825: double block1[3 * kBlockEdge * kBlockEdge]; 612825: for (int i = 0; i < 3; ++i) { 612825: double *m0 = &block0[i * kBlockEdge * kBlockEdge]; 612825: double *m1 = &block1[i * kBlockEdge * kBlockEdge]; 612825: for (size_t y = 0; y < kBlockEdge; y++) { 612825: for (size_t x = 0; x < kBlockEdge; x++) { 612825: m0[kBlockEdge * y + x] = xyb0[i][offset + y * xsize_ + x]; 612825: m1[kBlockEdge * y + x] = xyb1[i][offset + y * xsize_ + x]; 612825: } 612825: } 612825: } 612825: double diff_xyb_dc[3] = { 0.0 }; 612825: double diff_xyb_ac[3] = { 0.0 }; 612825: double diff_xyb_edge_dc[3] = { 0.0 }; 612825: ButteraugliBlockDiff(block0, block1, 612825: diff_xyb_dc, diff_xyb_ac, diff_xyb_edge_dc); 612825: for (int i = 0; i < 3; ++i) { 612825: (*block_diff_dc)[3 * res_ix + i] = diff_xyb_dc[i]; 612825: (*block_diff_ac)[3 * res_ix + i] = diff_xyb_ac[i]; 612825: } 612825: } 612825: } 612825: } 612825: 612825: void ButteraugliComparator::EdgeDetectorMap( 612825: const std::vector > &xyb0, 612825: const std::vector > &xyb1, 612825: std::vector* edge_detector_map) { 612825: ; 612825: static const double kSigma[3] = { 612825: 1.5, 612825: 0.586, 612825: 0.4, 612825: }; 612825: std::vector > blurred0(xyb0); 612825: std::vector > blurred1(xyb1); 612825: for (int i = 0; i < 3; i++) { 612825: Blur(xsize_, ysize_, blurred0[i].data(), kSigma[i], 0.0); 612825: Blur(xsize_, ysize_, blurred1[i].data(), kSigma[i], 0.0); 612825: } 612825: for (size_t res_y = 0; res_y + (8 - step_) < ysize_; res_y += step_) { 612825: for (size_t res_x = 0; res_x + (8 - step_) < xsize_; res_x += step_) { 612825: size_t res_ix = (res_y * res_xsize_ + res_x) / step_; 612825: double diff_xyb[3] = { 0.0 }; 612825: Butteraugli8x8CornerEdgeDetectorDiff(std::min(res_x, xsize_ - 8), 612825: std::min(res_y, ysize_ - 8), 612825: xsize_, ysize_, 612825: blurred0, blurred1, 612825: diff_xyb); 612825: for (int i = 0; i < 3; ++i) { 612825: (*edge_detector_map)[3 * res_ix + i] = diff_xyb[i]; 612825: } 612825: } 612825: } 612825: } 612825: 612825: void ButteraugliComparator::EdgeDetectorLowFreq( 612825: const std::vector > &xyb0, 612825: const std::vector > &xyb1, 612825: std::vector* block_diff_ac) { 612825: ; 612825: static const double kSigma = 14; 612825: static const double kMul = 10; 612825: std::vector > blurred0(xyb0); 612825: std::vector > blurred1(xyb1); 612825: for (int i = 0; i < 3; i++) { 612825: Blur(xsize_, ysize_, blurred0[i].data(), kSigma, 0.0); 612825: Blur(xsize_, ysize_, blurred1[i].data(), kSigma, 0.0); 612825: } 612825: const int step = 8; 612825: for (int y = 0; y + step < ysize_; y += step_) { 612825: int resy = y / step_; 612825: int resx = step / step_; 612825: for (int x = 0; x + step < xsize_; x += step_, resx++) { 612825: const int ix = y * xsize_ + x; 612825: const int res_ix = resy * res_xsize_ + resx; 612825: double diff[4][3]; 612825: for (int i = 0; i < 3; ++i) { 612825: int ix2 = ix + 8; 612825: diff[0][i] = 612825: ((blurred1[i][ix] - blurred0[i][ix]) + 612825: (blurred0[i][ix2] - blurred1[i][ix2])); 612825: ix2 = ix + 8 * xsize_; 612825: diff[1][i] = 612825: ((blurred1[i][ix] - blurred0[i][ix]) + 612825: (blurred0[i][ix2] - blurred1[i][ix2])); 612825: ix2 = ix + 6 * xsize_ + 6; 612825: diff[2][i] = 612825: ((blurred1[i][ix] - blurred0[i][ix]) + 612825: (blurred0[i][ix2] - blurred1[i][ix2])); 612825: ix2 = ix + 6 * xsize_ - 6; 612825: diff[3][i] = x < step ? 0 : 612825: ((blurred1[i][ix] - blurred0[i][ix]) + 612825: (blurred0[i][ix2] - blurred1[i][ix2])); 612825: } 612825: double max_diff_xyb[3] = { 0 }; 612825: for (int k = 0; k < 4; ++k) { 612825: double diff_xyb[3] = { 0 }; 612825: XybDiffLowFreqSquaredAccumulate(diff[k][0], diff[k][1], diff[k][2], 612825: 0, 0, 0, 1.0, 612825: diff_xyb); 612825: for (int i = 0; i < 3; ++i) { 612825: max_diff_xyb[i] = std::max(max_diff_xyb[i], diff_xyb[i]); 612825: } 612825: } 612825: for (int i = 0; i < 3; ++i) { 612825: (*block_diff_ac)[3 * res_ix + i] += kMul * max_diff_xyb[i]; 612825: } 612825: } 612825: } 612825: } 612825: 612825: void ButteraugliComparator::CombineChannels( 612825: const std::vector >& mask_xyb, 612825: const std::vector >& mask_xyb_dc, 612825: const std::vector& block_diff_dc, 612825: const std::vector& block_diff_ac, 612825: const std::vector& edge_detector_map, 612825: std::vector* result) { 612825: ; 612825: result->resize(res_xsize_ * res_ysize_); 612825: for (size_t res_y = 0; res_y + (8 - step_) < ysize_; res_y += step_) { 612825: for (size_t res_x = 0; res_x + (8 - step_) < xsize_; res_x += step_) { 612825: size_t res_ix = (res_y * res_xsize_ + res_x) / step_; 612825: double mask[3]; 612825: double dc_mask[3]; 612825: for (int i = 0; i < 3; ++i) { 612825: mask[i] = mask_xyb[i][(res_y + 3) * xsize_ + (res_x + 3)]; 612825: dc_mask[i] = mask_xyb_dc[i][(res_y + 3) * xsize_ + (res_x + 3)]; 612825: } 612825: (*result)[res_ix] = 612825: (DotProduct(&block_diff_dc[3 * res_ix], dc_mask) + 612825: DotProduct(&block_diff_ac[3 * res_ix], mask) + 612825: DotProduct(&edge_detector_map[3 * res_ix], mask)); 612825: } 612825: } 612825: } 612825: 612825: double ButteraugliScoreFromDiffmap(const ImageF& diffmap) { 612825: ; 612825: float retval = 0.0f; 612825: for (size_t y = 0; y < diffmap.ysize(); ++y) { 612825: ConstRestrict row = diffmap.Row(y); 612825: for (size_t x = 0; x < diffmap.xsize(); ++x) { 612825: retval = std::max(retval, row[x]); 612825: } 612825: } 612825: return retval; 612825: } 612825: 612825: static std::array MakeMask( 612825: double extmul, double extoff, 612825: double mul, double offset, 612825: double scaler) { 612825: std::array lut; 612825: for (int i = 0; i < lut.size(); ++i) { 612825: const double c = mul / ((0.01 * scaler * i) + offset); 612825: lut[i] = 1.0 + extmul * (c + extoff); 612825: 612825: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: lut[i] >= 0.0 612825: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "lut[i] >= 0.0" 612825: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 1236, __extension__ __PRETTY_FUNCTION__)) 612825: # 1236 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: lut[i] *= lut[i]; 612825: } 612825: return lut; 612825: } 612825: 612825: double MaskX(double delta) { 612825: ; 612825: static const double extmul = 0.975741017749; 612825: static const double extoff = -4.25328244168; 612825: static const double offset = 0.454909521427; 612825: static const double scaler = 0.0738288224836; 612825: static const double mul = 20.8029176447; 612825: static const std::array lut = 612825: MakeMask(extmul, extoff, mul, offset, scaler); 612825: return InterpolateClampNegative(lut.data(), lut.size(), delta); 612825: } 612825: 612825: double MaskY(double delta) { 612825: ; 612825: static const double extmul = 0.373995618954; 612825: static const double extoff = 1.5307267433; 612825: static const double offset = 0.911952641929; 612825: static const double scaler = 1.1731667845; 612825: static const double mul = 16.2447033988; 612825: static const std::array lut = 612825: MakeMask(extmul, extoff, mul, offset, scaler); 612825: return InterpolateClampNegative(lut.data(), lut.size(), delta); 612825: } 612825: 612825: double MaskB(double delta) { 612825: ; 612825: static const double extmul = 0.61582234137; 612825: static const double extoff = -4.25376118646; 612825: static const double offset = 1.05105070921; 612825: static const double scaler = 0.47434643535; 612825: static const double mul = 31.1444967089; 612825: static const std::array lut = 612825: MakeMask(extmul, extoff, mul, offset, scaler); 612825: return InterpolateClampNegative(lut.data(), lut.size(), delta); 612825: } 612825: 612825: double MaskDcX(double delta) { 612825: ; 612825: static const double extmul = 1.79116943438; 612825: static const double extoff = -3.86797479189; 612825: static const double offset = 0.670960225853; 612825: static const double scaler = 0.486575865525; 612825: static const double mul = 20.4563479139; 612825: static const std::array lut = 612825: MakeMask(extmul, extoff, mul, offset, scaler); 612825: return InterpolateClampNegative(lut.data(), lut.size(), delta); 612825: } 612825: 612825: double MaskDcY(double delta) { 612825: ; 612825: static const double extmul = 0.212223514236; 612825: static const double extoff = -3.65647120524; 612825: static const double offset = 1.73396799447; 612825: static const double scaler = 0.170392660501; 612825: static const double mul = 21.6566724788; 612825: static const std::array lut = 612825: MakeMask(extmul, extoff, mul, offset, scaler); 612825: return InterpolateClampNegative(lut.data(), lut.size(), delta); 612825: } 612825: 612825: double MaskDcB(double delta) { 612825: ; 612825: static const double extmul = 0.349376011816; 612825: static const double extoff = -0.894711072781; 612825: static const double offset = 0.901647926679; 612825: static const double scaler = 0.380086095024; 612825: static const double mul = 18.0373825149; 612825: static const std::array lut = 612825: MakeMask(extmul, extoff, mul, offset, scaler); 612825: return InterpolateClampNegative(lut.data(), lut.size(), delta); 612825: } 612825: 612825: 612825: 612825: 612825: 612825: void MinSquareVal(size_t square_size, size_t offset, 612825: size_t xsize, size_t ysize, 612825: float *values) { 612825: ; 612825: 612825: 612825: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: (static_cast ( 612825: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: offset < square_size 612825: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: ) ? void (0) : __assert_fail ( 612825: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: "offset < square_size" 612825: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 3 4 612825: , "third_party/butteraugli/butteraugli/butteraugli.cc", 1323, __extension__ __PRETTY_FUNCTION__)) 612825: # 1323 "third_party/butteraugli/butteraugli/butteraugli.cc" 612825: ; 612825: std::vector tmp(xsize * ysize); 612825: for (size_t y = 0; y < ysize; ++y) { 612825: const size_t minh = offset > y ? 0 : y - offset; 612825: const size_t maxh = std::min(ysize, y + square_size - offset); 612825: for (size_t x = 0; x < xsize; ++x) { 612825: double min = values[x + minh * xsize]; 612825: for (size_t j = minh + 1; j < maxh; ++j) { 612825: min = fmin(min, values[x + j * xsize]); 612825: } 612825: tmp[x + y * xsize] = min; 612825: } 612825: } 612825: for (size_t x = 0; x < xsize; ++x) { 612825: const size_t minw = offset > x ? 0 : x - offset; 612825: const size_t maxw = std::min(xsize, x + square_size - offset); 612825: for (size_t y = 0; y < ysize; ++y) { 612825: double min = tmp[minw + y * xsize]; 612825: for (size_t j = minw + 1; j < maxw; ++j) { 612825: min = fmin(min, tmp[j + y * xsize]); 612825: } 612825: values[x + y * xsize] = min; 612825: } 612825: } 612825: } 612825: 612825: 612825: void Average5x5(int xsize, int ysize, std::vector* diffs) { 612825: ; 612825: if (xsize < 4 || ysize < 4) { 612825: 612825: return; 612825: } 612825: static const float w = 0.679144890667; 612825: static const float scale = 1.0 / (5.0 + 4 * w); 612825: std::vector result = *diffs; 612825: std::vector tmp0 = *diffs; 612825: std::vector tmp1 = *diffs; 612825: ScaleImage(w, &tmp1); 612825: for (int y = 0; y < ysize; y++) { 612825: const int row0 = y * xsize; 612825: result[row0 + 1] += tmp0[row0]; 612825: result[row0 + 0] += tmp0[row0 + 1]; 612825: result[row0 + 2] += tmp0[row0 + 1]; 612825: for (int x = 2; x < xsize - 2; ++x) { 612825: result[row0 + x - 1] += tmp0[row0 + x]; 612825: result[row0 + x + 1] += tmp0[row0 + x]; 612825: } 612825: result[row0 + xsize - 3] += tmp0[row0 + xsize - 2]; 612825: result[row0 + xsize - 1] += tmp0[row0 + xsize - 2]; 612825: result[row0 + xsize - 2] += tmp0[row0 + xsize - 1]; 612825: if (y > 0) { 612825: const int rowd1 = row0 - xsize; 612825: result[rowd1 + 1] += tmp1[row0]; 612825: result[rowd1 + 0] += tmp0[row0]; 612825: for (int x = 1; x < xsize - 1; ++x) { 612825: result[rowd1 + x + 1] += tmp1[row0 + x]; 612825: result[rowd1 + x + 0] += tmp0[row0 + x]; 612825: result[rowd1 + x - 1] += tmp1[row0 + x]; 612825: } 612825: result[rowd1 + xsize - 1] += tmp0[row0 + xsize - 1]; 612825: result[rowd1 + xsize - 2] += tmp1[row0 + xsize - 1]; 612825: } 612825: if (y + 1 < ysize) { 612825: const int rowu1 = row0 + xsize; 612825: result[rowu1 + 1] += tmp1[row0]; 612825: result[rowu1 + 0] += tmp0[row0]; 612825: for (int x = 1; x < xsize - 1; ++x) { 612825: result[rowu1 + x + 1] += tmp1[row0 + x]; 612825: result[rowu1 + x + 0] += tmp0[row0 + x]; 612825: result[rowu1 + x - 1] += tmp1[row0 + x]; 612825: } 612825: result[rowu1 + xsize - 1] += tmp0[row0 + xsize - 1]; 612825: result[rowu1 + xsize - 2] += tmp1[row0 + xsize - 1]; 612825: } 612825: } 612825: *diffs = result; 612825: ScaleImage(scale, diffs); 612825: } 612825: 612825: void DiffPrecompute( 612825: const std::vector > &xyb0, 612825: const std::vector > &xyb1, 612825: size_t xsize, size_t ysize, 612825: std::vector > *mask) { 612825: ; 612825: mask->resize(3, std::vector(xyb0[0].size())); 612825: double valsh0[3] = { 0.0 }; 612825: double valsv0[3] = { 0.0 }; 612825: double valsh1[3] = { 0.0 }; 612825: double valsv1[3] = { 0.0 }; 612825: int ix2; 612825: for (size_t y = 0; y < ysize; ++y) { 612825: for (size_t x = 0; x < xsize; ++x) { 612825: size_t ix = x + xsize * y; 612825: if (x + 1 < xsize) { 612825: ix2 = ix + 1; 612825: } else { 612825: ix2 = ix - 1; 612825: } 612825: { 612825: double x0 = (xyb0[0][ix] - xyb0[0][ix2]); 612825: double y0 = (xyb0[1][ix] - xyb0[1][ix2]); 612825: double z0 = (xyb0[2][ix] - xyb0[2][ix2]); 612825: XybToVals(x0, y0, z0, &valsh0[0], &valsh0[1], &valsh0[2]); 612825: double x1 = (xyb1[0][ix] - xyb1[0][ix2]); 612825: double y1 = (xyb1[1][ix] - xyb1[1][ix2]); 612825: double z1 = (xyb1[2][ix] - xyb1[2][ix2]); 612825: XybToVals(x1, y1, z1, &valsh1[0], &valsh1[1], &valsh1[2]); 612825: } 612825: if (y + 1 < ysize) { 612825: ix2 = ix + xsize; 612825: } else { 612825: ix2 = ix - xsize; 612825: } 612825: { 612825: double x0 = (xyb0[0][ix] - xyb0[0][ix2]); 612825: double y0 = (xyb0[1][ix] - xyb0[1][ix2]); 612825: double z0 = (xyb0[2][ix] - xyb0[2][ix2]); 612825: XybToVals(x0, y0, z0, &valsv0[0], &valsv0[1], &valsv0[2]); 612825: double x1 = (xyb1[0][ix] - xyb1[0][ix2]); 612825: double y1 = (xyb1[1][ix] - xyb1[1][ix2]); 612825: double z1 = (xyb1[2][ix] - xyb1[2][ix2]); 612825: XybToVals(x1, y1, z1, &valsv1[0], &valsv1[1], &valsv1[2]); 612825: } 612825: for (int i = 0; i < 3; ++i) { 612825: double sup0 = fabs(valsh0[i]) + fabs(valsv0[i]); 612825: double sup1 = fabs(valsh1[i]) + fabs(valsv1[i]); 612825: double m = std::min(sup0, sup1); 612825: (*mask)[i][ix] = m; 612825: } 612825: } 612825: } 612825: } 612825: 612825: void Mask(const std::vector > &xyb0, 612825: const std::vector > &xyb1, 612825: size_t xsize, size_t ysize, 612825: std::vector > *mask, 612825: std::vector > *mask_dc) { 612825: ; 612825: mask->resize(3); 612825: mask_dc->resize(3); 612825: for (int i = 0; i < 3; ++i) { 612825: (*mask)[i].resize(xsize * ysize); 612825: (*mask_dc)[i].resize(xsize * ysize); 612825: } 612825: DiffPrecompute(xyb0, xyb1, xsize, ysize, mask); 612825: for (int i = 0; i < 3; ++i) { 612825: Average5x5(xsize, ysize, &(*mask)[i]); 612825: MinSquareVal(4, 0, xsize, ysize, (*mask)[i].data()); 612825: static const double sigma[3] = { 612825: 9.65781083553, 612825: 14.2644604355, 612825: 4.53358927369, 612825: }; 612825: Blur(xsize, ysize, (*mask)[i].data(), sigma[i], 0.0); 612825: } 612825: static const double w00 = 232.206464018; 612825: static const double w11 = 22.9455222245; 612825: static const double w22 = 503.962310606; 612825: 612825: for (size_t y = 0; y < ysize; ++y) { 612825: for (size_t x = 0; x < xsize; ++x) { 612825: const size_t idx = y * xsize + x; 612825: const double s0 = (*mask)[0][idx]; 612825: const double s1 = (*mask)[1][idx]; 612825: const double s2 = (*mask)[2][idx]; 612825: const double p0 = w00 * s0; 612825: const double p1 = w11 * s1; 612825: const double p2 = w22 * s2; 612825: 612825: (*mask)[0][idx] = MaskX(p0); 612825: (*mask)[1][idx] = MaskY(p1); 612825: (*mask)[2][idx] = MaskB(p2); 612825: (*mask_dc)[0][idx] = MaskDcX(p0); 612825: (*mask_dc)[1][idx] = MaskDcY(p1); 612825: (*mask_dc)[2][idx] = MaskDcB(p2); 612825: } 612825: } 612825: for (int i = 0; i < 3; ++i) { 612825: ScaleImage(kGlobalScale * kGlobalScale, &(*mask)[i]); 612825: ScaleImage(kGlobalScale * kGlobalScale, &(*mask_dc)[i]); 612825: } 612825: } 612825: 612825: void ButteraugliDiffmap(const std::vector &rgb0_image, 612825: const std::vector &rgb1_image, 612825: ImageF &result_image) { 612825: const size_t xsize = rgb0_image[0].xsize(); 612825: const size_t ysize = rgb0_image[0].ysize(); 612825: ButteraugliComparator butteraugli(xsize, ysize, 3); 612825: butteraugli.Diffmap(rgb0_image, rgb1_image, result_image); 612825: } 612825: 612825: bool ButteraugliInterface(const std::vector &rgb0, 612825: const std::vector &rgb1, 612825: ImageF &diffmap, 612825: double &diffvalue) { 612825: const size_t xsize = rgb0[0].xsize(); 612825: const size_t ysize = rgb0[0].ysize(); 612825: if (xsize < 1 || ysize < 1) { 612825: 612825: 612825: 612825: return false; 612825: } 612825: for (int i = 1; i < 3; i++) { 612825: if (rgb0[i].xsize() != xsize || rgb0[i].ysize() != ysize || 612825: rgb1[i].xsize() != xsize || rgb1[i].ysize() != ysize) { 612825: return false; 612825: } 612825: } 612825: if (xsize < 8 || ysize < 8) { 612825: for (int y = 0; y < ysize; ++y) { 612825: for (int x = 0; x < xsize; ++x) { 612825: diffmap.Row(y)[x] = 0; 612825: } 612825: } 612825: diffvalue = 0; 612825: return true; 612825: } 612825: ButteraugliDiffmap(rgb0, rgb1, diffmap); 612825: diffvalue = ButteraugliScoreFromDiffmap(diffmap); 612825: return true; 612825: } 612825: 612825: bool ButteraugliAdaptiveQuantization(size_t xsize, size_t ysize, 612825: const std::vector > &rgb, std::vector &quant) { 612825: if (xsize < 16 || ysize < 16) { 612825: return false; 612825: } 612825: size_t size = xsize * ysize; 612825: 612825: std::vector > scale_xyb(3); 612825: std::vector > scale_xyb_dc(3); 612825: Mask(rgb, rgb, xsize, ysize, &scale_xyb, &scale_xyb_dc); 612825: quant.resize(size); 612825: 612825: 612825: 612825: for (size_t i = 0; i < size; i++) { 612825: quant[i] = scale_xyb[1][i]; 612825: } 612825: return true; 612825: } 612825: 612825: double ButteraugliFuzzyClass(double score) { 612825: static const double fuzzy_width_up = 10.287189655; 612825: static const double fuzzy_width_down = 6.97490803335; 612825: static const double m0 = 2.0; 612825: double fuzzy_width = score < 1.0 ? fuzzy_width_down : fuzzy_width_up; 612825: return m0 / (1.0 + exp((score - 1.0) * fuzzy_width)); 612825: } 612825: 612825: double ButteraugliFuzzyInverse(double seek) { 612825: double pos = 0; 612825: for (double range = 1.0; range >= 1e-10; range *= 0.5) { 612825: double cur = ButteraugliFuzzyClass(pos); 612825: if (cur < seek) { 612825: pos -= range; 612825: } else { 612825: pos += range; 612825: } 612825: } 612825: return pos; 612825: } 612825: 612825: } === END GCC DUMP === make[2]: *** [guetzli.make:208: obj/Release/butteraugli.o] Error 1 make[1]: *** [Makefile:27: guetzli] Error 2 make[1]: Leaving directory '/build/reproducible-path/guetzli-1.0.1' dh_auto_build: error: make -j12 returned exit code 2 make: *** [debian/rules:7: build] Error 25 dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2 I: copying local configuration E: Failed autobuilding of package I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/607344 and its subdirectories Sun Jan 7 16:12:09 UTC 2024 W: No second build log, what happened?