Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nrc4k-0001fE-FH for pgsql-bugs@arkaria.postgresql.org; Thu, 19 May 2022 09:04:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nrc4j-00051j-1w for pgsql-bugs@arkaria.postgresql.org; Thu, 19 May 2022 09:04:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nrc4i-00051a-Cu for pgsql-bugs@lists.postgresql.org; Thu, 19 May 2022 09:04:04 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nrc4c-0006Jx-GJ for pgsql-bugs@lists.postgresql.org; Thu, 19 May 2022 09:04:02 +0000 Received: from [192.168.28.53] (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 8B82621CB494; Thu, 19 May 2022 12:03:55 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1652951035; bh=fFEDhrIu99/9BQ2w9qDPcYzOAKv9pqAW+FRGpO+9C50=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=D+aG/jtywIMABZAk1Mv7VRSiZqmdlXz3nHpztfcVUg7/76jHRI8fG7EXOzrYkDDC4 lr5hwIm72WMJw+9YWI+4qDXAQMJP9K+8D6jMtWhpqMiRzfcFQweFHheUzqz2HQGmLw MrzzhEg+jgZxJuaR2chWNA8bT8an0dkpLGixBhGE= Content-Type: multipart/mixed; boundary="------------jgvvQOlQVUvRP425l3FdmdLg" Message-ID: <26c0c627-65a9-9e38-07f0-56861b75fc68@postgrespro.ru> Date: Thu, 19 May 2022 14:03:55 +0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 Subject: Re: Negative value of numGroups Content-Language: en-US To: Tom Lane Cc: pgsql-bugs@lists.postgresql.org References: <1584431.1652801657@sss.pgh.pa.us> From: Andrey Lepikhov Organization: Postgres Professional In-Reply-To: <1584431.1652801657@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------jgvvQOlQVUvRP425l3FdmdLg Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 5/17/22 20:34, Tom Lane wrote: > Andrey Lepikhov writes: >> On 13/5/2022 11:56, Andrey Lepikhov wrote: >>> (long) Min(numGroups, (double) LONG_MAX); >>> >>> can return negative value, if numGroups > LONG_MAX. > > I see your point, but I don't think that repeating the same finicky > and undocumented coding pattern in multiple places is a future-proof > fix. I'm inclined to think we should invent a function along the > lines of "long clamp_double_to_long(double x)". Given where it's > used, maybe putting it beside clamp_row_est() would be good. > > regards, tom lane Next version of the patch. As I see, now we trying to use Cardinality type instead of double. So, I named casting routine as clamp_cardinality_to_long. -- Regards Andrey Lepikhov Postgres Professional --------------jgvvQOlQVUvRP425l3FdmdLg Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-potential-problem-with-negative-value-of-groups-.patch" Content-Disposition: attachment; filename*0="0001-Fix-potential-problem-with-negative-value-of-groups-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1MzMwMDFiZjA3MDA1M2M2Mjk1NmE2YWQ5OTIxZjdjM2IzNzBmYjk2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogVHVlLCAxNyBNYXkgMjAyMiAxNzo0ODo0OSArMDUw MApTdWJqZWN0OiBbUEFUQ0hdIEZpeCBwb3RlbnRpYWwgcHJvYmxlbSB3aXRoIG5lZ2F0aXZl IHZhbHVlIG9mIGdyb3VwcyBudW1iZXIuCiBBZGQgdGhlIGNsYW1wX2NhcmRpbmFsaXR5X3Rv X2xvbmcgcm91dGluZSBmb3Igc2FmZSBjYXN0IENhcmRpbmFsaXR5IHRvIGEgbG9uZwogdmFs dWUgZXZlcnl3aGVyZSBpbiB0aGUgY29kZS4KCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVN1YnBsYW4uYyAgICAgICB8ICAzICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9jb3N0c2l6ZS5jICAgIHwgMjUgKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgIHwgIDYgKystLQogc3JjL2luY2x1ZGUvb3B0aW1p emVyL29wdGltaXplci5oICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvYWdncmVnYXRlcy5vdXQgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsICAgICAgfCAxMiArKysrKysrCiA2IGZp bGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnBsYW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTdWJwbGFuLmMKaW5kZXggNjBkMjI5MDAzMC4uMDE4OWRjNjZlZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnBsYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicGxhbi5jCkBAIC0zNSw2ICszNSw3IEBACiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAj aW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL29wdGlt aXplci5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTQ5OCw3ICs0OTks NyBAQCBidWlsZFN1YlBsYW5IYXNoKFN1YlBsYW5TdGF0ZSAqbm9kZSwgRXhwckNvbnRleHQg KmVjb250ZXh0KQogCW5vZGUtPmhhdmVoYXNocm93cyA9IGZhbHNlOwogCW5vZGUtPmhhdmVu dWxscm93cyA9IGZhbHNlOwogCi0JbmJ1Y2tldHMgPSAobG9uZykgTWluKHBsYW5zdGF0ZS0+ cGxhbi0+cGxhbl9yb3dzLCAoZG91YmxlKSBMT05HX01BWCk7CisJbmJ1Y2tldHMgPSBjbGFt cF9jYXJkaW5hbGl0eV90b19sb25nKHBsYW5zdGF0ZS0+cGxhbi0+cGxhbl9yb3dzKTsKIAlp ZiAobmJ1Y2tldHMgPCAxKQogCQluYnVja2V0cyA9IDE7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IGVkOThiYTdkYmQuLjMyMmI5NTk5OTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpAQCAtMjE1LDYgKzIxNSwzMSBA QCBjbGFtcF9yb3dfZXN0KGRvdWJsZSBucm93cykKIAlyZXR1cm4gbnJvd3M7CiB9CiAKKy8q CisgKiBjbGFtcF9jYXJkaW5hbGl0eV90b19sb25nCisgKgkJQ2FzdCBhIGNhcmRpbmFsaXR5 IHZhbHVlIHRvIGEgc2FuZSBsb25nIHZhbHVlLgorICovCitsb25nCitjbGFtcF9jYXJkaW5h bGl0eV90b19sb25nKENhcmRpbmFsaXR5IHgpCit7CisJbG9uZyB5OworCisJLyogQXZvaWQg aW5maW5pdGUgYW5kIE5hTiB2YWx1ZXMgYnkgdGhlIHNhbWUgcmVhc29uIGFzIGRlc2NyaWJl ZCBhYm92ZS4gKi8KKwlpZiAoeCA8IDApCisJCXJldHVybiAwOworCWlmIChpc25hbih4KSkK KwkJcmV0dXJuIExPTkdfTUFYOworCisJLyoKKwkgKiBMT05HX01BWCB2YWx1ZSwgMl5uLTEs IGhhc24ndCBkaXJlY3QgcmVwcmVzZW50YXRpb24gaW4gZG91YmxlLiBTbywgaXQKKwkgKiBj YW4gYmUgY29udmVydGVkIHRvIGdyZWF0ZXIgKDJebikgb3IgYSBsZXNzZXIgbnVtYmVyIHdo aWNoIGhhcworCSAqIHJlcHJlc2VudGF0aW9uIGluIGRvdWJsZSBmb3JtYXQuIFNvLCByZXN1 bHQgb2YgdGhpcyBjYWxjdWxhdGlvbiBtYXkgaGF2ZQorCSAqIHNsaWdodCBmbHVlbmN5IGFj cm9zcyBkaWZmZXJlbnQgY29tcGlsZXJzLCBidXQgZG9lc24ndCBtYXR0ZXIgbXVjaC4KKwkg Ki8KKwl5ID0gKHggPCAoZG91YmxlKSBMT05HX01BWCkgPyAobG9uZykgeCA6IExPTkdfTUFY OworCisJcmV0dXJuIHk7Cit9CiAKIC8qCiAgKiBjb3N0X3NlcXNjYW4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCBmNGNjNTYwMzljLi5hN2RlODVh ODY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0y NzI0LDcgKzI3MjQsNyBAQCBjcmVhdGVfc2V0b3BfcGxhbihQbGFubmVySW5mbyAqcm9vdCwg U2V0T3BQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkJCQkJCQkJICBmbGFncyB8IENQ X0xBQkVMX1RMSVNUKTsKIAogCS8qIENvbnZlcnQgbnVtR3JvdXBzIHRvIGxvbmcgaW50IC0t LSBidXQgJ3dhcmUgb3ZlcmZsb3chICovCi0JbnVtR3JvdXBzID0gKGxvbmcpIE1pbihiZXN0 X3BhdGgtPm51bUdyb3VwcywgKGRvdWJsZSkgTE9OR19NQVgpOworCW51bUdyb3VwcyA9IGNs YW1wX2NhcmRpbmFsaXR5X3RvX2xvbmcoYmVzdF9wYXRoLT5udW1Hcm91cHMpOwogCiAJcGxh biA9IG1ha2Vfc2V0b3AoYmVzdF9wYXRoLT5jbWQsCiAJCQkJCSAgYmVzdF9wYXRoLT5zdHJh dGVneSwKQEAgLTI3NjEsNyArMjc2MSw3IEBAIGNyZWF0ZV9yZWN1cnNpdmV1bmlvbl9wbGFu KFBsYW5uZXJJbmZvICpyb290LCBSZWN1cnNpdmVVbmlvblBhdGggKmJlc3RfcGF0aCkKIAl0 bGlzdCA9IGJ1aWxkX3BhdGhfdGxpc3Qocm9vdCwgJmJlc3RfcGF0aC0+cGF0aCk7CiAKIAkv KiBDb252ZXJ0IG51bUdyb3VwcyB0byBsb25nIGludCAtLS0gYnV0ICd3YXJlIG92ZXJmbG93 ISAqLwotCW51bUdyb3VwcyA9IChsb25nKSBNaW4oYmVzdF9wYXRoLT5udW1Hcm91cHMsIChk b3VibGUpIExPTkdfTUFYKTsKKwludW1Hcm91cHMgPSBjbGFtcF9jYXJkaW5hbGl0eV90b19s b25nKGJlc3RfcGF0aC0+bnVtR3JvdXBzKTsKIAogCXBsYW4gPSBtYWtlX3JlY3Vyc2l2ZV91 bmlvbih0bGlzdCwKIAkJCQkJCQkJbGVmdHBsYW4sCkBAIC02NTU0LDcgKzY1NTQsNyBAQCBt YWtlX2FnZyhMaXN0ICp0bGlzdCwgTGlzdCAqcXVhbCwKIAlsb25nCQludW1Hcm91cHM7CiAK IAkvKiBSZWR1Y2UgdG8gbG9uZywgYnV0ICd3YXJlIG92ZXJmbG93ISAqLwotCW51bUdyb3Vw cyA9IChsb25nKSBNaW4oZE51bUdyb3VwcywgKGRvdWJsZSkgTE9OR19NQVgpOworCW51bUdy b3VwcyA9IGNsYW1wX2NhcmRpbmFsaXR5X3RvX2xvbmcoZE51bUdyb3Vwcyk7CiAKIAlub2Rl LT5hZ2dzdHJhdGVneSA9IGFnZ3N0cmF0ZWd5OwogCW5vZGUtPmFnZ3NwbGl0ID0gYWdnc3Bs aXQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggYi9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKaW5kZXggZDQwY2UyZWFlMS4uN2Jl MWU1OTA2YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5o CisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaApAQCAtOTUsNiArOTUs NyBAQCBleHRlcm4gUEdETExJTVBPUlQgZG91YmxlIHJlY3Vyc2l2ZV93b3JrdGFibGVfZmFj dG9yOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBlZmZlY3RpdmVfY2FjaGVfc2l6ZTsKIAog ZXh0ZXJuIGRvdWJsZSBjbGFtcF9yb3dfZXN0KGRvdWJsZSBucm93cyk7CitleHRlcm4gbG9u ZyBjbGFtcF9jYXJkaW5hbGl0eV90b19sb25nKENhcmRpbmFsaXR5IHgpOwogCiAvKiBpbiBw YXRoL2luZHhwYXRoLmM6ICovCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvYWdncmVnYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3Jl Z2F0ZXMub3V0CmluZGV4IDYwMTA0N2ZhM2QuLjAwMzc5ODFmYzQgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91dApAQCAtMzA0OSwxMCArMzA0OSw1MSBA QCBzZXQgd29ya19tZW0gdG8gZGVmYXVsdDsKIC0tLS0rLS0tLSstLS0tCiAoMCByb3dzKQog CitDUkVBVEUgVEFCTEUgYWdnX2dyb3VwXzUgQVMgKAorCVNFTEVDVCAxIEFTIHgsIE5VTEwg QVMgeDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxZTUpIHgpOworQU5BTFlaRSBhZ2dfZ3Jv dXBfNTsKKy0tIFN0cmVzcyB0ZXN0IGZvciBncm91cGluZzogZXhjZWVkIG51bWJlciBvZiAy XjUzIGdyb3VwcyB0byBjaGVjaworLS0gbG9uZyA8LT4gZG91YmxlIGNvbnZlcnNpb24uCitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCB0MS54MSBGUk9NCisgIGFnZ19ncm91cF81IHQx LGFnZ19ncm91cF81IHQyLGFnZ19ncm91cF81IHQzLGFnZ19ncm91cF81IHQ0LGFnZ19ncm91 cF81IHQ1LAorICBhZ2dfZ3JvdXBfNSB0NixhZ2dfZ3JvdXBfNSB0NyxhZ2dfZ3JvdXBfNSB0 OCxhZ2dfZ3JvdXBfNSB0OQorR1JPVVAgQlkgKHQxLngxLHQyLngxLHQzLngxLHQ0LngxLHQ1 LngxLHQ2LngxLHQ3LngxLHQ4LngxLHQ5LngxKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNo QWdncmVnYXRlCisgICBHcm91cCBLZXk6IHQxLngxLCB0Mi54MSwgdDMueDEsIHQ0LngxLCB0 NS54MSwgdDYueDEsIHQ3LngxLCB0OC54MSwgdDkueDEKKyAgIC0+ICBOZXN0ZWQgTG9vcAor ICAgICAgICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICAgICAgICAtPiAgTmVzdGVkIExv b3AKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYWdn X2dyb3VwXzUgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGFnZ19ncm91 cF81IHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgTWF0ZXJpYWxpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBhZ2dfZ3JvdXBfNSB0MworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g YWdnX2dyb3VwXzUgdDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBN YXRlcmlhbGl6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIGFnZ19ncm91cF81IHQ1CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBhZ2dfZ3JvdXBfNSB0NgorICAgICAgICAgICAgICAgICAgICAgLT4g IE1hdGVyaWFsaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gYWdnX2dyb3VwXzUgdDcKKyAgICAgICAgICAgICAgIC0+ICBNYXRlcmlhbGl6ZQorICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGFnZ19ncm91cF81IHQ4CisgICAg ICAgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBh Z2dfZ3JvdXBfNSB0OQorKDI3IHJvd3MpCisKIGRyb3AgdGFibGUgYWdnX2dyb3VwXzE7CiBk cm9wIHRhYmxlIGFnZ19ncm91cF8yOwogZHJvcCB0YWJsZSBhZ2dfZ3JvdXBfMzsKIGRyb3Ag dGFibGUgYWdnX2dyb3VwXzQ7Citkcm9wIHRhYmxlIGFnZ19ncm91cF81OwogZHJvcCB0YWJs ZSBhZ2dfaGFzaF8xOwogZHJvcCB0YWJsZSBhZ2dfaGFzaF8yOwogZHJvcCB0YWJsZSBhZ2df aGFzaF8zOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbAppbmRleCBjNmUwZDdi YTJiLi5lMTlkNzRmZWY1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dy ZWdhdGVzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbApA QCAtMTM1MSwxMCArMTM1MSwyMiBAQCBzZXQgd29ya19tZW0gdG8gZGVmYXVsdDsKICAgdW5p b24gYWxsCiAoc2VsZWN0ICogZnJvbSBhZ2dfZ3JvdXBfNCBleGNlcHQgc2VsZWN0ICogZnJv bSBhZ2dfaGFzaF80KTsKIAorQ1JFQVRFIFRBQkxFIGFnZ19ncm91cF81IEFTICgKKwlTRUxF Q1QgMSBBUyB4LCBOVUxMIEFTIHgxIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMWU1KSB4KTsK K0FOQUxZWkUgYWdnX2dyb3VwXzU7CisKKy0tIFN0cmVzcyB0ZXN0IGZvciBncm91cGluZzog ZXhjZWVkIG51bWJlciBvZiAyXjUzIGdyb3VwcyB0byBjaGVjaworLS0gbG9uZyA8LT4gZG91 YmxlIGNvbnZlcnNpb24uCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCB0MS54MSBGUk9N CisgIGFnZ19ncm91cF81IHQxLGFnZ19ncm91cF81IHQyLGFnZ19ncm91cF81IHQzLGFnZ19n cm91cF81IHQ0LGFnZ19ncm91cF81IHQ1LAorICBhZ2dfZ3JvdXBfNSB0NixhZ2dfZ3JvdXBf NSB0NyxhZ2dfZ3JvdXBfNSB0OCxhZ2dfZ3JvdXBfNSB0OQorR1JPVVAgQlkgKHQxLngxLHQy LngxLHQzLngxLHQ0LngxLHQ1LngxLHQ2LngxLHQ3LngxLHQ4LngxLHQ5LngxKTsKKwogZHJv cCB0YWJsZSBhZ2dfZ3JvdXBfMTsKIGRyb3AgdGFibGUgYWdnX2dyb3VwXzI7CiBkcm9wIHRh YmxlIGFnZ19ncm91cF8zOwogZHJvcCB0YWJsZSBhZ2dfZ3JvdXBfNDsKK2Ryb3AgdGFibGUg YWdnX2dyb3VwXzU7CiBkcm9wIHRhYmxlIGFnZ19oYXNoXzE7CiBkcm9wIHRhYmxlIGFnZ19o YXNoXzI7CiBkcm9wIHRhYmxlIGFnZ19oYXNoXzM7Ci0tIAoyLjM0LjEKCg== --------------jgvvQOlQVUvRP425l3FdmdLg--