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.96) (envelope-from ) id 1w0yzk-002Nz5-0r for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Mar 2026 09:39:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w0yzi-002tCS-2E for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Mar 2026 09:39: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.96) (envelope-from ) id 1w0yzi-002tCJ-05 for pgsql-hackers@lists.postgresql.org; Fri, 13 Mar 2026 09:39:46 +0000 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w0yze-00000001uu6-2t6W for pgsql-hackers@lists.postgresql.org; Fri, 13 Mar 2026 09:39:45 +0000 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-4852f73d0a3so16880065e9.3 for ; Fri, 13 Mar 2026 02:39:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1773394781; x=1773999581; darn=lists.postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=wGBxUW280Isalk8RMOJSGf2HUCYILccFbFUBp1eBEw8=; b=Ex7eX27MZgMqLcspbVjjdZoqtCbgMyZ+4bcmvfrLXFIgdx8iSNUtFYl8uxB20vAFy9 U2JZlMOBA9dXLhfgcIlLPWiemCLFVdpzqpwqdHheX/d0cORgQXR3bRZcq05hi+3AD8Ux IxRRyJ8GbecNZTIurtCKzFv1zhI07ocwaxQ3TU7BtD1XT6oUYxVnp0vWEiHNWhvIFjYq 8dhaA+iruCgltRnkabjUkoKxpYOzuV2C6xNTdlgCiCzoM2zf2kPP/pDXitI7VvRSF58y j7V8TltdUakBisjSYbe0mKsjsrwkpic1ti/fe0g290zzPPCICWiky1MQhYCIpulCVOnE jLwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773394781; x=1773999581; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=wGBxUW280Isalk8RMOJSGf2HUCYILccFbFUBp1eBEw8=; b=Kp3sf9XAOBwWkf3D2oOxNENAjO4XqejKVv9nzP3pZ3kihqAJSIFUguWRoUHXQQVNfr UebULB7yFK35VsUcfJQ+JHqkj/Qj8RuPFBU2+Sp0cQvuH3FZW//uL06FN9u17SYt6r0X IfQNKjNk8Ru33XhivssNvO+LganyWKNP5G+jRrNaKo8FG8RjaW2brXDKga3ka9omATZ2 3bOCkJL9LD34jLitdXoePFCXOjJz/Uj5MylM8kwIJmbv/+9uAwAjJ9aIu/tCCtsF2kFI V3a1zR98v+c33gNMLswB1gUlbopKfDRI35z0+TbqtvqspvsxgaOQUKOEfe0K43y4ebZB lR7g== X-Gm-Message-State: AOJu0YyIeSxihwLJgmRpxnU80Yr5Ciy8bOGfHJ6SkDRkLsMLZan//LIY XJiX+GTJoo06tGigLstLQLsNOhHX0nlAbCMTTxkN5eCUCQ/1tSrhwwd2Va0pD4KtbME= X-Gm-Gg: ATEYQzyag853ji84RdE8gv8WdnCSt7p2taPoLVivPmZnT3lbeWLLtEMtHN/FOVIGenI qt4vSLKNHdVOKIkv2hu/sE7j8KrdTM4SseyZGVwRyhW87Z4X8tllW+POk+BVkkfjogN5nartL5n JLNW7FEWJe4B64uTaesIpHTW/C58gqZwsVovGb7kphp3HPjbIM6vO3agJLx9QXVd+KYbnmyS1xw j+R6TU3zQYq7DiTIYkRpxqaTPCBopBHh6EUooJWfs3lu7mfiF6DByK2LmBR2sDgiTCs53WOEsrX T1Dol4WeJQGeejqEJnOyPmDjAQ2Y3RFDI4aiB6x4pFo+KI0uU4dfS7bL+KxplO+A6XBRfvCu+k3 l7P8r/FN/4SGiX4MX1qQFL9C4sbxLeUSbwJesRQ1O9CAlykPsolDZSWpirmy5EpY20xtL1VDk5W J070Wo90HK2m7dkPK7mac9TgZE6h3uHMbXqk6hHR7nZmGdkYIS X-Received: by 2002:a05:600c:3b17:b0:485:3812:36f6 with SMTP id 5b1f17b1804b1-485566faaf3mr38237585e9.21.1773394781357; Fri, 13 Mar 2026 02:39:41 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48556400f31sm22654115e9.3.2026.03.13.02.39.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 13 Mar 2026 02:39:40 -0700 (PDT) Content-Type: multipart/mixed; boundary=0302f3049a6dc84489a98fa3f0e993020e6de1dc280c5704b38cffebd74a Mime-Version: 1.0 Date: Fri, 13 Mar 2026 10:39:39 +0100 Message-Id: Cc: "PostgreSQL Hackers" , "Dave Cramer" , "Jacob Champion" , "Heikki Linnakangas" Subject: Re: Add GoAway protocol message for graceful but fast server shutdown/switchover To: "Zsolt Parragi" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0302f3049a6dc84489a98fa3f0e993020e6de1dc280c5704b38cffebd74a Content-Type: multipart/alternative; boundary=46da8e088cf2a711b9f77a6a58d174c3f671fe428e00d3b8686841460496 --46da8e088cf2a711b9f77a6a58d174c3f671fe428e00d3b8686841460496 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Wed Feb 25, 2026 at 4:08 PM CET, Zsolt Parragi wrote: > + /* > + * Only signal regular backends, since those need to notify > + * their clients using a GoAway message. > + */ > + if (bp->bkend_type =3D=3D B_BACKEND) > > This condition is slightly different to how SignalChildren works, is > that intentional? I don't think it causes any practical difference, > and I don't see an easy way to reuse SignalChildren for this, but > maybe it could still follow the same pattern. Changed it to be consistent now, and resolved a rebase conflict. > Since the pytest framework seems unlikely to be included in PG19, have > you considered a different test implementation, to have at least some > minimal coverage? I now included some basic support for GoAway in psql and added a perl test based on that. --46da8e088cf2a711b9f77a6a58d174c3f671fe428e00d3b8686841460496-- --0302f3049a6dc84489a98fa3f0e993020e6de1dc280c5704b38cffebd74a Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v7-0001-Add-GoAway-protocol-message-for-graceful-but-fast.patch Content-Type: text/x-patch; charset=utf-8; name=v7-0001-Add-GoAway-protocol-message-for-graceful-but-fast.patch RnJvbSA3MjBhOTJhMjNmZmIxN2JjZTIwOTViMzcwMWU4NTkzOGEyNTRiOGE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTdW4sIDE5IE9jdCAyMDI1IDAwOjMwOjQ4ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 N10gQWRkIEdvQXdheSBwcm90b2NvbCBtZXNzYWdlIGZvciBncmFjZWZ1bCBidXQgZmFzdCBzZXJ2 ZXIKIHNodXRkb3duL3N3aXRjaG92ZXIKClRoaXMgY29tbWl0IGludHJvZHVjZXMgYSBuZXcgR29B d2F5IGJhY2tlbmQtdG8tZnJvbnRlbmQgcHJvdG9jb2wKbWVzc2FnZSAoYnl0ZSAnZycpIHRoYXQg dGhlIHNlcnZlciBjYW4gc2VuZCB0byB0aGUgY2xpZW50IHRvIHBvbGl0ZWx5CnJlcXVlc3QgdGhh dCBjbGllbnQgdG8gZGlzY29ubmVjdC9yZWNvbm5lY3Qgd2hlbiBjb252ZW5pZW50LiBUaGlzIG1l c3NhZ2UgaXMKYWR2aXNvcnkgb25seSAtIHRoZSBjb25uZWN0aW9uIHJlbWFpbnMgZnVsbHkgZnVu Y3Rpb25hbCBhbmQgY2xpZW50cyBtYXkKY29udGludWUgZXhlY3V0aW5nIHF1ZXJpZXMgYW5kIHN0 YXJ0aW5nIG5ldyB0cmFuc2FjdGlvbnMuICJXaGVuCmNvbnZlbmllbnQiIGlzIG9idmlvdXNseSBu b3QgdmVyeSB3ZWxsIGRlZmluZWQsIGJ1dCB0aGUgcHJpbWFyeSB0YXJnZXQKY2xpZW50cyBhcmUg Y2xpZW50cyB0aGF0IG1haW50YWluIGEgY29ubmVjdGlvbiBwb29sLiBTdWNoIGNsaWVudHMgc2hv dWxkCmRpc2Nvbm5lY3QvcmVjb25uZWN0IGEgY29ubmVjdGlvbiBpbiB0aGUgcG9vbCB3aGVuIHRo ZXJlJ3Mgbm8gdXNlciBvZgp0aGF0IGNvbm5lY3Rpb24uIFRoaXMgaXMgc2ltaWxhciB0byBob3cg c3VjaCBjbGllbnRzIG9mdGVuIGN1cnJlbnRseQpyZW1vdmUgYSBjb25uZWN0aW9uIGZyb20gdGhl IHBvb2wgYWZ0ZXIgdGhlIGNvbm5lY3Rpb24gaGl0cyBhIG1heGltdW0KbGlmZXRpbWUgb2YgZS5n LiAxIGhvdXIuCgpUaGlzIG5ldyBtZXNzYWdlIGlzIHVzZWQgYnkgUG9zdGdyZXMgZHVyaW5nIHRo ZSBhbHJlYWR5IGV4aXN0aW5nICJzbWFydCIKc2h1dGRvd24gcHJvY2VkdXJlIChpLmUuIHdoZW4g cG9zdG1hc3RlciByZWNlaXZlcyBTSUdURVJNKS4gV2hlbgpQb3N0Z3JlcyBpcyBpbiAic21hcnQi IHNodXRkb3duIG1vZGUgZXhpc3RpbmcgY2xpZW50cyBjYW4gY29udGludWUgdG8KcnVuIHF1ZXJp ZXMgYXMgdXN1YWwgYnV0IG5ldyBjb25uZWN0aW9uIGF0dGVtcHRzIGFyZSByZWplY3RlZC4gVGhp cyBtb2RlCmlzIHByaW1hcmlseSB1c2VmdWwgd2hlbiB0cmlnZ2VyaW5nIGEgc3dpdGNob3ZlciBv ZiBhIHJlYWQgcmVwbGljYS4gQQpsb2FkIGJhbGFuY2VyIGNhbiByb3V0ZSBuZXcgY29ubmVjdGlv bnMgb25seSB0byB0aGUgbmV3IHJlYWQgcmVwbGljYSwKd2hpbGUgdGhlIG9sZCBsb2FkIGJhbGFu Y2VyIGtlZXBzIHNlcnZpbmcgdGhlIGV4aXN0aW5nIGNvbm5lY3Rpb25zIHVudGlsCnRoZXkgZGlz Y29ubmVjdC4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGlzIGRyYWluaW5nIG9mIGNvbm5lY3Rpb25z IGNvdWxkCm9mdGVuIHRha2UgYSBsb25nIHRpbWUuIEV2ZW4gd2hlbiBjbGllbnRzIG9ubHkgcnVu IHZlcnkgc2hvcnQKcXVlcmllcy90cmFuc2FjdGlvbnMgYmVjYXVzZSB0aGUgc2Vzc2lvbiBjYW4g YmUga2VwdCBvcGVuIG11Y2ggbG9uZ2VyCihtYW55IGNvbm5lY3Rpb24gcG9vbHMgdXNlIDEgaG91 ciBtYXggbGlmZXRpbWUgb2YgYSBjb25uZWN0aW9uIGJ5IGRlZmF1bHQpLgpXaXRoIHRoZSBpbnRy b2R1Y3Rpb24gb2YgdGhlIEdvQXdheSBtZXNzYWdlIFBvc3RncmVzIG5vdyBzZW5kcyB0aGlzCm1l c3NhZ2UgdG8gYWxsIGNvbm5lY3RlZCBjbGllbnRzIHdoZW4gaXQgZW50ZXJzIHNtYXJ0IHNodXRk b3duIG1vZGUuCklmIHRoZXNlIGNsaWVudHMgcmVzcG9uZCB0byB0aGUgbWVzc2FnZSBieSByZWNv bm5lY3RpbmcvZGlzY29ubmVjdGluZwplYXJsaWVyIHRoYW4gdGhlaXIgbWF4aW11bSBjb25uZWN0 aW9uIGxpZmV0aW1lIHRoZSBkcmFpbmluZyBjYW4gY29tcGxldGUKbXVjaCBxdWlja2VyLiBTaW1p bGFyIGJlbmVmaXRzIHRvIHN3aXRjaG92ZXIgZHVyYXRpb24gY2FuIGJlIGFjaGlldmVkCmZvciBv dGhlciBhcHBsaWNhdGlvbnMgb3IgcHJveGllcyBpbXBsZW1lbnRpbmcgdGhlIFBvc3RncmVzIHBy b3RvY29sLApsaWtlIHdoZW4gc3dpdGNoaW5nIG92ZXIgYSBjbHVzdGVyIG9mIFBnQm91bmNlciBt YWNoaW5lcyB0byBhIG5ld2VyCnZlcnNpb24uCgpBcHBsaWNhdGlvbnMvY2xpZW50cyB0aGF0IHVz ZSBsaWJwcSBjYW4gcGVyaW9kaWNhbGx5IGNoZWNrIHRoZSByZXN1bHQgb2YKUFFnb0F3YXlSZWNl aXZlZCgpIGF0IGFuIGluYWN0aXZlIHRpbWUgdG8gc2VlIHdoZXRoZXIgdGhleSBhcmUgYXNrZWQg dG8KcmVjb25uZWN0LgotLS0KIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sICAgICAgICAgICAgICB8 IDUyICsrKysrKysrKysrKysrKysrKysrKwogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgICAg ICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9wb3N0bWFzdGVyLmMgIHwgMjYgKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3Byb2NzaWduYWwuYyB8ICAzICsrCiBzcmMvYmFja2VuZC90Y29wL2JhY2tlbmRfc3Rh cnR1cC5jICAgfCAyMSArKysrKysrLS0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAg ICAgICB8IDM2ICsrKysrKysrKysrKysrCiBzcmMvYmluL3BzcWwvY29tbW9uLmMgICAgICAgICAg ICAgICAgfCAgNyArKysKIHNyYy9iaW4vcHNxbC9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAx ICsKIHNyYy9iaW4vcHNxbC90LzA0MF9nb2F3YXkucGwgICAgICAgICB8IDQ2ICsrKysrKysrKysr KysrKysrKwogc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUuaCAgICAgICAgIHwgIDUgKysKIHNy Yy9pbmNsdWRlL2xpYnBxL3Byb3RvY29sLmggICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvY3NpZ25hbC5oICAgICB8ICAzICstCiBzcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90 LmggICAgICAgICAgfCAgMSArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dCAgICAg fCAgMSArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgICAgfCAgMSArCiBzcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMgICAgICAgfCAyNyArKysrKysrKysrKwogc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMgIHwgMzkgKysrKysrKysrKysrKystLQogc3Jj L2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCAgICAgIHwgIDMgKysKIHNyYy9pbnRlcmZhY2Vz L2xpYnBxL2xpYnBxLWludC5oICAgICB8ICAxICsKIDE5IGZpbGVzIGNoYW5nZWQsIDMzMSBpbnNl cnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3Bz cWwvdC8wNDBfZ29hd2F5LnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAppbmRleCA2ZGI4MjM4MDhmYy4uYjMwNGJjYTc2NWMg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9s aWJwcS5zZ21sCkBAIC0yMjQ4LDYgKzIyNDgsMTQgQEAgcG9zdGdyZXNxbDovLyUyRnZhciUyRmxp YiUyRnBvc3RncmVzcWwvZGJuYW1lCiAgICAgICAgIGVxdWl2YWxlbnQgdG8gdGhlIGxhdGVzdCBw cm90b2NvbCB2ZXJzaW9uIHN1cHBvcnRlZCBieSB0aGUgbGlicHEKICAgICAgICAgdmVyc2lvbiBi ZWluZyB1c2VkLCB3aGljaCBpcyBjdXJyZW50bHkgPGxpdGVyYWw+My4yPC9saXRlcmFsPi4KICAg ICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgV2hlbiB1c2luZyBwcm90b2Nv bCB2ZXJzaW9uIDxsaXRlcmFsPjMuMjwvbGl0ZXJhbD4gb3IgaGlnaGVyLAorICAgICAgICA8YXBw bGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPiByZXF1ZXN0cyBhbGwgc3VwcG9ydGVkCisgICAg ICAgIDxsaW5rIGxpbmtlbmQ9InByb3RvY29sLWV4dGVuc2lvbnMiPnByb3RvY29sIGV4dGVuc2lv bnM8L2xpbms+CisgICAgICAgIGZyb20gdGhlIHNlcnZlciwgc3VjaCBhcyA8bGl0ZXJhbD5nb2F3 YXk8L2xpdGVyYWw+CisgICAgICAgIHdoaWNoIGVuYWJsZXMgPHhyZWYgbGlua2VuZD0ibGlicHEt UFFnb0F3YXlSZWNlaXZlZCIvPi4KKyAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgog ICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMzAwNCw2ICszMDEyLDUwIEBAIGludCBQUXNlcnZl clZlcnNpb24oY29uc3QgUEdjb25uICpjb25uKTsKICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zh cmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRZ29Bd2F5UmVjZWl2 ZWQiPgorICAgICA8dGVybT48ZnVuY3Rpb24+UFFnb0F3YXlSZWNlaXZlZDwvZnVuY3Rpb24+PGlu ZGV4dGVybT48cHJpbWFyeT5QUWdvQXdheVJlY2VpdmVkPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwv dGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgUmV0dXJucyB0cnVl IGlmIHRoZSBzZXJ2ZXIgaGFzIHNlbnQgYSA8bGl0ZXJhbD5Hb0F3YXk8L2xpdGVyYWw+IG1lc3Nh Z2UsCisgICAgICAgcmVxdWVzdGluZyB0aGUgY2xpZW50IHRvIGRpc2Nvbm5lY3Qgd2hlbiBjb252 ZW5pZW50LgorCis8c3lub3BzaXM+CitpbnQgUFFnb0F3YXlSZWNlaXZlZChjb25zdCBQR2Nvbm4g KmNvbm4pOworPC9zeW5vcHNpcz4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAg ICAgVGhlIDxsaXRlcmFsPkdvQXdheTwvbGl0ZXJhbD4gbWVzc2FnZSBpcyBzZW50IGJ5IHRoZSBz ZXJ2ZXIgZHVyaW5nIGEKKyAgICAgICBzbWFydCBzaHV0ZG93biB0byBwb2xpdGVseSByZXF1ZXN0 IHRoYXQgY2xpZW50cyBkaXNjb25uZWN0LiBUaGlzIGlzCisgICAgICAgYWR2aXNvcnkgb25seSAt IHRoZSBjb25uZWN0aW9uIHJlbWFpbnMgZnVsbHkgZnVuY3Rpb25hbCBhbmQgcXVlcmllcworICAg ICAgIGNhbiBjb250aW51ZSB0byBiZSBleGVjdXRlZC4gQXBwbGljYXRpb25zIGNhbiBjaG9vc2Ug dG8gaG9ub3IgdGhlIHJlcXVlc3QKKyAgICAgICBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcGVy aW9kaWNhbGx5IGFuZCBkaXNjb25uZWN0IGdyYWNlZnVsbHkgd2hlbgorICAgICAgIHBvc3NpYmxl LCBzdWNoIGFzIGFmdGVyIGNvbXBsZXRpbmcgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uCisgICAg ICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgbWVzc2FnZSBpcyBvbmx5IHNl bnQgdG8gY2xpZW50cyB0aGF0IHJlcXVlc3QgdGhlCisgICAgICAgPGxpdGVyYWw+Z29hd2F5PC9s aXRlcmFsPiBwcm90b2NvbCBleHRlbnNpb24gaW4gdGhlIHN0YXJ0dXAgbWVzc2FnZSwKKyAgICAg ICB3aGljaCA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPiBkb2VzIHdoZW4gdXNpbmcg cHJvdG9jb2wgdmVyc2lvbgorICAgICAgIDMuMiBvciBoaWdoZXIgKHNlZSA8eHJlZiBsaW5rZW5k PSJsaWJwcS1jb25uZWN0LW1heC1wcm90b2NvbC12ZXJzaW9uIi8+KS4KKyAgICAgICBUaGUgZnVu Y3Rpb24gcmV0dXJucyAxIGlmIHRoZSA8bGl0ZXJhbD5Hb0F3YXk8L2xpdGVyYWw+IG1lc3NhZ2Ug d2FzCisgICAgICAgcmVjZWl2ZWQsIDAgb3RoZXJ3aXNlLgorICAgICAgPC9wYXJhPgorCisgICAg ICA8cGFyYT4KKyAgICAgICA8ZnVuY3Rpb24+UFFnb0F3YXlSZWNlaXZlZDwvZnVuY3Rpb24+IGRv ZXMgbm90IGFjdHVhbGx5IHJlYWQgZGF0YSBmcm9tIHRoZQorICAgICAgIHNlcnZlcjsgaXQganVz dCByZXR1cm5zIG1lc3NhZ2VzIHByZXZpb3VzbHkgYWJzb3JiZWQgYnkgYW5vdGhlcgorICAgICAg IDxhcHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRpb24+IGZ1bmN0aW9uLiBTbyBub3JtYWxseSB5 b3Ugd291bGQgZmlyc3QKKyAgICAgICBjYWxsIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY29uc3Vt ZUlucHV0Ii8+LCB0aGVuIGNoZWNrCisgICAgICAgPGZ1bmN0aW9uPlBRZ29Bd2F5UmVjZWl2ZWQ8 L2Z1bmN0aW9uPi4gIFlvdSBjYW4gdXNlCisgICAgICAgPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5j dGlvbj4gdG8gd2FpdCBmb3IgZGF0YSB0byBhcnJpdmUgZnJvbSB0aGUKKyAgICAgICBzZXJ2ZXIs IHRoZXJlYnkgdXNpbmcgbm8gPGFjcm9ueW0+Q1BVPC9hY3JvbnltPiBwb3dlciB1bmxlc3MgdGhl cmUgaXMKKyAgICAgICBzb21ldGhpbmcgdG8gZG8uICAoU2VlIDx4cmVmIGxpbmtlbmQ9ImxpYnBx LVBRc29ja2V0Ii8+IHRvIG9idGFpbiB0aGUgZmlsZQorICAgICAgIGRlc2NyaXB0b3IgbnVtYmVy IHRvIHVzZSB3aXRoIDxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+LikKKyAgICAgIDwvcGFy YT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgIDx2YXJsaXN0 ZW50cnkgaWQ9ImxpYnBxLVBRZXJyb3JNZXNzYWdlIj4KICAgICAgPHRlcm0+CiAgICAgICA8ZnVu Y3Rpb24+UFFlcnJvck1lc3NhZ2U8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFlcnJv ck1lc3NhZ2U8L3ByaW1hcnk+PC9pbmRleHRlcm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4IDQ5ZjgxNjc2 NzEyLi5lZWMxM2IyOTQzOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTM0Niw4ICszNDYsMTQgQEAKIAog ICAgICA8dGJvZHk+CiAgICAgICA8cm93PgotICAgICAgIDxlbnRyeSBuYW1lc3Q9Imxhc3QiIGFs aWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIj4KLSAgICAgICAgPGVtcGhhc2lzPihObyBzdXBw b3J0ZWQgcHJvdG9jb2wgZXh0ZW5zaW9ucyBhcmUgY3VycmVudGx5IGRlZmluZWQuKTwvZW1waGFz aXM+CisgICAgICAgPGVudHJ5PjxsaXRlcmFsPmdvYXdheTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgIDxlbnRyeT48bGl0ZXJhbD4xPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgPGVudHJ5PlBv c3RncmVTUUwgMTk8L2VudHJ5PgorICAgICAgIDxlbnRyeT4KKyAgICAgICAgRW5hYmxlcyB0aGUg c2VydmVyIHRvIHNlbmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0icHJvdG9jb2wtbWVzc2FnZS1m b3JtYXRzLUdvQXdheSI+R29Bd2F5PC9saW5rPgorICAgICAgICBtZXNzYWdlcyB0byByZXF1ZXN0 IHRoZSBjbGllbnQgdG8gZGlzY29ubmVjdCB3aGVuIGNvbnZlbmllbnQuCisgICAgICAgIFNlZSA8 eHJlZiBsaW5rZW5kPSJwcm90b2NvbC1hc3luYyIvPiBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAg IDwvZW50cnk+CiAgICAgICA8L3Jvdz4KICAgICAgPC90Ym9keT4KQEAgLTcxMCw2ICs3MTYsMTcg QEAKICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+R29Bd2F5PC90ZXJtPgorICAg ICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgc2VydmVyIHJlcXVlc3Rz IHRoZSBjbGllbnQgcG9saXRlbHkgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24gYXQgaXRzCisgICAg ICAgIGVhcmxpZXN0IGNvbnZlbmllbnQgbW9tZW50LiBTZWUgPHhyZWYgbGlua2VuZD0icHJvdG9j b2wtYXN5bmMiLz4gZm9yCisgICAgICAgIG1vcmUgZGV0YWlscy4KKyAgICAgICA8L3BhcmE+Cisg ICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICA8L3ZhcmlhYmxlbGlz dD4KICAgIDwvcGFyYT4KIApAQCAtMTQ1OCw3ICsxNDc1LDcgQEAgU0VMQ1QgMS8wOzwhLS0gdGhp cyB0eXBvIGlzIGludGVudGlvbmFsIC0tPgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBJ dCBpcyBwb3NzaWJsZSBmb3IgTm90aWNlUmVzcG9uc2UgYW5kIFBhcmFtZXRlclN0YXR1cyBtZXNz YWdlcyB0byBiZQorICAgIEl0IGlzIHBvc3NpYmxlIGZvciBOb3RpY2VSZXNwb25zZSwgUGFyYW1l dGVyU3RhdHVzIGFuZCBHb0F3YXkgbWVzc2FnZXMgdG8gYmUKICAgICBpbnRlcnNwZXJzZWQgYmV0 d2VlbiBDb3B5RGF0YSBtZXNzYWdlczsgZnJvbnRlbmRzIG11c3QgaGFuZGxlIHRoZXNlIGNhc2Vz LAogICAgIGFuZCBzaG91bGQgYmUgcHJlcGFyZWQgZm9yIG90aGVyIGFzeW5jaHJvbm91cyBtZXNz YWdlIHR5cGVzIGFzIHdlbGwgKHNlZQogICAgIDx4cmVmIGxpbmtlbmQ9InByb3RvY29sLWFzeW5j Ii8+KS4gIE90aGVyd2lzZSwgYW55IG1lc3NhZ2UgdHlwZSBvdGhlciB0aGFuCkBAIC0xNTY5LDYg KzE1ODYsMjggQEAgU0VMQ1QgMS8wOzwhLS0gdGhpcyB0eXBvIGlzIGludGVudGlvbmFsIC0tPgog ICAgIHBhcmFtZXRlcnMgdGhhdCBpdCBkb2VzIG5vdCB1bmRlcnN0YW5kIG9yIGNhcmUgYWJvdXQu CiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIEEgR29Bd2F5IG1lc3NhZ2UgaXMgc2VudCBi eSB0aGUgc2VydmVyIHRvIHBvbGl0ZWx5IHJlcXVlc3QgdGhlIGNsaWVudCB0bworICAgIGRpc2Nv bm5lY3Qgd2hlbiBjb252ZW5pZW50IGFuZCByZWNvbm5lY3Qgd2hlbiB0aGUgY2xpZW50IG5lZWRz IGEgY29ubmVjdGlvbgorICAgIGFnYWluLiBUaGlzIGlzIGFkdmlzb3J5IG9ubHkgLSB0aGUgY29u bmVjdGlvbiByZW1haW5zIGZ1bGx5IGZ1bmN0aW9uYWwgYW5kCisgICAgcXVlcmllcyBjYW4gY29u dGludWUgdG8gYmUgZXhlY3V0ZWQuICJXaGVuIGNvbnZlbmllbnQiIGlzIHZlcnkgdmFndWVseQor ICAgIGRlZmluZWQgb24gcHVycG9zZSBiZWNhdXNlIGl0IGRlcGVuZHMgb24gdGhlIGNsaWVudCBh bmQgYXBwbGljYXRpb24gd2hldGhlcgorICAgIHN1Y2ggYSBtb21lbnQgZXZlbiBleGlzdHMuIFNv IGNsaWVudHMgYXJlIGFsbG93ZWQgdG8gY29tcGxldGVseSBpZ25vcmUgdGhpcworICAgIG1lc3Nh Z2UgYW5kIGRpc2Nvbm5lY3Qgd2hlbmV2ZXIgdGhleSBvdGhlcndpc2Ugd291bGQgaGF2ZS4gQW4g aW1wb3J0YW50CisgICAgdHlwZSBvZiBjbGllbnQgdGhhdCBjYW4gYWN0dWFsbHkgaG9ub3IgdGhl IHJlcXVlc3QgdG8gZGlzY29ubmVjdCBlYXJseSBpcyBhCisgICAgY2xpZW50IHRoYXQgbWFpbnRh aW5zIGEgY29ubmVjdGlvbiBwb29sLiBTdWNoIGEgY2xpZW50IGNhbiBob25vciB0aGUKKyAgICBy ZXF1ZXN0IGJ5IGRpc2Nvbm5lY3RpbmcgYSBjb25uZWN0aW9uIHRoYXQgaGFzIHJlY2VpdmVkIGEg R29Bd2F5IG1lc3NhZ2UKKyAgICB3aGVuIGl0J3Mgbm90IGluIHVzZSBieSBhIHVzZXIgb2YgdGhl IHBvb2wuIEl0IGlzIGFsbG93ZWQgZm9yIGEgc2VydmVyIHRvCisgICAgc2VuZCBtdWx0aXBsZSBH b0F3YXkgbWVzc2FnZXMgb24gdGhlIHNhbWUgY29ubmVjdGlvbiwgYnV0IGFueSBzdWJzZXF1ZW50 CisgICAgR29Bd2F5IG1lc3NhZ2VzIGFmdGVyIHRoZSBmaXJzdCBHb0F3YXkgaGF2ZSBubyBlZmZl Y3Qgb24gdGhlIGNsaWVudCdzCisgICAgYmVoYXZpb3IuIFRoZSBHb0F3YXkgbWVzc2FnZSBpcyBj dXJyZW50bHkgc2VudCBieSBQb3N0Z3JlcyBkdXJpbmcgdGhlCisgICAgInNtYXJ0IiBzaHV0ZG93 biBwcm9jZWR1cmUgKGkuZS4gd2hlbiBwb3N0bWFzdGVyIHJlY2VpdmVzCisgICAgPHN5c3RlbWl0 ZW0+U0lHVEVSTTwvc3lzdGVtaXRlbT4pLiBUaGUgc2VydmVyIG9ubHkgc2VuZHMgdGhlIEdvQXdh eQorICAgIG1lc3NhZ2UgdG8gY2xpZW50cyB0aGF0IHJlcXVlc3QgdGhlIDxsaXRlcmFsPmdvYXdh eTwvbGl0ZXJhbD4gcHJvdG9jb2wKKyAgICBleHRlbnNpb24gYnkgc2V0dGluZyA8bGl0ZXJhbD5f cHFfLmdvYXdheTwvbGl0ZXJhbD4gdG8gPGxpdGVyYWw+MTwvbGl0ZXJhbD4KKyAgICBpbiB0aGUg U3RhcnR1cE1lc3NhZ2UuCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIElmIGEgZnJvbnRl bmQgaXNzdWVzIGEgPGNvbW1hbmQ+TElTVEVOPC9jb21tYW5kPiBjb21tYW5kLCB0aGVuIHRoZQog ICAgIGJhY2tlbmQgd2lsbCBzZW5kIGEgTm90aWZpY2F0aW9uUmVzcG9uc2UgbWVzc2FnZSAobm90 IHRvIGJlCkBAIC01MzU5LDYgKzUzOTgsMzEgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxp Y2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InByb3RvY29sLW1lc3Nh Z2UtZm9ybWF0cy1Hb0F3YXkiPgorICAgIDx0ZXJtPkdvQXdheSAoQik8L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAg ICA8dGVybT5CeXRlMSgnZycpPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgICBJZGVudGlmaWVzIHRoZSBtZXNzYWdlIGFzIGEgcG9saXRlIHJlcXVlc3Qg Zm9yIHRoZSBjbGllbnQgdG8gZGlzY29ubmVjdC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwv bGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgICA8dGVybT5JbnQzMig0KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAg IDxwYXJhPgorICAgICAgICAgTGVuZ3RoIG9mIG1lc3NhZ2UgY29udGVudHMgaW4gYnl0ZXMsIGlu Y2x1ZGluZyBzZWxmLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAg IDwvdmFybGlzdGVudHJ5PgorICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InByb3RvY29sLW1lc3Nh Z2UtZm9ybWF0cy1HU1NFTkNSZXF1ZXN0Ij4KICAgICA8dGVybT5HU1NFTkNSZXF1ZXN0IChGKTwv dGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4 IDNmYWM0NmM0MDJiLi45YTdiYWFiYTllNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVy LmMKQEAgLTIxMzQsNyArMjEzNCwzMyBAQCBwcm9jZXNzX3BtX3NodXRkb3duX3JlcXVlc3Qodm9p ZCkKIAkJCSAqIGxhdGVyIHN0YXRlLCBkbyBub3QgY2hhbmdlIGl0LgogCQkJICovCiAJCQlpZiAo cG1TdGF0ZSA9PSBQTV9SVU4gfHwgcG1TdGF0ZSA9PSBQTV9IT1RfU1RBTkRCWSkKKwkJCXsKKwkJ CQlkbGlzdF9pdGVyCWl0ZXI7CisKIAkJCQljb25uc0FsbG93ZWQgPSBmYWxzZTsKKworCQkJCS8q CisJCQkJICogU2lnbmFsIGFsbCBiYWNrZW5kcyB0byBzZW5kIGEgR29Bd2F5IG1lc3NhZ2UgdG8g dGhlaXIKKwkJCQkgKiBjbGllbnRzLCB0byBwb2xpdGVseSByZXF1ZXN0IHRoYXQgdGhleSBkaXNj b25uZWN0LgorCQkJCSAqLworCQkJCWRsaXN0X2ZvcmVhY2goaXRlciwgJkFjdGl2ZUNoaWxkTGlz dCkKKwkJCQl7CisJCQkJCVBNQ2hpbGQgICAgKmJwID0gZGxpc3RfY29udGFpbmVyKFBNQ2hpbGQs IGVsZW0sIGl0ZXIuY3VyKTsKKworCQkJCQkvKgorCQkJCQkgKiBPbmx5IHNpZ25hbCByZWd1bGFy IGJhY2tlbmRzLCBzaW5jZSB0aG9zZSBhcmUgdGhlIG9uZXMKKwkJCQkJICogdGhhdCBuZWVkIHRv IG5vdGlmeSB0aGVpciBjbGllbnRzIHVzaW5nIGEgR29Bd2F5CisJCQkJCSAqIG1lc3NhZ2UuIEZv bGxvdyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFNpZ25hbENoaWxkcmVuIHRvCisJCQkJCSAqIGNvcnJl Y3RseSBkaXN0aW5ndWlzaCBiYWNrZW5kcyBmcm9tIFdBTCBzZW5kZXJzLgorCQkJCQkgKi8KKwkJ CQkJaWYgKGJwLT5ia2VuZF90eXBlID09IEJfQkFDS0VORCAmJgorCQkJCQkJIUlzUG9zdG1hc3Rl ckNoaWxkV2FsU2VuZGVyKGJwLT5jaGlsZF9zbG90KSkKKwkJCQkJeworCQkJCQkJU2VuZFByb2NT aWduYWwoYnAtPnBpZCwgUFJPQ1NJR19TTUFSVF9TSFVURE9XTiwKKwkJCQkJCQkJCSAgIElOVkFM SURfUFJPQ19OVU1CRVIpOworCQkJCQl9CisJCQkJfQorCQkJfQogCQkJZWxzZSBpZiAocG1TdGF0 ZSA9PSBQTV9TVEFSVFVQIHx8IHBtU3RhdGUgPT0gUE1fUkVDT1ZFUlkpCiAJCQl7CiAJCQkJLyog VGhlcmUgc2hvdWxkIGJlIG5vIGNsaWVudHMsIHNvIHByb2NlZWQgdG8gc3RvcCBjaGlsZHJlbiAq LwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCmluZGV4IDdlMDE3YzhkNTNiLi5kYmEz MmI5MTg2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtNjk3LDYgKzY5 Nyw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVj a1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlIYW5kbGVMb2dNZW1v cnlDb250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfU01B UlRfU0hVVERPV04pKQorCQlIYW5kbGVTbWFydFNodXRkb3duSW50ZXJydXB0KCk7CisKIAlpZiAo Q2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCiAJCUhhbmRs ZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvYmFja2VuZF9zdGFydHVwLmMgYi9zcmMvYmFja2VuZC90Y29wL2JhY2tlbmRfc3Rh cnR1cC5jCmluZGV4IGM1MTcxMTU5MjdjLi4xN2FiMDYzYmNhYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYworKysgYi9zcmMvYmFja2VuZC90Y29wL2JhY2tl bmRfc3RhcnR1cC5jCkBAIC03NzksMTEgKzc3OSwyNCBAQCBQcm9jZXNzU3RhcnR1cFBhY2tldChQ b3J0ICpwb3J0LCBib29sIHNzbF9kb25lLCBib29sIGdzc19kb25lKQogCQkJewogCQkJCS8qCiAJ CQkJICogQW55IG9wdGlvbiBiZWdpbm5pbmcgd2l0aCBfcHFfLiBpcyByZXNlcnZlZCBmb3IgdXNl IGFzIGEKLQkJCQkgKiBwcm90b2NvbC1sZXZlbCBvcHRpb24sIGJ1dCBhdCBwcmVzZW50IG5vIHN1 Y2ggb3B0aW9ucyBhcmUKLQkJCQkgKiBkZWZpbmVkLgorCQkJCSAqIHByb3RvY29sLWxldmVsIG9w dGlvbi4KIAkJCQkgKi8KLQkJCQl1bnJlY29nbml6ZWRfcHJvdG9jb2xfb3B0aW9ucyA9Ci0JCQkJ CWxhcHBlbmQodW5yZWNvZ25pemVkX3Byb3RvY29sX29wdGlvbnMsIHBzdHJkdXAobmFtZXB0cikp OworCQkJCWlmIChzdHJjbXAobmFtZXB0ciwgIl9wcV8uZ29hd2F5IikgPT0gMCkKKwkJCQl7CisJ CQkJCS8qIENsaWVudCB3YW50cyB0byByZWNlaXZlIEdvQXdheSBtZXNzYWdlcy4gKi8KKwkJCQkJ aWYgKHN0cmNtcCh2YWxwdHIsICIxIikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRkFUQUwsCisJCQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJCQkJIGVycm1z ZygiaW52YWxpZCB2YWx1ZSBmb3IgcHJvdG9jb2wgb3B0aW9uIFwiJXNcIjogXCIlc1wiIiwKKwkJ CQkJCQkJCQluYW1lcHRyLCB2YWxwdHIpLAorCQkJCQkJCQkgZXJyaGludCgiVmFsaWQgdmFsdWVz IGFyZTogXCIxXCIuIikpKTsKKwkJCQkJcG9ydC0+Z29hd2F5X25lZ290aWF0ZWQgPSB0cnVlOwor CQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQl1bnJlY29nbml6ZWRfcHJvdG9jb2xfb3B0aW9u cyA9CisJCQkJCQlsYXBwZW5kKHVucmVjb2duaXplZF9wcm90b2NvbF9vcHRpb25zLCBwc3RyZHVw KG5hbWVwdHIpKTsKKwkJCQl9CiAJCQl9CiAJCQllbHNlCiAJCQl7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5k ZXggZDAxYTA5ZGQwYzQuLjRkY2RiMjFjOThiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC00Miw4ICs0 MiwxMCBAQAogI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCiAjaW5jbHVkZSAiaml0L2ppdC5o IgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCisjaW5jbHVkZSAibGlicHEvcHFjb21tLmgiCiAj aW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgor I2luY2x1ZGUgImxpYnBxL3Byb3RvY29sLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNp bmNsdWRlICJtYi9zdHJpbmdpbmZvX21iLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC05 Miw2ICs5NCwxNCBAQCBjb25zdCBjaGFyICpkZWJ1Z19xdWVyeV9zdHJpbmc7IC8qIGNsaWVudC1z dXBwbGllZCBxdWVyeSBzdHJpbmcgKi8KIC8qIE5vdGU6IHdoZXJlVG9TZW5kT3V0cHV0IGlzIGlu aXRpYWxpemVkIGZvciB0aGUgYm9vdHN0cmFwL3N0YW5kYWxvbmUgY2FzZSAqLwogQ29tbWFuZERl c3Qgd2hlcmVUb1NlbmRPdXRwdXQgPSBEZXN0RGVidWc7CiAKKy8qCisgKiBUcmFjayB3aGV0aGVy IHdlJ3ZlIGJlZW4gbm90aWZpZWQgb2Ygc21hcnQgc2h1dGRvd24gYW5kIHNlbnQgR29Bd2F5Lgor ICogU21hcnRTaHV0ZG93blBlbmRpbmcgaXMgc2V0IGJ5IHRoZSBQUk9DU0lHX1NNQVJUX1NIVVRE T1dOIHNpZ25hbCBoYW5kbGVyLgorICogR29Bd2F5U2VudCB0cmFja3Mgd2hldGhlciB3ZSd2ZSBh bHJlYWR5IHNlbnQgdGhlIEdvQXdheSBtZXNzYWdlLgorICovCitzdGF0aWMgdm9sYXRpbGUgc2ln X2F0b21pY190IFNtYXJ0U2h1dGRvd25QZW5kaW5nID0gZmFsc2U7CitzdGF0aWMgYm9vbCBHb0F3 YXlTZW50ID0gZmFsc2U7CisKIC8qIGZsYWcgZm9yIGxvZ2dpbmcgZW5kIG9mIHNlc3Npb24gKi8K IGJvb2wJCUxvZ19kaXNjb25uZWN0aW9ucyA9IGZhbHNlOwogCkBAIC01MDcsNiArNTE3LDIwIEBA IFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KGJvb2wgYmxvY2tlZCkKIAkJLyogQ2hlY2sgZm9y IGdlbmVyYWwgaW50ZXJydXB0cyB0aGF0IGFycml2ZWQgYmVmb3JlL3doaWxlIHJlYWRpbmcgKi8K IAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAorCQkvKiBTZW5kIEdvQXdheSBtZXNzYWdlIGlm IHNtYXJ0IHNodXRkb3duIGlzIHBlbmRpbmcgKi8KKwkJaWYgKFNtYXJ0U2h1dGRvd25QZW5kaW5n ICYmICFHb0F3YXlTZW50ICYmCisJCQl3aGVyZVRvU2VuZE91dHB1dCA9PSBEZXN0UmVtb3RlICYm CisJCQlNeVByb2NQb3J0ICYmIE15UHJvY1BvcnQtPmdvYXdheV9uZWdvdGlhdGVkKQorCQl7CisJ CQlTdHJpbmdJbmZvRGF0YSBidWY7CisKKwkJCXBxX2JlZ2lubWVzc2FnZSgmYnVmLCBQcU1zZ19H b0F3YXkpOworCQkJcHFfZW5kbWVzc2FnZSgmYnVmKTsKKwkJCXBxX2ZsdXNoKCk7CisKKwkJCUdv QXdheVNlbnQgPSB0cnVlOworCQl9CisKIAkJLyogUHJvY2VzcyBzaW52YWwgY2F0Y2h1cCBpbnRl cnJ1cHRzLCBpZiBhbnkgKi8KIAkJaWYgKGNhdGNodXBJbnRlcnJ1cHRQZW5kaW5nKQogCQkJUHJv Y2Vzc0NhdGNodXBJbnRlcnJ1cHQoKTsKQEAgLTMwNjYsNiArMzA5MCwxOCBAQCBGbG9hdEV4Y2Vw dGlvbkhhbmRsZXIoU0lHTkFMX0FSR1MpCiAJCQkJCSAgICJpbnZhbGlkIG9wZXJhdGlvbiwgc3Vj aCBhcyBkaXZpc2lvbiBieSB6ZXJvLiIpKSk7CiB9CiAKKy8qCisgKiBUZWxsIHRoZSBuZXh0IFBy b2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KCkgY2FsbCB0byBzZW5kIGEgR29Bd2F5IG1lc3NhZ2Ug dG8KKyAqIHRoZSBjbGllbnQuICBSdW5zIGluIGEgU0lHVVNSMSBoYW5kbGVyLgorICovCit2b2lk CitIYW5kbGVTbWFydFNodXRkb3duSW50ZXJydXB0KHZvaWQpCit7CisJU21hcnRTaHV0ZG93blBl bmRpbmcgPSB0cnVlOworCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCS8qIGxhdGNoIHdpbGwg YmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCit9CisKIC8qCiAgKiBUZWxs IHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gcHJvY2VzcyByZWNvdmVyeSBjb25m bGljdHMuICBSdW5zCiAgKiBpbiBhIFNJR1VTUjEgaGFuZGxlci4KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwppbmRleCAyZWFkZDM5MWE5 Yy4uNGU5OWVkNjk4NDEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tb24uYworKysgYi9z cmMvYmluL3BzcWwvY29tbW9uLmMKQEAgLTczOSw2ICs3MzksNyBAQCBQU1FMZXhlY1dhdGNoKGNv bnN0IGNoYXIgKnF1ZXJ5LCBjb25zdCBwcmludFF1ZXJ5T3B0ICpvcHQsIEZJTEUgKnByaW50UXVl cnlGb3V0LAogc3RhdGljIHZvaWQKIFByaW50Tm90aWZpY2F0aW9ucyh2b2lkKQogeworCXN0YXRp YyBib29sIGdvYXdheV9yZXBvcnRlZCA9IGZhbHNlOwogCVBHbm90aWZ5ICAgKm5vdGlmeTsKIAog CVBRY29uc3VtZUlucHV0KHBzZXQuZGIpOwpAQCAtNzU1LDYgKzc1NiwxMiBAQCBQcmludE5vdGlm aWNhdGlvbnModm9pZCkKIAkJUFFmcmVlbWVtKG5vdGlmeSk7CiAJCVBRY29uc3VtZUlucHV0KHBz ZXQuZGIpOwogCX0KKworCWlmICghZ29hd2F5X3JlcG9ydGVkICYmIFBRZ29Bd2F5UmVjZWl2ZWQo cHNldC5kYikpCisJeworCQlwZ19sb2dfaW5mbygiU2VydmVyIHNlbnQgR29Bd2F5LCByZXF1ZXN0 aW5nIGRpc2Nvbm5lY3Qgd2hlbiBjb252ZW5pZW50LiIpOworCQlnb2F3YXlfcmVwb3J0ZWQgPSB0 cnVlOworCX0KIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvbWVzb24uYnVpbGQgYi9z cmMvYmluL3BzcWwvbWVzb24uYnVpbGQKaW5kZXggOTIyYjI4NDUyNjcuLjA0N2I0MGNjNDBlIDEw MDY0NAotLS0gYS9zcmMvYmluL3BzcWwvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wc3FsL21l c29uLmJ1aWxkCkBAIC03OCw2ICs3OCw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAxMF90YWJf Y29tcGxldGlvbi5wbCcsCiAgICAgICAndC8wMjBfY2FuY2VsLnBsJywKICAgICAgICd0LzAzMF9w YWdlci5wbCcsCisgICAgICAndC8wNDBfZ29hd2F5LnBsJywKICAgICBdLAogICB9LAogfQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3QvMDQwX2dvYXdheS5wbCBiL3NyYy9iaW4vcHNxbC90LzA0 MF9nb2F3YXkucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE1MzY1 MzMwOGJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wc3FsL3QvMDQwX2dvYXdheS5wbApA QCAtMCwwICsxLDQ2IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7Cit1c2UgVGltZTo6SGlSZXMgcXco dXNsZWVwKTsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ21h aW4nKTsKKyRub2RlLT5pbml0OworJG5vZGUtPnN0YXJ0OworCitteSAkcHNxbCA9ICRub2RlLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisKKyMgQ29uZmlybSBjb25uZWN0aW9uIHdvcmtz CitteSAkcmVzdWx0ID0gJHBzcWwtPnF1ZXJ5X3NhZmUoIlNFTEVDVCAnYmVmb3JlX2dvYXdheSci KTsKK2xpa2UoJHJlc3VsdCwgcXIvYmVmb3JlX2dvYXdheS8sICdjb25uZWN0aW9uIHdvcmtzIGJl Zm9yZSBzbWFydCBzaHV0ZG93bicpOworCisjIEluaXRpYXRlIHNtYXJ0IHNodXRkb3duIHdpdGhv dXQgd2FpdGluZyBmb3IgaXQgdG8gY29tcGxldGUKKyRub2RlLT5jb21tYW5kX29rKAorCVsgJ3Bn X2N0bCcsICdzdG9wJywgJy1EJywgJG5vZGUtPmRhdGFfZGlyLCAnLW0nLCAnc21hcnQnLCAnLS1u by13YWl0JyBdLAorCSdwZ19jdGwgc21hcnQgc2h1dGRvd24nKTsKKworIyBUaGUgYmFja2VuZCBz ZW5kcyBHb0F3YXkgb25jZSBpdCBwcm9jZXNzZXMgdGhlIHNtYXJ0IHNodXRkb3duIHNpZ25hbC4K KyMgUG9sbCB3aXRoIHF1ZXJpZXMgdW50aWwgcHNxbCByZXBvcnRzIGl0LgorbXkgJHNhd19nb2F3 YXkgPSAwOworZm9yIChteSAkaSA9IDA7ICRpIDwgMTAwOyAkaSsrKQoreworCW15ICRvdXQgPSAk cHNxbC0+cXVlcnkoIlNFTEVDVCAnYWZ0ZXJfZ29hd2F5JyIpOworCWlmICgkcHNxbC0+e3N0ZGVy cn0gPX4gL1NlcnZlciBzZW50IEdvQXdheSwgcmVxdWVzdGluZyBkaXNjb25uZWN0IHdoZW4gY29u dmVuaWVudC8pCisJeworCQkkc2F3X2dvYXdheSA9IDE7CisJCSMgVGhlIHF1ZXJ5IHNob3VsZCBz dGlsbCBoYXZlIHN1Y2NlZWRlZAorCQlsaWtlKCRvdXQsIHFyL2FmdGVyX2dvYXdheS8sICdxdWVy eSBzdGlsbCB3b3JrcyBhZnRlciBHb0F3YXknKTsKKwkJbGFzdDsKKwl9CisJdXNsZWVwKDUwXzAw MCk7Cit9Citvaygkc2F3X2dvYXdheSwgJ3BzcWwgcmVwb3J0ZWQgR29Bd2F5IG5vdGljZSBkdXJp bmcgc21hcnQgc2h1dGRvd24nKTsKKworJHBzcWwtPnF1aXQ7CisKK2RvbmVfdGVzdGluZygpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUuaCBiL3NyYy9pbmNsdWRlL2xp YnBxL2xpYnBxLWJlLmgKaW5kZXggOTIxYjJkYWE0ZmYuLmI4NzY5NDEyYzcyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL2xp YnBxLWJlLmgKQEAgLTIwMiw2ICsyMDIsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydAogCXZvaWQJ ICAgKmdzczsKICNlbmRpZgogCisJLyoKKwkgKiBQcm90b2NvbCBleHRlbnNpb25zLgorCSAqLwor CWJvb2wJCWdvYXdheV9uZWdvdGlhdGVkOwkvKiBjbGllbnQgc3VwcG9ydHMgR29Bd2F5IG1lc3Nh Z2UgKi8KKwogCS8qCiAJICogU1NMIHN0cnVjdHVyZXMuCiAJICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9saWJwcS9wcm90b2NvbC5oIGIvc3JjL2luY2x1ZGUvbGlicHEvcHJvdG9jb2wuaApp bmRleCBlYWU4ZjBlNzIzOC4uZmQzYzE5NWRhYTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xp YnBxL3Byb3RvY29sLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvcHJvdG9jb2wuaApAQCAtNTMs NiArNTMsNyBAQAogI2RlZmluZSBQcU1zZ19GdW5jdGlvbkNhbGxSZXNwb25zZQknVicKICNkZWZp bmUgUHFNc2dfQ29weUJvdGhSZXNwb25zZQkJJ1cnCiAjZGVmaW5lIFBxTXNnX1JlYWR5Rm9yUXVl cnkJCQknWicKKyNkZWZpbmUgUHFNc2dfR29Bd2F5CQkJCSdnJwogI2RlZmluZSBQcU1zZ19Ob0Rh dGEJCQkJJ24nCiAjZGVmaW5lIFBxTXNnX1BvcnRhbFN1c3BlbmRlZAkJJ3MnCiAjZGVmaW5lIFBx TXNnX1BhcmFtZXRlckRlc2NyaXB0aW9uCSd0JwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRl eCAzNDhmYmE1M2E5My4uYmJhMzhiOTJmMjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBA IC0zOSw5ICszOSwxMCBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU LAkvKiBiYWNrZW5kIGlzIGJsb2NraW5nIHJlY292ZXJ5LCBjaGVjawogCQkJCQkJCQkgKiBQR1BS T0MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cyBmb3IgdGhlCiAJCQkJCQkJCSAqIHJlYXNvbiAq LworCVBST0NTSUdfU01BUlRfU0hVVERPV04sCQkvKiBub3RpZnkgYmFja2VuZCBvZiBzbWFydCBz aHV0ZG93biAqLwogfSBQcm9jU2lnbmFsUmVhc29uOwogCi0jZGVmaW5lIE5VTV9QUk9DU0lHTkFM UyAoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVCArIDEpCisjZGVmaW5lIE5VTV9QUk9DU0lHTkFM UyAoUFJPQ1NJR19TTUFSVF9TSFVURE9XTiArIDEpCiAKIHR5cGVkZWYgZW51bQogewpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29w cHJvdC5oCmluZGV4IDViYzViY2ZiMjBkLi43NDQ3NjA5YjNjZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdGNvcC90Y29wcHJvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaApA QCAtNzQsNiArNzQsNyBAQCBleHRlcm4gdm9pZCBkaWUoU0lHTkFMX0FSR1MpOwogcGdfbm9yZXR1 cm4gZXh0ZXJuIHZvaWQgcXVpY2tkaWUoU0lHTkFMX0FSR1MpOwogZXh0ZXJuIHZvaWQgU3RhdGVt ZW50Q2FuY2VsSGFuZGxlcihTSUdOQUxfQVJHUyk7CiBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBG bG9hdEV4Y2VwdGlvbkhhbmRsZXIoU0lHTkFMX0FSR1MpOworZXh0ZXJuIHZvaWQgSGFuZGxlU21h cnRTaHV0ZG93bkludGVycnVwdCh2b2lkKTsKIGV4dGVybiB2b2lkIEhhbmRsZVJlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jZXNzQ2xpZW50UmVhZEludGVy cnVwdChib29sIGJsb2NrZWQpOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJy dXB0KGJvb2wgYmxvY2tlZCk7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBv cnRzLnR4dCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0CmluZGV4IDFlM2Q1YmQ1 ODY3Li5mNTdhYWU0NmI2NSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0 cy50eHQKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKQEAgLTIxMSwzICsy MTEsNCBAQCBQUWRlZmF1bHRBdXRoRGF0YUhvb2sgICAgIDIwOAogUFFmdWxsUHJvdG9jb2xWZXJz aW9uICAgICAyMDkKIGFwcGVuZFBRRXhwQnVmZmVyVkEgICAgICAgMjEwCiBQUWdldFRocmVhZExv Y2sgICAgICAgICAgIDIxMQorUFFnb0F3YXlSZWNlaXZlZCAgICAgICAgICAyMTIKZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWNvbm5lY3QuYwppbmRleCBkYjliNGM4ZWRiZi4uNGQ4MWQ1ZjAzYmIgMTAwNjQ0Ci0t LSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYworKysgYi9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1jb25uZWN0LmMKQEAgLTcwMSw2ICs3MDEsNyBAQCBwcURyb3BTZXJ2ZXJEYXRh KFBHY29ubiAqY29ubikKIAljb25uLT5wYXNzd29yZF9uZWVkZWQgPSBmYWxzZTsKIAljb25uLT5n c3NhcGlfdXNlZCA9IGZhbHNlOwogCWNvbm4tPndyaXRlX2ZhaWxlZCA9IGZhbHNlOworCWNvbm4t PmdvYXdheV9yZWNlaXZlZCA9IGZhbHNlOwogCWZyZWUoY29ubi0+d3JpdGVfZXJyX21zZyk7CiAJ Y29ubi0+d3JpdGVfZXJyX21zZyA9IE5VTEw7CiAJY29ubi0+b2F1dGhfd2FudF9yZXRyeSA9IGZh bHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCmluZGV4IDIwM2QzODhiZGJmLi5iYzFkOTUzMjRlZCAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCisrKyBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwpAQCAtMjcwMiw2ICsyNzAyLDMzIEBAIFBRbm90aWZpZXMo UEdjb25uICpjb25uKQogCXJldHVybiBldmVudDsKIH0KIAorLyoKKyAqIFBRZ29Bd2F5UmVjZWl2 ZWQKKyAqCSAgcmV0dXJucyAxIGlmIGEgR29Bd2F5IG1lc3NhZ2UgaGFzIGJlZW4gcmVjZWl2ZWQg ZnJvbSB0aGUgc2VydmVyCisgKgkgIHJldHVybnMgMCBpZiBub3QKKyAqCisgKiBOb3RlIHRoYXQg dGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZWFkIGFueSBuZXcgZGF0YSBmcm9tIHRoZSBzb2NrZXQ7 CisgKiBjYWxsZXIgc2hvdWxkIGNhbGwgUFFjb25zdW1lSW5wdXQoKSBmaXJzdCBpZiB0aGV5IHdh bnQgdG8gZW5zdXJlCisgKiBhbGwgYXZhaWxhYmxlIGRhdGEgaGFzIGJlZW4gcmVhZC4KKyAqLwor aW50CitQUWdvQXdheVJlY2VpdmVkKFBHY29ubiAqY29ubikKK3sKKwlpZiAoIWNvbm4pCisJCXJl dHVybiAwOworCisJaWYgKGNvbm4tPmdvYXdheV9yZWNlaXZlZCkKKwkJcmV0dXJuIDE7CisKKwkv KgorCSAqIFBhcnNlIGFueSBhdmFpbGFibGUgZGF0YSB0byBzZWUgaWYgYSBHb0F3YXkgbWVzc2Fn ZSBoYXMgYXJyaXZlZC4KKwkgKi8KKwlwYXJzZUlucHV0KGNvbm4pOworCisJcmV0dXJuIGNvbm4t PmdvYXdheV9yZWNlaXZlZCA/IDEgOiAwOworfQorCisKIC8qCiAgKiBQUXB1dENvcHlEYXRhIC0g c2VuZCBzb21lIGRhdGEgdG8gdGhlIGJhY2tlbmQgZHVyaW5nIENPUFkgSU4gb3IgQ09QWSBCT1RI CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMgYi9z cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYwppbmRleCA4YzFmZGE1Y2FmMC4uZDA5 MDAyYTIyYWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5j CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCkBAIC0xMzQsOCArMTM0 LDggQEAgcHFQYXJzZUlucHV0MyhQR2Nvbm4gKmNvbm4pCiAJCX0KIAogCQkvKgotCQkgKiBOT1RJ RlkgYW5kIE5PVElDRSBtZXNzYWdlcyBjYW4gaGFwcGVuIGluIGFueSBzdGF0ZTsgYWx3YXlzIHBy b2Nlc3MKLQkJICogdGhlbSByaWdodCBhd2F5LgorCQkgKiBOT1RJRlkgYW5kIE5PVElDRSBhbmQg R29Bd2F5IG1lc3NhZ2VzIGNhbiBoYXBwZW4gaW4gYW55IHN0YXRlOworCQkgKiBhbHdheXMgcHJv Y2VzcyB0aGVtIHJpZ2h0IGF3YXkuCiAJCSAqCiAJCSAqIE1vc3Qgb3RoZXIgbWVzc2FnZXMgc2hv dWxkIG9ubHkgYmUgcHJvY2Vzc2VkIHdoaWxlIGluIEJVU1kgc3RhdGUuCiAJCSAqIChJbiBwYXJ0 aWN1bGFyLCBpbiBSRUFEWSBzdGF0ZSB3ZSBob2xkIG9mZiBmdXJ0aGVyIHBhcnNpbmcgdW50aWwK QEAgLTE1OSw2ICsxNTksMTAgQEAgcHFQYXJzZUlucHV0MyhQR2Nvbm4gKmNvbm4pCiAJCQlpZiAo cHFHZXRFcnJvck5vdGljZTMoY29ubiwgZmFsc2UpKQogCQkJCXJldHVybjsKIAkJfQorCQllbHNl IGlmIChpZCA9PSBQcU1zZ19Hb0F3YXkpCisJCXsKKwkJCWNvbm4tPmdvYXdheV9yZWNlaXZlZCA9 IHRydWU7CisJCX0KIAkJZWxzZSBpZiAoY29ubi0+YXN5bmNTdGF0dXMgIT0gUEdBU1lOQ19CVVNZ KQogCQl7CiAJCQkvKiBJZiBub3QgSURMRSBzdGF0ZSwganVzdCB3YWl0IC4uLiAqLwpAQCAtMTQ0 Niw2ICsxNDUwLDcgQEAgcHFHZXROZWdvdGlhdGVQcm90b2NvbFZlcnNpb24zKFBHY29ubiAqY29u bikKIAlpbnQJCQludW07CiAJYm9vbAkJZm91bmRfdGVzdF9wcm90b2NvbF9uZWdvdGlhdGlvbjsK IAlib29sCQlleHBlY3RfdGVzdF9wcm90b2NvbF9uZWdvdGlhdGlvbjsKKwlib29sCQlyZXF1ZXN0 ZWRfZ29hd2F5ID0gY29ubi0+cHZlcnNpb24gPj0gUEdfUFJPVE9DT0woMywgMik7CiAKIAkvKgog CSAqIER1cmluZyAxOWJldGEgb25seSwgaWYgcHJvdG9jb2wgZ3JlYXNlIGlzIGluIHVzZSwgYXNz dW1lIHRoYXQgaXQncyB0aGUKQEAgLTE1MjEsOCArMTUyNiw3IEBAIHBxR2V0TmVnb3RpYXRlUHJv dG9jb2xWZXJzaW9uMyhQR2Nvbm4gKmNvbm4pCiAJY29ubi0+cHZlcnNpb24gPSB0aGVpcl92ZXJz aW9uOwogCiAJLyoKLQkgKiBDaGVjayB0aGF0IGFsbCBleHBlY3RlZCB1bnN1cHBvcnRlZCBwYXJh bWV0ZXJzIGFyZSByZXBvcnRlZCBieSB0aGUKLQkgKiBzZXJ2ZXIuCisJICogUHJvY2VzcyB0aGUg bGlzdCBvZiB1bnN1cHBvcnRlZCBwcm90b2NvbCBleHRlbnNpb25zLgogCSAqLwogCWZvdW5kX3Rl c3RfcHJvdG9jb2xfbmVnb3RpYXRpb24gPSBmYWxzZTsKIAlleHBlY3RfdGVzdF9wcm90b2NvbF9u ZWdvdGlhdGlvbiA9IChjb25uLT5tYXhfcHZlcnNpb24gPT0gUEdfUFJPVE9DT0xfR1JFQVNFKTsK QEAgLTE1MzksMTIgKzE1NDMsMjMgQEAgcHFHZXROZWdvdGlhdGVQcm90b2NvbFZlcnNpb24zKFBH Y29ubiAqY29ubikKIAkJCWdvdG8gZmFpbHVyZTsKIAkJfQogCi0JCS8qIENoZWNrIGlmIHRoaXMg aXMgdGhlIGV4cGVjdGVkIHRlc3QgcGFyYW1ldGVyICovCisJCS8qCisJCSAqIEhhbmRsZSBwcm90 b2NvbCBleHRlbnNpb25zIHRoYXQgd2UgcmVxdWVzdGVkLiBFeHRlbnNpb25zIHRoYXQgd2VyZQor CQkgKiBub3QgcmVxdWVzdGVkIGJ5IHVzIGFyZSBhbiBlcnJvci4KKwkJICovCiAJCWlmIChleHBl Y3RfdGVzdF9wcm90b2NvbF9uZWdvdGlhdGlvbiAmJgogCQkJc3RyY21wKGNvbm4tPndvcmtCdWZm ZXIuZGF0YSwgIl9wcV8udGVzdF9wcm90b2NvbF9uZWdvdGlhdGlvbiIpID09IDApCiAJCXsKIAkJ CWZvdW5kX3Rlc3RfcHJvdG9jb2xfbmVnb3RpYXRpb24gPSB0cnVlOwogCQl9CisJCWVsc2UgaWYg KHJlcXVlc3RlZF9nb2F3YXkgJiYgc3RyY21wKGNvbm4tPndvcmtCdWZmZXIuZGF0YSwgIl9wcV8u Z29hd2F5IikgPT0gMCkKKwkJeworCQkJLyoKKwkJCSAqIFNlcnZlciBkb2Vzbid0IHN1cHBvcnQg R29Bd2F5LCB0aGF0J3MgZmluZS4gSXQgd2lsbCBzaW1wbHkgbmV2ZXIKKwkJCSAqIHNlbmQgdGhl IG1lc3NhZ2UuCisJCQkgKi8KKwkJCWNvbnRpbnVlOworCQl9CiAJCWVsc2UKIAkJewogCQkJbGli cHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInJlY2VpdmVkIGludmFsaWQgcHJvdG9jb2wgbmVn b3RpYXRpb24gbWVzc2FnZTogc2VydmVyIHJlcG9ydGVkIGFuIHVuc3VwcG9ydGVkIHBhcmFtZXRl ciB0aGF0IHdhcyBub3QgcmVxdWVzdGVkIChcIiVzXCIpIiwKQEAgLTE5MDUsNiArMTkyMCw5IEBA IGdldENvcHlEYXRhTWVzc2FnZShQR2Nvbm4gKmNvbm4pCiAJCQkJaWYgKGdldFBhcmFtZXRlclN0 YXR1cyhjb25uKSkKIAkJCQkJcmV0dXJuIDA7CiAJCQkJYnJlYWs7CisJCQljYXNlIFBxTXNnX0dv QXdheToKKwkJCQljb25uLT5nb2F3YXlfcmVjZWl2ZWQgPSB0cnVlOworCQkJCWJyZWFrOwogCQkJ Y2FzZSBQcU1zZ19Db3B5RGF0YToKIAkJCQlyZXR1cm4gbXNnTGVuZ3RoOwogCQkJY2FzZSBQcU1z Z19Db3B5RG9uZToKQEAgLTIzOTgsNiArMjQxNiw5IEBAIHBxRnVuY3Rpb25DYWxsMyhQR2Nvbm4g KmNvbm4sIE9pZCBmbmlkLAogCQkJCWlmIChnZXRQYXJhbWV0ZXJTdGF0dXMoY29ubikpCiAJCQkJ CWNvbnRpbnVlOwogCQkJCWJyZWFrOworCQkJY2FzZSBQcU1zZ19Hb0F3YXk6CisJCQkJY29ubi0+ Z29hd2F5X3JlY2VpdmVkID0gdHJ1ZTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyog VGhlIGJhY2tlbmQgdmlvbGF0ZXMgdGhlIHByb3RvY29sLiAqLwogCQkJCWxpYnBxX2FwcGVuZF9j b25uX2Vycm9yKGNvbm4sICJwcm90b2NvbCBlcnJvcjogaWQ9MHgleCIsIGlkKTsKQEAgLTI1MzEs NiArMjU1MiwxNCBAQCBidWlsZF9zdGFydHVwX3BhY2tldChjb25zdCBQR2Nvbm4gKmNvbm4sIGNo YXIgKnBhY2tldCwKIAkJfQogCX0KIAorCS8qCisJICogUmVxdWVzdCBwcm90b2NvbCBleHRlbnNp b25zLiBPbmx5IGRvIHRoaXMgZm9yIHByb3RvY29sIHZlcnNpb24gMy4yIGFuZAorCSAqIGxhdGVy LCB0byBhdm9pZCBjb25mdXNpbmcgb2xkIHByb3hpZXMgdGhhdCBkb24ndCB1bmRlcnN0YW5kIF9w cV8uKgorCSAqIG9wdGlvbnMuCisJICovCisJaWYgKGNvbm4tPnB2ZXJzaW9uID49IFBHX1BST1RP Q09MKDMsIDIpKQorCQlBRERfU1RBUlRVUF9PUFRJT04oIl9wcV8uZ29hd2F5IiwgIjEiKTsKKwog CS8qIEFkZCB0cmFpbGluZyB0ZXJtaW5hdG9yICovCiAJaWYgKHBhY2tldCkKIAkJcGFja2V0W3Bh Y2tldF9sZW5dID0gJ1wwJzsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBx LWZlLmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCmluZGV4IGYwNmU3YTk3MmMz Li5kMWE2ZGQ1NDQwNyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUu aAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCkBAIC02OCw2ICs2OCw4IEBA IGV4dGVybiAiQyIKICNkZWZpbmUgTElCUFFfSEFTX0dFVF9USFJFQURfTE9DSyAxCiAvKiBJbmRp Y2F0ZXMgcHJlc2VuY2Ugb2YgdGhlIFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1YyIGF1 dGhkYXRhIGhvb2sgKi8KICNkZWZpbmUgTElCUFFfSEFTX09BVVRIX0JFQVJFUl9UT0tFTl9WMiAx CisvKiBJbmRpY2F0ZXMgcHJlc2VuY2Ugb2YgUFFnb0F3YXlSZWNlaXZlZCAqLworI2RlZmluZSBM SUJQUV9IQVNfR09BV0FZIDEKIAogLyoKICAqIE9wdGlvbiBmbGFncyBmb3IgUFFjb3B5UmVzdWx0 CkBAIC00MTksNiArNDIxLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKlBRcGFyYW1ldGVyU3RhdHVz KGNvbnN0IFBHY29ubiAqY29ubiwKIGV4dGVybiBpbnQJUFFwcm90b2NvbFZlcnNpb24oY29uc3Qg UEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJUFFmdWxsUHJvdG9jb2xWZXJzaW9uKGNvbnN0IFBH Y29ubiAqY29ubik7CiBleHRlcm4gaW50CVBRc2VydmVyVmVyc2lvbihjb25zdCBQR2Nvbm4gKmNv bm4pOworZXh0ZXJuIGludAlQUWdvQXdheVJlY2VpdmVkKFBHY29ubiAqY29ubik7CiBleHRlcm4g Y2hhciAqUFFlcnJvck1lc3NhZ2UoY29uc3QgUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJUFFz b2NrZXQoY29uc3QgUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJUFFiYWNrZW5kUElEKGNvbnN0 IFBHY29ubiAqY29ubik7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1p bnQuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCmluZGV4IGJkN2ViNTlmNWY4 Li4yMDE4OTI3ZDBjYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50 LmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTUxMSw2ICs1MTEs NyBAQCBzdHJ1Y3QgcGdfY29ubgogCWJvb2wJCXNpZ3BpcGVfZmxhZzsJLyogY2FuIHdlIG1hc2sg U0lHUElQRSB2aWEgTVNHX05PU0lHTkFMPyAqLwogCWJvb2wJCXdyaXRlX2ZhaWxlZDsJLyogaGF2 ZSB3ZSBoYWQgYSB3cml0ZSBmYWlsdXJlIG9uIHNvY2s/ICovCiAJY2hhcgkgICAqd3JpdGVfZXJy X21zZzsJLyogd3JpdGUgZXJyb3IgbWVzc2FnZSwgb3IgTlVMTCBpZiBPT00gKi8KKwlib29sCQln b2F3YXlfcmVjZWl2ZWQ7CS8qIHRydWUgaWYgc2VydmVyIHNlbnQgR29Bd2F5IG1lc3NhZ2UgKi8K IAogCWJvb2wJCWF1dGhfcmVxdWlyZWQ7CS8qIHJlcXVpcmUgYW4gYXV0aGVudGljYXRpb24gY2hh bGxlbmdlIGZyb20KIAkJCQkJCQkJICogdGhlIHNlcnZlcj8gKi8KCmJhc2UtY29tbWl0OiBmMzBj ZWJiOTU0MjM1ODcwMmNhMGYyYzRiZTJjZDUwNGEyNTY4NjA2Ci0tIAoyLjUzLjAKCg== --0302f3049a6dc84489a98fa3f0e993020e6de1dc280c5704b38cffebd74a--