From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 24 08:06:20 2018 Received: (at submit) by debbugs.gnu.org; 24 Jul 2018 12:06:20 +0000 Received: from localhost ([127.0.0.1]:54642 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fhw52-00087c-JK for submit@debbugs.gnu.org; Tue, 24 Jul 2018 08:06:20 -0400 Received: from eggs.gnu.org ([208.118.235.92]:37177) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fhw4w-00087B-Rv for submit@debbugs.gnu.org; Tue, 24 Jul 2018 08:06:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fhw4n-0007mJ-Rh for submit@debbugs.gnu.org; Tue, 24 Jul 2018 08:06:05 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:48012) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fhw4n-0007lD-OU for submit@debbugs.gnu.org; Tue, 24 Jul 2018 08:06:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56192) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fhw4j-00050b-HA for bug-gnu-emacs@gnu.org; Tue, 24 Jul 2018 08:06:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fhw4Z-0007WN-Sm for bug-gnu-emacs@gnu.org; Tue, 24 Jul 2018 08:05:56 -0400 Received: from mail-io0-x230.google.com ([2607:f8b0:4001:c06::230]:37635) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fhw4Z-0007WA-Mm for bug-gnu-emacs@gnu.org; Tue, 24 Jul 2018 08:05:47 -0400 Received: by mail-io0-x230.google.com with SMTP id z19-v6so3191973ioh.4 for ; Tue, 24 Jul 2018 05:05:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=8XLnCXcqd1lU/suOoZBk6DCx8nm4KRqdZ3SneWBKao4=; b=RirKqXw4QUHJlFpLUQCBY+YazyemRHEqhGiCH4CEE2zYqkTPBNu0/PWCZahyo4PaHM yEw3K+dGTvJwD+aQxRNZMQIzu7hw0loI1QLayVNjHV4WD8AScJZ/ruAZx06oCnLHXPM4 PChHd0en47aYzrfvyYxjxaeJgB5Qdpf7rhBO0kreR2AKR30MZiVXJgwNs+Jb3WlDWwZn sFNZ/NliRI7hn3ch4ZDlqnnw/w9YDtbIiVfpIMk/uQvtU8/ew61EFXwd/CVKCkO8SW40 5ExWQo73NaAnq8MXI/6FY3/Rw218XPKAZYEVsbq9TMKywYot4vxTlHsTjoe7HbEBr7Jh FKgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=8XLnCXcqd1lU/suOoZBk6DCx8nm4KRqdZ3SneWBKao4=; b=D4cBYJJN//myBO/iToqx1wF6aPsC9iV6EQS+ZlgvrgIDaTqqsZLutKqehsZd6ZROEz D3pq2zruSTlRESFw+UFA39PG69rbkZL/B5PViCWD2EhtiddPNqB3AWAxGhIA6W4P1VnZ pHG9eNT+pkdHWF180Bx7bSjGjo7NOzXquK48iY0q9idb5REAhOIDM0aOSPQzs8vqZ//6 fY8SexMuF3yEv0dQFTqpuHYNOIbsmp5JDbv00b5V/9VYwBDhJgy8krxjz0DZHKoeNgp1 aBzf36+jdY8CGgGWkwl6uQANMz52b9R7CMNFDNfpzQ6qmd6R2I7XIPVZbEsi6l3BSolU k8Mw== X-Gm-Message-State: AOUpUlEiHHHWrfosZw7q1WwbBmW5hCHrquU0EZHH9OJr4b99TEX7qkfG EzQ1VzkdKrF3Qiv4jF2aZkU/KEm1 X-Google-Smtp-Source: AAOMgpfeE5APbmr96tQIigkxlxLVgW7NOGfbHLJBRXtI8YWStgvUvFwJ79u4PT233gQ4Wu6YB1+mOA== X-Received: by 2002:a6b:7517:: with SMTP id l23-v6mr12156595ioh.89.1532433946901; Tue, 24 Jul 2018 05:05:46 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id r139-v6sm909264ita.14.2018.07.24.05.05.46 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 24 Jul 2018 05:05:46 -0700 (PDT) From: Noam Postavsky To: bug-gnu-emacs@gnu.org Subject: 26.1; read-multiple-choice inf loops on mouse clicks Date: Tue, 24 Jul 2018 08:05:45 -0400 Message-ID: <87muug4z52.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) X-Debbugs-CC: Andy Moreton , Lars Ingebrigtsen Starting from emacs -Q, evaluate: (require 'rmc) (read-multiple-choice "choice? " '((?a "ay") (?b "bee") (?c "see"))) then click the mouse somewhere instead of answering the prompt, notice Emacs maxing out CPU, hit C-g. *Messages* will have a log of the prompt being repeated many times: choice? (ay, bee, [c] see, ?): [4435 times] In GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw scroll bars) of 2018-04-09 built on zebian Repository revision: c267421647510319d2a70554e42f0d1c394dba0a Windowing system distributor 'The X.Org Foundation', version 11.0.11902000 System Description: Debian GNU/Linux 9.4 (stretch) From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 25 21:26:03 2018 Received: (at 32257) by debbugs.gnu.org; 26 Jul 2018 01:26:03 +0000 Received: from localhost ([127.0.0.1]:57901 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fiV2V-0001uw-D0 for submit@debbugs.gnu.org; Wed, 25 Jul 2018 21:26:03 -0400 Received: from mail-io0-f172.google.com ([209.85.223.172]:37846) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fiV2P-0001ud-TH for 32257@debbugs.gnu.org; Wed, 25 Jul 2018 21:25:58 -0400 Received: by mail-io0-f172.google.com with SMTP id z19-v6so54200ioh.4 for <32257@debbugs.gnu.org>; Wed, 25 Jul 2018 18:25:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=OGevfoWQMzyqkflxcsymKQyqYoJntqeY4Wc1vt/wtoQ=; b=AeShoWjcTM7KnqHPSwmPOFHCkRxWiv5tL213dhuDZUrAiGT0NbGeJ64SqKNoDOjITF toNK0CSr0YeMQrdbSENPbi2e1hlNcxhWFum6aLJqGf7lqMHmi00ZKcXGTSJF8eiQ/ZTQ 5lvtk3D0iscPSsoVWqKCJbvE+/S1s8/kvExnAfBN1rwR4u2aEycvFJzg8pbOi6gTNTAu WUDZYJcIvM/o1Bberx+HrhpEEqah8G50rkFGTzOtwhIK6YmTLzRZowuu9xaa114ui41J jXbaKotQzcFZk/9RiIKH38FjOhZbi14YJeE/NURBCsRO+vRFAHBTcC7JnKa1mmpehuZX u8Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=OGevfoWQMzyqkflxcsymKQyqYoJntqeY4Wc1vt/wtoQ=; b=S4GDSdqvEZee/l5zAqsml7SclMkySBp7OGiTTQqVuFhAc7/jsAwBMu6tgEQj9pNogC bdIyTCDJX0BMYBAppztsD8Y057Fj/hlcx8gCfSj00V3R3NMkRpWBH0PfCSI5EZcbk0jN 2Koa3TuSVYsSNEPlur5kXO2VrZAhLhaG704nVHxVhfdimHtL/hyUP2c38Rtb6dW64skl JPRdpVfVXsMXxF+LvqoaNSUT+I5YsJUC+pmGeV9mJhKwaxeasKnj9su6EDiKY1oeaVcu V66Y69+/KwcqDV0tFkoqbBgVBOkU4N27/qZOlAXqqkwcJlhlzygMw8jKCD7OYrqLzMs8 xWgg== X-Gm-Message-State: AOUpUlEQNMrBVJ9Fh/mRW69IkFmvS7UEADarlnzBFXEehUPYGjqQNVDA mox+HJYJ+O/259jx6tfBM1E= X-Google-Smtp-Source: AAOMgpdGmqkjl3DEp4kdVebFtyCmPq0C0Nlxpx5bHY4WuGAzsIRs7pMDv2z31J31Zs4srJfBHSqm0A== X-Received: by 2002:a6b:dd01:: with SMTP id f1-v6mr18756836ioc.45.1532568348422; Wed, 25 Jul 2018 18:25:48 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id i13-v6sm1591960iog.31.2018.07.25.18.25.47 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 25 Jul 2018 18:25:47 -0700 (PDT) From: Noam Postavsky To: 32257@debbugs.gnu.org Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> Date: Wed, 25 Jul 2018 21:25:46 -0400 In-Reply-To: <87muug4z52.fsf@gmail.com> (Noam Postavsky's message of "Tue, 24 Jul 2018 08:05:45 -0400") Message-ID: <87y3dy3i05.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32257 Cc: lars ingebrigtsen , andy moreton X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Noam Postavsky writes: > X-Debbugs-CC: Andy Moreton , Lars Ingebrigtsen > > Starting from emacs -Q, evaluate: > > (require 'rmc) > (read-multiple-choice "choice? " '((?a "ay") (?b "bee") (?c "see"))) > > then click the mouse somewhere instead of answering the prompt, notice > Emacs maxing out CPU, hit C-g. *Messages* will have a log of the prompt > being repeated many times: > > choice? (ay, bee, [c] see, ?): [4435 times] The problem seems to be that read-char doesn't "use up" non-character events, e.g., with the following: (defun read-char-or-err () (condition-case err (read-char) (error err))) (list (read-char-or-err) (read-char-or-err) (read-char-or-err) (read-char-or-err) (read-char-or-err)) this returns ((error "Non-character input-event") (error "Non-character input-event") ...) regardless of how many calls to read-char-or-err there are. The patch below fixes the inf looping, although it still doesn't allow any other user interaction (unlike read-from-minibuffer). --- i/lisp/emacs-lisp/rmc.el +++ w/lisp/emacs-lisp/rmc.el @@ -118,8 +118,10 @@ read-multiple-choice choices))) (condition-case nil (let ((cursor-in-echo-area t)) - (read-char)) + (read-event)) (error nil)))) + (unless (characterp tchar) + (setq tchar nil)) (setq answer (lookup-key query-replace-map (vector tchar) t)) (setq tchar (cond From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 27 05:09:34 2018 Received: (at 32257) by debbugs.gnu.org; 27 Jul 2018 09:09:34 +0000 Received: from localhost ([127.0.0.1]:59545 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fiykc-0003W7-GJ for submit@debbugs.gnu.org; Fri, 27 Jul 2018 05:09:34 -0400 Received: from eggs.gnu.org ([208.118.235.92]:57579) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fiykW-0003Vl-QK for 32257@debbugs.gnu.org; Fri, 27 Jul 2018 05:09:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fiykN-0002dq-3b for 32257@debbugs.gnu.org; Fri, 27 Jul 2018 05:09:19 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44144) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fiyk6-0002ZK-Eb; Fri, 27 Jul 2018 05:08:58 -0400 Received: from [176.228.60.248] (port=2529 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fiyk5-0005YH-RV; Fri, 27 Jul 2018 05:08:58 -0400 Date: Fri, 27 Jul 2018 12:08:58 +0300 Message-Id: <83muudrqol.fsf@gnu.org> From: Eli Zaretskii To: Noam Postavsky In-reply-to: <87y3dy3i05.fsf@gmail.com> (message from Noam Postavsky on Wed, 25 Jul 2018 21:25:46 -0400) Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 32257 Cc: andrewjmoreton@gmail.com, larsi@gnus.org, 32257@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Noam Postavsky > Date: Wed, 25 Jul 2018 21:25:46 -0400 > Cc: lars ingebrigtsen , andy moreton > > Starting from emacs -Q, evaluate: > > > > (require 'rmc) > > (read-multiple-choice "choice? " '((?a "ay") (?b "bee") (?c "see"))) > > > > then click the mouse somewhere instead of answering the prompt, notice > > Emacs maxing out CPU, hit C-g. *Messages* will have a log of the prompt > > being repeated many times: > > > > choice? (ay, bee, [c] see, ?): [4435 times] > > The problem seems to be that read-char doesn't "use up" non-character > events, e.g., with the following: > > (defun read-char-or-err () > (condition-case err > (read-char) > (error err))) > > (list (read-char-or-err) > (read-char-or-err) > (read-char-or-err) > (read-char-or-err) > (read-char-or-err)) > > this returns ((error "Non-character input-event") (error "Non-character > input-event") ...) regardless of how many calls to read-char-or-err > there are. > > The patch below fixes the inf looping, although it still doesn't allow > any other user interaction (unlike read-from-minibuffer). If we want this change on emacs-26, we should carefully audit all the other users of rmc.el (and in generally, I'd prefer some more local change in nsm.el on the release branch). We've had our share of subtle bugs introduced by switching to an "almost-compatible" method of reading input. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 27 07:36:03 2018 Received: (at submit) by debbugs.gnu.org; 27 Jul 2018 11:36:04 +0000 Received: from localhost ([127.0.0.1]:59661 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj12O-0002eJ-3R for submit@debbugs.gnu.org; Fri, 27 Jul 2018 07:36:03 -0400 Received: from eggs.gnu.org ([208.118.235.92]:59924) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj12J-0002dz-I5 for submit@debbugs.gnu.org; Fri, 27 Jul 2018 07:35:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fj12A-0003Ge-15 for submit@debbugs.gnu.org; Fri, 27 Jul 2018 07:35:50 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_40,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:60794) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fj129-0003GW-T2 for submit@debbugs.gnu.org; Fri, 27 Jul 2018 07:35:45 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50849) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fj125-0005Nu-Hz for bug-gnu-emacs@gnu.org; Fri, 27 Jul 2018 07:35:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fj120-0003Fe-Ov for bug-gnu-emacs@gnu.org; Fri, 27 Jul 2018 07:35:41 -0400 Received: from [195.159.176.226] (port=56754 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fj120-0003Ep-3O for bug-gnu-emacs@gnu.org; Fri, 27 Jul 2018 07:35:36 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1fj0zq-0006bS-3P for bug-gnu-emacs@gnu.org; Fri, 27 Jul 2018 13:33:22 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks Date: Fri, 27 Jul 2018 12:35:27 +0100 Lines: 56 Message-ID: References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1.50 (windows-nt) Cancel-Lock: sha1:rpNRw/F7BxiEx+1Rq8JHf7CcoaI= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.5 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.5 (-----) On Fri 27 Jul 2018, Eli Zaretskii wrote: >> From: Noam Postavsky >> Date: Wed, 25 Jul 2018 21:25:46 -0400 >> Cc: lars ingebrigtsen , andy moreton >> > Starting from emacs -Q, evaluate: >> > >> > (require 'rmc) >> > (read-multiple-choice "choice? " '((?a "ay") (?b "bee") (?c "see"))) >> > >> > then click the mouse somewhere instead of answering the prompt, notice >> > Emacs maxing out CPU, hit C-g. *Messages* will have a log of the prompt >> > being repeated many times: >> > >> > choice? (ay, bee, [c] see, ?): [4435 times] >> >> The problem seems to be that read-char doesn't "use up" non-character >> events, e.g., with the following: >> >> (defun read-char-or-err () >> (condition-case err >> (read-char) >> (error err))) >> >> (list (read-char-or-err) >> (read-char-or-err) >> (read-char-or-err) >> (read-char-or-err) >> (read-char-or-err)) >> >> this returns ((error "Non-character input-event") (error "Non-character >> input-event") ...) regardless of how many calls to read-char-or-err >> there are. >> >> The patch below fixes the inf looping, although it still doesn't allow >> any other user interaction (unlike read-from-minibuffer). I've tested this on emacs-26, and it fixes the original problem from NSM that resulted in this bug report. > If we want this change on emacs-26, we should carefully audit all the > other users of rmc.el (and in generally, I'd prefer some more local > change in nsm.el on the release branch). We've had our share of > subtle bugs introduced by switching to an "almost-compatible" method > of reading input. read-multiple choice only has two callers (`nsm-query-user' and `message-fix-before-sending') in both master and emacs-26. While I understand caution over changes to emacs-26, the only place that needs fixing is read-multiple-choice. It seems odd to prefer changes in its callers, that will more likely introduce additional bugs without fixing the original issue. AndyM From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 27 08:30:42 2018 Received: (at 32257) by debbugs.gnu.org; 27 Jul 2018 12:30:42 +0000 Received: from localhost ([127.0.0.1]:59692 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj1tK-000443-Lu for submit@debbugs.gnu.org; Fri, 27 Jul 2018 08:30:42 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42514) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj1tH-00043n-Cu for 32257@debbugs.gnu.org; Fri, 27 Jul 2018 08:30:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fj1tB-0004fj-HC for 32257@debbugs.gnu.org; Fri, 27 Jul 2018 08:30:34 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_05 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58415) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fj1tB-0004fb-D1; Fri, 27 Jul 2018 08:30:33 -0400 Received: from [176.228.60.248] (port=2931 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fj1tA-0007ly-2g; Fri, 27 Jul 2018 08:30:32 -0400 Date: Fri, 27 Jul 2018 15:30:33 +0300 Message-Id: <83effosvx2.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-reply-to: (message from Andy Moreton on Fri, 27 Jul 2018 12:35:27 +0100) Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Andy Moreton > Date: Fri, 27 Jul 2018 12:35:27 +0100 > > > If we want this change on emacs-26, we should carefully audit all the > > other users of rmc.el (and in generally, I'd prefer some more local > > change in nsm.el on the release branch). We've had our share of > > subtle bugs introduced by switching to an "almost-compatible" method > > of reading input. > > read-multiple choice only has two callers (`nsm-query-user' and > `message-fix-before-sending') in both master and emacs-26. In Emacs, yes. But what about the world out there? > While I understand caution over changes to emacs-26, the only place that > needs fixing is read-multiple-choice. It seems odd to prefer changes > in its callers, that will more likely introduce additional bugs without > fixing the original issue. In case it wasn't clear I meant to make a safer change on emacs-26, and change read-multiple-choice on master. From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 27 08:45:16 2018 Received: (at 32257) by debbugs.gnu.org; 27 Jul 2018 12:45:16 +0000 Received: from localhost ([127.0.0.1]:59705 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj27Q-0004Rd-GF for submit@debbugs.gnu.org; Fri, 27 Jul 2018 08:45:16 -0400 Received: from mail-it0-f53.google.com ([209.85.214.53]:54795) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj27L-0004RL-Ap for 32257@debbugs.gnu.org; Fri, 27 Jul 2018 08:45:13 -0400 Received: by mail-it0-f53.google.com with SMTP id s7-v6so7322272itb.4 for <32257@debbugs.gnu.org>; Fri, 27 Jul 2018 05:45:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=hXrFDDRlzmndZOqzECM3IxzU2FDNPE3HDt68qDs4Sp0=; b=HWUns7d2qULw6i9qDTJxAQ6ADuPNVJLpFcRGE8PyWQez/wA017SxoZIzQoXquFNX8R FNQSMy/Vicn2WTzr49QV3koDnfVX6lh85tlEy9a5rkAmS6Zc8OCgFDscipP/jsONEPaT a89GlJTeiDIJZi41FNjk8HvYSXD4VeMSGsEUMB2bHc38zufLuvx709A/+vV2hEXCC8BB tWGa6oDmHgLrVMON3RBH0tSbxfjrgZrxi3gETqskzWj6DlNReeLASrRZcTFt+cwBEDFW h8qt8IgjvU/vGs9g25sQHpuTwPYmxsjEgc3EfC2RxDWIiI+SpLhNEYe4ZK4AKvy3AA90 HUmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=hXrFDDRlzmndZOqzECM3IxzU2FDNPE3HDt68qDs4Sp0=; b=joZxElgWc1CynzWIetYAgEbdfuCrEJaLQB26ELk0IDqC+vh8lNrfB72TkX6WfLCp4I oSbrFoYwcvErnFWJ93rbWV0dV5J76LenK+eLjfAYL0ufgJvxGagQ8HDLrDyGOFnkgDjI he/NTeUTa95FNgya8AKPJudmQsotv+NfQNFZvt4EMfwsrT/3z01/hyW27qbcEGoV17AX bZaTAo2ALkXUgM+qK0e1SV/348n1gNC9RCx2mWvr2IcsOPmFEW+o7ZML2DgS94COrqmM mvzH9Ll1pYyo/f2EHGeAXws4hf4f4Byul8pR2xqWUyOt0rdpUJAzUvIohdtBxru5l1BD wYrg== X-Gm-Message-State: AOUpUlF+vMtzY6c5VelN20hfqoWI5vNR7DOpHG7cfSbdPObIv6g+oOBd ksxKduAW/QNeGl+nZt0+WH80wFca X-Google-Smtp-Source: AAOMgpeW3/Sl1+SitSxCsCZom1+7qms8aN6/Jk024kbtCuLiiL6BIefQ3rIrolVhWsrIInKNO2Hcpw== X-Received: by 2002:a24:eec7:: with SMTP id b190-v6mr5632029iti.32.1532695505342; Fri, 27 Jul 2018 05:45:05 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id p70-v6sm2727122itb.3.2018.07.27.05.45.04 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 27 Jul 2018 05:45:04 -0700 (PDT) From: Noam Postavsky To: Eli Zaretskii Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> Date: Fri, 27 Jul 2018 08:45:03 -0400 In-Reply-To: <83effosvx2.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 27 Jul 2018 15:30:33 +0300") Message-ID: <87r2jo3l0w.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org, Andy Moreton X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> From: Andy Moreton >> Date: Fri, 27 Jul 2018 12:35:27 +0100 >> >> > If we want this change on emacs-26, we should carefully audit all the >> > other users of rmc.el What should we check for though? >> > (and in generally, I'd prefer some more local >> > change in nsm.el on the release branch). We've had our share of >> > subtle bugs introduced by switching to an "almost-compatible" method >> > of reading input. >> >> read-multiple choice only has two callers (`nsm-query-user' and >> `message-fix-before-sending') in both master and emacs-26. > > In Emacs, yes. But what about the world out there? I expect all the callers out in the world will exhibit the same bug. > In case it wasn't clear I meant to make a safer change on emacs-26, > and change read-multiple-choice on master. At any rate, I don't see a way of fixing it in the caller, short of temporarily fsetting read-char into read-event. Also, read-multiple-choice is new in Emacs 26, so it seems to me we should rather fix it in 26.2. From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 27 09:50:14 2018 Received: (at 32257) by debbugs.gnu.org; 27 Jul 2018 13:50:15 +0000 Received: from localhost ([127.0.0.1]:59737 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj38I-00066h-K4 for submit@debbugs.gnu.org; Fri, 27 Jul 2018 09:50:14 -0400 Received: from eggs.gnu.org ([208.118.235.92]:33636) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj38G-00066S-VO for 32257@debbugs.gnu.org; Fri, 27 Jul 2018 09:50:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fj386-0001XQ-L4 for 32257@debbugs.gnu.org; Fri, 27 Jul 2018 09:50:07 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_20 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:59881) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fj386-0001X9-G8; Fri, 27 Jul 2018 09:50:02 -0400 Received: from [176.228.60.248] (port=3922 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fj385-0004Zd-UJ; Fri, 27 Jul 2018 09:50:02 -0400 Date: Fri, 27 Jul 2018 16:50:02 +0300 Message-Id: <837elgss8l.fsf@gnu.org> From: Eli Zaretskii To: Noam Postavsky In-reply-to: <87r2jo3l0w.fsf@gmail.com> (message from Noam Postavsky on Fri, 27 Jul 2018 08:45:03 -0400) Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Noam Postavsky > Cc: Andy Moreton , 32257@debbugs.gnu.org > Date: Fri, 27 Jul 2018 08:45:03 -0400 > > Eli Zaretskii writes: > > >> From: Andy Moreton > >> Date: Fri, 27 Jul 2018 12:35:27 +0100 > >> > >> > If we want this change on emacs-26, we should carefully audit all the > >> > other users of rmc.el > > What should we check for though? Anything that read-event handles differently from read-char. Maybe a good starting point is to compile a list of the differences in behavior between the two. > >> read-multiple choice only has two callers (`nsm-query-user' and > >> `message-fix-before-sending') in both master and emacs-26. > > > > In Emacs, yes. But what about the world out there? > > I expect all the callers out in the world will exhibit the same bug. What about the features they expect? > At any rate, I don't see a way of fixing it in the caller, short of > temporarily fsetting read-char into read-event. If there's no better idea, we could copy read-multiple-choice into nsm.el and replace read-char with read-event there. But maybe there are more elegant ideas. > Also, read-multiple-choice is new in Emacs 26, so it seems to me we > should rather fix it in 26.2. I agree, I just am not convince that replacing read-char with read-event is the right fix. From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 30 21:52:49 2018 Received: (at 32257) by debbugs.gnu.org; 31 Jul 2018 01:52:50 +0000 Received: from localhost ([127.0.0.1]:35595 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkJqD-0008N2-NH for submit@debbugs.gnu.org; Mon, 30 Jul 2018 21:52:49 -0400 Received: from mail-it0-f50.google.com ([209.85.214.50]:39974) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkJqB-0008Mp-Mp for 32257@debbugs.gnu.org; Mon, 30 Jul 2018 21:52:47 -0400 Received: by mail-it0-f50.google.com with SMTP id h23-v6so2097784ita.5 for <32257@debbugs.gnu.org>; Mon, 30 Jul 2018 18:52:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=5E3JSU2GGMqoB6KX5ukn24CtX3V33gQxR/cILfx6ONU=; b=kBKm7zClAIuCGehYK1zLpxOIRTTaHlUdilW/FOyMzEKEKJ6VYpS9VQKlauzaz7c4ri H68cnQdtHucQiivNBQbswWWWx3PC/tBKU0M/xVQV4m9cBd6Qv37dLfTPeHgZnOnxxle+ LUdMvFUGFx2PY3kx7d35W+cQh1M8nogfSBRyKjRApe3JV8c+ck2fGJ3QPzpcqCdjh2X3 Bt7s5DqBdQYK9hVJtxYwhrBJWt+DCABpWkGPRcyZMeWslzzCiYc/F2f9BfUjkTxiSnbr QhVANfJdNvFkd9kmQo90UPiuL5YASdQ+I/WeAJhWYxIa7xL81VVJKPoom49XXoVrMmfD zuGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=5E3JSU2GGMqoB6KX5ukn24CtX3V33gQxR/cILfx6ONU=; b=EIrclo/1hYqbReu129qh61TCLVlW3+C4Ku7H5VjWL/OTRJP54AxPnALm82FlZyxhfV P/kQccrkcWfTlQWIogW3gwLiihyVPOR5W9GP6hs9Ck78TyQq+KQiG+jDpr+A+mEQio82 xVIlT+R1z9cMGUnkH8itjGrMGzRAbNEaYblevoJZQVWZvzqonH8JTYOEtgEVxVe6h3HD HuC8Tjnq3PAznrDlh+QArJ5F61vIxGzDZznNsrt42MRYvagTGVyEfLIc1xFLnzW800BC PnDQveEsbAHdhaVTq7GWBZCUBecqsp2VHbe+EpfMF2hM2kp3sRlcejDdsqDqFQCANZyM agig== X-Gm-Message-State: AOUpUlFQqdZ8QQ+9S3/nD0V577eOIE834sgzACxaFPf2Bch/hSTGAIO9 1wxqNVk3W9W5r6poBHoEjqI= X-Google-Smtp-Source: AAOMgpdXLUguXcSHvEcTmQTSf6gJRA+QmSZOox3yZjpItc1gESti3kT3KUAJAXfMIKBSbldiqwwdgg== X-Received: by 2002:a24:2ed4:: with SMTP id i203-v6mr1462952ita.114.1533001962141; Mon, 30 Jul 2018 18:52:42 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id n142-v6sm7702909itb.3.2018.07.30.18.52.41 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 30 Jul 2018 18:52:41 -0700 (PDT) From: Noam Postavsky To: Eli Zaretskii Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> Date: Mon, 30 Jul 2018 21:52:40 -0400 In-Reply-To: <837elgss8l.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 27 Jul 2018 16:50:02 +0300") Message-ID: <87sh40189j.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 32257 Cc: andrewjmoreton@gmail.com, 32257@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: >> >> > If we want this change on emacs-26, we should carefully audit all the >> >> > other users of rmc.el >> >> What should we check for though? > > Anything that read-event handles differently from read-char. Maybe a > good starting point is to compile a list of the differences in > behavior between the two. Looking at the implementation, they both delegate to read_filtered_event, but read-char passes 1 for the first three args, where read-event passes 0. If NO_SWITCH_FRAME, switch-frame events are stashed until we get a character we like, and then stuffed into unread_switch_frame. If ASCII_REQUIRED, check function key events to see if the unmodified version of the symbol has a Qascii_character property, and use that character, if present. If ERROR_NONASCII, signal an error if the input we get isn't an ASCII character with modifiers. If it's false but ASCII_REQUIRED is true, just re-read until we get an ASCII character. Another possibility is to use read-char-exclusive which only changes ERROR_NON_ASCII to 0. The downside is that when there are mouse clicks it prints the events into the minibuffer, covering the prompt (but typing "?" still works to restore the prompt). --- i/lisp/emacs-lisp/rmc.el +++ w/lisp/emacs-lisp/rmc.el @@ -118,7 +118,7 @@ read-multiple-choice choices))) (condition-case nil (let ((cursor-in-echo-area t)) - (read-char)) + (read-char-exclusive)) (error nil)))) (setq answer (lookup-key query-replace-map (vector tchar) t)) (setq tchar From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 31 08:00:01 2018 Received: (at submit) by debbugs.gnu.org; 31 Jul 2018 12:00:01 +0000 Received: from localhost ([127.0.0.1]:35824 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkTJp-0003sy-4Y for submit@debbugs.gnu.org; Tue, 31 Jul 2018 08:00:01 -0400 Received: from eggs.gnu.org ([208.118.235.92]:53228) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkTJn-0003sl-J9 for submit@debbugs.gnu.org; Tue, 31 Jul 2018 07:59:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkTJh-00018d-IX for submit@debbugs.gnu.org; Tue, 31 Jul 2018 07:59:54 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:36014) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fkTJh-00018R-FL for submit@debbugs.gnu.org; Tue, 31 Jul 2018 07:59:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44192) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fkTJg-0003FZ-5d for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 07:59:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkTJd-00016w-4A for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 07:59:52 -0400 Received: from [195.159.176.226] (port=40085 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fkTJc-00016O-St for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 07:59:49 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1fkTHT-0006FB-4R for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 13:57:35 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks Date: Tue, 31 Jul 2018 12:59:37 +0100 Lines: 48 Message-ID: References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (windows-nt) Cancel-Lock: sha1:NAHMMNoTKbxWVCiknT0p64eN5gk= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) On Mon 30 Jul 2018, Noam Postavsky wrote: > Eli Zaretskii writes: > >>> >> > If we want this change on emacs-26, we should carefully audit all the >>> >> > other users of rmc.el >>> >>> What should we check for though? >> >> Anything that read-event handles differently from read-char. Maybe a >> good starting point is to compile a list of the differences in >> behavior between the two. > > Looking at the implementation, they both delegate to > read_filtered_event, but read-char passes 1 for the first three args, > where read-event passes 0. > > If NO_SWITCH_FRAME, switch-frame events are stashed > until we get a character we like, and then stuffed into > unread_switch_frame. > > If ASCII_REQUIRED, check function key events to see > if the unmodified version of the symbol has a Qascii_character > property, and use that character, if present. > > If ERROR_NONASCII, signal an error if the input we > get isn't an ASCII character with modifiers. If it's false but > ASCII_REQUIRED is true, just re-read until we get an ASCII > character. So perhaps this `read-char' to `read-event' change will result in different frame switching behaviour. I'm not sure how to test that though. > Another possibility is to use read-char-exclusive which only changes > ERROR_NON_ASCII to 0. The downside is that when there are mouse clicks > it prints the events into the minibuffer, covering the prompt (but > typing "?" still works to restore the prompt). AS you have done, I read the implementation and tried a patch using `read-char-exclusive'. The result is unusable as the printed events obscure the original question. The proper long term fix for this is to make read-multiple-choice use a dedicated buffer rather than the minibuffer, and give better visibility when more than one question is asked in succession. Perhaps also some way to stop the echo area from obscuring the minibuffer ? AndyM From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 31 08:27:29 2018 Received: (at 32257) by debbugs.gnu.org; 31 Jul 2018 12:27:30 +0000 Received: from localhost ([127.0.0.1]:35844 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkTkP-0006Xq-Ms for submit@debbugs.gnu.org; Tue, 31 Jul 2018 08:27:29 -0400 Received: from mout.gmx.net ([212.227.15.18]:60065) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkTkN-0006Xd-Ca for 32257@debbugs.gnu.org; Tue, 31 Jul 2018 08:27:28 -0400 Received: from [192.168.1.101] ([212.95.5.202]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MO77c-1fpxOe2l9w-005dL6; Tue, 31 Jul 2018 14:27:20 +0200 Message-ID: <5B6055A2.4010308@gmx.at> Date: Tue, 31 Jul 2018 14:27:14 +0200 From: martin rudalics MIME-Version: 1.0 To: Andy Moreton , 32257@debbugs.gnu.org Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:1plDqxp7mhbh6FY4cHVTz84mjYWoW7Sbcfk3rD9md4HQVyj3w4j Urzc67PWEfRGaSnAweM8Wbx45LgMtFj4RjcFKRYaLYgH4xW5is1cWfmqAVA5ZVSHeh1uKyW uVOG2cBIldZLYrlXhuAASOF/p9dyefxEqEgDeDnhxzZNFvhIrjMVtvo3gC9zIngeLB63sSP zeUwEQKtCAAA9Ycz/RhAg== X-UI-Out-Filterresults: notjunk:1;V01:K0:nrXPdXCN7Ok=:7BBdHzcT6aXQM5P/kPkVvZ amkDhNf4CRgGPzrCO7zdgpmhb/0zXya/q/q1b3iHjOntQlsx1MeVuLXhZyaIdJWauDNhCdYJZ DihJ12canEIF8Vf/Pz+qpAbBdBx8C8roZpoln7vCb2TsUiLvrhnoPwx9on9z29DgCrovbiJ24 B6gO/5ZtK13AbYbawoud4S6MRx3w5xAFXO/5zpLPnXt7kQ/W/OHsjj1CG/HsZUdOTq6rU6X7X REOIt62WZ8Q2SOfBESLG61mqEet+/raNYTzFZY9VepbIsRj8sUIBWkbhPCaspuSdUV1uOELEn qb0IxWvXSqCfQIJAdZku4tj4HkzaQvlhiUhn2sseAdvyRnm/g9gozIDSy0+5YYzVBJjTGK2Eo ZP7oIWMU1nAr5dWCpzIqTuTMIIBHjr80T3HyUKZza53/LsRUwi70DSr2qlU5x86aPkyKUO/D1 s3ETiQWVmaYnRihZRqlbznzz6aSibUfHOcjrHZ1RBr9xzwukwINDaENn2qNXFHquk6m+sXtwD LZhdSjljzEDYhl3I0WHUhnDMwYYG8JZXs4Tgk9wb7WftxcyG6nH24ZfN3w1YNoKNCZggGd3EF rn2FvgU+0QPcvMGPNWxwzeF22bYsZ8rxln7O9h559FIX8xVinaJWAfcBRCrv1QrUBPSZ2Oc8o yle7+/gAxT04nk9ljsBYKl7ZZ3eOfYmipes9uc/BLFSt4Avba9Jfai6LCiBeXPtb1/nw6iZ7A XcPm+g3HWH6DdVyM9lx68c8Il1cZym9ZUz0835aWwz/9BEdDGEbJKtjyZ1dMGeIxc80qu6jEi Jzhlypk X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 32257 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Perhaps also some > way to stop the echo area from obscuring the minibuffer ? Here I use separate echo (area) and minibuffer windows. If you want to play around with a patch please tell me. martin From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 31 08:38:57 2018 Received: (at submit) by debbugs.gnu.org; 31 Jul 2018 12:38:57 +0000 Received: from localhost ([127.0.0.1]:35857 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkTvV-0006ph-Io for submit@debbugs.gnu.org; Tue, 31 Jul 2018 08:38:57 -0400 Received: from eggs.gnu.org ([208.118.235.92]:33368) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkTvT-0006pS-AZ for submit@debbugs.gnu.org; Tue, 31 Jul 2018 08:38:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkTvN-0007dy-Gh for submit@debbugs.gnu.org; Tue, 31 Jul 2018 08:38:50 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:36602) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fkTvN-0007do-D1 for submit@debbugs.gnu.org; Tue, 31 Jul 2018 08:38:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52557) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fkTvM-0008ID-0n for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 08:38:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkTvI-0007Zp-T6 for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 08:38:48 -0400 Received: from [195.159.176.226] (port=43386 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fkTvI-0007Xy-L1 for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 08:38:44 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1fkTt9-0008M0-1h for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 14:36:31 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks Date: Tue, 31 Jul 2018 13:38:33 +0100 Lines: 16 Message-ID: References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <5B6055A2.4010308@gmx.at> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (windows-nt) Cancel-Lock: sha1:waTHJpd0MHk8mmWp4eQn48F7P40= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) On Tue 31 Jul 2018, martin rudalics wrote: >> Perhaps also some >> way to stop the echo area from obscuring the minibuffer ? > > Here I use separate echo (area) and minibuffer windows. If you want > to play around with a patch please tell me. > > martin Yes please - prefeably in a new bug report for the enhancement patch, so it can be tracked separately from this bug. Thanks, AndyM From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 31 12:04:10 2018 Received: (at 32257) by debbugs.gnu.org; 31 Jul 2018 16:04:10 +0000 Received: from localhost ([127.0.0.1]:36583 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkX85-0003Q4-Uu for submit@debbugs.gnu.org; Tue, 31 Jul 2018 12:04:10 -0400 Received: from eggs.gnu.org ([208.118.235.92]:52590) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkX84-0003Ps-Pz for 32257@debbugs.gnu.org; Tue, 31 Jul 2018 12:04:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkX7z-0000o8-0e for 32257@debbugs.gnu.org; Tue, 31 Jul 2018 12:04:03 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_05 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:53134) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fkX7u-0000nB-Mk; Tue, 31 Jul 2018 12:03:58 -0400 Received: from [176.228.60.248] (port=4724 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fkX7u-0001nm-5N; Tue, 31 Jul 2018 12:03:58 -0400 Date: Tue, 31 Jul 2018 19:04:07 +0300 Message-Id: <83zhy7o0i0.fsf@gnu.org> From: Eli Zaretskii To: Noam Postavsky In-reply-to: <87sh40189j.fsf@gmail.com> (message from Noam Postavsky on Mon, 30 Jul 2018 21:52:40 -0400) Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 32257 Cc: andrewjmoreton@gmail.com, 32257@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Noam Postavsky > Cc: 32257@debbugs.gnu.org, andrewjmoreton@gmail.com > Date: Mon, 30 Jul 2018 21:52:40 -0400 > > Another possibility is to use read-char-exclusive which only changes > ERROR_NON_ASCII to 0. The downside is that when there are mouse clicks > it prints the events into the minibuffer, covering the prompt (but > typing "?" still works to restore the prompt). > > --- i/lisp/emacs-lisp/rmc.el > +++ w/lisp/emacs-lisp/rmc.el > @@ -118,7 +118,7 @@ read-multiple-choice > choices))) > (condition-case nil > (let ((cursor-in-echo-area t)) > - (read-char)) > + (read-char-exclusive)) > (error nil)))) > (setq answer (lookup-key query-replace-map (vector tchar) t)) > (setq tchar Maybe this is the best compromise for emacs-026. We could search for a better (and bolder) solution on master. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 31 12:06:29 2018 Received: (at 32257) by debbugs.gnu.org; 31 Jul 2018 16:06:29 +0000 Received: from localhost ([127.0.0.1]:36587 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkXAL-0003Tp-C2 for submit@debbugs.gnu.org; Tue, 31 Jul 2018 12:06:29 -0400 Received: from eggs.gnu.org ([208.118.235.92]:53651) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkXAJ-0003TZ-A3 for 32257@debbugs.gnu.org; Tue, 31 Jul 2018 12:06:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkXAD-0002Lz-6o for 32257@debbugs.gnu.org; Tue, 31 Jul 2018 12:06:22 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:53177) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fkXAD-0002Lr-2U; Tue, 31 Jul 2018 12:06:21 -0400 Received: from [176.228.60.248] (port=4870 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fkXAC-0006rQ-HK; Tue, 31 Jul 2018 12:06:20 -0400 Date: Tue, 31 Jul 2018 19:06:29 +0300 Message-Id: <83y3dro0e2.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-reply-to: (message from Andy Moreton on Tue, 31 Jul 2018 12:59:37 +0100) Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Andy Moreton > Date: Tue, 31 Jul 2018 12:59:37 +0100 > > > Another possibility is to use read-char-exclusive which only changes > > ERROR_NON_ASCII to 0. The downside is that when there are mouse clicks > > it prints the events into the minibuffer, covering the prompt (but > > typing "?" still works to restore the prompt). > > AS you have done, I read the implementation and tried a patch using > `read-char-exclusive'. The result is unusable as the printed events > obscure the original question. I think "unusable" is an exaggeration, since you can recover the prompt. And the result is definitely better than the current situation, where you just get stuck. > The proper long term fix for this is to make read-multiple-choice use a > dedicated buffer rather than the minibuffer, and give better visibility > when more than one question is asked in succession. Perhaps also some > way to stop the echo area from obscuring the minibuffer ? The echo-area messages are fine, but we should have a feature that allows to suppress echoing the mouse clicks. From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 31 15:27:07 2018 Received: (at submit) by debbugs.gnu.org; 31 Jul 2018 19:27:07 +0000 Received: from localhost ([127.0.0.1]:36677 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkaIU-00043a-S3 for submit@debbugs.gnu.org; Tue, 31 Jul 2018 15:27:07 -0400 Received: from eggs.gnu.org ([208.118.235.92]:43355) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkaIT-00042z-17 for submit@debbugs.gnu.org; Tue, 31 Jul 2018 15:27:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkaIN-000694-4w for submit@debbugs.gnu.org; Tue, 31 Jul 2018 15:26:59 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:58648) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fkaIN-00068t-0g for submit@debbugs.gnu.org; Tue, 31 Jul 2018 15:26:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34307) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fkaIL-0001vp-Vq for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 15:26:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkaIH-000650-TE for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 15:26:57 -0400 Received: from [195.159.176.226] (port=59400 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fkaIH-000641-LZ for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 15:26:53 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1fkaG2-0003eW-Rv for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 21:24:34 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks Date: Tue, 31 Jul 2018 20:26:33 +0100 Lines: 38 Message-ID: References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <83y3dro0e2.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (windows-nt) Cancel-Lock: sha1:PbAFbTZI/raFx03I5Irre3pFTnY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) On Tue 31 Jul 2018, Eli Zaretskii wrote: >> From: Andy Moreton >> Date: Tue, 31 Jul 2018 12:59:37 +0100 >> >> > Another possibility is to use read-char-exclusive which only changes >> > ERROR_NON_ASCII to 0. The downside is that when there are mouse clicks >> > it prints the events into the minibuffer, covering the prompt (but >> > typing "?" still works to restore the prompt). >> >> AS you have done, I read the implementation and tried a patch using >> `read-char-exclusive'. The result is unusable as the printed events >> obscure the original question. > > I think "unusable" is an exaggeration, since you can recover the > prompt. And the result is definitely better than the current > situation, where you just get stuck. No. It is is just as unusable, as the only way to get past the stream of event message hiding the question you are trying to answer is to hit ^G until it goes away. Using `read-char-exclusive' does not make any improvement on the original problem. We already have a working patch that solves the original problem. >> The proper long term fix for this is to make read-multiple-choice use a >> dedicated buffer rather than the minibuffer, and give better visibility >> when more than one question is asked in succession. Perhaps also some >> way to stop the echo area from obscuring the minibuffer ? > > The echo-area messages are fine, but we should have a feature that > allows to suppress echoing the mouse clicks. They are a pain if you are asked more than one question, but the echo area message gets in the way of the minibuffer prompt that you need to read in order to answer the question. AndyM From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 31 15:32:27 2018 Received: (at submit) by debbugs.gnu.org; 31 Jul 2018 19:32:27 +0000 Received: from localhost ([127.0.0.1]:36687 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkaNe-0004E9-RU for submit@debbugs.gnu.org; Tue, 31 Jul 2018 15:32:27 -0400 Received: from eggs.gnu.org ([208.118.235.92]:45323) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkaNd-0004Dw-My for submit@debbugs.gnu.org; Tue, 31 Jul 2018 15:32:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkaNX-00046M-Ia for submit@debbugs.gnu.org; Tue, 31 Jul 2018 15:32:20 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:34519) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fkaNX-00046A-FK for submit@debbugs.gnu.org; Tue, 31 Jul 2018 15:32:19 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36294) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fkaNW-0003vD-GN for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 15:32:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkaNT-00041a-95 for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 15:32:18 -0400 Received: from [195.159.176.226] (port=39447 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fkaNT-00040M-0F for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 15:32:15 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1fkaLK-0001Xi-Ex for bug-gnu-emacs@gnu.org; Tue, 31 Jul 2018 21:30:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks Date: Tue, 31 Jul 2018 20:29:31 +0100 Lines: 33 Message-ID: References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <83zhy7o0i0.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (windows-nt) Cancel-Lock: sha1:5vqM+j/AWLQGWvIe1FWhFb3kwGY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) On Tue 31 Jul 2018, Eli Zaretskii wrote: >> From: Noam Postavsky >> Cc: 32257@debbugs.gnu.org, andrewjmoreton@gmail.com >> Date: Mon, 30 Jul 2018 21:52:40 -0400 >> >> Another possibility is to use read-char-exclusive which only changes >> ERROR_NON_ASCII to 0. The downside is that when there are mouse clicks >> it prints the events into the minibuffer, covering the prompt (but >> typing "?" still works to restore the prompt). Only if you know in advance that typing "?" will do that. >> --- i/lisp/emacs-lisp/rmc.el >> +++ w/lisp/emacs-lisp/rmc.el >> @@ -118,7 +118,7 @@ read-multiple-choice >> choices))) >> (condition-case nil >> (let ((cursor-in-echo-area t)) >> - (read-char)) >> + (read-char-exclusive)) >> (error nil)))) >> (setq answer (lookup-key query-replace-map (vector tchar) t)) >> (setq tchar > > Maybe this is the best compromise for emacs-026. We could search for > a better (and bolder) solution on master. This is no better than the status quo. Noam's original patch may bring some possibility of new problems, but it does at least fix the original problem (on emacs-26 and master). AndyM From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 01 01:27:57 2018 Received: (at 32257) by debbugs.gnu.org; 1 Aug 2018 05:27:57 +0000 Received: from localhost ([127.0.0.1]:36876 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkjfx-0005ra-BC for submit@debbugs.gnu.org; Wed, 01 Aug 2018 01:27:57 -0400 Received: from eggs.gnu.org ([208.118.235.92]:59625) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkjfv-0005rM-4S for 32257@debbugs.gnu.org; Wed, 01 Aug 2018 01:27:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkjfk-0000xl-Vv for 32257@debbugs.gnu.org; Wed, 01 Aug 2018 01:27:49 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42341) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fkjfk-0000xg-RW; Wed, 01 Aug 2018 01:27:44 -0400 Received: from [176.228.60.248] (port=2656 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fkjfk-0004mw-61; Wed, 01 Aug 2018 01:27:44 -0400 Date: Wed, 01 Aug 2018 08:27:54 +0300 Message-Id: <83in4uodut.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-reply-to: (message from Andy Moreton on Tue, 31 Jul 2018 20:26:33 +0100) Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <83y3dro0e2.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Andy Moreton > Date: Tue, 31 Jul 2018 20:26:33 +0100 > > > I think "unusable" is an exaggeration, since you can recover the > > prompt. And the result is definitely better than the current > > situation, where you just get stuck. > > No. It is is just as unusable, as the only way to get past the stream of > event message hiding the question you are trying to answer is to hit ^G > until it goes away. Using `read-char-exclusive' does not make any improvement on the > original problem. It is here, because typing ? brings back the original prompt, as does any other character. So I still think you are exaggerating. > > The echo-area messages are fine, but we should have a feature that > > allows to suppress echoing the mouse clicks. > > They are a pain if you are asked more than one question, but the echo > area message gets in the way of the minibuffer prompt that you need to > read in order to answer the question. Echo area messages in general go away to reveal the prompt. The only problem in this case is with the echo for mouse clicks, AFAICT. From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 01 01:29:17 2018 Received: (at 32257) by debbugs.gnu.org; 1 Aug 2018 05:29:18 +0000 Received: from localhost ([127.0.0.1]:36880 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkjhF-0005u5-N1 for submit@debbugs.gnu.org; Wed, 01 Aug 2018 01:29:17 -0400 Received: from eggs.gnu.org ([208.118.235.92]:60119) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkjhE-0005tr-Nn for 32257@debbugs.gnu.org; Wed, 01 Aug 2018 01:29:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkjh4-000207-QO for 32257@debbugs.gnu.org; Wed, 01 Aug 2018 01:29:11 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42368) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fkjh4-000200-Mq; Wed, 01 Aug 2018 01:29:06 -0400 Received: from [176.228.60.248] (port=2739 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fkjh3-0006yW-JK; Wed, 01 Aug 2018 01:29:06 -0400 Date: Wed, 01 Aug 2018 08:29:17 +0300 Message-Id: <83h8keodsi.fsf@gnu.org> From: Eli Zaretskii To: Andy Moreton In-reply-to: (message from Andy Moreton on Tue, 31 Jul 2018 20:29:31 +0100) Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <83zhy7o0i0.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Andy Moreton > Date: Tue, 31 Jul 2018 20:29:31 +0100 > > Noam's original patch may bring some possibility of new problems, > but it does at least fix the original problem (on emacs-26 and > master). Fixing a problem and introducing another doesn't sound wise to me. We've been there several times during the last years, and I don't want to make the same mistake again. Sorry. From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 01 04:44:38 2018 Received: (at 32257) by debbugs.gnu.org; 1 Aug 2018 08:44:38 +0000 Received: from localhost ([127.0.0.1]:36933 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkmkI-0004Sj-Iy for submit@debbugs.gnu.org; Wed, 01 Aug 2018 04:44:38 -0400 Received: from mout.gmx.net ([212.227.15.18]:33385) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkmkG-0004SW-FG for 32257@debbugs.gnu.org; Wed, 01 Aug 2018 04:44:36 -0400 Received: from [192.168.1.101] ([212.95.5.50]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MLO9y-1flKhy3Udm-000YT4; Wed, 01 Aug 2018 10:44:29 +0200 Message-ID: <5B6172E2.6010604@gmx.at> Date: Wed, 01 Aug 2018 10:44:18 +0200 From: martin rudalics MIME-Version: 1.0 To: Andy Moreton , 32257@debbugs.gnu.org Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <5B6055A2.4010308@gmx.at> In-Reply-To: Content-Type: multipart/mixed; boundary="------------080608020305000803010809" X-Provags-ID: V03:K1:j4g/U6xrVaaZIpsyHAfzO0uhBHDp2QneDVTZmDXATU/VlKGF+UO 7UzUSOnx2q7tV1vDf+wcPp5a9WxLbBUNPSEBy4DOcwHpbxUxMdkjPXfXNAi7Gg+uiQN26ef lDcCBIsSvSDYL9x6pzm81Az/LvieJyGDPoj+Hiya5/gXTyoSgS0rikRwGybhfI82z8d3ZB4 W1l9d71hEgGLuPC4kqHLg== X-UI-Out-Filterresults: notjunk:1;V01:K0:l8JGEeIKHRQ=:LP4d3P2ctRoJ++Sxx2PnQe J2/JOaA7Bmd1NZzbGyu24C/ojeuk9UH1gglnDW5S2+1qkUfDe79RSxi+baaqT8d1v3Jos3qjh iEF3UmPK53KzkrODSvaHoS8rS2TYukfJCWHTI2dewSKpI5NLt9ZroMYwyODNorfZh/tfGK322 7EYqVOHPYAymZCdQjghrYfihqQiDmUlJiSSfwKd8v3kcLoNgQoU1UycReDhtgkKgncpmCVIud C8wUa5nDZCvON1WO4mAbsPNlpbe1DNwc+BlNZwlFlkN20vf6hfcTbDUyMCYojPqw+uEEediwr v3CNjun7CDdxdp2ngbZ+myLDwDS73uR6DECycbBGumwSdaGWkxiLQoGoOcOY6y1ttLisHetoL ZQYFmi5E2L8ZhPNtccrFbzs9iCWbgqtFXBJTudcHNzzyghAyQazTCx2MTFpVrLZsWv7RzIE3j v2ANOv+e1YW27+U8zK2uFwNLXIr8Lrirl3AcuuF3+zRAJdC29bzusFmW11DQV3Z6fJ94guLC/ PRNm69CVnTyfok9m0+2/14p3SfDUfKGfbcDzayBW+KUZAxzOnE3z0Oib2BfPrkVFKj5tK9oos JIr4WgfxpmJDtQNHynVHRpjaqKr24djKMtMeQKDahiVdfZ2kGWOuNM/+eyWha7Yt6Q+6UFQ0M AkiuG3T02k6uaN2iSLNkqyZsvPBNGRT3VPmDXmgXvFG6TyMKfyD9f3IdOns6fu+IvV98NsLcO bhh38hNq8fJWfanODWslQ7Bdzbv9ALQXC5xeZQ== X-Debbugs-Envelope-To: 32257 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" This is a multi-part message in MIME format. --------------080608020305000803010809 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit >> Here I use separate echo (area) and minibuffer windows. If you want >> to play around with a patch please tell me. >> >> martin > > Yes please - prefeably in a new bug report for the enhancement patch, > so it can be tracked separately from this bug. It's not yet ready for broader discussion. I attach it here so you can just test whether making the echo interference go away during the minibuffer dialog. To put it into use run emacs with (setq default-frame-alist '((minibuffer . loose) (echo-area . t))) Looks better with window dividers enabled. Eventually I'll make a remote branch. But this may take its time. martin --------------080608020305000803010809 Content-Type: text/plain; charset=windows-1252; name="echomini.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="echomini.diff" ZGlmZiAtLWdpdCBhL2xpc3AvYmluZGluZ3MuZWwgYi9saXNwL2JpbmRpbmdzLmVsCmluZGV4 IDk3OTcwNTIuLjVjYWM2NmUgMTAwNjQ0Ci0tLSBhL2xpc3AvYmluZGluZ3MuZWwKKysrIGIv bGlzcC9iaW5kaW5ncy5lbApAQCAtMTM3LDEwICsxMzcsMTAgQEAgbW9kZS1saW5lLWRlZmF1 bHQtaGVscC1lY2hvCiAgICAgICAgICAgOzsgdGhpcyBmcmFtZSBjYW4gYmUgcmVzaXplZC4g IFRoaXMgbWF0Y2hlcyBhIGNvcnJlc3BvbmRpbmcKICAgICAgICAgICA7OyBjaGVjayBpbiBg bW91c2UtZHJhZy1tb2RlLWxpbmUnLgogICAgICAgICAgIChvciAobm90ICh3aW5kb3ctYXQt c2lkZS1wIHdpbmRvdyAnYm90dG9tKSkKLSAgICAgICAgICAgICAgKGxldCAoKG1pbmktd2lu ZG93IChtaW5pYnVmZmVyLXdpbmRvdyBmcmFtZSkpKQotICAgICAgICAgICAgICAgIChhbmQg KGVxIGZyYW1lICh3aW5kb3ctZnJhbWUgbWluaS13aW5kb3cpKQotICAgICAgICAgICAgICAg ICAgICAgKG9yIChtaW5pYnVmZmVyLXdpbmRvdy1hY3RpdmUtcCBtaW5pLXdpbmRvdykKLSAg ICAgICAgICAgICAgICAgICAgICAgICAobm90IHJlc2l6ZS1taW5pLXdpbmRvd3MpKSkpKSkK KyAgICAgICAgICAgICAgKGFuZCAoZXEgKG1pbmlidWZmZXItd2luZG93LXR5cGUgZnJhbWUp ICdib3R0b20pCisgICAgICAgICAgICAgICAgICAgKG9yIChtaW5pYnVmZmVyLXdpbmRvdy1h Y3RpdmUtcAorICAgICAgICAgICAgICAgICAgICAgICAgKG1pbmlidWZmZXItd2luZG93IGZy YW1lICdtYXliZS1uaWwpKQorICAgICAgICAgICAgICAgICAgICAgICAobm90IHJlc2l6ZS1t aW5pLXdpbmRvd3MpKSkpKQogICAgICAgICAgKGxpbmUtMgogICAgICAgICAgIDs7IFNob3cg dGV4dCBtYWtlIHdpbmRvdyBvY2N1cHkgdGhlIHdob2xlIGZyYW1lCiAgICAgICAgICAgOzsg b25seSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZG8gdGhhdC4KZGlmZiAtLWdpdCBhL2xpc3Av Y2FsY3VsYXRvci5lbCBiL2xpc3AvY2FsY3VsYXRvci5lbAppbmRleCBiNjk1OWFmLi41Mjlm NWI0IDEwMDY0NAotLS0gYS9saXNwL2NhbGN1bGF0b3IuZWwKKysrIGIvbGlzcC9jYWxjdWxh dG9yLmVsCkBAIC03MTYsOCArNzE2LDEwIEBAIGNhbGN1bGF0b3IKICAgICAoc2F2ZS13aW5k b3ctZXhjdXJzaW9uCiAgICAgICAocmVxdWlyZSAnZWxlY3RyaWMpIChtZXNzYWdlIG5pbCkg OyBoaWRlIGxvYWQgbWVzc2FnZQogICAgICAgKGxldCAoKG9sZC1idWYgKHdpbmRvdy1idWZm ZXIgKG1pbmlidWZmZXItd2luZG93KSkpCisgICAgICAgICAgICAob2xkLWRlZGljYXRlZCAo d2luZG93LWRlZGljYXRlZC1wIChtaW5pYnVmZmVyLXdpbmRvdykpKQogICAgICAgICAgICAg KGVjaG8ta2V5c3Ryb2tlcyAwKQogICAgICAgICAgICAgKGdhcmJhZ2UtY29sbGVjdGlvbi1t ZXNzYWdlcyBuaWwpKSA7IG5vIGdjIG1zZyB3aGVuIGVsZWN0cmljCisgICAgICAgIChzZXQt d2luZG93LWRlZGljYXRlZC1wIChtaW5pYnVmZmVyLXdpbmRvdykgbmlsKQogICAgICAgICAo c2V0LXdpbmRvdy1idWZmZXIgKG1pbmlidWZmZXItd2luZG93KSBjYWxjdWxhdG9yLWJ1ZmZl cikKICAgICAgICAgKHNlbGVjdC13aW5kb3cgKG1pbmlidWZmZXItd2luZG93KSkKICAgICAg ICAgKGNhbGN1bGF0b3ItcmVzZXQpCkBAIC03MzMsNiArNzM1LDcgQEAgY2FsY3VsYXRvcgog ICAgICAgICAgICAgICAgbmlsCiAgICAgICAgICAgICAgICAobGFtYmRhIChfeCBfeSkgKGNh bGN1bGF0b3ItdXBkYXRlLWRpc3BsYXkpKSkpCiAgICAgICAgICAgKHNldC13aW5kb3ctYnVm ZmVyIChtaW5pYnVmZmVyLXdpbmRvdykgb2xkLWJ1ZikKKyAgICAgICAgICAoc2V0LXdpbmRv dy1kZWRpY2F0ZWQtcCAobWluaWJ1ZmZlci13aW5kb3cpIG9sZC1kZWRpY2F0ZWQpCiAgICAg ICAgICAgKGtpbGwtYnVmZmVyIGNhbGN1bGF0b3ItYnVmZmVyKSkpKQogICAgIChwcm9nbgog ICAgICAgKGNvbmQKZGlmZiAtLWdpdCBhL2xpc3AvY2VkZXQvc2VtYW50aWMvaWRsZS5lbCBi L2xpc3AvY2VkZXQvc2VtYW50aWMvaWRsZS5lbAppbmRleCAwN2I3YWY4Li5iZjBkMjMzIDEw MDY0NAotLS0gYS9saXNwL2NlZGV0L3NlbWFudGljL2lkbGUuZWwKKysrIGIvbGlzcC9jZWRl dC9zZW1hbnRpYy9pZGxlLmVsCkBAIC03NTksMTMgKzc1OSwxMyBAQCBzZW1hbnRpYy1pZGxl LXN1bW1hcnktaWRsZS1mdW5jdGlvbgogCTs7IFNob3cgdGhlIG1lc3NhZ2Ugd2l0aCBlbGRv YyBmdW5jdGlvbnMKICAgICAgICAgKHVubGVzcyAoYW5kIHN0ciAoYm91bmRwICdlbGRvYy1l Y2hvLWFyZWEtdXNlLW11bHRpbGluZS1wKQogICAgICAgICAgICAgICAgICAgICAgZWxkb2Mt ZWNoby1hcmVhLXVzZS1tdWx0aWxpbmUtcCkKLSAgICAgICAgICAobGV0ICgodyAoMS0gKHdp bmRvdy13aWR0aCAobWluaWJ1ZmZlci13aW5kb3cpKSkpKQorICAgICAgICAgIChsZXQgKCh3 ICgxLSAod2luZG93LXdpZHRoIChlY2hvLXdpbmRvdykpKSkpCiAgICAgICAgICAgICAoaWYg KD4gKGxlbmd0aCBzdHIpIHcpCiAgICAgICAgICAgICAgICAgKHNldHEgc3RyIChzdWJzdHJp bmcgc3RyIDAgdykpKSkpCiAJOzsgSSBib3Jyb3dlZCBzb21lIGJpdHMgZnJvbSBlbGRvYyB0 byBzaG9ydGVuIHRoZQogCTs7IG1lc3NhZ2UuCiAJKHdoZW4gc2VtYW50aWMtaWRsZS10cnVu Y2F0ZS1sb25nLXN1bW1hcmllcwotCSAgKGxldCAoKGVhLXdpZHRoICgxLSAod2luZG93LXdp ZHRoIChtaW5pYnVmZmVyLXdpbmRvdykpKSkKKwkgIChsZXQgKChlYS13aWR0aCAoMS0gKHdp bmRvdy13aWR0aCAoZWNoby13aW5kb3cpKSkpCiAJCShzdHJsZW4gKGxlbmd0aCBzdHIpKSkK IAkgICAgKHdoZW4gKD4gc3RybGVuIGVhLXdpZHRoKQogCSAgICAgIChzZXRxIHN0ciAoc3Vi c3RyaW5nIHN0ciAwIGVhLXdpZHRoKSkpKSkKQEAgLTgwMCw3ICs4MDAsMTAgQEAgc2VtYW50 aWMtaWRsZS1zdW1tYXJ5LXJlZnJlc2gtZWNoby1hcmVhCiAgICAgICAgKGlmIChhbmQgKG5v dCBleGVjdXRpbmcta2JkLW1hY3JvKQogCQkobm90IChhbmQgKGJvdW5kcCAnZWRlYnVnLWFj dGl2ZSkgZWRlYnVnLWFjdGl2ZSkpCiAJCShub3QgY3Vyc29yLWluLWVjaG8tYXJlYSkKLQkJ KG5vdCAoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2luZG93KSkpKQorICAg ICAgICAgICAgICAgIDs7IGVjaG8td2luZG93IHNob3VsZCBiZSBPSyBoZXJlIC0gd2hlbiBh IHNlcGFyYXRlCisgICAgICAgICAgICAgICAgOzsgbWluaWJ1ZmZlciB3aW5kb3cgaXMgc2Vs ZWN0ZWQsICdlbGRvYy1tZXNzYWdlJworICAgICAgICAgICAgICAgIDs7IHdvbid0IGRvIGFu eSBoYXJtLgorCQkobm90IChlcSAoc2VsZWN0ZWQtd2luZG93KSAoZWNoby13aW5kb3cpKSkp CiAgICAgICAgICAgIChlbGRvYy1tZXNzYWdlIGVsZG9jLWxhc3QtbWVzc2FnZSkKICAgICAg ICAgIChzZXRxIGVsZG9jLWxhc3QtbWVzc2FnZSBuaWwpKSkpCgpkaWZmIC0tZ2l0IGEvbGlz cC9kZXNjci10ZXh0LmVsIGIvbGlzcC9kZXNjci10ZXh0LmVsCmluZGV4IGQ4ZjgxODguLjE0 OGNlNjYgMTAwNjQ0Ci0tLSBhL2xpc3AvZGVzY3ItdGV4dC5lbAorKysgYi9saXNwL2Rlc2Ny LXRleHQuZWwKQEAgLTkyOSw3ICs5MjksNyBAQCBkZXNjcmliZS1jaGFyLWVsZG9jCiAgICAg ICAoZGVzY3JpYmUtY2hhci1lbGRvYy0tZm9ybWF0CiAgICAgICAgY2gKICAgICAgICAodW5s ZXNzIChlcSBlbGRvYy1lY2hvLWFyZWEtdXNlLW11bHRpbGluZS1wIHQpCi0gICAgICAgICAo MS0gKHdpbmRvdy13aWR0aCAobWluaWJ1ZmZlci13aW5kb3cpKSkpKSkpKQorICAgICAgICAg KDEtICh3aW5kb3ctd2lkdGggKGVjaG8td2luZG93KSkpKSkpKSkKCiAocHJvdmlkZSAnZGVz Y3ItdGV4dCkKCmRpZmYgLS1naXQgYS9saXNwL2Rlc2t0b3AuZWwgYi9saXNwL2Rlc2t0b3Au ZWwKaW5kZXggYTlmYTI4Ny4uNzkzMzk2NSAxMDA2NDQKLS0tIGEvbGlzcC9kZXNrdG9wLmVs CisrKyBiL2xpc3AvZGVza3RvcC5lbApAQCAtNzE1LDcgKzcxNSw3IEBAIGRlc2t0b3AtY2xl YXIKIAkgICAgIDs7IHdoaWNoIGFscmVhZHkgdGFrZXMgY2FyZSBvZiBmcmFtZSByZXN0b3Jh dGlvbiBhbmQgZGVsZXRpb24uCiAJICAgICAoY2FsbGVkLWludGVyYWN0aXZlbHktcCAnYW55 KSkKICAgICAobGV0KiAoKHRoaXMgKHNlbGVjdGVkLWZyYW1lKSkKLQkgICAobWluaSAod2lu ZG93LWZyYW1lIChtaW5pYnVmZmVyLXdpbmRvdyB0aGlzKSkpKSA7IGluIGNhc2UgdGhleSBk aWZmZXIKKwkgICAobWluaSAod2luZG93LWZyYW1lIChtaW5pYnVmZmVyLXdpbmRvdyB0aGlz ICdtYXliZS1uaWwpKSkpCiAgICAgICAoZG9saXN0IChmcmFtZSAoc29ydCAoZnJhbWUtbGlz dCkgIydmcmFtZXNldC1taW5pYnVmZmVybGVzcy1maXJzdC1wKSkKIAkoY29uZGl0aW9uLWNh c2UgZXJyCiAJICAgICh1bmxlc3MgKG9yIChlcSBmcmFtZSB0aGlzKQpkaWZmIC0tZ2l0IGEv bGlzcC9lbWFjcy1saXNwL2VsZG9jLmVsIGIvbGlzcC9lbWFjcy1saXNwL2VsZG9jLmVsCmlu ZGV4IDQ5YmE3MWYuLmMyOTU0ZDYgMTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9lbGRv Yy5lbAorKysgYi9saXNwL2VtYWNzLWxpc3AvZWxkb2MuZWwKQEAgLTI1OCw3ICsyNTgsMTIg QEAgZWxkb2MtbWluaWJ1ZmZlci1tZXNzYWdlCiAJCSAgbmlsIHQpCiAJKHdpdGgtY3VycmVu dC1idWZmZXIKIAkgICAgKHdpbmRvdy1idWZmZXIKLQkgICAgIChvciAod2luZG93LWluLWRp cmVjdGlvbiAnYWJvdmUgKG1pbmlidWZmZXItd2luZG93KSkKKwkgICAgIChvciAobGV0ICgo bWluaS13aW5kb3cgKG1pbmlidWZmZXItd2luZG93IG5pbCAnbWF5YmUtbmlsKSkpCisgICAg ICAgICAgICAgICAgICAgKGFuZCBtaW5pLXdpbmRvdworICAgICAgICAgICAgICAgICAgICAg ICAgKG1lbXEgKHdpbmRvdy1taW5pYnVmZmVyLXAgbWluaS13aW5kb3cpICcoYm90dG9tIGxv b3NlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IFVzZSB0aGUgd2luZG93IGFib3Zl IHRoZSBtaW5pYnVmZmVyIHdpbmRvdworICAgICAgICAgICAgICAgICAgICAgICAgOzsgcHJv dmlkZSB0aGVyZSBpcyBvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICAod2luZG93LWlu LWRpcmVjdGlvbiAnYWJvdmUgbWluaS13aW5kb3cpKSkKIAkJIChtaW5pYnVmZmVyLXNlbGVj dGVkLXdpbmRvdykKIAkJIChnZXQtbGFyZ2VzdC13aW5kb3cpKSkKICAgICAod2hlbiBtb2Rl LWxpbmUtZm9ybWF0CkBAIC0zODAsOCArMzg1LDE0IEBAIGVsZG9jLWRvY3N0cmluZy1mb3Jt YXQtc3ltLWRvYwogICAobGV0KiAoKGVhLW11bHRpIGVsZG9jLWVjaG8tYXJlYS11c2UtbXVs dGlsaW5lLXApCiAgICAgICAgICA7OyBTdWJ0cmFjdCAxIGZyb20gd2luZG93IHdpZHRoIHNp bmNlIGVtYWNzIHdpbGwgbm90IHdyaXRlCiAgICAgICAgICA7OyBhbnkgY2hhcnMgdG8gdGhl IGxhc3QgY29sdW1uLCBvciBpbiBsYXRlciB2ZXJzaW9ucywgd2lsbAotICAgICAgICAgOzsg Y2F1c2UgYSB3cmFwYXJvdW5kIGFuZCByZXNpemUgb2YgdGhlIGVjaG8gYXJlYS4KLSAgICAg ICAgIChlYS13aWR0aCAoMS0gKHdpbmRvdy13aWR0aCAobWluaWJ1ZmZlci13aW5kb3cpKSkp CisgICAgICAgICA7OyBjYXVzZSBhIHdyYXBhcm91bmQgYW5kIHJlc2l6ZSBvZiB0aGUgZWNo byBhcmVhLiAgSG93ZXZlciwKKyAgICAgICAgIDs7IGlmIHRoZSBmcmFtZSBkb2VzIG5vdCBo YXZlIGEgbWluaWJ1ZmZlciB3aW5kb3csIGRvIG5vdAorICAgICAgICAgOzsgY3JlYXRlIG9u ZSBoZXJlIGJ1dCB1c2UgdGhlIHdpZHRoIG9mIHRoZSBmcmFtZSdzIHNlbGVjdGVkCisgICAg ICAgICA7OyB3aW5kb3cuCisgICAgICAgICAobWluaS13aW5kb3cgKGVjaG8td2luZG93IG5p bCAnbWF5YmUtbmlsKSkKKyAgICAgICAgIChlYS13aWR0aCAoaWYgbWluaS13aW5kb3cKKyAg ICAgICAgICAgICAgICAgICAgICAgKDEtICh3aW5kb3ctd2lkdGggbWluaS13aW5kb3cpKQor ICAgICAgICAgICAgICAgICAgICAgKDEtICh3aW5kb3ctd2lkdGggKHNlbGVjdGVkLXdpbmRv dykpKSkpCiAgICAgICAgICAoc3RyaXAgKC0gKCsgKGxlbmd0aCBwcmVmaXgpIChsZW5ndGgg ZG9jKSkgZWEtd2lkdGgpKSkKICAgICAoY29uZCAoKG9yICg8PSBzdHJpcCAwKQogICAgICAg ICAgICAgICAgKGVxIGVhLW11bHRpIHQpCmRpZmYgLS1naXQgYS9saXNwL2VyYy9lcmMtdHJh Y2suZWwgYi9saXNwL2VyYy9lcmMtdHJhY2suZWwKaW5kZXggY2FlMThmNi4uMTIzZGUzOCAx MDA2NDQKLS0tIGEvbGlzcC9lcmMvZXJjLXRyYWNrLmVsCisrKyBiL2xpc3AvZXJjL2VyYy10 cmFjay5lbApAQCAtNjM3LDcgKzYzNyw4IEBAIGVyYy1idWZmZXItdmlzaWJsZQogOzs7IFRy YWNraW5nIHRoZSBjaGFubmVsIG1vZGlmaWNhdGlvbnMKCiAoZGVmdW4gZXJjLXdpbmRvdy1j b25maWd1cmF0aW9uLWNoYW5nZSAoKQotICAodW5sZXNzIChtaW5pYnVmZmVyLXdpbmRvdy1h Y3RpdmUtcCAobWluaWJ1ZmZlci13aW5kb3cpKQorICAodW5sZXNzIChhbmQgKG1pbmlidWZm ZXItd2luZG93IG5pbCAnbWF5YmUtbmlsKQorCSAgICAgICAobWluaWJ1ZmZlci13aW5kb3ct YWN0aXZlLXAgKG1pbmlidWZmZXItd2luZG93KSkpCiAgICAgOzsgZGVsYXkgdGhpcyB1bnRp bCBjb21tYW5kIGhhcyBmaW5pc2hlZCB0byBtYWtlIHN1cmUgd2luZG93IGlzCiAgICAgOzsg YWN0dWFsbHkgdmlzaWJsZSBiZWZvcmUgY2xlYXJpbmcgYWN0aXZpdHkKICAgICAoYWRkLWhv b2sgJ3Bvc3QtY29tbWFuZC1ob29rICdlcmMtbW9kaWZpZWQtY2hhbm5lbHMtdXBkYXRlKSkp CmRpZmYgLS1naXQgYS9saXNwL2ZyYW1lLmVsIGIvbGlzcC9mcmFtZS5lbAppbmRleCA1NmI4 YzU0Li5hMjFkOTA1IDEwMDY0NAotLS0gYS9saXNwL2ZyYW1lLmVsCisrKyBiL2xpc3AvZnJh bWUuZWwKQEAgLTMxOSw3ICszMTksOCBAQCBmcmFtZS1ub3RpY2UtdXNlci1zZXR0aW5ncwog ICAobGV0ICgob2xkLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQogCSh3aW5kb3ctc3lzdGVt LWZyYW1lLWFsaXN0CiAgICAgICAgICAoY2RyIChhc3NxIGluaXRpYWwtd2luZG93LXN5c3Rl bQotICAgICAgICAgICAgICAgICAgICB3aW5kb3ctc3lzdGVtLWRlZmF1bHQtZnJhbWUtYWxp c3QpKSkpCisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy1zeXN0ZW0tZGVmYXVsdC1mcmFt ZS1hbGlzdCkpKQorICAgICAgICBsb29zZSkKCiAgICAgKHdoZW4gKGFuZCBmcmFtZS1ub3Rp Y2UtdXNlci1zZXR0aW5ncwogCSAgICAgICAobnVsbCBmcmFtZS1pbml0aWFsLWZyYW1lKSkK QEAgLTQ2MSw0NiArNDYyLDQ4IEBAIGZyYW1lLW5vdGljZS11c2VyLXNldHRpbmdzCiAJCSAg IChhcHBlbmQgZnJhbWUtaW5pdGlhbC1nZW9tZXRyeS1hcmd1bWVudHMKIAkJCSAgICcoKHVz ZXItc2l6ZSAuIHQpICh1c2VyLXBvc2l0aW9uIC4gdCkpCiAJCQkgICBwYXJtcykpKQorCisg ICAgICAgICAgICAoc2V0cSBsb29zZSAoZXEgKGNkciAoYXNzcSAnbWluaWJ1ZmZlciBwYXJt cykpICdsb29zZSkpCisKIAkgICAgOzsgVGhlIGluaXRpYWwgZnJhbWUsIHdoaWNoIHdlIGFy ZSBhYm91dCB0byBkZWxldGUsIG1heSBiZQogCSAgICA7OyB0aGUgb25seSBmcmFtZSB3aXRo IGEgbWluaWJ1ZmZlci4gIElmIGl0IGlzLCBjcmVhdGUgYQotCSAgICA7OyBuZXcgb25lLgot CSAgICAob3IgKGRlbHEgZnJhbWUtaW5pdGlhbC1mcmFtZSAobWluaWJ1ZmZlci1mcmFtZS1s aXN0KSkKLQkJKG1ha2UtaW5pdGlhbC1taW5pYnVmZmVyLWZyYW1lIG5pbCkpCisJICAgIDs7 IG5ldyBvbmUgdW5sZXNzIHdlJ3JlIHVzaW5nIGxvb3NlIG1pbmlidWZmZXIgd2luZG93cy4K KwkgICAgKHVubGVzcyAob3IgbG9vc2UgKGRlbHEgZnJhbWUtaW5pdGlhbC1mcmFtZSAobWlu aWJ1ZmZlci1mcmFtZS1saXN0KSkpCisgICAgICAgICAgICAgIChtYWtlLWluaXRpYWwtbWlu aWJ1ZmZlci1mcmFtZSBuaWwpKQoKIAkgICAgOzsgSWYgdGhlIGluaXRpYWwgZnJhbWUgaXMg c2VydmluZyBhcyBhIHN1cnJvZ2F0ZQogCSAgICA7OyBtaW5pYnVmZmVyIGZyYW1lIGZvciBh bnkgZnJhbWVzLCB3ZSBuZWVkIHRvIHdlYW4gdGhlbQogCSAgICA7OyBvbnRvIGEgbmV3IGZy YW1lLiAgVGhlIGRlZmF1bHQtbWluaWJ1ZmZlci1mcmFtZQogCSAgICA7OyB2YXJpYWJsZSBt dXN0IGJlIGhhbmRsZWQgc2ltaWxhcmx5LgotCSAgICAobGV0ICgodXNlcnMtb2YtaW5pdGlh bAotCQkgICAoZmlsdGVyZWQtZnJhbWUtbGlzdAotICAgICAgICAgICAgICAgICAgICAobGFt YmRhIChmcmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAoYW5kIChub3QgKGVxIGZyYW1l IGZyYW1lLWluaXRpYWwtZnJhbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVx ICh3aW5kb3ctZnJhbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pbmli dWZmZXItd2luZG93IGZyYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm cmFtZS1pbml0aWFsLWZyYW1lKSkpKSkpCi0gICAgICAgICAgICAgIChpZiAob3IgdXNlcnMt b2YtaW5pdGlhbAotCQkgICAgICAoZXEgZGVmYXVsdC1taW5pYnVmZmVyLWZyYW1lIGZyYW1l LWluaXRpYWwtZnJhbWUpKQotCi0JCSAgOzsgQ2hvb3NlIGFuIGFwcHJvcHJpYXRlIGZyYW1l LiAgUHJlZmVyIGZyYW1lcyB3aGljaAotCQkgIDs7IGFyZSBvbmx5IG1pbmlidWZmZXJzLgor ICAgICAgICAgICAgKHVubGVzcyBsb29zZQorICAgICAgICAgICAgICAobGV0ICgodXNlcnMt b2YtaW5pdGlhbAorICAgICAgICAgICAgICAgICAgICAgKGZpbHRlcmVkLWZyYW1lLWxpc3QK KyAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChmcmFtZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgIChhbmQgKG5vdCAoZXEgZnJhbWUgZnJhbWUtaW5pdGlhbC1mcmFtZSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5pYnVmZmVyLXdpbmRvdyBmcmFtZSAn bWF5YmUtbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKHdpbmRvdy1m cmFtZSAobWluaWJ1ZmZlci13aW5kb3cgZnJhbWUpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnJhbWUtaW5pdGlhbC1mcmFtZSkpKSkpKQorICAgICAgICAgICAgICAg ICh3aGVuIChvciB1c2Vycy1vZi1pbml0aWFsCisJCSAgICAgICAgICAoZXEgZGVmYXVsdC1t aW5pYnVmZmVyLWZyYW1lIGZyYW1lLWluaXRpYWwtZnJhbWUpKQorCisJCSAgOzsgQ2hvb3Nl IGFuIGFwcHJvcHJpYXRlIGZyYW1lLiAgUHJlZmVyIG1pbmlidWZmZXIKKwkJICA7OyBvbmx5 IGZyYW1lcy4KIAkJICAobGV0KiAoKG5ldy1zdXJyb2dhdGUKLQkJCSAgKGNhcgotCQkJICAg KG9yIChmaWx0ZXJlZC1mcmFtZS1saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsYW1iZGEgKGZyYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChlcSAoY2RyIChhc3NxICdtaW5pYnVmZmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGZyYW1lLXBhcmFtZXRlcnMgZnJhbWUpKSkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkpKSkKLQkJCSAgICAg ICAobWluaWJ1ZmZlci1mcmFtZS1saXN0KSkpKQotCQkJIChuZXctbWluaWJ1ZmZlciAobWlu aWJ1ZmZlci13aW5kb3cgbmV3LXN1cnJvZ2F0ZSkpKQotCi0JCSAgICAoaWYgKGVxIGRlZmF1 bHQtbWluaWJ1ZmZlci1mcmFtZSBmcmFtZS1pbml0aWFsLWZyYW1lKQotCQkJKHNldHEgZGVm YXVsdC1taW5pYnVmZmVyLWZyYW1lIG5ldy1zdXJyb2dhdGUpKQotCi0JCSAgICA7OyBXZWFu IHRoZSBmcmFtZXMgdXNpbmcgZnJhbWUtaW5pdGlhbC1mcmFtZSBhcwotCQkgICAgOzsgdGhl aXIgbWluaWJ1ZmZlciBmcmFtZS4KLQkJICAgIChkb2xpc3QgKGZyYW1lIHVzZXJzLW9mLWlu aXRpYWwpCi0gICAgICAgICAgICAgICAgICAgICAgKG1vZGlmeS1mcmFtZS1wYXJhbWV0ZXJz Ci0gICAgICAgICAgICAgICAgICAgICAgIGZyYW1lIChsaXN0IChjb25zICdtaW5pYnVmZmVy IG5ldy1taW5pYnVmZmVyKSkpKSkpKQorCQkJICAoY2FyIChvciAoZmlsdGVyZWQtZnJhbWUt bGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoZnJh bWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAobWluaWJ1 ZmZlci13aW5kb3ctdHlwZSBmcmFtZSkgJ29ubHkpKSkKKwkJCSAgICAgICAgICAgKG1pbmli dWZmZXItZnJhbWUtbGlzdCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobmV3LW1p bmlidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCBuZXctc3Vycm9nYXRl IChtaW5pYnVmZmVyLXdpbmRvdyBuZXctc3Vycm9nYXRlKSkpKQorCQkgICAgKHdoZW4gbmV3 LW1pbmlidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoZXEgZGVmYXVsdC1t aW5pYnVmZmVyLWZyYW1lIGZyYW1lLWluaXRpYWwtZnJhbWUpCisJCSAgICAgICAgKHNldHEg ZGVmYXVsdC1taW5pYnVmZmVyLWZyYW1lIG5ldy1zdXJyb2dhdGUpKQorCisJCSAgICAgIDs7 IFdlYW4gdGhlIGZyYW1lcyB1c2luZyBmcmFtZS1pbml0aWFsLWZyYW1lIGFzCisJCSAgICAg IDs7IHRoZWlyIG1pbmlidWZmZXIgZnJhbWUuCisJCSAgICAgIChkb2xpc3QgKGZyYW1lIHVz ZXJzLW9mLWluaXRpYWwpCisgICAgICAgICAgICAgICAgICAgICAgICAobW9kaWZ5LWZyYW1l LXBhcmFtZXRlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSAobGlzdCAoY29u cyAnbWluaWJ1ZmZlciBuZXctbWluaWJ1ZmZlcikpKSkpKSkpKQoKICAgICAgICAgICAgIDs7 IFJlZGlyZWN0IGV2ZW50cyBlbnF1ZXVlZCBhdCB0aGlzIGZyYW1lIHRvIHRoZSBuZXcgZnJh bWUuCiAJICAgIDs7IElzIHRoaXMgYSBnb29kIGlkZWE/CkBAIC01NzMsNiArNTc2LDcgQEAg ZnJhbWUtbm90aWNlLXVzZXItc2V0dGluZ3MKICAgICAoc2V0cSBmcmFtZS1pbml0aWFsLWZy YW1lIG5pbCkpKQoKIChkZWZ1biBtYWtlLWluaXRpYWwtbWluaWJ1ZmZlci1mcmFtZSAoZGlz cGxheSkKKyAgIk1ha2UgYSBuZXcgbWluaWJ1ZmZlci1vbmx5IGZyYW1lIG9uIERJU1BMQVku IgogICAobGV0ICgocGFybXMgKGFwcGVuZCBtaW5pYnVmZmVyLWZyYW1lLWFsaXN0ICcoKG1p bmlidWZmZXIgLiBvbmx5KSkpKSkKICAgICAoaWYgZGlzcGxheQogCShtYWtlLWZyYW1lLW9u LWRpc3BsYXkgZGlzcGxheSBwYXJtcykKQEAgLTc2Myw0NCArNzY3LDQ1IEBAIG1ha2UtZnJh bWUKIAkgKHBhcmFtcyBwYXJhbWV0ZXJzKQogCSBmcmFtZSkKCi0gICAgKHVubGVzcyAoZ2V0 IHcgJ3dpbmRvdy1zeXN0ZW0taW5pdGlhbGl6ZWQpCi0gICAgICAobGV0ICgod2luZG93LXN5 c3RlbSB3KSkgICAgICAgICAgO0hhY2sgYXR0YWNrIQotICAgICAgICAod2luZG93LXN5c3Rl bS1pbml0aWFsaXphdGlvbiBkaXNwbGF5KSkKLSAgICAgIChzZXRxIHgtZGlzcGxheS1uYW1l IGRpc3BsYXkpCi0gICAgICAocHV0IHcgJ3dpbmRvdy1zeXN0ZW0taW5pdGlhbGl6ZWQgdCkp Ci0KLSAgICA7OyBBZGQgcGFyYW1ldGVycyBmcm9tIGB3aW5kb3ctc3lzdGVtLWRlZmF1bHQt ZnJhbWUtYWxpc3QnLgotICAgIChkb2xpc3QgKHAgKGNkciAoYXNzcSB3IHdpbmRvdy1zeXN0 ZW0tZGVmYXVsdC1mcmFtZS1hbGlzdCkpKQotICAgICAgKHVubGVzcyAoYXNzcSAoY2FyIHAp IHBhcmFtcykKLQkocHVzaCBwIHBhcmFtcykpKQotICAgIDs7IEFkZCBwYXJhbWV0ZXJzIGZy b20gYGRlZmF1bHQtZnJhbWUtYWxpc3QnLgotICAgIChkb2xpc3QgKHAgZGVmYXVsdC1mcmFt ZS1hbGlzdCkKLSAgICAgICh1bmxlc3MgKGFzc3EgKGNhciBwKSBwYXJhbXMpCi0JKHB1c2gg cCBwYXJhbXMpKSkKLSAgICA7OyBOb3cgbWFrZSB0aGUgZnJhbWUuCi0gICAgKHJ1bi1ob29r cyAnYmVmb3JlLW1ha2UtZnJhbWUtaG9vaykKLQotOzsgICAgIChzZXRxIGZyYW1lLXNpemUt aGlzdG9yeSAnKDEwMDApKQotCi0gICAgKHNldHEgZnJhbWUgKGxldCAoKHdpbmRvdy1zeXN0 ZW0gdykpIDtIYWNrIGF0dGFjayEKLSAgICAgICAgICAgICAgICAgIChmcmFtZS1jcmVhdGlv bi1mdW5jdGlvbiBwYXJhbXMpKSkKLSAgICAobm9ybWFsLWVyYXNlLWlzLWJhY2tzcGFjZS1z ZXR1cC1mcmFtZSBmcmFtZSkKLSAgICA7OyBJbmhlcml0IHRoZSBvcmlnaW5hbCBmcmFtZSdz IHBhcmFtZXRlcnMuCi0gICAgKGRvbGlzdCAocGFyYW0gZnJhbWUtaW5oZXJpdGVkLXBhcmFt ZXRlcnMpCi0gICAgICAodW5sZXNzIChhc3NxIHBhcmFtIHBhcmFtZXRlcnMpICAgO092ZXJy aWRkZW4gYnkgZXhwbGljaXQgcGFyYW1ldGVycy4KLSAgICAgICAgKGxldCAoKHZhbCAoZnJh bWUtcGFyYW1ldGVyIG9sZGZyYW1lIHBhcmFtKSkpCi0gICAgICAgICAgKHdoZW4gdmFsIChz ZXQtZnJhbWUtcGFyYW1ldGVyIGZyYW1lIHBhcmFtIHZhbCkpKSkpCi0KLSAgICAod2hlbiAo bnVtYmVycCAoY2FyIGZyYW1lLXNpemUtaGlzdG9yeSkpCi0gICAgICAoc2V0cSBmcmFtZS1z aXplLWhpc3RvcnkKLQkgICAgKGNvbnMgKDEtIChjYXIgZnJhbWUtc2l6ZS1oaXN0b3J5KSkK LQkJICAoY29ucyAobGlzdCBmcmFtZSAiTUFLRS1GUkFNRSIpCi0JCQkoY2RyIGZyYW1lLXNp emUtaGlzdG9yeSkpKSkpCi0KLSAgICA7OyBXZSBjYW4gcnVuIGB3aW5kb3ctY29uZmlndXJh dGlvbi1jaGFuZ2UtaG9vaycgZm9yIHRoaXMgZnJhbWUgbm93LgotICAgIChmcmFtZS1hZnRl ci1tYWtlLWZyYW1lIGZyYW1lIHQpCi0gICAgKHJ1bi1ob29rLXdpdGgtYXJncyAnYWZ0ZXIt bWFrZS1mcmFtZS1mdW5jdGlvbnMgZnJhbWUpCi0gICAgZnJhbWUpKQorICAgICh1bmxlc3Mg KGFzc3EgJ25vLW1ha2UtZnJhbWUgcGFyYW1zKQorICAgICAgKHVubGVzcyAoZ2V0IHcgJ3dp bmRvdy1zeXN0ZW0taW5pdGlhbGl6ZWQpCisgICAgICAgIChsZXQgKCh3aW5kb3ctc3lzdGVt IHcpKSAgICAgICAgICAgICAgICA7SGFjayBhdHRhY2shCisgICAgICAgICAgKHdpbmRvdy1z eXN0ZW0taW5pdGlhbGl6YXRpb24gZGlzcGxheSkpCisgICAgICAgIChzZXRxIHgtZGlzcGxh eS1uYW1lIGRpc3BsYXkpCisgICAgICAgIChwdXQgdyAnd2luZG93LXN5c3RlbS1pbml0aWFs aXplZCB0KSkKKworICAgICAgOzsgQWRkIHBhcmFtZXRlcnMgZnJvbSBgd2luZG93LXN5c3Rl bS1kZWZhdWx0LWZyYW1lLWFsaXN0Jy4KKyAgICAgIChkb2xpc3QgKHAgKGNkciAoYXNzcSB3 IHdpbmRvdy1zeXN0ZW0tZGVmYXVsdC1mcmFtZS1hbGlzdCkpKQorICAgICAgICAodW5sZXNz IChhc3NxIChjYXIgcCkgcGFyYW1zKQorCSAgKHB1c2ggcCBwYXJhbXMpKSkKKyAgICAgIDs7 IEFkZCBwYXJhbWV0ZXJzIGZyb20gYGRlZmF1bHQtZnJhbWUtYWxpc3QnLgorICAgICAgKGRv bGlzdCAocCBkZWZhdWx0LWZyYW1lLWFsaXN0KQorICAgICAgICAodW5sZXNzIChhc3NxIChj YXIgcCkgcGFyYW1zKQorCSAgKHB1c2ggcCBwYXJhbXMpKSkKKyAgICAgIDs7IE5vdyBtYWtl IHRoZSBmcmFtZS4KKyAgICAgIChydW4taG9va3MgJ2JlZm9yZS1tYWtlLWZyYW1lLWhvb2sp CisKKyAgICAgIDs7ICAgICAoc2V0cSBmcmFtZS1zaXplLWhpc3RvcnkgJygxMDAwKSkKKwor ICAgICAgKHNldHEgZnJhbWUgKGxldCAoKHdpbmRvdy1zeXN0ZW0gdykpICAgICAgO0hhY2sg YXR0YWNrIQorICAgICAgICAgICAgICAgICAgICAoZnJhbWUtY3JlYXRpb24tZnVuY3Rpb24g cGFyYW1zKSkpCisgICAgICAobm9ybWFsLWVyYXNlLWlzLWJhY2tzcGFjZS1zZXR1cC1mcmFt ZSBmcmFtZSkKKyAgICAgIDs7IEluaGVyaXQgdGhlIG9yaWdpbmFsIGZyYW1lJ3MgcGFyYW1l dGVycy4KKyAgICAgIChkb2xpc3QgKHBhcmFtIGZyYW1lLWluaGVyaXRlZC1wYXJhbWV0ZXJz KQorICAgICAgICAodW5sZXNzIChhc3NxIHBhcmFtIHBhcmFtZXRlcnMpIDtPdmVycmlkZGVu IGJ5IGV4cGxpY2l0IHBhcmFtZXRlcnMuCisgICAgICAgICAgKGxldCAoKHZhbCAoZnJhbWUt cGFyYW1ldGVyIG9sZGZyYW1lIHBhcmFtKSkpCisgICAgICAgICAgICAod2hlbiB2YWwgKHNl dC1mcmFtZS1wYXJhbWV0ZXIgZnJhbWUgcGFyYW0gdmFsKSkpKSkKKworICAgICAgKHdoZW4g KG51bWJlcnAgKGNhciBmcmFtZS1zaXplLWhpc3RvcnkpKQorICAgICAgICAoc2V0cSBmcmFt ZS1zaXplLWhpc3RvcnkKKwkgICAgICAoY29ucyAoMS0gKGNhciBmcmFtZS1zaXplLWhpc3Rv cnkpKQorCQkgICAgKGNvbnMgKGxpc3QgZnJhbWUgIk1BS0UtRlJBTUUiKQorCQkJICAoY2Ry IGZyYW1lLXNpemUtaGlzdG9yeSkpKSkpCisKKyAgICAgIDs7IFdlIGNhbiBydW4gYHdpbmRv dy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rJyBmb3IgdGhpcyBmcmFtZSBub3cuCisgICAg ICAoZnJhbWUtYWZ0ZXItbWFrZS1mcmFtZSBmcmFtZSB0KQorICAgICAgKHJ1bi1ob29rLXdp dGgtYXJncyAnYWZ0ZXItbWFrZS1mcmFtZS1mdW5jdGlvbnMgZnJhbWUpCisgICAgICBmcmFt ZSkpKQoKIChkZWZ1biBmaWx0ZXJlZC1mcmFtZS1saXN0IChwcmVkaWNhdGUpCiAgICJSZXR1 cm4gYSBsaXN0IG9mIGFsbCBsaXZlIGZyYW1lcyB3aGljaCBzYXRpc2Z5IFBSRURJQ0FURS4i CkBAIC04MTYsNyArODIxLDkgQEAgbWluaWJ1ZmZlci1mcmFtZS1saXN0CiAgICJSZXR1cm4g YSBsaXN0IG9mIGFsbCBmcmFtZXMgd2l0aCB0aGVpciBvd24gbWluaWJ1ZmZlcnMuIgogICAo ZmlsdGVyZWQtZnJhbWUtbGlzdAogICAgKGxhbWJkYSAoZnJhbWUpCi0gICAgIChlcSBmcmFt ZSAod2luZG93LWZyYW1lIChtaW5pYnVmZmVyLXdpbmRvdyBmcmFtZSkpKSkpKQorICAgICAo bGV0ICgobWluaWJ1ZmZlci13aW5kb3cgKG1pbmlidWZmZXItd2luZG93IGZyYW1lICdtYXli ZS1uaWwpKSkKKyAgICAgICAoYW5kICh3aW5kb3ctbGl2ZS1wIG1pbmlidWZmZXItd2luZG93 KQorICAgICAgICAgICAgKGVxIGZyYW1lICh3aW5kb3ctZnJhbWUgbWluaWJ1ZmZlci13aW5k b3cpKSkpKSkpCgogOzsgVXNlZCB0byBiZSBjYWxsZWQgYHRlcm1pbmFsLWlkJyBpbiB0ZXJt ZGV2LmVsLgogKGRlZnVuIGdldC1kZXZpY2UtdGVybWluYWwgKGRldmljZSkKQEAgLTE3NDQs MTIgKzE3NTEsMTAgQEAgZnJhbWUtc2l6ZS1jaGFuZ2VkLXAKIGZvciBGUkFNRS4iCiAgIChs ZXQqICgoZnJhbWUgKHdpbmRvdy1ub3JtYWxpemUtZnJhbWUgZnJhbWUpKQogICAgICAgICAg KHJvb3QgKGZyYW1lLXJvb3Qtd2luZG93IGZyYW1lKSkKLSAgICAgICAgIChtaW5pIChtaW5p YnVmZmVyLXdpbmRvdyBmcmFtZSkpCisgICAgICAgICAobWluaSAobWluaWJ1ZmZlci13aW5k b3cgZnJhbWUgJ21heWJlLW5pbCkpCiAgICAgICAgICAobWluaS1oZWlnaHQtYmVmb3JlLXNp emUtY2hhbmdlIDApCiAgICAgICAgICAobWluaS1oZWlnaHQgMCkpCi0gICAgOzsgRlJBTUUn cyBtaW5pYnVmZmVyIHdpbmRvdyBjb3VudHMgaWZmIGl0J3Mgb24gRlJBTUUgYW5kIEZSQU1F IGlzCi0gICAgOzsgbm90IGEgbWluaWJ1ZmZlci1vbmx5IGZyYW1lLgotICAgICh3aGVuIChh bmQgKGVxICh3aW5kb3ctZnJhbWUgbWluaSkgZnJhbWUpIChub3QgKGVxIG1pbmkgcm9vdCkp KQorICAgICh3aGVuIChhbmQgbWluaSAod2luZG93LW1pbmlidWZmZXItZml4ZWQtcCBtaW5p KSkKICAgICAgIChzZXRxIG1pbmktaGVpZ2h0LWJlZm9yZS1zaXplLWNoYW5nZQogICAgICAg ICAgICAgKHdpbmRvdy1waXhlbC1oZWlnaHQtYmVmb3JlLXNpemUtY2hhbmdlIG1pbmkpKQog ICAgICAgKHNldHEgbWluaS1oZWlnaHQgKHdpbmRvdy1waXhlbC1oZWlnaHQgbWluaSkpKQpA QCAtMjE1OSwxOSArMjE2NCwyNCBAQCBkZWxldGUtb3RoZXItZnJhbWVzCiBhIGxpdmUgZnJh bWUgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuIgogICAoaW50ZXJhY3RpdmUp CiAgIChzZXRxIGZyYW1lICh3aW5kb3ctbm9ybWFsaXplLWZyYW1lIGZyYW1lKSkKLSAgKGxl dCAoKG1pbmlidWZmZXItZnJhbWUgKHdpbmRvdy1mcmFtZSAobWluaWJ1ZmZlci13aW5kb3cg ZnJhbWUpKSkKKyAgKGxldCAoKG1pbmlidWZmZXItZnJhbWUgKHdpbmRvdy1mcmFtZSAobWlu aWJ1ZmZlci13aW5kb3cgZnJhbWUgJ21heWJlLW5pbCkpKQogICAgICAgICAodGhpcyAobmV4 dC1mcmFtZSBmcmFtZSB0KSkKICAgICAgICAgKHBhcmVudCAoZnJhbWUtcGFyZW50IGZyYW1l KSkKLSAgICAgICAgbmV4dCkKKyAgICAgICAgbmV4dCBtaW5pLXdpbmRvdyBtaW5pLWZyYW1l KQogICAgIDs7IEluIGEgZmlyc3Qgcm91bmQgY29uc2lkZXIgbWluaWJ1ZmZlci1sZXNzIGZy YW1lcyBvbmx5LgogICAgICh3aGlsZSAobm90IChlcSB0aGlzIGZyYW1lKSkKICAgICAgIChz ZXRxIG5leHQgKG5leHQtZnJhbWUgdGhpcyB0KSkKLSAgICAgICh1bmxlc3MgKG9yIChlcSAo d2luZG93LWZyYW1lIChtaW5pYnVmZmVyLXdpbmRvdyB0aGlzKSkgdGhpcykKLSAgICAgICAg ICAgICAgICAgIDs7IFdoZW4gRlJBTUUgaXMgYSBjaGlsZCBmcmFtZSwgZGVsZXRlIGl0cyBz aWJsaW5ncwotICAgICAgICAgICAgICAgICAgOzsgb25seS4KLSAgICAgICAgICAgICAgICAg IChhbmQgcGFyZW50IChub3QgKGVxIChmcmFtZS1wYXJlbnQgdGhpcykgcGFyZW50KSkpCi0g ICAgICAgICAgICAgICAgICA7OyBEbyBub3QgZGVsZXRlIGEgY2hpbGQgZnJhbWUgb2YgRlJB TUUuCi0gICAgICAgICAgICAgICAgICAoZXEgKGZyYW1lLXBhcmVudCB0aGlzKSBmcmFtZSkp CisgICAgICA7OyBQcm9iYWJseSB3ZSBzaG91bGQgZGlzYWxsb3cgbm9uLWxvb3NlIG1pbmli dWZmZXIgd2luZG93CisgICAgICA7OyBmcmFtZXMgdG8gaGF2ZSBhIGxvb3NlIG1pbmlidWZm ZXIgd2luZG93IG9uIGFub3RoZXIgZnJhbWUuCisgICAgICAod2hlbiAoYW5kIChub3QgKGVx IChtaW5pYnVmZmVyLXdpbmRvdy10eXBlIHRoaXMpICdsb29zZSkpCisgICAgICAgICAgICAg ICAgIChzZXRxIG1pbmktd2luZG93IChtaW5pYnVmZmVyLXdpbmRvdyB0aGlzICdtYXliZS1u aWwpKQorICAgICAgICAgICAgICAgICAobm90IChlcSAoc2V0cSBtaW5pLWZyYW1lICh3aW5k b3ctZnJhbWUgbWluaS13aW5kb3cpKSB0aGlzKSkKKyAgICAgICAgICAgICAgICAgKHdpbmRv dy1taW5pYnVmZmVyLW5vbi1sb29zZS1wIG1pbmktZnJhbWUpCisgICAgICAgICAgICAgICAg IDs7IFdoZW4gRlJBTUUgaXMgYSBjaGlsZCBmcmFtZSwgZGVsZXRlIGl0cyBzaWJsaW5ncwor ICAgICAgICAgICAgICAgICA7OyBvbmx5LgorICAgICAgICAgICAgICAgICAob3IgKG5vdCBw YXJlbnQpIChlcSAoZnJhbWUtcGFyZW50IHRoaXMpIHBhcmVudCkpCisgICAgICAgICAgICAg ICAgIDs7IERvIG5vdCBkZWxldGUgYSBjaGlsZCBmcmFtZSBvZiBGUkFNRS4KKyAgICAgICAg ICAgICAgICAgKG5vdCAoZXEgKGZyYW1lLXBhcmVudCB0aGlzKSBmcmFtZSkpKQogICAgICAg ICAoZGVsZXRlLWZyYW1lIHRoaXMpKQogICAgICAgKHNldHEgdGhpcyBuZXh0KSkKICAgICA7 OyBJbiBhIHNlY29uZCByb3VuZCBjb25zaWRlciBhbGwgcmVtYWluaW5nIGZyYW1lcy4KZGlm ZiAtLWdpdCBhL2xpc3AvZnJhbWVzZXQuZWwgYi9saXNwL2ZyYW1lc2V0LmVsCmluZGV4IDBk N2U4MDIuLjBhNTY5YTEgMTAwNjQ0Ci0tLSBhL2xpc3AvZnJhbWVzZXQuZWwKKysrIGIvbGlz cC9mcmFtZXNldC5lbApAQCAtNzg3LDE5ICs3ODcsMjEgQEAgZnJhbWVzZXQtLXJlY29yZC1y ZWxhdGlvbnNoaXBzCiAgICAgICAgICAgIGZyYW1lICdmcmFtZXNldC0tbW91c2Utd2hlZWwt ZnJhbWUKICAgICAgICAgICAgKGZyYW1lc2V0LWZyYW1lLWlkIG1vdXNlLXdoZWVsLWZyYW1l KSkpCiAgICAgICAgICh3aGVuIG5vbWluaQotICAgICAgICAgIChsZXQgKChtYi1mcmFtZSAo d2luZG93LWZyYW1lIChtaW5pYnVmZmVyLXdpbmRvdyBmcmFtZSkpKSkKKyAgICAgICAgICAo bGV0KiAoKG13LXdpbmRvdyAobWluaWJ1ZmZlci13aW5kb3cgZnJhbWUgJ21heWJlLW5pbCkp CisgICAgICAgICAgICAgICAgIChtYi1mcmFtZSAoYW5kIG13LXdpbmRvdyAod2luZG93LWZy YW1lIG13LXdpbmRvdykpKSkKICAgICAgICAgICAgIDs7IEZvciBtaW5pYnVmZmVybGVzcyBm cmFtZXMsIGZyYW1lc2V0LS1taW5pIGlzIGEgY29ucwogICAgICAgICAgICAgOzsgKG5pbCAu IEZSQU1FLUlEKSwgd2hlcmUgRlJBTUUtSUQgaXMgdGhlIGZyYW1lc2V0LS1pZCBvZgogICAg ICAgICAgICAgOzsgdGhlIGZyYW1lIGNvbnRhaW5pbmcgaXRzIG1pbmlidWZmZXIgd2luZG93 LgogICAgICAgICAgICAgOzsgRlJBTUUtSUQgY2FuIGJlIHNldCB0byBuaWwsIGlmIEZSQU1F LUxJU1QgZG9lc24ndCBjb250YWluCiAgICAgICAgICAgICA7OyB0aGUgbWluaWJ1ZmZlciBm cmFtZSBvZiBhIG1pbmlidWZmZXJsZXNzIGZyYW1lOyB3ZSBhbGxvdwogICAgICAgICAgICAg OzsgaXQgd2l0aG91dCB0cnlpbmcgdG8gc2Vjb25kLWd1ZXNzIHRoZSB1c2VyLgotICAgICAg ICAgICAgKHNldC1mcmFtZS1wYXJhbWV0ZXIKLSAgICAgICAgICAgICBmcmFtZQotICAgICAg ICAgICAgICdmcmFtZXNldC0tbWluaQotICAgICAgICAgICAgIChjb25zIG5pbAotICAgICAg ICAgICAgICAgICAgIChhbmQgbWItZnJhbWUKLSAgICAgICAgICAgICAgICAgICAgICAgIChm cmFtZXNldC1mcmFtZS1pZCBtYi1mcmFtZSkpKSkpKSkpKQorICAgICAgICAgICAgKHdoZW4g bWItZnJhbWUKKyAgICAgICAgICAgICAgKHNldC1mcmFtZS1wYXJhbWV0ZXIKKyAgICAgICAg ICAgICAgIGZyYW1lCisgICAgICAgICAgICAgICAnZnJhbWVzZXQtLW1pbmkKKyAgICAgICAg ICAgICAgIChjb25zIG5pbAorICAgICAgICAgICAgICAgICAgICAgKGFuZCBtYi1mcmFtZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJhbWVzZXQtZnJhbWUtaWQgbWItZnJhbWUp KSkpKSkpKSkpCiAgIDs7IE5vdyBzdG9yZSB0ZXh0LXBpeGVsIHdpZHRoIGFuZCBoZWlnaHQg aWYgYGZyYW1lLXJlc2l6ZS1waXhlbHdpc2UnCiAgIDs7IGlzIHNldC4gIChCdWcjMzAxNDEp CiAgIChkb2xpc3QgKGZyYW1lIGZyYW1lLWxpc3QpCmRpZmYgLS1naXQgYS9saXNwL2dudXMv Z251cy1zdW0uZWwgYi9saXNwL2dudXMvZ251cy1zdW0uZWwKaW5kZXggY2ViOTg0Mi4uMjFm MjAwNCAxMDA2NDQKLS0tIGEvbGlzcC9nbnVzL2dudXMtc3VtLmVsCisrKyBiL2xpc3AvZ251 cy9nbnVzLXN1bS5lbApAQCAtMTIxNTIsNyArMTIxNTIsNyBAQCBnbnVzLXN1bW1hcnktcGlw ZS1vdXRwdXQKIAkJICAgICAocHJvZ24KIAkJICAgICAgIChlbmQtb2YtbGluZSAwKQogCQkg ICAgICAgKDw9IChjdXJyZW50LWNvbHVtbikKLQkJCSAgICh3aW5kb3ctd2lkdGggKG1pbmli dWZmZXItd2luZG93KSkpKSkKKwkJCSAgICh3aW5kb3ctd2lkdGggKGVjaG8td2luZG93KSkp KSkKIAkgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKSkpCiAJICAobWVzc2FnZSAiJXMi IChzdWJzdHJpbmcgcmVzdWx0IDAgLTEpKQogCShtZXNzYWdlIG5pbCkKZGlmZiAtLWdpdCBh L2xpc3AvaW5mby1sb29rLmVsIGIvbGlzcC9pbmZvLWxvb2suZWwKaW5kZXggZGVjMTZjZi4u YTRiNzFkZCAxMDA2NDQKLS0tIGEvbGlzcC9pbmZvLWxvb2suZWwKKysrIGIvbGlzcC9pbmZv LWxvb2suZWwKQEAgLTU3MywxMyArNTczLDEzIEBAIGluZm8tbG9va3VwLWd1ZXNzLWRlZmF1 bHQqCiAJKHdoaWxlIChhbmQgKHJlLXNlYXJjaC1iYWNrd2FyZCByZWdleHAgbmlsIHQpCiAJ CSAgICAobG9va2luZy1hdCByZWdleHApCiAJCSAgICAoPj0gKG1hdGNoLWVuZCAwKSBlbmQp KQotCSAgKHNldHEgcmVzdWx0IChtYXRjaC1zdHJpbmcgc3ViZXhwKSkpCisJICAoc2V0cSBy ZXN1bHQgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIHN1YmV4cCkpKQogCShpZiAobm90 IHJlc3VsdCkKIAkgICAgKHByb2duCiAJICAgICAgKGdvdG8tY2hhciBzdGFydCkKIAkgICAg ICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHRcbiIpCiAJICAgICAgKGFuZCAobG9va2luZy1h dCByZWdleHApCi0JCSAgIChzZXRxIHJlc3VsdCAobWF0Y2gtc3RyaW5nIHN1YmV4cCkpKSkp KSkKKwkJICAgKHNldHEgcmVzdWx0IChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyBzdWJl eHApKSkpKSkpCiAgICAgcmVzdWx0KSkKCiAoZGVmdW4gaW5mby1sb29rdXAtZ3Vlc3MtYy1z eW1ib2wgKCkKZGlmZiAtLWdpdCBhL2xpc3AvaW50ZXJuYXRpb25hbC9ra2MuZWwgYi9saXNw L2ludGVybmF0aW9uYWwva2tjLmVsCmluZGV4IGE1NmQzY2IuLmIxNzliOTQgMTAwNjQ0Ci0t LSBhL2xpc3AvaW50ZXJuYXRpb25hbC9ra2MuZWwKKysrIGIvbGlzcC9pbnRlcm5hdGlvbmFs L2trYy5lbApAQCAtNTUzLDcgKzU1Myw3IEBAIGtrYy1zaG93LWNvbnZlcnNpb24tbGlzdC11 cGRhdGUKIAkgIChzZXRxIHRoaXMtaWR4IG5leHQtaWR4IG1zZyBuaWwpKSkKICAgICAoaWYg KG5vdCBtc2cpCiAJKGxldCAoKGxlbiAobGVuZ3RoIGtrYy1jdXJyZW50LWNvbnZlcnNpb25z KSkKLQkgICAgICAobWF4LXdpZHRoICh3aW5kb3ctd2lkdGggKG1pbmlidWZmZXItd2luZG93 KSkpCisJICAgICAgKG1heC13aWR0aCAod2luZG93LXdpZHRoIChlY2hvLXdpbmRvdykpKQog CSAgICAgICh3aWR0aC10YWJsZSBra2MtY3VycmVudC1jb252ZXJzaW9ucy13aWR0aCkKIAkg ICAgICAod2lkdGggMCkKIAkgICAgICAoaWR4IHRoaXMtaWR4KQpkaWZmIC0tZ2l0IGEvbGlz cC9pbnRlcm5hdGlvbmFsL3F1YWlsLmVsIGIvbGlzcC9pbnRlcm5hdGlvbmFsL3F1YWlsLmVs CmluZGV4IGVjMTVjY2EuLmQ0ZGNhZDAgMTAwNjQ0Ci0tLSBhL2xpc3AvaW50ZXJuYXRpb25h bC9xdWFpbC5lbAorKysgYi9saXNwL2ludGVybmF0aW9uYWwvcXVhaWwuZWwKQEAgLTU4Niw3 ICs1ODYsNyBAQCBxdWFpbC1hY3RpdmF0ZQogICAgIChxdWFpbC1zaG93LWd1aWRhbmNlKQog ICAgIDs7IElmIHdlIGFyZSBpbiBtaW5pYnVmZmVyLCB0dXJuIG9mZiB0aGUgY3VycmVudCBp bnB1dCBtZXRob2QKICAgICA7OyBiZWZvcmUgZXhpdGluZy4KLSAgICAod2hlbiAoZXEgKHNl bGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2luZG93KSkKKyAgICAod2hlbiAoZXEgKHNl bGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2luZG93IG5pbCAnbWF5YmUtbmlsKSkKICAg ICAgIChhZGQtaG9vayAnbWluaWJ1ZmZlci1leGl0LWhvb2sgJ3F1YWlsLWV4aXQtZnJvbS1t aW5pYnVmZmVyKQogICAgICAgKGFkZC1ob29rICdwb3N0LWNvbW1hbmQtaG9vayAncXVhaWwt c2hvdy1ndWlkYW5jZSBuaWwgdCkpCiAgICAgKHJ1bi1ob29rcyAncXVhaWwtYWN0aXZhdGUt aG9vaykKQEAgLTE5OTUsNyArMTk5NSw3IEBAIHF1YWlsLXJlcXVpcmUtZ3VpZGFuY2UtYnVm CiAgICJSZXR1cm4gdCBpZiB0aGUgY3VycmVudCBRdWFpbCBwYWNrYWdlIHJlcXVpcmVzIHNo b3dpbmcgZ3VpZGFuY2UgYnVmZmVyLiIKICAgKGFuZCBpbnB1dC1tZXRob2QtdmVyYm9zZS1m bGFnCiAgICAgICAgKGlmIChlcSBpbnB1dC1tZXRob2QtdmVyYm9zZS1mbGFnICdkZWZhdWx0 KQotCSAgIChub3QgKGFuZCAoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2lu ZG93KSkKKwkgICAobm90IChhbmQgKGVxIChzZWxlY3RlZC13aW5kb3cpIChtaW5pYnVmZmVy LXdpbmRvdyBuaWwgJ21heWJlLW5pbCkpCiAJCSAgICAgKHF1YWlsLXNpbXBsZSkpKQogCSAo aWYgKGVxIGlucHV0LW1ldGhvZC12ZXJib3NlLWZsYWcgJ2NvbXBsZXgtb25seSkKIAkgICAg IChub3QgKHF1YWlsLXNpbXBsZSkpCkBAIC0yMDMzLDcgKzIwMzMsNyBAQCBxdWFpbC1zaG93 LWd1aWRhbmNlCiAJICAgICAobnVsbCB1bnJlYWQtY29tbWFuZC1ldmVudHMpCiAJICAgICAo bnVsbCB1bnJlYWQtcG9zdC1pbnB1dC1tZXRob2QtZXZlbnRzKSkKICAgICAoaWYgKG1pbmli dWZmZXJwKQotCShpZiAoZXEgKG1pbmlidWZmZXItd2luZG93KSAoZnJhbWUtcm9vdC13aW5k b3cpKQorCShpZiAoZXEgKG1pbmlidWZmZXItd2luZG93IG5pbCAnbWF5YmUtbmlsKSAoZnJh bWUtcm9vdC13aW5kb3cpKQogCSAgICA7OyBVc2UgYW5vdGhlciBmcmFtZS4gIEl0IGlzIHN1 cmUgdGhhdCB3ZSBhcmUgdXNpbmcgc29tZQogCSAgICA7OyB3aW5kb3cgc3lzdGVtLgogCSAg ICAobGV0ICgoZ3VpZGFuY2UgcXVhaWwtZ3VpZGFuY2Utc3RyKSkKQEAgLTIwNjQsOSArMjA2 NCw5IEBAIHF1YWlsLXNob3ctZ3VpZGFuY2UKIChkZWZ1biBxdWFpbC1oaWRlLWd1aWRhbmNl ICgpCiAgICJIaWRlIHRoZSBRdWFpbCBndWlkYW5jZS4iCiAgICh3aGVuIChhbmQgKHF1YWls LXJlcXVpcmUtZ3VpZGFuY2UtYnVmKQotCSAgICAgKG9yIChlcSAoc2VsZWN0ZWQtd2luZG93 KSAobWluaWJ1ZmZlci13aW5kb3cpKQorCSAgICAgKG9yIChlcSAoc2VsZWN0ZWQtd2luZG93 KSAobWluaWJ1ZmZlci13aW5kb3cgbmlsICdtYXliZS1uaWwpKQogCQkgaW5wdXQtbWV0aG9k LXVzZS1lY2hvLWFyZWEpCi0JICAgICAoZXEgKG1pbmlidWZmZXItd2luZG93KSAoZnJhbWUt cm9vdC13aW5kb3cpKSkKKwkgICAgIChlcSAobWluaWJ1ZmZlci13aW5kb3cgbmlsICdtYXli ZS1uaWwpIChmcmFtZS1yb290LXdpbmRvdykpKQogICAgIDs7IFdlIGFyZSB1c2luZyBhbm90 aGVyIGZyYW1lIGZvciB0aGUgZ3VpZGFuY2UuCiAgICAgKGlmIChmcmFtZS1saXZlLXAgcXVh aWwtZ3VpZGFuY2UtZnJhbWUpCiAJKGRlbGV0ZS1mcmFtZSBxdWFpbC1ndWlkYW5jZS1mcmFt ZSkpCmRpZmYgLS1naXQgYS9saXNwL2ludGVybmF0aW9uYWwvcm9iaW4uZWwgYi9saXNwL2lu dGVybmF0aW9uYWwvcm9iaW4uZWwKaW5kZXggOTRkMmJmMS4uMmFkYjE0YyAxMDA2NDQKLS0t IGEvbGlzcC9pbnRlcm5hdGlvbmFsL3JvYmluLmVsCisrKyBiL2xpc3AvaW50ZXJuYXRpb25h bC9yb2Jpbi5lbApAQCAtNDIwLDcgKzQyMCw3IEBAIHJvYmluLWFjdGl2YXRlCiAgICAgKHNl dHEgcm9iaW4tbW9kZSB0CiAgICAgICAJICBkZXNjcmliZS1jdXJyZW50LWlucHV0LW1ldGhv ZC1mdW5jdGlvbiAncm9iaW4taGVscAogCSAgZGVhY3RpdmF0ZS1jdXJyZW50LWlucHV0LW1l dGhvZC1mdW5jdGlvbiAncm9iaW4tZGVhY3RpdmF0ZSkKLSAgICAoaWYgKGVxIChzZWxlY3Rl ZC13aW5kb3cpIChtaW5pYnVmZmVyLXdpbmRvdykpCisgICAgKGlmIChlcSAoc2VsZWN0ZWQt d2luZG93KSAobWluaWJ1ZmZlci13aW5kb3cgbmlsICdtYXliZS1uaWwpKQogCShhZGQtaG9v ayAnbWluaWJ1ZmZlci1leGl0LWhvb2sgJ3JvYmluLWV4aXQtZnJvbS1taW5pYnVmZmVyKSkK ICAgICAocnVuLWhvb2tzICdpbnB1dC1tZXRob2QtYWN0aXZhdGUtaG9vawogCSAgICAgICAn cm9iaW4tYWN0aXZhdGUtaG9vaykKZGlmZiAtLWdpdCBhL2xpc3AvaXNlYXJjaC5lbCBiL2xp c3AvaXNlYXJjaC5lbAppbmRleCAxZTc4NWE0Li5kYjM3MzdiIDEwMDY0NAotLS0gYS9saXNw L2lzZWFyY2guZWwKKysrIGIvbGlzcC9pc2VhcmNoLmVsCkBAIC0yMDY5LDggKzIwNjksOSBA QCBpc2VhcmNoLW1vdXNlLTIKICAgKGxldCAoKHcgKHBvc24td2luZG93IChldmVudC1zdGFy dCBjbGljaykpKQogICAgICAgICAoYmluZGluZyAobGV0ICgob3ZlcnJpZGluZy10ZXJtaW5h bC1sb2NhbC1tYXAgbmlsKSkKICAgICAgICAgICAgICAgICAgICAoa2V5LWJpbmRpbmcgKHRo aXMtY29tbWFuZC1rZXlzLXZlY3RvcikgdCkpKSkKLSAgICAoaWYgKGFuZCAod2luZG93LW1p bmlidWZmZXItcCB3KQotCSAgICAgKG5vdCAobWluaWJ1ZmZlci13aW5kb3ctYWN0aXZlLXAg dykpKSA7IGluIGVjaG8gYXJlYQorICAgIChpZiAoYW5kICh3aW5kb3ctZWNoby1wIHcpCisJ ICAgICAob3IgKG5vdCAoZXEgdyAobWluaWJ1ZmZlci13aW5kb3cgbmlsICdtYXliZS1uaWwp KSkKKyAgICAgICAgICAgICAgICAgKG5vdCAobWluaWJ1ZmZlci13aW5kb3ctYWN0aXZlLXAg dykpKSkgOyBpbiBlY2hvIGFyZWEKIAkoaXNlYXJjaC15YW5rLXgtc2VsZWN0aW9uKQogICAg ICAgKHdoZW4gKGZ1bmN0aW9ucCBiaW5kaW5nKQogCShjYWxsLWludGVyYWN0aXZlbHkgYmlu ZGluZykpKSkpCmRpZmYgLS1naXQgYS9saXNwL2xlaW0vcXVhaWwvaGFuZ3VsLmVsIGIvbGlz cC9sZWltL3F1YWlsL2hhbmd1bC5lbAppbmRleCBiYTJiMzIwLi40ZmJjZmE2IDEwMDY0NAot LS0gYS9saXNwL2xlaW0vcXVhaWwvaGFuZ3VsLmVsCisrKyBiL2xpc3AvbGVpbS9xdWFpbC9o YW5ndWwuZWwKQEAgLTUyMyw3ICs1MjMsNyBAQCBoYW5ndWwtaW5wdXQtbWV0aG9kLWFjdGl2 YXRlCiAJZGVzY3JpYmUtY3VycmVudC1pbnB1dC1tZXRob2QtZnVuY3Rpb24gJ2hhbmd1bC1p bnB1dC1tZXRob2QtaGVscAogCWhhbmd1bC1pbnB1dC1tZXRob2QtaGVscC10ZXh0IGhlbHAt dGV4dCkKICAgKHF1YWlsLWRlbGV0ZS1vdmVybGF5cykKLSAgKGlmIChlcSAoc2VsZWN0ZWQt d2luZG93KSAobWluaWJ1ZmZlci13aW5kb3cpKQorICAoaWYgKGVxIChzZWxlY3RlZC13aW5k b3cpIChtaW5pYnVmZmVyLXdpbmRvdyBuaWwgJ21heWJlLW5pbCkpCiAgICAgICAoYWRkLWhv b2sgJ21pbmlidWZmZXItZXhpdC1ob29rICdxdWFpbC1leGl0LWZyb20tbWluaWJ1ZmZlcikp CiAgIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2lucHV0LW1ldGhvZC1mdW5jdGlvbikg ZnVuYykpCgpkaWZmIC0tZ2l0IGEvbGlzcC9sZWltL3F1YWlsL3VuaS1pbnB1dC5lbCBiL2xp c3AvbGVpbS9xdWFpbC91bmktaW5wdXQuZWwKaW5kZXggNDAxNGViYy4uNmVlMzM2ZSAxMDA2 NDQKLS0tIGEvbGlzcC9sZWltL3F1YWlsL3VuaS1pbnB1dC5lbAorKysgYi9saXNwL2xlaW0v cXVhaWwvdW5pLWlucHV0LmVsCkBAIC0xMDMsNyArMTAzLDcgQEAgdWNzLWlucHV0LWFjdGl2 YXRlCiAgICAgKHNldHEgZGVhY3RpdmF0ZS1jdXJyZW50LWlucHV0LW1ldGhvZC1mdW5jdGlv biAndWNzLWlucHV0LWRlYWN0aXZhdGUpCiAgICAgKHNldHEgZGVzY3JpYmUtY3VycmVudC1p bnB1dC1tZXRob2QtZnVuY3Rpb24gJ3Vjcy1pbnB1dC1oZWxwKQogICAgIChxdWFpbC1kZWxl dGUtb3ZlcmxheXMpCi0gICAgKGlmIChlcSAoc2VsZWN0ZWQtd2luZG93KSAobWluaWJ1ZmZl ci13aW5kb3cpKQorICAgIChpZiAoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXIt d2luZG93IG5pbCAnbWF5YmUtbmlsKSkKIAkoYWRkLWhvb2sgJ21pbmlidWZmZXItZXhpdC1o b29rICdxdWFpbC1leGl0LWZyb20tbWluaWJ1ZmZlcikpCiAgICAgKHNldCAobWFrZS1sb2Nh bC12YXJpYWJsZSAnaW5wdXQtbWV0aG9kLWZ1bmN0aW9uKQogCSAndWNzLWlucHV0LW1ldGhv ZCkpKQpkaWZmIC0tZ2l0IGEvbGlzcC9taC1lL21oLXNob3cuZWwgYi9saXNwL21oLWUvbWgt c2hvdy5lbAppbmRleCBkYWU4ZGUwLi4wOTViMzIzIDEwMDY0NAotLS0gYS9saXNwL21oLWUv bWgtc2hvdy5lbAorKysgYi9saXNwL21oLWUvbWgtc2hvdy5lbApAQCAtMTM2LDcgKzEzNiw3 IEBAIG1oLXNob3ctbXNnCiAgICAgICAgIChjbGVhbi1tZXNzYWdlLWhlYWRlciBtaC1jbGVh bi1tZXNzYWdlLWhlYWRlci1mbGFnKQogICAgICAgICAoc2hvdy13aW5kb3cgKGdldC1idWZm ZXItd2luZG93IG1oLXNob3ctYnVmZmVyKSkKICAgICAgICAgKGRpc3BsYXktbWltZS1idXR0 b25zLWZsYWcgbWgtZGlzcGxheS1idXR0b25zLWZvci1pbmxpbmUtcGFydHMtZmxhZykpCi0g ICAgKGlmIChub3QgKGVxIChuZXh0LXdpbmRvdyAobWluaWJ1ZmZlci13aW5kb3cpKSAoc2Vs ZWN0ZWQtd2luZG93KSkpCisgICAgKGlmIChub3QgKGVxIChuZXh0LXdpbmRvdyAobWluaWJ1 ZmZlci13aW5kb3cgbmlsICdtYXliZS1uaWwpKSAoc2VsZWN0ZWQtd2luZG93KSkpCiAgICAg ICAgIChkZWxldGUtb3RoZXItd2luZG93cykpICAgICAgICAgOyBmb3JjZSBvdXJzZWxmIHRv IHRoZSB0b3Agd2luZG93CiAgICAgKG1oLWluLXNob3ctYnVmZmVyIChtaC1zaG93LWJ1ZmZl cikKICAgICAgIChzZXRxIG1oLWRpc3BsYXktYnV0dG9ucy1mb3ItaW5saW5lLXBhcnRzLWZs YWcgZGlzcGxheS1taW1lLWJ1dHRvbnMtZmxhZykKZGlmZiAtLWdpdCBhL2xpc3AvbWluaWJ1 ZmZlci5lbCBiL2xpc3AvbWluaWJ1ZmZlci5lbAppbmRleCBhN2U2YTg3Li5lZjIyZTRmIDEw MDY0NAotLS0gYS9saXNwL21pbmlidWZmZXIuZWwKKysrIGIvbGlzcC9taW5pYnVmZmVyLmVs CkBAIC0xODM3LDcgKzE4MzcsNyBAQCBtaW5pYnVmZmVyLWNvbXBsZXRpb24taGVscAogICAg ICAgICAgICAgIDs7IFVzZSBgZGlzcGxheS1idWZmZXItYmVsb3ctc2VsZWN0ZWQnIGZvciBp bmxpbmUgY29tcGxldGlvbnMsCiAgICAgICAgICAgICAgOzsgYnV0IG5vdCBpbiB0aGUgbWlu aWJ1ZmZlciAoZS5nLiBpbiBgZXZhbC1leHByZXNzaW9uJykKICAgICAgICAgICAgICA7OyBm b3Igd2hpY2ggYGRpc3BsYXktYnVmZmVyLWF0LWJvdHRvbScgaXMgdXNlZC4KLSAgICAgICAg ICAgICAsKGlmIChlcSAoc2VsZWN0ZWQtd2luZG93KSAobWluaWJ1ZmZlci13aW5kb3cpKQor ICAgICAgICAgICAgICwoaWYgKGVxIChzZWxlY3RlZC13aW5kb3cpIChtaW5pYnVmZmVyLXdp bmRvdyBuaWwgJ21heWJlLW5pbCkpCiAgICAgICAgICAgICAgICAgICAnZGlzcGxheS1idWZm ZXItYXQtYm90dG9tCiAgICAgICAgICAgICAgICAgJ2Rpc3BsYXktYnVmZmVyLWJlbG93LXNl bGVjdGVkKSkKIAkgICAgLChpZiB0ZW1wLWJ1ZmZlci1yZXNpemUtbW9kZQpkaWZmIC0tZ2l0 IGEvbGlzcC9tb3VzZS5lbCBiL2xpc3AvbW91c2UuZWwKaW5kZXggZDVjMTMyZi4uMWI4MGRm NiAxMDA2NDQKLS0tIGEvbGlzcC9tb3VzZS5lbAorKysgYi9saXNwL21vdXNlLmVsCkBAIC01 MzMsMTYgKzUzMywxMyBAQCBtb3VzZS1kcmFnLW1vZGUtbGluZQogICAgICAgICAgIDs7IEFs bG93IHJlc2l6aW5nIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBpZiBpdCdzIG9uIHRoZQogICAg ICAgICAgIDs7IHNhbWUgZnJhbWUgYXMgYW5kIGltbWVkaWF0ZWx5IGJlbG93IGB3aW5kb3cn LCBhbmQgaXQncwogICAgICAgICAgIDs7IGVpdGhlciBhY3RpdmUgb3IgYHJlc2l6ZS1taW5p LXdpbmRvd3MnIGlzIG5pbC4KLSAgICAgICAgICAobGV0ICgobWluaWJ1ZmZlci13aW5kb3cg KG1pbmlidWZmZXItd2luZG93IGZyYW1lKSkpCi0gICAgICAgICAgICAoYW5kIChlcSAod2lu ZG93LWZyYW1lIG1pbmlidWZmZXItd2luZG93KSBmcmFtZSkKLSAgICAgICAgICAgICAgICAg KG9yIChub3QgcmVzaXplLW1pbmktd2luZG93cykKLSAgICAgICAgICAgICAgICAgICAgIChl cSBtaW5pYnVmZmVyLXdpbmRvdwotICAgICAgICAgICAgICAgICAgICAgICAgIChhY3RpdmUt bWluaWJ1ZmZlci13aW5kb3cpKSkpKSkKKyAgICAgICAgICAoYW5kIChlcSAobWluaWJ1ZmZl ci13aW5kb3ctdHlwZSBmcmFtZSkgJ2JvdHRvbSkKKyAgICAgICAgICAgICAgIChvciAobWlu aWJ1ZmZlci13aW5kb3ctYWN0aXZlLXAgKG1pbmlidWZmZXItd2luZG93IGZyYW1lKSkKKyAg ICAgICAgICAgICAgICAgICAobm90IHJlc2l6ZS1taW5pLXdpbmRvd3MpKSkpCiAgICAgICAo bW91c2UtZHJhZy1saW5lIHN0YXJ0LWV2ZW50ICdtb2RlKSkKICAgICAgKChhbmQgKGZyYW1l LXBhcmFtZXRlciBmcmFtZSAnZHJhZy13aXRoLW1vZGUtbGluZSkKICAgICAgICAgICAgKHdp bmRvdy1hdC1zaWRlLXAgd2luZG93ICdib3R0b20pCi0gICAgICAgICAgIChsZXQgKChtaW5p YnVmZmVyLXdpbmRvdyAobWluaWJ1ZmZlci13aW5kb3cgZnJhbWUpKSkKLSAgICAgICAgICAg ICAobm90IChlcSAod2luZG93LWZyYW1lIG1pbmlidWZmZXItd2luZG93KSBmcmFtZSkpKSkK KyAgICAgICAgICAgKG1lbXEgKG1pbmlidWZmZXItd2luZG93LXR5cGUgZnJhbWUpICcobG9v c2UgdG9wKSkpCiAgICAgICA7OyBEcmFnIGZyYW1lIHdoZW4gdGhlIHdpbmRvdyBpcyBvbiB0 aGUgYm90dG9tIG9mIGl0cyBmcmFtZSBhbmQKICAgICAgIDs7IHRoZXJlIGlzIG5vIG1pbmli dWZmZXIgd2luZG93IGJlbG93LgogICAgICAgKG1vdXNlLWRyYWctZnJhbWUgc3RhcnQtZXZl bnQgJ21vdmUpKSkpKQpAQCAtNTU2LDEzICs1NTMsMTkgQEAgbW91c2UtZHJhZy1oZWFkZXIt bGluZQogdGhlIGZyYW1lIGluc3RlYWQuIgogICAoaW50ZXJhY3RpdmUgImUiKQogICAobGV0 KiAoKHN0YXJ0IChldmVudC1zdGFydCBzdGFydC1ldmVudCkpCi0JICh3aW5kb3cgKHBvc24t d2luZG93IHN0YXJ0KSkpCi0gICAgKGlmIChhbmQgKHdpbmRvdy1saXZlLXAgd2luZG93KQot ICAgICAgICAgICAgIChub3QgKHdpbmRvdy1hdC1zaWRlLXAgd2luZG93ICd0b3ApKSkKLSAg ICAgICAgKG1vdXNlLWRyYWctbGluZSBzdGFydC1ldmVudCAnaGVhZGVyKQotICAgICAgKGxl dCAoKGZyYW1lICh3aW5kb3ctZnJhbWUgd2luZG93KSkpCi0gICAgICAgICh3aGVuIChmcmFt ZS1wYXJhbWV0ZXIgZnJhbWUgJ2RyYWctd2l0aC1oZWFkZXItbGluZSkKLSAgICAgICAgICAo bW91c2UtZHJhZy1mcmFtZSBzdGFydC1ldmVudCAnbW92ZSkpKSkpKQorCSAod2luZG93IChw b3NuLXdpbmRvdyBzdGFydCkpCisgICAgICAgICAoZnJhbWUgKHdpbmRvdy1mcmFtZSB3aW5k b3cpKSkKKyAgICAoY29uZAorICAgICAoKGFuZCAod2luZG93LWxpdmUtcCB3aW5kb3cpCisg ICAgICAgICAgIChvciAobm90ICh3aW5kb3ctYXQtc2lkZS1wIHdpbmRvdyAndG9wKSkKKyAg ICAgICAgICAgICAgIChhbmQgKGVxIChtaW5pYnVmZmVyLXdpbmRvdy10eXBlIGZyYW1lKSAn dG9wKQorICAgICAgICAgICAgICAgICAgICAob3IgKG1pbmlidWZmZXItd2luZG93LWFjdGl2 ZS1wIChtaW5pYnVmZmVyLXdpbmRvdyBmcmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAobm90IHJlc2l6ZS1taW5pLXdpbmRvd3MpKSkpKQorICAgICAgKG1vdXNlLWRyYWctbGlu ZSBzdGFydC1ldmVudCAnaGVhZGVyKSkKKyAgICAgKChhbmQgKGZyYW1lLXBhcmFtZXRlciBm cmFtZSAnZHJhZy13aXRoLWhlYWRlci1saW5lKQorICAgICAgICAgICAod2luZG93LWF0LXNp ZGUtcCB3aW5kb3cgJ3RvcCkKKyAgICAgICAgICAgKG5vdCAoZXEgKG1pbmlidWZmZXItd2lu ZG93LXR5cGUgZnJhbWUpICd0b3ApKSkKKyAgICAgIChtb3VzZS1kcmFnLWZyYW1lIHN0YXJ0 LWV2ZW50ICdtb3ZlKSkpKSkKCiAoZGVmdW4gbW91c2UtZHJhZy12ZXJ0aWNhbC1saW5lIChz dGFydC1ldmVudCkKICAgIkNoYW5nZSB0aGUgd2lkdGggb2YgYSB3aW5kb3cgYnkgZHJhZ2dp bmcgb24gYSB2ZXJ0aWNhbCBsaW5lLgpAQCAtMTI4NSw3ICsxMjg4LDcgQEAgbW91c2UtZHJh Zy10cmFjawogICAgICB0IChsYW1iZGEgKCkKICAgICAgICAgIChzZXRxIHRyYWNrLW1vdXNl IG9sZC10cmFjay1tb3VzZSkKICAgICAgICAgIChzZXRxIGF1dG8taHNjcm9sbC1tb2RlIGF1 dG8taHNjcm9sbC1tb2RlLXNhdmVkKQotICAgICAgICAgIChkZWFjdGl2YXRlLW1hcmspCisg ICAgICAgICAoZGVhY3RpdmF0ZS1tYXJrKQogICAgICAgICAgKHBvcC1tYXJrKSkpKSkKCiAo ZGVmdW4gbW91c2UtLWRyYWctc2V0LW1hcmstYW5kLXBvaW50IChzdGFydCBjbGljayBjbGlj ay1jb3VudCkKQEAgLTI0NDYsMTIgKzI0NDksMTMgQEAgbW91c2UtZHJhZy1hbmQtZHJvcC1y ZWdpb24KCiAgICAgKGlnbm9yZS1lcnJvcnMKICAgICAgICh0cmFjay1tb3VzZQorICAgICAg ICAoc2V0cSB0cmFjay1tb3VzZSAnZHJvcHBpbmcpCiAgICAgICAgIDs7IFdoZW4gZXZlbnQg d2FzICJjbGljayIgaW5zdGVhZCBvZiAiZHJhZyIsIHNraXAgbG9vcC4KICAgICAgICAgKHdo aWxlIChwcm9nbgogICAgICAgICAgICAgICAgICAoc2V0cSBldmVudCAocmVhZC1rZXkpKSAg ICAgIDsgcmVhZC1ldmVudCBvciByZWFkLWtleQogICAgICAgICAgICAgICAgICAob3IgKG1v dXNlLW1vdmVtZW50LXAgZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgICA7OyBIYW5kbGUg YG1vdXNlLWF1dG9zZWxlY3Qtd2luZG93Jy4KLSAgICAgICAgICAgICAgICAgICAgIChlcSAo Y2FyLXNhZmUgZXZlbnQpICdzZWxlY3Qtd2luZG93KSkpCisgICAgICAgICAgICAgICAgICAg ICAobWVtcSAoY2FyIGV2ZW50KSAnKHNlbGVjdC13aW5kb3cgc3dpdGNoLWZyYW1lKSkpKQog ICAgICAgICAgIDs7IE9idGFpbiB0aGUgZHJhZ2dlZCB0ZXh0IGluIHJlZ2lvbi4gIFdoZW4g dGhlIGxvb3Agd2FzCiAgICAgICAgICAgOzsgc2tpcHBlZCwgdmFsdWUtc2VsZWN0aW9uIHJl bWFpbnMgbmlsLgogICAgICAgICAgICh1bmxlc3MgdmFsdWUtc2VsZWN0aW9uCmRpZmYgLS1n aXQgYS9saXNwL25ldC9hbmdlLWZ0cC5lbCBiL2xpc3AvbmV0L2FuZ2UtZnRwLmVsCmluZGV4 IDJmYzdhYzIuLmYzMDU4YWEgMTAwNjQ0Ci0tLSBhL2xpc3AvbmV0L2FuZ2UtZnRwLmVsCisr KyBiL2xpc3AvbmV0L2FuZ2UtZnRwLmVsCkBAIC0xMDkwLDcgKzEwOTAsNyBAQCBhbmdlLWZ0 cC1tZXNzYWdlCiAgICJEaXNwbGF5IG1lc3NhZ2UgaW4gZWNobyBhcmVhLCBidXQgaW5kaWNh dGUgaWYgdHJ1bmNhdGVkLgogQXJncyBhcmUgYXMgaW4gYG1lc3NhZ2UnOiBhIGZvcm1hdCBz dHJpbmcsIHBsdXMgYXJndW1lbnRzIHRvIGJlIGZvcm1hdHRlZC4iCiAgIChsZXQgKChtc2cg KGFwcGx5ICMnZm9ybWF0LW1lc3NhZ2UgZm10IGFyZ3MpKQotCShtYXggKHdpbmRvdy13aWR0 aCAobWluaWJ1ZmZlci13aW5kb3cpKSkpCisJKG1heCAod2luZG93LXdpZHRoIChlY2hvLXdp bmRvdykpKSkKICAgICAoaWYgbm9uaW50ZXJhY3RpdmUKIAltc2cKICAgICAgIChpZiAoPj0g KGxlbmd0aCBtc2cpIG1heCkKQEAgLTE1ODYsNyArMTU4Niw3IEBAIGFuZ2UtZnRwLXByb2Nl c3MtaGFuZGxlLWhhc2gKICAgKGFuZCBhbmdlLWZ0cC1oYXNoLW1hcmstdW5pdAogICAgICAg IGFuZ2UtZnRwLXByb2Nlc3MtbXNnCiAgICAgICAgYW5nZS1mdHAtcHJvY2Vzcy12ZXJib3Nl Ci0gICAgICAgKG5vdCAoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2luZG93 KSkpCisgICAgICAgKG5vdCAoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2lu ZG93IG5pbCAnbWF5YmUtbmlsKSkpCiAgICAgICAgKG5vdCAoYm91bmRwICdzZWFyY2gtbWVz c2FnZSkpCTtzY3Jld3MgdXAgaXNlYXJjaCBvdGhlcndpc2UKICAgICAgICAobm90IGN1cnNv ci1pbi1lY2hvLWFyZWEpCTtzY3Jld3MgdXAgeS1vci1uLXAgb3RoZXJ3aXNlCiAgICAgICAg KGxldCAoKGtieXRlcyAoYXNoICgqIGFuZ2UtZnRwLWhhc2gtbWFyay11bml0CmRpZmYgLS1n aXQgYS9saXNwL25ldC9yY2lyYy5lbCBiL2xpc3AvbmV0L3JjaXJjLmVsCmluZGV4IDEwOGUz NjguLjI4Y2I4ODEgMTAwNjQ0Ci0tLSBhL2xpc3AvbmV0L3JjaXJjLmVsCisrKyBiL2xpc3Av bmV0L3JjaXJjLmVsCkBAIC0yMDU1LDcgKzIwNTUsOCBAQCByY2lyYy12aXNpYmxlLWJ1ZmZl cnMKCiAoZGVmdmFyIHJjaXJjLXZpc2libGUtYnVmZmVycyBuaWwpCiAoZGVmdW4gcmNpcmMt d2luZG93LWNvbmZpZ3VyYXRpb24tY2hhbmdlICgpCi0gICh1bmxlc3MgKG1pbmlidWZmZXIt d2luZG93LWFjdGl2ZS1wIChtaW5pYnVmZmVyLXdpbmRvdykpCisgICh1bmxlc3MgKGFuZCAo bWluaWJ1ZmZlci13aW5kb3cgbmlsICdtYXliZS1uaWwpCisgICAgICAgICAgICAgICAobWlu aWJ1ZmZlci13aW5kb3ctYWN0aXZlLXAgKG1pbmlidWZmZXItd2luZG93KSkpCiAgICAgOzsg ZGVsYXkgdGhpcyB1bnRpbCBjb21tYW5kIGhhcyBmaW5pc2hlZCB0byBtYWtlIHN1cmUgd2lu ZG93IGlzCiAgICAgOzsgYWN0dWFsbHkgdmlzaWJsZSBiZWZvcmUgY2xlYXJpbmcgYWN0aXZp dHkKICAgICAoYWRkLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rICdyY2lyYy13aW5kb3ctY29u ZmlndXJhdGlvbi1jaGFuZ2UtMSkpKQpAQCAtMjIwMCw3ICsyMjAxLDcgQEAgam9pbgogICAg ICAgICAgICAgICAgICAgICAgICAgICBzcGxpdC1jaGFubmVscykpCiAgICAgICAgICAoY2hh bm5lbHMgKG1hcGNvbmNhdCAnaWRlbnRpdHkgc3BsaXQtY2hhbm5lbHMgIiwiKSkpCiAgICAg KHJjaXJjLXNlbmQtc3RyaW5nIHByb2Nlc3MgKGNvbmNhdCAiSk9JTiAiIGNoYW5uZWxzKSkK LSAgICAod2hlbiAobm90IChlcSAoc2VsZWN0ZWQtd2luZG93KSAobWluaWJ1ZmZlci13aW5k b3cpKSkKKyAgICAod2hlbiAobm90IChlcSAoc2VsZWN0ZWQtd2luZG93KSAobWluaWJ1ZmZl ci13aW5kb3cgbmlsICdtYXliZS1uaWwpKSkKICAgICAgIChkb2xpc3QgKGIgYnVmZmVycykg Ozsgb3JkZXIgdGhlIG5ldyBjaGFubmVsIGJ1ZmZlcnMgaW4gdGhlIGJ1ZmZlciBsaXN0CiAg ICAgICAgIChzd2l0Y2gtdG8tYnVmZmVyIGIpKSkpKQoKZGlmZiAtLWdpdCBhL2xpc3Avc2lt cGxlLmVsIGIvbGlzcC9zaW1wbGUuZWwKaW5kZXggOGQ3NzA0Ny4uYTJhNjUwZSAxMDA2NDQK LS0tIGEvbGlzcC9zaW1wbGUuZWwKKysrIGIvbGlzcC9zaW1wbGUuZWwKQEAgLTI0NTEsNyAr MjQ1MSw3IEBAIHVuZG8KICAgICA7OyBDaGVjayB0byBzZWUgd2hldGhlciB3ZSdyZSBoaXR0 aW5nIGEgcmVkbyByZWNvcmQsIGFuZCBpZgogICAgIDs7IHNvLCBhc2sgdGhlIHVzZXIgd2hl dGhlciBzaGUgd2FudHMgdG8gc2tpcCB0aGUgcmVkby91bmRvIHBhaXIuCiAgICAgKGxldCAo KGVxdWl2IChnZXRoYXNoIHBlbmRpbmctdW5kby1saXN0IHVuZG8tZXF1aXYtdGFibGUpKSkK LSAgICAgIChvciAoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2luZG93KSkK KyAgICAgIChvciAoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2luZG93IG5p bCAnbWF5YmUtbmlsKSkKIAkgIChzZXRxIG1lc3NhZ2UgKGZvcm1hdCAiJXMlcyEiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAob3IgdW5kby1uby1yZWRvIChub3Qg ZXF1aXYpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuZG8iICJS ZWRvIikKQEAgLTM2MjcsNyArMzYyNyw3IEBAIGRpc3BsYXktbWVzc2FnZS1vci1idWZmZXIK IAkgICAobGV0ICgobGluZXMKIAkJICAoaWYgKD0gKGJ1ZmZlci1zaXplKSAwKQogCQkgICAg ICAwCi0JCSAgICAoY291bnQtc2NyZWVuLWxpbmVzIG5pbCBuaWwgbmlsIChtaW5pYnVmZmVy LXdpbmRvdykpKSkpCisJCSAgICAoY291bnQtc2NyZWVuLWxpbmVzIG5pbCBuaWwgbmlsIChl Y2hvLXdpbmRvdykpKSkpCiAJICAgICAoY29uZCAoKD0gbGluZXMgMCkpCiAJCSAgICgoYW5k IChvciAoPD0gbGluZXMgMSkKIAkJCSAgICAgKDw9IGxpbmVzCmRpZmYgLS1naXQgYS9saXNw L3Rlcm0uZWwgYi9saXNwL3Rlcm0uZWwKaW5kZXggOWY4ZjFmNy4uYzA1MTk4MCAxMDA2NDQK LS0tIGEvbGlzcC90ZXJtLmVsCisrKyBiL2xpc3AvdGVybS5lbApAQCAtNDAwOSw3ICs0MDA5 LDcgQEAgdGVybS1keW5hbWljLWNvbXBsZXRlLWZpbGVuYW1lCiBSZXR1cm5zIHQgaWYgc3Vj Y2Vzc2Z1bC4iCiAgIChpbnRlcmFjdGl2ZSkKICAgKHdoZW4gKHRlcm0tbWF0Y2gtcGFydGlh bC1maWxlbmFtZSkKLSAgICAocHJvZzIgKG9yIChlcSAoc2VsZWN0ZWQtd2luZG93KSAobWlu aWJ1ZmZlci13aW5kb3cpKQorICAgIChwcm9nMiAob3IgKGVxIChzZWxlY3RlZC13aW5kb3cp IChtaW5pYnVmZmVyLXdpbmRvdyBuaWwgJ21heWJlLW5pbCkpCiAJICAgICAgIChtZXNzYWdl ICJDb21wbGV0aW5nIGZpbGUgbmFtZS4uLiIpKQogCSh0ZXJtLWR5bmFtaWMtY29tcGxldGUt YXMtZmlsZW5hbWUpKSkpCgpAQCAtNDAzMCw3ICs0MDMwLDcgQEAgdGVybS1keW5hbWljLWNv bXBsZXRlLWFzLWZpbGVuYW1lCiAJIChwYXRobm9uZGlyIChmaWxlLW5hbWUtbm9uZGlyZWN0 b3J5IGZpbGVuYW1lKSkKIAkgKGRpcmVjdG9yeSAoaWYgcGF0aGRpciAodGVybS1kaXJlY3Rv cnkgcGF0aGRpcikgZGVmYXVsdC1kaXJlY3RvcnkpKQogCSAoY29tcGxldGlvbiAoZmlsZS1u YW1lLWNvbXBsZXRpb24gcGF0aG5vbmRpciBkaXJlY3RvcnkpKQotCSAobWluaS1mbGFnIChl cSAoc2VsZWN0ZWQtd2luZG93KSAobWluaWJ1ZmZlci13aW5kb3cpKSkpCisJIChtaW5pLWZs YWcgKGVxIChzZWxlY3RlZC13aW5kb3cpIChtaW5pYnVmZmVyLXdpbmRvdyBuaWwgJ21heWJl LW5pbCkpKSkKICAgICAoY29uZCAoKG51bGwgY29tcGxldGlvbikKICAgICAgICAgICAgKG1l c3NhZ2UgIk5vIGNvbXBsZXRpb25zIG9mICVzIiBmaWxlbmFtZSkKIAkgICAoc2V0cSBzdWNj ZXNzIG5pbCkpCmRpZmYgLS1naXQgYS9saXNwL3RleHRtb2Rlcy9pc3BlbGwuZWwgYi9saXNw L3RleHRtb2Rlcy9pc3BlbGwuZWwKaW5kZXggZTZmNDM2Zi4uYTA5NGU3NiAxMDA2NDQKLS0t IGEvbGlzcC90ZXh0bW9kZXMvaXNwZWxsLmVsCisrKyBiL2xpc3AvdGV4dG1vZGVzL2lzcGVs bC5lbApAQCAtMzA2LDcgKzMwNiw3IEBAIGlzcGVsbC1mb2xsb3dpbmctd29yZAogKGRlZmN1 c3RvbSBpc3BlbGwtaGVscC1pbi1idWZmZXJwIG5pbAogICAiTm9uLW5pbCBtZWFucyBkaXNw bGF5IGludGVyYWN0aXZlIGtleW1hcCBoZWxwIGluIGEgYnVmZmVyLgogVGhlIGZvbGxvd2lu ZyB2YWx1ZXMgYXJlIHN1cHBvcnRlZDoKLSAgbmlsICAgICAgICBFeHBhbmQgdGhlIG1pbmli dWZmZXIgYW5kIGRpc3BsYXkgYSBzaG9ydCBoZWxwIG1lc3NhZ2UKKyAgbmlsICAgICAgICBF eHBhbmQgdGhlIGVjaG8gd2luZG93IGFuZCBkaXNwbGF5IGEgc2hvcnQgaGVscCBtZXNzYWdl CiAgICAgICAgICAgICAgdGhlcmUgZm9yIGEgY291cGxlIG9mIHNlY29uZHMuCiAgIHQgICAg ICAgICAgUG9wIHVwIGEgbmV3IGJ1ZmZlciBhbmQgZGlzcGxheSBhIHNob3J0IGhlbHAgbWVz c2FnZSB0aGVyZQogICAgICAgICAgICAgIGZvciBhIGNvdXBsZSBvZiBzZWNvbmRzLgpAQCAt MjQ1OCwxNiArMjQ1OCwxMCBAQCBpc3BlbGwtaGVscAogCSAgICAgIChpc3BlbGwtZGlzcGxh eS1idWZmZXIgYnVmZmVyKQogCSAgICAgIChzaXQtZm9yIDUpCiAJICAgICAgKGtpbGwtYnVm ZmVyICIqSXNwZWxsIEhlbHAqIikpCi0JICAodW53aW5kLXByb3RlY3QKLQkgICAgICAobGV0 ICgocmVzaXplLW1pbmktd2luZG93cyAnZ3Jvdy1vbmx5KSkKLQkJKHNlbGVjdC13aW5kb3cg KG1pbmlidWZmZXItd2luZG93KSkKLQkJKGVyYXNlLWJ1ZmZlcikKLQkJKG1lc3NhZ2Ugbmls KQotCQk7OyhzZXQtbWluaWJ1ZmZlci13aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCi0JCShl bmxhcmdlLXdpbmRvdyAyKQotCQkoaW5zZXJ0IChjb25jYXQgaGVscC0xICJcbiIgaGVscC0y ICJcbiIgaGVscC0zKSkKLQkJKHNpdC1mb3IgNSkpCi0JICAgIChlcmFzZS1idWZmZXIpKSkp KSkpCisJICAobGV0ICgocmVzaXplLW1pbmktd2luZG93cyAnZXhhY3RseSkKKyAgICAgICAg ICAgICAgICBtZXNzYWdlLWxvZy1tYXgpCisJICAgIChtZXNzYWdlIChjb25jYXQgaGVscC0x ICJcbiIgaGVscC0yICJcbiIgaGVscC0zKSkKKwkgICAgKHNpdC1mb3IgNSkpKSkpKSkKCiAo ZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzICdsb29rdXAtd29yZHMgJ2lzcGVsbC1s b29rdXAtd29yZHMgIjI0LjQiKQoKZGlmZiAtLWdpdCBhL2xpc3AvdHlwZS1icmVhay5lbCBi L2xpc3AvdHlwZS1icmVhay5lbAppbmRleCBjN2NkYzQ2Li5hZWI0MmNhIDEwMDY0NAotLS0g YS9saXNwL3R5cGUtYnJlYWsuZWwKKysrIGIvbGlzcC90eXBlLWJyZWFrLmVsCkBAIC01MzUs NyArNTM1LDcgQEAgdHlwZS1icmVhawogICAgICh3aGlsZSBjb250aW51ZQogICAgICAgKHNh dmUtd2luZG93LWV4Y3Vyc2lvbgogICAgICAgICA7OyBFYXQgdGhlIHNjcmVlbi4KLSAgICAg ICAgKGFuZCAoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2luZG93KSkKKyAg ICAgICAgKGFuZCAoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2luZG93IG5p bCAnbWF5YmUtbmlsKSkKICAgICAgICAgICAgICAob3RoZXItd2luZG93IDEpKQogICAgICAg ICAoZGVsZXRlLW90aGVyLXdpbmRvd3MpCiAgICAgICAgIChzY3JvbGwtcmlnaHQgKHdpbmRv dy13aWR0aCkpCkBAIC03MDAsNyArNzAwLDcgQEAgdHlwZS1icmVhay1jaGVjawogICAgICAo dHlwZS1icmVhay1hbGFybS1wCiAgICAgICAoY29uZAogICAgICAgICgoaW5wdXQtcGVuZGlu Zy1wKSkKLSAgICAgICAoKGVxIChzZWxlY3RlZC13aW5kb3cpIChtaW5pYnVmZmVyLXdpbmRv dykpKQorICAgICAgICgoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2luZG93 IG5pbCAnbWF5YmUtbmlsKSkpCiAgICAgICAgKChhbmQgbWluLXRocmVzaG9sZAogICAgICAg ICAgICAgICg8IHR5cGUtYnJlYWsta2V5c3Ryb2tlLWNvdW50IG1pbi10aHJlc2hvbGQpKQog ICAgICAgICAodHlwZS1icmVhay1zY2hlZHVsZSkpCkBAIC03MjIsNyArNzIyLDcgQEAgdHlw ZS1icmVhay1jaGVjawogICAgICAoKGFuZCBtYXgtdGhyZXNob2xkCiAgICAgICAgICAgICg+ IHR5cGUtYnJlYWsta2V5c3Ryb2tlLWNvdW50IG1heC10aHJlc2hvbGQpCiAgICAgICAgICAg IChub3QgKGlucHV0LXBlbmRpbmctcCkpCi0gICAgICAgICAgIChub3QgKGVxIChzZWxlY3Rl ZC13aW5kb3cpIChtaW5pYnVmZmVyLXdpbmRvdykpKSkKKyAgICAgICAgICAgKG5vdCAoZXEg KHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2luZG93IG5pbCAnbWF5YmUtbmlsKSkp KQogICAgICAgKHR5cGUtYnJlYWsta2V5c3Ryb2tlLXJlc2V0KQogICAgICAgKHNldHEgdHlw ZS1icmVhay1rZXlzdHJva2UtY291bnQgKG9yIG1pbi10aHJlc2hvbGQgMCkpCiAgICAgICAo dHlwZS1icmVhay1xdWVyeSkpKSkpCkBAIC04MTIsNyArODEyLDcgQEAgdHlwZS1icmVhay10 aW1lLXdhcm5pbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHR5cGUtYnJlYWstdGltZS1uZXh0LWJyZWFrKSkpCiAgICAgICAoc2V0cSB0eXBl LWJyZWFrLXdhcm5pbmctY291bnRkb3duLXN0cmluZyAobnVtYmVyLXRvLXN0cmluZyB0aW1l bGVmdCkpCiAgICAgICAoY29uZAotICAgICAgICgoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1p bmlidWZmZXItd2luZG93KSkpCisgICAgICAgKChlcSAoc2VsZWN0ZWQtd2luZG93KSAobWlu aWJ1ZmZlci13aW5kb3cgbmlsICdtYXliZS1uaWwpKSkKICAgICAgICA7OyBEbyBub3RoaW5n IGlmIHRoZSBjb21tYW5kIHdhcyBqdXN0IGEgcHJlZml4IGFyZywgc2luY2UgdGhhdCB3aWxs CiAgICAgICAgOzsgaW1tZWRpYXRlbHkgYmUgZm9sbG93ZWQgYnkgc29tZSBvdGhlciBpbnRl cmFjdGl2ZSBjb21tYW5kLgogICAgICAgIDs7IE90aGVyd2lzZSwgaXQgaXMgcGFydGljdWxh cmx5IGFubm95aW5nIGZvciB0aGUgc2l0LWZvciBiZWxvdyB0bwpAQCAtODM3LDcgKzgzNyw3 IEBAIHR5cGUtYnJlYWsta2V5c3Ryb2tlLXdhcm5pbmcKICAgICAgICAgICAobnVtYmVyLXRv LXN0cmluZyAoLSAoY2RyIHR5cGUtYnJlYWsta2V5c3Ryb2tlLXRocmVzaG9sZCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLWJyZWFrLWtleXN0cm9rZS1jb3VudCkp KQogICAgIChjb25kCi0gICAgICgoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXIt d2luZG93KSkpCisgICAgICgoZXEgKHNlbGVjdGVkLXdpbmRvdykgKG1pbmlidWZmZXItd2lu ZG93IG5pbCAnbWF5YmUtbmlsKSkpCiAgICAgIDs7IERvIG5vdGhpbmcgaWYgdGhlIGNvbW1h bmQgd2FzIGp1c3QgYSBwcmVmaXggYXJnLCBzaW5jZSB0aGF0IHdpbGwKICAgICAgOzsgaW1t ZWRpYXRlbHkgYmUgZm9sbG93ZWQgYnkgc29tZSBvdGhlciBpbnRlcmFjdGl2ZSBjb21tYW5k LgogICAgICA7OyBPdGhlcndpc2UsIGl0IGlzIHBhcnRpY3VsYXJseSBhbm5veWluZyBmb3Ig dGhlIHNpdC1mb3IgYmVsb3cgdG8KZGlmZiAtLWdpdCBhL2xpc3AvdmMvZWRpZmYtd2luZC5l bCBiL2xpc3AvdmMvZWRpZmYtd2luZC5lbAppbmRleCAwNTM1YWE2Li42MWI1MzM2IDEwMDY0 NAotLS0gYS9saXNwL3ZjL2VkaWZmLXdpbmQuZWwKKysrIGIvbGlzcC92Yy9lZGlmZi13aW5k LmVsCkBAIC0zMjcsNyArMzI3LDcgQEAgZWRpZmYtc2V0dXAtd2luZG93cwogICA7OyBNYWtl IHN1cmUgd2UgYXJlIG5vdCBpbiB0aGUgbWluaWJ1ZmZlciB3aW5kb3cgd2hlbiB3ZSB0cnkg dG8gZGVsZXRlCiAgIDs7IGFsbCBvdGhlciB3aW5kb3dzLgogICAocnVuLWhvb2tzICdlZGlm Zi1iZWZvcmUtc2V0dXAtd2luZG93cy1ob29rKQotICAoaWYgKGVxIChzZWxlY3RlZC13aW5k b3cpIChtaW5pYnVmZmVyLXdpbmRvdykpCisgIChpZiAoZXEgKHNlbGVjdGVkLXdpbmRvdykg KG1pbmlidWZmZXItd2luZG93IG5pbCAnbWF5YmUtbmlsKSkKICAgICAgIChvdGhlci13aW5k b3cgMSkpCgogICA7OyBpbiBjYXNlIHVzZXIgZGlkIGEgbm8tbm8gb24gYSB0dHkKZGlmZiAt LWdpdCBhL2xpc3AvdmMvZW1lcmdlLmVsIGIvbGlzcC92Yy9lbWVyZ2UuZWwKaW5kZXggZmM4 YzMxOC4uOGE5NzVmMSAxMDA2NDQKLS0tIGEvbGlzcC92Yy9lbWVyZ2UuZWwKKysrIGIvbGlz cC92Yy9lbWVyZ2UuZWwKQEAgLTEzMzAsNyArMTMzMCw3IEBAIGVtZXJnZS1tZXJnZS1kaXJl Y3RvcmllcwogKGRlZnVuIGVtZXJnZS1zZXR1cC13aW5kb3dzIChidWZmZXItQSBidWZmZXIt QiBtZXJnZS1idWZmZXIgJm9wdGlvbmFsIHBvcykKICAgOzsgTWFrZSBzdXJlIHdlIGFyZSBu b3QgaW4gdGhlIG1pbmlidWZmZXIgd2luZG93IHdoZW4gd2UgdHJ5IHRvIGRlbGV0ZQogICA7 OyBhbGwgb3RoZXIgd2luZG93cy4KLSAgKGlmIChlcSAoc2VsZWN0ZWQtd2luZG93KSAobWlu aWJ1ZmZlci13aW5kb3cpKQorICAoaWYgKGVxIChzZWxlY3RlZC13aW5kb3cpIChtaW5pYnVm ZmVyLXdpbmRvdyBuaWwgJ21heWJlLW5pbCkpCiAgICAgICAob3RoZXItd2luZG93IDEpKQog ICAoZGVsZXRlLW90aGVyLXdpbmRvd3MpCiAgIChzd2l0Y2gtdG8tYnVmZmVyIG1lcmdlLWJ1 ZmZlcikKQEAgLTI5NzAsNyArMjk3MCw3IEBAIGVtZXJnZS1kZWZpbmUta2V5LWlmLXBvc3Np YmxlCiA7OyBTaG93IHRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHRoZSBidWZmZXIuCiAoZGVm dW4gZW1lcmdlLXNob3ctZmlsZS1uYW1lICgpCiAgICJEaXNwbGF5cyB0aGUgbmFtZSBvZiB0 aGUgZmlsZSBsb2FkZWQgaW50byB0aGUgY3VycmVudCBidWZmZXIuCi1JZiB0aGUgbmFtZSB3 b24ndCBmaXQgb24gb25lIGxpbmUsIHRoZSBtaW5pYnVmZmVyIGlzIGV4cGFuZGVkIHRvIGhv bGQgaXQsCitJZiB0aGUgbmFtZSB3b24ndCBmaXQgb24gb25lIGxpbmUsIHRoZSBlY2hvIHdp bmRvdyBpcyBleHBhbmRlZCB0byBob2xkIGl0LAogYW5kIHRoZSBjb21tYW5kIHdhaXRzIGZv ciBhIGtleXN0cm9rZSBmcm9tIHRoZSB1c2VyLiAgSWYgdGhlIGtleXN0cm9rZSBpcwogU1BD LCBpdCBpcyBpZ25vcmVkOyBpZiBpdCBpcyBhbnl0aGluZyBlbHNlLCBpdCBpcyBwcm9jZXNz ZWQgYXMgYSBjb21tYW5kLiIKICAgKGludGVyYWN0aXZlKQpAQCAtMjk3OCw3ICsyOTc4LDcg QEAgZW1lcmdlLXNob3ctZmlsZS1uYW1lCiAgICAgKG9yIG5hbWUKIAkoc2V0cSBuYW1lICJC dWZmZXIgaGFzIG5vIGZpbGUgbmFtZS4iKSkKICAgICAoc2F2ZS13aW5kb3ctZXhjdXJzaW9u Ci0gICAgICAoc2VsZWN0LXdpbmRvdyAobWluaWJ1ZmZlci13aW5kb3cpKQorICAgICAgKHNl bGVjdC13aW5kb3cgKGVjaG8td2luZG93KSkKICAgICAgICh1bndpbmQtcHJvdGVjdAogCSAg KHByb2duCiAJICAgIChlcmFzZS1idWZmZXIpCmRpZmYgLS1naXQgYS9saXNwL3dpbmRvdy5l bCBiL2xpc3Avd2luZG93LmVsCmluZGV4IGQ1NmJlZDYuLmJjNWVkZGEgMTAwNjQ0Ci0tLSBh L2xpc3Avd2luZG93LmVsCisrKyBiL2xpc3Avd2luZG93LmVsCkBAIC01ODIsMTIgKzU4Miwx MiBAQCB3YWxrLXdpbmRvdy10cmVlCiAgICh3YWxrLXdpbmRvdy10cmVlLTEgZnVuIChmcmFt ZS1yb290LXdpbmRvdyBmcmFtZSkgYW55KQogICAod2hlbiAobWVtcSBtaW5pYnVmICcobmls IHQpKQogICAgIDs7IFJ1biBGVU4gb24gRlJBTUUncyBtaW5pYnVmZmVyIHdpbmRvdyBpZiBy ZXF1ZXN0ZWQuCi0gICAgKGxldCAoKG1pbmlidWZmZXItd2luZG93IChtaW5pYnVmZmVyLXdp bmRvdyBmcmFtZSkpKQotICAgICAgKHdoZW4gKGFuZCAod2luZG93LWxpdmUtcCBtaW5pYnVm ZmVyLXdpbmRvdykKLQkJIChlcSAod2luZG93LWZyYW1lIG1pbmlidWZmZXItd2luZG93KSBm cmFtZSkKKyAgICAobGV0ICgobWluaS13aW5kb3cgKG1pbmlidWZmZXItd2luZG93IGZyYW1l ICdtYXliZS1uaWwpKSkKKyAgICAgICh3aGVuIChhbmQgbWluaS13aW5kb3cKKyAgICAgICAg ICAgICAgICAgKGVxICh3aW5kb3ctZnJhbWUgbWluaS13aW5kb3cpIGZyYW1lKQogCQkgKG9y IChlcSBtaW5pYnVmIHQpCi0JCSAgICAgKG1pbmlidWZmZXItd2luZG93LWFjdGl2ZS1wIG1p bmlidWZmZXItd2luZG93KSkpCi0JKGZ1bmNhbGwgZnVuIG1pbmlidWZmZXItd2luZG93KSkp KSkKKwkJICAgICAobWluaWJ1ZmZlci13aW5kb3ctYWN0aXZlLXAgbWluaS13aW5kb3cpKSkK KwkoZnVuY2FsbCBmdW4gbWluaS13aW5kb3cpKSkpKQoKIChkZWZ1biB3YWxrLXdpbmRvdy1z dWJ0cmVlIChmdW4gJm9wdGlvbmFsIHdpbmRvdyBhbnkpCiAgICJSdW4gZnVuY3Rpb24gRlVO IG9uIHRoZSBzdWJ0cmVlIG9mIHdpbmRvd3Mgcm9vdGVkIGF0IFdJTkRPVy4KQEAgLTE1OTQs OCArMTU5NCwxMSBAQCB3aW5kb3ctLW1pbi1zaXplLTEKIAkgIHZhbHVlKQogICAgICAgKHdp dGgtY3VycmVudC1idWZmZXIgKHdpbmRvdy1idWZmZXIgd2luZG93KQogCShjb25kCi0JICgo d2luZG93LW1pbmlidWZmZXItcCB3aW5kb3cpCi0JICAoaWYgcGl4ZWx3aXNlIChmcmFtZS1j aGFyLWhlaWdodCAod2luZG93LWZyYW1lIHdpbmRvdykpIDEpKQorCSAoKHdpbmRvdy1taW5p LXAgd2luZG93KQorCSAgKGlmIHBpeGVsd2lzZQorICAgICAgICAgICAgICAoKyAoZnJhbWUt Y2hhci1oZWlnaHQgKHdpbmRvdy1mcmFtZSB3aW5kb3cpKQorICAgICAgICAgICAgICAgICAo d2luZG93LWJvdHRvbS1kaXZpZGVyLXdpZHRoIHdpbmRvdykpCisgICAgICAgICAgICAxKSkK IAkgKCh3aW5kb3ctc2l6ZS1maXhlZC1wIHdpbmRvdyBob3Jpem9udGFsIGlnbm9yZSkKIAkg IDs7IFRoZSBtaW5pbXVtIHNpemUgb2YgYSBmaXhlZCBzaXplIHdpbmRvdyBpcyBpdHMgc2l6 ZS4KIAkgICh3aW5kb3ctc2l6ZSB3aW5kb3cgaG9yaXpvbnRhbCBwaXhlbHdpc2UpKQpAQCAt MjA0Miw2ICsyMDQ1LDE4IEBAIHdpbmRvdy1yZXNpemFibGUtcAogKGRlZmFsaWFzICd3aW5k b3ctaGVpZ2h0ICd3aW5kb3ctdG90YWwtaGVpZ2h0KQogKGRlZmFsaWFzICd3aW5kb3ctd2lk dGggJ3dpbmRvdy1ib2R5LXdpZHRoKQoKKyhkZWZ1biB3aW5kb3ctbWluaWJ1ZmZlci1maXhl ZC1wICgmb3B0aW9uYWwgd2luZG93KQorICAiUmV0dXJuIG5vbi1uaWwgaWYgV0lORE9XIGlz IGEgZml4ZWQgbWluaWJ1ZmZlciB3aW5kb3cuCitBIG1pbmlidWZmZXIgd2luZG93IGlzIFwi Zml4ZWRcIiBpZiBpdCBpcyBsaXZlIGFuZCBpdHMgbWluaWJ1ZmZlcgord2luZG93IHR5cGUg aXMgZWl0aGVyICd0b3AnIG9yICdib3R0b20nLiIKKyAgKG1lbXEgKHdpbmRvdy1taW5pYnVm ZmVyLXAgd2luZG93KSAnKHRvcCBib3R0b20pKSkKKworKGRlZnVuIHdpbmRvdy1taW5pYnVm ZmVyLW5vbi1sb29zZS1wICgmb3B0aW9uYWwgd2luZG93KQorICAiUmV0dXJuIG5vbi1uaWwg aWYgV0lORE9XIGlzIGEgbm9uLWxvb3NlIG1pbmlidWZmZXIgd2luZG93LgorQSBtaW5pYnVm ZmVyIHdpbmRvdyBpcyBcIm5vbi1sb29zZVwiIGlmIGl0IGlzIGxpdmUgYW5kIGl0cworbWlu aWJ1ZmZlciB3aW5kb3cgdHlwZSBpcyAndG9wJywgJ2JvdHRvbScgb3IgJ29ubHknLiIKKyAg KG1lbXEgKHdpbmRvdy1taW5pYnVmZmVyLXAgd2luZG93KSAnKHRvcCBib3R0b20gb25seSkp KQorCiAoZGVmdW4gd2luZG93LWZ1bGwtaGVpZ2h0LXAgKCZvcHRpb25hbCB3aW5kb3cpCiAg ICJSZXR1cm4gdCBpZiBXSU5ET1cgaXMgYXMgaGlnaCBhcyBpdHMgY29udGFpbmluZyBmcmFt ZS4KIE1vcmUgcHJlY2lzZWx5LCByZXR1cm4gdCBpZiBhbmQgb25seSBpZiB0aGUgdG90YWwg aGVpZ2h0IG9mCkBAIC0yMDQ5LDggKzIwNjQsMTIgQEAgd2luZG93LWZ1bGwtaGVpZ2h0LXAK IGZyYW1lLiAgV0lORE9XIG11c3QgYmUgYSB2YWxpZCB3aW5kb3cgYW5kIGRlZmF1bHRzIHRv IHRoZQogc2VsZWN0ZWQgb25lLiIKICAgKHNldHEgd2luZG93ICh3aW5kb3ctbm9ybWFsaXpl LXdpbmRvdyB3aW5kb3cpKQotICAoaWYgKHdpbmRvdy1taW5pYnVmZmVyLXAgd2luZG93KQor ICAoaWYgKHdpbmRvdy1taW5pYnVmZmVyLW5vbi1sb29zZS1wIHdpbmRvdykKKyAgICAgIDs7 IElmIFdJTkRPVyBpcyBhIG5vbi1sb29zZSBtaW5pYnVmZmVyIHdpbmRvdywgaXQgaXMgZnVs bC1oZWlnaHQKKyAgICAgIDs7IGlmZiB0aGVyZSBhcmUgbm8gb3RoZXIgd2luZG93cyBvbiBp dHMgZnJhbWUgKHdoaWNoIGhvbGRzIG9ubHkKKyAgICAgIDs7IGZvciBtaW5pYnVmZmVyLW9u bHkgZnJhbWVzKS4KICAgICAgIChlcSB3aW5kb3cgKGZyYW1lLXJvb3Qtd2luZG93ICh3aW5k b3ctZnJhbWUgd2luZG93KSkpCisgICAgOzsgT3RoZXJ3aXNlLCBXSU5ET1cgbXVzdCBtZSBh cyBoaWdoIGFzIGl0cyBmcmFtZSdzIHJvb3Qgd2luZG93LgogICAgICg9ICh3aW5kb3ctcGl4 ZWwtaGVpZ2h0IHdpbmRvdykKICAgICAgICAod2luZG93LXBpeGVsLWhlaWdodCAoZnJhbWUt cm9vdC13aW5kb3cgd2luZG93KSkpKSkKCkBAIC0yMDc4LDM1ICsyMDk3LDM1IEBAIHdpbmRv dy1ib2R5LXNpemUKIChkZWNsYXJlLWZ1bmN0aW9uIGZvbnQtaW5mbyAiZm9udC5jIiAobmFt ZSAmb3B0aW9uYWwgZnJhbWUpKQoKIChkZWZ1biB3aW5kb3ctZm9udC13aWR0aCAoJm9wdGlv bmFsIHdpbmRvdyBmYWNlKQotICAgIlJldHVybiBhdmVyYWdlIGNoYXJhY3RlciB3aWR0aCBm b3IgdGhlIGZvbnQgb2YgRkFDRSB1c2VkIGluIFdJTkRPVy4KKyAgIlJldHVybiBhdmVyYWdl IGNoYXJhY3RlciB3aWR0aCBmb3IgdGhlIGZvbnQgb2YgRkFDRSB1c2VkIGluIFdJTkRPVy4K IFdJTkRPVyBtdXN0IGJlIGEgbGl2ZSB3aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxl Y3RlZCBvbmUuCgogSWYgRkFDRSBpcyBuaWwgb3Igb21pdHRlZCwgdGhlIGRlZmF1bHQgZmFj ZSBpcyB1c2VkLiAgSWYgRkFDRSBpcwogcmVtYXBwZWQgKHNlZSBgZmFjZS1yZW1hcHBpbmct YWxpc3QnKSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlCiBpbmZvcm1hdGlvbiBmb3IgdGhl IHJlbWFwcGVkIGZhY2UuIgotICAgKHdpdGgtc2VsZWN0ZWQtd2luZG93ICh3aW5kb3ctbm9y bWFsaXplLXdpbmRvdyB3aW5kb3cgdCkKLSAgICAgKGlmIChkaXNwbGF5LW11bHRpLWZvbnQt cCkKLQkgKGxldCogKChmYWNlIChpZiBmYWNlIGZhY2UgJ2RlZmF1bHQpKQotCQkoaW5mbyAo Zm9udC1pbmZvIChmYWNlLWZvbnQgZmFjZSkpKQotCQkod2lkdGggKGFyZWYgaW5mbyAxMSkp KQotCSAgIChpZiAoPiB3aWR0aCAwKQorICAod2l0aC1zZWxlY3RlZC13aW5kb3cgKHdpbmRv dy1ub3JtYWxpemUtd2luZG93IHdpbmRvdyB0KQorICAgIChpZiAoZGlzcGxheS1tdWx0aS1m b250LXApCisJKGxldCogKChmYWNlIChpZiBmYWNlIGZhY2UgJ2RlZmF1bHQpKQorCSAgICAg ICAoaW5mbyAoZm9udC1pbmZvIChmYWNlLWZvbnQgZmFjZSkpKQorCSAgICAgICAod2lkdGgg KGFyZWYgaW5mbyAxMSkpKQorCSAgKGlmICg+IHdpZHRoIDApCiAJICAgICAgd2lkdGgKLQkg ICAgIChhcmVmIGluZm8gMTApKSkKLSAgICAgICAoZnJhbWUtY2hhci13aWR0aCkpKSkKKwkg ICAgKGFyZWYgaW5mbyAxMCkpKQorICAgICAgKGZyYW1lLWNoYXItd2lkdGgpKSkpCgogKGRl ZnVuIHdpbmRvdy1mb250LWhlaWdodCAoJm9wdGlvbmFsIHdpbmRvdyBmYWNlKQotICAgIlJl dHVybiBjaGFyYWN0ZXIgaGVpZ2h0IGZvciB0aGUgZm9udCBvZiBGQUNFIHVzZWQgaW4gV0lO RE9XLgorICAiUmV0dXJuIGNoYXJhY3RlciBoZWlnaHQgZm9yIHRoZSBmb250IG9mIEZBQ0Ug dXNlZCBpbiBXSU5ET1cuCiBXSU5ET1cgbXVzdCBiZSBhIGxpdmUgd2luZG93IGFuZCBkZWZh dWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgoKIElmIEZBQ0UgaXMgbmlsIG9yIG9taXR0ZWQs IHRoZSBkZWZhdWx0IGZhY2UgaXMgdXNlZC4gIElmIEZBQ0UgaXMKIHJlbWFwcGVkIChzZWUg YGZhY2UtcmVtYXBwaW5nLWFsaXN0JyksIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZQogaW5m b3JtYXRpb24gZm9yIHRoZSByZW1hcHBlZCBmYWNlLiIKLSAgICh3aXRoLXNlbGVjdGVkLXdp bmRvdyAod2luZG93LW5vcm1hbGl6ZS13aW5kb3cgd2luZG93IHQpCi0gICAgIChpZiAoZGlz cGxheS1tdWx0aS1mb250LXApCi0JIChsZXQqICgoZmFjZSAoaWYgZmFjZSBmYWNlICdkZWZh dWx0KSkKLQkJKGluZm8gKGZvbnQtaW5mbyAoZmFjZS1mb250IGZhY2UpKSkpCi0JICAgKGFy ZWYgaW5mbyAzKSkKLSAgICAgICAoZnJhbWUtY2hhci1oZWlnaHQpKSkpCisgICh3aXRoLXNl bGVjdGVkLXdpbmRvdyAod2luZG93LW5vcm1hbGl6ZS13aW5kb3cgd2luZG93IHQpCisgICAg KGlmIChkaXNwbGF5LW11bHRpLWZvbnQtcCkKKwkobGV0KiAoKGZhY2UgKGlmIGZhY2UgZmFj ZSAnZGVmYXVsdCkpCisJICAgICAgIChpbmZvIChmb250LWluZm8gKGZhY2UtZm9udCBmYWNl KSkpKQorCSAgKGFyZWYgaW5mbyAzKSkKKyAgICAgIChmcmFtZS1jaGFyLWhlaWdodCkpKSkK CiAoZGVmdmFyIG92ZXJmbG93LW5ld2xpbmUtaW50by1mcmluZ2UpCgpAQCAtMjI5Nyw3ICsy MzE2LDcgQEAgd2luZG93LWluLWRpcmVjdGlvbgogCQkgICh3aW5kb3ctcGl4ZWwtdG9wIHdp bmRvdykpKQogCSAobGFzdCAoKyBmaXJzdCAod2luZG93LXNpemUgd2luZG93IGhvciB0KSkp CiAJIDs7IFRoZSBjb2x1bW4gLyByb3cgdmFsdWUgb2YgYHBvc24tYXQtcG9pbnQnIGNhbiBi ZSBuaWwgZm9yIHRoZQotCSA7OyBtaW5pLXdpbmRvdywgZ3VhcmQgYWdhaW5zdCB0aGF0Lgor CSA7OyBtaW5pYnVmZmVyIHdpbmRvdywgZ3VhcmQgYWdhaW5zdCB0aGF0LgogCSAocG9zbgog CSAgKGNvbmQKIAkgICAoKGFuZCAobnVtYmVycCBzaWduKSAoPCBzaWduIDApKQpAQCAtMjY3 MSwzMCArMjY5MCwzMSBAQCB3aW5kb3ctLXBpeGVsLXRvLXRvdGFsCiAJIChyb290LXNpemUg KHdpbmRvdy1zaXplIHJvb3QgaG9yaXpvbnRhbCB0KSkKIAkgOzsgV2UgaGF2ZSB0byBjYXJl IGFib3V0IHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBvbmx5IGlmIGl0CiAJIDs7IGFwcGVhcnMg dG9nZXRoZXIgd2l0aCB0aGUgcm9vdCB3aW5kb3cgb24gdGhpcyBmcmFtZS4KLQkgKG1pbmkg KGxldCAoKG1pbmkgKG1pbmlidWZmZXItd2luZG93IGZyYW1lKSkpCi0JCSAoYW5kIChlcSAo d2luZG93LWZyYW1lIG1pbmkpIGZyYW1lKQotCQkgICAgICAobm90IChlcSBtaW5pIHJvb3Qp KSBtaW5pKSkpCi0JIChtaW5pLXNpemUgKGFuZCBtaW5pICh3aW5kb3ctc2l6ZSBtaW5pIGhv cml6b250YWwgdCkpKSkKKwkgKG1pbmktd2luZG93CisgICAgICAgICAgKGFuZCAobWVtcSAo bWluaWJ1ZmZlci13aW5kb3ctdHlwZSBmcmFtZSkgJyhib3R0b20gdG9wKSkKKyAgICAgICAg ICAgICAgIChtaW5pYnVmZmVyLXdpbmRvdyBmcmFtZSAnbWF5YmUtbmlsKSkpCisJIChtaW5p LXNpemUgKGFuZCBtaW5pLXdpbmRvdyAod2luZG93LXNpemUgbWluaS13aW5kb3cgaG9yaXpv bnRhbCB0KSkpKQogICAgIDs7IFdlIHJvdW5kIHRoZSBsaW5lL2NvbHVtbiBzaXplcyBvZiB3 aW5kb3dzIGhlcmUgdG8gdGhlIG5lYXJlc3QKICAgICA7OyBpbnRlZ2VyLiAgSW4gc29tZSBj YXNlcyB0aGlzIGNhbiBtYWtlIHdpbmRvd3MgYXBwZWFyIF9sYXJnZXJfCiAgICAgOzsgdGhh biB0aGUgY29udGFpbmluZyBmcmFtZSAobGluZS9jb2x1bW4td2lzZSkgYmVjYXVzZSB0aGUg bGF0dGVyJ3MKICAgICA7OyBzaXplcyBhcmUgbm90ICh5ZXQpIHJvdW5kZWQuICBXZSBtaWdo dCBldmVudHVhbGx5IGZpeCB0aGF0LgotICAgIChpZiAoYW5kIG1pbmkgKG5vdCBob3Jpem9u dGFsKSkKKyAgICAoaWYgKGFuZCBtaW5pLXdpbmRvdyAobm90IGhvcml6b250YWwpKQogCShs ZXQgKGxpbmVzKQogCSAgKHNldC13aW5kb3ctbmV3LXRvdGFsIHJvb3QgKG1heCAoLyByb290 LXNpemUgY2hhci1zaXplKSAxKSkKLQkgIChzZXQtd2luZG93LW5ldy10b3RhbCBtaW5pICht YXggKC8gbWluaS1zaXplIGNoYXItc2l6ZSkgMSkpCisJICAoc2V0LXdpbmRvdy1uZXctdG90 YWwgbWluaS13aW5kb3cgKG1heCAoLyBtaW5pLXNpemUgY2hhci1zaXplKSAxKSkKIAkgIChz ZXRxIGxpbmVzICgtIChyb3VuZCAoKyByb290LXNpemUgbWluaS1zaXplKSBjaGFyLXNpemUp Ci0JCQkgKCsgKHdpbmRvdy1uZXctdG90YWwgcm9vdCkgKHdpbmRvdy1uZXctdG90YWwgbWlu aSkpKSkKKwkJCSAoKyAod2luZG93LW5ldy10b3RhbCByb290KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh3aW5kb3ctbmV3LXRvdGFsIG1pbmktd2luZG93KSkpKQogCSAgKHdo aWxlICg+IGxpbmVzIDApCiAJICAgIChpZiAoPj0gKCUgcm9vdC1zaXplICh3aW5kb3ctbmV3 LXRvdGFsIHJvb3QpKQotCQkgICAgKCUgbWluaS1zaXplICh3aW5kb3ctbmV3LXRvdGFsIG1p bmkpKSkKKwkJICAgICglIG1pbmktc2l6ZSAod2luZG93LW5ldy10b3RhbCBtaW5pLXdpbmRv dykpKQogCQkoc2V0LXdpbmRvdy1uZXctdG90YWwgcm9vdCAxIHQpCi0JICAgICAgKHNldC13 aW5kb3ctbmV3LXRvdGFsIG1pbmkgMSB0KSkKKwkgICAgICAoc2V0LXdpbmRvdy1uZXctdG90 YWwgbWluaS13aW5kb3cgMSB0KSkKIAkgICAgKHNldHEgbGluZXMgKDEtIGxpbmVzKSkpKQog ICAgICAgKHNldC13aW5kb3ctbmV3LXRvdGFsIHJvb3QgKHJvdW5kIHJvb3Qtc2l6ZSBjaGFy LXNpemUpKQotICAgICAgKHdoZW4gbWluaQorICAgICAgKHdoZW4gbWluaS13aW5kb3cKIAk7 OyBUaGlzIGlzIHRha2VuIGluIHRoZSBob3Jpem9udGFsIGNhc2Ugb25seS4KLQkoc2V0LXdp bmRvdy1uZXctdG90YWwgbWluaSAocm91bmQgbWluaS1zaXplIGNoYXItc2l6ZSkpKSkKKwko c2V0LXdpbmRvdy1uZXctdG90YWwgbWluaS13aW5kb3cgKHJvdW5kIG1pbmktc2l6ZSBjaGFy LXNpemUpKSkpCiAgICAgKHVubGVzcyAod2luZG93LWJ1ZmZlciByb290KQogICAgICAgKHdp bmRvdy0tcGl4ZWwtdG8tdG90YWwtMSByb290IGhvcml6b250YWwgY2hhci1zaXplKSkKICAg ICA7OyBBcHBseSB0aGUgbmV3IHNpemVzLgpAQCAtMjcyNywyMiArMjc0NywzNSBAQCB3aW5k b3ctLXJlc2l6ZS1taW5pLXdpbmRvdwogICAiUmVzaXplIG1pbmlidWZmZXIgd2luZG93IFdJ TkRPVyBieSBERUxUQSBwaXhlbHMuCiBJZiBXSU5ET1cgY2Fubm90IGJlIHJlc2l6ZWQgYnkg REVMVEEgcGl4ZWxzIG1ha2UgaXQgYXMgbGFyZ2UgKG9yCiBhcyBzbWFsbCkgYXMgcG9zc2li bGUsIGJ1dCBkb24ndCBzaWduYWwgYW4gZXJyb3IuIgotICAod2hlbiAod2luZG93LW1pbmli dWZmZXItcCB3aW5kb3cpCisgICh3aGVuICh3aW5kb3ctbWluaS1wIHdpbmRvdykKICAgICAo bGV0KiAoKGZyYW1lICh3aW5kb3ctZnJhbWUgd2luZG93KSkKIAkgICAocm9vdCAoZnJhbWUt cm9vdC13aW5kb3cgZnJhbWUpKQogCSAgIChoZWlnaHQgKHdpbmRvdy1waXhlbC1oZWlnaHQg d2luZG93KSkKKyAgICAgICAgICAgKGNoYXItaGVpZ2h0IChmcmFtZS1jaGFyLWhlaWdodCBm cmFtZSkpCiAJICAgKG1pbi1kZWx0YQotCSAgICAoLSAod2luZG93LXBpeGVsLWhlaWdodCBy b290KQotCSAgICAgICAod2luZG93LW1pbi1zaXplIHJvb3QgbmlsIG5pbCB0KSkpKQorICAg ICAgICAgICAgKGlmICh3aW5kb3ctbWluaWJ1ZmZlci1maXhlZC1wIHdpbmRvdykKKyAgICAg ICAgICAgICAgICAoLSAod2luZG93LXBpeGVsLWhlaWdodCByb290KQorCSAgICAgICAgICAg KHdpbmRvdy1taW4tc2l6ZSByb290IG5pbCBuaWwgdCkpCisgICAgICAgICAgICAgICh3aW5k b3ctLXJlc2l6YWJsZSB3aW5kb3cgZGVsdGEgbmlsIHdpbmRvdyBuaWwgbmlsIG5pbCB0KSkp KQogICAgICAgOzsgU2FuaXRpemUgREVMVEEuCiAgICAgICAoY29uZAogICAgICAgICgoPD0g KCsgaGVpZ2h0IGRlbHRhKSAwKQotCShzZXRxIGRlbHRhICgtIChmcmFtZS1jaGFyLWhlaWdo dCAod2luZG93LWZyYW1lIHdpbmRvdykpIGhlaWdodCkpKQorCShzZXRxIGRlbHRhICgtIChm cmFtZS1jaGFyLWhlaWdodCBmcmFtZSkgaGVpZ2h0KSkpCiAgICAgICAgKCg+IGRlbHRhIG1p bi1kZWx0YSkKIAkoc2V0cSBkZWx0YSBtaW4tZGVsdGEpKSkKCiAgICAgICAodW5sZXNzICh6 ZXJvcCBkZWx0YSkKLQk7OyBSZXNpemUgbm93LgorICAgICAgICAoaWYgKG9yIChlcSAod2lu ZG93LW1pbmlidWZmZXItcCB3aW5kb3cpICdsb29zZSkKKyAgICAgICAgICAgICAgICAoZXEg KHdpbmRvdy1lY2hvLXAgd2luZG93KSAnbG9vc2UpKQorICAgICAgICAgICAgOzsgQSBsb29z ZSBtaW5pIHdpbmRvdyBnZXRzIHJlc2l6ZWQgbGlrZSBhIG5vcm1hbCB3aW5kb3cuCisgICAg ICAgICAgICA7OyBCaW5kIGB3aW5kb3ctcmVzaXplLXBpeGVsd2lzZScgdG8gbm9uLW5pbCB3 aGVuIERFTFRBIGlzCisgICAgICAgICAgICA7OyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgZnJh bWUncyBjaGFyYWN0ZXIgaGVpZ2h0IHNvIHdlCisgICAgICAgICAgICA7OyBjYW4gYWNjb21t b2RhdGUgYSBkaXZpZGVyIGJlbG93IGl0LgorICAgICAgICAgICAgKGxldCAoKHdpbmRvdy1y ZXNpemUtcGl4ZWx3aXNlCisgICAgICAgICAgICAgICAgICAgKG5vdCAoemVyb3AgKG1vZCBk ZWx0YSBjaGFyLWhlaWdodCkpKSkpCisgICAgICAgICAgICAgICh3aW5kb3ctcmVzaXplIHdp bmRvdyBkZWx0YSBuaWwgd2luZG93IHQpCisgICAgICAgICAgICAgICh3aW5kb3ctcHJlc2Vy dmUtc2l6ZSB3aW5kb3cgbmlsIHQpKQorICAgICAgICA7OyBSZXNpemUgbm93LgogCSh3aW5k b3ctLXJlc2l6ZS1yZXNldCBmcmFtZSkKIAk7OyBJZGVhbGx5IHdlIHNob3VsZCBiZSBhYmxl IHRvIHJlc2l6ZSBqdXN0IHRoZSBsYXN0IGNoaWxkIG9mIHJvb3QKIAk7OyBoZXJlLiAgU2Vl IHRoZSBjb21tZW50IGluIGByZXNpemUtcm9vdC13aW5kb3ctdmVydGljYWxseScgZm9yCkBA IC0yNzUxLDkgKzI3ODQsOSBAQCB3aW5kb3ctLXJlc2l6ZS1taW5pLXdpbmRvdwogCShzZXQt d2luZG93LW5ldy1waXhlbCB3aW5kb3cgKCsgaGVpZ2h0IGRlbHRhKSkKIAk7OyBUaGUgZm9s bG93aW5nIHJvdXRpbmUgY2F0Y2hlcyB0aGUgY2FzZSB3aGVyZSB3ZSB3YW50IHRvIHJlc2l6 ZQogCTs7IGEgbWluaWJ1ZmZlci1vbmx5IGZyYW1lLgotCSh3aGVuIChyZXNpemUtbWluaS13 aW5kb3ctaW50ZXJuYWwgd2luZG93KQorCSh3aGVuIChyZXNpemUtbWluaWJ1ZmZlci13aW5k b3ctaW50ZXJuYWwgd2luZG93KQogCSAgKHdpbmRvdy0tcGl4ZWwtdG8tdG90YWwgZnJhbWUp Ci0JICAocnVuLXdpbmRvdy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rIGZyYW1lKSkpKSkp CisJICAocnVuLXdpbmRvdy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rIGZyYW1lKSkpKSkp KQoKIChkZWZ1biB3aW5kb3ctLXJlc2l6ZS1hcHBseS1wIChmcmFtZSAmb3B0aW9uYWwgaG9y aXpvbnRhbCkKICAgIlJldHVybiB0IHdoZW4gYSB3aW5kb3cgb24gRlJBTUUgc2hhbGwgYmUg cmVzaXplZCB2ZXJ0aWNhbGx5LgpAQCAtMjgwMSwyNiArMjgzNCwyNyBAQCB3aW5kb3ctcmVz aXplCiBpbnN0ZWFkLiIKICAgKHNldHEgd2luZG93ICh3aW5kb3ctbm9ybWFsaXplLXdpbmRv dyB3aW5kb3cpKQogICAobGV0KiAoKGZyYW1lICh3aW5kb3ctZnJhbWUgd2luZG93KSkKLQkg KG1pbmlidWZmZXItd2luZG93IChtaW5pYnVmZmVyLXdpbmRvdyBmcmFtZSkpCisJIChtaW5p LXdpbmRvdyAobWluaWJ1ZmZlci13aW5kb3cgZnJhbWUgJ21heWJlLW5pbCkpCiAJIHNpYmxp bmcpCiAgICAgKHNldHEgZGVsdGEgKHdpbmRvdy0tc2l6ZS10by1waXhlbAogCQkgd2luZG93 IGRlbHRhIGhvcml6b250YWwgcGl4ZWx3aXNlIHQpKQogICAgIChjb25kCiAgICAgICgoZXEg d2luZG93IChmcmFtZS1yb290LXdpbmRvdyBmcmFtZSkpCiAgICAgICAoZXJyb3IgIkNhbm5v dCByZXNpemUgdGhlIHJvb3Qgd2luZG93IG9mIGEgZnJhbWUiKSkKLSAgICAgKCh3aW5kb3ct bWluaWJ1ZmZlci1wIHdpbmRvdykKKyAgICAgKCh3aW5kb3ctbWluaWJ1ZmZlci1ub24tbG9v c2UtcCB3aW5kb3cpCiAgICAgICAoaWYgaG9yaXpvbnRhbAogCSAgKGVycm9yICJDYW5ub3Qg cmVzaXplIG1pbmlidWZmZXIgd2luZG93IGhvcml6b250YWxseSIpCiAJKHdpbmRvdy0tcmVz aXplLW1pbmktd2luZG93IHdpbmRvdyBkZWx0YSkpKQogICAgICAoKGFuZCAobm90IGhvcml6 b250YWwpCiAJICAgKHdpbmRvdy1mdWxsLWhlaWdodC1wIHdpbmRvdykKLQkgICAoZXEgKHdp bmRvdy1mcmFtZSBtaW5pYnVmZmVyLXdpbmRvdykgZnJhbWUpCi0JICAgKG9yIChub3QgcmVz aXplLW1pbmktd2luZG93cykKLQkgICAgICAgKGVxIG1pbmlidWZmZXItd2luZG93IChhY3Rp dmUtbWluaWJ1ZmZlci13aW5kb3cpKSkpCisgICAgICAgICAgIG1pbmktd2luZG93CisgICAg ICAgICAgICh3aW5kb3ctbWluaWJ1ZmZlci1maXhlZC1wIG1pbmktd2luZG93KQorICAgICAg ICAgICAob3IgKG5vdCByZXNpemUtbWluaS13aW5kb3dzKQorCSAgICAgICAoZXEgbWluaS13 aW5kb3cgKGFjdGl2ZS1taW5pYnVmZmVyLXdpbmRvdykpKSkKICAgICAgIDs7IElmIFdJTkRP VyBpcyBmdWxsIGhlaWdodCBhbmQgZWl0aGVyIGByZXNpemUtbWluaS13aW5kb3dzJyBpcwog ICAgICAgOzsgbmlsIG9yIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBpcyBhY3RpdmUsIHJlc2l6 ZSB0aGUgbWluaWJ1ZmZlcgogICAgICAgOzsgd2luZG93LgotICAgICAgKHdpbmRvdy0tcmVz aXplLW1pbmktd2luZG93IG1pbmlidWZmZXItd2luZG93ICgtIGRlbHRhKSkpCisgICAgICAo d2luZG93LS1yZXNpemUtbWluaS13aW5kb3cgbWluaS13aW5kb3cgKC0gZGVsdGEpKSkKICAg ICAgKChvciAod2luZG93LS1yZXNpemFibGUtcAogCSAgIHdpbmRvdyBkZWx0YSBob3Jpem9u dGFsIGlnbm9yZSBuaWwgbmlsIG5pbCB0KQogCSAgKGFuZCAobm90IGlnbm9yZSkKQEAgLTMz NDQsMTEgKzMzNzgsMTYgQEAgd2luZG93LS1yZXNpemUtcm9vdC13aW5kb3ctdmVydGljYWxs eQogICAgICAoKDwgcGl4ZWwtZGVsdGEgMCkKICAgICAgIChzZXRxIHBpeGVsLWRlbHRhICh3 aW5kb3ctc2l6YWJsZSB3aW5kb3cgcGl4ZWwtZGVsdGEgbmlsIG5pbCBwaXhlbHdpc2UpKQog ICAgICAgKHdpbmRvdy0tcmVzaXplLXJlc2V0IGZyYW1lKQotICAgICAgOzsgV2hlbiBzaHJp bmtpbmcgdGhlIHJvb3Qgd2luZG93LCBlbXVsYXRlIGFuIGVkZ2UgZHJhZyBpbiBvcmRlcgot ICAgICAgOzsgdG8gbm90IHJlc2l6ZSBvdGhlciB3aW5kb3dzIGlmIHdlIGNhbiBhdm9pZCBp dCAoQnVnIzEyNDE5KS4KLSAgICAgICh3aW5kb3ctLXJlc2l6ZS10aGlzLXdpbmRvdwotICAg ICAgIHdpbmRvdyBwaXhlbC1kZWx0YSBuaWwgaWdub3JlIHQgJ2JlZm9yZQotICAgICAgICgr ICh3aW5kb3ctcGl4ZWwtdG9wIHdpbmRvdykgKHdpbmRvdy1waXhlbC1oZWlnaHQgd2luZG93 KSkpCisgICAgICAoaWYgKGVxIChtaW5pYnVmZmVyLXdpbmRvdy10eXBlIGZyYW1lKSAnYm90 dG9tKQorICAgICAgICAgIDs7IFdoZW4gdGhlIG1pbmkgd2luZG93IGlzIGF0IHRoZSBib3R0 b20sIGVtdWxhdGUgYW4gZWRnZQorICAgICAgICAgIDs7IGRyYWcgaW4gb3JkZXIgdG8gbm90 IHJlc2l6ZSBvdGhlciB3aW5kb3dzIGlmIHdlIGNhbiBhdm9pZAorICAgICAgICAgIDs7IGl0 IChCdWcjMTI0MTkpLgorICAgICAgICAgICh3aW5kb3ctLXJlc2l6ZS10aGlzLXdpbmRvdwor ICAgICAgICAgICB3aW5kb3cgcGl4ZWwtZGVsdGEgbmlsIGlnbm9yZSB0ICdiZWZvcmUKKyAg ICAgICAgICAgKCsgKHdpbmRvdy1waXhlbC10b3Agd2luZG93KSAod2luZG93LXBpeGVsLWhl aWdodCB3aW5kb3cpKSkKKyAgICAgICAgOzsgV2l0aCB0aGUgbWluaWJ1ZmZlciB3aW5kb3cg ZWxzZXdoZXJlIHRoaXMgZG9lc24ndCBtYWtlCisgICAgICAgIDs7IHNlbnNlIHRob3VnaC4K KyAgICAgICAgKHdpbmRvdy0tcmVzaXplLXRoaXMtd2luZG93IHdpbmRvdyBwaXhlbC1kZWx0 YSBuaWwgaWdub3JlIHQpKQogICAgICAgOzsgRG9uJ3QgcmVjb3JkIG5ldyBub3JtYWwgc2l6 ZXMgdG8gbWFrZSBzdXJlIHRoYXQgc2hyaW5raW5nIGJhY2sKICAgICAgIDs7IHByb3BvcnRp b25hbGx5IHdvcmtzIGFzIGludGVuZGVkLgogICAgICAgKHdhbGstd2luZG93LXRyZWUKQEAg LTMzNjYsNiArMzQwNSwxOCBAQCB3aW5kb3ctLXJlc2l6ZS1yb290LXdpbmRvdy12ZXJ0aWNh bGx5CiAJIHBpeGVsLWRlbHRhCiAgICAgICAgKC8gcGl4ZWwtZGVsdGEgKGZyYW1lLWNoYXIt aGVpZ2h0IGZyYW1lKSkpKSkKCisoZGVmdW4gd2luZG93LS1yZXNpemUtbWluaWJ1ZmZlci1m cmFtZSAocm9vdCBkZWx0YSkKKyAgIlJlc2l6ZSBoZWlnaHQgb2YgUk9PVCdzIGZyYW1lIGJ5 IERFTFRBIHBpeGVscy4KK1JPT1QgbXVzdCBzcGVjaWZ5IHRoZSByb290IHdpbmRvdyBvZiBh IGxpdmUgbWluaWJ1ZmZlci1vbmx5CitmcmFtZS4iCisgIChsZXQqICgoZnJhbWUgKHdpbmRv dy1mcmFtZSByb290KSkKKyAgICAgICAgIChoZWlnaHQKKyAgICAgICAgICAoKyAoLSAoZnJh bWUtdGV4dC1oZWlnaHQgZnJhbWUpCisgICAgICAgICAgICAgICAgKGZyYW1lLWlubmVyLWhl aWdodCBmcmFtZSkpCisgICAgICAgICAgICAgKHdpbmRvdy1waXhlbC1oZWlnaHQgcm9vdCkK KyAgICAgICAgICAgICBkZWx0YSkpKQorICAgIChzZXQtZnJhbWUtaGVpZ2h0IGZyYW1lIGhl aWdodCBuaWwgdCkpKQorCiAoZGVmdW4gd2luZG93LS1zYW5pdGl6ZS13aW5kb3ctc2l6ZXMg KGhvcml6b250YWwpCiAgICJBc3NlcnQgdGhhdCBhbGwgd2luZG93cyBvbiBzZWxlY3RlZCBm cmFtZSBhcmUgbGFyZ2UgZW5vdWdoLgogSWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZSwgbWFr ZSBzdXJlIHRoYXQgZXZlcnkgd2luZG93IG9uIGZyYW1lCkBAIC0zNDAzLDEwICszNDU0LDkg QEAgYWRqdXN0LXdpbmRvdy10cmFpbGluZy1lZGdlCiBtb3ZlIGl0IGFzIGZhciBhcyBwb3Nz aWJsZSBpbiB0aGUgZGVzaXJlZCBkaXJlY3Rpb24uIgogICAoc2V0cSB3aW5kb3cgKHdpbmRv dy1ub3JtYWxpemUtd2luZG93IHdpbmRvdykpCiAgIChsZXQqICgoZnJhbWUgKHdpbmRvdy1m cmFtZSB3aW5kb3cpKQotCSAobWluaWJ1ZmZlci13aW5kb3cgKG1pbmlidWZmZXItd2luZG93 IGZyYW1lKSkKKwkgKG1pbmktd2luZG93IChtaW5pYnVmZmVyLXdpbmRvdyBmcmFtZSAnbWF5 YmUtbmlsKSkKIAkgKHJpZ2h0IHdpbmRvdykKIAkgbGVmdCBmaXJzdC1sZWZ0IGZpcnN0LXJp Z2h0IHRoaXMtZGVsdGEgbWluLWRlbHRhIG1heC1kZWx0YSBpZ25vcmUpCi0KICAgICAodW5s ZXNzIHBpeGVsd2lzZQogICAgICAgKHNldHEgcGl4ZWx3aXNlIHQpCiAgICAgICAoc2V0cSBk ZWx0YSAoKiBkZWx0YSAoZnJhbWUtY2hhci1zaXplIHdpbmRvdyBob3Jpem9udGFsKSkpKQpA QCAtMzQxNywxNSArMzQ2NywyNCBAQCBhZGp1c3Qtd2luZG93LXRyYWlsaW5nLWVkZ2UKIAkJ KHNldHEgcmlnaHQgKHdpbmRvdy1wYXJlbnQgcmlnaHQpKSkpCiAgICAgKGNvbmQKICAgICAg KChhbmQgKG5vdCByaWdodCkgKG5vdCBob3Jpem9udGFsKQotCSAgIDs7IFJlc2l6ZSB0aGUg bWluaWJ1ZmZlciB3aW5kb3cgaWYgaXQncyBvbiB0aGUgc2FtZSBmcmFtZSBhcwotCSAgIDs7 IGFuZCBpbW1lZGlhdGVseSBiZWxvdyBXSU5ET1cgYW5kIGl0J3MgZWl0aGVyIGFjdGl2ZSBv cgotCSAgIDs7IGByZXNpemUtbWluaS13aW5kb3dzJyBpcyBuaWwuCi0JICAgKGVxICh3aW5k b3ctZnJhbWUgbWluaWJ1ZmZlci13aW5kb3cpIGZyYW1lKQotCSAgICg9IChudGggMSAod2lu ZG93LXBpeGVsLWVkZ2VzIG1pbmlidWZmZXItd2luZG93KSkKLQkgICAgICAobnRoIDMgKHdp bmRvdy1waXhlbC1lZGdlcyB3aW5kb3cpKSkKLQkgICAob3IgKG5vdCByZXNpemUtbWluaS13 aW5kb3dzKQotCSAgICAgICAoZXEgbWluaWJ1ZmZlci13aW5kb3cgKGFjdGl2ZS1taW5pYnVm ZmVyLXdpbmRvdykpKSkKLSAgICAgICh3aW5kb3ctLXJlc2l6ZS1taW5pLXdpbmRvdyBtaW5p YnVmZmVyLXdpbmRvdyAoLSBkZWx0YSkpKQorCSAgIDs7IFJlc2l6ZSB0aGUgbWluaSB3aW5k b3cgaWYgaXQncyBqdXN0IGJlbG93IFdJTkRPVyBhbmQKKwkgICA7OyBpdCdzIGVpdGhlciBh Y3RpdmUgb3IgYHJlc2l6ZS1taW5pLXdpbmRvd3MnIGlzIG5pbC4KKyAgICAgICAgICAgKHdp bmRvdy1hdC1zaWRlLXAgd2luZG93ICdib3R0b20pCisgICAgICAgICAgIG1pbmktd2luZG93 IChub3QgKGVxIHdpbmRvdyBtaW5pLXdpbmRvdykpCisgICAgICAgICAgIChlcSAod2luZG93 LW1pbmlidWZmZXItcCBtaW5pLXdpbmRvdykgJ2JvdHRvbSkpCisgICAgICAoaWYgKG9yIChl cSBtaW5pLXdpbmRvdyAoYWN0aXZlLW1pbmlidWZmZXItd2luZG93KSkKKyAgICAgICAgICAg ICAgKG5vdCByZXNpemUtbWluaS13aW5kb3dzKSkKKyAgICAgICAgICAod2luZG93LS1yZXNp emUtbWluaS13aW5kb3cgbWluaS13aW5kb3cgKC0gZGVsdGEpKQorICAgICAgICA7OyBUaGUg Zm9sbG93aW5nIGVycm9yIGlzIHVzdWFsbHkgY2F1Z2h0IGVsc2V3aGVyZS4KKwkodXNlci1l cnJvciAiQ2Fubm90IHJlc2l6ZSBpbmFjdGl2ZSBtaW5pYnVmZmVyIHdpbmRvdyIpKSkKKyAg ICAgKChhbmQgKG5vdCByaWdodCkgKG5vdCBob3Jpem9udGFsKQorCSAgIDs7IFJlc2l6ZSBX SU5ET1cgaWYgaXQncyBhIG1pbmkgd2luZG93IGZpeGVkIGF0IHRoZSB0b3AgYW5kCisgICAg ICAgICAgIDs7IGl0J3MgZWl0aGVyIGFjdGl2ZSBvciBgcmVzaXplLW1pbmktd2luZG93cycg aXMgbmlsLgorICAgICAgICAgICAoZXEgKHdpbmRvdy1taW5pYnVmZmVyLXAgd2luZG93KSAn dG9wKSkKKyAgICAgIChpZiAob3IgKGVxIHdpbmRvdyAoYWN0aXZlLW1pbmlidWZmZXItd2lu ZG93KSkKKyAgICAgICAgICAgICAgKG5vdCByZXNpemUtbWluaS13aW5kb3dzKSkKKyAgICAg ICAgICAod2luZG93LS1yZXNpemUtbWluaS13aW5kb3cgd2luZG93IGRlbHRhKQorCSh1c2Vy LWVycm9yICJDYW5ub3QgcmVzaXplIGluYWN0aXZlIG1pbmlidWZmZXIgd2luZG93IikpKQog ICAgICAoKG9yIChub3QgKHNldHEgbGVmdCByaWdodCkpIChub3QgKHNldHEgcmlnaHQgKHdp bmRvdy1yaWdodCByaWdodCkpKSkKICAgICAgIChpZiBob3Jpem9udGFsCiAJICAodXNlci1l cnJvciAiTm8gd2luZG93IG9uIHRoZSByaWdodCBvZiB0aGlzIG9uZSIpCkBAIC0zNTgzLDI2 ICszNjQyLDI5IEBAIGVubGFyZ2Utd2luZG93CiBtYWtlIHNlbGVjdGVkIHdpbmRvdyB3aWRl ciBieSBERUxUQSBjb2x1bW5zLiAgSWYgREVMVEEgaXMKIG5lZ2F0aXZlLCBzaHJpbmsgc2Vs ZWN0ZWQgd2luZG93IGJ5IC1ERUxUQSBsaW5lcyBvciBjb2x1bW5zLiIKICAgKGludGVyYWN0 aXZlICJwIikKLSAgKGxldCAoKG1pbmlidWZmZXItd2luZG93IChtaW5pYnVmZmVyLXdpbmRv dykpKQorICAobGV0ICgobWluaS13aW5kb3cgKG1pbmlidWZmZXItd2luZG93IG5pbCAnbWF5 YmUtbmlsKSkpCiAgICAgKHdoZW4gKHdpbmRvdy1wcmVzZXJ2ZWQtc2l6ZSBuaWwgaG9yaXpv bnRhbCkKICAgICAgICh3aW5kb3ctcHJlc2VydmUtc2l6ZSBuaWwgaG9yaXpvbnRhbCkpCiAg ICAgKGNvbmQKICAgICAgKCh6ZXJvcCBkZWx0YSkpCiAgICAgICgod2luZG93LXNpemUtZml4 ZWQtcCBuaWwgaG9yaXpvbnRhbCkKICAgICAgICh1c2VyLWVycm9yICJTZWxlY3RlZCB3aW5k b3cgaGFzIGZpeGVkIHNpemUiKSkKLSAgICAgKCh3aW5kb3ctbWluaWJ1ZmZlci1wKQorICAg ICAoKHdpbmRvdy1taW5pYnVmZmVyLW5vbi1sb29zZS1wKQogICAgICAgKGlmIGhvcml6b250 YWwKIAkgICh1c2VyLWVycm9yICJDYW5ub3QgcmVzaXplIG1pbmlidWZmZXIgd2luZG93IGhv cml6b250YWxseSIpCiAJKHdpbmRvdy0tcmVzaXplLW1pbmktd2luZG93CiAgICAgICAgICAo c2VsZWN0ZWQtd2luZG93KSAoKiBkZWx0YSAoZnJhbWUtY2hhci1oZWlnaHQpKSkpKQogICAg ICAoKGFuZCAobm90IGhvcml6b250YWwpCiAJICAgKHdpbmRvdy1mdWxsLWhlaWdodC1wKQot CSAgIChlcSAod2luZG93LWZyYW1lIG1pbmlidWZmZXItd2luZG93KSAoc2VsZWN0ZWQtZnJh bWUpKQotCSAgIChub3QgcmVzaXplLW1pbmktd2luZG93cykpCi0gICAgICA7OyBJZiB0aGUg c2VsZWN0ZWQgd2luZG93IGlzIGZ1bGwgaGVpZ2h0IGFuZCBgcmVzaXplLW1pbmktd2luZG93 cycKLSAgICAgIDs7IGlzIG5pbCwgcmVzaXplIHRoZSBtaW5pYnVmZmVyIHdpbmRvdy4KKyAg ICAgICAgICAgbWluaS13aW5kb3cKKyAgICAgICAgICAgKHdpbmRvdy1taW5pYnVmZmVyLWZp eGVkLXAgbWluaS13aW5kb3cpCisgICAgICAgICAgIChvciAobm90IHJlc2l6ZS1taW5pLXdp bmRvd3MpCisJICAgICAgIChlcSBtaW5pLXdpbmRvdyAoYWN0aXZlLW1pbmlidWZmZXItd2lu ZG93KSkpKQorICAgICAgOzsgSWYgV0lORE9XIGlzIGZ1bGwgaGVpZ2h0IGFuZCBlaXRoZXIg YHJlc2l6ZS1taW5pLXdpbmRvd3MnIGlzCisgICAgICA7OyBuaWwgb3IgdGhlIG1pbmlidWZm ZXIgd2luZG93IGlzIGFjdGl2ZSwgcmVzaXplIHRoZSBtaW5pYnVmZmVyCisgICAgICA7OyB3 aW5kb3cuCiAgICAgICAod2luZG93LS1yZXNpemUtbWluaS13aW5kb3cKLSAgICAgICBtaW5p YnVmZmVyLXdpbmRvdyAoKiAoLSBkZWx0YSkgKGZyYW1lLWNoYXItaGVpZ2h0KSkpKQorICAg ICAgIG1pbmktd2luZG93ICgqICgtIGRlbHRhKSAoZnJhbWUtY2hhci1oZWlnaHQpKSkpCiAg ICAgICgod2luZG93LS1yZXNpemFibGUtcCBuaWwgZGVsdGEgaG9yaXpvbnRhbCkKICAgICAg ICh3aW5kb3ctcmVzaXplIG5pbCBkZWx0YSBob3Jpem9udGFsKSkKICAgICAgKCh3aW5kb3ct LXJlc2l6YWJsZS1wIG5pbCBkZWx0YSBob3Jpem9udGFsICdwcmVzZXJ2ZWQpCkBAIC0zNjI2 LDI2ICszNjg4LDI4IEBAIHNocmluay13aW5kb3cKIG1ha2Ugc2VsZWN0ZWQgd2luZG93IG5h cnJvd2VyIGJ5IERFTFRBIGNvbHVtbnMuICBJZiBERUxUQSBpcwogbmVnYXRpdmUsIGVubGFy Z2Ugc2VsZWN0ZWQgd2luZG93IGJ5IC1ERUxUQSBsaW5lcyBvciBjb2x1bW5zLiIKICAgKGlu dGVyYWN0aXZlICJwIikKLSAgKGxldCAoKG1pbmlidWZmZXItd2luZG93IChtaW5pYnVmZmVy LXdpbmRvdykpKQorICAobGV0ICgobWluaS13aW5kb3cgKG1pbmlidWZmZXItd2luZG93IG5p bCAnbWF5YmUtbmlsKSkpCiAgICAgKHdoZW4gKHdpbmRvdy1wcmVzZXJ2ZWQtc2l6ZSBuaWwg aG9yaXpvbnRhbCkKICAgICAgICh3aW5kb3ctcHJlc2VydmUtc2l6ZSBuaWwgaG9yaXpvbnRh bCkpCiAgICAgKGNvbmQKICAgICAgKCh6ZXJvcCBkZWx0YSkpCiAgICAgICgod2luZG93LXNp emUtZml4ZWQtcCBuaWwgaG9yaXpvbnRhbCkKICAgICAgICh1c2VyLWVycm9yICJTZWxlY3Rl ZCB3aW5kb3cgaGFzIGZpeGVkIHNpemUiKSkKLSAgICAgKCh3aW5kb3ctbWluaWJ1ZmZlci1w KQorICAgICAoKHdpbmRvdy1taW5pYnVmZmVyLW5vbi1sb29zZS1wKQogICAgICAgKGlmIGhv cml6b250YWwKIAkgICh1c2VyLWVycm9yICJDYW5ub3QgcmVzaXplIG1pbmlidWZmZXIgd2lu ZG93IGhvcml6b250YWxseSIpCiAJKHdpbmRvdy0tcmVzaXplLW1pbmktd2luZG93CiAgICAg ICAgICAoc2VsZWN0ZWQtd2luZG93KSAoKiAoLSBkZWx0YSkgKGZyYW1lLWNoYXItaGVpZ2h0 KSkpKSkKICAgICAgKChhbmQgKG5vdCBob3Jpem9udGFsKQogCSAgICh3aW5kb3ctZnVsbC1o ZWlnaHQtcCkKLQkgICAoZXEgKHdpbmRvdy1mcmFtZSBtaW5pYnVmZmVyLXdpbmRvdykgKHNl bGVjdGVkLWZyYW1lKSkKLQkgICAobm90IHJlc2l6ZS1taW5pLXdpbmRvd3MpKQorICAgICAg ICAgICBtaW5pLXdpbmRvdworICAgICAgICAgICAod2luZG93LW1pbmlidWZmZXItZml4ZWQt cCBtaW5pLXdpbmRvdykKKyAgICAgICAgICAgKG9yIChub3QgcmVzaXplLW1pbmktd2luZG93 cykKKwkgICAgICAgKGVxIG1pbmktd2luZG93IChhY3RpdmUtbWluaWJ1ZmZlci13aW5kb3cp KSkpCiAgICAgICA7OyBJZiB0aGUgc2VsZWN0ZWQgd2luZG93IGlzIGZ1bGwgaGVpZ2h0IGFu ZCBgcmVzaXplLW1pbmktd2luZG93cycKICAgICAgIDs7IGlzIG5pbCwgcmVzaXplIHRoZSBt aW5pYnVmZmVyIHdpbmRvdy4KICAgICAgICh3aW5kb3ctLXJlc2l6ZS1taW5pLXdpbmRvdwot ICAgICAgIG1pbmlidWZmZXItd2luZG93ICgqIGRlbHRhIChmcmFtZS1jaGFyLWhlaWdodCkp KSkKKyAgICAgICBtaW5pLXdpbmRvdyAoKiBkZWx0YSAoZnJhbWUtY2hhci1oZWlnaHQpKSkp CiAgICAgICgod2luZG93LS1yZXNpemFibGUtcCBuaWwgKC0gZGVsdGEpIGhvcml6b250YWwp CiAgICAgICAod2luZG93LXJlc2l6ZSBuaWwgKC0gZGVsdGEpIGhvcml6b250YWwpKQogICAg ICAoKHdpbmRvdy0tcmVzaXphYmxlLXAgbmlsICgtIGRlbHRhKSBob3Jpem9udGFsICdwcmVz ZXJ2ZWQpCkBAIC0zOTY0LDExICs0MDI4LDEyIEBAIG9uZS13aW5kb3ctcAoKIEFueXRoaW5n IGVsc2UgbWVhbnMgY29uc2lkZXIgYWxsIHdpbmRvd3Mgb24gdGhlIHNlbGVjdGVkIGZyYW1l CiBhbmQgbm8gb3RoZXJzLiIKLSAgKGxldCAoKGJhc2Utd2luZG93IChzZWxlY3RlZC13aW5k b3cpKSkKLSAgICAoaWYgKGFuZCBub21pbmkgKGVxIGJhc2Utd2luZG93IChtaW5pYnVmZmVy LXdpbmRvdykpKQotCShzZXRxIGJhc2Utd2luZG93IChuZXh0LXdpbmRvdyBiYXNlLXdpbmRv dykpKQorICAobGV0ICgoYmFzZS13aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCisgICAgICAg IChtaW5pLXdpbmRvdyAobWluaWJ1ZmZlci13aW5kb3cgbmlsICdtYXliZS1uaWwpKSkKKyAg ICAod2hlbiAoYW5kIG5vbWluaSAoZXEgYmFzZS13aW5kb3cgbWluaS13aW5kb3cpKQorICAg ICAgKHNldHEgYmFzZS13aW5kb3cgKG5leHQtd2luZG93IGJhc2Utd2luZG93KSkpCiAgICAg KGVxIGJhc2Utd2luZG93Ci0JKG5leHQtd2luZG93IGJhc2Utd2luZG93IChpZiBub21pbmkg J2FyZykgYWxsLWZyYW1lcykpKSkKKwkobmV4dC13aW5kb3cgYmFzZS13aW5kb3cgKGFuZCBu b21pbmkgJ2FyZykgYWxsLWZyYW1lcykpKSkKIAwKIDs7OyBEZWxldGluZyB3aW5kb3dzLgog KGRlZnVuIHdpbmRvdy1kZWxldGFibGUtcCAoJm9wdGlvbmFsIHdpbmRvdykKQEAgLTM5OTYs MTYgKzQwNjEsMTUgQEAgd2luZG93LWRlbGV0YWJsZS1wCiAJCSAgOzsgY3VycmVudGx5IHVz ZXMgb3VyIG1pbmlidWZmZXIgd2luZG93LgogCQkgIChjYXRjaCAnb3RoZXIKIAkJICAgIChk b2xpc3QgKG90aGVyIChmcmFtZS1saXN0KSkKLQkJICAgICAgKHdoZW4gKGFuZCAobm90IChl cSBvdGhlciBmcmFtZSkpCi0JCQkJIChlcSAod2luZG93LWZyYW1lIChtaW5pYnVmZmVyLXdp bmRvdyBvdGhlcikpCi0JCQkJICAgICBmcmFtZSkpCi0JCQkodGhyb3cgJ290aGVyIHQpKSkp Ci0JCSAgKGxldCAoKG1pbmlidWYgKGFjdGl2ZS1taW5pYnVmZmVyLXdpbmRvdykpKQotCQkg ICAgKGFuZCBtaW5pYnVmIChlcSBmcmFtZSAod2luZG93LWZyYW1lIG1pbmlidWYpKSkpKQor ICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChtaW5pLXdpbmRvdyAobWluaWJ1ZmZlci13 aW5kb3cgb3RoZXIgJ21heWJlLW5pbCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHdo ZW4gKGFuZCAobm90IChlcSBvdGhlciBmcmFtZSkpIG1pbmktd2luZG93CisJCQkJICAgKGVx ICh3aW5kb3ctZnJhbWUgbWluaS13aW5kb3cpIGZyYW1lKSkKKwkJCSAgKHRocm93ICdvdGhl ciB0KSkpKSkKKwkJICAobGV0ICgobWluaS13aW5kb3cgKGFjdGl2ZS1taW5pYnVmZmVyLXdp bmRvdykpKQorCQkgICAgKGFuZCBtaW5pLXdpbmRvdyAoZXEgZnJhbWUgKHdpbmRvdy1mcmFt ZSBtaW5pLXdpbmRvdykpKSkpCiAJJ2ZyYW1lKSkKLSAgICAgKCh3aW5kb3ctbWluaWJ1ZmZl ci1wIHdpbmRvdykKLSAgICAgIDs7IElmIFdJTkRPVyBpcyB0aGUgbWluaWJ1ZmZlciB3aW5k b3cgb2YgYSBub24tbWluaWJ1ZmZlci1vbmx5Ci0gICAgICA7OyBmcmFtZSwgaXQgY2Fubm90 IGJlIGRlbGV0ZWQgc2VwYXJhdGVseS4KKyAgICAgKCh3aW5kb3ctbWluaWJ1ZmZlci1maXhl ZC1wIHdpbmRvdykKKyAgICAgIDs7IEEgZml4ZWQgbWluaWJ1ZmZlciB3aW5kb3cgY2Fubm90 IGJlIHJlbW92ZWQgZnJvbSBpdHMgZnJhbWUuCiAgICAgICBuaWwpCiAgICAgICgob3IgaWdu b3JlLXdpbmRvdy1wYXJhbWV0ZXJzCiAJICAobm90IChlcSB3aW5kb3cgKHdpbmRvdy1tYWlu LXdpbmRvdyBmcmFtZSkpKSkKQEAgLTQxNDksOSArNDIxMyw4IEBAIGRlbGV0ZS1vdGhlci13 aW5kb3dzCiAJICAodGhyb3cgJ2RvbmUgKGRlbGV0ZS1vdGhlci13aW5kb3dzIGF0b20tcm9v dCkpKSkKICAgICAgICAoKHdpbmRvdy1wYXJhbWV0ZXIgd2luZG93ICd3aW5kb3ctc2lkZSkK IAkoZXJyb3IgIkNhbm5vdCBtYWtlIHNpZGUgd2luZG93IHRoZSBvbmx5IHdpbmRvdyIpKQot ICAgICAgICgoYW5kICh3aW5kb3ctbWluaWJ1ZmZlci1wIHdpbmRvdykKLQkgICAgIChub3Qg KGVxIHdpbmRvdyAoZnJhbWUtcm9vdC13aW5kb3cgd2luZG93KSkpKQotCShlcnJvciAiQ2Fu J3QgZXhwYW5kIG1pbmlidWZmZXIgdG8gZnVsbCBmcmFtZSIpKSkKKyAgICAgICAoKHdpbmRv dy1taW5pYnVmZmVyLWZpeGVkLXAgd2luZG93KQorCShlcnJvciAiQ2FuJ3QgZXhwYW5kIGZp eGVkIG1pbmlidWZmZXIgd2luZG93IHRvIGZ1bGwgZnJhbWUiKSkpCgogICAgICAgKGNvbmQK ICAgICAgICAoKG9yIGlnbm9yZS13aW5kb3ctcGFyYW1ldGVycwpAQCAtNDM0NCw3ICs0NDA3 LDcgQEAgc3dpdGNoLXRvLXByZXYtYnVmZmVyCiAJIChuZXh0LWJ1ZmZlcnMgKHdpbmRvdy1u ZXh0LWJ1ZmZlcnMgd2luZG93KSkKICAgICAgICAgIChwcmVkIChmcmFtZS1wYXJhbWV0ZXIg ZnJhbWUgJ2J1ZmZlci1wcmVkaWNhdGUpKQogCSBlbnRyeSBuZXctYnVmZmVyIGtpbGxlZC1i dWZmZXJzIHZpc2libGUpCi0gICAgKHdoZW4gKHdpbmRvdy1taW5pYnVmZmVyLXAgd2luZG93 KQorICAgICh3aGVuICh3aW5kb3ctbWluaWJ1ZmZlci1ub24tbG9vc2UtcCB3aW5kb3cpCiAg ICAgICA7OyBEb24ndCBzd2l0Y2ggaW4gbWluaWJ1ZmZlciB3aW5kb3cuCiAgICAgICAodW5s ZXNzIChzZXRxIHdpbmRvdyAobWluaWJ1ZmZlci1zZWxlY3RlZC13aW5kb3cpKQogCShlcnJv ciAiV2luZG93ICVzIGlzIGEgbWluaWJ1ZmZlciB3aW5kb3ciIHdpbmRvdykpKQpAQCAtNDQ2 Niw3ICs0NTI5LDcgQEAgc3dpdGNoLXRvLW5leHQtYnVmZmVyCiAJIChuZXh0LWJ1ZmZlcnMg KHdpbmRvdy1uZXh0LWJ1ZmZlcnMgd2luZG93KSkKICAgICAgICAgIChwcmVkIChmcmFtZS1w YXJhbWV0ZXIgZnJhbWUgJ2J1ZmZlci1wcmVkaWNhdGUpKQogCSBuZXctYnVmZmVyIGVudHJ5 IGtpbGxlZC1idWZmZXJzIHZpc2libGUpCi0gICAgKHdoZW4gKHdpbmRvdy1taW5pYnVmZmVy LXAgd2luZG93KQorICAgICh3aGVuICh3aW5kb3ctbWluaWJ1ZmZlci1ub24tbG9vc2UtcCB3 aW5kb3cpCiAgICAgICA7OyBEb24ndCBzd2l0Y2ggaW4gbWluaWJ1ZmZlciB3aW5kb3cuCiAg ICAgICAodW5sZXNzIChzZXRxIHdpbmRvdyAobWluaWJ1ZmZlci1zZWxlY3RlZC13aW5kb3cp KQogCShlcnJvciAiV2luZG93ICVzIGlzIGEgbWluaWJ1ZmZlciB3aW5kb3ciIHdpbmRvdykp KQpAQCAtNDY2MSw3ICs0NzI0LDcgQEAgbmV4dC1idWZmZXIKICAgIkluIHNlbGVjdGVkIHdp bmRvdyBzd2l0Y2ggdG8gbmV4dCBidWZmZXIuIgogICAoaW50ZXJhY3RpdmUpCiAgIChjb25k Ci0gICAoKHdpbmRvdy1taW5pYnVmZmVyLXApCisgICAoKHdpbmRvdy1taW5pYnVmZmVyLW5v bi1sb29zZS1wKQogICAgIChlcnJvciAiQ2Fubm90IHN3aXRjaCBidWZmZXJzIGluIG1pbmli dWZmZXIgd2luZG93IikpCiAgICAoKGVxICh3aW5kb3ctZGVkaWNhdGVkLXApIHQpCiAgICAg KGVycm9yICJXaW5kb3cgaXMgc3Ryb25nbHkgZGVkaWNhdGVkIHRvIGl0cyBidWZmZXIiKSkK QEAgLTQ2NzIsNyArNDczNSw3IEBAIHByZXZpb3VzLWJ1ZmZlcgogICAiSW4gc2VsZWN0ZWQg d2luZG93IHN3aXRjaCB0byBwcmV2aW91cyBidWZmZXIuIgogICAoaW50ZXJhY3RpdmUpCiAg IChjb25kCi0gICAoKHdpbmRvdy1taW5pYnVmZmVyLXApCisgICAoKHdpbmRvdy1taW5pYnVm ZmVyLW5vbi1sb29zZS1wKQogICAgIChlcnJvciAiQ2Fubm90IHN3aXRjaCBidWZmZXJzIGlu IG1pbmlidWZmZXIgd2luZG93IikpCiAgICAoKGVxICh3aW5kb3ctZGVkaWNhdGVkLXApIHQp CiAgICAgKGVycm9yICJXaW5kb3cgaXMgc3Ryb25nbHkgZGVkaWNhdGVkIHRvIGl0cyBidWZm ZXIiKSkKQEAgLTQ4OTcsNiArNDk2MCwyNCBAQCBxdWl0LXdpbmRvd3Mtb24KIAk7OyBJZiBh IHdpbmRvdyBkb2Vzbid0IHNob3cgQlVGRkVSLCB1bnJlY29yZCBCVUZGRVIgaW4gaXQuCiAJ KHVucmVjb3JkLXdpbmRvdy1idWZmZXIgd2luZG93IGJ1ZmZlcikpKSkpCiAMCisoZGVmdW4g d2luZG93LS1jb21iaW5hdGlvbi1yZXNpemFibGUgKHBhcmVudCAmb3B0aW9uYWwgaG9yaXpv bnRhbCkKKyAgIlJldHVybiBudW1iZXIgb2YgcGl4ZWxzIHJlY292ZXJhYmxlIGZyb20gaGVp Z2h0IG9mIHdpbmRvdyBQQVJFTlQuCitQQVJFTlQgbXVzdCBiZSBhIHZlcnRpY2FsIChob3Jp em9udGFsIGlmIEhPUklaT05UQUwgaXMgbm9uLW5pbCkKK3dpbmRvdyBjb21iaW5hdGlvbi4g IFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIHN1bSBvZiB0aGUgcGl4ZWwKK2hlaWdodHMgb2Yg YWxsIG5vbi1maXhlZCBoZWlnaHQgY2hpbGQgd2luZG93cyBvZiBQQVJFTlQgZGl2aWRlZAor YnkgdGhlaXIgbnVtYmVyIHBsdXMgMS4gIElmIEhPUklaT05UQUwgaXMgbm9uLW5pbCwgcmV0 dXJuIHRoZSBzdW0KK29mIHRoZSBwaXhlbCB3aWR0aHMgb2YgYWxsIG5vbi1maXhlZCB3aWR0 aCBjaGlsZCB3aW5kb3dzIG9mCitQQVJFTlQgZGl2aWRlZCBieSB0aGVpciBudW1iZXIgcGx1 cyAxLiIKKyAgKGxldCAoKHNpYmxpbmcgKHdpbmRvdy1jaGlsZCBwYXJlbnQpKQorCShudW1i ZXIgMCkKKwkoc2l6ZSAwKSkKKyAgICAod2hpbGUgc2libGluZworICAgICAgKHVubGVzcyAo d2luZG93LXNpemUtZml4ZWQtcCBzaWJsaW5nIGhvcml6b250YWwpCisJKHNldHEgbnVtYmVy ICgxKyBudW1iZXIpKQorCShzZXRxIHNpemUgKCsgKHdpbmRvdy1zaXplIHNpYmxpbmcgaG9y aXpvbnRhbCB0KSBzaXplKSkpCisgICAgICAoc2V0cSBzaWJsaW5nICh3aW5kb3ctbmV4dC1z aWJsaW5nIHNpYmxpbmcpKSkKKyAgICAoLyBzaXplICgxKyBudW1iZXIpKSkpCisKIChkZWZ1 biBzcGxpdC13aW5kb3cgKCZvcHRpb25hbCB3aW5kb3cgc2l6ZSBzaWRlIHBpeGVsd2lzZSkK ICAgIk1ha2UgYSBuZXcgd2luZG93IGFkamFjZW50IHRvIFdJTkRPVy4KIFdJTkRPVyBtdXN0 IGJlIGEgdmFsaWQgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgpA QCAtNTAyOSw4ICs1MTEwLDcgQEAgc3BsaXQtd2luZG93CiAJCSAgICA7OyBhdmVyYWdlIHNp emUgb2YgYSB3aW5kb3cgaW4gaXRzIGNvbWJpbmF0aW9uLgogCQkgICAgKG1heCAobWluICgt IHBhcmVudC1waXhlbC1zaXplCiAJCQkJICh3aW5kb3ctbWluLXNpemUgcGFyZW50IGhvcml6 b250YWwgbmlsIHQpKQotCQkJICAgICAgKC8gcGFyZW50LXBpeGVsLXNpemUKLQkJCQkgKDEr ICh3aW5kb3ctY29tYmluYXRpb25zIHBhcmVudCBob3Jpem9udGFsKSkpKQorCQkJICAgICAg KHdpbmRvdy0tY29tYmluYXRpb24tcmVzaXphYmxlIHBhcmVudCBob3Jpem9udGFsKSkKIAkJ CSAod2luZG93LW1pbi1waXhlbC1zaXplKSkKIAkJICA7OyBFbHNlIHRyeSB0byBnaXZlIHRo ZSBuZXcgd2luZG93IGhhbGYgdGhlIHNpemUKIAkJICA7OyBvZiBXSU5ET1cgKHBsdXMgYW4g ZXZlbnR1YWwgb2RkIHBpeGVsKS4KQEAgLTY1OTIsNyArNjY3Miw3IEBAIHNwbGl0LXdpbmRv dy1zZW5zaWJseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRocm93 ICdkb25lIG5pbCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSkK ICAgICAgICAgICAgICAgdCkpKQotCSAobm90ICh3aW5kb3ctbWluaWJ1ZmZlci1wIHdpbmRv dykpCisJIChub3QgKHdpbmRvdy1taW5pYnVmZmVyLW5vbi1sb29zZS1wIHdpbmRvdykpCiAJ IChsZXQgKChzcGxpdC1oZWlnaHQtdGhyZXNob2xkIDApKQogCSAgICh3aGVuICh3aW5kb3ct c3BsaXR0YWJsZS1wIHdpbmRvdykKIAkgICAgICh3aXRoLXNlbGVjdGVkLXdpbmRvdyB3aW5k b3cKQEAgLTY2MzIsNyArNjcxMiw3IEBAIHdpbmRvdy0tZnJhbWUtdXNhYmxlLXAKICAgICAg IDs7ICJkZWFkIiBieSBgd2luZG93LWxpdmUtcCcuICBIZW5jZSBpZiBgd2luZG93JyBpcyBu b3QgbGl2ZSB3ZQogICAgICAgOzsgaW1wbGljaXRseSBrbm93IHRoYXQgYGZyYW1lJyBoYXMg YSB2aXNpYmxlIHdpbmRvdyB3ZSBjYW4gdXNlLgogICAgICAgKHVubGVzcyAoYW5kICh3aW5k b3ctbGl2ZS1wIHdpbmRvdykKLSAgICAgICAgICAgICAgICAgICAob3IgKHdpbmRvdy1taW5p YnVmZmVyLXAgd2luZG93KQorICAgICAgICAgICAgICAgICAgIChvciAoZXEgKHdpbmRvdy1t aW5pYnVmZmVyLXAgd2luZG93KSAnb25seSkKICAgICAgICAgICAgICAgICAgICAgICAgOzsg SWYgdGhlIHdpbmRvdyBpcyBzb2Z0LWRlZGljYXRlZCwgdGhlIGZyYW1lIGlzIHVzYWJsZS4K ICAgICAgICAgICAgICAgICAgICAgICAgOzsgQWN0dWFsbHksIGV2ZW4gaWYgdGhlIHdpbmRv dyBpcyByZWFsbHkgZGVkaWNhdGVkLAogICAgICAgICAgICAgICAgICAgICAgICA7OyB0aGUg ZnJhbWUgaXMgc3RpbGwgdXNhYmxlIGJ5IHNwbGl0dGluZyBpdC4KQEAgLTY2ODUsMTUgKzY3 NjUsMjAgQEAgd2luZG93LS1kaXNwbGF5LWJ1ZmZlcgogVFlQRSBtdXN0IGJlIG9uZSBvZiB0 aGUgc3ltYm9scyBgcmV1c2UnLCBgd2luZG93JyBvciBgZnJhbWUnIGFuZAogaXMgcGFzc2Vk IHVuYWx0ZXJlZCB0byBgZGlzcGxheS1idWZmZXItcmVjb3JkLXdpbmRvdycuICBBTElTVCBp cwogdGhlIGFsaXN0IGFyZ3VtZW50IG9mIGBkaXNwbGF5LWJ1ZmZlcicuICBTZXQgYHdpbmRv dy1kZWRpY2F0ZWQtcCcKLXRvIERFRElDQVRFRCBpZiBub24tbmlsLiAgUmV0dXJuIFdJTkRP VyBpZiBCVUZGRVIgYW5kIFdJTkRPVyBhcmUKLWxpdmUuIgordG8gREVESUNBVEVEIG9yIHRv IHRoZSB2YWx1ZSBvZiBhICdkZWRpY2F0ZWQnIGVudHJ5IGluIEFMSVNULCBpZgorZWl0aGVy IG9mIHRoZXNlIGlzIG5vbi1uaWwuICBSZXR1cm4gV0lORE9XIGlmIEJVRkZFUiBhbmQgV0lO RE9XCithcmUgbGl2ZS4iCiAgICh3aGVuIChhbmQgKGJ1ZmZlci1saXZlLXAgYnVmZmVyKSAo d2luZG93LWxpdmUtcCB3aW5kb3cpKQogICAgIChkaXNwbGF5LWJ1ZmZlci1yZWNvcmQtd2lu ZG93IHR5cGUgd2luZG93IGJ1ZmZlcikKICAgICAodW5sZXNzIChlcSBidWZmZXIgKHdpbmRv dy1idWZmZXIgd2luZG93KSkKICAgICAgIChzZXQtd2luZG93LWRlZGljYXRlZC1wIHdpbmRv dyBuaWwpCiAgICAgICAoc2V0LXdpbmRvdy1idWZmZXIgd2luZG93IGJ1ZmZlcikpCi0gICAg KHdoZW4gZGVkaWNhdGVkCi0gICAgICAoc2V0LXdpbmRvdy1kZWRpY2F0ZWQtcCB3aW5kb3cg ZGVkaWNhdGVkKSkKKyAgICAobGV0ICgoYWxpc3QtZGVkaWNhdGVkIChhc3NxICdkZWRpY2F0 ZWQgYWxpc3QpKSkKKyAgICAgIChjb25kCisgICAgICAgKGFsaXN0LWRlZGljYXRlZAorICAg ICAgICAoc2V0LXdpbmRvdy1kZWRpY2F0ZWQtcCB3aW5kb3cgKGNkciBhbGlzdC1kZWRpY2F0 ZWQpKSkKKyAgICAgICAoZGVkaWNhdGVkCisgICAgICAgIChzZXQtd2luZG93LWRlZGljYXRl ZC1wIHdpbmRvdyBkZWRpY2F0ZWQpKSkpCiAgICAgKHdoZW4gKG1lbXEgdHlwZSAnKHdpbmRv dyBmcmFtZSkpCiAgICAgICAoc2V0LXdpbmRvdy1wcmV2LWJ1ZmZlcnMgd2luZG93IG5pbCkp CiAgICAgKGxldCAoKHF1aXQtcmVzdG9yZSAod2luZG93LXBhcmFtZXRlciB3aW5kb3cgJ3F1 aXQtcmVzdG9yZSkpCkBAIC03MDk0LDcgKzcxNzksNyBAQCBkaXNwbGF5LWJ1ZmZlci1zYW1l LXdpbmRvdwogYW5vdGhlciBidWZmZXI7IGluIHRoYXQgY2FzZSwgcmV0dXJuIG5pbC4gIE90 aGVyd2lzZSwgcmV0dXJuIHRoZQogc2VsZWN0ZWQgd2luZG93LiIKICAgKHVubGVzcyAob3Ig KGNkciAoYXNzcSAnaW5oaWJpdC1zYW1lLXdpbmRvdyBhbGlzdCkpCi0JICAgICAgKHdpbmRv dy1taW5pYnVmZmVyLXApCisJICAgICAgKHdpbmRvdy1taW5pYnVmZmVyLW5vbi1sb29zZS1w KQogCSAgICAgICh3aW5kb3ctZGVkaWNhdGVkLXApKQogICAgICh3aW5kb3ctLWRpc3BsYXkt YnVmZmVyIGJ1ZmZlciAoc2VsZWN0ZWQtd2luZG93KSAncmV1c2UgYWxpc3QpKSkKCkBAIC03 NDA1LDcgKzc0OTAsNyBAQCBkaXNwbGF5LWJ1ZmZlci1hdC1ib3R0b20KIAkgICAgICh3aW5k b3ctLWRpc3BsYXktYnVmZmVyCiAJICAgICAgYnVmZmVyIGJvdHRvbS13aW5kb3cgJ3JldXNl IGFsaXN0IGRpc3BsYXktYnVmZmVyLW1hcmstZGVkaWNhdGVkKSkKIAkoYW5kIChub3QgKGZy YW1lLXBhcmFtZXRlciBuaWwgJ3Vuc3BsaXR0YWJsZSkpCi0JICAgICAobGV0IChzcGxpdC13 aWR0aC10aHJlc2hvbGQpCisJICAgICAobGV0IChzcGxpdC1oZWlnaHQtdGhyZXNob2xkKQog CSAgICAgICAoc2V0cSB3aW5kb3cgKHdpbmRvdy0tdHJ5LXRvLXNwbGl0LXdpbmRvdyBib3R0 b20td2luZG93IGFsaXN0KSkpCiAJICAgICAod2luZG93LS1kaXNwbGF5LWJ1ZmZlcgogCSAg ICAgIGJ1ZmZlciB3aW5kb3cgJ3dpbmRvdyBhbGlzdCBkaXNwbGF5LWJ1ZmZlci1tYXJrLWRl ZGljYXRlZCkpCkBAIC03NDE4LDYgKzc1MDMsNDAgQEAgZGlzcGxheS1idWZmZXItYXQtYm90 dG9tCiAJICAgICAod2luZG93LS1kaXNwbGF5LWJ1ZmZlcgogCSAgICAgIGJ1ZmZlciB3aW5k b3cgJ3JldXNlIGFsaXN0IGRpc3BsYXktYnVmZmVyLW1hcmstZGVkaWNhdGVkKSkpKSkKCiso ZGVmdW4gZGlzcGxheS1idWZmZXItYXQtdG9wIChidWZmZXIgYWxpc3QpCisgICJUcnkgZGlz cGxheWluZyBCVUZGRVIgaW4gYSB3aW5kb3cgYXQgdGhlIHRvcCBvZiB0aGUgc2VsZWN0ZWQg ZnJhbWUuCitUaGlzIGVpdGhlciByZXVzZXMgc3VjaCBhIHdpbmRvdyBwcm92aWRlZCBpdCBz aG93cyBCVUZGRVIKK2FscmVhZHksIHNwbGl0cyBhIHdpbmRvdyBhdCB0aGUgdG9wIG9mIHRo ZSBmcmFtZSBvciB0aGUgZnJhbWUncworcm9vdCB3aW5kb3csIG9yIHJldXNlcyBzb21lIHdp bmRvdyBhdCB0aGUgdG9wIG9mIHRoZSBzZWxlY3RlZAorZnJhbWUuIgorICAobGV0ICh0b3At d2luZG93IHRvcC13aW5kb3ctc2hvd3MtYnVmZmVyIHdpbmRvdykKKyAgICAod2Fsay13aW5k b3ctdHJlZQorICAgICAobGFtYmRhICh3aW5kb3cpCisgICAgICAgKGNvbmQKKwkoKHdpbmRv dy1pbi1kaXJlY3Rpb24gJ2Fib3ZlIHdpbmRvdykpCisJKChhbmQgKG5vdCB0b3Atd2luZG93 LXNob3dzLWJ1ZmZlcikKKwkgICAgICAoZXEgYnVmZmVyICh3aW5kb3ctYnVmZmVyIHdpbmRv dykpKQorCSAoc2V0cSB0b3Atd2luZG93LXNob3dzLWJ1ZmZlciB0KQorCSAoc2V0cSB0b3At d2luZG93IHdpbmRvdykpCisJKChub3QgdG9wLXdpbmRvdykKKwkgKHNldHEgdG9wLXdpbmRv dyB3aW5kb3cpKSkpCisgICAgIG5pbCBuaWwgJ25vbWluaSkKKyAgICAob3IgKGFuZCB0b3At d2luZG93LXNob3dzLWJ1ZmZlcgorCSAgICAgKHdpbmRvdy0tZGlzcGxheS1idWZmZXIKKwkg ICAgICBidWZmZXIgdG9wLXdpbmRvdyAncmV1c2UgYWxpc3QgZGlzcGxheS1idWZmZXItbWFy ay1kZWRpY2F0ZWQpKQorCShhbmQgKG5vdCAoZnJhbWUtcGFyYW1ldGVyIG5pbCAndW5zcGxp dHRhYmxlKSkKKyAgICAgICAgICAgICAoc2V0cSB3aW5kb3cgKHNwbGl0LXdpbmRvdy1uby1l cnJvciB0b3Atd2luZG93IG5pbCAnYWJvdmUpKQorCSAgICAgKHdpbmRvdy0tZGlzcGxheS1i dWZmZXIKKwkgICAgICBidWZmZXIgd2luZG93ICd3aW5kb3cgYWxpc3QgZGlzcGxheS1idWZm ZXItbWFyay1kZWRpY2F0ZWQpKQorCShhbmQgKG5vdCAoZnJhbWUtcGFyYW1ldGVyIG5pbCAn dW5zcGxpdHRhYmxlKSkKKyAgICAgICAgICAgICAoc2V0cSB3aW5kb3cgKHNwbGl0LXdpbmRv dy1uby1lcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1tYWluLXdp bmRvdykgbmlsICdhYm92ZSkpCisJICAgICAod2luZG93LS1kaXNwbGF5LWJ1ZmZlcgorCSAg ICAgIGJ1ZmZlciB3aW5kb3cgJ3dpbmRvdyBhbGlzdCBkaXNwbGF5LWJ1ZmZlci1tYXJrLWRl ZGljYXRlZCkpCisJKGFuZCAobm90ICh3aW5kb3ctZGVkaWNhdGVkLXAgdG9wLXdpbmRvdykp CisJICAgICAod2luZG93LS1kaXNwbGF5LWJ1ZmZlcgorCSAgICAgIGJ1ZmZlciB0b3Atd2lu ZG93ICdyZXVzZSBhbGlzdCBkaXNwbGF5LWJ1ZmZlci1tYXJrLWRlZGljYXRlZCkpKSkpCisK IChkZWZ1biBkaXNwbGF5LWJ1ZmZlci1pbi1wcmV2aW91cy13aW5kb3cgKGJ1ZmZlciBhbGlz dCkKICAgIkRpc3BsYXkgQlVGRkVSIGluIGEgd2luZG93IHByZXZpb3VzbHkgc2hvd2luZyBp dC4KIElmIEFMSVNUIGhhcyBhIG5vbi1uaWwgYGluaGliaXQtc2FtZS13aW5kb3cnIGVudHJ5 LCB0aGUgc2VsZWN0ZWQKQEAgLTc3MDcsNyArNzgyNiw3IEBAIHN3aXRjaC10by1idWZmZXIK ICAgKGludGVyYWN0aXZlCiAgICAobGV0ICgoZm9yY2Utc2FtZS13aW5kb3cKICAgICAgICAg ICAoY29uZAotICAgICAgICAgICAoKHdpbmRvdy1taW5pYnVmZmVyLXApIG5pbCkKKyAgICAg ICAgICAgKCh3aW5kb3ctbWluaS1wKSBuaWwpCiAgICAgICAgICAgICgobm90IChlcSAod2lu ZG93LWRlZGljYXRlZC1wKSB0KSkgJ2ZvcmNlLXNhbWUtd2luZG93KQogICAgICAgICAgICAo KHBjYXNlIHN3aXRjaC10by1idWZmZXItaW4tZGVkaWNhdGVkLXdpbmRvdwogICAgICAgICAg ICAgICAoYG5pbCAodXNlci1lcnJvcgpAQCAtNzcyOSwxMyArNzg0OCwxMyBAQCBzd2l0Y2gt dG8tYnVmZmVyCiAgICAgIDs7IERvbid0IGNhbGwgc2V0LXdpbmRvdy1idWZmZXIgaWYgaXQn cyBub3QgbmVlZGVkIHNpbmNlIGl0CiAgICAgIDs7IG1pZ2h0IHNpZ25hbCBhbiBlcnJvciAo ZS5nLiBpZiB0aGUgd2luZG93IGlzIGRlZGljYXRlZCkuCiAgICAgICgoZXEgYnVmZmVyICh3 aW5kb3ctYnVmZmVyKSkpCi0gICAgICgod2luZG93LW1pbmlidWZmZXItcCkKKyAgICAgKCh3 aW5kb3ctbWluaWJ1ZmZlci1ub24tbG9vc2UtcCkKICAgICAgIChpZiBmb3JjZS1zYW1lLXdp bmRvdwotICAgICAgICAgICh1c2VyLWVycm9yICJDYW5ub3Qgc3dpdGNoIGJ1ZmZlcnMgaW4g bWluaWJ1ZmZlciB3aW5kb3ciKQorICAgICAgICAgICh1c2VyLWVycm9yICJDYW5ub3Qgc3dp dGNoIGJ1ZmZlcnMgaW4gdGhpcyBtaW5pYnVmZmVyIHdpbmRvdyIpCiAgICAgICAgIChwb3At dG8tYnVmZmVyIGJ1ZmZlciBub3JlY29yZCkpKQogICAgICAoKGVxICh3aW5kb3ctZGVkaWNh dGVkLXApIHQpCiAgICAgICAoaWYgZm9yY2Utc2FtZS13aW5kb3cKLSAgICAgICAgICAodXNl ci1lcnJvciAiQ2Fubm90IHN3aXRjaCBidWZmZXJzIGluIGEgZGVkaWNhdGVkIHdpbmRvdyIp CisgICAgICAgICAgKHVzZXItZXJyb3IgIkNhbm5vdCBzd2l0Y2ggYnVmZmVycyBpbiBkZWRp Y2F0ZWQgd2luZG93IikKICAgICAgICAgKHBvcC10by1idWZmZXIgYnVmZmVyIG5vcmVjb3Jk KSkpCiAgICAgICh0CiAgICAgICAobGV0KiAoKGVudHJ5IChhc3NxIGJ1ZmZlciAod2luZG93 LXByZXYtYnVmZmVycykpKQpAQCAtNzgwMyw2ICs3OTIyLDYwIEBAIHN3aXRjaC10by1idWZm ZXItb3RoZXItZnJhbWUKICAgKGludGVyYWN0aXZlCiAgICAobGlzdCAocmVhZC1idWZmZXIt dG8tc3dpdGNoICJTd2l0Y2ggdG8gYnVmZmVyIGluIG90aGVyIGZyYW1lOiAiKSkpCiAgIChw b3AtdG8tYnVmZmVyIGJ1ZmZlci1vci1uYW1lIGRpc3BsYXktYnVmZmVyLS1vdGhlci1mcmFt ZS1hY3Rpb24gbm9yZWNvcmQpKQorCisoZGVmY3VzdG9tIGRpc3BsYXktbWluaWJ1ZmZlci1h Y3Rpb24KKyAgJygoZGlzcGxheS1idWZmZXItcmV1c2Utd2luZG93CisgICAgIGRpc3BsYXkt YnVmZmVyLWJlbG93LXNlbGVjdGVkCisgICAgIGRpc3BsYXktYnVmZmVyLXBvcC11cC13aW5k b3cpCisgICAgKHJldXNhYmxlLWZyYW1lcyAuIDApCisgICAgKHdpbmRvdy1oZWlnaHQgLiAx KQorICAgIChwcmVzZXJ2ZS1zaXplIC4gKG5pbCAuIHQpKQorICAgIChkZWRpY2F0ZWQgLiB0 KSkKKyAgIlRoZSBgZGlzcGxheS1idWZmZXInIGFjdGlvbiBmb3IgZGlzcGxheWluZyB0aGUg bWluaWJ1ZmZlciB3aW5kb3cuCitUaGlzIGFmZmVjdHMgdGhlIGRpc3BsYXkgb2YgbG9vc2Ug bWluaWJ1ZmZlciB3aW5kb3dzIG9ubHkuIgorICA6dHlwZSBkaXNwbGF5LWJ1ZmZlci0tYWN0 aW9uLWN1c3RvbS10eXBlCisgIDpyaXNreSB0CisgIDp2ZXJzaW9uICIyNy4xIgorICA6Z3Jv dXAgJ3dpbmRvd3MpCisKKyhkZWZ1biBkaXNwbGF5LW1pbmlidWZmZXIgKGJ1ZmZlciBmcmFt ZSkKKyAgIkRpc3BsYXkgbWluaWJ1ZmZlciBCVUZGRVIgZm9yIGZyYW1lIEZSQU1FLgorVGhp cyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gZGlzcGxheSBhIG5ldywgbG9vc2UgbWluaWJ1ZmZl ciB3aW5kb3cKK2ZvciBGUkFNRS4gIEl0cyBkZWZhdWx0IGRpc3BsYXkgYWN0aW9uIGlzIHNw ZWNpZmllZCBieSB0aGUKK3ZhcmlhYmxlIGBkaXNwbGF5LW1pbmlidWZmZXItYWN0aW9uJy4g IElmIGl0IHJldHVybnMgbmlsLCBFbWFjcword2lsbCB0cnkgdG8gbWFrZSBhIG5ldyBtaW5p YnVmZmVyLW9ubHkgZnJhbWUgb24gRlJBTUUncyBkaXNwbGF5Cit2aWEgYG1ha2UtaW5pdGlh bC1taW5pYnVmZmVyLWZyYW1lJy4iCisgICh3aXRoLXNlbGVjdGVkLWZyYW1lIGZyYW1lCisg ICAgKGNvbmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAoZGlzcGxheS1idWZmZXIgYnVmZmVy IGRpc3BsYXktbWluaWJ1ZmZlci1hY3Rpb24pCisgICAgICAoZXJyb3IgbmlsKSkpKQorCiso ZGVmY3VzdG9tIGRpc3BsYXktZWNoby1hY3Rpb24KKyAgJygoZGlzcGxheS1idWZmZXItcmV1 c2Utd2luZG93CisgICAgIGRpc3BsYXktYnVmZmVyLWF0LWJvdHRvbSkKKyAgICAocmV1c2Fi bGUtZnJhbWVzIC4gMCkKKyAgICAod2luZG93LWhlaWdodCAuIDEpCisgICAgKHByZXNlcnZl LXNpemUgLiAobmlsIC4gdCkpCisgICAgKGRlZGljYXRlZCAuIHQpCisgICAgKHdpbmRvdy1w YXJhbWV0ZXJzCisgICAgIChuby1vdGhlci13aW5kb3cgLiB0KQorICAgICAobm8tZGVsZXRl LW90aGVyLXdpbmRvd3MgLiB0KSkpCisgICJUaGUgYGRpc3BsYXktYnVmZmVyJyBhY3Rpb24g Zm9yIGRpc3BsYXlpbmcgdGhlIGVjaG8gd2luZG93LgorVGhpcyBhZmZlY3RzIHRoZSBkaXNw bGF5IG9mIHNlcGFyYXRlIGVjaG8gd2luZG93cyBvbmx5LiIKKyAgOnR5cGUgZGlzcGxheS1i dWZmZXItLWFjdGlvbi1jdXN0b20tdHlwZQorICA6cmlza3kgdAorICA6dmVyc2lvbiAiMjcu MSIKKyAgOmdyb3VwICd3aW5kb3dzKQorCisoZGVmdW4gZGlzcGxheS1lY2hvIChidWZmZXIg ZnJhbWUpCisgICJEaXNwbGF5IEJVRkZFUiBpbiBlY2hvIHdpbmRvdyBmb3IgZnJhbWUgRlJB TUUuCitUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBkaXNwbGF5IGEgbmV3IGVjaG8gd2lu ZG93LiAgSXRzCitkZWZhdWx0IGRpc3BsYXkgYWN0aW9uIGlzIHNwZWNpZmllZCBieSB0aGUg dmFyaWFibGUKK2BkaXNwbGF5LWVjaG8tYWN0aW9uJy4iCisgICh3aXRoLXNlbGVjdGVkLWZy YW1lIGZyYW1lCisgICAgKGNvbmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAoZGlzcGxheS1i dWZmZXIgYnVmZmVyIGRpc3BsYXktZWNoby1hY3Rpb24pCisgICAgICAoZXJyb3IgbmlsKSkp KQogDAogKGRlZnVuIHNldC13aW5kb3ctdGV4dC1oZWlnaHQgKHdpbmRvdyBoZWlnaHQpCiAg ICJTZXQgdGhlIGhlaWdodCBpbiBsaW5lcyBvZiB0aGUgdGV4dCBkaXNwbGF5IGFyZWEgb2Yg V0lORE9XIHRvIEhFSUdIVC4KQEAgLTgwMDMsMTAgKzgxNzYsMTMgQEAgd2luZG93LS1zYW5p dGl6ZS1tYXJnaW4KIChkZWZ1biBmaXQtZnJhbWUtdG8tYnVmZmVyICgmb3B0aW9uYWwgZnJh bWUgbWF4LWhlaWdodCBtaW4taGVpZ2h0IG1heC13aWR0aCBtaW4td2lkdGggb25seSkKICAg IkFkanVzdCBzaXplIG9mIEZSQU1FIHRvIGRpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIGl0cyBi dWZmZXIgZXhhY3RseS4KIEZSQU1FIGNhbiBiZSBhbnkgbGl2ZSBmcmFtZSBhbmQgZGVmYXVs dHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KLUZpdCBvbmx5IGlmIEZSQU1FJ3Mgcm9vdCB3aW5k b3cgaXMgbGl2ZS4gIE1BWC1IRUlHSFQsIE1JTi1IRUlHSFQsCi1NQVgtV0lEVEggYW5kIE1J Ti1XSURUSCBzcGVjaWZ5IGJvdW5kcyBvbiB0aGUgbmV3IHRvdGFsIHNpemUgb2YKLUZSQU1F J3Mgcm9vdCB3aW5kb3cuICBNSU4tSEVJR0hUIGFuZCBNSU4tV0lEVEggZGVmYXVsdCB0byB0 aGUgdmFsdWVzIG9mCi1gd2luZG93LW1pbi1oZWlnaHQnIGFuZCBgd2luZG93LW1pbi13aWR0 aCcgcmVzcGVjdGl2ZWx5LgorRml0IG9ubHkgaWYgRlJBTUUncyByb290IHdpbmRvdyBpcyBs aXZlLgorCitNQVgtSEVJR0hULCBNSU4tSEVJR0hULCBNQVgtV0lEVEggYW5kIE1JTi1XSURU SCBzcGVjaWZ5IGJvdW5kcyBvbgordGhlIG5ldyB0b3RhbCBzaXplIG9mIEZSQU1FJ3Mgcm9v dCB3aW5kb3cuICBNSU4tSEVJR0hUIGFuZAorTUlOLVdJRFRIIGRlZmF1bHQgdG8gdGhlIHZh bHVlcyBvZiBgd2luZG93LW1pbi1oZWlnaHQnIGFuZAorYHdpbmRvdy1taW4td2lkdGgnIHJl c3BlY3RpdmVseS4gIFRoZXNlIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkCitpbiB0aGUgY2Fu b25pY2FsIGNoYXJhY3RlciB3aWR0aCBhbmQgaGVpZ2h0IG9mIFdJTkRPVydzIGZyYW1lLgoK IElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBPTkxZIGlzIGB2ZXJ0aWNhbGx5JywgcmVzaXpl IHRoZSBmcmFtZQogdmVydGljYWxseSBvbmx5LiAgSWYgT05MWSBpcyBgaG9yaXpvbnRhbGx5 JywgcmVzaXplIHRoZSBmcmFtZQpAQCAtOTI1NywzICs5NDMzLDM3IEBAIGN0bC14LW1hcAog KGRlZmluZS1rZXkgY3RsLXgtNC1tYXAgIjAiICdraWxsLWJ1ZmZlci1hbmQtd2luZG93KQoK IDs7OyB3aW5kb3cuZWwgZW5kcyBoZXJlCisKKyhkZWZ1biBkaXNwbGF5LWJ1ZmZlci1leHBl Y3RlZC13aW5kb3ctc2l6ZSAoYnVmZmVyLW9yLW5hbWUgJm9wdGlvbmFsIGZ1bGwpCisgIChs ZXQqICgoc2VsZWN0ZWQtd2luZG93IChzZWxlY3RlZC13aW5kb3cpKQorICAgICAgICAgKHBv aW50ICh3aW5kb3ctcG9pbnQgc2VsZWN0ZWQtd2luZG93KSkKKyAgICAgICAgIChwb3AtdXAt ZnJhbWUtYWxpc3QKKyAgICAgICAgICAoY29ucyAoaWYgZnVsbCAnKHZpc2liaWxpdHkgLiBu aWwpICcobm8tbWFrZS1mcmFtZSAuIHQpKQorICAgICAgICAgICAgICAgIHBvcC11cC1mcmFt ZS1hbGlzdCkpCisJIChjb25mcworICAgICAgICAgIChsZXQgKGxpc3QpCisgICAgICAgICAg ICAoZG9saXN0IChmcmFtZSAoZnJhbWUtbGlzdCkpCisgICAgICAgICAgICAgIChwdXNoIChj b25zIGZyYW1lIChjdXJyZW50LXdpbmRvdy1jb25maWd1cmF0aW9uIGZyYW1lKSkgbGlzdCkp CisgICAgICAgICAgICBsaXN0KSkKKwkgKHdpbmRvdyAoZGlzcGxheS1idWZmZXIgYnVmZmVy LW9yLW5hbWUpKQorICAgICAgICAgKGRlbGV0ZSAoY2F0Y2ggJ25ldworICAgICAgICAgICAg ICAgICAgICh3aGVuIHdpbmRvdworICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGZyYW1l ICh3aW5kb3ctZnJhbWUgd2luZG93KSkpCisgICAgICAgICAgICAgICAgICAgICAgIChkb2xp c3QgKGNvbmYgY29uZnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIGZy YW1lIChjYXIgY29uZikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhyb3cgJ25l dyBmcmFtZSkpKSkpKSkKKyAgICAgICAgICh2YWx1ZSAod2hlbiB3aW5kb3cKKwkJICAoY29u cyAod2luZG93LXBpeGVsLXdpZHRoIHdpbmRvdykKKwkJCSh3aW5kb3ctcGl4ZWwtaGVpZ2h0 IHdpbmRvdykpKSkpCisgICAgKHdoZW4gZGVsZXRlIChkZWxldGUtZnJhbWUgZGVsZXRlKSkK KworICAgIChkb2xpc3QgKGNvbmYgY29uZnMpCisgICAgICAobGV0ICgoZnJhbWUgKGNhciBj b25mKSkpCisgICAgICAgICh3aGVuIChmcmFtZS1saXZlLXAgZnJhbWUpCisgICAgICAgICAg KHdpdGgtc2VsZWN0ZWQtZnJhbWUgZnJhbWUKKyAgICAgICAgICAgIChzZXQtd2luZG93LWNv bmZpZ3VyYXRpb24gKGNkciBjb25mKSkpKSkpCisKKyAgICAod2hlbiAod2luZG93LWxpdmUt cCBzZWxlY3RlZC13aW5kb3cpCisgICAgICAoc2V0LXdpbmRvdy1wb2ludCBzZWxlY3RlZC13 aW5kb3cgcG9pbnQpKQorCisgICAgdmFsdWUpKQpkaWZmIC0tZ2l0IGEvc3JjL2J1ZmZlci5j IGIvc3JjL2J1ZmZlci5jCmluZGV4IDI0NGMxODUuLjFiNDExNWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9idWZmZXIuYworKysgYi9zcmMvYnVmZmVyLmMKQEAgLTE3MzMsOCArMTczMyw5IEBAIFRo aXMgZG9lcyBub3QgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSB2aXNpdGVkIGZpbGUgKGlmIGFu eSkuICAqLykKICAgICAgdG8ga2lsbCB0aGUgYnVmZmVyLiAgVGhpcyBtdXN0IGJlIGRvbmUg YWZ0ZXIgdGhlIHF1ZXN0aW9ucwogICAgICBzaW5jZSBhbnl0aGluZyBjYW4gaGFwcGVuIHdp dGhpbiBkb195ZXNfb3Jfbm9fcC4gICovCgotICAvKiBEb24ndCBraWxsIHRoZSBtaW5pYnVm ZmVyIG5vdyBjdXJyZW50LiAgKi8KLSAgaWYgKEVRIChidWZmZXIsIFhXSU5ET1cgKG1pbmli dWZfd2luZG93KS0+Y29udGVudHMpKQorICAvKiBEb24ndCBraWxsIHRoZSBidWZmZXIgb2Yg dGhlIG1pbmlidWZmZXIgd2luZG93LiAgKi8KKyAgaWYgKFdJTkRPV19MSVZFX1AgKG1pbmli dWZfd2luZG93KQorICAgICAgJiYgRVEgKGJ1ZmZlciwgV0lORE9XX0JVRkZFUiAoWFdJTkRP VyAobWluaWJ1Zl93aW5kb3cpKSkpCiAgICAgcmV0dXJuIFFuaWw7CgogICAvKiBXaGVuIHdl IGtpbGwgYW4gb3JkaW5hcnkgYnVmZmVyIHdoaWNoIHNoYXJlcyBpdHMgYnVmZmVyIHRleHQK QEAgLTE3ODEsNyArMTc4Miw4IEBAIFRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBuYW1lIG9m IHRoZSB2aXNpdGVkIGZpbGUgKGlmIGFueSkuICAqLykKICAgLyogSWYgdGhlIGJ1ZmZlciBu b3cgY3VycmVudCBpcyBzaG93biBpbiB0aGUgbWluaWJ1ZmZlciBhbmQgb3VyIGJ1ZmZlcgog ICAgICBpcyB0aGUgc29sZSBvdGhlciBidWZmZXIgZ2l2ZSB1cC4gICovCiAgIFhTRVRCVUZG RVIgKHRlbSwgY3VycmVudF9idWZmZXIpOwotICBpZiAoRVEgKHRlbSwgWFdJTkRPVyAobWlu aWJ1Zl93aW5kb3cpLT5jb250ZW50cykKKyAgaWYgKFdJTkRPV19MSVZFX1AgKG1pbmlidWZf d2luZG93KQorICAgICAgJiYgRVEgKHRlbSwgV0lORE9XX0JVRkZFUiAoWFdJTkRPVyAobWlu aWJ1Zl93aW5kb3cpKSkKICAgICAgICYmIEVRIChidWZmZXIsIEZvdGhlcl9idWZmZXIgKGJ1 ZmZlciwgUW5pbCwgUW5pbCkpKQogICAgIHJldHVybiBRbmlsOwoKZGlmZiAtLWdpdCBhL3Ny Yy9jYWxsaW50LmMgYi9zcmMvY2FsbGludC5jCmluZGV4IDgwN2UxY2MuLjM5NjJhMzMgMTAw NjQ0Ci0tLSBhL3NyYy9jYWxsaW50LmMKKysrIGIvc3JjL2NhbGxpbnQuYwpAQCAtMjYsNiAr MjYsNyBAQAogI2luY2x1ZGUgImJ1ZmZlci5oIgogI2luY2x1ZGUgImtleWJvYXJkLmgiCiAj aW5jbHVkZSAid2luZG93LmgiCisjaW5jbHVkZSAiZnJhbWUuaCIKCiBzdGF0aWMgTGlzcF9P YmplY3QgcHJlc2VydmVkX2ZuczsKCkBAIC0zOTEsNyArMzkyLDcgQEAKIAkgICAgICAmJiAo dyA9IFhDQVIgKHcpLCBDT05TUCAodykpCiAJICAgICAgJiYgKHcgPSBYQ0FSICh3KSwgV0lO RE9XUCAodykpKQogCSAgICB7Ci0JICAgICAgaWYgKE1JTklfV0lORE9XX1AgKFhXSU5ET1cg KHcpKQorCSAgICAgIGlmIChNSU5JQlVGRkVSX1dJTkRPV19QIChYV0lORE9XICh3KSkKIAkJ ICAmJiAhIChtaW5pYnVmX2xldmVsID4gMCAmJiBFUSAodywgbWluaWJ1Zl93aW5kb3cpKSkK IAkJZXJyb3IgKCJBdHRlbXB0IHRvIHNlbGVjdCBpbmFjdGl2ZSBtaW5pYnVmZmVyIHdpbmRv dyIpOwoKZGlmZiAtLWdpdCBhL3NyYy9kaXNwZXh0ZXJuLmggYi9zcmMvZGlzcGV4dGVybi5o CmluZGV4IDIxODBjOWEuLmFiM2ZmZTkgMTAwNjQ0Ci0tLSBhL3NyYy9kaXNwZXh0ZXJuLmgK KysrIGIvc3JjL2Rpc3BleHRlcm4uaApAQCAtMTQyMiw4ICsxNDIyLDkgQEAgc3RydWN0IGds eXBoX3N0cmluZwogICAgICAoKCFtb2RlX2xpbmVfaW5fbm9uX3NlbGVjdGVkX3dpbmRvd3MJ CQlcCiAgICAgICAgfHwgKFNFTFcpID09IFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdykJCQlc CiAgICAgICAgfHwgKG1pbmlidWZfbGV2ZWwgPiAwCQkJCQlcCi0gICAgICAgICAgICYmICFO SUxQIChtaW5pYnVmX3NlbGVjdGVkX3dpbmRvdykJCQlcCi0gICAgICAgICAgICYmIChNQlcp ID09IFhXSU5ET1cgKG1pbmlidWZfd2luZG93KQkJCVwKKwkgICAmJiBXSU5ET1dfTElWRV9Q IChtaW5pYnVmX3dpbmRvdykJCQlcCisJICAgJiYgKE1CVykgPT0gWFdJTkRPVyAobWluaWJ1 Zl93aW5kb3cpCQkJXAorCSAgICYmIFdJTkRPV19MSVZFX1AgKG1pbmlidWZfc2VsZWN0ZWRf d2luZG93KQkJXAogICAgICAgICAgICAmJiAoU0NSVykgPT0gWFdJTkRPVyAobWluaWJ1Zl9z ZWxlY3RlZF93aW5kb3cpKSkJXAogICAgICAgPyBNT0RFX0xJTkVfRkFDRV9JRAkJCQkJXAog ICAgICAgOiBNT0RFX0xJTkVfSU5BQ1RJVkVfRkFDRV9JRCkKQEAgLTMyMjcsNyArMzIyOCw3 IEBAIHN0cnVjdCBnbHlwaF9yb3cgKnJvd19jb250YWluaW5nX3BvcyAoc3RydWN0IHdpbmRv dyAqLCBwdHJkaWZmX3QsCiBpbnQgbGluZV9ib3R0b21feSAoc3RydWN0IGl0ICopOwogaW50 IGRlZmF1bHRfbGluZV9waXhlbF9oZWlnaHQgKHN0cnVjdCB3aW5kb3cgKik7CiBib29sIGRp c3BsYXlfcHJvcF9pbnRhbmdpYmxlX3AgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCwgcHRy ZGlmZl90LCBwdHJkaWZmX3QpOwotdm9pZCByZXNpemVfZWNob19hcmVhX2V4YWN0bHkgKHZv aWQpOwordm9pZCByZXNpemVfbWluaV93aW5kb3dzX2V4YWN0bHkgKHZvaWQpOwogYm9vbCBy ZXNpemVfbWluaV93aW5kb3cgKHN0cnVjdCB3aW5kb3cgKiwgYm9vbCk7CiB2b2lkIHNldF92 ZXJ0aWNhbF9zY3JvbGxfYmFyIChzdHJ1Y3Qgd2luZG93ICopOwogdm9pZCBzZXRfaG9yaXpv bnRhbF9zY3JvbGxfYmFyIChzdHJ1Y3Qgd2luZG93ICopOwpkaWZmIC0tZ2l0IGEvc3JjL2Rp c3BuZXcuYyBiL3NyYy9kaXNwbmV3LmMKaW5kZXggZmM2ZjllMi4uMTgzNDk0NiAxMDA2NDQK LS0tIGEvc3JjL2Rpc3BuZXcuYworKysgYi9zcmMvZGlzcG5ldy5jCkBAIC0xOTk2LDggKzE5 OTYsNyBAQCBzdHJ1Y3QgZ2x5cGhfcm93ICoKICAgd2luZG93X2NoYW5nZV9mbGFncyA9IDA7 CiAgIG1hdHJpeF9kaW0KICAgICA9IGFsbG9jYXRlX21hdHJpY2VzX2Zvcl9mcmFtZV9yZWRp c3BsYXkgKEZSQU1FX1JPT1RfV0lORE9XIChmKSwKLQkJCQkJICAgICAwLCB0b3Bfd2luZG93 X3ksCi0JCQkJCSAgICAgMSwKKwkJCQkJICAgICAwLCB0b3Bfd2luZG93X3ksIDEsCiAJCQkJ CSAgICAgJndpbmRvd19jaGFuZ2VfZmxhZ3MpOwoKICAgLyogQWRkIGluIG1lbnUgYmFyIGxp bmVzLCBpZiBhbnkuICAqLwpAQCAtMzM5OSw5ICszMzk4LDkgQEAgc3RydWN0IGdseXBoX3Jv dyAqCiAgIGlmICghZm9yY2VfcCkKICAgICBkZXRlY3RfaW5wdXRfcGVuZGluZ19pZ25vcmVf c3F1ZWV6YWJsZXMgKCk7CgotICAvKiBJZiBmb3JjZWQgdG8gY29tcGxldGUgdGhlIHVwZGF0 ZSwgb3IgaWYgbm8gaW5wdXQgaXMgcGVuZGluZywgZG8KLSAgICAgdGhlIHVwZGF0ZS4gICov Ci0gIGlmIChmb3JjZV9wIHx8ICFpbnB1dF9wZW5kaW5nIHx8ICFOSUxQIChkb19tb3VzZV90 cmFja2luZykpCisgIC8qIElmIGZvcmNlZCB0byBjb21wbGV0ZSB0aGUgdXBkYXRlLCBubyBp bnB1dCBpcyBwZW5kaW5nIG9yIHdlIGFyZQorICAgICB0cmFja2luZyB0aGUgbW91c2UgZG8g dGhlIHVwZGF0ZS4gICovCisgIGlmIChmb3JjZV9wIHx8ICFpbnB1dF9wZW5kaW5nIHx8ICFO SUxQICh0cmFja19tb3VzZSkpCiAgICAgewogICAgICAgc3RydWN0IGdseXBoX3JvdyAqcm93 LCAqZW5kOwogICAgICAgc3RydWN0IGdseXBoX3JvdyAqbW9kZV9saW5lX3JvdzsKQEAgLTM5 MDAsMTQgKzM4OTksMTcgQEAgc3RydWN0IGdseXBoX3JvdyAqCgogICBpZiAoY3Vyc29yX2lu X2VjaG9fYXJlYQogICAgICAgJiYgIU5JTFAgKGVjaG9fYXJlYV9idWZmZXJbMF0pCisgICAg ICAvKiBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgc2VlbSBvdmVyLWVuZ2luZWVyZWQgYW5k IGNvdWxkIGJlCisJIHByb2JhYmx5IHNpbXBsaWZpZWQuICAqLwogICAgICAgLyogSWYgd2Ug YXJlIHNob3dpbmcgYSBtZXNzYWdlIGluc3RlYWQgb2YgdGhlIG1pbmktYnVmZmVyLAogCSBz aG93IHRoZSBjdXJzb3IgZm9yIHRoZSBtZXNzYWdlIGluc3RlYWQuICAqLwotICAgICAgJiYg WFdJTkRPVyAobWluaWJ1Zl93aW5kb3cpID09IHcKKyAgICAgICYmIFdJTkRPV19MSVZFX1Ag KG1pbmlidWZfd2luZG93KQorICAgICAgJiYgdyA9PSBYV0lORE9XIChtaW5pYnVmX3dpbmRv dykKICAgICAgICYmIEVRIChtaW5pYnVmX3dpbmRvdywgZWNob19hcmVhX3dpbmRvdykKICAg ICAgIC8qIFRoZXNlIGNhc2VzIGFwcGx5IG9ubHkgdG8gdGhlIGZyYW1lIHRoYXQgY29udGFp bnMKIAkgdGhlIGFjdGl2ZSBtaW5pLWJ1ZmZlciB3aW5kb3cuICAqLwotICAgICAgJiYgRlJB TUVfSEFTX01JTklCVUZfUCAoZikKLSAgICAgICYmIEVRIChGUkFNRV9NSU5JQlVGX1dJTkRP VyAoZiksIGVjaG9fYXJlYV93aW5kb3cpKQorICAgICAgJiYgTUlOSUJVRkZFUl9XSU5ET1df TE9DQUxfUCAoZikKKyAgICAgICYmIEVRIChNSU5JQlVGRkVSX1dJTkRPVyAoZiksIGVjaG9f YXJlYV93aW5kb3cpKQogICAgIHsKICAgICAgIGN4ID0gY3kgPSB2cG9zID0gaHBvcyA9IDA7 CgpAQCAtNDU0Nyw2ICs0NTQ5LDggQEAgc3RydWN0IHJvd19lbnRyeQogICBpZiAoIXBhdXNl X3AgJiYgc2V0X2N1cnNvcl9wKQogICAgIHsKICAgICAgIGlmICgoY3Vyc29yX2luX2VjaG9f YXJlYQorCSAgIC8qIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBzZWVtIG92ZXItZW5naW5l ZXJlZCBhbmQgY291bGQKKwkgICAgICBiZSBwcm9iYWJseSBzaW1wbGlmaWVkLiAgKi8KIAkg ICAvKiBJZiB3ZSBhcmUgc2hvd2luZyBhIG1lc3NhZ2UgaW5zdGVhZCBvZiB0aGUgbWluaS1i dWZmZXIsCiAJICAgICAgc2hvdyB0aGUgY3Vyc29yIGZvciB0aGUgbWVzc2FnZSBpbnN0ZWFk IG9mIGZvciB0aGUKIAkgICAgICAobm93IGhpZGRlbikgbWluaS1idWZmZXIgY29udGVudHMu ICAqLwpAQCAtNDU1NSwxNiArNDU1OSwxOCBAQCBzdHJ1Y3Qgcm93X2VudHJ5CiAJICAgICAg ICYmICFOSUxQIChlY2hvX2FyZWFfYnVmZmVyWzBdKSkpCiAJICAvKiBUaGVzZSBjYXNlcyBh cHBseSBvbmx5IHRvIHRoZSBmcmFtZSB0aGF0IGNvbnRhaW5zCiAJICAgICB0aGUgYWN0aXZl IG1pbmktYnVmZmVyIHdpbmRvdy4gICovCi0JICAmJiBGUkFNRV9IQVNfTUlOSUJVRl9QIChm KQotCSAgJiYgRVEgKEZSQU1FX01JTklCVUZfV0lORE9XIChmKSwgZWNob19hcmVhX3dpbmRv dykpCisJICAmJiBNSU5JQlVGRkVSX1dJTkRPV19MT0NBTF9QIChmKQorCSAgJiYgRVEgKE1J TklCVUZGRVJfV0lORE9XIChmKSwgZWNob19hcmVhX3dpbmRvdykpCiAJewotCSAgaW50IHRv cCA9IFdJTkRPV19UT1BfRURHRV9MSU5FIChYV0lORE9XIChGUkFNRV9NSU5JQlVGX1dJTkRP VyAoZikpKTsKKwkgIGludCB0b3AgPSBXSU5ET1dfVE9QX0VER0VfTElORSAoWFdJTkRPVyAo TUlOSUJVRkZFUl9XSU5ET1cgKGYpKSk7CiAJICBpbnQgY29sOwoKIAkgIC8qIFB1dCBjdXJz b3IgYXQgdGhlIGVuZCBvZiB0aGUgcHJvbXB0LiAgSWYgdGhlIG1pbmktYnVmZmVyCiAJICAg ICBpcyBzZXZlcmFsIGxpbmVzIGhpZ2gsIGZpbmQgdGhlIGxhc3QgbGluZSB0aGF0IGhhcwog CSAgICAgYW55IHRleHQgb24gaXQuICAqLwotCSAgaW50IHJvdyA9IEZSQU1FX1RPVEFMX0xJ TkVTIChmKTsKKwkgIGludCByb3cgPSAoTUlOSUJVRkZFUl9XSU5ET1dfVE9QX1AgKGYpCisJ CSAgICAgPyBXSU5ET1dfQk9UVE9NX0VER0VfTElORSAoWFdJTkRPVyAoTUlOSUJVRkZFUl9X SU5ET1cgKGYpKSkKKwkJICAgICA6IEZSQU1FX1RPVEFMX0xJTkVTIChmKSk7CiAJICBkbwog CSAgICB7CiAJICAgICAgcm93LS07CmRpZmYgLS1naXQgYS9zcmMvZnJhbWUuYyBiL3NyYy9m cmFtZS5jCmluZGV4IDg1ZWM3NDAuLjFiNDc1OWUgMTAwNjQ0Ci0tLSBhL3NyYy9mcmFtZS5j CisrKyBiL3NyYy9mcmFtZS5jCkBAIC04MywxNCArODMsOSBAQAogewogICBmLT5idWZmZXJf cHJlZGljYXRlID0gdmFsOwogfQotc3RhdGljIHZvaWQKLWZzZXRfbWluaWJ1ZmZlcl93aW5k b3cgKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3QgdmFsKQotewotICBmLT5taW5pYnVm ZmVyX3dpbmRvdyA9IHZhbDsKLX0KCiBzdHJ1Y3QgZnJhbWUgKgotZGVjb2RlX2xpdmVfZnJh bWUgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZyYW1lKQorZGVjb2RlX2xpdmVfZnJhbWUgKExp c3BfT2JqZWN0IGZyYW1lKQogewogICBpZiAoTklMUCAoZnJhbWUpKQogICAgIGZyYW1lID0g c2VsZWN0ZWRfZnJhbWU7CkBAIC05OSw3ICs5NCw3IEBAIHN0cnVjdCBmcmFtZSAqCiB9Cgog c3RydWN0IGZyYW1lICoKLWRlY29kZV9hbnlfZnJhbWUgKHJlZ2lzdGVyIExpc3BfT2JqZWN0 IGZyYW1lKQorZGVjb2RlX2FueV9mcmFtZSAoTGlzcF9PYmplY3QgZnJhbWUpCiB7CiAgIGlm IChOSUxQIChmcmFtZSkpCiAgICAgZnJhbWUgPSBzZWxlY3RlZF9mcmFtZTsKQEAgLTEwNyw2 ICsxMDIsMTQgQEAgc3RydWN0IGZyYW1lICoKICAgcmV0dXJuIFhGUkFNRSAoZnJhbWUpOwog fQoKK3N0cnVjdCBmcmFtZSAqCitkZWNvZGVfZnJhbWVfb3Jfd2luZG93IChMaXNwX09iamVj dCBmcmFtZV9vcl93aW5kb3cpCit7CisgIHJldHVybiAoV0lORE9XX1ZBTElEX1AgKGZyYW1l X29yX3dpbmRvdykKKwkgID8gV0lORE9XX1hGUkFNRSAoWFdJTkRPVyAoZnJhbWVfb3Jfd2lu ZG93KSkKKwkgIDogZGVjb2RlX2xpdmVfZnJhbWUgKGZyYW1lX29yX3dpbmRvdykpOworfQor CiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiBib29sCiBkaXNwbGF5X2F2YWlsYWJsZSAo dm9pZCkKQEAgLTExOSw2ICsxMjIsNyBAQCBzdHJ1Y3QgZnJhbWUgKgogZGVjb2RlX3dpbmRv d19zeXN0ZW1fZnJhbWUgKExpc3BfT2JqZWN0IGZyYW1lKQogewogICBzdHJ1Y3QgZnJhbWUg KmYgPSBkZWNvZGVfbGl2ZV9mcmFtZSAoZnJhbWUpOworCiAgIGNoZWNrX3dpbmRvd19zeXN0 ZW0gKGYpOwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQogICByZXR1cm4gZjsKQEAgLTIx MSw3ICsyMTUsNyBAQCBzdHJ1Y3QgZnJhbWUgKgogICAgICBtb3N0IG9mIHRoZSBjb21tYW5k cyB0cnkgdG8gYXBwbHkgdGhlbXNlbHZlcyB0byB0aGUgbWluaWJ1ZmZlcgogICAgICBmcmFt ZSBpdHNlbGYsIGFuZCBnZXQgYW4gZXJyb3IgYmVjYXVzZSB5b3UgY2FuJ3Qgc3dpdGNoIGJ1 ZmZlcnMKICAgICAgaW4gb3Igc3BsaXQgdGhlIG1pbmlidWZmZXIgd2luZG93LiAgKi8KLSAg aWYgKEZSQU1FX01JTklCVUZfT05MWV9QIChmKSkKKyAgaWYgKE1JTklCVUZGRVJfV0lORE9X X09OTFlfUCAoZikpCiAgICAgcmV0dXJuOwoKICAgaWYgKFRZUEVfUkFOR0VEX0lOVEVHRVJQ IChpbnQsIHZhbHVlKSkKQEAgLTU3NCw4ICs1NzgsOCBAQCBzdHJ1Y3QgZnJhbWUgKgogICBp bnQgb2xkX3dpbmRvd3Nfd2lkdGggPSBXSU5ET1dfUElYRUxfV0lEVEggKHIpOwogICBpbnQg b2xkX3dpbmRvd3NfaGVpZ2h0CiAgICAgPSAoV0lORE9XX1BJWEVMX0hFSUdIVCAocikKLSAg ICAgICArICgoRlJBTUVfSEFTX01JTklCVUZfUCAoZikgJiYgIUZSQU1FX01JTklCVUZfT05M WV9QIChmKSkKLQkgID8gV0lORE9XX1BJWEVMX0hFSUdIVCAoWFdJTkRPVyAoRlJBTUVfTUlO SUJVRl9XSU5ET1cgKGYpKSkKKyAgICAgICArIChNSU5JQlVGRkVSX1dJTkRPV19GSVhFRF9Q IChmKQorCSAgPyBXSU5ET1dfUElYRUxfSEVJR0hUIChYV0lORE9XIChNSU5JQlVGRkVSX1dJ TkRPVyAoZikpKQogCSAgOiAwKSk7CiAgIGludCBuZXdfd2luZG93c193aWR0aCwgbmV3X3dp bmRvd3NfaGVpZ2h0OwogICBpbnQgb2xkX3RleHRfd2lkdGggPSBGUkFNRV9URVhUX1dJRFRI IChmKTsKQEAgLTc5NiwxNCArODAwLDQxIEBAIHN0cnVjdCBmcmFtZSAqCiAgIHJldHVybiBB TExPQ0FURV9aRVJPRURfUFNFVURPVkVDVE9SIChzdHJ1Y3QgZnJhbWUsIGZhY2VfY2FjaGUs IFBWRUNfRlJBTUUpOwogfQoKKy8qKgorICogc2V0X21pbmlidWZmZXJfd2luZG93X2J1ZmZl cjoKKyAqCisgKiBTZXQgYnVmZmVyIG9mIE1JTklCVUZGRVJfV0lORE9XIHRvIHRoZSBmaXJz dCBvbmUgb24gVm1pbmlidWZmZXJfbGlzdCBvcgorICogdGhlIHJldHVybiB2YWx1ZSBvZiBn ZXRfbWluaWJ1ZmZlciAoMCkuCisgKi8KK3N0YXRpYyB2b2lkCitzZXRfbWluaWJ1ZmZlcl93 aW5kb3dfYnVmZmVyIChMaXNwX09iamVjdCBtaW5pYnVmZmVyX3dpbmRvdykKK3sKKyAgLyog VXNlIHNldF93aW5kb3dfYnVmZmVyIGluc3RlYWQgb2YgRnNldF93aW5kb3dfYnVmZmVyIChz ZWUKKyAgICAgZGlzY3Vzc2lvbiBvZiBidWcjMTE5ODQsIGJ1ZyMxMjAyNSwgYnVnIzEyMDI2 KS4gICovCisgIHNldF93aW5kb3dfYnVmZmVyIChtaW5pYnVmZmVyX3dpbmRvdywKKwkJICAg ICAoTklMUCAoVm1pbmlidWZmZXJfbGlzdCkKKwkJICAgICAgPyBnZXRfbWluaWJ1ZmZlciAo MCkKKwkJICAgICAgOiBGY2FyIChWbWluaWJ1ZmZlcl9saXN0KSksCisJCSAgICAgMCwgMCk7 Cit9CisKKy8qKgorICogbWFrZV9mcmFtZToKKyAqCisgKiBNYWtlIGEgbmV3IGZyYW1lIGFu ZCByZXR1cm4gaXQuICBNSU5JX1RZUEUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mCisgKiB0aGUg bWluaWJ1ZmZlciB3aW5kb3cgYW5kIG11c3QgYmUgZWl0aGVyIFFuaWwgKHNwZWNpZnlpbmcg dGhhdCBubworICogbWluaWJ1ZmZlciB3aW5kb3cgaXMgbWFkZSkgb3IgUXRvcCBvciBRYm90 dG9tIChzcGVjaWZ5aW5nIHRoYXQgdGhlCisgKiBtaW5pYnVmZmVyIHdpbmRvdyBzaG91bGQg YXBwZWFyIG9uIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSBmcmFtZSkuCisgKi8KIHN0cnVj dCBmcmFtZSAqCi1tYWtlX2ZyYW1lIChib29sIG1pbmlfcCkKK21ha2VfZnJhbWUgKExpc3Bf T2JqZWN0IG1pbmlfdHlwZSkKIHsKICAgTGlzcF9PYmplY3QgZnJhbWU7CiAgIHN0cnVjdCBm cmFtZSAqZjsKICAgc3RydWN0IHdpbmRvdyAqcncsICptdyBVTklOSVQ7CiAgIExpc3BfT2Jq ZWN0IHJvb3Rfd2luZG93OwotICBMaXNwX09iamVjdCBtaW5pX3dpbmRvdzsKKyAgTGlzcF9P YmplY3QgbWluaWJ1ZmZlcl93aW5kb3cgPSBRbmlsOworICBMaXNwX09iamVjdCBidWZmZXIg PSBGY3VycmVudF9idWZmZXIgKCk7CgogICBmID0gYWxsb2NhdGVfZnJhbWUgKCk7CiAgIFhT RVRGUkFNRSAoZnJhbWUsIGYpOwpAQCAtODUyLDgwICs4ODMsODEgQEAgc3RydWN0IGZyYW1l ICoKICNlbmRpZgogI2VuZGlmCgotICByb290X3dpbmRvdyA9IG1ha2Vfd2luZG93ICgpOwot ICBydyA9IFhXSU5ET1cgKHJvb3Rfd2luZG93KTsKLSAgaWYgKG1pbmlfcCkKLSAgICB7Ci0g ICAgICBtaW5pX3dpbmRvdyA9IG1ha2Vfd2luZG93ICgpOwotICAgICAgbXcgPSBYV0lORE9X IChtaW5pX3dpbmRvdyk7Ci0gICAgICB3c2V0X25leHQgKHJ3LCBtaW5pX3dpbmRvdyk7Ci0g ICAgICB3c2V0X3ByZXYgKG13LCByb290X3dpbmRvdyk7Ci0gICAgICBtdy0+bWluaSA9IDE7 Ci0gICAgICB3c2V0X2ZyYW1lIChtdywgZnJhbWUpOwotICAgICAgZnNldF9taW5pYnVmZmVy X3dpbmRvdyAoZiwgbWluaV93aW5kb3cpOwotICAgICAgc3RvcmVfZnJhbWVfcGFyYW0gKGYs IFFtaW5pYnVmZmVyLCBRdCk7Ci0gICAgfQotICBlbHNlCi0gICAgewotICAgICAgbWluaV93 aW5kb3cgPSBRbmlsOwotICAgICAgd3NldF9uZXh0IChydywgUW5pbCk7Ci0gICAgICBmc2V0 X21pbmlidWZmZXJfd2luZG93IChmLCBRbmlsKTsKLSAgICB9Ci0KLSAgd3NldF9mcmFtZSAo cncsIGZyYW1lKTsKLQotICAvKiAxMCBpcyBhcmJpdHJhcnksCi0gICAgIGp1c3Qgc28gdGhh dCB0aGVyZSBpcyAic29tZXRoaW5nIHRoZXJlLiIKKyAgLyogMTAgaXMgYXJiaXRyYXJ5LCBq dXN0IHNvIHRoYXQgdGhlcmUgaXMgInNvbWV0aGluZyB0aGVyZS4iCiAgICAgIENvcnJlY3Qg c2l6ZSB3aWxsIGJlIHNldCB1cCBsYXRlciB3aXRoIGFkanVzdF9mcmFtZV9zaXplLiAgKi8K LQogICBTRVRfRlJBTUVfQ09MUyAoZiwgMTApOwogICBTRVRfRlJBTUVfTElORVMgKGYsIDEw KTsKICAgU0VUX0ZSQU1FX1dJRFRIIChmLCBGUkFNRV9DT0xTIChmKSAqIEZSQU1FX0NPTFVN Tl9XSURUSCAoZikpOwogICBTRVRfRlJBTUVfSEVJR0hUIChmLCBGUkFNRV9MSU5FUyAoZikg KiBGUkFNRV9MSU5FX0hFSUdIVCAoZikpOwoKKyAgcm9vdF93aW5kb3cgPSBtYWtlX3dpbmRv dyAoKTsKKyAgcncgPSBYV0lORE9XIChyb290X3dpbmRvdyk7CisgIHdzZXRfZnJhbWUgKHJ3 LCBmcmFtZSk7CiAgIHJ3LT50b3RhbF9jb2xzID0gMTA7CiAgIHJ3LT5waXhlbF93aWR0aCA9 IHJ3LT50b3RhbF9jb2xzICogRlJBTUVfQ09MVU1OX1dJRFRIIChmKTsKLSAgcnctPnRvdGFs X2xpbmVzID0gbWluaV9wID8gOSA6IDEwOwotICBydy0+cGl4ZWxfaGVpZ2h0ID0gcnctPnRv dGFsX2xpbmVzICogRlJBTUVfTElORV9IRUlHSFQgKGYpOwoKLSAgaWYgKG1pbmlfcCkKKyAg aWYgKCFOSUxQIChtaW5pX3R5cGUpKQogICAgIHsKLSAgICAgIG13LT50b3BfbGluZSA9IHJ3 LT50b3RhbF9saW5lczsKLSAgICAgIG13LT5waXhlbF90b3AgPSBydy0+cGl4ZWxfaGVpZ2h0 OworICAgICAgbWluaWJ1ZmZlcl93aW5kb3cgPSBtYWtlX3dpbmRvdyAoKTsKKyAgICAgIG13 ID0gWFdJTkRPVyAobWluaWJ1ZmZlcl93aW5kb3cpOworICAgICAgLyogTm90ZTogVGhlIG1p bmkgd2luZG93IGlzIGFsd2F5cyB0aGUgIm5leHQiIHdpbmRvdyBvZiB0aGUgcm9vdAorICAg ICAgd2luZG93IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBpcyBhdCB0aGUgdG9wIG9yIHRo ZSBib3R0b20gb2YKKyAgICAgIHRoZSBmcmFtZS4gIFRoaXMgYXZvaWRzIHVubmVjZXNzYXJ5 IGNvbXBsaWNhdGlvbnMgaW4gdGhlIGRpc3BsYXkKKyAgICAgIHJvdXRpbmVzIHdoaWNoIGFs d2F5cyBzY2FuIHRoZSByb290IHdpbmRvdyBmaXJzdCBhbmQgc2NhbiBhbnkKKyAgICAgIGZp eGVkIG1pbmlidWZmZXIgd2luZG93IHZpYSB0aGUgcm9vdCB3aW5kb3dzJ3MgbmV4dCBmaWVs ZC4gICovCisgICAgICB3c2V0X25leHQgKHJ3LCBtaW5pYnVmZmVyX3dpbmRvdyk7CisgICAg ICB3c2V0X3ByZXYgKG13LCByb290X3dpbmRvdyk7CisgICAgICB3c2V0X2ZyYW1lIChtdywg ZnJhbWUpOworICAgICAgLyogTm8gaG9yaXpvbnRhbCBzY3JvbGwgYmFycyBpbiBtaW5pYnVm ZmVyIHdpbmRvdy4gICovCisgICAgICB3c2V0X2hvcml6b250YWxfc2Nyb2xsX2JhciAobXcs IFFuaWwpOworICAgICAgbXctPm1pbmlidWZmZXIgPSB0cnVlOworICAgICAgZnNldF9taW5p YnVmZmVyX3dpbmRvdyAoZiwgbWluaWJ1ZmZlcl93aW5kb3cpOworICAgICAgc3RvcmVfZnJh bWVfcGFyYW0gKGYsIFFtaW5pYnVmZmVyLCBtaW5pYnVmZmVyX3dpbmRvdyk7CisgICAgICAv KiBTaGFyZSBtaW5pYnVmZmVyIHdpbmRvdyB3aXRoIGVjaG8gYXJlYS4gICovCisgICAgICBt dy0+ZWNobyA9IHRydWU7CisgICAgICBmc2V0X2VjaG9fd2luZG93IChmLCBtaW5pYnVmZmVy X3dpbmRvdyk7CisgICAgICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUWVjaG9fYXJlYSwgUW5p bCk7CisgICAgICAvKiBTZXQgdXAgZ2VvbWV0cnkgZm9yIHJvb3QgYW5kIG1pbmlidWZmZXIg d2luZG93LiAgKi8KICAgICAgIG13LT50b3RhbF9jb2xzID0gcnctPnRvdGFsX2NvbHM7CiAg ICAgICBtdy0+cGl4ZWxfd2lkdGggPSBydy0+cGl4ZWxfd2lkdGg7CisgICAgICBydy0+dG90 YWxfbGluZXMgPSA5OwogICAgICAgbXctPnRvdGFsX2xpbmVzID0gMTsKICAgICAgIG13LT5w aXhlbF9oZWlnaHQgPSBGUkFNRV9MSU5FX0hFSUdIVCAoZik7CisgICAgICAvKiBBZGp1c3Qg dmVydGljYWwgcG9zaXRpb25zIGFjY29yZGluZyB0byB0aGUgdHlwZSBvZiB0aGUKKwkgbWlu aWJ1ZmZlciB3aW5kb3cuICAqLworICAgICAgaWYgKEVRIChtaW5pX3R5cGUsIFF0b3ApKQor CXsKKwkgIGYtPm1pbmlidWZmZXJfd2luZG93X3R5cGUgPSBtaW5pYnVmZmVyX3dpbmRvd190 b3A7CisJICBydy0+dG9wX2xpbmUgPSAxOworCSAgcnctPnBpeGVsX3RvcCA9IEZSQU1FX0xJ TkVfSEVJR0hUIChmKTsKKwl9CisgICAgICBlbHNlCisJeworCSAgZi0+bWluaWJ1ZmZlcl93 aW5kb3dfdHlwZSA9IG1pbmlidWZmZXJfd2luZG93X2JvdHRvbTsKKwkgIG13LT50b3BfbGlu ZSA9IHJ3LT50b3RhbF9saW5lczsKKwkgIG13LT5waXhlbF90b3AgPSBydy0+cGl4ZWxfaGVp Z2h0OworCX0KKworICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgbWluaWJ1ZmZlciB3aW5kb3cn cyBidWZmZXIuICAqLworICAgICAgc2V0X21pbmlidWZmZXJfd2luZG93X2J1ZmZlciAobWlu aWJ1ZmZlcl93aW5kb3cpOwogICAgIH0KKyAgZWxzZQorICAgIHJ3LT50b3RhbF9saW5lcyA9 IDEwOwoKLSAgLyogQ2hvb3NlIGEgYnVmZmVyIGZvciB0aGUgZnJhbWUncyByb290IHdpbmRv dy4gICovCi0gIHsKLSAgICBMaXNwX09iamVjdCBidWYgPSBGY3VycmVudF9idWZmZXIgKCk7 Ci0KLSAgICAvKiBJZiBjdXJyZW50IGJ1ZmZlciBpcyBoaWRkZW4sIHRyeSB0byBmaW5kIGFu b3RoZXIgb25lLiAgKi8KLSAgICBpZiAoQlVGRkVSX0hJRERFTl9QIChYQlVGRkVSIChidWYp KSkKLSAgICAgIGJ1ZiA9IG90aGVyX2J1ZmZlcl9zYWZlbHkgKGJ1Zik7Ci0KLSAgICAvKiBV c2Ugc2V0X3dpbmRvd19idWZmZXIsIG5vdCBGc2V0X3dpbmRvd19idWZmZXIsIGFuZCBkb24n dCBsZXQKLSAgICAgICBob29rcyBiZSBydW4gYnkgaXQuICBUaGUgcmVhc29uIGlzIHRoYXQg dGhlIHdob2xlIGZyYW1lL3dpbmRvdwotICAgICAgIGFycmFuZ2VtZW50IGlzIG5vdCB5ZXQg ZnVsbHkgaW5pdGlhbGl6ZWQgYXQgdGhpcyBwb2ludC4gIFdpbmRvd3MKLSAgICAgICBkb24n dCBoYXZlIHRoZSByaWdodCBzaXplLCBnbHlwaCBtYXRyaWNlcyBhcmVuJ3QgaW5pdGlhbGl6 ZWQKLSAgICAgICBldGMuICBSdW5uaW5nIExpc3AgZnVuY3Rpb25zIGF0IHRoaXMgcG9pbnQg c3VyZWx5IGVuZHMgaW4gYQotICAgICAgIFNFR1YuICAqLwotICAgIHNldF93aW5kb3dfYnVm ZmVyIChyb290X3dpbmRvdywgYnVmLCAwLCAwKTsKLSAgICBmc2V0X2J1ZmZlcl9saXN0IChm LCBsaXN0MSAoYnVmKSk7Ci0gIH0KKyAgcnctPnBpeGVsX2hlaWdodCA9IHJ3LT50b3RhbF9s aW5lcyAqIEZSQU1FX0xJTkVfSEVJR0hUIChmKTsKCi0gIGlmIChtaW5pX3ApCi0gICAgewot ICAgICAgc2V0X3dpbmRvd19idWZmZXIgKG1pbmlfd2luZG93LAotCQkJIChOSUxQIChWbWlu aWJ1ZmZlcl9saXN0KQotCQkJICA/IGdldF9taW5pYnVmZmVyICgwKQotCQkJICA6IEZjYXIg KFZtaW5pYnVmZmVyX2xpc3QpKSwKLQkJCSAwLCAwKTsKLSAgICAgIC8qIE5vIGhvcml6b250 YWwgc2Nyb2xsIGJhcnMgaW4gbWluaWJ1ZmZlcnMuICAqLwotICAgICAgd3NldF9ob3Jpem9u dGFsX3Njcm9sbF9iYXIgKG13LCBRbmlsKTsKLSAgICB9CisgIC8qIElmIHRoZSBjdXJyZW50 IGJ1ZmZlciBpcyBoaWRkZW4sIHRyeSB0byBmaW5kIGFub3RoZXIgb25lLiAgKi8KKyAgaWYg KEJVRkZFUl9ISURERU5fUCAoWEJVRkZFUiAoYnVmZmVyKSkpCisgICAgYnVmZmVyID0gb3Ro ZXJfYnVmZmVyX3NhZmVseSAoYnVmZmVyKTsKKworICAvKiBVc2Ugc2V0X3dpbmRvd19idWZm ZXIsIG5vdCBGc2V0X3dpbmRvd19idWZmZXIsIGFuZCBkb24ndCBsZXQKKyAgICAgaG9va3Mg YmUgcnVuIGJ5IGl0LiAgVGhlIHJlYXNvbiBpcyB0aGF0IHRoZSB3aG9sZSBmcmFtZS93aW5k b3cKKyAgICAgYXJyYW5nZW1lbnQgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZCBhdCB0 aGlzIHBvaW50LiAgV2luZG93cworICAgICBkb24ndCBoYXZlIHRoZSByaWdodCBzaXplLCBn bHlwaCBtYXRyaWNlcyBhcmVuJ3QgaW5pdGlhbGl6ZWQKKyAgICAgZXRjLiAgUnVubmluZyBM aXNwIGZ1bmN0aW9ucyBhdCB0aGlzIHBvaW50IHN1cmVseSBlbmRzIGluIGEKKyAgICAgU0VH Vi4gICovCisgIHNldF93aW5kb3dfYnVmZmVyIChyb290X3dpbmRvdywgYnVmZmVyLCAwLCAw KTsKKyAgZnNldF9idWZmZXJfbGlzdCAoZiwgbGlzdDEgKGJ1ZmZlcikpOwoKICAgZnNldF9y b290X3dpbmRvdyAoZiwgcm9vdF93aW5kb3cpOwogICBmc2V0X3NlbGVjdGVkX3dpbmRvdyAo Ziwgcm9vdF93aW5kb3cpOwpAQCAtOTM3LDk3ICs5NjksMTA2IEBAIHN0cnVjdCBmcmFtZSAq CiB9CiAMCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCi0vKiBNYWtlIGEgZnJhbWUgdXNp bmcgYSBzZXBhcmF0ZSBtaW5pYnVmZmVyIHdpbmRvdyBvbiBhbm90aGVyIGZyYW1lLgotICAg TUlOSV9XSU5ET1cgaXMgdGhlIG1pbmlidWZmZXIgd2luZG93IHRvIHVzZS4gIG5pbCBtZWFu cyB1c2UgdGhlCi0gICBkZWZhdWx0ICh0aGUgZ2xvYmFsIG1pbmlidWZmZXIpLiAgKi8KLQor LyoqCisgKiBtYWtlX2ZyYW1lX3dpdGhvdXRfbWluaWJ1ZmZlcjoKKyAqCisgKiBNYWtlIGEg bmV3IG1pbmlidWZmZXItbGVzcyBmcmFtZSBvbiBESVNQTEFZIGFuZCByZXR1cm4gaXQuCisg KiBNSU5JQlVGRkVSX1dJTkRPVyBzcGVjaWZpZXMgdGhlIG1pbmlidWZmZXIgd2luZG93IHRv IHVzZS4gIElmIGl0IGlzCisgKiBRbmlsLCB0aGlzIG1lYW5zIHRvIHVzZSB0aGUgbWluaWJ1 ZmZlciB3aW5kb3cgb2YgdGhlIGRlZmF1bHQKKyAqIG1pbmlidWZmZXIgZnJhbWUgZm9yIGtl eWJvYXJkIEtCLCBjcmVhdGluZyBhIG1pbmlidWZmZXItb25seSBmcmFtZQorICogb24gRElT UExBWSwgZnJhbWUgZm9yIGtleWJvYXJkIEtCLCBjcmVhdGluZyBhIG1pbmlidWZmZXItb25s eSBmcmFtZQorICogb24gRElTUExBWSwgaWYgbmVjZXNzYXJ5LiAgT3RoZXJ3aXNlLCBNSU5J QlVGRkVSX1dJTkRPVyBoYXMgdG8KKyAqIHNwZWNpZnkgYW4gZXhpc3RpbmcgbWluaWJ1ZmZl ciB3aW5kb3cgb24gS0IuCisgKi8KIHN0cnVjdCBmcmFtZSAqCi1tYWtlX2ZyYW1lX3dpdGhv dXRfbWluaWJ1ZmZlciAoTGlzcF9PYmplY3QgbWluaV93aW5kb3csIEtCT0FSRCAqa2IsCitt YWtlX2ZyYW1lX3dpdGhvdXRfbWluaWJ1ZmZlciAoTGlzcF9PYmplY3QgbWluaWJ1ZmZlcl93 aW5kb3csIEtCT0FSRCAqa2IsCiAJCQkgICAgICAgTGlzcF9PYmplY3QgZGlzcGxheSkKIHsK ICAgc3RydWN0IGZyYW1lICpmOwoKLSAgaWYgKCFOSUxQIChtaW5pX3dpbmRvdykpCi0gICAg Q0hFQ0tfTElWRV9XSU5ET1cgKG1pbmlfd2luZG93KTsKLQotICBpZiAoIU5JTFAgKG1pbmlf d2luZG93KQotICAgICAgJiYgRlJBTUVfS0JPQVJEIChYRlJBTUUgKFhXSU5ET1cgKG1pbmlf d2luZG93KS0+ZnJhbWUpKSAhPSBrYikKLSAgICBlcnJvciAoIkZyYW1lIGFuZCBtaW5pYnVm ZmVyIG11c3QgYmUgb24gdGhlIHNhbWUgdGVybWluYWwiKTsKKyAgaWYgKCFOSUxQIChtaW5p YnVmZmVyX3dpbmRvdykgJiYgIUVRIChtaW5pYnVmZmVyX3dpbmRvdywgUWxvb3NlKSkKKyAg ICB7CisgICAgICBDSEVDS19MSVZFX1dJTkRPVyAobWluaWJ1ZmZlcl93aW5kb3cpOworICAg ICAgaWYgKEZSQU1FX0tCT0FSRCAoV0lORE9XX1hGUkFNRSAoWFdJTkRPVyAobWluaWJ1ZmZl cl93aW5kb3cpKSkgIT0ga2IpCisJZXJyb3IgKCJGcmFtZSBhbmQgbWluaWJ1ZmZlciB3aW5k b3cgbXVzdCBiZSBvbiBzYW1lIGtleWJvYXJkIik7CisgICAgfQoKICAgLyogTWFrZSBhIGZy YW1lIGNvbnRhaW5pbmcganVzdCBhIHJvb3Qgd2luZG93LiAgKi8KLSAgZiA9IG1ha2VfZnJh bWUgKDApOworICBmID0gbWFrZV9mcmFtZSAoUW5pbCk7CgotICBpZiAoTklMUCAobWluaV93 aW5kb3cpKQorICBpZiAoRVEgKG1pbmlidWZmZXJfd2luZG93LCBRbG9vc2UpKQogICAgIHsK LSAgICAgIC8qIFVzZSBkZWZhdWx0LW1pbmlidWZmZXItZnJhbWUgaWYgcG9zc2libGUuICAq LwotICAgICAgaWYgKCFGUkFNRVAgKEtWQVIgKGtiLCBWZGVmYXVsdF9taW5pYnVmZmVyX2Zy YW1lKSkKLQkgIHx8ICEgRlJBTUVfTElWRV9QIChYRlJBTUUgKEtWQVIgKGtiLCBWZGVmYXVs dF9taW5pYnVmZmVyX2ZyYW1lKSkpKQotCXsKLSAgICAgICAgICBMaXNwX09iamVjdCBmcmFt ZV9kdW1teTsKLQotICAgICAgICAgIFhTRVRGUkFNRSAoZnJhbWVfZHVtbXksIGYpOwotCSAg LyogSWYgdGhlcmUncyBubyBtaW5pYnVmZmVyIGZyYW1lIHRvIHVzZSwgY3JlYXRlIG9uZS4g ICovCi0JICBrc2V0X2RlZmF1bHRfbWluaWJ1ZmZlcl9mcmFtZQotCSAgICAoa2IsIGNhbGwx IChpbnRlcm4gKCJtYWtlLWluaXRpYWwtbWluaWJ1ZmZlci1mcmFtZSIpLCBkaXNwbGF5KSk7 Ci0JfQorICAgICAgLyogRm9yIGEgbG9vc2UgbWluaWJ1ZmZlciB3aW5kb3cganVzdCBzdG9y ZSB0aGUgbWluaWJ1ZmZlciB0eXBlCisJIGFuZCB0aGUgbWluaWJ1ZmZlciBwYXJhbWV0ZXIg YW5kIHJldHVybi4gICovCisgICAgICBmLT5taW5pYnVmZmVyX3dpbmRvd190eXBlID0gbWlu aWJ1ZmZlcl93aW5kb3dfbG9vc2U7CisgICAgICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUW1p bmlidWZmZXIsIFFsb29zZSk7CgotICAgICAgbWluaV93aW5kb3cKLQk9IFhGUkFNRSAoS1ZB UiAoa2IsIFZkZWZhdWx0X21pbmlidWZmZXJfZnJhbWUpKS0+bWluaWJ1ZmZlcl93aW5kb3c7 CisgICAgICByZXR1cm4gZjsKKyAgICB9CisgIGVsc2UgaWYgKE5JTFAgKG1pbmlidWZmZXJf d2luZG93KSkKKyAgICB7CisgICAgICAvKiBVc2UgJ2RlZmF1bHQtbWluaWJ1ZmZlci1mcmFt ZScgaWYgaXQgaXMgbGl2ZSBhbmQgaGFzIGEgbG9jYWwKKwkgbWluaWJ1ZmZlciB3aW5kb3cu ICAqLworICAgICAgTGlzcF9PYmplY3QgbWluaWJ1ZmZlcl9mcmFtZSA9IEtWQVIgKGtiLCBW ZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1lKTsKKworICAgICAgaWYgKCFGUkFNRVAgKG1pbmli dWZmZXJfZnJhbWUpCisJICB8fCAhRlJBTUVfTElWRV9QIChYRlJBTUUgKG1pbmlidWZmZXJf ZnJhbWUpKQorCSAgfHwgIU1JTklCVUZGRVJfV0lORE9XX0xPQ0FMX1AgKFhGUkFNRSAobWlu aWJ1ZmZlcl9mcmFtZSkpKQorCS8qIElmIHRoZXJlJ3Mgbm8gc3VpdGFibGUgJ2RlZmF1bHQt bWluaWJ1ZmZlci1mcmFtZScsIG1ha2UKKwkgICBvbmUuICAqLworCWtzZXRfZGVmYXVsdF9t aW5pYnVmZmVyX2ZyYW1lCisJICAoa2IsIGNhbGwxIChRbWFrZV9pbml0aWFsX21pbmlidWZm ZXJfZnJhbWUsIGRpc3BsYXkpKTsKKworICAgICAgbWluaWJ1ZmZlcl93aW5kb3cKKwk9IE1J TklCVUZGRVJfV0lORE9XIChYRlJBTUUgKEtWQVIgKGtiLCBWZGVmYXVsdF9taW5pYnVmZmVy X2ZyYW1lKSkpOwogICAgIH0KCi0gIGZzZXRfbWluaWJ1ZmZlcl93aW5kb3cgKGYsIG1pbmlf d2luZG93KTsKLSAgc3RvcmVfZnJhbWVfcGFyYW0gKGYsIFFtaW5pYnVmZmVyLCBtaW5pX3dp bmRvdyk7CisgIGZzZXRfbWluaWJ1ZmZlcl93aW5kb3cgKGYsIG1pbmlidWZmZXJfd2luZG93 KTsKKyAgc3RvcmVfZnJhbWVfcGFyYW0gKGYsIFFtaW5pYnVmZmVyLCBtaW5pYnVmZmVyX3dp bmRvdyk7CisgIC8qIEEgbm9uLWxvb3NlIG1pbmlidWZmZXIgd2luZG93IHNoYXJlcyB0aGUg ZWNobyBhcmVhLiAgKi8KKyAgZnNldF9lY2hvX3dpbmRvdyAoZiwgbWluaWJ1ZmZlcl93aW5k b3cpOworICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUWVjaG9fYXJlYSwgUW5pbCk7CgogICAv KiBNYWtlIHRoZSBjaG9zZW4gbWluaWJ1ZmZlciB3aW5kb3cgZGlzcGxheSB0aGUgcHJvcGVy IG1pbmlidWZmZXIsCiAgICAgIHVubGVzcyBpdCBpcyBhbHJlYWR5IHNob3dpbmcgYSBtaW5p YnVmZmVyLiAgKi8KLSAgaWYgKE5JTFAgKEZtZW1xIChYV0lORE9XIChtaW5pX3dpbmRvdykt PmNvbnRlbnRzLCBWbWluaWJ1ZmZlcl9saXN0KSkpCi0gICAgLyogVXNlIHNldF93aW5kb3df YnVmZmVyIGluc3RlYWQgb2YgRnNldF93aW5kb3dfYnVmZmVyIChzZWUKLSAgICAgICBkaXNj dXNzaW9uIG9mIGJ1ZyMxMTk4NCwgYnVnIzEyMDI1LCBidWcjMTIwMjYpLiAgKi8KLSAgICBz ZXRfd2luZG93X2J1ZmZlciAobWluaV93aW5kb3csCi0JCSAgICAgICAoTklMUCAoVm1pbmli dWZmZXJfbGlzdCkKLQkJCT8gZ2V0X21pbmlidWZmZXIgKDApCi0JCQk6IEZjYXIgKFZtaW5p YnVmZmVyX2xpc3QpKSwgMCwgMCk7CisgIGlmIChOSUxQIChGbWVtcSAoWFdJTkRPVyAobWlu aWJ1ZmZlcl93aW5kb3cpLT5jb250ZW50cywgVm1pbmlidWZmZXJfbGlzdCkpKQorICAgIHNl dF9taW5pYnVmZmVyX3dpbmRvd19idWZmZXIgKG1pbmlidWZmZXJfd2luZG93KTsKKwogICBy ZXR1cm4gZjsKIH0KCi0vKiBNYWtlIGEgZnJhbWUgY29udGFpbmluZyBvbmx5IGEgbWluaWJ1 ZmZlciB3aW5kb3cuICAqLwotCisvKioKKyAqIG1ha2VfbWluaWJ1ZmZlcl9mcmFtZToKKyAq CisgKiBNYWtlIGEgbmV3IG1pbmlidWZmZXItb25seSBmcmFtZSBhbmQgcmV0dXJuIGl0Lgor ICovCiBzdHJ1Y3QgZnJhbWUgKgogbWFrZV9taW5pYnVmZmVyX2ZyYW1lICh2b2lkKQogewot ICAvKiBGaXJzdCBtYWtlIGEgZnJhbWUgY29udGFpbmluZyBqdXN0IGEgcm9vdCB3aW5kb3cs IG5vIG1pbmlidWZmZXIuICAqLwotCi0gIHJlZ2lzdGVyIHN0cnVjdCBmcmFtZSAqZiA9IG1h a2VfZnJhbWUgKDApOwotICByZWdpc3RlciBMaXNwX09iamVjdCBtaW5pX3dpbmRvdzsKLSAg cmVnaXN0ZXIgTGlzcF9PYmplY3QgZnJhbWU7CisgIC8qIEZpcnN0IG1ha2UgYSBmcmFtZSBj b250YWluaW5nIGp1c3QgYSByb290IHdpbmRvdy4gICovCisgIHN0cnVjdCBmcmFtZSAqZiA9 IG1ha2VfZnJhbWUgKFFuaWwpOworICBMaXNwX09iamVjdCBtaW5pYnVmZmVyX3dpbmRvdyA9 IGYtPnJvb3Rfd2luZG93OworICBMaXNwX09iamVjdCBmcmFtZTsKCiAgIFhTRVRGUkFNRSAo ZnJhbWUsIGYpOwoKLSAgZi0+YXV0b19yYWlzZSA9IDA7Ci0gIGYtPmF1dG9fbG93ZXIgPSAw OwotICBmLT5ub19zcGxpdCA9IDE7Ci0gIGYtPndhbnRzX21vZGVsaW5lID0gMDsKKyAgZi0+ YXV0b19yYWlzZSA9IGZhbHNlOworICBmLT5hdXRvX2xvd2VyID0gZmFsc2U7CisgIGYtPm5v X3NwbGl0ID0gdHJ1ZTsKKyAgZi0+d2FudHNfbW9kZWxpbmUgPSBmYWxzZTsKCi0gIC8qIE5v dyBsYWJlbCB0aGUgcm9vdCB3aW5kb3cgYXMgYWxzbyBiZWluZyB0aGUgbWluaWJ1ZmZlci4K LSAgICAgQXZvaWQgaW5maW5pdGUgbG9vcGluZyBvbiB0aGUgd2luZG93IGNoYWluIGJ5IG1h cmtpbmcgbmV4dCBwb2ludGVyCi0gICAgIGFzIG5pbC4gKi8KLQotICBtaW5pX3dpbmRvdyA9 IGYtPnJvb3Rfd2luZG93OwotICBmc2V0X21pbmlidWZmZXJfd2luZG93IChmLCBtaW5pX3dp bmRvdyk7CisgIC8qIFRoZSBtaW5pYnVmZmVyIHdpbmRvdyBpcyB0aGUgcm9vdCB3aW5kb3cu ICAqLworICBYV0lORE9XIChtaW5pYnVmZmVyX3dpbmRvdyktPm1pbmlidWZmZXIgPSB0cnVl OworICBmc2V0X21pbmlidWZmZXJfd2luZG93IChmLCBtaW5pYnVmZmVyX3dpbmRvdyk7Cisg IGYtPm1pbmlidWZmZXJfd2luZG93X3R5cGUgPSBtaW5pYnVmZmVyX3dpbmRvd19vbmx5Owog ICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUW1pbmlidWZmZXIsIFFvbmx5KTsKLSAgWFdJTkRP VyAobWluaV93aW5kb3cpLT5taW5pID0gMTsKLSAgd3NldF9uZXh0IChYV0lORE9XIChtaW5p X3dpbmRvdyksIFFuaWwpOwotICB3c2V0X3ByZXYgKFhXSU5ET1cgKG1pbmlfd2luZG93KSwg UW5pbCk7Ci0gIHdzZXRfZnJhbWUgKFhXSU5ET1cgKG1pbmlfd2luZG93KSwgZnJhbWUpOwot Ci0gIC8qIFB1dCB0aGUgcHJvcGVyIGJ1ZmZlciBpbiB0aGF0IHdpbmRvdy4gICovCisgIC8q IFNoYXJlIG1pbmlidWZmZXIgd2luZG93IHdpdGggZWNobyBhcmVhLiAgKi8KKyAgWFdJTkRP VyAobWluaWJ1ZmZlcl93aW5kb3cpLT5lY2hvID0gdHJ1ZTsKKyAgZnNldF9lY2hvX3dpbmRv dyAoZiwgbWluaWJ1ZmZlcl93aW5kb3cpOworICBzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUWVj aG9fYXJlYSwgUW5pbCk7CisgIC8qIEluaXRpYWxpemUgdGhlIG1pbmlidWZmZXIgd2luZG93 J3MgYnVmZmVyLiAgKi8KKyAgc2V0X21pbmlidWZmZXJfd2luZG93X2J1ZmZlciAobWluaWJ1 ZmZlcl93aW5kb3cpOwoKLSAgLyogVXNlIHNldF93aW5kb3dfYnVmZmVyIGluc3RlYWQgb2Yg RnNldF93aW5kb3dfYnVmZmVyIChzZWUKLSAgICAgZGlzY3Vzc2lvbiBvZiBidWcjMTE5ODQs IGJ1ZyMxMjAyNSwgYnVnIzEyMDI2KS4gICovCi0gIHNldF93aW5kb3dfYnVmZmVyIChtaW5p X3dpbmRvdywKLQkJICAgICAoTklMUCAoVm1pbmlidWZmZXJfbGlzdCkKLQkJICAgICAgPyBn ZXRfbWluaWJ1ZmZlciAoMCkKLQkJICAgICAgOiBGY2FyIChWbWluaWJ1ZmZlcl9saXN0KSks IDAsIDApOwogICByZXR1cm4gZjsKIH0KICNlbmRpZiAvKiBIQVZFX1dJTkRPV19TWVNURU0g Ki8KQEAgLTEwMzYsNiArMTA3NywxMiBAQCBzdHJ1Y3QgZnJhbWUgKgoKIHN0YXRpYyBwcmlu dG1heF90IHR0eV9mcmFtZV9jb3VudDsKCisvKioKKyAqIG1ha2VfaW5pdGlhbF9mcmFtZToK KyAqCisgKiBNYWtlIHRoZSBpbml0aWFsIGZyYW1lIGFuZCByZXR1cm4gaXQuICBUaGUgaW5p dGlhbCBmcmFtZSBpcyBhbHdheXMKKyAqIGEgZnJhbWUgd2l0aCBhIG1pbmlidWZmZXIgd2lu ZG93IGF0IHRoZSBib3R0b20uCisgKi8KIHN0cnVjdCBmcmFtZSAqCiBtYWtlX2luaXRpYWxf ZnJhbWUgKHZvaWQpCiB7CkBAIC0xMDUxLDcgKzEwOTgsNyBAQCBzdHJ1Y3QgZnJhbWUgKgoK ICAgdGVybWluYWwgPSBpbml0X2luaXRpYWxfdGVybWluYWwgKCk7CgotICBmID0gbWFrZV9m cmFtZSAoMSk7CisgIGYgPSBtYWtlX2ZyYW1lIChRYm90dG9tKTsKICAgWFNFVEZSQU1FIChm cmFtZSwgZik7CgogICBWZnJhbWVfbGlzdCA9IEZjb25zIChmcmFtZSwgVmZyYW1lX2xpc3Qp OwpAQCAtMTA5Miw2ICsxMTM5LDEyIEBAIHN0cnVjdCBmcmFtZSAqCiB9CgoKKy8qKgorICog bWFrZV90ZXJtaW5hbF9mcmFtZToKKyAqCisgKiBNYWtlIGEgdGVybWluYWwgZnJhbWUgYW5k IHJldHVybiBpdC4gIEEgdGVybWluYWwgZnJhbWUgaXMgYWx3YXlzIGEKKyAqIGZyYW1lIHdp dGggYSBtaW5pYnVmZmVyIHdpbmRvdyBhdCB0aGUgYm90dG9tLgorICovCiBzdGF0aWMgc3Ry dWN0IGZyYW1lICoKIG1ha2VfdGVybWluYWxfZnJhbWUgKHN0cnVjdCB0ZXJtaW5hbCAqdGVy bWluYWwpCiB7CkBAIC0xMTAyLDcgKzExNTUsNyBAQCBzdHJ1Y3QgZnJhbWUgKgogICBpZiAo IXRlcm1pbmFsLT5uYW1lKQogICAgIGVycm9yICgiVGVybWluYWwgaXMgbm90IGxpdmUsIGNh bid0IGNyZWF0ZSBuZXcgZnJhbWVzIG9uIGl0Iik7CgotICBmID0gbWFrZV9mcmFtZSAoMSk7 CisgIGYgPSBtYWtlX2ZyYW1lIChRYm90dG9tKTsKCiAgIFhTRVRGUkFNRSAoZnJhbWUsIGYp OwogICBWZnJhbWVfbGlzdCA9IEZjb25zIChmcmFtZSwgVmZyYW1lX2xpc3QpOwpAQCAtMTM3 MiwxNSArMTQyNSwxNiBAQCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUp IGlzIGFjdHVhbGx5IGRpc3BsYXllZC4KIAkgICAgICAvKiBSZWRpcmVjdCBmcmFtZSBmb2N1 cyBhbHNvIHdoZW4gRlJBTUUgaGFzIGl0cyBtaW5pYnVmZmVyCiAJCSB3aW5kb3cgb24gdGhl IHNlbGVjdGVkIGZyYW1lIChzZWUgQnVnIzI0NTAwKS4gICovCiAJICAgICAgfHwgKE5JTFAg KGZvY3VzKQotCQkgICYmIEVRIChGUkFNRV9NSU5JQlVGX1dJTkRPVyAoZiksIHNmLT5zZWxl Y3RlZF93aW5kb3cpKSkKKwkJICAmJiBFUSAoTUlOSUJVRkZFUl9XSU5ET1cgKGYpLCBzZi0+ c2VsZWN0ZWRfd2luZG93KSkpCiAJICAgIEZyZWRpcmVjdF9mcmFtZV9mb2N1cyAoeGZvY3Vz LCBmcmFtZSk7CiAJfQogICAgIH0KICNlbmRpZiAvKiBIQVZFX1hfV0lORE9XUyAqLwogI2Vu ZGlmIC8qICEgMCAqLwoKLSAgaWYgKCFmb3JfZGVsZXRpb24gJiYgRlJBTUVfSEFTX01JTklC VUZfUCAoc2YpKQotICAgIHJlc2l6ZV9taW5pX3dpbmRvdyAoWFdJTkRPVyAoRlJBTUVfTUlO SUJVRl9XSU5ET1cgKHNmKSksIDEpOworICBpZiAoIWZvcl9kZWxldGlvbiAmJiBNSU5JQlVG RkVSX1dJTkRPV19MT0NBTF9QIChzZikKKyAgICAgICYmICFWZml0X21pbmlidWZmZXJfb25s eV9mcmFtZXMpCisgICAgcmVzaXplX21pbmlfd2luZG93IChYV0lORE9XIChNSU5JQlVGRkVS X1dJTkRPVyAoc2YpKSwgMSk7CgogICBpZiAoRlJBTUVfVEVSTUNBUF9QIChmKSB8fCBGUkFN RV9NU0RPU19QIChmKSkKICAgICB7CkBAIC0xNDA4LDggKzE0NjIsOCBAQCBvZiB0aGVtICh0 aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUpIGlzIGFjdHVhbGx5IGRpc3BsYXllZC4KICAg ICB9CgogICBzZWxlY3RlZF9mcmFtZSA9IGZyYW1lOwotICBpZiAoISBGUkFNRV9NSU5JQlVG X09OTFlfUCAoWEZSQU1FIChzZWxlY3RlZF9mcmFtZSkpKQotICAgIGxhc3Rfbm9ubWluaWJ1 Zl9mcmFtZSA9IFhGUkFNRSAoc2VsZWN0ZWRfZnJhbWUpOworICBpZiAoIU1JTklCVUZGRVJf V0lORE9XX1AgKFhXSU5ET1cgKEZSQU1FX1JPT1RfV0lORE9XIChYRlJBTUUgKGZyYW1lKSkp KSkKKyAgICBsYXN0X25vbm1pbmlidWZfZnJhbWUgPSBYRlJBTUUgKGZyYW1lKTsKCiAgIEZz ZWxlY3Rfd2luZG93IChmLT5zZWxlY3RlZF93aW5kb3csIG5vcmVjb3JkKTsKCkBAIC0xNTUz LDE4ICsxNjA3LDI2IEBAIG9mIHRoZW0gKHRoZSBzZWxlY3RlZCB0ZXJtaW5hbCBmcmFtZSkg aXMgYWN0dWFsbHkgZGlzcGxheWVkLgogI2VuZGlmCiAgIH0KCi0vKiBSZXR1cm4gQ0FORElE QVRFIGlmIGl0IGNhbiBiZSB1c2VkIGFzICdvdGhlci10aGFuLUZSQU1FJyBmcmFtZSBvbiB0 aGUKLSAgIHNhbWUgdHR5IChmb3IgdHR5IGZyYW1lcykgb3IgYW1vbmcgZnJhbWVzIHdoaWNo IHVzZXMgRlJBTUUncyBrZXlib2FyZC4KLSAgIElmIE1JTklCVUYgaXMgbmlsLCBkbyBub3Qg Y29uc2lkZXIgbWluaWJ1ZmZlci1vbmx5IGNhbmRpZGF0ZS4KLSAgIElmIE1JTklCVUYgaXMg YHZpc2libGUnLCBkbyBub3QgY29uc2lkZXIgYW4gaW52aXNpYmxlIGNhbmRpZGF0ZS4KLSAg IElmIE1JTklCVUYgaXMgYSB3aW5kb3csIGNvbnNpZGVyIG9ubHkgaXRzIG93biBmcmFtZSBh bmQgY2FuZGlkYXRlIG5vdwotICAgdXNpbmcgdGhhdCB3aW5kb3cgYXMgdGhlIG1pbmlidWZm ZXIuCi0gICBJZiBNSU5JQlVGIGlzIDAsIGNvbnNpZGVyIGNhbmRpZGF0ZSBpZiBpdCBpcyB2 aXNpYmxlIG9yIGljb25pZmllZC4KLSAgIE90aGVyd2lzZSBjb25zaWRlciBhbnkgY2FuZGlk YXRlIGFuZCByZXR1cm4gbmlsIGlmIENBTkRJREFURSBpcyBub3QKLSAgIGFjY2VwdGFibGUu ICAqLwotCisvKioKKyAqIFJldHVybiBDQU5ESURBVEUgaWYgaXQgY2FuIGJlIHVzZWQgYXMg Im90aGVyIGZyYW1lIiBmcmFtZSBvbiB0aGUKKyAqIHNhbWUgdHR5IChmb3IgdHR5IGZyYW1l cykgb3IgYW1vbmcgYWxsIGZyYW1lcyB3aGljaCB1c2UgRlJBTUUncworICoga2V5Ym9hcmQu ICBCb3RoLCBDQU5ESURBVEUgYW5kIEZSQU1FIG11c3QgYmUgbGl2ZSBmcmFtZXMuICBSZXR1 cm4KKyAqIG5pbCBpZiBDQU5ESURBVEUgaXMgbm90IGFjY2VwdGFibGUuICBBIGZyYW1lIHdp dGggYSBub24tbmlsCisgKiAnbm8tb3RoZXItZnJhbWUnIHBhcmFtZXRlciBpcyBub3QgdXNh YmxlLgorICoKKyAqIFBSRUQgc3BlY2lmaWVzIHdoaWNoIGZyYW1lcyBhcmUgYWNjZXB0YWJs ZSBjYW5kaWRhdGVzLiAgSWYgbmlsLAorICogdGhpcyBtZWFucyB0byBleGNsdWRlIG1pbmli dWZmZXItb25seSBmcmFtZXMgYXMgY2FuZGlkYXRlcy4gIElmCisgKiBQUkVEIGlzIGEgd2lu ZG93LCBhY2NlcHQgb25seSB0aGF0IHdpbmRvdydzIGZyYW1lIGFuZCBhbnkgZnJhbWUgbm93 CisgKiB1c2luZyB0aGF0IHdpbmRvdyBhcyBpdHMgbWluaWJ1ZmZlciB3aW5kb3cgYXMgY2Fu ZGlkYXRlcy4gIElmIFBSRUQKKyAqIGlzICd2aXNpYmxlJywgaW5jbHVkZSBvbmx5IHZpc2li bGUgZnJhbWVzLiAgSWYgUFJFRCBpcyAwLCBpbmNsdWRlCisgKiBhbGwgdmlzaWJsZSBhbmQg aWNvbmlmaWVkIGZyYW1lcy4gIE90aGVyd2lzZSwgY29uc2lkZXIgYWxsIGZyYW1lcworICog YXMgY2FuZGlkYXRlcy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHBy ZXZfZnJhbWUgYW5kIG5leHRfZnJhbWUgb25seSBhbmQKKyAqIGRvZXMgbm90IGNoZWNrIHRo ZSB2YWxpZGl0eSBvZiBpdHMgYXJndW1lbnRzLgorKi8KIHN0YXRpYyBMaXNwX09iamVjdAot Y2FuZGlkYXRlX2ZyYW1lIChMaXNwX09iamVjdCBjYW5kaWRhdGUsIExpc3BfT2JqZWN0IGZy YW1lLCBMaXNwX09iamVjdCBtaW5pYnVmKQorY2FuZGlkYXRlX2ZyYW1lIChMaXNwX09iamVj dCBjYW5kaWRhdGUsIExpc3BfT2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBwcmVkKQogewog ICBzdHJ1Y3QgZnJhbWUgKmMgPSBYRlJBTUUgKGNhbmRpZGF0ZSksICpmID0gWEZSQU1FIChm cmFtZSk7CgpAQCAtMTU3NSwyNSArMTYzNywyNCBAQCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQg dGVybWluYWwgZnJhbWUpIGlzIGFjdHVhbGx5IGRpc3BsYXllZC4KICAgICB7CiAgICAgICBp ZiAoIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoYywgUW5vX290aGVyX2ZyYW1lKSkpCiAJcmV0 dXJuIFFuaWw7Ci0gICAgICBlbHNlIGlmIChOSUxQIChtaW5pYnVmKSkKKyAgICAgIGVsc2Ug aWYgKE5JTFAgKHByZWQpKQogCXsKLQkgIGlmICghRlJBTUVfTUlOSUJVRl9PTkxZX1AgKGMp KQorCSAgaWYgKCFNSU5JQlVGRkVSX1dJTkRPV19PTkxZX1AgKGMpKQogCSAgICByZXR1cm4g Y2FuZGlkYXRlOwogCX0KLSAgICAgIGVsc2UgaWYgKEVRIChtaW5pYnVmLCBRdmlzaWJsZSkp CisgICAgICBlbHNlIGlmIChFUSAocHJlZCwgUXZpc2libGUpKQogCXsKIAkgIGlmIChGUkFN RV9WSVNJQkxFX1AgKGMpKQogCSAgICByZXR1cm4gY2FuZGlkYXRlOwogCX0KLSAgICAgIGVs c2UgaWYgKFdJTkRPV1AgKG1pbmlidWYpKQorICAgICAgZWxzZSBpZiAoV0lORE9XUCAocHJl ZCkpCiAJewotCSAgaWYgKEVRIChGUkFNRV9NSU5JQlVGX1dJTkRPVyAoYyksIG1pbmlidWYp Ci0JICAgICAgfHwgRVEgKFdJTkRPV19GUkFNRSAoWFdJTkRPVyAobWluaWJ1ZikpLCBjYW5k aWRhdGUpCi0JICAgICAgfHwgRVEgKFdJTkRPV19GUkFNRSAoWFdJTkRPVyAobWluaWJ1Zikp LAotCQkgICAgIEZSQU1FX0ZPQ1VTX0ZSQU1FIChjKSkpCisJICBpZiAoRVEgKE1JTklCVUZG RVJfV0lORE9XIChjKSwgcHJlZCkKKwkgICAgICB8fCBFUSAoV0lORE9XX0ZSQU1FIChYV0lO RE9XIChwcmVkKSksIGNhbmRpZGF0ZSkKKwkgICAgICB8fCBFUSAoV0lORE9XX0ZSQU1FIChY V0lORE9XIChwcmVkKSksIEZSQU1FX0ZPQ1VTX0ZSQU1FIChjKSkpCiAJICAgIHJldHVybiBj YW5kaWRhdGU7CiAJfQotICAgICAgZWxzZSBpZiAoSU5URUdFUlAgKG1pbmlidWYpICYmIFhJ TlQgKG1pbmlidWYpID09IDApCisgICAgICBlbHNlIGlmIChJTlRFR0VSUCAocHJlZCkgJiYg WElOVCAocHJlZCkgPT0gMCkKIAl7CiAJICBpZiAoRlJBTUVfVklTSUJMRV9QIChjKSB8fCBG UkFNRV9JQ09OSUZJRURfUCAoYykpCiAJICAgIHJldHVybiBjYW5kaWRhdGU7CkBAIC0xNjAx LDUwICsxNjYyLDcxIEBAIG9mIHRoZW0gKHRoZSBzZWxlY3RlZCB0ZXJtaW5hbCBmcmFtZSkg aXMgYWN0dWFsbHkgZGlzcGxheWVkLgogICAgICAgZWxzZQogCXJldHVybiBjYW5kaWRhdGU7 CiAgICAgfQorCiAgIHJldHVybiBRbmlsOwogfQoKLS8qIFJldHVybiB0aGUgbmV4dCBmcmFt ZSBpbiB0aGUgZnJhbWUgbGlzdCBhZnRlciBGUkFNRS4gICovCi0KKy8qKgorICogbmV4dF9m cmFtZToKKyAqCisgKiBSZXR1cm4gZnJhbWUgZm9sbG93aW5nIEZSQU1FIG9uIHRoZSBsaXN0 IG9mIGxpdmUgZnJhbWVzLgorICogRm9yIHRoZSBtZWFuaW5nIG9mIEZSQU1FIGFuZCBQUkVE IHNlZSB0aGUgZG9jLXN0cmluZyBvZgorICogRm5leHRfZnJhbWUuCisgKgorICogVGhpcyBm dW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBGbmV4dF9mcmFtZSBvbmx5IGFuZCBkb2VzIG5vdCBj aGVjaworICogdGhlIHZhbGlkaXR5IG9mIGl0cyBhcmd1bWVudHMuCisgKi8KIHN0YXRpYyBM aXNwX09iamVjdAotbmV4dF9mcmFtZSAoTGlzcF9PYmplY3QgZnJhbWUsIExpc3BfT2JqZWN0 IG1pbmlidWYpCituZXh0X2ZyYW1lIChMaXNwX09iamVjdCBmcmFtZSwgTGlzcF9PYmplY3Qg cHJlZCkKIHsKLSAgTGlzcF9PYmplY3QgZiwgdGFpbDsKKyAgTGlzcF9PYmplY3QgZnJhbWVz LCBmcmFtZTEsIG5leHQ7CiAgIGludCBwYXNzZWQgPSAwOwoKICAgZWFzc3VtZSAoQ09OU1Ag KFZmcmFtZV9saXN0KSk7Ci0KICAgd2hpbGUgKHBhc3NlZCA8IDIpCi0gICAgRk9SX0VBQ0hf RlJBTUUgKHRhaWwsIGYpCisgICAgRk9SX0VBQ0hfRlJBTUUgKGZyYW1lcywgZnJhbWUxKQog ICAgICAgewogCWlmIChwYXNzZWQpCiAJICB7Ci0JICAgIGYgPSBjYW5kaWRhdGVfZnJhbWUg KGYsIGZyYW1lLCBtaW5pYnVmKTsKLQkgICAgaWYgKCFOSUxQIChmKSkKLQkgICAgICByZXR1 cm4gZjsKKwkgICAgLyogUHJlIEVtYWNzIDI3IHZlcnNpb25zIGNvdWxkIHJ1biBpbnRvIGFu IGluZmluaXRlIGxvb3AKKwkgICAgICAgaGVyZSB3aGVuIGZyYW1lMSB3YXMgRlJBTUUgYW5k IEZSQU1FIGl0c2VsZiBkaWQgbm90CisJICAgICAgIHF1YWxpZnkgYXMgY2FuZGlkYXRlLiAg Ki8KKwkgICAgbmV4dCA9IGNhbmRpZGF0ZV9mcmFtZSAoZnJhbWUxLCBmcmFtZSwgcHJlZCk7 CisJICAgIGlmICghTklMUCAobmV4dCkpCisJICAgICAgcmV0dXJuIG5leHQ7CiAJICB9Ci0J aWYgKEVRIChmcmFtZSwgZikpCisKKwlpZiAoRVEgKGZyYW1lMSwgZnJhbWUpKQogCSAgcGFz c2VkKys7CiAgICAgICB9CisKICAgcmV0dXJuIGZyYW1lOwogfQoKLS8qIFJldHVybiB0aGUg cHJldmlvdXMgZnJhbWUgaW4gdGhlIGZyYW1lIGxpc3QgYmVmb3JlIEZSQU1FLiAgKi8KLQor LyoqCisgKiBwcmV2X2ZyYW1lOgorICoKKyAqIFJldHVybiBmcmFtZSBwcmVjZWRpbmcgRlJB TUUgb24gdGhlIGxpc3Qgb2YgbGl2ZSBmcmFtZXMuCisgKiBGb3IgdGhlIG1lYW5pbmcgb2Yg RlJBTUUgYW5kIFBSRUQgc2VlIHRoZSBkb2Mtc3RyaW5nIG9mCisgKiBGcHJldl9mcmFtZS4K KyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIEZwcmV2X2ZyYW1lIG9ubHkg YW5kIGRvZXMgbm90IGNoZWNrCisgKiB0aGUgdmFsaWRpdHkgb2YgaXRzIGFyZ3VtZW50cy4K KyAqLwogc3RhdGljIExpc3BfT2JqZWN0Ci1wcmV2X2ZyYW1lIChMaXNwX09iamVjdCBmcmFt ZSwgTGlzcF9PYmplY3QgbWluaWJ1ZikKK3ByZXZfZnJhbWUgKExpc3BfT2JqZWN0IGZyYW1l LCBMaXNwX09iamVjdCBwcmVkKQogewotICBMaXNwX09iamVjdCBmLCB0YWlsLCBwcmV2ID0g UW5pbDsKKyAgTGlzcF9PYmplY3QgZnJhbWVzLCBmcmFtZTEsIHByZXYgPSBRbmlsOwoKICAg ZWFzc3VtZSAoQ09OU1AgKFZmcmFtZV9saXN0KSk7Ci0KLSAgRk9SX0VBQ0hfRlJBTUUgKHRh aWwsIGYpCisgIEZPUl9FQUNIX0ZSQU1FIChmcmFtZXMsIGZyYW1lMSkKICAgICB7Ci0gICAg ICBpZiAoRVEgKGZyYW1lLCBmKSAmJiAhTklMUCAocHJldikpCisgICAgICBpZiAoRVEgKGZy YW1lMSwgZnJhbWUpICYmICFOSUxQIChwcmV2KSkKIAlyZXR1cm4gcHJldjsKLSAgICAgIGYg PSBjYW5kaWRhdGVfZnJhbWUgKGYsIGZyYW1lLCBtaW5pYnVmKTsKLSAgICAgIGlmICghTklM UCAoZikpCi0JcHJldiA9IGY7CisKKyAgICAgIGZyYW1lMSA9IGNhbmRpZGF0ZV9mcmFtZSAo ZnJhbWUxLCBmcmFtZSwgcHJlZCk7CisgICAgICBpZiAoIU5JTFAgKGZyYW1lMSkpCisJcHJl diA9IGZyYW1lMTsKICAgICB9CgogICAvKiBXZSd2ZSBzY2FubmVkIHRoZSBlbnRpcmUgbGlz dC4gICovCkBAIC0xNjUzLDU0ICsxNzM1LDYyIEBAIG9mIHRoZW0gKHRoZSBzZWxlY3RlZCB0 ZXJtaW5hbCBmcmFtZSkgaXMgYWN0dWFsbHkgZGlzcGxheWVkLgogICAgICAgIGFjY2VwdGFi bGUgZnJhbWUuICBSZXR1cm4gdGhlIG9yaWdpbmFsIGZyYW1lLiAgKi8KICAgICByZXR1cm4g ZnJhbWU7CiAgIGVsc2UKLSAgICAvKiBUaGVyZSB3ZXJlIG5vIGFjY2VwdGFibGUgZnJhbWVz IGluIHRoZSBsaXN0IGJlZm9yZSBGUkFNRTsgb3RoZXJ3aXNlLAotICAgICAgIHdlIHdvdWxk IGhhdmUgcmV0dXJuZWQgZGlyZWN0bHkgZnJvbSB0aGUgbG9vcC4gIFNpbmNlIFBSRVYgaXMg dGhlIGxhc3QKLSAgICAgICBhY2NlcHRhYmxlIGZyYW1lIGluIHRoZSBsaXN0LCByZXR1cm4g aXQuICAqLworICAgIC8qIFRoZXJlIHdlcmUgbm8gYWNjZXB0YWJsZSBmcmFtZXMgaW4gdGhl IGxpc3QgYmVmb3JlIEZSQU1FOworICAgICAgIG90aGVyd2lzZSwgd2Ugd291bGQgaGF2ZSBy ZXR1cm5lZCBkaXJlY3RseSBmcm9tIHRoZSBsb29wLgorICAgICAgIFNpbmNlIFBSRVYgaXMg dGhlIGxhc3QgYWNjZXB0YWJsZSBmcmFtZSBpbiB0aGUgbGlzdCwgcmV0dXJuCisgICAgICAg aXQuICAqLwogICAgIHJldHVybiBwcmV2OwogfQoKLQogREVGVU4gKCJuZXh0LWZyYW1lIiwg Rm5leHRfZnJhbWUsIFNuZXh0X2ZyYW1lLCAwLCAyLCAwLAotICAgICAgIGRvYzogLyogUmV0 dXJuIHRoZSBuZXh0IGZyYW1lIGluIHRoZSBmcmFtZSBsaXN0IGFmdGVyIEZSQU1FLgotSXQg Y29uc2lkZXJzIG9ubHkgZnJhbWVzIG9uIHRoZSBzYW1lIHRlcm1pbmFsIGFzIEZSQU1FLgot QnkgZGVmYXVsdCwgc2tpcCBtaW5pYnVmZmVyLW9ubHkgZnJhbWVzLgotSWYgb21pdHRlZCwg RlJBTUUgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIGZyYW1lLgotSWYgb3B0aW9uYWwgYXJn dW1lbnQgTUlOSUZSQU1FIGlzIG5pbCwgZXhjbHVkZSBtaW5pYnVmZmVyLW9ubHkgZnJhbWVz LgotSWYgTUlOSUZSQU1FIGlzIGEgd2luZG93LCBpbmNsdWRlIG9ubHkgaXRzIG93biBmcmFt ZQotYW5kIGFueSBmcmFtZSBub3cgdXNpbmcgdGhhdCB3aW5kb3cgYXMgdGhlIG1pbmlidWZm ZXIuCi1JZiBNSU5JRlJBTUUgaXMgYHZpc2libGUnLCBpbmNsdWRlIGFsbCB2aXNpYmxlIGZy YW1lcy4KLUlmIE1JTklGUkFNRSBpcyAwLCBpbmNsdWRlIGFsbCB2aXNpYmxlIGFuZCBpY29u aWZpZWQgZnJhbWVzLgotT3RoZXJ3aXNlLCBpbmNsdWRlIGFsbCBmcmFtZXMuICAqLykKLSAg KExpc3BfT2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBtaW5pZnJhbWUpCisgICAgICAgZG9j OiAvKiBSZXR1cm4gZnJhbWUgZm9sbG93aW5nIEZSQU1FIG9uIHRoZSBsaXN0IG9mIGxpdmUg ZnJhbWVzLgorRlJBTUUgbXVzdCBiZSBhIGxpdmUgZnJhbWUgYW5kIGRlZmF1bHRzIHRvIHRo ZSBzZWxlY3RlZCBmcmFtZS4gIEFueQorY2FuZGlkYXRlIGZyYW1lIG11c3QgYmUgb24gdGhl IHNhbWUgdGVybWluYWwgYXMgRlJBTUUgYW5kIGl0cworJ25vLW90aGVyLWZyYW1lJyBwYXJh bWV0ZXIgbXVzdCBiZSBuaWwuICBSZXR1cm4gRlJBTUUgaWYgbm8gYWNjZXB0YWJsZQorY2Fu ZGlkYXRlIGZyYW1lIGNhbiBiZSBmb3VuZC4KKworUFJFRCBzcGVjaWZpZXMgd2hpY2ggZnJh bWVzIHRvIGNvbnNpZGVyIGFzIGNhbmRpZGF0ZXMuICBJZiBvbWl0dGVkIG9yCituaWwsIHRo aXMgbWVhbnMgdG8gZXhjbHVkZSBtaW5pYnVmZmVyLW9ubHkgZnJhbWVzIGFzIGNhbmRpZGF0 ZXMuICBJZgorUFJFRCBpcyBhIHdpbmRvdywgaW5jbHVkZSBvbmx5IHRoYXQgd2luZG93J3Mg ZnJhbWUgYW5kIGFueSBmcmFtZSBub3cKK3VzaW5nIHRoYXQgd2luZG93IGFzIGl0cyBtaW5p YnVmZmVyIHdpbmRvdy4gIElmIFBSRUQgaXMgJ3Zpc2libGUnLAoraW5jbHVkZSBvbmx5IHZp c2libGUgZnJhbWVzLiAgSWYgUFJFRCBpcyAwLCBpbmNsdWRlIGFsbCB2aXNpYmxlIGFuZAor aWNvbmlmaWVkIGZyYW1lcy4gIE90aGVyd2lzZSwgaW5jbHVkZSBhbGwgZnJhbWVzIGFzIGNh bmRpZGF0ZXMuICAqLykKKyAgKExpc3BfT2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBwcmVk KQogewogICBpZiAoTklMUCAoZnJhbWUpKQogICAgIGZyYW1lID0gc2VsZWN0ZWRfZnJhbWU7 Ci0gIENIRUNLX0xJVkVfRlJBTUUgKGZyYW1lKTsKLSAgcmV0dXJuIG5leHRfZnJhbWUgKGZy YW1lLCBtaW5pZnJhbWUpOworICBlbHNlCisgICAgQ0hFQ0tfTElWRV9GUkFNRSAoZnJhbWUp OworCisgIHJldHVybiBuZXh0X2ZyYW1lIChmcmFtZSwgcHJlZCk7CiB9CgogREVGVU4gKCJw cmV2aW91cy1mcmFtZSIsIEZwcmV2aW91c19mcmFtZSwgU3ByZXZpb3VzX2ZyYW1lLCAwLCAy LCAwLAotICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBwcmV2aW91cyBmcmFtZSBpbiB0aGUg ZnJhbWUgbGlzdCBiZWZvcmUgRlJBTUUuCi1JdCBjb25zaWRlcnMgb25seSBmcmFtZXMgb24g dGhlIHNhbWUgdGVybWluYWwgYXMgRlJBTUUuCi1CeSBkZWZhdWx0LCBza2lwIG1pbmlidWZm ZXItb25seSBmcmFtZXMuCi1JZiBvbWl0dGVkLCBGUkFNRSBkZWZhdWx0cyB0byB0aGUgc2Vs ZWN0ZWQgZnJhbWUuCi1JZiBvcHRpb25hbCBhcmd1bWVudCBNSU5JRlJBTUUgaXMgbmlsLCBl eGNsdWRlIG1pbmlidWZmZXItb25seSBmcmFtZXMuCi1JZiBNSU5JRlJBTUUgaXMgYSB3aW5k b3csIGluY2x1ZGUgb25seSBpdHMgb3duIGZyYW1lCi1hbmQgYW55IGZyYW1lIG5vdyB1c2lu ZyB0aGF0IHdpbmRvdyBhcyB0aGUgbWluaWJ1ZmZlci4KLUlmIE1JTklGUkFNRSBpcyBgdmlz aWJsZScsIGluY2x1ZGUgYWxsIHZpc2libGUgZnJhbWVzLgotSWYgTUlOSUZSQU1FIGlzIDAs IGluY2x1ZGUgYWxsIHZpc2libGUgYW5kIGljb25pZmllZCBmcmFtZXMuCi1PdGhlcndpc2Us IGluY2x1ZGUgYWxsIGZyYW1lcy4gICovKQotICAoTGlzcF9PYmplY3QgZnJhbWUsIExpc3Bf T2JqZWN0IG1pbmlmcmFtZSkKKyAgICAgICBkb2M6IC8qIFJldHVybiBmcmFtZSBwcmVjZWRp bmcgRlJBTUUgb24gdGhlIGxpc3Qgb2YgbGl2ZSBmcmFtZXMuCitGUkFNRSBtdXN0IGJlIGEg bGl2ZSBmcmFtZSBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIGZyYW1lLiAgQW55Citj YW5kaWRhdGUgZnJhbWUgbXVzdCBiZSBvbiB0aGUgc2FtZSB0ZXJtaW5hbCBhcyBGUkFNRSBh bmQgaXRzCisnbm8tb3RoZXItZnJhbWUnIHBhcmFtZXRlciBtdXN0IGJlIG5pbC4gIFJldHVy biBGUkFNRSBpZiBubyBhY2NlcHRhYmxlCitjYW5kaWRhdGUgZnJhbWUgY2FuIGJlIGZvdW5k LgorCitQUkVEIHNwZWNpZmllcyB3aGljaCBmcmFtZXMgdG8gY29uc2lkZXIgYXMgY2FuZGlk YXRlcy4gIElmIG9taXR0ZWQgb3IKK25pbCwgdGhpcyBtZWFucyB0byBleGNsdWRlIG1pbmli dWZmZXItb25seSBmcmFtZXMgYXMgY2FuZGlkYXRlcy4gIElmCitQUkVEIGlzIGEgd2luZG93 LCBpbmNsdWRlIG9ubHkgdGhhdCB3aW5kb3cncyBmcmFtZSBhbmQgYW55IGZyYW1lIG5vdwor dXNpbmcgdGhhdCB3aW5kb3cgYXMgaXRzIG1pbmlidWZmZXIgd2luZG93LiAgSWYgUFJFRCBp cyAndmlzaWJsZScsCitpbmNsdWRlIG9ubHkgdmlzaWJsZSBmcmFtZXMuICBJZiBQUkVEIGlz IDAsIGluY2x1ZGUgYWxsIHZpc2libGUgYW5kCitpY29uaWZpZWQgZnJhbWVzLiAgT3RoZXJ3 aXNlLCBpbmNsdWRlIGFsbCBmcmFtZXMgYXMgY2FuZGlkYXRlcy4gICovKQorICAoTGlzcF9P YmplY3QgZnJhbWUsIExpc3BfT2JqZWN0IHByZWQpCiB7CiAgIGlmIChOSUxQIChmcmFtZSkp CiAgICAgZnJhbWUgPSBzZWxlY3RlZF9mcmFtZTsKLSAgQ0hFQ0tfTElWRV9GUkFNRSAoZnJh bWUpOwotICByZXR1cm4gcHJldl9mcmFtZSAoZnJhbWUsIG1pbmlmcmFtZSk7CisgIGVsc2UK KyAgICBDSEVDS19MSVZFX0ZSQU1FIChmcmFtZSk7CisKKyAgcmV0dXJuIHByZXZfZnJhbWUg KGZyYW1lLCBwcmVkKTsKIH0KCiBERUZVTiAoImxhc3Qtbm9ubWluaWJ1ZmZlci1mcmFtZSIs IEZsYXN0X25vbm1pbmlidWZfZnJhbWUsCiAgICAgICAgU2xhc3Rfbm9ubWluaWJ1Zl9mcmFt ZSwgMCwgMCwgMCwKLSAgICAgICBkb2M6IC8qIFJldHVybiBsYXN0IG5vbi1taW5pYnVmZmVy IGZyYW1lIHNlbGVjdGVkLiAqLykKKyAgICAgICBkb2M6IC8qIFJldHVybiBsYXN0IG5vbi1t aW5pYnVmZmVyIGZyYW1lIHNlbGVjdGVkLiAgKi8pCiAgICh2b2lkKQogewogICBMaXNwX09i amVjdCBmcmFtZSA9IFFuaWw7CkBAIC0xNzEwLDEzICsxODAwLDQ1IEBAIG9mIHRoZW0gKHRo ZSBzZWxlY3RlZCB0ZXJtaW5hbCBmcmFtZSkgaXMgYWN0dWFsbHkgZGlzcGxheWVkLgoKICAg cmV0dXJuIGZyYW1lOwogfQorCitERUZVTiAoIm1pbmlidWZmZXItd2luZG93LXR5cGUiLCBG bWluaWJ1ZmZlcl93aW5kb3dfdHlwZSwKKyAgICAgICBTbWluaWJ1ZmZlcl93aW5kb3dfdHlw ZSwgMCwgMSwgMCwKKyAgICAgICBkb2M6IC8qIFJldHVybiB0eXBlIG9mIEZSQU1FJ3MgbWlu aWJ1ZmZlciB3aW5kb3cuCitSZXR1cm4gbmlsIHdoZW4gRlJBTUUgZG9lcyBub3Qgb3duIGEg bWluaWJ1ZmZlciB3aW5kb3cuICBSZXR1cm4gJ3RvcCcKK3doZW4gdGhlIG1pbmlidWZmZXIg d2luZG93IGlzIGxvY2F0ZWQgYXQgdGhlIHRvcCBhbmQgJ2JvdHRvbScgd2hlbiB0aGUKK21p bmlidWZmZXIgd2luZG93IGFwcGVhcnMgYXQgdGhlIGJvdHRvbSBvZiBGUkFNRS4gIFJldHVy biAnb25seScgd2hlbgorRlJBTUUncyBvbmx5IHdpbmRvdyBpcyBpdHMgbWluaWJ1ZmZlciB3 aW5kb3cuICBSZXR1cm4gJ2VtYmVkJyB3aGVuCitGUkFNRSBoYXMgYW4gZW1iZWRkZWQgbWlu aWJ1ZmZlciB3aW5kb3cuICAqLykKKyAgICAgKExpc3BfT2JqZWN0IGZyYW1lKQoreworICBz dHJ1Y3QgZnJhbWUgKmYgPSBkZWNvZGVfbGl2ZV9mcmFtZSAoZnJhbWUpOworCisgIHN3aXRj aCAoZi0+bWluaWJ1ZmZlcl93aW5kb3dfdHlwZSkKKyAgICB7CisgICAgY2FzZSBtaW5pYnVm ZmVyX3dpbmRvd19sb29zZToKKyAgICAgIHJldHVybiBRbG9vc2U7CisKKyAgICBjYXNlIG1p bmlidWZmZXJfd2luZG93X3RvcDoKKyAgICAgIHJldHVybiBRdG9wOworCisgICAgY2FzZSBt aW5pYnVmZmVyX3dpbmRvd19ib3R0b206CisgICAgICByZXR1cm4gUWJvdHRvbTsKKworICAg IGNhc2UgbWluaWJ1ZmZlcl93aW5kb3dfb25seToKKyAgICAgIHJldHVybiBRb25seTsKKwor ICAgIGRlZmF1bHQ6CisgICAgICBlbWFjc19hYm9ydCAoKTsKKyAgICB9Cit9CiAMCiAvKioK LSAqIG90aGVyX2ZyYW1lczoKKyAqIG90aGVyX2ZyYW1lc19wOgogICoKICAqIFJldHVybiB0 cnVlIGlmIHRoZXJlIGV4aXN0cyBhdCBsZWFzdCBvbmUgdmlzaWJsZSBvciBpY29uaWZpZWQg ZnJhbWUKLSAqIGJ1dCBGLiAgVG9vbHRpcCBmcmFtZXMgZG8gbm90IHF1YWxpZnkgYXMgY2Fu ZGlkYXRlcy4gIFJldHVybiBmYWxzZQotICogaWYgbm8gc3VjaCBmcmFtZSBleGlzdHMuCisg KiBidXQgRi4gIFJldHVybiBmYWxzZSBpZiBubyBzdWNoIGZyYW1lIGV4aXN0cy4gIFRvb2x0 aXAgZnJhbWVzIGRvCisgKiBub3QgcXVhbGlmeSBhcyBjYW5kaWRhdGVzLCBuZWl0aGVyIGRv IGNoaWxkIGZyYW1lcyBvciBmcmFtZXMgd2l0aCBhCisgKiBub24tbmlsICdkZWxldGUtYmVm b3JlJyBwYXJhbWV0ZXIuCiAgKgogICogSU5WSVNJQkxFIHRydWUgbWVhbnMgd2UgYXJlIGNh bGxlZCBmcm9tIG1ha2VfZnJhbWVfaW52aXNpYmxlIHdoZXJlCiAgKiBzdWNoIGEgZnJhbWUg bXVzdCBiZSB2aXNpYmxlIG9yIGljb25pZmllZC4gIElOVklTSUJMRSBuaWwgbWVhbnMgd2UK QEAgLTE3MjcsMjEgKzE4NDksMTcgQEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFs IGZyYW1lKSBpcyBhY3R1YWxseSBkaXNwbGF5ZWQuCiAgKiBsZWFzdCBvbmUgWCBmcmFtZSBl eGlzdHMuCiAgKi8KIHN0YXRpYyBib29sCi1vdGhlcl9mcmFtZXMgKHN0cnVjdCBmcmFtZSAq ZiwgYm9vbCBpbnZpc2libGUsIGJvb2wgZm9yY2UpCitvdGhlcl9mcmFtZXNfcCAoc3RydWN0 IGZyYW1lICpmLCBib29sIGludmlzaWJsZSwgYm9vbCBmb3JjZSkKIHsKICAgTGlzcF9PYmpl Y3QgZnJhbWVzLCBmcmFtZSwgZnJhbWUxOwotICBMaXNwX09iamVjdCBtaW5pYnVmZmVyX3dp bmRvdyA9IEZSQU1FX01JTklCVUZfV0lORE9XIChmKTsKCiAgIFhTRVRGUkFNRSAoZnJhbWUs IGYpOwotICBpZiAoV0lORE9XUCAobWluaWJ1ZmZlcl93aW5kb3cpCi0gICAgICAmJiAhRVEg KGZyYW1lLCBXSU5ET1dfRlJBTUUgKFhXSU5ET1cgKG1pbmlidWZmZXJfd2luZG93KSkpKQot ICAgIG1pbmlidWZmZXJfd2luZG93ID0gUW5pbDsKCiAgIEZPUl9FQUNIX0ZSQU1FIChmcmFt ZXMsIGZyYW1lMSkKICAgICB7CiAgICAgICBzdHJ1Y3QgZnJhbWUgKmYxID0gWEZSQU1FIChm cmFtZTEpOwoKLSAgICAgIGlmIChmICE9IGYxKQorICAgICAgaWYgKGYxICE9IGYpCiAJewog CSAgLyogVmVyaWZ5IHRoYXQgd2UgY2FuIHN0aWxsIHRhbGsgdG8gdGhlIGZyYW1lJ3MgWCB3 aW5kb3csIGFuZAogCSAgICAgbm90ZSBhbnkgcmVjZW50IGNoYW5nZSBpbiB2aXNpYmlsaXR5 LiAgKi8KQEAgLTE3NTMsNyArMTg3MSw3IEBAIG9mIHRoZW0gKHRoZSBzZWxlY3RlZCB0ZXJt aW5hbCBmcmFtZSkgaXMgYWN0dWFsbHkgZGlzcGxheWVkLgogCSAgICAgIC8qIFRvb2x0aXBz IGFuZCBjaGlsZCBmcmFtZXMgY291bnQgbmVpdGhlciBmb3IKIAkJIGludmlzaWJpbGl0eSBu b3IgZm9yIGRlbGV0aW9ucy4gICovCiAJICAgICAgJiYgIUZSQU1FX1BBUkVOVF9GUkFNRSAo ZjEpCi0JICAgICAgLyogRnJhbWVzIHdpdGggYSBub24tbmlsIGBkZWxldGUtYmVmb3JlJyBw YXJhbWV0ZXIgZG9uJ3QKKwkgICAgICAvKiBGcmFtZXMgd2l0aCBhIG5vbi1uaWwgJ2RlbGV0 ZS1iZWZvcmUnIHBhcmFtZXRlciBkb24ndAogCQkgY291bnQgZm9yIGRlbGV0aW9ucy4gICov CiAJICAgICAgJiYgKGludmlzaWJsZSB8fCBOSUxQIChnZXRfZnJhbWVfcGFyYW0gKGYxLCBR ZGVsZXRlX2JlZm9yZSkpKQogCSAgICAgIC8qIEZvciBpbnZpc2liaWxpdHkgYW5kIG5vcm1h bCBkZWxldGlvbnMsIGF0IGxlYXN0IG9uZQpAQCAtMTc3MSw1MiArMTg4OSw2NSBAQCBvZiB0 aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUpIGlzIGFjdHVhbGx5IGRpc3BsYXll ZC4KICAgcmV0dXJuIGZhbHNlOwogfQoKLS8qIE1ha2Ugc3VyZSB0aGF0IG1pbmlidWZfd2lu ZG93IGRvZXNuJ3QgcmVmZXIgdG8gRlJBTUUncyBtaW5pYnVmZmVyCi0gICB3aW5kb3cuICBQ cmVmZXJhYmx5IHVzZSB0aGUgc2VsZWN0ZWQgZnJhbWUncyBtaW5pYnVmZmVyIHdpbmRvdwot ICAgaW5zdGVhZC4gIElmIHRoZSBzZWxlY3RlZCBmcmFtZSBkb2Vzbid0IGhhdmUgb25lLCBn ZXQgc29tZSBvdGhlcgotICAgZnJhbWUncyBtaW5pYnVmZmVyIHdpbmRvdy4gIFNFTEVDVCBu b24temVybyBtZWFucyBzZWxlY3QgdGhlIG5ldwotICAgbWluaWJ1ZmZlciB3aW5kb3cuICAq LworLyoqCisgKiBzYW5pdGl6ZV9taW5pYnVmX3dpbmRvdzoKKyAqCisgKiBNYWtlIHN1cmUg dGhhdCBtaW5pYnVmX3dpbmRvdyBkb2Vzbid0IHJlZmVyIHRvIEZSQU1FJ3MgbWluaWJ1ZmZl cgorICogd2luZG93LiAgUHJlZmVyYWJseSB1c2UgdGhlIHNlbGVjdGVkIGZyYW1lJ3MgbWlu aWJ1ZmZlciB3aW5kb3cKKyAqIGluc3RlYWQuICBJZiB0aGUgc2VsZWN0ZWQgZnJhbWUgZG9l c24ndCBoYXZlIG9uZSwgZ2V0IHNvbWUgb3RoZXIKKyAqIGZyYW1lJ3MgbWluaWJ1ZmZlciB3 aW5kb3cuICBTRUxFQ1QgdHJ1ZSBtZWFucyBzZWxlY3QgdGhlIG5ldworICogbWluaWJ1Zl93 aW5kb3cuCisgKgorICogVGhpcyByb3V0aW5lIGlzIGN1cnJlbnRseSBjYWxsZWQgYnkgZGVs ZXRlX2ZyYW1lICh3aGVyZSBGUkFNRSBpcworICogdGhlIGZyYW1lIHRoYXQgc2hhbGwgYmUg ZGVsZXRlZCkgYW5kIEZtYWtlX2ZyYW1lX2ludmlzaWJsZSAod2hlcmUKKyAqIEZSQU1FIGlz IHRoZSBmcmFtZSB0aGF0IHNoYWxsIGJlY29tZSBpbnZpc2libGUpLgorICovCiBzdGF0aWMg dm9pZAotY2hlY2tfbWluaWJ1Zl93aW5kb3cgKExpc3BfT2JqZWN0IGZyYW1lLCBpbnQgc2Vs ZWN0KQorc2FuaXRpemVfbWluaWJ1Zl93aW5kb3cgKExpc3BfT2JqZWN0IGZyYW1lLCBib29s IHNlbGVjdCkKIHsKICAgc3RydWN0IGZyYW1lICpmID0gZGVjb2RlX2xpdmVfZnJhbWUgKGZy YW1lKTsKCiAgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOwoKLSAgaWYgKFdJTkRPV1AgKG1pbmli dWZfd2luZG93KSAmJiBFUSAoZi0+bWluaWJ1ZmZlcl93aW5kb3csIG1pbmlidWZfd2luZG93 KSkKKyAgaWYgKE1JTklCVUZGRVJfV0lORE9XX0xPQ0FMX1AgKGYpCisgICAgICAmJiBFUSAo bWluaWJ1Zl93aW5kb3csIE1JTklCVUZGRVJfV0lORE9XIChmKSkpCiAgICAgewotICAgICAg TGlzcF9PYmplY3QgZnJhbWVzLCB0aGlzLCB3aW5kb3cgPSBtYWtlX251bWJlciAoMCk7Cisg ICAgICBMaXNwX09iamVjdCBmcmFtZXMsIGZyYW1lMSwgd2luZG93ID0gUW5pbDsKCiAgICAg ICBpZiAoIUVRIChmcmFtZSwgc2VsZWN0ZWRfZnJhbWUpCi0JICAmJiBGUkFNRV9IQVNfTUlO SUJVRl9QIChYRlJBTUUgKHNlbGVjdGVkX2ZyYW1lKSkpCi0Jd2luZG93ID0gRlJBTUVfTUlO SUJVRl9XSU5ET1cgKFhGUkFNRSAoc2VsZWN0ZWRfZnJhbWUpKTsKKwkgICYmIE1JTklCVUZG RVJfV0lORE9XX0xPQ0FMX1AgKFhGUkFNRSAoc2VsZWN0ZWRfZnJhbWUpKSkKKwl3aW5kb3cg PSBNSU5JQlVGRkVSX1dJTkRPVyAoWEZSQU1FIChzZWxlY3RlZF9mcmFtZSkpOwogICAgICAg ZWxzZQotCUZPUl9FQUNIX0ZSQU1FIChmcmFtZXMsIHRoaXMpCisJRk9SX0VBQ0hfRlJBTUUg KGZyYW1lcywgZnJhbWUxKQogCSAgewotCSAgICBpZiAoIUVRICh0aGlzLCBmcmFtZSkgJiYg RlJBTUVfSEFTX01JTklCVUZfUCAoWEZSQU1FICh0aGlzKSkpCisJICAgIGlmICghRVEgKGZy YW1lMSwgZnJhbWUpCisJCSYmIE1JTklCVUZGRVJfV0lORE9XX0xPQ0FMX1AgKFhGUkFNRSAo ZnJhbWUxKSkpCiAJICAgICAgewotCQl3aW5kb3cgPSBGUkFNRV9NSU5JQlVGX1dJTkRPVyAo WEZSQU1FICh0aGlzKSk7CisJCXdpbmRvdyA9IE1JTklCVUZGRVJfV0lORE9XIChYRlJBTUUg KGZyYW1lMSkpOwogCQlicmVhazsKIAkgICAgICB9CiAJICB9CgogICAgICAgLyogRG9uJ3Qg YWJvcnQgaWYgbm8gd2luZG93IHdhcyBmb3VuZCAoQnVnIzE1MjQ3KS4gICovCi0gICAgICBp ZiAoV0lORE9XUCAod2luZG93KSkKKyAgICAgIGlmIChXSU5ET1dfTElWRV9QICh3aW5kb3cp KQogCXsKIAkgIC8qIFVzZSBzZXRfd2luZG93X2J1ZmZlciBpbnN0ZWFkIG9mIEZzZXRfd2lu ZG93X2J1ZmZlciAoc2VlCiAJICAgICBkaXNjdXNzaW9uIG9mIGJ1ZyMxMTk4NCwgYnVnIzEy MDI1LCBidWcjMTIwMjYpLiAgKi8KLQkgIHNldF93aW5kb3dfYnVmZmVyICh3aW5kb3csIFhX SU5ET1cgKG1pbmlidWZfd2luZG93KS0+Y29udGVudHMsIDAsIDApOworCSAgc2V0X3dpbmRv d19idWZmZXIKKwkgICAgKHdpbmRvdywgWFdJTkRPVyAobWluaWJ1Zl93aW5kb3cpLT5jb250 ZW50cywgMCwgMCk7CiAJICBtaW5pYnVmX3dpbmRvdyA9IHdpbmRvdzsKCiAJICAvKiBTRUxF Q1Qgbm9uLXplcm8gdXN1YWxseSBtZWFucyB0aGF0IEZSQU1FJ3MgbWluaWJ1ZmZlcgogCSAg ICAgd2luZG93IHdhcyBzZWxlY3RlZDsgc2VsZWN0IHRoZSBuZXcgb25lLiAgKi8KIAkgIGlm IChzZWxlY3QpCi0JICAgIEZzZWxlY3Rfd2luZG93IChtaW5pYnVmX3dpbmRvdywgUW5pbCk7 CisJICAgIEZzZWxlY3Rfd2luZG93ICh3aW5kb3csIFFuaWwpOwogCX0KKyAgICAgIGVsc2UK KwkvKiBDb2RlIG5vdyBtdXN0IGhhbmRsZSB0aGlzLiAgKi8KKwltaW5pYnVmX3dpbmRvdyA9 IFFuaWw7CiAgICAgfQogfQoKLQogLyoqCiAgKiBkZWxldGVfZnJhbWU6CiAgKgpAQCAtMTgz MSwxMiArMTk2MiwxNSBAQCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUp IGlzIGFjdHVhbGx5IGRpc3BsYXllZC4KICAgc3RydWN0IGZyYW1lICpzZjsKICAgc3RydWN0 IGtib2FyZCAqa2I7CiAgIExpc3BfT2JqZWN0IGZyYW1lcywgZnJhbWUxOwotICBpbnQgbWlu aWJ1ZmZlcl9zZWxlY3RlZCwgaXNfdG9vbHRpcF9mcmFtZTsKKyAgTGlzcF9PYmplY3QgZGVs ZXRlX2FmdGVyID0gUW5pbDsKKyAgYm9vbCB0b29sdGlwX2ZyYW1lX3AgPSBGUkFNRV9UT09M VElQX1AgKGYpOworICBib29sIG1pbmlidWZfd2luZG93X3NlbGVjdGVkX3AgPSBFUSAobWlu aWJ1Zl93aW5kb3csIHNlbGVjdGVkX3dpbmRvdyk7CiAgIGJvb2wgbm9jaGlsZCA9ICFGUkFN RV9QQVJFTlRfRlJBTUUgKGYpOworICBMaXNwX09iamVjdCBtaW5pYnVmZmVyX3dpbmRvdyA9 IE1JTklCVUZGRVJfV0lORE9XIChmKTsKCiAgIGlmICghRlJBTUVfTElWRV9QIChmKSkKICAg ICByZXR1cm4gUW5pbDsKLSAgZWxzZSBpZiAoIUVRIChmb3JjZSwgUW5vZWxpc3ApICYmICFv dGhlcl9mcmFtZXMgKGYsIGZhbHNlLCAhTklMUCAoZm9yY2UpKSkKKyAgZWxzZSBpZiAoIUVR IChmb3JjZSwgUW5vZWxpc3ApICYmICFvdGhlcl9mcmFtZXNfcCAoZiwgZmFsc2UsICFOSUxQ IChmb3JjZSkpKQogICAgIHsKICAgICAgIGlmIChOSUxQIChmb3JjZSkpCiAJZXJyb3IgKCJB dHRlbXB0IHRvIGRlbGV0ZSB0aGUgc29sZSB2aXNpYmxlIG9yIGljb25pZmllZCBmcmFtZSIp OwpAQCAtMTg0Niw0OSArMTk4MCw4MyBAQCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWlu YWwgZnJhbWUpIGlzIGFjdHVhbGx5IGRpc3BsYXllZC4KCiAgIFhTRVRGUkFNRSAoZnJhbWUs IGYpOwoKLSAgLyogU29mdGx5IGRlbGV0ZSBhbGwgZnJhbWVzIHdpdGggdGhpcyBmcmFtZSBh cyB0aGVpciBwYXJlbnQgZnJhbWUgb3IKLSAgICAgYXMgdGhlaXIgYGRlbGV0ZS1iZWZvcmUn IGZyYW1lIHBhcmFtZXRlciB2YWx1ZS4gICovCisgIC8qIERlbGV0ZSBhbGwgZnJhbWVzIHdp dGggdGhpcyBmcmFtZSBhcyB0aGVpciBwYXJlbnQgZnJhbWUgb3IgYXMKKyAgICAgdGhlaXIg YGRlbGV0ZS1iZWZvcmUnIGZyYW1lIHBhcmFtZXRlciB2YWx1ZS4KKworICAgICBUaGlzIHdp bGwgZGVsZXRlIGFueSBzdWNoIGZyYW1lIGV2ZW4gaWYgRlJBTUUgd2lsbCBub3QgYmUgZGVs ZXRlZAorICAgICBkdWUgdG8gYSBkZWxldGUgc3Vycm9nYXRlIG1pbmlidWZmZXIgZnJhbWUg ZXJyb3IgYmVsb3cuICBIb3dldmVyLAorICAgICBjaGlsZCBhbmQgZGVsZXRlLWJlZm9yZSBm cmFtZXMgb2Z0ZW4gdXNlIEZSQU1FJ3MgbWluaWJ1ZmZlcgorICAgICB3aW5kb3cgYXMgdGhl aXIgc3Vycm9nYXRlIG1pbmlidWZmZXIgd2luZG93IGFuZCB0aGVyZWZvcmUgc2hvdWxkCisg ICAgIGdldCBkZWxldGVkIGZpcnN0IHRvIGF2b2lkIHRoZSBkZWxldGUgc3Vycm9nYXRlIG1p bmlidWZmZXIgZnJhbWUKKyAgICAgZXJyb3IgYmVsb3cuICAqLwogICBGT1JfRUFDSF9GUkFN RSAoZnJhbWVzLCBmcmFtZTEpCi0gICAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoWEZSQU1F IChmcmFtZTEpKSA9PSBmCi0JLyogUHJvY2VzcyBgZGVsZXRlLWJlZm9yZScgcGFyYW1ldGVy IGlmZiBGUkFNRSBpcyBub3QgYSBjaGlsZAotCSAgIGZyYW1lLiAgVGhpcyBhdm9pZHMgdGhh dCB3ZSBlbnRlciBhbiBpbmZpbml0ZSBjaGFpbiBvZiBtaXhlZAotCSAgIGRlcGVuZGVuY2ll cy4gICovCi0JfHwgKG5vY2hpbGQKLQkgICAgJiYgRVEgKGdldF9mcmFtZV9wYXJhbSAoWEZS QU1FIChmcmFtZTEpLCBRZGVsZXRlX2JlZm9yZSksIGZyYW1lKSkpCi0gICAgICBkZWxldGVf ZnJhbWUgKGZyYW1lMSwgUW5pbCk7Ci0KLSAgLyogRG9lcyB0aGlzIGZyYW1lIGhhdmUgYSBt aW5pYnVmZmVyLCBhbmQgaXMgaXQgdGhlIHN1cnJvZ2F0ZQotICAgICBtaW5pYnVmZmVyIGZv ciBhbnkgb3RoZXIgZnJhbWU/ICAqLwotICBpZiAoRlJBTUVfSEFTX01JTklCVUZfUCAoZikp CiAgICAgewotICAgICAgRk9SX0VBQ0hfRlJBTUUgKGZyYW1lcywgZnJhbWUxKQotCXsKLQkg IExpc3BfT2JqZWN0IGZtaW5pdzsKLQotCSAgaWYgKEVRIChmcmFtZTEsIGZyYW1lKSkKLQkg ICAgY29udGludWU7CisgICAgICBzdHJ1Y3QgZnJhbWUgKmYxID0gWEZSQU1FIChmcmFtZTEp OwoKLQkgIGZtaW5pdyA9IEZSQU1FX01JTklCVUZfV0lORE9XIChYRlJBTUUgKGZyYW1lMSkp OworICAgICAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoZjEpID09IGYpCisJeworCSAgLyog SWYgZnJhbWUxIGlzIEZSQU1FJ3MgbWluaWJ1ZmZlcigtb25seSkgd2luZG93IHdlIGNhbm5v dAorCSAgICAgZGVsZXRlIGl0IHJpZ2h0IGF3YXkgYmVjYXVzZSB0aGlzIHdvdWxkIGdldCB1 cyBhIGRlbGV0ZQorCSAgICAgc3Vycm9nYXRlIG1pbmkgd2luZG93IGVycm9yLiAgU28gd2Ug KDEpIG1ha2UgZnJhbWUxIGEKKwkgICAgIHRvcC1sZXZlbCBmcmFtZSBhbmQgKDIpIG1hcmsg aXQgZm9yIGxhdGVyIGRlbGV0aW9uLiAgKi8KKwkgIGlmIChNSU5JQlVGRkVSX1dJTkRPV19M T0NBTF9QIChmMSkKKwkgICAgICAmJiBFUSAobWluaWJ1ZmZlcl93aW5kb3csIE1JTklCVUZG RVJfV0lORE9XIChmMSkpKQorCSAgICB7CisjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCisJ ICAgICAgeF9zZXRfZnJhbWVfcGFyYW1ldGVycyAoZjEsIEZjb25zIChGY29ucyAoUXBhcmVu dF9mcmFtZSwgUW5pbCksCisJCQkJCQkgUW5pbCkpOworI2VuZGlmCisJICAgICAgZGVsZXRl X2FmdGVyID0gRmNvbnMgKGZyYW1lMSwgZGVsZXRlX2FmdGVyKTsKKwkgICAgfQorCSAgLyog T3RoZXJ3aXNlIHRyeSB0byBkZWxldGUgZnJhbWUxIHBhc3NpbmcgRk9SQ0Ugb25seSBpZiBp dAorCSAgICAgZXF1YWxzIFFub2VsaXNwLiAgKi8KKwkgIGVsc2UKKwkgICAgZGVsZXRlX2Zy YW1lIChmcmFtZTEsIEVRIChmb3JjZSwgUW5vZWxpc3ApID8gUW5vZWxpc3AgOiBRbmlsKTsK Kwl9CisgICAgICAvKiBJZ25vcmUgYGRlbGV0ZS1iZWZvcmUnIHdoZW4gRlJBTUUgaXMgYSBj aGlsZCBmcmFtZSB0byBhdm9pZAorCSBlbnRlcmluZyBhbiBpbmZpbml0ZSBjaGFpbiBvZiBt aXhlZCBkZXBlbmRlbmNpZXMuICAqLworICAgICAgZWxzZSBpZiAobm9jaGlsZCAmJiBFUSAo Z2V0X2ZyYW1lX3BhcmFtIChmMSwgUWRlbGV0ZV9iZWZvcmUpLCBmcmFtZSkpCisJeworCSAg LyogSWYgZnJhbWUxIG93bnMgRlJBTUUncyBtaW5pYnVmZmVyKC1vbmx5KSB3aW5kb3cgd2Ug Y2Fubm90CisJICAgICBkZWxldGUgaXQgImJlZm9yZSIgRlJBTUUgYmVjYXVzZSB0aGlzIHdv dWxkIGdldCB1cyBhCisJICAgICBkZWxldGUgc3Vycm9nYXRlIG1pbmlidWZmZXIgd2luZG93 IGVycm9yLiAgU28gd2UgbWFyayBpdAorCSAgICAgZm9yIGxhdGVyIGRlbGV0aW9uLiAgV2hl dGhlciB0aGF0IGRlbGV0aW9uIHBhc3NlcyB0aHJvdWdoCisJICAgICB3aWxsIGRlcGVuZCBv biB3aGV0aGVyIHRoZXJlIGFyZSBzdGlsbCBvdGhlciBmcmFtZXMgdGhhdAorCSAgICAgdXNl IGZyYW1lMSdzIG1pbmlidWZmZXIgd2luZG93IGFzIHN1cnJvZ2F0ZS4gICovCisJICBpZiAo TUlOSUJVRkZFUl9XSU5ET1dfTE9DQUxfUCAoZjEpCisJICAgICAgJiYgRVEgKG1pbmlidWZm ZXJfd2luZG93LCBNSU5JQlVGRkVSX1dJTkRPVyAoZjEpKSkKKwkgICAgZGVsZXRlX2FmdGVy ID0gRmNvbnMgKGZyYW1lMSwgZGVsZXRlX2FmdGVyKTsKKwkgIGVsc2UKKwkgICAgLyogUGFz cyBGT1JDRSBvbmx5IGlmIGl0IGVxdWFscyBRbm9lbGlzcC4gICovCisJICAgIGRlbGV0ZV9m cmFtZSAoZnJhbWUxLCBFUSAoZm9yY2UsIFFub2VsaXNwKSA/IFFub2VsaXNwIDogUW5pbCk7 CisJfQorICAgIH0KCi0JICBpZiAoV0lORE9XUCAoZm1pbml3KSAmJiBFUSAoZnJhbWUsIFdJ TkRPV19GUkFNRSAoWFdJTkRPVyAoZm1pbml3KSkpKQorICAvKiBEb2VzIEZSQU1FJ3MgbWlu aWJ1ZmZlciB3aW5kb3cgc2VydmUgYXMgc3Vycm9nYXRlIG1pbmlidWZmZXIKKyAgICAgd2lu ZG93IGZvciBhbnkgb3RoZXIgZnJhbWU/ICAqLworICBpZiAoTUlOSUJVRkZFUl9XSU5ET1df TE9DQUxfUCAoZikpCisgICAgeworICAgICAgRk9SX0VBQ0hfRlJBTUUgKGZyYW1lcywgZnJh bWUxKQorCXsKKwkgIGlmICghRVEgKGZyYW1lMSwgZnJhbWUpCisJICAgICAgJiYgRVEgKE1J TklCVUZGRVJfV0lORE9XIChYRlJBTUUgKGZyYW1lMSkpLCBtaW5pYnVmZmVyX3dpbmRvdykp CiAJICAgIHsKIAkgICAgICAvKiBJZiB3ZSBNVVNUIGRlbGV0ZSB0aGlzIGZyYW1lLCBkZWxl dGUgdGhlIG90aGVyIGZpcnN0LgotCQkgQnV0IGRvIHRoaXMgb25seSBpZiBGT1JDRSBlcXVh bHMgYG5vZWxpc3AnLiAgKi8KKwkJIEJ1dCBkbyB0aGlzIG9ubHkgaWYgRk9SQ0UgZXF1YWxz ICdub2VsaXNwJy4gICovCiAJICAgICAgaWYgKEVRIChmb3JjZSwgUW5vZWxpc3ApKQogCQlk ZWxldGVfZnJhbWUgKGZyYW1lMSwgUW5vZWxpc3ApOwotCSAgICAgIGVsc2UKLQkJZXJyb3Ig KCJBdHRlbXB0IHRvIGRlbGV0ZSBhIHN1cnJvZ2F0ZSBtaW5pYnVmZmVyIGZyYW1lIik7Cisv KioqIFhYWFhYWCBSZWluc3RhdGUgdGhpcyBldmVudHVhbGx5IFhYWFhYWFhYICoqKi8KKy8q KiAJICAgICAgZWxzZSAqKi8KKy8qKiAJCWVycm9yICgiQXR0ZW1wdCB0byBkZWxldGUgYSBz dXJyb2dhdGUgbWluaWJ1ZmZlciBmcmFtZSIpOyAqKi8KIAkgICAgfQogCX0KICAgICB9Cgot ICBpc190b29sdGlwX2ZyYW1lID0gRlJBTUVfVE9PTFRJUF9QIChmKTsKLQogICAvKiBSdW4g YGRlbGV0ZS1mcmFtZS1mdW5jdGlvbnMnIHVubGVzcyBGT1JDRSBpcyBgbm9lbGlzcCcgb3IK ICAgICAgZnJhbWUgaXMgYSB0b29sdGlwLiAgRk9SQ0UgaXMgc2V0IHRvIGBub2VsaXNwJyB3 aGVuIGhhbmRsaW5nCiAgICAgIGEgZGlzY29ubmVjdCBmcm9tIHRoZSB0ZXJtaW5hbCwgc28g d2UgZG9uJ3QgZGFyZSBjYWxsIExpc3AKICAgICAgY29kZS4gICovCi0gIGlmIChOSUxQIChW cnVuX2hvb2tzKSB8fCBpc190b29sdGlwX2ZyYW1lKQorICBpZiAoTklMUCAoVnJ1bl9ob29r cykgfHwgdG9vbHRpcF9mcmFtZV9wKQogICAgIDsKICAgZWxzZSBpZiAoRVEgKGZvcmNlLCBR bm9lbGlzcCkpCiAgICAgcGVuZGluZ19mdW5jYWxscwpAQCAtMTkwNyw4ICsyMDc1LDggQEAg b2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1lKSBpcyBhY3R1YWxseSBkaXNw bGF5ZWQuCiAgIC8qIGRlbGV0ZV9mcmFtZV9mdW5jdGlvbnMgbWF5IGhhdmUgZGVsZXRlZCBh bnkgZnJhbWUsIGluY2x1ZGluZyB0aGlzCiAgICAgIG9uZS4gICovCiAgIGlmICghRlJBTUVf TElWRV9QIChmKSkKLSAgICByZXR1cm4gUW5pbDsKLSAgZWxzZSBpZiAoIUVRIChmb3JjZSwg UW5vZWxpc3ApICYmICFvdGhlcl9mcmFtZXMgKGYsIGZhbHNlLCAhTklMUCAoZm9yY2UpKSkK KyAgICBnb3RvIGRlbGV0ZV9hZnRlcjsKKyAgZWxzZSBpZiAoIUVRIChmb3JjZSwgUW5vZWxp c3ApICYmICFvdGhlcl9mcmFtZXNfcCAoZiwgZmFsc2UsICFOSUxQIChmb3JjZSkpKQogICAg IHsKICAgICAgIGlmIChOSUxQIChmb3JjZSkpCiAJZXJyb3IgKCJBdHRlbXB0IHRvIGRlbGV0 ZSB0aGUgc29sZSB2aXNpYmxlIG9yIGljb25pZmllZCBmcmFtZSIpOwpAQCAtMTkxOCwzOSAr MjA4NiwzNyBAQCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUpIGlzIGFj dHVhbGx5IGRpc3BsYXllZC4KCiAgIC8qIEF0IHRoaXMgcG9pbnQsIHdlIGFyZSBjb21taXR0 ZWQgdG8gZGVsZXRpbmcgdGhlIGZyYW1lLgogICAgICBUaGVyZSBpcyBubyBtb3JlIGNoYW5j ZSBmb3IgZXJyb3JzIHRvIHByZXZlbnQgaXQuICAqLwotICBtaW5pYnVmZmVyX3NlbGVjdGVk ID0gRVEgKG1pbmlidWZfd2luZG93LCBzZWxlY3RlZF93aW5kb3cpOwogICBzZiA9IFNFTEVD VEVEX0ZSQU1FICgpOwogICAvKiBEb24ndCBsZXQgdGhlIGZyYW1lIHJlbWFpbiBzZWxlY3Rl ZC4gICovCiAgIGlmIChmID09IHNmKQogICAgIHsKLSAgICAgIExpc3BfT2JqZWN0IHRhaWw7 CiAgICAgICBMaXNwX09iamVjdCBmcmFtZTEgVU5JTklUOyAgLyogVGhpcyBsaW5lIHdvcmtz IGFyb3VuZCBHQ0MgYnVnIDg1NTYzLiAgKi8KKwogICAgICAgZWFzc3VtZSAoQ09OU1AgKFZm cmFtZV9saXN0KSk7CgogICAgICAgLyogTG9vayBmb3IgYW5vdGhlciB2aXNpYmxlIGZyYW1l IG9uIHRoZSBzYW1lIHRlcm1pbmFsLgogCSBEbyBub3QgY2FsbCBuZXh0X2ZyYW1lIGhlcmUg YmVjYXVzZSBpdCBtYXkgbG9vcCBmb3JldmVyLgogCSBTZWUgaHR0cHM6Ly9kZWJidWdzLmdu dS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTE1MDI1LiAgKi8KLSAgICAgIEZPUl9FQUNI X0ZSQU1FICh0YWlsLCBmcmFtZTEpCisgICAgICBGT1JfRUFDSF9GUkFNRSAoZnJhbWVzLCBm cmFtZTEpCiAJewogCSAgc3RydWN0IGZyYW1lICpmMSA9IFhGUkFNRSAoZnJhbWUxKTsKCi0J ICBpZiAoIUVRIChmcmFtZSwgZnJhbWUxKQotCSAgICAgICYmICFGUkFNRV9UT09MVElQX1Ag KGYxKQorCSAgaWYgKCFFUSAoZnJhbWUxLCBmcmFtZSkKIAkgICAgICAmJiBGUkFNRV9URVJN SU5BTCAoZikgPT0gRlJBTUVfVEVSTUlOQUwgKGYxKQotCSAgICAgICYmIEZSQU1FX1ZJU0lC TEVfUCAoZjEpKQorCSAgICAgICYmICFGUkFNRV9UT09MVElQX1AgKGYxKQorCSAgICAgICYm IEZSQU1FX1ZJU0lCTEVfUCAoZjEpCisJICAgICAgJiYgTklMUCAoRm1lbXEgKGZyYW1lMSwg ZGVsZXRlX2FmdGVyKSkpCiAJICAgIGJyZWFrOwogCX0KCiAgICAgICAvKiBJZiB0aGVyZSBp cyBub25lLCBmaW5kICpzb21lKiBvdGhlciBmcmFtZS4gICovCiAgICAgICBpZiAoTklMUCAo ZnJhbWUxKSB8fCBFUSAoZnJhbWUxLCBmcmFtZSkpCiAJewotCSAgRk9SX0VBQ0hfRlJBTUUg KHRhaWwsIGZyYW1lMSkKKwkgIEZPUl9FQUNIX0ZSQU1FIChmcmFtZXMsIGZyYW1lMSkKIAkg ICAgewogCSAgICAgIHN0cnVjdCBmcmFtZSAqZjEgPSBYRlJBTUUgKGZyYW1lMSk7CgotCSAg ICAgIGlmICghRVEgKGZyYW1lLCBmcmFtZTEpCi0JCSAgJiYgRlJBTUVfTElWRV9QIChmMSkK LQkJICAmJiAhRlJBTUVfVE9PTFRJUF9QIChmMSkpCisJICAgICAgaWYgKCFFUSAoZnJhbWUx LCBmcmFtZSkgJiYgIUZSQU1FX1RPT0xUSVBfUCAoZjEpKQogCQl7CiAJCSAgaWYgKEZSQU1F X1RFUk1DQVBfUCAoZjEpIHx8IEZSQU1FX01TRE9TX1AgKGYxKSkKIAkJICAgIHsKQEAgLTE5 NTksMTAgKzIxMjUsMTIgQEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1l KSBpcyBhY3R1YWxseSBkaXNwbGF5ZWQuCiAJCSAgICAgIGlmICghRVEgKHRvcF9mcmFtZSwg ZnJhbWUpKQogCQkJZnJhbWUxID0gdG9wX2ZyYW1lOwogCQkgICAgfQotCQkgIGJyZWFrOwor CisJCWJyZWFrOwogCQl9CiAJICAgIH0KIAl9CisKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAg ICAgICBlbHNlCiAJLyogVW5kZXIgTlMsIHRoZXJlIGlzIG5vIHN5c3RlbSBtZWNoYW5pc20g Zm9yIGNob29zaW5nIGEgbmV3CkBAIC0xOTc4LDExICsyMTQ2LDEyIEBAIG9mIHRoZW0gKHRo ZSBzZWxlY3RlZCB0ZXJtaW5hbCBmcmFtZSkgaXMgYWN0dWFsbHkgZGlzcGxheWVkLgogICAg IH0KCiAgIC8qIERvbid0IGFsbG93IG1pbmlidWZfd2luZG93IHRvIHJlbWFpbiBvbiBhIGRl bGV0ZWQgZnJhbWUuICAqLwotICBjaGVja19taW5pYnVmX3dpbmRvdyAoZnJhbWUsIG1pbmli dWZmZXJfc2VsZWN0ZWQpOworICBzYW5pdGl6ZV9taW5pYnVmX3dpbmRvdyAoZnJhbWUsIG1p bmlidWZfd2luZG93X3NlbGVjdGVkX3ApOwoKLSAgLyogRG9uJ3QgbGV0IGVjaG9fYXJlYV93 aW5kb3cgdG8gcmVtYWluIG9uIGEgZGVsZXRlZCBmcmFtZS4gICovCi0gIGlmIChFUSAoZi0+ bWluaWJ1ZmZlcl93aW5kb3csIGVjaG9fYXJlYV93aW5kb3cpKQotICAgIGVjaG9fYXJlYV93 aW5kb3cgPSBzZi0+bWluaWJ1ZmZlcl93aW5kb3c7CisgIC8qIERvbid0IGxldCBlY2hvX2Fy ZWFfd2luZG93IHRvIHJlbWFpbiBvbiBhIGRlbGV0ZWQgZnJhbWUgKHdpdGgKKyAgICAgbWlu aWJ1Zl93aW5kb3cgaG9wZWZ1bGx5IHNhbml0aXplZCkuICAqLworICBpZiAoRVEgKGVjaG9f YXJlYV93aW5kb3csIG1pbmlidWZmZXJfd2luZG93KSkKKyAgICBlY2hvX2FyZWFfd2luZG93 ID0gbWluaWJ1Zl93aW5kb3c7CgogICAvKiBDbGVhciBhbnkgWCBzZWxlY3Rpb25zIGZvciB0 aGlzIGZyYW1lLiAgKi8KICNpZmRlZiBIQVZFX1hfV0lORE9XUwpAQCAtMjA4Miw3ICsyMjUx LDcgQEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1lKSBpcyBhY3R1YWxs eSBkaXNwbGF5ZWQuCiAJewogCSAgc3RydWN0IGZyYW1lICpmMSA9IFhGUkFNRSAoZnJhbWUx KTsKCi0JICBpZiAoIUZSQU1FX01JTklCVUZfT05MWV9QIChmMSkpCisJICBpZiAoIU1JTklC VUZGRVJfV0lORE9XX09OTFlfUCAoZjEpKQogCSAgICB7CiAJICAgICAgbGFzdF9ub25taW5p YnVmX2ZyYW1lID0gZjE7CiAJICAgICAgYnJlYWs7CkBAIC0yMDk4LDcgKzIyNjcsNyBAQCBv ZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUpIGlzIGFjdHVhbGx5IGRpc3Bs YXllZC4KICAgICAgIExpc3BfT2JqZWN0IGZyYW1lX29uX3NhbWVfa2JvYXJkID0gUW5pbDsK CiAgICAgICBGT1JfRUFDSF9GUkFNRSAoZnJhbWVzLCBmcmFtZTEpCi0JaWYgKGtiID09IEZS QU1FX0tCT0FSRCAoWEZSQU1FIChmcmFtZTEpKSkKKwlpZiAoRlJBTUVfS0JPQVJEIChYRlJB TUUgKGZyYW1lMSkpID09IGtiKQogCSAgZnJhbWVfb25fc2FtZV9rYm9hcmQgPSBmcmFtZTE7 CgogICAgICAgaWYgKE5JTFAgKGZyYW1lX29uX3NhbWVfa2JvYXJkKSkKQEAgLTIxMTEsNDEg KzIyODAsNDUgQEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRlcm1pbmFsIGZyYW1lKSBpcyBh Y3R1YWxseSBkaXNwbGF5ZWQuCiAgICAgIGZyYW1lcyB3aXRoIG90aGVyIHdpbmRvd3MuICAq LwogICBpZiAoa2IgIT0gTlVMTCAmJiBFUSAoZnJhbWUsIEtWQVIgKGtiLCBWZGVmYXVsdF9t aW5pYnVmZmVyX2ZyYW1lKSkpCiAgICAgewotICAgICAgLyogVGhlIGxhc3QgZnJhbWUgd2Ug c2F3IHdpdGggYSBtaW5pYnVmZmVyLCBtaW5pYnVmZmVyLW9ubHkgb3Igbm90LiAgKi8KLSAg ICAgIExpc3BfT2JqZWN0IGZyYW1lX3dpdGhfbWluaWJ1ZiA9IFFuaWw7Ci0gICAgICAvKiBT b21lIGZyYW1lIHdlIGZvdW5kIG9uIHRoZSBzYW1lIGtib2FyZCwgb3IgbmlsIGlmIHRoZXJl IGFyZSBub25lLiAgKi8KKyAgICAgIC8qIFRoZSBsYXN0IGZyYW1lIHdlIHNhdyB3aXRoIGEg bWluaWJ1ZmZlciB3aW5kb3csCisJIG1pbmlidWZmZXItb25seSBvciBub3QuICAqLworICAg ICAgTGlzcF9PYmplY3QgZnJhbWVfd2l0aF9taW5pYnVmZmVyX3dpbmRvdyA9IFFuaWw7Cisg ICAgICAvKiBTb21lIGZyYW1lIHdlIGZvdW5kIG9uIHRoZSBzYW1lIGtib2FyZCwgb3Igbmls IGlmIHRoZXJlIGFyZQorCSBub25lLiAgKi8KICAgICAgIExpc3BfT2JqZWN0IGZyYW1lX29u X3NhbWVfa2JvYXJkID0gUW5pbDsKCiAgICAgICBGT1JfRUFDSF9GUkFNRSAoZnJhbWVzLCBm cmFtZTEpCiAJewogCSAgc3RydWN0IGZyYW1lICpmMSA9IFhGUkFNRSAoZnJhbWUxKTsKCi0J ICAvKiBDb25zaWRlciBvbmx5IGZyYW1lcyBvbiB0aGUgc2FtZSBrYm9hcmQKLQkgICAgIGFu ZCBvbmx5IHRob3NlIHdpdGggbWluaWJ1ZmZlcnMuICAqLwotCSAgaWYgKGtiID09IEZSQU1F X0tCT0FSRCAoZjEpCi0JICAgICAgJiYgRlJBTUVfSEFTX01JTklCVUZfUCAoZjEpKQorCSAg aWYgKEZSQU1FX0tCT0FSRCAoZjEpID09IGtiKQogCSAgICB7Ci0JICAgICAgZnJhbWVfd2l0 aF9taW5pYnVmID0gZnJhbWUxOwotCSAgICAgIGlmIChGUkFNRV9NSU5JQlVGX09OTFlfUCAo ZjEpKQotCQlicmVhazsKKwkgICAgICAvKiBOb3RlOiBQcmUtMjcgY29kZSBkaWQgbm90IGNo b29zZSBtaW5pYnVmZmVyLXNlcGFyYXRlCisJCSBmcmFtZXMgaGVyZSAoZm9yIHdoYXRldmVy IHJlYXNvbikuICBXZSBkbyBub3cuICAqLworCSAgICAgIGZyYW1lX29uX3NhbWVfa2JvYXJk ID0gZnJhbWUxOworCSAgICAgIGlmIChNSU5JQlVGRkVSX1dJTkRPV19MT0NBTF9QIChmMSkp CisJCXsKKwkJICBmcmFtZV93aXRoX21pbmlidWZmZXJfd2luZG93ID0gZnJhbWUxOworCQkg IGlmIChNSU5JQlVGRkVSX1dJTkRPV19PTkxZX1AgKGYxKSkKKwkJICAgIC8qIFByZWZlciBt aW5pYnVmZmVyLW9ubHkgZnJhbWVzLiAgKi8KKwkJICAgIGJyZWFrOworCQl9CiAJICAgIH0K LQotCSAgaWYgKGtiID09IEZSQU1FX0tCT0FSRCAoZjEpKQotCSAgICBmcmFtZV9vbl9zYW1l X2tib2FyZCA9IGZyYW1lMTsKIAl9CgogICAgICAgaWYgKCFOSUxQIChmcmFtZV9vbl9zYW1l X2tib2FyZCkpCiAJewotCSAgLyogV2Uga25vdyB0aGF0IHRoZXJlIG11c3QgYmUgc29tZSBm cmFtZSB3aXRoIGEgbWluaWJ1ZmZlciBvdXQKLQkgICAgIHRoZXJlLiAgSWYgdGhpcyB3ZXJl IG5vdCB0cnVlLCBhbGwgb2YgdGhlIGZyYW1lcyBwcmVzZW50Ci0JICAgICB3b3VsZCBoYXZl IHRvIGJlIG1pbmlidWZmZXJsZXNzLCB3aGljaCBpbXBsaWVzIHRoYXQgYXQgc29tZQotCSAg ICAgcG9pbnQgdGhlaXIgbWluaWJ1ZmZlciBmcmFtZXMgbXVzdCBoYXZlIGJlZW4gZGVsZXRl ZCwgYnV0Ci0JICAgICB0aGF0IGlzIHByb2hpYml0ZWQgYXQgdGhlIHRvcDsgeW91IGNhbid0 IGRlbGV0ZSBzdXJyb2dhdGUKLQkgICAgIG1pbmlidWZmZXIgZnJhbWVzLiAgKi8KLQkgIGlm IChOSUxQIChmcmFtZV93aXRoX21pbmlidWYpKQotCSAgICBlbWFjc19hYm9ydCAoKTsKLQot CSAga3NldF9kZWZhdWx0X21pbmlidWZmZXJfZnJhbWUgKGtiLCBmcmFtZV93aXRoX21pbmli dWYpOworCSAgLyogV2Uga25vdyB0aGF0IHRoZXJlIG11c3QgYmUgc29tZSBmcmFtZSB3aXRo IGEgbWluaWJ1ZmZlcgorCSAgICAgb3V0IHRoZXJlLiAgSWYgdGhpcyB3ZXJlIG5vdCB0cnVl LCBhbGwgZnJhbWVzIG9uIHRoaXMKKwkgICAgIGtleWJvYXJkIHdvdWxkIGhhdmUgdG8gYmUg bWluaWJ1ZmZlcmxlc3MsIHdoaWNoIGltcGxpZXMKKwkgICAgIHRoYXQgYXQgc29tZSBwb2lu dCB0aGVpciBtaW5pYnVmZmVyIGZyYW1lcyBtdXN0IGhhdmUgYmVlbgorCSAgICAgZGVsZXRl ZCwgYnV0IHRoYXQgaXMgcHJvaGliaXRlZCBhdCB0aGUgdG9wOyB5b3UgY2FuJ3QKKwkgICAg IGRlbGV0ZSBzdXJyb2dhdGUgbWluaWJ1ZmZlciBmcmFtZXMuICAqLworLyoqKiBYWFhYWFgg RG8gbm90IHJlaW5zdGF0ZSB0aGlzIFhYWFhYWFhYWFhYICoqKi8KKy8qKiAJICBpZiAoTklM UCAoZnJhbWVfd2l0aF9taW5pYnVmZmVyX3dpbmRvdykpICoqLworLyoqIAkgICAgZW1hY3Nf YWJvcnQgKCk7ICoqLworCisJICBrc2V0X2RlZmF1bHRfbWluaWJ1ZmZlcl9mcmFtZSAoa2Is IGZyYW1lX3dpdGhfbWluaWJ1ZmZlcl93aW5kb3cpOwogCX0KICAgICAgIGVsc2UKIAkvKiBO byBmcmFtZXMgbGVmdCBvbiB0aGlzIGtib2FyZC0tc2F5IG5vIG1pbmlidWZmZXIgZWl0aGVy LiAgKi8KQEAgLTIxNTMsMTEgKzIzMjYsMTggQEAgb2YgdGhlbSAodGhlIHNlbGVjdGVkIHRl cm1pbmFsIGZyYW1lKSBpcyBhY3R1YWxseSBkaXNwbGF5ZWQuCiAgICAgfQoKICAgLyogQ2F1 c2UgZnJhbWUgdGl0bGVzIHRvIHVwZGF0ZS0tbmVjZXNzYXJ5IGlmIHdlIG5vdyBoYXZlIGp1 c3Qgb25lIGZyYW1lLiAgKi8KLSAgaWYgKCFpc190b29sdGlwX2ZyYW1lKQorICBpZiAoIXRv b2x0aXBfZnJhbWVfcCkKICAgICB1cGRhdGVfbW9kZV9saW5lcyA9IDE1OwoKKyBkZWxldGVf YWZ0ZXI6CisgIC8qIERlYWwgd2l0aCBmcmFtZXMgdGhhdCB3ZSBjb3VsZG4ndCBkZWxldGUg ZWFybGllciB1c3VhbGx5IGJlY2F1c2UKKyAgICAgRlJBTUUncyBtaW5pYnVmZmVyIHdpbmRv dyB3YXMgb24gdGhlbS4gIEVhY2ggb2YgdGhlIGZvbGxvd2luZworICAgICBjYWxscyBtYXkg ZmFpbCBhbmQgaXQncyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IGlmIGl0IGRvZXMuICAq LworICBmb3IgKDsgQ09OU1AgKGRlbGV0ZV9hZnRlcik7IGRlbGV0ZV9hZnRlciA9IFhDRFIg KGRlbGV0ZV9hZnRlcikpCisgICAgZGVsZXRlX2ZyYW1lIChYQ0FSIChkZWxldGVfYWZ0ZXIp LCBFUSAoZm9yY2UsIFFub2VsaXNwKSA/IFFub2VsaXNwIDogUW5pbCk7CisKICAgLyogTm93 IHJ1biB0aGUgcG9zdC1kZWxldGlvbiBob29rcy4gICovCi0gIGlmIChOSUxQIChWcnVuX2hv b2tzKSB8fCBpc190b29sdGlwX2ZyYW1lKQorICBpZiAoTklMUCAoVnJ1bl9ob29rcykgfHwg dG9vbHRpcF9mcmFtZV9wKQogICAgIDsKICAgZWxzZSBpZiAoRVEgKGZvcmNlLCBRbm9lbGlz cCkpCiAgICAgcGVuZGluZ19mdW5jYWxscwpAQCAtMjI4MCw4ICsyNDYwLDYgQEAgZW51bSBp bnRlcm5hbF9ib3JkZXJfcGFydAogfQogI2VuZGlmCgotLyogUmV0dXJuIG1vdXNlIHBvc2l0 aW9uIGluIGNoYXJhY3RlciBjZWxsIHVuaXRzLiAgKi8KLQogREVGVU4gKCJtb3VzZS1wb3Np dGlvbiIsIEZtb3VzZV9wb3NpdGlvbiwgU21vdXNlX3Bvc2l0aW9uLCAwLCAwLCAwLAogICAg ICAgIGRvYzogLyogUmV0dXJuIGEgbGlzdCAoRlJBTUUgWCAuIFkpIGdpdmluZyB0aGUgY3Vy cmVudCBtb3VzZSBmcmFtZSBhbmQgcG9zaXRpb24uCiBUaGUgcG9zaXRpb24gaXMgZ2l2ZW4g aW4gY2Fub25pY2FsIGNoYXJhY3RlciBjZWxscywgd2hlcmUgKDAsIDApIGlzIHRoZQpAQCAt MjQ5Nyw2ICsyNjc1LDggQEAgZW51bSBpbnRlcm5hbF9ib3JkZXJfcGFydAogewogICBzdHJ1 Y3QgZnJhbWUgKmYgPSBkZWNvZGVfbGl2ZV9mcmFtZSAoZnJhbWUpOwoKKyAgWFNFVEZSQU1F IChmcmFtZSwgZik7CisKICAgLyogSSB0aGluayB0aGlzIHNob3VsZCBiZSBkb25lIHdpdGgg YSBob29rLiAgKi8KICNpZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KICAgaWYgKEZSQU1FX1dJ TkRPV19QIChmKSkKQEAgLTI1MDgsNyArMjY4OCw2IEBAIGVudW0gaW50ZXJuYWxfYm9yZGVy X3BhcnQKICAgLyogTWFrZSBtZW51IGJhciB1cGRhdGUgZm9yIHRoZSBCdWZmZXJzIGFuZCBG cmFtZXMgbWVudXMuICAqLwogICAvKiB3aW5kb3dzX29yX2J1ZmZlcnNfY2hhbmdlZCA9IDE1 OyBGSVhNRTogV2h5PyAgKi8KCi0gIFhTRVRGUkFNRSAoZnJhbWUsIGYpOwogICByZXR1cm4g ZnJhbWU7CiB9CgpAQCAtMjU0NywxMSArMjcyNiwxNSBAQCBlbnVtIGludGVybmFsX2JvcmRl cl9wYXJ0CiB7CiAgIHN0cnVjdCBmcmFtZSAqZiA9IGRlY29kZV9saXZlX2ZyYW1lIChmcmFt ZSk7CgotICBpZiAoTklMUCAoZm9yY2UpICYmICFvdGhlcl9mcmFtZXMgKGYsIHRydWUsIGZh bHNlKSkKKyAgWFNFVEZSQU1FIChmcmFtZSwgZik7CisKKyAgaWYgKE5JTFAgKGZvcmNlKSAm JiAhb3RoZXJfZnJhbWVzX3AgKGYsIHRydWUsIGZhbHNlKSkKICAgICBlcnJvciAoIkF0dGVt cHQgdG8gbWFrZSBpbnZpc2libGUgdGhlIHNvbGUgdmlzaWJsZSBvciBpY29uaWZpZWQgZnJh bWUiKTsKCi0gIC8qIERvbid0IGFsbG93IG1pbmlidWZfd2luZG93IHRvIHJlbWFpbiBvbiBh biBpbnZpc2libGUgZnJhbWUuICAqLwotICBjaGVja19taW5pYnVmX3dpbmRvdyAoZnJhbWUs IEVRIChtaW5pYnVmX3dpbmRvdywgc2VsZWN0ZWRfd2luZG93KSk7CisgIC8qIERvbid0IGFs bG93IG1pbmlidWZfd2luZG93IHRvIHJlbWFpbiBvbiBhbiBpbnZpc2libGUgZnJhbWUuICBC dXQKKyAgICBpZiB0aGlzIGlzIHRoZSBvbmx5IGZyYW1lIHdpdGggYSBtaW5pYnVmZmVyIHRo ZXJlIHdvbid0IGJlIGFub3RoZXIKKyAgICBjaG9pY2UuICAqLworICBzYW5pdGl6ZV9taW5p YnVmX3dpbmRvdyAoZnJhbWUsIEVRIChtaW5pYnVmX3dpbmRvdywgc2VsZWN0ZWRfd2luZG93 KSk7CgogICAvKiBJIHRoaW5rIHRoaXMgc2hvdWxkIGJlIGRvbmUgd2l0aCBhIGhvb2suICAq LwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQpAQCAtMjU3NSw2ICsyNzU4LDkgQEAgZW51 bSBpbnRlcm5hbF9ib3JkZXJfcGFydAogICAoTGlzcF9PYmplY3QgZnJhbWUpCiB7CiAgIHN0 cnVjdCBmcmFtZSAqZiA9IGRlY29kZV9saXZlX2ZyYW1lIChmcmFtZSk7CisKKyAgWFNFVEZS QU1FIChmcmFtZSwgZik7CisKICNpZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KICAgTGlzcF9P YmplY3QgcGFyZW50ID0gZi0+cGFyZW50X2ZyYW1lOwoKQEAgLTI1OTgsOCArMjc4NCwxMCBA QCBlbnVtIGludGVybmFsX2JvcmRlcl9wYXJ0CiAgICAgfQogI2VuZGlmCS8qIEhBVkVfV0lO RE9XX1NZU1RFTSAqLwoKLSAgLyogRG9uJ3QgYWxsb3cgbWluaWJ1Zl93aW5kb3cgdG8gcmVt YWluIG9uIGFuIGljb25pZmllZCBmcmFtZS4gICovCi0gIGNoZWNrX21pbmlidWZfd2luZG93 IChmcmFtZSwgRVEgKG1pbmlidWZfd2luZG93LCBzZWxlY3RlZF93aW5kb3cpKTsKKyAgLyog RG9uJ3QgYWxsb3cgbWluaWJ1Zl93aW5kb3cgdG8gcmVtYWluIG9uIGFuIGljb25pZmllZCBm cmFtZS4gIEJ1dAorICAgICB3aHkgZG8gdGhpbmdzIGRpZmZlcmVudGx5IGZyb20gaWNvbmlm eWluZyBhIGZyYW1lIGZyb20gdGhlIHRpdGxlCisgICAgIGJhcj8gIFNvIGxldCdzIGV4cGVy aW1lbnRhbGx5IGxlYXZlIGl0IG9uIGFuIGljb25pZmllZCBmcmFtZS4gICovCisvKiogICBz YW5pdGl6ZV9taW5pYnVmX3dpbmRvdyAoZnJhbWUsIEVRIChtaW5pYnVmX3dpbmRvdywgc2Vs ZWN0ZWRfd2luZG93KSk7ICoqLwoKICAgLyogSSB0aGluayB0aGlzIHNob3VsZCBiZSBkb25l IHdpdGggYSBob29rLiAgKi8KICAgaWYgKEZSQU1FX1dJTkRPV19QIChmKSkKQEAgLTI2NDgs NyArMjgzNiw2IEBAIGVudW0gaW50ZXJuYWxfYm9yZGVyX3BhcnQKICAgcmV0dXJuIHZhbHVl OwogfQoKLQogREVGVU4gKCJyYWlzZS1mcmFtZSIsIEZyYWlzZV9mcmFtZSwgU3JhaXNlX2Zy YW1lLCAwLCAxLCAiIiwKICAgICAgICBkb2M6IC8qIEJyaW5nIEZSQU1FIHRvIHRoZSBmcm9u dCwgc28gaXQgb2NjbHVkZXMgYW55IGZyYW1lcyBpdCBvdmVybGFwcy4KIElmIEZSQU1FIGlz IGludmlzaWJsZSBvciBpY29uaWZpZWQsIG1ha2UgaXQgdmlzaWJsZS4KQEAgLTI2ODksNyAr Mjg3Niw2IEBAIGVudW0gaW50ZXJuYWxfYm9yZGVyX3BhcnQKCiAgIHJldHVybiBRbmlsOwog fQotCiAMCiBERUZVTiAoInJlZGlyZWN0LWZyYW1lLWZvY3VzIiwgRnJlZGlyZWN0X2ZyYW1l X2ZvY3VzLCBTcmVkaXJlY3RfZnJhbWVfZm9jdXMsCiAgICAgICAgMSwgMiwgMCwKQEAgLTI3 MzQsNyArMjkyMCw2IEBAIGVudW0gaW50ZXJuYWxfYm9yZGVyX3BhcnQKICAgcmV0dXJuIFFu aWw7CiB9CgotCiBERUZVTiAoImZyYW1lLWZvY3VzIiwgRmZyYW1lX2ZvY3VzLCBTZnJhbWVf Zm9jdXMsIDAsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGZyYW1lIHRvIHdo aWNoIEZSQU1FJ3Mga2V5c3Ryb2tlcyBhcmUgY3VycmVudGx5IGJlaW5nIHNlbnQuCiBJZiBG UkFNRSBpcyBvbWl0dGVkIG9yIG5pbCwgdGhlIHNlbGVjdGVkIGZyYW1lIGlzIHVzZWQuCkBA IC0yNzc0LDEyICsyOTU5LDEyIEBAIGVudW0gaW50ZXJuYWxfYm9yZGVyX3BhcnQKICAgKExp c3BfT2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBtYWRlKQogewogICBzdHJ1Y3QgZnJhbWUg KmYgPSBkZWNvZGVfbGl2ZV9mcmFtZSAoZnJhbWUpOworCiAgIGYtPmFmdGVyX21ha2VfZnJh bWUgPSAhTklMUCAobWFkZSk7CiAgIGYtPmluaGliaXRfaG9yaXpvbnRhbF9yZXNpemUgPSBm YWxzZTsKICAgZi0+aW5oaWJpdF92ZXJ0aWNhbF9yZXNpemUgPSBmYWxzZTsKICAgcmV0dXJu IG1hZGU7CiB9Ci0KIAwKIC8qIERpc2NhcmQgQlVGRkVSIGZyb20gdGhlIGJ1ZmZlci1saXN0 IGFuZCBidXJpZWQtYnVmZmVyLWxpc3Qgb2YgZWFjaCBmcmFtZS4gICovCgpAQCAtMjg2OSwy MyArMzA1NCwyNyBAQCBlbnVtIGludGVybmFsX2JvcmRlcl9wYXJ0CgogICBpZiAoRVEgKHBy b3AsIFFtaW5pYnVmZmVyKSkKICAgICB7Ci0gICAgICBpZiAoV0lORE9XUCAodmFsKSkKKyAg ICAgIGlmIChXSU5ET1dfTElWRV9QICh2YWwpKQogCXsKLQkgIGlmICghTUlOSV9XSU5ET1df UCAoWFdJTkRPVyAodmFsKSkpCisJICBpZiAoIU1JTklCVUZGRVJfV0lORE9XX1AgKFhXSU5E T1cgKHZhbCkpKQogCSAgICBlcnJvciAoIlRoZSBgbWluaWJ1ZmZlcicgcGFyYW1ldGVyIGRv ZXMgbm90IHNwZWNpZnkgYSB2YWxpZCBtaW5pYnVmZmVyIHdpbmRvdyIpOwotCSAgZWxzZSBp ZiAoRlJBTUVfTUlOSUJVRl9PTkxZX1AgKGYpKQorCSAgZWxzZSBpZiAoTUlOSUJVRkZFUl9X SU5ET1dfT05MWV9QIChmKSkKIAkgICAgewotCSAgICAgIGlmIChFUSAodmFsLCBGUkFNRV9N SU5JQlVGX1dJTkRPVyAoZikpKQorCSAgICAgIGlmIChFUSAodmFsLCBNSU5JQlVGRkVSX1dJ TkRPVyAoZikpKQogCQl2YWwgPSBRb25seTsKIAkgICAgICBlbHNlCiAJCWVycm9yICgiQ2Fu J3QgY2hhbmdlIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBvZiBhIG1pbmlidWZmZXItb25seSBm cmFtZSIpOwogCSAgICB9Ci0JICBlbHNlIGlmIChGUkFNRV9IQVNfTUlOSUJVRl9QIChmKSkK KwkgIGVsc2UgaWYgKE1JTklCVUZGRVJfV0lORE9XX0xPQ0FMX1AgKGYpKQogCSAgICB7Ci0J ICAgICAgaWYgKEVRICh2YWwsIEZSQU1FX01JTklCVUZfV0lORE9XIChmKSkpCisJICAgICAg aWYgKEVRICh2YWwsIE1JTklCVUZGRVJfV0lORE9XIChmKSkpCiAJCXZhbCA9IFF0OwogCSAg ICAgIGVsc2UKLQkJZXJyb3IgKCJDYW4ndCBjaGFuZ2UgdGhlIG1pbmlidWZmZXIgd2luZG93 IG9mIGEgZnJhbWUgd2l0aCBpdHMgb3duIG1pbmlidWZmZXIiKTsKKwkJLyogV2UgbXVzdCBu b3QgYWxsb3cgYSBmcmFtZSB3aXRoIGl0cyBvd24gbWluaWJ1ZmZlcgorCQkgICB3aW5kb3cg dXNlIGFub3RoZXIgZnJhbWUncyBtaW5pYnVmZmVyIHdpbmRvdy4gIFRoaXMKKwkJICAgY291 bGQgbGVhZCB0byBjaXJjdWxhciBkZXBlbmRlbmNpZXMgd2hpY2ggY2Fubm90IGJlCisJCSAg IHJlc29sdmVkIHdoZW4gZGVsZXRpbmcgb25lIG9mIHRoZXNlIGZyYW1lcy4gICovCisJCWVy cm9yICgiQ2FuJ3QgY2hhbmdlIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBvZiBhIGZyYW1lIHdp dGggaXRzIG93biBtaW5pYnVmZmVyIHdpbmRvdyIpOwogCSAgICB9CiAJICBlbHNlCiAJICAg IC8qIFN0b3JlIHRoZSBjaG9zZW4gbWluaWJ1ZmZlciB3aW5kb3cuICAqLwpAQCAtMjg5Nywx MiArMzA4NiwxMiBAQCBlbnVtIGludGVybmFsX2JvcmRlcl9wYXJ0CgogCSAgaWYgKCFOSUxQ IChvbGRfdmFsKSkKIAkgICAgewotCSAgICAgIGlmIChXSU5ET1dQIChvbGRfdmFsKSAmJiBO SUxQICh2YWwpKQorCSAgICAgIGlmIChXSU5ET1dfTElWRV9QIChvbGRfdmFsKSAmJiBOSUxQ ICh2YWwpKQogCQkvKiBEb24ndCBjaGFuZ2UgdGhlIHZhbHVlIGZvciBhIG1pbmlidWZmZXIt bGVzcyBmcmFtZSBpZgogCQkgICBvbmx5IG5pbCB3YXMgc3BlY2lmaWVkIGFzIG5ldyB2YWx1 ZS4gICovCiAJCXZhbCA9IG9sZF92YWw7CiAJICAgICAgZWxzZSBpZiAoIUVRIChvbGRfdmFs LCB2YWwpKQotCQllcnJvciAoIkNhbid0IGNoYW5nZSB0aGUgYG1pbmlidWZmZXInIHBhcmFt ZXRlciBvZiB0aGlzIGZyYW1lIik7CisJCWVycm9yICgiQ2FuJ3QgY2hhbmdlIHRoZSAnbWlu aWJ1ZmZlcicgcGFyYW1ldGVyIG9mIHRoaXMgZnJhbWUiKTsKIAkgICAgfQogCX0KICAgICB9 CkBAIC00NjMxLDYgKzQ4MjAsMTAgQEAgZW51bSBmcmFtZV9mbG9hdF90eXBlCgogICAgICAg U0VUX0ZSQU1FX0dBUkJBR0VEIChmKTsKICAgICB9CisgIGVsc2UKKyAgICAvKiBXaGVuIGNh bGxlZCBmcm9tICdmcmFtZS1ub3RpY2UtdXNlci1zZXR0aW5ncycgQVJHIGNhbiBiZQorICAg ICAgIHplcm8uICBNYWtlIHN1cmUgdGhlIGRlZmF1bHQgaGVpZ2h0IGlzIHNldCBpbiB0aGF0 IGNhc2UuICAqLworICAgIHhfc2V0X3Njcm9sbF9iYXJfZGVmYXVsdF9oZWlnaHQgKGYpOwoK ICAgWFdJTkRPVyAoRlJBTUVfU0VMRUNURURfV0lORE9XIChmKSktPmN1cnNvci52cG9zID0g MDsKICAgWFdJTkRPVyAoRlJBTUVfU0VMRUNURURfV0lORE9XIChmKSktPmN1cnNvci55ID0g MDsKQEAgLTU2MTgsNiArNTgxMSw5IEBAIG9yIGEgbGlzdCAoLSBOKSBtZWFuaW5nIC1OIHBp eGVscyByZWxhdGl2ZSB0byBib3R0b20vcmlnaHQgY29ybmVyLgogICBERUZTWU0gKFFoZWln aHQsICJoZWlnaHQiKTsKICAgREVGU1lNIChRaWNvbiwgImljb24iKTsKICAgREVGU1lNIChR bWluaWJ1ZmZlciwgIm1pbmlidWZmZXIiKTsKKyAgREVGU1lNIChRZWNob19hcmVhLCAiZWNo by1hcmVhIik7CisgIERFRlNZTSAoUWxvb3NlLCAibG9vc2UiKTsKKyAgREVGU1lNIChRY2hp bGQsICJjaGlsZCIpOwogICBERUZTWU0gKFF1bmRlY29yYXRlZCwgInVuZGVjb3JhdGVkIik7 CiAgIERFRlNZTSAoUW5vX3NwZWNpYWxfZ2x5cGhzLCAibm8tc3BlY2lhbC1nbHlwaHMiKTsK ICAgREVGU1lNIChRcGFyZW50X2ZyYW1lLCAicGFyZW50LWZyYW1lIik7CkBAIC01Nzc1LDYg KzU5NzEsNyBAQCBvciBhIGxpc3QgKC0gTikgbWVhbmluZyAtTiBwaXhlbHMgcmVsYXRpdmUg dG8gYm90dG9tL3JpZ2h0IGNvcm5lci4KICAgREVGU1lNIChRdG9wX29ubHksICJ0b3Atb25s eSIpOwogICBERUZTWU0gKFFpY29uaWZ5X3RvcF9sZXZlbCwgImljb25pZnktdG9wLWxldmVs Iik7CiAgIERFRlNZTSAoUW1ha2VfaW52aXNpYmxlLCAibWFrZS1pbnZpc2libGUiKTsKKyAg REVGU1lNIChRbWFrZV9pbml0aWFsX21pbmlidWZmZXJfZnJhbWUsICJtYWtlLWluaXRpYWwt bWluaWJ1ZmZlci1mcmFtZSIpOwoKICAgewogICAgIGludCBpOwpAQCAtNjEwMyw2ICs2MzAw LDcgQEAgVGhpcyB2YXJpYWJsZSBpcyBlZmZlY3RpdmUgb25seSB3aXRoIHRoZSBYIHRvb2xr aXQgKGFuZCB0aGVyZSBvbmx5IHdoZW4KICAgZGVmc3ViciAoJlNuZXh0X2ZyYW1lKTsKICAg ZGVmc3ViciAoJlNwcmV2aW91c19mcmFtZSk7CiAgIGRlZnN1YnIgKCZTbGFzdF9ub25taW5p YnVmX2ZyYW1lKTsKKyAgZGVmc3ViciAoJlNtaW5pYnVmZmVyX3dpbmRvd190eXBlKTsKICAg ZGVmc3ViciAoJlNkZWxldGVfZnJhbWUpOwogICBkZWZzdWJyICgmU21vdXNlX3Bvc2l0aW9u KTsKICAgZGVmc3ViciAoJlNtb3VzZV9waXhlbF9wb3NpdGlvbik7CmRpZmYgLS1naXQgYS9z cmMvZnJhbWUuaCBiL3NyYy9mcmFtZS5oCmluZGV4IDFmNDM4ZDMuLjNjN2IzYTEgMTAwNjQ0 Ci0tLSBhL3NyYy9mcmFtZS5oCisrKyBiL3NyYy9mcmFtZS5oCkBAIC0zMSw2ICszMSwxNCBA QCBlbnVtIHZlcnRpY2FsX3Njcm9sbF9iYXJfdHlwZQogICB2ZXJ0aWNhbF9zY3JvbGxfYmFy X3JpZ2h0CiB9OwoKK2VudW0gbWluaWJ1ZmZlcl93aW5kb3dfdHlwZQoreworICBtaW5pYnVm ZmVyX3dpbmRvd19sb29zZSwKKyAgbWluaWJ1ZmZlcl93aW5kb3dfdG9wLAorICBtaW5pYnVm ZmVyX3dpbmRvd19ib3R0b20sCisgIG1pbmlidWZmZXJfd2luZG93X29ubHksCit9OworCiAj aWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCgogZW51bSBmdWxsc2NyZWVuX3R5cGUKQEAgLTEz MSw2ICsxMzksMTEgQEAgc3RydWN0IGZyYW1lCiAgICAgIGNhbiBhY3R1YWxseSBhcHBlYXIg dG8gZXhpc3QuICAqLwogICBMaXNwX09iamVjdCBtaW5pYnVmZmVyX3dpbmRvdzsKCisgIC8q IFRoaXMgZnJhbWUncyBlY2hvIHdpbmRvdy4KKyAgICAgSWYgdGhpcyBmcmFtZSBzaGFyZXMg bWluaWJ1ZmZlciBhbmQgZWNobyBhcmVhLCB0aGVuIHRoaXMgZnJhbWUncworICAgICBlY2hv IGFuZCBtaW5pYnVmZmVyIHdpbmRvd3MgYXJlIHRoZSBzYW1lIHdpbmRvdy4gICovCisgIExp c3BfT2JqZWN0IGVjaG9fd2luZG93OworCiAgIC8qIFBhcmFtZXRlciBhbGlzdCBvZiB0aGlz IGZyYW1lLgogICAgICBUaGVzZSBhcmUgdGhlIHBhcmFtZXRlcnMgc3BlY2lmaWVkIHdoZW4g Y3JlYXRpbmcgdGhlIGZyYW1lCiAgICAgIG9yIG1vZGlmaWVkIHdpdGggbW9kaWZ5LWZyYW1l LXBhcmFtZXRlcnMuICAqLwpAQCAtMzc0LDcgKzM4Nyw3IEBAIHN0cnVjdCBmcmFtZQogICAg ICB2aWEgbW91c2UgY2xpY2tzIG9yIGJ5IG1vdmluZyB0aGUgbW91c2UgaW50byBpdC4gICov CiAgIGJvb2xfYmYgbm9fYWNjZXB0X2ZvY3VzIDogMTsKCi0gIC8qIFRoZSB6LWdyb3VwIHRo aXMgZnJhbWUncyB3aW5kb3cgYmVsb25ncyB0by4gKi8KKyAgLyogVGhlIHotZ3JvdXAgdGhp cyBmcmFtZSdzIHdpbmRvdyBiZWxvbmdzIHRvLiAgKi8KICAgRU5VTV9CRiAoel9ncm91cCkg el9ncm91cCA6IDI7CgogICAvKiBOb24temVybyBpZiBkaXNwbGF5IG9mIHRydW5jYXRpb24g YW5kIGNvbnRpbnVhdGlvbiBnbHlwaHMgb3V0c2lkZQpAQCAtNDA0LDYgKzQxNyw5IEBAIHN0 cnVjdCBmcmFtZQogICAvKiBOb24temVybyBpZiB0aGlzIGZyYW1lJ3MgZmFjZXMgbmVlZCB0 byBiZSByZWNvbXB1dGVkLiAgKi8KICAgYm9vbF9iZiBmYWNlX2NoYW5nZSA6IDE7CgorICAv KiBUaGUgbWluaSB3aW5kb3cgdHlwZSBmb3IgdGhpcyBmcmFtZS4gICovCisgIEVOVU1fQkYg KG1pbmlidWZmZXJfd2luZG93X3R5cGUpIG1pbmlidWZmZXJfd2luZG93X3R5cGUgOiAyOwor CiAgIC8qIEJpdGZpZWxkIGFyZWEgZW5kcyBoZXJlLiAgKi8KCiAgIC8qIE51bWJlciBvZiBs aW5lcyAocm91bmRlZCB1cCkgb2YgdG9vbCBiYXIuICBSRU1PVkUgVEhJUyAgKi8KQEAgLTY1 Miw2ICs2NjgsMTYgQEAgc3RydWN0IGZyYW1lCiAgIGYtPnJvb3Rfd2luZG93ID0gdmFsOwog fQogSU5MSU5FIHZvaWQKK2ZzZXRfbWluaWJ1ZmZlcl93aW5kb3cgKHN0cnVjdCBmcmFtZSAq ZiwgTGlzcF9PYmplY3QgdmFsKQoreworICBmLT5taW5pYnVmZmVyX3dpbmRvdyA9IHZhbDsK K30KK0lOTElORSB2b2lkCitmc2V0X2VjaG9fd2luZG93IChzdHJ1Y3QgZnJhbWUgKmYsIExp c3BfT2JqZWN0IHZhbCkKK3sKKyAgZi0+ZWNob193aW5kb3cgPSB2YWw7Cit9CitJTkxJTkUg dm9pZAogZnNldF9zY3JvbGxfYmFycyAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCB2 YWwpCiB7CiAgIGYtPnNjcm9sbF9iYXJzID0gdmFsOwpAQCAtNzI5LDkgKzc1NSw2IEBAIHN0 cnVjdCBmcmFtZQogICAoZWFzc2VydCAoRlJBTUVQIChwKSksIFhVTlRBRyAocCwgTGlzcF9W ZWN0b3JsaWtlLCBzdHJ1Y3QgZnJhbWUpKQogI2RlZmluZSBYU0VURlJBTUUoYSwgYikgKFhT RVRQU0VVRE9WRUNUT1IgKGEsIGIsIFBWRUNfRlJBTUUpKQoKLS8qIEdpdmVuIGEgd2luZG93 LCByZXR1cm4gaXRzIGZyYW1lIGFzIGEgTGlzcF9PYmplY3QuICAqLwotI2RlZmluZSBXSU5E T1dfRlJBTUUodykgKCh3KS0+ZnJhbWUpCi0KIC8qIFRlc3QgYSBmcmFtZSBmb3IgcGFydGlj dWxhciBraW5kcyBvZiBkaXNwbGF5IG1ldGhvZHMuICAqLwogI2RlZmluZSBGUkFNRV9JTklU SUFMX1AoZikgKChmKS0+b3V0cHV0X21ldGhvZCA9PSBvdXRwdXRfaW5pdGlhbCkKICNkZWZp bmUgRlJBTUVfVEVSTUNBUF9QKGYpICgoZiktPm91dHB1dF9tZXRob2QgPT0gb3V0cHV0X3Rl cm1jYXApCkBAIC04MDMsMTUgKzgyNiw3MiBAQCBzdHJ1Y3QgZnJhbWUKIC8qIFRydWUgaWYg ZnJhbWUgRiBpcyBzdGlsbCBhbGl2ZSAobm90IGRlbGV0ZWQpLiAgKi8KICNkZWZpbmUgRlJB TUVfTElWRV9QKGYpICgoZiktPnRlcm1pbmFsICE9IDApCgotLyogVHJ1ZSBpZiBmcmFtZSBG IGlzIGEgbWluaWJ1ZmZlci1vbmx5IGZyYW1lLiAgKi8KLSNkZWZpbmUgRlJBTUVfTUlOSUJV Rl9PTkxZX1AoZikgXAotICBFUSAoRlJBTUVfUk9PVF9XSU5ET1cgKGYpLCBGUkFNRV9NSU5J QlVGX1dJTkRPVyAoZikpCisvKiBUcnVlIGlmIGZyYW1lIEZSQU1FIGlzIGEgZnJhbWUgYW5k IGxpdmUuICAqLworI2RlZmluZSBGUkFNRV9WQUxJRF9QKEZSQU1FKQkJCQlcCisgIChGUkFN RVAgKEZSQU1FKSAmJiBGUkFNRV9MSVZFX1AgKFhGUkFNRSAoRlJBTUUpKSkKKworLyogVGhl IG1pbmlidWZmZXIgd2luZG93IG9mIGZyYW1lIEYsIGlmIGl0IGhhcyBvbmU7IG90aGVyd2lz ZSBuaWwuICAqLworI2RlZmluZSBNSU5JQlVGRkVSX1dJTkRPVyhmKSAoKGYpLT5taW5pYnVm ZmVyX3dpbmRvdykKCi0vKiBUcnVlIGlmIGZyYW1lIEYgY29udGFpbnMgaXQncyBvd24gbWlu aWJ1ZmZlciB3aW5kb3cuICBGcmFtZSBhbHdheXMgaGFzCi0gICBtaW5pYnVmZmVyIHdpbmRv dywgYnV0IGl0IGNvdWxkIHVzZSBtaW5pYnVmZmVyIHdpbmRvdyBvZiBhbm90aGVyIGZyYW1l LiAgKi8KLSNkZWZpbmUgRlJBTUVfSEFTX01JTklCVUZfUChmKQkJCQkJXAotICAoV0lORE9X UCAoZi0+bWluaWJ1ZmZlcl93aW5kb3cpCQkJCVwKLSAgICYmIFhGUkFNRSAoWFdJTkRPVyAo Zi0+bWluaWJ1ZmZlcl93aW5kb3cpLT5mcmFtZSkgPT0gZikKKy8qIFRoZSBlY2hvIHdpbmRv dyBvZiBmcmFtZSBGLCBpZiBpdCBoYXMgb25lOyBvdGhlcndpc2UgbmlsLiAgKi8KKyNkZWZp bmUgRUNIT19XSU5ET1coZikgKChmKS0+ZWNob193aW5kb3cpCisKKy8qIFRoZSByb290IHdp bmRvdyBvZiB0aGUgd2luZG93IHRyZWUgb2YgZnJhbWUgRi4gICovCisjZGVmaW5lIEZSQU1F X1JPT1RfV0lORE9XKGYpICgoZiktPnJvb3Rfd2luZG93KQorCisvKiBUaGUgY3VycmVudGx5 IHNlbGVjdGVkIHdpbmRvdyBvZiB0aGUgd2luZG93IHRyZWUgb2YgZnJhbWUgRi4gICovCisj ZGVmaW5lIEZSQU1FX1NFTEVDVEVEX1dJTkRPVyhmKSAoKGYpLT5zZWxlY3RlZF93aW5kb3cp CisKKy8qIFRoZSB0eXBlIG9mIHRoZSBtaW5pIHdpbmRvdyBvZiBmcmFtZSBGLiAgKi8KKyNk ZWZpbmUgTUlOSUJVRkZFUl9XSU5ET1dfVFlQRShmKSAoKGYpLT5taW5pYnVmZmVyX3dpbmRv d190eXBlKQorCisvKiBUcnVlIGlmIGZyYW1lIEYgY29udGFpbnMgaXRzIG93biBtaW5pYnVm ZmVyIHdpbmRvdy4gIE1vc3QgZnJhbWVzCisgICBoYXZlIGEgbWluaWJ1ZmZlciB3aW5kb3cg YnV0IGl0IGNvdWxkIGJlIG9uIGFub3RoZXIgZnJhbWUuICAqLworI2RlZmluZSBNSU5JQlVG RkVSX1dJTkRPV19MT0NBTF9QKGYpCQkJCVwKKyAgKFdJTkRPV19MSVZFX1AgKE1JTklCVUZG RVJfV0lORE9XIChmKSkJCQlcCisgICAmJiBXSU5ET1dfWEZSQU1FIChYV0lORE9XIChNSU5J QlVGRkVSX1dJTkRPVyAoZikpKSA9PSBmKQorCisvKiBUcnVlIGlmIGZyYW1lIEYgY29udGFp bnMgaXRzIG93biBlY2hvIHdpbmRvdy4gICovCisjZGVmaW5lIEVDSE9fV0lORE9XX0xPQ0FM X1AoZikJCQkJCVwKKyAgKFdJTkRPV19MSVZFX1AgKEVDSE9fV0lORE9XIChmKSkJCQkJXAor ICAgJiYgV0lORE9XX1hGUkFNRSAoWFdJTkRPVyAoRUNIT19XSU5ET1cgKGYpKSkgPT0gZikK KworLyogVHJ1ZSBpZiBmcmFtZSBGIGlzIGEgbWluaWJ1ZmZlci1vbmx5IGZyYW1lLiAgKi8K KyNkZWZpbmUgTUlOSUJVRkZFUl9XSU5ET1dfT05MWV9QKGYpCQkJCVwKKyAgKE1JTklCVUZG RVJfV0lORE9XX0xPQ0FMX1AgKGYpCQkJCVwKKyAgICYmIE1JTklCVUZGRVJfV0lORE9XX1RZ UEUgKGYpID09IG1pbmlidWZmZXJfd2luZG93X29ubHkpCisKKy8qIFRydWUgaWYgZnJhbWUg RiBoYXMgYSBtaW5pYnVmZmVyIHdpbmRvdyBmaXhlZCBhdCBpdHMgdG9wIG9yCisgICBib3R0 b20uICAqLworI2RlZmluZSBNSU5JQlVGRkVSX1dJTkRPV19GSVhFRF9QKGYpCQkJCQlcCisg IChNSU5JQlVGRkVSX1dJTkRPV19MT0NBTF9QIChmKQkJCQkJXAorICAgJiYgKE1JTklCVUZG RVJfV0lORE9XX1RZUEUgKGYpID09IG1pbmlidWZmZXJfd2luZG93X3RvcAkJXAorICAgICAg IHx8IE1JTklCVUZGRVJfV0lORE9XX1RZUEUgKGYpID09IG1pbmlidWZmZXJfd2luZG93X2Jv dHRvbSkpCisKKy8qIFRydWUgaWYgZnJhbWUgRiBoYXMgYSBtaW5pYnVmZmVyIHdpbmRvdyBm aXhlZCBhdCBpdHMgdG9wLiAgKi8KKyNkZWZpbmUgTUlOSUJVRkZFUl9XSU5ET1dfVE9QX1Ao ZikJCQkJXAorICAoTUlOSUJVRkZFUl9XSU5ET1dfTE9DQUxfUCAoZikJCQkJXAorICAgJiYg TUlOSUJVRkZFUl9XSU5ET1dfVFlQRSAoZikgPT0gbWluaWJ1ZmZlcl93aW5kb3dfdG9wKQor CisvKiBUcnVlIGlmIGZyYW1lIEYgaGFzIGEgbWluaWJ1ZmZlciB3aW5kb3cgZml4ZWQgYXQg aXRzIGJvdHRvbS4gICovCisjZGVmaW5lIE1JTklCVUZGRVJfV0lORE9XX0JPVFRPTV9QKGYp CQkJCVwKKyAgKE1JTklCVUZGRVJfV0lORE9XX0xPQ0FMX1AgKGYpCQkJCVwKKyAgICYmIE1J TklCVUZGRVJfV0lORE9XX1RZUEUgKGYpID09IG1pbmlidWZmZXJfd2luZG93X2JvdHRvbSkK KworLyogVHJ1ZSBpZiBmcmFtZSBGIGhhcyBhIGxvb3NlIG1pbmlidWZmZXIgd2luZG93LiAg Ki8KKyNkZWZpbmUgTUlOSUJVRkZFUl9XSU5ET1dfTE9PU0VfUChmKQkJCQlcCisgIChNSU5J QlVGRkVSX1dJTkRPV19MT0NBTF9QIChmKQkJCQlcCisgICAmJiBNSU5JQlVGRkVSX1dJTkRP V19UWVBFIChmKSA9PSBtaW5pYnVmZmVyX3dpbmRvd19sb29zZSkKKworLyogVHJ1ZSBpZiBm cmFtZSBGIGhhcyBhIHJlbW90ZSBtaW5pYnVmZmVyIHdpbmRvdy4gICovCisjZGVmaW5lIE1J TklCVUZGRVJfV0lORE9XX1JFTU9URV9QKGYpCQkJCVwKKyAgKFdJTkRPV19MSVZFX1AgKE1J TklCVUZGRVJfV0lORE9XIChmKSkJCQlcCisgICAmJiBXSU5ET1dfWEZSQU1FIChYV0lORE9X IChNSU5JQlVGRkVSX1dJTkRPVyAoZikpKSAhPSBmKQorCisvKiBUcnVlIGlmIGZyYW1lIEYg aGFzIGEgcmVtb3RlIGVjaG8gd2luZG93LiAgKi8KKyNkZWZpbmUgRUNIT19XSU5ET1dfUkVN T1RFX1AoZikJCQkJCVwKKyAgKFdJTkRPV19MSVZFX1AgKEVDSE9fV0lORE9XIChmKSkJCQkJ XAorICAgJiYgV0lORE9XX1hGUkFNRSAoWFdJTkRPVyAoRUNIT19XSU5ET1cgKGYpKSkgIT0g ZikKCiAvKiBQaXhlbCB3aWR0aCBvZiBmcmFtZSBGLiAgKi8KICNkZWZpbmUgRlJBTUVfUElY RUxfV0lEVEgoZikgKChmKS0+cGl4ZWxfd2lkdGgpCkBAIC04NjYsNyArOTQ2LDcgQEAgc3Ry dWN0IGZyYW1lCiAjZGVmaW5lIEZSQU1FX1RPT0xfQkFSX0hFSUdIVChmKSAoZiktPnRvb2xf YmFyX2hlaWdodAoKIC8qIExpbmVzIGFib3ZlIHRoZSB0b3AtbW9zdCB3aW5kb3cgaW4gZnJh bWUgRi4gICovCi0jZGVmaW5lIEZSQU1FX1RPUF9NQVJHSU4oRikgXAorI2RlZmluZSBGUkFN RV9UT1BfTUFSR0lOKEYpCQkJCVwKICAgKEZSQU1FX01FTlVfQkFSX0xJTkVTIChGKSArIEZS QU1FX1RPT0xfQkFSX0xJTkVTIChGKSkKCiAvKiBQaXhlbCBoZWlnaHQgb2YgZnJhbWUgRidz IHRvcCBtYXJnaW4uICAqLwpAQCAtOTEzLDE1ICs5OTMsNiBAQCBzdHJ1Y3QgZnJhbWUKICNk ZWZpbmUgRlJBTUVfV0lORE9XX0NPTkZJR1VSQVRJT05fQ0hBTkdFRChmKQlcCiAgIChmKS0+ d2luZG93X2NvbmZpZ3VyYXRpb25fY2hhbmdlZAoKLS8qIFRoZSBtaW5pYnVmZmVyIHdpbmRv dyBvZiBmcmFtZSBGLCBpZiBpdCBoYXMgb25lOyBvdGhlcndpc2UgbmlsLiAgKi8KLSNkZWZp bmUgRlJBTUVfTUlOSUJVRl9XSU5ET1coZikgZi0+bWluaWJ1ZmZlcl93aW5kb3cKLQotLyog VGhlIHJvb3Qgd2luZG93IG9mIHRoZSB3aW5kb3cgdHJlZSBvZiBmcmFtZSBGLiAgKi8KLSNk ZWZpbmUgRlJBTUVfUk9PVF9XSU5ET1coZikgZi0+cm9vdF93aW5kb3cKLQotLyogVGhlIGN1 cnJlbnRseSBzZWxlY3RlZCB3aW5kb3cgb2YgdGhlIHdpbmRvdyB0cmVlIG9mIGZyYW1lIEYu ICAqLwotI2RlZmluZSBGUkFNRV9TRUxFQ1RFRF9XSU5ET1coZikgZi0+c2VsZWN0ZWRfd2lu ZG93Ci0KICNkZWZpbmUgRlJBTUVfSU5TRVJUX0NPU1QoZikgKGYpLT5pbnNlcnRfbGluZV9j b3N0CiAjZGVmaW5lIEZSQU1FX0RFTEVURV9DT1NUKGYpIChmKS0+ZGVsZXRlX2xpbmVfY29z dAogI2RlZmluZSBGUkFNRV9JTlNFUlROX0NPU1QoZikgKGYpLT5pbnNlcnRfbl9saW5lc19j b3N0CkBAIC0xMjMwLDggKzEzMDEsOSBAQCBzdHJ1Y3QgZnJhbWUKICAgZGVjb2RlX3dpbmRv d19zeXN0ZW1fZnJhbWUgKExpc3BfT2JqZWN0KTsKIGV4dGVybiBzdHJ1Y3QgZnJhbWUgKmRl Y29kZV9saXZlX2ZyYW1lIChMaXNwX09iamVjdCk7CiBleHRlcm4gc3RydWN0IGZyYW1lICpk ZWNvZGVfYW55X2ZyYW1lIChMaXNwX09iamVjdCk7CitleHRlcm4gc3RydWN0IGZyYW1lICpk ZWNvZGVfZnJhbWVfb3Jfd2luZG93IChMaXNwX09iamVjdCk7CiBleHRlcm4gc3RydWN0IGZy YW1lICptYWtlX2luaXRpYWxfZnJhbWUgKHZvaWQpOwotZXh0ZXJuIHN0cnVjdCBmcmFtZSAq bWFrZV9mcmFtZSAoYm9vbCk7CitleHRlcm4gc3RydWN0IGZyYW1lICptYWtlX2ZyYW1lIChM aXNwX09iamVjdCk7CiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiBleHRlcm4gc3RydWN0 IGZyYW1lICptYWtlX21pbmlidWZmZXJfZnJhbWUgKHZvaWQpOwogZXh0ZXJuIHN0cnVjdCBm cmFtZSAqbWFrZV9mcmFtZV93aXRob3V0X21pbmlidWZmZXIgKExpc3BfT2JqZWN0LApkaWZm IC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMva2V5Ym9hcmQuYwppbmRleCA3YWI5YTYw Li5lOTA5NDExIDEwMDY0NAotLS0gYS9zcmMva2V5Ym9hcmQuYworKysgYi9zcmMva2V5Ym9h cmQuYwpAQCAtMTE0OSwxNCArMTE0OSwxNCBAQCBzdHJ1Y3Qga2JvYXJkX3N0YWNrCiAgIHVz ZXJfZXJyb3IgKCJObyByZWN1cnNpdmUgZWRpdCBpcyBpbiBwcm9ncmVzcyIpOwogfQogDAot LyogUmVzdG9yZSBtb3VzZSB0cmFja2luZyBlbmFibGVtZW50LiAgU2VlIEZ0cmFja19tb3Vz ZSBmb3IgdGhlIG9ubHkgdXNlCi0gICBvZiB0aGlzIGZ1bmN0aW9uLiAgKi8KKy8qIFJlc3Rv cmUgbW91c2UgdHJhY2tpbmcgZW5hYmxlbWVudC4gIFNlZSBGaW50ZXJuYWxfdHJhY2tfbW91 c2UgZm9yCisgICB0aGUgb25seSB1c2Ugb2YgdGhpcyBmdW5jdGlvbi4gICovCgogc3RhdGlj IHZvaWQKLXRyYWNraW5nX29mZiAoTGlzcF9PYmplY3Qgb2xkX3ZhbHVlKQordHJhY2tpbmdf b2ZmIChMaXNwX09iamVjdCBvbGRfdHJhY2tfbW91c2UpCiB7Ci0gIGRvX21vdXNlX3RyYWNr aW5nID0gb2xkX3ZhbHVlOwotICBpZiAoTklMUCAob2xkX3ZhbHVlKSkKKyAgdHJhY2tfbW91 c2UgPSBvbGRfdHJhY2tfbW91c2U7CisgIGlmIChOSUxQIChvbGRfdHJhY2tfbW91c2UpKQog ICAgIHsKICAgICAgIC8qIFJlZGlzcGxheSBtYXkgaGF2ZSBiZWVuIHByZWVtcHRlZCBiZWNh dXNlIHRoZXJlIHdhcyBpbnB1dAogCSBhdmFpbGFibGUsIGFuZCBpdCBhc3N1bWVzIGl0IHdp bGwgYmUgY2FsbGVkIGFnYWluIGFmdGVyIHRoZQpAQCAtMTE3MSwyNCArMTE3MSwyNCBAQCBz dHJ1Y3Qga2JvYXJkX3N0YWNrCiAgICAgfQogfQoKLURFRlVOICgiaW50ZXJuYWwtLXRyYWNr LW1vdXNlIiwgRnRyYWNrX21vdXNlLCBTdHJhY2tfbW91c2UsIDEsIDEsIDAsCitERUZVTiAo ImludGVybmFsLS10cmFjay1tb3VzZSIsIEZpbnRlcm5hbF90cmFja19tb3VzZSwgU2ludGVy bmFsX3RyYWNrX21vdXNlLAorICAgICAgIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBDYWxs IEJPRFlGVU4gd2l0aCBtb3VzZSBtb3ZlbWVudCBldmVudHMgZW5hYmxlZC4gICovKQogICAo TGlzcF9PYmplY3QgYm9keWZ1bikKIHsKICAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9J TkRFWCAoKTsKICAgTGlzcF9PYmplY3QgdmFsOwoKLSAgcmVjb3JkX3Vud2luZF9wcm90ZWN0 ICh0cmFja2luZ19vZmYsIGRvX21vdXNlX3RyYWNraW5nKTsKKyAgcmVjb3JkX3Vud2luZF9w cm90ZWN0ICh0cmFja2luZ19vZmYsIHRyYWNrX21vdXNlKTsKCi0gIGRvX21vdXNlX3RyYWNr aW5nID0gUXQ7CisgIHRyYWNrX21vdXNlID0gUXQ7CgogICB2YWwgPSBjYWxsMCAoYm9keWZ1 bik7CiAgIHJldHVybiB1bmJpbmRfdG8gKGNvdW50LCB2YWwpOwogfQoKLS8qIElmIG1vdXNl IGhhcyBtb3ZlZCBvbiBzb21lIGZyYW1lLCByZXR1cm4gb25lIG9mIHRob3NlIGZyYW1lcy4K LQotICAgUmV0dXJuIDAgb3RoZXJ3aXNlLgorLyogSWYgbW91c2UgaGFzIG1vdmVkIG9uIHNv bWUgZnJhbWUgYW5kIHdlIGFyZSB0cmFja2luZyB0aGUgbW91c2UsCisgICByZXR1cm4gb25l IG9mIHRob3NlIGZyYW1lcy4gIFJldHVybiBOVUxMIG90aGVyd2lzZS4KCiAgICBJZiBpZ25v cmVfbW91c2VfZHJhZ19wIGlzIG5vbi16ZXJvLCBpZ25vcmUgKGltcGxpY2l0KSBtb3VzZSBt b3ZlbWVudAogICAgYWZ0ZXIgcmVzaXppbmcgdGhlIHRvb2wtYmFyIHdpbmRvdy4gICovCkBA IC0xMjAwLDExICsxMjAwLDggQEAgc3RydWN0IGtib2FyZF9zdGFjawogewogICBMaXNwX09i amVjdCB0YWlsLCBmcmFtZTsKCi0gIGlmIChpZ25vcmVfbW91c2VfZHJhZ19wKQotICAgIHsK LSAgICAgIC8qIGlnbm9yZV9tb3VzZV9kcmFnX3AgPSAwOyAqLwotICAgICAgcmV0dXJuIDA7 Ci0gICAgfQorICBpZiAoTklMUCAodHJhY2tfbW91c2UpIHx8IGlnbm9yZV9tb3VzZV9kcmFn X3ApCisgICAgcmV0dXJuIE5VTEw7CgogICBGT1JfRUFDSF9GUkFNRSAodGFpbCwgZnJhbWUp CiAgICAgewpAQCAtMTIxMiw3ICsxMjA5LDcgQEAgc3RydWN0IGtib2FyZF9zdGFjawogCXJl dHVybiBYRlJBTUUgKGZyYW1lKTsKICAgICB9CgotICByZXR1cm4gMDsKKyAgcmV0dXJuIE5V TEw7CiB9CgogDApAQCAtMTI0OSwxMCArMTI0Niw4IEBAIHN0YXRpYyBpbnQgcmVhZF9rZXlf c2VxdWVuY2UgKExpc3BfT2JqZWN0ICosIExpc3BfT2JqZWN0LAogICAgICAgaWYgKCFOSUxQ IChWcG9zdF9jb21tYW5kX2hvb2spICYmICFOSUxQIChWcnVuX2hvb2tzKSkKIAlzYWZlX3J1 bl9ob29rcyAoUXBvc3RfY29tbWFuZF9ob29rKTsKCi0gICAgICAvKiBJZiBkaXNwbGF5aW5n IGEgbWVzc2FnZSwgcmVzaXplIHRoZSBlY2hvIGFyZWEgd2luZG93IHRvIGZpdAotCSB0aGF0 IG1lc3NhZ2UncyBzaXplIGV4YWN0bHkuICAqLwotICAgICAgaWYgKCFOSUxQIChlY2hvX2Fy ZWFfYnVmZmVyWzBdKSkKLQlyZXNpemVfZWNob19hcmVhX2V4YWN0bHkgKCk7CisgICAgICAv KiBSZXNpemUgb3VyIG1pbmkgd2luZG93cy4gICovCisgICAgICByZXNpemVfbWluaV93aW5k b3dzX2V4YWN0bHkgKCk7CgogICAgICAgLyogSWYgdGhlcmUgYXJlIHdhcm5pbmdzIHdhaXRp bmcsIHByb2Nlc3MgdGhlbS4gICovCiAgICAgICBpZiAoIU5JTFAgKFZkZWxheWVkX3dhcm5p bmdzX2xpc3QpKQpAQCAtMTQ2Niw4ICsxNDYxLDggQEAgc3RhdGljIGludCByZWFkX2tleV9z ZXF1ZW5jZSAoTGlzcF9PYmplY3QgKiwgTGlzcF9PYmplY3QsCgogICAgICAgLyogSWYgZGlz cGxheWluZyBhIG1lc3NhZ2UsIHJlc2l6ZSB0aGUgZWNobyBhcmVhIHdpbmRvdyB0byBmaXQK IAkgdGhhdCBtZXNzYWdlJ3Mgc2l6ZSBleGFjdGx5LiAgKi8KLSAgICAgIGlmICghTklMUCAo ZWNob19hcmVhX2J1ZmZlclswXSkpCi0JcmVzaXplX2VjaG9fYXJlYV9leGFjdGx5ICgpOwor ICAgICAgaWYgKCFOSUxQIChlY2hvX2FyZWFfYnVmZmVyWzBdKSB8fCBtaW5pYnVmX2xldmVs ID4gMCkKKwlyZXNpemVfbWluaV93aW5kb3dzX2V4YWN0bHkgKCk7CgogICAgICAgLyogSWYg dGhlcmUgYXJlIHdhcm5pbmdzIHdhaXRpbmcsIHByb2Nlc3MgdGhlbS4gICovCiAgICAgICBp ZiAoIU5JTFAgKFZkZWxheWVkX3dhcm5pbmdzX2xpc3QpKQpAQCAtMjA1Nyw3ICsyMDUyLDgg QEAgc3RhdGljIGludCByZWFkX2tleV9zZXF1ZW5jZSAoTGlzcF9PYmplY3QgKiwgTGlzcF9P YmplY3QsCiAJIFRoaXMgY2F1c2VzIHRyb3VibGUgaWYgd2UgYXJlIHRyeWluZyB0byByZWFk IGEgbW91c2UgbW90aW9uCiAJIGV2ZW50IChpLmUuLCBpZiB3ZSBhcmUgaW5zaWRlIGEgYHRy YWNrLW1vdXNlJyBmb3JtKSwgc28gd2UKIAkgcmVzdG9yZSB0aGUgbW91c2VfbW92ZWQgZmxh Zy4gICovCi0gICAgICBzdHJ1Y3QgZnJhbWUgKmYgPSBOSUxQIChkb19tb3VzZV90cmFja2lu ZykgPyBOVUxMIDogc29tZV9tb3VzZV9tb3ZlZCAoKTsKKyAgICAgIHN0cnVjdCBmcmFtZSAq ZiA9IHNvbWVfbW91c2VfbW92ZWQgKCk7CisKICAgICAgIGhlbHAgPSBjYWxsMSAoUW1vdXNl X2ZpeHVwX2hlbHBfbWVzc2FnZSwgaGVscCk7CiAgICAgICBpZiAoZikKIAlmLT5tb3VzZV9t b3ZlZCA9IHRydWU7CkBAIC0yNjYyLDcgKzI2NTgsNyBAQCBzdGF0aWMgTGlzcF9PYmplY3Qg a2JkX2J1ZmZlcl9nZXRfZXZlbnQgKEtCT0FSRCAqKmticCwgYm9vbCAqdXNlZF9tb3VzZV9t ZW51LAoKICAgICAgIC8qIFNsb3cgZG93biBhdXRvIHNhdmVzIGxvZ2FyaXRobWljYWxseSBp biBzaXplIG9mIGN1cnJlbnQgYnVmZmVyLAogCSBhbmQgZ2FyYmFnZSBjb2xsZWN0IHdoaWxl IHdlJ3JlIGF0IGl0LiAgKi8KLSAgICAgIGlmICghIE1JTklfV0lORE9XX1AgKFhXSU5ET1cg KHNlbGVjdGVkX3dpbmRvdykpKQorICAgICAgaWYgKCFNSU5JQlVGRkVSX1dJTkRPV19QIChY V0lORE9XIChzZWxlY3RlZF93aW5kb3cpKSkKIAlsYXN0X25vbl9taW5pYnVmX3NpemUgPSBa IC0gQkVHOwogICAgICAgYnVmZmVyX3NpemUgPSAobGFzdF9ub25fbWluaWJ1Zl9zaXplID4+ IDgpICsgMTsKICAgICAgIGRlbGF5X2xldmVsID0gMDsKQEAgLTMzNjAsOCArMzM1Niw3IEBA IHN0YXRpYyBMaXNwX09iamVjdCBrYmRfYnVmZmVyX2dldF9ldmVudCAoS0JPQVJEICoqa2Jw LCBib29sICp1c2VkX21vdXNlX21lbnUsCiAJcmV0dXJuIDE7CiAgICAgfQoKLSAgaWYgKCEo ZmxhZ3MgJiBSRUFEQUJMRV9FVkVOVFNfSUdOT1JFX1NRVUVFWkFCTEVTKQotICAgICAgJiYg IU5JTFAgKGRvX21vdXNlX3RyYWNraW5nKSAmJiBzb21lX21vdXNlX21vdmVkICgpKQorICBp ZiAoIShmbGFncyAmIFJFQURBQkxFX0VWRU5UU19JR05PUkVfU1FVRUVaQUJMRVMpICYmIHNv bWVfbW91c2VfbW92ZWQgKCkpCiAgICAgcmV0dXJuIDE7CiAgIGlmIChzaW5nbGVfa2JvYXJk KQogICAgIHsKQEAgLTM3NjMsNyArMzc1OCw3IEBAIHN0YXRpYyBMaXNwX09iamVjdCBrYmRf YnVmZmVyX2dldF9ldmVudCAoS0JPQVJEICoqa2JwLCBib29sICp1c2VkX21vdXNlX21lbnUs CgogICAgICAgaWYgKGtiZF9mZXRjaF9wdHIgIT0ga2JkX3N0b3JlX3B0cikKIAlicmVhazsK LSAgICAgIGlmICghTklMUCAoZG9fbW91c2VfdHJhY2tpbmcpICYmIHNvbWVfbW91c2VfbW92 ZWQgKCkpCisgICAgICBpZiAoc29tZV9tb3VzZV9tb3ZlZCAoKSkKIAlicmVhazsKCiAgICAg ICAvKiBJZiB0aGUgcXVpdCBmbGFnIGlzIHNldCwgdGhlbiByZWFkX2NoYXIgd2lsbCByZXR1 cm4KQEAgLTM3NzksNyArMzc3NCw3IEBAIHN0YXRpYyBMaXNwX09iamVjdCBrYmRfYnVmZmVy X2dldF9ldmVudCAoS0JPQVJEICoqa2JwLCBib29sICp1c2VkX21vdXNlX21lbnUsCiAjZW5k aWYKICAgICAgIGlmIChrYmRfZmV0Y2hfcHRyICE9IGtiZF9zdG9yZV9wdHIpCiAJYnJlYWs7 Ci0gICAgICBpZiAoIU5JTFAgKGRvX21vdXNlX3RyYWNraW5nKSAmJiBzb21lX21vdXNlX21v dmVkICgpKQorICAgICAgaWYgKHNvbWVfbW91c2VfbW92ZWQgKCkpCiAJYnJlYWs7CiAgICAg ICBpZiAoZW5kX3RpbWUpCiAJewpAQCAtMzkxOCw4ICszOTEzLDkgQEAgc3RhdGljIExpc3Bf T2JqZWN0IGtiZF9idWZmZXJfZ2V0X2V2ZW50IChLQk9BUkQgKiprYnAsIGJvb2wgKnVzZWRf bW91c2VfbWVudSwKICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgogCXsKLQkgIC8q IElmIHRoaXMgZXZlbnQgaXMgb24gYSBkaWZmZXJlbnQgZnJhbWUsIHJldHVybiBhIHN3aXRj aC1mcmFtZSB0aGlzCi0JICAgICB0aW1lLCBhbmQgbGVhdmUgdGhlIGV2ZW50IGluIHRoZSBx dWV1ZSBmb3IgbmV4dCB0aW1lLiAgKi8KKwkgIC8qIElmIHRoaXMgZXZlbnQgaXMgb24gYSBk aWZmZXJlbnQgZnJhbWUsIHJldHVybiBhCisJICAgICBzd2l0Y2gtZnJhbWUgdGhpcyB0aW1l IGFuZCBsZWF2ZSB0aGUgZXZlbnQgaW4gdGhlIHF1ZXVlCisJICAgICBmb3IgbmV4dCB0aW1l LiAgKi8KIAkgIExpc3BfT2JqZWN0IGZyYW1lOwogCSAgTGlzcF9PYmplY3QgZm9jdXM7CgpA QCAtMzkzMywxNCArMzkyOSwxMyBAQCBzdGF0aWMgTGlzcF9PYmplY3Qga2JkX2J1ZmZlcl9n ZXRfZXZlbnQgKEtCT0FSRCAqKmticCwgYm9vbCAqdXNlZF9tb3VzZV9tZW51LAogCSAgaWYg KCEgTklMUCAoZm9jdXMpKQogCSAgICBmcmFtZSA9IGZvY3VzOwoKLQkgIGlmICghIEVRIChm cmFtZSwgaW50ZXJuYWxfbGFzdF9ldmVudF9mcmFtZSkKKwkgIGlmICghRVEgKGZyYW1lLCBp bnRlcm5hbF9sYXN0X2V2ZW50X2ZyYW1lKQogCSAgICAgICYmICFFUSAoZnJhbWUsIHNlbGVj dGVkX2ZyYW1lKSkKIAkgICAgb2JqID0gbWFrZV9saXNweV9zd2l0Y2hfZnJhbWUgKGZyYW1l KTsKIAkgIGludGVybmFsX2xhc3RfZXZlbnRfZnJhbWUgPSBmcmFtZTsKCiAJICAvKiBJZiB3 ZSBkaWRuJ3QgZGVjaWRlIHRvIG1ha2UgYSBzd2l0Y2gtZnJhbWUgZXZlbnQsIGdvIGFoZWFk CiAJICAgICBhbmQgYnVpbGQgYSByZWFsIGV2ZW50IGZyb20gdGhlIHF1ZXVlIGVudHJ5LiAg Ki8KLQogCSAgaWYgKE5JTFAgKG9iaikpCiAJICAgIHsKIAkgICAgICBvYmogPSBtYWtlX2xp c3B5X2V2ZW50ICgmZXZlbnQtPmllKTsKQEAgLTM5NzMsNyArMzk2OCw3IEBAIHN0YXRpYyBM aXNwX09iamVjdCBrYmRfYnVmZmVyX2dldF9ldmVudCAoS0JPQVJEICoqa2JwLCBib29sICp1 c2VkX21vdXNlX21lbnUsCiAgICAgICB9CiAgICAgfQogICAvKiBUcnkgZ2VuZXJhdGluZyBh IG1vdXNlIG1vdGlvbiBldmVudC4gICovCi0gIGVsc2UgaWYgKCFOSUxQIChkb19tb3VzZV90 cmFja2luZykgJiYgc29tZV9tb3VzZV9tb3ZlZCAoKSkKKyAgZWxzZSBpZiAoc29tZV9tb3Vz ZV9tb3ZlZCAoKSkKICAgICB7CiAgICAgICBzdHJ1Y3QgZnJhbWUgKmYgPSBzb21lX21vdXNl X21vdmVkICgpOwogICAgICAgTGlzcF9PYmplY3QgYmFyX3dpbmRvdzsKQEAgLTQwMDUsNyAr NDAwMCw3IEBAIHN0YXRpYyBMaXNwX09iamVjdCBrYmRfYnVmZmVyX2dldF9ldmVudCAoS0JP QVJEICoqa2JwLCBib29sICp1c2VkX21vdXNlX21lbnUsCiAJICBpZiAoTklMUCAoZnJhbWUp KQogCSAgICBYU0VURlJBTUUgKGZyYW1lLCBmKTsKCi0JICBpZiAoISBFUSAoZnJhbWUsIGlu dGVybmFsX2xhc3RfZXZlbnRfZnJhbWUpCisJICBpZiAoIUVRIChmcmFtZSwgaW50ZXJuYWxf bGFzdF9ldmVudF9mcmFtZSkKIAkgICAgICAmJiAhRVEgKGZyYW1lLCBzZWxlY3RlZF9mcmFt ZSkpCiAJICAgIG9iaiA9IG1ha2VfbGlzcHlfc3dpdGNoX2ZyYW1lIChmcmFtZSk7CiAJICBp bnRlcm5hbF9sYXN0X2V2ZW50X2ZyYW1lID0gZnJhbWU7CkBAIC0xMDkxNyw3ICsxMDkxMiw3 IEBAIFRoZSB2YWx1ZSBpcyBhIGxpc3Qgb2YgdGhlIGZvcm0gKElOVEVSUlVQVCBGTE9XIE1F VEEgUVVJVCksIHdoZXJlCiAgIHJlY2VudF9rZXlzX2luZGV4ID0gMDsKICAga2JkX2ZldGNo X3B0ciA9IGtiZF9idWZmZXI7CiAgIGtiZF9zdG9yZV9wdHIgPSBrYmRfYnVmZmVyOwotICBk b19tb3VzZV90cmFja2luZyA9IFFuaWw7CisgIHRyYWNrX21vdXNlID0gUW5pbDsKICAgaW5w dXRfcGVuZGluZyA9IGZhbHNlOwogICBpbnRlcnJ1cHRfaW5wdXRfYmxvY2tlZCA9IDA7CiAg IHBlbmRpbmdfc2lnbmFscyA9IGZhbHNlOwpAQCAtMTEyNjksNyArMTEyNjQsNyBAQCBzdHJ1 Y3QgZXZlbnRfaGVhZAogICBkZWZzdWJyICgmU3JlYWRfa2V5X3NlcXVlbmNlKTsKICAgZGVm c3ViciAoJlNyZWFkX2tleV9zZXF1ZW5jZV92ZWN0b3IpOwogICBkZWZzdWJyICgmU3JlY3Vy c2l2ZV9lZGl0KTsKLSAgZGVmc3ViciAoJlN0cmFja19tb3VzZSk7CisgIGRlZnN1YnIgKCZT aW50ZXJuYWxfdHJhY2tfbW91c2UpOwogICBkZWZzdWJyICgmU2lucHV0X3BlbmRpbmdfcCk7 CiAgIGRlZnN1YnIgKCZTcmVjZW50X2tleXMpOwogICBkZWZzdWJyICgmU3RoaXNfY29tbWFu ZF9rZXlzKTsKQEAgLTExNjA4LDggKzExNjAzLDE1IEBAIHN0cnVjdCBldmVudF9oZWFkCiAJ ICAgICAgIGRvYzogLyogS2V5bWFwIGRlZmluaW5nIGJpbmRpbmdzIGZvciBzcGVjaWFsIGV2 ZW50cyB0byBleGVjdXRlIGF0IGxvdyBsZXZlbC4gICovKTsKICAgVnNwZWNpYWxfZXZlbnRf bWFwID0gbGlzdDEgKFFrZXltYXApOwoKLSAgREVGVkFSX0xJU1AgKCJ0cmFjay1tb3VzZSIs IGRvX21vdXNlX3RyYWNraW5nLAotCSAgICAgICBkb2M6IC8qIE5vbi1uaWwgbWVhbnMgZ2Vu ZXJhdGUgbW90aW9uIGV2ZW50cyBmb3IgbW91c2UgbW90aW9uLiAgKi8pOworICBERUZWQVJf TElTUCAoInRyYWNrLW1vdXNlIiwgdHJhY2tfbW91c2UsCisJICAgICAgIGRvYzogLyogTm9u LW5pbCBtZWFucyBnZW5lcmF0ZSBtb3Rpb24gZXZlbnRzIGZvciBtb3VzZSBtb3Rpb24uCitU aGUgc2VwZWNpYWwgdmFsdWVzICdkcmFnZ2luZycgYW5kICdkcm9wcGluZycgYXNzZXJ0IHRo YXQgdGhlIG1vdWUKK2N1cnNvciByZXRhaW5zIGl0cyBhcHBlYXJhbmNlIGR1cmluZyBtb3Vz ZSBtb3Rpb24uICBBbnkgbm9uLW5pbCB2YWx1ZQorYnV0ICdkcm9wcGluZycgYXNzZXJ0cyB0 aGF0IG1vdGlvbiBldmVudHMgYWx3YXlzIHJlbGF0ZSB0byB0aGUgZnJhbWUKK3doZXJlIHRo ZSB0aGUgbW91c2UgbW92ZW1lbnQgc3RhcnRlZC4gIFRoZSB2YWx1ZSAnZHJvcHBpbmcnIGFz c2VydHMKK3RoYXQgbW90aW9uIGV2ZW50cyByZWxhdGUgdG8gdGhlIGZyYW1lIHdoZXJlIHRo ZSBtb3VzZSBjdXJzb3IgaXMgc2Vlbgord2hlbiBnZW5lcmF0aW5nIHRoZSBldmVudC4gIElm IHRoZXJlJ3Mgbm8gc3VjaCBmcmFtZSwgc3VjaCBtb3Rpb24KK2V2ZW50cyByZWxhdGUgdG8g dGhlIGZyYW1lIHdoZXJlIHRoZSB0aGUgbW91c2UgbW92ZW1lbnQgc3RhcnRlZC4gICovKTsK CiAgIERFRlZBUl9LQk9BUkQgKCJzeXN0ZW0ta2V5LWFsaXN0IiwgVnN5c3RlbV9rZXlfYWxp c3QsCiAJCSBkb2M6IC8qIEFsaXN0IG9mIHN5c3RlbS1zcGVjaWZpYyBYIHdpbmRvd3Mga2V5 IHN5bWJvbHMuCmRpZmYgLS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xpc3AuaAppbmRleCA5 NmRlNjBlLi5kOGM4YTBiIDEwMDY0NAotLS0gYS9zcmMvbGlzcC5oCisrKyBiL3NyYy9saXNw LmgKQEAgLTM1MDcsNiArMzUwNyw3IEBAIGV4dGVybiB2b2lkIHJlcGxhY2VfcmFuZ2VfMiAo cHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90LAogLyogRGVmaW5l ZCBpbiB4ZGlzcC5jLiAgKi8KIGV4dGVybiBib29sIG5vbmludGVyYWN0aXZlX25lZWRfbmV3 bGluZTsKIGV4dGVybiBMaXNwX09iamVjdCBlY2hvX2FyZWFfYnVmZmVyWzJdOworZXh0ZXJu IExpc3BfT2JqZWN0IGVjaG9fYnVmZmVyWzJdOwogZXh0ZXJuIHZvaWQgYWRkX3RvX2xvZyAo Y2hhciBjb25zdCAqLCAuLi4pOwogZXh0ZXJuIHZvaWQgdmFkZF90b19sb2cgKGNoYXIgY29u c3QgKiwgdmFfbGlzdCk7CiBleHRlcm4gdm9pZCBjaGVja19tZXNzYWdlX3N0YWNrICh2b2lk KTsKZGlmZiAtLWdpdCBhL3NyYy9taW5pYnVmLmMgYi9zcmMvbWluaWJ1Zi5jCmluZGV4IGFi YzQ4NjYuLjBlMTA3NWIgMTAwNjQ0Ci0tLSBhL3NyYy9taW5pYnVmLmMKKysrIGIvc3JjL21p bmlidWYuYwpAQCAtNzIsMjUgKzcyLDczIEBACiB7CiAgIGlmIChGUkFNRVAgKHNlbGVjdGVk X2ZyYW1lKQogICAgICAgJiYgRlJBTUVfTElWRV9QIChYRlJBTUUgKHNlbGVjdGVkX2ZyYW1l KSkKLSAgICAgICYmICFFUSAobWluaWJ1Zl93aW5kb3csIFhGUkFNRSAoc2VsZWN0ZWRfZnJh bWUpLT5taW5pYnVmZmVyX3dpbmRvdykpCisgICAgICAmJiAoIVdJTkRPV19MSVZFX1AgKG1p bmlidWZfd2luZG93KQorCSAgfHwgIUVRIChtaW5pYnVmX3dpbmRvdywKKwkJICBNSU5JQlVG RkVSX1dJTkRPVyAoWEZSQU1FIChzZWxlY3RlZF9mcmFtZSkpKSkpCiAgICAgewogICAgICAg c3RydWN0IGZyYW1lICpzZiA9IFhGUkFNRSAoc2VsZWN0ZWRfZnJhbWUpOwogICAgICAgTGlz cF9PYmplY3QgYnVmZmVyOwoKLSAgICAgIC8qIEkgZG9uJ3QgdGhpbmsgdGhhdCBhbnkgZnJh bWVzIG1heSB2YWxpZGx5IGhhdmUgYSBudWxsIG1pbmlidWZmZXIKLQkgd2luZG93IGFueW1v cmUuICAqLwotICAgICAgaWYgKE5JTFAgKHNmLT5taW5pYnVmZmVyX3dpbmRvdykpCi0JZW1h Y3NfYWJvcnQgKCk7CisgICAgICBpZiAoIVdJTkRPV19MSVZFX1AgKHNmLT5taW5pYnVmZmVy X3dpbmRvdykpCisJbWluaWJ1Zl93aW5kb3cgPSBtaW5pYnVmZmVyX3dpbmRvdyAoc2YpOwor ICAgICAgLyogVW5kZXIgWCwgd2UgY29tZSBoZXJlIHdpdGggbWluaWJ1Zl93aW5kb3cgYmVp bmcgdGhlCisJIG1pbmlidWZmZXIgd2luZG93IG9mIHRoZSB1bnVzZWQgdGVybWNhcCB3aW5k b3cgY3JlYXRlZCBpbgorCSBpbml0X3dpbmRvd19vbmNlLiAgVGhhdCB3aW5kb3cgZG9lc24n dCBoYXZlIGEgYnVmZmVyLiAgKi8KKyAgICAgIGVsc2UgaWYgKFdJTkRPV19MSVZFX1AgKG1p bmlidWZfd2luZG93KSkKKwl7CisJICBidWZmZXIgPSBYV0lORE9XIChtaW5pYnVmX3dpbmRv dyktPmNvbnRlbnRzOworCSAgaWYgKEJVRkZFUlAgKGJ1ZmZlcikpCisJICAgIC8qIFVzZSBz ZXRfd2luZG93X2J1ZmZlciBpbnN0ZWFkIG9mIEZzZXRfd2luZG93X2J1ZmZlciAoc2VlCisJ ICAgICAgIGRpc2N1c3Npb24gb2YgYnVnIzExOTg0LCBidWcjMTIwMjUsIGJ1ZyMxMjAyNiku ICAqLworCSAgICBzZXRfd2luZG93X2J1ZmZlciAoc2YtPm1pbmlidWZmZXJfd2luZG93LCBi dWZmZXIsIDAsIDApOworCisJICBtaW5pYnVmX3dpbmRvdyA9IHNmLT5taW5pYnVmZmVyX3dp bmRvdzsKKwl9CisgICAgICBlbHNlCisJbWluaWJ1Zl93aW5kb3cgPSBzZi0+bWluaWJ1ZmZl cl93aW5kb3c7CisgICAgfQorCisgIC8qIE1ha2Ugc3VyZSBubyBvdGhlciBmcmFtZSBoYXMg YSBtaW5pYnVmZmVyIGFzIGl0cyBzZWxlY3RlZCB3aW5kb3csCisgICAgIGJlY2F1c2UgdGhl IHRleHQgd291bGQgbm90IGJlIGRpc3BsYXllZCBpbiBpdCwgYW5kIHRoYXQgd291bGQgYmUK KyAgICAgY29uZnVzaW5nLiAgT25seSBhbGxvdyB0aGUgc2VsZWN0ZWQgZnJhbWUgdG8gZG8g dGhpcywKKyAgICAgYW5kIHRoYXQgb25seSBpZiB0aGUgbWluaWJ1ZmZlciBpcyBhY3RpdmUu ICAqLworICB7CisgICAgTGlzcF9PYmplY3QgdGFpbCwgZnJhbWU7CisKKyAgICBGT1JfRUFD SF9GUkFNRSAodGFpbCwgZnJhbWUpCisgICAgICBpZiAoTUlOSUJVRkZFUl9XSU5ET1dfUCAo WFdJTkRPVyAoRlJBTUVfU0VMRUNURURfV0lORE9XIChYRlJBTUUgKGZyYW1lKSkpKQorCSAg JiYgIShFUSAoZnJhbWUsIHNlbGVjdGVkX2ZyYW1lKSAmJiBtaW5pYnVmX2xldmVsID4gMCkp CisJRnNldF9mcmFtZV9zZWxlY3RlZF93aW5kb3cgKGZyYW1lLCBGZnJhbWVfZmlyc3Rfd2lu ZG93IChmcmFtZSksIFFuaWwpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitjaG9vc2VfbWlu aWJ1Zl9mcmFtZV91bndpbmQgKHZvaWQpCit7CisgIGlmIChGUkFNRVAgKHNlbGVjdGVkX2Zy YW1lKQorICAgICAgJiYgRlJBTUVfTElWRV9QIChYRlJBTUUgKHNlbGVjdGVkX2ZyYW1lKSkK KyAgICAgICYmICghV0lORE9XX0xJVkVfUCAobWluaWJ1Zl93aW5kb3cpCisJICB8fCAhRVEg KG1pbmlidWZfd2luZG93LAorCQkgIE1JTklCVUZGRVJfV0lORE9XIChYRlJBTUUgKHNlbGVj dGVkX2ZyYW1lKSkpKSkKKyAgICB7CisgICAgICBzdHJ1Y3QgZnJhbWUgKnNmID0gWEZSQU1F IChzZWxlY3RlZF9mcmFtZSk7CisgICAgICBMaXNwX09iamVjdCBidWZmZXI7CgogICAgICAg LyogVW5kZXIgWCwgd2UgY29tZSBoZXJlIHdpdGggbWluaWJ1Zl93aW5kb3cgYmVpbmcgdGhl CiAJIG1pbmlidWZmZXIgd2luZG93IG9mIHRoZSB1bnVzZWQgdGVybWNhcCB3aW5kb3cgY3Jl YXRlZCBpbgogCSBpbml0X3dpbmRvd19vbmNlLiAgVGhhdCB3aW5kb3cgZG9lc24ndCBoYXZl IGEgYnVmZmVyLiAgKi8KLSAgICAgIGJ1ZmZlciA9IFhXSU5ET1cgKG1pbmlidWZfd2luZG93 KS0+Y29udGVudHM7Ci0gICAgICBpZiAoQlVGRkVSUCAoYnVmZmVyKSkKLQkvKiBVc2Ugc2V0 X3dpbmRvd19idWZmZXIgaW5zdGVhZCBvZiBGc2V0X3dpbmRvd19idWZmZXIgKHNlZQotCSAg IGRpc2N1c3Npb24gb2YgYnVnIzExOTg0LCBidWcjMTIwMjUsIGJ1ZyMxMjAyNikuICAqLwot CXNldF93aW5kb3dfYnVmZmVyIChzZi0+bWluaWJ1ZmZlcl93aW5kb3csIGJ1ZmZlciwgMCwg MCk7Ci0gICAgICBtaW5pYnVmX3dpbmRvdyA9IHNmLT5taW5pYnVmZmVyX3dpbmRvdzsKKyAg ICAgIGlmIChXSU5ET1dfTElWRV9QIChtaW5pYnVmX3dpbmRvdykpCisJeworCSAgYnVmZmVy ID0gWFdJTkRPVyAobWluaWJ1Zl93aW5kb3cpLT5jb250ZW50czsKKwkgIGlmIChCVUZGRVJQ IChidWZmZXIpKQorCSAgICAvKiBVc2Ugc2V0X3dpbmRvd19idWZmZXIgaW5zdGVhZCBvZiBG c2V0X3dpbmRvd19idWZmZXIgKHNlZQorCSAgICAgICBkaXNjdXNzaW9uIG9mIGJ1ZyMxMTk4 NCwgYnVnIzEyMDI1LCBidWcjMTIwMjYpLiAgKi8KKwkgICAgc2V0X3dpbmRvd19idWZmZXIg KHNmLT5taW5pYnVmZmVyX3dpbmRvdywgYnVmZmVyLCAwLCAwKTsKKworCSAgbWluaWJ1Zl93 aW5kb3cgPSBzZi0+bWluaWJ1ZmZlcl93aW5kb3c7CisJfQorICAgICAgZWxzZQorCW1pbmli dWZfd2luZG93ID0gc2YtPm1pbmlidWZmZXJfd2luZG93OwogICAgIH0KCiAgIC8qIE1ha2Ug c3VyZSBubyBvdGhlciBmcmFtZSBoYXMgYSBtaW5pYnVmZmVyIGFzIGl0cyBzZWxlY3RlZCB3 aW5kb3csCkBAIC0xMDEsOSArMTQ5LDggQEAKICAgICBMaXNwX09iamVjdCB0YWlsLCBmcmFt ZTsKCiAgICAgRk9SX0VBQ0hfRlJBTUUgKHRhaWwsIGZyYW1lKQotICAgICAgaWYgKE1JTklf V0lORE9XX1AgKFhXSU5ET1cgKEZSQU1FX1NFTEVDVEVEX1dJTkRPVyAoWEZSQU1FIChmcmFt ZSkpKSkKLQkgICYmICEoRVEgKGZyYW1lLCBzZWxlY3RlZF9mcmFtZSkKLQkgICAgICAgJiYg bWluaWJ1Zl9sZXZlbCA+IDApKQorICAgICAgaWYgKE1JTklCVUZGRVJfV0lORE9XX1AgKFhX SU5ET1cgKEZSQU1FX1NFTEVDVEVEX1dJTkRPVyAoWEZSQU1FIChmcmFtZSkpKSkKKwkgICYm ICEoRVEgKGZyYW1lLCBzZWxlY3RlZF9mcmFtZSkgJiYgbWluaWJ1Zl9sZXZlbCA+IDApKQog CUZzZXRfZnJhbWVfc2VsZWN0ZWRfd2luZG93IChmcmFtZSwgRmZyYW1lX2ZpcnN0X3dpbmRv dyAoZnJhbWUpLCBRbmlsKTsKICAgfQogfQpAQCAtMTEzLDcgKzE2MCw5IEBACiAgICAgICAg ZG9jOiAvKiBSZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgbWluaWJ1ZmZlciB3aW5kb3cs IG9yIG5pbCBpZiBub25lLiAgKi8pCiAgICAgICh2b2lkKQogewotICByZXR1cm4gbWluaWJ1 Zl9sZXZlbCA/IG1pbmlidWZfd2luZG93IDogUW5pbDsKKyAgcmV0dXJuICgobWluaWJ1Zl9s ZXZlbCAmJiBXSU5ET1dfTElWRV9QIChtaW5pYnVmX3dpbmRvdykpCisJICA/IG1pbmlidWZf d2luZG93CisJICA6IFFuaWwpOwogfQoKIERFRlVOICgic2V0LW1pbmlidWZmZXItd2luZG93 IiwgRnNldF9taW5pYnVmZmVyX3dpbmRvdywKQEAgLTEyNCw3ICsxNzMsNyBAQAogICAoTGlz cF9PYmplY3Qgd2luZG93KQogewogICBDSEVDS19XSU5ET1cgKHdpbmRvdyk7Ci0gIGlmICgh IE1JTklfV0lORE9XX1AgKFhXSU5ET1cgKHdpbmRvdykpKQorICBpZiAoIU1JTklCVUZGRVJf V0lORE9XX1AgKFhXSU5ET1cgKHdpbmRvdykpKQogICAgIGVycm9yICgiV2luZG93IGlzIG5v dCBhIG1pbmlidWZmZXIgd2luZG93Iik7CgogICBtaW5pYnVmX3dpbmRvdyA9IHdpbmRvdzsK QEAgLTQ0MywxMyArNDkyLDE4IEBACiAgICAgIGNhbGxpbmcgRnNldF9mcmFtZV9zZWxlY3Rl ZF93aW5kb3cgbWF5IGNoYW5nZSBpdCAoQnVnIzEyNzY2KS4gICovCiAgIHJlY29yZF91bndp bmRfcHJvdGVjdCAocmVzdG9yZV9idWZmZXIsIEZjdXJyZW50X2J1ZmZlciAoKSk7CgotICBj aG9vc2VfbWluaWJ1Zl9mcmFtZSAoKTsKLQotICByZWNvcmRfdW53aW5kX3Byb3RlY3Rfdm9p ZCAoY2hvb3NlX21pbmlidWZfZnJhbWUpOworICByZWNvcmRfdW53aW5kX3Byb3RlY3Rfdm9p ZCAoY2hvb3NlX21pbmlidWZfZnJhbWVfdW53aW5kKTsKCiAgIHJlY29yZF91bndpbmRfcHJv dGVjdCAocmVzdG9yZV93aW5kb3dfY29uZmlndXJhdGlvbiwKIAkJCSBGY3VycmVudF93aW5k b3dfY29uZmlndXJhdGlvbiAoUW5pbCkpOwoKKyAgLyogQXNzdXJlIHRoYXQgbWluaWJ1Zl93 aW5kb3cgaXMgc2V0IHVwIHRvIGEgbWluaWJ1ZmZlciB3aW5kb3cuCisgICAgIE1vdmVkIGhl cmUgYXMgdG8gYXNzdXJlIHRoYXQgaWYgdGhpcyBjcmVhdGVzIGEgbmV3IG1pbmlidWZmZXIK KyAgICAgd2luZG93IG9uIHRoZSBzZWxlY3RlZCBmcmFtZSwgdGhhdCBtaW5pYnVmZmVyIHdp bmRvdyB3aWxsIGJlCisgICAgIGRlbGV0ZWQgd2hlbiB0aGUgb2xkIHdpbmRvdyBjb25maWd1 cmF0aW9uIGZvciB0aGlzIGZyYW1lIGdldHMKKyAgICAgcmVzdG9yZWQuICAqLworICBjaG9v c2VfbWluaWJ1Zl9mcmFtZSAoKTsKKwogICAvKiBJZiB0aGUgbWluaWJ1ZmZlciB3aW5kb3cg aXMgb24gYSBkaWZmZXJlbnQgZnJhbWUsIHNhdmUgdGhhdAogICAgICBmcmFtZSdzIGNvbmZp Z3VyYXRpb24gdG9vLiAgKi8KICAgbWluaV9mcmFtZSA9IFdJTkRPV19GUkFNRSAoWFdJTkRP VyAobWluaWJ1Zl93aW5kb3cpKTsKQEAgLTU3NywxNCArNjMxLDEyIEBACgogICBGT1JfRUFD SF9GUkFNRSAoZHVtbXksIGZyYW1lKQogICAgIHsKLSAgICAgIExpc3BfT2JqZWN0IHJvb3Rf d2luZG93ID0gRmZyYW1lX3Jvb3Rfd2luZG93IChmcmFtZSk7Ci0gICAgICBMaXNwX09iamVj dCBtaW5pX3dpbmRvdyA9IFhXSU5ET1cgKHJvb3Rfd2luZG93KS0+bmV4dDsKLQotICAgICAg aWYgKCEgTklMUCAobWluaV93aW5kb3cpICYmICEgRVEgKG1pbmlfd2luZG93LCBtaW5pYnVm X3dpbmRvdykKLQkgICYmICFOSUxQIChGd2luZG93X21pbmlidWZmZXJfcCAobWluaV93aW5k b3cpKSkKKyAgICAgIGlmIChNSU5JQlVGRkVSX1dJTkRPV19MT0NBTF9QIChYRlJBTUUgKGZy YW1lKSkKKwkgICYmICFFUSAoTUlOSUJVRkZFUl9XSU5ET1cgKFhGUkFNRSAoZnJhbWUpKSwg bWluaWJ1Zl93aW5kb3cpKQogCS8qIFVzZSBzZXRfd2luZG93X2J1ZmZlciBpbnN0ZWFkIG9m IEZzZXRfd2luZG93X2J1ZmZlciAoc2VlCiAJICAgZGlzY3Vzc2lvbiBvZiBidWcjMTE5ODQs IGJ1ZyMxMjAyNSwgYnVnIzEyMDI2KS4gICovCi0Jc2V0X3dpbmRvd19idWZmZXIgKG1pbmlf d2luZG93LCBlbXB0eV9taW5pYnVmLCAwLCAwKTsKKwlzZXRfd2luZG93X2J1ZmZlciAoTUlO SUJVRkZFUl9XSU5ET1cgKFhGUkFNRSAoZnJhbWUpKSwKKwkJCSAgIGVtcHR5X21pbmlidWYs IDAsIDApOwogICAgIH0KCiAgIC8qIERpc3BsYXkgdGhpcyBtaW5pYnVmZmVyIGluIHRoZSBw cm9wZXIgd2luZG93LiAgKi8KQEAgLTgyNSw4ICs4NzcsOSBAQAogICB9CgogICAvKiBXaGVu IHdlIGdldCB0byB0aGUgb3V0bW9zdCBsZXZlbCwgbWFrZSBzdXJlIHdlIHJlc2l6ZSB0aGUK LSAgICAgbWluaS13aW5kb3cgYmFjayB0byBpdHMgbm9ybWFsIHNpemUuICAqLwotICBpZiAo bWluaWJ1Zl9sZXZlbCA9PSAwKQorICAgICBtaW5pLXdpbmRvdyBiYWNrIHRvIGl0cyBub3Jt YWwgc2l6ZSAocHJvdmlkZWQgaXQncyBzdGlsbAorICAgICB0aGVyZSkuICAqLworICBpZiAo V0lORE9XX0xJVkVfUCAod2luZG93KSAmJiBtaW5pYnVmX2xldmVsID09IDApCiAgICAgcmVz aXplX21pbmlfd2luZG93IChYV0lORE9XICh3aW5kb3cpLCAwKTsKCiAgIC8qIERlYWwgd2l0 aCBmcmFtZXMgdGhhdCBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIGV4aXRpbmcgdGhlCkBAIC04 NTcsNyArOTEwLDggQEAKICAgICAgZGVhZCwgd2UgbWF5IGtlZXAgZGlzcGxheWluZyB0aGlz IGJ1ZmZlciAodGhvIGl0J3MgaW5hY3RpdmUpLCBzbyByZXNldCBpdCwKICAgICAgdG8gbWFr ZSBzdXJlIHdlIGRvbid0IGxlYXZlIGFyb3VuZCBiaW5kaW5ncyBhbmQgc3R1ZmYgd2hpY2gg b25seQogICAgICBtYWRlIHNlbnNlIGR1cmluZyB0aGUgcmVhZF9taW5pYnVmIGludm9jYXRp b24uICAqLwotICBjYWxsMCAoaW50ZXJuICgibWluaWJ1ZmZlci1pbmFjdGl2ZS1tb2RlIikp OworICBpZiAoV0lORE9XX0xJVkVfUCAod2luZG93KSkKKyAgICBjYWxsMCAoaW50ZXJuICgi bWluaWJ1ZmZlci1pbmFjdGl2ZS1tb2RlIikpOwogfQogDAoKQEAgLTk2Miw3ICsxMDE2LDgg QEAKICBlbXB0eSBzdHJpbmcuCiBGaWZ0aCBhcmcgSU5IRVJJVC1JTlBVVC1NRVRIT0QsIGlm IG5vbi1uaWwsIG1lYW5zIHRoZSBtaW5pYnVmZmVyIGluaGVyaXRzCiAgdGhlIGN1cnJlbnQg aW5wdXQgbWV0aG9kIGFuZCB0aGUgc2V0dGluZyBvZiBgZW5hYmxlLW11bHRpYnl0ZS1jaGFy YWN0ZXJzJy4gICovKQotICAoTGlzcF9PYmplY3QgcHJvbXB0LCBMaXNwX09iamVjdCBpbml0 aWFsX2lucHV0LCBMaXNwX09iamVjdCBoaXN0b3J5LCBMaXNwX09iamVjdCBkZWZhdWx0X3Zh bHVlLCBMaXNwX09iamVjdCBpbmhlcml0X2lucHV0X21ldGhvZCkKKyAgKExpc3BfT2JqZWN0 IHByb21wdCwgTGlzcF9PYmplY3QgaW5pdGlhbF9pbnB1dCwgTGlzcF9PYmplY3QgaGlzdG9y eSwKKyAgIExpc3BfT2JqZWN0IGRlZmF1bHRfdmFsdWUsIExpc3BfT2JqZWN0IGluaGVyaXRf aW5wdXRfbWV0aG9kKQogewogICBMaXNwX09iamVjdCB2YWw7CiAgIHB0cmRpZmZfdCBjb3Vu dCA9IFNQRUNQRExfSU5ERVggKCk7CmRpZmYgLS1naXQgYS9zcmMvbXNkb3MuYyBiL3NyYy9t c2Rvcy5jCmluZGV4IDZjMGRmYTAuLjMyMDE3NjggMTAwNjQ0Ci0tLSBhL3NyYy9tc2Rvcy5j CisrKyBiL3NyYy9tc2Rvcy5jCkBAIC0xMTgwLDcgKzExODAsNyBAQCBleHRlcm4gdW5zaWdu ZWQgY2hhciAqZW5jb2RlX3Rlcm1pbmFsX2NvZGUgKHN0cnVjdCBnbHlwaCAqLCBpbnQsCiAg IC8qIElmIHdlIGFyZSBpbiB0aGUgZWNobyBhcmVhLCBwdXQgdGhlIGN1cnNvciBhdCB0aGUK ICAgICAgZW5kIG9mIHRoZSBlY2hvIGFyZWEgbWVzc2FnZS4gICovCiAgIGlmICghdXBkYXRl X2N1cnNvcl9wb3MKLSAgICAgICYmIFdJTkRPV19UT1BfRURHRV9MSU5FIChYV0lORE9XIChG UkFNRV9NSU5JQlVGX1dJTkRPVyAoZikpKSA8PSBuZXdfcG9zX1kpCisgICAgICAmJiBXSU5E T1dfVE9QX0VER0VfTElORSAoWFdJTkRPVyAoTUlOSUJVRkZFUl9XSU5ET1cgKGYpKSkgPD0g bmV3X3Bvc19ZKQogICAgIHsKICAgICAgIGludCB0ZW1fWCA9IGN1cnJlbnRfcG9zX1gsIGR1 bW15OwoKQEAgLTEzMTAsOCArMTMxMCw4IEBAIGV4dGVybiB1bnNpZ25lZCBjaGFyICplbmNv ZGVfdGVybWluYWxfY29kZSAoc3RydWN0IGdseXBoICosIGludCwKICAgc3cgPSBYV0lORE9X IChmLT5zZWxlY3RlZF93aW5kb3cpOwogICBmcmFtZV9kZXNpcmVkX2N1cnNvciA9IEZjZHIg KEZhc3NxIChRY3Vyc29yX3R5cGUsIGYtPnBhcmFtX2FsaXN0KSk7CiAgIGlmIChjdXJzb3Jf aW5fZWNob19hcmVhCi0gICAgICAmJiBGUkFNRV9IQVNfTUlOSUJVRl9QIChmKQotICAgICAg JiYgRVEgKEZSQU1FX01JTklCVUZfV0lORE9XIChmKSwgZWNob19hcmVhX3dpbmRvdykKKyAg ICAgICYmIE1JTklCVUZGRVJfV0lORE9XX0xPQ0FMX1AgKGYpCisgICAgICAmJiBFUSAoTUlO SUJVRkZFUl9XSU5ET1cgKGYpLCBlY2hvX2FyZWFfd2luZG93KQogICAgICAgJiYgc3cgPT0g WFdJTkRPVyAoZWNob19hcmVhX3dpbmRvdykpCiAgICAgbmV3X2N1cnNvciA9IGZyYW1lX2Rl c2lyZWRfY3Vyc29yOwogICBlbHNlCmRpZmYgLS1naXQgYS9zcmMvbnNmbnMubSBiL3NyYy9u c2Zucy5tCmluZGV4IDE4NDY1N2YuLjBiYTEzYzIgMTAwNjQ0Ci0tLSBhL3NyYy9uc2Zucy5t CisrKyBiL3NyYy9uc2Zucy5tCkBAIC01NzEsNyArNTcxLDcgQEAgVHVybiB0aGUgaW5wdXQg bWVudSAoYW4gTlNNZW51KSBpbnRvIGEgbGlzcCBsaXN0IGZvciB0cmFja2luZyBvbiBsaXNw IHNpZGUuCiAgICAgICBpZiAoISBGUkFNRV9OU19QIChmKSkgY29udGludWU7CiAgICAgICB3 ID0gWFdJTkRPVyAoRlJBTUVfU0VMRUNURURfV0lORE9XIChmKSk7CiAgICAgICB2aWV3ID0g RlJBTUVfTlNfVklFVyAoZik7Ci0gICAgICBpZiAoIU1JTklfV0lORE9XX1AgKHcpKQorICAg ICAgaWYgKCFNSU5JQlVGRkVSX1dJTkRPV19QICh3KSkKICAgICAgICAgZWRpdGVkID0gISBO SUxQIChGYnVmZmVyX21vZGlmaWVkX3AgKHctPmNvbnRlbnRzKSkgJiYKICAgICAgICAgICAh IE5JTFAgKEZidWZmZXJfZmlsZV9uYW1lICh3LT5jb250ZW50cykpOwogICAgICAgW1t2aWV3 IHdpbmRvd10gc2V0RG9jdW1lbnRFZGl0ZWQ6IGVkaXRlZF07CkBAIC01ODYsNyArNTg2LDcg QEAgVHVybiB0aGUgaW5wdXQgbWVudSAoYW4gTlNNZW51KSBpbnRvIGEgbGlzcCBsaXN0IGZv ciB0cmFja2luZyBvbiBsaXNwIHNpZGUuCiB4X3NldF9tZW51X2Jhcl9saW5lcyAoc3RydWN0 IGZyYW1lICpmLCBMaXNwX09iamVjdCB2YWx1ZSwgTGlzcF9PYmplY3Qgb2xkdmFsKQogewog ICBpbnQgbmxpbmVzOwotICBpZiAoRlJBTUVfTUlOSUJVRl9PTkxZX1AgKGYpKQorICBpZiAo TUlOSUJVRkZFUl9XSU5ET1dfT05MWV9QIChmKSkKICAgICByZXR1cm47CgogICBpZiAoVFlQ RV9SQU5HRURfSU5URUdFUlAgKGludCwgdmFsdWUpKQpAQCAtNjI0LDcgKzYyNCw3IEBAIFR1 cm4gdGhlIGlucHV0IG1lbnUgKGFuIE5TTWVudSkgaW50byBhIGxpc3AgbGlzdCBmb3IgdHJh Y2tpbmcgb24gbGlzcCBzaWRlLgoKICAgTlNUUkFDRSAoInhfc2V0X3Rvb2xfYmFyX2xpbmVz Iik7CgotICBpZiAoRlJBTUVfTUlOSUJVRl9PTkxZX1AgKGYpKQorICBpZiAoTUlOSUJVRkZF Ul9XSU5ET1dfT05MWV9QIChmKSkKICAgICByZXR1cm47CgogICBpZiAoUkFOR0VEX0lOVEVH RVJQICgwLCB2YWx1ZSwgSU5UX01BWCkpCkBAIC0xMTAxLDEzICsxMTAxLDI1IEBAIFR1cm4g dGhlIGlucHV0IG1lbnUgKGFuIE5TTWVudSkgaW50byBhIGxpc3AgbGlzdCBmb3IgdHJhY2tp bmcgb24gbGlzcCBzaWRlLgogICAgICAgZiA9IG1ha2VfbWluaWJ1ZmZlcl9mcmFtZSAoKTsK ICAgICAgIG1pbmlidWZmZXJfb25seSA9IDE7CiAgICAgfQotICBlbHNlIGlmIChXSU5ET1dQ ICh0ZW0pKQotICAgICAgZiA9IG1ha2VfZnJhbWVfd2l0aG91dF9taW5pYnVmZmVyICh0ZW0s IGtiLCBkaXNwbGF5KTsKKyAgZWxzZSBpZiAoV0lORE9XUCAodGVtKSB8fCBFUSAodGVtLCBR bG9vc2UpKQorICAgIGYgPSBtYWtlX2ZyYW1lX3dpdGhvdXRfbWluaWJ1ZmZlciAodGVtLCBr YiwgZGlzcGxheSk7CisgIGVsc2UgaWYgKEVRICh0ZW0sIFF0b3ApKQorICAgIGYgPSBtYWtl X2ZyYW1lIChRdG9wKTsKICAgZWxzZQotICAgICAgZiA9IG1ha2VfZnJhbWUgKDEpOworICAg IGYgPSBtYWtlX2ZyYW1lIChRYm90dG9tKTsKCiAgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOwoK KyAgaWYgKEVRICh0ZW0sIFFsb29zZSkpCisgICAgeworICAgICAgLyogUHJvY2VzcyAnZWNo by1hcmVhJyBwYXJhbWV0ZXIgaGVyZSB0byBtYWtlIHN1cmUgaXQgZ2V0cworCSBhcHBsaWVk IHdoZW4gYW4gZWNobyB3aW5kb3cgaXMgbmVlZGVkLiAgKi8KKyAgICAgIHRlbSA9IHhfZ2V0 X2FyZyAoZHB5aW5mbywgcGFybXMsIFFlY2hvX2FyZWEsICJlY2hvLWFyZWEiLCAiRWNoby1h cmVhIiwKKwkJICAgICAgIFJFU19UWVBFX1NZTUJPTCk7CisgICAgICBpZiAoIU5JTFAgKHRl bSkpCisJc3RvcmVfZnJhbWVfcGFyYW0gKGYsIFFlY2hvX2FyZWEsIHRlbSk7CisgICAgfQor CiAgIGYtPnRlcm1pbmFsID0gZHB5aW5mby0+dGVybWluYWw7CgogICBmLT5vdXRwdXRfbWV0 aG9kID0gb3V0cHV0X25zOwpAQCAtMTM4NCw3ICsxMzk2LDcgQEAgVHVybiB0aGUgaW5wdXQg bWVudSAoYW4gTlNNZW51KSBpbnRvIGEgbGlzcCBsaXN0IGZvciB0cmFja2luZyBvbiBsaXNw IHNpZGUuCiAgICAgICAgIH0KICAgICB9CgotICBpZiAoRlJBTUVfSEFTX01JTklCVUZfUCAo ZikKKyAgaWYgKE1JTklCVUZGRVJfV0lORE9XX0xPQ0FMX1AgKGYpCiAgICAgICAmJiAoIUZS QU1FUCAoS1ZBUiAoa2IsIFZkZWZhdWx0X21pbmlidWZmZXJfZnJhbWUpKQogICAgICAgICAg IHx8ICFGUkFNRV9MSVZFX1AgKFhGUkFNRSAoS1ZBUiAoa2IsIFZkZWZhdWx0X21pbmlidWZm ZXJfZnJhbWUpKSkpKQogICAgIGtzZXRfZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1lIChrYiwg ZnJhbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL25zdGVybS5tIGIvc3JjL25zdGVybS5tCmluZGV4 IGExNTY4NGQuLjJkZmY5YWEgMTAwNjQ0Ci0tLSBhL3NyYy9uc3Rlcm0ubQorKysgYi9zcmMv bnN0ZXJtLm0KQEAgLTI1OTUsMTEgKzI1OTUsMTMgQEAgc28gc29tZSBrZXkgcHJlc3NlcyAo VEFCKSBhcmUgc3dhbGxvd2VkIGJ5IHRoZSBzeXN0ZW0uICAqLwogICAgICAgWEZSQU1FIChm cmFtZSktPm1vdXNlX21vdmVkID0gMDsKCiAgIGRweWluZm8tPmxhc3RfbW91c2Vfc2Nyb2xs X2JhciA9IG5pbDsKKyAgZiA9IGRweWluZm8tPnhfZm9jdXNfZnJhbWUgPyBkcHlpbmZvLT54 X2ZvY3VzX2ZyYW1lIDogU0VMRUNURURfRlJBTUUgKCk7CiAgIGlmIChkcHlpbmZvLT5sYXN0 X21vdXNlX2ZyYW1lCisgICAgICAvKiBXaGlsZSBkcm9wcGluZyB1c2UgdGhlIGxhc3QgbW91 c2UgZnJhbWUgb25seSBpZiB0aGVyZSBpcyBubworCSBjdXJyZW50bHkgZm9jdXNlZCBmcmFt ZS4gICovCisgICAgICAmJiAoIUVRICh0cmFja19tb3VzZSwgUWRyb3BwaW5nKSB8fCAhZikK ICAgICAgICYmIEZSQU1FX0xJVkVfUCAoZHB5aW5mby0+bGFzdF9tb3VzZV9mcmFtZSkpCiAg ICAgZiA9IGRweWluZm8tPmxhc3RfbW91c2VfZnJhbWU7Ci0gIGVsc2UKLSAgICBmID0gZHB5 aW5mby0+eF9mb2N1c19mcmFtZSA/IGRweWluZm8tPnhfZm9jdXNfZnJhbWUgOiBTRUxFQ1RF RF9GUkFNRSAoKTsKCiAgIGlmIChmICYmIEZSQU1FX05TX1AgKGYpKQogICAgIHsKZGlmZiAt LWdpdCBhL3NyYy90ZXJtLmMgYi9zcmMvdGVybS5jCmluZGV4IGY1ZmNhN2YuLjU4NmFkMTYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXJtLmMKKysrIGIvc3JjL3Rlcm0uYwpAQCAtMzA0NCwxOCAr MzA0NCwxOCBAQCBzdHJ1Y3QgdHR5X21lbnVfc3RhdGUKICAgICAgIGJvb2wgdXNhYmxlX2lu cHV0ID0gMTsKICAgICAgIG1pX3Jlc3VsdCBzdCA9IE1JX0NPTlRJTlVFOwogICAgICAgc3Ry dWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9IEZSQU1FX1RUWSAoc2YpOwotICAgICAgTGlz cF9PYmplY3Qgc2F2ZWRfbW91c2VfdHJhY2tpbmcgPSBkb19tb3VzZV90cmFja2luZzsKKyAg ICAgIExpc3BfT2JqZWN0IG9sZF90cmFja19tb3VzZSA9IHRyYWNrX21vdXNlOwoKICAgICAg IC8qIFNpZ25hbCB0aGUga2V5Ym9hcmQgcmVhZGluZyByb3V0aW5lcyB3ZSBhcmUgZGlzcGxh eWluZyBhIG1lbnUKIAkgb24gdGhpcyB0ZXJtaW5hbC4gICovCiAgICAgICB0dHktPnNob3dp bmdfbWVudSA9IDE7CiAgICAgICAvKiBXZSB3YW50IG1vdXNlIG1vdmVtZW50cyBiZSByZXBv cnRlZCBieSByZWFkX21lbnVfY29tbWFuZC4gICovCi0gICAgICBkb19tb3VzZV90cmFja2lu ZyA9IFF0OworICAgICAgdHJhY2tfbW91c2UgPSBRdDsKICAgICAgIGRvIHsKIAljbWQgPSBy ZWFkX21lbnVfY29tbWFuZCAoKTsKICAgICAgIH0gd2hpbGUgKE5JTFAgKGNtZCkpOwogICAg ICAgdHR5LT5zaG93aW5nX21lbnUgPSAwOwotICAgICAgZG9fbW91c2VfdHJhY2tpbmcgPSBz YXZlZF9tb3VzZV90cmFja2luZzsKKyAgICAgIHRyYWNrX21vdXNlID0gb2xkX3RyYWNrX21v dXNlOwoKICAgICAgIGlmIChFUSAoY21kLCBRdCkgfHwgRVEgKGNtZCwgUXR0eV9tZW51X2V4 aXQpCiAJICAvKiBJZiBzb21lIGlucHV0IHN3aXRjaGVkIGZyYW1lcyB1bmRlciBvdXIgZmVl dCwgZXhpdCB0aGUKQEAgLTM2NjQsMTEgKzM2NjQsMTIgQEAgc3RydWN0IHR0eV9wb3BfZG93 bl9tZW51CiAgICAgICB1bHkgPSBkaXNwaGVpZ2h0IC0gaGVpZ2h0OwogICAgIH0KCi0gIGlm IChGUkFNRV9IQVNfTUlOSUJVRl9QIChmKSAmJiB1bHkgKyBoZWlnaHQgPiBkaXNwaGVpZ2h0 IC0gMikKKyAgaWYgKE1JTklCVUZGRVJfV0lORE9XX0xPQ0FMX1AgKGYpICYmIHVseSArIGhl aWdodCA+IGRpc3BoZWlnaHQgLSAyKQogICAgIHsKICAgICAgIC8qIE1vdmUgdGhlIG1lbnUg YXdheSBvZiB0aGUgZWNobyBhcmVhLCB0byBhdm9pZCBvdmVyd3JpdGluZyB0aGUKIAkgbWVu dSB3aXRoIGhlbHAgZWNobyBtZXNzYWdlcyBvciB2aWNlIHZlcnNhLiAgKi8KLSAgICAgIGlm IChCVUZGRVJQIChlY2hvX2FyZWFfYnVmZmVyWzBdKSAmJiBXSU5ET1dQIChlY2hvX2FyZWFf d2luZG93KSkKKyAgICAgIGlmIChCVUZGRVJQIChlY2hvX2FyZWFfYnVmZmVyWzBdKQorCSAg JiYgV0lORE9XX0xJVkVfUCAoZWNob19hcmVhX3dpbmRvdykpCiAJewogCSAgeSAtPSBXSU5E T1dfVE9UQUxfTElORVMgKFhXSU5ET1cgKGVjaG9fYXJlYV93aW5kb3cpKSArIDE7CiAJICB1 bHkgLT0gV0lORE9XX1RPVEFMX0xJTkVTIChYV0lORE9XIChlY2hvX2FyZWFfd2luZG93KSkg KyAxOwpkaWZmIC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IDc2 MDgwMWMuLmRlODQ0M2UgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMvdzMy Zm5zLmMKQEAgLTE3MjIsNyArMTcyMiw3IEBAIHN0cnVjdCBmcmFtZSAqCiAgICAgIGZyYW1l IGl0c2VsZiwgYW5kIGdldCBhbiBlcnJvciBiZWNhdXNlIHlvdSBjYW4ndCBzd2l0Y2ggYnVm ZmVycyBpbgogICAgICBvciBzcGxpdCB0aGUgbWluaWJ1ZmZlciB3aW5kb3cuICBDaGlsZCBm cmFtZXMgZG9uJ3QgbGlrZSBtZW51IGJhcnMKICAgICAgZWl0aGVyLiAgKi8KLSAgaWYgKCFG UkFNRV9NSU5JQlVGX09OTFlfUCAoZikgJiYgIUZSQU1FX1BBUkVOVF9GUkFNRSAoZikpCisg IGlmICghTUlOSUJVRkZFUl9XSU5ET1dfT05MWV9QIChmKSAmJiAhRlJBTUVfUEFSRU5UX0ZS QU1FIChmKSkKICAgICB7CiAgICAgICBib29sZWFuIG9sZCA9IEZSQU1FX0VYVEVSTkFMX01F TlVfQkFSIChmKTsKICAgICAgIGJvb2xlYW4gbmV3ID0gKElOVEVHRVJQICh2YWx1ZSkgJiYg WElOVCAodmFsdWUpID4gMCkgPyB0cnVlIDogZmFsc2U7CkBAIC0xNzc2LDcgKzE3NzYsNyBA QCBzdHJ1Y3QgZnJhbWUgKgogICBpbnQgbmxpbmVzOwoKICAgLyogVHJlYXQgdG9vbCBiYXJz IGxpa2UgbWVudSBiYXJzLiAgKi8KLSAgaWYgKEZSQU1FX01JTklCVUZfT05MWV9QIChmKSkK KyAgaWYgKE1JTklCVUZGRVJfV0lORE9XX09OTFlfUCAoZikpCiAgICAgcmV0dXJuOwoKICAg LyogVXNlIFZBTFVFIG9ubHkgaWYgYW4gaW50ZWdlciA+PSAwLiAgKi8KQEAgLTQ1NzYsNyAr NDU3Niw4IEBAIHN0cnVjdCBmcmFtZSAqCiAJaWYgKGJ1dHRvbl9zdGF0ZSAmIHRoaXMpCiAJ ICByZXR1cm4gMDsKCi0JaWYgKGJ1dHRvbl9zdGF0ZSA9PSAwKQorCS8qIERvbid0IGNhcHR1 cmUgbW91c2Ugd2hlbiBkcm9wcGluZy4gICovCisJaWYgKGJ1dHRvbl9zdGF0ZSA9PSAwICYm ICFFUSAodHJhY2tfbW91c2UsIFFkcm9wcGluZykpCiAJICBTZXRDYXB0dXJlIChod25kKTsK CiAJYnV0dG9uX3N0YXRlIHw9IHRoaXM7CkBAIC00Njk3LDggKzQ2OTgsMTEgQEAgc3RydWN0 IGZyYW1lICoKCiAJaWYgKHBhcnNlX2J1dHRvbiAobXNnLCBISVdPUkQgKHdQYXJhbSksICZi dXR0b24sICZ1cCkpCiAJICB7Ci0JICAgIGlmICh1cCkgUmVsZWFzZUNhcHR1cmUgKCk7Ci0J ICAgIGVsc2UgU2V0Q2FwdHVyZSAoaHduZCk7CisJICAgIGlmICh1cCkKKwkgICAgICBSZWxl YXNlQ2FwdHVyZSAoKTsKKwkgICAgLyogRG9uJ3QgY2FwdHVyZSBtb3VzZSB3aGVuIGRyb3Bw aW5nLiAgKi8KKwkgICAgZWxzZSBpZiAoIUVRICh0cmFja19tb3VzZSwgUWRyb3BwaW5nKSkK KwkgICAgICBTZXRDYXB0dXJlIChod25kKTsKIAkgICAgYnV0dG9uID0gKGJ1dHRvbiA9PSAw KSA/IExNT1VTRSA6CiAJICAgICAgKChidXR0b24gPT0gMSkgPyBNTU9VU0UgIDogUk1PVVNF KTsKIAkgICAgaWYgKHVwKQpAQCAtNTM0MSw4ICs1MzQ1LDkgQEAgc3RydWN0IGZyYW1lICoK IAllbHNlIGlmIChidXR0b25fc3RhdGUgJiBSTU9VU0UpCiAJICBmbGFncyB8PSBUUE1fUklH SFRCVVRUT047CgotCS8qIFJlbWVtYmVyIHdlIGRpZCBhIFNldENhcHR1cmUgb24gdGhlIGlu aXRpYWwgbW91c2UgZG93biBldmVudCwKLQkgICBzbyBmb3Igc2FmZXR5LCB3ZSBtYWtlIHN1 cmUgdGhlIGNhcHR1cmUgaXMgY2FuY2VsZWQgbm93LiAgKi8KKwkvKiBXZSBtYXkgaGF2ZSBk b25lIGEgU2V0Q2FwdHVyZSBvbiB0aGUgaW5pdGlhbCBtb3VzZSBkb3duCisJICAgZXZlbnQs IHNvIGZvciBzYWZldHksIG1ha2Ugc3VyZSB0aGUgY2FwdHVyZSBpcyBjYW5jZWxlZAorCSAg IG5vdy4gICovCiAJUmVsZWFzZUNhcHR1cmUgKCk7CiAJYnV0dG9uX3N0YXRlID0gMDsKCkBA IC01NzQzLDEzICs1NzQ4LDI1IEBAIHN0cnVjdCBmcmFtZSAqCiAgICAgICBmID0gbWFrZV9t aW5pYnVmZmVyX2ZyYW1lICgpOwogICAgICAgbWluaWJ1ZmZlcl9vbmx5ID0gdHJ1ZTsKICAg ICB9Ci0gIGVsc2UgaWYgKFdJTkRPV1AgKHRlbSkpCisgIGVsc2UgaWYgKFdJTkRPV1AgKHRl bSkgfHwgRVEgKHRlbSwgUWxvb3NlKSkKICAgICBmID0gbWFrZV9mcmFtZV93aXRob3V0X21p bmlidWZmZXIgKHRlbSwga2IsIGRpc3BsYXkpOworICBlbHNlIGlmIChFUSAodGVtLCBRdG9w KSkKKyAgICBmID0gbWFrZV9mcmFtZSAoUXRvcCk7CiAgIGVsc2UKLSAgICBmID0gbWFrZV9m cmFtZSAodHJ1ZSk7CisgICAgZiA9IG1ha2VfZnJhbWUgKFFib3R0b20pOwoKICAgWFNFVEZS QU1FIChmcmFtZSwgZik7CgorICBpZiAoRVEgKHRlbSwgUWxvb3NlKSkKKyAgICB7CisgICAg ICAvKiBQcm9jZXNzICdlY2hvLWFyZWEnIHBhcmFtZXRlciBoZXJlIHRvIG1ha2Ugc3VyZSBp dCBnZXRzCisJIGFwcGxpZWQgd2hlbiBhbiBlY2hvIHdpbmRvdyBpcyBuZWVkZWQuICAqLwor ICAgICAgdGVtID0geF9nZXRfYXJnIChkcHlpbmZvLCBwYXJhbWV0ZXJzLCBRZWNob19hcmVh LCAiZWNoby1hcmVhIiwgIkVjaG8tYXJlYSIsCisJCSAgICAgICBSRVNfVFlQRV9TWU1CT0wp OworICAgICAgaWYgKCFOSUxQICh0ZW0pKQorCXN0b3JlX2ZyYW1lX3BhcmFtIChmLCBRZWNo b19hcmVhLCB0ZW0pOworICAgIH0KKwogICBwYXJlbnRfZnJhbWUgPSB4X2dldF9hcmcgKGRw eWluZm8sIHBhcmFtZXRlcnMsIFFwYXJlbnRfZnJhbWUsIE5VTEwsIE5VTEwsCiAJCQkgICAg UkVTX1RZUEVfU1lNQk9MKTsKICAgLyogQXBwbHkgYHBhcmVudC1mcmFtZScgcGFyYW1ldGVy IG9ubHkgd2hlbiBubyBgcGFyZW50LWlkJyB3YXMKQEAgLTYwNjAsNyArNjA3Nyw3IEBAIHN0 cnVjdCBmcmFtZSAqCgogICAvKiBJbml0aWFsaXplIGBkZWZhdWx0LW1pbmlidWZmZXItZnJh bWUnIGluIGNhc2UgdGhpcyBpcyB0aGUgZmlyc3QKICAgICAgZnJhbWUgb24gdGhpcyB0ZXJt aW5hbC4gICovCi0gIGlmIChGUkFNRV9IQVNfTUlOSUJVRl9QIChmKQorICBpZiAoTUlOSUJV RkZFUl9XSU5ET1dfTE9DQUxfUCAoZikKICAgICAgICYmICghRlJBTUVQIChLVkFSIChrYiwg VmRlZmF1bHRfbWluaWJ1ZmZlcl9mcmFtZSkpCiAJICB8fCAhRlJBTUVfTElWRV9QIChYRlJB TUUgKEtWQVIgKGtiLCBWZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1lKSkpKSkKICAgICBrc2V0 X2RlZmF1bHRfbWluaWJ1ZmZlcl9mcmFtZSAoa2IsIGZyYW1lKTsKQEAgLTcxNDIsOCArNzE1 OSw4IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVfdGlwX3h5IChzdHJ1Y3QgZnJhbWUgKiwgTGlz cF9PYmplY3QsIExpc3BfT2JqZWN0LAogICoKICAqIEhpZGUgY3VycmVudGx5IHZpc2libGUg dG9vbHRpcCBhbmQgY2FuY2VsIGl0cyB0aW1lci4KICAqCi0gKiBUaGlzIHdpbGwgdHJ5IHRv IG1ha2UgdG9vbHRpcF9mcmFtZSBpbnZpc2libGUgKGlmIERFTEVURSBpcyBmYWxzZSkKLSAq IG9yIGRlbGV0ZSB0b29sdGlwX2ZyYW1lIChpZiBERUxFVEUgaXMgdHJ1ZSkuCisgKiBUaGlz IHdpbGwgdHJ5IHRvIG1ha2UgdGlwX2ZyYW1lIGludmlzaWJsZSAoaWYgREVMRVRFIGlzIGZh bHNlKSBvcgorICogZGVsZXRlIHRpcF9mcmFtZSAoaWYgREVMRVRFIGlzIHRydWUpLgogICoK ICAqIFJldHVybiBRdCBpZiB0aGUgdG9vbHRpcCB3YXMgZWl0aGVyIGRlbGV0ZWQgb3IgbWFk ZSBpbnZpc2libGUsIFFuaWwKICAqIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL3NyYy93MzJ0 ZXJtLmMgYi9zcmMvdzMydGVybS5jCmluZGV4IDBhZTE3M2EuLmU1NDdjODUgMTAwNjQ0Ci0t LSBhL3NyYy93MzJ0ZXJtLmMKKysrIGIvc3JjL3czMnRlcm0uYwpAQCAtMzQ5MCw3MiArMzQ5 MCw3OCBAQCBzdGF0aWMgdm9pZCB4X2hvcml6b250YWxfc2Nyb2xsX2Jhcl9yZXBvcnRfbW90 aW9uIChzdHJ1Y3QgZnJhbWUgKiosIExpc3BfT2JqZWN0CgogICAgICAgLyogTm93IHdlIGhh dmUgYSBwb3NpdGlvbiBvbiB0aGUgcm9vdDsgZmluZCB0aGUgaW5uZXJtb3N0IHdpbmRvdwog CSBjb250YWluaW5nIHRoZSBwb2ludGVyLiAgKi8KLSAgICAgIHsKLQkvKiBJZiBtb3VzZSB3 YXMgZ3JhYmJlZCBvbiBhIGZyYW1lLCBnaXZlIGNvb3JkcyBmb3IgdGhhdAotCSAgIGZyYW1l IGV2ZW4gaWYgdGhlIG1vdXNlIGlzIG5vdyBvdXRzaWRlIGl0LiAgT3RoZXJ3aXNlCi0JICAg Y2hlY2sgZm9yIHdpbmRvdyB1bmRlciBtb3VzZSBvbiBvbmUgb2Ygb3VyIGZyYW1lcy4gICov Ci0JaWYgKHhfbW91c2VfZ3JhYmJlZCAoZHB5aW5mbykpCi0JICBmMSA9IGRweWluZm8tPmxh c3RfbW91c2VfZnJhbWU7Ci0JZWxzZQotCSAgewotCSAgICBIV05EIHdmcCA9IFdpbmRvd0Zy b21Qb2ludCAocHQpOwoKLQkgICAgaWYgKHdmcCkKLQkgICAgICB7Ci0JCWYxID0geF9hbnlf d2luZG93X3RvX2ZyYW1lIChkcHlpbmZvLCB3ZnApOwotCQlpZiAoZjEpCi0JCSAgewotCQkg ICAgSFdORCBjd2ZwID0gQ2hpbGRXaW5kb3dGcm9tUG9pbnQgKHdmcCwgcHQpOworICAgICAg LyogSWYgbW91c2Ugd2FzIGdyYWJiZWQgb24gYSBmcmFtZSBhbmQgd2UgYXJlIG5vdCBkcm9w cGluZywKKwkgZ2l2ZSBjb29yZHMgZm9yIHRoYXQgZnJhbWUgZXZlbiBpZiB0aGUgbW91c2Ug aXMgbm93IG91dHNpZGUKKwkgaXQuICBPdGhlcndpc2UgY2hlY2sgZm9yIHdpbmRvdyB1bmRl ciBtb3VzZSBvbiBvbmUgb2Ygb3VyCisJIGZyYW1lcy4gICovCisgICAgICBpZiAoeF9tb3Vz ZV9ncmFiYmVkIChkcHlpbmZvKSAmJiAhRVEgKHRyYWNrX21vdXNlLCBRZHJvcHBpbmcpKQor CWYxID0gZHB5aW5mby0+bGFzdF9tb3VzZV9mcmFtZTsKKyAgICAgIGVsc2UKKwl7CisJICBI V05EIHdmcCA9IFdpbmRvd0Zyb21Qb2ludCAocHQpOwoKLQkJICAgIGlmIChjd2ZwKQotCQkg ICAgICB7Ci0JCQlzdHJ1Y3QgZnJhbWUgKmYyID0geF9hbnlfd2luZG93X3RvX2ZyYW1lIChk cHlpbmZvLCBjd2ZwKTsKKwkgIGlmICh3ZnApCisJICAgIHsKKwkgICAgICBmMSA9IHhfd2lu ZG93X3RvX2ZyYW1lIChkcHlpbmZvLCB3ZnApOworCSAgICAgIGlmIChmMSkKKwkJeworCQkg IEhXTkQgY3dmcCA9IENoaWxkV2luZG93RnJvbVBvaW50ICh3ZnAsIHB0KTsKCi0JCQkvKiBJ ZiBhIGNoaWxkIHdpbmRvdyB3YXMgZm91bmQsIG1ha2Ugc3VyZSB0aGF0IGl0cwotCQkJICAg ZnJhbWUgaXMgYSBjaGlsZCBmcmFtZSAoQnVnIzI2NjE1LCBtYXliZSkuICAqLwotCQkJaWYg KGYyICYmIEZSQU1FX1BBUkVOVF9GUkFNRSAoZjIpKQotCQkJICBmMSA9IGYyOwotCQkgICAg ICB9Ci0JCSAgfQotCSAgICAgIH0KLQkgIH0KKwkJICBpZiAoY3dmcCkKKwkJICAgIHsKKwkJ ICAgICAgc3RydWN0IGZyYW1lICpmMiA9IHhfd2luZG93X3RvX2ZyYW1lIChkcHlpbmZvLCBj d2ZwKTsKCi0JLyogSWYgbm90LCBpcyBpdCBvbmUgb2Ygb3VyIHNjcm9sbCBiYXJzPyAgKi8K LQlpZiAoISBmMSkKLQkgIHsKLQkgICAgc3RydWN0IHNjcm9sbF9iYXIgKmJhcgotICAgICAg ICAgICAgICA9IHhfd2luZG93X3RvX3Njcm9sbF9iYXIgKFdpbmRvd0Zyb21Qb2ludCAocHQp LCAyKTsKKwkJICAgICAgLyogSWYgYSBjaGlsZCB3aW5kb3cgd2FzIGZvdW5kLCBtYWtlIHN1 cmUgdGhhdCBpdHMKKwkJCSBmcmFtZSBpcyBhIGNoaWxkIGZyYW1lIChCdWcjMjY2MTUsIG1h eWJlKS4gICovCisJCSAgICAgIGlmIChmMiAmJiBGUkFNRV9QQVJFTlRfRlJBTUUgKGYyKSkK KwkJCWYxID0gZjI7CisJCSAgICB9CisJCX0KKwkgICAgfQorCX0KCi0JICAgIGlmIChiYXIp Ci0JICAgICAgZjEgPSBYRlJBTUUgKFdJTkRPV19GUkFNRSAoWFdJTkRPVyAoYmFyLT53aW5k b3cpKSk7Ci0JICB9CisgICAgICBpZiAoIWYxIHx8IEZSQU1FX1RPT0xUSVBfUCAoZjEpKQor CS8qIERvbid0IHVzZSBhIHRvb2x0aXAgZnJhbWUuICAqLworCWYxID0gKChFUSAodHJhY2tf bW91c2UsIFFkcm9wcGluZykgJiYgeF9tb3VzZV9ncmFiYmVkIChkcHlpbmZvKSkKKwkgICAg ICA/IGRweWluZm8tPmxhc3RfbW91c2VfZnJhbWUKKwkgICAgICA6IE5VTEwpOworCisgICAg ICAvKiBJZiBub3QsIGlzIGl0IG9uZSBvZiBvdXIgc2Nyb2xsIGJhcnM/ICAqLworICAgICAg aWYgKCFmMSkKKwl7CisJICBzdHJ1Y3Qgc2Nyb2xsX2JhciAqYmFyCisJICAgID0geF93aW5k b3dfdG9fc2Nyb2xsX2JhciAoV2luZG93RnJvbVBvaW50IChwdCksIDIpOwoKLQlpZiAoZjEg PT0gMCAmJiBpbnNpc3QgPiAwKQotCSAgZjEgPSBTRUxFQ1RFRF9GUkFNRSAoKTsKKwkgIGlm IChiYXIpCisJICAgIGYxID0gWEZSQU1FIChXSU5ET1dfRlJBTUUgKFhXSU5ET1cgKGJhci0+ d2luZG93KSkpOworCX0KCi0JaWYgKGYxKQotCSAgewotCSAgICAvKiBPaywgd2UgZm91bmQg YSBmcmFtZS4gIFN0b3JlIGFsbCB0aGUgdmFsdWVzLgotCSAgICAgICBsYXN0X21vdXNlX2ds eXBoIGlzIGEgcmVjdGFuZ2xlIHVzZWQgdG8gcmVkdWNlIHRoZQotCSAgICAgICBnZW5lcmF0 aW9uIG9mIG1vdXNlIGV2ZW50cy4gIFRvIG5vdCBtaXNzIGFueSBtb3Rpb24KLQkgICAgICAg ZXZlbnRzLCB3ZSBtdXN0IGRpdmlkZSB0aGUgZnJhbWUgaW50byByZWN0YW5nbGVzIG9mIHRo ZQotCSAgICAgICBzaXplIG9mIHRoZSBzbWFsbGVzdCBjaGFyYWN0ZXIgdGhhdCBjb3VsZCBi ZSBkaXNwbGF5ZWQKLQkgICAgICAgb24gaXQsIGkuZS4gaW50byB0aGUgc2FtZSByZWN0YW5n bGVzIHRoYXQgbWF0cmljZXMgb24KLQkgICAgICAgdGhlIGZyYW1lIGFyZSBkaXZpZGVkIGlu dG8uICAqLwotCi0JICAgIGRweWluZm8gPSBGUkFNRV9ESVNQTEFZX0lORk8gKGYxKTsKLQkg ICAgU2NyZWVuVG9DbGllbnQgKEZSQU1FX1czMl9XSU5ET1cgKGYxKSwgJnB0KTsKLQkgICAg cmVtZW1iZXJfbW91c2VfZ2x5cGggKGYxLCBwdC54LCBwdC55LCAmZHB5aW5mby0+bGFzdF9t b3VzZV9nbHlwaCk7Ci0JICAgIGRweWluZm8tPmxhc3RfbW91c2VfZ2x5cGhfZnJhbWUgPSBm MTsKLQotCSAgICAqYmFyX3dpbmRvdyA9IFFuaWw7Ci0JICAgICpwYXJ0ID0gc2Nyb2xsX2Jh cl9hYm92ZV9oYW5kbGU7Ci0JICAgICpmcCA9IGYxOwotCSAgICBYU0VUSU5UICgqeCwgcHQu eCk7Ci0JICAgIFhTRVRJTlQgKCp5LCBwdC55KTsKLQkgICAgKnRpbWUgPSBkcHlpbmZvLT5s YXN0X21vdXNlX21vdmVtZW50X3RpbWU7Ci0JICB9Ci0gICAgICB9CisgICAgICBpZiAoIWYx ICYmIGluc2lzdCA+IDApCisJZjEgPSBTRUxFQ1RFRF9GUkFNRSAoKTsKKworICAgICAgaWYg KGYxKQorCXsKKwkgIC8qIE9rLCB3ZSBmb3VuZCBhIGZyYW1lLiAgU3RvcmUgYWxsIHRoZSB2 YWx1ZXMuCisJICAgICBsYXN0X21vdXNlX2dseXBoIGlzIGEgcmVjdGFuZ2xlIHVzZWQgdG8g cmVkdWNlIHRoZQorCSAgICAgZ2VuZXJhdGlvbiBvZiBtb3VzZSBldmVudHMuICBUbyBub3Qg bWlzcyBhbnkgbW90aW9uCisJICAgICBldmVudHMsIHdlIG11c3QgZGl2aWRlIHRoZSBmcmFt ZSBpbnRvIHJlY3RhbmdsZXMgb2YgdGhlCisJICAgICBzaXplIG9mIHRoZSBzbWFsbGVzdCBj aGFyYWN0ZXIgdGhhdCBjb3VsZCBiZSBkaXNwbGF5ZWQKKwkgICAgIG9uIGl0LCBpLmUuIGlu dG8gdGhlIHNhbWUgcmVjdGFuZ2xlcyB0aGF0IG1hdHJpY2VzIG9uCisJICAgICB0aGUgZnJh bWUgYXJlIGRpdmlkZWQgaW50by4gICovCisKKwkgIGRweWluZm8gPSBGUkFNRV9ESVNQTEFZ X0lORk8gKGYxKTsKKwkgIFNjcmVlblRvQ2xpZW50IChGUkFNRV9XMzJfV0lORE9XIChmMSks ICZwdCk7CisJICByZW1lbWJlcl9tb3VzZV9nbHlwaCAoZjEsIHB0LngsIHB0LnksICZkcHlp bmZvLT5sYXN0X21vdXNlX2dseXBoKTsKKwkgIGRweWluZm8tPmxhc3RfbW91c2VfZ2x5cGhf ZnJhbWUgPSBmMTsKKworCSAgKmJhcl93aW5kb3cgPSBRbmlsOworCSAgKnBhcnQgPSBzY3Jv bGxfYmFyX2Fib3ZlX2hhbmRsZTsKKwkgICpmcCA9IGYxOworCSAgWFNFVElOVCAoKngsIHB0 LngpOworCSAgWFNFVElOVCAoKnksIHB0LnkpOworCSAgKnRpbWUgPSBkcHlpbmZvLT5sYXN0 X21vdXNlX21vdmVtZW50X3RpbWU7CisJfQogICAgIH0KCiAgIHVuYmxvY2tfaW5wdXQgKCk7 CkBAIC00NjMxLDYgKzQ2MzcsNDIgQEAgc3RhdGljIHZvaWQgeF9ob3Jpem9udGFsX3Njcm9s bF9iYXJfcmVwb3J0X21vdGlvbiAoc3RydWN0IGZyYW1lICoqLCBMaXNwX09iamVjdAogLyog VGVtcG9yYXJpbHkgc3RvcmUgbGVhZCBieXRlIG9mIERCQ1MgaW5wdXQgc2VxdWVuY2VzLiAg Ki8KIHN0YXRpYyBjaGFyIGRiY3NfbGVhZCA9IDA7CgorLyoqCisgKiBtb3VzZV9vcl93ZGVz Y19mcmFtZToKKyAqCisgKiBXaGVuIG5vdCBkcm9wcGluZyBhbmQgdGhlIG1vdXNlIHdhcyBn cmFiYmVkIGZvciBEUFlJTkZPLCByZXR1cm4gdGhlCisgKiBmcmFtZSB3aGVyZSB0aGUgbW91 c2Ugd2FzIHNlZW4gbGFzdC4gIElmIHRoZXJlJ3Mgbm8gc3VjaCBmcmFtZSwKKyAqIHJldHVy biB0aGUgZnJhbWUgYWNjb3JkaW5nIHRvIFdERVNDLgorICoKKyAqIFdoZW4gZHJvcHBpbmcs IHJldHVybiB0aGUgZnJhbWUgYWNjb3JkaW5nIHRvIFdERVNDLiAgSWYgdGhlcmUncyBubwor ICogc3VjaCBmcmFtZSBhbmQgdGhlIG1vdXNlIHdhcyBncmFiYmVkIGZvciBEUFlJTkZPLCBy ZXR1cm4gdGhlIGZyYW1lCisgKiB3aGVyZSB0aGUgbW91c2Ugd2FzIHNlZW4gbGFzdC4KKyAq CisgKiBJbiBlaXRoZXIgY2FzZSwgbmV2ZXIgcmV0dXJuIGEgdG9vbHRpcCBmcmFtZS4KKyAq Lworc3RhdGljIHN0cnVjdCBmcmFtZSAqCittb3VzZV9vcl93ZGVzY19mcmFtZSAoc3RydWN0 IHczMl9kaXNwbGF5X2luZm8gKmRweWluZm8sIEhXTkQgd2Rlc2MpCit7CisgIHN0cnVjdCBm cmFtZSAqbG1fZiA9ICh4X21vdXNlX2dyYWJiZWQgKGRweWluZm8pCisJCQk/IGRweWluZm8t Pmxhc3RfbW91c2VfZnJhbWUKKwkJCTogTlVMTCk7CisKKyAgaWYgKGxtX2YgJiYgIUVRICh0 cmFja19tb3VzZSwgUWRyb3BwaW5nKSkKKyAgICByZXR1cm4gbG1fZjsKKyAgZWxzZQorICAg IHsKKyAgICAgIHN0cnVjdCBmcmFtZSAqd19mID0geF93aW5kb3dfdG9fZnJhbWUgKGRweWlu Zm8sIHdkZXNjKTsKKworICAgICAgLyogRG8gbm90IHJldHVybiBhIHRvb2x0aXAgZnJhbWUu ICAqLworICAgICAgaWYgKCF3X2YgfHwgRlJBTUVfVE9PTFRJUF9QICh3X2YpKQorCXJldHVy biBFUSAodHJhY2tfbW91c2UsIFFkcm9wcGluZykgPyBsbV9mIDogTlVMTDsKKyAgICAgIGVs c2UKKwkvKiBXaGVuIGRyb3BwaW5nIGl0IHdvdWxkIGJlIHByb2JhYmx5IG5pY2UgdG8gcmFp c2Ugd19mCisJICAgaGVyZS4gICovCisJcmV0dXJuIHdfZjsKKyAgICB9Cit9CisKIC8qIFJl YWQgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBXMzIgc2hlbGwuCiAgICBUaGlzIHJvdXRpbmUg aXMgY2FsbGVkIGJ5IHRoZSBTSUdJTyBoYW5kbGVyLgogICAgV2UgcmV0dXJuIGFzIHNvb24g YXMgdGhlcmUgYXJlIG5vIG1vcmUgZXZlbnRzIHRvIGJlIHJlYWQuCkBAIC00OTAzLDE2ICs0 OTQ1LDEzIEBAIHN0YXRpYyB2b2lkIHhfaG9yaXpvbnRhbF9zY3JvbGxfYmFyX3JlcG9ydF9t b3Rpb24gKHN0cnVjdCBmcmFtZSAqKiwgTGlzcF9PYmplY3QKCiAgICAgICAgICAgcHJldmlv dXNfaGVscF9lY2hvX3N0cmluZyA9IGhlbHBfZWNob19zdHJpbmc7CiAJICBoZWxwX2VjaG9f c3RyaW5nID0gUW5pbDsKLQotCSAgZiA9ICh4X21vdXNlX2dyYWJiZWQgKGRweWluZm8pID8g ZHB5aW5mby0+bGFzdF9tb3VzZV9mcmFtZQotCSAgICAgICA6IHhfd2luZG93X3RvX2ZyYW1l IChkcHlpbmZvLCBtc2cubXNnLmh3bmQpKTsKLQogCSAgaWYgKGhsaW5mby0+bW91c2VfZmFj ZV9oaWRkZW4pCiAJICAgIHsKIAkgICAgICBobGluZm8tPm1vdXNlX2ZhY2VfaGlkZGVuID0g ZmFsc2U7CiAJICAgICAgY2xlYXJfbW91c2VfZmFjZSAoaGxpbmZvKTsKIAkgICAgfQoKKwkg IGYgPSBtb3VzZV9vcl93ZGVzY19mcmFtZSAoZHB5aW5mbywgbXNnLm1zZy5od25kKTsKIAkg IGlmIChmKQogCSAgICB7CiAJICAgICAgLyogTWF5YmUgZ2VuZXJhdGUgU0VMRUNUX1dJTkRP V19FVkVOVHMgZm9yCkBAIC00OTg0LDkgKzUwMjMsNyBAQCBzdGF0aWMgdm9pZCB4X2hvcml6 b250YWxfc2Nyb2xsX2Jhcl9yZXBvcnRfbW90aW9uIChzdHJ1Y3QgZnJhbWUgKiosIExpc3Bf T2JqZWN0CiAJICAgIGludCBidXR0b24gPSAwOwogCSAgICBpbnQgdXAgPSAwOwoKLQkgICAg ZiA9ICh4X21vdXNlX2dyYWJiZWQgKGRweWluZm8pID8gZHB5aW5mby0+bGFzdF9tb3VzZV9m cmFtZQotCQkgOiB4X3dpbmRvd190b19mcmFtZSAoZHB5aW5mbywgbXNnLm1zZy5od25kKSk7 Ci0KKwkgICAgZiA9IG1vdXNlX29yX3dkZXNjX2ZyYW1lIChkcHlpbmZvLCBtc2cubXNnLmh3 bmQpOwogCSAgICBpZiAoZikKIAkgICAgICB7CiAgICAgICAgICAgICAgICAgY29uc3RydWN0 X21vdXNlX2NsaWNrICgmaW5ldiwgJm1zZywgZik7CkBAIC01MDQ1LDkgKzUwODIsNyBAQCBz dGF0aWMgdm9pZCB4X2hvcml6b250YWxfc2Nyb2xsX2Jhcl9yZXBvcnRfbW90aW9uIChzdHJ1 Y3QgZnJhbWUgKiosIExpc3BfT2JqZWN0CiAJY2FzZSBXTV9NT1VTRVdIRUVMOgogICAgICAg ICBjYXNlIFdNX01PVVNFSFdIRUVMOgogCSAgewotCSAgICBmID0gKHhfbW91c2VfZ3JhYmJl ZCAoZHB5aW5mbykgPyBkcHlpbmZvLT5sYXN0X21vdXNlX2ZyYW1lCi0JCSA6IHhfd2luZG93 X3RvX2ZyYW1lIChkcHlpbmZvLCBtc2cubXNnLmh3bmQpKTsKLQorCSAgICBmID0gbW91c2Vf b3Jfd2Rlc2NfZnJhbWUgKGRweWluZm8sIG1zZy5tc2cuaHduZCk7CiAJICAgIGlmIChmKQog CSAgICAgIHsKIAkJaWYgKCFkcHlpbmZvLT53MzJfZm9jdXNfZnJhbWUKQEAgLTU0MDMsNiAr NTQzOCw3IEBAIHN0YXRpYyB2b2lkIHhfaG9yaXpvbnRhbF9zY3JvbGxfYmFyX3JlcG9ydF9t b3Rpb24gKHN0cnVjdCBmcmFtZSAqKiwgTGlzcF9PYmplY3QKIAkgICAgICBpZiAoYW55X2hl bHBfZXZlbnRfcCkKIAkJZG9faGVscCA9IC0xOwogCSAgICB9CisKIAkgIGJyZWFrOwoKIAlj YXNlIFdNX1NFVEZPQ1VTOgpkaWZmIC0tZ2l0IGEvc3JjL3dpbmRvdy5jIGIvc3JjL3dpbmRv dy5jCmluZGV4IDQyMmIwNmEuLjg3NjE2YTYgMTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cuYwor KysgYi9zcmMvd2luZG93LmMKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHN0cnVjdCB3aW5k b3cgKnNldF93aW5kb3dfc2Nyb2xsX2JhcnMgKHN0cnVjdCB3aW5kb3cgKiwgTGlzcF9PYmpl Y3QsCiAgICBieSBzZXR0aW5nIGl0IHRvIG5pbC4gICovCiBMaXNwX09iamVjdCBWd2luZG93 X2xpc3Q7CgotLyogVGhlIG1pbmktYnVmZmVyIHdpbmRvdyBvZiB0aGUgc2VsZWN0ZWQgZnJh bWUuCisvKiBUaGUgbGFzdCBtaW5pYnVmZmVyLXdpbmRvdyB1c2VkLgogICAgTm90ZSB0aGF0 IHlvdSBjYW5ub3QgdGVzdCBmb3IgbWluaS1idWZmZXJuZXNzIG9mIGFuIGFyYml0cmFyeSB3 aW5kb3cKICAgIGJ5IGNvbXBhcmluZyBhZ2FpbnN0IHRoaXM7IGJ1dCB5b3UgY2FuIHRlc3Qg Zm9yIG1pbmktYnVmZmVybmVzcyBvZgogICAgdGhlIHNlbGVjdGVkIHdpbmRvdy4gICovCkBA IC0zNDAsNjMgKzM0MCwyNzAgQEAgc3RydWN0IHdpbmRvdyAqCgogREVGVU4gKCJmcmFtZS1y b290LXdpbmRvdyIsIEZmcmFtZV9yb290X3dpbmRvdywgU2ZyYW1lX3Jvb3Rfd2luZG93LCAw LCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSByb290IHdpbmRvdyBvZiBGUkFN RS1PUi1XSU5ET1cuCi1JZiBvbWl0dGVkLCBGUkFNRS1PUi1XSU5ET1cgZGVmYXVsdHMgdG8g dGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmcmFtZS4KLVdpdGggYSBmcmFtZSBhcmd1bWVudCwg cmV0dXJuIHRoYXQgZnJhbWUncyByb290IHdpbmRvdy4KLVdpdGggYSB3aW5kb3cgYXJndW1l bnQsIHJldHVybiB0aGUgcm9vdCB3aW5kb3cgb2YgdGhhdCB3aW5kb3cncyBmcmFtZS4gICov KQorSWYgRlJBTUUtT1ItV0lORE9XIGlzIG5pbCBvciBvbWl0dGVkLCByZXR1cm4gdGhlIHJv b3Qgd2luZG93IG9mIHRoZQorc2VsZWN0ZWQgZnJhbWUuICBJZiBGUkFNRS1PUi1XSU5ET1cg ZGVub3RlcyBhIGxpdmUgZnJhbWUsIHJldHVybiB0aGUKK3Jvb3Qgd2luZG93IG9mIHRoYXQg ZnJhbWUuICBJZiBGUkFNRS1PUi1XSU5ET1cgZGVub3RlcyBhIHZhbGlkIHdpbmRvdywKK3Jl dHVybiB0aGUgcm9vdCB3aW5kb3cgb2YgdGhhdCB3aW5kb3cncyBmcmFtZS4gIE90aGVyd2lz ZSwgc2lnbmFsIGFuCitlcnJvci4gICovKQogICAoTGlzcF9PYmplY3QgZnJhbWVfb3Jfd2lu ZG93KQogewotICBMaXNwX09iamVjdCB3aW5kb3c7CisgIHJldHVybiBGUkFNRV9ST09UX1dJ TkRPVyAoZGVjb2RlX2ZyYW1lX29yX3dpbmRvdyAoZnJhbWVfb3Jfd2luZG93KSk7Cit9Cgot ICBpZiAoTklMUCAoZnJhbWVfb3Jfd2luZG93KSkKLSAgICB3aW5kb3cgPSBTRUxFQ1RFRF9G UkFNRSAoKS0+cm9vdF93aW5kb3c7Ci0gIGVsc2UgaWYgKFdJTkRPV19WQUxJRF9QIChmcmFt ZV9vcl93aW5kb3cpKQotICAgICAgd2luZG93ID0gWEZSQU1FIChYV0lORE9XIChmcmFtZV9v cl93aW5kb3cpLT5mcmFtZSktPnJvb3Rfd2luZG93OwotICBlbHNlCisvKioKKyAqIGRpc3Bs YXlfYnVmZmVyOgorICoKKyAqIERpc3BsYXkgQlVGRkVSIHZpYSBgZGlzcGxheS1idWZmZXIn LgorICovCitzdGF0aWMgTGlzcF9PYmplY3QKK2Rpc3BsYXlfYnVmZmVyIChMaXNwX09iamVj dCBidWZmZXIsIExpc3BfT2JqZWN0IG5vdF90aGlzX3dpbmRvd19wLCBMaXNwX09iamVjdCBv dmVycmlkZV9mcmFtZSkKK3sKKyAgcmV0dXJuIGNhbGwzIChRZGlzcGxheV9idWZmZXIsIGJ1 ZmZlciwgbm90X3RoaXNfd2luZG93X3AsIG92ZXJyaWRlX2ZyYW1lKTsKK30KKworLyoqCisg KiBkaXNwbGF5X21pbmlidWZmZXI6CisgKgorICogRGlzcGxheSBCVUZGRVIgdmlhIGBkaXNw bGF5LW1pbmlidWZmZXInIG9uIGZyYW1lIEZSQU1FLgorICovCitzdGF0aWMgTGlzcF9PYmpl Y3QKK2Rpc3BsYXlfbWluaWJ1ZmZlciAoTGlzcF9PYmplY3QgYnVmZmVyLCBMaXNwX09iamVj dCBmcmFtZSkKK3sKKyAgcmV0dXJuIGNhbGwyIChRZGlzcGxheV9taW5pYnVmZmVyLCBidWZm ZXIsIGZyYW1lKTsKK30KKworLyoqCisgKiBtaW5pYnVmZmVyX3dpbmRvdzoKKyAqCisgKiBS ZXR1cm4gbWluaWJ1ZmZlciB3aW5kb3cgZm9yIGZyYW1lIEYuICBJZiBGIGhhcyBhIGxpdmUg bWluaWJ1ZmZlcgorICogd2luZG93LCByZXR1cm4gdGhhdCB3aW5kb3cuICBPdGhlcndpc2Us IGlmIEYgaXMgc3VwcG9zZWQgdG8gaGF2ZSBhCisgKiBsb29zZSBtaW5pYnVmZmVyIHdpbmRv dywgdHJ5IHRvIG1ha2UgYSBtaW5pYnVmZmVyIHdpbmRvdyBieSBjYWxsaW5nCisgKiBgZGlz cGxheS1taW5pYnVmZmVyJy4gIElmIHRoaXMgZmFpbHMgb3IgaWYgRiBpcyBzdXBwb3NlZCB0 byBoYXZlIGEKKyAqIGZpeGVkIG1pbmlidWZmZXIgd2luZG93LCBtYWtlIGEgbmV3IG1pbmli dWZmZXItb25seSBmcmFtZSBvbiBGJ3MKKyAqIGRpc3BsYXkuICBJbiBlaXRoZXIgY2FzZSwg c2V0IEYncyBtaW5pYnVmZmVyIHdpbmRvdyB0byB0aGUgbmV3CisgKiBtaW5pYnVmZmVyIHdp bmRvdyBhbmQgcmV0dXJuIHRoYXQgd2luZG93LiAgQWJvcnQgaWYgY3JlYXRpbmcgdGhlCisg KiBuZXcgbWluaWJ1ZmZlci1vbmx5IGZyYW1lIGZhaWxzLgorICovCitMaXNwX09iamVjdAor bWluaWJ1ZmZlcl93aW5kb3cgKHN0cnVjdCBmcmFtZSAqZikKK3sKKyAgTGlzcF9PYmplY3Qg bWluaWJ1ZmZlcl93aW5kb3cgPSBNSU5JQlVGRkVSX1dJTkRPVyAoZik7CisKKyAgaWYgKCFX SU5ET1dfTElWRV9QIChtaW5pYnVmZmVyX3dpbmRvdykpCiAgICAgewotICAgICAgQ0hFQ0tf TElWRV9GUkFNRSAoZnJhbWVfb3Jfd2luZG93KTsKLSAgICAgIHdpbmRvdyA9IFhGUkFNRSAo ZnJhbWVfb3Jfd2luZG93KS0+cm9vdF93aW5kb3c7CisgICAgICBMaXNwX09iamVjdCBmcmFt ZSwgZGlzcGxheSwgbWluaV9mcmFtZTsKKworICAgICAgWFNFVEZSQU1FIChmcmFtZSwgZik7 CisKKyAgICAgIGlmIChFUSAoZ2V0X2ZyYW1lX3BhcmFtIChmLCBRbWluaWJ1ZmZlciksIFFs b29zZSkpCisJeworCSAgTGlzcF9PYmplY3QgYnVmZmVyID0gKE5JTFAgKFZtaW5pYnVmZmVy X2xpc3QpCisJCQkJPyBnZXRfbWluaWJ1ZmZlciAoMCkKKwkJCQk6IEZjYXIgKFZtaW5pYnVm ZmVyX2xpc3QpKTsKKworCSAgWFNFVEZSQU1FIChmcmFtZSwgZik7CisJICAvKiBJZiBGUkFN RSBkb2VzIG5vdCBoYXZlIGEgbGl2ZSBtaW5pYnVmZmVyIHdpbmRvdywgY2FsbAorCSAgICAg YGRpc3BsYXktbWluaWJ1ZmZlcicgdG8gZ2V0IG9uZS4gICovCisJICBtaW5pYnVmZmVyX3dp bmRvdyA9IGRpc3BsYXlfbWluaWJ1ZmZlciAoYnVmZmVyLCBmcmFtZSk7CisJICBpZiAoV0lO RE9XX0xJVkVfUCAobWluaWJ1ZmZlcl93aW5kb3cpKQorCSAgICB7CisJICAgICAgZnNldF9t aW5pYnVmZmVyX3dpbmRvdyAoZiwgbWluaWJ1ZmZlcl93aW5kb3cpOworCSAgICAgIFhXSU5E T1cgKG1pbmlidWZmZXJfd2luZG93KS0+bWluaWJ1ZmZlciA9IHRydWU7CisKKwkgICAgICBy ZXR1cm4gbWluaWJ1ZmZlcl93aW5kb3c7CisJICAgIH0KKwl9CisKKyAgICAgIGRpc3BsYXkg PSBGY2RyIChGYXNzcSAoUWRpc3BsYXksIEZmcmFtZV9wYXJhbWV0ZXJzIChmcmFtZSkpKTsK KyAgICAgIG1pbmlfZnJhbWUgPSBjYWxsMSAoUW1ha2VfaW5pdGlhbF9taW5pYnVmZmVyX2Zy YW1lLCBkaXNwbGF5KTsKKyAgICAgIGlmICghTklMUCAobWluaV9mcmFtZSkpCisJeworCSAg ZnNldF9taW5pYnVmZmVyX3dpbmRvdyAoZiwgRlJBTUVfUk9PVF9XSU5ET1cgKFhGUkFNRSAo bWluaV9mcmFtZSkpKTsKKwkgIG1pbmlidWZmZXJfd2luZG93ID0gZi0+bWluaWJ1ZmZlcl93 aW5kb3c7CisJfQorICAgICAgZWxzZQorCWVtYWNzX2Fib3J0ICgpOwogICAgIH0KCi0gIHJl dHVybiB3aW5kb3c7CisgIHJldHVybiBtaW5pYnVmZmVyX3dpbmRvdzsKIH0KCi1ERUZVTiAo Im1pbmlidWZmZXItd2luZG93IiwgRm1pbmlidWZmZXJfd2luZG93LCBTbWluaWJ1ZmZlcl93 aW5kb3csIDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIG1pbmlidWZmZXIg d2luZG93IGZvciBmcmFtZSBGUkFNRS4KLUlmIEZSQU1FIGlzIG9taXR0ZWQgb3IgbmlsLCBp dCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgZnJhbWUuICAqLykKLSAgKExpc3BfT2JqZWN0 IGZyYW1lKQorREVGVU4gKCJtaW5pYnVmZmVyLXdpbmRvdyIsIEZtaW5pYnVmZmVyX3dpbmRv dywgU21pbmlidWZmZXJfd2luZG93LCAwLCAyLCAwLAorICAgICAgIGRvYzogLyogUmV0dXJu IHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBvZiBGUkFNRS1PUi1XSU5ET1cuCitJZiBGUkFNRS1P Ui1XSU5ET1cgaXMgbmlsIG9yIG9taXR0ZWQsIHJldHVybiB0aGUgbWluaWJ1ZmZlciB3aW5k b3cgb2YKK3RoZSBzZWxlY3RlZCBmcmFtZS4gIElmIEZSQU1FLU9SLVdJTkRPVyBkZW5vdGVz IGEgbGl2ZSBmcmFtZSwgcmV0dXJuCit0aGUgbWluaWJ1ZmZlciB3aW5kb3cgb2YgdGhhdCBm cmFtZS4gIElmIEZSQU1FLU9SLVdJTkRPVyBkZW5vdGVzIGEKK3ZhbGlkIHdpbmRvdywgcmV0 dXJuIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBvZiB0aGF0IHdpbmRvdydzIGZyYW1lLgorT3Ro ZXJ3aXNlLCBzaWduYWwgYW4gZXJyb3IuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBN QVlCRS1OSUwgaXMgbmlsIG9yIG9taXR0ZWQsIHRoaXMgZnVuY3Rpb24KK3dpbGwgdHJ5IHRv IGNyZWF0ZSBhIG1pbmlidWZmZXIgd2luZG93IGFuZCByZXR1cm4gaXQgaWYgdGhlIGZyYW1l CitzcGVjaWZpZWQgYnkgRlJBTUUtT1ItV0lORE9XIGRvZXMgbm90IGhhdmUgYSBsaXZlIG1p bmlidWZmZXIgd2luZG93LgorTUFZQkUtTklMIG5vbi1uaWwgbWVhbnMgdGhhdCB0aGlzIGZ1 bmN0aW9uIHdpbGwgbm90IGJvdGhlciB0byBjcmVhdGUgYQorbmV3IG1pbmlidWZmZXIgd2lu ZG93IGluIHRoYXQgY2FzZSBhbmQgcmV0dXJuIG5pbC4gICovKQorICAgICAoTGlzcF9PYmpl Y3QgZnJhbWVfb3Jfd2luZG93LCBMaXNwX09iamVjdCBtYXliZV9uaWwpCiB7Ci0gIHJldHVy biBGUkFNRV9NSU5JQlVGX1dJTkRPVyAoZGVjb2RlX2xpdmVfZnJhbWUgKGZyYW1lKSk7Cisg IHN0cnVjdCBmcmFtZSAqZiA9IGRlY29kZV9mcmFtZV9vcl93aW5kb3cgKGZyYW1lX29yX3dp bmRvdyk7CisKKyAgaWYgKE5JTFAgKG1heWJlX25pbCkpCisgICAgcmV0dXJuIG1pbmlidWZm ZXJfd2luZG93IChmKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIExpc3BfT2JqZWN0IG1pbmli dWZmZXJfd2luZG93ID0gTUlOSUJVRkZFUl9XSU5ET1cgKGYpOworCisgICAgICByZXR1cm4g KFdJTkRPV19MSVZFX1AgKG1pbmlidWZmZXJfd2luZG93KQorCSAgICAgID8gbWluaWJ1ZmZl cl93aW5kb3cKKwkgICAgICA6IFFuaWwpOworICAgIH0KIH0KCi1ERUZVTiAoIndpbmRvdy1t aW5pYnVmZmVyLXAiLCBGd2luZG93X21pbmlidWZmZXJfcCwKLSAgICAgICBTd2luZG93X21p bmlidWZmZXJfcCwgMCwgMSwgMCwKK0RFRlVOICgid2luZG93LW1pbmlidWZmZXItcCIsIEZ3 aW5kb3dfbWluaWJ1ZmZlcl9wLCBTd2luZG93X21pbmlidWZmZXJfcCwKKyAgICAgICAwLCAx LCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIG5vbi1uaWwgaWYgV0lORE9XIGlzIGEgbWlu aWJ1ZmZlciB3aW5kb3cuCi1XSU5ET1cgbXVzdCBiZSBhIHZhbGlkIHdpbmRvdyBhbmQgZGVm YXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4gICovKQotICAoTGlzcF9PYmplY3Qgd2luZG93 KQorV0lORE9XIG11c3QgYmUgYSB2YWxpZCB3aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBz ZWxlY3RlZCBvbmUuCisKK0lmIFdJTkRPVyBpcyBhIG1pbmlidWZmZXIgd2luZG93LCB0aGUg cmV0dXJuIHZhbHVlIGlzIHRoZSBtaW5pYnVmZmVyCit3aW5kb3cgdHlwZSBvZiBXSU5ET1cg LSAnYm90dG9tJywgJ3RvcCcsICdvbmx5JyBvciAnbG9vc2UnLiAgKi8pCisgICAgIChMaXNw X09iamVjdCB3aW5kb3cpCiB7Ci0gIHJldHVybiBNSU5JX1dJTkRPV19QIChkZWNvZGVfdmFs aWRfd2luZG93ICh3aW5kb3cpKSA/IFF0IDogUW5pbDsKKyAgc3RydWN0IHdpbmRvdyAqdyA9 IGRlY29kZV92YWxpZF93aW5kb3cgKHdpbmRvdyk7CisKKyAgcmV0dXJuIChNSU5JQlVGRkVS X1dJTkRPV19QICh3KQorCSAgPyBGbWluaWJ1ZmZlcl93aW5kb3dfdHlwZSAoV0lORE9XX0ZS QU1FICh3KSkKKwkgIDogUW5pbCk7CiB9CgotLyogRG9uJ3QgbW92ZSB0aGlzIHRvIHdpbmRv dy5lbCAtIHRoaXMgbXVzdCBiZSBhIHNhZmUgcm91dGluZS4gICovCi1ERUZVTiAoImZyYW1l LWZpcnN0LXdpbmRvdyIsIEZmcmFtZV9maXJzdF93aW5kb3csIFNmcmFtZV9maXJzdF93aW5k b3csIDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHRvcG1vc3QsIGxlZnRt b3N0IGxpdmUgd2luZG93IG9uIEZSQU1FLU9SLVdJTkRPVy4KLUlmIG9taXR0ZWQsIEZSQU1F LU9SLVdJTkRPVyBkZWZhdWx0cyB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZyYW1lLgot RWxzZSBpZiBGUkFNRS1PUi1XSU5ET1cgZGVub3RlcyBhIHZhbGlkIHdpbmRvdywgcmV0dXJu IHRoZSBmaXJzdCB3aW5kb3cKLW9mIHRoYXQgd2luZG93J3MgZnJhbWUuICBJZiBGUkFNRS1P Ui1XSU5ET1cgZGVub3RlcyBhIGxpdmUgZnJhbWUsIHJldHVybgotdGhlIGZpcnN0IHdpbmRv dyBvZiB0aGF0IGZyYW1lLiAgKi8pCi0gIChMaXNwX09iamVjdCBmcmFtZV9vcl93aW5kb3cp CisvKioKKyAqIGRpc3BsYXlfZWNobzoKKyAqCisgKiBEaXNwbGF5IEJVRkZFUiB2aWEgYGRp c3BsYXktZWNobycgb24gZnJhbWUgRlJBTUUuCisgKi8KK3N0YXRpYyBMaXNwX09iamVjdAor ZGlzcGxheV9lY2hvIChMaXNwX09iamVjdCBidWZmZXIsIExpc3BfT2JqZWN0IGZyYW1lKQog ewotICBMaXNwX09iamVjdCB3aW5kb3c7CisgIHJldHVybiBjYWxsMiAoUWRpc3BsYXlfZWNo bywgYnVmZmVyLCBmcmFtZSk7Cit9CisKKy8qKgorICogZWNob193aW5kb3c6CisgKgorICog UmV0dXJuIGVjaG8gd2luZG93IGZvciBmcmFtZSBGLiAgSWYgRiBoYXMgYSBsaXZlIGVjaG8g d2luZG93LAorICogcmV0dXJuIHRoYXQgd2luZG93LiAgT3RoZXJ3aXNlLCBpZiBGIGlzIHN1 cHBvc2VkIHRvIGhhdmUgYSBzZXBhcmF0ZQorICogZWNobyB3aW5kb3csIHRyeSB0byBtYWtl IGl0IHZpYSBgZGlzcGxheS1lY2hvJy4gIElmIHRoaXMgZmFpbHMgb3IKKyAqIGlmIEYgaXMg bm90IHN1cHBvc2VkIHRvIGhhdmUgYSBzZXBhcmF0ZSBlY2hvIHdpbmRvdywgcmV0dXJuIHRo ZQorICogbWluaWJ1ZmZlciB3aW5kb3cgb24gRidzIGRpc3BsYXksIG1ha2luZyBvbmUgaWYg bmVjZXNzYXJ5LiAgQWJvcnQKKyAqIGlmIHRoYXQgb3BlcmF0aW9uIGZhaWxzLgorICovCitM aXNwX09iamVjdAorZWNob193aW5kb3cgKHN0cnVjdCBmcmFtZSAqZikKK3sKKyAgTGlzcF9P YmplY3QgZWNob193aW5kb3cgPSBFQ0hPX1dJTkRPVyAoZik7CisKKyAgaWYgKCFXSU5ET1df TElWRV9QIChlY2hvX3dpbmRvdykpCisgICAgeworICAgICAgTGlzcF9PYmplY3QgZnJhbWU7 CgotICBpZiAoTklMUCAoZnJhbWVfb3Jfd2luZG93KSkKLSAgICB3aW5kb3cgPSBTRUxFQ1RF RF9GUkFNRSAoKS0+cm9vdF93aW5kb3c7Ci0gIGVsc2UgaWYgKFdJTkRPV19WQUxJRF9QIChm cmFtZV9vcl93aW5kb3cpKQotICAgIHdpbmRvdyA9IFhGUkFNRSAoV0lORE9XX0ZSQU1FIChY V0lORE9XIChmcmFtZV9vcl93aW5kb3cpKSktPnJvb3Rfd2luZG93OworICAgICAgWFNFVEZS QU1FIChmcmFtZSwgZik7CisKKyAgICAgIC8qIENhbGwgYGRpc3BsYXktZWNobycgdG8gbWFr ZSBhIG5ldyBlY2hvIHdpbmRvdyB3aXRoCisJIGVjaG9fYnVmZmVyWzBdIGFzIGl0cyBidWZm ZXIuICAqLworICAgICAgaWYgKCFOSUxQIChnZXRfZnJhbWVfcGFyYW0gKGYsIFFlY2hvX2Fy ZWEpKQorCSAgJiYgQlVGRkVSUCAoZWNob19idWZmZXJbMF0pCisJICAmJiBCVUZGRVJfTElW RV9QIChYQlVGRkVSIChlY2hvX2J1ZmZlclswXSkpKQorCXsKKwkgIFhTRVRGUkFNRSAoZnJh bWUsIGYpOworCSAgZWNob193aW5kb3cgPSBkaXNwbGF5X2VjaG8gKGVjaG9fYnVmZmVyWzBd LCBmcmFtZSk7CisKKwkgIGlmIChXSU5ET1dfTElWRV9QIChlY2hvX3dpbmRvdykpCisJICAg IHsKKwkgICAgICBmc2V0X2VjaG9fd2luZG93IChmLCBlY2hvX3dpbmRvdyk7CisJICAgICAg WFdJTkRPVyAoZWNob193aW5kb3cpLT5lY2hvID0gdHJ1ZTsKKworCSAgICAgIHJldHVybiBl Y2hvX3dpbmRvdzsKKwkgICAgfQorCX0KKworICAgICAgZWNob193aW5kb3cgPSBtaW5pYnVm ZmVyX3dpbmRvdyAoZik7CisgICAgICBYV0lORE9XIChlY2hvX3dpbmRvdyktPmVjaG8gPSB0 cnVlOworICAgICAgZnNldF9lY2hvX3dpbmRvdyAoZiwgZWNob193aW5kb3cpOworICAgIH0K KworICByZXR1cm4gZWNob193aW5kb3c7Cit9CisKK0RFRlVOICgiZWNoby13aW5kb3ciLCBG ZWNob193aW5kb3csIFNlY2hvX3dpbmRvdywgMCwgMiwgMCwKKyAgICAgICBkb2M6IC8qIFJl dHVybiB0aGUgZWNobyB3aW5kb3cgb2YgRlJBTUUtT1ItV0lORE9XLgorSWYgRlJBTUUtT1It V0lORE9XIGlzIG5pbCBvciBvbWl0dGVkLCByZXR1cm4gdGhlIGVjaG8gd2luZG93IG9mIHRo ZQorc2VsZWN0ZWQgZnJhbWUuICBJZiBGUkFNRS1PUi1XSU5ET1cgZGVub3RlcyBhIGxpdmUg ZnJhbWUsIHJldHVybiB0aGUKK2VjaG8gd2luZG93IG9mIHRoYXQgZnJhbWUuICBJZiBGUkFN RS1PUi1XSU5ET1cgZGVub3RlcyBhIHZhbGlkIHdpbmRvdywKK3JldHVybiB0aGUgZWNobyB3 aW5kb3cgb2YgdGhhdCB3aW5kb3cncyBmcmFtZS4gIE90aGVyd2lzZSwgc2lnbmFsIGFuCitl cnJvci4KKworSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IE1BWUJFLU5JTCBpcyBuaWwgb3Ig b21pdHRlZCwgdGhpcyBmdW5jdGlvbgord2lsbCB0cnkgdG8gY3JlYXRlIGFuIGVjaG8gd2lu ZG93IGFuZCByZXR1cm4gaXQgaWYgdGhlIGZyYW1lIHNwZWNpZmllZAorYnkgRlJBTUUtT1It V0lORE9XIGRvZXMgbm90IGhhdmUgYSBsaXZlIGVjaG8gd2luZG93LiAgTUFZQkUtTklMCitu b24tbmlsIG1lYW5zIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBib3RoZXIgdG8gY3Jl YXRlIGEgbmV3IGVjaG8KK3dpbmRvdyBpbiB0aGF0IGNhc2UgYW5kIHJldHVybiBuaWwuICAq LykKKyAgICAgKExpc3BfT2JqZWN0IGZyYW1lX29yX3dpbmRvdywgTGlzcF9PYmplY3QgbWF5 YmVfbmlsKQoreworICBzdHJ1Y3QgZnJhbWUgKmYgPSBkZWNvZGVfZnJhbWVfb3Jfd2luZG93 IChmcmFtZV9vcl93aW5kb3cpOworCisgIGlmIChOSUxQIChtYXliZV9uaWwpKQorICAgIHJl dHVybiBlY2hvX3dpbmRvdyAoZik7CiAgIGVsc2UKICAgICB7Ci0gICAgICBDSEVDS19MSVZF X0ZSQU1FIChmcmFtZV9vcl93aW5kb3cpOwotICAgICAgd2luZG93ID0gWEZSQU1FIChmcmFt ZV9vcl93aW5kb3cpLT5yb290X3dpbmRvdzsKKyAgICAgIExpc3BfT2JqZWN0IGVjaG9fd2lu ZG93ID0gRUNIT19XSU5ET1cgKGYpOworCisgICAgICByZXR1cm4gKFdJTkRPV19MSVZFX1Ag KGVjaG9fd2luZG93KQorCSAgICAgID8gZWNob193aW5kb3cKKwkgICAgICA6IFFuaWwpOwog ICAgIH0KK30KKworREVGVU4gKCJ3aW5kb3ctZWNoby1wIiwgRndpbmRvd19lY2hvX3AsIFN3 aW5kb3dfZWNob19wLAorICAgICAgIDAsIDEsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4g bm9uLW5pbCBpZiBXSU5ET1cgaXMgYW4gZWNobyB3aW5kb3cuCitXSU5ET1cgbXVzdCBiZSBh IHZhbGlkIHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KKworSWYg V0lORE9XIGlzIGFuIGVjaG8gd2luZG93LCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBtaW5p YnVmZmVyIHdpbmRvdwordHlwZSBvZiBXSU5ET1cncyBmcmFtZSAtICdib3R0b20nLCAndG9w JywgJ29ubHknIG9yICdsb29zZScuICAqLykKKyAgICAgKExpc3BfT2JqZWN0IHdpbmRvdykK K3sKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV92YWxpZF93aW5kb3cgKHdpbmRvdyk7 CisKKyAgcmV0dXJuIChFQ0hPX1dJTkRPV19QICh3KQorCSAgPyBGbWluaWJ1ZmZlcl93aW5k b3dfdHlwZSAoV0lORE9XX0ZSQU1FICh3KSkKKwkgIDogUW5pbCk7Cit9CisKK0RFRlVOICgi d2luZG93LW1pbmktcCIsIEZ3aW5kb3dfbWluaV9wLCBTd2luZG93X21pbmlfcCwKKyAgICAg ICAwLCAxLCAwLAorICAgICAgIGRvYzogLyogUmV0dXJuIG5vbi1uaWwgaWYgV0lORE9XIGlz IGEgbWluaSAobWluaWJ1ZmZlciBvciBlY2hvKSB3aW5kb3cuCitXSU5ET1cgbXVzdCBiZSBh IHZhbGlkIHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4gICovKQor ICAgICAoTGlzcF9PYmplY3Qgd2luZG93KQoreworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVj b2RlX3ZhbGlkX3dpbmRvdyAod2luZG93KTsKKworICByZXR1cm4gTUlOSV9XSU5ET1dfUCAo dykgPyBRdCA6IFFuaWw7Cit9CisKKy8qIERvbid0IG1vdmUgdGhpcyB0byB3aW5kb3cuZWwg LSB0aGlzIG11c3QgYmUgYSBzYWZlIHJvdXRpbmUuICAqLworREVGVU4gKCJmcmFtZS1maXJz dC13aW5kb3ciLCBGZnJhbWVfZmlyc3Rfd2luZG93LCBTZnJhbWVfZmlyc3Rfd2luZG93LCAw LCAxLCAwLAorICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBmaXJzdCB3aW5kb3cgb24gRlJB TUUtT1ItV0lORE9XLgorVGhlIGZpcnN0IHdpbmRvdyBvZiBhIGZyYW1lIGlzIHRoZSB0b3Bt b3N0LCBsZWZ0bW9zdCBsaXZlIHdpbmRvdyBvZgordGhhdCBmcmFtZSdzIHJvb3Qgd2luZG93 LiAgSWYgdGhlIGZyYW1lIGhhcyBhIG1pbmlidWZmZXIgd2luZG93IG9uIGl0cwordG9wLCBp dCBpcyB0aGUgdG9wbW9zdCwgbGVmdG1vc3QgbGl2ZSB3aW5kb3cgZGlzcGxheWVkIGJlbmVh dGggdGhlCittaW5pYnVmZmVyIHdpbmRvdy4KKworSWYgRlJBTUUtT1ItV0lORE9XIGlzIG5p bCBvciBvbWl0dGVkLCByZXR1cm4gdGhlIGZpcnN0IHdpbmRvdyBvZiB0aGUKK3NlbGVjdGVk IGZyYW1lLiAgSWYgRlJBTUUtT1ItV0lORE9XIGRlbm90ZXMgYSBsaXZlIGZyYW1lLCByZXR1 cm4gdGhlCitmaXJzdCB3aW5kb3cgb2YgdGhhdCBmcmFtZS4gIElmIEZSQU1FLU9SLVdJTkRP VyBkZW5vdGVzIGEgdmFsaWQKK3dpbmRvdywgcmV0dXJuIHRoZSBmaXJzdCB3aW5kb3cgb2Yg dGhhdCB3aW5kb3cncyBmcmFtZS4gIE90aGVyd2lzZSwKK3NpZ25hbCBhbiBlcnJvci4gICov KQorICAoTGlzcF9PYmplY3QgZnJhbWVfb3Jfd2luZG93KQoreworICBMaXNwX09iamVjdCB3 aW5kb3cgPSBGUkFNRV9ST09UX1dJTkRPVyAoZGVjb2RlX2ZyYW1lX29yX3dpbmRvdworCQkJ CQkgIChmcmFtZV9vcl93aW5kb3cpKTsKCiAgIHdoaWxlIChXSU5ET1dQIChYV0lORE9XICh3 aW5kb3cpLT5jb250ZW50cykpCiAgICAgd2luZG93ID0gWFdJTkRPVyAod2luZG93KS0+Y29u dGVudHM7CkBAIC00MDcsMjUgKzYxNCwxNCBAQCBzdHJ1Y3Qgd2luZG93ICoKIERFRlVOICgi ZnJhbWUtc2VsZWN0ZWQtd2luZG93IiwgRmZyYW1lX3NlbGVjdGVkX3dpbmRvdywKICAgICAg ICBTZnJhbWVfc2VsZWN0ZWRfd2luZG93LCAwLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0 dXJuIHRoZSBzZWxlY3RlZCB3aW5kb3cgb2YgRlJBTUUtT1ItV0lORE9XLgotSWYgb21pdHRl ZCwgRlJBTUUtT1ItV0lORE9XIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQg ZnJhbWUuCi1FbHNlIGlmIEZSQU1FLU9SLVdJTkRPVyBkZW5vdGVzIGEgdmFsaWQgd2luZG93 LCByZXR1cm4gdGhlIHNlbGVjdGVkCi13aW5kb3cgb2YgdGhhdCB3aW5kb3cncyBmcmFtZS4g IElmIEZSQU1FLU9SLVdJTkRPVyBkZW5vdGVzIGEgbGl2ZSBmcmFtZSwKLXJldHVybiB0aGUg c2VsZWN0ZWQgd2luZG93IG9mIHRoYXQgZnJhbWUuICAqLykKK0lmIEZSQU1FLU9SLVdJTkRP VyBpcyBuaWwgb3Igb21pdHRlZCwgcmV0dXJuIHRoZSBzZWxlY3RlZCB3aW5kb3cuICBJZgor RlJBTUUtT1ItV0lORE9XIGRlbm90ZXMgYSBsaXZlIGZyYW1lLCByZXR1cm4gdGhlIHNlbGVj dGVkIHdpbmRvdyBvZgordGhhdCBmcmFtZS4gIElmIEZSQU1FLU9SLVdJTkRPVyBkZW5vdGVz IGEgdmFsaWQgd2luZG93LCByZXR1cm4gdGhlCitzZWxlY3RlZCB3aW5kb3cgb2YgdGhhdCB3 aW5kb3cncyBmcmFtZS4gIE90aGVyd2lzZSwgc2lnbmFsIGFuCitlcnJvci4gICovKQogICAo TGlzcF9PYmplY3QgZnJhbWVfb3Jfd2luZG93KQogewotICBMaXNwX09iamVjdCB3aW5kb3c7 Ci0KLSAgaWYgKE5JTFAgKGZyYW1lX29yX3dpbmRvdykpCi0gICAgd2luZG93ID0gU0VMRUNU RURfRlJBTUUgKCktPnNlbGVjdGVkX3dpbmRvdzsKLSAgZWxzZSBpZiAoV0lORE9XX1ZBTElE X1AgKGZyYW1lX29yX3dpbmRvdykpCi0gICAgd2luZG93ID0gWEZSQU1FIChXSU5ET1dfRlJB TUUgKFhXSU5ET1cgKGZyYW1lX29yX3dpbmRvdykpKS0+c2VsZWN0ZWRfd2luZG93OwotICBl bHNlCi0gICAgewotICAgICAgQ0hFQ0tfTElWRV9GUkFNRSAoZnJhbWVfb3Jfd2luZG93KTsK LSAgICAgIHdpbmRvdyA9IFhGUkFNRSAoZnJhbWVfb3Jfd2luZG93KS0+c2VsZWN0ZWRfd2lu ZG93OwotICAgIH0KLQotICByZXR1cm4gd2luZG93OworICByZXR1cm4gRlJBTUVfU0VMRUNU RURfV0lORE9XIChkZWNvZGVfZnJhbWVfb3Jfd2luZG93IChmcmFtZV9vcl93aW5kb3cpKTsK IH0KCiBERUZVTiAoInNldC1mcmFtZS1zZWxlY3RlZC13aW5kb3ciLCBGc2V0X2ZyYW1lX3Nl bGVjdGVkX3dpbmRvdywKQEAgLTQ4Myw2ICs2NzksOSBAQCBzdHJ1Y3Qgd2luZG93ICoKCiAg IHcgPSBYV0lORE9XICh3aW5kb3cpOwoKKyAgaWYgKEVDSE9fV0lORE9XX1AgKHcpICYmICFN SU5JQlVGRkVSX1dJTkRPV19QICh3KSkKKyAgICB3ID0gWFdJTkRPVyAod2luZG93KTsKKwog ICAvKiBNYWtlIHRoZSBzZWxlY3RlZCB3aW5kb3cncyBidWZmZXIgY3VycmVudC4gICovCiAg IEZzZXRfYnVmZmVyICh3LT5jb250ZW50cyk7CgpAQCAtNTE4LDYgKzcxNyw3IEBAIHN0cnVj dCB3aW5kb3cgKgogICAgIGZzZXRfc2VsZWN0ZWRfd2luZG93IChzZiwgd2luZG93KTsKCiAg IHNlbGVjdF93aW5kb3dfMSAod2luZG93LCBpbmhpYml0X3BvaW50X3N3YXApOworCiAgIGJz ZXRfbGFzdF9zZWxlY3RlZF93aW5kb3cgKFhCVUZGRVIgKHctPmNvbnRlbnRzKSwgd2luZG93 KTsKCiAgcmVjb3JkX2FuZF9yZXR1cm46CkBAIC0yMzg5LDcgKzI1ODksNyBAQCBzdHJ1Y3Qg TGlzcF9DaGFyX1RhYmxlICoKIH0KCiAvKiBJZiBXSU5ET1cgY2FuIGJlIGRlbGV0ZWQsIGRl bGV0ZSBpdC4gICovCi1zdGF0aWMgdm9pZAordm9pZAogZGVsZXRlX2RlbGV0YWJsZV93aW5k b3cgKExpc3BfT2JqZWN0IHdpbmRvdykKIHsKICAgaWYgKCFOSUxQIChjYWxsMSAoUXdpbmRv d19kZWxldGFibGVfcCwgd2luZG93KSkpCkBAIC0yNDQzLDI2ICsyNjQzLDMzIEBAIHN0cnVj dCBMaXNwX0NoYXJfVGFibGUgKgogICByZXR1cm4gVndpbmRvd19saXN0OwogfQoKLQotLyog VmFsdWUgaXMgdHJ1ZSBpZiBXSU5ET1cgc2F0aXNmaWVzIHRoZSBjb25zdHJhaW50cyBnaXZl biBieQotICAgT1dJTkRPVywgTUlOSUJVRiBhbmQgQUxMX0ZSQU1FUy4KLQotICAgTUlOSUJV Rgl0IG1lYW5zIFdJTkRPVyBtYXkgYmUgbWluaWJ1ZmZlciB3aW5kb3dzLgotCQlgbGFtYmRh JyBtZWFucyBXSU5ET1cgbWF5IG5vdCBiZSBhIG1pbmlidWZmZXIgd2luZG93LgotCQlhIHdp bmRvdyBtZWFucyBhIHNwZWNpZmljIG1pbmlidWZmZXIgd2luZG93Ci0KLSAgIEFMTF9GUkFN RVMJdCBtZWFucyBzZWFyY2ggYWxsIGZyYW1lcywKLQkJbmlsIG1lYW5zIHNlYXJjaCBqdXN0 IGN1cnJlbnQgZnJhbWUsCi0JCWB2aXNpYmxlJyBtZWFucyBzZWFyY2gganVzdCB2aXNpYmxl IGZyYW1lcyBvbiB0aGUKLSAgICAgICAgICAgICAgICBjdXJyZW50IHRlcm1pbmFsLAotCQkw IG1lYW5zIHNlYXJjaCB2aXNpYmxlIGFuZCBpY29uaWZpZWQgZnJhbWVzIG9uIHRoZQotICAg ICAgICAgICAgICAgIGN1cnJlbnQgdGVybWluYWwsCi0JCWEgd2luZG93IG1lYW5zIHNlYXJj aCB0aGUgZnJhbWUgdGhhdCB3aW5kb3cgYmVsb25ncyB0bywKLQkJYSBmcmFtZSBtZWFucyBj b25zaWRlciB3aW5kb3dzIG9uIHRoYXQgZnJhbWUsIG9ubHkuICAqLwotCisvKioKKyAqIGNh bmRpZGF0ZV93aW5kb3dfcDoKKyAqCisgKiBWYWx1ZSBpcyB0cnVlIGlmIFdJTkRPVyBzYXRp c2ZpZXMgdGhlIGNvbnN0cmFpbnRzIGdpdmVuIGJ5IE9XSU5ET1csCisgKiBNSU5JIGFuZCBB TExfRlJBTUVTLgorICoKKyAqIE1JTkkgCXQgbWVhbnMgV0lORE9XIG1heSBiZSBhIG1pbmkg d2luZG93IChhIG1pbmlidWZmZXIgb3IKKyAqCQllY2hvIHdpbmRvdyksCisgKgkJJ2xhbWJk YScgbWVhbnMgV0lORE9XIG1heSBub3QgYmUgYSBtaW5pIHdpbmRvdywKKyAqCQknbWluaWJ1 ZmZlcicgbWVhbnMgV0lORE9XIG1heSBiZSBhIG1pbmlidWZmZXIgYnV0IG5vdAorICoJCWFu IGVjaG8gd2luZG93LAorICoJCSdlY2hvLWFyZWEnIG1lYW5zIFdJTkRPVyBtYXkgYmUgYW4g ZWNobyBidXQgbm90IGEKKyAqCQltaW5pYnVmZmVyIHdpbmRvdywKKyAqCQlhIHdpbmRvdyBt ZWFucyBhIHNwZWNpZmljIG1pbmlidWZmZXIgd2luZG93LgorICoKKyAqIEFMTF9GUkFNRVMJ dCBtZWFucyBzZWFyY2ggYWxsIGZyYW1lcywKKyAqCQluaWwgbWVhbnMgc2VhcmNoIGp1c3Qg Y3VycmVudCBmcmFtZSwKKyAqCQkndmlzaWJsZScgbWVhbnMgc2VhcmNoIGp1c3QgdmlzaWJs ZSBmcmFtZXMgb24gdGhlCisgKiAgICAgICAgICAgICAgY3VycmVudCB0ZXJtaW5hbCwKKyAq CQkwIG1lYW5zIHNlYXJjaCB2aXNpYmxlIGFuZCBpY29uaWZpZWQgZnJhbWVzIG9uIHRoZQor ICogICAgICAgICAgICAgIGN1cnJlbnQgdGVybWluYWwsCisgKgkJYSB3aW5kb3cgbWVhbnMg c2VhcmNoIHRoZSBmcmFtZSB0aGF0IHdpbmRvdyBiZWxvbmdzIHRvLAorICoJCWEgZnJhbWUg bWVhbnMgY29uc2lkZXIgd2luZG93cyBvbiB0aGF0IGZyYW1lLCBvbmx5LgorICovCiBzdGF0 aWMgYm9vbAogY2FuZGlkYXRlX3dpbmRvd19wIChMaXNwX09iamVjdCB3aW5kb3csIExpc3Bf T2JqZWN0IG93aW5kb3csCi0JCSAgICBMaXNwX09iamVjdCBtaW5pYnVmLCBMaXNwX09iamVj dCBhbGxfZnJhbWVzKQorCQkgICAgTGlzcF9PYmplY3QgbWluaSwgTGlzcF9PYmplY3QgYWxs X2ZyYW1lcykKIHsKICAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKHdpbmRvdyk7CiAg IHN0cnVjdCBmcmFtZSAqZiA9IFhGUkFNRSAody0+ZnJhbWUpOwpAQCAtMjQ3MCwxMSArMjY3 NywxOSBAQCBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICoKCiAgIGlmICghQlVGRkVSUCAody0+ Y29udGVudHMpKQogICAgIGNhbmRpZGF0ZV9wID0gZmFsc2U7Ci0gIGVsc2UgaWYgKE1JTklf V0lORE9XX1AgKHcpCi0gICAgICAgICAgICYmIChFUSAobWluaWJ1ZiwgUWxhbWJkYSkKLQkg ICAgICAgfHwgKFdJTkRPV1AgKG1pbmlidWYpICYmICFFUSAobWluaWJ1Ziwgd2luZG93KSkp KQorICBlbHNlIGlmIChNSU5JQlVGRkVSX1dJTkRPV19QICh3KQorICAgICAgICAgICAmJiAo RVEgKG1pbmksIFFsYW1iZGEpIHx8IEVRIChtaW5pLCBRZWNob19hcmVhKQorCSAgICAgICB8 fCAoV0lORE9XUCAobWluaSkgJiYgIUVRIChtaW5pLCB3aW5kb3cpKSkpCisgICAgeworICAg ICAgLyogSWYgTUlOSSBpcyAnbGFtYmRhJyBvciAnZWNoby1hcmVhJyBkb24ndCBjb25zaWRl ciBtaW5pYnVmZmVyCisgICAgICAgICB3aW5kb3dzLiAgSWYgaXQgaXMgYSB3aW5kb3csIGNv bnNpZGVyIG9ubHkgdGhhdCBvbmUuICAqLworICAgICAgY2FuZGlkYXRlX3AgPSBmYWxzZTsK KyAgICB9CisgIGVsc2UgaWYgKEVDSE9fV0lORE9XX1AgKHcpCisgICAgICAgICAgICYmIChF USAobWluaSwgUWxhbWJkYSkgfHwgRVEgKG1pbmksIFFtaW5pYnVmZmVyKQorCSAgICAgICB8 fCAoV0lORE9XUCAobWluaSkgJiYgIUVRIChtaW5pLCB3aW5kb3cpKSkpCiAgICAgewotICAg ICAgLyogSWYgTUlOSUJVRiBpcyBgbGFtYmRhJyBkb24ndCBjb25zaWRlciBhbnkgbWluaS13 aW5kb3dzLgorICAgICAgLyogSWYgTUlOSSBpcyAnbGFtYmRhJyBvciAnZWNobycgZG9uJ3Qg Y29uc2lkZXIgZWNobyB3aW5kb3dzLgogICAgICAgICAgSWYgaXQgaXMgYSB3aW5kb3csIGNv bnNpZGVyIG9ubHkgdGhhdCBvbmUuICAqLwogICAgICAgY2FuZGlkYXRlX3AgPSBmYWxzZTsK ICAgICB9CkBAIC0yNTE0LDYgKzI3MjksOSBAQCBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICoK IAl0byBqdXN0IHNoYXJlIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyAtIGl0IG11c3QgYmUgYWN0 aXZlIGFzIHdlbGwKIAkoc2VlIEJ1ZyMyNDUwMCkuICAqLwogICAgIGNhbmRpZGF0ZV9wID0g KEVRIChYV0lORE9XIChhbGxfZnJhbWVzKS0+ZnJhbWUsIHctPmZyYW1lKQorCQkgICB8fCAo RVEgKE1JTklCVUZGRVJfV0lORE9XIChmKSwgYWxsX2ZyYW1lcykKKwkJICAgICAgICYmIEVR IChNSU5JQlVGRkVSX1dJTkRPVyAoZiksIG1pbmlidWZfd2luZG93KQorCQkgICAgICAgJiYg bWluaWJ1Zl9sZXZlbCkKIAkJICAgfHwgRVEgKFhXSU5ET1cgKGFsbF9mcmFtZXMpLT5mcmFt ZSwgRlJBTUVfRk9DVVNfRlJBTUUgKGYpKSk7CiAgIGVsc2UgaWYgKEZSQU1FUCAoYWxsX2Zy YW1lcykpCiAgICAgY2FuZGlkYXRlX3AgPSBFUSAoYWxsX2ZyYW1lcywgdy0+ZnJhbWUpOwpA QCAtMjUyMiwzMiArMjc0MCwzNCBAQCBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICoKIH0KCgot LyogRGVjb2RlIGFyZ3VtZW50cyBhcyBhbGxvd2VkIGJ5IEZuZXh0X3dpbmRvdywgRnByZXZp b3VzX3dpbmRvdywgYW5kCi0gICBGd2luZG93X2xpc3QuICBTZWUgY2FuZGlkYXRlX3dpbmRv d19wIGZvciB0aGUgbWVhbmluZyBvZiBXSU5ET1csCi0gICBNSU5JQlVGLCBhbmQgQUxMX0ZS QU1FUy4gICovCi0KKy8qKgorICogZGVjb2RlX25leHRfd2luZG93X2FyZ3M6CisgKgorICog RGVjb2RlIGFyZ3VtZW50cyBhcyBhbGxvd2VkIGJ5IEZuZXh0X3dpbmRvdywgRnByZXZpb3Vz X3dpbmRvdywgYW5kCisgKiBGd2luZG93X2xpc3QuICBTZWUgY2FuZGlkYXRlX3dpbmRvd19w IGZvciB0aGUgbWVhbmluZyBvZiBXSU5ET1csCisgKiBNSU5JLCBhbmQgQUxMX0ZSQU1FUy4K KyAqLwogc3RhdGljIHZvaWQKLWRlY29kZV9uZXh0X3dpbmRvd19hcmdzIChMaXNwX09iamVj dCAqd2luZG93LCBMaXNwX09iamVjdCAqbWluaWJ1ZiwgTGlzcF9PYmplY3QgKmFsbF9mcmFt ZXMpCitkZWNvZGVfbmV4dF93aW5kb3dfYXJncyAoTGlzcF9PYmplY3QgKndpbmRvdywgTGlz cF9PYmplY3QgKm1pbmksIExpc3BfT2JqZWN0ICphbGxfZnJhbWVzKQogewogICBzdHJ1Y3Qg d2luZG93ICp3ID0gZGVjb2RlX2xpdmVfd2luZG93ICgqd2luZG93KTsKCiAgIFhTRVRXSU5E T1cgKCp3aW5kb3csIHcpOwotICAvKiBNSU5JQlVGIG5pbCBtYXkgb3IgbWF5IG5vdCBpbmNs dWRlIG1pbmlidWZmZXJzLiAgRGVjaWRlIGlmIGl0CisgIC8qIE1JTkkgbmlsIG1heSBvciBt YXkgbm90IGluY2x1ZGUgbWluaWJ1ZmZlciB3aW5kb3dzLiAgRGVjaWRlIGlmIGl0CiAgICAg IGRvZXMuICAqLwotICBpZiAoTklMUCAoKm1pbmlidWYpKQotICAgICptaW5pYnVmID0gbWlu aWJ1Zl9sZXZlbCA/IG1pbmlidWZfd2luZG93IDogUWxhbWJkYTsKLSAgZWxzZSBpZiAoIUVR ICgqbWluaWJ1ZiwgUXQpKQotICAgICptaW5pYnVmID0gUWxhbWJkYTsKLQotICAvKiBOb3cg Kk1JTklCVUYgY2FuIGJlIHQgPT4gY291bnQgYWxsIG1pbmlidWZmZXIgd2luZG93cywgYGxh bWJkYScKLSAgICAgPT4gY291bnQgbm9uZSBvZiB0aGVtLCBvciBhIHNwZWNpZmljIG1pbmli dWZmZXIgd2luZG93ICh0aGUKLSAgICAgYWN0aXZlIG9uZSkgdG8gY291bnQuICAqLworICBp ZiAoTklMUCAoKm1pbmkpKQorICAgICptaW5pID0gbWluaWJ1Zl9sZXZlbCA/IG1pbmlidWZf d2luZG93IDogUWxhbWJkYTsKKyAgZWxzZSBpZiAoIUVRICgqbWluaSwgUXQpICYmICFFUSAo Km1pbmksIFFtaW5pYnVmZmVyKQorCSAgICYmICFFUSAoKm1pbmksIFFlY2hvX2FyZWEpKQor ICAgICptaW5pID0gUWxhbWJkYTsKCiAgIC8qIEFMTF9GUkFNRVMgbmlsIGRvZXNuJ3Qgc3Bl Y2lmeSB3aGljaCBmcmFtZXMgdG8gaW5jbHVkZS4gICovCiAgIGlmIChOSUxQICgqYWxsX2Zy YW1lcykpCiAgICAgKmFsbF9mcmFtZXMKLSAgICAgID0gKCFFUSAoKm1pbmlidWYsIFFsYW1i ZGEpCi0JID8gRlJBTUVfTUlOSUJVRl9XSU5ET1cgKFhGUkFNRSAody0+ZnJhbWUpKQorICAg ICAgPSAoKCFFUSAoKm1pbmksIFFsYW1iZGEpICYmICFFUSAoKm1pbmksIFFlY2hvX2FyZWEp KQorCSAvKiBPbmx5IGEgbWluaWJ1ZmZlciB3aW5kb3cgY2FuIGJlIHNoYXJlZCBoZXJlLCBu b3QgdGhlIGVjaG8KKwkgICAgd2luZG93LiAgKi8KKwkgPyBNSU5JQlVGRkVSX1dJTkRPVyAo WEZSQU1FICh3LT5mcmFtZSkpCiAJIDogUW5pbCk7CiAgIGVsc2UgaWYgKEVRICgqYWxsX2Zy YW1lcywgUXZpc2libGUpKQogICAgIDsKQEAgLTI1NjAsMTYgKzI3ODAsMTkgQEAgc3RydWN0 IExpc3BfQ2hhcl9UYWJsZSAqCiB9CgoKLS8qIFJldHVybiB0aGUgbmV4dCBvciBwcmV2aW91 cyB3aW5kb3cgb2YgV0lORE9XIGluIGN5Y2xpYyBvcmRlcmluZwotICAgb2Ygd2luZG93cy4g IE5FWFRfUCBtZWFucyByZXR1cm4gdGhlIG5leHQgd2luZG93LiAgU2VlIHRoZQotICAgZG9j dW1lbnRhdGlvbiBzdHJpbmcgb2YgbmV4dC13aW5kb3cgZm9yIHRoZSBtZWFuaW5nIG9mIE1J TklCVUYgYW5kCi0gICBBTExfRlJBTUVTLiAgKi8KLQorLyoqCisgKiBuZXh0X3dpbmRvdzoK KyAqCisgKiBSZXR1cm4gdGhlIG5leHQgb3IgcHJldmlvdXMgd2luZG93IG9mIFdJTkRPVyBp biBjeWNsaWMgb3JkZXJpbmcgb2YKKyAqIHdpbmRvd3MuICBORVhUX1AgbWVhbnMgcmV0dXJu IHRoZSBuZXh0IHdpbmRvdy4gIFNlZSB0aGUKKyAqIGRvY3VtZW50YXRpb24gc3RyaW5nIG9m ICduZXh0LXdpbmRvdycgZm9yIHRoZSBtZWFuaW5nIG9mIE1JTkkgYW5kCisgKiBBTExfRlJB TUVTLgorICovCiBzdGF0aWMgTGlzcF9PYmplY3QKLW5leHRfd2luZG93IChMaXNwX09iamVj dCB3aW5kb3csIExpc3BfT2JqZWN0IG1pbmlidWYsIExpc3BfT2JqZWN0IGFsbF9mcmFtZXMs CituZXh0X3dpbmRvdyAoTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBtaW5pLCBM aXNwX09iamVjdCBhbGxfZnJhbWVzLAogCSAgICAgYm9vbCBuZXh0X3ApCiB7Ci0gIGRlY29k ZV9uZXh0X3dpbmRvd19hcmdzICgmd2luZG93LCAmbWluaWJ1ZiwgJmFsbF9mcmFtZXMpOwor ICBkZWNvZGVfbmV4dF93aW5kb3dfYXJncyAoJndpbmRvdywgJm1pbmksICZhbGxfZnJhbWVz KTsKCiAgIC8qIElmIEFMTF9GUkFNRVMgaXMgYSBmcmFtZSwgYW5kIFdJTkRPVyBpc24ndCBv biB0aGF0IGZyYW1lLCBqdXN0CiAgICAgIHJldHVybiB0aGUgZmlyc3Qgd2luZG93IG9uIHRo ZSBmcmFtZS4gICovCkBAIC0yNTg3LDcgKzI4MTAsNyBAQCBzdHJ1Y3QgTGlzcF9DaGFyX1Rh YmxlICoKICAgICAgIC8qIFNjYW4gZm9yd2FyZCBmcm9tIFdJTkRPVyB0byB0aGUgZW5kIG9m IHRoZSB3aW5kb3cgbGlzdC4gICovCiAgICAgICBpZiAoQ09OU1AgKGxpc3QpKQogCWZvciAo bGlzdCA9IFhDRFIgKGxpc3QpOyBDT05TUCAobGlzdCk7IGxpc3QgPSBYQ0RSIChsaXN0KSkK LQkgIGlmIChjYW5kaWRhdGVfd2luZG93X3AgKFhDQVIgKGxpc3QpLCB3aW5kb3csIG1pbmli dWYsIGFsbF9mcmFtZXMpKQorCSAgaWYgKGNhbmRpZGF0ZV93aW5kb3dfcCAoWENBUiAobGlz dCksIHdpbmRvdywgbWluaSwgYWxsX2ZyYW1lcykpCiAJICAgIGJyZWFrOwoKICAgICAgIC8q IFNjYW4gZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHdpbmRvdyBsaXN0IHVwIHRvIFdJTkRPVy4g ICovCkBAIC0yNTk1LDcgKzI4MTgsNyBAQCBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICoKIAlm b3IgKGxpc3QgPSBWd2luZG93X2xpc3Q7CiAJICAgICBDT05TUCAobGlzdCkgJiYgIUVRIChY Q0FSIChsaXN0KSwgd2luZG93KTsKIAkgICAgIGxpc3QgPSBYQ0RSIChsaXN0KSkKLQkgIGlm IChjYW5kaWRhdGVfd2luZG93X3AgKFhDQVIgKGxpc3QpLCB3aW5kb3csIG1pbmlidWYsIGFs bF9mcmFtZXMpKQorCSAgaWYgKGNhbmRpZGF0ZV93aW5kb3dfcCAoWENBUiAobGlzdCksIHdp bmRvdywgbWluaSwgYWxsX2ZyYW1lcykpCiAJICAgIGJyZWFrOwoKICAgICAgIGlmIChDT05T UCAobGlzdCkpCkBAIC0yNjE3LDggKzI4NDAsNyBAQCBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxl ICoKIAkgICAgICBpZiAoV0lORE9XUCAoY2FuZGlkYXRlKSkKIAkJYnJlYWs7CiAJICAgIH0K LQkgIGVsc2UgaWYgKGNhbmRpZGF0ZV93aW5kb3dfcCAoWENBUiAobGlzdCksIHdpbmRvdywg bWluaWJ1ZiwKLQkJCQkgICAgICAgYWxsX2ZyYW1lcykpCisJICBlbHNlIGlmIChjYW5kaWRh dGVfd2luZG93X3AgKFhDQVIgKGxpc3QpLCB3aW5kb3csIG1pbmksIGFsbF9mcmFtZXMpKQog CSAgICBjYW5kaWRhdGUgPSBYQ0FSIChsaXN0KTsKIAl9CgpAQCAtMjYzMywyMyArMjg1NSwy NSBAQCBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICoKIERFRlVOICgibmV4dC13aW5kb3ciLCBG bmV4dF93aW5kb3csIFNuZXh0X3dpbmRvdywgMCwgMywgMCwKICAgICAgICBkb2M6IC8qIFJl dHVybiBsaXZlIHdpbmRvdyBhZnRlciBXSU5ET1cgaW4gdGhlIGN5Y2xpYyBvcmRlcmluZyBv ZiB3aW5kb3dzLgogV0lORE9XIG11c3QgYmUgYSBsaXZlIHdpbmRvdyBhbmQgZGVmYXVsdHMg dG8gdGhlIHNlbGVjdGVkIG9uZS4gIFRoZQotb3B0aW9uYWwgYXJndW1lbnRzIE1JTklCVUYg YW5kIEFMTC1GUkFNRVMgc3BlY2lmeSB0aGUgc2V0IG9mIHdpbmRvd3MgdG8KK29wdGlvbmFs IGFyZ3VtZW50cyBNSU5JIGFuZCBBTEwtRlJBTUVTIHNwZWNpZnkgdGhlIHNldCBvZiB3aW5k b3dzIHRvCiBjb25zaWRlci4KCi1NSU5JQlVGIG5pbCBvciBvbWl0dGVkIG1lYW5zIGNvbnNp ZGVyIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBvbmx5IGlmIHRoZQotbWluaWJ1ZmZlciBpcyBh Y3RpdmUuICBNSU5JQlVGIHQgbWVhbnMgY29uc2lkZXIgdGhlIG1pbmlidWZmZXIgd2luZG93 Ci1ldmVuIGlmIHRoZSBtaW5pYnVmZmVyIGlzIG5vdCBhY3RpdmUuICBBbnkgb3RoZXIgdmFs dWUgbWVhbnMgZG8gbm90Ci1jb25zaWRlciB0aGUgbWluaWJ1ZmZlciB3aW5kb3cgZXZlbiBp ZiB0aGUgbWluaWJ1ZmZlciBpcyBhY3RpdmUuCitNSU5JIG5pbCBvciBvbWl0dGVkIG1lYW5z IGNvbnNpZGVyIGEgbWluaWJ1ZmZlciB3aW5kb3cgb25seSBpZiBpdCBpcworYWN0aXZlLiAg TUlOSSB0IG1lYW5zIGNvbnNpZGVyIGFueSBtaW5pIHdpbmRvdyAobWluaWJ1ZmZlciB3aW5k b3cgb3IKK2VjaG8gd2luZG93KS4gIE1JTkkgJ21pbmlidWZmZXInIG1lYW5zIGNvbnNpZGVy IGFueSBtaW5pYnVmZmVyIHdpbmRvdworYnV0IG5vIGVjaG8gd2luZG93cy4gIE1JTkkgJ2Vj aG8tYXJlYScgbWVhbnMgY29uc2lkZXIgYW55IGVjaG8gd2luZG93CitidXQgbm90IGEgbWlu aWJ1ZmZlciB3aW5kb3cuICBBbnkgb3RoZXIgdmFsdWUgbWVhbnMgZG8gbm90IGNvbnNpZGVy IGEKK21pbmkgd2luZG93IGV2ZW4gaWYgdGhlIG1pbmlidWZmZXIgaXMgYWN0aXZlLgoKLUFM TC1GUkFNRVMgbmlsIG9yIG9taXR0ZWQgbWVhbnMgY29uc2lkZXIgYWxsIHdpbmRvd3Mgb24g V0lORE9XJ3MgZnJhbWUsCi1wbHVzIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBpZiBzcGVjaWZp ZWQgYnkgdGhlIE1JTklCVUYgYXJndW1lbnQuICBJZiB0aGUKLW1pbmlidWZmZXIgY291bnRz LCBjb25zaWRlciBhbGwgd2luZG93cyBvbiBhbGwgZnJhbWVzIHRoYXQgc2hhcmUgdGhhdAot bWluaWJ1ZmZlciB0b28uICBUaGUgZm9sbG93aW5nIG5vbi1uaWwgdmFsdWVzIG9mIEFMTC1G UkFNRVMgaGF2ZSBzcGVjaWFsCi1tZWFuaW5nczoKK0FMTC1GUkFNRVMgbmlsIG9yIG9taXR0 ZWQgbWVhbnMgY29uc2lkZXIgYWxsIHdpbmRvd3Mgb24gV0lORE9XJ3MKK2ZyYW1lLCBwbHVz IGFueSBtaW5pIHdpbmRvdyBpZiBzcGVjaWZpZWQgYnkgdGhlIE1JTkkgYXJndW1lbnQuICBJ ZiBhCittaW5pIHdpbmRvdyBjb3VudHMsIGNvbnNpZGVyIGFsbCB3aW5kb3dzIG9uIGFsbCBm cmFtZXMgdGhhdCBzaGFyZSB0aGF0CittaW5pIHdpbmRvdyB0b28uICBUaGUgZm9sbG93aW5n IG5vbi1uaWwgdmFsdWVzIG9mIEFMTC1GUkFNRVMgaGF2ZQorc3BlY2lhbCBtZWFuaW5nczoK CiAtIHQgbWVhbnMgY29uc2lkZXIgYWxsIHdpbmRvd3Mgb24gYWxsIGV4aXN0aW5nIGZyYW1l cy4KCi0tIGB2aXNpYmxlJyBtZWFucyBjb25zaWRlciBhbGwgd2luZG93cyBvbiBhbGwgdmlz aWJsZSBmcmFtZXMuCistICd2aXNpYmxlJyBtZWFucyBjb25zaWRlciBhbGwgd2luZG93cyBv biBhbGwgdmlzaWJsZSBmcmFtZXMuCgogLSAwICh0aGUgbnVtYmVyIHplcm8pIG1lYW5zIGNv bnNpZGVyIGFsbCB3aW5kb3dzIG9uIGFsbCB2aXNpYmxlIGFuZAogICBpY29uaWZpZWQgZnJh bWVzLgpAQCAtMjY1OSwzNiArMjg4MywzOCBAQCBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICoK IEFueXRoaW5nIGVsc2UgbWVhbnMgY29uc2lkZXIgYWxsIHdpbmRvd3Mgb24gV0lORE9XJ3Mg ZnJhbWUgYW5kIG5vCiBvdGhlcnMuCgotSWYgeW91IHVzZSBjb25zaXN0ZW50IHZhbHVlcyBm b3IgTUlOSUJVRiBhbmQgQUxMLUZSQU1FUywgeW91IGNhbiB1c2UKK0lmIHlvdSB1c2UgY29u c2lzdGVudCB2YWx1ZXMgZm9yIE1JTkkgYW5kIEFMTC1GUkFNRVMsIHlvdSBjYW4gdXNlCiBg bmV4dC13aW5kb3cnIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgZW50aXJlIGN5Y2xlIG9mIGFj Y2VwdGFibGUKIHdpbmRvd3MsIGV2ZW50dWFsbHkgZW5kaW5nIHVwIGJhY2sgYXQgdGhlIHdp bmRvdyB5b3Ugc3RhcnRlZCB3aXRoLgogYHByZXZpb3VzLXdpbmRvdycgdHJhdmVyc2VzIHRo ZSBzYW1lIGN5Y2xlLCBpbiB0aGUgcmV2ZXJzZSBvcmRlci4gICovKQotICAoTGlzcF9PYmpl Y3Qgd2luZG93LCBMaXNwX09iamVjdCBtaW5pYnVmLCBMaXNwX09iamVjdCBhbGxfZnJhbWVz KQorICAoTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBtaW5pLCBMaXNwX09iamVj dCBhbGxfZnJhbWVzKQogewotICByZXR1cm4gbmV4dF93aW5kb3cgKHdpbmRvdywgbWluaWJ1 ZiwgYWxsX2ZyYW1lcywgdHJ1ZSk7CisgIHJldHVybiBuZXh0X3dpbmRvdyAod2luZG93LCBt aW5pLCBhbGxfZnJhbWVzLCB0cnVlKTsKIH0KCgogREVGVU4gKCJwcmV2aW91cy13aW5kb3ci LCBGcHJldmlvdXNfd2luZG93LCBTcHJldmlvdXNfd2luZG93LCAwLCAzLCAwLAogICAgICAg IGRvYzogLyogUmV0dXJuIGxpdmUgd2luZG93IGJlZm9yZSBXSU5ET1cgaW4gdGhlIGN5Y2xp YyBvcmRlcmluZyBvZiB3aW5kb3dzLgogV0lORE9XIG11c3QgYmUgYSBsaXZlIHdpbmRvdyBh bmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4gIFRoZQotb3B0aW9uYWwgYXJndW1l bnRzIE1JTklCVUYgYW5kIEFMTC1GUkFNRVMgc3BlY2lmeSB0aGUgc2V0IG9mIHdpbmRvd3Mg dG8KK29wdGlvbmFsIGFyZ3VtZW50cyBNSU5JIGFuZCBBTEwtRlJBTUVTIHNwZWNpZnkgdGhl IHNldCBvZiB3aW5kb3dzIHRvCiBjb25zaWRlci4KCi1NSU5JQlVGIG5pbCBvciBvbWl0dGVk IG1lYW5zIGNvbnNpZGVyIHRoZSBtaW5pYnVmZmVyIHdpbmRvdyBvbmx5IGlmIHRoZQotbWlu aWJ1ZmZlciBpcyBhY3RpdmUuICBNSU5JQlVGIHQgbWVhbnMgY29uc2lkZXIgdGhlIG1pbmli dWZmZXIgd2luZG93Ci1ldmVuIGlmIHRoZSBtaW5pYnVmZmVyIGlzIG5vdCBhY3RpdmUuICBB bnkgb3RoZXIgdmFsdWUgbWVhbnMgZG8gbm90Ci1jb25zaWRlciB0aGUgbWluaWJ1ZmZlciB3 aW5kb3cgZXZlbiBpZiB0aGUgbWluaWJ1ZmZlciBpcyBhY3RpdmUuCitNSU5JIG5pbCBvciBv bWl0dGVkIG1lYW5zIGNvbnNpZGVyIGEgbWluaWJ1ZmZlciB3aW5kb3cgb25seSBpZiBpdCBp cworYWN0aXZlLiAgTUlOSSB0IG1lYW5zIGNvbnNpZGVyIGFueSBtaW5pIHdpbmRvdyAobWlu aWJ1ZmZlciB3aW5kb3cgb3IKK2VjaG8gd2luZG93KS4gIE1JTkkgJ21pbmlidWZmZXInIG1l YW5zIGNvbnNpZGVyIGFueSBtaW5pYnVmZmVyIHdpbmRvdworYnV0IG5vIGVjaG8gd2luZG93 cy4gIE1JTkkgJ2VjaG8tYXJlYScgbWVhbnMgY29uc2lkZXIgYW55IGVjaG8gd2luZG93Citi dXQgbm90IGEgbWluaWJ1ZmZlciB3aW5kb3cuICBBbnkgb3RoZXIgdmFsdWUgbWVhbnMgZG8g bm90IGNvbnNpZGVyIGEKK21pbmkgd2luZG93IGV2ZW4gaWYgdGhlIG1pbmlidWZmZXIgaXMg YWN0aXZlLgoKLUFMTC1GUkFNRVMgbmlsIG9yIG9taXR0ZWQgbWVhbnMgY29uc2lkZXIgYWxs IHdpbmRvd3Mgb24gV0lORE9XJ3MgZnJhbWUsCi1wbHVzIHRoZSBtaW5pYnVmZmVyIHdpbmRv dyBpZiBzcGVjaWZpZWQgYnkgdGhlIE1JTklCVUYgYXJndW1lbnQuICBJZiB0aGUKLW1pbmli dWZmZXIgY291bnRzLCBjb25zaWRlciBhbGwgd2luZG93cyBvbiBhbGwgZnJhbWVzIHRoYXQg c2hhcmUgdGhhdAotbWluaWJ1ZmZlciB0b28uICBUaGUgZm9sbG93aW5nIG5vbi1uaWwgdmFs dWVzIG9mIEFMTC1GUkFNRVMgaGF2ZSBzcGVjaWFsCi1tZWFuaW5nczoKK0FMTC1GUkFNRVMg bmlsIG9yIG9taXR0ZWQgbWVhbnMgY29uc2lkZXIgYWxsIHdpbmRvd3Mgb24gV0lORE9XJ3MK K2ZyYW1lLCBwbHVzIGFueSBtaW5pIHdpbmRvdyBpZiBzcGVjaWZpZWQgYnkgdGhlIE1JTkkg YXJndW1lbnQuICBJZiBhCittaW5pIHdpbmRvdyBjb3VudHMsIGNvbnNpZGVyIGFsbCB3aW5k b3dzIG9uIGFsbCBmcmFtZXMgdGhhdCBzaGFyZSB0aGF0CittaW5pIHdpbmRvdyB0b28uICBU aGUgZm9sbG93aW5nIG5vbi1uaWwgdmFsdWVzIG9mIEFMTC1GUkFNRVMgaGF2ZQorc3BlY2lh bCBtZWFuaW5nczoKCiAtIHQgbWVhbnMgY29uc2lkZXIgYWxsIHdpbmRvd3Mgb24gYWxsIGV4 aXN0aW5nIGZyYW1lcy4KCi0tIGB2aXNpYmxlJyBtZWFucyBjb25zaWRlciBhbGwgd2luZG93 cyBvbiBhbGwgdmlzaWJsZSBmcmFtZXMuCistICd2aXNpYmxlJyBtZWFucyBjb25zaWRlciBh bGwgd2luZG93cyBvbiBhbGwgdmlzaWJsZSBmcmFtZXMuCgogLSAwICh0aGUgbnVtYmVyIHpl cm8pIG1lYW5zIGNvbnNpZGVyIGFsbCB3aW5kb3dzIG9uIGFsbCB2aXNpYmxlIGFuZAogICBp Y29uaWZpZWQgZnJhbWVzLgpAQCAtMjY5OCwzMCArMjkyNCwzMSBAQCBzdHJ1Y3QgTGlzcF9D aGFyX1RhYmxlICoKIEFueXRoaW5nIGVsc2UgbWVhbnMgY29uc2lkZXIgYWxsIHdpbmRvd3Mg b24gV0lORE9XJ3MgZnJhbWUgYW5kIG5vCiBvdGhlcnMuCgotSWYgeW91IHVzZSBjb25zaXN0 ZW50IHZhbHVlcyBmb3IgTUlOSUJVRiBhbmQgQUxMLUZSQU1FUywgeW91IGNhbgotdXNlIGBw cmV2aW91cy13aW5kb3cnIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgZW50aXJlIGN5Y2xlIG9m Ci1hY2NlcHRhYmxlIHdpbmRvd3MsIGV2ZW50dWFsbHkgZW5kaW5nIHVwIGJhY2sgYXQgdGhl IHdpbmRvdyB5b3UKLXN0YXJ0ZWQgd2l0aC4gIGBuZXh0LXdpbmRvdycgdHJhdmVyc2VzIHRo ZSBzYW1lIGN5Y2xlLCBpbiB0aGUKLXJldmVyc2Ugb3JkZXIuICAqLykKLSAgKExpc3BfT2Jq ZWN0IHdpbmRvdywgTGlzcF9PYmplY3QgbWluaWJ1ZiwgTGlzcF9PYmplY3QgYWxsX2ZyYW1l cykKK0lmIHlvdSB1c2UgY29uc2lzdGVudCB2YWx1ZXMgZm9yIE1JTkkgYW5kIEFMTC1GUkFN RVMsIHlvdSBjYW4gdXNlCitgcHJldmlvdXMtd2luZG93JyB0byBpdGVyYXRlIHRocm91Z2gg dGhlIGVudGlyZSBjeWNsZSBvZiBhY2NlcHRhYmxlCit3aW5kb3dzLCBldmVudHVhbGx5IGVu ZGluZyB1cCBiYWNrIGF0IHRoZSB3aW5kb3cgeW91IHN0YXJ0ZWQgd2l0aC4KK2BuZXh0LXdp bmRvdycgdHJhdmVyc2VzIHRoZSBzYW1lIGN5Y2xlLCBpbiB0aGUgcmV2ZXJzZSBvcmRlci4g ICovKQorICAoTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBtaW5pLCBMaXNwX09i amVjdCBhbGxfZnJhbWVzKQogewotICByZXR1cm4gbmV4dF93aW5kb3cgKHdpbmRvdywgbWlu aWJ1ZiwgYWxsX2ZyYW1lcywgZmFsc2UpOworICByZXR1cm4gbmV4dF93aW5kb3cgKHdpbmRv dywgbWluaSwgYWxsX2ZyYW1lcywgZmFsc2UpOwogfQoKCi0vKiBSZXR1cm4gYSBsaXN0IG9m IHdpbmRvd3MgaW4gY3ljbGljIG9yZGVyaW5nLiAgQXJndW1lbnRzIGFyZSBsaWtlCi0gICBm b3IgYG5leHQtd2luZG93Jy4gICovCi0KKy8qKgorICogbmV4dF93aW5kb3c6CisgKgorICog UmV0dXJuIGEgbGlzdCBvZiB3aW5kb3dzIGluIGN5Y2xpYyBvcmRlcmluZy4gIEFyZ3VtZW50 cyBhcmUgbGlrZQorICogZm9yICduZXh0LXdpbmRvdycuICAqLwogc3RhdGljIExpc3BfT2Jq ZWN0Ci13aW5kb3dfbGlzdF8xIChMaXNwX09iamVjdCB3aW5kb3csIExpc3BfT2JqZWN0IG1p bmlidWYsIExpc3BfT2JqZWN0IGFsbF9mcmFtZXMpCit3aW5kb3dfbGlzdF8xIChMaXNwX09i amVjdCB3aW5kb3csIExpc3BfT2JqZWN0IG1pbmksIExpc3BfT2JqZWN0IGFsbF9mcmFtZXMp CiB7CiAgIExpc3BfT2JqZWN0IHRhaWwsIGxpc3QsIHJlc3Q7CgotICBkZWNvZGVfbmV4dF93 aW5kb3dfYXJncyAoJndpbmRvdywgJm1pbmlidWYsICZhbGxfZnJhbWVzKTsKKyAgZGVjb2Rl X25leHRfd2luZG93X2FyZ3MgKCZ3aW5kb3csICZtaW5pLCAmYWxsX2ZyYW1lcyk7CiAgIGxp c3QgPSBRbmlsOwoKICAgZm9yICh0YWlsID0gd2luZG93X2xpc3QgKCk7IENPTlNQICh0YWls KTsgdGFpbCA9IFhDRFIgKHRhaWwpKQotICAgIGlmIChjYW5kaWRhdGVfd2luZG93X3AgKFhD QVIgKHRhaWwpLCB3aW5kb3csIG1pbmlidWYsIGFsbF9mcmFtZXMpKQorICAgIGlmIChjYW5k aWRhdGVfd2luZG93X3AgKFhDQVIgKHRhaWwpLCB3aW5kb3csIG1pbmksIGFsbF9mcmFtZXMp KQogICAgICAgbGlzdCA9IEZjb25zIChYQ0FSICh0YWlsKSwgbGlzdCk7CgogICAvKiBSb3Rh dGUgdGhlIGxpc3QgdG8gc3RhcnQgd2l0aCBXSU5ET1cuICAqLwpAQCAtMjc0MiwxMSArMjk2 OSwxNCBAQCBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICoKICAgICAgICBkb2M6IC8qIFJldHVy biBhIGxpc3Qgb2Ygd2luZG93cyBvbiBGUkFNRSwgc3RhcnRpbmcgd2l0aCBXSU5ET1cuCiBG UkFNRSBuaWwgb3Igb21pdHRlZCBtZWFucyB1c2UgdGhlIHNlbGVjdGVkIGZyYW1lLgogV0lO RE9XIG5pbCBvciBvbWl0dGVkIG1lYW5zIHVzZSB0aGUgd2luZG93IHNlbGVjdGVkIHdpdGhp biBGUkFNRS4KLU1JTklCVUYgdCBtZWFucyBpbmNsdWRlIHRoZSBtaW5pYnVmZmVyIHdpbmRv dywgZXZlbiBpZiBpdCBpc24ndCBhY3RpdmUuCi1NSU5JQlVGIG5pbCBvciBvbWl0dGVkIG1l YW5zIGluY2x1ZGUgdGhlIG1pbmlidWZmZXIgd2luZG93IG9ubHkKLWlmIGl0J3MgYWN0aXZl LgotTUlOSUJVRiBuZWl0aGVyIG5pbCBub3IgdCBtZWFucyBuZXZlciBpbmNsdWRlIHRoZSBt aW5pYnVmZmVyIHdpbmRvdy4gICovKQotICAoTGlzcF9PYmplY3QgZnJhbWUsIExpc3BfT2Jq ZWN0IG1pbmlidWYsIExpc3BfT2JqZWN0IHdpbmRvdykKKworTUlOSSB0IG1lYW5zIGluY2x1 ZGUgYW55IG1pbmkgd2luZG93IChtaW5pYnVmZmVyIG9yIGVjaG8gd2luZG93KS4KK01JTkkg bmlsIG9yIG9taXR0ZWQgbWVhbnMgaW5jbHVkZSBhIG1pbmlidWZmZXIgd2luZG93IG9ubHkg aWYgaXQncworYWN0aXZlIGFuZCBkb24ndCBpbmNsdWRlIGFueSBlY2hvIHdpbmRvdy4gIE1J TkkgJ21pbmlidWZmZXInIG1lYW5zCitpbmNsdWRlIGFueSBtaW5pYnVmZmVyIHdpbmRvdyBi dXQgbm90IGFuIGVjaG8gd2luZG93LiAgTUlOSQorJ2VjaG8tYXJlYScgaW5jbHVkZSBhbnkg ZWNvIHdpbmRvdyB3aW5kb3cgYnV0IG5vdCBhIG1pbmlidWZmZXIgd2luZG93LgorQW55IG90 aGVyIHZhbHVlIG1lYW5zIHRvIG5ldmVyIGluY2x1ZGUgYXQgbWluaSB3aW5kb3cuICAqLykK KyAgKExpc3BfT2JqZWN0IGZyYW1lLCBMaXNwX09iamVjdCBtaW5pLCBMaXNwX09iamVjdCB3 aW5kb3cpCiB7CiAgIGlmIChOSUxQICh3aW5kb3cpKQogICAgIHdpbmRvdyA9IEZSQU1FUCAo ZnJhbWUpID8gWEZSQU1FIChmcmFtZSktPnNlbGVjdGVkX3dpbmRvdyA6IHNlbGVjdGVkX3dp bmRvdzsKQEAgLTI3NTcsNyArMjk4Nyw3IEBAIHN0cnVjdCBMaXNwX0NoYXJfVGFibGUgKgog ICBpZiAoIUVRIChmcmFtZSwgWFdJTkRPVyAod2luZG93KS0+ZnJhbWUpKQogICAgIGVycm9y ICgiV2luZG93IGlzIG9uIGEgZGlmZmVyZW50IGZyYW1lIik7CgotICByZXR1cm4gd2luZG93 X2xpc3RfMSAod2luZG93LCBtaW5pYnVmLCBmcmFtZSk7CisgIHJldHVybiB3aW5kb3dfbGlz dF8xICh3aW5kb3csIG1pbmksIGZyYW1lKTsKIH0KCgpAQCAtMjc2NiwxNyArMjk5NiwxOSBA QCBzdHJ1Y3QgTGlzcF9DaGFyX1RhYmxlICoKIFdJTkRPVyBzcGVjaWZpZXMgdGhlIGZpcnN0 IHdpbmRvdyB0byBsaXN0IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQKIHdpbmRvdy4K Ci1PcHRpb25hbCBhcmd1bWVudCBNSU5JQlVGIG5pbCBvciBvbWl0dGVkIG1lYW5zIGNvbnNp ZGVyIHRoZSBtaW5pYnVmZmVyCi13aW5kb3cgb25seSBpZiB0aGUgbWluaWJ1ZmZlciBpcyBh Y3RpdmUuICBNSU5JQlVGIHQgbWVhbnMgY29uc2lkZXIgdGhlCi1taW5pYnVmZmVyIHdpbmRv dyBldmVuIGlmIHRoZSBtaW5pYnVmZmVyIGlzIG5vdCBhY3RpdmUuICBBbnkgb3RoZXIgdmFs dWUKLW1lYW5zIGRvIG5vdCBjb25zaWRlciB0aGUgbWluaWJ1ZmZlciB3aW5kb3cgZXZlbiBp ZiB0aGUgbWluaWJ1ZmZlciBpcwotYWN0aXZlLgorT3B0aW9uYWwgYXJndW1lbnQgTUlOSSB0 IG1lYW5zIGluY2x1ZGUgYW55IG1pbmkgd2luZG93IChtaW5pYnVmZmVyIG9yCitlY2hvIHdp bmRvdykuICBNSU5JIG5pbCBvciBvbWl0dGVkIG1lYW5zIGluY2x1ZGUgYSBtaW5pYnVmZmVy IHdpbmRvdworb25seSBpZiBpdCdzIGFjdGl2ZSBhbmQgZG9uJ3QgaW5jbHVkZSBhbnkgZWNo byB3aW5kb3cuICBNSU5JCisnbWluaWJ1ZmZlcicgbWVhbnMgaW5jbHVkZSBhbnkgbWluaWJ1 ZmZlciB3aW5kb3cgYnV0IG5vdCBhbiBlY2hvCit3aW5kb3cuICBNSU5JICdlY2hvLWFyZWEn IGluY2x1ZGUgYW55IGVjbyB3aW5kb3cgd2luZG93IGJ1dCBub3QgYQorbWluaWJ1ZmZlciB3 aW5kb3cuICBBbnkgb3RoZXIgdmFsdWUgbWVhbnMgdG8gbmV2ZXIgaW5jbHVkZSBhdCBtaW5p Cit3aW5kb3cuCgogT3B0aW9uYWwgYXJndW1lbnQgQUxMLUZSQU1FUyBuaWwgb3Igb21pdHRl ZCBtZWFucyBjb25zaWRlciBhbGwgd2luZG93cwotb24gV0lORE9XJ3MgZnJhbWUsIHBsdXMg dGhlIG1pbmlidWZmZXIgd2luZG93IGlmIHNwZWNpZmllZCBieSB0aGUKLU1JTklCVUYgYXJn dW1lbnQuICBJZiB0aGUgbWluaWJ1ZmZlciBjb3VudHMsIGNvbnNpZGVyIGFsbCB3aW5kb3dz IG9uIGFsbAotZnJhbWVzIHRoYXQgc2hhcmUgdGhhdCBtaW5pYnVmZmVyIHRvby4gIFRoZSBm b2xsb3dpbmcgbm9uLW5pbCB2YWx1ZXMgb2YKLUFMTC1GUkFNRVMgaGF2ZSBzcGVjaWFsIG1l YW5pbmdzOgorb24gV0lORE9XJ3MgZnJhbWUsIHBsdXMgdGhlIG1pbmlidWZmZXIgd2luZG93 IGlmIHNwZWNpZmllZCBieSB0aGUgTUlOSQorYXJndW1lbnQuICBJZiB0aGUgbWluaWJ1ZmZl ciBjb3VudHMsIGNvbnNpZGVyIGFsbCB3aW5kb3dzIG9uIGFsbAorZnJhbWVzIHRoYXQgc2hh cmUgdGhhdCBtaW5pYnVmZmVyIHRvby4gIFRoZSBmb2xsb3dpbmcgbm9uLW5pbCB2YWx1ZXMK K29mIEFMTC1GUkFNRVMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOgoKIC0gdCBtZWFucyBjb25z aWRlciBhbGwgd2luZG93cyBvbiBhbGwgZXhpc3RpbmcgZnJhbWVzLgoKQEAgLTI3OTIsOSAr MzAyNCw5IEBAIHN0cnVjdCBMaXNwX0NoYXJfVGFibGUgKgoKIElmIFdJTkRPVyBpcyBub3Qg b24gdGhlIGxpc3Qgb2Ygd2luZG93cyByZXR1cm5lZCwgc29tZSBvdGhlciB3aW5kb3cgd2ls bAogYmUgbGlzdGVkIGZpcnN0IGJ1dCBubyBlcnJvciBpcyBzaWduYWxlZC4gICovKQotICAo TGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBtaW5pYnVmLCBMaXNwX09iamVjdCBh bGxfZnJhbWVzKQorICAoTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBtaW5pLCBM aXNwX09iamVjdCBhbGxfZnJhbWVzKQogewotICByZXR1cm4gd2luZG93X2xpc3RfMSAod2lu ZG93LCBtaW5pYnVmLCBhbGxfZnJhbWVzKTsKKyAgcmV0dXJuIHdpbmRvd19saXN0XzEgKHdp bmRvdywgbWluaSwgYWxsX2ZyYW1lcyk7CiB9CiAMCiAvKiBMb29rIGF0IGFsbCB3aW5kb3dz LCBwZXJmb3JtaW5nIGFuIG9wZXJhdGlvbiBzcGVjaWZpZWQgYnkgVFlQRQpAQCAtMzA3MSwx MSArMzMwMyw4IEBAIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mICh3aW5kb3ctc3RhcnQgV0lO RE9XKSwgc28gaWYgY2FsbGluZyB0aGlzCiAgIGlmIChFUSAod2luZG93LCByb290KSkKICAg ICAvKiBBIG5vb3AuICAqLwogICAgIHJldHVybiBRbmlsOwotICAvKiBJIGRvbid0IHVuZGVy c3RhbmQgdGhlICJ0b3AgPiAwIiBwYXJ0IGJlbG93LiAgSWYgd2UgZGVhbCB3aXRoIGEKLSAg ICAgc3RhbmRhbG9uZSBtaW5pYnVmZmVyIGl0IHdvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkg dGhlIHByZWNlZGluZwotICAgICB0ZXN0LiAgKi8KLSAgZWxzZSBpZiAoTUlOSV9XSU5ET1df UCAodykpIC8qICYmIHRvcCA+IDApICovCi0gICAgZXJyb3IgKCJDYW4ndCBleHBhbmQgbWlu aWJ1ZmZlciB0byBmdWxsIGZyYW1lIik7CisgIGVsc2UgaWYgKE1JTklCVUZGRVJfV0lORE9X X1AgKHcpICYmICFNSU5JQlVGRkVSX1dJTkRPV19MT09TRV9QIChmKSkKKyAgICBlcnJvciAo IkNhbid0IGV4cGFuZCBtaW5pYnVmZmVyIHdpbmRvdyB0byBmdWxsIGZyYW1lIik7CgogICBp ZiAoQlVGRkVSUCAody0+Y29udGVudHMpKQogICAgIHsKQEAgLTM0NjAsMTAgKzM2ODksMTAg QEAgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgKHdpbmRvdy1zdGFydCBXSU5ET1cpLCBzbyBp ZiBjYWxsaW5nIHRoaXMKCiAgICAgICB3aW5kb3dfc2V0X2JlZm9yZV9zaXplX2NoYW5nZV9z aXplcyAocik7CgotICAgICAgaWYgKEZSQU1FX0hBU19NSU5JQlVGX1AgKGYpICYmICFGUkFN RV9NSU5JQlVGX09OTFlfUCAoZikpCisgICAgICBpZiAoTUlOSUJVRkZFUl9XSU5ET1dfRklY RURfUCAoZikpCiAJLyogUmVjb3JkIHNpemUgb2YgRlJBTUUncyBtaW5pYnVmZmVyIHdpbmRv dyB0b28uICAqLwogCXdpbmRvd19zZXRfYmVmb3JlX3NpemVfY2hhbmdlX3NpemVzCi0JICAo WFdJTkRPVyAoRlJBTUVfTUlOSUJVRl9XSU5ET1cgKGYpKSk7CisJICAoWFdJTkRPVyAoTUlO SUJVRkZFUl9XSU5ET1cgKGYpKSk7CgogICAgICAgRlJBTUVfV0lORE9XX0NPTkZJR1VSQVRJ T05fQ0hBTkdFRCAoZikgPSBmYWxzZTsKICAgICB9CkBAIC0zNjExLDEyICszODQwLDYgQEAg ZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgKHdpbmRvdy1zdGFydCBXSU5ET1cpLCBzbyBpZiBj YWxsaW5nIHRoaXMKICAgcmV0dXJuIFFuaWw7CiB9CiAMCi1zdGF0aWMgTGlzcF9PYmplY3QK LWRpc3BsYXlfYnVmZmVyIChMaXNwX09iamVjdCBidWZmZXIsIExpc3BfT2JqZWN0IG5vdF90 aGlzX3dpbmRvd19wLCBMaXNwX09iamVjdCBvdmVycmlkZV9mcmFtZSkKLXsKLSAgcmV0dXJu IGNhbGwzIChRZGlzcGxheV9idWZmZXIsIGJ1ZmZlciwgbm90X3RoaXNfd2luZG93X3AsIG92 ZXJyaWRlX2ZyYW1lKTsKLX0KLQogREVGVU4gKCJmb3JjZS13aW5kb3ctdXBkYXRlIiwgRmZv cmNlX3dpbmRvd191cGRhdGUsIFNmb3JjZV93aW5kb3dfdXBkYXRlLAogICAgICAgIDAsIDEs IDAsCiAgICAgICAgZG9jOiAvKiBGb3JjZSBhbGwgd2luZG93cyB0byBiZSB1cGRhdGVkIG9u IG5leHQgcmVkaXNwbGF5LgpAQCAtMzc4MSw3ICs0MDA0LDYgQEAgZGVwZW5kcyBvbiB0aGUg dmFsdWUgb2YgKHdpbmRvdy1zdGFydCBXSU5ET1cpLCBzbyBpZiBjYWxsaW5nIHRoaXMKICAg ICAgYWxsb2NhdGVfd2luZG93LiAgKi8KICAgd3NldF9wcmV2X2J1ZmZlcnMgKHcsIFFuaWwp OwogICB3c2V0X25leHRfYnVmZmVycyAodywgUW5pbCk7Ci0KICAgLyogSW5pdGlhbGl6ZSBu b24tTGlzcCBkYXRhLiAgTm90ZSB0aGF0IGFsbG9jYXRlX3dpbmRvdyB6ZXJvZXMgb3V0IGFs bAogICAgICBub24tTGlzcCBkYXRhLCBzbyBkbyBpdCBvbmx5IGZvciBzbG90cyB3aGljaCBz aG91bGQgbm90IGJlIHplcm8uICAqLwogICB3LT5ucm93c19zY2FsZV9mYWN0b3IgPSB3LT5u Y29sc19zY2FsZV9mYWN0b3IgPSAxOwpAQCAtMzk3MiwxMyArNDE5NCwxNyBAQCBkZXBlbmRz IG9uIHRoZSB2YWx1ZSBvZiAod2luZG93LXN0YXJ0IFdJTkRPVyksIHNvIGlmIGNhbGxpbmcg dGhpcwogfQoKCi0vKiBTZXQgdy0+cGl4ZWxfaGVpZ2h0ICh3LT5waXhlbF93aWR0aCBpZiBI T1JGTEFHKSB0bwotICAgdy0+bmV3X3BpeGVsIGZvciB3aW5kb3cgVyBhbmQgcmVjdXJzaXZl bHkgYWxsIGNoaWxkIHdpbmRvd3Mgb2YgVy4KLSAgIEFsc28gY2FsY3VsYXRlIGFuZCBhc3Np Z24gdGhlIG5ldyB2ZXJ0aWNhbCAoaG9yaXpvbnRhbCkgcGl4ZWwgc3RhcnQKLSAgIHBvc2l0 aW9ucyBvZiBlYWNoIG9mIHRoZXNlIHdpbmRvd3MuCisvKioKKyAqIHdpbmRvd19yZXNpemVf YXBwbHk6CisgKgorICogU2V0IHBpeGVsIGhlaWdodCAocGl4ZWwgd2lkdGggaWYgSE9SRkxB RyBpcyB0cnVlKSB0byB0aGUgbmV3IHBpeGVscworICogc2l6ZXMgZm9yIHdpbmRvdyBXIGFu ZCByZWN1cnNpdmVseSBhbGwgY2hpbGQgd2luZG93cyBvZiBXLiAgQWxzbworICogY2FsY3Vs YXRlIGFuZCBhc3NpZ24gdGhlIG5ldyB2ZXJ0aWNhbCAoaG9yaXpvbnRhbCkgcGl4ZWwgc3Rh cnQKKyAqIHBvc2l0aW9ucyBvZiBlYWNoIG9mIHRoZXNlIHdpbmRvd3MuCgotICAgVGhpcyBm dW5jdGlvbiBkb2VzIG5vdCBwZXJmb3JtIGFueSBlcnJvciBjaGVja3MuICBNYWtlIHN1cmUg eW91IGhhdmUKLSAgIHJ1biB3aW5kb3dfcmVzaXplX2NoZWNrIG9uIFcgYmVmb3JlIGFwcGx5 aW5nIHRoaXMgZnVuY3Rpb24uICAqLworICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwZXJm b3JtIGFueSBlcnJvciBjaGVja3MuICBNYWtlIHN1cmUgeW91CisgKiAgaGF2ZSBydW4gd2lu ZG93X3Jlc2l6ZV9jaGVjayBvbiBXIGJlZm9yZSBydW5uaW5nIHRoaXMgZnVuY3Rpb24uCisg Ki8KIHN0YXRpYyB2b2lkCiB3aW5kb3dfcmVzaXplX2FwcGx5IChzdHJ1Y3Qgd2luZG93ICp3 LCBib29sIGhvcmZsYWcpCiB7CkBAIC00MTgxLDI0ICs0NDA3LDQxIEBAIGRlcGVuZHMgb24g dGhlIHZhbHVlIG9mICh3aW5kb3ctc3RhcnQgV0lORE9XKSwgc28gaWYgY2FsbGluZyB0aGlz CiAgIHN0cnVjdCB3aW5kb3cgKnIgPSBYV0lORE9XIChGUkFNRV9ST09UX1dJTkRPVyAoZikp OwoKICAgYmxvY2tfaW5wdXQgKCk7Ci0gIC8qIE5lY2Vzc2FyeSB3aGVuIGRlbGV0aW5nIHRo ZSB0b3AtL29yIGxlZnRtb3N0IHdpbmRvdy4gICovCi0gIHItPmxlZnRfY29sID0gMDsKLSAg ci0+dG9wX2xpbmUgPSBGUkFNRV9UT1BfTUFSR0lOIChmKTsKLSAgd2luZG93X3Jlc2l6ZV9h cHBseV90b3RhbCAociwgIU5JTFAgKGhvcml6b250YWwpKTsKLSAgLyogSGFuZGxlIHRoZSBt aW5pIHdpbmRvdy4gICovCi0gIGlmIChGUkFNRV9IQVNfTUlOSUJVRl9QIChmKSAmJiAhRlJB TUVfTUlOSUJVRl9PTkxZX1AgKGYpKQorCisgIGlmIChOSUxQIChob3Jpem9udGFsKSkKICAg ICB7Ci0gICAgICBzdHJ1Y3Qgd2luZG93ICptID0gWFdJTkRPVyAoZi0+bWluaWJ1ZmZlcl93 aW5kb3cpOworICAgICAgaWYgKE1JTklCVUZGRVJfV0lORE9XX1RPUF9QIChmKSkKKwl7CisJ ICBzdHJ1Y3Qgd2luZG93ICptID0gWFdJTkRPVyAoTUlOSUJVRkZFUl9XSU5ET1cgKGYpKTsK Ci0gICAgICBpZiAoTklMUCAoaG9yaXpvbnRhbCkpCisJICBtLT50b3BfbGluZSA9IEZSQU1F X1RPUF9NQVJHSU4gKGYpOworCSAgci0+dG9wX2xpbmUgPSBtLT50b3BfbGluZSArIG0tPnRv dGFsX2xpbmVzOworCX0KKyAgICAgIGVsc2UgaWYgKE1JTklCVUZGRVJfV0lORE9XX0JPVFRP TV9QIChmKSkKIAl7CisJICBzdHJ1Y3Qgd2luZG93ICptID0gWFdJTkRPVyAoTUlOSUJVRkZF Ul9XSU5ET1cgKGYpKTsKKworCSAgci0+dG9wX2xpbmUgPSBGUkFNRV9UT1BfTUFSR0lOIChm KTsKIAkgIG0tPnRvcF9saW5lID0gci0+dG9wX2xpbmUgKyByLT50b3RhbF9saW5lczsKLQkg IG0tPnRvdGFsX2xpbmVzID0gWEZBU1RJTlQgKG0tPm5ld190b3RhbCk7CiAJfQogICAgICAg ZWxzZQotCW0tPnRvdGFsX2NvbHMgPSBYRkFTVElOVCAobS0+bmV3X3RvdGFsKTsKKwlyLT50 b3BfbGluZSA9IEZSQU1FX1RPUF9NQVJHSU4gKGYpOworICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICAgIHItPmxlZnRfY29sID0gMDsKKworICAgICAgaWYgKE1JTklCVUZGRVJfV0lORE9X X0ZJWEVEX1AgKGYpKQorCXsKKwkgIHN0cnVjdCB3aW5kb3cgKm0gPSBYV0lORE9XIChNSU5J QlVGRkVSX1dJTkRPVyAoZikpOworCisJICBtLT50b3RhbF9jb2xzID0gWEZBU1RJTlQgKG0t Pm5ld190b3RhbCk7CisJICBtLT5sZWZ0X2NvbCA9IDA7CisJfQogICAgIH0KCisgIHdpbmRv d19yZXNpemVfYXBwbHlfdG90YWwgKHIsICFOSUxQIChob3Jpem9udGFsKSk7CisKICAgdW5i bG9ja19pbnB1dCAoKTsKCiAgIHJldHVybiBRdDsKQEAgLTQyMTUsNyArNDQ1OCw3IEBAIGRl cGVuZHMgb24gdGhlIHZhbHVlIG9mICh3aW5kb3ctc3RhcnQgV0lORE9XKSwgc28gaWYgY2Fs bGluZyB0aGlzCiB7CiAgIExpc3BfT2JqZWN0IHJvb3QgPSBmLT5yb290X3dpbmRvdzsKICAg c3RydWN0IHdpbmRvdyAqciA9IFhXSU5ET1cgKHJvb3QpOwotICBMaXNwX09iamVjdCBtaW5p ID0gZi0+bWluaWJ1ZmZlcl93aW5kb3c7CisgIExpc3BfT2JqZWN0IG1pbmkgPSBNSU5JQlVG RkVSX1dJTkRPVyAoZik7CiAgIHN0cnVjdCB3aW5kb3cgKm07CiAgIC8qIG9sZF9zaXplIGlz IHRoZSBvbGQgc2l6ZSBvZiB0aGUgZnJhbWUncyByb290IHdpbmRvdy4gICovCiAgIGludCBv bGRfc2l6ZSA9IGhvcmZsYWcgPyByLT50b3RhbF9jb2xzIDogci0+dG90YWxfbGluZXM7CkBA IC00MjMzLDI0ICs0NDc2LDQxIEBAIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mICh3aW5kb3ct c3RhcnQgV0lORE9XKSwgc28gaWYgY2FsbGluZyB0aGlzCiAJIHNpbmNlIHRoZXNlIGFyZSBu b3QgcGFydCBvZiB0aGUgZnJhbWUncyB0ZXh0IGFyZWEuICAqLwogICAgICAgbmV3X3BpeGVs X3NpemUgPSBtYXggKGhvcmZsYWcKIAkJCSAgICA/IHNpemUKLQkJCSAgICA6IChzaXplCi0J CQkgICAgICAgLSAoKEZSQU1FX0hBU19NSU5JQlVGX1AgKGYpCi0JCQkJICAgJiYgIUZSQU1F X01JTklCVUZfT05MWV9QIChmKSkKLQkJCQkgID8gRlJBTUVfTElORV9IRUlHSFQgKGYpIDog MCkpLAorCQkJICAgIDogKHNpemUgLSAoTUlOSUJVRkZFUl9XSU5ET1dfRklYRURfUCAoZikK KwkJCQkgICAgICAgPyBGUkFNRV9MSU5FX0hFSUdIVCAoZikgOiAwKSksCiAJCQkgICAgdW5p dCk7CiAgICAgICBuZXdfc2l6ZSA9IG5ld19waXhlbF9zaXplIC8gdW5pdDsKICAgICB9CiAg IGVsc2UKICAgICB7Ci0gICAgICBuZXdfc2l6ZSA9IG1heCAoc2l6ZSAtICghaG9yZmxhZwot CQkJICAgICAgJiYgRlJBTUVfSEFTX01JTklCVUZfUCAoZikKLQkJCSAgICAgICYmICFGUkFN RV9NSU5JQlVGX09OTFlfUCAoZikpLAorICAgICAgbmV3X3NpemUgPSBtYXggKHNpemUgLSAo IWhvcmZsYWcgJiYgTUlOSUJVRkZFUl9XSU5ET1dfRklYRURfUCAoZikpLAogCQkgICAgICAx KTsKICAgICAgIG5ld19waXhlbF9zaXplID0gbmV3X3NpemUgKiB1bml0OwogICAgIH0KCisg IGlmIChNSU5JQlVGRkVSX1dJTkRPV19UT1BfUCAoZikpCisgICAgeworICAgICAgbSA9IFhX SU5ET1cgKG1pbmkpOworICAgICAgaWYgKGhvcmZsYWcpCisJeworCSAgbS0+dG90YWxfY29s cyA9IG5ld19zaXplOworCSAgbS0+cGl4ZWxfd2lkdGggPSBuZXdfcGl4ZWxfc2l6ZTsKKwl9 CisgICAgICBlbHNlCisJeworCSAgLyogQXJlIHdlIHN1cmUgd2UgYWx3YXlzIHdhbnQgMSBs aW5lIGhlcmU/ICAqLworCSAgbS0+dG90YWxfbGluZXMgPSAxOworCSAgbS0+cGl4ZWxfaGVp Z2h0ID0gRlJBTUVfTElORV9IRUlHSFQgKGYpOworCSAgbS0+dG9wX2xpbmUgPSBGUkFNRV9U T1BfTUFSR0lOIChmKTsKKwkgIG0tPnBpeGVsX3RvcCA9IEZSQU1FX1RPUF9NQVJHSU5fSEVJ R0hUIChmKTsKKwl9CisgICAgfQorCiAgIGlmIChuZXdfcGl4ZWxfc2l6ZSA9PSBvbGRfcGl4 ZWxfc2l6ZQotICAgICAgJiYgKGhvcmZsYWcgfHwgci0+cGl4ZWxfdG9wID09IEZSQU1FX1RP UF9NQVJHSU5fSEVJR0hUIChmKSkpCisgICAgICAmJiAoaG9yZmxhZworCSAgfHwgKEZSQU1F X1RPUF9NQVJHSU5fSEVJR0hUIChmKQorCSAgICAgID09IChNSU5JQlVGRkVSX1dJTkRPV19U T1BfUCAoZikKKwkJICA/IG0tPnBpeGVsX3RvcCA6IHItPnBpeGVsX3RvcCkpKSkKICAgICA7 CiAgIGVsc2UgaWYgKFdJTkRPV19MRUFGX1AgKHIpKQogICAgIC8qIEZvciBhIGxlYWYgcm9v dCB3aW5kb3cganVzdCBzZXQgdGhlIHNpemUuICAqLwpAQCAtNDI2MSw4ICs0NTIxLDEyIEBA IGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mICh3aW5kb3ctc3RhcnQgV0lORE9XKSwgc28gaWYg Y2FsbGluZyB0aGlzCiAgICAgICB9CiAgICAgZWxzZQogICAgICAgewotCXItPnRvcF9saW5l ID0gRlJBTUVfVE9QX01BUkdJTiAoZik7Ci0Jci0+cGl4ZWxfdG9wID0gRlJBTUVfVE9QX01B UkdJTl9IRUlHSFQgKGYpOworCXItPnRvcF9saW5lID0gKE1JTklCVUZGRVJfV0lORE9XX1RP UF9QIChmKQorCQkgICAgICAgPyBtLT50b3BfbGluZSArIG0tPnRvdGFsX2xpbmVzCisJCSAg ICAgICA6IEZSQU1FX1RPUF9NQVJHSU4gKGYpKTsKKwlyLT5waXhlbF90b3AgPSAoTUlOSUJV RkZFUl9XSU5ET1dfVE9QX1AgKGYpCisJCQk/IG0tPnBpeGVsX3RvcCArIG0tPnBpeGVsX2hl aWdodAorCQkJOiBGUkFNRV9UT1BfTUFSR0lOX0hFSUdIVCAoZikpOwoKIAlyLT50b3RhbF9s aW5lcyA9IG5ld19zaXplOwogCXItPnBpeGVsX2hlaWdodCA9IG5ld19waXhlbF9zaXplOwpA QCAtNDI3Myw4ICs0NTM3LDEyIEBAIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mICh3aW5kb3ct c3RhcnQgV0lORE9XKSwgc28gaWYgY2FsbGluZyB0aGlzCgogICAgICAgaWYgKCFob3JmbGFn KQogCXsKLQkgIHItPnRvcF9saW5lID0gRlJBTUVfVE9QX01BUkdJTiAoZik7Ci0JICByLT5w aXhlbF90b3AgPSBGUkFNRV9UT1BfTUFSR0lOX0hFSUdIVCAoZik7CisJICByLT50b3BfbGlu ZSA9IChNSU5JQlVGRkVSX1dJTkRPV19UT1BfUCAoZikKKwkJCSA/IG0tPnRvcF9saW5lICsg bS0+dG90YWxfbGluZXMKKwkJCSA6IEZSQU1FX1RPUF9NQVJHSU4gKGYpKTsKKwkgIHItPnBp eGVsX3RvcCA9IChNSU5JQlVGRkVSX1dJTkRPV19UT1BfUCAoZikKKwkJCSAgPyBtLT5waXhl bF90b3AgKyBtLT5waXhlbF9oZWlnaHQKKwkJCSAgOiBGUkFNRV9UT1BfTUFSR0lOX0hFSUdI VCAoZikpOwogCX0KCiAgICAgICBpZiAocGl4ZWx3aXNlKQpAQCAtNDMwNSw3ICs0NTczLDcg QEAgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgKHdpbmRvdy1zdGFydCBXSU5ET1cpLCBzbyBp ZiBjYWxsaW5nIHRoaXMKIAl9CiAgICAgfQoKLSAgaWYgKEZSQU1FX0hBU19NSU5JQlVGX1Ag KGYpICYmICFGUkFNRV9NSU5JQlVGX09OTFlfUCAoZikpCisgIGlmIChNSU5JQlVGRkVSX1dJ TkRPV19CT1RUT01fUCAoZikpCiAgICAgewogICAgICAgbSA9IFhXSU5ET1cgKG1pbmkpOwog ICAgICAgaWYgKGhvcmZsYWcpCkBAIC00Mzk1LDcgKzQ2NjMsNyBAQCBTSURFIHQgKG9yIGBy aWdodCcpIHNwZWNpZmllcyB0aGF0IHRoZSBuZXcgd2luZG93IHNoYWxsIGJlIGxvY2F0ZWQg b24KICAgciA9IFhXSU5ET1cgKHJlZmVyZW5jZSk7CgogICAvKiBUaGUgZm9sbG93aW5nIGJ1 Z3MgYXJlIGNhdWdodCBieSBgc3BsaXQtd2luZG93Jy4gICovCi0gIGlmIChNSU5JX1dJTkRP V19QIChvKSkKKyAgaWYgKE1JTklCVUZGRVJfV0lORE9XX1AgKG8pKQogICAgIGVycm9yICgi QXR0ZW1wdCB0byBzcGxpdCBtaW5pYnVmZmVyIHdpbmRvdyIpOwogICBlbHNlIGlmICh0b3Rh bF9zaXplIDwgKGhvcmZsYWcgPyAyIDogMSkpCiAgICAgZXJyb3IgKCJTaXplIG9mIG5ldyB3 aW5kb3cgdG9vIHNtYWxsIChhZnRlciBzcGxpdCkiKTsKQEAgLTQ3MDksMTQ2ICs0OTc3LDE4 MiBAQCBTSURFIHQgKG9yIGByaWdodCcpIHNwZWNpZmllcyB0aGF0IHRoZSBuZXcgd2luZG93 IHNoYWxsIGJlIGxvY2F0ZWQgb24KIAkJCVJlc2l6aW5nIE1pbmktV2luZG93cwogICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwoKLS8qIEdyb3cgbWluaS13aW5kb3cgVyBieSBERUxUQSBsaW5lcywg REVMVEEgPj0gMCwgb3IgYXMgbXVjaCBhcyB3ZQotICAgY2FuLiAgKi8KLXZvaWQKLWdyb3df bWluaV93aW5kb3cgKHN0cnVjdCB3aW5kb3cgKncsIGludCBkZWx0YSwgYm9vbCBwaXhlbHdp c2UpCisvKioKKyAqIGZpeGVkX21pbmlidWZmZXJfd2luZG93X3Jlc2l6ZV9hcHBseToKKyAq CisgKiBBc3NpZ24gbmV3IHdpbmRvdyBzaXplcyBhZnRlciByZXNpemluZyBhIGZpeGVkIG1p bmlidWZmZXIgd2luZG93IFcKKyAqIGJ5IERFTFRBIHBpeGVscyAoYSBmaXhlZCBtaW5pYnVm ZmVyIHdpbmRvdyBpcyBkaXNwbGF5ZWQgaW52YXJpYWJseQorICogYXQgdGhlIHRvcCBvciBi b3R0b20gb2YgaXRzIGZyYW1lKS4gIE5vIGVycm9yIGNoZWNraW5nIHBlcmZvcm1lZC4KKyAg Ki8KK3N0YXRpYyB2b2lkCitmaXhlZF9taW5pYnVmZmVyX3dpbmRvd19yZXNpemVfYXBwbHkg KHN0cnVjdCB3aW5kb3cgKncsIGludCBkZWx0YSkKIHsKICAgc3RydWN0IGZyYW1lICpmID0g WEZSQU1FICh3LT5mcmFtZSk7Ci0gIHN0cnVjdCB3aW5kb3cgKnI7Ci0gIExpc3BfT2JqZWN0 IHJvb3QsIGhlaWdodDsKLSAgaW50IGxpbmVfaGVpZ2h0LCBwaXhlbF9oZWlnaHQ7CisgIExp c3BfT2JqZWN0IHJvb3QgPSBGUkFNRV9ST09UX1dJTkRPVyAoZik7CisgIHN0cnVjdCB3aW5k b3cgKnIgPSBYV0lORE9XIChyb290KTsKCi0gIGVhc3NlcnQgKE1JTklfV0lORE9XX1AgKHcp KTsKLSAgZWFzc2VydCAoZGVsdGEgPj0gMCk7CisgIGJsb2NrX2lucHV0ICgpOworICB3LT5w aXhlbF9oZWlnaHQgPSB3LT5waXhlbF9oZWlnaHQgKyBkZWx0YTsKKyAgdy0+dG90YWxfbGlu ZXMgPSB3LT5waXhlbF9oZWlnaHQgLyBGUkFNRV9MSU5FX0hFSUdIVCAoZik7CgotICBpZiAo ZGVsdGEgPiAwKQorICBpZiAoTUlOSUJVRkZFUl9XSU5ET1dfVE9QX1AgKGYpKQogICAgIHsK LSAgICAgIHJvb3QgPSBGUkFNRV9ST09UX1dJTkRPVyAoZik7Ci0gICAgICByID0gWFdJTkRP VyAocm9vdCk7Ci0gICAgICBoZWlnaHQgPSBjYWxsMyAoUXdpbmRvd19fcmVzaXplX3Jvb3Rf d2luZG93X3ZlcnRpY2FsbHksCi0JCSAgICAgIHJvb3QsIG1ha2VfbnVtYmVyICgtIGRlbHRh KSwgcGl4ZWx3aXNlID8gUXQgOiBRbmlsKTsKLSAgICAgIGlmIChJTlRFR0VSUCAoaGVpZ2h0 KSAmJiB3aW5kb3dfcmVzaXplX2NoZWNrIChyLCBmYWxzZSkpCi0JewotCSAgYmxvY2tfaW5w dXQgKCk7Ci0JICB3aW5kb3dfcmVzaXplX2FwcGx5IChyLCBmYWxzZSk7CisgICAgICAvKiBU aGUgbmV3IHBvc2l0aW9uIG9mIHRoZSByb290IHdpbmRvdyBpcyBuZWVkZWQgZm9yCisJIHdp bmRvd19yZXNpemVfYXBwbHkuICAqLworICAgICAgci0+cGl4ZWxfdG9wID0gdy0+cGl4ZWxf dG9wICsgdy0+cGl4ZWxfaGVpZ2h0OworICAgICAgci0+dG9wX2xpbmUgPSB3LT50b3BfbGlu ZSArIHctPnRvdGFsX2xpbmVzOworICAgIH0KCi0JICBpZiAocGl4ZWx3aXNlKQotCSAgICB7 Ci0JICAgICAgcGl4ZWxfaGVpZ2h0ID0gbWluICgtWElOVCAoaGVpZ2h0KSwgSU5UX01BWCAt IHctPnBpeGVsX2hlaWdodCk7Ci0JICAgICAgbGluZV9oZWlnaHQgPSBwaXhlbF9oZWlnaHQg LyBGUkFNRV9MSU5FX0hFSUdIVCAoZik7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAg ICAgIGxpbmVfaGVpZ2h0ID0gbWluICgtWElOVCAoaGVpZ2h0KSwKLQkJCQkgKChJTlRfTUFY IC0gdy0+cGl4ZWxfaGVpZ2h0KQotCQkJCSAgLyBGUkFNRV9MSU5FX0hFSUdIVCAoZikpKTsK LQkgICAgICBwaXhlbF9oZWlnaHQgPSBsaW5lX2hlaWdodCAqIEZSQU1FX0xJTkVfSEVJR0hU IChmKTsKLQkgICAgfQorICB3aW5kb3dfcmVzaXplX2FwcGx5IChyLCBmYWxzZSk7CgotCSAg LyogR3JvdyB0aGUgbWluaS13aW5kb3cuICAqLwotCSAgdy0+cGl4ZWxfdG9wID0gci0+cGl4 ZWxfdG9wICsgci0+cGl4ZWxfaGVpZ2h0OwotCSAgdy0+dG9wX2xpbmUgPSByLT50b3BfbGlu ZSArIHItPnRvdGFsX2xpbmVzOwotCSAgLyogTWFrZSBzdXJlIHRoZSBtaW5pLXdpbmRvdyBo YXMgYWx3YXlzIGF0IGxlYXN0IG9uZSBsaW5lLiAgKi8KLQkgIHctPnBpeGVsX2hlaWdodCA9 IG1heCAody0+cGl4ZWxfaGVpZ2h0ICsgcGl4ZWxfaGVpZ2h0LAotCQkJCSBGUkFNRV9MSU5F X0hFSUdIVCAoZikpOwotCSAgdy0+dG90YWxfbGluZXMgPSBtYXggKHctPnRvdGFsX2xpbmVz ICsgbGluZV9oZWlnaHQsIDEpOwotCi0JICAvKiBFbmZvcmNlIGZ1bGwgcmVkaXNwbGF5IG9m IHRoZSBmcmFtZS4gICovCi0JICAvKiBGSVhNRTogU2hvdWxkbid0IHdpbmRvdy0tcmVzaXpl LXJvb3Qtd2luZG93LXZlcnRpY2FsbHkgZG8gaXQ/ICAqLwotCSAgZnNldF9yZWRpc3BsYXkg KGYpOwotCSAgYWRqdXN0X2ZyYW1lX2dseXBocyAoZik7Ci0JICB1bmJsb2NrX2lucHV0ICgp OwotCX0KLSAgICAgIGVsc2UKLQllcnJvciAoIkZhaWxlZCB0byBncm93IG1pbmlidWZmZXIg d2luZG93Iik7CisgIGlmIChNSU5JQlVGRkVSX1dJTkRPV19CT1RUT01fUCAoZikpCisgICAg eworICAgICAgLyogVGhlIHBvc2l0aW9uIG9mIHRoZSByb290IHdpbmRvdyBpcyBuZWVkZWQg dG8gYXNzaWduCisJIHRoZSBwb3NpdGlvbiBvZiBhIG1pbmlidWZmZXIgd2luZG93IGF0IHRo ZSBib3R0b20gb2YKKwkgdGhlIGZyYW1lLiAgKi8KKyAgICAgIHctPnBpeGVsX3RvcCA9IHIt PnBpeGVsX3RvcCArIHItPnBpeGVsX2hlaWdodDsKKyAgICAgIHctPnRvcF9saW5lID0gci0+ dG9wX2xpbmUgKyByLT50b3RhbF9saW5lczsKKyAgICB9CisKKyAgLyogRW5mb3JjZSBmdWxs IHJlZGlzcGxheSBvZiB0aGUgZnJhbWUuICAqLworICAvKiBGSVhNRTogU2hvdWxkbid0IHNv bWUgb2YgdGhlIGNhbGxlciBkbyBpdD8gICovCisgIGZzZXRfcmVkaXNwbGF5IChmKTsKKyAg YWRqdXN0X2ZyYW1lX2dseXBocyAoZik7CisgIHVuYmxvY2tfaW5wdXQgKCk7Cit9CisKKy8q KgorICogZ3Jvd19taW5pX3dpbmRvdzoKKyAqCisgKiBHcm93IG1pbmktd2luZG93IFcgYnkg REVMVEEgcGl4ZWxzLiAgUmV0dXJuIHRydWUgaWYgdGhlIGhlaWdodCBvZiBXCisgKiBjaGFu Z2VkLiAgSWYgREVMVEEgaXMgbmVnYXRpdmUsIHRoaXMgbWF5IHNocmluayB0aGUgbWluaWJ1 ZmZlcgorICogd2luZG93IHRvIHRoZSBtaW5pbXVtIGhlaWdodCB0byBkaXNwbGF5IG9uZSBs aW5lIG9mIHRleHQgcGx1cyBhbgorICogZXZlbnR1YWwgZGl2aWRlciBoZWlnaHQuCisgKi8K K2Jvb2wKK2dyb3dfbWluaV93aW5kb3cgKHN0cnVjdCB3aW5kb3cgKncsIGludCBkZWx0YSkK K3sKKyAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FICh3LT5mcmFtZSk7CisgIGludCBvbGRf aGVpZ2h0ID0gV0lORE9XX1BJWEVMX0hFSUdIVCAodyk7CisgIGludCBtaW5faGVpZ2h0ID0g RlJBTUVfTElORV9IRUlHSFQgKGYpICsgV0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3 KTsKKworICBlYXNzZXJ0IChNSU5JX1dJTkRPV19QICh3KSk7CisKKyAgaWYgKG9sZF9oZWln aHQgKyBkZWx0YSA8IG1pbl9oZWlnaHQpCisgICAgLyogTmV2ZXIgc2hyaW5rIG1pbmktd2lu ZG93IHRvIGxlc3MgdGhhbiBpdHMgbWluaW11bQorICAgICAgIGhlaWdodC4gICovCisgICAg ZGVsdGEgPSBvbGRfaGVpZ2h0ID4gbWluX2hlaWdodCA/IG1pbl9oZWlnaHQgLSBvbGRfaGVp Z2h0IDogMDsKKworICBpZiAoZGVsdGEgPT0gMCkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAg RlJBTUVfV0lORE9XU19GUk9aRU4gKGYpID0gdHJ1ZTsKKworICBpZiAoTUlOSUJVRkZFUl9X SU5ET1dfRklYRURfUCAoZikpCisgICAgLyogTWluaWJ1ZmZlciB3aW5kb3cgZml4ZWQgYXQg dGhlIHRvcCBvciBib3R0b20gb2YgaXRzIGZyYW1lLiAgKi8KKyAgICB7CisgICAgICBMaXNw X09iamVjdCByb290ID0gRlJBTUVfUk9PVF9XSU5ET1cgKGYpOworICAgICAgc3RydWN0IHdp bmRvdyAqciA9IFhXSU5ET1cgKHJvb3QpOworICAgICAgTGlzcF9PYmplY3QgZ3JvdyA9IGNh bGwzIChRd2luZG93X19yZXNpemVfcm9vdF93aW5kb3dfdmVydGljYWxseSwKKwkJCQlyb290 LCBtYWtlX251bWJlciAoLSBkZWx0YSksIFF0KTsKKworICAgICAgaWYgKElOVEVHRVJQIChn cm93KSAmJiB3aW5kb3dfcmVzaXplX2NoZWNrIChyLCBmYWxzZSkpCisJZml4ZWRfbWluaWJ1 ZmZlcl93aW5kb3dfcmVzaXplX2FwcGx5ICh3LCAtWElOVCAoZ3JvdykpOworICAgIH0KKyAg ZWxzZSBpZiAodyA9PSBYV0lORE9XIChGUkFNRV9ST09UX1dJTkRPVyAoZikpKQorICAgIC8q IEEgbWluaWJ1ZmZlciBvbmx5IG9yIGVjaG8gb25seSBmcmFtZS4gICovCisgICAgY2FsbDIg KFF3aW5kb3dfX3Jlc2l6ZV9taW5pYnVmZmVyX2ZyYW1lLAorCSAgIEZSQU1FX1JPT1RfV0lO RE9XIChmKSwgbWFrZV9udW1iZXIgKGRlbHRhKSk7CisgIGVsc2UKKyAgICAvKiBBIGxvb3Nl IG1pbmlidWZmZXIgd2luZG93IG9yIGEgc2VwYXJhdGUgZWNobyB3aW5kb3cuICAqLworICAg IHsKKyAgICAgIExpc3BfT2JqZWN0IHdpbmRvdzsKCisgICAgICBYU0VUV0lORE9XICh3aW5k b3csIHcpOworICAgICAgY2FsbDIgKFF3aW5kb3dfX3Jlc2l6ZV9taW5pX3dpbmRvdywgd2lu ZG93LCBtYWtlX251bWJlciAoZGVsdGEpKTsKICAgICB9CisKKyAgcmV0dXJuIFdJTkRPV19Q SVhFTF9IRUlHSFQgKHcpICE9IG9sZF9oZWlnaHQ7CiB9CgotLyogU2hyaW5rIG1pbmktd2lu ZG93IFcgdG8gb25lIGxpbmUuICAqLwotdm9pZAotc2hyaW5rX21pbmlfd2luZG93IChzdHJ1 Y3Qgd2luZG93ICp3LCBib29sIHBpeGVsd2lzZSkKKy8qKgorICogc2hyaW5rX21pbmlfd2lu ZG93OgorICoKKyAqIFNocmluayBtaW5pLXdpbmRvdyBXIHRvIHRoZSBtaW5pbXVtIGhlaWdo dCBuZWVkZWQgdG8gZGlzcGxheSBvbmUKKyAqIGxpbmUgb2YgdGV4dCBwbHVzIGFuIGV2ZW50 dWFsIGRpdmlkZXIgaGVpZ2h0LiAgUmV0dXJuIHRydWUgaWYgdGhlCisgKiBoZWlnaHQgb2Yg VyBjaGFuZ2VkLgorICovCitib29sCitzaHJpbmtfbWluaV93aW5kb3cgKHN0cnVjdCB3aW5k b3cgKncpCiB7CiAgIHN0cnVjdCBmcmFtZSAqZiA9IFhGUkFNRSAody0+ZnJhbWUpOwotICBz dHJ1Y3Qgd2luZG93ICpyOwotICBMaXNwX09iamVjdCByb290LCBkZWx0YTsKLSAgRU1BQ1Nf SU5UIGhlaWdodCwgdW5pdDsKKyAgaW50IG9sZF9oZWlnaHQgPSBXSU5ET1dfUElYRUxfSEVJ R0hUICh3KTsKKyAgaW50IGRlbHRhID0gKG9sZF9oZWlnaHQKKwkgICAgICAgLSBGUkFNRV9M SU5FX0hFSUdIVCAoZikgLSBXSU5ET1dfQk9UVE9NX0RJVklERVJfV0lEVEggKHcpKTsKCiAg IGVhc3NlcnQgKE1JTklfV0lORE9XX1AgKHcpKTsKCi0gIGhlaWdodCA9IHBpeGVsd2lzZSA/ IHctPnBpeGVsX2hlaWdodCA6IHctPnRvdGFsX2xpbmVzOwotICB1bml0ID0gcGl4ZWx3aXNl ID8gRlJBTUVfTElORV9IRUlHSFQgKGYpIDogMTsKLSAgaWYgKGhlaWdodCA+IHVuaXQpCisg IGlmIChkZWx0YSA8PSAwKQorICAgIHJldHVybiBmYWxzZTsKKworICBGUkFNRV9XSU5ET1dT X0ZST1pFTiAoZikgPSBmYWxzZTsKKworICBpZiAoTUlOSUJVRkZFUl9XSU5ET1dfRklYRURf UCAoZikpCisgICAgLyogTWluaWJ1ZmZlciB3aW5kb3cgZml4ZWQgYXQgdGhlIHRvcCBvciBi b3R0b20gb2YgaXRzIGZyYW1lLiAgKi8KICAgICB7Ci0gICAgICByb290ID0gRlJBTUVfUk9P VF9XSU5ET1cgKGYpOwotICAgICAgciA9IFhXSU5ET1cgKHJvb3QpOwotICAgICAgZGVsdGEg PSBjYWxsMyAoUXdpbmRvd19fcmVzaXplX3Jvb3Rfd2luZG93X3ZlcnRpY2FsbHksCi0JCSAg ICAgcm9vdCwgbWFrZV9udW1iZXIgKGhlaWdodCAtIHVuaXQpLAotCQkgICAgIHBpeGVsd2lz ZSA/IFF0IDogUW5pbCk7Ci0gICAgICBpZiAoSU5URUdFUlAgKGRlbHRhKSAmJiB3aW5kb3df cmVzaXplX2NoZWNrIChyLCBmYWxzZSkpCi0JewotCSAgYmxvY2tfaW5wdXQgKCk7Ci0JICB3 aW5kb3dfcmVzaXplX2FwcGx5IChyLCBmYWxzZSk7Ci0KLQkgIC8qIFNocmluayB0aGUgbWlu aS13aW5kb3cuICAqLwotCSAgdy0+dG9wX2xpbmUgPSByLT50b3BfbGluZSArIHItPnRvdGFs X2xpbmVzOwotCSAgdy0+dG90YWxfbGluZXMgPSAxOwotCSAgdy0+cGl4ZWxfdG9wID0gci0+ cGl4ZWxfdG9wICsgci0+cGl4ZWxfaGVpZ2h0OwotCSAgdy0+cGl4ZWxfaGVpZ2h0ID0gRlJB TUVfTElORV9IRUlHSFQgKGYpOwotCSAgLyogRW5mb3JjZSBmdWxsIHJlZGlzcGxheSBvZiB0 aGUgZnJhbWUuICAqLwotCSAgLyogRklYTUU6IFNob3VsZG4ndCB3aW5kb3ctLXJlc2l6ZS1y b290LXdpbmRvdy12ZXJ0aWNhbGx5IGRvIGl0PyAgKi8KLQkgIGZzZXRfcmVkaXNwbGF5IChm KTsKLQkgIGFkanVzdF9mcmFtZV9nbHlwaHMgKGYpOwotCSAgdW5ibG9ja19pbnB1dCAoKTsK LQl9Ci0gICAgICAvKiBJZiB0aGUgYWJvdmUgZmFpbGVkIGZvciB3aGF0ZXZlciBzdHJhbmdl IHJlYXNvbiB3ZSBtdXN0IG1ha2UgYQotCSBvbmUgd2luZG93IGZyYW1lIGhlcmUuICBUaGUg c2FtZSByb3V0aW5lIHdpbGwgYmUgbmVlZGVkIHdoZW4KLQkgc2hyaW5raW5nIHRoZSBmcmFt ZSAoYW5kIHByb2JhYmx5IHdoZW4gbWFraW5nIHRoZSBpbml0aWFsCi0JICpzY3JhdGNoKiB3 aW5kb3cpLiAgRm9yIHRoZSBtb21lbnQgbGVhdmUgdGhpbmdzIGFzIHRoZXkgYXJlLiAgKi8K LSAgICAgIGVsc2UKLQllcnJvciAoIkZhaWxlZCB0byBzaHJpbmsgbWluaWJ1ZmZlciB3aW5k b3ciKTsKKyAgICAgIExpc3BfT2JqZWN0IHJvb3QgPSBGUkFNRV9ST09UX1dJTkRPVyAoZik7 CisgICAgICBzdHJ1Y3Qgd2luZG93ICpyID0gWFdJTkRPVyAocm9vdCk7CisgICAgICBMaXNw X09iamVjdCBncm93ID0gY2FsbDMgKFF3aW5kb3dfX3Jlc2l6ZV9yb290X3dpbmRvd192ZXJ0 aWNhbGx5LAorCQkJCXJvb3QsIG1ha2VfbnVtYmVyIChkZWx0YSksIFF0KTsKKworICAgICAg aWYgKElOVEVHRVJQIChncm93KSAmJiB3aW5kb3dfcmVzaXplX2NoZWNrIChyLCBmYWxzZSkp CisJZml4ZWRfbWluaWJ1ZmZlcl93aW5kb3dfcmVzaXplX2FwcGx5ICh3LCAtWElOVCAoZ3Jv dykpOwogICAgIH0KKyAgZWxzZSBpZiAodyA9PSBYV0lORE9XIChGUkFNRV9ST09UX1dJTkRP VyAoZikpKQorICAgIC8qIEEgbWluaWJ1ZmZlciBvbmx5IG9yIGVjaG8gb25seSBmcmFtZS4g ICovCisgICAgY2FsbDIgKFF3aW5kb3dfX3Jlc2l6ZV9taW5pYnVmZmVyX2ZyYW1lLAorCSAg IEZSQU1FX1JPT1RfV0lORE9XIChmKSwgbWFrZV9udW1iZXIgKC0gZGVsdGEpKTsKKyAgZWxz ZQorICAgIC8qIEEgbG9vc2UgbWluaWJ1ZmZlciB3aW5kb3cgb3IgYSBzZXBhcmF0ZSBlY2hv IHdpbmRvdy4gICovCisgICAgeworICAgICAgTGlzcF9PYmplY3Qgd2luZG93OworCisgICAg ICBYU0VUV0lORE9XICh3aW5kb3csIHcpOworICAgICAgY2FsbDIgKFF3aW5kb3dfX3Jlc2l6 ZV9taW5pX3dpbmRvdywgd2luZG93LCBtYWtlX251bWJlciAoLSBkZWx0YSkpOworICAgIH0K KworICByZXR1cm4gV0lORE9XX1BJWEVMX0hFSUdIVCAodykgIT0gb2xkX2hlaWdodDsKIH0K Ci1ERUZVTiAoInJlc2l6ZS1taW5pLXdpbmRvdy1pbnRlcm5hbCIsIEZyZXNpemVfbWluaV93 aW5kb3dfaW50ZXJuYWwsIFNyZXNpemVfbWluaV93aW5kb3dfaW50ZXJuYWwsIDEsIDEsIDAs CitERUZVTiAoInJlc2l6ZS1taW5pYnVmZmVyLXdpbmRvdy1pbnRlcm5hbCIsIEZyZXNpemVf bWluaWJ1ZmZlcl93aW5kb3dfaW50ZXJuYWwsCisgICAgICAgU3Jlc2l6ZV9taW5pYnVmZmVy X3dpbmRvd19pbnRlcm5hbCwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJlc2l6ZSBtaW5p YnVmZmVyIHdpbmRvdyBXSU5ET1cuICAqLykKICAgICAgKExpc3BfT2JqZWN0IHdpbmRvdykK IHsKICAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKHdpbmRvdyk7CiAgIHN0cnVjdCB3 aW5kb3cgKnI7CiAgIHN0cnVjdCBmcmFtZSAqZjsKLSAgaW50IGhlaWdodDsKKyAgaW50IG9s ZF9oZWlnaHQsIGRlbHRhOwoKLSAgQ0hFQ0tfV0lORE9XICh3aW5kb3cpOworICBDSEVDS19M SVZFX1dJTkRPVyAod2luZG93KTsKICAgZiA9IFhGUkFNRSAody0+ZnJhbWUpOwoKLSAgaWYg KCFFUSAoRlJBTUVfTUlOSUJVRl9XSU5ET1cgKFhGUkFNRSAody0+ZnJhbWUpKSwgd2luZG93 KSkKLSAgICBlcnJvciAoIk5vdCBhIHZhbGlkIG1pbmlidWZmZXIgd2luZG93Iik7Ci0gIGVs c2UgaWYgKEZSQU1FX01JTklCVUZfT05MWV9QIChmKSkKLSAgICBlcnJvciAoIkNhbm5vdCBy ZXNpemUgYSBtaW5pYnVmZmVyLW9ubHkgZnJhbWUiKTsKKyAgaWYgKCFNSU5JQlVGRkVSX1dJ TkRPV19GSVhFRF9QIChmKSkKKyAgICBlcnJvciAoIk5vdCBhIGZpeGVkIG1pbmlidWZmZXIg d2luZG93Iik7CgogICByID0gWFdJTkRPVyAoRlJBTUVfUk9PVF9XSU5ET1cgKGYpKTsKLSAg aGVpZ2h0ID0gci0+cGl4ZWxfaGVpZ2h0ICsgdy0+cGl4ZWxfaGVpZ2h0OworICBvbGRfaGVp Z2h0ID0gci0+cGl4ZWxfaGVpZ2h0ICsgdy0+cGl4ZWxfaGVpZ2h0OworICBkZWx0YSA9IFhJ TlQgKHctPm5ld19waXhlbCkgLSB3LT5waXhlbF9oZWlnaHQ7CiAgIGlmICh3aW5kb3dfcmVz aXplX2NoZWNrIChyLCBmYWxzZSkKICAgICAgICYmIFhJTlQgKHctPm5ld19waXhlbCkgPiAw Ci0gICAgICAmJiBoZWlnaHQgPT0gWElOVCAoci0+bmV3X3BpeGVsKSArIFhJTlQgKHctPm5l d19waXhlbCkpCisgICAgICAmJiBvbGRfaGVpZ2h0ID09IFhJTlQgKHItPm5ld19waXhlbCkg KyBYSU5UICh3LT5uZXdfcGl4ZWwpKQogICAgIHsKLSAgICAgIGJsb2NrX2lucHV0ICgpOwot ICAgICAgd2luZG93X3Jlc2l6ZV9hcHBseSAociwgZmFsc2UpOworICAgICAgZml4ZWRfbWlu aWJ1ZmZlcl93aW5kb3dfcmVzaXplX2FwcGx5ICh3LCBkZWx0YSk7CgotICAgICAgdy0+cGl4 ZWxfaGVpZ2h0ID0gWEZBU1RJTlQgKHctPm5ld19waXhlbCk7Ci0gICAgICB3LT50b3RhbF9s aW5lcyA9IHctPnBpeGVsX2hlaWdodCAvIEZSQU1FX0xJTkVfSEVJR0hUIChmKTsKLSAgICAg IHctPnBpeGVsX3RvcCA9IHItPnBpeGVsX3RvcCArIHItPnBpeGVsX2hlaWdodDsKLSAgICAg IHctPnRvcF9saW5lID0gci0+dG9wX2xpbmUgKyByLT50b3RhbF9saW5lczsKLQotICAgICAg ZnNldF9yZWRpc3BsYXkgKGYpOwotICAgICAgYWRqdXN0X2ZyYW1lX2dseXBocyAoZik7Ci0g ICAgICB1bmJsb2NrX2lucHV0ICgpOwogICAgICAgcmV0dXJuIFF0OwogICAgIH0KICAgZWxz ZQotICAgIGVycm9yICgiRmFpbGVkIHRvIHJlc2l6ZSBtaW5pYnVmZmVyIHdpbmRvdyIpOwor ICAgIGVycm9yICgiQ2Fubm90IHJlc2l6ZSBtaW5pYnVmZmVyIHdpbmRvdyIpOwogfQogDAog LyogTWFyayB3aW5kb3cgY3Vyc29ycyBvZmYgZm9yIGFsbCB3aW5kb3dzIGluIHRoZSB3aW5k b3cgdHJlZSByb290ZWQKQEAgLTU3MzAsNyArNjAzNCw3IEBAIFNJREUgdCAob3IgYHJpZ2h0 Jykgc3BlY2lmaWVzIHRoYXQgdGhlIG5ldyB3aW5kb3cgc2hhbGwgYmUgbG9jYXRlZCBvbgog ewogICBMaXNwX09iamVjdCB3aW5kb3c7CgotICBpZiAoTUlOSV9XSU5ET1dfUCAoWFdJTkRP VyAoc2VsZWN0ZWRfd2luZG93KSkKKyAgaWYgKE1JTklCVUZGRVJfV0lORE9XX1AgKFhXSU5E T1cgKHNlbGVjdGVkX3dpbmRvdykpCiAgICAgICAmJiAhTklMUCAoVm1pbmlidWZfc2Nyb2xs X3dpbmRvdykpCiAgICAgd2luZG93ID0gVm1pbmlidWZfc2Nyb2xsX3dpbmRvdzsKICAgLyog SWYgYnVmZmVyIGlzIHNwZWNpZmllZCBhbmQgbGl2ZSwgc2Nyb2xsIHRoYXQgYnVmZmVyLiAg Ki8KQEAgLTU4NDYsNyArNjE1MCw3IEBAIFNJREUgdCAob3IgYHJpZ2h0Jykgc3BlY2lmaWVz IHRoYXQgdGhlIG5ldyB3aW5kb3cgc2hhbGwgYmUgbG9jYXRlZCBvbgogICAodm9pZCkKIHsK ICAgaWYgKG1pbmlidWZfbGV2ZWwgPiAwCi0gICAgICAmJiBNSU5JX1dJTkRPV19QIChYV0lO RE9XIChzZWxlY3RlZF93aW5kb3cpKQorICAgICAgJiYgTUlOSUJVRkZFUl9XSU5ET1dfUCAo WFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KSkKICAgICAgICYmIFdJTkRPV19MSVZFX1AgKG1p bmlidWZfc2VsZWN0ZWRfd2luZG93KSkKICAgICByZXR1cm4gbWluaWJ1Zl9zZWxlY3RlZF93 aW5kb3c7CgpAQCAtNjc0MCw3ICs3MDQ0LDcgQEAgc3RydWN0IHNhdmVkX3dpbmRvdwogdm9p ZAogZGVsZXRlX2FsbF9jaGlsZF93aW5kb3dzIChMaXNwX09iamVjdCB3aW5kb3cpCiB7Ci0g IHJlZ2lzdGVyIHN0cnVjdCB3aW5kb3cgKnc7CisgIHN0cnVjdCB3aW5kb3cgKnc7CgogICB3 ID0gWFdJTkRPVyAod2luZG93KTsKCkBAIC03MTQ1LDYgKzc0NDksOCBAQCBWYWx1ZSBpcyBh IGNvbnMgb2YgdGhlIGZvcm0gKExFRlQtV0lEVEggLiBSSUdIVC1XSURUSCkuCiAgICAgICB3 LT5yaWdodF9mcmluZ2Vfd2lkdGggPSByaWdodDsKICAgICAgIHctPmZyaW5nZXNfb3V0c2lk ZV9tYXJnaW5zID0gb3V0c2lkZTsKCisgICAgICBTRVRfRlJBTUVfR0FSQkFHRUQgKFhGUkFN RSAoV0lORE9XX0ZSQU1FICh3KSkpOworCiAgICAgICByZXR1cm4gdzsKICAgICB9CiAgIGVs c2UKQEAgLTcyNjIsNiArNzU2OCw5IEBAIFZhbHVlIGlzIGEgbGlzdCBvZiB0aGUgZm9ybSAo TEVGVC1XSURUSCBSSUdIVC1XSURUSCBPVVRTSURFLU1BUkdJTlMpLiAgKi8pCiAgIHdzZXRf aG9yaXpvbnRhbF9zY3JvbGxfYmFyX3R5cGUgKHcsIFFuaWwpOwogI2VuZGlmCgorICBpZiAo Y2hhbmdlZCkKKyAgICBTRVRfRlJBTUVfR0FSQkFHRUQgKFhGUkFNRSAoV0lORE9XX0ZSQU1F ICh3KSkpOworCiAgIHJldHVybiBjaGFuZ2VkID8gdyA6IE5VTEw7CiB9CgpAQCAtNzUzNiw3 ICs3ODQ1LDcgQEAgVmFsdWUgaXMgYSBsaXN0IG9mIHRoZSBmb3JtIChXSURUSCBDT0xVTU5T IFZFUlRJQ0FMLVRZUEUgSEVJR0hUIExJTkVTCiAgIHN0cnVjdCBmcmFtZSAqZiA9IG1ha2Vf aW5pdGlhbF9mcmFtZSAoKTsKICAgWFNFVEZSQU1FIChzZWxlY3RlZF9mcmFtZSwgZik7CiAg IFZ0ZXJtaW5hbF9mcmFtZSA9IHNlbGVjdGVkX2ZyYW1lOwotICBtaW5pYnVmX3dpbmRvdyA9 IGYtPm1pbmlidWZmZXJfd2luZG93OworICBtaW5pYnVmX3dpbmRvdyA9IE1JTklCVUZGRVJf V0lORE9XIChmKTsKICAgc2VsZWN0ZWRfd2luZG93ID0gZi0+c2VsZWN0ZWRfd2luZG93Owog fQoKQEAgLTc1NjYsMTAgKzc4NzUsMTUgQEAgVmFsdWUgaXMgYSBsaXN0IG9mIHRoZSBmb3Jt IChXSURUSCBDT0xVTU5TIFZFUlRJQ0FMLVRZUEUgSEVJR0hUIExJTkVTCiAgIERFRlNZTSAo UXdpbmRvd19fcmVzaXplX3Jvb3Rfd2luZG93LCAid2luZG93LS1yZXNpemUtcm9vdC13aW5k b3ciKTsKICAgREVGU1lNIChRd2luZG93X19yZXNpemVfcm9vdF93aW5kb3dfdmVydGljYWxs eSwKIAkgICJ3aW5kb3ctLXJlc2l6ZS1yb290LXdpbmRvdy12ZXJ0aWNhbGx5Iik7CisgIERF RlNZTSAoUXdpbmRvd19fcmVzaXplX21pbmlfd2luZG93LCAid2luZG93LS1yZXNpemUtbWlu aS13aW5kb3ciKTsKKyAgREVGU1lNIChRd2luZG93X19yZXNpemVfbWluaWJ1ZmZlcl9mcmFt ZSwgIndpbmRvdy0tcmVzaXplLW1pbmlidWZmZXItZnJhbWUiKTsKKyAgREVGU1lNIChRdmVy dGljYWxseSwgInZlcnRpY2FsbHkiKTsKICAgREVGU1lNIChRd2luZG93X19zYW5pdGl6ZV93 aW5kb3dfc2l6ZXMsICJ3aW5kb3ctLXNhbml0aXplLXdpbmRvdy1zaXplcyIpOwogICBERUZT WU0gKFF3aW5kb3dfX3BpeGVsX3RvX3RvdGFsLCAid2luZG93LS1waXhlbC10by10b3RhbCIp OwogICBERUZTWU0gKFFzYWZlLCAic2FmZSIpOwogICBERUZTWU0gKFFkaXNwbGF5X2J1ZmZl ciwgImRpc3BsYXktYnVmZmVyIik7CisgIERFRlNZTSAoUWRpc3BsYXlfbWluaWJ1ZmZlciwg ImRpc3BsYXktbWluaWJ1ZmZlciIpOworICBERUZTWU0gKFFkaXNwbGF5X2VjaG8sICJkaXNw bGF5LWVjaG8iKTsKICAgREVGU1lNIChRcmVwbGFjZV9idWZmZXJfaW5fd2luZG93cywgInJl cGxhY2UtYnVmZmVyLWluLXdpbmRvd3MiKTsKICAgREVGU1lNIChRcmVjb3JkX3dpbmRvd19i dWZmZXIsICJyZWNvcmQtd2luZG93LWJ1ZmZlciIpOwogICBERUZTWU0gKFFnZXRfbXJ1X3dp bmRvdywgImdldC1tcnUtd2luZG93Iik7CkBAIC03NzcwLDEzICs4MDg0LDE2IEBAIHRoaXMg dmFsdWUgZm9yIHBhcmFtZXRlcnMgd2l0aG91dCByZWFkIHN5bnRheCAobGlrZSB3aW5kb3dz IG9yIGZyYW1lcykuCiAgIFZmYXN0X2J1dF9pbXByZWNpc2Vfc2Nyb2xsaW5nID0gZmFsc2U7 CgogICBkZWZzdWJyICgmU3NlbGVjdGVkX3dpbmRvdyk7Ci0gIGRlZnN1YnIgKCZTbWluaWJ1 ZmZlcl93aW5kb3cpOwotICBkZWZzdWJyICgmU3dpbmRvd19taW5pYnVmZmVyX3ApOwogICBk ZWZzdWJyICgmU3dpbmRvd3ApOwogICBkZWZzdWJyICgmU3dpbmRvd192YWxpZF9wKTsKICAg ZGVmc3ViciAoJlN3aW5kb3dfbGl2ZV9wKTsKICAgZGVmc3ViciAoJlN3aW5kb3dfZnJhbWUp OwogICBkZWZzdWJyICgmU2ZyYW1lX3Jvb3Rfd2luZG93KTsKKyAgZGVmc3ViciAoJlNtaW5p YnVmZmVyX3dpbmRvdyk7CisgIGRlZnN1YnIgKCZTZWNob193aW5kb3cpOworICBkZWZzdWJy ICgmU3dpbmRvd19taW5pYnVmZmVyX3ApOworICBkZWZzdWJyICgmU3dpbmRvd19lY2hvX3Ap OworICBkZWZzdWJyICgmU3dpbmRvd19taW5pX3ApOwogICBkZWZzdWJyICgmU2ZyYW1lX2Zp cnN0X3dpbmRvdyk7CiAgIGRlZnN1YnIgKCZTZnJhbWVfc2VsZWN0ZWRfd2luZG93KTsKICAg ZGVmc3ViciAoJlNzZXRfZnJhbWVfc2VsZWN0ZWRfd2luZG93KTsKQEAgLTc4NDAsNyArODE1 Nyw3IEBAIHRoaXMgdmFsdWUgZm9yIHBhcmFtZXRlcnMgd2l0aG91dCByZWFkIHN5bnRheCAo bGlrZSB3aW5kb3dzIG9yIGZyYW1lcykuCiAgIGRlZnN1YnIgKCZTZ2V0X2J1ZmZlcl93aW5k b3cpOwogICBkZWZzdWJyICgmU2RlbGV0ZV9vdGhlcl93aW5kb3dzX2ludGVybmFsKTsKICAg ZGVmc3ViciAoJlNkZWxldGVfd2luZG93X2ludGVybmFsKTsKLSAgZGVmc3ViciAoJlNyZXNp emVfbWluaV93aW5kb3dfaW50ZXJuYWwpOworICBkZWZzdWJyICgmU3Jlc2l6ZV9taW5pYnVm ZmVyX3dpbmRvd19pbnRlcm5hbCk7CiAgIGRlZnN1YnIgKCZTc2V0X3dpbmRvd19idWZmZXIp OwogICBkZWZzdWJyICgmU3J1bl93aW5kb3dfY29uZmlndXJhdGlvbl9jaGFuZ2VfaG9vayk7 CiAgIGRlZnN1YnIgKCZTcnVuX3dpbmRvd19zY3JvbGxfZnVuY3Rpb25zKTsKZGlmZiAtLWdp dCBhL3NyYy93aW5kb3cuaCBiL3NyYy93aW5kb3cuaAppbmRleCAwMTMwODNlLi40NDMzZjA5 IDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmgKKysrIGIvc3JjL3dpbmRvdy5oCkBAIC0yOCw3 ICsyOCw4IEBACiBMaXNwIGRhdGEgdHlwZSBpcyBjaGFuZ2VkIHRvIExpc3BfV2luZG93LiAg VGhleSBhcmUgZ2FyYmFnZQogY29sbGVjdGVkIGFsb25nIHdpdGggdGhlIHZlY3RvcnMuCgot QWxsIHdpbmRvd3MgaW4gdXNlIGFyZSBhcnJhbmdlZCBpbnRvIGEgdHJlZSwgd2l0aCBwb2lu dGVycyB1cCBhbmQgZG93bi4KK0FsbCB3aW5kb3dzIG9mIGEgZnJhbWUgYXJlIGFycmFuZ2Vk IGludG8gYSB0cmVlLCB3aXRoIHBvaW50ZXJzIHVwIGFuZAorZG93bi4KCiBXaW5kb3dzIHRo YXQgYXJlIGxlYXZlcyBvZiB0aGUgdHJlZSBhcmUgYWN0dWFsbHkgZGlzcGxheWVkCiBhbmQg c2hvdyB0aGUgY29udGVudHMgb2YgYnVmZmVycy4gIFdpbmRvd3MgdGhhdCBhcmUgbm90IGxl YXZlcwpAQCAtNjAsMTggKzYxLDE4IEBACiBvciBob3Jpem9udGFsIGNvbWJpbmF0aW9uIHdp bmRvd3MuICBUaGUgY2hpbGRyZW4gb2YgYSBob3Jpem9udGFsCiBjb21iaW5hdGlvbiB3aW5k b3cgbWF5IGJlIGxlYWYgd2luZG93cyBvciB2ZXJ0aWNhbCBjb21iaW5hdGlvbiB3aW5kb3dz LgoKLUF0IHRoZSB0b3Agb2YgdGhlIHRyZWUgYXJlIHR3byB3aW5kb3dzIHdoaWNoIGhhdmUg bmlsIGFzIHBhcmVudC4KLVRoZSBzZWNvbmQgb2YgdGhlc2UgaXMgbWluaWJ1Zl93aW5kb3cu ICBUaGUgZmlyc3Qgb25lIG1hbmFnZXMgYWxsCi10aGUgZnJhbWUgYXJlYSB0aGF0IGlzIG5v dCBtaW5pYnVmZmVyLCBhbmQgaXMgY2FsbGVkIHRoZSByb290IHdpbmRvdy4KLURpZmZlcmVu dCB3aW5kb3dzIGNhbiBiZSB0aGUgcm9vdCBhdCBkaWZmZXJlbnQgdGltZXM7Ci1pbml0aWFs bHkgdGhlIHJvb3Qgd2luZG93IGlzIGEgbGVhZiB3aW5kb3csIGJ1dCBpZiBtb3JlIHdpbmRv d3MKLWFyZSBjcmVhdGVkIHRoZW4gdGhhdCBsZWFmIHdpbmRvdyBjZWFzZXMgdG8gYmUgcm9v dCBhbmQgYSBuZXdseQotbWFkZSBjb21iaW5hdGlvbiB3aW5kb3cgYmVjb21lcyByb290IGlu c3RlYWQuCi0KLUluIGFueSBjYXNlLCBvbiBzY3JlZW5zIHdoaWNoIGhhdmUgYW4gb3JkaW5h cnkgd2luZG93IGFuZCBhCi1taW5pYnVmZmVyLCBwcmV2IG9mIHRoZSBtaW5pYnVmIHdpbmRv dyBpcyB0aGUgcm9vdCB3aW5kb3cgYW5kIG5leHQgb2YKLXRoZSByb290IHdpbmRvdyBpcyB0 aGUgbWluaWJ1ZiB3aW5kb3cuICBPbiBtaW5pYnVmZmVybGVzcyBzY3JlZW5zIG9yCi1taW5p YnVmZmVyLW9ubHkgc2NyZWVucywgdGhlIHJvb3Qgd2luZG93IGFuZCB0aGUgbWluaWJ1ZmZl ciB3aW5kb3cgYXJlCitGb3IgYSBmcmFtZSB3aXRoIGl0cyBvd24gbWluaWJ1ZmZlciB3aW5k b3csIHRoZXJlIGFyZSB0d28gd2luZG93cword2hpY2ggaGF2ZSBuaWwgYXMgcGFyZW50LiAg VGhlIHNlY29uZCBvZiB0aGVzZSBpcyB0aGUgbWluaWJ1ZmZlcgord2luZG93LiAgVGhlIGZp cnN0IG9uZSBtYW5hZ2VzIGFsbCB0aGUgZnJhbWUgYXJlYSB0aGF0IGlzIG5vdAorbWluaWJ1 ZmZlciBhbmQgaXMgY2FsbGVkIHRoZSByb290IHdpbmRvdy4gIERpZmZlcmVudCB3aW5kb3dz IGNhbiBiZQordGhlIHJvb3QgYXQgZGlmZmVyZW50IHRpbWVzOyBpbml0aWFsbHkgdGhlIHJv b3Qgd2luZG93IGlzIGEgbGVhZgord2luZG93LCBidXQgaWYgbW9yZSB3aW5kb3dzIGFyZSBj cmVhdGVkIHRoZW4gdGhhdCBsZWFmIHdpbmRvdyBjZWFzZXMKK3RvIGJlIHJvb3QgYW5kIGEg bmV3bHkgbWFkZSBjb21iaW5hdGlvbiB3aW5kb3cgYmVjb21lcyByb290IGluc3RlYWQuCisK K0luIGFueSBjYXNlLCBvbiBmcmFtZXMgd2hpY2ggaGF2ZSBhbiBvcmRpbmFyeSB3aW5kb3cg YW5kIGEgbWluaWJ1ZmZlcgord2luZG93LCBwcmV2IG9mIHRoZSBtaW5pYnVmZmVyIHdpbmRv dyBpcyB0aGUgcm9vdCB3aW5kb3cgYW5kIG5leHQgb2YKK3RoZSByb290IHdpbmRvdyBpcyB0 aGUgbWluaWJ1ZmZlciB3aW5kb3cuICBPbiBtaW5pYnVmZmVyLWxlc3Mgb3IKK21pbmlidWZm ZXItb25seSBmcmFtZXMsIHRoZSByb290IHdpbmRvdyBhbmQgdGhlIG1pbmlidWZmZXIgd2lu ZG93IGFyZQogb25lIGFuZCB0aGUgc2FtZSwgc28gaXRzIHByZXYgYW5kIG5leHQgbWVtYmVy cyBhcmUgbmlsLgoKIEEgZGVhZCB3aW5kb3cgaGFzIGl0cyBjb250ZW50cyBmaWVsZCBzZXQg dG8gbmlsLiAgKi8KQEAgLTMyOSw3ICszMzAsMTAgQEAgc3RydWN0IHdpbmRvdwogICAgIGlu dCB3aW5kb3dfZW5kX3Zwb3M7CgogICAgIC8qIFRydWUgaWYgdGhpcyB3aW5kb3cgaXMgYSBt aW5pYnVmZmVyIHdpbmRvdy4gICovCi0gICAgYm9vbF9iZiBtaW5pIDogMTsKKyAgICBib29s X2JmIG1pbmlidWZmZXIgOiAxOworCisgICAgLyogVHJ1ZSBpZiB0aGlzIHdpbmRvdyBpcyBh biBlY2hvIHdpbmRvdy4gICovCisgICAgYm9vbF9iZiBlY2hvIDogMTsKCiAgICAgLyogTWVh bmluZ2Z1bCBmb3IgaW50ZXJuYWwgd2luZG93cyBvbmx5OiB0cnVlIGlmIHRoaXMgd2luZG93 IGlzIGEKICAgICAgICBob3Jpem9udGFsIGNvbWJpbmF0aW9uLCBmYWxzZSBpZiBpdCBpcyBh IHZlcnRpY2FsCkBAIC00OTAsMTYgKzQ5NCwxNCBAQCBzdHJ1Y3Qgd2luZG93CiB9CgogLyog VHJ1ZSBpZiBXIGlzIGEgbWluaWJ1ZmZlciB3aW5kb3cuICAqLwotI2RlZmluZSBNSU5JX1dJ TkRPV19QKFcpICgoVyktPm1pbmkpCisjZGVmaW5lIE1JTklCVUZGRVJfV0lORE9XX1AoVykg KChXKS0+bWluaWJ1ZmZlcikKCi0vKiBUcnVlIGlmIFcgaXMgYSBtaW5pYnVmZmVyIHdpbmRv dyBvbiBhIGZyYW1lIHRoYXQgY29udGFpbnMgYXQgbGVhc3QKLSAgIG9uZSBvdGhlciB3aW5k b3cuICAqLwotI2RlZmluZSBNSU5JX05PTl9PTkxZX1dJTkRPV19QKFcpCSBcCi0gIChNSU5J X1dJTkRPV19QIChXKSAmJiAhTklMUCAoKFcpLT5wcmV2KSkKKy8qIFRydWUgaWYgVyBpcyBh biBlY2hvIHdpbmRvdy4gICovCisjZGVmaW5lIEVDSE9fV0lORE9XX1AoVykgKChXKS0+ZWNo bykKCi0vKiBUcnVlIGlmIFcgaXMgYSBtaW5pYnVmZmVyIHdpbmRvdyB0aGF0IGlzIGFsb25l IG9uIGl0cyBmcmFtZS4gICovCi0jZGVmaW5lIE1JTklfT05MWV9XSU5ET1dfUChXKQkJIFwK LSAgKE1JTklfV0lORE9XX1AgKFcpICYmIE5JTFAgKChXKS0+cHJldikpCisvKiBUcnVlIGlm IFcgaXMgYSBtaW5pIHdpbmRvdyAtIGEgbWluaWJ1ZmZlciBvciBlY2hvIHdpbmRvdy4gICov CisjZGVmaW5lIE1JTklfV0lORE9XX1AoVykJCQkJXAorICAoTUlOSUJVRkZFUl9XSU5ET1df UCAoVykgfHwgRUNIT19XSU5ET1dfUCAoVykpCgogLyogR2VuZXJhbCB3aW5kb3cgbGF5b3V0 OgoKQEAgLTUyOSwyMSArNTMxLDI0IEBAIHN0cnVjdCB3aW5kb3cKIC8qIEEgaGFuZHkgbWFj cm8uICAqLwoKIC8qIE5vbi1uaWwgaWYgd2luZG93IFcgaXMgbGVhZiB3aW5kb3cgKGhhcyBh IGJ1ZmZlcikuICAqLwotI2RlZmluZSBXSU5ET1dfTEVBRl9QKFcpIFwKKyNkZWZpbmUgV0lO RE9XX0xFQUZfUChXKQkJCVwKICAgKEJVRkZFUlAgKChXKS0+Y29udGVudHMpKQoKIC8qIE5v bi1uaWwgaWYgd2luZG93IFcgaXMgaW50ZXJuYWwgKGlzIGEgcGFyZW50IHdpbmRvdykuICAq LwotI2RlZmluZSBXSU5ET1dfSU5URVJOQUxfUChXKSBcCisjZGVmaW5lIFdJTkRPV19JTlRF Uk5BTF9QKFcpCQkJXAogICAoV0lORE9XUCAoKFcpLT5jb250ZW50cykpCgogLyogVHJ1ZSBp ZiB3aW5kb3cgVyBpcyBhIGhvcml6b250YWwgY29tYmluYXRpb24gb2Ygd2luZG93cy4gICov Ci0jZGVmaW5lIFdJTkRPV19IT1JJWk9OVEFMX0NPTUJJTkFUSU9OX1AoVykgXAorI2RlZmlu ZSBXSU5ET1dfSE9SSVpPTlRBTF9DT01CSU5BVElPTl9QKFcpCVwKICAgKFdJTkRPV19JTlRF Uk5BTF9QIChXKSAmJiAoVyktPmhvcml6b250YWwpCgogLyogVHJ1ZSBpZiB3aW5kb3cgVyBp cyBhIHZlcnRpY2FsIGNvbWJpbmF0aW9uIG9mIHdpbmRvd3MuICAqLwotI2RlZmluZSBXSU5E T1dfVkVSVElDQUxfQ09NQklOQVRJT05fUChXKSBcCisjZGVmaW5lIFdJTkRPV19WRVJUSUNB TF9DT01CSU5BVElPTl9QKFcpCVwKICAgKFdJTkRPV19JTlRFUk5BTF9QIChXKSAmJiAhKFcp LT5ob3Jpem9udGFsKQoKKy8qIFdpbmRvdyBXJ3MgZnJhbWUuICAqLworI2RlZmluZSBXSU5E T1dfRlJBTUUoVykgKChXKS0+ZnJhbWUpCisKIC8qIFdpbmRvdyBXJ3MgWEZSQU1FLiAgKi8K ICNkZWZpbmUgV0lORE9XX1hGUkFNRShXKSAoWEZSQU1FIChXSU5ET1dfRlJBTUUgKChXKSkp KQoKQEAgLTU1NCwxNCArNTU5LDE0IEBAIHN0cnVjdCB3aW5kb3cKICNkZWZpbmUgV0lORE9X X0JVRkZFUihXKQkJCVwKICAgKFdJTkRPV19MRUFGX1AoVykJCQkJXAogICAgPyAoVyktPmNv bnRlbnRzCQkJCVwKLSAgIDogUW5pbCkJCQkJCVwKKyAgIDogUW5pbCkKCiAvKiBSZXR1cm4g dGhlIGNhbm9uaWNhbCBjb2x1bW4gd2lkdGggb2YgdGhlIGZyYW1lIG9mIHdpbmRvdyBXLiAg Ki8KLSNkZWZpbmUgV0lORE9XX0ZSQU1FX0NPTFVNTl9XSURUSChXKSBcCisjZGVmaW5lIFdJ TkRPV19GUkFNRV9DT0xVTU5fV0lEVEgoVykJCVwKICAgKEZSQU1FX0NPTFVNTl9XSURUSCAo V0lORE9XX1hGUkFNRSAoKFcpKSkpCgogLyogUmV0dXJuIHRoZSBjYW5vbmljYWwgbGluZSBo ZWlnaHQgb2YgdGhlIGZyYW1lIG9mIHdpbmRvdyBXLiAgKi8KLSNkZWZpbmUgV0lORE9XX0ZS QU1FX0xJTkVfSEVJR0hUKFcpIFwKKyNkZWZpbmUgV0lORE9XX0ZSQU1FX0xJTkVfSEVJR0hU KFcpCQlcCiAgIChGUkFNRV9MSU5FX0hFSUdIVCAoV0lORE9XX1hGUkFNRSAoKFcpKSkpCgog LyogUmV0dXJuIHRoZSBwaXhlbCB3aWR0aCBvZiB3aW5kb3cgVy4gIFRoaXMgaW5jbHVkZXMg ZGl2aWRlcnMsIHNjcm9sbApAQCAtNTg4LDU1ICs1OTMsNjIgQEAgc3RydWN0IHdpbmRvdwog ICAgbWlnaHQgY3Jhc2ggRW1hY3MuICAqLwogI2RlZmluZSBNSU5fU0FGRV9XSU5ET1dfV0lE VEggKDIpCgotI2RlZmluZSBNSU5fU0FGRV9XSU5ET1dfUElYRUxfV0lEVEgoVykgXAorI2Rl ZmluZSBNSU5fU0FGRV9XSU5ET1dfUElYRUxfV0lEVEgoVykJCVwKICAgKDIgKiBXSU5ET1df RlJBTUVfQ09MVU1OX1dJRFRIIChXKSkKCiAjZGVmaW5lIE1JTl9TQUZFX1dJTkRPV19IRUlH SFQgKDEpCgotI2RlZmluZSBNSU5fU0FGRV9XSU5ET1dfUElYRUxfSEVJR0hUKFcpIFwKKyNk ZWZpbmUgTUlOX1NBRkVfV0lORE9XX1BJWEVMX0hFSUdIVChXKQkJXAogICAoV0lORE9XX0ZS QU1FX0xJTkVfSEVJR0hUIChXKSkKCiAvKiBUcnVlIGlmIHdpbmRvdyBXIGhhcyBubyBvdGhl ciB3aW5kb3dzIHRvIGl0cyBsZWZ0IG9uIGl0cyBmcmFtZS4gICovCiAjZGVmaW5lIFdJTkRP V19MRUZUTU9TVF9QKFcpCQkJXAogICAoV0lORE9XX0xFRlRfUElYRUxfRURHRSAoVykgPT0g MCkKCi0vKiBUcnVlIGlmIHdpbmRvdyBXIGhhcyBubyBvdGhlciB3aW5kb3dzIGFib3ZlIGl0 IG9uIGl0cyBmcmFtZS4gICovCi0jZGVmaW5lIFdJTkRPV19UT1BNT1NUX1AoVykJCQlcCi0g IChXSU5ET1dfVE9QX1BJWEVMX0VER0UgKFcpID09IDApCisvKiBUcnVlIGlmIHdpbmRvdyBX IGhhcyBubyBvdGhlciB3aW5kb3dzIGFib3ZlIGl0IG9uIGl0cyBmcmFtZSAoYQorICAgbWlu aWJ1ZmZlciB3aW5kb3cgb24gdGhlIHRvcCBvZiBXJ3MgZnJhbWUgZG9lcyBub3QgY291bnQg aW4gdGhpcworICAgcmVnYXJkKS4gICovCisjZGVmaW5lIFdJTkRPV19UT1BNT1NUX1AoVykJ CQkJCVwKKyAgKFdJTkRPV19UT1BfUElYRUxfRURHRSAoVykJCQkJCVwKKyAgIDw9IChXSU5E T1dfVE9QX1BJWEVMX0VER0UJCQkJCVwKKyAgICAgICAoWFdJTkRPVyAoRlJBTUVfUk9PVF9X SU5ET1cgKFdJTkRPV19YRlJBTUUgKFcpKSkpKSkKCiAvKiBUcnVlIGlmIHdpbmRvdyBXIGhh cyBubyBvdGhlciB3aW5kb3dzIHRvIGl0cyByaWdodCBvbiBpdHMgZnJhbWUuICAqLwogI2Rl ZmluZSBXSU5ET1dfUklHSFRNT1NUX1AoVykJCQkJCVwKICAgKFdJTkRPV19SSUdIVF9QSVhF TF9FREdFIChXKQkJCQkJXAogICAgPT0gKFdJTkRPV19SSUdIVF9QSVhFTF9FREdFCQkJCQlc Ci0gICAgICAgKFhXSU5ET1cgKEZSQU1FX1JPT1RfV0lORE9XIChXSU5ET1dfWEZSQU1FIChX KSkpKSkpCVwKKyAgICAgICAoWFdJTkRPVyAoRlJBTUVfUk9PVF9XSU5ET1cgKFdJTkRPV19Y RlJBTUUgKFcpKSkpKSkKCiAvKiBUcnVlIGlmIHdpbmRvdyBXIGhhcyBubyBvdGhlciB3aW5k b3dzIGJlbG93IGl0IG9uIGl0cyBmcmFtZSAodGhlCiAgICBtaW5pYnVmZmVyIHdpbmRvdyBp cyBub3QgY291bnRlZCBpbiB0aGlzIHJlc3BlY3QgdW5sZXNzIFcgaXRzZWxmIGlzIGEKICAg IG1pbmlidWZmZXIgd2luZG93KS4gICovCiAjZGVmaW5lIFdJTkRPV19CT1RUT01NT1NUX1Ao VykJCQkJCVwKICAgKFdJTkRPV19CT1RUT01fUElYRUxfRURHRSAoVykJCQkJCVwKLSAgID09 IChXSU5ET1dfQk9UVE9NX1BJWEVMX0VER0UJCQkJCVwKLSAgICAgICAoWFdJTkRPVyAoRlJB TUVfUk9PVF9XSU5ET1cgKFdJTkRPV19YRlJBTUUgKFcpKSkpKSkJXAorICAgPj0gKFdJTkRP V19CT1RUT01fUElYRUxfRURHRQkJCQkJXAorICAgICAgIChYV0lORE9XIChGUkFNRV9ST09U X1dJTkRPVyAoV0lORE9XX1hGUkFNRSAoVykpKSkpKQoKIC8qIFRydWUgaWYgd2luZG93IFcg dGFrZXMgdXAgdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGZyYW1lLiAgKi8KICNkZWZpbmUgV0lO RE9XX0ZVTExfV0lEVEhfUChXKQkJCQkJXAogICAoV0lORE9XX1BJWEVMX1dJRFRIIChXKQkJ CQkJXAogICAgPT0gKFdJTkRPV19QSVhFTF9XSURUSAkJCQkJXAotICAgICAgIChYV0lORE9X IChGUkFNRV9ST09UX1dJTkRPVyAoV0lORE9XX1hGUkFNRSAoVykpKSkpKQlcCisgICAgICAg KFhXSU5ET1cgKEZSQU1FX1JPT1RfV0lORE9XIChXSU5ET1dfWEZSQU1FIChXKSkpKSkpCgog LyogV2lkdGggb2YgcmlnaHQgZGl2aWRlciBvZiB3aW5kb3cgVy4gICovCiAjZGVmaW5lIFdJ TkRPV19SSUdIVF9ESVZJREVSX1dJRFRIKFcpCQkJCVwKLSAgKFdJTkRPV19SSUdIVE1PU1Rf UCAoVykJCQkJCVwKLSAgID8gMCA6IEZSQU1FX1JJR0hUX0RJVklERVJfV0lEVEggKFdJTkRP V19YRlJBTUUgKFcpKSkKKyAgKChXSU5ET1dfUklHSFRNT1NUX1AgKFcpIHx8IChXKS0+cHNl dWRvX3dpbmRvd19wKQkJXAorICAgPyAwCQkJCQkJCQlcCisgICA6IEZSQU1FX1JJR0hUX0RJ VklERVJfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcpKSkKCiAvKiBXaWR0aCBvZiBib3R0b20g ZGl2aWRlciBvZiB3aW5kb3cgVy4gICovCiAjZGVmaW5lIFdJTkRPV19CT1RUT01fRElWSURF Ul9XSURUSChXKQkJCQkJXAotICAoKChXSU5ET1dfQk9UVE9NTU9TVF9QIChXKQkJCQkJCVwK LSAgICAgJiYgTklMUCAoKFhXSU5ET1cgKEZSQU1FX1JPT1RfV0lORE9XCQkJCVwKLQkJCShX SU5ET1dfWEZSQU1FIChXKSkpKS0+bmV4dCkpCQkJXAotICAgIHx8IEVRICgoVyktPnByZXYs IEZSQU1FX1JPT1RfV0lORE9XIChXSU5ET1dfWEZSQU1FIChXKSkpCQlcCi0gICAgfHwgKFcp LT5wc2V1ZG9fd2luZG93X3ApCQkJCQkJXAotICAgPyAwIDogRlJBTUVfQk9UVE9NX0RJVklE RVJfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcpKSkKKyAgKCgoIU1JTklCVUZGRVJfV0lORE9X X1AgKFcpCQkJCQkJXAorICAgICB8fCBNSU5JQlVGRkVSX1dJTkRPV19UT1BfUCAoV0lORE9X X1hGUkFNRSAoVykpCQkJXAorICAgICB8fCBNSU5JQlVGRkVSX1dJTkRPV19MT09TRV9QIChX SU5ET1dfWEZSQU1FIChXKSkpCQkJXAorICAgICYmICEoKFcpLT5wc2V1ZG9fd2luZG93X3Ap CQkJCQkJXAorICAgICYmICghV0lORE9XX0JPVFRPTU1PU1RfUCAoVykJCQkJCVwKKwl8fCBN SU5JQlVGRkVSX1dJTkRPV19CT1RUT01fUCAoV0lORE9XX1hGUkFNRSAoVykpKSkJCVwKKyAg ID8gRlJBTUVfQk9UVE9NX0RJVklERVJfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcpKQkJCVwK KyAgIDogMCkKCiAvKiBSZXR1cm4gdGhlIGNhbm9uaWNhbCBmcmFtZSBjb2x1bW4gYXQgd2hp Y2ggd2luZG93IFcgc3RhcnRzLgogICAgVGhpcyBpbmNsdWRlcyBhIGxlZnQtaGFuZCBzY3Jv bGwgYmFyLCBpZiBhbnkuICAqLwpAQCAtNjQ0LDcgKzY1Niw3IEBAIHN0cnVjdCB3aW5kb3cK CiAvKiBSZXR1cm4gdGhlIGNhbm9uaWNhbCBmcmFtZSBjb2x1bW4gYmVmb3JlIHdoaWNoIHdp bmRvdyBXIGVuZHMuCiAgICBUaGlzIGluY2x1ZGVzIGEgcmlnaHQtaGFuZCBzY3JvbGwgYmFy LCBpZiBhbnkuICAqLwotI2RlZmluZSBXSU5ET1dfUklHSFRfRURHRV9DT0woVykgXAorI2Rl ZmluZSBXSU5ET1dfUklHSFRfRURHRV9DT0woVykJCQlcCiAgIChXSU5ET1dfTEVGVF9FREdF X0NPTCAoVykgKyBXSU5ET1dfVE9UQUxfQ09MUyAoVykpCgogLyogUmV0dXJuIHRoZSBjYW5v bmljYWwgZnJhbWUgbGluZSBhdCB3aGljaCB3aW5kb3cgVyBzdGFydHMuCkBAIC02NTMsNyAr NjY1LDcgQEAgc3RydWN0IHdpbmRvdwoKIC8qIFJldHVybiB0aGUgY2Fub25pY2FsIGZyYW1l IGxpbmUgYmVmb3JlIHdoaWNoIHdpbmRvdyBXIGVuZHMuCiAgICBUaGlzIGluY2x1ZGVzIGEg bW9kZSBsaW5lLCBpZiBhbnkuICAqLwotI2RlZmluZSBXSU5ET1dfQk9UVE9NX0VER0VfTElO RShXKSBcCisjZGVmaW5lIFdJTkRPV19CT1RUT01fRURHRV9MSU5FKFcpCQkJXAogICAoV0lO RE9XX1RPUF9FREdFX0xJTkUgKFcpICsgV0lORE9XX1RPVEFMX0xJTkVTIChXKSkKCiAvKiBS ZXR1cm4gdGhlIGxlZnQgcGl4ZWwgZWRnZSBhdCB3aGljaCB3aW5kb3cgVyBzdGFydHMuCkBA IC02NjIsNyArNjc0LDcgQEAgc3RydWN0IHdpbmRvdwoKIC8qIFJldHVybiB0aGUgcmlnaHQg cGl4ZWwgZWRnZSBiZWZvcmUgd2hpY2ggd2luZG93IFcgZW5kcy4KICAgIFRoaXMgaW5jbHVk ZXMgYSByaWdodC1oYW5kIHNjcm9sbCBiYXIsIGlmIGFueS4gICovCi0jZGVmaW5lIFdJTkRP V19SSUdIVF9QSVhFTF9FREdFKFcpIFwKKyNkZWZpbmUgV0lORE9XX1JJR0hUX1BJWEVMX0VE R0UoVykJCQlcCiAgIChXSU5ET1dfTEVGVF9QSVhFTF9FREdFIChXKSArIFdJTkRPV19QSVhF TF9XSURUSCAoVykpCgogLyogUmV0dXJuIHRoZSB0b3AgcGl4ZWwgZWRnZSBhdCB3aGljaCB3 aW5kb3cgVyBzdGFydHMuCkBAIC02NzEsMjUgKzY4MywyNSBAQCBzdHJ1Y3Qgd2luZG93Cgog LyogUmV0dXJuIHRoZSBib3R0b20gcGl4ZWwgZWRnZSBiZWZvcmUgd2hpY2ggd2luZG93IFcg ZW5kcy4KICAgIFRoaXMgaW5jbHVkZXMgYSBtb2RlIGxpbmUsIGlmIGFueS4gICovCi0jZGVm aW5lIFdJTkRPV19CT1RUT01fUElYRUxfRURHRShXKSBcCisjZGVmaW5lIFdJTkRPV19CT1RU T01fUElYRUxfRURHRShXKQkJCVwKICAgKFdJTkRPV19UT1BfUElYRUxfRURHRSAoVykgKyBX SU5ET1dfUElYRUxfSEVJR0hUIChXKSkKCiAvKiBSZXR1cm4gdGhlIGZyYW1lIHgtcG9zaXRp b24gYXQgd2hpY2ggd2luZG93IFcgc3RhcnRzLgogICAgVGhpcyBpbmNsdWRlcyBhIGxlZnQt aGFuZCBzY3JvbGwgYmFyLCBpZiBhbnkuICAqLwotI2RlZmluZSBXSU5ET1dfTEVGVF9FREdF X1goVykgXAorI2RlZmluZSBXSU5ET1dfTEVGVF9FREdFX1goVykJCQkgICBcCiAgIChGUkFN RV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcpKSBcCiAgICArIFdJ TkRPV19MRUZUX1BJWEVMX0VER0UgKFcpKQoKIC8qIFJldHVybiB0aGUgZnJhbWUgeC0gcG9z aXRpb24gYmVmb3JlIHdoaWNoIHdpbmRvdyBXIGVuZHMuCiAgICBUaGlzIGluY2x1ZGVzIGEg cmlnaHQtaGFuZCBzY3JvbGwgYmFyLCBpZiBhbnkuICAqLwotI2RlZmluZSBXSU5ET1dfUklH SFRfRURHRV9YKFcpIFwKKyNkZWZpbmUgV0lORE9XX1JJR0hUX0VER0VfWChXKQkJCSAgIFwK ICAgKEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpIFwK ICAgICsgV0lORE9XX1JJR0hUX1BJWEVMX0VER0UgKFcpKQoKIC8qIFRydWUgaWYgVyBpcyBh IG1lbnUgYmFyIHdpbmRvdy4gICovCiAjaWYgZGVmaW5lZCAoSEFWRV9YX1dJTkRPV1MpICYm ICEgZGVmaW5lZCAoVVNFX1hfVE9PTEtJVCkgJiYgISBkZWZpbmVkIChVU0VfR1RLKQotI2Rl ZmluZSBXSU5ET1dfTUVOVV9CQVJfUChXKSBcCi0gIChXSU5ET1dQIChXSU5ET1dfWEZSQU1F IChXKS0+bWVudV9iYXJfd2luZG93KSBcCisjZGVmaW5lIFdJTkRPV19NRU5VX0JBUl9QKFcp CQkJCQlcCisgIChXSU5ET1dQIChXSU5ET1dfWEZSQU1FIChXKS0+bWVudV9iYXJfd2luZG93 KQkJCVwKICAgICYmIChXKSA9PSBYV0lORE9XIChXSU5ET1dfWEZSQU1FIChXKS0+bWVudV9i YXJfd2luZG93KSkKICNlbHNlCiAvKiBObyBtZW51IGJhciB3aW5kb3dzIGlmIFggdG9vbGtp dCBpcyBpbiB1c2UuICAqLwpAQCAtNjk4LDE2ICs3MTAsMTYgQEAgc3RydWN0IHdpbmRvdwoK IC8qIFRydWUgaWYgVyBpcyBhIHRvb2wgYmFyIHdpbmRvdy4gICovCiAjaWYgZGVmaW5lZCAo SEFWRV9XSU5ET1dfU1lTVEVNKSAmJiAhIGRlZmluZWQgKFVTRV9HVEspICYmICEgZGVmaW5l ZCAoSEFWRV9OUykKLSNkZWZpbmUgV0lORE9XX1RPT0xfQkFSX1AoVykgXAotICAoV0lORE9X UCAoV0lORE9XX1hGUkFNRSAoVyktPnRvb2xfYmFyX3dpbmRvdykgXAorI2RlZmluZSBXSU5E T1dfVE9PTF9CQVJfUChXKQkJCQkJXAorICAoV0lORE9XUCAoV0lORE9XX1hGUkFNRSAoVykt PnRvb2xfYmFyX3dpbmRvdykJCQlcCiAgICAmJiAoVykgPT0gWFdJTkRPVyAoV0lORE9XX1hG UkFNRSAoVyktPnRvb2xfYmFyX3dpbmRvdykpCiAjZWxzZQogI2RlZmluZSBXSU5ET1dfVE9P TF9CQVJfUChXKSBmYWxzZQogI2VuZGlmCgogLyogUmV0dXJuIHRoZSBmcmFtZSB5LXBvc2l0 aW9uIGF0IHdoaWNoIHdpbmRvdyBXIHN0YXJ0cy4gICovCi0jZGVmaW5lIFdJTkRPV19UT1Bf RURHRV9ZKFcpIFwKLSAgKCgoV0lORE9XX01FTlVfQkFSX1AgKFcpIHx8IFdJTkRPV19UT09M X0JBUl9QIChXKSkgXAorI2RlZmluZSBXSU5ET1dfVE9QX0VER0VfWShXKQkJCQkgICBcCisg ICgoKFdJTkRPV19NRU5VX0JBUl9QIChXKSB8fCBXSU5ET1dfVE9PTF9CQVJfUCAoVykpCSAg IFwKICAgICA/IDAgOiBGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKFdJTkRPV19YRlJB TUUgKFcpKSkgXAogICAgKyBXSU5ET1dfVE9QX1BJWEVMX0VER0UgKFcpKQoKQEAgLTc1OSw3 ICs3NzEsNyBAQCBzdHJ1Y3Qgd2luZG93CiAjZGVmaW5lIFdJTkRPV19MRUZUX01BUkdJTl9X SURUSChXKQkJCVwKICAgKFctPmxlZnRfbWFyZ2luX2NvbHMgKiBXSU5ET1dfRlJBTUVfQ09M VU1OX1dJRFRIIChXKSkKCi0jZGVmaW5lIFdJTkRPV19SSUdIVF9NQVJHSU5fV0lEVEgoVykJ CQkJXAorI2RlZmluZSBXSU5ET1dfUklHSFRfTUFSR0lOX1dJRFRIKFcpCQkJXAogICAoVy0+ cmlnaHRfbWFyZ2luX2NvbHMgKiBXSU5ET1dfRlJBTUVfQ09MVU1OX1dJRFRIIChXKSkKCiAj ZGVmaW5lIFdJTkRPV19NQVJHSU5TX1dJRFRIKFcpCQkJXApAQCAtNzc3LDcgKzc4OSw3IEBA IHN0cnVjdCB3aW5kb3cKICAgID8gVy0+cmlnaHRfZnJpbmdlX3dpZHRoCQkJCVwKICAgIDog RlJBTUVfUklHSFRfRlJJTkdFX1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkpCgotI2RlZmlu ZSBXSU5ET1dfRlJJTkdFU19XSURUSChXKQkJXAorI2RlZmluZSBXSU5ET1dfRlJJTkdFU19X SURUSChXKQkJCQkJCVwKICAgKFdJTkRPV19MRUZUX0ZSSU5HRV9XSURUSCAoVykgKyBXSU5E T1dfUklHSFRfRlJJTkdFX1dJRFRIIChXKSkKCiAvKiBBcmUgZnJpbmdlcyBvdXRzaWRlIGRp c3BsYXkgbWFyZ2lucyBpbiB3aW5kb3cgVy4gICovCkBAIC04MDcsNyArODE5LDcgQEAgc3Ry dWN0IHdpbmRvdwogICAoV0lORE9XX0hBU19WRVJUSUNBTF9TQ1JPTExfQkFSX09OX0xFRlQg KFcpCQlcCiAgICB8fCBXSU5ET1dfSEFTX1ZFUlRJQ0FMX1NDUk9MTF9CQVJfT05fUklHSFQg KFcpKQoKLSNpZiAoZGVmaW5lZCAoSEFWRV9XSU5ET1dfU1lTVEVNKQkJCQkJXAorI2lmIChk ZWZpbmVkIChIQVZFX1dJTkRPV19TWVNURU0pCQlcCiAgICAgICYmICgoZGVmaW5lZCAoVVNF X1RPT0xLSVRfU0NST0xMX0JBUlMpKQlcCiAJIHx8IGRlZmluZWQgKEhBVkVfTlRHVUkpKSkK ICMgZGVmaW5lIFVTRV9IT1JJWk9OVEFMX1NDUk9MTF9CQVJTIHRydWUKQEAgLTgxOSw3ICs4 MzEsNyBAQCBzdHJ1Y3Qgd2luZG93CiAgICBXLiAgSG9yaXpvbnRhbCBzY3JvbGxiYXJzIGV4 aXN0IGZvciB0b29sa2l0IHZlcnNpb25zIG9ubHkuICAqLwogI2lmIFVTRV9IT1JJWk9OVEFM X1NDUk9MTF9CQVJTCiAjZGVmaW5lIFdJTkRPV19IQVNfSE9SSVpPTlRBTF9TQ1JPTExfQkFS KFcpCQkJXAotICAoKFdJTkRPV19QU0VVRE9fUCAoVykgfHwgTUlOSV9OT05fT05MWV9XSU5E T1dfUCAoVykpCQlcCisgICgoV0lORE9XX1BTRVVET19QIChXKSB8fCBNSU5JX1dJTkRPV19Q IChXKSkJCQlcCiAgICA/IGZhbHNlCQkJCQkJCVwKICAgIDogRVEgKFctPmhvcml6b250YWxf c2Nyb2xsX2Jhcl90eXBlLCBRdCkJCQlcCiAgICA/IEZSQU1FX0hBU19IT1JJWk9OVEFMX1ND Uk9MTF9CQVJTIChXSU5ET1dfWEZSQU1FIChXKSkJXApAQCAtODY1LDI3ICs4NzcsMjcgQEAg c3RydWN0IHdpbmRvdwogICAgOiAwKQoKIC8qIFdpZHRoIG9mIGEgc2Nyb2xsIGJhciBpbiB3 aW5kb3cgVywgbWVhc3VyZWQgaW4gY29sdW1ucy4gICovCi0jZGVmaW5lIFdJTkRPV19TQ1JP TExfQkFSX0NPTFMoVykJICAgICAgIFwKLSAgKFdJTkRPV19IQVNfVkVSVElDQUxfU0NST0xM X0JBUiAoVykJICAgICAgIFwKLSAgID8gV0lORE9XX0NPTkZJR19TQ1JPTExfQkFSX0NPTFMg KFcpCSAgICAgICBcCisjZGVmaW5lIFdJTkRPV19TQ1JPTExfQkFSX0NPTFMoVykgICAgICBc CisgIChXSU5ET1dfSEFTX1ZFUlRJQ0FMX1NDUk9MTF9CQVIgKFcpICBcCisgICA/IFdJTkRP V19DT05GSUdfU0NST0xMX0JBUl9DT0xTIChXKSBcCiAgICA6IDApCgogLyogV2lkdGggb2Yg YSBsZWZ0IHNjcm9sbCBiYXIgYXJlYSBpbiB3aW5kb3cgVywgbWVhc3VyZWQgaW4gcGl4ZWxz LiAgKi8KLSNkZWZpbmUgV0lORE9XX0xFRlRfU0NST0xMX0JBUl9BUkVBX1dJRFRIKFcpCQkJ CVwKLSAgKFdJTkRPV19IQVNfVkVSVElDQUxfU0NST0xMX0JBUl9PTl9MRUZUIChXKQkJCQlc Ci0gICA/IFdJTkRPV19DT05GSUdfU0NST0xMX0JBUl9XSURUSCAoVykJCQkJCVwKKyNkZWZp bmUgV0lORE9XX0xFRlRfU0NST0xMX0JBUl9BUkVBX1dJRFRIKFcpICBcCisgIChXSU5ET1df SEFTX1ZFUlRJQ0FMX1NDUk9MTF9CQVJfT05fTEVGVCAoVykgXAorICAgPyBXSU5ET1dfQ09O RklHX1NDUk9MTF9CQVJfV0lEVEggKFcpCSAgICAgIFwKICAgIDogMCkKCiAvKiBXaWR0aCBv ZiBhIHJpZ2h0IHNjcm9sbCBiYXIgYXJlYSBpbiB3aW5kb3cgVywgbWVhc3VyZWQgaW4gcGl4 ZWxzLiAgKi8KLSNkZWZpbmUgV0lORE9XX1JJR0hUX1NDUk9MTF9CQVJfQVJFQV9XSURUSChX KQkJCQlcCi0gIChXSU5ET1dfSEFTX1ZFUlRJQ0FMX1NDUk9MTF9CQVJfT05fUklHSFQgKFcp CQkJCVwKLSAgID8gV0lORE9XX0NPTkZJR19TQ1JPTExfQkFSX1dJRFRIIChXKQkJCQkJXAor I2RlZmluZSBXSU5ET1dfUklHSFRfU0NST0xMX0JBUl9BUkVBX1dJRFRIKFcpICBcCisgIChX SU5ET1dfSEFTX1ZFUlRJQ0FMX1NDUk9MTF9CQVJfT05fUklHSFQgKFcpIFwKKyAgID8gV0lO RE9XX0NPTkZJR19TQ1JPTExfQkFSX1dJRFRIIChXKQkgICAgICAgXAogICAgOiAwKQoKIC8q IFdpZHRoIG9mIHNjcm9sbCBiYXIgYXJlYSBpbiB3aW5kb3cgVywgbWVhc3VyZWQgaW4gcGl4 ZWxzLiAgKi8KLSNkZWZpbmUgV0lORE9XX1NDUk9MTF9CQVJfQVJFQV9XSURUSChXKQkJCQkJ XAotICAoV0lORE9XX0hBU19WRVJUSUNBTF9TQ1JPTExfQkFSIChXKQkJCQkJXAotICAgPyBX SU5ET1dfQ09ORklHX1NDUk9MTF9CQVJfV0lEVEggKFcpCQkJCQlcCisjZGVmaW5lIFdJTkRP V19TQ1JPTExfQkFSX0FSRUFfV0lEVEgoVykgXAorICAoV0lORE9XX0hBU19WRVJUSUNBTF9T Q1JPTExfQkFSIChXKQlcCisgICA/IFdJTkRPV19DT05GSUdfU0NST0xMX0JBUl9XSURUSCAo VykgXAogICAgOiAwKQoKIC8qIFJldHVybiB0aGUgZnJhbWUgcG9zaXRpb24gd2hlcmUgdGhl IHZlcnRpY2FsIHNjcm9sbCBiYXIgb2Ygd2luZG93IFcKQEAgLTk5NSwzNiArMTAwNywzNiBA QCBzdHJ1Y3Qgd2luZG93CiAgICBidWZmZXIgaXMgc2VsZWN0ZWQgYnkgdGhlIHRvcCBsZXZl bCBlZGl0aW5nIGxvb3AgYXQgdGhlIGVuZCBvZiBlYWNoIGNvbW1hbmQuCgogICAgVGhpcyB2 YWx1ZSBpcyBhbHdheXMgdGhlIHNhbWUgYXMgRlJBTUVfU0VMRUNURURfV0lORE9XIChzZWxl Y3RlZF9mcmFtZSkuICAqLwotCiBleHRlcm4gTGlzcF9PYmplY3Qgc2VsZWN0ZWRfd2luZG93 OwoKIC8qIFRoaXMgaXMgYSB0aW1lIHN0YW1wIGZvciB3aW5kb3cgc2VsZWN0aW9uLCBzbyB3 ZSBjYW4gZmluZCB0aGUgbGVhc3QKICAgIHJlY2VudGx5IHVzZWQgd2luZG93LiAgSXRzIG9u bHkgdXNlcnMgYXJlIEZzZWxlY3Rfd2luZG93LAogICAgaW5pdF93aW5kb3dfb25jZSwgYW5k IG1ha2VfZnJhbWUuICAqLwotCiBleHRlcm4gRU1BQ1NfSU5UIHdpbmRvd19zZWxlY3RfY291 bnQ7CgotLyogVGhlIG1pbmlidWZmZXIgd2luZG93IG9mIHRoZSBzZWxlY3RlZCBmcmFtZS4K LSAgIE5vdGUgdGhhdCB5b3UgY2Fubm90IHRlc3QgZm9yIG1pbmlidWZmZXJuZXNzIG9mIGFu IGFyYml0cmFyeSB3aW5kb3cKLSAgIGJ5IGNvbXBhcmluZyBhZ2FpbnN0IHRoaXM7IHVzZSB0 aGUgTUlOSV9XSU5ET1dfUCBtYWNybyBpbnN0ZWFkLiAgKi8KLQorLyogVGhlIG1pbmlidWZm ZXIgd2luZG93IG9mIHRoZSBzZWxlY3RlZCBmcmFtZS4gIE5vdGUgdGhhdCB5b3UgY2Fubm90 CisgICB0ZXN0IGZvciBtaW5pYnVmZmVybmVzcyBvZiBhbiBhcmJpdHJhcnkgd2luZG93IGJ5 IGNvbXBhcmluZyBhZ2FpbnN0CisgICB0aGlzOyB1c2UgdGhlIE1JTklCVUZGRVJfV0lORE9X X1AgbWFjcm8gaW5zdGVhZC4gICovCiBleHRlcm4gTGlzcF9PYmplY3QgbWluaWJ1Zl93aW5k b3c7CgogLyogTm9uLW5pbCBtZWFucyBpdCBpcyB0aGUgd2luZG93IHdob3NlIG1vZGUgbGlu ZSBzaG91bGQgYmUKICAgIHNob3duIGFzIHRoZSBzZWxlY3RlZCB3aW5kb3cgd2hlbiB0aGUg bWluaWJ1ZmZlciBpcyBzZWxlY3RlZC4gICovCi0KIGV4dGVybiBMaXNwX09iamVjdCBtaW5p YnVmX3NlbGVjdGVkX3dpbmRvdzsKCiBleHRlcm4gTGlzcF9PYmplY3QgbWFrZV93aW5kb3cg KHZvaWQpOworZXh0ZXJuIHZvaWQgZGVsZXRlX2RlbGV0YWJsZV93aW5kb3cgKExpc3BfT2Jq ZWN0KTsKIGV4dGVybiBMaXNwX09iamVjdCB3aW5kb3dfZnJvbV9jb29yZGluYXRlcyAoc3Ry dWN0IGZyYW1lICosIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIHdpbmRvd19wYXJ0ICosIGJvb2wpOwogZXh0ZXJuIHZvaWQg cmVzaXplX2ZyYW1lX3dpbmRvd3MgKHN0cnVjdCBmcmFtZSAqLCBpbnQsIGJvb2wsIGJvb2wp OwogZXh0ZXJuIHZvaWQgcmVzdG9yZV93aW5kb3dfY29uZmlndXJhdGlvbiAoTGlzcF9PYmpl Y3QpOwogZXh0ZXJuIHZvaWQgZGVsZXRlX2FsbF9jaGlsZF93aW5kb3dzIChMaXNwX09iamVj dCk7Ci1leHRlcm4gdm9pZCBncm93X21pbmlfd2luZG93IChzdHJ1Y3Qgd2luZG93ICosIGlu dCwgYm9vbCk7Ci1leHRlcm4gdm9pZCBzaHJpbmtfbWluaV93aW5kb3cgKHN0cnVjdCB3aW5k b3cgKiwgYm9vbCk7CitleHRlcm4gYm9vbCBncm93X21pbmlfd2luZG93IChzdHJ1Y3Qgd2lu ZG93ICosIGludCk7CitleHRlcm4gYm9vbCBzaHJpbmtfbWluaV93aW5kb3cgKHN0cnVjdCB3 aW5kb3cgKik7CiBleHRlcm4gaW50IHdpbmRvd19yZWxhdGl2ZV94X2Nvb3JkIChzdHJ1Y3Qg d2luZG93ICosIGVudW0gd2luZG93X3BhcnQsIGludCk7CgorZXh0ZXJuIExpc3BfT2JqZWN0 IG1pbmlidWZmZXJfd2luZG93IChzdHJ1Y3QgZnJhbWUgKmYpOworZXh0ZXJuIExpc3BfT2Jq ZWN0IGVjaG9fd2luZG93IChzdHJ1Y3QgZnJhbWUgKmYpOworCiB2b2lkIHJ1bl93aW5kb3df c2l6ZV9jaGFuZ2VfZnVuY3Rpb25zIChMaXNwX09iamVjdCk7CgogLyogTWFrZSBXSU5ET1cg ZGlzcGxheSBCVUZGRVIuICBSVU5fSE9PS1NfUCBtZWFucyBpdCdzIGFsbG93ZWQKZGlmZiAt LWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggMzE2YzEyZS4uZmIyYTI0 YyAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMKKysrIGIvc3JjL3hkaXNwLmMKQEAgLTUxOSw3 ICs1MTksNyBAQAoKIC8qIFRoZSBidWZmZXJzIHJlZmVyZW5jZWQgZnJvbSBlY2hvX2FyZWFf YnVmZmVyLiAgKi8KCi1zdGF0aWMgTGlzcF9PYmplY3QgZWNob19idWZmZXJbMl07CitMaXNw X09iamVjdCBlY2hvX2J1ZmZlclsyXTsKCiAvKiBBIHZlY3RvciBzYXZlZCB1c2VkIGluIHdp dGhfYXJlYV9idWZmZXIgdG8gcmVkdWNlIGNvbnNpbmcuICAqLwoKQEAgLTI3NDAsNyArMjc0 MCw3IEBAIHN0YXRpYyBMaXNwX09iamVjdCBjYWxjX2xpbmVfaGVpZ2h0X3Byb3BlcnR5IChz dHJ1Y3QgaXQgKiwgTGlzcF9PYmplY3QsCiBDSEVDS19XSU5ET1dfRU5EIChzdHJ1Y3Qgd2lu ZG93ICp3KQogewogI2lmIGRlZmluZWQgR0xZUEhfREVCVUcgJiYgZGVmaW5lZCBFTkFCTEVf Q0hFQ0tJTkcKLSAgaWYgKCFNSU5JX1dJTkRPV19QICh3KSAmJiB3LT53aW5kb3dfZW5kX3Zh bGlkKQorICBpZiAoIU1JTklCVUZGRVJfV0lORE9XX1AgKHcpICYmIHctPndpbmRvd19lbmRf dmFsaWQpCiAgICAgewogICAgICAgc3RydWN0IGdseXBoX3JvdyAqcm93OwogICAgICAgZWFz c2VydCAoKHJvdyA9IE1BVFJJWF9ST1cgKHctPmN1cnJlbnRfbWF0cml4LCB3LT53aW5kb3df ZW5kX3Zwb3MpLApAQCAtMTA2MTgsMTAgKzEwNjE4LDkgQEAgc3RydWN0IG92ZXJsYXlfZW50 cnkKICAgICAgdG9zcyBpdC4gICovCiAgIGVsc2UgaWYgKElOVEVSQUNUSVZFICYmIHNmLT5n bHlwaHNfaW5pdGlhbGl6ZWRfcCkKICAgICB7Ci0gICAgICAvKiBHZXQgdGhlIGZyYW1lIGNv bnRhaW5pbmcgdGhlIG1pbmktYnVmZmVyCi0JIHRoYXQgdGhlIHNlbGVjdGVkIGZyYW1lIGlz IHVzaW5nLiAgKi8KLSAgICAgIExpc3BfT2JqZWN0IG1pbmlfd2luZG93ID0gRlJBTUVfTUlO SUJVRl9XSU5ET1cgKHNmKTsKLSAgICAgIExpc3BfT2JqZWN0IGZyYW1lID0gWFdJTkRPVyAo bWluaV93aW5kb3cpLT5mcmFtZTsKKyAgICAgIC8qIEdldCB0aGUgZnJhbWUgY29udGFpbmlu ZyB0aGUgbWluaS1idWZmZXIgdGhhdCB0aGUgc2VsZWN0ZWQKKwkgZnJhbWUgaXMgdXNpbmcu ICAqLworICAgICAgTGlzcF9PYmplY3QgZnJhbWUgPSBXSU5ET1dfRlJBTUUgKFhXSU5ET1cg KGVjaG9fd2luZG93IChzZikpKTsKICAgICAgIHN0cnVjdCBmcmFtZSAqZiA9IFhGUkFNRSAo ZnJhbWUpOwoKICAgICAgIGlmIChGUkFNRV9WSVNJQkxFX1AgKHNmKSAmJiAhRlJBTUVfVklT SUJMRV9QIChmKSkKQEAgLTEwNjg5LDEzICsxMDY4OCw4IEBAIHN0cnVjdCBvdmVybGF5X2Vu dHJ5CiAgICAgICAvKiBUaGUgZnJhbWUgd2hvc2UgbWluaWJ1ZmZlciB3ZSdyZSBnb2luZyB0 byBkaXNwbGF5IHRoZSBtZXNzYWdlIG9uLgogCSBJdCBtYXkgYmUgbGFyZ2VyIHRoYW4gdGhl IHNlbGVjdGVkIGZyYW1lLCBzbyB3ZSBuZWVkCiAJIHRvIHVzZSBpdHMgYnVmZmVyLCBub3Qg dGhlIHNlbGVjdGVkIGZyYW1lJ3MgYnVmZmVyLiAgKi8KLSAgICAgIExpc3BfT2JqZWN0IG1p bmlfd2luZG93OwotICAgICAgc3RydWN0IGZyYW1lICpmLCAqc2YgPSBTRUxFQ1RFRF9GUkFN RSAoKTsKLQotICAgICAgLyogR2V0IHRoZSBmcmFtZSBjb250YWluaW5nIHRoZSBtaW5pYnVm ZmVyCi0JIHRoYXQgdGhlIHNlbGVjdGVkIGZyYW1lIGlzIHVzaW5nLiAgKi8KLSAgICAgIG1p bmlfd2luZG93ID0gRlJBTUVfTUlOSUJVRl9XSU5ET1cgKHNmKTsKLSAgICAgIGYgPSBYRlJB TUUgKFdJTkRPV19GUkFNRSAoWFdJTkRPVyAobWluaV93aW5kb3cpKSk7CisgICAgICBzdHJ1 Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7CisgICAgICBzdHJ1Y3QgZnJhbWUg KmYgPSBXSU5ET1dfWEZSQU1FIChYV0lORE9XIChlY2hvX3dpbmRvdyAoc2YpKSk7CgogICAg ICAgLyogRXJyb3IgbWVzc2FnZXMgZ2V0IHJlcG9ydGVkIHByb3Blcmx5IGJ5IGNtZF9lcnJv ciwgc28gdGhpcyBtdXN0IGJlCiAJIGp1c3QgYW4gaW5mb3JtYXRpdmUgbWVzc2FnZTsgaWYg dGhlIGZyYW1lIGhhc24ndCByZWFsbHkgYmVlbgpAQCAtMTA3NTYsMTMgKzEwNzUwLDExIEBA IHN0YXRpYyB2b2lkIEFUVFJJQlVURV9GT1JNQVRfUFJJTlRGICgxLCAwKQogICAgICAgLyog VGhlIGZyYW1lIHdob3NlIG1pbmktYnVmZmVyIHdlJ3JlIGdvaW5nIHRvIGRpc3BsYXkgdGhl IG1lc3NhZ2UKIAkgb24uICBJdCBtYXkgYmUgbGFyZ2VyIHRoYW4gdGhlIHNlbGVjdGVkIGZy YW1lLCBzbyB3ZSBuZWVkIHRvCiAJIHVzZSBpdHMgYnVmZmVyLCBub3QgdGhlIHNlbGVjdGVk IGZyYW1lJ3MgYnVmZmVyLiAgKi8KLSAgICAgIExpc3BfT2JqZWN0IG1pbmlfd2luZG93Owog ICAgICAgc3RydWN0IGZyYW1lICpmLCAqc2YgPSBTRUxFQ1RFRF9GUkFNRSAoKTsKCiAgICAg ICAvKiBHZXQgdGhlIGZyYW1lIGNvbnRhaW5pbmcgdGhlIG1pbmktYnVmZmVyCiAJIHRoYXQg dGhlIHNlbGVjdGVkIGZyYW1lIGlzIHVzaW5nLiAgKi8KLSAgICAgIG1pbmlfd2luZG93ID0g RlJBTUVfTUlOSUJVRl9XSU5ET1cgKHNmKTsKLSAgICAgIGYgPSBYRlJBTUUgKFdJTkRPV19G UkFNRSAoWFdJTkRPVyAobWluaV93aW5kb3cpKSk7CisgICAgICBmID0gV0lORE9XX1hGUkFN RSAoWFdJTkRPVyAoZWNob193aW5kb3cgKHNmKSkpOwoKICAgICAgIC8qIEVycm9yIG1lc3Nh Z2VzIGdldCByZXBvcnRlZCBwcm9wZXJseSBieSBjbWRfZXJyb3IsIHNvIHRoaXMgbXVzdCBi ZQogCSBqdXN0IGFuIGluZm9ybWF0aXZlIG1lc3NhZ2U7IGlmIHRoZSBmcmFtZSBoYXNuJ3Qg cmVhbGx5IGJlZW4KQEAgLTExMDExLDE1ICsxMTAwMywxNSBAQCBzdGF0aWMgdm9pZCBBVFRS SUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMCkKICAgICAgIGJ1ZmZlciA9IEFSRUYgKHZlY3Rv ciwgNCk7CgogICAgICAgd3NldF9idWZmZXIgKHcsIGJ1ZmZlcik7Ci0gICAgICBzZXRfbWFy a2VyX2JvdGggKHctPnBvaW50bSwgYnVmZmVyLAotCQkgICAgICAgWEZBU1RJTlQgKEFSRUYg KHZlY3RvciwgNSkpLAotCQkgICAgICAgWEZBU1RJTlQgKEFSRUYgKHZlY3RvciwgNikpKTsK LSAgICAgIHNldF9tYXJrZXJfYm90aCAody0+b2xkX3BvaW50bSwgYnVmZmVyLAotCQkgICAg ICAgWEZBU1RJTlQgKEFSRUYgKHZlY3RvciwgNykpLAotCQkgICAgICAgWEZBU1RJTlQgKEFS RUYgKHZlY3RvciwgOCkpKTsKLSAgICAgIHNldF9tYXJrZXJfYm90aCAody0+c3RhcnQsIGJ1 ZmZlciwKLQkJICAgICAgIFhGQVNUSU5UIChBUkVGICh2ZWN0b3IsIDkpKSwKLQkJICAgICAg IFhGQVNUSU5UIChBUkVGICh2ZWN0b3IsIDEwKSkpOworICAgICAgc2V0X21hcmtlcl9yZXN0 cmljdGVkX2JvdGggKHctPnBvaW50bSwgYnVmZmVyLAorCQkJCSAgWEZBU1RJTlQgKEFSRUYg KHZlY3RvciwgNSkpLAorCQkJCSAgWEZBU1RJTlQgKEFSRUYgKHZlY3RvciwgNikpKTsKKyAg ICAgIHNldF9tYXJrZXJfcmVzdHJpY3RlZF9ib3RoICh3LT5vbGRfcG9pbnRtLCBidWZmZXIs CisJCQkJICBYRkFTVElOVCAoQVJFRiAodmVjdG9yLCA3KSksCisJCQkJICBYRkFTVElOVCAo QVJFRiAodmVjdG9yLCA4KSkpOworICAgICAgc2V0X21hcmtlcl9yZXN0cmljdGVkX2JvdGgg KHctPnN0YXJ0LCBidWZmZXIsCisJCQkJICBYRkFTVElOVCAoQVJFRiAodmVjdG9yLCA5KSks CisJCQkJICBYRkFTVElOVCAoQVJFRiAodmVjdG9yLCAxMCkpKTsKICAgICB9CgogICBWd2l0 aF9lY2hvX2FyZWFfc2F2ZV92ZWN0b3IgPSB2ZWN0b3I7CkBAIC0xMTA3OCw5ICsxMTA3MCw4 IEBAIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9GT1JNQVRfUFJJTlRGICgxLCAwKQogICAgICAg aWYgKG1pbmlidWZmZXJfYXV0b19yYWlzZSkKIAl7CiAJICBzdHJ1Y3QgZnJhbWUgKnNmID0g U0VMRUNURURfRlJBTUUgKCk7Ci0JICBMaXNwX09iamVjdCBtaW5pX3dpbmRvdzsKLQkgIG1p bmlfd2luZG93ID0gRlJBTUVfTUlOSUJVRl9XSU5ET1cgKHNmKTsKLQkgIEZyYWlzZV9mcmFt ZSAgKFdJTkRPV19GUkFNRSAoWFdJTkRPVyAobWluaV93aW5kb3cpKSk7CisKKwkgIEZyYWlz ZV9mcmFtZSAoV0lORE9XX0ZSQU1FIChYV0lORE9XIChlY2hvX3dpbmRvdyAoc2YpKSkpOwog CX0KCiAgICAgICBtZXNzYWdlX2xvZ19tYXliZV9uZXdsaW5lICgpOwpAQCAtMTExODcsMjEg KzExMTc4LDMzIEBAIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9GT1JNQVRfUFJJTlRGICgxLCAw KQogICAgaXMgYWN0aXZlLCBkb24ndCBzaHJpbmsgaXQuICAqLwoKIHZvaWQKLXJlc2l6ZV9l Y2hvX2FyZWFfZXhhY3RseSAodm9pZCkKK3Jlc2l6ZV9taW5pX3dpbmRvd3NfZXhhY3RseSAo dm9pZCkKIHsKLSAgaWYgKEJVRkZFUlAgKGVjaG9fYXJlYV9idWZmZXJbMF0pCi0gICAgICAm JiBXSU5ET1dQIChlY2hvX2FyZWFfd2luZG93KSkKKyAgYm9vbCByZXNpemVkX3A7CisKKyAg aWYgKEJVRkZFUlAgKGVjaG9fYXJlYV9idWZmZXJbMF0pICYmIFdJTkRPV19MSVZFX1AgKGVj aG9fYXJlYV93aW5kb3cpKQogICAgIHsKICAgICAgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lO RE9XIChlY2hvX2FyZWFfd2luZG93KTsKLSAgICAgIExpc3BfT2JqZWN0IHJlc2l6ZV9leGFj dGx5ID0gKG1pbmlidWZfbGV2ZWwgPT0gMCA/IFF0IDogUW5pbCk7Ci0gICAgICBib29sIHJl c2l6ZWRfcCA9IHdpdGhfZWNob19hcmVhX2J1ZmZlciAodywgMCwgcmVzaXplX21pbmlfd2lu ZG93XzEsCi0JCQkJCSAgICAgIChpbnRwdHJfdCkgdywgcmVzaXplX2V4YWN0bHkpOwotICAg ICAgaWYgKHJlc2l6ZWRfcCkKLQl7Ci0JICB3aW5kb3dzX29yX2J1ZmZlcnNfY2hhbmdlZCA9 IDQyOwotCSAgdXBkYXRlX21vZGVfbGluZXMgPSAzMDsKLQkgIHJlZGlzcGxheV9pbnRlcm5h bCAoKTsKLQl9CisgICAgICBMaXNwX09iamVjdCByZXNpemVfZXhhY3RseSA9ICgobWluaWJ1 Zl9sZXZlbCA9PSAwCisJCQkJICAgICB8fCAhRVEgKGVjaG9fYXJlYV93aW5kb3csIG1pbmli dWZfd2luZG93KSkKKwkJCQkgICAgPyBRdCA6IFFuaWwpOworCisgICAgICByZXNpemVkX3Ag PSB3aXRoX2VjaG9fYXJlYV9idWZmZXIgKHcsIDAsIHJlc2l6ZV9taW5pX3dpbmRvd18xLAor CQkJCQkgKGludHB0cl90KSB3LCByZXNpemVfZXhhY3RseSk7CisgICAgfQorCisgIGlmIChX SU5ET1dfTElWRV9QIChtaW5pYnVmX3dpbmRvdykgJiYgIUVRIChlY2hvX2FyZWFfd2luZG93 LCBtaW5pYnVmX3dpbmRvdykpCisgICAgeworICAgICAgc3RydWN0IHdpbmRvdyAqdyA9IFhX SU5ET1cgKG1pbmlidWZfd2luZG93KTsKKworICAgICAgcmVzaXplZF9wID0gcmVzaXplX21p bmlfd2luZG93ICh3LCBtaW5pYnVmX2xldmVsID09IDApIHx8IHJlc2l6ZWRfcDsKKyAgICB9 CisKKyAgaWYgKHJlc2l6ZWRfcCkKKyAgICB7CisgICAgICB3aW5kb3dzX29yX2J1ZmZlcnNf Y2hhbmdlZCA9IDQyOworICAgICAgdXBkYXRlX21vZGVfbGluZXMgPSAzMDsKKyAgICAgIHJl ZGlzcGxheV9pbnRlcm5hbCAoKTsKICAgICB9CiB9CgpAQCAtMTEyNTgsMTYgKzExMjYxLDQ5 IEBAIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9GT1JNQVRfUFJJTlRGICgxLCAwKQogICAgICAg fHwgKEZSQU1FX1hfUCAoZikgJiYgRlJBTUVfWF9PVVRQVVQgKGYpID09IE5VTEwpKQogICAg IHJldHVybiBmYWxzZTsKCi0gIGlmICghRlJBTUVfTUlOSUJVRl9PTkxZX1AgKGYpKQorICBp ZiAoIU1JTklCVUZGRVJfV0lORE9XX09OTFlfUCAoZikgfHwgVmZpdF9taW5pYnVmZmVyX29u bHlfZnJhbWVzKQogICAgIHsKICAgICAgIHN0cnVjdCBpdCBpdDsKLSAgICAgIGludCB0b3Rh bF9oZWlnaHQgPSAoV0lORE9XX1BJWEVMX0hFSUdIVCAoWFdJTkRPVyAoRlJBTUVfUk9PVF9X SU5ET1cgKGYpKSkKLQkJCSAgKyBXSU5ET1dfUElYRUxfSEVJR0hUICh3KSk7CisgICAgICBp bnQgb2xkX2hlaWdodCA9IFdJTkRPV19QSVhFTF9IRUlHSFQgKHcpOwogICAgICAgaW50IHVu aXQgPSBGUkFNRV9MSU5FX0hFSUdIVCAoZik7CiAgICAgICBpbnQgaGVpZ2h0LCBtYXhfaGVp Z2h0OwogICAgICAgc3RydWN0IHRleHRfcG9zIHN0YXJ0OwogICAgICAgc3RydWN0IGJ1ZmZl ciAqb2xkX2N1cnJlbnRfYnVmZmVyID0gTlVMTDsKCisgICAgICBpZiAoVmZpdF9taW5pYnVm ZmVyX29ubHlfZnJhbWVzCisJICAmJiB3ID09IFhXSU5ET1cgKEZSQU1FX1JPT1RfV0lORE9X IChmKSkpCisJeworCSAgLyogaWYgdGhlIG1pbmlidWZmZXIgd2luZG93IGlzIHRoZSByb290 IHdpbmRvdyBvZiBpdHMgZnJhbWUKKwkgICAgIGFuZCB3ZSBmaXQgbWluaWJ1ZmZlci1vbmx5 IGZyYW1lcywgd2UgYWNjZXB0IG9ubHkgaW50ZWdlcgorCSAgICAgdmFsdWVzIGZvciBWbWF4 X21pbmlfd2luZG93X2hlaWdodCBhbmQgdXNlIDQgYXMgZmFsbGJhY2sKKwkgICAgIG90aGVy d2lzZS4gICovCisJICBpZiAoSU5URUdFUlAgKFZtYXhfbWluaV93aW5kb3dfaGVpZ2h0KSkK KwkgICAgeworCSAgICAgIG1heF9oZWlnaHQgPSBYSU5UIChWbWF4X21pbmlfd2luZG93X2hl aWdodCkgKiB1bml0OworCSAgICAgIGlmIChtYXhfaGVpZ2h0IDwgdW5pdCkKKwkJbWF4X2hl aWdodCA9IHVuaXQ7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgLyogNCBpcyBhcmJpdHJhcnku ICAqLworCSAgICBtYXhfaGVpZ2h0ID0gNCAqIHVuaXQ7CisJfQorICAgICAgZWxzZQorCXsK KwkgIGludCB3aW5kb3dzX2hlaWdodCA9IEZSQU1FX1dJTkRPV1NfSEVJR0hUIChmKTsKKwor CSAgLyogQ29tcHV0ZSB0aGUgbWF4LiBudW1iZXIgb2YgbGluZXMgc3BlY2lmaWVkIGJ5IHRo ZSB1c2VyLiAgKi8KKwkgIGlmIChGTE9BVFAgKFZtYXhfbWluaV93aW5kb3dfaGVpZ2h0KSkK KwkgICAgbWF4X2hlaWdodCA9IFhGTE9BVF9EQVRBIChWbWF4X21pbmlfd2luZG93X2hlaWdo dCkgKiB3aW5kb3dzX2hlaWdodDsKKwkgIGVsc2UgaWYgKElOVEVHRVJQIChWbWF4X21pbmlf d2luZG93X2hlaWdodCkpCisJICAgIG1heF9oZWlnaHQgPSBYSU5UIChWbWF4X21pbmlfd2lu ZG93X2hlaWdodCkgKiB1bml0OworCSAgZWxzZQorCSAgICBtYXhfaGVpZ2h0ID0gd2luZG93 c19oZWlnaHQgLyA0OworCisJICAvKiBDb3JyZWN0IHRoYXQgbWF4LiBoZWlnaHQgaWYgaXQn cyBib2d1cy4gICovCisJICBtYXhfaGVpZ2h0ID0gY2xpcF90b19ib3VuZHMgKHVuaXQsIG1h eF9oZWlnaHQsIHdpbmRvd3NfaGVpZ2h0KTsKKwl9CisKKyAgICAgIC8qIEZpbmQgb3V0IHRo ZSBoZWlnaHQgb2YgdGhlIHRleHQgaW4gdGhlIHdpbmRvdy4gICovCiAgICAgICBpZiAoY3Vy cmVudF9idWZmZXIgIT0gWEJVRkZFUiAody0+Y29udGVudHMpKQogCXsKIAkgIG9sZF9jdXJy ZW50X2J1ZmZlciA9IGN1cnJlbnRfYnVmZmVyOwpAQCAtMTEyNzUsMTkgKzExMzExLDYgQEAg c3RhdGljIHZvaWQgQVRUUklCVVRFX0ZPUk1BVF9QUklOVEYgKDEsIDApCiAJfQoKICAgICAg IGluaXRfaXRlcmF0b3IgKCZpdCwgdywgQkVHViwgQkVHVl9CWVRFLCBOVUxMLCBERUZBVUxU X0ZBQ0VfSUQpOwotCi0gICAgICAvKiBDb21wdXRlIHRoZSBtYXguIG51bWJlciBvZiBsaW5l cyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuICAqLwotICAgICAgaWYgKEZMT0FUUCAoVm1heF9t aW5pX3dpbmRvd19oZWlnaHQpKQotCW1heF9oZWlnaHQgPSBYRkxPQVRfREFUQSAoVm1heF9t aW5pX3dpbmRvd19oZWlnaHQpICogdG90YWxfaGVpZ2h0OwotICAgICAgZWxzZSBpZiAoSU5U RUdFUlAgKFZtYXhfbWluaV93aW5kb3dfaGVpZ2h0KSkKLQltYXhfaGVpZ2h0ID0gWElOVCAo Vm1heF9taW5pX3dpbmRvd19oZWlnaHQpICogdW5pdDsKLSAgICAgIGVsc2UKLQltYXhfaGVp Z2h0ID0gdG90YWxfaGVpZ2h0IC8gNDsKLQotICAgICAgLyogQ29ycmVjdCB0aGF0IG1heC4g aGVpZ2h0IGlmIGl0J3MgYm9ndXMuICAqLwotICAgICAgbWF4X2hlaWdodCA9IGNsaXBfdG9f Ym91bmRzICh1bml0LCBtYXhfaGVpZ2h0LCB0b3RhbF9oZWlnaHQpOwotCi0gICAgICAvKiBG aW5kIG91dCB0aGUgaGVpZ2h0IG9mIHRoZSB0ZXh0IGluIHRoZSB3aW5kb3cuICAqLwogICAg ICAgaWYgKGl0LmxpbmVfd3JhcCA9PSBUUlVOQ0FURSkKIAloZWlnaHQgPSB1bml0OwogICAg ICAgZWxzZQpAQCAtMTEzMDEsNiArMTEzMjQsMTYgQEAgc3RhdGljIHZvaWQgQVRUUklCVVRF X0ZPUk1BVF9QUklOVEYgKDEsIDApCiAJICBoZWlnaHQgLT0gbWluIChpdC5leHRyYV9saW5l X3NwYWNpbmcsIGl0Lm1heF9leHRyYV9saW5lX3NwYWNpbmcpOwogCX0KCisvKiogICAgICAg aWYgKE1JTklCVUZGRVJfV0lORE9XX1RPUF9QIChmKSAqKi8KKy8qKiAJICB8fCAoTUlOSUJV RkZFUl9XSU5ET1dfUCAodykgJiYgTUlOSUJVRkZFUl9XSU5ET1dfTE9PU0VfUCAoZikgKiov CisvKiogCSAgICAgICYmICFXSU5ET1dfQk9UVE9NTU9TVF9QICh3KSkgKiovCisvKiogCSAg fHwgKEVDSE9fV0lORE9XX1AgKHcpICYmICFXSU5ET1dfQk9UVE9NTU9TVF9QICh3KSkpICoq LworCisgICAgICBpZiAoRUNIT19XSU5ET1dfUCAodykgJiYgIU1JTklCVUZGRVJfV0lORE9X X1AgKHcpKQorCWhlaWdodCArPSBXSU5ET1dfQk9UVE9NX0RJVklERVJfV0lEVEggKHcpOwor ICAgICAgZWxzZQorCWhlaWdodCArPSBXSU5ET1dfQk9UVE9NX0RJVklERVJfV0lEVEggKHcp OworCiAgICAgICAvKiBDb21wdXRlIGEgc3VpdGFibGUgd2luZG93IHN0YXJ0LiAgKi8KICAg ICAgIGlmIChoZWlnaHQgPiBtYXhfaGVpZ2h0KQogCXsKQEAgLTExMzE3LDUxICsxMTM1MCwx NiBAQCBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMCkKIAl7CiAJ ICAvKiBMZXQgaXQgZ3JvdyBvbmx5LCB1bnRpbCB3ZSBkaXNwbGF5IGFuIGVtcHR5IG1lc3Nh Z2UsIGluIHdoaWNoCiAJICAgICBjYXNlIHRoZSB3aW5kb3cgc2hyaW5rcyBhZ2Fpbi4gICov Ci0JICBpZiAoaGVpZ2h0ID4gV0lORE9XX1BJWEVMX0hFSUdIVCAodykpCi0JICAgIHsKLQkg ICAgICBpbnQgb2xkX2hlaWdodCA9IFdJTkRPV19QSVhFTF9IRUlHSFQgKHcpOwotCi0JICAg ICAgRlJBTUVfV0lORE9XU19GUk9aRU4gKGYpID0gdHJ1ZTsKLQkgICAgICBncm93X21pbmlf d2luZG93ICh3LCBoZWlnaHQgLSBXSU5ET1dfUElYRUxfSEVJR0hUICh3KSwgdHJ1ZSk7Ci0J ICAgICAgd2luZG93X2hlaWdodF9jaGFuZ2VkX3AgPSBXSU5ET1dfUElYRUxfSEVJR0hUICh3 KSAhPSBvbGRfaGVpZ2h0OwotCSAgICB9Ci0JICBlbHNlIGlmIChoZWlnaHQgPCBXSU5ET1df UElYRUxfSEVJR0hUICh3KQotCQkgICAmJiAoZXhhY3RfcCB8fCBCRUdWID09IFpWKSkKLQkg ICAgewotCSAgICAgIGludCBvbGRfaGVpZ2h0ID0gV0lORE9XX1BJWEVMX0hFSUdIVCAodyk7 Ci0KLQkgICAgICBGUkFNRV9XSU5ET1dTX0ZST1pFTiAoZikgPSBmYWxzZTsKLQkgICAgICBz aHJpbmtfbWluaV93aW5kb3cgKHcsIHRydWUpOwotCSAgICAgIHdpbmRvd19oZWlnaHRfY2hh bmdlZF9wID0gV0lORE9XX1BJWEVMX0hFSUdIVCAodykgIT0gb2xkX2hlaWdodDsKLQkgICAg fQotCX0KLSAgICAgIGVsc2UKLQl7Ci0JICAvKiBBbHdheXMgcmVzaXplIHRvIGV4YWN0IHNp emUgbmVlZGVkLiAgKi8KLQkgIGlmIChoZWlnaHQgPiBXSU5ET1dfUElYRUxfSEVJR0hUICh3 KSkKLQkgICAgewotCSAgICAgIGludCBvbGRfaGVpZ2h0ID0gV0lORE9XX1BJWEVMX0hFSUdI VCAodyk7Ci0KLQkgICAgICBGUkFNRV9XSU5ET1dTX0ZST1pFTiAoZikgPSB0cnVlOwotCSAg ICAgIGdyb3dfbWluaV93aW5kb3cgKHcsIGhlaWdodCAtIFdJTkRPV19QSVhFTF9IRUlHSFQg KHcpLCB0cnVlKTsKLQkgICAgICB3aW5kb3dfaGVpZ2h0X2NoYW5nZWRfcCA9IFdJTkRPV19Q SVhFTF9IRUlHSFQgKHcpICE9IG9sZF9oZWlnaHQ7Ci0JICAgIH0KLQkgIGVsc2UgaWYgKGhl aWdodCA8IFdJTkRPV19QSVhFTF9IRUlHSFQgKHcpKQotCSAgICB7Ci0JICAgICAgaW50IG9s ZF9oZWlnaHQgPSBXSU5ET1dfUElYRUxfSEVJR0hUICh3KTsKLQotCSAgICAgIEZSQU1FX1dJ TkRPV1NfRlJPWkVOIChmKSA9IGZhbHNlOwotCSAgICAgIHNocmlua19taW5pX3dpbmRvdyAo dywgdHJ1ZSk7Ci0KLQkgICAgICBpZiAoaGVpZ2h0KQotCQl7Ci0JCSAgRlJBTUVfV0lORE9X U19GUk9aRU4gKGYpID0gdHJ1ZTsKLQkJICBncm93X21pbmlfd2luZG93ICh3LCBoZWlnaHQg LSBXSU5ET1dfUElYRUxfSEVJR0hUICh3KSwgdHJ1ZSk7Ci0JCX0KLQotCSAgICAgIHdpbmRv d19oZWlnaHRfY2hhbmdlZF9wID0gV0lORE9XX1BJWEVMX0hFSUdIVCAodykgIT0gb2xkX2hl aWdodDsKLQkgICAgfQorCSAgaWYgKGhlaWdodCA+IG9sZF9oZWlnaHQpCisJICAgIHdpbmRv d19oZWlnaHRfY2hhbmdlZF9wCisJICAgICAgPSBncm93X21pbmlfd2luZG93ICh3LCBoZWln aHQgLSBvbGRfaGVpZ2h0KTsKKwkgIGVsc2UgaWYgKGhlaWdodCA8IG9sZF9oZWlnaHQgJiYg KGV4YWN0X3AgfHwgQkVHViA9PSBaVikpCisJICAgIHdpbmRvd19oZWlnaHRfY2hhbmdlZF9w ID0gc2hyaW5rX21pbmlfd2luZG93ICh3KTsKIAl9CisgICAgICBlbHNlIGlmIChoZWlnaHQg IT0gb2xkX2hlaWdodCkKKwkvKiBBbHdheXMgcmVzaXplIHRvIGV4YWN0IHNpemUgbmVlZGVk LiAgKi8KKwl3aW5kb3dfaGVpZ2h0X2NoYW5nZWRfcAorCSAgPSBncm93X21pbmlfd2luZG93 ICh3LCBoZWlnaHQgLSBvbGRfaGVpZ2h0KTsKCiAgICAgICBpZiAob2xkX2N1cnJlbnRfYnVm ZmVyKQogCXNldF9idWZmZXJfaW50ZXJuYWwgKG9sZF9jdXJyZW50X2J1ZmZlcik7CkBAIC0x MTYxOSwxNiArMTE2MTcsMTkgQEAgc3RhdGljIHZvaWQgQVRUUklCVVRFX0ZPUk1BVF9QUklO VEYgKDEsIDApCiBzdGF0aWMgdm9pZAogZWNob19hcmVhX2Rpc3BsYXkgKGJvb2wgdXBkYXRl X2ZyYW1lX3ApCiB7CisgIHN0cnVjdCBmcmFtZSAqc2YgPSBTRUxFQ1RFRF9GUkFNRSAoKTsK ICAgTGlzcF9PYmplY3QgbWluaV93aW5kb3c7CiAgIHN0cnVjdCB3aW5kb3cgKnc7CiAgIHN0 cnVjdCBmcmFtZSAqZjsKICAgYm9vbCB3aW5kb3dfaGVpZ2h0X2NoYW5nZWRfcCA9IGZhbHNl OwotICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNURURfRlJBTUUgKCk7CgotICBtaW5pX3dp bmRvdyA9IEZSQU1FX01JTklCVUZfV0lORE9XIChzZik7Ci0gIGlmIChOSUxQIChtaW5pX3dp bmRvdykpCisgIC8qIFdoZW4gRW1hY3Mgc3RhcnRzLCBzZWxlY3RlZF9mcmFtZSBtYXkgYmUg dGhlIGluaXRpYWwgdGVybWluYWwKKyAgICAgZnJhbWUuICBJZiB3ZSBsZXQgdGhpcyB0aHJv dWdoLCBhIG1lc3NhZ2Ugd291bGQgYmUgZGlzcGxheWVkIG9uCisgICAgIHRoZSB0ZXJtaW5h bC4gICovCisgIGlmIChGUkFNRV9JTklUSUFMX1AgKHNmKSkKICAgICByZXR1cm47CgorICBt aW5pX3dpbmRvdyA9IGVjaG9fd2luZG93IChzZik7CiAgIHcgPSBYV0lORE9XIChtaW5pX3dp bmRvdyk7CiAgIGYgPSBYRlJBTUUgKFdJTkRPV19GUkFNRSAodykpOwoKQEAgLTExNjM2LDE0 ICsxMTYzNyw2IEBAIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9GT1JNQVRfUFJJTlRGICgxLCAw KQogICBpZiAoIUZSQU1FX1ZJU0lCTEVfUCAoZikgfHwgIWYtPmdseXBoc19pbml0aWFsaXpl ZF9wKQogICAgIHJldHVybjsKCi0jaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCi0gIC8qIFdo ZW4gRW1hY3Mgc3RhcnRzLCBzZWxlY3RlZF9mcmFtZSBtYXkgYmUgdGhlIGluaXRpYWwgdGVy bWluYWwKLSAgICAgZnJhbWUuICBJZiB3ZSBsZXQgdGhpcyB0aHJvdWdoLCBhIG1lc3NhZ2Ug d291bGQgYmUgZGlzcGxheWVkIG9uCi0gICAgIHRoZSB0ZXJtaW5hbC4gICovCi0gIGlmIChG UkFNRV9JTklUSUFMX1AgKFhGUkFNRSAoc2VsZWN0ZWRfZnJhbWUpKSkKLSAgICByZXR1cm47 Ci0jZW5kaWYgLyogSEFWRV9XSU5ET1dfU1lTVEVNICovCi0KICAgLyogUmVkcmF3IGdhcmJh Z2VkIGZyYW1lcy4gICovCiAgIGNsZWFyX2dhcmJhZ2VkX2ZyYW1lcyAoKTsKCkBAIC0xMTc3 MSw3ICsxMTc2NCw3IEBAIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9GT1JNQVRfUFJJTlRGICgx LCAwKQogCXJldHVybiBmYWxzZTsKICAgICAgIGVsc2UgaWYgKEVRICh3aW5kb3csIHNlbGVj dGVkX3dpbmRvdykpCiAJcmV0dXJuIGZhbHNlOwotICAgICAgZWxzZSBpZiAoTUlOSV9XSU5E T1dfUCAoWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KSkKKyAgICAgIGVsc2UgaWYgKE1JTklC VUZGRVJfV0lORE9XX1AgKFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdykpCiAJICAgICAgICYm IEVRICh3aW5kb3csIFZtaW5pYnVmX3Njcm9sbF93aW5kb3cpKQogCS8qIFRoaXMgc3BlY2lh bCB3aW5kb3cgY2FuJ3QgYmUgZnJvemVuIHRvby4gICovCiAJcmV0dXJuIGZhbHNlOwpAQCAt MTE5ODAsNyArMTE5NzMsNyBAQCBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfRk9STUFUX1BSSU5U RiAoMSwgMCkKICAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChmcmFtZSk7CgogICBpZiAo KEZSQU1FX1dJTkRPV19QIChmKQotICAgICAgIHx8IEZSQU1FX01JTklCVUZfT05MWV9QIChm KQorICAgICAgIHx8IE1JTklCVUZGRVJfV0lORE9XX09OTFlfUCAoZikKICAgICAgICB8fCBm LT5leHBsaWNpdF9uYW1lKQogICAgICAgJiYgIUZSQU1FX1RPT0xUSVBfUCAoZikpCiAgICAg ewpAQCAtMTE5OTgsNyArMTE5OTEsNyBAQCBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfRk9STUFU X1BSSU5URiAoMSwgMCkKCiAJICBpZiAodGYgIT0gZgogCSAgICAgICYmIEZSQU1FX0tCT0FS RCAodGYpID09IEZSQU1FX0tCT0FSRCAoZikKLQkgICAgICAmJiAhRlJBTUVfTUlOSUJVRl9P TkxZX1AgKHRmKQorCSAgICAgICYmICFNSU5JQlVGRkVSX1dJTkRPV19PTkxZX1AgKHRmKQog CSAgICAgICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKHRmKQogCSAgICAgICYmICFGUkFNRV9U T09MVElQX1AgKHRmKQogCSAgICAgICYmIChGUkFNRV9WSVNJQkxFX1AgKHRmKSB8fCBGUkFN RV9JQ09OSUZJRURfUCAodGYpKSkKQEAgLTEzOTExLDcgKzEzOTA0LDcgQEAgc3RhdGljIHZv aWQgZGVidWdfbWV0aG9kX2FkZCAoc3RydWN0IHdpbmRvdyAqLCBjaGFyIGNvbnN0ICosIC4u LikKICAgYm9vbCBjb25zaWRlcl9hbGxfd2luZG93c19wOwoKICAgLyogVHJ1ZSBtZWFucyBy ZWRpc3BsYXkgaGFzIHRvIHJlZGlzcGxheSB0aGUgbWluaXdpbmRvdy4gICovCi0gIGJvb2wg dXBkYXRlX21pbml3aW5kb3dfcCA9IGZhbHNlOworICBib29sIHVwZGF0ZV9lY2hvX3dpbmRv d19wID0gZmFsc2U7CgogICBUUkFDRSAoKHN0ZGVyciwgInJlZGlzcGxheV9pbnRlcm5hbCAl ZFxuIiwgcmVkaXNwbGF5aW5nX3ApKTsKCkBAIC0xNDA3MSw3ICsxNDA2NCw3IEBAIHN0YXRp YyB2b2lkIGRlYnVnX21ldGhvZF9hZGQgKHN0cnVjdCB3aW5kb3cgKiwgY2hhciBjb25zdCAq LCAuLi4pCiAJICAmJiBtaW5pYnVmX2xldmVsID09IDAKIAkgIC8qIElmIHRoZSBtaW5pLXdp bmRvdyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQsIHRoaXMgbWVhbnMgdGhlCiAJICAgICBlY2hv LWFyZWEgZG9lc24ndCBzaG93IHRocm91Z2guICAqLwotCSAgJiYgIU1JTklfV0lORE9XX1Ag KFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdykpKSkKKwkgICYmICFNSU5JQlVGRkVSX1dJTkRP V19QIChYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpKSkpCiAgICAgewogICAgICAgZWNob19h cmVhX2Rpc3BsYXkgKGZhbHNlKTsKCkBAIC0xNDA5MCw3ICsxNDA4Myw3IEBAIHN0YXRpYyB2 b2lkIGRlYnVnX21ldGhvZF9hZGQgKHN0cnVjdCB3aW5kb3cgKiwgY2hhciBjb25zdCAqLCAu Li4pCiAJfQoKICAgICAgIGlmIChtZXNzYWdlX2NsZWFyZWRfcCkKLQl1cGRhdGVfbWluaXdp bmRvd19wID0gdHJ1ZTsKKwl1cGRhdGVfZWNob193aW5kb3dfcCA9IHRydWU7CgogICAgICAg bXVzdF9maW5pc2ggPSB0cnVlOwoKQEAgLTE0MTAxLDcgKzE0MDk0LDggQEAgc3RhdGljIHZv aWQgZGVidWdfbWV0aG9kX2FkZCAoc3RydWN0IHdpbmRvdyAqLCBjaGFyIGNvbnN0ICosIC4u LikKICAgICAgIGlmICghZGlzcGxheV9sYXN0X2Rpc3BsYXllZF9tZXNzYWdlX3ApCiAJbWVz c2FnZV9jbGVhcmVkX3AgPSBmYWxzZTsKICAgICB9Ci0gIGVsc2UgaWYgKEVRIChzZWxlY3Rl ZF93aW5kb3csIG1pbmlidWZfd2luZG93KQorICBlbHNlIGlmICgoRVEgKHNlbGVjdGVkX3dp bmRvdywgbWluaWJ1Zl93aW5kb3cpCisJICAgIHx8IEVRIChzZWxlY3RlZF93aW5kb3csIGVj aG9fYXJlYV93aW5kb3cpKQogCSAgICYmIChjdXJyZW50X2J1ZmZlci0+Y2xpcF9jaGFuZ2Vk IHx8IHdpbmRvd19vdXRkYXRlZCAodykpCiAJICAgJiYgcmVzaXplX21pbmlfd2luZG93ICh3 LCBmYWxzZSkpCiAgICAgewpAQCAtMTQxODQsNyArMTQxNzgsNyBAQCBzdGF0aWMgdm9pZCBk ZWJ1Z19tZXRob2RfYWRkIChzdHJ1Y3Qgd2luZG93ICosIGNoYXIgY29uc3QgKiwgLi4uKQog CSAgICAgIHx8IEZFVENIX0JZVEUgKEJZVEVQT1MgKHRsYnVmcG9zKSkgPT0gJ1xuJykpCiAJ LyogRm9ybWVyIGNvbnRpbnVhdGlvbiBsaW5lIGhhcyBkaXNhcHBlYXJlZCBieSBiZWNvbWlu ZyBlbXB0eS4gICovCiAJZ290byBjYW5jZWw7Ci0gICAgICBlbHNlIGlmICh3aW5kb3dfb3V0 ZGF0ZWQgKHcpIHx8IE1JTklfV0lORE9XX1AgKHcpKQorICAgICAgZWxzZSBpZiAod2luZG93 X291dGRhdGVkICh3KSB8fCBNSU5JQlVGRkVSX1dJTkRPV19QICh3KSkKIAl7CiAJICAvKiBX ZSBoYXZlIHRvIGhhbmRsZSB0aGUgY2FzZSBvZiBjb250aW51YXRpb24gYXJvdW5kIGEKIAkg ICAgIHdpZGUtY29sdW1uIGNoYXJhY3RlciAoc2VlIHRoZSBjb21tZW50IGluIGluZGVudC5j IGFyb3VuZApAQCAtMTQ1MTMsMTAgKzE0NTA3LDExIEBAIHN0YXRpYyB2b2lkIGRlYnVnX21l dGhvZF9hZGQgKHN0cnVjdCB3aW5kb3cgKiwgY2hhciBjb25zdCAqLCAuLi4pCiAgICAgICBp bnRlcm5hbF9jb25kaXRpb25fY2FzZV8xIChyZWRpc3BsYXlfd2luZG93XzEsIHNlbGVjdGVk X3dpbmRvdywKIAkJCQkgbGlzdF9vZl9lcnJvciwKIAkJCQkgcmVkaXNwbGF5X3dpbmRvd19l cnJvcik7Ci0gICAgICBpZiAodXBkYXRlX21pbml3aW5kb3dfcCkKLQlpbnRlcm5hbF9jb25k aXRpb25fY2FzZV8xIChyZWRpc3BsYXlfd2luZG93XzEsCi0JCQkJICAgRlJBTUVfTUlOSUJV Rl9XSU5ET1cgKHNmKSwgbGlzdF9vZl9lcnJvciwKLQkJCQkgICByZWRpc3BsYXlfd2luZG93 X2Vycm9yKTsKKyAgICAgIGlmICh1cGRhdGVfZWNob193aW5kb3dfcCkKKwkgIGlmIChXSU5E T1dfTElWRV9QIChFQ0hPX1dJTkRPVyAoc2YpKSkKKwkgICAgaW50ZXJuYWxfY29uZGl0aW9u X2Nhc2VfMSAocmVkaXNwbGF5X3dpbmRvd18xLAorCQkJCSAgICAgICBFQ0hPX1dJTkRPVyAo c2YpLCBsaXN0X29mX2Vycm9yLAorCQkJCSAgICAgICByZWRpc3BsYXlfd2luZG93X2Vycm9y KTsKCiAgICAgICAvKiBDb21wYXJlIGRlc2lyZWQgYW5kIGN1cnJlbnQgbWF0cmljZXMsIHBl cmZvcm0gb3V0cHV0LiAgKi8KCkBAIC0xNDU2OSwyMCArMTQ1NjQsMjQgQEAgc3RhdGljIHZv aWQgZGVidWdfbWV0aG9kX2FkZCAoc3RydWN0IHdpbmRvdyAqLCBjaGFyIGNvbnN0ICosIC4u LikKIAkgaGF2ZSBwdXQgdGV4dCBvbiBhIGZyYW1lIG90aGVyIHRoYW4gdGhlIHNlbGVjdGVk IG9uZSwgc28gdGhlCiAJIGFib3ZlIGNhbGwgdG8gdXBkYXRlX2ZyYW1lIHdvdWxkIG5vdCBo YXZlIGNhdWdodCBpdC4gIENhdGNoCiAJIGl0IGhlcmUuICAqLwotICAgICAgTGlzcF9PYmpl Y3QgbWluaV93aW5kb3cgPSBGUkFNRV9NSU5JQlVGX1dJTkRPVyAoc2YpOwotICAgICAgc3Ry dWN0IGZyYW1lICptaW5pX2ZyYW1lID0gWEZSQU1FIChXSU5ET1dfRlJBTUUgKFhXSU5ET1cg KG1pbmlfd2luZG93KSkpOworICAgICAgTGlzcF9PYmplY3QgbWluaV93aW5kb3cgPSBNSU5J QlVGRkVSX1dJTkRPVyAoc2YpOwoKLSAgICAgIGlmIChtaW5pX2ZyYW1lICE9IHNmICYmIEZS QU1FX1dJTkRPV19QIChtaW5pX2ZyYW1lKSkKKyAgICAgIGlmIChXSU5ET1dfTElWRV9QICht aW5pX3dpbmRvdykpCiAJewotCSAgWFdJTkRPVyAobWluaV93aW5kb3cpLT5tdXN0X2JlX3Vw ZGF0ZWRfcCA9IHRydWU7Ci0JICBwZW5kaW5nIHw9IHVwZGF0ZV9mcmFtZSAobWluaV9mcmFt ZSwgZmFsc2UsIGZhbHNlKTsKLQkgIG1pbmlfZnJhbWUtPmN1cnNvcl90eXBlX2NoYW5nZWQg PSBmYWxzZTsKLSAgICAgICAgICBpZiAoIXBlbmRpbmcgJiYgaHNjcm9sbF9yZXRyaWVzIDw9 IE1BWF9IU0NST0xMX1JFVFJJRVMKLSAgICAgICAgICAgICAgJiYgaHNjcm9sbF93aW5kb3dz IChtaW5pX3dpbmRvdykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGhzY3JvbGxf cmV0cmllcysrOwotICAgICAgICAgICAgICBnb3RvIHJldHJ5OwotICAgICAgICAgICAgfQor CSAgc3RydWN0IGZyYW1lICptaW5pX2ZyYW1lID0gWEZSQU1FIChXSU5ET1dfRlJBTUUgKFhX SU5ET1cgKG1pbmlfd2luZG93KSkpOworCisJICBpZiAobWluaV9mcmFtZSAhPSBzZiAmJiBG UkFNRV9XSU5ET1dfUCAobWluaV9mcmFtZSkpCisJICAgIHsKKwkgICAgICBYV0lORE9XICht aW5pX3dpbmRvdyktPm11c3RfYmVfdXBkYXRlZF9wID0gdHJ1ZTsKKwkgICAgICBwZW5kaW5n IHw9IHVwZGF0ZV9mcmFtZSAobWluaV9mcmFtZSwgZmFsc2UsIGZhbHNlKTsKKwkgICAgICBt aW5pX2ZyYW1lLT5jdXJzb3JfdHlwZV9jaGFuZ2VkID0gZmFsc2U7CisJICAgICAgaWYgKCFw ZW5kaW5nICYmIGhzY3JvbGxfcmV0cmllcyA8PSBNQVhfSFNDUk9MTF9SRVRSSUVTCisJCSAg JiYgaHNjcm9sbF93aW5kb3dzIChtaW5pX3dpbmRvdykpCisJCXsKKwkJICBoc2Nyb2xsX3Jl dHJpZXMrKzsKKwkJICBnb3RvIHJldHJ5OworCQl9CisJICAgIH0KIAl9CiAgICAgfQoKQEAg LTE2NDkwLDggKzE2NDg5LDkgQEAgZW51bQogICAgICB2aXNpYmxlIHJlZ2lvbi4KCiAgICAg IE5vdGUgdGhhdCBtaW5pLWJ1ZmZlcnMgc29tZXRpbWVzIGFyZW4ndCBkaXNwbGF5aW5nIGFu eSB0ZXh0LiAgKi8KLSAgaWYgKCFNSU5JX1dJTkRPV19QICh3KQotICAgICAgfHwgKHcgPT0g WFdJTkRPVyAobWluaWJ1Zl93aW5kb3cpCisgIGlmICghTUlOSUJVRkZFUl9XSU5ET1dfUCAo dykKKyAgICAgIHx8IChXSU5ET1dfTElWRV9QIChtaW5pYnVmX3dpbmRvdykKKwkgICYmIHcg PT0gWFdJTkRPVyAobWluaWJ1Zl93aW5kb3cpCiAJICAmJiBOSUxQIChlY2hvX2FyZWFfYnVm ZmVyWzBdKSkpCiAgICAgewogICAgICAgc3RydWN0IGJ1ZmZlciAqYnVmID0gWEJVRkZFUiAo dy0+Y29udGVudHMpOwpAQCAtMTY1MjEsOSArMTY1MjEsNyBAQCBlbnVtCiB7CiAgIGludCBz dGFydCwgZW5kLCB3aG9sZSwgcG9ydGlvbjsKCi0gIGlmICghTUlOSV9XSU5ET1dfUCAodykK LSAgICAgIHx8ICh3ID09IFhXSU5ET1cgKG1pbmlidWZfd2luZG93KQotCSAgJiYgTklMUCAo ZWNob19hcmVhX2J1ZmZlclswXSkpKQorICBpZiAoIU1JTklfV0lORE9XX1AgKHcpKQogICAg IHsKICAgICAgIHN0cnVjdCBidWZmZXIgKmIgPSBYQlVGRkVSICh3LT5jb250ZW50cyk7CiAg ICAgICBzdHJ1Y3QgYnVmZmVyICpvbGRfYnVmZmVyID0gTlVMTDsKQEAgLTE2Njk3LDcgKzE2 Njk1LDggQEAgZW51bQoKICAgaWYgKE1JTklfV0lORE9XX1AgKHcpKQogICAgIHsKLSAgICAg IGlmICh3ID09IFhXSU5ET1cgKGVjaG9fYXJlYV93aW5kb3cpCisgICAgICBpZiAoV0lORE9X X0xJVkVfUCAoZWNob19hcmVhX3dpbmRvdykKKwkgICYmIHcgPT0gWFdJTkRPVyAoZWNob19h cmVhX3dpbmRvdykKIAkgICYmICFOSUxQIChlY2hvX2FyZWFfYnVmZmVyWzBdKSkKIAl7CiAJ ICBpZiAodXBkYXRlX21vZGVfbGluZSkKQEAgLTE2NzA4LDcgKzE2NzA3LDggQEAgZW51bQog CSAgICAvKiBXZSd2ZSBhbHJlYWR5IGRpc3BsYXllZCB0aGUgZWNobyBhcmVhIGdseXBocyBp biB0aGlzIHdpbmRvdy4gICovCiAJICAgIGdvdG8gZmluaXNoX3Njcm9sbF9iYXJzOwogCX0K LSAgICAgIGVsc2UgaWYgKCh3ICE9IFhXSU5ET1cgKG1pbmlidWZfd2luZG93KQorICAgICAg ZWxzZSBpZiAoKChXSU5ET1dfTElWRV9QIChtaW5pYnVmX3dpbmRvdykKKwkJICYmIHcgIT0g WFdJTkRPVyAobWluaWJ1Zl93aW5kb3cpKQogCQl8fCBtaW5pYnVmX2xldmVsID09IDApCiAJ ICAgICAgIC8qIFdoZW4gYnVmZmVyIGlzIG5vbmVtcHR5LCByZWRpc3BsYXkgd2luZG93IG5v cm1hbGx5LiAgKi8KIAkgICAgICAgJiYgQlVGX1ogKFhCVUZGRVIgKHctPmNvbnRlbnRzKSkg PT0gQlVGX0JFRyAoWEJVRkZFUiAody0+Y29udGVudHMpKQpAQCAtMTcxMzIsNyArMTcxMzIs NyBAQCBlbnVtCiAJIHRoZSBtb3VzZSwgcmVzdWx0aW5nIGluIGFuIHVud2FudGVkIG1vdXNl LW1vdmVtZW50IHJhdGhlcgogCSB0aGFuIGEgc2ltcGxlIG1vdXNlLWNsaWNrLiAgKi8KICAg ICAgIGlmICghdy0+c3RhcnRfYXRfbGluZV9iZWcKLQkgICYmIE5JTFAgKGRvX21vdXNlX3Ry YWNraW5nKQorCSAgJiYgTklMUCAodHJhY2tfbW91c2UpCiAgICAgICAJICAmJiBDSEFSUE9T IChzdGFydHApID4gQkVHVgogCSAgJiYgQ0hBUlBPUyAoc3RhcnRwKSA+IEJFRyArIGJlZ191 bmNoYW5nZWQKIAkgICYmIENIQVJQT1MgKHN0YXJ0cCkgPD0gWiAtIGVuZF91bmNoYW5nZWQK QEAgLTE3NjQyLDE3ICsxNzY0MiwxMiBAQCBlbnVtCiAgICAgICBibG9ja19pbnB1dCAoKTsK ICAgICAgIGlmIChkcmF3X3dpbmRvd19mcmluZ2VzICh3LCB0cnVlKSkKIAl7Ci0JICBpZiAo V0lORE9XX1JJR0hUX0RJVklERVJfV0lEVEggKHcpKQotCSAgICB4X2RyYXdfcmlnaHRfZGl2 aWRlciAodyk7Ci0JICBlbHNlCisJICBpZiAoIVdJTkRPV19SSUdIVF9ESVZJREVSX1dJRFRI ICh3KSkKIAkgICAgeF9kcmF3X3ZlcnRpY2FsX2JvcmRlciAodyk7CiAJfQogICAgICAgdW5i bG9ja19pbnB1dCAoKTsKICAgICAgIHVwZGF0ZV9lbmQgKGYpOwogICAgIH0KLQotICBpZiAo V0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3KSkKLSAgICB4X2RyYXdfYm90dG9tX2Rp dmlkZXIgKHcpOwogI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSAqLwoKICAgLyogV2Ug Z28gdG8gdGhpcyBsYWJlbCwgd2l0aCBmb250c19jaGFuZ2VkIHNldCwgaWYgaXQgaXMKQEAg LTE3NjYxLDkgKzE3NjU2LDEwIEBAIGVudW0KICAgICAgYmVjYXVzZSB0aGUgbG9vcCBpbiBy ZWRpc3BsYXlfaW50ZXJuYWwgZXhwZWN0cyB0aGF0LiAgKi8KICBuZWVkX2xhcmdlcl9tYXRy aWNlczoKICAgOworCiAgZmluaXNoX3Njcm9sbF9iYXJzOgoKLSAgIGlmIChXSU5ET1dfSEFT X1ZFUlRJQ0FMX1NDUk9MTF9CQVIgKHcpIHx8IFdJTkRPV19IQVNfSE9SSVpPTlRBTF9TQ1JP TExfQkFSICh3KSkKKyAgaWYgKFdJTkRPV19IQVNfVkVSVElDQUxfU0NST0xMX0JBUiAodykg fHwgV0lORE9XX0hBU19IT1JJWk9OVEFMX1NDUk9MTF9CQVIgKHcpKQogICAgIHsKICAgICAg IGlmIChXSU5ET1dfSEFTX1ZFUlRJQ0FMX1NDUk9MTF9CQVIgKHcpKQogCS8qIFNldCB0aGUg dGh1bWIncyBwb3NpdGlvbiBhbmQgc2l6ZS4gICovCkBAIC0xNzY3OSw2ICsxNzY3NSwxMyBA QCBlbnVtCiAgICAgICAgICgqRlJBTUVfVEVSTUlOQUwgKGYpLT5yZWRlZW1fc2Nyb2xsX2Jh cl9ob29rKSAodyk7CiAgICAgfQoKKyNpZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KKyBpZiAo V0lORE9XX1JJR0hUX0RJVklERVJfV0lEVEggKHcpKQorICAgeF9kcmF3X3JpZ2h0X2Rpdmlk ZXIgKHcpOworIGlmIChXSU5ET1dfQk9UVE9NX0RJVklERVJfV0lEVEggKHcpKQorICAgeF9k cmF3X2JvdHRvbV9kaXZpZGVyICh3KTsKKyNlbmRpZiAvKiBIQVZFX1dJTkRPV19TWVNURU0g Ki8KKwogICAvKiBSZXN0b3JlIGN1cnJlbnRfYnVmZmVyIGFuZCB2YWx1ZSBvZiBwb2ludCBp biBpdC4gIFRoZSB3aW5kb3cKICAgICAgdXBkYXRlIG1heSBoYXZlIGNoYW5nZWQgdGhlIGJ1 ZmZlciwgc28gZmlyc3QgbWFrZSBzdXJlIGBvcG9pbnQnCiAgICAgIGlzIHN0aWxsIHZhbGlk IChCdWcjNjE3NykuICAqLwpAQCAtMTc3NDMsOCArMTc3NDYsNyBAQCBlbnVtCiAgIHB0cmRp ZmZfdCBpdF9jaGFycG9zID0gSVRfQ0hBUlBPUyAoaXQpOwoKICAgLyogRG9uJ3QgbGV0IHRo ZSBjdXJzb3IgZW5kIGluIHRoZSBzY3JvbGwgbWFyZ2lucy4gICovCi0gIGlmICgoZmxhZ3Mg JiBUUllfV0lORE9XX0NIRUNLX01BUkdJTlMpCi0gICAgICAmJiAhTUlOSV9XSU5ET1dfUCAo dykpCisgIGlmICgoZmxhZ3MgJiBUUllfV0lORE9XX0NIRUNLX01BUkdJTlMpICYmICFNSU5J X1dJTkRPV19QICh3KSkKICAgICB7CiAgICAgICBpbnQgdGhpc19zY3JvbGxfbWFyZ2luID0g d2luZG93X3Njcm9sbF9tYXJnaW4gKHcsIE1BUkdJTl9JTl9QSVhFTFMpOwogICAgICAgc3Rh cnRfZGlzcGxheSAoJml0LCB3LCBwb3MpOwpAQCAtMjE1MzgsNyArMjE1NDAsNyBAQCBzdHJ1 Y3QgZ2x5cGhfcm93ICoKIAkJcm93LT5kaXNwbGF5c190ZXh0X3AgPSBmYWxzZTsKCiAJICAg ICAgaWYgKCFOSUxQIChCVkFSIChYQlVGRkVSIChpdC0+dy0+Y29udGVudHMpLCBpbmRpY2F0 ZV9lbXB0eV9saW5lcykpCi0JCSAgJiYgKCFNSU5JX1dJTkRPV19QIChpdC0+dykpKQorCQkg ICYmICFNSU5JX1dJTkRPV19QIChpdC0+dykpCiAJCXJvdy0+aW5kaWNhdGVfZW1wdHlfbGlu ZV9wID0gdHJ1ZTsKIAkgICAgfQoKQEAgLTI5MTkzLDExICsyOTE5NSwxOSBAQCBzdHJ1Y3Qg Zm9udCAqCiAgIGJvb2wgbm9uX3NlbGVjdGVkID0gZmFsc2U7CgogICAqYWN0aXZlX2N1cnNv ciA9IHRydWU7CisgIG5vbl9zZWxlY3RlZCA9IGZhbHNlOworCisgIC8qIEVjaG8gd2luZG93 LiAgKi8KKyAgaWYgKEVDSE9fV0lORE9XX1AgKHcpICYmICFNSU5JQlVGRkVSX1dJTkRPV19Q ICh3KSkKKyAgICB7CisgICAgICAqYWN0aXZlX2N1cnNvciA9IGZhbHNlOwoKLSAgLyogRWNo byBhcmVhICovCi0gIGlmIChjdXJzb3JfaW5fZWNob19hcmVhCi0gICAgICAmJiBGUkFNRV9I QVNfTUlOSUJVRl9QIChmKQotICAgICAgJiYgRVEgKEZSQU1FX01JTklCVUZfV0lORE9XIChm KSwgZWNob19hcmVhX3dpbmRvdykpCisgICAgICByZXR1cm4gTk9fQ1VSU09SOworICAgIH0K KyAgLyogRWNobyBhcmVhLiAgKi8KKyAgZWxzZSBpZiAoY3Vyc29yX2luX2VjaG9fYXJlYQor ICAgICAgJiYgTUlOSUJVRkZFUl9XSU5ET1dfTE9DQUxfUCAoZikKKyAgICAgICYmIEVRIChN SU5JQlVGRkVSX1dJTkRPVyAoZiksIGVjaG9fYXJlYV93aW5kb3cpKQogICAgIHsKICAgICAg IGlmICh3ID09IFhXSU5ET1cgKGVjaG9fYXJlYV93aW5kb3cpKQogCXsKQEAgLTI5MjIwLDcg KzI5MjMwLDcgQEAgc3RydWN0IGZvbnQgKgogICAgIHsKICAgICAgICphY3RpdmVfY3Vyc29y ID0gZmFsc2U7CgotICAgICAgaWYgKE1JTklfV0lORE9XX1AgKHcpICYmIG1pbmlidWZfbGV2 ZWwgPT0gMCkKKyAgICAgIGlmICgoTUlOSUJVRkZFUl9XSU5ET1dfUCAodykgJiYgbWluaWJ1 Zl9sZXZlbCA9PSAwKSB8fCBFQ0hPX1dJTkRPV19QICh3KSkKIAlyZXR1cm4gTk9fQ1VSU09S OwoKICAgICAgIG5vbl9zZWxlY3RlZCA9IHRydWU7CkBAIC0yOTkzNSw3ICsyOTk0NSw3IEBA IHN0cnVjdCBmb250ICoKCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAgIC8qIENoYW5n ZSB0aGUgbW91c2UgY3Vyc29yLiAgKi8KLSAgaWYgKEZSQU1FX1dJTkRPV19QIChmKSAmJiBO SUxQIChkb19tb3VzZV90cmFja2luZykpCisgIGlmIChGUkFNRV9XSU5ET1dfUCAoZikgJiYg TklMUCAodHJhY2tfbW91c2UpKQogICAgIHsKICNpZiAhIGRlZmluZWQgKFVTRV9HVEspICYm ICEgZGVmaW5lZCAoSEFWRV9OUykKICAgICAgIGlmIChkcmF3ID09IERSQVdfTk9STUFMX1RF WFQKQEAgLTMwODgyLDcgKzMwODkyLDcgQEAgQSBwb2x5Z29uIGlzIGEgY29ucyAocG9seSAu IFt4MCB5MCB4MSB5MSAuLi5dKSB3aGVyZSBlYWNoIHBhaXIgaW4gdGhlCiAgICAgcmV0dXJu OwoKICAgLyogRG8gbm90IGNoYW5nZSBjdXJzb3Igc2hhcGUgd2hpbGUgZHJhZ2dpbmcgbW91 c2UuICAqLwotICBpZiAoRVEgKGRvX21vdXNlX3RyYWNraW5nLCBRZHJhZ2dpbmcpKQorICBp ZiAoRVEgKHRyYWNrX21vdXNlLCBRZHJhZ2dpbmcpIHx8IEVRICh0cmFja19tb3VzZSwgUWRy b3BwaW5nKSkKICAgICByZXR1cm47CgogICBpZiAoIU5JTFAgKHBvaW50ZXIpKQpAQCAtMzEz ODEsNyArMzEzOTEsMTAgQEAgQSBwb2x5Z29uIGlzIGEgY29ucyAocG9seSAuIFt4MCB5MCB4 MSB5MSAuLi5dKSB3aGVyZSBlYWNoIHBhaXIgaW4gdGhlCiAgICAgICBnb3RvIHNldF9jdXJz b3I7CiAgICAgfQogICBlbHNlIGlmIChwYXJ0ID09IE9OX0JPVFRPTV9ESVZJREVSKQotICAg IGlmICghIFdJTkRPV19CT1RUT01NT1NUX1AgKHcpCisgICAgaWYgKCghV0lORE9XX0JPVFRP TU1PU1RfUCAodykKKwkgJiYgKCFNSU5JQlVGRkVSX1dJTkRPV19QICh3KQorCSAgICAgfHwg bWluaWJ1Zl9sZXZlbAorCSAgICAgfHwgTklMUCAoVnJlc2l6ZV9taW5pX3dpbmRvd3MpKSkK IAl8fCBtaW5pYnVmX2xldmVsCiAJfHwgTklMUCAoVnJlc2l6ZV9taW5pX3dpbmRvd3MpKQog ICAgICAgewpAQCAtMzIwNzcsOSArMzIwOTAsNyBAQCBBIHBvbHlnb24gaXMgYSBjb25zIChw b2x5IC4gW3gwIHkwIHgxIHkxIC4uLl0pIHdoZXJlIGVhY2ggcGFpciBpbiB0aGUKIHsKICAg c3RydWN0IGZyYW1lICpmID0gV0lORE9XX1hGUkFNRSAodyk7CgotICBpZiAody0+bWluaSB8 fCB3LT5wc2V1ZG9fd2luZG93X3ApCi0gICAgcmV0dXJuOwotICBlbHNlIGlmIChXSU5ET1df UklHSFRfRElWSURFUl9XSURUSCAodykpCisgIGlmIChXSU5ET1dfUklHSFRfRElWSURFUl9X SURUSCAodykpCiAgICAgewogICAgICAgaW50IHgwID0gV0lORE9XX1JJR0hUX0VER0VfWCAo dykgLSBXSU5ET1dfUklHSFRfRElWSURFUl9XSURUSCAodyk7CiAgICAgICBpbnQgeDEgPSBX SU5ET1dfUklHSFRfRURHRV9YICh3KTsKQEAgLTMyMTAzLDkgKzMyMTE0LDcgQEAgQSBwb2x5 Z29uIGlzIGEgY29ucyAocG9seSAuIFt4MCB5MCB4MSB5MSAuLi5dKSB3aGVyZSBlYWNoIHBh aXIgaW4gdGhlCiB7CiAgIHN0cnVjdCBmcmFtZSAqZiA9IFhGUkFNRSAoV0lORE9XX0ZSQU1F ICh3KSk7CgotICBpZiAody0+bWluaSB8fCB3LT5wc2V1ZG9fd2luZG93X3ApCi0gICAgcmV0 dXJuOwotICBlbHNlIGlmIChXSU5ET1dfQk9UVE9NX0RJVklERVJfV0lEVEggKHcpKQorICBp ZiAoV0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3KSkKICAgICB7CiAgICAgICBpbnQg eDAgPSBXSU5ET1dfTEVGVF9FREdFX1ggKHcpOwogICAgICAgaW50IHgxID0gV0lORE9XX1JJ R0hUX0VER0VfWCAodyk7CkBAIC0zMjU5Myw2ICszMjYwMiw3IEBAIEEgcG9seWdvbiBpcyBh IGNvbnMgKHBvbHkgLiBbeDAgeTAgeDEgeTEgLi4uXSkgd2hlcmUgZWFjaCBwYWlyIGluIHRo ZQogICAvKiBhbHNvIFF0ZXh0ICovCgogICBERUZTWU0gKFFkcmFnZ2luZywgImRyYWdnaW5n Iik7CisgIERFRlNZTSAoUWRyb3BwaW5nLCAiZHJvcHBpbmciKTsKCiAgIERFRlNZTSAoUWlu aGliaXRfZnJlZV9yZWFsaXplZF9mYWNlcywgImluaGliaXQtZnJlZS1yZWFsaXplZC1mYWNl cyIpOwoKQEAgLTMyOTUwLDggKzMyOTYwLDkgQEAgbWFrZSBzdXJlIHRoYXQgKDEpIHlvdXIg d2luZG93IG1hbmFnZXIgaGFzIGZvY3VzIGZvbGxvdyB0aGUgbW91c2UgYW5kCgogICBERUZW QVJfTElTUCAoIm1heC1taW5pLXdpbmRvdy1oZWlnaHQiLCBWbWF4X21pbmlfd2luZG93X2hl aWdodCwKICAgICBkb2M6IC8qIE1heGltdW0gaGVpZ2h0IGZvciByZXNpemluZyBtaW5pLXdp bmRvd3MgKHRoZSBtaW5pYnVmZmVyIGFuZCB0aGUgZWNobyBhcmVhKS4KLUlmIGEgZmxvYXQs IGl0IHNwZWNpZmllcyBhIGZyYWN0aW9uIG9mIHRoZSBtaW5pLXdpbmRvdyBmcmFtZSdzIGhl aWdodC4KLUlmIGFuIGludGVnZXIsIGl0IHNwZWNpZmllcyBhIG51bWJlciBvZiBsaW5lcy4g ICovKTsKK0lmIGEgZmxvYXQsIGl0IHNwZWNpZmllcyBhIGZyYWN0aW9uIG9mIHRoZSBpbm5l ciBoZWlnaHQgb2YgdGhlCittaW5pLXdpbmRvdydzIGZyYW1lLiAgSWYgYW4gaW50ZWdlciwg aXQgc3BlY2lmaWVzIGEgbnVtYmVyIG9mCitsaW5lcy4gICovKTsKICAgVm1heF9taW5pX3dp bmRvd19oZWlnaHQgPSBtYWtlX2Zsb2F0ICgwLjI1KTsKCiAgIERFRlZBUl9MSVNQICgicmVz aXplLW1pbmktd2luZG93cyIsIFZyZXNpemVfbWluaV93aW5kb3dzLApAQCAtMzI5NjgsNiAr MzI5NzksMTAgQEAgbWFrZSBzdXJlIHRoYXQgKDEpIHlvdXIgd2luZG93IG1hbmFnZXIgaGFz IGZvY3VzIGZvbGxvdyB0aGUgbW91c2UgYW5kCiAgICAgIGR1cmluZyBsb2FkdXAuICAqLwog ICBWcmVzaXplX21pbmlfd2luZG93cyA9IFFuaWw7CgorICBERUZWQVJfQk9PTCAoImZpdC1t aW5pYnVmZmVyLW9ubHktZnJhbWVzIiwgVmZpdF9taW5pYnVmZmVyX29ubHlfZnJhbWVzLAor ICAgIGRvYzogLyogTm9uLW5pbCBtZWFucyBmaXQgbWluaWJ1ZmZlci1vbmx5IGZyYW1lcyB0 byB0aGVpciBidWZmZXJzLiAgKi8pOworICBWZml0X21pbmlidWZmZXJfb25seV9mcmFtZXMg PSBmYWxzZTsKKwogICBERUZWQVJfTElTUCAoImJsaW5rLWN1cnNvci1hbGlzdCIsIFZibGlu a19jdXJzb3JfYWxpc3QsCiAgICAgZG9jOiAvKiBBbGlzdCBzcGVjaWZ5aW5nIGhvdyB0byBi bGluayB0aGUgY3Vyc29yIG9mZi4KIEVhY2ggZWxlbWVudCBoYXMgdGhlIGZvcm0gKE9OLVNU QVRFIC4gT0ZGLVNUQVRFKS4gIFdoZW5ldmVyIHRoZQpAQCAtMzMwMTQsNyArMzMwMjksNyBA QCBFYWNoIGVsZW1lbnQgaGFzIHRoZSBmb3JtIChPTi1TVEFURSAuIE9GRi1TVEFURSkuICBX aGVuZXZlciB0aGUKICAgVmhzY3JvbGxfc3RlcCA9IG1ha2VfbnVtYmVyICgwKTsKCiAgIERF RlZBUl9CT09MICgibWVzc2FnZS10cnVuY2F0ZS1saW5lcyIsIG1lc3NhZ2VfdHJ1bmNhdGVf bGluZXMsCi0gICAgZG9jOiAvKiBJZiBub24tbmlsLCBtZXNzYWdlcyBhcmUgdHJ1bmNhdGVk IGluc3RlYWQgb2YgcmVzaXppbmcgdGhlIGVjaG8gYXJlYS4KKyAgICBkb2M6IC8qIElmIG5v bi1uaWwsIHRydW5jYXRlIG1lc3NhZ2VzIGluc3RlYWQgb2YgcmVzaXppbmcgdGhlIGVjaG8g d2luZG93LgogQmluZCB0aGlzIGFyb3VuZCBjYWxscyB0byBgbWVzc2FnZScgdG8gbGV0IGl0 IHRha2UgZWZmZWN0LiAgKi8pOwogICBtZXNzYWdlX3RydW5jYXRlX2xpbmVzID0gZmFsc2U7 CgpkaWZmIC0tZ2l0IGEvc3JjL3hmbnMuYyBiL3NyYy94Zm5zLmMKaW5kZXggNjZlNDlkZi4u ZGFlNTI2ZSAxMDA2NDQKLS0tIGEvc3JjL3hmbnMuYworKysgYi9zcmMveGZucy5jCkBAIC0x NTI4LDcgKzE1MjgsNyBAQCBzdHJ1Y3QgbW91c2VfY3Vyc29yX2RhdGEgewogICAgICBtb3N0 IG9mIHRoZSBjb21tYW5kcyB0cnkgdG8gYXBwbHkgdGhlbXNlbHZlcyB0byB0aGUgbWluaWJ1 ZmZlcgogICAgICBmcmFtZSBpdHNlbGYsIGFuZCBnZXQgYW4gZXJyb3IgYmVjYXVzZSB5b3Ug Y2FuJ3Qgc3dpdGNoIGJ1ZmZlcnMKICAgICAgaW4gb3Igc3BsaXQgdGhlIG1pbmlidWZmZXIg d2luZG93LiAgKi8KLSAgaWYgKEZSQU1FX01JTklCVUZfT05MWV9QIChmKSB8fCBGUkFNRV9Q QVJFTlRfRlJBTUUgKGYpKQorICBpZiAoTUlOSUJVRkZFUl9XSU5ET1dfT05MWV9QIChmKSB8 fCBGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHJldHVybjsKCiAgIGlmIChUWVBFX1JB TkdFRF9JTlRFR0VSUCAoaW50LCB2YWx1ZSkpCkBAIC0xNjE0LDcgKzE2MTQsNyBAQCBzdHJ1 Y3QgbW91c2VfY3Vyc29yX2RhdGEgewogICBpbnQgbmxpbmVzOwoKICAgLyogVHJlYXQgdG9v bCBiYXJzIGxpa2UgbWVudSBiYXJzLiAgKi8KLSAgaWYgKEZSQU1FX01JTklCVUZfT05MWV9Q IChmKSkKKyAgaWYgKE1JTklCVUZGRVJfV0lORE9XX09OTFlfUCAoZikpCiAgICAgcmV0dXJu OwoKICAgLyogVXNlIFZBTFVFIG9ubHkgaWYgYW4gaW50ID49IDAuICAqLwpAQCAtMzYyOSwx MCArMzYyOSwyNCBAQCBzdHJ1Y3QgbW91c2VfY3Vyc29yX2RhdGEgewogICAgICAgZiA9IG1h a2VfbWluaWJ1ZmZlcl9mcmFtZSAoKTsKICAgICAgIG1pbmlidWZmZXJfb25seSA9IHRydWU7 CiAgICAgfQotICBlbHNlIGlmIChXSU5ET1dQICh0ZW0pKQorICBlbHNlIGlmIChXSU5ET1dQ ICh0ZW0pIHx8IEVRICh0ZW0sIFFsb29zZSkpCiAgICAgZiA9IG1ha2VfZnJhbWVfd2l0aG91 dF9taW5pYnVmZmVyICh0ZW0sIGtiLCBkaXNwbGF5KTsKKyAgZWxzZSBpZiAoRVEgKHRlbSwg UXRvcCkpCisgICAgZiA9IG1ha2VfZnJhbWUgKFF0b3ApOwogICBlbHNlCi0gICAgZiA9IG1h a2VfZnJhbWUgKHRydWUpOworICAgIGYgPSBtYWtlX2ZyYW1lIChRYm90dG9tKTsKKworICBY U0VURlJBTUUgKGZyYW1lLCBmKTsKKworICBpZiAoRVEgKHRlbSwgUWxvb3NlKSkKKyAgICB7 CisgICAgICAvKiBQcm9jZXNzICdlY2hvLWFyZWEnIHBhcmFtZXRlciBoZXJlIHRvIG1ha2Ug c3VyZSBpdCBnZXRzCisJIGFwcGxpZWQgd2hlbiBhbiBlY2hvIHdpbmRvdyBpcyBuZWVkZWQu ICAqLworICAgICAgdGVtID0geF9nZXRfYXJnIChkcHlpbmZvLCBwYXJtcywgUWVjaG9fYXJl YSwgImVjaG8tYXJlYSIsICJFY2hvLWFyZWEiLAorCQkgICAgICAgUkVTX1RZUEVfU1lNQk9M KTsKKyAgICAgIGlmICghTklMUCAodGVtKSkKKwlzdG9yZV9mcmFtZV9wYXJhbSAoZiwgUWVj aG9fYXJlYSwgdGVtKTsKKyAgICB9CgogICBwYXJlbnRfZnJhbWUgPSB4X2dldF9hcmcgKGRw eWluZm8sIHBhcm1zLCBRcGFyZW50X2ZyYW1lLCBOVUxMLCBOVUxMLAogCQkJICAgIFJFU19U WVBFX1NZTUJPTCk7CkBAIC0zNjY0LDggKzM2NzgsNiBAQCBzdHJ1Y3QgbW91c2VfY3Vyc29y X2RhdGEgewogICBGUkFNRV9PVkVSUklERV9SRURJUkVDVCAoZikgPSBvdmVycmlkZV9yZWRp cmVjdDsKICAgc3RvcmVfZnJhbWVfcGFyYW0gKGYsIFFvdmVycmlkZV9yZWRpcmVjdCwgb3Zl cnJpZGVfcmVkaXJlY3QgPyBRdCA6IFFuaWwpOwoKLSAgWFNFVEZSQU1FIChmcmFtZSwgZik7 Ci0KICAgZi0+dGVybWluYWwgPSBkcHlpbmZvLT50ZXJtaW5hbDsKCiAgIGYtPm91dHB1dF9t ZXRob2QgPSBvdXRwdXRfeF93aW5kb3c7CkBAIC00MDUxLDcgKzQwNjMsNyBAQCBzdHJ1Y3Qg bW91c2VfY3Vyc29yX2RhdGEgewoKICAgLyogSW5pdGlhbGl6ZSBgZGVmYXVsdC1taW5pYnVm ZmVyLWZyYW1lJyBpbiBjYXNlIHRoaXMgaXMgdGhlIGZpcnN0CiAgICAgIGZyYW1lIG9uIHRo aXMgdGVybWluYWwuICAqLwotICBpZiAoRlJBTUVfSEFTX01JTklCVUZfUCAoZikKKyAgaWYg KE1JTklCVUZGRVJfV0lORE9XX0xPQ0FMX1AgKGYpCiAgICAgICAmJiAoIUZSQU1FUCAoS1ZB UiAoa2IsIFZkZWZhdWx0X21pbmlidWZmZXJfZnJhbWUpKQogICAgICAgICAgIHx8ICFGUkFN RV9MSVZFX1AgKFhGUkFNRSAoS1ZBUiAoa2IsIFZkZWZhdWx0X21pbmlidWZmZXJfZnJhbWUp KSkpKQogICAgIGtzZXRfZGVmYXVsdF9taW5pYnVmZmVyX2ZyYW1lIChrYiwgZnJhbWUpOwpA QCAtNjE1Niw3ICs2MTY4LDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZV90aXBfeHkgKHN0cnVj dCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAgICAgZXJyb3IgKCJJbnZh bGlkIGZyYW1lIG5hbWUtLW5vdCBhIHN0cmluZyBvciBuaWwiKTsKCiAgIGZyYW1lID0gUW5p bDsKLSAgZiA9IG1ha2VfZnJhbWUgKGZhbHNlKTsKKyAgZiA9IG1ha2VfZnJhbWUgKFFuaWwp OwogICBmLT53YW50c19tb2RlbGluZSA9IGZhbHNlOwogICBYU0VURlJBTUUgKGZyYW1lLCBm KTsKICAgcmVjb3JkX3Vud2luZF9wcm90ZWN0ICh1bndpbmRfY3JlYXRlX3RpcF9mcmFtZSwg ZnJhbWUpOwpAQCAtNjU1MCw5ICs2NTYyLDkgQEAgc3RhdGljIHZvaWQgY29tcHV0ZV90aXBf eHkgKHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAgKiBIaWRl IGN1cnJlbnRseSB2aXNpYmxlIHRvb2x0aXAgYW5kIGNhbmNlbCBpdHMgdGltZXIuCiAgKgog ICogSWYgR1RLKyBzeXN0ZW0gdG9vbHRpcHMgYXJlIHVzZWQsIHRoaXMgd2lsbCB0cnkgdG8g aGlkZSB0aGUgdG9vbHRpcAotICogcmVmZXJlbmNlZCBieSB0aGUgeF9vdXRwdXQgc3RydWN0 dXJlIG9mIHRvb2x0aXBfbGFzdF9mcmFtZS4gIEZvcgotICogRW1hY3MgdG9vbHRpcHMgdGhp cyB3aWxsIHRyeSB0byBtYWtlIHRvb2x0aXBfZnJhbWUgaW52aXNpYmxlIChpZgotICogREVM RVRFIGlzIGZhbHNlKSBvciBkZWxldGUgdG9vbHRpcF9mcmFtZSAoaWYgREVMRVRFIGlzIHRy dWUpLgorICogcmVmZXJlbmNlZCBieSB0aGUgeF9vdXRwdXQgc3RydWN0dXJlIG9mIHRpcF9s YXN0X2ZyYW1lLiAgRm9yIEVtYWNzCisgKiB0b29sdGlwcyB0aGlzIHdpbGwgdHJ5IHRvIG1h a2UgdGlwX2ZyYW1lIGludmlzaWJsZSAoaWYgREVMRVRFIGlzCisgKiBmYWxzZSkgb3IgZGVs ZXRlIHRpcF9mcmFtZSAoaWYgREVMRVRFIGlzIHRydWUpLgogICoKICAqIFJldHVybiBRdCBp ZiB0aGUgdG9vbHRpcCB3YXMgZWl0aGVyIGRlbGV0ZWQgb3IgbWFkZSBpbnZpc2libGUsIFFu aWwKICAqIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL3NyYy94bWVudS5jIGIvc3JjL3htZW51 LmMKaW5kZXggYTk5ZThhYi4uOTZiZGY2NyAxMDA2NDQKLS0tIGEvc3JjL3htZW51LmMKKysr IGIvc3JjL3htZW51LmMKQEAgLTIyNjksMTEgKzIyNjksMTEgQEAgc3RydWN0IHBvcF9kb3du X21lbnUKICAgICAgIHVseSA9IGRpc3BoZWlnaHQgLSBoZWlnaHQ7CiAgICAgfQogI2lmbmRl ZiBIQVZFX1hfV0lORE9XUwotICBpZiAoRlJBTUVfSEFTX01JTklCVUZfUCAoZikgJiYgdWx5 K2hlaWdodCA+IGRpc3BoZWlnaHQgLSAxKQorICBpZiAoTUlOSUJVRkZFUl9XSU5ET1dfTE9D QUxfUCAoZikgJiYgdWx5K2hlaWdodCA+IGRpc3BoZWlnaHQgLSAxKQogICAgIHsKICAgICAg IC8qIE1vdmUgdGhlIG1lbnUgYXdheSBvZiB0aGUgZWNobyBhcmVhLCB0byBhdm9pZCBvdmVy d3JpdGluZyB0aGUKIAkgbWVudSB3aXRoIGhlbHAgZWNobyBtZXNzYWdlcyBvciB2aWNlIHZl cnNhLiAgKi8KLSAgICAgIGlmIChCVUZGRVJQIChlY2hvX2FyZWFfYnVmZmVyWzBdKSAmJiBX SU5ET1dQIChlY2hvX2FyZWFfd2luZG93KSkKKyAgICAgIGlmIChCVUZGRVJQIChlY2hvX2Fy ZWFfYnVmZmVyWzBdKSAmJiBXSU5ET1dfTElWRV9QIChlY2hvX2FyZWFfd2luZG93KSkKIAl7 CiAJICB5IC09IFdJTkRPV19UT1RBTF9MSU5FUyAoWFdJTkRPVyAoZWNob19hcmVhX3dpbmRv dykpOwogCSAgdWx5IC09IFdJTkRPV19UT1RBTF9MSU5FUyAoWFdJTkRPVyAoZWNob19hcmVh X3dpbmRvdykpOwpkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9zcmMveHRlcm0uYwppbmRl eCBhZjI4ZGFiLi44NmE1MjE0IDEwMDY0NAotLS0gYS9zcmMveHRlcm0uYworKysgYi9zcmMv eHRlcm0uYwpAQCAtNTA0NiwyMCArNTA0NiwxNSBAQCBzdHJ1Y3QgZnJhbWUgKgogICAgICAg LyogRmlndXJlIG91dCB3aGljaCByb290IHdpbmRvdyB3ZSdyZSBvbi4gICovCiAgICAgICBY UXVlcnlQb2ludGVyIChGUkFNRV9YX0RJU1BMQVkgKCpmcCksCiAJCSAgICAgRGVmYXVsdFJv b3RXaW5kb3cgKEZSQU1FX1hfRElTUExBWSAoKmZwKSksCi0KIAkJICAgICAvKiBUaGUgcm9v dCB3aW5kb3cgd2hpY2ggY29udGFpbnMgdGhlIHBvaW50ZXIuICAqLwogCQkgICAgICZyb290 LAotCiAJCSAgICAgLyogVHJhc2ggd2hpY2ggd2UgY2FuJ3QgdHJ1c3QgaWYgdGhlIHBvaW50 ZXIgaXMgb24KIAkJCWEgZGlmZmVyZW50IHNjcmVlbi4gICovCiAJCSAgICAgJmR1bW15X3dp bmRvdywKLQogCQkgICAgIC8qIFRoZSBwb3NpdGlvbiBvbiB0aGF0IHJvb3Qgd2luZG93LiAg Ki8KIAkJICAgICAmcm9vdF94LCAmcm9vdF95LAotCiAJCSAgICAgLyogTW9yZSB0cmFzaCB3 ZSBjYW4ndCB0cnVzdC4gICovCiAJCSAgICAgJmR1bW15LCAmZHVtbXksCi0KIAkJICAgICAv KiBNb2RpZmllciBrZXlzIGFuZCBwb2ludGVyIGJ1dHRvbnMsIGFib3V0IHdoaWNoCiAJCQl3 ZSBkb24ndCBjYXJlLiAgKi8KIAkJICAgICAodW5zaWduZWQgaW50ICopICZkdW1teSk7CkBA IC01MDgyLDIxICs1MDc3LDE3IEBAIHN0cnVjdCBmcmFtZSAqCgogCXhfY2F0Y2hfZXJyb3Jz IChGUkFNRV9YX0RJU1BMQVkgKCpmcCkpOwoKLQlpZiAoeF9tb3VzZV9ncmFiYmVkIChkcHlp bmZvKSkKKwlpZiAoeF9tb3VzZV9ncmFiYmVkIChkcHlpbmZvKSAmJiAhRVEgKHRyYWNrX21v dXNlLCBRZHJvcHBpbmcpKQogCSAgewogCSAgICAvKiBJZiBtb3VzZSB3YXMgZ3JhYmJlZCBv biBhIGZyYW1lLCBnaXZlIGNvb3JkcyBmb3IgdGhhdCBmcmFtZQogCSAgICAgICBldmVuIGlm IHRoZSBtb3VzZSBpcyBub3cgb3V0c2lkZSBpdC4gICovCiAJICAgIFhUcmFuc2xhdGVDb29y ZGluYXRlcyAoRlJBTUVfWF9ESVNQTEFZICgqZnApLAotCiAJCQkJICAgLyogRnJvbS13aW5k b3cuICAqLwogCQkJCSAgIHJvb3QsCi0KIAkJCQkgICAvKiBUby13aW5kb3cuICAqLwogCQkJ CSAgIEZSQU1FX1hfV0lORE9XIChkcHlpbmZvLT5sYXN0X21vdXNlX2ZyYW1lKSwKLQogCQkJ CSAgIC8qIEZyb20tcG9zaXRpb24sIHRvLXBvc2l0aW9uLiAgKi8KIAkJCQkgICByb290X3gs IHJvb3RfeSwgJndpbl94LCAmd2luX3ksCi0KIAkJCQkgICAvKiBDaGlsZCBvZiB3aW4uICAq LwogCQkJCSAgICZjaGlsZCk7CiAJICAgIGYxID0gZHB5aW5mby0+bGFzdF9tb3VzZV9mcmFt ZTsKQEAgLTUxMDYsMTYgKzUwOTcsMTIgQEAgc3RydWN0IGZyYW1lICoKIAkgICAgd2hpbGUg KHRydWUpCiAJICAgICAgewogCQlYVHJhbnNsYXRlQ29vcmRpbmF0ZXMgKEZSQU1FX1hfRElT UExBWSAoKmZwKSwKLQogCQkJCSAgICAgICAvKiBGcm9tLXdpbmRvdywgdG8td2luZG93LiAg Ki8KIAkJCQkgICAgICAgcm9vdCwgd2luLAotCiAJCQkJICAgICAgIC8qIEZyb20tcG9zaXRp b24sIHRvLXBvc2l0aW9uLiAgKi8KIAkJCQkgICAgICAgcm9vdF94LCByb290X3ksICZ3aW5f eCwgJndpbl95LAotCiAJCQkJICAgICAgIC8qIENoaWxkIG9mIHdpbi4gICovCiAJCQkJICAg ICAgICZjaGlsZCk7Ci0KIAkJaWYgKGNoaWxkID09IE5vbmUgfHwgY2hpbGQgPT0gd2luKQog CQkgIHsKICNpZmRlZiBVU0VfR1RLCkBAIC01MTQ4LDE2ICs1MTM1LDE2IEBAIHN0cnVjdCBm cmFtZSAqCiAJICAgICAgd2luID0gZmlyc3Rfd2luOwogI2VuZGlmCgotCSAgICAvKiBOb3cg d2Uga25vdyB0aGF0OgotCSAgICAgICB3aW4gaXMgdGhlIGlubmVybW9zdCB3aW5kb3cgY29u dGFpbmluZyB0aGUgcG9pbnRlcgotCSAgICAgICAoWFRDIHNheXMgaXQgaGFzIG5vIGNoaWxk IGNvbnRhaW5pbmcgdGhlIHBvaW50ZXIpLAotCSAgICAgICB3aW5feCBhbmQgd2luX3kgYXJl IHRoZSBwb2ludGVyJ3MgcG9zaXRpb24gaW4gaXQKLQkgICAgICAgKFhUQyBkaWQgdGhpcyB0 aGUgbGFzdCB0aW1lIHRocm91Z2gpLCBhbmQKLQkgICAgICAgcGFyZW50X3ggYW5kIHBhcmVu dF95IGFyZSB0aGUgcG9pbnRlcidzIHBvc2l0aW9uIGluIHdpbidzIHBhcmVudC4KLQkgICAg ICAgKFRoZXkgYXJlIHdoYXQgd2luX3ggYW5kIHdpbl95IHdlcmUgd2hlbiB3aW4gd2FzIGNo aWxkLgotCSAgICAgICBJZiB3aW4gaXMgdGhlIHJvb3Qgd2luZG93LCBpdCBoYXMgbm8gcGFy ZW50LCBhbmQKLQkgICAgICAgcGFyZW50X3t4LHl9IGFyZSBpbnZhbGlkLCBidXQgdGhhdCdz IG9rYXksIGJlY2F1c2Ugd2UnbGwKLQkgICAgICAgbmV2ZXIgdXNlIHRoZW0gaW4gdGhhdCBj YXNlLikgICovCisJICAgIC8qIE5vdyB3ZSBrbm93IHRoYXQ6IHdpbiBpcyB0aGUgaW5uZXJt b3N0IHdpbmRvdworCSAgICAgICBjb250YWluaW5nIHRoZSBwb2ludGVyIChYVEMgc2F5cyBp dCBoYXMgbm8gY2hpbGQKKwkgICAgICAgY29udGFpbmluZyB0aGUgcG9pbnRlciksIHdpbl94 IGFuZCB3aW5feSBhcmUgdGhlCisJICAgICAgIHBvaW50ZXIncyBwb3NpdGlvbiBpbiBpdCAo WFRDIGRpZCB0aGlzIHRoZSBsYXN0IHRpbWUKKwkgICAgICAgdGhyb3VnaCksIGFuZCBwYXJl bnRfeCBhbmQgcGFyZW50X3kgYXJlIHRoZSBwb2ludGVyJ3MKKwkgICAgICAgcG9zaXRpb24g aW4gd2luJ3MgcGFyZW50LiAgKFRoZXkgYXJlIHdoYXQgd2luX3ggYW5kCisJICAgICAgIHdp bl95IHdlcmUgd2hlbiB3aW4gd2FzIGNoaWxkLiAgSWYgd2luIGlzIHRoZSByb290CisJICAg ICAgIHdpbmRvdywgaXQgaGFzIG5vIHBhcmVudCwgYW5kIHBhcmVudF97eCx5fSBhcmUgaW52 YWxpZCwKKwkgICAgICAgYnV0IHRoYXQncyBva2F5LCBiZWNhdXNlIHdlJ2xsIG5ldmVyIHVz ZSB0aGVtIGluIHRoYXQKKwkgICAgICAgY2FzZS4pICAqLwoKICNpZmRlZiBVU0VfR1RLCiAJ ICAgIC8qIFdlIGRvbid0IHdhbid0IHRvIGtub3cgdGhlIGlubmVybW9zdCB3aW5kb3cuICBX ZQpAQCAtNTE3OCwxMyArNTE2NSwzOSBAQCBzdHJ1Y3QgZnJhbWUgKgogI2VuZGlmIC8qIFVT RV9YX1RPT0xLSVQgKi8KIAkgIH0KCisJaWYgKCghZjEgfHwgRlJBTUVfVE9PTFRJUF9QIChm MSkpCisJICAgICYmIEVRICh0cmFja19tb3VzZSwgUWRyb3BwaW5nKQorCSAgICAmJiB4X21v dXNlX2dyYWJiZWQgKGRweWluZm8pKQorCSAgeworCSAgICAvKiBXaGVuIGRyb3BwaW5nIHRo ZW4gaWYgd2UgZGlkbid0IGdldCBhIGZyYW1lIG9yIG9ubHkgYQorCSAgICAgICB0b29sdGlw IGZyYW1lIGFuZCB0aGUgbW91c2Ugd2FzIGdyYWJiZWQgb24gYSBmcmFtZSwKKwkgICAgICAg Z2l2ZSBjb29yZHMgZm9yIHRoYXQgZnJhbWUgZXZlbiBpZiB0aGUgbW91c2UgaXMgbm93CisJ ICAgICAgIG91dHNpZGUgaXQuICAqLworCSAgICBYVHJhbnNsYXRlQ29vcmRpbmF0ZXMgKEZS QU1FX1hfRElTUExBWSAoKmZwKSwKKworCQkJCSAgIC8qIEZyb20td2luZG93LiAgKi8KKwkJ CQkgICByb290LAorCisJCQkJICAgLyogVG8td2luZG93LiAgKi8KKwkJCQkgICBGUkFNRV9Y X1dJTkRPVyAoZHB5aW5mby0+bGFzdF9tb3VzZV9mcmFtZSksCisKKwkJCQkgICAvKiBGcm9t LXBvc2l0aW9uLCB0by1wb3NpdGlvbi4gICovCisJCQkJICAgcm9vdF94LCByb290X3ksICZ3 aW5feCwgJndpbl95LAorCisJCQkJICAgLyogQ2hpbGQgb2Ygd2luLiAgKi8KKwkJCQkgICAm Y2hpbGQpOworCSAgICBmMSA9IGRweWluZm8tPmxhc3RfbW91c2VfZnJhbWU7CisJICB9CisJ ZWxzZSBpZiAoZjEgJiYgRlJBTUVfVE9PTFRJUF9QIChmMSkpCisJICBmMSA9IE5VTEw7CisK IAlpZiAoeF9oYWRfZXJyb3JzX3AgKEZSQU1FX1hfRElTUExBWSAoKmZwKSkpCi0JICBmMSA9 IDA7CisJICBmMSA9IE5VTEw7CgogCXhfdW5jYXRjaF9lcnJvcnNfYWZ0ZXJfY2hlY2sgKCk7 CgogCS8qIElmIG5vdCwgaXMgaXQgb25lIG9mIG91ciBzY3JvbGwgYmFycz8gICovCi0JaWYg KCEgZjEpCisJaWYgKCFmMSkKIAkgIHsKIAkgICAgc3RydWN0IHNjcm9sbF9iYXIgKmJhcjsK CkBAIC01MTk4LDcgKzUyMTEsNyBAQCBzdHJ1Y3QgZnJhbWUgKgogCSAgICAgIH0KIAkgIH0K Ci0JaWYgKGYxID09IDAgJiYgaW5zaXN0ID4gMCkKKwlpZiAoIWYxICYmIGluc2lzdCA+IDAp CiAJICBmMSA9IFNFTEVDVEVEX0ZSQU1FICgpOwoKIAlpZiAoZjEpCkBAIC03NjY3LDYgKzc2 ODAsNDIgQEAgc3RhdGljIHZvaWQgeGVtYmVkX3NlbmRfbWVzc2FnZSAoc3RydWN0IGZyYW1l ICpmLCBUaW1lLAogICB1bmJsb2NrX2lucHV0ICgpOwogfQoKKy8qKgorICogbW91c2Vfb3Jf d2Rlc2NfZnJhbWU6CisgKgorICogV2hlbiBub3QgZHJvcHBpbmcgYW5kIHRoZSBtb3VzZSB3 YXMgZ3JhYmJlZCBmb3IgRFBZSU5GTywgcmV0dXJuIHRoZQorICogZnJhbWUgd2hlcmUgdGhl IG1vdXNlIHdhcyBzZWVuIGxhc3QuICBJZiB0aGVyZSdzIG5vIHN1Y2ggZnJhbWUsCisgKiBy ZXR1cm4gdGhlIGZyYW1lIGFjY29yZGluZyB0byBXREVTQy4KKyAqCisgKiBXaGVuIGRyb3Bw aW5nLCByZXR1cm4gdGhlIGZyYW1lIGFjY29yZGluZyB0byBXREVTQy4gIElmIHRoZXJlJ3Mg bm8KKyAqIHN1Y2ggZnJhbWUgYW5kIHRoZSBtb3VzZSB3YXMgZ3JhYmJlZCBmb3IgRFBZSU5G TywgcmV0dXJuIHRoZSBmcmFtZQorICogd2hlcmUgdGhlIG1vdXNlIHdhcyBzZWVuIGxhc3Qu CisgKgorICogSW4gZWl0aGVyIGNhc2UsIG5ldmVyIHJldHVybiBhIHRvb2x0aXAgZnJhbWUu CisgKi8KK3N0YXRpYyBzdHJ1Y3QgZnJhbWUgKgorbW91c2Vfb3Jfd2Rlc2NfZnJhbWUgKHN0 cnVjdCB4X2Rpc3BsYXlfaW5mbyAqZHB5aW5mbywgaW50IHdkZXNjKQoreworICBzdHJ1Y3Qg ZnJhbWUgKmxtX2YgPSAoeF9tb3VzZV9ncmFiYmVkIChkcHlpbmZvKQorCQkJPyBkcHlpbmZv LT5sYXN0X21vdXNlX2ZyYW1lCisJCQk6IE5VTEwpOworCisgIGlmIChsbV9mICYmICFFUSAo dHJhY2tfbW91c2UsIFFkcm9wcGluZykpCisgICAgcmV0dXJuIGxtX2Y7CisgIGVsc2UKKyAg ICB7CisgICAgICBzdHJ1Y3QgZnJhbWUgKndfZiA9IHhfd2luZG93X3RvX2ZyYW1lIChkcHlp bmZvLCB3ZGVzYyk7CisKKyAgICAgIC8qIERvIG5vdCByZXR1cm4gYSB0b29sdGlwIGZyYW1l LiAgKi8KKyAgICAgIGlmICghd19mIHx8IEZSQU1FX1RPT0xUSVBfUCAod19mKSkKKwlyZXR1 cm4gRVEgKHRyYWNrX21vdXNlLCBRZHJvcHBpbmcpID8gbG1fZiA6IE5VTEw7CisgICAgICBl bHNlCisJLyogV2hlbiBkcm9wcGluZyBpdCB3b3VsZCBiZSBwcm9iYWJseSBuaWNlIHRvIHJh aXNlIHdfZgorCSAgIGhlcmUuICAqLworCXJldHVybiB3X2Y7CisgICAgfQorfQorCiAvKiBI YW5kbGVzIHRoZSBYRXZlbnQgRVZFTlQgb24gZGlzcGxheSBEUFlJTkZPLgoKICAgICpGSU5J U0ggaXMgWF9FVkVOVF9HT1RPX09VVCBpZiBjYWxsZXIgc2hvdWxkIHN0b3AgcmVhZGluZyBl dmVudHMuCkBAIC04NTk2LDE2ICs4NjQ1LDE0IEBAIHN0YXRpYyB2b2lkIHhlbWJlZF9zZW5k X21lc3NhZ2UgKHN0cnVjdCBmcmFtZSAqZiwgVGltZSwKICAgICAgICAgeF9kaXNwbGF5X3Nl dF9sYXN0X3VzZXJfdGltZSAoZHB5aW5mbywgZXZlbnQtPnhtb3Rpb24udGltZSk7CiAgICAg ICAgIHByZXZpb3VzX2hlbHBfZWNob19zdHJpbmcgPSBoZWxwX2VjaG9fc3RyaW5nOwogICAg ICAgICBoZWxwX2VjaG9fc3RyaW5nID0gUW5pbDsKLQotCWYgPSAoeF9tb3VzZV9ncmFiYmVk IChkcHlpbmZvKSA/IGRweWluZm8tPmxhc3RfbW91c2VfZnJhbWUKLQkgICAgIDogeF93aW5k b3dfdG9fZnJhbWUgKGRweWluZm8sIGV2ZW50LT54bW90aW9uLndpbmRvdykpOwotCiAgICAg ICAgIGlmIChobGluZm8tPm1vdXNlX2ZhY2VfaGlkZGVuKQogICAgICAgICAgIHsKICAgICAg ICAgICAgIGhsaW5mby0+bW91c2VfZmFjZV9oaWRkZW4gPSBmYWxzZTsKICAgICAgICAgICAg IGNsZWFyX21vdXNlX2ZhY2UgKGhsaW5mbyk7CiAgICAgICAgICAgfQoKKwlmID0gbW91c2Vf b3Jfd2Rlc2NfZnJhbWUgKGRweWluZm8sIGV2ZW50LT54bW90aW9uLndpbmRvdyk7CisKICNp ZmRlZiBVU0VfR1RLCiAgICAgICAgIGlmIChmICYmIHhnX2V2ZW50X2lzX2Zvcl9zY3JvbGxi YXIgKGYsIGV2ZW50KSkKICAgICAgICAgICBmID0gMDsKQEAgLTg2MjIsNyArODY2OSw3IEBA IHN0YXRpYyB2b2lkIHhlbWJlZF9zZW5kX21lc3NhZ2UgKHN0cnVjdCBmcmFtZSAqZiwgVGlt ZSwKIAkJICAgbWluaWJ1ZmZlciBnZXRzIHVuc2VsZWN0ZWQgdW5leHBlY3RlZGx5LCBhbmQg d2hlcmUKIAkJICAgeW91IHRoZW4gaGF2ZSB0byBtb3ZlIHlvdXIgbW91c2UgYWxsIHRoZSB3 YXkgZG93biB0bwogCQkgICB0aGUgbWluaWJ1ZmZlciB0byBzZWxlY3QgaXQuICAqLwotCQkm JiAhTUlOSV9XSU5ET1dfUCAoWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KSkKKwkJJiYgIU1J TklCVUZGRVJfV0lORE9XX1AgKFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdykpCiAJCS8qIFdp dGggYGZvY3VzLWZvbGxvd3MtbW91c2UnIG5vbi1uaWwgY3JlYXRlIGFuIGV2ZW50CiAJCSAg IGFsc28gd2hlbiB0aGUgdGFyZ2V0IHdpbmRvdyBpcyBvbiBhbm90aGVyIGZyYW1lLiAgKi8K IAkJJiYgKGYgPT0gWEZSQU1FIChzZWxlY3RlZF9mcmFtZSkKQEAgLTg4NDQsMzMgKzg4OTEs MjcgQEAgc3RhdGljIHZvaWQgeGVtYmVkX3NlbmRfbWVzc2FnZSAoc3RydWN0IGZyYW1lICpm LCBUaW1lLAogCWRweWluZm8tPmxhc3RfbW91c2VfZ2x5cGhfZnJhbWUgPSBOVUxMOwogCXhf ZGlzcGxheV9zZXRfbGFzdF91c2VyX3RpbWUgKGRweWluZm8sIGV2ZW50LT54YnV0dG9uLnRp bWUpOwoKLQlpZiAoeF9tb3VzZV9ncmFiYmVkIChkcHlpbmZvKSkKLQkgIGYgPSBkcHlpbmZv LT5sYXN0X21vdXNlX2ZyYW1lOwotCWVsc2UKKwlmID0gbW91c2Vfb3Jfd2Rlc2NfZnJhbWUg KGRweWluZm8sIGV2ZW50LT54bW90aW9uLndpbmRvdyk7CisJaWYgKGYgJiYgZXZlbnQtPnhi dXR0b24udHlwZSA9PSBCdXR0b25QcmVzcworCSAgICAmJiAhcG9wdXBfYWN0aXZhdGVkICgp CisJICAgICYmICF4X3dpbmRvd190b19zY3JvbGxfYmFyIChldmVudC0+eGJ1dHRvbi5kaXNw bGF5LAorCQkJCQlldmVudC0+eGJ1dHRvbi53aW5kb3csIDIpCisJICAgICYmICFGUkFNRV9O T19BQ0NFUFRfRk9DVVMgKGYpKQogCSAgewotCSAgICBmID0geF93aW5kb3dfdG9fZnJhbWUg KGRweWluZm8sIGV2ZW50LT54YnV0dG9uLndpbmRvdyk7CisJICAgIC8qIFdoZW4gY2xpY2tp bmcgaW50byBhIGNoaWxkIGZyYW1lIG9yIHdoZW4gY2xpY2tpbmcKKwkgICAgICAgaW50byBh IHBhcmVudCBmcmFtZSB3aXRoIHRoZSBjaGlsZCBmcmFtZSBzZWxlY3RlZCBhbmQKKwkgICAg ICAgYG5vLWFjY2VwdC1mb2N1cycgaXMgbm90IHNldCwgc2VsZWN0IHRoZSBjbGlja2VkCisJ ICAgICAgIGZyYW1lLiAgKi8KKwkgICAgc3RydWN0IGZyYW1lICpoZiA9IGRweWluZm8tPnhf aGlnaGxpZ2h0X2ZyYW1lOwoKLQkgICAgaWYgKGYgJiYgZXZlbnQtPnhidXR0b24udHlwZSA9 PSBCdXR0b25QcmVzcwotCQkmJiAhcG9wdXBfYWN0aXZhdGVkICgpCi0JCSYmICF4X3dpbmRv d190b19zY3JvbGxfYmFyIChldmVudC0+eGJ1dHRvbi5kaXNwbGF5LAotCQkJCQkgICAgZXZl bnQtPnhidXR0b24ud2luZG93LCAyKQotCQkmJiAhRlJBTUVfTk9fQUNDRVBUX0ZPQ1VTIChm KSkKKwkgICAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoZikgfHwgKGhmICYmIGZyYW1lX2Fu Y2VzdG9yX3AgKGYsIGhmKSkpCiAJICAgICAgewotCQkvKiBXaGVuIGNsaWNraW5nIGludG8g YSBjaGlsZCBmcmFtZSBvciB3aGVuIGNsaWNraW5nCi0JCSAgIGludG8gYSBwYXJlbnQgZnJh bWUgd2l0aCB0aGUgY2hpbGQgZnJhbWUgc2VsZWN0ZWQgYW5kCi0JCSAgIGBuby1hY2NlcHQt Zm9jdXMnIGlzIG5vdCBzZXQsIHNlbGVjdCB0aGUgY2xpY2tlZAotCQkgICBmcmFtZS4gICov Ci0JCXN0cnVjdCBmcmFtZSAqaGYgPSBkcHlpbmZvLT54X2hpZ2hsaWdodF9mcmFtZTsKLQot CQlpZiAoRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSB8fCAoaGYgJiYgZnJhbWVfYW5jZXN0b3Jf cCAoZiwgaGYpKSkKLQkJICB7Ci0JCSAgICBibG9ja19pbnB1dCAoKTsKLQkJICAgIFhTZXRJ bnB1dEZvY3VzIChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9PVVRFUl9XSU5ET1cgKGYp LAotCQkJCSAgICBSZXZlcnRUb1BhcmVudCwgQ3VycmVudFRpbWUpOwotCQkgICAgaWYgKEZS QU1FX1BBUkVOVF9GUkFNRSAoZikpCi0JCSAgICAgIFhSYWlzZVdpbmRvdyAoRlJBTUVfWF9E SVNQTEFZIChmKSwgRlJBTUVfT1VURVJfV0lORE9XIChmKSk7Ci0JCSAgICB1bmJsb2NrX2lu cHV0ICgpOwotCQkgIH0KKwkJYmxvY2tfaW5wdXQgKCk7CisJCVhTZXRJbnB1dEZvY3VzIChG UkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9PVVRFUl9XSU5ET1cgKGYpLAorCQkJCVJldmVy dFRvUGFyZW50LCBDdXJyZW50VGltZSk7CisJCWlmIChGUkFNRV9QQVJFTlRfRlJBTUUgKGYp KQorCQkgIFhSYWlzZVdpbmRvdyAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVfT1VURVJf V0lORE9XIChmKSk7CisJCXVuYmxvY2tfaW5wdXQgKCk7CiAJICAgICAgfQogCSAgfQoKQEAg LTk3ODYsMTggKzk4MjcsMjIgQEAgc3RydWN0IHhfZXJyb3JfbWVzc2FnZV9zdGFjayB7CiAg ICAgfQogICBpZiAoaW9lcnJvcikgZHB5aW5mby0+ZGlzcGxheSA9IDA7CgotICAvKiBGaXJz dCBkZWxldGUgZnJhbWVzIHdob3NlIG1pbmktYnVmZmVycyBhcmUgb24gZnJhbWVzCi0gICAg IHRoYXQgYXJlIG9uIHRoZSBkZWFkIGRpc3BsYXkuICAqLworICAvKiBGaXJzdCBkZWxldGUg ZnJhbWVzIHdob3NlIG1pbmlidWZmZXIgd2luZG93IGlzIG9uIGFub3RoZXIgZnJhbWUKKyAg ICAgb24gdGhlIGRlYWQgZGlzcGxheS4gICovCiAgIEZPUl9FQUNIX0ZSQU1FICh0YWlsLCBm cmFtZSkKICAgICB7Ci0gICAgICBMaXNwX09iamVjdCBtaW5pYnVmX2ZyYW1lOwotICAgICAg bWluaWJ1Zl9mcmFtZQotCT0gV0lORE9XX0ZSQU1FIChYV0lORE9XIChGUkFNRV9NSU5JQlVG X1dJTkRPVyAoWEZSQU1FIChmcmFtZSkpKSk7Ci0gICAgICBpZiAoRlJBTUVfWF9QIChYRlJB TUUgKGZyYW1lKSkKLQkgICYmIEZSQU1FX1hfUCAoWEZSQU1FIChtaW5pYnVmX2ZyYW1lKSkK LQkgICYmICEgRVEgKGZyYW1lLCBtaW5pYnVmX2ZyYW1lKQotCSAgJiYgRlJBTUVfRElTUExB WV9JTkZPIChYRlJBTUUgKG1pbmlidWZfZnJhbWUpKSA9PSBkcHlpbmZvKQotCWRlbGV0ZV9m cmFtZSAoZnJhbWUsIFFub2VsaXNwKTsKKyAgICAgIHN0cnVjdCBmcmFtZSAqZiA9IFhGUkFN RSAoZnJhbWUpOworCisgICAgICBpZiAoRlJBTUVfWF9QIChmKSAmJiBXSU5ET1dfTElWRV9Q IChNSU5JQlVGRkVSX1dJTkRPVyAoZikpKQorCXsKKwkgIExpc3BfT2JqZWN0IG1pbmlidWZf ZnJhbWUKKwkgICAgPSBXSU5ET1dfRlJBTUUgKFhXSU5ET1cgKE1JTklCVUZGRVJfV0lORE9X IChmKSkpOworCisJICBpZiAoRlJBTUVfWF9QIChYRlJBTUUgKG1pbmlidWZfZnJhbWUpKQor CSAgICAgICYmICFFUSAoZnJhbWUsIG1pbmlidWZfZnJhbWUpCisJICAgICAgJiYgRlJBTUVf RElTUExBWV9JTkZPIChYRlJBTUUgKG1pbmlidWZfZnJhbWUpKSA9PSBkcHlpbmZvKQorCSAg ICBkZWxldGVfZnJhbWUgKGZyYW1lLCBRbm9lbGlzcCk7CisJfQogICAgIH0KCiAgIC8qIE5v dyBkZWxldGUgYWxsIHJlbWFpbmluZyBmcmFtZXMgb24gdGhlIGRlYWQgZGlzcGxheS4K --------------080608020305000803010809-- From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 01 08:05:37 2018 Received: (at submit) by debbugs.gnu.org; 1 Aug 2018 12:05:37 +0000 Received: from localhost ([127.0.0.1]:37023 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkpsn-0002y2-3k for submit@debbugs.gnu.org; Wed, 01 Aug 2018 08:05:37 -0400 Received: from eggs.gnu.org ([208.118.235.92]:53889) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkpsm-0002xq-Ar for submit@debbugs.gnu.org; Wed, 01 Aug 2018 08:05:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkpsf-0007F2-Th for submit@debbugs.gnu.org; Wed, 01 Aug 2018 08:05:30 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:58703) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fkpsf-0007Ek-Pg for submit@debbugs.gnu.org; Wed, 01 Aug 2018 08:05:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44850) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fkpse-00079C-N3 for bug-gnu-emacs@gnu.org; Wed, 01 Aug 2018 08:05:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fkpsa-000787-1H for bug-gnu-emacs@gnu.org; Wed, 01 Aug 2018 08:05:28 -0400 Received: from [195.159.176.226] (port=39218 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fkpsZ-00076k-MD for bug-gnu-emacs@gnu.org; Wed, 01 Aug 2018 08:05:23 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1fkpqN-00043h-5E for bug-gnu-emacs@gnu.org; Wed, 01 Aug 2018 14:03:07 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Andy Moreton Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks Date: Wed, 01 Aug 2018 13:05:12 +0100 Lines: 17 Message-ID: References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <83zhy7o0i0.fsf@gnu.org> <83h8keodsi.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1.50 (windows-nt) Cancel-Lock: sha1:FC0Oqppl8a2/+6soREKDUKe19jI= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) On Wed 01 Aug 2018, Eli Zaretskii wrote: >> From: Andy Moreton >> Date: Tue, 31 Jul 2018 20:29:31 +0100 >> >> Noam's original patch may bring some possibility of new problems, >> but it does at least fix the original problem (on emacs-26 and >> master). > > Fixing a problem and introducing another doesn't sound wise to me. > We've been there several times during the last years, and I don't want > to make the same mistake again. Sorry. Perhaps reverting the patches that introduced read-multiple-choice is the right answer then. AndyM From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 01 08:30:24 2018 Received: (at 32257) by debbugs.gnu.org; 1 Aug 2018 12:30:24 +0000 Received: from localhost ([127.0.0.1]:37038 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkqGl-0003aN-R1 for submit@debbugs.gnu.org; Wed, 01 Aug 2018 08:30:23 -0400 Received: from mail-it0-f42.google.com ([209.85.214.42]:35677) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkqGk-0003a7-RZ for 32257@debbugs.gnu.org; Wed, 01 Aug 2018 08:30:23 -0400 Received: by mail-it0-f42.google.com with SMTP id q20-v6so9070784ith.0 for <32257@debbugs.gnu.org>; Wed, 01 Aug 2018 05:30:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=i9o8Wy6gDaVH7IDYuA2NyoY4gSYprcraRpQ2ORnTDAc=; b=sMyZCRkePacqCe2R0CFQokQ55dPJ4dtpaUdrznAG547DNfXYFQQHeTYDXgrXmtYvdy WhwlLkICgcWBGEES39UssiW3Wi10x2RT2L9nPU48YYzfip7/f2e+3PW4RfFWSZlRG54U vjzEZ+MemXA0nPmcPaD6UWlJ9tjxbsCabzKozYFUTm44Te2Jcvsz+KuUKQIbX77yyi22 K+GP6dNNKZm9sRXdZCZH4+ewF4E0tYcra1LomIl9nq3ohMGn43lNAkfLjBoJJuqiKuP1 +OOqtnNxJlqUbQjl+EdyXFf7K/lJjU9rMAXlyXzEnSog3H3ZFM5Bpf71f3HyZE1en+Sm 6/CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=i9o8Wy6gDaVH7IDYuA2NyoY4gSYprcraRpQ2ORnTDAc=; b=o/k/b3qLtmGjCtHblojL2Op4RmC+BcRqoP3j2h2ESC7NvoeHw1fn8WuhwxIfnG52XE zVQPu6QU+7/FMYE4GE+C7EWkW1PD103sfizfEXSud2fheo+zdY9Wajh8C8WEMhFpkM0m L7aqWTVgKI5QuCLaKnrLEu38KnNgCVbYGKaYQDpAkTU62LHM7edog+FlnhcE2wQQNC9c yQn96SjWcyd8WCoX6zFjVl60vTjtxeRTjBMLCs6DlwHgEdHlHugB37W2TnDISxBVr8jo scLRFRrtDH/D4hLe5TIFxSXNf5ggeuPlhEo30JOHkIIZ4DP5nXiyTJ0Dc9a7V+R8Ws5p v9tQ== X-Gm-Message-State: AOUpUlHFEl8KbKBVbBubS0WQk+kdT1pl5KQCvzaXLOjrBAOmP2zSL0kH wVk2VbBMwMcBUc8g+wk5SDfTYBQS X-Google-Smtp-Source: AAOMgpdahyG5+cXiWi/SeP0oZAFEwkIgUJkhTaRRHyqOhcM5lcEarTAuu9RNgPnNk0hfC1+kSDkrgw== X-Received: by 2002:a24:ee46:: with SMTP id b67-v6mr3349375iti.136.1533126617191; Wed, 01 Aug 2018 05:30:17 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id n142-v6sm10129090itb.3.2018.08.01.05.30.16 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 01 Aug 2018 05:30:16 -0700 (PDT) From: Noam Postavsky To: martin rudalics Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <5B6055A2.4010308@gmx.at> <5B6172E2.6010604@gmx.at> Date: Wed, 01 Aug 2018 08:30:15 -0400 In-Reply-To: <5B6172E2.6010604@gmx.at> (martin rudalics's message of "Wed, 01 Aug 2018 10:44:18 +0200") Message-ID: <8736vy1d7s.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org, Andy Moreton X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) martin rudalics writes: >> Yes please - prefeably in a new bug report for the enhancement patch, >> so it can be tracked separately from this bug. > > It's not yet ready for broader discussion. I attach it here so you > can just test whether making the echo interference go away during > the minibuffer dialog. By the way, there is the existing Bug#19718 about the minibuffer interference during read_filtered_event. From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 01 08:57:36 2018 Received: (at 32257) by debbugs.gnu.org; 1 Aug 2018 12:57:36 +0000 Received: from localhost ([127.0.0.1]:37061 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkqh6-0004Dt-AO for submit@debbugs.gnu.org; Wed, 01 Aug 2018 08:57:36 -0400 Received: from mail-wr1-f52.google.com ([209.85.221.52]:43160) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkqh4-0004Dg-Ux for 32257@debbugs.gnu.org; Wed, 01 Aug 2018 08:57:35 -0400 Received: by mail-wr1-f52.google.com with SMTP id b15-v6so20007703wrv.10 for <32257@debbugs.gnu.org>; Wed, 01 Aug 2018 05:57:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:mail-copies-to:gmane-reply-to-list :date:in-reply-to:message-id:mime-version; bh=kF/BbK9zMQOeSHOveGafuJnczAgOc3SDoNrEBYsCJ4c=; b=hzeHws9L4mWb0ZvmpGA6EoXmfoBqElpYahL1DyLx75HonEfpe1RB9PQe/p+F0gEQrj uYqbyWqnhK8GoAeNhwOWz2b7CSJd3LkGPC4YtoNMyHUCxQ/f1uQrctvlN1x7hNDiY6qM r8LZnHa3WEhhnuk14Zi/fBjeX2IWiRVBZgImwhvOSeZb/nuQ/SwtaGROxW6csC5BCX+M /4E2WB21sFjqV+9FD1wPbGBtQei/CI20rAu5HZz/mquBJlbv2jKjs9yh8uIN+FgoUOxJ ZDjGt1D1GicAA+3zUpE2jX/RxXn/uZAhVP70EXa5F9PoV1kqDZwzED5Eam+Eq2O+N33D UxWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:mail-copies-to :gmane-reply-to-list:date:in-reply-to:message-id:mime-version; bh=kF/BbK9zMQOeSHOveGafuJnczAgOc3SDoNrEBYsCJ4c=; b=dT1goA3UctH9nnb8880greR7nW/4HquGQs7cfWMbXK6rRbcdqP64Qgd3CVbIHQvYCn 867f8QdLluFctWiB7o3494e7Gi22cBDOOiWAtzNPybNKPVOwWl5aDl71v1OtxXtxHb51 cXcb09ZBFNvSPuSJgB8NVhUWtF6baGhMyV8CtMuvi/OiJf1An1ZwGFvjHKQqomdE5Vks 9NEH+kLcCUSnMc6Xs5qJtpD59IRTVtJkZK3qGM9nyGLktKgNqOF7twd1YiZOH+wwYkt6 +j+TmAOmZeZrzcUJcRDjmttJqZRYLr7LCWSYjK+hZ7xM8ujm9f6dL9fjajmZDJmAwEYU pUIw== X-Gm-Message-State: AOUpUlESUXe/ck/lEzEMi6RSzflKK3mXsul8O6hQU8w401s55mfRG5hD MXa+GEwuj+c41TfNfOTCjwnyQFF7 X-Google-Smtp-Source: AAOMgpcwJf70cc9hLlWQypeRdMGoDqg6jJ4Zbp36Yix2lvSSvctvscsVfertiBTIHb+iRl0U9yNmsg== X-Received: by 2002:adf:8895:: with SMTP id f21-v6mr24348919wrf.250.1533128248783; Wed, 01 Aug 2018 05:57:28 -0700 (PDT) Received: from rpluim-ubuntu (vav06-1-78-207-202-134.fbx.proxad.net. [78.207.202.134]) by smtp.gmail.com with ESMTPSA id g17-v6sm5601693wmh.19.2018.08.01.05.57.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Aug 2018 05:57:27 -0700 (PDT) From: Robert Pluim To: martin rudalics Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <5B6055A2.4010308@gmx.at> <5B6172E2.6010604@gmx.at> X-Debbugs-No-Ack: yes Mail-Copies-To: never Gmane-Reply-To-List: yes Date: Wed, 01 Aug 2018 14:57:26 +0200 In-Reply-To: <5B6172E2.6010604@gmx.at> (martin rudalics's message of "Wed, 01 Aug 2018 10:44:18 +0200") Message-ID: <87wota5jnt.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org, Andy Moreton X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) martin rudalics writes: >>> Here I use separate echo (area) and minibuffer windows. If you want >>> to play around with a patch please tell me. >>> >>> martin >> >> Yes please - prefeably in a new bug report for the enhancement patch, >> so it can be tracked separately from this bug. > > It's not yet ready for broader discussion. I attach it here so you > can just test whether making the echo interference go away during > the minibuffer dialog. > > To put it into use run emacs with > > (setq default-frame-alist '((minibuffer . loose) (echo-area . t))) > > Looks better with window dividers enabled. > > Eventually I'll make a remote branch. But this may take its time. It looks interesting, but please use something other than 'loose' to describe the behaviour. I guess 'dedicated' is already overloaded. 'separate', 'no-echo'....? Robert From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 01 16:56:06 2018 Received: (at submit) by debbugs.gnu.org; 1 Aug 2018 20:56:07 +0000 Received: from localhost ([127.0.0.1]:37977 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkyA5-00033S-AV for submit@debbugs.gnu.org; Wed, 01 Aug 2018 16:56:04 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46628) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkyA2-00033D-Nn for submit@debbugs.gnu.org; Wed, 01 Aug 2018 16:55:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fky9v-0006bW-2W for submit@debbugs.gnu.org; Wed, 01 Aug 2018 16:55:53 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:39203) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fky9u-0006bQ-S8 for submit@debbugs.gnu.org; Wed, 01 Aug 2018 16:55:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37582) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fky9r-0005Fv-N2 for bug-gnu-emacs@gnu.org; Wed, 01 Aug 2018 16:55:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fky9o-0006Zb-Ic for bug-gnu-emacs@gnu.org; Wed, 01 Aug 2018 16:55:47 -0400 Received: from [195.159.176.226] (port=55989 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fky9o-0006ZB-1h for bug-gnu-emacs@gnu.org; Wed, 01 Aug 2018 16:55:44 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1fky7e-0003CC-SH for bug-gnu-emacs@gnu.org; Wed, 01 Aug 2018 22:53:30 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Live System User Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks Date: Wed, 01 Aug 2018 16:55:14 -0400 Lines: 312 Message-ID: <877el9u7rh.fsf@aol.com> References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <5B6055A2.4010308@gmx.at> <5B6172E2.6010604@gmx.at> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Complaints-To: usenet@blaine.gmane.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cancel-Lock: sha1:oEyIvG8FTqk/CrkJ9brRMgGMTMU= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) --=-=-= Content-Type: text/plain martin rudalics writes: >>> Here I use separate echo (area) and minibuffer windows. If you want >>> to play around with a patch please tell me. >>> >>> martin >> >> Yes please - prefeably in a new bug report for the enhancement patch, >> so it can be tracked separately from this bug. > > It's not yet ready for broader discussion. I attach it here so you > can just test whether making the echo interference go away during > the minibuffer dialog. I know this is not ready but I thought I'd report this error when using this patch with popwin.el (a third-party app). Thanks. --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=echomini-error.txt Content-Transfer-Encoding: quoted-printable Content-Description: echomini error Debugger entered--Lisp error: (wrong-number-of-arguments nil 1) signal(wrong-number-of-arguments (nil 1)) (if (=3D (length --cl-rest--) 2) (car-safe (prog1 --cl-rest-- (setq --cl-= rest-- (cdr --cl-rest--)))) (signal 'wrong-number-of-arguments (list nil (l= ength --cl-rest--)))) (let* ((--cl-rest-- (window-tree)) (root (if (=3D (length --cl-rest--) 2)= (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) (signa= l 'wrong-number-of-arguments (list nil (length --cl-rest--))))) (mini (car = --cl-rest--))) (list (popwin:window-config-tree-1 root) mini)) popwin:window-config-tree() (car (popwin:window-config-tree)) (let ((win-outline (car (popwin:window-config-tree)))) (let* ((--cl-rest-= - (let ((size (if ... width height)) (adjust popwin:adjust-other-windows)) = (popwin:create-popup-window size position adjust))) (master-win (if (=3D (l= ength --cl-rest--) 3) (car-safe (prog1 --cl-rest-- (setq --cl-rest-- ...)))= (signal 'wrong-number-of-arguments (list nil (length --cl-rest--))))) (pop= up-win (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))))= (win-map (car --cl-rest--))) (setq popwin:popup-window popup-win popwin:ma= ster-window master-win popwin:window-outline win-outline popwin:window-map = win-map popwin:window-config nil popwin:selected-window (selected-window)))= (popwin:update-window-reference 'popwin:context-stack :recursive t) (popwi= n:start-close-popup-window-timer)) (if context (progn (popwin:use-context context) (setq popwin:context-stac= k context-stack)) (let ((win-outline (car (popwin:window-config-tree)))) (l= et* ((--cl-rest-- (let ((size ...) (adjust popwin:adjust-other-windows)) (p= opwin:create-popup-window size position adjust))) (master-win (if (=3D (len= gth --cl-rest--) 3) (car-safe (prog1 --cl-rest-- ...)) (signal 'wrong-numbe= r-of-arguments (list nil ...)))) (popup-win (car-safe (prog1 --cl-rest-- (s= etq --cl-rest-- ...)))) (win-map (car --cl-rest--))) (setq popwin:popup-win= dow popup-win popwin:master-window master-win popwin:window-outline win-out= line popwin:window-map win-map popwin:window-config nil popwin:selected-win= dow (selected-window))) (popwin:update-window-reference 'popwin:context-sta= ck :recursive t) (popwin:start-close-popup-window-timer)) (let ((save-selec= ted-window--state (internal--before-with-selected-window popwin:popup-windo= w))) (save-current-buffer (unwind-protect (progn (select-window (car save-s= elected-window--state) 'norecord) (popwin:switch-to-buffer buffer) (if tail= (progn (set-window-point popwin:popup-window ...) (recenter -2)))) (intern= al--after-with-selected-window save-selected-window--state)))) (setq popwin= :popup-buffer buffer popwin:popup-last-config (list buffer :width width :he= ight height :position position :noselect noselect :dedicated dedicated :sti= ck stick :tail tail) popwin:popup-window-dedicated-p dedicated popwin:popup= -window-stuck-p stick)) (let* ((--cl-var-- (popwin:find-context-for-buffer buffer :valid-only t))= (context (nth 0 --cl-var--)) (context-stack (nth 1 --cl-var--))) (if conte= xt (progn (popwin:use-context context) (setq popwin:context-stack context-s= tack)) (let ((win-outline (car (popwin:window-config-tree)))) (let* ((--cl-= rest-- (let (... ...) (popwin:create-popup-window size position adjust))) (= master-win (if (=3D ... 3) (car-safe ...) (signal ... ...))) (popup-win (ca= r-safe (prog1 --cl-rest-- ...))) (win-map (car --cl-rest--))) (setq popwin:= popup-window popup-win popwin:master-window master-win popwin:window-outlin= e win-outline popwin:window-map win-map popwin:window-config nil popwin:sel= ected-window (selected-window))) (popwin:update-window-reference 'popwin:co= ntext-stack :recursive t) (popwin:start-close-popup-window-timer)) (let ((s= ave-selected-window--state (internal--before-with-selected-window popwin:po= pup-window))) (save-current-buffer (unwind-protect (progn (select-window (c= ar save-selected-window--state) 'norecord) (popwin:switch-to-buffer buffer)= (if tail (progn ... ...))) (internal--after-with-selected-window save-sele= cted-window--state)))) (setq popwin:popup-buffer buffer popwin:popup-last-c= onfig (list buffer :width width :height height :position position :noselect= noselect :dedicated dedicated :stick stick :tail tail) popwin:popup-window= -dedicated-p dedicated popwin:popup-window-stuck-p stick))) (progn (setq buffer (get-buffer buffer)) (popwin:push-context) (run-hooks= 'popwin:before-popup-hook) (let* ((--cl-var-- (popwin:find-context-for-buf= fer buffer :valid-only t)) (context (nth 0 --cl-var--)) (context-stack (nth= 1 --cl-var--))) (if context (progn (popwin:use-context context) (setq popw= in:context-stack context-stack)) (let ((win-outline (car (popwin:window-con= fig-tree)))) (let* ((--cl-rest-- (let ... ...)) (master-win (if ... ... ...= )) (popup-win (car-safe ...)) (win-map (car --cl-rest--))) (setq popwin:pop= up-window popup-win popwin:master-window master-win popwin:window-outline w= in-outline popwin:window-map win-map popwin:window-config nil popwin:select= ed-window (selected-window))) (popwin:update-window-reference 'popwin:conte= xt-stack :recursive t) (popwin:start-close-popup-window-timer)) (let ((save= -selected-window--state (internal--before-with-selected-window popwin:popup= -window))) (save-current-buffer (unwind-protect (progn (select-window ... .= ..) (popwin:switch-to-buffer buffer) (if tail ...)) (internal--after-with-s= elected-window save-selected-window--state)))) (setq popwin:popup-buffer bu= ffer popwin:popup-last-config (list buffer :width width :height height :pos= ition position :noselect noselect :dedicated dedicated :stick stick :tail t= ail) popwin:popup-window-dedicated-p dedicated popwin:popup-window-stuck-p = stick))) (if noselect (setq popwin:focus-window popwin:selected-window) (se= tq popwin:focus-window popwin:popup-window) (select-window popwin:popup-win= dow)) (run-hooks 'popwin:after-popup-hook) popwin:popup-window) (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((memq (= car --cl-keys--) '(:width :height :position :noselect :dedicated :stick :ta= il :allow-other-keys)) (setq --cl-keys-- (cdr (cdr --cl-keys--)))) ((car (c= dr (memq ... --cl-rest--))) (setq --cl-keys-- nil)) (t (error "Keyword argu= ment %s not one of (:width :height :position :noselect :dedicated :stick :t= ail)" (car --cl-keys--)))))) (progn (setq buffer (get-buffer buffer)) (popw= in:push-context) (run-hooks 'popwin:before-popup-hook) (let* ((--cl-var-- (= popwin:find-context-for-buffer buffer :valid-only t)) (context (nth 0 --cl-= var--)) (context-stack (nth 1 --cl-var--))) (if context (progn (popwin:use-= context context) (setq popwin:context-stack context-stack)) (let ((win-outl= ine (car ...))) (let* ((--cl-rest-- ...) (master-win ...) (popup-win ...) (= win-map ...)) (setq popwin:popup-window popup-win popwin:master-window mast= er-win popwin:window-outline win-outline popwin:window-map win-map popwin:w= indow-config nil popwin:selected-window (selected-window))) (popwin:update-= window-reference 'popwin:context-stack :recursive t) (popwin:start-close-po= pup-window-timer)) (let ((save-selected-window--state (internal--before-wit= h-selected-window popwin:popup-window))) (save-current-buffer (unwind-prote= ct (progn ... ... ...) (internal--after-with-selected-window save-selected-= window--state)))) (setq popwin:popup-buffer buffer popwin:popup-last-config= (list buffer :width width :height height :position position :noselect nose= lect :dedicated dedicated :stick stick :tail tail) popwin:popup-window-dedi= cated-p dedicated popwin:popup-window-stuck-p stick))) (if noselect (setq p= opwin:focus-window popwin:selected-window) (setq popwin:focus-window popwin= :popup-window) (select-window popwin:popup-window)) (run-hooks 'popwin:afte= r-popup-hook) popwin:popup-window)) (let* ((width (car (cdr (or (plist-member --cl-rest-- ':width) (list nil = popwin:popup-window-width))))) (height (car (cdr (or (plist-member --cl-res= t-- ':height) (list nil popwin:popup-window-height))))) (position (car (cdr= (or (plist-member --cl-rest-- ':position) (list nil popwin:popup-window-po= sition))))) (noselect (car (cdr (plist-member --cl-rest-- ':noselect)))) (d= edicated (car (cdr (plist-member --cl-rest-- ':dedicated)))) (stick (car (c= dr (plist-member --cl-rest-- ':stick)))) (tail (car (cdr (plist-member --cl= -rest-- ':tail))))) (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-key= s-- (cond ((memq (car --cl-keys--) '...) (setq --cl-keys-- (cdr ...))) ((ca= r (cdr ...)) (setq --cl-keys-- nil)) (t (error "Keyword argument %s not one= of (:width :height :position :noselect :dedicated :stick :tail)" (car --cl= -keys--)))))) (progn (setq buffer (get-buffer buffer)) (popwin:push-context= ) (run-hooks 'popwin:before-popup-hook) (let* ((--cl-var-- (popwin:find-con= text-for-buffer buffer :valid-only t)) (context (nth 0 --cl-var--)) (contex= t-stack (nth 1 --cl-var--))) (if context (progn (popwin:use-context context= ) (setq popwin:context-stack context-stack)) (let ((win-outline ...)) (let*= (... ... ... ...) (setq popwin:popup-window popup-win popwin:master-window= master-win popwin:window-outline win-outline popwin:window-map win-map pop= win:window-config nil popwin:selected-window ...)) (popwin:update-window-re= ference 'popwin:context-stack :recursive t) (popwin:start-close-popup-windo= w-timer)) (let ((save-selected-window--state ...)) (save-current-buffer (un= wind-protect ... ...))) (setq popwin:popup-buffer buffer popwin:popup-last-= config (list buffer :width width :height height :position position :noselec= t noselect :dedicated dedicated :stick stick :tail tail) popwin:popup-windo= w-dedicated-p dedicated popwin:popup-window-stuck-p stick))) (if noselect (= setq popwin:focus-window popwin:selected-window) (setq popwin:focus-window = popwin:popup-window) (select-window popwin:popup-window)) (run-hooks 'popwi= n:after-popup-hook) popwin:popup-window))) popwin:popup-buffer(# :width 30 :height 15 :position botto= m :noselect nil :dedicated nil :stick nil :tail nil) (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((memq (= car --cl-keys--) '(:regexp :width :height :position :noselect :dedicated :s= tick :tail :allow-other-keys)) (setq --cl-keys-- (cdr (cdr --cl-keys--)))) = ((car (cdr (memq ... --cl-rest--))) (setq --cl-keys-- nil)) (t (error "Keyw= ord argument %s not one of (:regexp :width :height :position :noselect :ded= icated :stick :tail)" (car --cl-keys--)))))) (popwin:popup-buffer buffer :w= idth (or width popwin:popup-window-width) :height (or height popwin:popup-w= indow-height) :position (or position popwin:popup-window-position) :noselec= t (or (popwin:minibuffer-window-selected-p) noselect) :dedicated dedicated = :stick stick :tail tail)) (let* ((--cl-rest-- (append (cdr pattern-and-keywords) default-config-key= words)) (regexp (car (cdr (plist-member --cl-rest-- ':regexp)))) (width (ca= r (cdr (plist-member --cl-rest-- ':width)))) (height (car (cdr (plist-membe= r --cl-rest-- ':height)))) (position (car (cdr (plist-member --cl-rest-- ':= position)))) (noselect (car (cdr (plist-member --cl-rest-- ':noselect)))) (= dedicated (car (cdr (plist-member --cl-rest-- ':dedicated)))) (stick (car (= cdr (plist-member --cl-rest-- ':stick)))) (tail (car (cdr (plist-member --c= l-rest-- ':tail))))) (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-ke= ys-- (cond ((memq (car --cl-keys--) '...) (setq --cl-keys-- (cdr ...))) ((c= ar (cdr ...)) (setq --cl-keys-- nil)) (t (error "Keyword argument %s not on= e of (:regexp :width :height :position :noselect :dedicated :stick :tail)" = (car --cl-keys--)))))) (popwin:popup-buffer buffer :width (or width popwin:= popup-window-width) :height (or height popwin:popup-window-height) :positio= n (or position popwin:popup-window-position) :noselect (or (popwin:minibuff= er-window-selected-p) noselect) :dedicated dedicated :stick stick :tail tai= l))) (let* ((buffer (popwin:get-buffer buffer-or-name if-buffer-not-found)) (p= attern-and-keywords (popwin:match-config buffer))) (if pattern-and-keywords= nil (if if-config-not-found (throw '--cl-block-popwin:display-buffer-1-- (= funcall if-config-not-found buffer)) (setq pattern-and-keywords '(t)))) (le= t* ((--cl-rest-- (append (cdr pattern-and-keywords) default-config-keywords= )) (regexp (car (cdr (plist-member --cl-rest-- ':regexp)))) (width (car (cd= r (plist-member --cl-rest-- ':width)))) (height (car (cdr (plist-member --c= l-rest-- ':height)))) (position (car (cdr (plist-member --cl-rest-- ':posit= ion)))) (noselect (car (cdr (plist-member --cl-rest-- ':noselect)))) (dedic= ated (car (cdr (plist-member --cl-rest-- ':dedicated)))) (stick (car (cdr (= plist-member --cl-rest-- ':stick)))) (tail (car (cdr (plist-member --cl-res= t-- ':tail))))) (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- = (cond ((memq ... ...) (setq --cl-keys-- ...)) ((car ...) (setq --cl-keys-- = nil)) (t (error "Keyword argument %s not one of (:regexp :width :height :po= sition :noselect :dedicated :stick :tail)" ...))))) (popwin:popup-buffer bu= ffer :width (or width popwin:popup-window-width) :height (or height popwin:= popup-window-height) :position (or position popwin:popup-window-position) := noselect (or (popwin:minibuffer-window-selected-p) noselect) :dedicated ded= icated :stick stick :tail tail)))) (catch '--cl-block-popwin:display-buffer-1-- (let* ((buffer (popwin:get-b= uffer buffer-or-name if-buffer-not-found)) (pattern-and-keywords (popwin:ma= tch-config buffer))) (if pattern-and-keywords nil (if if-config-not-found (= throw '--cl-block-popwin:display-buffer-1-- (funcall if-config-not-found bu= ffer)) (setq pattern-and-keywords '(t)))) (let* ((--cl-rest-- (append (cdr = pattern-and-keywords) default-config-keywords)) (regexp (car (cdr (plist-me= mber --cl-rest-- ...)))) (width (car (cdr (plist-member --cl-rest-- ...))))= (height (car (cdr (plist-member --cl-rest-- ...)))) (position (car (cdr (p= list-member --cl-rest-- ...)))) (noselect (car (cdr (plist-member --cl-rest= -- ...)))) (dedicated (car (cdr (plist-member --cl-rest-- ...)))) (stick (c= ar (cdr (plist-member --cl-rest-- ...)))) (tail (car (cdr (plist-member --c= l-rest-- ...))))) (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-= - (cond (... ...) (... ...) (t ...)))) (popwin:popup-buffer buffer :width (= or width popwin:popup-window-width) :height (or height popwin:popup-window-= height) :position (or position popwin:popup-window-position) :noselect (or = (popwin:minibuffer-window-selected-p) noselect) :dedicated dedicated :stick= stick :tail tail))))) (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((memq (= car --cl-keys--) '(:default-config-keywords :if-buffer-not-found :if-config= -not-found :allow-other-keys)) (setq --cl-keys-- (cdr (cdr --cl-keys--)))) = ((car (cdr (memq ... --cl-rest--))) (setq --cl-keys-- nil)) (t (error "Keyw= ord argument %s not one of (:default-config-keywords :if-buffer-not-found := if-config-not-found)" (car --cl-keys--)))))) (catch '--cl-block-popwin:disp= lay-buffer-1-- (let* ((buffer (popwin:get-buffer buffer-or-name if-buffer-n= ot-found)) (pattern-and-keywords (popwin:match-config buffer))) (if pattern= -and-keywords nil (if if-config-not-found (throw '--cl-block-popwin:display= -buffer-1-- (funcall if-config-not-found buffer)) (setq pattern-and-keyword= s '(t)))) (let* ((--cl-rest-- (append (cdr pattern-and-keywords) default-co= nfig-keywords)) (regexp (car (cdr ...))) (width (car (cdr ...))) (height (c= ar (cdr ...))) (position (car (cdr ...))) (noselect (car (cdr ...))) (dedic= ated (car (cdr ...))) (stick (car (cdr ...))) (tail (car (cdr ...)))) (prog= n (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ... ... ...))) = (popwin:popup-buffer buffer :width (or width popwin:popup-window-width) :he= ight (or height popwin:popup-window-height) :position (or position popwin:p= opup-window-position) :noselect (or (popwin:minibuffer-window-selected-p) n= oselect) :dedicated dedicated :stick stick :tail tail)))))) (let* ((default-config-keywords (car (cdr (plist-member --cl-rest-- ':def= ault-config-keywords)))) (if-buffer-not-found (car (cdr (or (plist-member -= -cl-rest-- ':if-buffer-not-found) (list nil :create))))) (if-config-not-fou= nd (car (cdr (plist-member --cl-rest-- ':if-config-not-found))))) (progn (l= et ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((memq (car --cl-ke= ys--) '...) (setq --cl-keys-- (cdr ...))) ((car (cdr ...)) (setq --cl-keys-= - nil)) (t (error "Keyword argument %s not one of (:default-config-keywords= :if-buffer-not-found :if-config-not-found)" (car --cl-keys--)))))) (catch = '--cl-block-popwin:display-buffer-1-- (let* ((buffer (popwin:get-buffer buf= fer-or-name if-buffer-not-found)) (pattern-and-keywords (popwin:match-confi= g buffer))) (if pattern-and-keywords nil (if if-config-not-found (throw '--= cl-block-popwin:display-buffer-1-- (funcall if-config-not-found buffer)) (s= etq pattern-and-keywords '...))) (let* ((--cl-rest-- (append ... default-co= nfig-keywords)) (regexp (car ...)) (width (car ...)) (height (car ...)) (po= sition (car ...)) (noselect (car ...)) (dedicated (car ...)) (stick (car ..= .)) (tail (car ...))) (progn (let (...) (while --cl-keys-- ...)) (popwin:po= pup-buffer buffer :width (or width popwin:popup-window-width) :height (or h= eight popwin:popup-window-height) :position (or position popwin:popup-windo= w-position) :noselect (or ... noselect) :dedicated dedicated :stick stick := tail tail))))))) popwin:display-buffer-1(# :if-config-not-found (lambda (bu= ffer) (popwin:original-display-buffer buffer not-this-window))) (if (popwin:reuse-window-p buffer-or-name not-this-window) (popwin:origin= al-display-buffer buffer-or-name not-this-window) (popwin:display-buffer-1 = buffer-or-name :if-config-not-found (if (with-no-warnings (called-interacti= vely-p)) nil #'(lambda (buffer) (popwin:original-display-buffer buffer not-= this-window))))) popwin:display-buffer(# nil) (let ((not-this-window (plist-get 'inhibit-same-window alist))) (popwin:d= isplay-buffer buffer not-this-window)) popwin:display-buffer-action(# (reusable-frames quote visi= ble (inhibit-same-window . t))) display-buffer(# nil) temp-buffer-window-show(# nil) describe-face(window-divider) #f(compiled-function (s _b _f) #)(window-divider # #) #f(compiled-function (arg0) #)(("face" facep #f(compil= ed-function (s _b _f) #))) mapcar(#f(compiled-function (arg0) #) ((nil cl-find-cl= ass #f(compiled-function (s b f) #)) (nil fboundp #f(com= piled-function (s _b _f) #)) (nil #f(compiled-function (= symbol) #) describe-variable) ("face" facep #f(compiled-= function (s _b _f) #)))) describe-symbol(window-divider) funcall-interactively(describe-symbol window-divider) call-interactively(describe-symbol nil nil) command-execute(describe-symbol) --=-=-= Content-Type: text/plain > > To put it into use run emacs with > > (setq default-frame-alist '((minibuffer . loose) (echo-area . t))) > > Looks better with window dividers enabled. > > Eventually I'll make a remote branch. But this may take its time. > > martin --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 02 03:09:51 2018 Received: (at 32257) by debbugs.gnu.org; 2 Aug 2018 07:09:51 +0000 Received: from localhost ([127.0.0.1]:38198 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fl7k7-0005Z7-AB for submit@debbugs.gnu.org; Thu, 02 Aug 2018 03:09:51 -0400 Received: from mout.gmx.net ([212.227.15.18]:36565) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fl7k5-0005Yu-9v for 32257@debbugs.gnu.org; Thu, 02 Aug 2018 03:09:49 -0400 Received: from [192.168.1.101] ([213.162.73.28]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MZkNy-1fWKRk1Gfe-00LXwv; Thu, 02 Aug 2018 09:09:42 +0200 Message-ID: <5B62AE2D.7010502@gmx.at> Date: Thu, 02 Aug 2018 09:09:33 +0200 From: martin rudalics MIME-Version: 1.0 To: Robert Pluim Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <5B6055A2.4010308@gmx.at> <5B6172E2.6010604@gmx.at> <87wota5jnt.fsf@gmail.com> In-Reply-To: <87wota5jnt.fsf@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:uc2eb1T5dVVj8A7pxY/c7apsdLsZibqkDTVVfDpwDrYT5ZbxS9v EtG2wx2U7Whi3nUGfdKBKxFeaWKnP7TcPbR/SWuh9i1IWdCk2/OBopOF1heV8U68gkQpO11 uXd327aQrMK8yNwY7PaZnOUSfAWQ9KkdvNqfhUsZ2m57jqXehYjYahmYyA9UmDq3C31E5yE ++O2r2dwqUbwU0UnM2aww== X-UI-Out-Filterresults: notjunk:1;V01:K0:Hw1ss6O098I=:oHDMoj61+YJu9u/JpjcQIw eXmUd12D2zlgvtLuTBJutlHK0B1SjTaNt3BgwsoW+lm6GOa/gi/+JvK7h1GAJ0Yl3ZlB/72WT lg1dWidbXIdIEMZMP++fsqEPVOjwv1UFHgY57D5K6v/Tsr45F4OcjDN5wdqeHLmZOjrNzpQoh 4D+gmXfeGee8RkHqkZM0gNl2X4hwOMLg7e85iUmdA7Von9TPWAj7Ldo7fOVvA4EvFFr5mkCd4 qdDR5dankAzOS2CzpslIsoYHcrjmVwXp37b5tmhAG8AmnGfuhwYqgp+ORS3g5nHhgBUSkY7Q2 4meQb46AZwMOHVrWLMurBVlj6W/JyfaM/ZHFK5geNJY6hv1Y7mmQ72ZT7aqLYlKgQIp0jfaxq i0s1ly+Q4g4io8Au5PoaxwWu4ZHPM0K5/5nn5auT7MijQGBJYh/cIF7ITrmUYYGuJuTgYCy5T /ogHyIeWac1NcxB9h/T5MP4Uw2L+5sBccIEd9o+5UakkQ0+A8JCCG8ecx7Du862swkTHrBq5u MqD3tgfG5MafnkZ6KhG5l31lHPk3kGh/tzljsmAO9L3ZukN+jMVeutYqYD2LCnUx6ueXkdgBq W9SyluUbEjpO9TVw44jQ4KuO+QgTMYzXUIPgbcXLIcvveENIqPycDcwoz2PJgKq/hxFrVHQ+v ++rQmvKb1OXms0+cB5dY+XvPgAhyRtjSTIGnVC0UVR87L3PfRtteoBYr2IV4IGkw0Fkkyit+n mvZubmE2KEYejS+qNM8W5pVo05wlD1xYihheQNm1n94YyJIPFCYx1KqHPwsHyvJio42WD6m+G cwrvu6l X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org, Andy Moreton X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > It looks interesting, but please use something other than 'loose' to > describe the behaviour. I guess 'dedicated' is already > overloaded. 'separate', 'no-echo'....? The behavior is more complicated than that. In escalating order a user can: (1) Put minibuffer and echo in a shared "fixed" window at the top of the frame. Together with the standard behavior, this is considered a fixed minibuffer window because it never goes away. (2) Put minibuffer and echo in a shared "loose" window anywhere on a frame. A loose window is not fixed, it can be deleted at any time and will be recreated when a message shall be shown or a question asked. (3) Put minibuffer and echo in separate, loose windows anywhere on a frame. Both windows can be deleted where the minibuffer window is deleted automatically when the dialog with the user has terminated. Hence, the term loose refers only to the fact that such a window can be deleted and will be recreated on-the-fly. Alternatively, we could call such a window "volatile", "ephemeral" ... And to indicate that echos shall appear in a separate window you have to specify a non-nil 'echo-area' frame parameter on top of a 'loose' minibuffer parameter. Eventually we would allow an arbitrary number of loose minibuffer and echo windows on a frame, each possibly owned by a separate thread allowing an arbitrary number of user interactions to go on in parallel. But I have not yet digged into all conventions for minibuffers and echos (naming, synchronicity) and maybe never will. martin From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 02 03:10:16 2018 Received: (at 32257) by debbugs.gnu.org; 2 Aug 2018 07:10:16 +0000 Received: from localhost ([127.0.0.1]:38202 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fl7kW-0005aG-Ik for submit@debbugs.gnu.org; Thu, 02 Aug 2018 03:10:16 -0400 Received: from mout.gmx.net ([212.227.15.15]:38171) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fl7kU-0005a4-Vg for 32257@debbugs.gnu.org; Thu, 02 Aug 2018 03:10:15 -0400 Received: from [192.168.1.101] ([213.162.73.28]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Llm5o-1gKBW21pJY-00ZRyW; Thu, 02 Aug 2018 09:10:06 +0200 Message-ID: <5B62AE45.5050900@gmx.at> Date: Thu, 02 Aug 2018 09:09:57 +0200 From: martin rudalics MIME-Version: 1.0 To: Live System User , 32257@debbugs.gnu.org Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <5B6055A2.4010308@gmx.at> <5B6172E2.6010604@gmx.at> <877el9u7rh.fsf@aol.com> In-Reply-To: <877el9u7rh.fsf@aol.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:V0VfT657r8Wa97imnW3GsKka+OkB2t+BaPQUIMpSMu4YDP+dfcv HtYkDBkIdu51MwcURsQ4MsA0S7u8SZbObokkC1PPfiF2+BUTIs4moHb5myWSMgmg3rF6sJO 5MNJZSKDwYphIsuWvQStNlJQNZYrDYkmtIFH8niTWdirvM1EH5Rb1quj0FpSmj3TMwazU5M Dnw2e/ZRcXMmlrrvmgS/A== X-UI-Out-Filterresults: notjunk:1;V01:K0:idAgjN3bJio=:el2zctgYBYVyHAHKEEAuKH HHTKGIm6YY8PMRWmWoQDLLildi8oxc0nkhdugUBu0RUgR80k2jdWLjrR2LvGd/asKSX4np31p CeiFCQRpXno788zqqhwCzjmFEx3NkwP5sPG/mHYlcjuTaCNvtq1Xm6btZUMu72ETOd+k5uVdi XXwOfr8wyuNtW4oZEvf9WP2z2ZdxWIkjkbCoiXxdG+ngOEs115qO7IUkV1jZG60itQ6xrsM2v Yy2n6krGlVbQTVwF1NdypXzMTar1QD/Fw2beS+4wc4ud0qtZg9JKzbZQFCpVPyhTEs6LgfFEp oJp7klnM+yNHnPz7t7JMyBJ8Pf/uA5LfqmTWMvwPkEuf9MWPOw/TUjxEJLowig4CGe2DL8eOM I3wd/pzS7Sxq5oY8WLVS2vNQvmV19J9tEK++DxS1HcDlH5sHU/tEVWOcsuoVjLUHwfT5GV+L3 dKbEqG7h1FevPhbEEa97k3yXZhZ6xGgjBwDSzWnNkxuV6BUfZl4nvhqQTJNrW0Xkj20KS34Aq oPr+clN2ZV+TYEVFxfVUpdwOe5QbLnSXHYH1aiR+diy9kZM8DXTFf94ft+d/4zZKT/G6xVvFJ Y4U7Rx/kFgrSDpwXRwA4PbpzsoV3FBFc8pGXm0gmOWvqwxGYPD/pIzch4iP9SwPZjDOqxPz1b 74+iJ+Vp3fYwbNfWYw26YQyTyH+tpNrp/C2xwx3dxNJ/GfOt6xxJRU9LOyiNAOEJnqI0o+xUu Cj12LEMtTJfvP1nO4qqhjnWjx5uaywaZH5U3psvyebKY+u3r6OhrsLMjBQy/BSdynb2oizuXi bFiisMv X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 32257 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > I know this is not ready but I thought I'd report this error > when using this patch with popwin.el (a third-party app). FWIW this is a bug in popwin.el and should be fixed there. The same error is reported here with Emacs 26 invoked via --eval "(setq default-frame-alist '((minibuffer . nil)))" martin From debbugs-submit-bounces@debbugs.gnu.org Tue May 21 20:52:47 2019 Received: (at 32257) by debbugs.gnu.org; 22 May 2019 00:52:47 +0000 Received: from localhost ([127.0.0.1]:41268 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hTFUs-000228-PS for submit@debbugs.gnu.org; Tue, 21 May 2019 20:52:47 -0400 Received: from mail-it1-f176.google.com ([209.85.166.176]:35832) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hTFUq-00021m-Sl; Tue, 21 May 2019 20:52:45 -0400 Received: by mail-it1-f176.google.com with SMTP id u186so450418ith.0; Tue, 21 May 2019 17:52:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=yOYB5ZLD9ozR/ZmJhRkaYDQwrb5C0MpXDq69kup1XM4=; b=aUm7tnNWTXBRj3HB85Ag9XcBJMRXrUW9cvkNYeVGyljuMj1OSe42Dlz+zCaZgJlEoO UmPEUVMmqMO5/A7MlcRY1ZzGW6Pzuu2PKVA0Vdo+uLagQHW7nGNyVf+EMVIK6WCy6BC7 pApnTXBaj8zexN3g0IzVZVrTt2lohG3EEbTh2qHs9Eh76RWHHC59RY23D3ZHxvhVFFoy HjAemV5gK38Hd2JnQ4ECH6sO7e7WCJ43YkkKjvUAUeNYgwe91X17Xqgsgpcf5fdc0WXD zqrE0Fz1jgrItmGqZwnCE6RytOpWbhe7gpBQZ76LzhKGT5YSbA8czx4DqpFWCPooYtc6 ODWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=yOYB5ZLD9ozR/ZmJhRkaYDQwrb5C0MpXDq69kup1XM4=; b=isYUdyulGckC6/ZlEHLvTVaPFwDT1k44UbE07Pz5l+GytvZwZJifV35/Ed6GrhcEXA 6wZBzow0bnJ3RGk2NW/dt10rZY4F7nf175tXmWqaMCSLWixEiAjKP3jJRvD3yYsb7zTu MJWNeY/pQKAvHQoiY93jas3Pt2l2Rmkq1D76AslusBcMdCstncyQWM53nUuZw1XkWNBz EHNpOIphNaHgPShzVbD31sNdHEt+Iv8lw60yDQ3qVLAHVO+8gG/7FpTwdkNG6hycnnm9 YElNm5uoLk+hJ3waqeCzjzxOAcQ2iKFhKNcQsZvXUtbKsArXgVk3k255MB4PnuILLrpP TQCA== X-Gm-Message-State: APjAAAW/H6iktY+yErBbFMxBJ00rgCkbtk0xg2VqCkiYOzCQP20AkwK1 lwuXRNAuLoZD/4mCXD2k+LcQ+psU X-Google-Smtp-Source: APXvYqzV1z4wIEs9K4tZXFKek5NmjKVaoqkZB2/EO68NNXCUpK1BrNlv+vmyAf3WZbAkyJdNfnwwrA== X-Received: by 2002:a24:910b:: with SMTP id i11mr6552335ite.110.1558486358869; Tue, 21 May 2019 17:52:38 -0700 (PDT) Received: from minid (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.gmail.com with ESMTPSA id 74sm2478457itk.3.2019.05.21.17.52.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 21 May 2019 17:52:37 -0700 (PDT) From: Noam Postavsky To: Andy Moreton Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <83zhy7o0i0.fsf@gnu.org> <83h8keodsi.fsf@gnu.org> Date: Tue, 21 May 2019 20:52:34 -0400 In-Reply-To: (Andy Moreton's message of "Wed, 01 Aug 2018 13:05:12 +0100") Message-ID: <87ftp79up9.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain tags 32257 + patch quit Andy Moreton writes: > On Wed 01 Aug 2018, Eli Zaretskii wrote: >>> >>> Noam's original patch may bring some possibility of new problems, >>> but it does at least fix the original problem (on emacs-26 and >>> master). >> >> Fixing a problem and introducing another doesn't sound wise to me. >> We've been there several times during the last years, and I don't want >> to make the same mistake again. Sorry. > > Perhaps reverting the patches that introduced read-multiple-choice > is the right answer then. How about for emacs-26, we call read-event only after receiving the problematic error. This works around the problem, and should be safe enough, since it only triggers when we would otherwise be ending up in an infloop anyway. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Avoid-infloop-in-read-multiple-choice-Bug-32257.patch Content-Description: patch >From 8545e36df343cc169d7ae1ab3a43c9805cd51015 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 21 May 2019 20:33:09 -0400 Subject: [PATCH] Avoid infloop in read-multiple-choice (Bug#32257) * lisp/emacs-lisp/rmc.el (read-multiple-choice): When `read-char' signals an error "Non-character input-event", call `read-event' to take the non-character event out of the queue. Don't merge to master, we just use `read-event' directly there, rather than this solution which relies a particular error message. --- lisp/emacs-lisp/rmc.el | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/rmc.el b/lisp/emacs-lisp/rmc.el index 6d1adae974..5411f2ba77 100644 --- a/lisp/emacs-lisp/rmc.el +++ b/lisp/emacs-lisp/rmc.el @@ -116,10 +116,15 @@ read-multiple-choice (cons (capitalize (cadr elem)) (car elem))) choices))) - (condition-case nil + (condition-case err (let ((cursor-in-echo-area t)) (read-char)) - (error nil)))) + (error (when (equal (cadr err) "Non-character input-event") + ;; Use up the non-character input-event. + ;; Otherwise we'll just keep reading it + ;; again and again (Bug#32257). + (read-event)) + nil)))) (setq answer (lookup-key query-replace-map (vector tchar) t)) (setq tchar (cond -- 2.11.0 --=-=-= Content-Type: text/plain And master can just use read-event. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Avoid-infloop-in-read-multiple-choice-Bug-32257.patch Content-Description: patch >From f1f32043f65dc19b6d63cf1ce52ef19b46c14e22 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 21 May 2019 20:38:00 -0400 Subject: [PATCH] Avoid infloop in read-multiple-choice (Bug#32257) * lisp/emacs-lisp/rmc.el (read-multiple-choice): Use `read-event' which won't get stuck (return the same event over and over again) for non-character events, unlike `read-char'. --- lisp/emacs-lisp/rmc.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/rmc.el b/lisp/emacs-lisp/rmc.el index 6d1adae974..47f3b8dc9c 100644 --- a/lisp/emacs-lisp/rmc.el +++ b/lisp/emacs-lisp/rmc.el @@ -118,7 +118,7 @@ read-multiple-choice choices))) (condition-case nil (let ((cursor-in-echo-area t)) - (read-char)) + (read-event)) (error nil)))) (setq answer (lookup-key query-replace-map (vector tchar) t)) (setq tchar -- 2.11.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Wed May 22 06:08:47 2019 Received: (at 32257) by debbugs.gnu.org; 22 May 2019 10:08:47 +0000 Received: from localhost ([127.0.0.1]:41591 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hTOAx-0004Nz-BJ for submit@debbugs.gnu.org; Wed, 22 May 2019 06:08:47 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37659) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hTOAv-0004Nn-Ft for 32257@debbugs.gnu.org; Wed, 22 May 2019 06:08:45 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35003) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTOAq-0004hU-Cf; Wed, 22 May 2019 06:08:40 -0400 Received: from [176.228.60.248] (port=4217 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1hTOAp-0003rS-O0; Wed, 22 May 2019 06:08:40 -0400 Date: Wed, 22 May 2019 13:08:47 +0300 Message-Id: <83v9y27qds.fsf@gnu.org> From: Eli Zaretskii To: Noam Postavsky In-reply-to: <87ftp79up9.fsf@gmail.com> (message from Noam Postavsky on Tue, 21 May 2019 20:52:34 -0400) Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <83zhy7o0i0.fsf@gnu.org> <83h8keodsi.fsf@gnu.org> <87ftp79up9.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 32257 Cc: 32257@debbugs.gnu.org, andrewjmoreton@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Noam Postavsky > Date: Tue, 21 May 2019 20:52:34 -0400 > Cc: 32257@debbugs.gnu.org > > >> Fixing a problem and introducing another doesn't sound wise to me. > >> We've been there several times during the last years, and I don't want > >> to make the same mistake again. Sorry. > > > > Perhaps reverting the patches that introduced read-multiple-choice > > is the right answer then. > > How about for emacs-26, we call read-event only after receiving the > problematic error. This works around the problem, and should be safe > enough, since it only triggers when we would otherwise be ending up in > an infloop anyway. SGTM, thanks. From debbugs-submit-bounces@debbugs.gnu.org Sun May 26 08:57:45 2019 Received: (at 32257) by debbugs.gnu.org; 26 May 2019 12:57:45 +0000 Received: from localhost ([127.0.0.1]:50504 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hUsie-00041q-TA for submit@debbugs.gnu.org; Sun, 26 May 2019 08:57:45 -0400 Received: from mail-it1-f178.google.com ([209.85.166.178]:55161) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hUsic-00041X-KA; Sun, 26 May 2019 08:57:43 -0400 Received: by mail-it1-f178.google.com with SMTP id h20so22911726itk.4; Sun, 26 May 2019 05:57:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=IwAw0FdLClCrQ/C3ICX70H8zx8XQPvPf21IdKSm7DFQ=; b=veAPUy8rvOoEHmre0UalSwNo56KyXWNr8zSV2CJjRGYimc349ueXVHlrxF+ccmquaZ /XHRg5Wx66JVN0VostNuLbj+4Ya4egK7Z1uNtsMxXibrNVMGh9tMAvx+nIaU5KPFC3jh AzDPraassGO0kuIBgW3P0M8n4zwFn6jBjnaVjaD9kmFODuPq7b6f+JQel6co1KVQD9Z1 CcSA1wKeio/F2j+edufc5L1DYgjwQCePvpTFH34+DH7ewl2GYOSy2pFjBQhCnH3Of3vK xzRfDT0QAy0/335AUYcR4YzzmwSBEqeV+efeDls08ru1MqWY7RbfA4uViZCSy22fgXHI 5YVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=IwAw0FdLClCrQ/C3ICX70H8zx8XQPvPf21IdKSm7DFQ=; b=r/XB+RhcygQUBCyCXt4+hbtBEVNjnv075CfNtCuxZVutvaV0a7mowYP8dFHNUjrTRy q6KPOc/iv2DfEXi3rvRXdgLZEPw4dhHecxNMVnWnNVxf7kKQMz+thwhJHRHzRKQkXWiQ VszPo7oY6+C04kXaJXCiYFEIMQN9w60xXrJxKdUeJn+OT3XTNtCO7FsvILxSZT7gPrQh 1rgaXrn1fo4MZTkT551x3CybYut4ay1FwXHjQbdjTktDY1UT3BO2ApWxCLRlqay6AvAn uEpnuAJQRSr/YLjCeLtPVhtnBqDt9qq4WUe+zk49Fnc07N4M111X+DZUd9/hGWN1R4Zv 5nIA== X-Gm-Message-State: APjAAAVN8+sVUT046179ARCSWhZ0Wa+HrTg8LM4sb4lkNbBwQuXMl2fI Gq4f/874XJprgiK3ebUn43ihp/Fx X-Google-Smtp-Source: APXvYqzIlaIbgHCHBQajmk3t1RYuUbnKlfN9sGg4k4czufHmBPuUgEeeCh0WVmo8MFaXWf/xRTvQVQ== X-Received: by 2002:a24:b30b:: with SMTP id e11mr20197270itf.99.1558875456452; Sun, 26 May 2019 05:57:36 -0700 (PDT) Received: from minid (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.gmail.com with ESMTPSA id w26sm2086424iom.59.2019.05.26.05.57.34 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 26 May 2019 05:57:35 -0700 (PDT) From: Noam Postavsky To: Eli Zaretskii Subject: Re: bug#32257: 26.1; read-multiple-choice inf loops on mouse clicks References: <87muug4z52.fsf@gmail.com> <87y3dy3i05.fsf@gmail.com> <83muudrqol.fsf@gnu.org> <83effosvx2.fsf@gnu.org> <87r2jo3l0w.fsf@gmail.com> <837elgss8l.fsf@gnu.org> <87sh40189j.fsf@gmail.com> <83zhy7o0i0.fsf@gnu.org> <83h8keodsi.fsf@gnu.org> <87ftp79up9.fsf@gmail.com> <83v9y27qds.fsf@gnu.org> Date: Sun, 26 May 2019 08:57:34 -0400 In-Reply-To: <83v9y27qds.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 22 May 2019 13:08:47 +0300") Message-ID: <878sut8jb5.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 32257 Cc: andrewjmoreton@gmail.com, 32257@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) tags 32257 fixed close 32257 26.3 quit Eli Zaretskii writes: >> How about for emacs-26, we call read-event only after receiving the >> problematic error. This works around the problem, and should be safe >> enough, since it only triggers when we would otherwise be ending up in >> an infloop anyway. > > SGTM, thanks. Done. c4d4dcf17e 2019-05-26T08:46:30-04:00 "Avoid infloop in read-multiple-choice (Bug#32257)" https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=c4d4dcf17e407a3c68e150f22b9756ef6c943070 3f03f6284a 2019-05-26T08:16:23-04:00 "Avoid infloop in read-multiple-choice (Bug#32257)" https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=3f03f6284a093d69086773226bc2273cf62f5e85 From unknown Thu Jun 19 16:23:59 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 24 Jun 2019 11:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator