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 1q3wgZ-0003na-24 for pgsql-hackers@arkaria.postgresql.org; Tue, 30 May 2023 10:34:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q3wgX-00072A-Tr for pgsql-hackers@arkaria.postgresql.org; Tue, 30 May 2023 10:34:37 +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 1q3wgX-000721-I4 for pgsql-hackers@lists.postgresql.org; Tue, 30 May 2023 10:34:37 +0000 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q3wgT-0033Eh-KG for pgsql-hackers@lists.postgresql.org; Tue, 30 May 2023 10:34:36 +0000 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-30aa76048fbso2733532f8f.2 for ; Tue, 30 May 2023 03:34:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685442873; x=1688034873; h=cc:to:subject:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=BxvEohmqOTI+zmHE3t/zHuASyky8/L16s+s0w6XziL8=; b=W95BcRhF+4CJPzMrDXRWiLdV+DNPb1RcFnnKLRR/XiZa6pLYXcX6raQFtH4k19M5Es AI3xbIHsFELKuJmkQSl+rbmQGxeDzd2ECOhLlJ9RzJ5epDH0g4rlDNsKK+ajmhMrPR3I X4djgcFanCRS+w8Mp/nx3D794xFYTEaa5a3QehD/aBClFfUMv8/WKSdO15S9R5YAPOgU ND/8QO52vB8FSHpOd2goPP8f5wotmtgQ5Sfpc+jeQJfbI7f2EIXWdXz3+JrePpJpLEsb Oo8C/k54677Qimy4dXv89ZhQTM+IJjo9odV4soNXuagHmtdBOjbT0YxJdaer6lHXWG+O 99Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685442873; x=1688034873; h=cc:to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=BxvEohmqOTI+zmHE3t/zHuASyky8/L16s+s0w6XziL8=; b=ZJDsQwnnkqtrE5VfwElTJhL8QCWJIN7E1bUio6JnDKIGd0ownNgGm74z+sqxgLHC/+ kma3e5++/ujA4iwCb/7pd+1edxCCR41T/wT/roynCK2cmWMY2fKIVJDw4z8w9JPfi5VX X5nar4Z1akFLEnBx92iDZa2qBAU6ro86Y0ZXfUIR0lkiLszn8YSGEY7dB6tVO/1X7FgC X8ZNRjIJCVFuUqHsHFvgixMHQq1dh3WANZo+9TTGFSN6DRlYdagPCY3AyBcZyJaZ47LI sckKpSutWdE7L70BzUBv1UnNaJaMRjQCxrCvieI1rGllnW11x6V5Ge00hCd8PMnLd2gP Pvwg== X-Gm-Message-State: AC+VfDxUHnhMz05rcb+VcgSCmZxuG2n4NgIqMWslgRMvYQSb8U/SaJ+9 HL55hFpmSvLkRMD/M1YC9DzphAFqXPjcHw== X-Google-Smtp-Source: ACHHUZ52HKw0/UUpleCY3D4dwC+zZCHluGVzq5lYtOEHKmZW8boJybz+7pFCmxamJnq9AEtjbGO+KQ== X-Received: by 2002:a5d:40d1:0:b0:309:395d:8da5 with SMTP id b17-20020a5d40d1000000b00309395d8da5mr1318615wrq.22.1685442872568; Tue, 30 May 2023 03:34:32 -0700 (PDT) Received: from [192.168.1.182] ([54.239.6.190]) by smtp.gmail.com with ESMTPSA id c16-20020a5d4f10000000b002fda1b12a0bsm2867184wru.2.2023.05.30.03.34.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 May 2023 03:34:32 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------ISRZnCPWKidGTDDHmCuzuyzh" Message-ID: Date: Tue, 30 May 2023 12:34:30 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Content-Language: en-US From: "Drouvot, Bertrand" Subject: Test slots invalidations in 035_standby_logical_decoding.pl only if dead rows are removed To: PostgreSQL Hackers Cc: "Yu Shi (Fujitsu)" , Tom Lane , Robert Haas 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. --------------ISRZnCPWKidGTDDHmCuzuyzh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi hackers, Please find attached a patch proposal to $SUBJECT. Indeed, we have seen occurrences in [1] that some slots were not invalidated (while we expected vacuum to remove dead rows leading to slots invalidation on the standby). Though we don't have strong evidences that this was due to transactions holding back global xmin (as vacuum did not run in verbose mode), suspicion is high enough (as Tom pointed out that the test is broken on its face (see [1])). The proposed patch: - set autovacuum = off on the primary (as autovacuum is the usual suspect for holding global xmin). - Ensure that vacuum is able to remove dead rows before launching the slots invalidation tests. - If after 10 attempts the vacuum is still not able to remove the dead rows then the slots invalidation tests are skipped: that should be pretty rare, as currently the majority of the tests are green (with only one attempt). While at it, the patch also addresses the nitpicks mentioned by Robert in [2]. [1]: https://www.postgresql.org/message-id/flat/OSZPR01MB6310CFFD7D0DCD60A05DB1C3FD4A9%40OSZPR01MB6310.jpnprd01.prod.outlook.com#71898e088d2a57564a1bd9c41f3e6f36 [2]: https://www.postgresql.org/message-id/CA%2BTgmobHGpU2ZkChgKifGDLaf_%2BmFA7njEpeTjfyNf_msCZYew%40mail.gmail.com Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------ISRZnCPWKidGTDDHmCuzuyzh Content-Type: text/plain; charset=UTF-8; name="v1-0001-Ensure-vacuum-did-remove-dead-rows-in-035_standby.patch" Content-Disposition: attachment; filename*0="v1-0001-Ensure-vacuum-did-remove-dead-rows-in-035_standby.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhNWM2ZWY4MGNhZTFmYjc2MDZmZjQ2Njc5NDIyMjM4ZmRjZWI1Y2M4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2 b3QucGdAZ21haWwuY29tPgpEYXRlOiBUdWUsIDMwIE1heSAyMDIzIDA3OjU0OjAyICswMDAw ClN1YmplY3Q6IFtQQVRDSCB2MV0gRW5zdXJlIHZhY3V1bSBkaWQgcmVtb3ZlIGRlYWQgcm93 cyBpbgogMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZwoKV2Ugd2FudCB0byBlbnN1cmUg dGhhdCB2YWN1dW0gd2FzIGFibGUgdG8gcmVtb3ZlIGRlYWQgcm93cyAoYWthIG5vIG90aGVy CnRyYW5zYWN0aW9ucyBob2xkaW5nIGJhY2sgZ2xvYmFsIHhtaW4pIGJlZm9yZSB0ZXN0aW5n IGZvciBzbG90cyBpbnZhbGlkYXRpb24Kb24gdGhlIHN0YW5kYnkuCi0tLQogLi4uL3QvMDM1 X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCAgICAgICAgIHwgMjYzICsrKysrKysrKyst LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCAxMTMgZGVsZXRp b25zKC0pCiAxMDAuMCUgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8KCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMv dGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKaW5kZXgg NjRiZWVjNGJkMy4uZDI2ZDliY2FjZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsCisrKyBiL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtOSw2ICs5LDcgQEAg dXNlIHdhcm5pbmdzOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKK3VzZSBUaW1lOjpIaVJl cyBxdyh1c2xlZXApOwogCiBteSAoJHN0ZGluLCAkc3Rkb3V0LCAkc3RkZXJyLAogCSRjYXNj YWRpbmdfc3Rkb3V0LCAkY2FzY2FkaW5nX3N0ZGVyciwgJHN1YnNjcmliZXJfc3RkaW4sCkBA IC0yMyw2ICsyNCw5IEBAIG15ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKIG15ICRkZWZhdWx0X3RpbWVvdXQgPSAk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsKIG15ICRwc3FsX3Rp bWVvdXQgPSBJUEM6OlJ1bjo6dGltZXIoJGRlZmF1bHRfdGltZW91dCk7CiBteSAkcmVzOwor bXkgKCR2YWNyZXQsICR2YWNzdGRvdXQsICR2YWNzdGRlcnIpID0gKCcnLCAnJywgJycpOwor bXkgJG5iX3ZhYyA9IDA7CitteSAkdmFjX2F0dGVtcHRzID0gMTA7CiAKICMgTmFtZSBmb3Ig dGhlIHBoeXNpY2FsIHNsb3Qgb24gcHJpbWFyeQogbXkgJHByaW1hcnlfc2xvdG5hbWUgPSAn cHJpbWFyeV9waHlzaWNhbCc7CkBAIC0xODUsNyArMTg5LDcgQEAgc3ViIGNoYW5nZV9ob3Rf c3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMKICMgQ2hlY2sgY29uZmxpY3Rp bmcgc3RhdHVzIGluIHBnX3JlcGxpY2F0aW9uX3Nsb3RzLgogc3ViIGNoZWNrX3Nsb3RzX2Nv bmZsaWN0aW5nX3N0YXR1cwogewotCW15ICgkY29uZmxpY3RpbmcpID0gQF87CisJbXkgKCRj b25mbGljdGluZywgJGRldGFpbHMpID0gQF87CiAKIAlpZiAoJGNvbmZsaWN0aW5nKQogCXsK QEAgLTE5Myw3ICsxOTcsNyBAQCBzdWIgY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVz CiAJCQkncG9zdGdyZXMnLCBxcSgKIAkJCQkgc2VsZWN0IGJvb2xfYW5kKGNvbmZsaWN0aW5n KSBmcm9tIHBnX3JlcGxpY2F0aW9uX3Nsb3RzOykpOwogCi0JCWlzKCRyZXMsICd0JywgIkxv Z2ljYWwgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNvbmZsaWN0aW5nIik7CisJCWlzKCRyZXMs ICd0JywgImxvZ2ljYWwgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNvbmZsaWN0aW5nICRkZXRh aWxzIik7CiAJfQogCWVsc2UKIAl7CkBAIC0yMDEsNyArMjA1LDcgQEAgc3ViIGNoZWNrX3Ns b3RzX2NvbmZsaWN0aW5nX3N0YXR1cwogCQkJJ3Bvc3RncmVzJywgcXEoCiAJCQkJc2VsZWN0 IGJvb2xfb3IoY29uZmxpY3RpbmcpIGZyb20gcGdfcmVwbGljYXRpb25fc2xvdHM7KSk7CiAK LQkJaXMoJHJlcywgJ2YnLCAiTG9naWNhbCBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgbm9uIGNv bmZsaWN0aW5nIik7CisJCWlzKCRyZXMsICdmJywgImxvZ2ljYWwgc2xvdHMgYXJlIHJlcG9y dGVkIGFzIG5vbiBjb25mbGljdGluZyAkZGV0YWlscyIpOwogCX0KIH0KIApAQCAtMjU2LDYg KzI2MCwyOSBAQCBzdWIgY2hlY2tfZm9yX2ludmFsaWRhdGlvbgogCSkgb3IgZGllICJUaW1l ZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7 CiB9CiAKKyMgVHJ5ICgkdmFjX2F0dGVtcHRzIHRpbWVzIG1heCkgdG8gdmFjdXVtIHVudGls IGl0IGlzIGFibGUgdG8gcmVtb3ZlIGRlYWQgcm93cy4KK3N1YiB2YWN1dW1fdW50aWxfY2Fu X3JlbW92ZQoreworCW15ICgkdmFjX29wdGlvbiwgJHNxbCwgJHRvX3ZhYykgPSBAXzsKKwor CSgkdmFjcmV0LCAkdmFjc3Rkb3V0LCAkdmFjc3RkZXJyKSA9ICgnJywgJycsICcnKTsKKwkk bmJfdmFjID0gMDsKKworCXdoaWxlICgkbmJfdmFjIDw9ICR2YWNfYXR0ZW1wdHMpCisJewor CQlsYXN0IGlmICgkdmFjc3RkZXJyID1+IC8wIGRlYWQgcm93IHZlcnNpb25zIGNhbm5vdCBi ZSByZW1vdmVkIHlldC8gfHwKKwkJCQkgJHZhY3N0ZGVyciA9fiAvMCBhcmUgZGVhZCBidXQg bm90IHlldCByZW1vdmFibGUvKTsKKwkJIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25m bGljdAorCQkoJHZhY3JldCwgJHZhY3N0ZG91dCwgJHZhY3N0ZGVycikgPSAkbm9kZV9wcmlt YXJ5LT5wc3FsKAorCQkJJ3Rlc3RkYicsIHFxWworCQkJICAkc3FsCisJCQkgIFZBQ1VVTSAk dmFjX29wdGlvbiB2ZXJib3NlICR0b192YWM7CisJCQkgIElOU0VSVCBJTlRPIGZsdXNoX3dh bCBERUZBVUxUIFZBTFVFUzsgLS0gc2VlIGNyZWF0ZSB0YWJsZSBmbHVzaF93YWwKKwkJXSk7 CisJCSRuYl92YWMrKzsKKwkJdXNsZWVwKDEwMF8wMDApOworCX0KK30KICMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCkBAIC0yNjYsNiArMjkzLDcgQEAgJG5vZGVfcHJpbWFyeS0+YXBwZW5k X2NvbmYoCiB3YWxfbGV2ZWwgPSAnbG9naWNhbCcKIG1heF9yZXBsaWNhdGlvbl9zbG90cyA9 IDQKIG1heF93YWxfc2VuZGVycyA9IDQKK2F1dG92YWN1dW0gPSBvZmYKIH0pOwogJG5vZGVf cHJpbWFyeS0+ZHVtcF9pbmZvOwogJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CkBAIC00ODUsMzAg KzUxMywzMSBAQCAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogcmVhY3RpdmVfc2xvdHNfY2hh bmdlX2hmc19hbmRfd2FpdF9mb3JfeG1pbnMoJ2JlaGF2ZXNfb2tfJywgJ3ZhY3V1bV9mdWxs XycsCiAJMCwgMSk7CiAKLSMgVGhpcyBzaG91bGQgdHJpZ2dlciB0aGUgY29uZmxpY3QKLSRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgKLQkndGVzdGRiJywgcXFbCi0gIENSRUFURSBUQUJM RSBjb25mbGljdF90ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTsKLSAgRFJPUCBUQUJMRSBjb25m bGljdF90ZXN0OwotICBWQUNVVU0gZnVsbCBwZ19jbGFzczsKLSAgSU5TRVJUIElOVE8gZmx1 c2hfd2FsIERFRkFVTFQgVkFMVUVTOyAtLSBzZWUgY3JlYXRlIHRhYmxlIGZsdXNoX3dhbAot XSk7Cit2YWN1dW1fdW50aWxfY2FuX3JlbW92ZSgnZnVsbCcsICdDUkVBVEUgVEFCTEUgY29u ZmxpY3RfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7CisJCQkJCQkJCSBEUk9QIFRBQkxFIGNv bmZsaWN0X3Rlc3Q7JywgJ3BnX2NsYXNzJyk7CiAKICRub2RlX3ByaW1hcnktPndhaXRfZm9y X3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwogCi0jIENoZWNrIGludmFsaWRhdGlv biBpbiB0aGUgbG9nZmlsZSBhbmQgaW4gcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMKLWNo ZWNrX2Zvcl9pbnZhbGlkYXRpb24oJ3ZhY3V1bV9mdWxsXycsIDEsICd3aXRoIHZhY3V1bSBG VUxMIG9uIHBnX2NsYXNzJyk7CitTS0lQOgoreworCSMgQ2hlY2tpbmcgZm9yIGludmFsaWRh dGlvbiBvbmx5IGlmIHZhY3V1bSBkaWQgcmVtb3ZlIGRlYWQgcm93cworCXNraXAgJ3ZhY3V1 bSBmdWxsIGRpZCBub3QgcmVtb3ZlIGRlYWQgcm93cycsIDEKKwkJdW5sZXNzICgkbmJfdmFj IDwgJHZhY19hdHRlbXB0cyk7CiAKLSMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBj b25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cwotY2hlY2tfc2xvdHNfY29uZmxp Y3Rpbmdfc3RhdHVzKDEpOworCSMgQ2hlY2sgaW52YWxpZGF0aW9uIGluIHRoZSBsb2dmaWxl IGFuZCBpbiBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cworCWNoZWNrX2Zvcl9pbnZhbGlk YXRpb24oJ3ZhY3V1bV9mdWxsXycsIDEsICd3aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNz Jyk7CiAKLSRoYW5kbGUgPQotICBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksICd2 YWN1dW1fZnVsbF8nLCAwLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworCSMgVmVyaWZ5IHNsb3Rz IGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cwor CWNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxLCAnYWZ0ZXIgdmFjdXVtIEZVTEwg b24gcGdfY2xhc3MnKTsKIAotIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBz bG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCi1jaGVja19wZ19yZWN2bG9naWNhbF9z dGRlcnIoJGhhbmRsZSwKLQkiY2FuIG5vIGxvbmdlciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxp Y2F0aW9uIHNsb3QgXCJ2YWN1dW1fZnVsbF9hY3RpdmVzbG90XCIiCi0pOworCSRoYW5kbGUg PQorCSAgbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAndmFjdXVtX2Z1bGxfJywg MCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKworCSMgV2UgYXJlIG5vdCBhYmxlIHRvIHJlYWQg ZnJvbSB0aGUgc2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorCWNoZWNrX3BnX3Jl Y3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLAorCQkiY2FuIG5vIGxvbmdlciBnZXQgY2hhbmdl cyBmcm9tIHJlcGxpY2F0aW9uIHNsb3QgXCJ2YWN1dW1fZnVsbF9hY3RpdmVzbG90XCIiCisJ KTsKK30KIAogIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KIGNoYW5nZV9o b3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMSwgMSk7CkBAIC01MTgs NDUgKzU0Nyw0OSBAQCBjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9y X3htaW5zKDEsIDEpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKICRub2RlX3N0YW5kYnktPnJlc3RhcnQ7CiAKLSMgVmVyaWZ5IHNsb3Rz IGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cwot Y2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOworU0tJUDoKK3sKKwlza2lwICd2 YWN1dW0gZnVsbCBvbiBwZ19jbGFzcyBkaWQgbm90IHJlbW92ZSBkZWFkIHJvd3MnLCAxCisJ CXVubGVzcyAoJG5iX3ZhYyA8ICR2YWNfYXR0ZW1wdHMpOworCSMgVmVyaWZ5IHNsb3RzIGFy ZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cworCWNo ZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxLCAnYWZ0ZXIgYSByZXN0YXJ0Jyk7CiAK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAj IFZlcmlmeSB0aGF0IGludmFsaWRhdGVkIGxvZ2ljYWwgc2xvdHMgZG8gbm90IGxlYWQgdG8g cmV0YWluaW5nIFdBTC4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAKLSMgR2V0IHRoZSByZXN0YXJ0X2xzbiBmcm9tIGFuIGludmFsaWRh dGVkIHNsb3QKLW15ICRyZXN0YXJ0X2xzbiA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgcmVzdGFydF9sc24gZnJvbSBwZ19yZXBsaWNhdGlvbl9z bG90cyBXSEVSRSBzbG90X25hbWUgPSAndmFjdXVtX2Z1bGxfYWN0aXZlc2xvdCcgYW5kIGNv bmZsaWN0aW5nIGlzIHRydWU7IgotKTsKLQotY2hvbXAoJHJlc3RhcnRfbHNuKTsKKwkjIEdl dCB0aGUgcmVzdGFydF9sc24gZnJvbSBhbiBpbnZhbGlkYXRlZCBzbG90CisJbXkgJHJlc3Rh cnRfbHNuID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgcmVzdGFydF9sc24gZnJvbSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25h bWUgPSAndmFjdXVtX2Z1bGxfYWN0aXZlc2xvdCcgYW5kIGNvbmZsaWN0aW5nIGlzIHRydWU7 IgorCSk7CiAKLSMgQXMgcGdfd2FsZmlsZV9uYW1lKCkgY2FuIG5vdCBiZSBleGVjdXRlZCBv biB0aGUgc3RhbmRieSwKLSMgZ2V0IHRoZSBXQUwgZmlsZSBuYW1lIGFzc29jaWF0ZWQgdG8g dGhpcyBsc24gZnJvbSB0aGUgcHJpbWFyeQotbXkgJHdhbGZpbGVfbmFtZSA9ICRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgcGdfd2FsZmlsZV9uYW1l KCckcmVzdGFydF9sc24nKSIpOworCWNob21wKCRyZXN0YXJ0X2xzbik7CiAKLWNob21wKCR3 YWxmaWxlX25hbWUpOworCSMgQXMgcGdfd2FsZmlsZV9uYW1lKCkgY2FuIG5vdCBiZSBleGVj dXRlZCBvbiB0aGUgc3RhbmRieSwKKwkjIGdldCB0aGUgV0FMIGZpbGUgbmFtZSBhc3NvY2lh dGVkIHRvIHRoaXMgbHNuIGZyb20gdGhlIHByaW1hcnkKKwlteSAkd2FsZmlsZV9uYW1lID0g JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgcGdfd2Fs ZmlsZV9uYW1lKCckcmVzdGFydF9sc24nKSIpOwogCi0jIEdlbmVyYXRlIHNvbWUgYWN0aXZp dHkgYW5kIHN3aXRjaCBXQUwgZmlsZSBvbiB0aGUgcHJpbWFyeQotJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICJjcmVhdGUgdGFibGUgcmV0YWluX3Rlc3QoYSBp bnQpOwotCQkJCQkJCQkJIHNlbGVjdCBwZ19zd2l0Y2hfd2FsKCk7Ci0JCQkJCQkJCQkgaW5z ZXJ0IGludG8gcmV0YWluX3Rlc3QgdmFsdWVzKDEpOwotCQkJCQkJCQkJIGNoZWNrcG9pbnQ7 Iik7CisJY2hvbXAoJHdhbGZpbGVfbmFtZSk7CiAKLSMgV2FpdCBmb3IgdGhlIHN0YW5kYnkg dG8gY2F0Y2ggdXAKLSRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRu b2RlX3N0YW5kYnkpOworCSMgR2VuZXJhdGUgc29tZSBhY3Rpdml0eSBhbmQgc3dpdGNoIFdB TCBmaWxlIG9uIHRoZSBwcmltYXJ5CisJJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCAiY3JlYXRlIHRhYmxlIHJldGFpbl90ZXN0KGEgaW50KTsKKwkJCQkJCQkJ CQkgc2VsZWN0IHBnX3N3aXRjaF93YWwoKTsKKwkJCQkJCQkJCQkgaW5zZXJ0IGludG8gcmV0 YWluX3Rlc3QgdmFsdWVzKDEpOworCQkJCQkJCQkJCSBjaGVja3BvaW50OyIpOwogCi0jIFJl cXVlc3QgYSBjaGVja3BvaW50IG9uIHRoZSBzdGFuZGJ5IHRvIHRyaWdnZXIgdGhlIFdBTCBm aWxlKHMpIHJlbW92YWwKLSRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn Y2hlY2twb2ludDsnKTsKKwkjIFdhaXQgZm9yIHRoZSBzdGFuZGJ5IHRvIGNhdGNoIHVwCisJ JG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7 CiAKLSMgVmVyaWZ5IHRoYXQgdGhlIFdBTCBmaWxlIGhhcyBub3QgYmVlbiByZXRhaW5lZCBv biB0aGUgc3RhbmRieQotbXkgJHN0YW5kYnlfd2FsZmlsZSA9ICRub2RlX3N0YW5kYnktPmRh dGFfZGlyIC4gJy9wZ193YWwvJyAuICR3YWxmaWxlX25hbWU7Ci1vayghLWYgIiRzdGFuZGJ5 X3dhbGZpbGUiLAotCSJpbnZhbGlkYXRlZCBsb2dpY2FsIHNsb3RzIGRvIG5vdCBsZWFkIHRv IHJldGFpbmluZyBXQUwiKTsKKwkjIFJlcXVlc3QgYSBjaGVja3BvaW50IG9uIHRoZSBzdGFu ZGJ5IHRvIHRyaWdnZXIgdGhlIFdBTCBmaWxlKHMpIHJlbW92YWwKKwkkbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ2NoZWNrcG9pbnQ7Jyk7CiAKKwkjIFZlcmlmeSB0 aGF0IHRoZSBXQUwgZmlsZSBoYXMgbm90IGJlZW4gcmV0YWluZWQgb24gdGhlIHN0YW5kYnkK KwlteSAkc3RhbmRieV93YWxmaWxlID0gJG5vZGVfc3RhbmRieS0+ZGF0YV9kaXIgLiAnL3Bn X3dhbC8nIC4gJHdhbGZpbGVfbmFtZTsKKwlvayghLWYgIiRzdGFuZGJ5X3dhbGZpbGUiLAor CQkiaW52YWxpZGF0ZWQgbG9naWNhbCBzbG90cyBkbyBub3QgbGVhZCB0byByZXRhaW5pbmcg V0FMIik7Cit9CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogIyBSZWNvdmVyeSBjb25mbGljdDogSW52YWxpZGF0ZSBjb25mbGljdGluZyBz bG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cwogIyBTY2VuYXJpbyAyOiBjb25mbGljdCBk dWUgdG8gcm93IHJlbW92YWwgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvZmYuCkBAIC01 NzEsMjkgKzYwNCwzMCBAQCByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zv cl94bWlucygndmFjdXVtX2Z1bGxfJywgJ3Jvd19yZW1vdmFsXycsCiAJMCwgMSk7CiAKICMg VGhpcyBzaG91bGQgdHJpZ2dlciB0aGUgY29uZmxpY3QKLSRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgKLQkndGVzdGRiJywgcXFbCi0gIENSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHgg aW50ZWdlciwgeSB0ZXh0KTsKLSAgRFJPUCBUQUJMRSBjb25mbGljdF90ZXN0OwotICBWQUNV VU0gcGdfY2xhc3M7Ci0gIElOU0VSVCBJTlRPIGZsdXNoX3dhbCBERUZBVUxUIFZBTFVFUzsg LS0gc2VlIGNyZWF0ZSB0YWJsZSBmbHVzaF93YWwKLV0pOwordmFjdXVtX3VudGlsX2Nhbl9y ZW1vdmUoJycsICdDUkVBVEUgVEFCTEUgY29uZmxpY3RfdGVzdCh4IGludGVnZXIsIHkgdGV4 dCk7CisJCQkJCQkJIERST1AgVEFCTEUgY29uZmxpY3RfdGVzdDsnLCAncGdfY2xhc3MnKTsK IAogJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRi eSk7CiAKLSMgQ2hlY2sgaW52YWxpZGF0aW9uIGluIHRoZSBsb2dmaWxlIGFuZCBpbiBwZ19z dGF0X2RhdGFiYXNlX2NvbmZsaWN0cwotY2hlY2tfZm9yX2ludmFsaWRhdGlvbigncm93X3Jl bW92YWxfJywgJGxvZ3N0YXJ0LCAnd2l0aCB2YWN1dW0gb24gcGdfY2xhc3MnKTsKK1NLSVA6 Cit7CisJc2tpcCAndmFjdXVtIG9uIHBnX2NsYXNzIGRpZCBub3QgcmVtb3ZlIGRlYWQgcm93 cycsIDEKKwkJdW5sZXNzICgkbmJfdmFjIDwgJHZhY19hdHRlbXB0cyk7CiAKLSMgVmVyaWZ5 IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9z bG90cwotY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOworCSMgQ2hlY2sgaW52 YWxpZGF0aW9uIGluIHRoZSBsb2dmaWxlIGFuZCBpbiBwZ19zdGF0X2RhdGFiYXNlX2NvbmZs aWN0cworCWNoZWNrX2Zvcl9pbnZhbGlkYXRpb24oJ3Jvd19yZW1vdmFsXycsICRsb2dzdGFy dCwgJ3dpdGggdmFjdXVtIG9uIHBnX2NsYXNzJyk7CiAKLSRoYW5kbGUgPQotICBtYWtlX3Ns b3RfYWN0aXZlKCRub2RlX3N0YW5kYnksICdyb3dfcmVtb3ZhbF8nLCAwLCBcJHN0ZG91dCwg XCRzdGRlcnIpOworCSMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGlu ZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cworCWNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0 YXR1cygxLCAnYWZ0ZXIgdmFjdXVtIG9uIHBnX2NsYXNzJyk7CiAKLSMgV2UgYXJlIG5vdCBh YmxlIHRvIHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAot Y2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsCi0JImNhbiBubyBsb25nZXIg Z2V0IGNoYW5nZXMgZnJvbSByZXBsaWNhdGlvbiBzbG90IFwicm93X3JlbW92YWxfYWN0aXZl c2xvdFwiIgotKTsKKwkkaGFuZGxlID0KKwkgIG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3Rh bmRieSwgJ3Jvd19yZW1vdmFsXycsIDAsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKwkjIFdl IGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52 YWxpZGF0ZWQKKwljaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwKKwkJImNh biBubyBsb25nZXIgZ2V0IGNoYW5nZXMgZnJvbSByZXBsaWNhdGlvbiBzbG90IFwicm93X3Jl bW92YWxfYWN0aXZlc2xvdFwiIgorCSk7Cit9CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFJlY292ZXJ5IGNvbmZsaWN0OiBTYW1l IGFzIFNjZW5hcmlvIDIgYnV0IG9uIGEgc2hhcmVkIGNhdGFsb2cgdGFibGUKQEAgLTYwOSwz MCArNjQzLDMwIEBAIHJlYWN0aXZlX3Nsb3RzX2NoYW5nZV9oZnNfYW5kX3dhaXRfZm9yX3ht aW5zKCdyb3dfcmVtb3ZhbF8nLAogCSdzaGFyZWRfcm93X3JlbW92YWxfJywgMCwgMSk7CiAK ICMgVHJpZ2dlciB0aGUgY29uZmxpY3QKLSRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgKLQkn dGVzdGRiJywgcXFbCi0gIENSRUFURSBST0xFIGNyZWF0ZV90cmFzaDsKLSAgRFJPUCBST0xF IGNyZWF0ZV90cmFzaDsKLSAgVkFDVVVNIHBnX2F1dGhpZDsKLSAgSU5TRVJUIElOVE8gZmx1 c2hfd2FsIERFRkFVTFQgVkFMVUVTOyAtLSBzZWUgY3JlYXRlIHRhYmxlIGZsdXNoX3dhbAot XSk7Cit2YWN1dW1fdW50aWxfY2FuX3JlbW92ZSgnJywgJ0NSRUFURSBST0xFIGNyZWF0ZV90 cmFzaDsKKwkJCQkJCQkgRFJPUCBST0xFIGNyZWF0ZV90cmFzaDsnLCAncGdfYXV0aGlkJyk7 CiAKICRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5k YnkpOworU0tJUDoKK3sKKwlza2lwICd2YWN1dW0gb24gcGdfYXV0aGlkIGRpZCBub3QgcmVt b3ZlIGRlYWQgcm93cycsIDEKKwkJdW5sZXNzICgkbmJfdmFjIDwgJHZhY19hdHRlbXB0cyk7 CiAKLSMgQ2hlY2sgaW52YWxpZGF0aW9uIGluIHRoZSBsb2dmaWxlIGFuZCBpbiBwZ19zdGF0 X2RhdGFiYXNlX2NvbmZsaWN0cwotY2hlY2tfZm9yX2ludmFsaWRhdGlvbignc2hhcmVkX3Jv d19yZW1vdmFsXycsICRsb2dzdGFydCwKLQknd2l0aCB2YWN1dW0gb24gcGdfYXV0aGlkJyk7 CisJIyBDaGVjayBpbnZhbGlkYXRpb24gaW4gdGhlIGxvZ2ZpbGUgYW5kIGluIHBnX3N0YXRf ZGF0YWJhc2VfY29uZmxpY3RzCisJY2hlY2tfZm9yX2ludmFsaWRhdGlvbignc2hhcmVkX3Jv d19yZW1vdmFsXycsICRsb2dzdGFydCwKKwkJJ3dpdGggdmFjdXVtIG9uIHBnX2F1dGhpZCcp OwogCi0jIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdf cmVwbGljYXRpb25fc2xvdHMKLWNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxKTsK KwkjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVw bGljYXRpb25fc2xvdHMKKwljaGVja19zbG90c19jb25mbGljdGluZ19zdGF0dXMoMSwgJ2Fm dGVyIHZhY3V1bSBvbiBwZ19hdXRoaWQnKTsKIAotJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3Rp dmUoJG5vZGVfc3RhbmRieSwgJ3NoYXJlZF9yb3dfcmVtb3ZhbF8nLCAwLCBcJHN0ZG91dCwK LQlcJHN0ZGVycik7CisJJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRi eSwgJ3NoYXJlZF9yb3dfcmVtb3ZhbF8nLCAwLCBcJHN0ZG91dCwKKwkJXCRzdGRlcnIpOwog Ci0jIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJl ZW4gaW52YWxpZGF0ZWQKLWNoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLAot CSJjYW4gbm8gbG9uZ2VyIGdldCBjaGFuZ2VzIGZyb20gcmVwbGljYXRpb24gc2xvdCBcInNo YXJlZF9yb3dfcmVtb3ZhbF9hY3RpdmVzbG90XCIiCi0pOworCSMgV2UgYXJlIG5vdCBhYmxl IHRvIHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorCWNo ZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLAorCQkiY2FuIG5vIGxvbmdlciBn ZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0aW9uIHNsb3QgXCJzaGFyZWRfcm93X3JlbW92YWxf YWN0aXZlc2xvdFwiIgorCSk7Cit9CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFJlY292ZXJ5IGNvbmZsaWN0OiBTYW1lIGFzIFNj ZW5hcmlvIDIgYnV0IG9uIGEgbm9uIGNhdGFsb2cgdGFibGUKQEAgLTY0NiwzOSArNjgwLDQy IEBAIHJlYWN0aXZlX3Nsb3RzX2NoYW5nZV9oZnNfYW5kX3dhaXRfZm9yX3htaW5zKCdzaGFy ZWRfcm93X3JlbW92YWxfJywKIAknbm9fY29uZmxpY3RfJywgMCwgMSk7CiAKICMgVGhpcyBz aG91bGQgbm90IHRyaWdnZXIgYSBjb25mbGljdAotJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KAotCSd0ZXN0ZGInLCBxcVsKLSAgQ1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRl Z2VyLCB5IHRleHQpOwotICBJTlNFUlQgSU5UTyBjb25mbGljdF90ZXN0KHgseSkgU0VMRUNU IHMsIHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw0KSBzOwotICBVUERBVEUgY29u ZmxpY3RfdGVzdCBzZXQgeD0xLCB5PTE7Ci0gIFZBQ1VVTSBjb25mbGljdF90ZXN0OwotICBJ TlNFUlQgSU5UTyBmbHVzaF93YWwgREVGQVVMVCBWQUxVRVM7IC0tIHNlZSBjcmVhdGUgdGFi bGUgZmx1c2hfd2FsCi1dKTsKK3ZhY3V1bV91bnRpbF9jYW5fcmVtb3ZlKCcnLCAnQ1JFQVRF IFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpOworCQkJCQkJCSBJTlNF UlQgSU5UTyBjb25mbGljdF90ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSw0KSBzOworCQkJCQkJCSBVUERBVEUgY29uZmxpY3RfdGVzdCBzZXQg eD0xLCB5PTE7JywgJ2NvbmZsaWN0X3Rlc3QnKTsKKwogJG5vZGVfcHJpbWFyeS0+d2FpdF9m b3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7CiAKLSMgbWVzc2FnZSBzaG91bGQg bm90IGJlIGlzc3VlZAotb2soICFmaW5kX2luX2xvZygKLQkJJG5vZGVfc3RhbmRieSwKLQkJ ImludmFsaWRhdGluZyBvYnNvbGV0ZSBzbG90IFwibm9fY29uZmxpY3RfaW5hY3RpdmVzbG90 XCIiLCAkbG9nc3RhcnQpLAotCSdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMg bm90IGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBjb25mbGljdF90ZXN0JwotKTsKK1NLSVA6Cit7 CisJIyBDaGVja2luZyBmb3IgaW52YWxpZGF0aW9uIG9ubHkgaWYgdmFjdXVtIGRpZCByZW1v dmUgZGVhZCByb3dzCisJc2tpcCAndmFjdXVtIGRpZCBub3QgcmVtb3ZlIGRlYWQgcm93cyBv biBhIG5vbiBjYXRhbG9nIHRhYmxlJywgMQorCQl1bmxlc3MgKCRuYl92YWMgPCAkdmFjX2F0 dGVtcHRzKTsKIAotb2soICFmaW5kX2luX2xvZygKLQkJJG5vZGVfc3RhbmRieSwKLQkJImlu dmFsaWRhdGluZyBvYnNvbGV0ZSBzbG90IFwibm9fY29uZmxpY3RfYWN0aXZlc2xvdFwiIiwg JGxvZ3N0YXJ0KSwKLQknYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBub3QgbG9n Z2VkIHdpdGggdmFjdXVtIG9uIGNvbmZsaWN0X3Rlc3QnCi0pOworCSMgbWVzc2FnZSBzaG91 bGQgbm90IGJlIGlzc3VlZAorCW9rKCAhZmluZF9pbl9sb2coCisJCQkkbm9kZV9zdGFuZGJ5 LAorCQkJImludmFsaWRhdGluZyBvYnNvbGV0ZSBzbG90IFwibm9fY29uZmxpY3RfaW5hY3Rp dmVzbG90XCIiLCAkbG9nc3RhcnQpLAorCQknaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0 aW9uIGlzIG5vdCBsb2dnZWQgd2l0aCB2YWN1dW0gb24gY29uZmxpY3RfdGVzdCcKKwkpOwog Ci0jIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2 ZV9sb2dpY2Fsc2xvdCBoYXMgbm90IGJlZW4gdXBkYXRlZAotb2soICRub2RlX3N0YW5kYnkt PnBvbGxfcXVlcnlfdW50aWwoCi0JCSdwb3N0Z3JlcycsCi0JCSJzZWxlY3QgKGNvbmZsX2Fj dGl2ZV9sb2dpY2Fsc2xvdCA9IDApIGZyb20gcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMg d2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwKLQkJJ3QnKSwKLQknY29uZmxfYWN0aXZlX2xv Z2ljYWxzbG90IG5vdCB1cGRhdGVkJwotKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGNv bmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVkIjsKKwlvayggIWZpbmRfaW5f bG9nKAorCQkJJG5vZGVfc3RhbmRieSwKKwkJCSJpbnZhbGlkYXRpbmcgb2Jzb2xldGUgc2xv dCBcIm5vX2NvbmZsaWN0X2FjdGl2ZXNsb3RcIiIsICRsb2dzdGFydCksCisJCSdhY3RpdmVz bG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIG5vdCBsb2dnZWQgd2l0aCB2YWN1dW0gb24gY29u ZmxpY3RfdGVzdCcKKwkpOwogCi0jIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgbm9u IGNvbmZsaWN0aW5nIGluIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCi1jaGVja19zbG90c19jb25m bGljdGluZ19zdGF0dXMoMCk7CisJIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2Nv bmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgaGFzIG5vdCBiZWVuIHVwZGF0ZWQK KwlvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJCSdwb3N0Z3Jlcycs CisJCQkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAwKSBmcm9tIHBnX3N0 YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsCisJCQkn dCcpLAorCQknY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IG5vdCB1cGRhdGVkJworCSkgb3Ig ZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUg dXBkYXRlZCI7CisKKwkjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgbm9uIGNvbmZs aWN0aW5nIGluIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJY2hlY2tfc2xvdHNfY29uZmxpY3Rp bmdfc3RhdHVzKDAsICdhZnRlciB2YWN1dW0gb24gYSBub24gY2F0YWxvZyB0YWJsZScpOwor fQogCiAjIFR1cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgogY2hhbmdlX2hvdF9z dGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94bWlucygxLCAwKTsKQEAgLTcxNSw3ICs3 NTIsNyBAQCAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9z dGFuZGJ5KTsKIGNoZWNrX2Zvcl9pbnZhbGlkYXRpb24oJ3BydW5pbmdfJywgJGxvZ3N0YXJ0 LCAnd2l0aCBvbi1hY2Nlc3MgcHJ1bmluZycpOwogCiAjIFZlcmlmeSBzbG90cyBhcmUgcmVw b3J0ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKLWNoZWNrX3Ns b3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0 YXR1cygxLCAnYWZ0ZXIgb24tYWNjZXNzIHBydW5pbmcnKTsKIAogJGhhbmRsZSA9IG1ha2Vf c2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgJ3BydW5pbmdfJywgMCwgXCRzdGRvdXQsIFwk c3RkZXJyKTsKIApAQCAtNzU5LDcgKzc5Niw3IEBAICRub2RlX3ByaW1hcnktPndhaXRfZm9y X3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwogY2hlY2tfZm9yX2ludmFsaWRhdGlv bignd2FsX2xldmVsXycsICRsb2dzdGFydCwgJ2R1ZSB0byB3YWxfbGV2ZWwnKTsKIAogIyBW ZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNvbmZsaWN0aW5nIGluIHBnX3JlcGxpY2F0 aW9uX3Nsb3RzCi1jaGVja19zbG90c19jb25mbGljdGluZ19zdGF0dXMoMSk7CitjaGVja19z bG90c19jb25mbGljdGluZ19zdGF0dXMoMSwgJ2R1ZSB0byB3YWxfbGV2ZWwnKTsKIAogJGhh bmRsZSA9CiAgIG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgJ3dhbF9sZXZlbF8n LCAwLCBcJHN0ZG91dCwgXCRzdGRlcnIpOwotLSAKMi4zNC4xCgo= --------------ISRZnCPWKidGTDDHmCuzuyzh--