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 1w5WwT-003LK6-2T for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 22:43:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5WwS-00HDCW-0i for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 22:43:12 +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 1w5WwR-00HDCO-2Y for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 22:43:12 +0000 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5WwP-000000019Nv-01Zf for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 22:43:11 +0000 Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-5a159c1e65aso419135e87.0 for ; Wed, 25 Mar 2026 15:43:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774478589; cv=none; d=google.com; s=arc-20240605; b=dxVPfI6mGVrHGz1rDvFuBUp15f1UsCz9Hlzjbps2bWLngBB76siyDFmmiGHPuxPWzl aMT5Jqyt0lokakEUWocGBuh1CYYisihWPKNoE5qvTwe5Gxn9KeFpIwjld6UEhy/Jhows oPObeHbRGmwJm6OWCD7qq58aH8f78eGG9G0X0HkCrOpMSA7o41b+N0yUkh9nBea4dyyr 7wM5uDyjxXtG1xcuPsE/CtpUxIwF3ZOne/SbggLgoqgn326srG2iHOS1CuxH8cuOFoWS wTbZzjzsxA3+0mhEmn7Y/4Mp8CcCXUAleLITzup5g6GMAHtpDS2lz7egWO9/oS6SpuIv ejew== 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=G+dJaQdBgt8KRg5Q+8pv1Eu4WAv+Y10ZL6NRIaKgfCs=; fh=g0kvz7dlqld/a6hoSUypjtsAtLJGFuudH4WLohsh3gY=; b=SEYuCjuQFY7tjYhhgH5Fz1xMnAOMU5nOm/nhh1wsZchRHhDEQEn2A7h9QfD2sIvLkK l59kVsieqfQLhp4ImFpE7Rd5Y2M/Q6vf1M98DhXcZr0ATZ3WrbSt1FAWnKyM09/S/Bcy uUdL+p4vaLFx3UeoHLpKoaWBdCLa+gKXqb06cfTFt6KAYThbqyi8W5bUEQH+eZxTf89r RvV4pzoJvKiYv/QJHM1/vDMJi/7dnw0JOUXMtxkF6Y2+V91c+jqqA3qrWW1FGsJTziMK CFp8vDIA7/yiXSsjnhA56bEYtBuV9ZbW8q7dY3HE1wjOYQDQ/yaRGDn2ng0iV/0NZa0S rb/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=20251104; t=1774478589; x=1775083389; 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=G+dJaQdBgt8KRg5Q+8pv1Eu4WAv+Y10ZL6NRIaKgfCs=; b=JBlT7H8wq3BMIBQYrezB0VwljmLjY/qbv4+5+DJKCXZcHb2i7+FQBohuqH0kodXLBR wPBz2jPFrcWIh22Y4qfgcXQP8K+s+sKqr8NbQ75QGAuOb/OSnS9QE3uY4PPH7VuNU/bN 31uHdvbbXjopMlWHrAjDmtKbezspzT7k2JGHMCBZyK8DcNgQDqNs6iq70AYCYvWd0zsJ eHW1p67akvtSNn2Zw7DDXrkKfNL2qIpulLi4Yv42qcTgqZHONHq/HVOo/aaOFew3S5ga onYxlU2xflDn8mCOTd98e9ipF4BVGMEFdq/mdlBrQiNmP1OOFBOJITuttSpzSjaYwX1W dWiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774478589; x=1775083389; 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=G+dJaQdBgt8KRg5Q+8pv1Eu4WAv+Y10ZL6NRIaKgfCs=; b=C4wXw+elqnTbjcq2mZmld6huxMMhIXWucSZgKXlGfPjXvHfYqqBa4C3Sp39pVkgJ0K QLJQdRKDpnq12LpWvKwDz7gmXRoRkDosTJnILcdiTuS1734SF0+8MdSO2Fx2HAggjZU5 15Gj5FnxVEVA/B8rv+JcIUAdgbJZel6lf+6VSS//hmKhB/k9aPSuwYURGyKS0ztlzYjM XQLHcVdoNayCp97eu4DriEGoAEohaocjbWjtn1yKGKFR+Pn6SGAxkZVDjeGgNT4Z9lul 5RS+M51MZXum4HS+Mkc+WtIBRmaCl/13NCtOnu7+i647+TTHf/z7ZmB3sYt239XxWHA/ SOGw== X-Forwarded-Encrypted: i=1; AJvYcCW06TjWwzrg8jL9LfUobRKEX1oanfmaz4g/Gjyr+6Z3KoHtHBhIngUazqy8rdrQDmMH3pH2UMKqc0YyVOke@lists.postgresql.org X-Gm-Message-State: AOJu0YzENWkOgqgebUxBooSj1IeFgb/O+7ecztg0bjeESMXGnOoWUzL8 3co9kbF679XCh6cuvj7sr1ouLGBbkZbfvDg1bAC+LPrEF4e15LiqmlfU5iO0zEKaayBhpgM976V ejV8XoGpxcY9BW0jWwcOkPfNmxtrHQe8= X-Gm-Gg: ATEYQzz3LvRMDS93EayHEddo8rP1qQrLPjBXkKu+7GcA/h8bc3YIxVfndlnlv1Vjzoy SERrXUPnJKByoIunu/HuDg0f8dLLGacSIGSeuyv+AxxV3XRqWL1tfdxdTBy9YmSWQ6MrUa6lTvL ay20+6aj4P93dKSAB4yPmZcvTYXhY0PfvrmxYveNLyrkEmtshxXWCyG3U+iuki+RL16ayvYlvH9 UJYvWMeQ1qsysLxKKF/fjUjaDyYWjruF+NcOWcYlQ1hsF5oXd1GvNwc0gKRvPuOyQQltUR7Aln9 NM8mqPLL/b3LvK1BNzw= X-Received: by 2002:a05:6512:3053:b0:5a0:f22a:9ae1 with SMTP id 2adb3069b0e04-5a29b98c6e6mr1714141e87.20.1774478588221; Wed, 25 Mar 2026 15:43:08 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Masahiko Sawada Date: Wed, 25 Mar 2026 15:42:30 -0700 X-Gm-Features: AQROBzCNxV8IE3dIIbAJhOVX42ktt22b5BF6gVgxuyJ96-iVJW3mYDuj3_n-EdE Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Daniil Davydov <3danissimo@gmail.com> Cc: Sami Imseih , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000e9b29e064de0fd78" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e9b29e064de0fd78 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 25, 2026 at 12:45=E2=80=AFAM Daniil Davydov <3danissimo@gmail.c= om> wrote: > > Hi, > > > > Yeah, currently user can misconfigure max_parallel_workers, so (for e= xample) > > > multiple VACUUM PARALLEL operations running at the same time will fac= e with > > > a shortage of parallel workers. But I guess that every system has som= e sane > > > limit for this parameter's value. If we want to ensure that all a/v l= eaders > > > are guaranteed to launch as many parallel workers as required, we mig= ht need > > > to increase the max_parallel_workers too much (and cross the sane lim= it). > > > IMHO it may be unacceptable for many systems in production, because i= t will > > > undermine the stability. > > > > I understand the concern that if max_parallel_workers (and/or > > max_worker_processes) value are not high enough to ensure each > > autovacuum workers can launch autovacuum_max_parallel_workers, an > > autovacuum on the very large table might not be able to launch the > > full workers in case where some parallel workers are already being > > used by others (e.g., another autovacuum on a different > > slightly-smaller table etc.). But I'm not sure that the opt-out style > > can handle these cases. Even if there are two huge tables and users > > set parallel_vacuum_workers to both tables, there is no guarantee that > > autovacuums on these tables can use the full workers, as long as > > max_parallel_workers value is not enough. > > > > I guess you mean the "opt-in" style here? Oops, yes. I wanted it to mean "opt-in" style. > > Sure, even opt-in style doesn't give us an unbreakable guarantee that hug= e > tables will be processed with the desired number of parallel workers. But= IMHO > "opt-in" greatly increases the probability of this. Cost-based vacuum delay parameters shared between the autovacuum leader and its parallel workers. > Searching for arguments in > favor of opt-in style, I asked for help from another person who has been > managing the setup of highload systems for decades. He promised to share = his > opinion next week. Given that we have one and half weeks before the feature freeze, I think it's better to complete the project first before waiting for his/her comments next week. Even if we finish this feature with the opt-out style, we can hear more opinions on it and change the default behavior as the change would be privial. What do you think? I've squashed all patches except for the documentation patch as I assume you're working on it. The attached fixup patch contains several changes: using opt-out style, comment improvements, and fixing typos etc. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com --000000000000e9b29e064de0fd78 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0002-fixup-several-changes.patch" Content-Disposition: attachment; filename="v31-0002-fixup-several-changes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn6mo38w0 RnJvbSA5OGU2MzgwN2Q5ZGJiZjJkNjE1M2NlNGI4MTM5YTQ5Zjg0MzM5YTA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyNSBNYXIgMjAyNiAxNDo0OToxMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg djMxIDIvMl0gZml4dXA6IHNldmVyYWwgY2hhbmdlcy4KCi0gdXNlIG9wdC1vdXQgc3R5bGUuCi0g YWRqdXN0IGRlZmF1bHQgdmFsdWVzLgotIGltcHJvdmUgY29tbWVudHMuCi0gZml4ZXMgdHlwb3MK ZXRjLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAg NSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgNTIg KysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMg ICAgICAgICAgIHwgMzYgKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9i YWxzLmMgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMg ICAgICAgICAgICAgICAgICB8ICA3ICstLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFy YW1ldGVycy5kYXQgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSB8ICAyICstCiAuLi4vdC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCAg ICAgICAgICAgICAgfCAyMiArKysrLS0tLQogOSBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25z KCspLCA0OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL3JlbG9wdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5j CmluZGV4IGNlNDFiMDE1YjMyLi5jZWU3MDU1MDBmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi9yZWxvcHRpb25zLmMKQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgcmVsb3B0X2ludCBpbnRS ZWxPcHRzW10gPQogCQkJUkVMT1BUX0tJTkRfSEVBUCwKIAkJCVNoYXJlVXBkYXRlRXhjbHVzaXZl TG9jawogCQl9LAotCQkwLCAtMSwgMTAyNAorCQktMSwgLTEsIDEwMjQKIAl9LAogCXsKIAkJewpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDhjN2RlNjU3OTc2Li45ZmQ0ZjZm ZWJiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtODY0LDggKzg2NCwx MSBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFy YW1zLAogCWRlYWRfaXRlbXNfYWxsb2ModmFjcmVsLCBwYXJhbXMubndvcmtlcnMpOwogCiAjaWZk ZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwogCS8qCi0JICogVHJpZ2dlciBpbmplY3Rpb24gcG9p bnQsIGlmIHBhcmFsbGVsIGF1dG92YWN1dW0gaXMgYWJvdXQgdG8gYmUgc3RhcnRlZC4KKwkgKiBV c2VkIGJ5IHRlc3RzIHRvIHBhdXNlIGJlZm9yZSBwYXJhbGxlbCB2YWN1dW0gaXMgbGF1bmNoZWQs IGFsbG93aW5nCisJICogdGVzdCBjb2RlIHRvIG1vZGlmeSBjb25maWd1cmF0aW9uIHRoYXQgdGhl IGxlYWRlciB0aGVuIHByb3BhZ2F0ZXMgdG8KKwkgKiB3b3JrZXJzLgogCSAqLwogCWlmIChBbUF1 dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgUGFyYWxsZWxWYWN1dW1Jc0FjdGl2ZSh2YWNyZWwp KQogCQlJTkpFQ1RJT05fUE9JTlQoImF1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtIiwg TlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA2MmI2ZjUwYjUz OC4uMTM1NDRkZTViOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAt NjksMTAgKzY5LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBWU2hhcmVkQ29zdFBhcmFtcwogewogCS8q CiAJICogVGhlIGdlbmVyYXRpb24gY291bnRlciBpcyBpbmNyZW1lbnRlZCBieSB0aGUgbGVhZGVy IHByb2Nlc3MgZWFjaCB0aW1lCi0JICogaXQgdXBkYXRlcyB0aGUgc2hhcmVkIGNvc3QtYmFzZWQg dmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMuIFBhcmFsZWxsCisJICogaXQgdXBkYXRlcyB0aGUgc2hh cmVkIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRlcnMuIFBhcmFsbGVsCiAJICogdmFj dXVtIHdvcmtlcnMgY29tcGFyZXMgaXQgd2l0aCB0aGVpciBsb2NhbCBnZW5lcmF0aW9uLAogCSAq IHNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCwgdG8gZGV0ZWN0IHdoZXRoZXIgdGhleSBu ZWVkIHRvIHJlZnJlc2gKLQkgKiB0aGVpciBsb2NhbCBwYXJhbWV0ZXJzLgorCSAqIHRoZWlyIGxv Y2FsIHBhcmFtZXRlcnMuIFRoZSBnZW5lcmF0aW9uIHN0YXJ0cyBmcm9tIDEgc28gdGhhdCBhIGZy ZXNobHkKKwkgKiBzdGFydGVkIHdvcmtlciAod2hvc2UgbG9jYWwgY29weSBpcyAwKSB3aWxsIGFs d2F5cyBsb2FkIHRoZSBpbml0aWFsCisJICogcGFyYW1ldGVycyBvbiBpdHMgZmlyc3QgY2hlY2su CiAJICovCiAJcGdfYXRvbWljX3VpbnQzMiBnZW5lcmF0aW9uOwogCkBAIC0xNTgsMTMgKzE2MCwx MyBAQCB0eXBlZGVmIHN0cnVjdCBQVlNoYXJlZAogCiAJLyoKIAkgKiBJZiAndHJ1ZScgdGhlbiB3 ZSBhcmUgcnVubmluZyBwYXJhbGxlbCBhdXRvdmFjdXVtLiBPdGhlcndpc2UsIHdlIGFyZQotCSAq IHJ1bm5pbmcgcGFyYWxsZWwgbWFpbnRlbmVuY2UgVkFDVVVNLgorCSAqIHJ1bm5pbmcgcGFyYWxs ZWwgbWFpbnRlbmFuY2UgVkFDVVVNLgogCSAqLwogCWJvb2wJCWlzX2F1dG92YWN1dW07CiAKIAkv KgotCSAqIFN0cnVjdCBmb3Igc3luY2luZyBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0 ZXJzIGJldHdlZW4KLQkgKiBzdXBwb3J0aXZlIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyB3 aXRoIGxlYWRlciB3b3JrZXIuCisJICogQ29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1ldGVy cyBzaGFyZWQgYmV0d2VlbiB0aGUgYXV0b3ZhY3V1bSBsZWFkZXIKKwkgKiBhbmQgaXRzIHBhcmFs bGVsIHdvcmtlcnMuCiAJICovCiAJUFZTaGFyZWRDb3N0UGFyYW1zIGNvc3RfcGFyYW1zOwogfSBQ VlNoYXJlZDsKQEAgLTI3MSw3ICsyNzMsMTMgQEAgc3RydWN0IFBhcmFsbGVsVmFjdXVtU3RhdGUK IAogc3RhdGljIFBWU2hhcmVkQ29zdFBhcmFtcyAqcHZfc2hhcmVkX2Nvc3RfcGFyYW1zID0gTlVM TDsKIAotLyogU2VlIGNvbW1lbnRzIGluIHRoZSBQVlNoYXJlZENvc3RQYXJhbXMgZm9yIHRoZSBk ZXRhaWxzICovCisvKgorICogV29ya2VyLWxvY2FsIGNvcHkgb2YgdGhlIGxhc3QgY29zdC1wYXJh bWV0ZXIgZ2VuZXJhdGlvbiB0aGlzIHdvcmtlciBoYXMKKyAqIGFwcGxpZWQuICBJbml0aWFsaXpl ZCB0byAwOyBzaW5jZSB0aGUgbGVhZGVyIGluaXRpYWxpemVzIHRoZSBzaGFyZWQKKyAqIGdlbmVy YXRpb24gY291bnRlciB0byAxLCB0aGUgZmlyc3QgY2FsbCB0bworICogcGFyYWxsZWxfdmFjdXVt X3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKCkgd2lsbCBhbHdheXMgZGV0ZWN0IGEKKyAqIG1p c21hdGNoIGFuZCByZWFkIHRoZSBpbml0aWFsIHBhcmFtZXRlcnMgZnJvbSBzaGFyZWQgbWVtb3J5 LgorICovCiBzdGF0aWMgdWludDMyIHNoYXJlZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA9IDA7 CiAKIHN0YXRpYyBpbnQJcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVfd29ya2VycyhSZWxhdGlvbiAq aW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwKQEAgLTQ1NSw3ICs0NjMsNyBA QCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBp bnQgbmluZGV4ZXMsCiAJaWYgKHNoYXJlZC0+aXNfYXV0b3ZhY3V1bSkKIAl7CiAJCXBhcmFsbGVs X3ZhY3V1bV9zZXRfY29zdF9wYXJhbWV0ZXJzKCZzaGFyZWQtPmNvc3RfcGFyYW1zKTsKLQkJcGdf YXRvbWljX2luaXRfdTMyKCZzaGFyZWQtPmNvc3RfcGFyYW1zLmdlbmVyYXRpb24sIDApOworCQlw Z19hdG9taWNfaW5pdF91MzIoJnNoYXJlZC0+Y29zdF9wYXJhbXMuZ2VuZXJhdGlvbiwgMSk7CiAJ CVNwaW5Mb2NrSW5pdCgmc2hhcmVkLT5jb3N0X3BhcmFtcy5tdXRleCk7CiAKIAkJcHZfc2hhcmVk X2Nvc3RfcGFyYW1zID0gJihzaGFyZWQtPmNvc3RfcGFyYW1zKTsKQEAgLTYyMyw3ICs2MzEsNyBA QCBwYXJhbGxlbF92YWN1dW1fc2V0X2Nvc3RfcGFyYW1ldGVycyhQVlNoYXJlZENvc3RQYXJhbXMg KnBhcmFtcykKICAqIFVwZGF0ZXMgdGhlIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRl cnMgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0KICAqIHdvcmtlcnMuCiAgKgotICogRm9yIG5vbi1h dXRvdmFjdXVtIHBhcmFsbGVsIHdvcmtlciB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBubyBlZmZl Y3QuCisgKiBGb3Igbm9uLWF1dG92YWN1dW0gcGFyYWxsZWwgd29ya2VycywgdGhpcyBmdW5jdGlv biB3aWxsIGhhdmUgbm8gZWZmZWN0LgogICovCiB2b2lkCiBwYXJhbGxlbF92YWN1dW1fdXBkYXRl X3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKQEAgLTYzMiw3ICs2NDAsNyBAQCBwYXJhbGxlbF92 YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKIAogCUFzc2VydChJc1BhcmFs bGVsV29ya2VyKCkpOwogCi0JLyogUXVpY2sgcmV0dXJuIGlmIHRoZSB3b2tyZXIgaXMgbm90IHJ1 bm5pbmcgZm9yIHRoZSBhdXRvdmFjdXVtICovCisJLyogUXVpY2sgcmV0dXJuIGlmIHRoZSB3b3Jr ZXIgaXMgbm90IHJ1bm5pbmcgZm9yIHRoZSBhdXRvdmFjdXVtICovCiAJaWYgKHB2X3NoYXJlZF9j b3N0X3BhcmFtcyA9PSBOVUxMKQogCQlyZXR1cm47CiAKQEAgLTY4MSw3ICs2ODksNyBAQCBwYXJh bGxlbF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKIAkJcmV0dXJu OwogCiAJLyoKLQkgKiBDaGVjayBpZiBhbnkgZGVsYXkgcGFyYW1ldGVycyBoYXMgY2hhbmdlZC4g V2UgY2FuIHJlYWQgdGhlbSB3aXRob3V0CisJICogQ2hlY2sgaWYgYW55IGRlbGF5IHBhcmFtZXRl cnMgaGF2ZSBjaGFuZ2VkLiBXZSBjYW4gcmVhZCB0aGVtIHdpdGhvdXQKIAkgKiBsb2NrcyBhcyBv bmx5IHRoZSBsZWFkZXIgY2FuIG1vZGlmeSB0aGVtLgogCSAqLwogCWlmICh2YWN1dW1fY29zdF9k ZWxheSA9PSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfZGVsYXkgJiYKQEAgLTkwNSw5ICs5 MTMsMTAgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW4KIAl9CiAKICNpZmRlZiBVU0VfSU5KRUNU SU9OX1BPSU5UUworCiAJLyoKLQkgKiBUaGlzIGluamVjdGlvbiBwb2ludCBpcyB1c2VkIHRvIHdh aXQgdW50aWwgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzCi0JICogZmluaXNoZXMgdGhlaXIg cGFydCBvZiBpbmRleCBwcm9jZXNzaW5nLgorCSAqIFVzZWQgYnkgdGVzdHMgdG8gcGF1c2UgYWZ0 ZXIgd29ya2VycyBhcmUgbGF1bmNoZWQgYnV0IGJlZm9yZSBpbmRleAorCSAqIHZhY3V1bWluZyBi ZWdpbnMuCiAJICovCiAJaWYgKG53b3JrZXJzID4gMCkKIAkJSU5KRUNUSU9OX1BPSU5UKCJhdXRv dmFjdXVtLWxlYWRlci1iZWZvcmUtaW5kZXhlcy1wcm9jZXNzaW5nIiwgTlVMTCk7CkBAIC0xMjQ3 LDE1ICsxMjU2LDI2IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAkJCQkJCQkJc2hhcmVkLT5kZWFkX2l0ZW1zX2hhbmRsZSk7CiAKIAkvKiBT ZXQgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgKi8KLQlWYWN1dW1VcGRhdGVDb3N0cygpOworCWlm IChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCisJeworCQkvKgorCQkgKiBQYXJhbGxlbCBhdXRvdmFj dXVtIHdvcmtlcnMgaW5pdGlhbGl6ZSBjb3N0LWJhc2VkIGRlbGF5IHBhcmFtZXRlcnMKKwkJICog ZnJvbSB0aGUgbGVhZGVyJ3Mgc2hhcmVkIHN0YXRlIHJhdGhlciB0aGFuIEdVQyBkZWZhdWx0cywg YmVjYXVzZQorCQkgKiB0aGUgbGVhZGVyIG1heSBoYXZlIGFwcGxpZWQgcGVyLXRhYmxlIG9yIGF1 dG92YWN1dW0tc3BlY2lmaWMKKwkJICogb3ZlcnJpZGVzLiAgcHZfc2hhcmVkX2Nvc3RfcGFyYW1z IG11c3QgYmUgc2V0IGJlZm9yZSBjYWxsaW5nCisJCSAqIHBhcmFsbGVsX3ZhY3V1bV91cGRhdGVf c2hhcmVkX2RlbGF5X3BhcmFtcygpLgorCQkgKi8KKwkJcHZfc2hhcmVkX2Nvc3RfcGFyYW1zID0g JihzaGFyZWQtPmNvc3RfcGFyYW1zKTsKKwkJcGFyYWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRf ZGVsYXlfcGFyYW1zKCk7CisJfQorCWVsc2UKKwkJVmFjdXVtVXBkYXRlQ29zdHMoKTsKKwogCVZh Y3V1bUNvc3RCYWxhbmNlID0gMDsKIAlWYWN1dW1Db3N0QmFsYW5jZUxvY2FsID0gMDsKIAlWYWN1 dW1TaGFyZWRDb3N0QmFsYW5jZSA9ICYoc2hhcmVkLT5jb3N0X2JhbGFuY2UpOwogCVZhY3V1bUFj dGl2ZU5Xb3JrZXJzID0gJihzaGFyZWQtPmFjdGl2ZV9ud29ya2Vycyk7CiAKLQlpZiAoc2hhcmVk LT5pc19hdXRvdmFjdXVtKQotCQlwdl9zaGFyZWRfY29zdF9wYXJhbXMgPSAmKHNoYXJlZC0+Y29z dF9wYXJhbXMpOwotCiAJLyogU2V0IHBhcmFsbGVsIHZhY3V1bSBzdGF0ZSAqLwogCXB2cy5pbmRy ZWxzID0gaW5kcmVsczsKIAlwdnMubmluZGV4ZXMgPSBuaW5kZXhlczsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmMKaW5kZXggNTYyNTE0ZTJlY2UuLmNlODkzZGIxYWI1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMjc5Nyw3ICsyNzk3LDYgQEAgdGFibGVfcmVjaGVj a19hdXRvdmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQlpbnQJCQltdWx0 aXhhY3RfZnJlZXplX3RhYmxlX2FnZTsKIAkJaW50CQkJbG9nX3ZhY3V1bV9taW5fZHVyYXRpb247 CiAJCWludAkJCWxvZ19hbmFseXplX21pbl9kdXJhdGlvbjsKLQkJaW50CQkJbnBhcmFsbGVsX3dv cmtlcnMgPSAtMTsgLyogZGlzYWJsZWQgYnkgZGVmYXVsdCAqLwogCiAJCS8qCiAJCSAqIENhbGN1 bGF0ZSB0aGUgdmFjdXVtIGNvc3QgcGFyYW1ldGVycyBhbmQgdGhlIGZyZWV6ZSBhZ2VzLiAgSWYg dGhlcmUKQEAgLTI4NTgsMTkgKzI4NTcsNiBAQCB0YWJsZV9yZWNoZWNrX2F1dG92YWMoT2lkIHJl bGlkLCBIVEFCICp0YWJsZV90b2FzdF9tYXAsCiAJCXRhYi0+YXRfcGFyYW1zLmluZGV4X2NsZWFu dXAgPSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKIAkJdGFiLT5hdF9wYXJhbXMudHJ1bmNhdGUg PSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKIAotCQkvKiBEZWNpZGUgd2hldGhlciB3ZSBuZWVk IHRvIHByb2Nlc3MgaW5kZXhlcyBvZiB0YWJsZSBpbiBwYXJhbGxlbC4gKi8KLQkJaWYgKGF2b3B0 cykKLQkJewotCQkJaWYgKGF2b3B0cy0+YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID4gMCkK LQkJCQlucGFyYWxsZWxfd29ya2VycyA9IGF2b3B0cy0+YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3Jr ZXJzOwotCQkJZWxzZSBpZiAoYXZvcHRzLT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPT0g LTEpCi0JCQl7Ci0JCQkJbnBhcmFsbGVsX3dvcmtlcnMgPSBhdXRvdmFjdXVtX21heF9wYXJhbGxl bF93b3JrZXJzID4gMAotCQkJCQk/IGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMKLQkJ CQkJOiAtMTsgLyogZGlzYWJsZSBwYXJhbGxlbGlzbSBpZiBwYXJhbWV0ZXIncyB2YWx1ZSBpcyAw ICovCi0JCQl9Ci0JCX0KLQogCQl0YWItPmF0X3BhcmFtcy5mcmVlemVfbWluX2FnZSA9IGZyZWV6 ZV9taW5fYWdlOwogCQl0YWItPmF0X3BhcmFtcy5mcmVlemVfdGFibGVfYWdlID0gZnJlZXplX3Rh YmxlX2FnZTsKIAkJdGFiLT5hdF9wYXJhbXMubXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlID0gbXVs dGl4YWN0X2ZyZWV6ZV9taW5fYWdlOwpAQCAtMjg3OSw3ICsyODY1LDI3IEBAIHRhYmxlX3JlY2hl Y2tfYXV0b3ZhYyhPaWQgcmVsaWQsIEhUQUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJdGFiLT5hdF9w YXJhbXMubG9nX3ZhY3V1bV9taW5fZHVyYXRpb24gPSBsb2dfdmFjdXVtX21pbl9kdXJhdGlvbjsK IAkJdGFiLT5hdF9wYXJhbXMubG9nX2FuYWx5emVfbWluX2R1cmF0aW9uID0gbG9nX2FuYWx5emVf bWluX2R1cmF0aW9uOwogCQl0YWItPmF0X3BhcmFtcy50b2FzdF9wYXJlbnQgPSBJbnZhbGlkT2lk OwotCQl0YWItPmF0X3BhcmFtcy5ud29ya2VycyA9IG5wYXJhbGxlbF93b3JrZXJzOworCisJCS8q IERldGVybWluZSB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzIHRvIHVzZSAq LworCQl0YWItPmF0X3BhcmFtcy5ud29ya2VycyA9IDA7CisJCWlmIChhdm9wdHMpCisJCXsKKwkJ CWlmIChhdm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyA9PSAwKQorCQkJeworCQkJ CS8qCisJCQkJICogRGlzYWJsZSBwYXJhbGxlbCB2YWN1dW0sIGlmIHRoZSByZWxvcHRpb24gc2V0 cyB0aGUgcGFyYWxsZWwKKwkJCQkgKiBkZWdyZWUgYXMgemVyby4KKwkJCQkgKi8KKwkJCQl0YWIt PmF0X3BhcmFtcy5ud29ya2VycyA9IC0xOworCQkJfQorCQkJZWxzZSBpZiAoYXZvcHRzLT5hdXRv dmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPiAwKQorCQkJCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJz ID0gYXZvcHRzLT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnM7CisKKwkJCS8qCisJCQkgKiBh dXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPT0gLTEgZmFsbHMgdGhyb3VnaCwga2VlcAorCQkJ ICogbndvcmtlcnM9MAorCQkJICovCisJCX0KIAogCQkvKgogCQkgKiBMYXRlciwgaW4gdmFjdXVt X3JlbCgpLCB3ZSBjaGVjayByZWxvcHRpb25zIGZvciBhbnkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxz LmMKaW5kZXggODI2NWE4MmI2MzkuLjI0ZGRiMjc2ZjBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2Jh bHMuYwpAQCAtMTQzLDcgKzE0Myw3IEBAIGludAkJCU5CdWZmZXJzID0gMTYzODQ7CiBpbnQJCQlN YXhDb25uZWN0aW9ucyA9IDEwMDsKIGludAkJCW1heF93b3JrZXJfcHJvY2Vzc2VzID0gODsKIGlu dAkJCW1heF9wYXJhbGxlbF93b3JrZXJzID0gODsKLWludAkJCWF1dG92YWN1dW1fbWF4X3BhcmFs bGVsX3dvcmtlcnMgPSAyOworaW50CQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9 IDA7CiBpbnQJCQlNYXhCYWNrZW5kcyA9IDA7CiAKIC8qIEdVQyBwYXJhbWV0ZXJzIGZvciB2YWN1 dW0gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IDQ1YjM5YjdjNDdmLi4xYWM4ZThmYzNiZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Yy5jCkBAIC0zMzU5LDkgKzMzNTksMTAgQEAgc2V0X2NvbmZpZ193aXRoX2hh bmRsZShjb25zdCBjaGFyICpuYW1lLCBjb25maWdfaGFuZGxlICpoYW5kbGUsCiAJICogQWxzbyBh bGxvdyBub3JtYWwgc2V0dGluZyBpZiB0aGUgR1VDIGlzIG1hcmtlZCBHVUNfQUxMT1dfSU5fUEFS QUxMRUwuCiAJICoKIAkgKiBPdGhlciBjaGFuZ2VzIG1pZ2h0IG5lZWQgdG8gYWZmZWN0IG90aGVy IHdvcmtlcnMsIHNvIGZvcmJpZCB0aGVtLiBOb3RlLAotCSAqIHRoYXQgcGFyYWxsZWwgYXV0b3Zh Y3V1bSBsZWFkZXIgaXMgYW4gZXhjZXB0aW9uLCBiZWNhdXNlIG9ubHkKLQkgKiBjb3N0LWJhc2Vk IGRlbGF5cyBuZWVkIHRvIGJlIGFmZmVjdGVkIGFsc28gdG8gcGFyYWxsZWwgYXV0b3ZhY3V1bQot CSAqIHdvcmtlcnMsIGFuZCB3ZSB3aWxsIGhhbmRsZSBpdCBlbHNld2hlcmUgaWYgYXBwcm9wcmlh dGUuCisJICogdGhhdCBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBpcyBhbiBleGNlcHRpb24g YmVjYXVzZSBvbmx5IGNvc3QtYmFzZWQKKwkgKiBkZWxheXMgbmVlZCB0byBiZSBhZmZlY3RlZCBh bHNvIHRvIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2Vycy4gVGhlc2UKKwkgKiBwYXJhbWV0ZXJz IGFyZSBwcm9wYWdhdGVkIHRvIGl0cyB3b3JrZXJzIGR1cmluZyBwYXJhbGxlbCB2YWN1dW0gKHNl ZQorCSAqIHZhY3V1bXBhcmFsbGVsLmMgZm9yIGRldGFpbHMpLgogCSAqLwogCWlmIChJc0luUGFy YWxsZWxNb2RlKCkgJiYgIUFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBjaGFuZ2VWYWwg JiYKIAkJYWN0aW9uICE9IEdVQ19BQ1RJT05fU0FWRSAmJgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y19wYXJhbWV0ZXJzLmRhdAppbmRleCAzZDJmZDM1YTAwNC4uMjc1MTk4ZjIwMjMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CkBAIC0xNTcsNyArMTU3LDcg QEAKIHsgbmFtZSA9PiAnYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycycsIHR5cGUgPT4g J2ludCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9WQUNV VU0nLAogICBzaG9ydF9kZXNjID0+ICdNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJz IHRoYXQgY2FuIGJlIHVzZWQgYnkgYSBzaW5nbGUgYXV0b3ZhY3V1bSB3b3JrZXIuJywKICAgdmFy aWFibGUgPT4gJ2F1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMnLAotICBib290X3ZhbCA9 PiAnMicsCisgIGJvb3RfdmFsID0+ICcwJywKICAgbWluID0+ICcwJywKICAgbWF4ID0+ICdNQVhf UEFSQUxMRUxfV09SS0VSX0xJTUlUJywKIH0sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggMTFkOTZmNGRkNGYuLjk4NTNkZjBiZGY3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC03MTMs NyArNzEzLDcgQEAKICNhdXRvdmFjdXVtX3dvcmtlcl9zbG90cyA9IDE2ICAgICAgICAgICAjIGF1 dG92YWN1dW0gd29ya2VyIHNsb3RzIHRvIGFsbG9jYXRlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjYXV0b3ZhY3V1 bV9tYXhfd29ya2VycyA9IDMgICAgICAgICAgICAgIyBtYXggbnVtYmVyIG9mIGF1dG92YWN1dW0g c3VicHJvY2Vzc2VzCi0jYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIgICAgIyBs aW1pdGVkIGJ5IG1heF9wYXJhbGxlbF93b3JrZXJzCisjYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxf d29ya2VycyA9IDAgICAgIyBsaW1pdGVkIGJ5IG1heF9wYXJhbGxlbF93b3JrZXJzCiAjYXV0b3Zh Y3V1bV9uYXB0aW1lID0gMW1pbiAgICAgICAgICAgICAgIyB0aW1lIGJldHdlZW4gYXV0b3ZhY3V1 bSBydW5zCiAjYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkID0gNTAgICAgICAgIyBtaW4gbnVt YmVyIG9mIHJvdyB1cGRhdGVzIGJlZm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgdmFjdXVtCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbAppbmRleCAwMzY0MDE5 ZDVmMC4uMmFjYTMyMzc0YTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1dW0ucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbApAQCAtMTIsNyAr MTIsNyBAQCBpZiAoJEVOVntlbmFibGVfaW5qZWN0aW9uX3BvaW50c30gbmUgJ3llcycpCiAKICMg QmVmb3JlIGVhY2ggdGVzdCB3ZSBzaG91bGQgZGlzYWJsZSBhdXRvdmFjdXVtIGZvciAndGVzdF9h dXRvdmFjJyB0YWJsZSBhbmQKICMgZ2VuZXJhdGUgc29tZSBkZWFkIHR1cGxlcyBpbiBpdC4gUmV0 dXJucyB0aGUgY3VycmVudCBhdXRvdmFjdXVtX2NvdW50IG9mCi0jIHRoZSB0YWJsZSB0c2V0X2F1 dG92YWMuCisjIHRoZSB0YWJsZSB0ZXN0X2F1dG92YWMuCiBzdWIgcHJlcGFyZV9mb3JfbmV4dF90 ZXN0CiB7CiAJbXkgKCRub2RlLCAkdGVzdF9udW1iZXIpID0gQF87CkBAIC00NywxNiArNDcsMjAg QEAgbXkgJHBzcWxfb3V0OwogbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ21haW4nKTsKICRub2RlLT5pbml0OwogCi0jIENvbmZpZ3VyZSBwb3N0Z3Jlcywgc28gaXQg Y2FuIGxhdW5jaCBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMsIGxvZyBhbGwKLSMgaW5mb3Jt YXRpb24gd2UgYXJlIGludGVyZXN0ZWQgaW4gYW5kIGF1dG92YWN1dW0gd29ya3MgZnJlcXVlbnRs eQorIyBMaW1pdCB0byBvbmUgYXV0b3ZhY3V1bSB3b3JrZXIgYW5kIGRpc2FibGUgYXV0b3ZhY3V1 bSBsb2dnaW5nIGdsb2JhbGx5CisjIChlbmFibGVkIG9ubHkgb24gdGhlIHRlc3QgdGFibGUpIHNv IHRoYXQgbG9nIGNoZWNrcyBiZWxvdyBtYXRjaCBvbmx5CisjIGFjdGl2aXR5IG9uIHRoZSBleHBl Y3RlZCB0YWJsZS4KICRub2RlLT5hcHBlbmRfY29uZigKIAkncG9zdGdyZXNxbC5jb25mJywgcXF7 Ci0JbWF4X3dvcmtlcl9wcm9jZXNzZXMgPSAyMAotCW1heF9wYXJhbGxlbF93b3JrZXJzID0gMjAK LQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gNAotCWxvZ19taW5fbWVzc2FnZXMg PSBkZWJ1ZzIKLQlhdXRvdmFjdXVtX25hcHRpbWUgPSAnMXMnCi0JbWluX3BhcmFsbGVsX2luZGV4 X3NjYW5fc2l6ZSA9IDAKK2F1dG92YWN1dW1fbWF4X3dvcmtlcnMgPSAxCithdXRvdmFjdXVtX3dv cmtlcl9zbG90cyA9IDEKK2F1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAyCittYXhf d29ya2VyX3Byb2Nlc3NlcyA9IDEwCittYXhfcGFyYWxsZWxfd29ya2VycyA9IDEwCitsb2dfbWlu X21lc3NhZ2VzID0gZGVidWcyCithdXRvdmFjdXVtX25hcHRpbWUgPSAnMXMnCittaW5fcGFyYWxs ZWxfaW5kZXhfc2Nhbl9zaXplID0gMAorbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gLTEK IH0pOwogJG5vZGUtPnN0YXJ0OwogCi0tIAoyLjUzLjAKCg== --000000000000e9b29e064de0fd78 Content-Type: text/x-patch; charset="US-ASCII"; name="v31-0001-Parallel-autovacuum.patch" Content-Disposition: attachment; filename="v31-0001-Parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn6mo3901 RnJvbSA0OTMwNzBkYWY1NTBiNWI3OTMxZDIxZDRiNTY2MWVjM2I0NjZmNTFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUdWUsIDE3IE1hciAyMDI2IDAyOjE4OjA5ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MzEgMS8yXSBQYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAxMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgIDkgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtLmMgICAgICAgICAgICAgICAgIHwgIDIxICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW1wYXJhbGxlbC5jICAgICAgICAgfCAyMDEgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgMjAgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0ICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRz L3ZhY3V1bS5oICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4u aCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxk ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vLmdpdGlnbm9yZSAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVt L01ha2VmaWxlICAgICB8ICAyMCArKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0v bWVzb24uYnVpbGQgIHwgIDE1ICsrCiAuLi4vdC8wMDFfcGFyYWxsZWxfYXV0b3ZhY3V1bS5wbCAg ICAgICAgICAgICAgfCAxOTEgKysrKysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAyMCBmaWxlcyBjaGFuZ2VkLCA1MDQg aW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJh bGxlbF9hdXRvdmFjdXVtLnBsCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYwpp bmRleCBhNjAwMmFlOWIwNy4uY2U0MWIwMTViMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v cmVsb3B0aW9ucy5jCkBAIC0yMzYsNiArMjM2LDE1IEBAIHN0YXRpYyByZWxvcHRfaW50IGludFJl bE9wdHNbXSA9CiAJCX0sCiAJCVNQR0lTVF9ERUZBVUxUX0ZJTExGQUNUT1IsIFNQR0lTVF9NSU5f RklMTEZBQ1RPUiwgMTAwCiAJfSwKKwl7CisJCXsKKwkJCSJhdXRvdmFjdXVtX3BhcmFsbGVsX3dv cmtlcnMiLAorCQkJIk92ZXJyaWRlcyB2YWx1ZSBvZiB0aGUgYXV0b3ZhY3V1bV9tYXhfcGFyYWxs ZWxfd29ya2VycyBwYXJhbWV0ZXIgZm9yIHRoaXMgdGFibGUsIGlmID4gLTEuIiwKKwkJCVJFTE9Q VF9LSU5EX0hFQVAsCisJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sKKwkJfSwKKwkJMCwgLTEs IDEwMjQKKwl9LAogCXsKIAkJewogCQkJImF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCIsCkBA IC0xOTY5LDYgKzE5NzgsOCBAQCBkZWZhdWx0X3JlbG9wdGlvbnMoRGF0dW0gcmVsb3B0aW9ucywg Ym9vbCB2YWxpZGF0ZSwgcmVsb3B0X2tpbmQga2luZCkKIAkJeyJmaWxsZmFjdG9yIiwgUkVMT1BU X1RZUEVfSU5ULCBvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGZpbGxmYWN0b3IpfSwKIAkJeyJhdXRv dmFjdXVtX2VuYWJsZWQiLCBSRUxPUFRfVFlQRV9CT09MLAogCQlvZmZzZXRvZihTdGRSZE9wdGlv bnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0b1ZhY09wdHMsIGVuYWJsZWQpfSwKKwkJeyJh dXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMiLCBSRUxPUFRfVFlQRV9JTlQsCisJCW9mZnNldG9m KFN0ZFJkT3B0aW9ucywgYXV0b3ZhY3V1bSkgKyBvZmZzZXRvZihBdXRvVmFjT3B0cywgYXV0b3Zh Y3V1bV9wYXJhbGxlbF93b3JrZXJzKX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xk IiwgUkVMT1BUX1RZUEVfSU5ULAogCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0p ICsgb2Zmc2V0b2YoQXV0b1ZhY09wdHMsIHZhY3V1bV90aHJlc2hvbGQpfSwKIAkJeyJhdXRvdmFj dXVtX3ZhY3V1bV9tYXhfdGhyZXNob2xkIiwgUkVMT1BUX1RZUEVfSU5ULApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGY2OThjMmQ4OTliLi44YzdkZTY1Nzk3NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTUyLDYgKzE1Miw3IEBACiAjaW5jbHVk ZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQu aCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19ydXNh Z2UuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKQEAgLTg2Miw2ICs4NjMsMTQgQEAg aGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywK IAlsYXp5X2NoZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUodmFjcmVsKTsKIAlkZWFkX2l0ZW1zX2Fs bG9jKHZhY3JlbCwgcGFyYW1zLm53b3JrZXJzKTsKIAorI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9J TlRTCisJLyoKKwkgKiBUcmlnZ2VyIGluamVjdGlvbiBwb2ludCwgaWYgcGFyYWxsZWwgYXV0b3Zh Y3V1bSBpcyBhYm91dCB0byBiZSBzdGFydGVkLgorCSAqLworCWlmIChBbUF1dG9WYWN1dW1Xb3Jr ZXJQcm9jZXNzKCkgJiYgUGFyYWxsZWxWYWN1dW1Jc0FjdGl2ZSh2YWNyZWwpKQorCQlJTkpFQ1RJ T05fUE9JTlQoImF1dG92YWN1dW0tc3RhcnQtcGFyYWxsZWwtdmFjdXVtIiwgTlVMTCk7CisjZW5k aWYKKwogCS8qCiAJICogQ2FsbCBsYXp5X3NjYW5faGVhcCB0byBwZXJmb3JtIGFsbCByZXF1aXJl ZCBoZWFwIHBydW5pbmcsIGluZGV4CiAJICogdmFjdXVtaW5nLCBhbmQgaGVhcCB2YWN1dW1pbmcg KHBsdXMgcmVsYXRlZCBwcm9jZXNzaW5nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCBiY2UzYTJk YWEyNC4uMWI1YmEzY2UxZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0yNDM1LDggKzI0MzUs MTkgQEAgdmFjdXVtX2RlbGF5X3BvaW50KGJvb2wgaXNfYW5hbHl6ZSkKIAkvKiBBbHdheXMgY2hl Y2sgZm9yIGludGVycnVwdHMgKi8KIAlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JaWYgKElu dGVycnVwdFBlbmRpbmcgfHwKLQkJKCFWYWN1dW1Db3N0QWN0aXZlICYmICFDb25maWdSZWxvYWRQ ZW5kaW5nKSkKKwlpZiAoSW50ZXJydXB0UGVuZGluZykKKwkJcmV0dXJuOworCisJaWYgKElzUGFy YWxsZWxXb3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIFVwZGF0ZSBjb3N0LWJhc2VkIHZhY3V1bSBk ZWxheSBwYXJhbWV0ZXJzIGZvciBhIHBhcmFsbGVsIGF1dG92YWN1dW0KKwkJICogd29ya2VyIGlm IGFueSBjaGFuZ2VzIGFyZSBkZXRlY3RlZC4KKwkJICovCisJCXBhcmFsbGVsX3ZhY3V1bV91cGRh dGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpOworCX0KKworCWlmICghVmFjdXVtQ29zdEFjdGl2ZSAm JiAhQ29uZmlnUmVsb2FkUGVuZGluZykKIAkJcmV0dXJuOwogCiAJLyoKQEAgLTI0NTAsNiArMjQ2 MSwxMiBAQCB2YWN1dW1fZGVsYXlfcG9pbnQoYm9vbCBpc19hbmFseXplKQogCQlDb25maWdSZWxv YWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwogCQlW YWN1dW1VcGRhdGVDb3N0cygpOworCisJCS8qCisJCSAqIFByb3BhZ2F0ZSBjb3N0LWJhc2VkIHZh Y3V1bSBkZWxheSBwYXJhbWV0ZXJzIHRvIHNoYXJlZCBtZW1vcnkgaWYKKwkJICogYW55IG9mIHRo ZW0gaGF2ZSBjaGFuZ2VkIGR1cmluZyB0aGUgY29uZmlnIHJlbG9hZC4KKwkJICovCisJCXBhcmFs bGVsX3ZhY3V1bV9wcm9wYWdhdGVfc2hhcmVkX2RlbGF5X3BhcmFtcygpOwogCX0KIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA3NzgzNGI5NmEyMS4uNjJiNmY1 MGI1MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAtMSw3ICsxLDkg QEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIHZhY3V1bXBhcmFsbGVsLmMKLSAqCSAgU3Vw cG9ydCByb3V0aW5lcyBmb3IgcGFyYWxsZWwgdmFjdXVtIGV4ZWN1dGlvbi4KKyAqCSAgU3VwcG9y dCByb3V0aW5lcyBmb3IgcGFyYWxsZWwgdmFjdXVtIGFuZCBhdXRvdmFjdXVtIGV4ZWN1dGlvbi4g SW4gdGhlCisgKgkgIGNvbW1lbnRzIGJlbG93LCB0aGUgd29yZCAidmFjdXVtIiB3aWxsIHJlZmVy IHRvIGJvdGggdmFjdXVtIGFuZAorICoJICBhdXRvdmFjdXVtLgogICoKICAqIFRoaXMgZmlsZSBj b250YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBzdXBwb3J0IHNldHRpbmcgdXAs IHVzaW5nLAogICogYW5kIHRlYXJpbmcgZG93biBhIFBhcmFsbGVsVmFjdXVtU3RhdGUuCkBAIC0x Niw2ICsxOCwxMyBAQAogICogdGhlIHBhcmFsbGVsIGNvbnRleHQgaXMgcmUtaW5pdGlhbGl6ZWQg c28gdGhhdCB0aGUgc2FtZSBEU00gY2FuIGJlIHVzZWQgZm9yCiAgKiBtdWx0aXBsZSBwYXNzZXMg b2YgaW5kZXggYnVsay1kZWxldGlvbiBhbmQgaW5kZXggY2xlYW51cC4KICAqCisgKiBGb3IgcGFy YWxsZWwgYXV0b3ZhY3V1bSwgd2UgbmVlZCB0byBwcm9wYWdhdGUgY29zdC1iYXNlZCB2YWN1dW0g ZGVsYXkKKyAqIHBhcmFtZXRlcnMgZnJvbSB0aGUgbGVhZGVyIHRvIGl0cyB3b3JrZXJzLCBhcyB0 aGUgbGVhZGVyJ3MgcGFyYW1ldGVycyBjYW4KKyAqIGNoYW5nZSBldmVuIHdoaWxlIHByb2Nlc3Np bmcgYSB0YWJsZSAoZS5nLiwgZHVlIHRvIGEgY29uZmlnIHJlbG9hZCkuCisgKiBUaGUgUFZTaGFy ZWRDb3N0UGFyYW1zIHN0cnVjdCBtYW5hZ2VzIHRoZXNlIHBhcmFtZXRlcnMgdXNpbmcgYQorICog Z2VuZXJhdGlvbiBjb3VudGVyLiBFYWNoIHBhcmFsbGVsIHdvcmtlciBwb2xscyB0aGlzIHNoYXJl ZCBzdGF0ZSBhbmQKKyAqIHJlZnJlc2hlcyBpdHMgbG9jYWwgZGVsYXkgcGFyYW1ldGVycyB3aGVu ZXZlciBhIGNoYW5nZSBpcyBkZXRlY3RlZC4KKyAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCiAgKgpAQCAtMzcsNiArNDYsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgor I2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC01MSw2ICs2MSwzMSBAQAogI2Rl ZmluZSBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRQkJNAogI2RlZmluZSBQQVJBTExFTF9W QUNVVU1fS0VZX0lOREVYX1NUQVRTCQk1CiAKKy8qCisgKiBTdHJ1Y3QgZm9yIGNvc3QtYmFzZWQg dmFjdXVtIGRlbGF5IHJlbGF0ZWQgcGFyYW1ldGVycyB0byBzaGFyZSBhbW9uZyBhbgorICogYXV0 b3ZhY3V1bSB3b3JrZXIgYW5kIGl0cyBwYXJhbGxlbCB2YWN1dW0gd29ya2Vycy4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgUFZTaGFyZWRDb3N0UGFyYW1zCit7CisJLyoKKwkgKiBUaGUgZ2VuZXJhdGlv biBjb3VudGVyIGlzIGluY3JlbWVudGVkIGJ5IHRoZSBsZWFkZXIgcHJvY2VzcyBlYWNoIHRpbWUK KwkgKiBpdCB1cGRhdGVzIHRoZSBzaGFyZWQgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgcGFyYW1l dGVycy4gUGFyYWxlbGwKKwkgKiB2YWN1dW0gd29ya2VycyBjb21wYXJlcyBpdCB3aXRoIHRoZWly IGxvY2FsIGdlbmVyYXRpb24sCisJICogc2hhcmVkX3BhcmFtc19nZW5lcmF0aW9uX2xvY2FsLCB0 byBkZXRlY3Qgd2hldGhlciB0aGV5IG5lZWQgdG8gcmVmcmVzaAorCSAqIHRoZWlyIGxvY2FsIHBh cmFtZXRlcnMuCisJICovCisJcGdfYXRvbWljX3VpbnQzMiBnZW5lcmF0aW9uOworCisJc2xvY2tf dAkJbXV0ZXg7CQkJLyogcHJvdGVjdHMgYWxsIGZpZWxkcyBiZWxvdyAqLworCisJLyogUGFyYW1l dGVycyB0byBzaGFyZSB3aXRoIHBhcmFsbGVsIHdvcmtlcnMgKi8KKwlkb3VibGUJCWNvc3RfZGVs YXk7CisJaW50CQkJY29zdF9saW1pdDsKKwlpbnQJCQljb3N0X3BhZ2VfZGlydHk7CisJaW50CQkJ Y29zdF9wYWdlX2hpdDsKKwlpbnQJCQljb3N0X3BhZ2VfbWlzczsKK30gUFZTaGFyZWRDb3N0UGFy YW1zOworCiAvKgogICogU2hhcmVkIGluZm9ybWF0aW9uIGFtb25nIHBhcmFsbGVsIHdvcmtlcnMu ICBTbyB0aGlzIGlzIGFsbG9jYXRlZCBpbiB0aGUgRFNNCiAgKiBzZWdtZW50LgpAQCAtMTIwLDYg KzE1NSwxOCBAQCB0eXBlZGVmIHN0cnVjdCBQVlNoYXJlZAogCiAJLyogU3RhdGlzdGljcyBvZiBz aGFyZWQgZGVhZCBpdGVtcyAqLwogCVZhY0RlYWRJdGVtc0luZm8gZGVhZF9pdGVtc19pbmZvOwor CisJLyoKKwkgKiBJZiAndHJ1ZScgdGhlbiB3ZSBhcmUgcnVubmluZyBwYXJhbGxlbCBhdXRvdmFj dXVtLiBPdGhlcndpc2UsIHdlIGFyZQorCSAqIHJ1bm5pbmcgcGFyYWxsZWwgbWFpbnRlbmVuY2Ug VkFDVVVNLgorCSAqLworCWJvb2wJCWlzX2F1dG92YWN1dW07CisKKwkvKgorCSAqIFN0cnVjdCBm b3Igc3luY2luZyBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGJldHdlZW4KKwkg KiBzdXBwb3J0aXZlIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyB3aXRoIGxlYWRlciB3b3Jr ZXIuCisJICovCisJUFZTaGFyZWRDb3N0UGFyYW1zIGNvc3RfcGFyYW1zOwogfSBQVlNoYXJlZDsK IAogLyogU3RhdHVzIHVzZWQgZHVyaW5nIHBhcmFsbGVsIGluZGV4IHZhY3V1bSBvciBjbGVhbnVw ICovCkBAIC0yMjIsNiArMjY5LDExIEBAIHN0cnVjdCBQYXJhbGxlbFZhY3V1bVN0YXRlCiAJUFZJ bmRWYWNTdGF0dXMgc3RhdHVzOwogfTsKIAorc3RhdGljIFBWU2hhcmVkQ29zdFBhcmFtcyAqcHZf c2hhcmVkX2Nvc3RfcGFyYW1zID0gTlVMTDsKKworLyogU2VlIGNvbW1lbnRzIGluIHRoZSBQVlNo YXJlZENvc3RQYXJhbXMgZm9yIHRoZSBkZXRhaWxzICovCitzdGF0aWMgdWludDMyIHNoYXJlZF9w YXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA9IDA7CisKIHN0YXRpYyBpbnQJcGFyYWxsZWxfdmFjdXVt X2NvbXB1dGVfd29ya2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJl cXVlc3RlZCwKIAkJCQkJCQkJCQkJYm9vbCAqd2lsbF9wYXJhbGxlbF92YWN1dW0pOwogc3RhdGlj IHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1T dGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW5zLApAQCAtMjMzLDYgKzI4NSw3IEBAIHN0YXRp YyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0 YXRlICpwdnMsIFJlbGF0aW9uCiBzdGF0aWMgYm9vbCBwYXJhbGxlbF92YWN1dW1faW5kZXhfaXNf cGFyYWxsZWxfc2FmZShSZWxhdGlvbiBpbmRyZWwsIGludCBudW1faW5kZXhfc2NhbnMsCiAJCQkJ CQkJCQkJCQkgICBib29sIHZhY3V1bSk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fZXJy b3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKK3N0YXRpYyBpbmxpbmUgdm9pZCBwYXJhbGxlbF92YWN1 dW1fc2V0X2Nvc3RfcGFyYW1ldGVycyhQVlNoYXJlZENvc3RQYXJhbXMgKnBhcmFtcyk7CiAKIC8q CiAgKiBUcnkgdG8gZW50ZXIgcGFyYWxsZWwgbW9kZSBhbmQgY3JlYXRlIGEgcGFyYWxsZWwgY29u dGV4dC4gIFRoZW4gaW5pdGlhbGl6ZQpAQCAtMzc0LDggKzQyNyw5IEBAIHBhcmFsbGVsX3ZhY3V1 bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlz aGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7CiAJc2hhcmVkLT5tYWlu dGVuYW5jZV93b3JrX21lbV93b3JrZXIgPQogCQkobmluZGV4ZXNfbXdtID4gMCkgPwotCQltYWlu dGVuYW5jZV93b3JrX21lbSAvIE1pbihwYXJhbGxlbF93b3JrZXJzLCBuaW5kZXhlc19td20pIDoK LQkJbWFpbnRlbmFuY2Vfd29ya19tZW07CisJCXZhY193b3JrX21lbSAvIE1pbihwYXJhbGxlbF93 b3JrZXJzLCBuaW5kZXhlc19td20pIDoKKwkJdmFjX3dvcmtfbWVtOworCiAJc2hhcmVkLT5kZWFk X2l0ZW1zX2luZm8ubWF4X2J5dGVzID0gdmFjX3dvcmtfbWVtICogKHNpemVfdCkgMTAyNDsKIAog CS8qIFByZXBhcmUgRFNBIHNwYWNlIGZvciBkZWFkIGl0ZW1zICovCkBAIC0zOTIsNiArNDQ2LDIx IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMs IGludCBuaW5kZXhlcywKIAlwZ19hdG9taWNfaW5pdF91MzIoJihzaGFyZWQtPmFjdGl2ZV9ud29y a2VycyksIDApOwogCXBnX2F0b21pY19pbml0X3UzMigmKHNoYXJlZC0+aWR4KSwgMCk7CiAKKwlz aGFyZWQtPmlzX2F1dG92YWN1dW0gPSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCk7CisKKwkv KgorCSAqIEluaXRpYWxpemUgc2hhcmVkIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRl cnMgaWYgaXQncyBmb3IKKwkgKiBhdXRvdmFjdXVtLgorCSAqLworCWlmIChzaGFyZWQtPmlzX2F1 dG92YWN1dW0pCisJeworCQlwYXJhbGxlbF92YWN1dW1fc2V0X2Nvc3RfcGFyYW1ldGVycygmc2hh cmVkLT5jb3N0X3BhcmFtcyk7CisJCXBnX2F0b21pY19pbml0X3UzMigmc2hhcmVkLT5jb3N0X3Bh cmFtcy5nZW5lcmF0aW9uLCAwKTsKKwkJU3BpbkxvY2tJbml0KCZzaGFyZWQtPmNvc3RfcGFyYW1z Lm11dGV4KTsKKworCQlwdl9zaGFyZWRfY29zdF9wYXJhbXMgPSAmKHNoYXJlZC0+Y29zdF9wYXJh bXMpOworCX0KKwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfVkFDVVVNX0tF WV9TSEFSRUQsIHNoYXJlZCk7CiAJcHZzLT5zaGFyZWQgPSBzaGFyZWQ7CiAKQEAgLTQ1Nyw2ICs1 MjYsOSBAQCBwYXJhbGxlbF92YWN1dW1fZW5kKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICoqaXN0YXRzKQogCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocHZz LT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CiAKKwlpZiAoQW1BdXRvVmFjdXVtV29ya2Vy UHJvY2VzcygpKQorCQlwdl9zaGFyZWRfY29zdF9wYXJhbXMgPSBOVUxMOworCiAJcGZyZWUocHZz LT53aWxsX3BhcmFsbGVsX3ZhY3V1bSk7CiAJcGZyZWUocHZzKTsKIH0KQEAgLTUzNCw2ICs2MDYs MTAzIEBAIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVt U3RhdGUgKnB2cywgbG9uZyBudW1fdGFibGVfdHVwCiAJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nf YWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIGZhbHNlLCB3c3RhdHMpOwogfQogCisv KgorICogRmlsbCBpbiB0aGUgZ2l2ZW4gc3RydWN0dXJlIHdpdGggY29zdC1iYXNlZCB2YWN1dW0g ZGVsYXkgcGFyYW1ldGVyIHZhbHVlcy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitwYXJhbGxl bF92YWN1dW1fc2V0X2Nvc3RfcGFyYW1ldGVycyhQVlNoYXJlZENvc3RQYXJhbXMgKnBhcmFtcykK K3sKKwlwYXJhbXMtPmNvc3RfZGVsYXkgPSB2YWN1dW1fY29zdF9kZWxheTsKKwlwYXJhbXMtPmNv c3RfbGltaXQgPSB2YWN1dW1fY29zdF9saW1pdDsKKwlwYXJhbXMtPmNvc3RfcGFnZV9kaXJ0eSA9 IFZhY3V1bUNvc3RQYWdlRGlydHk7CisJcGFyYW1zLT5jb3N0X3BhZ2VfaGl0ID0gVmFjdXVtQ29z dFBhZ2VIaXQ7CisJcGFyYW1zLT5jb3N0X3BhZ2VfbWlzcyA9IFZhY3V1bUNvc3RQYWdlTWlzczsK K30KKworLyoKKyAqIFVwZGF0ZXMgdGhlIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHBhcmFtZXRl cnMgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0KKyAqIHdvcmtlcnMuCisgKgorICogRm9yIG5vbi1h dXRvdmFjdXVtIHBhcmFsbGVsIHdvcmtlciB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBubyBlZmZl Y3QuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX3ZhY3V1bV91cGRhdGVfc2hhcmVkX2RlbGF5X3BhcmFt cyh2b2lkKQoreworCXVpbnQzMgkJcGFyYW1zX2dlbmVyYXRpb247CisKKwlBc3NlcnQoSXNQYXJh bGxlbFdvcmtlcigpKTsKKworCS8qIFF1aWNrIHJldHVybiBpZiB0aGUgd29rcmVyIGlzIG5vdCBy dW5uaW5nIGZvciB0aGUgYXV0b3ZhY3V1bSAqLworCWlmIChwdl9zaGFyZWRfY29zdF9wYXJhbXMg PT0gTlVMTCkKKwkJcmV0dXJuOworCisJcGFyYW1zX2dlbmVyYXRpb24gPSBwZ19hdG9taWNfcmVh ZF91MzIoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Z2VuZXJhdGlvbik7CisJQXNzZXJ0KHNoYXJl ZF9wYXJhbXNfZ2VuZXJhdGlvbl9sb2NhbCA8PSBwYXJhbXNfZ2VuZXJhdGlvbik7CisKKwkvKiBS ZXR1cm4gaWYgcGFyYW1ldGVycyBoYWQgbm90IGNoYW5nZWQgaW4gdGhlIGxlYWRlciAqLworCWlm IChwYXJhbXNfZ2VuZXJhdGlvbiA9PSBzaGFyZWRfcGFyYW1zX2dlbmVyYXRpb25fbG9jYWwpCisJ CXJldHVybjsKKworCVNwaW5Mb2NrQWNxdWlyZSgmcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5tdXRl eCk7CisJVmFjdXVtQ29zdERlbGF5ID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X2RlbGF5 OworCVZhY3V1bUNvc3RMaW1pdCA9IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9saW1pdDsK KwlWYWN1dW1Db3N0UGFnZURpcnR5ID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5jb3N0X3BhZ2Vf ZGlydHk7CisJVmFjdXVtQ29zdFBhZ2VIaXQgPSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3Rf cGFnZV9oaXQ7CisJVmFjdXVtQ29zdFBhZ2VNaXNzID0gcHZfc2hhcmVkX2Nvc3RfcGFyYW1zLT5j b3N0X3BhZ2VfbWlzczsKKwlTcGluTG9ja1JlbGVhc2UoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+ bXV0ZXgpOworCisJVmFjdXVtVXBkYXRlQ29zdHMoKTsKKworCXNoYXJlZF9wYXJhbXNfZ2VuZXJh dGlvbl9sb2NhbCA9IHBhcmFtc19nZW5lcmF0aW9uOworCisJZWxvZyhERUJVRzIsCisJCSAicGFy YWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXIgdXBkYXRlZCBjb3N0IHBhcmFtczogY29zdF9saW1pdD0l ZCwgY29zdF9kZWxheT0lZywgY29zdF9wYWdlX21pc3M9JWQsIGNvc3RfcGFnZV9kaXJ0eT0lZCwg Y29zdF9wYWdlX2hpdD0lZCIsCisJCSB2YWN1dW1fY29zdF9saW1pdCwKKwkJIHZhY3V1bV9jb3N0 X2RlbGF5LAorCQkgVmFjdXVtQ29zdFBhZ2VNaXNzLAorCQkgVmFjdXVtQ29zdFBhZ2VEaXJ0eSwK KwkJIFZhY3V1bUNvc3RQYWdlSGl0KTsKK30KKworLyoKKyAqIFN0b3JlIHRoZSBjb3N0LWJhc2Vk IHZhY3V1bSBkZWxheSBwYXJhbWV0ZXJzIGluIHRoZSBzaGFyZWQgbWVtb3J5IHNvIHRoYXQKKyAq IHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzIGNhbiBjb25zdW1lIHRoZW0gKHNlZQorICogcGFyYWxs ZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKCkpLgorICovCit2b2lkCitwYXJh bGxlbF92YWN1dW1fcHJvcGFnYXRlX3NoYXJlZF9kZWxheV9wYXJhbXModm9pZCkKK3sKKwlBc3Nl cnQoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKTsKKworCS8qCisJICogUXVpY2sgcmV0dXJu IGlmIHRoZSBsZWFkZXIgcHJvY2VzcyBpcyBub3Qgc2hhcmluZyB0aGUgZGVsYXkgcGFyYW1ldGVy cy4KKwkgKi8KKwlpZiAocHZfc2hhcmVkX2Nvc3RfcGFyYW1zID09IE5VTEwpCisJCXJldHVybjsK KworCS8qCisJICogQ2hlY2sgaWYgYW55IGRlbGF5IHBhcmFtZXRlcnMgaGFzIGNoYW5nZWQuIFdl IGNhbiByZWFkIHRoZW0gd2l0aG91dAorCSAqIGxvY2tzIGFzIG9ubHkgdGhlIGxlYWRlciBjYW4g bW9kaWZ5IHRoZW0uCisJICovCisJaWYgKHZhY3V1bV9jb3N0X2RlbGF5ID09IHB2X3NoYXJlZF9j b3N0X3BhcmFtcy0+Y29zdF9kZWxheSAmJgorCQl2YWN1dW1fY29zdF9saW1pdCA9PSBwdl9zaGFy ZWRfY29zdF9wYXJhbXMtPmNvc3RfbGltaXQgJiYKKwkJVmFjdXVtQ29zdFBhZ2VEaXJ0eSA9PSBw dl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9kaXJ0eSAmJgorCQlWYWN1dW1Db3N0UGFn ZUhpdCA9PSBwdl9zaGFyZWRfY29zdF9wYXJhbXMtPmNvc3RfcGFnZV9oaXQgJiYKKwkJVmFjdXVt Q29zdFBhZ2VNaXNzID09IHB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+Y29zdF9wYWdlX21pc3MpCisJ CXJldHVybjsKKworCS8qIFVwZGF0ZSB0aGUgc2hhcmVkIGRlbGF5IHBhcmFtZXRlcnMgKi8KKwlT cGluTG9ja0FjcXVpcmUoJnB2X3NoYXJlZF9jb3N0X3BhcmFtcy0+bXV0ZXgpOworCXBhcmFsbGVs X3ZhY3V1bV9zZXRfY29zdF9wYXJhbWV0ZXJzKHB2X3NoYXJlZF9jb3N0X3BhcmFtcyk7CisJU3Bp bkxvY2tSZWxlYXNlKCZwdl9zaGFyZWRfY29zdF9wYXJhbXMtPm11dGV4KTsKKworCS8qCisJICog SW5jcmVtZW50IHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzLCBpLmUuIGxldCBwYXJh bGxlbCB3b3JrZXJzCisJICoga25vdyB0aGF0IHRoZXkgc2hvdWxkIHJlLXJlYWQgc2hhcmVkIGNv c3QgcGFyYW1zLgorCSAqLworCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZwdl9zaGFyZWRfY29z dF9wYXJhbXMtPmdlbmVyYXRpb24sIDEpOworfQorCiAvKgogICogQ29tcHV0ZSB0aGUgbnVtYmVy IG9mIHBhcmFsbGVsIHdvcmtlciBwcm9jZXNzZXMgdG8gcmVxdWVzdC4gIEJvdGggaW5kZXgKICAq IHZhY3V1bSBhbmQgaW5kZXggY2xlYW51cCBjYW4gYmUgZXhlY3V0ZWQgd2l0aCBwYXJhbGxlbCB3 b3JrZXJzLgpAQCAtNTU1LDEyICs3MjQsMTcgQEAgcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVfd29y a2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwKIAlp bnQJCQluaW5kZXhlc19wYXJhbGxlbF9idWxrZGVsID0gMDsKIAlpbnQJCQluaW5kZXhlc19wYXJh bGxlbF9jbGVhbnVwID0gMDsKIAlpbnQJCQlwYXJhbGxlbF93b3JrZXJzOworCWludAkJCW1heF93 b3JrZXJzOworCisJbWF4X3dvcmtlcnMgPSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgPwor CQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIDoKKwkJbWF4X3BhcmFsbGVsX21haW50 ZW5hbmNlX3dvcmtlcnM7CiAKIAkvKgogCSAqIFdlIGRvbid0IGFsbG93IHBlcmZvcm1pbmcgcGFy YWxsZWwgb3BlcmF0aW9uIGluIHN0YW5kYWxvbmUgYmFja2VuZCBvcgogCSAqIHdoZW4gcGFyYWxs ZWxpc20gaXMgZGlzYWJsZWQuCiAJICovCi0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlciB8fCBtYXhf cGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2VycyA9PSAwKQorCWlmICghSXNVbmRlclBvc3RtYXN0 ZXIgfHwgbWF4X3dvcmtlcnMgPT0gMCkKIAkJcmV0dXJuIDA7CiAKIAkvKgpAQCAtNTk5LDggKzc3 Myw4IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMs IGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAJcGFyYWxsZWxfd29ya2VycyA9IChucmVx dWVzdGVkID4gMCkgPwogCQlNaW4obnJlcXVlc3RlZCwgbmluZGV4ZXNfcGFyYWxsZWwpIDogbmlu ZGV4ZXNfcGFyYWxsZWw7CiAKLQkvKiBDYXAgYnkgbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dv cmtlcnMgKi8KLQlwYXJhbGxlbF93b3JrZXJzID0gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG1heF9w YXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzKTsKKwkvKiBDYXAgYnkgR1VDIHZhcmlhYmxlICov CisJcGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJzLCBtYXhfd29ya2Vycyk7 CiAKIAlyZXR1cm4gcGFyYWxsZWxfd29ya2VyczsKIH0KQEAgLTczMCw2ICs5MDQsMTUgQEAgcGFy YWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZz LCBpbnQgbnVtX2luZGV4X3NjYW4KIAkJCQkJCQlwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVk LCBud29ya2VycykpKTsKIAl9CiAKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCS8qCisJ ICogVGhpcyBpbmplY3Rpb24gcG9pbnQgaXMgdXNlZCB0byB3YWl0IHVudGlsIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycworCSAqIGZpbmlzaGVzIHRoZWlyIHBhcnQgb2YgaW5kZXggcHJvY2Vz c2luZy4KKwkgKi8KKwlpZiAobndvcmtlcnMgPiAwKQorCQlJTkpFQ1RJT05fUE9JTlQoImF1dG92 YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmciLCBOVUxMKTsKKyNlbmRpZgor CiAJLyogVmFjdXVtIHRoZSBpbmRleGVzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBieSBvbmx5IGxl YWRlciBwcm9jZXNzICovCiAJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfdW5zYWZlX2luZGV4ZXMo cHZzKTsKIApAQCAtMTA3MCw2ICsxMjUzLDkgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3Nl Z21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCVZhY3V1bVNoYXJlZENvc3RCYWxhbmNlID0gJihz aGFyZWQtPmNvc3RfYmFsYW5jZSk7CiAJVmFjdXVtQWN0aXZlTldvcmtlcnMgPSAmKHNoYXJlZC0+ YWN0aXZlX253b3JrZXJzKTsKIAorCWlmIChzaGFyZWQtPmlzX2F1dG92YWN1dW0pCisJCXB2X3No YXJlZF9jb3N0X3BhcmFtcyA9ICYoc2hhcmVkLT5jb3N0X3BhcmFtcyk7CisKIAkvKiBTZXQgcGFy YWxsZWwgdmFjdXVtIHN0YXRlICovCiAJcHZzLmluZHJlbHMgPSBpbmRyZWxzOwogCXB2cy5uaW5k ZXhlcyA9IG5pbmRleGVzOwpAQCAtMTExOSw2ICsxMzA1LDkgQEAgcGFyYWxsZWxfdmFjdXVtX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCXZhY19jbG9zZV9pbmRleGVzKG5p bmRleGVzLCBpbmRyZWxzLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAl0YWJsZV9jbG9zZShyZWwsIFNo YXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAJRnJlZUFjY2Vzc1N0cmF0ZWd5KHB2cy5ic3RyYXRl Z3kpOworCisJaWYgKHNoYXJlZC0+aXNfYXV0b3ZhY3V1bSkKKwkJcHZfc2hhcmVkX2Nvc3RfcGFy YW1zID0gTlVMTDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv YXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXgg N2VjYjA2OWMyNDguLjU2MjUxNGUyZWNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0u YwpAQCAtMTY1OCw3ICsxNjU4LDcgQEAgVmFjdXVtVXBkYXRlQ29zdHModm9pZCkKIAl9CiAJZWxz ZQogCXsKLQkJLyogTXVzdCBiZSBleHBsaWNpdCBWQUNVVU0gb3IgQU5BTFlaRSAqLworCQkvKiBN dXN0IGJlIGV4cGxpY2l0IFZBQ1VVTSBvciBBTkFMWVpFIG9yIHBhcmFsbGVsIGF1dG92YWN1dW0g d29ya2VyICovCiAJCXZhY3V1bV9jb3N0X2RlbGF5ID0gVmFjdXVtQ29zdERlbGF5OwogCQl2YWN1 dW1fY29zdF9saW1pdCA9IFZhY3V1bUNvc3RMaW1pdDsKIAl9CkBAIC0yNzk3LDYgKzI3OTcsNyBA QCB0YWJsZV9yZWNoZWNrX2F1dG92YWMoT2lkIHJlbGlkLCBIVEFCICp0YWJsZV90b2FzdF9tYXAs CiAJCWludAkJCW11bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlOwogCQlpbnQJCQlsb2dfdmFjdXVt X21pbl9kdXJhdGlvbjsKIAkJaW50CQkJbG9nX2FuYWx5emVfbWluX2R1cmF0aW9uOworCQlpbnQJ CQlucGFyYWxsZWxfd29ya2VycyA9IC0xOyAvKiBkaXNhYmxlZCBieSBkZWZhdWx0ICovCiAKIAkJ LyoKIAkJICogQ2FsY3VsYXRlIHRoZSB2YWN1dW0gY29zdCBwYXJhbWV0ZXJzIGFuZCB0aGUgZnJl ZXplIGFnZXMuICBJZiB0aGVyZQpAQCAtMjg1Niw4ICsyODU3LDIwIEBAIHRhYmxlX3JlY2hlY2tf YXV0b3ZhYyhPaWQgcmVsaWQsIEhUQUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJICovCiAJCXRhYi0+ YXRfcGFyYW1zLmluZGV4X2NsZWFudXAgPSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKIAkJdGFi LT5hdF9wYXJhbXMudHJ1bmNhdGUgPSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKLQkJLyogQXMg b2Ygbm93LCB3ZSBkb24ndCBzdXBwb3J0IHBhcmFsbGVsIHZhY3V1bSBmb3IgYXV0b3ZhY3V1bSAq LwotCQl0YWItPmF0X3BhcmFtcy5ud29ya2VycyA9IC0xOworCisJCS8qIERlY2lkZSB3aGV0aGVy IHdlIG5lZWQgdG8gcHJvY2VzcyBpbmRleGVzIG9mIHRhYmxlIGluIHBhcmFsbGVsLiAqLworCQlp ZiAoYXZvcHRzKQorCQl7CisJCQlpZiAoYXZvcHRzLT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtl cnMgPiAwKQorCQkJCW5wYXJhbGxlbF93b3JrZXJzID0gYXZvcHRzLT5hdXRvdmFjdXVtX3BhcmFs bGVsX3dvcmtlcnM7CisJCQllbHNlIGlmIChhdm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29y a2VycyA9PSAtMSkKKwkJCXsKKwkJCQlucGFyYWxsZWxfd29ya2VycyA9IGF1dG92YWN1dW1fbWF4 X3BhcmFsbGVsX3dvcmtlcnMgPiAwCisJCQkJCT8gYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29y a2VycworCQkJCQk6IC0xOyAvKiBkaXNhYmxlIHBhcmFsbGVsaXNtIGlmIHBhcmFtZXRlcidzIHZh bHVlIGlzIDAgKi8KKwkJCX0KKwkJfQorCiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV9taW5fYWdl ID0gZnJlZXplX21pbl9hZ2U7CiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV90YWJsZV9hZ2UgPSBm cmVlemVfdGFibGVfYWdlOwogCQl0YWItPmF0X3BhcmFtcy5tdWx0aXhhY3RfZnJlZXplX21pbl9h Z2UgPSBtdWx0aXhhY3RfZnJlZXplX21pbl9hZ2U7CkBAIC0yODY2LDYgKzI4NzksNyBAQCB0YWJs ZV9yZWNoZWNrX2F1dG92YWMoT2lkIHJlbGlkLCBIVEFCICp0YWJsZV90b2FzdF9tYXAsCiAJCXRh Yi0+YXRfcGFyYW1zLmxvZ192YWN1dW1fbWluX2R1cmF0aW9uID0gbG9nX3ZhY3V1bV9taW5fZHVy YXRpb247CiAJCXRhYi0+YXRfcGFyYW1zLmxvZ19hbmFseXplX21pbl9kdXJhdGlvbiA9IGxvZ19h bmFseXplX21pbl9kdXJhdGlvbjsKIAkJdGFiLT5hdF9wYXJhbXMudG9hc3RfcGFyZW50ID0gSW52 YWxpZE9pZDsKKwkJdGFiLT5hdF9wYXJhbXMubndvcmtlcnMgPSBucGFyYWxsZWxfd29ya2VyczsK IAogCQkvKgogCQkgKiBMYXRlciwgaW4gdmFjdXVtX3JlbCgpLCB3ZSBjaGVjayByZWxvcHRpb25z IGZvciBhbnkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggMzZhZDcwOGIzNjAuLjgyNjVh ODJiNjM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtMTQzLDYgKzE0Myw3IEBAIGlu dAkJCU5CdWZmZXJzID0gMTYzODQ7CiBpbnQJCQlNYXhDb25uZWN0aW9ucyA9IDEwMDsKIGludAkJ CW1heF93b3JrZXJfcHJvY2Vzc2VzID0gODsKIGludAkJCW1heF9wYXJhbGxlbF93b3JrZXJzID0g ODsKK2ludAkJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAyOwogaW50CQkJTWF4 QmFja2VuZHMgPSAwOwogCiAvKiBHVUMgcGFyYW1ldGVycyBmb3IgdmFjdXVtICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWMuYwppbmRleCBlMTU0NmQ5Yzk3YS4uNDViMzliN2M0N2YgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMu YwpAQCAtMzM1OCw5ICszMzU4LDEzIEBAIHNldF9jb25maWdfd2l0aF9oYW5kbGUoY29uc3QgY2hh ciAqbmFtZSwgY29uZmlnX2hhbmRsZSAqaGFuZGxlLAogCSAqCiAJICogQWxzbyBhbGxvdyBub3Jt YWwgc2V0dGluZyBpZiB0aGUgR1VDIGlzIG1hcmtlZCBHVUNfQUxMT1dfSU5fUEFSQUxMRUwuCiAJ ICoKLQkgKiBPdGhlciBjaGFuZ2VzIG1pZ2h0IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMs IHNvIGZvcmJpZCB0aGVtLgorCSAqIE90aGVyIGNoYW5nZXMgbWlnaHQgbmVlZCB0byBhZmZlY3Qg b3RoZXIgd29ya2Vycywgc28gZm9yYmlkIHRoZW0uIE5vdGUsCisJICogdGhhdCBwYXJhbGxlbCBh dXRvdmFjdXVtIGxlYWRlciBpcyBhbiBleGNlcHRpb24sIGJlY2F1c2Ugb25seQorCSAqIGNvc3Qt YmFzZWQgZGVsYXlzIG5lZWQgdG8gYmUgYWZmZWN0ZWQgYWxzbyB0byBwYXJhbGxlbCBhdXRvdmFj dXVtCisJICogd29ya2VycywgYW5kIHdlIHdpbGwgaGFuZGxlIGl0IGVsc2V3aGVyZSBpZiBhcHBy b3ByaWF0ZS4KIAkgKi8KLQlpZiAoSXNJblBhcmFsbGVsTW9kZSgpICYmIGNoYW5nZVZhbCAmJiBh Y3Rpb24gIT0gR1VDX0FDVElPTl9TQVZFICYmCisJaWYgKElzSW5QYXJhbGxlbE1vZGUoKSAmJiAh QW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIGNoYW5nZVZhbCAmJgorCQlhY3Rpb24gIT0g R1VDX0FDVElPTl9TQVZFICYmCiAJCShyZWNvcmQtPmZsYWdzICYgR1VDX0FMTE9XX0lOX1BBUkFM TEVMKSA9PSAwKQogCXsKIAkJZXJlcG9ydChlbGV2ZWwsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDBjOTg1NGFkOGZjLi4zZDJmZDM1YTAwNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKQEAgLTE1NCw2ICsxNTQsMTQg QEAKICAgbWF4ID0+ICcyMDAwMDAwMDAwJywKIH0sCiAKK3sgbmFtZSA9PiAnYXV0b3ZhY3V1bV9t YXhfcGFyYWxsZWxfd29ya2VycycsIHR5cGUgPT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdI VVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9WQUNVVU0nLAorICBzaG9ydF9kZXNjID0+ICdNYXhp bXVtIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzIHRoYXQgY2FuIGJlIHVzZWQgYnkgYSBzaW5n bGUgYXV0b3ZhY3V1bSB3b3JrZXIuJywKKyAgdmFyaWFibGUgPT4gJ2F1dG92YWN1dW1fbWF4X3Bh cmFsbGVsX3dvcmtlcnMnLAorICBib290X3ZhbCA9PiAnMicsCisgIG1pbiA9PiAnMCcsCisgIG1h eCA9PiAnTUFYX1BBUkFMTEVMX1dPUktFUl9MSU1JVCcsCit9LAorCiB7IG5hbWUgPT4gJ2F1dG92 YWN1dW1fbWF4X3dvcmtlcnMnLCB0eXBlID0+ICdpbnQnLCBjb250ZXh0ID0+ICdQR0NfU0lHSFVQ JywgZ3JvdXAgPT4gJ1ZBQ1VVTV9BVVRPVkFDVVVNJywKICAgc2hvcnRfZGVzYyA9PiAnU2V0cyB0 aGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzbHkgcnVubmluZyBhdXRvdmFjdXVtIHdv cmtlciBwcm9jZXNzZXMuJywKICAgdmFyaWFibGUgPT4gJ2F1dG92YWN1dW1fbWF4X3dvcmtlcnMn LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4 IGU0YWJlNmMwMDc3Li4xMWQ5NmY0ZGQ0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNzEzLDYgKzcxMyw3IEBACiAjYXV0b3ZhY3V1bV93 b3JrZXJfc2xvdHMgPSAxNiAgICAgICAgICAgIyBhdXRvdmFjdXVtIHdvcmtlciBzbG90cyB0byBh bGxvY2F0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKGNoYW5n ZSByZXF1aXJlcyByZXN0YXJ0KQogI2F1dG92YWN1dW1fbWF4X3dvcmtlcnMgPSAzICAgICAgICAg ICAgICMgbWF4IG51bWJlciBvZiBhdXRvdmFjdXVtIHN1YnByb2Nlc3NlcworI2F1dG92YWN1dW1f bWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAyICAgICMgbGltaXRlZCBieSBtYXhfcGFyYWxsZWxfd29y a2VycwogI2F1dG92YWN1dW1fbmFwdGltZSA9IDFtaW4gICAgICAgICAgICAgICMgdGltZSBiZXR3 ZWVuIGF1dG92YWN1dW0gcnVucwogI2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCA9IDUwICAg ICAgICMgbWluIG51bWJlciBvZiByb3cgdXBkYXRlcyBiZWZvcmUKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIHZhY3V1bQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4 IDUyM2QzZjM5ZmM1Li5mNmJmMDcyYmFiNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMTQz Miw2ICsxNDMyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHRhYmxlX3N0b3JhZ2VfcGFy YW1ldGVyc1tdID0gewogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSIsCiAJ ImF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlIiwKIAkiYXV0b3ZhY3V1bV9tdWx0 aXhhY3RfZnJlZXplX3RhYmxlX2FnZSIsCisJImF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyIs CiAJImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXkiLAogCSJhdXRvdmFjdXVtX3ZhY3V1bV9j b3N0X2xpbWl0IiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1faW5zZXJ0X3NjYWxlX2ZhY3RvciIsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oCmluZGV4IDFmNDViY2EwMTVjLi44YjQyODA4ZTcwYiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdmFjdXVtLmgKQEAgLTQyMiw2ICs0MjIsOCBAQCBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1 dW1fY2xlYW51cF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsCiAJCQkJCQkJ CQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zLAogCQkJCQkJCQkJCQkJYm9vbCBlc3RpbWF0ZWRfY291 bnQsCiAJCQkJCQkJCQkJCQlQVldvcmtlclN0YXRzICp3c3RhdHMpOworZXh0ZXJuIHZvaWQgcGFy YWxsZWxfdmFjdXVtX3VwZGF0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQpOworZXh0ZXJuIHZv aWQgcGFyYWxsZWxfdmFjdXVtX3Byb3BhZ2F0ZV9zaGFyZWRfZGVsYXlfcGFyYW1zKHZvaWQpOwog ZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3Rv YyAqdG9jKTsKIAogLyogaW4gY29tbWFuZHMvYW5hbHl6ZS5jICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IGYxNmYz NTY1OWI5Li4wMDE5MGM2N2VjZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgK KysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTE3OCw2ICsxNzgsNyBAQCBleHRlcm4g UEdETExJTVBPUlQgaW50IE1heEJhY2tlbmRzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNYXhD b25uZWN0aW9uczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3dvcmtlcl9wcm9jZXNzZXM7 CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9wYXJhbGxlbF93b3JrZXJzOworZXh0ZXJuIFBH RExMSU1QT1JUIGludCBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzOwogCiBleHRlcm4g UEdETExJTVBPUlQgaW50IGNvbW1pdF90aW1lc3RhbXBfYnVmZmVyczsKIGV4dGVybiBQR0RMTElN UE9SVCBpbnQgbXVsdGl4YWN0X21lbWJlcl9idWZmZXJzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCAyMzY4MzBmNmI5 My4uY2QxZTkyZjIzMDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0zMTEsNiArMzExLDggQEAgdHlwZWRlZiBzdHJ1 Y3QgRm9yZWlnbktleUNhY2hlSW5mbwogdHlwZWRlZiBzdHJ1Y3QgQXV0b1ZhY09wdHMKIHsKIAli b29sCQllbmFibGVkOworCisJaW50CQkJYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzOwogCWlu dAkJCXZhY3V1bV90aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX21heF90aHJlc2hvbGQ7CiAJaW50 CQkJdmFjdXVtX2luc190aHJlc2hvbGQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01h a2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQppbmRleCAyOGNlM2IzNWVkYS4uMzM2 YTIxMmZhZjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQpAQCAtMTYsNiArMTYsNyBAQCBTVUJESVJTID0gXAogCQkg IHBsc2FtcGxlIFwKIAkJICBzcGdpc3RfbmFtZV9vcHMgXAogCQkgIHRlc3RfYWlvIFwKKwkJICB0 ZXN0X2F1dG92YWN1dW0gXAogCQkgIHRlc3RfYmluYXJ5aGVhcCBcCiAJCSAgdGVzdF9iaXRtYXBz ZXQgXAogCQkgIHRlc3RfYmxvb21maWx0ZXIgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKaW5kZXggM2FjMjkx NjU2YzEuLjkyOTY1OTk1NmNiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1 aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKQEAgLTE2LDYgKzE2LDcgQEAg c3ViZGlyKCdwbHNhbXBsZScpCiBzdWJkaXIoJ3NwZ2lzdF9uYW1lX29wcycpCiBzdWJkaXIoJ3Nz bF9wYXNzcGhyYXNlX2NhbGxiYWNrJykKIHN1YmRpcigndGVzdF9haW8nKQorc3ViZGlyKCd0ZXN0 X2F1dG92YWN1dW0nKQogc3ViZGlyKCd0ZXN0X2JpbmFyeWhlYXAnKQogc3ViZGlyKCd0ZXN0X2Jp dG1hcHNldCcpCiBzdWJkaXIoJ3Rlc3RfYmxvb21maWx0ZXInKQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZSBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjcxNmUxN2Y1YTJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQpAQCAtMCwwICsxLDIgQEAKKyMgR2VuZXJhdGVk IHN1YmRpcmVjdG9yaWVzCisvdG1wX2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3Zh Y3V1bS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTg4 ZWM5Zjk2YTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3Zh Y3V1bS9NYWtlZmlsZQpAQCAtMCwwICsxLDIwIEBACisjIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9h dXRvdmFjdXVtL01ha2VmaWxlCisKK1BHRklMRURFU0MgPSAidGVzdF9hdXRvdmFjdXVtIC0gdGVz dCBjb2RlIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtIgorCitUQVBfVEVTVFMgPSAxCisKK0VYVFJB X0lOU1RBTEwgPSBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMKKworZXhwb3J0IGVu YWJsZV9pbmplY3Rpb25fcG9pbnRzCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19j b25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBH WFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bQordG9w X2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtl ZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFs Lm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0v bWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5idWls ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODZlMzkyYmMwZGUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9tZXNvbi5i dWlsZApAQCAtMCwwICsxLDE1IEBACisjIENvcHlyaWdodCAoYykgMjAyNC0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rl c3RfYXV0b3ZhY3V1bScsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAn YmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAndGFwJzogeworICAgICdlbnYnOiB7 CisgICAgICAgJ2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzJzogZ2V0X29wdGlvbignaW5qZWN0aW9u X3BvaW50cycpID8gJ3llcycgOiAnbm8nLAorICAgIH0sCisgICAgJ3Rlc3RzJzogWworICAgICAg J3QvMDAxX3BhcmFsbGVsX2F1dG92YWN1dW0ucGwnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRv dmFjdXVtLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdC8wMDFfcGFyYWxs ZWxfYXV0b3ZhY3V1bS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MDM2NDAxOWQ1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS90LzAwMV9wYXJhbGxlbF9hdXRvdmFjdXVtLnBsCkBAIC0wLDAgKzEsMTkxIEBACisj IFRlc3QgcGFyYWxsZWwgYXV0b3ZhY3V1bSBiZWhhdmlvcgorCit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVfaW5qZWN0 aW9uX3BvaW50c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0aW9uIHBv aW50cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIEJlZm9yZSBlYWNoIHRl c3Qgd2Ugc2hvdWxkIGRpc2FibGUgYXV0b3ZhY3V1bSBmb3IgJ3Rlc3RfYXV0b3ZhYycgdGFibGUg YW5kCisjIGdlbmVyYXRlIHNvbWUgZGVhZCB0dXBsZXMgaW4gaXQuIFJldHVybnMgdGhlIGN1cnJl bnQgYXV0b3ZhY3V1bV9jb3VudCBvZgorIyB0aGUgdGFibGUgdHNldF9hdXRvdmFjLgorc3ViIHBy ZXBhcmVfZm9yX25leHRfdGVzdAoreworCW15ICgkbm9kZSwgJHRlc3RfbnVtYmVyKSA9IEBfOwor CisJJG5vZGUtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXF7CisJCUFMVEVSIFRBQkxFIHRl c3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKKwkJVVBEQVRFIHRl c3RfYXV0b3ZhYyBTRVQgY29sXzEgPSAkdGVzdF9udW1iZXI7CisJfSk7CisKKwlteSAkY291bnQg PSAkbm9kZS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxcXsKKwkJU0VMRUNUIGF1dG92YWN1 dW1fY291bnQgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAndGVzdF9h dXRvdmFjJworCX0pOworCisJcmV0dXJuICRjb3VudDsKK30KKworIyBXYWl0IGZvciB0aGUgdGFi bGUgdG8gYmUgdmFjdXVtZWQgYnkgYW4gYXV0b3ZhY3V1bSB3b3JrZXIuCitzdWIgd2FpdF9mb3Jf YXV0b3ZhY3V1bV9jb21wbGV0ZQoreworCW15ICgkbm9kZSwgJG9sZF9jb3VudCkgPSBAXzsKKwor CSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBxcXsKKwkJU0VMRUNUIGF1 dG92YWN1dW1fY291bnQgPiAkb2xkX2NvdW50IEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVS RSByZWxuYW1lID0gJ3Rlc3RfYXV0b3ZhYycKKwl9KTsKK30KKworbXkgJHBzcWxfb3V0OworCitt eSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbWFpbicpOworJG5vZGUt PmluaXQ7CisKKyMgQ29uZmlndXJlIHBvc3RncmVzLCBzbyBpdCBjYW4gbGF1bmNoIHBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2VycywgbG9nIGFsbAorIyBpbmZvcm1hdGlvbiB3ZSBhcmUgaW50ZXJl c3RlZCBpbiBhbmQgYXV0b3ZhY3V1bSB3b3JrcyBmcmVxdWVudGx5Ciskbm9kZS0+YXBwZW5kX2Nv bmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxeworCW1heF93b3JrZXJfcHJvY2Vzc2VzID0gMjAK KwltYXhfcGFyYWxsZWxfd29ya2VycyA9IDIwCisJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29y a2VycyA9IDQKKwlsb2dfbWluX21lc3NhZ2VzID0gZGVidWcyCisJYXV0b3ZhY3V1bV9uYXB0aW1l ID0gJzFzJworCW1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemUgPSAwCit9KTsKKyRub2RlLT5z dGFydDsKKworIyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgaXMgYXZh aWxhYmxlLCBhcyBpdCBtYXkgYmUKKyMgcG9zc2libGUgdGhhdCB0aGlzIHNjcmlwdCBpcyBydW4g d2l0aCBpbnN0YWxsY2hlY2ssIHdoZXJlIHRoZSBtb2R1bGUKKyMgd291bGQgbm90IGJlIGluc3Rh bGxlZCBieSBkZWZhdWx0LgoraWYgKCEkbm9kZS0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25f cG9pbnRzJykpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnRXh0ZW5zaW9uIGluamVjdGlvbl9wb2lu dHMgbm90IGluc3RhbGxlZCc7Cit9CisKKyMgQ3JlYXRlIGFsbCBmdW5jdGlvbnMgbmVlZGVkIGZv ciB0ZXN0aW5nCiskbm9kZS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBF WFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK30pOworCitteSAkaW5kZXhlc19udW0gPSAzOwor bXkgJGluaXRpYWxfcm93c19udW0gPSAxMF8wMDA7CitteSAkYXV0b3ZhY3V1bV9wYXJhbGxlbF93 b3JrZXJzID0gMjsKKworIyBDcmVhdGUgdGFibGUgYW5kIGZpbGwgaXQgd2l0aCBzb21lIGRhdGEK KyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFRBQkxFIHRlc3Rf YXV0b3ZhYyAoCisJCWlkIFNFUklBTCBQUklNQVJZIEtFWSwKKwkJY29sXzEgSU5URUdFUiwgIGNv bF8yIElOVEVHRVIsICBjb2xfMyBJTlRFR0VSLCAgY29sXzQgSU5URUdFUgorCSkgV0lUSCAoYXV0 b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gJGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycywK KwkJCWxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9IDApOworCisJSU5TRVJUIElOVE8gdGVz dF9hdXRvdmFjCisJU0VMRUNUCisJCWcgQVMgY29sMSwKKwkJZyArIDEgQVMgY29sMiwKKwkJZyAr IDIgQVMgY29sMywKKwkJZyArIDMgQVMgY29sNAorCUZST00gZ2VuZXJhdGVfc2VyaWVzKDEsICRp bml0aWFsX3Jvd3NfbnVtKSBBUyBnOworfSk7CisKKyMgQ3JlYXRlIHNwZWNpZmllZCBudW1iZXIg b2YgYi10cmVlIGluZGV4ZXMgb24gdGhlIHRhYmxlCiskbm9kZS0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxeworCURPIFwkXCQKKwlERUNMQVJFCisJCWkgSU5URUdFUjsKKwlCRUdJTgorCQlG T1IgaSBJTiAxLi4kaW5kZXhlc19udW0gTE9PUAorCQkJRVhFQ1VURSBmb3JtYXQoJ0NSRUFURSBJ TkRFWCBpZHhfY29sX1wlcyBPTiB0ZXN0X2F1dG92YWMgKGNvbF9cJXMpOycsIGksIGkpOworCQlF TkQgTE9PUDsKKwlFTkQgXCRcJDsKK30pOworCisjIFRlc3QgMSA6CisjIE91ciB0YWJsZSBoYXMg ZW5vdWdoIGluZGV4ZXMgYW5kIGFwcHJvcHJpYXRlIHJlbG9wdGlvbnMsIHNvIGF1dG92YWN1dW0g bXVzdAorIyBiZSBhYmxlIHRvIHByb2Nlc3MgaXQgaW4gcGFyYWxsZWwgbW9kZS4gSnVzdCBjaGVj ayBpZiBpdCBjYW4gZG8gaXQuCisKK215ICRhdl9jb3VudCA9IHByZXBhcmVfZm9yX25leHRfdGVz dCgkbm9kZSwgMSk7CitteSAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOworCiskbm9k ZS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworCUFMVEVSIFRBQkxFIHRlc3RfYXV0b3Zh YyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOworfSk7CisKKyMgV2FpdCB1bnRpbCB0 aGUgcGFyYWxsZWwgYXV0b3ZhY3V1bSBvbiB0YWJsZSBpcyBjb21wbGV0ZWQuIEF0IHRoZSBzYW1l IHRpbWUsCisjIHdlIGNoZWNrIHRoYXQgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBwYXJhbGxlbCB3 b3JrZXJzIGhhcyBiZWVuIHN0YXJ0ZWQuCit3YWl0X2Zvcl9hdXRvdmFjdXVtX2NvbXBsZXRlKCRu b2RlLCAkYXZfY291bnQpOworb2soICRub2RlLT5sb2dfY29udGFpbnMoCisJCXFyL3BhcmFsbGVs IHdvcmtlcnM6IGluZGV4IHZhY3V1bTogMiBwbGFubmVkLCAyIGxhdW5jaGVkIGluIHRvdGFsLywK KwkJJGxvZ19vZmZzZXQpKTsKKworIyBUZXN0IDI6CisjIENoZWNrIHdoZXRoZXIgcGFyYWxsZWwg YXV0b3ZhY3V1bSBsZWFkZXIgY2FuIHByb3BhZ2F0ZSBjb3N0LWJhc2VkIHBhcmFtZXRlcnMKKyMg dG8gdGhlIHBhcmFsbGVsIHdvcmtlcnMuCisKKyRhdl9jb3VudCA9IHByZXBhcmVfZm9yX25leHRf dGVzdCgkbm9kZSwgMik7CiskbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOworCiskbm9k ZS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgnYXV0b3ZhY3V1bS1zdGFydC1wYXJhbGxlbC12YWN1dW0nLCAnd2FpdCcpOworCVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnYXV0b3ZhY3V1bS1sZWFkZXItYmVmb3JlLWlu ZGV4ZXMtcHJvY2Vzc2luZycsICd3YWl0Jyk7CisKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMg U0VUIChhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAxLCBhdXRvdmFjdXVtX2VuYWJsZWQg PSB0cnVlKTsKK30pOworCisjIFdhaXQgdW50aWwgcGFyYWxsZWwgYXV0b3ZhY3V1bSBpcyBpbml0 ZWQKKyRub2RlLT53YWl0X2Zvcl9ldmVudCgnYXV0b3ZhY3V1bSB3b3JrZXInLAorCSdhdXRvdmFj dXVtLXN0YXJ0LXBhcmFsbGVsLXZhY3V1bScpOworCisjIFVwZGF0ZSB0aGUgc2hhcmVkIGNvc3Qt YmFzZWQgZGVsYXkgcGFyYW1ldGVycy4KKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXF7CisJQUxURVIgU1lTVEVNIFNFVCB2YWN1dW1fY29zdF9saW1pdCA9IDUwMDsKKwlBTFRFUiBT WVNURU0gU0VUIHZhY3V1bV9jb3N0X3BhZ2VfbWlzcyA9IDEwOworCUFMVEVSIFNZU1RFTSBTRVQg dmFjdXVtX2Nvc3RfcGFnZV9kaXJ0eSA9IDEwOworCUFMVEVSIFNZU1RFTSBTRVQgdmFjdXVtX2Nv c3RfcGFnZV9oaXQgPSAxMDsKKwlTRUxFQ1QgcGdfcmVsb2FkX2NvbmYoKTsKK30pOworCisjIFJl c3VtZSB0aGUgbGVhZGVyIHByb2Nlc3MgdG8gdXBkYXRlIHRoZSBzaGFyZWQgcGFyYW1ldGVycyBk dXJpbmcgaGVhcCBzY2FuIChpLmUuCisjIHZhY3V1bV9kZWxheV9wb2ludCgpIGlzIGNhbGxlZCkg YW5kIGxhdW5jaCBhIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXIsIGJ1dCBpdCBzdG9wcworIyBiZWZv cmUgdmFjdXVtaW5nIGluZGV4ZXMgZHVlIHRvIHRoZSBpbmplY3Rpb24gcG9pbnQuCiskbm9kZS0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dh a2V1cCgnYXV0b3ZhY3V1bS1zdGFydC1wYXJhbGxlbC12YWN1dW0nKTsKK30pOworJG5vZGUtPndh aXRfZm9yX2V2ZW50KCdhdXRvdmFjdXVtIHdvcmtlcicsCisJJ2F1dG92YWN1dW0tbGVhZGVyLWJl Zm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnKTsKKworIyBDaGVjayB3aGV0aGVyIHBhcmFsbGVsIHdv cmtlciBzdWNjZXNzZnVsbHkgdXBkYXRlZCBhbGwgcGFyYW1ldGVycyBkdXJpbmcKKyMgaW5kZXgg cHJvY2Vzc2luZworJG5vZGUtPndhaXRfZm9yX2xvZygKKwlxci9wYXJhbGxlbCBhdXRvdmFjdXVt IHdvcmtlciB1cGRhdGVkIGNvc3QgcGFyYW1zOiBjb3N0X2xpbWl0PTUwMCwgY29zdF9kZWxheT0y LCBjb3N0X3BhZ2VfbWlzcz0xMCwgY29zdF9wYWdlX2RpcnR5PTEwLCBjb3N0X3BhZ2VfaGl0PTEw LywKKwkkbG9nX29mZnNldCk7CisKKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7 CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdhdXRvdmFjdXVtLWxlYWRlci1iZWZv cmUtaW5kZXhlcy1wcm9jZXNzaW5nJyk7Cit9KTsKKword2FpdF9mb3JfYXV0b3ZhY3V1bV9jb21w bGV0ZSgkbm9kZSwgJGF2X2NvdW50KTsKKworIyBDbGVhbnVwCiskbm9kZS0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsIHFxeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnYXV0b3Zh Y3V1bS1zdGFydC1wYXJhbGxlbC12YWN1dW0nKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19k ZXRhY2goJ2F1dG92YWN1dW0tbGVhZGVyLWJlZm9yZS1pbmRleGVzLXByb2Nlc3NpbmcnKTsKK30p OworCiskbm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCBkYmJlYzg0YjIyMi4uZTNiMWNiYTUyODkgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC0yMDk0LDYgKzIwOTQsNyBAQCBQVkluZFN0YXRzCiBQVkluZFZhY1N0YXR1cwogUFZP SUQKIFBWU2hhcmVkCitQVlNoYXJlZENvc3RQYXJhbXMKIFBWV29ya2VyVXNhZ2UKIFBWV29ya2Vy U3RhdHMKIFBYX0FsaWFzCi0tIAoyLjUzLjAKCg== --000000000000e9b29e064de0fd78--