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 1w737v-004uU7-1V for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 03:17:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w737t-000mZW-2I for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 03:17:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w737t-000mZM-0Y for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 03:17:17 +0000 Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w737r-00000001juE-3CrZ for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 03:17:16 +0000 Received: by mail-oi1-x231.google.com with SMTP id 5614622812f47-46808125c65so1329637b6e.2 for ; Sun, 29 Mar 2026 20:17:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774840635; cv=none; d=google.com; s=arc-20240605; b=UHtjnNl4eMvikulAIh4H+laKtj458zM23Y+dFLHSI64VHeSOfhIHtPSIDP+IWt0xog 9/aoZj4Msn4tPrUpvc6De+idTWhRXtmKejkS07w62Jj6PnuCR2KBmExz/XGZmml7tBj2 TV3nud/R+Prl5suWqHE7cIxjkxVxhIrvvqW3kEXpT3PM7SK8Nh9ZUVA5gB97s3ulzNOJ GhH8mtZfrpKqGqy1+HcYJssptRCSW1LAK2dhjH1QALbJOgPOp5gQE2ujranu/LFS1HKr tlowN2yEc0mesuzJk2QBj5hrQ6dPigquddJqLI6rasPgjf2pu/1xWlaqytjDG4qyu/9U QRxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=ZZAg6YlYo6fU0O1PqQUJaR5IsiZH2dgMjppJ/d0kIK8=; fh=WV1XUEu1NZ/mXdGfz/0M5O9SxV2lbFsrBHZKnDTQvtw=; b=M7vVvm3+6eQB0BIb/AqwzUQpKHImH7Ma4hz1A9NcysVH7iJF3x1yv54gBbF4xd0lnU DcFnz/O2kjXWsUkjCUqdTinUeK+0dgmn2qK+WCEq/3zARQYxBv0MytT6UCWnDV4e40aw vjyBkTPoHxxWj2dcjJMUePvE3NDkqY7S6xawnFLJ52GpT0Tf3BxSq8OG+VUpFfz0n2LS uy5Au/Hf6/skjKjZmlbS9YReDJwUKBsp0VWNVk9fOAmbiW0N/EEhdcsw/StkDk6EOwkm UwDRKoFi8G/TF5rG8M00HVWKCHarhVPbu2F3pLgtekQaWdAB3hM6gnBlqj3heuhsG9a8 /kNg==; 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=1774840635; x=1775445435; 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=ZZAg6YlYo6fU0O1PqQUJaR5IsiZH2dgMjppJ/d0kIK8=; b=VvktMWShm2AmsHu/NRFtULUnKvJSQdHEegLdj9+mddXLKx8e/7IOK/VvdfhANKJDf3 waVF1/XY6IEHKhT1mq8FYh1ueeShATurqtnMsXG8rUSDBywh6lpJ0r8TA/QsFh/xwjCu NVcvf6RbHcPlnX52fz6N+h1bdEOiU4oFk1lvR9qOqRjgKdKhrBIiTKGKIeo5ZmDdf6gu drtxH4TWEvpRhT2Okd0uHsMfFidu1enRDh6mGqIEk8Z91VRG2bpXBSwUNQU6sSVENsJh uZ/wdMvGzdKDBo4HWVr4EHUl0/ixjX3XaCbkL8V+Nnnlbevkbvh51GJ6r8fFBeVcYaj6 JMJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774840635; x=1775445435; 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=ZZAg6YlYo6fU0O1PqQUJaR5IsiZH2dgMjppJ/d0kIK8=; b=qqprsGbYW4T0AXZrhzIhzPZNBq4nGnuqquxo6x0C+gWBOMT+fulLx5QZVeLPjJm7LC 8WvahnIDJI0LTsmfGEmPyY2EO0rCDlIDYCK3LgltHdi8d+ue2tLul7xARxRszhwKOe8k wj4ufwFlLXuzMtXLn8iekyI+kyAVfZjqM/nQtYSYDt/ni1PHgPeTBdZeGf45ZPr7InZz DrteCnaAizR+Z8Rni80gMO6MI5+hXNZQxKhHwAtXJ5/4jwGFhSiqcb9gU+4XBBavGOQ1 D4lf6t2gidcwuLJYRxyN/TrAuFzSMEOcL67wKcf56adjhspsYgp4XWjA84neeS3eHrJw hqJA== X-Forwarded-Encrypted: i=1; AJvYcCVeYGwpBWDosY6yJZGmpPv8rmaBmB7dNH5R5xEh+OeFKigWvKMHreOZdiFarTLw3VgOGqRM9MIUUTeaH/kg@lists.postgresql.org X-Gm-Message-State: AOJu0Yy9aDOraNr+pE8sxCBkBbW+8mzefwzkH4mXUSGZN08WRy5l85qi bbdwTCRhGtiS0jh7MMYA30tIV5Nf5LHicCal1ORscIDSaw7+n+7boJn9KI9mnS+LlViDsd8OSVI pguDn0DloLYyRVRNCyRxkbirRcAe0fLg= X-Gm-Gg: ATEYQzyzNu3ZgEim3Dia+axILCbZ9lioFq9jVqEXhjb8FMJ6k+W3n2jmzHgQn3t9ip0 eRL2r0fgJq0INjFXzSaO68sORxeNr4M6gNCpSqZPVSK1knDvexV/pct4RhZUKy9ErsmgK5Zhs2A DOfa1aweUk0a7Bm8GFrYzin1b9btmxR90FkFSSj1e4kxU7pSg7IDCX1/7UyXH8iL0VffhNQ5RQh 6QZJcN6oyPRhDhbm2KG+4RiI0B1HB5rKaBD+K6lPm8bfxxocFi0Izl4i9dxYO+LCBqRQ7VySNpY 31QRNzvzDg== X-Received: by 2002:a05:6808:4f68:b0:467:a59:a678 with SMTP id 5614622812f47-46a8a3d7921mr5093767b6e.13.1774840634672; Sun, 29 Mar 2026 20:17:14 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Mon, 30 Mar 2026 12:17:03 +0900 X-Gm-Features: AQROBzAmTOTciUUb1yjW7YP7pENm4tLpodf2tkdJ__cTUceM2lro2Dnk4Gmybf0 Message-ID: Subject: Re: Eager aggregation, take 3 To: David Rowley Cc: Robert Haas , Tom Lane , Tender Wang , Paul George , Andy Fan , PostgreSQL-development , pgsql-hackers@lists.postgresql.org, Matheus Alcantara Content-Type: multipart/mixed; boundary="000000000000902376064e3549e0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000902376064e3549e0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Oct 9, 2025 at 5:07=E2=80=AFPM Richard Guo = wrote: > I noticed an unnecessary header include in initsplan.c. Will fix that > as well. I noticed a couple of issues that can lead to unexpected results. I've attached two patches to fix them. 1. Eager aggregation was incorrectly checking the data type's default collation rather than the expression's actual collation. This allowed columns with non-deterministic collations to be pushed down, resulting in incorrect grouping. Fixed by 0001. 2. Pushing aggregates containing volatile functions below a join alters their execution count. Fixed by 0002. (As briefly discussed on Discord, this non-deterministic collation issue also exists in our long-existing logic for pushing HAVING down to WHERE. But let's fix it for the eager aggregation first.) - Richard --000000000000902376064e3549e0 Content-Type: application/octet-stream; name="v1-0001-Fix-collation-handling-for-grouping-keys-in-eager.patch" Content-Disposition: attachment; filename="v1-0001-Fix-collation-handling-for-grouping-keys-in-eager.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mncm9k570 RnJvbSAzZTg5OTdkNTJkYWUxM2I1NzE3NDUzNTVlMDc2NzhmMzVkODc4YzBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAyNyBNYXIgMjAyNiAxNzo1MToxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjEg MS8yXSBGaXggY29sbGF0aW9uIGhhbmRsaW5nIGZvciBncm91cGluZyBrZXlzIGluIGVhZ2VyCiBh Z2dyZWdhdGlvbgoKV2hlbiBkZXRlcm1pbmluZyBpZiBpdCBpcyBzYWZlIHRvIHVzZSBhbiBleHBy ZXNzaW9uIGFzIGEgZ3JvdXBpbmcga2V5CmZvciBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLCBlYWdlciBh Z2dyZWdhdGlvbiByZWxpZXMgb24gdGhlIEItdHJlZQplcXVhbGltYWdlIHN1cHBvcnQgZnVuY3Rp b24gdG8gZW5zdXJlIHRoYXQgZXF1YWxpdHkgaW1wbGllcyBpbWFnZQplcXVhbGl0eS4KClByZXZp b3VzbHksIHRoZSBjb2RlIGluY29ycmVjdGx5IHBhc3NlZCB0aGUgZGVmYXVsdCBjb2xsYXRpb24g b2YgdGhlCmV4cHJlc3Npb24ncyBkYXRhIHR5cGUgdG8gdGhlIGVxdWFsaW1hZ2UgcHJvY2VkdXJl LCByYXRoZXIgdGhhbiB0aGUKZXhwcmVzc2lvbidzIGFjdHVhbCBjb2xsYXRpb24uICBBcyBhIHJl c3VsdCwgaWYgYSBjb2x1bW4gdXNlZCBhCm5vbi1kZXRlcm1pbmlzdGljIGNvbGxhdGlvbiBidXQg dGhlIGJhc2UgdHlwZSdzIGRlZmF1bHQgY29sbGF0aW9uIHdhcwpkZXRlcm1pbmlzdGljLCBlYWdl ciBhZ2dyZWdhdGlvbiB3b3VsZCBpbmNvcnJlY3RseSBhc3N1bWUgdGhhdCB0aGUKY29sdW1uIHdh cyBzYWZlIGZvciBieXRlLWxldmVsIGdyb3VwaW5nLiAgVGhpcyBjb3VsZCBjYXVzZSByb3dzIHRv IGJlCnByZW1hdHVyZWx5IGdyb3VwZWQgYW5kIHN1YnNlcXVlbnRseSBkaXNjYXJkZWQgYnkgc3Ry aWN0IGpvaW4KY29uZGl0aW9ucywgcmVzdWx0aW5nIGluIGluY29ycmVjdCBxdWVyeSByZXN1bHRz LgoKVGhpcyBwYXRjaCBmaXhlcyB0aGUgaXNzdWUgYnkgcGFzc2luZyB0aGUgZXhwcmVzc2lvbidz IGFjdHVhbApjb2xsYXRpb24gdG8gdGhlIGVxdWFsaW1hZ2UgcHJvY2VkdXJlLgotLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jICAgICAgICB8IDEwICsrLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jICAgICAgICAgIHwgMTAgKystCiAuLi4vcmVn cmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCAgICAgfCA3MSArKysrKysrKysrKysr Ky0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbCAgICAgfCAz MSArKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5pdHNwbGFu LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYwppbmRleCBjMjBlN2U0 OTc4MC4uYjIwN2I4ZDkxM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L2luaXRzcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5j CkBAIC05MTMsOSArOTEzLDE3IEBAIGNyZWF0ZV9ncm91cGluZ19leHByX2luZm9zKFBsYW5uZXJJ bmZvICpyb290KQogCQkJCQkJCQkJCSAgIHRjZS0+YnRyZWVfb3BpbnR5cGUsCiAJCQkJCQkJCQkJ ICAgdGNlLT5idHJlZV9vcGludHlwZSwKIAkJCQkJCQkJCQkgICBCVEVRVUFMSU1BR0VfUFJPQyk7 CisKKwkJLyoKKwkJICogSWYgdGhlcmUgaXMgbm8gQlRFUVVBTElNQUdFX1BST0MsIGVhZ2VyIGFn Z3JlZ2F0aW9uIGlzIGFzc3VtZWQgdG8KKwkJICogYmUgdW5zYWZlLiAgT3RoZXJ3aXNlLCB3ZSBj YWxsIHRoZSBwcm9jZWR1cmUgdG8gY2hlY2suICBXZSBtdXN0IGJlCisJCSAqIGNhcmVmdWwgdG8g cGFzcyB0aGUgZXhwcmVzc2lvbidzIGFjdHVhbCBjb2xsYXRpb24sIHJhdGhlciB0aGFuIHRoZQor CQkgKiBkYXRhIHR5cGUncyBkZWZhdWx0IGNvbGxhdGlvbiwgdG8gZW5zdXJlIHRoYXQgbm9uLWRl dGVybWluaXN0aWMKKwkJICogY29sbGF0aW9ucyBhcmUgY29ycmVjdGx5IGhhbmRsZWQuCisJCSAq LwogCQlpZiAoIU9pZElzVmFsaWQoZXF1YWxpbWFnZXByb2MpIHx8CiAJCQkhRGF0dW1HZXRCb29s KE9pZEZ1bmN0aW9uQ2FsbDFDb2xsKGVxdWFsaW1hZ2Vwcm9jLAotCQkJCQkJCQkJCQkgICB0Y2Ut PnR5cGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkJICAgZXhwckNvbGxhdGlvbigoTm9kZSAqKSB0bGUt PmV4cHIpLAogCQkJCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHRjZS0+YnRyZWVfb3BpbnR5 cGUpKSkpCiAJCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3JlbG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwppbmRl eCA5MWJjZGEzNGEzNy4uM2ZjMmMyZjcxZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3JlbG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxu b2RlLmMKQEAgLTMwMDQsOSArMzAwNCwxNyBAQCBpbml0X2dyb3VwaW5nX3RhcmdldHMoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkJICAgdGNlLT5idHJlZV9v cGludHlwZSwKIAkJCQkJCQkJCQkJICAgdGNlLT5idHJlZV9vcGludHlwZSwKIAkJCQkJCQkJCQkJ ICAgQlRFUVVBTElNQUdFX1BST0MpOworCisJCQkvKgorCQkJICogSWYgdGhlcmUgaXMgbm8gQlRF UVVBTElNQUdFX1BST0MsIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIGFzc3VtZWQKKwkJCSAqIHRvIGJl IHVuc2FmZS4gIE90aGVyd2lzZSwgd2UgY2FsbCB0aGUgcHJvY2VkdXJlIHRvIGNoZWNrLiAgV2UK KwkJCSAqIG11c3QgYmUgY2FyZWZ1bCB0byBwYXNzIHRoZSBleHByZXNzaW9uJ3MgYWN0dWFsIGNv bGxhdGlvbiwKKwkJCSAqIHJhdGhlciB0aGFuIHRoZSBkYXRhIHR5cGUncyBkZWZhdWx0IGNvbGxh dGlvbiwgdG8gZW5zdXJlIHRoYXQKKwkJCSAqIG5vbi1kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMg YXJlIGNvcnJlY3RseSBoYW5kbGVkLgorCQkJICovCiAJCQlpZiAoIU9pZElzVmFsaWQoZXF1YWxp bWFnZXByb2MpIHx8CiAJCQkJIURhdHVtR2V0Qm9vbChPaWRGdW5jdGlvbkNhbGwxQ29sbChlcXVh bGltYWdlcHJvYywKLQkJCQkJCQkJCQkJCSAgIHRjZS0+dHlwY29sbGF0aW9uLAorCQkJCQkJCQkJ CQkJICAgZXhwckNvbGxhdGlvbigoTm9kZSAqKSBleHByKSwKIAkJCQkJCQkJCQkJCSAgIE9iamVj dElkR2V0RGF0dW0odGNlLT5idHJlZV9vcGludHlwZSkpKSkKIAkJCQlyZXR1cm4gZmFsc2U7CiAK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CmluZGV4 IGQxNzBlN2RhMDY2Li5mYmNkYjdlYjU4YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CkBAIC0yNDU0LDExICsyNDU0LDExIEBAIFNFTEVDVCBj IGNvbGxhdGUgIkMiLCBjb3VudChjKSBGUk9NIHBhZ2dfdGFiMyBHUk9VUCBCWSBjIGNvbGxhdGUg IkMiIE9SREVSIEJZIDE7CiBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyBmYWxzZTsK IEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2df dGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9SREVS IEJZIHQxLmMgQ09MTEFURSAiQyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgU29ydAogICAgU29ydCBLZXk6IHQxLmMgQ09MTEFURSAiQyIKLSAgIC0+ICBGaW5hbGl6ZSBI YXNoQWdncmVnYXRlCisgICAtPiAgSGFzaEFnZ3JlZ2F0ZQogICAgICAgICAgR3JvdXAgS2V5OiB0 MS5jCiAgICAgICAgICAtPiAgSGFzaCBKb2luCiAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0 MS5jID0gdDIuYykKQEAgLTI0NjYsMTIgKzI0NjYsMTAgQEAgU0VMRUNUIHQxLmMsIGNvdW50KHQy LmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0Mi5jIEdS T1UKICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDIgdDFf MQogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMSB0MV8y CiAgICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRp YWwgSGFzaEFnZ3JlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Mi5jCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQyXzEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNf cDEgdDJfMgotKDE1IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQyXzEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEg dDJfMgorKDEzIHJvd3MpCiAKIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBhZ2dfdGFi MyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9SREVSIEJZ IHQxLmMgQ09MTEFURSAiQyI7CiAgYyB8IGNvdW50IApAQCAtMjQ4MywxMSArMjQ4MSwxMSBAQCBT RUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdnX3RhYjMg dDIgT04gdDEuYyA9IHQyLmMgR1JPVQogU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gVE8g dHJ1ZTsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9N IHBhZ2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAx IE9SREVSIEJZIHQxLmMgQ09MTEFURSAiQyI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgU29ydAogICAgU29ydCBLZXk6IHQxLmMgQ09MTEFURSAiQyIKLSAgIC0+ICBGaW5h bGl6ZSBIYXNoQWdncmVnYXRlCisgICAtPiAgSGFzaEFnZ3JlZ2F0ZQogICAgICAgICAgR3JvdXAg S2V5OiB0MS5jCiAgICAgICAgICAtPiAgSGFzaCBKb2luCiAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0MS5jID0gdDIuYykKQEAgLTI0OTUsMTIgKzI0OTMsMTAgQEAgU0VMRUNUIHQxLmMsIGNv dW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMgPSB0 Mi5jIEdST1UKICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNf cDIgdDFfMQogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19w MSB0MV8yCiAgICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0Mi5jCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQy XzEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdn X3RhYjNfcDEgdDJfMgotKDE1IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5k CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3Ay IHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3Rh YjNfcDEgdDJfMgorKDEzIHJvd3MpCiAKIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBh Z2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VUCBCWSAxIE9S REVSIEJZIHQxLmMgQ09MTEFURSAiQyI7CiAgYyB8IGNvdW50IApAQCAtMjY5MSw2ICsyNjg3LDQ1 IEBAIERST1AgVEFCTEUgcGFnZ190YWI2OwogUkVTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdn cmVnYXRlOwogUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKIFJFU0VUIGVu YWJsZV9pbmNyZW1lbnRhbF9zb3J0OworLS0KKy0tIFRlc3QgZm9yIGVhZ2VyIGFnZ3JlZ2F0aW9u IG5vbi1kZXRlcm1pbmlzdGljIGNvbGxhdGlvbiBidWcKKy0tCitDUkVBVEUgVEFCTEUgZWFnZXJf YWdnX3QxIChpZCBpbnQsIHZhbCB0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSk7CitDUkVB VEUgVEFCTEUgZWFnZXJfYWdnX3QyICh2YWwgdGV4dCBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmUp OworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QxIFNFTEVDVCAxLCAnYScgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTApOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QxIFNFTEVDVCAxLCAnQScgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3QyIFZBTFVF UyAoJ0EnKTsKK0FOQUxZWkUgZWFnZXJfYWdnX3QxOworQU5BTFlaRSBlYWdlcl9hZ2dfdDI7Cist LSBFbnN1cmUgdGhhdCBlYWdlciBhZ2dyZWdhdGlvbiBpcyBub3QgdXNlZCBmb3IgdDEudmFsIGR1 ZSB0byB0aGUKKy0tIG5vbi1kZXRlcm1pbmlzdGljIGNvbGxhdGlvbi4KK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCB0MS5pZCwgY291bnQodDEudmFsKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0 MQorICBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS52YWwgPSB0Mi52YWwgQ09MTEFURSAiQyIK K0dST1VQIEJZIHQxLmlkOworICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiB0MS5pZAor ICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICBKb2luIEZpbHRlcjogKCh0MS52YWwpOjp0ZXh0 ID0gKHQyLnZhbCk6OnRleHQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZWFnZXJfYWdnX3Qy IHQyCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZWFnZXJfYWdnX3QxIHQxCisoNiByb3dzKQor CistLSBFbnN1cmUgaXQgcmV0dXJucyAxIHJvdyB3aXRoIGNvdW50ID0gNTAKK1NFTEVDVCB0MS5p ZCwgY291bnQodDEudmFsKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBKT0lOIGVhZ2VyX2Fn Z190MiB0MiBPTiB0MS52YWwgPSB0Mi52YWwgQ09MTEFURSAiQyIKK0dST1VQIEJZIHQxLmlkOwor IGlkIHwgY291bnQgCistLS0tKy0tLS0tLS0KKyAgMSB8ICAgIDUwCisoMSByb3cpCisKK0RST1Ag VEFCTEUgZWFnZXJfYWdnX3QxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDI7CiAtLSB2aXJ0dWFs IGdlbmVyYXRlZCBjb2x1bW5zCiBDUkVBVEUgVEFCTEUgdDUgKAogICAgIGEgaW50LApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbAppbmRleCA4ZjBmOTczZjVmYS4uMGU2 Yjc2YjExYjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0 Zjguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCkBA IC05OTAsNiArOTkwLDM3IEBAIFJFU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZTsK IFJFU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CiBSRVNFVCBlbmFibGVfaW5j cmVtZW50YWxfc29ydDsKIAorLS0KKy0tIFRlc3QgZm9yIGVhZ2VyIGFnZ3JlZ2F0aW9uIG5vbi1k ZXRlcm1pbmlzdGljIGNvbGxhdGlvbiBidWcKKy0tCisKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2df dDEgKGlkIGludCwgdmFsIHRleHQgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlKTsKK0NSRUFURSBU QUJMRSBlYWdlcl9hZ2dfdDIgKHZhbCB0ZXh0IENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSk7CisK K0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MSBTRUxFQ1QgMSwgJ2EnIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwKTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MSBTRUxFQ1QgMSwgJ0EnIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDUwKTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MiBWQUxVRVMg KCdBJyk7CisKK0FOQUxZWkUgZWFnZXJfYWdnX3QxOworQU5BTFlaRSBlYWdlcl9hZ2dfdDI7CisK Ky0tIEVuc3VyZSB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIG5vdCB1c2VkIGZvciB0MS52YWwg ZHVlIHRvIHRoZQorLS0gbm9uLWRldGVybWluaXN0aWMgY29sbGF0aW9uLgorRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIHQxLmlkLCBjb3VudCh0MS52YWwpCisgIEZST00gZWFnZXJfYWdnX3Qx IHQxCisgIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLnZhbCA9IHQyLnZhbCBDT0xMQVRFICJD IgorR1JPVVAgQlkgdDEuaWQ7CisKKy0tIEVuc3VyZSBpdCByZXR1cm5zIDEgcm93IHdpdGggY291 bnQgPSA1MAorU0VMRUNUIHQxLmlkLCBjb3VudCh0MS52YWwpCisgIEZST00gZWFnZXJfYWdnX3Qx IHQxCisgIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLnZhbCA9IHQyLnZhbCBDT0xMQVRFICJD IgorR1JPVVAgQlkgdDEuaWQ7CisKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QxOworRFJPUCBUQUJM RSBlYWdlcl9hZ2dfdDI7CisKIC0tIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMKIENSRUFURSBU QUJMRSB0NSAoCiAgICAgYSBpbnQsCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000902376064e3549e0 Content-Type: application/octet-stream; name="v1-0002-Fix-volatile-function-evaluation-in-eager-aggrega.patch" Content-Disposition: attachment; filename="v1-0002-Fix-volatile-function-evaluation-in-eager-aggrega.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mncm9t5l1 RnJvbSAwNDc2ZmY5OGE4MzMxNzY0MmExNmJjYTlhNWIxZWVmOTc5MjVkYmQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogU2F0LCAyOCBNYXIgMjAyNiAxNjo1MjozNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjEg Mi8yXSBGaXggdm9sYXRpbGUgZnVuY3Rpb24gZXZhbHVhdGlvbiBpbiBlYWdlciBhZ2dyZWdhdGlv bgoKUHVzaGluZyBhZ2dyZWdhdGVzIGNvbnRhaW5pbmcgdm9sYXRpbGUgZnVuY3Rpb25zIGJlbG93 IGEgam9pbiBjYW4KdmlvbGF0ZSB2b2xhdGlsaXR5IHNlbWFudGljcyBieSBjaGFuZ2luZyB0aGUg bnVtYmVyIG9mIHRpbWVzIHRoZQpmdW5jdGlvbiBpcyBleGVjdXRlZC4KCkhlcmUgd2UgY2hlY2sg dGhlIEFnZ3JlZiBub2RlcyBpbiB0aGUgdGFyZ2V0bGlzdCBhbmQgaGF2aW5nUXVhbCBmb3IKdm9s YXRpbGUgZnVuY3Rpb25zIGFuZCBkaXNhYmxlIGVhZ2VyIGFnZ3JlZ2F0aW9uIHdoZW4gc3VjaCBm dW5jdGlvbnMKYXJlIHByZXNlbnQuCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5p dHNwbGFuLmMgICAgICAgIHwgMTEgKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9lYWdlcl9hZ2dyZWdhdGUub3V0IHwgMjAgKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZWFnZXJfYWdncmVnYXRlLnNxbCAgICAgIHwgIDggKysrKysrKysKIDMgZmls ZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2luaXRzcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vaW5p dHNwbGFuLmMKaW5kZXggYjIwN2I4ZDkxM2IuLjk2ZWUzMTJlYmRmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9pbml0c3BsYW4uYwpAQCAtODEwLDYgKzgxMCwxNyBAQCBjcmVhdGVfYWdnX2Ns YXVzZV9pbmZvcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJQXNzZXJ0KGFnZ3JlZi0+YWdnb3JkZXIg PT0gTklMKTsKIAkJQXNzZXJ0KGFnZ3JlZi0+YWdnZGlzdGluY3QgPT0gTklMKTsKIAorCQkvKgor CQkgKiBXZSBjYW5ub3QgcHVzaCBkb3duIGFnZ3JlZ2F0ZXMgdGhhdCBjb250YWluIHZvbGF0aWxl IGZ1bmN0aW9ucy4KKwkJICogRG9pbmcgc28gd291bGQgY2hhbmdlIHRoZSBudW1iZXIgb2YgdGlt ZXMgdGhlIGZ1bmN0aW9uIGlzCisJCSAqIGV2YWx1YXRlZC4KKwkJICovCisJCWlmIChjb250YWlu X3ZvbGF0aWxlX2Z1bmN0aW9ucygoTm9kZSAqKSBhZ2dyZWYpKQorCQl7CisJCQllYWdlcl9hZ2df YXBwbGljYWJsZSA9IGZhbHNlOworCQkJYnJlYWs7CisJCX0KKwogCQkvKgogCQkgKiBJZiB0aGVy ZSBhcmUgYW55IHNlY3VyaXR5UXVhbHMsIGRvIG5vdCB0cnkgdG8gYXBwbHkgZWFnZXIKIAkJICog YWdncmVnYXRpb24gaWYgYW55IG5vbi1sZWFrcHJvb2YgYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUg cHJlc2VudC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdn cmVnYXRlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVnYXRlLm91 dAppbmRleCA1YWM5NjYxODZmNy4uZDFiODZiZTNhNjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZWFnZXJfYWdncmVnYXRlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKQEAgLTQyOCw2ICs0MjgsMjYgQEAgR1JPVVAg QlkgdDEuYSBPUkRFUiBCWSB0MS5hOwogCiBSRVNFVCBnZXFvOwogUkVTRVQgZ2Vxb190aHJlc2hv bGQ7CistLSBFbnN1cmUgZWFnZXIgYWdncmVnYXRpb24gaXMgbm90IGFwcGxpZWQgYmVjYXVzZSBy YW5kb20oKSBpcyBhIHZvbGF0aWxlCistLSBmdW5jdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgcmFuZG9tKCkpCisgIEZST00gZWFnZXJfYWdnX3QxIHQx CisgIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iCitHUk9VUCBCWSB0MS5hIE9S REVSIEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBHcm91cEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiB0MS5hCisgICAtPiAgU29y dAorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQyLmIgPSB0MS5iKQorICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIGVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlYWdlcl9hZ2dfdDEgdDEKKyg5IHJvd3Mp CisKIERST1AgVEFCTEUgZWFnZXJfYWdnX3QxOwogRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDI7CiBE Uk9QIFRBQkxFIGVhZ2VyX2FnZ190MzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdh dGUuc3FsCmluZGV4IGFiZTZkNmFlMDlmLi45N2UxMGRkN2NmNCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvZWFnZXJfYWdncmVnYXRlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsCkBAIC0xNjMsNiArMTYzLDE0IEBAIEdST1VQIEJZIHQx LmEgT1JERVIgQlkgdDEuYTsKIFJFU0VUIGdlcW87CiBSRVNFVCBnZXFvX3RocmVzaG9sZDsKIAor LS0gRW5zdXJlIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIG5vdCBhcHBsaWVkIGJlY2F1c2UgcmFuZG9t KCkgaXMgYSB2b2xhdGlsZQorLS0gZnVuY3Rpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCB0MS5hLCBhdmcodDIuYyArIHJhbmRvbSgpKQorICBGUk9NIGVhZ2VyX2FnZ190MSB0MQorICBK T0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYgorR1JPVVAgQlkgdDEuYSBPUkRFUiBC WSB0MS5hOworCiBEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MTsKIERST1AgVEFCTEUgZWFnZXJfYWdn X3QyOwogRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDM7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQp Cgo= --000000000000902376064e3549e0--