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 1v3ss6-0057E6-4S for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Oct 2025 09:11:38 +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 1v3ss4-00HCkO-4c for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Oct 2025 09:11:36 +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 1v3ss3-00HCkG-Ne for pgsql-hackers@lists.postgresql.org; Wed, 01 Oct 2025 09:11:36 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1v3srz-0013DF-2a for pgsql-hackers@lists.postgresql.org; Wed, 01 Oct 2025 09:11:36 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 5EAA261BB4; Wed, 1 Oct 2025 18:11:24 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_613e2cd7a206fe3c230ce5a921045672" Content-Transfer-Encoding: 8bit Date: Wed, 01 Oct 2025 18:11:23 +0900 From: torikoshia To: Robert Haas Cc: Atsushi Torikoshi , pgsql-hackers@lists.postgresql.org, samimseih@gmail.com, destrex271@gmail.com Subject: Re: RFC: Logging plan of the running query In-Reply-To: References: <2aedcb5e8120bfdee994775e660f8718@oss.nttdata.com> <174144854199.294105.9417032645816235284.pgcf@coridan.postgresql.org> <784224198089cbe3cc3825332f195475@oss.nttdata.com> <8de51267059a43f53848c69a2bd9bc3b@oss.nttdata.com> <8f99161d84373ea46fb305ad75affa28@oss.nttdata.com> <01962a4f656356fb2899a0c4ace83019@oss.nttdata.com> <6143f00af4bfdba95a85cf866f4acb41@oss.nttdata.com> <9886a201a5da64eab1472db6c70473a8@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <7c7ca3bc345b28fa4b903bd49fdce519@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_613e2cd7a206fe3c230ce5a921045672 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2025-09-25 01:34, Robert Haas wrote: > On Fri, Sep 19, 2025 at 8:42 AM torikoshia > wrote: >> > Yes, it seems as though we should set a flag to prevent reentrancy >> > here -- if we are already in the code path where we log the query >> > plan, we shouldn't accept an interrupt telling us to log the query >> > plan. I haven't looked at the updated patch so maybe that's not >> > necessary for some reason, but in general reentrancy is a concern with >> > features of this type. >> >> Agreed. In the attached patch added a flag. > > This doesn't look safe. If we error out of the section where the flag > is set to true, it will remain true forever. Ugh.. Updated the patch to reset the flag even when an error occurs, using PG_FINALLY(), similar to [1]. [1] https://www.postgresql.org/message-id/27da56de-17c4-4af2-8032-3c58ae0c7b00%40oss.nttdata.com >> So I think it would be fine to remove the PID from >> pg_log_backend_memory_contexts()’s log message when this patch is >> merged. > > Let's leave the PID in there for now for consistency with the existing > message. We can discuss changing it at another time. Agreed. >> To detect “when the current (sub)transaction is (sub)aborted,” >> attached >> patch uses IsTransactionState(). >> With that, the logging code is not executed when the transaction state >> is anything other than TRANS_INPROGRESS, and in some cases this works >> as >> expected. >> On the other hand, when calling pg_log_query_plan() repeatedly during >> make installcheck, I still encountered cases where segfaults occurred. >> >> Specifically, this seems to happen when, after a (sub)abort, the next >> query starts in the same session and a CFI() occurs after >> StartTransaction() has been executed but before Executor() runs. In >> that case, the transaction state has already been changed to >> TRANS_INPROGRESS by StartTransaction(), but the QueryDesc from the >> aborted transaction is still present, which causes the problem. >> >> To address this, attached patch initializes QueryDesc within >> CleanupTransaction(). >> Since this function already resets various members of >> CurrentTransactionState, I feel it’s not so unreasonable to initialize >> QueryDesc there as well. >> Does this approach make sense, or is it problematic? > > Hmm, I think it looks quite odd. I believe it's quite intentional that > the very last thing that CleanupTransaction does is reset s->state, so > I don't think we should be doing this after that. But also, this leads > to an odd inconsistency between CleanupTransaction and > CleanupSubTransaction. Make sense. > What I'm wondering is whether we should instead > reset s->queryDesc inside AbortTransaction() and > AbortSubTransaction(). Perhaps if we do that, then we don't need an > InTransactionState() test elsewhere. What do you think? Resetting QueryDesc in AbortTransaction() and AbortSubTransaction() was what we did in an earlier version of the patch (before v46), so that doesn’t feel strange to me. Updated the patch and confirmed that we can still log the parent’s plan in cases where subtransactions continuously abort, following the same steps as [2]. [2] https://www.postgresql.org/message-id/6143f00af4bfdba95a85cf866f4acb41%40oss.nttdata.com > \> > > Changed it to the following query: >> > > >> > > WITH t AS MATERIALIZED (SELECT pg_log_query_plan(pg_backend_pid())) >> > > SELECT * FROM t; >> > >> > I don't see why that wouldn't have a race condition? >> >> The idea is that (1) pg_log_query_plan() in the WITH clause wraps >> ExecProcNode, and then (2) SELECT * FROM t invokes ExecProcNode, which >> causes the plan to be logged. I think that’s what currently happens >> on >> HEAD. >> When you mention a "race condition", do you mean that if the timing of >> the wrapping in step (1) -- that is, when CFI() is called -- changes >> in >> the future, then the logging might not work? > > I don't think we're guaranteed that the signal is delivered instantly, > so it seems possible to me that (1) would happen after (2). True, but I haven’t found a reliable way to trigger actual logging within a single backend query. I was also considering using an isolation test and injection points, like in the attached PoC patch. The main steps are: In session1, set an injection point to wait during query execution. In session1, run a query that waits at the injection point. In session2, call pg_log_query_plan(). In session2, wake up session1. However, as you pointed out, since the signals are not guaranteed to be delivered instantly, I’m worried that the query could complete before the signal is delivered, causing test instability. Additionally, for a similar function that logs information via signal delivery, pg_log_backend_memory_contexts(), the existing tests only verify that the function succeeds and that permission checks work as described in the comment below; I'm a bit concerned that this might be overkill. -- pg_log_backend_memory_contexts() -- -- Memory contexts are logged and they are not returned to the function. -- Furthermore, their contents can vary depending on the timing. However, -- we can at least verify that the code doesn't fail, and that the -- permissions are set properly. If we align with that test strategy, just executing SELECT pg_log_query_plan(pg_backend_pid()) and verifying that it succeeds would be enough. However, unlike pg_log_backend_memory_contexts(), this function doesn’t log anything for this query. I’m not sure if that’s acceptable. I’d appreciate any thoughts or suggestions on what kind of test coverage would be appropriate here. >> BTW I haven’t looked into this in detail yet, but I’m a little curious >> whether the absence of T_CteScan in functions like >> planstate_tree_walker_impl() is intentional. > > I don't think that function needs any special handling for T_CteScan. > planstate_tree_walker_impl() and other functions need special handling > for cases where a node has children that are not in the lefttree, > righttree, initPlan list, or subPlan list; but a CteScan has no extra > Plan pointer: > > typedef struct CteScan > { > Scan scan; > /* ID of init SubPlan for CTE */ > int ctePlanId; > /* ID of Param representing CTE output */ > int cteParam; > } CteScan; Thanks for looking into this! understood. -- Regards, -- Atsushi Torikoshi Seconded from NTT DATA Japan Corporation to SRA OSS K.K. --=_613e2cd7a206fe3c230ce5a921045672 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v49-0001-Add-function-to-log-the-plan-of-the-currently-ru.patch Content-Disposition: attachment; filename=v49-0001-Add-function-to-log-the-plan-of-the-currently-ru.patch; size=35768 RnJvbSAzMDg5NDc5ZGYzYmQzYzNlNGQ5OTZiMWUyMGQ0ZWJmZDY3YWE4MmM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFdlZCwgMSBPY3QgMjAyNSAxNzo1MDoyOCArMDkwMApTdWJqZWN0OiBb UEFUQ0ggdjQ5XSBBZGQgZnVuY3Rpb24gdG8gbG9nIHRoZSBwbGFuIG9mIHRoZSBjdXJyZW50bHkg cnVubmluZwogcXVlcnkKCkN1cnJlbnRseSwgd2UgaGF2ZSB0byB3YWl0IGZvciB0aGUgcXVlcnkg ZXhlY3V0aW9uIHRvIGZpbmlzaAp0byBrbm93IGl0cyBwbGFuIGVpdGhlciB1c2luZyBFWFBMQUlO IEFOQUxZWkUgb3IgYXV0b19leHBsYWluLgpUaGlzIGlzIG5vdCBzbyBjb252ZW5pZW50LCBmb3Ig ZXhhbXBsZSB3aGVuIGludmVzdGlnYXRpbmcKbG9uZy1ydW5uaW5nIHF1ZXJpZXMgb24gcHJvZHVj dGlvbiBlbnZpcm9ubWVudHMuClRvIGltcHJvdmUgdGhpcyBzaXR1YXRpb24sIHRoaXMgcGF0Y2gg YWRkcyBwZ19sb2dfcXVlcnlfcGxhbigpCmZ1bmN0aW9uIHRoYXQgcmVxdWVzdHMgdG8gbG9nIHRo ZSBwbGFuIG9mIHRoZSBjdXJyZW50bHkKZXhlY3V0aW5nIHF1ZXJ5LgoKT24gcmVjZWlwdCBvZiB0 aGUgcmVxdWVzdCwgRXhlY1Byb2NOb2RlcyBvZiB0aGUgY3VycmVudCBwbGFuCm5vZGUgYW5kIGl0 cyBzdWJzaWRpYXJ5IG5vZGVzIGFyZSB3cmFwcGVkIHdpdGgKRXhlY1Byb2NOb2RlRmlyc3QsIHdo aWNoIGltcGxlbGVtZW50cyBsb2dnaW5nIHF1ZXJ5IHBsYW4uCldoZW4gZXhlY3V0b3IgZXhlY3V0 ZXMgdGhlIG9uZSBvZiB0aGUgd3JhcHBlZCBub2RlcywgdGhlCnF1ZXJ5IHBsYW4gaXMgbG9nZ2Vk LgoKT3VyIGluaXRpYWwgaWRlYSB3YXMgdG8gc2VuZCBhIHNpZ25hbCB0byB0aGUgdGFyZ2V0IGJh Y2tlbmQKcHJvY2Vzcywgd2hpY2ggaW52b2tlcyBFWFBMQUlOIGxvZ2ljIGF0IHRoZSBuZXh0CkNI RUNLX0ZPUl9JTlRFUlJVUFRTKCkgY2FsbC4gSG93ZXZlciwgd2UgcmVhbGl6ZWQgZHVyaW5nCnBy b3RvdHlwaW5nIHRoYXQgRVhQTEFJTiBpcyBjb21wbGV4IGFuZCBtYXkgbm90IGJlIHNhZmVseQpl eGVjdXRlZCBhdCBhcmJpdHJhcnkgaW50ZXJydXB0IHBvaW50cy4KCkJ5IGRlZmF1bHQsIG9ubHkg c3VwZXJ1c2VycyBhcmUgYWxsb3dlZCB0byByZXF1ZXN0IHRvIGxvZyB0aGUKcGxhbnMgYmVjYXVz ZSBhbGxvd2luZyBhbnkgdXNlcnMgdG8gaXNzdWUgdGhpcyByZXF1ZXN0IGF0IGFuCnVuYm91bmRl ZCByYXRlIHdvdWxkIGNhdXNlIGxvdHMgb2YgbG9nIG1lc3NhZ2VzIGFuZCB3aGljaCBjYW4KbGVh ZCB0byBkZW5pYWwgb2Ygc2VydmljZS4KClRvZG86IENvbnNpZGVyIHJlbW92aW5nIHRoZSBQSUQg ZnJvbSB0aGUgbG9nIG91dHB1dCBvZgpwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKSBh bmQgcGdfbG9nX3F1ZXJ5X3BsYW4oKS4KRm9yIGRldGFpbCwgc2VlIHRoZSBkaXNjdXNzaW9uOgoK aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQSUyQlRnbW9ZODFyN25wVFMz NE5fNU1MQV91NmdoZm9yNUhvU2FhcjUzdmVYVVl1MU94USU0MG1haWwuZ21haWwuY29tCi0tLQog Y29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAgfCAgMjQgKy0tCiBk b2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNnbWwgICAgICAgICAgICB8ICAyNCArKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAgICAgIHwgIDM0ICsrKysKIHNy Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgICAgIHwgICAyICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5jICAgICAgIHwgMTgzICsrKysrKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgIHwgIDM4 ICsrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgIHwgIDE3ICsr CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgICAgICB8IDEyMyArKysr KysrKysrKystCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICB8 ICAgNCArCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICB8ICAg NCArCiBzcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICB8ICAgMiAr CiBzcmMvaW5jbHVkZS9hY2Nlc3MveGFjdC5oICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICB8ICAgNiArCiBzcmMv aW5jbHVkZS9jb21tYW5kcy9keW5hbWljX2V4cGxhaW4uaCAgICAgICB8ICAyNSArKysKIHNyYy9p bmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvaW5j bHVkZS9jb21tYW5kcy9leHBsYWluX3N0YXRlLmggICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dCB8ICA0MiArKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvbWlzY19mdW5jdGlvbnMuc3FsICAgICAgfCAgMzEgKysrKwogMjMgZmlsZXMgY2hhbmdlZCwg NTQ0IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvY29tbWFuZHMvZHluYW1pY19leHBsYWluLmgKCmRpZmYgLS1naXQgYS9jb250 cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyBiL2NvbnRyaWIvYXV0b19leHBsYWluL2F1 dG9fZXhwbGFpbi5jCmluZGV4IDFmNGJhZGI0OTI4Li42YzQyMTdjOWQxZiAxMDA2NDQKLS0tIGEv Y29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKKysrIGIvY29udHJpYi9hdXRvX2V4 cGxhaW4vYXV0b19leHBsYWluLmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlIDxsaW1pdHMu aD4KIAogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2R5 bmFtaWNfZXhwbGFpbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW4uaCIKICNpbmNsdWRl ICJjb21tYW5kcy9leHBsYWluX2Zvcm1hdC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW5f c3RhdGUuaCIKQEAgLTQwNCwyNiArNDA1LDkgQEAgZXhwbGFpbl9FeGVjdXRvckVuZChRdWVyeURl c2MgKnF1ZXJ5RGVzYykKIAkJCWVzLT5mb3JtYXQgPSBhdXRvX2V4cGxhaW5fbG9nX2Zvcm1hdDsK IAkJCWVzLT5zZXR0aW5ncyA9IGF1dG9fZXhwbGFpbl9sb2dfc2V0dGluZ3M7CiAKLQkJCUV4cGxh aW5CZWdpbk91dHB1dChlcyk7Ci0JCQlFeHBsYWluUXVlcnlUZXh0KGVzLCBxdWVyeURlc2MpOwot CQkJRXhwbGFpblF1ZXJ5UGFyYW1ldGVycyhlcywgcXVlcnlEZXNjLT5wYXJhbXMsIGF1dG9fZXhw bGFpbl9sb2dfcGFyYW1ldGVyX21heF9sZW5ndGgpOwotCQkJRXhwbGFpblByaW50UGxhbihlcywg cXVlcnlEZXNjKTsKLQkJCWlmIChlcy0+YW5hbHl6ZSAmJiBhdXRvX2V4cGxhaW5fbG9nX3RyaWdn ZXJzKQotCQkJCUV4cGxhaW5QcmludFRyaWdnZXJzKGVzLCBxdWVyeURlc2MpOwotCQkJaWYgKGVz LT5jb3N0cykKLQkJCQlFeHBsYWluUHJpbnRKSVRTdW1tYXJ5KGVzLCBxdWVyeURlc2MpOwotCQkJ RXhwbGFpbkVuZE91dHB1dChlcyk7Ci0KLQkJCS8qIFJlbW92ZSBsYXN0IGxpbmUgYnJlYWsgKi8K LQkJCWlmIChlcy0+c3RyLT5sZW4gPiAwICYmIGVzLT5zdHItPmRhdGFbZXMtPnN0ci0+bGVuIC0g MV0gPT0gJ1xuJykKLQkJCQllcy0+c3RyLT5kYXRhWy0tZXMtPnN0ci0+bGVuXSA9ICdcMCc7Ci0K LQkJCS8qIEZpeCBKU09OIHRvIG91dHB1dCBhbiBvYmplY3QgKi8KLQkJCWlmIChhdXRvX2V4cGxh aW5fbG9nX2Zvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9KU09OKQotCQkJewotCQkJCWVzLT5zdHIt PmRhdGFbMF0gPSAneyc7Ci0JCQkJZXMtPnN0ci0+ZGF0YVtlcy0+c3RyLT5sZW4gLSAxXSA9ICd9 JzsKLQkJCX0KKwkJCUV4cGxhaW5TdHJpbmdBc3NlbWJsZShlcywgcXVlcnlEZXNjLCBhdXRvX2V4 cGxhaW5fbG9nX2Zvcm1hdCwKKwkJCQkJCQkJICBhdXRvX2V4cGxhaW5fbG9nX3RyaWdnZXJzLAor CQkJCQkJCQkgIGF1dG9fZXhwbGFpbl9sb2dfcGFyYW1ldGVyX21heF9sZW5ndGgpOwogCiAJCQkv KgogCQkJICogTm90ZTogd2UgcmVseSBvbiB0aGUgZXhpc3RpbmcgbG9nZ2luZyBvZiBjb250ZXh0 IG9yCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNnbWwKaW5kZXggMWI0NjViYzhiYTcuLjY2YmZiNWFi NGRmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1hZG1pbi5zZ21sCkBAIC0xODQsNiArMTg0LDMwIEBACiAg ICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KIAorICAgICAgPHJvdz4KKyAgICAg ICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1 cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfbG9nX3F1ZXJ5 X3BsYW48L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+ cGdfbG9nX3F1ZXJ5X3BsYW48L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+cGlkPC9wYXJhbWV0ZXI+ IDx0eXBlPmludGVnZXI8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmJvb2xlYW48L3Jl dHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmVxdWVz dHMgdG8gbG9nIHRoZSBwbGFuIG9mIHRoZSBxdWVyeSBjdXJyZW50bHkgcnVubmluZyBvbiB0aGUK KyAgICAgICAgYmFja2VuZCB3aXRoIHNwZWNpZmllZCBwcm9jZXNzIElELgorICAgICAgICBJdCB3 aWxsIGJlIGxvZ2dlZCBhdCA8bGl0ZXJhbD5MT0c8L2xpdGVyYWw+IG1lc3NhZ2UgbGV2ZWwgYW5k CisgICAgICAgIHdpbGwgYXBwZWFyIGluIHRoZSBzZXJ2ZXIgbG9nIGJhc2VkIG9uIHRoZSBsb2cK KyAgICAgICAgY29uZmlndXJhdGlvbiBzZXQgKFNlZSA8eHJlZiBsaW5rZW5kPSJydW50aW1lLWNv bmZpZy1sb2dnaW5nIi8+CisgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uKSwgYnV0IHdpbGwg bm90IGJlIHNlbnQgdG8gdGhlIGNsaWVudAorICAgICAgICByZWdhcmRsZXNzIG9mIDx4cmVmIGxp bmtlbmQ9Imd1Yy1jbGllbnQtbWluLW1lc3NhZ2VzIi8+LgorICAgICAgIDwvcGFyYT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyByZXN0cmljdGVkIHRvIHN1cGVydXNl cnMgYnkgZGVmYXVsdCwgYnV0IG90aGVyCisgICAgICAgIHVzZXJzIGNhbiBiZSBncmFudGVkIEVY RUNVVEUgdG8gcnVuIHRoZSBmdW5jdGlvbi4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg IDwvcm93PgorCisKICAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KICAgICAgICAgPGluZGV4dGVybT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCAyY2YzZDRlOTJiNy4uNTZjM2MxOTZmNDUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2VudW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIKICNpbmNs dWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2R5bmFtaWNfZXhwbGFp bi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3RyaWdnZXIuaCIKICNpbmNsdWRlICJjb21tb24vcGdfcHJuZy5oIgpAQCAtMjE1LDYgKzIxNiw3 IEBAIHR5cGVkZWYgc3RydWN0IFRyYW5zYWN0aW9uU3RhdGVEYXRhCiAJYm9vbAkJcGFyYWxsZWxD aGlsZFhhY3Q7CS8qIGlzIGFueSBwYXJlbnQgdHJhbnNhY3Rpb24gcGFyYWxsZWw/ICovCiAJYm9v bAkJY2hhaW47CQkJLyogc3RhcnQgYSBuZXcgYmxvY2sgYWZ0ZXIgdGhpcyBvbmUgKi8KIAlib29s CQl0b3BYaWRMb2dnZWQ7CS8qIGZvciBhIHN1YnhhY3Q6IGlzIHRvcC1sZXZlbCBYSUQgbG9nZ2Vk PyAqLworCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsJCS8qIG15IGN1cnJlbnQgUXVlcnlEZXNjICov CiAJc3RydWN0IFRyYW5zYWN0aW9uU3RhdGVEYXRhICpwYXJlbnQ7CS8qIGJhY2sgbGluayB0byBw YXJlbnQgKi8KIH0gVHJhbnNhY3Rpb25TdGF0ZURhdGE7CiAKQEAgLTI0OCw2ICsyNTAsNyBAQCBz dGF0aWMgVHJhbnNhY3Rpb25TdGF0ZURhdGEgVG9wVHJhbnNhY3Rpb25TdGF0ZURhdGEgPSB7CiAJ LnN0YXRlID0gVFJBTlNfREVGQVVMVCwKIAkuYmxvY2tTdGF0ZSA9IFRCTE9DS19ERUZBVUxULAog CS50b3BYaWRMb2dnZWQgPSBmYWxzZSwKKwkucXVlcnlEZXNjID0gTlVMTCwKIH07CiAKIC8qCkBA IC05MzMsNiArOTM2LDI3IEBAIEdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCh2b2lkKQog CXJldHVybiBzLT5uZXN0aW5nTGV2ZWw7CiB9CiAKKy8qCisgKiBTZXRDdXJyZW50UXVlcnlEZXNj CisgKi8KK3ZvaWQKK1NldEN1cnJlbnRRdWVyeURlc2MoUXVlcnlEZXNjICpxdWVyeURlc2MpCit7 CisJVHJhbnNhY3Rpb25TdGF0ZSBzID0gQ3VycmVudFRyYW5zYWN0aW9uU3RhdGU7CisKKwlzLT5x dWVyeURlc2MgPSBxdWVyeURlc2M7Cit9CisKKy8qCisgKiBHZXRDdXJyZW50UXVlcnlEZXNjCisg Ki8KK1F1ZXJ5RGVzYyAqCitHZXRDdXJyZW50UXVlcnlEZXNjKHZvaWQpCit7CisJVHJhbnNhY3Rp b25TdGF0ZSBzID0gQ3VycmVudFRyYW5zYWN0aW9uU3RhdGU7CisKKwlyZXR1cm4gcy0+cXVlcnlE ZXNjOworfQogCiAvKgogICoJVHJhbnNhY3Rpb25JZElzQ3VycmVudFRyYW5zYWN0aW9uSWQKQEAg LTI5MTYsNiArMjk0MCw5IEBAIEFib3J0VHJhbnNhY3Rpb24odm9pZCkKIAkvKiBSZXNldCBzbmFw c2hvdCBleHBvcnQgc3RhdGUuICovCiAJU25hcEJ1aWxkUmVzZXRFeHBvcnRlZFNuYXBzaG90U3Rh dGUoKTsKIAorCS8qIFJlc2V0IGN1cnJlbnQgcXVlcnkgcGxhbiBzdGF0ZSB1c2VkIGZvciBsb2dn aW5nLiAqLworCVNldEN1cnJlbnRRdWVyeURlc2MoTlVMTCk7CisKIAkvKgogCSAqIElmIHRoaXMg eGFjdCBoYXMgc3RhcnRlZCBhbnkgdW5maW5pc2hlZCBwYXJhbGxlbCBvcGVyYXRpb24sIGNsZWFu IHVwCiAJICogaXRzIHdvcmtlcnMgYW5kIGV4aXQgcGFyYWxsZWwgbW9kZS4gIERvbid0IHdhcm4g YWJvdXQgbGVha2VkIHJlc291cmNlcy4KQEAgLTUzMDgsNiArNTMzNSwxMyBAQCBBYm9ydFN1YlRy YW5zYWN0aW9uKHZvaWQpCiAJLyogUmVzZXQgbG9naWNhbCBzdHJlYW1pbmcgc3RhdGUuICovCiAJ UmVzZXRMb2dpY2FsU3RyZWFtaW5nU3RhdGUoKTsKIAorCS8qCisJICogUmVzZXQgY3VycmVudCBx dWVyeSBwbGFuIHN0YXRlIHVzZWQgZm9yIGxvZ2dpbmcuIE5vdGUgdGhhdCBldmVuIGFmdGVyCisJ ICogdGhpcyByZXNldCwgaXQncyBzdGlsbCBwb3NzaWJsZSB0byBvYnRhaW4gdGhlIHBhcmVudCB0 cmFuc2FjdGlvbidzCisJICogcXVlcnkgcGxhbnMsIHNpbmNlIHRoZXkgYXJlIHByZXNlcnZlZCBp biBzdGFuZGFyZF9FeGVjdXRvclJ1bigpLgorCSAqLworCVNldEN1cnJlbnRRdWVyeURlc2MoTlVM TCk7CisKIAkvKgogCSAqIE5vIG5lZWQgZm9yIFNuYXBCdWlsZFJlc2V0RXhwb3J0ZWRTbmFwc2hv dFN0YXRlKCkgaGVyZSwgc25hcHNob3QKIAkgKiBleHBvcnRzIGFyZSBub3Qgc3VwcG9ydGVkIGlu IHN1YnRyYW5zYWN0aW9ucy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X2Z1bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3Fs CmluZGV4IDJkOTQ2ZDZkOWU5Li42N2JlYWZjYzgyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV9mdW5jdGlvbnMuc3FsCkBAIC03ODIsNiArNzgyLDggQEAgUkVWT0tFIEVYRUNVVEUgT04g RlVOQ1RJT04gcGdfbHNfbG9naWNhbG1hcGRpcigpIEZST00gUFVCTElDOwogCiBSRVZPS0UgRVhF Q1VURSBPTiBGVU5DVElPTiBwZ19sc19yZXBsc2xvdGRpcih0ZXh0KSBGUk9NIFBVQkxJQzsKIAor UkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX3F1ZXJ5X3BsYW4oaW50ZWdlcikgRlJP TSBQVUJMSUM7CisKIC0tCiAtLSBXZSBhbHNvIHNldCB1cCBzb21lIHRoaW5ncyBhcyBhY2Nlc3Np YmxlIHRvIHN0YW5kYXJkIHJvbGVzLgogLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggY2IyZmJk YzdjNjAuLjVlODM5MDdlYjE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtl ZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMzIsNiArMzIsNyBA QCBPQkpTID0gXAogCWRlZmluZS5vIFwKIAlkaXNjYXJkLm8gXAogCWRyb3BjbWRzLm8gXAorCWR5 bmFtaWNfZXhwbGFpbi5vIFwKIAlldmVudF90cmlnZ2VyLm8gXAogCWV4cGxhaW4ubyBcCiAJZXhw bGFpbl9kci5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2R5bmFtaWNfZXhw bGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHluYW1pY19leHBsYWluLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIyMWE1MWFhZmU0Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHluYW1pY19leHBsYWluLmMKQEAgLTAsMCArMSwx ODMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGR5bmFtaWNfZXhwbGFpbi5jCisgKgkg IEV4cGxhaW4gcXVlcnkgcGxhbnMgZHVyaW5nIGV4ZWN1dGlvbgorICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LTUsIFJlZ2VudHMgb2YgdGhlIFVuaXZl cnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNp bmNsdWRlICJjb21tYW5kcy9keW5hbWljX2V4cGxhaW4uaCIKKyNpbmNsdWRlICJjb21tYW5kcy9l eHBsYWluLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbl9mb3JtYXQuaCIKKyNpbmNsdWRl ICJjb21tYW5kcy9leHBsYWluX3N0YXRlLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNp bmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgorCisvKiBJcyBwbGFuIG5vZGUgd3JhcHBp bmcgZm9yIHF1ZXJ5IHBsYW4gbG9nZ2luZyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3M/ICovCitzdGF0 aWMgYm9vbCBXcmFwTm9kZXNJblByb2dyZXNzID0gZmFsc2U7CisKKy8qCisgKiBIYW5kbGUgcmVj ZWlwdCBvZiBhbiBpbnRlcnJ1cHQgaW5kaWNhdGluZyBsb2dnaW5nIHRoZSBwbGFuIG9mIHRoZSBj dXJyZW50bHkKKyAqIHJ1bm5pbmcgcXVlcnkuCisgKgorICogQWxsIHRoZSBhY3R1YWwgd29yayBp cyBkZWZlcnJlZCB0byBQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0KCksCisgKiBiZWNhdXNl IHdlIGNhbm5vdCBzYWZlbHkgZW1pdCBhIGxvZyBtZXNzYWdlIGluc2lkZSB0aGUgc2lnbmFsIGhh bmRsZXIuCisgKi8KK3ZvaWQKK0hhbmRsZUxvZ1F1ZXJ5UGxhbkludGVycnVwdCh2b2lkKQorewor CUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCUxvZ1F1ZXJ5UGxhblBlbmRpbmcgPSB0cnVlOwor CS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCit9 CisKKy8qCisgKiBBY3R1YWwgcGxhbiBsb2dnaW5nIGZ1bmN0aW9uLgorICovCit2b2lkCitMb2dR dWVyeVBsYW4odm9pZCkKK3sKKwlFeHBsYWluU3RhdGUgKmVzOworCU1lbW9yeUNvbnRleHQgY3h0 OworCU1lbW9yeUNvbnRleHQgb2xkX2N4dDsKKwlRdWVyeURlc2MgICpxdWVyeURlc2M7CisKKwlj eHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJCQkJ CSJsb2dfcXVlcnlfcGxhbiB0ZW1wb3JhcnkgY29udGV4dCIsCisJCQkJCQkJCUFMTE9DU0VUX0RF RkFVTFRfU0laRVMpOworCisJb2xkX2N4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjeHQpOwor CisJZXMgPSBOZXdFeHBsYWluU3RhdGUoKTsKKworCWVzLT5mb3JtYXQgPSBFWFBMQUlOX0ZPUk1B VF9URVhUOworCWVzLT5zZXR0aW5ncyA9IHRydWU7CisJZXMtPnZlcmJvc2UgPSB0cnVlOworCWVz LT5zaWduYWxlZCA9IHRydWU7CisKKwkvKgorCSAqIEN1cnJlbnQgUXVlcnlEZXNjIGlzIHZhbGlk IG9ubHkgZHVyaW5nIHN0YW5kYXJkX0V4ZWN1dG9yUnVuLiBIb3dldmVyLAorCSAqIEV4ZWNQcm9j Tm9kZSBjYW4gYmUgY2FsbGVkIGFmdGVyd2FyZChpLmUuLCBFeGVjUG9zdHByb2Nlc3NQbGFuKS4g VG8KKwkgKiBoYW5kbGUgdGhlIGNhc2UsIGNoZWNrIHdoZXRoZXIgd2UgaGF2ZSBRdWVyeURlc2Mg bm93LgorCSAqLworCXF1ZXJ5RGVzYyA9IEdldEN1cnJlbnRRdWVyeURlc2MoKTsKKworCWlmIChx dWVyeURlc2MgPT0gTlVMTCkKKwl7CisJCUxvZ1F1ZXJ5UGxhblBlbmRpbmcgPSBmYWxzZTsKKwkJ cmV0dXJuOworCX0KKworCUV4cGxhaW5TdHJpbmdBc3NlbWJsZShlcywgcXVlcnlEZXNjLCBlcy0+ Zm9ybWF0LCAwLCAtMSk7CisKKwllcmVwb3J0KExPR19TRVJWRVJfT05MWSwKKwkJCWVycm1zZygi cXVlcnkgYW5kIGl0cyBwbGFuIHJ1bm5pbmcgb24gYmFja2VuZCB3aXRoIFBJRCAlZCBhcmU6XG4l cyIsCisJCQkJICAgTXlQcm9jUGlkLCBlcy0+c3RyLT5kYXRhKSk7CisKKwlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkX2N4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZShjeHQpOworCisJTG9nUXVl cnlQbGFuUGVuZGluZyA9IGZhbHNlOworfQorCisvKgorICogUHJvY2VzcyB0aGUgcmVxdWVzdCBm b3IgbG9nZ2luZyBxdWVyeSBwbGFuIGF0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCisgKgorICog U2luY2UgZXhlY3V0aW5nIEVYUExBSU4tcmVsYXRlZCBjb2RlIGF0IGFuIGFyYml0cmFyeSBDSEVD S19GT1JfSU5URVJSVVBUUygpCisgKiBwb2ludCBpcyBwb3RlbnRpYWxseSB1bnNhZmUsIHRoaXMg ZnVuY3Rpb24ganVzdCB3cmFwcyB0aGUgbm9kZXMgb2YKKyAqIEV4ZWNQcm9jTm9kZSB3aXRoIEV4 ZWNQcm9jTm9kZUZpcnN0LCB3aGljaCBsb2dzIHF1ZXJ5IHBsYW4gaWYgcmVxdWVzdGVkLgorICog VGhpcyB3YXkgZW5zdXJlcyB0aGF0IEVYUExBSU4tcmVsYXRlZCBjb2RlIGlzIGV4ZWN1dGVkIG9u bHkgZHVyaW5nCisgKiBFeGVjUHJvY05vZGVGaXJzdCwgd2hlcmUgaXQgaXMgY29uc2lkZXJlZCBz YWZlLgorICovCit2b2lkCitQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0KHZvaWQpCit7CisJ UXVlcnlEZXNjICpxdWVyeWRlc2MgPSBHZXRDdXJyZW50UXVlcnlEZXNjKCk7CisKKwkvKiBJZiBj dXJyZW50IHF1ZXJ5IGhhcyBhbHJlYWR5IGZpbmlzaGVkLCB3ZSBjYW4gZG8gbm90aGluZyBidXQg ZXhpdCAqLworCWlmIChxdWVyeWRlc2MgPT0gTlVMTCkKKwl7CisJCUxvZ1F1ZXJ5UGxhblBlbmRp bmcgPSBmYWxzZTsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogRXhpdCBpbW1lZGlhdGVseSBp ZiB3cmFwcGluZyBwbGFuIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuIFRoaXMgcHJldmVudHMKKwkg KiByZWN1cnNpdmUgY2FsbHMsIHdoaWNoIGNvdWxkIG9jY3VyIGlmIGxvZ2dpbmcgaXMgcmVxdWVz dGVkIHJlcGVhdGVkbHkgYW5kCisJICogcmFwaWRseSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBp bmZpbml0ZSByZWN1cnNpb24gYW5kIGNyYXNoLgorCSAqLworCWlmIChXcmFwTm9kZXNJblByb2dy ZXNzKQorCQlyZXR1cm47CisKKwlXcmFwTm9kZXNJblByb2dyZXNzID0gdHJ1ZTsKKworCVBHX1RS WSgpOworCXsKKwkJLyoKKwkJICogV3JhcCBFeGVjUHJvY05vZGVzIHdpdGggRXhlY1Byb2NOb2Rl Rmlyc3QsIHdoaWNoIGxvZ3MgcXVlcnkgcGxhbgorCQkgKiB3aGVuIExvZ1F1ZXJ5UGxhblBlbmRp bmcgaXMgdHJ1ZS4KKwkJICovCisJCUV4ZWNTZXRFeGVjUHJvY05vZGVSZWN1cnNlKHF1ZXJ5ZGVz Yy0+cGxhbnN0YXRlKTsKKwl9CisJUEdfRklOQUxMWSgpOworCXsKKwkJV3JhcE5vZGVzSW5Qcm9n cmVzcyA9IGZhbHNlOworCX0KKwlQR19FTkRfVFJZKCk7Cit9CisKKy8qCisgKiBTaWduYWwgYSBi YWNrZW5kIHByb2Nlc3MgdG8gbG9nIHRoZSBxdWVyeSBwbGFuIG9mIHRoZSBydW5uaW5nIHF1ZXJ5 LgorICoKKyAqIEJ5IGRlZmF1bHQsIG9ubHkgc3VwZXJ1c2VycyBhcmUgYWxsb3dlZCB0byBzaWdu YWwgdG8gbG9nIHRoZSBwbGFuIGJlY2F1c2UKKyAqIGFsbG93aW5nIGFueSB1c2VycyB0byBpc3N1 ZSB0aGlzIHJlcXVlc3QgYXQgYW4gdW5ib3VuZGVkIHJhdGUgd291bGQKKyAqIGNhdXNlIGxvdHMg b2YgbG9nIG1lc3NhZ2VzIGFuZCB3aGljaCBjYW4gbGVhZCB0byBkZW5pYWwgb2Ygc2VydmljZS4K KyAqIEFkZGl0aW9uYWwgcm9sZXMgY2FuIGJlIHBlcm1pdHRlZCB3aXRoIEdSQU5ULgorICovCitE YXR1bQorcGdfbG9nX3F1ZXJ5X3BsYW4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlpbnQJCQlwaWQg PSBQR19HRVRBUkdfSU5UMzIoMCk7CisJUEdQUk9DCSAgICpwcm9jOworCVBnQmFja2VuZFN0YXR1 cyAqYmVfc3RhdHVzOworCisJcHJvYyA9IEJhY2tlbmRQaWRHZXRQcm9jKHBpZCk7CisKKwlpZiAo cHJvYyA9PSBOVUxMKQorCXsKKwkJLyoKKwkJICogVGhpcyBpcyBqdXN0IGEgd2FybmluZyBzbyBh IGxvb3AtdGhyb3VnaC1yZXN1bHRzZXQgd2lsbCBub3QgYWJvcnQKKwkJICogaWYgb25lIGJhY2tl bmQgdGVybWluYXRlZCBvbiBpdHMgb3duIGR1cmluZyB0aGUgcnVuLgorCQkgKi8KKwkJZXJlcG9y dChXQVJOSU5HLAorCQkJCShlcnJtc2coIlBJRCAlZCBpcyBub3QgYSBQb3N0Z3JlU1FMIGJhY2tl bmQgcHJvY2VzcyIsIHBpZCkpKTsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCWJl X3N0YXR1cyA9IHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9wcm9jX251bWJlcihwcm9jLT52eGlkLnBy b2NOdW1iZXIpOworCWlmIChiZV9zdGF0dXMtPnN0X2JhY2tlbmRUeXBlICE9IEJfQkFDS0VORCkK Kwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJQSUQgJWQgaXMgbm90IGEgUG9z dGdyZVNRTCBjbGllbnQgYmFja2VuZCBwcm9jZXNzIiwgcGlkKSkpOworCQlQR19SRVRVUk5fQk9P TChmYWxzZSk7CisJfQorCisJaWYgKFNlbmRQcm9jU2lnbmFsKHBpZCwgUFJPQ1NJR19MT0dfUVVF UllfUExBTiwgcHJvYy0+dnhpZC5wcm9jTnVtYmVyKSA8IDApCisJeworCQllcmVwb3J0KFdBUk5J TkcsCisJCQkJKGVycm1zZygiY291bGQgbm90IHNlbmQgc2lnbmFsIHRvIHByb2Nlc3MgJWQ6ICVt IiwgcGlkKSkpOworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJUEdfUkVUVVJOX0JP T0wodHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggMjA3Zjg2ZjFkMzkuLjkyZjAy MjYwZTM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0xMDg1LDYgKzEwODUsMzcgQEAgRXhw bGFpblF1ZXJ5UGFyYW1ldGVycyhFeHBsYWluU3RhdGUgKmVzLCBQYXJhbUxpc3RJbmZvIHBhcmFt cywgaW50IG1heGxlbikKIAkJRXhwbGFpblByb3BlcnR5VGV4dCgiUXVlcnkgUGFyYW1ldGVycyIs IHN0ciwgZXMpOwogfQogCisvKgorICogRXhwbGFpblN0cmluZ0Fzc2VtYmxlIC0KKyAqICAgIEFz c2VtYmxlIGVzLT5zdHIgZm9yIGxvZ2dpbmcgYWNjb3JkaW5nIHRvIHNwZWNpZmllZCBvcHRpb25z IGFuZCBmb3JtYXQKKyAqLworCit2b2lkCitFeHBsYWluU3RyaW5nQXNzZW1ibGUoRXhwbGFpblN0 YXRlICplcywgUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBsb2dGb3JtYXQsCisJCQkJCSAgYm9v bCBsb2dUcmlnZ2VycywgaW50IGxvZ1BhcmFtZXRlck1heExlbmd0aCkKK3sKKwlFeHBsYWluQmVn aW5PdXRwdXQoZXMpOworCUV4cGxhaW5RdWVyeVRleHQoZXMsIHF1ZXJ5RGVzYyk7CisJRXhwbGFp blF1ZXJ5UGFyYW1ldGVycyhlcywgcXVlcnlEZXNjLT5wYXJhbXMsIGxvZ1BhcmFtZXRlck1heExl bmd0aCk7CisJRXhwbGFpblByaW50UGxhbihlcywgcXVlcnlEZXNjKTsKKwlpZiAoZXMtPmFuYWx5 emUgJiYgbG9nVHJpZ2dlcnMpCisJCUV4cGxhaW5QcmludFRyaWdnZXJzKGVzLCBxdWVyeURlc2Mp OworCWlmIChlcy0+Y29zdHMpCisJCUV4cGxhaW5QcmludEpJVFN1bW1hcnkoZXMsIHF1ZXJ5RGVz Yyk7CisJRXhwbGFpbkVuZE91dHB1dChlcyk7CisKKwkvKiBSZW1vdmUgbGFzdCBsaW5lIGJyZWFr ICovCisJaWYgKGVzLT5zdHItPmxlbiA+IDAgJiYgZXMtPnN0ci0+ZGF0YVtlcy0+c3RyLT5sZW4g LSAxXSA9PSAnXG4nKQorCQllcy0+c3RyLT5kYXRhWy0tZXMtPnN0ci0+bGVuXSA9ICdcMCc7CisK KwkvKiBGaXggSlNPTiB0byBvdXRwdXQgYW4gb2JqZWN0ICovCisJaWYgKGxvZ0Zvcm1hdCA9PSBF WFBMQUlOX0ZPUk1BVF9KU09OKQorCXsKKwkJZXMtPnN0ci0+ZGF0YVswXSA9ICd7JzsKKwkJZXMt PnN0ci0+ZGF0YVtlcy0+c3RyLT5sZW4gLSAxXSA9ICd9JzsKKwl9Cit9CisKIC8qCiAgKiByZXBv cnRfdHJpZ2dlcnMgLQogICoJCXJlcG9ydCBleGVjdXRpb24gc3RhdHMgZm9yIGEgc2luZ2xlIHJl bGF0aW9uJ3MgdHJpZ2dlcnMKQEAgLTE4MjAsNyArMTg1MSwxMCBAQCBFeHBsYWluTm9kZShQbGFu U3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCiAJLyoKIAkgKiBXZSBoYXZlIHRv IGZvcmNpYmx5IGNsZWFuIHVwIHRoZSBpbnN0cnVtZW50YXRpb24gc3RhdGUgYmVjYXVzZSB3ZQot CSAqIGhhdmVuJ3QgZG9uZSBFeGVjdXRvckVuZCB5ZXQuICBUaGlzIGlzIHByZXR0eSBncm90dHkg Li4uCisJICogaGF2ZW4ndCBkb25lIEV4ZWN1dG9yRW5kIHlldC4gIFRoaXMgaXMgcHJldHR5IGdy b3R0eSAuLi4gVGhpcyBjbGVhbnVwCisJICogc2hvdWxkIG5vdCBiZSBkb25lIHdoZW4gdGhlIHF1 ZXJ5IGhhcyBhbHJlYWR5IGJlZW4gZXhlY3V0ZWQgYW5kIGV4cGxhaW4KKwkgKiBoYXMgYmVlbiBy ZXF1ZXN0ZWQgYnkgc2lnbmFsLCBhcyB0aGUgdGFyZ2V0IHF1ZXJ5IG1heSB1c2UKKwkgKiBpbnN0 cnVtZW50YXRpb24gYW5kIGNsZWFuIGl0c2VsZiB1cC4KIAkgKgogCSAqIE5vdGU6IGNvbnRyaWIv YXV0b19leHBsYWluIGNvdWxkIGNhdXNlIGluc3RydW1lbnRhdGlvbiB0byBiZSBzZXQgdXAKIAkg KiBldmVuIHRob3VnaCB3ZSBkaWRuJ3QgYXNrIGZvciBpdCBoZXJlLiAgQmUgY2FyZWZ1bCBub3Qg dG8gcHJpbnQgYW55CkBAIC0xODI4LDcgKzE4NjIsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCSAqIEluc3RyRW5kTG9vcCBjYWxsIGFueXdh eSwgaWYgcG9zc2libGUsIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGNhc2VzCiAJICogYXV0b19l eHBsYWluIGhhcyB0byBjb250ZW5kIHdpdGguCiAJICovCi0JaWYgKHBsYW5zdGF0ZS0+aW5zdHJ1 bWVudCkKKwlpZiAocGxhbnN0YXRlLT5pbnN0cnVtZW50ICYmICFlcy0+c2lnbmFsZWQpCiAJCUlu c3RyRW5kTG9vcChwbGFuc3RhdGUtPmluc3RydW1lbnQpOwogCiAJaWYgKGVzLT5hbmFseXplICYm CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZCBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkCmluZGV4IGRkNGNkZTQxZDMyLi40YTY0YjhlOWQwOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKQEAgLTIwLDYgKzIwLDcgQEAgYmFja2VuZF9zb3Vy Y2VzICs9IGZpbGVzKAogICAnZGVmaW5lLmMnLAogICAnZGlzY2FyZC5jJywKICAgJ2Ryb3BjbWRz LmMnLAorICAnZHluYW1pY19leHBsYWluLmMnLAogICAnZXZlbnRfdHJpZ2dlci5jJywKICAgJ2V4 cGxhaW4uYycsCiAgICdleHBsYWluX2RyLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXgg ODMxYzU1Y2U3ODcuLmRmNWI1NWFlNjRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTQz LDYgKzQzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cv bmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJj b21tYW5kcy9keW5hbWljX2V4cGxhaW4uaCIKICNpbmNsdWRlICJjb21tYW5kcy9tYXR2aWV3Lmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1 dG9yLmgiCkBAIC0zMTIsNiArMzEzLDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsCiAJRGVzdFJlY2VpdmVyICpkZXN0OwogCWJvb2wJCXNlbmRUdXBsZXM7CiAJ TWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCVF1ZXJ5RGVzYyAgKm9sZFF1ZXJ5RGVzYzsKIAog CS8qIHNhbml0eSBjaGVja3MgKi8KIAlBc3NlcnQocXVlcnlEZXNjICE9IE5VTEwpOwpAQCAtMzI0 LDYgKzMyNiwxMyBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywK IAkvKiBjYWxsZXIgbXVzdCBlbnN1cmUgdGhlIHF1ZXJ5J3Mgc25hcHNob3QgaXMgYWN0aXZlICov CiAJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gZXN0YXRlLT5lc19zbmFwc2hvdCk7CiAK KwkvKgorCSAqIFNhdmUgY3VycmVudCBRdWVyeURlc2MgaGVyZSB0byBlbmFibGUgcmV0cmlldmFs IG9mIHRoZSBjdXJyZW50bHkKKwkgKiBydW5uaW5nIHF1ZXJ5RGVzYyBmb3IgbmVzdGVkIHF1ZXJp ZXMuCisJICovCisJb2xkUXVlcnlEZXNjID0gR2V0Q3VycmVudFF1ZXJ5RGVzYygpOworCVNldEN1 cnJlbnRRdWVyeURlc2MocXVlcnlEZXNjKTsKKwogCS8qCiAJICogU3dpdGNoIGludG8gcGVyLXF1 ZXJ5IG1lbW9yeSBjb250ZXh0CiAJICovCkBAIC0zODYsNiArMzk1LDE0IEBAIHN0YW5kYXJkX0V4 ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCQlJbnN0clN0b3BOb2RlKHF1ZXJ5RGVz Yy0+dG90YWx0aW1lLCBlc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CiAKIAlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CisJU2V0Q3VycmVudFF1ZXJ5RGVzYyhvbGRRdWVyeURlc2MpOwor CisJLyoKKwkgKiBFbnN1cmUgTG9nUXVlcnlQbGFuUGVuZGluZyBpcyBpbml0aWFsaXplZCBpbiBj YXNlIHRoZXJlIHdhcyBubyB0aW1lIGZvcgorCSAqIGxvZ2dpbmcgdGhlIHBsYW4uIE90aGV3aXNl IHBsYW4gd2lsbCBiZSBsb2dnZWQgYXQgdGhlIG5leHQgcXVlcnkKKwkgKiBleGVjdXRpb24gb24g dGhlIHNhbWUgc2Vzc2lvbi4KKwkgKi8KKwlMb2dRdWVyeVBsYW5QZW5kaW5nID0gZmFsc2U7CiB9 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9j bm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggZjVmOWNm YmVlYWQuLmJmMWUyNmI3YWYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAt NzIsNiArNzIsNyBAQAogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImNv bW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUFnZy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVB cHBlbmQuaCIKQEAgLTQzMSw5ICs0MzIsMTAgQEAgRXhlY1NldEV4ZWNQcm9jTm9kZShQbGFuU3Rh dGUgKm5vZGUsIEV4ZWNQcm9jTm9kZU10ZCBmdW5jdGlvbikKIHsKIAkvKgogCSAqIEFkZCBhIHdy YXBwZXIgYXJvdW5kIHRoZSBFeGVjUHJvY05vZGUgY2FsbGJhY2sgdGhhdCBjaGVja3Mgc3RhY2sg ZGVwdGgKLQkgKiBkdXJpbmcgdGhlIGZpcnN0IGV4ZWN1dGlvbiBhbmQgbWF5YmUgYWRkcyBhbiBp bnN0cnVtZW50YXRpb24gd3JhcHBlci4KLQkgKiBXaGVuIHRoZSBjYWxsYmFjayBpcyBjaGFuZ2Vk IGFmdGVyIGV4ZWN1dGlvbiBoYXMgYWxyZWFkeSBiZWd1biB0aGF0Ci0JICogbWVhbnMgd2UnbGwg c3VwZXJmbHVvdXNseSBleGVjdXRlIEV4ZWNQcm9jTm9kZUZpcnN0LCBidXQgdGhhdCBzZWVtcyBv ay4KKwkgKiBhbmQgcXVlcnkgbG9nZ2luZyByZXF1ZXN0IGR1cmluZyB0aGUgZXhlY3V0aW9uIGFu ZCBtYXliZSBhZGRzIGFuCisJICogaW5zdHJ1bWVudGF0aW9uIHdyYXBwZXIuIFdoZW4gdGhlIGNh bGxiYWNrIGlzIGNoYW5nZWQgYWZ0ZXIgZXhlY3V0aW9uCisJICogaGFzIGFscmVhZHkgYmVndW4g dGhhdCBtZWFucyB3ZSdsbCBzdXBlcmZsdW91c2x5IGV4ZWN1dGUKKwkgKiBFeGVjUHJvY05vZGVG aXJzdCwgYnV0IHRoYXQgc2VlbXMgb2suCiAJICovCiAJbm9kZS0+RXhlY1Byb2NOb2RlUmVhbCA9 IGZ1bmN0aW9uOwogCW5vZGUtPkV4ZWNQcm9jTm9kZSA9IEV4ZWNQcm9jTm9kZUZpcnN0OwpAQCAt NDQxLDI3ICs0NDMsNDMgQEAgRXhlY1NldEV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUsIEV4 ZWNQcm9jTm9kZU10ZCBmdW5jdGlvbikKIAogCiAvKgotICogRXhlY1Byb2NOb2RlIHdyYXBwZXIg dGhhdCBwZXJmb3JtcyBzb21lIG9uZS10aW1lIGNoZWNrcywgYmVmb3JlIGNhbGxpbmcKKyAqIEV4 ZWNQcm9jTm9kZSB3cmFwcGVyIHRoYXQgcGVyZm9ybXMgc29tZSBleHRyYSBjaGVja3MsIGJlZm9y ZSBjYWxsaW5nCiAgKiB0aGUgcmVsZXZhbnQgbm9kZSBtZXRob2QgKHBvc3NpYmx5IHZpYSBhbiBp bnN0cnVtZW50YXRpb24gd3JhcHBlcikuCisgKgorICogTm9ybWFsbHksIHRoaXMgaXMganVzdCBp bnZva2VkIG9uY2UgZm9yIHRoZSBmaXJzdCBjYWxsIHRvIGFueSBnaXZlbiBub2RlLAorICogYW5k IHRoZXJlYWZ0ZXIgd2UgYXJyYW5nZSB0byBjYWxsIEV4ZWNQcm9jTm9kZUluc3RyIG9yIHRoZSBy ZWxldmFudCBub2RlCisgKiBtZXRob2QgZGlyZWN0bHkuIEhvd2V2ZXIsIGl0J3MgbGVnYWwgdG8g cmVzZXQgbm9kZS0+RXhlY1Byb2NOb2RlIGJhY2sgdG8KKyAqIHRoaXMgZnVuY3Rpb24gYXQgYW55 IHRpbWUsIGFuZCB3ZSBkbyB0aGF0IHdoZW5ldmVyIHRoZSBxdWVyeSBwbGFuIG1pZ2h0CisgKiBu ZWVkIHRvIGJlIHByaW50ZWQsIHNvIHRoYXQgd2Ugb25seSBpbmN1ciB0aGUgY29zdCBvZiBjaGVj a2luZyBmb3IgdGhhdAorICogY2FzZSB3aGVuIHJlcXVpcmVkLgogICovCiBzdGF0aWMgVHVwbGVU YWJsZVNsb3QgKgogRXhlY1Byb2NOb2RlRmlyc3QoUGxhblN0YXRlICpub2RlKQogewogCS8qCi0J ICogUGVyZm9ybSBzdGFjayBkZXB0aCBjaGVjayBkdXJpbmcgdGhlIGZpcnN0IGV4ZWN1dGlvbiBv ZiB0aGUgbm9kZS4gIFdlCi0JICogb25seSBkbyBzbyB0aGUgZmlyc3QgdGltZSByb3VuZCBiZWNh dXNlIGl0IHR1cm5zIG91dCB0byBub3QgYmUgY2hlYXAgb24KLQkgKiBzb21lIGNvbW1vbiBhcmNo aXRlY3R1cmVzIChlZy4geDg2KS4gIFRoaXMgcmVsaWVzIG9uIHRoZSBhc3N1bXB0aW9uCi0JICog dGhhdCBFeGVjUHJvY05vZGUgY2FsbHMgZm9yIGEgZ2l2ZW4gcGxhbiBub2RlIHdpbGwgYWx3YXlz IGJlIG1hZGUgYXQKLQkgKiByb3VnaGx5IHRoZSBzYW1lIHN0YWNrIGRlcHRoLgorCSAqIFBlcmZv cm0gYSBzdGFjayBkZXB0aCBjaGVjay4gIFdlIGRvbid0IHdhbnQgdG8gZG8gdGhpcyBhbGwgdGhl IHRpbWUKKwkgKiBiZWNhdXNlIGl0IHR1cm5zIG91dCB0byBub3QgYmUgY2hlYXAgb24gc29tZSBj b21tb24gYXJjaGl0ZWN0dXJlcyAoZWcuCisJICogeDg2KS4gIFRoaXMgcmVsaWVzIG9uIHRoZSBh c3N1bXB0aW9uIHRoYXQgRXhlY1Byb2NOb2RlIGNhbGxzIGZvciBhCisJICogZ2l2ZW4gcGxhbiBu b2RlIHdpbGwgYWx3YXlzIGJlIG1hZGUgYXQgcm91Z2hseSB0aGUgc2FtZSBzdGFjayBkZXB0aC4K IAkgKi8KIAljaGVja19zdGFja19kZXB0aCgpOwogCisJLyoKKwkgKiBJZiB3ZSBoYXZlIGJlZW4g YXNrZWQgdG8gcHJpbnQgdGhlIHF1ZXJ5IHBsYW4sIGRvIHRoYXQgbm93LiBXZSBkYXJlIG5vdAor CSAqIHRyeSB0byBkbyB0aGlzIGRpcmVjdGx5IGZyb20gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBi ZWNhdXNlIHdlIGRvbid0CisJICogcmVhbGx5IGtub3cgd2hhdCB0aGUgZXhlY3V0b3Igc3RhdGUg aXMgYXQgdGhhdCBwb2ludCwgYnV0IHdlIGFzc3VtZQorCSAqIHRoYXQgd2hlbiBlbnRlcmluZyBh IG5vZGUgdGhlIHN0YXRlIHdpbGwgYmUgc3VmZmljaWVudGx5IGNvbnNpc3RlbnQKKwkgKiB0aGF0 IHRyeWluZyB0byBwcmludCB0aGUgcGxhbiBtYWtlcyBzZW5zZS4KKwkgKi8KKwlpZiAoTG9nUXVl cnlQbGFuUGVuZGluZykKKwkJTG9nUXVlcnlQbGFuKCk7CisKIAkvKgogCSAqIElmIGluc3RydW1l bnRhdGlvbiBpcyByZXF1aXJlZCwgY2hhbmdlIHRoZSB3cmFwcGVyIHRvIG9uZSB0aGF0IGp1c3QK IAkgKiBkb2VzIGluc3RydW1lbnRhdGlvbi4gIE90aGVyd2lzZSB3ZSBjYW4gZGlzcGVuc2Ugd2l0 aCBhbGwgd3JhcHBlcnMgYW5kCiAJICogaGF2ZSBFeGVjUHJvY05vZGUoKSBkaXJlY3RseSBjYWxs IHRoZSByZWxldmFudCBmdW5jdGlvbiBmcm9tIG5vdyBvbi4KIAkgKi8KLQlpZiAobm9kZS0+aW5z dHJ1bWVudCkKKwllbHNlIGlmIChub2RlLT5pbnN0cnVtZW50KQogCQlub2RlLT5FeGVjUHJvY05v ZGUgPSBFeGVjUHJvY05vZGVJbnN0cjsKIAllbHNlCiAJCW5vZGUtPkV4ZWNQcm9jTm9kZSA9IG5v ZGUtPkV4ZWNQcm9jTm9kZVJlYWw7CkBAIC01NDYsNiArNTY0LDkxIEBAIE11bHRpRXhlY1Byb2NO b2RlKFBsYW5TdGF0ZSAqbm9kZSkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogV3JhcCBh cnJheSBvZiBQbGFuU3RhdGUgRXhlY1Byb2NOb2RlIHdpdGggRXhlY1Byb2NOb2RlRmlyc3QuCisg Ki8KK3N0YXRpYyB2b2lkCitFeGVjU2V0RXhlY1Byb2NOb2RlQXJyYXkoUGxhblN0YXRlICoqcGxh bnN0YXRlcywgaW50IG5wbGFucykKK3sKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IG5w bGFuczsgaSsrKQorCQlFeGVjU2V0RXhlY1Byb2NOb2RlUmVjdXJzZShwbGFuc3RhdGVzW2ldKTsK K30KKworLyoKKyAqIFdyYXAgQ3VzdG9tU2NhblN0YXRlIGNoaWxkcmVuJ3MgRXhlY1Byb2NOb2Rl IHdpdGggRXhlY1Byb2NOb2RlRmlyc3QuCisgKi8KK3N0YXRpYyB2b2lkCitDU1NDaGlsZEV4ZWNT ZXRFeGVjUHJvY05vZGVBcnJheShDdXN0b21TY2FuU3RhdGUgKmNzcykKK3sKKwlMaXN0Q2VsbCAg ICpjZWxsOworCisJZm9yZWFjaChjZWxsLCBjc3MtPmN1c3RvbV9wcykKKwkJRXhlY1NldEV4ZWNQ cm9jTm9kZVJlY3Vyc2UoKFBsYW5TdGF0ZSAqKSBsZmlyc3QoY2VsbCkpOworfQorCisvKgorICog UmVjdXJzaXZlbHkgd3JhcCBhbGwgdGhlIHVuZGVybHlpbmcgRXhlY1Byb2NOb2RlIHdpdGggRXhl Y1Byb2NOb2RlRmlyc3QuCisgKgorICogUmVjdXJzaW9uIGlzIHVzdWFsbHkgbmVjZXNzYXJ5IGJl Y2F1c2UgdGhlIG5leHQgRXhlY1Byb2NOb2RlKCkgY2FsbCBtYXkgYmUKKyAqIGludm9rZWQgbm90 IG9ubHkgdGhyb3VnaCB0aGUgY3VycmVudCBub2RlLCBidXQgYWxzbyB2aWEgbGVmdHRyZWUsIHJp Z2h0dHJlZSwKKyAqIHN1YlBsYW4sIG9yIG90aGVyIHNwZWNpYWwgY2hpbGQgcGxhbnMuCisgKi8K K3ZvaWQKK0V4ZWNTZXRFeGVjUHJvY05vZGVSZWN1cnNlKFBsYW5TdGF0ZSAqcHMpCit7CisJRXhl Y1NldEV4ZWNQcm9jTm9kZShwcywgcHMtPkV4ZWNQcm9jTm9kZVJlYWwpOworCisJaWYgKHBzLT5s ZWZ0dHJlZSAhPSBOVUxMKQorCQlFeGVjU2V0RXhlY1Byb2NOb2RlUmVjdXJzZShwcy0+bGVmdHRy ZWUpOworCWlmIChwcy0+cmlnaHR0cmVlICE9IE5VTEwpCisJCUV4ZWNTZXRFeGVjUHJvY05vZGVS ZWN1cnNlKHBzLT5yaWdodHRyZWUpOworCWlmIChwcy0+c3ViUGxhbiAhPSBOVUxMKQorCXsKKwkJ TGlzdENlbGwgICAqbDsKKworCQlmb3JlYWNoKGwsIHBzLT5zdWJQbGFuKQorCQl7CisJCQlTdWJQ bGFuU3RhdGUgKnNzdGF0ZSA9IChTdWJQbGFuU3RhdGUgKikgbGZpcnN0KGwpOworCisJCQlFeGVj U2V0RXhlY1Byb2NOb2RlUmVjdXJzZShzc3RhdGUtPnBsYW5zdGF0ZSk7CisJCX0KKwl9CisKKwkv KiBzcGVjaWFsIGNoaWxkIHBsYW5zICovCisJc3dpdGNoIChub2RlVGFnKHBzLT5wbGFuKSkKKwl7 CisJCWNhc2UgVF9BcHBlbmQ6CisJCQlFeGVjU2V0RXhlY1Byb2NOb2RlQXJyYXkoKChBcHBlbmRT dGF0ZSAqKSBwcyktPmFwcGVuZHBsYW5zLAorCQkJCQkJCQkJICgoQXBwZW5kU3RhdGUgKikgcHMp LT5hc19ucGxhbnMpOworCQkJYnJlYWs7CisJCWNhc2UgVF9NZXJnZUFwcGVuZDoKKwkJCUV4ZWNT ZXRFeGVjUHJvY05vZGVBcnJheSgoKE1lcmdlQXBwZW5kU3RhdGUgKikgcHMpLT5tZXJnZXBsYW5z LAorCQkJCQkJCQkJICgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBwcyktPm1zX25wbGFucyk7CisJCQli cmVhazsKKwkJY2FzZSBUX0JpdG1hcEFuZDoKKwkJCUV4ZWNTZXRFeGVjUHJvY05vZGVBcnJheSgo KEJpdG1hcEFuZFN0YXRlICopIHBzKS0+Yml0bWFwcGxhbnMsCisJCQkJCQkJCQkgKChCaXRtYXBB bmRTdGF0ZSAqKSBwcyktPm5wbGFucyk7CisJCQlicmVhazsKKwkJY2FzZSBUX0JpdG1hcE9yOgor CQkJRXhlY1NldEV4ZWNQcm9jTm9kZUFycmF5KCgoQml0bWFwT3JTdGF0ZSAqKSBwcyktPmJpdG1h cHBsYW5zLAorCQkJCQkJCQkJICgoQml0bWFwT3JTdGF0ZSAqKSBwcyktPm5wbGFucyk7CisJCQli cmVhazsKKwkJY2FzZSBUX1N1YnF1ZXJ5U2NhbjoKKwkJCUV4ZWNTZXRFeGVjUHJvY05vZGVSZWN1 cnNlKCgoU3VicXVlcnlTY2FuU3RhdGUgKikgcHMpLT5zdWJwbGFuKTsKKwkJCWJyZWFrOworCQlj YXNlIFRfQ3RlU2NhbjoKKwkJCUV4ZWNTZXRFeGVjUHJvY05vZGVSZWN1cnNlKCgoQ3RlU2NhblN0 YXRlICopIHBzKS0+Y3RlcGxhbnN0YXRlKTsKKwkJCWJyZWFrOworCQljYXNlIFRfQ3VzdG9tU2Nh bjoKKwkJCUNTU0NoaWxkRXhlY1NldEV4ZWNQcm9jTm9kZUFycmF5KChDdXN0b21TY2FuU3RhdGUg KikgcHMpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwl9Cit9CisKIAogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCUV4ZWNFbmROb2RlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMK aW5kZXggMDg3ODIxMzExY2MuLjA3ZmNhYzdmMGJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y3NpZ25hbC5jCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwu aCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2R5bmFt aWNfZXhwbGFpbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5o IgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKQEAgLTY5MSw2ICs2OTIsOSBAQCBwcm9j c2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFs KFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dElu dGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0xPR19RVUVSWV9QTEFO KSkKKwkJSGFuZGxlTG9nUXVlcnlQbGFuSW50ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2ln bmFsKFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCiAJCUhhbmRsZVBhcmFsbGVsQXBw bHlNZXNzYWdlSW50ZXJydXB0KCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCBkMzU2ODMwZjc1Ni4u YzVhNWNkNDdjOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysg Yi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9keW5hbWlj X2V4cGxhaW4uaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVkZSAiY29t bW9uL3BnX3BybmcuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCkBAIC0zNTM4LDYgKzM1MzksOSBA QCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykK IAkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKIAorCWlmIChMb2dRdWVyeVBs YW5QZW5kaW5nKQorCQlQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0KCk7CisKIAlpZiAoUGFy YWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQogCQlQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2Vz KCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IGQzMWNiNDVhMDU4Li45MjdjY2Rh MDMwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAgLTQwLDYgKzQwLDggQEAgdm9sYXRp bGUgc2lnX2F0b21pY190IElkbGVTZXNzaW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0 aWxlIHNpZ19hdG9taWNfdCBQcm9jU2lnbmFsQmFycmllclBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0 aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOwogdm9sYXRp bGUgc2lnX2F0b21pY190IElkbGVTdGF0c1VwZGF0ZVRpbWVvdXRQZW5kaW5nID0gZmFsc2U7Cit2 b2xhdGlsZSBzaWdfYXRvbWljX3QgTG9nUXVlcnlQbGFuUGVuZGluZyA9IGZhbHNlOworCiB2b2xh dGlsZSB1aW50MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBR dWVyeUNhbmNlbEhvbGRvZmZDb3VudCA9IDA7CiB2b2xhdGlsZSB1aW50MzIgQ3JpdFNlY3Rpb25D b3VudCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGFjdC5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3hhY3QuaAppbmRleCA0NTI4ZTUxODI5ZS4uM2M2ZTNiN2YyY2UgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3hhY3QuaApAQCAtNDMyLDYgKzQzMiw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX3hhY3RfcGFyc2Vk X2Fib3J0CiAJVGltZXN0YW1wVHogb3JpZ2luX3RpbWVzdGFtcDsKIH0geGxfeGFjdF9wYXJzZWRf YWJvcnQ7CiAKK3R5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYyBRdWVyeURlc2M7CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0KICAqCQlleHRlcm4gZGVmaW5pdGlvbnMKQEAgLTQ1OCw2ICs0NTksOCBAQCBl eHRlcm4gVGltZXN0YW1wVHogR2V0Q3VycmVudFN0YXRlbWVudFN0YXJ0VGltZXN0YW1wKHZvaWQp OwogZXh0ZXJuIFRpbWVzdGFtcFR6IEdldEN1cnJlbnRUcmFuc2FjdGlvblN0b3BUaW1lc3RhbXAo dm9pZCk7CiBleHRlcm4gdm9pZCBTZXRDdXJyZW50U3RhdGVtZW50U3RhcnRUaW1lc3RhbXAodm9p ZCk7CiBleHRlcm4gaW50CUdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCh2b2lkKTsKK1F1 ZXJ5RGVzYyAgKkdldEN1cnJlbnRRdWVyeURlc2Modm9pZCk7Cit2b2lkCQlTZXRDdXJyZW50UXVl cnlEZXNjKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKIGV4dGVybiBib29sIFRyYW5zYWN0aW9uSWRJ c0N1cnJlbnRUcmFuc2FjdGlvbklkKFRyYW5zYWN0aW9uSWQgeGlkKTsKIGV4dGVybiB2b2lkIENv bW1hbmRDb3VudGVySW5jcmVtZW50KHZvaWQpOwogZXh0ZXJuIHZvaWQgRm9yY2VTeW5jQ29tbWl0 KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggMDFlYmEzYjVhMTkuLjZjYmZhMGFm OTFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTg2MDksNiArODYwOSwxMiBAQAogICBw cm9yZXR0eXBlID0+ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ2ludDQnLAogICBwcm9zcmMgPT4g J3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cycgfSwKIAorIyBsb2dnaW5nIHBsYW4gb2Yg dGhlIHJ1bm5pbmcgcXVlcnkgb24gdGhlIHNwZWNpZmllZCBiYWNrZW5kCit7IG9pZCA9PiAnODAw MCcsIGRlc2NyID0+ICdsb2cgcGxhbiBvZiB0aGUgcnVubmluZyBxdWVyeSBvbiB0aGUgc3BlY2lm aWVkIGJhY2tlbmQnLAorICBwcm9uYW1lID0+ICdwZ19sb2dfcXVlcnlfcGxhbicsCisgIHByb3Zv bGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5cGVzID0+ICdp bnQ0JywgcHJvc3JjID0+ICdwZ19sb2dfcXVlcnlfcGxhbicgfSwKKwogIyBub24tcGVyc2lzdGVu dCBzZXJpZXMgZ2VuZXJhdG9yCiB7IG9pZCA9PiAnMTA2NicsIGRlc2NyID0+ICdub24tcGVyc2lz dGVudCBzZXJpZXMgZ2VuZXJhdG9yJywKICAgcHJvbmFtZSA9PiAnZ2VuZXJhdGVfc2VyaWVzJywg cHJvcm93cyA9PiAnMTAwMCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9keW5h bWljX2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44M2E5ZTI3ZGVlZgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5oCkBAIC0w LDAgKzEsMjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGR5bmFtaWNfZXhwbGFpbi5o CisgKgkgIHByb3RvdHlwZXMgZm9yIGR5bmFtaWNfZXhwbGFpbi5jCisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk2LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQtNSwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvY29tbWFuZHMvZHluYW1p Y19leHBsYWluLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBEWU5BTUlD X0VYUExBSU5fSAorI2RlZmluZSBEWU5BTUlDX0VYUExBSU5fSAorCisjaW5jbHVkZSAiZXhlY3V0 b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluX3N0YXRlLmgiCisKK2V4 dGVybiB2b2lkIEhhbmRsZUxvZ1F1ZXJ5UGxhbkludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lk IFByb2Nlc3NMb2dRdWVyeVBsYW5JbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gVHVwbGVUYWJsZVNs b3QgKkV4ZWNQcm9jTm9kZVdpdGhFeHBsYWluKFBsYW5TdGF0ZSAqcHMpOworZXh0ZXJuIHZvaWQg TG9nUXVlcnlQbGFuKHZvaWQpOworZXh0ZXJuIERhdHVtIHBnX2xvZ19xdWVyeV9wbGFuKFBHX0ZV TkNUSU9OX0FSR1MpOworCisjZW5kaWYJCQkJCQkJLyogRFlOQU1JQ19FWFBMQUlOX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2V4cGxhaW4uaAppbmRleCA2ZTUxZDUwZWZjNy4uMGRjMTYwZmE3YjQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9leHBsYWluLmgKQEAgLTcwLDggKzcwLDEwIEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVQ bGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCSAg IGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKIAkJCQkJCSAgIGNvbnN0IE1lbW9yeUNvbnRl eHRDb3VudGVycyAqbWVtX2NvdW50ZXJzKTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpblByaW50UGxh bihFeHBsYWluU3RhdGUgKmVzLCBRdWVyeURlc2MgKnF1ZXJ5RGVzYyk7Ci1leHRlcm4gdm9pZCBF eHBsYWluUHJpbnRUcmlnZ2VycyhFeHBsYWluU3RhdGUgKmVzLAorZXh0ZXJuIHZvaWQgRXhwbGFp blByaW50UGxhbihzdHJ1Y3QgRXhwbGFpblN0YXRlICplcywgUXVlcnlEZXNjICpxdWVyeURlc2Mp OworZXh0ZXJuIHZvaWQgRXhwbGFpblByaW50VHJpZ2dlcnMoc3RydWN0IEV4cGxhaW5TdGF0ZSAq ZXMsIFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKK2V4dGVybiB2b2lkIEV4cGxhaW5QcmludFBsYW4o c3RydWN0IEV4cGxhaW5TdGF0ZSAqZXMsIFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKK2V4dGVybiB2 b2lkIEV4cGxhaW5QcmludFRyaWdnZXJzKHN0cnVjdCBFeHBsYWluU3RhdGUgKmVzLAogCQkJCQkJ CQkgUXVlcnlEZXNjICpxdWVyeURlc2MpOwogCiBleHRlcm4gdm9pZCBFeHBsYWluUHJpbnRKSVRT dW1tYXJ5KEV4cGxhaW5TdGF0ZSAqZXMsCkBAIC04MCw1ICs4Miw4IEBAIGV4dGVybiB2b2lkIEV4 cGxhaW5QcmludEpJVFN1bW1hcnkoRXhwbGFpblN0YXRlICplcywKIGV4dGVybiB2b2lkIEV4cGxh aW5RdWVyeVRleHQoRXhwbGFpblN0YXRlICplcywgUXVlcnlEZXNjICpxdWVyeURlc2MpOwogZXh0 ZXJuIHZvaWQgRXhwbGFpblF1ZXJ5UGFyYW1ldGVycyhFeHBsYWluU3RhdGUgKmVzLAogCQkJCQkJ CQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgaW50IG1heGxlbik7CitleHRlcm4gdm9pZCBFeHBs YWluU3RyaW5nQXNzZW1ibGUoc3RydWN0IEV4cGxhaW5TdGF0ZSAqZXMsIFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLAorCQkJCQkJCQkgIGludCBsb2dGb3JtYXQsIGJvb2wgbG9nVHJpZ2dlcnMsCisJCQkJ CQkJCSAgaW50IGxvZ1BhcmFtZXRlck1heExlbmd0aCk7CiAKICNlbmRpZgkJCQkJCQkvKiBFWFBM QUlOX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUu aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuaAppbmRleCBiYTA3M2I4Njkx OC4uYmY0MGZkYWJmZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5f c3RhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX3N0YXRlLmgKQEAgLTcx LDYgKzcxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwbGFpblN0YXRlCiAJCQkJCQkJCSAqIGVudHJ5 ICovCiAJLyogc3RhdGUgcmVsYXRlZCB0byB0aGUgY3VycmVudCBwbGFuIG5vZGUgKi8KIAlFeHBs YWluV29ya2Vyc1N0YXRlICp3b3JrZXJzX3N0YXRlOyAvKiBuZWVkZWQgaWYgcGFyYWxsZWwgcGxh biAqLworCWJvb2wJCXNpZ25hbGVkOwkJLyogd2hldGhlciBleHBsYWluIGlzIGNhbGxlZCBieSBz aWduYWwgKi8KIAkvKiBleHRlbnNpb25zICovCiAJdm9pZAkgICoqZXh0ZW5zaW9uX3N0YXRlOwog CWludAkJCWV4dGVuc2lvbl9zdGF0ZV9hbGxvY2F0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApp bmRleCAzMjQ4ZTc4Y2QyOC4uYzY2ZGYxMWU3MWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApA QCAtMjk1LDYgKzI5NSw3IEBAIGV4dGVybiB2b2lkIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0ZSAq ZXBxc3RhdGUpOwogZXh0ZXJuIFBsYW5TdGF0ZSAqRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRFeGVjUHJvY05v ZGUoUGxhblN0YXRlICpub2RlLCBFeGVjUHJvY05vZGVNdGQgZnVuY3Rpb24pOwogZXh0ZXJuIE5v ZGUgKk11bHRpRXhlY1Byb2NOb2RlKFBsYW5TdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVj U2V0RXhlY1Byb2NOb2RlUmVjdXJzZShQbGFuU3RhdGUgKnBzKTsKIGV4dGVybiB2b2lkIEV4ZWNF bmROb2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2h1dGRvd25Ob2RlKFBs YW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2V0VHVwbGVCb3VuZChpbnQ2NCB0dXBs ZXNfbmVlZGVkLCBQbGFuU3RhdGUgKmNoaWxkX25vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCAxYmVmOTg0NzFj My4uMjJiOTQ1ZTkxOGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBi L3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC05Niw2ICs5Niw3IEBAIGV4dGVybiBQR0RMTElN UE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4 dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQ ZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1v cnlDb250ZXh0UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgSWRsZVN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmc7CitleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgc2lnX2F0b21pY190IExvZ1F1ZXJ5UGxhblBlbmRpbmc7CiAKIGV4dGVybiBQR0RMTElN UE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsK IGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlv bkxvc3Q7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IGFmZWViMWNhMDE5Li5lYTI2MjQy Yzg2OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1LDggQEAgdHlwZWRl ZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMg dG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2Jh bCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyog YXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX0xPR19R VUVSWV9QTEFOLAkJLyogYXNrIGJhY2tlbmQgdG8gbG9nIHBsYW4gb2YgdGhlIGN1cnJlbnQKKwkJ CQkJCQkJICogcXVlcnkgKi8KIAlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1l c3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCiAKIAkvKiBSZWNvdmVyeSBjb25m bGljdCByZWFzb25zICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21p c2NfZnVuY3Rpb25zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlv bnMub3V0CmluZGV4IDM2MTY0YTk5YzgzLi41M2ZlZjNmOWVlMyAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQKQEAgLTM2Niw2ICszNjYsNDggQEAgUkVW T0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGlu dGVnZXIpCiAgIEZST00gcmVncmVzc19sb2dfbWVtb3J5OwogRFJPUCBST0xFIHJlZ3Jlc3NfbG9n X21lbW9yeTsKIC0tCistLSBwZ19sb2dfcXVlcnlfcGxhbigpCistLQorLS0gUGxhbnMgYXJlIGxv Z2dlZCBhbmQgdGhleSBhcmUgbm90IHJldHVybmVkIHRvIHRoZSBmdW5jdGlvbi4KKy0tIEZ1cnRo ZXJtb3JlLCB0aGVpciBjb250ZW50cyBjYW4gdmFyeSBkZXBlbmRpbmcgb24gdGhlIG9wdGltaXpl ci4gSG93ZXZlciwKKy0tIHdlIGNhbiBhdCBsZWFzdCB2ZXJpZnkgdGhhdCB0aGUgY29kZSBkb2Vz bid0IGZhaWwsIGFuZCB0aGF0IHRoZQorLS0gcGVybWlzc2lvbnMgYXJlIHNldCBwcm9wZXJseS4K K1dJVEggdCBBUyBNQVRFUklBTElaRUQgKFNFTEVDVCBwZ19sb2dfcXVlcnlfcGxhbihwZ19iYWNr ZW5kX3BpZCgpKSkKKyAgICBTRUxFQ1QgKiBGUk9NIHQ7CisgcGdfbG9nX3F1ZXJ5X3BsYW4gCist LS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitDUkVBVEUgUk9MRSByZWdyZXNzX2xv Z19wbGFuOworU0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nX3BsYW4n LAorICAncGdfbG9nX3F1ZXJ5X3BsYW4oaW50ZWdlciknLCAnRVhFQ1VURScpOyAtLSBubworIGhh c19mdW5jdGlvbl9wcml2aWxlZ2UgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSBy b3cpCisKK0dSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX3F1ZXJ5X3BsYW4oaW50ZWdl cikKKyAgVE8gcmVncmVzc19sb2dfcGxhbjsKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdl KCdyZWdyZXNzX2xvZ19wbGFuJywKKyAgJ3BnX2xvZ19xdWVyeV9wbGFuKGludGVnZXIpJywgJ0VY RUNVVEUnKTsgLS0geWVzCisgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VUIFJPTEUgcmVncmVzc19sb2dfcGxhbjsKK1NF TEVDVCBwZ19sb2dfcXVlcnlfcGxhbihwZ19iYWNrZW5kX3BpZCgpKTsKKyBwZ19sb2dfcXVlcnlf cGxhbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1JFU0VUIFJPTEU7CitS RVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKQorICBG Uk9NIHJlZ3Jlc3NfbG9nX3BsYW47CitEUk9QIFJPTEUgcmVncmVzc19sb2dfcGxhbjsKKy0tCiAt LSBUZXN0IHNvbWUgYnVpbHQtaW4gU1JGcwogLS0KIC0tIFRoZSBvdXRwdXRzIG9mIHRoZXNlIGFy ZSB2YXJpYWJsZSwgc28gd2UgY2FuJ3QganVzdCBwcmludCB0aGVpciByZXN1bHRzCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwKaW5kZXggMjM3OTJjNDEzMmEuLjY5M2I1NGI4 MzE2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsCkBAIC0xNDMsNiAr MTQzLDM3IEBAIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19iYWNrZW5kX21lbW9y eV9jb250ZXh0cyhpbnRlZ2VyKQogCiBEUk9QIFJPTEUgcmVncmVzc19sb2dfbWVtb3J5OwogCist LQorLS0gcGdfbG9nX3F1ZXJ5X3BsYW4oKQorLS0KKy0tIFBsYW5zIGFyZSBsb2dnZWQgYW5kIHRo ZXkgYXJlIG5vdCByZXR1cm5lZCB0byB0aGUgZnVuY3Rpb24uCistLSBGdXJ0aGVybW9yZSwgdGhl aXIgY29udGVudHMgY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBvcHRpbWl6ZXIuIEhvd2V2ZXIs CistLSB3ZSBjYW4gYXQgbGVhc3QgdmVyaWZ5IHRoYXQgdGhlIGNvZGUgZG9lc24ndCBmYWlsLCBh bmQgdGhhdCB0aGUKKy0tIHBlcm1pc3Npb25zIGFyZSBzZXQgcHJvcGVybHkuCisKK1dJVEggdCBB UyBNQVRFUklBTElaRUQgKFNFTEVDVCBwZ19sb2dfcXVlcnlfcGxhbihwZ19iYWNrZW5kX3BpZCgp KSkKKyAgICBTRUxFQ1QgKiBGUk9NIHQ7CisKK0NSRUFURSBST0xFIHJlZ3Jlc3NfbG9nX3BsYW47 CisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZ19wbGFuJywKKyAg J3BnX2xvZ19xdWVyeV9wbGFuKGludGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0gbm8KKworR1JBTlQg RVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKQorICBUTyByZWdy ZXNzX2xvZ19wbGFuOworCitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19s b2dfcGxhbicsCisgICdwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKScsICdFWEVDVVRFJyk7IC0t IHllcworCitTRVQgUk9MRSByZWdyZXNzX2xvZ19wbGFuOworU0VMRUNUIHBnX2xvZ19xdWVyeV9w bGFuKHBnX2JhY2tlbmRfcGlkKCkpOworUkVTRVQgUk9MRTsKKworUkVWT0tFIEVYRUNVVEUgT04g RlVOQ1RJT04gcGdfbG9nX3F1ZXJ5X3BsYW4oaW50ZWdlcikKKyAgRlJPTSByZWdyZXNzX2xvZ19w bGFuOworCitEUk9QIFJPTEUgcmVncmVzc19sb2dfcGxhbjsKKwogLS0KIC0tIFRlc3Qgc29tZSBi dWlsdC1pbiBTUkZzCiAtLQotLSAKMi40OC4xCgo= --=_613e2cd7a206fe3c230ce5a921045672 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=PoC-injection-point-test-for-pg_log_query_plan.txt Content-Disposition: attachment; filename=PoC-injection-point-test-for-pg_log_query_plan.txt; size=3590 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2R5bmFtaWNfZXhwbGFpbi5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZHluYW1pY19leHBsYWluLmMKaW5kZXggYjIxYTUxYWFmZTQuLjQx OTUxOTY2ODM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9keW5hbWljX2V4cGxh aW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9keW5hbWljX2V4cGxhaW4uYwpAQCAtMjIs NiArMjIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKKyNpbmNsdWRl ICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogLyogSXMgcGxhbiBub2RlIHdyYXBwaW5nIGZv ciBxdWVyeSBwbGFuIGxvZ2dpbmcgY3VycmVudGx5IGluIHByb2dyZXNzPyAqLwogc3RhdGljIGJv b2wgV3JhcE5vZGVzSW5Qcm9ncmVzcyA9IGZhbHNlOwpAQCAtODAsNiArODEsOCBAQCBMb2dRdWVy eVBsYW4odm9pZCkKIAogCUV4cGxhaW5TdHJpbmdBc3NlbWJsZShlcywgcXVlcnlEZXNjLCBlcy0+ Zm9ybWF0LCAwLCAtMSk7CiAKKwlJTkpFQ1RJT05fUE9JTlQoImxvZ2dpbmctcXVlcnktcGxhbiIs IE5VTEwpOworCiAJZXJlcG9ydChMT0dfU0VSVkVSX09OTFksCiAJCQllcnJtc2coInF1ZXJ5IGFu ZCBpdHMgcGxhbiBydW5uaW5nIG9uIGJhY2tlbmQgd2l0aCBQSUQgJWQgYXJlOlxuJXMiLAogCQkJ CSAgIE15UHJvY1BpZCwgZXMtPnN0ci0+ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5k ZXggZGY1YjU1YWU2NGQuLmRiNzkyZTk3YzRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAg LTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNsdWRlICJ1dGls cy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgorI2luY2x1ZGUgInV0 aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3BhcnRjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Jscy5oIgpAQCAtMzMz LDYgKzMzNCw4IEBAIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAog CW9sZFF1ZXJ5RGVzYyA9IEdldEN1cnJlbnRRdWVyeURlc2MoKTsKIAlTZXRDdXJyZW50UXVlcnlE ZXNjKHF1ZXJ5RGVzYyk7CiAKKwlJTkpFQ1RJT05fUE9JTlQoInN0YW5kYXJkLWV4ZWN1dG9yLXJ1 biIsIE5VTEwpOworCiAJLyoKIAkgKiBTd2l0Y2ggaW50byBwZXItcXVlcnkgbWVtb3J5IGNvbnRl eHQKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wZ19sb2df cXVlcnlfcGxhbi5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGdfbG9nX3F1ZXJ5 X3BsYW4ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yZDEyNjc4 NWMxOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wZ19s b2dfcXVlcnlfcGxhbi5vdXQKQEAgLTAsMCArMSwzNiBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRo IDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHF1ZXJ5MSBsb2dyZXEyIHdha2V1 cDIgZGV0YWNoMgoraW5qZWN0aW9uX3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHF1ZXJ5MTogU0VM RUNUIENPVU5UKCopIEZST00gZm9vOyA8d2FpdGluZyAuLi4+CitzdGVwIGxvZ3JlcTI6IFNFTEVD VCBwZ19sb2dfcXVlcnlfcGxhbihwaWQpIEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSBiYWNr ZW5kX3R5cGUgPSAnY2xpZW50IGJhY2tlbmQnOworcGdfbG9nX3F1ZXJ5X3BsYW4KKy0tLS0tLS0t LS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgIAordCAgICAgICAgICAgICAgICAKK3QgICAgICAg ICAgICAgICAgCisoMyByb3dzKQorCitzdGVwIHdha2V1cDI6IFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX3dha2V1cCgnc3RhbmRhcmQtZXhlY3V0b3ItcnVuJyk7CitpbmplY3Rpb25fcG9pbnRzX3dh a2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCiso MSByb3cpCisKK3MxOiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgbG9nZ2luZy1xdWVyeS1wbGFuCitzdGVwIHF1ZXJ5MTogPC4uLiBjb21wbGV0ZWQ+Citjb3Vu dAorLS0tLS0KKyAgMTAwCisoMSByb3cpCisKK3N0ZXAgZGV0YWNoMjogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfZGV0YWNoKCdzdGFuZGFyZC1leGVjdXRvci1ydW4nKTsKK2luamVjdGlvbl9wb2lu dHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BnX2xv Z19xdWVyeV9wbGFuLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGdfbG9nX3F1ZXJ5 X3BsYW4uc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTFjMzQ0 ZDlmZGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGdfbG9n X3F1ZXJ5X3BsYW4uc3BlYwpAQCAtMCwwICsxLDI3IEBACisjIHBnX2xvZ19xdWVyeV9wbGFuKCkg dGVzdAorCitzZXR1cAoreworCUNSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKKwlD UkVBVEUgVEFCTEUgZm9vIEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworfQordGVh cmRvd24KK3sKKwlEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworCURST1AgVEFCTEUg Zm9vOworfQorCitzZXNzaW9uIHMxCitzZXR1cAl7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNf c2V0X2xvY2FsKCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdsb2dnaW5nLXF1 ZXJ5LXBsYW4nLCAnbm90aWNlJyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdz dGFuZGFyZC1leGVjdXRvci1ydW4nLCAnd2FpdCcpOworfQorc3RlcCBxdWVyeTEJCXsgU0VMRUNU IENPVU5UKCopIEZST00gZm9vOyB9CisKK3Nlc3Npb24gczIKK3N0ZXAgbG9ncmVxMgl7IFNFTEVD VCBwZ19sb2dfcXVlcnlfcGxhbihwaWQpIEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSBiYWNr ZW5kX3R5cGUgPSAnY2xpZW50IGJhY2tlbmQnOyB9CitzdGVwIHdha2V1cDIJeyBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c193YWtldXAoJ3N0YW5kYXJkLWV4ZWN1dG9yLXJ1bicpOyB9CitzdGVwIGRl dGFjaDIJeyBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3N0YW5kYXJkLWV4ZWN1dG9y LXJ1bicpOyB9CisKK3Blcm11dGF0aW9uIHF1ZXJ5MSBsb2dyZXEyIHdha2V1cDIgZGV0YWNoMgo= --=_613e2cd7a206fe3c230ce5a921045672--