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 1v9NRl-00H448-4w for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Oct 2025 12:51:08 +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 1v9NRk-00Cltt-4X for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Oct 2025 12:51:07 +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 1v9NRj-00Cltl-Ni for pgsql-hackers@lists.postgresql.org; Thu, 16 Oct 2025 12:51:06 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v9NRg-002WcO-1f for pgsql-hackers@postgresql.org; Thu, 16 Oct 2025 12:51:06 +0000 Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-59093864727so906336e87.3 for ; Thu, 16 Oct 2025 05:51:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1760619063; x=1761223863; 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=0YcxA5KURVtsX8QdV2WEk2Gy6MK3N/wM42sJE5sO2Os=; b=iQBtiIc6UiUVn6sLf5TI4UI/PHfwPzQ+6rgpMgpDrYIZtBz1inAKB4SnrJ80643Tiv bp/Ro5q6emqgoY99lXRC41l9XBNuo++WaWPCmV1l7G4iPYiixz41asuhNkIBc8i6vCBy GgfwnsnysUtTW9bA9QS3Rq+ysxdNAgcDe4AliYJzwuAMV7y4bJjwIWkLbRCPCJPgrJ5F kttOS70GiJeMH/zfC23y/n76yc0/aUnqNSMOffhKI20n+aBofLlGcQuhzI6IDTfUdwWV J1MP2mRjQeVXNu+xaN1vaYTzKxYIvGrLdw/XM0/QJzw/7Q8G5KGVJ0K81rYN2XrZx1NV loxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760619063; x=1761223863; 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=0YcxA5KURVtsX8QdV2WEk2Gy6MK3N/wM42sJE5sO2Os=; b=b6B2866S1aZ6QLcpQnC+LdGqkC3eS9mGS0cfIhqZqD+uZfsrx/3Dz02f8eEySSk5FD CRkGMLMmVWEHA+5QfAjUFzqFHpWh3tvwjKIkrJP+Ka6jasAf3G0yVWEd2h9X+bXd07DH Dt8xjdd+1c+tkO52lALkXEbyDkq1k5rF1QMKNU1p/5GrLwlppj5f/edjZMUIqk/01Ido 3J0vtLXgfP8ERx4mB0DEgtBGrCMOEudzqmmblqnlcPIfyuHmmJZNdZ6+ofaEBef+RjOA k44hP01S1J52GHgp6GCGuGGbNM2DD5tJN6Z9doqvyNtQuxZmm/dRxWdrFqyC7q9/QpC8 8sqQ== X-Gm-Message-State: AOJu0YxIK+XRAtnfjqzYt1EY+mouOrOUcSzJBdjjMwgoeSwIHp7Q3Sm/ y14CI7bAvezxtEY9P1kDGQcqa2/Xe2Y7jQju62ERXRUQ5UWLMLnZm2zvq4yeOf4BWXk4oZP20I9 k7g3BSrB0YSGzJqLAa6+HCQCjMj5Kx/iiosTxVzLt X-Gm-Gg: ASbGncurWO8At4Xyqnl9uQRJMWbEfcISFr1dzht8owxVprTPcG2UPYfiHOLNlixRCv0 BW+zsSukh15Ak3PTAo+PMMJhkbft/Sm3kHh474kpwXxB8XifvKRRUejZmXUFTc7eQgeT7bfaAKP /lLCz4E0nr8cbWVTrzUbEOwzrXiQJpP+MadQGAp/0n6CUdIvSEvwkdXWXfpQbV+b+p2yiY6q6DB eKtQt+8S0MQAdUSSkZTU0av0YDvDLoit1Oobk+PjUjeWEnnSjEuo841VTPXMqM= X-Google-Smtp-Source: AGHT+IGys8ltRP082O+xCxuN2gAgviaLYzqBGGEB/XVURBK1QTAibwa1Ru10csmjQ71hSI52oqUqnqH4nkiiZkIwOuo= X-Received: by 2002:a05:6512:3408:b0:572:1f0b:5ef3 with SMTP id 2adb3069b0e04-5906d896ed7mr8357690e87.11.1760619062832; Thu, 16 Oct 2025 05:51:02 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Akshay Joshi Date: Thu, 16 Oct 2025 18:20:50 +0530 X-Gm-Features: AS18NWDlvRtj7ztQwru-H2dP2MkH95nzmj2f5E2a4xBgfGQLyJAU3wnTLH0RC2Q Message-ID: Subject: Re: [PATCH] Add pg_get_policy_ddl() function to reconstruct CREATE POLICY statement To: Philip Alger Cc: pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000d375b90641461106" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d375b90641461106 Content-Type: multipart/alternative; boundary="000000000000d375b70641461104" --000000000000d375b70641461104 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Please find attached the v3 patch, which resolves all compilation errors and warnings. On Thu, Oct 16, 2025 at 6:06=E2=80=AFPM Philip Alger w= rote: > Hi Akshay, > > >>>> As for the statement terminator, it=E2=80=99s useful to include it, wh= ile >>> running multiple queries together could result in a syntax error. In my >>> opinion, there=E2=80=99s no harm in providing the statement terminator. >>> >> However, I=E2=80=99ve modified the logic to add the statement terminator= at the >> end instead of appending to a new line. >> >>> >>> > Regarding putting the terminator at the end, I think my original comment > got cut off by my poor editing. Yes, that's what I was referring to; no > need to append it to a new line. > > -- > Best, Phil Alger > --000000000000d375b70641461104 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Please find attached the v3 patch, which resolves all comp= ilation errors and warnings.

On Thu, Oct 16, 2025 at 6= :06=E2=80=AFPM Philip Alger <paalg= er0@gmail.com> wrote:
Hi Akshay,

As for the statement terminator, it=E2=80=99s usefu= l to include it, while running multiple queries together could result in a = syntax error. In my opinion, there=E2=80=99s no harm in providing the state= ment terminator.
However, I=E2=80=99ve modifie= d the logic to add the statement terminator at the end instead of appending= to a new line.=C2=A0


Regarding putting the terminator at the end, I think my o= riginal comment got cut off by my poor editing. Yes, that's what I was = referring to; no need to append it to a new line.=C2=A0

