www.delorie.com/archives/browse.cgi | search |
DMARC-Filter: | OpenDMARC Filter v1.4.2 delorie.com 55HCldDa405914 |
Authentication-Results: | delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com |
Authentication-Results: | delorie.com; spf=pass smtp.mailfrom=cygwin.com |
DKIM-Filter: | OpenDKIM Filter v2.11.0 delorie.com 55HCldDa405914 |
Authentication-Results: | delorie.com; |
dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=MOlvPHQx | |
X-Recipient: | archive-cygwin AT delorie DOT com |
DKIM-Filter: | OpenDKIM Filter v2.11.0 sourceware.org 5D16B39340E5 |
DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; |
s=default; t=1750164458; | |
bh=DT9W7fCt4ML/NkBv/CIVTcG4z5+GKK1zwNtIjCKxLjo=; | |
h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: | |
List-Help:List-Subscribe:From:Reply-To:From; | |
b=MOlvPHQx8MzpXZ/R7hASftp5LGRfmYp+9fDXP0hoMGZCK/qMqoSN5td79+CgKwQ06 | |
ZcOLHIPuix+avwqW1l9KqWJ26xROyJLwQGKVqXeOrTp5gl6/O1CDeOLdRQtq3ffFQH | |
5ln6kwdUBxn8FNl1v/ZNzDuZi3EvVa6bw0etVRFY= | |
X-Original-To: | cygwin AT cygwin DOT com |
Delivered-To: | cygwin AT cygwin DOT com |
DMARC-Filter: | OpenDMARC Filter v1.4.2 sourceware.org B83F2385AC32 |
ARC-Filter: | OpenARC Filter v1.0.0 sourceware.org B83F2385AC32 |
ARC-Seal: | i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1750164411; cv=none; |
b=LtVFcXns9sLajJMtoYpMwhd8G3XjC29tP8cj8QNmY8rfL1bJHjC1euEXb9GTyI7y9H1pPg7KkoZgtCQ42TSy1Xhlo6WoGicWEdEa/XdTsdOUMmtQmzd81TnjAtz3yKMjc1SBQIsCpncEmyWxnQwrtxo34O3oF05pbbc9aRlqX6E= | |
ARC-Message-Signature: | i=1; a=rsa-sha256; d=sourceware.org; s=key; |
t=1750164411; c=relaxed/simple; | |
bh=ij7i9PHUQLmy8LFaeFQonBeC8nSi29rpwhfRFw60Ow4=; | |
h=Date:From:To:Subject:Message-Id:Mime-Version:DKIM-Signature; | |
b=AdaW98nOX3zAUzD7JsyBrvbgdZrqBzA8/fNnhqfCOJZdVgOi5+guvlZQAt1CRRw8MIelNHQyAqDid5c9vpjniXsOiaQ/DUrMjkuWokqiz4NP4T8XHrnQro9ctJittHL2DHUo9dGHMfQWW4rYy+Tb5LTx+JH/clJlK9AfLm5sN7g= | |
ARC-Authentication-Results: | i=1; server2.sourceware.org |
DKIM-Filter: | OpenDKIM Filter v2.11.0 sourceware.org B83F2385AC32 |
Date: | Tue, 17 Jun 2025 21:46:47 +0900 |
To: | cygwin AT cygwin DOT com |
Subject: | doxygen hangs when many call graphs are generated. |
Message-Id: | <20250617214647.ed6f64d44a665820a3fbd1b9@nifty.ne.jp> |
X-Mailer: | Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) |
Mime-Version: | 1.0 |
X-BeenThere: | cygwin AT cygwin DOT com |
X-Mailman-Version: | 2.1.30 |
List-Id: | General Cygwin discussions and problem reports <cygwin.cygwin.com> |
List-Archive: | <https://cygwin.com/pipermail/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-request AT cygwin DOT com?subject=help> |
List-Subscribe: | <https://cygwin.com/mailman/listinfo/cygwin>, |
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe> | |
From: | Takashi Yano via Cygwin <cygwin AT cygwin DOT com> |
Reply-To: | Takashi Yano <takashi DOT yano AT nifty DOT ne DOT jp> |
Sender: | "Cygwin" <cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com> |
This is a multi-part message in MIME format. --Multipart=_Tue__17_Jun_2025_21_46_47_+0900_h=Nz7CH.Mgk+DlPb Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hi, I encountered a problem of doxygen when many call graphs are generated. How to reproduce: 1) Make a empty directory. 2) Place two files (Doxyfile, x.c) attached in the directory. 3) Run doxygen in the directory. It seems that this is a bug of cygwin1.dll and the cause is a deadlock in newlib/libc/stdio/findfp.c:__fp_lock_all(). The following patch solves the issue, however, I am not sure this is the right thing at all. diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c index 2cc549537..3de6b33fd 100644 --- a/newlib/libc/stdio/findfp.c +++ b/newlib/libc/stdio/findfp.c @@ -298,7 +298,9 @@ __fp_unlock (struct _reent * ptr __unused, FILE * fp) void __fp_lock_all (void) { +#ifndef __CYGWIN__ __sfp_lock_acquire (); +#endif (void) _fwalk_sglue (NULL, __fp_lock, &__sglue); } @@ -306,6 +308,8 @@ void __fp_unlock_all (void) { (void) _fwalk_sglue (NULL, __fp_unlock, &__sglue); +#ifndef __CYGWIN__ __sfp_lock_release (); +#endif } #endif Any suggenstions? -- Takashi Yano <takashi DOT yano AT nifty DOT ne DOT jp> --Multipart=_Tue__17_Jun_2025_21_46_47_+0900_h=Nz7CH.Mgk+DlPb Content-Type: text/plain; name="Doxyfile" Content-Disposition: attachment; filename="Doxyfile" Content-Transfer-Encoding: base64 IyBEb3h5ZmlsZSAxLjEyLjANCg0KIyBUaGlzIGZpbGUgZGVzY3JpYmVzIHRoZSBzZXR0aW5ncyB0 byBiZSB1c2VkIGJ5IHRoZSBkb2N1bWVudGF0aW9uIHN5c3RlbQ0KIyBEb3h5Z2VuICh3d3cuZG94 eWdlbi5vcmcpIGZvciBhIHByb2plY3QuDQojDQojIEFsbCB0ZXh0IGFmdGVyIGEgZG91YmxlIGhh c2ggKCMjKSBpcyBjb25zaWRlcmVkIGEgY29tbWVudCBhbmQgaXMgcGxhY2VkIGluDQojIGZyb250 IG9mIHRoZSBUQUcgaXQgaXMgcHJlY2VkaW5nLg0KIw0KIyBBbGwgdGV4dCBhZnRlciBhIHNpbmds ZSBoYXNoICgjKSBpcyBjb25zaWRlcmVkIGEgY29tbWVudCBhbmQgd2lsbCBiZSBpZ25vcmVkLg0K IyBUaGUgZm9ybWF0IGlzOg0KIyBUQUcgPSB2YWx1ZSBbdmFsdWUsIC4uLl0NCiMgRm9yIGxpc3Rz LCBpdGVtcyBjYW4gYWxzbyBiZSBhcHBlbmRlZCB1c2luZzoNCiMgVEFHICs9IHZhbHVlIFt2YWx1 ZSwgLi4uXQ0KIyBWYWx1ZXMgdGhhdCBjb250YWluIHNwYWNlcyBzaG91bGQgYmUgcGxhY2VkIGJl dHdlZW4gcXVvdGVzIChcIiBcIikuDQojDQojIE5vdGU6DQojDQojIFVzZSBEb3h5Z2VuIHRvIGNv bXBhcmUgdGhlIHVzZWQgY29uZmlndXJhdGlvbiBmaWxlIHdpdGggdGhlIHRlbXBsYXRlDQojIGNv bmZpZ3VyYXRpb24gZmlsZToNCiMgZG94eWdlbiAteCBbY29uZmlnRmlsZV0NCiMgVXNlIERveHln ZW4gdG8gY29tcGFyZSB0aGUgdXNlZCBjb25maWd1cmF0aW9uIGZpbGUgd2l0aCB0aGUgdGVtcGxh dGUNCiMgY29uZmlndXJhdGlvbiBmaWxlIHdpdGhvdXQgcmVwbGFjaW5nIHRoZSBlbnZpcm9ubWVu dCB2YXJpYWJsZXMgb3IgQ01ha2UgdHlwZQ0KIyByZXBsYWNlbWVudCB2YXJpYWJsZXM6DQojIGRv eHlnZW4gLXhfbm9lbnYgW2NvbmZpZ0ZpbGVdDQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJv amVjdCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K DQojIFRoaXMgdGFnIHNwZWNpZmllcyB0aGUgZW5jb2RpbmcgdXNlZCBmb3IgYWxsIGNoYXJhY3Rl cnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24NCiMgZmlsZSB0aGF0IGZvbGxvdy4gVGhlIGRlZmF1bHQg aXMgVVRGLTggd2hpY2ggaXMgYWxzbyB0aGUgZW5jb2RpbmcgdXNlZCBmb3IgYWxsDQojIHRleHQg YmVmb3JlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoaXMgdGFnLiBEb3h5Z2VuIHVzZXMgbGli aWNvbnYgKG9yIHRoZQ0KIyBpY29udiBidWlsdCBpbnRvIGxpYmMpIGZvciB0aGUgdHJhbnNjb2Rp bmcuIFNlZQ0KIyBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmljb252LyBmb3IgdGhl IGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogVVRG LTguDQoNCkRPWFlGSUxFX0VOQ09ESU5HICAgICAgPSBVVEYtOA0KDQojIFRoZSBQUk9KRUNUX05B TUUgdGFnIGlzIGEgc2luZ2xlIHdvcmQgKG9yIGEgc2VxdWVuY2Ugb2Ygd29yZHMgc3Vycm91bmRl ZCBieQ0KIyBkb3VibGUtcXVvdGVzLCB1bmxlc3MgeW91IGFyZSB1c2luZyBEb3h5d2l6YXJkKSB0 aGF0IHNob3VsZCBpZGVudGlmeSB0aGUNCiMgcHJvamVjdCBmb3Igd2hpY2ggdGhlIGRvY3VtZW50 YXRpb24gaXMgZ2VuZXJhdGVkLiBUaGlzIG5hbWUgaXMgdXNlZCBpbiB0aGUNCiMgdGl0bGUgb2Yg bW9zdCBnZW5lcmF0ZWQgcGFnZXMgYW5kIGluIGEgZmV3IG90aGVyIHBsYWNlcy4NCiMgVGhlIGRl ZmF1bHQgdmFsdWUgaXM6IE15IFByb2plY3QuDQoNClBST0pFQ1RfTkFNRSAgICAgICAgICAgPSAi TXkgUHJvamVjdCINCg0KIyBUaGUgUFJPSkVDVF9OVU1CRVIgdGFnIGNhbiBiZSB1c2VkIHRvIGVu dGVyIGEgcHJvamVjdCBvciByZXZpc2lvbiBudW1iZXIuIFRoaXMNCiMgY291bGQgYmUgaGFuZHkg Zm9yIGFyY2hpdmluZyB0aGUgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gb3IgaWYgc29tZSB2ZXJz aW9uDQojIGNvbnRyb2wgc3lzdGVtIGlzIHVzZWQuDQoNClBST0pFQ1RfTlVNQkVSICAgICAgICAg PQ0KDQojIFVzaW5nIHRoZSBQUk9KRUNUX0JSSUVGIHRhZyBvbmUgY2FuIHByb3ZpZGUgYW4gb3B0 aW9uYWwgb25lIGxpbmUgZGVzY3JpcHRpb24NCiMgZm9yIGEgcHJvamVjdCB0aGF0IGFwcGVhcnMg YXQgdGhlIHRvcCBvZiBlYWNoIHBhZ2UgYW5kIHNob3VsZCBnaXZlIHZpZXdlciBhDQojIHF1aWNr IGlkZWEgYWJvdXQgdGhlIHB1cnBvc2Ugb2YgdGhlIHByb2plY3QuIEtlZXAgdGhlIGRlc2NyaXB0 aW9uIHNob3J0Lg0KDQpQUk9KRUNUX0JSSUVGICAgICAgICAgID0NCg0KIyBXaXRoIHRoZSBQUk9K RUNUX0xPR08gdGFnIG9uZSBjYW4gc3BlY2lmeSBhIGxvZ28gb3IgYW4gaWNvbiB0aGF0IGlzIGlu Y2x1ZGVkDQojIGluIHRoZSBkb2N1bWVudGF0aW9uLiBUaGUgbWF4aW11bSBoZWlnaHQgb2YgdGhl IGxvZ28gc2hvdWxkIG5vdCBleGNlZWQgNTUNCiMgcGl4ZWxzIGFuZCB0aGUgbWF4aW11bSB3aWR0 aCBzaG91bGQgbm90IGV4Y2VlZCAyMDAgcGl4ZWxzLiBEb3h5Z2VuIHdpbGwgY29weQ0KIyB0aGUg bG9nbyB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeS4NCg0KUFJPSkVDVF9MT0dPICAgICAgICAgICA9 DQoNCiMgV2l0aCB0aGUgUFJPSkVDVF9JQ09OIHRhZyBvbmUgY2FuIHNwZWNpZnkgYW4gaWNvbiB0 aGF0IGlzIGluY2x1ZGVkIGluIHRoZSB0YWJzDQojIHdoZW4gdGhlIEhUTUwgZG9jdW1lbnQgaXMg c2hvd24uIERveHlnZW4gd2lsbCBjb3B5IHRoZSBsb2dvIHRvIHRoZSBvdXRwdXQNCiMgZGlyZWN0 b3J5Lg0KDQpQUk9KRUNUX0lDT04gICAgICAgICAgID0NCg0KIyBUaGUgT1VUUFVUX0RJUkVDVE9S WSB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIHBhdGgN CiMgaW50byB3aGljaCB0aGUgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gd2lsbCBiZSB3cml0dGVu LiBJZiBhIHJlbGF0aXZlIHBhdGggaXMNCiMgZW50ZXJlZCwgaXQgd2lsbCBiZSByZWxhdGl2ZSB0 byB0aGUgbG9jYXRpb24gd2hlcmUgRG94eWdlbiB3YXMgc3RhcnRlZC4gSWYNCiMgbGVmdCBibGFu ayB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkLg0KDQpPVVRQVVRfRElSRUNUT1JZ ICAgICAgID0NCg0KIyBJZiB0aGUgQ1JFQVRFX1NVQkRJUlMgdGFnIGlzIHNldCB0byBZRVMgdGhl biBEb3h5Z2VuIHdpbGwgY3JlYXRlIHVwIHRvIDQwOTYNCiMgc3ViLWRpcmVjdG9yaWVzIChpbiAy IGxldmVscykgdW5kZXIgdGhlIG91dHB1dCBkaXJlY3Rvcnkgb2YgZWFjaCBvdXRwdXQgZm9ybWF0 DQojIGFuZCB3aWxsIGRpc3RyaWJ1dGUgdGhlIGdlbmVyYXRlZCBmaWxlcyBvdmVyIHRoZXNlIGRp cmVjdG9yaWVzLiBFbmFibGluZyB0aGlzDQojIG9wdGlvbiBjYW4gYmUgdXNlZnVsIHdoZW4gZmVl ZGluZyBEb3h5Z2VuIGEgaHVnZSBhbW91bnQgb2Ygc291cmNlIGZpbGVzLCB3aGVyZQ0KIyBwdXR0 aW5nIGFsbCBnZW5lcmF0ZWQgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHdvdWxkIG90aGVy d2lzZSBjYXVzZXMNCiMgcGVyZm9ybWFuY2UgcHJvYmxlbXMgZm9yIHRoZSBmaWxlIHN5c3RlbS4g QWRhcHQgQ1JFQVRFX1NVQkRJUlNfTEVWRUwgdG8NCiMgY29udHJvbCB0aGUgbnVtYmVyIG9mIHN1 Yi1kaXJlY3Rvcmllcy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpDUkVBVEVfU1VC RElSUyAgICAgICAgID0gTk8NCg0KIyBDb250cm9scyB0aGUgbnVtYmVyIG9mIHN1Yi1kaXJlY3Rv cmllcyB0aGF0IHdpbGwgYmUgY3JlYXRlZCB3aGVuDQojIENSRUFURV9TVUJESVJTIHRhZyBpcyBz ZXQgdG8gWUVTLiBMZXZlbCAwIHJlcHJlc2VudHMgMTYgZGlyZWN0b3JpZXMsIGFuZCBldmVyeQ0K IyBsZXZlbCBpbmNyZW1lbnQgZG91YmxlcyB0aGUgbnVtYmVyIG9mIGRpcmVjdG9yaWVzLCByZXN1 bHRpbmcgaW4gNDA5Ng0KIyBkaXJlY3RvcmllcyBhdCBsZXZlbCA4IHdoaWNoIGlzIHRoZSBkZWZh dWx0IGFuZCBhbHNvIHRoZSBtYXhpbXVtIHZhbHVlLiBUaGUNCiMgc3ViLWRpcmVjdG9yaWVzIGFy ZSBvcmdhbml6ZWQgaW4gMiBsZXZlbHMsIHRoZSBmaXJzdCBsZXZlbCBhbHdheXMgaGFzIGEgZml4 ZWQNCiMgbnVtYmVyIG9mIDE2IGRpcmVjdG9yaWVzLg0KIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhp bXVtIHZhbHVlOiA4LCBkZWZhdWx0IHZhbHVlOiA4Lg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0 IHRoZSB0YWcgQ1JFQVRFX1NVQkRJUlMgaXMgc2V0IHRvIFlFUy4NCg0KQ1JFQVRFX1NVQkRJUlNf TEVWRUwgICA9IDgNCg0KIyBJZiB0aGUgQUxMT1dfVU5JQ09ERV9OQU1FUyB0YWcgaXMgc2V0IHRv IFlFUywgRG94eWdlbiB3aWxsIGFsbG93IG5vbi1BU0NJSQ0KIyBjaGFyYWN0ZXJzIHRvIGFwcGVh ciBpbiB0aGUgbmFtZXMgb2YgZ2VuZXJhdGVkIGZpbGVzLiBJZiBzZXQgdG8gTk8sIG5vbi1BU0NJ SQ0KIyBjaGFyYWN0ZXJzIHdpbGwgYmUgZXNjYXBlZCwgZm9yIGV4YW1wbGUgX3hFM194ODFfeDg0 IHdpbGwgYmUgdXNlZCBmb3IgVW5pY29kZQ0KIyBVKzMwNDQuDQojIFRoZSBkZWZhdWx0IHZhbHVl IGlzOiBOTy4NCg0KQUxMT1dfVU5JQ09ERV9OQU1FUyAgICA9IE5PDQoNCiMgVGhlIE9VVFBVVF9M QU5HVUFHRSB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBsYW5ndWFnZSBpbiB3aGljaCBhbGwN CiMgZG9jdW1lbnRhdGlvbiBnZW5lcmF0ZWQgYnkgRG94eWdlbiBpcyB3cml0dGVuLiBEb3h5Z2Vu IHdpbGwgdXNlIHRoaXMNCiMgaW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYWxsIGNvbnN0YW50IG91 dHB1dCBpbiB0aGUgcHJvcGVyIGxhbmd1YWdlLg0KIyBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBBZnJp a2FhbnMsIEFyYWJpYywgQXJtZW5pYW4sIEJyYXppbGlhbiwgQnVsZ2FyaWFuLA0KIyBDYXRhbGFu LCBDaGluZXNlLCBDaGluZXNlLVRyYWRpdGlvbmFsLCBDcm9hdGlhbiwgQ3plY2gsIERhbmlzaCwg RHV0Y2gsIEVuZ2xpc2gNCiMgKFVuaXRlZCBTdGF0ZXMpLCBFc3BlcmFudG8sIEZhcnNpIChQZXJz aWFuKSwgRmlubmlzaCwgRnJlbmNoLCBHZXJtYW4sIEdyZWVrLA0KIyBIaW5kaSwgSHVuZ2FyaWFu LCBJbmRvbmVzaWFuLCBJdGFsaWFuLCBKYXBhbmVzZSwgSmFwYW5lc2UtZW4gKEphcGFuZXNlIHdp dGgNCiMgRW5nbGlzaCBtZXNzYWdlcyksIEtvcmVhbiwgS29yZWFuLWVuIChLb3JlYW4gd2l0aCBF bmdsaXNoIG1lc3NhZ2VzKSwgTGF0dmlhbiwNCiMgTGl0aHVhbmlhbiwgTWFjZWRvbmlhbiwgTm9y d2VnaWFuLCBQZXJzaWFuIChGYXJzaSksIFBvbGlzaCwgUG9ydHVndWVzZSwNCiMgUm9tYW5pYW4s IFJ1c3NpYW4sIFNlcmJpYW4sIFNlcmJpYW4tQ3lyaWxsaWMsIFNsb3ZhaywgU2xvdmVuZSwgU3Bh bmlzaCwNCiMgU3dlZGlzaCwgVHVya2lzaCwgVWtyYWluaWFuIGFuZCBWaWV0bmFtZXNlLg0KIyBU aGUgZGVmYXVsdCB2YWx1ZSBpczogRW5nbGlzaC4NCg0KT1VUUFVUX0xBTkdVQUdFICAgICAgICA9 IEVuZ2xpc2gNCg0KIyBJZiB0aGUgQlJJRUZfTUVNQkVSX0RFU0MgdGFnIGlzIHNldCB0byBZRVMs IERveHlnZW4gd2lsbCBpbmNsdWRlIGJyaWVmIG1lbWJlcg0KIyBkZXNjcmlwdGlvbnMgYWZ0ZXIg dGhlIG1lbWJlcnMgdGhhdCBhcmUgbGlzdGVkIGluIHRoZSBmaWxlIGFuZCBjbGFzcw0KIyBkb2N1 bWVudGF0aW9uIChzaW1pbGFyIHRvIEphdmFkb2MpLiBTZXQgdG8gTk8gdG8gZGlzYWJsZSB0aGlz Lg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLg0KDQpCUklFRl9NRU1CRVJfREVTQyAgICAg ID0gWUVTDQoNCiMgSWYgdGhlIFJFUEVBVF9CUklFRiB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdl biB3aWxsIHByZXBlbmQgdGhlIGJyaWVmDQojIGRlc2NyaXB0aW9uIG9mIGEgbWVtYmVyIG9yIGZ1 bmN0aW9uIGJlZm9yZSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24NCiMNCiMgTm90ZTogSWYgYm90 aCBISURFX1VORE9DX01FTUJFUlMgYW5kIEJSSUVGX01FTUJFUl9ERVNDIGFyZSBzZXQgdG8gTk8s IHRoZQ0KIyBicmllZiBkZXNjcmlwdGlvbnMgd2lsbCBiZSBjb21wbGV0ZWx5IHN1cHByZXNzZWQu DQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQoNClJFUEVBVF9CUklFRiAgICAgICAgICAg PSBZRVMNCg0KIyBUaGlzIHRhZyBpbXBsZW1lbnRzIGEgcXVhc2ktaW50ZWxsaWdlbnQgYnJpZWYg ZGVzY3JpcHRpb24gYWJicmV2aWF0b3IgdGhhdCBpcw0KIyB1c2VkIHRvIGZvcm0gdGhlIHRleHQg aW4gdmFyaW91cyBsaXN0aW5ncy4gRWFjaCBzdHJpbmcgaW4gdGhpcyBsaXN0LCBpZiBmb3VuZA0K IyBhcyB0aGUgbGVhZGluZyB0ZXh0IG9mIHRoZSBicmllZiBkZXNjcmlwdGlvbiwgd2lsbCBiZSBz dHJpcHBlZCBmcm9tIHRoZSB0ZXh0DQojIGFuZCB0aGUgcmVzdWx0LCBhZnRlciBwcm9jZXNzaW5n IHRoZSB3aG9sZSBsaXN0LCBpcyB1c2VkIGFzIHRoZSBhbm5vdGF0ZWQNCiMgdGV4dC4gT3RoZXJ3 aXNlLCB0aGUgYnJpZWYgZGVzY3JpcHRpb24gaXMgdXNlZCBhcy1pcy4gSWYgbGVmdCBibGFuaywg dGhlDQojIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHVzZWQgKCRuYW1lIGlzIGF1dG9tYXRpY2FsbHkg cmVwbGFjZWQgd2l0aCB0aGUgbmFtZSBvZg0KIyB0aGUgZW50aXR5KTpUaGUgJG5hbWUgY2xhc3Ms IFRoZSAkbmFtZSB3aWRnZXQsIFRoZSAkbmFtZSBmaWxlLCBpcywgcHJvdmlkZXMsDQojIHNwZWNp ZmllcywgY29udGFpbnMsIHJlcHJlc2VudHMsIGEsIGFuIGFuZCB0aGUuDQoNCkFCQlJFVklBVEVf QlJJRUYgICAgICAgPSAiVGhlICRuYW1lIGNsYXNzIiBcDQogICAgICAgICAgICAgICAgICAgICAg ICAgIlRoZSAkbmFtZSB3aWRnZXQiIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlICRu YW1lIGZpbGUiIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICBpcyBcDQogICAgICAgICAgICAg ICAgICAgICAgICAgcHJvdmlkZXMgXA0KICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmll cyBcDQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgXA0KICAgICAgICAgICAgICAg ICAgICAgICAgIHJlcHJlc2VudHMgXA0KICAgICAgICAgICAgICAgICAgICAgICAgIGEgXA0KICAg ICAgICAgICAgICAgICAgICAgICAgIGFuIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUN Cg0KIyBJZiB0aGUgQUxXQVlTX0RFVEFJTEVEX1NFQyBhbmQgUkVQRUFUX0JSSUVGIHRhZ3MgYXJl IGJvdGggc2V0IHRvIFlFUyB0aGVuDQojIERveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGRldGFpbGVk IHNlY3Rpb24gZXZlbiBpZiB0aGVyZSBpcyBvbmx5IGEgYnJpZWYNCiMgZGVzY3JpcHRpb24uDQoj IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KQUxXQVlTX0RFVEFJTEVEX1NFQyAgICA9IE5P DQoNCiMgSWYgdGhlIElOTElORV9JTkhFUklURURfTUVNQiB0YWcgaXMgc2V0IHRvIFlFUywgRG94 eWdlbiB3aWxsIHNob3cgYWxsDQojIGluaGVyaXRlZCBtZW1iZXJzIG9mIGEgY2xhc3MgaW4gdGhl IGRvY3VtZW50YXRpb24gb2YgdGhhdCBjbGFzcyBhcyBpZiB0aG9zZQ0KIyBtZW1iZXJzIHdlcmUg b3JkaW5hcnkgY2xhc3MgbWVtYmVycy4gQ29uc3RydWN0b3JzLCBkZXN0cnVjdG9ycyBhbmQgYXNz aWdubWVudA0KIyBvcGVyYXRvcnMgb2YgdGhlIGJhc2UgY2xhc3NlcyB3aWxsIG5vdCBiZSBzaG93 bi4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpJTkxJTkVfSU5IRVJJVEVEX01FTUIg ID0gTk8NCg0KIyBJZiB0aGUgRlVMTF9QQVRIX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5 Z2VuIHdpbGwgcHJlcGVuZCB0aGUgZnVsbCBwYXRoDQojIGJlZm9yZSBmaWxlcyBuYW1lIGluIHRo ZSBmaWxlIGxpc3QgYW5kIGluIHRoZSBoZWFkZXIgZmlsZXMuIElmIHNldCB0byBOTyB0aGUNCiMg c2hvcnRlc3QgcGF0aCB0aGF0IG1ha2VzIHRoZSBmaWxlIG5hbWUgdW5pcXVlIHdpbGwgYmUgdXNl ZA0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLg0KDQpGVUxMX1BBVEhfTkFNRVMgICAgICAg ID0gWUVTDQoNCiMgVGhlIFNUUklQX0ZST01fUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc3RyaXAg YSB1c2VyLWRlZmluZWQgcGFydCBvZiB0aGUgcGF0aC4NCiMgU3RyaXBwaW5nIGlzIG9ubHkgZG9u ZSBpZiBvbmUgb2YgdGhlIHNwZWNpZmllZCBzdHJpbmdzIG1hdGNoZXMgdGhlIGxlZnQtaGFuZA0K IyBwYXJ0IG9mIHRoZSBwYXRoLiBUaGUgdGFnIGNhbiBiZSB1c2VkIHRvIHNob3cgcmVsYXRpdmUg cGF0aHMgaW4gdGhlIGZpbGUgbGlzdC4NCiMgSWYgbGVmdCBibGFuayB0aGUgZGlyZWN0b3J5IGZy b20gd2hpY2ggRG94eWdlbiBpcyBydW4gaXMgdXNlZCBhcyB0aGUgcGF0aCB0bw0KIyBzdHJpcC4N CiMNCiMgTm90ZSB0aGF0IHlvdSBjYW4gc3BlY2lmeSBhYnNvbHV0ZSBwYXRocyBoZXJlLCBidXQg YWxzbyByZWxhdGl2ZSBwYXRocywgd2hpY2gNCiMgd2lsbCBiZSByZWxhdGl2ZSBmcm9tIHRoZSBk aXJlY3Rvcnkgd2hlcmUgRG94eWdlbiBpcyBzdGFydGVkLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0 aGF0IHRoZSB0YWcgRlVMTF9QQVRIX05BTUVTIGlzIHNldCB0byBZRVMuDQoNClNUUklQX0ZST01f UEFUSCAgICAgICAgPQ0KDQojIFRoZSBTVFJJUF9GUk9NX0lOQ19QQVRIIHRhZyBjYW4gYmUgdXNl ZCB0byBzdHJpcCBhIHVzZXItZGVmaW5lZCBwYXJ0IG9mIHRoZQ0KIyBwYXRoIG1lbnRpb25lZCBp biB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGNsYXNzLCB3aGljaCB0ZWxscyB0aGUgcmVhZGVyIHdo aWNoDQojIGhlYWRlciBmaWxlIHRvIGluY2x1ZGUgaW4gb3JkZXIgdG8gdXNlIGEgY2xhc3MuIElm IGxlZnQgYmxhbmsgb25seSB0aGUgbmFtZSBvZg0KIyB0aGUgaGVhZGVyIGZpbGUgY29udGFpbmlu ZyB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyB1c2VkLiBPdGhlcndpc2Ugb25lIHNob3VsZA0KIyBz cGVjaWZ5IHRoZSBsaXN0IG9mIGluY2x1ZGUgcGF0aHMgdGhhdCBhcmUgbm9ybWFsbHkgcGFzc2Vk IHRvIHRoZSBjb21waWxlcg0KIyB1c2luZyB0aGUgLUkgZmxhZy4NCg0KU1RSSVBfRlJPTV9JTkNf UEFUSCAgICA9DQoNCiMgSWYgdGhlIFNIT1JUX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5 Z2VuIHdpbGwgZ2VuZXJhdGUgbXVjaCBzaG9ydGVyIChidXQNCiMgbGVzcyByZWFkYWJsZSkgZmls ZSBuYW1lcy4gVGhpcyBjYW4gYmUgdXNlZnVsIGlzIHlvdXIgZmlsZSBzeXN0ZW1zIGRvZXNuJ3QN CiMgc3VwcG9ydCBsb25nIG5hbWVzIGxpa2Ugb24gRE9TLCBNYWMsIG9yIENELVJPTS4NCiMgVGhl IGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpTSE9SVF9OQU1FUyAgICAgICAgICAgID0gTk8NCg0K IyBJZiB0aGUgSkFWQURPQ19BVVRPQlJJRUYgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2Vu IHdpbGwgaW50ZXJwcmV0IHRoZQ0KIyBmaXJzdCBsaW5lICh1bnRpbCB0aGUgZmlyc3QgZG90KSBv ZiBhIEphdmFkb2Mtc3R5bGUgY29tbWVudCBhcyB0aGUgYnJpZWYNCiMgZGVzY3JpcHRpb24uIElm IHNldCB0byBOTywgdGhlIEphdmFkb2Mtc3R5bGUgd2lsbCBiZWhhdmUganVzdCBsaWtlIHJlZ3Vs YXIgUXQtDQojIHN0eWxlIGNvbW1lbnRzICh0aHVzIHJlcXVpcmluZyBhbiBleHBsaWNpdCBAYnJp ZWYgY29tbWFuZCBmb3IgYSBicmllZg0KIyBkZXNjcmlwdGlvbi4pDQojIFRoZSBkZWZhdWx0IHZh bHVlIGlzOiBOTy4NCg0KSkFWQURPQ19BVVRPQlJJRUYgICAgICA9IE5PDQoNCiMgSWYgdGhlIEpB VkFET0NfQkFOTkVSIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gRG94eWdlbiB3aWxsIGludGVycHJl dCBhIGxpbmUNCiMgc3VjaCBhcw0KIyAvKioqKioqKioqKioqKioqDQojIGFzIGJlaW5nIHRoZSBi ZWdpbm5pbmcgb2YgYSBKYXZhZG9jLXN0eWxlIGNvbW1lbnQgImJhbm5lciIuIElmIHNldCB0byBO TywgdGhlDQojIEphdmFkb2Mtc3R5bGUgd2lsbCBiZWhhdmUganVzdCBsaWtlIHJlZ3VsYXIgY29t bWVudHMgYW5kIGl0IHdpbGwgbm90IGJlDQojIGludGVycHJldGVkIGJ5IERveHlnZW4uDQojIFRo ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KSkFWQURPQ19CQU5ORVIgICAgICAgICA9IE5PDQoN CiMgSWYgdGhlIFFUX0FVVE9CUklFRiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIERveHlnZW4gd2ls bCBpbnRlcnByZXQgdGhlIGZpcnN0DQojIGxpbmUgKHVudGlsIHRoZSBmaXJzdCBkb3QpIG9mIGEg UXQtc3R5bGUgY29tbWVudCBhcyB0aGUgYnJpZWYgZGVzY3JpcHRpb24uIElmDQojIHNldCB0byBO TywgdGhlIFF0LXN0eWxlIHdpbGwgYmVoYXZlIGp1c3QgbGlrZSByZWd1bGFyIFF0LXN0eWxlIGNv bW1lbnRzICh0aHVzDQojIHJlcXVpcmluZyBhbiBleHBsaWNpdCBcYnJpZWYgY29tbWFuZCBmb3Ig YSBicmllZiBkZXNjcmlwdGlvbi4pDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KUVRf QVVUT0JSSUVGICAgICAgICAgICA9IE5PDQoNCiMgVGhlIE1VTFRJTElORV9DUFBfSVNfQlJJRUYg dGFnIGNhbiBiZSBzZXQgdG8gWUVTIHRvIG1ha2UgRG94eWdlbiB0cmVhdCBhDQojIG11bHRpLWxp bmUgQysrIHNwZWNpYWwgY29tbWVudCBibG9jayAoaS5lLiBhIGJsb2NrIG9mIC8vISBvciAvLy8g Y29tbWVudHMpIGFzDQojIGEgYnJpZWYgZGVzY3JpcHRpb24uIFRoaXMgdXNlZCB0byBiZSB0aGUg ZGVmYXVsdCBiZWhhdmlvci4gVGhlIG5ldyBkZWZhdWx0IGlzDQojIHRvIHRyZWF0IGEgbXVsdGkt bGluZSBDKysgY29tbWVudCBibG9jayBhcyBhIGRldGFpbGVkIGRlc2NyaXB0aW9uLiBTZXQgdGhp cw0KIyB0YWcgdG8gWUVTIGlmIHlvdSBwcmVmZXIgdGhlIG9sZCBiZWhhdmlvciBpbnN0ZWFkLg0K Iw0KIyBOb3RlIHRoYXQgc2V0dGluZyB0aGlzIHRhZyB0byBZRVMgYWxzbyBtZWFucyB0aGF0IHJh dGlvbmFsIHJvc2UgY29tbWVudHMgYXJlDQojIG5vdCByZWNvZ25pemVkIGFueSBtb3JlLg0KIyBU aGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQoNCk1VTFRJTElORV9DUFBfSVNfQlJJRUYgPSBOTw0K DQojIEJ5IGRlZmF1bHQgUHl0aG9uIGRvY3N0cmluZ3MgYXJlIGRpc3BsYXllZCBhcyBwcmVmb3Jt YXR0ZWQgdGV4dCBhbmQgRG94eWdlbidzDQojIHNwZWNpYWwgY29tbWFuZHMgY2Fubm90IGJlIHVz ZWQuIEJ5IHNldHRpbmcgUFlUSE9OX0RPQ1NUUklORyB0byBOTyB0aGUNCiMgRG94eWdlbidzIHNw ZWNpYWwgY29tbWFuZHMgY2FuIGJlIHVzZWQgYW5kIHRoZSBjb250ZW50cyBvZiB0aGUgZG9jc3Ry aW5nDQojIGRvY3VtZW50YXRpb24gYmxvY2tzIGlzIHNob3duIGFzIERveHlnZW4gZG9jdW1lbnRh dGlvbi4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KUFlUSE9OX0RPQ1NUUklORyAg ICAgICA9IFlFUw0KDQojIElmIHRoZSBJTkhFUklUX0RPQ1MgdGFnIGlzIHNldCB0byBZRVMgdGhl biBhbiB1bmRvY3VtZW50ZWQgbWVtYmVyIGluaGVyaXRzIHRoZQ0KIyBkb2N1bWVudGF0aW9uIGZy b20gYW55IGRvY3VtZW50ZWQgbWVtYmVyIHRoYXQgaXQgcmUtaW1wbGVtZW50cy4NCiMgVGhlIGRl ZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KSU5IRVJJVF9ET0NTICAgICAgICAgICA9IFlFUw0KDQoj IElmIHRoZSBTRVBBUkFURV9NRU1CRVJfUEFHRVMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5 Z2VuIHdpbGwgcHJvZHVjZSBhIG5ldw0KIyBwYWdlIGZvciBlYWNoIG1lbWJlci4gSWYgc2V0IHRv IE5PLCB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIG1lbWJlciB3aWxsIGJlIHBhcnQNCiMgb2YgdGhl IGZpbGUvY2xhc3MvbmFtZXNwYWNlIHRoYXQgY29udGFpbnMgaXQuDQojIFRoZSBkZWZhdWx0IHZh bHVlIGlzOiBOTy4NCg0KU0VQQVJBVEVfTUVNQkVSX1BBR0VTICA9IE5PDQoNCiMgVGhlIFRBQl9T SVpFIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIG51bWJlciBvZiBzcGFjZXMgaW4gYSB0YWIu IERveHlnZW4NCiMgdXNlcyB0aGlzIHZhbHVlIHRvIHJlcGxhY2UgdGFicyBieSBzcGFjZXMgaW4g Y29kZSBmcmFnbWVudHMuDQojIE1pbmltdW0gdmFsdWU6IDEsIG1heGltdW0gdmFsdWU6IDE2LCBk ZWZhdWx0IHZhbHVlOiA0Lg0KDQpUQUJfU0laRSAgICAgICAgICAgICAgID0gNA0KDQojIFRoaXMg dGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBudW1iZXIgb2YgYWxpYXNlcyB0aGF0IGFjdCBh cyBjb21tYW5kcyBpbg0KIyB0aGUgZG9jdW1lbnRhdGlvbi4gQW4gYWxpYXMgaGFzIHRoZSBmb3Jt Og0KIyBuYW1lPXZhbHVlDQojIEZvciBleGFtcGxlIGFkZGluZw0KIyAic2lkZWVmZmVjdD1AcGFy IFNpZGUgRWZmZWN0czpeXiINCiMgd2lsbCBhbGxvdyB5b3UgdG8gcHV0IHRoZSBjb21tYW5kIFxz aWRlZWZmZWN0IChvciBAc2lkZWVmZmVjdCkgaW4gdGhlDQojIGRvY3VtZW50YXRpb24sIHdoaWNo IHdpbGwgcmVzdWx0IGluIGEgdXNlci1kZWZpbmVkIHBhcmFncmFwaCB3aXRoIGhlYWRpbmcNCiMg IlNpZGUgRWZmZWN0czoiLiBOb3RlIHRoYXQgeW91IGNhbm5vdCBwdXQgXG4ncyBpbiB0aGUgdmFs dWUgcGFydCBvZiBhbiBhbGlhcw0KIyB0byBpbnNlcnQgbmV3bGluZXMgKGluIHRoZSByZXN1bHRp bmcgb3V0cHV0KS4gWW91IGNhbiBwdXQgXl4gaW4gdGhlIHZhbHVlIHBhcnQNCiMgb2YgYW4gYWxp YXMgdG8gaW5zZXJ0IGEgbmV3bGluZSBhcyBpZiBhIHBoeXNpY2FsIG5ld2xpbmUgd2FzIGluIHRo ZSBvcmlnaW5hbA0KIyBmaWxlLiBXaGVuIHlvdSBuZWVkIGEgbGl0ZXJhbCB7IG9yIH0gb3IgLCBp biB0aGUgdmFsdWUgcGFydCBvZiBhbiBhbGlhcyB5b3UNCiMgaGF2ZSB0byBlc2NhcGUgdGhlbSBi eSBtZWFucyBvZiBhIGJhY2tzbGFzaCAoXCksIHRoaXMgY2FuIGxlYWQgdG8gY29uZmxpY3RzDQoj IHdpdGggdGhlIGNvbW1hbmRzIFx7IGFuZCBcfSBmb3IgdGhlc2UgaXQgaXMgYWR2aXNlZCB0byB1 c2UgdGhlIHZlcnNpb24gQHsgYW5kDQojIEB9IG9yIHVzZSBhIGRvdWJsZSBlc2NhcGUgKFxceyBh bmQgXFx9KQ0KDQpBTElBU0VTICAgICAgICAgICAgICAgID0NCg0KIyBTZXQgdGhlIE9QVElNSVpF X09VVFBVVF9GT1JfQyB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBDIHNv dXJjZXMNCiMgb25seS4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMg bW9yZSB0YWlsb3JlZCBmb3IgQy4gRm9yDQojIGluc3RhbmNlLCBzb21lIG9mIHRoZSBuYW1lcyB0 aGF0IGFyZSB1c2VkIHdpbGwgYmUgZGlmZmVyZW50LiBUaGUgbGlzdCBvZiBhbGwNCiMgbWVtYmVy cyB3aWxsIGJlIG9taXR0ZWQsIGV0Yy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpP UFRJTUlaRV9PVVRQVVRfRk9SX0MgID0gTk8NCg0KIyBTZXQgdGhlIE9QVElNSVpFX09VVFBVVF9K QVZBIHRhZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIEphdmEgb3INCiMgUHl0 aG9uIHNvdXJjZXMgb25seS4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQg aXMgbW9yZSB0YWlsb3JlZA0KIyBmb3IgdGhhdCBsYW5ndWFnZS4gRm9yIGluc3RhbmNlLCBuYW1l c3BhY2VzIHdpbGwgYmUgcHJlc2VudGVkIGFzIHBhY2thZ2VzLA0KIyBxdWFsaWZpZWQgc2NvcGVz IHdpbGwgbG9vayBkaWZmZXJlbnQsIGV0Yy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0K DQpPUFRJTUlaRV9PVVRQVVRfSkFWQSAgID0gTk8NCg0KIyBTZXQgdGhlIE9QVElNSVpFX0ZPUl9G T1JUUkFOIHRhZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIEZvcnRyYW4NCiMg c291cmNlcy4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMgdGFpbG9y ZWQgZm9yIEZvcnRyYW4uDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KT1BUSU1JWkVf Rk9SX0ZPUlRSQU4gICA9IE5PDQoNCiMgU2V0IHRoZSBPUFRJTUlaRV9PVVRQVVRfVkhETCB0YWcg dG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBWSERMDQojIHNvdXJjZXMuIERveHln ZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIHRhaWxvcmVkIGZvciBWSERMLg0K IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQoNCk9QVElNSVpFX09VVFBVVF9WSERMICAgPSBO Tw0KDQojIFNldCB0aGUgT1BUSU1JWkVfT1VUUFVUX1NMSUNFIHRhZyB0byBZRVMgaWYgeW91ciBw cm9qZWN0IGNvbnNpc3RzIG9mIFNsaWNlDQojIHNvdXJjZXMgb25seS4gRG94eWdlbiB3aWxsIHRo ZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMgbW9yZSB0YWlsb3JlZCBmb3IgdGhhdA0KIyBsYW5n dWFnZS4gRm9yIGluc3RhbmNlLCBuYW1lc3BhY2VzIHdpbGwgYmUgcHJlc2VudGVkIGFzIG1vZHVs ZXMsIHR5cGVzIHdpbGwgYmUNCiMgc2VwYXJhdGVkIGludG8gbW9yZSBncm91cHMsIGV0Yy4NCiMg VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpPUFRJTUlaRV9PVVRQVVRfU0xJQ0UgID0gTk8N Cg0KIyBEb3h5Z2VuIHNlbGVjdHMgdGhlIHBhcnNlciB0byB1c2UgZGVwZW5kaW5nIG9uIHRoZSBl eHRlbnNpb24gb2YgdGhlIGZpbGVzIGl0DQojIHBhcnNlcy4gV2l0aCB0aGlzIHRhZyB5b3UgY2Fu IGFzc2lnbiB3aGljaCBwYXJzZXIgdG8gdXNlIGZvciBhIGdpdmVuDQojIGV4dGVuc2lvbi4gRG94 eWdlbiBoYXMgYSBidWlsdC1pbiBtYXBwaW5nLCBidXQgeW91IGNhbiBvdmVycmlkZSBvciBleHRl bmQgaXQNCiMgdXNpbmcgdGhpcyB0YWcuIFRoZSBmb3JtYXQgaXMgZXh0PWxhbmd1YWdlLCB3aGVy ZSBleHQgaXMgYSBmaWxlIGV4dGVuc2lvbiwgYW5kDQojIGxhbmd1YWdlIGlzIG9uZSBvZiB0aGUg cGFyc2VycyBzdXBwb3J0ZWQgYnkgRG94eWdlbjogSURMLCBKYXZhLCBKYXZhU2NyaXB0LA0KIyBD c2hhcnAgKEMjKSwgQywgQysrLCBMZXgsIEQsIFBIUCwgbWQgKE1hcmtkb3duKSwgT2JqZWN0aXZl LUMsIFB5dGhvbiwgU2xpY2UsDQojIFZIREwsIEZvcnRyYW4gKGZpeGVkIGZvcm1hdCBGb3J0cmFu OiBGb3J0cmFuRml4ZWQsIGZyZWUgZm9ybWF0dGVkIEZvcnRyYW46DQojIEZvcnRyYW5GcmVlLCB1 bmtub3duIGZvcm1hdHRlZCBGb3J0cmFuOiBGb3J0cmFuLiBJbiB0aGUgbGF0ZXIgY2FzZSB0aGUg cGFyc2VyDQojIHRyaWVzIHRvIGd1ZXNzIHdoZXRoZXIgdGhlIGNvZGUgaXMgZml4ZWQgb3IgZnJl ZSBmb3JtYXR0ZWQgY29kZSwgdGhpcyBpcyB0aGUNCiMgZGVmYXVsdCBmb3IgRm9ydHJhbiB0eXBl IGZpbGVzKS4gRm9yIGluc3RhbmNlIHRvIG1ha2UgRG94eWdlbiB0cmVhdCAuaW5jIGZpbGVzDQoj IGFzIEZvcnRyYW4gZmlsZXMgKGRlZmF1bHQgaXMgUEhQKSwgYW5kIC5mIGZpbGVzIGFzIEMgKGRl ZmF1bHQgaXMgRm9ydHJhbiksDQojIHVzZTogaW5jPUZvcnRyYW4gZj1DLg0KIw0KIyBOb3RlOiBG b3IgZmlsZXMgd2l0aG91dCBleHRlbnNpb24geW91IGNhbiB1c2Ugbm9fZXh0ZW5zaW9uIGFzIGEg cGxhY2Vob2xkZXIuDQojDQojIE5vdGUgdGhhdCBmb3IgY3VzdG9tIGV4dGVuc2lvbnMgeW91IGFs c28gbmVlZCB0byBzZXQgRklMRV9QQVRURVJOUyBvdGhlcndpc2UNCiMgdGhlIGZpbGVzIGFyZSBu b3QgcmVhZCBieSBEb3h5Z2VuLiBXaGVuIHNwZWNpZnlpbmcgbm9fZXh0ZW5zaW9uIHlvdSBzaG91 bGQgYWRkDQojICogdG8gdGhlIEZJTEVfUEFUVEVSTlMuDQojDQojIE5vdGUgc2VlIGFsc28gdGhl IGxpc3Qgb2YgZGVmYXVsdCBmaWxlIGV4dGVuc2lvbiBtYXBwaW5ncy4NCg0KRVhURU5TSU9OX01B UFBJTkcgICAgICA9DQoNCiMgSWYgdGhlIE1BUktET1dOX1NVUFBPUlQgdGFnIGlzIGVuYWJsZWQg dGhlbiBEb3h5Z2VuIHByZS1wcm9jZXNzZXMgYWxsIGNvbW1lbnRzDQojIGFjY29yZGluZyB0byB0 aGUgTWFya2Rvd24gZm9ybWF0LCB3aGljaCBhbGxvd3MgZm9yIG1vcmUgcmVhZGFibGUNCiMgZG9j dW1lbnRhdGlvbi4gU2VlIGh0dHBzOi8vZGFyaW5nZmlyZWJhbGwubmV0L3Byb2plY3RzL21hcmtk b3duLyBmb3IgZGV0YWlscy4NCiMgVGhlIG91dHB1dCBvZiBtYXJrZG93biBwcm9jZXNzaW5nIGlz IGZ1cnRoZXIgcHJvY2Vzc2VkIGJ5IERveHlnZW4sIHNvIHlvdSBjYW4NCiMgbWl4IERveHlnZW4s IEhUTUwsIGFuZCBYTUwgY29tbWFuZHMgd2l0aCBNYXJrZG93biBmb3JtYXR0aW5nLiBEaXNhYmxl IG9ubHkgaW4NCiMgY2FzZSBvZiBiYWNrd2FyZCBjb21wYXRpYmlsaXRpZXMgaXNzdWVzLg0KIyBU aGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLg0KDQpNQVJLRE9XTl9TVVBQT1JUICAgICAgID0gWUVT DQoNCiMgV2hlbiB0aGUgVE9DX0lOQ0xVREVfSEVBRElOR1MgdGFnIGlzIHNldCB0byBhIG5vbi16 ZXJvIHZhbHVlLCBhbGwgaGVhZGluZ3MgdXANCiMgdG8gdGhhdCBsZXZlbCBhcmUgYXV0b21hdGlj YWxseSBpbmNsdWRlZCBpbiB0aGUgdGFibGUgb2YgY29udGVudHMsIGV2ZW4gaWYNCiMgdGhleSBk byBub3QgaGF2ZSBhbiBpZCBhdHRyaWJ1dGUuDQojIE5vdGU6IFRoaXMgZmVhdHVyZSBjdXJyZW50 bHkgYXBwbGllcyBvbmx5IHRvIE1hcmtkb3duIGhlYWRpbmdzLg0KIyBNaW5pbXVtIHZhbHVlOiAw LCBtYXhpbXVtIHZhbHVlOiA5OSwgZGVmYXVsdCB2YWx1ZTogNi4NCiMgVGhpcyB0YWcgcmVxdWly ZXMgdGhhdCB0aGUgdGFnIE1BUktET1dOX1NVUFBPUlQgaXMgc2V0IHRvIFlFUy4NCg0KVE9DX0lO Q0xVREVfSEVBRElOR1MgICA9IDYNCg0KIyBUaGUgTUFSS0RPV05fSURfU1RZTEUgdGFnIGNhbiBi ZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGFsZ29yaXRobSB1c2VkIHRvDQojIGdlbmVyYXRlIGlkZW50 aWZpZXJzIGZvciB0aGUgTWFya2Rvd24gaGVhZGluZ3MuIE5vdGU6IEV2ZXJ5IGlkZW50aWZpZXIg aXMNCiMgdW5pcXVlLg0KIyBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBET1hZR0VOIHVzZSBhIGZpeGVk ICdhdXRvdG9jX21kJyBzdHJpbmcgZm9sbG93ZWQgYnkgYQ0KIyBzZXF1ZW5jZSBudW1iZXIgc3Rh cnRpbmcgYXQgMCBhbmQgR0lUSFVCIHVzZSB0aGUgbG93ZXIgY2FzZSB2ZXJzaW9uIG9mIHRpdGxl DQojIHdpdGggYW55IHdoaXRlc3BhY2UgcmVwbGFjZWQgYnkgJy0nIGFuZCBwdW5jdHVhdGlvbiBj aGFyYWN0ZXJzIHJlbW92ZWQuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBET1hZR0VOLg0KIyBU aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgTUFSS0RPV05fU1VQUE9SVCBpcyBzZXQgdG8g WUVTLg0KDQpNQVJLRE9XTl9JRF9TVFlMRSAgICAgID0gRE9YWUdFTg0KDQojIFdoZW4gZW5hYmxl ZCBEb3h5Z2VuIHRyaWVzIHRvIGxpbmsgd29yZHMgdGhhdCBjb3JyZXNwb25kIHRvIGRvY3VtZW50 ZWQNCiMgY2xhc3Nlcywgb3IgbmFtZXNwYWNlcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIGRvY3Vt ZW50YXRpb24uIFN1Y2ggYSBsaW5rIGNhbg0KIyBiZSBwcmV2ZW50ZWQgaW4gaW5kaXZpZHVhbCBj YXNlcyBieSBwdXR0aW5nIGEgJSBzaWduIGluIGZyb250IG9mIHRoZSB3b3JkIG9yDQojIGdsb2Jh bGx5IGJ5IHNldHRpbmcgQVVUT0xJTktfU1VQUE9SVCB0byBOTy4NCiMgVGhlIGRlZmF1bHQgdmFs dWUgaXM6IFlFUy4NCg0KQVVUT0xJTktfU1VQUE9SVCAgICAgICA9IFlFUw0KDQojIElmIHlvdSB1 c2UgU1RMIGNsYXNzZXMgKGkuZS4gc3RkOjpzdHJpbmcsIHN0ZDo6dmVjdG9yLCBldGMuKSBidXQg ZG8gbm90IHdhbnQNCiMgdG8gaW5jbHVkZSAoYSB0YWcgZmlsZSBmb3IpIHRoZSBTVEwgc291cmNl cyBhcyBpbnB1dCwgdGhlbiB5b3Ugc2hvdWxkIHNldCB0aGlzDQojIHRhZyB0byBZRVMgaW4gb3Jk ZXIgdG8gbGV0IERveHlnZW4gbWF0Y2ggZnVuY3Rpb25zIGRlY2xhcmF0aW9ucyBhbmQNCiMgZGVm aW5pdGlvbnMgd2hvc2UgYXJndW1lbnRzIGNvbnRhaW4gU1RMIGNsYXNzZXMgKGUuZy4gZnVuYyhz dGQ6OnN0cmluZyk7DQojIHZlcnN1cyBmdW5jKHN0ZDo6c3RyaW5nKSB7fSkuIFRoaXMgYWxzbyBt YWtlcyB0aGUgaW5oZXJpdGFuY2UgYW5kDQojIGNvbGxhYm9yYXRpb24gZGlhZ3JhbXMgdGhhdCBp bnZvbHZlIFNUTCBjbGFzc2VzIG1vcmUgY29tcGxldGUgYW5kIGFjY3VyYXRlLg0KIyBUaGUgZGVm YXVsdCB2YWx1ZSBpczogTk8uDQoNCkJVSUxUSU5fU1RMX1NVUFBPUlQgICAgPSBOTw0KDQojIElm IHlvdSB1c2UgTWljcm9zb2Z0J3MgQysrL0NMSSBsYW5ndWFnZSwgeW91IHNob3VsZCBzZXQgdGhp cyBvcHRpb24gdG8gWUVTIHRvDQojIGVuYWJsZSBwYXJzaW5nIHN1cHBvcnQuDQojIFRoZSBkZWZh dWx0IHZhbHVlIGlzOiBOTy4NCg0KQ1BQX0NMSV9TVVBQT1JUICAgICAgICA9IE5PDQoNCiMgU2V0 IHRoZSBTSVBfU1VQUE9SVCB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBz aXAgKHNlZToNCiMgaHR0cHM6Ly93d3cucml2ZXJiYW5rY29tcHV0aW5nLmNvbS9zb2Z0d2FyZSkg c291cmNlcyBvbmx5LiBEb3h5Z2VuIHdpbGwgcGFyc2UNCiMgdGhlbSBsaWtlIG5vcm1hbCBDKysg YnV0IHdpbGwgYXNzdW1lIGFsbCBjbGFzc2VzIHVzZSBwdWJsaWMgaW5zdGVhZCBvZiBwcml2YXRl DQojIGluaGVyaXRhbmNlIHdoZW4gbm8gZXhwbGljaXQgcHJvdGVjdGlvbiBrZXl3b3JkIGlzIHBy ZXNlbnQuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KU0lQX1NVUFBPUlQgICAgICAg ICAgICA9IE5PDQoNCiMgRm9yIE1pY3Jvc29mdCdzIElETCB0aGVyZSBhcmUgcHJvcGdldCBhbmQg cHJvcHB1dCBhdHRyaWJ1dGVzIHRvIGluZGljYXRlDQojIGdldHRlciBhbmQgc2V0dGVyIG1ldGhv ZHMgZm9yIGEgcHJvcGVydHkuIFNldHRpbmcgdGhpcyBvcHRpb24gdG8gWUVTIHdpbGwgbWFrZQ0K IyBEb3h5Z2VuIHRvIHJlcGxhY2UgdGhlIGdldCBhbmQgc2V0IG1ldGhvZHMgYnkgYSBwcm9wZXJ0 eSBpbiB0aGUgZG9jdW1lbnRhdGlvbi4NCiMgVGhpcyB3aWxsIG9ubHkgd29yayBpZiB0aGUgbWV0 aG9kcyBhcmUgaW5kZWVkIGdldHRpbmcgb3Igc2V0dGluZyBhIHNpbXBsZQ0KIyB0eXBlLiBJZiB0 aGlzIGlzIG5vdCB0aGUgY2FzZSwgb3IgeW91IHdhbnQgdG8gc2hvdyB0aGUgbWV0aG9kcyBhbnl3 YXksIHlvdQ0KIyBzaG91bGQgc2V0IHRoaXMgb3B0aW9uIHRvIE5PLg0KIyBUaGUgZGVmYXVsdCB2 YWx1ZSBpczogWUVTLg0KDQpJRExfUFJPUEVSVFlfU1VQUE9SVCAgID0gWUVTDQoNCiMgSWYgbWVt YmVyIGdyb3VwaW5nIGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kIHRoZSBESVNUUklC VVRFX0dST1VQX0RPQw0KIyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIERveHlnZW4gd2lsbCByZXVz ZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZmlyc3QNCiMgbWVtYmVyIGluIHRoZSBncm91cCAo aWYgYW55KSBmb3IgdGhlIG90aGVyIG1lbWJlcnMgb2YgdGhlIGdyb3VwLiBCeSBkZWZhdWx0DQoj IGFsbCBtZW1iZXJzIG9mIGEgZ3JvdXAgbXVzdCBiZSBkb2N1bWVudGVkIGV4cGxpY2l0bHkuDQoj IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KRElTVFJJQlVURV9HUk9VUF9ET0MgICA9IE5P DQoNCiMgSWYgb25lIGFkZHMgYSBzdHJ1Y3Qgb3IgY2xhc3MgdG8gYSBncm91cCBhbmQgdGhpcyBv cHRpb24gaXMgZW5hYmxlZCwgdGhlbiBhbHNvDQojIGFueSBuZXN0ZWQgY2xhc3Mgb3Igc3RydWN0 IGlzIGFkZGVkIHRvIHRoZSBzYW1lIGdyb3VwLiBCeSBkZWZhdWx0IHRoaXMgb3B0aW9uDQojIGlz IGRpc2FibGVkIGFuZCBvbmUgaGFzIHRvIGFkZCBuZXN0ZWQgY29tcG91bmRzIGV4cGxpY2l0bHkg dmlhIFxpbmdyb3VwLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQoNCkdST1VQX05FU1RF RF9DT01QT1VORFMgPSBOTw0KDQojIFNldCB0aGUgU1VCR1JPVVBJTkcgdGFnIHRvIFlFUyB0byBh bGxvdyBjbGFzcyBtZW1iZXIgZ3JvdXBzIG9mIHRoZSBzYW1lIHR5cGUNCiMgKGZvciBpbnN0YW5j ZSBhIGdyb3VwIG9mIHB1YmxpYyBmdW5jdGlvbnMpIHRvIGJlIHB1dCBhcyBhIHN1Ymdyb3VwIG9m IHRoYXQNCiMgdHlwZSAoZS5nLiB1bmRlciB0aGUgUHVibGljIEZ1bmN0aW9ucyBzZWN0aW9uKS4g U2V0IGl0IHRvIE5PIHRvIHByZXZlbnQNCiMgc3ViZ3JvdXBpbmcuIEFsdGVybmF0aXZlbHksIHRo aXMgY2FuIGJlIGRvbmUgcGVyIGNsYXNzIHVzaW5nIHRoZQ0KIyBcbm9zdWJncm91cGluZyBjb21t YW5kLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLg0KDQpTVUJHUk9VUElORyAgICAgICAg ICAgID0gWUVTDQoNCiMgV2hlbiB0aGUgSU5MSU5FX0dST1VQRURfQ0xBU1NFUyB0YWcgaXMgc2V0 IHRvIFlFUywgY2xhc3Nlcywgc3RydWN0cyBhbmQgdW5pb25zDQojIGFyZSBzaG93biBpbnNpZGUg dGhlIGdyb3VwIGluIHdoaWNoIHRoZXkgYXJlIGluY2x1ZGVkIChlLmcuIHVzaW5nIFxpbmdyb3Vw KQ0KIyBpbnN0ZWFkIG9mIG9uIGEgc2VwYXJhdGUgcGFnZSAoZm9yIEhUTUwgYW5kIE1hbiBwYWdl cykgb3Igc2VjdGlvbiAoZm9yIExhVGVYDQojIGFuZCBSVEYpLg0KIw0KIyBOb3RlIHRoYXQgdGhp cyBmZWF0dXJlIGRvZXMgbm90IHdvcmsgaW4gY29tYmluYXRpb24gd2l0aA0KIyBTRVBBUkFURV9N RU1CRVJfUEFHRVMuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KSU5MSU5FX0dST1VQ RURfQ0xBU1NFUyA9IE5PDQoNCiMgV2hlbiB0aGUgSU5MSU5FX1NJTVBMRV9TVFJVQ1RTIHRhZyBp cyBzZXQgdG8gWUVTLCBzdHJ1Y3RzLCBjbGFzc2VzLCBhbmQgdW5pb25zDQojIHdpdGggb25seSBw dWJsaWMgZGF0YSBmaWVsZHMgb3Igc2ltcGxlIHR5cGVkZWYgZmllbGRzIHdpbGwgYmUgc2hvd24g aW5saW5lIGluDQojIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBzY29wZSBpbiB3aGljaCB0aGV5 IGFyZSBkZWZpbmVkIChpLmUuIGZpbGUsDQojIG5hbWVzcGFjZSwgb3IgZ3JvdXAgZG9jdW1lbnRh dGlvbiksIHByb3ZpZGVkIHRoaXMgc2NvcGUgaXMgZG9jdW1lbnRlZC4gSWYgc2V0DQojIHRvIE5P LCBzdHJ1Y3RzLCBjbGFzc2VzLCBhbmQgdW5pb25zIGFyZSBzaG93biBvbiBhIHNlcGFyYXRlIHBh Z2UgKGZvciBIVE1MIGFuZA0KIyBNYW4gcGFnZXMpIG9yIHNlY3Rpb24gKGZvciBMYVRlWCBhbmQg UlRGKS4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpJTkxJTkVfU0lNUExFX1NUUlVD VFMgID0gTk8NCg0KIyBXaGVuIFRZUEVERUZfSElERVNfU1RSVUNUIHRhZyBpcyBlbmFibGVkLCBh IHR5cGVkZWYgb2YgYSBzdHJ1Y3QsIHVuaW9uLCBvcg0KIyBlbnVtIGlzIGRvY3VtZW50ZWQgYXMg c3RydWN0LCB1bmlvbiwgb3IgZW51bSB3aXRoIHRoZSBuYW1lIG9mIHRoZSB0eXBlZGVmLiBTbw0K IyB0eXBlZGVmIHN0cnVjdCBUeXBlUyB7fSBUeXBlVCwgd2lsbCBhcHBlYXIgaW4gdGhlIGRvY3Vt ZW50YXRpb24gYXMgYSBzdHJ1Y3QNCiMgd2l0aCBuYW1lIFR5cGVULiBXaGVuIGRpc2FibGVkIHRo ZSB0eXBlZGVmIHdpbGwgYXBwZWFyIGFzIGEgbWVtYmVyIG9mIGEgZmlsZSwNCiMgbmFtZXNwYWNl LCBvciBjbGFzcy4gQW5kIHRoZSBzdHJ1Y3Qgd2lsbCBiZSBuYW1lZCBUeXBlUy4gVGhpcyBjYW4g dHlwaWNhbGx5IGJlDQojIHVzZWZ1bCBmb3IgQyBjb2RlIGluIGNhc2UgdGhlIGNvZGluZyBjb252 ZW50aW9uIGRpY3RhdGVzIHRoYXQgYWxsIGNvbXBvdW5kDQojIHR5cGVzIGFyZSB0eXBlZGVmJ2Vk IGFuZCBvbmx5IHRoZSB0eXBlZGVmIGlzIHJlZmVyZW5jZWQsIG5ldmVyIHRoZSB0YWcgbmFtZS4N CiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpUWVBFREVGX0hJREVTX1NUUlVDVCAgID0g Tk8NCg0KIyBUaGUgc2l6ZSBvZiB0aGUgc3ltYm9sIGxvb2t1cCBjYWNoZSBjYW4gYmUgc2V0IHVz aW5nIExPT0tVUF9DQUNIRV9TSVpFLiBUaGlzDQojIGNhY2hlIGlzIHVzZWQgdG8gcmVzb2x2ZSBz eW1ib2xzIGdpdmVuIHRoZWlyIG5hbWUgYW5kIHNjb3BlLiBTaW5jZSB0aGlzIGNhbiBiZQ0KIyBh biBleHBlbnNpdmUgcHJvY2VzcyBhbmQgb2Z0ZW4gdGhlIHNhbWUgc3ltYm9sIGFwcGVhcnMgbXVs dGlwbGUgdGltZXMgaW4gdGhlDQojIGNvZGUsIERveHlnZW4ga2VlcHMgYSBjYWNoZSBvZiBwcmUt cmVzb2x2ZWQgc3ltYm9scy4gSWYgdGhlIGNhY2hlIGlzIHRvbyBzbWFsbA0KIyBEb3h5Z2VuIHdp bGwgYmVjb21lIHNsb3dlci4gSWYgdGhlIGNhY2hlIGlzIHRvbyBsYXJnZSwgbWVtb3J5IGlzIHdh c3RlZC4gVGhlDQojIGNhY2hlIHNpemUgaXMgZ2l2ZW4gYnkgdGhpcyBmb3JtdWxhOiAyXigxNitM T09LVVBfQ0FDSEVfU0laRSkuIFRoZSB2YWxpZCByYW5nZQ0KIyBpcyAwLi45LCB0aGUgZGVmYXVs dCBpcyAwLCBjb3JyZXNwb25kaW5nIHRvIGEgY2FjaGUgc2l6ZSBvZiAyXjE2PTY1NTM2DQojIHN5 bWJvbHMuIEF0IHRoZSBlbmQgb2YgYSBydW4gRG94eWdlbiB3aWxsIHJlcG9ydCB0aGUgY2FjaGUg dXNhZ2UgYW5kIHN1Z2dlc3QNCiMgdGhlIG9wdGltYWwgY2FjaGUgc2l6ZSBmcm9tIGEgc3BlZWQg cG9pbnQgb2Ygdmlldy4NCiMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogOSwgZGVm YXVsdCB2YWx1ZTogMC4NCg0KTE9PS1VQX0NBQ0hFX1NJWkUgICAgICA9IDANCg0KIyBUaGUgTlVN X1BST0NfVEhSRUFEUyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0aHJlYWRzIERveHlnZW4gaXMg YWxsb3dlZCB0byB1c2UNCiMgZHVyaW5nIHByb2Nlc3NpbmcuIFdoZW4gc2V0IHRvIDAgRG94eWdl biB3aWxsIGJhc2VkIHRoaXMgb24gdGhlIG51bWJlciBvZg0KIyBjb3JlcyBhdmFpbGFibGUgaW4g dGhlIHN5c3RlbS4gWW91IGNhbiBzZXQgaXQgZXhwbGljaXRseSB0byBhIHZhbHVlIGxhcmdlcg0K IyB0aGFuIDAgdG8gZ2V0IG1vcmUgY29udHJvbCBvdmVyIHRoZSBiYWxhbmNlIGJldHdlZW4gQ1BV IGxvYWQgYW5kIHByb2Nlc3NpbmcNCiMgc3BlZWQuIEF0IHRoaXMgbW9tZW50IG9ubHkgdGhlIGlu cHV0IHByb2Nlc3NpbmcgY2FuIGJlIGRvbmUgdXNpbmcgbXVsdGlwbGUNCiMgdGhyZWFkcy4gU2lu Y2UgdGhpcyBpcyBzdGlsbCBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGUgZGVmYXVsdCBpcyBz ZXQgdG8gMSwNCiMgd2hpY2ggZWZmZWN0aXZlbHkgZGlzYWJsZXMgcGFyYWxsZWwgcHJvY2Vzc2lu Zy4gUGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHlvdQ0KIyBlbmNvdW50ZXIuIEdlbmVyYXRpbmcg ZG90IGdyYXBocyBpbiBwYXJhbGxlbCBpcyBjb250cm9sbGVkIGJ5IHRoZQ0KIyBET1RfTlVNX1RI UkVBRFMgc2V0dGluZy4NCiMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMzIsIGRl ZmF1bHQgdmFsdWU6IDEuDQoNCk5VTV9QUk9DX1RIUkVBRFMgICAgICAgPSAxDQoNCiMgSWYgdGhl IFRJTUVTVEFNUCB0YWcgaXMgc2V0IGRpZmZlcmVudCBmcm9tIE5PIHRoZW4gZWFjaCBnZW5lcmF0 ZWQgcGFnZSB3aWxsDQojIGNvbnRhaW4gdGhlIGRhdGUgb3IgZGF0ZSBhbmQgdGltZSB3aGVuIHRo ZSBwYWdlIHdhcyBnZW5lcmF0ZWQuIFNldHRpbmcgdGhpcyB0bw0KIyBOTyBjYW4gaGVscCB3aGVu IGNvbXBhcmluZyB0aGUgb3V0cHV0IG9mIG11bHRpcGxlIHJ1bnMuDQojIFBvc3NpYmxlIHZhbHVl cyBhcmU6IFlFUywgTk8sIERBVEVUSU1FIGFuZCBEQVRFLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBp czogTk8uDQoNClRJTUVTVEFNUCAgICAgICAgICAgICAgPSBOTw0KDQojLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQojIEJ1aWxkIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zDQojLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQoNCiMgSWYgdGhlIEVYVFJBQ1RfQUxMIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2Vu IHdpbGwgYXNzdW1lIGFsbCBlbnRpdGllcyBpbg0KIyBkb2N1bWVudGF0aW9uIGFyZSBkb2N1bWVu dGVkLCBldmVuIGlmIG5vIGRvY3VtZW50YXRpb24gd2FzIGF2YWlsYWJsZS4gUHJpdmF0ZQ0KIyBj bGFzcyBtZW1iZXJzIGFuZCBzdGF0aWMgZmlsZSBtZW1iZXJzIHdpbGwgYmUgaGlkZGVuIHVubGVz cyB0aGUNCiMgRVhUUkFDVF9QUklWQVRFIHJlc3BlY3RpdmVseSBFWFRSQUNUX1NUQVRJQyB0YWdz IGFyZSBzZXQgdG8gWUVTLg0KIyBOb3RlOiBUaGlzIHdpbGwgYWxzbyBkaXNhYmxlIHRoZSB3YXJu aW5ncyBhYm91dCB1bmRvY3VtZW50ZWQgbWVtYmVycyB0aGF0IGFyZQ0KIyBub3JtYWxseSBwcm9k dWNlZCB3aGVuIFdBUk5JTkdTIGlzIHNldCB0byBZRVMuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlz OiBOTy4NCg0KRVhUUkFDVF9BTEwgICAgICAgICAgICA9IFlFUw0KDQojIElmIHRoZSBFWFRSQUNU X1BSSVZBVEUgdGFnIGlzIHNldCB0byBZRVMsIGFsbCBwcml2YXRlIG1lbWJlcnMgb2YgYSBjbGFz cyB3aWxsDQojIGJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLg0KIyBUaGUgZGVmYXVs dCB2YWx1ZSBpczogTk8uDQoNCkVYVFJBQ1RfUFJJVkFURSAgICAgICAgPSBOTw0KDQojIElmIHRo ZSBFWFRSQUNUX1BSSVZfVklSVFVBTCB0YWcgaXMgc2V0IHRvIFlFUywgZG9jdW1lbnRlZCBwcml2 YXRlIHZpcnR1YWwNCiMgbWV0aG9kcyBvZiBhIGNsYXNzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhl IGRvY3VtZW50YXRpb24uDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KRVhUUkFDVF9Q UklWX1ZJUlRVQUwgICA9IE5PDQoNCiMgSWYgdGhlIEVYVFJBQ1RfUEFDS0FHRSB0YWcgaXMgc2V0 IHRvIFlFUywgYWxsIG1lbWJlcnMgd2l0aCBwYWNrYWdlIG9yIGludGVybmFsDQojIHNjb3BlIHdp bGwgYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uDQojIFRoZSBkZWZhdWx0IHZhbHVl IGlzOiBOTy4NCg0KRVhUUkFDVF9QQUNLQUdFICAgICAgICA9IE5PDQoNCiMgSWYgdGhlIEVYVFJB Q1RfU1RBVElDIHRhZyBpcyBzZXQgdG8gWUVTLCBhbGwgc3RhdGljIG1lbWJlcnMgb2YgYSBmaWxl IHdpbGwgYmUNCiMgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uDQojIFRoZSBkZWZhdWx0 IHZhbHVlIGlzOiBOTy4NCg0KRVhUUkFDVF9TVEFUSUMgICAgICAgICA9IE5PDQoNCiMgSWYgdGhl IEVYVFJBQ1RfTE9DQUxfQ0xBU1NFUyB0YWcgaXMgc2V0IHRvIFlFUywgY2xhc3NlcyAoYW5kIHN0 cnVjdHMpIGRlZmluZWQNCiMgbG9jYWxseSBpbiBzb3VyY2UgZmlsZXMgd2lsbCBiZSBpbmNsdWRl ZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIE5PLA0KIyBvbmx5IGNsYXNzZXMgZGVm aW5lZCBpbiBoZWFkZXIgZmlsZXMgYXJlIGluY2x1ZGVkLiBEb2VzIG5vdCBoYXZlIGFueSBlZmZl Y3QNCiMgZm9yIEphdmEgc291cmNlcy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0K RVhUUkFDVF9MT0NBTF9DTEFTU0VTICA9IFlFUw0KDQojIFRoaXMgZmxhZyBpcyBvbmx5IHVzZWZ1 bCBmb3IgT2JqZWN0aXZlLUMgY29kZS4gSWYgc2V0IHRvIFlFUywgbG9jYWwgbWV0aG9kcywNCiMg d2hpY2ggYXJlIGRlZmluZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIHNlY3Rpb24gYnV0IG5vdCBp biB0aGUgaW50ZXJmYWNlIGFyZQ0KIyBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYg c2V0IHRvIE5PLCBvbmx5IG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSBhcmUNCiMgaW5jbHVkZWQu DQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KRVhUUkFDVF9MT0NBTF9NRVRIT0RTICA9 IE5PDQoNCiMgSWYgdGhpcyBmbGFnIGlzIHNldCB0byBZRVMsIHRoZSBtZW1iZXJzIG9mIGFub255 bW91cyBuYW1lc3BhY2VzIHdpbGwgYmUNCiMgZXh0cmFjdGVkIGFuZCBhcHBlYXIgaW4gdGhlIGRv Y3VtZW50YXRpb24gYXMgYSBuYW1lc3BhY2UgY2FsbGVkDQojICdhbm9ueW1vdXNfbmFtZXNwYWNl e2ZpbGV9Jywgd2hlcmUgZmlsZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGJhc2UgbmFtZSBv Zg0KIyB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBhbm9ueW1vdXMgbmFtZXNwYWNlLiBCeSBk ZWZhdWx0IGFub255bW91cyBuYW1lc3BhY2UNCiMgYXJlIGhpZGRlbi4NCiMgVGhlIGRlZmF1bHQg dmFsdWUgaXM6IE5PLg0KDQpFWFRSQUNUX0FOT05fTlNQQUNFUyAgID0gTk8NCg0KIyBJZiB0aGlz IGZsYWcgaXMgc2V0IHRvIFlFUywgdGhlIG5hbWUgb2YgYW4gdW5uYW1lZCBwYXJhbWV0ZXIgaW4g YSBkZWNsYXJhdGlvbg0KIyB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcg ZGVmaW5pdGlvbi4gQnkgZGVmYXVsdCB1bm5hbWVkDQojIHBhcmFtZXRlcnMgcmVtYWluIHVubmFt ZWQgaW4gdGhlIG91dHB1dC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KUkVTT0xW RV9VTk5BTUVEX1BBUkFNUyA9IFlFUw0KDQojIElmIHRoZSBISURFX1VORE9DX01FTUJFUlMgdGFn IGlzIHNldCB0byBZRVMsIERveHlnZW4gd2lsbCBoaWRlIGFsbA0KIyB1bmRvY3VtZW50ZWQgbWVt YmVycyBpbnNpZGUgZG9jdW1lbnRlZCBjbGFzc2VzIG9yIGZpbGVzLiBJZiBzZXQgdG8gTk8gdGhl c2UNCiMgbWVtYmVycyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSB2YXJpb3VzIG92ZXJ2aWV3cywg YnV0IG5vIGRvY3VtZW50YXRpb24NCiMgc2VjdGlvbiBpcyBnZW5lcmF0ZWQuIFRoaXMgb3B0aW9u IGhhcyBubyBlZmZlY3QgaWYgRVhUUkFDVF9BTEwgaXMgZW5hYmxlZC4NCiMgVGhlIGRlZmF1bHQg dmFsdWUgaXM6IE5PLg0KDQpISURFX1VORE9DX01FTUJFUlMgICAgID0gTk8NCg0KIyBJZiB0aGUg SElERV9VTkRPQ19DTEFTU0VTIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2VuIHdpbGwgaGlkZSBh bGwNCiMgdW5kb2N1bWVudGVkIGNsYXNzZXMgdGhhdCBhcmUgbm9ybWFsbHkgdmlzaWJsZSBpbiB0 aGUgY2xhc3MgaGllcmFyY2h5LiBJZiBzZXQNCiMgdG8gTk8sIHRoZXNlIGNsYXNzZXMgd2lsbCBi ZSBpbmNsdWRlZCBpbiB0aGUgdmFyaW91cyBvdmVydmlld3MuIFRoaXMgb3B0aW9uDQojIHdpbGwg YWxzbyBoaWRlIHVuZG9jdW1lbnRlZCBDKysgY29uY2VwdHMgaWYgZW5hYmxlZC4gVGhpcyBvcHRp b24gaGFzIG5vIGVmZmVjdA0KIyBpZiBFWFRSQUNUX0FMTCBpcyBlbmFibGVkLg0KIyBUaGUgZGVm YXVsdCB2YWx1ZSBpczogTk8uDQoNCkhJREVfVU5ET0NfQ0xBU1NFUyAgICAgPSBOTw0KDQojIElm IHRoZSBISURFX0ZSSUVORF9DT01QT1VORFMgdGFnIGlzIHNldCB0byBZRVMsIERveHlnZW4gd2ls bCBoaWRlIGFsbCBmcmllbmQNCiMgZGVjbGFyYXRpb25zLiBJZiBzZXQgdG8gTk8sIHRoZXNlIGRl Y2xhcmF0aW9ucyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQ0KIyBkb2N1bWVudGF0aW9uLg0KIyBU aGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQoNCkhJREVfRlJJRU5EX0NPTVBPVU5EUyAgPSBOTw0K DQojIElmIHRoZSBISURFX0lOX0JPRFlfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3 aWxsIGhpZGUgYW55DQojIGRvY3VtZW50YXRpb24gYmxvY2tzIGZvdW5kIGluc2lkZSB0aGUgYm9k eSBvZiBhIGZ1bmN0aW9uLiBJZiBzZXQgdG8gTk8sIHRoZXNlDQojIGJsb2NrcyB3aWxsIGJlIGFw cGVuZGVkIHRvIHRoZSBmdW5jdGlvbidzIGRldGFpbGVkIGRvY3VtZW50YXRpb24gYmxvY2suDQoj IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KSElERV9JTl9CT0RZX0RPQ1MgICAgICA9IE5P DQoNCiMgVGhlIElOVEVSTkFMX0RPQ1MgdGFnIGRldGVybWluZXMgaWYgZG9jdW1lbnRhdGlvbiB0 aGF0IGlzIHR5cGVkIGFmdGVyIGENCiMgXGludGVybmFsIGNvbW1hbmQgaXMgaW5jbHVkZWQuIElm IHRoZSB0YWcgaXMgc2V0IHRvIE5PIHRoZW4gdGhlIGRvY3VtZW50YXRpb24NCiMgd2lsbCBiZSBl eGNsdWRlZC4gU2V0IGl0IHRvIFlFUyB0byBpbmNsdWRlIHRoZSBpbnRlcm5hbCBkb2N1bWVudGF0 aW9uLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQoNCklOVEVSTkFMX0RPQ1MgICAgICAg ICAgPSBOTw0KDQojIFdpdGggdGhlIGNvcnJlY3Qgc2V0dGluZyBvZiBvcHRpb24gQ0FTRV9TRU5T RV9OQU1FUyBEb3h5Z2VuIHdpbGwgYmV0dGVyIGJlDQojIGFibGUgdG8gbWF0Y2ggdGhlIGNhcGFi aWxpdGllcyBvZiB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtLiBJbiBjYXNlIHRoZQ0KIyBmaWxl c3lzdGVtIGlzIGNhc2Ugc2Vuc2l0aXZlIChpLmUuIGl0IHN1cHBvcnRzIGZpbGVzIGluIHRoZSBz YW1lIGRpcmVjdG9yeQ0KIyB3aG9zZSBuYW1lcyBvbmx5IGRpZmZlciBpbiBjYXNpbmcpLCB0aGUg b3B0aW9uIG11c3QgYmUgc2V0IHRvIFlFUyB0byBwcm9wZXJseQ0KIyBkZWFsIHdpdGggc3VjaCBm aWxlcyBpbiBjYXNlIHRoZXkgYXBwZWFyIGluIHRoZSBpbnB1dC4gRm9yIGZpbGVzeXN0ZW1zIHRo YXQNCiMgYXJlIG5vdCBjYXNlIHNlbnNpdGl2ZSB0aGUgb3B0aW9uIHNob3VsZCBiZSBzZXQgdG8g Tk8gdG8gcHJvcGVybHkgZGVhbCB3aXRoDQojIG91dHB1dCBmaWxlcyB3cml0dGVuIGZvciBzeW1i b2xzIHRoYXQgb25seSBkaWZmZXIgaW4gY2FzaW5nLCBzdWNoIGFzIGZvciB0d28NCiMgY2xhc3Nl cywgb25lIG5hbWVkIENMQVNTIGFuZCB0aGUgb3RoZXIgbmFtZWQgQ2xhc3MsIGFuZCB0byBhbHNv IHN1cHBvcnQNCiMgcmVmZXJlbmNlcyB0byBmaWxlcyB3aXRob3V0IGhhdmluZyB0byBzcGVjaWZ5 IHRoZSBleGFjdCBtYXRjaGluZyBjYXNpbmcuIE9uDQojIFdpbmRvd3MgKGluY2x1ZGluZyBDeWd3 aW4pIGFuZCBtYWNPUywgdXNlcnMgc2hvdWxkIHR5cGljYWxseSBzZXQgdGhpcyBvcHRpb24NCiMg dG8gTk8sIHdoZXJlYXMgb24gTGludXggb3Igb3RoZXIgVW5peCBmbGF2b3JzIGl0IHNob3VsZCB0 eXBpY2FsbHkgYmUgc2V0IHRvDQojIFlFUy4NCiMgUG9zc2libGUgdmFsdWVzIGFyZTogU1lTVEVN LCBOTyBhbmQgWUVTLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogU1lTVEVNLg0KDQpDQVNFX1NF TlNFX05BTUVTICAgICAgID0gU1lTVEVNDQoNCiMgSWYgdGhlIEhJREVfU0NPUEVfTkFNRVMgdGFn IGlzIHNldCB0byBOTyB0aGVuIERveHlnZW4gd2lsbCBzaG93IG1lbWJlcnMgd2l0aA0KIyB0aGVp ciBmdWxsIGNsYXNzIGFuZCBuYW1lc3BhY2Ugc2NvcGVzIGluIHRoZSBkb2N1bWVudGF0aW9uLiBJ ZiBzZXQgdG8gWUVTLCB0aGUNCiMgc2NvcGUgd2lsbCBiZSBoaWRkZW4uDQojIFRoZSBkZWZhdWx0 IHZhbHVlIGlzOiBOTy4NCg0KSElERV9TQ09QRV9OQU1FUyAgICAgICA9IE5PDQoNCiMgSWYgdGhl IEhJREVfQ09NUE9VTkRfUkVGRVJFTkNFIHRhZyBpcyBzZXQgdG8gTk8gKGRlZmF1bHQpIHRoZW4g RG94eWdlbiB3aWxsDQojIGFwcGVuZCBhZGRpdGlvbmFsIHRleHQgdG8gYSBwYWdlJ3MgdGl0bGUs IHN1Y2ggYXMgQ2xhc3MgUmVmZXJlbmNlLiBJZiBzZXQgdG8NCiMgWUVTIHRoZSBjb21wb3VuZCBy ZWZlcmVuY2Ugd2lsbCBiZSBoaWRkZW4uDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0K SElERV9DT01QT1VORF9SRUZFUkVOQ0U9IE5PDQoNCiMgSWYgdGhlIFNIT1dfSEVBREVSRklMRSB0 YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHRoZSBkb2N1bWVudGF0aW9uIGZvciBhIGNsYXNzDQojIHdp bGwgc2hvdyB3aGljaCBmaWxlIG5lZWRzIHRvIGJlIGluY2x1ZGVkIHRvIHVzZSB0aGUgY2xhc3Mu DQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQoNClNIT1dfSEVBREVSRklMRSAgICAgICAg PSBZRVMNCg0KIyBJZiB0aGUgU0hPV19JTkNMVURFX0ZJTEVTIHRhZyBpcyBzZXQgdG8gWUVTIHRo ZW4gRG94eWdlbiB3aWxsIHB1dCBhIGxpc3Qgb2YNCiMgdGhlIGZpbGVzIHRoYXQgYXJlIGluY2x1 ZGVkIGJ5IGEgZmlsZSBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGZpbGUuDQojIFRoZSBk ZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQoNClNIT1dfSU5DTFVERV9GSUxFUyAgICAgPSBZRVMNCg0K IyBJZiB0aGUgU0hPV19HUk9VUEVEX01FTUJfSU5DIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gRG94 eWdlbiB3aWxsIGFkZCBmb3IgZWFjaA0KIyBncm91cGVkIG1lbWJlciBhbiBpbmNsdWRlIHN0YXRl bWVudCB0byB0aGUgZG9jdW1lbnRhdGlvbiwgdGVsbGluZyB0aGUgcmVhZGVyDQojIHdoaWNoIGZp bGUgdG8gaW5jbHVkZSBpbiBvcmRlciB0byB1c2UgdGhlIG1lbWJlci4NCiMgVGhlIGRlZmF1bHQg dmFsdWUgaXM6IE5PLg0KDQpTSE9XX0dST1VQRURfTUVNQl9JTkMgID0gTk8NCg0KIyBJZiB0aGUg Rk9SQ0VfTE9DQUxfSU5DTFVERVMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIHdpbGwg bGlzdCBpbmNsdWRlDQojIGZpbGVzIHdpdGggZG91YmxlIHF1b3RlcyBpbiB0aGUgZG9jdW1lbnRh dGlvbiByYXRoZXIgdGhhbiB3aXRoIHNoYXJwIGJyYWNrZXRzLg0KIyBUaGUgZGVmYXVsdCB2YWx1 ZSBpczogTk8uDQoNCkZPUkNFX0xPQ0FMX0lOQ0xVREVTICAgPSBOTw0KDQojIElmIHRoZSBJTkxJ TkVfSU5GTyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGEgdGFnIFtpbmxpbmVdIGlzIGluc2VydGVk IGluIHRoZQ0KIyBkb2N1bWVudGF0aW9uIGZvciBpbmxpbmUgbWVtYmVycy4NCiMgVGhlIGRlZmF1 bHQgdmFsdWUgaXM6IFlFUy4NCg0KSU5MSU5FX0lORk8gICAgICAgICAgICA9IFlFUw0KDQojIElm IHRoZSBTT1JUX01FTUJFUl9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gRG94eWdlbiB3aWxs IHNvcnQgdGhlDQojIChkZXRhaWxlZCkgZG9jdW1lbnRhdGlvbiBvZiBmaWxlIGFuZCBjbGFzcyBt ZW1iZXJzIGFscGhhYmV0aWNhbGx5IGJ5IG1lbWJlcg0KIyBuYW1lLiBJZiBzZXQgdG8gTk8sIHRo ZSBtZW1iZXJzIHdpbGwgYXBwZWFyIGluIGRlY2xhcmF0aW9uIG9yZGVyLg0KIyBUaGUgZGVmYXVs dCB2YWx1ZSBpczogWUVTLg0KDQpTT1JUX01FTUJFUl9ET0NTICAgICAgID0gWUVTDQoNCiMgSWYg dGhlIFNPUlRfQlJJRUZfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIERveHlnZW4gd2lsbCBz b3J0IHRoZSBicmllZg0KIyBkZXNjcmlwdGlvbnMgb2YgZmlsZSwgbmFtZXNwYWNlIGFuZCBjbGFz cyBtZW1iZXJzIGFscGhhYmV0aWNhbGx5IGJ5IG1lbWJlcg0KIyBuYW1lLiBJZiBzZXQgdG8gTk8s IHRoZSBtZW1iZXJzIHdpbGwgYXBwZWFyIGluIGRlY2xhcmF0aW9uIG9yZGVyLiBOb3RlIHRoYXQN CiMgdGhpcyB3aWxsIGFsc28gaW5mbHVlbmNlIHRoZSBvcmRlciBvZiB0aGUgY2xhc3NlcyBpbiB0 aGUgY2xhc3MgbGlzdC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpTT1JUX0JSSUVG X0RPQ1MgICAgICAgID0gTk8NCg0KIyBJZiB0aGUgU09SVF9NRU1CRVJTX0NUT1JTXzFTVCB0YWcg aXMgc2V0IHRvIFlFUyB0aGVuIERveHlnZW4gd2lsbCBzb3J0IHRoZQ0KIyAoYnJpZWYgYW5kIGRl dGFpbGVkKSBkb2N1bWVudGF0aW9uIG9mIGNsYXNzIG1lbWJlcnMgc28gdGhhdCBjb25zdHJ1Y3Rv cnMgYW5kDQojIGRlc3RydWN0b3JzIGFyZSBsaXN0ZWQgZmlyc3QuIElmIHNldCB0byBOTyB0aGUg Y29uc3RydWN0b3JzIHdpbGwgYXBwZWFyIGluIHRoZQ0KIyByZXNwZWN0aXZlIG9yZGVycyBkZWZp bmVkIGJ5IFNPUlRfQlJJRUZfRE9DUyBhbmQgU09SVF9NRU1CRVJfRE9DUy4NCiMgTm90ZTogSWYg U09SVF9CUklFRl9ET0NTIGlzIHNldCB0byBOTyB0aGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciBz b3J0aW5nIGJyaWVmDQojIG1lbWJlciBkb2N1bWVudGF0aW9uLg0KIyBOb3RlOiBJZiBTT1JUX01F TUJFUl9ET0NTIGlzIHNldCB0byBOTyB0aGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciBzb3J0aW5n DQojIGRldGFpbGVkIG1lbWJlciBkb2N1bWVudGF0aW9uLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBp czogTk8uDQoNClNPUlRfTUVNQkVSU19DVE9SU18xU1QgPSBOTw0KDQojIElmIHRoZSBTT1JUX0dS T1VQX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gRG94eWdlbiB3aWxsIHNvcnQgdGhlIGhp ZXJhcmNoeQ0KIyBvZiBncm91cCBuYW1lcyBpbnRvIGFscGhhYmV0aWNhbCBvcmRlci4gSWYgc2V0 IHRvIE5PIHRoZSBncm91cCBuYW1lcyB3aWxsDQojIGFwcGVhciBpbiB0aGVpciBkZWZpbmVkIG9y ZGVyLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQoNClNPUlRfR1JPVVBfTkFNRVMgICAg ICAgPSBOTw0KDQojIElmIHRoZSBTT1JUX0JZX1NDT1BFX05BTUUgdGFnIGlzIHNldCB0byBZRVMs IHRoZSBjbGFzcyBsaXN0IHdpbGwgYmUgc29ydGVkIGJ5DQojIGZ1bGx5LXF1YWxpZmllZCBuYW1l cywgaW5jbHVkaW5nIG5hbWVzcGFjZXMuIElmIHNldCB0byBOTywgdGhlIGNsYXNzIGxpc3Qgd2ls bA0KIyBiZSBzb3J0ZWQgb25seSBieSBjbGFzcyBuYW1lLCBub3QgaW5jbHVkaW5nIHRoZSBuYW1l c3BhY2UgcGFydC4NCiMgTm90ZTogVGhpcyBvcHRpb24gaXMgbm90IHZlcnkgdXNlZnVsIGlmIEhJ REVfU0NPUEVfTkFNRVMgaXMgc2V0IHRvIFlFUy4NCiMgTm90ZTogVGhpcyBvcHRpb24gYXBwbGll cyBvbmx5IHRvIHRoZSBjbGFzcyBsaXN0LCBub3QgdG8gdGhlIGFscGhhYmV0aWNhbA0KIyBsaXN0 Lg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQoNClNPUlRfQllfU0NPUEVfTkFNRSAgICAg PSBOTw0KDQojIElmIHRoZSBTVFJJQ1RfUFJPVE9fTUFUQ0hJTkcgb3B0aW9uIGlzIGVuYWJsZWQg YW5kIERveHlnZW4gZmFpbHMgdG8gZG8gcHJvcGVyDQojIHR5cGUgcmVzb2x1dGlvbiBvZiBhbGwg cGFyYW1ldGVycyBvZiBhIGZ1bmN0aW9uIGl0IHdpbGwgcmVqZWN0IGEgbWF0Y2ggYmV0d2Vlbg0K IyB0aGUgcHJvdG90eXBlIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBtZW1iZXIgZnVuY3Rp b24gZXZlbiBpZiB0aGVyZSBpcw0KIyBvbmx5IG9uZSBjYW5kaWRhdGUgb3IgaXQgaXMgb2J2aW91 cyB3aGljaCBjYW5kaWRhdGUgdG8gY2hvb3NlIGJ5IGRvaW5nIGENCiMgc2ltcGxlIHN0cmluZyBt YXRjaC4gQnkgZGlzYWJsaW5nIFNUUklDVF9QUk9UT19NQVRDSElORyBEb3h5Z2VuIHdpbGwgc3Rp bGwNCiMgYWNjZXB0IGEgbWF0Y2ggYmV0d2VlbiBwcm90b3R5cGUgYW5kIGltcGxlbWVudGF0aW9u IGluIHN1Y2ggY2FzZXMuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KU1RSSUNUX1BS T1RPX01BVENISU5HICA9IE5PDQoNCiMgVGhlIEdFTkVSQVRFX1RPRE9MSVNUIHRhZyBjYW4gYmUg dXNlZCB0byBlbmFibGUgKFlFUykgb3IgZGlzYWJsZSAoTk8pIHRoZSB0b2RvDQojIGxpc3QuIFRo aXMgbGlzdCBpcyBjcmVhdGVkIGJ5IHB1dHRpbmcgXHRvZG8gY29tbWFuZHMgaW4gdGhlIGRvY3Vt ZW50YXRpb24uDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQoNCkdFTkVSQVRFX1RPRE9M SVNUICAgICAgPSBZRVMNCg0KIyBUaGUgR0VORVJBVEVfVEVTVExJU1QgdGFnIGNhbiBiZSB1c2Vk IHRvIGVuYWJsZSAoWUVTKSBvciBkaXNhYmxlIChOTykgdGhlIHRlc3QNCiMgbGlzdC4gVGhpcyBs aXN0IGlzIGNyZWF0ZWQgYnkgcHV0dGluZyBcdGVzdCBjb21tYW5kcyBpbiB0aGUgZG9jdW1lbnRh dGlvbi4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KR0VORVJBVEVfVEVTVExJU1Qg ICAgICA9IFlFUw0KDQojIFRoZSBHRU5FUkFURV9CVUdMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBl bmFibGUgKFlFUykgb3IgZGlzYWJsZSAoTk8pIHRoZSBidWcNCiMgbGlzdC4gVGhpcyBsaXN0IGlz IGNyZWF0ZWQgYnkgcHV0dGluZyBcYnVnIGNvbW1hbmRzIGluIHRoZSBkb2N1bWVudGF0aW9uLg0K IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLg0KDQpHRU5FUkFURV9CVUdMSVNUICAgICAgID0g WUVTDQoNCiMgVGhlIEdFTkVSQVRFX0RFUFJFQ0FURURMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBl bmFibGUgKFlFUykgb3IgZGlzYWJsZSAoTk8pDQojIHRoZSBkZXByZWNhdGVkIGxpc3QuIFRoaXMg bGlzdCBpcyBjcmVhdGVkIGJ5IHB1dHRpbmcgXGRlcHJlY2F0ZWQgY29tbWFuZHMgaW4NCiMgdGhl IGRvY3VtZW50YXRpb24uDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQoNCkdFTkVSQVRF X0RFUFJFQ0FURURMSVNUPSBZRVMNCg0KIyBUaGUgRU5BQkxFRF9TRUNUSU9OUyB0YWcgY2FuIGJl IHVzZWQgdG8gZW5hYmxlIGNvbmRpdGlvbmFsIGRvY3VtZW50YXRpb24NCiMgc2VjdGlvbnMsIG1h cmtlZCBieSBcaWYgPHNlY3Rpb25fbGFiZWw+IC4uLiBcZW5kaWYgYW5kIFxjb25kIDxzZWN0aW9u X2xhYmVsPg0KIyAuLi4gXGVuZGNvbmQgYmxvY2tzLg0KDQpFTkFCTEVEX1NFQ1RJT05TICAgICAg ID0NCg0KIyBUaGUgTUFYX0lOSVRJQUxJWkVSX0xJTkVTIHRhZyBkZXRlcm1pbmVzIHRoZSBtYXhp bXVtIG51bWJlciBvZiBsaW5lcyB0aGF0IHRoZQ0KIyBpbml0aWFsIHZhbHVlIG9mIGEgdmFyaWFi bGUgb3IgbWFjcm8gLyBkZWZpbmUgY2FuIGhhdmUgZm9yIGl0IHRvIGFwcGVhciBpbiB0aGUNCiMg ZG9jdW1lbnRhdGlvbi4gSWYgdGhlIGluaXRpYWxpemVyIGNvbnNpc3RzIG9mIG1vcmUgbGluZXMg dGhhbiBzcGVjaWZpZWQgaGVyZQ0KIyBpdCB3aWxsIGJlIGhpZGRlbi4gVXNlIGEgdmFsdWUgb2Yg MCB0byBoaWRlIGluaXRpYWxpemVycyBjb21wbGV0ZWx5LiBUaGUNCiMgYXBwZWFyYW5jZSBvZiB0 aGUgdmFsdWUgb2YgaW5kaXZpZHVhbCB2YXJpYWJsZXMgYW5kIG1hY3JvcyAvIGRlZmluZXMgY2Fu IGJlDQojIGNvbnRyb2xsZWQgdXNpbmcgXHNob3dpbml0aWFsaXplciBvciBcaGlkZWluaXRpYWxp emVyIGNvbW1hbmQgaW4gdGhlDQojIGRvY3VtZW50YXRpb24gcmVnYXJkbGVzcyBvZiB0aGlzIHNl dHRpbmcuDQojIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDEwMDAwLCBkZWZhdWx0 IHZhbHVlOiAzMC4NCg0KTUFYX0lOSVRJQUxJWkVSX0xJTkVTICA9IDMwDQoNCiMgU2V0IHRoZSBT SE9XX1VTRURfRklMRVMgdGFnIHRvIE5PIHRvIGRpc2FibGUgdGhlIGxpc3Qgb2YgZmlsZXMgZ2Vu ZXJhdGVkIGF0DQojIHRoZSBib3R0b20gb2YgdGhlIGRvY3VtZW50YXRpb24gb2YgY2xhc3NlcyBh bmQgc3RydWN0cy4gSWYgc2V0IHRvIFlFUywgdGhlDQojIGxpc3Qgd2lsbCBtZW50aW9uIHRoZSBm aWxlcyB0aGF0IHdlcmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgZG9jdW1lbnRhdGlvbi4NCiMgVGhl IGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KU0hPV19VU0VEX0ZJTEVTICAgICAgICA9IFlFUw0K DQojIFNldCB0aGUgU0hPV19GSUxFUyB0YWcgdG8gTk8gdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlv biBvZiB0aGUgRmlsZXMgcGFnZS4gVGhpcw0KIyB3aWxsIHJlbW92ZSB0aGUgRmlsZXMgZW50cnkg ZnJvbSB0aGUgUXVpY2sgSW5kZXggYW5kIGZyb20gdGhlIEZvbGRlciBUcmVlIFZpZXcNCiMgKGlm IHNwZWNpZmllZCkuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQoNClNIT1dfRklMRVMg ICAgICAgICAgICAgPSBZRVMNCg0KIyBTZXQgdGhlIFNIT1dfTkFNRVNQQUNFUyB0YWcgdG8gTk8g dG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgTmFtZXNwYWNlcw0KIyBwYWdlLiBUaGlz IHdpbGwgcmVtb3ZlIHRoZSBOYW1lc3BhY2VzIGVudHJ5IGZyb20gdGhlIFF1aWNrIEluZGV4IGFu ZCBmcm9tIHRoZQ0KIyBGb2xkZXIgVHJlZSBWaWV3IChpZiBzcGVjaWZpZWQpLg0KIyBUaGUgZGVm YXVsdCB2YWx1ZSBpczogWUVTLg0KDQpTSE9XX05BTUVTUEFDRVMgICAgICAgID0gWUVTDQoNCiMg VGhlIEZJTEVfVkVSU0lPTl9GSUxURVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwcm9n cmFtIG9yIHNjcmlwdCB0aGF0DQojIERveHlnZW4gc2hvdWxkIGludm9rZSB0byBnZXQgdGhlIGN1 cnJlbnQgdmVyc2lvbiBmb3IgZWFjaCBmaWxlICh0eXBpY2FsbHkgZnJvbQ0KIyB0aGUgdmVyc2lv biBjb250cm9sIHN5c3RlbSkuIERveHlnZW4gd2lsbCBpbnZva2UgdGhlIHByb2dyYW0gYnkgZXhl Y3V0aW5nICh2aWENCiMgcG9wZW4oKSkgdGhlIGNvbW1hbmQgY29tbWFuZCBpbnB1dC1maWxlLCB3 aGVyZSBjb21tYW5kIGlzIHRoZSB2YWx1ZSBvZiB0aGUNCiMgRklMRV9WRVJTSU9OX0ZJTFRFUiB0 YWcsIGFuZCBpbnB1dC1maWxlIGlzIHRoZSBuYW1lIG9mIGFuIGlucHV0IGZpbGUgcHJvdmlkZWQN CiMgYnkgRG94eWdlbi4gV2hhdGV2ZXIgdGhlIHByb2dyYW0gd3JpdGVzIHRvIHN0YW5kYXJkIG91 dHB1dCBpcyB1c2VkIGFzIHRoZSBmaWxlDQojIHZlcnNpb24uIEZvciBhbiBleGFtcGxlIHNlZSB0 aGUgZG9jdW1lbnRhdGlvbi4NCg0KRklMRV9WRVJTSU9OX0ZJTFRFUiAgICA9DQoNCiMgVGhlIExB WU9VVF9GSUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgbGF5b3V0IGZpbGUgd2hpY2gg d2lsbCBiZSBwYXJzZWQNCiMgYnkgRG94eWdlbi4gVGhlIGxheW91dCBmaWxlIGNvbnRyb2xzIHRo ZSBnbG9iYWwgc3RydWN0dXJlIG9mIHRoZSBnZW5lcmF0ZWQNCiMgb3V0cHV0IGZpbGVzIGluIGFu IG91dHB1dCBmb3JtYXQgaW5kZXBlbmRlbnQgd2F5LiBUbyBjcmVhdGUgdGhlIGxheW91dCBmaWxl DQojIHRoYXQgcmVwcmVzZW50cyBEb3h5Z2VuJ3MgZGVmYXVsdHMsIHJ1biBEb3h5Z2VuIHdpdGgg dGhlIC1sIG9wdGlvbi4gWW91IGNhbg0KIyBvcHRpb25hbGx5IHNwZWNpZnkgYSBmaWxlIG5hbWUg YWZ0ZXIgdGhlIG9wdGlvbiwgaWYgb21pdHRlZCBEb3h5Z2VuTGF5b3V0LnhtbA0KIyB3aWxsIGJl IHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIGxheW91dCBmaWxlLiBTZWUgYWxzbyBzZWN0aW9uICJD aGFuZ2luZyB0aGUNCiMgbGF5b3V0IG9mIHBhZ2VzIiBmb3IgaW5mb3JtYXRpb24uDQojDQojIE5v dGUgdGhhdCBpZiB5b3UgcnVuIERveHlnZW4gZnJvbSBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEg ZmlsZSBjYWxsZWQNCiMgRG94eWdlbkxheW91dC54bWwsIERveHlnZW4gd2lsbCBwYXJzZSBpdCBh dXRvbWF0aWNhbGx5IGV2ZW4gaWYgdGhlIExBWU9VVF9GSUxFDQojIHRhZyBpcyBsZWZ0IGVtcHR5 Lg0KDQpMQVlPVVRfRklMRSAgICAgICAgICAgID0NCg0KIyBUaGUgQ0lURV9CSUJfRklMRVMgdGFn IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgYmliIGZpbGVzIGNvbnRhaW5pbmcN CiMgdGhlIHJlZmVyZW5jZSBkZWZpbml0aW9ucy4gVGhpcyBtdXN0IGJlIGEgbGlzdCBvZiAuYmli IGZpbGVzLiBUaGUgLmJpYg0KIyBleHRlbnNpb24gaXMgYXV0b21hdGljYWxseSBhcHBlbmRlZCBp ZiBvbWl0dGVkLiBUaGlzIHJlcXVpcmVzIHRoZSBiaWJ0ZXggdG9vbA0KIyB0byBiZSBpbnN0YWxs ZWQuIFNlZSBhbHNvIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpYlRlWCBmb3IgbW9y ZSBpbmZvLg0KIyBGb3IgTGFUZVggdGhlIHN0eWxlIG9mIHRoZSBiaWJsaW9ncmFwaHkgY2FuIGJl IGNvbnRyb2xsZWQgdXNpbmcNCiMgTEFURVhfQklCX1NUWUxFLiBUbyB1c2UgdGhpcyBmZWF0dXJl IHlvdSBuZWVkIGJpYnRleCBhbmQgcGVybCBhdmFpbGFibGUgaW4gdGhlDQojIHNlYXJjaCBwYXRo LiBTZWUgYWxzbyBcY2l0ZSBmb3IgaW5mbyBob3cgdG8gY3JlYXRlIHJlZmVyZW5jZXMuDQoNCkNJ VEVfQklCX0ZJTEVTICAgICAgICAgPQ0KDQojIFRoZSBFWFRFUk5BTF9UT09MX1BBVEggdGFnIGNh biBiZSB1c2VkIHRvIGV4dGVuZCB0aGUgc2VhcmNoIHBhdGggKFBBVEgNCiMgZW52aXJvbm1lbnQg dmFyaWFibGUpIHNvIHRoYXQgZXh0ZXJuYWwgdG9vbHMgc3VjaCBhcyBsYXRleCBhbmQgZ3MgY2Fu IGJlDQojIGZvdW5kLg0KIyBOb3RlOiBEaXJlY3RvcmllcyBzcGVjaWZpZWQgd2l0aCBFWFRFUk5B TF9UT09MX1BBVEggYXJlIGFkZGVkIGluIGZyb250IG9mIHRoZQ0KIyBwYXRoIGFscmVhZHkgc3Bl Y2lmaWVkIGJ5IHRoZSBQQVRIIHZhcmlhYmxlLCBhbmQgYXJlIGFkZGVkIGluIHRoZSBvcmRlcg0K IyBzcGVjaWZpZWQuDQojIE5vdGU6IFRoaXMgb3B0aW9uIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwg Zm9yIG1hY09TIHZlcnNpb24gMTQgKFNvbm9tYSkgYW5kDQojIGhpZ2hlciwgd2hlbiBydW5uaW5n IERveHlnZW4gZnJvbSBEb3h5d2l6YXJkLCBiZWNhdXNlIGluIHRoaXMgY2FzZSBhbnkgdXNlci0N CiMgZGVmaW5lZCBjaGFuZ2VzIHRvIHRoZSBQQVRIIGFyZSBpZ25vcmVkLiBBIHR5cGljYWwgZXhh bXBsZSBvbiBtYWNPUyBpcyB0byBzZXQNCiMgRVhURVJOQUxfVE9PTF9QQVRIID0gL0xpYnJhcnkv VGVYL3RleGJpbiAvdXNyL2xvY2FsL2Jpbg0KIyB0b2dldGhlciB3aXRoIHRoZSBzdGFuZGFyZCBw YXRoLCB0aGUgZnVsbCBzZWFyY2ggcGF0aCB1c2VkIGJ5IGRveHlnZW4gd2hlbg0KIyBsYXVuY2hp bmcgZXh0ZXJuYWwgdG9vbHMgd2lsbCB0aGVuIGJlY29tZQ0KIyBQQVRIPS9MaWJyYXJ5L1RlWC90 ZXhiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9iaW46L2JpbjovdXNyL3NiaW46L3NiaW4NCg0KRVhU RVJOQUxfVE9PTF9QQVRIICAgICA9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ29uZmlndXJh dGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gd2FybmluZyBhbmQgcHJvZ3Jlc3MgbWVzc2FnZXMNCiMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBUaGUgUVVJRVQgdGFnIGNhbiBiZSB1c2VkIHRvIHR1cm4g b24vb2ZmIHRoZSBtZXNzYWdlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgdG8NCiMgc3RhbmRhcmQgb3V0 cHV0IGJ5IERveHlnZW4uIElmIFFVSUVUIGlzIHNldCB0byBZRVMgdGhpcyBpbXBsaWVzIHRoYXQg dGhlDQojIG1lc3NhZ2VzIGFyZSBvZmYuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0K UVVJRVQgICAgICAgICAgICAgICAgICA9IE5PDQoNCiMgVGhlIFdBUk5JTkdTIHRhZyBjYW4gYmUg dXNlZCB0byB0dXJuIG9uL29mZiB0aGUgd2FybmluZyBtZXNzYWdlcyB0aGF0IGFyZQ0KIyBnZW5l cmF0ZWQgdG8gc3RhbmRhcmQgZXJyb3IgKHN0ZGVycikgYnkgRG94eWdlbi4gSWYgV0FSTklOR1Mg aXMgc2V0IHRvIFlFUw0KIyB0aGlzIGltcGxpZXMgdGhhdCB0aGUgd2FybmluZ3MgYXJlIG9uLg0K Iw0KIyBUaXA6IFR1cm4gd2FybmluZ3Mgb24gd2hpbGUgd3JpdGluZyB0aGUgZG9jdW1lbnRhdGlv bi4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KV0FSTklOR1MgICAgICAgICAgICAg ICA9IFlFUw0KDQojIElmIHRoZSBXQVJOX0lGX1VORE9DVU1FTlRFRCB0YWcgaXMgc2V0IHRvIFlF UyB0aGVuIERveHlnZW4gd2lsbCBnZW5lcmF0ZQ0KIyB3YXJuaW5ncyBmb3IgdW5kb2N1bWVudGVk IG1lbWJlcnMuIElmIEVYVFJBQ1RfQUxMIGlzIHNldCB0byBZRVMgdGhlbiB0aGlzIGZsYWcNCiMg d2lsbCBhdXRvbWF0aWNhbGx5IGJlIGRpc2FibGVkLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog WUVTLg0KDQpXQVJOX0lGX1VORE9DVU1FTlRFRCAgID0gWUVTDQoNCiMgSWYgdGhlIFdBUk5fSUZf RE9DX0VSUk9SIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgd2Fybmlu Z3MgZm9yDQojIHBvdGVudGlhbCBlcnJvcnMgaW4gdGhlIGRvY3VtZW50YXRpb24sIHN1Y2ggYXMg ZG9jdW1lbnRpbmcgc29tZSBwYXJhbWV0ZXJzIGluDQojIGEgZG9jdW1lbnRlZCBmdW5jdGlvbiB0 d2ljZSwgb3IgZG9jdW1lbnRpbmcgcGFyYW1ldGVycyB0aGF0IGRvbid0IGV4aXN0IG9yDQojIHVz aW5nIG1hcmt1cCBjb21tYW5kcyB3cm9uZ2x5Lg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVT Lg0KDQpXQVJOX0lGX0RPQ19FUlJPUiAgICAgID0gWUVTDQoNCiMgSWYgV0FSTl9JRl9JTkNPTVBM RVRFX0RPQyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2VuIHdpbGwgd2FybiBhYm91dCBpbmNvbXBsZXRl DQojIGZ1bmN0aW9uIHBhcmFtZXRlciBkb2N1bWVudGF0aW9uLiBJZiBzZXQgdG8gTk8sIERveHln ZW4gd2lsbCBhY2NlcHQgdGhhdCBzb21lDQojIHBhcmFtZXRlcnMgaGF2ZSBubyBkb2N1bWVudGF0 aW9uIHdpdGhvdXQgd2FybmluZy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KV0FS Tl9JRl9JTkNPTVBMRVRFX0RPQyA9IFlFUw0KDQojIFRoaXMgV0FSTl9OT19QQVJBTURPQyBvcHRp b24gY2FuIGJlIGVuYWJsZWQgdG8gZ2V0IHdhcm5pbmdzIGZvciBmdW5jdGlvbnMgdGhhdA0KIyBh cmUgZG9jdW1lbnRlZCwgYnV0IGhhdmUgbm8gZG9jdW1lbnRhdGlvbiBmb3IgdGhlaXIgcGFyYW1l dGVycyBvciByZXR1cm4NCiMgdmFsdWUuIElmIHNldCB0byBOTywgRG94eWdlbiB3aWxsIG9ubHkg d2FybiBhYm91dCB3cm9uZyBwYXJhbWV0ZXINCiMgZG9jdW1lbnRhdGlvbiwgYnV0IG5vdCBhYm91 dCB0aGUgYWJzZW5jZSBvZiBkb2N1bWVudGF0aW9uLiBJZiBFWFRSQUNUX0FMTCBpcw0KIyBzZXQg dG8gWUVTIHRoZW4gdGhpcyBmbGFnIHdpbGwgYXV0b21hdGljYWxseSBiZSBkaXNhYmxlZC4gU2Vl IGFsc28NCiMgV0FSTl9JRl9JTkNPTVBMRVRFX0RPQw0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog Tk8uDQoNCldBUk5fTk9fUEFSQU1ET0MgICAgICAgPSBOTw0KDQojIElmIFdBUk5fSUZfVU5ET0Nf RU5VTV9WQUwgb3B0aW9uIGlzIHNldCB0byBZRVMsIERveHlnZW4gd2lsbCB3YXJuIGFib3V0DQoj IHVuZG9jdW1lbnRlZCBlbnVtZXJhdGlvbiB2YWx1ZXMuIElmIHNldCB0byBOTywgRG94eWdlbiB3 aWxsIGFjY2VwdA0KIyB1bmRvY3VtZW50ZWQgZW51bWVyYXRpb24gdmFsdWVzLiBJZiBFWFRSQUNU X0FMTCBpcyBzZXQgdG8gWUVTIHRoZW4gdGhpcyBmbGFnDQojIHdpbGwgYXV0b21hdGljYWxseSBi ZSBkaXNhYmxlZC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpXQVJOX0lGX1VORE9D X0VOVU1fVkFMID0gTk8NCg0KIyBJZiB0aGUgV0FSTl9BU19FUlJPUiB0YWcgaXMgc2V0IHRvIFlF UyB0aGVuIERveHlnZW4gd2lsbCBpbW1lZGlhdGVseSBzdG9wIHdoZW4NCiMgYSB3YXJuaW5nIGlz IGVuY291bnRlcmVkLiBJZiB0aGUgV0FSTl9BU19FUlJPUiB0YWcgaXMgc2V0IHRvIEZBSUxfT05f V0FSTklOR1MNCiMgdGhlbiBEb3h5Z2VuIHdpbGwgY29udGludWUgcnVubmluZyBhcyBpZiBXQVJO X0FTX0VSUk9SIHRhZyBpcyBzZXQgdG8gTk8sIGJ1dA0KIyBhdCB0aGUgZW5kIG9mIHRoZSBEb3h5 Z2VuIHByb2Nlc3MgRG94eWdlbiB3aWxsIHJldHVybiB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLg0K IyBJZiB0aGUgV0FSTl9BU19FUlJPUiB0YWcgaXMgc2V0IHRvIEZBSUxfT05fV0FSTklOR1NfUFJJ TlQgdGhlbiBEb3h5Z2VuIGJlaGF2ZXMNCiMgbGlrZSBGQUlMX09OX1dBUk5JTkdTIGJ1dCBpbiBj YXNlIG5vIFdBUk5fTE9HRklMRSBpcyBkZWZpbmVkIERveHlnZW4gd2lsbCBub3QNCiMgd3JpdGUg dGhlIHdhcm5pbmcgbWVzc2FnZXMgaW4gYmV0d2VlbiBvdGhlciBtZXNzYWdlcyBidXQgd3JpdGUg dGhlbSBhdCB0aGUgZW5kDQojIG9mIGEgcnVuLCBpbiBjYXNlIGEgV0FSTl9MT0dGSUxFIGlzIGRl ZmluZWQgdGhlIHdhcm5pbmcgbWVzc2FnZXMgd2lsbCBiZQ0KIyBiZXNpZGVzIGJlaW5nIGluIHRo ZSBkZWZpbmVkIGZpbGUgYWxzbyBiZSBzaG93biBhdCB0aGUgZW5kIG9mIGEgcnVuLCB1bmxlc3MN CiMgdGhlIFdBUk5fTE9HRklMRSBpcyBkZWZpbmVkIGFzIC0gaS5lLiBzdGFuZGFyZCBvdXRwdXQg KHN0ZG91dCkgaW4gdGhhdCBjYXNlDQojIHRoZSBiZWhhdmlvciB3aWxsIHJlbWFpbiBhcyB3aXRo IHRoZSBzZXR0aW5nIEZBSUxfT05fV0FSTklOR1MuDQojIFBvc3NpYmxlIHZhbHVlcyBhcmU6IE5P LCBZRVMsIEZBSUxfT05fV0FSTklOR1MgYW5kIEZBSUxfT05fV0FSTklOR1NfUFJJTlQuDQojIFRo ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KV0FSTl9BU19FUlJPUiAgICAgICAgICA9IE5PDQoN CiMgVGhlIFdBUk5fRk9STUFUIHRhZyBkZXRlcm1pbmVzIHRoZSBmb3JtYXQgb2YgdGhlIHdhcm5p bmcgbWVzc2FnZXMgdGhhdCBEb3h5Z2VuDQojIGNhbiBwcm9kdWNlLiBUaGUgc3RyaW5nIHNob3Vs ZCBjb250YWluIHRoZSAkZmlsZSwgJGxpbmUsIGFuZCAkdGV4dCB0YWdzLCB3aGljaA0KIyB3aWxs IGJlIHJlcGxhY2VkIGJ5IHRoZSBmaWxlIGFuZCBsaW5lIG51bWJlciBmcm9tIHdoaWNoIHRoZSB3 YXJuaW5nIG9yaWdpbmF0ZWQNCiMgYW5kIHRoZSB3YXJuaW5nIHRleHQuIE9wdGlvbmFsbHkgdGhl IGZvcm1hdCBtYXkgY29udGFpbiAkdmVyc2lvbiwgd2hpY2ggd2lsbA0KIyBiZSByZXBsYWNlZCBi eSB0aGUgdmVyc2lvbiBvZiB0aGUgZmlsZSAoaWYgaXQgY291bGQgYmUgb2J0YWluZWQgdmlhDQoj IEZJTEVfVkVSU0lPTl9GSUxURVIpDQojIFNlZSBhbHNvOiBXQVJOX0xJTkVfRk9STUFUDQojIFRo ZSBkZWZhdWx0IHZhbHVlIGlzOiAkZmlsZTokbGluZTogJHRleHQuDQoNCldBUk5fRk9STUFUICAg ICAgICAgICAgPSAiJGZpbGU6JGxpbmU6ICR0ZXh0Ig0KDQojIEluIHRoZSAkdGV4dCBwYXJ0IG9m IHRoZSBXQVJOX0ZPUk1BVCBjb21tYW5kIGl0IGlzIHBvc3NpYmxlIHRoYXQgYSByZWZlcmVuY2UN CiMgdG8gYSBtb3JlIHNwZWNpZmljIHBsYWNlIGlzIGdpdmVuLiBUbyBtYWtlIGl0IGVhc2llciB0 byBqdW1wIHRvIHRoaXMgcGxhY2UNCiMgKG91dHNpZGUgb2YgRG94eWdlbikgdGhlIHVzZXIgY2Fu IGRlZmluZSBhIGN1c3RvbSAiY3V0IiAvICJwYXN0ZSIgc3RyaW5nLg0KIyBFeGFtcGxlOg0KIyBX QVJOX0xJTkVfRk9STUFUID0gIid2aSAkZmlsZSArJGxpbmUnIg0KIyBTZWUgYWxzbzogV0FSTl9G T1JNQVQNCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IGF0IGxpbmUgJGxpbmUgb2YgZmlsZSAkZmls ZS4NCg0KV0FSTl9MSU5FX0ZPUk1BVCAgICAgICA9ICJhdCBsaW5lICRsaW5lIG9mIGZpbGUgJGZp bGUiDQoNCiMgVGhlIFdBUk5fTE9HRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGZp bGUgdG8gd2hpY2ggd2FybmluZyBhbmQgZXJyb3INCiMgbWVzc2FnZXMgc2hvdWxkIGJlIHdyaXR0 ZW4uIElmIGxlZnQgYmxhbmsgdGhlIG91dHB1dCBpcyB3cml0dGVuIHRvIHN0YW5kYXJkDQojIGVy cm9yIChzdGRlcnIpLiBJbiBjYXNlIHRoZSBmaWxlIHNwZWNpZmllZCBjYW5ub3QgYmUgb3BlbmVk IGZvciB3cml0aW5nIHRoZQ0KIyB3YXJuaW5nIGFuZCBlcnJvciBtZXNzYWdlcyBhcmUgd3JpdHRl biB0byBzdGFuZGFyZCBlcnJvci4gV2hlbiBhcyBmaWxlIC0gaXMNCiMgc3BlY2lmaWVkIHRoZSB3 YXJuaW5nIGFuZCBlcnJvciBtZXNzYWdlcyBhcmUgd3JpdHRlbiB0byBzdGFuZGFyZCBvdXRwdXQN CiMgKHN0ZG91dCkuDQoNCldBUk5fTE9HRklMRSAgICAgICAgICAgPQ0KDQojLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBpbnB1dCBmaWxl cw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIFRoZSBJTlBVVCB0YWcgaXMgdXNlZCB0byBzcGVj aWZ5IHRoZSBmaWxlcyBhbmQvb3IgZGlyZWN0b3JpZXMgdGhhdCBjb250YWluDQojIGRvY3VtZW50 ZWQgc291cmNlIGZpbGVzLiBZb3UgbWF5IGVudGVyIGZpbGUgbmFtZXMgbGlrZSBteWZpbGUuY3Bw IG9yDQojIGRpcmVjdG9yaWVzIGxpa2UgL3Vzci9zcmMvbXlwcm9qZWN0LiBTZXBhcmF0ZSB0aGUg ZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2l0aA0KIyBzcGFjZXMuIFNlZSBhbHNvIEZJTEVfUEFUVEVS TlMgYW5kIEVYVEVOU0lPTl9NQVBQSU5HDQojIE5vdGU6IElmIHRoaXMgdGFnIGlzIGVtcHR5IHRo ZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBzZWFyY2hlZC4NCg0KSU5QVVQgICAgICAgICAgICAgICAg ICA9DQoNCiMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2hhcmFjdGVyIGVu Y29kaW5nIG9mIHRoZSBzb3VyY2UgZmlsZXMNCiMgdGhhdCBEb3h5Z2VuIHBhcnNlcy4gSW50ZXJu YWxseSBEb3h5Z2VuIHVzZXMgdGhlIFVURi04IGVuY29kaW5nLiBEb3h5Z2VuIHVzZXMNCiMgbGli aWNvbnYgKG9yIHRoZSBpY29udiBidWlsdCBpbnRvIGxpYmMpIGZvciB0aGUgdHJhbnNjb2Rpbmcu IFNlZSB0aGUgbGliaWNvbnYNCiMgZG9jdW1lbnRhdGlvbiAoc2VlOg0KIyBodHRwczovL3d3dy5n bnUub3JnL3NvZnR3YXJlL2xpYmljb252LykgZm9yIHRoZSBsaXN0IG9mIHBvc3NpYmxlIGVuY29k aW5ncy4NCiMgU2VlIGFsc286IElOUFVUX0ZJTEVfRU5DT0RJTkcNCiMgVGhlIGRlZmF1bHQgdmFs dWUgaXM6IFVURi04Lg0KDQpJTlBVVF9FTkNPRElORyAgICAgICAgID0gVVRGLTgNCg0KIyBUaGlz IHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBjaGFyYWN0ZXIgZW5jb2Rpbmcgb2YgdGhl IHNvdXJjZSBmaWxlcw0KIyB0aGF0IERveHlnZW4gcGFyc2VzIFRoZSBJTlBVVF9GSUxFX0VOQ09E SU5HIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5DQojIGNoYXJhY3RlciBlbmNvZGluZyBvbiBh IHBlciBmaWxlIHBhdHRlcm4gYmFzaXMuIERveHlnZW4gd2lsbCBjb21wYXJlIHRoZSBmaWxlDQoj IG5hbWUgd2l0aCBlYWNoIHBhdHRlcm4gYW5kIGFwcGx5IHRoZSBlbmNvZGluZyBpbnN0ZWFkIG9m IHRoZSBkZWZhdWx0DQojIElOUFVUX0VOQ09ESU5HKSBpZiB0aGVyZSBpcyBhIG1hdGNoLiBUaGUg Y2hhcmFjdGVyIGVuY29kaW5ncyBhcmUgYSBsaXN0IG9mIHRoZQ0KIyBmb3JtOiBwYXR0ZXJuPWVu Y29kaW5nIChsaWtlICoucGhwPUlTTy04ODU5LTEpLg0KIyBTZWUgYWxzbzogSU5QVVRfRU5DT0RJ TkcgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gc3VwcG9ydGVkIGVuY29kaW5ncy4NCg0KSU5Q VVRfRklMRV9FTkNPRElORyAgICA9DQoNCiMgSWYgdGhlIHZhbHVlIG9mIHRoZSBJTlBVVCB0YWcg Y29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZQ0KIyBGSUxFX1BBVFRFUk5TIHRh ZyB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHdpbGRjYXJkIHBhdHRlcm5zIChsaWtlICouY3BwIGFu ZA0KIyAqLmgpIHRvIGZpbHRlciBvdXQgdGhlIHNvdXJjZS1maWxlcyBpbiB0aGUgZGlyZWN0b3Jp ZXMuDQojDQojIE5vdGUgdGhhdCBmb3IgY3VzdG9tIGV4dGVuc2lvbnMgb3Igbm90IGRpcmVjdGx5 IHN1cHBvcnRlZCBleHRlbnNpb25zIHlvdSBhbHNvDQojIG5lZWQgdG8gc2V0IEVYVEVOU0lPTl9N QVBQSU5HIGZvciB0aGUgZXh0ZW5zaW9uIG90aGVyd2lzZSB0aGUgZmlsZXMgYXJlIG5vdA0KIyBy ZWFkIGJ5IERveHlnZW4uDQojDQojIE5vdGUgdGhlIGxpc3Qgb2YgZGVmYXVsdCBjaGVja2VkIGZp bGUgcGF0dGVybnMgbWlnaHQgZGlmZmVyIGZyb20gdGhlIGxpc3Qgb2YNCiMgZGVmYXVsdCBmaWxl IGV4dGVuc2lvbiBtYXBwaW5ncy4NCiMNCiMgSWYgbGVmdCBibGFuayB0aGUgZm9sbG93aW5nIHBh dHRlcm5zIGFyZSB0ZXN0ZWQ6Ki5jLCAqLmNjLCAqLmN4eCwgKi5jeHhtLA0KIyAqLmNwcCwgKi5j cHBtLCAqLmNjbSwgKi5jKyssICouYysrbSwgKi5qYXZhLCAqLmlpLCAqLml4eCwgKi5pcHAsICou aSsrLCAqLmlubCwNCiMgKi5pZGwsICouZGRsLCAqLm9kbCwgKi5oLCAqLmhoLCAqLmh4eCwgKi5o cHAsICouaCsrLCAqLml4eCwgKi5sLCAqLmNzLCAqLmQsDQojICoucGhwLCAqLnBocDQsICoucGhw NSwgKi5waHRtbCwgKi5pbmMsICoubSwgKi5tYXJrZG93biwgKi5tZCwgKi5tbSwgKi5kb3ggKHRv DQojIGJlIHByb3ZpZGVkIGFzIERveHlnZW4gQyBjb21tZW50KSwgKi5weSwgKi5weXcsICouZjkw LCAqLmY5NSwgKi5mMDMsICouZjA4LA0KIyAqLmYxOCwgKi5mLCAqLmZvciwgKi52aGQsICoudmhk bCwgKi51Y2YsICoucXNmIGFuZCAqLmljZS4NCg0KRklMRV9QQVRURVJOUyAgICAgICAgICA9ICou YyBcDQogICAgICAgICAgICAgICAgICAgICAgICAgKi5jYyBcDQogICAgICAgICAgICAgICAgICAg ICAgICAgKi5jeHggXA0KICAgICAgICAgICAgICAgICAgICAgICAgICouY3h4bSBcDQogICAgICAg ICAgICAgICAgICAgICAgICAgKi5jcHAgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICouY3Bw bSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgKi5jY20gXA0KICAgICAgICAgICAgICAgICAg ICAgICAgICouYysrIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAqLmMrK20gXA0KICAgICAg ICAgICAgICAgICAgICAgICAgICouamF2YSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgKi5p aSBcDQogICAgICAgICAgICAgICAgICAgICAgICAgKi5peHggXA0KICAgICAgICAgICAgICAgICAg ICAgICAgICouaXBwIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAqLmkrKyBcDQogICAgICAg ICAgICAgICAgICAgICAgICAgKi5pbmwgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICouaWRs IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAqLmRkbCBcDQogICAgICAgICAgICAgICAgICAg ICAgICAgKi5vZGwgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICouaCBcDQogICAgICAgICAg ICAgICAgICAgICAgICAgKi5oaCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgKi5oeHggXA0K ICAgICAgICAgICAgICAgICAgICAgICAgICouaHBwIFwNCiAgICAgICAgICAgICAgICAgICAgICAg ICAqLmgrKyBcDQogICAgICAgICAgICAgICAgICAgICAgICAgKi5peHggXA0KICAgICAgICAgICAg ICAgICAgICAgICAgICoubCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgKi5jcyBcDQogICAg ICAgICAgICAgICAgICAgICAgICAgKi5kIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAqLnBo cCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgKi5waHA0IFwNCiAgICAgICAgICAgICAgICAg ICAgICAgICAqLnBocDUgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICoucGh0bWwgXA0KICAg ICAgICAgICAgICAgICAgICAgICAgICouaW5jIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAq Lm0gXA0KICAgICAgICAgICAgICAgICAgICAgICAgICoubWFya2Rvd24gXA0KICAgICAgICAgICAg ICAgICAgICAgICAgICoubWQgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICoubW0gXA0KICAg ICAgICAgICAgICAgICAgICAgICAgICouZG94IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAq LnB5IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAqLnB5dyBcDQogICAgICAgICAgICAgICAg ICAgICAgICAgKi5mOTAgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICouZjk1IFwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAqLmYwMyBcDQogICAgICAgICAgICAgICAgICAgICAgICAgKi5m MDggXA0KICAgICAgICAgICAgICAgICAgICAgICAgICouZjE4IFwNCiAgICAgICAgICAgICAgICAg ICAgICAgICAqLmYgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICouZm9yIFwNCiAgICAgICAg ICAgICAgICAgICAgICAgICAqLnZoZCBcDQogICAgICAgICAgICAgICAgICAgICAgICAgKi52aGRs IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAqLnVjZiBcDQogICAgICAgICAgICAgICAgICAg ICAgICAgKi5xc2YgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICouaWNlDQoNCiMgVGhlIFJF Q1VSU0lWRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB3aGV0aGVyIG9yIG5vdCBzdWJkaXJl Y3RvcmllcyBzaG91bGQNCiMgYmUgc2VhcmNoZWQgZm9yIGlucHV0IGZpbGVzIGFzIHdlbGwuDQoj IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KUkVDVVJTSVZFICAgICAgICAgICAgICA9IE5P DQoNCiMgVGhlIEVYQ0xVREUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgZmlsZXMgYW5kL29y IGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIGJlDQojIGV4Y2x1ZGVkIGZyb20gdGhlIElOUFVUIHNv dXJjZSBmaWxlcy4gVGhpcyB3YXkgeW91IGNhbiBlYXNpbHkgZXhjbHVkZSBhDQojIHN1YmRpcmVj dG9yeSBmcm9tIGEgZGlyZWN0b3J5IHRyZWUgd2hvc2Ugcm9vdCBpcyBzcGVjaWZpZWQgd2l0aCB0 aGUgSU5QVVQgdGFnLg0KIw0KIyBOb3RlIHRoYXQgcmVsYXRpdmUgcGF0aHMgYXJlIHJlbGF0aXZl IHRvIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCBEb3h5Z2VuIGlzDQojIHJ1bi4NCg0KRVhDTFVE RSAgICAgICAgICAgICAgICA9DQoNCiMgVGhlIEVYQ0xVREVfU1lNTElOS1MgdGFnIGNhbiBiZSB1 c2VkIHRvIHNlbGVjdCB3aGV0aGVyIG9yIG5vdCBmaWxlcyBvcg0KIyBkaXJlY3RvcmllcyB0aGF0 IGFyZSBzeW1ib2xpYyBsaW5rcyAoYSBVbml4IGZpbGUgc3lzdGVtIGZlYXR1cmUpIGFyZSBleGNs dWRlZA0KIyBmcm9tIHRoZSBpbnB1dC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpF WENMVURFX1NZTUxJTktTICAgICAgID0gTk8NCg0KIyBJZiB0aGUgdmFsdWUgb2YgdGhlIElOUFVU IHRhZyBjb250YWlucyBkaXJlY3RvcmllcywgeW91IGNhbiB1c2UgdGhlDQojIEVYQ0xVREVfUEFU VEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybnMgdG8gZXhj bHVkZQ0KIyBjZXJ0YWluIGZpbGVzIGZyb20gdGhvc2UgZGlyZWN0b3JpZXMuDQojDQojIE5vdGUg dGhhdCB0aGUgd2lsZGNhcmRzIGFyZSBtYXRjaGVkIGFnYWluc3QgdGhlIGZpbGUgd2l0aCBhYnNv bHV0ZSBwYXRoLCBzbyB0bw0KIyBleGNsdWRlIGFsbCB0ZXN0IGRpcmVjdG9yaWVzIGZvciBleGFt cGxlIHVzZSB0aGUgcGF0dGVybiAqL3Rlc3QvKg0KDQpFWENMVURFX1BBVFRFUk5TICAgICAgID0N Cg0KIyBUaGUgRVhDTFVERV9TWU1CT0xTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBv ciBtb3JlIHN5bWJvbCBuYW1lcw0KIyAobmFtZXNwYWNlcywgY2xhc3NlcywgZnVuY3Rpb25zLCBl dGMuKSB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIHRoZQ0KIyBvdXRwdXQuIFRoZSBzeW1i b2wgbmFtZSBjYW4gYmUgYSBmdWxseSBxdWFsaWZpZWQgbmFtZSwgYSB3b3JkLCBvciBpZiB0aGUN CiMgd2lsZGNhcmQgKiBpcyB1c2VkLCBhIHN1YnN0cmluZy4gRXhhbXBsZXM6IEFOYW1lc3BhY2Us IEFDbGFzcywNCiMgQU5hbWVzcGFjZTo6QUNsYXNzLCBBTmFtZXNwYWNlOjoqVGVzdA0KDQpFWENM VURFX1NZTUJPTFMgICAgICAgID0NCg0KIyBUaGUgRVhBTVBMRV9QQVRIIHRhZyBjYW4gYmUgdXNl ZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbGVzIG9yIGRpcmVjdG9yaWVzDQojIHRoYXQgY29u dGFpbiBleGFtcGxlIGNvZGUgZnJhZ21lbnRzIHRoYXQgYXJlIGluY2x1ZGVkIChzZWUgdGhlIFxp bmNsdWRlDQojIGNvbW1hbmQpLg0KDQpFWEFNUExFX1BBVEggICAgICAgICAgID0NCg0KIyBJZiB0 aGUgdmFsdWUgb2YgdGhlIEVYQU1QTEVfUEFUSCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlv dSBjYW4gdXNlIHRoZQ0KIyBFWEFNUExFX1BBVFRFUk5TIHRhZyB0byBzcGVjaWZ5IG9uZSBvciBt b3JlIHdpbGRjYXJkIHBhdHRlcm4gKGxpa2UgKi5jcHAgYW5kDQojICouaCkgdG8gZmlsdGVyIG91 dCB0aGUgc291cmNlLWZpbGVzIGluIHRoZSBkaXJlY3Rvcmllcy4gSWYgbGVmdCBibGFuayBhbGwN CiMgZmlsZXMgYXJlIGluY2x1ZGVkLg0KDQpFWEFNUExFX1BBVFRFUk5TICAgICAgID0gKg0KDQoj IElmIHRoZSBFWEFNUExFX1JFQ1VSU0lWRSB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHN1YmRpcmVj dG9yaWVzIHdpbGwgYmUNCiMgc2VhcmNoZWQgZm9yIGlucHV0IGZpbGVzIHRvIGJlIHVzZWQgd2l0 aCB0aGUgXGluY2x1ZGUgb3IgXGRvbnRpbmNsdWRlIGNvbW1hbmRzDQojIGlycmVzcGVjdGl2ZSBv ZiB0aGUgdmFsdWUgb2YgdGhlIFJFQ1VSU0lWRSB0YWcuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlz OiBOTy4NCg0KRVhBTVBMRV9SRUNVUlNJVkUgICAgICA9IE5PDQoNCiMgVGhlIElNQUdFX1BBVEgg dGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZmlsZXMgb3IgZGlyZWN0b3Jp ZXMNCiMgdGhhdCBjb250YWluIGltYWdlcyB0aGF0IGFyZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUg ZG9jdW1lbnRhdGlvbiAoc2VlIHRoZQ0KIyBcaW1hZ2UgY29tbWFuZCkuDQoNCklNQUdFX1BBVEgg ICAgICAgICAgICAgPQ0KDQojIFRoZSBJTlBVVF9GSUxURVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNw ZWNpZnkgYSBwcm9ncmFtIHRoYXQgRG94eWdlbiBzaG91bGQNCiMgaW52b2tlIHRvIGZpbHRlciBm b3IgZWFjaCBpbnB1dCBmaWxlLiBEb3h5Z2VuIHdpbGwgaW52b2tlIHRoZSBmaWx0ZXIgcHJvZ3Jh bQ0KIyBieSBleGVjdXRpbmcgKHZpYSBwb3BlbigpKSB0aGUgY29tbWFuZDoNCiMNCiMgPGZpbHRl cj4gPGlucHV0LWZpbGU+DQojDQojIHdoZXJlIDxmaWx0ZXI+IGlzIHRoZSB2YWx1ZSBvZiB0aGUg SU5QVVRfRklMVEVSIHRhZywgYW5kIDxpbnB1dC1maWxlPiBpcyB0aGUNCiMgbmFtZSBvZiBhbiBp bnB1dCBmaWxlLiBEb3h5Z2VuIHdpbGwgdGhlbiB1c2UgdGhlIG91dHB1dCB0aGF0IHRoZSBmaWx0 ZXINCiMgcHJvZ3JhbSB3cml0ZXMgdG8gc3RhbmRhcmQgb3V0cHV0LiBJZiBGSUxURVJfUEFUVEVS TlMgaXMgc3BlY2lmaWVkLCB0aGlzIHRhZw0KIyB3aWxsIGJlIGlnbm9yZWQuDQojDQojIE5vdGUg dGhhdCB0aGUgZmlsdGVyIG11c3Qgbm90IGFkZCBvciByZW1vdmUgbGluZXM7IGl0IGlzIGFwcGxp ZWQgYmVmb3JlIHRoZQ0KIyBjb2RlIGlzIHNjYW5uZWQsIGJ1dCBub3Qgd2hlbiB0aGUgb3V0cHV0 IGNvZGUgaXMgZ2VuZXJhdGVkLiBJZiBsaW5lcyBhcmUgYWRkZWQNCiMgb3IgcmVtb3ZlZCwgdGhl IGFuY2hvcnMgd2lsbCBub3QgYmUgcGxhY2VkIGNvcnJlY3RseS4NCiMNCiMgTm90ZSB0aGF0IERv eHlnZW4gd2lsbCB1c2UgdGhlIGRhdGEgcHJvY2Vzc2VkIGFuZCB3cml0dGVuIHRvIHN0YW5kYXJk IG91dHB1dA0KIyBmb3IgZnVydGhlciBwcm9jZXNzaW5nLCB0aGVyZWZvcmUgbm90aGluZyBlbHNl LCBsaWtlIGRlYnVnIHN0YXRlbWVudHMgb3IgdXNlZA0KIyBjb21tYW5kcyAoc28gaW4gY2FzZSBv ZiBhIFdpbmRvd3MgYmF0Y2ggZmlsZSBhbHdheXMgdXNlIEBlY2hvIE9GRiksIHNob3VsZCBiZQ0K IyB3cml0dGVuIHRvIHN0YW5kYXJkIG91dHB1dC4NCiMNCiMgTm90ZSB0aGF0IGZvciBjdXN0b20g ZXh0ZW5zaW9ucyBvciBub3QgZGlyZWN0bHkgc3VwcG9ydGVkIGV4dGVuc2lvbnMgeW91IGFsc28N CiMgbmVlZCB0byBzZXQgRVhURU5TSU9OX01BUFBJTkcgZm9yIHRoZSBleHRlbnNpb24gb3RoZXJ3 aXNlIHRoZSBmaWxlcyBhcmUgbm90DQojIHByb3Blcmx5IHByb2Nlc3NlZCBieSBEb3h5Z2VuLg0K DQpJTlBVVF9GSUxURVIgICAgICAgICAgID0NCg0KIyBUaGUgRklMVEVSX1BBVFRFUk5TIHRhZyBj YW4gYmUgdXNlZCB0byBzcGVjaWZ5IGZpbHRlcnMgb24gYSBwZXIgZmlsZSBwYXR0ZXJuDQojIGJh c2lzLiBEb3h5Z2VuIHdpbGwgY29tcGFyZSB0aGUgZmlsZSBuYW1lIHdpdGggZWFjaCBwYXR0ZXJu IGFuZCBhcHBseSB0aGUNCiMgZmlsdGVyIGlmIHRoZXJlIGlzIGEgbWF0Y2guIFRoZSBmaWx0ZXJz IGFyZSBhIGxpc3Qgb2YgdGhlIGZvcm06IHBhdHRlcm49ZmlsdGVyDQojIChsaWtlICouY3BwPW15 X2NwcF9maWx0ZXIpLiBTZWUgSU5QVVRfRklMVEVSIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIG9u IGhvdw0KIyBmaWx0ZXJzIGFyZSB1c2VkLiBJZiB0aGUgRklMVEVSX1BBVFRFUk5TIHRhZyBpcyBl bXB0eSBvciBpZiBub25lIG9mIHRoZQ0KIyBwYXR0ZXJucyBtYXRjaCB0aGUgZmlsZSBuYW1lLCBJ TlBVVF9GSUxURVIgaXMgYXBwbGllZC4NCiMNCiMgTm90ZSB0aGF0IGZvciBjdXN0b20gZXh0ZW5z aW9ucyBvciBub3QgZGlyZWN0bHkgc3VwcG9ydGVkIGV4dGVuc2lvbnMgeW91IGFsc28NCiMgbmVl ZCB0byBzZXQgRVhURU5TSU9OX01BUFBJTkcgZm9yIHRoZSBleHRlbnNpb24gb3RoZXJ3aXNlIHRo ZSBmaWxlcyBhcmUgbm90DQojIHByb3Blcmx5IHByb2Nlc3NlZCBieSBEb3h5Z2VuLg0KDQpGSUxU RVJfUEFUVEVSTlMgICAgICAgID0NCg0KIyBJZiB0aGUgRklMVEVSX1NPVVJDRV9GSUxFUyB0YWcg aXMgc2V0IHRvIFlFUywgdGhlIGlucHV0IGZpbHRlciAoaWYgc2V0IHVzaW5nDQojIElOUFVUX0ZJ TFRFUikgd2lsbCBhbHNvIGJlIHVzZWQgdG8gZmlsdGVyIHRoZSBpbnB1dCBmaWxlcyB0aGF0IGFy ZSB1c2VkIGZvcg0KIyBwcm9kdWNpbmcgdGhlIHNvdXJjZSBmaWxlcyB0byBicm93c2UgKGkuZS4g d2hlbiBTT1VSQ0VfQlJPV1NFUiBpcyBzZXQgdG8gWUVTKS4NCiMgVGhlIGRlZmF1bHQgdmFsdWUg aXM6IE5PLg0KDQpGSUxURVJfU09VUkNFX0ZJTEVTICAgID0gTk8NCg0KIyBUaGUgRklMVEVSX1NP VVJDRV9QQVRURVJOUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBzb3VyY2UgZmlsdGVycyBw ZXIgZmlsZQ0KIyBwYXR0ZXJuLiBBIHBhdHRlcm4gd2lsbCBvdmVycmlkZSB0aGUgc2V0dGluZyBm b3IgRklMVEVSX1BBVFRFUk4gKGlmIGFueSkgYW5kDQojIGl0IGlzIGFsc28gcG9zc2libGUgdG8g ZGlzYWJsZSBzb3VyY2UgZmlsdGVyaW5nIGZvciBhIHNwZWNpZmljIHBhdHRlcm4gdXNpbmcNCiMg Ki5leHQ9IChzbyB3aXRob3V0IG5hbWluZyBhIGZpbHRlcikuDQojIFRoaXMgdGFnIHJlcXVpcmVz IHRoYXQgdGhlIHRhZyBGSUxURVJfU09VUkNFX0ZJTEVTIGlzIHNldCB0byBZRVMuDQoNCkZJTFRF Ul9TT1VSQ0VfUEFUVEVSTlMgPQ0KDQojIElmIHRoZSBVU0VfTURGSUxFX0FTX01BSU5QQUdFIHRh ZyByZWZlcnMgdG8gdGhlIG5hbWUgb2YgYSBtYXJrZG93biBmaWxlIHRoYXQNCiMgaXMgcGFydCBv ZiB0aGUgaW5wdXQsIGl0cyBjb250ZW50cyB3aWxsIGJlIHBsYWNlZCBvbiB0aGUgbWFpbiBwYWdl DQojIChpbmRleC5odG1sKS4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSBoYXZlIGEgcHJvamVj dCBvbiBmb3IgaW5zdGFuY2UgR2l0SHViDQojIGFuZCB3YW50IHRvIHJldXNlIHRoZSBpbnRyb2R1 Y3Rpb24gcGFnZSBhbHNvIGZvciB0aGUgRG94eWdlbiBvdXRwdXQuDQoNClVTRV9NREZJTEVfQVNf TUFJTlBBR0UgPQ0KDQojIFRoZSBGb3J0cmFuIHN0YW5kYXJkIHNwZWNpZmllcyB0aGF0IGZvciBm aXhlZCBmb3JtYXR0ZWQgRm9ydHJhbiBjb2RlIGFsbA0KIyBjaGFyYWN0ZXJzIGZyb20gcG9zaXRp b24gNzIgYXJlIHRvIGJlIGNvbnNpZGVyZWQgYXMgY29tbWVudC4gQSBjb21tb24NCiMgZXh0ZW5z aW9uIGlzIHRvIGFsbG93IGxvbmdlciBsaW5lcyBiZWZvcmUgdGhlIGF1dG9tYXRpYyBjb21tZW50 IHN0YXJ0cy4gVGhlDQojIHNldHRpbmcgRk9SVFJBTl9DT01NRU5UX0FGVEVSIHdpbGwgYWxzbyBt YWtlIGl0IHBvc3NpYmxlIHRoYXQgbG9uZ2VyIGxpbmVzIGNhbg0KIyBiZSBwcm9jZXNzZWQgYmVm b3JlIHRoZSBhdXRvbWF0aWMgY29tbWVudCBzdGFydHMuDQojIE1pbmltdW0gdmFsdWU6IDcsIG1h eGltdW0gdmFsdWU6IDEwMDAwLCBkZWZhdWx0IHZhbHVlOiA3Mi4NCg0KRk9SVFJBTl9DT01NRU5U X0FGVEVSICA9IDcyDQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ29uZmlndXJhdGlvbiBvcHRp b25zIHJlbGF0ZWQgdG8gc291cmNlIGJyb3dzaW5nDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMg SWYgdGhlIFNPVVJDRV9CUk9XU0VSIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gYSBsaXN0IG9mIHNv dXJjZSBmaWxlcyB3aWxsIGJlDQojIGdlbmVyYXRlZC4gRG9jdW1lbnRlZCBlbnRpdGllcyB3aWxs IGJlIGNyb3NzLXJlZmVyZW5jZWQgd2l0aCB0aGVzZSBzb3VyY2VzLg0KIw0KIyBOb3RlOiBUbyBn ZXQgcmlkIG9mIGFsbCBzb3VyY2UgY29kZSBpbiB0aGUgZ2VuZXJhdGVkIG91dHB1dCwgbWFrZSBz dXJlIHRoYXQNCiMgYWxzbyBWRVJCQVRJTV9IRUFERVJTIGlzIHNldCB0byBOTy4NCiMgVGhlIGRl ZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpTT1VSQ0VfQlJPV1NFUiAgICAgICAgID0gTk8NCg0KIyBT ZXR0aW5nIHRoZSBJTkxJTkVfU09VUkNFUyB0YWcgdG8gWUVTIHdpbGwgaW5jbHVkZSB0aGUgYm9k eSBvZiBmdW5jdGlvbnMsDQojIG11bHRpLWxpbmUgbWFjcm9zLCBlbnVtcyBvciBsaXN0IGluaXRp YWxpemVkIHZhcmlhYmxlcyBkaXJlY3RseSBpbnRvIHRoZQ0KIyBkb2N1bWVudGF0aW9uLg0KIyBU aGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQoNCklOTElORV9TT1VSQ0VTICAgICAgICAgPSBOTw0K DQojIFNldHRpbmcgdGhlIFNUUklQX0NPREVfQ09NTUVOVFMgdGFnIHRvIFlFUyB3aWxsIGluc3Ry dWN0IERveHlnZW4gdG8gaGlkZSBhbnkNCiMgc3BlY2lhbCBjb21tZW50IGJsb2NrcyBmcm9tIGdl bmVyYXRlZCBzb3VyY2UgY29kZSBmcmFnbWVudHMuIE5vcm1hbCBDLCBDKysgYW5kDQojIEZvcnRy YW4gY29tbWVudHMgd2lsbCBhbHdheXMgcmVtYWluIHZpc2libGUuDQojIFRoZSBkZWZhdWx0IHZh bHVlIGlzOiBZRVMuDQoNClNUUklQX0NPREVfQ09NTUVOVFMgICAgPSBZRVMNCg0KIyBJZiB0aGUg UkVGRVJFTkNFRF9CWV9SRUxBVElPTiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGZvciBlYWNoIGRv Y3VtZW50ZWQNCiMgZW50aXR5IGFsbCBkb2N1bWVudGVkIGZ1bmN0aW9ucyByZWZlcmVuY2luZyBp dCB3aWxsIGJlIGxpc3RlZC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpSRUZFUkVO Q0VEX0JZX1JFTEFUSU9OID0gTk8NCg0KIyBJZiB0aGUgUkVGRVJFTkNFU19SRUxBVElPTiB0YWcg aXMgc2V0IHRvIFlFUyB0aGVuIGZvciBlYWNoIGRvY3VtZW50ZWQgZnVuY3Rpb24NCiMgYWxsIGRv Y3VtZW50ZWQgZW50aXRpZXMgY2FsbGVkL3VzZWQgYnkgdGhhdCBmdW5jdGlvbiB3aWxsIGJlIGxp c3RlZC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpSRUZFUkVOQ0VTX1JFTEFUSU9O ICAgID0gTk8NCg0KIyBJZiB0aGUgUkVGRVJFTkNFU19MSU5LX1NPVVJDRSB0YWcgaXMgc2V0IHRv IFlFUyBhbmQgU09VUkNFX0JST1dTRVIgdGFnIGlzIHNldA0KIyB0byBZRVMgdGhlbiB0aGUgaHlw ZXJsaW5rcyBmcm9tIGZ1bmN0aW9ucyBpbiBSRUZFUkVOQ0VTX1JFTEFUSU9OIGFuZA0KIyBSRUZF UkVOQ0VEX0JZX1JFTEFUSU9OIGxpc3RzIHdpbGwgbGluayB0byB0aGUgc291cmNlIGNvZGUuIE90 aGVyd2lzZSB0aGV5IHdpbGwNCiMgbGluayB0byB0aGUgZG9jdW1lbnRhdGlvbi4NCiMgVGhlIGRl ZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KUkVGRVJFTkNFU19MSU5LX1NPVVJDRSA9IFlFUw0KDQoj IElmIFNPVVJDRV9UT09MVElQUyBpcyBlbmFibGVkICh0aGUgZGVmYXVsdCkgdGhlbiBob3Zlcmlu ZyBhIGh5cGVybGluayBpbiB0aGUNCiMgc291cmNlIGNvZGUgd2lsbCBzaG93IGEgdG9vbHRpcCB3 aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3VjaCBhcyBwcm90b3R5cGUsDQojIGJyaWVmIGRl c2NyaXB0aW9uIGFuZCBsaW5rcyB0byB0aGUgZGVmaW5pdGlvbiBhbmQgZG9jdW1lbnRhdGlvbi4g U2luY2UgdGhpcw0KIyB3aWxsIG1ha2UgdGhlIEhUTUwgZmlsZSBsYXJnZXIgYW5kIGxvYWRpbmcg b2YgbGFyZ2UgZmlsZXMgYSBiaXQgc2xvd2VyLCB5b3UNCiMgY2FuIG9wdCB0byBkaXNhYmxlIHRo aXMgZmVhdHVyZS4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCiMgVGhpcyB0YWcgcmVx dWlyZXMgdGhhdCB0aGUgdGFnIFNPVVJDRV9CUk9XU0VSIGlzIHNldCB0byBZRVMuDQoNClNPVVJD RV9UT09MVElQUyAgICAgICAgPSBZRVMNCg0KIyBJZiB0aGUgVVNFX0hUQUdTIHRhZyBpcyBzZXQg dG8gWUVTIHRoZW4gdGhlIHJlZmVyZW5jZXMgdG8gc291cmNlIGNvZGUgd2lsbA0KIyBwb2ludCB0 byB0aGUgSFRNTCBnZW5lcmF0ZWQgYnkgdGhlIGh0YWdzKDEpIHRvb2wgaW5zdGVhZCBvZiBEb3h5 Z2VuIGJ1aWx0LWluDQojIHNvdXJjZSBicm93c2VyLiBUaGUgaHRhZ3MgdG9vbCBpcyBwYXJ0IG9m IEdOVSdzIGdsb2JhbCBzb3VyY2UgdGFnZ2luZyBzeXN0ZW0NCiMgKHNlZSBodHRwczovL3d3dy5n bnUub3JnL3NvZnR3YXJlL2dsb2JhbC9nbG9iYWwuaHRtbCkuIFlvdSB3aWxsIG5lZWQgdmVyc2lv bg0KIyA0LjguNiBvciBoaWdoZXIuDQojDQojIFRvIHVzZSBpdCBkbyB0aGUgZm9sbG93aW5nOg0K IyAtIEluc3RhbGwgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGdsb2JhbA0KIyAtIEVuYWJsZSBTT1VS Q0VfQlJPV1NFUiBhbmQgVVNFX0hUQUdTIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUNCiMgLSBN YWtlIHN1cmUgdGhlIElOUFVUIHBvaW50cyB0byB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUN CiMgLSBSdW4gZG94eWdlbiBhcyBub3JtYWwNCiMNCiMgRG94eWdlbiB3aWxsIGludm9rZSBodGFn cyAoYW5kIHRoYXQgd2lsbCBpbiB0dXJuIGludm9rZSBndGFncyksIHNvIHRoZXNlDQojIHRvb2xz IG11c3QgYmUgYXZhaWxhYmxlIGZyb20gdGhlIGNvbW1hbmQgbGluZSAoaS5lLiBpbiB0aGUgc2Vh cmNoIHBhdGgpLg0KIw0KIyBUaGUgcmVzdWx0OiBpbnN0ZWFkIG9mIHRoZSBzb3VyY2UgYnJvd3Nl ciBnZW5lcmF0ZWQgYnkgRG94eWdlbiwgdGhlIGxpbmtzIHRvDQojIHNvdXJjZSBjb2RlIHdpbGwg bm93IHBvaW50IHRvIHRoZSBvdXRwdXQgb2YgaHRhZ3MuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlz OiBOTy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNPVVJDRV9CUk9XU0VSIGlz IHNldCB0byBZRVMuDQoNClVTRV9IVEFHUyAgICAgICAgICAgICAgPSBOTw0KDQojIElmIHRoZSBW RVJCQVRJTV9IRUFERVJTIHRhZyBpcyBzZXQgdGhlIFlFUyB0aGVuIERveHlnZW4gd2lsbCBnZW5l cmF0ZSBhDQojIHZlcmJhdGltIGNvcHkgb2YgdGhlIGhlYWRlciBmaWxlIGZvciBlYWNoIGNsYXNz IGZvciB3aGljaCBhbiBpbmNsdWRlIGlzDQojIHNwZWNpZmllZC4gU2V0IHRvIE5PIHRvIGRpc2Fi bGUgdGhpcy4NCiMgU2VlIGFsc286IFNlY3Rpb24gXGNsYXNzLg0KIyBUaGUgZGVmYXVsdCB2YWx1 ZSBpczogWUVTLg0KDQpWRVJCQVRJTV9IRUFERVJTICAgICAgID0gWUVTDQoNCiMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCiMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGFscGhhYmV0 aWNhbCBjbGFzcyBpbmRleA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIElmIHRoZSBBTFBIQUJF VElDQUxfSU5ERVggdGFnIGlzIHNldCB0byBZRVMsIGFuIGFscGhhYmV0aWNhbCBpbmRleCBvZiBh bGwNCiMgY29tcG91bmRzIHdpbGwgYmUgZ2VuZXJhdGVkLiBFbmFibGUgdGhpcyBpZiB0aGUgcHJv amVjdCBjb250YWlucyBhIGxvdCBvZg0KIyBjbGFzc2VzLCBzdHJ1Y3RzLCB1bmlvbnMgb3IgaW50 ZXJmYWNlcy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KQUxQSEFCRVRJQ0FMX0lO REVYICAgICA9IFlFUw0KDQojIFRoZSBJR05PUkVfUFJFRklYIHRhZyBjYW4gYmUgdXNlZCB0byBz cGVjaWZ5IGEgcHJlZml4IChvciBhIGxpc3Qgb2YgcHJlZml4ZXMpDQojIHRoYXQgc2hvdWxkIGJl IGlnbm9yZWQgd2hpbGUgZ2VuZXJhdGluZyB0aGUgaW5kZXggaGVhZGVycy4gVGhlIElHTk9SRV9Q UkVGSVgNCiMgdGFnIHdvcmtzIGZvciBjbGFzc2VzLCBmdW5jdGlvbiBhbmQgbWVtYmVyIG5hbWVz LiBUaGUgZW50aXR5IHdpbGwgYmUgcGxhY2VkIGluDQojIHRoZSBhbHBoYWJldGljYWwgbGlzdCB1 bmRlciB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBlbnRpdHkgbmFtZSB0aGF0IHJlbWFpbnMNCiMg YWZ0ZXIgcmVtb3ZpbmcgdGhlIHByZWZpeC4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg dGFnIEFMUEhBQkVUSUNBTF9JTkRFWCBpcyBzZXQgdG8gWUVTLg0KDQpJR05PUkVfUFJFRklYICAg ICAgICAgID0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDb25maWd1cmF0aW9uIG9wdGlvbnMg cmVsYXRlZCB0byB0aGUgSFRNTCBvdXRwdXQNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBJZiB0 aGUgR0VORVJBVEVfSFRNTCB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3aWxsIGdlbmVyYXRl IEhUTUwgb3V0cHV0DQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQoNCkdFTkVSQVRFX0hU TUwgICAgICAgICAgPSBZRVMNCg0KIyBUaGUgSFRNTF9PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3Bl Y2lmeSB3aGVyZSB0aGUgSFRNTCBkb2NzIHdpbGwgYmUgcHV0LiBJZiBhDQojIHJlbGF0aXZlIHBh dGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIHB1dCBp biBmcm9udCBvZg0KIyBpdC4NCiMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiBodG1sLg0KIyBU aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVT Lg0KDQpIVE1MX09VVFBVVCAgICAgICAgICAgID0gaHRtbA0KDQojIFRoZSBIVE1MX0ZJTEVfRVhU RU5TSU9OIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBmaWxlIGV4dGVuc2lvbiBmb3Ig ZWFjaA0KIyBnZW5lcmF0ZWQgSFRNTCBwYWdlIChmb3IgZXhhbXBsZTogLmh0bSwgLnBocCwgLmFz cCkuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiAuaHRtbC4NCiMgVGhpcyB0YWcgcmVxdWlyZXMg dGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4NCg0KSFRNTF9GSUxFX0VY VEVOU0lPTiAgICA9IC5odG1sDQoNCiMgVGhlIEhUTUxfSEVBREVSIHRhZyBjYW4gYmUgdXNlZCB0 byBzcGVjaWZ5IGEgdXNlci1kZWZpbmVkIEhUTUwgaGVhZGVyIGZpbGUgZm9yDQojIGVhY2ggZ2Vu ZXJhdGVkIEhUTUwgcGFnZS4gSWYgdGhlIHRhZyBpcyBsZWZ0IGJsYW5rIERveHlnZW4gd2lsbCBn ZW5lcmF0ZSBhDQojIHN0YW5kYXJkIGhlYWRlci4NCiMNCiMgVG8gZ2V0IHZhbGlkIEhUTUwgdGhl IGhlYWRlciBmaWxlIHRoYXQgaW5jbHVkZXMgYW55IHNjcmlwdHMgYW5kIHN0eWxlIHNoZWV0cw0K IyB0aGF0IERveHlnZW4gbmVlZHMsIHdoaWNoIGlzIGRlcGVuZGVudCBvbiB0aGUgY29uZmlndXJh dGlvbiBvcHRpb25zIHVzZWQgKGUuZy4NCiMgdGhlIHNldHRpbmcgR0VORVJBVEVfVFJFRVZJRVcp LiBJdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gc3RhcnQgd2l0aCBhDQojIGRlZmF1bHQgaGVh ZGVyIHVzaW5nDQojIGRveHlnZW4gLXcgaHRtbCBuZXdfaGVhZGVyLmh0bWwgbmV3X2Zvb3Rlci5o dG1sIG5ld19zdHlsZXNoZWV0LmNzcw0KIyBZb3VyQ29uZmlnRmlsZQ0KIyBhbmQgdGhlbiBtb2Rp ZnkgdGhlIGZpbGUgbmV3X2hlYWRlci5odG1sLiBTZWUgYWxzbyBzZWN0aW9uICJEb3h5Z2VuIHVz YWdlIg0KIyBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZSBkZWZhdWx0IGhl YWRlciB0aGF0IERveHlnZW4gbm9ybWFsbHkNCiMgdXNlcy4NCiMgTm90ZTogVGhlIGhlYWRlciBp cyBzdWJqZWN0IHRvIGNoYW5nZSBzbyB5b3UgdHlwaWNhbGx5IGhhdmUgdG8gcmVnZW5lcmF0ZSB0 aGUNCiMgZGVmYXVsdCBoZWFkZXIgd2hlbiB1cGdyYWRpbmcgdG8gYSBuZXdlciB2ZXJzaW9uIG9m IERveHlnZW4uIEZvciBhIGRlc2NyaXB0aW9uDQojIG9mIHRoZSBwb3NzaWJsZSBtYXJrZXJzIGFu ZCBibG9jayBuYW1lcyBzZWUgdGhlIGRvY3VtZW50YXRpb24uDQojIFRoaXMgdGFnIHJlcXVpcmVz IHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuDQoNCkhUTUxfSEVBREVS ICAgICAgICAgICAgPQ0KDQojIFRoZSBIVE1MX0ZPT1RFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3Bl Y2lmeSBhIHVzZXItZGVmaW5lZCBIVE1MIGZvb3RlciBmb3IgZWFjaA0KIyBnZW5lcmF0ZWQgSFRN TCBwYWdlLiBJZiB0aGUgdGFnIGlzIGxlZnQgYmxhbmsgRG94eWdlbiB3aWxsIGdlbmVyYXRlIGEg c3RhbmRhcmQNCiMgZm9vdGVyLiBTZWUgSFRNTF9IRUFERVIgZm9yIG1vcmUgaW5mb3JtYXRpb24g b24gaG93IHRvIGdlbmVyYXRlIGEgZGVmYXVsdA0KIyBmb290ZXIgYW5kIHdoYXQgc3BlY2lhbCBj b21tYW5kcyBjYW4gYmUgdXNlZCBpbnNpZGUgdGhlIGZvb3Rlci4gU2VlIGFsc28NCiMgc2VjdGlv biAiRG94eWdlbiB1c2FnZSIgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZW5lcmF0ZSB0aGUg ZGVmYXVsdCBmb290ZXINCiMgdGhhdCBEb3h5Z2VuIG5vcm1hbGx5IHVzZXMuDQojIFRoaXMgdGFn IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuDQoNCkhU TUxfRk9PVEVSICAgICAgICAgICAgPQ0KDQojIFRoZSBIVE1MX1NUWUxFU0hFRVQgdGFnIGNhbiBi ZSB1c2VkIHRvIHNwZWNpZnkgYSB1c2VyLWRlZmluZWQgY2FzY2FkaW5nIHN0eWxlDQojIHNoZWV0 IHRoYXQgaXMgdXNlZCBieSBlYWNoIEhUTUwgcGFnZS4gSXQgY2FuIGJlIHVzZWQgdG8gZmluZS10 dW5lIHRoZSBsb29rIG9mDQojIHRoZSBIVE1MIG91dHB1dC4gSWYgbGVmdCBibGFuayBEb3h5Z2Vu IHdpbGwgZ2VuZXJhdGUgYSBkZWZhdWx0IHN0eWxlIHNoZWV0Lg0KIyBTZWUgYWxzbyBzZWN0aW9u ICJEb3h5Z2VuIHVzYWdlIiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZSBz dHlsZQ0KIyBzaGVldCB0aGF0IERveHlnZW4gbm9ybWFsbHkgdXNlcy4NCiMgTm90ZTogSXQgaXMg cmVjb21tZW5kZWQgdG8gdXNlIEhUTUxfRVhUUkFfU1RZTEVTSEVFVCBpbnN0ZWFkIG9mIHRoaXMg dGFnLCBhcw0KIyBpdCBpcyBtb3JlIHJvYnVzdCBhbmQgdGhpcyB0YWcgKEhUTUxfU1RZTEVTSEVF VCkgd2lsbCBpbiB0aGUgZnV0dXJlIGJlY29tZQ0KIyBvYnNvbGV0ZS4NCiMgVGhpcyB0YWcgcmVx dWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4NCg0KSFRNTF9T VFlMRVNIRUVUICAgICAgICA9DQoNCiMgVGhlIEhUTUxfRVhUUkFfU1RZTEVTSEVFVCB0YWcgY2Fu IGJlIHVzZWQgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIHVzZXItZGVmaW5lZA0KIyBjYXNjYWRpbmcg c3R5bGUgc2hlZXRzIHRoYXQgYXJlIGluY2x1ZGVkIGFmdGVyIHRoZSBzdGFuZGFyZCBzdHlsZSBz aGVldHMNCiMgY3JlYXRlZCBieSBEb3h5Z2VuLiBVc2luZyB0aGlzIG9wdGlvbiBvbmUgY2FuIG92 ZXJydWxlIGNlcnRhaW4gc3R5bGUgYXNwZWN0cy4NCiMgVGhpcyBpcyBwcmVmZXJyZWQgb3ZlciB1 c2luZyBIVE1MX1NUWUxFU0hFRVQgc2luY2UgaXQgZG9lcyBub3QgcmVwbGFjZSB0aGUNCiMgc3Rh bmRhcmQgc3R5bGUgc2hlZXQgYW5kIGlzIHRoZXJlZm9yZSBtb3JlIHJvYnVzdCBhZ2FpbnN0IGZ1 dHVyZSB1cGRhdGVzLg0KIyBEb3h5Z2VuIHdpbGwgY29weSB0aGUgc3R5bGUgc2hlZXQgZmlsZXMg dG8gdGhlIG91dHB1dCBkaXJlY3RvcnkuDQojIE5vdGU6IFRoZSBvcmRlciBvZiB0aGUgZXh0cmEg c3R5bGUgc2hlZXQgZmlsZXMgaXMgb2YgaW1wb3J0YW5jZSAoZS5nLiB0aGUgbGFzdA0KIyBzdHls ZSBzaGVldCBpbiB0aGUgbGlzdCBvdmVycnVsZXMgdGhlIHNldHRpbmcgb2YgdGhlIHByZXZpb3Vz IG9uZXMgaW4gdGhlDQojIGxpc3QpLg0KIyBOb3RlOiBTaW5jZSB0aGUgc3R5bGluZyBvZiBzY3Jv bGxiYXJzIGNhbiBjdXJyZW50bHkgbm90IGJlIG92ZXJydWxlZCBpbg0KIyBXZWJraXQvQ2hyb21p dW0sIHRoZSBzdHlsaW5nIHdpbGwgYmUgbGVmdCBvdXQgb2YgdGhlIGRlZmF1bHQgZG94eWdlbi5j c3MgaWYNCiMgb25lIG9yIG1vcmUgZXh0cmEgc3R5bGVzaGVldHMgaGF2ZSBiZWVuIHNwZWNpZmll ZC4gU28gaWYgc2Nyb2xsYmFyDQojIGN1c3RvbWl6YXRpb24gaXMgZGVzaXJlZCBpdCBoYXMgdG8g YmUgYWRkZWQgZXhwbGljaXRseS4gRm9yIGFuIGV4YW1wbGUgc2VlIHRoZQ0KIyBkb2N1bWVudGF0 aW9uLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBz ZXQgdG8gWUVTLg0KDQpIVE1MX0VYVFJBX1NUWUxFU0hFRVQgID0NCg0KIyBUaGUgSFRNTF9FWFRS QV9GSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBleHRyYSBpbWFn ZXMgb3INCiMgb3RoZXIgc291cmNlIGZpbGVzIHdoaWNoIHNob3VsZCBiZSBjb3BpZWQgdG8gdGhl IEhUTUwgb3V0cHV0IGRpcmVjdG9yeS4gTm90ZQ0KIyB0aGF0IHRoZXNlIGZpbGVzIHdpbGwgYmUg Y29waWVkIHRvIHRoZSBiYXNlIEhUTUwgb3V0cHV0IGRpcmVjdG9yeS4gVXNlIHRoZQ0KIyAkcmVs cGF0aF4gbWFya2VyIGluIHRoZSBIVE1MX0hFQURFUiBhbmQvb3IgSFRNTF9GT09URVIgZmlsZXMg dG8gbG9hZCB0aGVzZQ0KIyBmaWxlcy4gSW4gdGhlIEhUTUxfU1RZTEVTSEVFVCBmaWxlLCB1c2Ug dGhlIGZpbGUgbmFtZSBvbmx5LiBBbHNvIG5vdGUgdGhhdCB0aGUNCiMgZmlsZXMgd2lsbCBiZSBj b3BpZWQgYXMtaXM7IHRoZXJlIGFyZSBubyBjb21tYW5kcyBvciBtYXJrZXJzIGF2YWlsYWJsZS4N CiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRv IFlFUy4NCg0KSFRNTF9FWFRSQV9GSUxFUyAgICAgICA9DQoNCiMgVGhlIEhUTUxfQ09MT1JTVFlM RSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBpZiB0aGUgZ2VuZXJhdGVkIEhUTUwgb3V0cHV0 DQojIHNob3VsZCBiZSByZW5kZXJlZCB3aXRoIGEgZGFyayBvciBsaWdodCB0aGVtZS4NCiMgUG9z c2libGUgdmFsdWVzIGFyZTogTElHSFQgYWx3YXlzIGdlbmVyYXRlcyBsaWdodCBtb2RlIG91dHB1 dCwgREFSSyBhbHdheXMNCiMgZ2VuZXJhdGVzIGRhcmsgbW9kZSBvdXRwdXQsIEFVVE9fTElHSFQg YXV0b21hdGljYWxseSBzZXRzIHRoZSBtb2RlIGFjY29yZGluZw0KIyB0byB0aGUgdXNlciBwcmVm ZXJlbmNlLCB1c2VzIGxpZ2h0IG1vZGUgaWYgbm8gcHJlZmVyZW5jZSBpcyBzZXQgKHRoZSBkZWZh dWx0KSwNCiMgQVVUT19EQVJLIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgbW9kZSBhY2NvcmRpbmcg dG8gdGhlIHVzZXIgcHJlZmVyZW5jZSwgdXNlcw0KIyBkYXJrIG1vZGUgaWYgbm8gcHJlZmVyZW5j ZSBpcyBzZXQgYW5kIFRPR0dMRSBhbGxvd3MgYSB1c2VyIHRvIHN3aXRjaCBiZXR3ZWVuDQojIGxp Z2h0IGFuZCBkYXJrIG1vZGUgdmlhIGEgYnV0dG9uLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog QVVUT19MSUdIVC4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hU TUwgaXMgc2V0IHRvIFlFUy4NCg0KSFRNTF9DT0xPUlNUWUxFICAgICAgICA9IEFVVE9fTElHSFQN Cg0KIyBUaGUgSFRNTF9DT0xPUlNUWUxFX0hVRSB0YWcgY29udHJvbHMgdGhlIGNvbG9yIG9mIHRo ZSBIVE1MIG91dHB1dC4gRG94eWdlbg0KIyB3aWxsIGFkanVzdCB0aGUgY29sb3JzIGluIHRoZSBz dHlsZSBzaGVldCBhbmQgYmFja2dyb3VuZCBpbWFnZXMgYWNjb3JkaW5nIHRvDQojIHRoaXMgY29s b3IuIEh1ZSBpcyBzcGVjaWZpZWQgYXMgYW4gYW5nbGUgb24gYSBjb2xvci13aGVlbCwgc2VlDQoj IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4g Rm9yIGluc3RhbmNlIHRoZSB2YWx1ZQ0KIyAwIHJlcHJlc2VudHMgcmVkLCA2MCBpcyB5ZWxsb3cs IDEyMCBpcyBncmVlbiwgMTgwIGlzIGN5YW4sIDI0MCBpcyBibHVlLCAzMDANCiMgcHVycGxlLCBh bmQgMzYwIGlzIHJlZCBhZ2Fpbi4NCiMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTog MzU5LCBkZWZhdWx0IHZhbHVlOiAyMjAuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRh ZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuDQoNCkhUTUxfQ09MT1JTVFlMRV9IVUUgICAg PSAyMjANCg0KIyBUaGUgSFRNTF9DT0xPUlNUWUxFX1NBVCB0YWcgY29udHJvbHMgdGhlIHB1cml0 eSAob3Igc2F0dXJhdGlvbikgb2YgdGhlIGNvbG9ycw0KIyBpbiB0aGUgSFRNTCBvdXRwdXQuIEZv ciBhIHZhbHVlIG9mIDAgdGhlIG91dHB1dCB3aWxsIHVzZSBncmF5LXNjYWxlcyBvbmx5LiBBDQoj IHZhbHVlIG9mIDI1NSB3aWxsIHByb2R1Y2UgdGhlIG1vc3Qgdml2aWQgY29sb3JzLg0KIyBNaW5p bXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAyNTUsIGRlZmF1bHQgdmFsdWU6IDEwMC4NCiMg VGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlF Uy4NCg0KSFRNTF9DT0xPUlNUWUxFX1NBVCAgICA9IDEwMA0KDQojIFRoZSBIVE1MX0NPTE9SU1RZ TEVfR0FNTUEgdGFnIGNvbnRyb2xzIHRoZSBnYW1tYSBjb3JyZWN0aW9uIGFwcGxpZWQgdG8gdGhl DQojIGx1bWluYW5jZSBjb21wb25lbnQgb2YgdGhlIGNvbG9ycyBpbiB0aGUgSFRNTCBvdXRwdXQu IFZhbHVlcyBiZWxvdyAxMDANCiMgZ3JhZHVhbGx5IG1ha2UgdGhlIG91dHB1dCBsaWdodGVyLCB3 aGVyZWFzIHZhbHVlcyBhYm92ZSAxMDAgbWFrZSB0aGUgb3V0cHV0DQojIGRhcmtlci4gVGhlIHZh bHVlIGRpdmlkZWQgYnkgMTAwIGlzIHRoZSBhY3R1YWwgZ2FtbWEgYXBwbGllZCwgc28gODAgcmVw cmVzZW50cw0KIyBhIGdhbW1hIG9mIDAuOCwgVGhlIHZhbHVlIDIyMCByZXByZXNlbnRzIGEgZ2Ft bWEgb2YgMi4yLCBhbmQgMTAwIGRvZXMgbm90DQojIGNoYW5nZSB0aGUgZ2FtbWEuDQojIE1pbmlt dW0gdmFsdWU6IDQwLCBtYXhpbXVtIHZhbHVlOiAyNDAsIGRlZmF1bHQgdmFsdWU6IDgwLg0KIyBU aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVT Lg0KDQpIVE1MX0NPTE9SU1RZTEVfR0FNTUEgID0gODANCg0KIyBJZiB0aGUgSFRNTF9EWU5BTUlD X01FTlVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gdGhlIGdlbmVyYXRlZCBIVE1MDQojIGRvY3Vt ZW50YXRpb24gd2lsbCBjb250YWluIGEgbWFpbiBpbmRleCB3aXRoIHZlcnRpY2FsIG5hdmlnYXRp b24gbWVudXMgdGhhdA0KIyBhcmUgZHluYW1pY2FsbHkgY3JlYXRlZCB2aWEgSmF2YVNjcmlwdC4g SWYgZGlzYWJsZWQsIHRoZSBuYXZpZ2F0aW9uIGluZGV4IHdpbGwNCiMgY29uc2lzdHMgb2YgbXVs dGlwbGUgbGV2ZWxzIG9mIHRhYnMgdGhhdCBhcmUgc3RhdGljYWxseSBlbWJlZGRlZCBpbiBldmVy eSBIVE1MDQojIHBhZ2UuIERpc2FibGUgdGhpcyBvcHRpb24gdG8gc3VwcG9ydCBicm93c2VycyB0 aGF0IGRvIG5vdCBoYXZlIEphdmFTY3JpcHQsDQojIGxpa2UgdGhlIFF0IGhlbHAgYnJvd3Nlci4N CiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0 aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4NCg0KSFRNTF9EWU5BTUlDX01FTlVT ICAgICA9IFlFUw0KDQojIElmIHRoZSBIVE1MX0RZTkFNSUNfU0VDVElPTlMgdGFnIGlzIHNldCB0 byBZRVMgdGhlbiB0aGUgZ2VuZXJhdGVkIEhUTUwNCiMgZG9jdW1lbnRhdGlvbiB3aWxsIGNvbnRh aW4gc2VjdGlvbnMgdGhhdCBjYW4gYmUgaGlkZGVuIGFuZCBzaG93biBhZnRlciB0aGUNCiMgcGFn ZSBoYXMgbG9hZGVkLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQojIFRoaXMgdGFnIHJl cXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuDQoNCkhUTUxf RFlOQU1JQ19TRUNUSU9OUyAgPSBOTw0KDQojIElmIHRoZSBIVE1MX0NPREVfRk9MRElORyB0YWcg aXMgc2V0IHRvIFlFUyB0aGVuIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBjYW4gYmUNCiMgZHluYW1p Y2FsbHkgZm9sZGVkIGFuZCBleHBhbmRlZCBpbiB0aGUgZ2VuZXJhdGVkIEhUTUwgc291cmNlIGNv ZGUuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRo YXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuDQoNCkhUTUxfQ09ERV9GT0xE SU5HICAgICAgPSBZRVMNCg0KIyBJZiB0aGUgSFRNTF9DT1BZX0NMSVBCT0FSRCB0YWcgaXMgc2V0 IHRvIFlFUyB0aGVuIERveHlnZW4gd2lsbCBzaG93IGFuIGljb24gaW4NCiMgdGhlIHRvcCByaWdo dCBjb3JuZXIgb2YgY29kZSBhbmQgdGV4dCBmcmFnbWVudHMgdGhhdCBhbGxvd3MgdGhlIHVzZXIg dG8gY29weQ0KIyBpdHMgY29udGVudCB0byB0aGUgY2xpcGJvYXJkLiBOb3RlIHRoaXMgb25seSB3 b3JrcyBpZiBzdXBwb3J0ZWQgYnkgdGhlIGJyb3dzZXINCiMgYW5kIHRoZSB3ZWIgcGFnZSBpcyBz ZXJ2ZWQgdmlhIGEgc2VjdXJlIGNvbnRleHQgKHNlZToNCiMgaHR0cHM6Ly93d3cudzMub3JnL1RS L3NlY3VyZS1jb250ZXh0cy8pLCBpLmUuIHVzaW5nIHRoZSBodHRwczogb3IgZmlsZToNCiMgcHJv dG9jb2wuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQojIFRoaXMgdGFnIHJlcXVpcmVz IHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuDQoNCkhUTUxfQ09QWV9D TElQQk9BUkQgICAgPSBZRVMNCg0KIyBEb3h5Z2VuIHN0b3JlcyBhIGNvdXBsZSBvZiBzZXR0aW5n cyBwZXJzaXN0ZW50bHkgaW4gdGhlIGJyb3dzZXIgKHZpYSBlLmcuDQojIGNvb2tpZXMpLiBCeSBk ZWZhdWx0IHRoZXNlIHNldHRpbmdzIGFwcGx5IHRvIGFsbCBIVE1MIHBhZ2VzIGdlbmVyYXRlZCBi eQ0KIyBEb3h5Z2VuIGFjcm9zcyBhbGwgcHJvamVjdHMuIFRoZSBIVE1MX1BST0pFQ1RfQ09PS0lF IHRhZyBjYW4gYmUgdXNlZCB0byBzdG9yZQ0KIyB0aGUgc2V0dGluZ3MgdW5kZXIgYSBwcm9qZWN0 IHNwZWNpZmljIGtleSwgc3VjaCB0aGF0IHRoZSB1c2VyIHByZWZlcmVuY2VzIHdpbGwNCiMgYmUg c3RvcmVkIHNlcGFyYXRlbHkuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5F UkFURV9IVE1MIGlzIHNldCB0byBZRVMuDQoNCkhUTUxfUFJPSkVDVF9DT09LSUUgICAgPQ0KDQoj IFdpdGggSFRNTF9JTkRFWF9OVU1fRU5UUklFUyBvbmUgY2FuIGNvbnRyb2wgdGhlIHByZWZlcnJl ZCBudW1iZXIgb2YgZW50cmllcw0KIyBzaG93biBpbiB0aGUgdmFyaW91cyB0cmVlIHN0cnVjdHVy ZWQgaW5kaWNlcyBpbml0aWFsbHk7IHRoZSB1c2VyIGNhbiBleHBhbmQNCiMgYW5kIGNvbGxhcHNl IGVudHJpZXMgZHluYW1pY2FsbHkgbGF0ZXIgb24uIERveHlnZW4gd2lsbCBleHBhbmQgdGhlIHRy ZWUgdG8NCiMgc3VjaCBhIGxldmVsIHRoYXQgYXQgbW9zdCB0aGUgc3BlY2lmaWVkIG51bWJlciBv ZiBlbnRyaWVzIGFyZSB2aXNpYmxlICh1bmxlc3MNCiMgYSBmdWxseSBjb2xsYXBzZWQgdHJlZSBh bHJlYWR5IGV4Y2VlZHMgdGhpcyBhbW91bnQpLiBTbyBzZXR0aW5nIHRoZSBudW1iZXIgb2YNCiMg ZW50cmllcyAxIHdpbGwgcHJvZHVjZSBhIGZ1bGwgY29sbGFwc2VkIHRyZWUgYnkgZGVmYXVsdC4g MCBpcyBhIHNwZWNpYWwgdmFsdWUNCiMgcmVwcmVzZW50aW5nIGFuIGluZmluaXRlIG51bWJlciBv ZiBlbnRyaWVzIGFuZCB3aWxsIHJlc3VsdCBpbiBhIGZ1bGwgZXhwYW5kZWQNCiMgdHJlZSBieSBk ZWZhdWx0Lg0KIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiA5OTk5LCBkZWZhdWx0 IHZhbHVlOiAxMDAuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9I VE1MIGlzIHNldCB0byBZRVMuDQoNCkhUTUxfSU5ERVhfTlVNX0VOVFJJRVMgPSAxMDANCg0KIyBJ ZiB0aGUgR0VORVJBVEVfRE9DU0VUIHRhZyBpcyBzZXQgdG8gWUVTLCBhZGRpdGlvbmFsIGluZGV4 IGZpbGVzIHdpbGwgYmUNCiMgZ2VuZXJhdGVkIHRoYXQgY2FuIGJlIHVzZWQgYXMgaW5wdXQgZm9y IEFwcGxlJ3MgWGNvZGUgMyBpbnRlZ3JhdGVkIGRldmVsb3BtZW50DQojIGVudmlyb25tZW50IChz ZWU6DQojIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS94Y29kZS8pLCBpbnRyb2R1Y2VkIHdp dGggT1NYIDEwLjUgKExlb3BhcmQpLiBUbw0KIyBjcmVhdGUgYSBkb2N1bWVudGF0aW9uIHNldCwg RG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgTWFrZWZpbGUgaW4gdGhlIEhUTUwNCiMgb3V0cHV0IGRp cmVjdG9yeS4gUnVubmluZyBtYWtlIHdpbGwgcHJvZHVjZSB0aGUgZG9jc2V0IGluIHRoYXQgZGly ZWN0b3J5IGFuZA0KIyBydW5uaW5nIG1ha2UgaW5zdGFsbCB3aWxsIGluc3RhbGwgdGhlIGRvY3Nl dCBpbg0KIyB+L0xpYnJhcnkvRGV2ZWxvcGVyL1NoYXJlZC9Eb2N1bWVudGF0aW9uL0RvY1NldHMg c28gdGhhdCBYY29kZSB3aWxsIGZpbmQgaXQgYXQNCiMgc3RhcnR1cC4gU2VlIGh0dHBzOi8vZGV2 ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2FyY2hpdmUvZmVhdHVyZWRhcnRpY2xlcy9Eb3h5DQoj IGdlblhjb2RlL19pbmRleC5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KIyBUaGUgZGVmYXVs dCB2YWx1ZSBpczogTk8uDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFU RV9IVE1MIGlzIHNldCB0byBZRVMuDQoNCkdFTkVSQVRFX0RPQ1NFVCAgICAgICAgPSBOTw0KDQoj IFRoaXMgdGFnIGRldGVybWluZXMgdGhlIG5hbWUgb2YgdGhlIGRvY3NldCBmZWVkLiBBIGRvY3Vt ZW50YXRpb24gZmVlZCBwcm92aWRlcw0KIyBhbiB1bWJyZWxsYSB1bmRlciB3aGljaCBtdWx0aXBs ZSBkb2N1bWVudGF0aW9uIHNldHMgZnJvbSBhIHNpbmdsZSBwcm92aWRlcg0KIyAoc3VjaCBhcyBh IGNvbXBhbnkgb3IgcHJvZHVjdCBzdWl0ZSkgY2FuIGJlIGdyb3VwZWQuDQojIFRoZSBkZWZhdWx0 IHZhbHVlIGlzOiBEb3h5Z2VuIGdlbmVyYXRlZCBkb2NzLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0 aGF0IHRoZSB0YWcgR0VORVJBVEVfRE9DU0VUIGlzIHNldCB0byBZRVMuDQoNCkRPQ1NFVF9GRUVE TkFNRSAgICAgICAgPSAiRG94eWdlbiBnZW5lcmF0ZWQgZG9jcyINCg0KIyBUaGlzIHRhZyBkZXRl cm1pbmVzIHRoZSBVUkwgb2YgdGhlIGRvY3NldCBmZWVkLiBBIGRvY3VtZW50YXRpb24gZmVlZCBw cm92aWRlcw0KIyBhbiB1bWJyZWxsYSB1bmRlciB3aGljaCBtdWx0aXBsZSBkb2N1bWVudGF0aW9u IHNldHMgZnJvbSBhIHNpbmdsZSBwcm92aWRlcg0KIyAoc3VjaCBhcyBhIGNvbXBhbnkgb3IgcHJv ZHVjdCBzdWl0ZSkgY2FuIGJlIGdyb3VwZWQuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl IHRhZyBHRU5FUkFURV9ET0NTRVQgaXMgc2V0IHRvIFlFUy4NCg0KRE9DU0VUX0ZFRURVUkwgICAg ICAgICA9DQoNCiMgVGhpcyB0YWcgc3BlY2lmaWVzIGEgc3RyaW5nIHRoYXQgc2hvdWxkIHVuaXF1 ZWx5IGlkZW50aWZ5IHRoZSBkb2N1bWVudGF0aW9uDQojIHNldCBidW5kbGUuIFRoaXMgc2hvdWxk IGJlIGEgcmV2ZXJzZSBkb21haW4tbmFtZSBzdHlsZSBzdHJpbmcsIGUuZy4NCiMgY29tLm15Y29t cGFueS5NeURvY1NldC4gRG94eWdlbiB3aWxsIGFwcGVuZCAuZG9jc2V0IHRvIHRoZSBuYW1lLg0K IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogb3JnLmRveHlnZW4uUHJvamVjdC4NCiMgVGhpcyB0YWcg cmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLg0KDQpE T0NTRVRfQlVORExFX0lEICAgICAgID0gb3JnLmRveHlnZW4uUHJvamVjdA0KDQojIFRoZSBET0NT RVRfUFVCTElTSEVSX0lEIHRhZyBzcGVjaWZpZXMgYSBzdHJpbmcgdGhhdCBzaG91bGQgdW5pcXVl bHkgaWRlbnRpZnkNCiMgdGhlIGRvY3VtZW50YXRpb24gcHVibGlzaGVyLiBUaGlzIHNob3VsZCBi ZSBhIHJldmVyc2UgZG9tYWluLW5hbWUgc3R5bGUNCiMgc3RyaW5nLCBlLmcuIGNvbS5teWNvbXBh bnkuTXlEb2NTZXQuZG9jdW1lbnRhdGlvbi4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IG9yZy5k b3h5Z2VuLlB1Ymxpc2hlci4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVS QVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLg0KDQpET0NTRVRfUFVCTElTSEVSX0lEICAgID0gb3Jn LmRveHlnZW4uUHVibGlzaGVyDQoNCiMgVGhlIERPQ1NFVF9QVUJMSVNIRVJfTkFNRSB0YWcgaWRl bnRpZmllcyB0aGUgZG9jdW1lbnRhdGlvbiBwdWJsaXNoZXIuDQojIFRoZSBkZWZhdWx0IHZhbHVl IGlzOiBQdWJsaXNoZXIuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFU RV9ET0NTRVQgaXMgc2V0IHRvIFlFUy4NCg0KRE9DU0VUX1BVQkxJU0hFUl9OQU1FICA9IFB1Ymxp c2hlcg0KDQojIElmIHRoZSBHRU5FUkFURV9IVE1MSEVMUCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVu IERveHlnZW4gZ2VuZXJhdGVzIHRocmVlDQojIGFkZGl0aW9uYWwgSFRNTCBpbmRleCBmaWxlczog aW5kZXguaGhwLCBpbmRleC5oaGMsIGFuZCBpbmRleC5oaGsuIFRoZQ0KIyBpbmRleC5oaHAgaXMg YSBwcm9qZWN0IGZpbGUgdGhhdCBjYW4gYmUgcmVhZCBieSBNaWNyb3NvZnQncyBIVE1MIEhlbHAg V29ya3Nob3ANCiMgb24gV2luZG93cy4gSW4gdGhlIGJlZ2lubmluZyBvZiAyMDIxIE1pY3Jvc29m dCB0b29rIHRoZSBvcmlnaW5hbCBwYWdlLCB3aXRoDQojIGEuby4gdGhlIGRvd25sb2FkIGxpbmtz LCBvZmZsaW5lIHRoZSBIVE1MIGhlbHAgd29ya3Nob3Agd2FzIGFscmVhZHkgbWFueSB5ZWFycw0K IyBpbiBtYWludGVuYW5jZSBtb2RlKS4gWW91IGNhbiBkb3dubG9hZCB0aGUgSFRNTCBoZWxwIHdv cmtzaG9wIGZyb20gdGhlIHdlYg0KIyBhcmNoaXZlcyBhdCBJbnN0YWxsYXRpb24gZXhlY3V0YWJs ZSAoc2VlOg0KIyBodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE2MDIwMTA2MzI1NS9odHRw Oi8vZG93bmxvYWQubWljcm9zb2Z0LmNvbS9kb3dubG8NCiMgYWQvMC9BLzkvMEE5MzlFRjYtRTMx Qy00MzBGLUEzREYtREZBRTc5NjBENTY0L2h0bWxoZWxwLmV4ZSkuDQojDQojIFRoZSBIVE1MIEhl bHAgV29ya3Nob3AgY29udGFpbnMgYSBjb21waWxlciB0aGF0IGNhbiBjb252ZXJ0IGFsbCBIVE1M IG91dHB1dA0KIyBnZW5lcmF0ZWQgYnkgRG94eWdlbiBpbnRvIGEgc2luZ2xlIGNvbXBpbGVkIEhU TUwgZmlsZSAoLmNobSkuIENvbXBpbGVkIEhUTUwNCiMgZmlsZXMgYXJlIG5vdyB1c2VkIGFzIHRo ZSBXaW5kb3dzIDk4IGhlbHAgZm9ybWF0LCBhbmQgd2lsbCByZXBsYWNlIHRoZSBvbGQNCiMgV2lu ZG93cyBoZWxwIGZvcm1hdCAoLmhscCkgb24gYWxsIFdpbmRvd3MgcGxhdGZvcm1zIGluIHRoZSBm dXR1cmUuIENvbXByZXNzZWQNCiMgSFRNTCBmaWxlcyBhbHNvIGNvbnRhaW4gYW4gaW5kZXgsIGEg dGFibGUgb2YgY29udGVudHMsIGFuZCB5b3UgY2FuIHNlYXJjaCBmb3INCiMgd29yZHMgaW4gdGhl IGRvY3VtZW50YXRpb24uIFRoZSBIVE1MIHdvcmtzaG9wIGFsc28gY29udGFpbnMgYSB2aWV3ZXIg Zm9yDQojIGNvbXByZXNzZWQgSFRNTCBmaWxlcy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5P Lg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQg dG8gWUVTLg0KDQpHRU5FUkFURV9IVE1MSEVMUCAgICAgID0gTk8NCg0KIyBUaGUgQ0hNX0ZJTEUg dGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGZpbGUgbmFtZSBvZiB0aGUgcmVzdWx0aW5n IC5jaG0NCiMgZmlsZS4gWW91IGNhbiBhZGQgYSBwYXRoIGluIGZyb250IG9mIHRoZSBmaWxlIGlm IHRoZSByZXN1bHQgc2hvdWxkIG5vdCBiZQ0KIyB3cml0dGVuIHRvIHRoZSBodG1sIG91dHB1dCBk aXJlY3RvcnkuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1M SEVMUCBpcyBzZXQgdG8gWUVTLg0KDQpDSE1fRklMRSAgICAgICAgICAgICAgID0NCg0KIyBUaGUg SEhDX0xPQ0FUSU9OIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiAoYWJz b2x1dGUgcGF0aA0KIyBpbmNsdWRpbmcgZmlsZSBuYW1lKSBvZiB0aGUgSFRNTCBoZWxwIGNvbXBp bGVyIChoaGMuZXhlKS4gSWYgbm9uLWVtcHR5LA0KIyBEb3h5Z2VuIHdpbGwgdHJ5IHRvIHJ1biB0 aGUgSFRNTCBoZWxwIGNvbXBpbGVyIG9uIHRoZSBnZW5lcmF0ZWQgaW5kZXguaGhwLg0KIyBUaGUg ZmlsZSBoYXMgdG8gYmUgc3BlY2lmaWVkIHdpdGggZnVsbCBwYXRoLg0KIyBUaGlzIHRhZyByZXF1 aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4NCg0KSEhD X0xPQ0FUSU9OICAgICAgICAgICA9DQoNCiMgVGhlIEdFTkVSQVRFX0NISSBmbGFnIGNvbnRyb2xz IGlmIGEgc2VwYXJhdGUgLmNoaSBpbmRleCBmaWxlIGlzIGdlbmVyYXRlZA0KIyAoWUVTKSBvciB0 aGF0IGl0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbWFpbiAuY2htIGZpbGUgKE5PKS4NCiMg VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0 YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4NCg0KR0VORVJBVEVfQ0hJICAgICAg ICAgICA9IE5PDQoNCiMgVGhlIENITV9JTkRFWF9FTkNPRElORyBpcyB1c2VkIHRvIGVuY29kZSBI dG1sSGVscCBpbmRleCAoaGhrKSwgY29udGVudCAoaGhjKQ0KIyBhbmQgcHJvamVjdCBmaWxlIGNv bnRlbnQuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MSEVM UCBpcyBzZXQgdG8gWUVTLg0KDQpDSE1fSU5ERVhfRU5DT0RJTkcgICAgID0NCg0KIyBUaGUgQklO QVJZX1RPQyBmbGFnIGNvbnRyb2xzIHdoZXRoZXIgYSBiaW5hcnkgdGFibGUgb2YgY29udGVudHMg aXMgZ2VuZXJhdGVkDQojIChZRVMpIG9yIGEgbm9ybWFsIHRhYmxlIG9mIGNvbnRlbnRzIChOTykg aW4gdGhlIC5jaG0gZmlsZS4gRnVydGhlcm1vcmUgaXQNCiMgZW5hYmxlcyB0aGUgUHJldmlvdXMg YW5kIE5leHQgYnV0dG9ucy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRh ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4N Cg0KQklOQVJZX1RPQyAgICAgICAgICAgICA9IE5PDQoNCiMgVGhlIFRPQ19FWFBBTkQgZmxhZyBj YW4gYmUgc2V0IHRvIFlFUyB0byBhZGQgZXh0cmEgaXRlbXMgZm9yIGdyb3VwIG1lbWJlcnMgdG8N CiMgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIG9mIHRoZSBIVE1MIGhlbHAgZG9jdW1lbnRhdGlvbiBh bmQgdG8gdGhlIHRyZWUgdmlldy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlz IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlF Uy4NCg0KVE9DX0VYUEFORCAgICAgICAgICAgICA9IE5PDQoNCiMgVGhlIFNJVEVNQVBfVVJMIHRh ZyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGZ1bGwgVVJMIG9mIHRoZSBwbGFjZSB3aGVyZSB0aGUN CiMgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gd2lsbCBiZSBwbGFjZWQgb24gdGhlIHNlcnZlciBi eSB0aGUgdXNlciBkdXJpbmcgdGhlDQojIGRlcGxveW1lbnQgb2YgdGhlIGRvY3VtZW50YXRpb24u IFRoZSBnZW5lcmF0ZWQgc2l0ZW1hcCBpcyBjYWxsZWQgc2l0ZW1hcC54bWwNCiMgYW5kIHBsYWNl ZCBvbiB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBieSBIVE1MX09VVFBVVC4gSW4gY2FzZSBubyBT SVRFTUFQX1VSTA0KIyBpcyBzcGVjaWZpZWQgbm8gc2l0ZW1hcCBpcyBnZW5lcmF0ZWQuIEZvciBp bmZvcm1hdGlvbiBhYm91dCB0aGUgc2l0ZW1hcA0KIyBwcm90b2NvbCBzZWUgaHR0cHM6Ly93d3cu c2l0ZW1hcHMub3JnDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9I VE1MIGlzIHNldCB0byBZRVMuDQoNClNJVEVNQVBfVVJMICAgICAgICAgICAgPQ0KDQojIElmIHRo ZSBHRU5FUkFURV9RSFAgdGFnIGlzIHNldCB0byBZRVMgYW5kIGJvdGggUUhQX05BTUVTUEFDRSBh bmQNCiMgUUhQX1ZJUlRVQUxfRk9MREVSIGFyZSBzZXQsIGFuIGFkZGl0aW9uYWwgaW5kZXggZmls ZSB3aWxsIGJlIGdlbmVyYXRlZCB0aGF0DQojIGNhbiBiZSB1c2VkIGFzIGlucHV0IGZvciBRdCdz IHFoZWxwZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIGEgUXQgQ29tcHJlc3NlZCBIZWxwDQojICgucWNo KSBvZiB0aGUgZ2VuZXJhdGVkIEhUTUwgZG9jdW1lbnRhdGlvbi4NCiMgVGhlIGRlZmF1bHQgdmFs dWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRN TCBpcyBzZXQgdG8gWUVTLg0KDQpHRU5FUkFURV9RSFAgICAgICAgICAgID0gTk8NCg0KIyBJZiB0 aGUgUUhHX0xPQ0FUSU9OIHRhZyBpcyBzcGVjaWZpZWQsIHRoZSBRQ0hfRklMRSB0YWcgY2FuIGJl IHVzZWQgdG8gc3BlY2lmeQ0KIyB0aGUgZmlsZSBuYW1lIG9mIHRoZSByZXN1bHRpbmcgLnFjaCBm aWxlLiBUaGUgcGF0aCBzcGVjaWZpZWQgaXMgcmVsYXRpdmUgdG8NCiMgdGhlIEhUTUwgb3V0cHV0 IGZvbGRlci4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBp cyBzZXQgdG8gWUVTLg0KDQpRQ0hfRklMRSAgICAgICAgICAgICAgID0NCg0KIyBUaGUgUUhQX05B TUVTUEFDRSB0YWcgc3BlY2lmaWVzIHRoZSBuYW1lc3BhY2UgdG8gdXNlIHdoZW4gZ2VuZXJhdGlu ZyBRdCBIZWxwDQojIFByb2plY3Qgb3V0cHV0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ug c2VlIFF0IEhlbHAgUHJvamVjdCAvIE5hbWVzcGFjZQ0KIyAoc2VlOg0KIyBodHRwczovL2RvYy5x dC5pby9hcmNoaXZlcy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI25hbWVzcGFjZSkuDQojIFRo ZSBkZWZhdWx0IHZhbHVlIGlzOiBvcmcuZG94eWdlbi5Qcm9qZWN0Lg0KIyBUaGlzIHRhZyByZXF1 aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuDQoNClFIUF9OQU1F U1BBQ0UgICAgICAgICAgPSBvcmcuZG94eWdlbi5Qcm9qZWN0DQoNCiMgVGhlIFFIUF9WSVJUVUFM X0ZPTERFUiB0YWcgc3BlY2lmaWVzIHRoZSBuYW1lc3BhY2UgdG8gdXNlIHdoZW4gZ2VuZXJhdGlu ZyBRdA0KIyBIZWxwIFByb2plY3Qgb3V0cHV0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ug c2VlIFF0IEhlbHAgUHJvamVjdCAvIFZpcnR1YWwNCiMgRm9sZGVycyAoc2VlOg0KIyBodHRwczov L2RvYy5xdC5pby9hcmNoaXZlcy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI3ZpcnR1YWwtZm9s ZGVycykuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBkb2MuDQojIFRoaXMgdGFnIHJlcXVpcmVz IHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4NCg0KUUhQX1ZJUlRVQUxf Rk9MREVSICAgICA9IGRvYw0KDQojIElmIHRoZSBRSFBfQ1VTVF9GSUxURVJfTkFNRSB0YWcgaXMg c2V0LCBpdCBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgYSBjdXN0b20NCiMgZmlsdGVyIHRvIGFkZC4g Rm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBRdCBIZWxwIFByb2plY3QgLyBDdXN0b20N CiMgRmlsdGVycyAoc2VlOg0KIyBodHRwczovL2RvYy5xdC5pby9hcmNoaXZlcy9xdC00LjgvcXRo ZWxwcHJvamVjdC5odG1sI2N1c3RvbS1maWx0ZXJzKS4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh dCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8gWUVTLg0KDQpRSFBfQ1VTVF9GSUxURVJf TkFNRSAgID0NCg0KIyBUaGUgUUhQX0NVU1RfRklMVEVSX0FUVFJTIHRhZyBzcGVjaWZpZXMgdGhl IGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlDQojIGN1c3RvbSBmaWx0ZXIgdG8gYWRkLiBG b3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIFF0IEhlbHAgUHJvamVjdCAvIEN1c3RvbQ0K IyBGaWx0ZXJzIChzZWU6DQojIGh0dHBzOi8vZG9jLnF0LmlvL2FyY2hpdmVzL3F0LTQuOC9xdGhl bHBwcm9qZWN0Lmh0bWwjY3VzdG9tLWZpbHRlcnMpLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0 IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuDQoNClFIUF9DVVNUX0ZJTFRFUl9B VFRSUyAgPQ0KDQojIFRoZSBRSFBfU0VDVF9GSUxURVJfQVRUUlMgdGFnIHNwZWNpZmllcyB0aGUg bGlzdCBvZiB0aGUgYXR0cmlidXRlcyB0aGlzDQojIHByb2plY3QncyBmaWx0ZXIgc2VjdGlvbiBt YXRjaGVzLiBRdCBIZWxwIFByb2plY3QgLyBGaWx0ZXIgQXR0cmlidXRlcyAoc2VlOg0KIyBodHRw czovL2RvYy5xdC5pby9hcmNoaXZlcy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI2ZpbHRlci1h dHRyaWJ1dGVzKS4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FI UCBpcyBzZXQgdG8gWUVTLg0KDQpRSFBfU0VDVF9GSUxURVJfQVRUUlMgID0NCg0KIyBUaGUgUUhH X0xPQ0FUSU9OIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiAoYWJzb2x1 dGUgcGF0aA0KIyBpbmNsdWRpbmcgZmlsZSBuYW1lKSBvZiBRdCdzIHFoZWxwZ2VuZXJhdG9yLiBJ ZiBub24tZW1wdHkgRG94eWdlbiB3aWxsIHRyeSB0bw0KIyBydW4gcWhlbHBnZW5lcmF0b3Igb24g dGhlIGdlbmVyYXRlZCAucWhwIGZpbGUuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRh ZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4NCg0KUUhHX0xPQ0FUSU9OICAgICAgICAgICA9 DQoNCiMgSWYgdGhlIEdFTkVSQVRFX0VDTElQU0VIRUxQIHRhZyBpcyBzZXQgdG8gWUVTLCBhZGRp dGlvbmFsIGluZGV4IGZpbGVzIHdpbGwgYmUNCiMgZ2VuZXJhdGVkLCB0b2dldGhlciB3aXRoIHRo ZSBIVE1MIGZpbGVzLCB0aGV5IGZvcm0gYW4gRWNsaXBzZSBoZWxwIHBsdWdpbi4gVG8NCiMgaW5z dGFsbCB0aGlzIHBsdWdpbiBhbmQgbWFrZSBpdCBhdmFpbGFibGUgdW5kZXIgdGhlIGhlbHAgY29u dGVudHMgbWVudSBpbg0KIyBFY2xpcHNlLCB0aGUgY29udGVudHMgb2YgdGhlIGRpcmVjdG9yeSBj b250YWluaW5nIHRoZSBIVE1MIGFuZCBYTUwgZmlsZXMgbmVlZHMNCiMgdG8gYmUgY29waWVkIGlu dG8gdGhlIHBsdWdpbnMgZGlyZWN0b3J5IG9mIGVjbGlwc2UuIFRoZSBuYW1lIG9mIHRoZSBkaXJl Y3RvcnkNCiMgd2l0aGluIHRoZSBwbHVnaW5zIGRpcmVjdG9yeSBzaG91bGQgYmUgdGhlIHNhbWUg YXMgdGhlIEVDTElQU0VfRE9DX0lEIHZhbHVlLg0KIyBBZnRlciBjb3B5aW5nIEVjbGlwc2UgbmVl ZHMgdG8gYmUgcmVzdGFydGVkIGJlZm9yZSB0aGUgaGVscCBhcHBlYXJzLg0KIyBUaGUgZGVmYXVs dCB2YWx1ZSBpczogTk8uDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFU RV9IVE1MIGlzIHNldCB0byBZRVMuDQoNCkdFTkVSQVRFX0VDTElQU0VIRUxQICAgPSBOTw0KDQoj IEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBFY2xpcHNlIGhlbHAgcGx1Z2luLiBXaGVuIGlu c3RhbGxpbmcgdGhlIHBsdWdpbg0KIyB0aGUgZGlyZWN0b3J5IG5hbWUgY29udGFpbmluZyB0aGUg SFRNTCBhbmQgWE1MIGZpbGVzIHNob3VsZCBhbHNvIGhhdmUgdGhpcw0KIyBuYW1lLiBFYWNoIGRv Y3VtZW50YXRpb24gc2V0IHNob3VsZCBoYXZlIGl0cyBvd24gaWRlbnRpZmllci4NCiMgVGhlIGRl ZmF1bHQgdmFsdWUgaXM6IG9yZy5kb3h5Z2VuLlByb2plY3QuDQojIFRoaXMgdGFnIHJlcXVpcmVz IHRoYXQgdGhlIHRhZyBHRU5FUkFURV9FQ0xJUFNFSEVMUCBpcyBzZXQgdG8gWUVTLg0KDQpFQ0xJ UFNFX0RPQ19JRCAgICAgICAgID0gb3JnLmRveHlnZW4uUHJvamVjdA0KDQojIElmIHlvdSB3YW50 IGZ1bGwgY29udHJvbCBvdmVyIHRoZSBsYXlvdXQgb2YgdGhlIGdlbmVyYXRlZCBIVE1MIHBhZ2Vz IGl0IG1pZ2h0DQojIGJlIG5lY2Vzc2FyeSB0byBkaXNhYmxlIHRoZSBpbmRleCBhbmQgcmVwbGFj ZSBpdCB3aXRoIHlvdXIgb3duLiBUaGUNCiMgRElTQUJMRV9JTkRFWCB0YWcgY2FuIGJlIHVzZWQg dG8gdHVybiBvbi9vZmYgdGhlIGNvbmRlbnNlZCBpbmRleCAodGFicykgYXQgdG9wDQojIG9mIGVh Y2ggSFRNTCBwYWdlLiBBIHZhbHVlIG9mIE5PIGVuYWJsZXMgdGhlIGluZGV4IGFuZCB0aGUgdmFs dWUgWUVTIGRpc2FibGVzDQojIGl0LiBTaW5jZSB0aGUgdGFicyBpbiB0aGUgaW5kZXggY29udGFp biB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcyB0aGUgbmF2aWdhdGlvbg0KIyB0cmVlLCB5b3UgY2Fu IHNldCB0aGlzIG9wdGlvbiB0byBZRVMgaWYgeW91IGFsc28gc2V0IEdFTkVSQVRFX1RSRUVWSUVX IHRvIFlFUy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJl cyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLg0KDQpESVNBQkxFX0lO REVYICAgICAgICAgID0gTk8NCg0KIyBUaGUgR0VORVJBVEVfVFJFRVZJRVcgdGFnIGlzIHVzZWQg dG8gc3BlY2lmeSB3aGV0aGVyIGEgdHJlZS1saWtlIGluZGV4DQojIHN0cnVjdHVyZSBzaG91bGQg YmUgZ2VuZXJhdGVkIHRvIGRpc3BsYXkgaGllcmFyY2hpY2FsIGluZm9ybWF0aW9uLiBJZiB0aGUg dGFnDQojIHZhbHVlIGlzIHNldCB0byBZRVMsIGEgc2lkZSBwYW5lbCB3aWxsIGJlIGdlbmVyYXRl ZCBjb250YWluaW5nIGEgdHJlZS1saWtlDQojIGluZGV4IHN0cnVjdHVyZSAoanVzdCBsaWtlIHRo ZSBvbmUgdGhhdCBpcyBnZW5lcmF0ZWQgZm9yIEhUTUwgSGVscCkuIEZvciB0aGlzDQojIHRvIHdv cmsgYSBicm93c2VyIHRoYXQgc3VwcG9ydHMgSmF2YVNjcmlwdCwgREhUTUwsIENTUyBhbmQgZnJh bWVzIGlzIHJlcXVpcmVkDQojIChpLmUuIGFueSBtb2Rlcm4gYnJvd3NlcikuIFdpbmRvd3MgdXNl cnMgYXJlIHByb2JhYmx5IGJldHRlciBvZmYgdXNpbmcgdGhlDQojIEhUTUwgaGVscCBmZWF0dXJl LiBWaWEgY3VzdG9tIHN0eWxlIHNoZWV0cyAoc2VlIEhUTUxfRVhUUkFfU1RZTEVTSEVFVCkgb25l IGNhbg0KIyBmdXJ0aGVyIGZpbmUgdHVuZSB0aGUgbG9vayBvZiB0aGUgaW5kZXggKHNlZSAiRmlu ZS10dW5pbmcgdGhlIG91dHB1dCIpLiBBcyBhbg0KIyBleGFtcGxlLCB0aGUgZGVmYXVsdCBzdHls ZSBzaGVldCBnZW5lcmF0ZWQgYnkgRG94eWdlbiBoYXMgYW4gZXhhbXBsZSB0aGF0DQojIHNob3dz IGhvdyB0byBwdXQgYW4gaW1hZ2UgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgaW5zdGVhZCBvZiB0 aGUgUFJPSkVDVF9OQU1FLg0KIyBTaW5jZSB0aGUgdHJlZSBiYXNpY2FsbHkgaGFzIHRoZSBzYW1l IGluZm9ybWF0aW9uIGFzIHRoZSB0YWIgaW5kZXgsIHlvdSBjb3VsZA0KIyBjb25zaWRlciBzZXR0 aW5nIERJU0FCTEVfSU5ERVggdG8gWUVTIHdoZW4gZW5hYmxpbmcgdGhpcyBvcHRpb24uDQojIFRo ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn IEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4NCg0KR0VORVJBVEVfVFJFRVZJRVcgICAgICA9 IE5PDQoNCiMgV2hlbiBib3RoIEdFTkVSQVRFX1RSRUVWSUVXIGFuZCBESVNBQkxFX0lOREVYIGFy ZSBzZXQgdG8gWUVTLCB0aGVuIHRoZQ0KIyBGVUxMX1NJREVCQVIgb3B0aW9uIGRldGVybWluZXMg aWYgdGhlIHNpZGUgYmFyIGlzIGxpbWl0ZWQgdG8gb25seSB0aGUgdHJlZXZpZXcNCiMgYXJlYSAo dmFsdWUgTk8pIG9yIGlmIGl0IHNob3VsZCBleHRlbmQgdG8gdGhlIGZ1bGwgaGVpZ2h0IG9mIHRo ZSB3aW5kb3cgKHZhbHVlDQojIFlFUykuIFNldHRpbmcgdGhpcyB0byBZRVMgZ2l2ZXMgYSBsYXlv dXQgc2ltaWxhciB0bw0KIyBodHRwczovL2RvY3MucmVhZHRoZWRvY3MuaW8gd2l0aCBtb3JlIHJv b20gZm9yIGNvbnRlbnRzLCBidXQgbGVzcyByb29tIGZvciB0aGUNCiMgcHJvamVjdCBsb2dvLCB0 aXRsZSwgYW5kIGRlc2NyaXB0aW9uLiBJZiBlaXRoZXIgR0VORVJBVEVfVFJFRVZJRVcgb3INCiMg RElTQUJMRV9JTkRFWCBpcyBzZXQgdG8gTk8sIHRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QuDQoj IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg dGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4NCg0KRlVMTF9TSURFQkFSICAgICAgICAg ICA9IE5PDQoNCiMgVGhlIEVOVU1fVkFMVUVTX1BFUl9MSU5FIHRhZyBjYW4gYmUgdXNlZCB0byBz ZXQgdGhlIG51bWJlciBvZiBlbnVtIHZhbHVlcyB0aGF0DQojIERveHlnZW4gd2lsbCBncm91cCBv biBvbmUgbGluZSBpbiB0aGUgZ2VuZXJhdGVkIEhUTUwgZG9jdW1lbnRhdGlvbi4NCiMNCiMgTm90 ZSB0aGF0IGEgdmFsdWUgb2YgMCB3aWxsIGNvbXBsZXRlbHkgc3VwcHJlc3MgdGhlIGVudW0gdmFs dWVzIGZyb20gYXBwZWFyaW5nDQojIGluIHRoZSBvdmVydmlldyBzZWN0aW9uLg0KIyBNaW5pbXVt IHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAyMCwgZGVmYXVsdCB2YWx1ZTogNC4NCiMgVGhpcyB0 YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4NCg0K RU5VTV9WQUxVRVNfUEVSX0xJTkUgICA9IDQNCg0KIyBXaGVuIHRoZSBTSE9XX0VOVU1fVkFMVUVT IHRhZyBpcyBzZXQgZG94eWdlbiB3aWxsIHNob3cgdGhlIHNwZWNpZmllZA0KIyBlbnVtZXJhdGlv biB2YWx1ZXMgYmVzaWRlcyB0aGUgZW51bWVyYXRpb24gbW5lbW9uaWNzLg0KIyBUaGUgZGVmYXVs dCB2YWx1ZSBpczogTk8uDQoNClNIT1dfRU5VTV9WQUxVRVMgICAgICAgPSBOTw0KDQojIElmIHRo ZSB0cmVldmlldyBpcyBlbmFibGVkIChzZWUgR0VORVJBVEVfVFJFRVZJRVcpIHRoZW4gdGhpcyB0 YWcgY2FuIGJlIHVzZWQNCiMgdG8gc2V0IHRoZSBpbml0aWFsIHdpZHRoIChpbiBwaXhlbHMpIG9m IHRoZSBmcmFtZSBpbiB3aGljaCB0aGUgdHJlZSBpcyBzaG93bi4NCiMgTWluaW11bSB2YWx1ZTog MCwgbWF4aW11bSB2YWx1ZTogMTUwMCwgZGVmYXVsdCB2YWx1ZTogMjUwLg0KIyBUaGlzIHRhZyBy ZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLg0KDQpUUkVF VklFV19XSURUSCAgICAgICAgID0gMjUwDQoNCiMgSWYgdGhlIEVYVF9MSU5LU19JTl9XSU5ET1cg b3B0aW9uIGlzIHNldCB0byBZRVMsIERveHlnZW4gd2lsbCBvcGVuIGxpbmtzIHRvDQojIGV4dGVy bmFsIHN5bWJvbHMgaW1wb3J0ZWQgdmlhIHRhZyBmaWxlcyBpbiBhIHNlcGFyYXRlIHdpbmRvdy4N CiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRo ZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLg0KDQpFWFRfTElOS1NfSU5fV0lORE9X ICAgID0gTk8NCg0KIyBJZiB0aGUgT0JGVVNDQVRFX0VNQUlMUyB0YWcgaXMgc2V0IHRvIFlFUywg RG94eWdlbiB3aWxsIG9iZnVzY2F0ZSBlbWFpbA0KIyBhZGRyZXNzZXMuDQojIFRoZSBkZWZhdWx0 IHZhbHVlIGlzOiBZRVMuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFU RV9IVE1MIGlzIHNldCB0byBZRVMuDQoNCk9CRlVTQ0FURV9FTUFJTFMgICAgICAgPSBZRVMNCg0K IyBJZiB0aGUgSFRNTF9GT1JNVUxBX0ZPUk1BVCBvcHRpb24gaXMgc2V0IHRvIHN2ZywgRG94eWdl biB3aWxsIHVzZSB0aGUgcGRmMnN2Zw0KIyB0b29sIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Rh d2JhcnRvbi9wZGYyc3ZnKSBvciBpbmtzY2FwZSAoc2VlDQojIGh0dHBzOi8vaW5rc2NhcGUub3Jn KSB0byBnZW5lcmF0ZSBmb3JtdWxhcyBhcyBTVkcgaW1hZ2VzIGluc3RlYWQgb2YgUE5HcyBmb3IN CiMgdGhlIEhUTUwgb3V0cHV0LiBUaGVzZSBpbWFnZXMgd2lsbCBnZW5lcmFsbHkgbG9vayBuaWNl ciBhdCBzY2FsZWQgcmVzb2x1dGlvbnMuDQojIFBvc3NpYmxlIHZhbHVlcyBhcmU6IHBuZyAodGhl IGRlZmF1bHQpIGFuZCBzdmcgKGxvb2tzIG5pY2VyIGJ1dCByZXF1aXJlcyB0aGUNCiMgcGRmMnN2 ZyBvciBpbmtzY2FwZSB0b29sKS4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IHBuZy4NCiMgVGhp cyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4N Cg0KSFRNTF9GT1JNVUxBX0ZPUk1BVCAgICA9IHBuZw0KDQojIFVzZSB0aGlzIHRhZyB0byBjaGFu Z2UgdGhlIGZvbnQgc2l6ZSBvZiBMYVRlWCBmb3JtdWxhcyBpbmNsdWRlZCBhcyBpbWFnZXMgaW4N CiMgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbi4gV2hlbiB5b3UgY2hhbmdlIHRoZSBmb250IHNpemUg YWZ0ZXIgYSBzdWNjZXNzZnVsDQojIERveHlnZW4gcnVuIHlvdSBuZWVkIHRvIG1hbnVhbGx5IHJl bW92ZSBhbnkgZm9ybV8qLnBuZyBpbWFnZXMgZnJvbSB0aGUgSFRNTA0KIyBvdXRwdXQgZGlyZWN0 b3J5IHRvIGZvcmNlIHRoZW0gdG8gYmUgcmVnZW5lcmF0ZWQuDQojIE1pbmltdW0gdmFsdWU6IDgs IG1heGltdW0gdmFsdWU6IDUwLCBkZWZhdWx0IHZhbHVlOiAxMC4NCiMgVGhpcyB0YWcgcmVxdWly ZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4NCg0KRk9STVVMQV9G T05UU0laRSAgICAgICA9IDEwDQoNCiMgVGhlIEZPUk1VTEFfTUFDUk9GSUxFIGNhbiBjb250YWlu IExhVGVYIFxuZXdjb21tYW5kIGFuZCBccmVuZXdjb21tYW5kIGNvbW1hbmRzDQojIHRvIGNyZWF0 ZSBuZXcgTGFUZVggY29tbWFuZHMgdG8gYmUgdXNlZCBpbiBmb3JtdWxhcyBhcyBidWlsZGluZyBi bG9ja3MuIFNlZQ0KIyB0aGUgc2VjdGlvbiAiSW5jbHVkaW5nIGZvcm11bGFzIiBmb3IgZGV0YWls cy4NCg0KRk9STVVMQV9NQUNST0ZJTEUgICAgICA9DQoNCiMgRW5hYmxlIHRoZSBVU0VfTUFUSEpB WCBvcHRpb24gdG8gcmVuZGVyIExhVGVYIGZvcm11bGFzIHVzaW5nIE1hdGhKYXggKHNlZQ0KIyBo dHRwczovL3d3dy5tYXRoamF4Lm9yZykgd2hpY2ggdXNlcyBjbGllbnQgc2lkZSBKYXZhU2NyaXB0 IGZvciB0aGUgcmVuZGVyaW5nDQojIGluc3RlYWQgb2YgdXNpbmcgcHJlLXJlbmRlcmVkIGJpdG1h cHMuIFVzZSB0aGlzIGlmIHlvdSBkbyBub3QgaGF2ZSBMYVRlWA0KIyBpbnN0YWxsZWQgb3IgaWYg eW91IHdhbnQgdG8gZm9ybXVsYXMgbG9vayBwcmV0dGllciBpbiB0aGUgSFRNTCBvdXRwdXQuIFdo ZW4NCiMgZW5hYmxlZCB5b3UgbWF5IGFsc28gbmVlZCB0byBpbnN0YWxsIE1hdGhKYXggc2VwYXJh dGVseSBhbmQgY29uZmlndXJlIHRoZSBwYXRoDQojIHRvIGl0IHVzaW5nIHRoZSBNQVRISkFYX1JF TFBBVEggb3B0aW9uLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQojIFRoaXMgdGFnIHJl cXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuDQoNClVTRV9N QVRISkFYICAgICAgICAgICAgPSBOTw0KDQojIFdpdGggTUFUSEpBWF9WRVJTSU9OIGl0IGlzIHBv c3NpYmxlIHRvIHNwZWNpZnkgdGhlIE1hdGhKYXggdmVyc2lvbiB0byBiZSB1c2VkLg0KIyBOb3Rl IHRoYXQgdGhlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBNYXRoSmF4IGhhdmUgZGlmZmVyZW50IHJl cXVpcmVtZW50cyB3aXRoDQojIHJlZ2FyZHMgdG8gdGhlIGRpZmZlcmVudCBzZXR0aW5ncywgc28g aXQgaXMgcG9zc2libGUgdGhhdCBhbHNvIG90aGVyIE1hdGhKYXgNCiMgc2V0dGluZ3MgaGF2ZSB0 byBiZSBjaGFuZ2VkIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gdGhlIGRpZmZlcmVudCBNYXRoSmF4 DQojIHZlcnNpb25zLg0KIyBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBNYXRoSmF4XzIgYW5kIE1hdGhK YXhfMy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE1hdGhKYXhfMi4NCiMgVGhpcyB0YWcgcmVx dWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMuDQoNCk1BVEhKQVhf VkVSU0lPTiAgICAgICAgPSBNYXRoSmF4XzINCg0KIyBXaGVuIE1hdGhKYXggaXMgZW5hYmxlZCB5 b3UgY2FuIHNldCB0aGUgZGVmYXVsdCBvdXRwdXQgZm9ybWF0IHRvIGJlIHVzZWQgZm9yDQojIHRo ZSBNYXRoSmF4IG91dHB1dC4gRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgb3V0cHV0IGZvcm1h dCBzZWUgTWF0aEpheA0KIyB2ZXJzaW9uIDIgKHNlZToNCiMgaHR0cDovL2RvY3MubWF0aGpheC5v cmcvZW4vdjIuNy1sYXRlc3Qvb3V0cHV0Lmh0bWwpIGFuZCBNYXRoSmF4IHZlcnNpb24gMw0KIyAo c2VlOg0KIyBodHRwOi8vZG9jcy5tYXRoamF4Lm9yZy9lbi9sYXRlc3Qvd2ViL2NvbXBvbmVudHMv b3V0cHV0Lmh0bWwpLg0KIyBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBIVE1MLUNTUyAod2hpY2ggaXMg c2xvd2VyLCBidXQgaGFzIHRoZSBiZXN0DQojIGNvbXBhdGliaWxpdHkuIFRoaXMgaXMgdGhlIG5h bWUgZm9yIE1hdGhqYXggdmVyc2lvbiAyLCBmb3IgTWF0aEpheCB2ZXJzaW9uIDMNCiMgdGhpcyB3 aWxsIGJlIHRyYW5zbGF0ZWQgaW50byBjaHRtbCksIE5hdGl2ZU1NTCAoaS5lLiBNYXRoTUwuIE9u bHkgc3VwcG9ydGVkDQojIGZvciBNYXRoSmF4IDIuIEZvciBNYXRoSmF4IHZlcnNpb24gMyBjaHRt bCB3aWxsIGJlIHVzZWQgaW5zdGVhZC4pLCBjaHRtbCAoVGhpcw0KIyBpcyB0aGUgbmFtZSBmb3Ig TWF0aGpheCB2ZXJzaW9uIDMsIGZvciBNYXRoSmF4IHZlcnNpb24gMiB0aGlzIHdpbGwgYmUNCiMg dHJhbnNsYXRlZCBpbnRvIEhUTUwtQ1NTKSBhbmQgU1ZHLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBp czogSFRNTC1DU1MuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBVU0VfTUFUSEpB WCBpcyBzZXQgdG8gWUVTLg0KDQpNQVRISkFYX0ZPUk1BVCAgICAgICAgID0gSFRNTC1DU1MNCg0K IyBXaGVuIE1hdGhKYXggaXMgZW5hYmxlZCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBsb2NhdGlv biByZWxhdGl2ZSB0byB0aGUgSFRNTA0KIyBvdXRwdXQgZGlyZWN0b3J5IHVzaW5nIHRoZSBNQVRI SkFYX1JFTFBBVEggb3B0aW9uLiBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5DQojIHNob3VsZCBj b250YWluIHRoZSBNYXRoSmF4LmpzIHNjcmlwdC4gRm9yIGluc3RhbmNlLCBpZiB0aGUgbWF0aGph eCBkaXJlY3RvcnkNCiMgaXMgbG9jYXRlZCBhdCB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgSFRNTCBv dXRwdXQgZGlyZWN0b3J5LCB0aGVuDQojIE1BVEhKQVhfUkVMUEFUSCBzaG91bGQgYmUgLi4vbWF0 aGpheC4gVGhlIGRlZmF1bHQgdmFsdWUgcG9pbnRzIHRvIHRoZSBNYXRoSmF4DQojIENvbnRlbnQg RGVsaXZlcnkgTmV0d29yayBzbyB5b3UgY2FuIHF1aWNrbHkgc2VlIHRoZSByZXN1bHQgd2l0aG91 dCBpbnN0YWxsaW5nDQojIE1hdGhKYXguIEhvd2V2ZXIsIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVu ZGVkIHRvIGluc3RhbGwgYSBsb2NhbCBjb3B5IG9mDQojIE1hdGhKYXggZnJvbSBodHRwczovL3d3 dy5tYXRoamF4Lm9yZyBiZWZvcmUgZGVwbG95bWVudC4gVGhlIGRlZmF1bHQgdmFsdWUgaXM6DQoj IC0gaW4gY2FzZSBvZiBNYXRoSmF4IHZlcnNpb24gMjogaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0 L25wbS9tYXRoamF4QDINCiMgLSBpbiBjYXNlIG9mIE1hdGhKYXggdmVyc2lvbiAzOiBodHRwczov L2Nkbi5qc2RlbGl2ci5uZXQvbnBtL21hdGhqYXhAMw0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0 IHRoZSB0YWcgVVNFX01BVEhKQVggaXMgc2V0IHRvIFlFUy4NCg0KTUFUSEpBWF9SRUxQQVRIICAg ICAgICA9DQoNCiMgVGhlIE1BVEhKQVhfRVhURU5TSU9OUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3Bl Y2lmeSBvbmUgb3IgbW9yZSBNYXRoSmF4DQojIGV4dGVuc2lvbiBuYW1lcyB0aGF0IHNob3VsZCBi ZSBlbmFibGVkIGR1cmluZyBNYXRoSmF4IHJlbmRlcmluZy4gRm9yIGV4YW1wbGUNCiMgZm9yIE1h dGhKYXggdmVyc2lvbiAyIChzZWUNCiMgaHR0cHM6Ly9kb2NzLm1hdGhqYXgub3JnL2VuL3YyLjct bGF0ZXN0L3RleC5odG1sI3RleC1hbmQtbGF0ZXgtZXh0ZW5zaW9ucyk6DQojIE1BVEhKQVhfRVhU RU5TSU9OUyA9IFRlWC9BTVNtYXRoIFRlWC9BTVNzeW1ib2xzDQojIEZvciBleGFtcGxlIGZvciBN YXRoSmF4IHZlcnNpb24gMyAoc2VlDQojIGh0dHA6Ly9kb2NzLm1hdGhqYXgub3JnL2VuL2xhdGVz dC9pbnB1dC90ZXgvZXh0ZW5zaW9ucy9pbmRleC5odG1sKToNCiMgTUFUSEpBWF9FWFRFTlNJT05T ID0gYW1zDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBVU0VfTUFUSEpBWCBpcyBz ZXQgdG8gWUVTLg0KDQpNQVRISkFYX0VYVEVOU0lPTlMgICAgID0NCg0KIyBUaGUgTUFUSEpBWF9D T0RFRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGZpbGUgd2l0aCBKYXZhU2NyaXB0 IHBpZWNlcw0KIyBvZiBjb2RlIHRoYXQgd2lsbCBiZSB1c2VkIG9uIHN0YXJ0dXAgb2YgdGhlIE1h dGhKYXggY29kZS4gU2VlIHRoZSBNYXRoSmF4IHNpdGUNCiMgKHNlZToNCiMgaHR0cDovL2RvY3Mu bWF0aGpheC5vcmcvZW4vdjIuNy1sYXRlc3Qvb3V0cHV0Lmh0bWwpIGZvciBtb3JlIGRldGFpbHMu IEZvciBhbg0KIyBleGFtcGxlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi4NCiMgVGhpcyB0YWcgcmVx dWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMuDQoNCk1BVEhKQVhf Q09ERUZJTEUgICAgICAgPQ0KDQojIFdoZW4gdGhlIFNFQVJDSEVOR0lORSB0YWcgaXMgZW5hYmxl ZCBEb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBzZWFyY2ggYm94IGZvcg0KIyB0aGUgSFRNTCBvdXRw dXQuIFRoZSB1bmRlcmx5aW5nIHNlYXJjaCBlbmdpbmUgdXNlcyBKYXZhU2NyaXB0IGFuZCBESFRN TCBhbmQNCiMgc2hvdWxkIHdvcmsgb24gYW55IG1vZGVybiBicm93c2VyLiBOb3RlIHRoYXQgd2hl biB1c2luZyBIVE1MIGhlbHANCiMgKEdFTkVSQVRFX0hUTUxIRUxQKSwgUXQgaGVscCAoR0VORVJB VEVfUUhQKSwgb3IgZG9jc2V0cyAoR0VORVJBVEVfRE9DU0VUKQ0KIyB0aGVyZSBpcyBhbHJlYWR5 IGEgc2VhcmNoIGZ1bmN0aW9uIHNvIHRoaXMgb25lIHNob3VsZCB0eXBpY2FsbHkgYmUgZGlzYWJs ZWQuDQojIEZvciBsYXJnZSBwcm9qZWN0cyB0aGUgSmF2YVNjcmlwdCBiYXNlZCBzZWFyY2ggZW5n aW5lIGNhbiBiZSBzbG93LCB0aGVuDQojIGVuYWJsaW5nIFNFUlZFUl9CQVNFRF9TRUFSQ0ggbWF5 IHByb3ZpZGUgYSBiZXR0ZXIgc29sdXRpb24uIEl0IGlzIHBvc3NpYmxlIHRvDQojIHNlYXJjaCB1 c2luZyB0aGUga2V5Ym9hcmQ7IHRvIGp1bXAgdG8gdGhlIHNlYXJjaCBib3ggdXNlIDxhY2Nlc3Mg a2V5PiArIFMNCiMgKHdoYXQgdGhlIDxhY2Nlc3Mga2V5PiBpcyBkZXBlbmRzIG9uIHRoZSBPUyBh bmQgYnJvd3NlciwgYnV0IGl0IGlzIHR5cGljYWxseQ0KIyA8Q1RSTD4sIDxBTFQ+LzxvcHRpb24+ LCBvciBib3RoKS4gSW5zaWRlIHRoZSBzZWFyY2ggYm94IHVzZSB0aGUgPGN1cnNvciBkb3duDQoj IGtleT4gdG8ganVtcCBpbnRvIHRoZSBzZWFyY2ggcmVzdWx0cyB3aW5kb3csIHRoZSByZXN1bHRz IGNhbiBiZSBuYXZpZ2F0ZWQNCiMgdXNpbmcgdGhlIDxjdXJzb3Iga2V5cz4uIFByZXNzIDxFbnRl cj4gdG8gc2VsZWN0IGFuIGl0ZW0gb3IgPGVzY2FwZT4gdG8gY2FuY2VsDQojIHRoZSBzZWFyY2gu IFRoZSBmaWx0ZXIgb3B0aW9ucyBjYW4gYmUgc2VsZWN0ZWQgd2hlbiB0aGUgY3Vyc29yIGlzIGlu c2lkZSB0aGUNCiMgc2VhcmNoIGJveCBieSBwcmVzc2luZyA8U2hpZnQ+KzxjdXJzb3IgZG93bj4u IEFsc28gaGVyZSB1c2UgdGhlIDxjdXJzb3Iga2V5cz4NCiMgdG8gc2VsZWN0IGEgZmlsdGVyIGFu ZCA8RW50ZXI+IG9yIDxlc2NhcGU+IHRvIGFjdGl2YXRlIG9yIGNhbmNlbCB0aGUgZmlsdGVyDQoj IG9wdGlvbi4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCiMgVGhpcyB0YWcgcmVxdWly ZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4NCg0KU0VBUkNIRU5H SU5FICAgICAgICAgICA9IFlFUw0KDQojIFdoZW4gdGhlIFNFUlZFUl9CQVNFRF9TRUFSQ0ggdGFn IGlzIGVuYWJsZWQgdGhlIHNlYXJjaCBlbmdpbmUgd2lsbCBiZQ0KIyBpbXBsZW1lbnRlZCB1c2lu ZyBhIHdlYiBzZXJ2ZXIgaW5zdGVhZCBvZiBhIHdlYiBjbGllbnQgdXNpbmcgSmF2YVNjcmlwdC4g VGhlcmUNCiMgYXJlIHR3byBmbGF2b3JzIG9mIHdlYiBzZXJ2ZXIgYmFzZWQgc2VhcmNoaW5nIGRl cGVuZGluZyBvbiB0aGUgRVhURVJOQUxfU0VBUkNIDQojIHNldHRpbmcuIFdoZW4gZGlzYWJsZWQs IERveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIFBIUCBzY3JpcHQgZm9yIHNlYXJjaGluZyBhbmQNCiMg YW4gaW5kZXggZmlsZSB1c2VkIGJ5IHRoZSBzY3JpcHQuIFdoZW4gRVhURVJOQUxfU0VBUkNIIGlz IGVuYWJsZWQgdGhlIGluZGV4aW5nDQojIGFuZCBzZWFyY2hpbmcgbmVlZHMgdG8gYmUgcHJvdmlk ZWQgYnkgZXh0ZXJuYWwgdG9vbHMuIFNlZSB0aGUgc2VjdGlvbg0KIyAiRXh0ZXJuYWwgSW5kZXhp bmcgYW5kIFNlYXJjaGluZyIgZm9yIGRldGFpbHMuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBO Ty4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQg dG8gWUVTLg0KDQpTRVJWRVJfQkFTRURfU0VBUkNIICAgID0gTk8NCg0KIyBXaGVuIEVYVEVSTkFM X1NFQVJDSCB0YWcgaXMgZW5hYmxlZCBEb3h5Z2VuIHdpbGwgbm8gbG9uZ2VyIGdlbmVyYXRlIHRo ZSBQSFANCiMgc2NyaXB0IGZvciBzZWFyY2hpbmcuIEluc3RlYWQgdGhlIHNlYXJjaCByZXN1bHRz IGFyZSB3cml0dGVuIHRvIGFuIFhNTCBmaWxlDQojIHdoaWNoIG5lZWRzIHRvIGJlIHByb2Nlc3Nl ZCBieSBhbiBleHRlcm5hbCBpbmRleGVyLiBEb3h5Z2VuIHdpbGwgaW52b2tlIGFuDQojIGV4dGVy bmFsIHNlYXJjaCBlbmdpbmUgcG9pbnRlZCB0byBieSB0aGUgU0VBUkNIRU5HSU5FX1VSTCBvcHRp b24gdG8gb2J0YWluIHRoZQ0KIyBzZWFyY2ggcmVzdWx0cy4NCiMNCiMgRG94eWdlbiBzaGlwcyB3 aXRoIGFuIGV4YW1wbGUgaW5kZXhlciAoZG94eWluZGV4ZXIpIGFuZCBzZWFyY2ggZW5naW5lDQoj IChkb3h5c2VhcmNoLmNnaSkgd2hpY2ggYXJlIGJhc2VkIG9uIHRoZSBvcGVuIHNvdXJjZSBzZWFy Y2ggZW5naW5lIGxpYnJhcnkNCiMgWGFwaWFuIChzZWU6DQojIGh0dHBzOi8veGFwaWFuLm9yZy8p Lg0KIw0KIyBTZWUgdGhlIHNlY3Rpb24gIkV4dGVybmFsIEluZGV4aW5nIGFuZCBTZWFyY2hpbmci IGZvciBkZXRhaWxzLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQojIFRoaXMgdGFnIHJl cXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4NCg0KRVhURVJO QUxfU0VBUkNIICAgICAgICA9IE5PDQoNCiMgVGhlIFNFQVJDSEVOR0lORV9VUkwgc2hvdWxkIHBv aW50IHRvIGEgc2VhcmNoIGVuZ2luZSBob3N0ZWQgYnkgYSB3ZWIgc2VydmVyDQojIHdoaWNoIHdp bGwgcmV0dXJuIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIEVYVEVSTkFMX1NFQVJDSCBpcyBlbmFi bGVkLg0KIw0KIyBEb3h5Z2VuIHNoaXBzIHdpdGggYW4gZXhhbXBsZSBpbmRleGVyIChkb3h5aW5k ZXhlcikgYW5kIHNlYXJjaCBlbmdpbmUNCiMgKGRveHlzZWFyY2guY2dpKSB3aGljaCBhcmUgYmFz ZWQgb24gdGhlIG9wZW4gc291cmNlIHNlYXJjaCBlbmdpbmUgbGlicmFyeQ0KIyBYYXBpYW4gKHNl ZToNCiMgaHR0cHM6Ly94YXBpYW4ub3JnLykuIFNlZSB0aGUgc2VjdGlvbiAiRXh0ZXJuYWwgSW5k ZXhpbmcgYW5kIFNlYXJjaGluZyIgZm9yDQojIGRldGFpbHMuDQojIFRoaXMgdGFnIHJlcXVpcmVz IHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4NCg0KU0VBUkNIRU5HSU5F X1VSTCAgICAgICA9DQoNCiMgV2hlbiBTRVJWRVJfQkFTRURfU0VBUkNIIGFuZCBFWFRFUk5BTF9T RUFSQ0ggYXJlIGJvdGggZW5hYmxlZCB0aGUgdW5pbmRleGVkDQojIHNlYXJjaCBkYXRhIGlzIHdy aXR0ZW4gdG8gYSBmaWxlIGZvciBpbmRleGluZyBieSBhbiBleHRlcm5hbCB0b29sLiBXaXRoIHRo ZQ0KIyBTRUFSQ0hEQVRBX0ZJTEUgdGFnIHRoZSBuYW1lIG9mIHRoaXMgZmlsZSBjYW4gYmUgc3Bl Y2lmaWVkLg0KIyBUaGUgZGVmYXVsdCBmaWxlIGlzOiBzZWFyY2hkYXRhLnhtbC4NCiMgVGhpcyB0 YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLg0KDQpT RUFSQ0hEQVRBX0ZJTEUgICAgICAgID0gc2VhcmNoZGF0YS54bWwNCg0KIyBXaGVuIFNFUlZFUl9C QVNFRF9TRUFSQ0ggYW5kIEVYVEVSTkFMX1NFQVJDSCBhcmUgYm90aCBlbmFibGVkIHRoZQ0KIyBF WFRFUk5BTF9TRUFSQ0hfSUQgdGFnIGNhbiBiZSB1c2VkIGFzIGFuIGlkZW50aWZpZXIgZm9yIHRo ZSBwcm9qZWN0LiBUaGlzIGlzDQojIHVzZWZ1bCBpbiBjb21iaW5hdGlvbiB3aXRoIEVYVFJBX1NF QVJDSF9NQVBQSU5HUyB0byBzZWFyY2ggdGhyb3VnaCBtdWx0aXBsZQ0KIyBwcm9qZWN0cyBhbmQg cmVkaXJlY3QgdGhlIHJlc3VsdHMgYmFjayB0byB0aGUgcmlnaHQgcHJvamVjdC4NCiMgVGhpcyB0 YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLg0KDQpF WFRFUk5BTF9TRUFSQ0hfSUQgICAgID0NCg0KIyBUaGUgRVhUUkFfU0VBUkNIX01BUFBJTkdTIHRh ZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgc2VhcmNoaW5nIHRocm91Z2ggRG94eWdlbg0KIyBwcm9q ZWN0cyBvdGhlciB0aGFuIHRoZSBvbmUgZGVmaW5lZCBieSB0aGlzIGNvbmZpZ3VyYXRpb24gZmls ZSwgYnV0IHRoYXQgYXJlDQojIGFsbCBhZGRlZCB0byB0aGUgc2FtZSBleHRlcm5hbCBzZWFyY2gg aW5kZXguIEVhY2ggcHJvamVjdCBuZWVkcyB0byBoYXZlIGENCiMgdW5pcXVlIGlkIHNldCB2aWEg RVhURVJOQUxfU0VBUkNIX0lELiBUaGUgc2VhcmNoIG1hcHBpbmcgdGhlbiBtYXBzIHRoZSBpZCBv Zg0KIyB0byBhIHJlbGF0aXZlIGxvY2F0aW9uIHdoZXJlIHRoZSBkb2N1bWVudGF0aW9uIGNhbiBi ZSBmb3VuZC4gVGhlIGZvcm1hdCBpczoNCiMgRVhUUkFfU0VBUkNIX01BUFBJTkdTID0gdGFnbmFt ZTE9bG9jMSB0YWduYW1lMj1sb2MyIC4uLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0 YWcgU0VBUkNIRU5HSU5FIGlzIHNldCB0byBZRVMuDQoNCkVYVFJBX1NFQVJDSF9NQVBQSU5HUyAg PQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVk IHRvIHRoZSBMYVRlWCBvdXRwdXQNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBJZiB0aGUgR0VO RVJBVEVfTEFURVggdGFnIGlzIHNldCB0byBZRVMsIERveHlnZW4gd2lsbCBnZW5lcmF0ZSBMYVRl WCBvdXRwdXQuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQoNCkdFTkVSQVRFX0xBVEVY ICAgICAgICAgPSBZRVMNCg0KIyBUaGUgTEFURVhfT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNp Znkgd2hlcmUgdGhlIExhVGVYIGRvY3Mgd2lsbCBiZSBwdXQuIElmIGENCiMgcmVsYXRpdmUgcGF0 aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQVVRfRElSRUNUT1JZIHdpbGwgYmUgcHV0IGlu IGZyb250IG9mDQojIGl0Lg0KIyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXM6IGxhdGV4Lg0KIyBU aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlF Uy4NCg0KTEFURVhfT1VUUFVUICAgICAgICAgICA9IGxhdGV4DQoNCiMgVGhlIExBVEVYX0NNRF9O QU1FIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBMYVRlWCBjb21tYW5kIG5hbWUgdG8g YmUNCiMgaW52b2tlZC4NCiMNCiMgTm90ZSB0aGF0IHdoZW4gbm90IGVuYWJsaW5nIFVTRV9QREZM QVRFWCB0aGUgZGVmYXVsdCBpcyBsYXRleCB3aGVuIGVuYWJsaW5nDQojIFVTRV9QREZMQVRFWCB0 aGUgZGVmYXVsdCBpcyBwZGZsYXRleCBhbmQgd2hlbiBpbiB0aGUgbGF0ZXIgY2FzZSBsYXRleCBp cw0KIyBjaG9zZW4gdGhpcyBpcyBvdmVyd3JpdHRlbiBieSBwZGZsYXRleC4gRm9yIHNwZWNpZmlj IG91dHB1dCBsYW5ndWFnZXMgdGhlDQojIGRlZmF1bHQgY2FuIGhhdmUgYmVlbiBzZXQgZGlmZmVy ZW50bHksIHRoaXMgZGVwZW5kcyBvbiB0aGUgaW1wbGVtZW50YXRpb24gb2YNCiMgdGhlIG91dHB1 dCBsYW5ndWFnZS4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xB VEVYIGlzIHNldCB0byBZRVMuDQoNCkxBVEVYX0NNRF9OQU1FICAgICAgICAgPQ0KDQojIFRoZSBN QUtFSU5ERVhfQ01EX05BTUUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGNvbW1hbmQg bmFtZSB0byBnZW5lcmF0ZQ0KIyBpbmRleCBmb3IgTGFUZVguDQojIE5vdGU6IFRoaXMgdGFnIGlz IHVzZWQgaW4gdGhlIE1ha2VmaWxlIC8gbWFrZS5iYXQuDQojIFNlZSBhbHNvOiBMQVRFWF9NQUtF SU5ERVhfQ01EIGZvciB0aGUgcGFydCBpbiB0aGUgZ2VuZXJhdGVkIG91dHB1dCBmaWxlDQojICgu dGV4KS4NCiMgVGhlIGRlZmF1bHQgZmlsZSBpczogbWFrZWluZGV4Lg0KIyBUaGlzIHRhZyByZXF1 aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4NCg0KTUFLRUlO REVYX0NNRF9OQU1FICAgICA9IG1ha2VpbmRleA0KDQojIFRoZSBMQVRFWF9NQUtFSU5ERVhfQ01E IHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBjb21tYW5kIG5hbWUgdG8NCiMgZ2VuZXJh dGUgaW5kZXggZm9yIExhVGVYLiBJbiBjYXNlIHRoZXJlIGlzIG5vIGJhY2tzbGFzaCAoXCkgYXMg Zmlyc3QgY2hhcmFjdGVyDQojIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBhZGRlZCBpbiB0aGUg TGFUZVggY29kZS4NCiMgTm90ZTogVGhpcyB0YWcgaXMgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIG91 dHB1dCBmaWxlICgudGV4KS4NCiMgU2VlIGFsc286IE1BS0VJTkRFWF9DTURfTkFNRSBmb3IgdGhl IHBhcnQgaW4gdGhlIE1ha2VmaWxlIC8gbWFrZS5iYXQuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlz OiBtYWtlaW5kZXguDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9M QVRFWCBpcyBzZXQgdG8gWUVTLg0KDQpMQVRFWF9NQUtFSU5ERVhfQ01EICAgID0gbWFrZWluZGV4 DQoNCiMgSWYgdGhlIENPTVBBQ1RfTEFURVggdGFnIGlzIHNldCB0byBZRVMsIERveHlnZW4gZ2Vu ZXJhdGVzIG1vcmUgY29tcGFjdCBMYVRlWA0KIyBkb2N1bWVudHMuIFRoaXMgbWF5IGJlIHVzZWZ1 bCBmb3Igc21hbGwgcHJvamVjdHMgYW5kIG1heSBoZWxwIHRvIHNhdmUgc29tZQ0KIyB0cmVlcyBp biBnZW5lcmFsLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQojIFRoaXMgdGFnIHJlcXVp cmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLg0KDQpDT01QQUNU X0xBVEVYICAgICAgICAgID0gTk8NCg0KIyBUaGUgUEFQRVJfVFlQRSB0YWcgY2FuIGJlIHVzZWQg dG8gc2V0IHRoZSBwYXBlciB0eXBlIHRoYXQgaXMgdXNlZCBieSB0aGUNCiMgcHJpbnRlci4NCiMg UG9zc2libGUgdmFsdWVzIGFyZTogYTQgKDIxMCB4IDI5NyBtbSksIGxldHRlciAoOC41IHggMTEg aW5jaGVzKSwgbGVnYWwgKDguNSB4DQojIDE0IGluY2hlcykgYW5kIGV4ZWN1dGl2ZSAoNy4yNSB4 IDEwLjUgaW5jaGVzKS4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IGE0Lg0KIyBUaGlzIHRhZyBy ZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4NCg0KUEFQ RVJfVFlQRSAgICAgICAgICAgICA9IGE0DQoNCiMgVGhlIEVYVFJBX1BBQ0tBR0VTIHRhZyBjYW4g YmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIExhVGVYIHBhY2thZ2UgbmFtZXMNCiMgdGhh dCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIExhVGVYIG91dHB1dC4gVGhlIHBhY2thZ2UgY2Fu IGJlIHNwZWNpZmllZCBqdXN0DQojIGJ5IGl0cyBuYW1lIG9yIHdpdGggdGhlIGNvcnJlY3Qgc3lu dGF4IGFzIHRvIGJlIHVzZWQgd2l0aCB0aGUgTGFUZVgNCiMgXHVzZXBhY2thZ2UgY29tbWFuZC4g VG8gZ2V0IHRoZSB0aW1lcyBmb250IGZvciBpbnN0YW5jZSB5b3UgY2FuIHNwZWNpZnkgOg0KIyBF WFRSQV9QQUNLQUdFUz10aW1lcyBvciBFWFRSQV9QQUNLQUdFUz17dGltZXN9DQojIFRvIHVzZSB0 aGUgb3B0aW9uIGludGxpbWl0cyB3aXRoIHRoZSBhbXNtYXRoIHBhY2thZ2UgeW91IGNhbiBzcGVj aWZ5Og0KIyBFWFRSQV9QQUNLQUdFUz1baW50bGltaXRzXXthbXNtYXRofQ0KIyBJZiBsZWZ0IGJs YW5rIG5vIGV4dHJhIHBhY2thZ2VzIHdpbGwgYmUgaW5jbHVkZWQuDQojIFRoaXMgdGFnIHJlcXVp cmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLg0KDQpFWFRSQV9Q QUNLQUdFUyAgICAgICAgID0NCg0KIyBUaGUgTEFURVhfSEVBREVSIHRhZyBjYW4gYmUgdXNlZCB0 byBzcGVjaWZ5IGEgdXNlci1kZWZpbmVkIExhVGVYIGhlYWRlciBmb3INCiMgdGhlIGdlbmVyYXRl ZCBMYVRlWCBkb2N1bWVudC4gVGhlIGhlYWRlciBzaG91bGQgY29udGFpbiBldmVyeXRoaW5nIHVu dGlsIHRoZQ0KIyBmaXJzdCBjaGFwdGVyLiBJZiBpdCBpcyBsZWZ0IGJsYW5rIERveHlnZW4gd2ls bCBnZW5lcmF0ZSBhIHN0YW5kYXJkIGhlYWRlci4gSXQNCiMgaXMgaGlnaGx5IHJlY29tbWVuZGVk IHRvIHN0YXJ0IHdpdGggYSBkZWZhdWx0IGhlYWRlciB1c2luZw0KIyBkb3h5Z2VuIC13IGxhdGV4 IG5ld19oZWFkZXIudGV4IG5ld19mb290ZXIudGV4IG5ld19zdHlsZXNoZWV0LnN0eQ0KIyBhbmQg dGhlbiBtb2RpZnkgdGhlIGZpbGUgbmV3X2hlYWRlci50ZXguIFNlZSBhbHNvIHNlY3Rpb24gIkRv eHlnZW4gdXNhZ2UiIGZvcg0KIyBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2VuZXJhdGUgdGhlIGRl ZmF1bHQgaGVhZGVyIHRoYXQgRG94eWdlbiBub3JtYWxseSB1c2VzLg0KIw0KIyBOb3RlOiBPbmx5 IHVzZSBhIHVzZXItZGVmaW5lZCBoZWFkZXIgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5n IQ0KIyBOb3RlOiBUaGUgaGVhZGVyIGlzIHN1YmplY3QgdG8gY2hhbmdlIHNvIHlvdSB0eXBpY2Fs bHkgaGF2ZSB0byByZWdlbmVyYXRlIHRoZQ0KIyBkZWZhdWx0IGhlYWRlciB3aGVuIHVwZ3JhZGlu ZyB0byBhIG5ld2VyIHZlcnNpb24gb2YgRG94eWdlbi4gVGhlIGZvbGxvd2luZw0KIyBjb21tYW5k cyBoYXZlIGEgc3BlY2lhbCBtZWFuaW5nIGluc2lkZSB0aGUgaGVhZGVyIChhbmQgZm9vdGVyKTog Rm9yIGENCiMgZGVzY3JpcHRpb24gb2YgdGhlIHBvc3NpYmxlIG1hcmtlcnMgYW5kIGJsb2NrIG5h bWVzIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg dGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuDQoNCkxBVEVYX0hFQURFUiAgICAgICAg ICAgPQ0KDQojIFRoZSBMQVRFWF9GT09URVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSB1 c2VyLWRlZmluZWQgTGFUZVggZm9vdGVyIGZvcg0KIyB0aGUgZ2VuZXJhdGVkIExhVGVYIGRvY3Vt ZW50LiBUaGUgZm9vdGVyIHNob3VsZCBjb250YWluIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlDQojIGxh c3QgY2hhcHRlci4gSWYgaXQgaXMgbGVmdCBibGFuayBEb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBz dGFuZGFyZCBmb290ZXIuIFNlZQ0KIyBMQVRFWF9IRUFERVIgZm9yIG1vcmUgaW5mb3JtYXRpb24g b24gaG93IHRvIGdlbmVyYXRlIGEgZGVmYXVsdCBmb290ZXIgYW5kIHdoYXQNCiMgc3BlY2lhbCBj b21tYW5kcyBjYW4gYmUgdXNlZCBpbnNpZGUgdGhlIGZvb3Rlci4gU2VlIGFsc28gc2VjdGlvbiAi RG94eWdlbg0KIyB1c2FnZSIgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZW5lcmF0ZSB0aGUg ZGVmYXVsdCBmb290ZXIgdGhhdCBEb3h5Z2VuDQojIG5vcm1hbGx5IHVzZXMuIE5vdGU6IE9ubHkg dXNlIGEgdXNlci1kZWZpbmVkIGZvb3RlciBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUNCiMgZG9p bmchDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBz ZXQgdG8gWUVTLg0KDQpMQVRFWF9GT09URVIgICAgICAgICAgID0NCg0KIyBUaGUgTEFURVhfRVhU UkFfU1RZTEVTSEVFVCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIHVzZXIt ZGVmaW5lZA0KIyBMYVRlWCBzdHlsZSBzaGVldHMgdGhhdCBhcmUgaW5jbHVkZWQgYWZ0ZXIgdGhl IHN0YW5kYXJkIHN0eWxlIHNoZWV0cyBjcmVhdGVkDQojIGJ5IERveHlnZW4uIFVzaW5nIHRoaXMg b3B0aW9uIG9uZSBjYW4gb3ZlcnJ1bGUgY2VydGFpbiBzdHlsZSBhc3BlY3RzLiBEb3h5Z2VuDQoj IHdpbGwgY29weSB0aGUgc3R5bGUgc2hlZXQgZmlsZXMgdG8gdGhlIG91dHB1dCBkaXJlY3Rvcnku DQojIE5vdGU6IFRoZSBvcmRlciBvZiB0aGUgZXh0cmEgc3R5bGUgc2hlZXQgZmlsZXMgaXMgb2Yg aW1wb3J0YW5jZSAoZS5nLiB0aGUgbGFzdA0KIyBzdHlsZSBzaGVldCBpbiB0aGUgbGlzdCBvdmVy cnVsZXMgdGhlIHNldHRpbmcgb2YgdGhlIHByZXZpb3VzIG9uZXMgaW4gdGhlDQojIGxpc3QpLg0K IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRv IFlFUy4NCg0KTEFURVhfRVhUUkFfU1RZTEVTSEVFVCA9DQoNCiMgVGhlIExBVEVYX0VYVFJBX0ZJ TEVTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4dHJhIGltYWdlcyBv cg0KIyBvdGhlciBzb3VyY2UgZmlsZXMgd2hpY2ggc2hvdWxkIGJlIGNvcGllZCB0byB0aGUgTEFU RVhfT1VUUFVUIG91dHB1dA0KIyBkaXJlY3RvcnkuIE5vdGUgdGhhdCB0aGUgZmlsZXMgd2lsbCBi ZSBjb3BpZWQgYXMtaXM7IHRoZXJlIGFyZSBubyBjb21tYW5kcyBvcg0KIyBtYXJrZXJzIGF2YWls YWJsZS4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlz IHNldCB0byBZRVMuDQoNCkxBVEVYX0VYVFJBX0ZJTEVTICAgICAgPQ0KDQojIElmIHRoZSBQREZf SFlQRVJMSU5LUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIExhVGVYIHRoYXQgaXMgZ2VuZXJhdGVk IGlzDQojIHByZXBhcmVkIGZvciBjb252ZXJzaW9uIHRvIFBERiAodXNpbmcgcHMycGRmIG9yIHBk ZmxhdGV4KS4gVGhlIFBERiBmaWxlIHdpbGwNCiMgY29udGFpbiBsaW5rcyAoanVzdCBsaWtlIHRo ZSBIVE1MIG91dHB1dCkgaW5zdGVhZCBvZiBwYWdlIHJlZmVyZW5jZXMuIFRoaXMNCiMgbWFrZXMg dGhlIG91dHB1dCBzdWl0YWJsZSBmb3Igb25saW5lIGJyb3dzaW5nIHVzaW5nIGEgUERGIHZpZXdl ci4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh dCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuDQoNClBERl9IWVBFUkxJTktT ICAgICAgICAgPSBZRVMNCg0KIyBJZiB0aGUgVVNFX1BERkxBVEVYIHRhZyBpcyBzZXQgdG8gWUVT LCBEb3h5Z2VuIHdpbGwgdXNlIHRoZSBlbmdpbmUgYXMNCiMgc3BlY2lmaWVkIHdpdGggTEFURVhf Q01EX05BTUUgdG8gZ2VuZXJhdGUgdGhlIFBERiBmaWxlIGRpcmVjdGx5IGZyb20gdGhlIExhVGVY DQojIGZpbGVzLiBTZXQgdGhpcyBvcHRpb24gdG8gWUVTLCB0byBnZXQgYSBoaWdoZXIgcXVhbGl0 eSBQREYgZG9jdW1lbnRhdGlvbi4NCiMNCiMgU2VlIGFsc28gc2VjdGlvbiBMQVRFWF9DTURfTkFN RSBmb3Igc2VsZWN0aW5nIHRoZSBlbmdpbmUuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMu DQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQg dG8gWUVTLg0KDQpVU0VfUERGTEFURVggICAgICAgICAgID0gWUVTDQoNCiMgVGhlIExBVEVYX0JB VENITU9ERSB0YWcgc2lnbmFscyB0aGUgYmVoYXZpb3Igb2YgTGFUZVggaW4gY2FzZSBvZiBhbiBl cnJvci4NCiMgUG9zc2libGUgdmFsdWVzIGFyZTogTk8gc2FtZSBhcyBFUlJPUl9TVE9QLCBZRVMg c2FtZSBhcyBCQVRDSCwgQkFUQ0ggSW4gYmF0Y2gNCiMgbW9kZSBub3RoaW5nIGlzIHByaW50ZWQg b24gdGhlIHRlcm1pbmFsLCBlcnJvcnMgYXJlIHNjcm9sbGVkIGFzIGlmIDxyZXR1cm4+IGlzDQoj IGhpdCBhdCBldmVyeSBlcnJvcjsgbWlzc2luZyBmaWxlcyB0aGF0IFRlWCB0cmllcyB0byBpbnB1 dCBvciByZXF1ZXN0IGZyb20NCiMga2V5Ym9hcmQgaW5wdXQgKFxyZWFkIG9uIGEgbm90IG9wZW4g aW5wdXQgc3RyZWFtKSBjYXVzZSB0aGUgam9iIHRvIGFib3J0LA0KIyBOT05fU1RPUCBJbiBub25z dG9wIG1vZGUgdGhlIGRpYWdub3N0aWMgbWVzc2FnZSB3aWxsIGFwcGVhciBvbiB0aGUgdGVybWlu YWwsDQojIGJ1dCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSBvZiB1c2VyIGludGVyYWN0aW9uIGp1 c3QgbGlrZSBpbiBiYXRjaCBtb2RlLA0KIyBTQ1JPTEwgSW4gc2Nyb2xsIG1vZGUsIFRlWCB3aWxs IHN0b3Agb25seSBmb3IgbWlzc2luZyBmaWxlcyB0byBpbnB1dCBvciBpZg0KIyBrZXlib2FyZCBp bnB1dCBpcyBuZWNlc3NhcnkgYW5kIEVSUk9SX1NUT1AgSW4gZXJyb3JzdG9wIG1vZGUsIFRlWCB3 aWxsIHN0b3AgYXQNCiMgZWFjaCBlcnJvciwgYXNraW5nIGZvciB1c2VyIGludGVydmVudGlvbi4N CiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRo ZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4NCg0KTEFURVhfQkFUQ0hNT0RFICAg ICAgICA9IE5PDQoNCiMgSWYgdGhlIExBVEVYX0hJREVfSU5ESUNFUyB0YWcgaXMgc2V0IHRvIFlF UyB0aGVuIERveHlnZW4gd2lsbCBub3QgaW5jbHVkZSB0aGUNCiMgaW5kZXggY2hhcHRlcnMgKHN1 Y2ggYXMgRmlsZSBJbmRleCwgQ29tcG91bmQgSW5kZXgsIGV0Yy4pIGluIHRoZSBvdXRwdXQuDQoj IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg dGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuDQoNCkxBVEVYX0hJREVfSU5ESUNFUyAg ICAgPSBOTw0KDQojIFRoZSBMQVRFWF9CSUJfU1RZTEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNp ZnkgdGhlIHN0eWxlIHRvIHVzZSBmb3IgdGhlDQojIGJpYmxpb2dyYXBoeSwgZS5nLiBwbGFpbm5h dCwgb3IgaWVlZXRyLiBTZWUNCiMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmliVGVY IGFuZCBcY2l0ZSBmb3IgbW9yZSBpbmZvLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogcGxhaW4u DQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQg dG8gWUVTLg0KDQpMQVRFWF9CSUJfU1RZTEUgICAgICAgID0gcGxhaW4NCg0KIyBUaGUgTEFURVhf RU1PSklfRElSRUNUT1JZIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIChyZWxhdGl2ZSBvciBh YnNvbHV0ZSkNCiMgcGF0aCBmcm9tIHdoaWNoIHRoZSBlbW9qaSBpbWFnZXMgd2lsbCBiZSByZWFk LiBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCwNCiMgaXQgd2lsbCBiZSByZWxhdGl2ZSB0 byB0aGUgTEFURVhfT1VUUFVUIGRpcmVjdG9yeS4gSWYgbGVmdCBibGFuayB0aGUNCiMgTEFURVhf T1VUUFVUIGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg dGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLg0KDQpMQVRFWF9FTU9KSV9ESVJF Q1RPUlkgID0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDb25maWd1cmF0aW9uIG9wdGlvbnMg cmVsYXRlZCB0byB0aGUgUlRGIG91dHB1dA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIElmIHRo ZSBHRU5FUkFURV9SVEYgdGFnIGlzIHNldCB0byBZRVMsIERveHlnZW4gd2lsbCBnZW5lcmF0ZSBS VEYgb3V0cHV0LiBUaGUNCiMgUlRGIG91dHB1dCBpcyBvcHRpbWl6ZWQgZm9yIFdvcmQgOTcgYW5k IG1heSBub3QgbG9vayB0b28gcHJldHR5IHdpdGggb3RoZXIgUlRGDQojIHJlYWRlcnMvZWRpdG9y cy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpHRU5FUkFURV9SVEYgICAgICAgICAg ID0gTk8NCg0KIyBUaGUgUlRGX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRo ZSBSVEYgZG9jcyB3aWxsIGJlIHB1dC4gSWYgYQ0KIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQg dGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YNCiMg aXQuDQojIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBpczogcnRmLg0KIyBUaGlzIHRhZyByZXF1aXJl cyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuDQoNClJURl9PVVRQVVQg ICAgICAgICAgICAgPSBydGYNCg0KIyBJZiB0aGUgQ09NUEFDVF9SVEYgdGFnIGlzIHNldCB0byBZ RVMsIERveHlnZW4gZ2VuZXJhdGVzIG1vcmUgY29tcGFjdCBSVEYNCiMgZG9jdW1lbnRzLiBUaGlz IG1heSBiZSB1c2VmdWwgZm9yIHNtYWxsIHByb2plY3RzIGFuZCBtYXkgaGVscCB0byBzYXZlIHNv bWUNCiMgdHJlZXMgaW4gZ2VuZXJhbC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBU aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMu DQoNCkNPTVBBQ1RfUlRGICAgICAgICAgICAgPSBOTw0KDQojIElmIHRoZSBSVEZfSFlQRVJMSU5L UyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIFJURiB0aGF0IGlzIGdlbmVyYXRlZCB3aWxsDQojIGNv bnRhaW4gaHlwZXJsaW5rIGZpZWxkcy4gVGhlIFJURiBmaWxlIHdpbGwgY29udGFpbiBsaW5rcyAo anVzdCBsaWtlIHRoZSBIVE1MDQojIG91dHB1dCkgaW5zdGVhZCBvZiBwYWdlIHJlZmVyZW5jZXMu IFRoaXMgbWFrZXMgdGhlIG91dHB1dCBzdWl0YWJsZSBmb3Igb25saW5lDQojIGJyb3dzaW5nIHVz aW5nIFdvcmQgb3Igc29tZSBvdGhlciBXb3JkIGNvbXBhdGlibGUgcmVhZGVycyB0aGF0IHN1cHBv cnQgdGhvc2UNCiMgZmllbGRzLg0KIw0KIyBOb3RlOiBXb3JkUGFkICh3cml0ZSkgYW5kIG90aGVy cyBkbyBub3Qgc3VwcG9ydCBsaW5rcy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBU aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMu DQoNClJURl9IWVBFUkxJTktTICAgICAgICAgPSBOTw0KDQojIExvYWQgc3R5bGVzaGVldCBkZWZp bml0aW9ucyBmcm9tIGZpbGUuIFN5bnRheCBpcyBzaW1pbGFyIHRvIERveHlnZW4ncw0KIyBjb25m aWd1cmF0aW9uIGZpbGUsIGkuZS4gYSBzZXJpZXMgb2YgYXNzaWdubWVudHMuIFlvdSBvbmx5IGhh dmUgdG8gcHJvdmlkZQ0KIyByZXBsYWNlbWVudHMsIG1pc3NpbmcgZGVmaW5pdGlvbnMgYXJlIHNl dCB0byB0aGVpciBkZWZhdWx0IHZhbHVlLg0KIw0KIyBTZWUgYWxzbyBzZWN0aW9uICJEb3h5Z2Vu IHVzYWdlIiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZQ0KIyBkZWZhdWx0 IHN0eWxlIHNoZWV0IHRoYXQgRG94eWdlbiBub3JtYWxseSB1c2VzLg0KIyBUaGlzIHRhZyByZXF1 aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuDQoNClJURl9TVFlM RVNIRUVUX0ZJTEUgICAgPQ0KDQojIFNldCBvcHRpb25hbCB2YXJpYWJsZXMgdXNlZCBpbiB0aGUg Z2VuZXJhdGlvbiBvZiBhbiBSVEYgZG9jdW1lbnQuIFN5bnRheCBpcw0KIyBzaW1pbGFyIHRvIERv eHlnZW4ncyBjb25maWd1cmF0aW9uIGZpbGUuIEEgdGVtcGxhdGUgZXh0ZW5zaW9ucyBmaWxlIGNh biBiZQ0KIyBnZW5lcmF0ZWQgdXNpbmcgZG94eWdlbiAtZSBydGYgZXh0ZW5zaW9uRmlsZS4NCiMg VGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1JURiBpcyBzZXQgdG8gWUVT Lg0KDQpSVEZfRVhURU5TSU9OU19GSUxFICAgID0NCg0KIyBUaGUgUlRGX0VYVFJBX0ZJTEVTIHRh ZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4dHJhIGltYWdlcyBvcg0KIyBv dGhlciBzb3VyY2UgZmlsZXMgd2hpY2ggc2hvdWxkIGJlIGNvcGllZCB0byB0aGUgUlRGX09VVFBV VCBvdXRwdXQgZGlyZWN0b3J5Lg0KIyBOb3RlIHRoYXQgdGhlIGZpbGVzIHdpbGwgYmUgY29waWVk IGFzLWlzOyB0aGVyZSBhcmUgbm8gY29tbWFuZHMgb3IgbWFya2Vycw0KIyBhdmFpbGFibGUuDQoj IFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9SVEYgaXMgc2V0IHRvIFlF Uy4NCg0KUlRGX0VYVFJBX0ZJTEVTICAgICAgICA9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMg Q29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIG1hbiBwYWdlIG91dHB1dA0KIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KDQojIElmIHRoZSBHRU5FUkFURV9NQU4gdGFnIGlzIHNldCB0byBZ RVMsIERveHlnZW4gd2lsbCBnZW5lcmF0ZSBtYW4gcGFnZXMgZm9yDQojIGNsYXNzZXMgYW5kIGZp bGVzLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQoNCkdFTkVSQVRFX01BTiAgICAgICAg ICAgPSBOTw0KDQojIFRoZSBNQU5fT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUg dGhlIG1hbiBwYWdlcyB3aWxsIGJlIHB1dC4gSWYgYQ0KIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVy ZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YN CiMgaXQuIEEgZGlyZWN0b3J5IG1hbjMgd2lsbCBiZSBjcmVhdGVkIGluc2lkZSB0aGUgZGlyZWN0 b3J5IHNwZWNpZmllZCBieQ0KIyBNQU5fT1VUUFVULg0KIyBUaGUgZGVmYXVsdCBkaXJlY3Rvcnkg aXM6IG1hbi4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX01BTiBp cyBzZXQgdG8gWUVTLg0KDQpNQU5fT1VUUFVUICAgICAgICAgICAgID0gbWFuDQoNCiMgVGhlIE1B Tl9FWFRFTlNJT04gdGFnIGRldGVybWluZXMgdGhlIGV4dGVuc2lvbiB0aGF0IGlzIGFkZGVkIHRv IHRoZSBnZW5lcmF0ZWQNCiMgbWFuIHBhZ2VzLiBJbiBjYXNlIHRoZSBtYW51YWwgc2VjdGlvbiBk b2VzIG5vdCBzdGFydCB3aXRoIGEgbnVtYmVyLCB0aGUgbnVtYmVyDQojIDMgaXMgcHJlcGVuZGVk LiBUaGUgZG90ICguKSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBNQU5fRVhURU5TSU9OIHRhZyBp cw0KIyBvcHRpb25hbC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IC4zLg0KIyBUaGlzIHRhZyBy ZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTUFOIGlzIHNldCB0byBZRVMuDQoNCk1BTl9F WFRFTlNJT04gICAgICAgICAgPSAuMw0KDQojIFRoZSBNQU5fU1VCRElSIHRhZyBkZXRlcm1pbmVz IHRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgY3JlYXRlZCB3aXRoaW4NCiMgTUFOX09VVFBVVCBp biB3aGljaCB0aGUgbWFuIHBhZ2VzIGFyZSBwbGFjZWQuIElmIGRlZmF1bHRzIHRvIG1hbiBmb2xs b3dlZCBieQ0KIyBNQU5fRVhURU5TSU9OIHdpdGggdGhlIGluaXRpYWwgLiByZW1vdmVkLg0KIyBU aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTUFOIGlzIHNldCB0byBZRVMu DQoNCk1BTl9TVUJESVIgICAgICAgICAgICAgPQ0KDQojIElmIHRoZSBNQU5fTElOS1MgdGFnIGlz IHNldCB0byBZRVMgYW5kIERveHlnZW4gZ2VuZXJhdGVzIG1hbiBvdXRwdXQsIHRoZW4gaXQNCiMg d2lsbCBnZW5lcmF0ZSBvbmUgYWRkaXRpb25hbCBtYW4gZmlsZSBmb3IgZWFjaCBlbnRpdHkgZG9j dW1lbnRlZCBpbiB0aGUgcmVhbA0KIyBtYW4gcGFnZShzKS4gVGhlc2UgYWRkaXRpb25hbCBmaWxl cyBvbmx5IHNvdXJjZSB0aGUgcmVhbCBtYW4gcGFnZSwgYnV0IHdpdGhvdXQNCiMgdGhlbSB0aGUg bWFuIGNvbW1hbmQgd291bGQgYmUgdW5hYmxlIHRvIGZpbmQgdGhlIGNvcnJlY3QgcGFnZS4NCiMg VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0 YWcgR0VORVJBVEVfTUFOIGlzIHNldCB0byBZRVMuDQoNCk1BTl9MSU5LUyAgICAgICAgICAgICAg PSBOTw0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxh dGVkIHRvIHRoZSBYTUwgb3V0cHV0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMgSWYgdGhlIEdF TkVSQVRFX1hNTCB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3aWxsIGdlbmVyYXRlIGFuIFhN TCBmaWxlIHRoYXQNCiMgY2FwdHVyZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbmNsdWRp bmcgYWxsIGRvY3VtZW50YXRpb24uDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KR0VO RVJBVEVfWE1MICAgICAgICAgICA9IE5PDQoNCiMgVGhlIFhNTF9PVVRQVVQgdGFnIGlzIHVzZWQg dG8gc3BlY2lmeSB3aGVyZSB0aGUgWE1MIHBhZ2VzIHdpbGwgYmUgcHV0LiBJZiBhDQojIHJlbGF0 aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJl IHB1dCBpbiBmcm9udCBvZg0KIyBpdC4NCiMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiB4bWwu DQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9YTUwgaXMgc2V0IHRv IFlFUy4NCg0KWE1MX09VVFBVVCAgICAgICAgICAgICA9IHhtbA0KDQojIElmIHRoZSBYTUxfUFJP R1JBTUxJU1RJTkcgdGFnIGlzIHNldCB0byBZRVMsIERveHlnZW4gd2lsbCBkdW1wIHRoZSBwcm9n cmFtDQojIGxpc3RpbmdzIChpbmNsdWRpbmcgc3ludGF4IGhpZ2hsaWdodGluZyBhbmQgY3Jvc3Mt cmVmZXJlbmNpbmcgaW5mb3JtYXRpb24pIHRvDQojIHRoZSBYTUwgb3V0cHV0LiBOb3RlIHRoYXQg ZW5hYmxpbmcgdGhpcyB3aWxsIHNpZ25pZmljYW50bHkgaW5jcmVhc2UgdGhlIHNpemUNCiMgb2Yg dGhlIFhNTCBvdXRwdXQuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQojIFRoaXMgdGFn IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9YTUwgaXMgc2V0IHRvIFlFUy4NCg0KWE1M X1BST0dSQU1MSVNUSU5HICAgICA9IFlFUw0KDQojIElmIHRoZSBYTUxfTlNfTUVNQl9GSUxFX1ND T1BFIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2VuIHdpbGwgaW5jbHVkZQ0KIyBuYW1lc3BhY2Ug bWVtYmVycyBpbiBmaWxlIHNjb3BlIGFzIHdlbGwsIG1hdGNoaW5nIHRoZSBIVE1MIG91dHB1dC4N CiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRo ZSB0YWcgR0VORVJBVEVfWE1MIGlzIHNldCB0byBZRVMuDQoNClhNTF9OU19NRU1CX0ZJTEVfU0NP UEUgPSBOTw0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBy ZWxhdGVkIHRvIHRoZSBET0NCT09LIG91dHB1dA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIElm IHRoZSBHRU5FUkFURV9ET0NCT09LIHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2VuIHdpbGwgZ2Vu ZXJhdGUgRG9jYm9vayBmaWxlcw0KIyB0aGF0IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIFBERi4N CiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KDQpHRU5FUkFURV9ET0NCT09LICAgICAgID0g Tk8NCg0KIyBUaGUgRE9DQk9PS19PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0 aGUgRG9jYm9vayBwYWdlcyB3aWxsIGJlIHB1dC4NCiMgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGVu dGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4NCiMgZnJv bnQgb2YgaXQuDQojIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBpczogZG9jYm9vay4NCiMgVGhpcyB0 YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ0JPT0sgaXMgc2V0IHRvIFlFUy4N Cg0KRE9DQk9PS19PVVRQVVQgICAgICAgICA9IGRvY2Jvb2sNCg0KIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBBdXRvR2VuIERlZmluaXRpb25zIG91 dHB1dA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIElmIHRoZSBHRU5FUkFURV9BVVRPR0VOX0RF RiB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3aWxsIGdlbmVyYXRlIGFuDQojIEF1dG9HZW4g RGVmaW5pdGlvbnMgKHNlZSBodHRwczovL2F1dG9nZW4uc291cmNlZm9yZ2UubmV0LykgZmlsZSB0 aGF0IGNhcHR1cmVzDQojIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvZGUgaW5jbHVkaW5nIGFsbCBk b2N1bWVudGF0aW9uLiBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlDQojIGlzIHN0aWxsIGV4cGVyaW1l bnRhbCBhbmQgaW5jb21wbGV0ZSBhdCB0aGUgbW9tZW50Lg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBp czogTk8uDQoNCkdFTkVSQVRFX0FVVE9HRU5fREVGICAgPSBOTw0KDQojLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFNxbGl0ZTMgb3V0cHV0DQoj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMgSWYgdGhlIEdFTkVSQVRFX1NRTElURTMgdGFnIGlzIHNl dCB0byBZRVMgRG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgU3FsaXRlMw0KIyBkYXRhYmFzZSB3aXRo IHN5bWJvbHMgZm91bmQgYnkgRG94eWdlbiBzdG9yZWQgaW4gdGFibGVzLg0KIyBUaGUgZGVmYXVs dCB2YWx1ZSBpczogTk8uDQoNCkdFTkVSQVRFX1NRTElURTMgICAgICAgPSBOTw0KDQojIFRoZSBT UUxJVEUzX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBTcWxpdGUzIGRh dGFiYXNlIHdpbGwgYmUNCiMgcHV0LiBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUg dmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIHB1dA0KIyBpbiBmcm9udCBvZiBpdC4N CiMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiBzcWxpdGUzLg0KIyBUaGlzIHRhZyByZXF1aXJl cyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfU1FMSVRFMyBpcyBzZXQgdG8gWUVTLg0KDQpTUUxJVEUz X09VVFBVVCAgICAgICAgID0gc3FsaXRlMw0KDQojIFRoZSBTUUxJVEUzX1JFQ1JFQVRFX0RCIHRh ZyBpcyBzZXQgdG8gWUVTLCB0aGUgZXhpc3RpbmcgZG94eWdlbl9zcWxpdGUzLmRiDQojIGRhdGFi YXNlIGZpbGUgd2lsbCBiZSByZWNyZWF0ZWQgd2l0aCBlYWNoIERveHlnZW4gcnVuLiBJZiBzZXQg dG8gTk8sIERveHlnZW4NCiMgd2lsbCB3YXJuIGlmIGEgZGF0YWJhc2UgZmlsZSBpcyBhbHJlYWR5 IGZvdW5kIGFuZCBub3QgbW9kaWZ5IGl0Lg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLg0K IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfU1FMSVRFMyBpcyBzZXQg dG8gWUVTLg0KDQpTUUxJVEUzX1JFQ1JFQVRFX0RCICAgID0gWUVTDQoNCiMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCiMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFBlcmwgbW9kdWxl IG91dHB1dA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIElmIHRoZSBHRU5FUkFURV9QRVJMTU9E IHRhZyBpcyBzZXQgdG8gWUVTLCBEb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBQZXJsIG1vZHVsZQ0K IyBmaWxlIHRoYXQgY2FwdHVyZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbmNsdWRpbmcg YWxsIGRvY3VtZW50YXRpb24uDQojDQojIE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgaXMgc3RpbGwg ZXhwZXJpbWVudGFsIGFuZCBpbmNvbXBsZXRlIGF0IHRoZSBtb21lbnQuDQojIFRoZSBkZWZhdWx0 IHZhbHVlIGlzOiBOTy4NCg0KR0VORVJBVEVfUEVSTE1PRCAgICAgICA9IE5PDQoNCiMgSWYgdGhl IFBFUkxNT0RfTEFURVggdGFnIGlzIHNldCB0byBZRVMsIERveHlnZW4gd2lsbCBnZW5lcmF0ZSB0 aGUgbmVjZXNzYXJ5DQojIE1ha2VmaWxlIHJ1bGVzLCBQZXJsIHNjcmlwdHMgYW5kIExhVGVYIGNv ZGUgdG8gYmUgYWJsZSB0byBnZW5lcmF0ZSBQREYgYW5kIERWSQ0KIyBvdXRwdXQgZnJvbSB0aGUg UGVybCBtb2R1bGUgb3V0cHV0Lg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQojIFRoaXMg dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9QRVJMTU9EIGlzIHNldCB0byBZRVMu DQoNClBFUkxNT0RfTEFURVggICAgICAgICAgPSBOTw0KDQojIElmIHRoZSBQRVJMTU9EX1BSRVRU WSB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIFBlcmwgbW9kdWxlIG91dHB1dCB3aWxsIGJlIG5pY2Vs eQ0KIyBmb3JtYXR0ZWQgc28gaXQgY2FuIGJlIHBhcnNlZCBieSBhIGh1bWFuIHJlYWRlci4gVGhp cyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8NCiMgdW5kZXJzdGFuZCB3aGF0IGlzIGdvaW5nIG9u LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhpcyB0YWcgaXMgc2V0IHRvIE5PLCB0aGUNCiMgc2l6 ZSBvZiB0aGUgUGVybCBtb2R1bGUgb3V0cHV0IHdpbGwgYmUgbXVjaCBzbWFsbGVyIGFuZCBQZXJs IHdpbGwgcGFyc2UgaXQNCiMganVzdCB0aGUgc2FtZS4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6 IFlFUy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1BFUkxNT0Qg aXMgc2V0IHRvIFlFUy4NCg0KUEVSTE1PRF9QUkVUVFkgICAgICAgICA9IFlFUw0KDQojIFRoZSBu YW1lcyBvZiB0aGUgbWFrZSB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRlZCBkb3h5cnVsZXMubWFr ZSBmaWxlIGFyZQ0KIyBwcmVmaXhlZCB3aXRoIHRoZSBzdHJpbmcgY29udGFpbmVkIGluIFBFUkxN T0RfTUFLRVZBUl9QUkVGSVguIFRoaXMgaXMgdXNlZnVsDQojIHNvIGRpZmZlcmVudCBkb3h5cnVs ZXMubWFrZSBmaWxlcyBpbmNsdWRlZCBieSB0aGUgc2FtZSBNYWtlZmlsZSBkb24ndA0KIyBvdmVy d3JpdGUgZWFjaCBvdGhlcidzIHZhcmlhYmxlcy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0 aGUgdGFnIEdFTkVSQVRFX1BFUkxNT0QgaXMgc2V0IHRvIFlFUy4NCg0KUEVSTE1PRF9NQUtFVkFS X1BSRUZJWCA9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ29uZmlndXJhdGlvbiBvcHRpb25z IHJlbGF0ZWQgdG8gdGhlIHByZXByb2Nlc3Nvcg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIElm IHRoZSBFTkFCTEVfUFJFUFJPQ0VTU0lORyB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3aWxs IGV2YWx1YXRlIGFsbA0KIyBDLXByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGZvdW5kIGluIHRoZSBz b3VyY2VzIGFuZCBpbmNsdWRlIGZpbGVzLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLg0K DQpFTkFCTEVfUFJFUFJPQ0VTU0lORyAgID0gWUVTDQoNCiMgSWYgdGhlIE1BQ1JPX0VYUEFOU0lP TiB0YWcgaXMgc2V0IHRvIFlFUywgRG94eWdlbiB3aWxsIGV4cGFuZCBhbGwgbWFjcm8gbmFtZXMN CiMgaW4gdGhlIHNvdXJjZSBjb2RlLiBJZiBzZXQgdG8gTk8sIG9ubHkgY29uZGl0aW9uYWwgY29t cGlsYXRpb24gd2lsbCBiZQ0KIyBwZXJmb3JtZWQuIE1hY3JvIGV4cGFuc2lvbiBjYW4gYmUgZG9u ZSBpbiBhIGNvbnRyb2xsZWQgd2F5IGJ5IHNldHRpbmcNCiMgRVhQQU5EX09OTFlfUFJFREVGIHRv IFlFUy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0 aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4NCg0KTUFDUk9f RVhQQU5TSU9OICAgICAgICA9IE5PDQoNCiMgSWYgdGhlIEVYUEFORF9PTkxZX1BSRURFRiBhbmQg TUFDUk9fRVhQQU5TSU9OIHRhZ3MgYXJlIGJvdGggc2V0IHRvIFlFUyB0aGVuDQojIHRoZSBtYWNy byBleHBhbnNpb24gaXMgbGltaXRlZCB0byB0aGUgbWFjcm9zIHNwZWNpZmllZCB3aXRoIHRoZSBQ UkVERUZJTkVEIGFuZA0KIyBFWFBBTkRfQVNfREVGSU5FRCB0YWdzLg0KIyBUaGUgZGVmYXVsdCB2 YWx1ZSBpczogTk8uDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJF UFJPQ0VTU0lORyBpcyBzZXQgdG8gWUVTLg0KDQpFWFBBTkRfT05MWV9QUkVERUYgICAgID0gTk8N Cg0KIyBJZiB0aGUgU0VBUkNIX0lOQ0xVREVTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgaW5jbHVk ZSBmaWxlcyBpbiB0aGUNCiMgSU5DTFVERV9QQVRIIHdpbGwgYmUgc2VhcmNoZWQgaWYgYSAjaW5j bHVkZSBpcyBmb3VuZC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCiMgVGhpcyB0YWcg cmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMu DQoNClNFQVJDSF9JTkNMVURFUyAgICAgICAgPSBZRVMNCg0KIyBUaGUgSU5DTFVERV9QQVRIIHRh ZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzIHRoYXQNCiMg Y29udGFpbiBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIG5vdCBpbnB1dCBmaWxlcyBidXQgc2hvdWxk IGJlIHByb2Nlc3NlZCBieSB0aGUNCiMgcHJlcHJvY2Vzc29yLiBOb3RlIHRoYXQgdGhlIElOQ0xV REVfUEFUSCBpcyBub3QgcmVjdXJzaXZlLCBzbyB0aGUgc2V0dGluZyBvZg0KIyBSRUNVUlNJVkUg aGFzIG5vIGVmZmVjdCBoZXJlLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU0VB UkNIX0lOQ0xVREVTIGlzIHNldCB0byBZRVMuDQoNCklOQ0xVREVfUEFUSCAgICAgICAgICAgPQ0K DQojIFlvdSBjYW4gdXNlIHRoZSBJTkNMVURFX0ZJTEVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkg b25lIG9yIG1vcmUgd2lsZGNhcmQNCiMgcGF0dGVybnMgKGxpa2UgKi5oIGFuZCAqLmhwcCkgdG8g ZmlsdGVyIG91dCB0aGUgaGVhZGVyLWZpbGVzIGluIHRoZQ0KIyBkaXJlY3Rvcmllcy4gSWYgbGVm dCBibGFuaywgdGhlIHBhdHRlcm5zIHNwZWNpZmllZCB3aXRoIEZJTEVfUEFUVEVSTlMgd2lsbCBi ZQ0KIyB1c2VkLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBS T0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4NCg0KSU5DTFVERV9GSUxFX1BBVFRFUk5TICA9DQoNCiMg VGhlIFBSRURFRklORUQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgbWFj cm8gbmFtZXMgdGhhdCBhcmUNCiMgZGVmaW5lZCBiZWZvcmUgdGhlIHByZXByb2Nlc3NvciBpcyBz dGFydGVkIChzaW1pbGFyIHRvIHRoZSAtRCBvcHRpb24gb2YgZS5nLg0KIyBnY2MpLiBUaGUgYXJn dW1lbnQgb2YgdGhlIHRhZyBpcyBhIGxpc3Qgb2YgbWFjcm9zIG9mIHRoZSBmb3JtOiBuYW1lIG9y DQojIG5hbWU9ZGVmaW5pdGlvbiAobm8gc3BhY2VzKS4gSWYgdGhlIGRlZmluaXRpb24gYW5kIHRo ZSAiPSIgYXJlIG9taXR0ZWQsICI9MSINCiMgaXMgYXNzdW1lZC4gVG8gcHJldmVudCBhIG1hY3Jv IGRlZmluaXRpb24gZnJvbSBiZWluZyB1bmRlZmluZWQgdmlhICN1bmRlZiBvcg0KIyByZWN1cnNp dmVseSBleHBhbmRlZCB1c2UgdGhlIDo9IG9wZXJhdG9yIGluc3RlYWQgb2YgdGhlID0gb3BlcmF0 b3IuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lO RyBpcyBzZXQgdG8gWUVTLg0KDQpQUkVERUZJTkVEICAgICAgICAgICAgID0NCg0KIyBJZiB0aGUg TUFDUk9fRVhQQU5TSU9OIGFuZCBFWFBBTkRfT05MWV9QUkVERUYgdGFncyBhcmUgc2V0IHRvIFlF UyB0aGVuIHRoaXMNCiMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBsaXN0IG9mIG1hY3Jv IG5hbWVzIHRoYXQgc2hvdWxkIGJlIGV4cGFuZGVkLiBUaGUNCiMgbWFjcm8gZGVmaW5pdGlvbiB0 aGF0IGlzIGZvdW5kIGluIHRoZSBzb3VyY2VzIHdpbGwgYmUgdXNlZC4gVXNlIHRoZSBQUkVERUZJ TkVEDQojIHRhZyBpZiB5b3Ugd2FudCB0byB1c2UgYSBkaWZmZXJlbnQgbWFjcm8gZGVmaW5pdGlv biB0aGF0IG92ZXJydWxlcyB0aGUNCiMgZGVmaW5pdGlvbiBmb3VuZCBpbiB0aGUgc291cmNlIGNv ZGUuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lO RyBpcyBzZXQgdG8gWUVTLg0KDQpFWFBBTkRfQVNfREVGSU5FRCAgICAgID0NCg0KIyBJZiB0aGUg U0tJUF9GVU5DVElPTl9NQUNST1MgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuJ3MgcHJl cHJvY2Vzc29yIHdpbGwNCiMgcmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIGZ1bmN0aW9uLWxpa2Ug bWFjcm9zIHRoYXQgYXJlIGFsb25lIG9uIGEgbGluZSwgaGF2ZQ0KIyBhbiBhbGwgdXBwZXJjYXNl IG5hbWUsIGFuZCBkbyBub3QgZW5kIHdpdGggYSBzZW1pY29sb24uIFN1Y2ggZnVuY3Rpb24gbWFj cm9zDQojIGFyZSB0eXBpY2FsbHkgdXNlZCBmb3IgYm9pbGVyLXBsYXRlIGNvZGUsIGFuZCB3aWxs IGNvbmZ1c2UgdGhlIHBhcnNlciBpZiBub3QNCiMgcmVtb3ZlZC4NCiMgVGhlIGRlZmF1bHQgdmFs dWUgaXM6IFlFUy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQ Uk9DRVNTSU5HIGlzIHNldCB0byBZRVMuDQoNClNLSVBfRlVOQ1RJT05fTUFDUk9TICAgPSBZRVMN Cg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0 byBleHRlcm5hbCByZWZlcmVuY2VzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMgVGhlIFRBR0ZJ TEVTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHRhZyBmaWxlcy4gRm9y IGVhY2ggdGFnDQojIGZpbGUgdGhlIGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0 aW9uIHNob3VsZCBiZSBhZGRlZC4gVGhlIGZvcm1hdCBvZg0KIyBhIHRhZyBmaWxlIHdpdGhvdXQg dGhpcyBsb2NhdGlvbiBpcyBhcyBmb2xsb3dzOg0KIyBUQUdGSUxFUyA9IGZpbGUxIGZpbGUyIC4u Lg0KIyBBZGRpbmcgbG9jYXRpb24gZm9yIHRoZSB0YWcgZmlsZXMgaXMgZG9uZSBhcyBmb2xsb3dz Og0KIyBUQUdGSUxFUyA9IGZpbGUxPWxvYzEgImZpbGUyID0gbG9jMiIgLi4uDQojIHdoZXJlIGxv YzEgYW5kIGxvYzIgY2FuIGJlIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGhzIG9yIFVSTHMuIFNl ZSB0aGUNCiMgc2VjdGlvbiAiTGlua2luZyB0byBleHRlcm5hbCBkb2N1bWVudGF0aW9uIiBmb3Ig bW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXNlDQojIG9mIHRhZyBmaWxlcy4NCiMgTm90ZTog RWFjaCB0YWcgZmlsZSBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZSAod2hlcmUgdGhlIG5hbWUgZG9l cyBOT1QgaW5jbHVkZQ0KIyB0aGUgcGF0aCkuIElmIGEgdGFnIGZpbGUgaXMgbm90IGxvY2F0ZWQg aW4gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBEb3h5Z2VuIGlzDQojIHJ1biwgeW91IG11c3QgYWxz byBzcGVjaWZ5IHRoZSBwYXRoIHRvIHRoZSB0YWdmaWxlIGhlcmUuDQoNClRBR0ZJTEVTICAgICAg ICAgICAgICAgPQ0KDQojIFdoZW4gYSBmaWxlIG5hbWUgaXMgc3BlY2lmaWVkIGFmdGVyIEdFTkVS QVRFX1RBR0ZJTEUsIERveHlnZW4gd2lsbCBjcmVhdGUgYQ0KIyB0YWcgZmlsZSB0aGF0IGlzIGJh c2VkIG9uIHRoZSBpbnB1dCBmaWxlcyBpdCByZWFkcy4gU2VlIHNlY3Rpb24gIkxpbmtpbmcgdG8N CiMgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbiIgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhl IHVzYWdlIG9mIHRhZyBmaWxlcy4NCg0KR0VORVJBVEVfVEFHRklMRSAgICAgICA9DQoNCiMgSWYg dGhlIEFMTEVYVEVSTkFMUyB0YWcgaXMgc2V0IHRvIFlFUywgYWxsIGV4dGVybmFsIGNsYXNzZXMg YW5kIG5hbWVzcGFjZXMNCiMgd2lsbCBiZSBsaXN0ZWQgaW4gdGhlIGNsYXNzIGFuZCBuYW1lc3Bh Y2UgaW5kZXguIElmIHNldCB0byBOTywgb25seSB0aGUNCiMgaW5oZXJpdGVkIGV4dGVybmFsIGNs YXNzZXMgd2lsbCBiZSBsaXN0ZWQuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCg0KQUxM RVhURVJOQUxTICAgICAgICAgICA9IE5PDQoNCiMgSWYgdGhlIEVYVEVSTkFMX0dST1VQUyB0YWcg aXMgc2V0IHRvIFlFUywgYWxsIGV4dGVybmFsIGdyb3VwcyB3aWxsIGJlIGxpc3RlZA0KIyBpbiB0 aGUgdG9waWMgaW5kZXguIElmIHNldCB0byBOTywgb25seSB0aGUgY3VycmVudCBwcm9qZWN0J3Mg Z3JvdXBzIHdpbGwgYmUNCiMgbGlzdGVkLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLg0K DQpFWFRFUk5BTF9HUk9VUFMgICAgICAgID0gWUVTDQoNCiMgSWYgdGhlIEVYVEVSTkFMX1BBR0VT IHRhZyBpcyBzZXQgdG8gWUVTLCBhbGwgZXh0ZXJuYWwgcGFnZXMgd2lsbCBiZSBsaXN0ZWQgaW4N CiMgdGhlIHJlbGF0ZWQgcGFnZXMgaW5kZXguIElmIHNldCB0byBOTywgb25seSB0aGUgY3VycmVu dCBwcm9qZWN0J3MgcGFnZXMgd2lsbA0KIyBiZSBsaXN0ZWQuDQojIFRoZSBkZWZhdWx0IHZhbHVl IGlzOiBZRVMuDQoNCkVYVEVSTkFMX1BBR0VTICAgICAgICAgPSBZRVMNCg0KIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBkaWFncmFtIGdlbmVy YXRvciB0b29scw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIElmIHNldCB0byBZRVMgdGhlIGlu aGVyaXRhbmNlIGFuZCBjb2xsYWJvcmF0aW9uIGdyYXBocyB3aWxsIGhpZGUgaW5oZXJpdGFuY2UN CiMgYW5kIHVzYWdlIHJlbGF0aW9ucyBpZiB0aGUgdGFyZ2V0IGlzIHVuZG9jdW1lbnRlZCBvciBp cyBub3QgYSBjbGFzcy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KSElERV9VTkRP Q19SRUxBVElPTlMgICA9IFlFUw0KDQojIElmIHlvdSBzZXQgdGhlIEhBVkVfRE9UIHRhZyB0byBZ RVMgdGhlbiBEb3h5Z2VuIHdpbGwgYXNzdW1lIHRoZSBkb3QgdG9vbCBpcw0KIyBhdmFpbGFibGUg ZnJvbSB0aGUgcGF0aC4gVGhpcyB0b29sIGlzIHBhcnQgb2YgR3JhcGh2aXogKHNlZToNCiMgaHR0 cHM6Ly93d3cuZ3JhcGh2aXoub3JnLyksIGEgZ3JhcGggdmlzdWFsaXphdGlvbiB0b29sa2l0IGZy b20gQVQmVCBhbmQgTHVjZW50DQojIEJlbGwgTGFicy4gVGhlIG90aGVyIG9wdGlvbnMgaW4gdGhp cyBzZWN0aW9uIGhhdmUgbm8gZWZmZWN0IGlmIHRoaXMgb3B0aW9uIGlzDQojIHNldCB0byBOTw0K IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQoNCkhBVkVfRE9UICAgICAgICAgICAgICAgPSBZ RVMNCg0KIyBUaGUgRE9UX05VTV9USFJFQURTIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRvdCBp bnZvY2F0aW9ucyBEb3h5Z2VuIGlzIGFsbG93ZWQNCiMgdG8gcnVuIGluIHBhcmFsbGVsLiBXaGVu IHNldCB0byAwIERveHlnZW4gd2lsbCBiYXNlIHRoaXMgb24gdGhlIG51bWJlciBvZg0KIyBwcm9j ZXNzb3JzIGF2YWlsYWJsZSBpbiB0aGUgc3lzdGVtLiBZb3UgY2FuIHNldCBpdCBleHBsaWNpdGx5 IHRvIGEgdmFsdWUNCiMgbGFyZ2VyIHRoYW4gMCB0byBnZXQgY29udHJvbCBvdmVyIHRoZSBiYWxh bmNlIGJldHdlZW4gQ1BVIGxvYWQgYW5kIHByb2Nlc3NpbmcNCiMgc3BlZWQuDQojIE1pbmltdW0g dmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDMyLCBkZWZhdWx0IHZhbHVlOiAwLg0KIyBUaGlzIHRh ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4NCg0KRE9UX05V TV9USFJFQURTICAgICAgICA9IDANCg0KIyBET1RfQ09NTU9OX0FUVFIgaXMgY29tbW9uIGF0dHJp YnV0ZXMgZm9yIG5vZGVzLCBlZGdlcyBhbmQgbGFiZWxzIG9mDQojIHN1YmdyYXBocy4gV2hlbiB5 b3Ugd2FudCBhIGRpZmZlcmVudGx5IGxvb2tpbmcgZm9udCBpbiB0aGUgZG90IGZpbGVzIHRoYXQN CiMgRG94eWdlbiBnZW5lcmF0ZXMgeW91IGNhbiBzcGVjaWZ5IGZvbnRuYW1lLCBmb250Y29sb3Ig YW5kIGZvbnRzaXplIGF0dHJpYnV0ZXMuDQojIEZvciBkZXRhaWxzIHBsZWFzZSBzZWUgPGEgaHJl Zj1odHRwczovL2dyYXBodml6Lm9yZy9kb2MvaW5mby9hdHRycy5odG1sPk5vZGUsDQojIEVkZ2Ug YW5kIEdyYXBoIEF0dHJpYnV0ZXMgc3BlY2lmaWNhdGlvbjwvYT4gWW91IG5lZWQgdG8gbWFrZSBz dXJlIGRvdCBpcyBhYmxlDQojIHRvIGZpbmQgdGhlIGZvbnQsIHdoaWNoIGNhbiBiZSBkb25lIGJ5 IHB1dHRpbmcgaXQgaW4gYSBzdGFuZGFyZCBsb2NhdGlvbiBvciBieQ0KIyBzZXR0aW5nIHRoZSBE T1RGT05UUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBieSBzZXR0aW5nIERPVF9GT05UUEFU SCB0byB0aGUNCiMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZvbnQuIERlZmF1bHQgZ3JhcGh2 aXogZm9udHNpemUgaXMgMTQuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBmb250bmFtZT1IZWx2 ZXRpY2EsZm9udHNpemU9MTAuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZF X0RPVCBpcyBzZXQgdG8gWUVTLg0KDQpET1RfQ09NTU9OX0FUVFIgICAgICAgID0gImZvbnRuYW1l PUhlbHZldGljYSxmb250c2l6ZT0xMCINCg0KIyBET1RfRURHRV9BVFRSIGlzIGNvbmNhdGVuYXRl ZCB3aXRoIERPVF9DT01NT05fQVRUUi4gRm9yIGVsZWdhbnQgc3R5bGUgeW91IGNhbg0KIyBhZGQg J2Fycm93aGVhZD1vcGVuLCBhcnJvd3RhaWw9b3BlbiwgYXJyb3dzaXplPTAuNScuIDxhDQojIGhy ZWY9aHR0cHM6Ly9ncmFwaHZpei5vcmcvZG9jL2luZm8vYXJyb3dzLmh0bWw+Q29tcGxldGUgZG9j dW1lbnRhdGlvbiBhYm91dA0KIyBhcnJvd3Mgc2hhcGVzLjwvYT4NCiMgVGhlIGRlZmF1bHQgdmFs dWUgaXM6IGxhYmVsZm9udG5hbWU9SGVsdmV0aWNhLGxhYmVsZm9udHNpemU9MTAuDQojIFRoaXMg dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLg0KDQpET1Rf RURHRV9BVFRSICAgICAgICAgID0gImxhYmVsZm9udG5hbWU9SGVsdmV0aWNhLGxhYmVsZm9udHNp emU9MTAiDQoNCiMgRE9UX05PREVfQVRUUiBpcyBjb25jYXRlbmF0ZWQgd2l0aCBET1RfQ09NTU9O X0FUVFIuIEZvciB2aWV3IHdpdGhvdXQgYm94ZXMNCiMgYXJvdW5kIG5vZGVzIHNldCAnc2hhcGU9 cGxhaW4nIG9yICdzaGFwZT1wbGFpbnRleHQnIDxhDQojIGhyZWY9aHR0cHM6Ly93d3cuZ3JhcGh2 aXoub3JnL2RvYy9pbmZvL3NoYXBlcy5odG1sPlNoYXBlcyBzcGVjaWZpY2F0aW9uPC9hPg0KIyBU aGUgZGVmYXVsdCB2YWx1ZSBpczogc2hhcGU9Ym94LGhlaWdodD0wLjIsd2lkdGg9MC40Lg0KIyBU aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4NCg0K RE9UX05PREVfQVRUUiAgICAgICAgICA9ICJzaGFwZT1ib3gsaGVpZ2h0PTAuMix3aWR0aD0wLjQi DQoNCiMgWW91IGNhbiBzZXQgdGhlIHBhdGggd2hlcmUgZG90IGNhbiBmaW5kIGZvbnQgc3BlY2lm aWVkIHdpdGggZm9udG5hbWUgaW4NCiMgRE9UX0NPTU1PTl9BVFRSIGFuZCBvdGhlcnMgZG90IGF0 dHJpYnV0ZXMuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBz ZXQgdG8gWUVTLg0KDQpET1RfRk9OVFBBVEggICAgICAgICAgID0NCg0KIyBJZiB0aGUgQ0xBU1Nf R1JBUEggdGFnIGlzIHNldCB0byBZRVMgb3IgR1JBUEggb3IgQlVJTFRJTiB0aGVuIERveHlnZW4g d2lsbA0KIyBnZW5lcmF0ZSBhIGdyYXBoIGZvciBlYWNoIGRvY3VtZW50ZWQgY2xhc3Mgc2hvd2lu ZyB0aGUgZGlyZWN0IGFuZCBpbmRpcmVjdA0KIyBpbmhlcml0YW5jZSByZWxhdGlvbnMuIEluIGNh c2UgdGhlIENMQVNTX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVTIG9yIEdSQVBIIGFuZA0KIyBIQVZF X0RPVCBpcyBlbmFibGVkIGFzIHdlbGwsIHRoZW4gZG90IHdpbGwgYmUgdXNlZCB0byBkcmF3IHRo ZSBncmFwaC4gSW4gY2FzZQ0KIyB0aGUgQ0xBU1NfR1JBUEggdGFnIGlzIHNldCB0byBZRVMgYW5k IEhBVkVfRE9UIGlzIGRpc2FibGVkIG9yIGlmIHRoZQ0KIyBDTEFTU19HUkFQSCB0YWcgaXMgc2V0 IHRvIEJVSUxUSU4sIHRoZW4gdGhlIGJ1aWx0LWluIGdlbmVyYXRvciB3aWxsIGJlIHVzZWQuDQoj IElmIHRoZSBDTEFTU19HUkFQSCB0YWcgaXMgc2V0IHRvIFRFWFQgdGhlIGRpcmVjdCBhbmQgaW5k aXJlY3QgaW5oZXJpdGFuY2UNCiMgcmVsYXRpb25zIHdpbGwgYmUgc2hvd24gYXMgdGV4dHMgLyBs aW5rcy4gRXhwbGljaXQgZW5hYmxpbmcgYW4gaW5oZXJpdGFuY2UNCiMgZ3JhcGggb3IgY2hvb3Np bmcgYSBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb24gZm9yIGFuIGluaGVyaXRhbmNlIGdyYXBoIG9m IGENCiMgc3BlY2lmaWMgY2xhc3MsIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkgbWVhbnMgb2YgdGhl IGNvbW1hbmQgXGluaGVyaXRhbmNlZ3JhcGguDQojIERpc2FibGluZyBhbiBpbmhlcml0YW5jZSBn cmFwaCBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IG1lYW5zIG9mIHRoZSBjb21tYW5kDQojIFxoaWRl aW5oZXJpdGFuY2VncmFwaC4NCiMgUG9zc2libGUgdmFsdWVzIGFyZTogTk8sIFlFUywgVEVYVCwg R1JBUEggYW5kIEJVSUxUSU4uDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQoNCkNMQVNT X0dSQVBIICAgICAgICAgICAgPSBZRVMNCg0KIyBJZiB0aGUgQ09MTEFCT1JBVElPTl9HUkFQSCB0 YWcgaXMgc2V0IHRvIFlFUyB0aGVuIERveHlnZW4gd2lsbCBnZW5lcmF0ZSBhDQojIGdyYXBoIGZv ciBlYWNoIGRvY3VtZW50ZWQgY2xhc3Mgc2hvd2luZyB0aGUgZGlyZWN0IGFuZCBpbmRpcmVjdCBp bXBsZW1lbnRhdGlvbg0KIyBkZXBlbmRlbmNpZXMgKGluaGVyaXRhbmNlLCBjb250YWlubWVudCwg YW5kIGNsYXNzIHJlZmVyZW5jZXMgdmFyaWFibGVzKSBvZiB0aGUNCiMgY2xhc3Mgd2l0aCBvdGhl ciBkb2N1bWVudGVkIGNsYXNzZXMuIEV4cGxpY2l0IGVuYWJsaW5nIGEgY29sbGFib3JhdGlvbiBn cmFwaCwNCiMgd2hlbiBDT0xMQUJPUkFUSU9OX0dSQVBIIGlzIHNldCB0byBOTywgY2FuIGJlIGFj Y29tcGxpc2hlZCBieSBtZWFucyBvZiB0aGUNCiMgY29tbWFuZCBcY29sbGFib3JhdGlvbmdyYXBo LiBEaXNhYmxpbmcgYSBjb2xsYWJvcmF0aW9uIGdyYXBoIGNhbiBiZQ0KIyBhY2NvbXBsaXNoZWQg YnkgbWVhbnMgb2YgdGhlIGNvbW1hbmQgXGhpZGVjb2xsYWJvcmF0aW9uZ3JhcGguDQojIFRoZSBk ZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBI QVZFX0RPVCBpcyBzZXQgdG8gWUVTLg0KDQpDT0xMQUJPUkFUSU9OX0dSQVBIICAgID0gWUVTDQoN CiMgSWYgdGhlIEdST1VQX0dSQVBIUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIERveHlnZW4gd2ls bCBnZW5lcmF0ZSBhIGdyYXBoIGZvcg0KIyBncm91cHMsIHNob3dpbmcgdGhlIGRpcmVjdCBncm91 cHMgZGVwZW5kZW5jaWVzLiBFeHBsaWNpdCBlbmFibGluZyBhIGdyb3VwDQojIGRlcGVuZGVuY3kg Z3JhcGgsIHdoZW4gR1JPVVBfR1JBUEhTIGlzIHNldCB0byBOTywgY2FuIGJlIGFjY29tcGxpc2hl ZCBieSBtZWFucw0KIyBvZiB0aGUgY29tbWFuZCBcZ3JvdXBncmFwaC4gRGlzYWJsaW5nIGEgZGly ZWN0b3J5IGdyYXBoIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkNCiMgbWVhbnMgb2YgdGhlIGNvbW1h bmQgXGhpZGVncm91cGdyYXBoLiBTZWUgYWxzbyB0aGUgY2hhcHRlciBHcm91cGluZyBpbiB0aGUN CiMgbWFudWFsLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLg0KIyBUaGlzIHRhZyByZXF1 aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4NCg0KR1JPVVBfR1JBUEhT ICAgICAgICAgICA9IFlFUw0KDQojIElmIHRoZSBVTUxfTE9PSyB0YWcgaXMgc2V0IHRvIFlFUywg RG94eWdlbiB3aWxsIGdlbmVyYXRlIGluaGVyaXRhbmNlIGFuZA0KIyBjb2xsYWJvcmF0aW9uIGRp YWdyYW1zIGluIGEgc3R5bGUgc2ltaWxhciB0byB0aGUgT01HJ3MgVW5pZmllZCBNb2RlbGluZw0K IyBMYW5ndWFnZS4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1 aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4NCg0KVU1MX0xPT0sgICAg ICAgICAgICAgICA9IE5PDQoNCiMgSWYgdGhlIFVNTF9MT09LIHRhZyBpcyBlbmFibGVkLCB0aGUg ZmllbGRzIGFuZCBtZXRob2RzIGFyZSBzaG93biBpbnNpZGUgdGhlDQojIGNsYXNzIG5vZGUuIElm IHRoZXJlIGFyZSBtYW55IGZpZWxkcyBvciBtZXRob2RzIGFuZCBtYW55IG5vZGVzIHRoZSBncmFw aCBtYXkNCiMgYmVjb21lIHRvbyBiaWcgdG8gYmUgdXNlZnVsLiBUaGUgVU1MX0xJTUlUX05VTV9G SUVMRFMgdGhyZXNob2xkIGxpbWl0cyB0aGUNCiMgbnVtYmVyIG9mIGl0ZW1zIGZvciBlYWNoIHR5 cGUgdG8gbWFrZSB0aGUgc2l6ZSBtb3JlIG1hbmFnZWFibGUuIFNldCB0aGlzIHRvIDANCiMgZm9y IG5vIGxpbWl0LiBOb3RlIHRoYXQgdGhlIHRocmVzaG9sZCBtYXkgYmUgZXhjZWVkZWQgYnkgNTAl IGJlZm9yZSB0aGUgbGltaXQNCiMgaXMgZW5mb3JjZWQuIFNvIHdoZW4geW91IHNldCB0aGUgdGhy ZXNob2xkIHRvIDEwLCB1cCB0byAxNSBmaWVsZHMgbWF5IGFwcGVhciwNCiMgYnV0IGlmIHRoZSBu dW1iZXIgZXhjZWVkcyAxNSwgdGhlIHRvdGFsIGFtb3VudCBvZiBmaWVsZHMgc2hvd24gaXMgbGlt aXRlZCB0bw0KIyAxMC4NCiMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMTAwLCBk ZWZhdWx0IHZhbHVlOiAxMC4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVNTF9M T09LIGlzIHNldCB0byBZRVMuDQoNClVNTF9MSU1JVF9OVU1fRklFTERTICAgPSAxMA0KDQojIElm IHRoZSBET1RfVU1MX0RFVEFJTFMgdGFnIGlzIHNldCB0byBOTywgRG94eWdlbiB3aWxsIHNob3cg YXR0cmlidXRlcyBhbmQNCiMgbWV0aG9kcyB3aXRob3V0IHR5cGVzIGFuZCBhcmd1bWVudHMgaW4g dGhlIFVNTCBncmFwaHMuIElmIHRoZSBET1RfVU1MX0RFVEFJTFMNCiMgdGFnIGlzIHNldCB0byBZ RVMsIERveHlnZW4gd2lsbCBhZGQgdHlwZSBhbmQgYXJndW1lbnRzIGZvciBhdHRyaWJ1dGVzIGFu ZA0KIyBtZXRob2RzIGluIHRoZSBVTUwgZ3JhcGhzLiBJZiB0aGUgRE9UX1VNTF9ERVRBSUxTIHRh ZyBpcyBzZXQgdG8gTk9ORSwgRG94eWdlbg0KIyB3aWxsIG5vdCBnZW5lcmF0ZSBmaWVsZHMgd2l0 aCBjbGFzcyBtZW1iZXIgaW5mb3JtYXRpb24gaW4gdGhlIFVNTCBncmFwaHMuIFRoZQ0KIyBjbGFz cyBkaWFncmFtcyB3aWxsIGxvb2sgc2ltaWxhciB0byB0aGUgZGVmYXVsdCBjbGFzcyBkaWFncmFt cyBidXQgdXNpbmcgVU1MDQojIG5vdGF0aW9uIGZvciB0aGUgcmVsYXRpb25zaGlwcy4NCiMgUG9z c2libGUgdmFsdWVzIGFyZTogTk8sIFlFUyBhbmQgTk9ORS4NCiMgVGhlIGRlZmF1bHQgdmFsdWUg aXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgVU1MX0xPT0sgaXMgc2V0 IHRvIFlFUy4NCg0KRE9UX1VNTF9ERVRBSUxTICAgICAgICA9IE5PDQoNCiMgVGhlIERPVF9XUkFQ X1RIUkVTSE9MRCB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBj aGFyYWN0ZXJzDQojIHRvIGRpc3BsYXkgb24gYSBzaW5nbGUgbGluZS4gSWYgdGhlIGFjdHVhbCBs aW5lIGxlbmd0aCBleGNlZWRzIHRoaXMgdGhyZXNob2xkDQojIHNpZ25pZmljYW50bHkgaXQgd2ls bCBiZSB3cmFwcGVkIGFjcm9zcyBtdWx0aXBsZSBsaW5lcy4gU29tZSBoZXVyaXN0aWNzIGFyZQ0K IyBhcHBsaWVkIHRvIGF2b2lkIHVnbHkgbGluZSBicmVha3MuDQojIE1pbmltdW0gdmFsdWU6IDAs IG1heGltdW0gdmFsdWU6IDEwMDAsIGRlZmF1bHQgdmFsdWU6IDE3Lg0KIyBUaGlzIHRhZyByZXF1 aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4NCg0KRE9UX1dSQVBfVEhS RVNIT0xEICAgICA9IDE3DQoNCiMgSWYgdGhlIFRFTVBMQVRFX1JFTEFUSU9OUyB0YWcgaXMgc2V0 IHRvIFlFUyB0aGVuIHRoZSBpbmhlcml0YW5jZSBhbmQNCiMgY29sbGFib3JhdGlvbiBncmFwaHMg d2lsbCBzaG93IHRoZSByZWxhdGlvbnMgYmV0d2VlbiB0ZW1wbGF0ZXMgYW5kIHRoZWlyDQojIGlu c3RhbmNlcy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJl cyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4NCg0KVEVNUExBVEVfUkVMQVRJ T05TICAgICA9IE5PDQoNCiMgSWYgdGhlIElOQ0xVREVfR1JBUEgsIEVOQUJMRV9QUkVQUk9DRVNT SU5HIGFuZCBTRUFSQ0hfSU5DTFVERVMgdGFncyBhcmUgc2V0IHRvDQojIFlFUyB0aGVuIERveHln ZW4gd2lsbCBnZW5lcmF0ZSBhIGdyYXBoIGZvciBlYWNoIGRvY3VtZW50ZWQgZmlsZSBzaG93aW5n IHRoZQ0KIyBkaXJlY3QgYW5kIGluZGlyZWN0IGluY2x1ZGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBm aWxlIHdpdGggb3RoZXIgZG9jdW1lbnRlZA0KIyBmaWxlcy4gRXhwbGljaXQgZW5hYmxpbmcgYW4g aW5jbHVkZSBncmFwaCwgd2hlbiBJTkNMVURFX0dSQVBIIGlzIGlzIHNldCB0byBOTywNCiMgY2Fu IGJlIGFjY29tcGxpc2hlZCBieSBtZWFucyBvZiB0aGUgY29tbWFuZCBcaW5jbHVkZWdyYXBoLiBE aXNhYmxpbmcgYW4NCiMgaW5jbHVkZSBncmFwaCBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IG1lYW5z IG9mIHRoZSBjb21tYW5kIFxoaWRlaW5jbHVkZWdyYXBoLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBp czogWUVTLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0 IHRvIFlFUy4NCg0KSU5DTFVERV9HUkFQSCAgICAgICAgICA9IFlFUw0KDQojIElmIHRoZSBJTkNM VURFRF9CWV9HUkFQSCwgRU5BQkxFX1BSRVBST0NFU1NJTkcgYW5kIFNFQVJDSF9JTkNMVURFUyB0 YWdzIGFyZQ0KIyBzZXQgdG8gWUVTIHRoZW4gRG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGgg Zm9yIGVhY2ggZG9jdW1lbnRlZCBmaWxlIHNob3dpbmcNCiMgdGhlIGRpcmVjdCBhbmQgaW5kaXJl Y3QgaW5jbHVkZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGZpbGUgd2l0aCBvdGhlciBkb2N1bWVudGVk DQojIGZpbGVzLiBFeHBsaWNpdCBlbmFibGluZyBhbiBpbmNsdWRlZCBieSBncmFwaCwgd2hlbiBJ TkNMVURFRF9CWV9HUkFQSCBpcyBzZXQNCiMgdG8gTk8sIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkg bWVhbnMgb2YgdGhlIGNvbW1hbmQgXGluY2x1ZGVkYnlncmFwaC4gRGlzYWJsaW5nDQojIGFuIGlu Y2x1ZGVkIGJ5IGdyYXBoIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkgbWVhbnMgb2YgdGhlIGNvbW1h bmQNCiMgXGhpZGVpbmNsdWRlZGJ5Z3JhcGguDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMu DQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVT Lg0KDQpJTkNMVURFRF9CWV9HUkFQSCAgICAgID0gWUVTDQoNCiMgSWYgdGhlIENBTExfR1JBUEgg dGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBjYWxsDQojIGRl cGVuZGVuY3kgZ3JhcGggZm9yIGV2ZXJ5IGdsb2JhbCBmdW5jdGlvbiBvciBjbGFzcyBtZXRob2Qu DQojDQojIE5vdGUgdGhhdCBlbmFibGluZyB0aGlzIG9wdGlvbiB3aWxsIHNpZ25pZmljYW50bHkg aW5jcmVhc2UgdGhlIHRpbWUgb2YgYSBydW4uDQojIFNvIGluIG1vc3QgY2FzZXMgaXQgd2lsbCBi ZSBiZXR0ZXIgdG8gZW5hYmxlIGNhbGwgZ3JhcGhzIGZvciBzZWxlY3RlZA0KIyBmdW5jdGlvbnMg b25seSB1c2luZyB0aGUgXGNhbGxncmFwaCBjb21tYW5kLiBEaXNhYmxpbmcgYSBjYWxsIGdyYXBo IGNhbiBiZQ0KIyBhY2NvbXBsaXNoZWQgYnkgbWVhbnMgb2YgdGhlIGNvbW1hbmQgXGhpZGVjYWxs Z3JhcGguDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMg dGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuDQoNCkNBTExfR1JBUEggICAgICAg ICAgICAgPSBZRVMNCg0KIyBJZiB0aGUgQ0FMTEVSX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVTIHRo ZW4gRG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgY2FsbGVyDQojIGRlcGVuZGVuY3kgZ3JhcGggZm9y IGV2ZXJ5IGdsb2JhbCBmdW5jdGlvbiBvciBjbGFzcyBtZXRob2QuDQojDQojIE5vdGUgdGhhdCBl bmFibGluZyB0aGlzIG9wdGlvbiB3aWxsIHNpZ25pZmljYW50bHkgaW5jcmVhc2UgdGhlIHRpbWUg b2YgYSBydW4uDQojIFNvIGluIG1vc3QgY2FzZXMgaXQgd2lsbCBiZSBiZXR0ZXIgdG8gZW5hYmxl IGNhbGxlciBncmFwaHMgZm9yIHNlbGVjdGVkDQojIGZ1bmN0aW9ucyBvbmx5IHVzaW5nIHRoZSBc Y2FsbGVyZ3JhcGggY29tbWFuZC4gRGlzYWJsaW5nIGEgY2FsbGVyIGdyYXBoIGNhbiBiZQ0KIyBh Y2NvbXBsaXNoZWQgYnkgbWVhbnMgb2YgdGhlIGNvbW1hbmQgXGhpZGVjYWxsZXJncmFwaC4NCiMg VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0 YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4NCg0KQ0FMTEVSX0dSQVBIICAgICAgICAgICA9IFlF Uw0KDQojIElmIHRoZSBHUkFQSElDQUxfSElFUkFSQ0hZIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4g RG94eWdlbiB3aWxsIGdyYXBoaWNhbA0KIyBoaWVyYXJjaHkgb2YgYWxsIGNsYXNzZXMgaW5zdGVh ZCBvZiBhIHRleHR1YWwgb25lLg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLg0KIyBUaGlz IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4NCg0KR1JB UEhJQ0FMX0hJRVJBUkNIWSAgICA9IFlFUw0KDQojIElmIHRoZSBESVJFQ1RPUllfR1JBUEggdGFn IGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIHdpbGwgc2hvdyB0aGUNCiMgZGVwZW5kZW5jaWVz IGEgZGlyZWN0b3J5IGhhcyBvbiBvdGhlciBkaXJlY3RvcmllcyBpbiBhIGdyYXBoaWNhbCB3YXku IFRoZQ0KIyBkZXBlbmRlbmN5IHJlbGF0aW9ucyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgI2luY2x1 ZGUgcmVsYXRpb25zIGJldHdlZW4gdGhlDQojIGZpbGVzIGluIHRoZSBkaXJlY3Rvcmllcy4gRXhw bGljaXQgZW5hYmxpbmcgYSBkaXJlY3RvcnkgZ3JhcGgsIHdoZW4NCiMgRElSRUNUT1JZX0dSQVBI IGlzIHNldCB0byBOTywgY2FuIGJlIGFjY29tcGxpc2hlZCBieSBtZWFucyBvZiB0aGUgY29tbWFu ZA0KIyBcZGlyZWN0b3J5Z3JhcGguIERpc2FibGluZyBhIGRpcmVjdG9yeSBncmFwaCBjYW4gYmUg YWNjb21wbGlzaGVkIGJ5IG1lYW5zIG9mDQojIHRoZSBjb21tYW5kIFxoaWRlZGlyZWN0b3J5Z3Jh cGguDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRo YXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLg0KDQpESVJFQ1RPUllfR1JBUEggICAg ICAgID0gWUVTDQoNCiMgVGhlIERJUl9HUkFQSF9NQVhfREVQVEggdGFnIGNhbiBiZSB1c2VkIHRv IGxpbWl0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBsZXZlbHMNCiMgb2YgY2hpbGQgZGlyZWN0b3Jp ZXMgZ2VuZXJhdGVkIGluIGRpcmVjdG9yeSBkZXBlbmRlbmN5IGdyYXBocyBieSBkb3QuDQojIE1p bmltdW0gdmFsdWU6IDEsIG1heGltdW0gdmFsdWU6IDI1LCBkZWZhdWx0IHZhbHVlOiAxLg0KIyBU aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRElSRUNUT1JZX0dSQVBIIGlzIHNldCB0byBZ RVMuDQoNCkRJUl9HUkFQSF9NQVhfREVQVEggICAgPSAxDQoNCiMgVGhlIERPVF9JTUFHRV9GT1JN QVQgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgaW1hZ2UgZm9ybWF0IG9mIHRoZSBpbWFnZXMN CiMgZ2VuZXJhdGVkIGJ5IGRvdC4gRm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBpbWFnZSBmb3Jt YXRzIHNlZSB0aGUgc2VjdGlvbg0KIyBvdXRwdXQgZm9ybWF0cyBpbiB0aGUgZG9jdW1lbnRhdGlv biBvZiB0aGUgZG90IHRvb2wgKEdyYXBodml6IChzZWU6DQojIGh0dHBzOi8vd3d3LmdyYXBodml6 Lm9yZy8pKS4NCiMgTm90ZTogSWYgeW91IGNob29zZSBzdmcgeW91IG5lZWQgdG8gc2V0IEhUTUxf RklMRV9FWFRFTlNJT04gdG8geGh0bWwgaW4gb3JkZXINCiMgdG8gbWFrZSB0aGUgU1ZHIGZpbGVz IHZpc2libGUgaW4gSUUgOSsgKG90aGVyIGJyb3dzZXJzIGRvIG5vdCBoYXZlIHRoaXMNCiMgcmVx dWlyZW1lbnQpLg0KIyBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBwbmcsIGpwZywgZ2lmLCBzdmcsIHBu ZzpnZCwgcG5nOmdkOmdkLCBwbmc6Y2Fpcm8sDQojIHBuZzpjYWlybzpnZCwgcG5nOmNhaXJvOmNh aXJvLCBwbmc6Y2Fpcm86Z2RpcGx1cywgcG5nOmdkaXBsdXMgYW5kDQojIHBuZzpnZGlwbHVzOmdk aXBsdXMuDQojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBwbmcuDQojIFRoaXMgdGFnIHJlcXVpcmVz IHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLg0KDQpET1RfSU1BR0VfRk9STUFU ICAgICAgID0gcG5nDQoNCiMgSWYgRE9UX0lNQUdFX0ZPUk1BVCBpcyBzZXQgdG8gc3ZnLCB0aGVu IHRoaXMgb3B0aW9uIGNhbiBiZSBzZXQgdG8gWUVTIHRvDQojIGVuYWJsZSBnZW5lcmF0aW9uIG9m IGludGVyYWN0aXZlIFNWRyBpbWFnZXMgdGhhdCBhbGxvdyB6b29taW5nIGFuZCBwYW5uaW5nLg0K Iw0KIyBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyBhIG1vZGVybiBicm93c2VyIG90aGVyIHRoYW4g SW50ZXJuZXQgRXhwbG9yZXIuIFRlc3RlZA0KIyBhbmQgd29ya2luZyBhcmUgRmlyZWZveCwgQ2hy b21lLCBTYWZhcmksIGFuZCBPcGVyYS4NCiMgTm90ZTogRm9yIElFIDkrIHlvdSBuZWVkIHRvIHNl dCBIVE1MX0ZJTEVfRVhURU5TSU9OIHRvIHhodG1sIGluIG9yZGVyIHRvIG1ha2UNCiMgdGhlIFNW RyBmaWxlcyB2aXNpYmxlLiBPbGRlciB2ZXJzaW9ucyBvZiBJRSBkbyBub3QgaGF2ZSBTVkcgc3Vw cG9ydC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLg0KIyBUaGlzIHRhZyByZXF1aXJlcyB0 aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4NCg0KSU5URVJBQ1RJVkVfU1ZHICAg ICAgICA9IE5PDQoNCiMgVGhlIERPVF9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRo ZSBwYXRoIHdoZXJlIHRoZSBkb3QgdG9vbCBjYW4gYmUNCiMgZm91bmQuIElmIGxlZnQgYmxhbmss IGl0IGlzIGFzc3VtZWQgdGhlIGRvdCB0b29sIGNhbiBiZSBmb3VuZCBpbiB0aGUgcGF0aC4NCiMg VGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuDQoN CkRPVF9QQVRIICAgICAgICAgICAgICAgPQ0KDQojIFRoZSBET1RGSUxFX0RJUlMgdGFnIGNhbiBi ZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMgdGhhdA0KIyBjb250YWlu IGRvdCBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoc2VlIHRo ZSBcZG90ZmlsZQ0KIyBjb21tYW5kKS4NCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn IEhBVkVfRE9UIGlzIHNldCB0byBZRVMuDQoNCkRPVEZJTEVfRElSUyAgICAgICAgICAgPQ0KDQoj IFlvdSBjYW4gaW5jbHVkZSBkaWFncmFtcyBtYWRlIHdpdGggZGlhIGluIERveHlnZW4gZG9jdW1l bnRhdGlvbi4gRG94eWdlbiB3aWxsDQojIHRoZW4gcnVuIGRpYSB0byBwcm9kdWNlIHRoZSBkaWFn cmFtIGFuZCBpbnNlcnQgaXQgaW4gdGhlIGRvY3VtZW50YXRpb24uIFRoZQ0KIyBESUFfUEFUSCB0 YWcgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGRpYSBiaW5h cnkgcmVzaWRlcy4NCiMgSWYgbGVmdCBlbXB0eSBkaWEgaXMgYXNzdW1lZCB0byBiZSBmb3VuZCBp biB0aGUgZGVmYXVsdCBzZWFyY2ggcGF0aC4NCg0KRElBX1BBVEggICAgICAgICAgICAgICA9DQoN CiMgVGhlIERJQUZJTEVfRElSUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9y ZSBkaXJlY3RvcmllcyB0aGF0DQojIGNvbnRhaW4gZGlhIGZpbGVzIHRoYXQgYXJlIGluY2x1ZGVk IGluIHRoZSBkb2N1bWVudGF0aW9uIChzZWUgdGhlIFxkaWFmaWxlDQojIGNvbW1hbmQpLg0KDQpE SUFGSUxFX0RJUlMgICAgICAgICAgID0NCg0KIyBXaGVuIHVzaW5nIFBsYW50VU1MLCB0aGUgUExB TlRVTUxfSkFSX1BBVEggdGFnIHNob3VsZCBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlDQojIHBhdGgg d2hlcmUgamF2YSBjYW4gZmluZCB0aGUgcGxhbnR1bWwuamFyIGZpbGUgb3IgdG8gdGhlIGZpbGVu YW1lIG9mIGphciBmaWxlDQojIHRvIGJlIHVzZWQuIElmIGxlZnQgYmxhbmssIGl0IGlzIGFzc3Vt ZWQgUGxhbnRVTUwgaXMgbm90IHVzZWQgb3IgY2FsbGVkIGR1cmluZw0KIyBhIHByZXByb2Nlc3Np bmcgc3RlcC4gRG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgd2FybmluZyB3aGVuIGl0IGVuY291bnRl cnMgYQ0KIyBcc3RhcnR1bWwgY29tbWFuZCBpbiB0aGlzIGNhc2UgYW5kIHdpbGwgbm90IGdlbmVy YXRlIG91dHB1dCBmb3IgdGhlIGRpYWdyYW0uDQoNClBMQU5UVU1MX0pBUl9QQVRIICAgICAgPQ0K DQojIFdoZW4gdXNpbmcgUGxhbnRVTUwsIHRoZSBQTEFOVFVNTF9DRkdfRklMRSB0YWcgY2FuIGJl IHVzZWQgdG8gc3BlY2lmeSBhDQojIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgUGxhbnRVTUwuDQoN ClBMQU5UVU1MX0NGR19GSUxFICAgICAgPQ0KDQojIFdoZW4gdXNpbmcgUGxhbnRVTUwsIHRoZSBz cGVjaWZpZWQgcGF0aHMgYXJlIHNlYXJjaGVkIGZvciBmaWxlcyBzcGVjaWZpZWQgYnkNCiMgdGhl ICFpbmNsdWRlIHN0YXRlbWVudCBpbiBhIFBsYW50VU1MIGJsb2NrLg0KDQpQTEFOVFVNTF9JTkNM VURFX1BBVEggID0NCg0KIyBUaGUgRE9UX0dSQVBIX01BWF9OT0RFUyB0YWcgY2FuIGJlIHVzZWQg dG8gc2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBub2Rlcw0KIyB0aGF0IHdpbGwgYmUgc2hvd24g aW4gdGhlIGdyYXBoLiBJZiB0aGUgbnVtYmVyIG9mIG5vZGVzIGluIGEgZ3JhcGggYmVjb21lcw0K IyBsYXJnZXIgdGhhbiB0aGlzIHZhbHVlLCBEb3h5Z2VuIHdpbGwgdHJ1bmNhdGUgdGhlIGdyYXBo LCB3aGljaCBpcyB2aXN1YWxpemVkDQojIGJ5IHJlcHJlc2VudGluZyBhIG5vZGUgYXMgYSByZWQg Ym94LiBOb3RlIHRoYXQgaWYgdGhlIG51bWJlciBvZiBkaXJlY3QNCiMgY2hpbGRyZW4gb2YgdGhl IHJvb3Qgbm9kZSBpbiBhIGdyYXBoIGlzIGFscmVhZHkgbGFyZ2VyIHRoYW4NCiMgRE9UX0dSQVBI X01BWF9OT0RFUyB0aGVuIHRoZSBncmFwaCB3aWxsIG5vdCBiZSBzaG93biBhdCBhbGwuIEFsc28g bm90ZSB0aGF0DQojIHRoZSBzaXplIG9mIGEgZ3JhcGggY2FuIGJlIGZ1cnRoZXIgcmVzdHJpY3Rl ZCBieSBNQVhfRE9UX0dSQVBIX0RFUFRILg0KIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZh bHVlOiAxMDAwMCwgZGVmYXVsdCB2YWx1ZTogNTAuDQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg dGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLg0KDQpET1RfR1JBUEhfTUFYX05PREVTICAg ID0gNTANCg0KIyBUaGUgTUFYX0RPVF9HUkFQSF9ERVBUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0 IHRoZSBtYXhpbXVtIGRlcHRoIG9mIHRoZSBncmFwaHMNCiMgZ2VuZXJhdGVkIGJ5IGRvdC4gQSBk ZXB0aCB2YWx1ZSBvZiAzIG1lYW5zIHRoYXQgb25seSBub2RlcyByZWFjaGFibGUgZnJvbSB0aGUN CiMgcm9vdCBieSBmb2xsb3dpbmcgYSBwYXRoIHZpYSBhdCBtb3N0IDMgZWRnZXMgd2lsbCBiZSBz aG93bi4gTm9kZXMgdGhhdCBsYXkNCiMgZnVydGhlciBmcm9tIHRoZSByb290IG5vZGUgd2lsbCBi ZSBvbWl0dGVkLiBOb3RlIHRoYXQgc2V0dGluZyB0aGlzIG9wdGlvbiB0byAxDQojIG9yIDIgbWF5 IGdyZWF0bHkgcmVkdWNlIHRoZSBjb21wdXRhdGlvbiB0aW1lIG5lZWRlZCBmb3IgbGFyZ2UgY29k ZSBiYXNlcy4gQWxzbw0KIyBub3RlIHRoYXQgdGhlIHNpemUgb2YgYSBncmFwaCBjYW4gYmUgZnVy dGhlciByZXN0cmljdGVkIGJ5DQojIERPVF9HUkFQSF9NQVhfTk9ERVMuIFVzaW5nIGEgZGVwdGgg b2YgMCBtZWFucyBubyBkZXB0aCByZXN0cmljdGlvbi4NCiMgTWluaW11bSB2YWx1ZTogMCwgbWF4 aW11bSB2YWx1ZTogMTAwMCwgZGVmYXVsdCB2YWx1ZTogMC4NCiMgVGhpcyB0YWcgcmVxdWlyZXMg dGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuDQoNCk1BWF9ET1RfR1JBUEhfREVQ VEggICAgPSAwDQoNCiMgU2V0IHRoZSBET1RfTVVMVElfVEFSR0VUUyB0YWcgdG8gWUVTIHRvIGFs bG93IGRvdCB0byBnZW5lcmF0ZSBtdWx0aXBsZSBvdXRwdXQNCiMgZmlsZXMgaW4gb25lIHJ1biAo aS5lLiBtdWx0aXBsZSAtbyBhbmQgLVQgb3B0aW9ucyBvbiB0aGUgY29tbWFuZCBsaW5lKS4gVGhp cw0KIyBtYWtlcyBkb3QgcnVuIGZhc3RlciwgYnV0IHNpbmNlIG9ubHkgbmV3ZXIgdmVyc2lvbnMg b2YgZG90ICg+MS44LjEwKSBzdXBwb3J0DQojIHRoaXMsIHRoaXMgZmVhdHVyZSBpcyBkaXNhYmxl ZCBieSBkZWZhdWx0Lg0KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uDQojIFRoaXMgdGFnIHJl cXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLg0KDQpET1RfTVVMVElf VEFSR0VUUyAgICAgID0gTk8NCg0KIyBJZiB0aGUgR0VORVJBVEVfTEVHRU5EIHRhZyBpcyBzZXQg dG8gWUVTIERveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGxlZ2VuZCBwYWdlDQojIGV4cGxhaW5pbmcg dGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYm94ZXMgYW5kIGFycm93cyBpbiB0aGUgZG90IGdl bmVyYXRlZA0KIyBncmFwaHMuDQojIE5vdGU6IFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgVU1MX0xP T0sgaXNuJ3Qgc2V0LCBpLmUuIHRoZSBEb3h5Z2VuIGludGVybmFsDQojIGdyYXBoaWNhbCByZXBy ZXNlbnRhdGlvbiBmb3IgaW5oZXJpdGFuY2UgYW5kIGNvbGxhYm9yYXRpb24gZGlhZ3JhbXMgaXMg dXNlZC4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCiMgVGhpcyB0YWcgcmVxdWlyZXMg dGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuDQoNCkdFTkVSQVRFX0xFR0VORCAg ICAgICAgPSBZRVMNCg0KIyBJZiB0aGUgRE9UX0NMRUFOVVAgdGFnIGlzIHNldCB0byBZRVMsIERv eHlnZW4gd2lsbCByZW1vdmUgdGhlIGludGVybWVkaWF0ZQ0KIyBmaWxlcyB0aGF0IGFyZSB1c2Vk IHRvIGdlbmVyYXRlIHRoZSB2YXJpb3VzIGdyYXBocy4NCiMNCiMgTm90ZTogVGhpcyBzZXR0aW5n IGlzIG5vdCBvbmx5IHVzZWQgZm9yIGRvdCBmaWxlcyBidXQgYWxzbyBmb3IgbXNjIHRlbXBvcmFy eQ0KIyBmaWxlcy4NCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4NCg0KRE9UX0NMRUFOVVAg ICAgICAgICAgICA9IFlFUw0KDQojIFlvdSBjYW4gZGVmaW5lIG1lc3NhZ2Ugc2VxdWVuY2UgY2hh cnRzIHdpdGhpbiBEb3h5Z2VuIGNvbW1lbnRzIHVzaW5nIHRoZSBcbXNjDQojIGNvbW1hbmQuIElm IHRoZSBNU0NHRU5fVE9PTCB0YWcgaXMgbGVmdCBlbXB0eSAodGhlIGRlZmF1bHQpLCB0aGVuIERv eHlnZW4gd2lsbA0KIyB1c2UgYSBidWlsdC1pbiB2ZXJzaW9uIG9mIG1zY2dlbiB0b29sIHRvIHBy b2R1Y2UgdGhlIGNoYXJ0cy4gQWx0ZXJuYXRpdmVseSwNCiMgdGhlIE1TQ0dFTl9UT09MIHRhZyBj YW4gYWxzbyBzcGVjaWZ5IHRoZSBuYW1lIGFuIGV4dGVybmFsIHRvb2wuIEZvciBpbnN0YW5jZSwN CiMgc3BlY2lmeWluZyBwcm9nIGFzIHRoZSB2YWx1ZSwgRG94eWdlbiB3aWxsIGNhbGwgdGhlIHRv b2wgYXMgcHJvZyAtVA0KIyA8b3V0ZmlsZV9mb3JtYXQ+IC1vIDxvdXRwdXRmaWxlPiA8aW5wdXRm aWxlPi4gVGhlIGV4dGVybmFsIHRvb2wgc2hvdWxkIHN1cHBvcnQNCiMgb3V0cHV0IGZpbGUgZm9y bWF0cyAicG5nIiwgImVwcyIsICJzdmciLCBhbmQgImlzbWFwIi4NCg0KTVNDR0VOX1RPT0wgICAg ICAgICAgICA9DQoNCiMgVGhlIE1TQ0ZJTEVfRElSUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lm eSBvbmUgb3IgbW9yZSBkaXJlY3RvcmllcyB0aGF0DQojIGNvbnRhaW4gbXNjIGZpbGVzIHRoYXQg YXJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIChzZWUgdGhlIFxtc2NmaWxlDQojIGNv bW1hbmQpLg0KDQpNU0NGSUxFX0RJUlMgICAgICAgICAgID0NCg== --Multipart=_Tue__17_Jun_2025_21_46_47_+0900_h=Nz7CH.Mgk+DlPb Content-Type: text/x-csrc; name="x.c" Content-Disposition: attachment; filename="x.c" Content-Transfer-Encoding: 7bit void func1(void) { func0(); } void func2(void) { func1(); } void func3(void) { func2(); } void func4(void) { func3(); } void func5(void) { func4(); } void func6(void) { func5(); } void func7(void) { func6(); } void func8(void) { func7(); } void func9(void) { func8(); } void func10(void) { func9(); } void func11(void) { func10(); } void func12(void) { func11(); } void func13(void) { func12(); } void func14(void) { func13(); } void func15(void) { func14(); } void func16(void) { func15(); } void func17(void) { func16(); } void func18(void) { func17(); } void func19(void) { func18(); } void func20(void) { func19(); } void func21(void) { func20(); } void func22(void) { func21(); } void func23(void) { func22(); } void func24(void) { func23(); } void func25(void) { func24(); } void func26(void) { func25(); } void func27(void) { func26(); } void func28(void) { func27(); } void func29(void) { func28(); } void func30(void) { func29(); } void func31(void) { func30(); } void func32(void) { func31(); } void func33(void) { func32(); } void func34(void) { func33(); } void func35(void) { func34(); } void func36(void) { func35(); } void func37(void) { func36(); } void func38(void) { func37(); } void func39(void) { func38(); } void func40(void) { func39(); } void func41(void) { func40(); } void func42(void) { func41(); } void func43(void) { func42(); } void func44(void) { func43(); } void func45(void) { func44(); } void func46(void) { func45(); } void func47(void) { func46(); } void func48(void) { func47(); } void func49(void) { func48(); } void func50(void) { func49(); } void func51(void) { func50(); } void func52(void) { func51(); } void func53(void) { func52(); } void func54(void) { func53(); } void func55(void) { func54(); } void func56(void) { func55(); } void func57(void) { func56(); } void func58(void) { func57(); } void func59(void) { func58(); } void func60(void) { func59(); } void func61(void) { func60(); } void func62(void) { func61(); } void func63(void) { func62(); } void func64(void) { func63(); } void func65(void) { func64(); } void func66(void) { func65(); } void func67(void) { func66(); } void func68(void) { func67(); } void func69(void) { func68(); } void func70(void) { func69(); } void func71(void) { func70(); } void func72(void) { func71(); } void func73(void) { func72(); } void func74(void) { func73(); } void func75(void) { func74(); } void func76(void) { func75(); } void func77(void) { func76(); } void func78(void) { func77(); } void func79(void) { func78(); } void func80(void) { func79(); } void func81(void) { func80(); } void func82(void) { func81(); } void func83(void) { func82(); } void func84(void) { func83(); } void func85(void) { func84(); } void func86(void) { func85(); } void func87(void) { func86(); } void func88(void) { func87(); } void func89(void) { func88(); } void func90(void) { func89(); } void func91(void) { func90(); } void func92(void) { func91(); } void func93(void) { func92(); } void func94(void) { func93(); } void func95(void) { func94(); } void func96(void) { func95(); } void func97(void) { func96(); } void func98(void) { func97(); } void func99(void) { func98(); } void func100(void) { func99(); } --Multipart=_Tue__17_Jun_2025_21_46_47_+0900_h=Nz7CH.Mgk+DlPb Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple --Multipart=_Tue__17_Jun_2025_21_46_47_+0900_h=Nz7CH.Mgk+DlPb--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |