Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rlEEA-000wAU-Fn for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Mar 2024 20:32:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rlEE8-00C0Kx-Mt for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Mar 2024 20:32:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rlEE8-00C0Kp-5a for pgsql-hackers@lists.postgresql.org; Fri, 15 Mar 2024 20:32:28 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rlEE4-004iOJ-Pk for pgsql-hackers@lists.postgresql.org; Fri, 15 Mar 2024 20:32:27 +0000 Received: from mail.postgrespro.ru (webmail.mstn.postgrespro.ru [192.168.2.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: i.kartyshov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id C4869E20E2D; Fri, 15 Mar 2024 23:32:23 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1710534743; bh=4iLXZaHHBMyAAJpeQiQnuZ75CpDzm8SRZ789ycv43aQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References:User-Agent: Message-ID:From; b=IEHZKCqSNjIAQpTbCBvnN2adLGKKaDp2Cn6ZyfbUiWvqe+zRdCwdayFSQpbeACIOm LDnKICViwioenOpHcr3VLICgZAcymzfE89LPI3FfOcXpVqU8QiU5x5YVBAE89eD8pD wW2EjazK4nt4jE+Ka+3z7M49T5Izmk7mDSYk810YRJ+M+bRk95V90192N1VsB8n18e OIyJkcrVnbFdXQezcvFrJCbGx+7YLWvgMQZbyW+X7IZ2PJKGFvJiatoZTaL0m4vtKr kdhw00HTyMIUrlzQ+KbB+fBpwjOTqESickp2FAXaxbGhu7jDe4Ub/nXTfDgfHK48Ut Y/z9z8v+W4hpA== MIME-Version: 1.0 Date: Fri, 15 Mar 2024 23:32:23 +0300 From: Kartyshov Ivan To: Alexander Korotkov Cc: Amit Kapila , dilipbalaut@gmail.com, smithpb2250@gmail.com, pgsql-hackers@lists.postgresql.org Subject: Re: [HACKERS] make async slave to wait for lsn to be replayed In-Reply-To: <9e0ad3332c0bf7c4f00ff10677245e46@postgrespro.ru> References: <22f122-655b3e80-3-688b3700@97587957> <4953563546cb8c8851f84c7debf723ef@postgrespro.ru> <31547e4e8c263392a768ea89a3f57833@postgrespro.ru> <9e0ad3332c0bf7c4f00ff10677245e46@postgrespro.ru> User-Agent: Roundcube Webmail/1.6.5 Message-ID: <59cf2cbdc6f9bf81602e3515acca22b0@postgrespro.ru> X-Sender: i.kartyshov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_fd384b991447b7fc0431399da6245994" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_fd384b991447b7fc0431399da6245994 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-03-15 22:59, Kartyshov Ivan wrote: > On 2024-03-11 13:44, Alexander Korotkov wrote: >> I picked the second option and left only the AFTER clause for the >> BEGIN statement. I think this should be enough for the beginning. > > Thank you for your rework on your patch, here I made some fixes: > 0) autocomplete > 1) less jumps > 2) more description and add cases in doc > > I think, it will be useful to have stand-alone statement. > Why you would like to see only AFTER clause for the BEGIN statement? Rebase and update patch. -- Ivan Kartyshov Postgres Professional: www.postgrespro.com --=_fd384b991447b7fc0431399da6245994 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v11-0001-Implement-AFTER-clause-for-BEGIN-command.patch Content-Disposition: attachment; filename=v11-0001-Implement-AFTER-clause-for-BEGIN-command.patch; size=23982 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYmVnaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvYmVnaW4uc2dtbAppbmRleCAwMTZiMDIxNDg3Li43NTllNDZlYzI0IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5z Z21sCkBAIC0yMSwxMyArMjEsMTYgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVm c3lub3BzaXNkaXY+CiA8c3lub3BzaXM+Ci1CRUdJTiBbIFdPUksgfCBUUkFOU0FDVElPTiBdIFsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2Vh YmxlPiBbLCAuLi5dIF0KK0JFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4u Ll0gXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9ldmVudDwvcmVwbGFjZWFi bGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5z YWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09M QVRJT04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1J VFRFRCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAg ICBbIE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+d2FpdF9ldmVudDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorICAgIEFG VEVSIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sc25fdmFsdWU8L3JlcGxhY2VhYmxl PiBbIFdJVEhJTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtYmVyX29mX21pbGxp c2Vjb25kczwvcmVwbGFjZWFibGU+IF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4K IApAQCAtNzgsNiArODEsNTAgQEAgQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC8KICAgICAgPC9wYXJh PgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT48bGl0ZXJhbD5BRlRFUjwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmxzbl92YWx1ZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICAgPGNvbW1hbmQ+QUZURVI8L2NvbW1hbmQ+IGNsYXVzZSBp cyB1c2VkIG9uIHN0YW5kYnkgaW4KKyAgICAgICA8bGluayBsaW5rZW5kPSJzdHJlYW1pbmctcmVw bGljYXRpb24iPnBoeXNpY2FsIHN0cmVhbWluZyByZXBsaWNhdGlvbjwvbGluaz4KKyAgICAgICBh bmQgc3BlY2lmaWVzIHdhaXRpbmcgZm9yIHRoZSBzcGVjaWZpYyBXQUwgbG9jYXRpb24gKDxhY3Jv bnltPkxTTjwvYWNyb255bT4pCisgICAgICAgdG8gYmUgcmVwbGF5ZWQgYmVmb3JlIHN0YXJ0aW5n IHRoZSB0cmFuc2FjdGlvbi4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgICBUaGlz IG9wdGlvbiBpcyB1c2VmdWwgd2hlbiB0aGUgdXNlciBtYWtlcyBzb21lIGRhdGEgY2hhbmdlcyBv biBwcmltYXJ5CisgICAgICAgYW5kIG5lZWRzIGEgZ3VhcmFudGVlIHRvIHNlZSB0aGVzZSBjaGFu Z2VzIG9uIHN0YW5kYnkuICBUaGUgTFNOIHRvIHdhaXQKKyAgICAgICBjb3VsZCBiZSBvYnRhaW5l ZCBvbiB0aGUgcHJpbWFyeSB1c2luZworICAgICAgIDxsaW5rIGxpbmtlbmQ9ImZ1bmN0aW9ucy1h ZG1pbi1iYWNrdXAiPjxmdW5jdGlvbj5wZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuPC9mdW5jdGlv bj48L2xpbms+CisgICAgICAgZnVuY3Rpb24gYWZ0ZXIgY29tbWl0dGluZyB0aGUgcmVsZXZhbnQg Y2hhbmdlcy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRy eT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5XSVRISU48L2xpdGVy YWw+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1iZXJfb2ZfbWlsbGlzZWNvbmRz PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg ICBQcm92aWRlcyB0aGUgdGltZW91dCBmb3IgdGhlIDxjb21tYW5kPkFGVEVSPC9jb21tYW5kPiBj bGF1c2UuCisgICAgICAgRXNwZWNpYWxseSBoZWxwZnVsIHRvIHByZXZlbnQgZnJlZXppbmcgb24g c3RyZWFtaW5nIHJlcGxpY2F0aW9uCisgICAgICAgY29ubmVjdGlvbiBmYWlsdXJlcy4KKyAgICAg PC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgICBPbiBwcmFjdGljZSB3ZSAgaGF2ZSB0aHJlZSB2 YXJpYW50cyBvZiB3YWl0aW5nIGN1cnJlbnQgTFNOOgorICAgICAgICAgIHdhaXRpbmcgZm9yZXZl ciAtIChmaW5pc2ggb24gUE0gREVBVEggb3IgU0lHSU5UKQorICAgICAgICAgICAgIEJFR0lOIEFG VEVSIGxzbjsKKyAgICAgICAgICAgICAgICB3YWl0IGZvciBjaGFuZ2VzIHRvIGJlIHJlcGxheWVk IG9uIHN0YW5kYnkgYW5kIHRoZW4gc3RhcnQgdHJhbnNhY3Rpb24KKyAgICAgICAgICB3YWl0aW5n IG9uIHRpbWVvdXQgLQorICAgICAgICAgICAgIEJFR0lOIEFGVEVSIGxzbiBXSVRISU4gNjAwMDA7 CisgICAgICAgICAgICAgICAgd2FpdCBjaGFuZ2VzIGZvciA2MCBzZWNvbmRzIGFuZCB0aGVuIGNh bmNlbCB0byBzdGFydCB0cmFuc2FjdGlvbgorICAgICAgICAgICAgICAgIHRvIHBlcmV2ZW50IGZy ZWV6aW5nIG9uIHN0cmVhbWluZyByZXBsaWNhdGlvbiBjb25uZWN0aW9uIGZhaWx1cmVzLgorICAg ICAgICAgIG5vIHdhaXQsIGp1c3QgY2hlY2sgLQorICAgICAgICAgICAgIEJFR0lOIEFGVEVSIGxz biBXSVRISU4gMTsKKyAgICAgICAgICAgICAgICBzb21lIHRpbWUgaXQgaXMgdXNlZnVsIGp1c3Qg Y2hlY2sgaWYgY2hhbmdlcyB3YXMgcmVwbGF5ZWQKKyAgICAgICA8cGhyYXNlPndoZXJlIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1iZXJfb2ZfbWlsbGlzZWNvbmRzPC9yZXBsYWNl YWJsZT4gY2FuOjwvcGhyYXNlPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KQEAgLTEyMyw2ICsx NzAsMzMgQEAgQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC8KIDxwcm9ncmFtbGlzdGluZz4KIEJFR0lO OwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBiZWdpbiBhIHRy YW5zYWN0aW9uIGJsb2NrIGFmdGVyIHJlcGxheWluZyB0aGUgZ2l2ZW4gPGFjcm9ueW0+TFNOPC9h Y3JvbnltPi4KKyAgIFRoZSBjb21tYW5kIHdpbGwgYmUgY2FuY2VsZWQgaWYgdGhlIGdpdmVuIDxh Y3JvbnltPkxTTjwvYWNyb255bT4gaXMgbm90CisgICByZWFjaGVkIHdpdGhpbiB0aGUgdGltZW91 dCBvZiBvbmUgc2Vjb25kLgorPHByb2dyYW1saXN0aW5nPgorQkVHSU4gQUZURVIgJzAvM0YwNUY3 OTEnIFdJVEhJTiAxMDAwOworQkVHSU4KKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxw YXJhPgorICAgVGhpcyB3YXkgd2UganVzdCBjaGVjayAod2l0aG91dCB3YWl0aW5nKSBpZiA8YWNy b255bT5MU048L2Fjcm9ueW0+IHdhcyByZXBsYXllZCwKKyAgIGFuZCBpZiBpdCB3YXMgdGhlbiBz dGFydCB0cmFuc2FjdGlvbi4KKzxwcm9ncmFtbGlzdGluZz4KK0JFR0lOIEFGVEVSICcwLzNGMEZG NzkxJyBXSVRISU4gMTsKK0VSUk9SOiAgY2FuY2VsaW5nIHdhaXRpbmcgZm9yIExTTiBkdWUgdG8g dGltZW91dAorPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBiZWdp biBhIHRyYW5zYWN0aW9uIGJsb2NrIGFmdGVyIHJlcGxheWluZyB0aGUgZ2l2ZW4gPGFjcm9ueW0+ TFNOPC9hY3JvbnltPi4KKyAgIFRoZSBjb21tYW5kIHdpbGwgYmUgY2FuY2VsZWQgb25seSBvbiB1 c2VyIHJlcXVlc3Qgb3IgcG9zdG1hc3RlciBkZWF0aC4KKzxwcm9ncmFtbGlzdGluZz4KK0JFR0lO IEFGVEVSICcwLzNGMEZGNzkxJzsKK15DQ2FuY2VsIHJlcXVlc3Qgc2VudAorRVJST1I6ICBjYW5j ZWxpbmcgc3RhdGVtZW50IGR1ZSB0byB1c2VyIHJlcXVlc3QKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9w YXJhPgorCiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvc3RhcnRf dHJhbnNhY3Rpb24uc2dtbAppbmRleCA3NGNjZDdlMzQ1Li40NmEzYmNmMWE4IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9zdGFydF90cmFuc2FjdGlvbi5zZ21sCkBAIC0yMSwxMyArMjEsMTYgQEAgUG9zdGdy ZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+Ci1TVEFS VCBUUkFOU0FDVElPTiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlv bl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCitTVEFSVCBUUkFOU0FDVElPTiBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4g WywgLi4uXSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2V2ZW50PC9yZXBs YWNlYWJsZT4KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAogICAg IElTT0xBVElPTiBMRVZFTCB7IFNFUklBTElaQUJMRSB8IFJFUEVBVEFCTEUgUkVBRCB8IFJFQUQg Q09NTUlUVEVEIHwgUkVBRCBVTkNPTU1JVFRFRCB9CiAgICAgUkVBRCBXUklURSB8IFJFQUQgT05M WQogICAgIFsgTk9UIF0gREVGRVJSQUJMRQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj53YWl0X2V2ZW50PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+Cisg ICAgQUZURVIgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl92YWx1ZTwvcmVwbGFj ZWFibGU+IFsgV0lUSElOIG51bWJlcl9vZl9taWxsaXNlY29uZHMgXQogPC9zeW5vcHNpcz4KICA8 L3JlZnN5bm9wc2lzZGl2PgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVy eS5jCmluZGV4IDI5YzViZWMwODQuLjg5Yjk5N2FkNDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dyZWNvdmVyeS5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYmFja3Vw L2Jhc2ViYWNrdXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRl ICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdGxzbi5oIgog I2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCkBAIC0xODI4LDYgKzE4MjksMTQgQEAgUGVyZm9ybVdhbFJlY292 ZXJ5KHZvaWQpCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBJZiB3ZSByZXBsYXll ZCBhbiBMU04gdGhhdCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwgc2V0IGxhdGNoZXMKKwkJCSAq IGluIHNoYXJlZCBtZW1vcnkgYXJyYXkgdG8gbm90aWZ5IHRoZSB3YWl0ZXIuCisJCQkgKi8KKwkJ CWlmICh3YWl0TFNOICYmCisJCQkJCShYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJl Y1B0ciA+PSBwZ19hdG9taWNfcmVhZF91NjQoJndhaXRMU04tPm1pbkxTTikpKQorCQkJCVdhaXRM U05TZXRMYXRjaGVzKFhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyKTsKKwog CQkJLyogRWxzZSwgdHJ5IHRvIGZldGNoIHRoZSBuZXh0IFdBTCByZWNvcmQgKi8KIAkJCXJlY29y ZCA9IFJlYWRSZWNvcmQoeGxvZ3ByZWZldGNoZXIsIExPRywgZmFsc2UsIHJlcGxheVRMSSk7CiAJ CX0gd2hpbGUgKHJlY29yZCAhPSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNDhmNzM0 OGY5MS4uY2VkZTkwYzNiOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKQEAgLTYxLDYgKzYxLDcgQEAg T0JKUyA9IFwKIAl2YWN1dW0ubyBcCiAJdmFjdXVtcGFyYWxsZWwubyBcCiAJdmFyaWFibGUubyBc Ci0Jdmlldy5vCisJdmlldy5vIFwKKwl3YWl0bHNuLm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIp L3NyYy9iYWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZAppbmRleCA2ZGQw MGE0YWJkLi43NTQ5YmU1ZGMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNv bi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZApAQCAtNTAsNCAr NTAsNSBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICd2YWN1dW1wYXJhbGxlbC5jJywK ICAgJ3ZhcmlhYmxlLmMnLAogICAndmlldy5jJywKKyAgJ3dhaXRsc24uYycsCiApCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0bHNuLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy93YWl0bHNuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uY2ExNWFm YTQ2OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXRsc24uYwpA QCAtMCwwICsxLDI3OCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdGxzbi5jCisg KgkgIEltcGxlbWVudHMgd2FpdGluZyBmb3IgdGhlIGdpdmVuIExTTiwgd2hpY2ggaXMgdXNlZCBp bgorICoJICBCRUdJTiBBRlRFUiAuLi4gWyBXSVRISU4gLi4uIF0gY2xhdXNlLgorICoKKyAqIENv cHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5kcy93YWl0bHNuLmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSA8ZmxvYXQuaD4KKyNpbmNs dWRlIDxtYXRoLmg+CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIK KyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKKyNpbmNsdWRl ICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5jbHVkZSAiYWNj ZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXRsc24uaCIKKyNp bmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9wbXNpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgorI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRp bHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCisjaW5jbHVkZSAidXRp bHMvZm1ncnByb3Rvcy5oIgorCisvKiBBZGQgdG8gLyBkZWxldGUgZnJvbSBzaGFyZWQgbWVtb3J5 IGFycmF5ICovCitzdGF0aWMgdm9pZCBhZGRMU05XYWl0ZXIoWExvZ1JlY1B0ciBsc24pOworc3Rh dGljIHZvaWQgZGVsZXRlTFNOV2FpdGVyKHZvaWQpOworCitzdHJ1Y3QgV2FpdExTTlN0YXRlICp3 YWl0TFNOID0gTlVMTDsKK3N0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgaGF2ZVNobWVtSXRl bSA9IGZhbHNlOworCisvKgorICogUmVwb3J0IHRoZSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBz cGFjZSBuZWVkZWQgZm9yIFdhaXRMU05TdGF0ZQorICovCitTaXplCitXYWl0TFNOU2htZW1TaXpl KHZvaWQpCit7CisJU2l6ZQkJc2l6ZTsKKworCXNpemUgPSBvZmZzZXRvZihXYWl0TFNOU3RhdGUs IHByb2NJbmZvcyk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE1heEJhY2tlbmRz LCBzaXplb2YoV2FpdExTTlByb2NJbmZvKSkpOworCXJldHVybiBzaXplOworfQorCisvKiBJbml0 aWFsaXplIHRoZSBXYWl0TFNOU3RhdGUgaW4gdGhlIHNoYXJlZCBtZW1vcnkgKi8KK3ZvaWQKK1dh aXRMU05TaG1lbUluaXQodm9pZCkKK3sKKwlib29sCQlmb3VuZDsKKworCXdhaXRMU04gPSAoV2Fp dExTTlN0YXRlICopIFNobWVtSW5pdFN0cnVjdCgiV2FpdExTTlN0YXRlIiwKKwkJCQkJCQkJCQkJ IFdhaXRMU05TaG1lbVNpemUoKSwKKwkJCQkJCQkJCQkJICZmb3VuZCk7CisJaWYgKCFmb3VuZCkK Kwl7CisJCVNwaW5Mb2NrSW5pdCgmd2FpdExTTi0+bXV0ZXgpOworCQl3YWl0TFNOLT5udW1XYWl0 ZWRQcm9jcyA9IDA7CisJCXBnX2F0b21pY19pbml0X3U2NCgmd2FpdExTTi0+bWluTFNOLCBQR19V SU5UNjRfTUFYKTsKKwl9Cit9CisKKy8qCisgKiBBZGQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRo ZSBMU04gd2FpdGVyIGJhY2tlbmQgdG8gdGhlIHNoYXJlZCBtZW1vcnkKKyAqIGFycmF5LgorICov CitzdGF0aWMgdm9pZAorYWRkTFNOV2FpdGVyKFhMb2dSZWNQdHIgbHNuKQoreworCVdhaXRMU05Q cm9jSW5mbyBjdXI7CisJaW50CQkJaTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd2FpdExTTi0+bXV0 ZXgpOworCisJY3VyLnByb2NudW0gPSBNeVByb2NOdW1iZXI7CisJY3VyLndhaXRMU04gPSBsc247 CisKKwlmb3IgKGkgPSAwOyBpIDwgd2FpdExTTi0+bnVtV2FpdGVkUHJvY3M7IGkrKykKKwl7CisJ CWlmICh3YWl0TFNOLT5wcm9jSW5mb3NbaV0ud2FpdExTTiA+PSBjdXIud2FpdExTTikKKwkJewor CQkJV2FpdExTTlByb2NJbmZvIHRtcDsKKworCQkJdG1wID0gd2FpdExTTi0+cHJvY0luZm9zW2ld OworCQkJd2FpdExTTi0+cHJvY0luZm9zW2ldID0gY3VyOworCQkJY3VyID0gdG1wOworCQl9CisJ fQorCXdhaXRMU04tPnByb2NJbmZvc1tpXSA9IGN1cjsKKwl3YWl0TFNOLT5udW1XYWl0ZWRQcm9j cysrOworCisJcGdfYXRvbWljX3dyaXRlX3U2NCgmd2FpdExTTi0+bWluTFNOLCB3YWl0TFNOLT5w cm9jSW5mb3NbaV0ud2FpdExTTik7CisJU3BpbkxvY2tSZWxlYXNlKCZ3YWl0TFNOLT5tdXRleCk7 Cit9CisKKy8qCisgKiBEZWxldGUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBMU04gd2FpdGVy IGJhY2tlbmQgZnJvbSB0aGUgc2hhcmVkIG1lbW9yeQorICogYXJyYXkuCisgKi8KK3N0YXRpYyB2 b2lkCitkZWxldGVMU05XYWl0ZXIodm9pZCkKK3sKKwlpbnQJCQlpOworCWJvb2wJCWZvdW5kID0g ZmFsc2U7CisKKwlTcGluTG9ja0FjcXVpcmUoJndhaXRMU04tPm11dGV4KTsKKworCWZvciAoaSA9 IDA7IGkgPCB3YWl0TFNOLT5udW1XYWl0ZWRQcm9jczsgaSsrKQorCXsKKwkJaWYgKHdhaXRMU04t PnByb2NJbmZvc1tpXS5wcm9jbnVtID09IE15UHJvY051bWJlcikKKwkJCWZvdW5kID0gdHJ1ZTsK KworCQlpZiAoZm91bmQgJiYgaSA8IHdhaXRMU04tPm51bVdhaXRlZFByb2NzIC0gMSkKKwkJewor CQkJd2FpdExTTi0+cHJvY0luZm9zW2ldID0gd2FpdExTTi0+cHJvY0luZm9zW2kgKyAxXTsKKwkJ fQorCX0KKworCWlmICghZm91bmQpCisJeworCQlTcGluTG9ja1JlbGVhc2UoJndhaXRMU04tPm11 dGV4KTsKKwkJcmV0dXJuOworCX0KKwl3YWl0TFNOLT5udW1XYWl0ZWRQcm9jcy0tOworCisJaWYg KHdhaXRMU04tPm51bVdhaXRlZFByb2NzICE9IDApCisJCXBnX2F0b21pY193cml0ZV91NjQoJndh aXRMU04tPm1pbkxTTiwgd2FpdExTTi0+cHJvY0luZm9zW2ldLndhaXRMU04pOworCWVsc2UKKwkJ cGdfYXRvbWljX3dyaXRlX3U2NCgmd2FpdExTTi0+bWluTFNOLCBQR19VSU5UNjRfTUFYKTsKKwor CVNwaW5Mb2NrUmVsZWFzZSgmd2FpdExTTi0+bXV0ZXgpOworfQorCisvKiBTZXQgYWxsIGxhdGNo ZXMgaW4gc2hhcmVkIG1lbW9yeSB0byBzaWduYWwgdGhhdCBuZXcgTFNOIGhhcyBiZWVuIHJlcGxh eWVkICovCit2b2lkCitXYWl0TFNOU2V0TGF0Y2hlcyhYTG9nUmVjUHRyIGN1ckxTTikKK3sKKwl1 aW50MzIJCWksCisJCQkJbnVtV2FrZVVwUHJvY3M7CisKKwlTcGluTG9ja0FjcXVpcmUoJndhaXRM U04tPm11dGV4KTsKKworCS8qCisJICogU2V0IGxhdGNoZXMgZm9yIHByb2Nlc3MsIHdob3NlIHdh aXRlZCBMU05zIGFyZSBhbHJlYWR5IHJlcGxheWVkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCB3 YWl0TFNOLT5udW1XYWl0ZWRQcm9jczsgaSsrKQorCXsKKwkJUEdQUk9DCSAgICpiYWNrZW5kOwor CisJCWlmICh3YWl0TFNOLT5wcm9jSW5mb3NbaV0ud2FpdExTTiA+IGN1ckxTTikKKwkJCWJyZWFr OworCisJCWJhY2tlbmQgPSBHZXRQR1Byb2NCeU51bWJlcih3YWl0TFNOLT5wcm9jSW5mb3NbaV0u cHJvY251bSk7CisJCVNldExhdGNoKCZiYWNrZW5kLT5wcm9jTGF0Y2gpOworCX0KKworCS8qCisJ ICogSW1tZWRpYXRlbHkgcmVtb3ZlIHRob3NlIHByb2Nlc3NlcyBmcm9tIHRoZSBzaG1lbSBhcnJh eS4gIE90aGVyd2lzZSwKKwkgKiBzaG1lbSBhcnJheSBpdGVtcyB3aWxsIGJlIGhlcmUgdGlsbCBj b3JyZXNwb25kaW5nIHByb2Nlc3NlcyB3YWtlIHVwIGFuZAorCSAqIGRlbGV0ZSB0aGVtc2VsdmVz LgorCSAqLworCW51bVdha2VVcFByb2NzID0gaTsKKwlmb3IgKGkgPSAwOyBpIDwgd2FpdExTTi0+ bnVtV2FpdGVkUHJvY3MgLSBudW1XYWtlVXBQcm9jczsgaSsrKQorCQl3YWl0TFNOLT5wcm9jSW5m b3NbaV0gPSB3YWl0TFNOLT5wcm9jSW5mb3NbaSArIG51bVdha2VVcFByb2NzXTsKKwl3YWl0TFNO LT5udW1XYWl0ZWRQcm9jcyAtPSBudW1XYWtlVXBQcm9jczsKKworCWlmICh3YWl0TFNOLT5udW1X YWl0ZWRQcm9jcyAhPSAwKQorCQlwZ19hdG9taWNfd3JpdGVfdTY0KCZ3YWl0TFNOLT5taW5MU04s IHdhaXRMU04tPnByb2NJbmZvc1tpXS53YWl0TFNOKTsKKwllbHNlCisJCXBnX2F0b21pY193cml0 ZV91NjQoJndhaXRMU04tPm1pbkxTTiwgUEdfVUlOVDY0X01BWCk7CisKKwlTcGluTG9ja1JlbGVh c2UoJndhaXRMU04tPm11dGV4KTsKK30KKworLyoKKyAqIERlbGV0ZSBvdXIgaXRlbSBmcm9tIHNo bWVtIGFycmF5IGlmIGFueS4KKyAqLwordm9pZAorV2FpdExTTkNsZWFudXAodm9pZCkKK3sKKwlp ZiAoaGF2ZVNobWVtSXRlbSkKKwkJZGVsZXRlTFNOV2FpdGVyKCk7Cit9CisKKy8qCisgKiBXYWl0 IHVzaW5nIE15TGF0Y2ggdG8gd2FpdCB0aWxsIHRoZSBnaXZlbiBMU04gaXMgcmVwbGF5ZWQsIHRo ZSBwb3N0bWFzdGVyIGRpZXMgb3IKKyAqIHRpbWVvdXQgaGFwcGVucy4KKyAqLwordm9pZAorV2Fp dEZvckxTTihYTG9nUmVjUHRyIGxzbiwgaW50IG1pbGxpc2VjcykKK3sKKwlYTG9nUmVjUHRyCWN1 ckxTTjsKKwlpbnQJCQlsYXRjaF9ldmVudHM7CisJVGltZXN0YW1wVHogZW5kdGltZTsKKworCS8q IFNob3VsZG4ndCBiZSBjYWxsZWQgd2hlbiBzaG1lbSBpc24ndCBpbml0aWFsaXplZCAqLworCUFz c2VydCh3YWl0TFNOKTsKKworCS8qIFNob3VsZCBiZSBvbmx5IGNhbGxlZCBieSBhIGJhY2tlbmQg Ki8KKwlBc3NlcnQoTXlCYWNrZW5kVHlwZSA9PSBCX0JBQ0tFTkQpOworCisJaWYgKCFSZWNvdmVy eUluUHJvZ3Jlc3MoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJyZWNvdmVyeSBp cyBub3QgaW4gcHJvZ3Jlc3MiKSwKKwkJCQkgZXJyaGludCgiV2FpdGluZyBmb3IgTFNOIGNhbiBv bmx5IGJlIGV4ZWN1dGVkIGR1cmluZyByZWNvdmVyeS4iKSkpOworCisJZW5kdGltZSA9IEdldEN1 cnJlbnRUaW1lc3RhbXAoKSArIG1pbGxpc2VjcyAqIDEwMDA7CisKKwlsYXRjaF9ldmVudHMgPSBX TF9USU1FT1VUIHwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKKwlhZGRMU05X YWl0ZXIobHNuKTsKKwloYXZlU2htZW1JdGVtID0gdHJ1ZTsKKworCWZvciAoOzspCisJeworCQlp bnQJCQlyYzsKKwkJbG9uZwkJZGVsYXlfbXM7CisKKwkJLyogQ2hlY2sgaWYgdGhlIHdhaXRlZCBM U04gaGFzIGJlZW4gcmVwbGF5ZWQgKi8KKwkJY3VyTFNOID0gR2V0WExvZ1JlcGxheVJlY1B0cihO VUxMKTsKKwkJaWYgKGxzbiA8PSBjdXJMU04pCisJCQlicmVhazsKKworCQlpZiAobWlsbGlzZWNz ID4gMCkKKwkJCWRlbGF5X21zID0gKGVuZHRpbWUgLSBHZXRDdXJyZW50VGltZXN0YW1wKCkpIC8g MTAwMDsKKwkJZWxzZQorCisJCQkvKiBJZiBubyB0aW1lb3V0IGlzIHNldCB0aGVuIHdha2UgdXAg aW4gMSBtaW51dGUgZm9yIGludGVycnVwdHMgKi8KKwkJCWRlbGF5X21zID0gNjAwMDA7CisKKwkJ aWYgKGRlbGF5X21zIDw9IDApCisJCQlicmVhazsKKworCQkvKgorCQkgKiBJZiByZWNlaXZlZCBh biBpbnRlcnJ1cHRpb24gZnJvbSBDSEVDS19GT1JfSU5URVJSVVBUUywgdGhlbiBkZWxldGUKKwkJ ICogdGhlIGN1cnJlbnQgZXZlbnQgZnJvbSBhcnJheS4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CisKKwkJLyogSWYgcG9zdG1hc3RlciBkaWVzLCBmaW5pc2ggaW1tZWRpYXRlbHkg Ki8KKwkJaWYgKCFQb3N0bWFzdGVySXNBbGl2ZSgpKQorCQkJYnJlYWs7CisKKwkJcmMgPSBXYWl0 TGF0Y2goTXlMYXRjaCwgbGF0Y2hfZXZlbnRzLCBkZWxheV9tcywKKwkJCQkJICAgV0FJVF9FVkVO VF9DTElFTlRfUkVBRCk7CisKKwkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwl9CisKKwlpZiAobHNuID4gY3VyTFNOKQorCXsKKwkJZGVsZXRlTFNOV2Fp dGVyKCk7CisJCWhhdmVTaG1lbUl0ZW0gPSBmYWxzZTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1FVRVJZX0NBTkNFTEVEKSwKKwkJCQkgZXJybXNnKCJjYW5jZWxpbmcg d2FpdGluZyBmb3IgTFNOIGR1ZSB0byB0aW1lb3V0IikpKTsKKwl9CisJZWxzZQorCXsKKwkJaGF2 ZVNobWVtSXRlbSA9IGZhbHNlOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGM2ZTJmNjc5ZmQuLmJl OTdmNWE4NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNjQ3LDYgKzY0Nyw4IEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJ aGFzaF9wYXJ0Ym91bmRfZWxlbQogCisldHlwZSA8aXZhbD4JCWFmdGVyX2xzbl90aW1lb3V0CisK ICV0eXBlIDxub2RlPglqc29uX2Zvcm1hdF9jbGF1c2UKIAkJCQlqc29uX2Zvcm1hdF9jbGF1c2Vf b3B0CiAJCQkJanNvbl92YWx1ZV9leHByCkBAIC0zMTkzLDYgKzMxOTUsMTQgQEAgaGFzaF9wYXJ0 Ym91bmQ6CiAJCQl9CiAJCTsKIAorLyoKKyAqIFdJVEhJTiB0aW1lb3V0IG9wdGlvbmFsIGNsYXVz ZSBmb3IgQkVHSU4gQUZURVIgbHNuCisgKi8KK2FmdGVyX2xzbl90aW1lb3V0OgorCQkJV0lUSElO IEljb25zdAkJeyAkJCA9ICQyOyB9CisJCQl8IC8qIEVNUFRZICovICAgICAgICAgICB7ICQkID0g MDsgfQorCQk7CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCUFMVEVSIFRZUEUKQEAg LTEwOTQ5LDYgKzEwOTU5LDE3IEBAIFRyYW5zYWN0aW9uU3RtdDoKIAkJCQkJbi0+bG9jYXRpb24g PSAtMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgU1RBUlQgVFJBTlNBQ1RJ T04gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5IEFGVEVSIFNjb25zdCBhZnRlcl9sc25f dGltZW91dAorCQkJCXsKKwkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoVHJhbnNh Y3Rpb25TdG10KTsKKworCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9TVEFSVDsKKwkJCQkJbi0+ b3B0aW9ucyA9ICQzOworCQkJCQluLT5hZnRlckxzbiA9ICQ1OworCQkJCQluLT5hZnRlckxzblRp bWVvdXQgPSAkNjsKKwkJCQkJbi0+bG9jYXRpb24gPSAtMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBu OworCQkJCX0KIAkJCXwgQ09NTUlUIG9wdF90cmFuc2FjdGlvbiBvcHRfdHJhbnNhY3Rpb25fY2hh aW4KIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9u U3RtdCk7CkBAIC0xMTA1Myw2ICsxMTA3NCwxNyBAQCBUcmFuc2FjdGlvblN0bXRMZWdhY3k6CiAJ CQkJCW4tPmxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8 IEJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eSBB RlRFUiBTY29uc3QgYWZ0ZXJfbHNuX3RpbWVvdXQKKwkJCQl7CisJCQkJCVRyYW5zYWN0aW9uU3Rt dCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7CisKKwkJCQkJbi0+a2luZCA9IFRSQU5T X1NUTVRfQkVHSU47CisJCQkJCW4tPm9wdGlvbnMgPSAkMzsKKwkJCQkJbi0+YWZ0ZXJMc24gPSAk NTsKKwkJCQkJbi0+YWZ0ZXJMc25UaW1lb3V0ID0gJDY7CisJCQkJCW4tPmxvY2F0aW9uID0gLTE7 CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQl8IEVORF9QIG9wdF90cmFuc2FjdGlv biBvcHRfdHJhbnNhY3Rpb25fY2hhaW4KIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9 IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggNTIx ZWQ1NDE4Yy4uNWFlZDkwYzkzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv aXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMjUsNiArMjUs NyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9ncHJlZmV0Y2hlci5oIgogI2luY2x1ZGUgImFjY2Vz cy94bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL3dhaXRsc24uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKQEAgLTE1Miw2ICsx NTMsNyBAQCBDYWxjdWxhdGVTaG1lbVNpemUoaW50ICpudW1fc2VtYXBob3JlcykKIAlzaXplID0g YWRkX3NpemUoc2l6ZSwgV2FpdEV2ZW50RXh0ZW5zaW9uU2htZW1TaXplKCkpOwogCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBJbmplY3Rpb25Qb2ludFNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3Np emUoc2l6ZSwgU2xvdFN5bmNTaG1lbVNpemUoKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdh aXRMU05TaG1lbVNpemUoKSk7CiAjaWZkZWYgRVhFQ19CQUNLRU5ECiAJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFNobWVtQmFja2VuZEFycmF5U2l6ZSgpKTsKICNlbmRpZgpAQCAtMjQ0LDYgKzI0Niwx MSBAQCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQpCiAJLyogSW5pdGlhbGl6 ZSBzdWJzeXN0ZW1zICovCiAJQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHMoKTsKIAorCS8qCisJ ICogSW5pdCBhcnJheSBvZiBMYXRjaGVzIGluIHNoYXJlZCBtZW1vcnkgZm9yIHdhaXQgbHNuCisJ ICovCisJV2FpdExTTlNobWVtSW5pdCgpOworCiAjaWZkZWYgRVhFQ19CQUNLRU5ECiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggMTYyYjFmOTE5ZC4uNGI4MzBkYzNjOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3Ry YW5zYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKICNpbmNsdWRlICJhY2Nlc3Mv eGxvZ3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdGxzbi5oIgogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5oIgpAQCAtODYyLDYgKzg2MywxMSBAQCBQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0g YXJnKQogCSAqLwogCUxXTG9ja1JlbGVhc2VBbGwoKTsKIAorCS8qCisJICogQ2xlYW51cCB3YWl0 aW5nIGZvciBMU04gaWYgYW55LgorCSAqLworCVdhaXRMU05DbGVhbnVwKCk7CisKIAkvKiBDYW5j ZWwgYW55IHBlbmRpbmcgY29uZGl0aW9uIHZhcmlhYmxlIHNsZWVwLCB0b28gKi8KIAlDb25kaXRp b25WYXJpYWJsZUNhbmNlbFNsZWVwKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av dXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggODNmODZhNDJmNy4u YmY5YTY4NWE5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIv c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJj b21tYW5kcy91c2VyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvdmlldy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXRsc24uaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdXRpbGNtZC5oIgogI2luY2x1 ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKQEAgLTYzLDggKzY0LDEwIEBACiAjaW5jbHVkZSAi c3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxz L2FjbC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9n dWMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19s c24uaCIKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJvbCBpbiBQcm9jZXNzVXRp bGl0eSgpICovCiBQcm9jZXNzVXRpbGl0eV9ob29rX3R5cGUgUHJvY2Vzc1V0aWxpdHlfaG9vayA9 IE5VTEw7CkBAIC02MDYsNiArNjA5LDE1IEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5u ZWRTdG10ICpwc3RtdCwKIAkJCQkJCXsKIAkJCQkJCQlMaXN0Q2VsbCAgICpsYzsKIAorCQkJCQkJ CWlmIChzdG10LT5hZnRlckxzbikKKwkJCQkJCQl7CisJCQkJCQkJCVhMb2dSZWNQdHIJbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7CisKKwkJCQkJCQkJbHNuID0gRGF0dW1HZXRMU04oRGlyZWN0RnVu Y3Rpb25DYWxsMShwZ19sc25faW4sCisJCQkJCQkJCQkJCQkJCQkJCSAgQ1N0cmluZ0dldERhdHVt KHN0bXQtPmFmdGVyTHNuKSkpOworCQkJCQkJCQlXYWl0Rm9yTFNOKGxzbiwgc3RtdC0+YWZ0ZXJM c25UaW1lb3V0KTsKKwkJCQkJCQl9CisKIAkJCQkJCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsK IAkJCQkJCQlmb3JlYWNoKGxjLCBzdG10LT5vcHRpb25zKQogCQkJCQkJCXsKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YwppbmRleCAxOWRiMDY5ZWU5Li4yOGUyMmNiOWQwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBAIC0yNzE3 LDcgKzI3MTcsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0 LCBpbnQgZW5kKQogCiAvKiBCRUdJTiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkJFR0lOIikpCi0J CUNPTVBMRVRFX1dJVEgoIldPUksiLCAiVFJBTlNBQ1RJT04iLCAiSVNPTEFUSU9OIExFVkVMIiwg IlJFQUQiLCAiREVGRVJSQUJMRSIsICJOT1QgREVGRVJSQUJMRSIpOworCQlDT01QTEVURV9XSVRI KCJXT1JLIiwgIlRSQU5TQUNUSU9OIiwgIklTT0xBVElPTiBMRVZFTCIsICJSRUFEIiwgIkRFRkVS UkFCTEUiLCAiTk9UIERFRkVSUkFCTEUiLCAiQUZURVIiKTsKIC8qIEVORCwgQUJPUlQgKi8KIAll bHNlIGlmIChNYXRjaGVzKCJFTkR8QUJPUlQiKSkKIAkJQ09NUExFVEVfV0lUSCgiQU5EIiwgIldP UksiLCAiVFJBTlNBQ1RJT04iKTsKQEAgLTQ2MTAsNyArNDYxMCw3IEBAIHBzcWxfY29tcGxldGlv bihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAKIC8qIFNUQVJUIFRSQU5T QUNUSU9OICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiU1RBUlQiKSkKLQkJQ09NUExFVEVfV0lUSCgi VFJBTlNBQ1RJT04iKTsKKwkJQ09NUExFVEVfV0lUSCgiVFJBTlNBQ1RJT04iLCAiQUZURVIiKTsK IAogLyogVEFCTEUsIGJ1dCBub3QgVEFCTEUgZW1iZWRkZWQgaW4gb3RoZXIgY29tbWFuZHMgKi8K IAllbHNlIGlmIChNYXRjaGVzKCJUQUJMRSIpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvd2FpdGxzbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdGxzbi5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmZmNGQ2M2Q1YjAKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0bHNuLmgKQEAgLTAsMCArMSw0MyBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdGxzbi5oCisgKgkgIERlY2xhcmF0aW9ucyBmb3Ig TFNOIHdhaXRpbmcgcm91dGluZXMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRlL2NvbW1hbmRz L3dhaXRsc24uaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFdBSVRfTFNO X0gKKyNkZWZpbmUgV0FJVF9MU05fSAorCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRl ICJwb3J0L2F0b21pY3MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNpbmNsdWRlICJ0 Y29wL2Rlc3QuaCIKKworZXh0ZXJuIHZvaWQgV2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwgaW50 IG1pbGxpc2Vjcyk7CitleHRlcm4gU2l6ZSBXYWl0TFNOU2htZW1TaXplKHZvaWQpOworZXh0ZXJu IHZvaWQgV2FpdExTTlNobWVtSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRMU05TZXRMYXRj aGVzKFhMb2dSZWNQdHIgY3VyTFNOKTsKK2V4dGVybiB2b2lkIFdhaXRMU05DbGVhbnVwKHZvaWQp OworCisvKiBTaGFyZWQgbWVtb3J5IHN0cnVjdHVyZSAqLwordHlwZWRlZiBzdHJ1Y3QgV2FpdExT TlByb2NJbmZvCit7CisJaW50CQkJcHJvY251bTsKKwlYTG9nUmVjUHRyCXdhaXRMU047Cit9IFdh aXRMU05Qcm9jSW5mbzsKKwordHlwZWRlZiBzdHJ1Y3QgV2FpdExTTlN0YXRlCit7CisJcGdfYXRv bWljX3VpbnQ2NCBtaW5MU047CisJc2xvY2tfdAkJbXV0ZXg7CisJaW50CQkJbnVtV2FpdGVkUHJv Y3M7CisJV2FpdExTTlByb2NJbmZvIHByb2NJbmZvc1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwor fSBXYWl0TFNOU3RhdGU7CisKK2V4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3QgV2FpdExTTlN0YXRl ICp3YWl0TFNOOworCisjZW5kaWYJCQkJCQkJLyogV0FJVF9MU05fSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCmluZGV4IGFhZGFmNjdmNTcuLmMyMDc3YjUyNTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKQEAgLTM1MjcsNiArMzUyNyw4IEBAIHR5cGVkZWYgc3RydWN0IFRyYW5zYWN0aW9uU3RtdAog CS8qIGZvciB0d28tcGhhc2UtY29tbWl0IHJlbGF0ZWQgY29tbWFuZHMgKi8KIAljaGFyCSAgICpn aWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCWJvb2wJCWNoYWluOwkJCS8q IEFORCBDSEFJTiBvcHRpb24gKi8KKwljaGFyCSAgICphZnRlckxzbjsJCS8qIHRhcmdldCBMU04g dG8gd2FpdCAqLworCWludAkJCWFmdGVyTHNuVGltZW91dDsJLyogTFNOIHdhaXRpbmcgdGltZW91 dCAqLwogCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiAJaW50CQkJbG9j YXRpb24gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9sb2NhdGlvbik7CiB9IFRyYW5zYWN0aW9u U3RtdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKaW5kZXggYjFlYjc3YjFlYy4uYTFjMmEwYjEzZCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVj b3ZlcnkvbWVzb24uYnVpbGQKQEAgLTUxLDYgKzUxLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3Qv MDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbCcsCiAgICAgICAndC8wNDFfY2hlY2tw b2ludF9hdF9wcm9tb3RlLnBsJywKICAgICAgICd0LzA0Ml9sb3dfbGV2ZWxfYmFja3VwLnBsJywK KyAgICAgICd0LzA0M19iZWdpbl9hZnRlci5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQzX2JlZ2luX2FmdGVyLnBsIGIvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wNDNfYmVnaW5fYWZ0ZXIucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uZTc4NTk2MjNiNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDQzX2JlZ2luX2FmdGVyLnBsCkBAIC0wLDAgKzEsNjEgQEAKKyMgQ2hlY2tzIHdhaXRpbmcg Zm9yIGxzbiBvbiBzdGFuZGJ5IEFGVEVSCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czsKK3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAkbm9k ZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Cisk bm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9wcmltYXJ5 LT5zdGFydDsKKworIyBBbmQgc29tZSBjb250ZW50IGFuZCB0YWtlIGEgYmFja3VwCiskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHdhaXRfdGVzdCBB UyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsKK215ICRiYWNrdXBfbmFtZSA9 ICdteV9iYWNrdXAnOworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisKKyMg Q3JlYXRlIGEgc3RyZWFtaW5nIHN0YW5kYnkgd2l0aCBhIDEgc2Vjb25kIGRlbGF5IGZyb20gdGhl IGJhY2t1cAorbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygnc3RhbmRieScpOworbXkgJGRlbGF5ID0gMTsKKyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9i YWNrdXAoJG5vZGVfcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSk7 Ciskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXFbCisJ cmVjb3ZlcnlfbWluX2FwcGx5X2RlbGF5ID0gJyR7ZGVsYXl9cycKK10pOworJG5vZGVfc3RhbmRi eS0+c3RhcnQ7CisKKworIyBNYWtlIHN1cmUgdGhhdCBBRlRFUiB3b3JrczogYWRkIG5ldyBjb250 ZW50IHRvIHByaW1hcnkgYW5kIG1lbW9yaXplCisjIHByaW1hcnkncyBuZXcgTFNOLCB0aGVuIHdh aXQgZm9yIHByaW1hcnkncyBMU04gb24gc3RhbmRieS4gUHJvdmUgdGhhdCBBRlRFUiBpcworIyBh YmxlIHRvIHNldHVwIGFuIGluZmluaXRlIHdhaXRpbmcgbG9vcCBhbmQgZXhpdCBpdCBpZiBnaXZl biBubyB3YWl0IHRpbWVvdXQuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDExLCAyMCkp Iik7CitteSAkbHNuMSA9CisgICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CitteSAkb3V0cHV0ID0gJG5vZGVfc3RhbmRi eS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCUJFR0lOIEFGVEVSICcke2xzbjF9JzsK KwlTRUxFQ1QgcGdfbHNuX2NtcChwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCksICcke2xzbjF9Jzo6 cGdfbHNuKTsKK10pOworCisjIEdldCB0aGUgY3VycmVudCBMU04gb24gc3RhbmRieSBhbmQgbWFr ZSBzdXJlIGl0J3MgdGhlIHNhbWUgYXMgcHJpbWFyeSdzIExTTgorb2soJG91dHB1dCBlcSAwLCAi c3RhbmRieSByZWFjaGVkIHRoZSBzYW1lIExTTiBhcyBwcmltYXJ5IEFGVEVSIik7CisKK215ICRs c24yID0KKyAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdf Y3VycmVudF93YWxfbHNuKCkgKyAxIik7CitteSAkc3RkZXJyOworJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJCRUdJTiBBRlRFUiAnJGxzbjEnIFdJVEhJTiAxIik7Ciskbm9k ZV9zdGFuZGJ5LT5wc3FsKAorCSdwb3N0Z3JlcycsCisJIkJFR0lOIEFGVEVSICckbHNuMicgV0lU SElOIDEiLAorCXN0ZGVyciA9PiBcJHN0ZGVycik7CitvayggJHN0ZGVyciA9fiAvY2FuY2VsaW5n IHdhaXRpbmcgZm9yIExTTiBkdWUgdG8gdGltZW91dC8sCisJImdldCB0aW1lb3V0IG9uIHdhaXRp bmcgZm9yIHVucmVhY2hhYmxlIExTTiIpOworCiskbm9kZV9zdGFuZGJ5LT5zdG9wOworJG5vZGVf cHJpbWFyeS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApp bmRleCBhYTdhMjViOGY4Li43YTJhYzE3OGJjIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApA QCAtMzAzNSw2ICszMDM1LDggQEAgV2FpdEV2ZW50SU8KIFdhaXRFdmVudElQQwogV2FpdEV2ZW50 U2V0CiBXYWl0RXZlbnRUaW1lb3V0CitXYWl0TFNOUHJvY0luZm8KK1dhaXRMU05TdGF0ZQogV2Fp dFBNUmVzdWx0CiBXYWxDbG9zZU1ldGhvZAogV2FsQ29tcHJlc3Npb24K --=_fd384b991447b7fc0431399da6245994--