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 1rlDic-000sST-RW for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Mar 2024 19:59:56 +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 1rlDia-00BqZh-Ls for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Mar 2024 19:59:53 +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 1rlDia-00BqZZ-5Y for pgsql-hackers@lists.postgresql.org; Fri, 15 Mar 2024 19:59:52 +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 1rlDiU-004iCF-IY for pgsql-hackers@lists.postgresql.org; Fri, 15 Mar 2024 19:59:51 +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 76BE7E20E2D; Fri, 15 Mar 2024 22:59:44 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1710532784; bh=k5v42e8Rns7JPR9/lb0U48Klf+017/HZvGJT466g7w8=; h=Date:From:To:Cc:Subject:In-Reply-To:References:User-Agent: Message-ID:From; b=wA9Ckh5ja48ysWgNtI1Byt3/9nGVYe+kMNiynDBSaBQE6PbOey03jVEiv7BRw+yw5 iDA+krR4RPdrLwNIQMxhyHUn2RLuf9MJllK4l5MfRBfz0NnOhtb/I5ubeX3fRI6GMX jY/MCFsUT6WozSHTQMXAH7UhUxNa/x+P6UJuK+tzaTVAJBsA/jvFWomW//kJdyGsKT PJAINWzc1ZuinEyVaOtUofPmmIZ9WVd+sBkaEslb5FHlsllxRSQTnnQTrejas+/IaK X/KaulJUaGea+hz7Um+f9wGbTRiWEaiyJSSakE1gdciHbLl3W7AFcF911qCvet6HQS 80oUX211WUKag== MIME-Version: 1.0 Date: Fri, 15 Mar 2024 22:59:44 +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: References: <22f122-655b3e80-3-688b3700@97587957> <4953563546cb8c8851f84c7debf723ef@postgrespro.ru> <31547e4e8c263392a768ea89a3f57833@postgrespro.ru> User-Agent: Roundcube Webmail/1.6.5 Message-ID: <9e0ad3332c0bf7c4f00ff10677245e46@postgrespro.ru> X-Sender: i.kartyshov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_1ce996b59630b0508d210a6387d2db22" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_1ce996b59630b0508d210a6387d2db22 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed 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? -- Ivan Kartyshov Postgres Professional: www.postgrespro.com --=_1ce996b59630b0508d210a6387d2db22 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v10_after_within.patch Content-Disposition: attachment; filename=v10_after_within.patch; size=24068 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 cy93YWl0bHNuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYTY5ODc4 NjliMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXRsc24uYwpA QCAtMCwwICsxLDI3OCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdGxzbi5jCisg KgkgIEltcGxlbWVudHMgV0FJVCBGT1IsIHdoaWNoIGFsbG93cyB3YWl0aW5nIGZvciBldmVudHMg c3VjaCBhcworICoJICB0aW1lIHBhc3Npbmcgb3IgTFNOIGhhdmluZyBiZWVuIHJlcGxheWVkIG9u IHJlcGxpY2EuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3dhaXRsc24uYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisKKyNpbmNsdWRlIDxmbG9hdC5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlICJwb3N0 Z3Jlcy5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRl ICJhY2Nlc3MvdHJhbnNhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAi YWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJh Y2Nlc3MveGxvZ3JlY292ZXJ5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5j bHVkZSAiY29tbWFuZHMvd2FpdGxzbi5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvc2ludmFsYWR0LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1 dGlscy9wZ19sc24uaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJl eGVjdXRvci9zcGkuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisKKy8qIEFkZCB0 byAvIGRlbGV0ZSBmcm9tIHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2b2lkIGFkZExT TldhaXRlcihYTG9nUmVjUHRyIGxzbl90b193YWl0KTsKK3N0YXRpYyB2b2lkIGRlbGV0ZUxTTldh aXRlcih2b2lkKTsKKworc3RydWN0IFdhaXRMU05TdGF0ZSAqd2FpdExTTiA9IE5VTEw7CitzdGF0 aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGhhdmVTaG1lbUl0ZW0gPSBmYWxzZTsKKworLyoKKyAq IFJlcG9ydCB0aGUgYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZvciBXYWl0 TFNOU3RhdGUKKyAqLworU2l6ZQorV2FpdExTTlNobWVtU2l6ZSh2b2lkKQoreworCVNpemUJCXNp emU7CisKKwlzaXplID0gb2Zmc2V0b2YoV2FpdExTTlN0YXRlLCBwcm9jSW5mb3MpOworCXNpemUg PSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShNYXhCYWNrZW5kcywgc2l6ZW9mKFdhaXRMU05Qcm9j SW5mbykpKTsKKwlyZXR1cm4gc2l6ZTsKK30KKworLyogSW5pdGlhbGl6ZSB0aGUgV2FpdExTTlN0 YXRlIGluIHRoZSBzaGFyZWQgbWVtb3J5ICovCit2b2lkCitXYWl0TFNOU2htZW1Jbml0KHZvaWQp Cit7CisJYm9vbAkJZm91bmQ7CisKKwl3YWl0TFNOID0gKFdhaXRMU05TdGF0ZSAqKSBTaG1lbUlu aXRTdHJ1Y3QoIldhaXRMU05TdGF0ZSIsCisJCQkJCQkJCQkJCSBXYWl0TFNOU2htZW1TaXplKCks CisJCQkJCQkJCQkJCSAmZm91bmQpOworCWlmICghZm91bmQpCisJeworCQlTcGluTG9ja0luaXQo JndhaXRMU04tPm11dGV4KTsKKwkJd2FpdExTTi0+bnVtV2FpdGVkUHJvY3MgPSAwOworCQlwZ19h dG9taWNfaW5pdF91NjQoJndhaXRMU04tPm1pbkxTTiwgUEdfVUlOVDY0X01BWCk7CisJfQorfQor CisvKgorICogQWRkIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgTFNOIHdhaXRlciBiYWNrZW5k IHRvIHRoZSBzaGFyZWQgbWVtb3J5CisgKiBhcnJheS4KKyAqLworc3RhdGljIHZvaWQKK2FkZExT TldhaXRlcihYTG9nUmVjUHRyIGxzbikKK3sKKwlXYWl0TFNOUHJvY0luZm8gY3VyOworCWludAkJ CWk7CisKKwlTcGluTG9ja0FjcXVpcmUoJndhaXRMU04tPm11dGV4KTsKKworCWN1ci5wcm9jbnVt ID0gTXlQcm9jTnVtYmVyOworCWN1ci53YWl0TFNOID0gbHNuOworCisJZm9yIChpID0gMDsgaSA8 IHdhaXRMU04tPm51bVdhaXRlZFByb2NzOyBpKyspCisJeworCQlpZiAod2FpdExTTi0+cHJvY0lu Zm9zW2ldLndhaXRMU04gPj0gY3VyLndhaXRMU04pCisJCXsKKwkJCVdhaXRMU05Qcm9jSW5mbyB0 bXA7CisKKwkJCXRtcCA9IHdhaXRMU04tPnByb2NJbmZvc1tpXTsKKwkJCXdhaXRMU04tPnByb2NJ bmZvc1tpXSA9IGN1cjsKKwkJCWN1ciA9IHRtcDsKKwkJfQorCX0KKwl3YWl0TFNOLT5wcm9jSW5m b3NbaV0gPSBjdXI7CisJd2FpdExTTi0+bnVtV2FpdGVkUHJvY3MrKzsKKworCXBnX2F0b21pY193 cml0ZV91NjQoJndhaXRMU04tPm1pbkxTTiwgd2FpdExTTi0+cHJvY0luZm9zW2ldLndhaXRMU04p OworCVNwaW5Mb2NrUmVsZWFzZSgmd2FpdExTTi0+bXV0ZXgpOworfQorCisvKgorICogRGVsZXRl IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgTFNOIHdhaXRlciBiYWNrZW5kIGZyb20gdGhlIHNo YXJlZCBtZW1vcnkKKyAqIGFycmF5LgorICovCitzdGF0aWMgdm9pZAorZGVsZXRlTFNOV2FpdGVy KHZvaWQpCit7CisJaW50CQkJaTsKKwlib29sCQlmb3VuZCA9IGZhbHNlOworCisJU3BpbkxvY2tB Y3F1aXJlKCZ3YWl0TFNOLT5tdXRleCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgd2FpdExTTi0+bnVt V2FpdGVkUHJvY3M7IGkrKykKKwl7CisJCWlmICh3YWl0TFNOLT5wcm9jSW5mb3NbaV0ucHJvY251 bSA9PSBNeVByb2NOdW1iZXIpCisJCQlmb3VuZCA9IHRydWU7CisKKwkJaWYgKGZvdW5kICYmIGkg PCB3YWl0TFNOLT5udW1XYWl0ZWRQcm9jcyAtIDEpCisJCXsKKwkJCXdhaXRMU04tPnByb2NJbmZv c1tpXSA9IHdhaXRMU04tPnByb2NJbmZvc1tpICsgMV07CisJCX0KKwl9CisKKwlpZiAoIWZvdW5k KQorCXsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3YWl0TFNOLT5tdXRleCk7CisJCXJldHVybjsKKwl9 CisJd2FpdExTTi0+bnVtV2FpdGVkUHJvY3MtLTsKKworCWlmICh3YWl0TFNOLT5udW1XYWl0ZWRQ cm9jcyAhPSAwKQorCQlwZ19hdG9taWNfd3JpdGVfdTY0KCZ3YWl0TFNOLT5taW5MU04sIHdhaXRM U04tPnByb2NJbmZvc1tpXS53YWl0TFNOKTsKKwllbHNlCisJCXBnX2F0b21pY193cml0ZV91NjQo JndhaXRMU04tPm1pbkxTTiwgUEdfVUlOVDY0X01BWCk7CisKKwlTcGluTG9ja1JlbGVhc2UoJndh aXRMU04tPm11dGV4KTsKK30KKworLyogU2V0IGFsbCBsYXRjaGVzIGluIHNoYXJlZCBtZW1vcnkg dG8gc2lnbmFsIHRoYXQgbmV3IExTTiBoYXMgYmVlbiByZXBsYXllZCAqLwordm9pZAorV2FpdExT TlNldExhdGNoZXMoWExvZ1JlY1B0ciBjdXJMU04pCit7CisJdWludDMyCQlpLAorCQkJCW51bVdh a2VVcFByb2NzOworCisJU3BpbkxvY2tBY3F1aXJlKCZ3YWl0TFNOLT5tdXRleCk7CisKKwkvKgor CSAqIFNldCBsYXRjaGVzIGZvciBwcm9jZXNzLCB3aG9zZSB3YWl0ZWQgTFNOcyBhcmUgYWxyZWFk eSByZXBsYXllZC4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgd2FpdExTTi0+bnVtV2FpdGVkUHJv Y3M7IGkrKykKKwl7CisJCVBHUFJPQwkgICAqYmFja2VuZDsKKworCQlpZiAod2FpdExTTi0+cHJv Y0luZm9zW2ldLndhaXRMU04gPiBjdXJMU04pCisJCQlicmVhazsKKworCQliYWNrZW5kID0gR2V0 UEdQcm9jQnlOdW1iZXIod2FpdExTTi0+cHJvY0luZm9zW2ldLnByb2NudW0pOworCQlTZXRMYXRj aCgmYmFja2VuZC0+cHJvY0xhdGNoKTsKKwl9CisKKwkvKgorCSAqIEltbWVkaWF0ZWx5IHJlbW92 ZSB0aG9zZSBwcm9jZXNzZXMgZnJvbSB0aGUgc2htZW0gYXJyYXkuICBPdGhlcndpc2UsCisJICog c2htZW0gYXJyYXkgaXRlbXMgd2lsbCBiZSBoZXJlIHRpbGwgY29ycmVzcG9uZGluZyBwcm9jZXNz ZXMgd2FrZSB1cCBhbmQKKwkgKiBkZWxldGUgdGhlbXNlbHZlcy4KKwkgKi8KKwludW1XYWtlVXBQ cm9jcyA9IGk7CisJZm9yIChpID0gMDsgaSA8IHdhaXRMU04tPm51bVdhaXRlZFByb2NzIC0gbnVt V2FrZVVwUHJvY3M7IGkrKykKKwkJd2FpdExTTi0+cHJvY0luZm9zW2ldID0gd2FpdExTTi0+cHJv Y0luZm9zW2kgKyBudW1XYWtlVXBQcm9jc107CisJd2FpdExTTi0+bnVtV2FpdGVkUHJvY3MgLT0g bnVtV2FrZVVwUHJvY3M7CisKKwlpZiAod2FpdExTTi0+bnVtV2FpdGVkUHJvY3MgIT0gMCkKKwkJ cGdfYXRvbWljX3dyaXRlX3U2NCgmd2FpdExTTi0+bWluTFNOLCB3YWl0TFNOLT5wcm9jSW5mb3Nb aV0ud2FpdExTTik7CisJZWxzZQorCQlwZ19hdG9taWNfd3JpdGVfdTY0KCZ3YWl0TFNOLT5taW5M U04sIFBHX1VJTlQ2NF9NQVgpOworCisJU3BpbkxvY2tSZWxlYXNlKCZ3YWl0TFNOLT5tdXRleCk7 Cit9CisKKy8qCisgKiBEZWxldGUgb3VyIGl0ZW0gZnJvbSBzaG1lbSBhcnJheSBpZiBhbnkuCisg Ki8KK3ZvaWQKK1dhaXRMU05DbGVhbnVwKHZvaWQpCit7CisJaWYgKGhhdmVTaG1lbUl0ZW0pCisJ CWRlbGV0ZUxTTldhaXRlcigpOworfQorCisvKgorICogT24gV0FJVCB1c2UgTXlMYXRjaCB0byB3 YWl0IHRpbGwgTFNOIGlzIHJlcGxheWVkLCBwb3N0bWFzdGVyIGRpZXMgb3IKKyAqIHRpbWVvdXQg aGFwcGVucy4KKyAqLwordm9pZAorV2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwgaW50IG1pbGxp c2VjcykKK3sKKwlYTG9nUmVjUHRyCWN1ckxTTjsKKwlpbnQJCQlsYXRjaF9ldmVudHM7CisJVGlt ZXN0YW1wVHogZW5kdGltZTsKKworCS8qIFNob3VsZG4ndCBiZSBjYWxsZWQgd2hlbiBzaG1lbSBp c24ndCBpbml0aWFsaXplZCAqLworCUFzc2VydCh3YWl0TFNOKTsKKworCS8qIFNob3VsZCBiZSBv bmx5IGNhbGxlZCBieSBhIGJhY2tlbmQgKi8KKwlBc3NlcnQoTXlCYWNrZW5kVHlwZSA9PSBCX0JB Q0tFTkQpOworCisJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK KwkJCQkgZXJybXNnKCJyZWNvdmVyeSBpcyBub3QgaW4gcHJvZ3Jlc3MiKSwKKwkJCQkgZXJyaGlu dCgiV2FpdGluZyBmb3IgTFNOIGNhbiBvbmx5IGJlIGV4ZWN1dGVkIGR1cmluZyByZWNvdmVyeS4i KSkpOworCisJZW5kdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKSArIG1pbGxpc2VjcyAqIDEw MDA7CisKKwlsYXRjaF9ldmVudHMgPSBXTF9USU1FT1VUIHwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSDsKKwlhZGRMU05XYWl0ZXIobHNuKTsKKwloYXZlU2htZW1JdGVtID0gdHJ1 ZTsKKworCWZvciAoOzspCisJeworCQlpbnQJCQlyYzsKKwkJbG9uZwkJZGVsYXlfbXM7CisKKwkJ LyogQ2hlY2sgaWYgdGhlIHdhaXRlZCBMU04gaGFzIGJlZW4gcmVwbGF5ZWQgKi8KKwkJY3VyTFNO ID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJaWYgKGxzbiA8PSBjdXJMU04pCisJCQli cmVhazsKKworCQlpZiAobWlsbGlzZWNzID4gMCkKKwkJCWRlbGF5X21zID0gKGVuZHRpbWUgLSBH ZXRDdXJyZW50VGltZXN0YW1wKCkpIC8gMTAwMDsKKwkJZWxzZQorCisJCQkvKiBJZiBubyB0aW1l b3V0IGlzIHNldCB0aGVuIHdha2UgdXAgaW4gMSBtaW51dGUgZm9yIGludGVydXB0cyAqLworCQkJ ZGVsYXlfbXMgPSA2MDAwMDsKKworCQlpZiAoZGVsYXlfbXMgPD0gMCkKKwkJCWJyZWFrOworCisJ CS8qCisJCSAqIElmIHJlY2VpdmVkIGFuIGludGVycnVwdGlvbiBmcm9tIENIRUNLX0ZPUl9JTlRF UlJVUFRTLCB0aGVuIGRlbGV0ZQorCQkgKiB0aGUgY3VycmVudCBldmVudCBmcm9tIGFycmF5Lgor CQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKiBJZiBwb3N0bWFzdGVyIGRp ZXMsIGZpbmlzaCBpbW1lZGlhdGVseSAqLworCQlpZiAoIVBvc3RtYXN0ZXJJc0FsaXZlKCkpCisJ CQlicmVhazsKKworCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLCBsYXRjaF9ldmVudHMsIGRlbGF5 X21zLAorCQkJCQkgICBXQUlUX0VWRU5UX0NMSUVOVF9SRUFEKTsKKworCQlpZiAocmMgJiBXTF9M QVRDSF9TRVQpCisJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCX0KKworCWlmIChsc24gPiBjdXJM U04pCisJeworCQlkZWxldGVMU05XYWl0ZXIoKTsKKwkJaGF2ZVNobWVtSXRlbSA9IGZhbHNlOwor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfUVVFUllfQ0FOQ0VMRUQpLAor CQkJCSBlcnJtc2coImNhbmNlbGluZyB3YWl0aW5nIGZvciBMU04gZHVlIHRvIHRpbWVvdXQiKSkp OworCX0KKwllbHNlCisJeworCQloYXZlU2htZW1JdGVtID0gZmFsc2U7CisJfQorfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKaW5kZXggYzZlMmY2NzlmZC4uYmU5N2Y1YTg3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02NDcsNiAr NjQ3LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5h bWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxsaXN0PgkJaGFzaF9wYXJ0 Ym91bmQKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9lbGVtCiAKKyV0eXBlIDxpdmFs PgkJYWZ0ZXJfbHNuX3RpbWVvdXQKKwogJXR5cGUgPG5vZGU+CWpzb25fZm9ybWF0X2NsYXVzZQog CQkJCWpzb25fZm9ybWF0X2NsYXVzZV9vcHQKIAkJCQlqc29uX3ZhbHVlX2V4cHIKQEAgLTMxOTMs NiArMzE5NSwxNCBAQCBoYXNoX3BhcnRib3VuZDoKIAkJCX0KIAkJOwogCisvKgorICogV0lUSElO IHRpbWVvdXQgb3B0aW9uYWwgY2xhdXNlIGZvciBCRUdJTiBBRlRFUiBsc24KKyAqLworYWZ0ZXJf bHNuX3RpbWVvdXQ6CisJCQlXSVRISU4gSWNvbnN0CQl7ICQkID0gJDI7IH0KKwkJCXwgLyogRU1Q VFkgKi8gICAgICAgICAgIHsgJCQgPSAwOyB9CisJCTsKKwogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CiAgKgogICoJQUxURVIgVFlQRQpAQCAtMTA5NDksNiArMTA5NTksMTcgQEAgVHJhbnNhY3Rpb25T dG10OgogCQkJCQluLT5sb2NhdGlvbiA9IC0xOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJ fQorCQkJfCBTVEFSVCBUUkFOU0FDVElPTiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkg QUZURVIgU2NvbnN0IGFmdGVyX2xzbl90aW1lb3V0CisJCQkJeworCQkJCQlUcmFuc2FjdGlvblN0 bXQgKm4gPSBtYWtlTm9kZShUcmFuc2FjdGlvblN0bXQpOworCisJCQkJCW4tPmtpbmQgPSBUUkFO U19TVE1UX1NUQVJUOworCQkJCQluLT5vcHRpb25zID0gJDM7CisJCQkJCW4tPmFmdGVyTHNuID0g JDU7CisJCQkJCW4tPmFmdGVyTHNuVGltZW91dCA9ICQ2OworCQkJCQluLT5sb2NhdGlvbiA9IC0x OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQkJfCBDT01NSVQgb3B0X3RyYW5zYWN0 aW9uIG9wdF90cmFuc2FjdGlvbl9jaGFpbgogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25TdG10ICpu ID0gbWFrZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsKQEAgLTExMDUzLDYgKzExMDc0LDE3IEBAIFRy YW5zYWN0aW9uU3RtdExlZ2FjeToKIAkJCQkJbi0+bG9jYXRpb24gPSAtMTsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgQkVHSU5fUCBvcHRfdHJhbnNhY3Rpb24gdHJhbnNhY3Rp b25fbW9kZV9saXN0X29yX2VtcHR5IEFGVEVSIFNjb25zdCBhZnRlcl9sc25fdGltZW91dAorCQkJ CXsKKwkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsK KworCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9CRUdJTjsKKwkJCQkJbi0+b3B0aW9ucyA9ICQz OworCQkJCQluLT5hZnRlckxzbiA9ICQ1OworCQkJCQluLT5hZnRlckxzblRpbWVvdXQgPSAkNjsK KwkJCQkJbi0+bG9jYXRpb24gPSAtMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJ CXwgRU5EX1Agb3B0X3RyYW5zYWN0aW9uIG9wdF90cmFuc2FjdGlvbl9jaGFpbgogCQkJCXsKIAkJ CQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYwppbmRleCA1MjFlZDU0MThjLi41YWVkOTBjOTM1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvaXBjaS5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dwcmVmZXRj aGVyLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgImNvbW1h bmRzL2FzeW5jLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdGxzbi5oIgogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5oIgpAQCAtMTUyLDYgKzE1Myw3IEBAIENhbGN1bGF0ZVNobWVtU2l6ZShpbnQgKm51 bV9zZW1hcGhvcmVzKQogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0RXZlbnRFeHRlbnNpb25T aG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEluamVjdGlvblBvaW50U2htZW1T aXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTbG90U3luY1NobWVtU2l6ZSgpKTsKKwlz aXplID0gYWRkX3NpemUoc2l6ZSwgV2FpdExTTlNobWVtU2l6ZSgpKTsKICNpZmRlZiBFWEVDX0JB Q0tFTkQKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1CYWNrZW5kQXJyYXlTaXplKCkpOwog I2VuZGlmCkBAIC0yNDQsNiArMjQ2LDExIEBAIENyZWF0ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9y ZXModm9pZCkKIAkvKiBJbml0aWFsaXplIHN1YnN5c3RlbXMgKi8KIAlDcmVhdGVPckF0dGFjaFNo bWVtU3RydWN0cygpOwogCisJLyoKKwkgKiBJbml0IGFycmF5IG9mIExhdGNoZXMgaW4gc2hhcmVk IG1lbW9yeSBmb3Igd2FpdCBsc24KKwkgKi8KKwlXYWl0TFNOU2htZW1Jbml0KCk7CisKICNpZmRl ZiBFWEVDX0JBQ0tFTkQKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCAxNjJiMWY5 MTlkLi40YjgzMGRjM2M4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJv Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTM2LDYgKzM2LDcg QEAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90d29waGFz ZS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93 YWl0bHNuLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAj aW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCkBAIC04NjIsNiArODYzLDExIEBAIFBy b2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJICovCiAJTFdMb2NrUmVsZWFzZUFsbCgpOwog CisJLyoKKwkgKiBDbGVhbnVwIHdhaXRpbmcgZm9yIExTTiBpZiBhbnkuCisJICovCisJV2FpdExT TkNsZWFudXAoKTsKKwogCS8qIENhbmNlbCBhbnkgcGVuZGluZyBjb25kaXRpb24gdmFyaWFibGUg c2xlZXAsIHRvbyAqLwogCUNvbmRpdGlvblZhcmlhYmxlQ2FuY2VsU2xlZXAoKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxp dHkuYwppbmRleCA4M2Y4NmE0MmY3Li5iZjlhNjg1YTlhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtNTYs NiArNTYsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3VzZXIuaCIKICNpbmNsdWRlICJjb21tYW5k cy92YWN1dW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy92aWV3LmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvd2FpdGxzbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dyaXRlci5oIgpAQCAtNjMs OCArNjQsMTAgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAidGNvcC91dGls aXR5LmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rv cy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgorI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdl dCBjb250cm9sIGluIFByb2Nlc3NVdGlsaXR5KCkgKi8KIFByb2Nlc3NVdGlsaXR5X2hvb2tfdHlw ZSBQcm9jZXNzVXRpbGl0eV9ob29rID0gTlVMTDsKQEAgLTYwNiw2ICs2MDksMTUgQEAgc3RhbmRh cmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCQkJewogCQkJCQkJCUxp c3RDZWxsICAgKmxjOwogCisJCQkJCQkJaWYgKHN0bXQtPmFmdGVyTHNuKQorCQkJCQkJCXsKKwkJ CQkJCQkJWExvZ1JlY1B0cglsc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCQkJCQkJCQlsc24g PSBEYXR1bUdldExTTihEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2xzbl9pbiwKKwkJCQkJCQkJCQkJ CQkJCQkJICBDU3RyaW5nR2V0RGF0dW0oc3RtdC0+YWZ0ZXJMc24pKSk7CisJCQkJCQkJCVdhaXRG b3JMU04obHNuLCBzdG10LT5hZnRlckxzblRpbWVvdXQpOworCQkJCQkJCX0KKwogCQkJCQkJCUJl Z2luVHJhbnNhY3Rpb25CbG9jaygpOwogCQkJCQkJCWZvcmVhY2gobGMsIHN0bXQtPm9wdGlvbnMp CiAJCQkJCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDE5ZGIwNjllZTkuLjI4ZTIyY2I5ZDAgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMKQEAgLTI3MTcsNyArMjcxNyw3IEBAIHBzcWxfY29tcGxldGlvbihjb25z dCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAKIC8qIEJFR0lOICovCiAJZWxzZSBp ZiAoTWF0Y2hlcygiQkVHSU4iKSkKLQkJQ09NUExFVEVfV0lUSCgiV09SSyIsICJUUkFOU0FDVElP TiIsICJJU09MQVRJT04gTEVWRUwiLCAiUkVBRCIsICJERUZFUlJBQkxFIiwgIk5PVCBERUZFUlJB QkxFIik7CisJCUNPTVBMRVRFX1dJVEgoIldPUksiLCAiVFJBTlNBQ1RJT04iLCAiSVNPTEFUSU9O IExFVkVMIiwgIlJFQUQiLCAiREVGRVJSQUJMRSIsICJOT1QgREVGRVJSQUJMRSIsICJBRlRFUiIp OwogLyogRU5ELCBBQk9SVCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkVORHxBQk9SVCIpKQogCQlD T01QTEVURV9XSVRIKCJBTkQiLCAiV09SSyIsICJUUkFOU0FDVElPTiIpOwpAQCAtNDYxMCw3ICs0 NjEwLDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAogLyogU1RBUlQgVFJBTlNBQ1RJT04gKi8KIAllbHNlIGlmIChNYXRjaGVzKCJTVEFS VCIpKQotCQlDT01QTEVURV9XSVRIKCJUUkFOU0FDVElPTiIpOworCQlDT01QTEVURV9XSVRIKCJU UkFOU0FDVElPTiIsICJBRlRFUiIpOwogCiAvKiBUQUJMRSwgYnV0IG5vdCBUQUJMRSBlbWJlZGRl ZCBpbiBvdGhlciBjb21tYW5kcyAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIlRBQkxFIikpCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0bHNuLmggYi9zcmMvaW5jbHVkZS9jb21t YW5kcy93YWl0bHNuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYmRk YTYwZWI1MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXRsc24u aApAQCAtMCwwICsxLDQ0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3YWl0bHNuLmgK KyAqCSAgcHJvdG90eXBlcyBmb3IgY29tbWFuZHMvd2FpdC5jCisgKgorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk2LTIwMTYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTYsIFJlZ2VudHMgb2YgUG9zdGdyZXNQUk8K KyAqCisgKiBzcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0bHNuLmgKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworI2lmbmRlZiBXQUlUX0xTTl9ICisjZGVmaW5lIFdBSVRfTFNOX0gKKworI2lu Y2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSAicG9ydC9hdG9taWNzLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAidGNvcC9kZXN0LmgiCisKK2V4dGVybiB2b2lkIFdh aXRGb3JMU04oWExvZ1JlY1B0ciBsc24sIGludCBtaWxsaXNlY3MpOworZXh0ZXJuIFNpemUgV2Fp dExTTlNobWVtU2l6ZSh2b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRMU05TaG1lbUluaXQodm9pZCk7 CitleHRlcm4gdm9pZCBXYWl0TFNOU2V0TGF0Y2hlcyhYTG9nUmVjUHRyIGN1cl9sc24pOworZXh0 ZXJuIHZvaWQgV2FpdExTTkNsZWFudXAodm9pZCk7CisKKy8qIFNoYXJlZCBtZW1vcnkgc3RydWN0 dXJlICovCit0eXBlZGVmIHN0cnVjdCBXYWl0TFNOUHJvY0luZm8KK3sKKwlpbnQJCQlwcm9jbnVt OworCVhMb2dSZWNQdHIJd2FpdExTTjsKK30gV2FpdExTTlByb2NJbmZvOworCit0eXBlZGVmIHN0 cnVjdCBXYWl0TFNOU3RhdGUKK3sKKwlwZ19hdG9taWNfdWludDY0IG1pbkxTTjsKKwlzbG9ja190 CQltdXRleDsKKwlpbnQJCQludW1XYWl0ZWRQcm9jczsKKwlXYWl0TFNOUHJvY0luZm8gcHJvY0lu Zm9zW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07Cit9IFdhaXRMU05TdGF0ZTsKKworZXh0ZXJuIFBH RExMSU1QT1JUIHN0cnVjdCBXYWl0TFNOU3RhdGUgKndhaXRMU047CisKKyNlbmRpZgkJCQkJCQkv KiBXQUlUX0xTTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggYWFkYWY2N2Y1Ny4uYzIw NzdiNTI1MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzUyNyw2ICszNTI3LDggQEAgdHlw ZWRlZiBzdHJ1Y3QgVHJhbnNhY3Rpb25TdG10CiAJLyogZm9yIHR3by1waGFzZS1jb21taXQgcmVs YXRlZCBjb21tYW5kcyAqLwogCWNoYXIJICAgKmdpZCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxl X2lnbm9yZSk7CiAJYm9vbAkJY2hhaW47CQkJLyogQU5EIENIQUlOIG9wdGlvbiAqLworCWNoYXIJ ICAgKmFmdGVyTHNuOwkJLyogdGFyZ2V0IExTTiB0byB3YWl0ICovCisJaW50CQkJYWZ0ZXJMc25U aW1lb3V0OwkvKiBMU04gd2FpdGluZyB0aW1lb3V0ICovCiAJLyogdG9rZW4gbG9jYXRpb24sIG9y IC0xIGlmIHVua25vd24gKi8KIAlpbnQJCQlsb2NhdGlvbiBwZ19ub2RlX2F0dHIocXVlcnlfanVt YmxlX2xvY2F0aW9uKTsKIH0gVHJhbnNhY3Rpb25TdG10OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAppbmRl eCBiMWViNzdiMWVjLi5hMWMyYTBiMTNkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS9t ZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZApAQCAtNTEsNiAr NTEsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19z eW5jLnBsJywKICAgICAgICd0LzA0MV9jaGVja3BvaW50X2F0X3Byb21vdGUucGwnLAogICAgICAg J3QvMDQyX2xvd19sZXZlbF9iYWNrdXAucGwnLAorICAgICAgJ3QvMDQzX2JlZ2luX2FmdGVyLnBs JywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDNf YmVnaW5fYWZ0ZXIucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0M19iZWdpbl9hZnRlci5wbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lNzg1OTYyM2I1Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDNfYmVnaW5fYWZ0ZXIucGwKQEAgLTAs MCArMSw2MSBAQAorIyBDaGVja3Mgd2FpdGluZyBmb3IgbHNuIG9uIHN0YW5kYnkgQUZURVIKK3Vz ZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5p dGlhbGl6ZSBwcmltYXJ5IG5vZGUKK215ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0 cmVhbWluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCisjIEFuZCBzb21lIGNvbnRl bnQgYW5kIHRha2UgYSBiYWNrdXAKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgVEFCTEUgd2FpdF90ZXN0IEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwx MCkgQVMgYSIpOworbXkgJGJhY2t1cF9uYW1lID0gJ215X2JhY2t1cCc7Ciskbm9kZV9wcmltYXJ5 LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyBDcmVhdGUgYSBzdHJlYW1pbmcgc3RhbmRieSB3 aXRoIGEgMSBzZWNvbmQgZGVsYXkgZnJvbSB0aGUgYmFja3VwCitteSAkbm9kZV9zdGFuZGJ5ID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5Jyk7CitteSAkZGVsYXkgPSAx OworJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9wcmltYXJ5LCAkYmFja3Vw X25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25m KAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkgPSAn JHtkZWxheX1zJworXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKworCisjIE1ha2Ugc3VyZSB0 aGF0IEFGVEVSIHdvcmtzOiBhZGQgbmV3IGNvbnRlbnQgdG8gcHJpbWFyeSBhbmQgbWVtb3JpemUK KyMgcHJpbWFyeSdzIG5ldyBMU04sIHRoZW4gd2FpdCBmb3IgcHJpbWFyeSdzIExTTiBvbiBzdGFu ZGJ5LiBQcm92ZSB0aGF0IEFGVEVSIGlzCisjIGFibGUgdG8gc2V0dXAgYW4gaW5maW5pdGUgd2Fp dGluZyBsb29wIGFuZCBleGl0IGl0IGlmIGdpdmVuIG5vIHdhaXQgdGltZW91dC4KKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFM VUVTIChnZW5lcmF0ZV9zZXJpZXMoMTEsIDIwKSkiKTsKK215ICRsc24xID0KKyAgJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCki KTsKK215ICRvdXRwdXQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXFbCisJQkVHSU4gQUZURVIgJyR7bHNuMX0nOworCVNFTEVDVCBwZ19sc25fY21wKHBnX2xhc3Rf d2FsX3JlcGxheV9sc24oKSwgJyR7bHNuMX0nOjpwZ19sc24pOworXSk7CisKKyMgR2V0IHRoZSBj dXJyZW50IExTTiBvbiBzdGFuZGJ5IGFuZCBtYWtlIHN1cmUgaXQncyB0aGUgc2FtZSBhcyBwcmlt YXJ5J3MgTFNOCitvaygkb3V0cHV0IGVxIDAsICJzdGFuZGJ5IHJlYWNoZWQgdGhlIHNhbWUgTFNO IGFzIHByaW1hcnkgQUZURVIiKTsKKworbXkgJGxzbjIgPQorICAkbm9kZV9wcmltYXJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSArIDEiKTsKK215 ICRzdGRlcnI7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkJFR0lOIEFG VEVSICckbHNuMScgV0lUSElOIDEiKTsKKyRub2RlX3N0YW5kYnktPnBzcWwoCisJJ3Bvc3RncmVz JywKKwkiQkVHSU4gQUZURVIgJyRsc24yJyBXSVRISU4gMSIsCisJc3RkZXJyID0+IFwkc3RkZXJy KTsKK29rKCAkc3RkZXJyID1+IC9jYW5jZWxpbmcgd2FpdGluZyBmb3IgTFNOIGR1ZSB0byB0aW1l b3V0LywKKwkiZ2V0IHRpbWVvdXQgb24gd2FpdGluZyBmb3IgdW5yZWFjaGFibGUgTFNOIik7CisK KyRub2RlX3N0YW5kYnktPnN0b3A7Ciskbm9kZV9wcmltYXJ5LT5zdG9wOworZG9uZV90ZXN0aW5n KCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGFhN2EyNWI4ZjguLjdhMmFjMTc4YmMg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0zMDM1LDYgKzMwMzUsOCBAQCBXYWl0RXZl bnRJTwogV2FpdEV2ZW50SVBDCiBXYWl0RXZlbnRTZXQKIFdhaXRFdmVudFRpbWVvdXQKK1dhaXRM U05Qcm9jSW5mbworV2FpdExTTlN0YXRlCiBXYWl0UE1SZXN1bHQKIFdhbENsb3NlTWV0aG9kCiBX YWxDb21wcmVzc2lvbgo= --=_1ce996b59630b0508d210a6387d2db22--