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 1rQ16O-00FrFR-7m for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jan 2024 08:16:49 +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 1rQ16N-00BrmN-9h for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jan 2024 08:16:47 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rQ16M-00Brjg-9S for pgsql-hackers@lists.postgresql.org; Wed, 17 Jan 2024 08:16:46 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rQ16E-001x96-VH for pgsql-hackers@lists.postgresql.org; Wed, 17 Jan 2024 08:16:45 +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 91A67E20E97 for ; Wed, 17 Jan 2024 11:16:35 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1705479395; bh=jE4yzN4InwdIqetgZo3T7d5pbzmqdF5zhNAfos/Tiuo=; h=Date:From:To:Subject:In-Reply-To:References:User-Agent:Message-ID: From; b=ZT65iAtt4F7lQL0xtjGKSjrSYUr2RXXOdMhTUuVwFxxLnpLztgAUKyxzRxvvqZcgL CT6OhLh20KKIMFhXAi1xu6svnrdN14MoTN3yamXvYI1f7zcC1amRyRnx8tUybXxdPM sOAOVpnrATUu2CUBai6LXnG7myuuUJY3CN4IK3aEiMG0Cnnjy2UVhFS26sg+w8m+a4 ERYzEZUPJVLLtz6L1qKMKQj0ci+4KNzszS6K8Zu2gvvo6lT5og3WIpOzgOqmye7d9I ZSQ3GWBuFsvOpYCezHsSLFirh8e9jA4BSZjkENOf+HRKe77U20HuPA29GsmtIjXpKD nJzlRPd7GR+Cw== MIME-Version: 1.0 Date: Wed, 17 Jan 2024 11:16:35 +0300 From: Kartyshov Ivan To: pgsql-hackers@lists.postgresql.org Subject: Re: [HACKERS] make async slave to wait for lsn to be replayed In-Reply-To: <5aeac7335ed3647430527eb40d409190@postgrespro.ru> References: <22f122-655b3e80-3-688b3700@97587957> <5aeac7335ed3647430527eb40d409190@postgrespro.ru> User-Agent: Roundcube Webmail/1.6.5 Message-ID: X-Sender: i.kartyshov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_d47284fbfdc2b601d04ce0e631d5d7aa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_d47284fbfdc2b601d04ce0e631d5d7aa Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Add some fixes and rebase. -- Ivan Kartyshov Postgres Professional: www.postgrespro.com --=_d47284fbfdc2b601d04ce0e631d5d7aa Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_after_within_v4.patch Content-Disposition: attachment; filename=wait_after_within_v4.patch; size=29546 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCA0YTQyOTk5YjE4Li42NTdhMjE3ZTI3IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCkBAIC0xODgsNiArMTg4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSB1cGRhdGUg ICAgICAgICAgICAgU1lTVEVNICJ1cGRhdGUuc2dtbCI+CiA8IUVOVElUWSB2YWN1dW0gICAgICAg ICAgICAgU1lTVEVNICJ2YWN1dW0uc2dtbCI+CiA8IUVOVElUWSB2YWx1ZXMgICAgICAgICAgICAg U1lTVEVNICJ2YWx1ZXMuc2dtbCI+Cis8IUVOVElUWSB3YWl0ICAgICAgICAgICAgICAgU1lTVEVN ICJ3YWl0LnNnbWwiPgogCiA8IS0tIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzIC0tPgogPCFF TlRJVFkgY2x1c3RlcmRiICAgICAgICAgIFNZU1RFTSAiY2x1c3RlcmRiLnNnbWwiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdp bi5zZ21sCmluZGV4IDAxNmIwMjE0ODcuLmEyNzk0NzYzYjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKQEAg LTIxLDEzICsyMSwxNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KLUJFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gXQorQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2V2ZW50PC9yZXBsYWNlYWJsZT4KIAog PHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25f bW9kZTwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAogICAgIElTT0xBVElPTiBM RVZFTCB7IFNFUklBTElaQUJMRSB8IFJFUEVBVEFCTEUgUkVBRCB8IFJFQUQgQ09NTUlUVEVEIHwg UkVBRCBVTkNPTU1JVFRFRCB9CiAgICAgUkVBRCBXUklURSB8IFJFQUQgT05MWQogICAgIFsgTk9U IF0gREVGRVJSQUJMRQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj53YWl0X2V2ZW50PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisgICAgQUZURVIgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl92YWx1ZTwvcmVwbGFjZWFibGU+IFsgV0lU SElOIG51bWJlcl9vZl9taWxsaXNlY29uZHMgXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lz ZGl2PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKaW5kZXggNzRjY2Q3 ZTM0NS4uNDZhM2JjZjFhOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9zdGFydF90cmFu c2FjdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dt bApAQCAtMjEsMTMgKzIxLDE2IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5 bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotU1RBUlQgVFJBTlNBQ1RJT04gWyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0g XQorU1RBUlQgVFJBTlNBQ1RJT04gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJh bnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+d2FpdF9ldmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxl PiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJWkFC TEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRURUQg fQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUKKwor PHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9ldmVudDwv cmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorICAgIEFGVEVSIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5sc25fdmFsdWU8L3JlcGxhY2VhYmxlPiBbIFdJVEhJTiBudW1iZXJfb2ZfbWls bGlzZWNvbmRzIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5z Z21sCmluZGV4IGFhOTRmNmFkZjYuLjA0ZTE3NjIwZGQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTIx Niw2ICsyMTYsNyBAQAogICAgJnVwZGF0ZTsKICAgICZ2YWN1dW07CiAgICAmdmFsdWVzOworICAg JndhaXQ7CiAKICA8L3JlZmVyZW5jZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n cmVjb3ZlcnkuYwppbmRleCAxYjQ4ZDcxNzFhLi44YWI4NmE4M2I1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUg ImJhY2t1cC9iYXNlYmFja3VwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKICNpbmNsdWRlICJjb21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgpAQCAtMTc4NCw2ICsxNzg1LDE1IEBAIFBlcmZvcm1XYWxS ZWNvdmVyeSh2b2lkKQogCQkJCWJyZWFrOwogCQkJfQogCisJCQkvKgorCQkJKiBJZiB3ZSByZXBs YXllZCBhbiBMU04gdGhhdCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwKKwkJCSogc2V0IGxhdGNo ZXMgaW4gc2hhcmVkIG1lbW9yeSBhcnJheSB0byBub3RpZnkgdGhlIHdhaXRlci4KKwkJCSovCisJ CQlpZiAoWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIgPj0gR2V0TWluV2Fp dCgpKQorCQkJeworCQkJCSBXYWl0U2V0TGF0Y2goWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5 ZWRFbmRSZWNQdHIpOworCQkJfQorCiAJCQkvKiBFbHNlLCB0cnkgdG8gZmV0Y2ggdGhlIG5leHQg V0FMIHJlY29yZCAqLwogCQkJcmVjb3JkID0gUmVhZFJlY29yZCh4bG9ncHJlZmV0Y2hlciwgTE9H LCBmYWxzZSwgcmVwbGF5VExJKTsKIAkJfSB3aGlsZSAocmVjb3JkICE9IE5VTEwpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQppbmRleCA0OGY3MzQ4ZjkxLi5kOGY2OTY1ZDhjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtl ZmlsZQpAQCAtNjEsNiArNjEsNyBAQCBPQkpTID0gXAogCXZhY3V1bS5vIFwKIAl2YWN1dW1wYXJh bGxlbC5vIFwKIAl2YXJpYWJsZS5vIFwKLQl2aWV3Lm8KKwl2aWV3Lm8gXAorCXdhaXQubwogCiBp bmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21l c29uLmJ1aWxkCmluZGV4IDZkZDAwYTRhYmQuLjNmMDZkYzUzNDEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21l c29uLmJ1aWxkCkBAIC01MCw0ICs1MCw1IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAg J3ZhY3V1bXBhcmFsbGVsLmMnLAogICAndmFyaWFibGUuYycsCiAgICd2aWV3LmMnLAorICAnd2Fp dC5jJywKICkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi44ODBmMTQxY2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv d2FpdC5jCkBAIC0wLDAgKzEsMzM4IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3YWl0 LmMKKyAqCSAgSW1wbGVtZW50cyBXQUlUIEZPUiwgd2hpY2ggYWxsb3dzIHdhaXRpbmcgZm9yIGV2 ZW50cyBzdWNoIGFzCisgKgkgIHRpbWUgcGFzc2luZyBvciBMU04gaGF2aW5nIGJlZW4gcmVwbGF5 ZWQgb24gcmVwbGljYS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMCwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMjAyMCwgUmVnZW50cyBvZiBQb3N0Z3Jlc1BybworICoKKyAqIElERU5USUZJQ0FUSU9O CisgKgkgIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYworICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCisKKyNpbmNsdWRlIDxmbG9hdC5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNp bmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5j bHVkZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNs dWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNs dWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2JhY2tlbmRpZC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcG1zaWduYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zaW52YWxhZHQuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1 ZGUgInV0aWxzL3BnX2xzbi5oIgorI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1 ZGUgImV4ZWN1dG9yL3NwaS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKworLyog QWRkIHRvIC8gZGVsZXRlIGZyb20gc2hhcmVkIG1lbW9yeSBhcnJheSAqLworc3RhdGljIHZvaWQg QWRkRXZlbnQoWExvZ1JlY1B0ciBsc25fdG9fd2FpdCk7CitzdGF0aWMgdm9pZCBEZWxldGVFdmVu dCh2b2lkKTsKKworLyogU2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0 Cit7CisJaW50CQkJYmFja2VuZF9tYXhpZDsKKwlwZ19hdG9taWNfdWludDY0CW1pbl9sc247CisJ c2xvY2tfdAkJbXV0ZXg7CisJWExvZ1JlY1B0cgl3YWl0ZWRfbHNuW0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07Cit9IFdhaXRTdGF0ZTsKKworc3RhdGljIHZvbGF0aWxlIFdhaXRTdGF0ZSAqc3RhdGU7 CisKKy8qIEFkZCB0aGUgZXZlbnQgb2YgdGhlIGN1cnJlbnQgYmFja2VuZCB0byB0aGUgc2hhcmVk IG1lbW9yeSBhcnJheSAqLworc3RhdGljIHZvaWQKK0FkZEV2ZW50KFhMb2dSZWNQdHIgbHNuX3Rv X3dhaXQpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZzdGF0ZS0+bXV0ZXgpOworCWlmIChzdGF0ZS0+ YmFja2VuZF9tYXhpZCA8IE15QmFja2VuZElkKQorCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9IE15 QmFja2VuZElkOworCisJc3RhdGUtPndhaXRlZF9sc25bTXlCYWNrZW5kSWRdID0gbHNuX3RvX3dh aXQ7CisKKwlpZiAobHNuX3RvX3dhaXQgPCBwZ19hdG9taWNfcmVhZF91NjQoJnN0YXRlLT5taW5f bHNuKSkKKwkJcGdfYXRvbWljX3dyaXRlX3U2NCgmc3RhdGUtPm1pbl9sc24sbHNuX3RvX3dhaXQp OworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKK30KKworLyoKKyAqIERlbGV0ZSBl dmVudCBvZiB0aGUgY3VycmVudCBiYWNrZW5kIGZyb20gdGhlIHNoYXJlZCBtZW1vcnkgYXJyYXku CisgKgorICogVE9ETzogQ29uc2lkZXIgc3RhdGUgY2xlYW51cCBvbiBiYWNrZW5kIGZhaWx1cmUu CisgKiBDaGVjazoKKyAqIDEpIG5vbWFsfHNtYXJ0fGZhc3R8aW1tZWRpYXRlIHN0b3AKKyAqIDIp IFNJR0tJTEwgYW5kIFNJR1RFUk0KKyAqLworc3RhdGljIHZvaWQKK0RlbGV0ZUV2ZW50KHZvaWQp Cit7CisJaW50CQkJaTsKKwlYTG9nUmVjUHRyCWxzbl90b19kZWxldGUgPSBzdGF0ZS0+d2FpdGVk X2xzbltNeUJhY2tlbmRJZF07CisKKwlzdGF0ZS0+d2FpdGVkX2xzbltNeUJhY2tlbmRJZF0gPSBJ bnZhbGlkWExvZ1JlY1B0cjsKKworCVNwaW5Mb2NrQWNxdWlyZSgmc3RhdGUtPm11dGV4KTsKKwor CS8qIElmIHdlIG5lZWQgdG8gY2hvb3NlIHRoZSBuZXh0IG1pbl9sc24sIHVwZGF0ZSBzdGF0ZS0+ bWluX2xzbiAqLworCWlmIChwZ19hdG9taWNfcmVhZF91NjQoJnN0YXRlLT5taW5fbHNuKSA9PSBs c25fdG9fZGVsZXRlKQorCXsKKwkJcGdfYXRvbWljX3dyaXRlX3U2NCgmc3RhdGUtPm1pbl9sc24s UEdfVUlOVDY0X01BWCk7CisJCWZvciAoaSA9IDI7IGkgPD0gc3RhdGUtPmJhY2tlbmRfbWF4aWQ7 IGkrKykKKwkJCWlmIChzdGF0ZS0+d2FpdGVkX2xzbltpXSAhPSBJbnZhbGlkWExvZ1JlY1B0ciAm JgorCQkJCXN0YXRlLT53YWl0ZWRfbHNuW2ldIDwgcGdfYXRvbWljX3JlYWRfdTY0KCZzdGF0ZS0+ bWluX2xzbikpCisJCQkJcGdfYXRvbWljX3dyaXRlX3U2NCgmc3RhdGUtPm1pbl9sc24sc3RhdGUt PndhaXRlZF9sc25baV0pOworCX0KKworCWlmIChzdGF0ZS0+YmFja2VuZF9tYXhpZCA9PSBNeUJh Y2tlbmRJZCkKKwkJZm9yIChpID0gKE15QmFja2VuZElkKTsgaSA+PSAyOyBpLS0pCisJCQlpZiAo c3RhdGUtPndhaXRlZF9sc25baV0gIT0gSW52YWxpZFhMb2dSZWNQdHIpCisJCQl7CisJCQkJc3Rh dGUtPmJhY2tlbmRfbWF4aWQgPSBpOworCQkJCWJyZWFrOworCQkJfQorCisJU3BpbkxvY2tSZWxl YXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgorICogUmVwb3J0IGFtb3VudCBvZiBzaGFyZWQg bWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgV2FpdFN0YXRlCisgKi8KK1NpemUKK1dhaXRTaG1lbVNp emUodm9pZCkKK3sKKwlTaXplCQlzaXplOworCisJc2l6ZSA9IG9mZnNldG9mKFdhaXRTdGF0ZSwg d2FpdGVkX2xzbik7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE1heEJhY2tlbmRz ICsgMSwgc2l6ZW9mKFhMb2dSZWNQdHIpKSk7CisJcmV0dXJuIHNpemU7Cit9CisKKy8qIEluaXQg YXJyYXkgb2YgZXZlbnRzIGluIHNoYXJlZCBtZW1vcnkgKi8KK3ZvaWQKK1dhaXRTaG1lbUluaXQo dm9pZCkKK3sKKwlib29sCQlmb3VuZDsKKwl1aW50MzIJCWk7CisKKwlzdGF0ZSA9IChXYWl0U3Rh dGUgKikgU2htZW1Jbml0U3RydWN0KCJwZ193YWl0X2xzbiIsCisJCQkJCQkJCQkJICBXYWl0U2ht ZW1TaXplKCksCisJCQkJCQkJCQkJICAmZm91bmQpOworCWlmICghZm91bmQpCisJeworCQlTcGlu TG9ja0luaXQoJnN0YXRlLT5tdXRleCk7CisKKwkJZm9yIChpID0gMDsgaSA8IChNYXhCYWNrZW5k cyArIDEpOyBpKyspCisJCQlzdGF0ZS0+d2FpdGVkX2xzbltpXSA9IEludmFsaWRYTG9nUmVjUHRy OworCisJCXN0YXRlLT5iYWNrZW5kX21heGlkID0gMDsKKwkJcGdfYXRvbWljX2luaXRfdTY0KCZz dGF0ZS0+bWluX2xzbixQR19VSU5UNjRfTUFYKTsKKwl9Cit9CisKKy8qIFNldCBhbGwgbGF0Y2hl cyBpbiBzaGFyZWQgbWVtb3J5IHRvIHNpZ25hbCB0aGF0IG5ldyBMU04gaGFzIGJlZW4gcmVwbGF5 ZWQgKi8KK3ZvaWQKK1dhaXRTZXRMYXRjaChYTG9nUmVjUHRyIGN1cl9sc24pCit7CisJdWludDMy CQlpOworCWludCAJCWJhY2tlbmRfbWF4aWQ7CisJUEdQUk9DCSAgICpiYWNrZW5kOworCisJU3Bp bkxvY2tBY3F1aXJlKCZzdGF0ZS0+bXV0ZXgpOworCWJhY2tlbmRfbWF4aWQgPSBzdGF0ZS0+YmFj a2VuZF9tYXhpZDsKKwlTcGluTG9ja1JlbGVhc2UoJnN0YXRlLT5tdXRleCk7CisKKwlmb3IgKGkg PSAyOyBpIDw9IGJhY2tlbmRfbWF4aWQ7IGkrKykKKwl7CisJCWJhY2tlbmQgPSBCYWNrZW5kSWRH ZXRQcm9jKGkpOworCQlpZiAoc3RhdGUtPndhaXRlZF9sc25baV0gIT0gMCkKKwkJeworCQkJaWYg KGJhY2tlbmQgJiYgc3RhdGUtPndhaXRlZF9sc25baV0gPD0gY3VyX2xzbikKKwkJCQlTZXRMYXRj aCgmYmFja2VuZC0+cHJvY0xhdGNoKTsKKwkJfQorCX0KK30KKworLyogR2V0IG1pbmltYWwgTFNO IHRoYXQgd2lsbCBiZSBuZXh0ICovCitYTG9nUmVjUHRyCitHZXRNaW5XYWl0KHZvaWQpCit7CisJ cmV0dXJuIHBnX2F0b21pY19yZWFkX3U2NCgmc3RhdGUtPm1pbl9sc24pOworfQorCisvKgorICog T24gV0FJVCB1c2UgTXlMYXRjaCB0byB3YWl0IHRpbGwgTFNOIGlzIHJlcGxheWVkLAorICogcG9z dG1hc3RlciBkaWVzIG9yIHRpbWVvdXQgaGFwcGVucy4KKyAqLworaW50CitXYWl0VXRpbGl0eShY TG9nUmVjUHRyIGxzbiwgY29uc3QgZmxvYXQ4IHNlY3MpCit7CisJWExvZ1JlY1B0cgljdXJfbHNu ID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwlpbnQJCQlsYXRjaF9ldmVudHM7CisJZmxv YXQ4CQllbmR0aW1lOworCXVpbnQJCXJlcyA9IDA7CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVz cygpKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2coIldvcmsgb25seSBpbiBzdGFu ZGJ5IG1vZGUiKSkpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisjZGVmaW5lIEdldE5vd0Zsb2F0 KCkJKChmbG9hdDgpIEdldEN1cnJlbnRUaW1lc3RhbXAoKSAvIDEwMDAwMDAuMCkKKwllbmR0aW1l ID0gR2V0Tm93RmxvYXQoKSArIHNlY3M7CisKKwlsYXRjaF9ldmVudHMgPSBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSDsKKworCWlmIChsc24gIT0gSW52YWxpZFhMb2dSZWNQdHIpCisJ eworCQkvKiBKdXN0IGNoZWNrIGlmIHdlIHJlYWNoZWQgKi8KKwkJaWYgKGxzbiA8IGN1cl9sc24g fHwgc2VjcyA8IDApCisJCQlyZXR1cm4gKGxzbiA8IGN1cl9sc24pOworCisJCWxhdGNoX2V2ZW50 cyB8PSBXTF9MQVRDSF9TRVQ7CisJCUFkZEV2ZW50KGxzbik7CisJfQorCWVsc2UgaWYgKCFzZWNz KQorCQlyZXR1cm4gMTsKKworCWZvciAoOzspCisJeworCQlpbnQJCQlyYzsKKwkJZmxvYXQ4CQlk ZWxheSA9IDA7CisJCWxvbmcJCWRlbGF5X21zOworCisJCS8qIElmIExTTiBoYXMgYmVlbiByZXBs YXllZCAqLworCQlpZiAobHNuICYmIGxzbiA8PSBjdXJfbHNuKQorCQkJYnJlYWs7CisKKwkJaWYg KHNlY3MgPiAwKQorCQkJZGVsYXkgPSBlbmR0aW1lIC0gR2V0Tm93RmxvYXQoKTsKKwkJZWxzZSBp ZiAoc2VjcyA9PSAwKQorCQkJLyoKKwkJCSogSWYgd2Ugd2FpdCBmb3JldmVyLCB0aGVuIDEgbWlu dXRlIHRpbWVvdXQgdG8gY2hlY2sKKwkJCSogZm9yIEludGVydXB0cy4KKwkJCSovCisJCQlkZWxh eSA9IDYwOworCisJCWlmIChkZWxheSA+IDAuMCkKKwkJCWRlbGF5X21zID0gKGxvbmcpIGNlaWwo ZGVsYXkgKiAxMDAwLjApOworCQllbHNlCisJCQlicmVhazsKKworCQkvKgorCQkgKiBJZiByZWNl aXZlZCBhbiBpbnRlcnJ1cHRpb24gZnJvbSBDSEVDS19GT1JfSU5URVJSVVBUUywKKwkJICogdGhl biBkZWxldGUgdGhlIGN1cnJlbnQgZXZlbnQgZnJvbSBhcnJheS4KKwkJICovCisJCWlmIChJbnRl cnJ1cHRQZW5kaW5nKQorCQl7CisJCQlpZiAobHNuICE9IEludmFsaWRYTG9nUmVjUHRyKQorCQkJ CURlbGV0ZUV2ZW50KCk7CisJCQlQcm9jZXNzSW50ZXJydXB0cygpOworCQl9CisKKwkJLyogSWYg cG9zdG1hc3RlciBkaWVzLCBmaW5pc2ggaW1tZWRpYXRlbHkgKi8KKwkJaWYgKCFQb3N0bWFzdGVy SXNBbGl2ZSgpKQorCQkJYnJlYWs7CisKKwkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwgbGF0Y2hf ZXZlbnRzLCBkZWxheV9tcywKKwkJCQkJICAgV0FJVF9FVkVOVF9DTElFTlRfUkVBRCk7CisKKwkJ aWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKworCQlpZiAo bHNuICYmIHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJY3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQ dHIoTlVMTCk7CisJfQorCisJaWYgKGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJRGVsZXRl RXZlbnQoKTsKKworCWlmIChsc24gIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYgbHNuID4gY3VyX2xz bikKKwkJZWxvZyhOT1RJQ0UsIkxTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3JlYXNlIHdh aXQgdGltZS4iKTsKKwllbHNlCisJCXJlcyA9IDE7CisKKwlyZXR1cm4gcmVzOworfQorCisvKgor ICogR2V0IHRoZSBhbW91bnQgb2Ygc2Vjb25kcyBsZWZ0IHRpbGwgdGhlIHNwZWNpZmllZCB0aW1l LgorICovCitmbG9hdDgKK1dhaXRUaW1lUmVzb2x2ZShDb25zdCAqdGltZSkKK3sKKwlpbnQJCQly ZXQ7CisJZmxvYXQ4CQl2YWw7CisJT2lkCQkJdHlwZXNbXSA9IHsgdGltZS0+Y29uc3R0eXBlIH07 CisJRGF0dW0JCXZhbHVlc1tdID0geyB0aW1lLT5jb25zdHZhbHVlIH07CisJY2hhcgkJbnVsbHNb XSA9IHsgIiAiIH07CisJRGF0dW0JCXJlc3VsdDsKKwlib29sCQlpc251bGw7CisKKwlTUElfY29u bmVjdCgpOworCisJaWYgKHRpbWUtPmNvbnN0dHlwZSA9PSAxMDgzKQorCQlyZXQgPSBTUElfZXhl Y3V0ZV93aXRoX2FyZ3MoInNlbGVjdCBleHRyYWN0IChlcG9jaCBmcm9tICgkMSAtIG5vdygpOjp0 aW1lKSkiLAorCQkJCQkJCQkJMSwgdHlwZXMsIHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCWVs c2UgaWYgKHRpbWUtPmNvbnN0dHlwZSA9PSAxMjY2KQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRo X2FyZ3MoInNlbGVjdCBleHRyYWN0IChlcG9jaCBmcm9tICh0aW1lem9uZSgnVVRDJywkMSk6OnRp bWUgLSB0aW1lem9uZSgnVVRDJywgbm93KCk6OnRpbWV0eik6OnRpbWUpKSIsCisJCQkJCQkJCQkx LCB0eXBlcywgdmFsdWVzLCBudWxscywgdHJ1ZSwgMCk7CisJZWxzZQorCQlyZXQgPSBTUElfZXhl Y3V0ZV93aXRoX2FyZ3MoInNlbGVjdCBleHRyYWN0IChlcG9jaCBmcm9tICgkMSAtIG5vdygpKSki LAorCQkJCQkJCQkJMSwgdHlwZXMsIHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCisJQXNzZXJ0 KHJldCA+PSAwKTsKKwlyZXN1bHQgPSBTUElfZ2V0YmludmFsKFNQSV90dXB0YWJsZS0+dmFsc1sw XSwKKwkJCQkJCSAgIFNQSV90dXB0YWJsZS0+dHVwZGVzYywKKwkJCQkJCSAgIDEsICZpc251bGwp OworCisJQXNzZXJ0KCFpc251bGwpOworCXZhbCA9IERhdHVtR2V0RmxvYXQ4KHJlc3VsdCk7CisK KwllbG9nKElORk8sICJ0aW1lOiAlZiIsIHZhbCk7CisKKwlTUElfZmluaXNoKCk7CisJcmV0dXJu IHZhbDsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2YgV0FJVCBGT1IgKi8KK2ludAorV2FpdE1h aW4oV2FpdFN0bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkKK3sKKwlUdXBsZURlc2MJdHVw ZGVzYzsKKwlUdXBPdXRwdXRTdGF0ZSAqdHN0YXRlOworCVhMb2dSZWNQdHIJbHNuID0gSW52YWxp ZFhMb2dSZWNQdHI7CisJaW50CQlyZXMgPSAwOworCisJbHNuID0gRGF0dW1HZXRMU04oRGlyZWN0 RnVuY3Rpb25DYWxsMShwZ19sc25faW4sCisJCQkJCQkJCQkJCQkgQ1N0cmluZ0dldERhdHVtKHN0 bXQtPmxzbikpKTsKKwlyZXMgPSBXYWl0VXRpbGl0eShsc24sIHN0bXQtPmRlbGF5KTsKKworCS8q IE5lZWQgYSB0dXBsZSBkZXNjcmlwdG9yIHJlcHJlc2VudGluZyBhIHNpbmdsZSBURVhUIGNvbHVt biAqLworCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYygxKTsKKwlUdXBsZURlc2NJ bml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEsICJMU04gcmVhY2hlZCIsIFRFWFRPSUQs IC0xLCAwKTsKKwkvKiBQcmVwYXJlIGZvciBwcm9qZWN0aW9uIG9mIHR1cGxlcyAqLworCXRzdGF0 ZSA9IGJlZ2luX3R1cF9vdXRwdXRfdHVwZGVzYyhkZXN0LCB0dXBkZXNjLCAmVFRTT3BzTWluaW1h bFR1cGxlKTsKKworCS8qIFNlbmQgaXQgKi8KKwlkb190ZXh0X291dHB1dF9vbmVsaW5lKHRzdGF0 ZSwgcmVzPyJ0IjoiZiIpOworCWVuZF90dXBfb3V0cHV0KHRzdGF0ZSk7CisJcmV0dXJuIHJlczsK K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IDA2ZmM4Y2U5OGIuLmYxZDg2ZmY0MzUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2FuYWx5emUuYwpAQCAtNDA1LDcgKzQwNSw2IEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpCiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1DYWxsU3RtdChw c3RhdGUsCiAJCQkJCQkJCQkgICAoQ2FsbFN0bXQgKikgcGFyc2VUcmVlKTsKIAkJCWJyZWFrOwot CiAJCWRlZmF1bHQ6CiAKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAzNDYwZmVhNTZiLi40NTg3ZDVh MjNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVl cnkpOwogCQlTZWNMYWJlbFN0bXQgU2VsZWN0U3RtdCBUcmFuc2FjdGlvblN0bXQgVHJhbnNhY3Rp b25TdG10TGVnYWN5IFRydW5jYXRlU3RtdAogCQlVbmxpc3RlblN0bXQgVXBkYXRlU3RtdCBWYWN1 dW1TdG10CiAJCVZhcmlhYmxlUmVzZXRTdG10IFZhcmlhYmxlU2V0U3RtdCBWYXJpYWJsZVNob3dT dG10Ci0JCVZpZXdTdG10IENoZWNrUG9pbnRTdG10IENyZWF0ZUNvbnZlcnNpb25TdG10CisJCVZp ZXdTdG10IFdhaXRTdG10IENoZWNrUG9pbnRTdG10IENyZWF0ZUNvbnZlcnNpb25TdG10CiAJCURl YWxsb2NhdGVTdG10IFByZXBhcmVTdG10IEV4ZWN1dGVTdG10CiAJCURyb3BPd25lZFN0bXQgUmVh c3NpZ25Pd25lZFN0bXQKIAkJQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10IEFsdGVyVFNEaWN0aW9u YXJ5U3RtdApAQCAtNjQ1LDYgKzY0NSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmll d1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlw ZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCiAldHlwZSA8bGlzdD4JCWhhc2hf cGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQorJXR5cGUgPGl2 YWw+CQl3YWl0X3RpbWUKKyV0eXBlIDxub2RlPgkJd2FpdF9mb3IKIAogJXR5cGUgPG5vZGU+CWpz b25fZm9ybWF0X2NsYXVzZQogCQkJCWpzb25fZm9ybWF0X2NsYXVzZV9vcHQKQEAgLTExMDMsNiAr MTEwNSw3IEBAIHN0bXQ6CiAJCQl8IFZhcmlhYmxlU2V0U3RtdAogCQkJfCBWYXJpYWJsZVNob3dT dG10CiAJCQl8IFZpZXdTdG10CisJCQl8IFdhaXRTdG10CiAJCQl8IC8qRU1QVFkqLwogCQkJCXsg JCQgPSBOVUxMOyB9CiAJCTsKQEAgLTEwOTI3LDEyICsxMDkzMCwxMyBAQCBUcmFuc2FjdGlvblN0 bXQ6CiAJCQkJCW4tPmxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 Ci0JCQl8IFNUQVJUIFRSQU5TQUNUSU9OIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eQor CQkJfCBTVEFSVCBUUkFOU0FDVElPTiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkgd2Fp dF9mb3IKIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0 aW9uU3RtdCk7CiAKIAkJCQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfU1RBUlQ7CiAJCQkJCW4tPm9w dGlvbnMgPSAkMzsKKwkJCQkJbi0+d2FpdCA9ICQ0OwogCQkJCQluLT5sb2NhdGlvbiA9IC0xOwog CQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTEwMzEsMTIgKzExMDM1LDEzIEBAIFRy YW5zYWN0aW9uU3RtdDoKIAkJOwogCiBUcmFuc2FjdGlvblN0bXRMZWdhY3k6Ci0JCQlCRUdJTl9Q IG9wdF90cmFuc2FjdGlvbiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkKKwkJCUJFR0lO X1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eSB3YWl0X2Zv cgogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoVHJhbnNhY3Rpb25T dG10KTsKIAogCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9CRUdJTjsKIAkJCQkJbi0+b3B0aW9u cyA9ICQzOworCQkJCQluLT53YWl0ID0gJDQ7CiAJCQkJCW4tPmxvY2F0aW9uID0gLTE7CiAJCQkJ CSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xNTg2OCw2ICsxNTg3MywzNyBAQCB4bWxfcGFz c2luZ19tZWNoOgogCQkJfCBCWSBWQUxVRV9QCiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKgorICoJCVFVRVJZOgorICoJCQkJQUZURVIgTFNOX3ZhbHVlIFtXSVRISU4gZGVsYXkgdGlt ZXN0YW1wXQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dhaXRTdG10OgorCQkJQUZURVIg U2NvbnN0IHdhaXRfdGltZQorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0 U3RtdCk7CisJCQkJCW4tPmxzbiA9ICQyOworCQkJCQluLT5kZWxheSA9ICQzOworCQkJCQkkJCA9 IChOb2RlICopbjsKKwkJCQl9CisJCTsKK3dhaXRfZm9yOgorCQkJQUZURVIgU2NvbnN0IHdhaXRf dGltZQorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJ CW4tPmxzbiA9ICQyOworCQkJCQluLT5kZWxheSA9ICQzOworCQkJCQkkJCA9IChOb2RlICopbjsK KwkJCQl9CisJCQl8IC8qIEVNUFRZICovCQl7ICQkID0gTlVMTDsgfQorCQk7CisKK3dhaXRfdGlt ZToKKwkJCVdJVEhJTiBJY29uc3QJCXsgJCQgPSAkMjsgfQorCQkJfCAvKiBFTVBUWSAqLyAgICAg ICAgICAgeyAkJCA9IDA7IH0KKwkJOworCiAKIC8qCiAgKiBBZ2dyZWdhdGUgZGVjb3JhdGlvbiBj bGF1c2VzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggZTUxMTllZDU1ZC4uZmY2YTNkYjZhNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImFjY2Vz cy94bG9ncHJlZmV0Y2hlci5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNp bmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0 bWFzdGVyL2F1dG92YWN1dW0uaCIKQEAgLTE0OSw2ICsxNTAsNyBAQCBDYWxjdWxhdGVTaG1lbVNp emUoaW50ICpudW1fc2VtYXBob3JlcykKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQXN5bmNTaG1l bVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFN0YXRzU2htZW1TaXplKCkpOwogCXNp emUgPSBhZGRfc2l6ZShzaXplLCBXYWl0RXZlbnRFeHRlbnNpb25TaG1lbVNpemUoKSk7CisJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRTaG1lbVNpemUoKSk7CiAjaWZkZWYgRVhFQ19CQUNLRU5E CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNobWVtQmFja2VuZEFycmF5U2l6ZSgpKTsKICNlbmRp ZgpAQCAtMjQxLDYgKzI0MywxMSBAQCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZv aWQpCiAJLyogSW5pdGlhbGl6ZSBzdWJzeXN0ZW1zICovCiAJQ3JlYXRlT3JBdHRhY2hTaG1lbVN0 cnVjdHMoKTsKIAorCS8qCisJICogSW5pdCBhcnJheSBvZiBMYXRjaGVzIGluIHNoYXJlZCBtZW1v cnkgZm9yIHdhaXQgbHNuCisJICovCisJV2FpdFNobWVtSW5pdCgpOworCiAjaWZkZWYgRVhFQ19C QUNLRU5ECiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9z cmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCA4ZGU4MjFmOTYwLi5lODg0ODI4MDExIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3V0aWxpdHkuYwpAQCAtMTUsNiArMTUsNyBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8K ICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgPGZsb2F0Lmg+CiAKICNpbmNsdWRlICJh Y2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIKQEAg LTU5LDYgKzYwLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy91c2VyLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmlldy5oIgorI2luY2x1ZGUgImNv bW1hbmRzL3dhaXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfdXRpbGNtZC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKQEAgLTcy LDYgKzc0LDkgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9y L3NwaS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9w Z19sc24uaCIKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJvbCBpbiBQcm9jZXNz VXRpbGl0eSgpICovCiBQcm9jZXNzVXRpbGl0eV9ob29rX3R5cGUgUHJvY2Vzc1V0aWxpdHlfaG9v ayA9IE5VTEw7CkBAIC0yNzIsNiArMjc3LDcgQEAgQ2xhc3NpZnlVdGlsaXR5Q29tbWFuZEFzUmVh ZE9ubHkoTm9kZSAqcGFyc2V0cmVlKQogCQljYXNlIFRfTG9hZFN0bXQ6CiAJCWNhc2UgVF9QcmVw YXJlU3RtdDoKIAkJY2FzZSBUX1VubGlzdGVuU3RtdDoKKwkJY2FzZSBUX1dhaXRTdG10OgogCQlj YXNlIFRfVmFyaWFibGVTZXRTdG10OgogCQkJewogCQkJCS8qCkBAIC02MTIsNiArNjE4LDExIEBA IHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCQkJY2FzZSBU UkFOU19TVE1UX1NUQVJUOgogCQkJCQkJewogCQkJCQkJCUxpc3RDZWxsICAgKmxjOworCQkJCQkJ CVdhaXRTdG10ICAgKndhaXRzdG10ID0gKFdhaXRTdG10ICopIHN0bXQtPndhaXQ7CisKKwkJCQkJ CQkvKiBJZiBuZWVkZWQgdG8gV0FJVCBGT1Igc29tZXRoaW5nIGJ1dCBmYWlsZWQgKi8KKwkJCQkJ CQlpZiAoc3RtdC0+d2FpdCAmJiBXYWl0TWFpbih3YWl0c3RtdCwgZGVzdCkgPT0gMCkKKwkJCQkJ CQkJYnJlYWs7CiAKIAkJCQkJCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKIAkJCQkJCQlmb3Jl YWNoKGxjLCBzdG10LT5vcHRpb25zKQpAQCAtMTA2OSw2ICsxMDgwLDEzIEBAIHN0YW5kYXJkX1By b2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCQlicmVhazsKIAkJCX0KIAorCQlj YXNlIFRfV2FpdFN0bXQ6CisJCQl7CisJCQkJV2FpdFN0bXQgICAqc3RtdCA9IChXYWl0U3RtdCAq KSBwYXJzZXRyZWU7CisJCQkJV2FpdE1haW4oc3RtdCwgZGVzdCk7CisJCQkJYnJlYWs7CisJCQl9 CisKIAkJZGVmYXVsdDoKIAkJCS8qIEFsbCBvdGhlciBzdGF0ZW1lbnQgdHlwZXMgaGF2ZSBldmVu dCB0cmlnZ2VyIHN1cHBvcnQgKi8KIAkJCVByb2Nlc3NVdGlsaXR5U2xvdyhwc3RhdGUsIHBzdG10 LCBxdWVyeVN0cmluZywKQEAgLTI4NDcsNiArMjg2NSwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5v ZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9IENNRFRBR19OT1RJRlk7CiAJCQlicmVhazsKIAorCQlj YXNlIFRfV2FpdFN0bXQ6CisJCQl0YWcgPSBDTURUQUdfV0FJVDsKKwkJCWJyZWFrOworCiAJCWNh c2UgVF9MaXN0ZW5TdG10OgogCQkJdGFnID0gQ01EVEFHX0xJU1RFTjsKIAkJCWJyZWFrOwpAQCAt MzQ5NSw2ICszNTE3LDEwIEBAIEdldENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJ CQlsZXYgPSBMT0dTVE1UX0FMTDsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9XYWl0U3RtdDoKKwkJ CWxldiA9IExPR1NUTVRfQUxMOworCQkJYnJlYWs7CisKIAkJY2FzZSBUX0xpc3RlblN0bXQ6CiAJ CQlsZXYgPSBMT0dTVE1UX0FMTDsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvd2FpdC5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjAyNzAxNjBkNDQKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgKQEAgLTAsMCArMSwyNiBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogd2FpdC5oCisgKgkgIHByb3RvdHlwZXMgZm9yIGNvbW1hbmRzL3dh aXQuYworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE2LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDE2 LCBSZWdlbnRzIG9mIFBvc3RncmVzUFJPCisgKgorICogc3JjL2luY2x1ZGUvY29tbWFuZHMvd2Fp dC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgV0FJVF9ICisjZGVmaW5l IFdBSVRfSAorI2luY2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSAidGNvcC9kZXN0LmgiCisK K2V4dGVybiBpbnQgV2FpdFV0aWxpdHkoWExvZ1JlY1B0ciBsc24sIGNvbnN0IGZsb2F0OCBkZWxh eSk7CitleHRlcm4gU2l6ZSBXYWl0U2htZW1TaXplKHZvaWQpOworZXh0ZXJuIHZvaWQgV2FpdFNo bWVtSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRTZXRMYXRjaChYTG9nUmVjUHRyIGN1cl9s c24pOworZXh0ZXJuIFhMb2dSZWNQdHIgR2V0TWluV2FpdCh2b2lkKTsKK2V4dGVybiBmbG9hdDgg V2FpdFRpbWVSZXNvbHZlKENvbnN0ICp0aW1lKTsKK2V4dGVybiBpbnQgV2FpdE1haW4oV2FpdFN0 bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCk7CisKKyNlbmRpZiAgIC8qIFdBSVRfSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGIzMTgxZjM0YWUuLjk4Mzc5YWU5N2UgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKQEAgLTM1MjUsNiArMzUyNSw3IEBAIHR5cGVkZWYgc3RydWN0IFRyYW5z YWN0aW9uU3RtdAogCS8qIGZvciB0d28tcGhhc2UtY29tbWl0IHJlbGF0ZWQgY29tbWFuZHMgKi8K IAljaGFyCSAgICpnaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCWJvb2wJ CWNoYWluOwkJCS8qIEFORCBDSEFJTiBvcHRpb24gKi8KKwlOb2RlCQkqd2FpdDsJCQkvKiB3YWl0 IGxzbiBjbGF1c2UgKi8KIAkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwog CWludAkJCWxvY2F0aW9uIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfbG9jYXRpb24pOwogfSBU cmFuc2FjdGlvblN0bXQ7CkBAIC00MDc2LDQgKzQwNzcsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgRHJv cFN1YnNjcmlwdGlvblN0bXQKIAlEcm9wQmVoYXZpb3IgYmVoYXZpb3I7CQkvKiBSRVNUUklDVCBv ciBDQVNDQURFIGJlaGF2aW9yICovCiB9IERyb3BTdWJzY3JpcHRpb25TdG10OwogCisvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJQUZURVIgU3RhdGVtZW50ICsgQUZURVIgY2xhdXNlIG9m IEJFR0lOIHN0YXRlbWVudAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKK3R5cGVk ZWYgc3RydWN0IFdhaXRTdG10Cit7CisJTm9kZVRhZwkJdHlwZTsKKwljaGFyCSAgICpsc247CQkv KiBMU04gKi8KKwlpbnQJCQlkZWxheTsJCS8qIFRJTUVPVVQgKi8KK30gV2FpdFN0bXQ7CisKICNl bmRpZgkJCQkJCQkvKiBQQVJTRU5PREVTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rj b3AvY21kdGFnbGlzdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKaW5kZXggN2Zk Y2VjNmRkOS4uNTY3MTM5OTYzYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWds aXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKQEAgLTIxNywzICsyMTcs NCBAQCBQR19DTURUQUcoQ01EVEFHX1RSVU5DQVRFX1RBQkxFLCAiVFJVTkNBVEUgVEFCTEUiLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19VTkxJU1RFTiwgIlVOTElTVEVO IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfVVBEQVRFLCAiVVBEQVRF IiwgZmFsc2UsIGZhbHNlLCB0cnVlKQogUEdfQ01EVEFHKENNRFRBR19WQUNVVU0sICJWQUNVVU0i LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19XQUlULCAiQUZURVIiLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBf YmVnaW5fYWZ0ZXIucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9iZWdpbl9hZnRlci5wbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iMjJlNjM2MDNjCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfYmVnaW5fYWZ0ZXIucGwKQEAgLTAs MCArMSw4NiBAQAorIyBDaGVja3Mgd2FpdGluZyBmb3IgbHNuIG9uIHN0YW5kYnkgQUZURVIKK3Vz ZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5p dGlhbGl6ZSBwcmltYXJ5IG5vZGUKK215ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0 cmVhbWluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCisjIEFuZCBzb21lIGNvbnRl bnQgYW5kIHRha2UgYSBiYWNrdXAKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgVEFCTEUgd2FpdF90ZXN0IEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwx MCkgQVMgYSIpOworbXkgJGJhY2t1cF9uYW1lID0gJ215X2JhY2t1cCc7Ciskbm9kZV9wcmltYXJ5 LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyBDcmVhdGUgYSBzdHJlYW1pbmcgc3RhbmRieSB3 aXRoIGEgMSBzZWNvbmQgZGVsYXkgZnJvbSB0aGUgYmFja3VwCitteSAkbm9kZV9zdGFuZGJ5ID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5Jyk7CitteSAkZGVsYXkgICAg ICAgID0gMTsKKyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoJG5vZGVfcHJpbWFyeSwg JGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9zdGFuZGJ5LT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXFbCisJcmVjb3ZlcnlfbWluX2FwcGx5X2RlbGF5 ID0gJyR7ZGVsYXl9cycKK10pOworJG5vZGVfc3RhbmRieS0+c3RhcnQ7CisKKworCisjIE1ha2Ug c3VyZSB0aGF0IEFGVEVSIHdvcmtzOiBhZGQgbmV3IGNvbnRlbnQgdG8gcHJpbWFyeSBhbmQgbWVt b3JpemUKKyMgcHJpbWFyeSdzIG5ldyBMU04sIHRoZW4gd2FpdCBmb3IgcHJpbWFyeSdzIExTTiBv biBzdGFuZGJ5LiBQcm92ZSB0aGF0IEFGVEVSIGlzCisjIGFibGUgdG8gc2V0dXAgYW4gaW5maW5p dGUgd2FpdGluZyBsb29wIGFuZCBleGl0IGl0IGlmIGdpdmVuIG5vIHdhaXQgdGltZW91dC4KKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rl c3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMTEsIDIwKSkiKTsKK215ICRsc24xID0gJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNu KCkiKTsKKyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQkVHSU4gQUZURVIg JyRsc24xJyIpOworCisjIEdldCB0aGUgY3VycmVudCBMU04gb24gc3RhbmRieSBhbmQgbWFrZSBz dXJlIGl0J3MgdGhlIHNhbWUgYXMgcHJpbWFyeSdzIExTTgorbXkgJGxzbl9zdGFuZGJ5ID0gJG5v ZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sYXN0X3dhbF9y ZXBsYXlfbHNuKCkiKTsKK215ICRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xz biwgJyRsc24xJzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNucyBlcSAwLCAic3RhbmRieSBy ZWFjaGVkIHRoZSBzYW1lIExTTiBhcyBwcmltYXJ5IEFGVEVSIik7CisKKworCisjPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorIyBUT0RPOiByZW1vdmUgdGhpcyB0ZXN0IGlmIHdlIHJlbW92ZSB0aGUg c3RhbmRhbG9uZSAiQUZURVIiIGNvbW1hbmQKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFdl IG5lZWQgdG8gY2hlY2sgdGhhdCBBRlRFUiB3b3JrcyBmaW5lIGluc2lkZSB0cmFuc2FjdGlvbnMu IEZvciB0aGF0LCBsZXQncworIyBnZXQgdHdvIExTTnMgdGhhdCB3aWxsIGNvcnJlc3BvbmQgdG8g dHdvIGRpZmZlcmVudCBtYXggdmFsdWVzIGluIG91ciB0YWJsZS4KKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5l cmF0ZV9zZXJpZXMoMzEsIDQwKSkiKTsKK215ICRsc24zID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFM VUVTIChnZW5lcmF0ZV9zZXJpZXMoNDEsIDUwKSkiKTsKK215ICRsc240ID0gJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsK KworIyBCZWZvcmUgc3RhcnRpbmcgdHJhbnNhY3Rpb24sIEFGVEVSIHdoaWNoIGVuc3VyZXMgYSBt YXggdmFsdWUgb2YgNDAuCisjIEluc2lkZSB0aGUgdHJhbnNhY3Rpb24sIEFGVEVSIHRoYXQgZW5z dXJlcyBhIG1heCB2YWx1ZSBvZiA1MC4KKyMgRHVlIHRvIElTT0xBVElPTiBMRVZFTCBSRVBFQVRB QkxFIFJFQUQsIHdlIHNob3VsZCBOT1Qgc2VlIHRoZSBuZXcgbWF4IHZhbHVlLgorbXkgJHN0YW5k YnlfcmVzdWx0cyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsK KwlCRUdJTiBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEIEFGVEVS ICckbHNuMyc7CisJU0VMRUNUIG1heChhKSBGUk9NIHdhaXRfdGVzdDsKKwlCRUdJTiBBRlRFUiAn JGxzbjQnOworCVNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCk7CisJU0VMRUNUIG1heChh KSBGUk9NIHdhaXRfdGVzdDsKKwlDT01NSVQ7CitdKTsKKworIyBNYWtlIHN1cmUgdGhhdCB3ZSBp bmRlZWQgcmVhY2ggcHJpbWFyeSdzIGxhc3QgTFNOIGluc2lkZSB0aGUgdHJhbnNhY3Rpb24uCisj IEZvciB0aGF0LCBjaGVjayB0aGF0IGNhbGxpbmcgcGdfbGFzdF93YWxfcmVwbGF5X2xzbiByZXR1 cm5lZCB0aGF0IExTTi4KK215ICRsYXN0X2xzbl9yZWFjaGVkID0gJHN0YW5kYnlfcmVzdWx0cyA9 fiAvJGxzbjQvOworb2soJGxhc3RfbHNuX3JlYWNoZWQsICJBRlRFUiB3b3JrcyBpbnNpZGUgYSB0 cmFuc2FjdGlvbiIpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gZG9lc24ndCBicmVhayBh bmQgc2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1ZSBhZnRlciBBRlRFUi4KKyMgRm9yIHRoYXQsIG1h a2Ugc3VyZSB0aGF0IHRoZSBvbGRlciBtYXggdmFsdWUgaXMgcmVwZWF0ZWQgdHdpY2UgaW4gdGhl IHJlc3VsdHMuCitteSAkY291bnQgPSAoKSA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLzQwL2c7Citv aygkY291bnQgZXEgMiwgInRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCBkb2Vzbid0IGdldCBi cm9rZW4gZHVlIHRvIEFGVEVSIik7CisKKyRub2RlX3N0YW5kYnktPnN0b3A7Ciskbm9kZV9wcmlt YXJ5LT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVy eS90LzA0MV9hZnRlci5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQxX2FmdGVyLnBsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ4MGJhNmIzM2IKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MV9hZnRlci5wbApAQCAtMCwwICsxLDk5IEBA CisjIENoZWNrcyB3YWl0aW5nIGZvciBsc24gb24gc3RhbmRieSBBRlRFUgordXNlIHN0cmljdDsK K3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHBy aW1hcnkgbm9kZQorbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygncHJpbWFyeScpOworJG5vZGVfcHJpbWFyeS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ IDEpOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyMgQW5kIHNvbWUgY29udGVudCBhbmQgdGFr ZSBhIGJhY2t1cAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFU RSBUQUJMRSB3YWl0X3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBhIik7 CitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRub2RlX3ByaW1hcnktPmJhY2t1cCgk YmFja3VwX25hbWUpOworCisjIENyZWF0ZSBhIHN0cmVhbWluZyBzdGFuZGJ5IHdpdGggYSAxIHNl Y29uZCBkZWxheSBmcm9tIHRoZSBiYWNrdXAKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKK215ICRkZWxheSAgICAgICAgPSAyOwor JG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9wcmltYXJ5LCAkYmFja3VwX25h bWUsCisJaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkgPSAnJHtkZWxh eX1zJworXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKworCisKKyMgTWFrZSBzdXJlIHRoYXQg QUZURVIgd29ya3M6IGFkZCBuZXcgY29udGVudCB0byBwcmltYXJ5IGFuZCBtZW1vcml6ZQorIyBw cmltYXJ5J3MgbmV3IExTTiwgdGhlbiB3YWl0IGZvciBwcmltYXJ5J3MgTFNOIG9uIHN0YW5kYnku IFByb3ZlIHRoYXQgQUZURVIgaXMKKyMgYWJsZSB0byBzZXR1cCBhbiBpbmZpbml0ZSB3YWl0aW5n IGxvb3AgYW5kIGV4aXQgaXQgaWYgZ2l2ZW4gbm8gd2FpdCB0aW1lb3V0LgorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMg KGdlbmVyYXRlX3NlcmllcygxMSwgMjApKSIpOworbXkgJGxzbjEgPSAkbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5v ZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBRlRFUiAnJGxzbjEnIik7CisKKyMg R2V0IHRoZSBjdXJyZW50IExTTiBvbiBzdGFuZGJ5IGFuZCBtYWtlIHN1cmUgaXQncyB0aGUgc2Ft ZSBhcyBwcmltYXJ5J3MgTFNOCitteSAkbHNuX3N0YW5kYnkgPSAkbm9kZV9zdGFuZGJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSIpOwor bXkgJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjEnOjpwZ19s c24pIik7CitvaygkY29tcGFyZV9sc25zIGVxIDAsICJzdGFuZGJ5IHJlYWNoZWQgdGhlIHNhbWUg TFNOIGFzIHByaW1hcnkgQUZURVIiKTsKKworCisKKyMgQ2hlY2sgdGhhdCB0aW1lb3V0cyB3b3Jr IG9uIHRoZWlyIG93biBhbmQgbGV0IHVzIHdhaXQgZm9yIHNwZWNpZmllZCB0aW1lICgxcykKK215 ICRjdXJyZW50X3RpbWUgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBub3coKSIpOworbXkgJG9uZV9zZWNvbmQgPSAxMDAwOyAjIGluIG1pbGxpc2Vjb25kcwor bXkgJHN0YXJ0X3RpbWUgPSB0aW1lKCk7CisKKyMgTm93LCBjaGVjayB0aGF0IHRpbWVvdXRzIHdv cmsgYXMgZXhwZWN0ZWQgd2hlbiB3YWl0aW5nIGZvciBMU04KKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0 ZV9zZXJpZXMoMjEsIDMwKSkiKTsKK215ICRsc24yID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKK215ICRyZWFjaGVk X2xzbiA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBRlRFUiAnJGxz bjInIFdJVEhJTiAxIik7CitvaygkcmVhY2hlZF9sc24gZXEgImYiLCAiQUZURVIgZG9lc24ndCBy ZWFjaCBMU04gaWYgZ2l2ZW4gdG9vIGxpdHRsZSB3YWl0IHRpbWUiKTsKKworCisKKyMgV2UgbmVl ZCB0byBjaGVjayB0aGF0IFdBSVQgd29ya3MgZmluZSBpbnNpZGUgdHJhbnNhY3Rpb25zLiBGb3Ig dGhhdCwgbGV0J3MKKyMgZ2V0IHR3byBMU05zIHRoYXQgd2lsbCBjb3JyZXNwb25kIHRvIHR3byBk aWZmZXJlbnQgbWF4IHZhbHVlcyBpbiBvdXIgdGFibGUuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVf c2VyaWVzKDMxLCA0MCkpIik7CitteSAkbHNuMyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAo Z2VuZXJhdGVfc2VyaWVzKDQxLCA1MCkpIik7CitteSAkbHNuNCA9ICRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMg QmVmb3JlIHN0YXJ0aW5nIHRyYW5zYWN0aW9uLCBBRlRFUiB3aGljaCBlbnN1cmVzIGEgbWF4IHZh bHVlIG9mIDQwLgorIyBJbnNpZGUgdGhlIHRyYW5zYWN0aW9uLCBBRlRFUiB0aGF0IGVuc3VyZXMg YSBtYXggdmFsdWUgb2YgNTAuCisjIER1ZSB0byBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFELCB3ZSBzaG91bGQgTk9UIHNlZSB0aGUgbmV3IG1heCB2YWx1ZS4KK215ICRzdGFuZGJ5X3Jl c3VsdHMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQUZU RVIgJyRsc24zJzsKKwlCRUdJTiBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJM RSBSRUFEOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rlc3Q7CisJQUZURVIgJyRsc240JzsK KwlTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5X2xzbigpOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3 YWl0X3Rlc3Q7CisJQ09NTUlUOworXSk7CisKKyMgTWFrZSBzdXJlIHRoYXQgd2UgaW5kZWVkIHJl YWNoIHByaW1hcnkncyBsYXN0IExTTiBpbnNpZGUgdGhlIHRyYW5zYWN0aW9uLgorIyBGb3IgdGhh dCwgY2hlY2sgdGhhdCBjYWxsaW5nIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24gcmV0dXJuZWQgdGhh dCBMU04uCitteSAkbGFzdF9sc25fcmVhY2hlZCA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLyRsc240 LzsKK29rKCRsYXN0X2xzbl9yZWFjaGVkLCAiQUZURVIgd29ya3MgaW5zaWRlIGEgdHJhbnNhY3Rp b24iKTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGRvZXNuJ3QgYnJlYWsgYW5kIHNob3cg dXMgdGhlIG5ldyBtYXggdmFsdWUgYWZ0ZXIgQUZURVIuCisjIEZvciB0aGF0LCBtYWtlIHN1cmUg dGhhdCB0aGUgb2xkZXIgbWF4IHZhbHVlIGlzIHJlcGVhdGVkIHR3aWNlIGluIHRoZSByZXN1bHRz LgorbXkgJGNvdW50ID0gKCkgPSAkc3RhbmRieV9yZXN1bHRzID1+IC80MC9nOworb2soJGNvdW50 IGVxIDIsICJ0cmFuc2FjdGlvbiBpc29sYXRpb24gbGV2ZWwgZG9lc24ndCBnZXQgYnJva2VuIGR1 ZSB0byBBRlRFUiIpOworCiskbm9kZV9zdGFuZGJ5LT5zdG9wOworJG5vZGVfcHJpbWFyeS0+c3Rv cDsKK2RvbmVfdGVzdGluZygpOwo= --=_d47284fbfdc2b601d04ce0e631d5d7aa Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_classic_v5.patch Content-Disposition: attachment; filename=wait_classic_v5.patch; size=48230 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCA0YTQyOTk5YjE4Li42NTdhMjE3ZTI3IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCkBAIC0xODgsNiArMTg4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSB1cGRhdGUg ICAgICAgICAgICAgU1lTVEVNICJ1cGRhdGUuc2dtbCI+CiA8IUVOVElUWSB2YWN1dW0gICAgICAg ICAgICAgU1lTVEVNICJ2YWN1dW0uc2dtbCI+CiA8IUVOVElUWSB2YWx1ZXMgICAgICAgICAgICAg U1lTVEVNICJ2YWx1ZXMuc2dtbCI+Cis8IUVOVElUWSB3YWl0ICAgICAgICAgICAgICAgU1lTVEVN ICJ3YWl0LnNnbWwiPgogCiA8IS0tIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzIC0tPgogPCFF TlRJVFkgY2x1c3RlcmRiICAgICAgICAgIFNZU1RFTSAiY2x1c3RlcmRiLnNnbWwiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdp bi5zZ21sCmluZGV4IDAxNmIwMjE0ODcuLmIzYWYxNmMwOWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKQEAg LTIxLDEzICsyMSwyMSBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KLUJFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gXQorQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2Zvcl9ldmVudDwvcmVwbGFjZWFibGU+ CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0 aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJ T04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRF RCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBb IE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+d2FpdF9mb3JfZXZlbnQ8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKyAgICBX QUlUIEZPUiBbQU5ZIHwgQUxMXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXZlbnQ8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KKyAgICBM U04gbHNuX3ZhbHVlCisgICAgVElNRU9VVCBudW1iZXJfb2ZfbWlsbGlzZWNvbmRzCisgICAgdGlt ZXN0YW1wCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv c3RhcnRfdHJhbnNhY3Rpb24uc2dtbAppbmRleCA3NGNjZDdlMzQ1Li4xYjU0ZWQyMDg0IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9zdGFydF90cmFuc2FjdGlvbi5zZ21sCkBAIC0yMSwxMyArMjEsMjEgQEAg UG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+ Ci1TVEFSVCBUUkFOU0FDVElPTiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFu c2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCitTVEFSVCBUUkFOU0FDVElPTiBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNl YWJsZT4gWywgLi4uXSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2Zvcl9l dmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJh c2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJF QUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUg fCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9mb3JfZXZlbnQ8L3JlcGxhY2VhYmxlPiBp czo8L3BocmFzZT4KKyAgICBXQUlUIEZPUiBbQU5ZIHwgQUxMXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZXZlbnQ8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisKKzxwaHJhc2U+YW5kIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IGlzIG9uZSBv Zjo8L3BocmFzZT4KKyAgICBMU04gbHNuX3ZhbHVlCisgICAgVElNRU9VVCBudW1iZXJfb2ZfbWls bGlzZWNvbmRzCisgICAgdGltZXN0YW1wCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+ CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvd2FpdC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi93YWl0LnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjZj YWUzYWQ4NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvd2FpdC5zZ21sCkBA IC0wLDAgKzEsMTQ2IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL3dhaXQuc2dtbAorUG9zdGdy ZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtd2FpdCI+CisgPGlu ZGV4dGVybSB6b25lPSJzcWwtd2FpdCI+CisgIDxwcmltYXJ5PldBSVQgRk9SPC9wcmltYXJ5Pgor IDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPldBSVQgRk9SPC9y ZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZv PlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKwor IDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5XQUlUIEZPUjwvcmVmbmFtZT4KKyAgPHJlZnB1cnBv c2U+d2FpdCBmb3IgdGhlIHRhcmdldCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRvIGJlIHJlcGxh eWVkIG9yIGZvciBzcGVjaWZpZWQgdGltZSB0byBwYXNzPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFt ZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK1dBSVQgRk9SIFtBTlkgfCBB TExdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IFss IC4uLl0KKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXZl bnQ8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CisgICAgTFNOIHZhbHVlCisgICAg VElNRU9VVCBudW1iZXJfb2ZfbWlsbGlzZWNvbmRzCisgICAgdGltZXN0YW1wCisKK1dBSVQgRk9S IExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2Vh YmxlPicKK1dBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9u dW1iZXI8L3JlcGxhY2VhYmxlPicgVElNRU9VVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+d2FpdF90aW1lb3V0PC9yZXBsYWNlYWJsZT4KK1dBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2VhYmxlPicsIFRJTUVTVEFNUCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF90aW1lPC9yZXBsYWNlYWJsZT4KK1dB SVQgRk9SIFRJTUVTVEFNUCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF90aW1l PC9yZXBsYWNlYWJsZT4KK1dBSVQgRk9SIEFMTCBMU04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5sc25fbnVtYmVyPC9yZXBsYWNlYWJsZT4nIFRJTUVPVVQgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPndhaXRfdGltZW91dDwvcmVwbGFjZWFibGU+LCBUSU1FU1RBTVAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndhaXRfdGltZTwvcmVwbGFjZWFibGU+CitXQUlU IEZPUiBBTlkgTFNOICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNuX251bWJlcjwv cmVwbGFjZWFibGU+JywgVElNRVNUQU1QIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53 YWl0X3RpbWU8L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2Pgor CisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgor ICAgPGNvbW1hbmQ+V0FJVCBGT1I8L2NvbW1hbmQ+IHByb3ZpZGVzIGEgc2ltcGxlIGludGVycHJv Y2VzcyBjb21tdW5pY2F0aW9uCisgICBtZWNoYW5pc20gdG8gd2FpdCBmb3IgdGltZXN0YW1wLCB0 aW1lb3V0IG9yIHRoZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJlcgorICAgKDxhY3JvbnltPkxT TjwvYWNyb255bT4pIG9uIHN0YW5kYnkgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPgorICAgZGF0YWJhc2VzIHdpdGggbWFzdGVyLXN0YW5kYnkgYXN5bmNocm9ub3VzIHJl cGxpY2F0aW9uLiBXaGVuIHJ1biB3aXRoIHRoZQorICAgPHJlcGxhY2VhYmxlPkxTTjwvcmVwbGFj ZWFibGU+IG9wdGlvbiwgdGhlIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPgorICAgY29tbWFu ZCB3YWl0cyBmb3IgdGhlIHNwZWNpZmllZCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRvIGJlIHJl cGxheWVkLgorICAgSWYgbm8gdGltZXN0YW1wIG9yIHRpbWVvdXQgd2FzIHNwZWNpZmllZCwgd2Fp dCB0aW1lIGlzIHVubGltaXRlZC4KKyAgIFdhaXRpbmcgY2FuIGJlIGludGVycnVwdGVkIHVzaW5n IDxsaXRlcmFsPkN0cmwrQzwvbGl0ZXJhbD4sIG9yCisgICBieSBzaHV0dGluZyBkb3duIHRoZSA8 bGl0ZXJhbD5wb3N0Z3JlczwvbGl0ZXJhbD4gc2VydmVyLgorICA8L3BhcmE+CisKKyA8L3JlZnNl Y3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZh cmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPkxTTjwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBTcGVjaWZ5IHRoZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJl ciB0byB3YWl0IGZvci4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5USU1FT1VUIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X3RpbWVvdXQ8L3JlcGxhY2VhYmxlPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgTGltaXQgdGhlIHRpbWUgaW50ZXJ2 YWwgdG8gd2FpdCBmb3IgdGhlIExTTiB0byBiZSByZXBsYXllZC4KKyAgICAgIFRoZSBzcGVjaWZp ZWQgPHJlcGxhY2VhYmxlPndhaXRfdGltZW91dDwvcmVwbGFjZWFibGU+IG11c3QgYmUgYW4gaW50 ZWdlcgorICAgICAgYW5kIGlzIG1lYXN1cmVkIGluIG1pbGxpc2Vjb25kcy4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT5VTlRJTCBUSU1FU1RBTVAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPndhaXRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBMaW1pdCB0aGUgdGltZSB0byB3YWl0IGZvciB0aGUgTFNOIHRvIGJlIHJl cGxheWVkLgorICAgICAgVGhlIHNwZWNpZmllZCA8cmVwbGFjZWFibGU+d2FpdF90aW1lPC9yZXBs YWNlYWJsZT4gbXVzdCBiZSB0aW1lc3RhbXAuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0MT4K KworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAg IFJ1biA8bGl0ZXJhbD5XQUlUIEZPUjwvbGl0ZXJhbD4gZnJvbSA8YXBwbGljYXRpb24+cHNxbDwv YXBwbGljYXRpb24+LAorICAgbGltaXRpbmcgd2FpdCB0aW1lIHRvIDEwMDAwIG1pbGxpc2Vjb25k czoKKworPHNjcmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjA3QTZCMScgVElNRU9VVCAxMDAwMDsK K05PVElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3JlYXNlIHdhaXQgdGltZS4K K0xTTiByZWFjaGVkCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorPC9zY3JlZW4+CisgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFdhaXQgdW50aWwgdGhlIHNwZWNpZmllZCA8YWNyb255bT5M U048L2Fjcm9ueW0+IGlzIHJlcGxheWVkOgorPHNjcmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjA3 QTYxMSc7CitMU04gcmVhY2hlZAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKzwvc2NyZWVu PgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBMaW1pdCA8YWNyb255bT5MU048L2Fjcm9ueW0+ IHdhaXQgdGltZSB0byA1MDAwMDAgbWlsbGlzZWNvbmRzLAorICAgYW5kIHRoZW4gY2FuY2VsIHRo ZSBjb21tYW5kIGlmIDxhY3JvbnltPkxTTjwvYWNyb255bT4gd2FzIG5vdCByZWFjaGVkOgorPHNj cmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjBGRjc5MScgVElNRU9VVCA1MDAwMDA7CiteQ0NhbmNl bCByZXF1ZXN0IHNlbnQKK05PVElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3Jl YXNlIHdhaXQgdGltZS4KK0VSUk9SOiAgY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciBy ZXF1ZXN0CisgTFNOIHJlYWNoZWQKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCis8L3NjcmVl bj4KKzwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0 aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGVyZSBpcyBubyA8Y29tbWFuZD5XQUlU IEZPUjwvY29tbWFuZD4gc3RhdGVtZW50IGluIHRoZSBTUUwKKyAgIHN0YW5kYXJkLgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmZXJlbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKaW5kZXggYWE5NGY2 YWRmNi4uMDRlMTc2MjBkZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApAQCAtMjE2LDYgKzIxNiw3IEBACiAg ICAmdXBkYXRlOwogICAgJnZhY3V1bTsKICAgICZ2YWx1ZXM7CisgICAmd2FpdDsKIAogIDwvcmVm ZXJlbmNlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVj b3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4 IDFiNDhkNzE3MWEuLmQyNzEwNWI3YTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dyZWNvdmVyeS5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYmFja3VwL2Jhc2ViYWNr dXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJjb21tYW5k cy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgImNv bW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCkBAIC0xNzg0LDYgKzE3ODUsMTMgQEAgUGVyZm9ybVdhbFJlY292ZXJ5KHZvaWQpCiAJ CQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBJZiB3ZSByZXBsYXllZCBhbiBMU04gdGhh dCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwKKwkJCSAqIHNldCBsYXRjaGVzIGluIHNoYXJlZCBt ZW1vcnkgYXJyYXkgdG8gbm90aWZ5IHRoZSB3YWl0ZXIuCisJCQkgKi8KKwkJCWlmIChYTG9nUmVj b3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PSBHZXRNaW5XYWl0KCkpCisJCQkJV2Fp dFNldExhdGNoKFhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyKTsKKwogCQkJ LyogRWxzZSwgdHJ5IHRvIGZldGNoIHRoZSBuZXh0IFdBTCByZWNvcmQgKi8KIAkJCXJlY29yZCA9 IFJlYWRSZWNvcmQoeGxvZ3ByZWZldGNoZXIsIExPRywgZmFsc2UsIHJlcGxheVRMSSk7CiAJCX0g d2hpbGUgKHJlY29yZCAhPSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNDhmNzM0OGY5 MS4uZDhmNjk2NWQ4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKQEAgLTYxLDYgKzYxLDcgQEAgT0JK UyA9IFwKIAl2YWN1dW0ubyBcCiAJdmFjdXVtcGFyYWxsZWwubyBcCiAJdmFyaWFibGUubyBcCi0J dmlldy5vCisJdmlldy5vIFwKKwl3YWl0Lm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9i YWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24u YnVpbGQgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZAppbmRleCA2ZGQwMGE0YWJk Li4zZjA2ZGM1MzQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWls ZAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZApAQCAtNTAsNCArNTAsNSBA QCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICd2YWN1dW1wYXJhbGxlbC5jJywKICAgJ3Zh cmlhYmxlLmMnLAogICAndmlldy5jJywKKyAgJ3dhaXQuYycsCiApCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy93YWl0LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODNmMDY5YjhkYwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpAQCAtMCwwICsxLDQwMyBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdC5jCisgKgkgIEltcGxlbWVudHMgV0FJVCBG T1IsIHdoaWNoIGFsbG93cyB3YWl0aW5nIGZvciBldmVudHMgc3VjaCBhcworICoJICB0aW1lIHBh c3Npbmcgb3IgTFNOIGhhdmluZyBiZWVuIHJlcGxheWVkIG9uIHJlcGxpY2EuCisgKgorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjAsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZ2VudHMgb2YgUG9z dGdyZXNQcm8KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5k cy93YWl0LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSA8ZmxvYXQu aD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJw Z3N0YXQuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5j bHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9iYWNrZW5kaWQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvc3Bpbi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKKyNpbmNs dWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKKyNpbmNs dWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisKKy8qIEFkZCB0byAvIGRlbGV0ZSBmcm9tIHNoYXJl ZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2b2lkIEFkZEV2ZW50KFhMb2dSZWNQdHIgbHNuX3Rv X3dhaXQpOworc3RhdGljIHZvaWQgRGVsZXRlRXZlbnQodm9pZCk7CisKKy8qIFNoYXJlZCBtZW1v cnkgc3RydWN0dXJlICovCit0eXBlZGVmIHN0cnVjdAoreworCWludAkJCWJhY2tlbmRfbWF4aWQ7 CisJcGdfYXRvbWljX3VpbnQ2NAltaW5fbHNuOworCXNsb2NrX3QJCW11dGV4OworCVhMb2dSZWNQ dHIJd2FpdGVkX2xzbltGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBXYWl0U3RhdGU7CisKK3N0 YXRpYyB2b2xhdGlsZSBXYWl0U3RhdGUgKnN0YXRlOworCisvKiBBZGQgdGhlIGV2ZW50IG9mIHRo ZSBjdXJyZW50IGJhY2tlbmQgdG8gdGhlIHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2 b2lkCitBZGRFdmVudChYTG9nUmVjUHRyIGxzbl90b193YWl0KQoreworCVNwaW5Mb2NrQWNxdWly ZSgmc3RhdGUtPm11dGV4KTsKKwlpZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPCBNeUJhY2tlbmRJ ZCkKKwkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBNeUJhY2tlbmRJZDsKKworCXN0YXRlLT53YWl0 ZWRfbHNuW015QmFja2VuZElkXSA9IGxzbl90b193YWl0OworCisJaWYgKGxzbl90b193YWl0IDwg cGdfYXRvbWljX3JlYWRfdTY0KCZzdGF0ZS0+bWluX2xzbikpCisJCXBnX2F0b21pY193cml0ZV91 NjQoJnN0YXRlLT5taW5fbHNuLGxzbl90b193YWl0KTsKKwlTcGluTG9ja1JlbGVhc2UoJnN0YXRl LT5tdXRleCk7Cit9CisKKy8qCisgKiBEZWxldGUgZXZlbnQgb2YgdGhlIGN1cnJlbnQgYmFja2Vu ZCBmcm9tIHRoZSBzaGFyZWQgbWVtb3J5IGFycmF5LgorICoKKyAqIFRPRE86IENvbnNpZGVyIHN0 YXRlIGNsZWFudXAgb24gYmFja2VuZCBmYWlsdXJlLgorICogQ2hlY2s6CisgKiAxKSBub21hbHxz bWFydHxmYXN0fGltbWVkaWF0ZSBzdG9wCisgKiAyKSBTSUdLSUxMIGFuZCBTSUdURVJNCisgKi8K K3N0YXRpYyB2b2lkCitEZWxldGVFdmVudCh2b2lkKQoreworCWludAkJCWk7CisJWExvZ1JlY1B0 cglsc25fdG9fZGVsZXRlID0gc3RhdGUtPndhaXRlZF9sc25bTXlCYWNrZW5kSWRdOworCisJc3Rh dGUtPndhaXRlZF9sc25bTXlCYWNrZW5kSWRdID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwlTcGlu TG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisKKwkvKiBJZiB3ZSBuZWVkIHRvIGNob29zZSB0 aGUgbmV4dCBtaW5fbHNuLCB1cGRhdGUgc3RhdGUtPm1pbl9sc24gKi8KKwlpZiAocGdfYXRvbWlj X3JlYWRfdTY0KCZzdGF0ZS0+bWluX2xzbikgPT0gbHNuX3RvX2RlbGV0ZSkKKwl7CisJCXBnX2F0 b21pY193cml0ZV91NjQoJnN0YXRlLT5taW5fbHNuLFBHX1VJTlQ2NF9NQVgpOworCQlmb3IgKGkg PSAyOyBpIDw9IHN0YXRlLT5iYWNrZW5kX21heGlkOyBpKyspCisJCQlpZiAoc3RhdGUtPndhaXRl ZF9sc25baV0gIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYKKwkJCQlzdGF0ZS0+d2FpdGVkX2xzbltp XSA8IHBnX2F0b21pY19yZWFkX3U2NCgmc3RhdGUtPm1pbl9sc24pKQorCQkJCXBnX2F0b21pY193 cml0ZV91NjQoJnN0YXRlLT5taW5fbHNuLHN0YXRlLT53YWl0ZWRfbHNuW2ldKTsKKwl9CisKKwlp ZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPT0gTXlCYWNrZW5kSWQpCisJCWZvciAoaSA9IChNeUJh Y2tlbmRJZCk7IGkgPj0gMjsgaS0tKQorCQkJaWYgKHN0YXRlLT53YWl0ZWRfbHNuW2ldICE9IElu dmFsaWRYTG9nUmVjUHRyKQorCQkJeworCQkJCXN0YXRlLT5iYWNrZW5kX21heGlkID0gaTsKKwkJ CQlicmVhazsKKwkJCX0KKworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKK30KKwor LyoKKyAqIFJlcG9ydCBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgZm9yIFdh aXRTdGF0ZQorICovCitTaXplCitXYWl0U2htZW1TaXplKHZvaWQpCit7CisJU2l6ZQkJc2l6ZTsK KworCXNpemUgPSBvZmZzZXRvZihXYWl0U3RhdGUsIHdhaXRlZF9sc24pOworCXNpemUgPSBhZGRf c2l6ZShzaXplLCBtdWxfc2l6ZShNYXhCYWNrZW5kcyArIDEsIHNpemVvZihYTG9nUmVjUHRyKSkp OworCXJldHVybiBzaXplOworfQorCisvKiBJbml0IGFycmF5IG9mIGV2ZW50cyBpbiBzaGFyZWQg bWVtb3J5ICovCit2b2lkCitXYWl0U2htZW1Jbml0KHZvaWQpCit7CisJYm9vbAkJZm91bmQ7CisJ dWludDMyCQlpOworCisJc3RhdGUgPSAoV2FpdFN0YXRlICopIFNobWVtSW5pdFN0cnVjdCgicGdf d2FpdF9sc24iLAorCQkJCQkJCQkJCSAgV2FpdFNobWVtU2l6ZSgpLAorCQkJCQkJCQkJCSAgJmZv dW5kKTsKKwlpZiAoIWZvdW5kKQorCXsKKwkJU3BpbkxvY2tJbml0KCZzdGF0ZS0+bXV0ZXgpOwor CisJCWZvciAoaSA9IDA7IGkgPCAoTWF4QmFja2VuZHMgKyAxKTsgaSsrKQorCQkJc3RhdGUtPndh aXRlZF9sc25baV0gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCQlzdGF0ZS0+YmFja2VuZF9tYXhp ZCA9IDA7CisJCXBnX2F0b21pY19pbml0X3U2NCgmc3RhdGUtPm1pbl9sc24sUEdfVUlOVDY0X01B WCk7CisJfQorfQorCisvKiBTZXQgYWxsIGxhdGNoZXMgaW4gc2hhcmVkIG1lbW9yeSB0byBzaWdu YWwgdGhhdCBuZXcgTFNOIGhhcyBiZWVuIHJlcGxheWVkICovCit2b2lkCitXYWl0U2V0TGF0Y2go WExvZ1JlY1B0ciBjdXJfbHNuKQoreworCXVpbnQzMgkJaTsKKwlpbnQgCQliYWNrZW5kX21heGlk OworCVBHUFJPQwkgICAqYmFja2VuZDsKKworCVNwaW5Mb2NrQWNxdWlyZSgmc3RhdGUtPm11dGV4 KTsKKwliYWNrZW5kX21heGlkID0gc3RhdGUtPmJhY2tlbmRfbWF4aWQ7CisJU3BpbkxvY2tSZWxl YXNlKCZzdGF0ZS0+bXV0ZXgpOworCisJZm9yIChpID0gMjsgaSA8PSBiYWNrZW5kX21heGlkOyBp KyspCisJeworCQliYWNrZW5kID0gQmFja2VuZElkR2V0UHJvYyhpKTsKKwkJaWYgKHN0YXRlLT53 YWl0ZWRfbHNuW2ldICE9IDApCisJCXsKKwkJCWlmIChiYWNrZW5kICYmIHN0YXRlLT53YWl0ZWRf bHNuW2ldIDw9IGN1cl9sc24pCisJCQkJU2V0TGF0Y2goJmJhY2tlbmQtPnByb2NMYXRjaCk7CisJ CX0KKwl9Cit9CisKKy8qIEdldCBtaW5pbWFsIExTTiB0aGF0IHdpbGwgYmUgbmV4dCAqLworWExv Z1JlY1B0cgorR2V0TWluV2FpdCh2b2lkKQoreworCXJldHVybiBwZ19hdG9taWNfcmVhZF91NjQo JnN0YXRlLT5taW5fbHNuKTsKK30KKworLyoKKyAqIE9uIFdBSVQgdXNlIE15TGF0Y2ggdG8gd2Fp dCB0aWxsIExTTiBpcyByZXBsYXllZCwKKyAqIHBvc3RtYXN0ZXIgZGllcyBvciB0aW1lb3V0IGhh cHBlbnMuCisgKi8KK2ludAorV2FpdFV0aWxpdHkoWExvZ1JlY1B0ciBsc24sIGNvbnN0IGZsb2F0 OCBzZWNzKQoreworCVhMb2dSZWNQdHIJY3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVM TCk7CisJaW50CQkJbGF0Y2hfZXZlbnRzOworCWZsb2F0OAkJZW5kdGltZTsKKwl1aW50CQlyZXMg PSAwOworCisJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwl7CisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSks CisJCQkJZXJybXNnKCJXb3JrIG9ubHkgaW4gc3RhbmRieSBtb2RlIikpKTsKKwkJcmV0dXJuIGZh bHNlOworCX0KKworI2RlZmluZSBHZXROb3dGbG9hdCgpCSgoZmxvYXQ4KSBHZXRDdXJyZW50VGlt ZXN0YW1wKCkgLyAxMDAwMDAwLjApCisJZW5kdGltZSA9IEdldE5vd0Zsb2F0KCkgKyBzZWNzOwor CisJbGF0Y2hfZXZlbnRzID0gV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CisKKwlp ZiAobHNuICE9IEludmFsaWRYTG9nUmVjUHRyKQorCXsKKwkJLyogSnVzdCBjaGVjayBpZiB3ZSBy ZWFjaGVkICovCisJCWlmIChsc24gPCBjdXJfbHNuIHx8IHNlY3MgPCAwKQorCQkJcmV0dXJuIChs c24gPCBjdXJfbHNuKTsKKworCQlsYXRjaF9ldmVudHMgfD0gV0xfTEFUQ0hfU0VUOworCQlBZGRF dmVudChsc24pOworCX0KKwllbHNlIGlmICghc2VjcykKKwkJcmV0dXJuIDE7CisKKwlmb3IgKDs7 KQorCXsKKwkJaW50CQkJcmM7CisJCWZsb2F0OAkJZGVsYXkgPSAwOworCQlsb25nCQlkZWxheV9t czsKKworCQkvKiBJZiBMU04gaGFzIGJlZW4gcmVwbGF5ZWQgKi8KKwkJaWYgKGxzbiAmJiBsc24g PD0gY3VyX2xzbikKKwkJCWJyZWFrOworCisJCWlmIChzZWNzID4gMCkKKwkJCWRlbGF5ID0gZW5k dGltZSAtIEdldE5vd0Zsb2F0KCk7CisJCWVsc2UgaWYgKHNlY3MgPT0gMCkKKwkJCS8qCisJCQkq IElmIHdlIHdhaXQgZm9yZXZlciwgdGhlbiAxIG1pbnV0ZSB0aW1lb3V0IHRvIGNoZWNrCisJCQkq IGZvciBJbnRlcnVwdHMuCisJCQkqLworCQkJZGVsYXkgPSA2MDsKKworCQlpZiAoZGVsYXkgPiAw LjApCisJCQlkZWxheV9tcyA9IChsb25nKSBjZWlsKGRlbGF5ICogMTAwMC4wKTsKKwkJZWxzZQor CQkJYnJlYWs7CisKKwkJLyoKKwkJICogSWYgcmVjZWl2ZWQgYW4gaW50ZXJydXB0aW9uIGZyb20g Q0hFQ0tfRk9SX0lOVEVSUlVQVFMsCisJCSAqIHRoZW4gZGVsZXRlIHRoZSBjdXJyZW50IGV2ZW50 IGZyb20gYXJyYXkuCisJCSAqLworCQlpZiAoSW50ZXJydXB0UGVuZGluZykKKwkJeworCQkJaWYg KGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJCQlEZWxldGVFdmVudCgpOworCQkJUHJvY2Vz c0ludGVycnVwdHMoKTsKKwkJfQorCisJCS8qIElmIHBvc3RtYXN0ZXIgZGllcywgZmluaXNoIGlt bWVkaWF0ZWx5ICovCisJCWlmICghUG9zdG1hc3RlcklzQWxpdmUoKSkKKwkJCWJyZWFrOworCisJ CXJjID0gV2FpdExhdGNoKE15TGF0Y2gsIGxhdGNoX2V2ZW50cywgZGVsYXlfbXMsCisJCQkJCSAg IFdBSVRfRVZFTlRfQ0xJRU5UX1JFQUQpOworCisJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJ CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJaWYgKGxzbiAmJiByYyAmIFdMX0xBVENIX1NFVCkK KwkJCWN1cl9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCX0KKworCWlmIChsc24g IT0gSW52YWxpZFhMb2dSZWNQdHIpCisJCURlbGV0ZUV2ZW50KCk7CisKKwlpZiAobHNuICE9IElu dmFsaWRYTG9nUmVjUHRyICYmIGxzbiA+IGN1cl9sc24pCisJCWVsb2coTk9USUNFLCJMU04gaXMg bm90IHJlYWNoZWQuIFRyeSB0byBpbmNyZWFzZSB3YWl0IHRpbWUuIik7CisJZWxzZQorCQlyZXMg PSAxOworCisJcmV0dXJuIHJlczsKK30KKworLyoKKyAqIEdldCB0aGUgYW1vdW50IG9mIHNlY29u ZHMgbGVmdCB0aWxsIHRoZSBzcGVjaWZpZWQgdGltZS4KKyAqLworZmxvYXQ4CitXYWl0VGltZVJl c29sdmUoQ29uc3QgKnRpbWUpCit7CisJaW50CQkJcmV0OworCWZsb2F0OAkJdmFsOworCU9pZAkJ CXR5cGVzW10gPSB7IHRpbWUtPmNvbnN0dHlwZSB9OworCURhdHVtCQl2YWx1ZXNbXSA9IHsgdGlt ZS0+Y29uc3R2YWx1ZSB9OworCWNoYXIJCW51bGxzW10gPSB7ICIgIiB9OworCURhdHVtCQlyZXN1 bHQ7CisJYm9vbAkJaXNudWxsOworCisJU1BJX2Nvbm5lY3QoKTsKKworCWlmICh0aW1lLT5jb25z dHR5cGUgPT0gMTA4MykKKwkJcmV0ID0gU1BJX2V4ZWN1dGVfd2l0aF9hcmdzKCJzZWxlY3QgZXh0 cmFjdCAoZXBvY2ggZnJvbSAoJDEgLSBub3coKTo6dGltZSkpIiwKKwkJCQkJCQkJCTEsIHR5cGVz LCB2YWx1ZXMsIG51bGxzLCB0cnVlLCAwKTsKKwllbHNlIGlmICh0aW1lLT5jb25zdHR5cGUgPT0g MTI2NikKKwkJcmV0ID0gU1BJX2V4ZWN1dGVfd2l0aF9hcmdzKCJzZWxlY3QgZXh0cmFjdCAoZXBv Y2ggZnJvbSAodGltZXpvbmUoJ1VUQycsJDEpOjp0aW1lIC0gdGltZXpvbmUoJ1VUQycsIG5vdygp Ojp0aW1ldHopOjp0aW1lKSkiLAorCQkJCQkJCQkJMSwgdHlwZXMsIHZhbHVlcywgbnVsbHMsIHRy dWUsIDApOworCWVsc2UKKwkJcmV0ID0gU1BJX2V4ZWN1dGVfd2l0aF9hcmdzKCJzZWxlY3QgZXh0 cmFjdCAoZXBvY2ggZnJvbSAoJDEgLSBub3coKSkpIiwKKwkJCQkJCQkJCTEsIHR5cGVzLCB2YWx1 ZXMsIG51bGxzLCB0cnVlLCAwKTsKKworCUFzc2VydChyZXQgPj0gMCk7CisJcmVzdWx0ID0gU1BJ X2dldGJpbnZhbChTUElfdHVwdGFibGUtPnZhbHNbMF0sCisJCQkJCQkgICBTUElfdHVwdGFibGUt PnR1cGRlc2MsCisJCQkJCQkgICAxLCAmaXNudWxsKTsKKworCUFzc2VydCghaXNudWxsKTsKKwl2 YWwgPSBEYXR1bUdldEZsb2F0OChyZXN1bHQpOworCisJZWxvZyhJTkZPLCAidGltZTogJWYiLCB2 YWwpOworCisJU1BJX2ZpbmlzaCgpOworCXJldHVybiB2YWw7Cit9CisKKy8qIEltcGxlbWVudGF0 aW9uIG9mIFdBSVQgRk9SICovCitpbnQKK1dhaXRNYWluKFdhaXRTdG10ICpzdG10LCBEZXN0UmVj ZWl2ZXIgKmRlc3QpCit7CisJTGlzdENlbGwgICAqZXZlbnRzOworCVR1cGxlRGVzYwl0dXBkZXNj OworCVR1cE91dHB1dFN0YXRlICp0c3RhdGU7CisJZmxvYXQ4CQlkZWxheSA9IDA7CisJZmxvYXQ4 CQlmaW5hbF9kZWxheSA9IDA7CisJWExvZ1JlY1B0cglsc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsK KwlYTG9nUmVjUHRyCWZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCWJvb2wJCWhhc19s c24gPSBmYWxzZTsKKwlib29sCQl3YWl0X2ZvcmV2ZXIgPSB0cnVlOworCWludAkJCXJlcyA9IDA7 CisKKwlpZiAoc3RtdC0+c3RyYXRlZ3kgPT0gV0FJVF9GT1JfQU5ZKQorCXsKKwkJLyogUHJlcGFy ZSB0byBmaW5kIG1pbmltdW0gTFNOIGFuZCBkZWxheSAqLworCQlmaW5hbF9kZWxheSA9IERCTF9N QVg7CisJCWZpbmFsX2xzbiA9IFBHX1VJTlQ2NF9NQVg7CisJfQorCisJLyogRXh0cmFjdCBvcHRp b25zIGZyb20gdGhlIHN0YXRlbWVudCBub2RlIHRyZWUgKi8KKwlmb3JlYWNoKGV2ZW50cywgc3Rt dC0+ZXZlbnRzKQorCXsKKwkJV2FpdFN0bXQgICAqZXZlbnQgPSAoV2FpdFN0bXQgKikgbGZpcnN0 KGV2ZW50cyk7CisKKwkJLyogTFNOIHRvIHdhaXQgZm9yICovCisJCWlmIChldmVudC0+bHNuKQor CQl7CisJCQloYXNfbHNuID0gdHJ1ZTsKKwkJCWxzbiA9IERhdHVtR2V0TFNOKAorCQkJCQkJRGly ZWN0RnVuY3Rpb25DYWxsMShwZ19sc25faW4sCisJCQkJCQkJQ1N0cmluZ0dldERhdHVtKGV2ZW50 LT5sc24pKSk7CisKKwkJCS8qCisJCQkgKiBXaGVuIHdhaXRpbmcgZm9yIEFMTCwgc2VsZWN0IG1h eCBMU04gdG8gd2FpdCBmb3IuCisJCQkgKiBXaGVuIHdhaXRpbmcgZm9yIEFOWSwgc2VsZWN0IG1p biBMU04gdG8gd2FpdCBmb3IuCisJCQkgKi8KKwkJCWlmICgoc3RtdC0+c3RyYXRlZ3kgPT0gV0FJ VF9GT1JfQUxMICYmIGZpbmFsX2xzbiA8PSBsc24pIHx8CisJCQkJKHN0bXQtPnN0cmF0ZWd5ID09 IFdBSVRfRk9SX0FOWSAmJiBmaW5hbF9sc24gPiBsc24pKQorCQkJeworCQkJCWZpbmFsX2xzbiA9 IGxzbjsKKwkJCX0KKwkJfQorCisJCS8qIFRpbWUgZGVsYXkgdG8gd2FpdCBmb3IgKi8KKwkJaWYg KGV2ZW50LT50aW1lIHx8IGV2ZW50LT5kZWxheSkKKwkJeworCQkJd2FpdF9mb3JldmVyID0gZmFs c2U7CisKKwkJCWlmIChldmVudC0+ZGVsYXkpCisJCQkJZGVsYXkgPSBldmVudC0+ZGVsYXkgLyAx MDAwLjA7CisKKwkJCWlmIChldmVudC0+dGltZSkKKwkJCXsKKwkJCQlDb25zdCAqdGltZSA9IChD b25zdCAqKSBldmVudC0+dGltZTsKKwkJCQlkZWxheSA9IFdhaXRUaW1lUmVzb2x2ZSh0aW1lKTsK KwkJCX0KKworCQkJLyoKKwkJCSAqIFdoZW4gd2FpdGluZyBmb3IgQUxMLCBzZWxlY3QgbWF4IGRl bGF5IHRvIHdhaXQgZm9yLgorCQkJICogV2hlbiB3YWl0aW5nIGZvciBBTlksIHNlbGVjdCBtaW4g ZGVsYXkgdG8gd2FpdCBmb3IuCisJCQkgKi8KKwkJCWlmICgoc3RtdC0+c3RyYXRlZ3kgPT0gV0FJ VF9GT1JfQUxMICYmIGZpbmFsX2RlbGF5IDw9IGRlbGF5KSB8fAorCQkJCShzdG10LT5zdHJhdGVn eSA9PSBXQUlUX0ZPUl9BTlkgJiYgZmluYWxfZGVsYXkgPiBkZWxheSkpCisJCQl7CisJCQkJZmlu YWxfZGVsYXkgPSBkZWxheTsKKwkJCX0KKwkJfQorCX0KKwlpZiAod2FpdF9mb3JldmVyKQorCQlm aW5hbF9kZWxheSA9IDA7CisJaWYgKCFoYXNfbHNuKQorCQlmaW5hbF9sc24gPSBJbnZhbGlkWExv Z1JlY1B0cjsKKworCXJlcyA9IFdhaXRVdGlsaXR5KGZpbmFsX2xzbiwgZmluYWxfZGVsYXkpOwor CisJLyogTmVlZCBhIHR1cGxlIGRlc2NyaXB0b3IgcmVwcmVzZW50aW5nIGEgc2luZ2xlIFRFWFQg Y29sdW1uICovCisJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKDEpOworCVR1cGxl RGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgIkxTTiByZWFjaGVkIiwgVEVY VE9JRCwgLTEsIDApOworCS8qIFByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVwbGVzICovCisJ dHN0YXRlID0gYmVnaW5fdHVwX291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2MsICZUVFNPcHNN aW5pbWFsVHVwbGUpOworCisJLyogU2VuZCBpdCAqLworCWRvX3RleHRfb3V0cHV0X29uZWxpbmUo dHN0YXRlLCByZXM/InQiOiJmIik7CisJZW5kX3R1cF9vdXRwdXQodHN0YXRlKTsKKwlyZXR1cm4g cmVzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggMDZmYzhjZTk4Yi4uNTFkZTQ4NzQzMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvYW5hbHl6ZS5jCkBAIC04NSw2ICs4NSw3IEBAIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3Jt Q3JlYXRlVGFibGVBc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCSBDcmVhdGVU YWJsZUFzU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUNhbGxTdG10KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJQ2FsbFN0bXQgKnN0bXQpOworc3RhdGljIHZvaWQgdHJh bnNmb3JtV2FpdEZvclN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3RtdCk7CiBz dGF0aWMgdm9pZCB0cmFuc2Zvcm1Mb2NraW5nQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUXVl cnkgKnFyeSwKIAkJCQkJCQkJICAgTG9ja2luZ0NsYXVzZSAqbGMsIGJvb2wgcHVzaGVkRG93bik7 CiAjaWZkZWYgUkFXX0VYUFJFU1NJT05fQ09WRVJBR0VfVEVTVApAQCAtNDA1LDcgKzQwNiwyMSBA QCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKQogCQkJ cmVzdWx0ID0gdHJhbnNmb3JtQ2FsbFN0bXQocHN0YXRlLAogCQkJCQkJCQkJICAgKENhbGxTdG10 ICopIHBhcnNlVHJlZSk7CiAJCQlicmVhazsKLQorCQljYXNlIFRfV2FpdFN0bXQ6CisJCQl0cmFu c2Zvcm1XYWl0Rm9yU3RtdChwc3RhdGUsIChXYWl0U3RtdCAqKSBwYXJzZVRyZWUpOworCQkJcmVz dWx0ID0gbWFrZU5vZGUoUXVlcnkpOworCQkJcmVzdWx0LT5jb21tYW5kVHlwZSA9IENNRF9VVElM SVRZOworCQkJcmVzdWx0LT51dGlsaXR5U3RtdCA9IChOb2RlICopIHBhcnNlVHJlZTsKKwkJCWJy ZWFrOworCQljYXNlIFRfVHJhbnNhY3Rpb25TdG10OgorCQkJeworCQkJCVRyYW5zYWN0aW9uU3Rt dCAqc3RtdCA9IChUcmFuc2FjdGlvblN0bXQgKikgcGFyc2VUcmVlOworCQkJCWlmICgoc3RtdC0+ a2luZCA9PSBUUkFOU19TVE1UX0JFR0lOIHx8CisJCQkJCQlzdG10LT5raW5kID09IFRSQU5TX1NU TVRfU1RBUlQpICYmIHN0bXQtPndhaXQpCisJCQkJCXRyYW5zZm9ybVdhaXRGb3JTdG10KHBzdGF0 ZSwgKFdhaXRTdG10ICopIHN0bXQtPndhaXQpOworCQkJfQorCQkJLyogbm8gYnJlYWsgaGVyZSAt IHdlIHdhbnQgdG8gZmFsbCB0aHJvdWdoIHRvIHRoZSBkZWZhdWx0ICovCisJCQkvKiBGQUxMVEhS T1VHSCAqLwogCQlkZWZhdWx0OgogCiAJCQkvKgpAQCAtMzU1OSw2ICszNTc0LDIzIEBAIGFwcGx5 TG9ja2luZ0NsYXVzZShRdWVyeSAqcXJ5LCBJbmRleCBydGluZGV4LAogCXFyeS0+cm93TWFya3Mg PSBsYXBwZW5kKHFyeS0+cm93TWFya3MsIHJjKTsKIH0KIAorLyoKKyAqIHRyYW5zZm9ybVdhaXRG b3JTdG10IC0KKyAqCXRyYW5zZm9ybSB0aGUgV0FJVCBGT1IgY2xhdXNlIG9mIHRoZSBCRUdJTiBz dGF0ZW1lbnQKKyAqCXRyYW5zZm9ybSB0aGUgV0FJVCBGT1Igc3RhdGVtZW50IChUT0RPOiByZW1v dmUgdGhpcyBsaW5lIGlmIHdlIGRvbid0IGtlZXAgaXQpCisgKi8KK3N0YXRpYyB2b2lkCit0cmFu c2Zvcm1XYWl0Rm9yU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFdhaXRTdG10ICpzdG10KQorewor CUxpc3RDZWxsICAgKmV2ZW50czsKKworCWZvcmVhY2goZXZlbnRzLCBzdG10LT5ldmVudHMpCisJ eworCQlXYWl0U3RtdCAgICpldmVudCA9IChXYWl0U3RtdCAqKSBsZmlyc3QoZXZlbnRzKTsKKwkJ ZXZlbnQtPnRpbWUgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgZXZlbnQtPnRpbWUsIEVYUFJfS0lO RF9PVEhFUik7CisJfQorfQorCiAvKgogICogQ292ZXJhZ2UgdGVzdGluZyBmb3IgcmF3X2V4cHJl c3Npb25fdHJlZV93YWxrZXIoKS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAzNDYwZmVhNTZiLi4zNDNl NWJhODU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogCQlTZWNMYWJlbFN0bXQgU2VsZWN0U3RtdCBUcmFuc2FjdGlvblN0bXQgVHJhbnNh Y3Rpb25TdG10TGVnYWN5IFRydW5jYXRlU3RtdAogCQlVbmxpc3RlblN0bXQgVXBkYXRlU3RtdCBW YWN1dW1TdG10CiAJCVZhcmlhYmxlUmVzZXRTdG10IFZhcmlhYmxlU2V0U3RtdCBWYXJpYWJsZVNo b3dTdG10Ci0JCVZpZXdTdG10IENoZWNrUG9pbnRTdG10IENyZWF0ZUNvbnZlcnNpb25TdG10CisJ CVZpZXdTdG10IFdhaXRTdG10IENoZWNrUG9pbnRTdG10IENyZWF0ZUNvbnZlcnNpb25TdG10CiAJ CURlYWxsb2NhdGVTdG10IFByZXBhcmVTdG10IEV4ZWN1dGVTdG10CiAJCURyb3BPd25lZFN0bXQg UmVhc3NpZ25Pd25lZFN0bXQKIAkJQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10IEFsdGVyVFNEaWN0 aW9uYXJ5U3RtdApAQCAtNTM3LDcgKzUzNyw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAl dHlwZSA8bm9kZT4JY2FzZV9leHByIGNhc2VfYXJnIHdoZW5fY2xhdXNlIGNhc2VfZGVmYXVsdAog JXR5cGUgPGxpc3Q+CXdoZW5fY2xhdXNlX2xpc3QKICV0eXBlIDxub2RlPglvcHRfc2VhcmNoX2Ns YXVzZSBvcHRfY3ljbGVfY2xhdXNlCi0ldHlwZSA8aXZhbD4Jc3ViX3R5cGUgb3B0X21hdGVyaWFs aXplZAorJXR5cGUgPGl2YWw+CXN1Yl90eXBlIHdhaXRfc3RyYXRlZ3kgb3B0X21hdGVyaWFsaXpl ZAogJXR5cGUgPG5vZGU+CU51bWVyaWNPbmx5CiAldHlwZSA8bGlzdD4JTnVtZXJpY09ubHlfbGlz dAogJXR5cGUgPGFsaWFzPglhbGlhc19jbGF1c2Ugb3B0X2FsaWFzX2NsYXVzZSBvcHRfYWxpYXNf Y2xhdXNlX2Zvcl9qb2luX3VzaW5nCkBAIC02NDUsNiArNjQ1LDggQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKICV0eXBlIDxwYXJ0Ym91bmRzcGVjPiBQYXJ0aXRpb25Cb3VuZFNwZWMKICV0eXBl IDxsaXN0PgkJaGFzaF9wYXJ0Ym91bmQKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9l bGVtCisldHlwZSA8bGlzdD4JCXdhaXRfbGlzdAorJXR5cGUgPG5vZGU+CQlXYWl0RXZlbnQgd2Fp dF9mb3IKIAogJXR5cGUgPG5vZGU+CWpzb25fZm9ybWF0X2NsYXVzZQogCQkJCWpzb25fZm9ybWF0 X2NsYXVzZV9vcHQKQEAgLTczMCw3ICs3MzIsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2 ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwog CiAJTEFCRUwgTEFOR1VBR0UgTEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCiAJTEVBRElORyBMRUFL UFJPT0YgTEVBU1QgTEVGVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCi0JTE9D QUxUSU1FIExPQ0FMVElNRVNUQU1QIExPQ0FUSU9OIExPQ0tfUCBMT0NLRUQgTE9HR0VECisJTE9D QUxUSU1FIExPQ0FMVElNRVNUQU1QIExPQ0FUSU9OIExPQ0tfUCBMT0NLRUQgTE9HR0VEIExTTgog CiAJTUFQUElORyBNQVRDSCBNQVRDSEVEIE1BVEVSSUFMSVpFRCBNQVhWQUxVRSBNRVJHRSBNRVRI T0QKIAlNSU5VVEVfUCBNSU5WQUxVRSBNT0RFIE1PTlRIX1AgTU9WRQpAQCAtNzY0LDcgKzc2Niw3 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBM aXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJU1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQ T1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBTWVNURU1fVVNFUgogCiAJVEFCTEUgVEFCTEVT IFRBQkxFU0FNUExFIFRBQkxFU1BBQ0UgVEVNUCBURU1QTEFURSBURU1QT1JBUlkgVEVYVF9QIFRI RU4KLQlUSUVTIFRJTUUgVElNRVNUQU1QIFRPIFRSQUlMSU5HIFRSQU5TQUNUSU9OIFRSQU5TRk9S TQorCVRJRVMgVElNRSBUSU1FT1VUIFRJTUVTVEFNUCBUTyBUUkFJTElORyBUUkFOU0FDVElPTiBU UkFOU0ZPUk0KIAlUUkVBVCBUUklHR0VSIFRSSU0gVFJVRV9QCiAJVFJVTkNBVEUgVFJVU1RFRCBU WVBFX1AgVFlQRVNfUAogCkBAIC03NzQsNyArNzc2LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAlWQUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNI QVIgVkFSSUFESUMgVkFSWUlORwogCVZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJ TEUKIAotCVdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVyBXSVRIIFdJVEhJTiBXSVRIT1VU IFdPUksgV1JBUFBFUiBXUklURQorCVdBSVQgV0hFTiBXSEVSRSBXSElURVNQQUNFX1AgV0lORE9X CisJV0lUSCBXSVRISU4gV0lUSE9VVCBXT1JLIFdSQVBQRVIgV1JJVEUKIAogCVhNTF9QIFhNTEFU VFJJQlVURVMgWE1MQ09OQ0FUIFhNTEVMRU1FTlQgWE1MRVhJU1RTIFhNTEZPUkVTVCBYTUxOQU1F U1BBQ0VTCiAJWE1MUEFSU0UgWE1MUEkgWE1MUk9PVCBYTUxTRVJJQUxJWkUgWE1MVEFCTEUKQEAg LTExMDMsNiArMTEwNiw3IEBAIHN0bXQ6CiAJCQl8IFZhcmlhYmxlU2V0U3RtdAogCQkJfCBWYXJp YWJsZVNob3dTdG10CiAJCQl8IFZpZXdTdG10CisJCQl8IFdhaXRTdG10CiAJCQl8IC8qRU1QVFkq LwogCQkJCXsgJCQgPSBOVUxMOyB9CiAJCTsKQEAgLTEwOTI3LDEyICsxMDkzMSwxMyBAQCBUcmFu c2FjdGlvblN0bXQ6CiAJCQkJCW4tPmxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gKE5vZGUgKikg bjsKIAkJCQl9Ci0JCQl8IFNUQVJUIFRSQU5TQUNUSU9OIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9v cl9lbXB0eQorCQkJfCBTVEFSVCBUUkFOU0FDVElPTiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3Jf ZW1wdHkgd2FpdF9mb3IKIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2Rl KFRyYW5zYWN0aW9uU3RtdCk7CiAKIAkJCQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfU1RBUlQ7CiAJ CQkJCW4tPm9wdGlvbnMgPSAkMzsKKwkJCQkJbi0+d2FpdCA9ICQ0OwogCQkJCQluLT5sb2NhdGlv biA9IC0xOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTEwMzEsMTIgKzExMDM2 LDEzIEBAIFRyYW5zYWN0aW9uU3RtdDoKIAkJOwogCiBUcmFuc2FjdGlvblN0bXRMZWdhY3k6Ci0J CQlCRUdJTl9QIG9wdF90cmFuc2FjdGlvbiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkK KwkJCUJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0 eSB3YWl0X2ZvcgogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoVHJh bnNhY3Rpb25TdG10KTsKIAogCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9CRUdJTjsKIAkJCQkJ bi0+b3B0aW9ucyA9ICQzOworCQkJCQluLT53YWl0ID0gJDQ7CiAJCQkJCW4tPmxvY2F0aW9uID0g LTE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xNTg2OCw2ICsxNTg3NCw3NCBA QCB4bWxfcGFzc2luZ19tZWNoOgogCQkJfCBCWSBWQUxVRV9QCiAJCTsKIAorLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJCQkJV0FJVCBGT1IgPGV2ZW50PiBbLCA8ZXZl bnQ+IC4uLl0KKyAqCQkJCWV2ZW50IGlzIG9uZSBvZjoKKyAqCQkJCQlMU04gdmFsdWUKKyAqCQkJ CQlUSU1FT1VUIGRlbGF5CisgKgkJCQkJdGltZXN0YW1wCisgKgorICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworV2FpdFN0bXQ6CisJCQlXQUlUIEZPUiB3YWl0X3N0cmF0ZWd5IHdhaXRfbGlzdAorCQkJ CXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJCW4tPnN0cmF0 ZWd5ID0gJDM7CisJCQkJCW4tPmV2ZW50cyA9ICQ0OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CisJCQk7Cit3YWl0X2ZvcjoKKwkJCVdBSVQgRk9SIHdhaXRfc3RyYXRlZ3kgd2FpdF9saXN0 CisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VOb2RlKFdhaXRTdG10KTsKKwkJCQkJbi0+ c3RyYXRlZ3kgPSAkMzsKKwkJCQkJbi0+ZXZlbnRzID0gJDQ7CisJCQkJCSQkID0gKE5vZGUgKilu OworCQkJCX0KKwkJCXwgLyogRU1QVFkgKi8JCXsgJCQgPSBOVUxMOyB9OworCit3YWl0X3N0cmF0 ZWd5OgorCQkJQUxMCQkJCQl7ICQkID0gV0FJVF9GT1JfQUxMOyB9CisJCQl8IEFOWQkJCQl7ICQk ID0gV0FJVF9GT1JfQU5ZOyB9CisJCQl8IC8qIEVNUFRZICovCQl7ICQkID0gV0FJVF9GT1JfQUxM OyB9CisJCTsKKword2FpdF9saXN0OgorCQkJV2FpdEV2ZW50CQkJCQl7ICQkID0gbGlzdF9tYWtl MSgkMSk7IH0KKwkJCXwgd2FpdF9saXN0ICcsJyBXYWl0RXZlbnQJeyAkJCA9IGxhcHBlbmQoJDEs ICQzKTsgfQorCQkJfCB3YWl0X2xpc3QgV2FpdEV2ZW50CQl7ICQkID0gbGFwcGVuZCgkMSwgJDIp OyB9CisJCTsKKworV2FpdEV2ZW50OgorCQkJTFNOIFNjb25zdAorCQkJCXsKKwkJCQkJV2FpdFN0 bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJCW4tPmxzbiA9ICQyOworCQkJCQluLT5k ZWxheSA9IDA7CisJCQkJCW4tPnRpbWUgPSBOVUxMOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CisJCQl8IFRJTUVPVVQgSWNvbnN0CisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VO b2RlKFdhaXRTdG10KTsKKwkJCQkJbi0+bHNuID0gTlVMTDsKKwkJCQkJbi0+ZGVsYXkgPSAkMjsK KwkJCQkJbi0+dGltZSA9IE5VTEw7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwg Q29uc3REYXRldGltZSBTY29uc3QKKwkJCQl7CisJCQkJCVdhaXRTdG10ICpuID0gbWFrZU5vZGUo V2FpdFN0bXQpOworCQkJCQluLT5sc24gPSBOVUxMOworCQkJCQluLT5kZWxheSA9IDA7CisJCQkJ CW4tPnRpbWUgPSBtYWtlU3RyaW5nQ29uc3RDYXN0KCQyLCBAMiwgJDEpOworCQkJCQkkJCA9IChO b2RlICopbjsKKwkJCQl9CisJCQk7CisKIAogLyoKICAqIEFnZ3JlZ2F0ZSBkZWNvcmF0aW9uIGNs YXVzZXMKQEAgLTE3MjcyLDYgKzE3MzQ2LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBM T0NLX1AKIAkJCXwgTE9DS0VECiAJCQl8IExPR0dFRAorCQkJfCBMU04KIAkJCXwgTUFQUElORwog CQkJfCBNQVRDSAogCQkJfCBNQVRDSEVECkBAIC0xNzQwNCw2ICsxNzQ3OSw3IEBAIHVucmVzZXJ2 ZWRfa2V5d29yZDoKIAkJCXwgVEVNUE9SQVJZCiAJCQl8IFRFWFRfUAogCQkJfCBUSUVTCisJCQl8 IFRJTUVPVVQKIAkJCXwgVFJBTlNBQ1RJT04KIAkJCXwgVFJBTlNGT1JNCiAJCQl8IFRSSUdHRVIK QEAgLTE3NDMwLDYgKzE3NTA2LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBWSUVXCiAJ CQl8IFZJRVdTCiAJCQl8IFZPTEFUSUxFCisJCQl8IFdBSVQKIAkJCXwgV0hJVEVTUEFDRV9QCiAJ CQl8IFdJVEhJTgogCQkJfCBXSVRIT1VUCkBAIC0xNzg2Miw2ICsxNzkzOSw3IEBAIGJhcmVfbGFi ZWxfa2V5d29yZDoKIAkJCXwgTE9DS19QCiAJCQl8IExPQ0tFRAogCQkJfCBMT0dHRUQKKwkJCXwg TFNOCiAJCQl8IE1BUFBJTkcKIAkJCXwgTUFUQ0gKIAkJCXwgTUFUQ0hFRApAQCAtMTgwMjQsNiAr MTgxMDIsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFRIRU4KIAkJCXwgVElFUwogCQkJ fCBUSU1FCisJCQl8IFRJTUVPVVQKIAkJCXwgVElNRVNUQU1QCiAJCQl8IFRSQUlMSU5HCiAJCQl8 IFRSQU5TQUNUSU9OCkBAIC0xODA2MSw2ICsxODE0MCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoK IAkJCXwgVklFVwogCQkJfCBWSUVXUwogCQkJfCBWT0xBVElMRQorCQkJfCBXQUlUCiAJCQl8IFdI RU4KIAkJCXwgV0hJVEVTUEFDRV9QCiAJCQl8IFdPUksKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRl eCBlNTExOWVkNTVkLi4wNmQxNjVmZWVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0yNiw2 ICsyNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dwcmVmZXRjaGVyLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCisjaW5j bHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgpAQCAtMTQ5LDYg KzE1MCw3IEBAIENhbGN1bGF0ZVNobWVtU2l6ZShpbnQgKm51bV9zZW1hcGhvcmVzKQogCXNpemUg PSBhZGRfc2l6ZShzaXplLCBBc3luY1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6 ZSwgU3RhdHNTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRFdmVudEV4 dGVuc2lvblNobWVtU2l6ZSgpKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgV2FpdFNobWVtU2l6 ZSgpKTsKICNpZmRlZiBFWEVDX0JBQ0tFTkQKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1C YWNrZW5kQXJyYXlTaXplKCkpOwogI2VuZGlmCkBAIC0zNTEsNiArMzUzLDExIEBAIENyZWF0ZU9y QXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJQXN5bmNTaG1lbUluaXQoKTsKIAlTdGF0c1NobWVt SW5pdCgpOwogCVdhaXRFdmVudEV4dGVuc2lvblNobWVtSW5pdCgpOworCisJLyoKKwkgKiBJbml0 IGFycmF5IG9mIExhdGNoZXMgaW4gc2hhcmVkIG1lbW9yeSBmb3IgV0FJVAorCSAqLworCVdhaXRT aG1lbUluaXQoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0 eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggOGRlODIxZjk2MC4uZTg4NDgy ODAxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTE1LDYgKzE1LDcgQEAKICAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlIDxmbG9hdC5oPgogCiAjaW5j bHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxvcHRpb25z LmgiCkBAIC01OSw2ICs2MCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvdXNlci5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZpZXcuaCIKKyNpbmNs dWRlICJjb21tYW5kcy93YWl0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX3V0aWxjbWQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgi CkBAIC03Miw2ICs3NCw5IEBACiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJl eGVjdXRvci9zcGkuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAi dXRpbHMvcGdfbHNuLmgiCiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4g UHJvY2Vzc1V0aWxpdHkoKSAqLwogUHJvY2Vzc1V0aWxpdHlfaG9va190eXBlIFByb2Nlc3NVdGls aXR5X2hvb2sgPSBOVUxMOwpAQCAtMjcyLDYgKzI3Nyw3IEBAIENsYXNzaWZ5VXRpbGl0eUNvbW1h bmRBc1JlYWRPbmx5KE5vZGUgKnBhcnNldHJlZSkKIAkJY2FzZSBUX0xvYWRTdG10OgogCQljYXNl IFRfUHJlcGFyZVN0bXQ6CiAJCWNhc2UgVF9Vbmxpc3RlblN0bXQ6CisJCWNhc2UgVF9XYWl0U3Rt dDoKIAkJY2FzZSBUX1ZhcmlhYmxlU2V0U3RtdDoKIAkJCXsKIAkJCQkvKgpAQCAtNjEyLDYgKzYx OCwxMSBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJ CWNhc2UgVFJBTlNfU1RNVF9TVEFSVDoKIAkJCQkJCXsKIAkJCQkJCQlMaXN0Q2VsbCAgICpsYzsK KwkJCQkJCQlXYWl0U3RtdCAgICp3YWl0c3RtdCA9IChXYWl0U3RtdCAqKSBzdG10LT53YWl0Owor CisJCQkJCQkJLyogSWYgbmVlZGVkIHRvIFdBSVQgRk9SIHNvbWV0aGluZyBidXQgZmFpbGVkICov CisJCQkJCQkJaWYgKHN0bXQtPndhaXQgJiYgV2FpdE1haW4od2FpdHN0bXQsIGRlc3QpID09IDAp CisJCQkJCQkJCWJyZWFrOwogCiAJCQkJCQkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CiAJCQkJ CQkJZm9yZWFjaChsYywgc3RtdC0+b3B0aW9ucykKQEAgLTEwNjksNiArMTA4MCwxMyBAQCBzdGFu ZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJYnJlYWs7CiAJCQl9 CiAKKwkJY2FzZSBUX1dhaXRTdG10OgorCQkJeworCQkJCVdhaXRTdG10ICAgKnN0bXQgPSAoV2Fp dFN0bXQgKikgcGFyc2V0cmVlOworCQkJCVdhaXRNYWluKHN0bXQsIGRlc3QpOworCQkJCWJyZWFr OworCQkJfQorCiAJCWRlZmF1bHQ6CiAJCQkvKiBBbGwgb3RoZXIgc3RhdGVtZW50IHR5cGVzIGhh dmUgZXZlbnQgdHJpZ2dlciBzdXBwb3J0ICovCiAJCQlQcm9jZXNzVXRpbGl0eVNsb3cocHN0YXRl LCBwc3RtdCwgcXVlcnlTdHJpbmcsCkBAIC0yODQ3LDYgKzI4NjUsMTAgQEAgQ3JlYXRlQ29tbWFu ZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcgPSBDTURUQUdfTk9USUZZOwogCQkJYnJlYWs7 CiAKKwkJY2FzZSBUX1dhaXRTdG10OgorCQkJdGFnID0gQ01EVEFHX1dBSVQ7CisJCQlicmVhazsK KwogCQljYXNlIFRfTGlzdGVuU3RtdDoKIAkJCXRhZyA9IENNRFRBR19MSVNURU47CiAJCQlicmVh azsKQEAgLTM0OTUsNiArMzUxNywxMCBAQCBHZXRDb21tYW5kTG9nTGV2ZWwoTm9kZSAqcGFyc2V0 cmVlKQogCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsKIAorCQljYXNlIFRfV2FpdFN0 bXQ6CisJCQlsZXYgPSBMT0dTVE1UX0FMTDsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9MaXN0ZW5T dG10OgogCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3dhaXQuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMjcwMTYwZDQ0Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCkBAIC0wLDAgKzEsMjYgQEAKKy8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHdhaXQuaAorICoJICBwcm90b3R5cGVzIGZvciBjb21t YW5kcy93YWl0LmMKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxNiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMjAxNiwgUmVnZW50cyBvZiBQb3N0Z3Jlc1BSTworICoKKyAqIHNyYy9pbmNsdWRlL2NvbW1h bmRzL3dhaXQuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFdBSVRfSAor I2RlZmluZSBXQUlUX0gKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgInRjb3AvZGVz dC5oIgorCitleHRlcm4gaW50IFdhaXRVdGlsaXR5KFhMb2dSZWNQdHIgbHNuLCBjb25zdCBmbG9h dDggZGVsYXkpOworZXh0ZXJuIFNpemUgV2FpdFNobWVtU2l6ZSh2b2lkKTsKK2V4dGVybiB2b2lk IFdhaXRTaG1lbUluaXQodm9pZCk7CitleHRlcm4gdm9pZCBXYWl0U2V0TGF0Y2goWExvZ1JlY1B0 ciBjdXJfbHNuKTsKK2V4dGVybiBYTG9nUmVjUHRyIEdldE1pbldhaXQodm9pZCk7CitleHRlcm4g ZmxvYXQ4IFdhaXRUaW1lUmVzb2x2ZShDb25zdCAqdGltZSk7CitleHRlcm4gaW50IFdhaXRNYWlu KFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpOworCisjZW5kaWYgICAvKiBXQUlU X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiMzE4MWYzNGFlLi42N2VmOWViOGFkIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zNTI1LDYgKzM1MjUsNyBAQCB0eXBlZGVmIHN0cnVj dCBUcmFuc2FjdGlvblN0bXQKIAkvKiBmb3IgdHdvLXBoYXNlLWNvbW1pdCByZWxhdGVkIGNvbW1h bmRzICovCiAJY2hhcgkgICAqZ2lkIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsK IAlib29sCQljaGFpbjsJCQkvKiBBTkQgQ0hBSU4gb3B0aW9uICovCisJTm9kZQkgICAqd2FpdDsJ CQkvKiBXQUlUIGNsYXVzZTogbGlzdCBvZiBldmVudHMgdG8gd2FpdCBmb3IgKi8KIAkvKiB0b2tl biBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogCWludAkJCWxvY2F0aW9uIHBnX25vZGVf YXR0cihxdWVyeV9qdW1ibGVfbG9jYXRpb24pOwogfSBUcmFuc2FjdGlvblN0bXQ7CkBAIC00MDc2 LDQgKzQwNzcsMjYgQEAgdHlwZWRlZiBzdHJ1Y3QgRHJvcFN1YnNjcmlwdGlvblN0bXQKIAlEcm9w QmVoYXZpb3IgYmVoYXZpb3I7CQkvKiBSRVNUUklDVCBvciBDQVNDQURFIGJlaGF2aW9yICovCiB9 IERyb3BTdWJzY3JpcHRpb25TdG10OwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJ V0FJVCBGT1IgU3RhdGVtZW50ICsgV0FJVCBGT1IgY2xhdXNlIG9mIEJFR0lOIHN0YXRlbWVudAor ICoJCVRPRE86IGlmIHdlIG9ubHkgcGljayBvbmUsIHJlbW92ZSB0aGUgb3RoZXIKKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCit0eXBlZGVmIGVudW0gV2FpdEZvclN0cmF0ZWd5Cit7 CisJV0FJVF9GT1JfQU5ZID0gMCwKKwlXQUlUX0ZPUl9BTEwKK30gV2FpdEZvclN0cmF0ZWd5Owor Cit0eXBlZGVmIHN0cnVjdCBXYWl0U3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJV2FpdEZvclN0 cmF0ZWd5IHN0cmF0ZWd5OworCUxpc3QJICAgKmV2ZW50czsJCS8qIHVzZWQgYXMgYSBwb2ludGVy IHRvIHRoZSBuZXh0IFdBSVQgZXZlbnQgKi8KKwljaGFyCSAgICpsc247CQkvKiBXQUlUIEZPUiBM U04gKi8KKwlpbnQJCQlkZWxheTsJCS8qIFdBSVQgRk9SIFRJTUVPVVQgKi8KKwlOb2RlCSAgICp0 aW1lOwkJLyogV0FJVCBGT1IgVElNRVNUQU1QIG9yIFRJTUUgKi8KK30gV2FpdFN0bXQ7CisKICNl bmRpZgkJCQkJCQkvKiBQQVJTRU5PREVTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCAyMzMxYWNh YzA5Li5hZTdiNjU1MjZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK KysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0yNjAsNiArMjYwLDcgQEAgUEdf S0VZV09SRCgibG9jYXRpb24iLCBMT0NBVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgibG9jayIsIExPQ0tfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgibG9ja2VkIiwgTE9DS0VELCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsb2dnZWQiLCBMT0dHRUQsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImxzbiIsIExTTiwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibWFwcGluZyIsIE1BUFBJTkcsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm1hdGNoIiwgTUFUQ0gsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm1hdGNoZWQiLCBNQVRDSEVE LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC00MzMsNiArNDM0LDcgQEAgUEdf S0VZV09SRCgidGV4dCIsIFRFWFRfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgidGhlbiIsIFRIRU4sIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJ0aWVzIiwgVElFUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgidGltZSIsIFRJTUUsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQ R19LRVlXT1JEKCJ0aW1lb3V0IiwgVElNRU9VVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgidGltZXN0YW1wIiwgVElNRVNUQU1QLCBDT0xfTkFNRV9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidG8iLCBUTywgUkVTRVJWRURfS0VZV09SRCwgQVNf TEFCRUwpCiBQR19LRVlXT1JEKCJ0cmFpbGluZyIsIFRSQUlMSU5HLCBSRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQpAQCAtNDczLDYgKzQ3NSw3IEBAIFBHX0tFWVdPUkQoInZlcnNpb24iLCBW RVJTSU9OX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZp ZXciLCBWSUVXLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ2 aWV3cyIsIFZJRVdTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJ2b2xhdGlsZSIsIFZPTEFUSUxFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQ R19LRVlXT1JEKCJ3YWl0IiwgV0FJVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgid2hlbiIsIFdIRU4sIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJ3aGVyZSIsIFdIRVJFLCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBH X0tFWVdPUkQoIndoaXRlc3BhY2UiLCBXSElURVNQQUNFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oIGIv c3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKaW5kZXggN2ZkY2VjNmRkOS4uMjk1Y2Q2ZmYz YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKQEAgLTIxNywzICsyMTcsNCBAQCBQR19DTURUQUcoQ01E VEFHX1RSVU5DQVRFX1RBQkxFLCAiVFJVTkNBVEUgVEFCTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNl KQogUEdfQ01EVEFHKENNRFRBR19VTkxJU1RFTiwgIlVOTElTVEVOIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfVVBEQVRFLCAiVVBEQVRFIiwgZmFsc2UsIGZhbHNlLCB0 cnVlKQogUEdfQ01EVEFHKENNRFRBR19WQUNVVU0sICJWQUNVVU0iLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQorUEdfQ01EVEFHKENNRFRBR19XQUlULCAiV0FJVCBGT1IiLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfYmVnaW5fd2FpdC5wbCBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX2JlZ2luX3dhaXQucGwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uZjFlNWI1YjIzZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDQwX2JlZ2luX3dhaXQucGwKQEAgLTAsMCArMSwxNDYgQEAKKyMgQ2hl Y2tzIFdBSVQgRk9SCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCisjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAkbm9kZV9wcmltYXJ5ID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Ciskbm9kZV9wcmltYXJ5 LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9wcmltYXJ5LT5zdGFydDsKKwor IyBBbmQgc29tZSBjb250ZW50IGFuZCB0YWtlIGEgYmFja3VwCiskbm9kZV9wcmltYXJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHdhaXRfdGVzdCBBUyBTRUxFQ1QgZ2Vu ZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsKK215ICRiYWNrdXBfbmFtZSA9ICdteV9iYWNrdXAn OworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisKKyMgQ3JlYXRlIGEgc3Ry ZWFtaW5nIHN0YW5kYnkgd2l0aCBhIDEgc2Vjb25kIGRlbGF5IGZyb20gdGhlIGJhY2t1cAorbXkg JG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScp OworbXkgJGRlbGF5ICAgICAgICA9IDE7Ciskbm9kZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3Vw KCRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEpOworJG5v ZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxWworCXJlY292ZXJ5 X21pbl9hcHBseV9kZWxheSA9ICcke2RlbGF5fXMnCitdKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0 OworCisKKworIyBNYWtlIHN1cmUgdGhhdCBXQUlUIEZPUiBMU04gd29ya3M6IGFkZCBuZXcgY29u dGVudCB0byBwcmltYXJ5IGFuZCBtZW1vcml6ZQorIyBwcmltYXJ5J3MgbmV3IExTTiwgdGhlbiB3 YWl0IGZvciBwcmltYXJ5J3MgTFNOIG9uIHN0YW5kYnkuIFByb3ZlIHRoYXQgV0FJVCBpcworIyBh YmxlIHRvIHNldHVwIGFuIGluZmluaXRlIHdhaXRpbmcgbG9vcCBhbmQgZXhpdCBpdCBpZiBnaXZl biBubyB3YWl0IHRpbWVvdXQuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDExLCAyMCkp Iik7CitteSAkbHNuMSA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkJFR0lOIFdBSVQgRk9SIExTTiAnJGxzbjEnIik7CisKKyMgR2V0IHRoZSBjdXJy ZW50IExTTiBvbiBzdGFuZGJ5IGFuZCBtYWtlIHN1cmUgaXQncyB0aGUgc2FtZSBhcyBwcmltYXJ5 J3MgTFNOCitteSAkbHNuX3N0YW5kYnkgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSIpOworbXkgJGNvbXBhcmVf bHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdf bHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjEnOjpwZ19sc24pIik7Citvaygk Y29tcGFyZV9sc25zIGVxIDAsICJzdGFuZGJ5IHJlYWNoZWQgdGhlIHNhbWUgTFNOIGFzIHByaW1h cnkgYWZ0ZXIgV0FJVCIpOworCisKKworIyBDaGVjayB0aGF0IHRpbWVvdXRzIHdvcmsgb24gdGhl aXIgb3duIGFuZCBsZXQgdXMgd2FpdCBmb3Igc3BlY2lmaWVkIHRpbWUgKDFzKQorbXkgJGN1cnJl bnRfdGltZSA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIG5v dygpIik7CitteSAkb25lX3NlY29uZCA9IDEwMDA7ICMgaW4gbWlsbGlzZWNvbmRzCitteSAkc3Rh cnRfdGltZSA9IHRpbWUoKTsKKyMgV2hpbGUgd2UncmUgYXQgaXQsIGFsc28gbWFrZSBzdXJlIHRo YXQgdGhlIHN5bnRheCB3aXRoIGNvbW1hcyB3b3JrcyBmaW5lIGFuZAorIyB0aGF0IGJ5IGRlZmF1 bHQgd2UgdXNlIFdBSVQgRk9SIEFMTCBzdHJhdGVneSwgd2hpY2ggbWVhbnMgd2FpdGluZyBmb3Ig bWF4IHRpbWUKKyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJXQUlUIEZP UiBUSU1FT1VUICRvbmVfc2Vjb25kLCBUSU1FU1RBTVAgJyRjdXJyZW50X3RpbWUnIik7CitteSAk dGltZV93YWl0ZWQgPSAodGltZSgpIC0gJHN0YXJ0X3RpbWUpICogMTAwMDsgIyBjb252ZXJ0IHRv IG1pbGxpc2Vjb25kcworb2soJHRpbWVfd2FpdGVkID49ICRvbmVfc2Vjb25kLCAiV0FJVCBGT1Ig VElNRU9VVCB3YWl0cyBmb3IgZW5vdWdoIHRpbWUiKTsKKworIyBOb3csIGNoZWNrIHRoYXQgdGlt ZW91dHMgd29yayBhcyBleHBlY3RlZCB3aGVuIHdhaXRpbmcgZm9yIExTTgorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMg KGdlbmVyYXRlX3NlcmllcygyMSwgMzApKSIpOworbXkgJGxzbjIgPSAkbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworbXkg JHJlYWNoZWRfbHNuID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkJF R0lOIFdBSVQgRk9SIExTTiAnJGxzbjInIFRJTUVPVVQgMSIpOworb2soJHJlYWNoZWRfbHNuIGVx ICJmIiwgIldBSVQgZG9lc24ndCByZWFjaCBMU04gaWYgZ2l2ZW4gdG9vIGxpdHRsZSB3YWl0IHRp bWUiKTsKKworCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUT0RPOiByZW1vdmUgdGhpcyB0 ZXN0IGlmIHdlIHJlbW92ZSB0aGUgc3RhbmRhbG9uZSAiV0FJVCBGT1IiIGNvbW1hbmQKKyM9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisjIFdlIG5lZWQgdG8gY2hlY2sgdGhhdCBXQUlUIHdvcmtzIGZp bmUgaW5zaWRlIHRyYW5zYWN0aW9ucy4gRm9yIHRoYXQsIGxldCdzCisjIGdldCB0d28gTFNOcyB0 aGF0IHdpbGwgY29ycmVzcG9uZCB0byB0d28gZGlmZmVyZW50IG1heCB2YWx1ZXMgaW4gb3VyIHRh YmxlLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRP IHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygzMSwgNDApKSIpOworbXkgJGxzbjMg PSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50 X3dhbF9sc24oKSIpOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklO U0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg0MSwgNTApKSIpOwor bXkgJGxzbjQgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBw Z19jdXJyZW50X3dhbF9sc24oKSIpOworCisjIEJlZm9yZSBzdGFydGluZyB0cmFuc2FjdGlvbiwg d2FpdCBmb3IgTFNOIHdoaWNoIGVuc3VyZXMgYSBtYXggdmFsdWUgb2YgNDAuCisjIEluc2lkZSB0 aGUgdHJhbnNhY3Rpb24sIHdhaXQgZm9yIExTTiB0aGF0IGVuc3VyZXMgYSBtYXggdmFsdWUgb2Yg NTAuCisjIER1ZSB0byBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFELCB3ZSBzaG91bGQg Tk9UIHNlZSB0aGUgbmV3IG1heCB2YWx1ZS4KK215ICRzdGFuZGJ5X3Jlc3VsdHMgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQkVHSU4gVFJBTlNBQ1RJT04g SVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRCBXQUlUIEZPUiBMU04gJyRsc24zJzsKKwlT RUxFQ1QgbWF4KGEpIEZST00gd2FpdF90ZXN0OworCUJFR0lOIFdBSVQgRk9SIExTTiAnJGxzbjQn OworCVNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCk7CisJU0VMRUNUIG1heChhKSBGUk9N IHdhaXRfdGVzdDsKKwlDT01NSVQ7CitdKTsKKworIyBNYWtlIHN1cmUgdGhhdCB3ZSBpbmRlZWQg cmVhY2ggcHJpbWFyeSdzIGxhc3QgTFNOIGluc2lkZSB0aGUgdHJhbnNhY3Rpb24uCisjIEZvciB0 aGF0LCBjaGVjayB0aGF0IGNhbGxpbmcgcGdfbGFzdF93YWxfcmVwbGF5X2xzbiByZXR1cm5lZCB0 aGF0IExTTi4KK215ICRsYXN0X2xzbl9yZWFjaGVkID0gJHN0YW5kYnlfcmVzdWx0cyA9fiAvJGxz bjQvOworb2soJGxhc3RfbHNuX3JlYWNoZWQsICJXQUlUIEZPUiBMU04gd29ya3MgaW5zaWRlIGEg dHJhbnNhY3Rpb24iKTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGRvZXNuJ3QgYnJlYWsg YW5kIHNob3cgdXMgdGhlIG5ldyBtYXggdmFsdWUgYWZ0ZXIgV0FJVC4KKyMgRm9yIHRoYXQsIG1h a2Ugc3VyZSB0aGF0IHRoZSBvbGRlciBtYXggdmFsdWUgaXMgcmVwZWF0ZWQgdHdpY2UgaW4gdGhl IHJlc3VsdHMuCitteSAkY291bnQgPSAoKSA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLzQwL2c7Citv aygkY291bnQgZXEgMiwgInRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCBkb2Vzbid0IGdldCBi cm9rZW4gZHVlIHRvIFdBSVQiKTsKKworCisKKyMgR2V0IG11bHRpcGxlIExTTnMgZm9yIHRlc3Rp bmcgV0FJVCBGT1IgQU5ZIC8gV0FJVCBGT1IgQUxMCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2Vy aWVzKDUxLCA2MCkpIik7CitteSAkbHNuNSA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2Vu ZXJhdGVfc2VyaWVzKDYxLCA3MDAwMCkpIik7CitteSAkbHNuNiA9ICRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0 IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDYxLCA4MDAwMDApKSIpOworbXkgJGxzbjcgPSAkbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9s c24oKSIpOworCisjIENoZWNrIHRoYXQgV0FJVCBGT1IgQU5ZIHdvcmtzIGZpbmUKKyRub2RlX3N0 YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJCRUdJTiBXQUlUIEZPUiBBTlkgTFNOICck bHNuNScgTFNOICckbHNuNicgTFNOICckbHNuNyciKTsKKyRsc25fc3RhbmRieSA9ICRub2RlX3N0 YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5 X2xzbigpIik7CiskY29tcGFyZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fY21wKCckbHNuX3N0YW5kYnknOjpwZ19sc24sICckbHNu NSc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZ2UgMCwKKwkiV0FJVCBGT1IgQU5ZIG1h a2VzIHVzIHJlYWNoIGF0IGxlYXN0IHRoZSBtaW5pbXVtIExTTiBmcm9tIHRoZSBsaXN0Iik7Cisk Y29tcGFyZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwZ19sc25fY21wKCckbHNuX3N0YW5kYnknOjpwZ19sc24sICckbHNuNyc6OnBnX2xzbiki KTsKKyMgVE9ETzogQ291bGQgdGhpcyBzb21laG93IGZhaWwgZHVlIHRvIHRoZSBtYWNoaW5lIGJl aW5nIHZlcnkgZmFzdCBhdCBhcHBseWluZyBMU04/CitvaygkY29tcGFyZV9sc25zIGx0IDAsCisJ IldBSVQgRk9SIEFOWSBkaWRuJ3QgbWFrZSB1cyByZWFjaCB0aGUgbWF4aW11bSBMU04gZnJvbSB0 aGUgbGlzdCIpOworCisjIENoZWNrIHRoYXQgV0FJVCBGT1IgQUxMIHdvcmtzIGZpbmUKKyRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJCRUdJTiBXQUlUIEZPUiBBTEwgTFNO ICckbHNuNScsIExTTiAnJGxzbjYnLCBMU04gJyRsc243JyIpOworJGxzbl9zdGFuZGJ5ID0gJG5v ZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sYXN0X3dhbF9y ZXBsYXlfbHNuKCkiKTsKKyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwg JyRsc243Jzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNucyBlcSAwLAorCSJXQUlUIEZPUiBB TEwgbWFrZXMgdXMgcmVhY2ggdGhlIG1heGltdW0gTFNOIGZyb20gdGhlIGxpc3QiKTsKKworCisK KyRub2RlX3N0YW5kYnktPnN0b3A7Ciskbm9kZV9wcmltYXJ5LT5zdG9wOworZG9uZV90ZXN0aW5n KCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MV93YWl0LnBsIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wNDFfd2FpdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi42ZjlkNTQ5NDE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wNDFfd2FpdC5wbApAQCAtMCwwICsxLDE0NSBAQAorIyBDaGVja3MgV0FJVCBGT1IKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5pdGlh bGl6ZSBwcmltYXJ5IG5vZGUKK215ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCisjIEFuZCBzb21lIGNvbnRlbnQg YW5kIHRha2UgYSBiYWNrdXAKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVEFCTEUgd2FpdF90ZXN0IEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkg QVMgYSIpOworbXkgJGJhY2t1cF9uYW1lID0gJ215X2JhY2t1cCc7Ciskbm9kZV9wcmltYXJ5LT5i YWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyBDcmVhdGUgYSBzdHJlYW1pbmcgc3RhbmRieSB3aXRo IGEgMSBzZWNvbmQgZGVsYXkgZnJvbSB0aGUgYmFja3VwCitteSAkbm9kZV9zdGFuZGJ5ID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5Jyk7CitteSAkZGVsYXkgICAgICAg ID0gMTsKKyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoJG5vZGVfcHJpbWFyeSwgJGJh Y2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9zdGFuZGJ5LT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywgcXFbCisJcmVjb3ZlcnlfbWluX2FwcGx5X2RlbGF5ID0g JyR7ZGVsYXl9cycKK10pOworJG5vZGVfc3RhbmRieS0+c3RhcnQ7CisKKworCisjIE1ha2Ugc3Vy ZSB0aGF0IFdBSVQgRk9SIExTTiB3b3JrczogYWRkIG5ldyBjb250ZW50IHRvIHByaW1hcnkgYW5k IG1lbW9yaXplCisjIHByaW1hcnkncyBuZXcgTFNOLCB0aGVuIHdhaXQgZm9yIHByaW1hcnkncyBM U04gb24gc3RhbmRieS4gUHJvdmUgdGhhdCBXQUlUIGlzCisjIGFibGUgdG8gc2V0dXAgYW4gaW5m aW5pdGUgd2FpdGluZyBsb29wIGFuZCBleGl0IGl0IGlmIGdpdmVuIG5vIHdhaXQgdGltZW91dC4K KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0 X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMTEsIDIwKSkiKTsKK215ICRsc24xID0gJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxf bHNuKCkiKTsKKyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiV0FJVCBGT1Ig TFNOICckbHNuMSciKTsKKworIyBHZXQgdGhlIGN1cnJlbnQgTFNOIG9uIHN0YW5kYnkgYW5kIG1h a2Ugc3VyZSBpdCdzIHRoZSBzYW1lIGFzIHByaW1hcnkncyBMU04KK215ICRsc25fc3RhbmRieSA9 ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93 YWxfcmVwbGF5X2xzbigpIik7CitteSAkY29tcGFyZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fY21wKCckbHNuX3N0YW5kYnknOjpw Z19sc24sICckbHNuMSc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgMCwgInN0YW5k YnkgcmVhY2hlZCB0aGUgc2FtZSBMU04gYXMgcHJpbWFyeSBhZnRlciBXQUlUIik7CisKKworCisj IENoZWNrIHRoYXQgdGltZW91dHMgd29yayBvbiB0aGVpciBvd24gYW5kIGxldCB1cyB3YWl0IGZv ciBzcGVjaWZpZWQgdGltZSAoMXMpCitteSAkY3VycmVudF90aW1lID0gJG5vZGVfc3RhbmRieS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qgbm93KCkiKTsKK215ICRvbmVfc2Vjb25kID0g MTAwMDsgIyBpbiBtaWxsaXNlY29uZHMKK215ICRzdGFydF90aW1lID0gdGltZSgpOworIyBXaGls ZSB3ZSdyZSBhdCBpdCwgYWxzbyBtYWtlIHN1cmUgdGhhdCB0aGUgc3ludGF4IHdpdGggY29tbWFz IHdvcmtzIGZpbmUgYW5kCisjIHRoYXQgYnkgZGVmYXVsdCB3ZSB1c2UgV0FJVCBGT1IgQUxMIHN0 cmF0ZWd5LCB3aGljaCBtZWFucyB3YWl0aW5nIGZvciBtYXggdGltZQorJG5vZGVfc3RhbmRieS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIFRJTUVPVVQgJG9uZV9zZWNvbmQsIFRJ TUVTVEFNUCAnJGN1cnJlbnRfdGltZSciKTsKK215ICR0aW1lX3dhaXRlZCA9ICh0aW1lKCkgLSAk c3RhcnRfdGltZSkgKiAxMDAwOyAjIGNvbnZlcnQgdG8gbWlsbGlzZWNvbmRzCitvaygkdGltZV93 YWl0ZWQgPj0gJG9uZV9zZWNvbmQsICJXQUlUIEZPUiBUSU1FT1VUIHdhaXRzIGZvciBlbm91Z2gg dGltZSIpOworCisjIE5vdywgY2hlY2sgdGhhdCB0aW1lb3V0cyB3b3JrIGFzIGV4cGVjdGVkIHdo ZW4gd2FpdGluZyBmb3IgTFNOCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDIxLCAzMCkp Iik7CitteSAkbHNuMiA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CitteSAkcmVhY2hlZF9sc24gPSAkbm9kZV9zdGFu ZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiV0FJVCBGT1IgTFNOICckbHNuMicgVElNRU9V VCAxIik7CitvaygkcmVhY2hlZF9sc24gZXEgImYiLCAiV0FJVCBkb2Vzbid0IHJlYWNoIExTTiBp ZiBnaXZlbiB0b28gbGl0dGxlIHdhaXQgdGltZSIpOworCisKKworIyBXZSBuZWVkIHRvIGNoZWNr IHRoYXQgV0FJVCB3b3JrcyBmaW5lIGluc2lkZSB0cmFuc2FjdGlvbnMuIEZvciB0aGF0LCBsZXQn cworIyBnZXQgdHdvIExTTnMgdGhhdCB3aWxsIGNvcnJlc3BvbmQgdG8gdHdvIGRpZmZlcmVudCBt YXggdmFsdWVzIGluIG91ciB0YWJsZS4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMzEs IDQwKSkiKTsKK215ICRsc24zID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9z ZXJpZXMoNDEsIDUwKSkiKTsKK215ICRsc240ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKworIyBCZWZvcmUgc3Rh cnRpbmcgdHJhbnNhY3Rpb24sIHdhaXQgZm9yIExTTiB3aGljaCBlbnN1cmVzIGEgbWF4IHZhbHVl IG9mIDQwLgorIyBJbnNpZGUgdGhlIHRyYW5zYWN0aW9uLCB3YWl0IGZvciBMU04gdGhhdCBlbnN1 cmVzIGEgbWF4IHZhbHVlIG9mIDUwLgorIyBEdWUgdG8gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFC TEUgUkVBRCwgd2Ugc2hvdWxkIE5PVCBzZWUgdGhlIG5ldyBtYXggdmFsdWUuCitteSAkc3RhbmRi eV9yZXN1bHRzID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWwor CVdBSVQgRk9SIExTTiAnJGxzbjMnOworCUJFR0lOIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQ7CisJU0VMRUNUIG1heChhKSBGUk9NIHdhaXRfdGVzdDsKKwlXQUlU IEZPUiBMU04gJyRsc240JzsKKwlTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5X2xzbigpOworCVNF TEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rlc3Q7CisJQ09NTUlUOworXSk7CisKKyMgTWFrZSBzdXJl IHRoYXQgd2UgaW5kZWVkIHJlYWNoIHByaW1hcnkncyBsYXN0IExTTiBpbnNpZGUgdGhlIHRyYW5z YWN0aW9uLgorIyBGb3IgdGhhdCwgY2hlY2sgdGhhdCBjYWxsaW5nIHBnX2xhc3Rfd2FsX3JlcGxh eV9sc24gcmV0dXJuZWQgdGhhdCBMU04uCitteSAkbGFzdF9sc25fcmVhY2hlZCA9ICRzdGFuZGJ5 X3Jlc3VsdHMgPX4gLyRsc240LzsKK29rKCRsYXN0X2xzbl9yZWFjaGVkLCAiV0FJVCBGT1IgTFNO IHdvcmtzIGluc2lkZSBhIHRyYW5zYWN0aW9uIik7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlv biBkb2Vzbid0IGJyZWFrIGFuZCBzaG93IHVzIHRoZSBuZXcgbWF4IHZhbHVlIGFmdGVyIFdBSVQu CisjIEZvciB0aGF0LCBtYWtlIHN1cmUgdGhhdCB0aGUgb2xkZXIgbWF4IHZhbHVlIGlzIHJlcGVh dGVkIHR3aWNlIGluIHRoZSByZXN1bHRzLgorbXkgJGNvdW50ID0gKCkgPSAkc3RhbmRieV9yZXN1 bHRzID1+IC80MC9nOworb2soJGNvdW50IGVxIDIsICJ0cmFuc2FjdGlvbiBpc29sYXRpb24gbGV2 ZWwgZG9lc24ndCBnZXQgYnJva2VuIGR1ZSB0byBXQUlUIik7CisKKworCisjIEdldCBtdWx0aXBs ZSBMU05zIGZvciB0ZXN0aW5nIFdBSVQgRk9SIEFOWSAvIFdBSVQgRk9SIEFMTAorJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxV RVMgKGdlbmVyYXRlX3Nlcmllcyg1MSwgNjApKSIpOworbXkgJGxzbjUgPSAkbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOwor JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRf dGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg2MSwgNzAwMDApKSIpOworbXkgJGxzbjYgPSAk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dh bF9sc24oKSIpOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg2MSwgODAwMDAwKSkiKTsK K215ICRsc243ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg cGdfY3VycmVudF93YWxfbHNuKCkiKTsKKworIyBDaGVjayB0aGF0IFdBSVQgRk9SIEFOWSB3b3Jr cyBmaW5lCiskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiV0FJVCBGT1Ig QU5ZIExTTiAnJGxzbjUnIExTTiAnJGxzbjYnIExTTiAnJGxzbjcnIik7CiskbHNuX3N0YW5kYnkg PSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rf d2FsX3JlcGxheV9sc24oKSIpOworJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdf bHNuLCAnJGxzbjUnOjpwZ19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGdlIDAsCisJIldBSVQg Rk9SIEFOWSBtYWtlcyB1cyByZWFjaCBhdCBsZWFzdCB0aGUgbWluaW11bSBMU04gZnJvbSB0aGUg bGlzdCIpOworJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjcn OjpwZ19sc24pIik7CisjIFRPRE86IENvdWxkIHRoaXMgc29tZWhvdyBmYWlsIGR1ZSB0byB0aGUg bWFjaGluZSBiZWluZyB2ZXJ5IGZhc3QgYXQgYXBwbHlpbmcgTFNOPworb2soJGNvbXBhcmVfbHNu cyBsdCAwLAorCSJXQUlUIEZPUiBBTlkgZGlkbid0IG1ha2UgdXMgcmVhY2ggdGhlIG1heGltdW0g TFNOIGZyb20gdGhlIGxpc3QiKTsKKworIyBDaGVjayB0aGF0IFdBSVQgRk9SIEFMTCB3b3JrcyBm aW5lCiskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiV0FJVCBGT1IgQUxM IExTTiAnJGxzbjUnLCBMU04gJyRsc242JywgTFNOICckbHNuNyciKTsKKyRsc25fc3RhbmRieSA9 ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93 YWxfcmVwbGF5X2xzbigpIik7CiskY29tcGFyZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fY21wKCckbHNuX3N0YW5kYnknOjpwZ19s c24sICckbHNuNyc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgMCwKKwkiV0FJVCBG T1IgQUxMIG1ha2VzIHVzIHJlYWNoIHRoZSBtYXhpbXVtIExTTiBmcm9tIHRoZSBsaXN0Iik7CisK KworCiskbm9kZV9zdGFuZGJ5LT5zdG9wOworJG5vZGVfcHJpbWFyeS0+c3RvcDsKK2RvbmVfdGVz dGluZygpOwo= --=_d47284fbfdc2b601d04ce0e631d5d7aa--