--
Best, Phil Alger
--000000000000d375b70641461104-- --000000000000d375b90641461106 Content-Type: application/octet-stream; name="v3-0001-Add-pg_get_policy_ddl-function-to-reconstruct-CREATE.patch" Content-Disposition: attachment; filename="v3-0001-Add-pg_get_policy_ddl-function-to-reconstruct-CREATE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgtf433f0 RnJvbSBkYWIwZmVlNThlMjg4N2UwZDIzNTIzOGU4ZDNiMDYwOTEwNWViYjBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBa3NoYXkgSm9zaGkgPGFrc2hheS5qb3NoaUBlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBGcmksIDEwIE9jdCAyMDI1IDE1OjQ2OjEzICswNTMwClN1YmplY3Q6IFtQ QVRDSCB2M10gQWRkIHBnX2dldF9wb2xpY3lfZGRsKCkgZnVuY3Rpb24gdG8gcmVjb25zdHJ1Y3Qg Q1JFQVRFCiBQT0xJQ1kgc3RhdGVtZW50cwpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJp dAoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHN5c3RlbSBmdW5jdGlvbjoKcGdfZ2V0X3Bv bGljeV9kZGwocmVnY2xhc3MgdGFibGUsIG5hbWUgcG9saWN5X25hbWUsIGJvb2wgcHJldHR5KSwK d2hpY2ggcmVjb25zdHJ1Y3RzIHRoZSBDUkVBVEUgUE9MSUNZIHN0YXRlbWVudCBmb3IgdGhlIHNw ZWNpZmllZCBwb2xpY3kuCgpVc2FnZSBleGFtcGxlczoKU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRs KCdybHNfdGFibGUnLCAncG9sMScsIGZhbHNlKTsgLS0gbm9uLXByZXR0eSBmb3JtYXR0ZWQgRERM ClNFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RhYmxlJywgJ3BvbDEnLCB0cnVlKTsgIC0t IHByZXR0eSBmb3JtYXR0ZWQgRERMCgpSZWZlcmVuY2U6IFBHLTE2MwpBdXRob3I6IEFrc2hheSBK b3NoaSA8YWtzaGF5Lmpvc2hpQGVudGVycHJpc2VkYi5jb20+ClJldmlld2VkLWJ5OiDDgWx2YXJv IEhlcnJlcmEgPGFsdmhlcnJlQGt1cmlsZW11LmRlPgpSZXZpZXdlZC1ieTogUGhpbGlwIEFsZ2Vy IDxwYWFsZ2VyMEBnbWFpbC5jb20+Ci0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNn bWwgICAgICAgICAgfCAgNDUgKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvbGljeS5jICAg ICAgICAgICAgIHwgIDI3ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAg ICAgICAgfCAxOTAgKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9wb2xpY3ku aCAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3Vy aXR5Lm91dCB8IDE5NiArKysrKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9yb3dzZWN1cml0eS5zcWwgICAgICB8ICA3OCArKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwg NTQwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvZnVuYy9mdW5jLWluZm8uc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21s CmluZGV4IGMzOTM4MzJkOTRjLi40YjljNjYxYzIwYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2Z1bmMvZnVuYy1pbmZvLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNn bWwKQEAgLTM3OTcsNCArMzc5Nyw0OSBAQCBhY2wgICAgICB8IHtwb3N0Z3Jlcz1hcndkRHh0bS9w b3N0Z3Jlcyxmb289ci9wb3N0Z3Jlc30KIAogICA8L3NlY3QyPgogCisgIDxzZWN0MiBpZD0iZnVu Y3Rpb25zLWdldC1vYmplY3QtZGRsIj4KKyAgIDx0aXRsZT5HZXQgT2JqZWN0IERETCBGdW5jdGlv bnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgZnVuY3Rpb25zIGRlc2NyaWJlZCBpbiA8 eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwtdGFibGUiLz4KKyAgICByZXR1 cm4gdGhlIERhdGEgRGVmaW5pdGlvbiBMYW5ndWFnZSAoRERMKSBzdGF0ZW1lbnQgZm9yIGFueSBn aXZlbiBkYXRhYmFzZSBvYmplY3QuCisgICAgVGhpcyBmZWF0dXJlIGlzIGltcGxlbWVudGVkIGFz IGEgc2V0IG9mIGRpc3RpbmN0IGZ1bmN0aW9ucyBmb3IgZWFjaCBvYmplY3QgdHlwZS4KKyAgIDwv cGFyYT4KKworICAgPHRhYmxlIGlkPSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwtdGFibGUiPgor ICAgIDx0aXRsZT5HZXQgT2JqZWN0IERETCBGdW5jdGlvbnM8L3RpdGxlPgorICAgIDx0Z3JvdXAg Y29scz0iMSI+CisgICAgIDx0aGVhZD4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9 ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAg RnVuY3Rpb24KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIERlc2NyaXB0 aW9uCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgPC90aGVhZD4K KworICAgICA8dGJvZHk+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRl cm0+CisgICAgICAgICA8cHJpbWFyeT5wZ19nZXRfcG9saWN5X2RkbDwvcHJpbWFyeT4KKyAgICAg ICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19nZXRfcG9saWN5X2RkbDwvZnVu Y3Rpb24+CisgICAgICAgICggPHBhcmFtZXRlcj50YWJsZTwvcGFyYW1ldGVyPiA8dHlwZT5yZWdj bGFzczwvdHlwZT4sIDxwYXJhbWV0ZXI+cG9saWN5X25hbWU8L3BhcmFtZXRlcj4gPHR5cGU+bmFt ZTwvdHlwZT4sIDxwYXJhbWV0ZXI+cHJldHR5PC9wYXJhbWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5 cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPnRleHQ8L3JldHVybnZhbHVlPgorICAgICAgIDwv cGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmVjb25zdHJ1Y3RzIHRoZSBDUkVBVEUgUE9M SUNZIHN0YXRlbWVudCBmcm9tIHRoZSBzeXN0ZW0gY2F0YWxvZ3MgZm9yIGEgc3BlY2lmaWVkIHRh YmxlIGFuZCBwb2xpY3kgbmFtZS4KKyAgICAgICAgV2hlbiB0aGUgcHJldHR5IGZsYWcgaXMgc2V0 IHRvIHRydWUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgd2VsbC1mb3JtYXR0ZWQgRERMIHN0YXRl bWVudC4KKyAgICAgICAgVGhlIHJlc3VsdCBpcyBhIGNvbXByZWhlbnNpdmUgPGNvbW1hbmQ+Q1JF QVRFIFBPTElDWTwvY29tbWFuZD4gc3RhdGVtZW50LgorICAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICAgPC9yb3c+CisgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+CisgICA8L3RhYmxlPgor CisgIDwvc2VjdDI+CisKICAgPC9zZWN0MT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3BvbGljeS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9saWN5LmMKaW5kZXggODMwNTY5 NjBmZTQuLjFhYmUwYzQ0MzUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xp Y3kuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb2xpY3kuYwpAQCAtMTI4LDYgKzEyOCwz MyBAQCBwYXJzZV9wb2xpY3lfY29tbWFuZChjb25zdCBjaGFyICpjbWRfbmFtZSkKIAlyZXR1cm4g cG9sY21kOwogfQogCisvKgorICogZ2V0X3BvbGljeV9jbWRfbmFtZSAtCisgKgkgaGVscGVyIGZ1 bmN0aW9uIHRvIGNvbnZlcnQgY2hhciByZXByZXNlbnRhdGlvbiB0byBmdWxsIGNvbW1hbmQgc3Ry aW5ncy4KKyAqCisgKiBjbWQgLSAgVmFsaWQgdmFsdWVzIGFyZSAnKicsICdyJywgJ2EnLCAndycg YW5kICdkJy4KKyAqCisgKi8KK2NoYXIgKgorZ2V0X3BvbGljeV9jbWRfbmFtZShjaGFyIGNtZCkK K3sKKwlzd2l0Y2ggKGNtZCkKKwl7CisJCWNhc2UgJyonOgorCQkJcmV0dXJuICJBTEwiOworCQlj YXNlIEFDTF9TRUxFQ1RfQ0hSOgorCQkJcmV0dXJuICJTRUxFQ1QiOworCQljYXNlIEFDTF9JTlNF UlRfQ0hSOgorCQkJcmV0dXJuICJJTlNFUlQiOworCQljYXNlIEFDTF9VUERBVEVfQ0hSOgorCQkJ cmV0dXJuICJVUERBVEUiOworCQljYXNlIEFDTF9ERUxFVEVfQ0hSOgorCQkJcmV0dXJuICJERUxF VEUiOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBwb2xpY3kgY29t bWFuZCIpOworCX0KK30KKwogLyoKICAqIHBvbGljeV9yb2xlX2xpc3RfdG9fYXJyYXkKICAqCSBo ZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBhIGxpc3Qgb2YgUm9sZVNwZWNzIHRvIGFuIGFycmF5 IG9mCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggMDUwZWVmOTdhNGMuLjRkODYxMTA0 MmM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zMywxMiArMzMsMTQgQEAKICNp bmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJh dG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJ0aXRpb25lZF90YWJsZS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfcG9saWN5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1 ZGUgImNvbW1hbmRzL3BvbGljeS5oIgogI2luY2x1ZGUgImNvbW1vbi9rZXl3b3Jkcy5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTU0Niw2ICs1 NDgsMTAgQEAgc3RhdGljIHZvaWQgZ2V0X2pzb25fdGFibGVfbmVzdGVkX2NvbHVtbnMoVGFibGVG dW5jICp0ZiwgSnNvblRhYmxlUGxhbiAqcGxhbiwKIAkJCQkJCQkJCQkgIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIGJvb2wgc2hvd2ltcGxpY2l0LAogCQkJCQkJCQkJCSAg Ym9vbCBuZWVkY29tbWEpOworc3RhdGljIHZvaWQgZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoU3RyaW5n SW5mbyBidWYsCisJCQkJCQkJCSBib29sIHByZXR0eSwKKwkJCQkJCQkJIGludCBub09mVGFiQ2hh cnMsCisJCQkJCQkJCSBjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDQs IDUpOwogCiAjZGVmaW5lIG9ubHlfbWFya2VyKHJ0ZSkgICgocnRlKS0+aW5oID8gIiIgOiAiT05M WSAiKQogCkBAIC0xMzczOCwzICsxMzc0NCwxODcgQEAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJp bmcoTGlzdCAqYm91bmRfZGF0dW1zKQogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKIH0KKworLyoKKyAq IGdldF9mb3JtYXR0ZWRfc3RyaW5nCisgKgorICogUmV0dXJuIGEgZm9ybWF0dGVkIHZlcnNpb24g b2YgdGhlIHN0cmluZy4KKyAqCisgKiBwcmV0dHkgLSBJZiBwcmV0dHkgaXMgdHJ1ZSwgdGhlIG91 dHB1dCBpbmNsdWRlcyB0YWJzIChcdCkgYW5kIG5ld2xpbmVzIChcbikuCisgKiBub09mVGFiQ2hh cnMgLSBpbmRlbnQgd2l0aCBzcGVjaWZpZWQgbm8gb2YgdGFicy4KKyAqIGZtdCAtIHByaW50Zi1z dHlsZSBmb3JtYXQgc3RyaW5nIHVzZWQgYnkgYXBwZW5kU3RyaW5nSW5mb1ZBLgorICovCitzdGF0 aWMgdm9pZAorZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoU3RyaW5nSW5mbyBidWYsIGJvb2wgcHJldHR5 LCBpbnQgbm9PZlRhYkNoYXJzLCBjb25zdCBjaGFyICpmbXQsLi4uKQoreworCXZhX2xpc3QJCWFy Z3M7CisKKwlpZiAocHJldHR5KQorCXsKKwkJLyogSW5kZW50IHdpdGggdGFicyAqLworCQlmb3Ig KGludCBpID0gMDsgaSA8IG5vT2ZUYWJDaGFyczsgaSsrKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKGJ1ZiwgIlx0Iik7CisJCX0KKwl9CisJZWxzZQorCQlhcHBlbmRTdHJpbmdJbmZv Q2hhcihidWYsICcgJyk7CisKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCWFwcGVuZFN0cmluZ0lu Zm9WQShidWYsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCisJLyogSWYgcHJldHR5IG1v ZGUsIGFwcGVuZCBuZXdsaW5lIGF0IHRoZSBlbmQgKi8KKwlpZiAocHJldHR5KQorCQlhcHBlbmRT dHJpbmdJbmZvQ2hhcihidWYsICdcbicpOworfQorCisvKgorICogcGdfZ2V0X3BvbGljeV9kZGwK KyAqCisgKiBHZW5lcmF0ZSBhIENSRUFURSBQT0xJQ1kgc3RhdGVtZW50IGZvciB0aGUgc3BlY2lm aWVkIHBvbGljeS4KKyAqCisgKiB0YWJsZUlEIC0gVGFibGUgSUQgb2YgdGhlIHBvbGljeS4KKyAq IHBvbGljeU5hbWUgLSBOYW1lIG9mIHRoZSBwb2xpY3kgZm9yIHdoaWNoIHRvIGdlbmVyYXRlIHRo ZSBEREwuCisgKiBwcmV0dHkgLSBJZiB0cnVlLCBmb3JtYXQgdGhlIERETCB3aXRoIGluZGVudGF0 aW9uIGFuZCBsaW5lIGJyZWFrcy4KKyAqLworRGF0dW0KK3BnX2dldF9wb2xpY3lfZGRsKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJT2lkCQkJdGFibGVJRCA9IFBHX0dFVEFSR19PSUQoMCk7CisJTmFt ZQkJcG9saWN5TmFtZSA9IFBHX0dFVEFSR19OQU1FKDEpOworCWJvb2wJCXByZXR0eSA9IFBHX0dF VEFSR19CT09MKDIpOworCWJvb2wJCWF0dHJJc051bGw7CisJaW50CQkJcHJldHR5RmxhZ3M7CisJ RGF0dW0JCXZhbHVlRGF0dW07CisJSGVhcFR1cGxlCXR1cGxlUG9saWN5OworCVJlbGF0aW9uCXBn UG9saWN5UmVsOworCVJlbGF0aW9uCXRhcmdldFRhYmxlOworCVNjYW5LZXlEYXRhIHNrZXlbMl07 CisJU3lzU2NhbkRlc2Mgc3NjYW47CisJRm9ybV9wZ19wb2xpY3kgcG9saWN5Rm9ybTsKKworCVN0 cmluZ0luZm9EYXRhIGJ1ZjsKKworCWluaXRTdHJpbmdJbmZvKCZidWYpOworCisJdGFyZ2V0VGFi bGUgPSByZWxhdGlvbl9vcGVuKHRhYmxlSUQsIEFjY2Vzc1NoYXJlTG9jayk7CisJLyogRmluZCBw b2xpY3kgdG8gYmVnaW4gc2NhbiAqLworCXBnUG9saWN5UmVsID0gdGFibGVfb3BlbihQb2xpY3lS ZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJLyogU2V0IGtleSAtIHBvbGljeSdzIHJl bGF0aW9uIGlkLiAqLworCVNjYW5LZXlJbml0KCZza2V5WzBdLAorCQkJCUFudW1fcGdfcG9saWN5 X3BvbHJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmpl Y3RJZEdldERhdHVtKHRhYmxlSUQpKTsKKworCS8qIFNldCBrZXkgLSBwb2xpY3kncyBuYW1lLiAq LworCVNjYW5LZXlJbml0KCZza2V5WzFdLAorCQkJCUFudW1fcGdfcG9saWN5X3BvbG5hbWUsCisJ CQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQlDU3RyaW5nR2V0RGF0dW0o TmFtZVN0cigqcG9saWN5TmFtZSkpKTsKKworCXNzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBn UG9saWN5UmVsLAorCQkJCQkJCSAgIFBvbGljeVBvbHJlbGlkUG9sbmFtZUluZGV4SWQsIHRydWUs IE5VTEwsIDIsCisJCQkJCQkJICAgc2tleSk7CisKKwl0dXBsZVBvbGljeSA9IHN5c3RhYmxlX2dl dG5leHQoc3NjYW4pOworCS8qIENoZWNrIHRoYXQgdGhlIHBvbGljeSBpcyBmb3VuZCwgcmFpc2Ug YW4gZXJyb3IgaWYgbm90LiAqLworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZVBvbGljeSkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNU KSwKKwkJCQkgZXJybXNnKCJwb2xpY3kgXCIlc1wiIGZvciB0YWJsZSBcIiVzXCIgZG9lcyBub3Qg ZXhpc3QiLAorCQkJCQkJTmFtZVN0cigqcG9saWN5TmFtZSksCisJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZSh0YXJnZXRUYWJsZSkpKSk7CisKKwlwb2xpY3lGb3JtID0gKEZvcm1fcGdfcG9s aWN5KSBHRVRTVFJVQ1QodHVwbGVQb2xpY3kpOworCisJLyogQnVpbGQgdGhlIENSRUFURSBQT0xJ Q1kgc3RhdGVtZW50ICovCisJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoJmJ1ZiwgcHJldHR5LCAwLCAi Q1JFQVRFIFBPTElDWSAlcyBPTiAlcyIsCisJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihOYW1lU3Ry KCpwb2xpY3lOYW1lKSksCisJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0VGFi bGUpKTsKKworCS8qIENoZWNrIHRoZSB0eXBlIGlzIFBFUk1JU1NJVkUgb3IgUkVTVFJJQ1RJVkUg Ki8KKwlnZXRfZm9ybWF0dGVkX3N0cmluZygmYnVmLCBwcmV0dHksIDEsCisJCQkJCQkgcG9saWN5 Rm9ybS0+cG9scGVybWlzc2l2ZSA/ICJBUyBQRVJNSVNTSVZFIiA6ICJBUyBSRVNUUklDVElWRSIp OworCisJLyogQ2hlY2sgY29tbWFuZCB0byB3aGljaCB0aGUgcG9saWN5IGFwcGxpZXMgKi8KKwln ZXRfZm9ybWF0dGVkX3N0cmluZygmYnVmLCBwcmV0dHksIDEsICJGT1IgJXMiLAorCQkJCQkJIGdl dF9wb2xpY3lfY21kX25hbWUocG9saWN5Rm9ybS0+cG9sY21kKSk7CisKKwkvKiBDaGVjayBpZiB0 aGUgcG9saWN5IGhhcyBhIFRPIGxpc3QgKi8KKwl2YWx1ZURhdHVtID0gaGVhcF9nZXRhdHRyKHR1 cGxlUG9saWN5LAorCQkJCQkJCSAgQW51bV9wZ19wb2xpY3lfcG9scm9sZXMsCisJCQkJCQkJICBS ZWxhdGlvbkdldERlc2NyKHBnUG9saWN5UmVsKSwKKwkJCQkJCQkgICZhdHRySXNOdWxsKTsKKwlp ZiAoIWF0dHJJc051bGwpCisJeworCQlBcnJheVR5cGUgICpwb2xpY3lfcm9sZXMgPSBEYXR1bUdl dEFycmF5VHlwZVBDb3B5KHZhbHVlRGF0dW0pOworCQlpbnQJCQluaXRlbXMgPSBBUlJfRElNUyhw b2xpY3lfcm9sZXMpWzBdOworCQlPaWQJCSAgICpyb2xlcyA9IChPaWQgKikgQVJSX0RBVEFfUFRS KHBvbGljeV9yb2xlcyk7CisJCVN0cmluZ0luZm9EYXRhIHJvbGVfbmFtZXM7CisKKwkJaW5pdFN0 cmluZ0luZm8oJnJvbGVfbmFtZXMpOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbml0ZW1zOyBp KyspCisJCXsKKwkJCWlmIChPaWRJc1ZhbGlkKHJvbGVzW2ldKSkKKwkJCXsKKwkJCQljaGFyCSAg ICpyb2xlbmFtZSA9IEdldFVzZXJOYW1lRnJvbUlkKHJvbGVzW2ldLCBmYWxzZSk7CisKKwkJCQlp ZiAoaSA+IDApCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnJvbGVfbmFtZXMsICIsICIp OworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnJvbGVfbmFtZXMsIHJvbGVuYW1lKTsKKwkJ CX0KKwkJfQorCisJCWlmIChyb2xlX25hbWVzLmxlbiA+IDApCisJCQlnZXRfZm9ybWF0dGVkX3N0 cmluZygmYnVmLCBwcmV0dHksIDEsICJUTyAlcyIsIHJvbGVfbmFtZXMuZGF0YSk7CisJfQorCisJ cHJldHR5RmxhZ3MgPSBHRVRfUFJFVFRZX0ZMQUdTKHByZXR0eSk7CisJLyogQ2hlY2sgaWYgdGhl IHBvbGljeSBoYXMgYSBVU0lORyBleHByICovCisJdmFsdWVEYXR1bSA9IGhlYXBfZ2V0YXR0cih0 dXBsZVBvbGljeSwKKwkJCQkJCQkgIEFudW1fcGdfcG9saWN5X3BvbHF1YWwsCisJCQkJCQkJICBS ZWxhdGlvbkdldERlc2NyKHBnUG9saWN5UmVsKSwKKwkJCQkJCQkgICZhdHRySXNOdWxsKTsKKwlp ZiAoIWF0dHJJc051bGwpCisJeworCQl0ZXh0CSAgICpleHBydGV4dCA9IERhdHVtR2V0VGV4dFBQ KHZhbHVlRGF0dW0pOworCQl0ZXh0CSAgICp1c2luZ0V4cHJlc3Npb24gPSBwZ19nZXRfZXhwcl93 b3JrZXIoZXhwcnRleHQsCisJCQkJCQkJCQkJCQkJCSBwb2xpY3lGb3JtLT5wb2xyZWxpZCwKKwkJ CQkJCQkJCQkJCQkJIHByZXR0eUZsYWdzKTsKKworCQlnZXRfZm9ybWF0dGVkX3N0cmluZygmYnVm LCBwcmV0dHksIDEsICJVU0lORyAoJXMpIiwKKwkJCQkJCQkgdGV4dF90b19jc3RyaW5nKHVzaW5n RXhwcmVzc2lvbikpOworCX0KKworCS8qIENoZWNrIGlmIHRoZSBwb2xpY3kgaGFzIGEgV0lUSCBD SEVDSyBleHByICovCisJdmFsdWVEYXR1bSA9IGhlYXBfZ2V0YXR0cih0dXBsZVBvbGljeSwKKwkJ CQkJCQkgIEFudW1fcGdfcG9saWN5X3BvbHdpdGhjaGVjaywKKwkJCQkJCQkgIFJlbGF0aW9uR2V0 RGVzY3IocGdQb2xpY3lSZWwpLAorCQkJCQkJCSAgJmF0dHJJc051bGwpOworCWlmICghYXR0cklz TnVsbCkKKwl7CisJCXRleHQJICAgKmV4cHJ0ZXh0ID0gRGF0dW1HZXRUZXh0UFAodmFsdWVEYXR1 bSk7CisJCXRleHQJICAgKmNoZWNrRXhwcmVzc2lvbiA9IHBnX2dldF9leHByX3dvcmtlcihleHBy dGV4dCwKKwkJCQkJCQkJCQkJCQkJIHBvbGljeUZvcm0tPnBvbHJlbGlkLAorCQkJCQkJCQkJCQkJ CQkgcHJldHR5RmxhZ3MpOworCisJCWdldF9mb3JtYXR0ZWRfc3RyaW5nKCZidWYsIHByZXR0eSwg MSwgIldJVEggQ0hFQ0sgKCVzKSIsCisJCQkJCQkJIHRleHRfdG9fY3N0cmluZyhjaGVja0V4cHJl c3Npb24pKTsKKwl9CisKKwkvKiBSZXBsYWNlICdcbicgd2l0aCAnOycgaWYgbmV3bGluZSBhdCB0 aGUgZW5kICovCisJaWYgKGJ1Zi5sZW4gPiAwICYmIGJ1Zi5kYXRhW2J1Zi5sZW4gLSAxXSA9PSAn XG4nKQorCQlidWYuZGF0YVtidWYubGVuIC0gMV0gPSAnOyc7CisJZWxzZQorCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcigmYnVmLCAnOycpOworCisJLyogQ2xlYW4gdXAuICovCisJc3lzdGFibGVfZW5k c2Nhbihzc2Nhbik7CisJcmVsYXRpb25fY2xvc2UodGFyZ2V0VGFibGUsIEFjY2Vzc1NoYXJlTG9j ayk7CisJdGFibGVfY2xvc2UocGdQb2xpY3lSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlQR19S RVRVUk5fVEVYVF9QKHN0cmluZ190b190ZXh0KGJ1Zi5kYXRhKSk7Cit9CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAppbmRleCBiNTFkMmIxNzM3OS4uZDI4MDM5ZTRjMDggMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdApAQCAtNDAyMSw2ICs0MDIxLDkgQEAKICAgcHJvbmFtZSA9PiAncGdfZ2V0X2Z1bmN0 aW9uX3NxbGJvZHknLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4gJ3RleHQn LCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19nZXRfZnVuY3Rpb25fc3Fs Ym9keScgfSwKK3sgb2lkID0+ICc4ODExJywgZGVzY3IgPT4gJ2dldCBDUkVBVEUgc3RhdGVtZW50 IGZvciBwb2xpY3knLAorICBwcm9uYW1lID0+ICdwZ19nZXRfcG9saWN5X2RkbCcsIHByb3JldHR5 cGUgPT4gJ3RleHQnLAorICBwcm9hcmd0eXBlcyA9PiAncmVnY2xhc3MgbmFtZSBib29sJywgcHJv c3JjID0+ICdwZ19nZXRfcG9saWN5X2RkbCcgfSwKIAogeyBvaWQgPT4gJzE2ODYnLCBkZXNjciA9 PiAnbGlzdCBvZiBTUUwga2V5d29yZHMnLAogICBwcm9uYW1lID0+ICdwZ19nZXRfa2V5d29yZHMn LCBwcm9jb3N0ID0+ICcxMCcsIHByb3Jvd3MgPT4gJzUwMCcsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9wb2xpY3kuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3BvbGljeS5oCmlu ZGV4IGYwNmFhMWRmNDM5Li40MGU0NWI3MzhmNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvcG9saWN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcG9saWN5LmgKQEAgLTM1 LDQgKzM1LDYgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgcmVuYW1lX3BvbGljeShSZW5hbWVTdG10 ICpzdG10KTsKIAogZXh0ZXJuIGJvb2wgcmVsYXRpb25faGFzX3BvbGljaWVzKFJlbGF0aW9uIHJl bCk7CiAKK2V4dGVybiBjaGFyICpnZXRfcG9saWN5X2NtZF9uYW1lKGNoYXIgY21kKTsKKwogI2Vu ZGlmCQkJCQkJCS8qIFBPTElDWV9IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2Vj dXJpdHkub3V0CmluZGV4IDVhMTcyYzVkOTFjLi45OTJjODhmMmUzZiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKQEAgLTQ4MjEsMTEgKzQ4MjEsMjAzIEBAIHJl c2V0IHJsc190ZXN0LmJsYWg7CiBkcm9wIGZ1bmN0aW9uIHJsc19mKHRleHQpOwogZHJvcCB0YWJs ZSBybHNfdCwgdGVzdF90OwogLS0KKy0tIFRlc3QgZm9yIHBnX2dldF9wb2xpY3lfZGRsKHRhYmxl TmFtZSwgcG9saWN5TmFtZSwgcHJldHR5KSBmdW5jdGlvbi4KKy0tCitDUkVBVEUgVEFCTEUgcmxz X3RibF8xICgKKyAgICBkaWQgICAgICAgICBpbnQgcHJpbWFyeSBrZXksCisgICAgY2lkICAgICAg ICAgaW50LAorICAgIGRsZXZlbCAgICAgIGludCBub3QgbnVsbCwKKyAgICBkYXV0aG9yICAgICBu YW1lLAorICAgIGR0aXRsZSAgICAgIHRleHQKKyk7CitHUkFOVCBBTEwgT04gcmxzX3RibF8xIFRP IHB1YmxpYzsKK0NSRUFURSBUQUJMRSBybHNfdGJsXzIgKAorICAgIHBndXNlciAgICAgIG5hbWUg cHJpbWFyeSBrZXksCisgICAgc2VjbHYgICAgICAgaW50CispOworR1JBTlQgU0VMRUNUIE9OIHJs c190YmxfMiBUTyBwdWJsaWM7CistLSBUZXN0IFBFUk1JU1NJVkUgYW5kIFJFU1RSSUNUSVZFCitD UkVBVEUgUE9MSUNZIHJsc19wMSBPTiBybHNfdGJsXzEgQVMgUEVSTUlTU0lWRQorICAgIFVTSU5H IChkbGV2ZWwgPD0gKFNFTEVDVCBzZWNsdiBGUk9NIHJsc190YmxfMiBXSEVSRSBwZ3VzZXIgPSBj dXJyZW50X3VzZXIpKTsKK0NSRUFURSBQT0xJQ1kgcmxzX3AyIE9OIHJsc190YmxfMSBBUyBSRVNU UklDVElWRSBVU0lORyAoY2lkIDw+IDQ0IEFORCBjaWQgPCA1MCk7CistLSBUZXN0IEZPUiBBTEwg fCBTRUxFQ1QgfCBJTlNFUlQgfCBVUERBVEUgfCBERUxFVEUKK0NSRUFURSBQT0xJQ1kgcmxzX3Az IE9OIHJsc190YmxfMSBGT1IgQUxMIFVTSU5HIChkYXV0aG9yID0gY3VycmVudF91c2VyKTsKK0NS RUFURSBQT0xJQ1kgcmxzX3A0IE9OIHJsc190YmxfMSBGT1IgU0VMRUNUIFVTSU5HIChjaWQgJSAy ID0gMCk7CitDUkVBVEUgUE9MSUNZIHJsc19wNSBPTiBybHNfdGJsXzEgRk9SIElOU0VSVCBXSVRI IENIRUNLIChjaWQgJSAyID0gMSk7CitDUkVBVEUgUE9MSUNZIHJsc19wNiBPTiBybHNfdGJsXzEg Rk9SIFVQREFURSBVU0lORyAoY2lkICUgMiA9IDApOworQ1JFQVRFIFBPTElDWSBybHNfcDcgT04g cmxzX3RibF8xIEZPUiBERUxFVEUgVVNJTkcgKGNpZCA8IDgpOworLS0gVGVzdCBUTyB7IHJvbGVf bmFtZSAuLi4gfQorQ1JFQVRFIFBPTElDWSBybHNfcDggT04gcmxzX3RibF8xIFRPIHJlZ3Jlc3Nf cmxzX2RhdmUsIHJlZ3Jlc3NfcmxzX2FsaWNlIFVTSU5HICh0cnVlKTsKK0NSRUFURSBQT0xJQ1kg cmxzX3A5IE9OIHJsc190YmxfMSBUTyByZWdyZXNzX3Jsc19leGVtcHRfdXNlciBXSVRIIENIRUNL IChjaWQgPSAoU0VMRUNUIHNlY2x2IEZST00gcmxzX3RibF8yKSk7CistLSBUZXN0IE5VTEwgdmFs dWUKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbChOVUxMLCAncmxzX3AxJywgZmFsc2UpOworIHBn X2dldF9wb2xpY3lfZGRsIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxF Q1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3RhYjEnLCBOVUxMLCBmYWxzZSk7CitFUlJPUjogIHJlbGF0 aW9uICJ0YWIxIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgcGdfZ2V0X3BvbGljeV9k ZGwoJ3RhYjEnLCBOVUxMLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoTlVMTCwgTlVMTCwgZmFsc2UpOworIHBnX2dl dF9wb2xpY3lfZGRsIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBUYWJs ZSBkb2VzIG5vdCBleGlzdAorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCd0YWIxJywgJ3Jsc19w MScsIGZhbHNlKTsKK0VSUk9SOiAgcmVsYXRpb24gInRhYjEiIGRvZXMgbm90IGV4aXN0CitMSU5F IDE6IFNFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgndGFiMScsICdybHNfcDEnLCBmYWxzZSk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBQb2xpY3kgZG9lcyBub3QgZXhp c3QKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3BvbDEnLCBmYWxzZSk7 CitFUlJPUjogIHBvbGljeSAicG9sMSIgZm9yIHRhYmxlICJybHNfdGJsXzEiIGRvZXMgbm90IGV4 aXN0CistLSBXaXRob3V0IFByZXR0eSBmb3JtYXR0ZWQKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2Rk bCgncmxzX3RibF8xJywgJ3Jsc19wMScsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9wb2xpY3lfZGRsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICBDUkVBVEUgUE9MSUNZIHJsc19wMSBPTiBybHNfdGJsXzEgQVMgUEVSTUlT U0lWRSBGT1IgQUxMIFVTSU5HICgoZGxldmVsIDw9ICggU0VMRUNUIHJsc190YmxfMi5zZWNsdisK KyAgICBGUk9NIHJsc190YmxfMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSEVSRSAo cmxzX3RibF8yLnBndXNlciA9IENVUlJFTlRfVVNFUikpKSk7CisoMSByb3cpCisKK1NFTEVDVCBw Z19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wMicsIGZhbHNlKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9saWN5X2RkbCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgQ1JFQVRFIFBPTElDWSBybHNfcDIgT04gcmxzX3RibF8xIEFT IFJFU1RSSUNUSVZFIEZPUiBBTEwgVVNJTkcgKCgoY2lkIDw+IDQ0KSBBTkQgKGNpZCA8IDUwKSkp OworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNf cDMnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X3BvbGljeV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgQ1JFQVRFIFBPTElDWSBybHNfcDMgT04g cmxzX3RibF8xIEFTIFBFUk1JU1NJVkUgRk9SIEFMTCBVU0lORyAoKGRhdXRob3IgPSBDVVJSRU5U X1VTRVIpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEn LCAncmxzX3A0JywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBn X2dldF9wb2xpY3lfZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIENSRUFURSBQT0xJQ1kgcmxzX3A0IE9OIHJsc190 YmxfMSBBUyBQRVJNSVNTSVZFIEZPUiBTRUxFQ1QgVVNJTkcgKCgoY2lkICUgMikgPSAwKSk7Ciso MSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNScs IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcG9s aWN5X2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgQ1JFQVRFIFBPTElDWSBybHNfcDUgT04gcmxzX3Ri bF8xIEFTIFBFUk1JU1NJVkUgRk9SIElOU0VSVCBXSVRIIENIRUNLICgoKGNpZCAlIDIpID0gMSkp OworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNf cDYnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3Bv bGljeV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgQ1JFQVRFIFBPTElDWSBybHNfcDYgT04gcmxzX3RibF8xIEFT IFBFUk1JU1NJVkUgRk9SIFVQREFURSBVU0lORyAoKChjaWQgJSAyKSA9IDApKTsKKygxIHJvdykK KworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A3JywgZmFsc2Up OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wb2xpY3lfZGRsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIENS RUFURSBQT0xJQ1kgcmxzX3A3IE9OIHJsc190YmxfMSBBUyBQRVJNSVNTSVZFIEZPUiBERUxFVEUg VVNJTkcgKChjaWQgPCA4KSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgn cmxzX3RibF8xJywgJ3Jsc19wOCcsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3BvbGljeV9kZGwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIENSRUFURSBQT0xJQ1kgcmxzX3A4IE9OIHJs c190YmxfMSBBUyBQRVJNSVNTSVZFIEZPUiBBTEwgVE8gcmVncmVzc19ybHNfZGF2ZSwgcmVncmVz c19ybHNfYWxpY2UgVVNJTkcgKHRydWUpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3BvbGlj eV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDknLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9wb2xpY3lfZGRsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICBDUkVBVEUgUE9MSUNZIHJsc19wOSBPTiBybHNfdGJsXzEgQVMgUEVS TUlTU0lWRSBGT1IgQUxMIFRPIHJlZ3Jlc3NfcmxzX2V4ZW1wdF91c2VyIFdJVEggQ0hFQ0sgKChj aWQgPSAoIFNFTEVDVCBybHNfdGJsXzIuc2VjbHYrCisgICAgRlJPTSBybHNfdGJsXzIpKSk7Ciso MSByb3cpCisKKy0tIFdpdGggUHJldHR5IGZvcm1hdHRlZAorXHBzZXQgZm9ybWF0IHVuYWxpZ25l ZAorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AxJywgdHJ1ZSk7 CitwZ19nZXRfcG9saWN5X2RkbAorQ1JFQVRFIFBPTElDWSBybHNfcDEgT04gcmxzX3RibF8xCisJ QVMgUEVSTUlTU0lWRQorCUZPUiBBTEwKKwlVU0lORyAoZGxldmVsIDw9ICgoIFNFTEVDVCBybHNf dGJsXzIuc2VjbHYKKyAgIEZST00gcmxzX3RibF8yCisgIFdIRVJFIHJsc190YmxfMi5wZ3VzZXIg PSBDVVJSRU5UX1VTRVIpKSk7CisoMSByb3cpCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Js c190YmxfMScsICdybHNfcDInLCB0cnVlKTsKK3BnX2dldF9wb2xpY3lfZGRsCitDUkVBVEUgUE9M SUNZIHJsc19wMiBPTiBybHNfdGJsXzEKKwlBUyBSRVNUUklDVElWRQorCUZPUiBBTEwKKwlVU0lO RyAoY2lkIDw+IDQ0IEFORCBjaWQgPCA1MCk7CisoMSByb3cpCitTRUxFQ1QgcGdfZ2V0X3BvbGlj eV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDMnLCB0cnVlKTsKK3BnX2dldF9wb2xpY3lfZGRsCitD UkVBVEUgUE9MSUNZIHJsc19wMyBPTiBybHNfdGJsXzEKKwlBUyBQRVJNSVNTSVZFCisJRk9SIEFM TAorCVVTSU5HIChkYXV0aG9yID0gQ1VSUkVOVF9VU0VSKTsKKygxIHJvdykKK1NFTEVDVCBwZ19n ZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNCcsIHRydWUpOworcGdfZ2V0X3BvbGlj eV9kZGwKK0NSRUFURSBQT0xJQ1kgcmxzX3A0IE9OIHJsc190YmxfMQorCUFTIFBFUk1JU1NJVkUK KwlGT1IgU0VMRUNUCisJVVNJTkcgKChjaWQgJSAyKSA9IDApOworKDEgcm93KQorU0VMRUNUIHBn X2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A1JywgdHJ1ZSk7CitwZ19nZXRfcG9s aWN5X2RkbAorQ1JFQVRFIFBPTElDWSBybHNfcDUgT04gcmxzX3RibF8xCisJQVMgUEVSTUlTU0lW RQorCUZPUiBJTlNFUlQKKwlXSVRIIENIRUNLICgoY2lkICUgMikgPSAxKTsKKygxIHJvdykKK1NF TEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNicsIHRydWUpOworcGdf Z2V0X3BvbGljeV9kZGwKK0NSRUFURSBQT0xJQ1kgcmxzX3A2IE9OIHJsc190YmxfMQorCUFTIFBF Uk1JU1NJVkUKKwlGT1IgVVBEQVRFCisJVVNJTkcgKChjaWQgJSAyKSA9IDApOworKDEgcm93KQor U0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A3JywgdHJ1ZSk7Citw Z19nZXRfcG9saWN5X2RkbAorQ1JFQVRFIFBPTElDWSBybHNfcDcgT04gcmxzX3RibF8xCisJQVMg UEVSTUlTU0lWRQorCUZPUiBERUxFVEUKKwlVU0lORyAoY2lkIDwgOCk7CisoMSByb3cpCitTRUxF Q1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDgnLCB0cnVlKTsKK3BnX2dl dF9wb2xpY3lfZGRsCitDUkVBVEUgUE9MSUNZIHJsc19wOCBPTiBybHNfdGJsXzEKKwlBUyBQRVJN SVNTSVZFCisJRk9SIEFMTAorCVRPIHJlZ3Jlc3NfcmxzX2RhdmUsIHJlZ3Jlc3NfcmxzX2FsaWNl CisJVVNJTkcgKHRydWUpOworKDEgcm93KQorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNf dGJsXzEnLCAncmxzX3A5JywgdHJ1ZSk7CitwZ19nZXRfcG9saWN5X2RkbAorQ1JFQVRFIFBPTElD WSBybHNfcDkgT04gcmxzX3RibF8xCisJQVMgUEVSTUlTU0lWRQorCUZPUiBBTEwKKwlUTyByZWdy ZXNzX3Jsc19leGVtcHRfdXNlcgorCVdJVEggQ0hFQ0sgKGNpZCA9ICgoIFNFTEVDVCBybHNfdGJs XzIuc2VjbHYKKyAgIEZST00gcmxzX3RibF8yKSkpOworKDEgcm93KQorLS0gQ2xlYW4gdXAgb2Jq ZWN0cyBjcmVhdGVkIGZvciB0ZXN0aW5nIHBnX2dldF9wb2xpY3lfZGRsIGZ1bmN0aW9uLgorRFJP UCBQT0xJQ1kgcmxzX3AxIE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wMiBPTiBybHNf dGJsXzE7CitEUk9QIFBPTElDWSBybHNfcDMgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxz X3A0IE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wNSBPTiBybHNfdGJsXzE7CitEUk9Q IFBPTElDWSBybHNfcDYgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxzX3A3IE9OIHJsc190 YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wOCBPTiBybHNfdGJsXzE7CitEUk9QIFBPTElDWSBybHNf cDkgT04gcmxzX3RibF8xOworLS0KIC0tIENsZWFuIHVwIG9iamVjdHMKIC0tCiBSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CiBEUk9QIFNDSEVNQSByZWdyZXNzX3Jsc19zY2hlbWEgQ0FTQ0FE RTsKLU5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMzAgb3RoZXIgb2JqZWN0cworTk9USUNFOiAg ZHJvcCBjYXNjYWRlcyB0byAzMiBvdGhlciBvYmplY3RzCiBERVRBSUw6ICBkcm9wIGNhc2NhZGVz IHRvIGZ1bmN0aW9uIGZfbGVhayh0ZXh0KQogZHJvcCBjYXNjYWRlcyB0byB0YWJsZSB1YWNjb3Vu dAogZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjYXRlZ29yeQpAQCAtNDg1Niw2ICs1MDQ4LDggQEAg ZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBkZXAxCiBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGRlcDIK IGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgZG9iX3QxCiBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGRv Yl90MgorZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBybHNfdGJsXzEKK2Ryb3AgY2FzY2FkZXMgdG8g dGFibGUgcmxzX3RibF8yCiBEUk9QIFVTRVIgcmVncmVzc19ybHNfYWxpY2U7CiBEUk9QIFVTRVIg cmVncmVzc19ybHNfYm9iOwogRFJPUCBVU0VSIHJlZ3Jlc3NfcmxzX2Nhcm9sOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcm93c2VjdXJpdHkuc3FsCmluZGV4IDIxYWMwY2E1MWVlLi43NWM5OWIwMWUyNyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbApAQCAtMjQwMCw2ICsyNDAwLDg0IEBAIHJl c2V0IHJsc190ZXN0LmJsYWg7CiBkcm9wIGZ1bmN0aW9uIHJsc19mKHRleHQpOwogZHJvcCB0YWJs ZSBybHNfdCwgdGVzdF90OwogCistLQorLS0gVGVzdCBmb3IgcGdfZ2V0X3BvbGljeV9kZGwodGFi bGVOYW1lLCBwb2xpY3lOYW1lLCBwcmV0dHkpIGZ1bmN0aW9uLgorLS0KK0NSRUFURSBUQUJMRSBy bHNfdGJsXzEgKAorICAgIGRpZCAgICAgICAgIGludCBwcmltYXJ5IGtleSwKKyAgICBjaWQgICAg ICAgICBpbnQsCisgICAgZGxldmVsICAgICAgaW50IG5vdCBudWxsLAorICAgIGRhdXRob3IgICAg IG5hbWUsCisgICAgZHRpdGxlICAgICAgdGV4dAorKTsKK0dSQU5UIEFMTCBPTiBybHNfdGJsXzEg VE8gcHVibGljOworQ1JFQVRFIFRBQkxFIHJsc190YmxfMiAoCisgICAgcGd1c2VyICAgICAgbmFt ZSBwcmltYXJ5IGtleSwKKyAgICBzZWNsdiAgICAgICBpbnQKKyk7CitHUkFOVCBTRUxFQ1QgT04g cmxzX3RibF8yIFRPIHB1YmxpYzsKKworLS0gVGVzdCBQRVJNSVNTSVZFIGFuZCBSRVNUUklDVElW RQorQ1JFQVRFIFBPTElDWSBybHNfcDEgT04gcmxzX3RibF8xIEFTIFBFUk1JU1NJVkUKKyAgICBV U0lORyAoZGxldmVsIDw9IChTRUxFQ1Qgc2VjbHYgRlJPTSBybHNfdGJsXzIgV0hFUkUgcGd1c2Vy ID0gY3VycmVudF91c2VyKSk7CitDUkVBVEUgUE9MSUNZIHJsc19wMiBPTiBybHNfdGJsXzEgQVMg UkVTVFJJQ1RJVkUgVVNJTkcgKGNpZCA8PiA0NCBBTkQgY2lkIDwgNTApOworCistLSBUZXN0IEZP UiBBTEwgfCBTRUxFQ1QgfCBJTlNFUlQgfCBVUERBVEUgfCBERUxFVEUKK0NSRUFURSBQT0xJQ1kg cmxzX3AzIE9OIHJsc190YmxfMSBGT1IgQUxMIFVTSU5HIChkYXV0aG9yID0gY3VycmVudF91c2Vy KTsKK0NSRUFURSBQT0xJQ1kgcmxzX3A0IE9OIHJsc190YmxfMSBGT1IgU0VMRUNUIFVTSU5HIChj aWQgJSAyID0gMCk7CitDUkVBVEUgUE9MSUNZIHJsc19wNSBPTiBybHNfdGJsXzEgRk9SIElOU0VS VCBXSVRIIENIRUNLIChjaWQgJSAyID0gMSk7CitDUkVBVEUgUE9MSUNZIHJsc19wNiBPTiBybHNf dGJsXzEgRk9SIFVQREFURSBVU0lORyAoY2lkICUgMiA9IDApOworQ1JFQVRFIFBPTElDWSBybHNf cDcgT04gcmxzX3RibF8xIEZPUiBERUxFVEUgVVNJTkcgKGNpZCA8IDgpOworCistLSBUZXN0IFRP IHsgcm9sZV9uYW1lIC4uLiB9CitDUkVBVEUgUE9MSUNZIHJsc19wOCBPTiBybHNfdGJsXzEgVE8g cmVncmVzc19ybHNfZGF2ZSwgcmVncmVzc19ybHNfYWxpY2UgVVNJTkcgKHRydWUpOworQ1JFQVRF IFBPTElDWSBybHNfcDkgT04gcmxzX3RibF8xIFRPIHJlZ3Jlc3NfcmxzX2V4ZW1wdF91c2VyIFdJ VEggQ0hFQ0sgKGNpZCA9IChTRUxFQ1Qgc2VjbHYgRlJPTSBybHNfdGJsXzIpKTsKKworLS0gVGVz dCBOVUxMIHZhbHVlCitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoTlVMTCwgJ3Jsc19wMScsIGZh bHNlKTsKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgndGFiMScsIE5VTEwsIGZhbHNlKTsKK1NF TEVDVCBwZ19nZXRfcG9saWN5X2RkbChOVUxMLCBOVUxMLCBmYWxzZSk7CisKKworLS0gVGFibGUg ZG9lcyBub3QgZXhpc3QKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgndGFiMScsICdybHNfcDEn LCBmYWxzZSk7CistLSBQb2xpY3kgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCBwZ19nZXRfcG9saWN5 X2RkbCgncmxzX3RibF8xJywgJ3BvbDEnLCBmYWxzZSk7CisKKy0tIFdpdGhvdXQgUHJldHR5IGZv cm1hdHRlZAorU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AxJywg ZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AyJywg ZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AzJywg ZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A0Jywg ZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A1Jywg ZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A2Jywg ZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A3Jywg ZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A4Jywg ZmFsc2UpOworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A5Jywg ZmFsc2UpOworCistLSBXaXRoIFByZXR0eSBmb3JtYXR0ZWQKK1xwc2V0IGZvcm1hdCB1bmFsaWdu ZWQKK1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wMScsIHRydWUp OworU0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3AyJywgdHJ1ZSk7 CitTRUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDMnLCB0cnVlKTsK K1NFTEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNCcsIHRydWUpOwor U0VMRUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A1JywgdHJ1ZSk7CitT RUxFQ1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDYnLCB0cnVlKTsKK1NF TEVDVCBwZ19nZXRfcG9saWN5X2RkbCgncmxzX3RibF8xJywgJ3Jsc19wNycsIHRydWUpOworU0VM RUNUIHBnX2dldF9wb2xpY3lfZGRsKCdybHNfdGJsXzEnLCAncmxzX3A4JywgdHJ1ZSk7CitTRUxF Q1QgcGdfZ2V0X3BvbGljeV9kZGwoJ3Jsc190YmxfMScsICdybHNfcDknLCB0cnVlKTsKKworLS0g Q2xlYW4gdXAgb2JqZWN0cyBjcmVhdGVkIGZvciB0ZXN0aW5nIHBnX2dldF9wb2xpY3lfZGRsIGZ1 bmN0aW9uLgorRFJPUCBQT0xJQ1kgcmxzX3AxIE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJs c19wMiBPTiBybHNfdGJsXzE7CitEUk9QIFBPTElDWSBybHNfcDMgT04gcmxzX3RibF8xOworRFJP UCBQT0xJQ1kgcmxzX3A0IE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wNSBPTiBybHNf dGJsXzE7CitEUk9QIFBPTElDWSBybHNfcDYgT04gcmxzX3RibF8xOworRFJPUCBQT0xJQ1kgcmxz X3A3IE9OIHJsc190YmxfMTsKK0RST1AgUE9MSUNZIHJsc19wOCBPTiBybHNfdGJsXzE7CitEUk9Q IFBPTElDWSBybHNfcDkgT04gcmxzX3RibF8xOworCiAtLQogLS0gQ2xlYW4gdXAgb2JqZWN0cwog LS0KLS0gCjIuNTEuMAoK --000000000000d375b90641461106--