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 1w3Y4v-001Klk-2z for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 11:31:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3Y4u-005ZfL-0e for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 11:31:44 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w3Y4t-005ZfD-2P for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 11:31:44 +0000 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w3Y4q-00000000ASQ-1yYX for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 11:31:43 +0000 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-82a893d289bso501894b3a.0 for ; Fri, 20 Mar 2026 04:31:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774006299; cv=none; d=google.com; s=arc-20240605; b=FYUVYs/R5Ptu9bFQ8awjVZXV5oZSXEZEVgPWjeq5UIzYTRwyjCIXO2rZFKrjlI5roZ 4JcIsbCUFyHOrF+6mL3STPSvNLT+BxNx/UFyvH2Wom08vW45ArMGx643R02pmf7CGkCv 67q8kdc1gQkGmcd+IjKB7dHMYaEfwO5XuSJab2uMiwqvs2WAI/GTtdbGB7pGBADkZBVU E7ffvX0TJbIYizuwi+aD42cYZJ2MUaEDH8YsPBI7kA19q5o4rWNEpZR1dlsxeISeXGmu ObS+oAv8tkyW7LV4koAYuEwulfimyEv2Gmuy2ejj2ILjrbw0L3zeCJg6nMesysklvArr z8FQ== 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=cbima0xfqIbHxtfjHrH4rirIM8qfL7o1rgJLVkESD8U=; fh=Fuh0nxd2Vbn+csRMdVX8oPRx73Gyze/5ZJtlFfzRAAk=; b=DOMaCf1VFiNYZ6lEMHmLS9FupU5kGYKHyZO4jjkTWqAZgc7dCOM3kLsjtNy9pHUdyn pgMdCUjQn6yv9Scomg/1zQuD5sUcF+cNcY8Rg7fHArCayWPgXkgAn4okaxBr8DgX2fK+ jUWZRoIe+mQavJB/jMS2uiCPdca3HzVwPTkjpzq6eqnpwArtnM4waKpyUbCuMf40PKYw 8jE4B3E8BU3XYLJ28+Aay6dQEXGVjOu5OJ/qB++GfH5+ecfB5EEgorQvkCXGSzl4F7UU EaKOCBBnsEizuNGA+Ff90+rdwX62MMmugQHrwLmkWAAFPYGOhuqnllYauCUARCjGSAUL W1OQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774006299; x=1774611099; darn=lists.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=cbima0xfqIbHxtfjHrH4rirIM8qfL7o1rgJLVkESD8U=; b=j8AZpLJ7NU6t98obXh2b/qVcn/BKNctE0UsS2+iWsg2MzN78E1d3K4yHN/8HSmGCRM xWInhZ3kXDb7FyWg+oFaD1DArYFYKZOmsVot1H6l/Inv3lr1HyyFiBPBG4xV7ohC5YAZ AYnj+rz1RlA2zZxwXXBv7+bG9ed16I3OVIXnECVR1YgRFcdrT3WBsY2Xg5osXS8OftHt ScHrmoGcyI608yX877dUQT7hyGx5CUBI4jMrYohuok040saCOx3aVz0qt4iHI6aCg6GC duylJ1vZBfy3qW9Rro+2P/isHSx8D43HcoEYN9iqpmadzG+ZjhbuIvB7OyzUj9hNPnsc LJ8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774006299; x=1774611099; 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=cbima0xfqIbHxtfjHrH4rirIM8qfL7o1rgJLVkESD8U=; b=nsTTtN6sb1HqeG1nQ3/Yp3fP1BEWmqczgz3AQTAn0uO9o/r7bhjQtMnM01s1kzBCF+ uw+RqoqZcXvR7XNY3i/M/rDRDR13NE47qw2sUE6w+9URsU7MoBkpsb2NLg0MCIEVKLrj xC8g565+WGkOBxOIQXL8xnMPaFI0A2gntVJZkzReAm6mHjJdZKFqGS9XooQynmNCnE4q t9iHyx1FhfQ0BfFsjR0eNYnDRyca6h2x8BN9mc9M5MQmiqBHlQ+zE4026XSoSs1K4GAb xoAh/2BUFdwFwsKeRR/pHZ2qp0vWk9o/Md4J4PTenoUCOOGRM1WN5b/ctQjk+o9qZ0qt DQQA== X-Forwarded-Encrypted: i=1; AJvYcCUEOVQVOmVPIhE2dCmpnQXzvgCbsvG1pgUcoNL/QvNDK0y4I4G2Ueokvr1WrRUYG+M8goS2xTYJoztfKz4O@lists.postgresql.org X-Gm-Message-State: AOJu0YzmQyjoSUX4JGyNoZJg9WpUMJnWUly1XbwySX4v+G6bLfjkvMOt X8uDIhZuX0rB7M8gepbb7inLHnq3VgXIqZKMXqfp/oLjMK9BfSQDDKEdZmr6aYCkTKCRccMWjUp rDkaOpVdkq+tphRI+9P+dbzfm+6zjvrQ= X-Gm-Gg: ATEYQzwm9J6L3943kcf5KDAdOG+ynECJZ1dPq6xHvJxvzsWelfwLi1s4zjZqNC5AQKo 40VIpzSvNENZzCHDVhzy/82RyS2geUNXZsKBsmtlQW2kl+BETw3O5IS6tsfEpVyv8Wf2vweGIeI QE2qGq6ZmfeJnEjiO1Iafuxq/xtV9LWYD6zevRL2Fz6Z4inHzIn4JB3LcbFQwTEm0evvNLy13gD DCHAweL+u1JOARhit5b11lADME234cgzgJFuUMIsUNB8NFl0sFWEy2O9iaoDweM0ovF4axmJCT1 3U1QKkVNYw== X-Received: by 2002:a05:6a20:918d:b0:398:8c75:b36e with SMTP id adf61e73a8af0-39bceb416d5mr2432146637.42.1774006298878; Fri, 20 Mar 2026 04:31:38 -0700 (PDT) MIME-Version: 1.0 References: <72973471-8946-40c7-8b2d-8f95540d90e2@dunslane.net> <401bf08a-c8f1-48e2-9a30-78deaa9fa7c5@dunslane.net> In-Reply-To: From: Amul Sul Date: Fri, 20 Mar 2026 17:01:00 +0530 X-Gm-Features: AaiRm53O0jVwTuebXDLZr2VdS005UrPfWIcoZgNya_IQbVfT4MwhPBqfpaJHfGg Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Zsolt Parragi Cc: Andrew Dunstan , Robert Haas , Chao Li , Jakub Wartak , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000046607a064d730722" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000046607a064d730722 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 20, 2026 at 2:18=E2=80=AFAM Zsolt Parragi wrote: > > Hello! > > Path is ignored with a positional argument, I think this is a bug? > > This fails: > > pg_waldump --path /wal/dir 000000010000000000000001 > > And this works: > > pg_waldump --path /wal/dir --start 0/01000028 --end 0/010020F8 > Good catch! I've fixed this in the attached version and updated a test case to cover this scenario. > +{ > + int fname_len =3D strlen(fname); > + > > Shouldn't this use size_t? > Okay, that can be used. I=E2=80=99ve done the same in the attached version. > + /* > + * Setup temporary directory to store WAL segments and set up an exit > + * callback to remove it upon completion. > + */ > + setup_tmpwal_dir(waldir); > > Maybe this could be deferred to be created only on first use? If I > understand correctly, in a typical scenario waldump won't use this > temporary directory, yet it always creates it. Yeah, that optimization can be done, but passing the waldir -- which is only used once -- to the point where the first temp file is created would require quite a bit of code refactoring that doesn't seem to offer much gain, IMO. Regards, Amul --00000000000046607a064d730722 Content-Type: application/x-patch; name="v21-0001-Move-tar-detection-and-compression-logic-to-comm.patch" Content-Disposition: attachment; filename="v21-0001-Move-tar-detection-and-compression-logic-to-comm.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmytc7940 RnJvbSA2MDgzNzI1NTNlYjFiYjg4Mjg1MDgxYTAzODJmZTJjMjI3YzkwZDYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMTkgTWFyIDIwMjYgMTU6NDM6MzAgKzA1MzAKU3ViamVjdDogW1BBVENIIHYyMSAxLzVdIE1v dmUgdGFyIGRldGVjdGlvbiBhbmQgY29tcHJlc3Npb24gbG9naWMgdG8gY29tbW9uLgoKQ29uc29s aWRhdGUgdGFyIGFyY2hpdmUgaWRlbnRpZmljYXRpb24gYW5kIGNvbXByZXNzaW9uLXR5cGUgZGV0 ZWN0aW9uCmxvZ2ljIGludG8gYSBzaGFyZWQgbG9jYXRpb24uIEN1cnJlbnRseSB1c2VkIGJ5IHBn X2Jhc2ViYWNrdXAgYW5kCnBnX3ZlcmlmeWJhY2t1cCwgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFs c28gcmVxdWlyZWQgZm9yIHVwY29taW5nCnBnX3dhbGR1bXAgZW5oYW5jZW1lbnRzLgoKVGhpcyBj aGFuZ2UgcHJvbW90ZXMgY29kZSByZXVzZSBhbmQgc2ltcGxpZmllcyBtYWludGVuYW5jZSBhY3Jv c3MKZnJvbnRlbmQgdG9vbHMuCgpBdXRob3I6IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWlsLmNvbT4K UmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBKYWt1YiBXYXJ0YWsgPGpha3ViLndhcnRha0BlbnRlcnByaXNlZGIuY29tPgpSZXZpZXdl ZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEV1bGVy IFRhdmVpcmEgPGV1bGVyQGV1bGVydG8uY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4g PGFuZHJld0BkdW5zbGFuZS5uZXQ+ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5w YXJyYWdpQHBlcmNvbmEuY29tPgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQUpf Yjk0YnFkV04zaDJKLVB6enpRMk5wYndjdDVaUUhnZ25fUW9ZR2hDMnJuLT1XUUBtYWlsLmdtYWls LmNvbQotLS0KIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMgICAgIHwgMzYg KysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3Zlcmlm eWJhY2t1cC5jIHwgMTIgKy0tLS0tLS0KIHNyYy9jb21tb24vY29tcHJlc3Npb24uYyAgICAgICAg ICAgICAgICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvY29tbW9uL2Nv bXByZXNzaW9uLmggICAgICAgICAgfCAgMiArKwogNCBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRp b25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNr dXAvcGdfYmFzZWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAu YwppbmRleCBmYTE2OWE4ZDY0Mi4uYzFhNDY3MmFhNmYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf YmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3Bn X2Jhc2ViYWNrdXAuYwpAQCAtMTA3MCwxMiArMTA3MCw5IEBAIENyZWF0ZUJhY2t1cFN0cmVhbWVy KGNoYXIgKmFyY2hpdmVfbmFtZSwgY2hhciAqc3BjbG9jYXRpb24sCiAJYXN0cmVhbWVyICAqbWFu aWZlc3RfaW5qZWN0X3N0cmVhbWVyID0gTlVMTDsKIAlib29sCQlpbmplY3RfbWFuaWZlc3Q7CiAJ Ym9vbAkJaXNfdGFyLAotCQkJCWlzX3Rhcl9neiwKLQkJCQlpc190YXJfbHo0LAotCQkJCWlzX3Rh cl96c3RkLAogCQkJCWlzX2NvbXByZXNzZWRfdGFyOworCXBnX2NvbXByZXNzX2FsZ29yaXRobSBj b21wcmVzc2VkX3Rhcl9hbGdvcml0aG07CiAJYm9vbAkJbXVzdF9wYXJzZV9hcmNoaXZlOwotCWlu dAkJCWFyY2hpdmVfbmFtZV9sZW4gPSBzdHJsZW4oYXJjaGl2ZV9uYW1lKTsKIAogCS8qCiAJICog Tm9ybWFsbHksIHdlIGVtaXQgdGhlIGJhY2t1cCBtYW5pZmVzdCBhcyBhIHNlcGFyYXRlIGZpbGUs IGJ1dCB3aGVuCkBAIC0xMDg0LDI0ICsxMDgxLDEzIEBAIENyZWF0ZUJhY2t1cFN0cmVhbWVyKGNo YXIgKmFyY2hpdmVfbmFtZSwgY2hhciAqc3BjbG9jYXRpb24sCiAJICovCiAJaW5qZWN0X21hbmlm ZXN0ID0gKGZvcm1hdCA9PSAndCcgJiYgc3RyY21wKGJhc2VkaXIsICItIikgPT0gMCAmJiBtYW5p ZmVzdCk7CiAKLQkvKiBJcyB0aGlzIGEgdGFyIGFyY2hpdmU/ICovCi0JaXNfdGFyID0gKGFyY2hp dmVfbmFtZV9sZW4gPiA0ICYmCi0JCQkgIHN0cmNtcChhcmNoaXZlX25hbWUgKyBhcmNoaXZlX25h bWVfbGVuIC0gNCwgIi50YXIiKSA9PSAwKTsKLQotCS8qIElzIHRoaXMgYSAudGFyLmd6IGFyY2hp dmU/ICovCi0JaXNfdGFyX2d6ID0gKGFyY2hpdmVfbmFtZV9sZW4gPiA3ICYmCi0JCQkJIHN0cmNt cChhcmNoaXZlX25hbWUgKyBhcmNoaXZlX25hbWVfbGVuIC0gNywgIi50YXIuZ3oiKSA9PSAwKTsK LQotCS8qIElzIHRoaXMgYSAudGFyLmx6NCBhcmNoaXZlPyAqLwotCWlzX3Rhcl9sejQgPSAoYXJj aGl2ZV9uYW1lX2xlbiA+IDggJiYKLQkJCQkgIHN0cmNtcChhcmNoaXZlX25hbWUgKyBhcmNoaXZl X25hbWVfbGVuIC0gOCwgIi50YXIubHo0IikgPT0gMCk7Ci0KLQkvKiBJcyB0aGlzIGEgLnRhci56 c3QgYXJjaGl2ZT8gKi8KLQlpc190YXJfenN0ZCA9IChhcmNoaXZlX25hbWVfbGVuID4gOCAmJgot CQkJCSAgIHN0cmNtcChhcmNoaXZlX25hbWUgKyBhcmNoaXZlX25hbWVfbGVuIC0gOCwgIi50YXIu enN0IikgPT0gMCk7CisJLyogQ2hlY2sgd2hldGhlciBpdCBpcyBhIHRhciBhcmNoaXZlIGFuZCBp dHMgY29tcHJlc3Npb24gdHlwZSAqLworCWlzX3RhciA9IHBhcnNlX3Rhcl9jb21wcmVzc19hbGdv cml0aG0oYXJjaGl2ZV9uYW1lLAorCQkJCQkJCQkJCSAgJmNvbXByZXNzZWRfdGFyX2FsZ29yaXRo bSk7CiAKIAkvKiBJcyB0aGlzIGFueSBraW5kIG9mIGNvbXByZXNzZWQgdGFyPyAqLwotCWlzX2Nv bXByZXNzZWRfdGFyID0gaXNfdGFyX2d6IHx8IGlzX3Rhcl9sejQgfHwgaXNfdGFyX3pzdGQ7CisJ aXNfY29tcHJlc3NlZF90YXIgPSAoaXNfdGFyICYmCisJCQkJCQkgY29tcHJlc3NlZF90YXJfYWxn b3JpdGhtICE9IFBHX0NPTVBSRVNTSU9OX05PTkUpOwogCiAJLyoKIAkgKiBJbmplY3RpbmcgdGhl IG1hbmlmZXN0IGludG8gYSBjb21wcmVzc2VkIHRhciBmaWxlIHdvdWxkIGJlIHBvc3NpYmxlIGlm CkBAIC0xMTI4LDcgKzExMTQsNyBAQCBDcmVhdGVCYWNrdXBTdHJlYW1lcihjaGFyICphcmNoaXZl X25hbWUsIGNoYXIgKnNwY2xvY2F0aW9uLAogCQkJCQkJICAoc3BjbG9jYXRpb24gPT0gTlVMTCAm JiB3cml0ZXJlY292ZXJ5Y29uZikpOwogCiAJLyogQXQgcHJlc2VudCwgd2Ugb25seSBrbm93IGhv dyB0byBwYXJzZSB0YXIgYXJjaGl2ZXMuICovCi0JaWYgKG11c3RfcGFyc2VfYXJjaGl2ZSAmJiAh aXNfdGFyICYmICFpc19jb21wcmVzc2VkX3RhcikKKwlpZiAobXVzdF9wYXJzZV9hcmNoaXZlICYm ICFpc190YXIpCiAJewogCQlwZ19sb2dfZXJyb3IoImNhbm5vdCBwYXJzZSBhcmNoaXZlIFwiJXNc IiIsIGFyY2hpdmVfbmFtZSk7CiAJCXBnX2xvZ19lcnJvcl9kZXRhaWwoIk9ubHkgdGFyIGFyY2hp dmVzIGNhbiBiZSBwYXJzZWQuIik7CkBAIC0xMjYzLDEzICsxMjQ5LDEzIEBAIENyZWF0ZUJhY2t1 cFN0cmVhbWVyKGNoYXIgKmFyY2hpdmVfbmFtZSwgY2hhciAqc3BjbG9jYXRpb24sCiAJICogSWYg dGhlIHVzZXIgaGFzIHJlcXVlc3RlZCBhIHNlcnZlciBjb21wcmVzc2VkIGFyY2hpdmUgYWxvbmcg d2l0aAogCSAqIGFyY2hpdmUgZXh0cmFjdGlvbiBhdCBjbGllbnQgdGhlbiB3ZSBuZWVkIHRvIGRl Y29tcHJlc3MgaXQuCiAJICovCi0JaWYgKGZvcm1hdCA9PSAncCcpCisJaWYgKGZvcm1hdCA9PSAn cCcgJiYgaXNfY29tcHJlc3NlZF90YXIpCiAJewotCQlpZiAoaXNfdGFyX2d6KQorCQlpZiAoY29t cHJlc3NlZF90YXJfYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9OX0daSVApCiAJCQlzdHJlYW1l ciA9IGFzdHJlYW1lcl9nemlwX2RlY29tcHJlc3Nvcl9uZXcoc3RyZWFtZXIpOwotCQllbHNlIGlm IChpc190YXJfbHo0KQorCQllbHNlIGlmIChjb21wcmVzc2VkX3Rhcl9hbGdvcml0aG0gPT0gUEdf Q09NUFJFU1NJT05fTFo0KQogCQkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfbHo0X2RlY29tcHJlc3Nv cl9uZXcoc3RyZWFtZXIpOwotCQllbHNlIGlmIChpc190YXJfenN0ZCkKKwkJZWxzZSBpZiAoY29t cHJlc3NlZF90YXJfYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9OX1pTVEQpCiAJCQlzdHJlYW1l ciA9IGFzdHJlYW1lcl96c3RkX2RlY29tcHJlc3Nvcl9uZXcoc3RyZWFtZXIpOwogCX0KIApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMgYi9zcmMv YmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwppbmRleCBjYmM5NDQ3Mzg0Zi4u MzFmNjA2YzQ1YjEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3Zlcmlm eWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5j CkBAIC05NDEsMTcgKzk0MSw3IEBAIHByZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZSh2ZXJpZmllcl9j b250ZXh0ICpjb250ZXh0LCBjaGFyICpyZWxwYXRoLAogCX0KIAogCS8qIE5vdywgY2hlY2sgdGhl IGNvbXByZXNzaW9uIHR5cGUgb2YgdGhlIHRhciAqLwotCWlmIChzdHJjbXAoc3VmZml4LCAiLnRh ciIpID09IDApCi0JCWNvbXByZXNzX2FsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7Ci0J ZWxzZSBpZiAoc3RyY21wKHN1ZmZpeCwgIi50Z3oiKSA9PSAwKQotCQljb21wcmVzc19hbGdvcml0 aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOwotCWVsc2UgaWYgKHN0cmNtcChzdWZmaXgsICIudGFy Lmd6IikgPT0gMCkKLQkJY29tcHJlc3NfYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fR1pJUDsK LQllbHNlIGlmIChzdHJjbXAoc3VmZml4LCAiLnRhci5sejQiKSA9PSAwKQotCQljb21wcmVzc19h bGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9MWjQ7Ci0JZWxzZSBpZiAoc3RyY21wKHN1ZmZpeCwg Ii50YXIuenN0IikgPT0gMCkKLQkJY29tcHJlc3NfYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05f WlNURDsKLQllbHNlCisJaWYgKCFwYXJzZV90YXJfY29tcHJlc3NfYWxnb3JpdGhtKHN1ZmZpeCwg JmNvbXByZXNzX2FsZ29yaXRobSkpCiAJewogCQlyZXBvcnRfYmFja3VwX2Vycm9yKGNvbnRleHQs CiAJCQkJCQkJImZpbGUgXCIlc1wiIGlzIG5vdCBleHBlY3RlZCBpbiBhIHRhciBmb3JtYXQgYmFj a3VwIiwKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vY29tcHJlc3Npb24uYyBiL3NyYy9jb21tb24v Y29tcHJlc3Npb24uYwppbmRleCA5MmNkNGVjN2EwZC4uYWUyMDg5ZDk0MDYgMTAwNjQ0Ci0tLSBh L3NyYy9jb21tb24vY29tcHJlc3Npb24uYworKysgYi9zcmMvY29tbW9uL2NvbXByZXNzaW9uLmMK QEAgLTQxLDYgKzQxLDM2IEBAIHN0YXRpYyBpbnQJZXhwZWN0X2ludGVnZXJfdmFsdWUoY2hhciAq a2V5d29yZCwgY2hhciAqdmFsdWUsCiBzdGF0aWMgYm9vbCBleHBlY3RfYm9vbGVhbl92YWx1ZShj aGFyICprZXl3b3JkLCBjaGFyICp2YWx1ZSwKIAkJCQkJCQkJIHBnX2NvbXByZXNzX3NwZWNpZmlj YXRpb24gKnJlc3VsdCk7CiAKKy8qCisgKiBMb29rIHVwIGEgY29tcHJlc3Npb24gYWxnb3JpdGht IGJ5IGFyY2hpdmUgZmlsZSBleHRlbnNpb24uIFJldHVybnMgdHJ1ZSBhbmQKKyAqIHNldHMgKmFs Z29yaXRobSBpZiB0aGUgZXh0ZW5zaW9uIGlzIHJlY29nbml6ZWQuIE90aGVyd2lzZSByZXR1cm5z IGZhbHNlLgorICovCitib29sCitwYXJzZV90YXJfY29tcHJlc3NfYWxnb3JpdGhtKGNvbnN0IGNo YXIgKmZuYW1lLCBwZ19jb21wcmVzc19hbGdvcml0aG0gKmFsZ29yaXRobSkKK3sKKwlzaXplX3QJ CWZuYW1lX2xlbiA9IHN0cmxlbihmbmFtZSk7CisKKwlpZiAoZm5hbWVfbGVuID49IDQgJiYKKwkJ c3RyY21wKGZuYW1lICsgZm5hbWVfbGVuIC0gNCwgIi50YXIiKSA9PSAwKQorCQkqYWxnb3JpdGht ID0gUEdfQ09NUFJFU1NJT05fTk9ORTsKKwllbHNlIGlmIChmbmFtZV9sZW4gPj0gNCAmJgorCQkJ IHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDQsICIudGd6IikgPT0gMCkKKwkJKmFsZ29yaXRo bSA9IFBHX0NPTVBSRVNTSU9OX0daSVA7CisJZWxzZSBpZiAoZm5hbWVfbGVuID49IDcgJiYKKwkJ CSBzdHJjbXAoZm5hbWUgKyBmbmFtZV9sZW4gLSA3LCAiLnRhci5neiIpID09IDApCisJCSphbGdv cml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOworCWVsc2UgaWYgKGZuYW1lX2xlbiA+PSA4ICYm CisJCQkgc3RyY21wKGZuYW1lICsgZm5hbWVfbGVuIC0gOCwgIi50YXIubHo0IikgPT0gMCkKKwkJ KmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0xaNDsKKwllbHNlIGlmIChmbmFtZV9sZW4gPj0g OCAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDgsICIudGFyLnpzdCIpID09IDAp CisJCSphbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9aU1REOworCWVsc2UKKwkJcmV0dXJuIGZh bHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKIC8qCiAgKiBMb29rIHVwIGEgY29tcHJlc3Npb24g YWxnb3JpdGhtIGJ5IG5hbWUuIFJldHVybnMgdHJ1ZSBhbmQgc2V0cyAqYWxnb3JpdGhtCiAgKiBp ZiB0aGUgbmFtZSBpcyByZWNvZ25pemVkLiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi9jb21wcmVzc2lvbi5oIGIvc3JjL2luY2x1ZGUvY29t bW9uL2NvbXByZXNzaW9uLmgKaW5kZXggNmM3NDViOTAwNjYuLmY5OWM3NDdjZGQzIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tb24vY29tcHJlc3Npb24uaAorKysgYi9zcmMvaW5jbHVkZS9j b21tb24vY29tcHJlc3Npb24uaApAQCAtNDEsNiArNDEsOCBAQCB0eXBlZGVmIHN0cnVjdCBwZ19j b21wcmVzc19zcGVjaWZpY2F0aW9uCiAKIGV4dGVybiB2b2lkIHBhcnNlX2NvbXByZXNzX29wdGlv bnMoY29uc3QgY2hhciAqb3B0aW9uLCBjaGFyICoqYWxnb3JpdGhtLAogCQkJCQkJCQkgICBjaGFy ICoqZGV0YWlsKTsKK2V4dGVybiBib29sIHBhcnNlX3Rhcl9jb21wcmVzc19hbGdvcml0aG0oY29u c3QgY2hhciAqZm5hbWUsCisJCQkJCQkJCQkJIHBnX2NvbXByZXNzX2FsZ29yaXRobSAqYWxnb3Jp dGhtKTsKIGV4dGVybiBib29sIHBhcnNlX2NvbXByZXNzX2FsZ29yaXRobShjaGFyICpuYW1lLCBw Z19jb21wcmVzc19hbGdvcml0aG0gKmFsZ29yaXRobSk7CiBleHRlcm4gY29uc3QgY2hhciAqZ2V0 X2NvbXByZXNzX2FsZ29yaXRobV9uYW1lKHBnX2NvbXByZXNzX2FsZ29yaXRobSBhbGdvcml0aG0p OwogCi0tIAoyLjQ3LjEKCg== --00000000000046607a064d730722 Content-Type: application/x-patch; name="v21-0002-pg_waldump-Preparatory-refactoring-for-tar-archi.patch" Content-Disposition: attachment; filename="v21-0002-pg_waldump-Preparatory-refactoring-for-tar-archi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmytca981 RnJvbSA3M2I3Y2EzNzgxMGRmNWMzMDM5MWY0ZjA5YTE5OWU2NzJhY2Q2Yjc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMTkgTWFyIDIwMjYgMTU6NDM6MzkgKzA1MzAKU3ViamVjdDogW1BBVENIIHYyMSAyLzVdIHBn X3dhbGR1bXA6IFByZXBhcmF0b3J5IHJlZmFjdG9yaW5nIGZvciB0YXIgYXJjaGl2ZQogV0FMIGRl Y29kaW5nLgoKU2V2ZXJhbCByZWZhY3RvcmluZyBzdGVwcyBpbiBwcmVwYXJhdGlvbiBmb3IgYWRk aW5nIHRhciBhcmNoaXZlIFdBTApkZWNvZGluZyBzdXBwb3J0IHRvIHBnX3dhbGR1bXA6CgotIE1v dmUgWExvZ0R1bXBQcml2YXRlIGFuZCByZWxhdGVkIGRlY2xhcmF0aW9ucyBpbnRvIGEgbmV3IHBn X3dhbGR1bXAuaAogIGhlYWRlciwgYWxsb3dpbmcgYSBzZWNvbmQgc291cmNlIGZpbGUgdG8gc2hh cmUgdGhlbS4KCi0gRmFjdG9yIG91dCByZXF1aXJlZF9yZWFkX2xlbigpIHNvIHRoZSByZWFkLXNp emUgY2FsY3VsYXRpb24gY2FuIGJlCiAgcmV1c2VkIGZvciBib3RoIHJlZ3VsYXIgV0FMIGZpbGVz IGFuZCB0YXItYXJjaGl2ZWQgV0FMLgoKLSBNb3ZlIHRoZSBXQUwgc2VnbWVudCBzaXplIHZhcmlh YmxlIGludG8gWExvZ0R1bXBQcml2YXRlIGFuZCByZW5hbWUgaXQKICB0byBzZWdzaXplLCBtYWtp bmcgaXQgYWNjZXNzaWJsZSB0byB0aGUgYXJjaGl2ZSBzdHJlYW1lciBjb2RlLgoKQXV0aG9yOiBB bXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9i ZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogSmFrdWIgV2FydGFrIDxqYWt1Yi53YXJ0 YWtAZW50ZXJwcmlzZWRiLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0Bn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBFdWxlciBUYXZlaXJhIDxldWxlckBldWxlcnRvLmNvbT4K UmV2aWV3ZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpkaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQUpfYjk0YnFkV04zaDJKLVB6enpRMk5wYndjdDVa UUhnZ25fUW9ZR2hDMnJuLT1XUUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iaW4vcGdfd2FsZHVt cC9wZ193YWxkdW1wLmMgfCA3OCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIHNy Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggfCAyNiArKysrKysrKysrKwogMiBmaWxlcyBj aGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1w LmMKaW5kZXggZjM0NDYzODVkNmEuLjVkMzFiMTVkYmQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1w LmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgogI2luY2x1 ZGUgImNvbW1vbi9yZWxwYXRoLmgiCiAjaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIKKyNpbmNsdWRl ICJwZ193YWxkdW1wLmgiCiAjaW5jbHVkZSAicm1ncmRlc2MuaCIKICNpbmNsdWRlICJzdG9yYWdl L2J1ZnBhZ2UuaCIKIApAQCAtNDMsMTQgKzQ0LDYgQEAgc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCB0aW1lX3RvX3N0b3AgPSBmYWxzZTsKIAogc3RhdGljIGNvbnN0IFJlbEZpbGVMb2NhdG9y IGVtcHR5UmVsRmlsZUxvY2F0b3IgPSB7MCwgMCwgMH07CiAKLXR5cGVkZWYgc3RydWN0IFhMb2dE dW1wUHJpdmF0ZQotewotCVRpbWVMaW5lSUQJdGltZWxpbmU7Ci0JWExvZ1JlY1B0cglzdGFydHB0 cjsKLQlYTG9nUmVjUHRyCWVuZHB0cjsKLQlib29sCQllbmRwdHJfcmVhY2hlZDsKLX0gWExvZ0R1 bXBQcml2YXRlOwotCiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcENvbmZpZwogewogCS8qIGRpc3Bs YXkgb3B0aW9ucyAqLwpAQCAtMzMzLDYgKzMyNiwzMiBAQCBpZGVudGlmeV90YXJnZXRfZGlyZWN0 b3J5KGNoYXIgKmRpcmVjdG9yeSwgY2hhciAqZm5hbWUsIGludCAqV2FsU2VnU3opCiAJcmV0dXJu IE5VTEw7CQkJCS8qIG5vdCByZWFjaGVkICovCiB9CiAKKy8qCisgKiBSZXR1cm5zIHRoZSBzaXpl IGluIGJ5dGVzIG9mIHRoZSBkYXRhIHRvIGJlIHJlYWQuIFJldHVybnMgLTEgaWYgdGhlIGVuZAor ICogcG9pbnQgaGFzIGFscmVhZHkgYmVlbiByZWFjaGVkLgorICovCitzdGF0aWMgaW5saW5lIGlu dAorcmVxdWlyZWRfcmVhZF9sZW4oWExvZ0R1bXBQcml2YXRlICpwcml2YXRlLCBYTG9nUmVjUHRy IHRhcmdldFBhZ2VQdHIsCisJCQkJICBpbnQgcmVxTGVuKQoreworCWludAkJCWNvdW50ID0gWExP R19CTENLU1o7CisKKwlpZiAoWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS0+ZW5kcHRyKSkKKwl7 CisJCWlmICh0YXJnZXRQYWdlUHRyICsgWExPR19CTENLU1ogPD0gcHJpdmF0ZS0+ZW5kcHRyKQor CQkJY291bnQgPSBYTE9HX0JMQ0tTWjsKKwkJZWxzZSBpZiAodGFyZ2V0UGFnZVB0ciArIHJlcUxl biA8PSBwcml2YXRlLT5lbmRwdHIpCisJCQljb3VudCA9IHByaXZhdGUtPmVuZHB0ciAtIHRhcmdl dFBhZ2VQdHI7CisJCWVsc2UKKwkJeworCQkJcHJpdmF0ZS0+ZW5kcHRyX3JlYWNoZWQgPSB0cnVl OworCQkJcmV0dXJuIC0xOworCQl9CisJfQorCisJcmV0dXJuIGNvdW50OworfQorCiAvKiBwZ193 YWxkdW1wJ3MgWExvZ1JlYWRlclJvdXRpbmUtPnNlZ21lbnRfb3BlbiBjYWxsYmFjayAqLwogc3Rh dGljIHZvaWQKIFdBTER1bXBPcGVuU2VnbWVudChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9n U2VnTm8gbmV4dFNlZ05vLApAQCAtMzkwLDIxICs0MDksMTIgQEAgV0FMRHVtcFJlYWRQYWdlKFhM b2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxl biwKIAkJCQlYTG9nUmVjUHRyIHRhcmdldFB0ciwgY2hhciAqcmVhZEJ1ZmYpCiB7CiAJWExvZ0R1 bXBQcml2YXRlICpwcml2YXRlID0gc3RhdGUtPnByaXZhdGVfZGF0YTsKLQlpbnQJCQljb3VudCA9 IFhMT0dfQkxDS1NaOworCWludAkJCWNvdW50ID0gcmVxdWlyZWRfcmVhZF9sZW4ocHJpdmF0ZSwg dGFyZ2V0UGFnZVB0ciwgcmVxTGVuKTsKIAlXQUxSZWFkRXJyb3IgZXJyaW5mbzsKIAotCWlmIChY TG9nUmVjUHRySXNWYWxpZChwcml2YXRlLT5lbmRwdHIpKQotCXsKLQkJaWYgKHRhcmdldFBhZ2VQ dHIgKyBYTE9HX0JMQ0tTWiA8PSBwcml2YXRlLT5lbmRwdHIpCi0JCQljb3VudCA9IFhMT0dfQkxD S1NaOwotCQllbHNlIGlmICh0YXJnZXRQYWdlUHRyICsgcmVxTGVuIDw9IHByaXZhdGUtPmVuZHB0 cikKLQkJCWNvdW50ID0gcHJpdmF0ZS0+ZW5kcHRyIC0gdGFyZ2V0UGFnZVB0cjsKLQkJZWxzZQot CQl7Ci0JCQlwcml2YXRlLT5lbmRwdHJfcmVhY2hlZCA9IHRydWU7Ci0JCQlyZXR1cm4gLTE7Ci0J CX0KLQl9CisJLyogQmFpbCBvdXQgaWYgdGhlIGNvdW50IHRvIGJlIHJlYWQgaXMgbm90IHZhbGlk ICovCisJaWYgKGNvdW50IDwgMCkKKwkJcmV0dXJuIC0xOwogCiAJaWYgKCFXQUxSZWFkKHN0YXRl LCByZWFkQnVmZiwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHByaXZhdGUtPnRpbWVsaW5lLAogCQkJ CSAmZXJyaW5mbykpCkBAIC04MDEsNyArODExLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJWExvZ1JlY1B0cglmaXJzdF9yZWNvcmQ7CiAJY2hhcgkgICAqd2FsZGlyID0gTlVMTDsK IAljaGFyCSAgICplcnJvcm1zZzsKLQlpbnQJCQlXYWxTZWdTejsKIAogCXN0YXRpYyBzdHJ1Y3Qg b3B0aW9uIGxvbmdfb3B0aW9uc1tdID0gewogCQl7ImJrcC1kZXRhaWxzIiwgbm9fYXJndW1lbnQs IE5VTEwsICdiJ30sCkBAIC04NTUsNiArODY0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9mKFhMb2dTdGF0cykpOwogCiAJcHJpdmF0ZS50 aW1lbGluZSA9IDE7CisJcHJpdmF0ZS5zZWdzaXplID0gMDsKIAlwcml2YXRlLnN0YXJ0cHRyID0g SW52YWxpZFhMb2dSZWNQdHI7CiAJcHJpdmF0ZS5lbmRwdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsK IAlwcml2YXRlLmVuZHB0cl9yZWFjaGVkID0gZmFsc2U7CkBAIC0xMTI4LDE4ICsxMTM4LDE4IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3Bl biBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHdhbGRpcik7CiAJCX0KIAotCQl3YWxkaXIgPSBpZGVu dGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUsICZXYWxTZWdTeik7CisJCXdhbGRp ciA9IGlkZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSwgJnByaXZhdGUuc2Vn c2l6ZSk7CiAJCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lKTsKIAkJ aWYgKGZkIDwgMCkKIAkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiIsIGZu YW1lKTsKIAkJY2xvc2UoZmQpOwogCiAJCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwot CQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJnNlZ25vLCBXYWxT ZWdTeik7CisJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmc2Vn bm8sIHByaXZhdGUuc2Vnc2l6ZSk7CiAKIAkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRl LnN0YXJ0cHRyKSkKLQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCAwLCBXYWxTZWdT eiwgcHJpdmF0ZS5zdGFydHB0cik7Ci0JCWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLnN0 YXJ0cHRyLCBzZWdubywgV2FsU2VnU3opKQorCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vn bm8sIDAsIHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0ZS5zdGFydHB0cik7CisJCWVsc2UgaWYgKCFY TEJ5dGVJblNlZyhwcml2YXRlLnN0YXJ0cHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSkKIAkJ ewogCQkJcGdfbG9nX2Vycm9yKCJzdGFydCBXQUwgbG9jYXRpb24gJVgvJTA4WCBpcyBub3QgaW5z aWRlIGZpbGUgXCIlc1wiIiwKIAkJCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5zdGFydHB0 ciksCkBAIC0xMTQ5LDcgKzExNTksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAog CQkvKiBubyBzZWNvbmQgZmlsZSBzcGVjaWZpZWQsIHNldCBlbmQgcG9zaXRpb24gKi8KIAkJaWYg KCEob3B0aW5kICsgMSA8IGFyZ2MpICYmICFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0 cikpCi0JCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAsIFdhbFNlZ1N6LCBw cml2YXRlLmVuZHB0cik7CisJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAs IHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0ZS5lbmRwdHIpOwogCiAJCS8qIHBhcnNlIEVORFNFRyBp ZiBwYXNzZWQgKi8KIAkJaWYgKG9wdGluZCArIDEgPCBhcmdjKQpAQCAtMTE2NSwxNCArMTE3NSwx NCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNsb3NlKGZkKTsKIAogCQkJLyog cGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCi0JCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAm cHJpdmF0ZS50aW1lbGluZSwgJmVuZHNlZ25vLCBXYWxTZWdTeik7CisJCQlYTG9nRnJvbUZpbGVO YW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJmVuZHNlZ25vLCBwcml2YXRlLnNlZ3NpemUp OwogCiAJCQlpZiAoZW5kc2Vnbm8gPCBzZWdubykKIAkJCQlwZ19mYXRhbCgiRU5EU0VHICVzIGlz IGJlZm9yZSBTVEFSVFNFRyAlcyIsCiAJCQkJCQkgYXJndltvcHRpbmQgKyAxXSwgYXJndltvcHRp bmRdKTsKIAogCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCi0JCQkJ WExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoZW5kc2Vnbm8gKyAxLCAwLCBXYWxTZWdTeiwKKwkJCQlY TG9nU2VnTm9PZmZzZXRUb1JlY1B0cihlbmRzZWdubyArIDEsIDAsIHByaXZhdGUuc2Vnc2l6ZSwK IAkJCQkJCQkJCQlwcml2YXRlLmVuZHB0cik7CiAKIAkJCS8qIHNldCBzZWdubyB0byBlbmRzZWdu byBmb3IgY2hlY2sgb2YgLS1lbmQgKi8KQEAgLTExODAsOCArMTE5MCw4IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCQl9CiAKIAotCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5k cHRyLCBzZWdubywgV2FsU2VnU3opICYmCi0JCQlwcml2YXRlLmVuZHB0ciAhPSAoc2Vnbm8gKyAx KSAqIFdhbFNlZ1N6KQorCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5kcHRyLCBzZWdubywg cHJpdmF0ZS5zZWdzaXplKSAmJgorCQkJcHJpdmF0ZS5lbmRwdHIgIT0gKHNlZ25vICsgMSkgKiBw cml2YXRlLnNlZ3NpemUpCiAJCXsKIAkJCXBnX2xvZ19lcnJvcigiZW5kIFdBTCBsb2NhdGlvbiAl WC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAogCQkJCQkJIExTTl9GT1JNQVRfQVJH Uyhwcml2YXRlLmVuZHB0ciksCkBAIC0xMTkwLDcgKzEyMDAsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkJfQogCX0KIAllbHNlCi0JCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9k aXJlY3Rvcnkod2FsZGlyLCBOVUxMLCAmV2FsU2VnU3opOworCQl3YWxkaXIgPSBpZGVudGlmeV90 YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgTlVMTCwgJnByaXZhdGUuc2Vnc2l6ZSk7CiAKIAkvKiB3 ZSBkb24ndCBrbm93IHdoYXQgdG8gcHJpbnQgKi8KIAlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHBy aXZhdGUuc3RhcnRwdHIpKQpAQCAtMTIwMyw3ICsxMjEzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAKIAkvKiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCwgc3RhcnQgcmVhZGlu ZyAqLwogCXhsb2dyZWFkZXJfc3RhdGUgPQotCQlYTG9nUmVhZGVyQWxsb2NhdGUoV2FsU2VnU3os IHdhbGRpciwKKwkJWExvZ1JlYWRlckFsbG9jYXRlKHByaXZhdGUuc2Vnc2l6ZSwgd2FsZGlyLAog CQkJCQkJICAgWExfUk9VVElORSgucGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdlLAogCQkJCQkJ CQkJICAuc2VnbWVudF9vcGVuID0gV0FMRHVtcE9wZW5TZWdtZW50LAogCQkJCQkJCQkJICAuc2Vn bWVudF9jbG9zZSA9IFdBTER1bXBDbG9zZVNlZ21lbnQpLApAQCAtMTIyNCw3ICsxMjM0LDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICogYSBzZWdtZW50IChlLmcuIHdlIHdlcmUg dXNlZCBpbiBmaWxlIG1vZGUpLgogCSAqLwogCWlmIChmaXJzdF9yZWNvcmQgIT0gcHJpdmF0ZS5z dGFydHB0ciAmJgotCQlYTG9nU2VnbWVudE9mZnNldChwcml2YXRlLnN0YXJ0cHRyLCBXYWxTZWdT eikgIT0gMCkKKwkJWExvZ1NlZ21lbnRPZmZzZXQocHJpdmF0ZS5zdGFydHB0ciwgcHJpdmF0ZS5z ZWdzaXplKSAhPSAwKQogCQlwZ19sb2dfaW5mbyhuZ2V0dGV4dCgiZmlyc3QgcmVjb3JkIGlzIGFm dGVyICVYLyUwOFgsIGF0ICVYLyUwOFgsIHNraXBwaW5nIG92ZXIgJXUgYnl0ZSIsCiAJCQkJCQkJ ICJmaXJzdCByZWNvcmQgaXMgYWZ0ZXIgJVgvJTA4WCwgYXQgJVgvJTA4WCwgc2tpcHBpbmcgb3Zl ciAldSBieXRlcyIsCiAJCQkJCQkJIChmaXJzdF9yZWNvcmQgLSBwcml2YXRlLnN0YXJ0cHRyKSks CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9w Z193YWxkdW1wL3BnX3dhbGR1bXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uMDEzYjA1MTUwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAv cGdfd2FsZHVtcC5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IHBnX3dhbGR1bXAuaCAtIGRlY29kZSBhbmQgZGlzcGxheSBXQUwKKyAqCisgKiBDb3B5cmlnaHQg KGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURF TlRJRklDQVRJT04KKyAqCQkgIHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX1dBTERVTVBfSAorI2RlZmluZSBQR19XQUxE VU1QX0gKKworI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorCisvKiBDb250YWlucyB0aGUg bmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwordHlwZWRlZiBz dHJ1Y3QgWExvZ0R1bXBQcml2YXRlCit7CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKwlpbnQJCQlz ZWdzaXplOworCVhMb2dSZWNQdHIJc3RhcnRwdHI7CisJWExvZ1JlY1B0cgllbmRwdHI7CisJYm9v bAkJZW5kcHRyX3JlYWNoZWQ7Cit9IFhMb2dEdW1wUHJpdmF0ZTsKKworI2VuZGlmCQkJCQkJCS8q IFBHX1dBTERVTVBfSCAqLwotLSAKMi40Ny4xCgo= --00000000000046607a064d730722 Content-Type: application/x-patch; name="v21-0003-pg_waldump-Add-support-for-reading-WAL-from-tar-.patch" Content-Disposition: attachment; filename="v21-0003-pg_waldump-Add-support-for-reading-WAL-from-tar-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmytce7g2 RnJvbSA5Yzg3ZDhlOGRlMTllZDdiZTYzODc0YWVhNjFkZjE5YTBjYjQxZGQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMTkgTWFyIDIwMjYgMTU6NDM6NDYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYyMSAzLzVdIHBn X3dhbGR1bXA6IEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIFdBTCBmcm9tIHRhcgogYXJjaGl2ZXMK CnBnX3dhbGR1bXAgY2FuIG5vdyBhY2NlcHQgdGhlIHBhdGggdG8gYSB0YXIgYXJjaGl2ZSAob3B0 aW9uYWxseQpjb21wcmVzc2VkIHdpdGggZ3ppcCwgbHo0LCBvciB6c3RkKSBjb250YWluaW5nIFdB TCBmaWxlcyBhbmQgZGVjb2RlCnRoZW0uICBUaGlzIHdhcyBhZGRlZCBwcmltYXJpbHkgZm9yIHBn X3ZlcmlmeWJhY2t1cCwgd2hpY2ggcHJldmlvdXNseQpoYWQgdG8gc2tpcCBXQUwgcGFyc2luZyBm b3IgdGFyLWZvcm1hdCBiYWNrdXBzLgoKVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIGV4aXN0 aW5nIGFyY2hpdmUgc3RyZWFtZXIgaW5mcmFzdHJ1Y3R1cmUKd2l0aCBhIGhhc2ggdGFibGUgdG8g dHJhY2sgV0FMIHNlZ21lbnRzIHJlYWQgZnJvbSB0aGUgYXJjaGl2ZS4gIElmIFdBTApmaWxlcyB3 aXRoaW4gdGhlIGFyY2hpdmUgYXJlIG5vdCBpbiBzZXF1ZW50aWFsIG9yZGVyLCBvdXQtb2Ytb3Jk ZXIKc2VnbWVudHMgYXJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IChjcmVhdGVk IHZpYSBta2R0ZW1wIHVuZGVyCiRUTVBESVIgb3IgdGhlIGFyY2hpdmUncyBkaXJlY3RvcnkpIGFu ZCByZWFkIGJhY2sgd2hlbiBuZWVkZWQuICBBbgphdGV4aXQgY2FsbGJhY2sgZW5zdXJlcyB0aGUg dGVtcG9yYXJ5IGRpcmVjdG9yeSBpcyBjbGVhbmVkIHVwLgoKVGhlIC0tZm9sbG93IG9wdGlvbiBp cyBub3Qgc3VwcG9ydGVkIHdoZW4gcmVhZGluZyBmcm9tIGEgdGFyIGFyY2hpdmUuCgpBdXRob3I6 IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxy b2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKYWt1YiBXYXJ0YWsgPGpha3ViLndh cnRha0BlbnRlcnByaXNlZGIuY29tPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFv QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEV1bGVyIFRhdmVpcmEgPGV1bGVyQGV1bGVydG8uY29t PgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+ClJldmll d2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpkaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQUpfYjk0YnFkV04zaDJKLVB6enpRMk5wYndjdDVa UUhnZ25fUW9ZR2hDMnJuLT1XUUBtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9yZWYv cGdfd2FsZHVtcC5zZ21sICAgICB8ICAyMyArLQogc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxl ICAgICAgICAgIHwgICA3ICstCiBzcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMg fCA4NDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmluL3BnX3dhbGR1bXAvbWVz b24uYnVpbGQgICAgICAgfCAgIDQgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMg ICAgICB8IDI5NSArKysrKysrKy0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oICAg ICAgfCAgNTAgKysKIHNyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbCAgICB8IDI0NiAr KysrKystLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwgICA0ICsKIDgg ZmlsZXMgY2hhbmdlZCwgMTM0NiBpbnNlcnRpb25zKCspLCAxMzAgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL3BnX3dhbGR1bXAuc2dtbAppbmRleCBkMTcxNWZmNTEyNC4uOWJiYjRiZDU3NzIgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvcGdfd2FsZHVtcC5zZ21sCkBAIC0xNDEsMTMgKzE0MSwyMSBAQCBQb3N0Z3JlU1FMIGRv Y3VtZW50YXRpb24KICAgICAgIDx0ZXJtPjxvcHRpb24+LS1wYXRoPTxyZXBsYWNlYWJsZT5wYXRo PC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAg PHBhcmE+Ci0gICAgICAgIFNwZWNpZmllcyBhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIFdBTCBz ZWdtZW50IGZpbGVzIG9yIGEKLSAgICAgICAgZGlyZWN0b3J5IHdpdGggYSA8bGl0ZXJhbD5wZ193 YWw8L2xpdGVyYWw+IHN1YmRpcmVjdG9yeSB0aGF0CisgICAgICAgIFNwZWNpZmllcyBhIHRhciBh cmNoaXZlIG9yIGEgZGlyZWN0b3J5IHRvIHNlYXJjaCBmb3IgV0FMIHNlZ21lbnQgZmlsZXMKKyAg ICAgICAgb3IgYSBkaXJlY3Rvcnkgd2l0aCBhIDxsaXRlcmFsPnBnX3dhbDwvbGl0ZXJhbD4gc3Vi ZGlyZWN0b3J5IHRoYXQKICAgICAgICAgY29udGFpbnMgc3VjaCBmaWxlcy4gIFRoZSBkZWZhdWx0 IGlzIHRvIHNlYXJjaCBpbiB0aGUgY3VycmVudAogICAgICAgICBkaXJlY3RvcnksIHRoZSA8bGl0 ZXJhbD5wZ193YWw8L2xpdGVyYWw+IHN1YmRpcmVjdG9yeSBvZiB0aGUKICAgICAgICAgY3VycmVu dCBkaXJlY3RvcnksIGFuZCB0aGUgPGxpdGVyYWw+cGdfd2FsPC9saXRlcmFsPiBzdWJkaXJlY3Rv cnkKICAgICAgICAgb2YgPGVudmFyPlBHREFUQTwvZW52YXI+LgogICAgICAgIDwvcGFyYT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgSWYgYSB0YXIgYXJjaGl2ZSBpcyBwcm92aWRlZCBhbmQgaXRz IFdBTCBzZWdtZW50IGZpbGVzIGFyZSBub3QgaW4KKyAgICAgICAgc2VxdWVudGlhbCBvcmRlciwg dGhvc2UgZmlsZXMgd2lsbCBiZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeQorICAg ICAgICBuYW1lZCBzdGFydGluZyB3aXRoIDxmaWxlbmFtZT53YWxkdW1wX3RtcDwvZmlsZW5hbWU+ LiBUaGlzIGRpcmVjdG9yeSB3aWxsIGJlCisgICAgICAgIGNyZWF0ZWQgaW5zaWRlIHRoZSBkaXJl Y3Rvcnkgc3BlY2lmaWVkIGJ5IHRoZSA8ZW52YXI+VE1QRElSPC9lbnZhcj4KKyAgICAgICAgZW52 aXJvbm1lbnQgdmFyaWFibGUgaWYgaXQgaXMgc2V0OyBvdGhlcndpc2UsIGl0IHdpbGwgYmUgY3Jl YXRlZCB3aXRoaW4KKyAgICAgICAgdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSB0YXIgYXJjaGl2 ZS4KKyAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KIApAQCAtMzgzLDYgKzM5MSwxNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAg PC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxp c3RlbnRyeT4KKyAgICA8dGVybT48ZW52YXI+VE1QRElSPC9lbnZhcj48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERpcmVjdG9yeSBpbiB3aGljaCB0byBjcmVhdGUg dGVtcG9yYXJ5IGZpbGVzIHdoZW4gcmVhZGluZyBXQUwgZnJvbSBhCisgICAgICB0YXIgYXJjaGl2 ZSB3aXRoIG91dC1vZi1vcmRlciBzZWdtZW50IGZpbGVzLiBJZiBub3Qgc2V0LCB0aGUgdGVtcG9y YXJ5CisgICAgICBkaXJlY3RvcnkgaXMgY3JlYXRlZCB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5 IGFzIHRoZSB0YXIgYXJjaGl2ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KICAgPC92YXJpYWJsZWxpc3Q+CiAgPC9yZWZzZWN0MT4KIApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ193YWxkdW1wL01h a2VmaWxlCmluZGV4IDRjMWVlNjQ5NTAxLi5hYWJiODc1NjZhMiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ193YWxkdW1wL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZQpA QCAtMyw2ICszLDkgQEAKIFBHRklMRURFU0MgPSAicGdfd2FsZHVtcCAtIGRlY29kZSBhbmQgZGlz cGxheSBXQUwiCiBQR0FQUElDT049d2luMzIKIAorIyBtYWtlIHRoZXNlIGF2YWlsYWJsZSB0byBU QVAgdGVzdCBzY3JpcHRzCitleHBvcnQgVEFSCisKIHN1YmRpciA9IHNyYy9iaW4vcGdfd2FsZHVt cAogdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9N YWtlZmlsZS5nbG9iYWwKQEAgLTEwLDEzICsxMywxNSBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGly KS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiBPQkpTID0gXAogCSQoUk1HUkRFU0NPQkpTKSBcCiAJJChX SU4zMlJFUykgXAorCWFyY2hpdmVfd2FsZHVtcC5vIFwKIAljb21wYXQubyBcCiAJcGdfd2FsZHVt cC5vIFwKIAlybWdyZGVzYy5vIFwKIAl4bG9ncmVhZGVyLm8gXAogCXhsb2dzdGF0cy5vCiAKLW92 ZXJyaWRlIENQUEZMQUdTIDo9IC1ERlJPTlRFTkQgJChDUFBGTEFHUykKK292ZXJyaWRlIENQUEZM QUdTIDo9IC1ERlJPTlRFTkQgLUkkKGxpYnBxX3NyY2RpcikgJChDUFBGTEFHUykKK0xERkxBR1Nf SU5URVJOQUwgKz0gLUwkKHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCiAK IFJNR1JERVNDU09VUkNFUyA9ICQoc29ydCAkKG5vdGRpciAkKHdpbGRjYXJkICQodG9wX3NyY2Rp cikvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjLypkZXNjKi5jKSkpCiBSTUdSREVTQ09CSlMg PSAkKHBhdHN1YnN0ICUuYywlLm8sJChSTUdSREVTQ1NPVVJDRVMpKQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1wL2Fy Y2hpdmVfd2FsZHVtcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45 Y2JjYWUzZThhZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZl X3dhbGR1bXAuYwpAQCAtMCwwICsxLDg0NyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog YXJjaGl2ZV93YWxkdW1wLmMKKyAqCQlBIGdlbmVyaWMgZmFjaWxpdHkgZm9yIHJlYWRpbmcgV0FM IGRhdGEgZnJvbSB0YXIgYXJjaGl2ZXMgdmlhIGFyY2hpdmUKKyAqCQlzdHJlYW1lci4KKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQlzcmMvYmluL3BnX3dhbGR1bXAv YXJjaGl2ZV93YWxkdW1wLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVk ZSAicG9zdGdyZXNfZmUuaCIKKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSAiYWNj ZXNzL3hsb2dfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCisjaW5j bHVkZSAiY29tbW9uL2hhc2hmbi5oIgorI2luY2x1ZGUgImNvbW1vbi9sb2dnaW5nLmgiCisjaW5j bHVkZSAiZmVfdXRpbHMvc2ltcGxlX2xpc3QuaCIKKyNpbmNsdWRlICJwZ193YWxkdW1wLmgiCisK Ky8qCisgKiBIb3cgbWFueSBieXRlcyBzaG91bGQgd2UgdHJ5IHRvIHJlYWQgZnJvbSBhIGZpbGUg YXQgb25jZT8KKyAqLworI2RlZmluZSBSRUFEX0NIVU5LX1NJWkUJCQkJKDEyOCAqIDEwMjQpCisK Ky8qIFRlbXBvcmFyeSBleHBvcnRlZCBXQUwgZmlsZSBkaXJlY3RvcnkgKi8KK2NoYXIJICAgKlRt cFdhbFNlZ0RpciA9IE5VTEw7CisKKy8qCisgKiBDaGVjayBpZiB0aGUgc3RhcnQgc2VnbWVudCBu dW1iZXIgaXMgemVybzsgdGhpcyBpbmRpY2F0ZXMgYSByZXF1ZXN0IHRvIHJlYWQKKyAqIGFueSBX QUwgZmlsZS4KKyAqLworI2RlZmluZSBSRUFEX0FOWV9XQUwocHJpdmF0ZUluZm8pCSgocHJpdmF0 ZUluZm8pLT5zdGFydF9zZWdubyA9PSAwKQorCisvKgorICogSGFzaCBlbnRyeSByZXByZXNlbnRp bmcgYSBXQUwgc2VnbWVudCByZXRyaWV2ZWQgZnJvbSB0aGUgYXJjaGl2ZS4KKyAqCisgKiBXaGls ZSBXQUwgc2VnbWVudHMgYXJlIHR5cGljYWxseSByZWFkIHNlcXVlbnRpYWxseSwgaW5kaXZpZHVh bCBlbnRyaWVzCisgKiBtYWludGFpbiB0aGVpciBvd24gYnVmZmVycyBmb3IgdGhlIGZvbGxvd2lu ZyByZWFzb25zOgorICoKKyAqIDEuIEJvdW5kYXJ5IEhhbmRsaW5nOiBUaGUgYXJjaGl2ZSBzdHJl YW1lciBwcm92aWRlcyBhIGNvbnRpbnVvdXMgYnl0ZQorICogc3RyZWFtLiBBIHNpbmdsZSBzdHJl YW1pbmcgY2h1bmsgbWF5IGNvbnRhaW4gdGhlIGVuZCBvZiBvbmUgV0FMIHNlZ21lbnQKKyAqIGFu ZCB0aGUgc3RhcnQgb2YgdGhlIG5leHQuIFNlcGFyYXRlIGJ1ZmZlcnMgYWxsb3cgdXMgdG8gZWFz aWx5CisgKiBwYXJ0aXRpb24gYW5kIHRyYWNrIHRoZXNlIGJ5dGVzIGJ5IHRoZWlyIHJlc3BlY3Rp dmUgc2VnbWVudHMuCisgKgorICogMi4gT3V0LW9mLU9yZGVyIFN1cHBvcnQ6IERlZGljYXRlZCBi dWZmZXJzIHNpbXBsaWZ5IGxvZ2ljIHdoZW4gc2VnbWVudHMKKyAqIGFyZSBhcmNoaXZlZCBvciBy ZXRyaWV2ZWQgb3V0IG9mIHNlcXVlbmNlLgorICoKKyAqIFRvIG1pbmltaXplIHRoZSBtZW1vcnkg Zm9vdHByaW50LCBlbnRyaWVzIGFuZCB0aGVpciBhc3NvY2lhdGVkIGJ1ZmZlcnMgYXJlCisgKiBm cmVlZCBpbW1lZGlhdGVseSBvbmNlIGNvbnN1bWVkLiBTaW5jZSBwZ193YWxkdW1wIGRvZXMgbm90 IHJlcXVlc3QgdGhlIHNhbWUKKyAqIGJ5dGVzIHR3aWNlLCBhIHNlZ21lbnQgaXMgZGlzY2FyZGVk IGFzIHNvb24gYXMgcGdfd2FsZHVtcCBtb3ZlcyBwYXN0IGl0LgorICovCit0eXBlZGVmIHN0cnVj dCBBcmNoaXZlZFdBTEZpbGUKK3sKKwl1aW50MzIJCXN0YXR1czsJCQkvKiBoYXNoIHN0YXR1cyAq LworCWNvbnN0IGNoYXIgKmZuYW1lOwkJCS8qIGhhc2gga2V5OiBXQUwgc2VnbWVudCBuYW1lICov CisKKwlTdHJpbmdJbmZvCWJ1ZjsJCQkvKiBob2xkcyBXQUwgYnl0ZXMgcmVhZCBmcm9tIGFyY2hp dmUgKi8KKwlib29sCQlzcGlsbGVkOwkJLyogdHJ1ZSBpZiB0aGUgV0FMIGRhdGEgd2FzIHNwaWxs ZWQgdG8gYQorCQkJCQkJCQkgKiB0ZW1wb3JhcnkgZmlsZSAqLworCisJaW50CQkJcmVhZF9sZW47 CQkvKiB0b3RhbCBieXRlcyBvZiBhIFdBTCByZWFkIGZyb20gYXJjaGl2ZSAqLworfSBBcmNoaXZl ZFdBTEZpbGU7CisKK3N0YXRpYyB1aW50MzIgaGFzaF9zdHJpbmdfcG9pbnRlcihjb25zdCBjaGFy ICpzKTsKKyNkZWZpbmUgU0hfUFJFRklYCQkJCUFyY2hpdmVkV0FMCisjZGVmaW5lIFNIX0VMRU1F TlRfVFlQRQkJCUFyY2hpdmVkV0FMRmlsZQorI2RlZmluZSBTSF9LRVlfVFlQRQkJCQljb25zdCBj aGFyICoKKyNkZWZpbmUgU0hfS0VZCQkJCQlmbmFtZQorI2RlZmluZSBTSF9IQVNIX0tFWSh0Yiwg a2V5KQloYXNoX3N0cmluZ19wb2ludGVyKGtleSkKKyNkZWZpbmUgU0hfRVFVQUwodGIsIGEsIGIp CQkoc3RyY21wKGEsIGIpID09IDApCisjZGVmaW5lIFNIX1NDT1BFCQkJCXN0YXRpYyBpbmxpbmUK KyNkZWZpbmUgU0hfUkFXX0FMTE9DQVRPUgkJcGdfbWFsbG9jMAorI2RlZmluZSBTSF9ERUNMQVJF CisjZGVmaW5lIFNIX0RFRklORQorI2luY2x1ZGUgImxpYi9zaW1wbGVoYXNoLmgiCisKK3R5cGVk ZWYgc3RydWN0IGFzdHJlYW1lcl93YWxkdW1wCit7CisJYXN0cmVhbWVyCWJhc2U7CisJWExvZ0R1 bXBQcml2YXRlICpwcml2YXRlSW5mbzsKK30gYXN0cmVhbWVyX3dhbGR1bXA7CisKK3N0YXRpYyBB cmNoaXZlZFdBTEZpbGUgKmdldF9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFtZSwK KwkJCQkJCQkJCQkJICBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAorCQkJCQkJCQkJCQkg IGludCBXYWxTZWdTeik7CitzdGF0aWMgaW50CXJlYWRfYXJjaGl2ZV9maWxlKFhMb2dEdW1wUHJp dmF0ZSAqcHJpdmF0ZUluZm8sIFNpemUgY291bnQpOworc3RhdGljIHZvaWQgc2V0dXBfdG1wd2Fs X2Rpcihjb25zdCBjaGFyICp3YWxkaXIpOworc3RhdGljIHZvaWQgY2xlYW51cF90bXB3YWxfZGly X2F0ZXhpdCh2b2lkKTsKKworc3RhdGljIEZJTEUgKnByZXBhcmVfdG1wX3dyaXRlKGNvbnN0IGNo YXIgKmZuYW1lKTsKK3N0YXRpYyB2b2lkIHBlcmZvcm1fdG1wX3dyaXRlKGNvbnN0IGNoYXIgKmZu YW1lLCBTdHJpbmdJbmZvIGJ1ZiwgRklMRSAqZmlsZSk7CisKK3N0YXRpYyBhc3RyZWFtZXIgKmFz dHJlYW1lcl93YWxkdW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKTsKK3N0YXRp YyB2b2lkIGFzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQoYXN0cmVhbWVyICpzdHJlYW1lciwKKwkJ CQkJCQkJCSAgYXN0cmVhbWVyX21lbWJlciAqbWVtYmVyLAorCQkJCQkJCQkJICBjb25zdCBjaGFy ICpkYXRhLCBpbnQgbGVuLAorCQkJCQkJCQkJICBhc3RyZWFtZXJfYXJjaGl2ZV9jb250ZXh0IGNv bnRleHQpOworc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1bXBfZmluYWxpemUoYXN0cmVhbWVy ICpzdHJlYW1lcik7CitzdGF0aWMgdm9pZCBhc3RyZWFtZXJfd2FsZHVtcF9mcmVlKGFzdHJlYW1l ciAqc3RyZWFtZXIpOworCitzdGF0aWMgYm9vbCBtZW1iZXJfaXNfd2FsX2ZpbGUoYXN0cmVhbWVy X3dhbGR1bXAgKm15c3RyZWFtZXIsCisJCQkJCQkJICAgYXN0cmVhbWVyX21lbWJlciAqbWVtYmVy LAorCQkJCQkJCSAgIGNoYXIgKipmbmFtZSk7CisKK3N0YXRpYyBjb25zdCBhc3RyZWFtZXJfb3Bz IGFzdHJlYW1lcl93YWxkdW1wX29wcyA9IHsKKwkuY29udGVudCA9IGFzdHJlYW1lcl93YWxkdW1w X2NvbnRlbnQsCisJLmZpbmFsaXplID0gYXN0cmVhbWVyX3dhbGR1bXBfZmluYWxpemUsCisJLmZy ZWUgPSBhc3RyZWFtZXJfd2FsZHVtcF9mcmVlCit9OworCisvKgorICogSW5pdGlhbGl6ZXMgdGhl IHRhciBhcmNoaXZlIHJlYWRlcjogb3BlbnMgdGhlIGFyY2hpdmUsIGJ1aWxkcyBhIGhhc2ggdGFi bGUKKyAqIGZvciBXQUwgZW50cmllcywgcmVhZHMgYWhlYWQgdW50aWwgYSBmdWxsIFdBTCBwYWdl IGhlYWRlciBpcyBhdmFpbGFibGUgdG8KKyAqIGRldGVybWluZSB0aGUgV0FMIHNlZ21lbnQgc2l6 ZSwgYW5kIGNvbXB1dGVzIHN0YXJ0L2VuZCBzZWdtZW50IG51bWJlcnMgZm9yCisgKiBmaWx0ZXJp bmcuICBJdCBhbHNvIHNldHMgdXAgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBvdXQtb2Ytb3Jk ZXIgV0FMIGRhdGEKKyAqIGFuZCByZWdpc3RlcnMgYW4gYXRleGl0IGNhbGxiYWNrIHRvIGNsZWFu IGl0IHVwLgorICovCit2b2lkCitpbml0X2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAq cHJpdmF0ZUluZm8sIGNvbnN0IGNoYXIgKndhbGRpciwKKwkJCQkJaW50ICpXYWxTZWdTeiwgcGdf Y29tcHJlc3NfYWxnb3JpdGhtIGNvbXByZXNzaW9uKQoreworCWludAkJCWZkOworCWFzdHJlYW1l ciAgKnN0cmVhbWVyOworCUFyY2hpdmVkV0FMRmlsZSAqZW50cnkgPSBOVUxMOworCVhMb2dMb25n UGFnZUhlYWRlciBsb25naGRyOworCVhMb2dTZWdObwlzZWdubzsKKwlUaW1lTGluZUlECXRpbWVs aW5lOworCisJLyogT3BlbiB0YXIgYXJjaGl2ZSBhbmQgc3RvcmUgaXRzIGZpbGUgZGVzY3JpcHRv ciAqLworCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIHByaXZhdGVJbmZvLT5h cmNoaXZlX25hbWUpOworCisJaWYgKGZkIDwgMCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVu IGZpbGUgXCIlc1wiIiwgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisKKwlwcml2YXRlSW5m by0+YXJjaGl2ZV9mZCA9IGZkOworCisJc3RyZWFtZXIgPSBhc3RyZWFtZXJfd2FsZHVtcF9uZXco cHJpdmF0ZUluZm8pOworCisJLyogV2UgbXVzdCBmaXJzdCBwYXJzZSB0aGUgdGFyIGFyY2hpdmUu ICovCisJc3RyZWFtZXIgPSBhc3RyZWFtZXJfdGFyX3BhcnNlcl9uZXcoc3RyZWFtZXIpOworCisJ LyogSWYgdGhlIGFyY2hpdmUgaXMgY29tcHJlc3NlZCwgZGVjb21wcmVzcyBiZWZvcmUgcGFyc2lu Zy4gKi8KKwlpZiAoY29tcHJlc3Npb24gPT0gUEdfQ09NUFJFU1NJT05fR1pJUCkKKwkJc3RyZWFt ZXIgPSBhc3RyZWFtZXJfZ3ppcF9kZWNvbXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKKwllbHNlIGlm IChjb21wcmVzc2lvbiA9PSBQR19DT01QUkVTU0lPTl9MWjQpCisJCXN0cmVhbWVyID0gYXN0cmVh bWVyX2x6NF9kZWNvbXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKKwllbHNlIGlmIChjb21wcmVzc2lv biA9PSBQR19DT01QUkVTU0lPTl9aU1REKQorCQlzdHJlYW1lciA9IGFzdHJlYW1lcl96c3RkX2Rl Y29tcHJlc3Nvcl9uZXcoc3RyZWFtZXIpOworCisJcHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFt ZXIgPSBzdHJlYW1lcjsKKworCS8qCisJICogQWxsb2NhdGUgYSBidWZmZXIgZm9yIHJlYWRpbmcg dGhlIGFyY2hpdmUgZmlsZSB0byBmYWNpbGl0YXRlIGNvbnRlbnQKKwkgKiBkZWNvZGluZzsgcmVh ZCByZXF1ZXN0cyBtdXN0IG5vdCBleGNlZWQgdGhlIGFsbG9jYXRlZCBidWZmZXIgc2l6ZS4KKwkg Ki8KKwlwcml2YXRlSW5mby0+YXJjaGl2ZV9yZWFkX2J1ZiA9IHBnX21hbGxvYyhSRUFEX0NIVU5L X1NJWkUpOworCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCXByaXZhdGVJbmZvLT5hcmNo aXZlX3JlYWRfYnVmX3NpemUgPSBSRUFEX0NIVU5LX1NJWkU7CisjZW5kaWYKKworCS8qCisJICog SGFzaCB0YWJsZSBzdG9yaW5nIFdBTCBlbnRyaWVzIHJlYWQgZnJvbSB0aGUgYXJjaGl2ZSB3aXRo IGFuIGFyYml0cmFyeQorCSAqIGluaXRpYWwgc2l6ZS4KKwkgKi8KKwlwcml2YXRlSW5mby0+YXJj aGl2ZV93YWxfaHRhYiA9IEFyY2hpdmVkV0FMX2NyZWF0ZSg4LCBOVUxMKTsKKworCS8qCisJICog UmVhZCB1bnRpbCB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBmdWxsIFdBTCBwYWdlIChYTE9HX0JMQ0tT WiBieXRlcykgZnJvbQorCSAqIHRoZSBmaXJzdCBXQUwgc2VnbWVudCBpbiB0aGUgYXJjaGl2ZSBz byB3ZSBjYW4gZXh0cmFjdCB0aGUgV0FMIHNlZ21lbnQKKwkgKiBzaXplIGZyb20gdGhlIGxvbmcg cGFnZSBoZWFkZXIuCisJICovCisJd2hpbGUgKGVudHJ5ID09IE5VTEwgfHwgZW50cnktPmJ1Zi0+ bGVuIDwgWExPR19CTENLU1opCisJeworCQlpZiAocmVhZF9hcmNoaXZlX2ZpbGUocHJpdmF0ZUlu Zm8sIFhMT0dfQkxDS1NaKSA9PSAwKQorCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBmaW5kIFdBTCBp biBhcmNoaXZlIFwiJXNcIiIsCisJCQkJCSBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lKTsKKwor CQllbnRyeSA9IHByaXZhdGVJbmZvLT5jdXJfZmlsZTsKKwl9CisKKwkvKiBTZXQgV2FsU2VnU3og aWYgV0FMIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IHJlYWQgKi8KKwlsb25naGRyID0gKFhMb2dMb25n UGFnZUhlYWRlcikgZW50cnktPmJ1Zi0+ZGF0YTsKKworCWlmICghSXNWYWxpZFdhbFNlZ1NpemUo bG9uZ2hkci0+eGxwX3NlZ19zaXplKSkKKwl7CisJCXBnX2xvZ19lcnJvcihuZ2V0dGV4dCgiaW52 YWxpZCBXQUwgc2VnbWVudCBzaXplIGluIFdBTCBmaWxlIGZyb20gYXJjaGl2ZSBcIiVzXCIgKCVk IGJ5dGUpIiwKKwkJCQkJCQkgICJpbnZhbGlkIFdBTCBzZWdtZW50IHNpemUgaW4gV0FMIGZpbGUg ZnJvbSBhcmNoaXZlIFwiJXNcIiAoJWQgYnl0ZXMpIiwKKwkJCQkJCQkgIGxvbmdoZHItPnhscF9z ZWdfc2l6ZSksCisJCQkJCSBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lLCBsb25naGRyLT54bHBf c2VnX3NpemUpOworCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJUaGUgV0FMIHNlZ21lbnQgc2l6ZSBt dXN0IGJlIGEgcG93ZXIgb2YgdHdvIGJldHdlZW4gMSBNQiBhbmQgMSBHQi4iKTsKKwkJZXhpdCgx KTsKKwl9CisKKwkqV2FsU2VnU3ogPSBsb25naGRyLT54bHBfc2VnX3NpemU7CisKKwkvKgorCSAq IFdpdGggdGhlIFdBTCBzZWdtZW50IHNpemUgYXZhaWxhYmxlLCB3ZSBjYW4gbm93IGluaXRpYWxp emUgdGhlCisJICogZGVwZW5kZW50IHN0YXJ0IGFuZCBlbmQgc2VnbWVudCBudW1iZXJzLgorCSAq LworCUFzc2VydCghWExvZ1JlY1B0cklzSW52YWxpZChwcml2YXRlSW5mby0+c3RhcnRwdHIpKTsK KwlYTEJ5dGVUb1NlZyhwcml2YXRlSW5mby0+c3RhcnRwdHIsIHByaXZhdGVJbmZvLT5zdGFydF9z ZWdubywgKldhbFNlZ1N6KTsKKworCWlmICghWExvZ1JlY1B0cklzSW52YWxpZChwcml2YXRlSW5m by0+ZW5kcHRyKSkKKwkJWExCeXRlVG9TZWcocHJpdmF0ZUluZm8tPmVuZHB0ciwgcHJpdmF0ZUlu Zm8tPmVuZF9zZWdubywgKldhbFNlZ1N6KTsKKworCS8qCisJICogVGhpcyBXQUwgcmVjb3JkIHdh cyBmZXRjaGVkIGJlZm9yZSB0aGUgZmlsdGVyaW5nIHBhcmFtZXRlcnMKKwkgKiAoc3RhcnRfc2Vn bm8gYW5kIGVuZF9zZWdubykgd2VyZSBmdWxseSBpbml0aWFsaXplZC4gUGVyZm9ybSB0aGUKKwkg KiByZWxldmFuY2UgY2hlY2sgYWdhaW5zdCB0aGUgdXNlci1wcm92aWRlZCByYW5nZSBub3c7IGlm IHRoZSBXQUwgZmFsbHMKKwkgKiBvdXRzaWRlIHRoaXMgcmFuZ2UsIHJlbW92ZSBpdCBmcm9tIHRo ZSBoYXNoIHRhYmxlLiBTdWJzZXF1ZW50IFdBTCB3aWxsCisJICogYmUgZmlsdGVyZWQgYXV0b21h dGljYWxseSBieSB0aGUgYXJjaGl2ZSBzdHJlYW1lciB1c2luZyB0aGUgdXBkYXRlZAorCSAqIHN0 YXJ0X3NlZ25vIGFuZCBlbmRfc2Vnbm8gdmFsdWVzLgorCSAqLworCVhMb2dGcm9tRmlsZU5hbWUo ZW50cnktPmZuYW1lLCAmdGltZWxpbmUsICZzZWdubywgcHJpdmF0ZUluZm8tPnNlZ3NpemUpOwor CWlmIChwcml2YXRlSW5mby0+dGltZWxpbmUgIT0gdGltZWxpbmUgfHwKKwkJcHJpdmF0ZUluZm8t PnN0YXJ0X3NlZ25vID4gc2Vnbm8gfHwKKwkJcHJpdmF0ZUluZm8tPmVuZF9zZWdubyA8IHNlZ25v KQorCQlmcmVlX2FyY2hpdmVfd2FsX2VudHJ5KGVudHJ5LT5mbmFtZSwgcHJpdmF0ZUluZm8pOwor CisJLyoKKwkgKiBTZXR1cCB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIFdBTCBzZWdtZW50 cyBhbmQgc2V0IHVwIGFuIGV4aXQKKwkgKiBjYWxsYmFjayB0byByZW1vdmUgaXQgdXBvbiBjb21w bGV0aW9uLgorCSAqLworCXNldHVwX3RtcHdhbF9kaXIod2FsZGlyKTsKKwlhdGV4aXQoY2xlYW51 cF90bXB3YWxfZGlyX2F0ZXhpdCk7Cit9CisKKy8qCisgKiBSZWxlYXNlIHRoZSBhcmNoaXZlIHN0 cmVhbWVyIGNoYWluIGFuZCBjbG9zZSB0aGUgYXJjaGl2ZSBmaWxlLgorICovCit2b2lkCitmcmVl X2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCit7CisJLyoKKwkg KiBOQjogTm9ybWFsbHksIGFzdHJlYW1lcl9maW5hbGl6ZSgpIGlzIGNhbGxlZCBiZWZvcmUgYXN0 cmVhbWVyX2ZyZWUoKSB0bworCSAqIGZsdXNoIGFueSByZW1haW5pbmcgYnVmZmVyZWQgZGF0YSBv ciB0byBlbnN1cmUgdGhlIGVuZCBvZiB0aGUgdGFyCisJICogYXJjaGl2ZSBpcyByZWFjaGVkLiAg SG93ZXZlciwgd2hlbiBkZWNvZGluZyBXQUwsIG9uY2Ugd2UgaGl0IHRoZSBlbmQKKwkgKiBMU04s IGFueSByZW1haW5pbmcgYnVmZmVyZWQgZGF0YSBvciB1bnJlYWQgcG9ydGlvbiBvZiB0aGUgYXJj aGl2ZSBjYW4KKwkgKiBiZSBzYWZlbHkgaWdub3JlZC4KKwkgKi8KKwlhc3RyZWFtZXJfZnJlZShw cml2YXRlSW5mby0+YXJjaGl2ZV9zdHJlYW1lcik7CisKKwkvKiBGcmVlIGFueSByZW1haW5pbmcg aGFzaCB0YWJsZSBlbnRyaWVzIGFuZCB0aGVpciBidWZmZXJzLiAqLworCWlmIChwcml2YXRlSW5m by0+YXJjaGl2ZV93YWxfaHRhYiAhPSBOVUxMKQorCXsKKwkJQXJjaGl2ZWRXQUxfaXRlcmF0b3Ig aXRlcjsKKwkJQXJjaGl2ZWRXQUxGaWxlICplbnRyeTsKKworCQlBcmNoaXZlZFdBTF9zdGFydF9p dGVyYXRlKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiLCAmaXRlcik7CisJCXdoaWxlICgo ZW50cnkgPSBBcmNoaXZlZFdBTF9pdGVyYXRlKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFi LAorCQkJCQkJCQkJCQkmaXRlcikpICE9IE5VTEwpCisJCXsKKwkJCWlmIChlbnRyeS0+YnVmICE9 IE5VTEwpCisJCQkJZGVzdHJveVN0cmluZ0luZm8oZW50cnktPmJ1Zik7CisJCX0KKwkJQXJjaGl2 ZWRXQUxfZGVzdHJveShwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYik7CisJCXByaXZhdGVJ bmZvLT5hcmNoaXZlX3dhbF9odGFiID0gTlVMTDsKKwl9CisKKwkvKiBGcmVlIHRoZSByZXVzYWJs ZSByZWFkIGJ1ZmZlci4gKi8KKwlpZiAocHJpdmF0ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYgIT0g TlVMTCkKKwl7CisJCXBnX2ZyZWUocHJpdmF0ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYpOworCQlw cml2YXRlSW5mby0+YXJjaGl2ZV9yZWFkX2J1ZiA9IE5VTEw7CisJfQorCisJLyogQ2xvc2UgdGhl IGZpbGUuICovCisJaWYgKGNsb3NlKHByaXZhdGVJbmZvLT5hcmNoaXZlX2ZkKSAhPSAwKQorCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkgcHJp dmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7Cit9CisKKy8qCisgKiBDb3BpZXMgdGhlIHJlcXVlc3Rl ZCBXQUwgZGF0YSBmcm9tIHRoZSBoYXNoIGVudHJ5J3MgYnVmZmVyIGludG8gcmVhZEJ1ZmYuCisg KiBJZiB0aGUgYnVmZmVyIGRvZXMgbm90IHlldCBjb250YWluIHRoZSBuZWVkZWQgYnl0ZXMsIGZl dGNoZXMgbW9yZSBkYXRhIGZyb20KKyAqIHRoZSB0YXIgYXJjaGl2ZSB2aWEgdGhlIGFyY2hpdmUg c3RyZWFtZXIuCisgKi8KK2ludAorcmVhZF9hcmNoaXZlX3dhbF9wYWdlKFhMb2dEdW1wUHJpdmF0 ZSAqcHJpdmF0ZUluZm8sIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKKwkJCQkJICBTaXplIGNv dW50LCBjaGFyICpyZWFkQnVmZiwgaW50IFdhbFNlZ1N6KQoreworCWNoYXIJICAgKnAgPSByZWFk QnVmZjsKKwlTaXplCQluYnl0ZXMgPSBjb3VudDsKKwlYTG9nUmVjUHRyCXJlY3B0ciA9IHRhcmdl dFBhZ2VQdHI7CisJWExvZ1NlZ05vCXNlZ25vOworCWNoYXIJCWZuYW1lW01BWEZOQU1FTEVOXTsK KwlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5OworCisJLyogSWRlbnRpZnkgdGhlIHNlZ21lbnQgYW5k IGxvY2F0ZSBpdHMgZW50cnkgaW4gdGhlIGFyY2hpdmUgaGFzaCAqLworCVhMQnl0ZVRvU2VnKHRh cmdldFBhZ2VQdHIsIHNlZ25vLCBXYWxTZWdTeik7CisJWExvZ0ZpbGVOYW1lKGZuYW1lLCBwcml2 YXRlSW5mby0+dGltZWxpbmUsIHNlZ25vLCBXYWxTZWdTeik7CisJZW50cnkgPSBnZXRfYXJjaGl2 ZV93YWxfZW50cnkoZm5hbWUsIHByaXZhdGVJbmZvLCBXYWxTZWdTeik7CisKKwl3aGlsZSAobmJ5 dGVzID4gMCkKKwl7CisJCWNoYXIJICAgKmJ1ZiA9IGVudHJ5LT5idWYtPmRhdGE7CisJCWludAkJ CWJ1ZkxlbiA9IGVudHJ5LT5idWYtPmxlbjsKKwkJWExvZ1JlY1B0cgllbmRQdHI7CisJCVhMb2dS ZWNQdHIJc3RhcnRQdHI7CisKKwkJLyoKKwkJICogQ2FsY3VsYXRlIHRoZSBMU04gcmFuZ2UgY3Vy cmVudGx5IHJlc2lkaW5nIGluIHRoZSBidWZmZXIuCisJCSAqCisJCSAqIHJlYWRfbGVuIHRyYWNr cyB0b3RhbCBieXRlcyByZWNlaXZlZCBmb3IgdGhpcyBzZWdtZW50IChpbmNsdWRpbmcKKwkJICog YWxyZWFkeS1kaXNjYXJkZWQgZGF0YSksIHNvIGVuZFB0ciBpcyB0aGUgTFNOIGp1c3QgcGFzdCB0 aGUgbGFzdAorCQkgKiBidWZmZXJlZCBieXRlLCBhbmQgc3RhcnRQdHIgaXMgdGhlIExTTiBvZiB0 aGUgZmlyc3QgYnVmZmVyZWQgYnl0ZS4KKwkJICovCisJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRy KHNlZ25vLCBlbnRyeS0+cmVhZF9sZW4sIFdhbFNlZ1N6LCBlbmRQdHIpOworCQlzdGFydFB0ciA9 IGVuZFB0ciAtIGJ1ZkxlbjsKKworCQkvKgorCQkgKiBDb3B5IHRoZSByZXF1ZXN0ZWQgV0FMIHJl Y29yZCBpZiBpdCBleGlzdHMgaW4gdGhlIGJ1ZmZlci4KKwkJICovCisJCWlmIChidWZMZW4gPiAw ICYmIHN0YXJ0UHRyIDw9IHJlY3B0ciAmJiByZWNwdHIgPCBlbmRQdHIpCisJCXsKKwkJCWludAkJ CWNvcHlCeXRlczsKKwkJCWludAkJCW9mZnNldCA9IHJlY3B0ciAtIHN0YXJ0UHRyOworCisJCQkv KgorCQkJICogR2l2ZW4gc3RhcnRQdHIgPD0gcmVjcHRyIDwgZW5kUHRyIGFuZCBhIHRvdGFsIGJ1 ZmZlciBzaXplCisJCQkgKiAnYnVmTGVuJywgdGhlIG9mZnNldCAocmVjcHRyIC0gc3RhcnRQdHIp IHdpbGwgYWx3YXlzIGJlIGxlc3MKKwkJCSAqIHRoYW4gJ2J1ZkxlbicuCisJCQkgKi8KKwkJCUFz c2VydChvZmZzZXQgPCBidWZMZW4pOworCisJCQljb3B5Qnl0ZXMgPSBNaW4obmJ5dGVzLCBidWZM ZW4gLSBvZmZzZXQpOworCQkJbWVtY3B5KHAsIGJ1ZiArIG9mZnNldCwgY29weUJ5dGVzKTsKKwor CQkJLyogVXBkYXRlIHN0YXRlIGZvciByZWFkICovCisJCQlyZWNwdHIgKz0gY29weUJ5dGVzOwor CQkJbmJ5dGVzIC09IGNvcHlCeXRlczsKKwkJCXAgKz0gY29weUJ5dGVzOworCQl9CisJCWVsc2UK KwkJeworCQkJLyoKKwkJCSAqIEJlZm9yZSBzdGFydGluZyB0aGUgYWN0dWFsIGRlY29kaW5nIGxv b3AsIHBnX3dhbGR1bXAgdHJpZXMgdG8KKwkJCSAqIGxvY2F0ZSB0aGUgZmlyc3QgdmFsaWQgcmVj b3JkIGZyb20gdGhlIHVzZXItc3BlY2lmaWVkIHN0YXJ0CisJCQkgKiBwb3NpdGlvbiwgd2hpY2gg bWlnaHQgbm90IGJlIHRoZSBzdGFydCBvZiBhIFdBTCByZWNvcmQgYW5kCisJCQkgKiBjb3VsZCBm YWxsIGluIHRoZSBtaWRkbGUgb2YgYSByZWNvcmQgdGhhdCBzcGFucyBtdWx0aXBsZSBwYWdlcy4K KwkJCSAqIENvbnNlcXVlbnRseSwgdGhlIHZhbGlkIHN0YXJ0IHBvc2l0aW9uIHRoZSBkZWNvZGVy IGlzIGxvb2tpbmcKKwkJCSAqIGZvciBjb3VsZCBiZSBmYXIgYXdheSBmcm9tIHRoYXQgaW5pdGlh bCBwb3NpdGlvbi4KKwkJCSAqCisJCQkgKiBUaGlzIG1heSBpbnZvbHZlIHJlYWRpbmcgYWNyb3Nz IG11bHRpcGxlIHBhZ2VzLCBhbmQgdGhpcworCQkJICogcHJlLXJlYWRpbmcgZmV0Y2hlcyBkYXRh IGluIG11bHRpcGxlIHJvdW5kcyBmcm9tIHRoZSBhcmNoaXZlCisJCQkgKiBzdHJlYW1lcjsgbm9y bWFsbHksIHdlIHdvdWxkIHRocm93IGF3YXkgZXhpc3RpbmcgYnVmZmVyCisJCQkgKiBjb250ZW50 cyB0byBmZXRjaCB0aGUgbmV4dCBzZXQgb2YgZGF0YSwgYnV0IHRoYXQgZXhpc3RpbmcgZGF0YQor CQkJICogbWlnaHQgYmUgbmVlZGVkIG9uY2UgdGhlIG1haW4gbG9vcCBzdGFydHMuIEJlY2F1c2Ug cHJldmlvdXNseQorCQkJICogcmVhZCBkYXRhIGNhbm5vdCBiZSByZS1yZWFkIGJ5IHRoZSBhcmNo aXZlIHN0cmVhbWVyLCB3ZSBkZWxheQorCQkJICogcmVzZXR0aW5nIHRoZSBidWZmZXIgdW50aWwg dGhlIG1haW4gZGVjb2RpbmcgbG9vcCBpcyBlbnRlcmVkLgorCQkJICoKKwkJCSAqIE9uY2UgcGdf d2FsZHVtcCBoYXMgZW50ZXJlZCB0aGUgbWFpbiBsb29wLCBpdCBtYXkgcmUtcmVhZCB0aGUKKwkJ CSAqIGN1cnJlbnRseSBhY3RpdmUgcGFnZSwgYnV0IG5ldmVyIGFuIG9sZGVyIG9uZTsgdGhlcmVm b3JlLCBhbnkKKwkJCSAqIGZ1bGx5IGNvbnN1bWVkIFdBTCBkYXRhIHByZWNlZGluZyB0aGUgY3Vy cmVudCBwYWdlIGNhbiB0aGVuIGJlCisJCQkgKiBzYWZlbHkgZGlzY2FyZGVkLgorCQkJICovCisJ CQlpZiAocHJpdmF0ZUluZm8tPmRlY29kaW5nX3N0YXJ0ZWQpCisJCQl7CisJCQkJcmVzZXRTdHJp bmdJbmZvKGVudHJ5LT5idWYpOworCisJCQkJLyoKKwkJCQkgKiBQdXNoIGJhY2sgdGhlIHBhcnRp YWwgcGFnZSBkYXRhIGZvciB0aGUgY3VycmVudCBwYWdlIHRvIHRoZQorCQkJCSAqIGJ1ZmZlciwg ZW5zdXJpbmcgYSBmdWxsIHBhZ2UgcmVtYWlucyBhdmFpbGFibGUgZm9yCisJCQkJICogcmUtcmVh ZGluZyBpZiByZXF1ZXN0ZWQuCisJCQkJICovCisJCQkJaWYgKHAgPiByZWFkQnVmZikKKwkJCQl7 CisJCQkJCUFzc2VydCgoY291bnQgLSBuYnl0ZXMpID4gMCk7CisJCQkJCWFwcGVuZEJpbmFyeVN0 cmluZ0luZm8oZW50cnktPmJ1ZiwgcmVhZEJ1ZmYsIGNvdW50IC0gbmJ5dGVzKTsKKwkJCQl9CisJ CQl9CisKKwkJCS8qCisJCQkgKiBOb3csIGZldGNoIG1vcmUgZGF0YS4gIFJhaXNlIGFuIGVycm9y IGlmIHRoZSBhcmNoaXZlIHN0cmVhbWVyCisJCQkgKiBoYXMgbW92ZWQgcGFzdCBvdXIgc2VnbWVu dCAobWVhbmluZyB0aGUgV0FMIGZpbGUgaW4gdGhlIGFyY2hpdmUKKwkJCSAqIGlzIHNob3J0ZXIg dGhhbiBleHBlY3RlZCkgb3IgaWYgcmVhZGluZyB0aGUgYXJjaGl2ZSByZWFjaGVkCisJCQkgKiBF T0YuCisJCQkgKi8KKwkJCWlmIChwcml2YXRlSW5mby0+Y3VyX2ZpbGUgIT0gZW50cnkpCisJCQkJ cGdfZmF0YWwoIldBTCBzZWdtZW50IFwiJXNcIiBpbiBhcmNoaXZlIFwiJXNcIiBpcyB0b28gc2hv cnQ6IHJlYWQgJWxsZCBvZiAlbGxkIGJ5dGVzIiwKKwkJCQkJCSBmbmFtZSwgcHJpdmF0ZUluZm8t PmFyY2hpdmVfbmFtZSwKKwkJCQkJCSAobG9uZyBsb25nIGludCkgKGNvdW50IC0gbmJ5dGVzKSwK KwkJCQkJCSAobG9uZyBsb25nIGludCkgY291bnQpOworCQkJaWYgKHJlYWRfYXJjaGl2ZV9maWxl KHByaXZhdGVJbmZvLCBSRUFEX0NIVU5LX1NJWkUpID09IDApCisJCQkJcGdfZmF0YWwoInVuZXhw ZWN0ZWQgZW5kIG9mIGFyY2hpdmUgXCIlc1wiIHdoaWxlIHJlYWRpbmcgXCIlc1wiOiByZWFkICVs bGQgb2YgJWxsZCBieXRlcyIsCisJCQkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSwgZm5h bWUsCisJCQkJCQkgKGxvbmcgbG9uZyBpbnQpIChjb3VudCAtIG5ieXRlcyksCisJCQkJCQkgKGxv bmcgbG9uZyBpbnQpIGNvdW50KTsKKwkJfQorCX0KKworCS8qCisJICogU2hvdWxkIGhhdmUgc3Vj Y2Vzc2Z1bGx5IHJlYWQgYWxsIHRoZSByZXF1ZXN0ZWQgYnl0ZXMgb3IgcmVwb3J0ZWQgYQorCSAq IGZhaWx1cmUgYmVmb3JlIHRoaXMgcG9pbnQuCisJICovCisJQXNzZXJ0KG5ieXRlcyA9PSAwKTsK KworCS8qCisJICogTkI6IFdlIHJldHVybiBjb3VudCB1bmNoYW5nZWQuICBXZSBjb3VsZCByZXR1 cm4gYSBib29sZWFuIHNpbmNlIHdlCisJICogZWl0aGVyIHN1Y2Nlc3NmdWxseSByZWFkIHRoZSBX QUwgcGFnZSBvciByYWlzZSBhbiBlcnJvciwgYnV0IHRoZSBjYWxsZXIKKwkgKiBleHBlY3RzIHRo aXMgdmFsdWUgdG8gYmUgcmV0dXJuZWQuICBUaGUgcm91dGluZSB0aGF0IHJlYWRzIFdBTCBwYWdl cworCSAqIGZyb20gcGh5c2ljYWwgV0FMIGZpbGVzIGZvbGxvd3MgdGhlIHNhbWUgY29udmVudGlv bi4KKwkgKi8KKwlyZXR1cm4gY291bnQ7Cit9CisKKy8qCisgKiBSZWxlYXNlcyB0aGUgYnVmZmVy IG9mIGEgV0FMIGVudHJ5IHRoYXQgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgcHJldmVudGluZyB0aGUK KyAqIGFjY3VtdWxhdGlvbiBvZiBpcnJlbGV2YW50IFdBTCBkYXRhLiAgQWxzbyByZW1vdmVzIGFu eSBhc3NvY2lhdGVkIHRlbXBvcmFyeQorICogZmlsZSBhbmQgY2xlYXJzIHByaXZhdGVJbmZvLT5j dXJfZmlsZSBpZiBpdCBwb2ludHMgdG8gdGhpcyBlbnRyeSwgc28gdGhlCisgKiBhcmNoaXZlIHN0 cmVhbWVyIHNraXBzIHN1YnNlcXVlbnQgZGF0YSBmb3IgaXQuCisgKi8KK3ZvaWQKK2ZyZWVfYXJj aGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUsIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0 ZUluZm8pCit7CisJQXJjaGl2ZWRXQUxGaWxlICplbnRyeTsKKworCWVudHJ5ID0gQXJjaGl2ZWRX QUxfbG9va3VwKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiLCBmbmFtZSk7CisKKwlpZiAo ZW50cnkgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyogRGVzdHJveSB0aGUgYnVmZmVyICovCisJ ZGVzdHJveVN0cmluZ0luZm8oZW50cnktPmJ1Zik7CisJZW50cnktPmJ1ZiA9IE5VTEw7CisKKwkv KiBSZW1vdmUgdGVtcG9yYXJ5IGZpbGUgaWYgYW55ICovCisJaWYgKGVudHJ5LT5zcGlsbGVkKQor CXsKKwkJY2hhcgkJZnBhdGhbTUFYUEdQQVRIXTsKKworCQlzbnByaW50ZihmcGF0aCwgTUFYUEdQ QVRILCAiJXMvJXMiLCBUbXBXYWxTZWdEaXIsIGZuYW1lKTsKKworCQlpZiAodW5saW5rKGZwYXRo KSA9PSAwKQorCQkJcGdfbG9nX2RlYnVnKCJyZW1vdmVkIGZpbGUgXCIlc1wiIiwgZnBhdGgpOwor CX0KKworCS8qIENsZWFyIGN1cl9maWxlIGlmIGl0IHBvaW50cyB0byB0aGUgZW50cnkgYmVpbmcg ZnJlZWQgKi8KKwlpZiAocHJpdmF0ZUluZm8tPmN1cl9maWxlID09IGVudHJ5KQorCQlwcml2YXRl SW5mby0+Y3VyX2ZpbGUgPSBOVUxMOworCisJQXJjaGl2ZWRXQUxfZGVsZXRlX2l0ZW0ocHJpdmF0 ZUluZm8tPmFyY2hpdmVfd2FsX2h0YWIsIGVudHJ5KTsKK30KKworLyoKKyAqIFJldHVybnMgdGhl IGFyY2hpdmVkIFdBTCBlbnRyeSBmcm9tIHRoZSBoYXNoIHRhYmxlIGlmIGl0IGFscmVhZHkgZXhp c3RzLgorICogT3RoZXJ3aXNlLCByZWFkcyBtb3JlIGRhdGEgZnJvbSB0aGUgYXJjaGl2ZSB1bnRp bCB0aGUgcmVxdWVzdGVkIGVudHJ5IGlzCisgKiBmb3VuZC4gIElmIHRoZSBhcmNoaXZlIHN0cmVh bWVyIGlzIHJlYWRpbmcgYSBXQUwgZmlsZSBmcm9tIHRoZSBhcmNoaXZlIHRoYXQKKyAqIGlzIG5v dCBjdXJyZW50bHkgbmVlZGVkLCB0aGF0IGRhdGEgaXMgc3BpbGxlZCB0byBhIHRlbXBvcmFyeSBm aWxlIGZvciBsYXRlcgorICogcmV0cmlldmFsLgorICovCitzdGF0aWMgQXJjaGl2ZWRXQUxGaWxl ICoKK2dldF9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFtZSwgWExvZ0R1bXBQcml2 YXRlICpwcml2YXRlSW5mbywKKwkJCQkJICBpbnQgV2FsU2VnU3opCit7CisJQXJjaGl2ZWRXQUxG aWxlICplbnRyeSA9IE5VTEw7CisJRklMRQkgICAqd3JpdGVfZnAgPSBOVUxMOworCisJLyoKKwkg KiBTZWFyY2ggdGhlIGhhc2ggdGFibGUgZmlyc3QuIElmIHRoZSBlbnRyeSBpcyBmb3VuZCwgcmV0 dXJuIGl0LgorCSAqIE90aGVyd2lzZSwgdGhlIHJlcXVlc3RlZCBXQUwgZW50cnkgaGFzbid0IGJl ZW4gcmVhZCBmcm9tIHRoZSBhcmNoaXZlCisJICogeWV0OyBpbnZva2UgdGhlIGFyY2hpdmUgc3Ry ZWFtZXIgdG8gZmV0Y2ggaXQuCisJICovCisJd2hpbGUgKDEpCisJeworCQkvKgorCQkgKiBTZWFy Y2ggaGFzaCB0YWJsZS4KKwkJICoKKwkJICogV2UgcGVyZm9ybSB0aGUgc2VhcmNoIGluc2lkZSB0 aGUgbG9vcCBiZWNhdXNlIGEgc2luZ2xlIGl0ZXJhdGlvbiBvZgorCQkgKiB0aGUgYXJjaGl2ZSBy ZWFkZXIgbWF5IGRlY29tcHJlc3MgYW5kIGV4dHJhY3QgbXVsdGlwbGUgZmlsZXMgaW50bworCQkg KiB0aGUgaGFzaCB0YWJsZS4gT25lIG9mIHRoZXNlIG5ld2x5IGFkZGVkIGZpbGVzIGNvdWxkIGJl IHRoZSBvbmUgd2UKKwkJICogYXJlIHNlZWtpbmcuCisJCSAqLworCQllbnRyeSA9IEFyY2hpdmVk V0FMX2xvb2t1cChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwgZm5hbWUpOworCisJCWlm IChlbnRyeSAhPSBOVUxMKQorCQkJcmV0dXJuIGVudHJ5OworCisJCS8qCisJCSAqIFRoZSBXQUwg ZmlsZSBlbnRyeSBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkIG1heSBjaGFuZ2UgZHVyaW5nCisJ CSAqIGFyY2hpdmUgc3RyZWFtZXIgZXhlY3V0aW9uLiBUaGVyZWZvcmUsIG1haW50YWluIGEgbG9j YWwgdmFyaWFibGUgdG8KKwkJICogcmVmZXJlbmNlIHRoZSBwcmV2aW91cyBlbnRyeSwgZW5zdXJp bmcgdGhhdCBhbnkgcmVtYWluaW5nIGRhdGEgaW4KKwkJICogaXRzIGJ1ZmZlciBpcyBzdWNjZXNz ZnVsbHkgZmx1c2hlZCB0byB0aGUgdGVtcG9yYXJ5IGZpbGUgYmVmb3JlCisJCSAqIHN3aXRjaGlu ZyB0byB0aGUgbmV4dCBXQUwgZW50cnkuCisJCSAqLworCQllbnRyeSA9IHByaXZhdGVJbmZvLT5j dXJfZmlsZTsKKworCQkvKgorCQkgKiBGZXRjaCBtb3JlIGRhdGEgZWl0aGVyIHdoZW4gbm8gY3Vy cmVudCBmaWxlIGlzIGJlaW5nIHRyYWNrZWQgb3IKKwkJICogd2hlbiBpdHMgYnVmZmVyIGhhcyBi ZWVuIGZ1bGx5IGZsdXNoZWQgdG8gdGhlIHRlbXBvcmFyeSBmaWxlLgorCQkgKi8KKwkJaWYgKGVu dHJ5ID09IE5VTEwgfHwgZW50cnktPmJ1Zi0+bGVuID09IDApCisJCXsKKwkJCWlmIChyZWFkX2Fy Y2hpdmVfZmlsZShwcml2YXRlSW5mbywgUkVBRF9DSFVOS19TSVpFKSA9PSAwKQorCQkJCWJyZWFr OwkJCS8qIGFyY2hpdmUgZmlsZSBlbmRlZCAqLworCQl9CisKKwkJLyoKKwkJICogQXJjaGl2ZSBz dHJlYW1lciBpcyByZWFkaW5nIGEgbm9uLVdBTCBmaWxlIG9yIGFuIGlycmVsZXZhbnQgV0FMCisJ CSAqIGZpbGUuCisJCSAqLworCQlpZiAoZW50cnkgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJ CS8qCisJCSAqIEFyY2hpdmUgc3RyZWFtZXIgaXMgY3VycmVudGx5IHJlYWRpbmcgYSBmaWxlIHRo YXQgaXNuJ3QgdGhlIG9uZQorCQkgKiBhc2tlZCBmb3IsIGJ1dCBpdCdzIHJlcXVpcmVkIGluIHRo ZSBmdXR1cmUuIEl0IHNob3VsZCBiZSB3cml0dGVuIHRvCisJCSAqIGEgdGVtcG9yYXJ5IGxvY2F0 aW9uIGZvciByZXRyaWV2YWwgd2hlbiBuZWVkZWQuCisJCSAqLworCQlBc3NlcnQoc3RyY21wKGZu YW1lLCBlbnRyeS0+Zm5hbWUpICE9IDApOworCisJCS8qIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxl IGlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0ICovCisJCWlmICghZW50cnktPnNwaWxsZWQp CisJCXsKKwkJCXdyaXRlX2ZwID0gcHJlcGFyZV90bXBfd3JpdGUoZW50cnktPmZuYW1lKTsKKwkJ CWVudHJ5LT5zcGlsbGVkID0gdHJ1ZTsKKwkJfQorCisJCS8qIEZsdXNoIGRhdGEgZnJvbSB0aGUg YnVmZmVyIHRvIHRoZSBmaWxlICovCisJCXBlcmZvcm1fdG1wX3dyaXRlKGVudHJ5LT5mbmFtZSwg ZW50cnktPmJ1Ziwgd3JpdGVfZnApOworCQlyZXNldFN0cmluZ0luZm8oZW50cnktPmJ1Zik7CisK KwkJLyoKKwkJICogVGhlIGNoYW5nZSBpbiB0aGUgY3VycmVudCBzZWdtZW50IGVudHJ5IGluZGlj YXRlcyB0aGF0IHRoZSByZWFkaW5nCisJCSAqIG9mIHRoaXMgZmlsZSBoYXMgZW5kZWQuCisJCSAq LworCQlpZiAoZW50cnkgIT0gcHJpdmF0ZUluZm8tPmN1cl9maWxlICYmIHdyaXRlX2ZwICE9IE5V TEwpCisJCXsKKwkJCWZjbG9zZSh3cml0ZV9mcCk7CisJCQl3cml0ZV9mcCA9IE5VTEw7CisJCX0K Kwl9CisKKwkvKiBSZXF1ZXN0ZWQgV0FMIHNlZ21lbnQgbm90IGZvdW5kICovCisJcGdfZmF0YWwo ImNvdWxkIG5vdCBmaW5kIFdBTCBcIiVzXCIgaW4gYXJjaGl2ZSBcIiVzXCIiLAorCQkJIGZuYW1l LCBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lKTsKK30KKworLyoKKyAqIFJlYWRzIHRoZSBhcmNo aXZlIGZpbGUgYW5kIHBhc3NlcyBpdCB0byB0aGUgYXJjaGl2ZSBzdHJlYW1lciBmb3IKKyAqIGRl Y29tcHJlc3Npb24uCisgKi8KK3N0YXRpYyBpbnQKK3JlYWRfYXJjaGl2ZV9maWxlKFhMb2dEdW1w UHJpdmF0ZSAqcHJpdmF0ZUluZm8sIFNpemUgY291bnQpCit7CisJaW50CQkJcmM7CisKKwkvKiBU aGUgcmVhZCByZXF1ZXN0IG11c3Qgbm90IGV4Y2VlZCB0aGUgYWxsb2NhdGVkIGJ1ZmZlciBzaXpl LiAqLworCUFzc2VydChwcml2YXRlSW5mby0+YXJjaGl2ZV9yZWFkX2J1Zl9zaXplID49IGNvdW50 KTsKKworCXJjID0gcmVhZChwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCwgcHJpdmF0ZUluZm8tPmFy Y2hpdmVfcmVhZF9idWYsIGNvdW50KTsKKwlpZiAocmMgPCAwKQorCQlwZ19mYXRhbCgiY291bGQg bm90IHJlYWQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFt ZSk7CisKKwkvKgorCSAqIERlY29tcHJlc3MgKGlmIHJlcXVpcmVkKSwgYW5kIHRoZW4gcGFyc2Ug dGhlIHByZXZpb3VzbHkgcmVhZCBjb250ZW50cworCSAqIG9mIHRoZSB0YXIgZmlsZS4KKwkgKi8K KwlpZiAocmMgPiAwKQorCQlhc3RyZWFtZXJfY29udGVudChwcml2YXRlSW5mby0+YXJjaGl2ZV9z dHJlYW1lciwgTlVMTCwKKwkJCQkJCSAgcHJpdmF0ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYsIHJj LAorCQkJCQkJICBBU1RSRUFNRVJfVU5LTk9XTik7CisKKwlyZXR1cm4gcmM7Cit9CisKKy8qCisg KiBTZXQgdXAgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IHN0b3JlIFdBTCBz ZWdtZW50cy4KKyAqLworc3RhdGljIHZvaWQKK3NldHVwX3RtcHdhbF9kaXIoY29uc3QgY2hhciAq d2FsZGlyKQoreworCWNoYXIJICAgKnRlbXBsYXRlOworCisJLyoKKwkgKiBVc2UgdGhlIGRpcmVj dG9yeSBzcGVjaWZpZWQgYnkgdGhlIFRNUERJUiBlbnZpcm9ubWVudCB2YXJpYWJsZS4gSWYgaXQn cworCSAqIG5vdCBzZXQsIGZhbGwgYmFjayB0byB0aGUgcHJvdmlkZWQgV0FMIGRpcmVjdG9yeSB0 byBzdG9yZSBXQUwgZmlsZXMKKwkgKiB0ZW1wb3JhcmlseS4KKwkgKi8KKwl0ZW1wbGF0ZSA9IHBz cHJpbnRmKCIlcy93YWxkdW1wX3RtcC1YWFhYWFgiLAorCQkJCQkJZ2V0ZW52KCJUTVBESVIiKSA/ IGdldGVudigiVE1QRElSIikgOiB3YWxkaXIpOworCVRtcFdhbFNlZ0RpciA9IG1rZHRlbXAodGVt cGxhdGUpOworCisJaWYgKFRtcFdhbFNlZ0RpciA9PSBOVUxMKQorCQlwZ19mYXRhbCgiY291bGQg bm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHRlbXBsYXRlKTsKKworCWNhbm9uaWNh bGl6ZV9wYXRoKFRtcFdhbFNlZ0Rpcik7CisKKwlwZ19sb2dfZGVidWcoImNyZWF0ZWQgZGlyZWN0 b3J5IFwiJXNcIiIsIFRtcFdhbFNlZ0Rpcik7Cit9CisKKy8qCisgKiBSZW1vdmUgdGVtcG9yYXJ5 IGRpcmVjdG9yeSBhdCBleGl0LCBpZiBhbnkuCisgKi8KK3N0YXRpYyB2b2lkCitjbGVhbnVwX3Rt cHdhbF9kaXJfYXRleGl0KHZvaWQpCit7CisJcm10cmVlKFRtcFdhbFNlZ0RpciwgdHJ1ZSk7Cit9 CisKKy8qCisgKiBDcmVhdGUgYW4gZW1wdHkgcGxhY2Vob2xkZXIgZmlsZSBhbmQgcmV0dXJuIGl0 cyBoYW5kbGUuCisgKi8KK3N0YXRpYyBGSUxFICoKK3ByZXBhcmVfdG1wX3dyaXRlKGNvbnN0IGNo YXIgKmZuYW1lKQoreworCWNoYXIJCWZwYXRoW01BWFBHUEFUSF07CisJRklMRQkgICAqZmlsZTsK KworCXNucHJpbnRmKGZwYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIsIFRtcFdhbFNlZ0RpciwgZm5h bWUpOworCisJLyogQ3JlYXRlIGFuIGVtcHR5IHBsYWNlaG9sZGVyICovCisJZmlsZSA9IGZvcGVu KGZwYXRoLCBQR19CSU5BUllfVyk7CisJaWYgKGZpbGUgPT0gTlVMTCkKKwkJcGdfZmF0YWwoImNv dWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVtIiwgZnBhdGgpOworCisjaWZuZGVmIFdJTjMy CisJaWYgKGNobW9kKGZwYXRoLCBwZ19maWxlX2NyZWF0ZV9tb2RlKSkKKwkJcGdfZmF0YWwoImNv dWxkIG5vdCBzZXQgcGVybWlzc2lvbnMgb24gZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkgZnBhdGgp OworI2VuZGlmCisKKwlwZ19sb2dfZGVidWcoInNwaWxsaW5nIHRvIHRlbXBvcmFyeSBmaWxlIFwi JXNcIiIsIGZwYXRoKTsKKworCXJldHVybiBmaWxlOworfQorCisvKgorICogV3JpdGUgYnVmZmVy IGRhdGEgdG8gdGhlIGdpdmVuIGZpbGUgaGFuZGxlLgorICovCitzdGF0aWMgdm9pZAorcGVyZm9y bV90bXBfd3JpdGUoY29uc3QgY2hhciAqZm5hbWUsIFN0cmluZ0luZm8gYnVmLCBGSUxFICpmaWxl KQoreworCUFzc2VydChmaWxlKTsKKworCWVycm5vID0gMDsKKwlpZiAoYnVmLT5sZW4gPiAwICYm IGZ3cml0ZShidWYtPmRhdGEsIGJ1Zi0+bGVuLCAxLCBmaWxlKSAhPSAxKQorCXsKKwkJLyoKKwkJ ICogSWYgd3JpdGUgZGlkbid0IHNldCBlcnJubywgYXNzdW1lIHByb2JsZW0gaXMgbm8gZGlzayBz cGFjZQorCQkgKi8KKwkJaWYgKGVycm5vID09IDApCisJCQllcnJubyA9IEVOT1NQQzsKKwkJcGdf ZmF0YWwoImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXMvJXNcIjogJW0iLCBUbXBXYWxTZWdE aXIsIGZuYW1lKTsKKwl9Cit9CisKKy8qCisgKiBDcmVhdGUgYW4gYXN0cmVhbWVyIHRoYXQgY2Fu IHJlYWQgV0FMIGZyb20gdGFyIGZpbGUuCisgKi8KK3N0YXRpYyBhc3RyZWFtZXIgKgorYXN0cmVh bWVyX3dhbGR1bXBfbmV3KFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCit7CisJYXN0cmVh bWVyX3dhbGR1bXAgKnN0cmVhbWVyOworCisJc3RyZWFtZXIgPSBwYWxsb2MwX29iamVjdChhc3Ry ZWFtZXJfd2FsZHVtcCk7CisJKigoY29uc3QgYXN0cmVhbWVyX29wcyAqKikgJnN0cmVhbWVyLT5i YXNlLmJic19vcHMpID0KKwkJJmFzdHJlYW1lcl93YWxkdW1wX29wczsKKworCXN0cmVhbWVyLT5w cml2YXRlSW5mbyA9IHByaXZhdGVJbmZvOworCisJcmV0dXJuICZzdHJlYW1lci0+YmFzZTsKK30K KworLyoKKyAqIE1haW4gZW50cnkgcG9pbnQgb2YgdGhlIGFyY2hpdmUgc3RyZWFtZXIgZm9yIHJl YWRpbmcgV0FMIGRhdGEgZnJvbSBhIHRhcgorICogZmlsZS4gSWYgYSBtZW1iZXIgaXMgaWRlbnRp ZmllZCBhcyBhIHZhbGlkIFdBTCBmaWxlLCBhIGhhc2ggZW50cnkgaXMgY3JlYXRlZAorICogZm9y IGl0LCBhbmQgaXRzIGNvbnRlbnRzIGFyZSBjb3BpZWQgaW50byB0aGF0IGVudHJ5J3MgYnVmZmVy LCBtYWtpbmcgdGhlbQorICogYWNjZXNzaWJsZSB0byB0aGUgZGVjb2Rpbmcgcm91dGluZS4KKyAq Lworc3RhdGljIHZvaWQKK2FzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQoYXN0cmVhbWVyICpzdHJl YW1lciwgYXN0cmVhbWVyX21lbWJlciAqbWVtYmVyLAorCQkJCQkJICBjb25zdCBjaGFyICpkYXRh LCBpbnQgbGVuLAorCQkJCQkJICBhc3RyZWFtZXJfYXJjaGl2ZV9jb250ZXh0IGNvbnRleHQpCit7 CisJYXN0cmVhbWVyX3dhbGR1bXAgKm15c3RyZWFtZXIgPSAoYXN0cmVhbWVyX3dhbGR1bXAgKikg c3RyZWFtZXI7CisJWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyA9IG15c3RyZWFtZXItPnBy aXZhdGVJbmZvOworCisJQXNzZXJ0KGNvbnRleHQgIT0gQVNUUkVBTUVSX1VOS05PV04pOworCisJ c3dpdGNoIChjb250ZXh0KQorCXsKKwkJY2FzZSBBU1RSRUFNRVJfTUVNQkVSX0hFQURFUjoKKwkJ CXsKKwkJCQljaGFyCSAgICpmbmFtZSA9IE5VTEw7CisJCQkJQXJjaGl2ZWRXQUxGaWxlICplbnRy eTsKKwkJCQlib29sCQlmb3VuZDsKKworCQkJCXBnX2xvZ19kZWJ1ZygicmVhZGluZyBcIiVzXCIi LCBtZW1iZXItPnBhdGhuYW1lKTsKKworCQkJCWlmICghbWVtYmVyX2lzX3dhbF9maWxlKG15c3Ry ZWFtZXIsIG1lbWJlciwgJmZuYW1lKSkKKwkJCQkJYnJlYWs7CisKKwkJCQkvKgorCQkJCSAqIEZ1 cnRoZXIgY2hlY2tzIGFyZSBza2lwcGVkIGlmIGFueSBXQUwgZmlsZSBjYW4gYmUgcmVhZC4KKwkJ CQkgKiBUaGlzIHR5cGljYWxseSBvY2N1cnMgZHVyaW5nIGluaXRpYWwgdmVyaWZpY2F0aW9uLgor CQkJCSAqLworCQkJCWlmICghUkVBRF9BTllfV0FMKHByaXZhdGVJbmZvKSkKKwkJCQl7CisJCQkJ CVhMb2dTZWdObwlzZWdubzsKKwkJCQkJVGltZUxpbmVJRAl0aW1lbGluZTsKKworCQkJCQkvKgor CQkJCQkgKiBTa2lwIHRoZSBzZWdtZW50IGlmIHRoZSB0aW1lbGluZSBkb2VzIG5vdCBtYXRjaCwg aWYgaXQKKwkJCQkJICogZmFsbHMgb3V0c2lkZSB0aGUgY2FsbGVyLXNwZWNpZmllZCByYW5nZS4K KwkJCQkJICovCisJCQkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZ0aW1lbGluZSwgJnNlZ25v LCBwcml2YXRlSW5mby0+c2Vnc2l6ZSk7CisJCQkJCWlmIChwcml2YXRlSW5mby0+dGltZWxpbmUg IT0gdGltZWxpbmUgfHwKKwkJCQkJCXByaXZhdGVJbmZvLT5zdGFydF9zZWdubyA+IHNlZ25vIHx8 CisJCQkJCQlwcml2YXRlSW5mby0+ZW5kX3NlZ25vIDwgc2Vnbm8pCisJCQkJCXsKKwkJCQkJCXBm cmVlKGZuYW1lKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCisJCQkJZW50cnkgPSBB cmNoaXZlZFdBTF9pbnNlcnQocHJpdmF0ZUluZm8tPmFyY2hpdmVfd2FsX2h0YWIsCisJCQkJCQkJ CQkJICAgZm5hbWUsICZmb3VuZCk7CisKKwkJCQkvKgorCQkJCSAqIFNob3VsZG4ndCBoYXBwZW4s IGJ1dCBpZiBpdCBkb2VzLCBzaW1wbHkgaWdub3JlIHRoZQorCQkJCSAqIGR1cGxpY2F0ZSBXQUwg ZmlsZS4KKwkJCQkgKi8KKwkJCQlpZiAoZm91bmQpCisJCQkJeworCQkJCQlwZ19sb2dfd2Fybmlu ZygiaWdub3JpbmcgZHVwbGljYXRlIFdBTCBcIiVzXCIgZm91bmQgaW4gYXJjaGl2ZSBcIiVzXCIi LAorCQkJCQkJCQkgICBtZW1iZXItPnBhdGhuYW1lLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1l KTsKKwkJCQkJcGZyZWUoZm5hbWUpOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQllbnRyeS0+ YnVmID0gbWFrZVN0cmluZ0luZm8oKTsKKwkJCQllbnRyeS0+c3BpbGxlZCA9IGZhbHNlOworCQkJ CWVudHJ5LT5yZWFkX2xlbiA9IDA7CisJCQkJcHJpdmF0ZUluZm8tPmN1cl9maWxlID0gZW50cnk7 CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfQ09OVEVOVFM6CisJ CQlpZiAocHJpdmF0ZUluZm8tPmN1cl9maWxlKQorCQkJeworCQkJCWFwcGVuZEJpbmFyeVN0cmlu Z0luZm8ocHJpdmF0ZUluZm8tPmN1cl9maWxlLT5idWYsIGRhdGEsIGxlbik7CisJCQkJcHJpdmF0 ZUluZm8tPmN1cl9maWxlLT5yZWFkX2xlbiArPSBsZW47CisJCQl9CisJCQlicmVhazsKKworCQlj YXNlIEFTVFJFQU1FUl9NRU1CRVJfVFJBSUxFUjoKKworCQkJLyoKKwkJCSAqIEVuZCBvZiB0aGlz IHRhciBtZW1iZXI7IG1hcmsgY3VyX2ZpbGUgTlVMTCBzbyBzdWJzZXF1ZW50CisJCQkgKiBjb250 ZW50IGNhbGxiYWNrcyAoaWYgYW55KSBrbm93IG5vIFdBTCBmaWxlIGlzIGN1cnJlbnRseQorCQkJ ICogYWN0aXZlLgorCQkJICovCisJCQlwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPSBOVUxMOworCQkJ YnJlYWs7CisKKwkJY2FzZSBBU1RSRUFNRVJfQVJDSElWRV9UUkFJTEVSOgorCQkJYnJlYWs7CisK KwkJZGVmYXVsdDoKKwkJCS8qIFNob3VsZG4ndCBoYXBwZW4uICovCisJCQlwZ19mYXRhbCgidW5l eHBlY3RlZCBzdGF0ZSB3aGlsZSBwYXJzaW5nIHRhciBmaWxlIik7CisJfQorfQorCisvKgorICog RW5kLW9mLXN0cmVhbSBwcm9jZXNzaW5nIGZvciBhbiBhc3RyZWFtZXJfd2FsZHVtcCBzdHJlYW0u ICBUaGlzIGlzIGEKKyAqIHRlcm1pbmFsIHN0cmVhbWVyIHNvIGl0IG11c3QgaGF2ZSBubyBzdWNj ZXNzb3IuCisgKi8KK3N0YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9maW5hbGl6ZShhc3Ry ZWFtZXIgKnN0cmVhbWVyKQoreworCUFzc2VydChzdHJlYW1lci0+YmJzX25leHQgPT0gTlVMTCk7 Cit9CisKKy8qCisgKiBGcmVlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYW4gYXN0cmVhbWVyX3dh bGR1bXAgc3RyZWFtLgorICovCitzdGF0aWMgdm9pZAorYXN0cmVhbWVyX3dhbGR1bXBfZnJlZShh c3RyZWFtZXIgKnN0cmVhbWVyKQoreworCUFzc2VydChzdHJlYW1lci0+YmJzX25leHQgPT0gTlVM TCk7CisJcGZyZWUoc3RyZWFtZXIpOworfQorCisvKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBh cmNoaXZlIG1lbWJlciBuYW1lIG1hdGNoZXMgdGhlIFdBTCBuYW1pbmcgZm9ybWF0LiBJZgorICog c3VjY2Vzc2Z1bCwgaXQgYWxzbyBvdXRwdXRzIHRoZSBXQUwgc2VnbWVudCBuYW1lLgorICovCitz dGF0aWMgYm9vbAorbWVtYmVyX2lzX3dhbF9maWxlKGFzdHJlYW1lcl93YWxkdW1wICpteXN0cmVh bWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJICAgY2hhciAqKmZuYW1lKQorewor CWludAkJCXBhdGhsZW47CisJY2hhcgkJcGF0aG5hbWVbTUFYUEdQQVRIXTsKKwljaGFyCSAgICpm aWxlbmFtZTsKKworCS8qIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gbm9ybWFsIGZpbGVzICov CisJaWYgKG1lbWJlci0+aXNfZGlyZWN0b3J5IHx8IG1lbWJlci0+aXNfbGluaykKKwkJcmV0dXJu IGZhbHNlOworCisJaWYgKHN0cmxlbihtZW1iZXItPnBhdGhuYW1lKSA8IFhMT0dfRk5BTUVfTEVO KQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIEZvciBhIGNvcnJlY3QgY29tcGFyaXNvbiwg d2UgbXVzdCByZW1vdmUgYW55ICcuJyBvciAnLi4nIGNvbXBvbmVudHMKKwkgKiBmcm9tIHRoZSBt ZW1iZXIgcGF0aG5hbWUuIFNpbWlsYXIgdG8gbWVtYmVyX3ZlcmlmeV9oZWFkZXIoKSwgd2UgcHJl cGVuZAorCSAqICcuLycgdG8gdGhlIHBhdGggc28gdGhhdCBjYW5vbmljYWxpemVfcGF0aCgpIGNh biBwcm9wZXJseSByZXNvbHZlIGFuZAorCSAqIHN0cmlwIHRoZXNlIHJlZmVyZW5jZXMgZnJvbSB0 aGUgdGFyIG1lbWJlciBuYW1lLgorCSAqLworCXNucHJpbnRmKHBhdGhuYW1lLCBNQVhQR1BBVEgs ICIuLyVzIiwgbWVtYmVyLT5wYXRobmFtZSk7CisJY2Fub25pY2FsaXplX3BhdGgocGF0aG5hbWUp OworCXBhdGhsZW4gPSBzdHJsZW4ocGF0aG5hbWUpOworCisJLyogV0FMIGZpbGVzIGZyb20gdGhl IHRvcC1sZXZlbCBvciBwZ193YWwgZGlyZWN0b3J5IHdpbGwgYmUgZGVjb2RlZCAqLworCWlmIChw YXRobGVuID4gWExPR19GTkFNRV9MRU4gJiYKKwkJc3RybmNtcChwYXRobmFtZSwgWExPR0RJUiwg c3RybGVuKFhMT0dESVIpKSAhPSAwKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBXQUwgZmlsZSBt YXkgYXBwZWFyIHdpdGggYSBmdWxsIHBhdGggKGUuZy4sIHBnX3dhbC88bmFtZT4pICovCisJZmls ZW5hbWUgPSBwYXRobmFtZSArIChwYXRobGVuIC0gWExPR19GTkFNRV9MRU4pOworCWlmICghSXNY TG9nRmlsZU5hbWUoZmlsZW5hbWUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkqZm5hbWUgPSBwbnN0 cmR1cChmaWxlbmFtZSwgWExPR19GTkFNRV9MRU4pOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8q CisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFdBTCBmaWxlIGhhc2ggdGFibGUuCisgKi8KK3N0YXRp YyB1aW50MzIKK2hhc2hfc3RyaW5nX3BvaW50ZXIoY29uc3QgY2hhciAqcykKK3sKKwl1bnNpZ25l ZCBjaGFyICpzcyA9ICh1bnNpZ25lZCBjaGFyICopIHM7CisKKwlyZXR1cm4gaGFzaF9ieXRlcyhz cywgc3RybGVuKHMpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5i dWlsZCBiL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZAppbmRleCA2MzNhOTg3NGJiNS4u NTI5NmYyMWI4MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZAor KysgYi9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKQEAgLTEsNiArMSw3IEBACiAjIENv cHlyaWdodCAoYykgMjAyMi0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAogCiBwZ193YWxkdW1wX3NvdXJjZXMgPSBmaWxlcygKKyAgJ2FyY2hpdmVfd2FsZHVtcC5jJywK ICAgJ2NvbXBhdC5jJywKICAgJ3BnX3dhbGR1bXAuYycsCiAgICdybWdyZGVzYy5jJywKQEAgLTE4 LDcgKzE5LDcgQEAgZW5kaWYKIAogcGdfd2FsZHVtcCA9IGV4ZWN1dGFibGUoJ3BnX3dhbGR1bXAn LAogICBwZ193YWxkdW1wX3NvdXJjZXMsCi0gIGRlcGVuZGVuY2llczogW2Zyb250ZW5kX2NvZGUs IGx6NCwgenN0ZF0sCisgIGRlcGVuZGVuY2llczogW2Zyb250ZW5kX2NvZGUsIGxpYnBxLCBsejQs IHpzdGRdLAogICBjX2FyZ3M6IFsnLURGUk9OVEVORCddLCAjIG5lZWRlZCBmb3IgeGxvZ3JlYWRl ciBldCBhbAogICBrd2FyZ3M6IGRlZmF1bHRfYmluX2FyZ3MsCiApCkBAIC0yOSw2ICszMCw3IEBA IHRlc3RzICs9IHsKICAgJ3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICdiZCc6 IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCiAgICd0YXAnOiB7CisgICAgJ2Vudic6IHsnVEFS JzogdGFyLmZvdW5kKCkgPyB0YXIuZnVsbF9wYXRoKCkgOiAnJ30sCiAgICAgJ3Rlc3RzJzogWwog ICAgICAgJ3QvMDAxX2Jhc2ljLnBsJywKICAgICAgICd0LzAwMl9zYXZlX2Z1bGxwYWdlLnBsJywK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IDVkMzFiMTVkYmQ4Li4wZjZkMjM3MjA3NiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYworKysgYi9zcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5jCkBAIC0xNzYsNyArMTc2LDcgQEAgc3BsaXRfcGF0aChjb25z dCBjaGFyICpwYXRoLCBjaGFyICoqZGlyLCBjaGFyICoqZm5hbWUpCiAgKgogICogcmV0dXJuIGEg cmVhZCBvbmx5IGZkCiAgKi8KLXN0YXRpYyBpbnQKK2ludAogb3Blbl9maWxlX2luX2RpcmVjdG9y eShjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKmZuYW1lKQogewogCWludAkJCWZk ID0gLTE7CkBAIC0zMjcsOCArMzI3LDggQEAgaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeShjaGFy ICpkaXJlY3RvcnksIGNoYXIgKmZuYW1lLCBpbnQgKldhbFNlZ1N6KQogfQogCiAvKgotICogUmV0 dXJucyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgZGF0YSB0byBiZSByZWFkLiBSZXR1cm5zIC0x IGlmIHRoZSBlbmQKLSAqIHBvaW50IGhhcyBhbHJlYWR5IGJlZW4gcmVhY2hlZC4KKyAqIFJldHVy bnMgdGhlIG51bWJlciBvZiBieXRlcyB0byByZWFkIGZvciB0aGUgZ2l2ZW4gcGFnZS4gIFJldHVy bnMgLTEgaWYKKyAqIHRoZSByZXF1ZXN0ZWQgcmFuZ2UgaGFzIGFscmVhZHkgYmVlbiByZWFjaGVk IG9yIGV4Y2VlZGVkLgogICovCiBzdGF0aWMgaW5saW5lIGludAogcmVxdWlyZWRfcmVhZF9sZW4o WExvZ0R1bXBQcml2YXRlICpwcml2YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsCkBAIC00 NDAsNiArNDQwLDEwNiBAQCBXQUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwg WExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAogCXJldHVybiBjb3VudDsKIH0K IAorLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+c2VnbWVudF9vcGVuIGNh bGxiYWNrIHRvIHN1cHBvcnQgZHVtcGluZyBXQUwKKyAqIGZpbGVzIGZyb20gdGFyIGFyY2hpdmVz LiAgU2VnbWVudCB0cmFja2luZyBpcyBoYW5kbGVkIGJ5CisgKiBUYXJXQUxEdW1wUmVhZFBhZ2Us IHNvIG5vIGFjdGlvbiBpcyBuZWVkZWQgaGVyZS4KKyAqLworc3RhdGljIHZvaWQKK1RhcldBTER1 bXBPcGVuU2VnbWVudChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nU2VnTm8gbmV4dFNlZ05v LAorCQkJCQkgIFRpbWVMaW5lSUQgKnRsaV9wKQoreworCS8qIE5vIGFjdGlvbiBuZWVkZWQgKi8K K30KKworLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+c2VnbWVudF9jbG9z ZSBjYWxsYmFjayB0byBzdXBwb3J0IGR1bXBpbmcKKyAqIFdBTCBmaWxlcyBmcm9tIHRhciBhcmNo aXZlcy4gIFNlZ21lbnQgdHJhY2tpbmcgaXMgaGFuZGxlZCBieQorICogVGFyV0FMRHVtcFJlYWRQ YWdlLCBzbyBubyBhY3Rpb24gaXMgbmVlZGVkIGhlcmUuCisgKi8KK3N0YXRpYyB2b2lkCitUYXJX QUxEdW1wQ2xvc2VTZWdtZW50KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUpCit7CisJLyogTm8gYWN0 aW9uIG5lZWRlZCAqLworfQorCisvKgorICogcGdfd2FsZHVtcCdzIFhMb2dSZWFkZXJSb3V0aW5l LT5wYWdlX3JlYWQgY2FsbGJhY2sgdG8gc3VwcG9ydCBkdW1waW5nIFdBTAorICogZmlsZXMgZnJv bSB0YXIgYXJjaGl2ZXMuCisgKi8KK3N0YXRpYyBpbnQKK1RhcldBTER1bXBSZWFkUGFnZShYTG9n UmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsIGludCByZXFMZW4s CisJCQkJICAgWExvZ1JlY1B0ciB0YXJnZXRQdHIsIGNoYXIgKnJlYWRCdWZmKQoreworCVhMb2dE dW1wUHJpdmF0ZSAqcHJpdmF0ZSA9IHN0YXRlLT5wcml2YXRlX2RhdGE7CisJaW50CQkJY291bnQg PSByZXF1aXJlZF9yZWFkX2xlbihwcml2YXRlLCB0YXJnZXRQYWdlUHRyLCByZXFMZW4pOworCWlu dAkJCVdhbFNlZ1N6ID0gc3RhdGUtPnNlZ2N4dC53c19zZWdzaXplOworCVhMb2dTZWdObwljdXJT ZWdObzsKKworCS8qIEJhaWwgb3V0IGlmIHRoZSBjb3VudCB0byBiZSByZWFkIGlzIG5vdCB2YWxp ZCAqLworCWlmIChjb3VudCA8IDApCisJCXJldHVybiAtMTsKKworCS8qCisJICogSWYgdGhlIHRh cmdldCBwYWdlIGlzIGluIGEgZGlmZmVyZW50IHNlZ21lbnQsIGZyZWUgdGhlIGJ1ZmZlciBhbmQv b3IKKwkgKiB0ZW1wb3JhcnkgZmlsZSBkaXNrIHNwYWNlIG9jY3VwaWVkIGJ5IHRoZSBwcmV2aW91 cyBzZWdtZW50J3MgZGF0YS4KKwkgKiBTaW5jZSBwZ193YWxkdW1wIG5ldmVyIHJlcXVlc3RzIHRo ZSBzYW1lIFdBTCBieXRlcyB0d2ljZSwgbW92aW5nIHRvIGEKKwkgKiBuZXcgc2VnbWVudCBpbXBs aWVzIHRoZSBwcmV2aW91cyBidWZmZXIncyBkYXRhIGFuZCB0aGF0IHNlZ21lbnQgd2lsbAorCSAq IG5vdCBiZSBuZWVkZWQgYWdhaW4uCisJICoKKwkgKiBBZnRlcndhcmQsIGNoZWNrIGZvciB0aGUg bmV4dCByZXF1aXJlZCBXQUwgc2VnbWVudCdzIHBoeXNpY2FsIGV4aXN0ZW5jZQorCSAqIGluIHRo ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZpcnN0IGJlZm9yZSBpbnZva2luZyB0aGUgYXJjaGl2ZSBz dHJlYW1lci4KKwkgKi8KKwljdXJTZWdObyA9IHN0YXRlLT5zZWcud3Nfc2Vnbm87CisJaWYgKCFY TEJ5dGVJblNlZyh0YXJnZXRQYWdlUHRyLCBjdXJTZWdObywgV2FsU2VnU3opKQorCXsKKwkJY2hh cgkJZm5hbWVbTUFYRk5BTUVMRU5dOworCQlYTG9nU2VnTm8JbmV4dFNlZ05vOworCisJCS8qCisJ CSAqIENhbGN1bGF0ZSB0aGUgbmV4dCBXQUwgc2VnbWVudCB0byBiZSBkZWNvZGVkIGZyb20gdGhl IGdpdmVuIHBhZ2UKKwkJICogcG9pbnRlci4KKwkJICovCisJCVhMQnl0ZVRvU2VnKHRhcmdldFBh Z2VQdHIsIG5leHRTZWdObywgV2FsU2VnU3opOworCQlzdGF0ZS0+c2VnLndzX3RsaSA9IHByaXZh dGUtPnRpbWVsaW5lOworCQlzdGF0ZS0+c2VnLndzX3NlZ25vID0gbmV4dFNlZ05vOworCisJCS8q IENsb3NlIHRoZSBXQUwgc2VnbWVudCBmaWxlIGlmIGl0IGlzIGN1cnJlbnRseSBvcGVuICovCisJ CWlmIChzdGF0ZS0+c2VnLndzX2ZpbGUgPj0gMCkKKwkJeworCQkJY2xvc2Uoc3RhdGUtPnNlZy53 c19maWxlKTsKKwkJCXN0YXRlLT5zZWcud3NfZmlsZSA9IC0xOworCQl9CisKKwkJLyoKKwkJICog SWYgaW4gcHJlLXJlYWRpbmcgbW9kZSAocHJpb3IgdG8gYWN0dWFsIGRlY29kaW5nKSwgZG8gbm90 IGRlbGV0ZQorCQkgKiBhbnkgZW50cmllcyB0aGF0IG1pZ2h0IGJlIHJlcXVlc3RlZCBhZ2FpbiBv bmNlIHRoZSBkZWNvZGluZyBsb29wCisJCSAqIHN0YXJ0cy4gRm9yIG1vcmUgZGV0YWlscywgc2Vl IHRoZSBjb21tZW50cyBpbgorCQkgKiByZWFkX2FyY2hpdmVfd2FsX3BhZ2UoKS4KKwkJICovCisJ CWlmIChwcml2YXRlLT5kZWNvZGluZ19zdGFydGVkICYmIGN1clNlZ05vIDwgbmV4dFNlZ05vKQor CQl7CisJCQlYTG9nRmlsZU5hbWUoZm5hbWUsIHN0YXRlLT5zZWcud3NfdGxpLCBjdXJTZWdObywg V2FsU2VnU3opOworCQkJZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShmbmFtZSwgcHJpdmF0ZSk7CisJ CX0KKworCQkvKgorCQkgKiBJZiB0aGUgbmV4dCBzZWdtZW50IGV4aXN0cywgb3BlbiBpdCBhbmQg Y29udGludWUgcmVhZGluZyBmcm9tIHRoZXJlCisJCSAqLworCQlYTG9nRmlsZU5hbWUoZm5hbWUs IHN0YXRlLT5zZWcud3NfdGxpLCBuZXh0U2VnTm8sIFdhbFNlZ1N6KTsKKwkJc3RhdGUtPnNlZy53 c19maWxlID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeShUbXBXYWxTZWdEaXIsIGZuYW1lKTsKKwl9 CisKKwkvKiBDb250aW51ZSByZWFkaW5nIGZyb20gdGhlIG9wZW4gV0FMIHNlZ21lbnQsIGlmIGFu eSAqLworCWlmIChzdGF0ZS0+c2VnLndzX2ZpbGUgPj0gMCkKKwkJcmV0dXJuIFdBTER1bXBSZWFk UGFnZShzdGF0ZSwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHRhcmdldFB0ciwKKwkJCQkJCQkgICBy ZWFkQnVmZik7CisKKwkvKiBPdGhlcndpc2UsIHJlYWQgdGhlIFdBTCBwYWdlIGZyb20gdGhlIGFy Y2hpdmUgc3RyZWFtZXIgKi8KKwlyZXR1cm4gcmVhZF9hcmNoaXZlX3dhbF9wYWdlKHByaXZhdGUs IHRhcmdldFBhZ2VQdHIsIGNvdW50LCByZWFkQnVmZiwKKwkJCQkJCQkJIFdhbFNlZ1N6KTsKK30K KwogLyoKICAqIEJvb2xlYW4gdG8gcmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIFdBTCByZWNvcmQg bWF0Y2hlcyBhIHNwZWNpZmljIHJlbGF0aW9uCiAgKiBhbmQgb3B0aW9uYWxseSBibG9jay4KQEAg LTc3Nyw4ICs4NzcsOCBAQCB1c2FnZSh2b2lkKQogCXByaW50ZihfKCIgIC1GLCAtLWZvcms9Rk9S SyAgICAgICAgb25seSBzaG93IHJlY29yZHMgdGhhdCBtb2RpZnkgYmxvY2tzIGluIGZvcmsgRk9S SztcbiIKIAkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIG5hbWVzIGFyZSBtYWlu LCBmc20sIHZtLCBpbml0XG4iKSk7CiAJcHJpbnRmKF8oIiAgLW4sIC0tbGltaXQ9TiAgICAgICAg ICBudW1iZXIgb2YgcmVjb3JkcyB0byBkaXNwbGF5XG4iKSk7Ci0JcHJpbnRmKF8oIiAgLXAsIC0t cGF0aD1QQVRIICAgICAgICBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gZmluZCBXQUwgc2VnbWVudCBm aWxlcyBvciBhXG4iCi0JCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0 aCBhIC4vcGdfd2FsIHRoYXQgY29udGFpbnMgc3VjaCBmaWxlc1xuIgorCXByaW50ZihfKCIgIC1w LCAtLXBhdGg9UEFUSCAgICAgICAgYSB0YXIgYXJjaGl2ZSBvciBhIGRpcmVjdG9yeSBpbiB3aGlj aCB0byBmaW5kIFdBTCBzZWdtZW50IGZpbGVzIG9yXG4iCisJCQkgIiAgICAgICAgICAgICAgICAg ICAgICAgICBhIGRpcmVjdG9yeSB3aXRoIGEgcGdfd2FsIHN1YmRpcmVjdG9yeSBjb250YWluaW5n IHN1Y2ggZmlsZXNcbiIKIAkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiBj dXJyZW50IGRpcmVjdG9yeSwgLi9wZ193YWwsICRQR0RBVEEvcGdfd2FsKVxuIikpOwogCXByaW50 ZihfKCIgIC1xLCAtLXF1aWV0ICAgICAgICAgICAgZG8gbm90IHByaW50IGFueSBvdXRwdXQsIGV4 Y2VwdCBmb3IgZXJyb3JzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXIsIC0tcm1ncj1STUdSICAgICAg ICBvbmx5IHNob3cgcmVjb3JkcyBnZW5lcmF0ZWQgYnkgcmVzb3VyY2UgbWFuYWdlciBSTUdSO1xu IgpAQCAtODEwLDcgKzkxMCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCVhMb2dS ZWNvcmQgKnJlY29yZDsKIAlYTG9nUmVjUHRyCWZpcnN0X3JlY29yZDsKIAljaGFyCSAgICp3YWxk aXIgPSBOVUxMOworCWNoYXIJICAgKndhbHBhdGggPSBOVUxMOwogCWNoYXIJICAgKmVycm9ybXNn OworCXBnX2NvbXByZXNzX2FsZ29yaXRobSBjb21wcmVzc2lvbiA9IFBHX0NPTVBSRVNTSU9OX05P TkU7CiAKIAlzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsKIAkJeyJia3At ZGV0YWlscyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnYid9LApAQCAtODY4LDYgKzk3MCwxMCBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlwcml2YXRlLnN0YXJ0cHRyID0gSW52YWxpZFhM b2dSZWNQdHI7CiAJcHJpdmF0ZS5lbmRwdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlwcml2YXRl LmVuZHB0cl9yZWFjaGVkID0gZmFsc2U7CisJcHJpdmF0ZS5kZWNvZGluZ19zdGFydGVkID0gZmFs c2U7CisJcHJpdmF0ZS5hcmNoaXZlX25hbWUgPSBOVUxMOworCXByaXZhdGUuc3RhcnRfc2Vnbm8g PSAwOworCXByaXZhdGUuZW5kX3NlZ25vID0gVUlOVDY0X01BWDsKIAogCWNvbmZpZy5xdWlldCA9 IGZhbHNlOwogCWNvbmZpZy5ia3BfZGV0YWlscyA9IGZhbHNlOwpAQCAtOTQzLDcgKzEwNDksNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNl ICdwJzoKLQkJCQl3YWxkaXIgPSBwZ19zdHJkdXAob3B0YXJnKTsKKwkJCQl3YWxwYXRoID0gcGdf c3RyZHVwKG9wdGFyZyk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdxJzoKIAkJCQljb25maWcucXVp ZXQgPSB0cnVlOwpAQCAtMTEwNywxNCArMTIxMywyNSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAkJZ290byBiYWRfYXJndW1lbnQ7CiAJfQogCi0JaWYgKHdhbGRpciAhPSBOVUxMKQor CWlmICh3YWxwYXRoICE9IE5VTEwpCiAJeworCQkvKiB2YWxpZGF0ZSBwYXRoIHBvaW50cyB0byB0 YXIgYXJjaGl2ZSAqLworCQlpZiAocGFyc2VfdGFyX2NvbXByZXNzX2FsZ29yaXRobSh3YWxwYXRo LCAmY29tcHJlc3Npb24pKQorCQl7CisJCQljaGFyCSAgICpmbmFtZSA9IE5VTEw7CisKKwkJCXNw bGl0X3BhdGgod2FscGF0aCwgJndhbGRpciwgJmZuYW1lKTsKKworCQkJcHJpdmF0ZS5hcmNoaXZl X25hbWUgPSBmbmFtZTsKKwkJfQogCQkvKiB2YWxpZGF0ZSBwYXRoIHBvaW50cyB0byBkaXJlY3Rv cnkgKi8KLQkJaWYgKCF2ZXJpZnlfZGlyZWN0b3J5KHdhbGRpcikpCisJCWVsc2UgaWYgKCF2ZXJp ZnlfZGlyZWN0b3J5KHdhbHBhdGgpKQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBv cGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgd2FsZGlyKTsKKwkJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCB3YWxwYXRoKTsKIAkJCWdvdG8gYmFk X2FyZ3VtZW50OwogCQl9CisJCWVsc2UKKwkJCXdhbGRpciA9IHdhbHBhdGg7CiAJfQogCiAJaWYg KGNvbmZpZy5zYXZlX2Z1bGxwYWdlX3BhdGggIT0gTlVMTCkKQEAgLTExMjgsNiArMTI0NSwxNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJaW50CQkJZmQ7CiAJCVhMb2dTZWdObwlz ZWdubzsKIAorCQkvKgorCQkgKiBJZiBhIHRhciBhcmNoaXZlIGlzIHBhc3NlZCB1c2luZyB0aGUg LS1wYXRoIG9wdGlvbiwgYWxsIG90aGVyCisJCSAqIGFyZ3VtZW50cyBiZWNvbWUgdW5uZWNlc3Nh cnkuCisJCSAqLworCQlpZiAocHJpdmF0ZS5hcmNoaXZlX25hbWUpCisJCXsKKwkJCXBnX2xvZ19l cnJvcigidW5uZWNlc3NhcnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBzcGVjaWZpZWQgd2l0aCB0 YXIgYXJjaGl2ZSAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCQkgYXJndltvcHRpbmRdKTsKKwkJ CWdvdG8gYmFkX2FyZ3VtZW50OworCQl9CisKIAkJc3BsaXRfcGF0aChhcmd2W29wdGluZF0sICZk aXJlY3RvcnksICZmbmFtZSk7CiAKIAkJaWYgKHdhbGRpciA9PSBOVUxMICYmIGRpcmVjdG9yeSAh PSBOVUxMKQpAQCAtMTEzOCw2OSArMTI2Niw3NSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAkJCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCB3 YWxkaXIpOwogCQl9CiAKLQkJd2FsZGlyID0gaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxk aXIsIGZuYW1lLCAmcHJpdmF0ZS5zZWdzaXplKTsKLQkJZmQgPSBvcGVuX2ZpbGVfaW5fZGlyZWN0 b3J5KHdhbGRpciwgZm5hbWUpOwotCQlpZiAoZmQgPCAwKQotCQkJcGdfZmF0YWwoImNvdWxkIG5v dCBvcGVuIGZpbGUgXCIlc1wiIiwgZm5hbWUpOwotCQljbG9zZShmZCk7Ci0KLQkJLyogcGFyc2Ug cG9zaXRpb24gZnJvbSBmaWxlICovCi0JCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRl LnRpbWVsaW5lLCAmc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSk7Ci0KLQkJaWYgKCFYTG9nUmVjUHRy SXNWYWxpZChwcml2YXRlLnN0YXJ0cHRyKSkKLQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNl Z25vLCAwLCBwcml2YXRlLnNlZ3NpemUsIHByaXZhdGUuc3RhcnRwdHIpOwotCQllbHNlIGlmICgh WExCeXRlSW5TZWcocHJpdmF0ZS5zdGFydHB0ciwgc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSkpCisJ CWlmIChmbmFtZSAhPSBOVUxMICYmIHBhcnNlX3Rhcl9jb21wcmVzc19hbGdvcml0aG0oZm5hbWUs ICZjb21wcmVzc2lvbikpCiAJCXsKLQkJCXBnX2xvZ19lcnJvcigic3RhcnQgV0FMIGxvY2F0aW9u ICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxlIFwiJXNcIiIsCi0JCQkJCQkgTFNOX0ZPUk1BVF9B UkdTKHByaXZhdGUuc3RhcnRwdHIpLAotCQkJCQkJIGZuYW1lKTsKLQkJCWdvdG8gYmFkX2FyZ3Vt ZW50OworCQkJcHJpdmF0ZS5hcmNoaXZlX25hbWUgPSBmbmFtZTsKIAkJfQotCi0JCS8qIG5vIHNl Y29uZCBmaWxlIHNwZWNpZmllZCwgc2V0IGVuZCBwb3NpdGlvbiAqLwotCQlpZiAoIShvcHRpbmQg KyAxIDwgYXJnYykgJiYgIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJCVhM b2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXplLCBwcml2 YXRlLmVuZHB0cik7Ci0KLQkJLyogcGFyc2UgRU5EU0VHIGlmIHBhc3NlZCAqLwotCQlpZiAob3B0 aW5kICsgMSA8IGFyZ2MpCisJCWVsc2UKIAkJewotCQkJWExvZ1NlZ05vCWVuZHNlZ25vOwotCi0J CQkvKiBpZ25vcmUgZGlyZWN0b3J5LCBhbHJlYWR5IGhhdmUgdGhhdCAqLwotCQkJc3BsaXRfcGF0 aChhcmd2W29wdGluZCArIDFdLCAmZGlyZWN0b3J5LCAmZm5hbWUpOwotCisJCQl3YWxkaXIgPSBp ZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUsICZwcml2YXRlLnNlZ3NpemUp OwogCQkJZmQgPSBvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUpOwogCQkJaWYg KGZkIDwgMCkKIAkJCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBmbmFt ZSk7CiAJCQljbG9zZShmZCk7CiAKIAkJCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwot CQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZlbmRzZWdubywg cHJpdmF0ZS5zZWdzaXplKTsKKwkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRp bWVsaW5lLCAmc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSk7CiAKLQkJCWlmIChlbmRzZWdubyA8IHNl Z25vKQotCQkJCXBnX2ZhdGFsKCJFTkRTRUcgJXMgaXMgYmVmb3JlIFNUQVJUU0VHICVzIiwKLQkJ CQkJCSBhcmd2W29wdGluZCArIDFdLCBhcmd2W29wdGluZF0pOworCQkJaWYgKCFYTG9nUmVjUHRy SXNWYWxpZChwcml2YXRlLnN0YXJ0cHRyKSkKKwkJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihz ZWdubywgMCwgcHJpdmF0ZS5zZWdzaXplLCBwcml2YXRlLnN0YXJ0cHRyKTsKKwkJCWVsc2UgaWYg KCFYTEJ5dGVJblNlZyhwcml2YXRlLnN0YXJ0cHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSkK KwkJCXsKKwkJCQlwZ19sb2dfZXJyb3IoInN0YXJ0IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5v dCBpbnNpZGUgZmlsZSBcIiVzXCIiLAorCQkJCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5z dGFydHB0ciksCisJCQkJCQkJIGZuYW1lKTsKKwkJCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJCX0K IAotCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCi0JCQkJWExvZ1Nl Z05vT2Zmc2V0VG9SZWNQdHIoZW5kc2Vnbm8gKyAxLCAwLCBwcml2YXRlLnNlZ3NpemUsCi0JCQkJ CQkJCQkJcHJpdmF0ZS5lbmRwdHIpOworCQkJLyogbm8gc2Vjb25kIGZpbGUgc3BlY2lmaWVkLCBz ZXQgZW5kIHBvc2l0aW9uICovCisJCQlpZiAoIShvcHRpbmQgKyAxIDwgYXJnYykgJiYgIVhMb2dS ZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKKwkJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0 cihzZWdubyArIDEsIDAsIHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0ZS5lbmRwdHIpOwogCi0JCQkv KiBzZXQgc2Vnbm8gdG8gZW5kc2Vnbm8gZm9yIGNoZWNrIG9mIC0tZW5kICovCi0JCQlzZWdubyA9 IGVuZHNlZ25vOwotCQl9CisJCQkvKiBwYXJzZSBFTkRTRUcgaWYgcGFzc2VkICovCisJCQlpZiAo b3B0aW5kICsgMSA8IGFyZ2MpCisJCQl7CisJCQkJWExvZ1NlZ05vCWVuZHNlZ25vOwogCisJCQkJ LyogaWdub3JlIGRpcmVjdG9yeSwgYWxyZWFkeSBoYXZlIHRoYXQgKi8KKwkJCQlzcGxpdF9wYXRo KGFyZ3Zbb3B0aW5kICsgMV0sICZkaXJlY3RvcnksICZmbmFtZSk7CiAKLQkJaWYgKCFYTEJ5dGVJ blNlZyhwcml2YXRlLmVuZHB0ciwgc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSkgJiYKLQkJCXByaXZh dGUuZW5kcHRyICE9IChzZWdubyArIDEpICogcHJpdmF0ZS5zZWdzaXplKQotCQl7Ci0JCQlwZ19s b2dfZXJyb3IoImVuZCBXQUwgbG9jYXRpb24gJVgvJTA4WCBpcyBub3QgaW5zaWRlIGZpbGUgXCIl c1wiIiwKLQkJCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5lbmRwdHIpLAotCQkJCQkJIGFy Z3ZbYXJnYyAtIDFdKTsKLQkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQkJCWZkID0gb3Blbl9maWxl X2luX2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lKTsKKwkJCQlpZiAoZmQgPCAwKQorCQkJCQlwZ19m YXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBmbmFtZSk7CisJCQkJY2xvc2UoZmQp OworCisJCQkJLyogcGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCisJCQkJWExvZ0Zyb21GaWxl TmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZlbmRzZWdubywgcHJpdmF0ZS5zZWdzaXpl KTsKKworCQkJCWlmIChlbmRzZWdubyA8IHNlZ25vKQorCQkJCQlwZ19mYXRhbCgiRU5EU0VHICVz IGlzIGJlZm9yZSBTVEFSVFNFRyAlcyIsCisJCQkJCQkJIGFyZ3Zbb3B0aW5kICsgMV0sIGFyZ3Zb b3B0aW5kXSk7CisKKwkJCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkK KwkJCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoZW5kc2Vnbm8gKyAxLCAwLCBwcml2YXRlLnNl Z3NpemUsCisJCQkJCQkJCQkJCXByaXZhdGUuZW5kcHRyKTsKKworCQkJCS8qIHNldCBzZWdubyB0 byBlbmRzZWdubyBmb3IgY2hlY2sgb2YgLS1lbmQgKi8KKwkJCQlzZWdubyA9IGVuZHNlZ25vOwor CQkJfQorCisJCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5kcHRyLCBzZWdubywgcHJpdmF0 ZS5zZWdzaXplKSAmJgorCQkJCXByaXZhdGUuZW5kcHRyICE9IChzZWdubyArIDEpICogcHJpdmF0 ZS5zZWdzaXplKQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigiZW5kIFdBTCBsb2NhdGlvbiAlWC8l MDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAorCQkJCQkJCSBMU05fRk9STUFUX0FSR1Mo cHJpdmF0ZS5lbmRwdHIpLAorCQkJCQkJCSBhcmd2W2FyZ2MgLSAxXSk7CisJCQkJZ290byBiYWRf YXJndW1lbnQ7CisJCQl9CiAJCX0KIAl9Ci0JZWxzZQotCQl3YWxkaXIgPSBpZGVudGlmeV90YXJn ZXRfZGlyZWN0b3J5KHdhbGRpciwgTlVMTCwgJnByaXZhdGUuc2Vnc2l6ZSk7CisJZWxzZSBpZiAo IXByaXZhdGUuYXJjaGl2ZV9uYW1lKQorCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0 b3J5KHdhbHBhdGgsIE5VTEwsICZwcml2YXRlLnNlZ3NpemUpOwogCiAJLyogd2UgZG9uJ3Qga25v dyB3aGF0IHRvIHByaW50ICovCiAJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLnN0YXJ0 cHRyKSkKQEAgLTEyMDksMTUgKzEzNDMsNDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCWdvdG8gYmFkX2FyZ3VtZW50OwogCX0KIAorCS8qIC0tZm9sbG93IGlzIG5vdCBzdXBwb3J0 ZWQgd2l0aCB0YXIgYXJjaGl2ZXMgKi8KKwlpZiAoY29uZmlnLmZvbGxvdyAmJiBwcml2YXRlLmFy Y2hpdmVfbmFtZSkKKwl7CisJCXBnX2xvZ19lcnJvcigiLS1mb2xsb3cgaXMgbm90IHN1cHBvcnRl ZCB3aGVuIHJlYWRpbmcgZnJvbSBhIHRhciBhcmNoaXZlIik7CisJCWdvdG8gYmFkX2FyZ3VtZW50 OworCX0KKwogCS8qIGRvbmUgd2l0aCBhcmd1bWVudCBwYXJzaW5nLCBkbyB0aGUgYWN0dWFsIHdv cmsgKi8KIAogCS8qIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkLCBzdGFydCByZWFkaW5nICov Ci0JeGxvZ3JlYWRlcl9zdGF0ZSA9Ci0JCVhMb2dSZWFkZXJBbGxvY2F0ZShwcml2YXRlLnNlZ3Np emUsIHdhbGRpciwKLQkJCQkJCSAgIFhMX1JPVVRJTkUoLnBhZ2VfcmVhZCA9IFdBTER1bXBSZWFk UGFnZSwKLQkJCQkJCQkJCSAgLnNlZ21lbnRfb3BlbiA9IFdBTER1bXBPcGVuU2VnbWVudCwKLQkJ CQkJCQkJCSAgLnNlZ21lbnRfY2xvc2UgPSBXQUxEdW1wQ2xvc2VTZWdtZW50KSwKLQkJCQkJCSAg ICZwcml2YXRlKTsKKwlpZiAocHJpdmF0ZS5hcmNoaXZlX25hbWUpCisJeworCQkvKgorCQkgKiBB IE5VTEwgV0FMIGRpcmVjdG9yeSBpbmRpY2F0ZXMgdGhhdCB0aGUgYXJjaGl2ZSBmaWxlIGlzIGxv Y2F0ZWQgaW4KKwkJICogdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisJCSAqLworCQlp ZiAod2FsZGlyID09IE5VTEwpCisJCQl3YWxkaXIgPSBwZ19zdHJkdXAoIi4iKTsKKworCQkvKiBT ZXQgdXAgZm9yIHJlYWRpbmcgdGFyIGZpbGUgKi8KKwkJaW5pdF9hcmNoaXZlX3JlYWRlcigmcHJp dmF0ZSwgd2FsZGlyLCAmcHJpdmF0ZS5zZWdzaXplLCBjb21wcmVzc2lvbik7CisKKwkJLyogUm91 dGluZSB0byBkZWNvZGUgV0FMIGZpbGVzIGluIHRhciBhcmNoaXZlICovCisJCXhsb2dyZWFkZXJf c3RhdGUgPQorCQkJWExvZ1JlYWRlckFsbG9jYXRlKHByaXZhdGUuc2Vnc2l6ZSwgd2FsZGlyLAor CQkJCQkJCSAgIFhMX1JPVVRJTkUoLnBhZ2VfcmVhZCA9IFRhcldBTER1bXBSZWFkUGFnZSwKKwkJ CQkJCQkJCQkgIC5zZWdtZW50X29wZW4gPSBUYXJXQUxEdW1wT3BlblNlZ21lbnQsCisJCQkJCQkJ CQkJICAuc2VnbWVudF9jbG9zZSA9IFRhcldBTER1bXBDbG9zZVNlZ21lbnQpLAorCQkJCQkJCSAg ICZwcml2YXRlKTsKKwl9CisJZWxzZQorCXsKKwkJeGxvZ3JlYWRlcl9zdGF0ZSA9CisJCQlYTG9n UmVhZGVyQWxsb2NhdGUocHJpdmF0ZS5zZWdzaXplLCB3YWxkaXIsCisJCQkJCQkJICAgWExfUk9V VElORSgucGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdlLAorCQkJCQkJCQkJCSAgLnNlZ21lbnRf b3BlbiA9IFdBTER1bXBPcGVuU2VnbWVudCwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X2Nsb3NlID0g V0FMRHVtcENsb3NlU2VnbWVudCksCisJCQkJCQkJICAgJnByaXZhdGUpOworCX0KKwogCWlmICgh eGxvZ3JlYWRlcl9zdGF0ZSkKIAkJcGdfZmF0YWwoIm91dCBvZiBtZW1vcnkgd2hpbGUgYWxsb2Nh dGluZyBhIFdBTCByZWFkaW5nIHByb2Nlc3NvciIpOwogCkBAIC0xMjQ1LDYgKzE0MTAsOSBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAoY29uZmlnLnN0YXRzID09IHRydWUgJiYg IWNvbmZpZy5xdWlldCkKIAkJc3RhdHMuc3RhcnRwdHIgPSBmaXJzdF9yZWNvcmQ7CiAKKwkvKiBG bGFnIGluZGljYXRpbmcgdGhhdCB0aGUgZGVjb2RpbmcgbG9vcCBoYXMgYmVlbiBlbnRlcmVkICov CisJcHJpdmF0ZS5kZWNvZGluZ19zdGFydGVkID0gdHJ1ZTsKKwogCWZvciAoOzspCiAJewogCQlp ZiAodGltZV90b19zdG9wKQpAQCAtMTMyNiw2ICsxNDk0LDkgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAKIAlYTG9nUmVhZGVyRnJlZSh4bG9ncmVhZGVyX3N0YXRlKTsKIAorCWlmIChw cml2YXRlLmFyY2hpdmVfbmFtZSkKKwkJZnJlZV9hcmNoaXZlX3JlYWRlcigmcHJpdmF0ZSk7CisK IAlyZXR1cm4gRVhJVF9TVUNDRVNTOwogCiBiYWRfYXJndW1lbnQ6CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuaAppbmRleCAwMTNiMDUxNTA2Zi4uZmQyNTc5MmIzM2EgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuaApAQCAtMTIsNiArMTIsMTQgQEAKICNkZWZpbmUgUEdfV0FMRFVNUF9ICiAKICNpbmNsdWRl ICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJmZV91dGlscy9hc3RyZWFtZXIuaCIKKwor LyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworc3RydWN0IEFyY2hpdmVkV0FMRmlsZTsKK3N0cnVj dCBBcmNoaXZlZFdBTF9oYXNoOworCisvKiBUZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBzcGlsbGlu ZyBvdXQtb2Ytb3JkZXIgV0FMIHNlZ21lbnRzIGZyb20gYXJjaGl2ZXMgKi8KK2V4dGVybiBjaGFy ICpUbXBXYWxTZWdEaXI7CiAKIC8qIENvbnRhaW5zIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24g dG8gZHJpdmUgV0FMIGRlY29kaW5nICovCiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcFByaXZhdGUK QEAgLTIxLDYgKzI5LDQ4IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dEdW1wUHJpdmF0ZQogCVhMb2dS ZWNQdHIJc3RhcnRwdHI7CiAJWExvZ1JlY1B0cgllbmRwdHI7CiAJYm9vbAkJZW5kcHRyX3JlYWNo ZWQ7CisJYm9vbAkJZGVjb2Rpbmdfc3RhcnRlZDsKKworCS8qIEZpZWxkcyByZXF1aXJlZCB0byBy ZWFkIFdBTCBmcm9tIGFyY2hpdmUgKi8KKwljaGFyCSAgICphcmNoaXZlX25hbWU7CS8qIHRhciBh cmNoaXZlIGZpbGVuYW1lICovCisJaW50CQkJYXJjaGl2ZV9mZDsJCS8qIEZpbGUgZGVzY3JpcHRv ciBmb3IgdGhlIG9wZW4gdGFyIGZpbGUgKi8KKworCWFzdHJlYW1lciAgKmFyY2hpdmVfc3RyZWFt ZXI7CisJY2hhcgkgICAqYXJjaGl2ZV9yZWFkX2J1ZjsJLyogUmV1c2FibGUgcmVhZCBidWZmZXIg Zm9yIGFyY2hpdmUgSS9PICovCisKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJU2l6ZQkJ YXJjaGl2ZV9yZWFkX2J1Zl9zaXplOworI2VuZGlmCisKKwkvKiBXaGF0IHRoZSBhcmNoaXZlIHN0 cmVhbWVyIGlzIGN1cnJlbnRseSByZWFkaW5nICovCisJc3RydWN0IEFyY2hpdmVkV0FMRmlsZSAq Y3VyX2ZpbGU7CisKKwkvKgorCSAqIEhhc2ggdGFibGUgb2YgYWxsIFdBTCBmaWxlcyB0aGF0IHRo ZSBhcmNoaXZlIHN0cmVhbSBoYXMgcmVhZCwgaW5jbHVkaW5nCisJICogdGhlIG9uZSBjdXJyZW50 bHkgaW4gcHJvZ3Jlc3MuCisJICovCisJc3RydWN0IEFyY2hpdmVkV0FMX2hhc2ggKmFyY2hpdmVf d2FsX2h0YWI7CisKKwkvKgorCSAqIFByZS1jb21wdXRlZCBzZWdtZW50IG51bWJlcnMgZGVyaXZl ZCBmcm9tIHN0YXJ0cHRyIGFuZCBlbmRwdHIuIENhY2hpbmcKKwkgKiB0aGVtIGF2b2lkcyByZXBl YXRlZCBYTEJ5dGVUb1NlZygpIGNhbGxzIHdoZW4gZmlsdGVyaW5nIGVhY2ggYXJjaGl2ZQorCSAq IG1lbWJlciBhZ2FpbnN0IHRoZSByZXF1ZXN0ZWQgV0FMIHJhbmdlLgorCSAqLworCVhMb2dTZWdO bwlzdGFydF9zZWdubzsKKwlYTG9nU2VnTm8JZW5kX3NlZ25vOwogfSBYTG9nRHVtcFByaXZhdGU7 CiAKK2V4dGVybiBpbnQJb3Blbl9maWxlX2luX2RpcmVjdG9yeShjb25zdCBjaGFyICpkaXJlY3Rv cnksIGNvbnN0IGNoYXIgKmZuYW1lKTsKKworZXh0ZXJuIHZvaWQgaW5pdF9hcmNoaXZlX3JlYWRl cihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAorCQkJCQkJCQljb25zdCBjaGFyICp3YWxk aXIsIGludCAqV2FsU2VnU3osCisJCQkJCQkJCXBnX2NvbXByZXNzX2FsZ29yaXRobSBjb21wcmVz c2lvbik7CitleHRlcm4gdm9pZCBmcmVlX2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAq cHJpdmF0ZUluZm8pOworZXh0ZXJuIGludAlyZWFkX2FyY2hpdmVfd2FsX3BhZ2UoWExvZ0R1bXBQ cml2YXRlICpwcml2YXRlSW5mbywKKwkJCQkJCQkJICBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIs CisJCQkJCQkJCSAgU2l6ZSBjb3VudCwgY2hhciAqcmVhZEJ1ZmYsCisJCQkJCQkJCSAgaW50IFdh bFNlZ1N6KTsKK2V4dGVybiB2b2lkIGZyZWVfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAq Zm5hbWUsCisJCQkJCQkJCSAgIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOworCiAjZW5k aWYJCQkJCQkJLyogUEdfV0FMRFVNUF9IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1 bXAvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKaW5k ZXggNWRiNWQyMDEzNmYuLjExZGY3ZTA5MmJmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1 bXAvdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBs CkBAIC0zLDkgKzMsMTMgQEAKIAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAn YWxsJzsKK3VzZSBDd2Q7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwordXNlIExpc3Q6OlV0aWwgcXco c2h1ZmZsZSk7CisKK215ICR0YXIgPSAkRU5We1RBUn07CiAKIHByb2dyYW1faGVscF9vaygncGdf d2FsZHVtcCcpOwogcHJvZ3JhbV92ZXJzaW9uX29rKCdwZ193YWxkdW1wJyk7CkBAIC0xNjIsNiAr MTY2LDQyIEBAIENSRUFURSBUQUJMRVNQQUNFIHRzMSBMT0NBVElPTiAnJHRibHNwY19wYXRoJzsK IERST1AgVEFCTEVTUEFDRSB0czE7CiB9KTsKIAorIyBUZXN0OiBEZWNvZGUgYSBjb250aW51YXRp b24gcmVjb3JkIChjb250cmVjb3JkKSB0aGF0IHNwYW5zIG11bHRpcGxlIFdBTAorIyBzZWdtZW50 cy4KKyMKKyMgTm93IGNvbnN1bWUgYWxsIHJlbWFpbmluZyByb29tIGluIHRoZSBjdXJyZW50IFdB TCBzZWdtZW50LCBsZWF2aW5nCisjIHNwYWNlIGVub3VnaCBvbmx5IGZvciB0aGUgc3RhcnQgb2Yg YSBsYXJnaXNoIHJlY29yZC4KKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKK0RP ICQkCitERUNMQVJFCisgICAgd2FsX3NlZ3NpemUgaW50IDo9IHNldHRpbmc6OmludCBGUk9NIHBn X3NldHRpbmdzIFdIRVJFIG5hbWUgPSAnd2FsX3NlZ21lbnRfc2l6ZSc7CisgICAgcmVtYWluIGlu dDsKKyAgICBpdGVycyAgaW50IDo9IDA7CitCRUdJTgorICAgIExPT1AKKyAgICAgICAgSU5TRVJU IGludG8gdDEoYikKKyAgICAgICAgc2VsZWN0IHJlcGVhdChlbmNvZGUoc2hhMjU2KGc6OnRleHQ6 OmJ5dGVhKSwgJ2hleCcpLCAocmFuZG9tKCkgKiAxNSArIDEpOjppbnQpCisgICAgICAgIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnOworCisgICAgICAgIHJlbWFpbiA6PSB3YWxfc2Vnc2l6 ZSAtIChwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCkgLSAnMC8wJykgJSB3YWxfc2Vnc2l6ZTsK KyAgICAgICAgSUYgcmVtYWluIDwgMiAqIHNldHRpbmc6OmludCBmcm9tIHBnX3NldHRpbmdzIHdo ZXJlIG5hbWUgPSAnYmxvY2tfc2l6ZScgVEhFTgorICAgICAgICAgICAgUkFJU0UgbG9nICdleGl0 aW5nIGFmdGVyICUgaXRlcmF0aW9ucywgJSBieXRlcyB0byBlbmQgb2YgV0FMIHNlZ21lbnQnLCBp dGVycywgcmVtYWluOworICAgICAgICAgICAgRVhJVDsKKyAgICAgICAgRU5EIElGOworICAgICAg ICBpdGVycyA6PSBpdGVycyArIDE7CisgICAgRU5EIExPT1A7CitFTkQKKyQkOworfSk7CisKK215 ICRjb250cmVjb3JkX2xzbiA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwknU0VMRUNU IHBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24oKScpOworIyBHZW5lcmF0ZSBjb250cmVjb3JkIHJl Y29yZAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFxe1NFTEVDVCBwZ19sb2dpY2Fs X2VtaXRfbWVzc2FnZSh0cnVlLCAndGVzdCAwMjYnLCByZXBlYXQoJ3h5enh6JywgMTIzNDU2KSl9 CispOworCiBteSAoJGVuZF9sc24sICRlbmRfd2FsZmlsZSkgPSBzcGxpdCAvXHwvLAogICAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJcXtTRUxFQ1QgcGdfY3VycmVudF93YWxfaW5zZXJ0 X2xzbigpLCBwZ193YWxmaWxlX25hbWUocGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpKX0KQEAg LTE5OCw1MSArMjM4LDIzIEBAIGNvbW1hbmRfbGlrZSgKIAldLAogCXFyLy4vLAogCSdydW5zIHdp dGggc3RhcnQgYW5kIGVuZCBzZWdtZW50IHNwZWNpZmllZCcpOwotY29tbWFuZF9mYWlsc19saWtl KAotCVsgJ3BnX3dhbGR1bXAnLCAnLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIgXSwKLQlxci9l cnJvcjogbm8gc3RhcnQgV0FMIGxvY2F0aW9uIGdpdmVuLywKLQkncGF0aCBvcHRpb24gcmVxdWly ZXMgc3RhcnQgbG9jYXRpb24nKTsKIGNvbW1hbmRfbGlrZSgKIAlbCi0JCSdwZ193YWxkdW1wJywK LQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAotCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xz biwKLQkJJy0tZW5kJyA9PiAkZW5kX2xzbiwKLQldLAotCXFyLy4vLAotCSdydW5zIHdpdGggcGF0 aCBvcHRpb24gYW5kIHN0YXJ0IGFuZCBlbmQgbG9jYXRpb25zJyk7Ci1jb21tYW5kX2ZhaWxzX2xp a2UoCi0JWwotCQkncGdfd2FsZHVtcCcsCi0JCSctLXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciwK LQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24sCi0JXSwKLQlxci9lcnJvcjogZXJyb3IgaW4gV0FM IHJlY29yZCBhdC8sCi0JJ2ZhbGxpbmcgb2ZmIHRoZSBlbmQgb2YgdGhlIFdBTCByZXN1bHRzIGlu IGFuIGVycm9yJyk7Ci0KLWNvbW1hbmRfbGlrZSgKLQlbCi0JCSdwZ193YWxkdW1wJywgJy0tcXVp ZXQnLAotCQkkbm9kZS0+ZGF0YV9kaXIgLiAnL3BnX3dhbC8nIC4gJHN0YXJ0X3dhbGZpbGUKKwkJ J3BnX3dhbGR1bXAnLCAnLS1xdWlldCcsICctLXBhdGgnLAorCQkkbm9kZS0+ZGF0YV9kaXIgLiAn L3BnX3dhbC8nLCAkc3RhcnRfd2FsZmlsZQogCV0sCiAJcXIvXiQvLAogCSdubyBvdXRwdXQgd2l0 aCAtLXF1aWV0IG9wdGlvbicpOwotY29tbWFuZF9mYWlsc19saWtlKAotCVsKLQkJJ3BnX3dhbGR1 bXAnLCAnLS1xdWlldCcsCi0JCSctLXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciwKLQkJJy0tc3Rh cnQnID0+ICRzdGFydF9sc24KLQldLAotCXFyL2Vycm9yOiBlcnJvciBpbiBXQUwgcmVjb3JkIGF0 LywKLQknZXJyb3JzIGFyZSBzaG93biB3aXRoIC0tcXVpZXQnKTsKLQogCiAjIFRlc3QgZm9yOiBE aXNwbGF5IGEgbWVzc2FnZSB0aGF0IHdlJ3JlIHNraXBwaW5nIGRhdGEgaWYgYGZyb21gCiAjIHdh c24ndCBhIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIGEgcmVjb3JkLgorc3ViIHRlc3RfcGdfd2Fs ZHVtcF9za2lwX2J5dGVzCiB7CisJbXkgKCRwYXRoLCAkc3RhcnRsc24sICRlbmRsc24pID0gQF87 CisKIAkjIENvbnN0cnVjdCBhIG5ldyBMU04gdGhhdCBpcyBvbmUgYnl0ZSBwYXN0IHRoZSBvcmln aW5hbAogCSMgc3RhcnRfbHNuLgotCW15ICgkcGFydDEsICRwYXJ0MikgPSBzcGxpdCBxcnsvfSwg JHN0YXJ0X2xzbjsKKwlteSAoJHBhcnQxLCAkcGFydDIpID0gc3BsaXQgcXJ7L30sICRzdGFydGxz bjsKIAlteSAkbHNuMiA9IGhleCAkcGFydDI7CiAJJGxzbjIrKzsKIAlteSAkbmV3X3N0YXJ0ID0g c3ByaW50ZigiJXMvJVgiLCAkcGFydDEsICRsc24yKTsKQEAgLTI1Miw3ICsyNjQsOCBAQCBjb21t YW5kX2ZhaWxzX2xpa2UoCiAJbXkgJHJlc3VsdCA9IElQQzo6UnVuOjpydW4gWwogCQkncGdfd2Fs ZHVtcCcsCiAJCSctLXN0YXJ0JyA9PiAkbmV3X3N0YXJ0LAotCQkkbm9kZS0+ZGF0YV9kaXIgLiAn L3BnX3dhbC8nIC4gJHN0YXJ0X3dhbGZpbGUKKwkJJy0tZW5kJyA9PiAkZW5kbHNuLAorCQknLS1w YXRoJyA9PiAkcGF0aCwKIAkgIF0sCiAJICAnPicgPT4gXCRzdGRvdXQsCiAJICAnMj4nID0+IFwk c3RkZXJyOwpAQCAtMjY2LDE1ICsyNzksMTUgQEAgY29tbWFuZF9mYWlsc19saWtlKAogc3ViIHRl c3RfcGdfd2FsZHVtcAogewogCWxvY2FsICRUZXN0OjpCdWlsZGVyOjpMZXZlbCA9ICRUZXN0OjpC dWlsZGVyOjpMZXZlbCArIDE7Ci0JbXkgQG9wdHMgPSBAXzsKKwlteSAoJHBhdGgsICRzdGFydGxz biwgJGVuZGxzbiwgQG9wdHMpID0gQF87CiAKIAlteSAoJHN0ZG91dCwgJHN0ZGVycik7CiAKIAlt eSAkcmVzdWx0ID0gSVBDOjpSdW46OnJ1biBbCiAJCSdwZ193YWxkdW1wJywKLQkJJy0tcGF0aCcg PT4gJG5vZGUtPmRhdGFfZGlyLAotCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKLQkJJy0tZW5k JyA9PiAkZW5kX2xzbiwKKwkJJy0tc3RhcnQnID0+ICRzdGFydGxzbiwKKwkJJy0tZW5kJyA9PiAk ZW5kbHNuLAorCQknLS1wYXRoJyA9PiAkcGF0aCwKIAkJQG9wdHMKIAkgIF0sCiAJICAnPicgPT4g XCRzdGRvdXQsCkBAIC0yODYsNDAgKzI5OSwxNDUgQEAgc3ViIHRlc3RfcGdfd2FsZHVtcAogCXJl dHVybiBAbGluZXM7CiB9CiAKLW15IEBsaW5lczsKKyMgQ3JlYXRlIGEgdGFyIGFyY2hpdmUsIHNo dWZmbGUgdGhlIGZpbGUgb3JkZXIKK3N1YiBnZW5lcmF0ZV9hcmNoaXZlCit7CisJbXkgKCRhcmNo aXZlLCAkZGlyZWN0b3J5LCAkY29tcHJlc3Npb25fZmxhZ3MpID0gQF87CiAKLUBsaW5lcyA9IHRl c3RfcGdfd2FsZHVtcDsKLWlzKGdyZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91 dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycpOworCW15IEBmaWxlczsKKwlvcGVuZGlyIG15ICRk aCwgJGRpcmVjdG9yeSBvciBkaWUgIm9wZW5kaXI6ICQhIjsKKwl3aGlsZSAobXkgJGVudHJ5ID0g cmVhZGRpciAkZGgpIHsKKwkJIyBTa2lwICcuJyBhbmQgJy4uJworCQluZXh0IGlmICRlbnRyeSBl cSAnLicgfHwgJGVudHJ5IGVxICcuLic7CisJCXB1c2ggQGZpbGVzLCAkZW50cnk7CisJfQorCWNs b3NlZGlyICRkaDsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLWxpbWl0JyA9PiA2KTsK LWlzKEBsaW5lcywgNiwgJ2xpbWl0IG9wdGlvbiBvYnNlcnZlZCcpOworCUBmaWxlcyA9IHNodWZm bGUgQGZpbGVzOwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tZnVsbHBhZ2UnKTsKLWlz KGdyZXAoIS9ecm1ncjouKlxiRlBXXGIvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBh cmUgRlBXJyk7CisJIyBtb3ZlIGludG8gdGhlIFdBTCBkaXJlY3RvcnkgYmVmb3JlIGFyY2hpdmlu ZyBmaWxlcworCW15ICRjd2QgPSBnZXRjd2Q7CisJY2hkaXIoJGRpcmVjdG9yeSkgfHwgZGllICJj aGRpcjogJCEiOworCWNvbW1hbmRfb2soWyR0YXIsICRjb21wcmVzc2lvbl9mbGFncywgJGFyY2hp dmUsIEBmaWxlc10pOworCWNoZGlyKCRjd2QpIHx8IGRpZSAiY2hkaXI6ICQhIjsKK30KIAotQGxp bmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXN0YXRzJyk7Ci1saWtlKCRsaW5lc1swXSwgcXIvV0FM IHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKLWlzKGdyZXAoL15ybWdyOi8s IEBsaW5lcyksIDAsICdubyBybWdyIGxpbmVzIG91dHB1dCcpOworbXkgJHRtcF9kaXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcl9zaG9ydCgpOwogCi1AbGluZXMgPSB0ZXN0X3Bn X3dhbGR1bXAoJy0tc3RhdHM9cmVjb3JkJyk7Ci1saWtlKCRsaW5lc1swXSwgcXIvV0FMIHN0YXRp c3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKLWlzKGdyZXAoL15ybWdyOi8sIEBsaW5l cyksIDAsICdubyBybWdyIGxpbmVzIG91dHB1dCcpOworbXkgQHNjZW5hcmlvcyA9ICgKKwl7CisJ CSdwYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCisJCSdpc19hcmNoaXZlJyA9PiAwLAorCQknZW5h YmxlZCcgPT4gMQorCX0sCisJeworCQkncGF0aCcgPT4gIiR0bXBfZGlyL3BnX3dhbC50YXIiLAor CQknY29tcHJlc3Npb25fbWV0aG9kJyA9PiAnbm9uZScsCisJCSdjb21wcmVzc2lvbl9mbGFncycg PT4gJy1jZicsCisJCSdpc19hcmNoaXZlJyA9PiAxLAorCQknZW5hYmxlZCcgPT4gMQorCX0sCisJ eworCQkncGF0aCcgPT4gIiR0bXBfZGlyL3BnX3dhbC50YXIuZ3oiLAorCQknY29tcHJlc3Npb25f bWV0aG9kJyA9PiAnZ3ppcCcsCisJCSdjb21wcmVzc2lvbl9mbGFncycgPT4gJy1jemYnLAorCQkn aXNfYXJjaGl2ZScgPT4gMSwKKwkJJ2VuYWJsZWQnID0+IGNoZWNrX3BnX2NvbmZpZygiI2RlZmlu ZSBIQVZFX0xJQlogMSIpCisJfSk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1ybWdy JyA9PiAnQnRyZWUnKTsKLWlzKGdyZXAoIS9ecm1ncjogQnRyZWUvLCBAbGluZXMpLCAwLCAnb25s eSBCdHJlZSBsaW5lcycpOworZm9yIG15ICRzY2VuYXJpbyAoQHNjZW5hcmlvcykKK3sKKwlteSAk cGF0aCA9ICRzY2VuYXJpby0+eydwYXRoJ307CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgn LS1mb3JrJyA9PiAnaW5pdCcpOwotaXMoZ3JlcCghL2ZvcmsgaW5pdC8sIEBsaW5lcyksIDAsICdv bmx5IGluaXQgZm9yayBsaW5lcycpOworCVNLSVA6CisJeworCQlza2lwICJ0YXIgY29tbWFuZCBp cyBub3QgYXZhaWxhYmxlIiwgNTYKKwkJICBpZiAhZGVmaW5lZCAkdGFyICYmICRzY2VuYXJpby0+ eydpc19hcmNoaXZlJ307CisJCXNraXAgIiRzY2VuYXJpby0+eydjb21wcmVzc2lvbl9tZXRob2Qn fSBjb21wcmVzc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQiLCA1NgorCQkgIGlmICEk c2NlbmFyaW8tPnsnZW5hYmxlZCd9ICYmICRzY2VuYXJpby0+eydpc19hcmNoaXZlJ307CiAKLUBs aW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgKLQknLS1yZWxhdGlvbicgPT4gIiRkZWZhdWx0X3RzX29p ZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfdDFfb2lkIik7Ci1pcyhncmVwKCEvcmVsICRkZWZhdWx0 X3RzX29pZFwvJHBvc3RncmVzX2RiX29pZFwvJHJlbF90MV9vaWQvLCBAbGluZXMpLAotCTAsICdv bmx5IGxpbmVzIGZvciBzZWxlY3RlZCByZWxhdGlvbicpOworCQkgICMgY3JlYXRlIHBnX3dhbCBh cmNoaXZlCisJCSAgaWYgKCRzY2VuYXJpby0+eydpc19hcmNoaXZlJ30pCisJCSAgeworCQkJICBn ZW5lcmF0ZV9hcmNoaXZlKCRwYXRoLAorCQkJCSAgJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ193YWwn LAorCQkJCSAgJHNjZW5hcmlvLT57J2NvbXByZXNzaW9uX2ZsYWdzJ30pOworCQkgIH0KIAotQGxp bmVzID0gdGVzdF9wZ193YWxkdW1wKAotCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lk LyRwb3N0Z3Jlc19kYl9vaWQvJHJlbF9pMWFfb2lkIiwKLQknLS1ibG9jaycgPT4gMSk7Ci1pcyhn cmVwKCEvXGJibGsgMVxiLywgQGxpbmVzKSwgMCwgJ29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIGJs b2NrJyk7CisJCWNvbW1hbmRfZmFpbHNfbGlrZSgKKwkJCVsgJ3BnX3dhbGR1bXAnLCAnLS1wYXRo JyA9PiAkcGF0aCBdLAorCQkJcXIvZXJyb3I6IG5vIHN0YXJ0IFdBTCBsb2NhdGlvbiBnaXZlbi8s CisJCQkncGF0aCBvcHRpb24gcmVxdWlyZXMgc3RhcnQgbG9jYXRpb24nKTsKKwkJY29tbWFuZF9s aWtlKAorCQkJWworCQkJCSdwZ193YWxkdW1wJywKKwkJCQknLS1wYXRoJyA9PiAkcGF0aCwKKwkJ CQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKKwkJCQknLS1lbmQnID0+ICRlbmRfbHNuLAorCQkJ XSwKKwkJCXFyLy4vLAorCQkJJ3J1bnMgd2l0aCBwYXRoIG9wdGlvbiBhbmQgc3RhcnQgYW5kIGVu ZCBsb2NhdGlvbnMnKTsKKwkJY29tbWFuZF9mYWlsc19saWtlKAorCQkJWworCQkJCSdwZ193YWxk dW1wJywKKwkJCQknLS1wYXRoJyA9PiAkcGF0aCwKKwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xz biwKKwkJCV0sCisJCQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8sCisJCQknZmFs bGluZyBvZmYgdGhlIGVuZCBvZiB0aGUgV0FMIHJlc3VsdHMgaW4gYW4gZXJyb3InKTsKIAorCQlj b21tYW5kX2ZhaWxzX2xpa2UoCisJCQlbCisJCQkJJ3BnX3dhbGR1bXAnLCAnLS1xdWlldCcsCisJ CQkJJy0tcGF0aCcgPT4gJHBhdGgsCisJCQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24KKwkJCV0s CisJCQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8sCisJCQknZXJyb3JzIGFyZSBz aG93biB3aXRoIC0tcXVpZXQnKTsKKworCQl0ZXN0X3BnX3dhbGR1bXBfc2tpcF9ieXRlcygkcGF0 aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOworCisJCW15IEBsaW5lcyA9IHRlc3RfcGdfd2FsZHVt cCgkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOworCQlpcyhncmVwKCEvXnJtZ3I6IFx3Lywg QGxpbmVzKSwgMCwgJ2FsbCBvdXRwdXQgbGluZXMgYXJlIHJtZ3IgbGluZXMnKTsKKworCQlAbGlu ZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRjb250cmVjb3JkX2xzbiwgJGVuZF9sc24pOwor CQlpcyhncmVwKCEvXnJtZ3I6IFx3LywgQGxpbmVzKSwgMCwgJ2FsbCBvdXRwdXQgbGluZXMgYXJl IHJtZ3IgbGluZXMnKTsKKworCQl0ZXN0X3BnX3dhbGR1bXBfc2tpcF9ieXRlcygkcGF0aCwgJGNv bnRyZWNvcmRfbHNuLCAkZW5kX2xzbik7CisKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRw YXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0tbGltaXQnID0+IDYpOworCQlpcyhAbGluZXMs IDYsICdsaW1pdCBvcHRpb24gb2JzZXJ2ZWQnKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1 bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1mdWxscGFnZScpOworCQlpcyhncmVw KCEvXnJtZ3I6LipcYkZQV1xiLywgQGxpbmVzKSwgMCwgJ2FsbCBvdXRwdXQgbGluZXMgYXJlIEZQ VycpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0YXJ0X2xzbiwgJGVu ZF9sc24sICctLXN0YXRzJyk7CisJCWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8s ICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOworCQlpcyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAw LCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAo JHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1zdGF0cz1yZWNvcmQnKTsKKwkJbGlrZSgk bGluZXNbMF0sIHFyL1dBTCBzdGF0aXN0aWNzLywgInN0YXRpc3RpY3Mgb24gc3Rkb3V0Iik7CisJ CWlzKGdyZXAoL15ybWdyOi8sIEBsaW5lcyksIDAsICdubyBybWdyIGxpbmVzIG91dHB1dCcpOwor CisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24s ICctLXJtZ3InID0+ICdCdHJlZScpOworCQlpcyhncmVwKCEvXnJtZ3I6IEJ0cmVlLywgQGxpbmVz KSwgMCwgJ29ubHkgQnRyZWUgbGluZXMnKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAo JHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1mb3JrJyA9PiAnaW5pdCcpOworCQlpcyhn cmVwKCEvZm9yayBpbml0LywgQGxpbmVzKSwgMCwgJ29ubHkgaW5pdCBmb3JrIGxpbmVzJyk7CisK KwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwK KwkJCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9vaWQvJHJl bF90MV9vaWQiKTsKKwkJaXMoZ3JlcCghL3JlbCAkZGVmYXVsdF90c19vaWRcLyRwb3N0Z3Jlc19k Yl9vaWRcLyRyZWxfdDFfb2lkLywgQGxpbmVzKSwKKwkJCTAsICdvbmx5IGxpbmVzIGZvciBzZWxl Y3RlZCByZWxhdGlvbicpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0 YXJ0X2xzbiwgJGVuZF9sc24sCisJCQknLS1yZWxhdGlvbicgPT4gIiRkZWZhdWx0X3RzX29pZC8k cG9zdGdyZXNfZGJfb2lkLyRyZWxfaTFhX29pZCIsCisJCQknLS1ibG9jaycgPT4gMSk7CisJCWlz KGdyZXAoIS9cYmJsayAxXGIvLCBAbGluZXMpLCAwLCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQg YmxvY2snKTsKKworCQkjIENsZWFudXAuCisJCXVubGluayAkcGF0aCBpZiAkc2NlbmFyaW8tPnsn aXNfYXJjaGl2ZSd9OworCX0KK30KIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CmluZGV4IDE3NGUyNzk4NDQzLi4zZTJmYzcxMWEzZSAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTE0Nyw2ICsxNDcsOSBAQCBBcmNoaXZlT3B0cwogQXJjaGl2ZVNodXRkb3du Q0IKIEFyY2hpdmVTdGFydHVwQ0IKIEFyY2hpdmVTdHJlYW1TdGF0ZQorQXJjaGl2ZWRXQUxGaWxl CitBcmNoaXZlZFdBTF9oYXNoCitBcmNoaXZlZFdBTF9pdGVyYXRvcgogQXJjaGl2ZXJPdXRwdXQK IEFyY2hpdmVyU3RhZ2UKIEFycmF5QW5hbHl6ZUV4dHJhRGF0YQpAQCAtMzU0Miw2ICszNTQ1LDcg QEAgYXN0cmVhbWVyX3JlY292ZXJ5X2luamVjdG9yCiBhc3RyZWFtZXJfdGFyX2FyY2hpdmVyCiBh c3RyZWFtZXJfdGFyX3BhcnNlcgogYXN0cmVhbWVyX3ZlcmlmeQorYXN0cmVhbWVyX3dhbGR1bXAK IGFzdHJlYW1lcl96c3RkX2ZyYW1lCiBhdXRoX3Bhc3N3b3JkX2hvb2tfdHlwCiBhdXRvdmFjX3Rh YmxlCi0tIAoyLjQ3LjEKCg== --00000000000046607a064d730722 Content-Type: application/x-patch; name="v21-0004-pg_verifybackup-Enable-WAL-parsing-for-tar-forma.patch" Content-Disposition: attachment; filename="v21-0004-pg_verifybackup-Enable-WAL-parsing-for-tar-forma.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmytcho63 RnJvbSA0YWZkNzgyZTY5YmNlNzEyZGY0YTY3MzYxNWI3YmZkMzZhZTkwM2VkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4K RGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAxNTo0Mzo1MyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjIx IDQvNV0gcGdfdmVyaWZ5YmFja3VwOiBFbmFibGUgV0FMIHBhcnNpbmcgZm9yIHRhci1mb3JtYXQK IGJhY2t1cHMKCk5vdyB0aGF0IHBnX3dhbGR1bXAgc3VwcG9ydHMgcmVhZGluZyBXQUwgZnJvbSB0 YXIgYXJjaGl2ZXMsIHJlbW92ZSB0aGUKcmVzdHJpY3Rpb24gdGhhdCBmb3JjZWQgLS1uby1wYXJz ZS13YWwgZm9yIHRhci1mb3JtYXQgYmFja3Vwcy4KCnBnX3ZlcmlmeWJhY2t1cCBub3cgYXV0b21h dGljYWxseSBsb2NhdGVzIHRoZSBXQUwgYXJjaGl2ZTogaXQgbG9va3MgZm9yCmEgc2VwYXJhdGUg cGdfd2FsLnRhciBmaXJzdCwgdGhlbiBmYWxscyBiYWNrIHRvIHRoZSBtYWluIGJhc2UudGFyLiAg QQpuZXcgLS13YWwtcGF0aCBvcHRpb24gKHJlcGxhY2luZyB0aGUgb2xkIC0td2FsLWRpcmVjdG9y eSwgd2hpY2ggaXMga2VwdAphcyBhIHNpbGVudCBhbGlhcykgYWNjZXB0cyBlaXRoZXIgYSBkaXJl Y3Rvcnkgb3IgYSB0YXIgYXJjaGl2ZSBwYXRoLgoKVGhlIGRlZmF1bHQgV0FMIGRpcmVjdG9yeSBw cmVwYXJhdGlvbiBpcyBkZWZlcnJlZCB1bnRpbCB0aGUgYmFja3VwCmZvcm1hdCBpcyBrbm93biwg c2luY2UgdGFyLWZvcm1hdCBiYWNrdXBzIHJlc29sdmUgdGhlIFdBTCBwYXRoCmRpZmZlcmVudGx5 IGZyb20gcGxhaW4tZm9ybWF0IG9uZXMuCgpBdXRob3I6IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBKYWt1YiBXYXJ0YWsgPGpha3ViLndhcnRha0BlbnRlcnByaXNlZGIuY29tPgpS ZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEV1bGVyIFRhdmVpcmEgPGV1bGVyQGV1bGVydG8uY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1 bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FBSl9iOTRicWRXTjNoMkotUHp6elEyTnBid2N0NVpRSGdnbl9Rb1lHaEMycm4tPVdRQG1h aWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbCAg ICAgICAgIHwgMTQgKystCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAu YyAgICAgfCA5NiArKysrKysrKysrKystLS0tLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90 LzAwMl9hbGdvcml0aG0ucGwgICAgfCAgNCAtCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAw M19jb3JydXB0aW9uLnBsICAgfCAgNCArLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdf d2FsLnBsICAgICAgICAgIHwgMjAgKysrLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDhf dW50YXIucGwgICAgICAgIHwgIDUgKy0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2Ns aWVudF91bnRhci5wbCB8ICA1ICstCiA3IGZpbGVzIGNoYW5nZWQsIDkxIGluc2VydGlvbnMoKyks IDU3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5 YmFja3VwLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21sCmluZGV4 IDYxYzEyOTc1ZTRhLi4xNjk1Y2ZlOTFjOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9w Z192ZXJpZnliYWNrdXAuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1 cC5zZ21sCkBAIC0zNiwxMCArMzYsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgIDxs aXRlcmFsPmJhY2t1cF9tYW5pZmVzdDwvbGl0ZXJhbD4gZ2VuZXJhdGVkIGJ5IHRoZSBzZXJ2ZXIg YXQgdGhlIHRpbWUKICAgIG9mIHRoZSBiYWNrdXAuIFRoZSBiYWNrdXAgbWF5IGJlIHN0b3JlZCBl aXRoZXIgaW4gdGhlICJwbGFpbiIgb3IgdGhlICJ0YXIiCiAgICBmb3JtYXQ7IHRoaXMgaW5jbHVk ZXMgdGFyLWZvcm1hdCBiYWNrdXBzIGNvbXByZXNzZWQgd2l0aCBhbnkgYWxnb3JpdGhtCi0gICBz dXBwb3J0ZWQgYnkgPGFwcGxpY2F0aW9uPnBnX2Jhc2ViYWNrdXA8L2FwcGxpY2F0aW9uPi4gSG93 ZXZlciwgYXQgcHJlc2VudCwKLSAgIDxsaXRlcmFsPldBTDwvbGl0ZXJhbD4gdmVyaWZpY2F0aW9u IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBwbGFpbi1mb3JtYXQKLSAgIGJhY2t1cHMuIFRoZXJlZm9y ZSwgaWYgdGhlIGJhY2t1cCBpcyBzdG9yZWQgaW4gdGFyLWZvcm1hdCwgdGhlCi0gICA8bGl0ZXJh bD4tbiwgLS1uby1wYXJzZS13YWw8L2xpdGVyYWw+IG9wdGlvbiBzaG91bGQgYmUgdXNlZC4KKyAg IHN1cHBvcnRlZCBieSA8YXBwbGljYXRpb24+cGdfYmFzZWJhY2t1cDwvYXBwbGljYXRpb24+Lgog ICA8L3BhcmE+CiAKICAgPHBhcmE+CkBAIC0yNjEsMTIgKzI1OCwxMyBAQCBQb3N0Z3JlU1FMIGRv Y3VtZW50YXRpb24KIAogICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlvbj4t dyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRp b24+PC90ZXJtPgotICAgICAgPHRlcm0+PG9wdGlvbj4tLXdhbC1kaXJlY3Rvcnk9PHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdGg8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4K KyAgICAgIDx0ZXJtPjxvcHRpb24+LS13YWwtcGF0aD08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVt PgogICAgICAgIDxwYXJhPgotICAgICAgICBUcnkgdG8gcGFyc2UgV0FMIGZpbGVzIHN0b3JlZCBp biB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSwgcmF0aGVyIHRoYW4KLSAgICAgICAgaW4gPGxpdGVy YWw+cGdfd2FsPC9saXRlcmFsPi4gVGhpcyBtYXkgYmUgdXNlZnVsIGlmIHRoZSBiYWNrdXAgaXMK LSAgICAgICAgc3RvcmVkIGluIGEgc2VwYXJhdGUgbG9jYXRpb24gZnJvbSB0aGUgV0FMIGFyY2hp dmUuCisgICAgICAgIFRyeSB0byBwYXJzZSBXQUwgZmlsZXMgc3RvcmVkIGluIHRoZSBzcGVjaWZp ZWQgZGlyZWN0b3J5IG9yIHRhcgorICAgICAgICBhcmNoaXZlLCByYXRoZXIgdGhhbiBpbiA8bGl0 ZXJhbD5wZ193YWw8L2xpdGVyYWw+LiBUaGlzIG1heSBiZQorICAgICAgICB1c2VmdWwgaWYgdGhl IGJhY2t1cCBpcyBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBsb2NhdGlvbiBmcm9tIHRoZSBXQUwKKyAg ICAgICAgYXJjaGl2ZS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8 L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3Zl cmlmeWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMK aW5kZXggMzFmNjA2YzQ1YjEuLmI2MGFiODczOWQ1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYworKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1 cC9wZ192ZXJpZnliYWNrdXAuYwpAQCAtNzQsNyArNzQsOSBAQCBwZ19ub3JldHVybiBzdGF0aWMg dm9pZCByZXBvcnRfbWFuaWZlc3RfZXJyb3IoSnNvbk1hbmlmZXN0UGFyc2VDb250ZXh0ICpjb250 ZXh0LAogCQkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiAJCQlwZ19hdHRyaWJ1dGVf cHJpbnRmKDIsIDMpOwogCi1zdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmllcl9j b250ZXh0ICpjb250ZXh0LCBESVIgKmRpcik7CitzdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2JhY2t1 cCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpciwKKwkJCQkJCQkgIGNoYXIgKipi YXNlX2FyY2hpdmVfcGF0aCwKKwkJCQkJCQkgIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKTsKIHN0 YXRpYyB2b2lkIHZlcmlmeV9wbGFpbl9iYWNrdXBfZGlyZWN0b3J5KHZlcmlmaWVyX2NvbnRleHQg KmNvbnRleHQsCiAJCQkJCQkJCQkJICBjaGFyICpyZWxwYXRoLCBjaGFyICpmdWxscGF0aCwKIAkJ CQkJCQkJCQkgIERJUiAqZGlyKTsKQEAgLTgzLDcgKzg1LDkgQEAgc3RhdGljIHZvaWQgdmVyaWZ5 X3BsYWluX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBh dGgsCiBzdGF0aWMgdm9pZCB2ZXJpZnlfY29udHJvbF9maWxlKGNvbnN0IGNoYXIgKmNvbnRyb2xw YXRoLAogCQkJCQkJCQl1aW50NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIpOwogc3RhdGlj IHZvaWQgcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQs IGNoYXIgKnJlbHBhdGgsCi0JCQkJCQkJCQkgY2hhciAqZnVsbHBhdGgsIFNpbXBsZVB0ckxpc3Qg KnRhcmZpbGVzKTsKKwkJCQkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFy ZmlsZXMsCisJCQkJCQkJCQkgY2hhciAqKmJhc2VfYXJjaGl2ZV9wYXRoLAorCQkJCQkJCQkJIGNo YXIgKip3YWxfYXJjaGl2ZV9wYXRoKTsKIHN0YXRpYyB2b2lkIHZlcmlmeV90YXJfZmlsZSh2ZXJp Zmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpyZWxwYXRoLAogCQkJCQkJCWNoYXIgKmZ1bGxw YXRoLCBhc3RyZWFtZXIgKnN0cmVhbWVyKTsKIHN0YXRpYyB2b2lkIHJlcG9ydF9leHRyYV9iYWNr dXBfZmlsZXModmVyaWZpZXJfY29udGV4dCAqY29udGV4dCk7CkBAIC05Myw3ICs5Nyw3IEBAIHN0 YXRpYyB2b2lkIHZlcmlmeV9maWxlX2NoZWNrc3VtKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQs CiAJCQkJCQkJCSB1aW50OCAqYnVmZmVyKTsKIHN0YXRpYyB2b2lkIHBhcnNlX3JlcXVpcmVkX3dh bCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCSAgIGNoYXIgKnBnX3dhbGR1bXBf cGF0aCwKLQkJCQkJCQkgICBjaGFyICp3YWxfZGlyZWN0b3J5KTsKKwkJCQkJCQkgICBjaGFyICp3 YWxfcGF0aCk7CiBzdGF0aWMgYXN0cmVhbWVyICpjcmVhdGVfYXJjaGl2ZV92ZXJpZmllcih2ZXJp Zmllcl9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgY2hhciAqYXJjaGl2ZV9uYW1lLAog CQkJCQkJCQkJCSAgT2lkIHRibHNwY19vaWQsCkBAIC0xMjYsNyArMTMwLDggQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCXsicHJvZ3Jlc3MiLCBub19hcmd1bWVudCwgTlVMTCwgJ1An fSwKIAkJeyJxdWlldCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAncSd9LAogCQl7InNraXAtY2hlY2tz dW1zIiwgbm9fYXJndW1lbnQsIE5VTEwsICdzJ30sCi0JCXsid2FsLWRpcmVjdG9yeSIsIHJlcXVp cmVkX2FyZ3VtZW50LCBOVUxMLCAndyd9LAorCQl7IndhbC1wYXRoIiwgcmVxdWlyZWRfYXJndW1l bnQsIE5VTEwsICd3J30sCisJCXsid2FsLWRpcmVjdG9yeSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBO VUxMLCAndyd9LAkvKiBkZXByZWNhdGVkICovCiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CiAK QEAgLTEzNSw3ICsxNDAsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAljaGFyCSAg ICptYW5pZmVzdF9wYXRoID0gTlVMTDsKIAlib29sCQlub19wYXJzZV93YWwgPSBmYWxzZTsKIAli b29sCQlxdWlldCA9IGZhbHNlOwotCWNoYXIJICAgKndhbF9kaXJlY3RvcnkgPSBOVUxMOworCWNo YXIJICAgKndhbF9wYXRoID0gTlVMTDsKKwljaGFyCSAgICpiYXNlX2FyY2hpdmVfcGF0aCA9IE5V TEw7CisJY2hhcgkgICAqd2FsX2FyY2hpdmVfcGF0aCA9IE5VTEw7CiAJY2hhcgkgICAqcGdfd2Fs ZHVtcF9wYXRoID0gTlVMTDsKIAlESVIJCSAgICpkaXI7CiAKQEAgLTIyMSw4ICsyMjgsOCBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQljb250ZXh0LnNraXBfY2hlY2tzdW1zID0g dHJ1ZTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3cnOgotCQkJCXdhbF9kaXJlY3RvcnkgPSBwc3Ry ZHVwKG9wdGFyZyk7Ci0JCQkJY2Fub25pY2FsaXplX3BhdGgod2FsX2RpcmVjdG9yeSk7CisJCQkJ d2FsX3BhdGggPSBwc3RyZHVwKG9wdGFyZyk7CisJCQkJY2Fub25pY2FsaXplX3BhdGgod2FsX3Bh dGgpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBnZXRvcHRfbG9uZyBhbHJlYWR5 IGVtaXR0ZWQgYSBjb21wbGFpbnQgKi8KQEAgLTI4NSwxMCArMjkyLDYgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJCW1hbmlmZXN0X3BhdGggPSBwc3ByaW50ZigiJXMvYmFja3VwX21h bmlmZXN0IiwKIAkJCQkJCQkJIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CiAKLQkvKiBCeSBk ZWZhdWx0LCBsb29rIGZvciB0aGUgV0FMIGluIHRoZSBiYWNrdXAgZGlyZWN0b3J5LCB0b28uICov Ci0JaWYgKHdhbF9kaXJlY3RvcnkgPT0gTlVMTCkKLQkJd2FsX2RpcmVjdG9yeSA9IHBzcHJpbnRm KCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwotCiAJLyoKIAkgKiBUcnkg dG8gcmVhZCB0aGUgbWFuaWZlc3QuIFdlIHRyZWF0IGFueSBlcnJvcnMgZW5jb3VudGVyZWQgd2hp bGUgcGFyc2luZwogCSAqIHRoZSBtYW5pZmVzdCBhcyBmYXRhbDsgdGhlcmUgZG9lc24ndCBzZWVt IHRvIGJlIG11Y2ggcG9pbnQgaW4gdHJ5aW5nIHRvCkBAIC0zMzEsMTcgKzMzNCw2IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlwZnJlZShwYXRoKTsKIAl9CiAKLQkvKgotCSAqIFhY WDogSW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNvbnNpZGVyIGVuaGFuY2luZyBwZ193YWxkdW1w IHRvIHJlYWQgV0FMCi0JICogZmlsZXMgZnJvbSBhbiBhcmNoaXZlLgotCSAqLwotCWlmICghbm9f cGFyc2Vfd2FsICYmIGNvbnRleHQuZm9ybWF0ID09ICd0JykKLQl7Ci0JCXBnX2xvZ19lcnJvcigi cGdfd2FsZHVtcCBjYW5ub3QgcmVhZCB0YXIgZmlsZXMiKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQo IllvdSBtdXN0IHVzZSAtbi8tLW5vLXBhcnNlLXdhbCB3aGVuIHZlcmlmeWluZyBhIHRhci1mb3Jt YXQgYmFja3VwLiIpOwotCQlleGl0KDEpOwotCX0KLQogCS8qCiAJICogUGVyZm9ybSB0aGUgYXBw cm9wcmlhdGUgdHlwZSBvZiB2ZXJpZmljYXRpb24gYXBwcm9wcmlhdGUgYmFzZWQgb24gdGhlCiAJ ICogYmFja3VwIGZvcm1hdC4gVGhpcyB3aWxsIGNsb3NlICdkaXInLgpAQCAtMzUwLDcgKzM0Miw3 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl2ZXJpZnlfcGxhaW5fYmFja3VwX2Rp cmVjdG9yeSgmY29udGV4dCwgTlVMTCwgY29udGV4dC5iYWNrdXBfZGlyZWN0b3J5LAogCQkJCQkJ CQkJICBkaXIpOwogCWVsc2UKLQkJdmVyaWZ5X3Rhcl9iYWNrdXAoJmNvbnRleHQsIGRpcik7CisJ CXZlcmlmeV90YXJfYmFja3VwKCZjb250ZXh0LCBkaXIsICZiYXNlX2FyY2hpdmVfcGF0aCwgJndh bF9hcmNoaXZlX3BhdGgpOwogCiAJLyoKIAkgKiBUaGUgIm1hdGNoZWQiIGZsYWcgc2hvdWxkIG5v dyBiZSBzZXQgb24gZXZlcnkgZW50cnkgaW4gdGhlIGhhc2ggdGFibGUuCkBAIC0zNjgsMTIgKzM2 MCwzNSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAoY29udGV4dC5mb3JtYXQg PT0gJ3AnICYmICFjb250ZXh0LnNraXBfY2hlY2tzdW1zKQogCQl2ZXJpZnlfYmFja3VwX2NoZWNr c3VtcygmY29udGV4dCk7CiAKKwkvKgorCSAqIEJ5IGRlZmF1bHQsIFdBTCBmaWxlcyBhcmUgZXhw ZWN0ZWQgdG8gYmUgZm91bmQgaW4gdGhlIGJhY2t1cCBkaXJlY3RvcnkKKwkgKiBmb3IgcGxhaW4t Zm9ybWF0IGJhY2t1cHMuIEluIHRoZSBjYXNlIG9mIHRhci1mb3JtYXQgYmFja3VwcywgaWYgYQor CSAqIHNlcGFyYXRlIFdBTCBhcmNoaXZlIGlzIG5vdCBmb3VuZCwgdGhlIFdBTCBmaWxlcyBhcmUg bW9zdCBsaWtlbHkKKwkgKiBpbmNsdWRlZCB3aXRoaW4gdGhlIG1haW4gZGF0YSBkaXJlY3Rvcnkg YXJjaGl2ZS4KKwkgKi8KKwlpZiAod2FsX3BhdGggPT0gTlVMTCkKKwl7CisJCWlmIChjb250ZXh0 LmZvcm1hdCA9PSAncCcpCisJCQl3YWxfcGF0aCA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250 ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOworCQllbHNlIGlmICh3YWxfYXJjaGl2ZV9wYXRoKQorCQkJ d2FsX3BhdGggPSB3YWxfYXJjaGl2ZV9wYXRoOworCQllbHNlIGlmIChiYXNlX2FyY2hpdmVfcGF0 aCkKKwkJCXdhbF9wYXRoID0gYmFzZV9hcmNoaXZlX3BhdGg7CisJCWVsc2UKKwkJeworCQkJcGdf bG9nX2Vycm9yKCJXQUwgYXJjaGl2ZSBub3QgZm91bmQiKTsKKwkJCXBnX2xvZ19lcnJvcl9oaW50 KCJTcGVjaWZ5IHRoZSBjb3JyZWN0IHBhdGggdXNpbmcgdGhlIG9wdGlvbiAtdy8tLXdhbC1wYXRo LiAgIgorCQkJCQkJCSAgIk9yIHlvdSBtdXN0IHVzZSAtbi8tLW5vLXBhcnNlLXdhbCB3aGVuIHZl cmlmeWluZyBhIHRhci1mb3JtYXQgYmFja3VwLiIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwog CS8qCiAJICogVHJ5IHRvIHBhcnNlIHRoZSByZXF1aXJlZCByYW5nZXMgb2YgV0FMIHJlY29yZHMs IHVubGVzcyB3ZSB3ZXJlIHRvbGQKIAkgKiBub3QgdG8gZG8gc28uCiAJICovCiAJaWYgKCFub19w YXJzZV93YWwpCi0JCXBhcnNlX3JlcXVpcmVkX3dhbCgmY29udGV4dCwgcGdfd2FsZHVtcF9wYXRo LCB3YWxfZGlyZWN0b3J5KTsKKwkJcGFyc2VfcmVxdWlyZWRfd2FsKCZjb250ZXh0LCBwZ193YWxk dW1wX3BhdGgsIHdhbF9wYXRoKTsKIAogCS8qCiAJICogSWYgZXZlcnl0aGluZyBsb29rcyBPSywg dGVsbCB0aGUgdXNlciB0aGlzLCB1bmxlc3Mgd2Ugd2VyZSBhc2tlZCB0bwpAQCAtNzg3LDcgKzgw Miw4IEBAIHZlcmlmeV9jb250cm9sX2ZpbGUoY29uc3QgY2hhciAqY29udHJvbHBhdGgsIHVpbnQ2 NCBtYW5pZmVzdF9zeXN0ZW1faWRlbnRpZmllcikKICAqIGNsb3NlIHdoZW4gd2UncmUgZG9uZSB3 aXRoIGl0LgogICovCiBzdGF0aWMgdm9pZAotdmVyaWZ5X3Rhcl9iYWNrdXAodmVyaWZpZXJfY29u dGV4dCAqY29udGV4dCwgRElSICpkaXIpCit2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmllcl9jb250 ZXh0ICpjb250ZXh0LCBESVIgKmRpciwgY2hhciAqKmJhc2VfYXJjaGl2ZV9wYXRoLAorCQkJCSAg Y2hhciAqKndhbF9hcmNoaXZlX3BhdGgpCiB7CiAJc3RydWN0IGRpcmVudCAqZGlyZW50OwogCVNp bXBsZVB0ckxpc3QgdGFyZmlsZXMgPSB7TlVMTCwgTlVMTH07CkBAIC04MTYsNyArODMyLDggQEAg dmVyaWZ5X3Rhcl9iYWNrdXAodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgRElSICpkaXIpCiAJ CQljaGFyCSAgICpmdWxscGF0aDsKIAogCQkJZnVsbHBhdGggPSBwc3ByaW50ZigiJXMvJXMiLCBj b250ZXh0LT5iYWNrdXBfZGlyZWN0b3J5LCBmaWxlbmFtZSk7Ci0JCQlwcmVjaGVja190YXJfYmFj a3VwX2ZpbGUoY29udGV4dCwgZmlsZW5hbWUsIGZ1bGxwYXRoLCAmdGFyZmlsZXMpOworCQkJcHJl Y2hlY2tfdGFyX2JhY2t1cF9maWxlKGNvbnRleHQsIGZpbGVuYW1lLCBmdWxscGF0aCwgJnRhcmZp bGVzLAorCQkJCQkJCQkJIGJhc2VfYXJjaGl2ZV9wYXRoLCB3YWxfYXJjaGl2ZV9wYXRoKTsKIAkJ CXBmcmVlKGZ1bGxwYXRoKTsKIAkJfQogCX0KQEAgLTg3NSwxNyArODkyLDIxIEBAIHZlcmlmeV90 YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyKQogICoKICAqIFRo ZSBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBhcmUgbW9zdGx5IHRoZSBzYW1lIGFzIHRoZQog ICogdmVyaWZ5X3BsYWluX2JhY2t1cF9maWxlLiBUaGUgYWRkaXRpb25hbCBhcmd1bWVudCBvdXRw dXRzIGEgbGlzdCBvZiB2YWxpZAotICogdGFyIGZpbGVzLgorICogdGFyIGZpbGVzLCBhbG9uZyB3 aXRoIHRoZSBmdWxsIHBhdGhzIHRvIHRoZSBtYWluIGFyY2hpdmUgYW5kIHRoZSBXQUwKKyAqIGRp cmVjdG9yeSBhcmNoaXZlLgogICovCiBzdGF0aWMgdm9pZAogcHJlY2hlY2tfdGFyX2JhY2t1cF9m aWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgsCi0JCQkJCQkgY2hh ciAqZnVsbHBhdGgsIFNpbXBsZVB0ckxpc3QgKnRhcmZpbGVzKQorCQkJCQkJIGNoYXIgKmZ1bGxw YXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxlcywKKwkJCQkJCSBjaGFyICoqYmFzZV9hcmNoaXZl X3BhdGgsIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKQogewogCXN0cnVjdCBzdGF0IHNiOwogCU9p ZAkJCXRibHNwY19vaWQgPSBJbnZhbGlkT2lkOwogCXBnX2NvbXByZXNzX2FsZ29yaXRobSBjb21w cmVzc19hbGdvcml0aG07CiAJdGFyX2ZpbGUgICAqdGFyOwogCWNoYXIJICAgKnN1ZmZpeCA9IE5V TEw7CisJYm9vbAkJaXNfYmFzZV9hcmNoaXZlID0gZmFsc2U7CisJYm9vbAkJaXNfd2FsX2FyY2hp dmUgPSBmYWxzZTsKIAogCS8qIFNob3VsZCBiZSB0YXIgZm9ybWF0IGJhY2t1cCAqLwogCUFzc2Vy dChjb250ZXh0LT5mb3JtYXQgPT0gJ3QnKTsKQEAgLTkxOCw5ICs5MzksMTUgQEAgcHJlY2hlY2tf dGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgs CiAJICogZXh0ZW5zaW9uIHN1Y2ggYXMgLmd6LCAubHo0LCBvciAuenN0LgogCSAqLwogCWlmIChz dHJuY21wKCJiYXNlIiwgcmVscGF0aCwgNCkgPT0gMCkKKwl7CiAJCXN1ZmZpeCA9IHJlbHBhdGgg KyA0OworCQlpc19iYXNlX2FyY2hpdmUgPSB0cnVlOworCX0KIAllbHNlIGlmIChzdHJuY21wKCJw Z193YWwiLCByZWxwYXRoLCA2KSA9PSAwKQorCXsKIAkJc3VmZml4ID0gcmVscGF0aCArIDY7CisJ CWlzX3dhbF9hcmNoaXZlID0gdHJ1ZTsKKwl9CiAJZWxzZQogCXsKIAkJLyogRXhwZWN0ZWQgYSA8 dGFibGVzcGFjZW9pZD4udGFyIGZpbGUgaGVyZS4gKi8KQEAgLTk1Myw4ICs5ODAsMTMgQEAgcHJl Y2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJl bHBhdGgsCiAJICogSWdub3JlIFdBTHMsIGFzIHJlYWRpbmcgYW5kIHZlcmlmaWNhdGlvbiB3aWxs IGJlIGhhbmRsZWQgdGhyb3VnaAogCSAqIHBnX3dhbGR1bXAuCiAJICovCi0JaWYgKHN0cm5jbXAo InBnX3dhbCIsIHJlbHBhdGgsIDYpID09IDApCisJaWYgKGlzX3dhbF9hcmNoaXZlKQorCXsKKwkJ KndhbF9hcmNoaXZlX3BhdGggPSBwc3RyZHVwKGZ1bGxwYXRoKTsKIAkJcmV0dXJuOworCX0KKwll bHNlIGlmIChpc19iYXNlX2FyY2hpdmUpCisJCSpiYXNlX2FyY2hpdmVfcGF0aCA9IHBzdHJkdXAo ZnVsbHBhdGgpOwogCiAJLyoKIAkgKiBBcHBlbmQgdGhlIGluZm9ybWF0aW9uIHRvIHRoZSBsaXN0 IGZvciBjb21wbGV0ZSB2ZXJpZmljYXRpb24gYXQgYSBsYXRlcgpAQCAtMTE4OCw3ICsxMjIwLDcg QEAgdmVyaWZ5X2ZpbGVfY2hlY2tzdW0odmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgbWFuaWZl c3RfZmlsZSAqbSwKICAqLwogc3RhdGljIHZvaWQKIHBhcnNlX3JlcXVpcmVkX3dhbCh2ZXJpZmll cl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpwZ193YWxkdW1wX3BhdGgsCi0JCQkJICAgY2hhciAq d2FsX2RpcmVjdG9yeSkKKwkJCQkgICBjaGFyICp3YWxfcGF0aCkKIHsKIAltYW5pZmVzdF9kYXRh ICptYW5pZmVzdCA9IGNvbnRleHQtPm1hbmlmZXN0OwogCW1hbmlmZXN0X3dhbF9yYW5nZSAqdGhp c193YWxfcmFuZ2UgPSBtYW5pZmVzdC0+Zmlyc3Rfd2FsX3JhbmdlOwpAQCAtMTE5OCw3ICsxMjMw LDcgQEAgcGFyc2VfcmVxdWlyZWRfd2FsKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIg KnBnX3dhbGR1bXBfcGF0aCwKIAkJY2hhcgkgICAqcGdfd2FsZHVtcF9jbWQ7CiAKIAkJcGdfd2Fs ZHVtcF9jbWQgPSBwc3ByaW50ZigiXCIlc1wiIC0tcXVpZXQgLS1wYXRoPVwiJXNcIiAtLXRpbWVs aW5lPSV1IC0tc3RhcnQ9JVgvJTA4WCAtLWVuZD0lWC8lMDhYXG4iLAotCQkJCQkJCQkgIHBnX3dh bGR1bXBfcGF0aCwgd2FsX2RpcmVjdG9yeSwgdGhpc193YWxfcmFuZ2UtPnRsaSwKKwkJCQkJCQkJ ICBwZ193YWxkdW1wX3BhdGgsIHdhbF9wYXRoLCB0aGlzX3dhbF9yYW5nZS0+dGxpLAogCQkJCQkJ CQkgIExTTl9GT1JNQVRfQVJHUyh0aGlzX3dhbF9yYW5nZS0+c3RhcnRfbHNuKSwKIAkJCQkJCQkJ ICBMU05fRk9STUFUX0FSR1ModGhpc193YWxfcmFuZ2UtPmVuZF9sc24pKTsKIAkJZmZsdXNoKE5V TEwpOwpAQCAtMTM2Niw3ICsxMzk4LDcgQEAgdXNhZ2Uodm9pZCkKIAlwcmludGYoXygiICAtUCwg LS1wcm9ncmVzcyAgICAgICAgICAgICAgc2hvdyBwcm9ncmVzcyBpbmZvcm1hdGlvblxuIikpOwog CXByaW50ZihfKCIgIC1xLCAtLXF1aWV0ICAgICAgICAgICAgICAgICBkbyBub3QgcHJpbnQgYW55 IG91dHB1dCwgZXhjZXB0IGZvciBlcnJvcnNcbiIpKTsKIAlwcmludGYoXygiICAtcywgLS1za2lw LWNoZWNrc3VtcyAgICAgICAgc2tpcCBjaGVja3N1bSB2ZXJpZmljYXRpb25cbiIpKTsKLQlwcmlu dGYoXygiICAtdywgLS13YWwtZGlyZWN0b3J5PVBBVEggICAgdXNlIHNwZWNpZmllZCBwYXRoIGZv ciBXQUwgZmlsZXNcbiIpKTsKKwlwcmludGYoXygiICAtdywgLS13YWwtcGF0aD1QQVRIICAgICAg ICAgdXNlIHNwZWNpZmllZCBwYXRoIGZvciBXQUwgZmlsZXNcbiIpKTsKIAlwcmludGYoXygiICAt ViwgLS12ZXJzaW9uICAgICAgICAgICAgICAgb3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24sIHRo ZW4gZXhpdFxuIikpOwogCXByaW50ZihfKCIgIC0/LCAtLWhlbHAgICAgICAgICAgICAgICAgICBz aG93IHRoaXMgaGVscCwgdGhlbiBleGl0XG4iKSk7CiAJcHJpbnRmKF8oIlxuUmVwb3J0IGJ1Z3Mg dG8gPCVzPi5cbiIpLCBQQUNLQUdFX0JVR1JFUE9SVCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0aG0ucGwgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1 cC90LzAwMl9hbGdvcml0aG0ucGwKaW5kZXggMDU1NjE5MWVjOWQuLmVkYzUxNWQ1OTA0IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0aG0ucGwKKysrIGIv c3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDJfYWxnb3JpdGhtLnBsCkBAIC0zMCwxMCArMzAs NiBAQCBzdWIgdGVzdF9jaGVja3N1bXMKIAl7CiAJCSMgQWRkIHN3aXRjaCB0byBnZXQgYSB0YXIt Zm9ybWF0IGJhY2t1cAogCQlwdXNoIEBiYWNrdXAsICgnLS1mb3JtYXQnID0+ICd0YXInKTsKLQot CQkjIEFkZCBzd2l0Y2ggdG8gc2tpcCBXQUwgdmVyaWZpY2F0aW9uLCB3aGljaCBpcyBub3QgeWV0 IHN1cHBvcnRlZCBmb3IKLQkJIyB0YXItZm9ybWF0IGJhY2t1cHMKLQkJcHVzaCBAdmVyaWZ5LCAo Jy0tbm8tcGFyc2Utd2FsJyk7CiAJfQogCiAJIyBBIGJhY2t1cCB3aXRoIGEgYm9ndXMgYWxnb3Jp dGhtIHNob3VsZCBmYWlsLgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8w MDNfY29ycnVwdGlvbi5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRp b24ucGwKaW5kZXggYjFkNjViOGFhMGYuLjg4MmQ3NWQ5ZGMyIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0aW9uLnBsCisrKyBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24ucGwKQEAgLTE5MywxMCArMTkzLDggQEAgZm9yIG15 ICRzY2VuYXJpbyAoQHNjZW5hcmlvKQogCQkJY29tbWFuZF9vayhbICR0YXIsICctY2YnID0+ICIk dGFyX2JhY2t1cF9wYXRoL2Jhc2UudGFyIiwgJy4nIF0pOwogCQkJY2hkaXIoJGN3ZCkgfHwgZGll ICJjaGRpcjogJCEiOwogCi0JCQkjIE5vdyBjaGVjayB0aGF0IHRoZSBiYWNrdXAgbm8gbG9uZ2Vy IHZlcmlmaWVzLiBXZSBtdXN0IHVzZSAtbgotCQkJIyBoZXJlLCBiZWNhdXNlIHBnX3dhbGR1bXAg Y2FuJ3QgeWV0IHJlYWQgV0FMIGZyb20gYSB0YXJmaWxlLgogCQkJY29tbWFuZF9mYWlsc19saWtl KAotCQkJCVsgJ3BnX3ZlcmlmeWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsICR0YXJfYmFja3Vw X3BhdGggXSwKKwkJCQlbICdwZ192ZXJpZnliYWNrdXAnLCAkdGFyX2JhY2t1cF9wYXRoIF0sCiAJ CQkJJHNjZW5hcmlvLT57J2ZhaWxzX2xpa2UnfSwKIAkJCQkiY29ycnVwdCBiYWNrdXAgZmFpbHMg dmVyaWZpY2F0aW9uOiAkbmFtZSIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC90LzAwN193YWwucGwgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwN193YWwucGwK aW5kZXggNzkwODdhMWY2YmUuLjBlMDM3N2JmYWNjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC90LzAwN193YWwucGwKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8w MDdfd2FsLnBsCkBAIC00MiwxMCArNDIsMTAgQEAgY29tbWFuZF9vayhbICdwZ192ZXJpZnliYWNr dXAnLCAnLS1uby1wYXJzZS13YWwnLCAkYmFja3VwX3BhdGggXSwKIGNvbW1hbmRfb2soCiAJWwog CQkncGdfdmVyaWZ5YmFja3VwJywKLQkJJy0td2FsLWRpcmVjdG9yeScgPT4gJHJlbG9jYXRlZF9w Z193YWwsCisJCSctLXdhbC1wYXRoJyA9PiAkcmVsb2NhdGVkX3BnX3dhbCwKIAkJJGJhY2t1cF9w YXRoCiAJXSwKLQknLS13YWwtZGlyZWN0b3J5IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgV0FMIGRp cmVjdG9yeScpOworCSctLXdhbC1wYXRoIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgV0FMIGRpcmVj dG9yeScpOwogCiAjIE1vdmUgZGlyZWN0b3J5IGJhY2sgdG8gb3JpZ2luYWwgbG9jYXRpb24uCiBy ZW5hbWUoJHJlbG9jYXRlZF9wZ193YWwsICRvcmlnaW5hbF9wZ193YWwpIHx8IGRpZSAicmVuYW1l IHBnX3dhbCBiYWNrOiAkISI7CkBAIC05MCw0ICs5MCwyMCBAQCBjb21tYW5kX29rKAogCVsgJ3Bn X3ZlcmlmeWJhY2t1cCcsICRiYWNrdXBfcGF0aDIgXSwKIAkndmFsaWQgYmFzZSBiYWNrdXAgd2l0 aCB0aW1lbGluZSA+IDEnKTsKIAorIyBUZXN0IFdBTCB2ZXJpZmljYXRpb24gZm9yIGEgdGFyLWZv cm1hdCBiYWNrdXAgd2l0aCBhIHNlcGFyYXRlIHBnX3dhbC50YXIsCisjIGFzIHByb2R1Y2VkIGJ5 IHBnX2Jhc2ViYWNrdXAgLS1mb3JtYXQ9dGFyIC0td2FsLW1ldGhvZD1zdHJlYW0uCitteSAkYmFj a3VwX3BhdGgzID0gJHByaW1hcnktPmJhY2t1cF9kaXIgLiAnL3Rlc3RfdGFyX3dhbCc7CiskcHJp bWFyeS0+Y29tbWFuZF9vaygKKwlbCisJCSdwZ19iYXNlYmFja3VwJywKKwkJJy0tcGdkYXRhJyA9 PiAkYmFja3VwX3BhdGgzLAorCQknLS1uby1zeW5jJywKKwkJJy0tZm9ybWF0JyA9PiAndGFyJywK KwkJJy0tY2hlY2twb2ludCcgPT4gJ2Zhc3QnCisJXSwKKwkidGFyIGJhY2t1cCB3aXRoIHNlcGFy YXRlIHBnX3dhbC50YXIiKTsKK2NvbW1hbmRfb2soCisJWyAncGdfdmVyaWZ5YmFja3VwJywgJGJh Y2t1cF9wYXRoMyBdLAorCSdXQUwgdmVyaWZpY2F0aW9uIHN1Y2NlZWRzIHdpdGggc2VwYXJhdGUg cGdfd2FsLnRhcicpOworCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8w MDhfdW50YXIucGwKaW5kZXggYWU2N2FlODVhMzEuLjE2MWMwOGMxOTBkIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwOF91bnRhci5wbAorKysgYi9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC90LzAwOF91bnRhci5wbApAQCAtNDcsNyArNDcsNiBAQCBteSAkdHNvaWQgPSAk cHJpbWFyeS0+c2FmZV9wc3FsKAogCQlTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVS RSBzcGNuYW1lID0gJ3JlZ3Jlc3NfdHMxJykpOwogCiBteSAkYmFja3VwX3BhdGggPSAkcHJpbWFy eS0+YmFja3VwX2RpciAuICcvc2VydmVyLWJhY2t1cCc7Ci1teSAkZXh0cmFjdF9wYXRoID0gJHBy aW1hcnktPmJhY2t1cF9kaXIgLiAnL2V4dHJhY3RlZC1iYWNrdXAnOwogCiBteSBAdGVzdF9jb25m aWd1cmF0aW9uID0gKAogCXsKQEAgLTEyMywxNCArMTIyLDEyIEBAIGZvciBteSAkdGMgKEB0ZXN0 X2NvbmZpZ3VyYXRpb24pCiAJCSMgVmVyaWZ5IHRhciBiYWNrdXAuCiAJCSRwcmltYXJ5LT5jb21t YW5kX29rKAogCQkJWwotCQkJCSdwZ192ZXJpZnliYWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLAot CQkJCSctLWV4aXQtb24tZXJyb3InLCAkYmFja3VwX3BhdGgsCisJCQkJJ3BnX3ZlcmlmeWJhY2t1 cCcsICctLWV4aXQtb24tZXJyb3InLCAkYmFja3VwX3BhdGgsCiAJCQldLAogCQkJInZlcmlmeSBi YWNrdXAsIGNvbXByZXNzaW9uICRtZXRob2QiKTsKIAogCQkjIENsZWFudXAuCiAJCXJtdHJlZSgk YmFja3VwX3BhdGgpOwotCQlybXRyZWUoJGV4dHJhY3RfcGF0aCk7CiAJfQogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIucGwgYi9zcmMv YmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIucGwKaW5kZXggMWFjN2I1ZGI3 NWEuLjk2NzBmYmU0ZmRhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAx MF9jbGllbnRfdW50YXIucGwKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMTBfY2xp ZW50X3VudGFyLnBsCkBAIC0zMiw3ICszMiw2IEBAIHByaW50ICRqZiAkanVua19kYXRhOwogY2xv c2UgJGpmOwogCiBteSAkYmFja3VwX3BhdGggPSAkcHJpbWFyeS0+YmFja3VwX2RpciAuICcvY2xp ZW50LWJhY2t1cCc7Ci1teSAkZXh0cmFjdF9wYXRoID0gJHByaW1hcnktPmJhY2t1cF9kaXIgLiAn L2V4dHJhY3RlZC1iYWNrdXAnOwogCiBteSBAdGVzdF9jb25maWd1cmF0aW9uID0gKAogCXsKQEAg LTEzNywxMyArMTM2LDExIEBAIGZvciBteSAkdGMgKEB0ZXN0X2NvbmZpZ3VyYXRpb24pCiAJCSMg VmVyaWZ5IHRhciBiYWNrdXAuCiAJCSRwcmltYXJ5LT5jb21tYW5kX29rKAogCQkJWwotCQkJCSdw Z192ZXJpZnliYWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLAotCQkJCSctLWV4aXQtb24tZXJyb3In LCAkYmFja3VwX3BhdGgsCisJCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLWV4aXQtb24tZXJyb3In LCAkYmFja3VwX3BhdGgsCiAJCQldLAogCQkJInZlcmlmeSBiYWNrdXAsIGNvbXByZXNzaW9uICRt ZXRob2QiKTsKIAogCQkjIENsZWFudXAuCi0JCXJtdHJlZSgkZXh0cmFjdF9wYXRoKTsKIAkJcm10 cmVlKCRiYWNrdXBfcGF0aCk7CiAJfQogfQotLSAKMi40Ny4xCgo= --00000000000046607a064d730722--