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 1vEU0D-00CCU5-4k for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Oct 2025 14:51:48 +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 1vEU0A-008y9G-Jf for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Oct 2025 14:51:45 +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 1vEU0A-008y98-5k for pgsql-hackers@lists.postgresql.org; Thu, 30 Oct 2025 14:51:45 +0000 Received: from mail-yx1-xb12a.google.com ([2607:f8b0:4864:20::b12a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vEU07-004ZxN-0M for pgsql-hackers@postgresql.org; Thu, 30 Oct 2025 14:51:44 +0000 Received: by mail-yx1-xb12a.google.com with SMTP id 956f58d0204a3-63e393c4a8aso1251414d50.2 for ; Thu, 30 Oct 2025 07:51:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761835901; x=1762440701; darn=postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=4cETtzL/gGTyY6b+OpbrZappy8WkT7vibFWagzTbZrE=; b=nQLc2+MUaXb8fJhQeV3ZYDFhaQHuZsVMkiLbcAkWJqZQvcy3O3Y4npJrtPkMmPdkog PijXNwHrJXz4b6OeMsLSU082b2gPWpAyC9f8phuIV4UgcQ5+/M0ZlgI1P72MTBQpDe/E 8e35LdJZTTw8AIWVds8/2339ZoCVMYz1aZ0NvJiaRLHTE1j8d2Ahpa04TjDioXm/tceU 07pm1yBM3Q7W9uSFI+buYjKCWzuo3LYb5/RIkf2x9CFpuG4ZDbCg1blQYItmImixIcx3 NTDgJ9DE4W1YNGGAciu5PPGVvWRHS9D2LqGZXkAUJ5reo1AULU/6v9MfrCBEwcpzeiqi Vw6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761835901; x=1762440701; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4cETtzL/gGTyY6b+OpbrZappy8WkT7vibFWagzTbZrE=; b=lFQZgUQQiEvhH851PQbi5n269QtVcOUlr/icLvN7+5IrstHcxOSZ6ZPte9lXaSQI5p bEzyTkiMI5R8YNG6qPwpt1FiyBnvh9tr0ph9Hnx8m7w+1ouJECZkmjalYHHylG9ycPA9 s1rRKQyrQczcaxiHO3bK+CeyszmKHImqy1wmnvo7YYo84jQnikQZfvZThB62WaKEz1ea HbokIEXWiWAW6Fkoab0Mfv8jSEb4vIITV7iYGhHwzjm5AiMMjmQGY+NweuTwo2mlsmYk GOOlWvrQoPJrB3u9dOlY0iRONp31Uj6kPzv5MrXZVYI8+X+dEFZ5uvlGw++bchrVdN9x yjqQ== X-Forwarded-Encrypted: i=1; AJvYcCU7Ae1ygQYa1DGM9akDeRlKlT4M/a3u6lwUCj9XpypDxpHjdgLUhb5HCeUWje5ArOtw3lk1zyu9WPdTAK9D@postgresql.org X-Gm-Message-State: AOJu0YyBYsFexi2kUkcZyZzuZ0dzHr8Xc1pppSJGKTsm8xcpXcM6ghBJ 88nksGptqsY8vLnHmC61BYx1ujDJ+A9rZrtqe/8Zh6wPfBxP4qt9s/N8 X-Gm-Gg: ASbGncvhxau2HABMwDfE6igNES/REOyDassE46+WbLliDVRUA3ah29wfZHjVWQm/jKj xPNTtZCcN4bT/GYDASMh4aUNLNwmBbDg2KjhFQgFTHLC3oX6XiplJbWjFZR9g7EaWZrdh5R7VmV 4O8xfB5/WB1wSVlKICm16v0OuhnRzaqSswxkL5nYL7yRoHwvTVfXBJsIlpD+zlCl/q8acT+/oIB 2PU2nWC/s9g6JnBAq1WLFraNhQ6mxkYbcTEyr5kHXunfJXRiDdTdt7tyKRylEqklwsL9H1DJEXC Ad/9wXyPprTZejMrvenI7fHJSMOeBEoAe+yytUWYBkng9WPWlnFt7v8M9vAHHfv7XgnF+4gqK/1 ltvhy+Mtz3TTtT61qVztPGe5U3t8cX+M0zD6FenAlAFv0efCTwXYGDr5ALwCawI3QczUuW4zwub rGPsCJHTN7fQEp6kYS56CfMO85TAYVHUmpD+5ikWjvJhMtoOpK8QB5CEFULEXMyB/eK6kPx0Jt9 bk= X-Google-Smtp-Source: AGHT+IEJY6tm6JOW956YnTcVEs9KOD5RS5Eg4ZEM0w2ErplfzM1efUC8vOGm8OVCkiBuVgyf2iL/Hw== X-Received: by 2002:a05:690c:610b:b0:785:cc3e:12f3 with SMTP id 00721157ae682-7863901aa67mr37724607b3.11.1761835901444; Thu, 30 Oct 2025 07:51:41 -0700 (PDT) Received: from ?IPV6:2600:1700:8952:80:b945:693f:d5d2:6c5e? ([2600:1700:8952:80:b945:693f:d5d2:6c5e]) by smtp.gmail.com with ESMTPSA id 00721157ae682-785ed13e443sm45345447b3.8.2025.10.30.07.51.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 30 Oct 2025 07:51:40 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------E9DFJgGzSg3MCfuQjicHLg8P" Message-ID: <30aea073-109c-43cc-979c-081b922d055d@gmail.com> Date: Thu, 30 Oct 2025 08:51:43 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] Add Windows support for backtrace_functions (MSVC only) To: Jakub Wartak Cc: =?UTF-8?Q?=C3=81lvaro_Herrera?= , Euler Taveira , Michael Paquier , pgsql-hackers References: <202510300932.isdvgkzqzshk@alvherre.pgsql> <5b4c6ce0-ed17-4abb-9127-859cc95cbdf3@gmail.com> Content-Language: en-US From: Bryan Green In-Reply-To: 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. --------------E9DFJgGzSg3MCfuQjicHLg8P Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 10/30/2025 3:52 AM, Jakub Wartak wrote: > On Thu, Oct 30, 2025 at 10:40 AM Bryan Green wrote: >> >> On 10/30/2025 3:37 AM, Álvaro Herrera wrote: >>> On 2025-Oct-30, Jakub Wartak wrote: >>> >>>> Hi Bryan, cfbot is red. I'm was fan of having those tests for this >>>> (bring complexity and we didn't have tests for Linux backtrace >>>> anyway), but now MINGW win32 is failing on those tests where the >>>> feature is not present: >>> >>> I hate to say this after the code is written, but I think we should not >>> put any tests in the first step. I predict that these are going to be >>> enormously brittle and that we'll waste a lot of time making them >>> stable. I think we should commit the Windows support for backtraces >>> first, then consider whether we actually want TAP tests for the overall >>> feature. We've gone several years with glibc backtrace support without >>> any tests -- why do we think the Windows implementation thereof _must_ >>> necessarily have them? >>> >> It will not bother me to remove them. It was my first effort at writing >> TAP tests, so it was a nice learning experience. > > Well, that was a typo on my part (stupid me), I wanted to write: I was > NOT a fan of having those tests for this (in first place) - sorry for > confusion! > > Anyway we have test because I think Michael and Euler triggered this > but earlier i've tried to persuade NOT to do this (see: `Also is it > worth it to test that setting backtrace_funciton=FOO really emits > .*FOO.* in log message cross-platform way?`), anyway Bryan implemented > this and it looks like v3 has just turned [gG]reen ;) > (https://cirrus-ci.com/build/6001832838823936) > > -J. I had reservations about the value the tests were adding, and considering I am getting more concern around having the tests than not having them for this initial release I have decided to remove them. v4 patch is attached. It is the same as the initial 0001-* patch. Thanks, Bryan Green --------------E9DFJgGzSg3MCfuQjicHLg8P Content-Type: text/plain; charset=UTF-8; name="v4-0001-Add-Windows-support-for-backtrace_functions.patch" Content-Disposition: attachment; filename*0="v4-0001-Add-Windows-support-for-backtrace_functions.patch" Content-Transfer-Encoding: base64 RnJvbSA4MWVlNjg4ZjQ5MGZhMzdiNWViMzBkMWQ4ODEyM2UzZDBhODQyM2YyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCcnlhbiBHcmVlbiA8ZGJyeWFuLmdyZWVuQGdtYWls LmNvbT4KRGF0ZTogVHVlLCAyMSBPY3QgMjAyNSAxOTozMToyOSAtMDUwMApTdWJqZWN0OiBb UEFUQ0hdIEFkZCBXaW5kb3dzIHN1cHBvcnQgZm9yIGJhY2t0cmFjZV9mdW5jdGlvbnMKCklt cGxlbWVudCBiYWNrdHJhY2UgZ2VuZXJhdGlvbiBvbiBXaW5kb3dzIHVzaW5nIHRoZSBEYmdI ZWxwIEFQSSwgcHJvdmlkaW5nCnNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0byB0aGUgZXhpc3Rp bmcgVW5peC9MaW51eCBzdXBwb3J0LiBXaGVuIFBEQiBmaWxlcwphcmUgYXZhaWxhYmxlLCBi YWNrdHJhY2VzIGluY2x1ZGUgZnVuY3Rpb24gbmFtZXMgYW5kIHNvdXJjZSBsb2NhdGlvbnMu CldpdGhvdXQgUERCIGZpbGVzLCByYXcgYWRkcmVzc2VzIGFyZSBzaG93bi4KCkRiZ0hlbHAg aXMgaW5pdGlhbGl6ZWQgb25jZSBwZXIgYmFja2VuZCBhbmQgY2xlYW5lZCB1cCB2aWEgb25f cHJvY19leGl0KCkuClRoaXMgYWRkcyBhIGRlcGVuZGVuY3kgb24gZGJnaGVscC5saWIgZm9y IE1TVkMgYnVpbGRzLgotLS0KIHNyYy9iYWNrZW5kL21lc29uLmJ1aWxkICAgICAgICB8ICAg NSArCiBzcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMgfCAxNzQgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE3OSBpbnNlcnRpb25z KCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbWVzb24uYnVpbGQgYi9zcmMvYmFja2Vu ZC9tZXNvbi5idWlsZAppbmRleCBiODMxYTU0MTY1Li5lZWI2OWM0MDc5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9tZXNvbi5idWls ZApAQCAtMSw2ICsxLDExIEBACiAjIENvcHlyaWdodCAoYykgMjAyMi0yMDI1LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogCiBiYWNrZW5kX2J1aWxkX2RlcHMgPSBb YmFja2VuZF9jb2RlXQorCitpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycgYW5kIGNjLmdl dF9pZCgpID09ICdtc3ZjJworICBiYWNrZW5kX2J1aWxkX2RlcHMgKz0gY2MuZmluZF9saWJy YXJ5KCdkYmdoZWxwJykKK2VuZGlmCisKIGJhY2tlbmRfc291cmNlcyA9IFtdCiBiYWNrZW5k X2xpbmtfd2l0aCA9IFtwZ3BvcnRfc3J2LCBjb21tb25fc3J2XQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMgYi9zcmMvYmFja2VuZC91dGlscy9lcnJv ci9lbG9nLmMKaW5kZXggMjk2NDNjNTE0My4uZmM0MjFjZTQ0NCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vy cm9yL2Vsb2cuYwpAQCAtMTQwLDYgKzE0MCwxMyBAQCBzdGF0aWMgdm9pZCB3cml0ZV9zeXNs b2coaW50IGxldmVsLCBjb25zdCBjaGFyICpsaW5lKTsKIHN0YXRpYyB2b2lkIHdyaXRlX2V2 ZW50bG9nKGludCBsZXZlbCwgY29uc3QgY2hhciAqbGluZSwgaW50IGxlbik7CiAjZW5kaWYK IAorI2lmZGVmIF9NU0NfVkVSCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPGRi Z2hlbHAuaD4KK3N0YXRpYyBib29sIHdpbjMyX2JhY2t0cmFjZV9zeW1ib2xzX2luaXRpYWxp emVkID0gZmFsc2U7CitzdGF0aWMgSEFORExFIHdpbjMyX2JhY2t0cmFjZV9wcm9jZXNzID0g TlVMTDsKKyNlbmRpZgorCiAvKiBXZSBwcm92aWRlIGEgc21hbGwgc3RhY2sgb2YgRXJyb3JE YXRhIHJlY29yZHMgZm9yIHJlLWVudHJhbnQgY2FzZXMgKi8KICNkZWZpbmUgRVJST1JEQVRB X1NUQUNLX1NJWkUgIDUKIApAQCAtMTExNiw2ICsxMTIzLDE4IEBAIGVycmJhY2t0cmFjZSh2 b2lkKQogCXJldHVybiAwOwogfQogCisjaWZkZWYgX01TQ19WRVIKKy8qCisgKiBDbGVhbnVw IGZ1bmN0aW9uIGZvciBEYmdIZWxwIHJlc291cmNlcy4KKyAqIENhbGxlZCB2aWEgb25fcHJv Y19leGl0KCkgdG8gcmVsZWFzZSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IFN5bUluaXRpYWxp emUoKS4KKyAqLworc3RhdGljIHZvaWQKK3dpbjMyX2JhY2t0cmFjZV9jbGVhbnVwKGludCBj b2RlLCBEYXR1bSBhcmcpCit7CisJU3ltQ2xlYW51cCh3aW4zMl9iYWNrdHJhY2VfcHJvY2Vz cyk7Cit9CisjZW5kaWYKKwogLyoKICAqIENvbXB1dGUgYmFja3RyYWNlIGRhdGEgYW5kIGFk ZCBpdCB0byB0aGUgc3VwcGxpZWQgRXJyb3JEYXRhLiAgbnVtX3NraXAKICAqIHNwZWNpZmll cyBob3cgbWFueSBpbm5lciBmcmFtZXMgdG8gc2tpcC4gIFVzZSB0aGlzIHRvIGF2b2lkIHNo b3dpbmcgdGhlCkBAIC0xMTQ3LDYgKzExNjYsMTYxIEBAIHNldF9iYWNrdHJhY2UoRXJyb3JE YXRhICplZGF0YSwgaW50IG51bV9za2lwKQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm ZXJydHJhY2UsCiAJCQkJCQkJCSAgICJpbnN1ZmZpY2llbnQgbWVtb3J5IGZvciBiYWNrdHJh Y2UgZ2VuZXJhdGlvbiIpOwogCX0KKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisJeworCQl2 b2lkCSAgICpzdGFja1sxMDBdOworCQlEV09SRAkJZnJhbWVzOworCQlEV09SRAkJaTsKKwkJ d2NoYXJfdAkJYnVmZmVyW3NpemVvZihTWU1CT0xfSU5GT1cpICsgTUFYX1NZTV9OQU1FICog c2l6ZW9mKHdjaGFyX3QpXTsKKwkJUFNZTUJPTF9JTkZPVyBzeW1ib2w7CisJCWNoYXIJICAg KnV0ZjhfYnVmZmVyOworCQlpbnQJCQl1dGY4X2xlbjsKKworCQlpZiAoIXdpbjMyX2JhY2t0 cmFjZV9zeW1ib2xzX2luaXRpYWxpemVkKQorCQl7CisJCQl3aW4zMl9iYWNrdHJhY2VfcHJv Y2VzcyA9IEdldEN1cnJlbnRQcm9jZXNzKCk7CisKKwkJCVN5bVNldE9wdGlvbnMoU1lNT1BU X1VORE5BTUUgfAorCQkJCQkJICBTWU1PUFRfREVGRVJSRURfTE9BRFMgfAorCQkJCQkJICBT WU1PUFRfTE9BRF9MSU5FUyB8CisJCQkJCQkgIFNZTU9QVF9GQUlMX0NSSVRJQ0FMX0VSUk9S Uyk7CisKKwkJCWlmIChTeW1Jbml0aWFsaXplKHdpbjMyX2JhY2t0cmFjZV9wcm9jZXNzLCBO VUxMLCBUUlVFKSkKKwkJCXsKKwkJCQl3aW4zMl9iYWNrdHJhY2Vfc3ltYm9sc19pbml0aWFs aXplZCA9IHRydWU7CisJCQkJb25fcHJvY19leGl0KHdpbjMyX2JhY2t0cmFjZV9jbGVhbnVw LCAwKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlEV09SRAkJZXJyb3IgPSBHZXRMYXN0 RXJyb3IoKTsKKworCQkJCWVsb2coV0FSTklORywgIlN5bUluaXRpYWxpemUgZmFpbGVkIHdp dGggZXJyb3IgJWx1IiwgZXJyb3IpOworCQkJfQorCQl9CisKKwkJZnJhbWVzID0gQ2FwdHVy ZVN0YWNrQmFja1RyYWNlKG51bV9za2lwLCBsZW5ndGhvZihzdGFjayksIHN0YWNrLCBOVUxM KTsKKworCQlpZiAoZnJhbWVzID09IDApCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmVycnRyYWNlLCAiXG5ObyBzdGFjayBmcmFtZXMgY2FwdHVyZWQiKTsKKwkJCWVkYXRh LT5iYWNrdHJhY2UgPSBlcnJ0cmFjZS5kYXRhOworCQkJcmV0dXJuOworCQl9CisKKwkJc3lt Ym9sID0gKFBTWU1CT0xfSU5GT1cpIGJ1ZmZlcjsKKwkJc3ltYm9sCSAgLT5NYXhOYW1lTGVu ID0gTUFYX1NZTV9OQU1FOworCQlzeW1ib2wJICAtPlNpemVPZlN0cnVjdCA9IHNpemVvZihT WU1CT0xfSU5GT1cpOworCisJCWZvciAoaSA9IDA7IGkgPCBmcmFtZXM7IGkrKykKKwkJewor CQkJRFdPUkQ2NAkJYWRkcmVzcyA9IChEV09SRDY0KSAoc3RhY2tbaV0pOworCQkJRFdPUkQ2 NAkJZGlzcGxhY2VtZW50ID0gMDsKKwkJCUJPT0wJCXN5bV9yZXN1bHQ7CisKKwkJCXN5bV9y ZXN1bHQgPSBTeW1Gcm9tQWRkclcod2luMzJfYmFja3RyYWNlX3Byb2Nlc3MsCisJCQkJCQkJ CQkgIGFkZHJlc3MsCisJCQkJCQkJCQkgICZkaXNwbGFjZW1lbnQsCisJCQkJCQkJCQkgIHN5 bWJvbCk7CisKKwkJCWlmIChzeW1fcmVzdWx0KQorCQkJeworCQkJCUlNQUdFSExQX0xJTkVX NjQgbGluZTsKKwkJCQlEV09SRAkJbGluZV9kaXNwbGFjZW1lbnQgPSAwOworCisJCQkJbGlu ZS5TaXplT2ZTdHJ1Y3QgPSBzaXplb2YoSU1BR0VITFBfTElORVc2NCk7CisKKwkJCQlpZiAo U3ltR2V0TGluZUZyb21BZGRyVzY0KHdpbjMyX2JhY2t0cmFjZV9wcm9jZXNzLAorCQkJCQkJ CQkJCSAgYWRkcmVzcywKKwkJCQkJCQkJCQkgICZsaW5lX2Rpc3BsYWNlbWVudCwKKwkJCQkJ CQkJCQkgICZsaW5lKSkKKwkJCQl7CisJCQkJCS8qIENvbnZlcnQgc3ltYm9sIG5hbWUgdG8g VVRGLTggKi8KKwkJCQkJdXRmOF9sZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgs IDAsIHN5bWJvbC0+TmFtZSwgLTEsCisJCQkJCQkJCQkJCQkgICBOVUxMLCAwLCBOVUxMLCBO VUxMKTsKKwkJCQkJaWYgKHV0ZjhfbGVuID4gMCkKKwkJCQkJeworCQkJCQkJY2hhcgkgICAq ZmlsZW5hbWVfdXRmODsKKwkJCQkJCWludAkJCWZpbGVuYW1lX2xlbjsKKworCQkJCQkJdXRm OF9idWZmZXIgPSBwYWxsb2ModXRmOF9sZW4pOworCQkJCQkJV2lkZUNoYXJUb011bHRpQnl0 ZShDUF9VVEY4LCAwLCBzeW1ib2wtPk5hbWUsIC0xLAorCQkJCQkJCQkJCQl1dGY4X2J1ZmZl ciwgdXRmOF9sZW4sIE5VTEwsIE5VTEwpOworCisJCQkJCQkvKiBDb252ZXJ0IGZpbGUgbmFt ZSB0byBVVEYtOCAqLworCQkJCQkJZmlsZW5hbWVfbGVuID0gV2lkZUNoYXJUb011bHRpQnl0 ZShDUF9VVEY4LCAwLAorCQkJCQkJCQkJCQkJCQkgICBsaW5lLkZpbGVOYW1lLCAtMSwKKwkJ CQkJCQkJCQkJCQkJICAgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CisJCQkJCQlpZiAoZmlsZW5h bWVfbGVuID4gMCkKKwkJCQkJCXsKKwkJCQkJCQlmaWxlbmFtZV91dGY4ID0gcGFsbG9jKGZp bGVuYW1lX2xlbik7CisJCQkJCQkJV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCBs aW5lLkZpbGVOYW1lLCAtMSwKKwkJCQkJCQkJCQkJCWZpbGVuYW1lX3V0ZjgsIGZpbGVuYW1l X2xlbiwKKwkJCQkJCQkJCQkJCU5VTEwsIE5VTEwpOworCisJCQkJCQkJYXBwZW5kU3RyaW5n SW5mbygmZXJydHJhY2UsCisJCQkJCQkJCQkJCSAiXG4lcysweCVsbHggWyVzOiVsdV0iLAor CQkJCQkJCQkJCQkgdXRmOF9idWZmZXIsCisJCQkJCQkJCQkJCSAodW5zaWduZWQgbG9uZyBs b25nKSBkaXNwbGFjZW1lbnQsCisJCQkJCQkJCQkJCSBmaWxlbmFtZV91dGY4LAorCQkJCQkJ CQkJCQkgKHVuc2lnbmVkIGxvbmcpIGxpbmUuTGluZU51bWJlcik7CisKKwkJCQkJCQlwZnJl ZShmaWxlbmFtZV91dGY4KTsKKwkJCQkJCX0KKwkJCQkJCWVsc2UKKwkJCQkJCXsKKwkJCQkJ CQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJ0cmFjZSwKKwkJCQkJCQkJCQkJICJcbiVzKzB4JWxs eCBbMHglbGx4XSIsCisJCQkJCQkJCQkJCSB1dGY4X2J1ZmZlciwKKwkJCQkJCQkJCQkJICh1 bnNpZ25lZCBsb25nIGxvbmcpIGRpc3BsYWNlbWVudCwKKwkJCQkJCQkJCQkJICh1bnNpZ25l ZCBsb25nIGxvbmcpIGFkZHJlc3MpOworCQkJCQkJfQorCisJCQkJCQlwZnJlZSh1dGY4X2J1 ZmZlcik7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQkvKiBDb252ZXJzaW9u IGZhaWxlZCwgdXNlIGFkZHJlc3Mgb25seSAqLworCQkJCQkJYXBwZW5kU3RyaW5nSW5mbygm ZXJydHJhY2UsCisJCQkJCQkJCQkJICJcblsweCVsbHhdIiwKKwkJCQkJCQkJCQkgKHVuc2ln bmVkIGxvbmcgbG9uZykgYWRkcmVzcyk7CisJCQkJCX0KKwkJCQl9CisJCQkJZWxzZQorCQkJ CXsKKwkJCQkJLyogTm8gbGluZSBpbmZvLCBjb252ZXJ0IHN5bWJvbCBuYW1lIG9ubHkgKi8K KwkJCQkJdXRmOF9sZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHN5bWJv bC0+TmFtZSwgLTEsCisJCQkJCQkJCQkJCQkgICBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKwkJ CQkJaWYgKHV0ZjhfbGVuID4gMCkKKwkJCQkJeworCQkJCQkJdXRmOF9idWZmZXIgPSBwYWxs b2ModXRmOF9sZW4pOworCQkJCQkJV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCBz eW1ib2wtPk5hbWUsIC0xLAorCQkJCQkJCQkJCQl1dGY4X2J1ZmZlciwgdXRmOF9sZW4sIE5V TEwsIE5VTEwpOworCisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJ0cmFjZSwKKwkJCQkJ CQkJCQkgIlxuJXMrMHglbGx4IFsweCVsbHhdIiwKKwkJCQkJCQkJCQkgdXRmOF9idWZmZXIs CisJCQkJCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIGRpc3BsYWNlbWVudCwKKwkJCQkJ CQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgYWRkcmVzcyk7CisKKwkJCQkJCXBmcmVlKHV0 ZjhfYnVmZmVyKTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCS8qIENvbnZl cnNpb24gZmFpbGVkLCB1c2UgYWRkcmVzcyBvbmx5ICovCisJCQkJCQlhcHBlbmRTdHJpbmdJ bmZvKCZlcnJ0cmFjZSwKKwkJCQkJCQkJCQkgIlxuWzB4JWxseF0iLAorCQkJCQkJCQkJCSAo dW5zaWduZWQgbG9uZyBsb25nKSBhZGRyZXNzKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJ CWVsc2UKKwkJCXsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJ0cmFjZSwKKwkJCQkJCQkJ ICJcblsweCVsbHhdIiwKKwkJCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIGFkZHJlc3Mp OworCQkJfQorCQl9CisJfQogI2Vsc2UKIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZlcnJ0 cmFjZSwKIAkJCQkJCSAgICJiYWNrdHJhY2UgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVk IGJ5IHRoaXMgaW5zdGFsbGF0aW9uIik7Ci0tIAoyLjQ2LjAud2luZG93cy4xCgo= --------------E9DFJgGzSg3MCfuQjicHLg8P--