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 1ut5n4-000Ynu-QQ for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Sep 2025 14:45:52 +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 1ut5m4-000KRq-FH for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Sep 2025 14:44:48 +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 1ut5m3-000KRi-PU for pgsql-hackers@lists.postgresql.org; Mon, 01 Sep 2025 14:44:48 +0000 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ut5m0-0000t7-2d for pgsql-hackers@postgresql.org; Mon, 01 Sep 2025 14:44:47 +0000 Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-afedbb49c26so677475366b.2 for ; Mon, 01 Sep 2025 07:44:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1756737883; x=1757342683; darn=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=sR5P3sxdx4YOMNl4jENnF4nY8dBvISbTVy7gcjW/Ay4=; b=gUkIdfzQwyq520B1ua5ipFSiVGIlireQ2difDZTMsoymyE56EBfmF+hIMkwXWqVuma yy0FGMkScJwUmAfzy3CSD6Rdos9godMXSURwHPKvr7HITbeMthVelxv6YZlQghbtTnfQ afIDdkG9d7AzLLt6JiyiMQ67eXA5Gmxw2gvenqSzpffPzXWEoaGlAso5fJCy/guxCoJ1 i4HYqrewfIDngCLL9Xn6om4Iq2UFTqGKSuTSOh0S5hOpH0uiNZPAnO4LruKGgs63Wn+f XqFPMxn1/fcr5kGUAjV1pSH2h2C4AhkCdP+MLxKl5Q2cxYvYhVORN+dGejcmZlIdS+3X tZMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756737883; x=1757342683; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=sR5P3sxdx4YOMNl4jENnF4nY8dBvISbTVy7gcjW/Ay4=; b=VZTqqdJ2XyIitHZ2uZ3OBrm+mOJLuGO+PU+HFV9UOr+dcxl1v5pP/JP963I2qgqCGU SiUre3WirgsPnFGlNozuYiOEnOcBbzbrbEcnohygurUvgMqRByTJpYMNSYoGqDw5qNlg +9puMTBE7XxPaN9ONw4298uLa8Y5kdUwOYayDWnd05yQ/q5uOXxdgc8YslNk5R9RyN7+ 8n2Psj0/EvCHxMQpOrKRqwiW1Gp9ECfpXYorYSpbxqSWHMWKOP9i0pUdRTSrMhUjcn4N dbg0G6bEj+5KkDj68tpbABjTO/8HonG7OnGDoGrOMFd8K89LunWtCyiMcclhKSYFuZPN bM2A== X-Forwarded-Encrypted: i=1; AJvYcCXNQOYmVbAaxxQZeaiT6iZL7ijnXGZVnuT/GIZYH7cfQtWLgd0/uGzT/od5LkCBDj6pmuPf8madwjYD+Vg6@postgresql.org X-Gm-Message-State: AOJu0YykouPU+LPTJihL3EcWjRz23+ZUq+TwFBYnxMW9SZsUr33GhvTz MwS60JTleQNMBsZ//rxmzNDdmMM0vKKoVV+Q2prYrnBoT1xeARbSkR0yaDT4w8yZyF0= X-Gm-Gg: ASbGnctOfqVy2NgdNP7WZq8wwJyRS6ErXg7UkGj6F4MsOhQsuxo28H/U3Zpih1VmkPH J0YBef8dWGwMA+bOdPKCbanWNmZezNUlBeDb11yQO9dE9OiOtcicX9uDmFDUHwKuiA6Rv7vBvd3 fyumg43WVMzwpXHVYr8WQ7VMzAmQMqz6EWDTGjhxnWE1pst6M1zFWN/roNBiWUn/XnIGLOWeCLR klgLdGQQRCAddlq58U1fEPdsaUOtmXpyRG6x8vRB7V2oEjxhewjT3aovd4hrXgtLtKqAX9p5xRS Tn0lzTIIv4w3u96bVMPZRgvsmeYtdbMGjPXVhaM7sj9j5QI43vRIvO4AJM899PSSXNt1tYp+77E vOL5n0dBAjEJOoMHcYqk6yFKw1uZ4PKd/+nHZunjUURC2pBs= X-Google-Smtp-Source: AGHT+IFVv7GEMHhZJCtOLotkZ8OtWIMfll4LUwvajp9khMAIVcGCioIIUYJK0dqUgEvTnCt9Zko3NA== X-Received: by 2002:a17:906:5909:b0:b04:1b90:8d7a with SMTP id a640c23a62f3a-b041b908f01mr474839666b.27.1756737883054; Mon, 01 Sep 2025 07:44:43 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b0445cb9296sm36882466b.61.2025.09.01.07.44.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 01 Sep 2025 07:44:42 -0700 (PDT) Content-Type: multipart/mixed; boundary=37ca48bb8ca10c13056faea11446dafcb5c4448170abec17d9e5fba1b22f Mime-Version: 1.0 Date: Mon, 01 Sep 2025 16:44:41 +0200 Message-Id: Cc: "Artem Gavrilov" , "Jelte Fennema-Nio" , "Tomas Vondra" , "David G. Johnston" , "Jeff Davis" , "PostgreSQL-development" Subject: Re: Extension security improvement: Add support for extensions with an owned schema To: "Robert Haas" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <585e996c-a5c6-4e61-acc4-d92b7a1458ea@vondra.me> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --37ca48bb8ca10c13056faea11446dafcb5c4448170abec17d9e5fba1b22f Content-Type: multipart/alternative; boundary=99a4d3c4cb78a4b9108cd159c085eedc9e3f17dc4a89166d8a394f9f4de8 --99a4d3c4cb78a4b9108cd159c085eedc9e3f17dc4a89166d8a394f9f4de8 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Mon Aug 11, 2025 at 9:23 PM CEST, Robert Haas wrote: > On Mon, Aug 11, 2025 at 1:55=E2=80=AFPM Robert Haas wrote: >> [ some review ] Attached is a patch that addresses your comments I think. I restructured the schema creation code, and added more comments to the AlterExtensionNamespace code (I couldn't find a way to make the structure clearer). > Another thing that's occurring to me here is that nothing prevents > other objects from making their way into the owned schema. Sure, if we > create a new schema with nobody having any permissions, then only the > creating role or some role that has its privileges can add anything in > there. But that could happen by accident, or privileges could later be > granted and somebody could add something into the extension schema > after that. I wonder whether we should lock this down tighter somehow > and altogether forbid creating objects in that schema except from an > extension create/upgrade script for the owning extension. I think that's an interesting idea, and I started with a change to try this out, that I intend to finish soon. It doesn't seem strictly necessary, though. --99a4d3c4cb78a4b9108cd159c085eedc9e3f17dc4a89166d8a394f9f4de8-- --37ca48bb8ca10c13056faea11446dafcb5c4448170abec17d9e5fba1b22f Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v6-0001-Add-support-for-extensions-with-an-owned-schema.patch Content-Type: text/x-patch; charset=utf-8; name=v6-0001-Add-support-for-extensions-with-an-owned-schema.patch RnJvbSA2MWJkYjQxMWU2YzdiOTc5ZGY3YjhmZjVlZTgyNDVmMDYyMTk0NDRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDQgT2N0IDIwMjQgMjI6MzQ6NTEgKzAyMDAKU3ViamVjdDogW1BBVENIIHY2 XSBBZGQgc3VwcG9ydCBmb3IgZXh0ZW5zaW9ucyB3aXRoIGFuIG93bmVkIHNjaGVtYQoKV3JpdGlu ZyB0aGUgc3FsIG1pZ3JhdGlvbiBzY3JpcHRzIHRoYXQgYXJlIHJ1biBieSBDUkVBVEUgRVhURU5T SU9OIGFuZApBTFRFUiBFWFRFTlNJT04gVVBEQVRFIGFyZSBzZWN1cml0eSBtaW5lZmllbGRzIGZv ciBleHRlbnNpb24gYXV0aG9ycy4KT25lIGJpZyByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBzZWFy Y2hfcGF0aCBpcyBzZXQgdG8gdGhlIHNjaGVtYSBvZiB0aGUKZXh0ZW5zaW9uIHdoaWxlIHJ1bm5p bmcgdGhlc2Ugc2NyaXB0cywgYW5kIHRodXMgaWYgYSB1c2VyIHdpdGggbG93ZXIKcHJpdmlsZWdl cyBjYW4gY3JlYXRlIGZ1bmN0aW9ucyBvciBvcGVyYXRvcnMgaW4gdGhhdCBzY2hlbWEgdGhleSBj YW4gZG8KYWxsIGtpbmRzIG9mIHNlYXJjaF9wYXRoIGNvbmZ1c2lvbiBhdHRhY2tzIGlmIG5vdCBl dmVyeSBmdW5jdGlvbiBhbmQKb3BlcmF0b3IgdGhhdCBpcyB1c2VkIGluIHRoZSBzY3JpcHQgaXMg c2NoZW1hIHF1YWxpZmllZC4gV2hpbGUgZG9pbmcKc3VjaCBzY2hlbWEgcXVhbGlmaWNhdGlvbiBp cyBwb3NzaWJsZSwgaXQgcmVsaWVzIG9uIHRoZSBhdXRob3IgdG8gbmV2ZXIKbWFrZSBhIG1pc3Rh a2UgaW4gYW55IG9mIHRoZSBzcWwgZmlsZXMuIEFuZCBzYWRseSBodW1hbnMgaGF2ZSBhIHRlbmRl bmN5CnRvIG1ha2UgbWlzdGFrZXMuCgpUaGlzIHBhdGNoIGFkZHMgYSBuZXcgIm93bmVkX3NjaGVt YSIgb3B0aW9uIHRvIHRoZSBleHRlbnNpb24gY29udHJvbApmaWxlIHRoYXQgY2FuIGJlIHNldCB0 byB0cnVlIHRvIGluZGljYXRlIHRoYXQgdGhpcyBleHRlbnNpb24gd2FudHMgdG8Kb3duIHRoZSBz Y2hlbWEgaW4gd2hpY2ggaXQgaXMgaW5zdGFsbGVkLiBXaGF0IHRoYXQgbWVhbnMgaXMgdGhhdCB0 aGUKc2NoZW1hIHNob3VsZCBub3QgZXhpc3QgYmVmb3JlIGNyZWF0aW5nIHRoZSBleHRlbnNpb24s IGFuZCB3aWxsIGJlCmNyZWF0ZWQgZHVyaW5nIGV4dGVuc2lvbiBjcmVhdGlvbi4gVGhpcyB0aHVz IGdpdmVzIHRoZSBleHRlbnNpb24gYXV0aG9yCmFuIGVhc3kgd2F5IHRvIHVzZSBhIHNhZmUgc2Vh cmNoX3BhdGgsIHdoaWxlIHN0aWxsIGFsbG93aW5nIGFsbCBvYmplY3RzCnRvIGJlIGdyb3VwZWQg dG9nZXRoZXIgaW4gYSBzY2hlbWEuIFRoZSBpbXBsZW1lbnRhdGlvbiBhbHNvIGhhcyB0aGUKcGxl YXNhbnQgc2lkZSBlZmZlY3QgdGhhdCB0aGUgc2NoZW1hIHdpbGwgYmUgYXV0b21hdGljYWxseSBk cm9wcGVkIHdoZW4KdGhlIGV4dGVuc2lvbiBpcyBkcm9wcGVkLgotLS0KIGRvYy9zcmMvc2dtbC9l eHRlbmQuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAzNCArKwogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfZXh0ZW5zaW9uLnNnbWwgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAzNjMgKysrKysrKysrKysrKy0tLS0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMgICAgfCAgNDUgKystCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNTQgKystCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19leHRlbnNpb24uaCAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmggICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9NYWtlZmlsZSAgICAgfCAgIDcgKy0KIC4uLi9leHBl Y3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0ICAgICAgICAgICAgICB8ICA1NCArKysKIHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL21lc29uLmJ1aWxkICB8ICAgNCArCiAuLi4vdGVzdF9l eHRlbnNpb25zL3NxbC90ZXN0X2V4dGVuc2lvbnMuc3FsICAgfCAgMjcgKysKIC4uLi90ZXN0X2V4 dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwgICAgICAgICAgICB8ICAgMiArCiAuLi4vdGVzdF9leHRf b3duZWRfc2NoZW1hLmNvbnRyb2wgICAgICAgICAgICAgfCAgIDUgKwogLi4udGVzdF9leHRfb3du ZWRfc2NoZW1hX3JlbG9jYXRhYmxlLS0xLjAuc3FsIHwgICAyICsKIC4uLi90ZXN0X2V4dF9vd25l ZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbCB8ICAgNCArCiBzcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcGdfZHVtcC90LzAwMV9iYXNlLnBsICAgfCAgMzIgKysKIDE4IGZpbGVzIGNoYW5nZWQsIDUx NyBpbnNlcnRpb25zKCspLCAxMzAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hLS0xLjAu c3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMv dGVzdF9leHRfb3duZWRfc2NoZW1hLmNvbnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFi bGUtLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbAoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9leHRlbmQuc2dtbCBiL2RvYy9zcmMvc2dtbC9leHRlbmQuc2dt bAppbmRleCA2M2M1ZWM2ZDFlYi4uZGRmYjRlYmZiZjUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9leHRlbmQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZXh0ZW5kLnNnbWwKQEAgLTgxNCw2ICs4 MTQsNDAgQEAgUkVUVVJOUyBhbnljb21wYXRpYmxlIEFTIC4uLgogICAgICAgPC9saXN0aXRlbT4K ICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZXh0ZW5kLWV4 dGVuc2lvbnMtZmlsZXMtb3duZWQtc2NoZW1hIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm93bmVk X3NjaGVtYTwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgQW4gZXh0ZW5zaW9uIHNob3VsZCBzZXQg PGZpcnN0dGVybT5vd25lZF9zY2hlbWE8L2ZpcnN0dGVybT4gdG8KKyAgICAgICAgPGxpdGVyYWw+ dHJ1ZTwvbGl0ZXJhbD4gaW4gaXRzIGNvbnRyb2wgZmlsZSBpZiB0aGUgZXh0ZW5zaW9uIHdhbnRz IGEKKyAgICAgICAgZGVkaWNhdGVkIHNjaGVtYSBmb3IgaXRzIG9iamVjdHMuIFN1Y2ggYSBzY2hl bWEgc2hvdWxkIG5vdCBleGlzdCB5ZXQgYXQKKyAgICAgICAgdGhlIHRpbWUgb2YgZXh0ZW5zaW9u IGNyZWF0aW9uLCBhbmQgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYnkKKyAgICAgICAg PGxpdGVyYWw+Q1JFQVRFIEVYVEVOU0lPTjwvbGl0ZXJhbD4uIFRoZSBkZWZhdWx0IGlzCisgICAg ICAgIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiwgaS5lLiwgdGhlIGV4dGVuc2lvbiBjYW4gYmUg aW5zdGFsbGVkIGludG8gYW4KKyAgICAgICAgZXhpc3Rpbmcgc2NoZW1hLgorICAgICAgIDwvcGFy YT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgSGF2aW5nIGEgc2NoZW1hIG93bmVkIGJ5IHRoZSBl eHRlbnNpb24gY2FuIG1ha2UgaXQgbXVjaCBlYXNpZXIgdG8KKyAgICAgICAgcmVhc29uIGFib3V0 IHBvc3NpYmxlIDxsaXRlcmFsPnNlYXJjaF9wYXRoPC9saXRlcmFsPiBpbmplY3Rpb24gYXR0YWNr cy4KKyAgICAgICAgRm9yIGluc3RhbmNlIHdpdGggYW4gb3duZWQgc2NoZW1hLCBpdCBpcyBnZW5l cmFsbHkgc2FmZSB0byBzZXQgdGhlCisgICAgICAgIDxsaXRlcmFsPnNlYXJjaF9wYXRoPC9saXRl cmFsPiBvZiBhIDxsaXRlcmFsPlNFQ1VSSVRZIERFRklORVI8L2xpdGVyYWw+CisgICAgICAgIGZ1 bmN0aW9uIHRvIHRoZSBzY2hlbWEgb2YgdGhlIGV4dGVuc2lvbi4gV2hpbGUgd2l0aG91dCBhbiBv d25lZCBzY2hlbWEKKyAgICAgICAgaXQgbWlnaHQgbm90IGJlIHNhZmUgdG8gZG8gc28sIGJlY2F1 c2UgYSBtYWxpY2lvdXMgdXNlciBjb3VsZCBpbnNlcnQKKyAgICAgICAgb2JqZWN0cyBpbiB0aGF0 IHNjaGVtYSBhbmQgdGh1cyA8bGluaworICAgICAgICBsaW5rZW5kPSJzcWwtY3JlYXRlZnVuY3Rp b24tc2VjdXJpdHkiPiBjYXVzZSBtYWxpY2lvdXMgdG8gYmUgZXhlY3V0ZWQKKyAgICAgICAgYXMg c3VwZXJ1c2VyPC9saW5rPi4gU2ltaWxhcmx5LCBoYXZpbmcgYW4gb3duZWQgc2NoZW1hIGNhbiBt YWtlIGl0IHNhZmUKKyAgICAgICAgYnkgZGVmYXVsdCB0byBleGVjdXRlIGdlbmVyYWwtcHVycG9z ZSBTUUwgaW4gdGhlIGV4dGVuc2lvbiBzY3JpcHQsCisgICAgICAgIGJlY2F1c2UgdGhlIHNlYXJj aF9wYXRoIG5vdyBvbmx5IGNvbnRhaW5zIHRydXN0ZWQgc2NoZW1hcy4gV2l0aG91dCBhbgorICAg ICAgICBvd25lZCBzY2hlbWEgaXQncyA8bGluayBsaW5rZW5kPSJleHRlbmQtZXh0ZW5zaW9ucy1z ZWN1cml0eS1zY3JpcHRzIj4KKyAgICAgICAgcmVjb21tZW5kZWQgdG8gbWFudWFsbHkgY2hhbmdl IHRoZSBzZWFyY2hfcGF0aDwvbGluaz4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgor ICAgICAgICBBcGFydCBmcm9tIHRoZSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucywgaGF2aW5nIGFu IG93bmVkIHNjaGVtYSBjYW4gaGVscAorICAgICAgICBwcmV2ZW50IG5hbWluZyBjb25mbGljdHMg YmV0d2VlbiBvYmplY3RzIG9mIGRpZmZlcmVudCBleHRlbnNpb25zLgorICAgICAgIDwvcGFyYT4K KyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0 ZW50cnkgaWQ9ImV4dGVuZC1leHRlbnNpb25zLWZpbGVzLXNjaGVtYSI+CiAgICAgICA8dGVybT48 dmFybmFtZT5zY2hlbWE8L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8L3R5cGU+KTwvdGVybT4KICAg ICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2V4dGVu c2lvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZXh0ZW5zaW9uLnNnbWwKaW5kZXgg NzEzYWJkOWM0OTQuLmFiMTI1ZDU2MjYzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9leHRlbnNpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9leHRlbnNp b24uc2dtbApAQCAtMTA0LDcgKzEwNCwxMSBAQCBDUkVBVEUgRVhURU5TSU9OIFsgSUYgTk9UIEVY SVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHRlbnNpb25fbmFtZQogICAg ICAgIDxwYXJhPgogICAgICAgICBUaGUgbmFtZSBvZiB0aGUgc2NoZW1hIGluIHdoaWNoIHRvIGlu c3RhbGwgdGhlIGV4dGVuc2lvbidzCiAgICAgICAgIG9iamVjdHMsIGdpdmVuIHRoYXQgdGhlIGV4 dGVuc2lvbiBhbGxvd3MgaXRzIGNvbnRlbnRzIHRvIGJlCi0gICAgICAgIHJlbG9jYXRlZC4gIFRo ZSBuYW1lZCBzY2hlbWEgbXVzdCBhbHJlYWR5IGV4aXN0LgorICAgICAgICByZWxvY2F0ZWQuIFdo ZXRoZXIgdGhpcyBzY2hlbWEgc2hvdWxkIGFscmVhZHkgZXhpc3Qgb3Igbm90IGRlcGVuZHMgb24K KyAgICAgICAgdGhlIHZhbHVlIG9mIDxsaXRlcmFsPm93bmVkX3NjaGVtYTwvbGl0ZXJhbD4gaW4g dGhlIGV4dGVuc2lvbnMgY29udHJvbAorICAgICAgICBmaWxlOiBJZiBpdCdzIDxsaXRlcmFsPnRy dWU8L2xpdGVyYWw+LCB0aGUgc2NoZW1hIG11c3QKKyAgICAgICAgPGVtcGhhc2lzPm5vdDwvZW1w aGFzaXM+IGV4aXN0OyBpZiBpdCdzIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiBpdAorICAgICAg ICBtdXN0IGV4aXN0LgogICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCBhbmQgdGhlIGV4dGVuc2lv bidzIGNvbnRyb2wgZmlsZSBkb2VzIG5vdCBzcGVjaWZ5IGEKICAgICAgICAgc2NoZW1hIGVpdGhl ciwgdGhlIGN1cnJlbnQgZGVmYXVsdCBvYmplY3QgY3JlYXRpb24gc2NoZW1hIGlzIHVzZWQuCiAg ICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9u LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCBlNmY5YWI2ZGZkNi4u YjQyYzI1YTc2MzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC05Miw2ICs5Miw4IEBA IHR5cGVkZWYgc3RydWN0IEV4dGVuc2lvbkNvbnRyb2xGaWxlCiAJCQkJCQkJCQkgKiBNT0RVTEVf UEFUSE5BTUUgKi8KIAljaGFyCSAgICpjb21tZW50OwkJLyogY29tbWVudCwgaWYgYW55ICovCiAJ Y2hhcgkgICAqc2NoZW1hOwkJCS8qIHRhcmdldCBzY2hlbWEgKGFsbG93ZWQgaWYgIXJlbG9jYXRh YmxlKSAqLworCWJvb2wJCW93bmVkX3NjaGVtYTsJLyogaWYgdGhlIHNjaGVtYSBzaG91bGQgYmUg b3duZWQgYnkgdGhlCisJCQkJCQkJCSAqIGV4dGVuc2lvbiAqLwogCWJvb2wJCXJlbG9jYXRhYmxl OwkvKiBpcyBBTFRFUiBFWFRFTlNJT04gU0VUIFNDSEVNQSBzdXBwb3J0ZWQ/ICovCiAJYm9vbAkJ c3VwZXJ1c2VyOwkJLyogbXVzdCBiZSBzdXBlcnVzZXIgdG8gaW5zdGFsbD8gKi8KIAlib29sCQl0 cnVzdGVkOwkJLyogYWxsb3cgYmVjb21pbmcgc3VwZXJ1c2VyIG9uIHRoZSBmbHk/ICovCkBAIC02 MTMsNiArNjE1LDE0IEBAIHBhcnNlX2V4dGVuc2lvbl9jb250cm9sX2ZpbGUoRXh0ZW5zaW9uQ29u dHJvbEZpbGUgKmNvbnRyb2wsCiAJCXsKIAkJCWNvbnRyb2wtPnNjaGVtYSA9IHBzdHJkdXAoaXRl bS0+dmFsdWUpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChpdGVtLT5uYW1lLCAib3duZWRfc2No ZW1hIikgPT0gMCkKKwkJeworCQkJaWYgKCFwYXJzZV9ib29sKGl0ZW0tPnZhbHVlLCAmY29udHJv bC0+b3duZWRfc2NoZW1hKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJwYXJhbWV0ZXIg XCIlc1wiIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSIsCisJCQkJCQkJCWl0ZW0tPm5hbWUpKSk7 CisJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGl0ZW0tPm5hbWUsICJyZWxvY2F0YWJsZSIpID09IDAp CiAJCXsKIAkJCWlmICghcGFyc2VfYm9vbChpdGVtLT52YWx1ZSwgJmNvbnRyb2wtPnJlbG9jYXRh YmxlKSkKQEAgLTE2NDMsNiArMTY1MywxNjQgQEAgZmluZF9pbnN0YWxsX3BhdGgoTGlzdCAqZXZp X2xpc3QsIEV4dGVuc2lvblZlcnNpb25JbmZvICpldmlfdGFyZ2V0LAogCXJldHVybiBldmlfc3Rh cnQ7CiB9CiAKKy8qCisgKiBDcmVhdGUgYSBzY2hlbWEgd2l0aCB0aGUgZ2l2ZW4gbmFtZSwgYXMg cGFydCBvZiBDUkVBVEUgRVhURU5TSU9OLgorICovCitzdGF0aWMgT2lkCitDcmVhdGVTY2hlbWFG b3JFeHRlbnNpb24oY2hhciAqc2NoZW1hTmFtZSkKK3sKKworCUNyZWF0ZVNjaGVtYVN0bXQgKmNz c3RtdCA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVN0bXQpOworCisJY3NzdG10LT5zY2hlbWFuYW1l ID0gc2NoZW1hTmFtZTsKKwljc3N0bXQtPmF1dGhyb2xlID0gTlVMTDsJLyogd2lsbCBiZSBjcmVh dGVkIGJ5IGN1cnJlbnQgdXNlciAqLworCWNzc3RtdC0+c2NoZW1hRWx0cyA9IE5JTDsKKwljc3N0 bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKwlDcmVhdGVTY2hlbWFDb21tYW5kKGNzc3RtdCwg IihnZW5lcmF0ZWQgQ1JFQVRFIFNDSEVNQSBjb21tYW5kKSIsCisJCQkJCQktMSwgLTEpOworCisJ LyoKKwkgKiBDcmVhdGVTY2hlbWFDb21tYW5kIGluY2x1ZGVzIENvbW1hbmRDb3VudGVySW5jcmVt ZW50LCBzbyBuZXcgc2NoZW1hIGlzCisJICogbm93IHZpc2libGUuCisJICovCisJcmV0dXJuIGdl dF9uYW1lc3BhY2Vfb2lkKHNjaGVtYU5hbWUsIGZhbHNlKTsKK30KKworLyoKKyAqIENyZWF0ZSBh IG93bmVkIHNjaGVtYSB3aXRoIHRoZSBnaXZlbiBuYW1lLCBhcyBwYXJ0IG9mIENSRUFURSBFWFRF TlNJT04sIGFuZAorICogZmFpbHMgaWYgdGhlIHNjaGVtYSBhbHJlYWR5IGV4aXN0LgorICovCitz dGF0aWMgT2lkCitDcmVhdGVPd25lZFNjaGVtYUZvckV4dGVuc2lvbihjaGFyICpzY2hlbWFOYW1l KQoreworCS8qIEZpbmQgb3IgY3JlYXRlIHRoZSBzY2hlbWEgaW4gY2FzZSBpdCBkb2VzIG5vdCBl eGlzdC4gKi8KKwlPaWQJCQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFOYW1l LCB0cnVlKTsKKworCWlmIChPaWRJc1ZhbGlkKHNjaGVtYU9pZCkpCisJeworCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1NDSEVNQSksCisJCQkJIGVycm1z Zygic2NoZW1hIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQlzY2hlbWFOYW1lKSwKKwkJ CQkgZXJyaGludCgiRHJvcCBzY2hlbWEgXCIlc1wiIG9yIHNwZWNpZnkgYW5vdGhlciBzY2hlbWEg dXNpbmcgQ1JFQVRFIEVYVEVOU0lPTiAuLi4gU0NIRU1BIC4uLiIsIHNjaGVtYU5hbWUpKSk7CisJ fQorCisJcmV0dXJuIENyZWF0ZVNjaGVtYUZvckV4dGVuc2lvbihzY2hlbWFOYW1lKTsKK30KKwor LyoKKyAqIEdldHMgb3IgY3JlYXRlcyB0aGUgc2NoZW1hIHRoYW4gYW4gZXh0ZW5zaW9uIHNob3Vs ZCBiZSBjcmVhdGVkIGluLgorICoKKyAqIFJldHVybnMgdGhlIE9JRCBvZiB0aGUgc2NoZW1hIGFu ZCB1cGRhdGVzIHNjaGVtYU5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIHNjaGVtYS4KKyAqLworc3Rh dGljIE9pZAorR2V0T3JDcmVhdGVTY2hlbWFGb3JFeHRlbnNpb24oY2hhciAqKnNjaGVtYU5hbWUs IEV4dGVuc2lvbkNvbnRyb2xGaWxlICpjb250cm9sLCBib29sIGNhc2NhZGUpCit7CisJLyoKKwkg KiBUaGUgc2ltcGxlc3QgY2FzZSBpcyB3aGVuIHRoZSB1c2VyIHByb3ZpZGVzIGEgc2NoZW1hIG5h bWUuCisJICovCisJaWYgKCpzY2hlbWFOYW1lKQorCXsKKwkJT2lkCQkJc2NoZW1hT2lkOworCisJ CWlmICghY29udHJvbC0+b3duZWRfc2NoZW1hKQorCQl7CisJCQkvKgorCQkJICogRm9yIG5vbi1v d25lZCBzY2hlbWFzLCB0aGlzIHNjaGVtYSBtdXN0IGFscmVhZHkgZXhpc3QuIFdlIHdhbnQKKwkJ CSAqIHRvIGNoZWNrIHRoaXMgbm93LCBzbyBpdCBmYWlscyBldmVuIGlmIHdlIGJhaWwgb3V0IG9m IHRoaXMKKwkJCSAqIGJsb2NrIGR1ZSB0byB0aGUgQ0FTQ0FERSBsb2dpYy4KKwkJCSAqLworCQkJ c2NoZW1hT2lkID0gZ2V0X25hbWVzcGFjZV9vaWQoKnNjaGVtYU5hbWUsIHRydWUpOworCQl9CisK KwkJaWYgKGNvbnRyb2wtPnNjaGVtYSAmJiBzdHJjbXAoY29udHJvbC0+c2NoZW1hLCAqc2NoZW1h TmFtZSkgIT0gMCkKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBleHRlbnNpb24gaXMgbm90IHJlbG9j YXRhYmxlIGFuZCB0aGUgYXV0aG9yIGdhdmUgdXMgYQorCQkJICogc2NoZW1hIGZvciBpdC4KKwkJ CSAqCisJCQkgKiBVbmxlc3MgQ0FTQ0FERSBwYXJhbWV0ZXIgd2FzIGdpdmVuLCBpdCdzIGFuIGVy cm9yIHRvIGdpdmUgYQorCQkJICogc2NoZW1hIGRpZmZlcmVudCBmcm9tIGNvbnRyb2wtPnNjaGVt YSBpZiBjb250cm9sLT5zY2hlbWEgaXMKKwkJCSAqIHNwZWNpZmllZC4KKwkJCSAqLworCQkJaWYg KCFjYXNjYWRlKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJleHRlbnNpb24gXCIl c1wiIG11c3QgYmUgaW5zdGFsbGVkIGluIHNjaGVtYSBcIiVzXCIiLAorCQkJCQkJCQljb250cm9s LT5uYW1lLAorCQkJCQkJCQljb250cm9sLT5zY2hlbWEpLAorCQkJCQkJIGVycmhpbnQoIkRvIG5v dCBzcGVjaWZ5IFNDSEVNQSB3aGVuIHJ1bm5pbmcgQ1JFQVRFIEVYVEVOU0lPTiBmb3IgZXh0ZW5z aW9uIFwiJXNcIiIsIGNvbnRyb2wtPm5hbWUpKSk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJZiB0 aGUgc2NoZW1hIG1pc21hdGNoZXMgYW5kIENBU0NBREUgd2FzIGdpdmVuLCB3ZSBwcmV0ZW5kIHRo ZQorCQkJICogdXNlciBkaWQgbm90IHNwZWNpZnkgYSBzY2hlbWEgYW5kIHVzZSB0aGUgbm9ybWFs IGxvZ2ljIGJlbG93IHRvCisJCQkgKiBnZXQgb3IgY3JlYXRlIHRoZSBzY2hlbWEgZnJvbSB0aGUg Y29udHJvbCBmaWxlLgorCQkJICovCisJCX0KKwkJZWxzZSBpZiAoY29udHJvbC0+b3duZWRfc2No ZW1hKQorCQl7CisJCQlyZXR1cm4gQ3JlYXRlT3duZWRTY2hlbWFGb3JFeHRlbnNpb24oKnNjaGVt YU5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJcmV0dXJuIHNjaGVtYU9pZDsKKwkJfQorCX0K KworCWlmIChjb250cm9sLT5zY2hlbWEpCisJeworCQlPaWQJCQlzY2hlbWFPaWQ7CisKKwkJKnNj aGVtYU5hbWUgPSBjb250cm9sLT5zY2hlbWE7CisKKwkJaWYgKGNvbnRyb2wtPm93bmVkX3NjaGVt YSkKKwkJeworCQkJcmV0dXJuIENyZWF0ZU93bmVkU2NoZW1hRm9yRXh0ZW5zaW9uKGNvbnRyb2wt PnNjaGVtYSk7CisJCX0KKworCQkvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgc2NoZW1hIGluIGNhc2Ug aXQgZG9lcyBub3QgZXhpc3QuICovCisJCXNjaGVtYU9pZCA9IGdldF9uYW1lc3BhY2Vfb2lkKGNv bnRyb2wtPnNjaGVtYSwgdHJ1ZSk7CisJCWlmIChPaWRJc1ZhbGlkKHNjaGVtYU9pZCkpCisJCXsK KwkJCXJldHVybiBzY2hlbWFPaWQ7CisJCX0KKwkJcmV0dXJuIENyZWF0ZVNjaGVtYUZvckV4dGVu c2lvbihjb250cm9sLT5zY2hlbWEpOworCX0KKworCWlmIChjb250cm9sLT5vd25lZF9zY2hlbWEp CisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1ND SEVNQSksCisJCQkJIGVycm1zZygibm8gc2NoZW1hIGhhcyBiZWVuIHNlbGVjdGVkIHRvIGNyZWF0 ZSBpbiIpKSk7CisJfQorCisJeworCQkvKgorCQkgKiBOZWl0aGVyIHVzZXIgbm9yIGF1dGhvciBv ZiB0aGUgZXh0ZW5zaW9uIHNwZWNpZmllZCBzY2hlbWE7IHVzZSB0aGUKKwkJICogY3VycmVudCBk ZWZhdWx0IGNyZWF0aW9uIG5hbWVzcGFjZSwgd2hpY2ggaXMgdGhlIGZpcnN0IGV4cGxpY2l0CisJ CSAqIGVudHJ5IGluIHRoZSBzZWFyY2hfcGF0aC4KKwkJICovCisJCUxpc3QJICAgKnNlYXJjaF9w YXRoID0gZmV0Y2hfc2VhcmNoX3BhdGgoZmFsc2UpOworCQlPaWQJCQlzY2hlbWFPaWQ7CisKKwkJ aWYgKHNlYXJjaF9wYXRoID09IE5JTCkgLyogbm90aGluZyB2YWxpZCBpbiBzZWFyY2hfcGF0aD8g Ki8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1ND SEVNQSksCisJCQkJCSBlcnJtc2coIm5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBjcmVh dGUgaW4iKSkpOworCQlzY2hlbWFPaWQgPSBsaW5pdGlhbF9vaWQoc2VhcmNoX3BhdGgpOworCQkq c2NoZW1hTmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShzY2hlbWFPaWQpOworCQlpZiAoKnNjaGVt YU5hbWUgPT0gTlVMTCkJLyogcmVjZW50bHktZGVsZXRlZCBuYW1lc3BhY2U/ICovCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9TQ0hFTUEpLAorCQkJ CQkgZXJybXNnKCJubyBzY2hlbWEgaGFzIGJlZW4gc2VsZWN0ZWQgdG8gY3JlYXRlIGluIikpKTsK KworCQlsaXN0X2ZyZWUoc2VhcmNoX3BhdGgpOworCQlyZXR1cm4gc2NoZW1hT2lkOworCX0KK30K KwogLyoKICAqIENSRUFURSBFWFRFTlNJT04gd29ya2VyCiAgKgpAQCAtMTczOSw3OCArMTkwNyw3 IEBAIENyZWF0ZUV4dGVuc2lvbkludGVybmFsKGNoYXIgKmV4dGVuc2lvbk5hbWUsCiAJICovCiAJ Y29udHJvbCA9IHJlYWRfZXh0ZW5zaW9uX2F1eF9jb250cm9sX2ZpbGUocGNvbnRyb2wsIHZlcnNp b25OYW1lKTsKIAotCS8qCi0JICogRGV0ZXJtaW5lIHRoZSB0YXJnZXQgc2NoZW1hIHRvIGluc3Rh bGwgdGhlIGV4dGVuc2lvbiBpbnRvCi0JICovCi0JaWYgKHNjaGVtYU5hbWUpCi0JewotCQkvKiBJ ZiB0aGUgdXNlciBpcyBnaXZpbmcgdXMgdGhlIHNjaGVtYSBuYW1lLCBpdCBtdXN0IGV4aXN0IGFs cmVhZHkuICovCi0JCXNjaGVtYU9pZCA9IGdldF9uYW1lc3BhY2Vfb2lkKHNjaGVtYU5hbWUsIGZh bHNlKTsKLQl9Ci0KLQlpZiAoY29udHJvbC0+c2NoZW1hICE9IE5VTEwpCi0JewotCQkvKgotCQkg KiBUaGUgZXh0ZW5zaW9uIGlzIG5vdCByZWxvY2F0YWJsZSBhbmQgdGhlIGF1dGhvciBnYXZlIHVz IGEgc2NoZW1hCi0JCSAqIGZvciBpdC4KLQkJICoKLQkJICogVW5sZXNzIENBU0NBREUgcGFyYW1l dGVyIHdhcyBnaXZlbiwgaXQncyBhbiBlcnJvciB0byBnaXZlIGEgc2NoZW1hCi0JCSAqIGRpZmZl cmVudCBmcm9tIGNvbnRyb2wtPnNjaGVtYSBpZiBjb250cm9sLT5zY2hlbWEgaXMgc3BlY2lmaWVk LgotCQkgKi8KLQkJaWYgKHNjaGVtYU5hbWUgJiYgc3RyY21wKGNvbnRyb2wtPnNjaGVtYSwgc2No ZW1hTmFtZSkgIT0gMCAmJgotCQkJIWNhc2NhZGUpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coImV4 dGVuc2lvbiBcIiVzXCIgbXVzdCBiZSBpbnN0YWxsZWQgaW4gc2NoZW1hIFwiJXNcIiIsCi0JCQkJ CQkJY29udHJvbC0+bmFtZSwKLQkJCQkJCQljb250cm9sLT5zY2hlbWEpKSk7Ci0KLQkJLyogQWx3 YXlzIHVzZSB0aGUgc2NoZW1hIGZyb20gY29udHJvbCBmaWxlIGZvciBjdXJyZW50IGV4dGVuc2lv bi4gKi8KLQkJc2NoZW1hTmFtZSA9IGNvbnRyb2wtPnNjaGVtYTsKLQotCQkvKiBGaW5kIG9yIGNy ZWF0ZSB0aGUgc2NoZW1hIGluIGNhc2UgaXQgZG9lcyBub3QgZXhpc3QuICovCi0JCXNjaGVtYU9p ZCA9IGdldF9uYW1lc3BhY2Vfb2lkKHNjaGVtYU5hbWUsIHRydWUpOwotCi0JCWlmICghT2lkSXNW YWxpZChzY2hlbWFPaWQpKQotCQl7Ci0JCQlDcmVhdGVTY2hlbWFTdG10ICpjc3N0bXQgPSBtYWtl Tm9kZShDcmVhdGVTY2hlbWFTdG10KTsKLQotCQkJY3NzdG10LT5zY2hlbWFuYW1lID0gc2NoZW1h TmFtZTsKLQkJCWNzc3RtdC0+YXV0aHJvbGUgPSBOVUxMOwkvKiB3aWxsIGJlIGNyZWF0ZWQgYnkg Y3VycmVudCB1c2VyICovCi0JCQljc3N0bXQtPnNjaGVtYUVsdHMgPSBOSUw7Ci0JCQljc3N0bXQt PmlmX25vdF9leGlzdHMgPSBmYWxzZTsKLQkJCUNyZWF0ZVNjaGVtYUNvbW1hbmQoY3NzdG10LCAi KGdlbmVyYXRlZCBDUkVBVEUgU0NIRU1BIGNvbW1hbmQpIiwKLQkJCQkJCQkJLTEsIC0xKTsKLQot CQkJLyoKLQkJCSAqIENyZWF0ZVNjaGVtYUNvbW1hbmQgaW5jbHVkZXMgQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQsIHNvIG5ldwotCQkJICogc2NoZW1hIGlzIG5vdyB2aXNpYmxlLgotCQkJICovCi0J CQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFOYW1lLCBmYWxzZSk7Ci0JCX0K LQl9Ci0JZWxzZSBpZiAoIU9pZElzVmFsaWQoc2NoZW1hT2lkKSkKLQl7Ci0JCS8qCi0JCSAqIE5l aXRoZXIgdXNlciBub3IgYXV0aG9yIG9mIHRoZSBleHRlbnNpb24gc3BlY2lmaWVkIHNjaGVtYTsg dXNlIHRoZQotCQkgKiBjdXJyZW50IGRlZmF1bHQgY3JlYXRpb24gbmFtZXNwYWNlLCB3aGljaCBp cyB0aGUgZmlyc3QgZXhwbGljaXQKLQkJICogZW50cnkgaW4gdGhlIHNlYXJjaF9wYXRoLgotCQkg Ki8KLQkJTGlzdAkgICAqc2VhcmNoX3BhdGggPSBmZXRjaF9zZWFyY2hfcGF0aChmYWxzZSk7Ci0K LQkJaWYgKHNlYXJjaF9wYXRoID09IE5JTCkgLyogbm90aGluZyB2YWxpZCBpbiBzZWFyY2hfcGF0 aD8gKi8KLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X1NDSEVNQSksCi0JCQkJCSBlcnJtc2coIm5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBj cmVhdGUgaW4iKSkpOwotCQlzY2hlbWFPaWQgPSBsaW5pdGlhbF9vaWQoc2VhcmNoX3BhdGgpOwot CQlzY2hlbWFOYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHNjaGVtYU9pZCk7Ci0JCWlmIChzY2hl bWFOYW1lID09IE5VTEwpIC8qIHJlY2VudGx5LWRlbGV0ZWQgbmFtZXNwYWNlPyAqLwotCQkJZXJl cG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfU0NIRU1BKSwKLQkJ CQkJIGVycm1zZygibm8gc2NoZW1hIGhhcyBiZWVuIHNlbGVjdGVkIHRvIGNyZWF0ZSBpbiIpKSk7 Ci0KLQkJbGlzdF9mcmVlKHNlYXJjaF9wYXRoKTsKLQl9CisJc2NoZW1hT2lkID0gR2V0T3JDcmVh dGVTY2hlbWFGb3JFeHRlbnNpb24oJnNjaGVtYU5hbWUsIGNvbnRyb2wsIGNhc2NhZGUpOwogCiAJ LyoKIAkgKiBNYWtlIG5vdGUgaWYgYSB0ZW1wb3JhcnkgbmFtZXNwYWNlIGhhcyBiZWVuIGFjY2Vz c2VkIGluIHRoaXMKQEAgLTE4NTYsNiArMTk1Myw3IEBAIENyZWF0ZUV4dGVuc2lvbkludGVybmFs KGNoYXIgKmV4dGVuc2lvbk5hbWUsCiAJICovCiAJYWRkcmVzcyA9IEluc2VydEV4dGVuc2lvblR1 cGxlKGNvbnRyb2wtPm5hbWUsIGV4dG93bmVyLAogCQkJCQkJCQkgICBzY2hlbWFPaWQsIGNvbnRy b2wtPnJlbG9jYXRhYmxlLAorCQkJCQkJCQkgICBjb250cm9sLT5vd25lZF9zY2hlbWEsCiAJCQkJ CQkJCSAgIHZlcnNpb25OYW1lLAogCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oTlVMTCksCiAJ CQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShOVUxMKSwKQEAgLTIwNjEsNyArMjE1OSw4IEBAIENy ZWF0ZUV4dGVuc2lvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUV4dGVuc2lvblN0bXQgKnN0 bXQpCiAgKi8KIE9iamVjdEFkZHJlc3MKIEluc2VydEV4dGVuc2lvblR1cGxlKGNvbnN0IGNoYXIg KmV4dE5hbWUsIE9pZCBleHRPd25lciwKLQkJCQkJIE9pZCBzY2hlbWFPaWQsIGJvb2wgcmVsb2Nh dGFibGUsIGNvbnN0IGNoYXIgKmV4dFZlcnNpb24sCisJCQkJCSBPaWQgc2NoZW1hT2lkLCBib29s IHJlbG9jYXRhYmxlLCBib29sIG93bmVkU2NoZW1hLAorCQkJCQkgY29uc3QgY2hhciAqZXh0VmVy c2lvbiwKIAkJCQkJIERhdHVtIGV4dENvbmZpZywgRGF0dW0gZXh0Q29uZGl0aW9uLAogCQkJCQkg TGlzdCAqcmVxdWlyZWRFeHRlbnNpb25zKQogewpAQCAtMjA5MSw2ICsyMTkwLDcgQEAgSW5zZXJ0 RXh0ZW5zaW9uVHVwbGUoY29uc3QgY2hhciAqZXh0TmFtZSwgT2lkIGV4dE93bmVyLAogCXZhbHVl c1tBbnVtX3BnX2V4dGVuc2lvbl9leHRvd25lciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShleHRP d25lcik7CiAJdmFsdWVzW0FudW1fcGdfZXh0ZW5zaW9uX2V4dG5hbWVzcGFjZSAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bShzY2hlbWFPaWQpOwogCXZhbHVlc1tBbnVtX3BnX2V4dGVuc2lvbl9leHRy ZWxvY2F0YWJsZSAtIDFdID0gQm9vbEdldERhdHVtKHJlbG9jYXRhYmxlKTsKKwl2YWx1ZXNbQW51 bV9wZ19leHRlbnNpb25fZXh0b3duZWRzY2hlbWEgLSAxXSA9IEJvb2xHZXREYXR1bShvd25lZFNj aGVtYSk7CiAJdmFsdWVzW0FudW1fcGdfZXh0ZW5zaW9uX2V4dHZlcnNpb24gLSAxXSA9IENTdHJp bmdHZXRUZXh0RGF0dW0oZXh0VmVyc2lvbik7CiAKIAlpZiAoZXh0Q29uZmlnID09IFBvaW50ZXJH ZXREYXR1bShOVUxMKSkKQEAgLTIxMzUsNiArMjIzNSwxNyBAQCBJbnNlcnRFeHRlbnNpb25UdXBs ZShjb25zdCBjaGFyICpleHROYW1lLCBPaWQgZXh0T3duZXIsCiAJcmVjb3JkX29iamVjdF9hZGRy ZXNzX2RlcGVuZGVuY2llcygmbXlzZWxmLCByZWZvYmpzLCBERVBFTkRFTkNZX05PUk1BTCk7CiAJ ZnJlZV9vYmplY3RfYWRkcmVzc2VzKHJlZm9ianMpOwogCisJaWYgKG93bmVkU2NoZW1hKQorCXsK KwkJT2JqZWN0QWRkcmVzcyBzY2hlbWFBZGRyZXNzID0geworCQkJLmNsYXNzSWQgPSBOYW1lc3Bh Y2VSZWxhdGlvbklkLAorCQkJLm9iamVjdElkID0gc2NoZW1hT2lkLAorCQl9OworCisJCXJlY29y ZERlcGVuZGVuY3lPbigmc2NoZW1hQWRkcmVzcywgJm15c2VsZiwgREVQRU5ERU5DWV9FWFRFTlNJ T04pOworCX0KKworCiAJLyogUG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcgZXh0ZW5zaW9uICov CiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soRXh0ZW5zaW9uUmVsYXRpb25JZCwgZXh0ZW5z aW9uT2lkLCAwKTsKIApAQCAtMzAzNSwxMiArMzE0NiwxNiBAQCBleHRlbnNpb25fY29uZmlnX3Jl bW92ZShPaWQgZXh0ZW5zaW9ub2lkLCBPaWQgdGFibGVvaWQpCiAKIC8qCiAgKiBFeGVjdXRlIEFM VEVSIEVYVEVOU0lPTiBTRVQgU0NIRU1BCisgKgorICogRm9yIG93bmVkIHNjaGVtYXMsIHRoaXMg Ym9pbHMgZG93biB0byBjaGFuZ2luZyB0aGUgbmFtZSBvZiBpdHMgc2NoZW1hLiBGb3IKKyAqIG5v bi1vd25lZCBzY2hlbWFzIHRoaXMgcmVxdWlyZXMgbW92aW5nIGFsbCB0aGUgbWVtYmVyIG9iamVj dHMgaW50byB0aGUgbmV3CisgKiBzY2hlbWEuCiAgKi8KIE9iamVjdEFkZHJlc3MKIEFsdGVyRXh0 ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIgKm5l d3NjaGVtYSwgT2lkICpvbGRzY2hlbWEpCiB7CiAJT2lkCQkJZXh0ZW5zaW9uT2lkOwotCU9pZAkJ CW5zcE9pZDsKKwlPaWQJCQluc3BPaWQgPSBJbnZhbGlkT2lkOwogCU9pZAkJCW9sZE5zcE9pZDsK IAlBY2xSZXN1bHQJYWNscmVzdWx0OwogCVJlbGF0aW9uCWV4dFJlbDsKQEAgLTMwNTMsMTEgKzMx NjgsMTAgQEAgQWx0ZXJFeHRlbnNpb25OYW1lc3BhY2UoY29uc3QgY2hhciAqZXh0ZW5zaW9uTmFt ZSwgY29uc3QgY2hhciAqbmV3c2NoZW1hLCBPaWQgKm8KIAlIZWFwVHVwbGUJZGVwVHVwOwogCU9i amVjdEFkZHJlc3NlcyAqb2Jqc01vdmVkOwogCU9iamVjdEFkZHJlc3MgZXh0QWRkcjsKKwlib29s CQlvd25lZFNjaGVtYTsKIAogCWV4dGVuc2lvbk9pZCA9IGdldF9leHRlbnNpb25fb2lkKGV4dGVu c2lvbk5hbWUsIGZhbHNlKTsKIAotCW5zcE9pZCA9IExvb2t1cENyZWF0aW9uTmFtZXNwYWNlKG5l d3NjaGVtYSk7Ci0KIAkvKgogCSAqIFBlcm1pc3Npb24gY2hlY2s6IG11c3Qgb3duIGV4dGVuc2lv bi4gIE5vdGUgdGhhdCB3ZSBkb24ndCBib3RoZXIgdG8KIAkgKiBjaGVjayBvd25lcnNoaXAgb2Yg dGhlIGluZGl2aWR1YWwgbWVtYmVyIG9iamVjdHMgLi4uCkBAIC0zMDY2LDIyICszMTgwLDYgQEAg QWx0ZXJFeHRlbnNpb25OYW1lc3BhY2UoY29uc3QgY2hhciAqZXh0ZW5zaW9uTmFtZSwgY29uc3Qg Y2hhciAqbmV3c2NoZW1hLCBPaWQgKm8KIAkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09X TkVSLCBPQkpFQ1RfRVhURU5TSU9OLAogCQkJCQkgICBleHRlbnNpb25OYW1lKTsKIAotCS8qIFBl cm1pc3Npb24gY2hlY2s6IG11c3QgaGF2ZSBjcmVhdGlvbiByaWdodHMgaW4gdGFyZ2V0IG5hbWVz cGFjZSAqLwotCWFjbHJlc3VsdCA9IG9iamVjdF9hY2xjaGVjayhOYW1lc3BhY2VSZWxhdGlvbklk LCBuc3BPaWQsIEdldFVzZXJJZCgpLCBBQ0xfQ1JFQVRFKTsKLQlpZiAoYWNscmVzdWx0ICE9IEFD TENIRUNLX09LKQotCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9TQ0hFTUEsIG5l d3NjaGVtYSk7Ci0KLQkvKgotCSAqIElmIHRoZSBzY2hlbWEgaXMgY3VycmVudGx5IGEgbWVtYmVy IG9mIHRoZSBleHRlbnNpb24sIGRpc2FsbG93IG1vdmluZwotCSAqIHRoZSBleHRlbnNpb24gaW50 byB0aGUgc2NoZW1hLiAgVGhhdCB3b3VsZCBjcmVhdGUgYSBkZXBlbmRlbmN5IGxvb3AuCi0JICov Ci0JaWYgKGdldEV4dGVuc2lvbk9mT2JqZWN0KE5hbWVzcGFjZVJlbGF0aW9uSWQsIG5zcE9pZCkg PT0gZXh0ZW5zaW9uT2lkKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVf T0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAotCQkJCSBlcnJtc2coImNhbm5vdCBt b3ZlIGV4dGVuc2lvbiBcIiVzXCIgaW50byBzY2hlbWEgXCIlc1wiICIKLQkJCQkJCSJiZWNhdXNl IHRoZSBleHRlbnNpb24gY29udGFpbnMgdGhlIHNjaGVtYSIsCi0JCQkJCQlleHRlbnNpb25OYW1l LCBuZXdzY2hlbWEpKSk7Ci0KIAkvKiBMb2NhdGUgdGhlIHBnX2V4dGVuc2lvbiB0dXBsZSAqLwog CWV4dFJlbCA9IHRhYmxlX29wZW4oRXh0ZW5zaW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9j ayk7CiAKQEAgLTMxMDUsMTQgKzMyMDMsNDMgQEAgQWx0ZXJFeHRlbnNpb25OYW1lc3BhY2UoY29u c3QgY2hhciAqZXh0ZW5zaW9uTmFtZSwgY29uc3QgY2hhciAqbmV3c2NoZW1hLCBPaWQgKm8KIAog CXN5c3RhYmxlX2VuZHNjYW4oZXh0U2Nhbik7CiAKKwlvd25lZFNjaGVtYSA9IGV4dEZvcm0tPmV4 dG93bmVkc2NoZW1hOworCiAJLyoKLQkgKiBJZiB0aGUgZXh0ZW5zaW9uIGlzIGFscmVhZHkgaW4g dGhlIHRhcmdldCBzY2hlbWEsIGp1c3Qgc2lsZW50bHkgZG8KLQkgKiBub3RoaW5nLgorCSAqIEZv ciBub24tb3duZWQgc2NoZW1hcywgd2Ugc2hvdWxkIG5vdyBldmFsdWF0ZSBpZiB0aGUgdGFyZ2V0 IHNjaGVtYSBpcyBhCisJICogdmFsaWQgdGFyZ2V0LiBGb3Igb3duZWQgc2NoZW1hcywgbm8gc3Vj aCBjaGVja3MgYXJlIG5lZWRlZCwgYmVjYXVzZQorCSAqIHdlJ2xsIHNpbXBseSByZW5hbWUgdGhl IGV4aXN0aW5nIHNjaGVtYS4KIAkgKi8KLQlpZiAoZXh0Rm9ybS0+ZXh0bmFtZXNwYWNlID09IG5z cE9pZCkKKwlpZiAoIW93bmVkU2NoZW1hKQogCXsKLQkJdGFibGVfY2xvc2UoZXh0UmVsLCBSb3dF eGNsdXNpdmVMb2NrKTsKLQkJcmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOworCQluc3BPaWQg PSBMb29rdXBDcmVhdGlvbk5hbWVzcGFjZShuZXdzY2hlbWEpOworCisJCS8qIFBlcm1pc3Npb24g Y2hlY2s6IG11c3QgaGF2ZSBjcmVhdGlvbiByaWdodHMgaW4gdGFyZ2V0IG5hbWVzcGFjZSAqLwor CQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soTmFtZXNwYWNlUmVsYXRpb25JZCwgbnNwT2lk LCBHZXRVc2VySWQoKSwgQUNMX0NSRUFURSk7CisJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tf T0spCisJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9TQ0hFTUEsIG5ld3NjaGVt YSk7CisKKwkJLyoKKwkJICogSWYgdGhlIHNjaGVtYSBpcyBjdXJyZW50bHkgYSBtZW1iZXIgb2Yg dGhlIGV4dGVuc2lvbiwgZGlzYWxsb3cKKwkJICogbW92aW5nIHRoZSBleHRlbnNpb24gaW50byB0 aGUgc2NoZW1hLiAgVGhhdCB3b3VsZCBjcmVhdGUgYQorCQkgKiBkZXBlbmRlbmN5IGxvb3AuCisJ CSAqLworCQlpZiAoZ2V0RXh0ZW5zaW9uT2ZPYmplY3QoTmFtZXNwYWNlUmVsYXRpb25JZCwgbnNw T2lkKSA9PSBleHRlbnNpb25PaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygi Y2Fubm90IG1vdmUgZXh0ZW5zaW9uIFwiJXNcIiBpbnRvIHNjaGVtYSBcIiVzXCIgIgorCQkJCQkJ CSJiZWNhdXNlIHRoZSBleHRlbnNpb24gY29udGFpbnMgdGhlIHNjaGVtYSIsCisJCQkJCQkJZXh0 ZW5zaW9uTmFtZSwgbmV3c2NoZW1hKSkpOworCisJCS8qCisJCSAqIElmIHRoZSBleHRlbnNpb24g aXMgYWxyZWFkeSBpbiB0aGUgdGFyZ2V0IHNjaGVtYSwganVzdCBzaWxlbnRseSBkbworCQkgKiBu b3RoaW5nLgorCQkgKi8KKwkJaWYgKGV4dEZvcm0tPmV4dG5hbWVzcGFjZSA9PSBuc3BPaWQpCisJ CXsKKwkJCXRhYmxlX2Nsb3NlKGV4dFJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisJCQlyZXR1cm4g SW52YWxpZE9iamVjdEFkZHJlc3M7CisJCX0KIAl9CiAKIAkvKiBDaGVjayBleHRlbnNpb24gaXMg c3VwcG9zZWQgdG8gYmUgcmVsb2NhdGFibGUgKi8KQEAgLTMxODUsNiArMzMxMiwxMyBAQCBBbHRl ckV4dGVuc2lvbk5hbWVzcGFjZShjb25zdCBjaGFyICpleHRlbnNpb25OYW1lLCBjb25zdCBjaGFy ICpuZXdzY2hlbWEsIE9pZCAqbwogCQkJfQogCQl9CiAKKwkJLyoKKwkJICogV2UgZG9uJ3QgYWN0 dWFsbHkgbW92ZSBhbnkgb2JqZWN0cyBmb3Igb3duZWQgc2NoZW1hcyBiZWNhdXNlIHdlCisJCSAq IHNpbXBseSByZW5hbWUgdGhlIHNjaGVtYSB0aGF0IHRoZXNlIG9iamVjdHMgYXJlIGFscmVhZHkg aW4uCisJCSAqLworCQlpZiAob3duZWRTY2hlbWEpCisJCQljb250aW51ZTsKKwogCQkvKgogCQkg KiBPdGhlcndpc2UsIGlnbm9yZSBub24tbWVtYmVyc2hpcCBkZXBlbmRlbmNpZXMuICAoQ3VycmVu dGx5LCB0aGUKIAkJICogb25seSBvdGhlciBjYXNlIHdlIGNvdWxkIHNlZSBoZXJlIGlzIGEgbm9y bWFsIGRlcGVuZGVuY3kgZnJvbQpAQCAtMzIyOCwxOCArMzM2MiwzNSBAQCBBbHRlckV4dGVuc2lv bk5hbWVzcGFjZShjb25zdCBjaGFyICpleHRlbnNpb25OYW1lLCBjb25zdCBjaGFyICpuZXdzY2hl bWEsIE9pZCAqbwogCiAJcmVsYXRpb25fY2xvc2UoZGVwUmVsLCBBY2Nlc3NTaGFyZUxvY2spOwog Ci0JLyogTm93IGFkanVzdCBwZ19leHRlbnNpb24uZXh0bmFtZXNwYWNlICovCi0JZXh0Rm9ybS0+ ZXh0bmFtZXNwYWNlID0gbnNwT2lkOworCS8qIE5vdyBhY3R1YWxseSB1cGRhdGUgdGhlIHNjaGVt YSBvZiB0aGUgZXh0ZW5zaW9uLiAqLworCWlmIChvd25lZFNjaGVtYSkKKwl7CisJCS8qCisJCSAq IEZvciBvd25lZCBzY2hlbWFzLCB3ZSBzaW1wbHkgcmVuYW1lIHRoZSBzY2hlbWEuIFRoaXMgbWVh bnMgdGhhdCB3ZQorCQkgKiBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUgZXh0ZW5zaW9uIGl0cyBj YXRhbG9nIGVudHJ5LCBiZWNhdXNlIHRoZQorCQkgKiBvaWQgb2YgdGhlIHNjaGVtYSB3aWxsIHN0 YXkgdGhlIHNhbWUuCisJCSAqLworCQlSZW5hbWVTY2hlbWEoZ2V0X25hbWVzcGFjZV9uYW1lKG9s ZE5zcE9pZCksIG5ld3NjaGVtYSk7CisJCXRhYmxlX2Nsb3NlKGV4dFJlbCwgUm93RXhjbHVzaXZl TG9jayk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIEZvciBub24tb3duZWQgc2NoZW1hcywg d2Ugbm93IGhhdmUgdG8gdXBkYXRlIHRoZSBleHRlbnNpb24ncyBzY2hlbWEKKwkJICogZW50cnks IGFuZCBhbHNvIHVwZGF0ZSB0aGUgZGVwZW5kZW5jaWVzLgorCQkgKi8KKwkJZXh0Rm9ybS0+ZXh0 bmFtZXNwYWNlID0gbnNwT2lkOwogCi0JQ2F0YWxvZ1R1cGxlVXBkYXRlKGV4dFJlbCwgJmV4dFR1 cC0+dF9zZWxmLCBleHRUdXApOworCQlDYXRhbG9nVHVwbGVVcGRhdGUoZXh0UmVsLCAmZXh0VHVw LT50X3NlbGYsIGV4dFR1cCk7CiAKLQl0YWJsZV9jbG9zZShleHRSZWwsIFJvd0V4Y2x1c2l2ZUxv Y2spOworCQl0YWJsZV9jbG9zZShleHRSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JLyogdXBk YXRlIGRlcGVuZGVuY3kgdG8gcG9pbnQgdG8gdGhlIG5ldyBzY2hlbWEgKi8KLQlpZiAoY2hhbmdl RGVwZW5kZW5jeUZvcihFeHRlbnNpb25SZWxhdGlvbklkLCBleHRlbnNpb25PaWQsCi0JCQkJCQkJ TmFtZXNwYWNlUmVsYXRpb25JZCwgb2xkTnNwT2lkLCBuc3BPaWQpICE9IDEpCi0JCWVsb2coRVJS T1IsICJjb3VsZCBub3QgY2hhbmdlIHNjaGVtYSBkZXBlbmRlbmN5IGZvciBleHRlbnNpb24gJXMi LAotCQkJIE5hbWVTdHIoZXh0Rm9ybS0+ZXh0bmFtZSkpOworCQkvKiB1cGRhdGUgZGVwZW5kZW5j eSB0byBwb2ludCB0byB0aGUgbmV3IHNjaGVtYSAqLworCQlpZiAoY2hhbmdlRGVwZW5kZW5jeUZv cihFeHRlbnNpb25SZWxhdGlvbklkLCBleHRlbnNpb25PaWQsCisJCQkJCQkJCU5hbWVzcGFjZVJl bGF0aW9uSWQsIG9sZE5zcE9pZCwgbnNwT2lkKSAhPSAxKQorCQkJZWxvZyhFUlJPUiwgImNvdWxk IG5vdCBjaGFuZ2Ugc2NoZW1hIGRlcGVuZGVuY3kgZm9yIGV4dGVuc2lvbiAlcyIsCisJCQkJIE5h bWVTdHIoZXh0Rm9ybS0+ZXh0bmFtZSkpOworCX0KIAogCUludm9rZU9iamVjdFBvc3RBbHRlckhv b2soRXh0ZW5zaW9uUmVsYXRpb25JZCwgZXh0ZW5zaW9uT2lkLCAwKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCmluZGV4IGE0ZjhiNGZhYTkwLi4xNWJkMjY1 Mzc1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9y dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwpAQCAt MTksNiArMTksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V4dGVuc2lv bi5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMuaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCkBAIC0xODUsMTIgKzE4NiwxNCBAQCBEYXR1bQogYmlu YXJ5X3VwZ3JhZGVfY3JlYXRlX2VtcHR5X2V4dGVuc2lvbihQR19GVU5DVElPTl9BUkdTKQogewog CXRleHQJICAgKmV4dE5hbWU7Ci0JdGV4dAkgICAqc2NoZW1hTmFtZTsKKwljaGFyCSAgICpzY2hl bWFOYW1lOwogCWJvb2wJCXJlbG9jYXRhYmxlOworCWJvb2wJCW93bmVkc2NoZW1hOwogCXRleHQJ ICAgKmV4dFZlcnNpb247CiAJRGF0dW0JCWV4dENvbmZpZzsKIAlEYXR1bQkJZXh0Q29uZGl0aW9u OwogCUxpc3QJICAgKnJlcXVpcmVkRXh0ZW5zaW9uczsKKwlPaWQJCQlzY2hlbWFPaWQ7CiAKIAlD SEVDS19JU19CSU5BUllfVVBHUkFERTsKIApAQCAtMTk4LDI4ICsyMDEsMzAgQEAgYmluYXJ5X3Vw Z3JhZGVfY3JlYXRlX2VtcHR5X2V4dGVuc2lvbihQR19GVU5DVElPTl9BUkdTKQogCWlmIChQR19B UkdJU05VTEwoMCkgfHwKIAkJUEdfQVJHSVNOVUxMKDEpIHx8CiAJCVBHX0FSR0lTTlVMTCgyKSB8 fAotCQlQR19BUkdJU05VTEwoMykpCisJCVBHX0FSR0lTTlVMTCgzKSB8fAorCQlQR19BUkdJU05V TEwoNCkpCiAJCWVsb2coRVJST1IsICJudWxsIGFyZ3VtZW50IHRvIGJpbmFyeV91cGdyYWRlX2Ny ZWF0ZV9lbXB0eV9leHRlbnNpb24gaXMgbm90IGFsbG93ZWQiKTsKIAogCWV4dE5hbWUgPSBQR19H RVRBUkdfVEVYVF9QUCgwKTsKLQlzY2hlbWFOYW1lID0gUEdfR0VUQVJHX1RFWFRfUFAoMSk7CisJ c2NoZW1hTmFtZSA9IHRleHRfdG9fY3N0cmluZyhQR19HRVRBUkdfVEVYVF9QUCgxKSk7CiAJcmVs b2NhdGFibGUgPSBQR19HRVRBUkdfQk9PTCgyKTsKLQlleHRWZXJzaW9uID0gUEdfR0VUQVJHX1RF WFRfUFAoMyk7CisJb3duZWRzY2hlbWEgPSBQR19HRVRBUkdfQk9PTCgzKTsKKwlleHRWZXJzaW9u ID0gUEdfR0VUQVJHX1RFWFRfUFAoNCk7CiAKLQlpZiAoUEdfQVJHSVNOVUxMKDQpKQorCWlmIChQ R19BUkdJU05VTEwoNSkpCiAJCWV4dENvbmZpZyA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKIAll bHNlCi0JCWV4dENvbmZpZyA9IFBHX0dFVEFSR19EQVRVTSg0KTsKKwkJZXh0Q29uZmlnID0gUEdf R0VUQVJHX0RBVFVNKDUpOwogCi0JaWYgKFBHX0FSR0lTTlVMTCg1KSkKKwlpZiAoUEdfQVJHSVNO VUxMKDYpKQogCQlleHRDb25kaXRpb24gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CiAJZWxzZQot CQlleHRDb25kaXRpb24gPSBQR19HRVRBUkdfREFUVU0oNSk7CisJCWV4dENvbmRpdGlvbiA9IFBH X0dFVEFSR19EQVRVTSg2KTsKIAogCXJlcXVpcmVkRXh0ZW5zaW9ucyA9IE5JTDsKLQlpZiAoIVBH X0FSR0lTTlVMTCg2KSkKKwlpZiAoIVBHX0FSR0lTTlVMTCg3KSkKIAl7Ci0JCUFycmF5VHlwZSAg KnRleHRBcnJheSA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUCg2KTsKKwkJQXJyYXlUeXBlICAqdGV4 dEFycmF5ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDcpOwogCQlEYXR1bQkgICAqdGV4dERhdHVt czsKIAkJaW50CQkJbmRhdHVtczsKIAkJaW50CQkJaTsKQEAgLTIzNCwxMCArMjM5LDI4IEBAIGJp bmFyeV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24oUEdfRlVOQ1RJT05fQVJHUykKIAkJ fQogCX0KIAorCWlmIChvd25lZHNjaGVtYSkKKwl7CisJCUNyZWF0ZVNjaGVtYVN0bXQgKmNzc3Rt dCA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVN0bXQpOworCisJCWNzc3RtdC0+c2NoZW1hbmFtZSA9 IHNjaGVtYU5hbWU7CisJCWNzc3RtdC0+YXV0aHJvbGUgPSBOVUxMOwkvKiB3aWxsIGJlIGNyZWF0 ZWQgYnkgY3VycmVudCB1c2VyICovCisJCWNzc3RtdC0+c2NoZW1hRWx0cyA9IE5JTDsKKwkJY3Nz dG10LT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CisJCXNjaGVtYU9pZCA9IENyZWF0ZVNjaGVtYUNv bW1hbmQoY3NzdG10LCAiKGdlbmVyYXRlZCBDUkVBVEUgU0NIRU1BIGNvbW1hbmQpIiwKKwkJCQkJ CQkJCQktMSwgLTEpOworCisJfQorCWVsc2UKKwl7CisJCXNjaGVtYU9pZCA9IGdldF9uYW1lc3Bh Y2Vfb2lkKHNjaGVtYU5hbWUsIGZhbHNlKTsKKwl9CisKIAlJbnNlcnRFeHRlbnNpb25UdXBsZSh0 ZXh0X3RvX2NzdHJpbmcoZXh0TmFtZSksCiAJCQkJCQkgR2V0VXNlcklkKCksCi0JCQkJCQkgZ2V0 X25hbWVzcGFjZV9vaWQodGV4dF90b19jc3RyaW5nKHNjaGVtYU5hbWUpLCBmYWxzZSksCisJCQkJ CQkgc2NoZW1hT2lkLAogCQkJCQkJIHJlbG9jYXRhYmxlLAorCQkJCQkJIG93bmVkc2NoZW1hLAog CQkJCQkJIHRleHRfdG9fY3N0cmluZyhleHRWZXJzaW9uKSwKIAkJCQkJCSBleHRDb25maWcsCiAJ CQkJCQkgZXh0Q29uZGl0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZmM3YTY2MzkxNjMuLmE4YzI1Y2Iz ZjQ0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMKQEAgLTE5MjEsNiArMTkyMSwxOSBAQCBjaGVja0V4dGVuc2lvbk1l bWJlcnNoaXAoRHVtcGFibGVPYmplY3QgKmRvYmosIEFyY2hpdmUgKmZvdXQpCiAJaWYgKGV4dCA9 PSBOVUxMKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgdGhlICJvd25l ZF9zY2hlbWEiIG9mIHRoZSBleHRlbnNpb24sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0bworCSAqIGNy ZWF0ZSBpdCBtYW51YWxseSwgYmVjYXVzZSBpdCBnZXRzIGNyZWF0ZWQgdG9nZXRoZXIgd2l0aCB0 aGUKKwkgKiBleHRlbnNpb24uCisJICovCisJaWYgKGRvYmotPm9ialR5cGUgPT0gRE9fTkFNRVNQ QUNFICYmCisJCWV4dC0+b3duZWRzY2hlbWEgJiYgc3RyY21wKGV4dC0+bmFtZXNwYWNlLCBkb2Jq LT5uYW1lKSA9PSAwKQorCXsKKwkJTmFtZXNwYWNlSW5mbyAqbnNpbmZvID0gKE5hbWVzcGFjZUlu Zm8gKikgZG9iajsKKworCQluc2luZm8tPmNyZWF0ZSA9IGZhbHNlOworCX0KKwogCWRvYmotPmV4 dF9tZW1iZXIgPSB0cnVlOwogCiAJLyogUmVjb3JkIGRlcGVuZGVuY3kgc28gdGhhdCBnZXREZXBl bmRlbmNpZXMgbmVlZG4ndCBkZWFsIHdpdGggdGhhdCAqLwpAQCAtNTg1NSw3ICs1ODY4LDcgQEAg YmluYXJ5X3VwZ3JhZGVfZXh0ZW5zaW9uX21lbWJlcihQUUV4cEJ1ZmZlciB1cGdyYWRlX2J1ZmZl ciwKIAkJCQkJCQkJY29uc3QgY2hhciAqb2JqbmFtZSwKIAkJCQkJCQkJY29uc3QgY2hhciAqb2Jq bmFtZXNwYWNlKQogewotCUR1bXBhYmxlT2JqZWN0ICpleHRvYmogPSBOVUxMOworCUV4dGVuc2lv bkluZm8gKmV4dCA9IE5VTEw7CiAJaW50CQkJaTsKIAogCWlmICghZG9iai0+ZXh0X21lbWJlcikK QEAgLTU4NjksMTkgKzU4ODIsMzMgQEAgYmluYXJ5X3VwZ3JhZGVfZXh0ZW5zaW9uX21lbWJlcihQ UUV4cEJ1ZmZlciB1cGdyYWRlX2J1ZmZlciwKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZG9iai0+ bkRlcHM7IGkrKykKIAl7Ci0JCWV4dG9iaiA9IGZpbmRPYmplY3RCeUR1bXBJZChkb2JqLT5kZXBl bmRlbmNpZXNbaV0pOworCQlEdW1wYWJsZU9iamVjdCAqZXh0b2JqID0gZmluZE9iamVjdEJ5RHVt cElkKGRvYmotPmRlcGVuZGVuY2llc1tpXSk7CisKIAkJaWYgKGV4dG9iaiAmJiBleHRvYmotPm9i alR5cGUgPT0gRE9fRVhURU5TSU9OKQorCQl7CisJCQlleHQgPSAoRXh0ZW5zaW9uSW5mbyAqKSBl eHRvYmo7CiAJCQlicmVhazsKLQkJZXh0b2JqID0gTlVMTDsKKwkJfQogCX0KLQlpZiAoZXh0b2Jq ID09IE5VTEwpCisJaWYgKGV4dCA9PSBOVUxMKQogCQlwZ19mYXRhbCgiY291bGQgbm90IGZpbmQg cGFyZW50IGV4dGVuc2lvbiBmb3IgJXMgJXMiLAogCQkJCSBvYmp0eXBlLCBvYmpuYW1lKTsKIAor CS8qCisJICogSWYgdGhlIG9iamVjdCBpcyB0aGUgIm93bmVkX3NjaGVtYSIgb2YgdGhlIGV4dGVu c2lvbiwgd2UgZG9uJ3QgbmVlZCB0bworCSAqIGFkZCBpdCB0byB0aGUgZXh0ZW5zaW9uIGJlY2F1 c2UgaXQgd2FzIGFscmVhZHkgbWFkZSBhIG1lbWJlciBvZiB0aGUKKwkgKiBleHRlbnNpb24gd2hl biB0aGUgZXh0ZW5zaW9uIHdhcyBjcmVhdGVkLgorCSAqLworCWlmIChkb2JqLT5vYmpUeXBlID09 IERPX05BTUVTUEFDRSAmJgorCQlleHQtPm93bmVkc2NoZW1hICYmIHN0cmNtcChleHQtPm5hbWVz cGFjZSwgZG9iai0+bmFtZSkgPT0gMCkKKwl7CisJCXJldHVybjsKKwl9CisKIAlhcHBlbmRQUUV4 cEJ1ZmZlclN0cih1cGdyYWRlX2J1ZmZlciwKIAkJCQkJCSAiXG4tLSBGb3IgYmluYXJ5IHVwZ3Jh ZGUsIGhhbmRsZSBleHRlbnNpb24gbWVtYmVyc2hpcCB0aGUgaGFyZCB3YXlcbiIpOwogCWFwcGVu ZFBRRXhwQnVmZmVyKHVwZ3JhZGVfYnVmZmVyLCAiQUxURVIgRVhURU5TSU9OICVzIEFERCAlcyAi LAotCQkJCQkgIGZtdElkKGV4dG9iai0+bmFtZSksCisJCQkJCSAgZm10SWQoZXh0LT5kb2JqLm5h bWUpLAogCQkJCQkgIG9ianR5cGUpOwogCWlmIChvYmpuYW1lc3BhY2UgJiYgKm9iam5hbWVzcGFj ZSkKIAkJYXBwZW5kUFFFeHBCdWZmZXIodXBncmFkZV9idWZmZXIsICIlcy4iLCBmbXRJZChvYmpu YW1lc3BhY2UpKTsKQEAgLTYwMzgsNiArNjA2NSw3IEBAIGdldEV4dGVuc2lvbnMoQXJjaGl2ZSAq Zm91dCwgaW50ICpudW1FeHRlbnNpb25zKQogCWludAkJCWlfZXh0bmFtZTsKIAlpbnQJCQlpX25z cG5hbWU7CiAJaW50CQkJaV9leHRyZWxvY2F0YWJsZTsKKwlpbnQJCQlpX2V4dG93bmVkc2NoZW1h OwogCWludAkJCWlfZXh0dmVyc2lvbjsKIAlpbnQJCQlpX2V4dGNvbmZpZzsKIAlpbnQJCQlpX2V4 dGNvbmRpdGlvbjsKQEAgLTYwNDYsNyArNjA3NCwxNCBAQCBnZXRFeHRlbnNpb25zKEFyY2hpdmUg KmZvdXQsIGludCAqbnVtRXh0ZW5zaW9ucykKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiU0VMRUNUIHgudGFibGVvaWQsIHgub2lkLCAiCiAJCQkJCQkgInguZXh0bmFtZSwgbi5uc3Bu YW1lLCB4LmV4dHJlbG9jYXRhYmxlLCB4LmV4dHZlcnNpb24sIHguZXh0Y29uZmlnLCB4LmV4dGNv bmRpdGlvbiAiCi0JCQkJCQkgIkZST00gcGdfZXh0ZW5zaW9uIHggIgorCQkpOworCisJaWYgKGZv dXQtPnJlbW90ZVZlcnNpb24gPj0gMTgwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIiwgeC5leHRvd25lZHNjaGVtYSAiKTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LCAiLCBmYWxzZSBBUyBleHRvd25lZHNjaGVtYSAiKTsKKworCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiRlJPTSBwZ19leHRlbnNpb24geCAiCiAJCQkJCQkgIkpPSU4gcGdfbmFt ZXNwYWNlIG4gT04gbi5vaWQgPSB4LmV4dG5hbWVzcGFjZSIpOwogCiAJcmVzID0gRXhlY3V0ZVNx bFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwpAQCAtNjA2Miw2ICs2 MDk3LDcgQEAgZ2V0RXh0ZW5zaW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUV4dGVuc2lvbnMp CiAJaV9leHRuYW1lID0gUFFmbnVtYmVyKHJlcywgImV4dG5hbWUiKTsKIAlpX25zcG5hbWUgPSBQ UWZudW1iZXIocmVzLCAibnNwbmFtZSIpOwogCWlfZXh0cmVsb2NhdGFibGUgPSBQUWZudW1iZXIo cmVzLCAiZXh0cmVsb2NhdGFibGUiKTsKKwlpX2V4dG93bmVkc2NoZW1hID0gUFFmbnVtYmVyKHJl cywgImV4dG93bmVkc2NoZW1hIik7CiAJaV9leHR2ZXJzaW9uID0gUFFmbnVtYmVyKHJlcywgImV4 dHZlcnNpb24iKTsKIAlpX2V4dGNvbmZpZyA9IFBRZm51bWJlcihyZXMsICJleHRjb25maWciKTsK IAlpX2V4dGNvbmRpdGlvbiA9IFBRZm51bWJlcihyZXMsICJleHRjb25kaXRpb24iKTsKQEAgLTYw NzUsNiArNjExMSw3IEBAIGdldEV4dGVuc2lvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1FeHRl bnNpb25zKQogCQlleHRpbmZvW2ldLmRvYmoubmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJl cywgaSwgaV9leHRuYW1lKSk7CiAJCWV4dGluZm9baV0ubmFtZXNwYWNlID0gcGdfc3RyZHVwKFBR Z2V0dmFsdWUocmVzLCBpLCBpX25zcG5hbWUpKTsKIAkJZXh0aW5mb1tpXS5yZWxvY2F0YWJsZSA9 ICooUFFnZXR2YWx1ZShyZXMsIGksIGlfZXh0cmVsb2NhdGFibGUpKSA9PSAndCc7CisJCWV4dGlu Zm9baV0ub3duZWRzY2hlbWEgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V4dG93bmVkc2NoZW1h KSkgPT0gJ3QnOwogCQlleHRpbmZvW2ldLmV4dHZlcnNpb24gPSBwZ19zdHJkdXAoUFFnZXR2YWx1 ZShyZXMsIGksIGlfZXh0dmVyc2lvbikpOwogCQlleHRpbmZvW2ldLmV4dGNvbmZpZyA9IHBnX3N0 cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9leHRjb25maWcpKTsKIAkJZXh0aW5mb1tpXS5leHRj b25kaXRpb24gPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfZXh0Y29uZGl0aW9uKSk7 CkBAIC0xMTc4Miw5ICsxMTgxOSw5IEBAIGR1bXBOYW1lc3BhY2UoQXJjaGl2ZSAqZm91dCwgY29u c3QgTmFtZXNwYWNlSW5mbyAqbnNwaW5mbykKIAl7CiAJCS8qIHNlZSBzZWxlY3REdW1wYWJsZU5h bWVzcGFjZSgpICovCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGRlbHEsCi0JCQkJCQkJICItLSAq bm90KiBkcm9wcGluZyBzY2hlbWEsIHNpbmNlIGluaXRkYiBjcmVhdGVzIGl0XG4iKTsKKwkJCQkJ CQkgIi0tICpub3QqIGRyb3BwaW5nIHNjaGVtYSwgc2luY2UgaW5pdGRiIG9yIENSRUFURSBFWFRF TlNJT04gY3JlYXRlcyBpdFxuIik7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsCi0JCQkJCQkJ ICItLSAqbm90KiBjcmVhdGluZyBzY2hlbWEsIHNpbmNlIGluaXRkYiBjcmVhdGVzIGl0XG4iKTsK KwkJCQkJCQkgIi0tICpub3QqIGNyZWF0aW5nIHNjaGVtYSwgc2luY2UgaW5pdGRiIG9yIENSRUFU RSBFWFRFTlNJT04gY3JlYXRlcyBpdFxuIik7CiAJfQogCiAJaWYgKGRvcHQtPmJpbmFyeV91cGdy YWRlKQpAQCAtMTE4OTYsNiArMTE5MzMsNyBAQCBkdW1wRXh0ZW5zaW9uKEFyY2hpdmUgKmZvdXQs IGNvbnN0IEV4dGVuc2lvbkluZm8gKmV4dGluZm8pCiAJCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChx LCBleHRpbmZvLT5uYW1lc3BhY2UsIGZvdXQpOwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAi LCAiKTsKIAkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiVzLCAiLCBleHRpbmZvLT5yZWxvY2F0YWJs ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiJXMsICIsIGV4 dGluZm8tPm93bmVkc2NoZW1hID8gInRydWUiIDogImZhbHNlIik7CiAJCWFwcGVuZFN0cmluZ0xp dGVyYWxBSChxLCBleHRpbmZvLT5leHR2ZXJzaW9uLCBmb3V0KTsKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocSwgIiwgIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IGRkZTg1ZWQxNTZjLi5lYmQzOTFiNDQ3 ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCkBAIC0xOTUsNiArMTk1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2V4dGVu c2lvbkluZm8KIAlEdW1wYWJsZU9iamVjdCBkb2JqOwogCWNoYXIJICAgKm5hbWVzcGFjZTsJCS8q IHNjaGVtYSBjb250YWluaW5nIGV4dGVuc2lvbidzIG9iamVjdHMgKi8KIAlib29sCQlyZWxvY2F0 YWJsZTsKKwlib29sCQlvd25lZHNjaGVtYTsKIAljaGFyCSAgICpleHR2ZXJzaW9uOwogCWNoYXIJ ICAgKmV4dGNvbmZpZzsJCS8qIGluZm8gYWJvdXQgY29uZmlndXJhdGlvbiB0YWJsZXMgKi8KIAlj aGFyCSAgICpleHRjb25kaXRpb247CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2V4dGVuc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19leHRlbnNpb24uaAppbmRleCA5 MjE0ZWJlZGFmYS4uMDIyYmQ2ZGQ5MmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfZXh0ZW5zaW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19leHRlbnNpb24uaApA QCAtMzQsNiArMzQsNyBAQCBDQVRBTE9HKHBnX2V4dGVuc2lvbiwzMDc5LEV4dGVuc2lvblJlbGF0 aW9uSWQpCiAJT2lkCQkJZXh0bmFtZXNwYWNlIEJLSV9MT09LVVAocGdfbmFtZXNwYWNlKTsJLyog bmFtZXNwYWNlIG9mCiAJCQkJCQkJCQkJCQkJCSAqIGNvbnRhaW5lZCBvYmplY3RzICovCiAJYm9v bAkJZXh0cmVsb2NhdGFibGU7IC8qIGlmIHRydWUsIGFsbG93IEFMVEVSIEVYVEVOU0lPTiBTRVQg U0NIRU1BICovCisJYm9vbAkJZXh0b3duZWRzY2hlbWE7IC8qIGlmIHRydWUsIHNjaGVtYSBpcyBv d25lZCBieSBleHRlbnNpb24gKi8KIAogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFi bGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogZXh0dmVyc2lvbiBtYXkgbmV2ZXIg YmUgbnVsbCwgYnV0IHRoZSBvdGhlcnMgY2FuIGJlLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggMTE4ZDZkYTFhY2UuLmU0N2MwODdjZDliIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK QEAgLTExNzYxLDcgKzExNzYxLDcgQEAKIHsgb2lkID0+ICczNTkxJywgZGVzY3IgPT4gJ2ZvciB1 c2UgYnkgcGdfdXBncmFkZScsCiAgIHByb25hbWUgPT4gJ2JpbmFyeV91cGdyYWRlX2NyZWF0ZV9l bXB0eV9leHRlbnNpb24nLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3ZvbGF0aWxlID0+ICd2 JywgcHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9yZXR0eXBlID0+ICd2b2lkJywKLSAgcHJvYXJndHlw ZXMgPT4gJ3RleHQgdGV4dCBib29sIHRleHQgX29pZCBfdGV4dCBfdGV4dCcsCisgIHByb2FyZ3R5 cGVzID0+ICd0ZXh0IHRleHQgYm9vbCBib29sIHRleHQgX29pZCBfdGV4dCBfdGV4dCcsCiAgIHBy b3NyYyA9PiAnYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2VtcHR5X2V4dGVuc2lvbicgfSwKIHsgb2lk ID0+ICc0MDgzJywgZGVzY3IgPT4gJ2ZvciB1c2UgYnkgcGdfdXBncmFkZScsCiAgIHByb25hbWUg PT4gJ2JpbmFyeV91cGdyYWRlX3NldF9yZWNvcmRfaW5pdF9wcml2cycsIHByb3ZvbGF0aWxlID0+ ICd2JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmgKaW5kZXggMjQ0MTliZmI1YzkuLjIwNWM1Yzcy NDVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaApAQCAtMzgsNyArMzgsOSBAQCBleHRlcm4g T2JqZWN0QWRkcmVzcyBDcmVhdGVFeHRlbnNpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVF eHRlbnNpb25TdG10ICpzdAogZXh0ZXJuIHZvaWQgUmVtb3ZlRXh0ZW5zaW9uQnlJZChPaWQgZXh0 SWQpOwogCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBJbnNlcnRFeHRlbnNpb25UdXBsZShjb25zdCBj aGFyICpleHROYW1lLCBPaWQgZXh0T3duZXIsCi0JCQkJCQkJCQkJICBPaWQgc2NoZW1hT2lkLCBi b29sIHJlbG9jYXRhYmxlLCBjb25zdCBjaGFyICpleHRWZXJzaW9uLAorCQkJCQkJCQkJCSAgT2lk IHNjaGVtYU9pZCwgYm9vbCByZWxvY2F0YWJsZSwKKwkJCQkJCQkJCQkgIGJvb2wgb3duZWRTY2hl bWEsCisJCQkJCQkJCQkJICBjb25zdCBjaGFyICpleHRWZXJzaW9uLAogCQkJCQkJCQkJCSAgRGF0 dW0gZXh0Q29uZmlnLCBEYXR1bSBleHRDb25kaXRpb24sCiAJCQkJCQkJCQkJICBMaXN0ICpyZXF1 aXJlZEV4dGVuc2lvbnMpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2Vm aWxlCmluZGV4IGEzNTkxYmYzZDJmLi5hNjU5NGMxOWQ3ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUKQEAgLTksNyArOSw4IEBAIEVYVEVOU0lPTiA9IHRlc3Rf ZXh0MSB0ZXN0X2V4dDIgdGVzdF9leHQzIHRlc3RfZXh0NCB0ZXN0X2V4dDUgdGVzdF9leHQ2IFwK ICAgICAgICAgICAgIHRlc3RfZXh0X2V4dHNjaGVtYSBcCiAgICAgICAgICAgICB0ZXN0X2V4dF9l dnR0cmlnIFwKICAgICAgICAgICAgIHRlc3RfZXh0X3NldF9zY2hlbWEgXAotICAgICAgICAgICAg dGVzdF9leHRfcmVxX3NjaGVtYTEgdGVzdF9leHRfcmVxX3NjaGVtYTIgdGVzdF9leHRfcmVxX3Nj aGVtYTMKKyAgICAgICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWExIHRlc3RfZXh0X3JlcV9zY2hl bWEyIHRlc3RfZXh0X3JlcV9zY2hlbWEzIFwKKyAgICAgICAgICAgIHRlc3RfZXh0X293bmVkX3Nj aGVtYSB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUKIAogREFUQSA9IHRlc3RfZXh0 MS0tMS4wLnNxbCB0ZXN0X2V4dDItLTEuMC5zcWwgdGVzdF9leHQzLS0xLjAuc3FsIFwKICAgICAg ICB0ZXN0X2V4dDQtLTEuMC5zcWwgdGVzdF9leHQ1LS0xLjAuc3FsIHRlc3RfZXh0Ni0tMS4wLnNx bCBcCkBAIC0yNSw3ICsyNiw5IEBAIERBVEEgPSB0ZXN0X2V4dDEtLTEuMC5zcWwgdGVzdF9leHQy LS0xLjAuc3FsIHRlc3RfZXh0My0tMS4wLnNxbCBcCiAgICAgICAgdGVzdF9leHRfc2V0X3NjaGVt YS0tMS4wLnNxbCBcCiAgICAgICAgdGVzdF9leHRfcmVxX3NjaGVtYTEtLTEuMC5zcWwgXAogICAg ICAgIHRlc3RfZXh0X3JlcV9zY2hlbWEyLS0xLjAuc3FsIFwKLSAgICAgICB0ZXN0X2V4dF9yZXFf c2NoZW1hMy0tMS4wLnNxbAorICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWEzLS0xLjAuc3FsIFwK KyAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwgXAorICAgICAgIHRlc3RfZXh0 X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbAogCiBSRUdSRVNTID0gdGVzdF9leHRl bnNpb25zIHRlc3RfZXh0ZGVwZW5kCiBUQVBfVEVTVFMgPSAxCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0IGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNpb25z Lm91dAppbmRleCA3MmJhZTFiZjI1NC4uYmY5ZmMyOTUyODAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZW5zaW9ucy5vdXQKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNp b25zLm91dApAQCAtOSw2ICs5LDcgQEAgQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dDEgU0NIRU1B IHRlc3RfZXh0OwogRVJST1I6ICBzY2hlbWEgInRlc3RfZXh0IiBkb2VzIG5vdCBleGlzdAogQ1JF QVRFIEVYVEVOU0lPTiB0ZXN0X2V4dDEgU0NIRU1BIGhhcyRkb2xsYXI7CiBFUlJPUjogIGV4dGVu c2lvbiAidGVzdF9leHQxIiBtdXN0IGJlIGluc3RhbGxlZCBpbiBzY2hlbWEgInRlc3RfZXh0MSIK K0hJTlQ6ICBEbyBub3Qgc3BlY2lmeSBTQ0hFTUEgd2hlbiBydW5uaW5nIENSRUFURSBFWFRFTlNJ T04gZm9yIGV4dGVuc2lvbiAidGVzdF9leHQxIgogLS0gZmluYWxseSBzdWNjZXNzCiBDUkVBVEUg RVhURU5TSU9OIHRlc3RfZXh0MSBTQ0hFTUEgaGFzJGRvbGxhciBDQVNDQURFOwogTk9USUNFOiAg aW5zdGFsbGluZyByZXF1aXJlZCBleHRlbnNpb24gInRlc3RfZXh0MiIKQEAgLTY2OCwzICs2Njks NTYgQEAgU0VMRUNUIHRlc3Rfc19kZXAuZGVwX3JlcTIoKTsKIAogRFJPUCBFWFRFTlNJT04gdGVz dF9leHRfcmVxX3NjaGVtYTEgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gZXh0 ZW5zaW9uIHRlc3RfZXh0X3JlcV9zY2hlbWEyCistLQorLS0gVGVzdCBvd25lZCBzY2hlbWEgZXh0 ZW5zaW9ucworLS0KK0NSRUFURSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hOworLS0gRmFp bHMgZm9yIGFuIGFscmVhZHkgZXhpc3Rpbmcgc2NoZW1hIHRvIGJlIHByb3ZpZGVkCitDUkVBVEUg RVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2No ZW1hOworRVJST1I6ICBzY2hlbWEgInRlc3RfZXh0X293bmVkX3NjaGVtYSIgYWxyZWFkeSBleGlz dHMgYnV0IHRoZSBleHRlbnNpb24gbmVlZHMgdG8gY3JlYXRlIGl0CitISU5UOiAgRHJvcCBzY2hl bWEgInRlc3RfZXh0X293bmVkX3NjaGVtYSIgb3Igc3BlY2lmeSBhbm90aGVyIHNjaGVtYSB1c2lu ZyBDUkVBVEUgRVhURU5TSU9OIC4uLiBTQ0hFTUEgLi4uCistLSBGYWlscyBiZWNhdXNlIGEgZGlm ZmVyZW50IHNjaGVtYSBpcyBzZXQgaW4gY29udHJvbCBmaWxlCitDUkVBVEUgRVhURU5TSU9OIHRl c3RfZXh0X293bmVkX3NjaGVtYSBTQ0hFTUEgdGVzdF9zY2hlbWE7CitFUlJPUjogIGV4dGVuc2lv biAidGVzdF9leHRfb3duZWRfc2NoZW1hIiBtdXN0IGJlIGluc3RhbGxlZCBpbiBzY2hlbWEgInRl c3RfZXh0X293bmVkX3NjaGVtYSIKK0hJTlQ6ICBEbyBub3Qgc3BlY2lmeSBTQ0hFTUEgd2hlbiBy dW5uaW5nIENSRUFURSBFWFRFTlNJT04gZm9yIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2No ZW1hIgorRFJPUCBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hOworQ1JFQVRFIEVYVEVOU0lP TiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK09i amVjdHMgaW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWEiCisgICAgICAgICAgIE9i amVjdCBkZXNjcmlwdGlvbiAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBmdW5jdGlvbiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEub3duZWQxKCkK KyBzY2hlbWEgdGVzdF9leHRfb3duZWRfc2NoZW1hCisoMiByb3dzKQorCitEUk9QIEVYVEVOU0lP TiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7 CistLSBGYWlscyBmb3IgYW4gYWxyZWFkeSBleGlzdGluZyBzY2hlbWEgdG8gYmUgcHJvdmlkZWQK K0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFNDSEVN QSBhbHJlYWR5X2V4aXN0aW5nOworRVJST1I6ICBzY2hlbWEgImFscmVhZHlfZXhpc3RpbmciIGFs cmVhZHkgZXhpc3RzIGJ1dCB0aGUgZXh0ZW5zaW9uIG5lZWRzIHRvIGNyZWF0ZSBpdAorSElOVDog IERyb3Agc2NoZW1hICJhbHJlYWR5X2V4aXN0aW5nIiBvciBzcGVjaWZ5IGFub3RoZXIgc2NoZW1h IHVzaW5nIENSRUFURSBFWFRFTlNJT04gLi4uIFNDSEVNQSAuLi4KKy0tIEZhaWxzIGJlY2F1c2Ug bm8gc2NoZW1hIGlzIHNldCBpbiBjb250cm9sIGZpbGUKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9l eHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlOworRVJST1I6ICBubyBzY2hlbWEgaGFzIGJlZW4g c2VsZWN0ZWQgdG8gY3JlYXRlIGluCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3Nj aGVtYV9yZWxvY2F0YWJsZSBTQ0hFTUEgdGVzdF9zY2hlbWE7CitcZHgrIHRlc3RfZXh0X293bmVk X3NjaGVtYV9yZWxvY2F0YWJsZQorT2JqZWN0cyBpbiBleHRlbnNpb24gInRlc3RfZXh0X293bmVk X3NjaGVtYV9yZWxvY2F0YWJsZSIKKyAgICAgIE9iamVjdCBkZXNjcmlwdGlvbiAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmdW5jdGlvbiB0ZXN0X3NjaGVtYS5vd25l ZDIoKQorIHNjaGVtYSB0ZXN0X3NjaGVtYQorKDIgcm93cykKKworLS0gRmFpbHMgYmVjYXVzZSBz Y2hlbWEgYWxyZWFkeSBleGlzdHMKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hl bWFfcmVsb2NhdGFibGUgU0VUIFNDSEVNQSBhbHJlYWR5X2V4aXN0aW5nOworRVJST1I6ICBzY2hl bWEgImFscmVhZHlfZXhpc3RpbmciIGFscmVhZHkgZXhpc3RzCitBTFRFUiBFWFRFTlNJT04gdGVz dF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFNFVCBTQ0hFTUEgc29tZV9vdGhlcl9uYW1l OworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUKK09iamVjdHMgaW4gZXh0 ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUiCisgICAgICAgIE9iamVj dCBkZXNjcmlwdGlvbiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBmdW5jdGlvbiBzb21lX290aGVyX25hbWUub3duZWQyKCkKKyBzY2hlbWEgc29tZV9vdGhl cl9uYW1lCisoMiByb3dzKQorCitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFf cmVsb2NhdGFibGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL21lc29uLmJ1 aWxkCmluZGV4IDNjN2UzNzhiZjM1Li5jNDkxM2ZiOWM4NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvbWVzb24uYnVpbGQKQEAgLTQ0LDYgKzQ0LDEwIEBAIHRlc3RfaW5z dGFsbF9kYXRhICs9IGZpbGVzKAogICAndGVzdF9leHRfcmVxX3NjaGVtYTMuY29udHJvbCcsCiAg ICd0ZXN0X2V4dF9zZXRfc2NoZW1hLS0xLjAuc3FsJywKICAgJ3Rlc3RfZXh0X3NldF9zY2hlbWEu Y29udHJvbCcsCisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwnLAorICAndGVzdF9l eHRfb3duZWRfc2NoZW1hLmNvbnRyb2wnLAorICAndGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9j YXRhYmxlLS0xLjAuc3FsJywKKyAgJ3Rlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS5j b250cm9sJywKICkKIAogdGVzdHMgKz0gewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRlbnNpb25zLnNxbAppbmRleCBiNTg3OGY2Zjgw Zi4uYTk3ODY2ZDAwZWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3NxbC90ZXN0X2V4dGVuc2lvbnMuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpb25zL3NxbC90ZXN0X2V4dGVuc2lvbnMuc3FsCkBAIC0zMDMsMyArMzAzLDMwIEBAIEFM VEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9yZXFfc2NoZW1hMSBTRVQgU0NIRU1BIHRlc3Rfc19kZXAy OyAgLS0gbm93IG9rCiBTRUxFQ1QgdGVzdF9zX2RlcDIuZGVwX3JlcTEoKTsKIFNFTEVDVCB0ZXN0 X3NfZGVwLmRlcF9yZXEyKCk7CiBEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9yZXFfc2NoZW1hMSBD QVNDQURFOworCistLQorLS0gVGVzdCBvd25lZCBzY2hlbWEgZXh0ZW5zaW9ucworLS0KKworQ1JF QVRFIFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CistLSBGYWlscyBmb3IgYW4gYWxyZWFk eSBleGlzdGluZyBzY2hlbWEgdG8gYmUgcHJvdmlkZWQKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9l eHRfb3duZWRfc2NoZW1hIFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CistLSBGYWlscyBi ZWNhdXNlIGEgZGlmZmVyZW50IHNjaGVtYSBpcyBzZXQgaW4gY29udHJvbCBmaWxlCitDUkVBVEUg RVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBTQ0hFTUEgdGVzdF9zY2hlbWE7CitEUk9Q IFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0 X293bmVkX3NjaGVtYTsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hOworRFJPUCBFWFRFTlNJ T04gdGVzdF9leHRfb3duZWRfc2NoZW1hOworCitDUkVBVEUgU0NIRU1BIGFscmVhZHlfZXhpc3Rp bmc7CistLSBGYWlscyBmb3IgYW4gYWxyZWFkeSBleGlzdGluZyBzY2hlbWEgdG8gYmUgcHJvdmlk ZWQKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFND SEVNQSBhbHJlYWR5X2V4aXN0aW5nOworLS0gRmFpbHMgYmVjYXVzZSBubyBzY2hlbWEgaXMgc2V0 IGluIGNvbnRyb2wgZmlsZQorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFf cmVsb2NhdGFibGU7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxv Y2F0YWJsZSBTQ0hFTUEgdGVzdF9zY2hlbWE7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9y ZWxvY2F0YWJsZQorLS0gRmFpbHMgYmVjYXVzZSBzY2hlbWEgYWxyZWFkeSBleGlzdHMKK0FMVEVS IEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUgU0VUIFNDSEVNQSBh bHJlYWR5X2V4aXN0aW5nOworQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9y ZWxvY2F0YWJsZSBTRVQgU0NIRU1BIHNvbWVfb3RoZXJfbmFtZTsKK1xkeCsgdGVzdF9leHRfb3du ZWRfc2NoZW1hX3JlbG9jYXRhYmxlCitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hl bWFfcmVsb2NhdGFibGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY3MmFiOGU2MDdmCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1h LS0xLjAuc3FsCkBAIC0wLDAgKzEsMiBAQAorQ1JFQVRFIEZVTkNUSU9OIG93bmVkMSgpIFJFVFVS TlMgdGV4dAorTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAxICQkOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hLmNvbnRy b2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hl bWEuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTMxYzM4 ZGFlZmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy90ZXN0X2V4dF9vd25lZF9zY2hlbWEuY29udHJvbApAQCAtMCwwICsxLDUgQEAKK2NvbW1lbnQg PSAnVGVzdCBleHRlbnNpb24gd2l0aCBhbiBvd25lZCBzY2hlbWEnCitkZWZhdWx0X3ZlcnNpb24g PSAnMS4wJworcmVsb2NhdGFibGUgPSBmYWxzZQorc2NoZW1hID0gdGVzdF9leHRfb3duZWRfc2No ZW1hCitvd25lZF9zY2hlbWEgPSB0cnVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFf cmVsb2NhdGFibGUtLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmJmY2NhZjRhZjgyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLS0xLjAuc3FsCkBA IC0wLDAgKzEsMiBAQAorQ1JFQVRFIEZVTkNUSU9OIG93bmVkMigpIFJFVFVSTlMgdGV4dAorTEFO R1VBR0UgU1FMIEFTICQkIFNFTEVDVCAxICQkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLmNvbnRy b2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hl bWFfcmVsb2NhdGFibGUuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uM2NkYTFlMTIzNDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbApA QCAtMCwwICsxLDQgQEAKK2NvbW1lbnQgPSAnVGVzdCBleHRlbnNpb24gd2l0aCBhbiBvd25lZCBz Y2hlbWEnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworcmVsb2NhdGFibGUgPSB0cnVlCitvd25l ZF9zY2hlbWEgPSB0cnVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGdfZHVt cC90LzAwMV9iYXNlLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BnX2R1bXAvdC8wMDFfYmFz ZS5wbAppbmRleCBhZGNhYTQxOTYxNi4uYmI3ZDQxNGRhMTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9wZ19kdW1wL3QvMDAxX2Jhc2UucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3BnX2R1bXAvdC8wMDFfYmFzZS5wbApAQCAtMzgxLDYgKzM4MSwzOCBAQCBteSAldGVz dHMgPSAoCiAJCX0sCiAJfSwKIAorCSdDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3Nj aGVtYScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gMSwKKwkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRF IEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJ CVxRQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHRlc3RfZXh0X293bmVkX3NjaGVtYSBX SVRIIFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7XEUKKwkJCVxuL3htLAorCQlsaWtlID0+ IHsKKwkJCSVmdWxsX3J1bnMsCisJCQlzY2hlbWFfb25seSA9PiAxLAorCQkJc2VjdGlvbl9wcmVf ZGF0YSA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJYmluYXJ5X3VwZ3JhZGUgPT4gMSwK KwkJCXdpdGhfZXh0ZW5zaW9uID0+IDEsCisJCQl3aXRob3V0X2V4dGVuc2lvbiA9PiAxCisJCX0K Kwl9LAorCisJJ0NSRUFURSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hJyA9PiB7CisJCXJl Z2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hO1xF CisJCQlcbi94bSwKKwkJbGlrZSA9PiB7fSwKKwl9LAorCisJJ0FMVEVSIEVYVEVOU0lPTiB0ZXN0 X2V4dF9vd25lZF9zY2hlbWEgQUREIFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWEnID0+IHsK KwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3Nj aGVtYSBBREQgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTtcRQorCQkJXG4veG0sCisJCWxp a2UgPT4ge30sCisJfSwKKwogCSdDUkVBVEUgUk9MRSByZWdyZXNzX2R1bXBfdGVzdF9yb2xlJyA9 PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiAxLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgUk9MRSBy ZWdyZXNzX2R1bXBfdGVzdF9yb2xlOycsCgpiYXNlLWNvbW1pdDogMzZhZWQxOWZkOTkwMjFhZDlm NzI3ZTRmZDRiY2ViMDg2YTdjZjU0ZAotLSAKMi41MS4wCgo= --37ca48bb8ca10c13056faea11446dafcb5c4448170abec17d9e5fba1b22f--