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 1vDg9p-00DPQc-IJ for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Oct 2025 09:38:25 +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 1vDg9o-00BwdS-6c for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Oct 2025 09:38:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vDg9n-00BwdJ-Pf for pgsql-hackers@lists.postgresql.org; Tue, 28 Oct 2025 09:38:22 +0000 Received: from mail-lj1-x232.google.com ([2a00:1450:4864:20::232]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vDg9j-004fry-0w for pgsql-hackers@postgresql.org; Tue, 28 Oct 2025 09:38:21 +0000 Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-378d50e1cccso60180741fa.0 for ; Tue, 28 Oct 2025 02:38:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1761644296; x=1762249096; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=MDqDG/Qb5p0JCBa0vNUX61Llxdi6JDll8aXRlkk61B4=; b=CIdKWFbzTe9fHkr2Ts5/Rn81xYNpKl2VTGP34uRpilamogyO/WAetlbR8K9fT17aW7 6E4O81nNJZEjq6GfgTDARculJFJdlX6CG/6O0aBNITY43n2RTIk0ZmqR8aZG39IgVDpj GviVqAIEha3lyi8i58jXKSYSD5U7nImupIQZKbAzaB1PJ4iI6N85GmqMcpoC5ax2gKjf 6+T6jacP828fF5bR9mIeq7Vjpur1IyM97j1rprlNvzwfxULR6s8fGnRjUd/yH9T+LZoc LGDV5COeRZSly1c6omMIL6a+AgYnBoQ21Rbjj3B8XhIWYmgH4YHZgNlHdpAfKr87inG/ nJnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761644296; x=1762249096; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=MDqDG/Qb5p0JCBa0vNUX61Llxdi6JDll8aXRlkk61B4=; b=a5mOGhbs3iyq4XFKybD886qrflDJM1x9oI23tk003r/lFbrl88rrr/HRHCUd2o6ZBv G+gsV1fTcRlyf9YbsMYmTvKKkYy/ot0SnYwbjmRpKcc9deXcKNPV9h3rsSqdUBpAC+uh SfThs8olapcfjKt+TmB3uC+mcJZQO3OKMlqRfVbszbLnX4/XozMTrsE+gXg+O+y7OXKT MO60mu2RPn+ImAc0eVjVDyIAcOmMhyxT0RWNzaHhMS2y0+GxQI6avIhqccRqE1jO7O3w cGO3rL5LkryIjdwr/GW462zTCwvrmUsqSgfDwlUjeP4oxewp/U9WQ/GQ/S6gQujE/wbl L52g== X-Forwarded-Encrypted: i=1; AJvYcCUYHqpRYV7kcboL+dVQPhenkIKuXerEe6gTDwIhW2QVnSuaRxFDPKA9KMI55cJslJIIs3KyRZk/YuwyTIbG@postgresql.org X-Gm-Message-State: AOJu0YxVXXQ/7L1BMeWgY1khmSaE/w66LQWwdlqMj86WVuLb8fu3wp25 SjCsWo7xCSjoxETqpexGiRVi8sUWyJ+KnBwBNFh6mdAreFsP3aYQWWS7hXfN6A33v+YBCzr19w7 eECNiVZRTjiaRxClMwhNLWgYtqI4LqO8T/n32A2MjzZXDrwwGRS0QoA== X-Gm-Gg: ASbGncvdoAi6tlDZl9qEJBhO+u4wBMtUOQtQ79AUuL8UsTGAC9/mLiKOy3LHY9alwJT bI9S+L7rP1XdJy50ExuhQZ37zzfBHKNGFdx1DUmfgYXkDqUZF7Y/2FNqBBa+3VR9atMhKirVZkG OCJe+dR30/ndWZnoSgID2PYaZQS2Zx3fniPQgYQdRte5RRpJRtymi2cKs8wouceFg2+DK53DR5h FDG5wm2qEo6P+CmduZAQgZH7KG0FE9JG41WWef6hEP6sWxxWWSoEVWgYst6A1/MjNOkkuJg X-Google-Smtp-Source: AGHT+IFFoFGXOYAMpetd/guhGSF3Sf2usf73HiLHMigVgtUbQG/Bqaphj+eBXFrVTlMEjO3kIUNaVK4ItNdw5YeTE04= X-Received: by 2002:a05:651c:434d:10b0:378:ddf0:aa26 with SMTP id 38308e7fff4ca-3790774ba4dmr7416371fa.25.1761644296129; Tue, 28 Oct 2025 02:38:16 -0700 (PDT) MIME-Version: 1.0 References: <202510151529.s3fpwsgben57@alvherre.pgsql> In-Reply-To: From: Akshay Joshi Date: Tue, 28 Oct 2025 15:08:03 +0530 X-Gm-Features: AWmQ_bluTa_gSWngQw-WDvoubit7AiQO4H0a3TIcB7o4u3W8SBEUZYIiU3VYSIw Message-ID: Subject: Re: [PATCH] Add pg_get_policy_ddl() function to reconstruct CREATE POLICY statement To: Mark Wong Cc: =?UTF-8?Q?=C3=81lvaro_Herrera?= , pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000007e0425064234c682" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007e0425064234c682 Content-Type: multipart/alternative; boundary="0000000000007e0425064234c680" --0000000000007e0425064234c680 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks, Mark, for your review comments and the updated patch. I=E2=80=99ve incorporated your changes and prepared a combined v5 patch. Th= e v5 patch is attached for further review. On Mon, Oct 27, 2025 at 10:15=E2=80=AFPM Mark Wong wrot= e: > Hi everyone, > > On Thu, Oct 16, 2025 at 01:47:53PM +0530, Akshay Joshi wrote: > > > > > > On Wed, Oct 15, 2025 at 10:55=E2=80=AFPM =C3=81lvaro Herrera > wrote: > > > > Hello, > > > > I have reviewed this patch before and provided a number of comments > that > > have been addressed by Akshay (so I encourage you to list my name a= nd > > this address in a Reviewed-by trailer line in the commit message). > One > > thing I had not noticed is that while this function has a "pretty" > flag, > > it doesn't use it to pass anything to pg_get_expr_worker()'s > prettyFlags > > argument, and I think it should -- probably just > > > > prettyFlags =3D GET_PRETTY_FLAGS(pretty); > > > > same as pg_get_querydef() does. > > Kinda sorta similar thought, I've noticed some existing functions like > pg_get_constraintdef make the "pretty" flag optional, so I'm wondering > if that scheme is also preferred here. > > I've attached a small diff to the original > 0001-Add-pg_get_policy_ddl-function-to-reconstruct-CREATE.patch to > illustrate the additional work to follow suit, if so desired. > > Regards, > Mark > -- > Mark Wong > EDB https://enterprisedb.com > --0000000000007e0425064234c680 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Thanks, Mark, for your review comments and the updated = patch.

I=E2=80=99ve incorporated your changes and prepared a combined v5 patch.= The v5 patch is attached for further review.


--0000000000007e0425064234c680-- --0000000000007e0425064234c682 Content-Type: application/octet-stream; name="v5-0001-Add-pg_get_policy_ddl-function-to-reconstruct-CREATE.patch" Content-Disposition: attachment; filename="v5-0001-Add-pg_get_policy_ddl-function-to-reconstruct-CREATE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhadin0f0 RnJvbSAwZGFhMGY2OGFjMDNjNjNmZTJhNWE5YWMwOTA5YzMyNGQ1OTM3ZjVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBa3NoYXkgSm9zaGkgPGFrc2hheS5qb3NoaUBlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBGcmksIDEwIE9jdCAyMDI1IDE1OjQ2OjEzICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2NV0gQWRkIHBnX2dldF9wb2xpY3lfZGRsKCkgZnVuY3Rpb24gdG8gcmVjb25zdHJ1Y3Qg Q1JFQVRFCiBQT0xJQ1kgc3RhdGVtZW50cwpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJp dAoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHN5c3RlbSBmdW5jdGlvbjoKcGdfZ2V0X3Bv bGljeV9kZGwocmVnY2xhc3MgdGFibGUsIG5hbWUgcG9saWN5X25hbWUsIGJvb2wgcHJldHR5KSwK d2hpY2ggcmVjb25zdHJ1Y3RzIHRoZSBDUkVBVEUgUE9MSUNZIHN0YXRlbWVudCBmb3IgdGhlIHNw ZWNpZmllZCBwb2xpY3kuCgpVc2FnZSBleGFtcGxlczoKU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRs KCdybHNfdGFibGUnLCAncG9sMScpOyAtLSBub24tcHJldHR5IGZvcm1hdHRlZCBEREwKU0VMRUNU IHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGFibGUnLCAncG9sMScsIHRydWUpOyAgLS0gcHJldHR5 IGZvcm1hdHRlZCBEREwKClJlZmVyZW5jZTogUEctMTYzCkF1dGhvcjogQWtzaGF5IEpvc2hpIDxh a3NoYXkuam9zaGlAZW50ZXJwcmlzZWRiLmNvbT4KUmV2aWV3ZWQtYnk6IMOBbHZhcm8gSGVycmVy YSA8YWx2aGVycmVAa3VyaWxlbXUuZGU+Ci0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZv LnNnbWwgICAgICAgICAgfCAgNTUgKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3ku YyAgICAgICAgICAgICB8ICAyNyArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YyAgICAgICAgIHwgMjI4ICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgICAgICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Bv bGljeS5oICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93 c2VjdXJpdHkub3V0IHwgMjEwICsrKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9yb3dzZWN1cml0eS5zcWwgICAgICB8ICA4MCArKysrKysrKwogNyBmaWxlcyBjaGFuZ2Vk LCA2MDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNn bWwKaW5kZXggYzM5MzgzMmQ5NGMuLjIyMTBhNDlhNDc4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvZnVuYy9mdW5jLWluZm8uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8u c2dtbApAQCAtMzc5Nyw0ICszNzk3LDU5IEBAIGFjbCAgICAgIHwge3Bvc3RncmVzPWFyd2REeHRt L3Bvc3RncmVzLGZvbz1yL3Bvc3RncmVzfQogCiAgIDwvc2VjdDI+CiAKKyAgPHNlY3QyIGlkPSJm dW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwiPgorICAgPHRpdGxlPkdldCBPYmplY3QgRERMIEZ1bmN0 aW9uczwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFRoZSBmdW5jdGlvbnMgZGVzY3JpYmVkIGlu IDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1nZXQtb2JqZWN0LWRkbC10YWJsZSIvPgorICAgIHJl dHVybiB0aGUgRGF0YSBEZWZpbml0aW9uIExhbmd1YWdlIChEREwpIHN0YXRlbWVudCBmb3IgYW55 IGdpdmVuIGRhdGFiYXNlIG9iamVjdC4KKyAgICBUaGlzIGZlYXR1cmUgaXMgaW1wbGVtZW50ZWQg YXMgYSBzZXQgb2YgZGlzdGluY3QgZnVuY3Rpb25zIGZvciBlYWNoIG9iamVjdCB0eXBlLgorICAg PC9wYXJhPgorCisgICA8dGFibGUgaWQ9ImZ1bmN0aW9ucy1nZXQtb2JqZWN0LWRkbC10YWJsZSI+ CisgICAgPHRpdGxlPkdldCBPYmplY3QgRERMIEZ1bmN0aW9uczwvdGl0bGU+CisgICAgPHRncm91 cCBjb2xzPSIxIj4KKyAgICAgPHRoZWFkPgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9s ZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAg ICBGdW5jdGlvbgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRGVzY3Jp cHRpb24KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICA8L3RoZWFk PgorCisgICAgIDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNf dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4 dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnBnX2dldF9wb2xpY3lfZGRsPC9wcmltYXJ5PgorICAg ICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX2dldF9wb2xpY3lfZGRsPC9m dW5jdGlvbj4KKyAgICAgICAgKCA8cGFyYW1ldGVyPnRhYmxlPC9wYXJhbWV0ZXI+IDx0eXBlPnJl Z2NsYXNzPC90eXBlPiwgPHBhcmFtZXRlcj5wb2xpY3lfbmFtZTwvcGFyYW1ldGVyPiA8dHlwZT5u YW1lPC90eXBlPiwgPG9wdGlvbmFsPiA8cGFyYW1ldGVyPnByZXR0eTwvcGFyYW1ldGVyPiA8dHlw ZT5ib29sZWFuPC90eXBlPiA8L29wdGlvbmFsPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT50ZXh0 PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFJl Y29uc3RydWN0cyB0aGUgPGNvbW1hbmQ+Q1JFQVRFIFBPTElDWTwvY29tbWFuZD4gc3RhdGVtZW50 IGZyb20gdGhlCisgICAgICAgIHN5c3RlbSBjYXRhbG9ncyBmb3IgYSBzcGVjaWZpZWQgdGFibGUg YW5kIHBvbGljeSBuYW1lLiBUaGUgcmVzdWx0IGlzIGEKKyAgICAgICAgY29tcHJlaGVuc2l2ZSA8 Y29tbWFuZD5DUkVBVEUgUE9MSUNZPC9jb21tYW5kPiBzdGF0ZW1lbnQuCisgICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKyAg IDwvdGFibGU+CisKKyAgPHBhcmE+CisgICBNb3N0IG9mIHRoZSBmdW5jdGlvbnMgdGhhdCByZWNv bnN0cnVjdCAoZGVjb21waWxlKSBkYXRhYmFzZSBvYmplY3RzIGhhdmUgYW4KKyAgIG9wdGlvbmFs IDxwYXJhbWV0ZXI+cHJldHR5PC9wYXJhbWV0ZXI+IGZsYWcsIHdoaWNoIGlmCisgICA8bGl0ZXJh bD50cnVlPC9saXRlcmFsPiBjYXVzZXMgdGhlIHJlc3VsdCB0byBiZQorICAgPHF1b3RlPnByZXR0 eS1wcmludGVkPC9xdW90ZT4uIFByZXR0eS1wcmludGluZyBhZGRzIHRhYiBjaGFyYWN0ZXIgYW5k IG5ldworICAgbGluZSBjaGFyYWN0ZXIgZm9yIGxlZ2liaWxpdHkuIFBhc3NpbmcgPGxpdGVyYWw+ ZmFsc2U8L2xpdGVyYWw+IGZvciB0aGUKKyAgIDxwYXJhbWV0ZXI+cHJldHR5PC9wYXJhbWV0ZXI+ IHBhcmFtZXRlciB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0IGFzIG9taXR0aW5nCisgICB0aGUgcGFy YW1ldGVyLgorICA8L3BhcmE+CisKKyAgPC9zZWN0Mj4KKwogICA8L3NlY3QxPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9saWN5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w b2xpY3kuYwppbmRleCA4MzA1Njk2MGZlNC4uMWFiZTBjNDQzNTMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3BvbGljeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGlj eS5jCkBAIC0xMjgsNiArMTI4LDMzIEBAIHBhcnNlX3BvbGljeV9jb21tYW5kKGNvbnN0IGNoYXIg KmNtZF9uYW1lKQogCXJldHVybiBwb2xjbWQ7CiB9CiAKKy8qCisgKiBnZXRfcG9saWN5X2NtZF9u YW1lIC0KKyAqCSBoZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBjaGFyIHJlcHJlc2VudGF0aW9u IHRvIGZ1bGwgY29tbWFuZCBzdHJpbmdzLgorICoKKyAqIGNtZCAtICBWYWxpZCB2YWx1ZXMgYXJl ICcqJywgJ3InLCAnYScsICd3JyBhbmQgJ2QnLgorICoKKyAqLworY2hhciAqCitnZXRfcG9saWN5 X2NtZF9uYW1lKGNoYXIgY21kKQoreworCXN3aXRjaCAoY21kKQorCXsKKwkJY2FzZSAnKic6CisJ CQlyZXR1cm4gIkFMTCI7CisJCWNhc2UgQUNMX1NFTEVDVF9DSFI6CisJCQlyZXR1cm4gIlNFTEVD VCI7CisJCWNhc2UgQUNMX0lOU0VSVF9DSFI6CisJCQlyZXR1cm4gIklOU0VSVCI7CisJCWNhc2Ug QUNMX1VQREFURV9DSFI6CisJCQlyZXR1cm4gIlVQREFURSI7CisJCWNhc2UgQUNMX0RFTEVURV9D SFI6CisJCQlyZXR1cm4gIkRFTEVURSI7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIHBvbGljeSBjb21tYW5kIik7CisJfQorfQorCiAvKgogICogcG9saWN5X3JvbGVf bGlzdF90b19hcnJheQogICoJIGhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgbGlzdCBvZiBS b2xlU3BlY3MgdG8gYW4gYXJyYXkgb2YKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA3 OWVjMTM2MjMxYi4uYjc3M2M3NzI1YTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAg LTMzLDEyICszMywxNCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BhcnRpdGlv bmVkX3RhYmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wb2xpY3kuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdnZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy90 YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvcG9saWN5LmgiCiAjaW5jbHVkZSAiY29t bW9uL2tleXdvcmRzLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCiAjaW5jbHVkZSAiZnVu Y2FwaS5oIgpAQCAtNTQ2LDYgKzU0OCwxMSBAQCBzdGF0aWMgdm9pZCBnZXRfanNvbl90YWJsZV9u ZXN0ZWRfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBKc29uVGFibGVQbGFuICpwbGFuLAogCQkJCQkJ CQkJCSAgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgYm9vbCBzaG93aW1w bGljaXQsCiAJCQkJCQkJCQkJICBib29sIG5lZWRjb21tYSk7CitzdGF0aWMgdm9pZCBnZXRfZm9y bWF0dGVkX3N0cmluZyhTdHJpbmdJbmZvIGJ1ZiwKKwkJCQkJCQkJIGJvb2wgcHJldHR5LAorCQkJ CQkJCQkgaW50IG5vT2ZUYWJDaGFycywKKwkJCQkJCQkJIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBn X2F0dHJpYnV0ZV9wcmludGYoNCwgNSk7CitzdGF0aWMgY2hhciAqcGdfZ2V0X3BvbGljeV9kZGxf d29ya2VyKE9pZCB0YWJsZUlELCBOYW1lIHBvbGljeU5hbWUsIGJvb2wgcHJldHR5KTsKIAogI2Rl ZmluZSBvbmx5X21hcmtlcihydGUpICAoKHJ0ZSktPmluaCA/ICIiIDogIk9OTFkgIikKIApAQCAt MTM3MzgsMyArMTM3NDUsMjI0IEBAIGdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJv dW5kX2RhdHVtcykKIAogCXJldHVybiBidWYtPmRhdGE7CiB9CisKKy8qCisgKiBnZXRfZm9ybWF0 dGVkX3N0cmluZworICoKKyAqIFJldHVybiBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIHRoZSBzdHJp bmcuCisgKgorICogcHJldHR5IC0gSWYgcHJldHR5IGlzIHRydWUsIHRoZSBvdXRwdXQgaW5jbHVk ZXMgdGFicyAoXHQpIGFuZCBuZXdsaW5lcyAoXG4pLgorICogbm9PZlRhYkNoYXJzIC0gaW5kZW50 IHdpdGggc3BlY2lmaWVkIG5vIG9mIHRhYnMuCisgKiBmbXQgLSBwcmludGYtc3R5bGUgZm9ybWF0 IHN0cmluZyB1c2VkIGJ5IGFwcGVuZFN0cmluZ0luZm9WQS4KKyAqLworc3RhdGljIHZvaWQKK2dl dF9mb3JtYXR0ZWRfc3RyaW5nKFN0cmluZ0luZm8gYnVmLCBib29sIHByZXR0eSwgaW50IG5vT2ZU YWJDaGFycywgY29uc3QgY2hhciAqZm10LC4uLikKK3sKKwl2YV9saXN0CQlhcmdzOworCisJaWYg KHByZXR0eSkKKwl7CisJCS8qIEluZGVudCB3aXRoIHRhYnMgKi8KKwkJZm9yIChpbnQgaSA9IDA7 IGkgPCBub09mVGFiQ2hhcnM7IGkrKykKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVm LCAnXHQnKTsKKwkJfQorCX0KKwllbHNlCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAn KTsKKworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisJYXBwZW5kU3RyaW5nSW5mb1ZBKGJ1ZiwgZm10 LCBhcmdzKTsKKwl2YV9lbmQoYXJncyk7CisKKwkvKiBJZiBwcmV0dHkgbW9kZSwgYXBwZW5kIG5l d2xpbmUgYXQgdGhlIGVuZCAqLworCWlmIChwcmV0dHkpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFy KGJ1ZiwgJ1xuJyk7Cit9CisKKy8qCisgKiBwZ19nZXRfcG9saWN5X2RkbAorICoKKyAqIEdlbmVy YXRlIGEgQ1JFQVRFIFBPTElDWSBzdGF0ZW1lbnQgZm9yIHRoZSBzcGVjaWZpZWQgcG9saWN5Lgor ICoKKyAqIHRhYmxlSUQgLSBUYWJsZSBJRCBvZiB0aGUgcG9saWN5LgorICogcG9saWN5TmFtZSAt IE5hbWUgb2YgdGhlIHBvbGljeSBmb3Igd2hpY2ggdG8gZ2VuZXJhdGUgdGhlIERETC4KKyAqIHBy ZXR0eSAtIElmIHRydWUsIGZvcm1hdCB0aGUgRERMIHdpdGggaW5kZW50YXRpb24gYW5kIGxpbmUg YnJlYWtzLgorICovCitEYXR1bQorcGdfZ2V0X3BvbGljeV9kZGwoUEdfRlVOQ1RJT05fQVJHUykK K3sKKwlPaWQJCQl0YWJsZUlEID0gUEdfR0VUQVJHX09JRCgwKTsKKwlOYW1lCQlwb2xpY3lOYW1l ID0gUEdfR0VUQVJHX05BTUUoMSk7CisJY2hhcgkgICAqcmVzOworCisJcmVzID0gcGdfZ2V0X3Bv bGljeV9kZGxfd29ya2VyKHRhYmxlSUQsIHBvbGljeU5hbWUsIGZhbHNlKTsKKworCWlmIChyZXMg PT0gTlVMTCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCVBHX1JFVFVSTl9URVhUX1Aoc3RyaW5n X3RvX3RleHQocmVzKSk7Cit9CisKK0RhdHVtCitwZ19nZXRfcG9saWN5X2RkbF9leHQoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlPaWQJCQl0YWJsZUlEID0gUEdfR0VUQVJHX09JRCgwKTsKKwlOYW1l CQlwb2xpY3lOYW1lID0gUEdfR0VUQVJHX05BTUUoMSk7CisJYm9vbAkJcHJldHR5ID0gUEdfR0VU QVJHX0JPT0woMik7CisJY2hhcgkgICAqcmVzOworCisJcmVzID0gcGdfZ2V0X3BvbGljeV9kZGxf d29ya2VyKHRhYmxlSUQsIHBvbGljeU5hbWUsIHByZXR0eSk7CisKKwlpZiAocmVzID09IE5VTEwp CisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19SRVRVUk5fVEVYVF9QKHN0cmluZ190b190ZXh0 KHJlcykpOworfQorCitzdGF0aWMgY2hhciAqCitwZ19nZXRfcG9saWN5X2RkbF93b3JrZXIoT2lk IHRhYmxlSUQsIE5hbWUgcG9saWN5TmFtZSwgYm9vbCBwcmV0dHkpCit7CisJYm9vbAkJYXR0cklz TnVsbDsKKwlpbnQJCQlwcmV0dHlGbGFnczsKKwlEYXR1bQkJdmFsdWVEYXR1bTsKKwlIZWFwVHVw bGUJdHVwbGVQb2xpY3k7CisJUmVsYXRpb24JcGdQb2xpY3lSZWw7CisJY2hhcgkgICAqdGFyZ2V0 VGFibGU7CisJU2NhbktleURhdGEgc2tleVsyXTsKKwlTeXNTY2FuRGVzYyBzc2NhbjsKKwlGb3Jt X3BnX3BvbGljeSBwb2xpY3lGb3JtOworCVN0cmluZ0luZm9EYXRhIGJ1ZjsKKworCS8qIFZhbGlk YXRlIHRoYXQgdGhlIHJlbGF0aW9uIGV4aXN0cyAqLworCWlmICghT2lkSXNWYWxpZCh0YWJsZUlE KSB8fCBnZXRfcmVsX25hbWUodGFibGVJRCkgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwlp bml0U3RyaW5nSW5mbygmYnVmKTsKKworCXRhcmdldFRhYmxlID0gZ2VuZXJhdGVfcXVhbGlmaWVk X3JlbGF0aW9uX25hbWUodGFibGVJRCk7CisJLyogRmluZCBwb2xpY3kgdG8gYmVnaW4gc2NhbiAq LworCXBnUG9saWN5UmVsID0gdGFibGVfb3BlbihQb2xpY3lSZWxhdGlvbklkLCBBY2Nlc3NTaGFy ZUxvY2spOworCisJLyogU2V0IGtleSAtIHBvbGljeSdzIHJlbGF0aW9uIGlkLiAqLworCVNjYW5L ZXlJbml0KCZza2V5WzBdLAorCQkJCUFudW1fcGdfcG9saWN5X3BvbHJlbGlkLAorCQkJCUJURXF1 YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHRhYmxlSUQp KTsKKworCS8qIFNldCBrZXkgLSBwb2xpY3kncyBuYW1lLiAqLworCVNjYW5LZXlJbml0KCZza2V5 WzFdLAorCQkJCUFudW1fcGdfcG9saWN5X3BvbG5hbWUsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVt YmVyLCBGX05BTUVFUSwKKwkJCQlDU3RyaW5nR2V0RGF0dW0oTmFtZVN0cigqcG9saWN5TmFtZSkp KTsKKworCXNzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnUG9saWN5UmVsLAorCQkJCQkJCSAg IFBvbGljeVBvbHJlbGlkUG9sbmFtZUluZGV4SWQsIHRydWUsIE5VTEwsIDIsCisJCQkJCQkJICAg c2tleSk7CisKKwl0dXBsZVBvbGljeSA9IHN5c3RhYmxlX2dldG5leHQoc3NjYW4pOworCS8qIENo ZWNrIHRoYXQgdGhlIHBvbGljeSBpcyBmb3VuZCwgcmFpc2UgYW4gZXJyb3IgaWYgbm90LiAqLwor CWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZVBvbGljeSkpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNnKCJwb2xp Y3kgXCIlc1wiIGZvciB0YWJsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJTmFtZVN0 cigqcG9saWN5TmFtZSksCisJCQkJCQl0YXJnZXRUYWJsZSkpKTsKKworCXBvbGljeUZvcm0gPSAo Rm9ybV9wZ19wb2xpY3kpIEdFVFNUUlVDVCh0dXBsZVBvbGljeSk7CisKKwkvKiBCdWlsZCB0aGUg Q1JFQVRFIFBPTElDWSBzdGF0ZW1lbnQgKi8KKwlnZXRfZm9ybWF0dGVkX3N0cmluZygmYnVmLCBw cmV0dHksIDAsICJDUkVBVEUgUE9MSUNZICVzIE9OICVzIiwKKwkJCQkJCSBxdW90ZV9pZGVudGlm aWVyKE5hbWVTdHIoKnBvbGljeU5hbWUpKSwKKwkJCQkJCSB0YXJnZXRUYWJsZSk7CisKKwkvKiBD aGVjayB0aGUgdHlwZSBpcyBQRVJNSVNTSVZFIG9yIFJFU1RSSUNUSVZFICovCisJZ2V0X2Zvcm1h dHRlZF9zdHJpbmcoJmJ1ZiwgcHJldHR5LCAxLAorCQkJCQkJIHBvbGljeUZvcm0tPnBvbHBlcm1p c3NpdmUgPyAiQVMgUEVSTUlTU0lWRSIgOiAiQVMgUkVTVFJJQ1RJVkUiKTsKKworCS8qIENoZWNr IGNvbW1hbmQgdG8gd2hpY2ggdGhlIHBvbGljeSBhcHBsaWVzICovCisJZ2V0X2Zvcm1hdHRlZF9z dHJpbmcoJmJ1ZiwgcHJldHR5LCAxLCAiRk9SICVzIiwKKwkJCQkJCSBnZXRfcG9saWN5X2NtZF9u YW1lKHBvbGljeUZvcm0tPnBvbGNtZCkpOworCisJLyogQ2hlY2sgaWYgdGhlIHBvbGljeSBoYXMg YSBUTyBsaXN0ICovCisJdmFsdWVEYXR1bSA9IGhlYXBfZ2V0YXR0cih0dXBsZVBvbGljeSwKKwkJ CQkJCQkgIEFudW1fcGdfcG9saWN5X3BvbHJvbGVzLAorCQkJCQkJCSAgUmVsYXRpb25HZXREZXNj cihwZ1BvbGljeVJlbCksCisJCQkJCQkJICAmYXR0cklzTnVsbCk7CisJaWYgKCFhdHRySXNOdWxs KQorCXsKKwkJQXJyYXlUeXBlICAqcG9saWN5X3JvbGVzID0gRGF0dW1HZXRBcnJheVR5cGVQQ29w eSh2YWx1ZURhdHVtKTsKKwkJaW50CQkJbml0ZW1zID0gQVJSX0RJTVMocG9saWN5X3JvbGVzKVsw XTsKKwkJT2lkCQkgICAqcm9sZXMgPSAoT2lkICopIEFSUl9EQVRBX1BUUihwb2xpY3lfcm9sZXMp OworCQlTdHJpbmdJbmZvRGF0YSByb2xlX25hbWVzOworCisJCWluaXRTdHJpbmdJbmZvKCZyb2xl X25hbWVzKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IG5pdGVtczsgaSsrKQorCQl7CisJCQlp ZiAoT2lkSXNWYWxpZChyb2xlc1tpXSkpCisJCQl7CisJCQkJY2hhcgkgICAqcm9sZW5hbWUgPSBH ZXRVc2VyTmFtZUZyb21JZChyb2xlc1tpXSwgZmFsc2UpOworCisJCQkJaWYgKGkgPiAwKQorCQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZyb2xlX25hbWVzLCAiLCAiKTsKKwkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZyb2xlX25hbWVzLCByb2xlbmFtZSk7CisJCQl9CisJCX0KKworCQlp ZiAocm9sZV9uYW1lcy5sZW4gPiAwKQorCQkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoJmJ1ZiwgcHJl dHR5LCAxLCAiVE8gJXMiLCByb2xlX25hbWVzLmRhdGEpOworCQllbHNlCisKKwkJCS8qCisJCQkg KiBXaGVuIG5vIHNwZWNpZmljIHJvbGUgaXMgcHJvdmlkZWQsIGdlbmVyYXRlIHRoZSBUTyBjbGF1 c2Ugd2l0aAorCQkJICogdGhlIFBVQkxJQyByb2xlLgorCQkJICovCisJCQlnZXRfZm9ybWF0dGVk X3N0cmluZygmYnVmLCBwcmV0dHksIDEsICJUTyBQVUJMSUMiKTsKKwl9CisKKwlwcmV0dHlGbGFn cyA9IEdFVF9QUkVUVFlfRkxBR1MocHJldHR5KTsKKwkvKiBDaGVjayBpZiB0aGUgcG9saWN5IGhh cyBhIFVTSU5HIGV4cHIgKi8KKwl2YWx1ZURhdHVtID0gaGVhcF9nZXRhdHRyKHR1cGxlUG9saWN5 LAorCQkJCQkJCSAgQW51bV9wZ19wb2xpY3lfcG9scXVhbCwKKwkJCQkJCQkgIFJlbGF0aW9uR2V0 RGVzY3IocGdQb2xpY3lSZWwpLAorCQkJCQkJCSAgJmF0dHJJc051bGwpOworCWlmICghYXR0cklz TnVsbCkKKwl7CisJCXRleHQJICAgKmV4cHJ0ZXh0ID0gRGF0dW1HZXRUZXh0UFAodmFsdWVEYXR1 bSk7CisJCXRleHQJICAgKnVzaW5nRXhwcmVzc2lvbiA9IHBnX2dldF9leHByX3dvcmtlcihleHBy dGV4dCwKKwkJCQkJCQkJCQkJCQkJIHBvbGljeUZvcm0tPnBvbHJlbGlkLAorCQkJCQkJCQkJCQkJ CQkgcHJldHR5RmxhZ3MpOworCisJCWdldF9mb3JtYXR0ZWRfc3RyaW5nKCZidWYsIHByZXR0eSwg MSwgIlVTSU5HICglcykiLAorCQkJCQkJCSB0ZXh0X3RvX2NzdHJpbmcodXNpbmdFeHByZXNzaW9u KSk7CisJfQorCisJLyogQ2hlY2sgaWYgdGhlIHBvbGljeSBoYXMgYSBXSVRIIENIRUNLIGV4cHIg Ki8KKwl2YWx1ZURhdHVtID0gaGVhcF9nZXRhdHRyKHR1cGxlUG9saWN5LAorCQkJCQkJCSAgQW51 bV9wZ19wb2xpY3lfcG9sd2l0aGNoZWNrLAorCQkJCQkJCSAgUmVsYXRpb25HZXREZXNjcihwZ1Bv bGljeVJlbCksCisJCQkJCQkJICAmYXR0cklzTnVsbCk7CisJaWYgKCFhdHRySXNOdWxsKQorCXsK KwkJdGV4dAkgICAqZXhwcnRleHQgPSBEYXR1bUdldFRleHRQUCh2YWx1ZURhdHVtKTsKKwkJdGV4 dAkgICAqY2hlY2tFeHByZXNzaW9uID0gcGdfZ2V0X2V4cHJfd29ya2VyKGV4cHJ0ZXh0LAorCQkJ CQkJCQkJCQkJCQkgcG9saWN5Rm9ybS0+cG9scmVsaWQsCisJCQkJCQkJCQkJCQkJCSBwcmV0dHlG bGFncyk7CisKKwkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoJmJ1ZiwgcHJldHR5LCAxLCAiV0lUSCBD SEVDSyAoJXMpIiwKKwkJCQkJCQkgdGV4dF90b19jc3RyaW5nKGNoZWNrRXhwcmVzc2lvbikpOwor CX0KKworCS8qIFJlcGxhY2UgJ1xuJyB3aXRoICc7JyBpZiBuZXdsaW5lIGF0IHRoZSBlbmQgKi8K KwlpZiAoYnVmLmxlbiA+IDAgJiYgYnVmLmRhdGFbYnVmLmxlbiAtIDFdID09ICdcbicpCisJCWJ1 Zi5kYXRhW2J1Zi5sZW4gLSAxXSA9ICc7JzsKKwllbHNlCisJCWFwcGVuZFN0cmluZ0luZm9DaGFy KCZidWYsICc7Jyk7CisKKwkvKiBDbGVhbiB1cC4gKi8KKwlzeXN0YWJsZV9lbmRzY2FuKHNzY2Fu KTsKKwl0YWJsZV9jbG9zZShwZ1BvbGljeVJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVy biBidWYuZGF0YTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDkxMjFhMzgyZjc2Li42 OTY4M2ZiMzdmNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC00MDIxLDYgKzQwMjEsMTIg QEAKICAgcHJvbmFtZSA9PiAncGdfZ2V0X2Z1bmN0aW9uX3NxbGJvZHknLCBwcm92b2xhdGlsZSA9 PiAncycsCiAgIHByb3JldHR5cGUgPT4gJ3RleHQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAg cHJvc3JjID0+ICdwZ19nZXRfZnVuY3Rpb25fc3FsYm9keScgfSwKK3sgb2lkID0+ICc4ODExJywg ZGVzY3IgPT4gJ2dldCBDUkVBVEUgc3RhdGVtZW50IGZvciBwb2xpY3knLAorICBwcm9uYW1lID0+ ICdwZ19nZXRfcG9saWN5X2RkbCcsIHByb3JldHR5cGUgPT4gJ3RleHQnLAorICBwcm9hcmd0eXBl cyA9PiAncmVnY2xhc3MgbmFtZScsIHByb3NyYyA9PiAncGdfZ2V0X3BvbGljeV9kZGwnIH0sCit7 IG9pZCA9PiAnODgxMicsIGRlc2NyID0+ICdnZXQgQ1JFQVRFIHN0YXRlbWVudCBmb3IgcG9saWN5 IHdpdGggcHJldHR5IG9wdGlvbicsCisgIHByb25hbWUgPT4gJ3BnX2dldF9wb2xpY3lfZGRsJywg cHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcyBuYW1lIGJv b2wnLCBwcm9zcmMgPT4gJ3BnX2dldF9wb2xpY3lfZGRsX2V4dCcgfSwKIAogeyBvaWQgPT4gJzE2 ODYnLCBkZXNjciA9PiAnbGlzdCBvZiBTUUwga2V5d29yZHMnLAogICBwcm9uYW1lID0+ICdwZ19n ZXRfa2V5d29yZHMnLCBwcm9jb3N0ID0+ICcxMCcsIHByb3Jvd3MgPT4gJzUwMCcsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wb2xpY3kuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3BvbGljeS5oCmluZGV4IGYwNmFhMWRmNDM5Li40MGU0NWI3MzhmNCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvcG9saWN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcG9s aWN5LmgKQEAgLTM1LDQgKzM1LDYgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgcmVuYW1lX3BvbGlj eShSZW5hbWVTdG10ICpzdG10KTsKIAogZXh0ZXJuIGJvb2wgcmVsYXRpb25faGFzX3BvbGljaWVz KFJlbGF0aW9uIHJlbCk7CiAKK2V4dGVybiBjaGFyICpnZXRfcG9saWN5X2NtZF9uYW1lKGNoYXIg Y21kKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBPTElDWV9IICovCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcm93c2VjdXJpdHkub3V0CmluZGV4IGM5NThlZjRkNzBhLi5hYmMzZTg0YzVkZSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKQEAgLTUxMDEsMTEgKzUx MDEsMjE3IEBAIHJlc2V0IHJsc190ZXN0LmJsYWg7CiBkcm9wIGZ1bmN0aW9uIHJsc19mKHRleHQp OwogZHJvcCB0YWJsZSBybHNfdCwgdGVzdF90OwogLS0KKy0tIFRlc3QgZm9yIHBnX2dldF9wb2xp Y3lfZGRsKHRhYmxlTmFtZSwgcG9saWN5TmFtZSwgcHJldHR5KSBmdW5jdGlvbi4KKy0tCitDUkVB VEUgVEFCTEUgcmxzX3RibF8xICgKKyAgICBkaWQgICAgICAgICBpbnQgcHJpbWFyeSBrZXksCisg ICAgY2lkICAgICAgICAgaW50LAorICAgIGRsZXZlbCAgICAgIGludCBub3QgbnVsbCwKKyAgICBk YXV0aG9yICAgICBuYW1lLAorICAgIGR0aXRsZSAgICAgIHRleHQKKyk7CitHUkFOVCBBTEwgT04g cmxzX3RibF8xIFRPIHB1YmxpYzsKK0NSRUFURSBUQUJMRSBybHNfdGJsXzIgKAorICAgIHBndXNl ciAgICAgIG5hbWUgcHJpbWFyeSBrZXksCisgICAgc2VjbHYgICAgICAgaW50CispOworR1JBTlQg U0VMRUNUIE9OIHJsc190YmxfMiBUTyBwdWJsaWM7CistLSBUZXN0IFBFUk1JU1NJVkUgYW5kIFJF U1RSSUNUSVZFCitDUkVBVEUgUE9MSUNZIHJsc19wMSBPTiBybHNfdGJsXzEgQVMgUEVSTUlTU0lW RQorICAgIFVTSU5HIChkbGV2ZWwgPD0gKFNFTEVDVCBzZWNsdiBGUk9NIHJsc190YmxfMiBXSEVS RSBwZ3VzZXIgPSBjdXJyZW50X3VzZXIpKTsKK0NSRUFURSBQT0xJQ1kgcmxzX3AyIE9OIHJsc190 YmxfMSBBUyBSRVNUUklDVElWRSBVU0lORyAoY2lkIDw+IDQ0IEFORCBjaWQgPCA1MCk7CistLSBU ZXN0IEZPUiBBTEwgfCBTRUxFQ1QgfCBJTlNFUlQgfCBVUERBVEUgfCBERUxFVEUKK0NSRUFURSBQ T0xJQ1kgcmxzX3AzIE9OIHJsc190YmxfMSBGT1IgQUxMIFVTSU5HIChkYXV0aG9yID0gY3VycmVu dF91c2VyKTsKK0NSRUFURSBQT0xJQ1kgcmxzX3A0IE9OIHJsc190YmxfMSBGT1IgU0VMRUNUIFVT SU5HIChjaWQgJSAyID0gMCk7CitDUkVBVEUgUE9MSUNZIHJsc19wNSBPTiBybHNfdGJsXzEgRk9S IElOU0VSVCBXSVRIIENIRUNLIChjaWQgJSAyID0gMSk7CitDUkVBVEUgUE9MSUNZIHJsc19wNiBP TiBybHNfdGJsXzEgRk9SIFVQREFURSBVU0lORyAoY2lkICUgMiA9IDApOworQ1JFQVRFIFBPTElD WSBybHNfcDcgT04gcmxzX3RibF8xIEZPUiBERUxFVEUgVVNJTkcgKGNpZCA8IDgpOworLS0gVGVz dCBUTyB7IHJvbGVfbmFtZSAuLi4gfQorQ1JFQVRFIFBPTElDWSBybHNfcDggT04gcmxzX3RibF8x IFRPIHJlZ3Jlc3NfcmxzX2RhdmUsIHJlZ3Jlc3NfcmxzX2FsaWNlIFVTSU5HICh0cnVlKTsKK0NS RUFURSBQT0xJQ1kgcmxzX3A5IE9OIHJsc190YmxfMSBUTyByZWdyZXNzX3Jsc19leGVtcHRfdXNl ciBXSVRIIENIRUNLIChjaWQgPSAoU0VMRUNUIHNlY2x2IEZST00gcmxzX3RibF8yKSk7CistLSBU ZXN0IE5VTEwgdmFsdWUKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbChOVUxMLCAncmxzX3AxJywg ZmFsc2UpOworIHBnX2dldF9wb2xpY3lfZGRsIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3RhYjEnLCBOVUxMLCBmYWxzZSk7CitF UlJPUjogIHJlbGF0aW9uICJ0YWIxIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgcGdf Z2V0X3BvbGljeV9kZGwoJ3RhYjEnLCBOVUxMLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoTlVMTCwgTlVMTCwgZmFs c2UpOworIHBnX2dldF9wb2xpY3lfZGRsIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCistLSBUZXN0IC0xIGFzIHRhYmxlIG9pZAorIFNFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgt MSwgJ3Jsc19wMScsIGZhbHNlKTsKKyBwZ19nZXRfcG9saWN5X2RkbCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworLS0gVGFibGUgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCBwZ19n ZXRfcG9saWN5X2RkbCgndGFiMScsICdybHNfcDEnLCBmYWxzZSk7CitFUlJPUjogIHJlbGF0aW9u ICJ0YWIxIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwo J3RhYjEnLCAncmxzX3AxJywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gUG9saWN5IGRvZXMgbm90IGV4aXN0CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwo J3Jsc190YmxfMScsICdwb2wxJywgZmFsc2UpOworRVJST1I6ICBwb2xpY3kgInBvbDEiIGZvciB0 YWJsZSAicmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMSIgZG9lcyBub3QgZXhpc3QKKy0tIFdp dGhvdXQgUHJldHR5IGZvcm1hdHRlZAorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJs XzEnLCAncmxzX3AxJywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICBDUkVBVEUgUE9MSUNZIHJsc19wMSBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8x IEFTIFBFUk1JU1NJVkUgRk9SIEFMTCBUTyBQVUJMSUMgVVNJTkcgKChkbGV2ZWwgPD0gKCBTRUxF Q1QgcmxzX3RibF8yLnNlY2x2KworICAgIEZST00gcmxzX3RibF8yICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0hFUkUgKHJsc190Ymxf Mi5wZ3VzZXIgPSBDVVJSRU5UX1VTRVIpKSkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3Bv bGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDInLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICBDUkVBVEUgUE9MSUNZIHJsc19wMiBPTiByZWdyZXNzX3Jsc19zY2hlbWEu cmxzX3RibF8xIEFTIFJFU1RSSUNUSVZFIEZPUiBBTEwgVE8gUFVCTElDIFVTSU5HICgoKGNpZCA8 PiA0NCkgQU5EIChjaWQgPCA1MCkpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lf ZGRsKCdybHNfdGJsXzEnLCAncmxzX3AzJywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wb2xpY3lfZGRsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBD UkVBVEUgUE9MSUNZIHJsc19wMyBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8xIEFTIFBF Uk1JU1NJVkUgRk9SIEFMTCBUTyBQVUJMSUMgVVNJTkcgKChkYXV0aG9yID0gQ1VSUkVOVF9VU0VS KSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Js c19wNCcsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgQ1JFQVRFIFBPTElDWSBybHNfcDQgT04gcmVncmVzc19y bHNfc2NoZW1hLnJsc190YmxfMSBBUyBQRVJNSVNTSVZFIEZPUiBTRUxFQ1QgVE8gUFVCTElDIFVT SU5HICgoKGNpZCAlIDIpID0gMCkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9k ZGwoJ3Jsc190YmxfMScsICdybHNfcDUnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBDUkVB VEUgUE9MSUNZIHJsc19wNSBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8xIEFTIFBFUk1J U1NJVkUgRk9SIElOU0VSVCBUTyBQVUJMSUMgV0lUSCBDSEVDSyAoKChjaWQgJSAyKSA9IDEpKTsK KygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A2 JywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9wb2xpY3lfZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICBDUkVBVEUgUE9MSUNZIHJsc19wNiBPTiByZWdyZXNzX3Jsc19z Y2hlbWEucmxzX3RibF8xIEFTIFBFUk1JU1NJVkUgRk9SIFVQREFURSBUTyBQVUJMSUMgVVNJTkcg KCgoY2lkICUgMikgPSAwKSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgn cmxzX3RibF8xJywgJ3Jsc19wNycsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgQ1JFQVRFIFBPTElDWSBybHNfcDcgT04gcmVncmVz c19ybHNfc2NoZW1hLnJsc190YmxfMSBBUyBQRVJNSVNTSVZFIEZPUiBERUxFVEUgVE8gUFVCTElD IFVTSU5HICgoY2lkIDwgOCkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwo J3Jsc190YmxfMScsICdybHNfcDgnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wb2xpY3lfZGRsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgIENSRUFURSBQT0xJQ1kgcmxzX3A4IE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5y bHNfdGJsXzEgQVMgUEVSTUlTU0lWRSBGT1IgQUxMIFRPIHJlZ3Jlc3NfcmxzX2RhdmUsIHJlZ3Jl c3NfcmxzX2FsaWNlIFVTSU5HICh0cnVlKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xp Y3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A5JywgZmFsc2UpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9s aWN5X2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBD UkVBVEUgUE9MSUNZIHJsc19wOSBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8xIEFTIFBF Uk1JU1NJVkUgRk9SIEFMTCBUTyByZWdyZXNzX3Jsc19leGVtcHRfdXNlciBXSVRIIENIRUNLICgo Y2lkID0gKCBTRUxFQ1QgcmxzX3RibF8yLnNlY2x2KworICAgIEZST00gcmxzX3RibF8yKSkpOwor KDEgcm93KQorCistLSBXaXRoIFByZXR0eSBmb3JtYXR0ZWQKK1xwc2V0IGZvcm1hdCB1bmFsaWdu ZWQKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wMScsIHRydWUp OworcGdfZ2V0X3BvbGljeV9kZGwKK0NSRUFURSBQT0xJQ1kgcmxzX3AxIE9OIHJlZ3Jlc3Nfcmxz X3NjaGVtYS5ybHNfdGJsXzEKKwlBUyBQRVJNSVNTSVZFCisJRk9SIEFMTAorCVRPIFBVQkxJQwor CVVTSU5HIChkbGV2ZWwgPD0gKCggU0VMRUNUIHJsc190YmxfMi5zZWNsdgorICAgRlJPTSBybHNf dGJsXzIKKyAgV0hFUkUgcmxzX3RibF8yLnBndXNlciA9IENVUlJFTlRfVVNFUikpKTsKKygxIHJv dykKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wMicsIHRydWUp OworcGdfZ2V0X3BvbGljeV9kZGwKK0NSRUFURSBQT0xJQ1kgcmxzX3AyIE9OIHJlZ3Jlc3Nfcmxz X3NjaGVtYS5ybHNfdGJsXzEKKwlBUyBSRVNUUklDVElWRQorCUZPUiBBTEwKKwlUTyBQVUJMSUMK KwlVU0lORyAoY2lkIDw+IDQ0IEFORCBjaWQgPCA1MCk7CisoMSByb3cpCitTRUxFQ1QgcGdfZ2V0 X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDMnLCB0cnVlKTsKK3BnX2dldF9wb2xpY3lf ZGRsCitDUkVBVEUgUE9MSUNZIHJsc19wMyBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8x CisJQVMgUEVSTUlTU0lWRQorCUZPUiBBTEwKKwlUTyBQVUJMSUMKKwlVU0lORyAoZGF1dGhvciA9 IENVUlJFTlRfVVNFUik7CisoMSByb3cpCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190 YmxfMScsICdybHNfcDQnLCB0cnVlKTsKK3BnX2dldF9wb2xpY3lfZGRsCitDUkVBVEUgUE9MSUNZ IHJsc19wNCBPTiByZWdyZXNzX3Jsc19zY2hlbWEucmxzX3RibF8xCisJQVMgUEVSTUlTU0lWRQor CUZPUiBTRUxFQ1QKKwlUTyBQVUJMSUMKKwlVU0lORyAoKGNpZCAlIDIpID0gMCk7CisoMSByb3cp CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDUnLCB0cnVlKTsK K3BnX2dldF9wb2xpY3lfZGRsCitDUkVBVEUgUE9MSUNZIHJsc19wNSBPTiByZWdyZXNzX3Jsc19z Y2hlbWEucmxzX3RibF8xCisJQVMgUEVSTUlTU0lWRQorCUZPUiBJTlNFUlQKKwlUTyBQVUJMSUMK KwlXSVRIIENIRUNLICgoY2lkICUgMikgPSAxKTsKKygxIHJvdykKK1NFTEVDVCBwZ19nZXRfcG9s aWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNicsIHRydWUpOworcGdfZ2V0X3BvbGljeV9kZGwK K0NSRUFURSBQT0xJQ1kgcmxzX3A2IE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNfdGJsXzEKKwlB UyBQRVJNSVNTSVZFCisJRk9SIFVQREFURQorCVRPIFBVQkxJQworCVVTSU5HICgoY2lkICUgMikg PSAwKTsKKygxIHJvdykKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Js c19wNycsIHRydWUpOworcGdfZ2V0X3BvbGljeV9kZGwKK0NSRUFURSBQT0xJQ1kgcmxzX3A3IE9O IHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNfdGJsXzEKKwlBUyBQRVJNSVNTSVZFCisJRk9SIERFTEVU RQorCVRPIFBVQkxJQworCVVTSU5HIChjaWQgPCA4KTsKKygxIHJvdykKK1NFTEVDVCBwZ19nZXRf cG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wOCcsIHRydWUpOworcGdfZ2V0X3BvbGljeV9k ZGwKK0NSRUFURSBQT0xJQ1kgcmxzX3A4IE9OIHJlZ3Jlc3NfcmxzX3NjaGVtYS5ybHNfdGJsXzEK KwlBUyBQRVJNSVNTSVZFCisJRk9SIEFMTAorCVRPIHJlZ3Jlc3NfcmxzX2RhdmUsIHJlZ3Jlc3Nf cmxzX2FsaWNlCisJVVNJTkcgKHRydWUpOworKDEgcm93KQorU0VMRUNUIHBnX2dldF9wb2xpY3lf ZGRsKCdybHNfdGJsXzEnLCAncmxzX3A5JywgdHJ1ZSk7CitwZ19nZXRfcG9saWN5X2RkbAorQ1JF QVRFIFBPTElDWSBybHNfcDkgT04gcmVncmVzc19ybHNfc2NoZW1hLnJsc190YmxfMQorCUFTIFBF Uk1JU1NJVkUKKwlGT1IgQUxMCisJVE8gcmVncmVzc19ybHNfZXhlbXB0X3VzZXIKKwlXSVRIIENI RUNLIChjaWQgPSAoKCBTRUxFQ1QgcmxzX3RibF8yLnNlY2x2CisgICBGUk9NIHJsc190YmxfMikp KTsKKygxIHJvdykKKy0tIENsZWFuIHVwIG9iamVjdHMgY3JlYXRlZCBmb3IgdGVzdGluZyBwZ19n ZXRfcG9saWN5X2RkbCBmdW5jdGlvbi4KK0RST1AgUE9MSUNZIHJsc19wMSBPTiBybHNfdGJsXzE7 CitEUk9QIFBPTElDWSBybHNfcDIgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxzX3AzIE9O IHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wNCBPTiBybHNfdGJsXzE7CitEUk9QIFBPTElD WSBybHNfcDUgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxzX3A2IE9OIHJsc190YmxfMTsK K0RST1AgUE9MSUNZIHJsc19wNyBPTiBybHNfdGJsXzE7CitEUk9QIFBPTElDWSBybHNfcDggT04g cmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxzX3A5IE9OIHJsc190YmxfMTsKKy0tCiAtLSBDbGVh biB1cCBvYmplY3RzCiAtLQogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwogRFJPUCBTQ0hF TUEgcmVncmVzc19ybHNfc2NoZW1hIENBU0NBREU7Ci1OT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRv IDMwIG90aGVyIG9iamVjdHMKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMzIgb3RoZXIgb2Jq ZWN0cwogREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBmX2xlYWsodGV4dCkKIGRy b3AgY2FzY2FkZXMgdG8gdGFibGUgdWFjY291bnQKIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgY2F0 ZWdvcnkKQEAgLTUxMzYsNiArNTM0Miw4IEBAIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgZGVwMQog ZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBkZXAyCiBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGRvYl90 MQogZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBkb2JfdDIKK2Ryb3AgY2FzY2FkZXMgdG8gdGFibGUg cmxzX3RibF8xCitkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIHJsc190YmxfMgogRFJPUCBVU0VSIHJl Z3Jlc3NfcmxzX2FsaWNlOwogRFJPUCBVU0VSIHJlZ3Jlc3NfcmxzX2JvYjsKIERST1AgVVNFUiBy ZWdyZXNzX3Jsc19jYXJvbDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3Nl Y3VyaXR5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbAppbmRleCA1 ZDkyM2M1Y2EzYi4uMjJmZjgxM2VhMjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Jvd3NlY3VyaXR5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yb3dzZWN1cml0eS5z cWwKQEAgLTI1NDIsNiArMjU0Miw4NiBAQCByZXNldCBybHNfdGVzdC5ibGFoOwogZHJvcCBmdW5j dGlvbiBybHNfZih0ZXh0KTsKIGRyb3AgdGFibGUgcmxzX3QsIHRlc3RfdDsKIAorLS0KKy0tIFRl c3QgZm9yIHBnX2dldF9wb2xpY3lfZGRsKHRhYmxlTmFtZSwgcG9saWN5TmFtZSwgcHJldHR5KSBm dW5jdGlvbi4KKy0tCitDUkVBVEUgVEFCTEUgcmxzX3RibF8xICgKKyAgICBkaWQgICAgICAgICBp bnQgcHJpbWFyeSBrZXksCisgICAgY2lkICAgICAgICAgaW50LAorICAgIGRsZXZlbCAgICAgIGlu dCBub3QgbnVsbCwKKyAgICBkYXV0aG9yICAgICBuYW1lLAorICAgIGR0aXRsZSAgICAgIHRleHQK Kyk7CitHUkFOVCBBTEwgT04gcmxzX3RibF8xIFRPIHB1YmxpYzsKK0NSRUFURSBUQUJMRSBybHNf dGJsXzIgKAorICAgIHBndXNlciAgICAgIG5hbWUgcHJpbWFyeSBrZXksCisgICAgc2VjbHYgICAg ICAgaW50CispOworR1JBTlQgU0VMRUNUIE9OIHJsc190YmxfMiBUTyBwdWJsaWM7CisKKy0tIFRl c3QgUEVSTUlTU0lWRSBhbmQgUkVTVFJJQ1RJVkUKK0NSRUFURSBQT0xJQ1kgcmxzX3AxIE9OIHJs c190YmxfMSBBUyBQRVJNSVNTSVZFCisgICAgVVNJTkcgKGRsZXZlbCA8PSAoU0VMRUNUIHNlY2x2 IEZST00gcmxzX3RibF8yIFdIRVJFIHBndXNlciA9IGN1cnJlbnRfdXNlcikpOworQ1JFQVRFIFBP TElDWSBybHNfcDIgT04gcmxzX3RibF8xIEFTIFJFU1RSSUNUSVZFIFVTSU5HIChjaWQgPD4gNDQg QU5EIGNpZCA8IDUwKTsKKworLS0gVGVzdCBGT1IgQUxMIHwgU0VMRUNUIHwgSU5TRVJUIHwgVVBE QVRFIHwgREVMRVRFCitDUkVBVEUgUE9MSUNZIHJsc19wMyBPTiBybHNfdGJsXzEgRk9SIEFMTCBV U0lORyAoZGF1dGhvciA9IGN1cnJlbnRfdXNlcik7CitDUkVBVEUgUE9MSUNZIHJsc19wNCBPTiBy bHNfdGJsXzEgRk9SIFNFTEVDVCBVU0lORyAoY2lkICUgMiA9IDApOworQ1JFQVRFIFBPTElDWSBy bHNfcDUgT04gcmxzX3RibF8xIEZPUiBJTlNFUlQgV0lUSCBDSEVDSyAoY2lkICUgMiA9IDEpOwor Q1JFQVRFIFBPTElDWSBybHNfcDYgT04gcmxzX3RibF8xIEZPUiBVUERBVEUgVVNJTkcgKGNpZCAl IDIgPSAwKTsKK0NSRUFURSBQT0xJQ1kgcmxzX3A3IE9OIHJsc190YmxfMSBGT1IgREVMRVRFIFVT SU5HIChjaWQgPCA4KTsKKworLS0gVGVzdCBUTyB7IHJvbGVfbmFtZSAuLi4gfQorQ1JFQVRFIFBP TElDWSBybHNfcDggT04gcmxzX3RibF8xIFRPIHJlZ3Jlc3NfcmxzX2RhdmUsIHJlZ3Jlc3Nfcmxz X2FsaWNlIFVTSU5HICh0cnVlKTsKK0NSRUFURSBQT0xJQ1kgcmxzX3A5IE9OIHJsc190YmxfMSBU TyByZWdyZXNzX3Jsc19leGVtcHRfdXNlciBXSVRIIENIRUNLIChjaWQgPSAoU0VMRUNUIHNlY2x2 IEZST00gcmxzX3RibF8yKSk7CisKKy0tIFRlc3QgTlVMTCB2YWx1ZQorU0VMRUNUIHBnX2dldF9w b2xpY3lfZGRsKE5VTEwsICdybHNfcDEnLCBmYWxzZSk7CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9k ZGwoJ3RhYjEnLCBOVUxMLCBmYWxzZSk7CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoTlVMTCwg TlVMTCwgZmFsc2UpOworCistLSBUZXN0IC0xIGFzIHRhYmxlIG9pZAorIFNFTEVDVCBwZ19nZXRf cG9saWN5X2RkbCgtMSwgJ3Jsc19wMScsIGZhbHNlKTsKKworLS0gVGFibGUgZG9lcyBub3QgZXhp c3QKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgndGFiMScsICdybHNfcDEnLCBmYWxzZSk7Cist LSBQb2xpY3kgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3Ri bF8xJywgJ3BvbDEnLCBmYWxzZSk7CisKKy0tIFdpdGhvdXQgUHJldHR5IGZvcm1hdHRlZAorU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AxJywgZmFsc2UpOworU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AyJywgZmFsc2UpOworU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AzJywgZmFsc2UpOworU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A0JywgZmFsc2UpOworU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A1JywgZmFsc2UpOworU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A2JywgZmFsc2UpOworU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A3JywgZmFsc2UpOworU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A4JywgZmFsc2UpOworU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A5JywgZmFsc2UpOworCist LSBXaXRoIFByZXR0eSBmb3JtYXR0ZWQKK1xwc2V0IGZvcm1hdCB1bmFsaWduZWQKK1NFTEVDVCBw Z19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wMScsIHRydWUpOworU0VMRUNUIHBn X2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AyJywgdHJ1ZSk7CitTRUxFQ1QgcGdf Z2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDMnLCB0cnVlKTsKK1NFTEVDVCBwZ19n ZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNCcsIHRydWUpOworU0VMRUNUIHBnX2dl dF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A1JywgdHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0 X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDYnLCB0cnVlKTsKK1NFTEVDVCBwZ19nZXRf cG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNycsIHRydWUpOworU0VMRUNUIHBnX2dldF9w b2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A4JywgdHJ1ZSk7CitTRUxFQ1QgcGdfZ2V0X3Bv bGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDknLCB0cnVlKTsKKworLS0gQ2xlYW4gdXAgb2Jq ZWN0cyBjcmVhdGVkIGZvciB0ZXN0aW5nIHBnX2dldF9wb2xpY3lfZGRsIGZ1bmN0aW9uLgorRFJP UCBQT0xJQ1kgcmxzX3AxIE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wMiBPTiBybHNf dGJsXzE7CitEUk9QIFBPTElDWSBybHNfcDMgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxz X3A0IE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wNSBPTiBybHNfdGJsXzE7CitEUk9Q IFBPTElDWSBybHNfcDYgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxzX3A3IE9OIHJsc190 YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wOCBPTiBybHNfdGJsXzE7CitEUk9QIFBPTElDWSBybHNf cDkgT04gcmxzX3RibF8xOworCiAtLQogLS0gQ2xlYW4gdXAgb2JqZWN0cwogLS0KLS0gCjIuNTEu MAoK --0000000000007e0425064234c682--