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 1pY5fi-00047v-K0 for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Mar 2023 13:42: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 1pY5fg-0008MG-EV for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Mar 2023 13:42:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pY5ff-0008M7-Uk for pgsql-hackers@lists.postgresql.org; Fri, 03 Mar 2023 13:42:04 +0000 Received: from lahtoruutu.iki.fi ([2a0b:5c81:1c1::37]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pY5fb-0003mE-Td for pgsql-hackers@postgresql.org; Fri, 03 Mar 2023 13:42:03 +0000 Received: from [192.168.1.113] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (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) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4PSpzm5fJKz49QNQ; Fri, 3 Mar 2023 15:41:55 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1677850917; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=V+h/N+1fBNNu3UEqfuKrjlsKW55D9ph6mIbXtBqpoEU=; b=XK2Cz7QZ7B5owdNCHt04J+dlqBQDxkysvwDJJQiLnY3yjcjEh1119E7xxBbwfcCJSAHgPq s/k+amXAjCS5I3cU9XnNGdwsNtODLZUKJRq8zLhyIQ9i7xOeZp4XdmhxbuHSs8lrbJCOWJ TVcE3yPgAYJh+eBxgFWLNqFawl/IICGxRVnK6Z/P1FYaVOfbYknk+VeNUPxG38GtMPfDtY taQUsjEYQ/DKR1yeB7/hPkPeeoAL4kcyIDO749fUCfd2XQwE+2PnukHN76TYzUtK4JVLRf pny8MF8FQnEhsBYRsIKZnvii519Ps9cHlhvnURyu6yVqhDIXOCfic8s336go9A== ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1677850917; a=rsa-sha256; cv=none; b=Qw5nkZRlmv5aMRziWtaHVr5dXoLsDSy9+vBz41BzQ6dZvLovwaqALqUnAK94cyVNwxgS9s 07bKXgt4Uh8fwNScHG1z99J9YdH8wK5cAKNS26L1Nnt4cmRQOGx+UtSi7/5FZ2nG2kmpgv T9OwVrV+5Eb6PleVolX305fOPWVvhe+ZUgO5lctZiU8Wc2D9UtDFyinxlDdT4gcJ3yZE7r n/djTK+zxTD6y2h0G1rm5eKGNVzEBdP84Q9idqdg8/GpenQBJTjXSJsR98bun9lFtYgDrH 9MIaO34cBXfxQQtPb64iLgUDiPwBWCBudrzU7RF3uEL712F+vHvu2n+7KSTb4A== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1677850917; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=V+h/N+1fBNNu3UEqfuKrjlsKW55D9ph6mIbXtBqpoEU=; b=cKuMHh/WH0k7KT++M70X3095c9JbklcicIGMpGGoPyy4yrNCxnZ+0PF0PD+FSzR/muIb4G lyqBaCInDEKvOUae4r+8e1R6c5QahGCWlF0C+iaBjovRltnODZKxYRqeiqdqM/mDEGKOr2 EKw/SH2xVTLkL7vUwEIwYqrSUqvUkBGCvNRnjnAXu+o1/y6qf8RaQU34Cl8V0Gt9/Fot/v RzrAOeYpxK3SMA7cHkOSiD1co61xLatCFZQ4XpNcPDqHqAAfa28LVhLn557N/M38hgVOir pjzERd9QVnRuF2EpPwbQLpj8fCZtihDU4sXFFWHOK1mgmVM8IvR61JuK45+07A== Content-Type: multipart/mixed; boundary="------------mKd3g3aTbgtX39OyIUU9NCoS" Message-ID: <45bfce14-0028-5fbe-66d9-b3b37f3e805c@iki.fi> Date: Fri, 3 Mar 2023 15:41:55 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: Testing autovacuum wraparound (including failsafe) Content-Language: en-US From: Heikki Linnakangas To: Ian Lawrence Barwick , Masahiko Sawada Cc: Andres Freund , Anastasia Lubennikova , pgsql-hackers , Peter Geoghegan References: <20210423204306.5osfpkt2ggaedyvy@alap3.anarazel.de> <20210611011850.detxnd7bnffg3daz@alap3.anarazel.de> <64524348-b10e-9904-4858-8fe62d058b14@iki.fi> In-Reply-To: <64524348-b10e-9904-4858-8fe62d058b14@iki.fi> 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. --------------mKd3g3aTbgtX39OyIUU9NCoS Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 03/03/2023 13:34, Heikki Linnakangas wrote: > On 16/11/2022 06:38, Ian Lawrence Barwick wrote: >> Thanks for the patch. While reviewing the patch backlog, we have determined that >> the latest version of this patch was submitted before meson support was >> implemented, so it should have a "meson.build" file added for consideration for >> inclusion in PostgreSQL 16. > > I wanted to do some XID wraparound testing again, to test the 64-bit > SLRUs patches [1], and revived this. Forgot attachment. - Heikki --------------mKd3g3aTbgtX39OyIUU9NCoS Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-tests-for-XID-wraparound.patch" Content-Disposition: attachment; filename="0001-Add-tests-for-XID-wraparound.patch" Content-Transfer-Encoding: base64 RnJvbSAzNGI2YjM3ZDdmOGQ3NTk0MzkyNGE0OWUyMjA1MDMzZGI2ZTgyOTNjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMyBNYXIgMjAyMyAxMjowMToyOCArMDIwMApT dWJqZWN0OiBbUEFUQ0ggMS8xXSBBZGQgdGVzdHMgZm9yIFhJRCB3cmFwYXJvdW5kLgoKVGhl IHRlc3QgbW9kdWxlIGluY2x1ZGVzIGhlbHBlciBmdW5jdGlvbnMgdG8gcXVpY2tseSBidXJu IHRocm91Z2ggbG90cwpvZiBYSURzLiBUaGV5IGFyZSB1c2VkIGluIHRoZSB0ZXN0cywgYW5k IGFyZSBhbHNvIGhhbmR5IGZvciBtYW51YWxseQp0ZXN0aW5nIFhJRCB3cmFwYXJvdW5kLgoK QXV0aG9yOiBNYXNhaGlrbyBTYXdhZGEsIEhlaWtraSBMaW5uYWthbmdhcwpEaXNjdXNzaW9u OiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBRDIxQW9EVmhrWHA4 SGpwRk8tZ3AzVGdMNnRDS2NaUU54bjA0bTAxVkF0Y1NpLTVzQSU0MG1haWwuZ21haWwuY29t Ci0tLQogc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kLy5naXRpZ25vcmUgICAg fCAgIDQgKwogc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9NYWtlZmlsZSAgICAg IHwgIDIzICsrCiBzcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL1JFQURNRSAgICAg ICAgfCAgIDMgKwogc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9tZXNvbi5idWls ZCAgIHwgIDM2ICsrKwogLi4uL3hpZF93cmFwYXJvdW5kL3QvMDAxX2VtZXJnZW5jeV92YWN1 dW0ucGwgIHwgMTEwICsrKysrKysrKwogLi4uL21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8w MDJfbGltaXRzLnBsICAgIHwgMTE0ICsrKysrKysrKwogLi4uL3hpZF93cmFwYXJvdW5kL3Qv MDAzX3dyYXBhcm91bmRzLnBsICAgICAgIHwgIDQ2ICsrKysKIC4uLi94aWRfd3JhcGFyb3Vu ZC94aWRfd3JhcGFyb3VuZC0tMS4wLnNxbCAgICB8ICAxMiArCiAuLi4vbW9kdWxlcy94aWRf d3JhcGFyb3VuZC94aWRfd3JhcGFyb3VuZC5jICAgfCAyMjEgKysrKysrKysrKysrKysrKysr CiAuLi4veGlkX3dyYXBhcm91bmQveGlkX3dyYXBhcm91bmQuY29udHJvbCAgICAgfCAgIDQg KwogMTIgZmlsZXMgY2hhbmdlZCwgNTc1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kLy5naXRpZ25vcmUKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL01ha2VmaWxl CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9S RUFETUUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJv dW5kL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy94 aWRfd3JhcGFyb3VuZC90LzAwMV9lbWVyZ2VuY3lfdmFjdXVtLnBsCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwMl9saW1pdHMucGwK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3Qv MDAzX3dyYXBhcm91bmRzLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy94aWRfd3JhcGFyb3VuZC94aWRfd3JhcGFyb3VuZC0tMS4wLnNxbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQveGlkX3dyYXBhcm91bmQu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQv eGlkX3dyYXBhcm91bmQuY29udHJvbAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv TWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCmluZGV4IGM2MjljYmUzODMw Li45OWY1ZmEyM2YxNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQor KysgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCkBAIC0xNCw2ICsxNCw3IEBAIFNVQkRJ UlMgPSBcCiAJCSAgcGxzYW1wbGUgXAogCQkgIHNuYXBzaG90X3Rvb19vbGQgXAogCQkgIHNw Z2lzdF9uYW1lX29wcyBcCisJCSAgeGlkX3dyYXBhcm91bmQgXAogCQkgIHRlc3RfYmxvb21m aWx0ZXIgXAogCQkgIHRlc3RfY29weV9jYWxsYmFja3MgXAogCQkgIHRlc3RfY3VzdG9tX3Jt Z3JzIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMv dGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IDFiYWE2YjU1OGQxLi4zOWRlNDNkZWUz MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC0xMCw2ICsxMCw3IEBAIHN1YmRpcigncGxz YW1wbGUnKQogc3ViZGlyKCdzbmFwc2hvdF90b29fb2xkJykKIHN1YmRpcignc3BnaXN0X25h bWVfb3BzJykKIHN1YmRpcignc3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2snKQorc3ViZGlyKCd4 aWRfd3JhcGFyb3VuZCcpCiBzdWJkaXIoJ3Rlc3RfYmxvb21maWx0ZXInKQogc3ViZGlyKCd0 ZXN0X2NvcHlfY2FsbGJhY2tzJykKIHN1YmRpcigndGVzdF9jdXN0b21fcm1ncnMnKQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC8uZ2l0aWdub3JlIGIv c3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ZGNiM2ZmOTcyMwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvLmdpdGlnbm9yZQpAQCAt MCwwICsxLDQgQEAKKyMgR2VuZXJhdGVkIHN1YmRpcmVjdG9yaWVzCisvbG9nLworL3Jlc3Vs dHMvCisvdG1wX2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3Jh cGFyb3VuZC9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvTWFr ZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdhNmUwZjY2 NzYyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3Vu ZC9NYWtlZmlsZQpAQCAtMCwwICsxLDIzIEBACisjIHNyYy90ZXN0L21vZHVsZXMveGlkX3dy YXBhcm91bmQvTWFrZWZpbGUKKworTU9EVUxFX2JpZyA9IHhpZF93cmFwYXJvdW5kCitPQkpT ID0gXAorCSQoV0lOMzJSRVMpIFwKKwl4aWRfd3JhcGFyb3VuZC5vCitQR0ZJTEVERVNDID0g InhpZF93cmFwYXJvdW5kIC0gdGVzdHMgZm9yIFhJRCB3cmFwYXJvdW5kIgorCitFWFRFTlNJ T04gPSB4aWRfd3JhcGFyb3VuZAorREFUQSA9IHhpZF93cmFwYXJvdW5kLS0xLjAuc3FsCisK K1RBUF9URVNUUyA9IDEKKworaWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZp ZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRlICQoUEdY UykKK2Vsc2UKK3N1YmRpciA9IHNyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQKK3Rv cF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMv TWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9jb250cmli LWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMveGlkX3dy YXBhcm91bmQvUkVBRE1FIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9SRUFE TUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNhYWI0NjRkZWM3 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9S RUFETUUKQEAgLTAsMCArMSwzIEBACitUaGlzIG1vZHVsZSBjb250YWlucyB0ZXN0cyBmb3Ig WElEIHdyYXBhcm91bmQuIFRoZSB0ZXN0cyB1c2UgdHdvCitoZWxwZXIgZnVuY3Rpb25zIHRv IHF1aWNrbHkgY29uc3VtZSBsb3RzIG9mIFhJRHMsIHRvIHJlYWNoIFhJRAord3JhcGFyb3Vu ZCBmYXN0ZXIuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5k L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9tZXNvbi5i dWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWE1MTNlMDUz NmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5k L21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMzYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIyLTIw MjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgRklYTUU6IHBy ZXZlbnQgaW5zdGFsbCBkdXJpbmcgbWFpbiBpbnN0YWxsLCBidXQgbm90IGR1cmluZyB0ZXN0 IDovCisKK3hpZF93cmFwYXJvdW5kX3NvdXJjZXMgPSBmaWxlcygKKyAgJ3hpZF93cmFwYXJv dW5kLmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycKKyAgeGlkX3dyYXBh cm91bmRfc291cmNlcyArPSByY19saWJfZ2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJh X2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3hpZF93cmFwYXJvdW5kJywKKyAgICAnLS1GSUxF REVTQycsICd4aWRfd3JhcGFyb3VuZCAtIHRlc3RzIGZvciBYSUQgd3JhcGFyb3VuZCcsXSkK K2VuZGlmCisKK3hpZF93cmFwYXJvdW5kID0gc2hhcmVkX21vZHVsZSgneGlkX3dyYXBhcm91 bmQnLAorICB4aWRfd3JhcGFyb3VuZF9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX21vZF9hcmdz LAorKQordGVzdHByZXBfdGFyZ2V0cyArPSB4aWRfd3JhcGFyb3VuZAorCitpbnN0YWxsX2Rh dGEoCisgICd4aWRfd3JhcGFyb3VuZC5jb250cm9sJywKKyAgJ3hpZF93cmFwYXJvdW5kLS0x LjAuc3FsJywKKyAga3dhcmdzOiBjb250cmliX2RhdGFfYXJncywKKykKKwordGVzdHMgKz0g eworICAnbmFtZSc6ICd4aWRfd3JhcGFyb3VuZCcsCisgICdzZCc6IG1lc29uLmN1cnJlbnRf c291cmNlX2RpcigpLAorICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAn cmVncmVzcyc6IHsKKyAgICAnc3FsJzogWworICAgICAgJ3hpZF93cmFwYXJvdW5kJywKKyAg ICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFy b3VuZC90LzAwMV9lbWVyZ2VuY3lfdmFjdXVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRf d3JhcGFyb3VuZC90LzAwMV9lbWVyZ2VuY3lfdmFjdXVtLnBsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMDE5OGJiMGM0MQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1 bS5wbApAQCAtMCwwICsxLDExMCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyMywgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHdyYXBhcm91bmQg ZW1lcmdlbmN5IGF1dG92YWN1dW0KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5pdGlhbGl6ZSBub2RlCitteSAkbm9kZSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbWFpbicpOworCiskbm9kZS0+aW5p dDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXFbCithdXRvdmFj dXVtID0gb2ZmICMgcnVuIGF1dG92YWN1dW0gb25seSB3aGVuIHRvIGFudGkgd3JhcGFyb3Vu ZAorbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEwCithdXRvdmFjdXVtX25hcHRpbWUg PSAxcworIyBzbyBpdCdzIGVhc2llciB0byB2ZXJpZnkgdGhlIG9yZGVyIG9mIG9wZXJhdGlv bnMKK2F1dG92YWN1dW1fbWF4X3dvcmtlcnMgPSAxCitsb2dfYXV0b3ZhY3V1bV9taW5fZHVy YXRpb24gPSAwCitdKTsKKyRub2RlLT5zdGFydDsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiB4aWRfd3JhcGFyb3VuZCcpOworCisjIENyZWF0 ZSB0YWJsZXMgZm9yIGEgZmV3IGRpZmZlcmVudCB0ZXN0IHNjZW5hcmlvcworJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxcVsKK0NSRUFURSBUQUJMRSBsYXJnZShpZCBzZXJpYWwg cHJpbWFyeSBrZXksIGRhdGEgdGV4dCwgZmlsbGVyIHRleHQgZGVmYXVsdCByZXBlYXQocmFu ZG9tKCk6OnRleHQsIDEwKSk7CitJTlNFUlQgSU5UTyBsYXJnZShkYXRhKSBTRUxFQ1QgZ2Vu ZXJhdGVfc2VyaWVzKDEsMzAwMDApOworCitDUkVBVEUgVEFCTEUgbGFyZ2VfdHJ1bmMoaWQg c2VyaWFsIHByaW1hcnkga2V5LCBkYXRhIHRleHQsIGZpbGxlciB0ZXh0IGRlZmF1bHQgcmVw ZWF0KHJhbmRvbSgpOjp0ZXh0LCAxMCkpOworSU5TRVJUIElOVE8gbGFyZ2VfdHJ1bmMoZGF0 YSkgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDMwMDAwKTsKKworQ1JFQVRFIFRBQkxFIHNt YWxsKGlkIHNlcmlhbCBwcmltYXJ5IGtleSwgZGF0YSB0ZXh0LCBmaWxsZXIgdGV4dCBkZWZh dWx0IHJlcGVhdChyYW5kb20oKTo6dGV4dCwgMTApKTsKK0lOU0VSVCBJTlRPIHNtYWxsKGRh dGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxNTAwMCk7CisKK0NSRUFURSBUQUJMRSBz bWFsbF90cnVuYyhpZCBzZXJpYWwgcHJpbWFyeSBrZXksIGRhdGEgdGV4dCwgZmlsbGVyIHRl eHQgZGVmYXVsdCByZXBlYXQocmFuZG9tKCk6OnRleHQsIDEwKSk7CitJTlNFUlQgSU5UTyBz bWFsbF90cnVuYyhkYXRhKSBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTUwMDApOworCitD UkVBVEUgVEFCTEUgYXV0b3ZhY3V1bV9kaXNhYmxlZChpZCBzZXJpYWwgcHJpbWFyeSBrZXks IGRhdGEgdGV4dCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkPWZhbHNlKTsKK0lOU0VSVCBJ TlRPIGF1dG92YWN1dW1fZGlzYWJsZWQoZGF0YSkgU0VMRUNUIGdlbmVyYXRlX3Nlcmllcygx LDEwMDApOworXSk7CisKKyMgVG8gcHJldmVudCBhdXRvdmFjdXVtIGZyb20gaGFuZGxpbmcg dGhlIHRhYmxlcyBpbW1lZGlhdGVseSBhZnRlcgorIyByZXN0YXJ0LCBhY3F1aXJlIGxvY2tz IGluIGEgMlBDIHRyYW5zYWN0aW9uLiBUaGF0IGFsbG93cyB1cyB0byB0ZXN0CisjIGludGVy YWN0aW9ucyB3aXRoIHJ1bm5pbmcgY29tbWFuZHMuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxWworQkVHSU47CitMT0NLIFRBQkxFIGxhcmdlIElOIFNIQVJFIFVQREFURSBF WENMVVNJVkUgTU9ERTsKK0xPQ0sgVEFCTEUgbGFyZ2VfdHJ1bmMgSU4gU0hBUkUgVVBEQVRF IEVYQ0xVU0lWRSBNT0RFOworTE9DSyBUQUJMRSBzbWFsbCBJTiBTSEFSRSBVUERBVEUgRVhD TFVTSVZFIE1PREU7CitMT0NLIFRBQkxFIHNtYWxsX3RydW5jIElOIFNIQVJFIFVQREFURSBF WENMVVNJVkUgTU9ERTsKK0xPQ0sgVEFCTEUgYXV0b3ZhY3V1bV9kaXNhYmxlZCBJTiBTSEFS RSBVUERBVEUgRVhDTFVTSVZFIE1PREU7CitQUkVQQVJFIFRSQU5TQUNUSU9OICdwcmV2ZW50 LXZhY3V1bSc7CitdKTsKKworIyBEZWxldGUgYSBmZXcgcm93cyB0byBlbnN1cmUgdGhhdCB2 YWN1dW0gaGFzIHdvcmsgdG8gZG8uCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx WworREVMRVRFIEZST00gbGFyZ2UgV0hFUkUgaWQgJSAyID0gMDsKK0RFTEVURSBGUk9NIGxh cmdlX3RydW5jIFdIRVJFIGlkID4gMTAwMDA7CitERUxFVEUgRlJPTSBzbWFsbCBXSEVSRSBp ZCAlIDIgPSAwOworREVMRVRFIEZST00gc21hbGxfdHJ1bmMgV0hFUkUgaWQgPiAxMDAwOwor REVMRVRFIEZST00gYXV0b3ZhY3V1bV9kaXNhYmxlZCBXSEVSRSBpZCAlIDIgPSAwOworXSk7 CisKKyMgQ29uc3VtZSAyIGJpbGxpb24gWElEcywgdG8gZ2V0IHVzIHZlcnkgY2xvc2UgdG8g d3JhcGFyb3VuZAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVtTRUxFQ1QgY29u c3VtZV94aWRzX3VudGlsKCcyMDAwMDAwMDAwJzo6YmlnaW50KV0pOworCisjIE1ha2Ugc3Vy ZSB0aGUgbGF0ZXN0IGNvbXBsZXRlZCBYSUQgaXMgYWR2YW5jZWQKKyRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXFbSU5TRVJUIElOVE8gc21hbGwoZGF0YSkgU0VMRUNUIDFdKTsK KworIyBDaGVjayB0aGF0IGFsbCBkYXRhYmFzZXMgYmVjYW1lIG9sZC4KK215ICRyZXQgPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCQkgICBxcVsKK1NFTEVDVCBkYXRuYW1l LAorICAgICAgIGFnZShkYXRmcm96ZW54aWQpID4gY3VycmVudF9zZXR0aW5nKCdhdXRvdmFj dXVtX2ZyZWV6ZV9tYXhfYWdlJyk6OmludCBhcyBvbGQKK0ZST00gcGdfZGF0YWJhc2UgT1JE RVIgQlkgMQorXSk7CitpcygkcmV0LCAicG9zdGdyZXN8dAordGVtcGxhdGUwfHQKK3RlbXBs YXRlMXx0IiwgImFsbCB0YWJsZXMgYmVjYW1lIG9sZCIpOworCisjIEFsbG93IGF1dG92YWN1 dW0gdG8gc3RhcnQgd29ya2luZyBvbiB0aGVzZSB0YWJsZXMuCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxW0NPTU1JVCBQUkVQQVJFRCAncHJldmVudC12YWN1dW0nXSk7CisK KyRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJCQlxcVsKK1NFTEVDVCBO T1QgRVhJU1RTICgKKwlTRUxFQ1QgKgorCUZST00gcGdfZGF0YWJhc2UKKwlXSEVSRSBhZ2Uo ZGF0ZnJvemVueGlkKSA+IGN1cnJlbnRfc2V0dGluZygnYXV0b3ZhY3V1bV9mcmVlemVfbWF4 X2FnZScpOjppbnQpCitdKSBvciBkaWUgInRpbWVvdXQgd2FpdGluZyBmb3IgYWxsIGRhdGFi YXNlcyB0byBiZSB2YWN1dW1lZCI7CisKKyMgQ2hlY2sgaWYgdGhlc2UgdGFibGVzIGFyZSB2 YWN1dW1lZC4KKyRyZXQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxWworU0VM RUNUIHJlbG5hbWUsIGFnZShyZWxmcm96ZW54aWQpID4gY3VycmVudF9zZXR0aW5nKCdhdXRv dmFjdXVtX2ZyZWV6ZV9tYXhfYWdlJyk6OmludAorRlJPTSBwZ19jbGFzcworV0hFUkUgcmVs bmFtZSBJTiAoJ2xhcmdlJywgJ2xhcmdlX3RydW5jJywgJ3NtYWxsJywgJ3NtYWxsX3RydW5j JywgJ2F1dG92YWN1dW1fZGlzYWJsZWQnKQorT1JERVIgQlkgMQorXSk7CisKK2lzKCRyZXQs ICJhdXRvdmFjdXVtX2Rpc2FibGVkfGYKK2xhcmdlfGYKK2xhcmdlX3RydW5jfGYKK3NtYWxs fGYKK3NtYWxsX3RydW5jfGYiLCAiYWxsIHRhYmxlcyBhcmUgdmFjdXVtZWQiKTsKKworJG5v ZGUtPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMveGlkX3dyYXBhcm91bmQvdC8wMDJfbGltaXRzLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy94 aWRfd3JhcGFyb3VuZC90LzAwMl9saW1pdHMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmZmMjc0Mzc0NmIyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwMl9saW1pdHMucGwKQEAgLTAsMCArMSwx MTQgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorIworIyBUZXN0IFhJRCB3cmFwYXJvdW5kIGxpbWl0cy4KKyMKKyMgV2hl biB5b3UgZ2V0IGNsb3NlIHRvIFhJRCB3cmFwYXJvdW5kLCB5b3Ugc3RhcnQgdG8gZ2V0IHdh cm5pbmdzLCBhbmQKKyMgd2hlbiB5b3UgZ2V0IGV2ZW4gY2xvc2VyLCB0aGUgc3lzdGVtIHJl ZnVzZXMgdG8gYXNzaWduIGFueSBtb3JlIFhJRHMKKyMgdW50aWwgdGhlIG9sZGVzdCBkYXRh YmFzZXMgaGF2ZSBiZWVuIHZhY3V1bWVkIGFuZCBkYXRmcm96ZW54aWQgaGFzCisjIGJlZW4g YWR2YW5jZWQuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBU ZXN0OjpNb3JlOwordXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CisKK215ICRyZXQ7CisK KyMgSW5pdGlhbGl6ZSBub2RlCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygnd3JhcGFyb3VuZCcpOworCiskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywgcXFbCithdXRvdmFjdXVtID0gb2ZmICMgcnVuIGF1 dG92YWN1dW0gb25seSB0byBwcmV2ZW50IHdyYXBhcm91bmQKK2F1dG92YWN1dW1fbmFwdGlt ZSA9IDFzCitsb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb24gPSAwCitdKTsKKyRub2RlLT5z dGFydDsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04g eGlkX3dyYXBhcm91bmQnKTsKKworIyBDcmVhdGUgYSB0ZXN0IHRhYmxlCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxWworQ1JFQVRFIFRBQkxFIHdyYXBhcm91bmR0ZXN0KHQg dGV4dCk7CitJTlNFUlQgSU5UTyB3cmFwYXJvdW5kdGVzdCBWQUxVRVMgKCdzdGFydCcpOwor XSk7CisKKyMgU3RhcnQgYSBiYWNrZ3JvdW5kIHNlc3Npb24sIHdoaWNoIGhvbGRzIGEgdHJh bnNhY3Rpb24gb3BlbiwgcHJldmVudGluZworIyBhdXRvdmFjdXVtIGZyb20gYWR2YW5jaW5n IHJlbGZyb3plbnhpZCBhbmQgZGF0ZnJvemVueGlkLgorbXkgJGluICA9ICcnOworbXkgJG91 dCA9ICcnOworbXkgJHRpbWVvdXQgPSBJUEM6OlJ1bjo6dGltZXIoJFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworbXkgJGJhY2tncm91bmRfcHNxbCA9ICRu b2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lb3V0 KTsKKyRpbiAuPSBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHdyYXBhcm91bmR0ZXN0IFZB TFVFUyAoJ29sZHhhY3QnKTsKK307CiskYmFja2dyb3VuZF9wc3FsLT5wdW1wX25iOworCisj IENvbnN1bWUgMiBiaWxsaW9uIHRyYW5zYWN0aW9ucywgdG8gZ2V0IGNsb3NlIHRvIHdyYXBh cm91bmQKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUIGNvbnN1bWVf eGlkcygxMDAwMDAwMDAwKV0pOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVtJ TlNFUlQgSU5UTyB3cmFwYXJvdW5kdGVzdCBWQUxVRVMgKCdhZnRlciAxIGJpbGxpb24nKV0p OworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxW1NFTEVDVCBjb25zdW1lX3hp ZHMoMTAwMDAwMDAwMCldKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbSU5T RVJUIElOVE8gd3JhcGFyb3VuZHRlc3QgVkFMVUVTICgnYWZ0ZXIgMiBiaWxsaW9uJyldKTsK KworIyBXZSBhcmUgbm93IGp1c3QgdW5kZXIgMTUwIG1pbGxpb24gWElEcyBhd2F5IGZyb20g d3JhcGFyb3VuZC4KKyMgQ29udGludWUgY29uc3VtaW5nIFhJRHMsIGluIGJhdGNoZXMgb2Yg MTAgbWlsbGlvbiwgdW50aWwgd2UgZ2V0CisjIHRoZSB3YXJuaW5nOgorIworIyAgV0FSTklO RzogIGRhdGFiYXNlICJwb3N0Z3JlcyIgbXVzdCBiZSB2YWN1dW1lZCB3aXRoaW4gMzAwMDAy NCB0cmFuc2FjdGlvbnMKKyMgIEhJTlQ6ICBUbyBhdm9pZCBhIGRhdGFiYXNlIHNodXRkb3du LCBleGVjdXRlIGEgZGF0YWJhc2Utd2lkZSBWQUNVVU0gaW4gdGhhdCBkYXRhYmFzZS4KKyMg IFlvdSBtaWdodCBhbHNvIG5lZWQgdG8gY29tbWl0IG9yIHJvbGwgYmFjayBvbGQgcHJlcGFy ZWQgdHJhbnNhY3Rpb25zLCBvciBkcm9wIHN0YWxlIHJlcGxpY2F0aW9uIHNsb3RzLgorbXkg JHN0ZGVycjsKK215ICR3YXJuX2xpbWl0ID0gMDsKK2ZvciBteSAkaSAoMSAuLiAxNSkKK3sK Kwkkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCBxcVtTRUxFQ1QgY29uc3VtZV94aWRzKDEwMDAw MDAwKV0sIHN0ZGVyciA9PiBcJHN0ZGVyciwgb25fZXJyb3JfZGllID0+IDEpOworCisJaWYg KCRzdGRlcnIgPX4gL1dBUk5JTkc6ICBkYXRhYmFzZSAicG9zdGdyZXMiIG11c3QgYmUgdmFj dXVtZWQgd2l0aGluIFswLTldKyB0cmFuc2FjdGlvbnMvKQorCXsKKwkJIyBSZWFjaGVkIHRo ZSB3YXJuLWxpbWl0CisJCSR3YXJuX2xpbWl0ID0gMTsKKwkJbGFzdDsKKwl9Cit9Citvaygk d2Fybl9saW1pdCA9PSAxLCAid2Fybi1saW1pdCByZWFjaGVkIik7CisKKyMgV2UgY2FuIHN0 aWxsIElOU0VSVCwgZGVzcGl0ZSB0aGUgd2FybmluZ3MuCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxW0lOU0VSVCBJTlRPIHdyYXBhcm91bmR0ZXN0IFZBTFVFUyAoJ3JlYWNo ZWQgd2Fybi1saW1pdCcpXSk7CisKKyMgS2VlcCBnb2luZy4gV2UnbGwgaGl0IHRoZSBoYXJk ICJzdG9wIiBsaW1pdC4KKyRyZXQgPSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCBxcVtTRUxF Q1QgY29uc3VtZV94aWRzKDEwMDAwMDAwMCldLCBzdGRlcnIgPT4gXCRzdGRlcnIpOworbGlr ZSgkc3RkZXJyLCBxci9FUlJPUjogIGRhdGFiYXNlIGlzIG5vdCBhY2NlcHRpbmcgY29tbWFu ZHMgdG8gYXZvaWQgd3JhcGFyb3VuZCBkYXRhIGxvc3MvLCAic3RvcC1saW1pdCIpOworCisj IEZpbmlzaCB0aGUgb2xkIHRyYW5zYWN0aW9uLCB0byBhbGxvdyB2YWN1dW0gZnJlZXppbmcg dG8gYWR2YW5jZQorIyByZWxmcm96ZW54aWQgYW5kIGRhdGZyb3plbnhpZCBhZ2Fpbi4KKyRp biAuPSBxeworQ09NTUlUOworXHEKK307CiskYmFja2dyb3VuZF9wc3FsLT5maW5pc2g7CisK KyMgVkFDVVVNLCB0byBmcmVlemUgdGhlIHRhYmxlcyBhbmQgYWR2YW5jZSBkYXRmcm96ZW54 aWQuCisjCisjIEF1dG92YWN1dW0gZG9lcyB0aGlzIGZvciB0aGUgb3RoZXIgZGF0YWJhc2Vz LCBhbmQgd291bGQgZG8gaXQgZm9yCisjICdwb3N0Z3JlcycgdG9vLCBidXQgbGV0J3MgdGVz dCBtYW51YWwgVkFDVVVNLgorIworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVkFD VVVNJyk7CisKKyMgV2FpdCB1bnRpbCBhdXRvdmFjdXVtIGhhcyBwcm9jZXNzZWQgdGhlIG90 aGVyIGRhdGFiYXNlcyBhbmQgYWR2YW5jZWQKKyMgdGhlIHN5c3RlbS13aWRlIG9sZGVzdC1Y SUQuCiskcmV0ID0gJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgcXFbSU5T RVJUIElOVE8gd3JhcGFyb3VuZHRlc3QgVkFMVUVTICgnYWZ0ZXIgVkFDVVVNJyldLCAnSU5T RVJUIDAgMScpOworCisjIENoZWNrIHRoZSB0YWJsZSBjb250ZW50cworJHJldCA9ICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUICogZnJvbSB3cmFwYXJvdW5kdGVz dF0pOworaXMoJHJldCwgInN0YXJ0CitvbGR4YWN0CithZnRlciAxIGJpbGxpb24KK2FmdGVy IDIgYmlsbGlvbgorcmVhY2hlZCB3YXJuLWxpbWl0CithZnRlciBWQUNVVU0iKTsKKworJG5v ZGUtPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMveGlkX3dyYXBhcm91bmQvdC8wMDNfd3JhcGFyb3VuZHMucGwgYi9zcmMvdGVzdC9tb2R1 bGVzL3hpZF93cmFwYXJvdW5kL3QvMDAzX3dyYXBhcm91bmRzLnBsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNzlhZGJkMTJkYgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDNfd3JhcGFyb3VuZHMu cGwKQEAgLTAsMCArMSw0NiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjMsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisjCisjIENvbnN1bWUgYSBsb3Qgb2YgWElEcywg d3JhcHBpbmcgYXJvdW5kIGEgZmV3IHRpbWVzLgorIworCit1c2Ugc3RyaWN0OwordXNlIHdh cm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKK3VzZSBUaW1lOjpIaVJlcyBxdyh1 c2xlZXApOworCisjIEluaXRpYWxpemUgbm9kZQorbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3dyYXBhcm91bmQnKTsKKworJG5vZGUtPmluaXQ7Ciskbm9k ZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxWworYXV0b3ZhY3V1bSA9IG9m ZiAjIHJ1biBhdXRvdmFjdXVtIG9ubHkgd2hlbiB0byBhbnRpIHdyYXBhcm91bmQKK2F1dG92 YWN1dW1fbmFwdGltZSA9IDFzCisjIHNvIGl0J3MgZWFzaWVyIHRvIHZlcmlmeSB0aGUgb3Jk ZXIgb2Ygb3BlcmF0aW9ucworYXV0b3ZhY3V1bV9tYXhfd29ya2VycyA9IDEKK2xvZ19hdXRv dmFjdXVtX21pbl9kdXJhdGlvbiA9IDAKK10pOworJG5vZGUtPnN0YXJ0OworJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiB4aWRfd3JhcGFyb3VuZCcp OworCisjIENyZWF0ZSBhIHRlc3QgdGFibGUKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXFbCitDUkVBVEUgVEFCTEUgd3JhcGFyb3VuZHRlc3QodCB0ZXh0KTsKK0lOU0VSVCBJ TlRPIHdyYXBhcm91bmR0ZXN0IFZBTFVFUyAoJ2JlZ2lubmluZycpOworXSk7CisKKyMgQnVy biB0aHJvdWdoIDEwIGJpbGxpb24gdHJhbnNhY3Rpb25zIGluIHRvdGFsLCBpbiBiYXRjaGVz IG9mIDEwMCBtaWxsaW9uLgorbXkgJHJldDsKK2ZvciBteSAkaSAoMSAuLiAxMDApCit7CisJ JHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUIGNvbnN1bWVf eGlkcygxMDAwMDAwMDApXSk7CisJJHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXFbSU5TRVJUIElOVE8gd3JhcGFyb3VuZHRlc3QgVkFMVUVTICgnYWZ0ZXIgJGkgYmF0 Y2hlcycpXSk7Cit9CisKKyRyZXQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx W1NFTEVDVCBDT1VOVCgqKSBGUk9NIHdyYXBhcm91bmR0ZXN0XSk7CitpcygkcmV0LCAiMTAx Iik7CisKKyRub2RlLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQveGlkX3dyYXBhcm91bmQtLTEuMC5zcWwg Yi9zcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3hpZF93cmFwYXJvdW5kLS0xLjAu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mNTU3N2FkZmRi ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQv eGlkX3dyYXBhcm91bmQtLTEuMC5zcWwKQEAgLTAsMCArMSwxMiBAQAorLyogc3JjL3Rlc3Qv bW9kdWxlcy94aWRfd3JhcGFyb3VuZC94aWRfd3JhcGFyb3VuZC0tMS4wLnNxbCAqLworCist LSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2 aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHhpZF93 cmFwYXJvdW5kIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIEZVTkNUSU9O IGNvbnN1bWVfeGlkcyhiaWdpbnQpCitSRVRVUk5TIGJpZ2ludCBJTU1VVEFCTEUgUEFSQUxM RUwgU0FGRSBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NS RUFURSBGVU5DVElPTiBjb25zdW1lX3hpZHNfdW50aWwoYmlnaW50KQorUkVUVVJOUyBiaWdp bnQgSU1NVVRBQkxFIFBBUkFMTEVMIFNBRkUgU1RSSUNUCitBUyAnTU9EVUxFX1BBVEhOQU1F JyBMQU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFy b3VuZC94aWRfd3JhcGFyb3VuZC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3Vu ZC94aWRfd3JhcGFyb3VuZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5jOWQ2MDM0YjU1NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv eGlkX3dyYXBhcm91bmQveGlkX3dyYXBhcm91bmQuYwpAQCAtMCwwICsxLDIyMSBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHhpZF93cmFwYXJvdW5kLmMKKyAqCQlVdGls aXRpZXMgZm9yIHRlc3RpbmcgWElEIHdyYXBhcm91bmQKKyAqCisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk2LTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhl IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJ c3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC94aWRfd3JhcGFyb3VuZC5jCisgKgor ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKwor I2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIK KyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9sd2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKworUEdfTU9E VUxFX01BR0lDOworCitzdGF0aWMgaW50NjQgY29uc3VtZV94aWRzX3Nob3J0Y3V0KHZvaWQp Oworc3RhdGljIEZ1bGxUcmFuc2FjdGlvbklkIGNvbnN1bWVfeGlkc19jb21tb24oRnVsbFRy YW5zYWN0aW9uSWQgdW50aWx4aWQsIHVpbnQ2NCBueGlkcyk7CisKKy8qCisgKiBDb25zdW1l IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIFhJRHMuCisgKi8KK1BHX0ZVTkNUSU9OX0lORk9f VjEoY29uc3VtZV94aWRzKTsKK0RhdHVtCitjb25zdW1lX3hpZHMoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlpbnQ2NAkJbnhpZHMgPSBQR19HRVRBUkdfSU5UNjQoMCk7CisJRnVsbFRyYW5z YWN0aW9uSWQgbGFzdHhpZDsKKworCWlmIChueGlkcyA8IDApCisJCWVsb2coRVJST1IsICJp bnZhbGlkIG54aWRzIGFyZ3VtZW50OiAlbGxkIiwgKGxvbmcgbG9uZykgbnhpZHMpOworCisJ aWYgKG54aWRzID09IDApCisJCWxhc3R4aWQgPSBSZWFkTmV4dEZ1bGxUcmFuc2FjdGlvbklk KCk7CisJZWxzZQorCQlsYXN0eGlkID0gY29uc3VtZV94aWRzX2NvbW1vbihJbnZhbGlkRnVs bFRyYW5zYWN0aW9uSWQsICh1aW50NjQpIG54aWRzKTsKKworCVBHX1JFVFVSTl9JTlQ2NCgo aW50NjQpIFU2NEZyb21GdWxsVHJhbnNhY3Rpb25JZChsYXN0eGlkKSk7Cit9CisKKy8qCisg KiBDb25zdW1lIFhJRHMsIHVwIHRvIHRoZSBnaXZlbiBYSUQuCisgKi8KK1BHX0ZVTkNUSU9O X0lORk9fVjEoY29uc3VtZV94aWRzX3VudGlsKTsKK0RhdHVtCitjb25zdW1lX3hpZHNfdW50 aWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlGdWxsVHJhbnNhY3Rpb25JZCB0YXJnZXR4aWQg PSBGdWxsVHJhbnNhY3Rpb25JZEZyb21VNjQoKHVpbnQ2NCkgUEdfR0VUQVJHX0lOVDY0KDAp KTsKKwlGdWxsVHJhbnNhY3Rpb25JZCBsYXN0eGlkOworCisJaWYgKCFGdWxsVHJhbnNhY3Rp b25JZElzTm9ybWFsKHRhcmdldHhpZCkpCisJCWVsb2coRVJST1IsICJ0YXJnZXR4aWQgJWxs dSBpcyBub3Qgbm9ybWFsIiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgVTY0RnJvbUZ1bGxUcmFu c2FjdGlvbklkKHRhcmdldHhpZCkpOworCisJbGFzdHhpZCA9IGNvbnN1bWVfeGlkc19jb21t b24odGFyZ2V0eGlkLCAwKTsKKworCVBHX1JFVFVSTl9JTlQ2NCgoaW50NjQpIFU2NEZyb21G dWxsVHJhbnNhY3Rpb25JZChsYXN0eGlkKSk7Cit9CisKKy8qCisgKiBDb21tb24gZnVuY3Rp b25hbGl0eSBiZXR3ZWVuIHRoZSB0d28gcHVibGljIGZ1bmN0aW9ucy4KKyAqLworc3RhdGlj IEZ1bGxUcmFuc2FjdGlvbklkCitjb25zdW1lX3hpZHNfY29tbW9uKEZ1bGxUcmFuc2FjdGlv bklkIHVudGlseGlkLCB1aW50NjQgbnhpZHMpCit7CisJRnVsbFRyYW5zYWN0aW9uSWQgbGFz dHhpZDsKKwl1aW50NjQJCWxhc3RfcmVwb3J0ZWRfYXQgPSAwOworCXVpbnQ2NAkJY29uc3Vt ZWQgPSAwOworCisJLyogUHJpbnQgYSBOT1RJQ0UgZXZlcnkgUkVQT1JUX0lOVEVSVkFMIHhp ZHMgKi8KKyNkZWZpbmUgUkVQT1JUX0lOVEVSVkFMICgxMCoxMDAwMDAwKQorCisJLyogaW5p dGlhbGl6ZSAnbGFzdHhpZCcgd2l0aCB0aGUgc3lzdGVtJ3MgY3VycmVudCBuZXh0IFhJRCAq LworCWxhc3R4aWQgPSBSZWFkTmV4dEZ1bGxUcmFuc2FjdGlvbklkKCk7CisKKwkvKgorCSAq IFdlIGNvbnN1bWUgWElEcyBieSBjYWxsaW5nIEdldE5ld1RyYW5zYWN0aW9uSWQodHJ1ZSks IHdoaWNoIG1hcmtzIHRoZQorCSAqIGNvbnN1bWVkIFhJRHMgYXMgc3VidHJhbnNhY3Rpb25z IG9mIHRoZSBjdXJyZW50IHRvcC1sZXZlbCB0cmFuc2FjdGlvbi4KKwkgKiBGb3IgdGhhdCB0 byB3b3JrLCB0aGlzIHRyYW5zYWN0aW9uIG11c3QgaGF2ZSBhIHRvcC1sZXZlbCBYSUQuCisJ ICoKKwkgKiBHZXROZXdUcmFuc2FjdGlvbklkIHJlZ2lzdGVycyB0aGVtIGluIHRoZSBzdWJ4 aWQgY2FjaGUgaW4gUEdQUk9DLCB1bnRpbAorCSAqIHRoZSBjYWNoZSBvdmVyZmxvd3MsIGJ1 dCBiZXlvbmQgdGhhdCwgd2UgZG9uJ3Qga2VlcCB0cmFjayBvZiB0aGUKKwkgKiBjb25zdW1l ZCBYSURzLgorCSAqLworCSh2b2lkKSBHZXRUb3BUcmFuc2FjdGlvbklkKCk7CisKKwlmb3Ig KDs7KQorCXsKKwkJdWludDY0CQl4aWRzX2xlZnQ7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKKworCQkvKiBIb3cgbWFueSBYSURzIGRvIHdlIGhhdmUgbGVmdCB0byBjb25zdW1l PyAqLworCQlpZiAobnhpZHMgPiAwKQorCQl7CisJCQlpZiAoY29uc3VtZWQgPj0gbnhpZHMp CisJCQkJYnJlYWs7CisJCQl4aWRzX2xlZnQgPSBueGlkcyAtIGNvbnN1bWVkOworCQl9CisJ CWVsc2UKKwkJeworCQkJaWYgKEZ1bGxUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGxh c3R4aWQsIHVudGlseGlkKSkKKwkJCQlicmVhazsKKwkJCXhpZHNfbGVmdCA9IFU2NEZyb21G dWxsVHJhbnNhY3Rpb25JZCh1bnRpbHhpZCkgLSBVNjRGcm9tRnVsbFRyYW5zYWN0aW9uSWQo bGFzdHhpZCk7CisJCX0KKworCQkvKgorCQkgKiBJZiB3ZSBzdGlsbCBoYXZlIHBsZW50eSBv ZiBYSURzIHRvIGNvbnN1bWUsIHRyeSB0byB0YWtlIGEgc2hvcnRjdXQKKwkJICogYW5kIGJ1 bXAgdXAgdGhlIG5leHRYaWQgY291bnRlciBkaXJlY3RseS4KKwkJICovCisJCWlmICh4aWRz X2xlZnQgPiAyMDAwICYmCisJCQljb25zdW1lZCAtIGxhc3RfcmVwb3J0ZWRfYXQgPCBSRVBP UlRfSU5URVJWQUwgJiYKKwkJCU15UHJvYy0+c3VieGlkU3RhdHVzLm92ZXJmbG93ZWQpCisJ CXsKKwkJCWludDY0CQljb25zdW1lZF9ieV9zaG9ydGN1dCA9IGNvbnN1bWVfeGlkc19zaG9y dGN1dCgpOworCisJCQlpZiAoY29uc3VtZWRfYnlfc2hvcnRjdXQgPiAwKQorCQkJeworCQkJ CWNvbnN1bWVkICs9IGNvbnN1bWVkX2J5X3Nob3J0Y3V0OworCQkJCWNvbnRpbnVlOworCQkJ fQorCQl9CisKKwkJLyogU2xvdyBwYXRoOiBDYWxsIEdldE5ld1RyYW5zYWN0aW9uSWQgdG8g YWxsb2NhdGUgYSBuZXcgWElELiAqLworCQlsYXN0eGlkID0gR2V0TmV3VHJhbnNhY3Rpb25J ZCh0cnVlKTsKKwkJY29uc3VtZWQrKzsKKworCQkvKiBSZXBvcnQgcHJvZ3Jlc3MgKi8KKwkJ aWYgKGNvbnN1bWVkIC0gbGFzdF9yZXBvcnRlZF9hdCA+PSBSRVBPUlRfSU5URVJWQUwpCisJ CXsKKwkJCWlmIChueGlkcyA+IDApCisJCQkJZWxvZyhOT1RJQ0UsICJjb25zdW1lZCAlbGx1 IC8gJWxsdSBYSURzLCBsYXRlc3QgJXU6JXUiLAorCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9u ZykgY29uc3VtZWQsICh1bnNpZ25lZCBsb25nIGxvbmcpIG54aWRzLAorCQkJCQkgRXBvY2hG cm9tRnVsbFRyYW5zYWN0aW9uSWQobGFzdHhpZCksCisJCQkJCSBYaWRGcm9tRnVsbFRyYW5z YWN0aW9uSWQobGFzdHhpZCkpOworCQkJZWxzZQorCQkJCWVsb2coTk9USUNFLCAiY29uc3Vt ZWQgdXAgdG8gJXU6JXUgLyAldToldSIsCisJCQkJCSBFcG9jaEZyb21GdWxsVHJhbnNhY3Rp b25JZChsYXN0eGlkKSwKKwkJCQkJIFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChsYXN0eGlk KSwKKwkJCQkJIEVwb2NoRnJvbUZ1bGxUcmFuc2FjdGlvbklkKHVudGlseGlkKSwKKwkJCQkJ IFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZCh1bnRpbHhpZCkpOworCQkJbGFzdF9yZXBvcnRl ZF9hdCA9IGNvbnN1bWVkOworCQl9CisJfQorCisJcmV0dXJuIGxhc3R4aWQ7Cit9CisKKwor LyoKKyAqIFRoZXNlIGNvbnN0YW50cyBjb3BpZWQgZnJvbSAuYyBmaWxlcywgYmVjYXVzZSB0 aGV5J3JlIHByaXZhdGUuCisgKi8KKyNkZWZpbmUgQ09NTUlUX1RTX1hBQ1RTX1BFUl9QQUdF IChCTENLU1ogLyAxMCkKKyNkZWZpbmUgU1VCVFJBTlNfWEFDVFNfUEVSX1BBR0UgKEJMQ0tT WiAvIHNpemVvZihUcmFuc2FjdGlvbklkKSkKKyNkZWZpbmUgQ0xPR19YQUNUU19QRVJfQllU RSA0CisjZGVmaW5lIENMT0dfWEFDVFNfUEVSX1BBR0UgKEJMQ0tTWiAqIENMT0dfWEFDVFNf UEVSX0JZVEUpCisKKy8qCisgKiBBbGwgdGhlIGludGVyZXN0aW5nIGFjdGlvbiBpbiBHZXRO ZXdUcmFuc2FjdGlvbklkIGhhcHBlbnMgd2hlbiB3ZSBleHRlbmQKKyAqIHRoZSBTTFJVcywg b3IgYXQgdGhlIHVpbnQzMiB3cmFwYXJvdW5kLiBJZiB0aGUgbmV4dFhpZCBjb3VudGVyIGlz IG5vdCBjbG9zZQorICogdG8gYW55IG9mIHRob3NlIGludGVyZXN0aW5nIHZhbHVlcywgdGFr ZSBhIHNob3J0Y3V0IGFuZCBidW1wIG5leHRYSUQKKyAqIGRpcmVjdGx5LCBjbG9zZSB0byB0 aGUgbmV4dCAiaW50ZXJlc3RpbmciIHZhbHVlLgorICovCitzdGF0aWMgaW5saW5lIHVpbnQz MgorWGlkU2tpcChGdWxsVHJhbnNhY3Rpb25JZCBmdWxseGlkKQoreworCXVpbnQzMgkJbG93 ID0gWGlkRnJvbUZ1bGxUcmFuc2FjdGlvbklkKGZ1bGx4aWQpOworCXVpbnQzMgkJcmVtOwor CXVpbnQzMgkJZGlzdGFuY2U7CisKKwlpZiAobG93IDwgNSB8fCBsb3cgPj0gVUlOVDMyX01B WCAtIDUpCisJCXJldHVybiAwOworCWRpc3RhbmNlID0gVUlOVDMyX01BWCAtIDUgLSBsb3c7 CisKKwlyZW0gPSBsb3cgJSBDT01NSVRfVFNfWEFDVFNfUEVSX1BBR0U7CisJaWYgKHJlbSA9 PSAwKQorCQlyZXR1cm4gMDsKKwlkaXN0YW5jZSA9IE1pbihkaXN0YW5jZSwgQ09NTUlUX1RT X1hBQ1RTX1BFUl9QQUdFIC0gcmVtKTsKKworCXJlbSA9IGxvdyAlIFNVQlRSQU5TX1hBQ1RT X1BFUl9QQUdFOworCWlmIChyZW0gPT0gMCkKKwkJcmV0dXJuIDA7CisJZGlzdGFuY2UgPSBN aW4oZGlzdGFuY2UsIFNVQlRSQU5TX1hBQ1RTX1BFUl9QQUdFIC0gcmVtKTsKKworCXJlbSA9 IGxvdyAlIENMT0dfWEFDVFNfUEVSX1BBR0U7CisJaWYgKHJlbSA9PSAwKQorCQlyZXR1cm4g MDsKKwlkaXN0YW5jZSA9IE1pbihkaXN0YW5jZSwgQ0xPR19YQUNUU19QRVJfUEFHRSAtIHJl bSk7CisKKwlyZXR1cm4gZGlzdGFuY2U7Cit9CisKK3N0YXRpYyBpbnQ2NAorY29uc3VtZV94 aWRzX3Nob3J0Y3V0KHZvaWQpCit7CisJRnVsbFRyYW5zYWN0aW9uSWQgbmV4dFhpZDsKKwl1 aW50MzIJCWNvbnN1bWVkOworCisJTFdMb2NrQWNxdWlyZShYaWRHZW5Mb2NrLCBMV19FWENM VVNJVkUpOworCW5leHRYaWQgPSBTaG1lbVZhcmlhYmxlQ2FjaGUtPm5leHRYaWQ7CisKKwkv KgorCSAqIEdvIHNsb3cgbmVhciB0aGUgImludGVyZXN0aW5nIHZhbHVlcyIuIFRoZSBpbnRl cmVzdGluZyB6b25lcyBpbmNsdWRlIDUKKwkgKiB0cmFuc2FjdGlvbnMgYmVmb3JlIGFuZCBh ZnRlciBTTFJVIHBhZ2Ugc3dpdGNoZXMuCisJICovCisJY29uc3VtZWQgPSBYaWRTa2lwKG5l eHRYaWQpOworCWlmIChjb25zdW1lZCA+IDApCisJCVNobWVtVmFyaWFibGVDYWNoZS0+bmV4 dFhpZC52YWx1ZSArPSAodWludDY0KSBjb25zdW1lZDsKKworCUxXTG9ja1JlbGVhc2UoWGlk R2VuTG9jayk7CisKKwlyZXR1cm4gY29uc3VtZWQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3hpZF93cmFwYXJvdW5kLmNvbnRyb2wgYi9zcmMv dGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3hpZF93cmFwYXJvdW5kLmNvbnRyb2wKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZjNjk2NGVkM2QzCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC94aWRfd3Jh cGFyb3VuZC5jb250cm9sCkBAIC0wLDAgKzEsNCBAQAorY29tbWVudCA9ICdUZXN0cyBmb3Ig WElEIHdyYXBhcm91bmQnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhu YW1lID0gJyRsaWJkaXIveGlkX3dyYXBhcm91bmQnCityZWxvY2F0YWJsZSA9IHRydWUKLS0g CjIuMzAuMgoK --------------mKd3g3aTbgtX39OyIUU9NCoS--