From gcc-patches-return-37788-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 09:43:04 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 7094 invoked by alias); 1 Jul 2001 09:43:03 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 7064 invoked from network); 1 Jul 2001 09:42:57 -0000
Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 09:42:57 -0000
Received: from deneb (deneb [128.130.111.2])
by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f619gLI07080;
Sun, 1 Jul 2001 11:42:21 +0200 (MET DST)
Date: Sun, 1 Jul 2001 11:42:21 +0200 (CEST)
From: Gerald Pfeifer
To: "Joseph S. Myers"
cc: ,
Subject: Re: PATCH: Update documentation for --enable-threads to match reality
In-Reply-To:
Message-ID:
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
On Fri, 15 Jun 2001, Joseph S. Myers wrote:
>> I have installed it to mainline under the "obviously correct" rule.
> Install manual patches should go on the branch as well.
Definitely, yes. By any means.
In fact, I would expect (and currently this is indeed the case) that
doc/install.texi usually will be the same are at least nearly the same
on both branches.
Gerald
--
Gerald "Jerry" pfeifer@dbai.tuwien.ac.at http://www.dbai.tuwien.ac.at/~pfeifer/
From gcc-patches-return-37789-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 10:10:18 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 15314 invoked by alias); 1 Jul 2001 10:10:16 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 15275 invoked from network); 1 Jul 2001 10:10:14 -0000
Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 10:10:14 -0000
Received: from deneb (deneb [128.130.111.2])
by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61AA7I07507;
Sun, 1 Jul 2001 12:10:08 +0200 (MET DST)
Date: Sun, 1 Jul 2001 12:10:07 +0200 (CEST)
From: Gerald Pfeifer
To: David Kaelbling
cc: ,
Subject: PATCH for Re: Broken build status link
In-Reply-To: <3B3A1C86.B7C82326@sgi.com>
Message-ID:
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
On Wed, 27 Jun 2001, David Kaelbling wrote:
> http://gcc.gnu.org/install/finalinstall.html has a link to a
> non-existent "build status page" -- following it produces:
>
> The requested URL /gcc-3.0/buildstat.html was not found on this server.
Thanks for pointing this out.
I addressed this by the patch below which I just installed.
Gerald
*** /dev/null Sun Jul 1 11:45:21 2001
--- buildstat.html Sun Jul 1 12:08:32 2001
***************
*** 0 ****
--- 1,25 ----
+
+
+
+ Build status for GCC 3.0
+
+
+
+ Build status for GCC 3.0
+
+
+
+
+ i386-unknown-freebsd4.3 |
+ Successful |
+
+
+
+ i686-pc-linux-gnu |
+ Successful |
+
+
+
+
+
+
From gcc-patches-return-37790-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 10:27:02 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 19327 invoked by alias); 1 Jul 2001 10:27:02 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 19307 invoked from network); 1 Jul 2001 10:27:00 -0000
Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 10:27:00 -0000
Received: from deneb (deneb [128.130.111.2])
by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61AQNI07777;
Sun, 1 Jul 2001 12:26:26 +0200 (MET DST)
Date: Sun, 1 Jul 2001 12:26:23 +0200 (CEST)
From: Gerald Pfeifer
To: Zoltan Felleg
cc:
Subject: Re: [patch] beginner projects (test)
In-Reply-To: <3B290CD1.338E8C6F@telnet.hu>
Message-ID:
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
On Thu, 14 Jun 2001, Zoltan Felleg wrote:
> This patch fixes a small typo in warn_summary, and is considered as a
> test (of myself).
Thanks, I installed your patch.
(It's a pity that none has taken care of this for over two weeks; sorry
for the delay.)
Gerald
From gcc-patches-return-37791-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 10:41:01 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 21892 invoked by alias); 1 Jul 2001 10:40:59 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 21869 invoked from network); 1 Jul 2001 10:40:57 -0000
Received: from unknown (HELO mail.takas.lt) (212.59.0.1)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 10:40:57 -0000
Received: from 212.59.2.204 (flatrate849.vln.takas.lt [212.59.27.85])
by mail.takas.lt (8.9.1/8.9.0) with ESMTP id MAA1221074
for ; Sun, 1 Jul 2001 12:40:55 +0200 (GMT+0200)
Received: (qmail 389 invoked by uid 1000); 1 Jul 2001 10:20:54 -0000
From: "Laurynas Biveinis"
Date: Sun, 1 Jul 2001 12:20:54 +0200
To: Gerald Pfeifer
Cc: gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org
Subject: Re: PATCH for Re: Broken build status link
Message-ID: <20010701122054.A367@lauras.lt>
Mail-Followup-To: Gerald Pfeifer ,
gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org
References:
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To:
User-Agent: Mutt/1.3.18i
> + i386-unknown-freebsd4.3 |
> + i686-pc-linux-gnu |
> + Successful |
There already have been few other success reports.
Laurynas
From gcc-patches-return-37792-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 13:04:13 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 19082 invoked by alias); 1 Jul 2001 13:04:12 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 18910 invoked from network); 1 Jul 2001 13:04:08 -0000
Received: from unknown (HELO smtp.ca.inter.net) (38.210.35.210)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 13:04:08 -0000
Received: from ip148.ottawa19.dialup.canada.psi.net ([154.11.101.148] helo=umbriel)
by smtp.ca.inter.net with smtp (Exim 3.22 #1)
id 15Ggsy-0003RR-00; Sun, 01 Jul 2001 09:03:36 -0400
From: Stephen M. Webb
Reply-To: stephen@bregmasoft.com
Organization: Bregmasoft
To: libstdc++@gcc.gnu.org
Subject: [libstdc++-v3] Remove std::construct and std::destroy
Date: Sun, 1 Jul 2001 08:37:29 -0400
X-Mailer: KMail [version 1.0.28]
Content-Type: Multipart/Mixed;
boundary="Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD"
Cc: gcc-patches@gcc.gnu.org
MIME-Version: 1.0
Message-Id: <01070108464800.00282@umbriel>
--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
The HP version of the STL used functions construct() and destroy() to construct
and destroy objects. These functions are not a part of the standard and had
been (mostly) replaced by the internal library functions _Construct() and
_Destroy().
This patch fixes the last few occurrences of the HP legacy functions in the
GCC version of the library and removes their definitions. There is no change
in functionality or generated code.
The definitions remain available through the backwards headers.
Bootstrapped on an i686-pc-linux-gnu system, no regressions. Targetted at the
trunk but is good for the 3.01 branch, too.
2001-07-01 Stephen M. Webb
* include/bits/stl_construct.h (construct): Remove.
(destroy): Remove.
(__destroy): Replaced by use of iterator_traits.
* include/bits/stl_deque.h: replaced HP iterator functions with iterator_traits.
(construct): changed to _Construct.
(destroy): changed to _Destroy.
* include/bits/stl_tempbuf.h: Same.
* include/bits/stl_tree.h: Same.
* include/bits/stl_vector.h: Same.
* include/backward/iterator.h (construct): moved definition to here.
(destroy): Same.
--
Stephen M. Webb
stephen at bregmasoft dot com
--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/x-c++;
name="patch.diff"
Content-Transfer-Encoding: base64
Content-Description: CVS diff
Content-Disposition: attachment; filename="patch.diff"
SW5kZXg6IGluY2x1ZGUvYml0cy9zdGxfY29uc3RydWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9nY2MvZ2NjL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX2NvbnN0cnVjdC5oLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjcKZGlmZiAtYyAtMyAtcCAtcjEuNyBzdGxfY29uc3RydWN0
LmgKKioqIHN0bF9jb25zdHJ1Y3QuaAkyMDAxLzA2LzI3IDE3OjA5OjUyCTEuNwotLS0gc3RsX2Nv
bnN0cnVjdC5oCTIwMDEvMDcvMDEgMTI6NDc6MDQKKioqKioqKioqKioqKioqCioqKiA2MCwxNDgg
KioqKgogICNpZm5kZWYgX0NQUF9CSVRTX1NUTF9DT05TVFJVQ1RfSAogICNkZWZpbmUgX0NQUF9C
SVRTX1NUTF9DT05TVFJVQ1RfSCAxCiAgCiAgI2luY2x1ZGUgPG5ldz4KICAKICBuYW1lc3BhY2Ug
c3RkCiAgewohIAohIC8vIGNvbnN0cnVjdCBhbmQgZGVzdHJveS4gIFRoZXNlIGZ1bmN0aW9ucyBh
cmUgbm90IHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZCwKISAvLyBhbmQgYXJlIHByb3ZpZGVkIGZv
ciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIEhQIFNUTC4gV2UgYWxzbwohIC8vIHBy
b3ZpZGUgaW50ZXJuYWwgbmFtZXMgX0NvbnN0cnVjdCBhbmQgX0Rlc3Ryb3kgdGhhdCBjYW4gYmUg
dXNlZCB3aXRoaW4KISAvLyB0aGUgbGlicmFyeSwgc28gdGhhdCBzdGFuZGFyZC1jb25mb3JtaW5n
IHBpZWNlcyBkb24ndCBoYXZlIHRvIHJlbHkgb24KISAvLyBub24tc3RhbmRhcmQgZXh0ZW5zaW9u
cy4KISAKISAvLyBJbnRlcm5hbCBuYW1lcwohIAohIHRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNz
IF9UMj4KISBpbmxpbmUgdm9pZCBfQ29uc3RydWN0KF9UMSogX19wLCBjb25zdCBfVDImIF9fdmFs
dWUpIHsKISBuZXcgKCh2b2lkKikgX19wKSBfVDEoX192YWx1ZSk7CiEgfQogICAgCiEgdGVtcGxh
dGUgPGNsYXNzIF9UMT4KISBpbmxpbmUgdm9pZCBfQ29uc3RydWN0KF9UMSogX19wKSB7CiEgICBu
ZXcgKCh2b2lkKikgX19wKSBfVDEoKTsKISB9CiEgCiEgdGVtcGxhdGUgPGNsYXNzIF9UcD4KISBp
bmxpbmUgdm9pZCBfRGVzdHJveShfVHAqIF9fcG9pbnRlcikgewohICAgX19wb2ludGVyLT5+X1Rw
KCk7CiEgfQogICAgCiEgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiEgdm9pZAoh
IF9fZGVzdHJveV9hdXgoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9y
IF9fbGFzdCwgX19mYWxzZV90eXBlKQohIHsKISAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7
ICsrX19maXJzdCkKISAgICAgZGVzdHJveSgmKl9fZmlyc3QpOwohIH0KISAKISB0ZW1wbGF0ZSA8
Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4gCiEgaW5saW5lIHZvaWQgX19kZXN0cm95X2F1eChfRm9y
d2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9yLCBfX3RydWVfdHlwZSkge30KISAKISB0ZW1w
bGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvciwgY2xhc3MgX1RwPgohIGlubGluZSB2b2lkIAoh
IF9fZGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19s
YXN0LCBfVHAqKQohIHsKISAgIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHA+Ojpo
YXNfdHJpdmlhbF9kZXN0cnVjdG9yCiEgICAgICAgICAgIF9Ucml2aWFsX2Rlc3RydWN0b3I7CiEg
ICBfX2Rlc3Ryb3lfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX1RyaXZpYWxfZGVzdHJ1Y3RvcigpKTsK
ISB9CiEgCiEgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiEgaW5saW5lIHZvaWQg
X0Rlc3Ryb3koX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFz
dCkgewohICAgX19kZXN0cm95KF9fZmlyc3QsIF9fbGFzdCwgX192YWx1ZV90eXBlKF9fZmlyc3Qp
KTsKISB9CiEgCiEgaW5saW5lIHZvaWQgX0Rlc3Ryb3koY2hhciosIGNoYXIqKSB7fQohIGlubGlu
ZSB2b2lkIF9EZXN0cm95KGludCosIGludCopIHt9CiEgaW5saW5lIHZvaWQgX0Rlc3Ryb3kobG9u
ZyosIGxvbmcqKSB7fQohIGlubGluZSB2b2lkIF9EZXN0cm95KGZsb2F0KiwgZmxvYXQqKSB7fQoh
IGlubGluZSB2b2lkIF9EZXN0cm95KGRvdWJsZSosIGRvdWJsZSopIHt9CiEgaW5saW5lIHZvaWQg
X0Rlc3Ryb3kod2NoYXJfdCosIHdjaGFyX3QqKSB7fQohIAohIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgLy8gT2xkIG5hbWVzIGZyb20gdGhl
IEhQIFNUTC4KISAKISB0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiEgaW5saW5lIHZv
aWQgY29uc3RydWN0KF9UMSogX19wLCBjb25zdCBfVDImIF9fdmFsdWUpIHsKISAgIF9Db25zdHJ1
Y3QoX19wLCBfX3ZhbHVlKTsKISB9CiEgCiEgdGVtcGxhdGUgPGNsYXNzIF9UMT4KISBpbmxpbmUg
dm9pZCBjb25zdHJ1Y3QoX1QxKiBfX3ApIHsKISAgIF9Db25zdHJ1Y3QoX19wKTsKISB9CiEgCiEg
dGVtcGxhdGUgPGNsYXNzIF9UcD4KISBpbmxpbmUgdm9pZCBkZXN0cm95KF9UcCogX19wb2ludGVy
KSB7CiEgICBfRGVzdHJveShfX3BvaW50ZXIpOwohIH0KISAKISB0ZW1wbGF0ZSA8Y2xhc3MgX0Zv
cndhcmRJdGVyYXRvcj4KISBpbmxpbmUgdm9pZCBkZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19m
aXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpIHsKISAgIF9EZXN0cm95KF9fZmlyc3QsIF9f
bGFzdCk7CiEgfQogIAogIH0gLy8gbmFtZXNwYWNlIHN0ZAogIAogICNlbmRpZiAvKiBfQ1BQX0JJ
VFNfU1RMX0NPTlNUUlVDVF9IICovCi0tLSA2MCwxNDQgLS0tLQogICNpZm5kZWYgX0NQUF9CSVRT
X1NUTF9DT05TVFJVQ1RfSAogICNkZWZpbmUgX0NQUF9CSVRTX1NUTF9DT05TVFJVQ1RfSCAxCiAg
CisgI2luY2x1ZGUgPGJpdHMvdHlwZV90cmFpdHMuaD4KICAjaW5jbHVkZSA8bmV3PgogIAogIG5h
bWVzcGFjZSBzdGQKICB7CiEgICAvKioKISAgICAqIEludm9rZSBhbiBhbGxvY2F0ZWQgb2JqZWN0
J3MgY29uc3RydWN0b3Igd2l0aCBhbiBpbml0aWFsaXplci4KISAgICAqCiEgICAgKiBUaGlzIGZ1
bmN0aW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSBDKysgc3RhbmRhcmQgYnV0IGlzIHVzZWQgaW50ZXJu
YWxseQohICAgICogd2l0aGluIHRoZSBsaWJyYXJ5LgohICAgICovCiEgICB0ZW1wbGF0ZSA8Y2xh
c3MgX1QxLCBjbGFzcyBfVDI+CiEgICAgIGlubGluZSB2b2lkCiEgICAgIF9Db25zdHJ1Y3QoX1Qx
KiBfX3AsIGNvbnN0IF9UMiYgX192YWx1ZSkKISAgICAgeyBuZXcgKHN0YXRpY19jYXN0PHZvaWQq
PihfX3ApKSBfVDEoX192YWx1ZSk7IH0KICAgIAohICAgLyoqCiEgICAgKiBJbnZva2UgYW4gYWxs
b2NhdGVkIG9iamVjdCdzIGNvbnN0cnVjdG9yIHdpdGhvdXQgYW4gaW5pdGlhbGl6ZXIuCiEgICAg
KgohICAgICogVGhpcyBmdW5jdGlvbiBpcyBub3QgcGFydCBvZiB0aGUgQysrIHN0YW5kYXJkIGJ1
dCBpcyB1c2VkIGludGVybmFsbHkKISAgICAqIHdpdGhpbiB0aGUgbGlicmFyeS4KISAgICAqLwoh
ICAgdGVtcGxhdGUgPGNsYXNzIF9UMT4KISAgICAgaW5saW5lIHZvaWQKISAgICAgX0NvbnN0cnVj
dChfVDEqIF9fcCkKISAgICAgeyBuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihfX3ApKSBfVDEoKTsg
fQohIAohICAgLyoqCiEgICAgKiBEZXN0cm95IGEgcmFuZ2Ugb2Ygb2JqZWN0cyB3aXRoIG5vbnRy
aXZpYWwgZGVzdHJ1Y3RvcnMuICAKISAgICAqCiEgICAgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0
aW9uIHVzZWQgb25seSBieSBfRGVzdHJveSgpLgohICAgICovCiEgICB0ZW1wbGF0ZSA8Y2xhc3Mg
X0ZvcndhcmRJdGVyYXRvcj4KISAgICAgaW5saW5lIHZvaWQKISAgICAgX19kZXN0cm95X2F1eChf
Rm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LCBfX2ZhbHNl
X3R5cGUpCiEgICAgIHsgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KSBfRGVz
dHJveSgmKl9fZmlyc3QpOyB9CiEgCiEgICAvKioKISAgICAqIERlc3Ryb3kgYSByYW5nZSBvZiBv
YmplY3RzIHdpdGggdHJpdmlhbCBkZXN0cnVjdG9ycy4gIFNpbmNlIHRoZSBkZXN0cnVjdG9ycwoh
ICAgICogYXJlIHRyaXZpYWwsIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBhbmQgaG9wZWZ1bGx5IHRo
aXMgZnVuY3Rpb24gd2lsbCBiZQohICAgICogZW50aXJlbHkgb3B0aW1pemVkIGF3YXkuCiEgICAg
KgohICAgICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB1c2VkIG9ubHkgYnkgX0Rlc3Ryb3ko
KS4KISAgICAqLwohICAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+IAohICAgICBp
bmxpbmUgdm9pZAohICAgICBfX2Rlc3Ryb3lfYXV4KF9Gb3J3YXJkSXRlcmF0b3IsIF9Gb3J3YXJk
SXRlcmF0b3IsIF9fdHJ1ZV90eXBlKQohICAgICB7IH0KISAKISAgIC8qKgohICAgICogRGVzdHJv
eSB0aGUgb2JqZWN0IHBvaW50ZWQgdG8gYnkgYSBwb2ludGVyIHR5cGUuCiEgICAgKgohICAgICog
VGhpcyBmdW5jdGlvbiBpcyBub3QgcGFydCBvZiB0aGUgQysrIHN0YW5kYXJkIGJ1dCBpcyB1c2Vk
IGludGVybmFsbHkKISAgICAqIHdpdGhpbiB0aGUgbGlicmFyeS4KISAgICAqLwohICAgdGVtcGxh
dGUgPGNsYXNzIF9UcD4KISAgICAgaW5saW5lIHZvaWQKISAgICAgX0Rlc3Ryb3koX1RwKiBfX3Bv
aW50ZXIpCiEgICAgIHsgX19wb2ludGVyLT5+X1RwKCk7IH0KICAgIAohICAgLyoqCiEgICAgKiBE
ZXN0cm95IGEgcmFuZ2Ugb2Ygb2JqZWN0cy4gIElmIHRoZSB2YWx1ZV90eXBlIG9mIHRoZSBvYmpl
Y3QgaGFzCiEgICAgKiBhIHRyaXZpYWwgZGVzdHJ1Y3RvciwgdGhlIGNvbXBpbGVyIHNob3VsZCBv
cHRpbWl6ZSBhbGwgb2YgdGhpcwohICAgICogYXdheSwgb3RoZXJ3aXNlIHRoZSBvYmplY3RzJyBk
ZXN0cnVjdG9ycyBtdXN0IGJlIGludm9rZWQuCiEgICAgKgohICAgICogVGhpcyBmdW5jdGlvbiBp
cyBub3QgcGFydCBvZiB0aGUgQysrIHN0YW5kYXJkIGJ1dCBpcyB1c2VkIGludGVybmFsbHkKISAg
ICAqIHdpdGhpbiB0aGUgbGlicmFyeS4KISAgICAqLwohICAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3
YXJkSXRlcmF0b3I+CiEgICAgIGlubGluZSB2b2lkCiEgICAgIF9EZXN0cm95KF9Gb3J3YXJkSXRl
cmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpCiEgICAgIHsKISAgICAgICB0
eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVf
dHlwZQohICAgICAgICAgICAgICAgICAgICAgICAgX1ZhbHVlX3R5cGU7CiEgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPF9WYWx1ZV90eXBlPjo6aGFzX3RyaXZpYWxfZGVzdHJ1
Y3RvcgohICAgICAgICAgICAgICAgICAgICAgICAgX0hhc190cml2aWFsX2Rlc3RydWN0b3I7CiAg
CisgICAgICAgX19kZXN0cm95X2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9IYXNfdHJpdmlhbF9kZXN0
cnVjdG9yKCkpOworICAgICB9CiAgfSAvLyBuYW1lc3BhY2Ugc3RkCiAgCiAgI2VuZGlmIC8qIF9D
UFBfQklUU19TVExfQ09OU1RSVUNUX0ggKi8KSW5kZXg6IGluY2x1ZGUvYml0cy9zdGxfZGVxdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9nY2MvbGlic3RkYysrLXYzL2luY2x1ZGUv
Yml0cy9zdGxfZGVxdWUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44CmRpZmYgLWMgLTMgLXAg
LXIxLjggc3RsX2RlcXVlLmgKKioqIHN0bF9kZXF1ZS5oCTIwMDEvMDYvMjcgMTc6MDk6NTIJMS44
Ci0tLSBzdGxfZGVxdWUuaAkyMDAxLzA3LzAxIDEyOjQ3OjI0CioqKioqKioqKioqKioqKiBwdWJs
aWM6ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnN0CioqKiA0NzksNTA4ICoqKioKICAg
IGRlcXVlKHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9fdmFsdWUsCiAgICAgICAg
ICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkgOiBfQmFzZShf
X2EsIF9fbikKICAgICAgeyBfTV9maWxsX2luaXRpYWxpemUoX192YWx1ZSk7IH0KLSAgIGV4cGxp
Y2l0IGRlcXVlKHNpemVfdHlwZSBfX24pIDogX0Jhc2UoYWxsb2NhdG9yX3R5cGUoKSwgX19uKQot
ICAgICB7IF9NX2ZpbGxfaW5pdGlhbGl6ZSh2YWx1ZV90eXBlKCkpOyB9CiAgCiEgICAvLyBDaGVj
ayB3aGV0aGVyIGl0J3MgYW4gaW50ZWdyYWwgdHlwZS4gIElmIHNvLCBpdCdzIG5vdCBhbiBpdGVy
YXRvci4KISAgIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KISAgIGRlcXVlKF9JbnB1
dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKISAgICAgICAgIGNvbnN0
IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKSA6IF9CYXNlKF9fYSkgewoh
ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X0ludGVn
cmFsIF9JbnRlZ3JhbDsKISAgICAgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfX2ZpcnN0LCBfX2xh
c3QsIF9JbnRlZ3JhbCgpKTsKISAgIH0KICAKISAgIHRlbXBsYXRlIDxjbGFzcyBfSW50ZWdlcj4K
ISAgIHZvaWQgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9f
eCwgX190cnVlX3R5cGUpIHsKISAgICAgX01faW5pdGlhbGl6ZV9tYXAoX19uKTsKISAgICAgX01f
ZmlsbF9pbml0aWFsaXplKF9feCk7CiEgICB9CiEgCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0
SXRlcj4KISAgIHZvaWQgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW5wdXRJdGVyIF9fZmlyc3Qs
IF9JbnB1dEl0ZXIgX19sYXN0LAohICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZmFs
c2VfdHlwZSkgewohICAgICBfTV9yYW5nZV9pbml0aWFsaXplKF9fZmlyc3QsIF9fbGFzdCwgX19p
dGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7CiEgICB9CiAgCiEgICB+ZGVxdWUoKSB7IGRlc3Ry
b3koX01fc3RhcnQsIF9NX2ZpbmlzaCk7IH0KICAKICAgIGRlcXVlJiBvcGVyYXRvcj0gKGNvbnN0
IGRlcXVlJiBfX3gpIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc2l6ZSgpOwotLS0g
NDc5LDUxOCAtLS0tCiAgICBkZXF1ZShzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBf
X3ZhbHVlLAogICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90
eXBlKCkpIDogX0Jhc2UoX19hLCBfX24pCiAgICAgIHsgX01fZmlsbF9pbml0aWFsaXplKF9fdmFs
dWUpOyB9CiAgCiEgICBleHBsaWNpdAohICAgZGVxdWUoc2l6ZV90eXBlIF9fbikKISAgIDogX0Jh
c2UoYWxsb2NhdG9yX3R5cGUoKSwgX19uKQohICAgeyBfTV9maWxsX2luaXRpYWxpemUodmFsdWVf
dHlwZSgpKTsgfQogIAohICAgLy8gQ2hlY2sgd2hldGhlciBpdCdzIGFuIGludGVncmFsIHR5cGUu
ICBJZiBzbywgaXQncyBub3QgYW4gaXRlcmF0b3IuCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJ
dGVyYXRvcj4KISAgICAgZGVxdWUoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0
b3IgX19sYXN0LAohICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2Nh
dG9yX3R5cGUoKSkKISAgICAgOiBfQmFzZShfX2EpCiEgICAgIHsKISAgICAgICB0eXBlZGVmIHR5
cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X0ludGVncmFsIF9JbnRlZ3JhbDsK
ISAgICAgICBfTV9pbml0aWFsaXplX2Rpc3BhdGNoKF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFs
KCkpOwohICAgICB9CiEgCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW50ZWdlcj4KISAgICAgdm9pZAoh
ICAgICBfTV9pbml0aWFsaXplX2Rpc3BhdGNoKF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX194LCBf
X3RydWVfdHlwZSkKISAgICAgewohICAgICAgIF9NX2luaXRpYWxpemVfbWFwKF9fbik7CiEgICAg
ICAgX01fZmlsbF9pbml0aWFsaXplKF9feCk7CiEgICAgIH0KISAKISAgIHRlbXBsYXRlPGNsYXNz
IF9JbnB1dEl0ZXI+CiEgICAgIHZvaWQKISAgICAgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW5w
dXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LCBfX2ZhbHNlX3R5cGUpCiEgICAgIHsK
ISAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6aXRl
cmF0b3JfY2F0ZWdvcnkgX0l0ZXJDYXRlZ29yeTsKISAgICAgICBfTV9yYW5nZV9pbml0aWFsaXpl
KF9fZmlyc3QsIF9fbGFzdCwgX0l0ZXJDYXRlZ29yeSgpKTsKISAgICAgfQogIAohICAgfmRlcXVl
KCkKISAgIHsgX0Rlc3Ryb3koX01fc3RhcnQsIF9NX2ZpbmlzaCk7IH0KICAKICAgIGRlcXVlJiBv
cGVyYXRvcj0gKGNvbnN0IGRlcXVlJiBfX3gpIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVu
ID0gc2l6ZSgpOwoqKioqKioqKioqKioqKiogcHVibGljOiAKKioqIDU0MSw1NjggKioqKgogICAg
ICAgIGZpbGwoYmVnaW4oKSwgZW5kKCksIF9fdmFsKTsKICAgICAgfQogICAgfQotIAotICAgdm9p
ZCBhc3NpZ24oc2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3ZhbCkgewotICAgICBfTV9maWxs
X2Fzc2lnbihfX24sIF9fdmFsKTsKLSAgIH0KICAKISAgIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ
dGVyYXRvcj4KISAgIHZvaWQgYXNzaWduKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0
ZXJhdG9yIF9fbGFzdCkgewohICAgICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1
dEl0ZXJhdG9yPjo6X0ludGVncmFsIF9JbnRlZ3JhbDsKISAgICAgX01fYXNzaWduX2Rpc3BhdGNo
KF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkpOwohICAgfQogIAogIHByaXZhdGU6ICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaGVscGVyIGZ1bmN0aW9ucyBmb3IgYXNzaWduKCkgCiAgCiEg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiEgICB2b2lkIF9NX2Fzc2lnbl9kaXNwYXRjaChf
SW50ZWdlciBfX24sIF9JbnRlZ2VyIF9fdmFsLCBfX3RydWVfdHlwZSkKISAgICAgeyBfTV9maWxs
X2Fzc2lnbigoc2l6ZV90eXBlKSBfX24sIChfVHApIF9fdmFsKTsgfQohIAohICAgdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgohICAgdm9pZCBfTV9hc3NpZ25fZGlzcGF0Y2goX0lucHV0
SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAohICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19mYWxzZV90eXBlKSB7CiEgICAgIF9NX2Fzc2lnbl9hdXgoX19maXJzdCwg
X19sYXN0LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKISAgIH0KICAKICAgIHRlbXBs
YXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICAgIHZvaWQgX01fYXNzaWduX2F1eChfSW5wdXRJ
dGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCi0tLSA1NTEsNTgzIC0tLS0K
ICAgICAgICBmaWxsKGJlZ2luKCksIGVuZCgpLCBfX3ZhbCk7CiAgICAgIH0KICAgIH0KICAKISAg
IHZvaWQKISAgIGFzc2lnbihzaXplX3R5cGUgX19uLCBjb25zdCBfVHAmIF9fdmFsKQohICAgeyBf
TV9maWxsX2Fzc2lnbihfX24sIF9fdmFsKTsgfQohIAohICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0
SXRlcmF0b3I+CiEgICAgIHZvaWQKISAgICAgYXNzaWduKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKISAgICAgewohICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
X0lzX2ludGVnZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50ZWdyYWwgX0ludGVncmFsOwohICAgICAg
IF9NX2Fzc2lnbl9kaXNwYXRjaChfX2ZpcnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKISAgICAg
fQogIAogIHByaXZhdGU6ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVscGVyIGZ1bmN0aW9u
cyBmb3IgYXNzaWduKCkgCiAgCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW50ZWdlcj4KISAgICAgdm9p
ZAohICAgICBfTV9hc3NpZ25fZGlzcGF0Y2goX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbCwg
X190cnVlX3R5cGUpCiEgICAgIHsgX01fZmlsbF9hc3NpZ24oc3RhdGljX2Nhc3Q8c2l6ZV90eXBl
PihfX24pLCBzdGF0aWNfY2FzdDxfVHA+KF9fdmFsKSk7IH0KISAKISAgIHRlbXBsYXRlPGNsYXNz
IF9JbnB1dEl0ZXJhdG9yPgohICAgICB2b2lkCiEgICAgIF9NX2Fzc2lnbl9kaXNwYXRjaChfSW5w
dXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkK
ISAgICAgewohICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0
ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnkgX0l0ZXJDYXRlZ29yeTsKISAgICAgICBfTV9hc3Np
Z25fYXV4KF9fZmlyc3QsIF9fbGFzdCwgX0l0ZXJDYXRlZ29yeSgpKTsKISAgICAgfQogIAogICAg
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogICAgdm9pZCBfTV9hc3NpZ25fYXV4KF9J
bnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKKioqKioqKioqKioq
KioqIHByaXZhdGU6ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVscGUKKioqIDU4NSw2MjAg
KioqKgogIAogIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHVzaF8qIGFuZCBw
b3BfKgogICAgCiEgICB2b2lkIHB1c2hfYmFjayhjb25zdCB2YWx1ZV90eXBlJiBfX3QpIHsKICAg
ICAgaWYgKF9NX2ZpbmlzaC5fTV9jdXIgIT0gX01fZmluaXNoLl9NX2xhc3QgLSAxKSB7CiEgICAg
ICAgY29uc3RydWN0KF9NX2ZpbmlzaC5fTV9jdXIsIF9fdCk7CiAgICAgICAgKytfTV9maW5pc2gu
X01fY3VyOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgICBfTV9wdXNoX2JhY2tfYXV4KF9fdCk7
CiAgICB9CiAgCiEgICB2b2lkIHB1c2hfYmFjaygpIHsKICAgICAgaWYgKF9NX2ZpbmlzaC5fTV9j
dXIgIT0gX01fZmluaXNoLl9NX2xhc3QgLSAxKSB7CiEgICAgICAgY29uc3RydWN0KF9NX2Zpbmlz
aC5fTV9jdXIpOwogICAgICAgICsrX01fZmluaXNoLl9NX2N1cjsKICAgICAgfQogICAgICBlbHNl
CiAgICAgICAgX01fcHVzaF9iYWNrX2F1eCgpOwogICAgfQogIAohICAgdm9pZCBwdXNoX2Zyb250
KGNvbnN0IHZhbHVlX3R5cGUmIF9fdCkgewogICAgICBpZiAoX01fc3RhcnQuX01fY3VyICE9IF9N
X3N0YXJ0Ll9NX2ZpcnN0KSB7CiEgICAgICAgY29uc3RydWN0KF9NX3N0YXJ0Ll9NX2N1ciAtIDEs
IF9fdCk7CiAgICAgICAgLS1fTV9zdGFydC5fTV9jdXI7CiAgICAgIH0KICAgICAgZWxzZQogICAg
ICAgIF9NX3B1c2hfZnJvbnRfYXV4KF9fdCk7CiAgICB9CiAgCiEgICB2b2lkIHB1c2hfZnJvbnQo
KSB7CiAgICAgIGlmIChfTV9zdGFydC5fTV9jdXIgIT0gX01fc3RhcnQuX01fZmlyc3QpIHsKISAg
ICAgICBjb25zdHJ1Y3QoX01fc3RhcnQuX01fY3VyIC0gMSk7CiAgICAgICAgLS1fTV9zdGFydC5f
TV9jdXI7CiAgICAgIH0KICAgICAgZWxzZQotLS0gNjAwLDY0MyAtLS0tCiAgCiAgcHVibGljOiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwdXNoXyogYW5kIHBvcF8qCiAgICAKISAgIHZvaWQK
ISAgIHB1c2hfYmFjayhjb25zdCB2YWx1ZV90eXBlJiBfX3QpCiEgICB7CiAgICAgIGlmIChfTV9m
aW5pc2guX01fY3VyICE9IF9NX2ZpbmlzaC5fTV9sYXN0IC0gMSkgewohICAgICAgIF9Db25zdHJ1
Y3QoX01fZmluaXNoLl9NX2N1ciwgX190KTsKICAgICAgICArK19NX2ZpbmlzaC5fTV9jdXI7CiAg
ICAgIH0KICAgICAgZWxzZQogICAgICAgIF9NX3B1c2hfYmFja19hdXgoX190KTsKICAgIH0KICAK
ISAgIHZvaWQKISAgIHB1c2hfYmFjaygpCiEgICB7CiAgICAgIGlmIChfTV9maW5pc2guX01fY3Vy
ICE9IF9NX2ZpbmlzaC5fTV9sYXN0IC0gMSkgewohICAgICAgIF9Db25zdHJ1Y3QoX01fZmluaXNo
Ll9NX2N1cik7CiAgICAgICAgKytfTV9maW5pc2guX01fY3VyOwogICAgICB9CiAgICAgIGVsc2UK
ICAgICAgICBfTV9wdXNoX2JhY2tfYXV4KCk7CiAgICB9CiAgCiEgICB2b2lkCiEgICBwdXNoX2Zy
b250KGNvbnN0IHZhbHVlX3R5cGUmIF9fdCkgCiEgICB7CiAgICAgIGlmIChfTV9zdGFydC5fTV9j
dXIgIT0gX01fc3RhcnQuX01fZmlyc3QpIHsKISAgICAgICBfQ29uc3RydWN0KF9NX3N0YXJ0Ll9N
X2N1ciAtIDEsIF9fdCk7CiAgICAgICAgLS1fTV9zdGFydC5fTV9jdXI7CiAgICAgIH0KICAgICAg
ZWxzZQogICAgICAgIF9NX3B1c2hfZnJvbnRfYXV4KF9fdCk7CiAgICB9CiAgCiEgICB2b2lkCiEg
ICBwdXNoX2Zyb250KCkKISAgIHsKICAgICAgaWYgKF9NX3N0YXJ0Ll9NX2N1ciAhPSBfTV9zdGFy
dC5fTV9maXJzdCkgewohICAgICAgIF9Db25zdHJ1Y3QoX01fc3RhcnQuX01fY3VyIC0gMSk7CiAg
ICAgICAgLS1fTV9zdGFydC5fTV9jdXI7CiAgICAgIH0KICAgICAgZWxzZQoqKioqKioqKioqKioq
KiogcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwdXNoXwoqKiogNjIyLDYzOSAq
KioqCiAgICB9CiAgCiAgCiEgICB2b2lkIHBvcF9iYWNrKCkgewogICAgICBpZiAoX01fZmluaXNo
Ll9NX2N1ciAhPSBfTV9maW5pc2guX01fZmlyc3QpIHsKICAgICAgICAtLV9NX2ZpbmlzaC5fTV9j
dXI7CiEgICAgICAgZGVzdHJveShfTV9maW5pc2guX01fY3VyKTsKICAgICAgfQogICAgICBlbHNl
CiAgICAgICAgX01fcG9wX2JhY2tfYXV4KCk7CiAgICB9CiAgCiEgICB2b2lkIHBvcF9mcm9udCgp
IHsKICAgICAgaWYgKF9NX3N0YXJ0Ll9NX2N1ciAhPSBfTV9zdGFydC5fTV9sYXN0IC0gMSkgewoh
ICAgICAgIGRlc3Ryb3koX01fc3RhcnQuX01fY3VyKTsKICAgICAgICArK19NX3N0YXJ0Ll9NX2N1
cjsKICAgICAgfQogICAgICBlbHNlIAotLS0gNjQ1LDY2NiAtLS0tCiAgICB9CiAgCiAgCiEgICB2
b2lkCiEgICBwb3BfYmFjaygpCiEgICB7CiAgICAgIGlmIChfTV9maW5pc2guX01fY3VyICE9IF9N
X2ZpbmlzaC5fTV9maXJzdCkgewogICAgICAgIC0tX01fZmluaXNoLl9NX2N1cjsKISAgICAgICBf
RGVzdHJveShfTV9maW5pc2guX01fY3VyKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgX01f
cG9wX2JhY2tfYXV4KCk7CiAgICB9CiAgCiEgICB2b2lkCiEgICBwb3BfZnJvbnQoKQohICAgewog
ICAgICBpZiAoX01fc3RhcnQuX01fY3VyICE9IF9NX3N0YXJ0Ll9NX2xhc3QgLSAxKSB7CiEgICAg
ICAgX0Rlc3Ryb3koX01fc3RhcnQuX01fY3VyKTsKICAgICAgICArK19NX3N0YXJ0Ll9NX2N1cjsK
ICAgICAgfQogICAgICBlbHNlIAoqKioqKioqKioqKioqKiogcHVibGljOiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBwdXNoXwoqKiogNjQyLDY0OCAqKioqCiAgCiAgcHVibGljOiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBJbnNlcnQKICAKISAgIGl0ZXJhdG9yIGluc2VydChpdGVyYXRv
ciBwb3NpdGlvbiwgY29uc3QgdmFsdWVfdHlwZSYgX194KSB7CiAgICAgIGlmIChwb3NpdGlvbi5f
TV9jdXIgPT0gX01fc3RhcnQuX01fY3VyKSB7CiAgICAgICAgcHVzaF9mcm9udChfX3gpOwogICAg
ICAgIHJldHVybiBfTV9zdGFydDsKLS0tIDY2OSw2NzcgLS0tLQogIAogIHB1YmxpYzogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSW5zZXJ0CiAgCiEgICBpdGVyYXRvcgohICAgaW5zZXJ0KGl0
ZXJhdG9yIHBvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpCiEgICB7CiAgICAgIGlmIChw
b3NpdGlvbi5fTV9jdXIgPT0gX01fc3RhcnQuX01fY3VyKSB7CiAgICAgICAgcHVzaF9mcm9udChf
X3gpOwogICAgICAgIHJldHVybiBfTV9zdGFydDsKKioqKioqKioqKioqKioqIHB1YmxpYzogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSW5zZXIKKioqIDY1OCw2OTAgKioqKgogICAgICB9CiAg
ICB9CiAgCiEgICBpdGVyYXRvciBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbikKISAgICAgeyBy
ZXR1cm4gaW5zZXJ0KF9fcG9zaXRpb24sIHZhbHVlX3R5cGUoKSk7IH0KICAKISAgIHZvaWQgaW5z
ZXJ0KGl0ZXJhdG9yIF9fcG9zLCBzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gp
CiEgICAgIHsgX01fZmlsbF9pbnNlcnQoX19wb3MsIF9fbiwgX194KTsgfQogIAotICAgdm9pZCBf
TV9maWxsX2luc2VydChpdGVyYXRvciBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgdmFsdWVf
dHlwZSYgX194KTsgCi0gCiAgICAvLyBDaGVjayB3aGV0aGVyIGl0J3MgYW4gaW50ZWdyYWwgdHlw
ZS4gIElmIHNvLCBpdCdzIG5vdCBhbiBpdGVyYXRvci4KISAgIHRlbXBsYXRlIDxjbGFzcyBfSW5w
dXRJdGVyYXRvcj4KISAgIHZvaWQgaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zLCBfSW5wdXRJdGVyYXRv
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKISAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBfSXNfaW50ZWdlcjxfSW5wdXRJdGVyYXRvcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7CiEgICAg
IF9NX2luc2VydF9kaXNwYXRjaChfX3BvcywgX19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7
CiEgICB9CiEgCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiEgICB2b2lkIF9NX2luc2Vy
dF9kaXNwYXRjaChpdGVyYXRvciBfX3BvcywgX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3gsCiEg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RydWVfdHlwZSkgewohICAgICBfTV9maWxsX2lu
c2VydChfX3BvcywgKHNpemVfdHlwZSkgX19uLCAodmFsdWVfdHlwZSkgX194KTsKISAgIH0KISAK
ISAgIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KISAgIHZvaWQgX01faW5zZXJ0X2Rp
c3BhdGNoKGl0ZXJhdG9yIF9fcG9zLAohICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0
SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAohICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19mYWxzZV90eXBlKSB7CiEgICAgIGluc2VydChfX3BvcywgX19maXJzdCwg
X19sYXN0LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKISAgIH0KICAKICAgIHZvaWQg
cmVzaXplKHNpemVfdHlwZSBfX25ld19zaXplLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpIHsKICAg
ICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc2l6ZSgpOwotLS0gNjg3LDcyNiAtLS0tCiAgICAg
IH0KICAgIH0KICAKISAgIGl0ZXJhdG9yCiEgICBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbikK
ISAgIHsgcmV0dXJuIGluc2VydChfX3Bvc2l0aW9uLCB2YWx1ZV90eXBlKCkpOyB9CiEgCiEgICB2
b2lkCiEgICBpbnNlcnQoaXRlcmF0b3IgX19wb3MsIHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVl
X3R5cGUmIF9feCkKISAgIHsgX01fZmlsbF9pbnNlcnQoX19wb3MsIF9fbiwgX194KTsgfQogIAoh
ICAgdm9pZAohICAgX01fZmlsbF9pbnNlcnQoaXRlcmF0b3IgX19wb3MsIHNpemVfdHlwZSBfX24s
IGNvbnN0IHZhbHVlX3R5cGUmIF9feCk7IAogIAogICAgLy8gQ2hlY2sgd2hldGhlciBpdCdzIGFu
IGludGVncmFsIHR5cGUuICBJZiBzbywgaXQncyBub3QgYW4gaXRlcmF0b3IuCiEgICB0ZW1wbGF0
ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KISAgICAgdm9pZAohICAgICBpbnNlcnQoaXRlcmF0b3Ig
X19wb3MsIF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKISAg
ICAgewohICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0lzX2ludGVnZXI8X0lucHV0SXRlcmF0b3I+
OjpfSW50ZWdyYWwgX0ludGVncmFsOwohICAgICAgIF9NX2luc2VydF9kaXNwYXRjaChfX3Bvcywg
X19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiEgICAgIH0KISAKISAgIHRlbXBsYXRlPGNs
YXNzIF9JbnRlZ2VyPgohICAgICB2b2lkCiEgICAgIF9NX2luc2VydF9kaXNwYXRjaChpdGVyYXRv
ciBfX3BvcywgX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3gsIF9fdHJ1ZV90eXBlKQohICAgICB7
IF9NX2ZpbGxfaW5zZXJ0KF9fcG9zLCBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9fbiksIHN0YXRp
Y19jYXN0PHZhbHVlX3R5cGU+KF9feCkpOyB9CiEgCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJ
dGVyYXRvcj4KISAgICAgdm9pZAohICAgICBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19w
b3MsCiEgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5w
dXRJdGVyYXRvciBfX2xhc3QsCiEgICAgICAgICAgICAgICAgICAgICAgICBfX2ZhbHNlX3R5cGUp
CiEgICAgIHsKISAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJ
dGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9JdGVyQ2F0ZWdvcnk7CiEgICAgICAgaW5zZXJ0
KF9fcG9zLCBfX2ZpcnN0LCBfX2xhc3QsIF9JdGVyQ2F0ZWdvcnkoKSk7CiEgICAgIH0KICAKICAg
IHZvaWQgcmVzaXplKHNpemVfdHlwZSBfX25ld19zaXplLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gp
IHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc2l6ZSgpOwoqKioqKioqKioqKioqKiog
ZGVxdWU8X1RwLF9BbGxvYz46OmVyYXNlKGl0ZXJhdG9yIF9fZmlycwoqKiogODQ3LDg2MCAqKioq
CiAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9fZWxlbXNfYmVmb3JlKSA8IChzaXpl
KCkgLSBfX24pIC8gMikgewogICAgICAgIGNvcHlfYmFja3dhcmQoX01fc3RhcnQsIF9fZmlyc3Qs
IF9fbGFzdCk7CiAgICAgICAgaXRlcmF0b3IgX19uZXdfc3RhcnQgPSBfTV9zdGFydCArIF9fbjsK
ISAgICAgICBkZXN0cm95KF9NX3N0YXJ0LCBfX25ld19zdGFydCk7CiAgICAgICAgX01fZGVzdHJv
eV9ub2RlcyhfX25ld19zdGFydC5fTV9ub2RlLCBfTV9zdGFydC5fTV9ub2RlKTsKICAgICAgICBf
TV9zdGFydCA9IF9fbmV3X3N0YXJ0OwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIGNvcHko
X19sYXN0LCBfTV9maW5pc2gsIF9fZmlyc3QpOwogICAgICAgIGl0ZXJhdG9yIF9fbmV3X2Zpbmlz
aCA9IF9NX2ZpbmlzaCAtIF9fbjsKISAgICAgICBkZXN0cm95KF9fbmV3X2ZpbmlzaCwgX01fZmlu
aXNoKTsKICAgICAgICBfTV9kZXN0cm95X25vZGVzKF9fbmV3X2ZpbmlzaC5fTV9ub2RlICsgMSwg
X01fZmluaXNoLl9NX25vZGUgKyAxKTsKICAgICAgICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7
CiAgICAgIH0KLS0tIDg4Myw4OTYgLS0tLQogICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90eXBl
PihfX2VsZW1zX2JlZm9yZSkgPCAoc2l6ZSgpIC0gX19uKSAvIDIpIHsKICAgICAgICBjb3B5X2Jh
Y2t3YXJkKF9NX3N0YXJ0LCBfX2ZpcnN0LCBfX2xhc3QpOwogICAgICAgIGl0ZXJhdG9yIF9fbmV3
X3N0YXJ0ID0gX01fc3RhcnQgKyBfX247CiEgICAgICAgX0Rlc3Ryb3koX01fc3RhcnQsIF9fbmV3
X3N0YXJ0KTsKICAgICAgICBfTV9kZXN0cm95X25vZGVzKF9fbmV3X3N0YXJ0Ll9NX25vZGUsIF9N
X3N0YXJ0Ll9NX25vZGUpOwogICAgICAgIF9NX3N0YXJ0ID0gX19uZXdfc3RhcnQ7CiAgICAgIH0K
ICAgICAgZWxzZSB7CiAgICAgICAgY29weShfX2xhc3QsIF9NX2ZpbmlzaCwgX19maXJzdCk7CiAg
ICAgICAgaXRlcmF0b3IgX19uZXdfZmluaXNoID0gX01fZmluaXNoIC0gX19uOwohICAgICAgIF9E
ZXN0cm95KF9fbmV3X2ZpbmlzaCwgX01fZmluaXNoKTsKICAgICAgICBfTV9kZXN0cm95X25vZGVz
KF9fbmV3X2ZpbmlzaC5fTV9ub2RlICsgMSwgX01fZmluaXNoLl9NX25vZGUgKyAxKTsKICAgICAg
ICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7CiAgICAgIH0KKioqKioqKioqKioqKioqIHZvaWQg
ZGVxdWU8X1RwLF9BbGxvYz46OmNsZWFyKCkKKioqIDg2OCw4ODQgKioqKgogICAgZm9yIChfTWFw
X3BvaW50ZXIgX19ub2RlID0gX01fc3RhcnQuX01fbm9kZSArIDE7CiAgICAgICAgIF9fbm9kZSA8
IF9NX2ZpbmlzaC5fTV9ub2RlOwogICAgICAgICArK19fbm9kZSkgewohICAgICBkZXN0cm95KCpf
X25vZGUsICpfX25vZGUgKyBfU19idWZmZXJfc2l6ZSgpKTsKICAgICAgX01fZGVhbGxvY2F0ZV9u
b2RlKCpfX25vZGUpOwogICAgfQogIAogICAgaWYgKF9NX3N0YXJ0Ll9NX25vZGUgIT0gX01fZmlu
aXNoLl9NX25vZGUpIHsKISAgICAgZGVzdHJveShfTV9zdGFydC5fTV9jdXIsIF9NX3N0YXJ0Ll9N
X2xhc3QpOwohICAgICBkZXN0cm95KF9NX2ZpbmlzaC5fTV9maXJzdCwgX01fZmluaXNoLl9NX2N1
cik7CiAgICAgIF9NX2RlYWxsb2NhdGVfbm9kZShfTV9maW5pc2guX01fZmlyc3QpOwogICAgfQog
ICAgZWxzZQohICAgICBkZXN0cm95KF9NX3N0YXJ0Ll9NX2N1ciwgX01fZmluaXNoLl9NX2N1cik7
CiAgCiAgICBfTV9maW5pc2ggPSBfTV9zdGFydDsKICB9Ci0tLSA5MDQsOTIwIC0tLS0KICAgIGZv
ciAoX01hcF9wb2ludGVyIF9fbm9kZSA9IF9NX3N0YXJ0Ll9NX25vZGUgKyAxOwogICAgICAgICBf
X25vZGUgPCBfTV9maW5pc2guX01fbm9kZTsKICAgICAgICAgKytfX25vZGUpIHsKISAgICAgX0Rl
c3Ryb3koKl9fbm9kZSwgKl9fbm9kZSArIF9TX2J1ZmZlcl9zaXplKCkpOwogICAgICBfTV9kZWFs
bG9jYXRlX25vZGUoKl9fbm9kZSk7CiAgICB9CiAgCiAgICBpZiAoX01fc3RhcnQuX01fbm9kZSAh
PSBfTV9maW5pc2guX01fbm9kZSkgewohICAgICBfRGVzdHJveShfTV9zdGFydC5fTV9jdXIsIF9N
X3N0YXJ0Ll9NX2xhc3QpOwohICAgICBfRGVzdHJveShfTV9maW5pc2guX01fZmlyc3QsIF9NX2Zp
bmlzaC5fTV9jdXIpOwogICAgICBfTV9kZWFsbG9jYXRlX25vZGUoX01fZmluaXNoLl9NX2ZpcnN0
KTsKICAgIH0KICAgIGVsc2UKISAgICAgX0Rlc3Ryb3koX01fc3RhcnQuX01fY3VyLCBfTV9maW5p
c2guX01fY3VyKTsKICAKICAgIF9NX2ZpbmlzaCA9IF9NX3N0YXJ0OwogIH0KKioqKioqKioqKioq
KioqIHZvaWQgZGVxdWU8X1RwLF9BbGxvYz46Ol9NX2ZpbGxfaW5pdGlhbGkKKioqIDg5Myw4OTkg
KioqKgogICAgICAgIHVuaW5pdGlhbGl6ZWRfZmlsbCgqX19jdXIsICpfX2N1ciArIF9TX2J1ZmZl
cl9zaXplKCksIF9fdmFsdWUpOwogICAgICB1bmluaXRpYWxpemVkX2ZpbGwoX01fZmluaXNoLl9N
X2ZpcnN0LCBfTV9maW5pc2guX01fY3VyLCBfX3ZhbHVlKTsKICAgIH0KISAgIF9fU1RMX1VOV0lO
RChkZXN0cm95KF9NX3N0YXJ0LCBpdGVyYXRvcigqX19jdXIsIF9fY3VyKSkpOwogIH0KICAKICB0
ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ
dGVyYXRvcj4KLS0tIDkyOSw5MzUgLS0tLQogICAgICAgIHVuaW5pdGlhbGl6ZWRfZmlsbCgqX19j
dXIsICpfX2N1ciArIF9TX2J1ZmZlcl9zaXplKCksIF9fdmFsdWUpOwogICAgICB1bmluaXRpYWxp
emVkX2ZpbGwoX01fZmluaXNoLl9NX2ZpcnN0LCBfTV9maW5pc2guX01fY3VyLCBfX3ZhbHVlKTsK
ICAgIH0KISAgIF9fU1RMX1VOV0lORChfRGVzdHJveShfTV9zdGFydCwgaXRlcmF0b3IoKl9fY3Vy
LCBfX2N1cikpKTsKICB9CiAgCiAgdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPiB0
ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CioqKioqKioqKioqKioqKiB2b2lkIGRlcXVl
PF9UcCxfQWxsb2M+OjpfTV9yYW5nZV9pbml0aWFsCioqKiA5MzAsOTQ3ICoqKioKICAgICAgfQog
ICAgICB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0LCBfTV9maW5pc2guX01fZmly
c3QpOwogICAgfQohICAgX19TVExfVU5XSU5EKGRlc3Ryb3koX01fc3RhcnQsIGl0ZXJhdG9yKCpf
X2N1cl9ub2RlLCBfX2N1cl9ub2RlKSkpOwogIH0KICAKICAvLyBDYWxsZWQgb25seSBpZiBfTV9m
aW5pc2guX01fY3VyID09IF9NX2ZpbmlzaC5fTV9sYXN0IC0gMS4KICB0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwLCBjbGFzcyBfQWxsb2M+CiEgdm9pZCBkZXF1ZTxfVHAsX0FsbG9jPjo6X01fcHVzaF9iYWNr
X2F1eChjb25zdCB2YWx1ZV90eXBlJiBfX3QpCiAgewogICAgdmFsdWVfdHlwZSBfX3RfY29weSA9
IF9fdDsKICAgIF9NX3Jlc2VydmVfbWFwX2F0X2JhY2soKTsKICAgICooX01fZmluaXNoLl9NX25v
ZGUgKyAxKSA9IF9NX2FsbG9jYXRlX25vZGUoKTsKICAgIF9fU1RMX1RSWSB7CiEgICAgIGNvbnN0
cnVjdChfTV9maW5pc2guX01fY3VyLCBfX3RfY29weSk7CiAgICAgIF9NX2ZpbmlzaC5fTV9zZXRf
bm9kZShfTV9maW5pc2guX01fbm9kZSArIDEpOwogICAgICBfTV9maW5pc2guX01fY3VyID0gX01f
ZmluaXNoLl9NX2ZpcnN0OwogICAgfQotLS0gOTY2LDk4NCAtLS0tCiAgICAgIH0KICAgICAgdW5p
bml0aWFsaXplZF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX01fZmluaXNoLl9NX2ZpcnN0KTsKICAg
IH0KISAgIF9fU1RMX1VOV0lORChfRGVzdHJveShfTV9zdGFydCwgaXRlcmF0b3IoKl9fY3VyX25v
ZGUsIF9fY3VyX25vZGUpKSk7CiAgfQogIAogIC8vIENhbGxlZCBvbmx5IGlmIF9NX2ZpbmlzaC5f
TV9jdXIgPT0gX01fZmluaXNoLl9NX2xhc3QgLSAxLgogIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNs
YXNzIF9BbGxvYz4KISB2b2lkCiEgZGVxdWU8X1RwLF9BbGxvYz46Ol9NX3B1c2hfYmFja19hdXgo
Y29uc3QgdmFsdWVfdHlwZSYgX190KQogIHsKICAgIHZhbHVlX3R5cGUgX190X2NvcHkgPSBfX3Q7
CiAgICBfTV9yZXNlcnZlX21hcF9hdF9iYWNrKCk7CiAgICAqKF9NX2ZpbmlzaC5fTV9ub2RlICsg
MSkgPSBfTV9hbGxvY2F0ZV9ub2RlKCk7CiAgICBfX1NUTF9UUlkgewohICAgICBfQ29uc3RydWN0
KF9NX2ZpbmlzaC5fTV9jdXIsIF9fdF9jb3B5KTsKICAgICAgX01fZmluaXNoLl9NX3NldF9ub2Rl
KF9NX2ZpbmlzaC5fTV9ub2RlICsgMSk7CiAgICAgIF9NX2ZpbmlzaC5fTV9jdXIgPSBfTV9maW5p
c2guX01fZmlyc3Q7CiAgICB9CioqKioqKioqKioqKioqKiB2b2lkIGRlcXVlPF9UcCxfQWxsb2M+
OjpfTV9wdXNoX2JhY2tfYXV4CioqKiA5NTAsOTYxICoqKioKICAKICAvLyBDYWxsZWQgb25seSBp
ZiBfTV9maW5pc2guX01fY3VyID09IF9NX2ZpbmlzaC5fTV9sYXN0IC0gMS4KICB0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CiEgdm9pZCBkZXF1ZTxfVHAsX0FsbG9jPjo6X01fcHVz
aF9iYWNrX2F1eCgpCiAgewogICAgX01fcmVzZXJ2ZV9tYXBfYXRfYmFjaygpOwogICAgKihfTV9m
aW5pc2guX01fbm9kZSArIDEpID0gX01fYWxsb2NhdGVfbm9kZSgpOwogICAgX19TVExfVFJZIHsK
ISAgICAgY29uc3RydWN0KF9NX2ZpbmlzaC5fTV9jdXIpOwogICAgICBfTV9maW5pc2guX01fc2V0
X25vZGUoX01fZmluaXNoLl9NX25vZGUgKyAxKTsKICAgICAgX01fZmluaXNoLl9NX2N1ciA9IF9N
X2ZpbmlzaC5fTV9maXJzdDsKICAgIH0KLS0tIDk4Nyw5OTkgLS0tLQogIAogIC8vIENhbGxlZCBv
bmx5IGlmIF9NX2ZpbmlzaC5fTV9jdXIgPT0gX01fZmluaXNoLl9NX2xhc3QgLSAxLgogIHRlbXBs
YXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4KISB2b2lkCiEgZGVxdWU8X1RwLF9BbGxvYz46
Ol9NX3B1c2hfYmFja19hdXgoKQogIHsKICAgIF9NX3Jlc2VydmVfbWFwX2F0X2JhY2soKTsKICAg
ICooX01fZmluaXNoLl9NX25vZGUgKyAxKSA9IF9NX2FsbG9jYXRlX25vZGUoKTsKICAgIF9fU1RM
X1RSWSB7CiEgICAgIF9Db25zdHJ1Y3QoX01fZmluaXNoLl9NX2N1cik7CiAgICAgIF9NX2Zpbmlz
aC5fTV9zZXRfbm9kZShfTV9maW5pc2guX01fbm9kZSArIDEpOwogICAgICBfTV9maW5pc2guX01f
Y3VyID0gX01fZmluaXNoLl9NX2ZpcnN0OwogICAgfQoqKioqKioqKioqKioqKiogdm9pZCBkZXF1
ZTxfVHAsX0FsbG9jPjo6X01fcHVzaF9iYWNrX2F1eAoqKiogOTY0LDk3MCAqKioqCiAgCiAgLy8g
Q2FsbGVkIG9ubHkgaWYgX01fc3RhcnQuX01fY3VyID09IF9NX3N0YXJ0Ll9NX2ZpcnN0LgogIHRl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4KISB2b2lkICBkZXF1ZTxfVHAsX0FsbG9j
Pjo6X01fcHVzaF9mcm9udF9hdXgoY29uc3QgdmFsdWVfdHlwZSYgX190KQogIHsKICAgIHZhbHVl
X3R5cGUgX190X2NvcHkgPSBfX3Q7CiAgICBfTV9yZXNlcnZlX21hcF9hdF9mcm9udCgpOwotLS0g
MTAwMiwxMDA5IC0tLS0KICAKICAvLyBDYWxsZWQgb25seSBpZiBfTV9zdGFydC5fTV9jdXIgPT0g
X01fc3RhcnQuX01fZmlyc3QuCiAgdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgoh
IHZvaWQKISBkZXF1ZTxfVHAsX0FsbG9jPjo6X01fcHVzaF9mcm9udF9hdXgoY29uc3QgdmFsdWVf
dHlwZSYgX190KQogIHsKICAgIHZhbHVlX3R5cGUgX190X2NvcHkgPSBfX3Q7CiAgICBfTV9yZXNl
cnZlX21hcF9hdF9mcm9udCgpOwoqKioqKioqKioqKioqKiogdm9pZCAgZGVxdWU8X1RwLF9BbGxv
Yz46Ol9NX3B1c2hfZnJvbnRfYQoqKiogOTcyLDk5MiAqKioqCiAgICBfX1NUTF9UUlkgewogICAg
ICBfTV9zdGFydC5fTV9zZXRfbm9kZShfTV9zdGFydC5fTV9ub2RlIC0gMSk7CiAgICAgIF9NX3N0
YXJ0Ll9NX2N1ciA9IF9NX3N0YXJ0Ll9NX2xhc3QgLSAxOwohICAgICBjb25zdHJ1Y3QoX01fc3Rh
cnQuX01fY3VyLCBfX3RfY29weSk7CiAgICB9CiAgICBfX1NUTF9VTldJTkQoKCsrX01fc3RhcnQs
IF9NX2RlYWxsb2NhdGVfbm9kZSgqKF9NX3N0YXJ0Ll9NX25vZGUgLSAxKSkpKTsKICB9IAogIAog
IC8vIENhbGxlZCBvbmx5IGlmIF9NX3N0YXJ0Ll9NX2N1ciA9PSBfTV9zdGFydC5fTV9maXJzdC4K
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CiEgdm9pZCBkZXF1ZTxfVHAsX0Fs
bG9jPjo6X01fcHVzaF9mcm9udF9hdXgoKQogIHsKICAgIF9NX3Jlc2VydmVfbWFwX2F0X2Zyb250
KCk7CiAgICAqKF9NX3N0YXJ0Ll9NX25vZGUgLSAxKSA9IF9NX2FsbG9jYXRlX25vZGUoKTsKICAg
IF9fU1RMX1RSWSB7CiAgICAgIF9NX3N0YXJ0Ll9NX3NldF9ub2RlKF9NX3N0YXJ0Ll9NX25vZGUg
LSAxKTsKICAgICAgX01fc3RhcnQuX01fY3VyID0gX01fc3RhcnQuX01fbGFzdCAtIDE7CiEgICAg
IGNvbnN0cnVjdChfTV9zdGFydC5fTV9jdXIpOwogICAgfQogICAgX19TVExfVU5XSU5EKCgrK19N
X3N0YXJ0LCBfTV9kZWFsbG9jYXRlX25vZGUoKihfTV9zdGFydC5fTV9ub2RlIC0gMSkpKSk7CiAg
fSAKLS0tIDEwMTEsMTAzMiAtLS0tCiAgICBfX1NUTF9UUlkgewogICAgICBfTV9zdGFydC5fTV9z
ZXRfbm9kZShfTV9zdGFydC5fTV9ub2RlIC0gMSk7CiAgICAgIF9NX3N0YXJ0Ll9NX2N1ciA9IF9N
X3N0YXJ0Ll9NX2xhc3QgLSAxOwohICAgICBfQ29uc3RydWN0KF9NX3N0YXJ0Ll9NX2N1ciwgX190
X2NvcHkpOwogICAgfQogICAgX19TVExfVU5XSU5EKCgrK19NX3N0YXJ0LCBfTV9kZWFsbG9jYXRl
X25vZGUoKihfTV9zdGFydC5fTV9ub2RlIC0gMSkpKSk7CiAgfSAKICAKICAvLyBDYWxsZWQgb25s
eSBpZiBfTV9zdGFydC5fTV9jdXIgPT0gX01fc3RhcnQuX01fZmlyc3QuCiAgdGVtcGxhdGUgPGNs
YXNzIF9UcCwgY2xhc3MgX0FsbG9jPgohIHZvaWQKISBkZXF1ZTxfVHAsX0FsbG9jPjo6X01fcHVz
aF9mcm9udF9hdXgoKQogIHsKICAgIF9NX3Jlc2VydmVfbWFwX2F0X2Zyb250KCk7CiAgICAqKF9N
X3N0YXJ0Ll9NX25vZGUgLSAxKSA9IF9NX2FsbG9jYXRlX25vZGUoKTsKICAgIF9fU1RMX1RSWSB7
CiAgICAgIF9NX3N0YXJ0Ll9NX3NldF9ub2RlKF9NX3N0YXJ0Ll9NX25vZGUgLSAxKTsKICAgICAg
X01fc3RhcnQuX01fY3VyID0gX01fc3RhcnQuX01fbGFzdCAtIDE7CiEgICAgIF9Db25zdHJ1Y3Qo
X01fc3RhcnQuX01fY3VyKTsKICAgIH0KICAgIF9fU1RMX1VOV0lORCgoKytfTV9zdGFydCwgX01f
ZGVhbGxvY2F0ZV9ub2RlKCooX01fc3RhcnQuX01fbm9kZSAtIDEpKSkpOwogIH0gCioqKioqKioq
KioqKioqKiB2b2lkIGRlcXVlPF9UcCxfQWxsb2M+OjpfTV9wb3BfYmFja19hdXgoCioqKiA5OTgs
MTAwNCAqKioqCiAgICBfTV9kZWFsbG9jYXRlX25vZGUoX01fZmluaXNoLl9NX2ZpcnN0KTsKICAg
IF9NX2ZpbmlzaC5fTV9zZXRfbm9kZShfTV9maW5pc2guX01fbm9kZSAtIDEpOwogICAgX01fZmlu
aXNoLl9NX2N1ciA9IF9NX2ZpbmlzaC5fTV9sYXN0IC0gMTsKISAgIGRlc3Ryb3koX01fZmluaXNo
Ll9NX2N1cik7CiAgfQogIAogIC8vIENhbGxlZCBvbmx5IGlmIF9NX3N0YXJ0Ll9NX2N1ciA9PSBf
TV9zdGFydC5fTV9sYXN0IC0gMS4gIE5vdGUgdGhhdCAKLS0tIDEwMzgsMTA0NCAtLS0tCiAgICBf
TV9kZWFsbG9jYXRlX25vZGUoX01fZmluaXNoLl9NX2ZpcnN0KTsKICAgIF9NX2ZpbmlzaC5fTV9z
ZXRfbm9kZShfTV9maW5pc2guX01fbm9kZSAtIDEpOwogICAgX01fZmluaXNoLl9NX2N1ciA9IF9N
X2ZpbmlzaC5fTV9sYXN0IC0gMTsKISAgIF9EZXN0cm95KF9NX2ZpbmlzaC5fTV9jdXIpOwogIH0K
ICAKICAvLyBDYWxsZWQgb25seSBpZiBfTV9zdGFydC5fTV9jdXIgPT0gX01fc3RhcnQuX01fbGFz
dCAtIDEuICBOb3RlIHRoYXQgCioqKioqKioqKioqKioqKiB2b2lkIGRlcXVlPF9UcCxfQWxsb2M+
OjpfTV9wb3BfYmFja19hdXgoCioqKiAxMDA4LDEwMTQgKioqKgogIHRlbXBsYXRlIDxjbGFzcyBf
VHAsIGNsYXNzIF9BbGxvYz4KICB2b2lkIGRlcXVlPF9UcCxfQWxsb2M+OjpfTV9wb3BfZnJvbnRf
YXV4KCkKICB7CiEgICBkZXN0cm95KF9NX3N0YXJ0Ll9NX2N1cik7CiAgICBfTV9kZWFsbG9jYXRl
X25vZGUoX01fc3RhcnQuX01fZmlyc3QpOwogICAgX01fc3RhcnQuX01fc2V0X25vZGUoX01fc3Rh
cnQuX01fbm9kZSArIDEpOwogICAgX01fc3RhcnQuX01fY3VyID0gX01fc3RhcnQuX01fZmlyc3Q7
Ci0tLSAxMDQ4LDEwNTQgLS0tLQogIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4K
ICB2b2lkIGRlcXVlPF9UcCxfQWxsb2M+OjpfTV9wb3BfZnJvbnRfYXV4KCkKICB7CiEgICBfRGVz
dHJveShfTV9zdGFydC5fTV9jdXIpOwogICAgX01fZGVhbGxvY2F0ZV9ub2RlKF9NX3N0YXJ0Ll9N
X2ZpcnN0KTsKICAgIF9NX3N0YXJ0Ll9NX3NldF9ub2RlKF9NX3N0YXJ0Ll9NX25vZGUgKyAxKTsK
ICAgIF9NX3N0YXJ0Ll9NX2N1ciA9IF9NX3N0YXJ0Ll9NX2ZpcnN0OwpJbmRleDogaW5jbHVkZS9i
aXRzL3N0bF90ZW1wYnVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2MvZ2NjL2xpYnN0
ZGMrKy12My9pbmNsdWRlL2JpdHMvc3RsX3RlbXBidWYuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS41CmRpZmYgLWMgLTMgLXAgLXIxLjUgc3RsX3RlbXBidWYuaAoqKiogc3RsX3RlbXBidWYuaAky
MDAxLzA2LzI3IDE3OjA5OjUyCTEuNQotLS0gc3RsX3RlbXBidWYuaAkyMDAxLzA3LzAxIDEyOjQ3
OjI3CioqKioqKioqKioqKioqKiBwdWJsaWM6CioqKiAxNDksMTU1ICoqKioKICAgIH0KICAgCiAg
ICB+X1RlbXBvcmFyeV9idWZmZXIoKSB7ICAKISAgICAgZGVzdHJveShfTV9idWZmZXIsIF9NX2J1
ZmZlciArIF9NX2xlbik7CiAgICAgIGZyZWUoX01fYnVmZmVyKTsKICAgIH0KICAKLS0tIDE0OSwx
NTUgLS0tLQogICAgfQogICAKICAgIH5fVGVtcG9yYXJ5X2J1ZmZlcigpIHsgIAohICAgICBfRGVz
dHJveShfTV9idWZmZXIsIF9NX2J1ZmZlciArIF9NX2xlbik7CiAgICAgIGZyZWUoX01fYnVmZmVy
KTsKICAgIH0KICAKSW5kZXg6IGluY2x1ZGUvYml0cy9zdGxfdHJlZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvZ2NjL2djYy9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3N0bF90cmVlLmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1jIC0zIC1wIC1yMS42IHN0bF90cmVlLmgK
KioqIHN0bF90cmVlLmgJMjAwMS8wNi8yNyAxNzowOTo1MgkxLjYKLS0tIHN0bF90cmVlLmgJMjAw
MS8wNy8wMSAxMjo0NzozNgoqKioqKioqKioqKioqKiogcHJvdGVjdGVkOgoqKiogNTUyLDU2MiAq
KioqCiAgCiAgcHJvdGVjdGVkOgogIAohICAgX0xpbmtfdHlwZSBfTV9jcmVhdGVfbm9kZShjb25z
dCB2YWx1ZV90eXBlJiBfX3gpCiAgICB7CiAgICAgIF9MaW5rX3R5cGUgX190bXAgPSBfTV9nZXRf
bm9kZSgpOwogICAgICBfX1NUTF9UUlkgewohICAgICAgIGNvbnN0cnVjdCgmX190bXAtPl9NX3Zh
bHVlX2ZpZWxkLCBfX3gpOwogICAgICB9CiAgICAgIF9fU1RMX1VOV0lORChfTV9wdXRfbm9kZShf
X3RtcCkpOwogICAgICByZXR1cm4gX190bXA7Ci0tLSA1NTIsNTYzIC0tLS0KICAKICBwcm90ZWN0
ZWQ6CiAgCiEgICBfTGlua190eXBlCiEgICBfTV9jcmVhdGVfbm9kZShjb25zdCB2YWx1ZV90eXBl
JiBfX3gpCiAgICB7CiAgICAgIF9MaW5rX3R5cGUgX190bXAgPSBfTV9nZXRfbm9kZSgpOwogICAg
ICBfX1NUTF9UUlkgewohICAgICAgIF9Db25zdHJ1Y3QoJl9fdG1wLT5fTV92YWx1ZV9maWVsZCwg
X194KTsKICAgICAgfQogICAgICBfX1NUTF9VTldJTkQoX01fcHV0X25vZGUoX190bXApKTsKICAg
ICAgcmV0dXJuIF9fdG1wOwoqKioqKioqKioqKioqKiogcHJvdGVjdGVkOgoqKiogNTcxLDU3OSAq
KioqCiAgICAgIHJldHVybiBfX3RtcDsKICAgIH0KICAKISAgIHZvaWQgZGVzdHJveV9ub2RlKF9M
aW5rX3R5cGUgX19wKQogICAgewohICAgICBkZXN0cm95KCZfX3AtPl9NX3ZhbHVlX2ZpZWxkKTsK
ICAgICAgX01fcHV0X25vZGUoX19wKTsKICAgIH0KICAKLS0tIDU3Miw1ODEgLS0tLQogICAgICBy
ZXR1cm4gX190bXA7CiAgICB9CiAgCiEgICB2b2lkCiEgICBkZXN0cm95X25vZGUoX0xpbmtfdHlw
ZSBfX3ApCiAgICB7CiEgICAgIF9EZXN0cm95KCZfX3AtPl9NX3ZhbHVlX2ZpZWxkKTsKICAgICAg
X01fcHV0X25vZGUoX19wKTsKICAgIH0KICAKSW5kZXg6IGluY2x1ZGUvYml0cy9zdGxfdmVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2MvZ2NjL2xpYnN0ZGMrKy12My9pbmNsdWRl
L2JpdHMvc3RsX3ZlY3Rvci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjgKZGlmZiAtYyAtMyAt
cCAtcjEuOCBzdGxfdmVjdG9yLmgKKioqIHN0bF92ZWN0b3IuaAkyMDAxLzA2LzI3IDE3OjA5OjUy
CTEuOAotLS0gc3RsX3ZlY3Rvci5oCTIwMDEvMDcvMDEgMTI6NDc6NDEKKioqKioqKioqKioqKioq
IHB1YmxpYzoKKioqIDIzNiwyNjggKioqKgogIAogICAgLy8gQ2hlY2sgd2hldGhlciBpdCdzIGFu
IGludGVncmFsIHR5cGUuICBJZiBzbywgaXQncyBub3QgYW4gaXRlcmF0b3IuCiAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiEgICB2ZWN0b3IoX0lucHV0SXRlcmF0b3IgX19maXJz
dCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAohICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKSA6IF9CYXNlKF9fYSkgewohICAgICB0eXBlZGVmIHR5
cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X0ludGVncmFsIF9JbnRlZ3JhbDsK
ISAgICAgX01faW5pdGlhbGl6ZV9hdXgoX19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiEg
ICB9CiAgCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiEgICB2b2lkIF9NX2luaXRpYWxp
emVfYXV4KF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX192YWx1ZSwgX190cnVlX3R5cGUpIHsKISAg
ICAgX01fc3RhcnQgPSBfTV9hbGxvY2F0ZShfX24pOwohICAgICBfTV9lbmRfb2Zfc3RvcmFnZSA9
IF9NX3N0YXJ0ICsgX19uOyAKISAgICAgX01fZmluaXNoID0gdW5pbml0aWFsaXplZF9maWxsX24o
X01fc3RhcnQsIF9fbiwgX192YWx1ZSk7CiEgICB9CiEgCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlcmF0b3I+CiEgICB2b2lkIF9NX2luaXRpYWxpemVfYXV4KF9JbnB1dEl0ZXJhdG9yIF9f
Zmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKISAgICAgICAgICAgICAgICAgICAgICAgICAg
X19mYWxzZV90eXBlKSB7CiEgICAgIF9NX3JhbmdlX2luaXRpYWxpemUoX19maXJzdCwgX19sYXN0
LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKISAgIH0KICAKISAgIH52ZWN0b3IoKSB7
IGRlc3Ryb3koX01fc3RhcnQsIF9NX2ZpbmlzaCk7IH0KICAKICAgIHZlY3RvcjxfVHAsIF9BbGxv
Yz4mIG9wZXJhdG9yPShjb25zdCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBfX3gpOwogICAgdm9pZCBy
ZXNlcnZlKHNpemVfdHlwZSBfX24pIHsKICAgICAgaWYgKGNhcGFjaXR5KCkgPCBfX24pIHsKICAg
ICAgICBjb25zdCBzaXplX3R5cGUgX19vbGRfc2l6ZSA9IHNpemUoKTsKICAgICAgICBwb2ludGVy
IF9fdG1wID0gX01fYWxsb2NhdGVfYW5kX2NvcHkoX19uLCBfTV9zdGFydCwgX01fZmluaXNoKTsK
ISAgICAgICBkZXN0cm95KF9NX3N0YXJ0LCBfTV9maW5pc2gpOwogICAgICAgIF9NX2RlYWxsb2Nh
dGUoX01fc3RhcnQsIF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgICAgIF9NX3N0
YXJ0ID0gX190bXA7CiAgICAgICAgX01fZmluaXNoID0gX190bXAgKyBfX29sZF9zaXplOwotLS0g
MjM2LDI3NCAtLS0tCiAgCiAgICAvLyBDaGVjayB3aGV0aGVyIGl0J3MgYW4gaW50ZWdyYWwgdHlw
ZS4gIElmIHNvLCBpdCdzIG5vdCBhbiBpdGVyYXRvci4KICAgIHRlbXBsYXRlIDxjbGFzcyBfSW5w
dXRJdGVyYXRvcj4KISAgICAgdmVjdG9yKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0
ZXJhdG9yIF9fbGFzdCwKISAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBh
bGxvY2F0b3JfdHlwZSgpKQohIAk6IF9CYXNlKF9fYSkKISAJewohICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgX0lzX2ludGVnZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50ZWdyYWwgX0ludGVncmFsOwoh
ICAgICAgIF9NX2luaXRpYWxpemVfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkpOwoh
ICAgICB9CiAgCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiEgICAgIHZvaWQgX01faW5p
dGlhbGl6ZV9hdXgoX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbHVlLCBfX3RydWVfdHlwZSkK
ISAJewohICAgICAgIF9NX3N0YXJ0ID0gX01fYWxsb2NhdGUoX19uKTsKISAgICAgICBfTV9lbmRf
b2Zfc3RvcmFnZSA9IF9NX3N0YXJ0ICsgX19uOyAKISAgICAgICBfTV9maW5pc2ggPSB1bmluaXRp
YWxpemVkX2ZpbGxfbihfTV9zdGFydCwgX19uLCBfX3ZhbHVlKTsKISAgICAgfQohIAohICAgdGVt
cGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiEgICAgIHZvaWQKISAJX01faW5pdGlhbGl6ZV9h
dXgoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBfX2ZhbHNl
X3R5cGUpCiEgCXsKISAJICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJ
dGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9JdGVyQ2F0ZWdveTsKISAJICBfTV9yYW5nZV9p
bml0aWFsaXplKF9fZmlyc3QsIF9fbGFzdCwgX0l0ZXJDYXRlZ29yeSgpKTsKISAJfQogIAohICAg
fnZlY3RvcigpCiEgICB7IF9EZXN0cm95KF9NX3N0YXJ0LCBfTV9maW5pc2gpOyB9CiAgCiAgICB2
ZWN0b3I8X1RwLCBfQWxsb2M+JiBvcGVyYXRvcj0oY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYg
X194KTsKICAgIHZvaWQgcmVzZXJ2ZShzaXplX3R5cGUgX19uKSB7CiAgICAgIGlmIChjYXBhY2l0
eSgpIDwgX19uKSB7CiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fb2xkX3NpemUgPSBzaXplKCk7
CiAgICAgICAgcG9pbnRlciBfX3RtcCA9IF9NX2FsbG9jYXRlX2FuZF9jb3B5KF9fbiwgX01fc3Rh
cnQsIF9NX2ZpbmlzaCk7CiEgICAgICAgX0Rlc3Ryb3koX01fc3RhcnQsIF9NX2ZpbmlzaCk7CiAg
ICAgICAgX01fZGVhbGxvY2F0ZShfTV9zdGFydCwgX01fZW5kX29mX3N0b3JhZ2UgLSBfTV9zdGFy
dCk7CiAgICAgICAgX01fc3RhcnQgPSBfX3RtcDsKICAgICAgICBfTV9maW5pc2ggPSBfX3RtcCAr
IF9fb2xkX3NpemU7CioqKioqKioqKioqKioqKiBwdWJsaWM6CioqKiAyNzgsMjk2ICoqKioKICAg
IHZvaWQgYXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IF9UcCYgX192YWwpIHsgX01fZmlsbF9h
c3NpZ24oX19uLCBfX3ZhbCk7IH0KICAgIHZvaWQgX01fZmlsbF9hc3NpZ24oc2l6ZV90eXBlIF9f
biwgY29uc3QgX1RwJiBfX3ZhbCk7CiAgCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0
b3I+CiEgICB2b2lkIGFzc2lnbihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRv
ciBfX2xhc3QpIHsKISAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfaW50ZWdlcjxfSW5wdXRJdGVy
YXRvcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7CiEgICAgIF9NX2Fzc2lnbl9kaXNwYXRjaChfX2Zp
cnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKISAgIH0KICAKISAgIHRlbXBsYXRlIDxjbGFzcyBf
SW50ZWdlcj4KISAgIHZvaWQgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnRlZ2VyIF9fbiwgX0ludGVn
ZXIgX192YWwsIF9fdHJ1ZV90eXBlKQogICAgICB7IF9NX2ZpbGxfYXNzaWduKChzaXplX3R5cGUp
IF9fbiwgKF9UcCkgX192YWwpOyB9CiAgCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcj4K
ISAgIHZvaWQgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRl
ciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkKISAgICAgeyBfTV9hc3NpZ25fYXV4KF9fZmlyc3QsIF9f
bGFzdCwgX19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0KSk7IH0KICAKICAgIHRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyYXRvcj4KICAgIHZvaWQgX01fYXNzaWduX2F1eChfSW5wdXRJdGVyYXRv
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCi0tLSAyODQsMzA5IC0tLS0KICAgIHZv
aWQgYXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IF9UcCYgX192YWwpIHsgX01fZmlsbF9hc3Np
Z24oX19uLCBfX3ZhbCk7IH0KICAgIHZvaWQgX01fZmlsbF9hc3NpZ24oc2l6ZV90eXBlIF9fbiwg
Y29uc3QgX1RwJiBfX3ZhbCk7CiAgCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4K
ISAgICAgdm9pZAohIAlhc3NpZ24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0
b3IgX19sYXN0KQohIAl7CiEgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfaW50ZWdlcjxfSW5w
dXRJdGVyYXRvcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7CiEgICAgICAgX01fYXNzaWduX2Rpc3Bh
dGNoKF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkpOwohICAgICB9CiAgCiEgICB0ZW1wbGF0
ZTxjbGFzcyBfSW50ZWdlcj4KISAgICAgdm9pZAohIAlfTV9hc3NpZ25fZGlzcGF0Y2goX0ludGVn
ZXIgX19uLCBfSW50ZWdlciBfX3ZhbCwgX190cnVlX3R5cGUpCiAgICAgIHsgX01fZmlsbF9hc3Np
Z24oKHNpemVfdHlwZSkgX19uLCAoX1RwKSBfX3ZhbCk7IH0KICAKISAgIHRlbXBsYXRlPGNsYXNz
IF9JbnB1dEl0ZXI+CiEgICAgIHZvaWQKISAJX01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1dEl0ZXIg
X19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkKISAgICAgewohIAkgIHR5
cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjppdGVyYXRvcl9jYXRl
Z29yeSBfSXRlckNhdGVnb3J5OwohIAkgIF9NX2Fzc2lnbl9hdXgoX19maXJzdCwgX19sYXN0LCBf
SXRlckNhdGVnb3J5KCkpOwohIAl9CiAgCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0
b3I+CiAgICB2b2lkIF9NX2Fzc2lnbl9hdXgoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0
SXRlcmF0b3IgX19sYXN0LAoqKioqKioqKioqKioqKiogcHVibGljOgoqKiogMzA1LDM3MCAqKioq
CiAgICByZWZlcmVuY2UgYmFjaygpIHsgcmV0dXJuICooZW5kKCkgLSAxKTsgfQogICAgY29uc3Rf
cmVmZXJlbmNlIGJhY2soKSBjb25zdCB7IHJldHVybiAqKGVuZCgpIC0gMSk7IH0KICAKISAgIHZv
aWQgcHVzaF9iYWNrKGNvbnN0IF9UcCYgX194KSB7CiAgICAgIGlmIChfTV9maW5pc2ggIT0gX01f
ZW5kX29mX3N0b3JhZ2UpIHsKISAgICAgICBjb25zdHJ1Y3QoX01fZmluaXNoLCBfX3gpOwogICAg
ICAgICsrX01fZmluaXNoOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgICBfTV9pbnNlcnRfYXV4
KGVuZCgpLCBfX3gpOwogICAgfQohICAgdm9pZCBwdXNoX2JhY2soKSB7CiAgICAgIGlmIChfTV9m
aW5pc2ggIT0gX01fZW5kX29mX3N0b3JhZ2UpIHsKISAgICAgICBjb25zdHJ1Y3QoX01fZmluaXNo
KTsKICAgICAgICArK19NX2ZpbmlzaDsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgX01faW5z
ZXJ0X2F1eChlbmQoKSk7CiAgICB9CiEgICB2b2lkIHN3YXAodmVjdG9yPF9UcCwgX0FsbG9jPiYg
X194KSB7CiAgICAgIHN0ZDo6c3dhcChfTV9zdGFydCwgX194Ll9NX3N0YXJ0KTsKICAgICAgc3Rk
Ojpzd2FwKF9NX2ZpbmlzaCwgX194Ll9NX2ZpbmlzaCk7CiAgICAgIHN0ZDo6c3dhcChfTV9lbmRf
b2Zfc3RvcmFnZSwgX194Ll9NX2VuZF9vZl9zdG9yYWdlKTsKICAgIH0KICAKISAgIGl0ZXJhdG9y
IGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCBfVHAmIF9feCkgewogICAgICBzaXpl
X3R5cGUgX19uID0gX19wb3NpdGlvbiAtIGJlZ2luKCk7CiAgICAgIGlmIChfTV9maW5pc2ggIT0g
X01fZW5kX29mX3N0b3JhZ2UgJiYgX19wb3NpdGlvbiA9PSBlbmQoKSkgewohICAgICAgIGNvbnN0
cnVjdChfTV9maW5pc2gsIF9feCk7CiAgICAgICAgKytfTV9maW5pc2g7CiAgICAgIH0KICAgICAg
ZWxzZQogICAgICAgIF9NX2luc2VydF9hdXgoaXRlcmF0b3IoX19wb3NpdGlvbiksIF9feCk7CiAg
ICAgIHJldHVybiBiZWdpbigpICsgX19uOwogICAgfQohICAgaXRlcmF0b3IgaW5zZXJ0KGl0ZXJh
dG9yIF9fcG9zaXRpb24pIHsKICAgICAgc2l6ZV90eXBlIF9fbiA9IF9fcG9zaXRpb24gLSBiZWdp
bigpOwogICAgICBpZiAoX01fZmluaXNoICE9IF9NX2VuZF9vZl9zdG9yYWdlICYmIF9fcG9zaXRp
b24gPT0gZW5kKCkpIHsKISAgICAgICBjb25zdHJ1Y3QoX01fZmluaXNoKTsKICAgICAgICArK19N
X2ZpbmlzaDsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgX01faW5zZXJ0X2F1eChpdGVyYXRv
cihfX3Bvc2l0aW9uKSk7CiAgICAgIHJldHVybiBiZWdpbigpICsgX19uOwogICAgfQogICAgLy8g
Q2hlY2sgd2hldGhlciBpdCdzIGFuIGludGVncmFsIHR5cGUuICBJZiBzbywgaXQncyBub3QgYW4g
aXRlcmF0b3IuCiEgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiEgICB2b2lkIGlu
c2VydChpdGVyYXRvciBfX3BvcywgX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0
b3IgX19sYXN0KSB7CiEgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0lzX2ludGVnZXI8X0lucHV0SXRl
cmF0b3I+OjpfSW50ZWdyYWwgX0ludGVncmFsOwohICAgICBfTV9pbnNlcnRfZGlzcGF0Y2goX19w
b3MsIF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkpOwohICAgfQogIAogICAgdGVtcGxhdGUg
PGNsYXNzIF9JbnRlZ2VyPgohICAgdm9pZCBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19w
b3MsIF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX192YWwsCiEgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX3RydWVfdHlwZSkKISAgICAgeyBfTV9maWxsX2luc2VydChfX3BvcywgKHNpemVfdHlw
ZSkgX19uLCAoX1RwKSBfX3ZhbCk7IH0KISAKISAgIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVy
YXRvcj4KISAgIHZvaWQgX01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9zLAohICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0
b3IgX19sYXN0LAohICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mYWxzZV90eXBlKSB7CiEg
ICAgIF9NX3JhbmdlX2luc2VydChfX3BvcywgX19maXJzdCwgX19sYXN0LCBfX2l0ZXJhdG9yX2Nh
dGVnb3J5KF9fZmlyc3QpKTsKISAgIH0KICAKICAgIHZvaWQgaW5zZXJ0IChpdGVyYXRvciBfX3Bv
cywgc2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3gpCiAgICAgIHsgX01fZmlsbF9pbnNlcnQo
X19wb3MsIF9fbiwgX194KTsgfQotLS0gMzE4LDQwMiAtLS0tCiAgICByZWZlcmVuY2UgYmFjaygp
IHsgcmV0dXJuICooZW5kKCkgLSAxKTsgfQogICAgY29uc3RfcmVmZXJlbmNlIGJhY2soKSBjb25z
dCB7IHJldHVybiAqKGVuZCgpIC0gMSk7IH0KICAKISAgIHZvaWQKISAgIHB1c2hfYmFjayhjb25z
dCBfVHAmIF9feCkKISAgIHsKICAgICAgaWYgKF9NX2ZpbmlzaCAhPSBfTV9lbmRfb2Zfc3RvcmFn
ZSkgewohICAgICAgIF9Db25zdHJ1Y3QoX01fZmluaXNoLCBfX3gpOwogICAgICAgICsrX01fZmlu
aXNoOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgICBfTV9pbnNlcnRfYXV4KGVuZCgpLCBfX3gp
OwogICAgfQohIAohICAgdm9pZAohICAgcHVzaF9iYWNrKCkKISAgIHsKICAgICAgaWYgKF9NX2Zp
bmlzaCAhPSBfTV9lbmRfb2Zfc3RvcmFnZSkgewohICAgICAgIF9Db25zdHJ1Y3QoX01fZmluaXNo
KTsKICAgICAgICArK19NX2ZpbmlzaDsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgX01faW5z
ZXJ0X2F1eChlbmQoKSk7CiAgICB9CiEgCiEgICB2b2lkCiEgICBzd2FwKHZlY3RvcjxfVHAsIF9B
bGxvYz4mIF9feCkKISAgIHsKICAgICAgc3RkOjpzd2FwKF9NX3N0YXJ0LCBfX3guX01fc3RhcnQp
OwogICAgICBzdGQ6OnN3YXAoX01fZmluaXNoLCBfX3guX01fZmluaXNoKTsKICAgICAgc3RkOjpz
d2FwKF9NX2VuZF9vZl9zdG9yYWdlLCBfX3guX01fZW5kX29mX3N0b3JhZ2UpOwogICAgfQogIAoh
ICAgaXRlcmF0b3IKISAgIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCBfVHAmIF9f
eCkKISAgIHsKICAgICAgc2l6ZV90eXBlIF9fbiA9IF9fcG9zaXRpb24gLSBiZWdpbigpOwogICAg
ICBpZiAoX01fZmluaXNoICE9IF9NX2VuZF9vZl9zdG9yYWdlICYmIF9fcG9zaXRpb24gPT0gZW5k
KCkpIHsKISAgICAgICBfQ29uc3RydWN0KF9NX2ZpbmlzaCwgX194KTsKICAgICAgICArK19NX2Zp
bmlzaDsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgX01faW5zZXJ0X2F1eChpdGVyYXRvcihf
X3Bvc2l0aW9uKSwgX194KTsKICAgICAgcmV0dXJuIGJlZ2luKCkgKyBfX247CiAgICB9CiEgCiEg
ICBpdGVyYXRvcgohICAgaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zaXRpb24pCiEgICB7CiAgICAgIHNp
emVfdHlwZSBfX24gPSBfX3Bvc2l0aW9uIC0gYmVnaW4oKTsKICAgICAgaWYgKF9NX2ZpbmlzaCAh
PSBfTV9lbmRfb2Zfc3RvcmFnZSAmJiBfX3Bvc2l0aW9uID09IGVuZCgpKSB7CiEgICAgICAgX0Nv
bnN0cnVjdChfTV9maW5pc2gpOwogICAgICAgICsrX01fZmluaXNoOwogICAgICB9CiAgICAgIGVs
c2UKICAgICAgICBfTV9pbnNlcnRfYXV4KGl0ZXJhdG9yKF9fcG9zaXRpb24pKTsKICAgICAgcmV0
dXJuIGJlZ2luKCkgKyBfX247CiAgICB9CisgCiAgICAvLyBDaGVjayB3aGV0aGVyIGl0J3MgYW4g
aW50ZWdyYWwgdHlwZS4gIElmIHNvLCBpdCdzIG5vdCBhbiBpdGVyYXRvci4KISAgIHRlbXBsYXRl
PGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgohICAgICB2b2lkCiEgCWluc2VydChpdGVyYXRvciBfX3Bv
cywgX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KQohIAl7CiEg
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfaW50ZWdlcjxfSW5wdXRJdGVyYXRvcj46Ol9JbnRl
Z3JhbCBfSW50ZWdyYWw7CiEgICAgICAgX01faW5zZXJ0X2Rpc3BhdGNoKF9fcG9zLCBfX2ZpcnN0
LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKISAgICAgfQogIAogICAgdGVtcGxhdGUgPGNsYXNzIF9J
bnRlZ2VyPgohICAgICB2b2lkCiEgCV9NX2luc2VydF9kaXNwYXRjaChpdGVyYXRvciBfX3Bvcywg
X0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbCwgX190cnVlX3R5cGUpCiEgICAgIHsgX01fZmls
bF9pbnNlcnQoX19wb3MsIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX19uKSwgc3RhdGljX2Nhc3Q8
X1RwPihfX3ZhbCkpOyB9CiEgCiEgICB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KISAg
ICAgdm9pZAohIAlfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19wb3MsCiEgICAgICAgICAg
ICAgICAgICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xh
c3QsCiEgICAgICAgICAgICAgICAgICAgICAgICBfX2ZhbHNlX3R5cGUpCiEgCXsKISAJICB0eXBl
ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2Nh
dGVnb3J5IF9JdGVyQ2F0ZWdvcnk7CiEgICAgICAgX01fcmFuZ2VfaW5zZXJ0KF9fcG9zLCBfX2Zp
cnN0LCBfX2xhc3QsIF9JdGVyQ2F0ZWdvcnkoKSk7CiEgICAgIH0KICAKICAgIHZvaWQgaW5zZXJ0
IChpdGVyYXRvciBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3gpCiAgICAgIHsg
X01fZmlsbF9pbnNlcnQoX19wb3MsIF9fbiwgX194KTsgfQoqKioqKioqKioqKioqKiogcHVibGlj
OgoqKiogMzczLDM5MCAqKioqCiAgCiAgICB2b2lkIHBvcF9iYWNrKCkgewogICAgICAtLV9NX2Zp
bmlzaDsKISAgICAgZGVzdHJveShfTV9maW5pc2gpOwogICAgfQogICAgaXRlcmF0b3IgZXJhc2Uo
aXRlcmF0b3IgX19wb3NpdGlvbikgewogICAgICBpZiAoX19wb3NpdGlvbiArIDEgIT0gZW5kKCkp
CiAgICAgICAgY29weShfX3Bvc2l0aW9uICsgMSwgZW5kKCksIF9fcG9zaXRpb24pOwogICAgICAt
LV9NX2ZpbmlzaDsKISAgICAgZGVzdHJveShfTV9maW5pc2gpOwogICAgICByZXR1cm4gX19wb3Np
dGlvbjsKICAgIH0KICAgIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9y
IF9fbGFzdCkgewogICAgICBpdGVyYXRvciBfX2koY29weShfX2xhc3QsIGVuZCgpLCBfX2ZpcnN0
KSk7CiEgICAgIGRlc3Ryb3koX19pLCBlbmQoKSk7CiAgICAgIF9NX2ZpbmlzaCA9IF9NX2Zpbmlz
aCAtIChfX2xhc3QgLSBfX2ZpcnN0KTsKICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICB9Ci0tLSA0
MDUsNDIyIC0tLS0KICAKICAgIHZvaWQgcG9wX2JhY2soKSB7CiAgICAgIC0tX01fZmluaXNoOwoh
ICAgICBfRGVzdHJveShfTV9maW5pc2gpOwogICAgfQogICAgaXRlcmF0b3IgZXJhc2UoaXRlcmF0
b3IgX19wb3NpdGlvbikgewogICAgICBpZiAoX19wb3NpdGlvbiArIDEgIT0gZW5kKCkpCiAgICAg
ICAgY29weShfX3Bvc2l0aW9uICsgMSwgZW5kKCksIF9fcG9zaXRpb24pOwogICAgICAtLV9NX2Zp
bmlzaDsKISAgICAgX0Rlc3Ryb3koX01fZmluaXNoKTsKICAgICAgcmV0dXJuIF9fcG9zaXRpb247
CiAgICB9CiAgICBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xh
c3QpIHsKICAgICAgaXRlcmF0b3IgX19pKGNvcHkoX19sYXN0LCBlbmQoKSwgX19maXJzdCkpOwoh
ICAgICBfRGVzdHJveShfX2ksIGVuZCgpKTsKICAgICAgX01fZmluaXNoID0gX01fZmluaXNoIC0g
KF9fbGFzdCAtIF9fZmlyc3QpOwogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KKioqKioqKioq
KioqKioqIHZlY3RvcjxfVHAsX0FsbG9jPjo6b3BlcmF0b3I9KGNvbnN0IHZlY3QKKioqIDQ5Nyw1
MTAgKioqKgogICAgICBjb25zdCBzaXplX3R5cGUgX194bGVuID0gX194LnNpemUoKTsKICAgICAg
aWYgKF9feGxlbiA+IGNhcGFjaXR5KCkpIHsKICAgICAgICBwb2ludGVyIF9fdG1wID0gX01fYWxs
b2NhdGVfYW5kX2NvcHkoX194bGVuLCBfX3guYmVnaW4oKSwgX194LmVuZCgpKTsKISAgICAgICBk
ZXN0cm95KF9NX3N0YXJ0LCBfTV9maW5pc2gpOwogICAgICAgIF9NX2RlYWxsb2NhdGUoX01fc3Rh
cnQsIF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgICAgIF9NX3N0YXJ0ID0gX190
bXA7CiAgICAgICAgX01fZW5kX29mX3N0b3JhZ2UgPSBfTV9zdGFydCArIF9feGxlbjsKICAgICAg
fQogICAgICBlbHNlIGlmIChzaXplKCkgPj0gX194bGVuKSB7CiAgICAgICAgaXRlcmF0b3IgX19p
KGNvcHkoX194LmJlZ2luKCksIF9feC5lbmQoKSwgYmVnaW4oKSkpOwohICAgICAgIGRlc3Ryb3ko
X19pLCBlbmQoKSk7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgY29weShfX3guYmVnaW4o
KSwgX194LmJlZ2luKCkgKyBzaXplKCksIF9NX3N0YXJ0KTsKLS0tIDUyOSw1NDIgLS0tLQogICAg
ICBjb25zdCBzaXplX3R5cGUgX194bGVuID0gX194LnNpemUoKTsKICAgICAgaWYgKF9feGxlbiA+
IGNhcGFjaXR5KCkpIHsKICAgICAgICBwb2ludGVyIF9fdG1wID0gX01fYWxsb2NhdGVfYW5kX2Nv
cHkoX194bGVuLCBfX3guYmVnaW4oKSwgX194LmVuZCgpKTsKISAgICAgICBfRGVzdHJveShfTV9z
dGFydCwgX01fZmluaXNoKTsKICAgICAgICBfTV9kZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRf
b2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgICAgICBfTV9zdGFydCA9IF9fdG1wOwogICAgICAg
IF9NX2VuZF9vZl9zdG9yYWdlID0gX01fc3RhcnQgKyBfX3hsZW47CiAgICAgIH0KICAgICAgZWxz
ZSBpZiAoc2l6ZSgpID49IF9feGxlbikgewogICAgICAgIGl0ZXJhdG9yIF9faShjb3B5KF9feC5i
ZWdpbigpLCBfX3guZW5kKCksIGJlZ2luKCkpKTsKISAgICAgICBfRGVzdHJveShfX2ksIGVuZCgp
KTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBjb3B5KF9feC5iZWdpbigpLCBfX3guYmVn
aW4oKSArIHNpemUoKSwgX01fc3RhcnQpOwoqKioqKioqKioqKioqKiogdmVjdG9yPF9UcCwgX0Fs
bG9jPjo6X01fYXNzaWduX2F1eChfRm9ydwoqKiogNTUxLDU2NCAqKioqCiAgCiAgICBpZiAoX19s
ZW4gPiBjYXBhY2l0eSgpKSB7CiAgICAgIHBvaW50ZXIgX190bXAoX01fYWxsb2NhdGVfYW5kX2Nv
cHkoX19sZW4sIF9fZmlyc3QsIF9fbGFzdCkpOwohICAgICBkZXN0cm95KF9NX3N0YXJ0LCBfTV9m
aW5pc2gpOwogICAgICBfTV9kZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAt
IF9NX3N0YXJ0KTsKICAgICAgX01fc3RhcnQgPSBfX3RtcDsKICAgICAgX01fZW5kX29mX3N0b3Jh
Z2UgPSBfTV9maW5pc2ggPSBfTV9zdGFydCArIF9fbGVuOwogICAgfQogICAgZWxzZSBpZiAoc2l6
ZSgpID49IF9fbGVuKSB7CiAgICAgIGl0ZXJhdG9yIF9fbmV3X2ZpbmlzaChjb3B5KF9fZmlyc3Qs
IF9fbGFzdCwgX01fc3RhcnQpKTsKISAgICAgZGVzdHJveShfX25ld19maW5pc2gsIGVuZCgpKTsK
ICAgICAgX01fZmluaXNoID0gX19uZXdfZmluaXNoLmJhc2UoKTsKICAgIH0KICAgIGVsc2Ugewot
LS0gNTgzLDU5NiAtLS0tCiAgCiAgICBpZiAoX19sZW4gPiBjYXBhY2l0eSgpKSB7CiAgICAgIHBv
aW50ZXIgX190bXAoX01fYWxsb2NhdGVfYW5kX2NvcHkoX19sZW4sIF9fZmlyc3QsIF9fbGFzdCkp
OwohICAgICBfRGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsKICAgICAgX01fZGVhbGxvY2F0
ZShfTV9zdGFydCwgX01fZW5kX29mX3N0b3JhZ2UgLSBfTV9zdGFydCk7CiAgICAgIF9NX3N0YXJ0
ID0gX190bXA7CiAgICAgIF9NX2VuZF9vZl9zdG9yYWdlID0gX01fZmluaXNoID0gX01fc3RhcnQg
KyBfX2xlbjsKICAgIH0KICAgIGVsc2UgaWYgKHNpemUoKSA+PSBfX2xlbikgewogICAgICBpdGVy
YXRvciBfX25ld19maW5pc2goY29weShfX2ZpcnN0LCBfX2xhc3QsIF9NX3N0YXJ0KSk7CiEgICAg
IF9EZXN0cm95KF9fbmV3X2ZpbmlzaCwgZW5kKCkpOwogICAgICBfTV9maW5pc2ggPSBfX25ld19m
aW5pc2guYmFzZSgpOwogICAgfQogICAgZWxzZSB7CioqKioqKioqKioqKioqKiB2b2lkIAoqKiog
NTc0LDU4MCAqKioqCiAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6X01faW5zZXJ0X2F1eChpdGVyYXRv
ciBfX3Bvc2l0aW9uLCBjb25zdCBfVHAmIF9feCkKICB7CiAgICBpZiAoX01fZmluaXNoICE9IF9N
X2VuZF9vZl9zdG9yYWdlKSB7CiEgICAgIGNvbnN0cnVjdChfTV9maW5pc2gsICooX01fZmluaXNo
IC0gMSkpOwogICAgICArK19NX2ZpbmlzaDsKICAgICAgX1RwIF9feF9jb3B5ID0gX194OwogICAg
ICBjb3B5X2JhY2t3YXJkKF9fcG9zaXRpb24sIGl0ZXJhdG9yKF9NX2ZpbmlzaCAtIDIpLCBpdGVy
YXRvcihfTV9maW5pc2gtIDEpKTsKLS0tIDYwNiw2MTIgLS0tLQogIHZlY3RvcjxfVHAsIF9BbGxv
Yz46Ol9NX2luc2VydF9hdXgoaXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3QgX1RwJiBfX3gpCiAg
ewogICAgaWYgKF9NX2ZpbmlzaCAhPSBfTV9lbmRfb2Zfc3RvcmFnZSkgewohICAgICBfQ29uc3Ry
dWN0KF9NX2ZpbmlzaCwgKihfTV9maW5pc2ggLSAxKSk7CiAgICAgICsrX01fZmluaXNoOwogICAg
ICBfVHAgX194X2NvcHkgPSBfX3g7CiAgICAgIGNvcHlfYmFja3dhcmQoX19wb3NpdGlvbiwgaXRl
cmF0b3IoX01fZmluaXNoIC0gMiksIGl0ZXJhdG9yKF9NX2ZpbmlzaC0gMSkpOwoqKioqKioqKioq
KioqKiogdmVjdG9yPF9UcCwgX0FsbG9jPjo6X01faW5zZXJ0X2F1eChpdGVyYQoqKiogNTg4LDYw
MSAqKioqCiAgICAgIF9fU1RMX1RSWSB7CiAgICAgICAgX19uZXdfZmluaXNoID0gdW5pbml0aWFs
aXplZF9jb3B5KGl0ZXJhdG9yKF9NX3N0YXJ0KSwgX19wb3NpdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19uZXdfc3RhcnQpOwohICAgICAgIGNvbnN0cnVj
dChfX25ld19maW5pc2guYmFzZSgpLCBfX3gpOwogICAgICAgICsrX19uZXdfZmluaXNoOwogICAg
ICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShfX3Bvc2l0aW9uLCBpdGVyYXRv
cihfTV9maW5pc2gpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X25ld19maW5pc2gpOwogICAgICB9CiEgICAgIF9fU1RMX1VOV0lORCgoZGVzdHJveShfX25ld19z
dGFydCxfX25ld19maW5pc2gpLCAKICAgICAgICAgICAgICAgICAgICBfTV9kZWFsbG9jYXRlKF9f
bmV3X3N0YXJ0LmJhc2UoKSxfX2xlbikpKTsKISAgICAgZGVzdHJveShiZWdpbigpLCBlbmQoKSk7
CiAgICAgIF9NX2RlYWxsb2NhdGUoX01fc3RhcnQsIF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3Rh
cnQpOwogICAgICBfTV9zdGFydCA9IF9fbmV3X3N0YXJ0LmJhc2UoKTsKICAgICAgX01fZmluaXNo
ID0gX19uZXdfZmluaXNoLmJhc2UoKTsKLS0tIDYyMCw2MzMgLS0tLQogICAgICBfX1NUTF9UUlkg
ewogICAgICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShpdGVyYXRvcihfTV9z
dGFydCksIF9fcG9zaXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fbmV3X3N0YXJ0KTsKISAgICAgICBfQ29uc3RydWN0KF9fbmV3X2ZpbmlzaC5iYXNlKCks
IF9feCk7CiAgICAgICAgKytfX25ld19maW5pc2g7CiAgICAgICAgX19uZXdfZmluaXNoID0gdW5p
bml0aWFsaXplZF9jb3B5KF9fcG9zaXRpb24sIGl0ZXJhdG9yKF9NX2ZpbmlzaCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbmV3X2ZpbmlzaCk7CiAgICAgIH0K
ISAgICAgX19TVExfVU5XSU5EKChfRGVzdHJveShfX25ld19zdGFydCxfX25ld19maW5pc2gpLCAK
ICAgICAgICAgICAgICAgICAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LmJhc2UoKSxfX2xl
bikpKTsKISAgICAgX0Rlc3Ryb3koYmVnaW4oKSwgZW5kKCkpOwogICAgICBfTV9kZWFsbG9jYXRl
KF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgICAgX01fc3RhcnQg
PSBfX25ld19zdGFydC5iYXNlKCk7CiAgICAgIF9NX2ZpbmlzaCA9IF9fbmV3X2ZpbmlzaC5iYXNl
KCk7CioqKioqKioqKioqKioqKiB2b2lkIAoqKiogNjA4LDYxNCAqKioqCiAgdmVjdG9yPF9UcCwg
X0FsbG9jPjo6X01faW5zZXJ0X2F1eChpdGVyYXRvciBfX3Bvc2l0aW9uKQogIHsKICAgIGlmIChf
TV9maW5pc2ggIT0gX01fZW5kX29mX3N0b3JhZ2UpIHsKISAgICAgY29uc3RydWN0KF9NX2Zpbmlz
aCwgKihfTV9maW5pc2ggLSAxKSk7CiAgICAgICsrX01fZmluaXNoOwogICAgICBjb3B5X2JhY2t3
YXJkKF9fcG9zaXRpb24sIGl0ZXJhdG9yKF9NX2ZpbmlzaCAtIDIpLCAKICAJCSAgaXRlcmF0b3Io
X01fZmluaXNoIC0gMSkpOwotLS0gNjQwLDY0NiAtLS0tCiAgdmVjdG9yPF9UcCwgX0FsbG9jPjo6
X01faW5zZXJ0X2F1eChpdGVyYXRvciBfX3Bvc2l0aW9uKQogIHsKICAgIGlmIChfTV9maW5pc2gg
IT0gX01fZW5kX29mX3N0b3JhZ2UpIHsKISAgICAgX0NvbnN0cnVjdChfTV9maW5pc2gsICooX01f
ZmluaXNoIC0gMSkpOwogICAgICArK19NX2ZpbmlzaDsKICAgICAgY29weV9iYWNrd2FyZChfX3Bv
c2l0aW9uLCBpdGVyYXRvcihfTV9maW5pc2ggLSAyKSwgCiAgCQkgIGl0ZXJhdG9yKF9NX2Zpbmlz
aCAtIDEpKTsKKioqKioqKioqKioqKioqIHZlY3RvcjxfVHAsIF9BbGxvYz46Ol9NX2luc2VydF9h
dXgoaXRlcmEKKioqIDYyMiw2MzUgKioqKgogICAgICBfX1NUTF9UUlkgewogICAgICAgIF9fbmV3
X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShpdGVyYXRvcihfTV9zdGFydCksIF9fcG9zaXRp
b24sIAogIAkJCQkJX19uZXdfc3RhcnQpOwohICAgICAgIGNvbnN0cnVjdChfX25ld19maW5pc2gp
OwogICAgICAgICsrX19uZXdfZmluaXNoOwogICAgICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlh
bGl6ZWRfY29weShfX3Bvc2l0aW9uLCBpdGVyYXRvcihfTV9maW5pc2gpLCAKICAJCQkJCV9fbmV3
X2ZpbmlzaCk7CiAgICAgIH0KISAgICAgX19TVExfVU5XSU5EKChkZXN0cm95KF9fbmV3X3N0YXJ0
LF9fbmV3X2ZpbmlzaCksIAogICAgICAgICAgICAgICAgICAgIF9NX2RlYWxsb2NhdGUoX19uZXdf
c3RhcnQsX19sZW4pKSk7CiEgICAgIGRlc3Ryb3koYmVnaW4oKSwgZW5kKCkpOwogICAgICBfTV9k
ZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgICAg
X01fc3RhcnQgPSBfX25ld19zdGFydDsKICAgICAgX01fZmluaXNoID0gX19uZXdfZmluaXNoOwot
LS0gNjU0LDY2NyAtLS0tCiAgICAgIF9fU1RMX1RSWSB7CiAgICAgICAgX19uZXdfZmluaXNoID0g
dW5pbml0aWFsaXplZF9jb3B5KGl0ZXJhdG9yKF9NX3N0YXJ0KSwgX19wb3NpdGlvbiwgCiAgCQkJ
CQlfX25ld19zdGFydCk7CiEgICAgICAgX0NvbnN0cnVjdChfX25ld19maW5pc2gpOwogICAgICAg
ICsrX19uZXdfZmluaXNoOwogICAgICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29w
eShfX3Bvc2l0aW9uLCBpdGVyYXRvcihfTV9maW5pc2gpLCAKICAJCQkJCV9fbmV3X2ZpbmlzaCk7
CiAgICAgIH0KISAgICAgX19TVExfVU5XSU5EKChfRGVzdHJveShfX25ld19zdGFydCxfX25ld19m
aW5pc2gpLCAKICAgICAgICAgICAgICAgICAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LF9f
bGVuKSkpOwohICAgICBfRGVzdHJveShiZWdpbigpLCBlbmQoKSk7CiAgICAgIF9NX2RlYWxsb2Nh
dGUoX01fc3RhcnQsIF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgICBfTV9zdGFy
dCA9IF9fbmV3X3N0YXJ0OwogICAgICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7CioqKioqKioq
KioqKioqKiB2b2lkIHZlY3RvcjxfVHAsIF9BbGxvYz46Ol9NX2ZpbGxfaW5zZXJ0CioqKiA2NzEs
Njc5ICoqKioKICAgICAgICAgIF9fbmV3X2ZpbmlzaAogICAgICAgICAgICA9IHVuaW5pdGlhbGl6
ZWRfY29weShfX3Bvc2l0aW9uLCBlbmQoKSwgX19uZXdfZmluaXNoKTsKICAgICAgICB9CiEgICAg
ICAgX19TVExfVU5XSU5EKChkZXN0cm95KF9fbmV3X3N0YXJ0LF9fbmV3X2ZpbmlzaCksIAogICAg
ICAgICAgICAgICAgICAgICAgX01fZGVhbGxvY2F0ZShfX25ld19zdGFydC5iYXNlKCksX19sZW4p
KSk7CiEgICAgICAgZGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsKICAgICAgICBfTV9kZWFs
bG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgICAgICBf
TV9zdGFydCA9IF9fbmV3X3N0YXJ0LmJhc2UoKTsKICAgICAgICBfTV9maW5pc2ggPSBfX25ld19m
aW5pc2guYmFzZSgpOwotLS0gNzAzLDcxMSAtLS0tCiAgICAgICAgICBfX25ld19maW5pc2gKICAg
ICAgICAgICAgPSB1bmluaXRpYWxpemVkX2NvcHkoX19wb3NpdGlvbiwgZW5kKCksIF9fbmV3X2Zp
bmlzaCk7CiAgICAgICAgfQohICAgICAgIF9fU1RMX1VOV0lORCgoX0Rlc3Ryb3koX19uZXdfc3Rh
cnQsX19uZXdfZmluaXNoKSwgCiAgICAgICAgICAgICAgICAgICAgICBfTV9kZWFsbG9jYXRlKF9f
bmV3X3N0YXJ0LmJhc2UoKSxfX2xlbikpKTsKISAgICAgICBfRGVzdHJveShfTV9zdGFydCwgX01f
ZmluaXNoKTsKICAgICAgICBfTV9kZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFn
ZSAtIF9NX3N0YXJ0KTsKICAgICAgICBfTV9zdGFydCA9IF9fbmV3X3N0YXJ0LmJhc2UoKTsKICAg
ICAgICBfTV9maW5pc2ggPSBfX25ld19maW5pc2guYmFzZSgpOwoqKioqKioqKioqKioqKiogdmVj
dG9yPF9UcCwgX0FsbG9jPjo6X01fcmFuZ2VfaW5zZXJ0KGl0ZQoqKiogNzM2LDc0NCAqKioqCiAg
ICAgICAgICBfX25ld19maW5pc2gKICAgICAgICAgICAgPSB1bmluaXRpYWxpemVkX2NvcHkoX19w
b3NpdGlvbiwgaXRlcmF0b3IoX01fZmluaXNoKSwgX19uZXdfZmluaXNoKTsKICAgICAgICB9CiEg
ICAgICAgX19TVExfVU5XSU5EKChkZXN0cm95KF9fbmV3X3N0YXJ0LF9fbmV3X2ZpbmlzaCksIAog
ICAgICAgICAgICAgICAgICAgICAgX01fZGVhbGxvY2F0ZShfX25ld19zdGFydC5iYXNlKCksX19s
ZW4pKSk7CiEgICAgICAgZGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsKICAgICAgICBfTV9k
ZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgICAg
ICBfTV9zdGFydCA9IF9fbmV3X3N0YXJ0LmJhc2UoKTsKICAgICAgICBfTV9maW5pc2ggPSBfX25l
d19maW5pc2guYmFzZSgpOwotLS0gNzY4LDc3NiAtLS0tCiAgICAgICAgICBfX25ld19maW5pc2gK
ICAgICAgICAgICAgPSB1bmluaXRpYWxpemVkX2NvcHkoX19wb3NpdGlvbiwgaXRlcmF0b3IoX01f
ZmluaXNoKSwgX19uZXdfZmluaXNoKTsKICAgICAgICB9CiEgICAgICAgX19TVExfVU5XSU5EKChf
RGVzdHJveShfX25ld19zdGFydCxfX25ld19maW5pc2gpLCAKICAgICAgICAgICAgICAgICAgICAg
IF9NX2RlYWxsb2NhdGUoX19uZXdfc3RhcnQuYmFzZSgpLF9fbGVuKSkpOwohICAgICAgIF9EZXN0
cm95KF9NX3N0YXJ0LCBfTV9maW5pc2gpOwogICAgICAgIF9NX2RlYWxsb2NhdGUoX01fc3RhcnQs
IF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgICAgIF9NX3N0YXJ0ID0gX19uZXdf
c3RhcnQuYmFzZSgpOwogICAgICAgIF9NX2ZpbmlzaCA9IF9fbmV3X2ZpbmlzaC5iYXNlKCk7Cklu
ZGV4OiBpbmNsdWRlL2JhY2t3YXJkL2l0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9nY2MvZ2NjL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JhY2t3YXJkL2l0ZXJhdG9yLmgsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC1jIC0zIC1wIC1yMS43IGl0ZXJhdG9yLmgKKioqIGl0
ZXJhdG9yLmgJMjAwMS8wNi8yNyAxNzowOTo1MgkxLjcKLS0tIGl0ZXJhdG9yLmgJMjAwMS8wNy8w
MSAxMjo0Nzo0MgoqKioqKioqKioqKioqKioKKioqIDEsMzIgKioqKgotIC8vIEJhY2t3YXJkLWNv
bXBhdCBzdXBwb3J0IC0qLSBDKysgLSotCi0gCi0gLy8gQ29weXJpZ2h0IChDKSAyMDAxIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIC8vCi0gLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotIC8vIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQot
IC8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlCi0gLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv
ciAoYXQgeW91ciBvcHRpb24pCi0gLy8gYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gLy8gVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAKLSAvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIC8vIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAv
LyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3Rv
biwgTUEgMDIxMTEtMTMwNywKLSAvLyBVU0EuCi0gCi0gLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlv
biwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0gLy8g
bGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxl
cyBpbnN0YW50aWF0ZQotIC8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5j
dGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0gLy8gdGhpcyBmaWxlIGFuZCBs
aW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0g
Ly8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxl
IHRvIGJlIGNvdmVyZWQgYnkKLSAvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBU
aGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0gLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIg
cmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0gLy8g
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotIAogIC8qCiAgICoKICAgKiBDb3B5cmln
aHQgKGMpIDE5OTQKLS0tIDEsMyAtLS0tCioqKioqKioqKioqKioqKiB1c2luZyBzdGQ6OmlzdHJl
YW1faXRlcmF0b3I7CioqKiAxMDQsMTExICoqKioKICB1c2luZyBzdGQ6Om9zdHJlYW1faXRlcmF0
b3I7CiAgCiAgLy8gTmFtZXMgZnJvbSBzdGxfY29uc3RydWN0LmgKISB1c2luZyBzdGQ6OmNvbnN0
cnVjdDsKISB1c2luZyBzdGQ6OmRlc3Ryb3k7CiAgCiAgLy8gTmFtZXMgZnJvbSBzdGxfcmF3X3N0
b3JhZ2VfaXRlci5oCiAgdXNpbmcgc3RkOjpyYXdfc3RvcmFnZV9pdGVyYXRvcjsKLS0tIDc1LDEw
MCAtLS0tCiAgdXNpbmcgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yOwogIAogIC8vIE5hbWVzIGZyb20g
c3RsX2NvbnN0cnVjdC5oCiEgdGVtcGxhdGU8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiEgICBpbmxp
bmUgdm9pZAohICAgY29uc3RydWN0KF9UMSogX19wLCBjb25zdCBfVDImIF9fdmFsdWUpCiEgICB7
IHN0ZDo6X0NvbnN0cnVjdChfX3AsIF9fdmFsdWUpOyB9CiEgCiEgdGVtcGxhdGU8Y2xhc3MgX1Qx
PgohICAgaW5saW5lIHZvaWQKISAgIGNvbnN0cnVjdChfVDEqIF9fcCkKISAgIHsgc3RkOjpfQ29u
c3RydWN0KF9fcCk7IH0KISAKISB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgohICAgaW5saW5lIHZvaWQK
ISAgIGRlc3Ryb3koX1RwKiBfX3BvaW50ZXIpCiEgICB7IHN0ZDo6X0Rlc3Ryb3koX19wb2ludGVy
KTsgfQohICAgCiEgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiEgICBpbmxpbmUg
dm9pZAohICAgZGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0
b3IgX19sYXN0KQohICAgeyBzdGQ6Ol9EZXN0cm95KF9fZmlyc3QsIF9fbGFzdCk7IH0KISB9CiAg
CiAgLy8gTmFtZXMgZnJvbSBzdGxfcmF3X3N0b3JhZ2VfaXRlci5oCiAgdXNpbmcgc3RkOjpyYXdf
c3RvcmFnZV9pdGVyYXRvcjsK
--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD--
From gcc-patches-return-37793-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 13:04:28 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 19355 invoked by alias); 1 Jul 2001 13:04:28 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 19312 invoked from network); 1 Jul 2001 13:04:21 -0000
Received: from unknown (HELO puce.csi.cam.ac.uk) (131.111.8.40)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 13:04:21 -0000
Received: from student.cusu.cam.ac.uk
([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail)
by puce.csi.cam.ac.uk with esmtp (Exim 3.22 #1)
id 15Ggtg-0005A7-00
for gcc-patches@gcc.gnu.org; Sun, 01 Jul 2001 14:04:20 +0100
Received: from jsm28 (helo=localhost)
by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian))
id 15Ggtf-0003Vi-00
for ; Sun, 01 Jul 2001 14:04:19 +0100
Date: Sun, 1 Jul 2001 14:04:19 +0100 (BST)
From: "Joseph S. Myers"
X-X-Sender:
To:
Subject: Patches pending review
Message-ID:
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
I have the following patches pending review:
http://gcc.gnu.org/ml/gcc-patches/2001-05/msg01529.html
(removal of obsolete files; removal of "listing" proposed for 3.0 branch
as well; needs review that the files are indeed unused; this review has
already been done for the VMS-related files)
http://gcc.gnu.org/ml/gcc-patches/2001-06/msg00084.html
(making pedantic format checking for C++ follow C94; fixes a warning
regression, so proposed for 3.0 branch as well; requires a review from the
C++ side (i.e., someone more experienced at reading ISO 14882 than I am)
for the testcase and that C89 as amended by AMD1 is correct here for
functions present in C89 that changed in AMD1)
--
Joseph S. Myers
jsm28@cam.ac.uk
From gcc-patches-return-37794-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 13:04:29 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 19419 invoked by alias); 1 Jul 2001 13:04:29 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 19305 invoked from network); 1 Jul 2001 13:04:16 -0000
Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 13:04:16 -0000
Received: from deneb (deneb [128.130.111.2])
by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61D45I11597;
Sun, 1 Jul 2001 15:04:06 +0200 (MET DST)
Date: Sun, 1 Jul 2001 15:04:05 +0200 (CEST)
From: Gerald Pfeifer
To: Neil Booth
cc: Zack Weinberg ,
Subject: Re: More cpp.texi updates
In-Reply-To: <20010616115112.A4350@daikokuya.demon.co.uk>
Message-ID:
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
On Sat, 16 Jun 2001, Neil Booth wrote:
> Should we keep regenerating the man pages on mainline, or do we only
> do that for a release?
My feeling is that, if we have a generated file in our CVS repository,
it should be up-to-date all of the time.
Gerald
From gcc-patches-return-37795-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 13:18:47 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 23671 invoked by alias); 1 Jul 2001 13:18:46 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 23650 invoked from network); 1 Jul 2001 13:18:45 -0000
Received: from unknown (HELO laptop.moene.indiv.nluug.nl) (195.109.255.217)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 13:18:45 -0000
Received: from local ([127.0.0.1] helo=moene.indiv.nluug.nl)
by laptop.moene.indiv.nluug.nl with esmtp (Exim 3.12 #1 (Debian))
id 15Gh82-0006be-00
for ; Sun, 01 Jul 2001 15:19:10 +0200
Message-ID: <3B3F234B.9C269F8B@moene.indiv.nluug.nl>
Date: Sun, 01 Jul 2001 15:19:07 +0200
From: Toon Moene
Organization: Moene Computational Physics, Maartensdijk, The Netherlands
X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.2.17 i686)
X-Accept-Language: en
MIME-Version: 1.0
To: gcc-patches@gcc.gnu.org
Subject: [Fortran, committed to trunk] Preparing libf2c/libI77 for 64-bit file
sizes.
Content-Type: multipart/mixed;
boundary="------------58A855A6C376F0A8B11F05A9"
This is a multi-part message in MIME format.
--------------58A855A6C376F0A8B11F05A9
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
L.S.,
Currently, on 32-bit targets, libf2c's I/O routines only support file
sizes and offsets up to 2 Gbyte.
To some of our customers, this is too limiting.
To fix this shortcoming, I first updated all variables indicating file
offsets to type `off_t'. It is my understanding that configure will
automatically convert `off_t' to `long' on systems that do not define
`off_t'.
This also allowed me to remove the FreeBSD hack w.r.t. the `off_t'
argument to ftruncate (however, I'll keep an eye on the FreeBSD check
results, because I couldn't test this).
Subsequently, I wanted to compile the libf2c/libI77 routines with
preprocessor flags that enable 64-bit file operations. Unfortunately, I
couldn't get the obvious -D__USE_FILE_OFFSET64 and -D__USE_LARGEFILE64
(Debian 2.2) to work. Perhaps someone could kindly mail me an example
? TIA.
The following patch [attached] survived a make bootstrap / make check
for C and Fortran on i686-pc-linux-gnu. I installed it on the trunk.
Thanks go to Pedro Vazquez , a g77
supporter and alpha tester from the very first hour, for his
proof-of-concept of these changes !
--
Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290
Saturnushof 14, 3738 XG Maartensdijk, The Netherlands
Maintainer, GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html
Join GNU Fortran 95: http://g95.sourceforge.net/ (under construction)
--------------58A855A6C376F0A8B11F05A9
Content-Type: text/plain; charset=us-ascii;
name="f2c64.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="f2c64.diff"
2001-07-01 Toon Moene
Pedro Vazquez
* libI77/fio.h: Use off_t when appropriate.
* libI77/backspace.c (f_back): Ditto.
* libI77/endfile.c (t_runc): Ditto.
* libI77/err.c (f__nowreading): Ditto.
* libI77/ftell_.c (unit_chk): Ditto.
* libI77/sue.c (global f__recloc, s_wsue): Ditto.
*** fio.h.orig Tue May 19 12:51:07 1998
--- fio.h Sun Jul 1 12:34:53 2001
*************** typedef struct
*** 35,39 ****
int udev;
#endif
! int url; /*0=sequential*/
flag useek; /*true=can backspace, use dir, ...*/
flag ufmt;
--- 35,39 ----
int udev;
#endif
! off_t url; /*0=sequential*/
flag useek; /*true=can backspace, use dir, ...*/
flag ufmt;
*** backspace.c.orig Thu May 17 19:19:18 2001
--- backspace.c Sun Jul 1 12:23:18 2001
*************** integer f_back(alist *a)
*** 9,13 ****
#endif
{ unit *b;
! long v, w, x, y, z;
uiolen n;
FILE *f;
--- 9,13 ----
#endif
{ unit *b;
! off_t v, w, x, y, z;
uiolen n;
FILE *f;
*** endfile.c.orig Wed May 16 19:10:15 2001
--- endfile.c Sun Jul 1 12:26:56 2001
*************** t_runc(alist *a)
*** 71,75 ****
#endif
{
! long loc, len;
unit *b;
int rc;
--- 71,75 ----
#endif
{
! off_t loc, len;
unit *b;
int rc;
*************** done:
*** 132,139 ****
#else /* !defined(HAVE_FTRUNCATE) */
fflush(b->ufd);
! /* The cast of loc is helpful on FreeBSD. It helps
! in any case where ftruncate() prototype is somehow missing
! even though autoconf test found it properly. */
! rc = ftruncate(fileno(b->ufd), (off_t)loc);
#endif /* !defined(HAVE_FTRUNCATE) */
if (rc)
--- 132,136 ----
#else /* !defined(HAVE_FTRUNCATE) */
fflush(b->ufd);
! rc = ftruncate(fileno(b->ufd), loc);
#endif /* !defined(HAVE_FTRUNCATE) */
if (rc)
*** err.c.orig Thu May 17 19:19:19 2001
--- err.c Sun Jul 1 12:29:03 2001
*************** f__nowreading(unit *x)
*** 211,215 ****
#endif
{
! long loc;
int ufmt, urw;
extern char *f__r_mode[], *f__w_mode[];
--- 211,215 ----
#endif
{
! off_t loc;
int ufmt, urw;
extern char *f__r_mode[], *f__w_mode[];
*** ftell_.c.orig Thu May 17 19:19:19 2001
--- ftell_.c Sun Jul 1 12:30:26 2001
*************** unit_chk(integer Unit, char *who)
*** 15,19 ****
}
! integer
#ifdef KR_headers
G77_ftell_0 (Unit) integer *Unit;
--- 15,19 ----
}
! off_t
#ifdef KR_headers
G77_ftell_0 (Unit) integer *Unit;
*** sue.c.orig Thu May 17 19:19:19 2001
--- sue.c Sun Jul 1 12:33:04 2001
***************
*** 3,7 ****
#include "fio.h"
extern uiolen f__reclen;
! long f__recloc;
#ifdef KR_headers
--- 3,7 ----
#include "fio.h"
extern uiolen f__reclen;
! off_t f__recloc;
#ifdef KR_headers
*************** integer s_wsue(cilist *a)
*** 68,72 ****
}
integer e_wsue(Void)
! { long loc;
f__init = 1;
fwrite((char *)&f__reclen,sizeof(uiolen),1,f__cf);
--- 68,72 ----
}
integer e_wsue(Void)
! { off_t loc;
f__init = 1;
fwrite((char *)&f__reclen,sizeof(uiolen),1,f__cf);
--------------58A855A6C376F0A8B11F05A9--
From gcc-patches-return-37796-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 13:28:23 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 24948 invoked by alias); 1 Jul 2001 13:28:23 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 24914 invoked from network); 1 Jul 2001 13:28:19 -0000
Received: from unknown (HELO mauve.csi.cam.ac.uk) (131.111.8.38)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 13:28:19 -0000
Received: from student.cusu.cam.ac.uk
([131.111.179.82] helo=kern.srcf.societies.cam.ac.uk ident=mail)
by mauve.csi.cam.ac.uk with esmtp (Exim 3.22 #1)
id 15GhGr-0003oN-00; Sun, 01 Jul 2001 14:28:17 +0100
Received: from jsm28 (helo=localhost)
by kern.srcf.societies.cam.ac.uk with local-esmtp (Exim 3.12 #1 (Debian))
id 15GhGq-0003l5-00; Sun, 01 Jul 2001 14:28:16 +0100
Date: Sun, 1 Jul 2001 14:28:14 +0100 (BST)
From: "Joseph S. Myers"
X-X-Sender:
To: Toon Moene
cc:
Subject: Re: [Fortran, committed to trunk] Preparing libf2c/libI77 for 64-bit
file sizes.
In-Reply-To: <3B3F234B.9C269F8B@moene.indiv.nluug.nl>
Message-ID:
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
On Sun, 1 Jul 2001, Toon Moene wrote:
> To fix this shortcoming, I first updated all variables indicating file
> offsets to type `off_t'. It is my understanding that configure will
> automatically convert `off_t' to `long' on systems that do not define
> `off_t'.
You also need to use the fseeko and ftello functions rather than fseek and
ftell (since fseek and ftell take long not off_t).
> Subsequently, I wanted to compile the libf2c/libI77 routines with
> preprocessor flags that enable 64-bit file operations. Unfortunately, I
> couldn't get the obvious -D__USE_FILE_OFFSET64 and -D__USE_LARGEFILE64
> (Debian 2.2) to work. Perhaps someone could kindly mail me an example
> ? TIA.
Look at the comments in - you probably want
-D_XOPEN_SOURCE=500L -D_FILE_OFFSET_BITS=64 (the latter being `getconf
LFS_CFLAGS`). (Under GNU/Linux on 32-bit systems, you may also need glibc
2.2 and kernel 2.4 to use large files effectively.)
--
Joseph S. Myers
jsm28@cam.ac.uk
From gcc-patches-return-37797-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 14:06:21 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 6497 invoked by alias); 1 Jul 2001 14:06:20 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 6429 invoked from network); 1 Jul 2001 14:06:16 -0000
Received: from unknown (HELO new-smtp2.ihug.com.au) (203.109.250.28)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 14:06:16 -0000
Received: from ihug.com.au (IDENT:root@p1-max17.syd.ihug.com.au [203.173.154.193])
by new-smtp2.ihug.com.au (8.9.3/8.9.3) with ESMTP id AAA24543;
Mon, 2 Jul 2001 00:05:57 +1000
X-Authentication-Warning: new-smtp2.ihug.com.au: Host IDENT:root@p1-max17.syd.ihug.com.au [203.173.154.193] claimed to be ihug.com.au
Received: (from rich@localhost)
by ihug.com.au (8.11.0/8.11.0) id f61EFeN02834;
Mon, 2 Jul 2001 00:15:40 +1000
To: gcc-patches@gcc.gnu.org
Cc: pfeifer@dbai.tuwien.ac.at
Subject: PATCH: faq.html
From: Rich Churcher
Date: 02 Jul 2001 00:15:39 +1000
Message-ID:
Lines: 11
User-Agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.1 (Channel Islands)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
--=-=-=
2001-07-02 Rich Churcher
* Sundry formatting fixes.
--
Cheers,
Rich.
--=-=-=
Content-Type: application/x-bzip2
Content-Disposition: attachment; filename=faq-patch.bz2
Content-Transfer-Encoding: base64
QlpoOTFBWSZTWaEkoCAABEXfgEA4ff//v73l3qU/7//gYAsfEgAAoFAAAAAAAAAEJUySanqa
bU8mKfqnlP0mk0BoA9TQ0GgADIOaZGQyYIaMJgjTRoxA0yZGAAIc0yMhkwQ0YTBGmjRiBpky
MAAQ5pkZDJghowmCNNGjEDTJkYAAhzTIyGTBDRhMEaaNGIGmTIwABAqhEBAEJ6AUwhk0Jkj0
nqemmU8psmp+kym7jMzP2I6/yesPve1TaNHR0fYfepKP2foxU1fKsowXr8v2r8P10e/fhllW
WWT48kcWr8q2tjV7HwbNMuyXyyt7b19Vv38ouOUo/zL0g8EpEkDjagHkxQaD+KSqO6OLZnHM
uxLokVqqgipXq4HRZ8NjIs9BpK0nuZL9RXjRER5ETJRQ1qoKk86yyErSWMFlKUknkk+D+XUy
U83FSLLMEtrN9Gj/lZ5pWJjbKk1JyZtHFyS5skllimDg4sHvWf0bo9uXrfFazFi2uLtb3rSy
deLEuv2vQ4qRscXtYrJdrmwbjVZgdbqcOTi+5vRm4NGxqwXUlLglZg7nUsycGDhq6miP1Ssl
2O55+fs9efi4OJvWd7gfxdPCHBmzcXY6mDsavFsX69XYtGx3MzJo81jJk3vFswZsHqbCsJMD
I2rJaqXP6KelzblljM5uxuS2NzNmpzeDI0ebFHBq4NiW9SnKLqaMGRg0YP9c6WYPmvU/5m0/
hN1V2sWTm3qZJbSm2KU6jrWXyYpU5dazBTx1YNTMlm7HW1MmDuS1aPmcHRtNUtHkpsWYtW1k
/2sxcl3BwMCmq7VZZdZyasHf2eM5MGLNHubm5i6m5ks6MVM0rqWb2LzU9CV21mpkk6majsau
1u5Y1VaParn2NrYul0SxRY+lCH1uj8H/b/b3PS6mSfvu6OC6IxeBa3HnNeDFxf2XO8p86EdR
eJj6nFHWd7tdzk9zemxFhiEHE4XPC0OXJs9MRaX8LGYwQYUhUEaMRkpTMxMxMdc+Tti60zkr
JT0C1kVJMoiuixGOPyz8z5nA/RZml0fJ8jjgl+LujtiN0Ru37ng2qfEl71tr+YV47X22yfme
O2SZN8xU1NWgjtwvjESVVRMpLrdHuEWiDE5TEymPGlKqqaf4+3a9fsuvZM2TxvM+9yfjt34N
M7tPfFmuNjalJ62SYpqyXYXeZtb9NLV9LNKUq2Y17YiytFZSI2sRbzGa7+GX0hHlhuEQ81mp
dkTLeXKuAhh1IO+95/H27XOIO1SYRMoTMQZvsbih9G6PtD1MIpuTT6kwjrmERS6lz5yUKy2P
g3FPeiI/0iI6WXf/UiiRHofupZy+RbNEu5Ky/7tnwwM35qUlEpbUSh+qD3P7tjsYD6iR2OZ/
WPjcz+WJ5PyZxZH6x6mbR9zVk+URgzSRI1QYIhKIuLrwMUiT+qTBD+7E1hqxZCTYyRdo+5jD
RSX1rNx7FNUSlCxY2m9sb1mUZEWNDBdEciHJ8kRKX2oyXda7FJiKGvomyJj6XRUEaiMRg9yy
nJzREci67FgLG5BuRExIlN4Hz+dIjFi4KGa6meinRRSSkqSmkqiRSlJYpJiVFlIUlKk9F2aI
hmzMTL2WRZZSOTJSGfZUQ4vQ7nRNpmxM2VX6LKXSiUnilKVmDu3RYropdsYmaSMcFMkn8MV2
jNRSzNklKUrtFKatVpiMW+EQlMTEtpiaPAU8ko+hLRuVSyxg3LmrYyjVIaszgzZozXYsFkvJ
Zqk3JZRvYslmBp2MTFgxav8OJYuzGEszpsUpxKSk4tjms1bDNqnJhXoQcLmjZnKNxm/hLuZI
78kXhdKPzJWS2NEjKDEYTKSZikNyEmDvZIyhD0pS+DZHalDNMpQxVGYP3sR1IhsdajJ6ma7A
wRHmuRSI+lJKUEpLqXWEpKRJYuxSy/4h2vQxSO5HYp2qZsFMUKTY6zuiJcBgxIzeiNXaX8oj
i5mKmba85gmUoMhq3MXeyeN1O1yebi0RG43QRuZ7UpEpQlKOLYdTFKSUSiJbEuLf1MWKF0R6
UlljQzcyGTc7lI5uwpHM5sUoSlVCMY7EsnJKlG1Ys6oMEqzFIqEpdhiOjFTFqoSaskSZJQyE
YMyxq76UZKZMG1xbi5gScRSI1bUShdaNExGCSKcmcP/UaIyTBiiMzJFpfOuswKUi5ZSyS0pS
Ukp1zERSd5gs8kZpSjRG1g0ZpRJMIpJHpsxQ9J8yWqF0MUxCT2qCzEN7cuulKMUKiDVRKy66
OCOKXklEP2Uda5dFklJRLBxR2oRKSzvREOFOERZLAF3k2LouYREZxCySWShZCyhShHiiUmqJ
Qs8W5EfQ4Hg/t7MH8vAlJHrapUZHxLOPnseqINiI5Nrqdo8Hg2xHudFMzaRKIlESiPEhlDJ8
ZY3pWiEphKSV0qRZSiWojLixeIO9DqRLRdJL50tVlN6keh9bg5sDE2vAMGhipol885HJKUt2
Cnauhm0EPI9a7JgRk0Kjcei8FktixZ2pl0Sos6JZMGJZZgxUeCymaXJZisikmKUUwWzdjJil
LFi7PTOl2kt6JSbm83lLLRghqp3JRg2FHwZMdyPWYEXEbGRzWWbAwd6o6lmrBEtxSyGDQ0Rq
yLNV0UluUYmaXNkwZMSyUvDS7JiQ78jVFo4JdDm0dbg3M0kaJJSsiEWJIzbGDtEpRilGazM2
wzZSmRC65yFmjlKNTFTRsIUfw636Lou6Nr4211GRTI5uxokbUtGKNyUeoRtbmrF8uUdSV0oc
lJcJao5mLOkMUi43PdSIi9bs4YzCJSltauho2pYLLOTFgslyR8R/LeQwQH+LuSKcKEhQklAQ
AA==
--=-=-=--
From gcc-patches-return-37798-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 14:17:55 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 10390 invoked by alias); 1 Jul 2001 14:17:55 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 10353 invoked from network); 1 Jul 2001 14:17:49 -0000
Received: from unknown (HELO new-smtp2.ihug.com.au) (203.109.250.28)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 14:17:49 -0000
Received: from ihug.com.au (IDENT:root@p1-max17.syd.ihug.com.au [203.173.154.193])
by new-smtp2.ihug.com.au (8.9.3/8.9.3) with ESMTP id AAA24832;
Mon, 2 Jul 2001 00:17:38 +1000
X-Authentication-Warning: new-smtp2.ihug.com.au: Host IDENT:root@p1-max17.syd.ihug.com.au [203.173.154.193] claimed to be ihug.com.au
Received: (from rich@localhost)
by ihug.com.au (8.11.0/8.11.0) id f61ERVV02850;
Mon, 2 Jul 2001 00:27:31 +1000
To: gcc-patches@gcc.gnu.org
Cc: pfeifer@dbai.tuwien.ac.at
Subject: PATCH: gcc-3.0.html
From: Rich Churcher
Date: 02 Jul 2001 00:27:31 +1000
Message-ID:
Lines: 28
User-Agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.1 (Channel Islands)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
2001-07-02 Rich Churcher
* Tiny patch to add links to mirror sites in similar fashion to
gcc-2.95.3.html
Index: gcc-3.0.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-3.0/gcc-3.0.html,v
retrieving revision 1.3
diff -c -3 -p -r1.3 gcc-3.0.html
*** gcc-3.0.html 2001/06/18 13:08:46 1.3
--- gcc-3.0.html 2001/07/01 14:16:23
*************** is what makes GCC successful.
*** 29,34 ****
--- 29,37 ----
And finally, we can't in good conscience fail to mention some
caveats to using GCC 3.0.
+ Find a GNU mirror site
+ Find a GCC mirror site
+
For additional information about GCC please refer to the
GCC project web site or contact the
GCC development mailing list.
--
Cheers,
Rich.
From gcc-patches-return-37799-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 14:21:31 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 11126 invoked by alias); 1 Jul 2001 14:21:31 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 11092 invoked from network); 1 Jul 2001 14:21:31 -0000
Received: from unknown (HELO cygnus.com) (205.180.230.5)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 14:21:31 -0000
Received: from guarana.lsd.ic.unicamp.br (cse.cygnus.com [205.180.230.236])
by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id HAA29891;
Sun, 1 Jul 2001 07:21:28 -0700 (PDT)
Received: (from aoliva@localhost)
by guarana.lsd.ic.unicamp.br (8.11.2/8.11.2) id f61ELRl10255;
Sun, 1 Jul 2001 11:21:27 -0300
To: Michael Elizabeth Chastain
Cc: gcc-patches@gcc.gnu.org
Subject: Re: [PATCH] build failure, gcc 3.0, native hppa2.0w-hp-hpux11.00, ltconfig
References: <200106301349.GAA20411@bosch.cygnus.com>
From: Alexandre Oliva
Organization: GCC Team, Red Hat
Date: 01 Jul 2001 11:21:27 -0300
In-Reply-To: <200106301349.GAA20411@bosch.cygnus.com> (Michael Elizabeth Chastain's message of "Sat, 30 Jun 2001 06:49:41 -0700")
Message-ID:
Lines: 27
User-Agent: Gnus/5.090003 (Oort Gnus v0.03) XEmacs/21.4 (Academic Rigor)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
On Jun 30, 2001, Michael Elizabeth Chastain wrote:
> Do you really mean multi-language-branch in libtool?
That's the branch from which I took the last snapshot for GCC.
> Gary Vaughan said that he merged MLB to HEAD last weekend.
I'm way behind in libtool mailing lists, unfortunately. I have no
idea of how stable the result of the merge is so far.
> I can work in either MLB branch, HEAD branch, or both.
Both would be the best thing, if you don't mind. As soon as it gets
installed in the libtool CVS tree (it'll be acknowledged by whoever
installs the patch), feel free to install it in GCC CVS too.
> Maybe it's a function of what $(CONFIG_SHELL) is, or what patch level their
> operating system is.
Most likely.
--
Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist *Please* write to mailing lists, not to me
From gcc-patches-return-37800-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 14:48:16 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 19059 invoked by alias); 1 Jul 2001 14:48:16 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 19039 invoked from network); 1 Jul 2001 14:48:15 -0000
Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 14:48:15 -0000
Received: from deneb (deneb [128.130.111.2])
by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61ElPI13649;
Sun, 1 Jul 2001 16:47:31 +0200 (MET DST)
Date: Sun, 1 Jul 2001 16:47:25 +0200 (CEST)
From: Gerald Pfeifer
To: Rich Churcher
cc:
Subject: Re: PATCH: faq.html
In-Reply-To:
Message-ID:
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
On 2 Jul 2001, Rich Churcher wrote:
> 2001-07-02 Rich Churcher
>
> * Sundry formatting fixes.
Thanks. I broke some overly long lines resulting from this patch and
fixed a typo ("cofigure") and installed the updated patch below.
Gerald
Index: faq.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/faq.html,v
retrieving revision 1.163
diff -u -3 -p -r1.163 faq.html
--- faq.html 2001/06/16 11:03:00 1.163
+++ faq.html 2001/07/01 14:46:33
@@ -261,41 +261,52 @@ compiler and available in /usr/local/bin
to be the older gcc2 compiler and also available in /usr/local/bin.
The easiest way to do this is to configure the new GCC with
---prefix=/usr/local/gcc
-and the older gcc2 with --prefix=/usr/local/gcc2. Build and install both
-compilers. Then make a symlink from /usr/local/bin/gcc to
-/usr/local/gcc/bin/gcc and from /usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc.
-Create similar links for the "g++", "c++" and "g77" compiler drivers.
+--prefix=/usr/local/gcc
and the older gcc2 with
+--prefix=/usr/local/gcc2
. Build and install both
+compilers. Then make a symlink from /usr/local/bin/gcc
+to /usr/local/gcc/bin/gcc
and from
+/usr/local/bin/gcc2
to
+/usr/local/gcc2/bin/gcc
. Create similar links for the
+"g++", "c++" and "g77" compiler drivers.
An alternative to using symlinks is to configure with a
---program-transform-name option. This option specifies a sed command to
-process installed program names with. Using it you can, for instance,
-have all the new GCC programs installed as "new-gcc" and the like. You
-will still have to specify different --prefix options for new GCC and
-old GCC, because it is only the executable program names that are
-transformed. The difference is that you (as administrator) do not have
-to set up symlinks, but must specify additional directories in your (as
-a user) PATH. A complication with --program-transform-name is that the
+--program-transform-name
option. This option specifies a
+sed command to process installed program names with. Using it you can,
+for instance, have all the new GCC programs installed as "new-gcc" and
+the like. You will still have to specify different
+--prefix
options for new GCC and old GCC, because it is
+only the executable program names that are transformed. The difference
+is that you (as administrator) do not have to set up symlinks, but
+must specify additional directories in your (as a user) PATH. A
+complication with --program-transform-name
is that the
sed command invariably contains characters significant to the shell,
and these have to be escaped correctly, also it is not possible to use
"^" or "$" in the command. Here is the option to prefix "new-" to the
-new GCC installed programs
-"--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'". With the above
---prefix option, that will install the new GCC programs into
-/usr/local/gcc/bin with names prefixed by "new-". You can use
---program-transform-name if you have multiple versions of GCC, and
-wish to be sure about which version you are invoking.
+new GCC installed programs:
+
+--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'
+
+With the above --prefix
option, that will install the new
+GCC programs into /usr/local/gcc/bin
with names prefixed
+by "new-". You can use --program-transform-name
if you
+have multiple versions of GCC, and wish to be sure about which version
+you are invoking.
-If you use --prefix, GCC may have difficulty locating a GNU
+
If you use --prefix
, GCC may have difficulty locating a GNU
assembler or linker on your system, GCC can not find GNU
as/GNU ld explains how to deal with this.
-Another option that may be easier is to use the --program-prefix= or
---program-suffix= options to configure. So if you're installing GCC
-2.95.2 and don't want to disturb the current version of GCC in
-/usr/local/bin/, you could do 'configure --program-suffix=-2.95.2
-'. This should result in GCC being installed
-as /usr/local/bin/gcc-2.95.2 instead of /usr/local/bin/gcc.
+Another option that may be easier is to use the
+--program-prefix=
or --program-suffix=
+options to configure. So if you're installing GCC 2.95.2 and don't
+want to disturb the current version of GCC in
+/usr/local/bin/
, you could do
+
+configure --program-suffix=-2.95.2 <other configure options>
+
+This should result in GCC being installed as
+/usr/local/bin/gcc-2.95.2
instead of
+/usr/local/bin/gcc
.
@@ -303,7 +314,7 @@ as /usr/local/bin/gcc-2.95.2 instead of
This problem manifests itself by programs not finding shared
libraries they depend on when the programs are started. Note this
problem often manifests itself with failures in the libio/libstdc++
-tests after configuring with --enable-shared and building GCC.
+tests after configuring with --enable-shared
and building GCC.
GCC does not specify a runpath so that the dynamic linker can find
dynamic libraries at runtime.
@@ -317,9 +328,9 @@ NFS server goes down.
programs are going to hang no matter what you do. The problem is
programs that do not require the directories.
-SunOS effectively always passed a -R option for every -L option;
-this was a bad idea, and so it was removed for Solaris. We should
-not recreate it.
+SunOS effectively always passed a -R
option for every
+-L
option; this was a bad idea, and so it was removed for
+Solaris. We should not recreate it.
However, if you feel you really need such an option to be passed
automatically to the linker, you may add it to the GCC specs file.
From gcc-patches-return-37801-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org Sun Jul 01 15:14:18 2001
Return-Path:
Delivered-To: listarch-gcc-patches@gcc.gnu.org
Received: (qmail 24380 invoked by alias); 1 Jul 2001 15:14:18 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive:
List-Post:
List-Help:
Sender: gcc-patches-owner@gcc.gnu.org
Delivered-To: mailing list gcc-patches@gcc.gnu.org
Received: (qmail 24360 invoked from network); 1 Jul 2001 15:14:17 -0000
Received: from unknown (HELO vexpert.dbai.tuwien.ac.at) (128.130.111.12)
by sourceware.cygnus.com with SMTP; 1 Jul 2001 15:14:17 -0000
Received: from deneb (deneb [128.130.111.2])
by vexpert.dbai.tuwien.ac.at (8.11.1/8.11.1) with ESMTP id f61FDaI14130;
Sun, 1 Jul 2001 17:13:37 +0200 (MET DST)
Date: Sun, 1 Jul 2001 17:13:35 +0200 (CEST)
From: Gerald Pfeifer
To: Rich Churcher
cc:
Subject: Re: PATCH: gcc-3.0.html
In-Reply-To:
Message-ID:
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
On 2 Jul 2001, Rich Churcher wrote:
> * Tiny patch to add links to mirror sites in similar fashion to
> gcc-2.95.3.html
I hope you don't mind, but based on your suggestion, I installed the
following patch instead, which also refers to our own mirror sites as
well as CVS.
Gerald
Index: gcc-3.0.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-3.0/gcc-3.0.html,v
retrieving revision 1.3
diff -u -3 -p -r1.3 gcc-3.0.html
--- gcc-3.0.html 2001/06/18 13:08:46 1.3
+++ gcc-3.0.html 2001/07/01 15:12:41
@@ -33,5 +33,9 @@ is what makes GCC successful.
GCC project web site or contact the
GCC development mailing list.
+To obtain GCC please use our mirror sites,
+one of the GNU mirror sites,
+or our CVS server.
+