Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1weDtb-004eTv-0z for pgsql-bugs@arkaria.postgresql.org; Mon, 29 Jun 2026 15:27:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1weDtZ-003z1M-2e for pgsql-bugs@arkaria.postgresql.org; Mon, 29 Jun 2026 15:27:37 +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.96) (envelope-from ) id 1weDtZ-003z16-1c for pgsql-bugs@lists.postgresql.org; Mon, 29 Jun 2026 15:27:37 +0000 Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1weDtX-00000000o0w-1JuQ for pgsql-bugs@lists.postgresql.org; Mon, 29 Jun 2026 15:27:37 +0000 Received: by mail-ed1-x531.google.com with SMTP id 4fb4d7f45d1cf-69532288224so6799267a12.0 for ; Mon, 29 Jun 2026 08:27:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782746854; cv=none; d=google.com; s=arc-20260327; b=EeOiulG7f2MJS+UewMhl+Mnuv81aF8OTI1sQx6RUwUVvUuU9HO/Bwoz3KDv1PakYQY 94Rcrqb1elYlAS1f0NxqU836V3PaVy4eF3wIEMiRjKyudYPN1zHqiZ/YWb6mINuQufW8 4URSgxnlwhxycRi5Ft0hmGXE6rABqG0j1gL2fKCqNNAOKGcL+tN9uDd91p7ED1zDd7W4 OjiOmguKp6n3amBfKzfRoTXUOx6fG6G6xcXM7NKounR7A2i1kOsHe04v6hRySlv408sG Nu/4iHPL2TVKB+UhR3aIfc7oqAbJpHE7/+Gi2K3oZXhIz1bH2X9DhLJW9QS+PjnkoeL3 ys7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=uh5cI8U48F4gtdMtXIB5zZramTVJqpu+YY9q1xe8mVA=; fh=OMiENI23u6qF6sGzZVM2QD7fR7tBr3wneGz8cIkyZ2A=; b=cmgKAHJjDKI7yy/QzUCfPdL+JoCyDQX1Vd1LbiJliLY24nW/my/7tsilaOWetxzlJO FWN9SKlxiKnabzKAjTNjz2Kl8EIqr8as/RpNp/DPjHpaJo4tTA1czhgSvFCuXj8Q7nl2 bKlqWPeQR0GpeYRJt8i7NGjm0GTcGaQy1GZ+JpeolFvwHXLmw2SCZMjp1Tff84oNgjEi 8j2860YiNjgC1mi1RhbkZgY9g90+yuzlsOyNzRIkIJTw2sqWJVWctHLlKQf6NWMimV9k MjnwHg5Djjk9AUIC+eFdJKvFPB/0yoo94FwryXkIhOWsXiUKhP+svItnUuFL/Urq1uPJ yd5w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782746854; x=1783351654; darn=lists.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=uh5cI8U48F4gtdMtXIB5zZramTVJqpu+YY9q1xe8mVA=; b=YGQjXavZlkQLASC8qRVp0HjxQUtL/aw9Aq4aKvBC9W3b5Z4wVJlpRUnElq53JRQYMG f2k1UMAqj4v3jc0Ipo5oeQx99wukJJYQcIvM8QWpIogT2p2zeoQDqn7ddF1nUEEFaiR8 62mkGz7LX0zVmP8oG0tlnn9yE7hpIzwdXFFDyLFu9/fUmCNsztudmCYmEVhnE/zAD/f7 2xkECIV+aF9dzMFtyeyAITft/ZokH5871Mx8JrFZPWouhG0zVnKIuk0XeTfShFdRCLeq wmKeUybcM/UOL01/Uv3Kgh6GoKe4n/JwWFf0zaZVclI4U2d9g/qxV5Doiqf5xqxxNn/4 n1vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782746854; x=1783351654; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=uh5cI8U48F4gtdMtXIB5zZramTVJqpu+YY9q1xe8mVA=; b=mMOheuu3FNnVHQnzTAYuergmNsQzyV+8iv1VJF0ANUz0gqoESpTU+1YbUyIvDn+LwB 4R7in18ZEVPaNmxCNufcr054TQ16vDpcgiSuU/e0JtJe1Q9wQC+yRm//vN27PIXa9FEd cub5e/Ynz0MzmlTfm3kKIRj6qs+xyZ3YRC2P//z3gqqEmiOQbs/VL1lxj7BhwLJOYzZr Q0/HQaBxcN7/tPTDdCTWoNCQGCtCxdFfGYli/pB0B/R47WLlx8U55aYphSlpV4C45gGj aP2FqL9MWMcFTNjobJQHr5luDzaAI4SufvJjtHYURl2aPqn0Vhl8G88JEx/GNUFqa5G+ hugQ== X-Forwarded-Encrypted: i=1; AHgh+RqgBOPGFufjyNzqfdrWO8KFhUbBqlAUUO1trEKJZDU6WunH0TYtFbmSfsk0ygbjRIMhpSpTlCSgAT+I@lists.postgresql.org X-Gm-Message-State: AOJu0Yw/4k4EqYXcvIHZD6G1hipZFONspizVGpNYM/KD9vjkKFOXg7Jk dV3+6sIsJaIa5kZd4KBLnWfpJXSn4H1q4iQpIezxRkPTNbv/iJDAlgmQhqDay3IxXuguoQyKew2 3KMQhZKhLKpNxOAHYDS/o8/zfDS1OZyjyaKO6 X-Gm-Gg: AfdE7cnGeUdK7mI5EMJFFDWsDF06DRdaCd0DKDyiihq7Rwa0MSMv4zMoVx36+yz2LI0 3WSEGlrCb5e0T2TqB4Y7sQ8jxS8D3DTCqGqAqnBKmdDY2Zm3tPin7kzfjbDTCha4csjtgL6eQm4 kZ6Jp6tOuVjhAl2MPYjPd+SWgL4ETZkEnpygMbpp/jR8bct+jI2nUkaacRyL53AGjYMxBEQEFq7 8Uye3LZVcIKJLwkr0+D2BWohiKnQDGIhuAiHCEiodNUcQqNVDzgf8iKWgRzyFIoKLLbBu+1vt5e 9EbcRccHRlDUvN4yd5yygFGv3P4stw== X-Received: by 2002:a05:6402:11ce:b0:698:3b7c:7e41 with SMTP id 4fb4d7f45d1cf-6987762ae96mr532592a12.33.1782746853488; Mon, 29 Jun 2026 08:27:33 -0700 (PDT) MIME-Version: 1.0 References: <1703741.1782745481@sss.pgh.pa.us> In-Reply-To: <1703741.1782745481@sss.pgh.pa.us> From: Bill Kim Date: Tue, 30 Jun 2026 00:27:21 +0900 X-Gm-Features: AVVi8CdVbyIIz5ib6LH_yNh88Y0LF3iuxOjYqjBKzEcvQ1OLmHb0LgNnNerdCNY Message-ID: Subject: Re: BUG #19524: NaN handling in btree_gist's float4/float8 opclasses To: Tom Lane Cc: Daniel Gustafsson , pgsql-bugs@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000edd8c00655661814" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000edd8c00655661814 Content-Type: multipart/alternative; boundary="000000000000edd8bf0655661812" --000000000000edd8bf0655661812 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable missed the file and please refer to attached. 2026=EB=85=84 6=EC=9B=94 30=EC=9D=BC (=ED=99=94) =EC=98=A4=EC=A0=84 12:04, = Tom Lane =EB=8B=98=EC=9D=B4 =EC=9E=91=EC=84=B1: > Bill Kim writes: > > I used an LLM (Claude Code) to help with the analysis and to draft th= e > > patch. I reviewed and tested the diff myself before sending. > > I don't see any actual patch attached? > > regards, tom lane > --000000000000edd8bf0655661812 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
missed the file and please refer to attached.


