From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: [Emacs-diffs] master 1392ec7 2/3: A quicker check for quit Date: Mon, 30 Jan 2017 13:52:46 -0800 Organization: UCLA Computer Science Department Message-ID: <104bf888-821f-98d0-48d3-199cf942c839@cs.ucla.edu> References: <20170126052541.29089.5382@vcs.savannah.gnu.org> <20170126052542.828422201BC@vcs.savannah.gnu.org> <83h94hydrs.fsf@gnu.org> <0faac5e6-d857-2afd-d05a-5fcb991419f0@cs.ucla.edu> <8337g0y34h.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------34CC71419F9E78E8F2F005B7" X-Trace: blaine.gmane.org 1485813234 15687 195.159.176.226 (30 Jan 2017 21:53:54 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 30 Jan 2017 21:53:54 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Jan 30 22:53:49 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cYJtU-0003vT-Vs for ged-emacs-devel@m.gmane.org; Mon, 30 Jan 2017 22:53:49 +0100 Original-Received: from localhost ([::1]:35196 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYJta-00040P-8y for ged-emacs-devel@m.gmane.org; Mon, 30 Jan 2017 16:53:54 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:41478) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYJsl-0003yF-6L for emacs-devel@gnu.org; Mon, 30 Jan 2017 16:53:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYJsh-00038m-SN for emacs-devel@gnu.org; Mon, 30 Jan 2017 16:53:03 -0500 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:47870) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYJsb-0002zu-HX; Mon, 30 Jan 2017 16:52:54 -0500 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 67E981600A7; Mon, 30 Jan 2017 13:52:51 -0800 (PST) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 9vlWwGs8GDHH; Mon, 30 Jan 2017 13:52:50 -0800 (PST) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 3161C1600A8; Mon, 30 Jan 2017 13:52:50 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id MFOiRd-SbTHl; Mon, 30 Jan 2017 13:52:50 -0800 (PST) Original-Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id EC3941600A7; Mon, 30 Jan 2017 13:52:49 -0800 (PST) In-Reply-To: <8337g0y34h.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:211779 Archived-At: This is a multi-part message in MIME format. --------------34CC71419F9E78E8F2F005B7 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Thanks for reviewing the patches. I installed the little patch for delq as that's relatively independent and was not commented on. Attached is a revised set of patches. The first two of are the same as before (rebased), and the third patch attempts to address several of your comments directly. The other comments are remarked on below. On 01/30/2017 07:33 AM, Eli Zaretskii wrote: > I don't understand why we need both this and > emacs_read, which cannot be interrupted. Why not have just emacs_read > which can be interrupted, and use that all over? For example, filelock.c's read_lock_data opens a file, uses emacs_read to read it, and then closes the file. If read_lock_data used emacs_read_quit it might process a quit, which would skip the close and leak a file descriptor. The read_lock_data issue could be fixed by having it call record_unwind_protect_int (close_file_unwind, fd) before calling emacs_read. Possibly all these dicey uses of emacs_read could be fixed in a similar way. However, that would be a bigger and more-intrusive change, and in the read_lock_data case it arguably would be overkill and I wanted to keep the patch smaller. I used emacs_read_quit only in places that I verified were safe, and stuck with emacs_read when I wasn't sure, or where more-intrusive changes would be needed. > > @@ -1252,6 +1256,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte, > return (n); > } > n++; > + maybe_quit (); > } > while (n > 0) > { > > regex.c calls maybe_quit internally, so why do we need this additional > call? The regex code does not always call maybe_quit. For example, without this additional call, (re-search-forward "[[:alpha:]]" nil nil most-positive-fixnum) would loop indefinitely in a buffer containing only alphabetic characters on a 64-bit platform. > @@ -724,6 +725,8 @@ back_comment (ptrdiff_t from, ptrdiff_t from_byte, ptrdiff_t stop, > that determines quote parity to the comment-end. */ > while (from != stop) > { > + incr_rarely_quit (&quit_count); > + > > Is it safe to quit from back_comment? It manipulates a global > variable gl_state, and I don't see unwind-protect calls anywhere in > sight. It should be OK. The current master sets immediate_quit=true in back_comment's callers (both scan_lists and Fforward_comment), so current master already lets back_comment quit. If Emacs quits in back_comment, it should longjmp to code that reinitializes gl_state before using it. This also applies to the other places you mentioned. The idea is to insert maybe_quit calls in code that was already subject to immediate_quit=true in the current master, so it should be safe to quit. > @@ -10445,30 +10433,12 @@ handle_interrupt (bool in_signal_handler) > } > else > { > - /* If executing a function that wants to be interrupted out of > - and the user has not deferred quitting by binding `inhibit-quit' > - then quit right away. */ > - if (immediate_quit && NILP (Vinhibit_quit)) > - { > - struct gl_state_s saved; > - > - immediate_quit = false; > - pthread_sigmask (SIG_SETMASK, &empty_mask, 0); > - saved = gl_state; > - quit (); > - gl_state = saved; > - } > - else > - { /* Else request quit when it's safe. */ > - int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; > - force_quit_count = count; > - if (count == 3) > - { > - immediate_quit = true; > - Vinhibit_quit = Qnil; > - } > - Vquit_flag = Qt; > - } > + /* Request quit when it's safe. */ > + int count = NILP (Vquit_flag) ? 1 : force_quit_count + 1; > + force_quit_count = count; > + if (count == 3) > + Vinhibit_quit = Qnil; > + Vquit_flag = Qt; > } > > This loses the feature whereby C-g on a TTY would quit much faster. > Why is this a good idea? Speed is not a problem, as C-g (with the proposed changes) should quit just as fast on a TTY as it already does under X, and it's been working that way under X for some time. The good idea here is to simplify the analysis of C code, so that reviewers no longer have to worry about random asynchronous longjmps that depend on settings of global variables, something that is a real pain to reason about. Instead, quitting will work the same on a TTY as it does on a GUI, making maintenance easier overall. > And if it is a good idea, why do we still > generate SIGINT on C-g (and force GDB to handle SIGINT specially to > support that)? Inertia, I think. Having C-g generate SIGINT made sense when we had immediate_quit. I expect that it is a useless appendage now, and that in a later patch we can change Emacs so that C-g no longer generates SIGINT but is instead processed like any other input character. --------------34CC71419F9E78E8F2F005B7 Content-Type: application/x-patch; name="0001-Remove-immediate_quit.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Remove-immediate_quit.patch" RnJvbSBkY2UwZTYwOWQ3N2ZlN2VkYWE2YzNlYmY1ZTEzMGZlMWE4ZDM0MDBkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBGcmksIDI3IEphbiAyMDE3IDA4OjU4OjUxIC0wODAwClN1YmplY3Q6IFtQQVRD SCAxLzNdIFJlbW92ZSBpbW1lZGlhdGVfcXVpdC4KClRoZSBvbGQgY29kZSB0aGF0IHNldHMg YW5kIGNsZWFycyBpbW1lZGlhdGVfcXVpdCB3YXMKaW5lZmZlY3RpdmUgZXhjZXB0IHdoZW4g RW1hY3MgaXMgcnVubmluZyBpbiB0ZXJtaW5hbCBtb2RlLCBhbmQKaGFzIHByb2JsZW1hdGlj IHJhY2UgY29uZGl0aW9ucyBhbnl3YXksIHNvIHJlbW92ZSBpdC4gIFRoaXMKd2lsbCBpbnRy b2R1Y2Ugc29tZSBoYW5ncyB3aGVuIEVtYWNzIHJ1bnMgaW4gdGVybWluYWwgbW9kZSwKYW5k IHRoZXNlIGhhbmdzIHNob3VsZCBiZSBmaXhlZCBpbiBmb2xsb3d1cCBwYXRjaGVzLgoqIHNy Yy9rZXlib2FyZC5jIChpbW1lZGlhdGVfcXVpdCk6IFJlbW92ZS4gIEFsbCB1c2VzIHJlbW92 ZWQuCi0tLQogYWRtaW4vbm90ZXMvbXVsdGktdHR5IHwgIDUgKystLS0KIHNyYy9ieXRlY29k ZS5jICAgICAgICB8ICA0IC0tLS0KIHNyYy9jYWxscHJvYy5jICAgICAgICB8ICA4ICstLS0t LS0tCiBzcmMvZGlyZWQuYyAgICAgICAgICAgfCAgMyAtLS0KIHNyYy9lZGl0Zm5zLmMgICAg ICAgICB8ICA5ICsrLS0tLS0tLQogc3JjL2V2YWwuYyAgICAgICAgICAgIHwgIDIgLS0KIHNy Yy9maWxlaW8uYyAgICAgICAgICB8IDE5IC0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9mbnMu YyAgICAgICAgICAgICB8IDQyICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogc3JjL2luZGVudC5jICAgICAgICAgIHwgIDIgLS0KIHNyYy9rZXlib2FyZC5j ICAgICAgICB8IDQ1ICsrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2xpc3AuaCAgICAgICAgICAgIHwgIDggLS0tLS0tLS0KIHNyYy9wcm9jZXNz LmMgICAgICAgICB8IDEwICstLS0tLS0tLS0KIHNyYy9yZWdleC5jICAgICAgICAgICB8IDEw ICsrKystLS0tLS0KIHNyYy9zZWFyY2guYyAgICAgICAgICB8IDMzICsrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL3N5bnRheC5jICAgICAgICAgIHwgMzAgKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvdzMyZm5zLmMgICAgICAgICAgfCAxMSAr LS0tLS0tLS0tLQogc3JjL3dpbmRvdy5jICAgICAgICAgIHwgIDIgLS0KIDE3IGZpbGVzIGNo YW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDIxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9hZG1pbi9ub3Rlcy9tdWx0aS10dHkgYi9hZG1pbi9ub3Rlcy9tdWx0aS10dHkKaW5kZXgg YjU4MTgwZS4uZDAwOTZhZCAxMDA2NDQKLS0tIGEvYWRtaW4vbm90ZXMvbXVsdGktdHR5Cisr KyBiL2FkbWluL25vdGVzL211bHRpLXR0eQpAQCAtMTIzOSw5ICsxMjM5LDggQEAgRElBUlkg T0YgQ0hBTkdFUwogICAgKFVwZGF0ZTogT0ssIGl0IGFsbCBzZWVtcyBzbyBlYXN5IG5vdyAo Tk9UKS4gIElucHV0IGNvdWxkIGJlIGRvbmUKICAgIHN5bmNocm9ub3VzbHkgKHdpdGggd2Fp dF9yZWFkaW5nX3Byb2Nlc3NfaW5wdXQpLCBvciBhc3luY2hyb25vdXNseQogICAgYnkgU0lH SU8gb3IgcG9sbGluZyAoU0lHQUxSTSkuICBDLWcgZWl0aGVyIHNldHMgdGhlIFZxdWl0X2Zs YWcsCi0gICBzaWduYWxzIGEgJ3F1aXQgY29uZGl0aW9uICh3aGVuIGltbWVkaWF0ZV9xdWl0 KSwgb3IgdGhyb3dzIHRvCi0gICAnZ2V0Y2ptcCcgd2hlbiBFbWFjcyB3YXMgd2FpdGluZyBm b3IgaW5wdXQgd2hlbiB0aGUgQy1nIGV2ZW50Ci0gICBhcnJpdmVkLikKKyAgIHNpZ25hbHMg YSAncXVpdCBjb25kaXRpb24sIG9yIHRocm93cyB0byAnZ2V0Y2ptcCcgd2hlbiBFbWFjcyB3 YXMKKyAgIHdhaXRpbmcgZm9yIGlucHV0IHdoZW4gdGhlIEMtZyBldmVudCBhcnJpdmVkLikK IAogLS0gUmVwbGFjZSB3cm9uZ19rYm9hcmRfam1wYnVmIHdpdGggYSBzcGVjaWFsIHJldHVy biB2YWx1ZSBvZgogICAgcmVhZF9jaGFyLiAgSXQgaXMgYWJzdXJkIHRoYXQgd2UgdXNlIHNl dGptcC9sb25nam1wIGp1c3QgdG8gcmV0dXJuCmRpZmYgLS1naXQgYS9zcmMvYnl0ZWNvZGUu YyBiL3NyYy9ieXRlY29kZS5jCmluZGV4IDQ5OWZiODguLmVkNThkMTggMTAwNjQ0Ci0tLSBh L3NyYy9ieXRlY29kZS5jCisrKyBiL3NyYy9ieXRlY29kZS5jCkBAIC04NDIsMTAgKzg0Miw4 IEBAIGV4ZWNfYnl0ZV9jb2RlIChMaXNwX09iamVjdCBieXRlc3RyLCBMaXNwX09iamVjdCB2 ZWN0b3IsIExpc3BfT2JqZWN0IG1heGRlcHRoLAogCSAgICBMaXNwX09iamVjdCB2MiA9IFBP UCwgdjEgPSBUT1A7CiAJICAgIENIRUNLX05VTUJFUiAodjEpOwogCSAgICBFTUFDU19JTlQg biA9IFhJTlQgKHYxKTsKLQkgICAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogCSAgICB3aGls ZSAoLS1uID49IDAgJiYgQ09OU1AgKHYyKSkKIAkgICAgICB2MiA9IFhDRFIgKHYyKTsKLQkg ICAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKIAkgICAgVE9QID0gQ0FSICh2Mik7CiAJICAg IE5FWFQ7CiAJICB9CkBAIC0xMjc2LDEwICsxMjc0LDggQEAgZXhlY19ieXRlX2NvZGUgKExp c3BfT2JqZWN0IGJ5dGVzdHIsIExpc3BfT2JqZWN0IHZlY3RvciwgTGlzcF9PYmplY3QgbWF4 ZGVwdGgsCiAJCUxpc3BfT2JqZWN0IHYyID0gUE9QLCB2MSA9IFRPUDsKIAkJQ0hFQ0tfTlVN QkVSICh2Mik7CiAJCUVNQUNTX0lOVCBuID0gWElOVCAodjIpOwotCQlpbW1lZGlhdGVfcXVp dCA9IHRydWU7CiAJCXdoaWxlICgtLW4gPj0gMCAmJiBDT05TUCAodjEpKQogCQkgIHYxID0g WENEUiAodjEpOwotCQlpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCQlUT1AgPSBDQVIgKHYx KTsKIAkgICAgICB9CiAJICAgIGVsc2UKZGlmZiAtLWdpdCBhL3NyYy9jYWxscHJvYy5jIGIv c3JjL2NhbGxwcm9jLmMKaW5kZXggMzAxY2NmMy4uODU2NzRiYiAxMDA2NDQKLS0tIGEvc3Jj L2NhbGxwcm9jLmMKKysrIGIvc3JjL2NhbGxwcm9jLmMKQEAgLTE5OCwxMSArMTk4LDkgQEAg Y2FsbF9wcm9jZXNzX2NsZWFudXAgKExpc3BfT2JqZWN0IGJ1ZmZlcikKICAgICB7CiAgICAg ICBraWxsICgtc3luY2hfcHJvY2Vzc19waWQsIFNJR0lOVCk7CiAgICAgICBtZXNzYWdlMSAo IldhaXRpbmcgZm9yIHByb2Nlc3MgdG8gZGllLi4uKHR5cGUgQy1nIGFnYWluIHRvIGtpbGwg aXQgaW5zdGFudGx5KSIpOwotICAgICAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogICAgICAg bWF5YmVfcXVpdCAoKTsKICAgICAgIHdhaXRfZm9yX3Rlcm1pbmF0aW9uIChzeW5jaF9wcm9j ZXNzX3BpZCwgMCwgMSk7CiAgICAgICBzeW5jaF9wcm9jZXNzX3BpZCA9IDA7Ci0gICAgICBp bW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogICAgICAgbWVzc2FnZTEgKCJXYWl0aW5nIGZvciBw cm9jZXNzIHRvIGRpZS4uLmRvbmUiKTsKICAgICB9CiAjZW5kaWYJLyogIU1TRE9TICovCkBA IC03MjYsNyArNzI0LDYgQEAgY2FsbF9wcm9jZXNzIChwdHJkaWZmX3QgbmFyZ3MsIExpc3Bf T2JqZWN0ICphcmdzLCBpbnQgZmlsZWZkLAogICAgICAgcHJvY2Vzc19jb2Rpbmcuc3JjX211 bHRpYnl0ZSA9IDA7CiAgICAgfQogCi0gIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgbWF5 YmVfcXVpdCAoKTsKIAogICBpZiAoMCA8PSBmZDApCkBAIC03NjksNyArNzY2LDYgQEAgY2Fs bF9wcm9jZXNzIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzLCBpbnQgZmls ZWZkLAogCSAgICB9CiAKIAkgIC8qIE5vdyBOUkVBRCBpcyB0aGUgdG90YWwgYW1vdW50IG9m IGRhdGEgaW4gdGhlIGJ1ZmZlci4gICovCi0JICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwog CiAJICBpZiAoIW5yZWFkKQogCSAgICA7CkBAIC04NDIsNyArODM4LDcgQEAgY2FsbF9wcm9j ZXNzIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzLCBpbnQgZmlsZWZkLAog CQkgd2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBkZXRlY3RlZCBhIGNvZGluZyBzeXN0ZW0uICAq LwogCSAgICAgIGRpc3BsYXlfb25fdGhlX2ZseSA9IHRydWU7CiAJICAgIH0KLQkgIGltbWVk aWF0ZV9xdWl0ID0gdHJ1ZTsKKwogCSAgbWF5YmVfcXVpdCAoKTsKIAl9CiAgICAgZ2l2ZV91 cDogOwpAQCAtODYwLDggKzg1Niw2IEBAIGNhbGxfcHJvY2VzcyAocHRyZGlmZl90IG5hcmdz LCBMaXNwX09iamVjdCAqYXJncywgaW50IGZpbGVmZCwKICAgd2FpdF9mb3JfdGVybWluYXRp b24gKHBpZCwgJnN0YXR1cywgZmQwIDwgMCk7CiAjZW5kaWYKIAotICBpbW1lZGlhdGVfcXVp dCA9IGZhbHNlOwotCiAgIC8qIERvbid0IGtpbGwgYW55IGNoaWxkcmVuIHRoYXQgdGhlIHN1 YnByb2Nlc3MgbWF5IGhhdmUgbGVmdCBiZWhpbmQKICAgICAgd2hlbiBleGl0aW5nLiAgKi8K ICAgc3luY2hfcHJvY2Vzc19waWQgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2RpcmVkLmMgYi9z cmMvZGlyZWQuYwppbmRleCA1MmU4MWZiLi41ZWEwMGZiIDEwMDY0NAotLS0gYS9zcmMvZGly ZWQuYworKysgYi9zcmMvZGlyZWQuYwpAQCAtMjQ4LDE0ICsyNDgsMTEgQEAgZGlyZWN0b3J5 X2ZpbGVzX2ludGVybmFsIChMaXNwX09iamVjdCBkaXJlY3RvcnksIExpc3BfT2JqZWN0IGZ1 bGwsCiAKICAgICAgIC8qIE5vdyB0aGF0IHdlIGhhdmUgdW53aW5kX3Byb3RlY3QgaW4gcGxh Y2UsIHdlIG1pZ2h0IGFzIHdlbGwKIAkgYWxsb3cgbWF0Y2hpbmcgdG8gYmUgaW50ZXJydXB0 ZWQuICAqLwotICAgICAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogICAgICAgbWF5YmVfcXVp dCAoKTsKIAogICAgICAgYm9vbCB3YW50ZWQgPSAoTklMUCAobWF0Y2gpCiAJCSAgICAgfHwg cmVfc2VhcmNoIChidWZwLCBTU0RBVEEgKG5hbWUpLCBsZW4sIDAsIGxlbiwgMCkgPj0gMCk7 CiAKLSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7Ci0KICAgICAgIGlmICh3YW50ZWQp CiAJewogCSAgaWYgKCFOSUxQIChmdWxsKSkKZGlmZiAtLWdpdCBhL3NyYy9lZGl0Zm5zLmMg Yi9zcmMvZWRpdGZucy5jCmluZGV4IDgyYzZhYmIuLmI2MDU0MzcgMTAwNjQ0Ci0tLSBhL3Ny Yy9lZGl0Zm5zLmMKKysrIGIvc3JjL2VkaXRmbnMuYwpAQCAtMzA1Myw3ICszMDUzLDYgQEAg ZGV0ZXJtaW5lcyB3aGV0aGVyIGNhc2UgaXMgc2lnbmlmaWNhbnQgb3IgaWdub3JlZC4gICov KQogICBpMiA9IGJlZ3AyOwogICBpMV9ieXRlID0gYnVmX2NoYXJwb3NfdG9fYnl0ZXBvcyAo YnAxLCBpMSk7CiAgIGkyX2J5dGUgPSBidWZfY2hhcnBvc190b19ieXRlcG9zIChicDIsIGky KTsKLSAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogCiAgIHdoaWxlIChpMSA8IGVuZHAxICYm IGkyIDwgZW5kcDIpCiAgICAgewpAQCAtMzA5MiwxNyArMzA5MSwxMyBAQCBkZXRlcm1pbmVz IHdoZXRoZXIgY2FzZSBpcyBzaWduaWZpY2FudCBvciBpZ25vcmVkLiAgKi8pCiAJICBjMSA9 IGNoYXJfdGFibGVfdHJhbnNsYXRlICh0cnQsIGMxKTsKIAkgIGMyID0gY2hhcl90YWJsZV90 cmFuc2xhdGUgKHRydCwgYzIpOwogCX0KKwogICAgICAgaWYgKGMxICE9IGMyKQotCXsKLQkg IGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7Ci0JICByZXR1cm4gbWFrZV9udW1iZXIgKGMxIDwg YzIgPyAtMSAtIGNoYXJzIDogY2hhcnMgKyAxKTsKLQl9CisJcmV0dXJuIG1ha2VfbnVtYmVy IChjMSA8IGMyID8gLTEgLSBjaGFycyA6IGNoYXJzICsgMSk7CiAKICAgICAgIGNoYXJzKys7 CiAgICAgfQogCi0gIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7Ci0KICAgLyogVGhlIHN0cmlu Z3MgbWF0Y2ggYXMgZmFyIGFzIHRoZXkgZ28uCiAgICAgIElmIG9uZSBpcyBzaG9ydGVyLCB0 aGF0IG9uZSBpcyBsZXNzLiAgKi8KICAgaWYgKGNoYXJzIDwgZW5kcDEgLSBiZWdwMSkKZGlm ZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IDYyZDRhZjEuLjg0NDg3 OWQgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtMTEzMSw3 ICsxMTMxLDYgQEAgdW53aW5kX3RvX2NhdGNoIChzdHJ1Y3QgaGFuZGxlciAqY2F0Y2gsIExp c3BfT2JqZWN0IHZhbHVlKQogICAvKiBSZXN0b3JlIGNlcnRhaW4gc3BlY2lhbCBDIHZhcmlh Ymxlcy4gICovCiAgIHNldF9wb2xsX3N1cHByZXNzX2NvdW50IChjYXRjaC0+cG9sbF9zdXBw cmVzc19jb3VudCk7CiAgIHVuYmxvY2tfaW5wdXRfdG8gKGNhdGNoLT5pbnRlcnJ1cHRfaW5w dXRfYmxvY2tlZCk7Ci0gIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAKICAgZG8KICAgICB7 CkBAIC0xNTE3LDcgKzE1MTYsNiBAQCBzaWduYWxfb3JfcXVpdCAoTGlzcF9PYmplY3QgZXJy b3Jfc3ltYm9sLCBMaXNwX09iamVjdCBkYXRhLCBib29sIGtleWJvYXJkX3F1aXQpCiAgIExp c3BfT2JqZWN0IGNsYXVzZSA9IFFuaWw7CiAgIHN0cnVjdCBoYW5kbGVyICpoOwogCi0gIGlt bWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAgIGlmIChnY19pbl9wcm9ncmVzcyB8fCB3YWl0aW5n X2Zvcl9pbnB1dCkKICAgICBlbWFjc19hYm9ydCAoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Zp bGVpby5jIGIvc3JjL2ZpbGVpby5jCmluZGV4IGE0NmNmYzcuLmExMDk3MzcgMTAwNjQ0Ci0t LSBhL3NyYy9maWxlaW8uYworKysgYi9zcmMvZmlsZWlvLmMKQEAgLTE5NjAsOSArMTk2MCw3 IEBAIHBlcm1pc3Npb25zLiAgKi8pCiAgICAgICByZXBvcnRfZmlsZV9lcnJvciAoIkNvcHlp bmcgcGVybWlzc2lvbnMgdG8iLCBuZXduYW1lKTsKICAgICB9CiAjZWxzZSAvKiBub3QgV0lO RE9XU05UICovCi0gIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgaWZkID0gZW1hY3Nfb3Bl biAoU1NEQVRBIChlbmNvZGVkX2ZpbGUpLCBPX1JET05MWSwgMCk7Ci0gIGltbWVkaWF0ZV9x dWl0ID0gZmFsc2U7CiAKICAgaWYgKGlmZCA8IDApCiAgICAgcmVwb3J0X2ZpbGVfZXJyb3Ig KCJPcGVuaW5nIGlucHV0IGZpbGUiLCBmaWxlKTsKQEAgLTIwMjQsNyArMjAyMiw2IEBAIHBl cm1pc3Npb25zLiAgKi8pCiAJb2xkc2l6ZSA9IG91dF9zdC5zdF9zaXplOwogICAgIH0KIAot ICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgIG1heWJlX3F1aXQgKCk7CiAKICAgaWYgKGNs b25lX2ZpbGUgKG9mZCwgaWZkKSkKQEAgLTIwNDcsOCArMjA0NCw2IEBAIHBlcm1pc3Npb25z LiAgKi8pCiAgIGlmIChuZXdzaXplIDwgb2xkc2l6ZSAmJiBmdHJ1bmNhdGUgKG9mZCwgbmV3 c2l6ZSkgIT0gMCkKICAgICByZXBvcnRfZmlsZV9lcnJvciAoIlRydW5jYXRpbmcgb3V0cHV0 IGZpbGUiLCBuZXduYW1lKTsKIAotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwotCiAjaWZu ZGVmIE1TRE9TCiAgIC8qIFByZXNlcnZlIHRoZSBvcmlnaW5hbCBmaWxlIHBlcm1pc3Npb25z LCBhbmQgaWYgcmVxdWVzdGVkLCBhbHNvIGl0cwogICAgICBvd25lciBhbmQgZ3JvdXAuICAq LwpAQCAtMzQwMywxMyArMzM5OCwxMSBAQCByZWFkX25vbl9yZWd1bGFyIChMaXNwX09iamVj dCBzdGF0ZSkKIHsKICAgaW50IG5ieXRlczsKIAotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7 CiAgIG1heWJlX3F1aXQgKCk7CiAgIG5ieXRlcyA9IGVtYWNzX3JlYWQgKFhTQVZFX0lOVEVH RVIgKHN0YXRlLCAwKSwKIAkJICAgICAgICgoY2hhciAqKSBCRUdfQUREUiArIFBUX0JZVEUg LSBCRUdfQllURQogCQkJKyBYU0FWRV9JTlRFR0VSIChzdGF0ZSwgMSkpLAogCQkgICAgICAg WFNBVkVfSU5URUdFUiAoc3RhdGUsIDIpKTsKLSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsK ICAgLyogRmFzdCByZWN5Y2xlIHRoaXMgb2JqZWN0IGZvciB0aGUgbGlrZWx5IG5leHQgY2Fs bC4gICovCiAgIGZyZWVfbWlzYyAoc3RhdGUpOwogICByZXR1cm4gbWFrZV9udW1iZXIgKG5i eXRlcyk7CkBAIC0zODY4LDcgKzM4NjEsNiBAQCBieSBjYWxsaW5nIGBmb3JtYXQtZGVjb2Rl Jywgd2hpY2ggc2VlLiAgKi8pCiAJICAgIHJlcG9ydF9maWxlX2Vycm9yICgiU2V0dGluZyBm aWxlIHBvc2l0aW9uIiwgb3JpZ19maWxlbmFtZSk7CiAJfQogCi0gICAgICBpbW1lZGlhdGVf cXVpdCA9IHRydWU7CiAgICAgICBtYXliZV9xdWl0ICgpOwogICAgICAgLyogQ291bnQgaG93 IG1hbnkgY2hhcnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlCiAJIG1hdGNoIHRoZSB0ZXh0 IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlci4gICovCkBAIC0zOTA3LDcgKzM4OTks NiBAQCBieSBjYWxsaW5nIGBmb3JtYXQtZGVjb2RlJywgd2hpY2ggc2VlLiAgKi8pCiAJICBp ZiAoYnVmcG9zICE9IG5yZWFkKQogCSAgICBicmVhazsKIAl9Ci0gICAgICBpbW1lZGlhdGVf cXVpdCA9IGZhbHNlOwogICAgICAgLyogSWYgdGhlIGZpbGUgbWF0Y2hlcyB0aGUgYnVmZmVy IGNvbXBsZXRlbHksCiAJIHRoZXJlJ3Mgbm8gbmVlZCB0byByZXBsYWNlIGFueXRoaW5nLiAg Ki8KICAgICAgIGlmIChzYW1lX2F0X3N0YXJ0IC0gQkVHVl9CWVRFID09IGVuZF9vZmZzZXQg LSBiZWdfb2Zmc2V0KQpAQCAtMzkxOSw3ICszOTEwLDYgQEAgYnkgY2FsbGluZyBgZm9ybWF0 LWRlY29kZScsIHdoaWNoIHNlZS4gICovKQogCSAgZGVsX3JhbmdlXzEgKHNhbWVfYXRfc3Rh cnQsIHNhbWVfYXRfZW5kLCAwLCAwKTsKIAkgIGdvdG8gaGFuZGxlZDsKIAl9Ci0gICAgICBp bW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgICAgICBtYXliZV9xdWl0ICgpOwogICAgICAgLyog Q291bnQgaG93IG1hbnkgY2hhcnMgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQogCSBtYXRjaCB0 aGUgdGV4dCBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICBCdXQsIGlmIHdlIGhhdmUKQEAg LTM5NzcsNyArMzk2Nyw2IEBAIGJ5IGNhbGxpbmcgYGZvcm1hdC1kZWNvZGUnLCB3aGljaCBz ZWUuICAqLykKIAkgIGlmIChucmVhZCA9PSAwKQogCSAgICBicmVhazsKIAl9Ci0gICAgICBp bW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCiAgICAgICBpZiAoISBnaXZldXBfbWF0Y2hfZW5k KQogCXsKQEAgLTQwNzUsMTEgKzQwNjQsOSBAQCBieSBjYWxsaW5nIGBmb3JtYXQtZGVjb2Rl Jywgd2hpY2ggc2VlLiAgKi8pCiAJICAgICBxdWl0dGluZyB3aGlsZSByZWFkaW5nIGEgaHVn ZSBmaWxlLiAgKi8KIAogCSAgLyogQWxsb3cgcXVpdHRpbmcgb3V0IG9mIHRoZSBhY3R1YWwg SS9PLiAgKi8KLQkgIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKIAkgIG1heWJlX3F1aXQgKCk7 CiAJICB0aGlzID0gZW1hY3NfcmVhZCAoZmQsIHJlYWRfYnVmICsgdW5wcm9jZXNzZWQsCiAJ CQkgICAgIFJFQURfQlVGX1NJWkUgLSB1bnByb2Nlc3NlZCk7Ci0JICBpbW1lZGlhdGVfcXVp dCA9IGZhbHNlOwogCiAJICBpZiAodGhpcyA8PSAwKQogCSAgICBicmVhazsKQEAgLTQyOTQs MTMgKzQyODEsMTEgQEAgYnkgY2FsbGluZyBgZm9ybWF0LWRlY29kZScsIHdoaWNoIHNlZS4g ICovKQogCSAgICAvKiBBbGxvdyBxdWl0dGluZyBvdXQgb2YgdGhlIGFjdHVhbCBJL08uICBX ZSBkb24ndCBtYWtlIHRleHQKIAkgICAgICAgcGFydCBvZiB0aGUgYnVmZmVyIHVudGlsIGFs bCB0aGUgcmVhZGluZyBpcyBkb25lLCBzbyBhIEMtZwogCSAgICAgICBoZXJlIGRvZXNuJ3Qg ZG8gYW55IGhhcm0uICAqLwotCSAgICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAJICAgIG1h eWJlX3F1aXQgKCk7CiAJICAgIHRoaXMgPSBlbWFjc19yZWFkIChmZCwKIAkJCSAgICAgICAo KGNoYXIgKikgQkVHX0FERFIgKyBQVF9CWVRFIC0gQkVHX0JZVEUKIAkJCQkrIGluc2VydGVk KSwKIAkJCSAgICAgICB0cnl0cnkpOwotCSAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwog CSAgfQogCiAJaWYgKHRoaXMgPD0gMCkKQEAgLTUwMDIsOCArNDk4Nyw2IEBAIHdyaXRlX3Jl Z2lvbiAoTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2JqZWN0IGVuZCwgTGlzcF9PYmplY3Qg ZmlsZW5hbWUsCiAJfQogICAgIH0KIAotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7Ci0KICAg aWYgKFNUUklOR1AgKHN0YXJ0KSkKICAgICBvayA9IGFfd3JpdGUgKGRlc2MsIHN0YXJ0LCAw LCBTQ0hBUlMgKHN0YXJ0KSwgJmFubm90YXRpb25zLCAmY29kaW5nKTsKICAgZWxzZSBpZiAo WElOVCAoc3RhcnQpICE9IFhJTlQgKGVuZCkpCkBAIC01MDI2LDggKzUwMDksNiBAQCB3cml0 ZV9yZWdpb24gKExpc3BfT2JqZWN0IHN0YXJ0LCBMaXNwX09iamVjdCBlbmQsIExpc3BfT2Jq ZWN0IGZpbGVuYW1lLAogICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOwogICAgIH0KIAotICBp bW1lZGlhdGVfcXVpdCA9IGZhbHNlOwotCiAgIC8qIGZzeW5jIGlzIG5vdCBjcnVjaWFsIGZv ciB0ZW1wb3JhcnkgZmlsZXMuICBOb3IgZm9yIGF1dG8tc2F2ZQogICAgICBmaWxlcywgc2lu Y2UgdGhleSBtaWdodCBsb3NlIHNvbWUgd29yayBhbnl3YXkuICAqLwogICBpZiAob3Blbl9h bmRfY2xvc2VfZmlsZSAmJiAhYXV0b19zYXZpbmcgJiYgIXdyaXRlX3JlZ2lvbl9pbmhpYml0 X2ZzeW5jKQpkaWZmIC0tZ2l0IGEvc3JjL2Zucy5jIGIvc3JjL2Zucy5jCmluZGV4IDEzNmEy MTkuLjQ0NDMzOWMgMTAwNjQ0Ci0tLSBhL3NyYy9mbnMuYworKysgYi9zcmMvZm5zLmMKQEAg LTEzNjEsMTggKzEzNjEsMTUgQEAgREVGVU4gKCJudGhjZHIiLCBGbnRoY2RyLCBTbnRoY2Ry LCAyLCAyLCAwLAogICBDSEVDS19OVU1CRVIgKG4pOwogICBFTUFDU19JTlQgbnVtID0gWElO VCAobik7CiAgIExpc3BfT2JqZWN0IHRhaWwgPSBsaXN0OwotICBpbW1lZGlhdGVfcXVpdCA9 IHRydWU7CiAgIGZvciAoRU1BQ1NfSU5UIGkgPSAwOyBpIDwgbnVtOyBpKyspCiAgICAgewog ICAgICAgaWYgKCEgQ09OU1AgKHRhaWwpKQogCXsKLQkgIGltbWVkaWF0ZV9xdWl0ID0gZmFs c2U7CiAJICBDSEVDS19MSVNUX0VORCAodGFpbCwgbGlzdCk7CiAJICByZXR1cm4gUW5pbDsK IAl9CiAgICAgICB0YWlsID0gWENEUiAodGFpbCk7CiAgICAgfQotICBpbW1lZGlhdGVfcXVp dCA9IGZhbHNlOwogICByZXR1cm4gdGFpbDsKIH0KIApAQCAtMTQxOSwxNyArMTQxNiwxMiBA QCBERUZVTiAoIm1lbXEiLCBGbWVtcSwgU21lbXEsIDIsIDIsIDAsCiBUaGUgdmFsdWUgaXMg YWN0dWFsbHkgdGhlIHRhaWwgb2YgTElTVCB3aG9zZSBjYXIgaXMgRUxULiAgKi8pCiAgIChM aXNwX09iamVjdCBlbHQsIExpc3BfT2JqZWN0IGxpc3QpCiB7Ci0gIGltbWVkaWF0ZV9xdWl0 ID0gdHJ1ZTsKICAgTGlzcF9PYmplY3QgdGFpbDsKICAgZm9yICh0YWlsID0gbGlzdDsgQ09O U1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAgICAgewogICAgICAgaWYgKEVRIChY Q0FSICh0YWlsKSwgZWx0KSkKLQl7Ci0JICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwotCSAg cmV0dXJuIHRhaWw7Ci0JfQorCXJldHVybiB0YWlsOwogICAgIH0KLSAgaW1tZWRpYXRlX3F1 aXQgPSBmYWxzZTsKICAgQ0hFQ0tfTElTVF9FTkQgKHRhaWwsIGxpc3QpOwogICByZXR1cm4g UW5pbDsKIH0KQEAgLTE0NDIsMTggKzE0MzQsMTMgQEAgVGhlIHZhbHVlIGlzIGFjdHVhbGx5 IHRoZSB0YWlsIG9mIExJU1Qgd2hvc2UgY2FyIGlzIEVMVC4gICovKQogICBpZiAoIUZMT0FU UCAoZWx0KSkKICAgICByZXR1cm4gRm1lbXEgKGVsdCwgbGlzdCk7CiAKLSAgaW1tZWRpYXRl X3F1aXQgPSB0cnVlOwogICBMaXNwX09iamVjdCB0YWlsOwogICBmb3IgKHRhaWwgPSBsaXN0 OyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKICAgICB7CiAgICAgICBMaXNw X09iamVjdCB0ZW0gPSBYQ0FSICh0YWlsKTsKICAgICAgIGlmIChGTE9BVFAgKHRlbSkgJiYg aW50ZXJuYWxfZXF1YWwgKGVsdCwgdGVtLCAwLCAwLCBRbmlsKSkKLQl7Ci0JICBpbW1lZGlh dGVfcXVpdCA9IGZhbHNlOwotCSAgcmV0dXJuIHRhaWw7Ci0JfQorCXJldHVybiB0YWlsOwog ICAgIH0KLSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKICAgQ0hFQ0tfTElTVF9FTkQgKHRh aWwsIGxpc3QpOwogICByZXR1cm4gUW5pbDsKIH0KQEAgLTE0NjQsMTUgKzE0NTEsMTIgQEAg VGhlIHZhbHVlIGlzIGFjdHVhbGx5IHRoZSBmaXJzdCBlbGVtZW50IG9mIExJU1Qgd2hvc2Ug Y2FyIGlzIEtFWS4KIEVsZW1lbnRzIG9mIExJU1QgdGhhdCBhcmUgbm90IGNvbnNlcyBhcmUg aWdub3JlZC4gICovKQogICAoTGlzcF9PYmplY3Qga2V5LCBMaXNwX09iamVjdCBsaXN0KQog ewotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgIExpc3BfT2JqZWN0IHRhaWw7CiAgIGZv ciAodGFpbCA9IGxpc3Q7IENPTlNQICh0YWlsKTsgdGFpbCA9IFhDRFIgKHRhaWwpKQotICAg IGlmIChDT05TUCAoWENBUiAodGFpbCkpICYmIEVRIChYQ0FSIChYQ0FSICh0YWlsKSksIGtl eSkpCi0gICAgICB7Ci0JaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKKyAgICB7CisgICAgICBp ZiAoQ09OU1AgKFhDQVIgKHRhaWwpKSAmJiBFUSAoWENBUiAoWENBUiAodGFpbCkpLCBrZXkp KQogCXJldHVybiBYQ0FSICh0YWlsKTsKLSAgICAgIH0KLSAgaW1tZWRpYXRlX3F1aXQgPSBm YWxzZTsKKyAgICB9CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0KTsKICAgcmV0dXJu IFFuaWw7CiB9CkBAIC0xNTI5LDE1ICsxNTEzLDEyIEBAIERFRlVOICgicmFzc3EiLCBGcmFz c3EsIFNyYXNzcSwgMiwgMiwgMCwKIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgZmlyc3Qg ZWxlbWVudCBvZiBMSVNUIHdob3NlIGNkciBpcyBLRVkuICAqLykKICAgKExpc3BfT2JqZWN0 IGtleSwgTGlzcF9PYmplY3QgbGlzdCkKIHsKLSAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwog ICBMaXNwX09iamVjdCB0YWlsOwogICBmb3IgKHRhaWwgPSBsaXN0OyBDT05TUCAodGFpbCk7 IHRhaWwgPSBYQ0RSICh0YWlsKSkKLSAgICBpZiAoQ09OU1AgKFhDQVIgKHRhaWwpKSAmJiBF USAoWENEUiAoWENBUiAodGFpbCkpLCBrZXkpKQotICAgICAgewotCWltbWVkaWF0ZV9xdWl0 ID0gZmFsc2U7CisgICAgeworICAgICAgaWYgKENPTlNQIChYQ0FSICh0YWlsKSkgJiYgRVEg KFhDRFIgKFhDQVIgKHRhaWwpKSwga2V5KSkKIAlyZXR1cm4gWENBUiAodGFpbCk7Ci0gICAg ICB9Ci0gIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CisgICAgfQogICBDSEVDS19MSVNUX0VO RCAodGFpbCwgbGlzdCk7CiAgIHJldHVybiBRbmlsOwogfQpAQCAtMjA3NywyMSArMjA1OCwx OCBAQCB1c2UgYChzZXRxIHggKHBsaXN0LXB1dCB4IHByb3AgdmFsKSknIHRvIGJlIHN1cmUg dG8gdXNlIHRoZSBuZXcgdmFsdWUuCiBUaGUgUExJU1QgaXMgbW9kaWZpZWQgYnkgc2lkZSBl ZmZlY3RzLiAgKi8pCiAgIChMaXNwX09iamVjdCBwbGlzdCwgTGlzcF9PYmplY3QgcHJvcCwg TGlzcF9PYmplY3QgdmFsKQogewotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgIExpc3Bf T2JqZWN0IHByZXYgPSBRbmlsOwogICBmb3IgKExpc3BfT2JqZWN0IHRhaWwgPSBwbGlzdDsg Q09OU1AgKHRhaWwpICYmIENPTlNQIChYQ0RSICh0YWlsKSk7CiAgICAgICAgdGFpbCA9IFhD RFIgKFhDRFIgKHRhaWwpKSkKICAgICB7CiAgICAgICBpZiAoRVEgKHByb3AsIFhDQVIgKHRh aWwpKSkKIAl7Ci0JICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCSAgRnNldGNhciAoWENE UiAodGFpbCksIHZhbCk7CiAJICByZXR1cm4gcGxpc3Q7CiAJfQogCiAgICAgICBwcmV2ID0g dGFpbDsKICAgICB9Ci0gIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAgIExpc3BfT2JqZWN0 IG5ld2NlbGwKICAgICA9IEZjb25zIChwcm9wLCBGY29ucyAodmFsLCBOSUxQIChwcmV2KSA/ IHBsaXN0IDogWENEUiAoWENEUiAocHJldikpKSk7CiAgIGlmIChOSUxQIChwcmV2KSkKQEAg LTI0NDIsNyArMjQyMCw2IEBAIHVzYWdlOiAobmNvbmMgJnJlc3QgTElTVFMpICAqLykKIAog ICAgICAgQ0hFQ0tfQ09OUyAodGVtKTsKIAotICAgICAgaW1tZWRpYXRlX3F1aXQgPSB0cnVl OwogICAgICAgTGlzcF9PYmplY3QgdGFpbDsKICAgICAgIGRvCiAJewpAQCAtMjQ1MSw3ICsy NDI4LDYgQEAgdXNhZ2U6IChuY29uYyAmcmVzdCBMSVNUUykgICovKQogCX0KICAgICAgIHdo aWxlIChDT05TUCAodGVtKSk7CiAKLSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAg ICAgICByYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogCiAgICAgICB0ZW0gPSBhcmdzW2Fy Z251bSArIDFdOwpAQCAtMjg3NCwxMyArMjg1MCwxMSBAQCBwcm9wZXJ0eSBhbmQgYSBwcm9w ZXJ0eSB3aXRoIHRoZSB2YWx1ZSBuaWwuCiBUaGUgdmFsdWUgaXMgYWN0dWFsbHkgdGhlIHRh aWwgb2YgUExJU1Qgd2hvc2UgY2FyIGlzIFBST1AuICAqLykKICAgKExpc3BfT2JqZWN0IHBs aXN0LCBMaXNwX09iamVjdCBwcm9wKQogewotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAg IHdoaWxlIChDT05TUCAocGxpc3QpICYmICFFUSAoWENBUiAocGxpc3QpLCBwcm9wKSkKICAg ICB7CiAgICAgICBwbGlzdCA9IFhDRFIgKHBsaXN0KTsKICAgICAgIHBsaXN0ID0gQ0RSIChw bGlzdCk7CiAgICAgfQotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogICByZXR1cm4gcGxp c3Q7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmRlbnQuYyBiL3NyYy9pbmRlbnQuYwppbmRl eCAyMzk1MWExLi4zM2Y3MDljIDEwMDY0NAotLS0gYS9zcmMvaW5kZW50LmMKKysrIGIvc3Jj L2luZGVudC5jCkBAIC0xMjAwLDcgKzEyMDAsNiBAQCBjb21wdXRlX21vdGlvbiAocHRyZGlm Zl90IGZyb20sIHB0cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9zLAogICAg IGNvbnRpbnVhdGlvbl9nbHlwaF93aWR0aCA9IDA7ICAvKiBJbiB0aGUgZnJpbmdlLiAgKi8K ICNlbmRpZgogCi0gIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgbWF5YmVfcXVpdCAoKTsK IAogICAvKiBJdCdzIGp1c3QgaW1wb3NzaWJsZSB0byBiZSB0b28gcGFyYW5vaWQgaGVyZS4g ICovCkBAIC0xNjk0LDcgKzE2OTMsNiBAQCBjb21wdXRlX21vdGlvbiAocHRyZGlmZl90IGZy b20sIHB0cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9zLAogICAvKiBOb256 ZXJvIGlmIGhhdmUganVzdCBjb250aW51ZWQgYSBsaW5lICovCiAgIHZhbF9jb21wdXRlX21v dGlvbi5jb250aW4gPSAoY29udGluX2hwb3MgJiYgcHJldl9ocG9zID09IDApOwogCi0gIGlt bWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAgIHJldHVybiAmdmFsX2NvbXB1dGVfbW90aW9uOwog fQogCmRpZmYgLS1naXQgYS9zcmMva2V5Ym9hcmQuYyBiL3NyYy9rZXlib2FyZC5jCmluZGV4 IDBjMDRkOTUuLjMxNzY2OWQgMTAwNjQ0Ci0tLSBhL3NyYy9rZXlib2FyZC5jCisrKyBiL3Ny Yy9rZXlib2FyZC5jCkBAIC0xNjksOSArMTY5LDYgQEAgc3RydWN0IGtib2FyZCAqZWNob19r Ym9hcmQ7CiAKIExpc3BfT2JqZWN0IGVjaG9fbWVzc2FnZV9idWZmZXI7CiAKLS8qIFRydWUg bWVhbnMgQy1nIHNob3VsZCBjYXVzZSBpbW1lZGlhdGUgZXJyb3Itc2lnbmFsLiAgKi8KLWJv b2wgaW1tZWRpYXRlX3F1aXQ7Ci0KIC8qIENoYXJhY3RlciB0aGF0IGNhdXNlcyBhIHF1aXQu ICBOb3JtYWxseSBDLWcuCiAKICAgIElmIHdlIGFyZSBydW5uaW5nIG9uIGFuIG9yZGluYXJ5 IHRlcm1pbmFsLCB0aGlzIG11c3QgYmUgYW4gb3JkaW5hcnkKQEAgLTM1ODQsMTYgKzM1ODEs NyBAQCBrYmRfYnVmZmVyX3N0b3JlX2J1ZmZlcmVkX2V2ZW50ICh1bmlvbiBidWZmZXJlZF9p bnB1dF9ldmVudCAqZXZlbnQsCiAgICAgIGFzIGlucHV0LCBzZXQgcXVpdC1mbGFnIHRvIGNh dXNlIGFuIGludGVycnVwdC4gICovCiAgIGlmICghTklMUCAoVnRocm93X29uX2lucHV0KQog ICAgICAgJiYgTklMUCAoRm1lbXEgKGlnbm9yZV9ldmVudCwgVndoaWxlX25vX2lucHV0X2ln bm9yZV9ldmVudHMpKSkKLSAgICB7Ci0gICAgICBWcXVpdF9mbGFnID0gVnRocm93X29uX2lu cHV0OwotICAgICAgLyogSWYgd2UncmUgaW5zaWRlIGEgZnVuY3Rpb24gdGhhdCB3YW50cyBp bW1lZGlhdGUgcXVpdHMsCi0JIGRvIGl0IG5vdy4gICovCi0gICAgICBpZiAoaW1tZWRpYXRl X3F1aXQgJiYgTklMUCAoVmluaGliaXRfcXVpdCkpCi0JewotCSAgaW1tZWRpYXRlX3F1aXQg PSBmYWxzZTsKLQkgIG1heWJlX3F1aXQgKCk7Ci0JfQotICAgIH0KKyAgICBWcXVpdF9mbGFn ID0gVnRocm93X29uX2lucHV0OwogfQogCiAKQEAgLTEwNDQ1LDMwICsxMDQzMywxMiBAQCBo YW5kbGVfaW50ZXJydXB0IChib29sIGluX3NpZ25hbF9oYW5kbGVyKQogICAgIH0KICAgZWxz ZQogICAgIHsKLSAgICAgIC8qIElmIGV4ZWN1dGluZyBhIGZ1bmN0aW9uIHRoYXQgd2FudHMg dG8gYmUgaW50ZXJydXB0ZWQgb3V0IG9mCi0JIGFuZCB0aGUgdXNlciBoYXMgbm90IGRlZmVy cmVkIHF1aXR0aW5nIGJ5IGJpbmRpbmcgYGluaGliaXQtcXVpdCcKLQkgdGhlbiBxdWl0IHJp Z2h0IGF3YXkuICAqLwotICAgICAgaWYgKGltbWVkaWF0ZV9xdWl0ICYmIE5JTFAgKFZpbmhp Yml0X3F1aXQpICYmICF3YWl0aW5nX2Zvcl9pbnB1dCkKLQl7Ci0JICBzdHJ1Y3QgZ2xfc3Rh dGVfcyBzYXZlZDsKLQotCSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKLQkgIHB0aHJlYWRf c2lnbWFzayAoU0lHX1NFVE1BU0ssICZlbXB0eV9tYXNrLCAwKTsKLQkgIHNhdmVkID0gZ2xf c3RhdGU7Ci0JICBxdWl0ICgpOwotCSAgZ2xfc3RhdGUgPSBzYXZlZDsKLQl9Ci0gICAgICBl bHNlCi0gICAgICAgIHsgLyogRWxzZSByZXF1ZXN0IHF1aXQgd2hlbiBpdCdzIHNhZmUuICAq LwotCSAgaW50IGNvdW50ID0gTklMUCAoVnF1aXRfZmxhZykgPyAxIDogZm9yY2VfcXVpdF9j b3VudCArIDE7Ci0JICBmb3JjZV9xdWl0X2NvdW50ID0gY291bnQ7Ci0JICBpZiAoY291bnQg PT0gMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaW1tZWRpYXRlX3F1aXQgPSB0 cnVlOwotICAgICAgICAgICAgICBWaW5oaWJpdF9xdWl0ID0gUW5pbDsKLSAgICAgICAgICAg IH0KLSAgICAgICAgICBWcXVpdF9mbGFnID0gUXQ7Ci0gICAgICAgIH0KKyAgICAgIC8qIFJl cXVlc3QgcXVpdCB3aGVuIGl0J3Mgc2FmZS4gICovCisgICAgICBpbnQgY291bnQgPSBOSUxQ IChWcXVpdF9mbGFnKSA/IDEgOiBmb3JjZV9xdWl0X2NvdW50ICsgMTsKKyAgICAgIGZvcmNl X3F1aXRfY291bnQgPSBjb3VudDsKKyAgICAgIGlmIChjb3VudCA9PSAzKQorCVZpbmhpYml0 X3F1aXQgPSBRbmlsOworICAgICAgVnF1aXRfZmxhZyA9IFF0OwogICAgIH0KIAogICBwdGhy ZWFkX3NpZ21hc2sgKFNJR19TRVRNQVNLLCAmZW1wdHlfbWFzaywgMCk7CkBAIC0xMDkwNyw3 ICsxMDg3Nyw2IEBAIGluaXRfa2V5Ym9hcmQgKHZvaWQpCiB7CiAgIC8qIFRoaXMgaXMgY29y cmVjdCBiZWZvcmUgb3V0ZXJtb3N0IGludm9jYXRpb24gb2YgdGhlIGVkaXRvciBsb29wLiAg Ki8KICAgY29tbWFuZF9sb29wX2xldmVsID0gLTE7Ci0gIGltbWVkaWF0ZV9xdWl0ID0gZmFs c2U7CiAgIHF1aXRfY2hhciA9IEN0bCAoJ2cnKTsKICAgVnVucmVhZF9jb21tYW5kX2V2ZW50 cyA9IFFuaWw7CiAgIHRpbWVyX2lkbGVuZXNzX3N0YXJ0X3RpbWUgPSBpbnZhbGlkX3RpbWVz cGVjICgpOwpkaWZmIC0tZ2l0IGEvc3JjL2xpc3AuaCBiL3NyYy9saXNwLmgKaW5kZXggOTFj NDMwZi4uNjg2NmQwZiAxMDA2NDQKLS0tIGEvc3JjL2xpc3AuaAorKysgYi9zcmMvbGlzcC5o CkBAIC0zMTMxLDExICszMTMxLDYgQEAgZXh0ZXJuIExpc3BfT2JqZWN0IG1lbW9yeV9zaWdu YWxfZGF0YTsKICAgIGltcG9zc2libGUsIG9mIGNvdXJzZS4gIEJ1dCBpdCBpcyB2ZXJ5IGRl c2lyYWJsZSB0byBhdm9pZCBjcmVhdGluZwogICAgbG9vcHMgd2hlcmUgbWF5YmVfcXVpdCBp cyBpbXBvc3NpYmxlLgogCi0gICBFeGNlcHRpb246IGlmIHlvdSBzZXQgaW1tZWRpYXRlX3F1 aXQsIHRoZSBoYW5kbGVyIHRoYXQgcmVzcG9uZHMgdG8KLSAgIHRoZSBDLWcgZG9lcyB0aGUg cXVpdCBpdHNlbGYuICBUaGlzIGlzIGEgZ29vZCB0aGluZyB0byBkbyBhcm91bmQgYQotICAg bG9vcCB0aGF0IGhhcyBubyBzaWRlIGVmZmVjdHMgYW5kIChpbiBwYXJ0aWN1bGFyKSBjYW5u b3QgY2FsbAotICAgYXJiaXRyYXJ5IExpc3AgY29kZS4KLQogICAgSWYgcXVpdC1mbGFnIGlz IHNldCB0byBga2lsbC1lbWFjcycgdGhlIFNJR0lOVCBoYW5kbGVyIGhhcyByZWNlaXZlZAog ICAgYSByZXF1ZXN0IHRvIGV4aXQgRW1hY3Mgd2hlbiBpdCBpcyBzYWZlIHRvIGRvLgogCkBA IC00MzQ4LDkgKzQzNDMsNiBAQCBleHRlcm4gY2hhciBteV9lZGF0YVtdOwogZXh0ZXJuIGNo YXIgbXlfZW5kYnNzW107CiBleHRlcm4gY2hhciAqbXlfZW5kYnNzX3N0YXRpYzsKIAotLyog VHJ1ZSBtZWFucyBeRyBjYW4gcXVpdCBpbnN0YW50bHkuICAqLwotZXh0ZXJuIGJvb2wgaW1t ZWRpYXRlX3F1aXQ7Ci0KIGV4dGVybiB2b2lkICp4bWFsbG9jIChzaXplX3QpIEFUVFJJQlVU RV9NQUxMT0NfU0laRSAoKDEpKTsKIGV4dGVybiB2b2lkICp4emFsbG9jIChzaXplX3QpIEFU VFJJQlVURV9NQUxMT0NfU0laRSAoKDEpKTsKIGV4dGVybiB2b2lkICp4cmVhbGxvYyAodm9p ZCAqLCBzaXplX3QpIEFUVFJJQlVURV9BTExPQ19TSVpFICgoMikpOwpkaWZmIC0tZ2l0IGEv c3JjL3Byb2Nlc3MuYyBiL3NyYy9wcm9jZXNzLmMKaW5kZXggZGJkNDM1OC4uNDM0YTM5NSAx MDA2NDQKLS0tIGEvc3JjL3Byb2Nlc3MuYworKysgYi9zcmMvcHJvY2Vzcy5jCkBAIC0zNDMx LDcgKzM0MzEsNiBAQCBjb25uZWN0X25ldHdvcmtfc29ja2V0IChMaXNwX09iamVjdCBwcm9j LCBMaXNwX09iamVjdCBhZGRyaW5mb3MsCiAJICBicmVhazsKIAl9CiAKLSAgICAgIGltbWVk aWF0ZV9xdWl0ID0gdHJ1ZTsKICAgICAgIG1heWJlX3F1aXQgKCk7CiAKICAgICAgIHJldCA9 IGNvbm5lY3QgKHMsIHNhLCBhZGRybGVuKTsKQEAgLTM0MzksOCArMzQzOCw3IEBAIGNvbm5l Y3RfbmV0d29ya19zb2NrZXQgKExpc3BfT2JqZWN0IHByb2MsIExpc3BfT2JqZWN0IGFkZHJp bmZvcywKIAogICAgICAgaWYgKHJldCA9PSAwIHx8IHhlcnJubyA9PSBFSVNDT05OKQogCXsK LQkgIC8qIFRoZSB1bndpbmQtcHJvdGVjdCB3aWxsIGJlIGRpc2NhcmRlZCBhZnRlcndhcmRz LgotCSAgICAgTGlrZXdpc2UgZm9yIGltbWVkaWF0ZV9xdWl0LiAgKi8KKwkgIC8qIFRoZSB1 bndpbmQtcHJvdGVjdCB3aWxsIGJlIGRpc2NhcmRlZCBhZnRlcndhcmRzLiAgKi8KIAkgIGJy ZWFrOwogCX0KIApAQCAtMzQ4MSw4ICszNDc5LDYgQEAgY29ubmVjdF9uZXR3b3JrX3NvY2tl dCAoTGlzcF9PYmplY3QgcHJvYywgTGlzcF9PYmplY3QgYWRkcmluZm9zLAogCX0KICNlbmRp ZiAvKiAhV0lORE9XU05UICovCiAKLSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7Ci0K ICAgICAgIC8qIERpc2NhcmQgdGhlIHVud2luZCBwcm90ZWN0IGNsb3NpbmcgUy4gICovCiAg ICAgICBzcGVjcGRsX3B0ciA9IHNwZWNwZGwgKyBjb3VudDsKICAgICAgIGVtYWNzX2Nsb3Nl IChzKTsKQEAgLTM1MzksOCArMzUzNSw2IEBAIGNvbm5lY3RfbmV0d29ya19zb2NrZXQgKExp c3BfT2JqZWN0IHByb2MsIExpc3BfT2JqZWN0IGFkZHJpbmZvcywKICNlbmRpZgogICAgIH0K IAotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwotCiAgIGlmIChzIDwgMCkKICAgICB7CiAg ICAgICAvKiBJZiBub24tYmxvY2tpbmcgZ290IHRoaXMgZmFyIC0gYW5kIGZhaWxlZCAtIGFz c3VtZSBub24tYmxvY2tpbmcgaXMKQEAgLTQwMTIsNyArNDAwNiw2IEBAIHVzYWdlOiAobWFr ZS1uZXR3b3JrLXByb2Nlc3MgJnJlc3QgQVJHUykgICovKQogICAgICAgc3RydWN0IGFkZHJp bmZvICpyZXMsICpscmVzOwogICAgICAgaW50IHJldDsKIAotICAgICAgaW1tZWRpYXRlX3F1 aXQgPSB0cnVlOwogICAgICAgbWF5YmVfcXVpdCAoKTsKIAogICAgICAgc3RydWN0IGFkZHJp bmZvIGhpbnRzOwpAQCAtNDAzNCw3ICs0MDI3LDYgQEAgdXNhZ2U6IChtYWtlLW5ldHdvcmst cHJvY2VzcyAmcmVzdCBBUkdTKSAgKi8pCiAjZWxzZQogCWVycm9yICgiJXMvJXMgZ2V0YWRk cmluZm8gZXJyb3IgJWQiLCBTU0RBVEEgKGhvc3QpLCBwb3J0c3RyaW5nLCByZXQpOwogI2Vu ZGlmCi0gICAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCiAgICAgICBmb3IgKGxyZXMg PSByZXM7IGxyZXM7IGxyZXMgPSBscmVzLT5haV9uZXh0KQogCWFkZHJpbmZvcyA9IEZjb25z IChjb252X2FkZHJpbmZvX3RvX2xpc3AgKGxyZXMpLCBhZGRyaW5mb3MpOwpkaWZmIC0tZ2l0 IGEvc3JjL3JlZ2V4LmMgYi9zcmMvcmVnZXguYwppbmRleCBmNmU2N2FmLi43OTZmODY4IDEw MDY0NAotLS0gYS9zcmMvcmVnZXguYworKysgYi9zcmMvcmVnZXguYwpAQCAtMTcyOCwxMCAr MTcyOCw4IEBAIHR5cGVkZWYgc3RydWN0CiAKIC8qIEV4cGxpY2l0IHF1aXQgY2hlY2tpbmcg aXMgbmVlZGVkIGZvciBFbWFjcywgd2hpY2ggdXNlcyBwb2xsaW5nIHRvCiAgICBwcm9jZXNz IGlucHV0IGV2ZW50cy4gICovCi0jaWZkZWYgZW1hY3MKLSMgZGVmaW5lIElNTUVESUFURV9R VUlUX0NIRUNLIChpbW1lZGlhdGVfcXVpdCA/IG1heWJlX3F1aXQgKCkgOiAodm9pZCkgMCkK LSNlbHNlCi0jIGRlZmluZSBJTU1FRElBVEVfUVVJVF9DSEVDSyAoKHZvaWQpIDApCisjaWZu ZGVmIGVtYWNzCitzdGF0aWMgdm9pZCBtYXliZV9xdWl0ICh2b2lkKSB7fQogI2VuZGlmCiAM CiAvKiBTdHJ1Y3R1cmUgdG8gbWFuYWdlIHdvcmsgYXJlYSBmb3IgcmFuZ2UgdGFibGUuICAq LwpAQCAtNTgyMCw3ICs1ODE4LDcgQEAgcmVfbWF0Y2hfMl9pbnRlcm5hbCAoc3RydWN0IHJl X3BhdHRlcm5fYnVmZmVyICpidWZwLCBjb25zdF9yZV9jaGFyICpzdHJpbmcxLAogCS8qIFVu Y29uZGl0aW9uYWxseSBqdW1wICh3aXRob3V0IHBvcHBpbmcgYW55IGZhaWx1cmUgcG9pbnRz KS4gICovCiAJY2FzZSBqdW1wOgogCXVuY29uZGl0aW9uYWxfanVtcDoKLQkgIElNTUVESUFU RV9RVUlUX0NIRUNLOworCSAgbWF5YmVfcXVpdCAoKTsKIAkgIEVYVFJBQ1RfTlVNQkVSX0FO RF9JTkNSIChtY250LCBwKTsJLyogR2V0IHRoZSBhbW91bnQgdG8ganVtcC4gICovCiAJICBE RUJVR19QUklOVCAoIkVYRUNVVElORyBqdW1wICVkICIsIG1jbnQpOwogCSAgcCArPSBtY250 OwkJCQkvKiBEbyB0aGUganVtcC4gICovCkBAIC02MTY4LDcgKzYxNjYsNyBAQCByZV9tYXRj aF8yX2ludGVybmFsIChzdHJ1Y3QgcmVfcGF0dGVybl9idWZmZXIgKmJ1ZnAsIGNvbnN0X3Jl X2NoYXIgKnN0cmluZzEsCiAKICAgICAvKiBXZSBnb3RvIGhlcmUgaWYgYSBtYXRjaGluZyBv cGVyYXRpb24gZmFpbHMuICovCiAgICAgZmFpbDoKLSAgICAgIElNTUVESUFURV9RVUlUX0NI RUNLOworICAgICAgbWF5YmVfcXVpdCAoKTsKICAgICAgIGlmICghRkFJTF9TVEFDS19FTVBU WSAoKSkKIAl7CiAJICByZV9jaGFyICpzdHIsICpwYXQ7CmRpZmYgLS1naXQgYS9zcmMvc2Vh cmNoLmMgYi9zcmMvc2VhcmNoLmMKaW5kZXggZjU0ZjQ0Yy4uZWQ5YzEyYyAxMDA2NDQKLS0t IGEvc3JjL3NlYXJjaC5jCisrKyBiL3NyYy9zZWFyY2guYwpAQCAtMjc3LDcgKzI3Nyw2IEBA IGxvb2tpbmdfYXRfMSAoTGlzcF9PYmplY3Qgc3RyaW5nLCBib29sIHBvc2l4KQogCQkJICAh TklMUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVy cykpKTsKIAogICAvKiBEbyBhIHBlbmRpbmcgcXVpdCByaWdodCBhd2F5LCB0byBhdm9pZCBw YXJhZG94aWNhbCBiZWhhdmlvciAqLwotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgIG1h eWJlX3F1aXQgKCk7CiAKICAgLyogR2V0IHBvaW50ZXJzIGFuZCBzaXplcyBvZiB0aGUgdHdv IHN0cmluZ3MKQEAgLTMxMSw3ICszMTAsNiBAQCBsb29raW5nX2F0XzEgKExpc3BfT2JqZWN0 IHN0cmluZywgYm9vbCBwb3NpeCkKIAkJICAoTklMUCAoVmluaGliaXRfY2hhbmdpbmdfbWF0 Y2hfZGF0YSkKIAkJICAgPyAmc2VhcmNoX3JlZ3MgOiBOVUxMKSwKIAkJICBaVl9CWVRFIC0g QkVHVl9CWVRFKTsKLSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKICNpZmRlZiBSRUxfQUxM T0MKICAgcl9hbGxvY19pbmhpYml0X2J1ZmZlcl9yZWxvY2F0aW9uICgwKTsKICNlbmRpZgpA QCAtMzk5LDcgKzM5Nyw2IEBAIHN0cmluZ19tYXRjaF8xIChMaXNwX09iamVjdCByZWdleHAs IExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3Qgc3RhcnQsCiAJCQkgICA/IEJWQVIg KGN1cnJlbnRfYnVmZmVyLCBjYXNlX2Nhbm9uX3RhYmxlKSA6IFFuaWwpLAogCQkJICBwb3Np eCwKIAkJCSAgU1RSSU5HX01VTFRJQllURSAoc3RyaW5nKSk7Ci0gIGltbWVkaWF0ZV9xdWl0 ID0gdHJ1ZTsKICAgcmVfbWF0Y2hfb2JqZWN0ID0gc3RyaW5nOwogCiAgIHZhbCA9IHJlX3Nl YXJjaCAoYnVmcCwgU1NEQVRBIChzdHJpbmcpLApAQCAtNDA3LDcgKzQwNCw2IEBAIHN0cmlu Z19tYXRjaF8xIChMaXNwX09iamVjdCByZWdleHAsIExpc3BfT2JqZWN0IHN0cmluZywgTGlz cF9PYmplY3Qgc3RhcnQsCiAJCSAgIFNCWVRFUyAoc3RyaW5nKSAtIHBvc19ieXRlLAogCQkg ICAoTklMUCAoVmluaGliaXRfY2hhbmdpbmdfbWF0Y2hfZGF0YSkKIAkJICAgID8gJnNlYXJj aF9yZWdzIDogTlVMTCkpOwotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCiAgIC8qIFNl dCBsYXN0X3RoaW5nX3NlYXJjaGVkIG9ubHkgd2hlbiBtYXRjaCBkYXRhIGlzIGNoYW5nZWQu ICAqLwogICBpZiAoTklMUCAoVmluaGliaXRfY2hhbmdpbmdfbWF0Y2hfZGF0YSkpCkBAIC00 NzEsMTMgKzQ2NywxMSBAQCBmYXN0X3N0cmluZ19tYXRjaF9pbnRlcm5hbCAoTGlzcF9PYmpl Y3QgcmVnZXhwLCBMaXNwX09iamVjdCBzdHJpbmcsCiAKICAgYnVmcCA9IGNvbXBpbGVfcGF0 dGVybiAocmVnZXhwLCAwLCB0YWJsZSwKIAkJCSAgMCwgU1RSSU5HX01VTFRJQllURSAoc3Ry aW5nKSk7Ci0gIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgcmVfbWF0Y2hfb2JqZWN0ID0g c3RyaW5nOwogCiAgIHZhbCA9IHJlX3NlYXJjaCAoYnVmcCwgU1NEQVRBIChzdHJpbmcpLAog CQkgICBTQllURVMgKHN0cmluZyksIDAsCiAJCSAgIFNCWVRFUyAoc3RyaW5nKSwgMCk7Ci0g IGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTQ5OCw5 ICs0OTIsNyBAQCBmYXN0X2Nfc3RyaW5nX21hdGNoX2lnbm9yZV9jYXNlIChMaXNwX09iamVj dCByZWdleHAsCiAgIGJ1ZnAgPSBjb21waWxlX3BhdHRlcm4gKHJlZ2V4cCwgMCwKIAkJCSAg VmFzY2lpX2Nhbm9uX3RhYmxlLCAwLAogCQkJICAwKTsKLSAgaW1tZWRpYXRlX3F1aXQgPSB0 cnVlOwogICB2YWwgPSByZV9zZWFyY2ggKGJ1ZnAsIHN0cmluZywgbGVuLCAwLCBsZW4sIDAp OwotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogICByZXR1cm4gdmFsOwogfQogCkBAIC01 NjEsNyArNTUzLDYgQEAgZmFzdF9sb29raW5nX2F0IChMaXNwX09iamVjdCByZWdleHAsIHB0 cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0ZSwKICAgICB9CiAKICAgYnVmID0gY29t cGlsZV9wYXR0ZXJuIChyZWdleHAsIDAsIFFuaWwsIDAsIG11bHRpYnl0ZSk7Ci0gIGltbWVk aWF0ZV9xdWl0ID0gdHJ1ZTsKICNpZmRlZiBSRUxfQUxMT0MKICAgLyogUHJldmVudCByYWxs b2MuYyBmcm9tIHJlbG9jYXRpbmcgdGhlIGN1cnJlbnQgYnVmZmVyIHdoaWxlCiAgICAgIHNl YXJjaGluZyBpdC4gICovCkBAIC01NzIsNyArNTYzLDYgQEAgZmFzdF9sb29raW5nX2F0IChM aXNwX09iamVjdCByZWdleHAsIHB0cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0ZSwK ICNpZmRlZiBSRUxfQUxMT0MKICAgcl9hbGxvY19pbmhpYml0X2J1ZmZlcl9yZWxvY2F0aW9u ICgwKTsKICNlbmRpZgotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCiAgIHJldHVybiBs ZW47CiB9CkBAIC02NDksNyArNjM5LDcgQEAgbmV3bGluZV9jYWNoZV9vbl9vZmYgKHN0cnVj dCBidWZmZXIgKmJ1ZikKICAgIElmIEJZVEVQT1MgaXMgbm90IE5VTEwsIHNldCAqQllURVBP UyB0byB0aGUgYnl0ZSBwb3NpdGlvbiBjb3JyZXNwb25kaW5nCiAgICB0byB0aGUgcmV0dXJu ZWQgY2hhcmFjdGVyIHBvc2l0aW9uLgogCi0gICBJZiBBTExPV19RVUlULCBzZXQgaW1tZWRp YXRlX3F1aXQuICBUaGF0J3MgZ29vZCB0byBkbworICAgSWYgQUxMT1dfUVVJVCwgY2hlY2sg Zm9yIHF1aXR0aW5nLiAgVGhhdCdzIGdvb2QgdG8gZG8KICAgIGV4Y2VwdCB3aGVuIGluc2lk ZSByZWRpc3BsYXkuICAqLwogCiBwdHJkaWZmX3QKQEAgLTY4NSw4ICs2NzUsNiBAQCBmaW5k X25ld2xpbmUgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5dGUsIHB0cmRp ZmZfdCBlbmQsCiAgIGlmIChzaG9ydGFnZSAhPSAwKQogICAgICpzaG9ydGFnZSA9IDA7CiAK LSAgaW1tZWRpYXRlX3F1aXQgPSBhbGxvd19xdWl0OwotCiAgIGlmIChjb3VudCA+IDApCiAg ICAgd2hpbGUgKHN0YXJ0ICE9IGVuZCkKICAgICAgIHsKQEAgLTcwNCw3ICs2OTIsNiBAQCBm aW5kX25ld2xpbmUgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5dGUsIHB0 cmRpZmZfdCBlbmQsCiAgICAgICAgICAgICBwdHJkaWZmX3QgbmV4dF9jaGFuZ2U7CiAJICAg IGludCByZXN1bHQgPSAxOwogCi0gICAgICAgICAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNl OwogICAgICAgICAgICAgd2hpbGUgKHN0YXJ0IDwgZW5kICYmIHJlc3VsdCkKIAkgICAgICB7 CiAJCXB0cmRpZmZfdCBsaW0xOwpAQCAtNzU3LDcgKzc0NCw2IEBAIGZpbmRfbmV3bGluZSAo cHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3Qgc3RhcnRfYnl0ZSwgcHRyZGlmZl90IGVuZCwK IAkJc3RhcnRfYnl0ZSA9IGVuZF9ieXRlOwogCQlicmVhazsKIAkgICAgICB9Ci0gICAgICAg ICAgICBpbW1lZGlhdGVfcXVpdCA9IGFsbG93X3F1aXQ7CiAKICAgICAgICAgICAgIC8qIFNU QVJUIHNob3VsZCBuZXZlciBiZSBhZnRlciBFTkQuICAqLwogICAgICAgICAgICAgaWYgKHN0 YXJ0X2J5dGUgPiBjZWlsaW5nX2J5dGUpCkBAIC04MTAsNyArNzk2LDYgQEAgZmluZF9uZXds aW5lIChwdHJkaWZmX3Qgc3RhcnQsIHB0cmRpZmZfdCBzdGFydF9ieXRlLCBwdHJkaWZmX3Qg ZW5kLAogCiAJICAgICAgaWYgKC0tY291bnQgPT0gMCkKIAkJewotCQkgIGltbWVkaWF0ZV9x dWl0ID0gZmFsc2U7CiAJCSAgaWYgKGJ5dGVwb3MpCiAJCSAgICAqYnl0ZXBvcyA9IGxpbV9i eXRlICsgbmV4dDsKIAkJICByZXR1cm4gQllURV9UT19DSEFSIChsaW1fYnl0ZSArIG5leHQp OwpAQCAtODMzLDcgKzgxOCw2IEBAIGZpbmRfbmV3bGluZSAocHRyZGlmZl90IHN0YXJ0LCBw dHJkaWZmX3Qgc3RhcnRfYnl0ZSwgcHRyZGlmZl90IGVuZCwKICAgICAgICAgICAgIHB0cmRp ZmZfdCBuZXh0X2NoYW5nZTsKIAkgICAgaW50IHJlc3VsdCA9IDE7CiAKLSAgICAgICAgICAg IGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAgICAgICAgICAgICB3aGlsZSAoc3RhcnQgPiBl bmQgJiYgcmVzdWx0KQogCSAgICAgIHsKIAkJcHRyZGlmZl90IGxpbTE7CkBAIC04NzAsNyAr ODU0LDYgQEAgZmluZF9uZXdsaW5lIChwdHJkaWZmX3Qgc3RhcnQsIHB0cmRpZmZfdCBzdGFy dF9ieXRlLCBwdHJkaWZmX3QgZW5kLAogCQlzdGFydF9ieXRlID0gZW5kX2J5dGU7CiAJCWJy ZWFrOwogCSAgICAgIH0KLSAgICAgICAgICAgIGltbWVkaWF0ZV9xdWl0ID0gYWxsb3dfcXVp dDsKIAogICAgICAgICAgICAgLyogU3RhcnQgc2hvdWxkIG5ldmVyIGJlIGF0IG9yIGJlZm9y ZSBlbmQuICAqLwogICAgICAgICAgICAgaWYgKHN0YXJ0X2J5dGUgPD0gY2VpbGluZ19ieXRl KQpAQCAtOTE4LDcgKzkwMSw2IEBAIGZpbmRfbmV3bGluZSAocHRyZGlmZl90IHN0YXJ0LCBw dHJkaWZmX3Qgc3RhcnRfYnl0ZSwgcHRyZGlmZl90IGVuZCwKIAogCSAgICAgIGlmICgrK2Nv dW50ID49IDApCiAJCXsKLQkJICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCQkgIGlmIChi eXRlcG9zKQogCQkgICAgKmJ5dGVwb3MgPSBjZWlsaW5nX2J5dGUgKyBwcmV2ICsgMTsKIAkJ ICByZXR1cm4gQllURV9UT19DSEFSIChjZWlsaW5nX2J5dGUgKyBwcmV2ICsgMSk7CkBAIC05 MzAsNyArOTEyLDYgQEAgZmluZF9uZXdsaW5lIChwdHJkaWZmX3Qgc3RhcnQsIHB0cmRpZmZf dCBzdGFydF9ieXRlLCBwdHJkaWZmX3QgZW5kLAogICAgICAgICB9CiAgICAgICB9CiAKLSAg aW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKICAgaWYgKHNob3J0YWdlKQogICAgICpzaG9ydGFn ZSA9IGNvdW50ICogZGlyZWN0aW9uOwogICBpZiAoYnl0ZXBvcykKQEAgLTk1NCw3ICs5MzUs NyBAQCBmaW5kX25ld2xpbmUgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5 dGUsIHB0cmRpZmZfdCBlbmQsCiAgICB0aGUgbnVtYmVyIG9mIGxpbmUgYm91bmRhcmllcyBs ZWZ0IHVuZm91bmQsIGFuZCBwb3NpdGlvbiBhdAogICAgdGhlIGxpbWl0IHdlIGJ1bXBlZCB1 cCBhZ2FpbnN0LgogCi0gICBJZiBBTExPV19RVUlULCBzZXQgaW1tZWRpYXRlX3F1aXQuICBU aGF0J3MgZ29vZCB0byBkbworICAgSWYgQUxMT1dfUVVJVCwgY2hlY2sgZm9yIHF1aXR0aW5n LiAgVGhhdCdzIGdvb2QgdG8gZG8KICAgIGV4Y2VwdCBpbiBzcGVjaWFsIGNhc2VzLiAgKi8K IAogcHRyZGlmZl90CkBAIC0xMTk3LDkgKzExNzgsNiBAQCBzZWFyY2hfYnVmZmVyIChMaXNw X09iamVjdCBzdHJpbmcsIHB0cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0ZSwKIAkJ CSAgICAgIHRydCwgcG9zaXgsCiAJCQkgICAgICAhTklMUCAoQlZBUiAoY3VycmVudF9idWZm ZXIsIGVuYWJsZV9tdWx0aWJ5dGVfY2hhcmFjdGVycykpKTsKIAotICAgICAgaW1tZWRpYXRl X3F1aXQgPSB0cnVlOwkvKiBRdWl0IGltbWVkaWF0ZWx5IGlmIHVzZXIgdHlwZXMgXkcsCi0J CQkJICAgYmVjYXVzZSBsZXR0aW5nIHRoaXMgZnVuY3Rpb24gZmluaXNoCi0JCQkJICAgY2Fu IHRha2UgdG9vIGxvbmcuICovCiAgICAgICBtYXliZV9xdWl0ICgpOwkJLyogRG8gYSBwZW5k aW5nIHF1aXQgcmlnaHQgYXdheSwKIAkJCQkgICB0byBhdm9pZCBwYXJhZG94aWNhbCBiZWhh dmlvciAqLwogICAgICAgLyogR2V0IHBvaW50ZXJzIGFuZCBzaXplcyBvZiB0aGUgdHdvIHN0 cmluZ3MKQEAgLTEyNjgsNyArMTI0Niw2IEBAIHNlYXJjaF9idWZmZXIgKExpc3BfT2JqZWN0 IHN0cmluZywgcHRyZGlmZl90IHBvcywgcHRyZGlmZl90IHBvc19ieXRlLAogCSAgICB9CiAJ ICBlbHNlCiAJICAgIHsKLQkgICAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogI2lmZGVm IFJFTF9BTExPQwogICAgICAgICAgICAgICByX2FsbG9jX2luaGliaXRfYnVmZmVyX3JlbG9j YXRpb24gKDApOwogI2VuZGlmCkBAIC0xMzEzLDcgKzEyOTAsNiBAQCBzZWFyY2hfYnVmZmVy IChMaXNwX09iamVjdCBzdHJpbmcsIHB0cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0 ZSwKIAkgICAgfQogCSAgZWxzZQogCSAgICB7Ci0JICAgICAgaW1tZWRpYXRlX3F1aXQgPSBm YWxzZTsKICNpZmRlZiBSRUxfQUxMT0MKICAgICAgICAgICAgICAgcl9hbGxvY19pbmhpYml0 X2J1ZmZlcl9yZWxvY2F0aW9uICgwKTsKICNlbmRpZgpAQCAtMTMyMSw3ICsxMjk3LDYgQEAg c2VhcmNoX2J1ZmZlciAoTGlzcF9PYmplY3Qgc3RyaW5nLCBwdHJkaWZmX3QgcG9zLCBwdHJk aWZmX3QgcG9zX2J5dGUsCiAJICAgIH0KIAkgIG4tLTsKIAl9Ci0gICAgICBpbW1lZGlhdGVf cXVpdCA9IGZhbHNlOwogI2lmZGVmIFJFTF9BTExPQwogICAgICAgcl9hbGxvY19pbmhpYml0 X2J1ZmZlcl9yZWxvY2F0aW9uICgwKTsKICNlbmRpZgpAQCAtMzIzMSw4ICszMjA2LDYgQEAg ZmluZF9uZXdsaW5lMSAocHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3Qgc3RhcnRfYnl0ZSwg cHRyZGlmZl90IGVuZCwKICAgaWYgKHNob3J0YWdlICE9IDApCiAgICAgKnNob3J0YWdlID0g MDsKIAotICBpbW1lZGlhdGVfcXVpdCA9IGFsbG93X3F1aXQ7Ci0KICAgaWYgKGNvdW50ID4g MCkKICAgICB3aGlsZSAoc3RhcnQgIT0gZW5kKQogICAgICAgewpAQCAtMzI3NSw3ICszMjQ4 LDYgQEAgZmluZF9uZXdsaW5lMSAocHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3Qgc3RhcnRf Ynl0ZSwgcHRyZGlmZl90IGVuZCwKIAogCSAgICAgIGlmICgtLWNvdW50ID09IDApCiAJCXsK LQkJICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCQkgIGlmIChieXRlcG9zKQogCQkgICAg KmJ5dGVwb3MgPSBsaW1fYnl0ZSArIG5leHQ7CiAJCSAgcmV0dXJuIEJZVEVfVE9fQ0hBUiAo bGltX2J5dGUgKyBuZXh0KTsKQEAgLTMyODcsNyArMzI1OSw2IEBAIGZpbmRfbmV3bGluZTEg KHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5dGUsIHB0cmRpZmZfdCBlbmQs CiAgICAgICAgIH0KICAgICAgIH0KIAotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogICBp ZiAoc2hvcnRhZ2UpCiAgICAgKnNob3J0YWdlID0gY291bnQ7CiAgIGlmIChieXRlcG9zKQpk aWZmIC0tZ2l0IGEvc3JjL3N5bnRheC5jIGIvc3JjL3N5bnRheC5jCmluZGV4IGY5ZTQwOTMu LmU3MTM5MjIgMTAwNjQ0Ci0tLSBhL3NyYy9zeW50YXguYworKysgYi9zcmMvc3ludGF4LmMK QEAgLTE0MjYsNyArMTQyNiw2IEBAIHNjYW5fd29yZHMgKHJlZ2lzdGVyIHB0cmRpZmZfdCBm cm9tLCByZWdpc3RlciBFTUFDU19JTlQgY291bnQpCiAgIGludCBjaDAsIGNoMTsKICAgTGlz cF9PYmplY3QgZnVuYywgcG9zOwogCi0gIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgbWF5 YmVfcXVpdCAoKTsKIAogICBTRVRVUF9TWU5UQVhfVEFCTEUgKGZyb20sIGNvdW50KTsKQEAg LTE0MzYsMTAgKzE0MzUsNyBAQCBzY2FuX3dvcmRzIChyZWdpc3RlciBwdHJkaWZmX3QgZnJv bSwgcmVnaXN0ZXIgRU1BQ1NfSU5UIGNvdW50KQogICAgICAgd2hpbGUgKDEpCiAJewogCSAg aWYgKGZyb20gPT0gZW5kKQotCSAgICB7Ci0JICAgICAgaW1tZWRpYXRlX3F1aXQgPSBmYWxz ZTsKLQkgICAgICByZXR1cm4gMDsKLQkgICAgfQorCSAgICByZXR1cm4gMDsKIAkgIFVQREFU RV9TWU5UQVhfVEFCTEVfRk9SV0FSRCAoZnJvbSk7CiAJICBjaDAgPSBGRVRDSF9DSEFSX0FT X01VTFRJQllURSAoZnJvbV9ieXRlKTsKIAkgIGNvZGUgPSBTWU5UQVggKGNoMCk7CkBAIC0x NDg2LDEwICsxNDgyLDcgQEAgc2Nhbl93b3JkcyAocmVnaXN0ZXIgcHRyZGlmZl90IGZyb20s IHJlZ2lzdGVyIEVNQUNTX0lOVCBjb3VudCkKICAgICAgIHdoaWxlICgxKQogCXsKIAkgIGlm IChmcm9tID09IGJlZykKLQkgICAgewotCSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7 Ci0JICAgICAgcmV0dXJuIDA7Ci0JICAgIH0KKwkgICAgcmV0dXJuIDA7CiAJICBERUNfQk9U SCAoZnJvbSwgZnJvbV9ieXRlKTsKIAkgIFVQREFURV9TWU5UQVhfVEFCTEVfQkFDS1dBUkQg KGZyb20pOwogCSAgY2gxID0gRkVUQ0hfQ0hBUl9BU19NVUxUSUJZVEUgKGZyb21fYnl0ZSk7 CkBAIC0xNTM2LDggKzE1MjksNiBAQCBzY2FuX3dvcmRzIChyZWdpc3RlciBwdHJkaWZmX3Qg ZnJvbSwgcmVnaXN0ZXIgRU1BQ1NfSU5UIGNvdW50KQogICAgICAgY291bnQrKzsKICAgICB9 CiAKLSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKLQogICByZXR1cm4gZnJvbTsKIH0KIApA QCAtMTkyMSw3ICsxOTEyLDYgQEAgc2tpcF9jaGFycyAoYm9vbCBmb3J3YXJkcCwgTGlzcF9P YmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBsaW0sCiAJc3RvcCA9IChwb3MgPj0gR1BUICYm IEdQVCA+IFhJTlQgKGxpbSkpID8gR0FQX0VORF9BRERSIDogZW5kcDsKICAgICAgIH0KIAot ICAgIGltbWVkaWF0ZV9xdWl0ID0gdHJ1ZTsKICAgICAvKiBUaGlzIGNvZGUgbWF5IGxvb2sg dXAgc3ludGF4IHRhYmxlcyB1c2luZyBmdW5jdGlvbnMgdGhhdCByZWx5IG9uIHRoZQogICAg ICAgIGdsX3N0YXRlIG9iamVjdC4gIFRvIG1ha2Ugc3VyZSB0aGlzIG9iamVjdCBpcyBub3Qg b3V0IG9mIGRhdGUsCiAgICAgICAgbGV0J3MgaW5pdGlhbGl6ZSBpdCBtYW51YWxseS4KQEAg LTIwNjQsNyArMjA1NCw2IEBAIHNraXBfY2hhcnMgKGJvb2wgZm9yd2FyZHAsIExpc3BfT2Jq ZWN0IHN0cmluZywgTGlzcF9PYmplY3QgbGltLAogICAgICAgfQogCiAgICAgU0VUX1BUX0JP VEggKHBvcywgcG9zX2J5dGUpOwotICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFsc2U7CiAKICAg ICBTQUZFX0ZSRUUgKCk7CiAgICAgcmV0dXJuIG1ha2VfbnVtYmVyIChQVCAtIHN0YXJ0X3Bv aW50KTsKQEAgLTIxMzgsNyArMjEyNyw2IEBAIHNraXBfc3ludGF4ZXMgKGJvb2wgZm9yd2Fy ZHAsIExpc3BfT2JqZWN0IHN0cmluZywgTGlzcF9PYmplY3QgbGltKQogICAgIHB0cmRpZmZf dCBwb3NfYnl0ZSA9IFBUX0JZVEU7CiAgICAgdW5zaWduZWQgY2hhciAqcCwgKmVuZHAsICpz dG9wOwogCi0gICAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogICAgIFNFVFVQX1NZTlRBWF9U QUJMRSAocG9zLCBmb3J3YXJkcCA/IDEgOiAtMSk7CiAKICAgICBpZiAoZm9yd2FyZHApCkBA IC0yMjI0LDcgKzIyMTIsNiBAQCBza2lwX3N5bnRheGVzIChib29sIGZvcndhcmRwLCBMaXNw X09iamVjdCBzdHJpbmcsIExpc3BfT2JqZWN0IGxpbSkKIAogICBkb25lOgogICAgIFNFVF9Q VF9CT1RIIChwb3MsIHBvc19ieXRlKTsKLSAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwog CiAgICAgcmV0dXJuIG1ha2VfbnVtYmVyIChQVCAtIHN0YXJ0X3BvaW50KTsKICAgfQpAQCAt MjQxMiw3ICsyMzk5LDYgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJl dHVybiBuaWwuICAqLykKICAgY291bnQxID0gWElOVCAoY291bnQpOwogICBzdG9wID0gY291 bnQxID4gMCA/IFpWIDogQkVHVjsKIAotICBpbW1lZGlhdGVfcXVpdCA9IHRydWU7CiAgIG1h eWJlX3F1aXQgKCk7CiAKICAgZnJvbSA9IFBUOwpAQCAtMjQyOSw3ICsyNDE1LDYgQEAgYmV0 d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJldHVybiBuaWwuICAqLykKIAkgIGlm IChmcm9tID09IHN0b3ApCiAJICAgIHsKIAkgICAgICBTRVRfUFRfQk9USCAoZnJvbSwgZnJv bV9ieXRlKTsKLQkgICAgICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogCSAgICAgIHJldHVy biBRbmlsOwogCSAgICB9CiAJICBjID0gRkVUQ0hfQ0hBUl9BU19NVUxUSUJZVEUgKGZyb21f Ynl0ZSk7CkBAIC0yNDYzLDcgKzI0NDgsNiBAQCBiZXR3ZWVuIHRoZW0sIHJldHVybiB0OyBv dGhlcndpc2UgcmV0dXJuIG5pbC4gICovKQogCWNvbXN0eWxlID0gU1RfQ09NTUVOVF9TVFlM RTsKICAgICAgIGVsc2UgaWYgKGNvZGUgIT0gU2NvbW1lbnQpCiAJewotCSAgaW1tZWRpYXRl X3F1aXQgPSBmYWxzZTsKIAkgIERFQ19CT1RIIChmcm9tLCBmcm9tX2J5dGUpOwogCSAgU0VU X1BUX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICByZXR1cm4gUW5pbDsKQEAgLTI0NzQs NyArMjQ1OCw2IEBAIGJldHdlZW4gdGhlbSwgcmV0dXJuIHQ7IG90aGVyd2lzZSByZXR1cm4g bmlsLiAgKi8pCiAgICAgICBmcm9tID0gb3V0X2NoYXJwb3M7IGZyb21fYnl0ZSA9IG91dF9i eXRlcG9zOwogICAgICAgaWYgKCFmb3VuZCkKIAl7Ci0JICBpbW1lZGlhdGVfcXVpdCA9IGZh bHNlOwogCSAgU0VUX1BUX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICByZXR1cm4gUW5p bDsKIAl9CkBAIC0yNDk0LDcgKzI0NzcsNiBAQCBiZXR3ZWVuIHRoZW0sIHJldHVybiB0OyBv dGhlcndpc2UgcmV0dXJuIG5pbC4gICovKQogCSAgaWYgKGZyb20gPD0gc3RvcCkKIAkgICAg ewogCSAgICAgIFNFVF9QVF9CT1RIIChCRUdWLCBCRUdWX0JZVEUpOwotCSAgICAgIGltbWVk aWF0ZV9xdWl0ID0gZmFsc2U7CiAJICAgICAgcmV0dXJuIFFuaWw7CiAJICAgIH0KIApAQCAt MjU4Nyw3ICsyNTY5LDYgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJl dHVybiBuaWwuICAqLykKIAkgIGVsc2UgaWYgKGNvZGUgIT0gU3doaXRlc3BhY2UgfHwgcXVv dGVkKQogCSAgICB7CiAJICAgIGxlYXZlOgotCSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFs c2U7CiAJICAgICAgSU5DX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICAgICAgU0VUX1BU X0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICAgICAgcmV0dXJuIFFuaWw7CkBAIC0yNTk4 LDcgKzI1NzksNiBAQCBiZXR3ZWVuIHRoZW0sIHJldHVybiB0OyBvdGhlcndpc2UgcmV0dXJu IG5pbC4gICovKQogICAgIH0KIAogICBTRVRfUFRfQk9USCAoZnJvbSwgZnJvbV9ieXRlKTsK LSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKICAgcmV0dXJuIFF0OwogfQogDApAQCAtMjY0 MCw3ICsyNjIwLDYgQEAgc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBj b3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBib29sIHNleHBmbGFnKQogCiAgIGZyb21fYnl0ZSA9 IENIQVJfVE9fQllURSAoZnJvbSk7CiAKLSAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogICBt YXliZV9xdWl0ICgpOwogCiAgIFNFVFVQX1NZTlRBWF9UQUJMRSAoZnJvbSwgY291bnQpOwpA QCAtMjgwMSw3ICsyNzgwLDYgQEAgc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNT X0lOVCBjb3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBib29sIHNleHBmbGFnKQogICAgICAgaWYg KGRlcHRoKQogCWdvdG8gbG9zZTsKIAotICAgICAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsK ICAgICAgIHJldHVybiBRbmlsOwogCiAgICAgICAvKiBFbmQgb2Ygb2JqZWN0IHJlYWNoZWQg Ki8KQEAgLTI5ODQsNyArMjk2Miw2IEBAIHNjYW5fbGlzdHMgKEVNQUNTX0lOVCBmcm9tLCBF TUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhwZmxhZykKICAgICAg IGlmIChkZXB0aCkKIAlnb3RvIGxvc2U7CiAKLSAgICAgIGltbWVkaWF0ZV9xdWl0ID0gZmFs c2U7CiAgICAgICByZXR1cm4gUW5pbDsKIAogICAgIGRvbmUyOgpAQCAtMjk5Miw3ICsyOTY5 LDYgQEAgc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBjb3VudCwgRU1B Q1NfSU5UIGRlcHRoLCBib29sIHNleHBmbGFnKQogICAgIH0KIAogCi0gIGltbWVkaWF0ZV9x dWl0ID0gZmFsc2U7CiAgIFhTRVRGQVNUSU5UICh2YWwsIGZyb20pOwogICByZXR1cm4gdmFs OwogCkBAIC0zMTczLDcgKzMxNDksNiBAQCBkbyB7IHByZXZfZnJvbSA9IGZyb207CQkJCVwK ICAgICAgICBVUERBVEVfU1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20pOwlcCiAgIH0gd2hp bGUgKDApCiAKLSAgaW1tZWRpYXRlX3F1aXQgPSB0cnVlOwogICBtYXliZV9xdWl0ICgpOwog CiAgIGRlcHRoID0gc3RhdGUtPmRlcHRoOwpAQCAtMzQzMiw3ICszNDA3LDYgQEAgZG8geyBw cmV2X2Zyb20gPSBmcm9tOwkJCQlcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXRlLT5sZXZlbHN0YXJ0cyk7CiAgIHN0YXRlLT5wcmV2X3N5bnRheCA9IChTWU5UQVhf RkxBR1NfQ09NU1RBUlRFTkRfRklSU1QgKHByZXZfZnJvbV9zeW50YXgpCiAgICAgICAgICAg ICAgICAgICAgICAgICB8fCBzdGF0ZS0+cXVvdGVkKSA/IHByZXZfZnJvbV9zeW50YXggOiBT bWF4OwotICBpbW1lZGlhdGVfcXVpdCA9IGZhbHNlOwogfQogCiAvKiBDb252ZXJ0IGEgKGxp c3ApIHBhcnNlIHN0YXRlIHRvIHRoZSBpbnRlcm5hbCBmb3JtIHVzZWQgaW4KZGlmZiAtLWdp dCBhL3NyYy93MzJmbnMuYyBiL3NyYy93MzJmbnMuYwppbmRleCA2YTU3NmZjLi4xYjYyOGIw IDEwMDY0NAotLS0gYS9zcmMvdzMyZm5zLmMKKysrIGIvc3JjL3czMmZucy5jCkBAIC0zMTY4 LDE2ICszMTY4LDcgQEAgc2lnbmFsX3VzZXJfaW5wdXQgKHZvaWQpCiAgICAgICBWcXVpdF9m bGFnID0gVnRocm93X29uX2lucHV0OwogICAgICAgLyogQ2FsbGluZyBtYXliZV9xdWl0IGZy b20gdGhpcyB0aHJlYWQgaXMgYSBiYWQgaWRlYSwgc2luY2UgdGhpcwogCSB1bndpbmRzIHRo ZSBzdGFjayBvZiB0aGUgTGlzcCB0aHJlYWQsIGFuZCB0aGUgV2luZG93cyBydW50aW1lCi0J IHJpZ2h0ZnVsbHkgYmFyZnMuICBEaXNhYmxlZC4gICovCi0jaWYgMAotICAgICAgLyogSWYg d2UncmUgaW5zaWRlIGEgZnVuY3Rpb24gdGhhdCB3YW50cyBpbW1lZGlhdGUgcXVpdHMsCi0J IGRvIGl0IG5vdy4gICovCi0gICAgICBpZiAoaW1tZWRpYXRlX3F1aXQgJiYgTklMUCAoVmlu aGliaXRfcXVpdCkpCi0JewotCSAgaW1tZWRpYXRlX3F1aXQgPSBmYWxzZTsKLQkgIG1heWJl X3F1aXQgKCk7Ci0JfQotI2VuZGlmCisJIHJpZ2h0ZnVsbHkgYmFyZnMuICAqLwogICAgIH0K IH0KIApkaWZmIC0tZ2l0IGEvc3JjL3dpbmRvdy5jIGIvc3JjL3dpbmRvdy5jCmluZGV4IDcx YTgyYjUuLmJjM2Y0ODggMTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cuYworKysgYi9zcmMvd2lu ZG93LmMKQEAgLTQ3NzAsNyArNDc3MCw2IEBAIHdpbmRvd19zY3JvbGwgKExpc3BfT2JqZWN0 IHdpbmRvdywgRU1BQ1NfSU5UIG4sIGJvb2wgd2hvbGUsIGJvb2wgbm9lcnJvcikKIHsKICAg cHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKIAotICBpbW1lZGlhdGVfcXVp dCA9IHRydWU7CiAgIG4gPSBjbGlwX3RvX2JvdW5kcyAoSU5UX01JTiwgbiwgSU5UX01BWCk7 CiAKICAgd3NldF9yZWRpc3BsYXkgKFhXSU5ET1cgKHdpbmRvdykpOwpAQCAtNDc4OSw3ICs0 Nzg4LDYgQEAgd2luZG93X3Njcm9sbCAoTGlzcF9PYmplY3Qgd2luZG93LCBFTUFDU19JTlQg biwgYm9vbCB3aG9sZSwgYm9vbCBub2Vycm9yKQogCiAgIC8qIEJ1ZyMxNTk1Ny4gICovCiAg IFhXSU5ET1cgKHdpbmRvdyktPndpbmRvd19lbmRfdmFsaWQgPSBmYWxzZTsKLSAgaW1tZWRp YXRlX3F1aXQgPSBmYWxzZTsKIH0KIAogCi0tIAoyLjkuMwoK --------------34CC71419F9E78E8F2F005B7 Content-Type: application/x-patch; name="0002-Revamp-quitting-and-fix-infloops.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Revamp-quitting-and-fix-infloops.patch" RnJvbSA5YmE4MzY1ZjJmZDQ3NGYxZDZhYzE5NjU5OGVkYmFjMjM4YWNiZWZkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBGcmksIDI3IEphbiAyMDE3IDA4OjU4OjUxIC0wODAwClN1YmplY3Q6IFtQQVRD SCAyLzNdIFJldmFtcCBxdWl0dGluZyBhbmQgZml4IGluZmxvb3BzCgpUaGlzIGZpeGVzIHNv bWUgaW5maW5pdGUgbG9vcHMgdGhhdCBjYW5ub3QgYmUgcXVpdHRlZCBvdXQgb2YsCmUuZy4s IChkZWZ1biBmb28gKCkgKG50aCBtb3N0LXBvc2l0aXZlLWZpeG51bSAnIzE9KDEgLiAjMSMp KSkKd2hlbiBieXRlLWNvbXBpbGVkIGFuZCB3aGVuIHJ1biB1bmRlciBYLiAgU2VlOgpodHRw Oi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwvMjAxNy0wMS9tc2cw MDU3Ny5odG1sClRoaXMgYWxzbyBhdHRlbXB0cyB0byBrZWVwIHRoZSBwZXJmb3JtYW5jZSBp bXByb3ZlbWVudHMgSSByZWNlbnRseQphZGRlZCwgYXMgbXVjaCBhcyBwb3NzaWJsZSB1bmRl ciB0aGUgY29uc3RyYWludCB0aGF0IHRoZSBpbmZsb29wcwptdXN0IGJlIGNhdWdodC4gIElu IHNvbWUgY2FzZXMgdGhpcyBmaXhlcyBpbmZsb29wIGJ1Z3MgcmVjZW50bHkKaW50cm9kdWNl ZCB3aGVuIEkgcmVtb3ZlZCBpbW1lZGlhdGVfcXVpdC4KKiBzcmMvYWxsb2MuYyAoRm1ha2Vf bGlzdCk6ClVzZSByYXJlbHlfcXVpdCwgbm90IG1heWJlX3F1aXQsIGZvciBzcGVlZCBpbiB0 aGUgdXN1YWwgY2FzZS4KKiBzcmMvYnl0ZWNvZGUuYyAoZXhlY19ieXRlX2NvZGUpOgoqIHNy Yy9lZGl0Zm5zLmMgKEZjb21wYXJlX2J1ZmZlcl9zdWJzdHJpbmdzKToKKiBzcmMvZm5zLmMg KEZudGhjZHIpOgoqIHNyYy9zeW50YXguYyAoc2Nhbl93b3Jkcywgc2tpcF9jaGFycywgc2tp cF9zeW50YXhlcykKKEZiYWNrd2FyZF9wcmVmaXhfY2hhcnMpOgpVc2UgcmFyZWx5X3F1aXQg c28gdGhhdCB1c2VycyBjYW4gQy1nIG91dCBvZiBsb25nIGxvb3BzLgoqIHNyYy9jYWxscHJv Yy5jIChjYWxsX3Byb2Nlc3NfY2xlYW51cCwgY2FsbF9wcm9jZXNzKToKKiBzcmMvZmlsZWlv LmMgKHJlYWRfbm9uX3JlZ3VsYXIsIEZpbnNlcnRfZmlsZV9jb250ZW50cyk6Ciogc3JjL2lu ZGVudC5jIChjb21wdXRlX21vdGlvbik6Ciogc3JjL3N5bnRheC5jIChzY2FuX3dvcmRzLCBG Zm9yd2FyZF9jb21tZW50KToKUmVtb3ZlIG5vdy11bm5lY2Vzc2FyeSBtYXliZV9xdWl0IGNh bGxzLgoqIHNyYy9jYWxscHJvYy5jIChjYWxsX3Byb2Nlc3MpOgoqIHNyYy9kb2MuYyAoZ2V0 X2RvY19zdHJpbmcsIEZzbmFyZl9kb2N1bWVudGF0aW9uKToKKiBzcmMvZmlsZWlvLmMgKEZj b3B5X2ZpbGUsIHJlYWRfbm9uX3JlZ3VsYXIsIEZpbnNlcnRfZmlsZV9jb250ZW50cyk6Ciog c3JjL2xyZWFkLmMgKHNhZmVfdG9fbG9hZF92ZXJzaW9uKToKKiBzcmMvc3lzZGVwLmMgKHN5 c3RlbV9wcm9jZXNzX2F0dHJpYnV0ZXMpIFtHTlVfTElOVVhdOgpVc2UgZW1hY3NfcmVhZF9x dWl0IGluc3RlYWQgb2YgZW1hY3NfcmVhZCBpbiBwbGFjZXMgd2hlcmUKQy1nIGhhbmRsaW5n IGlzIHNhZmUuCiogc3JjL2V2YWwuYyAobWF5YmVfcXVpdCk6IE1vdmUgY29tbWVudCBoZXJl IGZyb20gbGlzcC5oLgoqIHNyYy9maWxlaW8uYyAoRmNvcHlfZmlsZSwgZV93cml0ZSk6ClVz ZSBlbWFjc193cml0ZV9xdWl0IGluc3RlYWQgb2YgZW1hY3Nfd3JpdGVfc2lnIGluIHBsYWNl cyB3aGVyZQpDLWcgaGFuZGxpbmcgaXMgc2FmZS4KKiBzcmMvZmlsZWxvY2suYyAoY3JlYXRl X2xvY2tfZmlsZSk6IFVzZSBlbWFjc193cml0ZSwgbm90CnBsYWluIHdyaXRlLCBhcyBlbWFj c193cml0ZSBubyBsb25nZXIgaGFzIGEgcHJvYmxlbS4KKHJlYWRfbG9ja19kYXRhKTogVXNl IGVtYWNzX3JlYWQsIG5vdCByZWFkLCBhcyBlbWFjc19yZWFkCm5vIGxvbmdlciBoYXMgYSBw cm9ibGVtLgoqIHNyYy9mbnMuYyAocmFyZWx5X3F1aXQpOiBNb3ZlIHRvIGxpc3AuaCBhbmQg cmVuYW1lIHRvCmluY3JfcmFyZWx5X3F1aXQuICBBbGwgdXNlcyBjaGFuZ2VkLi4KKiBzcmMv Zm5zLmMgKEZtZW1xLCBGbWVtcWwsIEZhc3NxLCBGcmFzc3EsIEZwbGlzdF9wdXQsIEZwbGlz dF9tZW1iZXIpOgoqIHNyYy9pbmRlbnQuYyAoY29tcHV0ZV9tb3Rpb24pOgoqIHNyYy9zeW50 YXguYyAoZmluZF9kZWZ1bl9zdGFydCwgYmFja19jb21tZW50LCBmb3J3X2NvbW1lbnQpCihG Zm9yd2FyZF9jb21tZW50LCBzY2FuX2xpc3RzLCBzY2FuX3NleHBzX2ZvcndhcmQpOgpVc2Ug aW5jcl9yYXJlbHlfcXVpdCBzbyB0aGF0IHVzZXJzIGNhbiBDLWcgb3V0IG9mIGxvbmcgbG9v cHMuCiogc3JjL2Zucy5jIChGbmNvbmMpOiBNb3ZlIGluY3JfcmFyZWx5X3F1aXQgY2FsbCB0 byB3aXRoaW4KaW5uZXIgbG9vcCwgc28gdGhhdCBpdCBjYXRjaGVzIEMtZyB0aGVyZSB0b28u Ciogc3JjL2tleWJvYXJkLmMgKHR0eV9yZWFkX2F2YWlsX2lucHV0KTogUmVtb3ZlIGNvbW1l bnRlZC1vdXQKYW5kIG5vdy1vYnNvbGV0ZSBjb2RlIGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHRz LgoqIHNyYy9saXNwLmggKHJhcmVseV9xdWl0LCBpbmNyX3JhcmVseV9xdWl0KTogTmV3IGZ1 bmN0aW9ucywKdGhlIGxhdHRlciBtb3ZlZCBoZXJlIGZyb20gZm5zLmMgYW5kIHJlbmFtZWQg ZnJvbSByYXJlbHlfcXVpdC4KKGVtYWNzX3JlYWRfcXVpdCwgZW1hY3Nfd3JpdGVfcXVpdCk6 IE5ldyBkZWNscy4KKiBzcmMvc2VhcmNoLmMgKGZpbmRfbmV3bGluZSwgc2VhcmNoX2J1ZmZl ciwgZmluZF9uZXdsaW5lMSk6CkFkZCBtYXliZV9xdWl0IHRvIGNhdGNoIEMtZy4KKiBzcmMv c3lzZGVwLmMgKGdldF9jaGlsZF9zdGF0dXMpOiBBbHdheXMgaW52b2tlIG1heWJlX3F1aXQK aWYgaW50ZXJydXB0aWJsZSwgc28gdGhhdCB0aGUgY2FsbGVyIG5lZWQgbm90IGJvdGhlci4K KGVtYWNzX25vaW50cl9yZWFkLCBlbWFjc19yZWFkX3F1aXQsIGVtYWNzX3dyaXRlX3F1aXQp OgpOZXcgZnVuY3Rpb25zLgooZW1hY3NfcmVhZCk6IFJld3JpdGUgaW4gdGVybXMgb2YgZW1h Y3Nfbm9pbnRyX3JlYWQuCkRvIG5vdCBoYW5kbGUgQy1nIG9yIHNpZ25hbHM7IHRoYXQgaXMg bm93IGZvciBlbWFjc19yZWFkX3F1aXQuCihlbWFjc19mdWxsX3dyaXRlKTogUmVwbGFjZSBQ Uk9DRVNTX1NJR05BTFMgdHdvLXdheSBhcmcKd2l0aCBJTlRFUlJVUFRJQkxFIHRocmVlLXdh eSBhcmcuICBBbGwgdXNlcyBjaGFuZ2VkLgotLS0KIHNyYy9hbGxvYy5jICAgIHwgICAyICst CiBzcmMvYnl0ZWNvZGUuYyB8ICAxNiArKysrLS0tCiBzcmMvY2FsbHByb2MuYyB8ICAgOSAr LS0tCiBzcmMvZG9jLmMgICAgICB8ICAgOSArKy0tCiBzcmMvZWRpdGZucy5jICB8ICAgMSAr CiBzcmMvZXZhbC5jICAgICB8ICAxMyArKysrKysKIHNyYy9maWxlaW8uYyAgIHwgIDU1ICsr KysrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL2ZpbGVsb2NrLmMgfCAgIDcgKy0tLQogc3Jj L2Zucy5jICAgICAgfCAgNTMgKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvaW5kZW50 LmMgICB8ICAxMSArKystLQogc3JjL2tleWJvYXJkLmMgfCAgNDggKysrKysrKy0tLS0tLS0t LS0tLS0tCiBzcmMvbGlzcC5oICAgICB8ICA0MCArKysrKysrKysrKystLS0tLS0KIHNyYy9s cmVhZC5jICAgIHwgICAyICstCiBzcmMvc2VhcmNoLmMgICB8ICAgOCArKysrCiBzcmMvc3lu dGF4LmMgICB8IDExMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tCiBzcmMvc3lzZGVwLmMgICB8IDEyOSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDE2IGZpbGVzIGNoYW5nZWQs IDI5NSBpbnNlcnRpb25zKCspLCAyMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2FsbG9jLmMgYi9zcmMvYWxsb2MuYwppbmRleCBkZDJiNjg4Li4yMDM4ZTkzIDEwMDY0NAot LS0gYS9zcmMvYWxsb2MuYworKysgYi9zcmMvYWxsb2MuYwpAQCAtMjg4MCw3ICsyODgwLDcg QEAgREVGVU4gKCJtYWtlLWxpc3QiLCBGbWFrZV9saXN0LCBTbWFrZV9saXN0LCAyLCAyLCAw LAogICBmb3IgKEVNQUNTX0lOVCBzaXplID0gWEZBU1RJTlQgKGxlbmd0aCk7IDAgPCBzaXpl OyBzaXplLS0pCiAgICAgewogICAgICAgdmFsID0gRmNvbnMgKGluaXQsIHZhbCk7Ci0gICAg ICBtYXliZV9xdWl0ICgpOworICAgICAgcmFyZWx5X3F1aXQgKHNpemUpOwogICAgIH0KIAog ICByZXR1cm4gdmFsOwpkaWZmIC0tZ2l0IGEvc3JjL2J5dGVjb2RlLmMgYi9zcmMvYnl0ZWNv ZGUuYwppbmRleCBlZDU4ZDE4Li4wZjc0MjBjIDEwMDY0NAotLS0gYS9zcmMvYnl0ZWNvZGUu YworKysgYi9zcmMvYnl0ZWNvZGUuYwpAQCAtODQxLDkgKzg0MSwxMSBAQCBleGVjX2J5dGVf Y29kZSAoTGlzcF9PYmplY3QgYnl0ZXN0ciwgTGlzcF9PYmplY3QgdmVjdG9yLCBMaXNwX09i amVjdCBtYXhkZXB0aCwKIAkgIHsKIAkgICAgTGlzcF9PYmplY3QgdjIgPSBQT1AsIHYxID0g VE9QOwogCSAgICBDSEVDS19OVU1CRVIgKHYxKTsKLQkgICAgRU1BQ1NfSU5UIG4gPSBYSU5U ICh2MSk7Ci0JICAgIHdoaWxlICgtLW4gPj0gMCAmJiBDT05TUCAodjIpKQotCSAgICAgIHYy ID0gWENEUiAodjIpOworCSAgICBmb3IgKEVNQUNTX0lOVCBuID0gWElOVCAodjEpOyAwIDwg biAmJiBDT05TUCAodjIpOyBuLS0pCisJICAgICAgeworCQl2MiA9IFhDRFIgKHYyKTsKKwkJ cmFyZWx5X3F1aXQgKG4pOworCSAgICAgIH0KIAkgICAgVE9QID0gQ0FSICh2Mik7CiAJICAg IE5FWFQ7CiAJICB9CkBAIC0xMjczLDkgKzEyNzUsMTEgQEAgZXhlY19ieXRlX2NvZGUgKExp c3BfT2JqZWN0IGJ5dGVzdHIsIExpc3BfT2JqZWN0IHZlY3RvciwgTGlzcF9PYmplY3QgbWF4 ZGVwdGgsCiAJCS8qIEV4Y2hhbmdlIGFyZ3MgYW5kIHRoZW4gZG8gbnRoLiAgKi8KIAkJTGlz cF9PYmplY3QgdjIgPSBQT1AsIHYxID0gVE9QOwogCQlDSEVDS19OVU1CRVIgKHYyKTsKLQkJ RU1BQ1NfSU5UIG4gPSBYSU5UICh2Mik7Ci0JCXdoaWxlICgtLW4gPj0gMCAmJiBDT05TUCAo djEpKQotCQkgIHYxID0gWENEUiAodjEpOworCQlmb3IgKEVNQUNTX0lOVCBuID0gWElOVCAo djIpOyAwIDwgbiAmJiBDT05TUCAodjEpOyBuLS0pCisJCSAgeworCQkgICAgdjEgPSBYQ0RS ICh2MSk7CisJCSAgICByYXJlbHlfcXVpdCAobik7CisJCSAgfQogCQlUT1AgPSBDQVIgKHYx KTsKIAkgICAgICB9CiAJICAgIGVsc2UKZGlmZiAtLWdpdCBhL3NyYy9jYWxscHJvYy5jIGIv c3JjL2NhbGxwcm9jLmMKaW5kZXggODU2NzRiYi4uNzEwMTc0YyAxMDA2NDQKLS0tIGEvc3Jj L2NhbGxwcm9jLmMKKysrIGIvc3JjL2NhbGxwcm9jLmMKQEAgLTE5OCw3ICsxOTgsNiBAQCBj YWxsX3Byb2Nlc3NfY2xlYW51cCAoTGlzcF9PYmplY3QgYnVmZmVyKQogICAgIHsKICAgICAg IGtpbGwgKC1zeW5jaF9wcm9jZXNzX3BpZCwgU0lHSU5UKTsKICAgICAgIG1lc3NhZ2UxICgi V2FpdGluZyBmb3IgcHJvY2VzcyB0byBkaWUuLi4odHlwZSBDLWcgYWdhaW4gdG8ga2lsbCBp dCBpbnN0YW50bHkpIik7Ci0gICAgICBtYXliZV9xdWl0ICgpOwogICAgICAgd2FpdF9mb3Jf dGVybWluYXRpb24gKHN5bmNoX3Byb2Nlc3NfcGlkLCAwLCAxKTsKICAgICAgIHN5bmNoX3By b2Nlc3NfcGlkID0gMDsKICAgICAgIG1lc3NhZ2UxICgiV2FpdGluZyBmb3IgcHJvY2VzcyB0 byBkaWUuLi5kb25lIik7CkBAIC03MjQsOCArNzIzLDYgQEAgY2FsbF9wcm9jZXNzIChwdHJk aWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzLCBpbnQgZmlsZWZkLAogICAgICAgcHJv Y2Vzc19jb2Rpbmcuc3JjX211bHRpYnl0ZSA9IDA7CiAgICAgfQogCi0gIG1heWJlX3F1aXQg KCk7Ci0KICAgaWYgKDAgPD0gZmQwKQogICAgIHsKICAgICAgIGVudW0geyBDQUxMUFJPQ19C VUZGRVJfU0laRV9NSU4gPSAxNiAqIDEwMjQgfTsKQEAgLTc0Niw4ICs3NDMsOCBAQCBjYWxs X3Byb2Nlc3MgKHB0cmRpZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3MsIGludCBmaWxl ZmQsCiAJICBucmVhZCA9IGNhcnJ5b3ZlcjsKIAkgIHdoaWxlIChucmVhZCA8IGJ1ZnNpemUg LSAxMDI0KQogCSAgICB7Ci0JICAgICAgaW50IHRoaXNfcmVhZCA9IGVtYWNzX3JlYWQgKGZk MCwgYnVmICsgbnJlYWQsCi0JCQkJCSAgYnVmc2l6ZSAtIG5yZWFkKTsKKwkgICAgICBpbnQg dGhpc19yZWFkID0gZW1hY3NfcmVhZF9xdWl0IChmZDAsIGJ1ZiArIG5yZWFkLAorCQkJCQkg ICAgICAgYnVmc2l6ZSAtIG5yZWFkKTsKIAogCSAgICAgIGlmICh0aGlzX3JlYWQgPCAwKQog CQlnb3RvIGdpdmVfdXA7CkBAIC04MzgsOCArODM1LDYgQEAgY2FsbF9wcm9jZXNzIChwdHJk aWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzLCBpbnQgZmlsZWZkLAogCQkgd2Ugc2hv dWxkIGhhdmUgYWxyZWFkeSBkZXRlY3RlZCBhIGNvZGluZyBzeXN0ZW0uICAqLwogCSAgICAg IGRpc3BsYXlfb25fdGhlX2ZseSA9IHRydWU7CiAJICAgIH0KLQotCSAgbWF5YmVfcXVpdCAo KTsKIAl9CiAgICAgZ2l2ZV91cDogOwogCmRpZmYgLS1naXQgYS9zcmMvZG9jLmMgYi9zcmMv ZG9jLmMKaW5kZXggMzYxZDA5YS4uMWU3ZTNmYyAxMDA2NDQKLS0tIGEvc3JjL2RvYy5jCisr KyBiL3NyYy9kb2MuYwpAQCAtMTg2LDcgKzE4Niw3IEBAIGdldF9kb2Nfc3RyaW5nIChMaXNw X09iamVjdCBmaWxlcG9zLCBib29sIHVuaWJ5dGUsIGJvb2wgZGVmaW5pdGlvbikKICAgICAg ICAgIElmIHdlIHJlYWQgdGhlIHNhbWUgYmxvY2sgbGFzdCB0aW1lLCBtYXliZSBza2lwIHRo aXM/ICAqLwogICAgICAgaWYgKHNwYWNlX2xlZnQgPiAxMDI0ICogOCkKIAlzcGFjZV9sZWZ0 ID0gMTAyNCAqIDg7Ci0gICAgICBucmVhZCA9IGVtYWNzX3JlYWQgKGZkLCBwLCBzcGFjZV9s ZWZ0KTsKKyAgICAgIG5yZWFkID0gZW1hY3NfcmVhZF9xdWl0IChmZCwgcCwgc3BhY2VfbGVm dCk7CiAgICAgICBpZiAobnJlYWQgPCAwKQogCXJlcG9ydF9maWxlX2Vycm9yICgiUmVhZCBl cnJvciBvbiBkb2N1bWVudGF0aW9uIGZpbGUiLCBmaWxlKTsKICAgICAgIHBbbnJlYWRdID0g MDsKQEAgLTU5MCwxNiArNTkwLDE1IEBAIHRoZSBzYW1lIGZpbGUgbmFtZSBpcyBmb3VuZCBp biB0aGUgYGRvYy1kaXJlY3RvcnknLiAgKi8pCiAgIFZkb2NfZmlsZV9uYW1lID0gZmlsZW5h bWU7CiAgIGZpbGxlZCA9IDA7CiAgIHBvcyA9IDA7Ci0gIHdoaWxlICgxKQorICB3aGlsZSAo dHJ1ZSkKICAgICB7Ci0gICAgICByZWdpc3RlciBjaGFyICplbmQ7CiAgICAgICBpZiAoZmls bGVkIDwgNTEyKQotCWZpbGxlZCArPSBlbWFjc19yZWFkIChmZCwgJmJ1ZltmaWxsZWRdLCBz aXplb2YgYnVmIC0gMSAtIGZpbGxlZCk7CisJZmlsbGVkICs9IGVtYWNzX3JlYWRfcXVpdCAo ZmQsICZidWZbZmlsbGVkXSwgc2l6ZW9mIGJ1ZiAtIDEgLSBmaWxsZWQpOwogICAgICAgaWYg KCFmaWxsZWQpCiAJYnJlYWs7CiAKICAgICAgIGJ1ZltmaWxsZWRdID0gMDsKLSAgICAgIGVu ZCA9IGJ1ZiArIChmaWxsZWQgPCA1MTIgPyBmaWxsZWQgOiBmaWxsZWQgLSAxMjgpOworICAg ICAgY2hhciAqZW5kID0gYnVmICsgKGZpbGxlZCA8IDUxMiA/IGZpbGxlZCA6IGZpbGxlZCAt IDEyOCk7CiAgICAgICBwID0gbWVtY2hyIChidWYsICdcMDM3JywgZW5kIC0gYnVmKTsKICAg ICAgIC8qIHAgcG9pbnRzIHRvIF5fRmZ1bmN0aW9ubmFtZVxuIG9yIF5fVnZhcm5hbWVcbiBv ciBeX1NmaWxlbmFtZVxuLiAgKi8KICAgICAgIGlmIChwKQpkaWZmIC0tZ2l0IGEvc3JjL2Vk aXRmbnMuYyBiL3NyYy9lZGl0Zm5zLmMKaW5kZXggYjYwNTQzNy4uNDYxODE2NCAxMDA2NDQK LS0tIGEvc3JjL2VkaXRmbnMuYworKysgYi9zcmMvZWRpdGZucy5jCkBAIC0zMDk2LDYgKzMw OTYsNyBAQCBkZXRlcm1pbmVzIHdoZXRoZXIgY2FzZSBpcyBzaWduaWZpY2FudCBvciBpZ25v cmVkLiAgKi8pCiAJcmV0dXJuIG1ha2VfbnVtYmVyIChjMSA8IGMyID8gLTEgLSBjaGFycyA6 IGNoYXJzICsgMSk7CiAKICAgICAgIGNoYXJzKys7CisgICAgICByYXJlbHlfcXVpdCAoY2hh cnMpOwogICAgIH0KIAogICAvKiBUaGUgc3RyaW5ncyBtYXRjaCBhcyBmYXIgYXMgdGhleSBn by4KZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IDg0NDg3OWQu LjIyYjAyYjQgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAt MTQ2MSw2ICsxNDYxLDE5IEBAIHByb2Nlc3NfcXVpdF9mbGFnICh2b2lkKQogICBxdWl0ICgp OwogfQogCisvKiBDaGVjayBxdWl0LWZsYWcgYW5kIHF1aXQgaWYgaXQgaXMgbm9uLW5pbC4g IFR5cGluZyBDLWcgZG9lcyBub3QKKyAgIGRpcmVjdGx5IGNhdXNlIGEgcXVpdDsgaXQgb25s eSBzZXRzIFZxdWl0X2ZsYWcuICBTbyB0aGUgcHJvZ3JhbQorICAgbmVlZHMgdG8gY2FsbCBt YXliZV9xdWl0IGF0IHRpbWVzIHdoZW4gaXQgaXMgc2FmZSB0byBxdWl0LiAgRXZlcnkKKyAg IGxvb3AgdGhhdCBtaWdodCBydW4gZm9yIGEgbG9uZyB0aW1lIG9yIG1pZ2h0IG5vdCBleGl0 IG91Z2h0IHRvIGNhbGwKKyAgIG1heWJlX3F1aXQgYXQgbGVhc3Qgb25jZSwgYXQgYSBzYWZl IHBsYWNlLiAgVW5sZXNzIHRoYXQgaXMKKyAgIGltcG9zc2libGUsIG9mIGNvdXJzZS4gIEJ1 dCBpdCBpcyB2ZXJ5IGRlc2lyYWJsZSB0byBhdm9pZCBjcmVhdGluZworICAgbG9vcHMgd2hl cmUgbWF5YmVfcXVpdCBpcyBpbXBvc3NpYmxlLgorCisgICBJZiBxdWl0LWZsYWcgaXMgc2V0 IHRvIGBraWxsLWVtYWNzJyB0aGUgU0lHSU5UIGhhbmRsZXIgaGFzIHJlY2VpdmVkCisgICBh IHJlcXVlc3QgdG8gZXhpdCBFbWFjcyB3aGVuIGl0IGlzIHNhZmUgdG8gZG8uCisKKyAgIFdo ZW4gbm90IHF1aXR0aW5nLCBwcm9jZXNzIGFueSBwZW5kaW5nIHNpZ25hbHMuICAqLworCiB2 b2lkCiBtYXliZV9xdWl0ICh2b2lkKQogewpkaWZmIC0tZ2l0IGEvc3JjL2ZpbGVpby5jIGIv c3JjL2ZpbGVpby5jCmluZGV4IGExMDk3MzcuLjM4NDAwNjIgMTAwNjQ0Ci0tLSBhL3NyYy9m aWxlaW8uYworKysgYi9zcmMvZmlsZWlvLmMKQEAgLTIwMzAsOSArMjAzMCw5IEBAIHBlcm1p c3Npb25zLiAgKi8pCiAgICAgewogICAgICAgY2hhciBidWZbTUFYX0FMTE9DQV07CiAgICAg ICBwdHJkaWZmX3QgbjsKLSAgICAgIGZvciAobmV3c2l6ZSA9IDA7IDAgPCAobiA9IGVtYWNz X3JlYWQgKGlmZCwgYnVmLCBzaXplb2YgYnVmKSk7CisgICAgICBmb3IgKG5ld3NpemUgPSAw OyAwIDwgKG4gPSBlbWFjc19yZWFkX3F1aXQgKGlmZCwgYnVmLCBzaXplb2YgYnVmKSk7CiAJ ICAgbmV3c2l6ZSArPSBuKQotCWlmIChlbWFjc193cml0ZV9zaWcgKG9mZCwgYnVmLCBuKSAh PSBuKQorCWlmIChlbWFjc193cml0ZV9xdWl0IChvZmQsIGJ1ZiwgbikgIT0gbikKIAkgIHJl cG9ydF9maWxlX2Vycm9yICgiV3JpdGUgZXJyb3IiLCBuZXduYW1lKTsKICAgICAgIGlmIChu IDwgMCkKIAlyZXBvcnRfZmlsZV9lcnJvciAoIlJlYWQgZXJyb3IiLCBmaWxlKTsKQEAgLTMz OTYsMTMgKzMzOTYsMTAgQEAgZGVjaWRlX2NvZGluZ191bndpbmQgKExpc3BfT2JqZWN0IHVu d2luZF9kYXRhKQogc3RhdGljIExpc3BfT2JqZWN0CiByZWFkX25vbl9yZWd1bGFyIChMaXNw X09iamVjdCBzdGF0ZSkKIHsKLSAgaW50IG5ieXRlczsKLQotICBtYXliZV9xdWl0ICgpOwot ICBuYnl0ZXMgPSBlbWFjc19yZWFkIChYU0FWRV9JTlRFR0VSIChzdGF0ZSwgMCksCi0JCSAg ICAgICAoKGNoYXIgKikgQkVHX0FERFIgKyBQVF9CWVRFIC0gQkVHX0JZVEUKLQkJCSsgWFNB VkVfSU5URUdFUiAoc3RhdGUsIDEpKSwKLQkJICAgICAgIFhTQVZFX0lOVEVHRVIgKHN0YXRl LCAyKSk7CisgIGludCBuYnl0ZXMgPSBlbWFjc19yZWFkX3F1aXQgKFhTQVZFX0lOVEVHRVIg KHN0YXRlLCAwKSwKKwkJCQkoKGNoYXIgKikgQkVHX0FERFIgKyBQVF9CWVRFIC0gQkVHX0JZ VEUKKwkJCQkgKyBYU0FWRV9JTlRFR0VSIChzdGF0ZSwgMSkpLAorCQkJCVhTQVZFX0lOVEVH RVIgKHN0YXRlLCAyKSk7CiAgIC8qIEZhc3QgcmVjeWNsZSB0aGlzIG9iamVjdCBmb3IgdGhl IGxpa2VseSBuZXh0IGNhbGwuICAqLwogICBmcmVlX21pc2MgKHN0YXRlKTsKICAgcmV0dXJu IG1ha2VfbnVtYmVyIChuYnl0ZXMpOwpAQCAtMzc0NiwxNyArMzc0MywxNyBAQCBieSBjYWxs aW5nIGBmb3JtYXQtZGVjb2RlJywgd2hpY2ggc2VlLiAgKi8pCiAJICAgICAgaW50IG5yZWFk OwogCiAJICAgICAgaWYgKHN0LnN0X3NpemUgPD0gKDEwMjQgKiA0KSkKLQkJbnJlYWQgPSBl bWFjc19yZWFkIChmZCwgcmVhZF9idWYsIDEwMjQgKiA0KTsKKwkJbnJlYWQgPSBlbWFjc19y ZWFkX3F1aXQgKGZkLCByZWFkX2J1ZiwgMTAyNCAqIDQpOwogCSAgICAgIGVsc2UKIAkJewot CQkgIG5yZWFkID0gZW1hY3NfcmVhZCAoZmQsIHJlYWRfYnVmLCAxMDI0KTsKKwkJICBucmVh ZCA9IGVtYWNzX3JlYWRfcXVpdCAoZmQsIHJlYWRfYnVmLCAxMDI0KTsKIAkJICBpZiAobnJl YWQgPT0gMTAyNCkKIAkJICAgIHsKIAkJICAgICAgaW50IG50YWlsOwogCQkgICAgICBpZiAo bHNlZWsgKGZkLCAtICgxMDI0ICogMyksIFNFRUtfRU5EKSA8IDApCiAJCQlyZXBvcnRfZmls ZV9lcnJvciAoIlNldHRpbmcgZmlsZSBwb3NpdGlvbiIsCiAJCQkJCSAgIG9yaWdfZmlsZW5h bWUpOwotCQkgICAgICBudGFpbCA9IGVtYWNzX3JlYWQgKGZkLCByZWFkX2J1ZiArIG5yZWFk LCAxMDI0ICogMyk7CisJCSAgICAgIG50YWlsID0gZW1hY3NfcmVhZF9xdWl0IChmZCwgcmVh ZF9idWYgKyBucmVhZCwgMTAyNCAqIDMpOwogCQkgICAgICBucmVhZCA9IG50YWlsIDwgMCA/ IG50YWlsIDogbnJlYWQgKyBudGFpbDsKIAkJICAgIH0KIAkJfQpAQCAtMzg2MSwxNCArMzg1 OCwxMSBAQCBieSBjYWxsaW5nIGBmb3JtYXQtZGVjb2RlJywgd2hpY2ggc2VlLiAgKi8pCiAJ ICAgIHJlcG9ydF9maWxlX2Vycm9yICgiU2V0dGluZyBmaWxlIHBvc2l0aW9uIiwgb3JpZ19m aWxlbmFtZSk7CiAJfQogCi0gICAgICBtYXliZV9xdWl0ICgpOwogICAgICAgLyogQ291bnQg aG93IG1hbnkgY2hhcnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlCiAJIG1hdGNoIHRoZSB0 ZXh0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlci4gICovCi0gICAgICB3aGlsZSAo MSkKKyAgICAgIHdoaWxlICh0cnVlKQogCXsKLQkgIGludCBucmVhZCwgYnVmcG9zOwotCi0J ICBucmVhZCA9IGVtYWNzX3JlYWQgKGZkLCByZWFkX2J1Ziwgc2l6ZW9mIHJlYWRfYnVmKTsK KwkgIGludCBucmVhZCA9IGVtYWNzX3JlYWRfcXVpdCAoZmQsIHJlYWRfYnVmLCBzaXplb2Yg cmVhZF9idWYpOwogCSAgaWYgKG5yZWFkIDwgMCkKIAkgICAgcmVwb3J0X2ZpbGVfZXJyb3Ig KCJSZWFkIGVycm9yIiwgb3JpZ19maWxlbmFtZSk7CiAJICBlbHNlIGlmIChucmVhZCA9PSAw KQpAQCAtMzg5MCw3ICszODg0LDcgQEAgYnkgY2FsbGluZyBgZm9ybWF0LWRlY29kZScsIHdo aWNoIHNlZS4gICovKQogCSAgICAgIGJyZWFrOwogCSAgICB9CiAKLQkgIGJ1ZnBvcyA9IDA7 CisJICBpbnQgYnVmcG9zID0gMDsKIAkgIHdoaWxlIChidWZwb3MgPCBucmVhZCAmJiBzYW1l X2F0X3N0YXJ0IDwgWlZfQllURQogCQkgJiYgRkVUQ0hfQllURSAoc2FtZV9hdF9zdGFydCkg PT0gcmVhZF9idWZbYnVmcG9zXSkKIAkgICAgc2FtZV9hdF9zdGFydCsrLCBidWZwb3MrKzsK QEAgLTM5MTAsNyArMzkwNCw3IEBAIGJ5IGNhbGxpbmcgYGZvcm1hdC1kZWNvZGUnLCB3aGlj aCBzZWUuICAqLykKIAkgIGRlbF9yYW5nZV8xIChzYW1lX2F0X3N0YXJ0LCBzYW1lX2F0X2Vu ZCwgMCwgMCk7CiAJICBnb3RvIGhhbmRsZWQ7CiAJfQotICAgICAgbWF5YmVfcXVpdCAoKTsK KwogICAgICAgLyogQ291bnQgaG93IG1hbnkgY2hhcnMgYXQgdGhlIGVuZCBvZiB0aGUgZmls ZQogCSBtYXRjaCB0aGUgdGV4dCBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICBCdXQsIGlm IHdlIGhhdmUKIAkgYWxyZWFkeSBmb3VuZCB0aGF0IGRlY29kaW5nIGlzIG5lY2Vzc2FyeSwg ZG9uJ3Qgd2FzdGUgdGltZS4gICovCkBAIC0zOTMyLDcgKzM5MjYsOCBAQCBieSBjYWxsaW5n IGBmb3JtYXQtZGVjb2RlJywgd2hpY2ggc2VlLiAgKi8pCiAJICB0b3RhbF9yZWFkID0gbnJl YWQgPSAwOwogCSAgd2hpbGUgKHRvdGFsX3JlYWQgPCB0cmlhbCkKIAkgICAgewotCSAgICAg IG5yZWFkID0gZW1hY3NfcmVhZCAoZmQsIHJlYWRfYnVmICsgdG90YWxfcmVhZCwgdHJpYWwg LSB0b3RhbF9yZWFkKTsKKwkgICAgICBucmVhZCA9IGVtYWNzX3JlYWRfcXVpdCAoZmQsIHJl YWRfYnVmICsgdG90YWxfcmVhZCwKKwkJCQkgICAgICAgdHJpYWwgLSB0b3RhbF9yZWFkKTsK IAkgICAgICBpZiAobnJlYWQgPCAwKQogCQlyZXBvcnRfZmlsZV9lcnJvciAoIlJlYWQgZXJy b3IiLCBvcmlnX2ZpbGVuYW1lKTsKIAkgICAgICBlbHNlIGlmIChucmVhZCA9PSAwKQpAQCAt NDA1OCwxNiArNDA1MywxMyBAQCBieSBjYWxsaW5nIGBmb3JtYXQtZGVjb2RlJywgd2hpY2gg c2VlLiAgKi8pCiAgICAgICBpbnNlcnRlZCA9IDA7CQkvKiBCeXRlcyBwdXQgaW50byBDT05W RVJTSU9OX0JVRkZFUiBzbyBmYXIuICAqLwogICAgICAgdW5wcm9jZXNzZWQgPSAwOwkJLyog Qnl0ZXMgbm90IHByb2Nlc3NlZCBpbiBwcmV2aW91cyBsb29wLiAgKi8KIAotICAgICAgd2hp bGUgKDEpCisgICAgICB3aGlsZSAodHJ1ZSkKIAl7CiAJICAvKiBSZWFkIGF0IG1vc3QgUkVB RF9CVUZfU0laRSBieXRlcyBhdCBhIHRpbWUsIHRvIGFsbG93CiAJICAgICBxdWl0dGluZyB3 aGlsZSByZWFkaW5nIGEgaHVnZSBmaWxlLiAgKi8KIAotCSAgLyogQWxsb3cgcXVpdHRpbmcg b3V0IG9mIHRoZSBhY3R1YWwgSS9PLiAgKi8KLQkgIG1heWJlX3F1aXQgKCk7Ci0JICB0aGlz ID0gZW1hY3NfcmVhZCAoZmQsIHJlYWRfYnVmICsgdW5wcm9jZXNzZWQsCi0JCQkgICAgIFJF QURfQlVGX1NJWkUgLSB1bnByb2Nlc3NlZCk7Ci0KKwkgIHRoaXMgPSBlbWFjc19yZWFkX3F1 aXQgKGZkLCByZWFkX2J1ZiArIHVucHJvY2Vzc2VkLAorCQkJCSAgUkVBRF9CVUZfU0laRSAt IHVucHJvY2Vzc2VkKTsKIAkgIGlmICh0aGlzIDw9IDApCiAJICAgIGJyZWFrOwogCkBAIC00 MjgxLDExICs0MjczLDEwIEBAIGJ5IGNhbGxpbmcgYGZvcm1hdC1kZWNvZGUnLCB3aGljaCBz ZWUuICAqLykKIAkgICAgLyogQWxsb3cgcXVpdHRpbmcgb3V0IG9mIHRoZSBhY3R1YWwgSS9P LiAgV2UgZG9uJ3QgbWFrZSB0ZXh0CiAJICAgICAgIHBhcnQgb2YgdGhlIGJ1ZmZlciB1bnRp bCBhbGwgdGhlIHJlYWRpbmcgaXMgZG9uZSwgc28gYSBDLWcKIAkgICAgICAgaGVyZSBkb2Vz bid0IGRvIGFueSBoYXJtLiAgKi8KLQkgICAgbWF5YmVfcXVpdCAoKTsKLQkgICAgdGhpcyA9 IGVtYWNzX3JlYWQgKGZkLAotCQkJICAgICAgICgoY2hhciAqKSBCRUdfQUREUiArIFBUX0JZ VEUgLSBCRUdfQllURQotCQkJCSsgaW5zZXJ0ZWQpLAotCQkJICAgICAgIHRyeXRyeSk7CisJ ICAgIHRoaXMgPSBlbWFjc19yZWFkX3F1aXQgKGZkLAorCQkJCSAgICAoKGNoYXIgKikgQkVH X0FERFIgKyBQVF9CWVRFIC0gQkVHX0JZVEUKKwkJCQkgICAgICsgaW5zZXJ0ZWQpLAorCQkJ CSAgICB0cnl0cnkpOwogCSAgfQogCiAJaWYgKHRoaXMgPD0gMCkKQEAgLTUzOTgsNyArNTM4 OSw3IEBAIGVfd3JpdGUgKGludCBkZXNjLCBMaXNwX09iamVjdCBzdHJpbmcsIHB0cmRpZmZf dCBzdGFydCwgcHRyZGlmZl90IGVuZCwKIAkJICAgICAgIDogKFNUUklOR1AgKGNvZGluZy0+ ZHN0X29iamVjdCkKIAkJCSAgPyBTU0RBVEEgKGNvZGluZy0+ZHN0X29iamVjdCkKIAkJCSAg OiAoY2hhciAqKSBCWVRFX1BPU19BRERSIChjb2RpbmctPmRzdF9wb3NfYnl0ZSkpKTsKLQkg IGNvZGluZy0+cHJvZHVjZWQgLT0gZW1hY3Nfd3JpdGVfc2lnIChkZXNjLCBidWYsIGNvZGlu Zy0+cHJvZHVjZWQpOworCSAgY29kaW5nLT5wcm9kdWNlZCAtPSBlbWFjc193cml0ZV9xdWl0 IChkZXNjLCBidWYsIGNvZGluZy0+cHJvZHVjZWQpOwogCiAJICBpZiAoY29kaW5nLT5yYXdf ZGVzdGluYXRpb24pCiAJICAgIHsKZGlmZiAtLWdpdCBhL3NyYy9maWxlbG9jay5jIGIvc3Jj L2ZpbGVsb2NrLmMKaW5kZXggZGU2NWM1Mi4uNjdlOGRiZCAxMDA2NDQKLS0tIGEvc3JjL2Zp bGVsb2NrLmMKKysrIGIvc3JjL2ZpbGVsb2NrLmMKQEAgLTQwNyw5ICs0MDcsNyBAQCBjcmVh dGVfbG9ja19maWxlIChjaGFyICpsZm5hbWUsIGNoYXIgKmxvY2tfaW5mb19zdHIsIGJvb2wg Zm9yY2UpCiAJICAgIGZjbnRsIChmZCwgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CiAJICBsb2Nr X2luZm9fbGVuID0gc3RybGVuIChsb2NrX2luZm9fc3RyKTsKIAkgIGVyciA9IDA7Ci0JICAv KiBVc2UgJ3dyaXRlJywgbm90ICdlbWFjc193cml0ZScsIGFzIGdhcmJhZ2UgY29sbGVjdGlv bgotCSAgICAgbWlnaHQgc2lnbmFsIGFuIGVycm9yLCB3aGljaCB3b3VsZCBsZWFrIEZELiAg Ki8KLQkgIGlmICh3cml0ZSAoZmQsIGxvY2tfaW5mb19zdHIsIGxvY2tfaW5mb19sZW4pICE9 IGxvY2tfaW5mb19sZW4KKwkgIGlmIChlbWFjc193cml0ZSAoZmQsIGxvY2tfaW5mb19zdHIs IGxvY2tfaW5mb19sZW4pICE9IGxvY2tfaW5mb19sZW4KIAkgICAgICB8fCBmY2htb2QgKGZk LCBTX0lSVVNSIHwgU19JUkdSUCB8IFNfSVJPVEgpICE9IDApCiAJICAgIGVyciA9IGVycm5v OwogCSAgLyogVGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIGZzeW5jIGhlcmUsIGFzIHRoZSBj b250ZW50cyBvZgpAQCAtNDkwLDggKzQ4OCw3IEBAIHJlYWRfbG9ja19kYXRhIChjaGFyICps Zm5hbWUsIGNoYXIgbGZpbmZvW01BWF9MRklORk8gKyAxXSkKICAgICAgIGludCBmZCA9IGVt YWNzX29wZW4gKGxmbmFtZSwgT19SRE9OTFkgfCBPX05PRk9MTE9XLCAwKTsKICAgICAgIGlm ICgwIDw9IGZkKQogCXsKLQkgIC8qIFVzZSByZWFkLCBub3QgZW1hY3NfcmVhZCwgc2luY2Ug RkQgaXNuJ3QgdW53aW5kLXByb3RlY3RlZC4gICovCi0JICBwdHJkaWZmX3QgcmVhZF9ieXRl cyA9IHJlYWQgKGZkLCBsZmluZm8sIE1BWF9MRklORk8gKyAxKTsKKwkgIHB0cmRpZmZfdCBy ZWFkX2J5dGVzID0gZW1hY3NfcmVhZCAoZmQsIGxmaW5mbywgTUFYX0xGSU5GTyArIDEpOwog CSAgaW50IHJlYWRfZXJybm8gPSBlcnJubzsKIAkgIGlmIChlbWFjc19jbG9zZSAoZmQpICE9 IDApCiAJICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL3NyYy9mbnMuYyBiL3NyYy9mbnMu YwppbmRleCA0NDQzMzljLi40MWMwYzU4IDEwMDY0NAotLS0gYS9zcmMvZm5zLmMKKysrIGIv c3JjL2Zucy5jCkBAIC04NCwyMiArODQsNiBAQCBTZWUgSW5mbyBub2RlIGAoZWxpc3ApUmFu ZG9tIE51bWJlcnMnIGZvciBtb3JlIGRldGFpbHMuICAqLykKICAgcmV0dXJuIG1ha2VfbnVt YmVyICh2YWwpOwogfQogDAotLyogSGV1cmlzdGljIG9uIGhvdyBtYW55IGl0ZXJhdGlvbnMg b2YgYSB0aWdodCBsb29wIGNhbiBiZSBzYWZlbHkgZG9uZQotICAgYmVmb3JlIGl0J3MgdGlt ZSB0byBkbyBhIHF1aXQuICBUaGlzIG11c3QgYmUgYSBwb3dlciBvZiAyLiAgSXQKLSAgIGlz IG5pY2UgYnV0IG5vdCBuZWNlc3NhcnkgZm9yIGl0IHRvIGVxdWFsIFVTSFJUX01BWCArIDEu ICAqLwotZW51bSB7IFFVSVRfQ09VTlRfSEVVUklTVElDID0gMSA8PCAxNiB9OwotCi0vKiBQ cm9jZXNzIGEgcXVpdCwgYnV0IGRvIGl0IG9ubHkgcmFyZWx5LCBmb3IgZWZmaWNpZW5jeS4g ICJSYXJlbHkiCi0gICBtZWFucyBvbmNlIHBlciBRVUlUX0NPVU5UX0hFVVJJU1RJQyBvciBw ZXIgVVNIUlRfTUFYICsgMSB0aW1lcywKLSAgIHdoaWNoZXZlciBpcyBzbWFsbGVyLiAgVXNl ICpRVUlUX0NPVU5UIHRvIGNvdW50IHRoaXMuICAqLwotCi1zdGF0aWMgdm9pZAotcmFyZWx5 X3F1aXQgKHVuc2lnbmVkIHNob3J0IGludCAqcXVpdF9jb3VudCkKLXsKLSAgaWYgKCEgKCsr KnF1aXRfY291bnQgJiAoUVVJVF9DT1VOVF9IRVVSSVNUSUMgLSAxKSkpCi0gICAgbWF5YmVf cXVpdCAoKTsKLX0KLQogLyogUmFuZG9tIGRhdGEtc3RydWN0dXJlIGZ1bmN0aW9ucy4gICov CiAKIERFRlVOICgibGVuZ3RoIiwgRmxlbmd0aCwgU2xlbmd0aCwgMSwgMSwgMCwKQEAgLTEz NTksOSArMTM0Myw4IEBAIERFRlVOICgibnRoY2RyIiwgRm50aGNkciwgU250aGNkciwgMiwg MiwgMCwKICAgKExpc3BfT2JqZWN0IG4sIExpc3BfT2JqZWN0IGxpc3QpCiB7CiAgIENIRUNL X05VTUJFUiAobik7Ci0gIEVNQUNTX0lOVCBudW0gPSBYSU5UIChuKTsKICAgTGlzcF9PYmpl Y3QgdGFpbCA9IGxpc3Q7Ci0gIGZvciAoRU1BQ1NfSU5UIGkgPSAwOyBpIDwgbnVtOyBpKysp CisgIGZvciAoRU1BQ1NfSU5UIG51bSA9IFhJTlQgKG4pOyAwIDwgbnVtOyBudW0tLSkKICAg ICB7CiAgICAgICBpZiAoISBDT05TUCAodGFpbCkpCiAJewpAQCAtMTM2OSw2ICsxMzUyLDcg QEAgREVGVU4gKCJudGhjZHIiLCBGbnRoY2RyLCBTbnRoY2RyLCAyLCAyLCAwLAogCSAgcmV0 dXJuIFFuaWw7CiAJfQogICAgICAgdGFpbCA9IFhDRFIgKHRhaWwpOworICAgICAgcmFyZWx5 X3F1aXQgKG51bSk7CiAgICAgfQogICByZXR1cm4gdGFpbDsKIH0KQEAgLTE0MDUsNyArMTM4 OSw3IEBAIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgdGFpbCBvZiBMSVNUIHdob3NlIGNh ciBpcyBFTFQuICAqLykKICAgICB7CiAgICAgICBpZiAoISBOSUxQIChGZXF1YWwgKGVsdCwg WENBUiAodGFpbCkpKSkKIAlyZXR1cm4gdGFpbDsKLSAgICAgIHJhcmVseV9xdWl0ICgmcXVp dF9jb3VudCk7CisgICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAgICAg fQogICBDSEVDS19MSVNUX0VORCAodGFpbCwgbGlzdCk7CiAgIHJldHVybiBRbmlsOwpAQCAt MTQxNiwxMSArMTQwMCwxMyBAQCBERUZVTiAoIm1lbXEiLCBGbWVtcSwgU21lbXEsIDIsIDIs IDAsCiBUaGUgdmFsdWUgaXMgYWN0dWFsbHkgdGhlIHRhaWwgb2YgTElTVCB3aG9zZSBjYXIg aXMgRUxULiAgKi8pCiAgIChMaXNwX09iamVjdCBlbHQsIExpc3BfT2JqZWN0IGxpc3QpCiB7 CisgIHVuc2lnbmVkIHNob3J0IGludCBxdWl0X2NvdW50ID0gMDsKICAgTGlzcF9PYmplY3Qg dGFpbDsKICAgZm9yICh0YWlsID0gbGlzdDsgQ09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAo dGFpbCkpCiAgICAgewogICAgICAgaWYgKEVRIChYQ0FSICh0YWlsKSwgZWx0KSkKIAlyZXR1 cm4gdGFpbDsKKyAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKICAgICB9 CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0x NDM0LDEyICsxNDIwLDE0IEBAIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgdGFpbCBvZiBM SVNUIHdob3NlIGNhciBpcyBFTFQuICAqLykKICAgaWYgKCFGTE9BVFAgKGVsdCkpCiAgICAg cmV0dXJuIEZtZW1xIChlbHQsIGxpc3QpOwogCisgIHVuc2lnbmVkIHNob3J0IGludCBxdWl0 X2NvdW50ID0gMDsKICAgTGlzcF9PYmplY3QgdGFpbDsKICAgZm9yICh0YWlsID0gbGlzdDsg Q09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkpCiAgICAgewogICAgICAgTGlzcF9P YmplY3QgdGVtID0gWENBUiAodGFpbCk7CiAgICAgICBpZiAoRkxPQVRQICh0ZW0pICYmIGlu dGVybmFsX2VxdWFsIChlbHQsIHRlbSwgMCwgMCwgUW5pbCkpCiAJcmV0dXJuIHRhaWw7Cisg ICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAgICAgfQogICBDSEVDS19M SVNUX0VORCAodGFpbCwgbGlzdCk7CiAgIHJldHVybiBRbmlsOwpAQCAtMTQ1MSwxMSArMTQz OSwxMyBAQCBUaGUgdmFsdWUgaXMgYWN0dWFsbHkgdGhlIGZpcnN0IGVsZW1lbnQgb2YgTElT VCB3aG9zZSBjYXIgaXMgS0VZLgogRWxlbWVudHMgb2YgTElTVCB0aGF0IGFyZSBub3QgY29u c2VzIGFyZSBpZ25vcmVkLiAgKi8pCiAgIChMaXNwX09iamVjdCBrZXksIExpc3BfT2JqZWN0 IGxpc3QpCiB7CisgIHVuc2lnbmVkIHNob3J0IGludCBxdWl0X2NvdW50ID0gMDsKICAgTGlz cF9PYmplY3QgdGFpbDsKICAgZm9yICh0YWlsID0gbGlzdDsgQ09OU1AgKHRhaWwpOyB0YWls ID0gWENEUiAodGFpbCkpCiAgICAgewogICAgICAgaWYgKENPTlNQIChYQ0FSICh0YWlsKSkg JiYgRVEgKFhDQVIgKFhDQVIgKHRhaWwpKSwga2V5KSkKIAlyZXR1cm4gWENBUiAodGFpbCk7 CisgICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAgICAgfQogICBDSEVD S19MSVNUX0VORCAodGFpbCwgbGlzdCk7CiAgIHJldHVybiBRbmlsOwpAQCAtMTQ4Niw3ICsx NDc2LDcgQEAgVGhlIHZhbHVlIGlzIGFjdHVhbGx5IHRoZSBmaXJzdCBlbGVtZW50IG9mIExJ U1Qgd2hvc2UgY2FyIGVxdWFscyBLRVkuICAqLykKICAgICAgIGlmIChDT05TUCAoY2FyKQog CSAgJiYgKEVRIChYQ0FSIChjYXIpLCBrZXkpIHx8ICFOSUxQIChGZXF1YWwgKFhDQVIgKGNh ciksIGtleSkpKSkKIAlyZXR1cm4gY2FyOwotICAgICAgcmFyZWx5X3F1aXQgKCZxdWl0X2Nv dW50KTsKKyAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKICAgICB9CiAg IENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0xNTEz LDExICsxNTAzLDEzIEBAIERFRlVOICgicmFzc3EiLCBGcmFzc3EsIFNyYXNzcSwgMiwgMiwg MCwKIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgZmlyc3QgZWxlbWVudCBvZiBMSVNUIHdo b3NlIGNkciBpcyBLRVkuICAqLykKICAgKExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmplY3Qg bGlzdCkKIHsKKyAgdW5zaWduZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogICBMaXNw X09iamVjdCB0YWlsOwogICBmb3IgKHRhaWwgPSBsaXN0OyBDT05TUCAodGFpbCk7IHRhaWwg PSBYQ0RSICh0YWlsKSkKICAgICB7CiAgICAgICBpZiAoQ09OU1AgKFhDQVIgKHRhaWwpKSAm JiBFUSAoWENEUiAoWENBUiAodGFpbCkpLCBrZXkpKQogCXJldHVybiBYQ0FSICh0YWlsKTsK KyAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNL X0xJU1RfRU5EICh0YWlsLCBsaXN0KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0xNTM2LDcgKzE1 MjgsNyBAQCBUaGUgdmFsdWUgaXMgYWN0dWFsbHkgdGhlIGZpcnN0IGVsZW1lbnQgb2YgTElT VCB3aG9zZSBjZHIgZXF1YWxzIEtFWS4gICovKQogICAgICAgaWYgKENPTlNQIChjYXIpCiAJ ICAmJiAoRVEgKFhDRFIgKGNhciksIGtleSkgfHwgIU5JTFAgKEZlcXVhbCAoWENEUiAoY2Fy KSwga2V5KSkpKQogCXJldHVybiBjYXI7Ci0gICAgICByYXJlbHlfcXVpdCAoJnF1aXRfY291 bnQpOworICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAgIH0KICAg Q0hFQ0tfTElTVF9FTkQgKHRhaWwsIGxpc3QpOwogICByZXR1cm4gUW5pbDsKQEAgLTE2OTIs NyArMTY4NCw3IEBAIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBhIHNlcXVlbmNlIGBmb28nLiAg Ki8pCiAJICAgIH0KIAkgIGVsc2UKIAkgICAgcHJldiA9IHRhaWw7Ci0JICByYXJlbHlfcXVp dCAoJnF1aXRfY291bnQpOworCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwog CX0KICAgICAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBzZXEpOwogICAgIH0KQEAgLTE3MTcs MTAgKzE3MDksMTAgQEAgVGhpcyBmdW5jdGlvbiBtYXkgZGVzdHJ1Y3RpdmVseSBtb2RpZnkg U0VRIHRvIHByb2R1Y2UgdGhlIHZhbHVlLiAgKi8pCiAKICAgICAgIGZvciAocHJldiA9IFFu aWwsIHRhaWwgPSBzZXE7IENPTlNQICh0YWlsKTsgdGFpbCA9IG5leHQpCiAJewotCSAgcmFy ZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKIAkgIG5leHQgPSBYQ0RSICh0YWlsKTsKIAkgIEZz ZXRjZHIgKHRhaWwsIHByZXYpOwogCSAgcHJldiA9IHRhaWw7CisJICBpbmNyX3JhcmVseV9x dWl0ICgmcXVpdF9jb3VudCk7CiAJfQogICAgICAgQ0hFQ0tfTElTVF9FTkQgKHRhaWwsIHNl cSk7CiAgICAgICBzZXEgPSBwcmV2OwpAQCAtMTc2Niw4ICsxNzU4LDggQEAgU2VlIGFsc28g dGhlIGZ1bmN0aW9uIGBucmV2ZXJzZScsIHdoaWNoIGlzIHVzZWQgbW9yZSBvZnRlbi4gICov KQogICAgICAgdW5zaWduZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogICAgICAgZm9y IChuZXcgPSBRbmlsOyBDT05TUCAoc2VxKTsgc2VxID0gWENEUiAoc2VxKSkKIAl7Ci0JICBy YXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogCSAgbmV3ID0gRmNvbnMgKFhDQVIgKHNlcSks IG5ldyk7CisJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJfQogICAgICAg Q0hFQ0tfTElTVF9FTkQgKHNlcSwgc2VxKTsKICAgICB9CkBAIC0yMDU4LDYgKzIwNTAsNyBA QCB1c2UgYChzZXRxIHggKHBsaXN0LXB1dCB4IHByb3AgdmFsKSknIHRvIGJlIHN1cmUgdG8g dXNlIHRoZSBuZXcgdmFsdWUuCiBUaGUgUExJU1QgaXMgbW9kaWZpZWQgYnkgc2lkZSBlZmZl Y3RzLiAgKi8pCiAgIChMaXNwX09iamVjdCBwbGlzdCwgTGlzcF9PYmplY3QgcHJvcCwgTGlz cF9PYmplY3QgdmFsKQogeworICB1bnNpZ25lZCBzaG9ydCBpbnQgcXVpdF9jb3VudCA9IDA7 CiAgIExpc3BfT2JqZWN0IHByZXYgPSBRbmlsOwogICBmb3IgKExpc3BfT2JqZWN0IHRhaWwg PSBwbGlzdDsgQ09OU1AgKHRhaWwpICYmIENPTlNQIChYQ0RSICh0YWlsKSk7CiAgICAgICAg dGFpbCA9IFhDRFIgKFhDRFIgKHRhaWwpKSkKQEAgLTIwNjksNiArMjA2Miw3IEBAIFRoZSBQ TElTVCBpcyBtb2RpZmllZCBieSBzaWRlIGVmZmVjdHMuICAqLykKIAl9CiAKICAgICAgIHBy ZXYgPSB0YWlsOworICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAg IH0KICAgTGlzcF9PYmplY3QgbmV3Y2VsbAogICAgID0gRmNvbnMgKHByb3AsIEZjb25zICh2 YWwsIE5JTFAgKHByZXYpID8gcGxpc3QgOiBYQ0RSIChYQ0RSIChwcmV2KSkpKTsKQEAgLTIx MDYsNyArMjEwMCw3IEBAIG9uZSBvZiB0aGUgcHJvcGVydGllcyBvbiB0aGUgbGlzdC4gICov KQogICAgIHsKICAgICAgIGlmICghIE5JTFAgKEZlcXVhbCAocHJvcCwgWENBUiAodGFpbCkp KSkKIAlyZXR1cm4gWENBUiAoWENEUiAodGFpbCkpOwotICAgICAgcmFyZWx5X3F1aXQgKCZx dWl0X2NvdW50KTsKKyAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKICAg ICB9CiAKICAgQ0hFQ0tfTElTVF9FTkQgKHRhaWwsIHByb3ApOwpAQCAtMjEzNiw3ICsyMTMw LDcgQEAgVGhlIFBMSVNUIGlzIG1vZGlmaWVkIGJ5IHNpZGUgZWZmZWN0cy4gICovKQogCX0K IAogICAgICAgcHJldiA9IHRhaWw7Ci0gICAgICByYXJlbHlfcXVpdCAoJnF1aXRfY291bnQp OworICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAgIH0KICAgTGlz cF9PYmplY3QgbmV3Y2VsbCA9IGxpc3QyIChwcm9wLCB2YWwpOwogICBpZiAoTklMUCAocHJl dikpCkBAIC0yMjE2LDcgKzIyMTAsNyBAQCBpbnRlcm5hbF9lcXVhbCAoTGlzcF9PYmplY3Qg bzEsIExpc3BfT2JqZWN0IG8yLCBpbnQgZGVwdGgsIGJvb2wgcHJvcHMsCiAKICAgdW5zaWdu ZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogIHRhaWxfcmVjdXJzZToKLSAgcmFyZWx5 X3F1aXQgKCZxdWl0X2NvdW50KTsKKyAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQp OwogICBpZiAoRVEgKG8xLCBvMikpCiAgICAgcmV0dXJuIDE7CiAgIGlmIChYVFlQRSAobzEp ICE9IFhUWVBFIChvMikpCkBAIC0yNDI1LDExICsyNDE5LDEwIEBAIHVzYWdlOiAobmNvbmMg JnJlc3QgTElTVFMpICAqLykKIAl7CiAJICB0YWlsID0gdGVtOwogCSAgdGVtID0gWENEUiAo dGFpbCk7CisJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJfQogICAgICAg d2hpbGUgKENPTlNQICh0ZW0pKTsKIAotICAgICAgcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50 KTsKLQogICAgICAgdGVtID0gYXJnc1thcmdudW0gKyAxXTsKICAgICAgIEZzZXRjZHIgKHRh aWwsIHRlbSk7CiAgICAgICBpZiAoTklMUCAodGVtKSkKQEAgLTI4NTAsMTAgKzI4NDMsMTIg QEAgcHJvcGVydHkgYW5kIGEgcHJvcGVydHkgd2l0aCB0aGUgdmFsdWUgbmlsLgogVGhlIHZh bHVlIGlzIGFjdHVhbGx5IHRoZSB0YWlsIG9mIFBMSVNUIHdob3NlIGNhciBpcyBQUk9QLiAg Ki8pCiAgIChMaXNwX09iamVjdCBwbGlzdCwgTGlzcF9PYmplY3QgcHJvcCkKIHsKKyAgdW5z aWduZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogICB3aGlsZSAoQ09OU1AgKHBsaXN0 KSAmJiAhRVEgKFhDQVIgKHBsaXN0KSwgcHJvcCkpCiAgICAgewogICAgICAgcGxpc3QgPSBY Q0RSIChwbGlzdCk7CiAgICAgICBwbGlzdCA9IENEUiAocGxpc3QpOworICAgICAgaW5jcl9y YXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAgIH0KICAgcmV0dXJuIHBsaXN0OwogfQpk aWZmIC0tZ2l0IGEvc3JjL2luZGVudC5jIGIvc3JjL2luZGVudC5jCmluZGV4IDMzZjcwOWMu LmFmZjE0YWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmRlbnQuYworKysgYi9zcmMvaW5kZW50LmMK QEAgLTEyMDAsOCArMTIwMCw2IEBAIGNvbXB1dGVfbW90aW9uIChwdHJkaWZmX3QgZnJvbSwg cHRyZGlmZl90IGZyb21ieXRlLCBFTUFDU19JTlQgZnJvbXZwb3MsCiAgICAgY29udGludWF0 aW9uX2dseXBoX3dpZHRoID0gMDsgIC8qIEluIHRoZSBmcmluZ2UuICAqLwogI2VuZGlmCiAK LSAgbWF5YmVfcXVpdCAoKTsKLQogICAvKiBJdCdzIGp1c3QgaW1wb3NzaWJsZSB0byBiZSB0 b28gcGFyYW5vaWQgaGVyZS4gICovCiAgIGVhc3NlcnQgKGZyb20gPT0gQllURV9UT19DSEFS IChmcm9tYnl0ZSkgJiYgZnJvbWJ5dGUgPT0gQ0hBUl9UT19CWVRFIChmcm9tKSk7CiAKQEAg LTEyMTMsOCArMTIxMSwxMiBAQCBjb21wdXRlX21vdGlvbiAocHRyZGlmZl90IGZyb20sIHB0 cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9zLAogICBjbXBfaXQuaWQgPSAt MTsKICAgY29tcG9zaXRpb25fY29tcHV0ZV9zdG9wX3BvcyAoJmNtcF9pdCwgcG9zLCBwb3Nf Ynl0ZSwgdG8sIFFuaWwpOwogCi0gIHdoaWxlICgxKQorICB1bnNpZ25lZCBzaG9ydCBpbnQg cXVpdF9jb3VudCA9IDA7CisKKyAgd2hpbGUgKHRydWUpCiAgICAgeworICAgICAgaW5jcl9y YXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworCiAgICAgICB3aGlsZSAocG9zID09IG5leHRf Ym91bmRhcnkpCiAJewogCSAgcHRyZGlmZl90IHBvc19oZXJlID0gcG9zOwpAQCAtMTI3OSw2 ICsxMjgxLDggQEAgY29tcHV0ZV9tb3Rpb24gKHB0cmRpZmZfdCBmcm9tLCBwdHJkaWZmX3Qg ZnJvbWJ5dGUsIEVNQUNTX0lOVCBmcm9tdnBvcywKIAkgICAgICBwb3MgPSBuZXdwb3M7CiAJ ICAgICAgcG9zX2J5dGUgPSBDSEFSX1RPX0JZVEUgKHBvcyk7CiAJICAgIH0KKworCSAgaW5j cl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogCX0KIAogICAgICAgLyogSGFuZGxlIHJp Z2h0IG1hcmdpbi4gICovCkBAIC0xNjAxLDYgKzE2MDUsNyBAQCBjb21wdXRlX21vdGlvbiAo cHRyZGlmZl90IGZyb20sIHB0cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9z LAogCQkJICAgICAgcG9zID0gZmluZF9iZWZvcmVfbmV4dF9uZXdsaW5lIChwb3MsIHRvLCAx LCAmcG9zX2J5dGUpOwogCQkJICAgICAgaWYgKHBvcyA8IHRvKQogCQkJCUlOQ19CT1RIIChw b3MsIHBvc19ieXRlKTsKKwkJCSAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50 KTsKIAkJCSAgICB9CiAJCQkgIHdoaWxlIChwb3MgPCB0bwogCQkJCSAmJiBpbmRlbnRlZF9i ZXlvbmRfcCAocG9zLCBwb3NfYnl0ZSwKZGlmZiAtLWdpdCBhL3NyYy9rZXlib2FyZC5jIGIv c3JjL2tleWJvYXJkLmMKaW5kZXggMzE3NjY5ZC4uYTg2ZTdjNSAxMDA2NDQKLS0tIGEvc3Jj L2tleWJvYXJkLmMKKysrIGIvc3JjL2tleWJvYXJkLmMKQEAgLTcwNDEsNDAgKzcwNDEsMjIg QEAgdHR5X3JlYWRfYXZhaWxfaW5wdXQgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybWluYWwsCiAK ICAgLyogTm93IHJlYWQ7IGZvciBvbmUgcmVhc29uIG9yIGFub3RoZXIsIHRoaXMgd2lsbCBu b3QgYmxvY2suCiAgICAgIE5SRUFEIGlzIHNldCB0byB0aGUgbnVtYmVyIG9mIGNoYXJzIHJl YWQuICAqLwotICBkbwotICAgIHsKLSAgICAgIG5yZWFkID0gZW1hY3NfcmVhZCAoZmlsZW5v ICh0dHktPmlucHV0KSwgKGNoYXIgKikgY2J1Ziwgbl90b19yZWFkKTsKLSAgICAgIC8qIFBP U0lYIGluZmVycyB0aGF0IHByb2Nlc3NlcyB3aGljaCBhcmUgbm90IGluIHRoZSBzZXNzaW9u IGxlYWRlcidzCi0gICAgICAgICBwcm9jZXNzIGdyb3VwIHdvbid0IGdldCBTSUdIVVBzIGF0 IGxvZ291dCB0aW1lLiAgQlNESSBhZGhlcmVzIHRvCi0gICAgICAgICB0aGlzIHBhcnQgc3Rh bmRhcmQgYW5kIHJldHVybnMgLTEgZnJvbSByZWFkICgwKSB3aXRoIGVycm5vPT1FSU8KLSAg ICAgICAgIHdoZW4gdGhlIGNvbnRyb2wgdHR5IGlzIHRha2VuIGF3YXkuCi0gICAgICAgICBK ZWZmcmV5IEhvbmlnIDxqY2hAYnNkaS5jb20+IHNheXMgdGhpcyBpcyBnZW5lcmFsbHkgc2Fm ZS4gICovCi0gICAgICBpZiAobnJlYWQgPT0gLTEgJiYgZXJybm8gPT0gRUlPKQotICAgICAg ICByZXR1cm4gLTI7ICAgICAgICAgIC8qIENsb3NlIHRoaXMgdGVybWluYWwuICAqLwotI2lm IGRlZmluZWQgKEFJWCkgJiYgZGVmaW5lZCAoX0JTRCkKLSAgICAgIC8qIFRoZSBrZXJuZWwg c29tZXRpbWVzIGZhaWxzIHRvIGRlbGl2ZXIgU0lHSFVQIGZvciBwdHlzLgotICAgICAgICAg VGhpcyBsb29rcyBpbmNvcnJlY3QsIGJ1dCBpdCBpc24ndCwgYmVjYXVzZSBfQlNEIGNhdXNl cwotICAgICAgICAgT19OREVMQVkgdG8gYmUgZGVmaW5lZCBpbiBmY250bC5oIGFzIE9fTk9O QkxPQ0ssCi0gICAgICAgICBhbmQgdGhhdCBjYXVzZXMgYSB2YWx1ZSBvdGhlciB0aGFuIDAg d2hlbiB0aGVyZSBpcyBubyBpbnB1dC4gICovCi0gICAgICBpZiAobnJlYWQgPT0gMCkKLSAg ICAgICAgcmV0dXJuIC0yOyAgICAgICAgICAvKiBDbG9zZSB0aGlzIHRlcm1pbmFsLiAgKi8K LSNlbmRpZgotICAgIH0KLSAgd2hpbGUgKAotICAgICAgICAgLyogV2UgdXNlZCB0byByZXRy eSB0aGUgcmVhZCBpZiBpdCB3YXMgaW50ZXJydXB0ZWQuCi0gICAgICAgICAgICBCdXQgdGhp cyBkb2VzIHRoZSB3cm9uZyB0aGluZyB3aGVuIE9fTk9OQkxPQ0sgY2F1c2VzCi0gICAgICAg ICAgICBhbiBFQUdBSU4gZXJyb3IuICBEb2VzIGFueWJvZHkga25vdyBvZiBhIHNpdHVhdGlv bgotICAgICAgICAgICAgd2hlcmUgYSByZXRyeSBpcyBhY3R1YWxseSBuZWVkZWQ/ICAqLwot I2lmIDAKLSAgICAgICAgIG5yZWFkIDwgMCAmJiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5v ID09IEVGQVVMVAotI2lmZGVmIEVCQURTTFQKLSAgICAgICAgICAgICAgICAgICAgICAgfHwg ZXJybm8gPT0gRUJBRFNMVAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICkKLSNl bHNlCi0gICAgICAgICAwCisgIG5yZWFkID0gZW1hY3NfcmVhZCAoZmlsZW5vICh0dHktPmlu cHV0KSwgKGNoYXIgKikgY2J1Ziwgbl90b19yZWFkKTsKKyAgLyogUE9TSVggaW5mZXJzIHRo YXQgcHJvY2Vzc2VzIHdoaWNoIGFyZSBub3QgaW4gdGhlIHNlc3Npb24gbGVhZGVyJ3MKKyAg ICAgcHJvY2VzcyBncm91cCB3b24ndCBnZXQgU0lHSFVQcyBhdCBsb2dvdXQgdGltZS4gIEJT REkgYWRoZXJlcyB0bworICAgICB0aGlzIHBhcnQgc3RhbmRhcmQgYW5kIHJldHVybnMgLTEg ZnJvbSByZWFkICgwKSB3aXRoIGVycm5vPT1FSU8KKyAgICAgd2hlbiB0aGUgY29udHJvbCB0 dHkgaXMgdGFrZW4gYXdheS4KKyAgICAgSmVmZnJleSBIb25pZyA8amNoQGJzZGkuY29tPiBz YXlzIHRoaXMgaXMgZ2VuZXJhbGx5IHNhZmUuICAqLworICBpZiAobnJlYWQgPT0gLTEgJiYg ZXJybm8gPT0gRUlPKQorICAgIHJldHVybiAtMjsgICAgICAgICAgLyogQ2xvc2UgdGhpcyB0 ZXJtaW5hbC4gICovCisjaWYgZGVmaW5lZCBBSVggJiYgZGVmaW5lZCBfQlNECisgIC8qIFRo ZSBrZXJuZWwgc29tZXRpbWVzIGZhaWxzIHRvIGRlbGl2ZXIgU0lHSFVQIGZvciBwdHlzLgor ICAgICBUaGlzIGxvb2tzIGluY29ycmVjdCwgYnV0IGl0IGlzbid0LCBiZWNhdXNlIF9CU0Qg Y2F1c2VzCisgICAgIE9fTkRFTEFZIHRvIGJlIGRlZmluZWQgaW4gZmNudGwuaCBhcyBPX05P TkJMT0NLLAorICAgICBhbmQgdGhhdCBjYXVzZXMgYSB2YWx1ZSBvdGhlciB0aGFuIDAgd2hl biB0aGVyZSBpcyBubyBpbnB1dC4gICovCisgIGlmIChucmVhZCA9PSAwKQorICAgIHJldHVy biAtMjsgICAgICAgICAgLyogQ2xvc2UgdGhpcyB0ZXJtaW5hbC4gICovCiAjZW5kaWYKLSAg ICAgICAgICk7CiAKICNpZm5kZWYgVVNBQkxFX0ZJT05SRUFECiAjaWYgZGVmaW5lZCAoVVNH KSB8fCBkZWZpbmVkIChDWUdXSU4pCmRpZmYgLS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xp c3AuaAppbmRleCA2ODY2ZDBmLi41OTc2ZGExIDEwMDY0NAotLS0gYS9zcmMvbGlzcC5oCisr KyBiL3NyYy9saXNwLmgKQEAgLTMxMjMsMjQgKzMxMjMsMzYgQEAgc3RydWN0IGhhbmRsZXIK IAogZXh0ZXJuIExpc3BfT2JqZWN0IG1lbW9yeV9zaWduYWxfZGF0YTsKIAotLyogQ2hlY2sg cXVpdC1mbGFnIGFuZCBxdWl0IGlmIGl0IGlzIG5vbi1uaWwuICBUeXBpbmcgQy1nIGRvZXMg bm90Ci0gICBkaXJlY3RseSBjYXVzZSBhIHF1aXQ7IGl0IG9ubHkgc2V0cyBWcXVpdF9mbGFn LiAgU28gdGhlIHByb2dyYW0KLSAgIG5lZWRzIHRvIGNhbGwgbWF5YmVfcXVpdCBhdCB0aW1l cyB3aGVuIGl0IGlzIHNhZmUgdG8gcXVpdC4gIEV2ZXJ5Ci0gICBsb29wIHRoYXQgbWlnaHQg cnVuIGZvciBhIGxvbmcgdGltZSBvciBtaWdodCBub3QgZXhpdCBvdWdodCB0byBjYWxsCi0g ICBtYXliZV9xdWl0IGF0IGxlYXN0IG9uY2UsIGF0IGEgc2FmZSBwbGFjZS4gIFVubGVzcyB0 aGF0IGlzCi0gICBpbXBvc3NpYmxlLCBvZiBjb3Vyc2UuICBCdXQgaXQgaXMgdmVyeSBkZXNp cmFibGUgdG8gYXZvaWQgY3JlYXRpbmcKLSAgIGxvb3BzIHdoZXJlIG1heWJlX3F1aXQgaXMg aW1wb3NzaWJsZS4KLQotICAgSWYgcXVpdC1mbGFnIGlzIHNldCB0byBga2lsbC1lbWFjcycg dGhlIFNJR0lOVCBoYW5kbGVyIGhhcyByZWNlaXZlZAotICAgYSByZXF1ZXN0IHRvIGV4aXQg RW1hY3Mgd2hlbiBpdCBpcyBzYWZlIHRvIGRvLgotCi0gICBXaGVuIG5vdCBxdWl0dGluZywg cHJvY2VzcyBhbnkgcGVuZGluZyBzaWduYWxzLiAgKi8KLQogZXh0ZXJuIHZvaWQgbWF5YmVf cXVpdCAodm9pZCk7CiAKIC8qIFRydWUgaWYgb3VnaHQgdG8gcXVpdCBub3cuICAqLwogCiAj ZGVmaW5lIFFVSVRQICghTklMUCAoVnF1aXRfZmxhZykgJiYgTklMUCAoVmluaGliaXRfcXVp dCkpCisKKy8qIEhldXJpc3RpYyBvbiBob3cgbWFueSBpdGVyYXRpb25zIG9mIGEgdGlnaHQg bG9vcCBjYW4gYmUgc2FmZWx5IGRvbmUKKyAgIGJlZm9yZSBpdCdzIHRpbWUgdG8gZG8gYSBx dWl0LiAgVGhpcyBtdXN0IGJlIGEgcG93ZXIgb2YgMi4gIEl0CisgICBpcyBuaWNlIGJ1dCBu b3QgbmVjZXNzYXJ5IGZvciBpdCB0byBlcXVhbCBVU0hSVF9NQVggKyAxLiAgKi8KKworZW51 bSB7IFFVSVRfQ09VTlRfSEVVUklTVElDID0gMSA8PCAxNiB9OworCisvKiBQcm9jZXNzIGEg cXVpdCByYXJlbHksIGJhc2VkIG9uIGEgY291bnRlciBDT1VOVCwgZm9yIGVmZmljaWVuY3ku CisgICAiUmFyZWx5IiBtZWFucyBvbmNlIHBlciBRVUlUX0NPVU5UX0hFVVJJU1RJQyBvciBw ZXIgVVNIUlRfTUFYICsgMQorICAgdGltZXMsIHdoaWNoZXZlciBpcyBzbWFsbGVyIChzb21l d2hhdCBhcmJpdHJhcnksIGJ1dCBvZnRlbiBmYXN0ZXIpLiAgKi8KKworSU5MSU5FIHZvaWQK K3JhcmVseV9xdWl0ICh1bnNpZ25lZCBzaG9ydCBpbnQgY291bnQpCit7CisgIGlmICghIChj b3VudCAmIChRVUlUX0NPVU5UX0hFVVJJU1RJQyAtIDEpKSkKKyAgICBtYXliZV9xdWl0ICgp OworfQorCisvKiBJbmNyZW1lbnQgKlFVSVRfQ09VTlQgYW5kIHJhcmVseSBxdWl0LiAgKi8K KworSU5MSU5FIHZvaWQKK2luY3JfcmFyZWx5X3F1aXQgKHVuc2lnbmVkIHNob3J0IGludCAq cXVpdF9jb3VudCkKK3sKKyAgcmFyZWx5X3F1aXQgKCsrKnF1aXRfY291bnQpOworfQogDAog ZXh0ZXJuIExpc3BfT2JqZWN0IFZhc2NpaV9kb3duY2FzZV90YWJsZTsKIGV4dGVybiBMaXNw X09iamVjdCBWYXNjaWlfY2Fub25fdGFibGU7CkBAIC00MjE2LDggKzQyMjgsMTAgQEAgZXh0 ZXJuIGludCBlbWFjc19vcGVuIChjb25zdCBjaGFyICosIGludCwgaW50KTsKIGV4dGVybiBp bnQgZW1hY3NfcGlwZSAoaW50WzJdKTsKIGV4dGVybiBpbnQgZW1hY3NfY2xvc2UgKGludCk7 CiBleHRlcm4gcHRyZGlmZl90IGVtYWNzX3JlYWQgKGludCwgdm9pZCAqLCBwdHJkaWZmX3Qp OworZXh0ZXJuIHB0cmRpZmZfdCBlbWFjc19yZWFkX3F1aXQgKGludCwgdm9pZCAqLCBwdHJk aWZmX3QpOwogZXh0ZXJuIHB0cmRpZmZfdCBlbWFjc193cml0ZSAoaW50LCB2b2lkIGNvbnN0 ICosIHB0cmRpZmZfdCk7CiBleHRlcm4gcHRyZGlmZl90IGVtYWNzX3dyaXRlX3NpZyAoaW50 LCB2b2lkIGNvbnN0ICosIHB0cmRpZmZfdCk7CitleHRlcm4gcHRyZGlmZl90IGVtYWNzX3dy aXRlX3F1aXQgKGludCwgdm9pZCBjb25zdCAqLCBwdHJkaWZmX3QpOwogZXh0ZXJuIHZvaWQg ZW1hY3NfcGVycm9yIChjaGFyIGNvbnN0ICopOwogCiBleHRlcm4gdm9pZCB1bmxvY2tfYWxs X2ZpbGVzICh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9scmVhZC5jIGIvc3JjL2xyZWFkLmMK aW5kZXggMTc4MDY5Mi4uMDk0YWE2MiAxMDA2NDQKLS0tIGEvc3JjL2xyZWFkLmMKKysrIGIv c3JjL2xyZWFkLmMKQEAgLTkxMCw3ICs5MTAsNyBAQCBzYWZlX3RvX2xvYWRfdmVyc2lvbiAo aW50IGZkKQogCiAgIC8qIFJlYWQgdGhlIGZpcnN0IGZldyBieXRlcyBmcm9tIHRoZSBmaWxl LCBhbmQgbG9vayBmb3IgYSBsaW5lCiAgICAgIHNwZWNpZnlpbmcgdGhlIGJ5dGUgY29tcGls ZXIgdmVyc2lvbiB1c2VkLiAgKi8KLSAgbmJ5dGVzID0gZW1hY3NfcmVhZCAoZmQsIGJ1Ziwg c2l6ZW9mIGJ1Zik7CisgIG5ieXRlcyA9IGVtYWNzX3JlYWRfcXVpdCAoZmQsIGJ1Ziwgc2l6 ZW9mIGJ1Zik7CiAgIGlmIChuYnl0ZXMgPiAwKQogICAgIHsKICAgICAgIC8qIFNraXAgdG8g dGhlIG5leHQgbmV3bGluZSwgc2tpcHBpbmcgb3ZlciB0aGUgaW5pdGlhbCBgRUxDJwpkaWZm IC0tZ2l0IGEvc3JjL3NlYXJjaC5jIGIvc3JjL3NlYXJjaC5jCmluZGV4IGVkOWMxMmMuLjA4 NGFkZGEgMTAwNjQ0Ci0tLSBhL3NyYy9zZWFyY2guYworKysgYi9zcmMvc2VhcmNoLmMKQEAg LTgwMCw2ICs4MDAsOCBAQCBmaW5kX25ld2xpbmUgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlm Zl90IHN0YXJ0X2J5dGUsIHB0cmRpZmZfdCBlbmQsCiAJCSAgICAqYnl0ZXBvcyA9IGxpbV9i eXRlICsgbmV4dDsKIAkJICByZXR1cm4gQllURV9UT19DSEFSIChsaW1fYnl0ZSArIG5leHQp OwogCQl9CisJICAgICAgaWYgKGFsbG93X3F1aXQpCisJCW1heWJlX3F1aXQgKCk7CiAgICAg ICAgICAgICB9CiAKIAkgIHN0YXJ0X2J5dGUgPSBsaW1fYnl0ZTsKQEAgLTkwNSw2ICs5MDcs OCBAQCBmaW5kX25ld2xpbmUgKHB0cmRpZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5 dGUsIHB0cmRpZmZfdCBlbmQsCiAJCSAgICAqYnl0ZXBvcyA9IGNlaWxpbmdfYnl0ZSArIHBy ZXYgKyAxOwogCQkgIHJldHVybiBCWVRFX1RPX0NIQVIgKGNlaWxpbmdfYnl0ZSArIHByZXYg KyAxKTsKIAkJfQorCSAgICAgIGlmIChhbGxvd19xdWl0KQorCQltYXliZV9xdWl0ICgpOwog ICAgICAgICAgICAgfQogCiAJICBzdGFydF9ieXRlID0gY2VpbGluZ19ieXRlOwpAQCAtMTI1 Miw2ICsxMjU2LDcgQEAgc2VhcmNoX2J1ZmZlciAoTGlzcF9PYmplY3Qgc3RyaW5nLCBwdHJk aWZmX3QgcG9zLCBwdHJkaWZmX3QgcG9zX2J5dGUsCiAJICAgICAgcmV0dXJuIChuKTsKIAkg ICAgfQogCSAgbisrOworCSAgbWF5YmVfcXVpdCAoKTsKIAl9CiAgICAgICB3aGlsZSAobiA+ IDApCiAJewpAQCAtMTI5Niw2ICsxMzAxLDcgQEAgc2VhcmNoX2J1ZmZlciAoTGlzcF9PYmpl Y3Qgc3RyaW5nLCBwdHJkaWZmX3QgcG9zLCBwdHJkaWZmX3QgcG9zX2J5dGUsCiAJICAgICAg cmV0dXJuICgwIC0gbik7CiAJICAgIH0KIAkgIG4tLTsKKwkgIG1heWJlX3F1aXQgKCk7CiAJ fQogI2lmZGVmIFJFTF9BTExPQwogICAgICAgcl9hbGxvY19pbmhpYml0X2J1ZmZlcl9yZWxv Y2F0aW9uICgwKTsKQEAgLTMyNTIsNiArMzI1OCw4IEBAIGZpbmRfbmV3bGluZTEgKHB0cmRp ZmZfdCBzdGFydCwgcHRyZGlmZl90IHN0YXJ0X2J5dGUsIHB0cmRpZmZfdCBlbmQsCiAJCSAg ICAqYnl0ZXBvcyA9IGxpbV9ieXRlICsgbmV4dDsKIAkJICByZXR1cm4gQllURV9UT19DSEFS IChsaW1fYnl0ZSArIG5leHQpOwogCQl9CisJICAgICAgaWYgKGFsbG93X3F1aXQpCisJCW1h eWJlX3F1aXQgKCk7CiAgICAgICAgICAgICB9CiAKIAkgIHN0YXJ0X2J5dGUgPSBsaW1fYnl0 ZTsKZGlmZiAtLWdpdCBhL3NyYy9zeW50YXguYyBiL3NyYy9zeW50YXguYwppbmRleCBlNzEz OTIyLi4wNmZlNTBiIDEwMDY0NAotLS0gYS9zcmMvc3ludGF4LmMKKysrIGIvc3JjL3N5bnRh eC5jCkBAIC01OTMsNiArNTkzLDcgQEAgc3RhdGljIHB0cmRpZmZfdAogZmluZF9kZWZ1bl9z dGFydCAocHRyZGlmZl90IHBvcywgcHRyZGlmZl90IHBvc19ieXRlKQogewogICBwdHJkaWZm X3Qgb3BvaW50ID0gUFQsIG9wb2ludF9ieXRlID0gUFRfQllURTsKKyAgdW5zaWduZWQgc2hv cnQgaW50IHF1aXRfY291bnQgPSAwOwogCiAgIC8qIFVzZSBwcmV2aW91cyBmaW5kaW5nLCBp ZiBpdCdzIHZhbGlkIGFuZCBhcHBsaWVzIHRvIHRoaXMgaW5xdWlyeS4gICovCiAgIGlmIChj dXJyZW50X2J1ZmZlciA9PSBmaW5kX3N0YXJ0X2J1ZmZlcgpAQCAtNjIxLDExICs2MjIsOSBA QCBmaW5kX2RlZnVuX3N0YXJ0IChwdHJkaWZmX3QgcG9zLCBwdHJkaWZmX3QgcG9zX2J5dGUp CiAgIFNFVFVQX0JVRkZFUl9TWU5UQVhfVEFCTEUgKCk7CiAgIHdoaWxlIChQVCA+IEJFR1Yp CiAgICAgewotICAgICAgaW50IGM7Ci0KICAgICAgIC8qIE9wZW4tcGFyZW4gYXQgc3RhcnQg b2YgbGluZSBtZWFucyB3ZSBtYXkgaGF2ZSBmb3VuZCBvdXIKIAkgZGVmdW4tc3RhcnQuICAq LwotICAgICAgYyA9IEZFVENIX0NIQVJfQVNfTVVMVElCWVRFIChQVF9CWVRFKTsKKyAgICAg IGludCBjID0gRkVUQ0hfQ0hBUl9BU19NVUxUSUJZVEUgKFBUX0JZVEUpOwogICAgICAgaWYg KFNZTlRBWCAoYykgPT0gU29wZW4pCiAJewogCSAgU0VUVVBfU1lOVEFYX1RBQkxFIChQVCAr IDEsIC0xKTsJLyogVHJ5IGFnYWluLi4uICovCkBAIC02MzcsNiArNjM2LDcgQEAgZmluZF9k ZWZ1bl9zdGFydCAocHRyZGlmZl90IHBvcywgcHRyZGlmZl90IHBvc19ieXRlKQogCX0KICAg ICAgIC8qIE1vdmUgdG8gYmVnIG9mIHByZXZpb3VzIGxpbmUuICAqLwogICAgICAgc2Nhbl9u ZXdsaW5lIChQVCwgUFRfQllURSwgQkVHViwgQkVHVl9CWVRFLCAtMiwgMSk7CisgICAgICBp bmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAgICAgfQogCiAgIC8qIFJlY29yZCB3 aGF0IHdlIGZvdW5kLCBmb3IgdGhlIG5leHQgdHJ5LiAgKi8KQEAgLTcxNSw2ICs3MTUsNyBA QCBiYWNrX2NvbW1lbnQgKHB0cmRpZmZfdCBmcm9tLCBwdHJkaWZmX3QgZnJvbV9ieXRlLCBw dHJkaWZmX3Qgc3RvcCwKICAgcHRyZGlmZl90IG5lc3RpbmcgPSAxOwkJLyogQ3VycmVudCBj b21tZW50IG5lc3RpbmcuICAqLwogICBpbnQgYzsKICAgaW50IHN5bnRheCA9IDA7CisgIHVu c2lnbmVkIHNob3J0IGludCBxdWl0X2NvdW50ID0gMDsKIAogICAvKiBGSVhNRTogQSB9fSBj b21tZW50LWVuZGVyIHN0eWxlIGxlYWRzIHRvIGluY29ycmVjdCBiZWhhdmlvcgogICAgICBp biB0aGUgY2FzZSBvZiB7eyBjIH19fSBiZWNhdXNlIHdlIGlnbm9yZSB0aGUgbGFzdCB0d28g Y2hhcnMgd2hpY2ggYXJlCkBAIC03MjQsNiArNzI1LDggQEAgYmFja19jb21tZW50IChwdHJk aWZmX3QgZnJvbSwgcHRyZGlmZl90IGZyb21fYnl0ZSwgcHRyZGlmZl90IHN0b3AsCiAgICAg IHRoYXQgZGV0ZXJtaW5lcyBxdW90ZSBwYXJpdHkgdG8gdGhlIGNvbW1lbnQtZW5kLiAgKi8K ICAgd2hpbGUgKGZyb20gIT0gc3RvcCkKICAgICB7CisgICAgICBpbmNyX3JhcmVseV9xdWl0 ICgmcXVpdF9jb3VudCk7CisKICAgICAgIHB0cmRpZmZfdCB0ZW1wX2J5dGU7CiAgICAgICBp bnQgcHJldl9zeW50YXg7CiAgICAgICBib29sIGNvbTJzdGFydCwgY29tMmVuZCwgY29tc3Rh cnQ7CkBAIC05NTEsNyArOTU0LDkgQEAgYmFja19jb21tZW50IChwdHJkaWZmX3QgZnJvbSwg cHRyZGlmZl90IGZyb21fYnl0ZSwgcHRyZGlmZl90IHN0b3AsCiAJCSAgZGVmdW5fc3RhcnRf Ynl0ZSA9IENIQVJfVE9fQllURSAoZGVmdW5fc3RhcnQpOwogCQl9CiAJICAgIH0KLQl9IHdo aWxlIChkZWZ1bl9zdGFydCA8IGNvbW1lbnRfZW5kKTsKKwkgIGluY3JfcmFyZWx5X3F1aXQg KCZxdWl0X2NvdW50KTsKKwl9CisgICAgICB3aGlsZSAoZGVmdW5fc3RhcnQgPCBjb21tZW50 X2VuZCk7CiAKICAgICAgIGZyb21fYnl0ZSA9IENIQVJfVE9fQllURSAoZnJvbSk7CiAgICAg ICBVUERBVEVfU1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20gLSAxKTsKQEAgLTE0MTcsMjIg KzE0MjIsMjAgQEAgREVGVU4gKCJpbnRlcm5hbC1kZXNjcmliZS1zeW50YXgtdmFsdWUiLCBG aW50ZXJuYWxfZGVzY3JpYmVfc3ludGF4X3ZhbHVlLAogICAgQ09VTlQgbmVnYXRpdmUgbWVh bnMgc2NhbiBiYWNrd2FyZCBhbmQgc3RvcCBhdCB3b3JkIGJlZ2lubmluZy4gICovCiAKIHB0 cmRpZmZfdAotc2Nhbl93b3JkcyAocmVnaXN0ZXIgcHRyZGlmZl90IGZyb20sIHJlZ2lzdGVy IEVNQUNTX0lOVCBjb3VudCkKK3NjYW5fd29yZHMgKHB0cmRpZmZfdCBmcm9tLCBFTUFDU19J TlQgY291bnQpCiB7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBiZWcgPSBCRUdWOwotICByZWdp c3RlciBwdHJkaWZmX3QgZW5kID0gWlY7Ci0gIHJlZ2lzdGVyIHB0cmRpZmZfdCBmcm9tX2J5 dGUgPSBDSEFSX1RPX0JZVEUgKGZyb20pOwotICByZWdpc3RlciBlbnVtIHN5bnRheGNvZGUg Y29kZTsKKyAgcHRyZGlmZl90IGJlZyA9IEJFR1Y7CisgIHB0cmRpZmZfdCBlbmQgPSBaVjsK KyAgcHRyZGlmZl90IGZyb21fYnl0ZSA9IENIQVJfVE9fQllURSAoZnJvbSk7CisgIGVudW0g c3ludGF4Y29kZSBjb2RlOwogICBpbnQgY2gwLCBjaDE7CiAgIExpc3BfT2JqZWN0IGZ1bmMs IHBvczsKIAotICBtYXliZV9xdWl0ICgpOwotCiAgIFNFVFVQX1NZTlRBWF9UQUJMRSAoZnJv bSwgY291bnQpOwogCiAgIHdoaWxlIChjb3VudCA+IDApCiAgICAgewotICAgICAgd2hpbGUg KDEpCisgICAgICB3aGlsZSAodHJ1ZSkKIAl7CiAJICBpZiAoZnJvbSA9PSBlbmQpCiAJICAg IHJldHVybiAwOwpAQCAtMTQ0NSw2ICsxNDQ4LDcgQEAgc2Nhbl93b3JkcyAocmVnaXN0ZXIg cHRyZGlmZl90IGZyb20sIHJlZ2lzdGVyIEVNQUNTX0lOVCBjb3VudCkKIAkgICAgYnJlYWs7 CiAJICBpZiAoY29kZSA9PSBTd29yZCkKIAkgICAgYnJlYWs7CisJICByYXJlbHlfcXVpdCAo ZnJvbSk7CiAJfQogICAgICAgLyogTm93IENIMCBpcyBhIGNoYXJhY3RlciB3aGljaCBiZWdp bnMgYSB3b3JkIGFuZCBGUk9NIGlzIHRoZQogICAgICAgICAgcG9zaXRpb24gb2YgdGhlIG5l eHQgY2hhcmFjdGVyLiAgKi8KQEAgLTE0NzMsMTMgKzE0NzcsMTQgQEAgc2Nhbl93b3JkcyAo cmVnaXN0ZXIgcHRyZGlmZl90IGZyb20sIHJlZ2lzdGVyIEVNQUNTX0lOVCBjb3VudCkKIAkJ YnJlYWs7CiAJICAgICAgSU5DX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICAgICAgY2gw ID0gY2gxOworCSAgICAgIHJhcmVseV9xdWl0IChmcm9tKTsKIAkgICAgfQogCX0KICAgICAg IGNvdW50LS07CiAgICAgfQogICB3aGlsZSAoY291bnQgPCAwKQogICAgIHsKLSAgICAgIHdo aWxlICgxKQorICAgICAgd2hpbGUgKHRydWUpCiAJewogCSAgaWYgKGZyb20gPT0gYmVnKQog CSAgICByZXR1cm4gMDsKQEAgLTE0OTIsNiArMTQ5Nyw3IEBAIHNjYW5fd29yZHMgKHJlZ2lz dGVyIHB0cmRpZmZfdCBmcm9tLCByZWdpc3RlciBFTUFDU19JTlQgY291bnQpCiAJICAgIGJy ZWFrOwogCSAgaWYgKGNvZGUgPT0gU3dvcmQpCiAJICAgIGJyZWFrOworCSAgcmFyZWx5X3F1 aXQgKGZyb20pOwogCX0KICAgICAgIC8qIE5vdyBDSDEgaXMgYSBjaGFyYWN0ZXIgd2hpY2gg ZW5kcyBhIHdvcmQgYW5kIEZST00gaXMgdGhlCiAgICAgICAgICBwb3NpdGlvbiBvZiBpdC4g ICovCkBAIC0xNTI0LDYgKzE1MzAsNyBAQCBzY2FuX3dvcmRzIChyZWdpc3RlciBwdHJkaWZm X3QgZnJvbSwgcmVnaXN0ZXIgRU1BQ1NfSU5UIGNvdW50KQogCQkgIGJyZWFrOwogCQl9CiAJ ICAgICAgY2gxID0gY2gwOworCSAgICAgIHJhcmVseV9xdWl0IChmcm9tKTsKIAkgICAgfQog CX0KICAgICAgIGNvdW50Kys7CkBAIC0xOTYxLDkgKzE5NjgsMTAgQEAgc2tpcF9jaGFycyAo Ym9vbCBmb3J3YXJkcCwgTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBsaW0sCiAJ CX0KIAkgICAgZndkX29rOgogCSAgICAgIHAgKz0gbmJ5dGVzLCBwb3MrKywgcG9zX2J5dGUg Kz0gbmJ5dGVzOworCSAgICAgIHJhcmVseV9xdWl0IChwb3MpOwogCSAgICB9CiAJZWxzZQot CSAgd2hpbGUgKDEpCisJICB3aGlsZSAodHJ1ZSkKIAkgICAgewogCSAgICAgIGlmIChwID49 IHN0b3ApCiAJCXsKQEAgLTE5ODUsMTUgKzE5OTMsMTQgQEAgc2tpcF9jaGFycyAoYm9vbCBm b3J3YXJkcCwgTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBsaW0sCiAJCWJyZWFr OwogCSAgICBmd2RfdW5pYnl0ZV9vazoKIAkgICAgICBwKyssIHBvcysrLCBwb3NfYnl0ZSsr OworCSAgICAgIHJhcmVseV9xdWl0IChwb3MpOwogCSAgICB9CiAgICAgICB9CiAgICAgZWxz ZQogICAgICAgewogCWlmIChtdWx0aWJ5dGUpCi0JICB3aGlsZSAoMSkKKwkgIHdoaWxlICh0 cnVlKQogCSAgICB7Ci0JICAgICAgdW5zaWduZWQgY2hhciAqcHJldl9wOwotCiAJICAgICAg aWYgKHAgPD0gc3RvcCkKIAkJewogCQkgIGlmIChwIDw9IGVuZHApCkBAIC0yMDAxLDggKzIw MDgsMTEgQEAgc2tpcF9jaGFycyAoYm9vbCBmb3J3YXJkcCwgTGlzcF9PYmplY3Qgc3RyaW5n LCBMaXNwX09iamVjdCBsaW0sCiAJCSAgcCA9IEdQVF9BRERSOwogCQkgIHN0b3AgPSBlbmRw OwogCQl9Ci0JICAgICAgcHJldl9wID0gcDsKLQkgICAgICB3aGlsZSAoLS1wID49IHN0b3Ag JiYgISBDSEFSX0hFQURfUCAoKnApKTsKKwkgICAgICB1bnNpZ25lZCBjaGFyICpwcmV2X3Ag PSBwOworCSAgICAgIGRvCisJCXAtLTsKKwkgICAgICB3aGlsZSAoc3RvcCA8PSBwICYmICEg Q0hBUl9IRUFEX1AgKCpwKSk7CisKIAkgICAgICBjID0gU1RSSU5HX0NIQVIgKHApOwogCiAJ ICAgICAgaWYgKCEgTklMUCAoaXNvX2NsYXNzZXMpICYmIGluX2NsYXNzZXMgKGMsIGlzb19j bGFzc2VzKSkKQEAgLTIwMjYsOSArMjAzNiwxMCBAQCBza2lwX2NoYXJzIChib29sIGZvcndh cmRwLCBMaXNwX09iamVjdCBzdHJpbmcsIExpc3BfT2JqZWN0IGxpbSwKIAkJfQogCSAgICBi YWNrX29rOgogCSAgICAgIHBvcy0tLCBwb3NfYnl0ZSAtPSBwcmV2X3AgLSBwOworCSAgICAg IHJhcmVseV9xdWl0IChwb3MpOwogCSAgICB9CiAJZWxzZQotCSAgd2hpbGUgKDEpCisJICB3 aGlsZSAodHJ1ZSkKIAkgICAgewogCSAgICAgIGlmIChwIDw9IHN0b3ApCiAJCXsKQEAgLTIw NTAsNiArMjA2MSw3IEBAIHNraXBfY2hhcnMgKGJvb2wgZm9yd2FyZHAsIExpc3BfT2JqZWN0 IHN0cmluZywgTGlzcF9PYmplY3QgbGltLAogCQlicmVhazsKIAkgICAgYmFja191bmlieXRl X29rOgogCSAgICAgIHAtLSwgcG9zLS0sIHBvc19ieXRlLS07CisJICAgICAgcmFyZWx5X3F1 aXQgKHBvcyk7CiAJICAgIH0KICAgICAgIH0KIApAQCAtMjE1NSw2ICsyMTY3LDcgQEAgc2tp cF9zeW50YXhlcyAoYm9vbCBmb3J3YXJkcCwgTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09i amVjdCBsaW0pCiAJCWlmICghIGZhc3RtYXBbU1lOVEFYIChjKV0pCiAJCSAgZ290byBkb25l OwogCQlwICs9IG5ieXRlcywgcG9zKyssIHBvc19ieXRlICs9IG5ieXRlczsKKwkJcmFyZWx5 X3F1aXQgKHBvcyk7CiAJICAgICAgfQogCSAgICB3aGlsZSAoIXBhcnNlX3NleHBfbG9va3Vw X3Byb3BlcnRpZXMKIAkJICAgfHwgcG9zIDwgZ2xfc3RhdGUuZV9wcm9wZXJ0eSk7CkBAIC0y MTcxLDEwICsyMTg0LDggQEAgc2tpcF9zeW50YXhlcyAoYm9vbCBmb3J3YXJkcCwgTGlzcF9P YmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBsaW0pCiAKIAlpZiAobXVsdGlieXRlKQogCSAg ewotCSAgICB3aGlsZSAoMSkKKwkgICAgd2hpbGUgKHRydWUpCiAJICAgICAgewotCQl1bnNp Z25lZCBjaGFyICpwcmV2X3A7Ci0KIAkJaWYgKHAgPD0gc3RvcCkKIAkJICB7CiAJCSAgICBp ZiAocCA8PSBlbmRwKQpAQCAtMjE4MywxNyArMjE5NCwyMiBAQCBza2lwX3N5bnRheGVzIChi b29sIGZvcndhcmRwLCBMaXNwX09iamVjdCBzdHJpbmcsIExpc3BfT2JqZWN0IGxpbSkKIAkJ ICAgIHN0b3AgPSBlbmRwOwogCQkgIH0KIAkJVVBEQVRFX1NZTlRBWF9UQUJMRV9CQUNLV0FS RCAocG9zIC0gMSk7Ci0JCXByZXZfcCA9IHA7Ci0JCXdoaWxlICgtLXAgPj0gc3RvcCAmJiAh IENIQVJfSEVBRF9QICgqcCkpOworCisJCXVuc2lnbmVkIGNoYXIgKnByZXZfcCA9IHA7CisJ CWRvCisJCSAgcC0tOworCQl3aGlsZSAoc3RvcCA8PSBwICYmICEgQ0hBUl9IRUFEX1AgKCpw KSk7CisKIAkJYyA9IFNUUklOR19DSEFSIChwKTsKIAkJaWYgKCEgZmFzdG1hcFtTWU5UQVgg KGMpXSkKIAkJICBicmVhazsKIAkJcG9zLS0sIHBvc19ieXRlIC09IHByZXZfcCAtIHA7CisJ CXJhcmVseV9xdWl0IChwb3MpOwogCSAgICAgIH0KIAkgIH0KIAllbHNlCiAJICB7Ci0JICAg IHdoaWxlICgxKQorCSAgICB3aGlsZSAodHJ1ZSkKIAkgICAgICB7CiAJCWlmIChwIDw9IHN0 b3ApCiAJCSAgewpAQCAtMjIwNiw2ICsyMjIyLDcgQEAgc2tpcF9zeW50YXhlcyAoYm9vbCBm b3J3YXJkcCwgTGlzcF9PYmplY3Qgc3RyaW5nLCBMaXNwX09iamVjdCBsaW0pCiAJCWlmICgh IGZhc3RtYXBbU1lOVEFYIChwWy0xXSldKQogCQkgIGJyZWFrOwogCQlwLS0sIHBvcy0tLCBw b3NfYnl0ZS0tOworCQlyYXJlbHlfcXVpdCAocG9zKTsKIAkgICAgICB9CiAJICB9CiAgICAg ICB9CkBAIC0yMjczLDkgKzIyOTAsMTAgQEAgZm9yd19jb21tZW50IChwdHJkaWZmX3QgZnJv bSwgcHRyZGlmZl90IGZyb21fYnl0ZSwgcHRyZGlmZl90IHN0b3AsCiAJICAgICAgcHRyZGlm Zl90ICpjaGFycG9zX3B0ciwgcHRyZGlmZl90ICpieXRlcG9zX3B0ciwKIAkgICAgICBFTUFD U19JTlQgKmluY29tbWVudF9wdHIsIGludCAqbGFzdF9zeW50YXhfcHRyKQogewotICByZWdp c3RlciBpbnQgYywgYzE7Ci0gIHJlZ2lzdGVyIGVudW0gc3ludGF4Y29kZSBjb2RlOwotICBy ZWdpc3RlciBpbnQgc3ludGF4LCBvdGhlcl9zeW50YXg7CisgIHVuc2lnbmVkIHNob3J0IGlu dCBxdWl0X2NvdW50ID0gMDsKKyAgaW50IGMsIGMxOworICBlbnVtIHN5bnRheGNvZGUgY29k ZTsKKyAgaW50IHN5bnRheCwgb3RoZXJfc3ludGF4OwogCiAgIGlmIChuZXN0aW5nIDw9IDAp IG5lc3RpbmcgPSAtMTsKIApAQCAtMjM2Nyw2ICsyMzg1LDggQEAgZm9yd19jb21tZW50IChw dHJkaWZmX3QgZnJvbSwgcHRyZGlmZl90IGZyb21fYnl0ZSwgcHRyZGlmZl90IHN0b3AsCiAJ ICBVUERBVEVfU1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20pOwogCSAgbmVzdGluZysrOwog CX0KKworICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAgIH0KICAg KmNoYXJwb3NfcHRyID0gZnJvbTsKICAgKmJ5dGVwb3NfcHRyID0gZnJvbV9ieXRlOwpAQCAt MjM5NCwxMyArMjQxNCwxMiBAQCBiZXR3ZWVuIHRoZW0sIHJldHVybiB0OyBvdGhlcndpc2Ug cmV0dXJuIG5pbC4gICovKQogICBwdHJkaWZmX3Qgb3V0X2NoYXJwb3MsIG91dF9ieXRlcG9z OwogICBFTUFDU19JTlQgZHVtbXk7CiAgIGludCBkdW1teTI7CisgIHVuc2lnbmVkIHNob3J0 IGludCBxdWl0X2NvdW50ID0gMDsKIAogICBDSEVDS19OVU1CRVIgKGNvdW50KTsKICAgY291 bnQxID0gWElOVCAoY291bnQpOwogICBzdG9wID0gY291bnQxID4gMCA/IFpWIDogQkVHVjsK IAotICBtYXliZV9xdWl0ICgpOwotCiAgIGZyb20gPSBQVDsKICAgZnJvbV9ieXRlID0gUFRf QllURTsKIApAQCAtMjQ0MSw2ICsyNDYwLDcgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsg b3RoZXJ3aXNlIHJldHVybiBuaWwuICAqLykKIAkgICAgICBJTkNfQk9USCAoZnJvbSwgZnJv bV9ieXRlKTsKIAkgICAgICBVUERBVEVfU1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20pOwog CSAgICB9CisJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJfQogICAgICAg d2hpbGUgKGNvZGUgPT0gU3doaXRlc3BhY2UgfHwgKGNvZGUgPT0gU2VuZGNvbW1lbnQgJiYg YyA9PSAnXG4nKSk7CiAKQEAgLTI0NjksMTEgKzI0ODksOCBAQCBiZXR3ZWVuIHRoZW0sIHJl dHVybiB0OyBvdGhlcndpc2UgcmV0dXJuIG5pbC4gICovKQogCiAgIHdoaWxlIChjb3VudDEg PCAwKQogICAgIHsKLSAgICAgIHdoaWxlICgxKQorICAgICAgd2hpbGUgKHRydWUpCiAJewot CSAgYm9vbCBxdW90ZWQ7Ci0JICBpbnQgc3ludGF4OwotCiAJICBpZiAoZnJvbSA8PSBzdG9w KQogCSAgICB7CiAJICAgICAgU0VUX1BUX0JPVEggKEJFR1YsIEJFR1ZfQllURSk7CkBAIC0y NDgyLDkgKzI0OTksOSBAQCBiZXR3ZWVuIHRoZW0sIHJldHVybiB0OyBvdGhlcndpc2UgcmV0 dXJuIG5pbC4gICovKQogCiAJICBERUNfQk9USCAoZnJvbSwgZnJvbV9ieXRlKTsKIAkgIC8q IGNoYXJfcXVvdGVkIGRvZXMgVVBEQVRFX1NZTlRBWF9UQUJMRV9CQUNLV0FSRCAoZnJvbSku ICAqLwotCSAgcXVvdGVkID0gY2hhcl9xdW90ZWQgKGZyb20sIGZyb21fYnl0ZSk7CisJICBi b29sIHF1b3RlZCA9IGNoYXJfcXVvdGVkIChmcm9tLCBmcm9tX2J5dGUpOwogCSAgYyA9IEZF VENIX0NIQVJfQVNfTVVMVElCWVRFIChmcm9tX2J5dGUpOwotCSAgc3ludGF4ID0gU1lOVEFY X1dJVEhfRkxBR1MgKGMpOworCSAgaW50IHN5bnRheCA9IFNZTlRBWF9XSVRIX0ZMQUdTIChj KTsKIAkgIGNvZGUgPSBTWU5UQVggKGMpOwogCSAgY29tc3R5bGUgPSAwOwogCSAgY29tbmVz dGVkID0gU1lOVEFYX0ZMQUdTX0NPTU1FTlRfTkVTVEVEIChzeW50YXgpOwpAQCAtMjUyNyw2 ICsyNTQ0LDcgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJldHVybiBu aWwuICAqLykKIAkJICAgIH0KIAkJICBlbHNlIGlmIChmcm9tID09IHN0b3ApCiAJCSAgICBi cmVhazsKKwkJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJCX0KIAkgICAg ICBpZiAoZmVuY2VfZm91bmQgPT0gMCkKIAkJewpAQCAtMjU3Myw2ICsyNTkxLDggQEAgYmV0 d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJldHVybiBuaWwuICAqLykKIAkgICAg ICBTRVRfUFRfQk9USCAoZnJvbSwgZnJvbV9ieXRlKTsKIAkgICAgICByZXR1cm4gUW5pbDsK IAkgICAgfQorCisJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJfQogCiAg ICAgICBjb3VudDErKzsKQEAgLTI2MTIsNiArMjYzMiw3IEBAIHNjYW5fbGlzdHMgKEVNQUNT X0lOVCBmcm9tLCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhw ZmxhZykKICAgRU1BQ1NfSU5UIGR1bW15OwogICBpbnQgZHVtbXkyOwogICBib29sIG11bHRp Ynl0ZV9zeW1ib2xfcCA9IHNleHBmbGFnICYmIG11bHRpYnl0ZV9zeW50YXhfYXNfc3ltYm9s OworICB1bnNpZ25lZCBzaG9ydCBpbnQgcXVpdF9jb3VudCA9IDA7CiAKICAgaWYgKGRlcHRo ID4gMCkgbWluX2RlcHRoID0gMDsKIApAQCAtMjYyNyw2ICsyNjQ4LDcgQEAgc2Nhbl9saXN0 cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBjb3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBi b29sIHNleHBmbGFnKQogICAgIHsKICAgICAgIHdoaWxlIChmcm9tIDwgc3RvcCkKIAl7CisJ ICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJICBib29sIGNvbXN0YXJ0X2Zp cnN0LCBwcmVmaXg7CiAJICBpbnQgc3ludGF4LCBvdGhlcl9zeW50YXg7CiAJICBVUERBVEVf U1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20pOwpAQCAtMjY5NSw2ICsyNzE3LDcgQEAgc2Nh bl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBjb3VudCwgRU1BQ1NfSU5UIGRl cHRoLCBib29sIHNleHBmbGFnKQogCQkgICAgICBnb3RvIGRvbmU7CiAJCSAgICB9CiAJCSAg SU5DX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CisJCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1 aXRfY291bnQpOwogCQl9CiAJICAgICAgZ290byBkb25lOwogCkBAIC0yNzY2LDYgKzI3ODks NyBAQCBzY2FuX2xpc3RzIChFTUFDU19JTlQgZnJvbSwgRU1BQ1NfSU5UIGNvdW50LCBFTUFD U19JTlQgZGVwdGgsIGJvb2wgc2V4cGZsYWcpCiAJCSAgaWYgKGNfY29kZSA9PSBTY2hhcnF1 b3RlIHx8IGNfY29kZSA9PSBTZXNjYXBlKQogCQkgICAgSU5DX0JPVEggKGZyb20sIGZyb21f Ynl0ZSk7CiAJCSAgSU5DX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CisJCSAgaW5jcl9yYXJl bHlfcXVpdCAoJnF1aXRfY291bnQpOwogCQl9CiAJICAgICAgSU5DX0JPVEggKGZyb20sIGZy b21fYnl0ZSk7CiAJICAgICAgaWYgKCFkZXB0aCAmJiBzZXhwZmxhZykgZ290byBkb25lOwpA QCAtMjc5MSwxMSArMjgxNSwxMSBAQCBzY2FuX2xpc3RzIChFTUFDU19JTlQgZnJvbSwgRU1B Q1NfSU5UIGNvdW50LCBFTUFDU19JTlQgZGVwdGgsIGJvb2wgc2V4cGZsYWcpCiAgICAgewog ICAgICAgd2hpbGUgKGZyb20gPiBzdG9wKQogCXsKLQkgIGludCBzeW50YXg7CisJICBpbmNy X3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJICBERUNfQk9USCAoZnJvbSwgZnJvbV9i eXRlKTsKIAkgIFVQREFURV9TWU5UQVhfVEFCTEVfQkFDS1dBUkQgKGZyb20pOwogCSAgYyA9 IEZFVENIX0NIQVJfQVNfTVVMVElCWVRFIChmcm9tX2J5dGUpOwotCSAgc3ludGF4PSBTWU5U QVhfV0lUSF9GTEFHUyAoYyk7CisJICBpbnQgc3ludGF4ID0gU1lOVEFYX1dJVEhfRkxBR1Mg KGMpOwogCSAgY29kZSA9IHN5bnRheF9tdWx0aWJ5dGUgKGMsIG11bHRpYnl0ZV9zeW1ib2xf cCk7CiAJICBpZiAoZGVwdGggPT0gbWluX2RlcHRoKQogCSAgICBsYXN0X2dvb2QgPSBmcm9t OwpAQCAtMjg2Nyw2ICsyODkxLDcgQEAgc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVN QUNTX0lOVCBjb3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBib29sIHNleHBmbGFnKQogCQkgICAg ICBkZWZhdWx0OiBnb3RvIGRvbmUyOwogCQkgICAgICB9CiAJCSAgREVDX0JPVEggKGZyb20s IGZyb21fYnl0ZSk7CisJCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogCQl9 CiAJICAgICAgZ290byBkb25lMjsKIApAQCAtMjkyOSwxMyArMjk1NCwxNCBAQCBzY2FuX2xp c3RzIChFTUFDU19JTlQgZnJvbSwgRU1BQ1NfSU5UIGNvdW50LCBFTUFDU19JTlQgZGVwdGgs IGJvb2wgc2V4cGZsYWcpCiAJCSAgICAgIGlmIChzeW50YXhfbXVsdGlieXRlIChjLCBtdWx0 aWJ5dGVfc3ltYm9sX3ApID09IGNvZGUpCiAJCQlicmVhazsKIAkJICAgIH0KKwkJICBpbmNy X3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAJCX0KIAkgICAgICBpZiAoY29kZSA9PSBT c3RyaW5nX2ZlbmNlICYmICFkZXB0aCAmJiBzZXhwZmxhZykgZ290byBkb25lMjsKIAkgICAg ICBicmVhazsKIAogCSAgICBjYXNlIFNzdHJpbmc6CiAJICAgICAgc3RyaW5ndGVybSA9IEZF VENIX0NIQVJfQVNfTVVMVElCWVRFIChmcm9tX2J5dGUpOwotCSAgICAgIHdoaWxlICgxKQor CSAgICAgIHdoaWxlICh0cnVlKQogCQl7CiAJCSAgaWYgKGZyb20gPT0gc3RvcCkKIAkJICAg IGdvdG8gbG9zZTsKQEAgLTI5NDksNiArMjk3NSw3IEBAIHNjYW5fbGlzdHMgKEVNQUNTX0lO VCBmcm9tLCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhwZmxh ZykKIAkJCSAgICAgID09IFNzdHJpbmcpKQogCQkJYnJlYWs7CiAJCSAgICB9CisJCSAgaW5j cl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogCQl9CiAJICAgICAgaWYgKCFkZXB0aCAm JiBzZXhwZmxhZykgZ290byBkb25lMjsKIAkgICAgICBicmVhazsKQEAgLTMwNjEsNiArMzA4 OCw3IEBAIHRoZSBwcmVmaXggc3ludGF4IGZsYWcgKHApLiAgKi8pCiAgICAgICBpZiAocG9z IDw9IGJlZykKICAgICAgICAgYnJlYWs7CiAgICAgICBERUNfQk9USCAocG9zLCBwb3NfYnl0 ZSk7CisgICAgICByYXJlbHlfcXVpdCAocG9zKTsKICAgICB9CiAKICAgU0VUX1BUX0JPVEgg KG9wb2ludCwgb3BvaW50X2J5dGUpOwpAQCAtMzEzMSw2ICszMTU5LDcgQEAgc2Nhbl9zZXhw c19mb3J3YXJkIChzdHJ1Y3QgbGlzcF9wYXJzZV9zdGF0ZSAqc3RhdGUsCiAgIGJvb2wgZm91 bmQ7CiAgIHB0cmRpZmZfdCBvdXRfYnl0ZXBvcywgb3V0X2NoYXJwb3M7CiAgIGludCB0ZW1w OworICB1bnNpZ25lZCBzaG9ydCBpbnQgcXVpdF9jb3VudCA9IDA7CiAKICAgcHJldl9mcm9t ID0gZnJvbTsKICAgcHJldl9mcm9tX2J5dGUgPSBmcm9tX2J5dGU7CkBAIC0zMjAwLDYgKzMy MjksNyBAQCBkbyB7IHByZXZfZnJvbSA9IGZyb207CQkJCVwKIAogICB3aGlsZSAoZnJvbSA8 IGVuZCkKICAgICB7CisgICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CiAg ICAgICBJTkNfRlJPTTsKIAogICAgICAgaWYgKChmcm9tIDwgZW5kKQpAQCAtMzI1Niw2ICsz Mjg2LDcgQEAgZG8geyBwcmV2X2Zyb20gPSBmcm9tOwkJCQlcCiAJCSAgZ290byBzeW1kb25l OwogCQl9CiAJICAgICAgSU5DX0ZST007CisJICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1 aXRfY291bnQpOwogCSAgICB9CiAJc3ltZG9uZToKIAkgIGN1cmxldmVsLT5wcmV2ID0gY3Vy bGV2ZWwtPmxhc3Q7CkBAIC0zMzY2LDYgKzMzOTcsNyBAQCBkbyB7IHByZXZfZnJvbSA9IGZy b207CQkJCVwKIAkJICAgIGJyZWFrOwogCQkgIH0KIAkJSU5DX0ZST007CisJCWluY3JfcmFy ZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKIAkgICAgICB9CiAJICB9CiAJc3RyaW5nX2VuZDoK ZGlmZiAtLWdpdCBhL3NyYy9zeXNkZXAuYyBiL3NyYy9zeXNkZXAuYwppbmRleCBlMTcyZGMw Li40MTU1YzIwIDEwMDY0NAotLS0gYS9zcmMvc3lzZGVwLmMKKysrIGIvc3JjL3N5c2RlcC5j CkBAIC0zODIsMTkgKzM4MiwyMyBAQCBnZXRfY2hpbGRfc3RhdHVzIChwaWRfdCBjaGlsZCwg aW50ICpzdGF0dXMsIGludCBvcHRpb25zLCBib29sIGludGVycnVwdGlibGUpCiAgICAgIHNv IHRoYXQgYW5vdGhlciB0aHJlYWQgcnVubmluZyBnbGliIHdvbid0IGZpbmQgdGhlbS4gICov CiAgIGVhc3NlcnQgKGNoaWxkID4gMCk7CiAKLSAgd2hpbGUgKChwaWQgPSB3YWl0cGlkIChj aGlsZCwgc3RhdHVzLCBvcHRpb25zKSkgPCAwKQorICB3aGlsZSAodHJ1ZSkKICAgICB7Cisg ICAgICAvKiBOb3RlOiB0aGUgTVMtV2luZG93cyBlbXVsYXRpb24gb2Ygd2FpdHBpZCBjYWxs cyBtYXliZV9xdWl0CisJIGludGVybmFsbHkuICAqLworICAgICAgaWYgKGludGVycnVwdGli bGUpCisJbWF5YmVfcXVpdCAoKTsKKworICAgICAgcGlkID0gd2FpdHBpZCAoY2hpbGQsIHN0 YXR1cywgb3B0aW9ucyk7CisgICAgICBpZiAoMCA8PSBwaWQpCisJYnJlYWs7CisKICAgICAg IC8qIENoZWNrIHRoYXQgQ0hJTEQgaXMgYSBjaGlsZCBwcm9jZXNzIHRoYXQgaGFzIG5vdCBi ZWVuIHJlYXBlZCwKIAkgYW5kIHRoYXQgU1RBVFVTIGFuZCBPUFRJT05TIGFyZSB2YWxpZC4g IE90aGVyd2lzZSBhYm9ydCwKIAkgYXMgY29udGludWluZyBhZnRlciB0aGlzIGludGVybmFs IGVycm9yIGNvdWxkIGNhdXNlIEVtYWNzIHRvCiAJIGJlY29tZSBjb25mdXNlZCBhbmQga2ls bCBpbm5vY2VudC12aWN0aW0gcHJvY2Vzc2VzLiAgKi8KICAgICAgIGlmIChlcnJubyAhPSBF SU5UUikKIAllbWFjc19hYm9ydCAoKTsKLQotICAgICAgLyogTm90ZTogdGhlIE1TLVdpbmRv d3MgZW11bGF0aW9uIG9mIHdhaXRwaWQgY2FsbHMgbWF5YmVfcXVpdAotCSBpbnRlcm5hbGx5 LiAgKi8KLSAgICAgIGlmIChpbnRlcnJ1cHRpYmxlKQotCW1heWJlX3F1aXQgKCk7CiAgICAg fQogCiAgIC8qIElmIHN1Y2Nlc3NmdWwgYW5kIHN0YXR1cyBpcyByZXF1ZXN0ZWQsIHRlbGwg d2FpdF9yZWFkaW5nX3Byb2Nlc3Nfb3V0cHV0CkBAIC0yNTAzLDc4ICsyNTA3LDExMyBAQCBl bWFjc19jbG9zZSAoaW50IGZkKQogI2RlZmluZSBNQVhfUldfQ09VTlQgKElOVF9NQVggPj4g MTggPDwgMTgpCiAjZW5kaWYKIAotLyogUmVhZCBmcm9tIEZJTEVERVNDIHRvIGEgYnVmZmVy IEJVRiB3aXRoIHNpemUgTkJZVEUsIHJldHJ5aW5nIGlmIGludGVycnVwdGVkLgorLyogUmVh ZCBmcm9tIEZEIHRvIGEgYnVmZmVyIEJVRiB3aXRoIHNpemUgTkJZVEUuCisgICBJZiBpbnRl cnJ1cHRlZCwgZWl0aGVyIHF1aXQgb3IgcmV0cnkgdGhlIHJlYWQuCisgICBQcm9jZXNzIGFu eSBxdWl0cyBhbmQgcGVuZGluZyBzaWduYWxzIGltbWVkaWF0ZWx5IGlmIElOVEVSUlVQVElC TEUuCiAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZWFkLCB3aGljaCBtaWdodCBi ZSBsZXNzIHRoYW4gTkJZVEUuCi0gICBPbiBlcnJvciwgc2V0IGVycm5vIGFuZCByZXR1cm4g LTEuICAqLwotcHRyZGlmZl90Ci1lbWFjc19yZWFkIChpbnQgZmlsZGVzLCB2b2lkICpidWYs IHB0cmRpZmZfdCBuYnl0ZSkKKyAgIE9uIGVycm9yLCBzZXQgZXJybm8gdG8gYSB2YWx1ZSBv dGhlciB0aGFuIEVJTlRSLCBhbmQgcmV0dXJuIC0xLiAgKi8KK3N0YXRpYyBwdHJkaWZmX3QK K2VtYWNzX25vaW50cl9yZWFkIChpbnQgZmQsIHZvaWQgKmJ1ZiwgcHRyZGlmZl90IG5ieXRl LCBib29sIGludGVycnVwdGlibGUpCiB7Ci0gIHNzaXplX3QgcnRudmFsOworICBzc2l6ZV90 IHJlc3VsdDsKIAogICAvKiBUaGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIGFnYWluc3QgTUFY X1JXX0NPVU5ULCBzaW5jZSBubyBjYWxsZXIgZXZlcgogICAgICBwYXNzZXMgYSBzaXplIHRo YXQgbGFyZ2UgdG8gZW1hY3NfcmVhZC4gICovCisgIGRvCisgICAgeworICAgICAgaWYgKGlu dGVycnVwdGlibGUpCisJbWF5YmVfcXVpdCAoKTsKKyAgICAgIHJlc3VsdCA9IHJlYWQgKGZk LCBidWYsIG5ieXRlKTsKKyAgICB9CisgIHdoaWxlIChyZXN1bHQgPCAwICYmIGVycm5vID09 IEVJTlRSKTsKIAotICB3aGlsZSAoKHJ0bnZhbCA9IHJlYWQgKGZpbGRlcywgYnVmLCBuYnl0 ZSkpID09IC0xCi0JICYmIChlcnJubyA9PSBFSU5UUikpCi0gICAgbWF5YmVfcXVpdCAoKTsK LSAgcmV0dXJuIChydG52YWwpOworICByZXR1cm4gcmVzdWx0OwogfQogCi0vKiBXcml0ZSB0 byBGSUxFREVTIGZyb20gYSBidWZmZXIgQlVGIHdpdGggc2l6ZSBOQllURSwgcmV0cnlpbmcg aWYgaW50ZXJydXB0ZWQKLSAgIG9yIGlmIGEgcGFydGlhbCB3cml0ZSBvY2N1cnMuICBJZiBp bnRlcnJ1cHRlZCwgcHJvY2VzcyBwZW5kaW5nCi0gICBzaWduYWxzIGlmIFBST0NFU1MgU0lH TkFMUy4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4sIHNldHRpbmcKLSAg IGVycm5vIGlmIHRoaXMgaXMgbGVzcyB0aGFuIE5CWVRFLiAgKi8KKy8qIFJlYWQgZnJvbSBG RCB0byBhIGJ1ZmZlciBCVUYgd2l0aCBzaXplIE5CWVRFLgorICAgSWYgaW50ZXJydXB0ZWQs IHJldHJ5IHRoZSByZWFkLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCwKKyAg IHdoaWNoIG1pZ2h0IGJlIGxlc3MgdGhhbiBOQllURS4gIE9uIGVycm9yLCBzZXQgZXJybm8g dG8gYSB2YWx1ZQorICAgb3RoZXIgdGhhbiBFSU5UUiwgYW5kIHJldHVybiAtMS4gICovCitw dHJkaWZmX3QKK2VtYWNzX3JlYWQgKGludCBmZCwgdm9pZCAqYnVmLCBwdHJkaWZmX3QgbmJ5 dGUpCit7CisgIHJldHVybiBlbWFjc19ub2ludHJfcmVhZCAoZmQsIGJ1ZiwgbmJ5dGUsIGZh bHNlKTsKK30KKworLyogTGlrZSBlbWFjc19yZWFkLCBidXQgYWxzbyBwcm9jZXNzIHF1aXRz IGFuZCBwZW5kaW5nIHNpZ25hbHMuICAqLworcHRyZGlmZl90CitlbWFjc19yZWFkX3F1aXQg KGludCBmZCwgdm9pZCAqYnVmLCBwdHJkaWZmX3QgbmJ5dGUpCit7CisgIHJldHVybiBlbWFj c19ub2ludHJfcmVhZCAoZmQsIGJ1ZiwgbmJ5dGUsIHRydWUpOworfQorCisvKiBXcml0ZSB0 byBGSUxFREVTIGZyb20gYSBidWZmZXIgQlVGIHdpdGggc2l6ZSBOQllURSwgcmV0cnlpbmcg aWYKKyAgIGludGVycnVwdGVkIG9yIGlmIGEgcGFydGlhbCB3cml0ZSBvY2N1cnMuICBQcm9j ZXNzIGFueSBxdWl0cworICAgaW1tZWRpYXRlbHkgaWYgSU5URVJSVVBUSUJMRSBpcyBwb3Np dGl2ZSwgYW5kIHByb2Nlc3MgYW55IHBlbmRpbmcKKyAgIHNpZ25hbHMgaW1tZWRpYXRlbHkg aWYgSU5URVJSVVBUSUJMRSBpcyBub256ZXJvLiAgUmV0dXJuIHRoZSBudW1iZXIKKyAgIG9m IGJ5dGVzIHdyaXR0ZW47IGlmIHRoaXMgaXMgbGVzcyB0aGFuIE5CWVRFLCBzZXQgZXJybm8g dG8gYSB2YWx1ZQorICAgb3RoZXIgdGhhbiBFSU5UUi4gICovCiBzdGF0aWMgcHRyZGlmZl90 Ci1lbWFjc19mdWxsX3dyaXRlIChpbnQgZmlsZGVzLCBjaGFyIGNvbnN0ICpidWYsIHB0cmRp ZmZfdCBuYnl0ZSwKLQkJICBib29sIHByb2Nlc3Nfc2lnbmFscykKK2VtYWNzX2Z1bGxfd3Jp dGUgKGludCBmZCwgY2hhciBjb25zdCAqYnVmLCBwdHJkaWZmX3QgbmJ5dGUsCisJCSAgaW50 IGludGVycnVwdGlibGUpCiB7CiAgIHB0cmRpZmZfdCBieXRlc193cml0dGVuID0gMDsKIAog ICB3aGlsZSAobmJ5dGUgPiAwKQogICAgIHsKLSAgICAgIHNzaXplX3QgbiA9IHdyaXRlIChm aWxkZXMsIGJ1ZiwgbWluIChuYnl0ZSwgTUFYX1JXX0NPVU5UKSk7CisgICAgICBzc2l6ZV90 IG4gPSB3cml0ZSAoZmQsIGJ1ZiwgbWluIChuYnl0ZSwgTUFYX1JXX0NPVU5UKSk7CiAKICAg ICAgIGlmIChuIDwgMCkKIAl7Ci0JICBpZiAoZXJybm8gPT0gRUlOVFIpCisJICBpZiAoZXJy bm8gIT0gRUlOVFIpCisJICAgIGJyZWFrOworCisJICBpZiAoaW50ZXJydXB0aWJsZSkKIAkg ICAgewotCSAgICAgIC8qIEkgb3JpZ2luYWxseSB1c2VkIG1heWJlX3F1aXQgYnV0IHRoYXQg bWlnaHQgY2F1c2UgZmlsZXMgdG8KLQkJIGJlIHRydW5jYXRlZCBpZiB5b3UgaGl0IEMtZyBp biB0aGUgbWlkZGxlIG9mIGl0LiAgLS1TdGVmICAqLwotCSAgICAgIGlmIChwcm9jZXNzX3Np Z25hbHMgJiYgcGVuZGluZ19zaWduYWxzKQorCSAgICAgIGlmICgwIDwgaW50ZXJydXB0aWJs ZSkKKwkJbWF5YmVfcXVpdCAoKTsKKwkgICAgICBpZiAocGVuZGluZ19zaWduYWxzKQogCQlw cm9jZXNzX3BlbmRpbmdfc2lnbmFscyAoKTsKLQkgICAgICBjb250aW51ZTsKIAkgICAgfQot CSAgZWxzZQotCSAgICBicmVhazsKIAl9Ci0KLSAgICAgIGJ1ZiArPSBuOwotICAgICAgbmJ5 dGUgLT0gbjsKLSAgICAgIGJ5dGVzX3dyaXR0ZW4gKz0gbjsKKyAgICAgIGVsc2UKKwl7CisJ ICBidWYgKz0gbjsKKwkgIG5ieXRlIC09IG47CisJICBieXRlc193cml0dGVuICs9IG47CisJ fQogICAgIH0KIAogICByZXR1cm4gYnl0ZXNfd3JpdHRlbjsKIH0KIAotLyogV3JpdGUgdG8g RklMRURFUyBmcm9tIGEgYnVmZmVyIEJVRiB3aXRoIHNpemUgTkJZVEUsIHJldHJ5aW5nIGlm Ci0gICBpbnRlcnJ1cHRlZCBvciBpZiBhIHBhcnRpYWwgd3JpdGUgb2NjdXJzLiAgUmV0dXJu IHRoZSBudW1iZXIgb2YKLSAgIGJ5dGVzIHdyaXR0ZW4sIHNldHRpbmcgZXJybm8gaWYgdGhp cyBpcyBsZXNzIHRoYW4gTkJZVEUuICAqLworLyogV3JpdGUgdG8gRkQgZnJvbSBhIGJ1ZmZl ciBCVUYgd2l0aCBzaXplIE5CWVRFLCByZXRyeWluZyBpZgorICAgaW50ZXJydXB0ZWQgb3Ig aWYgYSBwYXJ0aWFsIHdyaXRlIG9jY3Vycy4gIERvIG5vdCBwcm9jZXNzIHF1aXRzIG9yCisg ICBwZW5kaW5nIHNpZ25hbHMuICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVu LCBzZXR0aW5nIGVycm5vCisgICBpZiB0aGlzIGlzIGxlc3MgdGhhbiBOQllURS4gICovCitw dHJkaWZmX3QKK2VtYWNzX3dyaXRlIChpbnQgZmQsIHZvaWQgY29uc3QgKmJ1ZiwgcHRyZGlm Zl90IG5ieXRlKQoreworICByZXR1cm4gZW1hY3NfZnVsbF93cml0ZSAoZmQsIGJ1ZiwgbmJ5 dGUsIDApOworfQorCisvKiBMaWtlIGVtYWNzX3dyaXRlLCBidXQgYWxzbyBwcm9jZXNzIHBl bmRpbmcgc2lnbmFscy4gICovCiBwdHJkaWZmX3QKLWVtYWNzX3dyaXRlIChpbnQgZmlsZGVz LCB2b2lkIGNvbnN0ICpidWYsIHB0cmRpZmZfdCBuYnl0ZSkKK2VtYWNzX3dyaXRlX3NpZyAo aW50IGZkLCB2b2lkIGNvbnN0ICpidWYsIHB0cmRpZmZfdCBuYnl0ZSkKIHsKLSAgcmV0dXJu IGVtYWNzX2Z1bGxfd3JpdGUgKGZpbGRlcywgYnVmLCBuYnl0ZSwgMCk7CisgIHJldHVybiBl bWFjc19mdWxsX3dyaXRlIChmZCwgYnVmLCBuYnl0ZSwgLTEpOwogfQogCi0vKiBMaWtlIGVt YWNzX3dyaXRlLCBidXQgYWxzbyBwcm9jZXNzIHBlbmRpbmcgc2lnbmFscyBpZiBpbnRlcnJ1 cHRlZC4gICovCisvKiBMaWtlIGVtYWNzX3dyaXRlLCBidXQgYWxzbyBwcm9jZXNzIHF1aXRz IGFuZCBwZW5kaW5nIHNpZ25hbHMuICAqLwogcHRyZGlmZl90Ci1lbWFjc193cml0ZV9zaWcg KGludCBmaWxkZXMsIHZvaWQgY29uc3QgKmJ1ZiwgcHRyZGlmZl90IG5ieXRlKQorZW1hY3Nf d3JpdGVfcXVpdCAoaW50IGZkLCB2b2lkIGNvbnN0ICpidWYsIHB0cmRpZmZfdCBuYnl0ZSkK IHsKLSAgcmV0dXJuIGVtYWNzX2Z1bGxfd3JpdGUgKGZpbGRlcywgYnVmLCBuYnl0ZSwgMSk7 CisgIHJldHVybiBlbWFjc19mdWxsX3dyaXRlIChmZCwgYnVmLCBuYnl0ZSwgMSk7CiB9CiAK IC8qIFdyaXRlIGEgZGlhZ25vc3RpYyB0byBzdGFuZGFyZCBlcnJvciB0aGF0IGNvbnRhaW5z IE1FU1NBR0UgYW5kIGEKICAgIHN0cmluZyBkZXJpdmVkIGZyb20gZXJybm8uICBQcmVzZXJ2 ZSBlcnJuby4gIERvIG5vdCBidWZmZXIgc3RkZXJyLgotICAgRG8gbm90IHByb2Nlc3MgcGVu ZGluZyBzaWduYWxzIGlmIGludGVycnVwdGVkLiAgKi8KKyAgIERvIG5vdCBwcm9jZXNzIHF1 aXRzIG9yIHBlbmRpbmcgc2lnbmFscyBpZiBpbnRlcnJ1cHRlZC4gICovCiB2b2lkCiBlbWFj c19wZXJyb3IgKGNoYXIgY29uc3QgKm1lc3NhZ2UpCiB7CkBAIC0zMTY4LDcgKzMyMDcsNyBA QCBzeXN0ZW1fcHJvY2Vzc19hdHRyaWJ1dGVzIChMaXNwX09iamVjdCBwaWQpCiAgIGVsc2UK ICAgICB7CiAgICAgICByZWNvcmRfdW53aW5kX3Byb3RlY3RfaW50IChjbG9zZV9maWxlX3Vu d2luZCwgZmQpOwotICAgICAgbnJlYWQgPSBlbWFjc19yZWFkIChmZCwgcHJvY2J1Ziwgc2l6 ZW9mIHByb2NidWYgLSAxKTsKKyAgICAgIG5yZWFkID0gZW1hY3NfcmVhZF9xdWl0IChmZCwg cHJvY2J1Ziwgc2l6ZW9mIHByb2NidWYgLSAxKTsKICAgICB9CiAgIGlmICgwIDwgbnJlYWQp CiAgICAgewpAQCAtMzI4OSw3ICszMzI4LDcgQEAgc3lzdGVtX3Byb2Nlc3NfYXR0cmlidXRl cyAoTGlzcF9PYmplY3QgcGlkKQogCSAgLyogTGVhdmUgcm9vbSBldmVuIGlmIGV2ZXJ5IGJ5 dGUgbmVlZHMgZXNjYXBpbmcgYmVsb3cuICAqLwogCSAgcmVhZHNpemUgPSAoY21kbGluZV9z aXplID4+IDEpIC0gbnJlYWQ7CiAKLQkgIG5yZWFkX2luY3IgPSBlbWFjc19yZWFkIChmZCwg Y21kbGluZSArIG5yZWFkLCByZWFkc2l6ZSk7CisJICBucmVhZF9pbmNyID0gZW1hY3NfcmVh ZF9xdWl0IChmZCwgY21kbGluZSArIG5yZWFkLCByZWFkc2l6ZSk7CiAJICBucmVhZCArPSBt YXggKDAsIG5yZWFkX2luY3IpOwogCX0KICAgICAgIHdoaWxlIChucmVhZF9pbmNyID09IHJl YWRzaXplKTsKQEAgLTM0MDIsNyArMzQ0MSw3IEBAIHN5c3RlbV9wcm9jZXNzX2F0dHJpYnV0 ZXMgKExpc3BfT2JqZWN0IHBpZCkKICAgZWxzZQogICAgIHsKICAgICAgIHJlY29yZF91bndp bmRfcHJvdGVjdF9pbnQgKGNsb3NlX2ZpbGVfdW53aW5kLCBmZCk7Ci0gICAgICBucmVhZCA9 IGVtYWNzX3JlYWQgKGZkLCAmcGluZm8sIHNpemVvZiBwaW5mbyk7CisgICAgICBucmVhZCA9 IGVtYWNzX3JlYWRfcXVpdCAoZmQsICZwaW5mbywgc2l6ZW9mIHBpbmZvKTsKICAgICB9CiAK ICAgaWYgKG5yZWFkID09IHNpemVvZiBwaW5mbykKLS0gCjIuOS4zCgo= --------------34CC71419F9E78E8F2F005B7 Content-Type: application/x-patch; name="0003-Fix-quitting-bug-when-buffers-are-frozen.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0003-Fix-quitting-bug-when-buffers-are-frozen.patch" RnJvbSA1MWRmMTJhY2MwMGM5MTYyOWRmMmVmODU1MTI4OTc4NDU1Njk1MGZmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBNb24sIDMwIEphbiAyMDE3IDEzOjMwOjA3IC0wODAwClN1YmplY3Q6IFtQQVRD SCAzLzNdIEZpeCBxdWl0dGluZyBidWcgd2hlbiBidWZmZXJzIGFyZSBmcm96ZW4KClByb2Js ZW0gbm90ZWQgYnkgRWxpIFphcmV0c2tpaSBpbjoKaHR0cDovL2xpc3RzLmdudS5vcmcvYXJj aGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMTctMDEvbXNnMDA3MjEuaHRtbApUaGlzIHBhdGNo IGFsc28gZml4ZXMgc29tZSBvdGhlciBpc3N1ZXMgaW4gdGhhdCByZXBvcnQuCiogc3JjL2xp c3AuaCAoaW5jcl9yYXJlbHlfcXVpdCk6IFJlbW92ZS4KQWxsIGNhbGxlcnMgY2hhbmdlZCB0 byB1c2UgcmFyZWx5X3F1aXQgZGlyZWN0bHkuCiogc3JjL3NlYXJjaC5jIChmcmVlemVfYnVm ZmVyX3JlbG9jYXRpb24pCih0aGF3X2J1ZmZlcl9yZWxvY2F0aW9uKTogTmV3IGZ1bmN0aW9u cy4KKGxvb2tpbmdfYXRfMSwgZmFzdF9sb29raW5nX2F0LCBzZWFyY2hfYnVmZmVyKToKVXNl IHRoZW0gdG8gZml4IGJ1ZyB3aGVuIHF1aXR0aW5nIHdoZW4gYnVmZmVycyBhcmUgZnJvemVu LgoqIHNyYy9zeXNkZXAuYyAoZW1hY3NfaW50cl9yZWFkKTogUmVuYW1lIGZyb20gZW1hY3Nf bm9pbnRyX3JlYWQuCkFsbCB1c2VzIGNoYW5nZWQuCi0tLQogc3JjL2NhbGxwcm9jLmMgfCAg MyArKysKIHNyYy9mbnMuYyAgICAgIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0KIHNyYy9pbmRlbnQuYyAgIHwgIDYgKysrLS0tCiBzcmMvbGlzcC5oICAgICB8ICA4 IC0tLS0tLS0tCiBzcmMvc2VhcmNoLmMgICB8IDU3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL3N5bnRheC5jICAgfCAz NCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvc3lzZGVwLmMgICB8 IDEwICsrKysrLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgODAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2NhbGxwcm9jLmMgYi9zcmMvY2FsbHBy b2MuYwppbmRleCA3MTAxNzRjLi44NDMyNGM0IDEwMDY0NAotLS0gYS9zcmMvY2FsbHByb2Mu YworKysgYi9zcmMvY2FsbHByb2MuYwpAQCAtMTk4LDcgKzE5OCwxMCBAQCBjYWxsX3Byb2Nl c3NfY2xlYW51cCAoTGlzcF9PYmplY3QgYnVmZmVyKQogICAgIHsKICAgICAgIGtpbGwgKC1z eW5jaF9wcm9jZXNzX3BpZCwgU0lHSU5UKTsKICAgICAgIG1lc3NhZ2UxICgiV2FpdGluZyBm b3IgcHJvY2VzcyB0byBkaWUuLi4odHlwZSBDLWcgYWdhaW4gdG8ga2lsbCBpdCBpbnN0YW50 bHkpIik7CisKKyAgICAgIC8qIFRoaXMgd2lsbCBxdWl0IG9uIEMtZy4gICovCiAgICAgICB3 YWl0X2Zvcl90ZXJtaW5hdGlvbiAoc3luY2hfcHJvY2Vzc19waWQsIDAsIDEpOworCiAgICAg ICBzeW5jaF9wcm9jZXNzX3BpZCA9IDA7CiAgICAgICBtZXNzYWdlMSAoIldhaXRpbmcgZm9y IHByb2Nlc3MgdG8gZGllLi4uZG9uZSIpOwogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9mbnMu YyBiL3NyYy9mbnMuYwppbmRleCA0MWMwYzU4Li5hYzdjMWYyIDEwMDY0NAotLS0gYS9zcmMv Zm5zLmMKKysrIGIvc3JjL2Zucy5jCkBAIC0xMzg5LDcgKzEzODksNyBAQCBUaGUgdmFsdWUg aXMgYWN0dWFsbHkgdGhlIHRhaWwgb2YgTElTVCB3aG9zZSBjYXIgaXMgRUxULiAgKi8pCiAg ICAgewogICAgICAgaWYgKCEgTklMUCAoRmVxdWFsIChlbHQsIFhDQVIgKHRhaWwpKSkpCiAJ cmV0dXJuIHRhaWw7Ci0gICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7Cisg ICAgICByYXJlbHlfcXVpdCAoKytxdWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNLX0xJU1Rf RU5EICh0YWlsLCBsaXN0KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0xNDA2LDcgKzE0MDYsNyBA QCBUaGUgdmFsdWUgaXMgYWN0dWFsbHkgdGhlIHRhaWwgb2YgTElTVCB3aG9zZSBjYXIgaXMg RUxULiAgKi8pCiAgICAgewogICAgICAgaWYgKEVRIChYQ0FSICh0YWlsKSwgZWx0KSkKIAly ZXR1cm4gdGFpbDsKLSAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKyAg ICAgIHJhcmVseV9xdWl0ICgrK3F1aXRfY291bnQpOwogICAgIH0KICAgQ0hFQ0tfTElTVF9F TkQgKHRhaWwsIGxpc3QpOwogICByZXR1cm4gUW5pbDsKQEAgLTE0MjcsNyArMTQyNyw3IEBA IFRoZSB2YWx1ZSBpcyBhY3R1YWxseSB0aGUgdGFpbCBvZiBMSVNUIHdob3NlIGNhciBpcyBF TFQuICAqLykKICAgICAgIExpc3BfT2JqZWN0IHRlbSA9IFhDQVIgKHRhaWwpOwogICAgICAg aWYgKEZMT0FUUCAodGVtKSAmJiBpbnRlcm5hbF9lcXVhbCAoZWx0LCB0ZW0sIDAsIDAsIFFu aWwpKQogCXJldHVybiB0YWlsOwotICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291 bnQpOworICAgICAgcmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAgICAgfQogICBDSEVD S19MSVNUX0VORCAodGFpbCwgbGlzdCk7CiAgIHJldHVybiBRbmlsOwpAQCAtMTQ0NSw3ICsx NDQ1LDcgQEAgRWxlbWVudHMgb2YgTElTVCB0aGF0IGFyZSBub3QgY29uc2VzIGFyZSBpZ25v cmVkLiAgKi8pCiAgICAgewogICAgICAgaWYgKENPTlNQIChYQ0FSICh0YWlsKSkgJiYgRVEg KFhDQVIgKFhDQVIgKHRhaWwpKSwga2V5KSkKIAlyZXR1cm4gWENBUiAodGFpbCk7Ci0gICAg ICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisgICAgICByYXJlbHlfcXVpdCAo KytxdWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0KTsK ICAgcmV0dXJuIFFuaWw7CkBAIC0xNDc2LDcgKzE0NzYsNyBAQCBUaGUgdmFsdWUgaXMgYWN0 dWFsbHkgdGhlIGZpcnN0IGVsZW1lbnQgb2YgTElTVCB3aG9zZSBjYXIgZXF1YWxzIEtFWS4g ICovKQogICAgICAgaWYgKENPTlNQIChjYXIpCiAJICAmJiAoRVEgKFhDQVIgKGNhciksIGtl eSkgfHwgIU5JTFAgKEZlcXVhbCAoWENBUiAoY2FyKSwga2V5KSkpKQogCXJldHVybiBjYXI7 Ci0gICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisgICAgICByYXJlbHlf cXVpdCAoKytxdWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBs aXN0KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0xNTA5LDcgKzE1MDksNyBAQCBUaGUgdmFsdWUg aXMgYWN0dWFsbHkgdGhlIGZpcnN0IGVsZW1lbnQgb2YgTElTVCB3aG9zZSBjZHIgaXMgS0VZ LiAgKi8pCiAgICAgewogICAgICAgaWYgKENPTlNQIChYQ0FSICh0YWlsKSkgJiYgRVEgKFhD RFIgKFhDQVIgKHRhaWwpKSwga2V5KSkKIAlyZXR1cm4gWENBUiAodGFpbCk7Ci0gICAgICBp bmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisgICAgICByYXJlbHlfcXVpdCAoKytx dWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0KTsKICAg cmV0dXJuIFFuaWw7CkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBUaGUgdmFsdWUgaXMgYWN0dWFs bHkgdGhlIGZpcnN0IGVsZW1lbnQgb2YgTElTVCB3aG9zZSBjZHIgZXF1YWxzIEtFWS4gICov KQogICAgICAgaWYgKENPTlNQIChjYXIpCiAJICAmJiAoRVEgKFhDRFIgKGNhciksIGtleSkg fHwgIU5JTFAgKEZlcXVhbCAoWENEUiAoY2FyKSwga2V5KSkpKQogCXJldHVybiBjYXI7Ci0g ICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisgICAgICByYXJlbHlfcXVp dCAoKytxdWl0X2NvdW50KTsKICAgICB9CiAgIENIRUNLX0xJU1RfRU5EICh0YWlsLCBsaXN0 KTsKICAgcmV0dXJuIFFuaWw7CkBAIC0xNjg0LDcgKzE2ODQsNyBAQCBjaGFuZ2luZyB0aGUg dmFsdWUgb2YgYSBzZXF1ZW5jZSBgZm9vJy4gICovKQogCSAgICB9CiAJICBlbHNlCiAJICAg IHByZXYgPSB0YWlsOwotCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworCSAg cmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJfQogICAgICAgQ0hFQ0tfTElTVF9FTkQg KHRhaWwsIHNlcSk7CiAgICAgfQpAQCAtMTcxMiw3ICsxNzEyLDcgQEAgVGhpcyBmdW5jdGlv biBtYXkgZGVzdHJ1Y3RpdmVseSBtb2RpZnkgU0VRIHRvIHByb2R1Y2UgdGhlIHZhbHVlLiAg Ki8pCiAJICBuZXh0ID0gWENEUiAodGFpbCk7CiAJICBGc2V0Y2RyICh0YWlsLCBwcmV2KTsK IAkgIHByZXYgPSB0YWlsOwotCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwor CSAgcmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJfQogICAgICAgQ0hFQ0tfTElTVF9F TkQgKHRhaWwsIHNlcSk7CiAgICAgICBzZXEgPSBwcmV2OwpAQCAtMTc1OSw3ICsxNzU5LDcg QEAgU2VlIGFsc28gdGhlIGZ1bmN0aW9uIGBucmV2ZXJzZScsIHdoaWNoIGlzIHVzZWQgbW9y ZSBvZnRlbi4gICovKQogICAgICAgZm9yIChuZXcgPSBRbmlsOyBDT05TUCAoc2VxKTsgc2Vx ID0gWENEUiAoc2VxKSkKIAl7CiAJICBuZXcgPSBGY29ucyAoWENBUiAoc2VxKSwgbmV3KTsK LQkgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKwkgIHJhcmVseV9xdWl0ICgr K3F1aXRfY291bnQpOwogCX0KICAgICAgIENIRUNLX0xJU1RfRU5EIChzZXEsIHNlcSk7CiAg ICAgfQpAQCAtMjA2Miw3ICsyMDYyLDcgQEAgVGhlIFBMSVNUIGlzIG1vZGlmaWVkIGJ5IHNp ZGUgZWZmZWN0cy4gICovKQogCX0KIAogICAgICAgcHJldiA9IHRhaWw7Ci0gICAgICBpbmNy X3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisgICAgICByYXJlbHlfcXVpdCAoKytxdWl0 X2NvdW50KTsKICAgICB9CiAgIExpc3BfT2JqZWN0IG5ld2NlbGwKICAgICA9IEZjb25zIChw cm9wLCBGY29ucyAodmFsLCBOSUxQIChwcmV2KSA/IHBsaXN0IDogWENEUiAoWENEUiAocHJl dikpKSk7CkBAIC0yMTAwLDcgKzIxMDAsNyBAQCBvbmUgb2YgdGhlIHByb3BlcnRpZXMgb24g dGhlIGxpc3QuICAqLykKICAgICB7CiAgICAgICBpZiAoISBOSUxQIChGZXF1YWwgKHByb3As IFhDQVIgKHRhaWwpKSkpCiAJcmV0dXJuIFhDQVIgKFhDRFIgKHRhaWwpKTsKLSAgICAgIGlu Y3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKyAgICAgIHJhcmVseV9xdWl0ICgrK3F1 aXRfY291bnQpOwogICAgIH0KIAogICBDSEVDS19MSVNUX0VORCAodGFpbCwgcHJvcCk7CkBA IC0yMTMwLDcgKzIxMzAsNyBAQCBUaGUgUExJU1QgaXMgbW9kaWZpZWQgYnkgc2lkZSBlZmZl Y3RzLiAgKi8pCiAJfQogCiAgICAgICBwcmV2ID0gdGFpbDsKLSAgICAgIGluY3JfcmFyZWx5 X3F1aXQgKCZxdWl0X2NvdW50KTsKKyAgICAgIHJhcmVseV9xdWl0ICgrK3F1aXRfY291bnQp OwogICAgIH0KICAgTGlzcF9PYmplY3QgbmV3Y2VsbCA9IGxpc3QyIChwcm9wLCB2YWwpOwog ICBpZiAoTklMUCAocHJldikpCkBAIC0yMjEwLDcgKzIyMTAsNyBAQCBpbnRlcm5hbF9lcXVh bCAoTGlzcF9PYmplY3QgbzEsIExpc3BfT2JqZWN0IG8yLCBpbnQgZGVwdGgsIGJvb2wgcHJv cHMsCiAKICAgdW5zaWduZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogIHRhaWxfcmVj dXJzZToKLSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworICByYXJlbHlfcXVp dCAoKytxdWl0X2NvdW50KTsKICAgaWYgKEVRIChvMSwgbzIpKQogICAgIHJldHVybiAxOwog ICBpZiAoWFRZUEUgKG8xKSAhPSBYVFlQRSAobzIpKQpAQCAtMjQxOSw3ICsyNDE5LDcgQEAg dXNhZ2U6IChuY29uYyAmcmVzdCBMSVNUUykgICovKQogCXsKIAkgIHRhaWwgPSB0ZW07CiAJ ICB0ZW0gPSBYQ0RSICh0YWlsKTsKLQkgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50 KTsKKwkgIHJhcmVseV9xdWl0ICgrK3F1aXRfY291bnQpOwogCX0KICAgICAgIHdoaWxlIChD T05TUCAodGVtKSk7CiAKQEAgLTI4NDgsNyArMjg0OCw3IEBAIFRoZSB2YWx1ZSBpcyBhY3R1 YWxseSB0aGUgdGFpbCBvZiBQTElTVCB3aG9zZSBjYXIgaXMgUFJPUC4gICovKQogICAgIHsK ICAgICAgIHBsaXN0ID0gWENEUiAocGxpc3QpOwogICAgICAgcGxpc3QgPSBDRFIgKHBsaXN0 KTsKLSAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKyAgICAgIHJhcmVs eV9xdWl0ICgrK3F1aXRfY291bnQpOwogICAgIH0KICAgcmV0dXJuIHBsaXN0OwogfQpkaWZm IC0tZ2l0IGEvc3JjL2luZGVudC5jIGIvc3JjL2luZGVudC5jCmluZGV4IGFmZjE0YWIuLmY2 MzBlYmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmRlbnQuYworKysgYi9zcmMvaW5kZW50LmMKQEAg LTEyMTUsNyArMTIxNSw3IEBAIGNvbXB1dGVfbW90aW9uIChwdHJkaWZmX3QgZnJvbSwgcHRy ZGlmZl90IGZyb21ieXRlLCBFTUFDU19JTlQgZnJvbXZwb3MsCiAKICAgd2hpbGUgKHRydWUp CiAgICAgewotICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworICAgICAg cmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAKICAgICAgIHdoaWxlIChwb3MgPT0gbmV4 dF9ib3VuZGFyeSkKIAl7CkBAIC0xMjgyLDcgKzEyODIsNyBAQCBjb21wdXRlX21vdGlvbiAo cHRyZGlmZl90IGZyb20sIHB0cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9z LAogCSAgICAgIHBvc19ieXRlID0gQ0hBUl9UT19CWVRFIChwb3MpOwogCSAgICB9CiAKLQkg IGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKwkgIHJhcmVseV9xdWl0ICgrK3F1 aXRfY291bnQpOwogCX0KIAogICAgICAgLyogSGFuZGxlIHJpZ2h0IG1hcmdpbi4gICovCkBA IC0xNjA1LDcgKzE2MDUsNyBAQCBjb21wdXRlX21vdGlvbiAocHRyZGlmZl90IGZyb20sIHB0 cmRpZmZfdCBmcm9tYnl0ZSwgRU1BQ1NfSU5UIGZyb212cG9zLAogCQkJICAgICAgcG9zID0g ZmluZF9iZWZvcmVfbmV4dF9uZXdsaW5lIChwb3MsIHRvLCAxLCAmcG9zX2J5dGUpOwogCQkJ ICAgICAgaWYgKHBvcyA8IHRvKQogCQkJCUlOQ19CT1RIIChwb3MsIHBvc19ieXRlKTsKLQkJ CSAgICAgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKwkJCSAgICAgIHJhcmVs eV9xdWl0ICgrK3F1aXRfY291bnQpOwogCQkJICAgIH0KIAkJCSAgd2hpbGUgKHBvcyA8IHRv CiAJCQkJICYmIGluZGVudGVkX2JleW9uZF9wIChwb3MsIHBvc19ieXRlLApkaWZmIC0tZ2l0 IGEvc3JjL2xpc3AuaCBiL3NyYy9saXNwLmgKaW5kZXggNTk3NmRhMS4uMDI2NGQ0ZiAxMDA2 NDQKLS0tIGEvc3JjL2xpc3AuaAorKysgYi9zcmMvbGlzcC5oCkBAIC0zMTQ1LDE0ICszMTQ1 LDYgQEAgcmFyZWx5X3F1aXQgKHVuc2lnbmVkIHNob3J0IGludCBjb3VudCkKICAgaWYgKCEg KGNvdW50ICYgKFFVSVRfQ09VTlRfSEVVUklTVElDIC0gMSkpKQogICAgIG1heWJlX3F1aXQg KCk7CiB9Ci0KLS8qIEluY3JlbWVudCAqUVVJVF9DT1VOVCBhbmQgcmFyZWx5IHF1aXQuICAq LwotCi1JTkxJTkUgdm9pZAotaW5jcl9yYXJlbHlfcXVpdCAodW5zaWduZWQgc2hvcnQgaW50 ICpxdWl0X2NvdW50KQotewotICByYXJlbHlfcXVpdCAoKysqcXVpdF9jb3VudCk7Ci19CiAM CiBleHRlcm4gTGlzcF9PYmplY3QgVmFzY2lpX2Rvd25jYXNlX3RhYmxlOwogZXh0ZXJuIExp c3BfT2JqZWN0IFZhc2NpaV9jYW5vbl90YWJsZTsKZGlmZiAtLWdpdCBhL3NyYy9zZWFyY2gu YyBiL3NyYy9zZWFyY2guYwppbmRleCAwODRhZGRhLi4zM2NiMDJhIDEwMDY0NAotLS0gYS9z cmMvc2VhcmNoLmMKKysrIGIvc3JjL3NlYXJjaC5jCkBAIC05OSw2ICs5OSwyNSBAQCBtYXRj aGVyX292ZXJmbG93ICh2b2lkKQogICBlcnJvciAoIlN0YWNrIG92ZXJmbG93IGluIHJlZ2V4 cCBtYXRjaGVyIik7CiB9CiAKK3N0YXRpYyB2b2lkCitmcmVlemVfYnVmZmVyX3JlbG9jYXRp b24gKHZvaWQpCit7CisjaWZkZWYgUkVMX0FMTE9DCisgIC8qIFByZXZlbnQgcmFsbG9jLmMg ZnJvbSByZWxvY2F0aW5nIHRoZSBjdXJyZW50IGJ1ZmZlciB3aGlsZQorICAgICBzZWFyY2hp bmcgaXQuICAqLworICByX2FsbG9jX2luaGliaXRfYnVmZmVyX3JlbG9jYXRpb24gKDEpOwor ICByZWNvcmRfdW53aW5kX3Byb3RlY3RfaW50IChyX2FsbG9jX2luaGliaXRfYnVmZmVyX3Jl bG9jYXRpb24sIDApOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCit0aGF3X2J1ZmZlcl9y ZWxvY2F0aW9uICh2b2lkKQoreworI2lmZGVmIFJFTF9BTExPQworICB1bmJpbmRfdG8gKFNQ RUNQRExfSU5ERVggKCkgLSAxLCBRbmlsKTsKKyNlbmRpZgorfQorCiAvKiBDb21waWxlIGEg cmVnZXhwIGFuZCBzaWduYWwgYSBMaXNwIGVycm9yIGlmIGFueXRoaW5nIGdvZXMgd3Jvbmcu CiAgICBQQVRURVJOIGlzIHRoZSBwYXR0ZXJuIHRvIGNvbXBpbGUuCiAgICBDUCBpcyB0aGUg cGxhY2UgdG8gcHV0IHRoZSByZXN1bHQuCkBAIC0zMDAsMTkgKzMxOSwxMyBAQCBsb29raW5n X2F0XzEgKExpc3BfT2JqZWN0IHN0cmluZywgYm9vbCBwb3NpeCkKIAogICByZV9tYXRjaF9v YmplY3QgPSBRbmlsOwogCi0jaWZkZWYgUkVMX0FMTE9DCi0gIC8qIFByZXZlbnQgcmFsbG9j LmMgZnJvbSByZWxvY2F0aW5nIHRoZSBjdXJyZW50IGJ1ZmZlciB3aGlsZQotICAgICBzZWFy Y2hpbmcgaXQuICAqLwotICByX2FsbG9jX2luaGliaXRfYnVmZmVyX3JlbG9jYXRpb24gKDEp OwotI2VuZGlmCisgIGZyZWV6ZV9idWZmZXJfcmVsb2NhdGlvbiAoKTsKICAgaSA9IHJlX21h dGNoXzIgKGJ1ZnAsIChjaGFyICopIHAxLCBzMSwgKGNoYXIgKikgcDIsIHMyLAogCQkgIFBU X0JZVEUgLSBCRUdWX0JZVEUsCiAJCSAgKE5JTFAgKFZpbmhpYml0X2NoYW5naW5nX21hdGNo X2RhdGEpCiAJCSAgID8gJnNlYXJjaF9yZWdzIDogTlVMTCksCiAJCSAgWlZfQllURSAtIEJF R1ZfQllURSk7Ci0jaWZkZWYgUkVMX0FMTE9DCi0gIHJfYWxsb2NfaW5oaWJpdF9idWZmZXJf cmVsb2NhdGlvbiAoMCk7Ci0jZW5kaWYKKyAgdGhhd19idWZmZXJfcmVsb2NhdGlvbiAoKTsK IAogICBpZiAoaSA9PSAtMikKICAgICBtYXRjaGVyX292ZXJmbG93ICgpOwpAQCAtNTUzLDE2 ICs1NjYsMTAgQEAgZmFzdF9sb29raW5nX2F0IChMaXNwX09iamVjdCByZWdleHAsIHB0cmRp ZmZfdCBwb3MsIHB0cmRpZmZfdCBwb3NfYnl0ZSwKICAgICB9CiAKICAgYnVmID0gY29tcGls ZV9wYXR0ZXJuIChyZWdleHAsIDAsIFFuaWwsIDAsIG11bHRpYnl0ZSk7Ci0jaWZkZWYgUkVM X0FMTE9DCi0gIC8qIFByZXZlbnQgcmFsbG9jLmMgZnJvbSByZWxvY2F0aW5nIHRoZSBjdXJy ZW50IGJ1ZmZlciB3aGlsZQotICAgICBzZWFyY2hpbmcgaXQuICAqLwotICByX2FsbG9jX2lu aGliaXRfYnVmZmVyX3JlbG9jYXRpb24gKDEpOwotI2VuZGlmCisgIGZyZWV6ZV9idWZmZXJf cmVsb2NhdGlvbiAoKTsKICAgbGVuID0gcmVfbWF0Y2hfMiAoYnVmLCAoY2hhciAqKSBwMSwg czEsIChjaGFyICopIHAyLCBzMiwKIAkJICAgIHBvc19ieXRlLCBOVUxMLCBsaW1pdF9ieXRl KTsKLSNpZmRlZiBSRUxfQUxMT0MKLSAgcl9hbGxvY19pbmhpYml0X2J1ZmZlcl9yZWxvY2F0 aW9uICgwKTsKLSNlbmRpZgorICB0aGF3X2J1ZmZlcl9yZWxvY2F0aW9uICgpOwogCiAgIHJl dHVybiBsZW47CiB9CkBAIC0xMjA0LDExICsxMjExLDcgQEAgc2VhcmNoX2J1ZmZlciAoTGlz cF9PYmplY3Qgc3RyaW5nLCBwdHJkaWZmX3QgcG9zLCBwdHJkaWZmX3QgcG9zX2J5dGUsCiAJ fQogICAgICAgcmVfbWF0Y2hfb2JqZWN0ID0gUW5pbDsKIAotI2lmZGVmIFJFTF9BTExPQwot ICAvKiBQcmV2ZW50IHJhbGxvYy5jIGZyb20gcmVsb2NhdGluZyB0aGUgY3VycmVudCBidWZm ZXIgd2hpbGUKLSAgICAgc2VhcmNoaW5nIGl0LiAgKi8KLSAgcl9hbGxvY19pbmhpYml0X2J1 ZmZlcl9yZWxvY2F0aW9uICgxKTsKLSNlbmRpZgorICAgICAgZnJlZXplX2J1ZmZlcl9yZWxv Y2F0aW9uICgpOwogCiAgICAgICB3aGlsZSAobiA8IDApCiAJewpAQCAtMTI1MCw5ICsxMjUz LDcgQEAgc2VhcmNoX2J1ZmZlciAoTGlzcF9PYmplY3Qgc3RyaW5nLCBwdHJkaWZmX3QgcG9z LCBwdHJkaWZmX3QgcG9zX2J5dGUsCiAJICAgIH0KIAkgIGVsc2UKIAkgICAgewotI2lmZGVm IFJFTF9BTExPQwotICAgICAgICAgICAgICByX2FsbG9jX2luaGliaXRfYnVmZmVyX3JlbG9j YXRpb24gKDApOwotI2VuZGlmCisJICAgICAgdGhhd19idWZmZXJfcmVsb2NhdGlvbiAoKTsK IAkgICAgICByZXR1cm4gKG4pOwogCSAgICB9CiAJICBuKys7CkBAIC0xMjk1LDE3ICsxMjk2 LDEzIEBAIHNlYXJjaF9idWZmZXIgKExpc3BfT2JqZWN0IHN0cmluZywgcHRyZGlmZl90IHBv cywgcHRyZGlmZl90IHBvc19ieXRlLAogCSAgICB9CiAJICBlbHNlCiAJICAgIHsKLSNpZmRl ZiBSRUxfQUxMT0MKLSAgICAgICAgICAgICAgcl9hbGxvY19pbmhpYml0X2J1ZmZlcl9yZWxv Y2F0aW9uICgwKTsKLSNlbmRpZgorCSAgICAgIHRoYXdfYnVmZmVyX3JlbG9jYXRpb24gKCk7 CiAJICAgICAgcmV0dXJuICgwIC0gbik7CiAJICAgIH0KIAkgIG4tLTsKIAkgIG1heWJlX3F1 aXQgKCk7CiAJfQotI2lmZGVmIFJFTF9BTExPQwotICAgICAgcl9hbGxvY19pbmhpYml0X2J1 ZmZlcl9yZWxvY2F0aW9uICgwKTsKLSNlbmRpZgorICAgICAgdGhhd19idWZmZXJfcmVsb2Nh dGlvbiAoKTsKICAgICAgIHJldHVybiAocG9zKTsKICAgICB9CiAgIGVsc2UJCQkJLyogbm9u LVJFIGNhc2UgKi8KZGlmZiAtLWdpdCBhL3NyYy9zeW50YXguYyBiL3NyYy9zeW50YXguYwpp bmRleCAwNmZlNTBiLi43YWE0M2U2IDEwMDY0NAotLS0gYS9zcmMvc3ludGF4LmMKKysrIGIv c3JjL3N5bnRheC5jCkBAIC01OTMsNyArNTkzLDYgQEAgc3RhdGljIHB0cmRpZmZfdAogZmlu ZF9kZWZ1bl9zdGFydCAocHRyZGlmZl90IHBvcywgcHRyZGlmZl90IHBvc19ieXRlKQogewog ICBwdHJkaWZmX3Qgb3BvaW50ID0gUFQsIG9wb2ludF9ieXRlID0gUFRfQllURTsKLSAgdW5z aWduZWQgc2hvcnQgaW50IHF1aXRfY291bnQgPSAwOwogCiAgIC8qIFVzZSBwcmV2aW91cyBm aW5kaW5nLCBpZiBpdCdzIHZhbGlkIGFuZCBhcHBsaWVzIHRvIHRoaXMgaW5xdWlyeS4gICov CiAgIGlmIChjdXJyZW50X2J1ZmZlciA9PSBmaW5kX3N0YXJ0X2J1ZmZlcgpAQCAtNjM2LDcg KzYzNSw2IEBAIGZpbmRfZGVmdW5fc3RhcnQgKHB0cmRpZmZfdCBwb3MsIHB0cmRpZmZfdCBw b3NfYnl0ZSkKIAl9CiAgICAgICAvKiBNb3ZlIHRvIGJlZyBvZiBwcmV2aW91cyBsaW5lLiAg Ki8KICAgICAgIHNjYW5fbmV3bGluZSAoUFQsIFBUX0JZVEUsIEJFR1YsIEJFR1ZfQllURSwg LTIsIDEpOwotICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOwogICAgIH0K IAogICAvKiBSZWNvcmQgd2hhdCB3ZSBmb3VuZCwgZm9yIHRoZSBuZXh0IHRyeS4gICovCkBA IC03MjUsNyArNzIzLDcgQEAgYmFja19jb21tZW50IChwdHJkaWZmX3QgZnJvbSwgcHRyZGlm Zl90IGZyb21fYnl0ZSwgcHRyZGlmZl90IHN0b3AsCiAgICAgIHRoYXQgZGV0ZXJtaW5lcyBx dW90ZSBwYXJpdHkgdG8gdGhlIGNvbW1lbnQtZW5kLiAgKi8KICAgd2hpbGUgKGZyb20gIT0g c3RvcCkKICAgICB7Ci0gICAgICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7Cisg ICAgICByYXJlbHlfcXVpdCAoKytxdWl0X2NvdW50KTsKIAogICAgICAgcHRyZGlmZl90IHRl bXBfYnl0ZTsKICAgICAgIGludCBwcmV2X3N5bnRheDsKQEAgLTk1NCw3ICs5NTIsNyBAQCBi YWNrX2NvbW1lbnQgKHB0cmRpZmZfdCBmcm9tLCBwdHJkaWZmX3QgZnJvbV9ieXRlLCBwdHJk aWZmX3Qgc3RvcCwKIAkJICBkZWZ1bl9zdGFydF9ieXRlID0gQ0hBUl9UT19CWVRFIChkZWZ1 bl9zdGFydCk7CiAJCX0KIAkgICAgfQotCSAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291 bnQpOworCSAgcmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJfQogICAgICAgd2hpbGUg KGRlZnVuX3N0YXJ0IDwgY29tbWVudF9lbmQpOwogCkBAIC0yMzg2LDcgKzIzODQsNyBAQCBm b3J3X2NvbW1lbnQgKHB0cmRpZmZfdCBmcm9tLCBwdHJkaWZmX3QgZnJvbV9ieXRlLCBwdHJk aWZmX3Qgc3RvcCwKIAkgIG5lc3RpbmcrKzsKIAl9CiAKLSAgICAgIGluY3JfcmFyZWx5X3F1 aXQgKCZxdWl0X2NvdW50KTsKKyAgICAgIHJhcmVseV9xdWl0ICgrK3F1aXRfY291bnQpOwog ICAgIH0KICAgKmNoYXJwb3NfcHRyID0gZnJvbTsKICAgKmJ5dGVwb3NfcHRyID0gZnJvbV9i eXRlOwpAQCAtMjQ2MCw3ICsyNDU4LDcgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3Ro ZXJ3aXNlIHJldHVybiBuaWwuICAqLykKIAkgICAgICBJTkNfQk9USCAoZnJvbSwgZnJvbV9i eXRlKTsKIAkgICAgICBVUERBVEVfU1lOVEFYX1RBQkxFX0ZPUldBUkQgKGZyb20pOwogCSAg ICB9Ci0JICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJICByYXJlbHlfcXVp dCAoKytxdWl0X2NvdW50KTsKIAl9CiAgICAgICB3aGlsZSAoY29kZSA9PSBTd2hpdGVzcGFj ZSB8fCAoY29kZSA9PSBTZW5kY29tbWVudCAmJiBjID09ICdcbicpKTsKIApAQCAtMjU0NCw3 ICsyNTQyLDcgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsgb3RoZXJ3aXNlIHJldHVybiBu aWwuICAqLykKIAkJICAgIH0KIAkJICBlbHNlIGlmIChmcm9tID09IHN0b3ApCiAJCSAgICBi cmVhazsKLQkJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJCSAgcmFyZWx5 X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJCX0KIAkgICAgICBpZiAoZmVuY2VfZm91bmQgPT0g MCkKIAkJewpAQCAtMjU5Miw3ICsyNTkwLDcgQEAgYmV0d2VlbiB0aGVtLCByZXR1cm4gdDsg b3RoZXJ3aXNlIHJldHVybiBuaWwuICAqLykKIAkgICAgICByZXR1cm4gUW5pbDsKIAkgICAg fQogCi0JICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJICByYXJlbHlfcXVp dCAoKytxdWl0X2NvdW50KTsKIAl9CiAKICAgICAgIGNvdW50MSsrOwpAQCAtMjY0OCw3ICsy NjQ2LDcgQEAgc2Nhbl9saXN0cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBjb3VudCwg RU1BQ1NfSU5UIGRlcHRoLCBib29sIHNleHBmbGFnKQogICAgIHsKICAgICAgIHdoaWxlIChm cm9tIDwgc3RvcCkKIAl7Ci0JICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJ ICByYXJlbHlfcXVpdCAoKytxdWl0X2NvdW50KTsKIAkgIGJvb2wgY29tc3RhcnRfZmlyc3Qs IHByZWZpeDsKIAkgIGludCBzeW50YXgsIG90aGVyX3N5bnRheDsKIAkgIFVQREFURV9TWU5U QVhfVEFCTEVfRk9SV0FSRCAoZnJvbSk7CkBAIC0yNzE3LDcgKzI3MTUsNyBAQCBzY2FuX2xp c3RzIChFTUFDU19JTlQgZnJvbSwgRU1BQ1NfSU5UIGNvdW50LCBFTUFDU19JTlQgZGVwdGgs IGJvb2wgc2V4cGZsYWcpCiAJCSAgICAgIGdvdG8gZG9uZTsKIAkJICAgIH0KIAkJICBJTkNf Qk9USCAoZnJvbSwgZnJvbV9ieXRlKTsKLQkJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9j b3VudCk7CisJCSAgcmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJCX0KIAkgICAgICBn b3RvIGRvbmU7CiAKQEAgLTI3ODksNyArMjc4Nyw3IEBAIHNjYW5fbGlzdHMgKEVNQUNTX0lO VCBmcm9tLCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhwZmxh ZykKIAkJICBpZiAoY19jb2RlID09IFNjaGFycXVvdGUgfHwgY19jb2RlID09IFNlc2NhcGUp CiAJCSAgICBJTkNfQk9USCAoZnJvbSwgZnJvbV9ieXRlKTsKIAkJICBJTkNfQk9USCAoZnJv bSwgZnJvbV9ieXRlKTsKLQkJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJ CSAgcmFyZWx5X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAJCX0KIAkgICAgICBJTkNfQk9USCAo ZnJvbSwgZnJvbV9ieXRlKTsKIAkgICAgICBpZiAoIWRlcHRoICYmIHNleHBmbGFnKSBnb3Rv IGRvbmU7CkBAIC0yODE1LDcgKzI4MTMsNyBAQCBzY2FuX2xpc3RzIChFTUFDU19JTlQgZnJv bSwgRU1BQ1NfSU5UIGNvdW50LCBFTUFDU19JTlQgZGVwdGgsIGJvb2wgc2V4cGZsYWcpCiAg ICAgewogICAgICAgd2hpbGUgKGZyb20gPiBzdG9wKQogCXsKLQkgIGluY3JfcmFyZWx5X3F1 aXQgKCZxdWl0X2NvdW50KTsKKwkgIHJhcmVseV9xdWl0ICgrK3F1aXRfY291bnQpOwogCSAg REVDX0JPVEggKGZyb20sIGZyb21fYnl0ZSk7CiAJICBVUERBVEVfU1lOVEFYX1RBQkxFX0JB Q0tXQVJEIChmcm9tKTsKIAkgIGMgPSBGRVRDSF9DSEFSX0FTX01VTFRJQllURSAoZnJvbV9i eXRlKTsKQEAgLTI4OTEsNyArMjg4OSw3IEBAIHNjYW5fbGlzdHMgKEVNQUNTX0lOVCBmcm9t LCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhwZmxhZykKIAkJ ICAgICAgZGVmYXVsdDogZ290byBkb25lMjsKIAkJICAgICAgfQogCQkgIERFQ19CT1RIIChm cm9tLCBmcm9tX2J5dGUpOwotCQkgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsK KwkJICByYXJlbHlfcXVpdCAoKytxdWl0X2NvdW50KTsKIAkJfQogCSAgICAgIGdvdG8gZG9u ZTI7CiAKQEAgLTI5NTQsNyArMjk1Miw3IEBAIHNjYW5fbGlzdHMgKEVNQUNTX0lOVCBmcm9t LCBFTUFDU19JTlQgY291bnQsIEVNQUNTX0lOVCBkZXB0aCwgYm9vbCBzZXhwZmxhZykKIAkJ ICAgICAgaWYgKHN5bnRheF9tdWx0aWJ5dGUgKGMsIG11bHRpYnl0ZV9zeW1ib2xfcCkgPT0g Y29kZSkKIAkJCWJyZWFrOwogCQkgICAgfQotCQkgIGluY3JfcmFyZWx5X3F1aXQgKCZxdWl0 X2NvdW50KTsKKwkJICByYXJlbHlfcXVpdCAoKytxdWl0X2NvdW50KTsKIAkJfQogCSAgICAg IGlmIChjb2RlID09IFNzdHJpbmdfZmVuY2UgJiYgIWRlcHRoICYmIHNleHBmbGFnKSBnb3Rv IGRvbmUyOwogCSAgICAgIGJyZWFrOwpAQCAtMjk3NSw3ICsyOTczLDcgQEAgc2Nhbl9saXN0 cyAoRU1BQ1NfSU5UIGZyb20sIEVNQUNTX0lOVCBjb3VudCwgRU1BQ1NfSU5UIGRlcHRoLCBi b29sIHNleHBmbGFnKQogCQkJICAgICAgPT0gU3N0cmluZykpCiAJCQlicmVhazsKIAkJICAg IH0KLQkJICBpbmNyX3JhcmVseV9xdWl0ICgmcXVpdF9jb3VudCk7CisJCSAgcmFyZWx5X3F1 aXQgKCsrcXVpdF9jb3VudCk7CiAJCX0KIAkgICAgICBpZiAoIWRlcHRoICYmIHNleHBmbGFn KSBnb3RvIGRvbmUyOwogCSAgICAgIGJyZWFrOwpAQCAtMzIyOSw3ICszMjI3LDcgQEAgZG8g eyBwcmV2X2Zyb20gPSBmcm9tOwkJCQlcCiAKICAgd2hpbGUgKGZyb20gPCBlbmQpCiAgICAg ewotICAgICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworICAgICAgcmFyZWx5 X3F1aXQgKCsrcXVpdF9jb3VudCk7CiAgICAgICBJTkNfRlJPTTsKIAogICAgICAgaWYgKChm cm9tIDwgZW5kKQpAQCAtMzI4Niw3ICszMjg0LDcgQEAgZG8geyBwcmV2X2Zyb20gPSBmcm9t OwkJCQlcCiAJCSAgZ290byBzeW1kb25lOwogCQl9CiAJICAgICAgSU5DX0ZST007Ci0JICAg ICAgaW5jcl9yYXJlbHlfcXVpdCAoJnF1aXRfY291bnQpOworCSAgICAgIHJhcmVseV9xdWl0 ICgrK3F1aXRfY291bnQpOwogCSAgICB9CiAJc3ltZG9uZToKIAkgIGN1cmxldmVsLT5wcmV2 ID0gY3VybGV2ZWwtPmxhc3Q7CkBAIC0zMzk3LDcgKzMzOTUsNyBAQCBkbyB7IHByZXZfZnJv bSA9IGZyb207CQkJCVwKIAkJICAgIGJyZWFrOwogCQkgIH0KIAkJSU5DX0ZST007Ci0JCWlu Y3JfcmFyZWx5X3F1aXQgKCZxdWl0X2NvdW50KTsKKwkJcmFyZWx5X3F1aXQgKCsrcXVpdF9j b3VudCk7CiAJICAgICAgfQogCSAgfQogCXN0cmluZ19lbmQ6CmRpZmYgLS1naXQgYS9zcmMv c3lzZGVwLmMgYi9zcmMvc3lzZGVwLmMKaW5kZXggNDE1NWMyMC4uOTFiMmE1YyAxMDA2NDQK LS0tIGEvc3JjL3N5c2RlcC5jCisrKyBiL3NyYy9zeXNkZXAuYwpAQCAtMjUwOCwxMiArMjUw OCwxMiBAQCBlbWFjc19jbG9zZSAoaW50IGZkKQogI2VuZGlmCiAKIC8qIFJlYWQgZnJvbSBG RCB0byBhIGJ1ZmZlciBCVUYgd2l0aCBzaXplIE5CWVRFLgotICAgSWYgaW50ZXJydXB0ZWQs IGVpdGhlciBxdWl0IG9yIHJldHJ5IHRoZSByZWFkLgotICAgUHJvY2VzcyBhbnkgcXVpdHMg YW5kIHBlbmRpbmcgc2lnbmFscyBpbW1lZGlhdGVseSBpZiBJTlRFUlJVUFRJQkxFLgorICAg SWYgaW50ZXJydXB0ZWQsIHByb2Nlc3MgYW55IHF1aXRzIGFuZCBwZW5kaW5nIHNpZ25hbHMg aW1tZWRpYXRlbHkKKyAgIGlmIElOVEVSUlVQVElCTEUsIGFuZCB0aGVuIHJldHJ5IHRoZSBy ZWFkIHVubGVzcyBxdWl0dGluZy4KICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJl YWQsIHdoaWNoIG1pZ2h0IGJlIGxlc3MgdGhhbiBOQllURS4KICAgIE9uIGVycm9yLCBzZXQg ZXJybm8gdG8gYSB2YWx1ZSBvdGhlciB0aGFuIEVJTlRSLCBhbmQgcmV0dXJuIC0xLiAgKi8K IHN0YXRpYyBwdHJkaWZmX3QKLWVtYWNzX25vaW50cl9yZWFkIChpbnQgZmQsIHZvaWQgKmJ1 ZiwgcHRyZGlmZl90IG5ieXRlLCBib29sIGludGVycnVwdGlibGUpCitlbWFjc19pbnRyX3Jl YWQgKGludCBmZCwgdm9pZCAqYnVmLCBwdHJkaWZmX3QgbmJ5dGUsIGJvb2wgaW50ZXJydXB0 aWJsZSkKIHsKICAgc3NpemVfdCByZXN1bHQ7CiAKQEAgLTI1MzcsMTQgKzI1MzcsMTQgQEAg ZW1hY3Nfbm9pbnRyX3JlYWQgKGludCBmZCwgdm9pZCAqYnVmLCBwdHJkaWZmX3QgbmJ5dGUs IGJvb2wgaW50ZXJydXB0aWJsZSkKIHB0cmRpZmZfdAogZW1hY3NfcmVhZCAoaW50IGZkLCB2 b2lkICpidWYsIHB0cmRpZmZfdCBuYnl0ZSkKIHsKLSAgcmV0dXJuIGVtYWNzX25vaW50cl9y ZWFkIChmZCwgYnVmLCBuYnl0ZSwgZmFsc2UpOworICByZXR1cm4gZW1hY3NfaW50cl9yZWFk IChmZCwgYnVmLCBuYnl0ZSwgZmFsc2UpOwogfQogCiAvKiBMaWtlIGVtYWNzX3JlYWQsIGJ1 dCBhbHNvIHByb2Nlc3MgcXVpdHMgYW5kIHBlbmRpbmcgc2lnbmFscy4gICovCiBwdHJkaWZm X3QKIGVtYWNzX3JlYWRfcXVpdCAoaW50IGZkLCB2b2lkICpidWYsIHB0cmRpZmZfdCBuYnl0 ZSkKIHsKLSAgcmV0dXJuIGVtYWNzX25vaW50cl9yZWFkIChmZCwgYnVmLCBuYnl0ZSwgdHJ1 ZSk7CisgIHJldHVybiBlbWFjc19pbnRyX3JlYWQgKGZkLCBidWYsIG5ieXRlLCB0cnVlKTsK IH0KIAogLyogV3JpdGUgdG8gRklMRURFUyBmcm9tIGEgYnVmZmVyIEJVRiB3aXRoIHNpemUg TkJZVEUsIHJldHJ5aW5nIGlmCi0tIAoyLjkuMwoK --------------34CC71419F9E78E8F2F005B7--