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 1vutsH-00BzJK-0i for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Feb 2026 14:58:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vutsG-001Nyo-08 for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Feb 2026 14:58:56 +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 1vutsF-001Nyg-0g for pgsql-hackers@lists.postgresql.org; Tue, 24 Feb 2026 14:58:55 +0000 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vutsB-00000000yLj-0l4q for pgsql-hackers@postgresql.org; Tue, 24 Feb 2026 14:58:54 +0000 Received: by mail-ot1-x335.google.com with SMTP id 46e09a7af769-7d18c654458so2286129a34.3 for ; Tue, 24 Feb 2026 06:58:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771945131; cv=none; d=google.com; s=arc-20240605; b=bUmaoXmCXfQbZsyp4AJIYO00yotTR1qkmIn8jf7cfTk4Xk52/B10j40BlyRxXZJmw0 9QHhL18Gkm/F3XrCx8xQlfGPuB/M38J0qbEntbGf+lAh9dxsPKNXGoCeEZ2SyLkigRKZ 9ZPCdkQiGGZdPSJjB+VPC5z4GXnbBlE4/c0++bexFtc6Qgxh+Ws31aTkSxod9MnMAunV eSp0ap3vOC3srwEJxJaVBD3g33AQvfrr4o3H1RDO5cqbVzJamOUcZG08oGCeC9CKXOsW U8ANEI+56wXS+kai1HqeE1djrk/vz6XrSh7vxn2nDwKhgWvj8J9A/hcQiEggYrLo7P4v 1taQ== 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=BA/Jy1DyJWB3eZJgPQCeOaT3iimpT2mrvmqY8P5rjSc=; fh=Tccc45CwlcCAjWMSlPu2uE3opNnkOZKIL99ph2vFnLI=; b=j99XF82w5k4uAFIYljIFwBm9lrgh2672NO/N6sohHaKL2SgVdHsh4sBcNi+yUS+x3o J1i4YYEBXan+WFxxSlBTIvPGn5fl6P8SAVVatYHU6LwX5ipUDzAPcle8zhSg6I5+tmYP gudo5K1ls10sKbBzg8VJlegcp7yfS5j/01BG5s4lFzDQ9VeVdveMmPqoom7lcVPERHmO rHPfMJICUEDAXoGYS5Hv1wZUnoyHUknIxeutFbv49eII+jww+VUd48Och6O/sst3BASO jSxjN0zwsQPqLg2Bi64Js9ahD+b/5/7qnLl9F3kjmDaTVTrSazhA6qX6OE1cfgb/3WZ9 ZvHA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1771945131; x=1772549931; 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=BA/Jy1DyJWB3eZJgPQCeOaT3iimpT2mrvmqY8P5rjSc=; b=iOViXyE+E3ZOwbmjX7k+WjFAHm8TsfkNyVEgdDHdh4VZGfZhm9/YL04OkFh2vbjGix bQgcMbz0Ccj0/yAfNwF1+2LHNuWpR3K4jwjVCrrJaNZECFHQ0TfvdEBcL2OZOeVDwzYf tUM9Op3ovkOtlDs/c18nIRcLjX3CfM6O8z2BosX+TYEteVColIN+XYx1IE+cyHePLXNR oNU/IGls66AIqHH63pMGNals/Ckq1osKGJh+j/Z3CS70SFkmRr/Me3IJySWsjXeiQpj6 SjCdkf5/obGH6rTsas6r+H8HzNZZwPD7kTuHLl4+FUBEKY9edVtbswXJ1cm8B56XZL1M JyrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771945131; x=1772549931; 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=BA/Jy1DyJWB3eZJgPQCeOaT3iimpT2mrvmqY8P5rjSc=; b=gP5PBHDIDTrmnW/ZMVYBjfQvR4K0drogFCPQkdVTIOZ/EdVVRkOFHboER8XKKUnDoi bNOg90guRmWmJ3LkhhfOz1ijeDIRSilpLARLAQlALVSb6e/DCwFqli5COoGxk2qbOioo hovnFOzad7D7EOrhTV6ggBs5NBKTOjGoPCy+94qcYDOefzs+zxlydb/7NOPxnB/E1YOd YQZcj6/xihsUgwKU0QyVp2gqDeLQjiHbJmc3/3GMP96ymUCKRq6KymWbu9i0PkDLgWim BFGlmVpj+zHuLYhKv0yHc2FJMZRSpDKz4DyxSVqVTRbsZpFu0KoEOxVNN+fJwGShb9W0 FHjg== X-Gm-Message-State: AOJu0YyNLuZ1qOaFOhhWBdiKvSGItLgat3b63rD/vna8I0feJsr5QhcY i7l4yJoSkZvI6cdcUU1qCGCZhsQqcmIBrIYcPQFHJpWGaQ+t8jWvi07kO71/hYXhP8N4gIfaNOT 5Yk4bEKfE+yo0NUhqMm7EnBMs/Hh0r/Lz13X1I5qbbZkQyA9S+X2Ym4o= X-Gm-Gg: ATEYQzyjrRMGOH4ZC7efAhQGS3Vj2R7i3Q3HjLPeVfK9OBiHKsQAARUqeecwkZXAwLB Fqb6pWwns6i/EIOXw6meGSsew+7nfEOYbzztasmewSK3RFiLpyT42aXUfF1hL+FGHTAN+3FYYdH idR34+68syZX484x8faQo/KokVcQzAq8mOKg5QjKiUDfA/ycxV4oZWTnxWX/v4K+dQnIvLMhd0/ KiJLaBAwJQgFK9sWQr0kIu6VKF1ZyCpANfryWjXsnqdvofpCqwC5jGW18pvau/wbrs7AB0br26J ji+QRlsmih7fELxPriWOjWhkikDocgrClXtxr7EMe7qFGiWK/XRna3LN5VfNCFsf9sUdKw== X-Received: by 2002:a05:6870:3922:b0:40e:fd1b:b74b with SMTP id 586e51a60fabf-4157b0bdb2fmr6872757fac.27.1771945130937; Tue, 24 Feb 2026 06:58:50 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aleksander Alekseev Date: Tue, 24 Feb 2026 17:58:38 +0300 X-Gm-Features: AaiRm50hXMItbTL2cuQWuZKbqfNZjBuGXZbhR7nGlPyn51REScRfFk1-BueObbo Message-ID: Subject: Re: [PATCH] Refactor *_abbrev_convert() functions To: PostgreSQL Development Cc: John Naylor Content-Type: multipart/mixed; boundary="00000000000017795d064b9320fb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000017795d064b9320fb Content-Type: text/plain; charset="UTF-8" Hi John, Thanks again. > I think it makes sense to squash 0001 and 0003 together, then 0002 and > 0004 together. > [...] > 0005 doesn't buy us as much in readability since the two lines no longer match. Makes sense. > For the first, we should probably combine in the upper half when using > a 64-bit hash, like this: We could do it if you insist but I'm convinced this is redundant. In a good hash upper 32 bits are as evenly distributed as lower ones so this combining doesn't buy us much. This may even cause more collisions, for values that didn't have them initially. > Further cleanup possible now that we have 64-bit datums: MAC addresses > are always 6 bytes, so abbreviation is no longer relevant -- datum1 is > authoritative. That's in scope for the thread subject but also a > bigger patch, but maybe someone would like to pick it up for PG20. I will pick it up and submit as a separate patch a bit later. -- Best regards, Aleksander Alekseev --00000000000017795d064b9320fb Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-Simplify-abbreviated-key-hashing-using-murmurhash.patch" Content-Disposition: attachment; filename="v3-0001-Simplify-abbreviated-key-hashing-using-murmurhash.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm0q9w2v0 RnJvbSAzY2Q2MjVkMmQ0MjU1NDExMWIzNGQ3MGQwODIwZjY4YzdlYzVkYjExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMTMgSmFuIDIwMjYgMTQ6NTE6MjEgKzAzMDAKU3ViamVjdDog W1BBVENIIHYzIDEvMl0gU2ltcGxpZnkgYWJicmV2aWF0ZWQga2V5IGhhc2hpbmcgdXNpbmcgbXVy bXVyaGFzaDY0KCkKCk5vdyB3aGVuIGFsbCBEYXR1bXMgYXJlIDY0LWJpdCB2YWx1ZXMgd2UgY2Fu IHNpbXBsaWZ5IHRoZSBjb2RlIGJ5IHVzaW5nCm11cm11cmhhc2g2NCgpIGluICpfYWJicmV2X2Nv bnZlcnQoKSBmdW5jdGlvbnMuIEFsc28gcmVwbGFjZSBoYXNoX3VpbnQzMigpCndpdGggbXVybXVy aGFzaDMyKCkgaW4gYSBmZXcgb3RoZXIgcGxhY2VzIGZvciBjb25zaXN0ZW5jeS4KCkF1dGhvcjog QWxla3NhbmRlciBBbGVrc2VldiA8YWxla3NhbmRlckB0aWdlcmRhdGEuY29tPgpTdWdnZXN0ZWQt Ynk6IEpvaG4gTmF5bG9yIDxqb2huY25heWxvcmxzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEpv aG4gTmF5bG9yIDxqb2huY25heWxvcmxzQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQUo3YzZUTVBoRFJRTW1rVUhQdjhvT0s5N0IxbVI4TlJTNjFEZ2pwZGFaVVBB d2FlWlElNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMg ICAgfCAgNiArKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jICAgfCAgOSArKy0t LS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9tYWMuYyAgICAgfCAxMSArKystLS0tLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L25ldHdvcmsuYyB8ICA2ICstLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L251bWVyaWMuYyB8ICA1ICstLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdXVp ZC5jICAgIHwgIDYgKy0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIHwgIDkg KystLS0tLS0tCiA3IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDY1N2M1OTE2MThkLi4zMTUyNzBkZGIxMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9hc3luYy5jCkBAIC02NTEsOSArNjUxLDkgQEAgZ2xvYmFsQ2hhbm5lbFRhYmxlSGFz aChjb25zdCB2b2lkICprZXksIHNpemVfdCBzaXplLCB2b2lkICphcmcpCiAJY29uc3QgR2xvYmFs Q2hhbm5lbEtleSAqayA9IChjb25zdCBHbG9iYWxDaGFubmVsS2V5ICopIGtleTsKIAlkc2hhc2hf aGFzaCBoOwogCi0JaCA9IERhdHVtR2V0VUludDMyKGhhc2hfdWludDMyKGstPmRib2lkKSk7Ci0J aCBePSBEYXR1bUdldFVJbnQzMihoYXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBrLT5j aGFubmVsLAotCQkJCQkJCQkgc3RybmxlbihrLT5jaGFubmVsLCBOQU1FREFUQUxFTikpKTsKKwlo ID0gbXVybXVyaGFzaDMyKGstPmRib2lkKTsKKwloIF49IGhhc2hfYW55KChjb25zdCB1bnNpZ25l ZCBjaGFyICopIGstPmNoYW5uZWwsCisJCQkJICBzdHJubGVuKGstPmNoYW5uZWwsIE5BTUVEQVRB TEVOKSk7CiAKIAlyZXR1cm4gaDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ieXRlYS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMKaW5kZXggZmQ3NjYyZDQx ZWUuLmYzMmJkMjNkMDNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYnl0ZWEu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYnl0ZWEuYwpAQCAtMTExMCwxNyArMTExMCwx MiBAQCBieXRlYV9hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5hbCwgU29ydFN1cHBvcnQgc3N1 cCkKIAkJCQkJCQkJICAgTWluKGxlbiwgUEdfQ0FDSEVfTElORV9TSVpFKSkpOwogCiAJaWYgKGxl biA+IFBHX0NBQ0hFX0xJTkVfU0laRSkKLQkJaGFzaCBePSBEYXR1bUdldFVJbnQzMihoYXNoX3Vp bnQzMigodWludDMyKSBsZW4pKTsKKwkJaGFzaCBePSBtdXJtdXJoYXNoMzIoKHVpbnQzMikgbGVu KTsKIAogCWFkZEh5cGVyTG9nTG9nKCZic3MtPmZ1bGxfY2FyZCwgaGFzaCk7CiAKIAkvKiBIYXNo IGFiYnJldmlhdGVkIGtleSAqLwotCXsKLQkJdWludDMyCQl0bXA7Ci0KLQkJdG1wID0gRGF0dW1H ZXRVSW50MzIocmVzKSBeICh1aW50MzIpIChEYXR1bUdldFVJbnQ2NChyZXMpID4+IDMyKTsKLQkJ aGFzaCA9IERhdHVtR2V0VUludDMyKGhhc2hfdWludDMyKHRtcCkpOwotCX0KKwloYXNoID0gKHVp bnQzMikgbXVybXVyaGFzaDY0KERhdHVtR2V0VUludDY0KHJlcykpOwogCiAJYWRkSHlwZXJMb2dM b2coJmJzcy0+YWJicl9jYXJkLCBoYXNoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L21hYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21hYy5jCmluZGV4IGYxNDY3NWRl YTQwLi4wNjU4ODQ2ZjI3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21hYy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tYWMuYwpAQCAtNDkyLDE3ICs0OTIsMTIgQEAg bWFjYWRkcl9hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5hbCwgU29ydFN1cHBvcnQgc3N1cCkK IAl1c3MtPmlucHV0X2NvdW50ICs9IDE7CiAKIAkvKgotCSAqIENhcmRpbmFsaXR5IGVzdGltYXRp b24uIFRoZSBlc3RpbWF0ZSB1c2VzIHVpbnQzMiwgc28gWE9SIHRoZSB0d28gMzItYml0Ci0JICog aGFsdmVzIHRvZ2V0aGVyIHRvIHByb2R1Y2Ugc2xpZ2h0bHkgbW9yZSBlbnRyb3B5LiBUaGUgdHdv IHplcm9lZCBieXRlcwotCSAqIHdvbid0IGhhdmUgYW55IHByYWN0aWNhbCBpbXBhY3Qgb24gdGhp cyBvcGVyYXRpb24uCisJICogQ2FyZGluYWxpdHkgZXN0aW1hdGlvbi4gVGhlIGVzdGltYXRlIHVz ZXMgdWludDMyLCBzbyB3ZSBoYXNoIHRoZSBmdWxsCisJICogNjQtYml0IHZhbHVlIGFuZCB0YWtl IHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuCiAJICovCiAJaWYgKHVzcy0+ZXN0aW1h dGluZykKIAl7Ci0JCXVpbnQzMgkJdG1wOwotCi0JCXRtcCA9IERhdHVtR2V0VUludDMyKHJlcykg XiAodWludDMyKSAoRGF0dW1HZXRVSW50NjQocmVzKSA+PiAzMik7Ci0KLQkJYWRkSHlwZXJMb2dM b2coJnVzcy0+YWJicl9jYXJkLCBEYXR1bUdldFVJbnQzMihoYXNoX3VpbnQzMih0bXApKSk7CisJ CWFkZEh5cGVyTG9nTG9nKCZ1c3MtPmFiYnJfY2FyZCwgKHVpbnQzMikgbXVybXVyaGFzaDY0KERh dHVtR2V0VUludDY0KHJlcykpKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L25ldHdvcmsuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrLmMKaW5k ZXggM2EyMDAyMDk3ZGQuLmMyMjZhZjVjYTgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvbmV0d29yay5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrLmMKQEAg LTczOSwxMSArNzM5LDcgQEAgbmV0d29ya19hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5hbCwg U29ydFN1cHBvcnQgc3N1cCkKIAkvKiBIYXNoIGFiYnJldmlhdGVkIGtleSAqLwogCWlmICh1c3Mt PmVzdGltYXRpbmcpCiAJewotCQl1aW50MzIJCXRtcDsKLQotCQl0bXAgPSBEYXR1bUdldFVJbnQz MihyZXMpIF4gKHVpbnQzMikgKERhdHVtR2V0VUludDY0KHJlcykgPj4gMzIpOwotCi0JCWFkZEh5 cGVyTG9nTG9nKCZ1c3MtPmFiYnJfY2FyZCwgRGF0dW1HZXRVSW50MzIoaGFzaF91aW50MzIodG1w KSkpOworCQlhZGRIeXBlckxvZ0xvZygmdXNzLT5hYmJyX2NhcmQsICh1aW50MzIpIG11cm11cmhh c2g2NChEYXR1bUdldFVJbnQ2NChyZXMpKSk7CiAJfQogCiAJcmV0dXJuIHJlczsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvbnVtZXJpYy5jCmluZGV4IGQyNWI4YWQ1MDVkLi5iYmUyNTgxZjBiNyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvbnVtZXJpYy5jCkBAIC0yMzk3LDEwICsyMzk3LDcgQEAgbnVtZXJpY19hYmJyZXZfY29udmVy dF92YXIoY29uc3QgTnVtZXJpY1ZhciAqdmFyLCBOdW1lcmljU29ydFN1cHBvcnQgKm5zcykKIAog CWlmIChuc3MtPmVzdGltYXRpbmcpCiAJewotCQl1aW50MzIJCXRtcCA9ICgodWludDMyKSByZXN1 bHQKLQkJCQkJCSAgIF4gKHVpbnQzMikgKCh1aW50NjQpIHJlc3VsdCA+PiAzMikpOwotCi0JCWFk ZEh5cGVyTG9nTG9nKCZuc3MtPmFiYnJfY2FyZCwgRGF0dW1HZXRVSW50MzIoaGFzaF91aW50MzIo dG1wKSkpOworCQlhZGRIeXBlckxvZ0xvZygmbnNzLT5hYmJyX2NhcmQsICh1aW50MzIpIG11cm11 cmhhc2g2NChyZXN1bHQpKTsKIAl9CiAKIAlyZXR1cm4gTnVtZXJpY0FiYnJldkdldERhdHVtKHJl c3VsdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdXVpZC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3V1aWQuYwppbmRleCA2ZWUzNzUyYWM3OC4uODg4ODAyYzMwMTIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC91dWlkLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3V1aWQuYwpAQCAtMzk2LDExICszOTYsNyBAQCB1dWlkX2FiYnJldl9jb252ZXJ0 KERhdHVtIG9yaWdpbmFsLCBTb3J0U3VwcG9ydCBzc3VwKQogCiAJaWYgKHVzcy0+ZXN0aW1hdGlu ZykKIAl7Ci0JCXVpbnQzMgkJdG1wOwotCi0JCXRtcCA9IERhdHVtR2V0VUludDMyKHJlcykgXiAo dWludDMyKSAoRGF0dW1HZXRVSW50NjQocmVzKSA+PiAzMik7Ci0KLQkJYWRkSHlwZXJMb2dMb2co JnVzcy0+YWJicl9jYXJkLCBEYXR1bUdldFVJbnQzMihoYXNoX3VpbnQzMih0bXApKSk7CisJCWFk ZEh5cGVyTG9nTG9nKCZ1c3MtPmFiYnJfY2FyZCwgKHVpbnQzMikgbXVybXVyaGFzaDY0KERhdHVt R2V0VUludDY0KHJlcykpKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXgg N2NhZjcwMGZkNjEuLmVhM2Q0ZGNmMThiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKQEAgLTIx NTUsMTcgKzIxNTUsMTIgQEAgdmFyc3RyX2FiYnJldl9jb252ZXJ0KERhdHVtIG9yaWdpbmFsLCBT b3J0U3VwcG9ydCBzc3VwKQogCQkJCQkJCQkgICBNaW4obGVuLCBQR19DQUNIRV9MSU5FX1NJWkUp KSk7CiAKIAlpZiAobGVuID4gUEdfQ0FDSEVfTElORV9TSVpFKQotCQloYXNoIF49IERhdHVtR2V0 VUludDMyKGhhc2hfdWludDMyKCh1aW50MzIpIGxlbikpOworCQloYXNoIF49IG11cm11cmhhc2gz MigodWludDMyKSBsZW4pOwogCiAJYWRkSHlwZXJMb2dMb2coJnNzcy0+ZnVsbF9jYXJkLCBoYXNo KTsKIAogCS8qIEhhc2ggYWJicmV2aWF0ZWQga2V5ICovCi0JewotCQl1aW50MzIJCXRtcDsKLQot CQl0bXAgPSBEYXR1bUdldFVJbnQzMihyZXMpIF4gKHVpbnQzMikgKERhdHVtR2V0VUludDY0KHJl cykgPj4gMzIpOwotCQloYXNoID0gRGF0dW1HZXRVSW50MzIoaGFzaF91aW50MzIodG1wKSk7Ci0J fQorCWhhc2ggPSAodWludDMyKSBtdXJtdXJoYXNoNjQoRGF0dW1HZXRVSW50NjQocmVzKSk7CiAK IAlhZGRIeXBlckxvZ0xvZygmc3NzLT5hYmJyX2NhcmQsIGhhc2gpOwogCi0tIAoyLjQzLjAKCg== --00000000000017795d064b9320fb Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0002-Avoid-unnecessary-type-casting-when-using-hash_an.patch" Content-Disposition: attachment; filename="v3-0002-Avoid-unnecessary-type-casting-when-using-hash_an.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm0q9w351 RnJvbSAxN2QyM2M2MjAzYzcyN2ViM2IwYTllMWY0OTkzYTRmYzYzZjVlNzM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMyBGZWIgMjAyNiAxNjo0NToxMCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjMgMi8yXSBBdm9pZCB1bm5lY2Vzc2FyeSB0eXBlIGNhc3Rpbmcgd2hlbiB1c2luZyBo YXNoX2FueSgpCgpoYXNoX2FueSgpIGlzIG1lcmVseSBhIHdyYXBwZXIgZm9yIGhhc2hfYnl0ZXMo KS4gQ2FsbCBpdCBkaXJlY3RseSB3aGVuIHBvc3NpYmxlCmluIG9yZGVyIHRvIGF2b2lkIHVubmVj ZXNzYXJ5IHR5cGUgY2FzdGluZy4KCkFkZGl0aW9uYWxseSwgaW1wcm92ZSB0aGUgY29tbWVudCBm b3IgYWRkSHlwZXJMb2dMb2coKS5QcmV2aW91c2x5IHRoZSBjb21tZW50CnN1Z2dlc3RlZCB0byB1 c2UgaGFzaF9hbnkoKSB3aGljaCByZXR1cm4gdmFsdWUgaXMgRGF0dW0uIFNpbmNlIHRoZSBhcmd1 bWVudCBvZgphZGRIeXBlckxvZ0xvZygpIGlzIHVpbnQzMiwgcmVjb21tZW5kaW5nIGhhc2hfYnl0 ZXMoKSBpcyBtb3JlIGFwcHJvcHJpYXRlLgoKQXV0aG9yOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxh bGVrc2FuZGVyQHRpZ2VyZGF0YS5jb20+ClN1Z2dlc3RlZC1ieTogSm9obiBOYXlsb3IgPGpvaG5j bmF5bG9ybHNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogSm9obiBOYXlsb3IgPGpvaG5jbmF5bG9y bHNAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBSjdjNlRNUGhE UlFNbWtVSFB2OG9PSzk3QjFtUjhOUlM2MURnanBkYVpVUEF3YWVaUSU0MG1haWwuZ21haWwuY29t CgpmaXgKLS0tCiBjb250cmliL2x0cmVlL2x0cmVlX29wLmMgICAgICAgICAgICAgICAgICAgfCAy ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvYmVybm91bGxpLmMgfCA0ICsrLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9zeXN0ZW0uYyAgICB8IDQgKystLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyAgICAgICAgICAgICAgIHwgOCArKysrLS0tLQogc3Jj L2JhY2tlbmQvbGliL2h5cGVybG9nbG9nLmMgICAgICAgICAgICAgIHwgMiArLQogc3JjL2JhY2tl bmQvbm9kZXMvYml0bWFwc2V0LmMgICAgICAgICAgICAgIHwgNCArKy0tCiBzcmMvYmFja2VuZC90 c2VhcmNoL3RzX3R5cGFuYWx5emUuYyAgICAgICAgfCA0ICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9ieXRlYS5jICAgICAgICAgICAgICB8IDQgKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25iX2dpbi5jICAgICAgICAgIHwgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25i X3V0aWwuYyAgICAgICAgIHwgNCArKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5j ICAgICAgICAgICAgfCA0ICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5j ICAgICAgICB8IDggKysrKy0tLS0KIDEyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyks IDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbHRyZWUvbHRyZWVfb3AuYyBi L2NvbnRyaWIvbHRyZWUvbHRyZWVfb3AuYwppbmRleCBjMWZjNzdmYzgwNC4uYTlhMWJjZTA4NjEg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbHRyZWUvbHRyZWVfb3AuYworKysgYi9jb250cmliL2x0cmVl L2x0cmVlX29wLmMKQEAgLTE0NCw3ICsxNDQsNyBAQCBoYXNoX2x0cmVlKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAl3aGlsZSAoYW4gPiAwKQogCXsKLQkJdWludDMyCQlsZXZlbEhhc2ggPSBEYXR1bUdl dFVJbnQzMihoYXNoX2FueSgodW5zaWduZWQgY2hhciAqKSBhbC0+bmFtZSwgYWwtPmxlbikpOwor CQl1aW50MzIJCWxldmVsSGFzaCA9IGhhc2hfYnl0ZXMoKHVuc2lnbmVkIGNoYXIgKikgYWwtPm5h bWUsIGFsLT5sZW4pOwogCiAJCS8qCiAJCSAqIENvbWJpbmUgaGFzaCB2YWx1ZXMgb2Ygc3VjY2Vz c2l2ZSBlbGVtZW50cyBieSBtdWx0aXBseWluZyB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZXNhbXBsZS9iZXJub3VsbGkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJs ZXNhbXBsZS9iZXJub3VsbGkuYwppbmRleCA3ZDg1NjA0NjRjOC4uZjc2OGQ0MDE0M2UgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9iZXJub3VsbGkuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvYmVybm91bGxpLmMKQEAgLTIxNCw4ICsyMTQs OCBAQCBiZXJub3VsbGlfbmV4dHNhbXBsZXR1cGxlKFNhbXBsZVNjYW5TdGF0ZSAqbm9kZSwKIAog CQloYXNoaW5wdXRbMV0gPSB0dXBvZmZzZXQ7CiAKLQkJaGFzaCA9IERhdHVtR2V0VUludDMyKGhh c2hfYW55KChjb25zdCB1bnNpZ25lZCBjaGFyICopIGhhc2hpbnB1dCwKLQkJCQkJCQkJCSAgIChp bnQpIHNpemVvZihoYXNoaW5wdXQpKSk7CisJCWhhc2ggPSBoYXNoX2J5dGVzKChjb25zdCB1bnNp Z25lZCBjaGFyICopIGhhc2hpbnB1dCwKKwkJCQkJCSAgKGludCkgc2l6ZW9mKGhhc2hpbnB1dCkp OwogCQlpZiAoaGFzaCA8IHNhbXBsZXItPmN1dG9mZikKIAkJCWJyZWFrOwogCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9zeXN0ZW0uYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZXNhbXBsZS9zeXN0ZW0uYwppbmRleCBhMmI5YmE4ZWVhOS4uZGUxM2RkOGNh YjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9zeXN0ZW0uYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvc3lzdGVtLmMKQEAgLTIwMiw4ICsy MDIsOCBAQCBzeXN0ZW1fbmV4dHNhbXBsZWJsb2NrKFNhbXBsZVNjYW5TdGF0ZSAqbm9kZSwgQmxv Y2tOdW1iZXIgbmJsb2NrcykKIAogCQloYXNoaW5wdXRbMF0gPSBuZXh0YmxvY2s7CiAKLQkJaGFz aCA9IERhdHVtR2V0VUludDMyKGhhc2hfYW55KChjb25zdCB1bnNpZ25lZCBjaGFyICopIGhhc2hp bnB1dCwKLQkJCQkJCQkJCSAgIChpbnQpIHNpemVvZihoYXNoaW5wdXQpKSk7CisJCWhhc2ggPSBo YXNoX2J5dGVzKChjb25zdCB1bnNpZ25lZCBjaGFyICopIGhhc2hpbnB1dCwKKwkJCQkJCSAgKGlu dCkgc2l6ZW9mKGhhc2hpbnB1dCkpOwogCQlpZiAoaGFzaCA8IHNhbXBsZXItPmN1dG9mZikKIAkJ CWJyZWFrOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDMxNTI3MGRkYjExLi5hZWU4NDUyMThl OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jCkBAIC02NTIsOCArNjUyLDggQEAgZ2xvYmFsQ2hhbm5lbFRh YmxlSGFzaChjb25zdCB2b2lkICprZXksIHNpemVfdCBzaXplLCB2b2lkICphcmcpCiAJZHNoYXNo X2hhc2ggaDsKIAogCWggPSBtdXJtdXJoYXNoMzIoay0+ZGJvaWQpOwotCWggXj0gaGFzaF9hbnko KGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgay0+Y2hhbm5lbCwKLQkJCQkgIHN0cm5sZW4oay0+Y2hh bm5lbCwgTkFNRURBVEFMRU4pKTsKKwloIF49IGhhc2hfYnl0ZXMoKGNvbnN0IHVuc2lnbmVkIGNo YXIgKikgay0+Y2hhbm5lbCwKKwkJCQkgICAgc3RybmxlbihrLT5jaGFubmVsLCBOQU1FREFUQUxF TikpOwogCiAJcmV0dXJuIGg7CiB9CkBAIC0zMjQ0LDggKzMyNDQsOCBAQCBub3RpZmljYXRpb25f aGFzaChjb25zdCB2b2lkICprZXksIFNpemUga2V5c2l6ZSkKIAogCUFzc2VydChrZXlzaXplID09 IHNpemVvZihOb3RpZmljYXRpb24gKikpOwogCS8qIFdlIGRvbid0IGJvdGhlciB0byBpbmNsdWRl IHRoZSBwYXlsb2FkJ3MgdHJhaWxpbmcgbnVsbCBpbiB0aGUgaGFzaCAqLwotCXJldHVybiBEYXR1 bUdldFVJbnQzMihoYXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBrLT5kYXRhLAotCQkJ CQkJCQkgICBrLT5jaGFubmVsX2xlbiArIGstPnBheWxvYWRfbGVuICsgMSkpOworCXJldHVybiBo YXNoX2J5dGVzKChjb25zdCB1bnNpZ25lZCBjaGFyICopIGstPmRhdGEsCisJCQkJCSAgay0+Y2hh bm5lbF9sZW4gKyBrLT5wYXlsb2FkX2xlbiArIDEpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbGliL2h5cGVybG9nbG9nLmMgYi9zcmMvYmFja2VuZC9saWIvaHlwZXJsb2dsb2cu YwppbmRleCBjNzRmMTEyMTdlZi4uMmI4MmZmMTJiMmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2xpYi9oeXBlcmxvZ2xvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9oeXBlcmxvZ2xvZy5jCkBA IC0xNTgsNyArMTU4LDcgQEAgZnJlZUh5cGVyTG9nTG9nKGh5cGVyTG9nTG9nU3RhdGUgKmNTdGF0 ZSkKICAqIEFkZHMgZWxlbWVudCB0byB0aGUgZXN0aW1hdG9yLCBmcm9tIGNhbGxlci1zdXBwbGll ZCBoYXNoLgogICoKICAqIEl0IGlzIGNyaXRpY2FsIHRoYXQgdGhlIGhhc2ggdmFsdWUgcGFzc2Vk IGJlIGFuIGFjdHVhbCBoYXNoIHZhbHVlLCB0eXBpY2FsbHkKLSAqIGdlbmVyYXRlZCB1c2luZyBo YXNoX2FueSgpLiAgVGhlIGFsZ29yaXRobSByZWxpZXMgb24gYSBzcGVjaWZpYyBiaXQtcGF0dGVy bgorICogZ2VuZXJhdGVkIHVzaW5nIGhhc2hfYnl0ZXMoKS4gIFRoZSBhbGdvcml0aG0gcmVsaWVz IG9uIGEgc3BlY2lmaWMgYml0LXBhdHRlcm4KICAqIG9ic2VydmFibGUgaW4gY29uanVuY3Rpb24g d2l0aCBzdG9jaGFzdGljIGF2ZXJhZ2luZy4gIFRoZXJlIG11c3QgYmUgYQogICogdW5pZm9ybSBk aXN0cmlidXRpb24gb2YgYml0cyBpbiBoYXNoIHZhbHVlcyBmb3IgZWFjaCBkaXN0aW5jdCBvcmln aW5hbCB2YWx1ZQogICogb2JzZXJ2ZWQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9i aXRtYXBzZXQuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2JpdG1hcHNldC5jCmluZGV4IDc4NmYzNDNi M2M5Li42OGJiOTM2ODk4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvYml0bWFwc2V0 LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvYml0bWFwc2V0LmMKQEAgLTE0MDUsOCArMTQwNSw4 IEBAIGJtc19oYXNoX3ZhbHVlKGNvbnN0IEJpdG1hcHNldCAqYSkKIAogCWlmIChhID09IE5VTEwp CiAJCXJldHVybiAwOwkJCQkvKiBBbGwgZW1wdHkgc2V0cyBoYXNoIHRvIDAgKi8KLQlyZXR1cm4g RGF0dW1HZXRVSW50MzIoaGFzaF9hbnkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgYS0+d29yZHMs Ci0JCQkJCQkJCSAgIGEtPm53b3JkcyAqIHNpemVvZihiaXRtYXB3b3JkKSkpOworCXJldHVybiBo YXNoX2J5dGVzKChjb25zdCB1bnNpZ25lZCBjaGFyICopIGEtPndvcmRzLAorCQkJCQkgIGEtPm53 b3JkcyAqIHNpemVvZihiaXRtYXB3b3JkKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlw YW5hbHl6ZS5jCmluZGV4IDQ4ZWUwNTBlMzdmLi42Y2E4ZWFkMzk4OCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJj aC90c190eXBhbmFseXplLmMKQEAgLTQ5Niw4ICs0OTYsOCBAQCBsZXhlbWVfaGFzaChjb25zdCB2 b2lkICprZXksIFNpemUga2V5c2l6ZSkKIHsKIAljb25zdCBMZXhlbWVIYXNoS2V5ICpsID0gKGNv bnN0IExleGVtZUhhc2hLZXkgKikga2V5OwogCi0JcmV0dXJuIERhdHVtR2V0VUludDMyKGhhc2hf YW55KChjb25zdCB1bnNpZ25lZCBjaGFyICopIGwtPmxleGVtZSwKLQkJCQkJCQkJICAgbC0+bGVu Z3RoKSk7CisJcmV0dXJuIGhhc2hfYnl0ZXMoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbC0+bGV4 ZW1lLAorCQkJCQkgIGwtPmxlbmd0aCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvYnl0ZWEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jCmluZGV4 IGYzMmJkMjNkMDNjLi4xZTI1NWYwMDU3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2J5dGVhLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMKQEAgLTExMDYs OCArMTEwNiw4IEBAIGJ5dGVhX2FiYnJldl9jb252ZXJ0KERhdHVtIG9yaWdpbmFsLCBTb3J0U3Vw cG9ydCBzc3VwKQogCSAqIGluIG9yZGVyIHRvIGNvbXBlbnNhdGUgZm9yIGNhc2VzIHdoZXJlIGRp ZmZlcmVuY2VzIGFyZSBwYXN0CiAJICogUEdfQ0FDSEVfTElORV9TSVpFIGJ5dGVzLCBzbyBhcyB0 byBsaW1pdCB0aGUgb3ZlcmhlYWQgb2YgaGFzaGluZy4KIAkgKi8KLQloYXNoID0gRGF0dW1HZXRV SW50MzIoaGFzaF9hbnkoKHVuc2lnbmVkIGNoYXIgKikgYXV0aG9yaXRhdGl2ZV9kYXRhLAotCQkJ CQkJCQkgICBNaW4obGVuLCBQR19DQUNIRV9MSU5FX1NJWkUpKSk7CisJaGFzaCA9IGhhc2hfYnl0 ZXMoKHVuc2lnbmVkIGNoYXIgKikgYXV0aG9yaXRhdGl2ZV9kYXRhLAorCQkJCQkgIE1pbihsZW4s IFBHX0NBQ0hFX0xJTkVfU0laRSkpOwogCiAJaWYgKGxlbiA+IFBHX0NBQ0hFX0xJTkVfU0laRSkK IAkJaGFzaCBePSBtdXJtdXJoYXNoMzIoKHVpbnQzMikgbGVuKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uYl9naW4uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u Yl9naW4uYwppbmRleCBkNzJhNjQ0MWM1ZS4uZjVkYmQ1NTg5ZDMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uYl9naW4uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmJfZ2luLmMKQEAgLTEzMzMsNyArMTMzMyw3IEBAIG1ha2VfdGV4dF9rZXkoY2hhciBmbGFn LCBjb25zdCBjaGFyICpzdHIsIGludCBsZW4pCiAJewogCQl1aW50MzIJCWhhc2h2YWw7CiAKLQkJ aGFzaHZhbCA9IERhdHVtR2V0VUludDMyKGhhc2hfYW55KChjb25zdCB1bnNpZ25lZCBjaGFyICop IHN0ciwgbGVuKSk7CisJCWhhc2h2YWwgPSBoYXNoX2J5dGVzKChjb25zdCB1bnNpZ25lZCBjaGFy ICopIHN0ciwgbGVuKTsKIAkJc25wcmludGYoaGFzaGJ1Ziwgc2l6ZW9mKGhhc2hidWYpLCAiJTA4 eCIsIGhhc2h2YWwpOwogCQlzdHIgPSBoYXNoYnVmOwogCQlsZW4gPSA4OwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX3V0aWwuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uYl91dGlsLmMKaW5kZXggOTFmYjllYTA5YmYuLjkxYmZmOWZkYTNhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfdXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uYl91dGlsLmMKQEAgLTE0NTEsOCArMTQ1MSw4IEBAIEpzb25iSGFzaFNjYWxh clZhbHVlKGNvbnN0IEpzb25iVmFsdWUgKnNjYWxhclZhbCwgdWludDMyICpoYXNoKQogCQkJdG1w ID0gMHgwMTsKIAkJCWJyZWFrOwogCQljYXNlIGpidlN0cmluZzoKLQkJCXRtcCA9IERhdHVtR2V0 VUludDMyKGhhc2hfYW55KChjb25zdCB1bnNpZ25lZCBjaGFyICopIHNjYWxhclZhbC0+dmFsLnN0 cmluZy52YWwsCi0JCQkJCQkJCQkJICBzY2FsYXJWYWwtPnZhbC5zdHJpbmcubGVuKSk7CisJCQl0 bXAgPSBoYXNoX2J5dGVzKChjb25zdCB1bnNpZ25lZCBjaGFyICopIHNjYWxhclZhbC0+dmFsLnN0 cmluZy52YWwsCisJCQkJCQkJIHNjYWxhclZhbC0+dmFsLnN0cmluZy5sZW4pOwogCQkJYnJlYWs7 CiAJCWNhc2UgamJ2TnVtZXJpYzoKIAkJCS8qIE11c3QgaGFzaCBlcXVhbCBudW1lcmljcyB0byBl cXVhbCBoYXNoIGNvZGVzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFy bGVuYS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYwppbmRleCBlYTNkNGRjZjE4 Yi4uMzA1NDU5MDQxMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5h LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYwpAQCAtMjE1MSw4ICsyMTUx LDggQEAgdmFyc3RyX2FiYnJldl9jb252ZXJ0KERhdHVtIG9yaWdpbmFsLCBTb3J0U3VwcG9ydCBz c3VwKQogCSAqIGluIG9yZGVyIHRvIGNvbXBlbnNhdGUgZm9yIGNhc2VzIHdoZXJlIGRpZmZlcmVu Y2VzIGFyZSBwYXN0CiAJICogUEdfQ0FDSEVfTElORV9TSVpFIGJ5dGVzLCBzbyBhcyB0byBsaW1p dCB0aGUgb3ZlcmhlYWQgb2YgaGFzaGluZy4KIAkgKi8KLQloYXNoID0gRGF0dW1HZXRVSW50MzIo aGFzaF9hbnkoKHVuc2lnbmVkIGNoYXIgKikgYXV0aG9yaXRhdGl2ZV9kYXRhLAotCQkJCQkJCQkg ICBNaW4obGVuLCBQR19DQUNIRV9MSU5FX1NJWkUpKSk7CisJaGFzaCA9IGhhc2hfYnl0ZXMoKHVu c2lnbmVkIGNoYXIgKikgYXV0aG9yaXRhdGl2ZV9kYXRhLAorCQkJCQkgIE1pbihsZW4sIFBHX0NB Q0hFX0xJTkVfU0laRSkpOwogCiAJaWYgKGxlbiA+IFBHX0NBQ0hFX0xJTkVfU0laRSkKIAkJaGFz aCBePSBtdXJtdXJoYXNoMzIoKHVpbnQzMikgbGVuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2Nh Y2hlLmMKaW5kZXggNzAxYzI5NGI4OGQuLjY4YmJmMGI5NzFjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9mdW5jY2FjaGUuYwpAQCAtODksMTMgKzg5LDEzIEBAIGNmdW5jX2hhc2goY29uc3Qgdm9pZCAq a2V5LCBTaXplIGtleXNpemUpCiAKIAlBc3NlcnQoa2V5c2l6ZSA9PSBzaXplb2YoQ2FjaGVkRnVu Y3Rpb25IYXNoS2V5KSk7CiAJLyogSGFzaCBhbGwgdGhlIGZpeGVkIGZpZWxkcyBleGNlcHQgY2Fs bFJlc3VsdFR5cGUgKi8KLQloID0gRGF0dW1HZXRVSW50MzIoaGFzaF9hbnkoKGNvbnN0IHVuc2ln bmVkIGNoYXIgKikgaywKLQkJCQkJCQkJb2Zmc2V0b2YoQ2FjaGVkRnVuY3Rpb25IYXNoS2V5LCBj YWxsUmVzdWx0VHlwZSkpKTsKKwloID0gaGFzaF9ieXRlcygoY29uc3QgdW5zaWduZWQgY2hhciAq KSBrLAorCQkJCSAgIG9mZnNldG9mKENhY2hlZEZ1bmN0aW9uSGFzaEtleSwgY2FsbFJlc3VsdFR5 cGUpKTsKIAkvKiBJbmNvcnBvcmF0ZSBpbnB1dCBhcmd1bWVudCB0eXBlcyAqLwogCWlmIChrLT5u YXJncyA+IDApCiAJCWggPSBoYXNoX2NvbWJpbmUoaCwKLQkJCQkJCSBEYXR1bUdldFVJbnQzMiho YXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBrLT5hcmd0eXBlcywKLQkJCQkJCQkJCQkJ CSBrLT5uYXJncyAqIHNpemVvZihPaWQpKSkpOworCQkJCQkJIGhhc2hfYnl0ZXMoKGNvbnN0IHVu c2lnbmVkIGNoYXIgKikgay0+YXJndHlwZXMsCisJCQkJCQkJCQlrLT5uYXJncyAqIHNpemVvZihP aWQpKSk7CiAJLyogSW5jb3Jwb3JhdGUgY2FsbFJlc3VsdFR5cGUgaWYgcHJlc2VudCAqLwogCWlm IChrLT5jYWxsUmVzdWx0VHlwZSkKIAkJaCA9IGhhc2hfY29tYmluZShoLCBoYXNoUm93VHlwZShr LT5jYWxsUmVzdWx0VHlwZSkpOwotLSAKMi40My4wCgo= --00000000000017795d064b9320fb--