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 1smq1S-008Xbp-4e for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Sep 2024 07:38:19 +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 1smq1O-00CQX5-Lg for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Sep 2024 07:38:15 +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.94.2) (envelope-from ) id 1smq1O-00CQTp-34 for pgsql-hackers@lists.postgresql.org; Sat, 07 Sep 2024 07:38:14 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1smq1K-000Z2Z-B2 for pgsql-hackers@postgresql.org; Sat, 07 Sep 2024 07:38:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1725694686; bh=/Dk/hEEbIXgufgi/pM8HiGH8CcVtKu36sjZCOj7wBSQ=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=FzpMiRrXzsx9uvH8B9fk2nkz6GQ1ZZTOUxFTfwKDZfqAWQ2xbR+6Mw/vJNvdrgGs6 ukkaI2CXh8oLtL/gDlPd39r7ykEw//ZR4qydpSTA50SRVWLTrqHx1x9ivMC4MI63mI PtO0zqK3w5d5x0aOVc1fgrG+x1g2LDrRCTK3bJ8VHYzwn2Xq2HYgq9LfpQUIHNpU30 1s1FPezyjIuOwLN5rrchIvcyIRnOsvVklM/aRSQZWKzdecSVWjHXqPePW+pqMr/p1e WUd0zMMFZgBxJY37v97sQa5QwIqnMRSLO/F26FLkfQ3jTkknm+/HxY2HvjHUW7fhD8 pjqnZ1QlrVlLQ== Received: from [172.30.32.46] (unknown [172.30.32.46]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.melnikov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 7EDDF5FFDD; Sat, 7 Sep 2024 10:38:06 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------jid593G8PxIXgq4oh1atpbAY" Message-ID: Date: Sat, 7 Sep 2024 10:38:06 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Use XLOG_CONTROL_FILE macro everywhere? To: Kyotaro Horiguchi Cc: daniel@yesql.se, peter@eisentraut.org, tgl@sss.pgh.pa.us, robertmhaas@gmail.com, michael@paquier.xyz, pgsql-hackers@postgresql.org References: <54B16BF2-6979-4BB0-BE39-118D32B1BC58@yesql.se> <20240903.143756.562059416508617821.horikyota.ntt@gmail.com> <20240904.170927.1051663922860738119.horikyota.ntt@gmail.com> Content-Language: en-US From: "Anton A. Melnikov" In-Reply-To: <20240904.170927.1051663922860738119.horikyota.ntt@gmail.com> X-KSMG-AntiPhishing: NotDetected, bases: 2024/09/07 06:00:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/09/07 05:33:00 #26536609 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------jid593G8PxIXgq4oh1atpbAY Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 04.09.2024 11:09, Kyotaro Horiguchi wrote: > Instead, I'd like to propose separating the file and > path-related definitions from xlog_internal.h, as shown in the > attached first patch. This change would allow some modules to include > files without unnecessary details. > > The second file is your patch, adjusted based on the first patch. > > I’d appreciate hearing from others on whether they find the first > patch worthwhile. If it’s not considered worthwhile, then I believe > having postmaster include xlog_internal.h would be the best approach. I really liked the idea of ​​extracting only the necessary and logically complete part from xlog_internal.h. But now the presence of macros related to the segment sizes in the xlogfilepaths.h seems does not correspond to its name. So i suggest further extract size-related definition and macros from xlogfilepaths.h to xlogfilesize.h. Here is a patch that tries to do this based on the your first patch. Would be glad to hear your opinion. With the best wishes, -- Anton A. Melnikov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --------------jid593G8PxIXgq4oh1atpbAY Content-Type: text/x-patch; charset=UTF-8; name="0001-Extract-size-related-macros-to-separate-header.patch" Content-Disposition: attachment; filename*0="0001-Extract-size-related-macros-to-separate-header.patch" Content-Transfer-Encoding: base64 RnJvbSA0YjZhMTJmNmVhYWM5OGVlMjJkZDYzZDY0NDMxOTY4MzU3OTA1ZDc3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW50b24gQS4gTWVsbmlrb3YiIDxhLm1lbG5pa292 QHBvc3RncmVzcHJvLnJ1PgpEYXRlOiBTYXQsIDcgU2VwIDIwMjQgMTA6MTg6NTEgKzAzMDAK U3ViamVjdDogW1BBVENIXSBFeHRyYWN0IHNpemUtcmVsYXRlZCBtYWNyb3MgZnJvbSAgeGxv Z2ZpbGVwYXRocy5oIHRvCiB4bG9nZmlsZXNpemUuaAoKLS0tCiBzcmMvaW5jbHVkZS9hY2Nl c3MveGxvZ2ZpbGVwYXRocy5oIHwgNjUgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9p bmNsdWRlL2FjY2Vzcy94bG9nZmlsZXNpemUuaCAgfCA4MyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgNjMgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dm aWxlc2l6ZS5oCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dmaWxlcGF0 aHMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nZmlsZXBhdGhzLmgKaW5kZXggY2RkZTJj Y2FlNC4uZWQyOGNmOTc1ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dm aWxlcGF0aHMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ2ZpbGVwYXRocy5oCkBA IC0xMiw2ICsxMiw3IEBACiAjZGVmaW5lIFhMT0dfRklMRVBBVEhTX0gKIAogI2luY2x1ZGUg ImFjY2Vzcy94bG9nZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nZmlsZXNpemUuaCIK IAogLyoKICAqIFRoZSBYTG9nIGRpcmVjdG9yeSBhbmQgZmlsZXMgKHJlbGF0aXZlIHRvICRQ R0RBVEEpCkBAIC0zNCw3NSArMzUsMTMgQEAKIC8qIGZpbGVzIHRvIHNpZ25hbCBwcm9tb3Rp b24gdG8gcHJpbWFyeSAqLwogI2RlZmluZSBQUk9NT1RFX1NJR05BTF9GSUxFCQkicHJvbW90 ZSIKIAotLyogd2FsX3NlZ21lbnRfc2l6ZSBjYW4gcmFuZ2UgZnJvbSAxTUIgdG8gMUdCICov Ci0jZGVmaW5lIFdhbFNlZ01pblNpemUgMTAyNCAqIDEwMjQKLSNkZWZpbmUgV2FsU2VnTWF4 U2l6ZSAxMDI0ICogMTAyNCAqIDEwMjQKIAotLyogZGVmYXVsdCBudW1iZXIgb2YgbWluIGFu ZCBtYXggd2FsIHNlZ21lbnRzICovCi0jZGVmaW5lIERFRkFVTFRfTUlOX1dBTF9TRUdTIDUK LSNkZWZpbmUgREVGQVVMVF9NQVhfV0FMX1NFR1MgNjQKLQotCi0vKgotICogVGhlc2UgbWFj cm9zIGVuY2Fwc3VsYXRlIGtub3dsZWRnZSBhYm91dCB0aGUgZXhhY3QgbGF5b3V0IG9mIFhM b2cgZmlsZQotICogbmFtZXMsIHRpbWVsaW5lIGhpc3RvcnkgZmlsZSBuYW1lcywgYW5kIGFy Y2hpdmUtc3RhdHVzIGZpbGUgbmFtZXMuCi0gKi8KKy8qIE1heGltdW0gbGVuZ3RoIG9mIFhM b2cgZmlsZSBuYW1lIGluY2x1ZGluZyBwb3NzaWJsZSBzdWZmaXggKi8KICNkZWZpbmUgTUFY Rk5BTUVMRU4JCTY0CiAKIC8qIExlbmd0aCBvZiBYTG9nIGZpbGUgbmFtZSAqLwogI2RlZmlu ZSBYTE9HX0ZOQU1FX0xFTgkgICAyNAogCi0vKiBjaGVjayB0aGF0IHRoZSBnaXZlbiBzaXpl IGlzIGEgdmFsaWQgd2FsX3NlZ21lbnRfc2l6ZSAqLwotI2RlZmluZSBJc1Bvd2VyT2YyKHgp ICh4ID4gMCAmJiAoKHgpICYgKCh4KS0xKSkgPT0gMCkKLSNkZWZpbmUgSXNWYWxpZFdhbFNl Z1NpemUoc2l6ZSkgXAotCSAoSXNQb3dlck9mMihzaXplKSAmJiBcCi0JICgoc2l6ZSkgPj0g V2FsU2VnTWluU2l6ZSAmJiAoc2l6ZSkgPD0gV2FsU2VnTWF4U2l6ZSkpCi0KLS8qIE51bWJl ciBvZiBzZWdtZW50cyBpbiBhIGxvZ2ljYWwgWExPRyBmaWxlICovCi0jZGVmaW5lIFhMb2dT ZWdtZW50c1BlclhMb2dJZCh3YWxfc2Vnc3pfYnl0ZXMpCVwKLQkoVUlOVDY0Q09OU1QoMHgx MDAwMDAwMDApIC8gKHdhbF9zZWdzel9ieXRlcykpCi0KLS8qCi0gKiBDb21wdXRlIGFuIFhM b2dSZWNQdHIgZnJvbSBhIHNlZ21lbnQgbnVtYmVyIGFuZCBvZmZzZXQuCi0gKi8KLSNkZWZp bmUgWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8sIG9mZnNldCwgd2FsX3NlZ3N6X2J5 dGVzLCBkZXN0KSBcCi0JCShkZXN0KSA9IChzZWdubykgKiAod2FsX3NlZ3N6X2J5dGVzKSAr IChvZmZzZXQpCi0vKgotICogQ29tcHV0ZSBhIHNlZ21lbnQgbnVtYmVyIGZyb20gYW4gWExv Z1JlY1B0ci4KLSAqCi0gKiBGb3IgWExCeXRlVG9TZWcsIGRvIHRoZSBjb21wdXRhdGlvbiBh dCBmYWNlIHZhbHVlLiAgRm9yIFhMQnl0ZVRvUHJldlNlZywKLSAqIGEgYm91bmRhcnkgYnl0 ZSBpcyB0YWtlbiB0byBiZSBpbiB0aGUgcHJldmlvdXMgc2VnbWVudC4gIFRoaXMgaXMgc3Vp dGFibGUKLSAqIGZvciBkZWNpZGluZyB3aGljaCBzZWdtZW50IHRvIHdyaXRlIGdpdmVuIGEg cG9pbnRlciB0byBhIHJlY29yZCBlbmQsCi0gKiBmb3IgZXhhbXBsZS4KLSAqLwotI2RlZmlu ZSBYTEJ5dGVUb1NlZyh4bHJwLCBsb2dTZWdObywgd2FsX3NlZ3N6X2J5dGVzKSBcCi0JbG9n U2VnTm8gPSAoeGxycCkgLyAod2FsX3NlZ3N6X2J5dGVzKQotCi0jZGVmaW5lIFhMQnl0ZVRv UHJldlNlZyh4bHJwLCBsb2dTZWdObywgd2FsX3NlZ3N6X2J5dGVzKSBcCi0JbG9nU2VnTm8g PSAoKHhscnApIC0gMSkgLyAod2FsX3NlZ3N6X2J5dGVzKQotCi0vKiBDb21wdXRlIHRoZSBp bi1zZWdtZW50IG9mZnNldCBmcm9tIGFuIFhMb2dSZWNQdHIuICovCi0jZGVmaW5lIFhMb2dT ZWdtZW50T2Zmc2V0KHhsb2dwdHIsIHdhbF9zZWdzel9ieXRlcykJXAotCSgoeGxvZ3B0cikg JiAoKHdhbF9zZWdzel9ieXRlcykgLSAxKSkKLQotLyoKLSAqIENvbnZlcnQgdmFsdWVzIG9m IEdVQ3MgbWVhc3VyZWQgaW4gbWVnYWJ5dGVzIHRvIGVxdWl2LiBzZWdtZW50IGNvdW50Lgot ICogUm91bmRzIGRvd24uCi0gKi8KLSNkZWZpbmUgWExvZ01CVmFyVG9TZWdzKG1idmFyLCB3 YWxfc2Vnc3pfYnl0ZXMpIFwKLQkoKG1idmFyKSAvICgod2FsX3NlZ3N6X2J5dGVzKSAvICgx MDI0ICogMTAyNCkpKQotCi0vKgotICogSXMgYW4gWExvZ1JlY1B0ciB3aXRoaW4gYSBwYXJ0 aWN1bGFyIFhMT0cgc2VnbWVudD8KLSAqCi0gKiBGb3IgWExCeXRlSW5TZWcsIGRvIHRoZSBj b21wdXRhdGlvbiBhdCBmYWNlIHZhbHVlLiAgRm9yIFhMQnl0ZUluUHJldlNlZywKLSAqIGEg Ym91bmRhcnkgYnl0ZSBpcyB0YWtlbiB0byBiZSBpbiB0aGUgcHJldmlvdXMgc2VnbWVudC4K LSAqLwotI2RlZmluZSBYTEJ5dGVJblNlZyh4bHJwLCBsb2dTZWdObywgd2FsX3NlZ3N6X2J5 dGVzKSBcCi0JKCgoeGxycCkgLyAod2FsX3NlZ3N6X2J5dGVzKSkgPT0gKGxvZ1NlZ05vKSkK LQotI2RlZmluZSBYTEJ5dGVJblByZXZTZWcoeGxycCwgbG9nU2VnTm8sIHdhbF9zZWdzel9i eXRlcykgXAotCSgoKCh4bHJwKSAtIDEpIC8gKHdhbF9zZWdzel9ieXRlcykpID09IChsb2dT ZWdObykpCiAKIC8qCiAgKiBYTE9HIGZpbGUgbmFtZSBoYW5kbGluZyBmdW5jdGlvbnMKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nZmlsZXNpemUuaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy94bG9nZmlsZXNpemUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi5mZWYzMGUwMmE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2dmaWxlc2l6ZS5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiB4bG9nZmls ZXNpemUuaAorICoKKyAqIFNpemUgZGVmaW5pdGlvbnMgYW5kIGhhbmRsaW5nIG1hY3JvcyBm b3IgUG9zdGdyZVNRTCB3cml0ZS1haGVhZCBsb2dzLgorICoKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2 ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ2Zp bGVzaXplLmgKKyAqLworCisjaWZuZGVmIFhMT0dfRklMRVNJWkVfSAorI2RlZmluZSBYTE9H X0ZJTEVTSVpFX0gKKworI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorCisvKiB3YWxf c2VnbWVudF9zaXplIGNhbiByYW5nZSBmcm9tIDFNQiB0byAxR0IgKi8KKyNkZWZpbmUgV2Fs U2VnTWluU2l6ZSAxMDI0ICogMTAyNAorI2RlZmluZSBXYWxTZWdNYXhTaXplIDEwMjQgKiAx MDI0ICogMTAyNAorCisvKiBkZWZhdWx0IG51bWJlciBvZiBtaW4gYW5kIG1heCB3YWwgc2Vn bWVudHMgKi8KKyNkZWZpbmUgREVGQVVMVF9NSU5fV0FMX1NFR1MgNQorI2RlZmluZSBERUZB VUxUX01BWF9XQUxfU0VHUyA2NAorCisvKgorICogVGhlc2UgbWFjcm9zIGVuY2Fwc3VsYXRl IGtub3dsZWRnZSBhYm91dCB0aGUgZXhhY3QgbGF5b3V0IG9mIFhMb2cKKyAqIGZpbGVzLCB0 aW1lbGluZSBoaXN0b3J5IGZpbHMgYW5kIGFyY2hpdmUtc3RhdHVzIGZpbHMuCisgKi8KKwor LyogY2hlY2sgdGhhdCB0aGUgZ2l2ZW4gc2l6ZSBpcyBhIHZhbGlkIHdhbF9zZWdtZW50X3Np emUgKi8KKyNkZWZpbmUgSXNQb3dlck9mMih4KSAoeCA+IDAgJiYgKCh4KSAmICgoeCktMSkp ID09IDApCisjZGVmaW5lIElzVmFsaWRXYWxTZWdTaXplKHNpemUpIFwKKwkgKElzUG93ZXJP ZjIoc2l6ZSkgJiYgXAorCSAoKHNpemUpID49IFdhbFNlZ01pblNpemUgJiYgKHNpemUpIDw9 IFdhbFNlZ01heFNpemUpKQorCisvKiBOdW1iZXIgb2Ygc2VnbWVudHMgaW4gYSBsb2dpY2Fs IFhMT0cgZmlsZSAqLworI2RlZmluZSBYTG9nU2VnbWVudHNQZXJYTG9nSWQod2FsX3NlZ3N6 X2J5dGVzKQlcCisJKFVJTlQ2NENPTlNUKDB4MTAwMDAwMDAwKSAvICh3YWxfc2Vnc3pfYnl0 ZXMpKQorCisvKgorICogQ29tcHV0ZSBhbiBYTG9nUmVjUHRyIGZyb20gYSBzZWdtZW50IG51 bWJlciBhbmQgb2Zmc2V0LgorICovCisjZGVmaW5lIFhMb2dTZWdOb09mZnNldFRvUmVjUHRy KHNlZ25vLCBvZmZzZXQsIHdhbF9zZWdzel9ieXRlcywgZGVzdCkgXAorCQkoZGVzdCkgPSAo c2Vnbm8pICogKHdhbF9zZWdzel9ieXRlcykgKyAob2Zmc2V0KQorLyoKKyAqIENvbXB1dGUg YSBzZWdtZW50IG51bWJlciBmcm9tIGFuIFhMb2dSZWNQdHIuCisgKgorICogRm9yIFhMQnl0 ZVRvU2VnLCBkbyB0aGUgY29tcHV0YXRpb24gYXQgZmFjZSB2YWx1ZS4gIEZvciBYTEJ5dGVU b1ByZXZTZWcsCisgKiBhIGJvdW5kYXJ5IGJ5dGUgaXMgdGFrZW4gdG8gYmUgaW4gdGhlIHBy ZXZpb3VzIHNlZ21lbnQuICBUaGlzIGlzIHN1aXRhYmxlCisgKiBmb3IgZGVjaWRpbmcgd2hp Y2ggc2VnbWVudCB0byB3cml0ZSBnaXZlbiBhIHBvaW50ZXIgdG8gYSByZWNvcmQgZW5kLAor ICogZm9yIGV4YW1wbGUuCisgKi8KKyNkZWZpbmUgWExCeXRlVG9TZWcoeGxycCwgbG9nU2Vn Tm8sIHdhbF9zZWdzel9ieXRlcykgXAorCWxvZ1NlZ05vID0gKHhscnApIC8gKHdhbF9zZWdz el9ieXRlcykKKworI2RlZmluZSBYTEJ5dGVUb1ByZXZTZWcoeGxycCwgbG9nU2VnTm8sIHdh bF9zZWdzel9ieXRlcykgXAorCWxvZ1NlZ05vID0gKCh4bHJwKSAtIDEpIC8gKHdhbF9zZWdz el9ieXRlcykKKworLyogQ29tcHV0ZSB0aGUgaW4tc2VnbWVudCBvZmZzZXQgZnJvbSBhbiBY TG9nUmVjUHRyLiAqLworI2RlZmluZSBYTG9nU2VnbWVudE9mZnNldCh4bG9ncHRyLCB3YWxf c2Vnc3pfYnl0ZXMpCVwKKwkoKHhsb2dwdHIpICYgKCh3YWxfc2Vnc3pfYnl0ZXMpIC0gMSkp CisKKy8qCisgKiBDb252ZXJ0IHZhbHVlcyBvZiBHVUNzIG1lYXN1cmVkIGluIG1lZ2FieXRl cyB0byBlcXVpdi4gc2VnbWVudCBjb3VudC4KKyAqIFJvdW5kcyBkb3duLgorICovCisjZGVm aW5lIFhMb2dNQlZhclRvU2VncyhtYnZhciwgd2FsX3NlZ3N6X2J5dGVzKSBcCisJKChtYnZh cikgLyAoKHdhbF9zZWdzel9ieXRlcykgLyAoMTAyNCAqIDEwMjQpKSkKKworLyoKKyAqIElz IGFuIFhMb2dSZWNQdHIgd2l0aGluIGEgcGFydGljdWxhciBYTE9HIHNlZ21lbnQ/CisgKgor ICogRm9yIFhMQnl0ZUluU2VnLCBkbyB0aGUgY29tcHV0YXRpb24gYXQgZmFjZSB2YWx1ZS4g IEZvciBYTEJ5dGVJblByZXZTZWcsCisgKiBhIGJvdW5kYXJ5IGJ5dGUgaXMgdGFrZW4gdG8g YmUgaW4gdGhlIHByZXZpb3VzIHNlZ21lbnQuCisgKi8KKyNkZWZpbmUgWExCeXRlSW5TZWco eGxycCwgbG9nU2VnTm8sIHdhbF9zZWdzel9ieXRlcykgXAorCSgoKHhscnApIC8gKHdhbF9z ZWdzel9ieXRlcykpID09IChsb2dTZWdObykpCisKKyNkZWZpbmUgWExCeXRlSW5QcmV2U2Vn KHhscnAsIGxvZ1NlZ05vLCB3YWxfc2Vnc3pfYnl0ZXMpIFwKKwkoKCgoeGxycCkgLSAxKSAv ICh3YWxfc2Vnc3pfYnl0ZXMpKSA9PSAobG9nU2VnTm8pKQorCisKKyNlbmRpZgkJCQkJCQkv KiBYTE9HX0ZJTEVTSVpFX0ggKi8KLS0gCjIuNDYuMAoK --------------jid593G8PxIXgq4oh1atpbAY--