From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29721 invoked by alias); 15 Aug 2006 00:30:00 -0000 Received: (qmail 29709 invoked by uid 22791); 15 Aug 2006 00:30:00 -0000 X-Spam-Check-By: sourceware.org Received: from nf-out-0910.google.com (HELO nf-out-0910.google.com) (64.233.182.189) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 15 Aug 2006 00:29:56 +0000 Received: by nf-out-0910.google.com with SMTP id a27so122141nfc for ; Mon, 14 Aug 2006 17:29:53 -0700 (PDT) Received: by 10.48.163.19 with SMTP id l19mr489803nfe; Mon, 14 Aug 2006 17:29:48 -0700 (PDT) Received: by 10.78.178.3 with HTTP; Mon, 14 Aug 2006 17:29:48 -0700 (PDT) Message-ID: <5d6222a80608141729w5a0b9d26rcbd1cce7189ac544@mail.gmail.com> Date: Tue, 15 Aug 2006 01:48:00 -0000 From: "Glauber de Oliveira Costa" To: binutils@sourceware.org, "Richard Earnshaw" , "Alexandre Oliva" , aldenor@gmail.com Subject: [PATCH] Support for Thread Local Storage Descriptors in ARM platform MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_17939_12186692.1155601788625" Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2006-08/txt/msg00167.txt.bz2 ------=_Part_17939_12186692.1155601788625 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 894 Hello All, Troughout the last months, Alexandre Oliva and I developed an ABI extension to allow ARM binaries to benefit from his newly devised TLS Descriptor method for accessing TLS variables (http://www.lsd.ic.unicamp.br/~aoliva/writeups/TLS/paper-gcc2006.pdf). Our proposed ABI can be found at http://www.lsd.ic.unicamp.br/~aoliva/writeups/TLS/RFC-TLSDESC-ARM.txt , and a paper describing the ARM implementation, to be presented at Linux Kongress in the first week of September at http://www.lsd.ic.unicamp.br/~oliva/writeups/TLS/paper-lk2006.pdf. We there describes some results we've got, that indicates a speedup of more than 2 times for the most common case. Attached to this message, follows the GNU linker and assembler part of the work. Please, feel free to send me feedbacks on the implementation, and consider it for merging. -- "Free as in Freedom" Glauber de Oliveira Costa. ------=_Part_17939_12186692.1155601788625 Content-Type: application/octet-stream; name=patch-binutils-final Content-Transfer-Encoding: base64 X-Attachment-Id: f_eqvja6p0 Content-Disposition: attachment; filename="patch-binutils-final" Content-length: 85352 SW5kZXg6IGJmZC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9zcmMvc3JjL2JmZC9DaGFuZ2VMb2csdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMzU4OApkaWZmIC11IC1wIC1yMS4zNTg4IENoYW5n ZUxvZwotLS0gYmZkL0NoYW5nZUxvZwkxNCBBdWcgMjAwNiAxMjoxOToyMCAt MDAwMAkxLjM1ODgKKysrIGJmZC9DaGFuZ2VMb2cJMTQgQXVnIDIwMDYgMjE6 MTY6MzkgLTAwMDAKQEAgLTEsMyArMSw0OCBAQAorMjAwNi0wOC0xNCAgR2xh dWJlciBkZSBPbGl2ZWlyYSBDb3N0YSAgPGdsb21tZXJAZ21haWwuY29tPgor CisJKiBBZGRlZCBzdXBwb3J0IGZvciBnbnUgZXh0ZW5zaW9ucyBmb3IgVExT IGhhbmRsaW5nCisJKiBiZmQtaW4yLmggKEJGRF9SRUxPQ19BUk1fVExTX0dP VERFU0MpOiBBZGRlZCBuZXcgcmVsb2NhdGlvbi4KKwkoQkZEX1JFTE9DX0FS TV9UTFNfQ0FMTCk6IExpa2V3aXNlLgorCShCRkRfUkVMT0NfQVJNX1RMU19E RVNDU0VRKTogTGlrZXdpc2UuCisJKEJGRF9SRUxPQ19BUk1fVExTX0RFU0Mp OiBMaWtld2lzZS4KKwkqIGxpYmJmZC5oIDogTGlrZXdpc2UuCisJKiByZWxv Yy5jIDogTGlrZXdpc2UuCisJKiBlbGYzMi1hcm0uYzogKGVsZjMyX2FybV9o b3d0b190YWJsZV8xKTogQWRkZWQgaG93dG8gZm9yIG5ldyByZWxvY2F0aW9u cy4KKwkoZWxmMzJfYXJtX3JlbG9jX21hcCk6IEFkZGVkIG1hcHBpbmdzIGZv ciBuZXcgcmVsb2NhdGlvbnMuCisJKHRsc190cmFtcG9saW5lKTogQWRkZWQu CisJKGRsX3Rsc2Rlc2NfbGF6eV90cmFtcG9saW5lKTogTGlrZXdpc2UuCisJ KGVsZjMyX2FybV9vYmpfdGRhdGEpOiBBZGRlZCBsb2NhbF90bHNkZXNjX2dv dGVudCwgd2hpY2ggaXMgYWNjZXNzZWQKKwl0cm91Z2ggLi4uIAorCShlbGYz Ml9hcm1fbG9jYWxfdGxzZGVzY19nb3RlbnQpOiBOZXcgbWFjcm8gYWRkZWQu CisJKEdPVF9UTFNfREVTQyk6IE5ldyBkZWZpbml0aW9uLgorCShHT1RfVExT X0dEX0FOWV9QKTogTmV3IG1hY3JvLCBjaGVja3MgZm9yIG9uZSBvZiBHRCBU TFMgbW9kZWxzLgorCShlbGYzMl9hcm1fbGlua19oYXNoX2VudHJ5KTogQWRk ZWQgdGxzZGVzY19nb3QuCisJKGVsZjMyX2FybV9jb21wdXRlX2p1bXBfdGFi bGVfc2l6ZSk6IE5ldyBtYWNyby4KKwkoZWxmMzJfYXJtX2xpbmtfaGFzaF90 YWJsZSk6IEFkZGVkIG5leHRfdGxzX2Rlc2NfaW5kZXgsIAorCW51bV90bHNf ZGVzYywgZHRfdGxzZGVzY19wbHQsIGR0X3Rsc2Rlc2NfZ290ICwgdGxzX3Ry YW1wb2xpbmUgYW5kCisJc2dvdHBsdF9qdW1wX3RhYmxlX3NpemUuCisJKGVs ZjMyX2FybV9saW5rX2hhc2hfbmV3ZnVuYyk6IE5ldyBpbml0aWFsaXphdGlv bnMuCisJKGVsZjMyX2FybV9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogTGlr ZXdpc2UuCisJKGVsZjMyX2FybV90bHNfdHJhbnNpdGlvbik6IE5ldyBmdW5j dGlvbi4gIENoZWNrcyByZWxheGF0aW9uCisJcG9zc2liaWxpdGVzLgorCShl bGYzMl9hcm1fdGxzX3JlbGF4KTogTmV3IGZ1bmN0aW9uLiAgUGVyZm9ybXMg c3RlcHMgbmVjZXNzYXJpZXMgZm9yCisJcmVsYXhpbmcgYSBUTFMgY29kZSBz ZXF1ZW5jZS4KKwkoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBE ZXBsb3kgZHluYW1pYyByZWxvY2F0aW9uIGZvciB0aGUgVExTCisJZ251IGV4 dGVuc2lvbnMuICBHZW5lcmF0ZSBSX0FSTV9UTFNfREVTQywgYWRqdXN0IGFk ZGVuZCBmb3IKKwlSX0FSTV9UTFNfQ0FMTCwgYW5kIGZpeCBhZGRlbmQgZm9y IFJfQVJNX1RMU19HT1RERVNDLgorCShJU19BUk1fVExTX1JFTE9DKTogQWRk IG5ldyByZWxvY2F0aW9ucyB0byBjaGVjay4KKwkoSVNfQVJNX1RMU19HTlVf UkVMT0MpOiBOZXcgY2hlY2suCisJKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0 aW9uKTogVHJ5IHRvIHJlbGF4IHRoZSBjb2RlIHNlcXVlbmNlLCBhbmQgY2Fs bAorCWVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlIG9ubHkgaWYgdGhl cmUgaXMgc3RpbGwgd29yayB0byBiZSBkb25lLgorCShlbGYzMl9hcm1fY2hl Y2tfcmVsb2NzKTogU2V0dGxlIHVwIG5lZWRlZCBzdGVwcyBmb3IgbmV3IHJl bG9jYXRpb25zCisJcGxhY2VtZW50IGFuZCBoYW5kbGluZy4KKwkoYWxsb2Nh dGVfZHlucmVsb2NzKTogRmluZCBhIHBsYWNlIGZvciBSX0FSTV9UTFNfREVT Qy4KKwkoZWxmMzJfYXJtX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3 aXNlLiAgQWxzbyBjcmVhdGVzIHRoZSBsYXp5IAorCXRyYW1wb2xpbmUgd2hl bmV2ZXIgbmVlZGVkLiAKKwkoZWxmMzJfYXJtX2Fsd2F5c19zaXplX3NlY3Rp b25zKTogQ3JlYXRlIGVudHJ5IGZvciBfVExTX01PRFVMRV9CQVNFXworCShl bGYzMl9hcm1fZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRmlsbCB0aGUgY29u dGVudHMgb2YgZHluYW1pYyB0YWJsZQorCWVudHJpZXMgYW5kIHNldHMgdXAg LnBsdCBlbnRyaWVzIGZvciB0aGUgdHJhbXBvbGluZXMuCisKIDIwMDYtMDgt MTQgIFRoaWVtbyBTZXVmZXIgIDx0aHNAbWlwcy5jb20+CiAKIAkqIGVsZnh4 LW1pcHMuYyAoX2JmZF9taXBzX2VsZl9zeW1ib2xfcHJvY2Vzc2luZywKSW5k ZXg6IGJmZC9iZmQtaW4yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2JmZC9iZmQtaW4yLmgsdgpyZXRyaWV2aW5n IHJldmlzaW9uIDEuMzk3CmRpZmYgLXUgLXAgLXIxLjM5NyBiZmQtaW4yLmgK LS0tIGJmZC9iZmQtaW4yLmgJMTkgSnVsIDIwMDYgMDE6NTA6MjMgLTAwMDAJ MS4zOTcKKysrIGJmZC9iZmQtaW4yLmgJMTQgQXVnIDIwMDYgMjE6MTY6NTUg LTAwMDAKQEAgLTI5MzYsNiArMjkzNiwxMCBAQCBwYy1yZWxhdGl2ZSBvciBz b21lIGZvcm0gb2YgR09ULWluZGlyZWN0CiAgIEJGRF9SRUxPQ19BUk1fVExT X1RQT0ZGMzIsCiAgIEJGRF9SRUxPQ19BUk1fVExTX0lFMzIsCiAgIEJGRF9S RUxPQ19BUk1fVExTX0xFMzIsCisgIEJGRF9SRUxPQ19BUk1fVExTX0dPVERF U0MsCisgIEJGRF9SRUxPQ19BUk1fVExTX0NBTEwsCisgIEJGRF9SRUxPQ19B Uk1fVExTX0RFU0NTRVEsCisgIEJGRF9SRUxPQ19BUk1fVExTX0RFU0MsCiAK IC8qIEFSTSBncm91cCByZWxvY2F0aW9ucy4gICovCiAgIEJGRF9SRUxPQ19B Uk1fQUxVX1BDX0cwX05DLApJbmRleDogYmZkL2VsZjMyLWFybS5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9iZmQv ZWxmMzItYXJtLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuODMKZGlmZiAt dSAtcCAtcjEuODMgZWxmMzItYXJtLmMKLS0tIGJmZC9lbGYzMi1hcm0uYwky MyBKdW4gMjAwNiAwMjo1ODowMCAtMDAwMAkxLjgzCisrKyBiZmQvZWxmMzIt YXJtLmMJMTQgQXVnIDIwMDYgMjE6MTc6NTIgLTAwMDAKQEAgLTEzNTEsMTAg KzEzNTEsNjEgQEAgc3RhdGljIHJlbG9jX2hvd3RvX3R5cGUgZWxmMzJfYXJt X2hvd3RvXwogCSAweDA0MGY3MGZmLAkJLyogZHN0X21hc2sgKi8KIAkgRkFM U0UpLAkJLyogcGNyZWxfb2Zmc2V0ICovCiAKLSAgRU1QVFlfSE9XVE8gKDkw KSwgICAvKiB1bmFsbG9jYXRlZCAqLwotICBFTVBUWV9IT1dUTyAoOTEpLAot ICBFTVBUWV9IT1dUTyAoOTIpLAotICBFTVBUWV9IT1dUTyAoOTMpLAorICBI T1dUTyAoUl9BUk1fVExTX0dPVERFU0MsCS8qIHR5cGUgKi8KKwkgMCwJCQkv KiByaWdodHNoaWZ0ICovCisJIDIsCQkJLyogc2l6ZSAoMCA9IGJ5dGUsIDEg PSBzaG9ydCwgMiA9IGxvbmcpICovCisJIDMyLAkJCS8qIGJpdHNpemUgKi8K KwkgRkFMU0UsCQkJLyogcGNfcmVsYXRpdmUgKi8KKwkgMCwJCQkvKiBiaXRw b3MgKi8KKwkgY29tcGxhaW5fb3ZlcmZsb3dfYml0ZmllbGQsLyogY29tcGxh aW5fb25fb3ZlcmZsb3cgKi8KKwkgTlVMTCwJCQkvKiBzcGVjaWFsX2Z1bmN0 aW9uICovCisJICJSX0FSTV9UTFNfR09UREVTQyIsCS8qIG5hbWUgKi8KKwkg VFJVRSwJCQkvKiBwYXJ0aWFsX2lucGxhY2UgKi8KKwkgMHhmZmZmZmZmZiwJ CS8qIHNyY19tYXNrICovCisJIDB4ZmZmZmZmZmYsCQkvKiBkc3RfbWFzayAq LworCSBGQUxTRSksCQkvKiBwY3JlbF9vZmZzZXQgKi8KKworICBIT1dUTyAo Ul9BUk1fVExTX0NBTEwsCS8qIHR5cGUgKi8KKwkgMCwJCQkvKiByaWdodHNo aWZ0ICovCisJIDIsCQkJLyogc2l6ZSAoMCA9IGJ5dGUsIDEgPSBzaG9ydCwg MiA9IGxvbmcpICovCisJIDI0LAkJCS8qIGJpdHNpemUgKi8KKwkgRkFMU0Us CQkJLyogcGNfcmVsYXRpdmUgKi8KKwkgMCwJCQkvKiBiaXRwb3MgKi8KKwkg Y29tcGxhaW5fb3ZlcmZsb3dfZG9udCwvKiBjb21wbGFpbl9vbl9vdmVyZmxv dyAqLworCSBiZmRfZWxmX2dlbmVyaWNfcmVsb2MsCS8qIHNwZWNpYWxfZnVu Y3Rpb24gKi8KKwkgIlJfQVJNX1RMU19DQUxMIiwJLyogbmFtZSAqLworCSBG QUxTRSwJCQkvKiBwYXJ0aWFsX2lucGxhY2UgKi8KKwkgMHgwMGZmZmZmZiwJ CS8qIHNyY19tYXNrICovCisJIDB4MDBmZmZmZmYsCQkvKiBkc3RfbWFzayAq LworCSBGQUxTRSksCQkvKiBwY3JlbF9vZmZzZXQgKi8KKworICBIT1dUTyAo Ul9BUk1fVExTX0RFU0NTRVEsCS8qIHR5cGUgKi8KKwkgMCwJCQkvKiByaWdo dHNoaWZ0ICovCisJIDIsCQkJLyogc2l6ZSAoMCA9IGJ5dGUsIDEgPSBzaG9y dCwgMiA9IGxvbmcpICovCisJIDAsCQkJLyogYml0c2l6ZSAqLworCSBGQUxT RSwJCQkvKiBwY19yZWxhdGl2ZSAqLworCSAwLAkJCS8qIGJpdHBvcyAqLwor CSBjb21wbGFpbl9vdmVyZmxvd19iaXRmaWVsZCwvKiBjb21wbGFpbl9vbl9v dmVyZmxvdyAqLworCSBiZmRfZWxmX2dlbmVyaWNfcmVsb2MsCS8qIHNwZWNp YWxfZnVuY3Rpb24gKi8KKwkgIlJfQVJNX1RMU19ERVNDU0VRIiwJLyogbmFt ZSAqLworCSBGQUxTRSwJCQkvKiBwYXJ0aWFsX2lucGxhY2UgKi8KKwkgMHgw MDAwMDAwMCwJCS8qIHNyY19tYXNrICovCisJIDB4MDAwMDAwMDAsCQkvKiBk c3RfbWFzayAqLworCSBGQUxTRSksCQkvKiBwY3JlbF9vZmZzZXQgKi8KKwor ICBIT1dUTyAoUl9BUk1fVExTX0RFU0MsCS8qIHR5cGUgKi8KKwkgMCwJCQkv KiByaWdodHNoaWZ0ICovCisJIDIsCQkJLyogc2l6ZSAoMCA9IGJ5dGUsIDEg PSBzaG9ydCwgMiA9IGxvbmcpICovCisJIDMyLAkJCS8qIGJpdHNpemUgKi8K KwkgRkFMU0UsCQkJLyogcGNfcmVsYXRpdmUgKi8KKwkgMCwJCQkvKiBiaXRw b3MgKi8KKwkgY29tcGxhaW5fb3ZlcmZsb3dfYml0ZmllbGQsLyogY29tcGxh aW5fb25fb3ZlcmZsb3cgKi8KKwkgYmZkX2VsZl9nZW5lcmljX3JlbG9jLAkv KiBzcGVjaWFsX2Z1bmN0aW9uICovCisJICJSX0FSTV9UTFNfREVTQyIsCS8q IG5hbWUgKi8KKwkgRkFMU0UsCQkJLyogcGFydGlhbF9pbnBsYWNlICovCisJ IDB4ZmZmZmZmZmYsCQkvKiBzcmNfbWFzayAqLworCSAweGZmZmZmZmZmLAkJ LyogZHN0X21hc2sgKi8KKwkgRkFMU0UpLAkJLyogcGNyZWxfb2Zmc2V0ICov CiAKICAgSE9XVE8gKFJfQVJNX1BMVDMyX0FCUywJLyogdHlwZSAqLwogCSAw LAkJCS8qIHJpZ2h0c2hpZnQgKi8KQEAgLTE3MjgsNiArMTc3OSwxMCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGVsZjMyX2FybV9yZWxvY19tYXAgCiAgICAg e0JGRF9SRUxPQ19BUk1fUFJFTDMxLAkgICAgIFJfQVJNX1BSRUwzMX0sCiAg ICAge0JGRF9SRUxPQ19BUk1fVEFSR0VUMiwJICAgICBSX0FSTV9UQVJHRVQy fSwKICAgICB7QkZEX1JFTE9DX0FSTV9QTFQzMiwgICAgICAgICAgICBSX0FS TV9QTFQzMn0sCisgICAge0JGRF9SRUxPQ19BUk1fVExTX0dPVERFU0MsICAg ICAgUl9BUk1fVExTX0dPVERFU0N9LAorICAgIHtCRkRfUkVMT0NfQVJNX1RM U19DQUxMLCAgICAgICAgIFJfQVJNX1RMU19DQUxMfSwKKyAgICB7QkZEX1JF TE9DX0FSTV9UTFNfREVTQ1NFUSwgICAgICBSX0FSTV9UTFNfREVTQ1NFUX0s CisgICAge0JGRF9SRUxPQ19BUk1fVExTX0RFU0MsICAgICAgICAgUl9BUk1f VExTX0RFU0N9LAogICAgIHtCRkRfUkVMT0NfQVJNX1RMU19HRDMyLAkgICAg IFJfQVJNX1RMU19HRDMyfSwKICAgICB7QkZEX1JFTE9DX0FSTV9UTFNfTERP MzIsCSAgICAgUl9BUk1fVExTX0xETzMyfSwKICAgICB7QkZEX1JFTE9DX0FS TV9UTFNfTERNMzIsCSAgICAgUl9BUk1fVExTX0xETTMyfSwKQEAgLTE4ODAs NiArMTkzNSwyNSBAQCB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBpbnNu MTY7CiAgICBzZWN0aW9uLiAgKi8KICNkZWZpbmUgRUxGX0RZTkFNSUNfSU5U RVJQUkVURVIgICAgICIvdXNyL2xpYi9sZC5zby4xIgogCitzdGF0aWMgY29u c3QgdW5zaWduZWQgbG9uZyB0bHNfdHJhbXBvbGluZSBbXSA9CisgIHsKKyAg ICAweGUwOGUwMDAwLAkJLyogYWRkIHIwLCBsciwgcjAgKi8KKyAgICAweGU1 OTAxMDA0LAkJLyogbGRyIHIxLCBbcjAsIzRdICovCisgICAgMHhlMTJmZmYx MSwJCS8qIGJ4IHIxICovCisgIH07CisKK3N0YXRpYyBjb25zdCB1bnNpZ25l ZCBsb25nIGRsX3Rsc2Rlc2NfbGF6eV90cmFtcG9saW5lIFtdID0KKyAgewor ICAgIDB4ZTkyZDAwMDQsIC8qICAgICAgIHN0bWRiICAgc3AhLCB7cjJ9ICov CisgICAgMHhlNTlmMjAwYywgLyogICAgICAgbGRyICAgICByMiwgW3BjLCAj Lkx0MCAtIC4gLSA4XSAqLworICAgIDB4ZTU5ZjEwMGMsIC8qICAgICAgIGxk ciAgICAgcjEsIFtwYywgIy5MdDEgLSAuIC0gOF0gKi8KKyAgICAweGU3OWYy MDAyLCAvKiAuTDA6ICBsZHIgICAgIHIyLCBbcGMsIHIyXSovCisgICAgMHhl MDhmMTAwMSwgLyogLkwxOiAgYWRkICAgICByMSwgcGMsIHIxICovIAorICAg IDB4ZTEyZmZmMTIsIC8qICAgICAgIGJ4ICAgICAgcjIgKi8KKyAgICAweDAw MDAwMDAwLCAvKiAuTHQwOiAud29yZCAgX0dMT0JBTF9PRkZTRVRfVEFCTEVf IC0gLkwwIC0gOCArIAorCQkgICAJCQlkbF90bHNkZXNjX2xhenlfcmVzb2x2 ZXIoR09UKSAgICovCisgICAgMHgwMDAwMDAwMCwgLyogLkx0MTogLndvcmQg IF9HTE9CQUxfT0ZGU0VUX1RBQkxFXyAtIC5MMSAtIDggKi8gCisgIH07IAog I2lmZGVmIEZPVVJfV09SRF9QTFQKIAogLyogVGhlIGZpcnN0IGVudHJ5IGlu IGEgcHJvY2VkdXJlIGxpbmthZ2UgdGFibGUgbG9va3MgbGlrZQpAQCAtMjAy NSw2ICsyMDk5LDkgQEAgc3RydWN0IGVsZjMyX2FybV9vYmpfdGRhdGEKICAg LyogdGxzX3R5cGUgZm9yIGVhY2ggbG9jYWwgZ290IGVudHJ5LiAgKi8KICAg Y2hhciAqbG9jYWxfZ290X3Rsc190eXBlOwogCisgIC8qIEdPVFBMVCBlbnRy aWVzIGZvciBUTFMgZGVzY3JpcHRvcnMuICAqLworICBiZmRfdm1hICpsb2Nh bF90bHNkZXNjX2dvdGVudDsKKwogICBhZWFiaV9hdHRyaWJ1dGUga25vd25f ZWFiaV9hdHRyaWJ1dGVzW05VTV9LTk9XTl9BVFRSSUJVVEVTXTsKICAgYWVh YmlfYXR0cmlidXRlX2xpc3QgKm90aGVyX2VhYmlfYXR0cmlidXRlczsKIH07 CkBAIC0yMDM1LDYgKzIxMTIsOSBAQCBzdHJ1Y3QgZWxmMzJfYXJtX29ial90 ZGF0YQogI2RlZmluZSBlbGYzMl9hcm1fbG9jYWxfZ290X3Rsc190eXBlKGFi ZmQpIFwKICAgKGVsZjMyX2FybV90ZGF0YSAoYWJmZCktPmxvY2FsX2dvdF90 bHNfdHlwZSkKIAorI2RlZmluZSBlbGYzMl9hcm1fbG9jYWxfdGxzZGVzY19n b3RlbnQoYWJmZCkgXAorICAoZWxmMzJfYXJtX3RkYXRhIChhYmZkKS0+bG9j YWxfdGxzZGVzY19nb3RlbnQpCisKIHN0YXRpYyBiZmRfYm9vbGVhbgogZWxm MzJfYXJtX21rb2JqZWN0IChiZmQgKmFiZmQpCiB7CkBAIC0yMDkxLDcgKzIx NzEsMTQgQEAgc3RydWN0IGVsZjMyX2FybV9saW5rX2hhc2hfZW50cnkKICNk ZWZpbmUgR09UX05PUk1BTAkxCiAjZGVmaW5lIEdPVF9UTFNfR0QJMgogI2Rl ZmluZSBHT1RfVExTX0lFCTQKKyNkZWZpbmUgR09UX1RMU19HREVTQwk4Cisj ZGVmaW5lIEdPVF9UTFNfR0RfQU5ZX1AodHlwZSkJCQkJCQlcCisgICgodHlw ZSAmIEdPVF9UTFNfR0QpIHx8ICh0eXBlICYgR09UX1RMU19HREVTQykpCiAg ICAgdW5zaWduZWQgY2hhciB0bHNfdHlwZTsKKworICAvKiBPZmZzZXQgb2Yg dGhlIEdPVFBMVCBlbnRyeSByZXNlcnZlZCBmb3IgdGhlIFRMUyBkZXNjcmlw dG9yLAorICAgICBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBqdW1wIHRh YmxlLiAgKi8KKyAgYmZkX3ZtYSB0bHNkZXNjX2dvdDsKICAgfTsKIAogLyog VHJhdmVyc2UgYW4gYXJtIEVMRiBsaW5rZXIgaGFzaCB0YWJsZS4gICovCkBA IC0yMTA1LDYgKzIxOTIsOSBAQCBzdHJ1Y3QgZWxmMzJfYXJtX2xpbmtfaGFz aF9lbnRyeQogI2RlZmluZSBlbGYzMl9hcm1faGFzaF90YWJsZShpbmZvKSBc CiAgICgoc3RydWN0IGVsZjMyX2FybV9saW5rX2hhc2hfdGFibGUgKikgKChp bmZvKS0+aGFzaCkpCiAKKyNkZWZpbmUgZWxmMzJfYXJtX2NvbXB1dGVfanVt cF90YWJsZV9zaXplKGh0YWIpIFwKKyAgKChodGFiKS0+bmV4dF90bHNfZGVz Y19pbmRleCAqIDQpCisKIC8qIEFSTSBFTEYgbGlua2VyIGhhc2ggdGFibGUu ICAqLwogc3RydWN0IGVsZjMyX2FybV9saW5rX2hhc2hfdGFibGUKICAgewpA QCAtMjE1MSw2ICsyMjQxLDEyIEBAIHN0cnVjdCBlbGYzMl9hcm1fbGlua19o YXNoX3RhYmxlCiAgICAgLyogVHJ1ZSBpZiB0aGUgdGFyZ2V0IHVzZXMgUkVM IHJlbG9jYXRpb25zLiAgKi8KICAgICBpbnQgdXNlX3JlbDsKIAorICAgIC8q IFRoZSBpbmRleCBvZiB0aGUgbmV4dCB1bnVzZWQgUl9BUk1fVExTX0RFU0Mg c2xvdCBpbiAucmVsLnBsdC4gICovCisgICAgYmZkX3ZtYSBuZXh0X3Rsc19k ZXNjX2luZGV4OworCisgICAgLyogSG93IG1hbnkgUl9BUk1fVExTX0RFU0Mg cmVsb2NhdGlvbnMgd2VyZSBnZW5lcmF0ZWQgc28gZmFyICovCisgICAgYmZk X3ZtYSBudW1fdGxzX2Rlc2M7CisgICAgICAKICAgICAvKiBTaG9ydC1jdXRz IHRvIGdldCB0byBkeW5hbWljIGxpbmtlciBzZWN0aW9ucy4gICovCiAgICAg YXNlY3Rpb24gKnNnb3Q7CiAgICAgYXNlY3Rpb24gKnNnb3RwbHQ7CkBAIC0y MTYzLDYgKzIyNTksMTkgQEAgc3RydWN0IGVsZjMyX2FybV9saW5rX2hhc2hf dGFibGUKICAgICAvKiBUaGUgKHVubG9hZGVkIGJ1dCBpbXBvcnRhbnQpIFZ4 V29ya3MgLnJlbGEucGx0LnVubG9hZGVkIHNlY3Rpb24uICAqLwogICAgIGFz ZWN0aW9uICpzcmVscGx0MjsKIAorICAgLyogVGhlIG9mZnNldCBpbnRvIHNw bHQgb2YgdGhlIFBMVCBlbnRyeSBmb3IgdGhlIFRMUyBkZXNjcmlwdG9yCisg ICAgKiByZXNvbHZlci4gIFNwZWNpYWwgdmFsdWVzIGFyZSAwLCBpZiBub3Qg bmVjZXNzYXJ5IChvciBub3QgZm91bmQKKyAgICAqIHRvIGJlIG5lY2Vzc2Fy eSB5ZXQpLCBhbmQgLTEgaWYgbmVlZGVkIGJ1dCBub3QgZGV0ZXJtaW5lZAor ICAgICogeWV0LiAgKi8KKyAgICBiZmRfdm1hIGR0X3Rsc2Rlc2NfcGx0Owor CisgICAvKiBUaGUgb2Zmc2V0IGludG8gc2dvdCBvZiB0aGUgR09UIGVudHJ5 IHVzZWQgYnkgdGhlIFBMVCBlbnRyeQorICAgICogYWJvdmUuICAqLworICAg IGJmZF92bWEgZHRfdGxzZGVzY19nb3Q7ICAgIAorCisgICAgLyogT2Zmc2V0 IGluIC5wbHQgc2VjdGlvbiBvZiB0bHNfdHJhbXBvbGluZSAqLworICAgIGJm ZF92bWEgdGxzX3RyYW1wb2xpbmU7CisgICAgCiAgICAgLyogRGF0YSBmb3Ig Ul9BUk1fVExTX0xETTMyIHJlbG9jYXRpb25zLiAgKi8KICAgICB1bmlvbiB7 CiAgICAgICBiZmRfc2lnbmVkX3ZtYSByZWZjb3VudDsKQEAgLTIxNzQsNiAr MjI4MywxMCBAQCBzdHJ1Y3QgZWxmMzJfYXJtX2xpbmtfaGFzaF90YWJsZQog CiAgICAgLyogRm9yIGNvbnZlbmllbmNlIGluIGFsbG9jYXRlX2R5bnJlbG9j cy4gICovCiAgICAgYmZkICogb2JmZDsKKyAgICAKKyAgICAvKiBUaGUgYW1v dW50IG9mIHNwYWNlIHVzZWQgYnkgdGhlIHJlc2VydmVkIHBvcnRpb24gb2Yg dGhlIHNnb3RwbHQKKyAgICAgKiBzZWN0aW9uLCBwbHVzIHdoYXRldmVyIHNw YWNlIGlzIHVzZWQgYnkgdGhlIGp1bXAgc2xvdHMuICAqLworICAgIGJmZF92 bWEgc2dvdHBsdF9qdW1wX3RhYmxlX3NpemU7CiAgIH07CiAKIC8qIENyZWF0 ZSBhbiBlbnRyeSBpbiBhbiBBUk0gRUxGIGxpbmtlciBoYXNoIHRhYmxlLiAg Ki8KQEAgLTIyMDEsNiArMjMxNCw3IEBAIGVsZjMyX2FybV9saW5rX2hhc2hf bmV3ZnVuYyAoc3RydWN0IGJmZF8KICAgICB7CiAgICAgICByZXQtPnJlbG9j c19jb3BpZWQgPSBOVUxMOwogICAgICAgcmV0LT50bHNfdHlwZSA9IEdPVF9V TktOT1dOOworICAgICAgcmV0LT50bHNkZXNjX2dvdCA9IChiZmRfdm1hKSAt MTsKICAgICAgIHJldC0+cGx0X3RodW1iX3JlZmNvdW50ID0gMDsKICAgICAg IHJldC0+cGx0X2dvdF9vZmZzZXQgPSAtMTsKICAgICB9CkBAIC0yMzkzLDYg KzI1MDcsMTEgQEAgZWxmMzJfYXJtX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUg KGJmZCAqYQogICByZXQtPnNkeW5ic3MgPSBOVUxMOwogICByZXQtPnNyZWxi c3MgPSBOVUxMOwogICByZXQtPnNyZWxwbHQyID0gTlVMTDsKKyAgcmV0LT5k dF90bHNkZXNjX3BsdCA9IDA7CisgIHJldC0+ZHRfdGxzZGVzY19nb3QgPSAw OworICByZXQtPnRsc190cmFtcG9saW5lID0gMDsKKyAgcmV0LT5uZXh0X3Rs c19kZXNjX2luZGV4ID0gMDsKKyAgcmV0LT5udW1fdGxzX2Rlc2MgPSAwOwog ICByZXQtPnRodW1iX2dsdWVfc2l6ZSA9IDA7CiAgIHJldC0+YXJtX2dsdWVf c2l6ZSA9IDA7CiAgIHJldC0+YmZkX29mX2dsdWVfb3duZXIgPSBOVUxMOwpA QCAtMzMyMyw2ICszNDQyLDMxIEBAIGFybV9yZWFsX3JlbG9jX3R5cGUgKHN0 cnVjdCBlbGYzMl9hcm1fbGkKICAgICAgIHJldHVybiByX3R5cGU7CiAgICAg fQogfQorLyogQ2hlY2tzIHdldGhlciBpdCdzIHBvc3NpYmxlIHRvIGNoYW5n ZSB0byBhIG1vcmUgZWZmaWNpZW50IGFjY2VzcyAKKyAqIG1vZGVsLCBnaXZl biB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBhYm91dCB0aGUgY3VycmVudCBs aW5rICovCitzdGF0aWMgaW50CitlbGYzMl9hcm1fdGxzX3RyYW5zaXRpb24g KHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLCBpbnQgcl90eXBlLCAKKwkJ CSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgpCit7CisgIGludCBp c19sb2NhbCA9IChoID09IE5VTEwpOworCisgIGlmICgoaCAmJiAoaC0+cm9v dC50eXBlID09IGJmZF9saW5rX2hhc2hfdW5kZWZ3ZWFrKSkKKwkJICB8fCBp bmZvLT5zaGFyZWQpCisgICAgcmV0dXJuIHJfdHlwZTsKKworICAvKiBXZSBk byBub3Qgc3VwcG9ydCByZWxheGF0aW9ucyBmb3IgT2xkIFRMUyBtb2RlbHMg Ki8gCisgIHN3aXRjaCAocl90eXBlKQorICAgIHsKKyAgICBjYXNlIFJfQVJN X1RMU19HT1RERVNDOgorICAgIGNhc2UgUl9BUk1fVExTX0NBTEw6CisgICAg Y2FzZSBSX0FSTV9UTFNfREVTQ1NFUToKKyAgICAgIGlmIChpc19sb2NhbCkK KwlyZXR1cm4gUl9BUk1fVExTX0xFMzI7CisgICAgICByZXR1cm4gUl9BUk1f VExTX0lFMzI7CisgICAgfQorCisgIHJldHVybiByX3R5cGU7Cit9CiAKIC8q IFJldHVybiB0aGUgYmFzZSBWTUEgYWRkcmVzcyB3aGljaCBzaG91bGQgYmUg c3VidHJhY3RlZCBmcm9tIHJlYWwgYWRkcmVzc2VzCiAgICB3aGVuIHJlc29s dmluZyBAZHRwb2ZmIHJlbG9jYXRpb24uCkBAIC0zMzY3LDYgKzM1MTEsMTEx IEBAIGVsZjMyX2FybV9hYnMxMl9yZWxvYyAoYmZkICphYmZkLCB2b2lkICoK ICAgcmV0dXJuIGJmZF9yZWxvY19vazsKIH0KIAorLyogRnVuY3Rpb24gdGhh dCBoYW5kbGVzIFRMUyByZWxheGF0aW9ucy4gUmVsYXhpbmcgaXMgcG9zc2li bGUgZm9yIHN5bWJvbHMKKyAqIHRoYXQgdXNlcyBSX0FSTV9HT1RERVNDLCBS X0FSTV9UTFNfQ0FMTCBhbmQgUl9BUk1fVExTX0RFU0NTRVEgcmVsb2NhdGlv bnMsCisgKiBkdXJpbmcgYSBzdGF0aWMgbGluay4gCisgKgorICogVGhlIHN0 YXR1cyBwYXJhbWV0ZXIgcmVjZWl2ZXMgVFJVRSBpZiBubyBtb3JlIHdvcmsg bmVlZHMgdG8gYmUgZG9uZSBvciAKKyAqIGFuIGVycm9yIGhhcHBlbmVkIGFu ZCBGQUxTRSBpZiBhZnRlciBleGl0aW5nIGl0J3Mgc3RpbGwgZGVzaXJhYmxl IHRvIGNhbGwgCisgKiBmaW5hbF9saW5rX3JlbG9jYXRlLiAqLworc3RhdGlj IGJmZF9yZWxvY19zdGF0dXNfdHlwZSAKK2VsZjMyX2FybV90bHNfcmVsYXgg KAliZmRfYnl0ZSAqCQljb250ZW50cywKKwkJCWJmZCAqCQkJaW5wdXRfYmZk LCAKKwkJCUVsZl9JbnRlcm5hbF9SZWxhICoJcmVsLAorCQkJdW5zaWduZWQg bG9uZwkJaXNfbG9jYWwsCisJCQliZmRfYm9vbGVhbiAqCQlzdGF0dXMpIAor CisgIHsgIAorICAgIHVuc2lnbmVkIGxvbmcgaW5zbjsKKyAgICB1bnNpZ25l ZCBsb25nIG9wOworCisgICAgKnN0YXR1cyA9IFRSVUU7CisgICAgc3dpdGNo IChFTEYzMl9SX1RZUEUgKHJlbC0+cl9pbmZvKSkKKyAgICAgIHsKKwljYXNl IFJfQVJNX1RMU19HT1RERVNDOgorCSAgLyogTm8gYWRkZW5kIGFkanVzdG1l bnRzIGZvciBsb2NhbCBleGVjIHJlbGF4YXRpb24gKi8KKwkgIGlmICghaXNf bG9jYWwpCisJICAgIHsKKwkgICAgICBpbnNuID0gYmZkX2dldF8zMiAoaW5w dXRfYmZkLCBjb250ZW50cyArIHJlbC0+cl9vZmZzZXQpOworCisJICAgICAg QkZEX0FTU0VSVCAoaW5zbiAtIDggPCBpbnNuKTsKKworCSAgICAgIGJmZF9w dXRfMzIgKGlucHV0X2JmZCwgaW5zbiAtIDgsY29udGVudHMgKyByZWwtPnJf b2Zmc2V0KTsKKwkgICAgfQorCSAgKnN0YXR1cyA9IEZBTFNFOworCSAgYnJl YWs7CisJY2FzZSBSX0FSTV9UTFNfREVTQ1NFUToKKwkgIGlmIChpc19sb2Nh bCkKKwkgICAgeworCSAgICAgICBpbnNuID0gYmZkX2dldF8zMiAoaW5wdXRf YmZkLCBjb250ZW50cyArIHJlbC0+cl9vZmZzZXQpOworCSAgICAgICBvcCA9 IGluc24gPj4gKDMyIC0gOCk7CisJICAgICAgIHN3aXRjaCAob3ApCisJICAg ICAgICAgeworCSAgICAgICAgIGNhc2UgMHhlMDogLyogYWRkICovCisJCSAg IC8qIG1vdiByeCxydCAqLworCSAgICAgICAgICAgYmZkX3B1dF8zMiAoaW5w dXRfYmZkLCAweGUxYTAwMDAwIHwgKDB4MDAwMGZmZmYgJiBpbnNuKSwgCisJ CQkJICAgY29udGVudHMgKyByZWwtPnJfb2Zmc2V0KTsKKwkJICAgYnJlYWs7 CisJICAgICAgICAgY2FzZSAweGUxOiAvKiBibHggKi8KKwkgICAgICAgICBj YXNlIDB4ZTU6IC8qIGxkciAqLworCQkgICAvKiBtb3YgcjAscjAgKi8KKwkg ICAgICAgICAgIGJmZF9wdXRfMzIgKGlucHV0X2JmZCwgMHhlMWEwMDAwMCwg Y29udGVudHMgKyByZWwtPnJfb2Zmc2V0KTsKKwkJICAgYnJlYWs7CisJCSBk ZWZhdWx0OgorCQkgICAoKl9iZmRfZXJyb3JfaGFuZGxlcikKKwkJCSAgIChf KCJVbmV4cGVjdGVkIGluc3RydWN0aW9uIGluIFRMUyB0cmFtcG9saW5lICcw eCV4Jy4iKSwKKwkJCQkgICAgICBpbnNuKTsKKwkJICAgcmV0dXJuIGJmZF9y ZWxvY19ub3RzdXBwb3J0ZWQ7CisJICAgICAgICAgfQorCisJICAgIH0KKwkg IGVsc2UKKwkgICAgeworCSAgICAgICBpbnNuID0gYmZkX2dldF8zMiAoaW5w dXRfYmZkLCBjb250ZW50cyArIHJlbC0+cl9vZmZzZXQpOworCSAgICAgICBv cCA9IGluc24gPj4gKDMyIC0gOCk7CisJICAgICAgIHN3aXRjaCAob3ApCisJ ICAgICAgICAgeworCQkgY2FzZSAweGUwOiAvKiBhZGQgKi8KKwkJICAgLyog a2VlcCBpdCAqLworCQkgICBicmVhazsKKwkgICAgICAgICBjYXNlIDB4ZTU6 IC8qIGxkciAqLworCQkgICAvKiBnZXQgcmlkIG9mICM0LCBpbiBjYXNlIGl0 J3MgdGhlcmUgKi8KKwkJICAgQkZEX0FTU0VSVCAoKGluc24gJiAweGZmKSA9 PSAweDQpOworCSAgICAgICAgICAgYmZkX3B1dF8zMiAoaW5wdXRfYmZkLCAo aW5zbiAmIDB4ZmZmZmZmMDApLCBjb250ZW50cyArIAorCQkJCQkJICAgICAg ICAgICAgICAgcmVsLT5yX29mZnNldCk7CisJCSAgIGJyZWFrOworCSAgICAg ICAgIGNhc2UgMHhlMTogLyogYmx4ICovCisJICAgICAgICAgICAvKiBtb3Yg Ki8KKwkJICAgaW5zbiAmPSAweGY7CisJCSAgIGluc24gfD0gMHhlMWEwMDAw MDsKKwkgICAgICAgICAgIGJmZF9wdXRfMzIgKGlucHV0X2JmZCwgaW5zbiwg Y29udGVudHMgKyByZWwtPnJfb2Zmc2V0KTsKKwkJICAgYnJlYWs7CisJCSBk ZWZhdWx0OgorCQkgICAoKl9iZmRfZXJyb3JfaGFuZGxlcikKKwkJCSAgIChf KCJVbmV4cGVjdGVkIGluc3RydWN0aW9uIGluIFRMUyB0cmFtcG9saW5lICcw eCV4Jy4iKSwKKwkJCSAgICBpbnNuKTsKKwkJICAgcmV0dXJuIGJmZF9yZWxv Y19ub3RzdXBwb3J0ZWQ7CisJICAgICAgICAgfSAKKwkgICAgfQorCSAgYnJl YWs7CisJY2FzZSBSX0FSTV9UTFNfQ0FMTDoKKwkgICAgaWYgKGlzX2xvY2Fs KQorCSAgICAgIHsKKwkJLyogbW92IHIwLHIwICovCisJICAgICAgICBiZmRf cHV0XzMyIChpbnB1dF9iZmQsIDB4ZTFhMDAwMDAsIGNvbnRlbnRzICsgcmVs LT5yX29mZnNldCk7CisJICAgICAgfQorCSAgICBlbHNlCisJICAgICAgewor CSAgICAgICAgLyogR0QtPklFIHJlbGF4YXRpb24gCisJICAgICAgICAgKiB0 dXJuIHRoZSBpbnN0cnVjdGlvbiBpbnRvIGEgbGRyIG9uZSAKKwkgICAgICAg ICAqIGxkciByMCwgW3BjLHIwXSAgKi8KKwkgICAgICAgIGJmZF9wdXRfMzIg KGlucHV0X2JmZCwgMHhlNzlmMDAwMCwgY29udGVudHMgKyByZWwtPnJfb2Zm c2V0KTsKKwkgICAgICB9CisJICAgIGJyZWFrOworICAgICAgfQorICAgIHJl dHVybiBiZmRfcmVsb2Nfb2s7CisgIH0KKwogLyogRm9yIGEgZ2l2ZW4gdmFs dWUgb2YgbiwgY2FsY3VsYXRlIHRoZSB2YWx1ZSBvZiBHX24gYXMgcmVxdWly ZWQgdG8KICAgIGRlYWwgd2l0aCBncm91cCByZWxvY2F0aW9ucy4gIFdlIHJl dHVybiBpdCBpbiB0aGUgZm9ybSBvZiBhbgogICAgZW5jb2RlZCBjb25zdGFu dC1hbmQtcm90YXRpb24sIHRvZ2V0aGVyIHdpdGggdGhlIGZpbmFsIHJlc2lk dWFsLiAgSWYgbiBpcwpAQCAtMzQ1OSw2ICszNzA4LDcgQEAgZWxmMzJfYXJt X2ZpbmFsX2xpbmtfcmVsb2NhdGUgKHJlbG9jX2hvdwogICBFbGZfSW50ZXJu YWxfU2hkciAqICAgICAgICAgICBzeW10YWJfaGRyOwogICBzdHJ1Y3QgZWxm X2xpbmtfaGFzaF9lbnRyeSAqKiBzeW1faGFzaGVzOwogICBiZmRfdm1hICog ICAgICAgICAgICAgICAgICAgICBsb2NhbF9nb3Rfb2Zmc2V0czsKKyAgYmZk X3ZtYSAqICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGxzZGVzY19nb3Rl bnRzOwogICBhc2VjdGlvbiAqICAgICAgICAgICAgICAgICAgICBzZ290ID0g TlVMTDsKICAgYXNlY3Rpb24gKiAgICAgICAgICAgICAgICAgICAgc3BsdCA9 IE5VTEw7CiAgIGFzZWN0aW9uICogICAgICAgICAgICAgICAgICAgIHNyZWxv YyA9IE5VTEw7CkBAIC0zNDcxLDYgKzM3MjEsMTEgQEAgZWxmMzJfYXJtX2Zp bmFsX2xpbmtfcmVsb2NhdGUgKHJlbG9jX2hvdwogICAvKiBTb21lIHJlbG9j YXRpb24gdHlwZSBtYXAgdG8gZGlmZmVyZW50IHJlbG9jYXRpb25zIGRlcGVu ZGluZyBvbiB0aGUKICAgICAgdGFyZ2V0LiAgV2UgcGljayB0aGUgcmlnaHQg b25lIGhlcmUuICAqLwogICByX3R5cGUgPSBhcm1fcmVhbF9yZWxvY190eXBl IChnbG9iYWxzLCByX3R5cGUpOworCisgIC8qIEJlc2lkZXMgdGhhdCwgaXQg aXMgcG9zc2libGUgdG8gaGF2ZSBsaW5rZXIgcmVsYXhhdGlvbnMgb24gc29t ZSAKKyAgICogVExTIGFjY2VzIG1vZGVscy4gVXBkYXRlIG91ciBpbmZvcm1h dGlvbiBoZXJlICovCisgIHJfdHlwZSA9IGVsZjMyX2FybV90bHNfdHJhbnNp dGlvbiAoaW5mbywgcl90eXBlLCBoKTsKKwogICBpZiAocl90eXBlICE9IGhv d3RvLT50eXBlKQogICAgIGhvd3RvID0gZWxmMzJfYXJtX2hvd3RvX2Zyb21f dHlwZSAocl90eXBlKTsKIApAQCAtMzQ5NSw2ICszNzUwLDggQEAgZWxmMzJf YXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUgKHJlbG9jX2hvdwogICBzeW10YWJf aGRyID0gJiBlbGZfdGRhdGEgKGlucHV0X2JmZCktPnN5bXRhYl9oZHI7CiAg IHN5bV9oYXNoZXMgPSBlbGZfc3ltX2hhc2hlcyAoaW5wdXRfYmZkKTsKICAg bG9jYWxfZ290X29mZnNldHMgPSBlbGZfbG9jYWxfZ290X29mZnNldHMgKGlu cHV0X2JmZCk7CisgIGxvY2FsX3Rsc2Rlc2NfZ290ZW50cyA9IGVsZjMyX2Fy bV9sb2NhbF90bHNkZXNjX2dvdGVudCAoaW5wdXRfYmZkKTsKKwogICByX3N5 bW5keCA9IEVMRjMyX1JfU1lNIChyZWwtPnJfaW5mbyk7CiAKICAgaWYgKGds b2JhbHMtPnVzZV9yZWwpCkBAIC00Mzk4LDEwICs0NjU1LDEzIEBAIGVsZjMy X2FybV9maW5hbF9saW5rX3JlbG9jYXRlIChyZWxvY19ob3cKIAkJCQkJIHJl bC0+cl9hZGRlbmQpOwogICAgICAgfQogCisgICAgY2FzZSBSX0FSTV9UTFNf Q0FMTDoKICAgICBjYXNlIFJfQVJNX1RMU19HRDMyOgogICAgIGNhc2UgUl9B Uk1fVExTX0lFMzI6CisgICAgY2FzZSBSX0FSTV9UTFNfR09UREVTQzoKKyAg ICBjYXNlIFJfQVJNX1RMU19ERVNDU0VROgogICAgICAgewotCWJmZF92bWEg b2ZmOworCWJmZF92bWEgb2ZmLG9mZnBsdDsKIAlpbnQgaW5keDsKIAljaGFy IHRsc190eXBlOwogCkBAIC00NDIxLDYgKzQ2ODEsNyBAQCBlbGYzMl9hcm1f ZmluYWxfbGlua19yZWxvY2F0ZSAocmVsb2NfaG93CiAJCWluZHggPSBoLT5k eW5pbmR4OwogCSAgICAgIH0KIAkgICAgb2ZmID0gaC0+Z290Lm9mZnNldDsK KwkgICAgb2ZmcGx0ID0gZWxmMzJfYXJtX2hhc2hfZW50cnkgKGgpLT50bHNk ZXNjX2dvdDsKIAkgICAgdGxzX3R5cGUgPSAoKHN0cnVjdCBlbGYzMl9hcm1f bGlua19oYXNoX2VudHJ5ICopIGgpLT50bHNfdHlwZTsKIAkgIH0KIAllbHNl CkBAIC00NDI4LDkgKzQ2ODksMTYgQEAgZWxmMzJfYXJtX2ZpbmFsX2xpbmtf cmVsb2NhdGUgKHJlbG9jX2hvdwogCSAgICBpZiAobG9jYWxfZ290X29mZnNl dHMgPT0gTlVMTCkKIAkgICAgICBhYm9ydCAoKTsKIAkgICAgb2ZmID0gbG9j YWxfZ290X29mZnNldHNbcl9zeW1uZHhdOworCSAgICBvZmZwbHQgPSBsb2Nh bF90bHNkZXNjX2dvdGVudHNbcl9zeW1uZHhdOwogCSAgICB0bHNfdHlwZSA9 IGVsZjMyX2FybV9sb2NhbF9nb3RfdGxzX3R5cGUgKGlucHV0X2JmZClbcl9z eW1uZHhdOwogCSAgfQogCisJLyogbGlua2VyIHJlbGF4YXRpb25zIGhhcHBl bnMgZnJvbSBvbmUgb2YgdGhlIAorCSAqIFJfQVJNX3tHT1RERVNDLENBTEws REVTQ1NFUX0gcmVsb2NhdGlvbnMgdG8gSUUgb3IgTEUgKi8gCisJaWYgKEVM RjMyX1JfVFlQRShyZWwtPnJfaW5mbykgIT0gcl90eXBlKXsKKwkJdGxzX3R5 cGUgPSBHT1RfVExTX0lFOyAKKwl9CisKIAlpZiAodGxzX3R5cGUgPT0gR09U X1VOS05PV04pCiAJICBhYm9ydCAoKTsKIApAQCAtNDQ1NSwxMCArNDcyMyw1 NyBAQCBlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSAocmVsb2NfaG93 CiAJCW5lZWRfcmVsb2NzID0gVFJVRTsKIAkJaWYgKGdsb2JhbHMtPnNyZWxn b3QgPT0gTlVMTCkKIAkJICBhYm9ydCAoKTsKLQkJbG9jID0gZ2xvYmFscy0+ c3JlbGdvdC0+Y29udGVudHM7Ci0JCWxvYyArPSBnbG9iYWxzLT5zcmVsZ290 LT5yZWxvY19jb3VudCAqIFJFTE9DX1NJWkUgKGdsb2JhbHMpOwogCSAgICAg IH0KIAorCSAgICBpZiAodGxzX3R5cGUgJiBHT1RfVExTX0dERVNDKQorCSAg ICAgIHsKKwkJLyogV2Ugc2hvdWxkIGhhdmUgcmVsYXhlZCwgdW5sZXNzIHdl J3JlIHRhbGtpbmcgYWJvdXQgYW4KKwkJICogdW5kZWZpbmVkIHdlYWsgc3lt Ym9sICovCisJCUJGRF9BU1NFUlQgKGluZm8tPnNoYXJlZCB8fCAKKwkJCSho ICYmIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWsp KSk7CisKKwkJYmZkX3ZtYSBwYXJhbTsKKwkJICAgIAorCQlCRkRfQVNTRVJU IChnbG9iYWxzLT5zZ290cGx0X2p1bXBfdGFibGVfc2l6ZSArIG9mZnBsdCAr IDgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PSBnbG9iYWxzLT5z Z290cGx0LT5zaXplKTsKKworCQlvdXRyZWwucl9hZGRlbmQgPSAwOworCQlv dXRyZWwucl9vZmZzZXQgPSAoIGdsb2JhbHMtPnNnb3RwbHQtPm91dHB1dF9z ZWN0aW9uLT52bWEKKwkJCQkgICAgKyBnbG9iYWxzLT5zZ290cGx0LT5vdXRw dXRfb2Zmc2V0CisJCQkJICAgICsgb2ZmcGx0CisJCQkJICAgICsgZ2xvYmFs cy0+c2dvdHBsdF9qdW1wX3RhYmxlX3NpemUpOworCQkKKwkJb3V0cmVsLnJf aW5mbyA9IEVMRjMyX1JfSU5GTyAoaW5keCwgUl9BUk1fVExTX0RFU0MpOwor CQlzcmVsb2MgPSBnbG9iYWxzLT5zcmVscGx0OworCQlsb2MgPSBzcmVsb2Mt PmNvbnRlbnRzOworCQlsb2MgKz0gKGdsb2JhbHMtPm5leHRfdGxzX2Rlc2Nf aW5kZXgrKyAKKwkJCSogUkVMT0NfU0laRShnbG9iYWxzKSkgOworCQlCRkRf QVNTRVJUKGxvYyArIFJFTE9DX1NJWkUgKGdsb2JhbHMpCisJCSAgIAkgICA8 PSBzcmVsb2MtPmNvbnRlbnRzICsgc3JlbG9jLT5zaXplKTsKKworCisJCVNX QVBfUkVMT0NfT1VUKGdsb2JhbHMpIChvdXRwdXRfYmZkLCZvdXRyZWwsbG9j KTsKKworCQkvKiBXaXRoIGxhenkgcmVsb2NhdGlvbnMgb24sIHRoZXJlJ3Mg c3RpbGwgd29yayB0byBkbywgCisJCSAqIGFuZCB3ZSBzdG9yZSB0aGUgcmVs b2NhdGlvbiBpbmRleCBpbiB0aGUgZmlyc3QgCisJCSAqIHBhcmFtZXRlciwg dG8gYWxsb3cgaXQgdG8gYmUgZG9uZS4gT3RoZXJ3aXNlLCBzdG9yZSAwICov CisJCWlmICgoaW5mby0+ZmxhZ3MgJiBERl9CSU5EX05PVykpIAorCQkgIHBh cmFtID0gMDsKKwkgCWVsc2UKKwkJICBwYXJhbSA9IEVMRjMyX1JfU1lNIChv dXRyZWwucl9pbmZvKTsKKworCQkvKiBGaXJzdCB3b3JkIGluIHRoZSByZWxv Y2F0aW9uIGdldHMgdGhlIHJlbG9jYXRpb24gaW5kZXgsIAorCQkgKiBvciB6 ZXJvLCBpZiB3ZSdyZSBub3QgYWxsb3dpbmcgbGF6eSByZWxvY3MgKi8KKwkg ICAgCWJmZF9wdXRfMzIgKG91dHB1dF9iZmQsIHBhcmFtLAorCQkJICAgIGds b2JhbHMtPnNnb3RwbHQtPmNvbnRlbnRzICsgb2ZmcGx0ICsKKwkJCSAgICBn bG9iYWxzLT5zZ290cGx0X2p1bXBfdGFibGVfc2l6ZSk7CisKKwkJLyogU2Vj b25kIHdvcmQgaW4gdGhlIHJlbG9jYXRpb24gaXMgYWx3YXlzIHplcm8gKi8K KwkgICAgCWJmZF9wdXRfMzIgKG91dHB1dF9iZmQsIDAsCisJCQkgICAgZ2xv YmFscy0+c2dvdHBsdC0+Y29udGVudHMgKyBvZmZwbHQgKworCQkJICAgIGds b2JhbHMtPnNnb3RwbHRfanVtcF90YWJsZV9zaXplICsgNCk7CisKKwkgICAg ICB9CiAJICAgIGlmICh0bHNfdHlwZSAmIEdPVF9UTFNfR0QpCiAJICAgICAg ewogCQlpZiAobmVlZF9yZWxvY3MpCkBAIC00NDcyLDEwICs0Nzg3LDEwIEBA IGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlIChyZWxvY19ob3cKIAkJ ICAgIGlmIChnbG9iYWxzLT51c2VfcmVsKQogCQkgICAgICBiZmRfcHV0XzMy IChvdXRwdXRfYmZkLCBvdXRyZWwucl9hZGRlbmQsCiAJCQkJICBnbG9iYWxz LT5zZ290LT5jb250ZW50cyArIGN1cl9vZmYpOworCQkgICAgbG9jID0gZ2xv YmFscy0+c3JlbGdvdC0+Y29udGVudHM7CisJCSAgICBsb2MgKz0gKGdsb2Jh bHMtPnNyZWxnb3QtPnJlbG9jX2NvdW50KysgKiBSRUxPQ19TSVpFIChnbG9i YWxzKSk7CiAKIAkJICAgIFNXQVBfUkVMT0NfT1VUIChnbG9iYWxzKSAob3V0 cHV0X2JmZCwgJm91dHJlbCwgbG9jKTsKLQkJICAgIGdsb2JhbHMtPnNyZWxn b3QtPnJlbG9jX2NvdW50Kys7Ci0JCSAgICBsb2MgKz0gUkVMT0NfU0laRSAo Z2xvYmFscyk7CiAKIAkJICAgIGlmIChpbmR4ID09IDApCiAJCSAgICAgIGJm ZF9wdXRfMzIgKG91dHB1dF9iZmQsIHZhbHVlIC0gZHRwb2ZmX2Jhc2UgKGlu Zm8pLApAQCAtNDQ5MSwxMCArNDgwNiwxMCBAQCBlbGYzMl9hcm1fZmluYWxf bGlua19yZWxvY2F0ZSAocmVsb2NfaG93CiAJCQkgIGJmZF9wdXRfMzIgKG91 dHB1dF9iZmQsIG91dHJlbC5yX2FkZGVuZCwKIAkJCQkgICAgICBnbG9iYWxz LT5zZ290LT5jb250ZW50cyArIGN1cl9vZmYgKyA0KTsKIAorCQkgICAgCWxv YyA9IGdsb2JhbHMtPnNyZWxnb3QtPmNvbnRlbnRzOworCQkgICAJbG9jICs9 IChnbG9iYWxzLT5zcmVsZ290LT5yZWxvY19jb3VudCsrICogUkVMT0NfU0la RSAoZ2xvYmFscykpOwogCiAJCQlTV0FQX1JFTE9DX09VVCAoZ2xvYmFscykg KG91dHB1dF9iZmQsICZvdXRyZWwsIGxvYyk7Ci0JCQlnbG9iYWxzLT5zcmVs Z290LT5yZWxvY19jb3VudCsrOwotCQkJbG9jICs9IFJFTE9DX1NJWkUgKGds b2JhbHMpOwogCQkgICAgICB9CiAJCSAgfQogCQllbHNlCkBAIC00NTMwLDkg KzQ4NDUsMTAgQEAgZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUgKHJl bG9jX2hvdwogCQkgICAgICBiZmRfcHV0XzMyIChvdXRwdXRfYmZkLCBvdXRy ZWwucl9hZGRlbmQsCiAJCQkJICBnbG9iYWxzLT5zZ290LT5jb250ZW50cyAr IGN1cl9vZmYpOwogCisJCSAgICBsb2MgPSBnbG9iYWxzLT5zcmVsZ290LT5j b250ZW50czsKKwkJICAgIGxvYyArPSAoZ2xvYmFscy0+c3JlbGdvdC0+cmVs b2NfY291bnQrKyAqIFJFTE9DX1NJWkUgKGdsb2JhbHMpKTsKKwogCQkgICAg U1dBUF9SRUxPQ19PVVQgKGdsb2JhbHMpIChvdXRwdXRfYmZkLCAmb3V0cmVs LCBsb2MpOwotCQkgICAgZ2xvYmFscy0+c3JlbGdvdC0+cmVsb2NfY291bnQr KzsKLQkJICAgIGxvYyArPSBSRUxPQ19TSVpFIChnbG9iYWxzKTsKIAkJICB9 CiAJCWVsc2UKIAkJICBiZmRfcHV0XzMyIChvdXRwdXRfYmZkLCB0cG9mZiAo aW5mbywgdmFsdWUpLApAQCAtNDU0OCw5ICs0ODY0LDYzIEBAIGVsZjMyX2Fy bV9maW5hbF9saW5rX3JlbG9jYXRlIChyZWxvY19ob3cKIAogCWlmICgodGxz X3R5cGUgJiBHT1RfVExTX0dEKSAmJiByX3R5cGUgIT0gUl9BUk1fVExTX0dE MzIpCiAJICBvZmYgKz0gODsKLQl2YWx1ZSA9IGdsb2JhbHMtPnNnb3QtPm91 dHB1dF9zZWN0aW9uLT52bWEgKyBnbG9iYWxzLT5zZ290LT5vdXRwdXRfb2Zm c2V0ICsgb2ZmIAotCSAgLSAoaW5wdXRfc2VjdGlvbi0+b3V0cHV0X3NlY3Rp b24tPnZtYSArIGlucHV0X3NlY3Rpb24tPm91dHB1dF9vZmZzZXQgKyByZWwt PnJfb2Zmc2V0KTsKKwllbHNlIGlmICh0bHNfdHlwZSAmIEdPVF9UTFNfR0RF U0MgKQorCSAgb2ZmID0gb2ZmcGx0OwogCisJaWYgKEVMRjMyX1JfVFlQRShy ZWwtPnJfaW5mbykgPT0gUl9BUk1fVExTX0NBTEwpCisJICB7CisgICAgICAg ICAgICBsb25nIGluc3Q7CisKKyAgICAgICAgICAgIGluc3QgPSAoZ2xvYmFs cy0+c3BsdC0+b3V0cHV0X3NlY3Rpb24tPnZtYSArIAorCQkgICBnbG9iYWxz LT5zcGx0LT5vdXRwdXRfb2Zmc2V0ICsgZ2xvYmFscy0+dGxzX3RyYW1wb2xp bmUpIC0KKyAgICAgICAgICAgICAgICAgICAoaW5wdXRfc2VjdGlvbi0+b3V0 cHV0X3NlY3Rpb24tPnZtYSArIAorCQkgICAgaW5wdXRfc2VjdGlvbi0+b3V0 cHV0X29mZnNldCArIHJlbC0+cl9vZmZzZXQpIC0gODsKKworCisJICAgIC8q IE1ha2Ugc3VyZSB3ZSdyZSBub3QgdGhyb3dpbmcgYW55IHVzZWZ1bCBkYXRh IGF3YXkgKi8gCisgICAgICAgICAgICBCRkRfQVNTRVJUICgoaW5zdCAmIDMp ID09IDApOworICAgICAgICAgICAgaW5zdCA+Pj0gMjsKKwkgICAgLyogVGhl IG9mZnNldCBoYXZlIHRvIGZpdCBpbiBhIGhvd3RvLT5iaXRzaXplIHNpemVk IGZpZWxkLiBPdGhlcndpc2UsIHdlICAKKwkgICAgICogbWF5IGJlIGNvbXB1 dGluZyBhIGJyYW5jaCB0byB0aGUgd3JvbmcgcGxhY2UuIFdlIHRoZW4gcmVm dXNlIHQKKwkgICAgICogcmVsb2NhdGUgKi8JCisgICAgICAgICAgICBCRkRf QVNTRVJUIChpbnN0IDwgKDEgPDwgIGhvd3RvLT5iaXRzaXplKSk7CisgICAg ICAgICAgICBCRkRfQVNTRVJUIChpbnN0ID4gLSgxIDw8ICBob3d0by0+Yml0 c2l6ZSkpOworCisgICAgICAgICAgICBpbnN0ICY9ICgoMSA8PCBob3d0by0+ Yml0c2l6ZSkgLSAxKTsKKyAgICAgICAgICAgIGluc3QgfD0gMHhlYjAwMDAw MDsgLyogYnJhbmNoICYgbGluayAqLworCisgICAgICAgICAgICB2YWx1ZSA9 IGluc3Q7CisgICAgICAgIH0gICAgCisJLyogVGhlc2UgcmVsb2NhdGlvbnMg bmVlZHMgc3BlY2lhbCBjYXJlLCBhcyBiZXNpZGVzIHRoZSBmYWN0IHRoZXkg CisJICogcG9pbnQgc29tZXdoZXJlIGluIC5nb3RwbHQsIHRoZSBhZGRlbmQg bXVzdCBiZSBhZGp1c3RlZCBhY2NvcmRpbmdseQorCSAqIGRlcGVuZGluZyBv biB0aGUgdHlwZSBvZiBpbnN0cnVjdGlvbiB3ZSByZWZlciB0byAqLworCWVs c2UgaWYgKChyX3R5cGUgPT0gUl9BUk1fVExTX0dPVERFU0MpICYmICh0bHNf dHlwZSAmIEdPVF9UTFNfR0RFU0MpKQorCSAgeyAKKwkgICAgdW5zaWduZWQg bG9uZyBkYXRhLGluc247CisJICAgIGRhdGEgPSBiZmRfZ2V0XzMyIChpbnB1 dF9iZmQsIGhpdF9kYXRhKTsKKwkgICAgaW5zbiA9IGJmZF9nZXRfMzIgKGlu cHV0X2JmZCwgY29udGVudHMgKyByZWwtPnJfb2Zmc2V0IC0gZGF0YSk7CisJ ICAgIGluc24gPj49IDMyIC0gODsKKworCSAgICBpZiAoaW5zbiA9PSAweGVi KSAvKiBicmFuY2ggKi8KKwkgICAgICB2YWx1ZSA9IC00OworCSAgICBlbHNl IC8qIGFkZCAqLworCSAgICAgIHsKKwkgICAgICAgIEJGRF9BU1NFUlQgKGlu c24gPT0gMHhlMCk7CisJICAgICAgICB2YWx1ZSA9IC04OworCSAgICAgIH0g CisgCisJICAgIHZhbHVlICs9IGdsb2JhbHMtPnNnb3RwbHQtPm91dHB1dF9z ZWN0aW9uLT52bWEgKyAKKwkJICAgICBnbG9iYWxzLT5zZ290cGx0LT5vdXRw dXRfb2Zmc2V0ICsgb2ZmIC0gCisJCSAgICAgKGlucHV0X3NlY3Rpb24tPm91 dHB1dF9zZWN0aW9uLT52bWEgKyAKKwkJICAgICAgaW5wdXRfc2VjdGlvbi0+ b3V0cHV0X29mZnNldCArIAorCQkgICAgICByZWwtPnJfb2Zmc2V0KSArIAor CQkgICAgIGdsb2JhbHMtPnNnb3RwbHRfanVtcF90YWJsZV9zaXplOworICAg ICAgICB9CisKKwllbHNlCisJICB2YWx1ZSA9IGdsb2JhbHMtPnNnb3QtPm91 dHB1dF9zZWN0aW9uLT52bWEgKyBnbG9iYWxzLT5zZ290LT5vdXRwdXRfb2Zm c2V0ICsgb2ZmIAorCSAgCS0gKGlucHV0X3NlY3Rpb24tPm91dHB1dF9zZWN0 aW9uLT52bWEgKyBpbnB1dF9zZWN0aW9uLT5vdXRwdXRfb2Zmc2V0ICsgCisJ CSAgcmVsLT5yX29mZnNldCk7CiAJcmV0dXJuIF9iZmRfZmluYWxfbGlua19y ZWxvY2F0ZSAoaG93dG8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwKIAkJ CQkJIGNvbnRlbnRzLCByZWwtPnJfb2Zmc2V0LCB2YWx1ZSwKIAkJCQkJIHJl bC0+cl9hZGRlbmQpOwpAQCAtNDU2Nyw3ICs0OTM3LDcgQEAgZWxmMzJfYXJt X2ZpbmFsX2xpbmtfcmVsb2NhdGUgKHJlbG9jX2hvdwogCX0KICAgICAgIGVs c2UKIAl2YWx1ZSA9IHRwb2ZmIChpbmZvLCB2YWx1ZSk7Ci0gICAgICAKKwog ICAgICAgcmV0dXJuIF9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSAoaG93dG8s IGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwKIAkJCQkgICAgICAgY29udGVu dHMsIHJlbC0+cl9vZmZzZXQsIHZhbHVlLAogCQkJCSAgICAgICByZWwtPnJf YWRkZW5kKTsKQEAgLTUzMjMsOCArNTY5MywxNyBAQCBhcm1fYWRkX3RvX3Jl bCAoYmZkICogICAgICAgICAgICAgIGFiZmQsCiAgICB8fCAoUl9UWVBFKSA9 PSBSX0FSTV9UTFNfRFRQTU9EMzIJXAogICAgfHwgKFJfVFlQRSkgPT0gUl9B Uk1fVExTX1RQT0ZGMzIJXAogICAgfHwgKFJfVFlQRSkgPT0gUl9BUk1fVExT X0xFMzIJXAorICAgfHwgKFJfVFlQRSkgPT0gUl9BUk1fVExTX0dPVERFU0MJ XAorICAgfHwgKFJfVFlQRSkgPT0gUl9BUk1fVExTX0NBTEwJXAorICAgfHwg KFJfVFlQRSkgPT0gUl9BUk1fVExTX0RFU0NTRVEJXAogICAgfHwgKFJfVFlQ RSkgPT0gUl9BUk1fVExTX0lFMzIpCiAKKy8qIFNwZWNpZmljIHNldCBvZiBy ZWxvY2F0aW9ucyBmb3IgdGhlIGdudSB0bHMgZGlhbGVjdCAqLworI2RlZmlu ZSBJU19BUk1fVExTX0dOVV9SRUxPQyhSX1RZUEUpCVwKKyAgKChSX1RZUEUp ID09IFJfQVJNX1RMU19HT1RERVNDCVwKKyAgIHx8IChSX1RZUEUpID09IFJf QVJNX1RMU19DQUxMCVwKKyAgIHx8IChSX1RZUEUpID09IFJfQVJNX1RMU19E RVNDU0VRKQorCiAvKiBSZWxvY2F0ZSBhbiBBUk0gRUxGIHNlY3Rpb24uICAq Lwogc3RhdGljIGJmZF9ib29sZWFuCiBlbGYzMl9hcm1fcmVsb2NhdGVfc2Vj dGlvbiAoYmZkICogICAgICAgICAgICAgICAgICBvdXRwdXRfYmZkLApAQCAt NTM2NSw2ICs1NzQ0LDggQEAgZWxmMzJfYXJtX3JlbG9jYXRlX3NlY3Rpb24g KGJmZCAqICAgICAgIAogICAgICAgYXJlbGVudCAgICAgICAgICAgICAgICAg ICAgICBiZmRfcmVsb2M7CiAgICAgICBjaGFyICAgICAgICAgICAgICAgICAg ICAgICAgIHN5bV90eXBlOwogICAgICAgYmZkX2Jvb2xlYW4gICAgICAgICAg ICAgICAgICB1bnJlc29sdmVkX3JlbG9jID0gRkFMU0U7CisgICAgICBiZmRf Ym9vbGVhbiAgICAgICAgICAgICAgICAgIHRsc19yZWxheGVkID0gRkFMU0U7 CQkKKyAgICAgIGludAkJCSAgIHRsc190eXBlID0gMDsKIAogICAgICAgcl9z eW1uZHggPSBFTEYzMl9SX1NZTSAocmVsLT5yX2luZm8pOwogICAgICAgcl90 eXBlICAgPSBFTEYzMl9SX1RZUEUgKHJlbC0+cl9pbmZvKTsKQEAgLTU0NjYs NyArNTg0NywxMCBAQCBlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbiAoYmZk ICogICAgICAgCiAJfQogCiAgICAgICBpZiAoaCAhPSBOVUxMKQotCW5hbWUg PSBoLT5yb290LnJvb3Quc3RyaW5nOworICAgICAgICB7CisJICBuYW1lID0g aC0+cm9vdC5yb290LnN0cmluZzsKKwkgIHRsc190eXBlID0gZWxmMzJfYXJt X2hhc2hfZW50cnkgKGgpLT50bHNfdHlwZTsKKyAgICAgICAgfQogICAgICAg ZWxzZQogCXsKIAkgIG5hbWUgPSAoYmZkX2VsZl9zdHJpbmdfZnJvbV9lbGZf c2VjdGlvbgpAQCAtNTQ5MywxNCArNTg3NywyNCBAQCBlbGYzMl9hcm1fcmVs b2NhdGVfc2VjdGlvbiAoYmZkICogICAgICAgCiAJICAgICBuYW1lKTsKIAl9 CiAKLSAgICAgIHIgPSBlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSAo aG93dG8sIGlucHV0X2JmZCwgb3V0cHV0X2JmZCwKLQkJCQkJIGlucHV0X3Nl Y3Rpb24sIGNvbnRlbnRzLCByZWwsCi0JCQkJCSByZWxvY2F0aW9uLCBpbmZv LCBzZWMsIG5hbWUsCi0JCQkJCSAoaCA/IEVMRl9TVF9UWVBFIChoLT50eXBl KSA6Ci0JCQkJCSAgRUxGX1NUX1RZUEUgKHN5bS0+c3RfaW5mbykpLCBoLAot CQkJCQkgJnVucmVzb2x2ZWRfcmVsb2MpOwotCi0gICAgICAvKiBEeW5hbWlj IHJlbG9jcyBhcmUgbm90IHByb3BhZ2F0ZWQgZm9yIFNFQ19ERUJVR0dJTkcg c2VjdGlvbnMKKyAgICAgIC8qIFdlIGNhbGwgZWxmMzJfYXJtX2ZpbmFsX2xp bmtfcmVsb2NhdGUgdW5sZXNzIHdlJ3JlIGNvbXBsZXRlbHkKKyAgICAgICAq IGRvbmUsIGkuZS4sIHRoZSByZWxheGF0aW9uIHByb2R1Y2VkIHRoZSBmaW5h bCBvdXRwdXQgd2Ugd2FudCwgCisgICAgICAgKiBhbmQgd2Ugd29uJ3QgbGV0 IGFueWJvZHkgbWVzcyB3aXRoIGl0LiBBbHNvLCB3ZSBoYXZlIHRvIGRvIAor ICAgICAgICogYWRkZW5kIGFkanVzdG1lbnRzIGluIGNhc2Ugb2YgYSBSX0FS TV9UTFNfR09UREVTQyByZWxvY2F0aW9uCisgICAgICAgKiBib3RoIGluIHJl bGF4ZWQgYW5kIG5vbi1yZWxheGVkIGNhc2VzICovCisgICAgIGlmICgoZWxm MzJfYXJtX3Rsc190cmFuc2l0aW9uIChpbmZvLCByX3R5cGUsIGgpICE9IHJf dHlwZSkgfHwKKwkgIChJU19BUk1fVExTX0dOVV9SRUxPQyAocl90eXBlKSAm JiAgISh0bHNfdHlwZSAmIEdPVF9UTFNfR0RFU0MpKSkKKyAgICAgICByID0g ZWxmMzJfYXJtX3Rsc19yZWxheCAoY29udGVudHMsIGlucHV0X2JmZCwgcmVs LCBoID09IE5VTEwsCisJCQkJCQkJJnRsc19yZWxheGVkKTsKKyAgICAgCisg ICAgICBpZiAodGxzX3JlbGF4ZWQgPT0gRkFMU0UpCisgICAgICAgIHIgPSBl bGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSAoaG93dG8sIGlucHV0X2Jm ZCwgb3V0cHV0X2JmZCwKKwkJCQkJICAgaW5wdXRfc2VjdGlvbiwgY29udGVu dHMsIHJlbCwKKwkJCQkJICAgcmVsb2NhdGlvbiwgaW5mbywgc2VjLCBuYW1l LAorCQkJCQkgICAoaCA/IEVMRl9TVF9UWVBFIChoLT50eXBlKSA6CisJCQkJ CSAgICBFTEZfU1RfVFlQRSAoc3ltLT5zdF9pbmZvKSksIGgsCisJCQkJCSAg ICZ1bnJlc29sdmVkX3JlbG9jKTsKKyAgICAgICAvKiBEeW5hbWljIHJlbG9j cyBhcmUgbm90IHByb3BhZ2F0ZWQgZm9yIFNFQ19ERUJVR0dJTkcgc2VjdGlv bnMKIAkgYmVjYXVzZSBzdWNoIHNlY3Rpb25zIGFyZSBub3QgU0VDX0FMTE9D IGFuZCB0aHVzIGxkLnNvIHdpbGwKIAkgbm90IHByb2Nlc3MgdGhlbS4gICov CiAgICAgICBpZiAodW5yZXNvbHZlZF9yZWxvYwpAQCAtNjc0NCwxMiArNzEz OCwxNyBAQCBlbGYzMl9hcm1fY2hlY2tfcmVsb2NzIChiZmQgKmFiZmQsIHN0 cnVjCiAKICAgICAgIGVoID0gKHN0cnVjdCBlbGYzMl9hcm1fbGlua19oYXNo X2VudHJ5ICopIGg7CiAKKyAgICAgIC8qIENvdWxkIGJlIGRvbmUgZWFybGll ciwgaWYgaCB3ZXJlIGFscmVhZHkgYXZhaWxhYmxlICovCisgICAgICByX3R5 cGUgPSBlbGYzMl9hcm1fdGxzX3RyYW5zaXRpb24oaW5mbywgcl90eXBlLCBo KTsKICAgICAgIHN3aXRjaCAocl90eXBlKQogICAgICAgICB7CiAJICBjYXNl IFJfQVJNX0dPVDMyOgogCSAgY2FzZSBSX0FSTV9HT1RfUFJFTDoKIAkgIGNh c2UgUl9BUk1fVExTX0dEMzI6CiAJICBjYXNlIFJfQVJNX1RMU19JRTMyOgor CSAgY2FzZSBSX0FSTV9UTFNfR09UREVTQzoKKwkgIGNhc2UgUl9BUk1fVExT X0RFU0NTRVE6CisJICBjYXNlIFJfQVJNX1RMU19DQUxMOgogCSAgICAvKiBU aGlzIHN5bWJvbCByZXF1aXJlcyBhIGdsb2JhbCBvZmZzZXQgdGFibGUgZW50 cnkuICAqLwogCSAgICB7CiAJICAgICAgaW50IHRsc190eXBlLCBvbGRfdGxz X3R5cGU7CkBAIC02NzU4LDYgKzcxNTcsMTAgQEAgZWxmMzJfYXJtX2NoZWNr X3JlbG9jcyAoYmZkICphYmZkLCBzdHJ1YwogCQl7CiAJCWNhc2UgUl9BUk1f VExTX0dEMzI6IHRsc190eXBlID0gR09UX1RMU19HRDsgYnJlYWs7CiAJCWNh c2UgUl9BUk1fVExTX0lFMzI6IHRsc190eXBlID0gR09UX1RMU19JRTsgYnJl YWs7CisJCWNhc2UgUl9BUk1fVExTX0dPVERFU0M6CisJCWNhc2UgUl9BUk1f VExTX0NBTEw6CisJCWNhc2UgUl9BUk1fVExTX0RFU0NTRVE6CisJCSAgdGxz X3R5cGUgPSBHT1RfVExTX0dERVNDOyBicmVhazsJCiAJCWRlZmF1bHQ6IHRs c190eXBlID0gR09UX05PUk1BTDsgYnJlYWs7CiAJCX0KIApAQCAtNjc3Nywy NSArNzE4MCwzOCBAQCBlbGYzMl9hcm1fY2hlY2tfcmVsb2NzIChiZmQgKmFi ZmQsIHN0cnVjCiAJCSAgICAgIGJmZF9zaXplX3R5cGUgc2l6ZTsKIAkJICAg ICAgCiAJCSAgICAgIHNpemUgPSBzeW10YWJfaGRyLT5zaF9pbmZvOwotCQkg ICAgICBzaXplICo9IChzaXplb2YgKGJmZF9zaWduZWRfdm1hKSArIHNpemVv ZihjaGFyKSk7CisJCSAgICAgIHNpemUgKj0gKHNpemVvZiAoYmZkX3NpZ25l ZF92bWEpICsgCisJCQkJc2l6ZW9mIChiZmRfdm1hKSArIHNpemVvZiAoY2hh cikpOwogCQkgICAgICBsb2NhbF9nb3RfcmVmY291bnRzID0gYmZkX3phbGxv YyAoYWJmZCwgc2l6ZSk7CiAJCSAgICAgIGlmIChsb2NhbF9nb3RfcmVmY291 bnRzID09IE5VTEwpCiAJCQlyZXR1cm4gRkFMU0U7CiAJCSAgICAgIGVsZl9s b2NhbF9nb3RfcmVmY291bnRzIChhYmZkKSA9IGxvY2FsX2dvdF9yZWZjb3Vu dHM7CisJCSAgICAgIGVsZjMyX2FybV9sb2NhbF90bHNkZXNjX2dvdGVudCAo YWJmZCkKKwkJICAgICAgICA9IChiZmRfdm1hICopIChsb2NhbF9nb3RfcmVm Y291bnRzICsgc3ltdGFiX2hkci0+c2hfaW5mbyk7CiAJCSAgICAgIGVsZjMy X2FybV9sb2NhbF9nb3RfdGxzX3R5cGUgKGFiZmQpCi0JCQk9IChjaGFyICop IChsb2NhbF9nb3RfcmVmY291bnRzICsgc3ltdGFiX2hkci0+c2hfaW5mbyk7 CisJCQk9IChjaGFyICopIChsb2NhbF9nb3RfcmVmY291bnRzICsgMiAqIHN5 bXRhYl9oZHItPnNoX2luZm8pOwogCQkgICAgfQogCQkgIGxvY2FsX2dvdF9y ZWZjb3VudHNbcl9zeW1uZHhdICs9IDE7CiAJCSAgb2xkX3Rsc190eXBlID0g ZWxmMzJfYXJtX2xvY2FsX2dvdF90bHNfdHlwZSAoYWJmZCkgW3Jfc3ltbmR4 XTsKIAkJfQogCisJICAgICAgLyogSWYgYSB2YXJpYWJsZSBpcyBhY2Nlc3Nl ZCBpbiBib3RoIHRsZCBtZXRob2RzLAorCSAgICAgICAqIHR3byBzbG90cyBt YXkgYmUgY3JlYXRlZCAqLworCSAgICAgIGlmIChHT1RfVExTX0dEX0FOWV9Q IChvbGRfdGxzX3R5cGUpICYmIEdPVF9UTFNfR0RfQU5ZX1AgKHRsc190eXBl KSkKKwkJdGxzX3R5cGUgfD0gb2xkX3Rsc190eXBlOworCiAJICAgICAgLyog V2Ugd2lsbCBhbHJlYWR5IGhhdmUgaXNzdWVkIGFuIGVycm9yIG1lc3NhZ2Ug aWYgdGhlcmUgaXMgYQotCQkgVExTIC8gbm9uLVRMUyBtaXNtYXRjaCwgYmFz ZWQgb24gdGhlIHN5bWJvbCB0eXBlLiAgV2UgZG9uJ3QKLQkJIHN1cHBvcnQg YW55IGxpbmtlciByZWxheGF0aW9ucy4gIFNvIGp1c3QgY29tYmluZSBhbnkg VExTCi0JCSB0eXBlcyBuZWVkZWQuICAqLworCQkgVExTIC8gbm9uLVRMUyBt aXNtYXRjaCwgYmFzZWQgb24gdGhlIHN5bWJvbCB0eXBlLiBTbyBqdXN0IAor CQkgY29tYmluZSBhbnkgVExTIHR5cGVzIG5lZWRlZC4gKi8KIAkgICAgICBp ZiAob2xkX3Rsc190eXBlICE9IEdPVF9VTktOT1dOICYmIG9sZF90bHNfdHlw ZSAhPSBHT1RfTk9STUFMCiAJCSAgJiYgdGxzX3R5cGUgIT0gR09UX05PUk1B TCkKIAkJdGxzX3R5cGUgfD0gb2xkX3Rsc190eXBlOworCSAgICAgICAgCisJ ICAgICAgLyogSWYgdGhlIHN5bWJvbCBpcyBhY2Nlc3NlZCBpbiBib3RoIElF IGFuZCBHREVTQyBtZXRob2QsIHdlJ3JlCisJICAgICAgICogYWJsZSB0byBy ZWxheC4gVHVybiBvZmYgdGhlIEdERVNDIGZsYWcsIHdpdGhvdXQgbWVzc2lu ZyB1cCB3aXRoCisJICAgICAgICogYW55IG90aGVyIGtpbmQgb2YgdGxzIHR5 cGVzIHRoYXQgbWF5IGJlIGludm9sdmVkICovCisJICAgICAgaWYgKCh0bHNf dHlwZSAmIEdPVF9UTFNfSUUpICYmICh0bHNfdHlwZSAmIEdPVF9UTFNfR0RF U0MpKQorCQkgICAgICB0bHNfdHlwZSAmPSB+R09UX1RMU19HREVTQzsKIAog CSAgICAgIGlmIChvbGRfdGxzX3R5cGUgIT0gdGxzX3R5cGUpCiAJCXsKQEAg LTczNjEsMTIgKzc3NzcsMTMgQEAgYWxsb2NhdGVfZHlucmVsb2NzIChzdHJ1 Y3QgZWxmX2xpbmtfaGFzaAogCSAgICB7CiAJICAgICAgLyogV2UgYWxzbyBu ZWVkIHRvIG1ha2UgYW4gZW50cnkgaW4gdGhlIC5nb3QucGx0IHNlY3Rpb24s IHdoaWNoCiAJCSB3aWxsIGJlIHBsYWNlZCBpbiB0aGUgLmdvdCBzZWN0aW9u IGJ5IHRoZSBsaW5rZXIgc2NyaXB0LiAgKi8KLQkgICAgICBlaC0+cGx0X2dv dF9vZmZzZXQgPSBodGFiLT5zZ290cGx0LT5zaXplOworCSAgICAgIGVoLT5w bHRfZ290X29mZnNldCA9IGh0YWItPnNnb3RwbHQtPnNpemUgLSA4KiBodGFi LT5udW1fdGxzX2Rlc2M7CiAJICAgICAgaHRhYi0+c2dvdHBsdC0+c2l6ZSAr PSA0OwogCSAgICB9CiAKIAkgIC8qIFdlIGFsc28gbmVlZCB0byBtYWtlIGFu IGVudHJ5IGluIHRoZSAucmVsKGEpLnBsdCBzZWN0aW9uLiAgKi8KIAkgIGh0 YWItPnNyZWxwbHQtPnNpemUgKz0gUkVMT0NfU0laRSAoaHRhYik7CisJICBo dGFiLT5uZXh0X3Rsc19kZXNjX2luZGV4Kys7CiAKIAkgIC8qIFZ4V29ya3Mg ZXhlY3V0YWJsZXMgaGF2ZSBhIHNlY29uZCBzZXQgb2YgcmVsb2NhdGlvbnMg Zm9yCiAJICAgICBlYWNoIFBMVCBlbnRyeS4gIFRoZXkgZ28gaW4gYSBzZXBh cmF0ZSByZWxvY2F0aW9uIHNlY3Rpb24sCkBAIC03Mzk2LDYgKzc4MTMsOSBA QCBhbGxvY2F0ZV9keW5yZWxvY3MgKHN0cnVjdCBlbGZfbGlua19oYXNoCiAg ICAgICBoLT5uZWVkc19wbHQgPSAwOwogICAgIH0KIAorICBlaCA9IChzdHJ1 Y3QgZWxmMzJfYXJtX2xpbmtfaGFzaF9lbnRyeSAqKSBoOworICBlaC0+dGxz ZGVzY19nb3QgPSAoYmZkX3ZtYSkgLTE7CisKICAgaWYgKGgtPmdvdC5yZWZj b3VudCA+IDApCiAgICAgewogICAgICAgYXNlY3Rpb24gKnM7CkBAIC03NDI1 LDggKzc4NDUsMjEgQEAgYWxsb2NhdGVfZHlucmVsb2NzIChzdHJ1Y3QgZWxm X2xpbmtfaGFzaAogCSAgICBzLT5zaXplICs9IDQ7CiAJICBlbHNlCiAJICAg IHsKKyAgICAgICAgICAgICAgaWYgKHRsc190eXBlICYgR09UX1RMU19HREVT QykKKwkgICAgICAgIHsKKwkJICAvKiBSX0FSTV9UTFNfREVTQyBuZWVkcyAy IEdPVCBzbG90cy4gICovCisJICAgICAgICAgIGVoLT50bHNkZXNjX2dvdCA9 IGh0YWItPnNnb3RwbHQtPnNpemUKKwkgICAgICAgICAgLSBlbGYzMl9hcm1f Y29tcHV0ZV9qdW1wX3RhYmxlX3NpemUgKGh0YWIpOworCSAgICAgICAgICBo dGFiLT5zZ290cGx0LT5zaXplICs9IDg7CisJICAgICAgICAgIGgtPmdvdC5v ZmZzZXQgPSAoYmZkX3ZtYSkgLTI7CisJCSAgLyogcGx0X2dvdF9vZmZzZXQg bmVlZHMgdG8ga25vdyB0aGVyZSdzIGEgVExTX0RFU0MgcmVsb2MKKwkJICAg KiBpbiB0aGUgbWlkZGxlIG9mIC5nb3QucGx0ICovCisgICAgICAgICAgICAg ICAgICBodGFiLT5udW1fdGxzX2Rlc2MrKzsKKwkgICAgICAgIH0KIAkgICAg ICBpZiAodGxzX3R5cGUgJiBHT1RfVExTX0dEKQotCQkvKiBSX0FSTV9UTFNf R0QzMiBuZWVkcyAyIGNvbnNlY3V0aXZlIEdPVCBzbG90cy4gICovCisJICAJ LyogUl9BUk1fVExTX0dEMzIgbmVlZHMgMiBjb25zZWN1dGl2ZSBHT1Qgc2xv dHMuICAKKwkgICAgICAgICAqIElmIHRoZSBzeW1ib2wgaXMgYm90aCBHRCBh bmQgR0RFU0MsIGdvdC5vZmZzZXQgbWF5IGhhdmUKKwkJICogYmVlbiBvdmVy d3JpdHRlbiAqLwogCQlzLT5zaXplICs9IDg7CiAJICAgICAgaWYgKHRsc190 eXBlICYgR09UX1RMU19JRSkKIAkJLyogUl9BUk1fVExTX0lFMzIgbmVlZHMg b25lIEdPVCBzbG90LiAgKi8KQEAgLTc0NTIsOCArNzg4NSwyNiBAQCBhbGxv Y2F0ZV9keW5yZWxvY3MgKHN0cnVjdCBlbGZfbGlua19oYXNoCiAJICAgICAg aWYgKHRsc190eXBlICYgR09UX1RMU19HRCkKIAkJaHRhYi0+c3JlbGdvdC0+ c2l6ZSArPSBSRUxPQ19TSVpFIChodGFiKTsKIAotCSAgICAgIGlmICgodGxz X3R5cGUgJiBHT1RfVExTX0dEKSAmJiBpbmR4ICE9IDApCi0JCWh0YWItPnNy ZWxnb3QtPnNpemUgKz0gUkVMT0NfU0laRSAoaHRhYik7CisJICAgICAgaWYg KHRsc190eXBlICYgR09UX1RMU19HREVTQykgCisJCXsKKwkgCSAgaHRhYi0+ ZHRfdGxzZGVzY19wbHQgPSAoYmZkX3ZtYSktMTsJCisJCSAgaHRhYi0+c3Jl bHBsdC0+c2l6ZSArPSBSRUxPQ19TSVpFIChodGFiKTsgCisJCSAgLyogR0RF U0MgbmVlZHMgYSB0cmFtcG9saW5lIHRvIGp1bXAgdG8uIEFsbG9jYXRlIGl0 IGlmIG5vdCAKKwkJICAgKiB5ZXQgZG9uZSAqLworCQkgIGlmIChodGFiLT50 bHNfdHJhbXBvbGluZSA9PSAwKQorCQkgICAgeworCQkgICAgICBpZiAoaHRh Yi0+c3BsdC0+c2l6ZSA9PSAwKQorCQkJaHRhYi0+c3BsdC0+c2l6ZSArPSBo dGFiLT5wbHRfaGVhZGVyX3NpemU7CisKKwkJICAgICAgaHRhYi0+dGxzX3Ry YW1wb2xpbmUgID0gaHRhYi0+c3BsdC0+c2l6ZTsKKwkJICAgICAgaHRhYi0+ c3BsdC0+c2l6ZSArPSBodGFiLT5wbHRfZW50cnlfc2l6ZTsKKwkJCQorCQkg ICAgfQorCQl9CisKKwkgICAgICAvKiBPbmx5IEdEIG5lZWQgaXQuIEdERVND IGp1c3QgZW1pdHMgb25lIHJlbG9jYXRpb24gcGVyIDIgZW50cmllcyAqLwor CSAgICAgIGlmICgodGxzX3R5cGUgJiBHT1RfVExTX0dEKSAmJiBpbmR4ICE9 IDApICAKKwkJaHRhYi0+c3JlbGdvdC0+c2l6ZSArPSBSRUxPQ19TSVpFICho dGFiKTsgCiAJICAgIH0KIAkgIGVsc2UgaWYgKChFTEZfU1RfVklTSUJJTElU WSAoaC0+b3RoZXIpID09IFNUVl9ERUZBVUxUCiAJCSAgICB8fCBoLT5yb290 LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF91bmRlZndlYWspCkBAIC03NjM1LDYg KzgwODYsNyBAQCBlbGYzMl9hcm1fc2l6ZV9keW5hbWljX3NlY3Rpb25zIChi ZmQgKiBvCiAgICAgICBiZmRfc2lnbmVkX3ZtYSAqbG9jYWxfZ290OwogICAg ICAgYmZkX3NpZ25lZF92bWEgKmVuZF9sb2NhbF9nb3Q7CiAgICAgICBjaGFy ICpsb2NhbF90bHNfdHlwZTsKKyAgICAgIGJmZF92bWEgKmxvY2FsX3Rsc2Rl c2NfZ290ZW50OwogICAgICAgYmZkX3NpemVfdHlwZSBsb2NzeW1jb3VudDsK ICAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzeW10YWJfaGRyOwogICAgICAg YXNlY3Rpb24gKnNyZWw7CkBAIC03Njc0LDIzICs4MTI2LDQ2IEBAIGVsZjMy X2FybV9zaXplX2R5bmFtaWNfc2VjdGlvbnMgKGJmZCAqIG8KICAgICAgIGxv Y3N5bWNvdW50ID0gc3ltdGFiX2hkci0+c2hfaW5mbzsKICAgICAgIGVuZF9s b2NhbF9nb3QgPSBsb2NhbF9nb3QgKyBsb2NzeW1jb3VudDsKICAgICAgIGxv Y2FsX3Rsc190eXBlID0gZWxmMzJfYXJtX2xvY2FsX2dvdF90bHNfdHlwZSAo aWJmZCk7CisgICAgICBsb2NhbF90bHNkZXNjX2dvdGVudCA9IGVsZjMyX2Fy bV9sb2NhbF90bHNkZXNjX2dvdGVudCAoaWJmZCk7CiAgICAgICBzID0gaHRh Yi0+c2dvdDsKICAgICAgIHNyZWwgPSBodGFiLT5zcmVsZ290OwotICAgICAg Zm9yICg7IGxvY2FsX2dvdCA8IGVuZF9sb2NhbF9nb3Q7ICsrbG9jYWxfZ290 LCArK2xvY2FsX3Rsc190eXBlKQorICAgICAgZm9yICg7IGxvY2FsX2dvdCA8 IGVuZF9sb2NhbF9nb3Q7IAorCSAgICsrbG9jYWxfZ290LCArK2xvY2FsX3Rs c190eXBlLCArK2xvY2FsX3Rsc2Rlc2NfZ290ZW50KQogCXsKKwkgICpsb2Nh bF90bHNkZXNjX2dvdGVudCA9IChiZmRfdm1hKSAtMTsKIAkgIGlmICgqbG9j YWxfZ290ID4gMCkKIAkgICAgewogCSAgICAgICpsb2NhbF9nb3QgPSBzLT5z aXplOwogCSAgICAgIGlmICgqbG9jYWxfdGxzX3R5cGUgJiBHT1RfVExTX0dE KQogCQkvKiBUTFNfR0QgcmVsb2NzIG5lZWQgYW4gOC1ieXRlIHN0cnVjdHVy ZSBpbiB0aGUgR09ULiAgKi8KIAkJcy0+c2l6ZSArPSA4OworCSAgICAgIGlm ICgqbG9jYWxfdGxzX3R5cGUgJiBHT1RfVExTX0dERVNDKQorCQl7CisJCSAg KmxvY2FsX3Rsc2Rlc2NfZ290ZW50ID0gaHRhYi0+c2dvdHBsdC0+c2l6ZQor CQkgICAgLSBlbGYzMl9hcm1fY29tcHV0ZV9qdW1wX3RhYmxlX3NpemUgKGh0 YWIpOworCQkgIGh0YWItPnNnb3RwbHQtPnNpemUgKz0gODsKKwkJICAqbG9j YWxfZ290ID0gKGJmZF92bWEpIC0yOworCisJCX0KIAkgICAgICBpZiAoKmxv Y2FsX3Rsc190eXBlICYgR09UX1RMU19JRSkKIAkJcy0+c2l6ZSArPSA0Owot CSAgICAgIGlmICgqbG9jYWxfdGxzX3R5cGUgPT0gR09UX05PUk1BTCkKLQkJ cy0+c2l6ZSArPSA0OwogCi0JICAgICAgaWYgKGluZm8tPnNoYXJlZCB8fCAq bG9jYWxfdGxzX3R5cGUgPT0gR09UX1RMU19HRCkKLQkJc3JlbC0+c2l6ZSAr PSBSRUxPQ19TSVpFIChodGFiKTsKKwkgICAgICBpZiAoKmxvY2FsX3Rsc190 eXBlICYgR09UX05PUk1BTCkKKwkJeworCQkgIC8qIElmIHRoZSBzeW1ib2wg aXMgYm90aCBHRCBhbmQgR0RFU0MsICpsb2NhbF9nb3QgbWF5IGhhdmUKKwkJ ICAgKiBiZWVuIG92ZXJ3cml0dGVuICovCisJCSAgKmxvY2FsX2dvdCA9IHMt PnNpemU7CisJCSAgcy0+c2l6ZSArPSA0OworCQl9CisKKwkgICAgICBpZiAo aW5mby0+c2hhcmVkKQorCQl7CisJCSAgaWYgKCpsb2NhbF90bHNfdHlwZSAm IEdPVF9UTFNfR0QpCisJCSAgICBzcmVsLT5zaXplICs9IFJFTE9DX1NJWkUg KGh0YWIpOworCisJCSAgaWYgKCpsb2NhbF90bHNfdHlwZSAmIEdPVF9UTFNf R0RFU0MpCisJCSAgICBodGFiLT5zcmVscGx0LT5zaXplICs9IFJFTE9DX1NJ WkUgKGh0YWIpOyAKKwkJfQogCSAgICB9CiAJICBlbHNlCiAJICAgICpsb2Nh bF9nb3QgPSAoYmZkX3ZtYSkgLTE7CkBAIC03NzEzLDYgKzgxODgsMzQgQEAg ZWxmMzJfYXJtX3NpemVfZHluYW1pY19zZWN0aW9ucyAoYmZkICogbwogICAg ICBzeW0gZHluYW1pYyByZWxvY3MuICAqLwogICBlbGZfbGlua19oYXNoX3Ry YXZlcnNlICgmIGh0YWItPnJvb3QsIGFsbG9jYXRlX2R5bnJlbG9jcywgaW5m byk7CiAKKyAgLyogRm9yIGV2ZXJ5IGp1bXAgc2xvdCByZXNlcnZlZCBpbiB0 aGUgc2dvdHBsdCwgcmVsb2NfY291bnQgaXMKKyAgICogaW5jcmVtZW50ZWQu ICBIb3dldmVyLCB3aGVuIHdlIHJlc2VydmUgc3BhY2UgZm9yIFRMUyBkZXNj cmlwdG9ycywKKyAgICogaXQncyBub3QgaW5jcmVtZW50ZWQsIHNvIGluIG9y ZGVyIHRvIGNvbXB1dGUgdGhlIHNwYWNlIHJlc2VydmVkCisgICAqIGZvciB0 aGVtLCBpdCBzdWZmaWNlcyB0byBtdWx0aXBseSB0aGUgcmVsb2MgY291bnQg YnkgdGhlIGp1bXAKKyAgICogc2xvdCBzaXplLiAgKi8KKyAgaWYgKGh0YWIt PnNyZWxwbHQpCisgICAgaHRhYi0+c2dvdHBsdF9qdW1wX3RhYmxlX3NpemUg PSBlbGYzMl9hcm1fY29tcHV0ZV9qdW1wX3RhYmxlX3NpemUoaHRhYik7CisK KyAgaWYgKGh0YWItPmR0X3Rsc2Rlc2NfcGx0KQorICAgIHsKKyAgICAgIC8q IElmIHdlJ3JlIG5vdCB1c2luZyBsYXp5IFRMUyByZWxvY2F0aW9ucywgZG9u J3QgZ2VuZXJhdGUgdGhlCisgICAgICAgKiBQTFQgYW5kIEdPVCBlbnRyaWVz IHRoZXkgcmVxdWlyZS4gICovCisgICAgICBpZiAoKGluZm8tPmZsYWdzICYg REZfQklORF9OT1cpKQorCWh0YWItPmR0X3Rsc2Rlc2NfcGx0ID0gMDsJCisg ICAgICBlbHNlCisJeworCSAgaHRhYi0+ZHRfdGxzZGVzY19nb3QgPSBodGFi LT5zZ290LT5zaXplOworCSAgaHRhYi0+c2dvdC0+c2l6ZSArPSA0OworCisJ ICAvKiBGSVhNRTogSWYgaXQgZG9lcyBub3QgYnJlYWsgYW55dGhpbmcsIHdl IGNvdWxkIHByb2JhYmx5IGp1c3Qgbm90CisJICAgKiBlbWl0IHRoZSBEVF9U TFNERVNDX3tQTFQsR09UfSBlbnRyaWVzLiBOb3Qgc3VyZSA6LSgqLworCSAg aWYgKGh0YWItPnNwbHQtPnNpemUgPT0gMCkKKwkgICAgaHRhYi0+c3BsdC0+ c2l6ZSArPSBodGFiLT5wbHRfaGVhZGVyX3NpemU7CisJICBodGFiLT5kdF90 bHNkZXNjX3BsdCA9IGh0YWItPnNwbHQtPnNpemU7CisJICBodGFiLT5zcGx0 LT5zaXplICs9IDQgKiBBUlJBWV9TSVpFIChkbF90bHNkZXNjX2xhenlfdHJh bXBvbGluZSk7CisJfQorICAgIH0KKwkgICAgICAgCiAgIC8qIFRoZSBjaGVj a19yZWxvY3MgYW5kIGFkanVzdF9keW5hbWljX3N5bWJvbCBlbnRyeSBwb2lu dHMgaGF2ZQogICAgICBkZXRlcm1pbmVkIHRoZSBzaXplcyBvZiB0aGUgdmFy aW91cyBkeW5hbWljIHNlY3Rpb25zLiAgQWxsb2NhdGUKICAgICAgbWVtb3J5 IGZvciB0aGVtLiAgKi8KQEAgLTc4MDMsNiArODMwNiwxMSBAQCBlbGYzMl9h cm1fc2l6ZV9keW5hbWljX3NlY3Rpb25zIChiZmQgKiBvCiAJCQkJICAgICBo dGFiLT51c2VfcmVsID8gRFRfUkVMIDogRFRfUkVMQSkKIAkgICAgICB8fCAh YWRkX2R5bmFtaWNfZW50cnkgKERUX0pNUFJFTCwgMCkpCiAJICAgIHJldHVy biBGQUxTRTsKKworCSAgaWYgKGh0YWItPmR0X3Rsc2Rlc2NfcGx0ICYmCisJ CSghYWRkX2R5bmFtaWNfZW50cnkoRFRfVExTREVTQ19QTFQsMCkgCisJCSB8 fCAhYWRkX2R5bmFtaWNfZW50cnkoRFRfVExTREVTQ19HT1QsMCkpKQorCSAg ICByZXR1cm4gRkFMU0U7IAogCX0KIAogICAgICAgaWYgKHJlbG9jcykKQEAg LTc4NDAsNiArODM0OCw0NCBAQCBlbGYzMl9hcm1fc2l6ZV9keW5hbWljX3Nl Y3Rpb25zIChiZmQgKiBvCiAgIHJldHVybiBUUlVFOwogfQogCisvKiBTaXpl IHNlY3Rpb25zIGV2ZW4gdG91Z2ggdGhleSdyZSBub3QgZHluYW1pYy4gV2Ug dXNlIGl0IHRvIHNldHVwCisgKiBfVExTX01PRFVMRV9CQVNFXyBpZiBuZWVk ZWQgKi8KK3N0YXRpYyBiZmRfYm9vbGVhbgorZWxmMzJfYXJtX2Fsd2F5c19z aXplX3NlY3Rpb25zIChiZmQgKm91dHB1dF9iZmQsCisJICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGJmZF9saW5rX2luZm8gKmluZm8pCit7Cisg IGFzZWN0aW9uICp0bHNfc2VjID0gZWxmX2hhc2hfdGFibGUgKGluZm8pLT50 bHNfc2VjOworCisgIGlmICh0bHNfc2VjKQorICAgIHsKKyAgICAgIHN0cnVj dCBlbGZfbGlua19oYXNoX2VudHJ5ICp0bHNiYXNlOworCisgICAgICB0bHNi YXNlID0gZWxmX2xpbmtfaGFzaF9sb29rdXAgKGVsZl9oYXNoX3RhYmxlIChp bmZvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJfVExTX01PRFVMRV9CQVNFXyIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVFJVRSwgVFJVRSwgRkFMU0UpOworCisgICAg ICBpZiAodGxzYmFzZSkKKyAgICAgICAgeworICAgICAgICAgIHN0cnVjdCBi ZmRfbGlua19oYXNoX2VudHJ5ICpiaCA9IE5VTEw7CisgICAgICAgICAgIGNv bnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQKKyAgICAgICAgICAg ID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKG91dHB1dF9iZmQpOworCisgICAg ICAgICAgaWYgKCEoX2JmZF9nZW5lcmljX2xpbmtfYWRkX29uZV9zeW1ib2wK KyAgICAgICAgICAgICAgIChpbmZvLCBvdXRwdXRfYmZkLCAiX1RMU19NT0RV TEVfQkFTRV8iLCBCU0ZfTE9DQUwsCisJICAgICAgICB0bHNfc2VjLCAwLCBO VUxMLCBGQUxTRSwKKyAgICAgICAgICAgICAgICBiZWQtPmNvbGxlY3QsICZi aCkpKQorCSAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgIAkgIHRs c2Jhc2UtPnR5cGUgPSBTVFRfVExTOworICAgICAgICAgIHRsc2Jhc2UgPSAo c3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKiliaDsKKyAgICAgICAgICB0 bHNiYXNlLT5kZWZfcmVndWxhciA9IDE7CisgICAgICAgICAgdGxzYmFzZS0+ b3RoZXIgPSBTVFZfSElEREVOOworICAgICAgICAgICgqYmVkLT5lbGZfYmFj a2VuZF9oaWRlX3N5bWJvbCkgKGluZm8sIHRsc2Jhc2UsIFRSVUUpOworICAg ICAgIH0KKyAgICAgfQorICAgICByZXR1cm4gVFJVRTsKK30KKwogLyogRmlu aXNoIHVwIGR5bmFtaWMgc3ltYm9sIGhhbmRsaW5nLiAgV2Ugc2V0IHRoZSBj b250ZW50cyBvZiB2YXJpb3VzCiAgICBkeW5hbWljIHNlY3Rpb25zIGhlcmUu ICAqLwogCkBAIC04MDQ4LDcgKzg1OTQsNyBAQCBlbGYzMl9hcm1fZmluaXNo X2R5bmFtaWNfc3ltYm9sIChiZmQgKiBvCiAgICAgfQogCiAgIGlmIChoLT5n b3Qub2Zmc2V0ICE9IChiZmRfdm1hKSAtMQotICAgICAgJiYgKGVsZjMyX2Fy bV9oYXNoX2VudHJ5IChoKS0+dGxzX3R5cGUgJiBHT1RfVExTX0dEKSA9PSAw CisgICAgICAmJiAoISBHT1RfVExTX0dEX0FOWV9QIChlbGYzMl9hcm1faGFz aF9lbnRyeSAoaCktPnRsc190eXBlKSkgCiAgICAgICAmJiAoZWxmMzJfYXJt X2hhc2hfZW50cnkgKGgpLT50bHNfdHlwZSAmIEdPVF9UTFNfSUUpID09IDAp CiAgICAgewogICAgICAgYXNlY3Rpb24gKiBzZ290OwpAQCAtODI3OSw2ICs4 ODI1LDIwIEBAIGVsZjMyX2FybV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyAo YmZkICoKIAkJfQogCSAgICAgIGJyZWFrOwogCisJICAgIGNhc2UgRFRfVExT REVTQ19QTFQ6CisgICAgICAgICAgICAgIHMgPSBodGFiLT5zcGx0OworCSAg ICAgIGR5bi5kX3VuLmRfcHRyID0gcy0+b3V0cHV0X3NlY3Rpb24tPnZtYSAr IHMtPm91dHB1dF9vZmZzZXQgKworCQkgICAgICAJCWh0YWItPmR0X3Rsc2Rl c2NfcGx0OworCSAgICAgIGJmZF9lbGYzMl9zd2FwX2R5bl9vdXQgKG91dHB1 dF9iZmQsICZkeW4sIGR5bmNvbik7CisJICAgICAgYnJlYWs7CisKKwkgICAg Y2FzZSBEVF9UTFNERVNDX0dPVDoKKyAgICAgICAgICAgICAgcyA9IGh0YWIt PnNnb3Q7CisJICAgICAgZHluLmRfdW4uZF9wdHIgPSBzLT5vdXRwdXRfc2Vj dGlvbi0+dm1hICsgcy0+b3V0cHV0X29mZnNldCArCisJCSAgICAgIAkJaHRh Yi0+ZHRfdGxzZGVzY19nb3Q7CisJICAgICAgYmZkX2VsZjMyX3N3YXBfZHlu X291dCAob3V0cHV0X2JmZCwgJmR5biwgZHluY29uKTsKKwkgICAgICBicmVh azsKKwogCSAgICAgIC8qIFNldCB0aGUgYm90dG9tIGJpdCBvZiBEVF9JTklU L0ZJTkkgaWYgdGhlCiAJCSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGlzIFRo dW1iLiAgKi8KIAkgICAgY2FzZSBEVF9JTklUOgpAQCAtODM2Niw3ICs4OTI2 LDU0IEBAIGVsZjMyX2FybV9maW5pc2hfZHluYW1pY19zZWN0aW9ucyAoYmZk ICoKICAgICAgIC8qIFVuaXhXYXJlIHNldHMgdGhlIGVudHNpemUgb2YgLnBs dCB0byA0LCBhbHRob3VnaCB0aGF0IGRvZXNuJ3QKIAkgcmVhbGx5IHNlZW0g bGlrZSB0aGUgcmlnaHQgdmFsdWUuICAqLwogICAgICAgZWxmX3NlY3Rpb25f ZGF0YSAoc3BsdC0+b3V0cHV0X3NlY3Rpb24pLT50aGlzX2hkci5zaF9lbnRz aXplID0gNDsKKyAgICAgIAorICAgICAgaWYgKGh0YWItPmR0X3Rsc2Rlc2Nf cGx0KQorCXsKKwkgIGJmZF92bWEgZ290X2FkZHJlc3MsZ290cGx0X2FkZHJl c3MsIHBsdF9hZGRyZXNzOwogCisJICBnb3RfYWRkcmVzcyA9IHNnb3QtPm91 dHB1dF9zZWN0aW9uLT52bWEgKyAKKwkJICAJCQlzZ290LT5vdXRwdXRfb2Zm c2V0OworCSAgZ290cGx0X2FkZHJlc3MgPSBodGFiLT5zZ290LT5vdXRwdXRf c2VjdGlvbi0+dm1hICsgCisJCSAgCQkJaHRhYi0+c2dvdC0+b3V0cHV0X29m ZnNldDsKKwkgIHBsdF9hZGRyZXNzID0gc3BsdC0+b3V0cHV0X3NlY3Rpb24t PnZtYSArIAorCQkgIAkJCXNwbHQtPm91dHB1dF9vZmZzZXQ7CisKKwkgIGJm ZF9wdXRfMzIgKG91dHB1dF9iZmQsIGRsX3Rsc2Rlc2NfbGF6eV90cmFtcG9s aW5lWzBdLCBzcGx0LT5jb250ZW50cyArIAorCQkJICBodGFiLT5kdF90bHNk ZXNjX3BsdCk7CisJICBiZmRfcHV0XzMyIChvdXRwdXRfYmZkLCBkbF90bHNk ZXNjX2xhenlfdHJhbXBvbGluZVsxXSwgc3BsdC0+Y29udGVudHMgKyAKKwkJ CSAgaHRhYi0+ZHRfdGxzZGVzY19wbHQrNCk7CisKKwkgIGJmZF9wdXRfMzIg KG91dHB1dF9iZmQsIGRsX3Rsc2Rlc2NfbGF6eV90cmFtcG9saW5lWzJdLCBz cGx0LT5jb250ZW50cyArIAorCQkJICBodGFiLT5kdF90bHNkZXNjX3BsdCs4 KTsKKwkgIGJmZF9wdXRfMzIgKG91dHB1dF9iZmQsIGRsX3Rsc2Rlc2NfbGF6 eV90cmFtcG9saW5lWzNdLCBzcGx0LT5jb250ZW50cyArIAorCQkJICBodGFi LT5kdF90bHNkZXNjX3BsdCsxMik7CisJICBiZmRfcHV0XzMyIChvdXRwdXRf YmZkLCBkbF90bHNkZXNjX2xhenlfdHJhbXBvbGluZVs0XSwgc3BsdC0+Y29u dGVudHMgKyAKKwkJCSAgaHRhYi0+ZHRfdGxzZGVzY19wbHQrMTYpOworCSAg YmZkX3B1dF8zMiAob3V0cHV0X2JmZCwgZGxfdGxzZGVzY19sYXp5X3RyYW1w b2xpbmVbNV0sIHNwbHQtPmNvbnRlbnRzICsgCisJCQkgIGh0YWItPmR0X3Rs c2Rlc2NfcGx0KzIwKTsgCisKKwkgIC8qIHRoZSBudW1iZXJzIGJlaW5nIGFk ZGVkIHRvIGR0X3Rsc2Rlc2NfcGx0IGFyZSAuTDAgYW5kIC5MMSByZXNwZWN0 aXZlbHkgKi8KKwkgIGJmZF9wdXRfMzIgKG91dHB1dF9iZmQsIGdvdHBsdF9h ZGRyZXNzICsgaHRhYi0+ZHRfdGxzZGVzY19nb3QKKwkJCSAgCSAgLSAocGx0 X2FkZHJlc3MgKyBodGFiLT5kdF90bHNkZXNjX3BsdCArIDB4YykgLSA4LAor CQkJCSAgc3BsdC0+Y29udGVudHMgKyBodGFiLT5kdF90bHNkZXNjX3BsdCsy NCk7CisJICBiZmRfcHV0XzMyIChvdXRwdXRfYmZkLCBnb3RfYWRkcmVzcyAt IAorCQkJICAJICAocGx0X2FkZHJlc3MgKyBodGFiLT5kdF90bHNkZXNjX3Bs dCArIDB4MTApIC0gOCwKKwkJCQkgIHNwbHQtPmNvbnRlbnRzICsgaHRhYi0+ ZHRfdGxzZGVzY19wbHQrMjgpOyAKKwl9CisKKyAgICAgIGlmIChodGFiLT50 bHNfdHJhbXBvbGluZSkKKwl7CisJICBiZmRfcHV0XzMyIChvdXRwdXRfYmZk LCB0bHNfdHJhbXBvbGluZVswXSwgc3BsdC0+Y29udGVudHMgKyAKKwkJCSAg CQkJCWh0YWItPnRsc190cmFtcG9saW5lKTsKKwkgIGJmZF9wdXRfMzIgKG91 dHB1dF9iZmQsIHRsc190cmFtcG9saW5lWzFdLCBzcGx0LT5jb250ZW50cyAr IAorCQkJICAJCQkJaHRhYi0+dGxzX3RyYW1wb2xpbmUgKyA0KTsKKwkgIGJm ZF9wdXRfMzIgKG91dHB1dF9iZmQsIHRsc190cmFtcG9saW5lWzJdLCBzcGx0 LT5jb250ZW50cyArIAorCQkJICAJCQkJaHRhYi0+dGxzX3RyYW1wb2xpbmUg KyA4KTsKKyNpZmRlZiBGT1VSX1dPUkRfUExUCisJICBiZmRfcHV0XzMyIChv dXRwdXRfYmZkLCAweDAwMDAwMDAwLCBzcGx0LT5jb250ZW50cyArIAorCQkJ ICAJCQkJaHRhYi0+dGxzX3RyYW1wb2xpbmUgKyAweGMpOworI2VuZGlmIAor CX0KICAgICAgIGlmIChodGFiLT52eHdvcmtzX3AgJiYgIWluZm8tPnNoYXJl ZCAmJiBodGFiLT5zcGx0LT5zaXplID4gMCkKIAl7CiAJICAvKiBDb3JyZWN0 IHRoZSAucmVsKGEpLnBsdC51bmxvYWRlZCByZWxvY2F0aW9ucy4gIFRoZXkg d2lsbCBoYXZlCkBAIC05MzEyLDYgKzk5MTksNyBAQCBjb25zdCBzdHJ1Y3Qg ZWxmX3NpemVfaW5mbyBlbGYzMl9hcm1fc2l6CiAjZGVmaW5lIGVsZl9iYWNr ZW5kX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zCWVsZjMyX2FybV9maW5pc2hf ZHluYW1pY19zZWN0aW9ucwogI2RlZmluZSBlbGZfYmFja2VuZF9saW5rX291 dHB1dF9zeW1ib2xfaG9vawllbGYzMl9hcm1fb3V0cHV0X3N5bWJvbF9ob29r CiAjZGVmaW5lIGVsZl9iYWNrZW5kX3NpemVfZHluYW1pY19zZWN0aW9ucwll bGYzMl9hcm1fc2l6ZV9keW5hbWljX3NlY3Rpb25zCisjZGVmaW5lIGVsZl9i YWNrZW5kX2Fsd2F5c19zaXplX3NlY3Rpb25zCWVsZjMyX2FybV9hbHdheXNf c2l6ZV9zZWN0aW9ucwogI2RlZmluZSBlbGZfYmFja2VuZF9wb3N0X3Byb2Nl c3NfaGVhZGVycwllbGYzMl9hcm1fcG9zdF9wcm9jZXNzX2hlYWRlcnMKICNk ZWZpbmUgZWxmX2JhY2tlbmRfcmVsb2NfdHlwZV9jbGFzcwkJZWxmMzJfYXJt X3JlbG9jX3R5cGVfY2xhc3MKICNkZWZpbmUgZWxmX2JhY2tlbmRfb2JqZWN0 X3AJCQllbGYzMl9hcm1fb2JqZWN0X3AKSW5kZXg6IGJmZC9saWJiZmQuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMv YmZkL2xpYmJmZC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE4NQpkaWZm IC11IC1wIC1yMS4xODUgbGliYmZkLmgKLS0tIGJmZC9saWJiZmQuaAkxOCBK dWwgMjAwNiAxNjo0NDo0NiAtMDAwMAkxLjE4NQorKysgYmZkL2xpYmJmZC5o CTE0IEF1ZyAyMDA2IDIxOjE3OjU3IC0wMDAwCkBAIC0xMjMyLDYgKzEyMzIs MTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGJmZF9yZWxvY19jb2Rl XwogICAiQkZEX1JFTE9DX0FSTV9UTFNfVFBPRkYzMiIsCiAgICJCRkRfUkVM T0NfQVJNX1RMU19JRTMyIiwKICAgIkJGRF9SRUxPQ19BUk1fVExTX0xFMzIi LAorICAiQkZEX1JFTE9DX0FSTV9UTFNfR09UREVTQyIsCisgICJCRkRfUkVM T0NfQVJNX1RMU19DQUxMIiwKKyAgIkJGRF9SRUxPQ19BUk1fVExTX0RFU0NT RVEiLAorICAiQkZEX1JFTE9DX0FSTV9UTFNfREVTQyIsCiAgICJCRkRfUkVM T0NfQVJNX0FMVV9QQ19HMF9OQyIsCiAgICJCRkRfUkVMT0NfQVJNX0FMVV9Q Q19HMCIsCiAgICJCRkRfUkVMT0NfQVJNX0FMVV9QQ19HMV9OQyIsCkluZGV4 OiBiZmQvcmVsb2MuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvY3ZzL3NyYy9zcmMvYmZkL3JlbG9jLmMsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMTU2CmRpZmYgLXUgLXAgLXIxLjE1NiByZWxvYy5jCi0tLSBiZmQv cmVsb2MuYwkxOCBKdWwgMjAwNiAxNjo0NDo0NiAtMDAwMAkxLjE1NgorKysg YmZkL3JlbG9jLmMJMTQgQXVnIDIwMDYgMjE6MTg6MDggLTAwMDAKQEAgLTI3 NTMsNiArMjc1MywxNCBAQCBFTlVNWAogICBCRkRfUkVMT0NfQVJNX1RMU19J RTMyCiBFTlVNWAogICBCRkRfUkVMT0NfQVJNX1RMU19MRTMyCitFTlVNWAor ICBCRkRfUkVMT0NfQVJNX1RMU19HT1RERVNDCitFTlVNWAorICBCRkRfUkVM T0NfQVJNX1RMU19DQUxMCitFTlVNWAorICBCRkRfUkVMT0NfQVJNX1RMU19E RVNDU0VRCitFTlVNWAorICBCRkRfUkVMT0NfQVJNX1RMU19ERVNDCiBFTlVN RE9DCiAgIEFSTSB0aHJlYWQtbG9jYWwgc3RvcmFnZSByZWxvY2F0aW9ucy4K IApJbmRleDogZ2FzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2FzL0NoYW5nZUxvZyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4yOTgzCmRpZmYgLXUgLXAgLXIxLjI5ODMgQ2hh bmdlTG9nCi0tLSBnYXMvQ2hhbmdlTG9nCTEyIEF1ZyAyMDA2IDIzOjAwOjM0 IC0wMDAwCTEuMjk4MworKysgZ2FzL0NoYW5nZUxvZwkxNCBBdWcgMjAwNiAy MToxODoxNyAtMDAwMApAQCAtMSwzICsxLDEzIEBACisyMDA2LTA4LTE0ICBH bGF1YmVyIGRlIE9saXZlaXJhIENvc3RhICA8Z2xvbW1lckBnbWFpbC5jb20+ CisKKwkqIGNvbmZpZy90Yy1hcm0uYyAoc19hcm1fdGxzX2Rlc2NzZXEpOiBI YW5kbGVzIG5ldyBUTFNfQVJNX0RFU0NTRVEKKwlyZWxvY2F0aW9uLgorCSht ZF9wc2V1ZG9fdGFibGUpOiBBZGRlZCBzdHJpbmcgZm9yIHRoZSBhZm9yZW1l bnRpb25lZCByZWxvY2F0aW9uLgorCShlbmNvZGVfYnJhbmNoKTogQWRkcyBS X0FSTV9UTFNfQ0FMTCB0byB0aGUgYWxsb3dlZCBicmFuY2ggcmVsb2NzLgor CShyZWxvY19uYW1lcyk6IEFkZHMgbmV3IHJlbG9jYXRpb25zLgorCShtZF9h cHBseV9maXgpOiBTZXRzIHN5bWJvbHMgYXMgdGhyZWFkIGxvY2FsIGluIGZh Y2Ugb2YgbmV3IHJlbG9jcy4KKwkodGNfZ2VuX3JlbG9jKTogSGFuZGxlcyBu ZXcgcmVsb2NhdGlvbnMuCisKIDIwMDYtMDgtMTIgIFRoaWVtbyBTZXVmZXIg IDx0aHNAbmV0d29ya25vLmRlPgogCiAJKiBjb25maWcvdGMtbWlwcy5jICht aXBzMTZfaXApOiBGaXggYXJndW1lbnQgcmVnaXN0ZXIgaGFuZGxpbmcKSW5k ZXg6IGdhcy9jb25maWcvdGMtYXJtLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dhcy9jb25maWcvdGMtYXJtLmMs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjg0CmRpZmYgLXUgLXAgLXIxLjI4 NCB0Yy1hcm0uYwotLS0gZ2FzL2NvbmZpZy90Yy1hcm0uYwk4IEF1ZyAyMDA2 IDA4OjIzOjI1IC0wMDAwCTEuMjg0CisrKyBnYXMvY29uZmlnL3RjLWFybS5j CTE0IEF1ZyAyMDA2IDIxOjE5OjMyIC0wMDAwCkBAIC0zODc0LDYgKzM4NzQs MjggQEAgYmFkOgogfQogI2VuZGlmIC8qIE9CSl9FTEYgKi8KIAorLyogRW1p dCBhIGZpeCBmb3IgdGhlIHN5bWJvbCAqLyAKK3N0YXRpYyB2b2lkCitzX2Fy bV90bHNfZGVzY3NlcSAoaW50IGlnbm9yZWQgQVRUUklCVVRFX1VOVVNFRCkK K3sKKyAgY2hhciAqcDsKKyAgZXhwcmVzc2lvblMgZXhwOworI2lmZGVmIG1k X2ZsdXNoX3BlbmRpbmdfb3V0cHV0CisgIG1kX2ZsdXNoX3BlbmRpbmdfb3V0 cHV0ICgpOworI2VuZGlmCisKKyNpZmRlZiBtZF9jb25zX2FsaWduCisgIG1k X2NvbnNfYWxpZ24gKDQpOworI2VuZGlmCisKKyAgLyogU2luY2Ugd2UncmUg anVzdCBsYWJlbGluZyB0aGUgY29kZSwgdGhlcmUncyBubyBuZWVkIHRvIGRl ZmluZQorICAgKiBhIG1hcHBpbmcgc3ltYm9sICovCisgIGV4cHJlc3Npb24g KCZleHApOworICBwID0gb2JzdGFja19uZXh0X2ZyZWUgKCZmcmNoYWluX25v dy0+ZnJjaF9vYnN0YWNrKTsKKyAgZml4X25ld19hcm0gKGZyYWdfbm93LCBw IC0gZnJhZ19ub3ctPmZyX2xpdGVyYWwsIDQsICZleHAsIDAsCisJICAgICAg QkZEX1JFTE9DX0FSTV9UTFNfREVTQ1NFUSk7Cit9CisKIHN0YXRpYyB2b2lk IHNfYXJtX2FyY2ggKGludCk7CiBzdGF0aWMgdm9pZCBzX2FybV9jcHUgKGlu dCk7CiBzdGF0aWMgdm9pZCBzX2FybV9mcHUgKGludCk7CkBAIC0zOTQ2LDYg KzM5NjgsNyBAQCBjb25zdCBwc2V1ZG9fdHlwZVMgbWRfcHNldWRvX3RhYmxl W10gPQogICB7ICJzZXRmcCIsCQlzX2FybV91bndpbmRfc2V0ZnAsCTAgfSwK ICAgeyAidW53aW5kX3JhdyIsCXNfYXJtX3Vud2luZF9yYXcsCTAgfSwKICAg eyAiZWFiaV9hdHRyaWJ1dGUiLAlzX2FybV9lYWJpX2F0dHJpYnV0ZSwJMCB9 LAorICB7ICJ0bHNkZXNjc2VxIiwJc19hcm1fdGxzX2Rlc2NzZXEsICAgICAg MCB9LAogI2Vsc2UKICAgeyAid29yZCIsCSAgIGNvbnMsIDR9LAogCkBAIC02 NjIyLDkgKzY2NDUsMTcgQEAgZW5jb2RlX2JyYW5jaCAoaW50IGRlZmF1bHRf cmVsb2MpCiB7CiAgIGlmIChpbnN0Lm9wZXJhbmRzWzBdLmhhc3JlbG9jKQog ICAgIHsKLSAgICAgIGNvbnN0cmFpbnQgKGluc3Qub3BlcmFuZHNbMF0uaW1t ICE9IEJGRF9SRUxPQ19BUk1fUExUMzIsCi0JCSAgXygidGhlIG9ubHkgc3Vm Zml4IHZhbGlkIGhlcmUgaXMgJyhwbHQpJyIpKTsKLSAgICAgIGluc3QucmVs b2MudHlwZQk9IEJGRF9SRUxPQ19BUk1fUExUMzI7CisgICAgICBjb25zdHJh aW50ICgoaW5zdC5vcGVyYW5kc1swXS5pbW0gIT0gQkZEX1JFTE9DX0FSTV9Q TFQzMikgJiYKKwkJICAoaW5zdC5vcGVyYW5kc1swXS5pbW0gIT0gQkZEX1JF TE9DX0FSTV9UTFNfQ0FMTCksCisJCSAgXygidGhlIG9ubHkgdmFsaWQgc3Vm Zml4ZXMgaGVyZSBhcmUgJyhwbHQpJyBhbmQgJyh0bHNjYWxsKSciKSk7Cisg ICAgICBpZiAoaW5zdC5vcGVyYW5kc1swXS5pbW0gPT0gQkZEX1JFTE9DX0FS TV9QTFQzMikKKyAgICAgICAgeworICAgICAgICAgIGluc3QucmVsb2MudHlw ZSA9IEJGRF9SRUxPQ19BUk1fUExUMzI7CisgICAgICAgIH0KKyAgICAgIGVs c2UKKyAgICAgICAgeworICAgICAgICAgIGluc3QucmVsb2MudHlwZSA9IEJG RF9SRUxPQ19BUk1fVExTX0NBTEw7CisgICAgICAgIH0KICAgICB9CiAgIGVs c2UKICAgICB7CkBAIC0xNDE4NywxNyArMTQyMTgsMjAgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBhc21fc2hpZnRfbmFtZSBzaGlmdAogI2lmZGVmIE9CSl9F TEYKIHN0YXRpYyBzdHJ1Y3QgcmVsb2NfZW50cnkgcmVsb2NfbmFtZXNbXSA9 CiB7Ci0gIHsgImdvdCIsICAgICBCRkRfUkVMT0NfQVJNX0dPVDMyICAgfSwJ IHsgIkdPVCIsICAgICBCRkRfUkVMT0NfQVJNX0dPVDMyICAgfSwKLSAgeyAi Z290b2ZmIiwgIEJGRF9SRUxPQ19BUk1fR09UT0ZGICB9LAkgeyAiR09UT0ZG IiwgIEJGRF9SRUxPQ19BUk1fR09UT0ZGICB9LAotICB7ICJwbHQiLCAgICAg QkZEX1JFTE9DX0FSTV9QTFQzMiAgIH0sCSB7ICJQTFQiLCAgICAgQkZEX1JF TE9DX0FSTV9QTFQzMiAgIH0sCi0gIHsgInRhcmdldDEiLCBCRkRfUkVMT0Nf QVJNX1RBUkdFVDEgfSwJIHsgIlRBUkdFVDEiLCBCRkRfUkVMT0NfQVJNX1RB UkdFVDEgfSwKLSAgeyAidGFyZ2V0MiIsIEJGRF9SRUxPQ19BUk1fVEFSR0VU MiB9LAkgeyAiVEFSR0VUMiIsIEJGRF9SRUxPQ19BUk1fVEFSR0VUMiB9LAot ICB7ICJzYnJlbCIsICAgQkZEX1JFTE9DX0FSTV9TQlJFTDMyIH0sCSB7ICJT QlJFTCIsICAgQkZEX1JFTE9DX0FSTV9TQlJFTDMyIH0sCi0gIHsgInRsc2dk IiwgICBCRkRfUkVMT0NfQVJNX1RMU19HRDMyfSwgIHsgIlRMU0dEIiwgICBC RkRfUkVMT0NfQVJNX1RMU19HRDMyfSwKLSAgeyAidGxzbGRtIiwgIEJGRF9S RUxPQ19BUk1fVExTX0xETTMyfSwgeyAiVExTTERNIiwgIEJGRF9SRUxPQ19B Uk1fVExTX0xETTMyfSwKLSAgeyAidGxzbGRvIiwgIEJGRF9SRUxPQ19BUk1f VExTX0xETzMyfSwgeyAiVExTTERPIiwgIEJGRF9SRUxPQ19BUk1fVExTX0xE TzMyfSwKLSAgeyAiZ290dHBvZmYiLEJGRF9SRUxPQ19BUk1fVExTX0lFMzJ9 LCAgeyAiR09UVFBPRkYiLEJGRF9SRUxPQ19BUk1fVExTX0lFMzJ9LAotICB7 ICJ0cG9mZiIsICAgQkZEX1JFTE9DX0FSTV9UTFNfTEUzMn0sICB7ICJUUE9G RiIsICAgQkZEX1JFTE9DX0FSTV9UTFNfTEUzMn0KKyAgeyAiZ290IiwgICAg IEJGRF9SRUxPQ19BUk1fR09UMzIgICB9LAkJeyAiR09UIiwgICAgIEJGRF9S RUxPQ19BUk1fR09UMzIgICB9LAorICB7ICJnb3RvZmYiLCAgQkZEX1JFTE9D X0FSTV9HT1RPRkYgIH0sCQl7ICJHT1RPRkYiLCAgQkZEX1JFTE9DX0FSTV9H T1RPRkYgIH0sCisgIHsgInBsdCIsICAgICBCRkRfUkVMT0NfQVJNX1BMVDMy ICAgfSwJCXsgIlBMVCIsICAgICBCRkRfUkVMT0NfQVJNX1BMVDMyICAgfSwK KyAgeyAidGFyZ2V0MSIsIEJGRF9SRUxPQ19BUk1fVEFSR0VUMSB9LAkJeyAi VEFSR0VUMSIsIEJGRF9SRUxPQ19BUk1fVEFSR0VUMSB9LAorICB7ICJ0YXJn ZXQyIiwgQkZEX1JFTE9DX0FSTV9UQVJHRVQyIH0sCQl7ICJUQVJHRVQyIiwg QkZEX1JFTE9DX0FSTV9UQVJHRVQyIH0sCisgIHsgInNicmVsIiwgICBCRkRf UkVMT0NfQVJNX1NCUkVMMzIgfSwJCXsgIlNCUkVMIiwgICBCRkRfUkVMT0Nf QVJNX1NCUkVMMzIgfSwKKyAgeyAidGxzZ2QiLCAgIEJGRF9SRUxPQ19BUk1f VExTX0dEMzJ9LAkJeyAiVExTR0QiLCAgIEJGRF9SRUxPQ19BUk1fVExTX0dE MzJ9LAorICB7ICJ0bHNsZG0iLCAgQkZEX1JFTE9DX0FSTV9UTFNfTERNMzJ9 LAl7ICJUTFNMRE0iLCAgQkZEX1JFTE9DX0FSTV9UTFNfTERNMzJ9LAorICB7 ICJ0bHNsZG8iLCAgQkZEX1JFTE9DX0FSTV9UTFNfTERPMzJ9LAl7ICJUTFNM RE8iLCAgQkZEX1JFTE9DX0FSTV9UTFNfTERPMzJ9LAorICB7ICJnb3R0cG9m ZiIsQkZEX1JFTE9DX0FSTV9UTFNfSUUzMn0sCQl7ICJHT1RUUE9GRiIsQkZE X1JFTE9DX0FSTV9UTFNfSUUzMn0sCisgIHsgInRwb2ZmIiwgICBCRkRfUkVM T0NfQVJNX1RMU19MRTMyfSwJCXsgIlRQT0ZGIiwgICBCRkRfUkVMT0NfQVJN X1RMU19MRTMyfSwKKyAgeyAidGxzZGVzYyIsIEJGRF9SRUxPQ19BUk1fVExT X0dPVERFU0N9LAl7ICJUTFNERVNDIixCRkRfUkVMT0NfQVJNX1RMU19HT1RE RVNDfSwKKyAgeyAidGxzY2FsbCIsIEJGRF9SRUxPQ19BUk1fVExTX0NBTEx9 LAkJeyAiVExTQ0FMTCIsIEJGRF9SRUxPQ19BUk1fVExTX0NBTEx9LAorICB7 ICJ0bHNkZXNjc2VxIiwgQkZEX1JFTE9DX0FSTV9UTFNfREVTQ1NFUX0sCXsg IlRMU0RFU0NTRVEiLCBCRkRfUkVMT0NfQVJNX1RMU19ERVNDU0VRfSAKIH07 CiAjZW5kaWYKIApAQCAtMTc5MjYsNiArMTc5NjAsMTIgQEAgbWRfYXBwbHlf Zml4IChmaXhTICoJZml4UCwKICAgICAgIGJyZWFrOwogCiAjaWZkZWYgT0JK X0VMRgorICAgIGNhc2UgQkZEX1JFTE9DX0FSTV9UTFNfQ0FMTDoKKyAgICBj YXNlIEJGRF9SRUxPQ19BUk1fVExTX0RFU0NTRVE6CisgICAgICBTX1NFVF9U SFJFQURfTE9DQUwgKGZpeFAtPmZ4X2FkZHN5KTsKKyAgICAgIGJyZWFrOwor CisgICAgY2FzZSBCRkRfUkVMT0NfQVJNX1RMU19HT1RERVNDOgogICAgIGNh c2UgQkZEX1JFTE9DX0FSTV9UTFNfR0QzMjoKICAgICBjYXNlIEJGRF9SRUxP Q19BUk1fVExTX0xFMzI6CiAgICAgY2FzZSBCRkRfUkVMT0NfQVJNX1RMU19J RTMyOgpAQCAtMTg1MDQsNiArMTg1NDQsOCBAQCB0Y19nZW5fcmVsb2MgKGFz ZWN0aW9uICpzZWN0aW9uLCBmaXhTICpmCiAgICAgICByZXR1cm4gTlVMTDsK IAogI2lmZGVmIE9CSl9FTEYKKyAgICBjYXNlIEJGRF9SRUxPQ19BUk1fVExT X0NBTEw6CisgICAgY2FzZSBCRkRfUkVMT0NfQVJNX1RMU19ERVNDU0VROgog ICAgIGNhc2UgQkZEX1JFTE9DX0FSTV9HT1QzMjoKICAgICBjYXNlIEJGRF9S RUxPQ19BUk1fR09UT0ZGOgogICAgIGNhc2UgQkZEX1JFTE9DX0FSTV9QTFQz MjoKQEAgLTE4NTQ3LDYgKzE4NTg5LDcgQEAgdGNfZ2VuX3JlbG9jIChhc2Vj dGlvbiAqc2VjdGlvbiwgZml4UyAqZgogICAgICAgY29kZSA9IGZpeHAtPmZ4 X3JfdHlwZTsKICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBCRkRfUkVMT0Nf QVJNX1RMU19HT1RERVNDOgogICAgIGNhc2UgQkZEX1JFTE9DX0FSTV9UTFNf R0QzMjoKICAgICBjYXNlIEJGRF9SRUxPQ19BUk1fVExTX0lFMzI6CiAgICAg Y2FzZSBCRkRfUkVMT0NfQVJNX1RMU19MRE0zMjoKQEAgLTE4ODAxLDYgKzE4 ODQ0LDEwIEBAIGFybV9maXhfYWRqdXN0YWJsZSAoZml4UyAqIGZpeFApCiAg ICAgICB8fCBmaXhQLT5meF9yX3R5cGUgPT0gQkZEX1JFTE9DX0FSTV9UTFNf SUUzMgogICAgICAgfHwgZml4UC0+Znhfcl90eXBlID09IEJGRF9SRUxPQ19B Uk1fVExTX0xETTMyCiAgICAgICB8fCBmaXhQLT5meF9yX3R5cGUgPT0gQkZE X1JFTE9DX0FSTV9UTFNfTERPMzIKKyAgICAgIHx8IGZpeFAtPmZ4X3JfdHlw ZSA9PSBCRkRfUkVMT0NfQVJNX1RMU19HT1RERVNDCisgICAgICB8fCBmaXhQ LT5meF9yX3R5cGUgPT0gQkZEX1JFTE9DX0FSTV9UTFNfQ0FMTAorICAgICAg fHwgZml4UC0+Znhfcl90eXBlID09IEJGRF9SRUxPQ19BUk1fVExTX0RFU0NT RVEKKyAgICAgIHx8IGZpeFAtPmZ4X3JfdHlwZSA9PSBCRkRfUkVMT0NfQVJN X1RMU19ERVNDCiAgICAgICB8fCBmaXhQLT5meF9yX3R5cGUgPT0gQkZEX1JF TE9DX0FSTV9UQVJHRVQyKQogICAgIHJldHVybiAwOwogCkluZGV4OiBnYXMv dGVzdHN1aXRlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2FzL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTA2MgpkaWZmIC11IC1wIC1yMS4x MDYyIENoYW5nZUxvZwotLS0gZ2FzL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMTIg QXVnIDIwMDYgMjM6MDA6MzUgLTAwMDAJMS4xMDYyCisrKyBnYXMvdGVzdHN1 aXRlL0NoYW5nZUxvZwkxNCBBdWcgMjAwNiAyMToxOTozNyAtMDAwMApAQCAt MSwzICsxLDggQEAKKzIwMDYtMDgtMTQgIEdsYXViZXIgZGUgT2xpdmVpcmEg Q29zdGEgIDxnbG9tbWVyQGdtYWlsLmNvbT4KKworCSogZ2FzL2FybS90bHMu czogR2VuZXJhdGUgbmV3IHJlbG9jYXRpb24gdHlwZXMuCisJKiBnYXMvYXJt L3Rscy5kOiBBZGRzIGNoZWNrcyBmb3IgbmV3IFRMUyByZWxvY2F0aW9uIHR5 cGVzLgorCiAyMDA2LTA4LTEyICBUaGllbW8gU2V1ZmVyICA8dGhzQG5ldHdv cmtuby5kZT4KIAogCSogZ2FzL21pcHMvbWlwczE2LXNhdmUuZDogRml4IHRl c3RjYXNlLgpJbmRleDogZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL3Rscy5kCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n YXMvdGVzdHN1aXRlL2dhcy9hcm0vdGxzLmQsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMwpkaWZmIC11IC1wIC1yMS4zIHRscy5kCi0tLSBnYXMvdGVzdHN1 aXRlL2dhcy9hcm0vdGxzLmQJNCBKdWwgMjAwNSAxNDo1NTo1MiAtMDAwMAkx LjMKKysrIGdhcy90ZXN0c3VpdGUvZ2FzL2FybS90bHMuZAkxNCBBdWcgMjAw NiAyMToxOTozOSAtMDAwMApAQCAtMTQsMTIgKzE0LDE3IEBAIERpc2Fzc2Vt Ymx5IG9mIHNlY3Rpb24gLnRleHQ6CiAwMCswIDxtYWluPjoKICAgIDA6CWUx YTAwMDAwIAlub3AJCQlcKG1vdiByMCxyMFwpCiAgICA0OgllMWEwMDAwMCAJ bm9wCQkJXChtb3YgcjAscjBcKQotICAgODoJZTFhMGYwMGUgCW1vdglwYywg bHIKLSAgIGM6CTAwMDAwMDAwIAlhbmRlcQlyMCwgcjAsIHIwCi0JCQljOiBS X0FSTV9UTFNfR0QzMglhCisJCQk0OiBSX0FSTV9UTFNfREVTQ1NFUQlmCisg ICA4OgllYjAwMDAwMCAJYmwJOCAuKgorCQkJODogUl9BUk1fVExTX0NBTEwJ ZQorICAgYzoJZTFhMGYwMGUgCW1vdglwYywgbHIKICAgMTA6CTAwMDAwMDA0 IAlhbmRlcQlyMCwgcjAsIHI0Ci0JCQkxMDogUl9BUk1fVExTX0xETTMyCWIK KwkJCTEwOiBSX0FSTV9UTFNfR0QzMglhCiAgIDE0OgkwMDAwMDAwOCAJYW5k ZXEJcjAsIHIwLCByOAotCQkJMTQ6IFJfQVJNX1RMU19JRTMyCWMKLSAgMTg6 CTAwMDAwMDAwIAlhbmRlcQlyMCwgcjAsIHIwCi0JCQkxODogUl9BUk1fVExT X0xFMzIJZAorCQkJMTQ6IFJfQVJNX1RMU19MRE0zMgliCisgIDE4OgkwMDAw MDAwYyAJYW5kZXEJcjAsIHIwLCBpcAorCQkJMTg6IFJfQVJNX1RMU19JRTMy CWMKKyAgMWM6CTAwMDAwMDAwIAlhbmRlcQlyMCwgcjAsIHIwCisJCQkxYzog Ul9BUk1fVExTX0xFMzIJZAorICAyMDoJMDAwMDAwMWMgCWFuZGVxCXIwLCBy MCwgaXAsIGxzbCByMAorCQkJMjA6IFJfQVJNX1RMU19HT1RERVNDCWUKSW5k ZXg6IGdhcy90ZXN0c3VpdGUvZ2FzL2FybS90bHMucwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2FzL3Rlc3RzdWl0 ZS9nYXMvYXJtL3Rscy5zLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlm ZiAtdSAtcCAtcjEuMiB0bHMucwotLS0gZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJt L3Rscy5zCTI5IE1hciAyMDA1IDE2OjU0OjIyIC0wMDAwCTEuMgorKysgZ2Fz L3Rlc3RzdWl0ZS9nYXMvYXJtL3Rscy5zCTE0IEF1ZyAyMDA2IDIxOjE5OjM5 IC0wMDAwCkBAIC00LDcgKzQsOSBAQAogbWFpbjoKIAlub3AKIC5MMjoKKy50 bHNkZXNjc2VxIGYKIAlub3AKKwlibAllKHRsc2NhbGwpCiAJbW92CXBjLCBs cgogCiAuTHBvb2w6CkBAIC0xMiwzICsxNCw1IEBAIG1haW46CiAJLndvcmQJ Yih0bHNsZG0pICsgKC4gLSAuTDIgLSA4KQogCS53b3JkCWMoZ290dHBvZmYp ICsgKC4gLSAuTDIgLSA4KQogCS53b3JkCWQodHBvZmYpCisJLndvcmQJZSh0 bHNkZXNjKSArICguIC0gLkwyKQorCQpJbmRleDogaW5jbHVkZS9lbGYvQ2hh bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv c3JjL3NyYy9pbmNsdWRlL2VsZi9DaGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMjcyCmRpZmYgLXUgLXAgLXIxLjI3MiBDaGFuZ2VMb2cKLS0t IGluY2x1ZGUvZWxmL0NoYW5nZUxvZwkxMCBKdWwgMjAwNiAyMTo0MDoyMyAt MDAwMAkxLjI3MgorKysgaW5jbHVkZS9lbGYvQ2hhbmdlTG9nCTE0IEF1ZyAy MDA2IDIxOjE5OjU4IC0wMDAwCkBAIC0xLDMgKzEsOCBAQAorMjAwNi0wOC0x NCAgR2xhdWJlciBkZSBPbGl2ZWlyYSBDb3N0YSAgPGdsb21tZXJAZ21haWwu Y29tPgorCisJKiBhcm0uaDogQXNzaWduZWQgbmV3IHJlbG9jYXRpb24gbnVt YmVycyBmb3IgbmV3IFRMUworCXJlbG9jYXRpb25zCisKIDIwMDYtMDctMTAg IEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgogCiAJKiBjb21t b24uaCAoU0hUX0dOVV9IQVNILCBEVF9HTlVfSEFTSCk6IERlZmluZS4KSW5k ZXg6IGluY2x1ZGUvZWxmL2FybS5oCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9pbmNsdWRlL2VsZi9hcm0uaCx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS4zMApkaWZmIC11IC1wIC1yMS4zMCBhcm0u aAotLS0gaW5jbHVkZS9lbGYvYXJtLmgJMTUgSnVuIDIwMDYgMTE6MDM6MDEg LTAwMDAJMS4zMAorKysgaW5jbHVkZS9lbGYvYXJtLmgJMTQgQXVnIDIwMDYg MjE6MjA6MDAgLTAwMDAKQEAgLTE3OCw3ICsxNzgsMTAgQEAgU1RBUlRfUkVM T0NfTlVNQkVSUyAoZWxmX2FybV9yZWxvY190eXBlKQogICBSRUxPQ19OVU1C RVIgKFJfQVJNX1RITV9NT1ZXX0JSRUxfTkMsCSA4NykKICAgUkVMT0NfTlVN QkVSIChSX0FSTV9USE1fTU9WVF9CUkVMLCAgIAkgODgpCiAgIFJFTE9DX05V TUJFUiAoUl9BUk1fVEhNX01PVldfQlJFTCwgICAJIDg5KQotICAvKiA5MC05 MyB1bmFsbG9jYXRlZCAqLworICBSRUxPQ19OVU1CRVIgKFJfQVJNX1RMU19H T1RERVNDLCAgIAkgOTApCisgIFJFTE9DX05VTUJFUiAoUl9BUk1fVExTX0NB TEwsICAgCSA5MSkKKyAgUkVMT0NfTlVNQkVSIChSX0FSTV9UTFNfREVTQ1NF USwgICAJIDkyKQorICBSRUxPQ19OVU1CRVIgKFJfQVJNX1RMU19ERVNDLCAg IAkgOTMpCiAgIFJFTE9DX05VTUJFUiAoUl9BUk1fUExUMzJfQUJTLCAgICAg ICAJIDk0KQogICBSRUxPQ19OVU1CRVIgKFJfQVJNX0dPVF9BQlMsCSAgICAg ICAJIDk1KQogICBSRUxPQ19OVU1CRVIgKFJfQVJNX0dPVF9QUkVMLAkgICAg ICAgCSA5NikKSW5kZXg6IGxkL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2xkL3Rl c3RzdWl0ZS9DaGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNjcx CmRpZmYgLXUgLXAgLXIxLjY3MSBDaGFuZ2VMb2cKLS0tIGxkL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2cJMTEgQXVnIDIwMDYgMTQ6MDU6MTIgLTAwMDAJMS42NzEK KysrIGxkL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMTQgQXVnIDIwMDYgMjE6MjA6 MDcgLTAwMDAKQEAgLTEsMyArMSwyMiBAQAorMjAwNi0wOC0xNCAgR2xhdWJl ciBkZSBPbGl2ZWlyYSBDb3N0YSAgPGdsb21tZXJAZ21haWwuY29tPgorCisJ KiBsZC1hcm0vYXJtLWVsZi5leHA6IEFkZGVkIHRlc3RzIGZvciBuZXcgVExT IGhhbmRsaW5nIHJlbG9jYXRpb25zLgorCSogbGQtYXJtL3Rscy1nZGllcmVs YXguczogTmV3IGZpbGUuCisJKiBsZC1hcm0vdGxzLWdkaWVyZWxheC5kOiBM aWtld2lzZS4KKwkqIGxkLWFybS90bHMtZ2RpZXJlbGF4Mi5zOiBMaWtld2lz ZS4KKwkqIGxkLWFybS90bHMtZ2RpZXJlbGF4Mi5kOiBMaWtld2lzZS4KKwkq IGxkLWFybS90bHMtZ2RsZXJlbGF4LnM6IExpa2V3aXNlLgorCSogbGQtYXJt L3Rscy1nZGxlcmVsYXguZDogTGlrZXdpc2UuCisJKiBsZC1hcm0vdGxzLWdk ZXNjLW5sYXp5LnM6IExpa2V3aXNlLgorCSogbGQtYXJtL3Rscy1nZGVzYy1u bGF6eS5nOiBMaWtld2lzZS4KKwkqIGxkLWFybS90bHMtZ2Rlc2MucjogTGlr ZXdpc2UuCisJKiBsZC1hcm0vdGxzLWRlc2NzZXEuZDogTGlrZXdpc2UuCisJ KiBsZC1hcm0vdGxzLWRlc2NzZXEucjogTGlrZXdpc2UuCisJKiBsZC1hcm0v dGxzLWRlc2NzZXEuczogTGlrZXdpc2UuCisJKiBsZC1hcm0vdGxzLWdkZXNj LnM6IExpa2V3aXNlLgorCSogbGQtYXJtL3Rscy1nZGVzYy5yOiBMaWtld2lz ZS4KKwkqIGxkLWFybS90bHMtZ2Rlc2MuZDogTGlrZXdpc2UuCisJCQogMjAw Ni0wOC0xMSAgVGhpZW1vIFNldWZlciAgPHRoc0BtaXBzLmNvbT4KIAogCSog bGQtZWxmY29tbS9lbGZjb21tLmV4cCAoZHVtcF9jb21tb24xKTogRXh0ZW5k IHJlZ2V4cCB0byBtYXRjaCBhbHNvCkluZGV4OiBsZC90ZXN0c3VpdGUvbGQt YXJtL2FybS1lbGYuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy9sZC90ZXN0c3VpdGUvbGQtYXJtL2FybS1lbGYu ZXhwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE2CmRpZmYgLXUgLXAgLXIx LjE2IGFybS1lbGYuZXhwCi0tLSBsZC90ZXN0c3VpdGUvbGQtYXJtL2FybS1l bGYuZXhwCTE5IEp1biAyMDA2IDE0OjIyOjI3IC0wMDAwCTEuMTYKKysrIGxk L3Rlc3RzdWl0ZS9sZC1hcm0vYXJtLWVsZi5leHAJMTQgQXVnIDIwMDYgMjE6 MjA6MDcgLTAwMDAKQEAgLTExOSw2ICsxMTksMjcgQEAgc2V0IGFybWVsZnRl c3RzIHsKICAgICB7IlRMUyBkeW5hbWljIGFwcGxpY2F0aW9uIiAiLVQgYXJt LWR5bi5sZCB0bXBkaXIvdGxzLWxpYi5zbyIgIiIge3Rscy1hcHAuc30KICAg ICAge3tvYmpkdW1wIC1mZHcgdGxzLWFwcC5kfSB7b2JqZHVtcCAtUncgdGxz LWFwcC5yfX0KICAgICAgInRscy1hcHAifQorICAgIHsiVExTIGdudSBzaGFy ZWQgbGlicmFyeSIgIi1zaGFyZWQgLVQgYXJtLWR5bi5sZCIgIiIge3Rscy1n ZGVzYy5zfQorICAgICB7e29iamR1bXAgLWZkdyB0bHMtZ2Rlc2MuZH0ge29i amR1bXAgLVJ3IHRscy1nZGVzYy5yfX0KKyAgICAgInRscy1saWIyLnNvIn0K KyAgICB7IlRMUyBnbnUgc2hhcmVkIGxpYnJhcnkgaW5saW5lZCB0cmFtcG9s aW5lIiAiLXNoYXJlZCAtVCBhcm0tZHluLmxkIiAiIiB7dGxzLWRlc2NzZXEu c30KKyAgICAge3tvYmpkdW1wIC1mZHcgdGxzLWRlc2NzZXEuZH0ge29iamR1 bXAgLVJ3IHRscy1kZXNjc2VxLnJ9fQorICAgICAidGxzLWxpYjJpbmxpbmUu c28ifQorICAgIHsiVExTIGdudSBzaGFyZWQgbGlicmFyeSBub24tbGF6eSIg Ii16IG5vdyAtc2hhcmVkIC1UIGFybS1keW4ubGQiICIiIHt0bHMtZ2Rlc2Mu c30KKyAgICAge3tyZWFkZWxmICIteCAuZ290IiB0bHMtZ2Rlc2Mtbmxhenku Z319CisgICAgICJ0bHMtbGliMi1ubGF6eS5zbyJ9CisgICAgeyJUTFMgZ251 IEdEIHRvIElFIHJlbGF4YXRpb24iICItc3RhdGljIC1UIGFybS1keW4ubGQi ICIiIHt0bHMtZ2RpZXJlbGF4LnN9CisgICAgIHt7b2JqZHVtcCAtZmR3IHRs cy1nZGllcmVsYXguZH19CisgICAgICJ0bHMtYXBwLXJlbC1pZSJ9CisgICAg eyJUTFMgZ251IEdEIHRvIElFIHNoYXJlZCByZWxheGF0aW9uIiAiLXNoYXJl ZCAtVCBhcm0tZHluLmxkIiAiIiB7dGxzLWdkaWVyZWxheDIuc30KKyAgICAg e3tvYmpkdW1wIC1mZHcgdGxzLWdkaWVyZWxheDIuZH19CisgICAgICJ0bHMt YXBwLXJlbC1pZTIifQorICAgIHsiVExTIGdudSBHRCB0byBMRSByZWxheGF0 aW9uIiAiLVQgYXJtLWR5bi5sZCIgIiIge3Rscy1nZGxlcmVsYXguc30KKyAg ICAge3tvYmpkdW1wIC1mZHcgdGxzLWdkbGVyZWxheC5kfX0KKyAgICAgInRs cy1hcHAtcmVsLWxlIn0KKyAgICB7IlRMUyBtaXhlZCBtb2RlbHMgc2hhcmVk IGxpYiIgIi1zaGFyZWQgLVQgYXJtLWR5bi5sZCIgIiIge3Rscy1taXhlZC5z fQorICAgICB7e29iamR1bXAgLVJ3IHRscy1taXhlZC5yfX0KKyAgICAgInRs cy1taXhlZC5zbyJ9CiAgICAgeyJUaHVtYiBlbnRyeSBwb2ludCIgIi1UIGFy bS5sZCIgIiIge3RodW1iLWVudHJ5LnN9CiAgICAgIHt7cmVhZGVsZiAtaCB0 aHVtYi1lbnRyeS5kfX0KICAgICAgInRodW1iLWVudHJ5In0KLS0tIC9kZXYv bnVsbAkyMDA2LTA1LTIyIDExOjI1OjIzLjAwMDAwMDAwMCAtMDMwMAorKysg bGQvdGVzdHN1aXRlL2xkLWFybS90bHMtZGVzY3NlcS5kCTIwMDYtMDgtMTQg MTQ6MzY6NDAuMDAwMDAwMDAwIC0wMzAwCkBAIC0wLDAgKzEsMzQgQEAKKwor dG1wZGlyL3Rscy1saWIyaW5saW5lLnNvOiAgICAgZmlsZSBmb3JtYXQgZWxm MzItLiphcm0KK2FyY2hpdGVjdHVyZTogYXJtLCBmbGFncyAweFswLTlhLWZd KzoKK0hBU19TWU1TLCBEWU5BTUlDLCBEX1BBR0VECitzdGFydCBhZGRyZXNz IDB4WzAtOWEtZl0rCisKK0Rpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gLnBsdDoK KworWzAtOWEtZl0rIDwucGx0PjoKKyAgICBbMC05YS1mXSs6CWU1MmRlMDA0 IAlzdHIJbHIsIFxbc3AsICMtNFxdIQorICAgIFswLTlhLWZdKzoJZTU5ZmUw MDQgCWxkcglsciwgXFtwYywgIzRcXQk7IC4qCisgICAgWzAtOWEtZl0rOgll MDhmZTAwZSAJYWRkCWxyLCBwYywgbHIKKyAgICBbMC05YS1mXSs6CWU1YmVm MDA4IAlsZHIJcGMsIFxbbHIsICM4XF0hCisgICAgWzAtOWEtZl0rOgkwMDAw ODBkNCAJbGRyZXFkCXI4LCBcW3IwXF0sIC1yNAorICAgIFswLTlhLWZdKzoJ ZTA4ZTAwMDAgCWFkZAlyMCwgbHIsIHIwCisgICAgWzAtOWEtZl0rOgllNTkw MTAwNCAJbGRyCXIxLCBcW3IwLCAjNFxdCisgICAgWzAtOWEtZl0rOgllMTJm ZmYxMSAJYngJcjEKKyAgICBbMC05YS1mXSs6CWU5MmQwMDA0IAlzdG1kYglz cCEsIHtyMn0KKyAgICBbMC05YS1mXSs6CWU1OWYyMDBjIAlsZHIJcjIsIFxb cGMsICMxMlxdCTsgLioKKyAgICBbMC05YS1mXSs6CWU1OWYxMDBjIAlsZHIJ cjEsIFxbcGMsICMxMlxdCTsgLioKKyAgICBbMC05YS1mXSs6CWU3OWYyMDAy IAlsZHIJcjIsIFxbcGMsIHIyXF0KKyAgICBbMC05YS1mXSs6CWUwOGYxMDAx IAlhZGQJcjEsIHBjLCByMQorICAgIFswLTlhLWZdKzoJZTEyZmZmMTIgCWJ4 CXIyCisgICAgWzAtOWEtZl0rOgkwMDAwODBjNCAJYW5kZXEJcjgsIHIwLCBy NCwgYXNyICMxCisgICAgWzAtOWEtZl0rOgkwMDAwODBhYyAJYW5kZXEJcjgs IHIwLCBpcCwgbHNyICMxCitEaXNbMC05YS1mXStzc2VtYmx5IG9mIHNlY3Rp b24gLnRleHQ6CisKK1swLTlhLWZdKyA8Zm9vPjoKKyAgICBbMC05YS1mXSs6 CWUxYTAwMDAwIAlub3AJCQlcKG1vdiByMCxyMFwpCisgICAgWzAtOWEtZl0r OgllMDhmMDAwMCAJYWRkCXIwLCBwYywgcjAKKyAgICBbMC05YS1mXSs6CWU1 OTAxMDA0IAlsZHIJcjEsIFxbcjAsICM0XF0KKyAgICBbMC05YS1mXSs6CWUx MmZmZjMxIAlibHgJcjEKKyAgICBbMC05YS1mXSs6CWUxYTBmMDBlIAltb3YJ cGMsIGxyCisgICAgWzAtOWEtZl0rOgkwMDAwODBhNCAJYW5kZXEJcjgsIHIw LCByNCwgbHNyICMxCi0tLSAvZGV2L251bGwJMjAwNi0wNS0yMiAxMToyNToy My4wMDAwMDAwMDAgLTAzMDAKKysrIGxkL3Rlc3RzdWl0ZS9sZC1hcm0vdGxz LWRlc2NzZXEucgkyMDA2LTA3LTA0IDIzOjM2OjUwLjAwMDAwMDAwMCAtMDMw MApAQCAtMCwwICsxLDYgQEAKKworLio6ICAgICBmaWxlIGZvcm1hdCBlbGYz Mi0uKmFybQorCitEWU5BTUlDIFJFTE9DQVRJT04gUkVDT1JEUworT0ZGU0VU ICAgVFlQRSAgICAgICAgICAgICAgVkFMVUUgCitbMC05YS1mXSsgUl9BUk1f VExTX0RFU0MgICAgbGliX2dkMgotLS0gL2Rldi9udWxsCTIwMDYtMDUtMjIg MTE6MjU6MjMuMDAwMDAwMDAwIC0wMzAwCisrKyBsZC90ZXN0c3VpdGUvbGQt YXJtL3Rscy1kZXNjc2VxLnMJMjAwNi0wNy0wNCAyMzozODozNS4wMDAwMDAw MDAgLTAzMDAKQEAgLTAsMCArMSwyMiBAQAorCS50ZXh0CisJLmdsb2JsIGZv bworCS50eXBlIGZvbywgJWZ1bmN0aW9uCitmb286CisJbm9wCisuTDI6Cisu dGxzZGVzY3NlcSBsaWJfZ2QyCisJYWRkIHIwLHBjLHIwCisudGxzZGVzY3Nl cSBsaWJfZ2QyCisJbGRyIHIxLFtyMCwjNF0KKy50bHNkZXNjc2VxIGxpYl9n ZDIKKwlibHggcjEKKwltb3YJcGMsIGxyCisKKy5McG9vbDoKKwkud29yZAls aWJfZ2QyKHRsc2Rlc2MpICsgKC4gLSAuTDIpCisKKwkuc2VjdGlvbiAudGRh dGEsImF3VCIKKwkuZ2xvYmFsIGxpYl9nZDIKK2xpYl9nZDI6CisJLnNwYWNl CTQKKwotLS0gL2Rldi9udWxsCTIwMDYtMDUtMjIgMTE6MjU6MjMuMDAwMDAw MDAwIC0wMzAwCisrKyBsZC90ZXN0c3VpdGUvbGQtYXJtL3Rscy1nZGVzYy5k CTIwMDYtMDgtMTQgMTQ6MzQ6NDEuMDAwMDAwMDAwIC0wMzAwCkBAIC0wLDAg KzEsMzIgQEAKKwordG1wZGlyL3Rscy1saWIyLnNvOiAgICAgZmlsZSBmb3Jt YXQgZWxmMzItbGl0dGxlYXJtCithcmNoaXRlY3R1cmU6IGFybSwgZmxhZ3Mg MHhbMC05YS1mXSs6CitIQVNfU1lNUywgRFlOQU1JQywgRF9QQUdFRAorc3Rh cnQgYWRkcmVzcyAweFswLTlhLWZdKworCitEaXNhc3NlbWJseSBvZiBzZWN0 aW9uIC5wbHQ6CisKK1swLTlhLWZdKyA8LnBsdD46CisgICAgWzAtOWEtZl0r OgllNTJkZTAwNCAJc3RyCWxyLCBcW3NwLCAjLTRcXSEKKyAgICBbMC05YS1m XSs6CWU1OWZlMDA0IAlsZHIJbHIsIFxbcGMsICM0XF0JOyAuKgorICAgIFsw LTlhLWZdKzoJZTA4ZmUwMGUgCWFkZAlsciwgcGMsIGxyCisgICAgWzAtOWEt Zl0rOgllNWJlZjAwOCAJbGRyCXBjLCBcW2xyLCAjOFxdIQorICAgIFswLTlh LWZdKzoJMDAwMDgwY2MgCWFuZGVxCXI4LCByMCwgaXAsIGFzciAjMQorICAg IFswLTlhLWZdKzoJZTA4ZTAwMDAgCWFkZAlyMCwgbHIsIHIwCisgICAgWzAt OWEtZl0rOgllNTkwMTAwNCAJbGRyCXIxLCBcW3IwLCAjNFxdCisgICAgWzAt OWEtZl0rOgllMTJmZmYxMSAJYngJcjEKKyAgICBbMC05YS1mXSs6CWU5MmQw MDA0IAlzdG1kYglzcCEsIHtyMn0KKyAgICBbMC05YS1mXSs6CWU1OWYyMDBj IAlsZHIJcjIsIFxbcGMsICMxMlxdCTsgLioKKyAgICBbMC05YS1mXSs6CWU1 OWYxMDBjIAlsZHIJcjEsIFxbcGMsICMxMlxdCTsgLioKKyAgICBbMC05YS1m XSs6CWU3OWYyMDAyIAlsZHIJcjIsIFxbcGMsIHIyXF0KKyAgICBbMC05YS1m XSs6CWUwOGYxMDAxIAlhZGQJcjEsIHBjLCByMQorICAgIFswLTlhLWZdKzoJ ZTEyZmZmMTIgCWJ4CXIyCisgICAgWzAtOWEtZl0rOgkwMDAwODBiYyAJc3Ry ZXFoCXI4LCBcW3IwXF0sIC1pcAorICAgIFswLTlhLWZdKzoJMDAwMDgwYTQg CWFuZGVxCXI4LCByMCwgcjQsIGxzciAjMQorRGlzYXNzZW1ibHkgb2Ygc2Vj dGlvbiAudGV4dDoKKworWzAtOWEtZl0rIDxmb28+OgorICAgIFswLTlhLWZd KzoJZTFhMDAwMDAgCW5vcAkJCVwobW92IHIwLHIwXCkKKyAgICBbMC05YS1m XSs6CWViZmZmZmYyIAlibAk4MWUwIC4qCisgICAgWzAtOWEtZl0rOgllMWEw ZjAwZSAJbW92CXBjLCBscgorICAgIFswLTlhLWZdKzoJMDAwMDgwYTAgCWFu ZGVxCXI4LCByMCwgcjAsIGxzciAjMQotLS0gL2Rldi9udWxsCTIwMDYtMDUt MjIgMTE6MjU6MjMuMDAwMDAwMDAwIC0wMzAwCisrKyBsZC90ZXN0c3VpdGUv bGQtYXJtL3Rscy1nZGVzYy5yCTIwMDYtMDctMDQgMjM6MjY6MDkuMDAwMDAw MDAwIC0wMzAwCkBAIC0wLDAgKzEsNiBAQAorCisuKjogICAgIGZpbGUgZm9y bWF0IGVsZjMyLS4qYXJtCisKK0RZTkFNSUMgUkVMT0NBVElPTiBSRUNPUkRT CitPRkZTRVQgICBUWVBFICAgICAgICAgICAgICBWQUxVRSAKK1swLTlhLWZd KyBSX0FSTV9UTFNfREVTQyAgICBsaWJfZ2QyCi0tLSAvZGV2L251bGwJMjAw Ni0wNS0yMiAxMToyNToyMy4wMDAwMDAwMDAgLTAzMDAKKysrIGxkL3Rlc3Rz dWl0ZS9sZC1hcm0vdGxzLWdkZXNjLnMJMjAwNi0wNy0wOSAwMDo0NzoxOC4w MDAwMDAwMDAgLTAzMDAKQEAgLTAsMCArMSwxNyBAQAorCS50ZXh0CisJLmds b2JsIGZvbworCS50eXBlIGZvbywgJWZ1bmN0aW9uCitmb286CisJbm9wCisu TDI6CisJYmwJbGliX2dkMih0bHNjYWxsKSAKKwltb3YJcGMsIGxyCisKKy5M cG9vbDoKKwkud29yZAlsaWJfZ2QyKHRsc2Rlc2MpICsgKC4gLSAuTDIpCisK Kwkuc2VjdGlvbiAudGRhdGEsImF3VCIKKwkuZ2xvYmFsIGxpYl9nZDIKK2xp Yl9nZDI6CisJLnNwYWNlCTQKKwotLS0gL2Rldi9udWxsCTIwMDYtMDUtMjIg MTE6MjU6MjMuMDAwMDAwMDAwIC0wMzAwCisrKyBsZC90ZXN0c3VpdGUvbGQt YXJtL3Rscy1nZGVzYy1ubGF6eS5nCTIwMDYtMDctMDkgMDE6MTM6MTkuMDAw MDAwMDAwIC0wMzAwCkBAIC0wLDAgKzEsNCBAQAorCitIZXggZHVtcCBvZiBz ZWN0aW9uICcuZ290JzoKKyAgMHhbMC05YS1mXSsgMDAwMDAwMDAgMDAwMDAw MDAgMDAwMDAwMDAgWzAtOWEtZl0rIC4uLi4uLi4uLi4uLi4uLi4KKyAgMHhb MC05YS1mXSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAg Li4uLgotLS0gL2Rldi9udWxsCTIwMDYtMDUtMjIgMTE6MjU6MjMuMDAwMDAw MDAwIC0wMzAwCisrKyBsZC90ZXN0c3VpdGUvbGQtYXJtL3Rscy1nZGVzYy1u bGF6eS5zCTIwMDYtMDctMDQgMjM6NTM6MTUuMDAwMDAwMDAwIC0wMzAwCkBA IC0wLDAgKzEsMTcgQEAKKwkudGV4dAorCS5nbG9ibCBmb28KKwkudHlwZSBm b28sICVmdW5jdGlvbgorZm9vOgorCW5vcAorLkwyOgorCWJseAlsaWJfZ2Qy KHRsc2NhbGwpIAorCW1vdglwYywgbHIKKworLkxwb29sOgorCS53b3JkCWxp Yl9nZDIodGxzZGVzYykgKyAoLiAtIC5MMikKKworCS5zZWN0aW9uIC50ZGF0 YSwiYXdUIgorCS5nbG9iYWwgbGliX2dkMgorbGliX2dkMjoKKwkuc3BhY2UJ NAorCi0tLSAvZGV2L251bGwJMjAwNi0wNS0yMiAxMToyNToyMy4wMDAwMDAw MDAgLTAzMDAKKysrIGxkL3Rlc3RzdWl0ZS9sZC1hcm0vdGxzLWdkaWVyZWxh eC5kCTIwMDYtMDctMTAgMDA6MjU6MzAuMDAwMDAwMDAwIC0wMzAwCkBAIC0w LDAgKzEsMTMgQEAKKwordG1wZGlyL3Rscy1hcHAtcmVsLWllOiAgICAgZmls ZSBmb3JtYXQgZWxmMzItLiphcm0KK2FyY2hpdGVjdHVyZTogYXJtLCBmbGFn cyAweFswLTlhLWZdKzoKK0VYRUNfUCwgSEFTX1NZTVMsIERfUEFHRUQKK3N0 YXJ0IGFkZHJlc3MgMHhbMC05YS1mXSsKKworRGlzYXNzZW1ibHkgb2Ygc2Vj dGlvbiAudGV4dDoKKworWzAtOWEtZl0rIDxmb28+OgorICAgIFswLTlhLWZd KzoJZTFhMDAwMDAgCW5vcAkJCVwobW92IHIwLHIwXCkKKyAgICBbMC05YS1m XSs6CWU3OWYwMDAwIAlsZHIJcjAsIFxbcGMsIHIwXF0KKyAgICBbMC05YS1m XSs6CWUxYTBmMDBlIAltb3YJcGMsIGxyCisgICAgWzAtOWEtZl0rOgkwMDAw ODAxNCAJYW5kZXEJcjgsIHIwLCByNCwgbHNsIHIwCi0tLSAvZGV2L251bGwJ MjAwNi0wNS0yMiAxMToyNToyMy4wMDAwMDAwMDAgLTAzMDAKKysrIGxkL3Rl c3RzdWl0ZS9sZC1hcm0vdGxzLWdkaWVyZWxheC5zCTIwMDYtMDctMDUgMTA6 MzE6MDQuMDAwMDAwMDAwIC0wMzAwCkBAIC0wLDAgKzEsMTcgQEAKKwkudGV4 dAorCS5nbG9ibCBmb28KKwkudHlwZSBmb28sICVmdW5jdGlvbgorZm9vOgor CW5vcAorLkwyOgorCWJseAlsaWJfZ2QyKHRsc2NhbGwpIAorCW1vdglwYywg bHIKKworLkxwb29sOgorCS53b3JkCWxpYl9nZDIodGxzZGVzYykgKyAoLiAt IC5MMikKKworCS5zZWN0aW9uIC50ZGF0YSwiYXdUIgorCS5nbG9iYWwgbGli X2dkMgorbGliX2dkMjoKKwkuc3BhY2UJNAorCi0tLSAvZGV2L251bGwJMjAw Ni0wNS0yMiAxMToyNToyMy4wMDAwMDAwMDAgLTAzMDAKKysrIGxkL3Rlc3Rz dWl0ZS9sZC1hcm0vdGxzLWdkbGVyZWxheC5kCTIwMDYtMDctMTAgMDA6MjU6 NTQuMDAwMDAwMDAwIC0wMzAwCkBAIC0wLDAgKzEsMTMgQEAKKwordG1wZGly L3Rscy1hcHAtcmVsLWxlOiAgICAgZmlsZSBmb3JtYXQgZWxmMzItLiphcm0K K2FyY2hpdGVjdHVyZTogYXJtLCBmbGFncyAweFswLTlhLWZdKzoKK0VYRUNf UCwgSEFTX1NZTVMsIERfUEFHRUQKK3N0YXJ0IGFkZHJlc3MgMHhbMC05YS1m XSsKKworRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiAudGV4dDoKKworWzAtOWEt Zl0rIDxmb28+OgorICAgIFswLTlhLWZdKzoJZTFhMDAwMDAgCW5vcAkJCVwo bW92IHIwLHIwXCkKKyAgICBbMC05YS1mXSs6CWUxYTAwMDAwIAlub3AJCQlc KG1vdiByMCxyMFwpCisgICAgWzAtOWEtZl0rOgllMWEwZjAwZSAJbW92CXBj LCBscgorICAgIFswLTlhLWZdKzoJMDAwMDAwMTAgCWFuZGVxCXIwLCByMCwg cjAsIGxzbCByMAotLS0gL2Rldi9udWxsCTIwMDYtMDUtMjIgMTE6MjU6MjMu MDAwMDAwMDAwIC0wMzAwCisrKyBsZC90ZXN0c3VpdGUvbGQtYXJtL3Rscy1n ZGxlcmVsYXgucwkyMDA2LTA3LTA1IDAwOjAxOjEzLjAwMDAwMDAwMCAtMDMw MApAQCAtMCwwICsxLDE2IEBACisJLnRleHQKKwkuZ2xvYmwgZm9vCisJLnR5 cGUgZm9vLCAlZnVuY3Rpb24KK2ZvbzoKKwlub3AKKy5MMjoKKwlibHgJbGli X2dkMih0bHNjYWxsKSAKKwltb3YJcGMsIGxyCisKKy5McG9vbDoKKwkud29y ZAlsaWJfZ2QyKHRsc2Rlc2MpICsgKC4gLSAuTDIpCisKKwkuc2VjdGlvbiAu dGRhdGEsImF3VCIKK2xpYl9nZDI6CisJLnNwYWNlCTQKKwotLS0gL2Rldi9u dWxsCTIwMDYtMDUtMjIgMTE6MjU6MjMuMDAwMDAwMDAwIC0wMzAwCisrKyBs ZC90ZXN0c3VpdGUvbGQtYXJtL3Rscy1nZGllcmVsYXgyLmQJMjAwNi0wOC0x NCAxNTowOTo0OS4wMDAwMDAwMDAgLTAzMDAKQEAgLTAsMCArMSwxNSBAQAor Cit0bXBkaXIvdGxzLWFwcC1yZWwtaWUyOiAgICAgZmlsZSBmb3JtYXQgZWxm MzItLiphcm0KK2FyY2hpdGVjdHVyZTogYXJtLCBmbGFncyAweFswLTlhLWZd KzoKK0hBU19TWU1TLCBEWU5BTUlDLCBEX1BBR0VECitzdGFydCBhZGRyZXNz IDB4WzAtOWEtZl0rCisKK0Rpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gLnRleHQ6 CisKK1swLTlhLWZdKyA8Zm9vPjoKKyAgICBbMC05YS1mXSs6CWUxYTAwMDAw IAlub3AJCQlcKG1vdiByMCxyMFwpCisgICAgWzAtOWEtZl0rOgllMWEwMDAw MCAJbm9wCQkJXChtb3YgcjAscjBcKQorICAgIFswLTlhLWZdKzoJZTc5ZjAw MDAgCWxkcglyMCwgXFtwYywgcjBcXQorICAgIFswLTlhLWZdKzoJZTFhMGYw MGUgCW1vdglwYywgbHIKKyAgICBbMC05YS1mXSs6CTAwMDA4MDg4IAlhbmRl cQlyOCwgcjAsIHI4LCBsc2wgIzEKKyAgICBbMC05YS1mXSs6CTAwMDA4MDhj IAlhbmRlcQlyOCwgcjAsIGlwLCBsc2wgIzEKLS0tIC9kZXYvbnVsbAkyMDA2 LTA1LTIyIDExOjI1OjIzLjAwMDAwMDAwMCAtMDMwMAorKysgbGQvdGVzdHN1 aXRlL2xkLWFybS90bHMtZ2RpZXJlbGF4Mi5zCTIwMDYtMDgtMTQgMTU6MDM6 NDcuMDAwMDAwMDAwIC0wMzAwCkBAIC0wLDAgKzEsMTkgQEAKKwkudGV4dAor CS5nbG9ibCBmb28KKwkudHlwZSBmb28sICVmdW5jdGlvbgorZm9vOgorCW5v cAorLkwxOglub3AKKy5MMjoKKwlibAlsaWJfZ2QyKHRsc2NhbGwpIAorCW1v dglwYywgbHIKKworLkxwb29sOgorCS53b3JkCWxpYl9nZDIodGxzZGVzYykg KyAoLiAtIC5MMikKKwkud29yZAlsaWJfZ2QyKGdvdHRwb2ZmKSArICguIC0g LkwxIC0gOCkKKworCS5zZWN0aW9uIC50ZGF0YSwiYXdUIgorCS5nbG9iYWwg bGliX2dkMgorbGliX2dkMjoKKwkuc3BhY2UJNAorCi0tLSAvZGV2L251bGwJ MjAwNi0wNS0yMiAxMToyNToyMy4wMDAwMDAwMDAgLTAzMDAKKysrIGxkL3Rl c3RzdWl0ZS9sZC1hcm0vdGxzLW1peGVkLnIJMjAwNi0wNy0wNiAwMjozMzow Mi4wMDAwMDAwMDAgLTAzMDAKQEAgLTAsMCArMSwxMCBAQAorCisuKjogICAg IGZpbGUgZm9ybWF0IGVsZjMyLS4qYXJtCisKK0RZTkFNSUMgUkVMT0NBVElP TiBSRUNPUkRTCitPRkZTRVQgICBUWVBFICAgICAgICAgICAgICBWQUxVRSAK K1swLTlhLWZdKyBSX0FSTV9UTFNfRFRQTU9EMzIgIGxpYl9nZDIKK1swLTlh LWZdKyBSX0FSTV9UTFNfRFRQT0ZGMzIgIGxpYl9nZDIKK1swLTlhLWZdKyBS X0FSTV9UTFNfRFRQTU9EMzIgIGxpYl9nZAorWzAtOWEtZl0rIFJfQVJNX1RM U19EVFBPRkYzMiAgbGliX2dkCitbMC05YS1mXSsgUl9BUk1fVExTX0RFU0Mg ICAgbGliX2dkMgotLS0gL2Rldi9udWxsCTIwMDYtMDUtMjIgMTE6MjU6MjMu MDAwMDAwMDAwIC0wMzAwCisrKyBsZC90ZXN0c3VpdGUvbGQtYXJtL3Rscy1t aXhlZC5zCTIwMDYtMDctMDkgMDE6MTQ6MTAuMDAwMDAwMDAwIC0wMzAwCkBA IC0wLDAgKzEsMjUgQEAKKwkudGV4dAorCS5nbG9ibCBmb28KKwkudHlwZSBm b28sICVmdW5jdGlvbgorZm9vOgorCW5vcAorLkwxOgorCW5vcAkKKy5MMjoK KwlibAlsaWJfZ2QyKHRsc2NhbGwpIAorCW1vdglwYywgbHIKKworLkxwb29s OgorCS53b3JkCWxpYl9nZCh0bHNnZCkJKyAgKC4gLSAuTDEgLSA4KQorLkxw b29sMjoKKwkud29yZAlsaWJfZ2QyKHRsc2Rlc2MpICsgKC4gLSAuTDIpCisJ LndvcmQJbGliX2dkMih0bHNnZCkJKyAgKC4gLSAuTDIgLSA4KQorCisJLnNl Y3Rpb24gLnRkYXRhLCJhd1QiCisJLmdsb2JhbCBsaWJfZ2QKK2xpYl9nZDoK Kwkuc3BhY2UJNCAKKwkuZ2xvYmFsIGxpYl9nZDIKK2xpYl9nZDI6CisJLnNw YWNlCTQKKwo= ------=_Part_17939_12186692.1155601788625--