=
2026=EB=85=84 6=EC=9B=94 30=EC=9D=BC (=ED=99=94) =EC=98=A4=EC= =A0=84 12:04, Tom Lane <tgl@sss.pgh= .pa.us>=EB=8B=98=EC=9D=B4 =EC=9E=91=EC=84=B1:
Bill Kim <billkimjh@gmail.com> writes:
>=C2=A0 =C2=A0I used an LLM (Claude Code) to help with the analysis and = to draft the
>=C2=A0 =C2=A0patch. I reviewed and tested the diff myself before sendin= g.

I don't see any actual patch attached?

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 regards, tom lane
--000000000000edd8bf0655661812-- --000000000000edd8c00655661814 Content-Type: application/octet-stream; name="0001-btree_gist-respect-NaN-ordering-in-float4-float8-opc.patch" Content-Disposition: attachment; filename="0001-btree_gist-respect-NaN-ordering-in-float4-float8-opc.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqzdfl0v0 RnJvbSA4MGQ3NjBkMjY4YjBlMWE3MmQyYTEyNjBlYmM4MWMwODc2Njg3Mzg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaWxsIEtpbSA8YmlsbGtpbWpoQGdtYWlsLmNvbT4KRGF0ZTog U3VuLCAyOCBKdW4gMjAyNiAwMDoxOTozMCArMDkwMApTdWJqZWN0OiBbUEFUQ0hdIGJ0cmVlX2dp c3Q6IHJlc3BlY3QgTmFOIG9yZGVyaW5nIGluIGZsb2F0NC9mbG9hdDggb3BjbGFzc2VzCgpUaGUg ZmxvYXQ0IGFuZCBmbG9hdDggYnRyZWVfZ2lzdCBvcGNsYXNzZXMgY29tcGFyZWQga2V5cyB3aXRo IHJhdyBDCm9wZXJhdG9ycyAoPT0sIDwsID4pLiAgSUVFRSA3NTQgbWFrZXMgZXZlcnkgY29tcGFy aXNvbiBpbnZvbHZpbmcgTmFOCmZhbHNlLCBzbyBHaVNUIGRpc2FncmVlZCB3aXRoIHRoZSByZWd1 bGFyIGJ0cmVlIG9wY2xhc3MsIHdoaWNoIHVzZXMKZmxvYXRbNHw4XV9jbXBfaW50ZXJuYWwoKSAo YWxsIE5hTnMgZXF1YWwsIE5hTiBzb3J0cyBhZnRlciBldmVyeQpub24tTmFOIHZhbHVlKS4KClRo ZSBkaXNhZ3JlZW1lbnQgd2FzIHJlYWNoYWJsZSBmcm9tIFNRTDoKCiogYW4gaW5kZXggc2NhbiBv biBhIEdpU1QgaW5kZXggb3ZlciBhIGZsb2F0IGNvbHVtbiByZXR1cm5lZCBubyByb3dzCiAgZm9y IGBXSEVSRSBhID0gJ05hTidgLCB3aGlsZSBhIHNlcXVlbnRpYWwgc2NhbiByZXR1cm5lZCB0aGUg TmFOIHJvdzsKKiBgRVhDTFVERSBVU0lORyBnaXN0IChhIFdJVEggPSlgIGFjY2VwdGVkIHR3byBy b3dzIHdob3NlIGtleSB3YXMgTmFOLAogIGJlY2F1c2UgZ2J0X2Zsb2F0OGVxKE5hTiwgTmFOKSB3 YXMgZmFsc2U7CiogYW4gUkxTIHByZWRpY2F0ZSBgVVNJTkcgKGEgIT0gJ05hTicpYCBsZWFrZWQg TmFOIHJvd3Mgb24gaW5kZXggc2Nhbi4KClJlcGxhY2UgdGhlIGZpdmUgYm9vbGVhbiBjb21wYXJh dG9ycyB3aXRoIGZsb2F0WzR8OF1fe2d0LGdlLGVxLGxlLGx0fQpmcm9tIHV0aWxzL2Zsb2F0Lmgs IGFuZCB0aGUgcGlja3NwbGl0IGNvbXBhcmF0b3Igd2l0aApmbG9hdFs0fDhdX2NtcF9pbnRlcm5h bCgpLiAgTm8gb24tZGlzayBmb3JtYXQgY2hhbmdlLgoKQWRkIHJlZ3Jlc3Npb24gY292ZXJhZ2Ug Zm9yIHRoZSB0aHJlZSBzY2VuYXJpb3MgYWJvdmUuCgpSZXBvcnRlZC1ieTogTWFuIFplbmcgPHpl bmdtYW5AaGFsb2RidGVjaC5jb20+ClJlcG9ydGVkLWJ5OiBZdWVsaW4gV2FuZyA8MzAyMDAwMTI1 MUB0anUuZWR1LmNuPgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNz YWdlLWlkLzE5NTAxLTNiZmYzYmJjOTdmMWU3YzklNDBwb3N0Z3Jlc3FsLm9yZwpEaXNjdXNzaW9u OiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzE5NTI0LTk1NTlkMzAyYzg0 NTU2NjQlNDBwb3N0Z3Jlc3FsLm9yZwotLS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9h dDQuYyAgICAgIHwgMzEgKysrKysrKysrLS0tLS0tLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2Zsb2F0OC5jICAgICAgfCAzMSArKysrKysrKystLS0tLS0tCiBjb250cmliL2J0cmVlX2dpc3Qv ZXhwZWN0ZWQvZmxvYXQ0Lm91dCB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBjb250 cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvZmxvYXQ4Lm91dCB8IDUxICsrKysrKysrKysrKysrKysr KysrKysrKysrCiBjb250cmliL2J0cmVlX2dpc3Qvc3FsL2Zsb2F0NC5zcWwgICAgICB8IDI5ICsr KysrKysrKysrKysrKwogY29udHJpYi9idHJlZV9naXN0L3NxbC9mbG9hdDguc3FsICAgICAgfCAy OSArKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTk2IGluc2VydGlvbnMoKyksIDI2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9h dDQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDQuYwppbmRleCBjMDc2OTE4Li4w ODNjNjE2IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ0LmMKKysr IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0NC5jCkBAIC0yNiwzMCArMjYsMzggQEAg UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZmxvYXQ0X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5G T19WMShnYnRfZmxvYXQ0X3NhbWUpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZmxvYXQ0X3Nv cnRzdXBwb3J0KTsKIAorLyoKKyAqIFVzZSB0aGUgTmFOLWF3YXJlIGNvbXBhcmF0b3JzIGZyb20g dXRpbHMvZmxvYXQuaC4gIFJhdyBDIG9wZXJhdG9ycyB0cmVhdAorICogTmFOIGFzIHVub3JkZXJl ZCwgd2hpY2ggbWFrZXMgdGhlIEdpU1QgY29uc2lzdGVudCAvIHBpY2tzcGxpdCBsb2dpYworICog ZGlzYWdyZWUgd2l0aCB0aGUgcmVndWxhciBidHJlZSBvcGNsYXNzOiBHaVNUIHdvdWxkIHRoZW4g bWlzcyBOYU4gcm93cyBvbgorICogaW5kZXggc2NhbnMsIGxldCBFWENMVURFIGNvbnN0cmFpbnRz IGFjY2VwdCBkdXBsaWNhdGUgTmFOcywgZXRjLiAgVGhlCisgKiBoZWxwZXJzIGJlbG93IG1hdGNo IGJ0cmVlJ3MgdG90YWwgb3JkZXIgKGFsbCBOYU5zIGVxdWFsLCBOYU4gc29ydHMgYWZ0ZXIKKyAq IGV2ZXJ5IG5vbi1OYU4gdmFsdWUpLgorICovCiBzdGF0aWMgYm9vbAogZ2J0X2Zsb2F0NGd0KGNv bnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiB7Ci0JcmV0dXJu ICgqKChjb25zdCBmbG9hdDQgKikgYSkgPiAqKChjb25zdCBmbG9hdDQgKikgYikpOworCXJldHVy biBmbG9hdDRfZ3QoKigoY29uc3QgZmxvYXQ0ICopIGEpLCAqKChjb25zdCBmbG9hdDQgKikgYikp OwogfQogc3RhdGljIGJvb2wKIGdidF9mbG9hdDRnZShjb25zdCB2b2lkICphLCBjb25zdCB2b2lk ICpiLCBGbWdySW5mbyAqZmxpbmZvKQogewotCXJldHVybiAoKigoY29uc3QgZmxvYXQ0ICopIGEp ID49ICooKGNvbnN0IGZsb2F0NCAqKSBiKSk7CisJcmV0dXJuIGZsb2F0NF9nZSgqKChjb25zdCBm bG9hdDQgKikgYSksICooKGNvbnN0IGZsb2F0NCAqKSBiKSk7CiB9CiBzdGF0aWMgYm9vbAogZ2J0 X2Zsb2F0NGVxKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8p CiB7Ci0JcmV0dXJuICgqKChjb25zdCBmbG9hdDQgKikgYSkgPT0gKigoY29uc3QgZmxvYXQ0ICop IGIpKTsKKwlyZXR1cm4gZmxvYXQ0X2VxKCooKGNvbnN0IGZsb2F0NCAqKSBhKSwgKigoY29uc3Qg ZmxvYXQ0ICopIGIpKTsKIH0KIHN0YXRpYyBib29sCiBnYnRfZmxvYXQ0bGUoY29uc3Qgdm9pZCAq YSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKLQlyZXR1cm4gKCooKGNvbnN0 IGZsb2F0NCAqKSBhKSA8PSAqKChjb25zdCBmbG9hdDQgKikgYikpOworCXJldHVybiBmbG9hdDRf bGUoKigoY29uc3QgZmxvYXQ0ICopIGEpLCAqKChjb25zdCBmbG9hdDQgKikgYikpOwogfQogc3Rh dGljIGJvb2wKIGdidF9mbG9hdDRsdChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdy SW5mbyAqZmxpbmZvKQogewotCXJldHVybiAoKigoY29uc3QgZmxvYXQ0ICopIGEpIDwgKigoY29u c3QgZmxvYXQ0ICopIGIpKTsKKwlyZXR1cm4gZmxvYXQ0X2x0KCooKGNvbnN0IGZsb2F0NCAqKSBh KSwgKigoY29uc3QgZmxvYXQ0ICopIGIpKTsKIH0KIAogc3RhdGljIGludApAQCAtNTcsMTYgKzY1 LDEzIEBAIGdidF9mbG9hdDRrZXlfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZt Z3JJbmZvICpmbGluZm8pCiB7CiAJZmxvYXQ0S0VZICAqaWEgPSAoZmxvYXQ0S0VZICopICgoKGNv bnN0IE5zcnQgKikgYSktPnQpOwogCWZsb2F0NEtFWSAgKmliID0gKGZsb2F0NEtFWSAqKSAoKChj b25zdCBOc3J0ICopIGIpLT50KTsKKwlpbnQJCQlyZXM7CiAKLQlpZiAoaWEtPmxvd2VyID09IGli LT5sb3dlcikKLQl7Ci0JCWlmIChpYS0+dXBwZXIgPT0gaWItPnVwcGVyKQotCQkJcmV0dXJuIDA7 Ci0KLQkJcmV0dXJuIChpYS0+dXBwZXIgPiBpYi0+dXBwZXIpID8gMSA6IC0xOwotCX0KKwlyZXMg PSBmbG9hdDRfY21wX2ludGVybmFsKGlhLT5sb3dlciwgaWItPmxvd2VyKTsKKwlpZiAocmVzICE9 IDApCisJCXJldHVybiByZXM7CiAKLQlyZXR1cm4gKGlhLT5sb3dlciA+IGliLT5sb3dlcikgPyAx IDogLTE7CisJcmV0dXJuIGZsb2F0NF9jbXBfaW50ZXJuYWwoaWEtPnVwcGVyLCBpYi0+dXBwZXIp OwogfQogCiBzdGF0aWMgZmxvYXQ4CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfZmxvYXQ4LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMKaW5kZXggZDcz ODZlOC4uNWM4MDk0OCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0 OC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDguYwpAQCAtMjcsMzAgKzI3 LDM4IEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Zsb2F0OF9zYW1lKTsKIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X2Zsb2F0OF9zb3J0c3VwcG9ydCk7CiAKIAorLyoKKyAqIFVzZSB0aGUgTmFO LWF3YXJlIGNvbXBhcmF0b3JzIGZyb20gdXRpbHMvZmxvYXQuaC4gIFJhdyBDIG9wZXJhdG9ycyB0 cmVhdAorICogTmFOIGFzIHVub3JkZXJlZCwgd2hpY2ggbWFrZXMgdGhlIEdpU1QgY29uc2lzdGVu dCAvIHBpY2tzcGxpdCBsb2dpYworICogZGlzYWdyZWUgd2l0aCB0aGUgcmVndWxhciBidHJlZSBv cGNsYXNzOiBHaVNUIHdvdWxkIHRoZW4gbWlzcyBOYU4gcm93cyBvbgorICogaW5kZXggc2NhbnMs IGxldCBFWENMVURFIGNvbnN0cmFpbnRzIGFjY2VwdCBkdXBsaWNhdGUgTmFOcywgZXRjLiAgVGhl CisgKiBoZWxwZXJzIGJlbG93IG1hdGNoIGJ0cmVlJ3MgdG90YWwgb3JkZXIgKGFsbCBOYU5zIGVx dWFsLCBOYU4gc29ydHMgYWZ0ZXIKKyAqIGV2ZXJ5IG5vbi1OYU4gdmFsdWUpLgorICovCiBzdGF0 aWMgYm9vbAogZ2J0X2Zsb2F0OGd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJ bmZvICpmbGluZm8pCiB7Ci0JcmV0dXJuICgqKChjb25zdCBmbG9hdDggKikgYSkgPiAqKChjb25z dCBmbG9hdDggKikgYikpOworCXJldHVybiBmbG9hdDhfZ3QoKigoY29uc3QgZmxvYXQ4ICopIGEp LCAqKChjb25zdCBmbG9hdDggKikgYikpOwogfQogc3RhdGljIGJvb2wKIGdidF9mbG9hdDhnZShj b25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQogewotCXJldHVy biAoKigoY29uc3QgZmxvYXQ4ICopIGEpID49ICooKGNvbnN0IGZsb2F0OCAqKSBiKSk7CisJcmV0 dXJuIGZsb2F0OF9nZSgqKChjb25zdCBmbG9hdDggKikgYSksICooKGNvbnN0IGZsb2F0OCAqKSBi KSk7CiB9CiBzdGF0aWMgYm9vbAogZ2J0X2Zsb2F0OGVxKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZv aWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiB7Ci0JcmV0dXJuICgqKChjb25zdCBmbG9hdDggKikg YSkgPT0gKigoY29uc3QgZmxvYXQ4ICopIGIpKTsKKwlyZXR1cm4gZmxvYXQ4X2VxKCooKGNvbnN0 IGZsb2F0OCAqKSBhKSwgKigoY29uc3QgZmxvYXQ4ICopIGIpKTsKIH0KIHN0YXRpYyBib29sCiBn YnRfZmxvYXQ4bGUoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5m bykKIHsKLQlyZXR1cm4gKCooKGNvbnN0IGZsb2F0OCAqKSBhKSA8PSAqKChjb25zdCBmbG9hdDgg KikgYikpOworCXJldHVybiBmbG9hdDhfbGUoKigoY29uc3QgZmxvYXQ4ICopIGEpLCAqKChjb25z dCBmbG9hdDggKikgYikpOwogfQogc3RhdGljIGJvb2wKIGdidF9mbG9hdDhsdChjb25zdCB2b2lk ICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQogewotCXJldHVybiAoKigoY29u c3QgZmxvYXQ4ICopIGEpIDwgKigoY29uc3QgZmxvYXQ4ICopIGIpKTsKKwlyZXR1cm4gZmxvYXQ4 X2x0KCooKGNvbnN0IGZsb2F0OCAqKSBhKSwgKigoY29uc3QgZmxvYXQ4ICopIGIpKTsKIH0KIAog c3RhdGljIGludApAQCAtNTgsMTYgKzY2LDEzIEBAIGdidF9mbG9hdDhrZXlfY21wKGNvbnN0IHZv aWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiB7CiAJZmxvYXQ4S0VZICAq aWEgPSAoZmxvYXQ4S0VZICopICgoKGNvbnN0IE5zcnQgKikgYSktPnQpOwogCWZsb2F0OEtFWSAg KmliID0gKGZsb2F0OEtFWSAqKSAoKChjb25zdCBOc3J0ICopIGIpLT50KTsKKwlpbnQJCQlyZXM7 CiAKLQlpZiAoaWEtPmxvd2VyID09IGliLT5sb3dlcikKLQl7Ci0JCWlmIChpYS0+dXBwZXIgPT0g aWItPnVwcGVyKQotCQkJcmV0dXJuIDA7Ci0KLQkJcmV0dXJuIChpYS0+dXBwZXIgPiBpYi0+dXBw ZXIpID8gMSA6IC0xOwotCX0KKwlyZXMgPSBmbG9hdDhfY21wX2ludGVybmFsKGlhLT5sb3dlciwg aWItPmxvd2VyKTsKKwlpZiAocmVzICE9IDApCisJCXJldHVybiByZXM7CiAKLQlyZXR1cm4gKGlh LT5sb3dlciA+IGliLT5sb3dlcikgPyAxIDogLTE7CisJcmV0dXJuIGZsb2F0OF9jbXBfaW50ZXJu YWwoaWEtPnVwcGVyLCBpYi0+dXBwZXIpOwogfQogCiBzdGF0aWMgZmxvYXQ4CmRpZmYgLS1naXQg YS9jb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvZmxvYXQ0Lm91dCBiL2NvbnRyaWIvYnRyZWVf Z2lzdC9leHBlY3RlZC9mbG9hdDQub3V0CmluZGV4IGRmZTczMjAuLjMxMDljYTMgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC9mbG9hdDQub3V0CisrKyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9leHBlY3RlZC9mbG9hdDQub3V0CkBAIC04OSwzICs4OSw1NCBAQCBTRUxFQ1Qg YSwgYSA8LT4gJy0xNzkuMCcgRlJPTSBmbG9hdDR0bXAgT1JERVIgQlkgYSA8LT4gJy0xNzkuMCcg TElNSVQgMzsKICAtMTU4LjE3NzQxIHwgMjAuODIyNTg2CiAoMyByb3dzKQogCistLSBOYU4gaGFu ZGxpbmc6IEdpU1Qgc2hvdWxkIGFncmVlIHdpdGggdGhlIHJlZ3VsYXIgYnRyZWUgb3BjbGFzcwor LS0gKE5hTiBlcXVhbHMgTmFOLCBOYU4gc29ydHMgYWZ0ZXIgYW55IG5vbi1OYU4gdmFsdWUpLgor Q1JFQVRFIFRBQkxFIGZsb2F0NG5hbiAoYSBmbG9hdDQpOworSU5TRVJUIElOVE8gZmxvYXQ0bmFu IFZBTFVFUyAoMS4wKSwgKDIuMCksICgnTmFOJyksICgzLjApOworQ1JFQVRFIElOREVYIGZsb2F0 NG5hbl9pZHggT04gZmxvYXQ0bmFuIFVTSU5HIGdpc3QgKGEpOworU0VUIGVuYWJsZV9zZXFzY2Fu ID0gb247CitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2Nh biA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGZsb2F0NG5hbiBXSEVSRSBhID0gJ05hTic6 OmZsb2F0NDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSBmbG9hdDRuYW4gV0hFUkUgYSA+IDEuMDo6ZmxvYXQ0OworIGNvdW50IAorLS0t LS0tLQorICAgICAzCisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBl bmFibGVfaW5kZXhzY2FuID0gb247CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvbjsKK1NFTEVD VCBjb3VudCgqKSBGUk9NIGZsb2F0NG5hbiBXSEVSRSBhID0gJ05hTic6OmZsb2F0NDsKKyBjb3Vu dCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBmbG9h dDRuYW4gV0hFUkUgYSA+IDEuMDo6ZmxvYXQ0OworIGNvdW50IAorLS0tLS0tLQorICAgICAzCiso MSByb3cpCisKKy0tIEVYQ0xVREUgY29uc3RyYWludCBtdXN0IGJsb2NrIGEgZHVwbGljYXRlIE5h Tiwgc2FtZSBhcyBpdCBkb2VzIGZvciBmaW5pdGUKKy0tIHZhbHVlcy4KK0NSRUFURSBUQUJMRSBm bG9hdDRleGNsIChhIGZsb2F0NCwgRVhDTFVERSBVU0lORyBnaXN0IChhIFdJVEggPSkpOworSU5T RVJUIElOVE8gZmxvYXQ0ZXhjbCBWQUxVRVMgKCdOYU4nOjpmbG9hdDQpOworSU5TRVJUIElOVE8g ZmxvYXQ0ZXhjbCBWQUxVRVMgKCdOYU4nOjpmbG9hdDQpOyAgLS0gZXhwZWN0OiB2aW9sYXRlcyBF WENMVURFCitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24g Y29uc3RyYWludCAiZmxvYXQ0ZXhjbF9hX2V4Y2wiCitERVRBSUw6ICBLZXkgKGEpPShOYU4pIGNv bmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoYSk9KE5hTikuCitTRUxFQ1QgY291bnQoKikgRlJP TSBmbG9hdDRleGNsOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9i aXRtYXBzY2FuOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL2Zsb2F0 OC5vdXQgYi9jb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvZmxvYXQ4Lm91dAppbmRleCBlYmQw ZWYzLi4wMmE2MTZlIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvZmxv YXQ4Lm91dAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvZmxvYXQ4Lm91dApAQCAt ODksMyArODksNTQgQEAgU0VMRUNUIGEsIGEgPC0+ICctMTg5MC4wJyBGUk9NIGZsb2F0OHRtcCBP UkRFUiBCWSBhIDwtPiAnLTE4OTAuMCcgTElNSVQgMzsKICAgLTE3NjkuNzM2MzQgfCAxMjAuMjYz NjYwMDAwMDAwMDcKICgzIHJvd3MpCiAKKy0tIE5hTiBoYW5kbGluZzogR2lTVCBzaG91bGQgYWdy ZWUgd2l0aCB0aGUgcmVndWxhciBidHJlZSBvcGNsYXNzCistLSAoTmFOIGVxdWFscyBOYU4sIE5h TiBzb3J0cyBhZnRlciBhbnkgbm9uLU5hTiB2YWx1ZSkuCitDUkVBVEUgVEFCTEUgZmxvYXQ4bmFu IChhIGZsb2F0OCk7CitJTlNFUlQgSU5UTyBmbG9hdDhuYW4gVkFMVUVTICgxLjApLCAoMi4wKSwg KCdOYU4nKSwgKDMuMCk7CitDUkVBVEUgSU5ERVggZmxvYXQ4bmFuX2lkeCBPTiBmbG9hdDhuYW4g VVNJTkcgZ2lzdCAoYSk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvbjsKK1NFVCBlbmFibGVfaW5k ZXhzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50 KCopIEZST00gZmxvYXQ4bmFuIFdIRVJFIGEgPSAnTmFOJzo6ZmxvYXQ4OworIGNvdW50IAorLS0t LS0tLQorICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGZsb2F0OG5hbiBX SEVSRSBhID4gMS4wOjpmbG9hdDg7CisgY291bnQgCistLS0tLS0tCisgICAgIDMKKygxIHJvdykK KworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvbjsK K1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9uOworU0VMRUNUIGNvdW50KCopIEZST00gZmxvYXQ4 bmFuIFdIRVJFIGEgPSAnTmFOJzo6ZmxvYXQ4OworIGNvdW50IAorLS0tLS0tLQorICAgICAxCiso MSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGZsb2F0OG5hbiBXSEVSRSBhID4gMS4wOjpm bG9hdDg7CisgY291bnQgCistLS0tLS0tCisgICAgIDMKKygxIHJvdykKKworLS0gRVhDTFVERSBj b25zdHJhaW50IG11c3QgYmxvY2sgYSBkdXBsaWNhdGUgTmFOLCBzYW1lIGFzIGl0IGRvZXMgZm9y IGZpbml0ZQorLS0gdmFsdWVzLgorQ1JFQVRFIFRBQkxFIGZsb2F0OGV4Y2wgKGEgZmxvYXQ4LCBF WENMVURFIFVTSU5HIGdpc3QgKGEgV0lUSCA9KSk7CitJTlNFUlQgSU5UTyBmbG9hdDhleGNsIFZB TFVFUyAoJ05hTic6OmZsb2F0OCk7CitJTlNFUlQgSU5UTyBmbG9hdDhleGNsIFZBTFVFUyAoJ05h Tic6OmZsb2F0OCk7ICAtLSBleHBlY3Q6IHZpb2xhdGVzIEVYQ0xVREUKK0VSUk9SOiAgY29uZmxp Y3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJmbG9hdDhleGNs X2FfZXhjbCIKK0RFVEFJTDogIEtleSAoYSk9KE5hTikgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcg a2V5IChhKT0oTmFOKS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIGZsb2F0OGV4Y2w7CisgY291bnQg CistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNF VCBlbmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CmRpZmYgLS1naXQg YS9jb250cmliL2J0cmVlX2dpc3Qvc3FsL2Zsb2F0NC5zcWwgYi9jb250cmliL2J0cmVlX2dpc3Qv c3FsL2Zsb2F0NC5zcWwKaW5kZXggM2RhMWNlOS4uN2M5NWU3ZiAxMDA2NDQKLS0tIGEvY29udHJp Yi9idHJlZV9naXN0L3NxbC9mbG9hdDQuc3FsCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9zcWwv ZmxvYXQ0LnNxbApAQCAtMzUsMyArMzUsMzIgQEAgU0VMRUNUIGNvdW50KCopIEZST00gZmxvYXQ0 dG1wIFdIRVJFIGEgPiAgLTE3OS4wOjpmbG9hdDQ7CiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxF Q1QgYSwgYSA8LT4gJy0xNzkuMCcgRlJPTSBmbG9hdDR0bXAgT1JERVIgQlkgYSA8LT4gJy0xNzku MCcgTElNSVQgMzsKIFNFTEVDVCBhLCBhIDwtPiAnLTE3OS4wJyBGUk9NIGZsb2F0NHRtcCBPUkRF UiBCWSBhIDwtPiAnLTE3OS4wJyBMSU1JVCAzOworCistLSBOYU4gaGFuZGxpbmc6IEdpU1Qgc2hv dWxkIGFncmVlIHdpdGggdGhlIHJlZ3VsYXIgYnRyZWUgb3BjbGFzcworLS0gKE5hTiBlcXVhbHMg TmFOLCBOYU4gc29ydHMgYWZ0ZXIgYW55IG5vbi1OYU4gdmFsdWUpLgorQ1JFQVRFIFRBQkxFIGZs b2F0NG5hbiAoYSBmbG9hdDQpOworSU5TRVJUIElOVE8gZmxvYXQ0bmFuIFZBTFVFUyAoMS4wKSwg KDIuMCksICgnTmFOJyksICgzLjApOworQ1JFQVRFIElOREVYIGZsb2F0NG5hbl9pZHggT04gZmxv YXQ0bmFuIFVTSU5HIGdpc3QgKGEpOworCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvbjsKK1NFVCBl bmFibGVfaW5kZXhzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VM RUNUIGNvdW50KCopIEZST00gZmxvYXQ0bmFuIFdIRVJFIGEgPSAnTmFOJzo6ZmxvYXQ0OworU0VM RUNUIGNvdW50KCopIEZST00gZmxvYXQ0bmFuIFdIRVJFIGEgPiAxLjA6OmZsb2F0NDsKKworU0VU IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvbjsKK1NFVCBl bmFibGVfYml0bWFwc2NhbiA9IG9uOworU0VMRUNUIGNvdW50KCopIEZST00gZmxvYXQ0bmFuIFdI RVJFIGEgPSAnTmFOJzo6ZmxvYXQ0OworU0VMRUNUIGNvdW50KCopIEZST00gZmxvYXQ0bmFuIFdI RVJFIGEgPiAxLjA6OmZsb2F0NDsKKworLS0gRVhDTFVERSBjb25zdHJhaW50IG11c3QgYmxvY2sg YSBkdXBsaWNhdGUgTmFOLCBzYW1lIGFzIGl0IGRvZXMgZm9yIGZpbml0ZQorLS0gdmFsdWVzLgor Q1JFQVRFIFRBQkxFIGZsb2F0NGV4Y2wgKGEgZmxvYXQ0LCBFWENMVURFIFVTSU5HIGdpc3QgKGEg V0lUSCA9KSk7CitJTlNFUlQgSU5UTyBmbG9hdDRleGNsIFZBTFVFUyAoJ05hTic6OmZsb2F0NCk7 CitJTlNFUlQgSU5UTyBmbG9hdDRleGNsIFZBTFVFUyAoJ05hTic6OmZsb2F0NCk7ICAtLSBleHBl Y3Q6IHZpb2xhdGVzIEVYQ0xVREUKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGZsb2F0NGV4Y2w7CisK K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVu YWJsZV9iaXRtYXBzY2FuOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L3NxbC9mbG9h dDguc3FsIGIvY29udHJpYi9idHJlZV9naXN0L3NxbC9mbG9hdDguc3FsCmluZGV4IGUxZTgxOWIu LmVlZWQzNmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvZmxvYXQ4LnNxbAor KysgYi9jb250cmliL2J0cmVlX2dpc3Qvc3FsL2Zsb2F0OC5zcWwKQEAgLTM1LDMgKzM1LDMyIEBA IFNFTEVDVCBjb3VudCgqKSBGUk9NIGZsb2F0OHRtcCBXSEVSRSBhID4gIC0xODkwLjA6OmZsb2F0 ODsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBhLCBhIDwtPiAnLTE4OTAuMCcgRlJPTSBm bG9hdDh0bXAgT1JERVIgQlkgYSA8LT4gJy0xODkwLjAnIExJTUlUIDM7CiBTRUxFQ1QgYSwgYSA8 LT4gJy0xODkwLjAnIEZST00gZmxvYXQ4dG1wIE9SREVSIEJZIGEgPC0+ICctMTg5MC4wJyBMSU1J VCAzOworCistLSBOYU4gaGFuZGxpbmc6IEdpU1Qgc2hvdWxkIGFncmVlIHdpdGggdGhlIHJlZ3Vs YXIgYnRyZWUgb3BjbGFzcworLS0gKE5hTiBlcXVhbHMgTmFOLCBOYU4gc29ydHMgYWZ0ZXIgYW55 IG5vbi1OYU4gdmFsdWUpLgorQ1JFQVRFIFRBQkxFIGZsb2F0OG5hbiAoYSBmbG9hdDgpOworSU5T RVJUIElOVE8gZmxvYXQ4bmFuIFZBTFVFUyAoMS4wKSwgKDIuMCksICgnTmFOJyksICgzLjApOwor Q1JFQVRFIElOREVYIGZsb2F0OG5hbl9pZHggT04gZmxvYXQ4bmFuIFVTSU5HIGdpc3QgKGEpOwor CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvbjsKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOwor U0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEZST00gZmxvYXQ4 bmFuIFdIRVJFIGEgPSAnTmFOJzo6ZmxvYXQ4OworU0VMRUNUIGNvdW50KCopIEZST00gZmxvYXQ4 bmFuIFdIRVJFIGEgPiAxLjA6OmZsb2F0ODsKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor U0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvbjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9uOwor U0VMRUNUIGNvdW50KCopIEZST00gZmxvYXQ4bmFuIFdIRVJFIGEgPSAnTmFOJzo6ZmxvYXQ4Owor U0VMRUNUIGNvdW50KCopIEZST00gZmxvYXQ4bmFuIFdIRVJFIGEgPiAxLjA6OmZsb2F0ODsKKwor LS0gRVhDTFVERSBjb25zdHJhaW50IG11c3QgYmxvY2sgYSBkdXBsaWNhdGUgTmFOLCBzYW1lIGFz IGl0IGRvZXMgZm9yIGZpbml0ZQorLS0gdmFsdWVzLgorQ1JFQVRFIFRBQkxFIGZsb2F0OGV4Y2wg KGEgZmxvYXQ4LCBFWENMVURFIFVTSU5HIGdpc3QgKGEgV0lUSCA9KSk7CitJTlNFUlQgSU5UTyBm bG9hdDhleGNsIFZBTFVFUyAoJ05hTic6OmZsb2F0OCk7CitJTlNFUlQgSU5UTyBmbG9hdDhleGNs IFZBTFVFUyAoJ05hTic6OmZsb2F0OCk7ICAtLSBleHBlY3Q6IHZpb2xhdGVzIEVYQ0xVREUKK1NF TEVDVCBjb3VudCgqKSBGUk9NIGZsb2F0OGV4Y2w7CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwor UkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOwotLSAKMi41 Mi4wCgo= --000000000000edd8c00655661814--