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 1w3Zsw-001MSr-0P for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 13:27:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3Zsu-006AEi-14 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 13:27:28 +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 1w3Zst-006AEa-2h for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 13:27:28 +0000 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w3Zsq-00000000BLk-2cqe for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 13:27:27 +0000 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-359f35dfef6so353862a91.2 for ; Fri, 20 Mar 2026 06:27:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774013242; cv=none; d=google.com; s=arc-20240605; b=iI2gl6No84GcXjh+oGNxmjxVqvTxP7WkIhOvnnznOOPGCdkiaQnzks4lIrgmt//0ue i+fvmmZZHxj5sRJRAwCBsU5k9vVLwKGUK6ASboMx7DLc5/gfM5E8O6uRV4liAS3DF07c E1Sh+80l7bSw4ZIDQn1GFNz2UgxvSjUHEwv3ouLfJxDtHlrl0zue6AzY3JygbtDemU2g iiUVnZWRd5mMnEOb7bGfl3i0O+OvriaHPQaQj6jxdkS+z4/nxzeyFyqRTodr2KZ+GbDl ypQ5+7j5V2pbkYiuMewqrDQDGCZggD3HSQMWfqJ1CIINKrBsqg7LnYy1yNYYzX855LeM yPPg== 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=yR0O+J9e495MHh1v1qf8zAibdyPi10MDWJY+/hmHfLQ=; fh=Tr48Ugr/uCBxQcMiVxq+as25/QaDQhs/2sdy/Of1nkQ=; b=OYvOieATNDJGyEcHjySav8Lx5oi8empoW1ZRTJ02gndPbR7tjYldSNc1ZTqn3eWWuF 9vawwoHX3vqJ5Ih4TGOg/2BgF5K+yigH0DrXdHdLaySU0XZwxeXhfV9iNJIZTH98NlxD 9mBCkhKCF9CNRsc7BZaGfHIHXRdhTvPvP2Ky7RWGni5FNTTAei+3JoCKJkYpkogB4ns0 /mDeLWylaW5sq6ICA/jhAvIKFronmFmqEA7pXY0V/j/Ekp1dU1O6mzn4unlGHzrprjhl lGLARD5ZgIcvWuYuMZHuWrH3Kb+pB6e/SiM/x0JhX3fnVL5+IbcvRi/C+hyoKxTrhi+a U0+A==; 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=1774013242; x=1774618042; 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=yR0O+J9e495MHh1v1qf8zAibdyPi10MDWJY+/hmHfLQ=; b=eT2FIn4aKt7/KAWwH+mXe/zT0XHWURNei0KOsnu7mq/0QJquTzH+ramIRkMC0pdkak 4h2B+lu1LsfGW+S0pU4JTZlSnoIshc2c0/fA1Pvv8ahbDYa2Dtngy0Lku/zsGFYKv0qK bHV89ea73za9BOjFHdzUT4GAELUFC5yVq0Xl/JrVQZrzItHFlySjwbaZp2Hy7cz7Z3aI S9Uw2pzVOH7fSzXKO5xRKNqQOQqsgsnLHIp5l4uVASe1n6sPLnLKxLY/eWuWEdjoNaUs lhd5s9VG8TajQT4pmukt2yQk5tt17A3kf1SgbgEAt6f7VndIvGTbD0nO4tmUTFBe+Qxh blxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774013242; x=1774618042; 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=yR0O+J9e495MHh1v1qf8zAibdyPi10MDWJY+/hmHfLQ=; b=HNQXwABfYtyUl0exXX4FY7mFZPXO9ju8Ys2JnHAepV9XjAsHuazD2nb5xkdztlHlnM bz8jrcJhB+upa5/cGOT2zWrZ1oMCGm8mjEIYVN/3vVKgif7gLLsttEyRrBbunLRHS9SD lNhSp3D3xx2BhvWGR4HI1yVl3yOxeBgjXkCziDBQWBR4ZuQX/VoLBefMWXnGt58tA9zf baOiBir54zfNXT9GRVg301ZjMumFTUdIExeZSaor4Zw1NvX4aFCejBc6AKm0TRqE4nBk tPvF2T+E6MlGrgrxmfHFi31p8OXZao0ildvaTXP6ExxH/5Mp+GR2EF1uzvWkNDZE6mrz 3xAg== X-Forwarded-Encrypted: i=1; AJvYcCXSryRYkRbhjvIiwRj+YBJnq9MDPAhVpLMBePRofnV+hlOZxKLLOGIWJWMvv8kaf25kdxpI9WB04jZn4VcZ@lists.postgresql.org X-Gm-Message-State: AOJu0YydSHifTusGLvq68RX3hGEraADplXWlewu9LanSV2z4rjj61AHK CnyYhdiQxWX5CkJDdccf6yqKh9OYrRQ2NhCpcvBbU/eh00YmgahYtpYM2RL6fdiadXO5VZ8a1cH cNIRj0Oy9/8M4JHBMZRNiSi3xhptVyjo= X-Gm-Gg: ATEYQzwRfu/SYnDRJv8rxdRcNgvOi/kzhzqiC8E2G72JnuUGv0PTHhDsHj3dVd8ikDh B47FUvVzJXfKtrGX4TNEDPTgPxl4sW071LDybFyH2i/MwMTcix7voFDg6I7dvjIC3D5RByi8dfx k2niMJ3suR6S7XyA9JrN+Ko85s2KblpJN07bdHY0+xbw1vDBhBp6lS9SnLaV2Ntgjb+CFPqu4zy qa7YThOE/u3Tc0ageGvc5YJbF2o1o8bj8ZZyU04jUX9iUiT/wEhan3GEzyEz6WCs3goLt3LGKBT LkBxc2P/ X-Received: by 2002:a17:90b:3d48:b0:359:fecd:1cd3 with SMTP id 98e67ed59e1d1-35bd2d1cf08mr2104297a91.23.1774013241655; Fri, 20 Mar 2026 06:27:21 -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 18:56:42 +0530 X-Gm-Features: AaiRm51XjC0OTUryWhP-jviY8imNJZgJIV4GLw6zJG-QbEPq3yLQtdS_FOXdNuI 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="000000000000194ef4064d74a56f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000194ef4064d74a56f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 20, 2026 at 5:01=E2=80=AFPM Amul Sul wrote: > > 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 versio= n. > > > + /* > > + * 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. > Since Andrew also leans toward creating the directory only when needed, I have reconsidered the approach. I think we can pass waldir (the archive directory) via XLogDumpPrivate, and I=E2=80=99ve implemented t= hat in the attached version. Regards, Amul --000000000000194ef4064d74a56f Content-Type: application/octet-stream; name="v22-0001-Move-tar-detection-and-compression-logic-to-comm.patch" Content-Disposition: attachment; filename="v22-0001-Move-tar-detection-and-compression-logic-to-comm.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmyxc0cj0 RnJvbSBmMzM4YmIxMWM0ZDY5Y2EwOTJkZTZhODU5MzliOTNhMWJkYjM0MTkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMTkgTWFyIDIwMjYgMTU6NDM6MzAgKzA1MzAKU3ViamVjdDogW1BBVENIIHYyMiAxLzVdIE1v 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== --000000000000194ef4064d74a56f Content-Type: application/octet-stream; name="v22-0002-pg_waldump-Preparatory-refactoring-for-tar-archi.patch" Content-Disposition: attachment; filename="v22-0002-pg_waldump-Preparatory-refactoring-for-tar-archi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmyxc5ni1 RnJvbSAwN2M1M2EwMzlkOGJlMmFiZWRjNjA4MTBhYjYyZWNhNzdkMjFiZmI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMTkgTWFyIDIwMjYgMTU6NDM6MzkgKzA1MzAKU3ViamVjdDogW1BBVENIIHYyMiAyLzVdIHBn 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= --000000000000194ef4064d74a56f Content-Type: application/octet-stream; name="v22-0003-pg_waldump-Add-support-for-reading-WAL-from-tar-.patch" Content-Disposition: attachment; filename="v22-0003-pg_waldump-Add-support-for-reading-WAL-from-tar-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmyxcahg2 RnJvbSAxNTI0YTQ5MWQ5M2YxYWJiMzQ1MzBiYzlmZWY0MTE2YmJkODRkMzNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMTkgTWFyIDIwMjYgMTU6NDM6NDYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYyMiAzLzVdIHBn 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 fCA4NjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmluL3BnX3dhbGR1bXAvbWVz b24uYnVpbGQgICAgICAgfCAgIDQgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMg ICAgICB8IDI4OCArKysrKysrLS0KIHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggICAg ICB8ICA1MSArKwogc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsICAgIHwgMjQ2ICsr KysrKy0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgfCAgIDQgKwogOCBm aWxlcyBjaGFuZ2VkLCAxMzU2IGluc2VydGlvbnMoKyksIDEyOCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvcGdfd2FsZHVtcC5zZ21sCmluZGV4IGQxNzE1ZmY1MTI0Li45YmJiNGJkNTc3MiAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9wZ193YWxkdW1wLnNnbWwKQEAgLTE0MSwxMyArMTQxLDIxIEBAIFBvc3RncmVTUUwgZG9j dW1lbnRhdGlvbgogICAgICAgPHRlcm0+PG9wdGlvbj4tLXBhdGg9PHJlcGxhY2VhYmxlPnBhdGg8 L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8 cGFyYT4KLSAgICAgICAgU3BlY2lmaWVzIGEgZGlyZWN0b3J5IHRvIHNlYXJjaCBmb3IgV0FMIHNl Z21lbnQgZmlsZXMgb3IgYQotICAgICAgICBkaXJlY3Rvcnkgd2l0aCBhIDxsaXRlcmFsPnBnX3dh bDwvbGl0ZXJhbD4gc3ViZGlyZWN0b3J5IHRoYXQKKyAgICAgICAgU3BlY2lmaWVzIGEgdGFyIGFy Y2hpdmUgb3IgYSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBXQUwgc2VnbWVudCBmaWxlcworICAg ICAgICBvciBhIGRpcmVjdG9yeSB3aXRoIGEgPGxpdGVyYWw+cGdfd2FsPC9saXRlcmFsPiBzdWJk aXJlY3RvcnkgdGhhdAogICAgICAgICBjb250YWlucyBzdWNoIGZpbGVzLiAgVGhlIGRlZmF1bHQg aXMgdG8gc2VhcmNoIGluIHRoZSBjdXJyZW50CiAgICAgICAgIGRpcmVjdG9yeSwgdGhlIDxsaXRl cmFsPnBnX3dhbDwvbGl0ZXJhbD4gc3ViZGlyZWN0b3J5IG9mIHRoZQogICAgICAgICBjdXJyZW50 IGRpcmVjdG9yeSwgYW5kIHRoZSA8bGl0ZXJhbD5wZ193YWw8L2xpdGVyYWw+IHN1YmRpcmVjdG9y eQogICAgICAgICBvZiA8ZW52YXI+UEdEQVRBPC9lbnZhcj4uCiAgICAgICAgPC9wYXJhPgorICAg ICAgIDxwYXJhPgorICAgICAgICBJZiBhIHRhciBhcmNoaXZlIGlzIHByb3ZpZGVkIGFuZCBpdHMg V0FMIHNlZ21lbnQgZmlsZXMgYXJlIG5vdCBpbgorICAgICAgICBzZXF1ZW50aWFsIG9yZGVyLCB0 aG9zZSBmaWxlcyB3aWxsIGJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5CisgICAg ICAgIG5hbWVkIHN0YXJ0aW5nIHdpdGggPGZpbGVuYW1lPndhbGR1bXBfdG1wPC9maWxlbmFtZT4u IFRoaXMgZGlyZWN0b3J5IHdpbGwgYmUKKyAgICAgICAgY3JlYXRlZCBpbnNpZGUgdGhlIGRpcmVj dG9yeSBzcGVjaWZpZWQgYnkgdGhlIDxlbnZhcj5UTVBESVI8L2VudmFyPgorICAgICAgICBlbnZp cm9ubWVudCB2YXJpYWJsZSBpZiBpdCBpcyBzZXQ7IG90aGVyd2lzZSwgaXQgd2lsbCBiZSBjcmVh dGVkIHdpdGhpbgorICAgICAgICB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHRhciBhcmNoaXZl LgorICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgogCkBAIC0zODMsNiArMzkxLDE3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICA8 L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlz dGVudHJ5PgorICAgIDx0ZXJtPjxlbnZhcj5UTVBESVI8L2VudmFyPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRGlyZWN0b3J5IGluIHdoaWNoIHRvIGNyZWF0ZSB0 ZW1wb3JhcnkgZmlsZXMgd2hlbiByZWFkaW5nIFdBTCBmcm9tIGEKKyAgICAgIHRhciBhcmNoaXZl IHdpdGggb3V0LW9mLW9yZGVyIHNlZ21lbnQgZmlsZXMuIElmIG5vdCBzZXQsIHRoZSB0ZW1wb3Jh cnkKKyAgICAgIGRpcmVjdG9yeSBpcyBjcmVhdGVkIHdpdGhpbiB0aGUgc2FtZSBkaXJlY3Rvcnkg YXMgdGhlIHRhciBhcmNoaXZlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNlY3QxPgogCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZpbGUgYi9zcmMvYmluL3BnX3dhbGR1bXAvTWFr ZWZpbGUKaW5kZXggNGMxZWU2NDk1MDEuLmFhYmI4NzU2NmEyIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX3dhbGR1bXAvTWFrZWZpbGUKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCkBA IC0zLDYgKzMsOSBAQAogUEdGSUxFREVTQyA9ICJwZ193YWxkdW1wIC0gZGVjb2RlIGFuZCBkaXNw bGF5IFdBTCIKIFBHQVBQSUNPTj13aW4zMgogCisjIG1ha2UgdGhlc2UgYXZhaWxhYmxlIHRvIFRB UCB0ZXN0IHNjcmlwdHMKK2V4cG9ydCBUQVIKKwogc3ViZGlyID0gc3JjL2Jpbi9wZ193YWxkdW1w CiB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01h a2VmaWxlLmdsb2JhbApAQCAtMTAsMTMgKzEzLDE1IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIp L3NyYy9NYWtlZmlsZS5nbG9iYWwKIE9CSlMgPSBcCiAJJChSTUdSREVTQ09CSlMpIFwKIAkkKFdJ TjMyUkVTKSBcCisJYXJjaGl2ZV93YWxkdW1wLm8gXAogCWNvbXBhdC5vIFwKIAlwZ193YWxkdW1w Lm8gXAogCXJtZ3JkZXNjLm8gXAogCXhsb2dyZWFkZXIubyBcCiAJeGxvZ3N0YXRzLm8KIAotb3Zl cnJpZGUgQ1BQRkxBR1MgOj0gLURGUk9OVEVORCAkKENQUEZMQUdTKQorb3ZlcnJpZGUgQ1BQRkxB R1MgOj0gLURGUk9OVEVORCAtSSQobGlicHFfc3JjZGlyKSAkKENQUEZMQUdTKQorTERGTEFHU19J TlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMKIAog Uk1HUkRFU0NTT1VSQ0VTID0gJChzb3J0ICQobm90ZGlyICQod2lsZGNhcmQgJCh0b3Bfc3JjZGly KS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvKmRlc2MqLmMpKSkKIFJNR1JERVNDT0JKUyA9 ICQocGF0c3Vic3QgJS5jLCUubywkKFJNR1JERVNDU09VUkNFUykpCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvYXJj aGl2ZV93YWxkdW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYz NzI3NzczNjZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVf d2FsZHVtcC5jCkBAIC0wLDAgKzEsODYxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBh cmNoaXZlX3dhbGR1bXAuYworICoJCUEgZ2VuZXJpYyBmYWNpbGl0eSBmb3IgcmVhZGluZyBXQUwg ZGF0YSBmcm9tIHRhciBhcmNoaXZlcyB2aWEgYXJjaGl2ZQorICoJCXN0cmVhbWVyLgorICoKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy9iaW4vcGdfd2FsZHVtcC9h cmNoaXZlX3dhbGR1bXAuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRl ICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJhY2Nl c3MveGxvZ19pbnRlcm5hbC5oIgorI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKKyNpbmNs dWRlICJjb21tb24vaGFzaGZuLmgiCisjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKKyNpbmNs dWRlICJmZV91dGlscy9zaW1wbGVfbGlzdC5oIgorI2luY2x1ZGUgInBnX3dhbGR1bXAuaCIKKwor LyoKKyAqIEhvdyBtYW55IGJ5dGVzIHNob3VsZCB3ZSB0cnkgdG8gcmVhZCBmcm9tIGEgZmlsZSBh dCBvbmNlPworICovCisjZGVmaW5lIFJFQURfQ0hVTktfU0laRQkJCQkoMTI4ICogMTAyNCkKKwor LyogVGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3Igc3BpbGxlZCBXQUwgc2VnbWVudCBmaWxlcyAqLwor Y2hhcgkgICAqVG1wV2FsU2VnRGlyID0gTlVMTDsKKworLyoKKyAqIENoZWNrIGlmIHRoZSBzdGFy dCBzZWdtZW50IG51bWJlciBpcyB6ZXJvOyB0aGlzIGluZGljYXRlcyBhIHJlcXVlc3QgdG8gcmVh ZAorICogYW55IFdBTCBmaWxlLgorICovCisjZGVmaW5lIFJFQURfQU5ZX1dBTChwcml2YXRlSW5m bykJKChwcml2YXRlSW5mbyktPnN0YXJ0X3NlZ25vID09IDApCisKKy8qCisgKiBIYXNoIGVudHJ5 IHJlcHJlc2VudGluZyBhIFdBTCBzZWdtZW50IHJldHJpZXZlZCBmcm9tIHRoZSBhcmNoaXZlLgor ICoKKyAqIFdoaWxlIFdBTCBzZWdtZW50cyBhcmUgdHlwaWNhbGx5IHJlYWQgc2VxdWVudGlhbGx5 LCBpbmRpdmlkdWFsIGVudHJpZXMKKyAqIG1haW50YWluIHRoZWlyIG93biBidWZmZXJzIGZvciB0 aGUgZm9sbG93aW5nIHJlYXNvbnM6CisgKgorICogMS4gQm91bmRhcnkgSGFuZGxpbmc6IFRoZSBh cmNoaXZlIHN0cmVhbWVyIHByb3ZpZGVzIGEgY29udGludW91cyBieXRlCisgKiBzdHJlYW0uIEEg c2luZ2xlIHN0cmVhbWluZyBjaHVuayBtYXkgY29udGFpbiB0aGUgZW5kIG9mIG9uZSBXQUwgc2Vn bWVudAorICogYW5kIHRoZSBzdGFydCBvZiB0aGUgbmV4dC4gU2VwYXJhdGUgYnVmZmVycyBhbGxv dyB1cyB0byBlYXNpbHkKKyAqIHBhcnRpdGlvbiBhbmQgdHJhY2sgdGhlc2UgYnl0ZXMgYnkgdGhl aXIgcmVzcGVjdGl2ZSBzZWdtZW50cy4KKyAqCisgKiAyLiBPdXQtb2YtT3JkZXIgU3VwcG9ydDog RGVkaWNhdGVkIGJ1ZmZlcnMgc2ltcGxpZnkgbG9naWMgd2hlbiBzZWdtZW50cworICogYXJlIGFy Y2hpdmVkIG9yIHJldHJpZXZlZCBvdXQgb2Ygc2VxdWVuY2UuCisgKgorICogVG8gbWluaW1pemUg dGhlIG1lbW9yeSBmb290cHJpbnQsIGVudHJpZXMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgYnVmZmVy cyBhcmUKKyAqIGZyZWVkIGltbWVkaWF0ZWx5IG9uY2UgY29uc3VtZWQuIFNpbmNlIHBnX3dhbGR1 bXAgZG9lcyBub3QgcmVxdWVzdCB0aGUgc2FtZQorICogYnl0ZXMgdHdpY2UsIGEgc2VnbWVudCBp cyBkaXNjYXJkZWQgYXMgc29vbiBhcyBwZ193YWxkdW1wIG1vdmVzIHBhc3QgaXQuCisgKi8KK3R5 cGVkZWYgc3RydWN0IEFyY2hpdmVkV0FMRmlsZQoreworCXVpbnQzMgkJc3RhdHVzOwkJCS8qIGhh c2ggc3RhdHVzICovCisJY29uc3QgY2hhciAqZm5hbWU7CQkJLyogaGFzaCBrZXk6IFdBTCBzZWdt ZW50IG5hbWUgKi8KKworCVN0cmluZ0luZm8JYnVmOwkJCS8qIGhvbGRzIFdBTCBieXRlcyByZWFk IGZyb20gYXJjaGl2ZSAqLworCWJvb2wJCXNwaWxsZWQ7CQkvKiB0cnVlIGlmIHRoZSBXQUwgZGF0 YSB3YXMgc3BpbGxlZCB0byBhCisJCQkJCQkJCSAqIHRlbXBvcmFyeSBmaWxlICovCisKKwlpbnQJ CQlyZWFkX2xlbjsJCS8qIHRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gYXJjaGl2ZSBmb3IgdGhp cworCQkJCQkJCQkgKiBzZWdtZW50LCBpbmNsdWRpbmcgYWxyZWFkeS1jb25zdW1lZCBkYXRhICov Cit9IEFyY2hpdmVkV0FMRmlsZTsKKworc3RhdGljIHVpbnQzMiBoYXNoX3N0cmluZ19wb2ludGVy KGNvbnN0IGNoYXIgKnMpOworI2RlZmluZSBTSF9QUkVGSVgJCQkJQXJjaGl2ZWRXQUwKKyNkZWZp bmUgU0hfRUxFTUVOVF9UWVBFCQkJQXJjaGl2ZWRXQUxGaWxlCisjZGVmaW5lIFNIX0tFWV9UWVBF CQkJCWNvbnN0IGNoYXIgKgorI2RlZmluZSBTSF9LRVkJCQkJCWZuYW1lCisjZGVmaW5lIFNIX0hB U0hfS0VZKHRiLCBrZXkpCWhhc2hfc3RyaW5nX3BvaW50ZXIoa2V5KQorI2RlZmluZSBTSF9FUVVB TCh0YiwgYSwgYikJCShzdHJjbXAoYSwgYikgPT0gMCkKKyNkZWZpbmUgU0hfU0NPUEUJCQkJc3Rh dGljIGlubGluZQorI2RlZmluZSBTSF9SQVdfQUxMT0NBVE9SCQlwZ19tYWxsb2MwCisjZGVmaW5l IFNIX0RFQ0xBUkUKKyNkZWZpbmUgU0hfREVGSU5FCisjaW5jbHVkZSAibGliL3NpbXBsZWhhc2gu aCIKKwordHlwZWRlZiBzdHJ1Y3QgYXN0cmVhbWVyX3dhbGR1bXAKK3sKKwlhc3RyZWFtZXIJYmFz ZTsKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvOworfSBhc3RyZWFtZXJfd2FsZHVtcDsK Kworc3RhdGljIEFyY2hpdmVkV0FMRmlsZSAqZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0IGNo YXIgKmZuYW1lLAorCQkJCQkJCQkJCQkgIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOwor c3RhdGljIGludAlyZWFkX2FyY2hpdmVfZmlsZShYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZv LCBTaXplIGNvdW50KTsKK3N0YXRpYyB2b2lkIHNldHVwX3RtcHdhbF9kaXIoY29uc3QgY2hhciAq d2FsZGlyKTsKK3N0YXRpYyB2b2lkIGNsZWFudXBfdG1wd2FsX2Rpcl9hdGV4aXQodm9pZCk7CisK K3N0YXRpYyBGSUxFICpwcmVwYXJlX3RtcF93cml0ZShjb25zdCBjaGFyICpmbmFtZSwgWExvZ0R1 bXBQcml2YXRlICpwcml2YXRlSW5mbyk7CitzdGF0aWMgdm9pZCBwZXJmb3JtX3RtcF93cml0ZShj b25zdCBjaGFyICpmbmFtZSwgU3RyaW5nSW5mbyBidWYsIEZJTEUgKmZpbGUpOworCitzdGF0aWMg YXN0cmVhbWVyICphc3RyZWFtZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2YXRl SW5mbyk7CitzdGF0aWMgdm9pZCBhc3RyZWFtZXJfd2FsZHVtcF9jb250ZW50KGFzdHJlYW1lciAq c3RyZWFtZXIsCisJCQkJCQkJCQkgIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkJCQkJ CSAgY29uc3QgY2hhciAqZGF0YSwgaW50IGxlbiwKKwkJCQkJCQkJCSAgYXN0cmVhbWVyX2FyY2hp dmVfY29udGV4dCBjb250ZXh0KTsKK3N0YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxkdW1wX2ZpbmFs aXplKGFzdHJlYW1lciAqc3RyZWFtZXIpOworc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1bXBf ZnJlZShhc3RyZWFtZXIgKnN0cmVhbWVyKTsKKworc3RhdGljIGJvb2wgbWVtYmVyX2lzX3dhbF9m aWxlKGFzdHJlYW1lcl93YWxkdW1wICpteXN0cmVhbWVyLAorCQkJCQkJCSAgIGFzdHJlYW1lcl9t ZW1iZXIgKm1lbWJlciwKKwkJCQkJCQkgICBjaGFyICoqZm5hbWUpOworCitzdGF0aWMgY29uc3Qg YXN0cmVhbWVyX29wcyBhc3RyZWFtZXJfd2FsZHVtcF9vcHMgPSB7CisJLmNvbnRlbnQgPSBhc3Ry ZWFtZXJfd2FsZHVtcF9jb250ZW50LAorCS5maW5hbGl6ZSA9IGFzdHJlYW1lcl93YWxkdW1wX2Zp bmFsaXplLAorCS5mcmVlID0gYXN0cmVhbWVyX3dhbGR1bXBfZnJlZQorfTsKKworLyoKKyAqIElu aXRpYWxpemVzIHRoZSB0YXIgYXJjaGl2ZSByZWFkZXI6IG9wZW5zIHRoZSBhcmNoaXZlLCBidWls ZHMgYSBoYXNoIHRhYmxlCisgKiBmb3IgV0FMIGVudHJpZXMsIHJlYWRzIGFoZWFkIHVudGlsIGEg ZnVsbCBXQUwgcGFnZSBoZWFkZXIgaXMgYXZhaWxhYmxlIHRvCisgKiBkZXRlcm1pbmUgdGhlIFdB TCBzZWdtZW50IHNpemUsIGFuZCBjb21wdXRlcyBzdGFydC9lbmQgc2VnbWVudCBudW1iZXJzIGZv cgorICogZmlsdGVyaW5nLgorICovCit2b2lkCitpbml0X2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1w UHJpdmF0ZSAqcHJpdmF0ZUluZm8sCisJCQkJCXBnX2NvbXByZXNzX2FsZ29yaXRobSBjb21wcmVz c2lvbikKK3sKKwlpbnQJCQlmZDsKKwlhc3RyZWFtZXIgICpzdHJlYW1lcjsKKwlBcmNoaXZlZFdB TEZpbGUgKmVudHJ5ID0gTlVMTDsKKwlYTG9nTG9uZ1BhZ2VIZWFkZXIgbG9uZ2hkcjsKKwlYTG9n U2VnTm8Jc2Vnbm87CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKworCS8qIE9wZW4gdGFyIGFyY2hp dmUgYW5kIHN0b3JlIGl0cyBmaWxlIGRlc2NyaXB0b3IgKi8KKwlmZCA9IG9wZW5fZmlsZV9pbl9k aXJlY3RvcnkocHJpdmF0ZUluZm8tPmFyY2hpdmVfZGlyLAorCQkJCQkJCQlwcml2YXRlSW5mby0+ YXJjaGl2ZV9uYW1lKTsKKworCWlmIChmZCA8IDApCisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3Bl biBmaWxlIFwiJXNcIiIsIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworCisJcHJpdmF0ZUlu Zm8tPmFyY2hpdmVfZmQgPSBmZDsKKworCXN0cmVhbWVyID0gYXN0cmVhbWVyX3dhbGR1bXBfbmV3 KHByaXZhdGVJbmZvKTsKKworCS8qIFdlIG11c3QgZmlyc3QgcGFyc2UgdGhlIHRhciBhcmNoaXZl LiAqLworCXN0cmVhbWVyID0gYXN0cmVhbWVyX3Rhcl9wYXJzZXJfbmV3KHN0cmVhbWVyKTsKKwor CS8qIElmIHRoZSBhcmNoaXZlIGlzIGNvbXByZXNzZWQsIGRlY29tcHJlc3MgYmVmb3JlIHBhcnNp bmcuICovCisJaWYgKGNvbXByZXNzaW9uID09IFBHX0NPTVBSRVNTSU9OX0daSVApCisJCXN0cmVh bWVyID0gYXN0cmVhbWVyX2d6aXBfZGVjb21wcmVzc29yX25ldyhzdHJlYW1lcik7CisJZWxzZSBp ZiAoY29tcHJlc3Npb24gPT0gUEdfQ09NUFJFU1NJT05fTFo0KQorCQlzdHJlYW1lciA9IGFzdHJl YW1lcl9sejRfZGVjb21wcmVzc29yX25ldyhzdHJlYW1lcik7CisJZWxzZSBpZiAoY29tcHJlc3Np b24gPT0gUEdfQ09NUFJFU1NJT05fWlNURCkKKwkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfenN0ZF9k ZWNvbXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKKworCXByaXZhdGVJbmZvLT5hcmNoaXZlX3N0cmVh bWVyID0gc3RyZWFtZXI7CisKKwkvKgorCSAqIEFsbG9jYXRlIGEgYnVmZmVyIGZvciByZWFkaW5n IHRoZSBhcmNoaXZlIGZpbGUgdG8gZmFjaWxpdGF0ZSBjb250ZW50CisJICogZGVjb2Rpbmc7IHJl YWQgcmVxdWVzdHMgbXVzdCBub3QgZXhjZWVkIHRoZSBhbGxvY2F0ZWQgYnVmZmVyIHNpemUuCisJ ICovCisJcHJpdmF0ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYgPSBwZ19tYWxsb2MoUkVBRF9DSFVO S19TSVpFKTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlwcml2YXRlSW5mby0+YXJj aGl2ZV9yZWFkX2J1Zl9zaXplID0gUkVBRF9DSFVOS19TSVpFOworI2VuZGlmCisKKwkvKgorCSAq IEhhc2ggdGFibGUgc3RvcmluZyBXQUwgZW50cmllcyByZWFkIGZyb20gdGhlIGFyY2hpdmUgd2l0 aCBhbiBhcmJpdHJhcnkKKwkgKiBpbml0aWFsIHNpemUuCisJICovCisJcHJpdmF0ZUluZm8tPmFy Y2hpdmVfd2FsX2h0YWIgPSBBcmNoaXZlZFdBTF9jcmVhdGUoOCwgTlVMTCk7CisKKwkvKgorCSAq IFJlYWQgdW50aWwgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgZnVsbCBXQUwgcGFnZSAoWExPR19CTENL U1ogYnl0ZXMpIGZyb20KKwkgKiB0aGUgZmlyc3QgV0FMIHNlZ21lbnQgaW4gdGhlIGFyY2hpdmUg c28gd2UgY2FuIGV4dHJhY3QgdGhlIFdBTCBzZWdtZW50CisJICogc2l6ZSBmcm9tIHRoZSBsb25n IHBhZ2UgaGVhZGVyLgorCSAqLworCXdoaWxlIChlbnRyeSA9PSBOVUxMIHx8IGVudHJ5LT5idWYt PmxlbiA8IFhMT0dfQkxDS1NaKQorCXsKKwkJaWYgKHJlYWRfYXJjaGl2ZV9maWxlKHByaXZhdGVJ bmZvLCBYTE9HX0JMQ0tTWikgPT0gMCkKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBXQUwg aW4gYXJjaGl2ZSBcIiVzXCIiLAorCQkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisK KwkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGU7CisJfQorCisJLyogRXh0cmFjdCB0aGUg V0FMIHNlZ21lbnQgc2l6ZSBmcm9tIHRoZSBsb25nIHBhZ2UgaGVhZGVyICovCisJbG9uZ2hkciA9 IChYTG9nTG9uZ1BhZ2VIZWFkZXIpIGVudHJ5LT5idWYtPmRhdGE7CisKKwlpZiAoIUlzVmFsaWRX YWxTZWdTaXplKGxvbmdoZHItPnhscF9zZWdfc2l6ZSkpCisJeworCQlwZ19sb2dfZXJyb3Iobmdl dHRleHQoImludmFsaWQgV0FMIHNlZ21lbnQgc2l6ZSBpbiBXQUwgZmlsZSBmcm9tIGFyY2hpdmUg XCIlc1wiICglZCBieXRlKSIsCisJCQkJCQkJICAiaW52YWxpZCBXQUwgc2VnbWVudCBzaXplIGlu IFdBTCBmaWxlIGZyb20gYXJjaGl2ZSBcIiVzXCIgKCVkIGJ5dGVzKSIsCisJCQkJCQkJICBsb25n aGRyLT54bHBfc2VnX3NpemUpLAorCQkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSwgbG9u Z2hkci0+eGxwX3NlZ19zaXplKTsKKwkJcGdfbG9nX2Vycm9yX2RldGFpbCgiVGhlIFdBTCBzZWdt ZW50IHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byBiZXR3ZWVuIDEgTUIgYW5kIDEgR0IuIik7 CisJCWV4aXQoMSk7CisJfQorCisJcHJpdmF0ZUluZm8tPnNlZ3NpemUgPSBsb25naGRyLT54bHBf c2VnX3NpemU7CisKKwkvKgorCSAqIFdpdGggdGhlIFdBTCBzZWdtZW50IHNpemUgYXZhaWxhYmxl LCB3ZSBjYW4gbm93IGluaXRpYWxpemUgdGhlCisJICogZGVwZW5kZW50IHN0YXJ0IGFuZCBlbmQg c2VnbWVudCBudW1iZXJzLgorCSAqLworCUFzc2VydCghWExvZ1JlY1B0cklzSW52YWxpZChwcml2 YXRlSW5mby0+c3RhcnRwdHIpKTsKKwlYTEJ5dGVUb1NlZyhwcml2YXRlSW5mby0+c3RhcnRwdHIs IHByaXZhdGVJbmZvLT5zdGFydF9zZWdubywKKwkJCQlwcml2YXRlSW5mby0+c2Vnc2l6ZSk7CisK KwlpZiAoIVhMb2dSZWNQdHJJc0ludmFsaWQocHJpdmF0ZUluZm8tPmVuZHB0cikpCisJCVhMQnl0 ZVRvU2VnKHByaXZhdGVJbmZvLT5lbmRwdHIsIHByaXZhdGVJbmZvLT5lbmRfc2Vnbm8sCisJCQkJ CXByaXZhdGVJbmZvLT5zZWdzaXplKTsKKworCS8qCisJICogVGhpcyBXQUwgcmVjb3JkIHdhcyBm ZXRjaGVkIGJlZm9yZSB0aGUgZmlsdGVyaW5nIHBhcmFtZXRlcnMKKwkgKiAoc3RhcnRfc2Vnbm8g YW5kIGVuZF9zZWdubykgd2VyZSBmdWxseSBpbml0aWFsaXplZC4gUGVyZm9ybSB0aGUKKwkgKiBy ZWxldmFuY2UgY2hlY2sgYWdhaW5zdCB0aGUgdXNlci1wcm92aWRlZCByYW5nZSBub3c7IGlmIHRo ZSBXQUwgZmFsbHMKKwkgKiBvdXRzaWRlIHRoaXMgcmFuZ2UsIHJlbW92ZSBpdCBmcm9tIHRoZSBo YXNoIHRhYmxlLiBTdWJzZXF1ZW50IFdBTCB3aWxsCisJICogYmUgZmlsdGVyZWQgYXV0b21hdGlj YWxseSBieSB0aGUgYXJjaGl2ZSBzdHJlYW1lciB1c2luZyB0aGUgdXBkYXRlZAorCSAqIHN0YXJ0 X3NlZ25vIGFuZCBlbmRfc2Vnbm8gdmFsdWVzLgorCSAqLworCVhMb2dGcm9tRmlsZU5hbWUoZW50 cnktPmZuYW1lLCAmdGltZWxpbmUsICZzZWdubywgcHJpdmF0ZUluZm8tPnNlZ3NpemUpOworCWlm IChwcml2YXRlSW5mby0+dGltZWxpbmUgIT0gdGltZWxpbmUgfHwKKwkJcHJpdmF0ZUluZm8tPnN0 YXJ0X3NlZ25vID4gc2Vnbm8gfHwKKwkJcHJpdmF0ZUluZm8tPmVuZF9zZWdubyA8IHNlZ25vKQor CQlmcmVlX2FyY2hpdmVfd2FsX2VudHJ5KGVudHJ5LT5mbmFtZSwgcHJpdmF0ZUluZm8pOworfQor CisvKgorICogUmVsZWFzZSB0aGUgYXJjaGl2ZSBzdHJlYW1lciBjaGFpbiBhbmQgY2xvc2UgdGhl IGFyY2hpdmUgZmlsZS4KKyAqLwordm9pZAorZnJlZV9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFBy aXZhdGUgKnByaXZhdGVJbmZvKQoreworCS8qCisJICogTkI6IE5vcm1hbGx5LCBhc3RyZWFtZXJf ZmluYWxpemUoKSBpcyBjYWxsZWQgYmVmb3JlIGFzdHJlYW1lcl9mcmVlKCkgdG8KKwkgKiBmbHVz aCBhbnkgcmVtYWluaW5nIGJ1ZmZlcmVkIGRhdGEgb3IgdG8gZW5zdXJlIHRoZSBlbmQgb2YgdGhl IHRhcgorCSAqIGFyY2hpdmUgaXMgcmVhY2hlZC4gIEhvd2V2ZXIsIHdoZW4gZGVjb2RpbmcgV0FM LCBvbmNlIHdlIGhpdCB0aGUgZW5kCisJICogTFNOLCBhbnkgcmVtYWluaW5nIGJ1ZmZlcmVkIGRh dGEgb3IgdW5yZWFkIHBvcnRpb24gb2YgdGhlIGFyY2hpdmUgY2FuCisJICogYmUgc2FmZWx5IGln bm9yZWQuCisJICovCisJYXN0cmVhbWVyX2ZyZWUocHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFt ZXIpOworCisJLyogRnJlZSBhbnkgcmVtYWluaW5nIGhhc2ggdGFibGUgZW50cmllcyBhbmQgdGhl aXIgYnVmZmVycy4gKi8KKwlpZiAocHJpdmF0ZUluZm8tPmFyY2hpdmVfd2FsX2h0YWIgIT0gTlVM TCkKKwl7CisJCUFyY2hpdmVkV0FMX2l0ZXJhdG9yIGl0ZXI7CisJCUFyY2hpdmVkV0FMRmlsZSAq ZW50cnk7CisKKwkJQXJjaGl2ZWRXQUxfc3RhcnRfaXRlcmF0ZShwcml2YXRlSW5mby0+YXJjaGl2 ZV93YWxfaHRhYiwgJml0ZXIpOworCQl3aGlsZSAoKGVudHJ5ID0gQXJjaGl2ZWRXQUxfaXRlcmF0 ZShwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwKKwkJCQkJCQkJCQkJJml0ZXIpKSAhPSBO VUxMKQorCQl7CisJCQlpZiAoZW50cnktPmJ1ZiAhPSBOVUxMKQorCQkJCWRlc3Ryb3lTdHJpbmdJ bmZvKGVudHJ5LT5idWYpOworCQl9CisJCUFyY2hpdmVkV0FMX2Rlc3Ryb3kocHJpdmF0ZUluZm8t PmFyY2hpdmVfd2FsX2h0YWIpOworCQlwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiA9IE5V TEw7CisJfQorCisJLyogRnJlZSB0aGUgcmV1c2FibGUgcmVhZCBidWZmZXIuICovCisJaWYgKHBy aXZhdGVJbmZvLT5hcmNoaXZlX3JlYWRfYnVmICE9IE5VTEwpCisJeworCQlwZ19mcmVlKHByaXZh dGVJbmZvLT5hcmNoaXZlX3JlYWRfYnVmKTsKKwkJcHJpdmF0ZUluZm8tPmFyY2hpdmVfcmVhZF9i dWYgPSBOVUxMOworCX0KKworCS8qIENsb3NlIHRoZSBmaWxlLiAqLworCWlmIChjbG9zZShwcml2 YXRlSW5mby0+YXJjaGl2ZV9mZCkgIT0gMCkKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xv c2UgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOwor fQorCisvKgorICogQ29waWVzIHRoZSByZXF1ZXN0ZWQgV0FMIGRhdGEgZnJvbSB0aGUgaGFzaCBl bnRyeSdzIGJ1ZmZlciBpbnRvIHJlYWRCdWZmLgorICogSWYgdGhlIGJ1ZmZlciBkb2VzIG5vdCB5 ZXQgY29udGFpbiB0aGUgbmVlZGVkIGJ5dGVzLCBmZXRjaGVzIG1vcmUgZGF0YSBmcm9tCisgKiB0 aGUgdGFyIGFyY2hpdmUgdmlhIHRoZSBhcmNoaXZlIHN0cmVhbWVyLgorICovCitpbnQKK3JlYWRf YXJjaGl2ZV93YWxfcGFnZShYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBYTG9nUmVjUHRy IHRhcmdldFBhZ2VQdHIsCisJCQkJCSAgU2l6ZSBjb3VudCwgY2hhciAqcmVhZEJ1ZmYpCit7CisJ Y2hhcgkgICAqcCA9IHJlYWRCdWZmOworCVNpemUJCW5ieXRlcyA9IGNvdW50OworCVhMb2dSZWNQ dHIJcmVjcHRyID0gdGFyZ2V0UGFnZVB0cjsKKwlpbnQJCQlzZWdzaXplID0gcHJpdmF0ZUluZm8t PnNlZ3NpemU7CisJWExvZ1NlZ05vCXNlZ25vOworCWNoYXIJCWZuYW1lW01BWEZOQU1FTEVOXTsK KwlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5OworCisJLyogSWRlbnRpZnkgdGhlIHNlZ21lbnQgYW5k IGxvY2F0ZSBpdHMgZW50cnkgaW4gdGhlIGFyY2hpdmUgaGFzaCAqLworCVhMQnl0ZVRvU2VnKHRh cmdldFBhZ2VQdHIsIHNlZ25vLCBzZWdzaXplKTsKKwlYTG9nRmlsZU5hbWUoZm5hbWUsIHByaXZh dGVJbmZvLT50aW1lbGluZSwgc2Vnbm8sIHNlZ3NpemUpOworCWVudHJ5ID0gZ2V0X2FyY2hpdmVf d2FsX2VudHJ5KGZuYW1lLCBwcml2YXRlSW5mbyk7CisKKwl3aGlsZSAobmJ5dGVzID4gMCkKKwl7 CisJCWNoYXIJICAgKmJ1ZiA9IGVudHJ5LT5idWYtPmRhdGE7CisJCWludAkJCWJ1ZkxlbiA9IGVu dHJ5LT5idWYtPmxlbjsKKwkJWExvZ1JlY1B0cgllbmRQdHI7CisJCVhMb2dSZWNQdHIJc3RhcnRQ dHI7CisKKwkJLyoKKwkJICogQ2FsY3VsYXRlIHRoZSBMU04gcmFuZ2UgY3VycmVudGx5IHJlc2lk aW5nIGluIHRoZSBidWZmZXIuCisJCSAqCisJCSAqIHJlYWRfbGVuIHRyYWNrcyB0b3RhbCBieXRl cyByZWNlaXZlZCBmb3IgdGhpcyBzZWdtZW50IChpbmNsdWRpbmcKKwkJICogYWxyZWFkeS1kaXNj YXJkZWQgZGF0YSksIHNvIGVuZFB0ciBpcyB0aGUgTFNOIGp1c3QgcGFzdCB0aGUgbGFzdAorCQkg KiBidWZmZXJlZCBieXRlLCBhbmQgc3RhcnRQdHIgaXMgdGhlIExTTiBvZiB0aGUgZmlyc3QgYnVm ZmVyZWQgYnl0ZS4KKwkJICovCisJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCBlbnRy eS0+cmVhZF9sZW4sIHNlZ3NpemUsIGVuZFB0cik7CisJCXN0YXJ0UHRyID0gZW5kUHRyIC0gYnVm TGVuOworCisJCS8qCisJCSAqIENvcHkgdGhlIHJlcXVlc3RlZCBXQUwgcmVjb3JkIGlmIGl0IGV4 aXN0cyBpbiB0aGUgYnVmZmVyLgorCQkgKi8KKwkJaWYgKGJ1ZkxlbiA+IDAgJiYgc3RhcnRQdHIg PD0gcmVjcHRyICYmIHJlY3B0ciA8IGVuZFB0cikKKwkJeworCQkJaW50CQkJY29weUJ5dGVzOwor CQkJaW50CQkJb2Zmc2V0ID0gcmVjcHRyIC0gc3RhcnRQdHI7CisKKwkJCS8qCisJCQkgKiBHaXZl biBzdGFydFB0ciA8PSByZWNwdHIgPCBlbmRQdHIgYW5kIGEgdG90YWwgYnVmZmVyIHNpemUKKwkJ CSAqICdidWZMZW4nLCB0aGUgb2Zmc2V0IChyZWNwdHIgLSBzdGFydFB0cikgd2lsbCBhbHdheXMg YmUgbGVzcworCQkJICogdGhhbiAnYnVmTGVuJy4KKwkJCSAqLworCQkJQXNzZXJ0KG9mZnNldCA8 IGJ1Zkxlbik7CisKKwkJCWNvcHlCeXRlcyA9IE1pbihuYnl0ZXMsIGJ1ZkxlbiAtIG9mZnNldCk7 CisJCQltZW1jcHkocCwgYnVmICsgb2Zmc2V0LCBjb3B5Qnl0ZXMpOworCisJCQkvKiBVcGRhdGUg c3RhdGUgZm9yIHJlYWQgKi8KKwkJCXJlY3B0ciArPSBjb3B5Qnl0ZXM7CisJCQluYnl0ZXMgLT0g Y29weUJ5dGVzOworCQkJcCArPSBjb3B5Qnl0ZXM7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgor CQkJICogQmVmb3JlIHN0YXJ0aW5nIHRoZSBhY3R1YWwgZGVjb2RpbmcgbG9vcCwgcGdfd2FsZHVt cCB0cmllcyB0bworCQkJICogbG9jYXRlIHRoZSBmaXJzdCB2YWxpZCByZWNvcmQgZnJvbSB0aGUg dXNlci1zcGVjaWZpZWQgc3RhcnQKKwkJCSAqIHBvc2l0aW9uLCB3aGljaCBtaWdodCBub3QgYmUg dGhlIHN0YXJ0IG9mIGEgV0FMIHJlY29yZCBhbmQKKwkJCSAqIGNvdWxkIGZhbGwgaW4gdGhlIG1p ZGRsZSBvZiBhIHJlY29yZCB0aGF0IHNwYW5zIG11bHRpcGxlIHBhZ2VzLgorCQkJICogQ29uc2Vx dWVudGx5LCB0aGUgdmFsaWQgc3RhcnQgcG9zaXRpb24gdGhlIGRlY29kZXIgaXMgbG9va2luZwor CQkJICogZm9yIGNvdWxkIGJlIGZhciBhd2F5IGZyb20gdGhhdCBpbml0aWFsIHBvc2l0aW9uLgor CQkJICoKKwkJCSAqIFRoaXMgbWF5IGludm9sdmUgcmVhZGluZyBhY3Jvc3MgbXVsdGlwbGUgcGFn ZXMsIGFuZCB0aGlzCisJCQkgKiBwcmUtcmVhZGluZyBmZXRjaGVzIGRhdGEgaW4gbXVsdGlwbGUg cm91bmRzIGZyb20gdGhlIGFyY2hpdmUKKwkJCSAqIHN0cmVhbWVyOyBub3JtYWxseSwgd2Ugd291 bGQgdGhyb3cgYXdheSBleGlzdGluZyBidWZmZXIKKwkJCSAqIGNvbnRlbnRzIHRvIGZldGNoIHRo ZSBuZXh0IHNldCBvZiBkYXRhLCBidXQgdGhhdCBleGlzdGluZyBkYXRhCisJCQkgKiBtaWdodCBi ZSBuZWVkZWQgb25jZSB0aGUgbWFpbiBsb29wIHN0YXJ0cy4gQmVjYXVzZSBwcmV2aW91c2x5CisJ CQkgKiByZWFkIGRhdGEgY2Fubm90IGJlIHJlLXJlYWQgYnkgdGhlIGFyY2hpdmUgc3RyZWFtZXIs IHdlIGRlbGF5CisJCQkgKiByZXNldHRpbmcgdGhlIGJ1ZmZlciB1bnRpbCB0aGUgbWFpbiBkZWNv ZGluZyBsb29wIGlzIGVudGVyZWQuCisJCQkgKgorCQkJICogT25jZSBwZ193YWxkdW1wIGhhcyBl bnRlcmVkIHRoZSBtYWluIGxvb3AsIGl0IG1heSByZS1yZWFkIHRoZQorCQkJICogY3VycmVudGx5 IGFjdGl2ZSBwYWdlLCBidXQgbmV2ZXIgYW4gb2xkZXIgb25lOyB0aGVyZWZvcmUsIGFueQorCQkJ ICogZnVsbHkgY29uc3VtZWQgV0FMIGRhdGEgcHJlY2VkaW5nIHRoZSBjdXJyZW50IHBhZ2UgY2Fu IHRoZW4gYmUKKwkJCSAqIHNhZmVseSBkaXNjYXJkZWQuCisJCQkgKi8KKwkJCWlmIChwcml2YXRl SW5mby0+ZGVjb2Rpbmdfc3RhcnRlZCkKKwkJCXsKKwkJCQlyZXNldFN0cmluZ0luZm8oZW50cnkt PmJ1Zik7CisKKwkJCQkvKgorCQkJCSAqIFB1c2ggYmFjayB0aGUgcGFydGlhbCBwYWdlIGRhdGEg Zm9yIHRoZSBjdXJyZW50IHBhZ2UgdG8gdGhlCisJCQkJICogYnVmZmVyLCBlbnN1cmluZyBhIGZ1 bGwgcGFnZSByZW1haW5zIGF2YWlsYWJsZSBmb3IKKwkJCQkgKiByZS1yZWFkaW5nIGlmIHJlcXVl c3RlZC4KKwkJCQkgKi8KKwkJCQlpZiAocCA+IHJlYWRCdWZmKQorCQkJCXsKKwkJCQkJQXNzZXJ0 KChjb3VudCAtIG5ieXRlcykgPiAwKTsKKwkJCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhlbnRy eS0+YnVmLCByZWFkQnVmZiwgY291bnQgLSBuYnl0ZXMpOworCQkJCX0KKwkJCX0KKworCQkJLyoK KwkJCSAqIE5vdywgZmV0Y2ggbW9yZSBkYXRhLiAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIGFyY2hp dmUgc3RyZWFtZXIKKwkJCSAqIGhhcyBtb3ZlZCBwYXN0IG91ciBzZWdtZW50IChtZWFuaW5nIHRo ZSBXQUwgZmlsZSBpbiB0aGUgYXJjaGl2ZQorCQkJICogaXMgc2hvcnRlciB0aGFuIGV4cGVjdGVk KSBvciBpZiByZWFkaW5nIHRoZSBhcmNoaXZlIHJlYWNoZWQKKwkJCSAqIEVPRi4KKwkJCSAqLwor CQkJaWYgKHByaXZhdGVJbmZvLT5jdXJfZmlsZSAhPSBlbnRyeSkKKwkJCQlwZ19mYXRhbCgiV0FM IHNlZ21lbnQgXCIlc1wiIGluIGFyY2hpdmUgXCIlc1wiIGlzIHRvbyBzaG9ydDogcmVhZCAlbGxk IG9mICVsbGQgYnl0ZXMiLAorCQkJCQkJIGZuYW1lLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1l LAorCQkJCQkJIChsb25nIGxvbmcgaW50KSAoY291bnQgLSBuYnl0ZXMpLAorCQkJCQkJIChsb25n IGxvbmcgaW50KSBjb3VudCk7CisJCQlpZiAocmVhZF9hcmNoaXZlX2ZpbGUocHJpdmF0ZUluZm8s IFJFQURfQ0hVTktfU0laRSkgPT0gMCkKKwkJCQlwZ19mYXRhbCgidW5leHBlY3RlZCBlbmQgb2Yg YXJjaGl2ZSBcIiVzXCIgd2hpbGUgcmVhZGluZyBcIiVzXCI6IHJlYWQgJWxsZCBvZiAlbGxkIGJ5 dGVzIiwKKwkJCQkJCSBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lLCBmbmFtZSwKKwkJCQkJCSAo bG9uZyBsb25nIGludCkgKGNvdW50IC0gbmJ5dGVzKSwKKwkJCQkJCSAobG9uZyBsb25nIGludCkg Y291bnQpOworCQl9CisJfQorCisJLyoKKwkgKiBTaG91bGQgaGF2ZSBzdWNjZXNzZnVsbHkgcmVh ZCBhbGwgdGhlIHJlcXVlc3RlZCBieXRlcyBvciByZXBvcnRlZCBhCisJICogZmFpbHVyZSBiZWZv cmUgdGhpcyBwb2ludC4KKwkgKi8KKwlBc3NlcnQobmJ5dGVzID09IDApOworCisJLyoKKwkgKiBO QjogV2UgcmV0dXJuIGNvdW50IHVuY2hhbmdlZC4gIFdlIGNvdWxkIHJldHVybiBhIGJvb2xlYW4g c2luY2Ugd2UKKwkgKiBlaXRoZXIgc3VjY2Vzc2Z1bGx5IHJlYWQgdGhlIFdBTCBwYWdlIG9yIHJh aXNlIGFuIGVycm9yLCBidXQgdGhlIGNhbGxlcgorCSAqIGV4cGVjdHMgdGhpcyB2YWx1ZSB0byBi ZSByZXR1cm5lZC4gIFRoZSByb3V0aW5lIHRoYXQgcmVhZHMgV0FMIHBhZ2VzCisJICogZnJvbSBw aHlzaWNhbCBXQUwgZmlsZXMgZm9sbG93cyB0aGUgc2FtZSBjb252ZW50aW9uLgorCSAqLworCXJl dHVybiBjb3VudDsKK30KKworLyoKKyAqIFJlbGVhc2VzIHRoZSBidWZmZXIgb2YgYSBXQUwgZW50 cnkgdGhhdCBpcyBubyBsb25nZXIgbmVlZGVkLCBwcmV2ZW50aW5nIHRoZQorICogYWNjdW11bGF0 aW9uIG9mIGlycmVsZXZhbnQgV0FMIGRhdGEuICBBbHNvIHJlbW92ZXMgYW55IGFzc29jaWF0ZWQg dGVtcG9yYXJ5CisgKiBmaWxlIGFuZCBjbGVhcnMgcHJpdmF0ZUluZm8tPmN1cl9maWxlIGlmIGl0 IHBvaW50cyB0byB0aGlzIGVudHJ5LCBzbyB0aGUKKyAqIGFyY2hpdmUgc3RyZWFtZXIgc2tpcHMg c3Vic2VxdWVudCBkYXRhIGZvciBpdC4KKyAqLwordm9pZAorZnJlZV9hcmNoaXZlX3dhbF9lbnRy eShjb25zdCBjaGFyICpmbmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbykKK3sKKwlB cmNoaXZlZFdBTEZpbGUgKmVudHJ5OworCisJZW50cnkgPSBBcmNoaXZlZFdBTF9sb29rdXAocHJp dmF0ZUluZm8tPmFyY2hpdmVfd2FsX2h0YWIsIGZuYW1lKTsKKworCWlmIChlbnRyeSA9PSBOVUxM KQorCQlyZXR1cm47CisKKwkvKiBEZXN0cm95IHRoZSBidWZmZXIgKi8KKwlkZXN0cm95U3RyaW5n SW5mbyhlbnRyeS0+YnVmKTsKKwllbnRyeS0+YnVmID0gTlVMTDsKKworCS8qIFJlbW92ZSB0ZW1w b3JhcnkgZmlsZSBpZiBhbnkgKi8KKwlpZiAoZW50cnktPnNwaWxsZWQpCisJeworCQljaGFyCQlm cGF0aFtNQVhQR1BBVEhdOworCisJCXNucHJpbnRmKGZwYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIs IFRtcFdhbFNlZ0RpciwgZm5hbWUpOworCisJCWlmICh1bmxpbmsoZnBhdGgpID09IDApCisJCQlw Z19sb2dfZGVidWcoInJlbW92ZWQgZmlsZSBcIiVzXCIiLCBmcGF0aCk7CisJfQorCisJLyogQ2xl YXIgY3VyX2ZpbGUgaWYgaXQgcG9pbnRzIHRvIHRoZSBlbnRyeSBiZWluZyBmcmVlZCAqLworCWlm IChwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPT0gZW50cnkpCisJCXByaXZhdGVJbmZvLT5jdXJfZmls ZSA9IE5VTEw7CisKKwlBcmNoaXZlZFdBTF9kZWxldGVfaXRlbShwcml2YXRlSW5mby0+YXJjaGl2 ZV93YWxfaHRhYiwgZW50cnkpOworfQorCisvKgorICogUmV0dXJucyB0aGUgYXJjaGl2ZWQgV0FM IGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUgaWYgaXQgYWxyZWFkeSBleGlzdHMuCisgKiBPdGhl cndpc2UsIHJlYWRzIG1vcmUgZGF0YSBmcm9tIHRoZSBhcmNoaXZlIHVudGlsIHRoZSByZXF1ZXN0 ZWQgZW50cnkgaXMKKyAqIGZvdW5kLiAgSWYgdGhlIGFyY2hpdmUgc3RyZWFtZXIgaXMgcmVhZGlu ZyBhIFdBTCBmaWxlIGZyb20gdGhlIGFyY2hpdmUgdGhhdAorICogaXMgbm90IGN1cnJlbnRseSBu ZWVkZWQsIHRoYXQgZGF0YSBpcyBzcGlsbGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgZm9yIGxhdGVy CisgKiByZXRyaWV2YWwuCisgKi8KK3N0YXRpYyBBcmNoaXZlZFdBTEZpbGUgKgorZ2V0X2FyY2hp dmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJ bmZvKQoreworCUFyY2hpdmVkV0FMRmlsZSAqZW50cnkgPSBOVUxMOworCUZJTEUJICAgKndyaXRl X2ZwID0gTlVMTDsKKworCS8qCisJICogU2VhcmNoIHRoZSBoYXNoIHRhYmxlIGZpcnN0LiBJZiB0 aGUgZW50cnkgaXMgZm91bmQsIHJldHVybiBpdC4KKwkgKiBPdGhlcndpc2UsIHRoZSByZXF1ZXN0 ZWQgV0FMIGVudHJ5IGhhc24ndCBiZWVuIHJlYWQgZnJvbSB0aGUgYXJjaGl2ZQorCSAqIHlldDsg aW52b2tlIHRoZSBhcmNoaXZlIHN0cmVhbWVyIHRvIGZldGNoIGl0LgorCSAqLworCXdoaWxlICgx KQorCXsKKwkJLyoKKwkJICogU2VhcmNoIGhhc2ggdGFibGUuCisJCSAqCisJCSAqIFdlIHBlcmZv cm0gdGhlIHNlYXJjaCBpbnNpZGUgdGhlIGxvb3AgYmVjYXVzZSBhIHNpbmdsZSBpdGVyYXRpb24g b2YKKwkJICogdGhlIGFyY2hpdmUgcmVhZGVyIG1heSBkZWNvbXByZXNzIGFuZCBleHRyYWN0IG11 bHRpcGxlIGZpbGVzIGludG8KKwkJICogdGhlIGhhc2ggdGFibGUuIE9uZSBvZiB0aGVzZSBuZXds eSBhZGRlZCBmaWxlcyBjb3VsZCBiZSB0aGUgb25lIHdlCisJCSAqIGFyZSBzZWVraW5nLgorCQkg Ki8KKwkJZW50cnkgPSBBcmNoaXZlZFdBTF9sb29rdXAocHJpdmF0ZUluZm8tPmFyY2hpdmVfd2Fs X2h0YWIsIGZuYW1lKTsKKworCQlpZiAoZW50cnkgIT0gTlVMTCkKKwkJCXJldHVybiBlbnRyeTsK KworCQkvKgorCQkgKiBDYXB0dXJlIHRoZSBjdXJyZW50IGVudHJ5IGJlZm9yZSBjYWxsaW5nIHJl YWRfYXJjaGl2ZV9maWxlKCksCisJCSAqIGJlY2F1c2UgY3VyX2ZpbGUgbWF5IGFkdmFuY2UgdG8g YSBuZXcgc2VnbWVudCBkdXJpbmcgc3RyZWFtaW5nLiBXZQorCQkgKiBob2xkIHRoaXMgcmVmZXJl bmNlIHNvIHdlIGNhbiBmbHVzaCBhbnkgcmVtYWluaW5nIGJ1ZmZlciBkYXRhIGFuZAorCQkgKiBj bG9zZSB0aGUgd3JpdGUgaGFuZGxlIG9uY2Ugd2UgZGV0ZWN0IHRoYXQgY3VyX2ZpbGUgaGFzIG1v dmVkIG9uLgorCQkgKi8KKwkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGU7CisKKwkJLyoK KwkJICogRmV0Y2ggbW9yZSBkYXRhIGVpdGhlciB3aGVuIG5vIGN1cnJlbnQgZmlsZSBpcyBiZWlu ZyB0cmFja2VkIG9yCisJCSAqIHdoZW4gaXRzIGJ1ZmZlciBoYXMgYmVlbiBmdWxseSBmbHVzaGVk IHRvIHRoZSB0ZW1wb3JhcnkgZmlsZS4KKwkJICovCisJCWlmIChlbnRyeSA9PSBOVUxMIHx8IGVu dHJ5LT5idWYtPmxlbiA9PSAwKQorCQl7CisJCQlpZiAocmVhZF9hcmNoaXZlX2ZpbGUocHJpdmF0 ZUluZm8sIFJFQURfQ0hVTktfU0laRSkgPT0gMCkKKwkJCQlicmVhazsJCQkvKiBhcmNoaXZlIGZp bGUgZW5kZWQgKi8KKwkJfQorCisJCS8qCisJCSAqIEFyY2hpdmUgc3RyZWFtZXIgaXMgcmVhZGlu ZyBhIG5vbi1XQUwgZmlsZSBvciBhbiBpcnJlbGV2YW50IFdBTAorCQkgKiBmaWxlLgorCQkgKi8K KwkJaWYgKGVudHJ5ID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBUaGUgc3Ry ZWFtZXIgaXMgcHJvZHVjaW5nIGEgV0FMIHNlZ21lbnQgdGhhdCBpc24ndCB0aGUgb25lIGFza2Vk CisJCSAqIGZvcjsgaXQgbXVzdCBiZSBhcnJpdmluZyBvdXQgb2Ygb3JkZXIuICBTcGlsbCBpdHMg ZGF0YSB0byBkaXNrIHNvCisJCSAqIGl0IGNhbiBiZSByZWFkIGJhY2sgd2hlbiBuZWVkZWQuCisJ CSAqLworCQlBc3NlcnQoc3RyY21wKGZuYW1lLCBlbnRyeS0+Zm5hbWUpICE9IDApOworCisJCS8q IENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIGlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0ICov CisJCWlmICghZW50cnktPnNwaWxsZWQpCisJCXsKKwkJCXdyaXRlX2ZwID0gcHJlcGFyZV90bXBf d3JpdGUoZW50cnktPmZuYW1lLCBwcml2YXRlSW5mbyk7CisJCQllbnRyeS0+c3BpbGxlZCA9IHRy dWU7CisJCX0KKworCQkvKiBGbHVzaCBkYXRhIGZyb20gdGhlIGJ1ZmZlciB0byB0aGUgZmlsZSAq LworCQlwZXJmb3JtX3RtcF93cml0ZShlbnRyeS0+Zm5hbWUsIGVudHJ5LT5idWYsIHdyaXRlX2Zw KTsKKwkJcmVzZXRTdHJpbmdJbmZvKGVudHJ5LT5idWYpOworCisJCS8qCisJCSAqIElmIGN1cl9m aWxlIGNoYW5nZWQgc2luY2Ugd2UgY2FwdHVyZWQgZW50cnkgYWJvdmUsIHRoZSBhcmNoaXZlCisJ CSAqIHN0cmVhbWVyIGhhcyBmaW5pc2hlZCB0aGlzIHNlZ21lbnQgYW5kIG1vdmVkIG9uLiAgQ2xv c2UgaXRzIHNwaWxsCisJCSAqIGZpbGUgaGFuZGxlIHNvIGRhdGEgaXMgZmx1c2hlZCB0byBkaXNr IGJlZm9yZSB0aGUgbmV4dCBzZWdtZW50CisJCSAqIHN0YXJ0cyB3cml0aW5nIHRvIGEgZGlmZmVy ZW50IGhhbmRsZS4KKwkJICovCisJCWlmIChlbnRyeSAhPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGUg JiYgd3JpdGVfZnAgIT0gTlVMTCkKKwkJeworCQkJZmNsb3NlKHdyaXRlX2ZwKTsKKwkJCXdyaXRl X2ZwID0gTlVMTDsKKwkJfQorCX0KKworCS8qIFJlcXVlc3RlZCBXQUwgc2VnbWVudCBub3QgZm91 bmQgKi8KKwlwZ19mYXRhbCgiY291bGQgbm90IGZpbmQgV0FMIFwiJXNcIiBpbiBhcmNoaXZlIFwi JXNcIiIsCisJCQkgZm5hbWUsIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworfQorCisvKgor ICogUmVhZHMgYSBjaHVuayBmcm9tIHRoZSBhcmNoaXZlIGZpbGUgYW5kIHBhc3NlcyBpdCB0aHJv dWdoIHRoZSBzdHJlYW1lcgorICogcGlwZWxpbmUgZm9yIGRlY29tcHJlc3Npb24gKGlmIG5lZWRl ZCkgYW5kIHRhciBtZW1iZXIgZXh0cmFjdGlvbi4KKyAqLworc3RhdGljIGludAorcmVhZF9hcmNo aXZlX2ZpbGUoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgU2l6ZSBjb3VudCkKK3sKKwlp bnQJCQlyYzsKKworCS8qIFRoZSByZWFkIHJlcXVlc3QgbXVzdCBub3QgZXhjZWVkIHRoZSBhbGxv Y2F0ZWQgYnVmZmVyIHNpemUuICovCisJQXNzZXJ0KHByaXZhdGVJbmZvLT5hcmNoaXZlX3JlYWRf YnVmX3NpemUgPj0gY291bnQpOworCisJcmMgPSByZWFkKHByaXZhdGVJbmZvLT5hcmNoaXZlX2Zk LCBwcml2YXRlSW5mby0+YXJjaGl2ZV9yZWFkX2J1ZiwgY291bnQpOworCWlmIChyYyA8IDApCisJ CXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCSBwcml2YXRl SW5mby0+YXJjaGl2ZV9uYW1lKTsKKworCS8qCisJICogRGVjb21wcmVzcyAoaWYgcmVxdWlyZWQp LCBhbmQgdGhlbiBwYXJzZSB0aGUgcHJldmlvdXNseSByZWFkIGNvbnRlbnRzCisJICogb2YgdGhl IHRhciBmaWxlLgorCSAqLworCWlmIChyYyA+IDApCisJCWFzdHJlYW1lcl9jb250ZW50KHByaXZh dGVJbmZvLT5hcmNoaXZlX3N0cmVhbWVyLCBOVUxMLAorCQkJCQkJICBwcml2YXRlSW5mby0+YXJj aGl2ZV9yZWFkX2J1ZiwgcmMsCisJCQkJCQkgIEFTVFJFQU1FUl9VTktOT1dOKTsKKworCXJldHVy biByYzsKK30KKworLyoKKyAqIFNldCB1cCBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gdGVtcG9y YXJpbHkgc3RvcmUgV0FMIHNlZ21lbnRzLgorICovCitzdGF0aWMgdm9pZAorc2V0dXBfdG1wd2Fs X2Rpcihjb25zdCBjaGFyICp3YWxkaXIpCit7CisJY2hhcgkgICAqdGVtcGxhdGU7CisKKwlBc3Nl cnQoVG1wV2FsU2VnRGlyID09IE5VTEwpOworCisJLyoKKwkgKiBVc2UgdGhlIGRpcmVjdG9yeSBz cGVjaWZpZWQgYnkgdGhlIFRNUERJUiBlbnZpcm9ubWVudCB2YXJpYWJsZS4gSWYgaXQncworCSAq IG5vdCBzZXQsIGZhbGwgYmFjayB0byB0aGUgcHJvdmlkZWQgV0FMIGRpcmVjdG9yeSB0byBzdG9y ZSBXQUwgZmlsZXMKKwkgKiB0ZW1wb3JhcmlseS4KKwkgKi8KKwl0ZW1wbGF0ZSA9IHBzcHJpbnRm KCIlcy93YWxkdW1wX3RtcC1YWFhYWFgiLAorCQkJCQkJZ2V0ZW52KCJUTVBESVIiKSA/IGdldGVu digiVE1QRElSIikgOiB3YWxkaXIpOworCVRtcFdhbFNlZ0RpciA9IG1rZHRlbXAodGVtcGxhdGUp OworCisJaWYgKFRtcFdhbFNlZ0RpciA9PSBOVUxMKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNy ZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHRlbXBsYXRlKTsKKworCWNhbm9uaWNhbGl6ZV9w YXRoKFRtcFdhbFNlZ0Rpcik7CisKKwlwZ19sb2dfZGVidWcoImNyZWF0ZWQgZGlyZWN0b3J5IFwi JXNcIiIsIFRtcFdhbFNlZ0Rpcik7Cit9CisKKy8qCisgKiBSZW1vdmUgdGVtcG9yYXJ5IGRpcmVj dG9yeSBhdCBleGl0LCBpZiBhbnkuCisgKi8KK3N0YXRpYyB2b2lkCitjbGVhbnVwX3RtcHdhbF9k aXJfYXRleGl0KHZvaWQpCit7CisJQXNzZXJ0KFRtcFdhbFNlZ0RpciAhPSBOVUxMKTsKKworCXJt dHJlZShUbXBXYWxTZWdEaXIsIHRydWUpOworCisJVG1wV2FsU2VnRGlyID0gTlVMTDsKK30KKwor LyoKKyAqIE9wZW4gYSBmaWxlIGluIHRoZSB0ZW1wb3Jhcnkgc3BpbGwgZGlyZWN0b3J5IGZvciB3 cml0aW5nIGFuIG91dC1vZi1vcmRlcgorICogV0FMIHNlZ21lbnQsIGNyZWF0aW5nIHRoZSBkaXJl Y3RvcnkgYW5kIHJlZ2lzdGVyaW5nIHRoZSBjbGVhbnVwIGNhbGxiYWNrCisgKiBpZiBub3QgYWxy ZWFkeSBkb25lLiAgUmV0dXJucyB0aGUgb3BlbiBmaWxlIGhhbmRsZS4KKyAqLworc3RhdGljIEZJ TEUgKgorcHJlcGFyZV90bXBfd3JpdGUoY29uc3QgY2hhciAqZm5hbWUsIFhMb2dEdW1wUHJpdmF0 ZSAqcHJpdmF0ZUluZm8pCit7CisJY2hhcgkJZnBhdGhbTUFYUEdQQVRIXTsKKwlGSUxFCSAgICpm aWxlOworCisJLyoKKwkgKiBTZXR1cCB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIFdBTCBz ZWdtZW50cyBhbmQgc2V0IHVwIGFuIGV4aXQKKwkgKiBjYWxsYmFjayB0byByZW1vdmUgaXQgdXBv biBjb21wbGV0aW9uIGlmIG5vdCBhbHJlYWR5LgorCSAqLworCWlmICh1bmxpa2VseShUbXBXYWxT ZWdEaXIgPT0gTlVMTCkpCisJeworCQlzZXR1cF90bXB3YWxfZGlyKHByaXZhdGVJbmZvLT5hcmNo aXZlX2Rpcik7CisJCWF0ZXhpdChjbGVhbnVwX3RtcHdhbF9kaXJfYXRleGl0KTsKKwl9CisKKwlz bnByaW50ZihmcGF0aCwgTUFYUEdQQVRILCAiJXMvJXMiLCBUbXBXYWxTZWdEaXIsIGZuYW1lKTsK KworCS8qIE9wZW4gdGhlIHNwaWxsIGZpbGUgZm9yIHdyaXRpbmcgKi8KKwlmaWxlID0gZm9wZW4o ZnBhdGgsIFBHX0JJTkFSWV9XKTsKKwlpZiAoZmlsZSA9PSBOVUxMKQorCQlwZ19mYXRhbCgiY291 bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjogJW0iLCBmcGF0aCk7CisKKyNpZm5kZWYgV0lOMzIK KwlpZiAoY2htb2QoZnBhdGgsIHBnX2ZpbGVfY3JlYXRlX21vZGUpKQorCQlwZ19mYXRhbCgiY291 bGQgbm90IHNldCBwZXJtaXNzaW9ucyBvbiBmaWxlIFwiJXNcIjogJW0iLAorCQkJCSBmcGF0aCk7 CisjZW5kaWYKKworCXBnX2xvZ19kZWJ1Zygic3BpbGxpbmcgdG8gdGVtcG9yYXJ5IGZpbGUgXCIl c1wiIiwgZnBhdGgpOworCisJcmV0dXJuIGZpbGU7Cit9CisKKy8qCisgKiBXcml0ZSBidWZmZXIg ZGF0YSB0byB0aGUgZ2l2ZW4gZmlsZSBoYW5kbGUuCisgKi8KK3N0YXRpYyB2b2lkCitwZXJmb3Jt X3RtcF93cml0ZShjb25zdCBjaGFyICpmbmFtZSwgU3RyaW5nSW5mbyBidWYsIEZJTEUgKmZpbGUp Cit7CisJQXNzZXJ0KGZpbGUpOworCisJZXJybm8gPSAwOworCWlmIChidWYtPmxlbiA+IDAgJiYg ZndyaXRlKGJ1Zi0+ZGF0YSwgYnVmLT5sZW4sIDEsIGZpbGUpICE9IDEpCisJeworCQkvKgorCQkg KiBJZiB3cml0ZSBkaWRuJ3Qgc2V0IGVycm5vLCBhc3N1bWUgcHJvYmxlbSBpcyBubyBkaXNrIHNw YWNlCisJCSAqLworCQlpZiAoZXJybm8gPT0gMCkKKwkJCWVycm5vID0gRU5PU1BDOworCQlwZ19m YXRhbCgiY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlcy8lc1wiOiAlbSIsIFRtcFdhbFNlZ0Rp ciwgZm5hbWUpOworCX0KK30KKworLyoKKyAqIENyZWF0ZSBhbiBhc3RyZWFtZXIgdGhhdCBjYW4g cmVhZCBXQUwgZnJvbSB0YXIgZmlsZS4KKyAqLworc3RhdGljIGFzdHJlYW1lciAqCithc3RyZWFt ZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbykKK3sKKwlhc3RyZWFt ZXJfd2FsZHVtcCAqc3RyZWFtZXI7CisKKwlzdHJlYW1lciA9IHBhbGxvYzBfb2JqZWN0KGFzdHJl YW1lcl93YWxkdW1wKTsKKwkqKChjb25zdCBhc3RyZWFtZXJfb3BzICoqKSAmc3RyZWFtZXItPmJh c2UuYmJzX29wcykgPQorCQkmYXN0cmVhbWVyX3dhbGR1bXBfb3BzOworCisJc3RyZWFtZXItPnBy aXZhdGVJbmZvID0gcHJpdmF0ZUluZm87CisKKwlyZXR1cm4gJnN0cmVhbWVyLT5iYXNlOworfQor CisvKgorICogTWFpbiBlbnRyeSBwb2ludCBvZiB0aGUgYXJjaGl2ZSBzdHJlYW1lciBmb3IgcmVh ZGluZyBXQUwgZGF0YSBmcm9tIGEgdGFyCisgKiBmaWxlLiBJZiBhIG1lbWJlciBpcyBpZGVudGlm aWVkIGFzIGEgdmFsaWQgV0FMIGZpbGUsIGEgaGFzaCBlbnRyeSBpcyBjcmVhdGVkCisgKiBmb3Ig aXQsIGFuZCBpdHMgY29udGVudHMgYXJlIGNvcGllZCBpbnRvIHRoYXQgZW50cnkncyBidWZmZXIs IG1ha2luZyB0aGVtCisgKiBhY2Nlc3NpYmxlIHRvIHRoZSBkZWNvZGluZyByb3V0aW5lLgorICov CitzdGF0aWMgdm9pZAorYXN0cmVhbWVyX3dhbGR1bXBfY29udGVudChhc3RyZWFtZXIgKnN0cmVh bWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJCQkgIGNvbnN0IGNoYXIgKmRhdGEs IGludCBsZW4sCisJCQkJCQkgIGFzdHJlYW1lcl9hcmNoaXZlX2NvbnRleHQgY29udGV4dCkKK3sK Kwlhc3RyZWFtZXJfd2FsZHVtcCAqbXlzdHJlYW1lciA9IChhc3RyZWFtZXJfd2FsZHVtcCAqKSBz dHJlYW1lcjsKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvID0gbXlzdHJlYW1lci0+cHJp dmF0ZUluZm87CisKKwlBc3NlcnQoY29udGV4dCAhPSBBU1RSRUFNRVJfVU5LTk9XTik7CisKKwlz d2l0Y2ggKGNvbnRleHQpCisJeworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfSEVBREVSOgorCQkJ eworCQkJCWNoYXIJICAgKmZuYW1lID0gTlVMTDsKKwkJCQlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5 OworCQkJCWJvb2wJCWZvdW5kOworCisJCQkJcGdfbG9nX2RlYnVnKCJyZWFkaW5nIFwiJXNcIiIs IG1lbWJlci0+cGF0aG5hbWUpOworCisJCQkJaWYgKCFtZW1iZXJfaXNfd2FsX2ZpbGUobXlzdHJl YW1lciwgbWVtYmVyLCAmZm5hbWUpKQorCQkJCQlicmVhazsKKworCQkJCS8qCisJCQkJICogU2tp cCByYW5nZSBmaWx0ZXJpbmcgZHVyaW5nIGluaXRpYWwgc3RhcnR1cCwgYmVmb3JlIHRoZSBXQUwK KwkJCQkgKiBzZWdtZW50IHNpemUgYW5kIHNlZ21lbnQgbnVtYmVyIGJvdW5kcyBhcmUga25vd24u CisJCQkJICovCisJCQkJaWYgKCFSRUFEX0FOWV9XQUwocHJpdmF0ZUluZm8pKQorCQkJCXsKKwkJ CQkJWExvZ1NlZ05vCXNlZ25vOworCQkJCQlUaW1lTGluZUlECXRpbWVsaW5lOworCisJCQkJCS8q CisJCQkJCSAqIFNraXAgdGhlIHNlZ21lbnQgaWYgdGhlIHRpbWVsaW5lIGRvZXMgbm90IG1hdGNo LCBpZiBpdAorCQkJCQkgKiBmYWxscyBvdXRzaWRlIHRoZSBjYWxsZXItc3BlY2lmaWVkIHJhbmdl LgorCQkJCQkgKi8KKwkJCQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnRpbWVsaW5lLCAmc2Vn bm8sIHByaXZhdGVJbmZvLT5zZWdzaXplKTsKKwkJCQkJaWYgKHByaXZhdGVJbmZvLT50aW1lbGlu ZSAhPSB0aW1lbGluZSB8fAorCQkJCQkJcHJpdmF0ZUluZm8tPnN0YXJ0X3NlZ25vID4gc2Vnbm8g fHwKKwkJCQkJCXByaXZhdGVJbmZvLT5lbmRfc2Vnbm8gPCBzZWdubykKKwkJCQkJeworCQkJCQkJ cGZyZWUoZm5hbWUpOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisKKwkJCQllbnRyeSA9 IEFyY2hpdmVkV0FMX2luc2VydChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwKKwkJCQkJ CQkJCQkgICBmbmFtZSwgJmZvdW5kKTsKKworCQkJCS8qCisJCQkJICogU2hvdWxkbid0IGhhcHBl biwgYnV0IGlmIGl0IGRvZXMsIHNpbXBseSBpZ25vcmUgdGhlCisJCQkJICogZHVwbGljYXRlIFdB TCBmaWxlLgorCQkJCSAqLworCQkJCWlmIChmb3VuZCkKKwkJCQl7CisJCQkJCXBnX2xvZ193YXJu aW5nKCJpZ25vcmluZyBkdXBsaWNhdGUgV0FMIFwiJXNcIiBmb3VuZCBpbiBhcmNoaXZlIFwiJXNc IiIsCisJCQkJCQkJCSAgIG1lbWJlci0+cGF0aG5hbWUsIHByaXZhdGVJbmZvLT5hcmNoaXZlX25h bWUpOworCQkJCQlwZnJlZShmbmFtZSk7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCWVudHJ5 LT5idWYgPSBtYWtlU3RyaW5nSW5mbygpOworCQkJCWVudHJ5LT5zcGlsbGVkID0gZmFsc2U7CisJ CQkJZW50cnktPnJlYWRfbGVuID0gMDsKKwkJCQlwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPSBlbnRy eTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgQVNUUkVBTUVSX01FTUJFUl9DT05URU5UUzoK KwkJCWlmIChwcml2YXRlSW5mby0+Y3VyX2ZpbGUpCisJCQl7CisJCQkJYXBwZW5kQmluYXJ5U3Ry aW5nSW5mbyhwcml2YXRlSW5mby0+Y3VyX2ZpbGUtPmJ1ZiwgZGF0YSwgbGVuKTsKKwkJCQlwcml2 YXRlSW5mby0+Y3VyX2ZpbGUtPnJlYWRfbGVuICs9IGxlbjsKKwkJCX0KKwkJCWJyZWFrOworCisJ CWNhc2UgQVNUUkVBTUVSX01FTUJFUl9UUkFJTEVSOgorCisJCQkvKgorCQkJICogRW5kIG9mIHRo aXMgdGFyIG1lbWJlcjsgbWFyayBjdXJfZmlsZSBOVUxMIHNvIHN1YnNlcXVlbnQKKwkJCSAqIGNv bnRlbnQgY2FsbGJhY2tzIChpZiBhbnkpIGtub3cgbm8gV0FMIGZpbGUgaXMgY3VycmVudGx5CisJ CQkgKiBhY3RpdmUuCisJCQkgKi8KKwkJCXByaXZhdGVJbmZvLT5jdXJfZmlsZSA9IE5VTEw7CisJ CQlicmVhazsKKworCQljYXNlIEFTVFJFQU1FUl9BUkNISVZFX1RSQUlMRVI6CisJCQlicmVhazsK KworCQlkZWZhdWx0OgorCQkJLyogU2hvdWxkbid0IGhhcHBlbi4gKi8KKwkJCXBnX2ZhdGFsKCJ1 bmV4cGVjdGVkIHN0YXRlIHdoaWxlIHBhcnNpbmcgdGFyIGZpbGUiKTsKKwl9Cit9CisKKy8qCisg KiBFbmQtb2Ytc3RyZWFtIHByb2Nlc3NpbmcgZm9yIGFuIGFzdHJlYW1lcl93YWxkdW1wIHN0cmVh bS4gIFRoaXMgaXMgYQorICogdGVybWluYWwgc3RyZWFtZXIgc28gaXQgbXVzdCBoYXZlIG5vIHN1 Y2Nlc3Nvci4KKyAqLworc3RhdGljIHZvaWQKK2FzdHJlYW1lcl93YWxkdW1wX2ZpbmFsaXplKGFz dHJlYW1lciAqc3RyZWFtZXIpCit7CisJQXNzZXJ0KHN0cmVhbWVyLT5iYnNfbmV4dCA9PSBOVUxM KTsKK30KKworLyoKKyAqIEZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhbiBhc3RyZWFtZXJf d2FsZHVtcCBzdHJlYW0uCisgKi8KK3N0YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9mcmVl KGFzdHJlYW1lciAqc3RyZWFtZXIpCit7CisJQXNzZXJ0KHN0cmVhbWVyLT5iYnNfbmV4dCA9PSBO VUxMKTsKKwlwZnJlZShzdHJlYW1lcik7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgdGhl IGFyY2hpdmUgbWVtYmVyIG5hbWUgbWF0Y2hlcyB0aGUgV0FMIG5hbWluZyBmb3JtYXQuIElmCisg KiBzdWNjZXNzZnVsLCBpdCBhbHNvIG91dHB1dHMgdGhlIFdBTCBzZWdtZW50IG5hbWUuCisgKi8K K3N0YXRpYyBib29sCittZW1iZXJfaXNfd2FsX2ZpbGUoYXN0cmVhbWVyX3dhbGR1bXAgKm15c3Ry ZWFtZXIsIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkgICBjaGFyICoqZm5hbWUpCit7 CisJaW50CQkJcGF0aGxlbjsKKwljaGFyCQlwYXRobmFtZVtNQVhQR1BBVEhdOworCWNoYXIJICAg KmZpbGVuYW1lOworCisJLyogV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBub3JtYWwgZmlsZXMg Ki8KKwlpZiAobWVtYmVyLT5pc19kaXJlY3RvcnkgfHwgbWVtYmVyLT5pc19saW5rKQorCQlyZXR1 cm4gZmFsc2U7CisKKwlpZiAoc3RybGVuKG1lbWJlci0+cGF0aG5hbWUpIDwgWExPR19GTkFNRV9M RU4pCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRm9yIGEgY29ycmVjdCBjb21wYXJpc29u LCB3ZSBtdXN0IHJlbW92ZSBhbnkgJy4nIG9yICcuLicgY29tcG9uZW50cworCSAqIGZyb20gdGhl IG1lbWJlciBwYXRobmFtZS4gU2ltaWxhciB0byBtZW1iZXJfdmVyaWZ5X2hlYWRlcigpLCB3ZSBw cmVwZW5kCisJICogJy4vJyB0byB0aGUgcGF0aCBzbyB0aGF0IGNhbm9uaWNhbGl6ZV9wYXRoKCkg Y2FuIHByb3Blcmx5IHJlc29sdmUgYW5kCisJICogc3RyaXAgdGhlc2UgcmVmZXJlbmNlcyBmcm9t IHRoZSB0YXIgbWVtYmVyIG5hbWUuCisJICovCisJc25wcmludGYocGF0aG5hbWUsIE1BWFBHUEFU SCwgIi4vJXMiLCBtZW1iZXItPnBhdGhuYW1lKTsKKwljYW5vbmljYWxpemVfcGF0aChwYXRobmFt ZSk7CisJcGF0aGxlbiA9IHN0cmxlbihwYXRobmFtZSk7CisKKwkvKiBTa2lwIGZpbGVzIGluIHN1 YmRpcmVjdG9yaWVzIG90aGVyIHRoYW4gcGdfd2FsLyAqLworCWlmIChwYXRobGVuID4gWExPR19G TkFNRV9MRU4gJiYKKwkJc3RybmNtcChwYXRobmFtZSwgWExPR0RJUiwgc3RybGVuKFhMT0dESVIp KSAhPSAwKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBXQUwgZmlsZSBtYXkgYXBwZWFyIHdpdGgg YSBmdWxsIHBhdGggKGUuZy4sIHBnX3dhbC88bmFtZT4pICovCisJZmlsZW5hbWUgPSBwYXRobmFt ZSArIChwYXRobGVuIC0gWExPR19GTkFNRV9MRU4pOworCWlmICghSXNYTG9nRmlsZU5hbWUoZmls ZW5hbWUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkqZm5hbWUgPSBwbnN0cmR1cChmaWxlbmFtZSwg WExPR19GTkFNRV9MRU4pOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVu Y3Rpb24gZm9yIFdBTCBmaWxlIGhhc2ggdGFibGUuCisgKi8KK3N0YXRpYyB1aW50MzIKK2hhc2hf c3RyaW5nX3BvaW50ZXIoY29uc3QgY2hhciAqcykKK3sKKwl1bnNpZ25lZCBjaGFyICpzcyA9ICh1 bnNpZ25lZCBjaGFyICopIHM7CisKKwlyZXR1cm4gaGFzaF9ieXRlcyhzcywgc3RybGVuKHMpKTsK K30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZCBiL3NyYy9iaW4v cGdfd2FsZHVtcC9tZXNvbi5idWlsZAppbmRleCA2MzNhOTg3NGJiNS4uNTI5NmYyMWI4MmMgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmluL3Bn X3dhbGR1bXAvbWVzb24uYnVpbGQKQEAgLTEsNiArMSw3IEBACiAjIENvcHlyaWdodCAoYykgMjAy Mi0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogCiBwZ193YWxkdW1w X3NvdXJjZXMgPSBmaWxlcygKKyAgJ2FyY2hpdmVfd2FsZHVtcC5jJywKICAgJ2NvbXBhdC5jJywK ICAgJ3BnX3dhbGR1bXAuYycsCiAgICdybWdyZGVzYy5jJywKQEAgLTE4LDcgKzE5LDcgQEAgZW5k aWYKIAogcGdfd2FsZHVtcCA9IGV4ZWN1dGFibGUoJ3BnX3dhbGR1bXAnLAogICBwZ193YWxkdW1w X3NvdXJjZXMsCi0gIGRlcGVuZGVuY2llczogW2Zyb250ZW5kX2NvZGUsIGx6NCwgenN0ZF0sCisg IGRlcGVuZGVuY2llczogW2Zyb250ZW5kX2NvZGUsIGxpYnBxLCBsejQsIHpzdGRdLAogICBjX2Fy Z3M6IFsnLURGUk9OVEVORCddLCAjIG5lZWRlZCBmb3IgeGxvZ3JlYWRlciBldCBhbAogICBrd2Fy Z3M6IGRlZmF1bHRfYmluX2FyZ3MsCiApCkBAIC0yOSw2ICszMCw3IEBAIHRlc3RzICs9IHsKICAg J3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICdiZCc6IG1lc29uLmN1cnJlbnRf YnVpbGRfZGlyKCksCiAgICd0YXAnOiB7CisgICAgJ2Vudic6IHsnVEFSJzogdGFyLmZvdW5kKCkg PyB0YXIuZnVsbF9wYXRoKCkgOiAnJ30sCiAgICAgJ3Rlc3RzJzogWwogICAgICAgJ3QvMDAxX2Jh c2ljLnBsJywKICAgICAgICd0LzAwMl9zYXZlX2Z1bGxwYWdlLnBsJywKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5jCmluZGV4IDVkMzFiMTVkYmQ4Li5mODI1MDdlZjY5NiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5jCkBAIC0xNzYsNyArMTc2LDcgQEAgc3BsaXRfcGF0aChjb25zdCBjaGFyICpwYXRoLCBj aGFyICoqZGlyLCBjaGFyICoqZm5hbWUpCiAgKgogICogcmV0dXJuIGEgcmVhZCBvbmx5IGZkCiAg Ki8KLXN0YXRpYyBpbnQKK2ludAogb3Blbl9maWxlX2luX2RpcmVjdG9yeShjb25zdCBjaGFyICpk aXJlY3RvcnksIGNvbnN0IGNoYXIgKmZuYW1lKQogewogCWludAkJCWZkID0gLTE7CkBAIC0zMjcs OCArMzI3LDggQEAgaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeShjaGFyICpkaXJlY3RvcnksIGNo YXIgKmZuYW1lLCBpbnQgKldhbFNlZ1N6KQogfQogCiAvKgotICogUmV0dXJucyB0aGUgc2l6ZSBp biBieXRlcyBvZiB0aGUgZGF0YSB0byBiZSByZWFkLiBSZXR1cm5zIC0xIGlmIHRoZSBlbmQKLSAq IHBvaW50IGhhcyBhbHJlYWR5IGJlZW4gcmVhY2hlZC4KKyAqIFJldHVybnMgdGhlIG51bWJlciBv ZiBieXRlcyB0byByZWFkIGZvciB0aGUgZ2l2ZW4gcGFnZS4gIFJldHVybnMgLTEgaWYKKyAqIHRo ZSByZXF1ZXN0ZWQgcmFuZ2UgaGFzIGFscmVhZHkgYmVlbiByZWFjaGVkIG9yIGV4Y2VlZGVkLgog ICovCiBzdGF0aWMgaW5saW5lIGludAogcmVxdWlyZWRfcmVhZF9sZW4oWExvZ0R1bXBQcml2YXRl ICpwcml2YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsCkBAIC00MTIsNyArNDEyLDcgQEAg V0FMRHVtcFJlYWRQYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0 UGFnZVB0ciwgaW50IHJlcUxlbiwKIAlpbnQJCQljb3VudCA9IHJlcXVpcmVkX3JlYWRfbGVuKHBy aXZhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbik7CiAJV0FMUmVhZEVycm9yIGVycmluZm87CiAK LQkvKiBCYWlsIG91dCBpZiB0aGUgY291bnQgdG8gYmUgcmVhZCBpcyBub3QgdmFsaWQgKi8KKwkv KiBCYWlsIG91dCBpZiB0aGUgZW5kIG9mIHRoZSByZXF1ZXN0ZWQgcmFuZ2UgaGFzIGFscmVhZHkg YmVlbiByZWFjaGVkICovCiAJaWYgKGNvdW50IDwgMCkKIAkJcmV0dXJuIC0xOwogCkBAIC00NDAs NiArNDQwLDEwOSBAQCBXQUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExv Z1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAogCXJldHVybiBjb3VudDsKIH0KIAor LyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+c2VnbWVudF9vcGVuIGNhbGxi YWNrIHRvIHN1cHBvcnQgZHVtcGluZyBXQUwKKyAqIGZpbGVzIGZyb20gdGFyIGFyY2hpdmVzLiAg U2VnbWVudCB0cmFja2luZyBpcyBoYW5kbGVkIGJ5CisgKiBUYXJXQUxEdW1wUmVhZFBhZ2UsIHNv IG5vIGFjdGlvbiBpcyBuZWVkZWQgaGVyZS4KKyAqLworc3RhdGljIHZvaWQKK1RhcldBTER1bXBP cGVuU2VnbWVudChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nU2VnTm8gbmV4dFNlZ05vLAor CQkJCQkgIFRpbWVMaW5lSUQgKnRsaV9wKQoreworCS8qIE5vIGFjdGlvbiBuZWVkZWQgKi8KK30K KworLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+c2VnbWVudF9jbG9zZSBj YWxsYmFjayB0byBzdXBwb3J0IGR1bXBpbmcKKyAqIFdBTCBmaWxlcyBmcm9tIHRhciBhcmNoaXZl cy4gIFNlZ21lbnQgdHJhY2tpbmcgaXMgaGFuZGxlZCBieQorICogVGFyV0FMRHVtcFJlYWRQYWdl LCBzbyBubyBhY3Rpb24gaXMgbmVlZGVkIGhlcmUuCisgKi8KK3N0YXRpYyB2b2lkCitUYXJXQUxE dW1wQ2xvc2VTZWdtZW50KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUpCit7CisJLyogTm8gYWN0aW9u IG5lZWRlZCAqLworfQorCisvKgorICogcGdfd2FsZHVtcCdzIFhMb2dSZWFkZXJSb3V0aW5lLT5w YWdlX3JlYWQgY2FsbGJhY2sgdG8gc3VwcG9ydCBkdW1waW5nIFdBTAorICogZmlsZXMgZnJvbSB0 YXIgYXJjaGl2ZXMuCisgKi8KK3N0YXRpYyBpbnQKK1RhcldBTER1bXBSZWFkUGFnZShYTG9nUmVh ZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsIGludCByZXFMZW4sCisJ CQkJICAgWExvZ1JlY1B0ciB0YXJnZXRQdHIsIGNoYXIgKnJlYWRCdWZmKQoreworCVhMb2dEdW1w UHJpdmF0ZSAqcHJpdmF0ZSA9IHN0YXRlLT5wcml2YXRlX2RhdGE7CisJaW50CQkJY291bnQgPSBy ZXF1aXJlZF9yZWFkX2xlbihwcml2YXRlLCB0YXJnZXRQYWdlUHRyLCByZXFMZW4pOworCWludAkJ CXNlZ3NpemUgPSBzdGF0ZS0+c2VnY3h0LndzX3NlZ3NpemU7CisJWExvZ1NlZ05vCWN1clNlZ05v OworCisJLyogQmFpbCBvdXQgaWYgdGhlIGVuZCBvZiB0aGUgcmVxdWVzdGVkIHJhbmdlIGhhcyBh bHJlYWR5IGJlZW4gcmVhY2hlZCAqLworCWlmIChjb3VudCA8IDApCisJCXJldHVybiAtMTsKKwor CS8qCisJICogSWYgdGhlIHRhcmdldCBwYWdlIGlzIGluIGEgZGlmZmVyZW50IHNlZ21lbnQsIHJl bGVhc2UgdGhlIGhhc2ggZW50cnkKKwkgKiBidWZmZXIgYW5kIHJlbW92ZSBhbnkgc3BpbGxlZCB0 ZW1wb3JhcnkgZmlsZSBmb3IgdGhlIHByZXZpb3VzIHNlZ21lbnQuCisJICogU2luY2UgcGdfd2Fs ZHVtcCBuZXZlciByZXF1ZXN0cyB0aGUgc2FtZSBXQUwgYnl0ZXMgdHdpY2UsIG1vdmluZyB0byBh CisJICogbmV3IHNlZ21lbnQgbWVhbnMgdGhlIHByZXZpb3VzIHNlZ21lbnQncyBkYXRhIHdpbGwg bm90IGJlIG5lZWRlZCBhZ2Fpbi4KKwkgKgorCSAqIEFmdGVyd2FyZCwgY2hlY2sgd2hldGhlciB0 aGUgbmV4dCByZXF1aXJlZCBXQUwgc2VnbWVudCB3YXMgYWxyZWFkeQorCSAqIHNwaWxsZWQgdG8g dGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgYmVmb3JlIGludm9raW5nIHRoZSBhcmNoaXZlCisJICog c3RyZWFtZXIuCisJICovCisJY3VyU2VnTm8gPSBzdGF0ZS0+c2VnLndzX3NlZ25vOworCWlmICgh WExCeXRlSW5TZWcodGFyZ2V0UGFnZVB0ciwgY3VyU2VnTm8sIHNlZ3NpemUpKQorCXsKKwkJY2hh cgkJZm5hbWVbTUFYRk5BTUVMRU5dOworCQlYTG9nU2VnTm8JbmV4dFNlZ05vOworCisJCS8qCisJ CSAqIENhbGN1bGF0ZSB0aGUgbmV4dCBXQUwgc2VnbWVudCB0byBiZSBkZWNvZGVkIGZyb20gdGhl IGdpdmVuIHBhZ2UKKwkJICogcG9pbnRlci4KKwkJICovCisJCVhMQnl0ZVRvU2VnKHRhcmdldFBh Z2VQdHIsIG5leHRTZWdObywgc2Vnc2l6ZSk7CisJCXN0YXRlLT5zZWcud3NfdGxpID0gcHJpdmF0 ZS0+dGltZWxpbmU7CisJCXN0YXRlLT5zZWcud3Nfc2Vnbm8gPSBuZXh0U2VnTm87CisKKwkJLyog Q2xvc2UgdGhlIFdBTCBzZWdtZW50IGZpbGUgaWYgaXQgaXMgY3VycmVudGx5IG9wZW4gKi8KKwkJ aWYgKHN0YXRlLT5zZWcud3NfZmlsZSA+PSAwKQorCQl7CisJCQljbG9zZShzdGF0ZS0+c2VnLndz X2ZpbGUpOworCQkJc3RhdGUtPnNlZy53c19maWxlID0gLTE7CisJCX0KKworCQkvKgorCQkgKiBJ ZiBpbiBwcmUtcmVhZGluZyBtb2RlIChwcmlvciB0byBhY3R1YWwgZGVjb2RpbmcpLCBkbyBub3Qg ZGVsZXRlCisJCSAqIGFueSBlbnRyaWVzIHRoYXQgbWlnaHQgYmUgcmVxdWVzdGVkIGFnYWluIG9u Y2UgdGhlIGRlY29kaW5nIGxvb3AKKwkJICogc3RhcnRzLiBGb3IgbW9yZSBkZXRhaWxzLCBzZWUg dGhlIGNvbW1lbnRzIGluCisJCSAqIHJlYWRfYXJjaGl2ZV93YWxfcGFnZSgpLgorCQkgKi8KKwkJ aWYgKHByaXZhdGUtPmRlY29kaW5nX3N0YXJ0ZWQgJiYgY3VyU2VnTm8gPCBuZXh0U2VnTm8pCisJ CXsKKwkJCVhMb2dGaWxlTmFtZShmbmFtZSwgc3RhdGUtPnNlZy53c190bGksIGN1clNlZ05vLCBz ZWdzaXplKTsKKwkJCWZyZWVfYXJjaGl2ZV93YWxfZW50cnkoZm5hbWUsIHByaXZhdGUpOworCQl9 CisKKwkJLyoKKwkJICogSWYgdGhlIG5leHQgc2VnbWVudCBleGlzdHMgaW4gdGhlIHRlbXBvcmFy eSBzcGlsbCBkaXJlY3RvcnksIG9wZW4KKwkJICogaXQgYW5kIGNvbnRpbnVlIHJlYWRpbmcgZnJv bSB0aGVyZS4KKwkJICovCisJCWlmIChUbXBXYWxTZWdEaXIgIT0gTlVMTCkKKwkJeworCQkJWExv Z0ZpbGVOYW1lKGZuYW1lLCBzdGF0ZS0+c2VnLndzX3RsaSwgbmV4dFNlZ05vLCBzZWdzaXplKTsK KwkJCXN0YXRlLT5zZWcud3NfZmlsZSA9IG9wZW5fZmlsZV9pbl9kaXJlY3RvcnkoVG1wV2FsU2Vn RGlyLCBmbmFtZSk7CisJCX0KKwl9CisKKwkvKiBDb250aW51ZSByZWFkaW5nIGZyb20gdGhlIG9w ZW4gV0FMIHNlZ21lbnQsIGlmIGFueSAqLworCWlmIChzdGF0ZS0+c2VnLndzX2ZpbGUgPj0gMCkK KwkJcmV0dXJuIFdBTER1bXBSZWFkUGFnZShzdGF0ZSwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHRh cmdldFB0ciwKKwkJCQkJCQkgICByZWFkQnVmZik7CisKKwkvKiBPdGhlcndpc2UsIHJlYWQgdGhl IFdBTCBwYWdlIGZyb20gdGhlIGFyY2hpdmUgc3RyZWFtZXIgKi8KKwlyZXR1cm4gcmVhZF9hcmNo aXZlX3dhbF9wYWdlKHByaXZhdGUsIHRhcmdldFBhZ2VQdHIsIGNvdW50LCByZWFkQnVmZik7Cit9 CisKIC8qCiAgKiBCb29sZWFuIHRvIHJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBXQUwgcmVjb3Jk IG1hdGNoZXMgYSBzcGVjaWZpYyByZWxhdGlvbgogICogYW5kIG9wdGlvbmFsbHkgYmxvY2suCkBA IC03NzcsOCArODgwLDggQEAgdXNhZ2Uodm9pZCkKIAlwcmludGYoXygiICAtRiwgLS1mb3JrPUZP UksgICAgICAgIG9ubHkgc2hvdyByZWNvcmRzIHRoYXQgbW9kaWZ5IGJsb2NrcyBpbiBmb3JrIEZP Uks7XG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCBuYW1lcyBhcmUgbWFp biwgZnNtLCB2bSwgaW5pdFxuIikpOwogCXByaW50ZihfKCIgIC1uLCAtLWxpbWl0PU4gICAgICAg ICAgbnVtYmVyIG9mIHJlY29yZHMgdG8gZGlzcGxheVxuIikpOwotCXByaW50ZihfKCIgIC1wLCAt LXBhdGg9UEFUSCAgICAgICAgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGZpbmQgV0FMIHNlZ21lbnQg ZmlsZXMgb3IgYVxuIgotCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHdp dGggYSAuL3BnX3dhbCB0aGF0IGNvbnRhaW5zIHN1Y2ggZmlsZXNcbiIKKwlwcmludGYoXygiICAt cCwgLS1wYXRoPVBBVEggICAgICAgIGEgdGFyIGFyY2hpdmUgb3IgYSBkaXJlY3RvcnkgaW4gd2hp Y2ggdG8gZmluZCBXQUwgc2VnbWVudCBmaWxlcyBvclxuIgorCQkJICIgICAgICAgICAgICAgICAg ICAgICAgICAgYSBkaXJlY3Rvcnkgd2l0aCBhIHBnX3dhbCBzdWJkaXJlY3RvcnkgY29udGFpbmlu ZyBzdWNoIGZpbGVzXG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDog Y3VycmVudCBkaXJlY3RvcnksIC4vcGdfd2FsLCAkUEdEQVRBL3BnX3dhbClcbiIpKTsKIAlwcmlu dGYoXygiICAtcSwgLS1xdWlldCAgICAgICAgICAgIGRvIG5vdCBwcmludCBhbnkgb3V0cHV0LCBl eGNlcHQgZm9yIGVycm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1yLCAtLXJtZ3I9Uk1HUiAgICAg ICAgb25seSBzaG93IHJlY29yZHMgZ2VuZXJhdGVkIGJ5IHJlc291cmNlIG1hbmFnZXIgUk1HUjtc biIKQEAgLTgxMSw2ICs5MTQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlYTG9n UmVjUHRyCWZpcnN0X3JlY29yZDsKIAljaGFyCSAgICp3YWxkaXIgPSBOVUxMOwogCWNoYXIJICAg KmVycm9ybXNnOworCXBnX2NvbXByZXNzX2FsZ29yaXRobSBjb21wcmVzc2lvbiA9IFBHX0NPTVBS RVNTSU9OX05PTkU7CiAKIAlzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9IHsK IAkJeyJia3AtZGV0YWlscyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnYid9LApAQCAtODY4LDYgKzk3 MiwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlwcml2YXRlLnN0YXJ0cHRyID0g SW52YWxpZFhMb2dSZWNQdHI7CiAJcHJpdmF0ZS5lbmRwdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsK IAlwcml2YXRlLmVuZHB0cl9yZWFjaGVkID0gZmFsc2U7CisJcHJpdmF0ZS5kZWNvZGluZ19zdGFy dGVkID0gZmFsc2U7CisJcHJpdmF0ZS5hcmNoaXZlX25hbWUgPSBOVUxMOworCXByaXZhdGUuc3Rh cnRfc2Vnbm8gPSAwOworCXByaXZhdGUuZW5kX3NlZ25vID0gVUlOVDY0X01BWDsKIAogCWNvbmZp Zy5xdWlldCA9IGZhbHNlOwogCWNvbmZpZy5ia3BfZGV0YWlscyA9IGZhbHNlOwpAQCAtMTEwOSw4 ICsxMjE3LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKHdhbGRpciAh PSBOVUxMKQogCXsKLQkJLyogdmFsaWRhdGUgcGF0aCBwb2ludHMgdG8gZGlyZWN0b3J5ICovCi0J CWlmICghdmVyaWZ5X2RpcmVjdG9yeSh3YWxkaXIpKQorCQkvKiBDaGVjayB3aGV0aGVyIHRoZSBw YXRoIGxvb2tzIGxpa2UgYSB0YXIgYXJjaGl2ZSBieSBpdHMgZXh0ZW5zaW9uICovCisJCWlmIChw YXJzZV90YXJfY29tcHJlc3NfYWxnb3JpdGhtKHdhbGRpciwgJmNvbXByZXNzaW9uKSkKKwkJewor CQkJc3BsaXRfcGF0aCh3YWxkaXIsICZwcml2YXRlLmFyY2hpdmVfZGlyLCAmcHJpdmF0ZS5hcmNo aXZlX25hbWUpOworCQl9CisJCS8qIE90aGVyd2lzZSBpdCBtdXN0IGJlIGEgZGlyZWN0b3J5ICov CisJCWVsc2UgaWYgKCF2ZXJpZnlfZGlyZWN0b3J5KHdhbGRpcikpCiAJCXsKIAkJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCB3YWxkaXIpOwogCQkJ Z290byBiYWRfYXJndW1lbnQ7CkBAIC0xMTI4LDYgKzEyNDEsMTcgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJCWludAkJCWZkOwogCQlYTG9nU2VnTm8Jc2Vnbm87CiAKKwkJLyoKKwkJ ICogSWYgYSB0YXIgYXJjaGl2ZSBpcyBwYXNzZWQgdXNpbmcgdGhlIC0tcGF0aCBvcHRpb24sIGFs bCBvdGhlcgorCQkgKiBhcmd1bWVudHMgYmVjb21lIHVubmVjZXNzYXJ5LgorCQkgKi8KKwkJaWYg KHByaXZhdGUuYXJjaGl2ZV9uYW1lKQorCQl7CisJCQlwZ19sb2dfZXJyb3IoInVubmVjZXNzYXJ5 IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgc3BlY2lmaWVkIHdpdGggdGFyIGFyY2hpdmUgKGZpcnN0 IGlzIFwiJXNcIikiLAorCQkJCQkJIGFyZ3Zbb3B0aW5kXSk7CisJCQlnb3RvIGJhZF9hcmd1bWVu dDsKKwkJfQorCiAJCXNwbGl0X3BhdGgoYXJndltvcHRpbmRdLCAmZGlyZWN0b3J5LCAmZm5hbWUp OwogCiAJCWlmICh3YWxkaXIgPT0gTlVMTCAmJiBkaXJlY3RvcnkgIT0gTlVMTCkKQEAgLTExMzgs NjggKzEyNjIsNzUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJcGdfZmF0YWwo ImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgd2FsZGlyKTsKIAkJfQogCi0J CXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSwgJnByaXZh dGUuc2Vnc2l6ZSk7Ci0JCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1l KTsKLQkJaWYgKGZkIDwgMCkKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNc IiIsIGZuYW1lKTsKLQkJY2xvc2UoZmQpOwotCi0JCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmls ZSAqLwotCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJnNlZ25v LCBwcml2YXRlLnNlZ3NpemUpOwotCi0JCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5z dGFydHB0cikpCi0JCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubywgMCwgcHJpdmF0ZS5z ZWdzaXplLCBwcml2YXRlLnN0YXJ0cHRyKTsKLQkJZWxzZSBpZiAoIVhMQnl0ZUluU2VnKHByaXZh dGUuc3RhcnRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpKQorCQlpZiAoZm5hbWUgIT0gTlVM TCAmJiBwYXJzZV90YXJfY29tcHJlc3NfYWxnb3JpdGhtKGZuYW1lLCAmY29tcHJlc3Npb24pKQog CQl7Ci0JCQlwZ19sb2dfZXJyb3IoInN0YXJ0IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBp bnNpZGUgZmlsZSBcIiVzXCIiLAotCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLnN0YXJ0 cHRyKSwKLQkJCQkJCSBmbmFtZSk7Ci0JCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJCXByaXZhdGUu YXJjaGl2ZV9kaXIgPSB3YWxkaXI7CisJCQlwcml2YXRlLmFyY2hpdmVfbmFtZSA9IGZuYW1lOwog CQl9Ci0KLQkJLyogbm8gc2Vjb25kIGZpbGUgc3BlY2lmaWVkLCBzZXQgZW5kIHBvc2l0aW9uICov Ci0JCWlmICghKG9wdGluZCArIDEgPCBhcmdjKSAmJiAhWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0 ZS5lbmRwdHIpKQotCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8gKyAxLCAwLCBwcml2 YXRlLnNlZ3NpemUsIHByaXZhdGUuZW5kcHRyKTsKLQotCQkvKiBwYXJzZSBFTkRTRUcgaWYgcGFz c2VkICovCi0JCWlmIChvcHRpbmQgKyAxIDwgYXJnYykKKwkJZWxzZQogCQl7Ci0JCQlYTG9nU2Vn Tm8JZW5kc2Vnbm87Ci0KLQkJCS8qIGlnbm9yZSBkaXJlY3RvcnksIGFscmVhZHkgaGF2ZSB0aGF0 ICovCi0JCQlzcGxpdF9wYXRoKGFyZ3Zbb3B0aW5kICsgMV0sICZkaXJlY3RvcnksICZmbmFtZSk7 Ci0KKwkJCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSwg JnByaXZhdGUuc2Vnc2l6ZSk7CiAJCQlmZCA9IG9wZW5fZmlsZV9pbl9kaXJlY3Rvcnkod2FsZGly LCBmbmFtZSk7CiAJCQlpZiAoZmQgPCAwKQogCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBm aWxlIFwiJXNcIiIsIGZuYW1lKTsKIAkJCWNsb3NlKGZkKTsKIAogCQkJLyogcGFyc2UgcG9zaXRp b24gZnJvbSBmaWxlICovCi0JCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1l bGluZSwgJmVuZHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpOworCQkJWExvZ0Zyb21GaWxlTmFtZShm bmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZzZWdubywgcHJpdmF0ZS5zZWdzaXplKTsKIAotCQkJ aWYgKGVuZHNlZ25vIDwgc2Vnbm8pCi0JCQkJcGdfZmF0YWwoIkVORFNFRyAlcyBpcyBiZWZvcmUg U1RBUlRTRUcgJXMiLAotCQkJCQkJIGFyZ3Zbb3B0aW5kICsgMV0sIGFyZ3Zbb3B0aW5kXSk7CisJ CQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuc3RhcnRwdHIpKQorCQkJCVhMb2dTZWdO b09mZnNldFRvUmVjUHRyKHNlZ25vLCAwLCBwcml2YXRlLnNlZ3NpemUsIHByaXZhdGUuc3RhcnRw dHIpOworCQkJZWxzZSBpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuc3RhcnRwdHIsIHNlZ25vLCBw cml2YXRlLnNlZ3NpemUpKQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigic3RhcnQgV0FMIGxvY2F0 aW9uICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxlIFwiJXNcIiIsCisJCQkJCQkJIExTTl9GT1JN QVRfQVJHUyhwcml2YXRlLnN0YXJ0cHRyKSwKKwkJCQkJCQkgZm5hbWUpOworCQkJCWdvdG8gYmFk X2FyZ3VtZW50OworCQkJfQogCi0JCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5k cHRyKSkKLQkJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihlbmRzZWdubyArIDEsIDAsIHByaXZh dGUuc2Vnc2l6ZSwKLQkJCQkJCQkJCQlwcml2YXRlLmVuZHB0cik7CisJCQkvKiBubyBzZWNvbmQg ZmlsZSBzcGVjaWZpZWQsIHNldCBlbmQgcG9zaXRpb24gKi8KKwkJCWlmICghKG9wdGluZCArIDEg PCBhcmdjKSAmJiAhWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5lbmRwdHIpKQorCQkJCVhMb2dT ZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXplLCBwcml2YXRl LmVuZHB0cik7CiAKLQkJCS8qIHNldCBzZWdubyB0byBlbmRzZWdubyBmb3IgY2hlY2sgb2YgLS1l bmQgKi8KLQkJCXNlZ25vID0gZW5kc2Vnbm87Ci0JCX0KKwkJCS8qIHBhcnNlIEVORFNFRyBpZiBw YXNzZWQgKi8KKwkJCWlmIChvcHRpbmQgKyAxIDwgYXJnYykKKwkJCXsKKwkJCQlYTG9nU2VnTm8J ZW5kc2Vnbm87CiAKKwkJCQkvKiBpZ25vcmUgZGlyZWN0b3J5LCBhbHJlYWR5IGhhdmUgdGhhdCAq LworCQkJCXNwbGl0X3BhdGgoYXJndltvcHRpbmQgKyAxXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsK IAotCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5kcHRyLCBzZWdubywgcHJpdmF0ZS5zZWdz aXplKSAmJgotCQkJcHJpdmF0ZS5lbmRwdHIgIT0gKHNlZ25vICsgMSkgKiBwcml2YXRlLnNlZ3Np emUpCi0JCXsKLQkJCXBnX2xvZ19lcnJvcigiZW5kIFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5v dCBpbnNpZGUgZmlsZSBcIiVzXCIiLAotCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLmVu ZHB0ciksCi0JCQkJCQkgYXJndlthcmdjIC0gMV0pOwotCQkJZ290byBiYWRfYXJndW1lbnQ7CisJ CQkJZmQgPSBvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUpOworCQkJCWlmIChm ZCA8IDApCisJCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiIsIGZuYW1l KTsKKwkJCQljbG9zZShmZCk7CisKKwkJCQkvKiBwYXJzZSBwb3NpdGlvbiBmcm9tIGZpbGUgKi8K KwkJCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJmVuZHNlZ25v LCBwcml2YXRlLnNlZ3NpemUpOworCisJCQkJaWYgKGVuZHNlZ25vIDwgc2Vnbm8pCisJCQkJCXBn X2ZhdGFsKCJFTkRTRUcgJXMgaXMgYmVmb3JlIFNUQVJUU0VHICVzIiwKKwkJCQkJCQkgYXJndltv cHRpbmQgKyAxXSwgYXJndltvcHRpbmRdKTsKKworCQkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQo cHJpdmF0ZS5lbmRwdHIpKQorCQkJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihlbmRzZWdubyAr IDEsIDAsIHByaXZhdGUuc2Vnc2l6ZSwKKwkJCQkJCQkJCQkJcHJpdmF0ZS5lbmRwdHIpOworCisJ CQkJLyogc2V0IHNlZ25vIHRvIGVuZHNlZ25vIGZvciBjaGVjayBvZiAtLWVuZCAqLworCQkJCXNl Z25vID0gZW5kc2Vnbm87CisJCQl9CisKKwkJCWlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5lbmRw dHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpICYmCisJCQkJcHJpdmF0ZS5lbmRwdHIgIT0gKHNl Z25vICsgMSkgKiBwcml2YXRlLnNlZ3NpemUpCisJCQl7CisJCQkJcGdfbG9nX2Vycm9yKCJlbmQg V0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxlIFwiJXNcIiIsCisJCQkJCQkJ IExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLmVuZHB0ciksCisJCQkJCQkJIGFyZ3ZbYXJnYyAtIDFd KTsKKwkJCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJCX0KIAkJfQogCX0KLQllbHNlCisJZWxzZSBp ZiAoIXByaXZhdGUuYXJjaGl2ZV9uYW1lKQogCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGly ZWN0b3J5KHdhbGRpciwgTlVMTCwgJnByaXZhdGUuc2Vnc2l6ZSk7CiAKIAkvKiB3ZSBkb24ndCBr bm93IHdoYXQgdG8gcHJpbnQgKi8KQEAgLTEyMDksMTUgKzEzNDAsNDYgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJCWdvdG8gYmFkX2FyZ3VtZW50OwogCX0KIAorCS8qIC0tZm9sbG93 IGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB0YXIgYXJjaGl2ZXMgKi8KKwlpZiAoY29uZmlnLmZvbGxv dyAmJiBwcml2YXRlLmFyY2hpdmVfbmFtZSkKKwl7CisJCXBnX2xvZ19lcnJvcigiLS1mb2xsb3cg aXMgbm90IHN1cHBvcnRlZCB3aGVuIHJlYWRpbmcgZnJvbSBhIHRhciBhcmNoaXZlIik7CisJCWdv dG8gYmFkX2FyZ3VtZW50OworCX0KKwogCS8qIGRvbmUgd2l0aCBhcmd1bWVudCBwYXJzaW5nLCBk byB0aGUgYWN0dWFsIHdvcmsgKi8KIAogCS8qIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkLCBz dGFydCByZWFkaW5nICovCi0JeGxvZ3JlYWRlcl9zdGF0ZSA9Ci0JCVhMb2dSZWFkZXJBbGxvY2F0 ZShwcml2YXRlLnNlZ3NpemUsIHdhbGRpciwKLQkJCQkJCSAgIFhMX1JPVVRJTkUoLnBhZ2VfcmVh ZCA9IFdBTER1bXBSZWFkUGFnZSwKLQkJCQkJCQkJCSAgLnNlZ21lbnRfb3BlbiA9IFdBTER1bXBP cGVuU2VnbWVudCwKLQkJCQkJCQkJCSAgLnNlZ21lbnRfY2xvc2UgPSBXQUxEdW1wQ2xvc2VTZWdt ZW50KSwKLQkJCQkJCSAgICZwcml2YXRlKTsKKwlpZiAocHJpdmF0ZS5hcmNoaXZlX25hbWUpCisJ eworCQkvKgorCQkgKiBBIE5VTEwgZGlyZWN0b3J5IGluZGljYXRlcyB0aGF0IHRoZSBhcmNoaXZl IGZpbGUgaXMgbG9jYXRlZCBpbiB0aGUKKwkJICogY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4K KwkJICovCisJCWlmIChwcml2YXRlLmFyY2hpdmVfZGlyID09IE5VTEwpCisJCQlwcml2YXRlLmFy Y2hpdmVfZGlyID0gcGdfc3RyZHVwKCIuIik7CisKKwkJLyogU2V0IHVwIGZvciByZWFkaW5nIHRh ciBmaWxlICovCisJCWluaXRfYXJjaGl2ZV9yZWFkZXIoJnByaXZhdGUsIGNvbXByZXNzaW9uKTsK KworCQkvKiBSb3V0aW5lIHRvIGRlY29kZSBXQUwgZmlsZXMgaW4gdGFyIGFyY2hpdmUgKi8KKwkJ eGxvZ3JlYWRlcl9zdGF0ZSA9CisJCQlYTG9nUmVhZGVyQWxsb2NhdGUocHJpdmF0ZS5zZWdzaXpl LCBwcml2YXRlLmFyY2hpdmVfZGlyLAorCQkJCQkJCSAgIFhMX1JPVVRJTkUoLnBhZ2VfcmVhZCA9 IFRhcldBTER1bXBSZWFkUGFnZSwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X29wZW4gPSBUYXJXQUxE dW1wT3BlblNlZ21lbnQsCisJCQkJCQkJCQkJICAuc2VnbWVudF9jbG9zZSA9IFRhcldBTER1bXBD bG9zZVNlZ21lbnQpLAorCQkJCQkJCSAgICZwcml2YXRlKTsKKwl9CisJZWxzZQorCXsKKwkJeGxv Z3JlYWRlcl9zdGF0ZSA9CisJCQlYTG9nUmVhZGVyQWxsb2NhdGUocHJpdmF0ZS5zZWdzaXplLCB3 YWxkaXIsCisJCQkJCQkJICAgWExfUk9VVElORSgucGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdl LAorCQkJCQkJCQkJCSAgLnNlZ21lbnRfb3BlbiA9IFdBTER1bXBPcGVuU2VnbWVudCwKKwkJCQkJ CQkJCQkgIC5zZWdtZW50X2Nsb3NlID0gV0FMRHVtcENsb3NlU2VnbWVudCksCisJCQkJCQkJICAg JnByaXZhdGUpOworCX0KKwogCWlmICgheGxvZ3JlYWRlcl9zdGF0ZSkKIAkJcGdfZmF0YWwoIm91 dCBvZiBtZW1vcnkgd2hpbGUgYWxsb2NhdGluZyBhIFdBTCByZWFkaW5nIHByb2Nlc3NvciIpOwog CkBAIC0xMjQ1LDYgKzE0MDcsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAo Y29uZmlnLnN0YXRzID09IHRydWUgJiYgIWNvbmZpZy5xdWlldCkKIAkJc3RhdHMuc3RhcnRwdHIg PSBmaXJzdF9yZWNvcmQ7CiAKKwkvKiBGbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgZGVjb2Rpbmcg bG9vcCBoYXMgYmVlbiBlbnRlcmVkICovCisJcHJpdmF0ZS5kZWNvZGluZ19zdGFydGVkID0gdHJ1 ZTsKKwogCWZvciAoOzspCiAJewogCQlpZiAodGltZV90b19zdG9wKQpAQCAtMTMyNiw2ICsxNDkx LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlYTG9nUmVhZGVyRnJlZSh4bG9n cmVhZGVyX3N0YXRlKTsKIAorCWlmIChwcml2YXRlLmFyY2hpdmVfbmFtZSkKKwkJZnJlZV9hcmNo aXZlX3JlYWRlcigmcHJpdmF0ZSk7CisKIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwogCiBiYWRfYXJn dW1lbnQ6CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaAppbmRleCAwMTNiMDUxNTA2Zi4uMzY4OTM2MjRm NTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKysrIGIvc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaApAQCAtMTIsNiArMTIsMTQgQEAKICNkZWZpbmUg UEdfV0FMRFVNUF9ICiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJm ZV91dGlscy9hc3RyZWFtZXIuaCIKKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworc3RydWN0 IEFyY2hpdmVkV0FMRmlsZTsKK3N0cnVjdCBBcmNoaXZlZFdBTF9oYXNoOworCisvKiBUZW1wb3Jh cnkgZGlyZWN0b3J5IGZvciBzcGlsbGluZyBvdXQtb2Ytb3JkZXIgV0FMIHNlZ21lbnRzIGZyb20g YXJjaGl2ZXMgKi8KK2V4dGVybiBjaGFyICpUbXBXYWxTZWdEaXI7CiAKIC8qIENvbnRhaW5zIHRo ZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gZHJpdmUgV0FMIGRlY29kaW5nICovCiB0eXBlZGVm IHN0cnVjdCBYTG9nRHVtcFByaXZhdGUKQEAgLTIxLDYgKzI5LDQ5IEBAIHR5cGVkZWYgc3RydWN0 IFhMb2dEdW1wUHJpdmF0ZQogCVhMb2dSZWNQdHIJc3RhcnRwdHI7CiAJWExvZ1JlY1B0cgllbmRw dHI7CiAJYm9vbAkJZW5kcHRyX3JlYWNoZWQ7CisJYm9vbAkJZGVjb2Rpbmdfc3RhcnRlZDsKKwor CS8qIEZpZWxkcyByZXF1aXJlZCB0byByZWFkIFdBTCBmcm9tIGFyY2hpdmUgKi8KKwljaGFyCSAg ICphcmNoaXZlX2RpcjsKKwljaGFyCSAgICphcmNoaXZlX25hbWU7CS8qIFRhciBhcmNoaXZlIGZp bGVuYW1lICovCisJaW50CQkJYXJjaGl2ZV9mZDsJCS8qIEZpbGUgZGVzY3JpcHRvciBmb3IgdGhl IG9wZW4gdGFyIGZpbGUgKi8KKworCWFzdHJlYW1lciAgKmFyY2hpdmVfc3RyZWFtZXI7CisJY2hh cgkgICAqYXJjaGl2ZV9yZWFkX2J1ZjsJLyogUmV1c2FibGUgcmVhZCBidWZmZXIgZm9yIGFyY2hp dmUgSS9PICovCisKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJU2l6ZQkJYXJjaGl2ZV9y ZWFkX2J1Zl9zaXplOworI2VuZGlmCisKKwkvKiBXaGF0IHRoZSBhcmNoaXZlIHN0cmVhbWVyIGlz IGN1cnJlbnRseSByZWFkaW5nICovCisJc3RydWN0IEFyY2hpdmVkV0FMRmlsZSAqY3VyX2ZpbGU7 CisKKwkvKgorCSAqIEhhc2ggdGFibGUgb2YgV0FMIHNlZ21lbnRzIGN1cnJlbnRseSBidWZmZXJl ZCBmcm9tIHRoZSBhcmNoaXZlLAorCSAqIGluY2x1ZGluZyBhbnkgc2VnbWVudCBjdXJyZW50bHkg YmVpbmcgc3RyZWFtZWQuICBFbnRyaWVzIGFyZSByZW1vdmVkCisJICogb25jZSBjb25zdW1lZCwg c28gdGhpcyBkb2VzIG5vdCBhY2N1bXVsYXRlIGFsbCBzZWdtZW50cyBldmVyIHJlYWQuCisJICov CisJc3RydWN0IEFyY2hpdmVkV0FMX2hhc2ggKmFyY2hpdmVfd2FsX2h0YWI7CisKKwkvKgorCSAq IFByZS1jb21wdXRlZCBzZWdtZW50IG51bWJlcnMgZGVyaXZlZCBmcm9tIHN0YXJ0cHRyIGFuZCBl bmRwdHIuIENhY2hpbmcKKwkgKiB0aGVtIGF2b2lkcyByZXBlYXRlZCBYTEJ5dGVUb1NlZygpIGNh bGxzIHdoZW4gZmlsdGVyaW5nIGVhY2ggYXJjaGl2ZQorCSAqIG1lbWJlciBhZ2FpbnN0IHRoZSBy ZXF1ZXN0ZWQgV0FMIHJhbmdlLiAgZW5kX3NlZ25vIGlzIGluaXRpYWxpemVkIHRvCisJICogVUlO VDY0X01BWCB3aGVuIG5vIGVuZCBsaW1pdCBpcyByZXF1ZXN0ZWQuCisJICovCisJWExvZ1NlZ05v CXN0YXJ0X3NlZ25vOworCVhMb2dTZWdObwllbmRfc2Vnbm87CiB9IFhMb2dEdW1wUHJpdmF0ZTsK IAorZXh0ZXJuIGludAlvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpcmVjdG9y eSwgY29uc3QgY2hhciAqZm5hbWUpOworCitleHRlcm4gdm9pZCBpbml0X2FyY2hpdmVfcmVhZGVy KFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sCisJCQkJCQkJCXBnX2NvbXByZXNzX2FsZ29y aXRobSBjb21wcmVzc2lvbik7CitleHRlcm4gdm9pZCBmcmVlX2FyY2hpdmVfcmVhZGVyKFhMb2dE dW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOworZXh0ZXJuIGludAlyZWFkX2FyY2hpdmVfd2FsX3Bh Z2UoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKKwkJCQkJCQkJICBYTG9nUmVjUHRyIHRh cmdldFBhZ2VQdHIsCisJCQkJCQkJCSAgU2l6ZSBjb3VudCwgY2hhciAqcmVhZEJ1ZmYpOworZXh0 ZXJuIHZvaWQgZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFtZSwKKwkJCQkJ CQkJICAgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyk7CisKICNlbmRpZgkJCQkJCQkvKiBQ R19XQUxEVU1QX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNp Yy5wbCBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCA1ZGI1ZDIwMTM2 Zi4uMTFkZjdlMDkyYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNp Yy5wbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTMsOSArMywx MyBAQAogCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIEN3 ZDsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7Cit1c2UgTGlzdDo6VXRpbCBxdyhzaHVmZmxlKTsKKwor bXkgJHRhciA9ICRFTlZ7VEFSfTsKIAogcHJvZ3JhbV9oZWxwX29rKCdwZ193YWxkdW1wJyk7CiBw cm9ncmFtX3ZlcnNpb25fb2soJ3BnX3dhbGR1bXAnKTsKQEAgLTE2Miw2ICsxNjYsNDIgQEAgQ1JF QVRFIFRBQkxFU1BBQ0UgdHMxIExPQ0FUSU9OICckdGJsc3BjX3BhdGgnOwogRFJPUCBUQUJMRVNQ QUNFIHRzMTsKIH0pOwogCisjIFRlc3Q6IERlY29kZSBhIGNvbnRpbnVhdGlvbiByZWNvcmQgKGNv bnRyZWNvcmQpIHRoYXQgc3BhbnMgbXVsdGlwbGUgV0FMCisjIHNlZ21lbnRzLgorIworIyBOb3cg Y29uc3VtZSBhbGwgcmVtYWluaW5nIHJvb20gaW4gdGhlIGN1cnJlbnQgV0FMIHNlZ21lbnQsIGxl YXZpbmcKKyMgc3BhY2UgZW5vdWdoIG9ubHkgZm9yIHRoZSBzdGFydCBvZiBhIGxhcmdpc2ggcmVj b3JkLgorJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxeworRE8gJCQKK0RFQ0xBUkUK KyAgICB3YWxfc2Vnc2l6ZSBpbnQgOj0gc2V0dGluZzo6aW50IEZST00gcGdfc2V0dGluZ3MgV0hF UkUgbmFtZSA9ICd3YWxfc2VnbWVudF9zaXplJzsKKyAgICByZW1haW4gaW50OworICAgIGl0ZXJz ICBpbnQgOj0gMDsKK0JFR0lOCisgICAgTE9PUAorICAgICAgICBJTlNFUlQgaW50byB0MShiKQor ICAgICAgICBzZWxlY3QgcmVwZWF0KGVuY29kZShzaGEyNTYoZzo6dGV4dDo6Ynl0ZWEpLCAnaGV4 JyksIChyYW5kb20oKSAqIDE1ICsgMSk6OmludCkKKyAgICAgICAgZnJvbSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTApIGc7CisKKyAgICAgICAgcmVtYWluIDo9IHdhbF9zZWdzaXplIC0gKHBnX2N1cnJl bnRfd2FsX2luc2VydF9sc24oKSAtICcwLzAnKSAlIHdhbF9zZWdzaXplOworICAgICAgICBJRiBy ZW1haW4gPCAyICogc2V0dGluZzo6aW50IGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSA9ICdi bG9ja19zaXplJyBUSEVOCisgICAgICAgICAgICBSQUlTRSBsb2cgJ2V4aXRpbmcgYWZ0ZXIgJSBp dGVyYXRpb25zLCAlIGJ5dGVzIHRvIGVuZCBvZiBXQUwgc2VnbWVudCcsIGl0ZXJzLCByZW1haW47 CisgICAgICAgICAgICBFWElUOworICAgICAgICBFTkQgSUY7CisgICAgICAgIGl0ZXJzIDo9IGl0 ZXJzICsgMTsKKyAgICBFTkQgTE9PUDsKK0VORAorJCQ7Cit9KTsKKworbXkgJGNvbnRyZWNvcmRf bHNuID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSdTRUxFQ1QgcGdfY3VycmVudF93 YWxfaW5zZXJ0X2xzbigpJyk7CisjIEdlbmVyYXRlIGNvbnRyZWNvcmQgcmVjb3JkCiskbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXF7U0VMRUNUIHBnX2xvZ2ljYWxfZW1pdF9tZXNzYWdl KHRydWUsICd0ZXN0IDAyNicsIHJlcGVhdCgneHl6eHonLCAxMjM0NTYpKX0KKyk7CisKIG15ICgk ZW5kX2xzbiwgJGVuZF93YWxmaWxlKSA9IHNwbGl0IC9cfC8sCiAgICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAlxe1NFTEVDVCBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCksIHBnX3dh bGZpbGVfbmFtZShwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCkpfQpAQCAtMTk4LDUxICsyMzgs MjMgQEAgY29tbWFuZF9saWtlKAogCV0sCiAJcXIvLi8sCiAJJ3J1bnMgd2l0aCBzdGFydCBhbmQg ZW5kIHNlZ21lbnQgc3BlY2lmaWVkJyk7Ci1jb21tYW5kX2ZhaWxzX2xpa2UoCi0JWyAncGdfd2Fs ZHVtcCcsICctLXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciBdLAotCXFyL2Vycm9yOiBubyBzdGFy dCBXQUwgbG9jYXRpb24gZ2l2ZW4vLAotCSdwYXRoIG9wdGlvbiByZXF1aXJlcyBzdGFydCBsb2Nh dGlvbicpOwogY29tbWFuZF9saWtlKAogCVsKLQkJJ3BnX3dhbGR1bXAnLAotCQknLS1wYXRoJyA9 PiAkbm9kZS0+ZGF0YV9kaXIsCi0JCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAotCQknLS1lbmQn ID0+ICRlbmRfbHNuLAotCV0sCi0JcXIvLi8sCi0JJ3J1bnMgd2l0aCBwYXRoIG9wdGlvbiBhbmQg c3RhcnQgYW5kIGVuZCBsb2NhdGlvbnMnKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlbCi0JCSdw Z193YWxkdW1wJywKLQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAotCQknLS1zdGFydCcg PT4gJHN0YXJ0X2xzbiwKLQldLAotCXFyL2Vycm9yOiBlcnJvciBpbiBXQUwgcmVjb3JkIGF0LywK LQknZmFsbGluZyBvZmYgdGhlIGVuZCBvZiB0aGUgV0FMIHJlc3VsdHMgaW4gYW4gZXJyb3InKTsK LQotY29tbWFuZF9saWtlKAotCVsKLQkJJ3BnX3dhbGR1bXAnLCAnLS1xdWlldCcsCi0JCSRub2Rl LT5kYXRhX2RpciAuICcvcGdfd2FsLycgLiAkc3RhcnRfd2FsZmlsZQorCQkncGdfd2FsZHVtcCcs ICctLXF1aWV0JywgJy0tcGF0aCcsCisJCSRub2RlLT5kYXRhX2RpciAuICcvcGdfd2FsLycsICRz dGFydF93YWxmaWxlCiAJXSwKIAlxci9eJC8sCiAJJ25vIG91dHB1dCB3aXRoIC0tcXVpZXQgb3B0 aW9uJyk7Ci1jb21tYW5kX2ZhaWxzX2xpa2UoCi0JWwotCQkncGdfd2FsZHVtcCcsICctLXF1aWV0 JywKLQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAotCQknLS1zdGFydCcgPT4gJHN0YXJ0 X2xzbgotCV0sCi0JcXIvZXJyb3I6IGVycm9yIGluIFdBTCByZWNvcmQgYXQvLAotCSdlcnJvcnMg YXJlIHNob3duIHdpdGggLS1xdWlldCcpOwotCiAKICMgVGVzdCBmb3I6IERpc3BsYXkgYSBtZXNz YWdlIHRoYXQgd2UncmUgc2tpcHBpbmcgZGF0YSBpZiBgZnJvbWAKICMgd2Fzbid0IGEgcG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgYSByZWNvcmQuCitzdWIgdGVzdF9wZ193YWxkdW1wX3NraXBfYnl0 ZXMKIHsKKwlteSAoJHBhdGgsICRzdGFydGxzbiwgJGVuZGxzbikgPSBAXzsKKwogCSMgQ29uc3Ry dWN0IGEgbmV3IExTTiB0aGF0IGlzIG9uZSBieXRlIHBhc3QgdGhlIG9yaWdpbmFsCiAJIyBzdGFy dF9sc24uCi0JbXkgKCRwYXJ0MSwgJHBhcnQyKSA9IHNwbGl0IHFyey99LCAkc3RhcnRfbHNuOwor CW15ICgkcGFydDEsICRwYXJ0MikgPSBzcGxpdCBxcnsvfSwgJHN0YXJ0bHNuOwogCW15ICRsc24y ID0gaGV4ICRwYXJ0MjsKIAkkbHNuMisrOwogCW15ICRuZXdfc3RhcnQgPSBzcHJpbnRmKCIlcy8l WCIsICRwYXJ0MSwgJGxzbjIpOwpAQCAtMjUyLDcgKzI2NCw4IEBAIGNvbW1hbmRfZmFpbHNfbGlr ZSgKIAlteSAkcmVzdWx0ID0gSVBDOjpSdW46OnJ1biBbCiAJCSdwZ193YWxkdW1wJywKIAkJJy0t c3RhcnQnID0+ICRuZXdfc3RhcnQsCi0JCSRub2RlLT5kYXRhX2RpciAuICcvcGdfd2FsLycgLiAk c3RhcnRfd2FsZmlsZQorCQknLS1lbmQnID0+ICRlbmRsc24sCisJCSctLXBhdGgnID0+ICRwYXRo LAogCSAgXSwKIAkgICc+JyA9PiBcJHN0ZG91dCwKIAkgICcyPicgPT4gXCRzdGRlcnI7CkBAIC0y NjYsMTUgKzI3OSwxNSBAQCBjb21tYW5kX2ZhaWxzX2xpa2UoCiBzdWIgdGVzdF9wZ193YWxkdW1w CiB7CiAJbG9jYWwgJFRlc3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6OkxldmVs ICsgMTsKLQlteSBAb3B0cyA9IEBfOworCW15ICgkcGF0aCwgJHN0YXJ0bHNuLCAkZW5kbHNuLCBA b3B0cykgPSBAXzsKIAogCW15ICgkc3Rkb3V0LCAkc3RkZXJyKTsKIAogCW15ICRyZXN1bHQgPSBJ UEM6OlJ1bjo6cnVuIFsKIAkJJ3BnX3dhbGR1bXAnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0 YV9kaXIsCi0JCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAotCQknLS1lbmQnID0+ICRlbmRfbHNu LAorCQknLS1zdGFydCcgPT4gJHN0YXJ0bHNuLAorCQknLS1lbmQnID0+ICRlbmRsc24sCisJCSct LXBhdGgnID0+ICRwYXRoLAogCQlAb3B0cwogCSAgXSwKIAkgICc+JyA9PiBcJHN0ZG91dCwKQEAg LTI4Niw0MCArMjk5LDE0NSBAQCBzdWIgdGVzdF9wZ193YWxkdW1wCiAJcmV0dXJuIEBsaW5lczsK IH0KIAotbXkgQGxpbmVzOworIyBDcmVhdGUgYSB0YXIgYXJjaGl2ZSwgc2h1ZmZsZSB0aGUgZmls ZSBvcmRlcgorc3ViIGdlbmVyYXRlX2FyY2hpdmUKK3sKKwlteSAoJGFyY2hpdmUsICRkaXJlY3Rv cnksICRjb21wcmVzc2lvbl9mbGFncykgPSBAXzsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1w OwotaXMoZ3JlcCghL15ybWdyOiBcdy8sIEBsaW5lcyksIDAsICdhbGwgb3V0cHV0IGxpbmVzIGFy ZSBybWdyIGxpbmVzJyk7CisJbXkgQGZpbGVzOworCW9wZW5kaXIgbXkgJGRoLCAkZGlyZWN0b3J5 IG9yIGRpZSAib3BlbmRpcjogJCEiOworCXdoaWxlIChteSAkZW50cnkgPSByZWFkZGlyICRkaCkg eworCQkjIFNraXAgJy4nIGFuZCAnLi4nCisJCW5leHQgaWYgJGVudHJ5IGVxICcuJyB8fCAkZW50 cnkgZXEgJy4uJzsKKwkJcHVzaCBAZmlsZXMsICRlbnRyeTsKKwl9CisJY2xvc2VkaXIgJGRoOwog Ci1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tbGltaXQnID0+IDYpOwotaXMoQGxpbmVzLCA2 LCAnbGltaXQgb3B0aW9uIG9ic2VydmVkJyk7CisJQGZpbGVzID0gc2h1ZmZsZSBAZmlsZXM7CiAK LUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1mdWxscGFnZScpOwotaXMoZ3JlcCghL15ybWdy Oi4qXGJGUFdcYi8sIEBsaW5lcyksIDAsICdhbGwgb3V0cHV0IGxpbmVzIGFyZSBGUFcnKTsKKwkj IG1vdmUgaW50byB0aGUgV0FMIGRpcmVjdG9yeSBiZWZvcmUgYXJjaGl2aW5nIGZpbGVzCisJbXkg JGN3ZCA9IGdldGN3ZDsKKwljaGRpcigkZGlyZWN0b3J5KSB8fCBkaWUgImNoZGlyOiAkISI7CisJ Y29tbWFuZF9vayhbJHRhciwgJGNvbXByZXNzaW9uX2ZsYWdzLCAkYXJjaGl2ZSwgQGZpbGVzXSk7 CisJY2hkaXIoJGN3ZCkgfHwgZGllICJjaGRpcjogJCEiOworfQogCi1AbGluZXMgPSB0ZXN0X3Bn X3dhbGR1bXAoJy0tc3RhdHMnKTsKLWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8s ICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOwotaXMoZ3JlcCgvXnJtZ3I6LywgQGxpbmVzKSwgMCwg J25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7CitteSAkdG1wX2RpciA9IFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOjp0ZW1wZGlyX3Nob3J0KCk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1z dGF0cz1yZWNvcmQnKTsKLWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJzdGF0 aXN0aWNzIG9uIHN0ZG91dCIpOwotaXMoZ3JlcCgvXnJtZ3I6LywgQGxpbmVzKSwgMCwgJ25vIHJt Z3IgbGluZXMgb3V0cHV0Jyk7CitteSBAc2NlbmFyaW9zID0gKAorCXsKKwkJJ3BhdGgnID0+ICRu b2RlLT5kYXRhX2RpciwKKwkJJ2lzX2FyY2hpdmUnID0+IDAsCisJCSdlbmFibGVkJyA9PiAxCisJ fSwKKwl7CisJCSdwYXRoJyA9PiAiJHRtcF9kaXIvcGdfd2FsLnRhciIsCisJCSdjb21wcmVzc2lv bl9tZXRob2QnID0+ICdub25lJywKKwkJJ2NvbXByZXNzaW9uX2ZsYWdzJyA9PiAnLWNmJywKKwkJ J2lzX2FyY2hpdmUnID0+IDEsCisJCSdlbmFibGVkJyA9PiAxCisJfSwKKwl7CisJCSdwYXRoJyA9 PiAiJHRtcF9kaXIvcGdfd2FsLnRhci5neiIsCisJCSdjb21wcmVzc2lvbl9tZXRob2QnID0+ICdn emlwJywKKwkJJ2NvbXByZXNzaW9uX2ZsYWdzJyA9PiAnLWN6ZicsCisJCSdpc19hcmNoaXZlJyA9 PiAxLAorCQknZW5hYmxlZCcgPT4gY2hlY2tfcGdfY29uZmlnKCIjZGVmaW5lIEhBVkVfTElCWiAx IikKKwl9KTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXJtZ3InID0+ICdCdHJlZScp OwotaXMoZ3JlcCghL15ybWdyOiBCdHJlZS8sIEBsaW5lcyksIDAsICdvbmx5IEJ0cmVlIGxpbmVz Jyk7Citmb3IgbXkgJHNjZW5hcmlvIChAc2NlbmFyaW9zKQoreworCW15ICRwYXRoID0gJHNjZW5h cmlvLT57J3BhdGgnfTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLWZvcmsnID0+ICdp bml0Jyk7Ci1pcyhncmVwKCEvZm9yayBpbml0LywgQGxpbmVzKSwgMCwgJ29ubHkgaW5pdCBmb3Jr IGxpbmVzJyk7CisJU0tJUDoKKwl7CisJCXNraXAgInRhciBjb21tYW5kIGlzIG5vdCBhdmFpbGFi bGUiLCA1NgorCQkgIGlmICFkZWZpbmVkICR0YXIgJiYgJHNjZW5hcmlvLT57J2lzX2FyY2hpdmUn fTsKKwkJc2tpcCAiJHNjZW5hcmlvLT57J2NvbXByZXNzaW9uX21ldGhvZCd9IGNvbXByZXNzaW9u IG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCIsIDU2CisJCSAgaWYgISRzY2VuYXJpby0+eydl bmFibGVkJ30gJiYgJHNjZW5hcmlvLT57J2lzX2FyY2hpdmUnfTsKIAotQGxpbmVzID0gdGVzdF9w Z193YWxkdW1wKAotCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19k Yl9vaWQvJHJlbF90MV9vaWQiKTsKLWlzKGdyZXAoIS9yZWwgJGRlZmF1bHRfdHNfb2lkXC8kcG9z dGdyZXNfZGJfb2lkXC8kcmVsX3QxX29pZC8sIEBsaW5lcyksCi0JMCwgJ29ubHkgbGluZXMgZm9y IHNlbGVjdGVkIHJlbGF0aW9uJyk7CisJCSAgIyBjcmVhdGUgcGdfd2FsIGFyY2hpdmUKKwkJICBp ZiAoJHNjZW5hcmlvLT57J2lzX2FyY2hpdmUnfSkKKwkJICB7CisJCQkgIGdlbmVyYXRlX2FyY2hp dmUoJHBhdGgsCisJCQkJICAkbm9kZS0+ZGF0YV9kaXIgLiAnL3BnX3dhbCcsCisJCQkJICAkc2Nl bmFyaW8tPnsnY29tcHJlc3Npb25fZmxhZ3MnfSk7CisJCSAgfQogCi1AbGluZXMgPSB0ZXN0X3Bn X3dhbGR1bXAoCi0JJy0tcmVsYXRpb24nID0+ICIkZGVmYXVsdF90c19vaWQvJHBvc3RncmVzX2Ri X29pZC8kcmVsX2kxYV9vaWQiLAotCSctLWJsb2NrJyA9PiAxKTsKLWlzKGdyZXAoIS9cYmJsayAx XGIvLCBAbGluZXMpLCAwLCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQgYmxvY2snKTsKKwkJY29t bWFuZF9mYWlsc19saWtlKAorCQkJWyAncGdfd2FsZHVtcCcsICctLXBhdGgnID0+ICRwYXRoIF0s CisJCQlxci9lcnJvcjogbm8gc3RhcnQgV0FMIGxvY2F0aW9uIGdpdmVuLywKKwkJCSdwYXRoIG9w dGlvbiByZXF1aXJlcyBzdGFydCBsb2NhdGlvbicpOworCQljb21tYW5kX2xpa2UoCisJCQlbCisJ CQkJJ3BnX3dhbGR1bXAnLAorCQkJCSctLXBhdGgnID0+ICRwYXRoLAorCQkJCSctLXN0YXJ0JyA9 PiAkc3RhcnRfbHNuLAorCQkJCSctLWVuZCcgPT4gJGVuZF9sc24sCisJCQldLAorCQkJcXIvLi8s CisJCQkncnVucyB3aXRoIHBhdGggb3B0aW9uIGFuZCBzdGFydCBhbmQgZW5kIGxvY2F0aW9ucycp OworCQljb21tYW5kX2ZhaWxzX2xpa2UoCisJCQlbCisJCQkJJ3BnX3dhbGR1bXAnLAorCQkJCSct LXBhdGgnID0+ICRwYXRoLAorCQkJCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAorCQkJXSwKKwkJ CXFyL2Vycm9yOiBlcnJvciBpbiBXQUwgcmVjb3JkIGF0LywKKwkJCSdmYWxsaW5nIG9mZiB0aGUg ZW5kIG9mIHRoZSBXQUwgcmVzdWx0cyBpbiBhbiBlcnJvcicpOwogCisJCWNvbW1hbmRfZmFpbHNf bGlrZSgKKwkJCVsKKwkJCQkncGdfd2FsZHVtcCcsICctLXF1aWV0JywKKwkJCQknLS1wYXRoJyA9 PiAkcGF0aCwKKwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbgorCQkJXSwKKwkJCXFyL2Vycm9y OiBlcnJvciBpbiBXQUwgcmVjb3JkIGF0LywKKwkJCSdlcnJvcnMgYXJlIHNob3duIHdpdGggLS1x dWlldCcpOworCisJCXRlc3RfcGdfd2FsZHVtcF9za2lwX2J5dGVzKCRwYXRoLCAkc3RhcnRfbHNu LCAkZW5kX2xzbik7CisKKwkJbXkgQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3Rh cnRfbHNuLCAkZW5kX2xzbik7CisJCWlzKGdyZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAn YWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycpOworCisJCUBsaW5lcyA9IHRlc3RfcGdf d2FsZHVtcCgkcGF0aCwgJGNvbnRyZWNvcmRfbHNuLCAkZW5kX2xzbik7CisJCWlzKGdyZXAoIS9e cm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycp OworCisJCXRlc3RfcGdfd2FsZHVtcF9za2lwX2J5dGVzKCRwYXRoLCAkY29udHJlY29yZF9sc24s ICRlbmRfbHNuKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9s c24sICRlbmRfbHNuLCAnLS1saW1pdCcgPT4gNik7CisJCWlzKEBsaW5lcywgNiwgJ2xpbWl0IG9w dGlvbiBvYnNlcnZlZCcpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0 YXJ0X2xzbiwgJGVuZF9sc24sICctLWZ1bGxwYWdlJyk7CisJCWlzKGdyZXAoIS9ecm1ncjouKlxi RlBXXGIvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgRlBXJyk7CisKKwkJQGxp bmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0tc3Rh dHMnKTsKKwkJbGlrZSgkbGluZXNbMF0sIHFyL1dBTCBzdGF0aXN0aWNzLywgInN0YXRpc3RpY3Mg b24gc3Rkb3V0Iik7CisJCWlzKGdyZXAoL15ybWdyOi8sIEBsaW5lcyksIDAsICdubyBybWdyIGxp bmVzIG91dHB1dCcpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0YXJ0 X2xzbiwgJGVuZF9sc24sICctLXN0YXRzPXJlY29yZCcpOworCQlsaWtlKCRsaW5lc1swXSwgcXIv V0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKKwkJaXMoZ3JlcCgvXnJt Z3I6LywgQGxpbmVzKSwgMCwgJ25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7CisKKwkJQGxpbmVzID0g dGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0tcm1ncicgPT4g J0J0cmVlJyk7CisJCWlzKGdyZXAoIS9ecm1ncjogQnRyZWUvLCBAbGluZXMpLCAwLCAnb25seSBC dHJlZSBsaW5lcycpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0YXJ0 X2xzbiwgJGVuZF9sc24sICctLWZvcmsnID0+ICdpbml0Jyk7CisJCWlzKGdyZXAoIS9mb3JrIGlu aXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZvcmsgbGluZXMnKTsKKworCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLAorCQkJJy0tcmVsYXRp b24nID0+ICIkZGVmYXVsdF90c19vaWQvJHBvc3RncmVzX2RiX29pZC8kcmVsX3QxX29pZCIpOwor CQlpcyhncmVwKCEvcmVsICRkZWZhdWx0X3RzX29pZFwvJHBvc3RncmVzX2RiX29pZFwvJHJlbF90 MV9vaWQvLCBAbGluZXMpLAorCQkJMCwgJ29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIHJlbGF0aW9u Jyk7CisKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5k X2xzbiwKKwkJCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9v aWQvJHJlbF9pMWFfb2lkIiwKKwkJCSctLWJsb2NrJyA9PiAxKTsKKwkJaXMoZ3JlcCghL1xiYmxr IDFcYi8sIEBsaW5lcyksIDAsICdvbmx5IGxpbmVzIGZvciBzZWxlY3RlZCBibG9jaycpOworCisJ CSMgQ2xlYW51cC4KKwkJdW5saW5rICRwYXRoIGlmICRzY2VuYXJpby0+eydpc19hcmNoaXZlJ307 CisJfQorfQogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg YTRhMmVkMDc4MTYuLjNmNDI4YTY0YjQ3IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAt MTQ3LDYgKzE0Nyw5IEBAIEFyY2hpdmVPcHRzCiBBcmNoaXZlU2h1dGRvd25DQgogQXJjaGl2ZVN0 YXJ0dXBDQgogQXJjaGl2ZVN0cmVhbVN0YXRlCitBcmNoaXZlZFdBTEZpbGUKK0FyY2hpdmVkV0FM X2hhc2gKK0FyY2hpdmVkV0FMX2l0ZXJhdG9yCiBBcmNoaXZlck91dHB1dAogQXJjaGl2ZXJTdGFn ZQogQXJyYXlBbmFseXplRXh0cmFEYXRhCkBAIC0zNTQ0LDYgKzM1NDcsNyBAQCBhc3RyZWFtZXJf cmVjb3ZlcnlfaW5qZWN0b3IKIGFzdHJlYW1lcl90YXJfYXJjaGl2ZXIKIGFzdHJlYW1lcl90YXJf cGFyc2VyCiBhc3RyZWFtZXJfdmVyaWZ5Cithc3RyZWFtZXJfd2FsZHVtcAogYXN0cmVhbWVyX3pz dGRfZnJhbWUKIGF1dGhfcGFzc3dvcmRfaG9va190eXAKIGF1dG92YWNfdGFibGUKLS0gCjIuNDcu MQoK --000000000000194ef4064d74a56f Content-Type: application/octet-stream; name="v22-0004-pg_verifybackup-Enable-WAL-parsing-for-tar-forma.patch" Content-Disposition: attachment; filename="v22-0004-pg_verifybackup-Enable-WAL-parsing-for-tar-forma.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmyxcf943 RnJvbSBmNzU4YzhhZTZlOTcxNDBhOWVhMzI5ZjRlN2Y2ZWM4YmI2MjcxYWZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4K RGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAxNTo0Mzo1MyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjIy 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= --000000000000194ef4064d74a56f--