From owner-freebsd-mips@FreeBSD.ORG Tue Jun 15 13:36:18 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C099B106567A; Tue, 15 Jun 2010 13:36:18 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id 02E658FC14; Tue, 15 Jun 2010 13:36:17 +0000 (UTC) Received: by vws20 with SMTP id 20so6823203vws.13 for ; Tue, 15 Jun 2010 06:36:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=7KTjS7H2rU6skPM2R1BDUOvgUaOLHZNqiFpm4V6DN4E=; b=R83s5I+yAeDAZ7eYFO/IsziC9ObIqk1UkcnTVTAI7Mgcs9k6guTZo/aoUFi5bOEFCZ wmoMXr80HWA7F+1zR2NDi8Vwd1sM4ny2qJgxYHy6iaRG1Xf1osqbdpBviIujtT7D3pAw dUX3RM+2sktpCGiaVfg+8aHnhcfz7gXknOKBg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=tUphv+5dBBpBTxpaXvtWCP94KBsxxd2Rz8Z3K4VIDJY1WqHl1g8dHkIV63XtI9+jjY m4bchoYKdG4a2pL4iwdBFdDx4U7sknHSC5VqS9LwqLGklCFagLemctWr0N39/xuYpBVH vPjyz1D2pu8k9rFxsGu+7PGmns7OGVgemR4Xc= MIME-Version: 1.0 Received: by 10.220.63.136 with SMTP id b8mr3927460vci.109.1276608977023; Tue, 15 Jun 2010 06:36:17 -0700 (PDT) Received: by 10.220.199.136 with HTTP; Tue, 15 Jun 2010 06:36:16 -0700 (PDT) Date: Tue, 15 Jun 2010 19:06:16 +0530 Message-ID: From: "Jayachandran C." To: Randall Stewart , Juli Mallett , "M. Warner Losh" , freebsd-mips@freebsd.org Content-Type: multipart/mixed; boundary=e0cb4e88758397b495048911b0d9 Cc: Subject: Merging 64 bit changes to -HEAD X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2010 13:36:18 -0000 --e0cb4e88758397b495048911b0d9 Content-Type: text/plain; charset=ISO-8859-1 I have volunteered to merge Juli's 64-bit work into HEAD, and hopefully get it to work on XLR too. The tree (http://svn.freebsd.org/base/user/jmallett/octeon) has quite a bit of changes, so I would like to do this over multiple changesets and without breaking the current o32 code. The first batch of changes are attached (also at http://people.freebsd.org/~jchandra/jmallett-merge/), the patches are: libc-asm.patch - change libc assembly code to use macros which work on o32/n64 libc-other.patch - makecontext implemenation, and other cleanup ld.so.patch - change dynamic loader assembly code to use macros tlb-to-c.patch - move TLB operations to C, update TLB operations API I've tested this on XLR, but there is a chance that this might break other platforms. So please let me know your comments on both the patches and the merge process. The future patches (if everything goes well), will do the PTE_ flag to PG_ flag renaming in Juli's tree, then the actual n32/n64 changes. Thanks, JC. --e0cb4e88758397b495048911b0d9 Content-Type: text/x-patch; charset=US-ASCII; name="libc-asm.patch" Content-Disposition: attachment; filename="libc-asm.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gagrfoy80 SW5kZXg6IGxpYi9saWJjL21pcHMvU1lTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9T WVMuaAkocmV2aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMvbWlwcy9TWVMuaAkod29ya2luZyBj b3B5KQpAQCAtMSw0ICsxLDQgQEAKLS8qCSROZXRCU0Q6IFNZUy5oLHYgMS4xOCAyMDAzLzEwLzI5 IDEyOjI4OjMzIHBvb2thIEV4cCAkICovCisvKgkkTmV0QlNEOiBTWVMuaCx2IDEuMTkgMjAwOS8x Mi8xNCAwMTowNzo0MSBtYXR0IEV4cCAkICovCiAvKiAkRnJlZUJTRCQgKi8KIAogLyotCkBAIC03 OSwxNCArNzksMjIgQEAKICAqLwogI2lmZGVmIF9fQUJJQ0FMTFNfXwogCS5hYmljYWxscwotIyBk ZWZpbmUgUElDX1BST0xPR1VFKHgsc3IpCS5zZXQgbm9yZW9yZGVyOyAuY3Bsb2FkIHNyOyAuc2V0 IHJlb3JkZXIKLSMgZGVmaW5lIFBJQ19DQUxMKGwsc3IpCQlsYSBzciwgX0NfTEFCRUwobCk7IGpy IHNyCisjIGlmIGRlZmluZWQoX19taXBzX28zMikgfHwgZGVmaW5lZChfX21pcHNfbzY0KQorIyAg ZGVmaW5lIFBJQ19QUk9MT0dVRSh4KQlTRVRVUF9HUAorIyAgZGVmaW5lIFBJQ19UQUlMQ0FMTChs KQlQVFJfTEEgdDksIF9DX0xBQkVMKGwpOyBqciB0OQorIyAgZGVmaW5lIFBJQ19SRVRVUk4oKQkJ aiByYQorIyBlbHNlCisjICBkZWZpbmUgUElDX1BST0xPR1VFKHgpCVNFVFVQX0dQNjQodDMsIHgp CisjICBkZWZpbmUgUElDX1RBSUxDQUxMKGwpCVBUUl9MQSB0OSwgX0NfTEFCRUwobCk7IFJFU1RP UkVfR1A2NDsganIgdDkKKyMgIGRlZmluZSBQSUNfUkVUVVJOKCkJCVJFU1RPUkVfR1A2NDsgaiBy YQorIyBlbmRpZgogI2Vsc2UKLSMgZGVmaW5lIFBJQ19QUk9MT0dVRSh4LHNyKQotIyBkZWZpbmUg UElDX0NBTEwobCxzcikJCWogIF9DX0xBQkVMKGwpCi0jZW5kaWYKKyMgZGVmaW5lIFBJQ19QUk9M T0dVRSh4KQorIyBkZWZpbmUgUElDX1RBSUxDQUxMKGwpCWogIF9DX0xBQkVMKGwpCisjIGRlZmlu ZSBQSUNfUkVUVVJOKCkKKyNlbmRpZiAvKiBfX0FCSUNBTExTX18gKi8KIAotIyBkZWZpbmUgU1lT VFJBUCh4KQlsaSB2MCwgU1lTXyAjIyB4OyBzeXNjYWxsOworIyBkZWZpbmUgU1lTVFJBUCh4KQls aSB2MCxTWVNfICMjIHg7IHN5c2NhbGw7CiAKIC8qCiAgKiBEbyBhIHN5c2NhbGwgdGhhdCBjYW5u b3QgZmFpbCAoc3luYywgZ2V0e3AsdSxnLGV1LGVnKWlkKQpAQCAtMTA2LDcgKzExNCw3IEBACiAg Ki8KICNkZWZpbmUgUFNFVURPX05PRVJST1IoeCkJCQkJCQlcCiBMRUFGKF9fc3lzXyAjIyB4KTsJ CQkJCQkJXAotICAgICAgICAud2VhayBfQ19MQUJFTCh4KTsJCQkJCQlcCisJLndlYWsgX0NfTEFC RUwoeCk7CQkJCQkJXAogCV9DX0xBQkVMKHgpID0gX0NfTEFCRUwoX19DT05DQVQoX19zeXNfLHgp KTsJCQlcCiAJLndlYWsgX0NfTEFCRUwoX19DT05DQVQoXyx4KSk7CQkJCQlcCiAJX0NfTEFCRUwo X19DT05DQVQoXyx4KSkgPSBfQ19MQUJFTChfX0NPTkNBVChfX3N5c18seCkpOwkJXApAQCAtMTE2 LDE0ICsxMjQsMTQgQEAKIAogI2RlZmluZSBQU0VVRE8oeCkJCQkJCQkJXAogTEVBRihfX3N5c18g IyMgeCk7CQkJCQkJCVwKLSAgICAgICAgLndlYWsgX0NfTEFCRUwoeCk7CQkJCQkJXAorCS53ZWFr IF9DX0xBQkVMKHgpOwkJCQkJCVwKIAlfQ19MQUJFTCh4KSA9IF9DX0xBQkVMKF9fQ09OQ0FUKF9f c3lzXyx4KSk7CQkJXAogCS53ZWFrIF9DX0xBQkVMKF9fQ09OQ0FUKF8seCkpOwkJCQkJXAogCV9D X0xBQkVMKF9fQ09OQ0FUKF8seCkpID0gX0NfTEFCRUwoX19DT05DQVQoX19zeXNfLHgpKTsJCVwK LQlQSUNfUFJPTE9HVUUoeCx0OSk7CQkJCQkJXAorCVBJQ19QUk9MT0dVRShfX3N5c18gIyMgeCk7 CQkJCQlcCiAJU1lTVFJBUCh4KTsJCQkJCQkJXAogCWJuZSBhMyx6ZXJvLGVycjsJCQkJCQlcCi0J aiByYTsJCQkJCQkJCVwKKwlQSUNfUkVUVVJOKCk7CQkJCQkJCVwKIGVycjoJCQkJCQkJCQlcCi0J UElDX0NBTEwoX19jZXJyb3IsdDkpOwkJCQkJCVwKLQlFTkQoX19zeXNfICMjIHgpCisJUElDX1RB SUxDQUxMKF9fY2Vycm9yKTsJCQkJCQlcCitFTkQoX19zeXNfICMjIHgpCkluZGV4OiBsaWIvbGli Yy9taXBzL3N0cmluZy9mZnMuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL3N0cmluZy9m ZnMuUwkocmV2aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMvbWlwcy9zdHJpbmcvZmZzLlMJKHdv cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0vKgkkTmV0QlNEOiBmZnMuUyx2IDEuMSAyMDA1 LzEyLzIwIDE5OjI4OjQ5IGNocmlzdG9zIEV4cCAkCSovCisvKgkkTmV0QlNEOiBmZnMuUyx2IDEu MiAyMDA5LzEyLzE0IDAwOjM5OjAwIG1hdHQgRXhwICQJKi8KIAogLyotCiAgKiBDb3B5cmlnaHQg KGMpIDE5OTEsIDE5OTMKQEAgLTM3LDcgKzM3LDcgQEAKIAogI2lmIGRlZmluZWQoTElCQ19TQ0NT KSAmJiAhZGVmaW5lZChsaW50KQogCUFTTVNUUigiZnJvbTogQCgjKWZmcy5zCTguMSAoQmVya2Vs ZXkpIDYvNC85MyIpCi0JQVNNU1RSKCIkTmV0QlNEOiBmZnMuUyx2IDEuMSAyMDA1LzEyLzIwIDE5 OjI4OjQ5IGNocmlzdG9zIEV4cCAkIikKKwlBU01TVFIoIiROZXRCU0Q6IGZmcy5TLHYgMS4yIDIw MDkvMTIvMTQgMDA6Mzk6MDAgbWF0dCBFeHAgJCIpCiAjZW5kaWYgLyogTElCQ19TQ0NTIGFuZCBu b3QgbGludCAqLwogCiAjaWZkZWYgX19BQklDQUxMU19fCkluZGV4OiBsaWIvbGliYy9taXBzL3N0 cmluZy9iY21wLlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9zdHJpbmcvYmNtcC5TCShy ZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL3N0cmluZy9iY21wLlMJKHdvcmtpbmcg Y29weSkKQEAgLTEsNCArMSw0IEBACi0vKgkkTmV0QlNEOiBiY21wLlMsdiAxLjggMjAwMy8wOC8w NyAxNjo0MjoxNiBhZ2MgRXhwICQJKi8KKy8qCSROZXRCU0Q6IGJjbXAuUyx2IDEuOSAyMDA5LzEy LzE0IDAxOjA3OjQyIG1hdHQgRXhwICQJKi8KIAogLyotCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTEs IDE5OTMKQEAgLTM1LDkgKzM1LDE1IEBACiAjaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KIF9fRkJT RElEKCIkRnJlZUJTRCQiKTsKIAorI2RlZmluZSBfTE9DT1JFCQkvKiBYWFggbm90IHJlYWxseSwg anVzdCBhc3NlbWJseS1jb2RlIHNvdXJjZSAqLworI2luY2x1ZGUgPG1hY2hpbmUvZW5kaWFuLmg+ CS8qIExXTE8vTFdISSwgU1dMTy9TV0hJICovCisKICNpZiBkZWZpbmVkKExJQkNfU0NDUykgJiYg IWRlZmluZWQobGludCkKKyNpZiAwCiAJQVNNU1RSKCJmcm9tOiBAKCMpYmNtcC5zCTguMSAoQmVy a2VsZXkpIDYvNC85MyIpCi0JQVNNU1RSKCIkTmV0QlNEOiBiY21wLlMsdiAxLjggMjAwMy8wOC8w NyAxNjo0MjoxNiBhZ2MgRXhwICQiKQorI2Vsc2UKKwlBU01TVFIoIiROZXRCU0Q6IGJjbXAuUyx2 IDEuOSAyMDA5LzEyLzE0IDAxOjA3OjQyIG1hdHQgRXhwICQiKQorI2VuZGlmCiAjZW5kaWYgLyog TElCQ19TQ0NTIGFuZCBub3QgbGludCAqLwogCiAjaWZkZWYgX19BQklDQUxMU19fCkBAIC00OSw4 NiArNTUsNzYgQEAKIAogTEVBRihiY21wKQogCS5zZXQJbm9yZW9yZGVyCi0JYmx0CWEyLCAxNiwg c21hbGwJCSMgaXMgaXQgd29ydGggYW55IHRyb3VibGU/Ci0JeG9yCXYwLCBhMCwgYTEJCSMgY29t cGFyZSBsb3cgdHdvIGJpdHMgb2YgYWRkcmVzc2VzCi0JYW5kCXYwLCB2MCwgMwotCXN1YnUJYTMs IHplcm8sIGExCQkjIGNvbXB1dGUgIyBieXRlcyB0byB3b3JkIGFsaWduIGFkZHJlc3MKLQlibmUJ djAsIHplcm8sIHVuYWxpZ25lZAkjIG5vdCBwb3NzaWJsZSB0byBhbGlnbiBhZGRyZXNzZXMKLQlh bmQJYTMsIGEzLCAzCisJYmx0CQlhMiwgMTYsIHNtYWxsCSMgaXMgaXQgd29ydGggYW55IHRyb3Vi bGU/CisJeG9yCQl2MCwgYTAsIGExCSMgY29tcGFyZSBsb3cgdHdvIGJpdHMgb2YgYWRkcmVzc2Vz CisJYW5kCQl2MCwgdjAsIDMKKwlQVFJfU1VCVQlhMywgemVybywgYTEJIyBjb21wdXRlICMgYnl0 ZXMgdG8gd29yZCBhbGlnbiBhZGRyZXNzCisJYm5lCQl2MCwgemVybywgdW5hbGlnbmVkICMgbm90 IHBvc3NpYmxlIHRvIGFsaWduIGFkZHJlc3NlcworCWFuZAkJYTMsIGEzLCAzCiAKLQliZXEJYTMs IHplcm8sIDFmCi0Jc3VidQlhMiwgYTIsIGEzCQkjIHN1YnRyYWN0IGZyb20gcmVtYWluaW5nIGNv dW50Ci0JbW92ZQl2MCwgdjEJCQkjIGluaXQgdjAsdjEgc28gdW5tb2RpZmllZCBieXRlcyBtYXRj aAotI2lmZGVmIF9fTUlQU0VCX18KLQlsd2wJdjAsIDAoYTApCQkjIHJlYWQgMSwgMiwgb3IgMyBi eXRlcwotCWx3bAl2MSwgMChhMSkKLSNlbHNlCi0JbHdyCXYwLCAwKGEwKQkJIyByZWFkIDEsIDIs IG9yIDMgYnl0ZXMKLQlsd3IJdjEsIDAoYTEpCi0jZW5kaWYKLQlhZGR1CWExLCBhMSwgYTMKLQli bmUJdjAsIHYxLCBub21hdGNoCi0JYWRkdQlhMCwgYTAsIGEzCisJYmVxCQlhMywgemVybywgMWYK KwlQVFJfU1VCVQlhMiwgYTIsIGEzCSMgc3VidHJhY3QgZnJvbSByZW1haW5pbmcgY291bnQKKwlt b3ZlCQl2MCwgdjEJCSMgaW5pdCB2MCx2MSBzbyB1bm1vZGlmaWVkIGJ5dGVzIG1hdGNoCisJTFdI SQkJdjAsIDAoYTApCSMgcmVhZCAxLCAyLCBvciAzIGJ5dGVzCisJTFdISQkJdjEsIDAoYTEpCisJ UFRSX0FERFUJYTEsIGExLCBhMworCWJuZQkJdjAsIHYxLCBub21hdGNoCisJUFRSX0FERFUJYTAs IGEwLCBhMwogMToKLQlhbmQJYTMsIGEyLCB+MwkJIyBjb21wdXRlIG51bWJlciBvZiB3aG9sZSB3 b3JkcyBsZWZ0Ci0Jc3VidQlhMiwgYTIsIGEzCQkjICAgd2hpY2ggaGFzIHRvIGJlID49ICgxNi0z KSAmIH4zCi0JYWRkdQlhMywgYTMsIGEwCQkjIGNvbXB1dGUgZW5kaW5nIGFkZHJlc3MKKwlhbmQJ CWEzLCBhMiwgfjMJIyBjb21wdXRlIG51bWJlciBvZiB3aG9sZSB3b3JkcyBsZWZ0CisJUFRSX1NV QlUJYTIsIGEyLCBhMwkjICAgd2hpY2ggaGFzIHRvIGJlID49ICgxNi0zKSAmIH4zCisJUFRSX0FE RFUJYTMsIGEzLCBhMAkjIGNvbXB1dGUgZW5kaW5nIGFkZHJlc3MKIDI6Ci0JbHcJdjAsIDAoYTAp CQkjIGNvbXBhcmUgd29yZHMKLQlsdwl2MSwgMChhMSkKLQlhZGR1CWEwLCBhMCwgNAotCWJuZQl2 MCwgdjEsIG5vbWF0Y2gKLQlhZGR1CWExLCBhMSwgNAotCWJuZQlhMCwgYTMsIDJiCisJbHcJCXYw LCAwKGEwKQkjIGNvbXBhcmUgd29yZHMKKwlsdwkJdjEsIDAoYTEpCisJUFRSX0FERFUJYTAsIGEw LCA0CisJYm5lCQl2MCwgdjEsIG5vbWF0Y2gKKwlQVFJfQUREVQlhMSwgYTEsIDQKKwlibmUJCWEw LCBhMywgMmIKIAlub3AKLQliCXNtYWxsCQkJIyBmaW5pc2ggcmVtYWluZGVyCisJYgkJc21hbGwJ CSMgZmluaXNoIHJlbWFpbmRlcgogCW5vcAogdW5hbGlnbmVkOgotCWJlcQlhMywgemVybywgMmYK LQlzdWJ1CWEyLCBhMiwgYTMJCSMgc3VidHJhY3QgZnJvbSByZW1haW5pbmcgY291bnQKLQlhZGR1 CWEzLCBhMywgYTAJCSMgY29tcHV0ZSBlbmRpbmcgYWRkcmVzcworCWJlcQkJYTMsIHplcm8sIDJm CisJUFRSX1NVQlUJYTIsIGEyLCBhMwkjIHN1YnRyYWN0IGZyb20gcmVtYWluaW5nIGNvdW50CisJ UFRSX0FERFUJYTMsIGEzLCBhMAkjIGNvbXB1dGUgZW5kaW5nIGFkZHJlc3MKIDE6Ci0JbGJ1CXYw LCAwKGEwKQkJIyBjb21wYXJlIGJ5dGVzIHVudGlsIGExIHdvcmQgYWxpZ25lZAotCWxidQl2MSwg MChhMSkKLQlhZGR1CWEwLCBhMCwgMQotCWJuZQl2MCwgdjEsIG5vbWF0Y2gKLQlhZGR1CWExLCBh MSwgMQotCWJuZQlhMCwgYTMsIDFiCisJbGJ1CQl2MCwgMChhMCkJIyBjb21wYXJlIGJ5dGVzIHVu dGlsIGExIHdvcmQgYWxpZ25lZAorCWxidQkJdjEsIDAoYTEpCisJUFRSX0FERFUJYTAsIGEwLCAx CisJYm5lCQl2MCwgdjEsIG5vbWF0Y2gKKwlQVFJfQUREVQlhMSwgYTEsIDEKKwlibmUJCWEwLCBh MywgMWIKIAlub3AKIDI6Ci0JYW5kCWEzLCBhMiwgfjMJCSMgY29tcHV0ZSBudW1iZXIgb2Ygd2hv bGUgd29yZHMgbGVmdAotCXN1YnUJYTIsIGEyLCBhMwkJIyAgIHdoaWNoIGhhcyB0byBiZSA+PSAo MTYtMykgJiB+MwotCWFkZHUJYTMsIGEzLCBhMAkJIyBjb21wdXRlIGVuZGluZyBhZGRyZXNzCisJ YW5kCQlhMywgYTIsIH4zCSMgY29tcHV0ZSBudW1iZXIgb2Ygd2hvbGUgd29yZHMgbGVmdAorCVBU Ul9TVUJVCWEyLCBhMiwgYTMJIyAgIHdoaWNoIGhhcyB0byBiZSA+PSAoMTYtMykgJiB+MworCVBU Ul9BRERVCWEzLCBhMywgYTAJIyBjb21wdXRlIGVuZGluZyBhZGRyZXNzCiAzOgotI2lmZGVmIF9f TUlQU0VCX18KLQlsd2wJdjAsIDAoYTApCQkjIGNvbXBhcmUgd29yZHMgYTAgdW5hbGlnbmVkLCBh MSBhbGlnbmVkCi0JbHdyCXYwLCAzKGEwKQotI2Vsc2UKLQlsd3IJdjAsIDAoYTApCQkjIGNvbXBh cmUgd29yZHMgYTAgdW5hbGlnbmVkLCBhMSBhbGlnbmVkCi0JbHdsCXYwLCAzKGEwKQotI2VuZGlm Ci0JbHcJdjEsIDAoYTEpCi0JYWRkdQlhMCwgYTAsIDQKLQlibmUJdjAsIHYxLCBub21hdGNoCi0J YWRkdQlhMSwgYTEsIDQKLQlibmUJYTAsIGEzLCAzYgorCUxXSEkJCXYwLCAwKGEwKQkjIGNvbXBh cmUgd29yZHMgYTAgdW5hbGlnbmVkLCBhMSBhbGlnbmVkCisJTFdMTwkJdjAsIDMoYTApCisJbHcJ CXYxLCAwKGExKQorCVBUUl9BRERVCWEwLCBhMCwgNAorCWJuZQkJdjAsIHYxLCBub21hdGNoCisJ UFRSX0FERFUJYTEsIGExLCA0CisJYm5lCQlhMCwgYTMsIDNiCiAJbm9wCiBzbWFsbDoKLQlibGUJ YTIsIHplcm8sIG1hdGNoCi0JYWRkdQlhMywgYTIsIGEwCQkjIGNvbXB1dGUgZW5kaW5nIGFkZHJl c3MKKwlibGUJCWEyLCB6ZXJvLCBtYXRjaAorCVBUUl9BRERVCWEzLCBhMiwgYTAJCSMgY29tcHV0 ZSBlbmRpbmcgYWRkcmVzcwogMToKLQlsYnUJdjAsIDAoYTApCi0JbGJ1CXYxLCAwKGExKQotCWFk ZHUJYTAsIGEwLCAxCi0JYm5lCXYwLCB2MSwgbm9tYXRjaAotCWFkZHUJYTEsIGExLCAxCi0JYm5l CWEwLCBhMywgMWIKKwlsYnUJCXYwLCAwKGEwKQorCWxidQkJdjEsIDAoYTEpCisJUFRSX0FERFUJ YTAsIGEwLCAxCisJYm5lCQl2MCwgdjEsIG5vbWF0Y2gKKwlQVFJfQUREVQlhMSwgYTEsIDEKKwli bmUJCWEwLCBhMywgMWIKIAlub3AKIG1hdGNoOgotCWoJcmEKLQltb3ZlCXYwLCB6ZXJvCisJagkJ cmEKKwltb3ZlCQl2MCwgemVybwogbm9tYXRjaDoKLQlqCXJhCi0JbGkJdjAsIDEKKwlqCQlyYQor CWxpCQl2MCwgMQogCS5zZXQJcmVvcmRlcgogRU5EKGJjbXApCkluZGV4OiBsaWIvbGliYy9taXBz L3N0cmluZy9iemVyby5TCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJjL21pcHMvc3RyaW5nL2J6ZXJv LlMJKHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvc3RyaW5nL2J6ZXJvLlMJKHdv cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0vKgkkTmV0QlNEOiBiemVyby5TLHYgMS44IDIw MDMvMDgvMDcgMTY6NDI6MTYgYWdjIEV4cCAkCSovCisvKgkkTmV0QlNEOiBiemVyby5TLHYgMS4x MCAyMDA5LzEyLzE0IDAyOjUzOjUyIG1hdHQgRXhwICQJKi8KIAogLyotCiAgKiBDb3B5cmlnaHQg KGMpIDE5OTEsIDE5OTMKQEAgLTM2LDEwICszNiwxNSBAQAogX19GQlNESUQoIiRGcmVlQlNEJCIp OwogCiAjaWYgZGVmaW5lZChMSUJDX1NDQ1MpICYmICFkZWZpbmVkKGxpbnQpCisjaWYgMAogCUFT TVNUUigiZnJvbTogQCgjKWJ6ZXJvLnMJOC4xIChCZXJrZWxleSkgNi80LzkzIikKLQlBU01TVFIo IiROZXRCU0Q6IGJ6ZXJvLlMsdiAxLjggMjAwMy8wOC8wNyAxNjo0MjoxNiBhZ2MgRXhwICQiKQor I2Vsc2UKKwlBU01TVFIoIiROZXRCU0Q6IGJ6ZXJvLlMsdiAxLjEwIDIwMDkvMTIvMTQgMDI6NTM6 NTIgbWF0dCBFeHAgJCIpCisjZW5kaWYKICNlbmRpZiAvKiBMSUJDX1NDQ1MgYW5kIG5vdCBsaW50 ICovCiAKKyNkZWZpbmUgX0xPQ09SRQkJLyogWFhYIG5vdCByZWFsbHksIGp1c3QgYXNzZW1ibHkt Y29kZSBzb3VyY2UgKi8KKyNpbmNsdWRlIDxtYWNoaW5lL2VuZGlhbi5oPgogCiAjaWZkZWYgX19B QklDQUxMU19fCiAJLmFiaWNhbGxzCkBAIC00OSwzNCArNTQsNDggQEAKIAogTEVBRihiemVybykK IAkuc2V0CW5vcmVvcmRlcgotCWJsdAlhMSwgMTIsIHNtYWxsY2xyCSMgc21hbGwgYW1vdW50IHRv IGNsZWFyPwotCXN1YnUJYTMsIHplcm8sIGEwCQkjIGNvbXB1dGUgIyBieXRlcyB0byB3b3JkIGFs aWduIGFkZHJlc3MKLQlhbmQJYTMsIGEzLCAzCi0JYmVxCWEzLCB6ZXJvLCAxZgkJIyBza2lwIGlm IHdvcmQgYWxpZ25lZAotCXN1YnUJYTEsIGExLCBhMwkJIyBzdWJ0cmFjdCBmcm9tIHJlbWFpbmlu ZyBjb3VudAotI2lmZGVmIF9fTUlQU0VCX18KLQlzd2wJemVybywgMChhMCkJCSMgY2xlYXIgMSwg Miwgb3IgMyBieXRlcyB0byBhbGlnbgotI2Vsc2UKLQlzd3IJemVybywgMChhMCkJCSMgY2xlYXIg MSwgMiwgb3IgMyBieXRlcyB0byBhbGlnbgorCWJsdAkJYTEsIDMqU1pSRUcsIHNtYWxsY2xyICMg c21hbGwgYW1vdW50IHRvIGNsZWFyPworCVBUUl9TVUJVCWEzLCB6ZXJvLCBhMAkjIGNvbXB1dGUg IyBieXRlcyB0byB3b3JkIGFsaWduIGFkZHJlc3MKKwlhbmQJCWEzLCBhMywgU1pSRUctMQorCWJl cQkJYTMsIHplcm8sIDFmCSMgc2tpcCBpZiB3b3JkIGFsaWduZWQKKyNpZiBTWlJFRyA9PSA0CisJ UFRSX1NVQlUJYTEsIGExLCBhMwkjIHN1YnRyYWN0IGZyb20gcmVtYWluaW5nIGNvdW50CisJU1dI SQkJemVybywgMChhMCkJIyBjbGVhciAxLCAyLCBvciAzIGJ5dGVzIHRvIGFsaWduCisJUFRSX0FE RFUJYTAsIGEwLCBhMwogI2VuZGlmCi0JYWRkdQlhMCwgYTAsIGEzCisjaWYgU1pSRUcgPT0gOAor CVBUUl9TVUJVCWExLCBhMSwgYTMJIyBzdWJ0cmFjdCBmcm9tIHJlbWFpbmluZyBjb3VudAorCVBU Ul9BRERVCWEwLCBhMCwgYTMJIyBhbGlnbiBkc3QgdG8gbmV4dCB3b3JkCisJc2xsCQlhMywgYTMs IDMJIyBiaXRzIHRvIGJ5dGVzCisJbGkJCWEyLCAtMQkJIyBtYWtlIGEgbWFzaworI2lmIF9CWVRF X09SREVSID09IF9CSUdfRU5ESUFOCisJUkVHX1NSTFYJYTIsIGEyLCBhMwkjIHdlIHdhbnQgdG8g a2VlcCB0aGUgTVNCIGJ5dGVzCisjZW5kaWYKKyNpZiBfQllURV9PUkRFUiA9PSBfTElUVExFX0VO RElBTgorCVJFR19TTExWCWEyLCBhMiwgYTMJIyB3ZSB3YW50IHRvIGtlZXAgdGhlIExTQiBieXRl cworI2VuZGlmCisJbm9yCQlhMiwgemVybywgYTIJIyBjb21wbGVtZW50IHRoZSBtYXNrCisJUkVH X0wJCXYwLCAtU1pSRUcoYTApCSMgbG9hZCB0aGUgd29yZCB0byBwYXJ0aWFsbHkgY2xlYXIKKwlh bmQJCXYwLCB2MCwgYTIJIyBjbGVhciB0aGUgYnl0ZXMKKwlSRUdfUwkJdjAsIC1TWlJFRyhhMCkJ IyBzdG9yZSBpdCBiYWNrCisjZW5kaWYKIDE6Ci0JYW5kCXYwLCBhMSwgMwkJIyBjb21wdXRlIG51 bWJlciBvZiB3b3JkcyBsZWZ0Ci0Jc3VidQlhMywgYTEsIHYwCi0JbW92ZQlhMSwgdjAKLQlhZGR1 CWEzLCBhMywgYTAJCSMgY29tcHV0ZSBlbmRpbmcgYWRkcmVzcworCWFuZAkJdjAsIGExLCBTWlJF Ry0xCSMgY29tcHV0ZSBudW1iZXIgb2Ygd29yZHMgbGVmdAorCVBUUl9TVUJVCWEzLCBhMSwgdjAK Kwltb3ZlCQlhMSwgdjAKKwlQVFJfQUREVQlhMywgYTMsIGEwCSMgY29tcHV0ZSBlbmRpbmcgYWRk cmVzcwogMjoKLQlhZGR1CWEwLCBhMCwgNAkJIyBjbGVhciB3b3JkcwotCWJuZQlhMCwgYTMsIDJi CQkjICAgdW5yb2xsaW5nIGxvb3AgZG9lc250IGhlbHAKLQlzdwl6ZXJvLCAtNChhMCkJCSMgICBz aW5jZSB3ZSBhcmUgbGltaXRlZCBieSBtZW1vcnkgc3BlZWQKKwlQVFJfQUREVQlhMCwgYTAsIFNa UkVHCSMgY2xlYXIgd29yZHMKKwlibmUJCWEwLCBhMywgMmIJIyAgdW5yb2xsaW5nIGxvb3AgZG9l c250IGhlbHAKKwlSRUdfUwkJemVybywgLVNaUkVHKGEwKSAjIHNpbmNlIHdlIGFyZSBsaW1pdGVk IGJ5IG1lbW9yeSBzcGVlZAogc21hbGxjbHI6Ci0JYmxlCWExLCB6ZXJvLCAyZgotCWFkZHUJYTMs IGExLCBhMAkJIyBjb21wdXRlIGVuZGluZyBhZGRyZXNzCisJYmxlCQlhMSwgemVybywgMmYKKwlQ VFJfQUREVQlhMywgYTEsIGEwCSMgY29tcHV0ZSBlbmRpbmcgYWRkcmVzcwogMToKLQlhZGR1CWEw LCBhMCwgMQkJIyBjbGVhciBieXRlcwotCWJuZQlhMCwgYTMsIDFiCi0Jc2IJemVybywgLTEoYTAp CisJUFRSX0FERFUJYTAsIGEwLCAxCSMgY2xlYXIgYnl0ZXMKKwlibmUJCWEwLCBhMywgMWIKKwlz YgkJemVybywgLTEoYTApCiAyOgotCWoJcmEKKwlqCQlyYQogCW5vcAogRU5EKGJ6ZXJvKQpJbmRl eDogbGliL2xpYmMvbWlwcy9zdHJpbmcvaW5kZXguUwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9t aXBzL3N0cmluZy9pbmRleC5TCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL3N0 cmluZy9pbmRleC5TCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNCArNDYsMTQgQEAKIAogTEVBRihp bmRleCkKIDE6Ci0JbGJ1CWEyLCAwKGEwKQkJIyBnZXQgYSBieXRlCi0JYWRkdQlhMCwgYTAsIDEK LQliZXEJYTIsIGExLCBmbmQKLQlibmUJYTIsIHplcm8sIDFiCisJbGJ1CQlhMiwgMChhMCkJCSMg Z2V0IGEgYnl0ZQorCVBUUl9BRERVCWEwLCBhMCwgMQorCWJlcQkJYTIsIGExLCBmbmQKKwlibmUJ CWEyLCB6ZXJvLCAxYgogbm90Zm5kOgotCW1vdmUJdjAsIHplcm8KLQlqCXJhCisJbW92ZQkJdjAs IHplcm8KKwlqCQlyYQogZm5kOgotCXN1YnUJdjAsIGEwLCAxCi0JaglyYQorCVBUUl9TVUJVCXYw LCBhMCwgMQorCWoJCXJhCiBFTkQoaW5kZXgpCkluZGV4OiBsaWIvbGliYy9taXBzL3N0cmluZy9z dHJsZW4uUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL3N0cmluZy9zdHJsZW4uUwkocmV2 aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMvbWlwcy9zdHJpbmcvc3RybGVuLlMJKHdvcmtpbmcg Y29weSkKQEAgLTEsNCArMSw0IEBACi0vKgkkTmV0QlNEOiBzdHJsZW4uUyx2IDEuMSAyMDA1LzEy LzIwIDE5OjI4OjUwIGNocmlzdG9zIEV4cCAkCSovCisvKgkkTmV0QlNEOiBzdHJsZW4uUyx2IDEu MiAyMDA5LzEyLzE0IDAwOjM5OjAwIG1hdHQgRXhwICQJKi8KIAogLyotCiAgKiBDb3B5cmlnaHQg KGMpIDE5OTEsIDE5OTMKQEAgLTM3LDcgKzM3LDcgQEAKIAogI2lmIGRlZmluZWQoTElCQ19TQ0NT KSAmJiAhZGVmaW5lZChsaW50KQogCUFTTVNUUigiZnJvbTogQCgjKXN0cmxlbi5zCTguMSAoQmVy a2VsZXkpIDYvNC85MyIpCi0JQVNNU1RSKCIkTmV0QlNEOiBzdHJsZW4uUyx2IDEuMSAyMDA1LzEy LzIwIDE5OjI4OjUwIGNocmlzdG9zIEV4cCAkIikKKwlBU01TVFIoIiROZXRCU0Q6IHN0cmxlbi5T LHYgMS4yIDIwMDkvMTIvMTQgMDA6Mzk6MDAgbWF0dCBFeHAgJCIpCiAjZW5kaWYgLyogTElCQ19T Q0NTIGFuZCBub3QgbGludCAqLwogCiAjaWZkZWYgX19BQklDQUxMU19fCkBAIC00NSwxMSArNDUs MTEgQEAKICNlbmRpZgogCiBMRUFGKHN0cmxlbikKLQlhZGR1CXYxLCBhMCwgMQorCVBUUl9BRERV CXYxLCBhMCwgMQogMToKLQlsYgl2MCwgMChhMCkJCSMgZ2V0IGJ5dGUgZnJvbSBzdHJpbmcKLQlh ZGR1CWEwLCBhMCwgMQkJIyBpbmNyZW1lbnQgcG9pbnRlcgotCWJuZQl2MCwgemVybywgMWIJCSMg Y29udGludWUgaWYgbm90IGVuZAotCXN1YnUJdjAsIGEwLCB2MQkJIyBjb21wdXRlIGxlbmd0aCAt IDEgZm9yICdcMCcgY2hhcgotCWoJcmEKKwlsYgkJdjAsIDAoYTApCSMgZ2V0IGJ5dGUgZnJvbSBz dHJpbmcKKwlQVFJfQUREVQlhMCwgYTAsIDEJIyBpbmNyZW1lbnQgcG9pbnRlcgorCWJuZQkJdjAs IHplcm8sIDFiCSMgY29udGludWUgaWYgbm90IGVuZAorCVBUUl9TVUJVIAl2MCwgYTAsIHYxCSMg Y29tcHV0ZSBsZW5ndGggLSAxIGZvciAnXDAnIGNoYXIKKwlqCQlyYQogRU5EKHN0cmxlbikKSW5k ZXg6IGxpYi9saWJjL21pcHMvc3RyaW5nL3N0cmNtcC5TCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJj L21pcHMvc3RyaW5nL3N0cmNtcC5TCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBz L3N0cmluZy9zdHJjbXAuUwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLS8qCSROZXRC U0Q6IHN0cmNtcC5TLHYgMS4xIDIwMDUvMTIvMjAgMTk6Mjg6NTAgY2hyaXN0b3MgRXhwICQJKi8K Ky8qCSROZXRCU0Q6IHN0cmNtcC5TLHYgMS4yIDIwMDkvMTIvMTQgMDA6Mzk6MDAgbWF0dCBFeHAg JAkqLwogCiAvKi0KICAqIENvcHlyaWdodCAoYykgMTk5MSwgMTk5MwpAQCAtMzcsNyArMzcsNyBA QAogCiAjaWYgZGVmaW5lZChMSUJDX1NDQ1MpICYmICFkZWZpbmVkKGxpbnQpCiAJQVNNU1RSKCJm cm9tOiBAKCMpc3RyY21wLnMJOC4xIChCZXJrZWxleSkgNi80LzkzIikKLQlBU01TVFIoIiROZXRC U0Q6IHN0cmNtcC5TLHYgMS4xIDIwMDUvMTIvMjAgMTk6Mjg6NTAgY2hyaXN0b3MgRXhwICQiKQor CUFTTVNUUigiJE5ldEJTRDogc3RyY21wLlMsdiAxLjIgMjAwOS8xMi8xNCAwMDozOTowMCBtYXR0 IEV4cCAkIikKICNlbmRpZiAvKiBMSUJDX1NDQ1MgYW5kIG5vdCBsaW50ICovCiAKICNpZmRlZiBf X0FCSUNBTExTX18KQEAgLTU1LDkgKzU1LDkgQEAKIAlibmUJdDAsIHQxLCBOb3RFcQogCWxidQl0 MCwgMShhMCkJCSMgdW5yb2xsIGxvb3AKIAlsYnUJdDEsIDEoYTEpCi0JYWRkCWEwLCBhMCwgMgor CVBUUl9BREQJYTAsIGEwLCAyCiAJYmVxCXQwLCB6ZXJvLCBMZXNzT3JFcQkjIGVuZCBvZiBmaXJz dCBzdHJpbmc/Ci0JYWRkCWExLCBhMSwgMgorCVBUUl9BREQJYTEsIGExLCAyCiAJYmVxCXQwLCB0 MSwgMWIKIE5vdEVxOgogCXN1YnUJdjAsIHQwLCB0MQpJbmRleDogbGliL2xpYmMvbWlwcy9zdHJp bmcvcmluZGV4LlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9zdHJpbmcvcmluZGV4LlMJ KHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvc3RyaW5nL3JpbmRleC5TCSh3b3Jr aW5nIGNvcHkpCkBAIC00NSwxMyArNDUsMTMgQEAKICNlbmRpZgogCiBMRUFGKHJpbmRleCkKLQlt b3ZlCXYwLCB6ZXJvCQkjIGRlZmF1bHQgaWYgbm90IGZvdW5kCisJbW92ZQkJdjAsIHplcm8JCSMg ZGVmYXVsdCBpZiBub3QgZm91bmQKIDE6Ci0JbGJ1CWEzLCAwKGEwKQkJIyBnZXQgYSBieXRlCi0J YWRkdQlhMCwgYTAsIDEKLQlibmUJYTMsIGExLCAyZgotCXN1YnUJdjAsIGEwLCAxCQkjIHNhdmUg YWRkcmVzcyBvZiBsYXN0IG1hdGNoCisJbGJ1CQlhMywgMChhMCkJCSMgZ2V0IGEgYnl0ZQorCVBU Ul9BRERVCWEwLCBhMCwgMQorCWJuZQkJYTMsIGExLCAyZgorCVBUUl9TVUJVCXYwLCBhMCwgMQkJ IyBzYXZlIGFkZHJlc3Mgb2YgbGFzdCBtYXRjaAogMjoKLQlibmUJYTMsIHplcm8sIDFiCQkjIGNv bnRpbnVlIGlmIG5vdCBlbmQKLQlqCXJhCisJYm5lCQlhMywgemVybywgMWIJCSMgY29udGludWUg aWYgbm90IGVuZAorCWoJCXJhCiBFTkQocmluZGV4KQpJbmRleDogbGliL2xpYmMvbWlwcy9zdHJp bmcvYmNvcHkuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL3N0cmluZy9iY29weS5TCShy ZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL3N0cmluZy9iY29weS5TCSh3b3JraW5n IGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotLyoJJE5ldEJTRDogYmNvcHkuUyx2IDEuMiAyMDA1LzEy LzI3IDExOjIzOjUzIHRzdXRzdWkgRXhwICQJKi8KKy8qCSROZXRCU0Q6IGJjb3B5LlMsdiAxLjMg MjAwOS8xMi8xNCAwMDozOTowMCBtYXR0IEV4cCAkCSovCiAKIC8qCiAgKiBNYWNoIE9wZXJhdGlu ZyBTeXN0ZW0KQEAgLTM4LDkgKzM4LDE1IEBACiAjaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KIF9f RkJTRElEKCIkRnJlZUJTRCQiKTsKIAorI2RlZmluZSBfTE9DT1JFCQkvKiBYWFggbm90IHJlYWxs eSwganVzdCBhc3NlbWJseS1jb2RlIHNvdXJjZSAqLworI2luY2x1ZGUgPG1hY2hpbmUvZW5kaWFu Lmg+CisKICNpZiBkZWZpbmVkKExJQkNfU0NDUykgJiYgIWRlZmluZWQobGludCkKKyNpZiAwCiAJ QVNNU1RSKCJmcm9tOiBAKCMpbWlwc19iY29weS5zCTIuMiBDTVUgMTgvMDYvOTMiKQotCUFTTVNU UigiJE5ldEJTRDogYmNvcHkuUyx2IDEuMiAyMDA1LzEyLzI3IDExOjIzOjUzIHRzdXRzdWkgRXhw ICQiKQorI2Vsc2UKKwlBU01TVFIoIiROZXRCU0Q6IGJjb3B5LlMsdiAxLjMgMjAwOS8xMi8xNCAw MDozOTowMCBtYXR0IEV4cCAkIikKKyNlbmRpZgogI2VuZGlmIC8qIExJQkNfU0NDUyBhbmQgbm90 IGxpbnQgKi8KIAogI2lmZGVmIF9fQUJJQ0FMTFNfXwpAQCAtOTksNzEgKzEwNSw3MiBAQAogCSAq CWNvcHkgaXMgYWxpZ25hYmxlLiAgZWcgaWYgc3JjIGFuZCBkZXN0IGFyZSBib3RoCiAJICoJb24g YSBoYWxmd29yZCBib3VuZGFyeS4KIAkgKi8KLQlhbmRpCXQxLERTVFJFRywzCQkjIGdldCBsYXN0 IDMgYml0cyBvZiBkZXN0Ci0JYm5lCXQxLHplcm8sM2YKLQlhbmRpCXQwLFNSQ1JFRywzCQkjIGdl dCBsYXN0IDMgYml0cyBvZiBzcmMKLQlibmUJdDAsemVybyw1ZgorCWFuZGkJCXQxLERTVFJFRywo U1pSRUctMSkJIyBnZXQgbGFzdCBiaXRzIG9mIGRlc3QKKwlibmUJCXQxLHplcm8sM2YJCSMgZGVz dCB1bmFsaWduZWQKKwlhbmRpCQl0MCxTUkNSRUcsKFNaUkVHLTEpCSMgZ2V0IGxhc3QgYml0cyBv ZiBzcmMKKwlibmUJCXQwLHplcm8sNWYKIAogCS8qCi0JICoJRm9yd2FyZCBhbGlnbmVkLT5hbGln bmVkIGNvcHksIDgqNCBieXRlcyBhdCBhIHRpbWUuCisJICoJRm9yd2FyZCBhbGlnbmVkLT5hbGln bmVkIGNvcHksIDggd29yZHMgYXQgYSB0aW1lLgogCSAqLwotCWxpCUFULC0zMgotCWFuZAl0MCxT SVpFUkVHLEFUCQkjIGNvdW50IHRydW5jYXRlZCB0byBtdWx0aXBsZSBvZiAzMiAqLwotCWFkZHUJ YTMsU1JDUkVHLHQwCQkjIHJ1biBmYXN0IGxvb3AgdXAgdG8gdGhpcyBhZGRyZXNzCi0Jc2x0dQlB VCxTUkNSRUcsYTMJCSMgYW55IHdvcmsgdG8gZG8/Ci0JYmVxCUFULHplcm8sMmYKLQlzdWJ1CVNJ WkVSRUcsdDAKKzk4OgorCWxpCQlBVCwtKFNaUkVHKjgpCisJYW5kCQl0MCxTSVpFUkVHLEFUCQkj IGNvdW50IHRydW5jYXRlZCB0byBtdWx0aXBsZXMKKwlQVFJfQUREVQlhMyxTUkNSRUcsdDAJCSMg cnVuIGZhc3QgbG9vcCB1cCB0byB0aGlzIGFkZHIKKwlzbHR1CQlBVCxTUkNSRUcsYTMJCSMgYW55 IHdvcmsgdG8gZG8/CisJYmVxCQlBVCx6ZXJvLDJmCisJUFRSX1NVQlUJU0laRVJFRyx0MAogCiAJ LyoKIAkgKglsb29wIGJvZHkKIAkgKi8KIDE6CSMgY3AKLQlsdwl0MywwKFNSQ1JFRykKLQlsdwl2 MSw0KFNSQ1JFRykKLQlsdwl0MCw4KFNSQ1JFRykKLQlsdwl0MSwxMihTUkNSRUcpCi0JYWRkdQlT UkNSRUcsMzIKLQlzdwl0MywwKERTVFJFRykKLQlzdwl2MSw0KERTVFJFRykKLQlzdwl0MCw4KERT VFJFRykKLQlzdwl0MSwxMihEU1RSRUcpCi0JbHcJdDEsLTQoU1JDUkVHKQotCWx3CXQwLC04KFNS Q1JFRykKLQlsdwl2MSwtMTIoU1JDUkVHKQotCWx3CXQzLC0xNihTUkNSRUcpCi0JYWRkdQlEU1RS RUcsMzIKLQlzdwl0MSwtNChEU1RSRUcpCi0Jc3cJdDAsLTgoRFNUUkVHKQotCXN3CXYxLC0xMihE U1RSRUcpCi0JYm5lCVNSQ1JFRyxhMywxYgotCXN3CXQzLC0xNihEU1RSRUcpCisJUkVHX0wJCXQz LCgwKlNaUkVHKShTUkNSRUcpCisJUkVHX0wJCXYxLCgxKlNaUkVHKShTUkNSRUcpCisJUkVHX0wJ CXQwLCgyKlNaUkVHKShTUkNSRUcpCisJUkVHX0wJCXQxLCgzKlNaUkVHKShTUkNSRUcpCisJUFRS X0FERFUJU1JDUkVHLFNaUkVHKjgKKwlSRUdfUwkJdDMsKDAqU1pSRUcpKERTVFJFRykKKwlSRUdf UwkJdjEsKDEqU1pSRUcpKERTVFJFRykKKwlSRUdfUwkJdDAsKDIqU1pSRUcpKERTVFJFRykKKwlS RUdfUwkJdDEsKDMqU1pSRUcpKERTVFJFRykKKwlSRUdfTAkJdDEsKC0xKlNaUkVHKShTUkNSRUcp CisJUkVHX0wJCXQwLCgtMipTWlJFRykoU1JDUkVHKQorCVJFR19MCQl2MSwoLTMqU1pSRUcpKFNS Q1JFRykKKwlSRUdfTAkJdDMsKC00KlNaUkVHKShTUkNSRUcpCisJUFRSX0FERFUJRFNUUkVHLFNa UkVHKjgKKwlSRUdfUwkJdDEsKC0xKlNaUkVHKShEU1RSRUcpCisJUkVHX1MJCXQwLCgtMipTWlJF RykoRFNUUkVHKQorCVJFR19TCQl2MSwoLTMqU1pSRUcpKERTVFJFRykKKwlibmUJCVNSQ1JFRyxh MywxYgorCVJFR19TCQl0MywoLTQqU1pSRUcpKERTVFJFRykKIAogCS8qCiAJICoJQ29weSBhIHdv cmQgYXQgYSB0aW1lLCBubyBsb29wIHVucm9sbGluZy4KIAkgKi8KIDI6CSMgd29yZGNvcHkKLQlh bmRpCXQyLFNJWkVSRUcsMwkJIyBnZXQgYnl0ZSBjb3VudCAvIDQKLQlzdWJ1CXQyLFNJWkVSRUcs dDIJCSMgdDIgPSBudW1iZXIgb2Ygd29yZHMgdG8gY29weSAqIDQKLQliZXEJdDIsemVybywzZgot CWFkZHUJdDAsU1JDUkVHLHQyCQkjIHN0b3AgYXQgdDAKLQlzdWJ1CVNJWkVSRUcsU0laRVJFRyx0 MgorCWFuZGkJCXQyLFNJWkVSRUcsKFNaUkVHLTEpCSMgZ2V0IGJ5dGUgY291bnQgLyBTWlJFRwor CVBUUl9TVUJVCXQyLFNJWkVSRUcsdDIJCSMgdDIgPSB3b3JkcyB0byBjb3B5ICogU1pSRUcKKwli ZXEJCXQyLHplcm8sM2YKKwlQVFJfQUREVQl0MCxTUkNSRUcsdDIJCSMgc3RvcCBhdCB0MAorCVBU Ul9TVUJVCVNJWkVSRUcsU0laRVJFRyx0MgogMToKLQlsdwl0MywwKFNSQ1JFRykKLQlhZGR1CVNS Q1JFRyw0Ci0Jc3cJdDMsMChEU1RSRUcpCi0JYm5lCVNSQ1JFRyx0MCwxYgotCWFkZHUJRFNUUkVH LDQKKwlSRUdfTAkJdDMsMChTUkNSRUcpCisJUFRSX0FERFUJU1JDUkVHLFNaUkVHCisJUkVHX1MJ CXQzLDAoRFNUUkVHKQorCWJuZQkJU1JDUkVHLHQwLDFiCisJUFRSX0FERFUJRFNUUkVHLFNaUkVH CiAKIDM6CSMgYnl0ZWNvcHkKLQliZXEJU0laRVJFRyx6ZXJvLDRmCSMgbm90aGluZyBsZWZ0IHRv IGRvPworCWJlcQkJU0laRVJFRyx6ZXJvLDRmCQkjIG5vdGhpbmcgbGVmdCB0byBkbz8KIAlub3AK IDE6Ci0JbGIJdDMsMChTUkNSRUcpCi0JYWRkdQlTUkNSRUcsMQotCXNiCXQzLDAoRFNUUkVHKQot CXN1YnUJU0laRVJFRywxCi0JYmd0eglTSVpFUkVHLDFiCi0JYWRkdQlEU1RSRUcsMQorCWxiCQl0 MywwKFNSQ1JFRykKKwlQVFJfQUREVQlTUkNSRUcsMQorCXNiCQl0MywwKERTVFJFRykKKwlQVFJf U1VCVQlTSVpFUkVHLDEKKwliZ3R6CQlTSVpFUkVHLDFiCisJUFRSX0FERFUJRFNUUkVHLDEKIAog NDoJIyBjb3B5ZG9uZQogCWoJcmEKQEAgLTE3Myw5NiArMTgwLDkxIEBACiAJICoJQ29weSBmcm9t IHVuYWxpZ25lZCBzb3VyY2UgdG8gYWxpZ25lZCBkZXN0LgogCSAqLwogNToJIyBkZXN0YWxpZ25l ZAotCWFuZGkJdDAsU0laRVJFRywzCQkjIHQwID0gYnl0ZWNvdW50IG1vZCA0Ci0Jc3VidQlhMyxT SVpFUkVHLHQwCQkjIG51bWJlciBvZiB3b3JkcyB0byB0cmFuc2ZlcgotCWJlcQlhMyx6ZXJvLDNi CisJYW5kaQkJdDAsU0laRVJFRywoU1pSRUctMSkJIyB0MCA9IGJ5dGVjb3VudCBtb2QgU1pSRUcK KwlQVFJfU1VCVQlhMyxTSVpFUkVHLHQwCQkjIG51bWJlciBvZiB3b3JkcyB0byB0cmFuc2Zlcgor CWJlcQkJYTMsemVybywzYgogCW5vcAotCW1vdmUJU0laRVJFRyx0MAkJIyB0aGlzIG1hbnkgdG8g ZG8gYWZ0ZXIgd2UgYXJlIGRvbmUKLQlhZGR1CWEzLFNSQ1JFRyxhMwkJIyBzdG9wIHBvaW50CisJ bW92ZQkJU0laRVJFRyx0MAkJIyB0aGlzIG1hbnkgdG8gZG8gYWZ0ZXIgd2UgYXJlIGRvbmUKKwlQ VFJfQUREVQlhMyxTUkNSRUcsYTMJCSMgc3RvcCBwb2ludAogCiAxOgotI2lmZGVmIF9fTUlQU0VC X18KLQlsd2wJdDMsMChTUkNSRUcpCi0JbHdyCXQzLDMoU1JDUkVHKQotI2Vsc2UKLQlsd3IJdDMs MChTUkNSRUcpCi0JbHdsCXQzLDMoU1JDUkVHKQotI2VuZGlmCi0JYWRkaQlTUkNSRUcsNAotCXN3 CXQzLDAoRFNUUkVHKQotCWJuZQlTUkNSRUcsYTMsMWIKLQlhZGRpCURTVFJFRyw0CisJUkVHX0xI SQkJdDMsMChTUkNSRUcpCisJUkVHX0xMTwkJdDMsU1pSRUctMShTUkNSRUcpCisJUFRSX0FEREkJ U1JDUkVHLFNaUkVHCisJUkVHX1MJCXQzLDAoRFNUUkVHKQorCWJuZQkJU1JDUkVHLGEzLDFiCisJ UFRSX0FEREkJRFNUUkVHLFNaUkVHCiAKLQlqCTNiCisJYgkJM2IKIAlub3AKIAogNjoJIyBiYWNr Y29weSAtLSBiYXNlZCBvbiBhYm92ZQotCWFkZHUJU1JDUkVHLFNJWkVSRUcKLQlhZGR1CURTVFJF RyxTSVpFUkVHCi0JYW5kaQl0MSxEU1RSRUcsMwkJIyBnZXQgbGFzdCAzIGJpdHMgb2YgZGVzdAot CWJuZQl0MSx6ZXJvLDNmCi0JYW5kaQl0MCxTUkNSRUcsMwkJIyBnZXQgbGFzdCAzIGJpdHMgb2Yg c3JjCi0JYm5lCXQwLHplcm8sNWYKKwlQVFJfQUREVQlTUkNSRUcsU0laRVJFRworCVBUUl9BRERV CURTVFJFRyxTSVpFUkVHCisJYW5kaQkJdDEsRFNUUkVHLFNaUkVHLTEJIyBnZXQgbGFzdCAzIGJp dHMgb2YgZGVzdAorCWJuZQkJdDEsemVybywzZgorCWFuZGkJCXQwLFNSQ1JFRyxTWlJFRy0xCSMg Z2V0IGxhc3QgMyBiaXRzIG9mIHNyYworCWJuZQkJdDAsemVybyw1ZgogCiAJLyoKIAkgKglGb3J3 YXJkIGFsaWduZWQtPmFsaWduZWQgY29weSwgOCo0IGJ5dGVzIGF0IGEgdGltZS4KIAkgKi8KLQls aQlBVCwtMzIKLQlhbmQJdDAsU0laRVJFRyxBVAkJIyBjb3VudCB0cnVuY2F0ZWQgdG8gbXVsdGlw bGUgb2YgMzIKLQliZXEJdDAsemVybywyZgkJIyBhbnkgd29yayB0byBkbz8KLQlzdWJ1CVNJWkVS RUcsdDAKLQlzdWJ1CWEzLFNSQ1JFRyx0MAorCWxpCQlBVCwoLTgqU1pSRUcpCisJYW5kCQl0MCxT SVpFUkVHLEFUCQkjIGNvdW50IHRydW5jYXRlZCB0byBtdWx0aXBsZSBvZiAzMgorCWJlcQkJdDAs emVybywyZgkJIyBhbnkgd29yayB0byBkbz8KKwlQVFJfU1VCVQlTSVpFUkVHLHQwCisJUFRSX1NV QlUJYTMsU1JDUkVHLHQwCiAKIAkvKgogCSAqCWxvb3AgYm9keQogCSAqLwogMToJIyBjcAotCWx3 CXQzLC0xNihTUkNSRUcpCi0JbHcJdjEsLTEyKFNSQ1JFRykKLQlsdwl0MCwtOChTUkNSRUcpCi0J bHcJdDEsLTQoU1JDUkVHKQotCXN1YnUJU1JDUkVHLDMyCi0Jc3cJdDMsLTE2KERTVFJFRykKLQlz dwl2MSwtMTIoRFNUUkVHKQotCXN3CXQwLC04KERTVFJFRykKLQlzdwl0MSwtNChEU1RSRUcpCi0J bHcJdDEsMTIoU1JDUkVHKQotCWx3CXQwLDgoU1JDUkVHKQotCWx3CXYxLDQoU1JDUkVHKQotCWx3 CXQzLDAoU1JDUkVHKQotCXN1YnUJRFNUUkVHLDMyCi0Jc3cJdDEsMTIoRFNUUkVHKQotCXN3CXQw LDgoRFNUUkVHKQotCXN3CXYxLDQoRFNUUkVHKQotCWJuZQlTUkNSRUcsYTMsMWIKLQlzdwl0Myww KERTVFJFRykKKwlSRUdfTAkJdDMsKC00KlNaUkVHKShTUkNSRUcpCisJUkVHX0wJCXYxLCgtMypT WlJFRykoU1JDUkVHKQorCVJFR19MCQl0MCwoLTIqU1pSRUcpKFNSQ1JFRykKKwlSRUdfTAkJdDEs KC0xKlNaUkVHKShTUkNSRUcpCisJUFRSX1NVQlUJU1JDUkVHLDgqU1pSRUcKKwlSRUdfUwkJdDMs KC00KlNaUkVHKShEU1RSRUcpCisJUkVHX1MJCXYxLCgtMypTWlJFRykoRFNUUkVHKQorCVJFR19T CQl0MCwoLTIqU1pSRUcpKERTVFJFRykKKwlSRUdfUwkJdDEsKC0xKlNaUkVHKShEU1RSRUcpCisJ UkVHX0wJCXQxLCgzKlNaUkVHKShTUkNSRUcpCisJUkVHX0wJCXQwLCgyKlNaUkVHKShTUkNSRUcp CisJUkVHX0wJCXYxLCgxKlNaUkVHKShTUkNSRUcpCisJUkVHX0wJCXQzLCgwKlNaUkVHKShTUkNS RUcpCisJUFRSX1NVQlUJRFNUUkVHLDgqU1pSRUcKKwlSRUdfUwkJdDEsKDMqU1pSRUcpKERTVFJF RykKKwlSRUdfUwkJdDAsKDIqU1pSRUcpKERTVFJFRykKKwlSRUdfUwkJdjEsKDEqU1pSRUcpKERT VFJFRykKKwlibmUJCVNSQ1JFRyxhMywxYgorCVJFR19TCQl0MywoMCpTWlJFRykoRFNUUkVHKQog CiAJLyoKIAkgKglDb3B5IGEgd29yZCBhdCBhIHRpbWUsIG5vIGxvb3AgdW5yb2xsaW5nLgogCSAq LwogMjoJIyB3b3JkY29weQotCWFuZGkJdDIsU0laRVJFRywzCQkjIGdldCBieXRlIGNvdW50IC8g NAotCXN1YnUJdDIsU0laRVJFRyx0MgkJIyB0MiA9IG51bWJlciBvZiB3b3JkcyB0byBjb3B5ICog NAotCWJlcQl0Mix6ZXJvLDNmCi0Jc3VidQl0MCxTUkNSRUcsdDIJCSMgc3RvcCBhdCB0MAotCXN1 YnUJU0laRVJFRyxTSVpFUkVHLHQyCisJYW5kaQkJdDIsU0laRVJFRyxTWlJFRy0xCSMgZ2V0IGJ5 dGUgY291bnQgLyA0CisJUFRSX1NVQlUJdDIsU0laRVJFRyx0MgkJIyB0MiA9IG51bWJlciBvZiB3 b3JkcyB0byBjb3B5CisJYmVxCQl0Mix6ZXJvLDNmCisJUFRSX1NVQlUJdDAsU1JDUkVHLHQyCQkj IHN0b3AgYXQgdDAKKwlQVFJfU1VCVQlTSVpFUkVHLFNJWkVSRUcsdDIKIDE6Ci0JbHcJdDMsLTQo U1JDUkVHKQotCXN1YnUJU1JDUkVHLDQKLQlzdwl0MywtNChEU1RSRUcpCi0JYm5lCVNSQ1JFRyx0 MCwxYgotCXN1YnUJRFNUUkVHLDQKKwlSRUdfTAkJdDMsLVNaUkVHKFNSQ1JFRykKKwlQVFJfU1VC VQlTUkNSRUcsU1pSRUcKKwlSRUdfUwkJdDMsLVNaUkVHKERTVFJFRykKKwlibmUJCVNSQ1JFRyx0 MCwxYgorCVBUUl9TVUJVCURTVFJFRyxTWlJFRwogCiAzOgkjIGJ5dGVjb3B5Ci0JYmVxCVNJWkVS RUcsemVybyw0ZgkJIyBub3RoaW5nIGxlZnQgdG8gZG8/CisJYmVxCQlTSVpFUkVHLHplcm8sNGYJ CSMgbm90aGluZyBsZWZ0IHRvIGRvPwogCW5vcAogMToKLQlsYgl0MywtMShTUkNSRUcpCi0Jc3Vi dQlTUkNSRUcsMQotCXNiCXQzLC0xKERTVFJFRykKLQlzdWJ1CVNJWkVSRUcsMQotCWJndHoJU0la RVJFRywxYgotCXN1YnUJRFNUUkVHLDEKKwlsYgkJdDMsLTEoU1JDUkVHKQorCVBUUl9TVUJVCVNS Q1JFRywxCisJc2IJCXQzLC0xKERTVFJFRykKKwlQVFJfU1VCVQlTSVpFUkVHLDEKKwliZ3R6CQlT SVpFUkVHLDFiCisJUFRSX1NVQlUJRFNUUkVHLDEKIAogNDoJIyBjb3B5ZG9uZQogCWoJcmEKQEAg LTI3MiwyNyArMjc0LDIyIEBACiAJICoJQ29weSBmcm9tIHVuYWxpZ25lZCBzb3VyY2UgdG8gYWxp Z25lZCBkZXN0LgogCSAqLwogNToJIyBkZXN0YWxpZ25lZAotCWFuZGkJdDAsU0laRVJFRywzCQkj IHQwID0gYnl0ZWNvdW50IG1vZCA0Ci0Jc3VidQlhMyxTSVpFUkVHLHQwCQkjIG51bWJlciBvZiB3 b3JkcyB0byB0cmFuc2ZlcgotCWJlcQlhMyx6ZXJvLDNiCisJYW5kaQkJdDAsU0laRVJFRyxTWlJF Ry0xCSMgdDAgPSBieXRlY291bnQgbW9kIDQKKwlQVFJfU1VCVQlhMyxTSVpFUkVHLHQwCQkjIG51 bWJlciBvZiB3b3JkcyB0byB0cmFuc2ZlcgorCWJlcQkJYTMsemVybywzYgogCW5vcAotCW1vdmUJ U0laRVJFRyx0MAkJIyB0aGlzIG1hbnkgdG8gZG8gYWZ0ZXIgd2UgYXJlIGRvbmUKLQlzdWJ1CWEz LFNSQ1JFRyxhMwkJIyBzdG9wIHBvaW50CisJbW92ZQkJU0laRVJFRyx0MAkJIyB0aGlzIG1hbnkg dG8gZG8gYWZ0ZXIgd2UgYXJlIGRvbmUKKwlQVFJfU1VCVQlhMyxTUkNSRUcsYTMJCSMgc3RvcCBw b2ludAogCiAxOgotI2lmZGVmIF9fTUlQU0VCX18KLQlsd2wJdDMsLTQoU1JDUkVHKQotCWx3cgl0 MywtMShTUkNSRUcpCi0jZWxzZQotCWx3cgl0MywtNChTUkNSRUcpCi0JbHdsCXQzLC0xKFNSQ1JF RykKLSNlbmRpZgotCXN1YnUJU1JDUkVHLDQKLQlzdwl0MywtNChEU1RSRUcpCi0JYm5lCVNSQ1JF RyxhMywxYgotCXN1YnUJRFNUUkVHLDQKKwlSRUdfTEhJCQl0MywtU1pSRUcoU1JDUkVHKQorCVJF R19MTE8JCXQzLC0xKFNSQ1JFRykKKwlQVFJfU1VCVQlTUkNSRUcsU1pSRUcKKwlSRUdfUwkJdDMs LVNaUkVHKERTVFJFRykKKwlibmUJCVNSQ1JFRyxhMywxYgorCVBUUl9TVUJVCURTVFJFRyxTWlJF RwogCi0JagkzYgorCWIJCTNiCiAJbm9wCiAKIAkuc2V0CXJlb3JkZXIKSW5kZXg6IGxpYi9saWJj L21pcHMvZ2VuL19zZXRqbXAuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL2dlbi9fc2V0 am1wLlMJKHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvZ2VuL19zZXRqbXAuUwko d29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLS8qCSROZXRCU0Q6IF9zZXRqbXAuUyx2IDEu MjAgMjAwNS8xMC8wNyAxNzoxNjo0MCB0c3V0c3VpIEV4cCAkCSovCisvKgkkTmV0QlNEOiBfc2V0 am1wLlMsdiAxLjIwLjM0LjUgMjAxMC8wMi8wMyAyMzo0Njo0NyBtYXR0IEV4cCAkCSovCiAKIC8q LQogICogQ29weXJpZ2h0IChjKSAxOTkxLCAxOTkzCkBAIC0zNiwxNSArMzYsMTYgQEAKIF9fRkJT RElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxtYWNoaW5lL3JlZ251bS5oPgogCisjaW5jbHVk ZSAiU1lTLmgiCisKICNpZiBkZWZpbmVkKExJQkNfU0NDUykgJiYgIWRlZmluZWQobGludCkKLQlB U01TVFIoImZyb206IEAoIylfc2V0am1wLnMJOC4xIChCZXJrZWxleSkgNi80LzkzIikKLQlBU01T VFIoIiROZXRCU0Q6IF9zZXRqbXAuUyx2IDEuMjAgMjAwNS8xMC8wNyAxNzoxNjo0MCB0c3V0c3Vp IEV4cCAkIikKKyNpZiAwCisJUkNTSUQoImZyb206IEAoIylfc2V0am1wLnMJOC4xIChCZXJrZWxl eSkgNi80LzkzIikKKyNlbHNlCisJUkNTSUQoIiROZXRCU0Q6IF9zZXRqbXAuUyx2IDEuMjAuMzQu NSAyMDEwLzAyLzAzIDIzOjQ2OjQ3IG1hdHQgRXhwICQiKQorI2VuZGlmCiAjZW5kaWYgLyogTElC Q19TQ0NTIGFuZCBub3QgbGludCAqLwogCi0jaWZkZWYgX19BQklDQUxMU19fCi0JLmFiaWNhbGxz Ci0jZW5kaWYKLQogLyoKICAqIEMgbGlicmFyeSAtLSBfc2V0am1wLCBfbG9uZ2ptcAogICoKQEAg LTU2LDYyICs1Nyw3MCBAQAogICogVGhlIHByZXZpb3VzIHNpZ25hbCBzdGF0ZSBpcyBOT1QgcmVz dG9yZWQuCiAgKi8KIAorCS5zZXQJbm9yZW9yZGVyCiAKIExFQUYoX3NldGptcCkKLSNpZmRlZiBf X0FCSUNBTExTX18gCi0JLnNldAlub3Jlb3JkZXIKLQkuY3Bsb2FkIHQ5Ci0Jc3VidQlzcCwgc3As IENBTExGUkFNRV9TSVoJIyBhbGxvY2F0ZSBzdGFjayBmcmFtZQotCS5jcHJlc3RvcmUgMTYKKwlS RUdfUFJPTE9HVUUKKwlSRUdfTEkJdjAsIF9KQl9NQUdJQ19fU0VUSk1QCisJUkVHX1MJdjAsIChf SkJfTUFHSUMgICogU1pSRUcpKGEwKQorCVJFR19TCXJhLCAoX0pCX1JFR19SQSAqIFNaUkVHKShh MCkKKwlSRUdfUwlzMCwgKF9KQl9SRUdfUzAgKiBTWlJFRykoYTApCisJUkVHX1MJczEsIChfSkJf UkVHX1MxICogU1pSRUcpKGEwKQorCVJFR19TCXMyLCAoX0pCX1JFR19TMiAqIFNaUkVHKShhMCkK KwlSRUdfUwlzMywgKF9KQl9SRUdfUzMgKiBTWlJFRykoYTApCisJUkVHX1MJczQsIChfSkJfUkVH X1M0ICogU1pSRUcpKGEwKQorCVJFR19TCXM1LCAoX0pCX1JFR19TNSAqIFNaUkVHKShhMCkKKwlS RUdfUwlzNiwgKF9KQl9SRUdfUzYgKiBTWlJFRykoYTApCisJUkVHX1MJczcsIChfSkJfUkVHX1M3 ICogU1pSRUcpKGEwKQorCVJFR19TCXM4LCAoX0pCX1JFR19TOCAqIFNaUkVHKShhMCkKKyNpZiBk ZWZpbmVkKF9fbWlwc19uMzIpIHx8IGRlZmluZWQoX19taXBzX242NCkKKwlSRUdfUwlncCwgKF9K Ql9SRUdfR1AgKiBTWlJFRykoYTApCSMgbmV3YWJpIGdwIGlzIGNhbGxlZS1zYXZlZAogI2VuZGlm Ci0JbGkJdjAsIF9KQl9NQUdJQ19fU0VUSk1QCi0Jc3cJdjAsIChfSkJfTUFHSUMgICogU1pSRUcp KGEwKQotCXN3CXJhLCAoX0pCX1JFR19SQSAqIFNaUkVHKShhMCkKLQlzdwlzMCwgKF9KQl9SRUdf UzAgKiBTWlJFRykoYTApCi0Jc3cJczEsIChfSkJfUkVHX1MxICogU1pSRUcpKGEwKQotCXN3CXMy LCAoX0pCX1JFR19TMiAqIFNaUkVHKShhMCkKLQlzdwlzMywgKF9KQl9SRUdfUzMgKiBTWlJFRyko YTApCi0Jc3cJczQsIChfSkJfUkVHX1M0ICogU1pSRUcpKGEwKQotCXN3CXM1LCAoX0pCX1JFR19T NSAqIFNaUkVHKShhMCkKLQlzdwlzNiwgKF9KQl9SRUdfUzYgKiBTWlJFRykoYTApCi0Jc3cJczcs IChfSkJfUkVHX1M3ICogU1pSRUcpKGEwKQotCXN3CXM4LCAoX0pCX1JFR19TOCAqIFNaUkVHKShh MCkKLSNpZmRlZiBfX0FCSUNBTExTX18KLQlhZGR1CXNwLCBzcCwgQ0FMTEZSQU1FX1NJWgkjIHVu LWFsbG9jYXRlIHRoZSBzdGFjayBmcmFtZQotI2VuZGlmCQotCXN3CXNwLCAoX0pCX1JFR19TUCAq IFNaUkVHKShhMCkKKwlSRUdfUwlzcCwgKF9KQl9SRUdfU1AgKiBTWlJFRykoYTApCisJUkVHX0VQ SUxPR1VFCisKIAlqCXJhCiAJbW92ZQl2MCwgemVybwogRU5EKF9zZXRqbXApCiAKIExFQUYoX2xv bmdqbXApCi0jaWZkZWYgX19BQklDQUxMU19fIAotCS5zZXQJbm9yZW9yZGVyCi0JLmNwbG9hZCB0 OQotCXN1YnUJc3AsIHNwLCBDQUxMRlJBTUVfU0laCSMgYWxsb2NhdGUgc3RhY2sgZnJhbWUKLQku Y3ByZXN0b3JlIDE2Ci0jZW5kaWYgIAotCWx3CXYwLCAoX0pCX01BR0lDICAqIFNaUkVHKShhMCkK LQlsdwlyYSwgKF9KQl9SRUdfUkEgKiBTWlJFRykoYTApCi0JbGkJdDAsIF9KQl9NQUdJQ19fU0VU Sk1QCi0JYm5lCXYwLCB0MCwgYm90Y2gJCSMganVtcCBpZiBlcnJvcgotCWx3CXMwLCAoX0pCX1JF R19TMCAqIFNaUkVHKShhMCkKLQlsdwlzMSwgKF9KQl9SRUdfUzEgKiBTWlJFRykoYTApCi0JbHcJ czIsIChfSkJfUkVHX1MyICogU1pSRUcpKGEwKQotCWx3CXMzLCAoX0pCX1JFR19TMyAqIFNaUkVH KShhMCkKLQlsdwlzNCwgKF9KQl9SRUdfUzQgKiBTWlJFRykoYTApCi0JbHcJczUsIChfSkJfUkVH X1M1ICogU1pSRUcpKGEwKQotCWx3CXM2LCAoX0pCX1JFR19TNiAqIFNaUkVHKShhMCkKLQlsdwlz NywgKF9KQl9SRUdfUzcgKiBTWlJFRykoYTApCi0JbHcJc3AsIChfSkJfUkVHX1NQICogU1pSRUcp KGEwKQotCWx3CXM4LCAoX0pCX1JFR19TOCAqIFNaUkVHKShhMCkKKwlQSUNfUFJPTE9HVUUoX2xv bmdqbXApCisJUFRSX1NVQlUJc3AsIHNwLCBDQUxMRlJBTUVfU0laCisJU0FWRV9HUChDQUxMRlJB TUVfR1ApCiAKKwlSRUdfUFJPTE9HVUUKKwlSRUdfTAkJdjAsIChfSkJfTUFHSUMgICogU1pSRUcp KGEwKQkjIGdldCBtYWdpYyBudW1iZXIKKwlSRUdfTAkJcmEsIChfSkJfUkVHX1JBICogU1pSRUcp KGEwKQorCVJFR19MSQkJdDAsIF9KQl9NQUdJQ19fU0VUSk1QCisJYm5lCQl2MCwgdDAsIGJvdGNo CQkjIGp1bXAgaWYgZXJyb3IKKwlQVFJfQUREVQlzcCwgc3AsIENBTExGUkFNRV9TSVoJIyBkb2Vz IG5vdCBtYXR0ZXIsIHNhbml0eQorCVJFR19MCQlzMCwgKF9KQl9SRUdfUzAgKiBTWlJFRykoYTAp CisJUkVHX0wJCXMxLCAoX0pCX1JFR19TMSAqIFNaUkVHKShhMCkKKwlSRUdfTAkJczIsIChfSkJf UkVHX1MyICogU1pSRUcpKGEwKQorCVJFR19MCQlzMywgKF9KQl9SRUdfUzMgKiBTWlJFRykoYTAp CisJUkVHX0wJCXM0LCAoX0pCX1JFR19TNCAqIFNaUkVHKShhMCkKKwlSRUdfTAkJczUsIChfSkJf UkVHX1M1ICogU1pSRUcpKGEwKQorCVJFR19MCQlzNiwgKF9KQl9SRUdfUzYgKiBTWlJFRykoYTAp CisJUkVHX0wJCXM3LCAoX0pCX1JFR19TNyAqIFNaUkVHKShhMCkKKyNpZiBkZWZpbmVkKF9fbWlw c19uMzIpIHx8IGRlZmluZWQoX19taXBzX242NCkKKwlSRUdfTAkJZ3AsIChfSkJfUkVHX0dQICog U1pSRUcpKGEwKQorI2VuZGlmCisJUkVHX0wJCXNwLCAoX0pCX1JFR19TUCAqIFNaUkVHKShhMCkK KwlSRUdfTAkJczgsIChfSkJfUkVHX1M4ICogU1pSRUcpKGEwKQorCisJUkVHX0VQSUxPR1VFCisJ bW92ZQl2MCwgYTEJCQkjIGdldCByZXR1cm4gdmFsdWUgaW4gMXN0IGFyZwogCWoJcmEKLQltb3Zl CXYwLCBhMQorCW5vcAogCiBib3RjaDoKLQlqYWwJX0NfTEFCRUwobG9uZ2ptcGVycm9yKQorCS8q CisJICogV2Uga25vdyB3ZSBhcmVuJ3QgcmV0dXJuaW5nIHNvIHdlIGRvbid0IGNhcmUgYWJvdXQg cmVzdG9yaW5nCisJICogb3VyIGNhbGxlcidzIEdQLgorCSAqLworCVBUUl9MQQl0OSwgX0NfTEFC RUwobG9uZ2ptcGVycm9yKQorCWphbHIJdDkKIAlub3AKLQlqYWwJX0NfTEFCRUwoYWJvcnQpCi0J bm9wCisKKwlQSUNfVEFJTENBTEwoYWJvcnQpCiBFTkQoX2xvbmdqbXApCkluZGV4OiBsaWIvbGli Yy9taXBzL2dlbi9zZXRqbXAuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL2dlbi9zZXRq bXAuUwkocmV2aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMvbWlwcy9nZW4vc2V0am1wLlMJKHdv cmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAKIAlBU01TVFIoIiROZXRCU0Q6IHNldGptcC5T LHYgMS4xNyAyMDA1LzA5LzE3IDExOjQ5OjM5IHRzdXRzdWkgRXhwICQiKQogI2VuZGlmIC8qIExJ QkNfU0NDUyBhbmQgbm90IGxpbnQgKi8KIAorI2luY2x1ZGUgIlNZUy5oIgorCiAjaWZkZWYgX19B QklDQUxMU19fCiAJLmFiaWNhbGxzCiAjZW5kaWYKQEAgLTYxLDEwMCArNjMsMTAyIEBACiAKIE5F U1RFRChzZXRqbXAsIFNFVEpNUF9GUkFNRV9TSVpFLCByYSkKIAkubWFzawkweDgwMDAwMDAwLCAo Q0FMTEZSQU1FX1JBIC0gQ0FMTEZSQU1FX1NJWikKLQkuc2V0CW5vcmVvcmRlcgotI2lmZGVmIF9f QUJJQ0FMTFNfXwotCS5jcGxvYWQJdDkKLSNlbmRpZgotCXN1YnUJc3AsIHNwLCBTRVRKTVBfRlJB TUVfU0laRQkjIGFsbG9jYXRlIHN0YWNrIGZyYW1lCi0jaWZkZWYgX19BQklDQUxMU19fCi0JLmNw cmVzdG9yZSAxNgotI2VuZGlmCi0Jc3cJcmEsIENBTExGUkFNRV9SQShzcCkJCSMgc2F2ZSBSQQot CXN3CWEwLCBDQUxMRlJBTUVfU0laKHNwKQkJIyBzdG9yZSBlbnYKKwlTRVRVUF9HUAorCVBUUl9T VUJVIHNwLCBzcCwgU0VUSk1QX0ZSQU1FX1NJWkUJIyBhbGxvY2F0ZSBzdGFjayBmcmFtZQorCVNB VkVfR1AoQ0FMTEZSQU1FX0dQKQorCVNFVFVQX0dQNjQoQ0FMTEZSQU1FX0dQLCBzZXRqbXApCiAK KwlSRUdfUwlyYSwgQ0FMTEZSQU1FX1JBKHNwKQkJIyBzYXZlIFJBCisJUkVHX1MJYTAsIENBTExG UkFNRV9TSVooc3ApCQkjIHN0b3JlIGVudgorCiAJLyogR2V0IHRoZSBzaWduYWwgbWFzay4gKi8K LQlhZGR1CWEyLCBhMCwgX0pCX1NJR01BU0sgKiBTWlJFRwkjICZvZW52CisJUFRSX0FERFUgYTIs IGEwLCBfSkJfU0lHTUFTSyAqIFNaUkVHCSMgJm9lbnYKIAlsaQlhMCwgMQkJCQkjIFNJR19TRVRC TE9DSwogCW1vdmUJYTEsIHplcm8JCQkjICZlbnYgPT0gMAotCWxhCXQ5LCBfQ19MQUJFTChzaWdw cm9jbWFzaykJIyBnZXQgY3VycmVudCBzaWduYWwgbWFzawotCWphbAl0OQotCW5vcAorCVBUUl9M QQl0OSwgX0NfTEFCRUwoc2lncHJvY21hc2spCSMgZ2V0IGN1cnJlbnQgc2lnbmFsIG1hc2sKKwlq YWxyCXQ5CiAKLQlsdwlhMCwgQ0FMTEZSQU1FX1NJWihzcCkJCSMgcmVzdG9yZSBlbnYgcG9pbnRl cgotCWx3CXJhLCBDQUxMRlJBTUVfUkEoc3ApCQkjIHJlc3RvcmUgUkEKLQlhZGR1CXNwLCBzcCwg U0VUSk1QX0ZSQU1FX1NJWkUJIyBwb3Agc3RhY2sgZnJhbWUKKwlSRVNUT1JFX0dQNjQKKwlSRUdf TAlhMCwgQ0FMTEZSQU1FX1NJWihzcCkJCSMgcmVzdG9yZSBlbnYgcG9pbnRlcgorCVJFR19MCXJh LCBDQUxMRlJBTUVfUkEoc3ApCQkjIHJlc3RvcmUgUkEKKwlQVFJfQUREVSBzcCwgc3AsIFNFVEpN UF9GUkFNRV9TSVpFCSMgcG9wIHN0YWNrIGZyYW1lCiAKLQlsaQl2MCwgX0pCX01BR0lDX1NFVEpN UAotCXN3CXYwLCAoX0pCX01BR0lDICAqIFNaUkVHKShhMCkKLQlzdwlyYSwgKF9KQl9SRUdfUkEg KiBTWlJFRykoYTApCi0Jc3cJczAsIChfSkJfUkVHX1MwICogU1pSRUcpKGEwKQotCXN3CXMxLCAo X0pCX1JFR19TMSAqIFNaUkVHKShhMCkKLQlzdwlzMiwgKF9KQl9SRUdfUzIgKiBTWlJFRykoYTAp Ci0Jc3cJczMsIChfSkJfUkVHX1MzICogU1pSRUcpKGEwKQotCXN3CXM0LCAoX0pCX1JFR19TNCAq IFNaUkVHKShhMCkKLQlzdwlzNSwgKF9KQl9SRUdfUzUgKiBTWlJFRykoYTApCi0Jc3cJczYsIChf SkJfUkVHX1M2ICogU1pSRUcpKGEwKQotCXN3CXM3LCAoX0pCX1JFR19TNyAqIFNaUkVHKShhMCkK LQlzdwlzcCwgKF9KQl9SRUdfU1AgKiBTWlJFRykoYTApCi0Jc3cJczgsIChfSkJfUkVHX1M4ICog U1pSRUcpKGEwKQorCVJFR19MSQl2MCwgX0pCX01BR0lDX1NFVEpNUAorCVJFR19TCXYwLCAoX0pC X01BR0lDICAqIFNaUkVHKShhMCkKKwlSRUdfUwlyYSwgKF9KQl9SRUdfUkEgKiBTWlJFRykoYTAp CisJUkVHX1MJczAsIChfSkJfUkVHX1MwICogU1pSRUcpKGEwKQorCVJFR19TCXMxLCAoX0pCX1JF R19TMSAqIFNaUkVHKShhMCkKKwlSRUdfUwlzMiwgKF9KQl9SRUdfUzIgKiBTWlJFRykoYTApCisJ UkVHX1MJczMsIChfSkJfUkVHX1MzICogU1pSRUcpKGEwKQorCVJFR19TCXM0LCAoX0pCX1JFR19T NCAqIFNaUkVHKShhMCkKKwlSRUdfUwlzNSwgKF9KQl9SRUdfUzUgKiBTWlJFRykoYTApCisJUkVH X1MJczYsIChfSkJfUkVHX1M2ICogU1pSRUcpKGEwKQorCVJFR19TCXM3LCAoX0pCX1JFR19TNyAq IFNaUkVHKShhMCkKKwlSRUdfUwlzcCwgKF9KQl9SRUdfU1AgKiBTWlJFRykoYTApCisJUkVHX1MJ czgsIChfSkJfUkVHX1M4ICogU1pSRUcpKGEwKQorI2lmIGRlZmluZWQoX19taXBzX24zMikgfHwg ZGVmaW5lZChfX21pcHNfbjY0KQorCVJFR19TCWdwLCAoX0pCX1JFR19HUCAqIFNaUkVHKShhMCkK KyNlbmRpZgogCiAJbW92ZQl2MCwgemVybwotCWoJcmEKKwlqcglyYQogRU5EKHNldGptcCkKIAog I2RlZmluZSBMT05HSk1QX0ZSQU1FX1NJWkUJKENBTExGUkFNRV9TSVogKyAoU1pSRUcgKiAyKSkK IAogTkVTVEVEKGxvbmdqbXAsIExPTkdKTVBfRlJBTUVfU0laRSwgcmEpCiAJLm1hc2sJMHg4MDAw MDAwMCwgKENBTExGUkFNRV9SQSAtIENBTExGUkFNRV9TSVopCi0JLnNldAlub3Jlb3JkZXIKLSNp ZmRlZiBfX0FCSUNBTExTX18KLQkuY3Bsb2FkCXQ5Ci0jZW5kaWYKLQlzdWJ1CXNwLCBzcCwgTE9O R0pNUF9GUkFNRV9TSVpFCSMgYWxsb2NhdGUgc3RhY2sgZnJhbWUKLSNpZmRlZiBfX0FCSUNBTExT X18KLQkuY3ByZXN0b3JlIDE2Ci0jZW5kaWYKLQlzdwlyYSwgQ0FMTEZSQU1FX1JBKHNwKQkJIyBz YXZlIFJBCi0JbHcJdjAsIChfSkJfTUFHSUMgICogU1pSRUcpKGEwKQotCWxpCXQwLCBfSkJfTUFH SUNfU0VUSk1QCisJUElDX1BST0xPR1VFKGxvbmdqbXApCisJUFRSX1NVQlUgc3AsIHNwLCBMT05H Sk1QX0ZSQU1FX1NJWkUJIyBhbGxvY2F0ZSBzdGFjayBmcmFtZQorCVNBVkVfR1AoQ0FMTEZSQU1F X0dQKQorCisJUkVHX1MJcmEsIENBTExGUkFNRV9SQShzcCkJCSMgc2F2ZSBSQQorCVJFR19MCXYw LCAoX0pCX01BR0lDICAqIFNaUkVHKShhMCkKKwlSRUdfTEkJdDAsIF9KQl9NQUdJQ19TRVRKTVAK IAlibmUJdjAsIHQwLCBib3RjaAkJIyBqdW1wIGlmIGVycm9yCiAJbm9wCiAKLQlzdwlhMCwgQ0FM TEZSQU1FX1NJWihzcCkJCSMgc2F2ZSBlbnYKLQlzdwlhMSwgKENBTExGUkFNRV9TSVogKyBTWlJF Rykoc3ApCSMgc2F2ZSByZXR1cm4gdmFsdWUKKwlSRUdfUwlhMCwgQ0FMTEZSQU1FX1NJWihzcCkJ CSMgc2F2ZSBlbnYKKwlSRUdfUwlhMSwgKENBTExGUkFNRV9TSVogKyBTWlJFRykoc3ApCSMgc2F2 ZSByZXR1cm4gdmFsdWUKIAogCSMgc2V0IHNpZ21hc2sKLQlhZGR1CWExLCBhMCwgX0pCX1NJR01B U0sgKiBTWlJFRwkjICZzZXQKKwlQVFJfQUREVSBhMSwgYTAsIF9KQl9TSUdNQVNLICogU1pSRUcJ IyAmc2V0CiAJbW92ZQlhMiwgemVybwkJCSMgJm9zZXQgPT0gTlVMTAogCWxpCWEwLCAzCQkJCSMg U0lHX1NFVE1BU0sKLQlsYQl0OSxfQ19MQUJFTChzaWdwcm9jbWFzaykJIyBzZXQgY3VycmVudCBz aWduYWwgbWFzaworCVBUUl9MQQl0OSxfQ19MQUJFTChzaWdwcm9jbWFzaykJIyBzZXQgY3VycmVu dCBzaWduYWwgbWFzawogCWphbAl0OQogCW5vcAogCi0JbHcJYTAsIENBTExGUkFNRV9TSVooc3Ap CQkjIHJlc3RvcmUgZW52Ci0JbHcJYTEsIChDQUxMRlJBTUVfU0laICsgU1pSRUcpKHNwKQkjIHJl c3RvcmUgcmV0dXJuIHZhbHVlCisJUkVHX0wJYTAsIENBTExGUkFNRV9TSVooc3ApCQkjIHJlc3Rv cmUgZW52CisJUkVHX0wJYTEsIChDQUxMRlJBTUVfU0laICsgU1pSRUcpKHNwKQkjIHJlc3RvcmUg cmV0dXJuIHZhbHVlCiAKLQlsdwlyYSwgKF9KQl9SRUdfUkEgKiBTWlJFRykoYTApCi0JbHcJczAs IChfSkJfUkVHX1MwICogU1pSRUcpKGEwKQotCWx3CXMxLCAoX0pCX1JFR19TMSAqIFNaUkVHKShh MCkKLQlsdwlzMiwgKF9KQl9SRUdfUzIgKiBTWlJFRykoYTApCi0JbHcJczMsIChfSkJfUkVHX1Mz ICogU1pSRUcpKGEwKQotCWx3CXM0LCAoX0pCX1JFR19TNCAqIFNaUkVHKShhMCkKLQlsdwlzNSwg KF9KQl9SRUdfUzUgKiBTWlJFRykoYTApCi0JbHcJczYsIChfSkJfUkVHX1M2ICogU1pSRUcpKGEw KQotCWx3CXM3LCAoX0pCX1JFR19TNyAqIFNaUkVHKShhMCkKLQlsdwlzcCwgKF9KQl9SRUdfU1Ag KiBTWlJFRykoYTApCi0JbHcJczgsIChfSkJfUkVHX1M4ICogU1pSRUcpKGEwKQorCVJFR19MCXJh LCAoX0pCX1JFR19SQSAqIFNaUkVHKShhMCkKKwlSRUdfTAlzMCwgKF9KQl9SRUdfUzAgKiBTWlJF RykoYTApCisJUkVHX0wJczEsIChfSkJfUkVHX1MxICogU1pSRUcpKGEwKQorCVJFR19MCXMyLCAo X0pCX1JFR19TMiAqIFNaUkVHKShhMCkKKwlSRUdfTAlzMywgKF9KQl9SRUdfUzMgKiBTWlJFRyko YTApCisJUkVHX0wJczQsIChfSkJfUkVHX1M0ICogU1pSRUcpKGEwKQorCVJFR19MCXM1LCAoX0pC X1JFR19TNSAqIFNaUkVHKShhMCkKKwlSRUdfTAlzNiwgKF9KQl9SRUdfUzYgKiBTWlJFRykoYTAp CisJUkVHX0wJczcsIChfSkJfUkVHX1M3ICogU1pSRUcpKGEwKQorCVJFR19MCXNwLCAoX0pCX1JF R19TUCAqIFNaUkVHKShhMCkKKwlSRUdfTAlzOCwgKF9KQl9SRUdfUzggKiBTWlJFRykoYTApCisj aWYgZGVmaW5lZChfX21pcHNfbjMyKSB8fCBkZWZpbmVkKF9fbWlwc19uNjQpCisJUkVHX0wJZ3As IChfSkJfUkVHX0dQICogU1pSRUcpKGEwKQorI2VuZGlmCisKIAltb3ZlCXYwLCBhMQogCWoJcmEK IAlub3AKIAogYm90Y2g6Ci0JbGEJdDksIF9DX0xBQkVMKGxvbmdqbXBlcnJvcikKLQlqYWwJdDkK KwkvKgorCSAqIFdlIGtub3cgd2UgYXJlbid0IHJldHVybmluZyBzbyB3ZSBkb24ndCBjYXJlIGFi b3V0IHJlc3RvcmluZworCSAqIG91ciBjYWxsZXIncyBHUC4KKwkgKi8KKwlQVFJfTEEJdDksIF9D X0xBQkVMKGxvbmdqbXBlcnJvcikKKwlqYWxyCXQ5CiAJbm9wCiAKLQlsYQl0OSwgX0NfTEFCRUwo YWJvcnQpCi0JamFsCXQ5Ci0Jbm9wCisJUElDX1RBSUxDQUxMKGFib3J0KQogRU5EKGxvbmdqbXAp CkluZGV4OiBsaWIvbGliYy9taXBzL2dlbi9zaWdzZXRqbXAuUwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIv bGliYy9taXBzL2dlbi9zaWdzZXRqbXAuUwkocmV2aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMv bWlwcy9nZW4vc2lnc2V0am1wLlMJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAKIAlB U01TVFIoIiROZXRCU0Q6IHNpZ3NldGptcC5TLHYgMS44IDIwMDUvMDkvMTcgMTE6NDk6MzkgdHN1 dHN1aSBFeHAgJCIpCiAjZW5kaWYgLyogTElCQ19TQ0NTIGFuZCBub3QgbGludCAqLwogCisjaW5j bHVkZSAiU1lTLmgiCisKICNpZmRlZiBfX0FCSUNBTExTX18KIAkuYWJpY2FsbHMKICNlbmRpZgpA QCAtNTcsMzAgKzU5LDE5IEBACiAgKi8KIAogTEVBRihzaWdzZXRqbXApCi0jaWZkZWYgX19BQklD QUxMU19fCi0JLnNldAlub3Jlb3JkZXIKLQkuY3Bsb2FkCXQ5Ci0JLnNldAlyZW9yZGVyCi0jZW5k aWYKKwlQSUNfUFJPTE9HVUUoc2lnc2V0am1wKQorCiAJYm5lCWExLCAweDAsIDFmCQkJIyBkbyBz YXZpbmcgb2Ygc2lnbmFsIG1hc2s/Ci0JbGEJdDksIF9zZXRqbXAKLQlqciB0OQorCVBJQ19UQUlM Q0FMTChfc2V0am1wKQogCi0xOglsYQl0OSwgc2V0am1wCi0JanIgdDkKKzE6CVBJQ19UQUlMQ0FM TChzZXRqbXApCiBFTkQoc2lnc2V0am1wKQogCiBMRUFGKHNpZ2xvbmdqbXApCi0jaWZkZWYgX19B QklDQUxMU19fCi0JLnNldAlub3Jlb3JkZXIKLQkuY3Bsb2FkCXQ5Ci0JLnNldAlyZW9yZGVyCi0j ZW5kaWYKLQlsdwl0MCwgKF9KQl9NQUdJQyAgKiBTWlJFRykoYTApCi0JbGkJdDEsIF9KQl9NQUdJ Q19fU0VUSk1QCisJUElDX1BST0xPR1VFKHNpZ2xvbmdqbXApCisJUkVHX0wJdDAsIChfSkJfTUFH SUMgICogU1pSRUcpKGEwKQorCVJFR19MSQl0MSwgX0pCX01BR0lDX19TRVRKTVAKIAlibmUJdDAs IHQxLCAxZgkJCSMgc2V0am1wIG9yIF9zZXRqbXAgbWFnaWM/Ci0JbGEJdDksIF9sb25nam1wCi0J anIJdDkKLTE6CWxhCXQ5LCBsb25nam1wCi0JanIJdDkKKwlQSUNfVEFJTENBTEwoX2xvbmdqbXAp CisxOglQSUNfVEFJTENBTEwobG9uZ2ptcCkKIEVORChzaWdsb25nam1wKQpJbmRleDogbGliL2xp YmMvbWlwcy9zeXMvYnJrLlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9zeXMvYnJrLlMJ KHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvc3lzL2Jyay5TCSh3b3JraW5nIGNv cHkpCkBAIC00OSwyNSArNDksMjMgQEAKIF9DX0xBQkVMKG1pbmJyayk6CiAJLndvcmQJX0NfTEFC RUwoX2VuZCkKIAorCS50ZXh0CiBMRUFGKF9fc3lzX2JyaykKIAlXRUFLX0FMSUFTKGJyaywgX19z eXNfYnJrKQogCVdFQUtfQUxJQVMoX2JyaywgX19zeXNfYnJrKQotI2lmZGVmIF9fQUJJQ0FMTFNf XwotCS5zZXQJbm9yZW9yZGVyCi0JLmNwbG9hZAl0OQotCS5zZXQJcmVvcmRlcgotI2VuZGlmCi0J bHcJdjAsIF9DX0xBQkVMKG1pbmJyaykKKwlQSUNfUFJPTE9HVUUoX19zeXNfYnJrKQorCVBUUl9M QQl2MCwgX0NfTEFCRUwobWluYnJrKQorCVBUUl9MCXYwLCAwKHYwKQogCWJnZXUJYTAsIHYwLCAx ZgogCW1vdmUJYTAsIHYwCQkjIGRvbnQgYWxsb3cgYnJlYWsgPCBtaW5icmsKIDE6CiAJbGkJdjAs IFNZU19icmVhawogCXN5c2NhbGwKIAlibmUJYTMsIHplcm8sIDJmCi0Jc3cJYTAsIF9DX0xBQkVM KF9fY3VyYnJrKQorCVBUUl9MQQl0MCwgX0NfTEFCRUwoX19jdXJicmspCisJUFRSX1MJYTAsIDAo dDApCiAJbW92ZQl2MCwgemVybwotCWoJcmEKKwlQSUNfUkVUVVJOKCkKIDI6Ci0JbGEJdDksIF9D X0xBQkVMKF9fY2Vycm9yKQotCWpyCXQ5CisJUElDX1RBSUxDQUxMKF9fY2Vycm9yKQogRU5EKF9f c3lzX2JyaykKSW5kZXg6IGxpYi9saWJjL21pcHMvc3lzL3B0cmFjZS5TCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGxpYi9saWJjL21pcHMvc3lzL3B0cmFjZS5TCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGli Yy9taXBzL3N5cy9wdHJhY2UuUwkod29ya2luZyBjb3B5KQpAQCAtNDEsMzIgKzQxLDMxIEBACiAJ QVNNU1RSKCIkTmV0QlNEOiBwdHJhY2UuUyx2IDEuOSAyMDAzLzA4LzA3IDE2OjQyOjE3IGFnYyBF eHAgJCIpCiAjZW5kaWYgLyogTElCQ19TQ0NTIGFuZCBub3QgbGludCAqLwogCi1MRUFGKHB0cmFj ZSkKLQkuZnJhbWUJc3AsIDQwLCByYQotCS5tYXNrCTB4ODAwMDAwMDAsIC04Ci0jaWZkZWYgX19B QklDQUxMU19fCi0JLnNldCAgICBub3Jlb3JkZXIKLQkuY3Bsb2FkIHQ5Ci0JLnNldCAgICByZW9y ZGVyCi0jZW5kaWYKLQlzdWJ1CXNwLCBzcCwgNDAKLQlzdwlyYSwgIDMyKHNwKQotI2lmZGVmIF9f QUJJQ0FMTFNfXwotCS5jcHJlc3RvcmUgMTYKLSNlbmRpZgotCWxhCXQ5LCBfQ19MQUJFTChfX2Vy cm9yKQkjIGxvY2F0ZSBhZGRyZXNzIG9mIGVycm5vCi0JamFscgl0OQotI2lmZGVmIF9fQUJJQ0FM TFNfXwotCWx3CWdwLCAxNihzcCkKLSNlbmRpZgotCXN3CXplcm8sIDAodjApCi0JbHcJcmEsIDMy KHNwKQotCWFkZHUJc3AsIHNwLCA0MAotCWxpCXYwLCBTWVNfcHRyYWNlCitORVNURURfTk9QUk9G SUxFKHB0cmFjZSwgQ0FMTEZSQU1FX1NJWiwgcmEpCisJLm1hc2sJMHg4MDAwMDAwMCwgKENBTExG UkFNRV9SQSAtIENBTExGUkFNRV9TSVopCisJU0VUVVBfR1AKKwlQVFJfU1VCVQlzcCwgc3AsIENB TExGUkFNRV9TSVoKKwlTRVRVUF9HUDY0KENBTExGUkFNRV9HUCwgcHRyYWNlKQorCVNBVkVfR1Ao Q0FMTEZSQU1FX0dQKQorCisJUFRSX1MJCXJhLCBDQUxMRlJBTUVfUkEoc3ApCisKKwlQVFJfTEEJ CXQ5LCBfQ19MQUJFTChfX2Vycm9yKQkjIGxvY2F0ZSBhZGRyZXNzIG9mIGVycm5vCisJamFscgkJ dDkKKworCVBUUl9MCQlyYSwgQ0FMTEZSQU1FX1JBKHNwKQorCUlOVF9TCQl6ZXJvLCAwKHYwKQkJ IyB1cGRhdGUgZXJybm8gdmFsdWUKKworCWxpCQl2MCwgU1lTX3B0cmFjZQogCXN5c2NhbGwKLQli bmUJYTMsIHplcm8sIDFmCi0JaglyYQotMToKLQlsYQl0OSwgX0NfTEFCRUwoX19jZXJyb3IpCi0J anIJdDkKKworCSMgTG9hZCBfX2NlcnJvcidzIGFkZHJlc3MgdXNpbmcgb3VyIGdwLCB0aGVuIHJl c3RvcmUgaXQuCisJUFRSX0xBCQl0OSwgX19jZXJyb3IKKwlSRVNUT1JFX0dQNjQKKwlQVFJfQURE VQlzcCwgc3AsIENBTExGUkFNRV9TSVoKKworCWJuZQkJYTMsIHplcm8sIDFmCisKKwlqCQlyYQor MToJagkJdDkKIEVORChwdHJhY2UpCkluZGV4OiBsaWIvbGliYy9taXBzL3N5cy9mb3JrLlMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9zeXMvZm9yay5TCShyZXZpc2lvbiAyMDkwNDApCisr KyBsaWIvbGliYy9taXBzL3N5cy9mb3JrLlMJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIwICs0NCwx NCBAQAogTEVBRihfX3N5c19mb3JrKQogCVdFQUtfQUxJQVMoZm9yaywgX19zeXNfZm9yaykKIAlX RUFLX0FMSUFTKF9mb3JrLCBfX3N5c19mb3JrKQotI2lmZGVmIF9fQUJJQ0FMTFNfXwotCS5zZXQg ICAgbm9yZW9yZGVyCi0JLmNwbG9hZCB0OQotCS5zZXQgICAgcmVvcmRlcgotI2VuZGlmCi0JZm9y ayA9IF9fc3lzX2ZvcmsKKwlQSUNfUFJPTE9HVUUoX19zeXNfZm9yaykKIAlsaQl2MCwgU1lTX2Zv cmsJIyBwaWQgPSBmb3JrKCkKIAlzeXNjYWxsCiAJYm5lCWEzLCB6ZXJvLCAyZgogCWJlcQl2MSwg emVybywgMWYJIyB2MSA9PSAwIGluIHBhcmVudCwgMSBpbiBjaGlsZAogCW1vdmUJdjAsIHplcm8K IDE6Ci0JaglyYQorCVBJQ19SRVRVUk4oKQogMjoKLQlsYQl0OSwgX0NfTEFCRUwoX19jZXJyb3Ip Ci0JanIJdDkKKwlQSUNfVEFJTENBTEwoX19jZXJyb3IpCiBFTkQoX19zeXNfZm9yaykKSW5kZXg6 IGxpYi9saWJjL21pcHMvc3lzL3NicmsuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL3N5 cy9zYnJrLlMJKHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvc3lzL3NicmsuUwko d29ya2luZyBjb3B5KQpAQCAtNTIsMzQgKzUyLDIyIEBACiBMRUFGKF9fc3lzX3NicmspCiAJV0VB S19BTElBUyhzYnJrLCBfX3N5c19zYnJrKQogCVdFQUtfQUxJQVMoX3NicmssIF9fc3lzX3Nicmsp Ci0jaWZkZWYgX19BQklDQUxMU19fCi0JLnNldAlub3Jlb3JkZXIKLQkuY3Bsb2FkCXQ5Ci0JLnNl dAlyZW9yZGVyCi0jZW5kaWYKLQlhZGR1CXNwLCBzcCwgLTE2Ci0Jc3cJczAsIDAoc3ApCQkjIFBy ZXNlcnZlIHMwIHZhbHVlIGluIHN0YWNrCi0JCQkJCSMgaXQgc2hvdWxkIGJlIHRoZSBzYW1lIG9u IHJldHVybgotCQkJCQkjIFdlIGNhbid0IHVzZSB2MSBhcyB0ZW1wb3JhcnkKLQkJCQkJIyByZWdp c3RlciBzaW5jZSBzeXNjYWxsIHVzZXMgaXQKLQkJCQkJIyB0byByZXR1cm4gNjQtYml0IHZhbHVl cwotCWx3CXMwLCBfQ19MQUJFTChfX2N1cmJyaykKLQlsaQl2MCwgU1lTX2JyZWFrCi0JYWRkdQlh MCwgYTAsIHMwCQkjIGNvbXB1dGUgY3VycmVudCBicmVhaworCVBJQ19QUk9MT0dVRShfX3N5c19z YnJrKQorCVBUUl9MQQl0MCwgX0NfTEFCRUwoX19jdXJicmspCisJUFRSX0wJdDAsIDAodDApCisJ UFRSX0FERFUgYTAsIGEwLCB0MAogCisJbGkJdjAsIFNZU19icmVhawogCXN5c2NhbGwKIAogCWJu ZQlhMywgemVybywgMWYKIAlub3AKLQltb3ZlCXYwLCBzMAkJCSMgcmV0dXJuIG9sZCB2YWwgb2Yg Y3VyYnJrIGZyb20gYWJvdmUKLQlsdwlzMCwgMChzcCkKLQlhZGR1CXNwLCBzcCwgMTYKLQlzdwlh MCwgX0NfTEFCRUwoX19jdXJicmspCSMgc2F2ZSBjdXJyZW50IHZhbCBvZiBjdXJicmsgZnJvbSBh Ym92ZQorCW1vdmUJdjAsIHQwCQkJIyByZXR1cm4gb2xkIHZhbCBvZiBjdXJicmsgZnJvbSBhYm92 ZQorCVBUUl9MQQl0MCwgX0NfTEFCRUwoX19jdXJicmspCisJUFRSX1MJYTAsIDAodDApCQkjIHNh dmUgY3VycmVudCB2YWwgb2YgY3VyYnJrIGZyb20gYWJvdmUKKwlQSUNfUkVUVVJOKCkKIAlqCXJh CiAKIDE6Ci0JbHcJczAsIDAoc3ApCi0JYWRkdQlzcCwgc3AsIDE2Ci0JbGEJdDksIF9DX0xBQkVM KF9fY2Vycm9yKQotCWpyCXQ5CisJUElDX1RBSUxDQUxMKF9fY2Vycm9yKQogRU5EKF9fc3lzX3Ni cmspCkluZGV4OiBsaWIvbGliYy9taXBzL3N5cy9PdmZvcmsuUwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIv bGliYy9taXBzL3N5cy9PdmZvcmsuUwkocmV2aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMvbWlw cy9zeXMvT3Zmb3JrLlMJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDIxICs0OSwxNiBAQAogICovCiAK IExFQUYoX19zeXNfdmZvcmspCi0jaWZkZWYgX19BQklDQUxMU19fCi0JLnNldAlub3Jlb3JkZXIK LQkuY3Bsb2FkCXQ5Ci0JLnNldAlyZW9yZGVyCi0jZW5kaWYKIAlXRUFLX0FMSUFTKHZmb3JrLCBf X3N5c192Zm9yaykKIAlXRUFLX0FMSUFTKF92Zm9yaywgX19zeXNfdmZvcmspCisJUElDX1BST0xP R1VFKF9fc3lzX3Zmb3JrKQogCWxpCXYwLCBTWVNfdmZvcmsJCSMgc3lzdGVtIGNhbGwgbnVtYmVy IGZvciB2Zm9yawogCXN5c2NhbGwKIAliZXEJYTMsIHplcm8sIDFmCQkjIGp1bXAgaWYgbm8gZXJy b3JzCi0JbGEJdDksIF9fY2Vycm9yCi0JanIJdDkKKwlQSUNfVEFJTENBTEwoX19jZXJyb3IpCiAx OgogCWJlcQl2MSwgemVybywgMmYJCSMgcGFyZW50IHByb2Nlc3MgPwogCW1vdmUJdjAsIHplcm8J CSMgcmV0dXJuIHplcm8gaW4gY2hpbGQKIDI6Ci0JaglyYQorCVBJQ19SRVRVUk4oKQogRU5EKF9f c3lzX3Zmb3JrKQpJbmRleDogbGliL2xpYmMvbWlwcy9zeXMvZXhlY3QuUwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBsaWIvbGliYy9taXBzL3N5cy9leGVjdC5TCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGli Yy9taXBzL3N5cy9leGVjdC5TCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNiArNDEsMTEgQEAKICNl bmRpZiAvKiBMSUJDX1NDQ1MgYW5kIG5vdCBsaW50ICovCiAKIExFQUYoZXhlY3QpCi0jaWZkZWYg X19BQklDQUxMU19fCi0JLnNldCAgICBub3Jlb3JkZXIKLQkuY3Bsb2FkIHQ5Ci0JLnNldCAgICBy ZW9yZGVyCi0jZW5kaWYKKwlQSUNfUFJPTE9HVUUoZXhlY3QpCiAJbGkJdjAsIFNZU19leGVjdmUK IAlzeXNjYWxsCiAJYm5lCWEzLCB6ZXJvLCAxZgotCWoJcmEKKwlQSUNfUkVUVVJOKCkKIDE6Ci0J bGEgICAgICB0OSwgX0NfTEFCRUwoX19jZXJyb3IpCi0JanIgICAgICB0OQorCVBJQ19UQUlMQ0FM TChfX2NlcnJvcikKIEVORChleGVjdCkKSW5kZXg6IGxpYi9saWJjL21pcHMvc3lzL2NlcnJvci5T Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpYi9saWJjL21pcHMvc3lzL2NlcnJvci5TCShyZXZpc2lvbiAyMDkw NDApCisrKyBsaWIvbGliYy9taXBzL3N5cy9jZXJyb3IuUwkod29ya2luZyBjb3B5KQpAQCAtMSw0 ICsxLDQgQEAKLS8qCSROZXRCU0Q6IGNlcnJvci5TLHYgMS4xMyAyMDAzLzA4LzA3IDE2OjQyOjE3 IGFnYyBFeHAgJAkqLworLyoJJE5ldEJTRDogY2Vycm9yLlMsdiAxLjE0IDIwMDkvMTIvMTQgMDE6 MDc6NDIgbWF0dCBFeHAgJAkqLwogCiAvKi0KICAqIENvcHlyaWdodCAoYykgMTk5MSwgMTk5MwpA QCAtMzcsMzUgKzM3LDM2IEBACiAjaW5jbHVkZSAiU1lTLmgiCiAKICNpZiBkZWZpbmVkKExJQkNf U0NDUykgJiYgIWRlZmluZWQobGludCkKLQlBU01TVFIoImZyb206IEAoIyljZXJyb3Iucwk4LjEg KEJlcmtlbGV5KSA2LzE2LzkzIikKLQlBU01TVFIoIiROZXRCU0Q6IGNlcnJvci5TLHYgMS4xMyAy MDAzLzA4LzA3IDE2OjQyOjE3IGFnYyBFeHAgJCIpCisjaWYgMAorCVJDU0lEKCJmcm9tOiBAKCMp Y2Vycm9yLnMJOC4xIChCZXJrZWxleSkgNi8xNi85MyIpCisjZWxzZQorCVJDU0lEKCIkTmV0QlNE OiBjZXJyb3IuUyx2IDEuMTQgMjAwOS8xMi8xNCAwMTowNzo0MiBtYXR0IEV4cCAkIikKKyNlbmRp ZgogI2VuZGlmIC8qIExJQkNfU0NDUyBhbmQgbm90IGxpbnQgKi8KIAorCS5nbG9ibAlfQ19MQUJF TChfX2Vycm9yKQorTkVTVEVEX05PUFJPRklMRShfX2NlcnJvciwgQ0FMTEZSQU1FX1NJWiwgcmEp CisJLm1hc2sJMHg4MDAwMDAwMCwgKENBTExGUkFNRV9SQSAtIENBTExGUkFNRV9TSVopCisJU0VU VVBfR1AKKwlQVFJfU1VCVQlzcCwgc3AsIENBTExGUkFNRV9TSVoKKwlTRVRVUF9HUDY0KENBTExG UkFNRV9HUCwgX19jZXJyb3IpCisJU0FWRV9HUChDQUxMRlJBTUVfR1ApCiAKLQkvKgotCSAqIFRo ZSBfX2Vycm9yKCkgZnVuY3Rpb24gaXMgdGhyZWFkIGF3YXJlLiBGb3Igbm9uLXRocmVhZGVkCi0J ICogcHJvZ3JhbXMgYW5kIHRoZSBpbml0aWFsIHRocmVhZGVkIGluIHRocmVhZGVkIHByb2dyYW1z LAotCSAqIGl0IHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBnbG9iYWwgZXJybm8gdmFyaWFibGUu Ci0JICovCi0JLmdsb2JsICBfQ19MQUJFTChfX2Vycm9yKQotCS50eXBlICAgX0NfTEFCRUwoX19l cnJvciksJWZ1bmN0aW9uCisJUFRSX1MJCXJhLCBDQUxMRlJBTUVfUkEoc3ApCisJUkVHX1MJCXYw LCBDQUxMRlJBTUVfUzAoc3ApCSMgc2F2ZSBlcnJubyB2YWx1ZQogCi1MRUFGKF9fY2Vycm9yKQot CS5mcmFtZSBzcCwgQ0FMTEZSQU1FX1NJWiwgcmEKLQlQSUNfUFJPTE9HVUUoX19jZXJyb3IsIHQ5 KQotCXN1YnUJc3AsIHNwLCBDQUxMRlJBTUVfU0laCi0JLm1hc2sJMHg4MDAwMDAwMCwgKENBTExG UkFNRV9SQSAtIENBTExGUkFNRV9TSVopCi0Jc3cJcmEsIENBTExGUkFNRV9SQShzcCkKLQlzdwl2 MCwgMTIoc3ApCQkjIHNhdmUgZXJybm8gdmFsdWUKKwlQVFJfTEEJCXQ5LCBfQ19MQUJFTChfX2Vy cm9yKQkjIGxvY2F0ZSBhZGRyZXNzIG9mIGVycm5vCisJamFscgkJdDkKIAotCWxhCXQ5LCBfQ19M QUJFTChfX2Vycm9yKQkjIGxvY2F0ZSBhZGRyZXNzIG9mIGVycm5vCi0JamFscgl0OQorCVJFR19M CQl0MCwgQ0FMTEZSQU1FX1MwKHNwKQorCVBUUl9MCQlyYSwgQ0FMTEZSQU1FX1JBKHNwKQorCUlO VF9TCQl0MCwgMCh2MCkJCSMgdXBkYXRlIGVycm5vIHZhbHVlCiAKLQlsdwl0MCwgMTIoc3ApCi0J bHcJcmEsIENBTExGUkFNRV9SQShzcCkKLQlzdwl0MCwgMCh2MCkJCSMgdXBkYXRlIGVycm5vIHZh bHVlCi0JYWRkaXUJc3AsIHNwLCBDQUxMRlJBTUVfU0laCi0JbGkJdjAsIC0xCi0JbGkJdjEsIC0x Ci0JaglyYQorCVJFU1RPUkVfR1A2NAorCVBUUl9BRERVCXNwLCBzcCwgQ0FMTEZSQU1FX1NJWgor CisJbGkJCXYwLCAtMQorCWxpCQl2MSwgLTEKKworCWoJCXJhCiBFTkQoX19jZXJyb3IpCkluZGV4 OiBsaWIvbGliYy9taXBzL3N5cy9waXBlLlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9z eXMvcGlwZS5TCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL3N5cy9waXBlLlMJ KHdvcmtpbmcgY29weSkKQEAgLTQ0LDE5ICs0NCwxNCBAQAogTEVBRihfX3N5c19waXBlKQogCVdF QUtfQUxJQVMocGlwZSwgX19zeXNfcGlwZSkKIAlXRUFLX0FMSUFTKF9waXBlLCBfX3N5c19waXBl KQotI2lmZGVmIF9fQUJJQ0FMTFNfXwotCS5zZXQgICAgbm9yZW9yZGVyCi0JLmNwbG9hZCB0OQot CS5zZXQgICAgcmVvcmRlcgotI2VuZGlmCisJUElDX1BST0xPR1VFKF9fc3lzX3BpcGUpCiAJbGkJ djAsIFNZU19waXBlCSMgcGlwZShmaWxkZXMpIGludCBmaWxkZXNbMl07CiAJc3lzY2FsbAogCWJu ZQlhMywgemVybywgMWYKIAlzdwl2MCwgMChhMCkJIyBzdG9yZSB0aGUgdHdvIGZpbGUgZGVzY3Jp cHRvcnMKIAlzdwl2MSwgNChhMCkKIAltb3ZlCXYwLCB6ZXJvCi0JaglyYQorCVBJQ19SRVRVUk4o KQogMToKLQlsYQl0OSwgX0NfTEFCRUwoX19jZXJyb3IpCi0JanIJdDkKKwlQSUNfVEFJTENBTEwo X19jZXJyb3IpCiBFTkQoX19zeXNfcGlwZSkK --e0cb4e88758397b495048911b0d9 Content-Type: text/x-patch; charset=US-ASCII; name="libc-other.patch" Content-Disposition: attachment; filename="libc-other.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gagrg8vx1 SW5kZXg6IGxpYi9saWJjL21pcHMvU3ltYm9sLm1hcAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9t aXBzL1N5bWJvbC5tYXAJKHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvU3ltYm9s Lm1hcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTMgKzI0LDkgQEAKIAlzaWdzZXRqbXA7CiAJc2ln bG9uZ2ptcDsKIAlodG9ubDsKLQlfX2h0b25sOwogCWh0b25zOwotCV9faHRvbnM7CiAJbnRvaGw7 Ci0JX19udG9obDsKIAludG9oczsKLQlfX250b2hzOwogCXZmb3JrOwogCWJyazsKIAljZXJyb3I7 CQkvKiBYWFggLSBTaG91bGQgdGhpcyBiZSAuY2Vycm9yIChzZWUgc3lzL2NlcnJvci5TKT8gKi8K SW5kZXg6IGxpYi9saWJjL21pcHMvTWFrZWZpbGUuaW5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJj L21pcHMvTWFrZWZpbGUuaW5jCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL01h a2VmaWxlLmluYwkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDYgQEAKICMJJE5ldEJTRDogTWFr ZWZpbGUuaW5jLHYgMS43IDIwMDUvMDkvMTcgMTE6NDk6MzkgdHN1dHN1aSBFeHAgJAogIyAkRnJl ZUJTRCQKIAotU09GVEZMT0FUX0JJVFM9MzIKLQogQ0ZMQUdTKz0tRFNPRlRGTE9BVAogCiBNRFNS Q1MrPSBtYWNoZGVwX2xkaXNkLmMKSW5kZXg6IGxpYi9saWJjL21pcHMvZ2VuL01ha2VmaWxlLmlu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL2dlbi9NYWtlZmlsZS5pbmMJKHJldmlzaW9u IDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvZ2VuL01ha2VmaWxlLmluYwkod29ya2luZyBjb3B5 KQpAQCAtNiw0ICs2LDQgQEAKICMgU1JDUys9CWZsdF9yb3VuZHMuYyBmcGdldG1hc2suYyBmcGdl dHJvdW5kLmMgZnBnZXRzdGlja3kuYyBmcHNldG1hc2suYyBcCiAjCWZwc2V0cm91bmQuYyBmcHNl dHN0aWNreS5jCiAKLVNSQ1MrPQlfc2V0X3RwLmMgX3NldGptcC5TIG1ha2Vjb250ZXh0LmMgc2V0 am1wLlMgc2lnbmFsY29udGV4dC5jIHNpZ3NldGptcC5TCitTUkNTKz0JX2N0eF9zdGFydC5TIF9z ZXRfdHAuYyBfc2V0am1wLlMgbWFrZWNvbnRleHQuYyBzZXRqbXAuUyBzaWduYWxjb250ZXh0LmMg c2lnc2V0am1wLlMKSW5kZXg6IGxpYi9saWJjL21pcHMvZ2VuL21ha2Vjb250ZXh0LmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gbGliL2xpYmMvbWlwcy9nZW4vbWFrZWNvbnRleHQuYwkocmV2aXNpb24gMjA5MDQw KQorKysgbGliL2xpYmMvbWlwcy9nZW4vbWFrZWNvbnRleHQuYwkod29ya2luZyBjb3B5KQpAQCAt MSw0ICsxLDQgQEAKLS8qCSROZXRCU0Q6IG1ha2Vjb250ZXh0LmMsdiAxLjMgMjAwMy8wMS8xOSAw ODo1MzozNiBtYXR0IEV4cCAkCSovCisvKgkkTmV0QlNEOiBtYWtlY29udGV4dC5jLHYgMS41IDIw MDkvMTIvMTQgMDE6MDc6NDIgbWF0dCBFeHAgJAkqLwogCiAvKi0KICAqIENvcHlyaWdodCAoYykg MjAwMSBUaGUgTmV0QlNEIEZvdW5kYXRpb24sIEluYy4KQEAgLTE1LDEzICsxNSw2IEBACiAgKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIEFs bCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhp cyBzb2Z0d2FyZQotICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2Vt ZW50OgotICogICAgICAgIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQg YnkgdGhlIE5ldEJTRAotICogICAgICAgIEZvdW5kYXRpb24sIEluYy4gYW5kIGl0cyBjb250cmli dXRvcnMuCi0gKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIFRoZSBOZXRCU0QgRm91bmRhdGlvbiBu b3IgdGhlIG5hbWVzIG9mIGl0cwotICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICBmcm9tIHRoaXMgc29mdHdh cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgTkVUQlNEIEZPVU5EQVRJT04sIElOQy4gQU5E IENPTlRSSUJVVE9SUwogICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECkBAIC0zOSw0OCArMzIsOTIgQEAK ICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpZiBkZWZp bmVkKExJQkNfU0NDUykgJiYgIWRlZmluZWQobGludCkKLV9fUkNTSUQoIiROZXRCU0Q6IG1ha2Vj b250ZXh0LmMsdiAxLjMgMjAwMy8wMS8xOSAwODo1MzozNiBtYXR0IEV4cCAkIik7CitfX1JDU0lE KCIkTmV0QlNEOiBtYWtlY29udGV4dC5jLHYgMS41IDIwMDkvMTIvMTQgMDE6MDc6NDIgbWF0dCBF eHAgJCIpOwogI2VuZGlmCiAKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMv cGFyYW0uaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3JlZ251bS5oPgorCisjaW5jbHVkZSA8c3RkYXJn Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8 c3RkaW8uaD4KICNpbmNsdWRlIDx1Y29udGV4dC5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgogCitf X3dlYWtfcmVmZXJlbmNlKF9fbWFrZWNvbnRleHQsIG1ha2Vjb250ZXh0KTsKKwordm9pZCBfY3R4 X2RvbmUodWNvbnRleHRfdCAqKTsKK3ZvaWQgX2N0eF9zdGFydCh2b2lkKTsKKwogdm9pZAotbWFr ZWNvbnRleHQodWNvbnRleHRfdCAqdWNwLCB2b2lkICgqZnVuYykodm9pZCksIGludCBhcmdjLCAu Li4pCitfX21ha2Vjb250ZXh0KHVjb250ZXh0X3QgKnVjcCwgdm9pZCAoKmZ1bmMpKHZvaWQpLCBp bnQgYXJnYywgLi4uKQogewotCS8qIFhYWE1JUFM6IEltcGxlbWVudCBtZSAqLwotI2lmIDAKLQlf X2dyZWdfdCAqZ3IgPSB1Y3AtPnVjX21jb250ZXh0Ll9fZ3JlZ3M7Ci0JdWludHB0cl90ICpzcDsK KwltY29udGV4dF90ICptYzsKKwlyZWdpc3Rlcl90ICpzcDsKIAlpbnQgaTsKIAl2YV9saXN0IGFw OwogCi0Jdm9pZCBfX3Jlc3VtZWNvbnRleHQodm9pZCk7CisJLyoKKwkgKiBYWFgvanVsaQorCSAq IFdlIG5lZWQgYW4gbWNfbGVuIG9yIG1jX2ZsYWdzIGxpa2Ugb3RoZXIgYXJjaGl0ZWN0dXJlcwor CSAqIHNvIHRoYXQgd2UgY2FuIG1hcmsgYSBjb250ZXh0IGFzIGludmFsaWQuICBTdG9yZSBpdCBp bgorCSAqIG1jLT5tY19yZWdzW1pFUk9dIHBlcmhhcHM/CisJICovCisJaWYgKGFyZ2MgPCAwIHx8 IGFyZ2MgPiA2IHx8IHVjcCA9PSBOVUxMIHx8CisJICAgIHVjcC0+dWNfc3RhY2suc3Nfc3AgPT0g TlVMTCB8fAorCSAgICB1Y3AtPnVjX3N0YWNrLnNzX3NpemUgPCBNSU5TSUdTVEtTWikKKwkJcmV0 dXJuOworCW1jID0gJnVjcC0+dWNfbWNvbnRleHQ7CiAKLQkvKiBMSU5URUQgdWludHB0cl90IGlz IHNhZmUgKi8KLQlzcCAgPSAodWludHB0cl90ICopCisJc3AgID0gKHJlZ2lzdGVyX3QgKikKIAkg ICAgKCh1aW50cHRyX3QpdWNwLT51Y19zdGFjay5zc19zcCArIHVjcC0+dWNfc3RhY2suc3Nfc2l6 ZSk7Ci0JLyogTElOVEVEIHVpbnRwdHJfdCBpcyBzYWZlICovCisjaWYgZGVmaW5lZChfX21pcHNf bzMyKSB8fCBkZWZpbmVkKF9fbWlwc19vNjQpCiAJc3AgLT0gKGFyZ2MgPj0gNCA/IGFyZ2MgOiA0 KTsJLyogTWFrZSByb29tIGZvciA+PTQgYXJndW1lbnRzLiAqLwotCXNwICA9ICh1aW50cHRyX3Qg KikKLQkgICAgICAoKHVpbnRwdHJfdClzcCAmIH4weDcpOwkvKiBBbGlnbiBvbiBkb3VibGUtd29y ZCBib3VuZGFyeS4gKi8KKwlzcCAgPSAocmVnaXN0ZXJfdCAqKQorCSAgICAoKHVpbnRwdHJfdClz cCAmIH4weDcpOwkvKiBBbGlnbiBvbiBkb3VibGUtd29yZCBib3VuZGFyeS4gKi8KKyNlbGlmIGRl ZmluZWQoX19taXBzX24zMikgfHwgZGVmaW5lZChfX21pcHNfbjY0KQorCXNwIC09IChhcmdjID4g OCA/IGFyZ2MgLSA4IDogMCk7IC8qIE1ha2Ugcm9vbSBmb3IgPiA4IGFyZ3VtZW50cy4gKi8KKwlz cCAgPSAocmVnaXN0ZXJfdCAqKQorCSAgICAoKHVpbnRwdHJfdClzcCAmIH4weGYpOwkvKiBBbGln biBvbiBxdWFkLXdvcmQgYm91bmRhcnkuICovCisjZW5kaWYKIAotCWdyW19SRUdfU1BdICA9IChf X2dyZWdfdClzcDsKLQlncltfUkVHX1JBXSAgPSAoX19ncmVnX3QpX19yZXN1bWVjb250ZXh0Owot CWdyW19SRUdfVDldICA9IChfX2dyZWdfdClmdW5jOwkvKiByZXF1aXJlZCBmb3IgLmFiaWNhbGxz ICovCi0JZ3JbX1JFR19FUENdID0gKF9fZ3JlZ190KWZ1bmM7CisJbWMtPm1jX3JlZ3NbU1BdID0g KGludHB0cl90KXNwOworCW1jLT5tY19yZWdzW1MwXSA9IChpbnRwdHJfdCl1Y3A7CisJbWMtPm1j X3JlZ3NbVDldID0gKGludHB0cl90KWZ1bmM7CisJbWMtPm1jX3BjID0gKGludHB0cl90KV9jdHhf c3RhcnQ7CiAKIAkvKiBDb25zdHJ1Y3QgYXJndW1lbnQgbGlzdC4gKi8KIAl2YV9zdGFydChhcCwg YXJnYyk7CisjaWYgZGVmaW5lZChfX21pcHNfbzMyKSB8fCBkZWZpbmVkKF9fbWlwc19vNjQpCiAJ LyogVXAgdG8gdGhlIGZpcnN0IGZvdXIgYXJndW1lbnRzIGFyZSBwYXNzZWQgaW4gJGEwLTMuICov CiAJZm9yIChpID0gMDsgaSA8IGFyZ2MgJiYgaSA8IDQ7IGkrKykKLQkJLyogTElOVEVEIHVpbnRw dHJfdCBpcyBzYWZlICovCi0JCWdyW19SRUdfQTAgKyBpXSA9IHZhX2FyZyhhcCwgdWludHB0cl90 KTsKKwkJLyogTElOVEVEIHJlZ2lzdGVyX3QgaXMgc2FmZSAqLworCQltYy0+bWNfcmVnc1tBMCAr IGldID0gdmFfYXJnKGFwLCByZWdpc3Rlcl90KTsKIAkvKiBQYXNzIHJlbWFpbmluZyBhcmd1bWVu dHMgb24gdGhlIHN0YWNrIGFib3ZlIHRoZSAkYTAtMyBnYXAuICovCi0JZm9yIChzcCArPSA0OyBp IDwgYXJnYzsgaSsrKQorCXNwICs9IGk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fbWlwc19uMzIp IHx8IGRlZmluZWQoX19taXBzX242NCkKKwkvKiBVcCB0byB0aGUgZmlyc3QgOCBhcmd1bWVudHMg YXJlIHBhc3NlZCBpbiAkYTAtNy4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgYXJnYyAmJiBpIDwgODsg aSsrKQorCQkvKiBMSU5URUQgcmVnaXN0ZXJfdCBpcyBzYWZlICovCisJCW1jLT5tY19yZWdzW0Ew ICsgaV0gPSB2YV9hcmcoYXAsIHJlZ2lzdGVyX3QpOworCS8qIFBhc3MgcmVtYWluaW5nIGFyZ3Vt ZW50cyBvbiB0aGUgc3RhY2sgYWJvdmUgdGhlICRhMC0zIGdhcC4gKi8KKyNlbmRpZgorCS8qIFBh c3MgcmVtYWluaW5nIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgYWJvdmUgdGhlICRhMC0zIGdhcC4g Ki8KKwlmb3IgKDsgaSA8IGFyZ2M7IGkrKykKIAkJLyogTElOVEVEIHVpbnRwdHJfdCBpcyBzYWZl ICovCi0JCSpzcCsrID0gdmFfYXJnKGFwLCB1aW50cHRyX3QpOworCQkqc3ArKyA9IHZhX2FyZyhh cCwgcmVnaXN0ZXJfdCk7CiAJdmFfZW5kKGFwKTsKLSNlbmRpZgogfQorCit2b2lkCitfY3R4X2Rv bmUodWNvbnRleHRfdCAqdWNwKQoreworCisJaWYgKHVjcC0+dWNfbGluayA9PSBOVUxMKQorCQll eGl0KDApOworCWVsc2UgeworCQlzZXRjb250ZXh0KChjb25zdCB1Y29udGV4dF90ICopdWNwLT51 Y19saW5rKTsKKwkJYWJvcnQoKTsKKwl9Cit9CkluZGV4OiBsaWIvbGliYy9taXBzL3N5cy9NYWtl ZmlsZS5pbmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9zeXMvTWFrZWZpbGUuaW5jCShy ZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL3N5cy9NYWtlZmlsZS5pbmMJKHdvcmtp bmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAjICRGcmVlQlNEJAogCiBNREFTTT0gIE92Zm9yay5T IGJyay5TIGNlcnJvci5TIGV4ZWN0LlMgXAotCWZvcmsuUyBwaXBlLlMgcHRyYWNlLlMgc2Jyay5T IHNobWF0LlMgc3lzY2FsbC5TCisJZm9yay5TIHBpcGUuUyBwdHJhY2UuUyBzYnJrLlMgc3lzY2Fs bC5TCiAKICMgRG9uJ3QgZ2VuZXJhdGUgZGVmYXVsdCBjb2RlIGZvciB0aGVzZSBzeXNjYWxsczoK IE5PQVNNPQlicmVhay5vIGV4aXQubyBmdHJ1bmNhdGUubyBnZXRsb2dpbi5vIGxzZWVrLm8gbW1h cC5vIFwKSW5kZXg6IGxpYi9saWJjL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJjL01h a2VmaWxlCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9NYWtlZmlsZQkod29ya2luZyBj b3B5KQpAQCAtNTEsOSArNTEsMTQgQEAKIC5pbmNsdWRlICIkey5DVVJESVJ9L3Bvc2l4MWUvTWFr ZWZpbGUuaW5jIgogLmlmICR7TUFDSElORV9BUkNIfSAhPSAiYW1kNjQiICYmIFwKICAgICAke01B Q0hJTkVfQVJDSH0gIT0gImlhNjQiICYmIFwKLSAgICAke01BQ0hJTkVfQVJDSH0gIT0gInNwYXJj NjQiCisgICAgJHtNQUNISU5FX0FSQ0h9ICE9ICJzcGFyYzY0IiAmJiBcCisgICAgJHtNQUNISU5F X0FSQ0h9ICE9ICJtaXBzIgogLmluY2x1ZGUgIiR7LkNVUkRJUn0vcXVhZC9NYWtlZmlsZS5pbmMi CiAuZW5kaWYKKy5pZiAke01BQ0hJTkVfQVJDSH0gPT0gIm1pcHMiICYmIFwKKyAgICAoIWRlZmlu ZWQoVEFSR0VUX0FCSSkgfHwgJHtUQVJHRVRfQUJJfSA9PSAibzMyIikKKy5pbmNsdWRlICIkey5D VVJESVJ9L3F1YWQvTWFrZWZpbGUuaW5jIgorLmVuZGlmCiAuaW5jbHVkZSAiJHsuQ1VSRElSfS9y ZWdleC9NYWtlZmlsZS5pbmMiCiAuaW5jbHVkZSAiJHsuQ1VSRElSfS9yZXNvbHYvTWFrZWZpbGUu aW5jIgogLmluY2x1ZGUgIiR7LkNVUkRJUn0vc3RkaW8vTWFrZWZpbGUuaW5jIgo= --e0cb4e88758397b495048911b0d9 Content-Type: text/x-patch; charset=US-ASCII; name="ld.so.patch" Content-Disposition: attachment; filename="ld.so.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gagrgebk2 SW5kZXg6IGxpYmV4ZWMvcnRsZC1lbGYvbWlwcy9ydGxkX3N0YXJ0LlMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g bGliZXhlYy9ydGxkLWVsZi9taXBzL3J0bGRfc3RhcnQuUwkocmV2aXNpb24gMjA5MTkzKQorKysg bGliZXhlYy9ydGxkLWVsZi9taXBzL3J0bGRfc3RhcnQuUwkod29ya2luZyBjb3B5KQpAQCAtNjgs NyArNjgsOCBAQAogCW1vdmUJYTAsIHMwCQkJLyogc3AgKi8KIAlQVFJfQUREVSBhMSwgc3AsIDIq UFRSX1NJWkUJLyogJm91ciBhdGV4aXQgZnVuY3Rpb24gKi8KIAlQVFJfQUREVSBhMiwgc3AsIDMq UFRSX1NJWkUJLyogb2JqX21haW4gZW50cnkgKi8KLQlqYWwJX0NfTEFCRUwoX3J0bGQpCQkvKiB2 MCA9IF9ydGxkKHNwLCBjbGVhbnVwLCBvYmpwKSAqLworCVBUUl9MQQl0OSwgX0NfTEFCRUwoX3J0 bGQpCisJamFscgl0OQkJCS8qIHYwID0gX3J0bGQoc3AsIGNsZWFudXAsIG9ianApICovCiAJIG5v cAogCiAJUFRSX0wJYTEsIDIqUFRSX1NJWkUoc3ApCS8qIG91ciBhdGV4aXQgZnVuY3Rpb24gKi8K QEAgLTEyMyw3ICsxMjQsNyBAQAogCW1vdmUJczAsIHNwCiAKIAltb3ZlCWEwLCB2MQkJCS8qIG9s ZCBHUCAqLwotCXN1YnUJYTAsIGEwLCAweDdmZjAJCS8qIFRoZSBvZmZzZXQgb2YgJGdwIGZyb20g dGhlCSovCisJUFRSX1NVQlUJYTAsIGEwLCAweDdmZjAJCS8qIFRoZSBvZmZzZXQgb2YgJGdwIGZy b20gdGhlCSovCiAgICAgICAgCQkJCQkvKiBiZWdpbm5pbmcgb2YgdGhlIC5nb3Qgc2VjdGlvbjog Ki8KIAkJCQkJLyogJGdwID0gLmdvdCArIDB4N2ZmMCwgc28JKi8KIAkJCQkJLyogLmdvdCA9ICRn cCAtIDB4N2ZmMAkJKi8KQEAgLTEzNiw3ICsxMzcsOCBAQAogCWFuZAlhMCwgYTAsIDB4N2ZmZmZm ZmYKIAltb3ZlCWExLCB0OAkJCS8qIHN5bWJvbCBpbmRleCAqLwogCi0JamFsCV9DX0xBQkVMKF9t aXBzX3J0bGRfYmluZCkKKwlQVFJfTEEJdDksIF9DX0xBQkVMKF9taXBzX3J0bGRfYmluZCkKKwlq YWxyCXQ5CiAJIG5vcAogCiAJbW92ZQlzcCwgczAK --e0cb4e88758397b495048911b0d9 Content-Type: text/x-patch; charset=US-ASCII; name="tlb-to-c.patch" Content-Disposition: attachment; filename="tlb-to-c.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gagrgmb13 SW5kZXg6IHN5cy9jb25mL2ZpbGVzLm1pcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2NvbmYvZmlsZXMu bWlwcwkocmV2aXNpb24gMjA5MTkzKQorKysgc3lzL2NvbmYvZmlsZXMubWlwcwkod29ya2luZyBj b3B5KQpAQCAtNDQsNyArNDQsNyBAQAogbWlwcy9taXBzL2ZwLlMJCQlzdGFuZGFyZAogbWlwcy9t aXBzL3BtX21hY2hkZXAuYwkJc3RhbmRhcmQKIG1pcHMvbWlwcy9zd3RjaC5TCQlzdGFuZGFyZAot bWlwcy9taXBzL3RsYi5TCQkJc3RhbmRhcmQKK21pcHMvbWlwcy90bGIuYwkJCXN0YW5kYXJkCiAK IG1pcHMvbWlwcy9idXNfc3BhY2VfZ2VuZXJpYy5jIAlzdGFuZGFyZAogbWlwcy9taXBzL2J1c2Rt YV9tYWNoZGVwLmMgCXN0YW5kYXJkCkluZGV4OiBzeXMvbWlwcy9pbmNsdWRlL3RsYi5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHN5cy9taXBzL2luY2x1ZGUvdGxiLmgJKHJldmlzaW9uIDApCisrKyBzeXMvbWlw cy9pbmNsdWRlL3RsYi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACisvKi0KKyAqIENv cHlyaWdodCAoYykgMjAwNC0yMDEwIEp1bGkgTWFsbGV0dCA8am1hbGxldHRARnJlZUJTRC5vcmc+ CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0 aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg SVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK KyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF CisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VT OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O KQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBU SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqICRGcmVlQlNEJAorICovCisKKyNpZm5kZWYJ X01BQ0hJTkVfVExCX0hfCisjZGVmaW5lCV9NQUNISU5FX1RMQl9IXworCit2b2lkIHRsYl9pbnNl cnRfd2lyZWQodW5zaWduZWQsIHZtX29mZnNldF90LCBwdF9lbnRyeV90LCBwdF9lbnRyeV90KTsK K3ZvaWQgdGxiX2ludmFsaWRhdGVfYWRkcmVzcyhzdHJ1Y3QgcG1hcCAqLCB2bV9vZmZzZXRfdCk7 Cit2b2lkIHRsYl9pbnZhbGlkYXRlX2FsbCh2b2lkKTsKK3ZvaWQgdGxiX2ludmFsaWRhdGVfYWxs X3VzZXIoc3RydWN0IHBtYXAgKik7Cit2b2lkIHRsYl9zYXZlKHZvaWQpOwordm9pZCB0bGJfdXBk YXRlKHN0cnVjdCBwbWFwICosIHZtX29mZnNldF90LCBwdF9lbnRyeV90KTsKKworI2VuZGlmIC8q ICFfTUFDSElORV9UTEJfSF8gKi8KSW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvY3B1LmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gc3lzL21pcHMvaW5jbHVkZS9jcHUuaAkocmV2aXNpb24gMjA5MTkzKQorKysgc3lz L21pcHMvaW5jbHVkZS9jcHUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDI3ICsyNzQsNiBAQAog I2RlZmluZQlPUENPREVfQzEJCTB4MTEKIAogLyoKLSAqIFRoZSBsb3cgcGFydCBvZiB0aGUgVExC IGVudHJ5LgotICovCi0jZGVmaW5lCVZNVExCX1BGX05VTQkJMHgzZmZmZmZjMAotI2RlZmluZQlW TVRMQl9BVFRSX01BU0sJCTB4MDAwMDAwMzgKLSNkZWZpbmUJVk1UTEJfTU9EX0JJVAkJMHgwMDAw MDAwNAotI2RlZmluZQlWTVRMQl9WQUxJRF9CSVQJCTB4MDAwMDAwMDIKLSNkZWZpbmUJVk1UTEJf R0xPQkFMX0JJVAkweDAwMDAwMDAxCi0KLSNkZWZpbmUJVk1UTEJfUEhZU19QQUdFX1NISUZUCTYK LQotLyoKLSAqIFRoZSBoaWdoIHBhcnQgb2YgdGhlIFRMQiBlbnRyeS4KLSAqLwotI2RlZmluZQlW TVRMQl9WSVJUX1BBR0VfTlVNCQkweGZmZmZlMDAwCi0jZGVmaW5lCVZNVExCX1BJRAkJCTB4MDAw MDAwZmYKLSNkZWZpbmUJVk1UTEJfUElEX1I5SwkJCTB4MDAwMDBmZmYKLSNkZWZpbmUJVk1UTEJf UElEX1NISUZUCQkJMAotI2RlZmluZQlWTVRMQl9WSVJUX1BBR0VfU0hJRlQJCTEyCi0jZGVmaW5l CVZNVExCX1ZJUlRfUEFHRV9TSElGVF9SOUsJMTMKLQotLyoKICAqIFRoZSBmaXJzdCBUTEIgZW50 cnkgdGhhdCB3cml0ZSByYW5kb20gaGl0cy4KICAqIFRMQiBlbnRyeSAwIG1hcHMgdGhlIGtlcm5l bCBzdGFjayBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGhyZWFkCiAgKiBUTEIgZW50cnkgMSBt YXBzIHRoZSBwY3B1IGFyZWEgb2YgcHJvY2Vzc29yIChvbmx5IGZvciBTTVAgYnVpbGRzKQpAQCAt MzEzLDE0ICsyOTIsNiBAQAogI2RlZmluZQlWTU5VTV9QSURTCQkyNTYKIAogLyoKLSAqIFRMQiBw cm9iZSByZXR1cm4gY29kZXMuCi0gKi8KLSNkZWZpbmUJVk1UTEJfTk9UX0ZPVU5ECQkwCi0jZGVm aW5lCVZNVExCX0ZPVU5ECQkxCi0jZGVmaW5lCVZNVExCX0ZPVU5EX1dJVEhfUEFUQ0gJMgotI2Rl ZmluZQlWTVRMQl9QUk9CRV9FUlJPUgkzCi0KLS8qCiAgKiBFeHBvcnRlZCBkZWZpbml0aW9ucyB1 bmlxdWUgdG8gbWlwcyBjcHUgc3VwcG9ydC4KICAqLwogCkBAIC0zMzUsNiArMzA2LDcgQEAKICNp Zm5kZWYgX0xPQ09SRQogI2luY2x1ZGUgPG1hY2hpbmUvY3B1ZnVuYy5oPgogI2luY2x1ZGUgPG1h Y2hpbmUvZnJhbWUuaD4KKwogLyoKICAqIEFyZ3VtZW50cyB0byBoYXJkY2xvY2sgYW5kIGdhdGhl cnN0YXRzIGVuY2Fwc3VsYXRlIHRoZSBwcmV2aW91cwogICogbWFjaGluZSBzdGF0ZSBpbiBhbiBv cGFxdWUgY2xvY2tmcmFtZS4KQEAgLTQ1NSwxMiArNDI3LDkgQEAKICNpZiBkZWZpbmVkKF9LRVJO RUwpICYmICFkZWZpbmVkKF9MT0NPUkUpCiBleHRlcm4gdW5pb24gY3B1cHJpZCBmcHVfaWQ7CiAK LXN0cnVjdCB0bGI7CiBzdHJ1Y3QgdXNlcjsKIAogaW50IE1pcHNfQ29uZmlnQ2FjaGUodm9pZCk7 Ci12b2lkIE1pcHNfU2V0V0lSRUQoaW50KTsKLXZvaWQgTWlwc19TZXRQSUQoaW50KTsKIAogdm9p ZCBNaXBzX1N5bmNDYWNoZSh2b2lkKTsKIHZvaWQgTWlwc19TeW5jRENhY2hlKHZtX29mZnNldF90 LCBpbnQpOwpAQCAtNDcxLDEyICs0NDAsNiBAQAogdm9pZCBNaXBzX1N5bmNJQ2FjaGUodm1fb2Zm c2V0X3QsIGludCk7CiB2b2lkIE1pcHNfSW52YWxpZGF0ZUlDYWNoZSh2bV9vZmZzZXRfdCwgaW50 KTsKIAotdm9pZCBNaXBzX1RMQkZsdXNoKGludCk7Ci12b2lkIE1pcHNfVExCRmx1c2hBZGRyKHZt X29mZnNldF90KTsKLXZvaWQgTWlwc19UTEJXcml0ZUluZGV4ZWQoaW50LCBzdHJ1Y3QgdGxiICop Owotdm9pZCBNaXBzX1RMQlVwZGF0ZSh2bV9vZmZzZXRfdCwgdW5zaWduZWQpOwotdm9pZCBNaXBz X1RMQlJlYWQoaW50LCBzdHJ1Y3QgdGxiICopOwotdm9pZCBtaXBzX1RCSUFQKGludCk7CiB2b2lk IHdiZmx1c2godm9pZCk7CiAKIGV4dGVybiB1X2ludDMyX3QgY3B1X2NvdW50ZXJfaW50ZXJ2YWw7 CS8qIE51bWJlciBvZiBjb3VudGVyIHRpY2tzL3RpY2sgKi8KQEAgLTUxNiwxNiArNDc5LDYgQEAK IAkJCTogInIiIChmdW5jKSwgInIiIChhcmcwKSwgInIiIChhcmcxKSwgInIiIChhcmcyKSAgLyog aW5wdXRzICovIFwKIAkJCTogIiQzMSIsICIkNCIsICIkNSIsICIkNiIpOwogCi0jZGVmaW5lCU1h Y2hTZXRQSUQJCQlNaXBzX1NldFBJRAotI2RlZmluZQlNYWNoVExCVXBkYXRlICAgCQlNaXBzX1RM QlVwZGF0ZQotI2RlZmluZQltaXBzX1RCSVMJCQlNaXBzX1RMQkZsdXNoQWRkcgotI2RlZmluZQlN SVBTX1RCSUFQKCkJCQltaXBzX1RCSUFQKG51bV90bGJlbnRyaWVzKQotI2RlZmluZQlNYWNoU2V0 V0lSRUQoaW5kZXgpCQlNaXBzX1NldFdJUkVEKGluZGV4KQotI2RlZmluZQlNYWNoVExCRmx1c2go Y291bnQpCQlNaXBzX1RMQkZsdXNoKGNvdW50KQotI2RlZmluZQlNYWNoVExCR2V0UElEKHBpZCkJ CShwaWQgPSBNaXBzX1RMQkdldFBJRCgpKQotI2RlZmluZQlNYWNoVExCUmVhZCh0bGJubywgdGxi cCkJTWlwc19UTEJSZWFkKHRsYm5vLCB0bGJwKQotI2RlZmluZQlNYWNoRlBUcmFwKHNyLCBjYXVz ZSwgcGMpCU1pcHNGUFRyYXAoc3IsIGNhdXNlLCBwYykKLQogLyoKICAqIEVuYWJsZSByZWFsdGlt ZSBjbG9jayAoYWx3YXlzIGVuYWJsZWQpLgogICovCkBAIC01NDIsOCArNDk1LDYgQEAKICAqICBM b3cgbGV2ZWwgYWNjZXNzIHJvdXRpbmVzIHRvIENQVSByZWdpc3RlcnMKICAqLwogCi1pbnQgTWlw c19UTEJHZXRQSUQodm9pZCk7Ci0KIHZvaWQgc3dpX3ZtKHZvaWQgKik7CiB2b2lkIGNwdV9oYWx0 KHZvaWQpOwogdm9pZCBjcHVfcmVzZXQodm9pZCk7CkluZGV4OiBzeXMvbWlwcy9pbmNsdWRlL3B0 ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL2luY2x1ZGUvcHRlLmgJKHJldmlzaW9uIDIwOTE5 MykKKysrIHN5cy9taXBzL2luY2x1ZGUvcHRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEs NyBAQAotLyoJJE9wZW5CU0Q6IHB0ZS5oLHYgMS40IDE5OTgvMDEvMjggMTM6NDY6MjUgcGVmbyBF eHAgJAkqLwotCiAvKi0KLSAqIENvcHlyaWdodCAoYykgMTk4OCBVbml2ZXJzaXR5IG9mIFV0YWgu Ci0gKiBDb3B5cmlnaHQgKGMpIDE5OTIsIDE5OTMKLSAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2 ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0 IChjKSAyMDA0LTIwMTAgSnVsaSBNYWxsZXR0IDxqbWFsbGV0dEBGcmVlQlNELm9yZz4KKyAqIEFs bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgotICogVGhpcyBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzb2Z0 d2FyZSBjb250cmlidXRlZCB0byBCZXJrZWxleSBieQotICogdGhlIFN5c3RlbXMgUHJvZ3JhbW1p bmcgR3JvdXAgb2YgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaCBDb21wdXRlcgotICogU2NpZW5jZSBE ZXBhcnRtZW50IGFuZCBSYWxwaCBDYW1wYmVsbC4KLSAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucwogICogYXJlIG1ldDoKQEAgLTE3LDE4ICsxMCwxMSBAQAogICogMi4gUmVkaXN0cmlidXRp b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBBbGwgYWR2ZXJ0aXNpbmcg bWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAq ICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSAqCVRoaXMg cHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YK LSAqCUNhbGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29udHJpYnV0b3JzLgotICogNC4gTmVp dGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250 cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlv ciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC WSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMn JyBBTkQKICAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC VVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVND TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJF IExJQUJMRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKICAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAgKiBEQU1B R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ VFVURSBHT09EUwogICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCkBAIC0zNyw2MCArMjMsNjYgQEAKICAqIE9VVCBP RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC SUxJVFkgT0YKICAqIFNVQ0ggREFNQUdFLgogICoKLSAqCWZyb206IFV0YWggSGRyOiBwdGUuaCAx LjExIDg5LzA5LzAzCi0gKglmcm9tOiBAKCMpcHRlLmggOC4xIChCZXJrZWxleSkgNi8xMC85Mwot ICoJSk5QUjogcHRlLmgsdiAxLjEuNC4xIDIwMDcvMDkvMTAgMDY6MjA6MTkgZ2lyaXNoCiAgKiAk RnJlZUJTRCQKICAqLwogCi0jaWZuZGVmIF9NQUNISU5FX1BURV9IXworI2lmbmRlZglfTUFDSElO RV9QVEVfSF8KICNkZWZpbmUJX01BQ0hJTkVfUFRFX0hfCiAKLSNpbmNsdWRlIDxtYWNoaW5lL2Vu ZGlhbi5oPgorLyoKKyAqIFRMQiBhbmQgUFRFIG1hbmFnZW1lbnQuICBNb3N0IHRoaW5ncyBvcGVy YXRlIHdpdGhpbiB0aGUgY29udGV4dCBvZgorICogRW50cnlMbzAsMSwgYW5kIGJlZ2luIHdpdGgg VExCTE9fLiAgVGhpbmdzIHdoaWNoIHdvcmsgd2l0aCBFbnRyeUhpCisgKiBzdGFydCB3aXRoIFRM QkhJXy4gIFBURSBiaXRzIGJlZ2luIHdpdGggUEdfLgorICoKKyAqIE5vdGUgdGhhdCB3ZSB1c2Ug dGhlIHNhbWUgc2l6ZSBWTSBhbmQgVExCIHBhZ2VzLgorICovCisjZGVmaW5lCVRMQl9QQUdFX1NI SUZUCShQQUdFX1NISUZUKQorI2RlZmluZQlUTEJfUEFHRV9TSVpFCSgxIDw8IFRMQl9QQUdFX1NI SUZUKQorI2RlZmluZQlUTEJfUEFHRV9NQVNLCShUTEJfUEFHRV9TSVpFIC0gMSkKIAogLyoKLSAq IE1JUFMgaGFyZHdhcmUgcGFnZSB0YWJsZSBlbnRyeQorICogVExCIFBhZ2VNYXNrIHJlZ2lzdGVy LiAgSGFzIG1hc2sgYml0cyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQsIDRLLCBwYWdlIG1hc2suCiAg Ki8KKyNkZWZpbmUJVExCTUFTS19TSElGVAkoMTMpCisjZGVmaW5lCVRMQk1BU0tfTUFTSwkoKFBB R0VfTUFTSyA+PiBUTEJNQVNLX1NISUZUKSA8PCBUTEJNQVNLX1NISUZUKQogCi0jaWZuZGVmIF9M T0NPUkUKLXN0cnVjdCBwdGUgewotI2lmIEJZVEVfT1JERVIgPT0gQklHX0VORElBTgotdW5zaWdu ZWQgaW50CXBnX3Byb3Q6MiwJCS8qIFNXOiBhY2Nlc3MgY29udHJvbCAqLwotCQlwZ19wZm51bToy NCwJCS8qIEhXOiBjb3JlIHBhZ2UgZnJhbWUgbnVtYmVyIG9yIDAgKi8KLQkJcGdfYXR0cjozLAkJ LyogSFc6IGNhY2hlIGF0dHJpYnV0ZSAqLwotCQlwZ19tOjEsCQkJLyogSFc6IG1vZGlmaWVkIChk aXJ0eSkgYml0ICovCi0JCXBnX3Y6MSwJCQkvKiBIVzogdmFsaWQgYml0ICovCi0JCXBnX2c6MTsJ CQkvKiBIVzogaWdub3JlIHBpZCBiaXQgKi8KLSNlbmRpZgotI2lmIEJZVEVfT1JERVIgPT0gTElU VExFX0VORElBTgotdW5zaWduZWQgaW50CXBnX2c6MSwJCQkvKiBIVzogaWdub3JlIHBpZCBiaXQg Ki8KLQkJcGdfdjoxLAkJCS8qIEhXOiB2YWxpZCBiaXQgKi8KLQkJcGdfbToxLAkJCS8qIEhXOiBt b2RpZmllZCAoZGlydHkpIGJpdCAqLwotCQlwZ19hdHRyOjMsCQkvKiBIVzogY2FjaGUgYXR0cmli dXRlICovCi0JCXBnX3BmbnVtOjI0LAkJLyogSFc6IGNvcmUgcGFnZSBmcmFtZSBudW1iZXIgb3Ig MCAqLwotCQlwZ19wcm90OjI7CQkvKiBTVzogYWNjZXNzIGNvbnRyb2wgKi8KLSNlbmRpZgotfTsK LQogLyoKLSAqIFN0cnVjdHVyZSBkZWZpbmluZyBhbiB0bGIgZW50cnkgZGF0YSBzZXQuCisgKiBQ Rk4gZm9yIEVudHJ5TG8gcmVnaXN0ZXIuICBVcHBlciBiaXRzIGFyZSAwLCB3aGljaCBpcyB0byBz YXkgdGhhdAorICogYml0IDI5IGlzIHRoZSBsYXN0IGhhcmR3YXJlIGJpdDsgIEJpdHMgMzAgYW5k IHVwd2FyZHMgKEVudHJ5TG8gaXMKKyAqIDY0IGJpdCB0aG91Z2ggaXQgY2FuIGJlIHJlZmVycmVk IHRvIGluIDMyLWJpdHMgcHJvdmlkaW5nIDIgc29mdHdhcmUKKyAqIGJpdHMgc2FmZWx5LiAgV2Ug dXNlIGl0IGFzIDY0IGJpdHMgdG8gZ2V0IG1hbnkgc29mdHdhcmUgYml0cywgYW5kCisgKiBnb2Qg a25vd3Mgd2hhdCBlbHNlLikgYXJlIHVuYWNrbm93bGVkZ2VkIGJ5IGhhcmR3YXJlLiAgVGhleSBt YXkgYmUKKyAqIHdyaXR0ZW4gYXMgYW55dGhpbmcsIGJ1dCBvdGhlcndpc2UgdGhleSBoYXZlIGFz IG11Y2ggbWVhbmluZyBhcworICogb3RoZXIgMCBmaWVsZHMuCiAgKi8KKyNkZWZpbmUJVExCTE9f U1dCSVRTX1NISUZUCSgzMCkKKyNkZWZpbmUJVExCTE9fU1dCSVRTX01BU0sJKDB4M1UgPDwgVExC TE9fU1dCSVRTX1NISUZUKQorI2RlZmluZQlUTEJMT19QRk5fU0hJRlQJCSg2KQorI2RlZmluZQlU TEJMT19QRk5fTUFTSwkJKDB4M0ZGRkZGQzApCisjZGVmaW5lCVRMQkxPX1BBX1RPX1BGTihwYSkJ KCgoKHBhKSA+PiBUTEJfUEFHRV9TSElGVCkgPDwgVExCTE9fUEZOX1NISUZUKSAmIFRMQkxPX1BG Tl9NQVNLKQorI2RlZmluZQlUTEJMT19QRk5fVE9fUEEocGZuKQkoKHZtX3BhZGRyX3QpKChwZm4p ID4+IFRMQkxPX1BGTl9TSElGVCkgPDwgVExCX1BBR0VfU0hJRlQpCisjZGVmaW5lCVRMQkxPX1BU RV9UT19QRk4ocHRlKQkoKHB0ZSkgJiBUTEJMT19QRk5fTUFTSykKKyNkZWZpbmUJVExCTE9fUFRF X1RPX1BBKHB0ZSkJKFRMQkxPX1BGTl9UT19QQShUTEJMT19QVEVfVE9fUEZOKChwdGUpKSkpCisg IAorLyoKKyAqIFZQTiBmb3IgRW50cnlIaSByZWdpc3Rlci4gIFVwcGVyIHR3byBiaXRzIHNlbGVj dCB1c2VyLCBzdXBlcnZpc29yLAorICogb3Iga2VybmVsLiAgQml0cyA2MSB0byA0MCBjb3B5IGJp dCA2My4gIFZQTjIgaXMgYml0cyAzOSBhbmQgZG93biB0bworICogYXMgbG93IGFzIDEzLCBkb3du IHRvIFBBR0VfU0hJRlQsIHRvIGluZGV4IDIgVExCIHBhZ2VzKi4gIEZyb20gYml0IDEyCisgKiB0 byBiaXQgOCB0aGVyZSBpcyBhIDUtYml0IDAgZmllbGQuICBMb3cgYnl0ZSBpcyBBU0lELgorICoK KyAqIE5vdGUgdGhhdCBpbiBGcmVlQlNELCB3ZSBtYXAgMiBUTEIgcGFnZXMgaXMgZXF1YWwgdG8g MSBWTSBwYWdlLgorICovCisjZGVmaW5lCVRMQkhJX0FTSURfTUFTSwkJKDB4ZmYpCisjZGVmaW5l CVRMQkhJX0VOVFJZKHZhLCBhc2lkKQkoKCh2YSkgJiB+UEFHRV9NQVNLKSB8ICgoYXNpZCkgJiBU TEJISV9BU0lEX01BU0spKQogCi1zdHJ1Y3QgdGxiIHsKLQlpbnQJdGxiX21hc2s7Ci0JaW50CXRs Yl9oaTsKLQlpbnQJdGxiX2xvMDsKLQlpbnQJdGxiX2xvMTsKLX07Ci0KKyNpZm5kZWYgX0xPQ09S RQogdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRfZW50cnlfdDsKIHR5cGVkZWYgcHRfZW50cnlfdCAq cGRfZW50cnlfdDsKKyNlbmRpZgogCiAjZGVmaW5lCVBERVNJWkUJCXNpemVvZihwZF9lbnRyeV90 KQkvKiBmb3IgYXNzZW1ibHkgZmlsZXMgKi8KICNkZWZpbmUJUFRFU0laRQkJc2l6ZW9mKHB0X2Vu dHJ5X3QpCS8qIGZvciBhc3NlbWJseSBmaWxlcyAqLwogCi0jZW5kaWYgLyogX0xPQ09SRSAqLwot CiAjZGVmaW5lCVBUX0VOVFJZX05VTEwJKChwdF9lbnRyeV90ICopIDApCiAKICNkZWZpbmUJUFRF X1dJUkVECTB4ODAwMDAwMDAJLyogU1cgKi8KQEAgLTExOSwxMSArMTExLDYgQEAKICNkZWZpbmUg UFRFX0hWUE4gICAgICAgIDB4ZmZmZmUwMDAgICAgICAvKiBIYXJkd2FyZSBwYWdlIG5vIG1hc2sg Ki8KICNkZWZpbmUgUFRFX0FTSUQgICAgICAgIDB4MDAwMDAwZmYgICAgICAvKiBBZGRyZXNzIHNw YWNlIElEICovCiAKLSNkZWZpbmUJUFRFX1NISUZUCTYKLSNkZWZpbmUJcGZuX2lzX2V4dCh4KQko KHgpICYgMHgzYzAwMDAwMCkKLSNkZWZpbmUJdmFkX3RvX3Bmbih4KQkoKCh1bnNpZ25lZCkoeCkg Pj4gUFRFX1NISUZUKSAmIFBURV9GUkFNRSkKLSNkZWZpbmUJdmFkX3RvX3BmbjY0KHgpCSgocXVh ZF90KSh4KSA+PiBQVEVfU0hJRlQpICYgUFRFX0ZSQU1FKQotI2RlZmluZQlwZm5fdG9fdmFkKHgp CSgoKHgpICYgUFRFX0ZSQU1FKSA8PCBQVEVfU0hJRlQpCiAKIC8qIFVzZXIgdmlydHVhbCB0byBw dGUgb2Zmc2V0IGluIHBhZ2UgdGFibGUgKi8KICNkZWZpbmUJdmFkX3RvX3B0ZV9vZmZzZXQoYWRy KQkoKChhZHIpID4+IFBBR0VfU0hJRlQpICYgKE5QVEVQRyAtMSkpCkBAIC0xMzgsMTYgKzEyNSw1 IEBACiAjZGVmaW5lCW1pcHNfcGdfY3dwYWdlX2JpdCgpCShQVEVfQ1dQQUdFKQogI2RlZmluZQlt aXBzX3BnX2dsb2JhbF9iaXQoKQkoUFRFX0cpCiAjZGVmaW5lCW1pcHNfcGdfd2lyZWRfYml0KCkJ KFBURV9XSVJFRCkKLSNkZWZpbmUJbWlwc190bGJwZm5fdG9fcGFkZHIoeCkJcGZuX3RvX3ZhZCgo eCkpCi0jZGVmaW5lCW1pcHNfcGFkZHJfdG9fdGxicGZuKHgpCXZhZF90b19wZm4oKHgpKQogCi0v KiBUaGVzZSBhcmUgbm90IHVzZWQgKi8KLSNkZWZpbmUJUFRFX1NJWkVfNEsJMHgwMDAwMDAwMAot I2RlZmluZQlQVEVfU0laRV8xNksJMHgwMDAwNjAwMAotI2RlZmluZQlQVEVfU0laRV82NEsJMHgw MDAxZTAwMAotI2RlZmluZQlQVEVfU0laRV8yNTZLCTB4MDAwN2UwMDAKLSNkZWZpbmUJUFRFX1NJ WkVfMU0JMHgwMDFmZTAwMAotI2RlZmluZQlQVEVfU0laRV80TQkweDAwN2ZlMDAwCi0jZGVmaW5l CVBURV9TSVpFXzE2TQkweDAxZmZlMDAwCi0KLSNlbmRpZgkvKiAhX01BQ0hJTkVfUFRFX0hfICov CisjZW5kaWYgLyogIV9NQUNISU5FX1BURV9IXyAqLwpJbmRleDogc3lzL21pcHMvaW5jbHVkZS9w bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvaW5jbHVkZS9wbWFwLmgJKHJldmlzaW9uIDIw OTE5MykKKysrIHN5cy9taXBzL2luY2x1ZGUvcG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwx NSArNDksNyBAQAogI2luY2x1ZGUgPG1hY2hpbmUvdm1wYXJhbS5oPgogI2luY2x1ZGUgPG1hY2hp bmUvcHRlLmg+CiAKLSNkZWZpbmUJVkFERFIocGRpLCBwdGkpCSgodm1fb2Zmc2V0X3QpKCgocGRp KTw8UERSU0hJRlQpfCgocHRpKTw8UEFHRV9TSElGVCkpKQotCiAjZGVmaW5lCU5LUFQJCTEyMAkv KiBhY3R1YWwgbnVtYmVyIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyAqLwotCi0jaWZuZGVmIE5LUERF Ci0jZGVmaW5lCU5LUERFCQkyNTUJLyogYWRkcmVzc2FibGUgbnVtYmVyIG9mIHBhZ2UgdGFibGVz L3BkZSdzICovCi0jZW5kaWYKLQotI2RlZmluZQlLUFRESQkJKFZNX01JTl9LRVJORUxfQUREUkVT UyA+PiBTRUdTSElGVCkKICNkZWZpbmUJTlVTRVJQR1RCTFMJKFZNX01BWFVTRVJfQUREUkVTUyA+ PiBTRUdTSElGVCkKIAogI2lmbmRlZiBMT0NPUkUKQEAgLTEwOSw2ICsxMDEsNyBAQAogdm1fb2Zm c2V0X3QgcG1hcF9rZXh0cmFjdCh2bV9vZmZzZXRfdCB2YSk7CiAKICNkZWZpbmUJdnRvcGh5cyh2 YSkJcG1hcF9rZXh0cmFjdCgoKHZtX29mZnNldF90KSAodmEpKSkKKyNkZWZpbmUJcG1hcF9hc2lk KHBtYXApCShwbWFwKS0+cG1fYXNpZFtQQ1BVX0dFVChjcHVpZCldLmFzaWQKIAogZXh0ZXJuIHN0 cnVjdCBwbWFwCWtlcm5lbF9wbWFwX3N0b3JlOwogI2RlZmluZSBrZXJuZWxfcG1hcAkoJmtlcm5l bF9wbWFwX3N0b3JlKQpAQCAtMTIyLDkgKzExNSw4IEBACiAjZGVmaW5lCVBNQVBfTVRYKHBtYXAp CQkoJihwbWFwKS0+cG1fbXR4KQogI2RlZmluZQlQTUFQX1RSWUxPQ0socG1hcCkJbXR4X3RyeWxv Y2soJihwbWFwKS0+cG1fbXR4KQogI2RlZmluZQlQTUFQX1VOTE9DSyhwbWFwKQltdHhfdW5sb2Nr KCYocG1hcCktPnBtX210eCkKLQogI2RlZmluZSBQTUFQX0xHTUVNX0xPQ0tfSU5JVChzeXNtYXAp IG10eF9pbml0KCYoc3lzbWFwKS0+bG9jaywgInBtYXAtbGdtZW0iLCBcCi0JCQkJICAgICJwZXIt Y3B1LW1hcCIsIChNVFhfREVGfCBNVFhfRFVQT0spKQorCQkJICAgICAicGVyLWNwdS1tYXAiLCAo TVRYX0RFRnwgTVRYX0RVUE9LKSkKICNkZWZpbmUgUE1BUF9MR01FTV9MT0NLKHN5c21hcCkgbXR4 X2xvY2soJihzeXNtYXApLT5sb2NrKQogI2RlZmluZSBQTUFQX0xHTUVNX1VOTE9DSyhzeXNtYXAp IG10eF91bmxvY2soJihzeXNtYXApLT5sb2NrKQogI2RlZmluZSBQTUFQX0xHTUVNX0RFU1RST1ko c3lzbWFwKSBtdHhfZGVzdHJveSgmKHN5c21hcCktPmxvY2spCkBAIC0xODMsMTEgKzE3NSw2IEBA CiB2b2lkIHBtYXBfdXBkYXRlX3BhZ2UocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhLCBwdF9l bnRyeV90IHB0ZSk7CiB2b2lkIHBtYXBfZmx1c2hfcHZjYWNoZSh2bV9wYWdlX3QgbSk7CiAKLS8q Ci0gKiBGdW5jdGlvbiB0byBzYXZlIFRMQiBjb250ZW50cyBzbyB0aGF0IHRoZXkgbWF5IGJlIGlu c3BlY3RlZCBpbiB0aGUgZGVidWdnZXIuCi0gKi8KLWV4dGVybiB2b2lkIHBtYXBfc2F2ZV90bGIo dm9pZCk7Ci0KICNlbmRpZgkJCQkvKiBfS0VSTkVMICovCiAKICNlbmRpZgkJCQkvKiAhTE9DT1JF ICovCkluZGV4OiBzeXMvbWlwcy9taXBzL3RsYi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21p cHMvdGxiLmMJKHJldmlzaW9uIDApCisrKyBzeXMvbWlwcy9taXBzL3RsYi5jCShyZXZpc2lvbiAw KQpAQCAtMCwwICsxLDMxMSBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAxMCBKdWxp IE1hbGxldHQgPGptYWxsZXR0QEZyZWVCU0Qub3JnPgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0 CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1Ig QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB VVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElS RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT VUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisg KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg QVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq CisgKiAkRnJlZUJTRCQKKyAqLworCisjaW5jbHVkZSAib3B0X2RkYi5oIgorCisjaW5jbHVkZSA8 c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9zeXN0 bS5oPgorI2luY2x1ZGUgPHN5cy9wY3B1Lmg+CisjaW5jbHVkZSA8c3lzL3NtcC5oPgorCisjaW5j bHVkZSA8dm0vdm0uaD4KKyNpbmNsdWRlIDx2bS92bV9wYWdlLmg+CisKKyNpbmNsdWRlIDxtYWNo aW5lL3B0ZS5oPgorI2luY2x1ZGUgPG1hY2hpbmUvdGxiLmg+CisKK3N0cnVjdCB0bGJfc3RhdGUg eworCXVuc2lnbmVkIHdpcmVkOworCXN0cnVjdCB0bGJfZW50cnkgeworCQlyZWdpc3Rlcl90IGVu dHJ5aGk7CisJCXJlZ2lzdGVyX3QgZW50cnlsbzA7CisJCXJlZ2lzdGVyX3QgZW50cnlsbzE7CisJ fSBlbnRyeVtNSVBTX01BWF9UTEJfRU5UUklFU107Cit9OworCitzdGF0aWMgc3RydWN0IHRsYl9z dGF0ZSB0bGJfc3RhdGVbTUFYQ1BVXTsKKworI2lmIDAKKy8qCisgKiBQYWdlTWFzayBtdXN0IGlu Y3JlbWVudCBpbiBzdGVwcyBvZiAyIGJpdHMuCisgKi8KK0NPTVBJTEVfVElNRV9BU1NFUlQoUE9Q Q05UKFRMQk1BU0tfTUFTSykgJSAyID09IDApOworI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgdm9p ZAordGxiX3Byb2JlKHZvaWQpCit7CisJX19hc20gX192b2xhdGlsZSAoInRsYnAiIDogOiA6ICJt ZW1vcnkiKTsKKwltaXBzX2NwMF9zeW5jKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordGxi X3JlYWQodm9pZCkKK3sKKwlfX2FzbSBfX3ZvbGF0aWxlICgidGxiciIgOiA6IDogIm1lbW9yeSIp OworCW1pcHNfY3AwX3N5bmMoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0bGJfd3JpdGVf aW5kZXhlZCh2b2lkKQoreworCV9fYXNtIF9fdm9sYXRpbGUgKCJ0bGJ3aSIgOiA6IDogIm1lbW9y eSIpOworCW1pcHNfY3AwX3N5bmMoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0bGJfd3Jp dGVfcmFuZG9tKHZvaWQpCit7CisJX19hc20gX192b2xhdGlsZSAoInRsYndyIiA6IDogOiAibWVt b3J5Iik7CisJbWlwc19jcDBfc3luYygpOworfQorCitzdGF0aWMgdm9pZCB0bGJfaW52YWxpZGF0 ZV9vbmUodW5zaWduZWQpOworCit2b2lkCit0bGJfaW5zZXJ0X3dpcmVkKHVuc2lnbmVkIGksIHZt X29mZnNldF90IHZhLCBwdF9lbnRyeV90IHB0ZTAsIHB0X2VudHJ5X3QgcHRlMSkKK3sKKwlyZWdp c3Rlcl90IG1hc2ssIGFzaWQ7CisJcmVnaXN0ZXJfdCBzOworCisJdmEgJj0gflBBR0VfTUFTSzsK KworCXMgPSBpbnRyX2Rpc2FibGUoKTsKKwltYXNrID0gbWlwc19yZF9wYWdlbWFzaygpOworCWFz aWQgPSBtaXBzX3JkX2VudHJ5aGkoKSAmIFRMQkhJX0FTSURfTUFTSzsKKworCW1pcHNfd3JfaW5k ZXgoaSk7CisJbWlwc193cl9wYWdlbWFzaygwKTsKKwltaXBzX3dyX2VudHJ5aGkoVExCSElfRU5U UlkodmEsIDApKTsKKwltaXBzX3dyX2VudHJ5bG8wKHB0ZTApOworCW1pcHNfd3JfZW50cnlsbzEo cHRlMSk7CisJdGxiX3dyaXRlX2luZGV4ZWQoKTsKKworCW1pcHNfd3JfZW50cnloaShhc2lkKTsK KwltaXBzX3dyX3BhZ2VtYXNrKG1hc2spOworCWludHJfcmVzdG9yZShzKTsKK30KKwordm9pZAor dGxiX2ludmFsaWRhdGVfYWRkcmVzcyhzdHJ1Y3QgcG1hcCAqcG1hcCwgdm1fb2Zmc2V0X3QgdmEp Cit7CisJcmVnaXN0ZXJfdCBtYXNrLCBhc2lkOworCXJlZ2lzdGVyX3QgczsKKwlpbnQgaTsKKwor CXZhICY9IH5QQUdFX01BU0s7CisKKwlzID0gaW50cl9kaXNhYmxlKCk7CisJbWFzayA9IG1pcHNf cmRfcGFnZW1hc2soKTsKKwlhc2lkID0gbWlwc19yZF9lbnRyeWhpKCkgJiBUTEJISV9BU0lEX01B U0s7CisKKwltaXBzX3dyX3BhZ2VtYXNrKDApOworCW1pcHNfd3JfZW50cnloaShUTEJISV9FTlRS WSh2YSwgcG1hcF9hc2lkKHBtYXApKSk7CisJdGxiX3Byb2JlKCk7CisJaSA9IG1pcHNfcmRfaW5k ZXgoKTsKKwlpZiAoaSA+PSAwKQorCQl0bGJfaW52YWxpZGF0ZV9vbmUoaSk7CisKKwltaXBzX3dy X2VudHJ5aGkoYXNpZCk7CisJbWlwc193cl9wYWdlbWFzayhtYXNrKTsKKwlpbnRyX3Jlc3RvcmUo cyk7Cit9CisKK3ZvaWQKK3RsYl9pbnZhbGlkYXRlX2FsbCh2b2lkKQoreworCXJlZ2lzdGVyX3Qg bWFzaywgYXNpZDsKKwlyZWdpc3Rlcl90IHM7CisJdW5zaWduZWQgaTsKKworCXMgPSBpbnRyX2Rp c2FibGUoKTsKKwltYXNrID0gbWlwc19yZF9wYWdlbWFzaygpOworCWFzaWQgPSBtaXBzX3JkX2Vu dHJ5aGkoKSAmIFRMQkhJX0FTSURfTUFTSzsKKworCWZvciAoaSA9IG1pcHNfcmRfd2lyZWQoKTsg aSA8IG51bV90bGJlbnRyaWVzOyBpKyspCisJCXRsYl9pbnZhbGlkYXRlX29uZShpKTsKKworCW1p cHNfd3JfZW50cnloaShhc2lkKTsKKwltaXBzX3dyX3BhZ2VtYXNrKG1hc2spOworCWludHJfcmVz dG9yZShzKTsKK30KKwordm9pZAordGxiX2ludmFsaWRhdGVfYWxsX3VzZXIoc3RydWN0IHBtYXAg KnBtYXApCit7CisJcmVnaXN0ZXJfdCBtYXNrLCBhc2lkOworCXJlZ2lzdGVyX3QgczsKKwl1bnNp Z25lZCBpOworCisJcyA9IGludHJfZGlzYWJsZSgpOworCW1hc2sgPSBtaXBzX3JkX3BhZ2VtYXNr KCk7CisJYXNpZCA9IG1pcHNfcmRfZW50cnloaSgpICYgVExCSElfQVNJRF9NQVNLOworCisJZm9y IChpID0gbWlwc19yZF93aXJlZCgpOyBpIDwgbnVtX3RsYmVudHJpZXM7IGkrKykgeworCQlyZWdp c3Rlcl90IHVhc2lkOworCisJCW1pcHNfd3JfaW5kZXgoaSk7CisJCXRsYl9yZWFkKCk7CisKKwkJ dWFzaWQgPSBtaXBzX3JkX2VudHJ5aGkoKSAmIFRMQkhJX0FTSURfTUFTSzsKKwkJaWYgKHBtYXAg PT0gTlVMTCkgeworCQkJLyoKKwkJCSAqIEludmFsaWRhdGUgYWxsIG5vbi1rZXJuZWwgZW50cmll cy4KKwkJCSAqLworCQkJaWYgKHVhc2lkID09IDApCisJCQkJY29udGludWU7CisJCX0gZWxzZSB7 CisJCQkvKgorCQkJICogSW52YWxpZGF0ZSB0aGlzIHBtYXAncyBlbnRyaWVzLgorCQkJICovCisJ CQlpZiAodWFzaWQgIT0gcG1hcF9hc2lkKHBtYXApKQorCQkJCWNvbnRpbnVlOworCQl9CisJCXRs Yl9pbnZhbGlkYXRlX29uZShpKTsKKwl9CisKKwltaXBzX3dyX2VudHJ5aGkoYXNpZCk7CisJbWlw c193cl9wYWdlbWFzayhtYXNrKTsKKwlpbnRyX3Jlc3RvcmUocyk7Cit9CisKKy8qIFhYWCBPbmx5 IGlmIEREQj8gICovCit2b2lkCit0bGJfc2F2ZSh2b2lkKQoreworCXVuc2lnbmVkIGksIGNwdTsK KworCWNwdSA9IFBDUFVfR0VUKGNwdWlkKTsKKworCXRsYl9zdGF0ZVtjcHVdLndpcmVkID0gbWlw c19yZF93aXJlZCgpOworCWZvciAoaSA9IDA7IGkgPCBudW1fdGxiZW50cmllczsgaSsrKSB7CisJ CW1pcHNfd3JfaW5kZXgoaSk7CisJCXRsYl9yZWFkKCk7CisKKwkJdGxiX3N0YXRlW2NwdV0uZW50 cnlbaV0uZW50cnloaSA9IG1pcHNfcmRfZW50cnloaSgpOworCQl0bGJfc3RhdGVbY3B1XS5lbnRy eVtpXS5lbnRyeWxvMCA9IG1pcHNfcmRfZW50cnlsbzAoKTsKKwkJdGxiX3N0YXRlW2NwdV0uZW50 cnlbaV0uZW50cnlsbzEgPSBtaXBzX3JkX2VudHJ5bG8xKCk7CisJfQorfQorCit2b2lkCit0bGJf dXBkYXRlKHN0cnVjdCBwbWFwICpwbWFwLCB2bV9vZmZzZXRfdCB2YSwgcHRfZW50cnlfdCBwdGUp Cit7CisJcmVnaXN0ZXJfdCBtYXNrLCBhc2lkOworCXJlZ2lzdGVyX3QgczsKKwlpbnQgaTsKKwor CXZhICY9IH5QQUdFX01BU0s7CisJcHRlICY9IH5UTEJMT19TV0JJVFNfTUFTSzsKKworCXMgPSBp bnRyX2Rpc2FibGUoKTsKKwltYXNrID0gbWlwc19yZF9wYWdlbWFzaygpOworCWFzaWQgPSBtaXBz X3JkX2VudHJ5aGkoKSAmIFRMQkhJX0FTSURfTUFTSzsKKworCW1pcHNfd3JfcGFnZW1hc2soMCk7 CisJbWlwc193cl9lbnRyeWhpKFRMQkhJX0VOVFJZKHZhLCBwbWFwX2FzaWQocG1hcCkpKTsKKwl0 bGJfcHJvYmUoKTsKKwlpID0gbWlwc19yZF9pbmRleCgpOworCWlmIChpID49IDApIHsKKwkJdGxi X3JlYWQoKTsKKworCQlpZiAoKHZhICYgUEFHRV9TSVpFKSA9PSAwKSB7CisJCQltaXBzX3dyX2Vu dHJ5bG8wKHB0ZSk7CisJCX0gZWxzZSB7CisJCQltaXBzX3dyX2VudHJ5bG8xKHB0ZSk7CisJCX0K KwkJdGxiX3dyaXRlX2luZGV4ZWQoKTsKKwl9CisKKwltaXBzX3dyX2VudHJ5aGkoYXNpZCk7CisJ bWlwc193cl9wYWdlbWFzayhtYXNrKTsKKwlpbnRyX3Jlc3RvcmUocyk7Cit9CisKK3N0YXRpYyB2 b2lkCit0bGJfaW52YWxpZGF0ZV9vbmUodW5zaWduZWQgaSkKK3sKKwkvKiBYWFggYW4gaW52YWxp ZCBBU0lEPyAqLworCW1pcHNfd3JfZW50cnloaShUTEJISV9FTlRSWShNSVBTX0tTRUcwX1NUQVJU ICsgKDIgKiBpICogUEFHRV9TSVpFKSwgMCkpOworCW1pcHNfd3JfZW50cnlsbzAoMCk7CisJbWlw c193cl9lbnRyeWxvMSgwKTsKKwltaXBzX3dyX3BhZ2VtYXNrKDApOworCW1pcHNfd3JfaW5kZXgo aSk7CisJdGxiX3dyaXRlX2luZGV4ZWQoKTsKK30KKworI2lmZGVmIEREQgorI2luY2x1ZGUgPGRk Yi9kZGIuaD4KKworREJfU0hPV19DT01NQU5EKHRsYiwgZGRiX2R1bXBfdGxiKQoreworCXJlZ2lz dGVyX3QgZWhpLCBlbG8wLCBlbG8xOworCXVuc2lnbmVkIGksIGNwdTsKKworCS8qCisJICogWFhY CisJICogVGhlIHdvcnN0IGNvbnZlcnNpb24gZnJvbSBoZXggdG8gZGVjaW1hbCBldmVyLgorCSAq LworCWlmIChoYXZlX2FkZHIpCisJCWNwdSA9ICgoYWRkciA+PiA0KSAlIDE2KSAqIDEwICsgKGFk ZHIgJSAxNik7CisJZWxzZQorCQljcHUgPSBQQ1BVX0dFVChjcHVpZCk7CisKKwlpZiAoY3B1IDwg MCB8fCBjcHUgPj0gbXBfbmNwdXMpIHsKKwkJZGJfcHJpbnRmKCJJbnZhbGlkIENQVSAldVxuIiwg Y3B1KTsKKwkJcmV0dXJuOworCX0KKworCWlmIChjcHUgPT0gUENQVV9HRVQoY3B1aWQpKQorCQl0 bGJfc2F2ZSgpOworCisJZGJfcHJpbnRmKCJCZWdpbm5pbmcgVExCIGR1bXAgZm9yIENQVSAldS4u LlxuIiwgY3B1KTsKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX3RsYmVudHJpZXM7IGkrKykgeworCQlp ZiAoaSA9PSB0bGJfc3RhdGVbY3B1XS53aXJlZCkgeworCQkJaWYgKGkgIT0gMCkKKwkJCQlkYl9w cmludGYoIl5eXiBXSVJFRCBFTlRSSUVTIF5eXlxuIik7CisJCQllbHNlCisJCQkJZGJfcHJpbnRm KCIoTm8gd2lyZWQgZW50cmllcy4pXG4iKTsKKwkJfQorCisJCS8qIFhYWCBQYWdlTWFzay4gICov CisJCWVoaSA9IHRsYl9zdGF0ZVtjcHVdLmVudHJ5W2ldLmVudHJ5aGk7CisJCWVsbzAgPSB0bGJf c3RhdGVbY3B1XS5lbnRyeVtpXS5lbnRyeWxvMDsKKwkJZWxvMSA9IHRsYl9zdGF0ZVtjcHVdLmVu dHJ5W2ldLmVudHJ5bG8xOworCisJCWlmIChlbG8wID09IDAgJiYgZWxvMSA9PSAwKQorCQkJY29u dGludWU7CisKKwkJZGJfcHJpbnRmKCIjJXVcdD0+ICVqeFxuIiwgaSwgKGludG1heF90KWVoaSk7 CisJCWRiX3ByaW50ZigiIExvMFx0JWp4XHQoJSNqeClcbiIsIChpbnRtYXhfdCllbG8wLCAoaW50 bWF4X3QpVExCTE9fUFRFX1RPX1BBKGVsbzApKTsKKwkJZGJfcHJpbnRmKCIgTG8xXHQlanhcdCgl I2p4KVxuIiwgKGludG1heF90KWVsbzEsIChpbnRtYXhfdClUTEJMT19QVEVfVE9fUEEoZWxvMSkp OworCX0KKwlkYl9wcmludGYoIkZpbmlzaGVkLlxuIik7Cit9CisjZW5kaWYKSW5kZXg6IHN5cy9t aXBzL21pcHMvY3B1LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvbWlwcy9jcHUuYwkocmV2aXNp b24gMjA5MTkzKQorKysgc3lzL21pcHMvbWlwcy9jcHUuYwkod29ya2luZyBjb3B5KQpAQCAtNDks NiArNDksNyBAQAogI2luY2x1ZGUgPG1hY2hpbmUvaW50cl9tYWNoZGVwLmg+CiAjaW5jbHVkZSA8 bWFjaGluZS9sb2NvcmUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3B0ZS5oPgorI2luY2x1ZGUgPG1h Y2hpbmUvdGxiLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9od2Z1bmMuaD4KIAogc3RydWN0IG1pcHNf Y3B1aW5mbyBjcHVpbmZvOwpAQCAtMTM1LDkgKzEzNiw5IEBACiAJcGxhdGZvcm1fY3B1X2luaXQo KTsKIAltaXBzX2dldF9pZGVudGl0eSgmY3B1aW5mbyk7CiAJbnVtX3RsYmVudHJpZXMgPSBjcHVp bmZvLnRsYl9uZW50cmllczsKLQlNaXBzX1NldFdJUkVEKDApOwotCU1pcHNfVExCRmx1c2gobnVt X3RsYmVudHJpZXMpOwotCU1pcHNfU2V0V0lSRUQoVk1XSVJFRF9FTlRSSUVTKTsKKwltaXBzX3dy X3dpcmVkKDApOworCXRsYl9pbnZhbGlkYXRlX2FsbCgpOworCW1pcHNfd3Jfd2lyZWQoVk1XSVJF RF9FTlRSSUVTKTsKIAltaXBzX2NvbmZpZ19jYWNoZSgmY3B1aW5mbyk7CiAJbWlwc192ZWN0b3Jf aW5pdCgpOwogCkluZGV4OiBzeXMvbWlwcy9taXBzL3BtYXAuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv bWlwcy9taXBzL3BtYXAuYwkocmV2aXNpb24gMjA5MTkzKQorKysgc3lzL21pcHMvbWlwcy9wbWFw LmMJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAKIAogI2luY2x1ZGUgPG1hY2hpbmUv Y2FjaGUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL21kX3Zhci5oPgorI2luY2x1ZGUgPG1hY2hpbmUv dGxiLmg+CiAKICNpZiBkZWZpbmVkKERJQUdOT1NUSUMpCiAjZGVmaW5lCVBNQVBfRElBR05PU1RJ QwpAQCAtMTUwLDggKzE1MSw2IEBACiAKIHZtX29mZnNldF90IGtlcm5lbF92bV9lbmQ7CiAKLXN0 YXRpYyBzdHJ1Y3QgdGxiIHRsYnN0YXNoW01BWENQVV1bTUlQU19NQVhfVExCX0VOVFJJRVNdOwot CiBzdGF0aWMgdm9pZCBwbWFwX2FzaWRfYWxsb2MocG1hcF90IHBtYXApOwogCiAvKgpAQCAtMTgy LDggKzE4MSw2IEBACiBzdGF0aWMgdm1fcGFnZV90IF9wbWFwX2FsbG9jcHRlKHBtYXBfdCBwbWFw LCB1bnNpZ25lZCBwdGVwaW5kZXgsIGludCBmbGFncyk7CiBzdGF0aWMgaW50IHBtYXBfdW51c2Vf cHQocG1hcF90LCB2bV9vZmZzZXRfdCwgdm1fcGFnZV90KTsKIHN0YXRpYyBpbnQgaW5pdF9wdGVf cHJvdCh2bV9vZmZzZXRfdCB2YSwgdm1fcGFnZV90IG0sIHZtX3Byb3RfdCBwcm90KTsKLXN0YXRp YyB2b2lkIHBtYXBfVExCX2ludmFsaWRhdGVfa2VybmVsKHZtX29mZnNldF90KTsKLXN0YXRpYyB2 b2lkIHBtYXBfVExCX3VwZGF0ZV9rZXJuZWwodm1fb2Zmc2V0X3QsIHB0X2VudHJ5X3QpOwogc3Rh dGljIHZtX3BhZ2VfdCBwbWFwX2FsbG9jX3B0ZV9wYWdlKHBtYXBfdCwgdW5zaWduZWQgaW50LCBp bnQsIHZtX29mZnNldF90ICopOwogc3RhdGljIHZvaWQgcG1hcF9yZWxlYXNlX3B0ZV9wYWdlKHZt X3BhZ2VfdCk7CiAKQEAgLTIyMyw3ICsyMjAsNyBAQAogCWludHIgPSBpbnRyX2Rpc2FibGUoKTsJ CQkJCQlcCiAJc2NoZWRfcGluKCk7CQkJCQkJCVwKIAl2YSA9IHN5c20tPmJhc2U7CQkJCQkJXAot CW5wdGUgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwaHlzKSB8CQkJCVwKKwlucHRlID0gVExCTE9f UEFfVE9fUEZOKHBoeXMpIHwJCQkJCVwKIAkgICAgUFRFX1JXIHwgUFRFX1YgfCBQVEVfRyB8IFBU RV9XIHwgUFRFX0NBQ0hFOwkJCVwKIAlwdGUgPSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwgdmEpOwkJ CQlcCiAJKnB0ZSA9IG5wdGU7CQkJCQkJCVwKQEAgLTI0MSwxMSArMjM4LDExIEBACiAJc2NoZWRf cGluKCk7CQkJCQkJCVwKIAl2YTEgPSBzeXNtLT5iYXNlOwkJCQkJCVwKIAl2YTIgPSBzeXNtLT5i YXNlICsgUEFHRV9TSVpFOwkJCQkJXAotCW5wdGUgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwaHlz MSkgfAkJCQlcCisJbnB0ZSA9IFRMQkxPX1BBX1RPX1BGTihwaHlzMSkgfAkJCQkJXAogCSAgICBQ VEVfUlcgfCBQVEVfViB8IFBURV9HIHwgUFRFX1cgfCBQVEVfQ0FDSEU7CQkJXAogCXB0ZSA9IHBt YXBfcHRlKGtlcm5lbF9wbWFwLCB2YTEpOwkJCQlcCiAJKnB0ZSA9IG5wdGU7CQkJCQkJCVwKLQlu cHRlID0gbWlwc19wYWRkcl90b190bGJwZm4ocGh5czIpIHwJCQkJXAorCW5wdGUgPSAgVExCTE9f UEFfVE9fUEZOKHBoeXMyKSB8CQkJCVwKIAkgICAgUFRFX1JXIHwgUFRFX1YgfCBQVEVfRyB8IFBU RV9XIHwgUFRFX0NBQ0hFOwkJCVwKIAlwdGUgPSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwgdmEyKTsJ CQkJXAogCSpwdGUgPSBucHRlOwkJCQkJCQlcCkBAIC0yNTUsMTEgKzI1MiwxMSBAQAogI2RlZmlu ZQlQTUFQX0xNRU1fVU5NQVAoKQkJCQkJCVwKIAlwdGUgPSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwg c3lzbS0+YmFzZSk7CQkJXAogCSpwdGUgPSBQVEVfRzsJCQkJCQkJXAotCXBtYXBfVExCX2ludmFs aWRhdGVfa2VybmVsKHN5c20tPmJhc2UpOwkJCQlcCisJdGxiX2ludmFsaWRhdGVfYWRkcmVzcyhr ZXJuZWxfcG1hcCwgc3lzbS0+YmFzZSk7CQlcCiAJc3lzbS0+dmFsaWQxID0gMDsJCQkJCQlcCiAJ cHRlID0gcG1hcF9wdGUoa2VybmVsX3BtYXAsIHN5c20tPmJhc2UgKyBQQUdFX1NJWkUpOwkJXAog CSpwdGUgPSBQVEVfRzsJCQkJCQkJXAotCXBtYXBfVExCX2ludmFsaWRhdGVfa2VybmVsKHN5c20t PmJhc2UgKyBQQUdFX1NJWkUpOwkJXAorCXRsYl9pbnZhbGlkYXRlX2FkZHJlc3Moa2VybmVsX3Bt YXAsIHN5c20tPmJhc2UgKyBQQUdFX1NJWkUpOwlcCiAJc3lzbS0+dmFsaWQyID0gMDsJCQkJCQlc CiAJc2NoZWRfdW5waW4oKTsJCQkJCQkJXAogCWludHJfcmVzdG9yZShpbnRyKTsJCQkJCQlcCkBA IC00OTksNyArNDk2LDcgQEAKIAlrZXJuZWxfcG1hcC0+cG1fYXNpZFswXS5hc2lkID0gUE1BUF9B U0lEX1JFU0VSVkVEOwogCWtlcm5lbF9wbWFwLT5wbV9hc2lkWzBdLmdlbiA9IDA7CiAJcG1hcF9t YXhfYXNpZCA9IFZNTlVNX1BJRFM7Ci0JTWFjaFNldFBJRCgwKTsKKwltaXBzX3dyX2VudHJ5aGko MCk7CiB9CiAKIC8qCkBAIC01NzYsOSArNTczLDE0IEBACiAKICNlbmRpZgogCi0JaWYgKHBtYXAt PnBtX2FjdGl2ZSAmIFBDUFVfR0VUKGNwdW1hc2spKSB7Ci0JCXBtYXBfVExCX2ludmFsaWRhdGVf YWxsKCk7Ci0JfSBlbHNlCisJaWYgKHBtYXAgPT0ga2VybmVsX3BtYXApIHsKKwkJdGxiX2ludmFs aWRhdGVfYWxsKCk7CisJCXJldHVybjsKKwl9CisKKwlpZiAocG1hcC0+cG1fYWN0aXZlICYgUENQ VV9HRVQoY3B1bWFzaykpCisJCXRsYl9pbnZhbGlkYXRlX2FsbF91c2VyKHBtYXApOworCWVsc2UK IAkJcG1hcC0+cG1fYXNpZFtQQ1BVX0dFVChjcHVpZCldLmdlbiA9IDA7CiB9CiAKQEAgLTYwOCw3 ICs2MTAsNyBAQAogI2VuZGlmCiAKIAlpZiAoaXNfa2VybmVsX3BtYXAocG1hcCkpIHsKLQkJcG1h cF9UTEJfaW52YWxpZGF0ZV9rZXJuZWwodmEpOworCQl0bGJfaW52YWxpZGF0ZV9hZGRyZXNzKHBt YXAsIHZhKTsKIAkJcmV0dXJuOwogCX0KIAlpZiAocG1hcC0+cG1fYXNpZFtQQ1BVX0dFVChjcHVp ZCldLmdlbiAhPSBQQ1BVX0dFVChhc2lkX2dlbmVyYXRpb24pKQpAQCAtNjE3LDIwICs2MTksOSBA QAogCQlwbWFwLT5wbV9hc2lkW1BDUFVfR0VUKGNwdWlkKV0uZ2VuID0gMDsKIAkJcmV0dXJuOwog CX0KLQl2YSA9IHBtYXBfdmFfYXNpZChwbWFwLCAodmEgJiB+UEFHRV9NQVNLKSk7Ci0JbWlwc19U QklTKHZhKTsKKwl0bGJfaW52YWxpZGF0ZV9hZGRyZXNzKHBtYXAsIHZhKTsKIH0KIAotc3RhdGlj IHZvaWQKLXBtYXBfVExCX2ludmFsaWRhdGVfa2VybmVsKHZtX29mZnNldF90IHZhKQotewotCXVf aW50MzJfdCBwaWQ7Ci0KLQlNYWNoVExCR2V0UElEKHBpZCk7Ci0JdmEgPSB2YSB8IChwaWQgPDwg Vk1UTEJfUElEX1NISUZUKTsKLQltaXBzX1RCSVModmEpOwotfQotCiBzdHJ1Y3QgcG1hcF91cGRh dGVfcGFnZV9hcmcgewogCXBtYXBfdCBwbWFwOwogCXZtX29mZnNldF90IHZhOwpAQCAtNjU5LDcg KzY1MCw3IEBACiAKICNlbmRpZgogCWlmIChpc19rZXJuZWxfcG1hcChwbWFwKSkgewotCQlwbWFw X1RMQl91cGRhdGVfa2VybmVsKHZhLCBwdGUpOworCQl0bGJfdXBkYXRlKHBtYXAsIHZhLCBwdGUp OwogCQlyZXR1cm47CiAJfQogCWlmIChwbWFwLT5wbV9hc2lkW1BDUFVfR0VUKGNwdWlkKV0uZ2Vu ICE9IFBDUFVfR0VUKGFzaWRfZ2VuZXJhdGlvbikpCkBAIC02NjgsMjMgKzY1OSw5IEBACiAJCXBt YXAtPnBtX2FzaWRbUENQVV9HRVQoY3B1aWQpXS5nZW4gPSAwOwogCQlyZXR1cm47CiAJfQotCXZh ID0gcG1hcF92YV9hc2lkKHBtYXAsICh2YSAmIH5QQUdFX01BU0spKTsKLQlNYWNoVExCVXBkYXRl KHZhLCBwdGUpOworCXRsYl91cGRhdGUocG1hcCwgdmEsIHB0ZSk7CiB9CiAKLXN0YXRpYyB2b2lk Ci1wbWFwX1RMQl91cGRhdGVfa2VybmVsKHZtX29mZnNldF90IHZhLCBwdF9lbnRyeV90IHB0ZSkK LXsKLQl1X2ludDMyX3QgcGlkOwotCi0JdmEgJj0gflBBR0VfTUFTSzsKLQotCU1hY2hUTEJHZXRQ SUQocGlkKTsKLQl2YSA9IHZhIHwgKHBpZCA8PCBWTVRMQl9QSURfU0hJRlQpOwotCi0JTWFjaFRM QlVwZGF0ZSh2YSwgcHRlKTsKLX0KLQogLyoKICAqCVJvdXRpbmU6CXBtYXBfZXh0cmFjdAogICoJ RnVuY3Rpb246CkBAIC03MDAsNyArNjc3LDcgQEAKIAlQTUFQX0xPQ0socG1hcCk7CiAJcHRlID0g cG1hcF9wdGUocG1hcCwgdmEpOwogCWlmIChwdGUpIHsKLQkJcmV0dmFsID0gbWlwc190bGJwZm5f dG9fcGFkZHIoKnB0ZSkgfCAodmEgJiBQQUdFX01BU0spOworCQlyZXR2YWwgPSBUTEJMT19QVEVf VE9fUEEoKnB0ZSkgfCAodmEgJiBQQUdFX01BU0spOwogCX0KIAlQTUFQX1VOTE9DSyhwbWFwKTsK IAlyZXR1cm4gcmV0dmFsOwpAQCAtNzI3LDEwICs3MDQsMTAgQEAKIAlwdGUgPSAqcG1hcF9wdGUo cG1hcCwgdmEpOwogCWlmIChwdGUgIT0gMCAmJiBwbWFwX3B0ZV92KCZwdGUpICYmCiAJICAgICgo cHRlICYgUFRFX1JXKSB8fCAocHJvdCAmIFZNX1BST1RfV1JJVEUpID09IDApKSB7Ci0JCWlmICh2 bV9wYWdlX3BhX3RyeXJlbG9jayhwbWFwLCBtaXBzX3RsYnBmbl90b19wYWRkcihwdGUpLCAmcGEp KQorCQlpZiAodm1fcGFnZV9wYV90cnlyZWxvY2socG1hcCwgVExCTE9fUFRFX1RPX1BBKHB0ZSks ICZwYSkpCiAJCQlnb3RvIHJldHJ5OwogCi0JCW0gPSBQSFlTX1RPX1ZNX1BBR0UobWlwc190bGJw Zm5fdG9fcGFkZHIocHRlKSk7CisJCW0gPSBQSFlTX1RPX1ZNX1BBR0UoVExCTE9fUFRFX1RPX1BB KHB0ZSkpOwogCQl2bV9wYWdlX2hvbGQobSk7CiAJfQogCVBBX1VOTE9DS19DT05EKHBhKTsKQEAg LTc1NCw3ICs3MzEsNyBAQAogI2lmZGVmIFBNQVBfREVCVUcKIAlwcmludGYoInBtYXBfa2VudGVy OiAgdmE6IDB4JTA4eCAtPiBwYTogMHglMDh4XG4iLCB2YSwgcGEpOwogI2VuZGlmCi0JbnB0ZSA9 IG1pcHNfcGFkZHJfdG9fdGxicGZuKHBhKSB8IFBURV9SVyB8IFBURV9WIHwgUFRFX0cgfCBQVEVf VzsKKwlucHRlID0gVExCTE9fUEFfVE9fUEZOKHBhKSB8IFBURV9SVyB8IFBURV9WIHwgUFRFX0cg fCBQVEVfVzsKIAogCWlmIChpc19jYWNoZWFibGVfbWVtKHBhKSkKIAkJbnB0ZSB8PSBQVEVfQ0FD SEU7CkBAIC0xNDg0LDcgKzE0NjEsNyBAQAogCQlwbWFwLT5wbV9zdGF0cy53aXJlZF9jb3VudCAt PSAxOwogCiAJcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQgLT0gMTsKLQlwYSA9IG1pcHNf dGxicGZuX3RvX3BhZGRyKG9sZHB0ZSk7CisJcGEgPSBUTEJMT19QVEVfVE9fUEEob2xkcHRlKTsK IAogCWlmIChwYWdlX2lzX21hbmFnZWQocGEpKSB7CiAJCW0gPSBQSFlTX1RPX1ZNX1BBR0UocGEp OwpAQCAtMTcwMCw3ICsxNjc3LDcgQEAKIAkJfQogcmV0cnk6CiAJCW9iaXRzID0gcGJpdHMgPSAq cHRlOwotCQlwYSA9IG1pcHNfdGxicGZuX3RvX3BhZGRyKHBiaXRzKTsKKwkJcGEgPSBUTEJMT19Q VEVfVE9fUEEocGJpdHMpOwogCiAJCWlmIChwYWdlX2lzX21hbmFnZWQocGEpICYmIChwYml0cyAm IFBURV9NKSAhPSAwKSB7CiAJCQltID0gUEhZU19UT19WTV9QQUdFKHBhKTsKQEAgLTE3NzYsNyAr MTc1Myw3IEBACiAJcGEgPSBWTV9QQUdFX1RPX1BIWVMobSk7CiAJb20gPSBOVUxMOwogCW9yaWdw dGUgPSAqcHRlOwotCW9wYSA9IG1pcHNfdGxicGZuX3RvX3BhZGRyKG9yaWdwdGUpOworCW9wYSA9 IFRMQkxPX1BURV9UT19QQShvcmlncHRlKTsKIAogCS8qCiAJICogTWFwcGluZyBoYXMgbm90IGNo YW5nZWQsIG11c3QgYmUgcHJvdGVjdGlvbiBvciB3aXJpbmcgY2hhbmdlLgpAQCAtMTg3Myw3ICsx ODUwLDcgQEAKIAkvKgogCSAqIE5vdyB2YWxpZGF0ZSBtYXBwaW5nIHdpdGggZGVzaXJlZCBwcm90 ZWN0aW9uL3dpcmluZy4KIAkgKi8KLQluZXdwdGUgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwYSkg fCBydyB8IFBURV9WOworCW5ld3B0ZSA9IFRMQkxPX1BBX1RPX1BGTihwYSkgfCBydyB8IFBURV9W OwogCiAJaWYgKGlzX2NhY2hlYWJsZV9tZW0ocGEpKQogCQluZXdwdGUgfD0gUFRFX0NBQ0hFOwpA QCAtMjAzOSw3ICsyMDE2LDcgQEAKIAkvKgogCSAqIE5vdyB2YWxpZGF0ZSBtYXBwaW5nIHdpdGgg Uk8gcHJvdGVjdGlvbgogCSAqLwotCSpwdGUgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwYSkgfCBQ VEVfVjsKKwkqcHRlID0gVExCTE9fUEFfVE9fUEZOKHBhKSB8IFBURV9WOwogCiAJaWYgKGlzX2Nh Y2hlYWJsZV9tZW0ocGEpKQogCQkqcHRlIHw9IFBURV9DQUNIRTsKQEAgLTIwOTIsNyArMjA2OSw3 IEBACiAJCWNwdSA9IFBDUFVfR0VUKGNwdWlkKTsKIAkJc3lzbSA9ICZzeXNtYXBfbG1lbVtjcHVd OwogCQkvKiBTaW5jZSB0aGlzIGlzIGZvciB0aGUgZGVidWdnZXIsIG5vIGxvY2tzIG9yIGFueSBv dGhlciBmdW4gKi8KLQkJbnB0ZSA9IG1pcHNfcGFkZHJfdG9fdGxicGZuKHBhKSB8IFBURV9SVyB8 IFBURV9WIHwgUFRFX0cgfCBQVEVfVyB8IFBURV9DQUNIRTsKKwkJbnB0ZSA9IFRMQkxPX1BBX1RP X1BGTihwYSkgfCBQVEVfUlcgfCBQVEVfViB8IFBURV9HIHwgUFRFX1cgfCBQVEVfQ0FDSEU7CiAJ CXB0ZSA9IHBtYXBfcHRlKGtlcm5lbF9wbWFwLCBzeXNtLT5iYXNlKTsKIAkJKnB0ZSA9IG5wdGU7 CiAJCXN5c20tPnZhbGlkMSA9IDE7CkBAIC0yNDA3LDcgKzIzODQsNyBAQAogCQl9CiAJCSpwdGUg PSBpc19rZXJuZWxfcG1hcChwbWFwKSA/IFBURV9HIDogMDsKIAotCQltID0gUEhZU19UT19WTV9Q QUdFKG1pcHNfdGxicGZuX3RvX3BhZGRyKHRwdGUpKTsKKwkJbSA9IFBIWVNfVE9fVk1fUEFHRShU TEJMT19QVEVfVE9fUEEodHB0ZSkpOwogCQlLQVNTRVJUKG0gIT0gTlVMTCwKIAkJICAgICgicG1h cF9yZW1vdmVfcGFnZXM6IGJhZCB0cHRlICV4IiwgdHB0ZSkpOwogCkBAIC0yODE0LDcgKzI3OTEs NyBAQAogCXZhbCA9IE1JTkNPUkVfSU5DT1JFOwogCWlmICgocHRlICYgUFRFX00pICE9IDApCiAJ CXZhbCB8PSBNSU5DT1JFX01PRElGSUVEIHwgTUlOQ09SRV9NT0RJRklFRF9PVEhFUjsKLQlwYSA9 IG1pcHNfdGxicGZuX3RvX3BhZGRyKHB0ZSk7CisJcGEgPSBUTEJMT19QVEVfVE9fUEEocHRlKTsK IAltYW5hZ2VkID0gcGFnZV9pc19tYW5hZ2VkKHBhKTsKIAlpZiAobWFuYWdlZCkgewogCQkvKgpA QCAtMjg1Niw3ICsyODMzLDcgQEAKIAlwbWFwX2FzaWRfYWxsb2MocG1hcCk7CiAJaWYgKHRkID09 IGN1cnRocmVhZCkgewogCQlQQ1BVX1NFVChzZWdiYXNlLCBwbWFwLT5wbV9zZWd0YWIpOwotCQlN YWNoU2V0UElEKHBtYXAtPnBtX2FzaWRbUENQVV9HRVQoY3B1aWQpXS5hc2lkKTsKKwkJbWlwc193 cl9lbnRyeWhpKHBtYXAtPnBtX2FzaWRbUENQVV9HRVQoY3B1aWQpXS5hc2lkKTsKIAl9CiAKIAlQ Q1BVX1NFVChjdXJwbWFwLCBwbWFwKTsKQEAgLTI5NDgsNyArMjkyNSw3IEBACiAJCQkJCQkJdm1f b2Zmc2V0X3QgcGE7CiAJCQkJCQkJdm1fcGFnZV90IG07CiAKLQkJCQkJCQlwYSA9IG1pcHNfdGxi cGZuX3RvX3BhZGRyKCpwdGUpOworCQkJCQkJCXBhID0gVExCTE9fUEZOX1RPX1BBKCpwdGUpOwog CQkJCQkJCW0gPSBQSFlTX1RPX1ZNX1BBR0UocGEpOwogCQkJCQkJCXByaW50ZigidmE6ICVwLCBw dDogJXAsIGg6ICVkLCB3OiAlZCwgZjogMHgleCIsCiAJCQkJCQkJICAgICh2b2lkICopdmEsCkBA IC0zMDQ0LDcgKzMwMjEsNyBAQAogCSAgICBwbWFwLT5wbV9hc2lkW1BDUFVfR0VUKGNwdWlkKV0u Z2VuID09IFBDUFVfR0VUKGFzaWRfZ2VuZXJhdGlvbikpOwogCWVsc2UgewogCQlpZiAoUENQVV9H RVQobmV4dF9hc2lkKSA9PSBwbWFwX21heF9hc2lkKSB7Ci0JCQlNSVBTX1RCSUFQKCk7CisJCQl0 bGJfaW52YWxpZGF0ZV9hbGxfdXNlcihOVUxMKTsKIAkJCVBDUFVfU0VUKGFzaWRfZ2VuZXJhdGlv biwKIAkJCSAgICAoUENQVV9HRVQoYXNpZF9nZW5lcmF0aW9uKSArIDEpICYgQVNJREdFTl9NQVNL KTsKIAkJCWlmIChQQ1BVX0dFVChhc2lkX2dlbmVyYXRpb24pID09IDApIHsKQEAgLTMxMjQsNyAr MzEwMSw3IEBACiAJCWlmIChjdXJwcm9jICYmIGN1cnByb2MtPnBfdm1zcGFjZSkgewogCQkJcHRl cCA9IHBtYXBfcHRlKCZjdXJwcm9jLT5wX3Ztc3BhY2UtPnZtX3BtYXAsIHZhKTsKIAkJCWlmIChw dGVwKQotCQkJCXBhID0gbWlwc190bGJwZm5fdG9fcGFkZHIoKnB0ZXApIHwKKwkJCQlwYSA9IFRM QkxPX1BURV9UT19QQSgqcHRlcCkgfAogCQkJCSAgICAodmEgJiBQQUdFX01BU0spOwogCQl9CiAJ fSBlbHNlIGlmICh2YSA+PSBNSVBTX0tTRUcwX1NUQVJUICYmCkBAIC0zMTQwLDkgKzMxMTcsMTEg QEAKIAkJaWYgKGtlcm5lbF9wbWFwLT5wbV9hY3RpdmUpIHsKIAkJCS8qIEl0cyBpbnNpZGUgdGhl IHZpcnR1YWwgYWRkcmVzcyByYW5nZSAqLwogCQkJcHRlcCA9IHBtYXBfcHRlKGtlcm5lbF9wbWFw LCB2YSk7Ci0JCQlpZiAocHRlcCkKLQkJCQlwYSA9IG1pcHNfdGxicGZuX3RvX3BhZGRyKCpwdGVw KSB8Ci0JCQkJICAgICh2YSAmIFBBR0VfTUFTSyk7CisJCQlpZiAocHRlcCkgeworCQkJCXJldHVy biAoVExCTE9fUFRFX1RPX1BBKCpwdGVwKSB8CisJCQkJICAgICh2YSAmIFBBR0VfTUFTSykpOwor CQkJfQorCQkJcmV0dXJuICgwKTsKIAkJfQogCX0KIAlyZXR1cm4gcGE7CkBAIC0zMTYwLDYxICsz MTM5LDMgQEAKIAkJfQogCX0KIH0KLQotdm9pZAotcG1hcF9zYXZlX3RsYih2b2lkKQotewotCWlu dCB0bGJubywgY3B1OwotCi0JY3B1ID0gUENQVV9HRVQoY3B1aWQpOwotCi0JZm9yICh0bGJubyA9 IDA7IHRsYm5vIDwgbnVtX3RsYmVudHJpZXM7ICsrdGxibm8pCi0JCU1hY2hUTEJSZWFkKHRsYm5v LCAmdGxic3Rhc2hbY3B1XVt0bGJub10pOwotfQotCi0jaWZkZWYgRERCCi0jaW5jbHVkZSA8ZGRi L2RkYi5oPgotCi1EQl9TSE9XX0NPTU1BTkQodGxiLCBkZGJfZHVtcF90bGIpCi17Ci0JaW50IGNw dSwgdGxibm87Ci0Jc3RydWN0IHRsYiAqdGxiOwotCi0JaWYgKGhhdmVfYWRkcikKLQkJY3B1ID0g KChhZGRyID4+IDQpICUgMTYpICogMTAgKyAoYWRkciAlIDE2KTsKLQllbHNlCi0JCWNwdSA9IFBD UFVfR0VUKGNwdWlkKTsKLQotCWlmIChjcHUgPCAwIHx8IGNwdSA+PSBtcF9uY3B1cykgewotCQlk Yl9wcmludGYoIkludmFsaWQgQ1BVICVkXG4iLCBjcHUpOwotCQlyZXR1cm47Ci0JfSBlbHNlCi0J CWRiX3ByaW50ZigiQ1BVICVkOlxuIiwgY3B1KTsKLQotCWlmIChjcHUgPT0gUENQVV9HRVQoY3B1 aWQpKQotCQlwbWFwX3NhdmVfdGxiKCk7Ci0KLQlmb3IgKHRsYm5vID0gMDsgdGxibm8gPCBudW1f dGxiZW50cmllczsgKyt0bGJubykgewotCQl0bGIgPSAmdGxic3Rhc2hbY3B1XVt0bGJub107Ci0J CWlmICh0bGItPnRsYl9sbzAgJiBQVEVfViB8fCB0bGItPnRsYl9sbzEgJiBQVEVfVikgewotCQkJ cHJpbnRmKCJUTEIgJTJkIHZhZCAweCUwbHggIiwKLQkJCQl0bGJubywgKGxvbmcpKHRsYi0+dGxi X2hpICYgMHhmZmZmZmYwMCkpOwotCQl9IGVsc2UgewotCQkJcHJpbnRmKCJUTEIqJTJkIHZhZCAw eCUwbHggIiwKLQkJCQl0bGJubywgKGxvbmcpKHRsYi0+dGxiX2hpICYgMHhmZmZmZmYwMCkpOwot CQl9Ci0JCXByaW50ZigiMD0weCUwbHggIiwgcGZuX3RvX3ZhZCgobG9uZyl0bGItPnRsYl9sbzAp KTsKLQkJcHJpbnRmKCIlYyIsIHRsYi0+dGxiX2xvMCAmIFBURV9WID8gJ1YnIDogJy0nKTsKLQkJ cHJpbnRmKCIlYyIsIHRsYi0+dGxiX2xvMCAmIFBURV9NID8gJ00nIDogJy0nKTsKLQkJcHJpbnRm KCIlYyIsIHRsYi0+dGxiX2xvMCAmIFBURV9HID8gJ0cnIDogJy0nKTsKLQkJcHJpbnRmKCIgYXRy ICV4ICIsICh0bGItPnRsYl9sbzAgPj4gMykgJiA3KTsKLQkJcHJpbnRmKCIxPTB4JTBseCAiLCBw Zm5fdG9fdmFkKChsb25nKXRsYi0+dGxiX2xvMSkpOwotCQlwcmludGYoIiVjIiwgdGxiLT50bGJf bG8xICYgUFRFX1YgPyAnVicgOiAnLScpOwotCQlwcmludGYoIiVjIiwgdGxiLT50bGJfbG8xICYg UFRFX00gPyAnTScgOiAnLScpOwotCQlwcmludGYoIiVjIiwgdGxiLT50bGJfbG8xICYgUFRFX0cg PyAnRycgOiAnLScpOwotCQlwcmludGYoIiBhdHIgJXggIiwgKHRsYi0+dGxiX2xvMSA+PiAzKSAm IDcpOwotCQlwcmludGYoIiBzej0leCBwaWQ9JXhcbiIsIHRsYi0+dGxiX21hc2ssCi0JCSAgICAg ICAodGxiLT50bGJfaGkgJiAweDAwMDAwMGZmKSk7Ci0JfQotfQotI2VuZGlmCS8qIEREQiAqLwpJ bmRleDogc3lzL21pcHMvbWlwcy9tcF9tYWNoZGVwLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMv bWlwcy9tcF9tYWNoZGVwLmMJKHJldmlzaW9uIDIwOTE5MykKKysrIHN5cy9taXBzL21pcHMvbXBf bWFjaGRlcC5jCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8bWFj aGluZS9od2Z1bmMuaD4KICNpbmNsdWRlIDxtYWNoaW5lL2ludHJfbWFjaGRlcC5oPgogI2luY2x1 ZGUgPG1hY2hpbmUvY2FjaGUuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3RsYi5oPgogCiBzdHJ1Y3Qg cGNiIHN0b3BwY2JzW01BWENQVV07CiAKQEAgLTEyOCw3ICsxMjksNyBAQAogCQkJQ1RSMChLVFJf U01QLCAiSVBJX1NUT1Agb3IgSVBJX1NUT1BfSEFSRCIpOwogCiAJCQlzYXZlY3R4KCZzdG9wcGNi c1tjcHVdKTsKLQkJCXBtYXBfc2F2ZV90bGIoKTsKKwkJCXRsYl9zYXZlKCk7CiAKIAkJCS8qIElu ZGljYXRlIHdlIGFyZSBzdG9wcGVkICovCiAJCQlhdG9taWNfc2V0X2ludCgmc3RvcHBlZF9jcHVz LCBjcHVtYXNrKTsKQEAgLTIzOCw5ICsyMzksOSBAQAogc21wX2luaXRfc2Vjb25kYXJ5KHVfaW50 MzJfdCBjcHVpZCkKIHsKIAkvKiBUTEIgKi8KLQlNaXBzX1NldFdJUkVEKDApOwotCU1pcHNfVExC Rmx1c2gobnVtX3RsYmVudHJpZXMpOwotCU1pcHNfU2V0V0lSRUQoVk1XSVJFRF9FTlRSSUVTKTsK KwltaXBzX3dyX3dpcmVkKDApOworCXRsYl9pbnZhbGlkYXRlX2FsbCgpOworCW1pcHNfd3Jfd2ly ZWQoVk1XSVJFRF9FTlRSSUVTKTsKIAogCS8qCiAJICogV2UgYXNzdW1lIHRoYXQgdGhlIEwxIGNh Y2hlIG9uIHRoZSBBUHMgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUKQEAgLTI1MSw3ICsyNTIsNyBA QAogCiAJbWlwc19zeW5jKCk7CiAKLQlNYWNoU2V0UElEKDApOworCW1pcHNfd3JfZW50cnloaSgw KTsKIAogCXBjcHVfaW5pdChQQ1BVX0FERFIoY3B1aWQpLCBjcHVpZCwgc2l6ZW9mKHN0cnVjdCBw Y3B1KSk7CiAJZHBjcHVfaW5pdChkcGNwdSwgY3B1aWQpOwpJbmRleDogc3lzL21pcHMvbWlwcy9t YWNoZGVwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvbWlwcy9tYWNoZGVwLmMJKHJldmlzaW9u IDIwOTE5MykKKysrIHN5cy9taXBzL21pcHMvbWFjaGRlcC5jCSh3b3JraW5nIGNvcHkpCkBAIC04 OSw2ICs4OSw3IEBACiAjaW5jbHVkZSA8bWFjaGluZS9od2Z1bmMuaD4KICNpbmNsdWRlIDxtYWNo aW5lL2ludHJfbWFjaGRlcC5oPgogI2luY2x1ZGUgPG1hY2hpbmUvbWRfdmFyLmg+CisjaW5jbHVk ZSA8bWFjaGluZS90bGIuaD4KICNpZmRlZiBEREIKICNpbmNsdWRlIDxzeXMva2RiLmg+CiAjaW5j bHVkZSA8ZGRiL2RkYi5oPgpAQCAtMTE4LDcgKzExOSw3IEBACiAvKgogICogRWFjaCBlbnRyeSBp biB0aGUgcGNwdV9zcGFjZVtdIGFycmF5IGlzIGxhaWQgb3V0IGluIHRoZSBmb2xsb3dpbmcgbWFu bmVyOgogICogc3RydWN0IHBjcHUgZm9yIGNwdSAnbicJcGNwdV9zcGFjZVtuXQotICogYm9vdCBz dGFjayBmb3IgY3B1ICduJwlwY3B1X3NwYWNlW25dICsgUEFHRV9TSVpFICogMiAtIFNUQVJUX0ZS QU1FCisgKiBib290IHN0YWNrIGZvciBjcHUgJ24nCXBjcHVfc3BhY2Vbbl0gKyBQQUdFX1NJWkUg KiAyIC0gQ0FMTEZSQU1FX1NJWgogICoKICAqIE5vdGUgdGhhdCB0aGUgYm9vdCBzdGFjayBncm93 cyBkb3dud2FyZHMgYW5kIHdlIGFzc3VtZSB0aGF0IHdlIG5ldmVyCiAgKiB1c2UgZW5vdWdoIHN0 YWNrIHNwYWNlIHRvIHRyYW1wbGUgb3ZlciB0aGUgJ3N0cnVjdCBwY3B1JyB0aGF0IGlzIGF0CkBA IC00MTMsMjAgKzQxNCwxNyBAQAogbWlwc19wY3B1X3RsYl9pbml0KHN0cnVjdCBwY3B1ICpwY3B1 KQogewogCXZtX3BhZGRyX3QgcGE7Ci0Jc3RydWN0IHRsYiB0bGI7Ci0JaW50IGxvYml0czsKKwlw dF9lbnRyeV90IHB0ZTsKIAogCS8qCiAJICogTWFwIHRoZSBwY3B1IHN0cnVjdHVyZSBhdCB0aGUg dmlydHVhbCBhZGRyZXNzICdwY3B1cCcuCiAJICogV2UgdXNlIGEgd2lyZWQgdGxiIGluZGV4IHRv IGRvIHRoaXMgb25lLXRpbWUgbWFwcGluZy4KIAkgKi8KLQltZW1zZXQoJnRsYiwgMCwgc2l6ZW9m KHRsYikpOwogCXBhID0gdnRvcGh5cyhwY3B1KTsKLQlsb2JpdHMgPSBQVEVfUlcgfCBQVEVfViB8 IFBURV9HIHwgUFRFX0NBQ0hFOwotCXRsYi50bGJfaGkgPSAodm1fb2Zmc2V0X3QpcGNwdXA7Ci0J dGxiLnRsYl9sbzAgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwYSkgfCBsb2JpdHM7Ci0JdGxiLnRs Yl9sbzEgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwYSArIFBBR0VfU0laRSkgfCBsb2JpdHM7Ci0J TWlwc19UTEJXcml0ZUluZGV4ZWQoUENQVV9UTEJfRU5UUlksICZ0bGIpOworCXB0ZSA9IFBURV9S VyB8IFBURV9WIHwgUFRFX0cgfCBQVEVfQ0FDSEU7CisJdGxiX2luc2VydF93aXJlZChQQ1BVX1RM Ql9FTlRSWSwgKHZtX29mZnNldF90KXBjcHVwLAorCQkJIFRMQkxPX1BBX1RPX1BGTihwYSkgfCBw dGUsCisJCQkgVExCTE9fUEFfVE9fUEZOKHBhICsgUEFHRV9TSVpFKSB8IHB0ZSk7CiB9CiAjZW5k aWYKIApJbmRleDogc3lzL21pcHMvbWlwcy90cmFwLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMv bWlwcy90cmFwLmMJKHJldmlzaW9uIDIwOTE5MykKKysrIHN5cy9taXBzL21pcHMvdHJhcC5jCSh3 b3JraW5nIGNvcHkpCkBAIC0zOTYsNyArMzk2LDcgQEAKIAkJCX0KIAkJCSpwdGUgfD0gbWlwc19w Z19tX2JpdCgpOwogCQkJcG1hcF91cGRhdGVfcGFnZShrZXJuZWxfcG1hcCwgdHJhcGZyYW1lLT5i YWR2YWRkciwgKnB0ZSk7Ci0JCQlwYSA9IG1pcHNfdGxicGZuX3RvX3BhZGRyKCpwdGUpOworCQkJ cGEgPSBUTEJMT19QVEVfVE9fUEEoKnB0ZSk7CiAJCQlpZiAoIXBhZ2VfaXNfbWFuYWdlZChwYSkp CiAJCQkJcGFuaWMoInRyYXA6IGt0bGJtb2Q6IHVubWFuYWdlZCBwYWdlIik7CiAJCQlwbWFwX3Nl dF9tb2RpZmllZChwYSk7CkBAIC00MzUsNyArNDM1LDcgQEAKIAkJCX0KIAkJCSpwdGUgfD0gbWlw c19wZ19tX2JpdCgpOwogCQkJcG1hcF91cGRhdGVfcGFnZShwbWFwLCB0cmFwZnJhbWUtPmJhZHZh ZGRyLCAqcHRlKTsKLQkJCXBhID0gbWlwc190bGJwZm5fdG9fcGFkZHIoKnB0ZSk7CisJCQlwYSA9 IFRMQkxPX1BURV9UT19QQSgqcHRlKTsKIAkJCWlmICghcGFnZV9pc19tYW5hZ2VkKHBhKSkKIAkJ CQlwYW5pYygidHJhcDogdXRsYm1vZDogdW5tYW5hZ2VkIHBhZ2UiKTsKIAkJCXBtYXBfc2V0X21v ZGlmaWVkKHBhKTsK --e0cb4e88758397b495048911b0d9--