From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23733 invoked by alias); 13 Mar 2003 05:16:00 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 23686 invoked by uid 71); 13 Mar 2003 05:16:00 -0000 Resent-Date: 13 Mar 2003 05:16:00 -0000 Resent-Message-ID: <20030313051600.23683.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, tilps@hotmail.com Received: (qmail 24085 invoked by uid 48); 13 Mar 2003 05:10:09 -0000 Message-Id: <20030313051009.24083.qmail@sources.redhat.com> Date: Thu, 13 Mar 2003 05:16:00 -0000 From: tilps@hotmail.com Reply-To: tilps@hotmail.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: bootstrap/10053: weak declaration must precede definition errors on OSF 4.0d in libsupc++ X-SW-Source: 2003-03/txt/msg00755.txt.bz2 List-Id: >Number: 10053 >Category: bootstrap >Synopsis: weak declaration must precede definition errors on OSF 4.0d in libsupc++ >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Mar 13 05:16:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: tilps@hotmail.com >Release: 3.4 20030312 >Organization: >Environment: alpha OSF 4.0d bootstraping using gcc 3.3 20021102 >Description: /scratch/gareth/cvsvers/gcc/gccbuild/gcc/xgcc -shared-libgcc -B/scratch/gareth/cvsvers/gcc/gccbuild/gcc/ -nostdinc++ -L/scratch/gareth/cvsvers/gcc/gccbuild/alphaev56-dec-osf4.0d/libstdc++-v3/src -L/scratch/gareth/cvsvers/gcc/gccbuild/alphaev56-dec-osf4.0d/libstdc++-v3/src/.libs -B/home/gareth/alphaev56-dec-osf4.0d/bin/ -B/home/gareth/alphaev56-dec-osf4.0d/lib/ -isystem /home/gareth/alphaev56-dec-osf4.0d/include -isystem /home/gareth/alphaev56-dec-osf4.0d/sys-include -I../../../../gcc/libstdc++-v3/../gcc -I../../../../gcc/libstdc++-v3/../include -I/scratch/gareth/cvsvers/gcc/gccbuild/alphaev56-dec-osf4.0d/libstdc++-v3/include/alphaev56-dec-osf4.0d -I/scratch/gareth/cvsvers/gcc/gccbuild/alphaev56-dec-osf4.0d/libstdc++-v3/include -I../../../../gcc/libstdc++-v3/libsupc++ -O2 -g -O2 -mieee -g -O2 -mieee -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -fdiagnostics-show-location=once -c ../../../../gcc/libstdc++-v3/libsupc++/eh_aux_runtime.cc -DPIC -o eh_aux_runtime.o ../../../../gcc/libstdc++-v3/libsupc++/eh_aux_runtime.cc:42: error: weak declaration of `std::exception::exception(const std::exception&)' must precede definition ../../../../gcc/libstdc++-v3/libsupc++/eh_aux_runtime.cc:42: error: weak declaration of `std::bad_cast::bad_cast(const std::bad_cast&)' must precede definition ../../../../gcc/libstdc++-v3/libsupc++/eh_aux_runtime.cc:52: error: weak declaration of `std::bad_typeid::bad_typeid(const std::bad_typeid&)' must precede definition Occurs duing make bootstrap. gcc mainline did build on this platform 4 months ago (but I havent tried since then - havent had access) The word weak doesnt occur anywhere in the preprocessed file - leading me to believe this is a c++ issue with default copy constructor declaration on this platform. >How-To-Repeat: error found with ../gcc/configure --prefix=/home/gareth --enable-version-specific-runtime-libs --enable-shared --with-stabs make bootstrap &> build.out & >Fix: Wish I knew. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="eh_aux_runtime.ii" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="eh_aux_runtime.ii" IyAxICIuLi8uLi8uLi8uLi9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9laF9hdXhfcnVudGlt ZS5jYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgIi4uLy4uLy4u Ly4uL2djYy9saWJzdGRjKystdjMvbGlic3VwYysrL2VoX2F1eF9ydW50aW1lLmNjIgojIDMxICIu Li8uLi8uLi8uLi9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9laF9hdXhfcnVudGltZS5jYyIK IyAxICIuLi8uLi8uLi8uLi9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy90eXBlaW5mbyIgMQoj IDM4ICIuLi8uLi8uLi8uLi9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy90eXBlaW5mbyIKIyAx ICIuLi8uLi8uLi8uLi9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9leGNlcHRpb24iIDEKIyA0 MCAiLi4vLi4vLi4vLi4vZ2NjL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZXhjZXB0aW9uIgpleHRl cm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZAp7CiMgNTIgIi4uLy4uLy4uLy4uL2djYy9saWJzdGRj KystdjMvbGlic3VwYysrL2V4Y2VwdGlvbiIKICBjbGFzcyBleGNlcHRpb24KICB7CiAgcHVibGlj OgogICAgZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0KICAgIHZpcnR1YWwgfmV4Y2VwdGlvbigpIHRo cm93KCk7CgoKICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCk7CiAg fTsKCgoKICBjbGFzcyBiYWRfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBwdWJs aWM6CiAgICBiYWRfZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0KCgogICAgdmlydHVhbCB+YmFkX2V4 Y2VwdGlvbigpIHRocm93KCk7CiAgfTsKCgogIHR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5k bGVyKSAoKTsKCiAgdHlwZWRlZiB2b2lkICgqdW5leHBlY3RlZF9oYW5kbGVyKSAoKTsKCgogIHRl cm1pbmF0ZV9oYW5kbGVyIHNldF90ZXJtaW5hdGUodGVybWluYXRlX2hhbmRsZXIpIHRocm93KCk7 CgoKICB2b2lkIHRlcm1pbmF0ZSgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgog IHVuZXhwZWN0ZWRfaGFuZGxlciBzZXRfdW5leHBlY3RlZCh1bmV4cGVjdGVkX2hhbmRsZXIpIHRo cm93KCk7CgoKICB2b2lkIHVuZXhwZWN0ZWQoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f KSk7CiMgMTAwICIuLi8uLi8uLi8uLi9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9leGNlcHRp b24iCiAgYm9vbCB1bmNhdWdodF9leGNlcHRpb24oKSB0aHJvdygpOwp9CgpuYW1lc3BhY2UgX19n bnVfY3h4CnsKIyAxMTUgIi4uLy4uLy4uLy4uL2djYy9saWJzdGRjKystdjMvbGlic3VwYysrL2V4 Y2VwdGlvbiIKICB2b2lkIF9fdmVyYm9zZV90ZXJtaW5hdGVfaGFuZGxlciAoKTsKfQoKfQojIDM5 ICIuLi8uLi8uLi8uLi9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy90eXBlaW5mbyIgMgoKZXh0 ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBfX2N4eGFiaXYxCnsKICBjbGFzcyBfX2NsYXNzX3R5cGVf aW5mbzsKfQojIDU1ICIuLi8uLi8uLi8uLi9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy90eXBl aW5mbyIKbmFtZXNwYWNlIHN0ZAp7CgoKCgoKCiAgY2xhc3MgdHlwZV9pbmZvCiAgewogIHB1Ymxp YzoKCgoKCiAgICB2aXJ0dWFsIH50eXBlX2luZm8oKTsKCiAgcHJpdmF0ZToKCiAgICB0eXBlX2lu Zm8mIG9wZXJhdG9yPShjb25zdCB0eXBlX2luZm8mKTsKICAgIHR5cGVfaW5mbyhjb25zdCB0eXBl X2luZm8mKTsKCiAgcHJvdGVjdGVkOgogICAgY29uc3QgY2hhciAqX19uYW1lOwoKICBwcm90ZWN0 ZWQ6CiAgICBleHBsaWNpdCB0eXBlX2luZm8oY29uc3QgY2hhciAqX19uKTogX19uYW1lKF9fbikg eyB9CgogIHB1YmxpYzoKCgoKICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdAogICAgeyByZXR1 cm4gX19uYW1lOyB9CgoKICAgIGJvb2wgYmVmb3JlKGNvbnN0IHR5cGVfaW5mbyYgX19hcmcpIGNv bnN0OwoKCgogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHR5cGVfaW5mbyYgX19hcmcpIGNvbnN0 OwojIDEwNiAiLi4vLi4vLi4vLi4vZ2NjL2xpYnN0ZGMrKy12My9saWJzdXBjKysvdHlwZWluZm8i CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgdHlwZV9pbmZvJiBfX2FyZykgY29uc3QKICAgIHsg cmV0dXJuICFvcGVyYXRvcj09KF9fYXJnKTsgfQoKCiAgcHVibGljOgoKICAgIHZpcnR1YWwgYm9v bCBfX2lzX3BvaW50ZXJfcCgpIGNvbnN0OwoKICAgIHZpcnR1YWwgYm9vbCBfX2lzX2Z1bmN0aW9u X3AoKSBjb25zdDsKCgoKCgoKCiAgICB2aXJ0dWFsIGJvb2wgX19kb19jYXRjaChjb25zdCB0eXBl X2luZm8gKl9fdGhyX3R5cGUsIHZvaWQgKipfX3Rocl9vYmosCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBfX291dGVyKSBjb25zdDsKCgogICAgdmlydHVhbCBib29sIF9fZG9f dXBjYXN0KGNvbnN0IF9fY3h4YWJpdjE6Ol9fY2xhc3NfdHlwZV9pbmZvICpfX3RhcmdldCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqX19vYmpfcHRyKSBjb25zdDsKICB9OwoK CgoKCgogIGNsYXNzIGJhZF9jYXN0IDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAg ICBiYWRfY2FzdCgpIHRocm93KCkgeyB9CgoKICAgIHZpcnR1YWwgfmJhZF9jYXN0KCkgdGhyb3co KTsKICB9OwoKCiAgY2xhc3MgYmFkX3R5cGVpZCA6IHB1YmxpYyBleGNlcHRpb24KICB7CiAgcHVi bGljOgogICAgYmFkX3R5cGVpZCAoKSB0aHJvdygpIHsgfQoKCiAgICB2aXJ0dWFsIH5iYWRfdHlw ZWlkKCkgdGhyb3coKTsKICB9Owp9Cgp9CiMgMzIgIi4uLy4uLy4uLy4uL2djYy9saWJzdGRjKyst djMvbGlic3VwYysrL2VoX2F1eF9ydW50aW1lLmNjIiAyCgojIDEgIi9zY3JhdGNoL2dhcmV0aC9j dnN2ZXJzL2djYy9nY2NidWlsZC9hbHBoYWV2NTYtZGVjLW9zZjQuMGQvbGlic3RkYysrLXYzL2lu Y2x1ZGUvY3N0ZGxpYiIgMQojIDQ4ICIvc2NyYXRjaC9nYXJldGgvY3ZzdmVycy9nY2MvZ2NjYnVp bGQvYWxwaGFldjU2LWRlYy1vc2Y0LjBkL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NzdGRsaWIiIDMK CiMgMSAiL3NjcmF0Y2gvZ2FyZXRoL2N2c3ZlcnMvZ2NjL2djY2J1aWxkL2FscGhhZXY1Ni1kZWMt b3NmNC4wZC9saWJzdGRjKystdjMvaW5jbHVkZS9hbHBoYWV2NTYtZGVjLW9zZjQuMGQvYml0cy9j Kytjb25maWcuaCIgMSAzCiMgMzUgIi9zY3JhdGNoL2dhcmV0aC9jdnN2ZXJzL2djYy9nY2NidWls ZC9hbHBoYWV2NTYtZGVjLW9zZjQuMGQvbGlic3RkYysrLXYzL2luY2x1ZGUvYWxwaGFldjU2LWRl Yy1vc2Y0LjBkL2JpdHMvYysrY29uZmlnLmgiIDMKIyAxICIvc2NyYXRjaC9nYXJldGgvY3ZzdmVy cy9nY2MvZ2NjYnVpbGQvYWxwaGFldjU2LWRlYy1vc2Y0LjBkL2xpYnN0ZGMrKy12My9pbmNsdWRl L2FscGhhZXY1Ni1kZWMtb3NmNC4wZC9iaXRzL29zX2RlZmluZXMuaCIgMSAzCiMgMzYgIi9zY3Jh dGNoL2dhcmV0aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9hbHBoYWV2NTYtZGVjLW9zZjQuMGQvbGli c3RkYysrLXYzL2luY2x1ZGUvYWxwaGFldjU2LWRlYy1vc2Y0LjBkL2JpdHMvYysrY29uZmlnLmgi IDIgMwojIDUwICIvc2NyYXRjaC9nYXJldGgvY3ZzdmVycy9nY2MvZ2NjYnVpbGQvYWxwaGFldjU2 LWRlYy1vc2Y0LjBkL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NzdGRsaWIiIDIgMwojIDEgIi9zY3Jh dGNoL2dhcmV0aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9hbHBoYWV2NTYtZGVjLW9zZjQuMGQvbGli c3RkYysrLXYzL2luY2x1ZGUvY3N0ZGRlZiIgMSAzCiMgNDcgIi9zY3JhdGNoL2dhcmV0aC9jdnN2 ZXJzL2djYy9nY2NidWlsZC9hbHBoYWV2NTYtZGVjLW9zZjQuMGQvbGlic3RkYysrLXYzL2luY2x1 ZGUvY3N0ZGRlZiIgMwoKIyAxICIvc2NyYXRjaC9nYXJldGgvY3ZzdmVycy9nY2MvZ2NjYnVpbGQv Z2NjL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTUxICIvc2NyYXRjaC9nYXJldGgvY3ZzdmVy cy9nY2MvZ2NjYnVpbGQvZ2NjL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50 IHB0cmRpZmZfdDsKIyAyMTMgIi9zY3JhdGNoL2dhcmV0aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9n Y2MvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgc2l6ZV90 OwojIDQ5ICIvc2NyYXRjaC9nYXJldGgvY3ZzdmVycy9nY2MvZ2NjYnVpbGQvYWxwaGFldjU2LWRl Yy1vc2Y0LjBkL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NzdGRkZWYiIDIgMwoKbmFtZXNwYWNlIHN0 ZAp7CiAgdXNpbmcgOjpwdHJkaWZmX3Q7CiAgdXNpbmcgOjpzaXplX3Q7Cn0KIyA1MSAiL3NjcmF0 Y2gvZ2FyZXRoL2N2c3ZlcnMvZ2NjL2djY2J1aWxkL2FscGhhZXY1Ni1kZWMtb3NmNC4wZC9saWJz dGRjKystdjMvaW5jbHVkZS9jc3RkbGliIiAyIDMKCiMgMSAiL3NjcmF0Y2gvZ2FyZXRoL2N2c3Zl cnMvZ2NjL2djY2J1aWxkL2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMgNAojIDYxICIvc2NyYXRj aC9nYXJldGgvY3ZzdmVycy9nY2MvZ2NjYnVpbGQvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNApl eHRlcm4gIkMiIHsKCgojIDEgIi91c3IvaW5jbHVkZS9zdGFuZGFyZHMuaCIgMSAzIDQKIyA2NSAi L3NjcmF0Y2gvZ2FyZXRoL2N2c3ZlcnMvZ2NjL2djY2J1aWxkL2djYy9pbmNsdWRlL3N0ZGxpYi5o IiAyIDMgNAojIDEzMiAiL3NjcmF0Y2gvZ2FyZXRoL2N2c3ZlcnMvZ2NjL2djY2J1aWxkL2djYy9p bmNsdWRlL3N0ZGxpYi5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgZGl2X3QgewogICAgICAgIGludCBx dW90OwogICAgICAgIGludCByZW07IH0gZGl2X3Q7Cgp0eXBlZGVmIHN0cnVjdCBsZGl2X3Qgewog ICAgICAgIGxvbmcgaW50IHF1b3Q7CiAgICAgICAgbG9uZyBpbnQgcmVtOyB9IGxkaXZfdDsKIyAx NTUgIi9zY3JhdGNoL2dhcmV0aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9nY2MvaW5jbHVkZS9zdGRs aWIuaCIgMyA0CmV4dGVybiBpbnQgX19nZXRtYmN1cm1heCAodm9pZCk7CgoKCgpleHRlcm4gaW50 IG1ibGVuIChjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdj aGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gaW50IG1idG93YyAod2NoYXJf dCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNoYXIg KiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOwpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqLCB3 Y2hhcl90KTsKCgpleHRlcm4gaW50IHJwbWF0Y2ggKGNvbnN0IGNoYXIgKik7CgpleHRlcm4gdm9p ZCAqdmFsbG9jIChzaXplX3QgKTsKCgpleHRlcm4gZG91YmxlIGF0b2YgKGNvbnN0IGNoYXIgKik7 CmV4dGVybiBpbnQgYXRvaSAoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKGNv bnN0IGNoYXIgKik7CmV4dGVybiBkb3VibGUgc3RydG9kIChjb25zdCBjaGFyICosIGNoYXIgKiop OwpleHRlcm4gbG9uZyBpbnQgc3RydG9sIChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCApOwpl eHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAoY29uc3QgY2hhciAqLCBjaGFyICoqLCBp bnQgKTsKZXh0ZXJuIGludCByYW5kICh2b2lkKTsKZXh0ZXJuIHZvaWQgc3JhbmQgKHVuc2lnbmVk IGludCApOwpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgLCBzaXplX3QgKTsKZXh0ZXJuIHZv aWQgZnJlZSAodm9pZCAqKTsKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90ICk7CmV4dGVybiB2 b2lkICpyZWFsbG9jICh2b2lkICosIHNpemVfdCApOwojIDIwMCAiL3NjcmF0Y2gvZ2FyZXRoL2N2 c3ZlcnMvZ2NjL2djY2J1aWxkL2djYy9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGxvbmcg YTY0bCAoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKiBsNjRhIChsb25nKTsKZXh0ZXJuIGlu dCB0dHlzbG90ICh2b2lkKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKnB0c25hbWUgKGludCk7CiMgMjI0 ICIvc2NyYXRjaC9nYXJldGgvY3ZzdmVycy9nY2MvZ2NjYnVpbGQvZ2NjL2luY2x1ZGUvc3RkbGli LmgiIDMgNApleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CmV4dGVybiBpbnQgYXRleGl0ICh2b2lk ICgqKSh2b2lkKSk7CmV4dGVybiB2b2lkIGV4aXQgKGludCApOwpleHRlcm4gY2hhciAqZ2V0ZW52 IChjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHN5c3RlbSAoY29uc3QgY2hhciAqKTsKZXh0ZXJu IHZvaWQgKmJzZWFyY2ggKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QgLCBzaXpl X3QgLCBpbnQoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKZXh0ZXJuIHZvaWQgcXNv cnQgKHZvaWQgKiwgc2l6ZV90ICwgc2l6ZV90ICxpbnQoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2 b2lkICopKTsKZXh0ZXJuIGludCBhYnMgKGludCApOwpleHRlcm4gc3RydWN0IGRpdl90IGRpdiAo aW50ICwgaW50ICk7CmV4dGVybiBsb25nIGludCBsYWJzIChsb25nIGludCApOwpleHRlcm4gc3Ry dWN0IGxkaXZfdCBsZGl2IChsb25nIGludCAsIGxvbmcgaW50ICk7CiMgMjUyICIvc2NyYXRjaC9n YXJldGgvY3ZzdmVycy9nY2MvZ2NjYnVpbGQvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRl cm4gaW50IF9QcmFuZF9yICh1bnNpZ25lZCBpbnQgKik7CiMgMjg2ICIvc2NyYXRjaC9nYXJldGgv Y3ZzdmVycy9nY2MvZ2NjYnVpbGQvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gZG91 YmxlIGRyYW5kNDggKHZvaWQpOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0 IFtdKTsKZXh0ZXJuIGxvbmcganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgW10pOwpleHRlcm4gdm9p ZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBbXSk7CmV4dGVybiBsb25nIGxyYW5kNDggKHZvaWQp OwpleHRlcm4gbG9uZyBtcmFuZDQ4ICh2b2lkKTsKZXh0ZXJuIGxvbmcgbnJhbmQ0OCAodW5zaWdu ZWQgc2hvcnQgW10pOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgKnNlZWQ0OCAodW5zaWduZWQgc2hv cnQgW10pOwpleHRlcm4gdm9pZCBzcmFuZDQ4IChsb25nKTsKZXh0ZXJuIGludCBwdXRlbnYgKGNv bnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHNldGtleSAoY29uc3QgY2hhciAqKTsKIyAzMjMgIi9z Y3JhdGNoL2dhcmV0aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9nY2MvaW5jbHVkZS9zdGRsaWIuaCIg MyA0CmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCwgY2hhciAqLCBpbnQpOwpl eHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKik7CmV4dGVybiBpbnQgZ3JhbnRwdCAoaW50KTsK ZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKiosIGNoYXIgKmNvbnN0ICosIGNoYXIgKiopOwoK CgoKZXh0ZXJuIGludCByYW5kb20gKHZvaWQpOwpleHRlcm4gaW50IHNyYW5kb20gKHVuc2lnbmVk IGludCk7CgpleHRlcm4gY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKZXh0 ZXJuIGludCB1bmxvY2twdCAoaW50KTsKIyAzNDcgIi9zY3JhdGNoL2dhcmV0aC9jdnN2ZXJzL2dj Yy9nY2NidWlsZC9nY2MvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiMgMSAiLi4vLi4vLi4vLi4vZ2Nj L2luY2x1ZGUvZ2V0b3B0LmgiIDEgMyA0CiMgMjcgIi4uLy4uLy4uLy4uL2djYy9pbmNsdWRlL2dl dG9wdC5oIiAzIDQKZXh0ZXJuICJDIiB7CiMgMzYgIi4uLy4uLy4uLy4uL2djYy9pbmNsdWRlL2dl dG9wdC5oIiAzIDQKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKIyA1MCAiLi4vLi4vLi4vLi4vZ2NjL2lu Y2x1ZGUvZ2V0b3B0LmgiIDMgNApleHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0 ZXJyOwoKCgpleHRlcm4gaW50IG9wdG9wdDsKIyA4MiAiLi4vLi4vLi4vLi4vZ2NjL2luY2x1ZGUv Z2V0b3B0LmgiIDMgNApzdHJ1Y3Qgb3B0aW9uCnsKCiAgY29uc3QgY2hhciAqbmFtZTsKCgoKCgog IGludCBoYXNfYXJnOwogIGludCAqZmxhZzsKICBpbnQgdmFsOwp9OwojIDEyMSAiLi4vLi4vLi4v Li4vZ2NjL2luY2x1ZGUvZ2V0b3B0LmgiIDMgNApleHRlcm4gaW50IGdldG9wdF9sb25nIChpbnQg YXJnYywgY2hhciAqY29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKnNob3J0b3B0cywKICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqbG9uZ29wdHMsIGludCAqbG9uZ2lu ZCk7CmV4dGVybiBpbnQgZ2V0b3B0X2xvbmdfb25seSAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICph cmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0b3B0cywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpsb25nb3B0 cywgaW50ICpsb25naW5kKTsKCgpleHRlcm4gaW50IF9nZXRvcHRfaW50ZXJuYWwgKGludCBhcmdj LCBjaGFyICpjb25zdCAqYXJndiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpzaG9ydG9wdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IG9wdGlvbiAqbG9uZ29wdHMsIGludCAqbG9uZ2luZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgbG9uZ19vbmx5KTsKIyAxNDEgIi4uLy4uLy4uLy4uL2djYy9pbmNsdWRlL2dldG9w dC5oIiAzIDQKfQojIDM0OCAiL3NjcmF0Y2gvZ2FyZXRoL2N2c3ZlcnMvZ2NjL2djY2J1aWxkL2dj Yy9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKZXh0ZXJuIGludCBjbGVhcmVudiAoKTsKZXh0ZXJu IGNoYXIgKmdldHBhc3MgKGNvbnN0IGNoYXIgKik7CgoKCgpleHRlcm4gY2hhciAqbWt0ZW1wIChj aGFyICopOwpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKik7CiMgMzY4ICIvc2NyYXRjaC9nYXJl dGgvY3ZzdmVycy9nY2MvZ2NjYnVpbGQvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDMgNAojIDEgIi9z Y3JhdGNoL2dhcmV0aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9nY2MvaW5jbHVkZS9zeXMvdHlwZXMu aCIgMSAzIDQKIyAxNDEgIi9zY3JhdGNoL2dhcmV0aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9nY2Mv aW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgaW50IHdjdHlwZV90OwoK CgoKdHlwZWRlZiBsb25nIGZwb3NfdDsKCgoKCnR5cGVkZWYgaW50IHRpbWVfdDsKCgoKCnR5cGVk ZWYgaW50IGNsb2NrX3Q7CiMgMTc0ICIvc2NyYXRjaC9nYXJldGgvY3ZzdmVycy9nY2MvZ2NjYnVp bGQvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgc3NpemVfdDsKCgoK Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWNoYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1 c2hvcnRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF90Owp0eXBlZGVmIHVuc2lnbmVkIGxv bmcgdWxvbmdfdDsKdHlwZWRlZiB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyIHZ1Y2hhcl90Owp0eXBl ZGVmIHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IHZ1c2hvcnRfdDsKdHlwZWRlZiB2b2xhdGlsZSB1 bnNpZ25lZCBpbnQgdnVpbnRfdDsKdHlwZWRlZiB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIHZ1bG9u Z190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgeyBsb25nIHJbMV07IH0gKnBoeXNhZHJfdDsKCgoKCnR5 cGVkZWYgc3RydWN0IGxhYmVsX3QgewogICAgICAgIGxvbmcgdmFsWzEwXTsKfSBsYWJlbF90Owoj IDI0MyAiL3NjcmF0Y2gvZ2FyZXRoL2N2c3ZlcnMvZ2NjL2djY2J1aWxkL2djYy9pbmNsdWRlL3N5 cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQgbGV2ZWxfdDsKdHlwZWRlZiBpbnQgZGFkZHJfdDsK dHlwZWRlZiBjaGFyICogY2FkZHJfdDsKdHlwZWRlZiBsb25nICogcWFkZHJfdDsKdHlwZWRlZiBj aGFyICogYWRkcl90Owp0eXBlZGVmIHVpbnRfdCBpbm9fdDsKdHlwZWRlZiBzaG9ydCBjbnRfdDsK dHlwZWRlZiBpbnQgZGV2X3Q7CnR5cGVkZWYgaW50IGNoYW5fdDsKIyAzMTkgIi9zY3JhdGNoL2dh cmV0aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5 cGVkZWYgbG9uZyBvZmZfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcmxpbV90Owp0eXBlZGVm IGludCBwYWRkcl90Owp0eXBlZGVmIHVzaG9ydF90IG5saW5rX3Q7CgoKCnR5cGVkZWYgaW50IGtl eV90OwoKCgoKdHlwZWRlZiB1aW50X3QgbW9kZV90OwoKCgoKCgoKdHlwZWRlZiB1aW50X3QgdWlk X3Q7CgoKCgoKdHlwZWRlZiB1aW50X3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIHZvaWQgKiBtaWRfdDsK CgoKCnR5cGVkZWYgaW50IHBpZF90OwoKCnR5cGVkZWYgY2hhciBzbGFiX3RbMTJdOwoKdHlwZWRl ZiB1bG9uZ190IHNobWF0dF90Owp0eXBlZGVmIHVsb25nX3QgbXNncW51bV90Owp0eXBlZGVmIHVs b25nX3QgbXNnbGVuX3Q7CgoKCiAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwoK CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBzaWdzZXRfdDsKIyAzOTAgIi9zY3JhdGNoL2dhcmV0 aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVk ZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3QgewogICAgbG9uZyBfX3ZhbGlkOwogICAgY2hhciog X19uYW1lOwogICAgdW5zaWduZWQgbG9uZyBfX2FyZzsKICAgIHVuc2lnbmVkIGxvbmcgX19yZXNl cnZlZFsxOV07CiAgICB9IHB0aHJlYWRfYXR0cl90OwoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFk X211dGV4YXR0cl90IHsKICAgIGxvbmcgX192YWxpZDsKICAgIHVuc2lnbmVkIGxvbmcgX19yZXNl cnZlZFsxNV07CiAgICB9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfX3B0 aHJlYWRfY29uZGF0dHJfdCB7CiAgICBsb25nIF9fdmFsaWQ7CiAgICB1bnNpZ25lZCBsb25nIF9f cmVzZXJ2ZWRbMTNdOwogICAgfSBwdGhyZWFkX2NvbmRhdHRyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBf X3B0aHJlYWRfcndsb2NrYXR0cl90IHsKICAgIGxvbmcgX192YWxpZDsKICAgIHVuc2lnbmVkIGxv bmcgX19yZXNlcnZlZFsxNV07CiAgICB9IHB0aHJlYWRfcndsb2NrYXR0cl90OwojIDQ0MCAiL3Nj cmF0Y2gvZ2FyZXRoL2N2c3ZlcnMvZ2NjL2djY2J1aWxkL2djYy9pbmNsdWRlL3N5cy90eXBlcy5o IiAzIDQKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX3QgewogICAgdm9pZCogX19yZXNlcnZlZDE7 CiAgICB2b2lkKiBfX3Jlc2VydmVkMjsKICAgIHVuc2lnbmVkIHNob3J0IF9fc2l6ZTsKICAgIHVu c2lnbmVkIGNoYXIgX192ZXJzaW9uOwogICAgdW5zaWduZWQgY2hhciBfX3Jlc2VydmVkMzsKICAg IHVuc2lnbmVkIGNoYXIgX19leHRlcm5hbDsKICAgIHVuc2lnbmVkIGNoYXIgX19yZXNlcnZlZDRb Ml07CiAgICB1bnNpZ25lZCBjaGFyIF9fY3JlYXRvcjsKICAgIHVuc2lnbmVkIGxvbmcgX19zZXF1 ZW5jZTsKICAgIHVuc2lnbmVkIGxvbmcgX19yZXNlcnZlZDVbMl07CiAgICB2b2lkKiBfX3Blcl9r dF9hcmVhOwogICAgdm9pZCogX19zdGFja19iYXNlOwogICAgdm9pZCogX19zdGFja19yZXNlcnZl OwogICAgdm9pZCogX19zdGFja195ZWxsb3c7CiAgICB2b2lkKiBfX3N0YWNrX2d1YXJkOwogICAg dW5zaWduZWQgbG9uZyBfX3N0YWNrX3NpemU7CiAgICB2b2lkKiogX190c2RfdmFsdWVzOwogICAg dW5zaWduZWQgbG9uZyBfX3RzZF9jb3VudDsKICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkNjsK ICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkNzsKICAgIHVuc2lnbmVkIGludCBfX3RocmVhZF9m bGFnczsKICAgIGludCBfX3RoZF9lcnJubzsKICAgIHZvaWQqIF9fc3RhY2tfaGl3YXRlcjsKICAg IH0gKnB0aHJlYWRfdCwgcHRocmVhZFRlYl90OwoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX211 dGV4X3QgewogICAgdW5zaWduZWQgaW50IF9fbG9jazsKICAgIHVuc2lnbmVkIGludCBfX3ZhbGlk OwogICAgY2hhciogX19uYW1lOwogICAgdW5zaWduZWQgaW50IF9fYXJnOwogICAgdW5zaWduZWQg aW50IF9fZGVwdGg7CiAgICB1bnNpZ25lZCBsb25nIF9fc2VxdWVuY2U7CiAgICB1bnNpZ25lZCBs b25nIF9fb3duZXI7CiAgICB2b2lkKiBfX2Jsb2NrOwogICAgfSBwdGhyZWFkX211dGV4X3Q7Cgp0 eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfY29uZF90IHsKICAgIHVuc2lnbmVkIGludCBfX3N0YXRl OwogICAgdW5zaWduZWQgaW50IF9fdmFsaWQ7CiAgICBjaGFyKiBfX25hbWU7CiAgICB1bnNpZ25l ZCBpbnQgX19hcmc7CiAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZDE7CiAgICB1bnNpZ25lZCBs b25nIF9fc2VxdWVuY2U7CiAgICB2b2lkKiBfX2Jsb2NrOwogICAgfSBwdGhyZWFkX2NvbmRfdDsK CnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9yd2xvY2tfdCB7CiAgICB1bnNpZ25lZCBpbnQgX192 YWxpZDsKICAgIHVuc2lnbmVkIGludCBfX2ZsYWdzOwogICAgY2hhciogX19uYW1lOwogICAgdW5z aWduZWQgaW50IF9fYXJnOwogICAgdW5zaWduZWQgaW50IF9fcmVhZGVyczsKICAgIHVuc2lnbmVk IGludCBfX3J3YWl0czsKICAgIHVuc2lnbmVkIGludCBfX3d3YWl0czsKICAgIHVuc2lnbmVkIGxv bmcgX19zZXF1ZW5jZTsKICAgIHVuc2lnbmVkIGxvbmcgX193cmlkOwogICAgdm9pZCogX19ibG9j azsKICAgIHVuc2lnbmVkIGxvbmcgX19yZXNlcnZlZDE7CiAgICB9IHB0aHJlYWRfcndsb2NrX3Q7 Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKdHlwZWRlZiBzdHJ1Y3QgX19w dGhyZWFkX29uY2VfdCB7CiAgICBsb25nIF9fc3RhdGU7CiAgICBsb25nIF9fcmVzZXJ2ZWRbMTBd OwogICAgfSBwdGhyZWFkX29uY2VfdDsKIyA1MTYgIi9zY3JhdGNoL2dhcmV0aC9jdnN2ZXJzL2dj Yy9nY2NidWlsZC9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZyB0aW1l cl90OwojIDUzNiAiL3NjcmF0Y2gvZ2FyZXRoL2N2c3ZlcnMvZ2NjL2djY2J1aWxkL2djYy9pbmNs dWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB2b2lkICgqc2lnX3QpIChpbnQsdm9pZCAoKiko aW50KSk7CiMgNTQ5ICIvc2NyYXRjaC9nYXJldGgvY3ZzdmVycy9nY2MvZ2NjYnVpbGQvZ2NjL2lu Y2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHBpZF90IGlkX3Q7CgoKCgp0eXBlZGVmIHVu c2lnbmVkIGludCB1c2Vjb25kc190OwojIDU2MyAiL3NjcmF0Y2gvZ2FyZXRoL2N2c3ZlcnMvZ2Nj L2djY2J1aWxkL2djYy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1aW50X3QgbWFq b3JfdDsKdHlwZWRlZiB1aW50X3QgbWlub3JfdDsKdHlwZWRlZiB1aW50X3QgZGV2c190Owp0eXBl ZGVmIHVpbnRfdCB1bml0X3Q7CiMgNTg2ICIvc2NyYXRjaC9nYXJldGgvY3ZzdmVycy9nY2MvZ2Nj YnVpbGQvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9tYWNo L21hY2hpbmUvdm1fdHlwZXMuaCIgMSAzIDQKIyA3MyAiL3Vzci9pbmNsdWRlL21hY2gvbWFjaGlu ZS92bV90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHZtX29mZnNldF90Owp0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgdm1fc2l6ZV90OwojIDU4NyAiL3NjcmF0Y2gvZ2FyZXRoL2N2c3Zl cnMvZ2NjL2djY2J1aWxkL2djYy9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCgoKdHlwZWRl ZiB1Y2hhcl90IHVjaGFyOwp0eXBlZGVmIHVzaG9ydF90IHVzaG9ydDsKdHlwZWRlZiB1aW50X3Qg dWludDsKdHlwZWRlZiB1bG9uZ190IHVsb25nOwoKdHlwZWRlZiBwaHlzYWRyX3QgcGh5c2FkcjsK CgoKdHlwZWRlZiB1Y2hhcl90IHVfY2hhcjsKdHlwZWRlZiB1c2hvcnRfdCB1X3Nob3J0Owp0eXBl ZGVmIHVpbnRfdCB1X2ludDsKdHlwZWRlZiB1bG9uZ190IHVfbG9uZzsKdHlwZWRlZiB2dWNoYXJf dCB2dV9jaGFyOwp0eXBlZGVmIHZ1c2hvcnRfdCB2dV9zaG9ydDsKdHlwZWRlZiB2dWludF90IHZ1 X2ludDsKdHlwZWRlZiB2dWxvbmdfdCB2dV9sb25nOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9xdWFk IHsgaW50IHZhbFsyXTsgfSBxdWFkOwoKCnR5cGVkZWYgbG9uZyBzd2Jsa190Owp0eXBlZGVmIHVf bG9uZyBmaXhwdF90OwoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMgNAojIDQ3 ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKZXh0ZXJuICJDIiB7CiMgMTQ2ICIvdXNy L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKdHlwZWRlZiBpbnQgZmRfbWFzazsKIyAxNzAgIi91 c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBmZF9zZXQgewogICAg ICAgIGZkX21hc2sgZmRzX2JpdHNbKCgoNDA5NikrKCgoc2l6ZW9mKGZkX21hc2spICogOCkpLTEp KS8oKHNpemVvZihmZF9tYXNrKSAqIDgpKSldOwp9IGZkX3NldDsKIyAyMjMgIi91c3IvaW5jbHVk ZS9zeXMvc2VsZWN0LmgiIDMgNApleHRlcm4gdm9pZCBiemVybyAoY2hhciAqLCBpbnQpOwoKCgoK CgpzdHJ1Y3QgdGltZXZhbDsKaW50IHNlbGVjdCAoaW50LCBmZF9zZXQgKiwgZmRfc2V0ICosIGZk X3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKCgoKCgp9CiMgNjIwICIvc2NyYXRjaC9nYXJldGgv Y3ZzdmVycy9nY2MvZ2NjYnVpbGQvZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCgp0 eXBlZGVmIHVuc2lnbmVkIGNoYXIgc2FfZmFtaWx5X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQg aW5fYWRkcl90OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbl9wb3J0X3Q7CiMgMzY5ICIvc2Ny YXRjaC9nYXJldGgvY3ZzdmVycy9nY2MvZ2NjYnVpbGQvZ2NjL2luY2x1ZGUvc3RkbGliLmgiIDIg MyA0CmNoYXIgKmVjdnQgKGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpjaGFyICpmY3Z0IChk b3VibGUsIGludCwgaW50ICosIGludCAqKTsKY2hhciAqZ2N2dCAoZG91YmxlLCBpbnQsIGNoYXIg Kik7CgoKCgoKCgp9CiMgNTMgIi9zY3JhdGNoL2dhcmV0aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9h bHBoYWV2NTYtZGVjLW9zZjQuMGQvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0ZGxpYiIgMiAzCiMg ODQgIi9zY3JhdGNoL2dhcmV0aC9jdnN2ZXJzL2djYy9nY2NidWlsZC9hbHBoYWV2NTYtZGVjLW9z ZjQuMGQvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0ZGxpYiIgMwpuYW1lc3BhY2Ugc3RkCnsKICB1 c2luZyA6OmRpdl90OwogIHVzaW5nIDo6bGRpdl90OwoKICB1c2luZyA6OmFib3J0OwogIHVzaW5n IDo6YWJzOwogIHVzaW5nIDo6YXRleGl0OwogIHVzaW5nIDo6YXRvZjsKICB1c2luZyA6OmF0b2k7 CiAgdXNpbmcgOjphdG9sOwogIHVzaW5nIDo6YnNlYXJjaDsKICB1c2luZyA6OmNhbGxvYzsKICB1 c2luZyA6OmRpdjsKICB1c2luZyA6OmV4aXQ7CiAgdXNpbmcgOjpmcmVlOwogIHVzaW5nIDo6Z2V0 ZW52OwogIHVzaW5nIDo6bGFiczsKICB1c2luZyA6OmxkaXY7CiAgdXNpbmcgOjptYWxsb2M7CiAg dXNpbmcgOjptYmxlbjsKICB1c2luZyA6Om1ic3Rvd2NzOwogIHVzaW5nIDo6bWJ0b3djOwogIHVz aW5nIDo6cXNvcnQ7CiAgdXNpbmcgOjpyYW5kOwogIHVzaW5nIDo6cmVhbGxvYzsKICB1c2luZyA6 OnNyYW5kOwogIHVzaW5nIDo6c3RydG9kOwogIHVzaW5nIDo6c3RydG9sOwogIHVzaW5nIDo6c3Ry dG91bDsKICB1c2luZyA6OnN5c3RlbTsKICB1c2luZyA6Ondjc3RvbWJzOwogIHVzaW5nIDo6d2N0 b21iOwoKICBpbmxpbmUgbG9uZwogIGFicyhsb25nIF9faSkgeyByZXR1cm4gbGFicyhfX2kpOyB9 CgogIGlubGluZSBsZGl2X3QKICBkaXYobG9uZyBfX2ksIGxvbmcgX19qKSB7IHJldHVybiBsZGl2 KF9faSwgX19qKTsgfQp9CiMgMzQgIi4uLy4uLy4uLy4uL2djYy9saWJzdGRjKystdjMvbGlic3Vw YysrL2VoX2F1eF9ydW50aW1lLmNjIiAyCiMgMSAiLi4vLi4vLi4vLi4vZ2NjL2xpYnN0ZGMrKy12 My9saWJzdXBjKysvdW53aW5kLWN4eC5oIiAxCiMgNDEgIi4uLy4uLy4uLy4uL2djYy9saWJzdGRj KystdjMvbGlic3VwYysrL3Vud2luZC1jeHguaCIKIyAxICIuLi8uLi8uLi8uLi9nY2MvZ2NjL3Vu d2luZC5oIiAxCiMgMzIgIi4uLy4uLy4uLy4uL2djYy9nY2MvdW53aW5kLmgiCmV4dGVybiAiQyIg ewoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIF9VbndpbmRfV29yZCBfX2F0dHJpYnV0ZV9fKChfX21v ZGVfXyhfX3dvcmRfXykpKTsKdHlwZWRlZiBzaWduZWQgX1Vud2luZF9Td29yZCBfX2F0dHJpYnV0 ZV9fKChfX21vZGVfXyhfX3dvcmRfXykpKTsKCgoKdHlwZWRlZiB1bnNpZ25lZCBfVW53aW5kX1B0 ciBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX3BvaW50ZXJfXykpKTsKCnR5cGVkZWYgdW5zaWdu ZWQgX1Vud2luZF9JbnRlcm5hbF9QdHIgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19wb2ludGVy X18pKSk7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcyBfX2F0 dHJpYnV0ZV9fKChfX21vZGVfXyhfX0RJX18pKSk7CgoKCnR5cGVkZWYgZW51bQp7CiAgX1VSQ19O T19SRUFTT04gPSAwLAogIF9VUkNfRk9SRUlHTl9FWENFUFRJT05fQ0FVR0hUID0gMSwKICBfVVJD X0ZBVEFMX1BIQVNFMl9FUlJPUiA9IDIsCiAgX1VSQ19GQVRBTF9QSEFTRTFfRVJST1IgPSAzLAog IF9VUkNfTk9STUFMX1NUT1AgPSA0LAogIF9VUkNfRU5EX09GX1NUQUNLID0gNSwKICBfVVJDX0hB TkRMRVJfRk9VTkQgPSA2LAogIF9VUkNfSU5TVEFMTF9DT05URVhUID0gNywKICBfVVJDX0NPTlRJ TlVFX1VOV0lORCA9IDgKfSBfVW53aW5kX1JlYXNvbl9Db2RlOwojIDc2ICIuLi8uLi8uLi8uLi9n Y2MvZ2NjL3Vud2luZC5oIgpzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb247Cgp0eXBlZGVmIHZvaWQg KCpfVW53aW5kX0V4Y2VwdGlvbl9DbGVhbnVwX0ZuKSAoX1Vud2luZF9SZWFzb25fQ29kZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfVW53aW5k X0V4Y2VwdGlvbiAqKTsKCnN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbgp7CiAgX1Vud2luZF9FeGNl cHRpb25fQ2xhc3MgZXhjZXB0aW9uX2NsYXNzOwogIF9VbndpbmRfRXhjZXB0aW9uX0NsZWFudXBf Rm4gZXhjZXB0aW9uX2NsZWFudXA7CiAgX1Vud2luZF9Xb3JkIHByaXZhdGVfMTsKICBfVW53aW5k X1dvcmQgcHJpdmF0ZV8yOwoKCgoKfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXykpOwoKCgoK dHlwZWRlZiBpbnQgX1Vud2luZF9BY3Rpb247CiMgMTA4ICIuLi8uLi8uLi8uLi9nY2MvZ2NjL3Vu d2luZC5oIgpzdHJ1Y3QgX1Vud2luZF9Db250ZXh0OwoKCmV4dGVybiBfVW53aW5kX1JlYXNvbl9D b2RlIF9VbndpbmRfUmFpc2VFeGNlcHRpb24gKHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqKTsK CgoKdHlwZWRlZiBfVW53aW5kX1JlYXNvbl9Db2RlICgqX1Vud2luZF9TdG9wX0ZuKQogICAgIChp bnQsIF9VbndpbmRfQWN0aW9uLCBfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcywKICAgICAgc3RydWN0 IF9VbndpbmRfRXhjZXB0aW9uICosIHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwgdm9pZCAqKTsK CmV4dGVybiBfVW53aW5kX1JlYXNvbl9Db2RlIF9VbndpbmRfRm9yY2VkVW53aW5kIChzdHJ1Y3Qg X1Vud2luZF9FeGNlcHRpb24gKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF9VbndpbmRfU3RvcF9GbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKik7CgoKZXh0ZXJuIHZvaWQgX1Vud2luZF9EZWxl dGVFeGNlcHRpb24gKHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqKTsKCgoKZXh0ZXJuIHZvaWQg X1Vud2luZF9SZXN1bWUgKHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqKTsKCgoKCgoKZXh0ZXJu IF9VbndpbmRfV29yZCBfVW53aW5kX0dldEdSIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICosIGlu dCk7CmV4dGVybiB2b2lkIF9VbndpbmRfU2V0R1IgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwg aW50LCBfVW53aW5kX1dvcmQpOwoKZXh0ZXJuIF9VbndpbmRfUHRyIF9VbndpbmRfR2V0SVAgKHN0 cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CmV4dGVybiB2b2lkIF9VbndpbmRfU2V0SVAgKHN0cnVj dCBfVW53aW5kX0NvbnRleHQgKiwgX1Vud2luZF9QdHIpOwoKZXh0ZXJuIHZvaWQgKl9VbndpbmRf R2V0TGFuZ3VhZ2VTcGVjaWZpY0RhdGEgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CgpleHRl cm4gX1Vud2luZF9QdHIgX1Vud2luZF9HZXRSZWdpb25TdGFydCAoc3RydWN0IF9VbndpbmRfQ29u dGV4dCAqKTsKIyAxNjAgIi4uLy4uLy4uLy4uL2djYy9nY2MvdW53aW5kLmgiCnR5cGVkZWYgX1Vu d2luZF9SZWFzb25fQ29kZSAoKl9VbndpbmRfUGVyc29uYWxpdHlfRm4pCiAgICAgKGludCwgX1Vu d2luZF9BY3Rpb24sIF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzLAogICAgICBzdHJ1Y3QgX1Vud2lu ZF9FeGNlcHRpb24gKiwgc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKCgoKCnN0cnVjdCBTakxq X0Z1bmN0aW9uX0NvbnRleHQ7CmV4dGVybiB2b2lkIF9VbndpbmRfU2pMal9SZWdpc3RlciAoc3Ry dWN0IFNqTGpfRnVuY3Rpb25fQ29udGV4dCAqKTsKZXh0ZXJuIHZvaWQgX1Vud2luZF9TakxqX1Vu cmVnaXN0ZXIgKHN0cnVjdCBTakxqX0Z1bmN0aW9uX0NvbnRleHQgKik7CgpleHRlcm4gX1Vud2lu ZF9SZWFzb25fQ29kZSBfVW53aW5kX1NqTGpfUmFpc2VFeGNlcHRpb24KICAgICAoc3RydWN0IF9V bndpbmRfRXhjZXB0aW9uICopOwpleHRlcm4gX1Vud2luZF9SZWFzb25fQ29kZSBfVW53aW5kX1Nq TGpfRm9yY2VkVW53aW5kCiAgICAgKHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqLCBfVW53aW5k X1N0b3BfRm4sIHZvaWQgKik7CmV4dGVybiB2b2lkIF9VbndpbmRfU2pMal9SZXN1bWUgKHN0cnVj dCBfVW53aW5kX0V4Y2VwdGlvbiAqKTsKIyAxOTggIi4uLy4uLy4uLy4uL2djYy9nY2MvdW53aW5k LmgiCmV4dGVybiBfVW53aW5kX1B0ciBfVW53aW5kX0dldERhdGFSZWxCYXNlIChzdHJ1Y3QgX1Vu d2luZF9Db250ZXh0ICopOwpleHRlcm4gX1Vud2luZF9QdHIgX1Vud2luZF9HZXRUZXh0UmVsQmFz ZSAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKCgoKCmV4dGVybiB2b2lkICogX1Vud2luZF9G aW5kRW5jbG9zaW5nRnVuY3Rpb24gKHZvaWQgKnBjKTsKCgp9CiMgNDIgIi4uLy4uLy4uLy4uL2dj Yy9saWJzdGRjKystdjMvbGlic3VwYysrL3Vud2luZC1jeHguaCIgMgoKbmFtZXNwYWNlIF9fY3h4 YWJpdjEKewoKCgoKCnN0cnVjdCBfX2N4YV9leGNlcHRpb24KewoKICBzdGQ6OnR5cGVfaW5mbyAq ZXhjZXB0aW9uVHlwZTsKICB2b2lkICgqZXhjZXB0aW9uRGVzdHJ1Y3Rvcikodm9pZCAqKTsKCgoK ICBzdGQ6OnVuZXhwZWN0ZWRfaGFuZGxlciB1bmV4cGVjdGVkSGFuZGxlcjsKICBzdGQ6OnRlcm1p bmF0ZV9oYW5kbGVyIHRlcm1pbmF0ZUhhbmRsZXI7CgoKICBfX2N4YV9leGNlcHRpb24gKm5leHRF eGNlcHRpb247CgoKCiAgaW50IGhhbmRsZXJDb3VudDsKCgoKICBpbnQgaGFuZGxlclN3aXRjaFZh bHVlOwogIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFjdGlvblJlY29yZDsKICBjb25zdCB1bnNpZ25l ZCBjaGFyICpsYW5ndWFnZVNwZWNpZmljRGF0YTsKICBfVW53aW5kX1B0ciBjYXRjaFRlbXA7CiAg dm9pZCAqYWRqdXN0ZWRQdHI7CgoKICBfVW53aW5kX0V4Y2VwdGlvbiB1bndpbmRIZWFkZXI7Cn07 CgoKc3RydWN0IF9fY3hhX2VoX2dsb2JhbHMKewogIF9fY3hhX2V4Y2VwdGlvbiAqY2F1Z2h0RXhj ZXB0aW9uczsKICB1bnNpZ25lZCBpbnQgdW5jYXVnaHRFeGNlcHRpb25zOwp9OwoKCgoKCgpleHRl cm4gIkMiIF9fY3hhX2VoX2dsb2JhbHMgKl9fY3hhX2dldF9nbG9iYWxzICgpIHRocm93KCk7CmV4 dGVybiAiQyIgX19jeGFfZWhfZ2xvYmFscyAqX19jeGFfZ2V0X2dsb2JhbHNfZmFzdCAoKSB0aHJv dygpOwoKCmV4dGVybiAiQyIgdm9pZCAqX19jeGFfYWxsb2NhdGVfZXhjZXB0aW9uKHN0ZDo6c2l6 ZV90IHRocm93bl9zaXplKSB0aHJvdygpOwoKCmV4dGVybiAiQyIgdm9pZCBfX2N4YV9mcmVlX2V4 Y2VwdGlvbih2b2lkICp0aHJvd25fZXhjZXB0aW9uKSB0aHJvdygpOwoKCmV4dGVybiAiQyIgdm9p ZCBfX2N4YV90aHJvdyAodm9pZCAqdGhyb3duX2V4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdGQ6OnR5cGVfaW5mbyAqdGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAoKmRlc3QpICh2b2lkICopKQogICAgIF9fYXR0cmlidXRlX18oKG5vcmV0dXJu KSk7CgoKZXh0ZXJuICJDIiB2b2lkICpfX2N4YV9iZWdpbl9jYXRjaCAodm9pZCAqKSB0aHJvdygp OwpleHRlcm4gIkMiIHZvaWQgX19jeGFfZW5kX2NhdGNoICgpOwpleHRlcm4gIkMiIHZvaWQgX19j eGFfcmV0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwoKCmV4dGVybiAiQyIgdm9p ZCBfX2N4YV9iYWRfY2FzdCAoKTsKZXh0ZXJuICJDIiB2b2lkIF9fY3hhX2JhZF90eXBlaWQgKCk7 CgoKCgoKCmV4dGVybiAiQyIgdm9pZCBfX2N4YV9jYWxsX3VuZXhwZWN0ZWQgKHZvaWQgKikgX19h dHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKCgoKZXh0ZXJuIHZvaWQgX190ZXJtaW5hdGUoc3RkOjp0 ZXJtaW5hdGVfaGFuZGxlcikgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKZXh0ZXJuIHZvaWQg X191bmV4cGVjdGVkKHN0ZDo6dW5leHBlY3RlZF9oYW5kbGVyKSBfX2F0dHJpYnV0ZV9fKChub3Jl dHVybikpOwoKCmV4dGVybiBzdGQ6OnRlcm1pbmF0ZV9oYW5kbGVyIF9fdGVybWluYXRlX2hhbmRs ZXI7CmV4dGVybiBzdGQ6OnVuZXhwZWN0ZWRfaGFuZGxlciBfX3VuZXhwZWN0ZWRfaGFuZGxlcjsK CgoKCmNvbnN0IF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzIF9fZ3h4X2V4Y2VwdGlvbl9jbGFzcwo9 ICgoKCgoKCgoX1Vud2luZF9FeGNlcHRpb25fQ2xhc3MpICdHJwogICAgICAgICA8PCA4IHwgKF9V bndpbmRfRXhjZXB0aW9uX0NsYXNzKSAnTicpCiAgICAgICAgPDwgOCB8IChfVW53aW5kX0V4Y2Vw dGlvbl9DbGFzcykgJ1UnKQogICAgICAgPDwgOCB8IChfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcykg J0MnKQogICAgICA8PCA4IHwgKF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzKSAnQycpCiAgICAgPDwg OCB8IChfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcykgJysnKQogICAgPDwgOCB8IChfVW53aW5kX0V4 Y2VwdGlvbl9DbGFzcykgJysnKQogICA8PCA4IHwgKF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzKSAn XDAnKTsKCgpleHRlcm4gIkMiIF9VbndpbmRfUmVhc29uX0NvZGUgX19neHhfcGVyc29uYWxpdHlf djAKICAgICAoaW50LCBfVW53aW5kX0FjdGlvbiwgX1Vud2luZF9FeGNlcHRpb25fQ2xhc3MsCiAg ICAgIHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqLCBzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICop OwoKCmV4dGVybiAiQyIgX1Vud2luZF9SZWFzb25fQ29kZSBfX2d4eF9wZXJzb25hbGl0eV9zajAK ICAgICAoaW50LCBfVW53aW5kX0FjdGlvbiwgX1Vud2luZF9FeGNlcHRpb25fQ2xhc3MsCiAgICAg IHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqLCBzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICopOwoK CnN0YXRpYyBpbmxpbmUgX19jeGFfZXhjZXB0aW9uICoKX19nZXRfZXhjZXB0aW9uX2hlYWRlcl9m cm9tX29iaiAodm9pZCAqcHRyKQp7CiAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X19jeGFfZXhj ZXB0aW9uICo+KHB0cikgLSAxOwp9CgoKc3RhdGljIGlubGluZSBfX2N4YV9leGNlcHRpb24gKgpf X2dldF9leGNlcHRpb25faGVhZGVyX2Zyb21fdWUgKF9VbndpbmRfRXhjZXB0aW9uICpleGMpCnsK ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxfX2N4YV9leGNlcHRpb24gKj4oZXhjICsgMSkgLSAx Owp9Cgp9CiMgMzUgIi4uLy4uLy4uLy4uL2djYy9saWJzdGRjKystdjMvbGlic3VwYysrL2VoX2F1 eF9ydW50aW1lLmNjIiAyCiMgMSAiLi4vLi4vLi4vLi4vZ2NjL2xpYnN0ZGMrKy12My9saWJzdXBj KysvZXhjZXB0aW9uX2RlZmluZXMuaCIgMQojIDM2ICIuLi8uLi8uLi8uLi9nY2MvbGlic3RkYysr LXYzL2xpYnN1cGMrKy9laF9hdXhfcnVudGltZS5jYyIgMgoKCmV4dGVybiAiQyIgdm9pZApfX2N4 YV9iYWRfY2FzdCAoKQp7CgogIHRocm93IHN0ZDo6YmFkX2Nhc3QoKTsKCgoKfQoKZXh0ZXJuICJD IiB2b2lkCl9fY3hhX2JhZF90eXBlaWQgKCkKewoKICB0aHJvdyBzdGQ6OmJhZF90eXBlaWQoKTsK CgoKfQo=