Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cpnhD-0001nG-TJ for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Mar 2017 03:09:24 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1cpnhD-0001Gz-2r for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Mar 2017 03:09:23 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cpnem-0006pG-J1 for pgsql-hackers@postgresql.org; Mon, 20 Mar 2017 03:06:53 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cpnei-0007uN-OJ for pgsql-hackers@postgresql.org; Mon, 20 Mar 2017 03:06:51 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 76DE52086C; Sun, 19 Mar 2017 23:06:47 -0400 (EDT) Received: from frontend1 ([10.202.2.160]) by compute7.internal (MEProxy); Sun, 19 Mar 2017 23:06:47 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=fm1; bh=4fbUL84bkS0dsnpxdB A2ELIOysE=; b=o4Y1+ATYDmbEgf1TKHPJ/vf8o6LGP8twkl7mOcoGYxuO9isDav lYpQIHYPYveHqXcBDbBJxgrdvBQFbxWNoaf+13gvvCiC8bpmKOsKo79r/uwk5kEQ YiqvFCubFji/KnArkL4/hHtTGlnI5BD2BlXtmxyEmmG517i0nNzVRCw5S1sNfHWX KN3oSpQldawPAi1FFanmuHtItJmBV2+4v/SCXi2myJ07OGOlc2NnO1tQXOXZ+CIr zP69vchYG8F0mHxnu8cP2XUZjUBhbcG10+Uhh/enHQ/R+6sL6qSWiI9BKURxXZua gIFY28AHZI/zHWWGjV2Qw7onOShO+j4+4M9g== X-ME-Sender: X-Sasl-enc: gtI/Go0TorqUECfcQ1FgxV1mF0/ChB9kqkh9GtMxhJ2n 1489979206 Received: from april.local (c-73-13-66-39.hsd1.pa.comcast.net [73.13.66.39]) by mail.messagingengine.com (Postfix) with ESMTPA id E206E7E186; Sun, 19 Mar 2017 23:06:46 -0400 (EDT) Subject: Re: ICU integration To: Andreas Karlsson , pgsql-hackers References: <85364fde-091f-bbc0-fec2-e3ede39840a6@2ndquadrant.com> <3a88fa29-275b-f547-9957-86d4b2cd68db@2ndquadrant.com> <48b736bd-e589-6e71-3fd1-2d058c319c66@2ndquadrant.com> <47e95371-2f86-d5b7-8dd3-88944cd14b94@proxel.se> <5291804b-169e-3ba9-fdaf-fae8e7d2d959@2ndquadrant.com> <29b8c74d-4029-b7f4-1dae-6e622e9ce70b@proxel.se> From: Peter Eisentraut Organization: 2ndQuadrant Message-ID: <272a46ca-4596-563d-1d9c-7d08a0d35006@2ndquadrant.com> Date: Sun, 19 Mar 2017 23:06:46 -0400 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <29b8c74d-4029-b7f4-1dae-6e622e9ce70b@proxel.se> Content-Type: multipart/mixed; boundary="------------3A889A7CF9D8FDDFABCAE8BC" X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------3A889A7CF9D8FDDFABCAE8BC Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit On 3/19/17 18:31, Andreas Karlsson wrote: > Ok, I applied to patch again and ran the tests. I get a test failure on > make check-world in the pg_dump tests but it can be fixed with the below. Fixed. This was a new pg_dump test that had been added in the meantime. > I believe you are mistaken. The locale "sv" is just an alias for > "sv-u-standard" as far as I can tell. See the definition of the Swedish > locale > (http://source.icu-project.org/repos/icu/trunk/icu4c/source/data/coll/sv.txt) > and there are just three collations: reformed (default), standard, > search (plus eot and emoji which are inherited). I have filed bug about this. I don't think we can work around this by simply ignoring the "standard" variant. For example, the URL you show indicates that the default variant for "sv" is "reformed", not "standard". > I am also quite annoyed at col-emoji and col-eor (European Ordering > Rules). They are defined at the root and inherited by all languages, but > no language modifies col-emoji for their needs which makes it a foot > gun. See the Danish sorting example below where at least I expected the > same order. For col-eor it makes a bit more sense since I would expect > the locales en_GB-u-col-eot and sv_SE-u-col-eot to collate exactly the same. I think this is just the way the inheritance of locales works there. If the root has a variant and the more specific locale doesn't, then if you specify the variant, it gets pulled from the root. It is a bit dubious. Arguably, either the customizations of the specific locale should be applied to all variants, or ucol_getKeywordValuesForLocale() shouldn't return them, or both. Perhaps another bug report. >>> - I get an error when creating a new locale. >>> >>> #CREATE COLLATION sv2 (LOCALE = 'sv'); >>> ERROR: could not create locale "sv": Success >>> >>> # CREATE COLLATION sv2 (LOCALE = 'sv'); >>> ERROR: could not create locale "sv": Resource temporarily unavailable >>> Time: 1.109 ms >> >> Hmm, that's pretty straightforward code. What is your operating system? >> What are the build options? Does it work without this patch? > > This issue is unrelated to ICU. I had forgot to specify provider so the > eorrs are correct (even though that the value of the errno is weird). Perhaps we can do something about this anyway. What is our OS and version? >>> - I do not know what the policy for formatting the documentation is, but >>> some of the paragraphs are in need of re-wrapping. >> >> Hmm, I don't see anything terribly bad. > > Maybe it is just me who is sensitive to wrapping, but her is an example > which sticks out to me with its 98 character line. I see. Fixed some of those. >>> - The patch adds "FIXME" in the below. Is that a left-over from >>> development or something which still needs doing? >>> >>> /* >>> * Also forbid matching an any-encoding entry. This test of course >>> is not >>> * backed up by the unique index, but it's not a problem since we don't >>> - * support adding any-encoding entries after initdb. >>> + * support adding any-encoding entries after initdb. FIXME >>> */ >> >> I had mentioned that upthread. It technically needs "doing" as you say, >> but it's not clear how and it's not terribly important, arguably. > > The comment is no longer true since for ICU we can do that (it is not an > issue though). At the very least this comment needs to be updated. Fixed that by some additional checks and using ShareRowExclusiveLock in CREATE COLLATION to prevent concurrent changes. New patch attached. I have also implemented additional facilities to check collations needing refresh after an upgrade (see ALTER COLLATION ref page), and some necessary bits for that in pg_dump. Some additional support in pg_upgrade could be useful, but I think we don't need that until people are upgrading *from* PG10. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------3A889A7CF9D8FDDFABCAE8BC Content-Type: application/x-patch; name="v7-0001-ICU-support.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v7-0001-ICU-support.patch" RnJvbSBiNjZjMDU4YWFmMjkxNDlhYzExZTAwMjVkZDc4ZTMzN2Q2NDE1Y2E1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRy YXV0IDxwZXRlcl9lQGdteC5uZXQ+CkRhdGU6IFRodSwgMTYgRmViIDIwMTcg MDA6MDY6MTYgLTA1MDAKU3ViamVjdDogW1BBVENIIHY3XSBJQ1Ugc3VwcG9y dAoKQWRkIGEgY29sdW1uIGNvbGxwcm92aWRlciB0byBwZ19jb2xsYXRpb24g dGhhdCBkZXRlcm1pbmVzIHdoaWNoIGxpYnJhcnkKcHJvdmlkZXMgdGhlIGNv bGxhdGlvbiBkYXRhLiAgVGhlIGV4aXN0aW5nIGNob2ljZXMgYXJlIGRlZmF1 bHQgYW5kIGxpYmMsCmFuZCB0aGlzIGFkZHMgYW4gaWN1IGNob2ljZSwgd2hp Y2ggdXNlcyB0aGUgSUNVNEMgbGlicmFyeS4KClRoZSBwZ19sb2NhbGVfdCB0 eXBlIGlzIGNoYW5nZWQgdG8gYSB1bmlvbiB0aGF0IGNvbnRhaW5zIHRoZQpw cm92aWRlci1zcGVjaWZpYyBsb2NhbGUgaGFuZGxlcy4gIFVzZXJzIG9mIGxv Y2FsZSBpbmZvcm1hdGlvbiBhcmUKY2hhbmdlZCB0byBsb29rIGludG8gdGhh dCBzdHJ1Y3QgZm9yIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGUgdG8gdXNlLgoK QWxzbyBhZGQgYSBjb2xsdmVyc2lvbiBjb2x1bW4gdGhhdCByZWNvcmRzIHRo ZSB2ZXJzaW9uIG9mIHRoZSBjb2xsYXRpb24Kd2hlbiBpdCBpcyBjcmVhdGVk LCBhbmQgY2hlY2sgYXQgcnVuIHRpbWUgd2hldGhlciBpdCBpcyBzdGlsbCB0 aGUgc2FtZS4KVGhpcyBkZXRlY3RzIHBvdGVudGlhbGx5IGluY29tcGF0aWJs ZSBsaWJyYXJ5IHVwZ3JhZGVzIHRoYXQgY2FuIGNvcnJ1cHQKaW5kZXhlcyBh bmQgb3RoZXIgc3RydWN0dXJlcy4gIFRoaXMgaXMgY3VycmVudGx5IG9ubHkg c3VwcG9ydGVkIGJ5CklDVS1wcm92aWRlZCBjb2xsYXRpb25zLgoKaW5pdGRi IGluaXRpYWxpemVzIHRoZSBkZWZhdWx0IGNvbGxhdGlvbiBzZXQgYXMgYmVm b3JlIGZyb20gdGhlIGBsb2NhbGUKLWFgIG91dHB1dCBidXQgYWxzbyBhZGRz IGFsbCBhdmFpbGFibGUgSUNVIGxvY2FsZXMgd2l0aCBhICIteC1pY3UiCmFw cGVuZGVkLgoKQ3VycmVudGx5LCBJQ1UtcHJvdmlkZWQgY29sbGF0aW9ucyBj YW4gb25seSBiZSBleHBsaWNpdGx5IG5hbWVkCmNvbGxhdGlvbnMuICBUaGUg Z2xvYmFsIGRhdGFiYXNlIGxvY2FsZXMgYXJlIHN0aWxsIGFsd2F5cyBsaWJj LXByb3ZpZGVkLgotLS0KIGFjbG9jYWwubTQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGNvbmZpZy9wa2cubTQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjc1ICsr KysrKysrKysrKysKIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMzEzICsrKysrKysrKysrKysrCiBjb25m aWd1cmUuaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAzNSArKwogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMTkgKwogZG9jL3NyYy9zZ21sL2NoYXJz ZXQuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNzcgKysrKysr Ky0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDE3ICsKIGRvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24u c2dtbCAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsKIGRvYy9zcmMvc2dt bC9tdmNjLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAz ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2NvbGxhdGlvbi5zZ21sICAg ICAgICAgICAgICB8ICA1NSArKysKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X2NvbGxhdGlvbi5zZ21sICAgICAgICAgICAgIHwgIDM3ICstCiBzcmMvTWFr ZWZpbGUuZ2xvYmFsLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNCArCiBzcmMvYmFja2VuZC9NYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19jb2xsYXRpb24uYyAgICAgICAgICAgICAgICAgfCAgNTIgKystCiBzcmMv YmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMgICAgICAgICAgICAg ICB8IDI4OCArKysrKysrKysrKystCiBzcmMvYmFja2VuZC9jb21tb24ubWsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFj a2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyAgICAgICAgICAgICAgICAgICAgICB8 ICAxMyArCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAg ICAgICAgICAgICAgICB8ICAxMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxOCArLQogc3JjL2Jh Y2tlbmQvcmVnZXgvcmVnY19wZ19sb2NhbGUuYyAgICAgICAgICAgICAgICAg fCAxMTAgKysrLS0KIHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9mb3JtYXR0aW5nLmMgICAgICAgICAgICAgICAgIHwgNDUzICsrKysr KysrKysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2Uu YyAgICAgICAgICAgICAgICAgICAgICAgfCAgNTMgKystCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgICAgICAgICAgICAgICAgICB8IDI2 NiArKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5j cy5jICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvdmFybGVuYS5jICAgICAgICAgICAgICAgICAgICB8IDE3OSAr KysrKystLQogc3JjL2JhY2tlbmQvdXRpbHMvbWIvZW5jbmFtZXMuYyAgICAg ICAgICAgICAgICAgICAgfCAgNzYgKysrKwogc3JjL2Jpbi9pbml0ZGIvaW5p dGRiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDc1ICsrKy0KIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1w LnBsICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmluL3BzcWwv ZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyAr LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24uaCAgICAgICAg ICAgICAgICAgfCAgMjUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29s bGF0aW9uX2ZuLmggICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5oICAgICAgICAgICAgICAgICAgICAgIHwgICAz ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuaCAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL21iL3BnX3djaGFyLmgg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRl L25vZGVzL25vZGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAg ICAgICAgICAgIHwgIDExICsKIHNyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmlu ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRl L3V0aWxzL3BnX2xvY2FsZS5oICAgICAgICAgICAgICAgICAgICAgIHwgIDMy ICstCiBzcmMvdGVzdC9yZWdyZXNzL0dOVW1ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMyArCiAuLi4ve2NvbGxhdGUubGludXgudXRmOC5v dXQgPT4gY29sbGF0ZS5pY3Uub3V0fSAgICB8IDIwNCArKysrKystLS0tCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUubGludXgudXRmOC5v dXQgICB8ICA4MCArKystCiAuLi4ve2NvbGxhdGUubGludXgudXRmOC5zcWwg PT4gY29sbGF0ZS5pY3Uuc3FsfSAgICB8IDEwNSArKystLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29sbGF0ZS5saW51eC51dGY4LnNxbCAgICAgICAgfCAg MzIgKysKIDQ1IGZpbGVzIGNoYW5nZWQsIDI1NjMgaW5zZXJ0aW9ucygrKSwg NTI0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbmZpZy9w a2cubTQKIGNvcHkgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC97Y29sbGF0 ZS5saW51eC51dGY4Lm91dCA9PiBjb2xsYXRlLmljdS5vdXR9ICg4MCUpCiBj b3B5IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3tjb2xsYXRlLmxpbnV4LnV0Zjgu c3FsID0+IGNvbGxhdGUuaWN1LnNxbH0gKDgwJSkKCmRpZmYgLS1naXQgYS9h Y2xvY2FsLm00IGIvYWNsb2NhbC5tNAppbmRleCA2ZjkzMGI2ZmMxLi41Y2E5 MDJiNmEyIDEwMDY0NAotLS0gYS9hY2xvY2FsLm00CisrKyBiL2FjbG9jYWwu bTQKQEAgLTcsNiArNyw3IEBAIG00X2luY2x1ZGUoW2NvbmZpZy9kb2Nib29r Lm00XSkKIG00X2luY2x1ZGUoW2NvbmZpZy9nZW5lcmFsLm00XSkKIG00X2lu Y2x1ZGUoW2NvbmZpZy9saWJ0b29sLm00XSkKIG00X2luY2x1ZGUoW2NvbmZp Zy9wZXJsLm00XSkKK200X2luY2x1ZGUoW2NvbmZpZy9wa2cubTRdKQogbTRf aW5jbHVkZShbY29uZmlnL3Byb2dyYW1zLm00XSkKIG00X2luY2x1ZGUoW2Nv bmZpZy9weXRob24ubTRdKQogbTRfaW5jbHVkZShbY29uZmlnL3RjbC5tNF0p CmRpZmYgLS1naXQgYS9jb25maWcvcGtnLm00IGIvY29uZmlnL3BrZy5tNApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44MmJlYTk2 ZWU3Ci0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnL3BrZy5tNApAQCAtMCww ICsxLDI3NSBAQAorZG5sIHBrZy5tNCAtIE1hY3JvcyB0byBsb2NhdGUgYW5k IHV0aWxpc2UgcGtnLWNvbmZpZy4gICAtKi0gQXV0b2NvbmYgLSotCitkbmwg c2VyaWFsIDExIChwa2ctY29uZmlnLTAuMjkuMSkKK2RubAorZG5sIENvcHly aWdodCDCqSAyMDA0IFNjb3R0IEphbWVzIFJlbW5hbnQgPHNjb3R0QG5ldHNw bGl0LmNvbT4uCitkbmwgQ29weXJpZ2h0IMKpIDIwMTItMjAxNSBEYW4gTmlj aG9sc29uIDxkYm4ubGlzdHNAZ21haWwuY29tPgorZG5sCitkbmwgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKK2RubCBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorZG5sIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCitkbmwgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KK2RubAorZG5sIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLCBidXQKK2RubCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCitkbmwgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBT ZWUgdGhlIEdOVQorZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KK2RubAorZG5sIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCitk bmwgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKK2RubCBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKK2RubCAwMjEx MS0xMzA3LCBVU0EuCitkbmwKK2RubCBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u IHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Citk bmwgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0g dGhhdCBjb250YWlucyBhCitkbmwgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2Vu ZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIK K2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNl IGZvciB0aGUgcmVzdCBvZiB0aGF0CitkbmwgcHJvZ3JhbS4KKworZG5sIFBL R19QUkVSRVEoTUlOLVZFUlNJT04pCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK2RubCBTaW5jZTogMC4yOQorZG5sCitkbmwgVmVyaWZ5IHRoYXQg dGhlIHZlcnNpb24gb2YgdGhlIHBrZy1jb25maWcgbWFjcm9zIGFyZSBhdCBs ZWFzdAorZG5sIE1JTi1WRVJTSU9OLiBVbmxpa2UgUEtHX1BST0dfUEtHX0NP TkZJRywgd2hpY2ggY2hlY2tzIHRoZSB1c2VyJ3MKK2RubCBpbnN0YWxsZWQg dmVyc2lvbiBvZiBwa2ctY29uZmlnLCB0aGlzIGNoZWNrcyB0aGUgZGV2ZWxv cGVyJ3MgdmVyc2lvbgorZG5sIG9mIHBrZy5tNCB3aGVuIGdlbmVyYXRpbmcg Y29uZmlndXJlLgorZG5sCitkbmwgVG8gZW5zdXJlIHRoYXQgdGhpcyBtYWNy byBpcyBkZWZpbmVkLCBhbHNvIGFkZDoKK2RubCBtNF9pZm5kZWYoW1BLR19Q UkVSRVFdLAorZG5sICAgICBbbTRfZmF0YWwoW211c3QgaW5zdGFsbCBwa2ct Y29uZmlnIDAuMjkgb3IgbGF0ZXIgYmVmb3JlIHJ1bm5pbmcgYXV0b2NvbmYv YXV0b2dlbl0pXSkKK2RubAorZG5sIFNlZSB0aGUgIlNpbmNlIiBjb21tZW50 IGZvciBlYWNoIG1hY3JvIHlvdSB1c2UgdG8gc2VlIHdoYXQgdmVyc2lvbgor ZG5sIG9mIHRoZSBtYWNyb3MgeW91IHJlcXVpcmUuCittNF9kZWZ1bihbUEtH X1BSRVJFUV0sCitbbTRfZGVmaW5lKFtQS0dfTUFDUk9TX1ZFUlNJT05dLCBb MC4yOS4xXSkKK200X2lmKG00X3ZlcnNpb25fY29tcGFyZShQS0dfTUFDUk9T X1ZFUlNJT04sIFskMV0pLCAtMSwKKyAgICBbbTRfZmF0YWwoW3BrZy5tNCB2 ZXJzaW9uICQxIG9yIGhpZ2hlciBpcyByZXF1aXJlZCBidXQgXVBLR19NQUNS T1NfVkVSU0lPTlsgZm91bmRdKV0pCitdKWRubCBQS0dfUFJFUkVRCisKK2Ru bCBQS0dfUFJPR19QS0dfQ09ORklHKFtNSU4tVkVSU0lPTl0pCitkbmwgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIFNpbmNlOiAw LjE2CitkbmwKK2RubCBTZWFyY2ggZm9yIHRoZSBwa2ctY29uZmlnIHRvb2wg YW5kIHNldCB0aGUgUEtHX0NPTkZJRyB2YXJpYWJsZSB0bworZG5sIGZpcnN0 IGZvdW5kIGluIHRoZSBwYXRoLiBDaGVja3MgdGhhdCB0aGUgdmVyc2lvbiBv ZiBwa2ctY29uZmlnIGZvdW5kCitkbmwgaXMgYXQgbGVhc3QgTUlOLVZFUlNJ T04uIElmIE1JTi1WRVJTSU9OIGlzIG5vdCBzcGVjaWZpZWQsIDAuOS4wIGlz CitkbmwgdXNlZCBzaW5jZSB0aGF0J3MgdGhlIGZpcnN0IHZlcnNpb24gd2hl cmUgbW9zdCBjdXJyZW50IGZlYXR1cmVzIG9mCitkbmwgcGtnLWNvbmZpZyBl eGlzdGVkLgorQUNfREVGVU4oW1BLR19QUk9HX1BLR19DT05GSUddLAorW200 X3BhdHRlcm5fZm9yYmlkKFteXz9QS0dfW0EtWl9dKyRdKQorbTRfcGF0dGVy bl9hbGxvdyhbXlBLR19DT05GSUcoXyhQQVRIfExJQkRJUnxTWVNST09UX0RJ UnxBTExPV19TWVNURU1fKENGTEFHU3xMSUJTKSkpPyRdKQorbTRfcGF0dGVy bl9hbGxvdyhbXlBLR19DT05GSUdfKERJU0FCTEVfVU5JTlNUQUxMRUR8VE9Q X0JVSUxEX0RJUnxERUJVR19TUEVXKSRdKQorQUNfQVJHX1ZBUihbUEtHX0NP TkZJR10sIFtwYXRoIHRvIHBrZy1jb25maWcgdXRpbGl0eV0pCitBQ19BUkdf VkFSKFtQS0dfQ09ORklHX1BBVEhdLCBbZGlyZWN0b3JpZXMgdG8gYWRkIHRv IHBrZy1jb25maWcncyBzZWFyY2ggcGF0aF0pCitBQ19BUkdfVkFSKFtQS0df Q09ORklHX0xJQkRJUl0sIFtwYXRoIG92ZXJyaWRpbmcgcGtnLWNvbmZpZydz IGJ1aWx0LWluIHNlYXJjaCBwYXRoXSkKKworaWYgdGVzdCAieCRhY19jdl9l bnZfUEtHX0NPTkZJR19zZXQiICE9ICJ4c2V0IjsgdGhlbgorCUFDX1BBVEhf VE9PTChbUEtHX0NPTkZJR10sIFtwa2ctY29uZmlnXSkKK2ZpCitpZiB0ZXN0 IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKwlfcGtnX21pbl92ZXJzaW9uPW00 X2RlZmF1bHQoWyQxXSwgWzAuOS4wXSkKKwlBQ19NU0dfQ0hFQ0tJTkcoW3Br Zy1jb25maWcgaXMgYXQgbGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lv bl0pCisJaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJz aW9uICRfcGtnX21pbl92ZXJzaW9uOyB0aGVuCisJCUFDX01TR19SRVNVTFQo W3llc10pCisJZWxzZQorCQlBQ19NU0dfUkVTVUxUKFtub10pCisJCVBLR19D T05GSUc9IiIKKwlmaQorZmlbXWRubAorXSlkbmwgUEtHX1BST0dfUEtHX0NP TkZJRworCitkbmwgUEtHX0NIRUNLX0VYSVNUUyhNT0RVTEVTLCBbQUNUSU9O LUlGLUZPVU5EXSwgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQorZG5sIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW5jZTogMC4xOAorZG5sCitkbmwg Q2hlY2sgdG8gc2VlIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIHNldCBvZiBtb2R1 bGVzIGV4aXN0cy4gU2ltaWxhciB0bworZG5sIFBLR19DSEVDS19NT0RVTEVT KCksIGJ1dCBkb2VzIG5vdCBzZXQgdmFyaWFibGVzIG9yIHByaW50IGVycm9y cy4KK2RubAorZG5sIFBsZWFzZSByZW1lbWJlciB0aGF0IG00IGV4cGFuZHMg QUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCitkbmwgb25seSBh dCB0aGUgZmlyc3Qgb2NjdXJlbmNlIGluIGNvbmZpZ3VyZS5hYywgc28gaWYg dGhlIGZpcnN0IHBsYWNlCitkbmwgaXQncyBjYWxsZWQgbWlnaHQgYmUgc2tp cHBlZCAoc3VjaCBhcyBpZiBpdCBpcyB3aXRoaW4gYW4gImlmIiwgeW91Citk bmwgaGF2ZSB0byBjYWxsIFBLR19DSEVDS19FWElTVFMgbWFudWFsbHkKK0FD X0RFRlVOKFtQS0dfQ0hFQ0tfRVhJU1RTXSwKK1tBQ19SRVFVSVJFKFtQS0df UFJPR19QS0dfQ09ORklHXSlkbmwKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklH IiAmJiBcCisgICAgQUNfUlVOX0xPRyhbJFBLR19DT05GSUcgLS1leGlzdHMg LS1wcmludC1lcnJvcnMgIiQxIl0pOyB0aGVuCisgIG00X2RlZmF1bHQoWyQy XSwgWzpdKQorbTRfaWZ2YWxuKFskM10sIFtlbHNlCisgICQzXSlkbmwKK2Zp XSkKKworZG5sIF9QS0dfQ09ORklHKFtWQVJJQUJMRV0sIFtDT01NQU5EXSwg W01PRFVMRVNdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorZG5sIEludGVybmFsIHdyYXBwZXIgY2FsbGlu ZyBwa2ctY29uZmlnIHZpYSBQS0dfQ09ORklHIGFuZCBzZXR0aW5nCitkbmwg cGtnX2ZhaWxlZCBiYXNlZCBvbiB0aGUgcmVzdWx0LgorbTRfZGVmaW5lKFtf UEtHX0NPTkZJR10sCitbaWYgdGVzdCAtbiAiJCQxIjsgdGhlbgorICAgIHBr Z19jdl9bXSQxPSIkJDEiCisgZWxpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7 IHRoZW4KKyAgICBQS0dfQ0hFQ0tfRVhJU1RTKFskM10sCisgICAgICAgICAg ICAgICAgICAgICBbcGtnX2N2X1tdJDE9YCRQS0dfQ09ORklHIC0tW10kMiAi JDMiIDI+L2Rldi9udWxsYAorCQkgICAgICB0ZXN0ICJ4JD8iICE9ICJ4MCIg JiYgcGtnX2ZhaWxlZD15ZXMgXSwKKwkJICAgICBbcGtnX2ZhaWxlZD15ZXNd KQorIGVsc2UKKyAgICBwa2dfZmFpbGVkPXVudHJpZWQKK2ZpW11kbmwKK10p ZG5sIF9QS0dfQ09ORklHCisKK2RubCBfUEtHX1NIT1JUX0VSUk9SU19TVVBQ T1JURUQKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBJ bnRlcm5hbCBjaGVjayB0byBzZWUgaWYgcGtnLWNvbmZpZyBzdXBwb3J0cyBz aG9ydCBlcnJvcnMuCitBQ19ERUZVTihbX1BLR19TSE9SVF9FUlJPUlNfU1VQ UE9SVEVEXSwKK1tBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkK K2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAw LjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRl ZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9y dGVkPW5vCitmaVtdZG5sCitdKWRubCBfUEtHX1NIT1JUX0VSUk9SU19TVVBQ T1JURUQKKworCitkbmwgUEtHX0NIRUNLX01PRFVMRVMoVkFSSUFCTEUtUFJF RklYLCBNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5EXSwKK2RubCAgIFtBQ1RJ T04tSUYtTk9ULUZPVU5EXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5s IFNpbmNlOiAwLjQuMAorZG5sCitkbmwgTm90ZSB0aGF0IGlmIHRoZXJlIGlz IGEgcG9zc2liaWxpdHkgdGhlIGZpcnN0IGNhbGwgdG8KK2RubCBQS0dfQ0hF Q0tfTU9EVUxFUyBtaWdodCBub3QgaGFwcGVuLCB5b3Ugc2hvdWxkIGJlIHN1 cmUgdG8gaW5jbHVkZSBhbgorZG5sIGV4cGxpY2l0IGNhbGwgdG8gUEtHX1BS T0dfUEtHX0NPTkZJRyBpbiB5b3VyIGNvbmZpZ3VyZS5hYworQUNfREVGVU4o W1BLR19DSEVDS19NT0RVTEVTXSwKK1tBQ19SRVFVSVJFKFtQS0dfUFJPR19Q S0dfQ09ORklHXSlkbmwKK0FDX0FSR19WQVIoWyQxXVtfQ0ZMQUdTXSwgW0Mg Y29tcGlsZXIgZmxhZ3MgZm9yICQxLCBvdmVycmlkaW5nIHBrZy1jb25maWdd KWRubAorQUNfQVJHX1ZBUihbJDFdW19MSUJTXSwgW2xpbmtlciBmbGFncyBm b3IgJDEsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZ10pZG5sCisKK3BrZ19mYWls ZWQ9bm8KK0FDX01TR19DSEVDS0lORyhbZm9yICQxXSkKKworX1BLR19DT05G SUcoWyQxXVtfQ0ZMQUdTXSwgW2NmbGFnc10sIFskMl0pCitfUEtHX0NPTkZJ RyhbJDFdW19MSUJTXSwgW2xpYnNdLCBbJDJdKQorCittNF9kZWZpbmUoW19Q S0dfVEVYVF0sIFtBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHNldCB0aGUgZW52 aXJvbm1lbnQgdmFyaWFibGVzICQxW11fQ0ZMQUdTCithbmQgJDFbXV9MSUJT IHRvIGF2b2lkIHRoZSBuZWVkIHRvIGNhbGwgcGtnLWNvbmZpZy4KK1NlZSB0 aGUgcGtnLWNvbmZpZyBtYW4gcGFnZSBmb3IgbW9yZSBkZXRhaWxzLl0pCisK K2lmIHRlc3QgJHBrZ19mYWlsZWQgPSB5ZXM7IHRoZW4KKyAgIAlBQ19NU0df UkVTVUxUKFtub10pCisgICAgICAgIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBP UlRFRAorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBw b3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgICQxW11fUEtHX0VSUk9SUz1g JFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1wcmludC1lcnJvcnMgLS1j ZmxhZ3MgLS1saWJzICIkMiIgMj4mMWAKKyAgICAgICAgZWxzZSAKKwkgICAg ICAgICQxW11fUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1wcmludC1lcnJv cnMgLS1jZmxhZ3MgLS1saWJzICIkMiIgMj4mMWAKKyAgICAgICAgZmkKKwkj IFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdo ZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkJDFbXV9QS0dfRVJST1JTIiA+JkFT X01FU1NBR0VfTE9HX0ZECisKKwltNF9kZWZhdWx0KFskNF0sIFtBQ19NU0df RVJST1IoCitbUGFja2FnZSByZXF1aXJlbWVudHMgKCQyKSB3ZXJlIG5vdCBt ZXQ6CisKKyQkMV9QS0dfRVJST1JTCisKK0NvbnNpZGVyIGFkanVzdGluZyB0 aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHlv dQoraW5zdGFsbGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJkIHByZWZp eC4KKworX1BLR19URVhUXSlbXWRubAorICAgICAgICBdKQorZWxpZiB0ZXN0 ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorICAgICAJQUNfTVNHX1JF U1VMVChbbm9dKQorCW00X2RlZmF1bHQoWyQ0XSwgW0FDX01TR19GQUlMVVJF KAorW1RoZSBwa2ctY29uZmlnIHNjcmlwdCBjb3VsZCBub3QgYmUgZm91bmQg b3IgaXMgdG9vIG9sZC4gIE1ha2Ugc3VyZSBpdAoraXMgaW4geW91ciBQQVRI IG9yIHNldCB0aGUgUEtHX0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0 byB0aGUgZnVsbAorcGF0aCB0byBwa2ctY29uZmlnLgorCitfUEtHX1RFWFQK KworVG8gZ2V0IHBrZy1jb25maWcsIHNlZSA8aHR0cDovL3BrZy1jb25maWcu ZnJlZWRlc2t0b3Aub3JnLz4uXSlbXWRubAorICAgICAgICBdKQorZWxzZQor CSQxW11fQ0ZMQUdTPSRwa2dfY3ZfW10kMVtdX0NGTEFHUworCSQxW11fTElC Uz0kcGtnX2N2X1tdJDFbXV9MSUJTCisgICAgICAgIEFDX01TR19SRVNVTFQo W3llc10pCisJJDMKK2ZpW11kbmwKK10pZG5sIFBLR19DSEVDS19NT0RVTEVT CisKKworZG5sIFBLR19DSEVDS19NT0RVTEVTX1NUQVRJQyhWQVJJQUJMRS1Q UkVGSVgsIE1PRFVMRVMsIFtBQ1RJT04tSUYtRk9VTkRdLAorZG5sICAgW0FD VElPTi1JRi1OT1QtRk9VTkRdKQorZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorZG5sIFNpbmNlOiAwLjI5CitkbmwKK2RubCBDaGVja3MgZm9yIGV4 aXN0ZW5jZSBvZiBNT0RVTEVTIGFuZCBnYXRoZXJzIGl0cyBidWlsZCBmbGFn cyB3aXRoCitkbmwgc3RhdGljIGxpYnJhcmllcyBlbmFibGVkLiBTZXRzIFZB UklBQkxFLVBSRUZJWF9DRkxBR1MgZnJvbSAtLWNmbGFncworZG5sIGFuZCBW QVJJQUJMRS1QUkVGSVhfTElCUyBmcm9tIC0tbGlicy4KK2RubAorZG5sIE5v dGUgdGhhdCBpZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoZSBmaXJzdCBj YWxsIHRvCitkbmwgUEtHX0NIRUNLX01PRFVMRVNfU1RBVElDIG1pZ2h0IG5v dCBoYXBwZW4sIHlvdSBzaG91bGQgYmUgc3VyZSB0bworZG5sIGluY2x1ZGUg YW4gZXhwbGljaXQgY2FsbCB0byBQS0dfUFJPR19QS0dfQ09ORklHIGluIHlv dXIKK2RubCBjb25maWd1cmUuYWMuCitBQ19ERUZVTihbUEtHX0NIRUNLX01P RFVMRVNfU1RBVElDXSwKK1tBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09O RklHXSlkbmwKK19zYXZlX1BLR19DT05GSUc9JFBLR19DT05GSUcKK1BLR19D T05GSUc9IiRQS0dfQ09ORklHIC0tc3RhdGljIgorUEtHX0NIRUNLX01PRFVM RVMoJEApCitQS0dfQ09ORklHPSRfc2F2ZV9QS0dfQ09ORklHW11kbmwKK10p ZG5sIFBLR19DSEVDS19NT0RVTEVTX1NUQVRJQworCisKK2RubCBQS0dfSU5T VEFMTERJUihbRElSRUNUT1JZXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitkbmwgU2luY2U6IDAuMjcKK2RubAorZG5sIFN1YnN0aXR1dGVz IHRoZSB2YXJpYWJsZSBwa2djb25maWdkaXIgYXMgdGhlIGxvY2F0aW9uIHdo ZXJlIGEgbW9kdWxlCitkbmwgc2hvdWxkIGluc3RhbGwgcGtnLWNvbmZpZyAu cGMgZmlsZXMuIEJ5IGRlZmF1bHQgdGhlIGRpcmVjdG9yeSBpcworZG5sICRs aWJkaXIvcGtnY29uZmlnLCBidXQgdGhlIGRlZmF1bHQgY2FuIGJlIGNoYW5n ZWQgYnkgcGFzc2luZworZG5sIERJUkVDVE9SWS4gVGhlIHVzZXIgY2FuIG92 ZXJyaWRlIHRocm91Z2ggdGhlIC0td2l0aC1wa2djb25maWdkaXIKK2RubCBw YXJhbWV0ZXIuCitBQ19ERUZVTihbUEtHX0lOU1RBTExESVJdLAorW200X3B1 c2hkZWYoW3BrZ19kZWZhdWx0XSwgW200X2RlZmF1bHQoWyQxXSwgWycke2xp YmRpcn0vcGtnY29uZmlnJ10pXSkKK200X3B1c2hkZWYoW3BrZ19kZXNjcmlw dGlvbl0sCisgICAgW3BrZy1jb25maWcgaW5zdGFsbGF0aW9uIGRpcmVjdG9y eSBAPDpAXXBrZ19kZWZhdWx0W0A6PkBdKQorQUNfQVJHX1dJVEgoW3BrZ2Nv bmZpZ2Rpcl0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGtnY29u ZmlnZGlyXSwgcGtnX2Rlc2NyaXB0aW9uKV0sLAorICAgIFt3aXRoX3BrZ2Nv bmZpZ2Rpcj1dcGtnX2RlZmF1bHQpCitBQ19TVUJTVChbcGtnY29uZmlnZGly XSwgWyR3aXRoX3BrZ2NvbmZpZ2Rpcl0pCittNF9wb3BkZWYoW3BrZ19kZWZh dWx0XSkKK200X3BvcGRlZihbcGtnX2Rlc2NyaXB0aW9uXSkKK10pZG5sIFBL R19JTlNUQUxMRElSCisKKworZG5sIFBLR19OT0FSQ0hfSU5TVEFMTERJUihb RElSRUNUT1JZXSkKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorZG5sIFNpbmNlOiAwLjI3CitkbmwKK2RubCBTdWJzdGl0dXRlcyB0 aGUgdmFyaWFibGUgbm9hcmNoX3BrZ2NvbmZpZ2RpciBhcyB0aGUgbG9jYXRp b24gd2hlcmUgYQorZG5sIG1vZHVsZSBzaG91bGQgaW5zdGFsbCBhcmNoLWlu ZGVwZW5kZW50IHBrZy1jb25maWcgLnBjIGZpbGVzLiBCeQorZG5sIGRlZmF1 bHQgdGhlIGRpcmVjdG9yeSBpcyAkZGF0YWRpci9wa2djb25maWcsIGJ1dCB0 aGUgZGVmYXVsdCBjYW4gYmUKK2RubCBjaGFuZ2VkIGJ5IHBhc3NpbmcgRElS RUNUT1JZLiBUaGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhyb3VnaCB0aGUKK2Ru bCAtLXdpdGgtbm9hcmNoLXBrZ2NvbmZpZ2RpciBwYXJhbWV0ZXIuCitBQ19E RUZVTihbUEtHX05PQVJDSF9JTlNUQUxMRElSXSwKK1ttNF9wdXNoZGVmKFtw a2dfZGVmYXVsdF0sIFttNF9kZWZhdWx0KFskMV0sIFsnJHtkYXRhZGlyfS9w a2djb25maWcnXSldKQorbTRfcHVzaGRlZihbcGtnX2Rlc2NyaXB0aW9uXSwK KyAgICBbcGtnLWNvbmZpZyBhcmNoLWluZGVwZW5kZW50IGluc3RhbGxhdGlv biBkaXJlY3RvcnkgQDw6QF1wa2dfZGVmYXVsdFtAOj5AXSkKK0FDX0FSR19X SVRIKFtub2FyY2gtcGtnY29uZmlnZGlyXSwKKyAgICBbQVNfSEVMUF9TVFJJ TkcoWy0td2l0aC1ub2FyY2gtcGtnY29uZmlnZGlyXSwgcGtnX2Rlc2NyaXB0 aW9uKV0sLAorICAgIFt3aXRoX25vYXJjaF9wa2djb25maWdkaXI9XXBrZ19k ZWZhdWx0KQorQUNfU1VCU1QoW25vYXJjaF9wa2djb25maWdkaXJdLCBbJHdp dGhfbm9hcmNoX3BrZ2NvbmZpZ2Rpcl0pCittNF9wb3BkZWYoW3BrZ19kZWZh dWx0XSkKK200X3BvcGRlZihbcGtnX2Rlc2NyaXB0aW9uXSkKK10pZG5sIFBL R19OT0FSQ0hfSU5TVEFMTERJUgorCisKK2RubCBQS0dfQ0hFQ0tfVkFSKFZB UklBQkxFLCBNT0RVTEUsIENPTkZJRy1WQVJJQUJMRSwKK2RubCBbQUNUSU9O LUlGLUZPVU5EXSwgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQorZG5sIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBT aW5jZTogMC4yOAorZG5sCitkbmwgUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0 aGUgcGtnLWNvbmZpZyB2YXJpYWJsZSBmb3IgdGhlIGdpdmVuIG1vZHVsZS4K K0FDX0RFRlVOKFtQS0dfQ0hFQ0tfVkFSXSwKK1tBQ19SRVFVSVJFKFtQS0df UFJPR19QS0dfQ09ORklHXSlkbmwKK0FDX0FSR19WQVIoWyQxXSwgW3ZhbHVl IG9mICQzIGZvciAkMiwgb3ZlcnJpZGluZyBwa2ctY29uZmlnXSlkbmwKKwor X1BLR19DT05GSUcoWyQxXSwgW3ZhcmlhYmxlPSJdWyQzXVsiXSwgWyQyXSkK K0FTX1ZBUl9DT1BZKFskMV0sIFtwa2dfY3ZfXVskMV0pCisKK0FTX1ZBUl9J RihbJDFdLCBbIiJdLCBbJDVdLCBbJDRdKWRubAorXSlkbmwgUEtHX0NIRUNL X1ZBUgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4 IGI1Y2RlYmI1MTAuLjQ4MWQ1ZDE1ZTggMTAwNzU1Ci0tLSBhL2NvbmZpZ3Vy ZQorKysgYi9jb25maWd1cmUKQEAgLTcxNSw2ICs3MTUsMTIgQEAga3JiX3Ny dnRhYgogd2l0aF9weXRob24KIHdpdGhfcGVybAogd2l0aF90Y2wKK0lDVV9M SUJTCitJQ1VfQ0ZMQUdTCitQS0dfQ09ORklHX0xJQkRJUgorUEtHX0NPTkZJ R19QQVRICitQS0dfQ09ORklHCit3aXRoX2ljdQogZW5hYmxlX3RocmVhZF9z YWZldHkKIElOQ0xVREVTCiBhdXRvZGVwZW5kCkBAIC04MjEsNiArODI3LDcg QEAgd2l0aF9DQwogZW5hYmxlX2RlcGVuZAogZW5hYmxlX2Nhc3NlcnQKIGVu YWJsZV90aHJlYWRfc2FmZXR5Cit3aXRoX2ljdQogd2l0aF90Y2wKIHdpdGhf dGNsY29uZmlnCiB3aXRoX3BlcmwKQEAgLTg1Niw2ICs4NjMsMTEgQEAgTERG TEFHUwogTElCUwogQ1BQRkxBR1MKIENQUAorUEtHX0NPTkZJRworUEtHX0NP TkZJR19QQVRICitQS0dfQ09ORklHX0xJQkRJUgorSUNVX0NGTEFHUworSUNV X0xJQlMKIExERkxBR1NfRVgKIExERkxBR1NfU0wKIERPQ0JPT0tTVFlMRScK QEAgLTE1MTEsNiArMTUyMyw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAt LXdpdGgtd2FsLXNlZ3NpemU9U0VHU0laRQogICAgICAgICAgICAgICAgICAg ICAgICAgICBzZXQgV0FMIHNlZ21lbnQgc2l6ZSBpbiBNQiBbMTZdCiAgIC0t d2l0aC1DQz1DTUQgICAgICAgICAgIHNldCBjb21waWxlciAoZGVwcmVjYXRl ZCkKKyAgLS13aXRoLWljdSAgICAgICAgICAgICAgYnVpbGQgd2l0aCBJQ1Ug c3VwcG9ydAogICAtLXdpdGgtdGNsICAgICAgICAgICAgICBidWlsZCBUY2wg bW9kdWxlcyAoUEwvVGNsKQogICAtLXdpdGgtdGNsY29uZmlnPURJUiAgICB0 Y2xDb25maWcuc2ggaXMgaW4gRElSCiAgIC0td2l0aC1wZXJsICAgICAgICAg ICAgIGJ1aWxkIFBlcmwgbW9kdWxlcyAoUEwvUGVybCkKQEAgLTE1NDYsNiAr MTU1OSwxMyBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlh YmxlczoKICAgQ1BQRkxBR1MgICAgKE9iamVjdGl2ZSkgQy9DKysgcHJlcHJv Y2Vzc29yIGZsYWdzLCBlLmcuIC1JPGluY2x1ZGUgZGlyPiBpZgogICAgICAg ICAgICAgICB5b3UgaGF2ZSBoZWFkZXJzIGluIGEgbm9uc3RhbmRhcmQgZGly ZWN0b3J5IDxpbmNsdWRlIGRpcj4KICAgQ1BQICAgICAgICAgQyBwcmVwcm9j ZXNzb3IKKyAgUEtHX0NPTkZJRyAgcGF0aCB0byBwa2ctY29uZmlnIHV0aWxp dHkKKyAgUEtHX0NPTkZJR19QQVRICisgICAgICAgICAgICAgIGRpcmVjdG9y aWVzIHRvIGFkZCB0byBwa2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGgKKyAgUEtH X0NPTkZJR19MSUJESVIKKyAgICAgICAgICAgICAgcGF0aCBvdmVycmlkaW5n IHBrZy1jb25maWcncyBidWlsdC1pbiBzZWFyY2ggcGF0aAorICBJQ1VfQ0ZM QUdTICBDIGNvbXBpbGVyIGZsYWdzIGZvciBJQ1UsIG92ZXJyaWRpbmcgcGtn LWNvbmZpZworICBJQ1VfTElCUyAgICBsaW5rZXIgZmxhZ3MgZm9yIElDVSwg b3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIExERkxBR1NfRVggIGV4dHJhIGxp bmtlciBmbGFncyBmb3IgbGlua2luZyBleGVjdXRhYmxlcyBvbmx5CiAgIExE RkxBR1NfU0wgIGV4dHJhIGxpbmtlciBmbGFncyBmb3IgbGlua2luZyBzaGFy ZWQgbGlicmFyaWVzIG9ubHkKICAgRE9DQk9PS1NUWUxFCkBAIC01MzYyLDYg KzUzODIsMjU1IEBAICRhc19lY2hvICIkZW5hYmxlX3RocmVhZF9zYWZldHki ID4mNjsgfQogCiAKICMKKyMgSUNVCisjCit7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gYnVp bGQgd2l0aCBJQ1Ugc3VwcG9ydCIgPiY1CiskYXNfZWNob19uICJjaGVja2lu ZyB3aGV0aGVyIHRvIGJ1aWxkIHdpdGggSUNVIHN1cHBvcnQuLi4gIiA+JjY7 IH0KKworCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtaWN1IHdhcyBnaXZl bi4KK2lmIHRlc3QgIiR7d2l0aF9pY3Urc2V0fSIgPSBzZXQ7IHRoZW4gOgor ICB3aXRodmFsPSR3aXRoX2ljdTsKKyAgY2FzZSAkd2l0aHZhbCBpbgorICAg IHllcykKKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX0lDVSAxIiA+PmNvbmZk ZWZzLmgKKworICAgICAgOzsKKyAgICBubykKKyAgICAgIDoKKyAgICAgIDs7 CisgICAgKikKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhcmd1bWVudCBl eHBlY3RlZCBmb3IgLS13aXRoLWljdSBvcHRpb24iICIkTElORU5PIiA1Cisg ICAgICA7OworICBlc2FjCisKK2Vsc2UKKyAgd2l0aF9pY3U9bm8KKworZmkK KworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJHdpdGhfaWN1IiA+JjUKKyRhc19lY2hvICIkd2l0aF9pY3Ui ID4mNjsgfQorCisKK2lmIHRlc3QgIiR3aXRoX2ljdSIgPSB5ZXM7IHRoZW4K KworCisKKworCisKKworaWYgdGVzdCAieCRhY19jdl9lbnZfUEtHX0NPTkZJ R19zZXQiICE9ICJ4c2V0IjsgdGhlbgorCWlmIHRlc3QgLW4gIiRhY190b29s X3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9m ICIke2FjX3Rvb2xfcHJlZml4fXBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUg YSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9v bF9wcmVmaXh9cGtnLWNvbmZpZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFj X3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3Jk Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfUEtHX0NPTkZJRys6fSBm YWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Citl bHNlCisgIGNhc2UgJFBLR19DT05GSUcgaW4KKyAgW1xcL10qIHwgPzpbXFwv XSopCisgIGFjX2N2X3BhdGhfUEtHX0NPTkZJRz0iJFBLR19DT05GSUciICMg TGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgor ICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQ QVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3Nh dmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAg Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lv bnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX1BLR19D T05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgor ICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsK K2VzYWMKK2ZpCitQS0dfQ09ORklHPSRhY19jdl9wYXRoX1BLR19DT05GSUcK K2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBLR19D T05GSUciID4mNQorJGFzX2VjaG8gIiRQS0dfQ09ORklHIiA+JjY7IH0KK2Vs c2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQor CisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIjsg dGhlbgorICBhY19wdF9QS0dfQ09ORklHPSRQS0dfQ09ORklHCisgICMgRXh0 cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicGtnLWNvbmZpZyIsIHNvIGl0IGNh biBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgcGtn LWNvbmZpZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQor JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9 CitpZiAke2FjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRys6fSBmYWxzZTsg dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisg IGNhc2UgJGFjX3B0X1BLR19DT05GSUcgaW4KKyAgW1xcL10qIHwgPzpbXFwv XSopCisgIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFjX3B0X1BL R19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdp dGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJ RlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbwor ICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFz X2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRh YmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19j dl9wYXRoX2FjX3B0X1BLR19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg PiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFz X3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCithY19wdF9QS0dfQ09ORklH PSRhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUcKK2lmIHRlc3QgLW4gIiRh Y19wdF9QS0dfQ09ORklHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X1BLR19DT05G SUciID4mNQorJGFzX2VjaG8gIiRhY19wdF9QS0dfQ09ORklHIiA+JjY7IH0K K2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9Citm aQorCisgIGlmIHRlc3QgIngkYWNfcHRfUEtHX0NPTkZJRyIgPSB4OyB0aGVu CisgICAgUEtHX0NPTkZJRz0iIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3Nf Y29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNp bmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0 IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3Nz IHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30K K2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIFBLR19DT05GSUc9 JGFjX3B0X1BLR19DT05GSUcKKyAgZmkKK2Vsc2UKKyAgUEtHX0NPTkZJRz0i JGFjX2N2X3BhdGhfUEtHX0NPTkZJRyIKK2ZpCisKK2ZpCitpZiB0ZXN0IC1u ICIkUEtHX0NPTkZJRyI7IHRoZW4KKwlfcGtnX21pbl92ZXJzaW9uPTAuOS4w CisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBwa2ctY29uZmlnIGlzIGF0IGxlYXN0IHZlcnNpb24gJF9wa2df bWluX3ZlcnNpb24iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgcGtnLWNv bmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9uLi4u ICIgPiY2OyB9CisJaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZp Zy12ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9uOyB0aGVuCisJCXsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMi ID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisJZWxzZQorCQl7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i ID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKwkJUEtHX0NPTkZJRz0iIgor CWZpCitmaQorCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBJQ1UiID4mNQor JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIElDVS4uLiAiID4mNjsgfQorCitp ZiB0ZXN0IC1uICIkSUNVX0NGTEFHUyI7IHRoZW4KKyAgICBwa2dfY3ZfSUNV X0NGTEFHUz0iJElDVV9DRkxBR1MiCisgZWxpZiB0ZXN0IC1uICIkUEtHX0NP TkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYg XAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJp Y3UtdWMgaWN1LWkxOG5cIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4 aXN0cyAtLXByaW50LWVycm9ycyAiaWN1LXVjIGljdS1pMThuIikgMj4mNQor ICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFj X3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0lDVV9DRkxBR1M9YCRQ S0dfQ09ORklHIC0tY2ZsYWdzICJpY3UtdWMgaWN1LWkxOG4iIDI+L2Rldi9u dWxsYAorCQkgICAgICB0ZXN0ICJ4JD8iICE9ICJ4MCIgJiYgcGtnX2ZhaWxl ZD15ZXMKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgZWxzZQorICAg IHBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRJQ1VfTElC UyI7IHRoZW4KKyAgICBwa2dfY3ZfSUNVX0xJQlM9IiRJQ1VfTElCUyIKKyBl bGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3Qg LW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0 cyAtLXByaW50LWVycm9ycyBcImljdS11YyBpY3UtaTE4blwiIjsgfSA+JjUK KyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJpY3Ut dWMgaWN1LWkxOG4iKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3Rh dHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBw a2dfY3ZfSUNVX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiaWN1LXVjIGlj dS1pMThuIiAyPi9kZXYvbnVsbGAKKwkJICAgICAgdGVzdCAieCQ/IiAhPSAi eDAiICYmIHBrZ19mYWlsZWQ9eWVzCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVz CitmaQorIGVsc2UKKyAgICBwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKwor CitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisgICAJeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v IiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKK2lmICRQS0dfQ09ORklH IC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAg ICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAg ICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAg ICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5 ZXM7IHRoZW4KKwkgICAgICAgIElDVV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJ RyAtLXNob3J0LWVycm9ycyAtLXByaW50LWVycm9ycyAtLWNmbGFncyAtLWxp YnMgImljdS11YyBpY3UtaTE4biIgMj4mMWAKKyAgICAgICAgZWxzZQorCSAg ICAgICAgSUNVX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tcHJpbnQtZXJy b3JzIC0tY2ZsYWdzIC0tbGlicyAiaWN1LXVjIGljdS1pMThuIiAyPiYxYAor ICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGlu IGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRJQ1VfUEtH X0VSUk9SUyIgPiY1CisKKwlhc19mbl9lcnJvciAkPyAiUGFja2FnZSByZXF1 aXJlbWVudHMgKGljdS11YyBpY3UtaTE4bikgd2VyZSBub3QgbWV0OgorCisk SUNVX1BLR19FUlJPUlMKKworQ29uc2lkZXIgYWRqdXN0aW5nIHRoZSBQS0df Q09ORklHX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgaWYgeW91CitpbnN0 YWxsZWQgc29mdHdhcmUgaW4gYSBub24tc3RhbmRhcmQgcHJlZml4LgorCitB bHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHNldCB0aGUgZW52aXJvbm1lbnQgdmFy aWFibGVzIElDVV9DRkxBR1MKK2FuZCBJQ1VfTElCUyB0byBhdm9pZCB0aGUg bmVlZCB0byBjYWxsIHBrZy1jb25maWcuCitTZWUgdGhlIHBrZy1jb25maWcg bWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1CitlbGlm IHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisgICAgIAl7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog bm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKwl7IHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFj X3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRh Y19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJUaGUgcGtnLWNvbmZp ZyBzY3JpcHQgY291bGQgbm90IGJlIGZvdW5kIG9yIGlzIHRvbyBvbGQuICBN YWtlIHN1cmUgaXQKK2lzIGluIHlvdXIgUEFUSCBvciBzZXQgdGhlIFBLR19D T05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGZ1bGwKK3BhdGgg dG8gcGtnLWNvbmZpZy4KKworQWx0ZXJuYXRpdmVseSwgeW91IG1heSBzZXQg dGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBJQ1VfQ0ZMQUdTCithbmQgSUNV X0xJQlMgdG8gYXZvaWQgdGhlIG5lZWQgdG8gY2FsbCBwa2ctY29uZmlnLgor U2VlIHRoZSBwa2ctY29uZmlnIG1hbiBwYWdlIGZvciBtb3JlIGRldGFpbHMu CisKK1RvIGdldCBwa2ctY29uZmlnLCBzZWUgPGh0dHA6Ly9wa2ctY29uZmln LmZyZWVkZXNrdG9wLm9yZy8+LgorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1v cmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2Vsc2UKKwlJQ1VfQ0ZMQUdT PSRwa2dfY3ZfSUNVX0NGTEFHUworCUlDVV9MSUJTPSRwa2dfY3ZfSUNVX0xJ QlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7 IH0KKworZmkKK2ZpCisKKyMKICMgT3B0aW9uYWxseSBidWlsZCBUY2wgbW9k dWxlcyAoUEwvVGNsKQogIwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGJ1aWxkIHdpdGgg VGNsIiA+JjUKQEAgLTEzNDMzLDYgKzEzNzAyLDUwIEBAIGZpCiBkb25lCiAK IAoraWYgdGVzdCAiJHdpdGhfaWN1IiA9IHllczsgdGhlbgorICAjIElDVSBm dW5jdGlvbnMgYXJlIG1hY3Jvcywgc28gd2UgbmVlZCB0byBkbyB0aGlzIHRo ZSBsb25nIHdheS4KKworICAjIHVjb2xfc3RyY29sbFVURjgoKSBhcHBlYXJl ZCBpbiBJQ1UgNTAuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVjb2xfc3RyY29sbFVURjgiID4m NQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHVjb2xfc3RyY29sbFVURjgu Li4gIiA+JjY7IH0KK2lmICR7cGdhY19jdl9mdW5jX3Vjb2xfc3RyY29sbFVU RjgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAi ID4mNgorZWxzZQorICBhY19zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworQ1BQ RkxBR1M9IiRJQ1VfQ0ZMQUdTICRDUFBGTEFHUyIKK2FjX3NhdmVfTElCUz0k TElCUworTElCUz0iJElDVV9MSUJTICRMSUJTIgorY2F0IGNvbmZkZWZzLmgg LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZz LmguICAqLworI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgorCitpbnQKK21h aW4gKCkKK3sKK3Vjb2xfc3RyY29sbFVURjgoTlVMTCwgTlVMTCwgMCwgTlVM TCwgMCwgTlVMTCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lm IGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgcGdhY19j dl9mdW5jX3Vjb2xfc3RyY29sbFVURjg9eWVzCitlbHNlCisgIHBnYWNfY3Zf ZnVuY191Y29sX3N0cmNvbGxVVEY4PW5vCitmaQorcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3Qk YWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0NQUEZMQUdTPSRhY19zYXZl X0NQUEZMQUdTCitMSUJTPSRhY19zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHBnYWNf Y3ZfZnVuY191Y29sX3N0cmNvbGxVVEY4IiA+JjUKKyRhc19lY2hvICIkcGdh Y19jdl9mdW5jX3Vjb2xfc3RyY29sbFVURjgiID4mNjsgfQorICBpZiB0ZXN0 ICIkcGdhY19jdl9mdW5jX3Vjb2xfc3RyY29sbFVURjgiID0geWVzIDsgdGhl bgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1VDT0xfU1RSQ09MTFVURjgg MSIgPj5jb25mZGVmcy5oCisKKyAgZmkKK2ZpCisKICMgTGFzdGx5LCByZXN0 b3JlIGZ1bGwgTElCUyBsaXN0IGFuZCBjaGVjayBmb3IgcmVhZGxpbmUvbGli ZWRpdCBzeW1ib2xzCiBMSUJTPSIkTElCU19pbmNsdWRpbmdfcmVhZGxpbmUi CiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgpp bmRleCAxZDk5Y2RhMWQ4Li4yMzViODc0NWQ2IDEwMDY0NAotLS0gYS9jb25m aWd1cmUuaW4KKysrIGIvY29uZmlndXJlLmluCkBAIC02MTQsNiArNjE0LDE5 IEBAIEFDX01TR19SRVNVTFQoWyRlbmFibGVfdGhyZWFkX3NhZmV0eV0pCiBB Q19TVUJTVChlbmFibGVfdGhyZWFkX3NhZmV0eSkKIAogIworIyBJQ1UKKyMK K0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCB3aXRoIElDVSBz dXBwb3J0XSkKK1BHQUNfQVJHX0JPT0wod2l0aCwgaWN1LCBubywgW2J1aWxk IHdpdGggSUNVIHN1cHBvcnRdLAorICAgICAgICAgICAgICBbQUNfREVGSU5F KFtVU0VfSUNVXSwgMSwgW0RlZmluZSB0byBidWlsZCB3aXRoIElDVSBzdXBw b3J0LiAoLS13aXRoLWljdSldKV0pCitBQ19NU0dfUkVTVUxUKFskd2l0aF9p Y3VdKQorQUNfU1VCU1Qod2l0aF9pY3UpCisKK2lmIHRlc3QgIiR3aXRoX2lj dSIgPSB5ZXM7IHRoZW4KKyAgUEtHX0NIRUNLX01PRFVMRVMoSUNVLCBpY3Ut dWMgaWN1LWkxOG4pCitmaQorCisjCiAjIE9wdGlvbmFsbHkgYnVpbGQgVGNs IG1vZHVsZXMgKFBML1RjbCkKICMKIEFDX01TR19DSEVDS0lORyhbd2hldGhl ciB0byBidWlsZCB3aXRoIFRjbF0pCkBAIC0xNjM0LDYgKzE2NDcsMjggQEAg ZmkKIEFDX0NIRUNLX0ZVTkNTKFtzdHJ0b2xsIHN0cnRvcV0sIFticmVha10p CiBBQ19DSEVDS19GVU5DUyhbc3RydG91bGwgc3RydG91cV0sIFticmVha10p CiAKK2lmIHRlc3QgIiR3aXRoX2ljdSIgPSB5ZXM7IHRoZW4KKyAgIyBJQ1Ug ZnVuY3Rpb25zIGFyZSBtYWNyb3MsIHNvIHdlIG5lZWQgdG8gZG8gdGhpcyB0 aGUgbG9uZyB3YXkuCisKKyAgIyB1Y29sX3N0cmNvbGxVVEY4KCkgYXBwZWFy ZWQgaW4gSUNVIDUwLgorICBBQ19DQUNIRV9DSEVDSyhbZm9yIHVjb2xfc3Ry Y29sbFVURjhdLCBbcGdhY19jdl9mdW5jX3Vjb2xfc3RyY29sbFVURjhdLAor W2FjX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCitDUFBGTEFHUz0iJElDVV9D RkxBR1MgJENQUEZMQUdTIgorYWNfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSIk SUNVX0xJQlMgJExJQlMiCitBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9H UkFNKAorWyNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KK10sCitbdWNvbF9z dHJjb2xsVVRGOChOVUxMLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMKTtdKV0s CitbcGdhY19jdl9mdW5jX3Vjb2xfc3RyY29sbFVURjg9eWVzXSwKK1twZ2Fj X2N2X2Z1bmNfdWNvbF9zdHJjb2xsVVRGOD1ub10pCitDUFBGTEFHUz0kYWNf c2F2ZV9DUFBGTEFHUworTElCUz0kYWNfc2F2ZV9MSUJTXSkKKyAgaWYgdGVz dCAiJHBnYWNfY3ZfZnVuY191Y29sX3N0cmNvbGxVVEY4IiA9IHllcyA7IHRo ZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfVUNPTF9TVFJDT0xMVVRGOF0sIDEs IFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVjb2xfc3RyY29sbFVU RjgnIGZ1bmN0aW9uLl0pCisgIGZpCitmaQorCiAjIExhc3RseSwgcmVzdG9y ZSBmdWxsIExJQlMgbGlzdCBhbmQgY2hlY2sgZm9yIHJlYWRsaW5lL2xpYmVk aXQgc3ltYm9scwogTElCUz0iJExJQlNfaW5jbHVkaW5nX3JlYWRsaW5lIgog CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGRmMDQzNWMzZjAuLjhl ODdhMThlOWEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0yMDE2 LDYgKzIwMTYsMTQgQEAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2NvbGxhdGlv bjwvPiBDb2x1bW5zPC90aXRsZT4KICAgICAgPC9yb3c+CiAKICAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y29sbHByb3ZpZGVyPC9z dHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPmNoYXI8 L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAg PGVudHJ5PlByb3ZpZGVyIG9mIHRoZSBjb2xsYXRpb246IDxsaXRlcmFsPmQ8 L2xpdGVyYWw+ID0gZGF0YWJhc2UKKyAgICAgICBkZWZhdWx0LCA8bGl0ZXJh bD5jPC9saXRlcmFsPiA9IGxpYmMsIDxsaXRlcmFsPmk8L2xpdGVyYWw+ID0g aWN1PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KICAgICAg IDxlbnRyeT48c3RydWN0ZmllbGQ+Y29sbGVuY29kaW5nPC9zdHJ1Y3RmaWVs ZD48L2VudHJ5PgogICAgICAgPGVudHJ5Pjx0eXBlPmludDQ8L3R5cGU+PC9l bnRyeT4KICAgICAgIDxlbnRyeT48L2VudHJ5PgpAQCAtMjAzNiw2ICsyMDQ0 LDE3IEBAIDx0aXRsZT48c3RydWN0bmFtZT5wZ19jb2xsYXRpb248Lz4gQ29s dW1uczwvdGl0bGU+CiAgICAgICA8ZW50cnk+PC9lbnRyeT4KICAgICAgIDxl bnRyeT48c3ltYm9sPkxDX0NUWVBFPC8+IGZvciB0aGlzIGNvbGxhdGlvbiBv YmplY3Q8L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAg ICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5jb2xsdmVyc2lvbjwvc3RydWN0Zmll bGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT50ZXh0PC90eXBlPjwv ZW50cnk+CisgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4K KyAgICAgICBQcm92aWRlci1zcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBjb2xs YXRpb24uICBUaGlzIGlzIHJlY29yZGVkIHdoZW4gdGhlCisgICAgICAgY29s bGF0aW9uIGlzIGNyZWF0ZWQgYW5kIHRoZW4gY2hlY2tlZCB3aGVuIGl0IGlz IHVzZWQsIHRvIGRldGVjdAorICAgICAgIGNoYW5nZXMgaW4gdGhlIGNvbGxh dGlvbiBkZWZpbml0aW9uIHRoYXQgY291bGQgbGVhZCB0byBkYXRhIGNvcnJ1 cHRpb24uCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICA8L3Ri b2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY2hhcnNldC5zZ21sIGIvZG9jL3NyYy9zZ21sL2NoYXJz ZXQuc2dtbAppbmRleCAyYWJhMGZjNTI4Li5kZTJhNzk4NDY4IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvY2hhcnNldC5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9jaGFyc2V0LnNnbWwKQEAgLTUwMCwyMSArNTAwLDQ3IEBAIDx0aXRs ZT5Db25jZXB0czwvdGl0bGU+CiAgICA8dGl0bGU+TWFuYWdpbmcgQ29sbGF0 aW9uczwvdGl0bGU+CiAKICAgIDxwYXJhPgotICAgIEEgY29sbGF0aW9uIGlz IGFuIFNRTCBzY2hlbWEgb2JqZWN0IHRoYXQgbWFwcyBhbiBTUUwgbmFtZSB0 bwotICAgIG9wZXJhdGluZyBzeXN0ZW0gbG9jYWxlcy4gIEluIHBhcnRpY3Vs YXIsIGl0IG1hcHMgdG8gYSBjb21iaW5hdGlvbgotICAgIG9mIDxzeW1ib2w+ TENfQ09MTEFURTwvc3ltYm9sPiBhbmQgPHN5bWJvbD5MQ19DVFlQRTwvc3lt Ym9sPi4gIChBcworICAgIEEgY29sbGF0aW9uIGlzIGFuIFNRTCBzY2hlbWEg b2JqZWN0IHRoYXQgbWFwcyBhbiBTUUwgbmFtZSB0byBsb2NhbGVzCisgICAg cHJvdmlkZWQgYnkgbGlicmFyaWVzIGluc3RhbGxlZCBpbiB0aGUgb3BlcmF0 aW5nIHN5c3RlbS4gIEEgY29sbGF0aW9uCisgICAgZGVmaW5pdGlvbiBoYXMg YSA8Zmlyc3R0ZXJtPnByb3ZpZGVyPC9maXJzdHRlcm0+IHRoYXQgc3BlY2lm aWVzIHdoaWNoCisgICAgbGlicmFyeSBzdXBwbGllcyB0aGUgbG9jYWxlIGRh dGEuICBPbmUgc3RhbmRhcmQgcHJvdmlkZXIgbmFtZQorICAgIGlzIDxsaXRl cmFsPmxpYmM8L2xpdGVyYWw+LCB3aGljaCB1c2VzIHRoZSBsb2NhbGVzIHBy b3ZpZGVkIGJ5IHRoZQorICAgIG9wZXJhdGluZyBzeXN0ZW0gQyBsaWJyYXJ5 LiAgVGhlc2UgYXJlIHRoZSBsb2NhbGVzIHRoYXQgbW9zdCB0b29scworICAg IHByb3ZpZGVkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtIHVzZS4gIEFub3Ro ZXIgcHJvdmlkZXIKKyAgICBpcyA8bGl0ZXJhbD5pY3U8L2xpdGVyYWw+LCB3 aGljaCB1c2VzIHRoZSBleHRlcm5hbAorICAgIElDVTxpbmRleHRlcm0+PHBy aW1hcnk+SUNVPC8+PC8+IGxpYnJhcnkuICBTdXBwb3J0IGZvciBJQ1UgaGFz IHRvIGJlCisgICAgY29uZmlndXJlZCB3aGVuIFBvc3RncmVTUUwgaXMgYnVp bHQuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEEgY29sbGF0aW9u IG9iamVjdCBwcm92aWRlZCBieSA8bGl0ZXJhbD5saWJjPC9saXRlcmFsPiBt YXBzIHRvIGEKKyAgICBjb21iaW5hdGlvbiBvZiA8c3ltYm9sPkxDX0NPTExB VEU8L3N5bWJvbD4gYW5kIDxzeW1ib2w+TENfQ1RZUEU8L3N5bWJvbD4KKyAg ICBzZXR0aW5ncy4gIChBcwogICAgIHRoZSBuYW1lIHdvdWxkIHN1Z2dlc3Qs IHRoZSBtYWluIHB1cnBvc2Ugb2YgYSBjb2xsYXRpb24gaXMgdG8gc2V0CiAg ICAgPHN5bWJvbD5MQ19DT0xMQVRFPC9zeW1ib2w+LCB3aGljaCBjb250cm9s cyB0aGUgc29ydCBvcmRlci4gIEJ1dAogICAgIGl0IGlzIHJhcmVseSBuZWNl c3NhcnkgaW4gcHJhY3RpY2UgdG8gaGF2ZSBhbgogICAgIDxzeW1ib2w+TENf Q1RZUEU8L3N5bWJvbD4gc2V0dGluZyB0aGF0IGlzIGRpZmZlcmVudCBmcm9t CiAgICAgPHN5bWJvbD5MQ19DT0xMQVRFPC9zeW1ib2w+LCBzbyBpdCBpcyBt b3JlIGNvbnZlbmllbnQgdG8gY29sbGVjdAogICAgIHRoZXNlIHVuZGVyIG9u ZSBjb25jZXB0IHRoYW4gdG8gY3JlYXRlIGFub3RoZXIgaW5mcmFzdHJ1Y3R1 cmUgZm9yCi0gICAgc2V0dGluZyA8c3ltYm9sPkxDX0NUWVBFPC9zeW1ib2w+ IHBlciBleHByZXNzaW9uLikgIEFsc28sIGEgY29sbGF0aW9uCisgICAgc2V0 dGluZyA8c3ltYm9sPkxDX0NUWVBFPC9zeW1ib2w+IHBlciBleHByZXNzaW9u LikgIEFsc28sCisgICAgYSA8bGl0ZXJhbD5saWJjPC9saXRlcmFsPiBjb2xs YXRpb24KICAgICBpcyB0aWVkIHRvIGEgY2hhcmFjdGVyIHNldCBlbmNvZGlu ZyAoc2VlIDx4cmVmIGxpbmtlbmQ9Im11bHRpYnl0ZSI+KS4KICAgICBUaGUg c2FtZSBjb2xsYXRpb24gbmFtZSBtYXkgZXhpc3QgZm9yIGRpZmZlcmVudCBl bmNvZGluZ3MuCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgorICAgIEEgY29s bGF0aW9uIHByb3ZpZGVkIGJ5IDxsaXRlcmFsPmljdTwvbGl0ZXJhbD4gbWFw cyB0byBhIG5hbWVkIGNvbGxhdG9yCisgICAgcHJvdmlkZWQgYnkgdGhlIElD VSBsaWJyYXJ5LiAgSUNVIGRvZXMgbm90IHN1cHBvcnQKKyAgICBzZXBhcmF0 ZSA8cXVvdGU+Y29sbGF0ZTwvcXVvdGU+IGFuZCA8cXVvdGU+Y3R5cGU8L3F1 b3RlPiBzZXR0aW5ncywgc28gdGhleQorICAgIGFyZSBhbHdheXMgdGhlIHNh bWUuICBBbHNvLCBJQ1UgY29sbGF0aW9ucyBhcmUgaW5kZXBlbmRlbnQgb2Yg dGhlCisgICAgZW5jb2RpbmcsIHNvIHRoZXJlIGlzIGFsd2F5cyBvbmx5IG9u ZSBJQ1UgY29sbGF0aW9uIGZvciBhIGdpdmVuIG5hbWUgaW4gYQorICAgIGRh dGFiYXNlLgorICAgPC9wYXJhPgorCisgICA8c2VjdDM+CisgICAgPHRpdGxl PlN0YW5kYXJkIENvbGxhdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KICAg ICBPbiBhbGwgcGxhdGZvcm1zLCB0aGUgY29sbGF0aW9ucyBuYW1lZCA8bGl0 ZXJhbD5kZWZhdWx0PC8+LAogICAgIDxsaXRlcmFsPkM8Lz4sIGFuZCA8bGl0 ZXJhbD5QT1NJWDwvPiBhcmUgYXZhaWxhYmxlLiAgQWRkaXRpb25hbAogICAg IGNvbGxhdGlvbnMgbWF5IGJlIGF2YWlsYWJsZSBkZXBlbmRpbmcgb24gb3Bl cmF0aW5nIHN5c3RlbSBzdXBwb3J0LgpAQCAtNTI4LDEyICs1NTQsMzYgQEAg PHRpdGxlPk1hbmFnaW5nIENvbGxhdGlvbnM8L3RpdGxlPgogICAgPC9wYXJh PgogCiAgICA8cGFyYT4KKyAgICBBZGRpdGlvbmFsbHksIHRoZSBTUUwgc3Rh bmRhcmQgY29sbGF0aW9uIG5hbWUgPGxpdGVyYWw+dWNzX2Jhc2ljPC9saXRl cmFsPgorICAgIGlzIGF2YWlsYWJsZSBmb3IgZW5jb2RpbmcgPGxpdGVyYWw+ VVRGODwvbGl0ZXJhbD4uICBJdCBpcyBlcXVpdmFsZW50CisgICAgdG8gPGxp dGVyYWw+QzwvbGl0ZXJhbD4gYW5kIHNvcnRzIGJ5IFVuaWNvZGUgY29kZSBw b2ludC4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mz4KKworICA8c2VjdDM+Cisg ICA8dGl0bGU+UHJlZGVmaW5lZCBDb2xsYXRpb25zPC90aXRsZT4KKworICAg PHBhcmE+CiAgICAgSWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gcHJvdmlkZXMg c3VwcG9ydCBmb3IgdXNpbmcgbXVsdGlwbGUgbG9jYWxlcwogICAgIHdpdGhp biBhIHNpbmdsZSBwcm9ncmFtICg8ZnVuY3Rpb24+bmV3bG9jYWxlPC8+IGFu ZCByZWxhdGVkIGZ1bmN0aW9ucyksCisgICAgb3Igc3VwcG9ydCBmb3IgSUNV IGlzIGNvbmZpZ3VyZWQsCiAgICAgdGhlbiB3aGVuIGEgZGF0YWJhc2UgY2x1 c3RlciBpcyBpbml0aWFsaXplZCwgPGNvbW1hbmQ+aW5pdGRiPC9jb21tYW5k PgogICAgIHBvcHVsYXRlcyB0aGUgc3lzdGVtIGNhdGFsb2cgPGxpdGVyYWw+ cGdfY29sbGF0aW9uPC9saXRlcmFsPiB3aXRoCiAgICAgY29sbGF0aW9ucyBi YXNlZCBvbiBhbGwgdGhlIGxvY2FsZXMgaXQgZmluZHMgb24gdGhlIG9wZXJh dGluZwotICAgIHN5c3RlbSBhdCB0aGUgdGltZS4gIEZvciBleGFtcGxlLCB0 aGUgb3BlcmF0aW5nIHN5c3RlbSBtaWdodAorICAgIHN5c3RlbSBhdCB0aGUg dGltZS4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGhlIGluc3Bl Y3QgdGhlIGN1cnJlbnRseSBhdmFpbGFibGUgbG9jYWxlcywgdXNlIHRoZSBx dWVyeSA8bGl0ZXJhbD5TRUxFQ1QKKyAgICAqIEZST00gcGdfY29sbGF0aW9u PC9saXRlcmFsPiwgb3IgdGhlIGNvbW1hbmQgPGNvbW1hbmQ+XGRPUys8L2Nv bW1hbmQ+CisgICAgaW4gPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9u Pi4KKyAgIDwvcGFyYT4KKworICA8c2VjdDQ+CisgICA8dGl0bGU+bGliYyBj b2xsYXRpb25zPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgRm9yIGV4YW1w bGUsIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG1pZ2h0CiAgICAgcHJvdmlkZSBh IGxvY2FsZSBuYW1lZCA8bGl0ZXJhbD5kZV9ERS51dGY4PC9saXRlcmFsPi4K ICAgICA8Y29tbWFuZD5pbml0ZGI8L2NvbW1hbmQ+IHdvdWxkIHRoZW4gY3Jl YXRlIGEgY29sbGF0aW9uIG5hbWVkCiAgICAgPGxpdGVyYWw+ZGVfREUudXRm ODwvbGl0ZXJhbD4gZm9yIGVuY29kaW5nIDxsaXRlcmFsPlVURjg8L2xpdGVy YWw+CkBAIC01NDgsMTMgKzU5OCwxNCBAQCA8dGl0bGU+TWFuYWdpbmcgQ29s bGF0aW9uczwvdGl0bGU+CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAg IEluIGNhc2UgYSBjb2xsYXRpb24gaXMgbmVlZGVkIHRoYXQgaGFzIGRpZmZl cmVudCB2YWx1ZXMgZm9yCi0gICAgPHN5bWJvbD5MQ19DT0xMQVRFPC9zeW1i b2w+IGFuZCA8c3ltYm9sPkxDX0NUWVBFPC9zeW1ib2w+LCBhIG5ldwotICAg IGNvbGxhdGlvbiBtYXkgYmUgY3JlYXRlZCB1c2luZwotICAgIHRoZSA8eHJl ZiBsaW5rZW5kPSJzcWwtY3JlYXRlY29sbGF0aW9uIj4gY29tbWFuZC4gIFRo YXQgY29tbWFuZAotICAgIGNhbiBhbHNvIGJlIHVzZWQgdG8gY3JlYXRlIGEg bmV3IGNvbGxhdGlvbiBmcm9tIGFuIGV4aXN0aW5nCi0gICAgY29sbGF0aW9u LCB3aGljaCBjYW4gYmUgdXNlZnVsIHRvIGJlIGFibGUgdG8gdXNlCi0gICAg b3BlcmF0aW5nLXN5c3RlbS1pbmRlcGVuZGVudCBjb2xsYXRpb24gbmFtZXMg aW4gYXBwbGljYXRpb25zLgorICAgIFRoZSBkZWZhdWx0IHNldCBvZiBjb2xs YXRpb25zIHByb3ZpZGVkIGJ5IDxsaXRlcmFsPmxpYmM8L2xpdGVyYWw+IG1h cAorICAgIGRpcmVjdGx5IHRvIHRoZSBsb2NhbGVzIGluc3RhbGxlZCBpbiB0 aGUgb3BlcmF0aW5nIHN5c3RlbSwgd2hpY2ggY2FuIGJlCisgICAgbGlzdGVk IHVzaW5nIHRoZSBjb21tYW5kIDxsaXRlcmFsPmxvY2FsZSAtYTwvbGl0ZXJh bD4uICBJbiBjYXNlCisgICAgYSA8bGl0ZXJhbD5saWJjPC9saXRlcmFsPiBj b2xsYXRpb24gaXMgbmVlZGVkIHRoYXQgaGFzIGRpZmZlcmVudCB2YWx1ZXMK KyAgICBmb3IgPHN5bWJvbD5MQ19DT0xMQVRFPC9zeW1ib2w+IGFuZCA8c3lt Ym9sPkxDX0NUWVBFPC9zeW1ib2w+LCBvciBuZXcKKyAgICBsb2NhbGVzIGFy ZSBpbnN0YWxsZWQgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYWZ0ZXIgdGhl IGRhdGFiYXNlIHN5c3RlbQorICAgIHdhcyBpbml0aWFsaXplZCwgdGhlbiBh IG5ldyBjb2xsYXRpb24gbWF5IGJlIGNyZWF0ZWQgdXNpbmcKKyAgICB0aGUg PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZWNvbGxhdGlvbiI+IGNvbW1hbmQu CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtNTY2LDggKzYxNyw4IEBA IDx0aXRsZT5NYW5hZ2luZyBDb2xsYXRpb25zPC90aXRsZT4KICAgICBVc2Ug b2YgdGhlIHN0cmlwcGVkIGNvbGxhdGlvbiBuYW1lcyBpcyByZWNvbW1lbmRl ZCwgc2luY2UgaXQgd2lsbAogICAgIG1ha2Ugb25lIGxlc3MgdGhpbmcgeW91 IG5lZWQgdG8gY2hhbmdlIGlmIHlvdSBkZWNpZGUgdG8gY2hhbmdlIHRvCiAg ICAgYW5vdGhlciBkYXRhYmFzZSBlbmNvZGluZy4gIE5vdGUgaG93ZXZlciB0 aGF0IHRoZSA8bGl0ZXJhbD5kZWZhdWx0PC8+LAotICAgIDxsaXRlcmFsPkM8 Lz4sIGFuZCA8bGl0ZXJhbD5QT1NJWDwvPiBjb2xsYXRpb25zIGNhbiBiZSB1 c2VkCi0gICAgcmVnYXJkbGVzcyBvZiB0aGUgZGF0YWJhc2UgZW5jb2Rpbmcu CisgICAgPGxpdGVyYWw+QzwvPiwgYW5kIDxsaXRlcmFsPlBPU0lYPC8+IGNv bGxhdGlvbnMsIGFzIHdlbGwgYXMgYWxsIGNvbGxhdGlvbnMKKyAgICBwcm92 aWRlZCBieSBJQ1UgY2FuIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiB0aGUgZGF0 YWJhc2UgZW5jb2RpbmcuCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAt NTgxLDYgKzYzMiwxMDQgQEAgPHRpdGxlPk1hbmFnaW5nIENvbGxhdGlvbnM8 L3RpdGxlPgogICAgIGNvbGxhdGlvbnMgaGF2ZSBpZGVudGljYWwgYmVoYXZp b3JzLiAgTWl4aW5nIHN0cmlwcGVkIGFuZCBub24tc3RyaXBwZWQKICAgICBj b2xsYXRpb24gbmFtZXMgaXMgdGhlcmVmb3JlIG5vdCByZWNvbW1lbmRlZC4K ICAgIDwvcGFyYT4KKyAgPC9zZWN0ND4KKworICA8c2VjdDQ+CisgICA8dGl0 bGU+SUNVIGNvbGxhdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBD b2xsYXRpb25zIHByb3ZpZGVkIGJ5IElDVSBhcmUgY3JlYXRlZCB3aXRoIG5h bWVzIGluIEJDUCA0NyBsYW5ndWFnZSB0YWcKKyAgICBmb3JtYXQsIHdpdGgg YSA8cXVvdGU+cHJpdmF0ZSB1c2U8L3F1b3RlPgorICAgIGV4dGVuc2lvbiA8 bGl0ZXJhbD4teC1pY3U8L2xpdGVyYWw+IGFwcGVuZGVkLCB0byBkaXN0aW5n dWlzaCB0aGVtIGZyb20KKyAgICBsaWJjIGxvY2FsZXMuICBTbyA8bGl0ZXJh bD5kZS14LWljdTwvbGl0ZXJhbD4gd291bGQgYmUgYW4gZXhhbXBsZS4KKyAg IDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgV2l0aCBJQ1UsIGl0IGlzIG5v dCBzZW5zaWJsZSB0byBlbnVtZXJhdGUgYWxsIHBvc3NpYmxlIGxvY2FsZSBu YW1lcy4gIElDVQorICAgIHVzZXMgYSBwYXJ0aWN1bGFyIG5hbWluZyBzeXN0 ZW0gZm9yIGxvY2FsZXMsIGJ1dCB0aGVyZSBhcmUgbWFueSBtb3JlIHdheXMK KyAgICB0byBuYW1lIGEgbG9jYWxlIHRoYW4gdGhlcmUgYXJlIGFjdHVhbGx5 IGRpc3RpbmN0IGxvY2FsZXMuICAoSW4gZmFjdCwgYW55CisgICAgc3RyaW5n IHdpbGwgYmUgYWNjZXB0ZWQgYXMgYSBsb2NhbGUgbmFtZS4pCisgICAgU2Vl IDx1bGluayB1cmw9Imh0dHA6Ly91c2VyZ3VpZGUuaWN1LXByb2plY3Qub3Jn L2xvY2FsZSI+PC91bGluaz4gZm9yCisgICAgaW5mb3JtYXRpb24gb24gSUNV IGxvY2FsZSBuYW1pbmcuICA8Y29tbWFuZD5pbml0ZGI8L2NvbW1hbmQ+IHVz ZXMgdGhlIElDVQorICAgIEFQSXMgdG8gZXh0cmFjdCBhIHNldCBvZiBsb2Nh bGVzIHdpdGggZGlzdGluY3QgY29sbGF0aW9uIHJ1bGVzIHRvIHBvcHVsYXRl CisgICAgdGhlIGluaXRpYWwgc2V0IG9mIGNvbGxhdGlvbnMuICBIZXJlIGFy ZSBzb21lIGV4YW1wbGVzIGNvbGxhdGlvbnMgdGhhdAorICAgIG1pZ2h0IGJl IGNyZWF0ZWQ6CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgPHRlcm0+PGxpdGVyYWw+ZGUteC1pY3U8L2xpdGVy YWw+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPkdl cm1hbiBjb2xsYXRpb24sIGRlZmF1bHQgdmFyaWFudDwvcGFyYT4KKyAgICAg IDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48bGl0ZXJhbD5kZS11LWNvLXBo b25lYmsteC1pY3U8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgPGxpc3RpdGVt PgorICAgICAgIDxwYXJhPkdlcm1hbiBjb2xsYXRpb24sIHBob25lIGJvb2sg dmFyaWFudDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFy bGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVy bT48bGl0ZXJhbD5kZS1BVC14LWljdTwvbGl0ZXJhbD48L3Rlcm0+CisgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+R2VybWFuIGNvbGxhdGlvbiBm b3IgQXVzdHJpYSwgZGVmYXVsdCB2YXJpYW50PC9wYXJhPgorICAgICAgIDxw YXJhPgorICAgICAgICAoTm90ZSB0aGF0IGFzIG9mIHRoaXMgd3JpdGluZywg dGhlcmUgaXMgbm8sCisgICAgICAgIHNheSwgPGxpdGVyYWw+ZGUtREUteC1p Y3U8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmRlLUNILXgtaWN1PC9saXRlcmFs PiwKKyAgICAgICAgYmVjYXVzZSB0aG9zZSBhcmUgZXF1aXZhbGVudCB0byA8 bGl0ZXJhbD5kZS14LWljdTwvbGl0ZXJhbD4uKQorICAgICAgIDwvcGFyYT4K KyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48bGl0ZXJhbD5kZS1B VC11LWNvLXBob25lYmsteC1pY3U8L2xpdGVyYWw+PC90ZXJtPgorICAgICAg PGxpc3RpdGVtPgorICAgICAgIDxwYXJhPkdlcm1hbiBjb2xsYXRpb24gZm9y IEF1c3RyaWEsIHBob25lIGJvb2sgdmFyaWFudDwvcGFyYT4KKyAgICAgIDwv bGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgPHRlcm0+PGxpdGVyYWw+dW5kLXgtaWN1PC9saXRl cmFsPiAoZm9yIDxxdW90ZT51bmRlZmluZWQ8L3F1b3RlPik8L3Rlcm0+Cisg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIElDVSA8 cXVvdGU+cm9vdDwvcXVvdGU+IGNvbGxhdGlvbi4gIFVzZSB0aGlzIHRvIGdl dCBhIHJlYXNvbmFibGUKKyAgICAgICAgbGFuZ3VhZ2UtYWdub3N0aWMgc29y dCBvcmRlci4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgor ICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAg IDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgU29tZSAobGVzcyBmcmVxdWVu dGx5IHVzZWQpIGVuY29kaW5ncyBhcmUgbm90IHN1cHBvcnRlZCBieSBJQ1Uu ICBJZiB0aGUKKyAgICBkYXRhYmFzZSBjbHVzdGVyIHdhcyBpbml0aWFsaXpl ZCB3aXRoIHN1Y2ggYW4gZW5jb2RpbmcsIG5vIElDVSBjb2xsYXRpb25zCisg ICAgd2lsbCBiZSBwcmVkZWZpbmVkLgorICAgPC9wYXJhPgorICAgPC9zZWN0 ND4KKyAgIDwvc2VjdDM+CisKKyAgIDxzZWN0Mz4KKyAgIDx0aXRsZT5Db3B5 aW5nIENvbGxhdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUg Y29tbWFuZCA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlY29sbGF0aW9uIj4g Y2FuIGFsc28gYmUgdXNlZCB0bworICAgIGNyZWF0ZSBhIG5ldyBjb2xsYXRp b24gZnJvbSBhbiBleGlzdGluZyBjb2xsYXRpb24sIHdoaWNoIGNhbiBiZSB1 c2VmdWwgdG8KKyAgICBiZSBhYmxlIHRvIHVzZSBvcGVyYXRpbmctc3lzdGVt LWluZGVwZW5kZW50IGNvbGxhdGlvbiBuYW1lcyBpbgorICAgIGFwcGxpY2F0 aW9ucywgY3JlYXRlIGNvbXBhdGliaWxpdHkgbmFtZXMsIG9yIHVzZSBhbiBJ Q1UtcHJvdmlkZWQgY29sbGF0aW9uCisgICAgdW5kZXIgYSBtb3JlIHJlYWRh YmxlIG5hbWUuICBGb3IgZXhhbXBsZToKKzxwcm9ncmFtbGlzdGluZz4KK0NS RUFURSBDT0xMQVRJT04gZ2VybWFuIEZST00gImRlX0RFIjsKK0NSRUFURSBD T0xMQVRJT04gZnJlbmNoIEZST00gImZyLXgtaWN1IjsKK0NSRUFURSBDT0xM QVRJT04gImRlLURFLXgtaWN1IiBGUk9NICJkZS14LWljdSI7Cis8L3Byb2dy YW1saXN0aW5nPgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBUaGUg c3RhbmRhcmQgYW5kIHByZWRlZmluZWQgY29sbGF0aW9ucyBhcmUgaW4gdGhl CisgICAgc2NoZW1hIDxsaXRlcmFsPnBnX2NhdGFsb2c8L2xpdGVyYWw+LCBs aWtlIGFsbCBwcmVkZWZpbmVkIG9iamVjdHMuCisgICAgVXNlci1kZWZpbmVk IGNvbGxhdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdXNlciBzY2hlbWFz LiAgVGhpcyBhbHNvCisgICAgZW5zdXJlcyB0aGF0IHRoZXkgYXJlIHNhdmVk IGJ5IDxjb21tYW5kPnBnX2R1bXA8L2NvbW1hbmQ+LgorICAgPC9wYXJhPgog ICA8L3NlY3QyPgogIDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4 IDk0MDhhMjU1ZGMuLmI2NTI1MzllY2UgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApA QCAtMTk1NDEsNiArMTk1NDEsMTQgQEAgPHRpdGxlPkNvbGxhdGlvbiBNYW5h Z2VtZW50IEZ1bmN0aW9uczwvdGl0bGU+CiAgICAgIDx0Ym9keT4KICAgICAg IDxyb3c+CiAgICAgICAgPGVudHJ5PgorICAgICAgICA8aW5kZXh0ZXJtPjxw cmltYXJ5PnBnX2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbjwvcHJpbWFyeT48 L2luZGV4dGVybT4KKyAgICAgICAgPGxpdGVyYWw+PGZ1bmN0aW9uPnBnX2Nv bGxhdGlvbl9hY3R1YWxfdmVyc2lvbig8dHlwZT5vaWQ8Lz4pPC9mdW5jdGlv bj48L2xpdGVyYWw+CisgICAgICAgPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+ PHR5cGU+dGV4dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5SZXR1 cm4gYWN0dWFsIHZlcnNpb24gb2YgY29sbGF0aW9uIGZyb20gb3BlcmF0aW5n IHN5c3RlbTwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+Cisg ICAgICAgPGVudHJ5PgogICAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PnBn X2ltcG9ydF9zeXN0ZW1fY29sbGF0aW9uczwvcHJpbWFyeT48L2luZGV4dGVy bT4KICAgICAgICAgPGxpdGVyYWw+PGZ1bmN0aW9uPnBnX2ltcG9ydF9zeXN0 ZW1fY29sbGF0aW9ucyg8cGFyYW1ldGVyPmlmX25vdF9leGlzdHM8Lz4gPHR5 cGU+Ym9vbGVhbjwvPiwgPHBhcmFtZXRlcj5zY2hlbWE8Lz4gPHR5cGU+cmVn bmFtZXNwYWNlPC8+KTwvZnVuY3Rpb24+PC9saXRlcmFsPgogICAgICAgIDwv ZW50cnk+CkBAIC0xOTU1Miw2ICsxOTU2MCwxNSBAQCA8dGl0bGU+Q29sbGF0 aW9uIE1hbmFnZW1lbnQgRnVuY3Rpb25zPC90aXRsZT4KICAgIDwvdGFibGU+ CiAKICAgIDxwYXJhPgorICAgIDxmdW5jdGlvbj5wZ19jb2xsYXRpb25fYWN0 dWFsX3ZlcnNpb248L2Z1bmN0aW9uPiByZXR1cm5zIHRoZSBhY3R1YWwKKyAg ICB2ZXJzaW9uIG9mIHRoZSBjb2xsYXRpb24gb2JqZWN0IGFzIGl0IGlzIGN1 cnJlbnRseSBpbnN0YWxsZWQgaW4gdGhlCisgICAgb3BlcmF0aW5nIHN5c3Rl bS4gIElmIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIHZhbHVlCisgICAg aW4gPGxpdGVyYWw+cGdfY29sbGF0aW9uLmNvbGx2ZXJzaW9uPC9saXRlcmFs PiwgdGhlbiBvYmplY3RzIGRlcGVuZGluZyBvbgorICAgIHRoZSBjb2xsYXRp b24gbWlnaHQgbmVlZCB0byBiZSByZWJ1aWx0LiAgU2VlIGFsc28KKyAgICA8 eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXJjb2xsYXRpb24iPi4KKyAgIDwvcGFy YT4KKworICAgPHBhcmE+CiAgICAgPGZ1bmN0aW9uPnBnX2ltcG9ydF9zeXN0 ZW1fY29sbGF0aW9uczwvPiBwb3B1bGF0ZXMgdGhlIHN5c3RlbQogICAgIGNh dGFsb2cgPGxpdGVyYWw+cGdfY29sbGF0aW9uPC9saXRlcmFsPiB3aXRoIGNv bGxhdGlvbnMgYmFzZWQgb24gYWxsIHRoZQogICAgIGxvY2FsZXMgaXQgZmlu ZHMgb24gdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBUaGlzIGlzCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwKaW5kZXggNzkyMDFiNzhlMy4uYmIz Nzc4ZjAyZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24uc2dtbApA QCAtNzY3LDYgKzc2NywyMCBAQCA8dGl0bGU+Q29uZmlndXJhdGlvbjwvdGl0 bGU+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgICA8dGVybT48b3B0aW9uPi0td2l0aC1pY3U8L29wdGlv bj48L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4K KyAgICAgICAgIEJ1aWxkIHdpdGggc3VwcG9ydCBmb3IKKyAgICAgICAgIHRo ZSA8cHJvZHVjdG5hbWU+SUNVPC9wcm9kdWN0bmFtZT48aW5kZXh0ZXJtPjxw cmltYXJ5PklDVTwvPjwvPgorICAgICAgICAgbGlicmFyeS4gIFRoaXMgcmVx dWlyZXMgdGhlIDxwcm9kdWN0bmFtZT5JQ1U0QzwvcHJvZHVjdG5hbWU+IHBh Y2thZ2UKKyAgICAgICAgIGFzIHdlbGwKKyAgICAgICAgIGFzIDxwcm9kdWN0 bmFtZT5wa2ctY29uZmlnPC9wcm9kdWN0bmFtZT48aW5kZXh0ZXJtPjxwcmlt YXJ5PnBrZy1jb25maWc8Lz48Lz4KKyAgICAgICAgIHRvIGJlIGluc3RhbGxl ZC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KICAg ICAgICA8dGVybT48b3B0aW9uPi0td2l0aC1vcGVuc3NsPC9vcHRpb24+CiAg ICAgICAgPGluZGV4dGVybT4KICAgICAgICAgPHByaW1hcnk+T3BlblNTTDwv cHJpbWFyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tdmNjLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvbXZjYy5zZ21sCmluZGV4IDMwNmRlZjRhMTUuLjgy ZTY5ZmUyZDIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tdmNjLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL212Y2Muc2dtbApAQCAtOTY3LDcgKzk2Nyw4 IEBAIDx0aXRsZT5UYWJsZS1sZXZlbCBMb2NrIE1vZGVzPC90aXRsZT4KICAg ICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgQWNx dWlyZWQgYnkgPGNvbW1hbmQ+Q1JFQVRFIFRSSUdHRVI8L2NvbW1hbmQ+IGFu ZCBtYW55IGZvcm1zIG9mCisgICAgICAgICBBY3F1aXJlZCBieSA8Y29tbWFu ZD5DUkVBVEUgQ09MTEFUSU9OPC9jb21tYW5kPiwKKyAgICAgICAgIDxjb21t YW5kPkNSRUFURSBUUklHR0VSPC9jb21tYW5kPiwgYW5kIG1hbnkgZm9ybXMg b2YKICAgICAgICAgIDxjb21tYW5kPkFMVEVSIFRBQkxFPC9jb21tYW5kPiAo c2VlIDx4cmVmIGxpbmtlbmQ9IlNRTC1BTFRFUlRBQkxFIj4pLgogICAgICAg ICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfY29sbGF0aW9uLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX2NvbGxhdGlvbi5zZ21sCmluZGV4IDY3MDhjN2Ux MGUuLmJmOTM0Y2U3NWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfY29sbGF0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9jb2xsYXRpb24uc2dtbApAQCAtMjEsNiArMjEsOCBAQAogCiAgPHJl ZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgorQUxURVIgQ09MTEFUSU9OIDxy ZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT4gUkVGUkVTSCBWRVJTSU9O CisKIEFMVEVSIENPTExBVElPTiA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFj ZWFibGU+IFJFTkFNRSBUTyA8cmVwbGFjZWFibGU+bmV3X25hbWU8L3JlcGxh Y2VhYmxlPgogQUxURVIgQ09MTEFUSU9OIDxyZXBsYWNlYWJsZT5uYW1lPC9y ZXBsYWNlYWJsZT4gT1dORVIgVE8geyA8cmVwbGFjZWFibGU+bmV3X293bmVy PC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIg fQogQUxURVIgQ09MTEFUSU9OIDxyZXBsYWNlYWJsZT5uYW1lPC9yZXBsYWNl YWJsZT4gU0VUIFNDSEVNQSA8cmVwbGFjZWFibGU+bmV3X3NjaGVtYTwvcmVw bGFjZWFibGU+CkBAIC04NSw5ICs4Nyw2MiBAQCA8dGl0bGU+UGFyYW1ldGVy czwvdGl0bGU+CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAg PC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PGxpdGVyYWw+UkVGUkVTSCBWRVJTSU9OPC9saXRlcmFsPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVXBkYXRlZCB0 aGUgY29sbGF0aW9uIHZlcnNpb24uCisgICAgICBTZWUgPHhyZWYgbGlua2Vu ZD0ic3FsLWFsdGVyY29sbGF0aW9uLW5vdGVzIj4gYmVsb3cuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CiAg IDwvdmFyaWFibGVsaXN0PgogIDwvcmVmc2VjdDE+CiAKKyA8cmVmc2VjdDEg aWQ9InNxbC1hbHRlcmNvbGxhdGlvbi1ub3RlcyI+CisgIDx0aXRsZT5Ob3Rl czwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBXaGVuIHVzaW5nIGNvbGxhdGlv bnMgcHJvdmlkZWQgYnkgdGhlIElDVSBsaWJyYXJ5LCB0aGUgSUNVLXNwZWNp ZmljIHZlcnNpb24KKyAgIG9mIHRoZSBjb2xsYXRvciBpcyByZWNvcmRlZCBp biB0aGUgc3lzdGVtIGNhdGFsb2cgd2hlbiB0aGUgY29sbGF0aW9uIG9iamVj dAorICAgaXMgY3JlYXRlZC4gIFdoZW4gdGhlIGNvbGxhdGlvbiBpcyB0aGVu IHVzZWQsIHRoZSBjdXJyZW50IHZlcnNpb24gaXMKKyAgIGNoZWNrZWQgYWdh aW5zdCB0aGUgcmVjb3JkZWQgdmVyc2lvbiwgYW5kIGEgd2FybmluZyBpcyBp c3N1ZWQgd2hlbiB0aGVyZSBpcworICAgYSBtaXNtYXRjaCwgZm9yIGV4YW1w bGU6Cis8c2NyZWVuPgorV0FSTklORzogIElDVSBjb2xsYXRvciB2ZXJzaW9u IG1pc21hdGNoCitERVRBSUw6ICBUaGUgZGF0YWJhc2Ugd2FzIGNyZWF0ZWQg dXNpbmcgdmVyc2lvbiAxLjIuMy40LCB0aGUgbGlicmFyeSBwcm92aWRlcyB2 ZXJzaW9uIDIuMy40LjUuCitISU5UOiAgUmVidWlsZCBhbGwgb2JqZWN0cyBh ZmZlY3RlZCBieSB0aGlzIGNvbGxhdGlvbiBhbmQgcnVuIEFMVEVSIENPTExB VElPTiBwZ19jYXRhbG9nLiJ4eC14LWljdSIgUkVGUkVTSCBWRVJTSU9OLCBv ciBidWlsZCBQb3N0Z3JlU1FMIHdpdGggdGhlIHJpZ2h0IHZlcnNpb24gb2Yg SUNVLgorPC9zY3JlZW4+CisgICBBIGNoYW5nZSBpbiBjb2xsYXRpb24gZGVm aW5pdGlvbnMgY2FuIGxlYWQgdG8gY29ycnVwdCBpbmRleGVzIGFuZCBvdGhl cgorICAgcHJvYmxlbXMgd2hlcmUgdGhlIGRhdGFiYXNlIHN5c3RlbSByZWxp ZXMgb24gc3RvcmVkIG9iamVjdHMgaGF2aW5nIGEKKyAgIGNlcnRhaW4gc29y dCBvcmRlci4gIEdlbmVyYWxseSwgdGhpcyBzaG91bGQgYmUgYXZvaWRlZCwg YnV0IGl0IGNhbiBoYXBwZW4KKyAgIGluIGxlZ2l0aW1hdGUgY2lyY3Vtc3Rh bmNlcywgc3VjaCBhcyB3aGVuCisgICB1c2luZyA8Y29tbWFuZD5wZ191cGdy YWRlPC9jb21tYW5kPiB0byB1cGdyYWRlIHRvIHNlcnZlciBiaW5hcmllcyBs aW5rZWQKKyAgIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIElDVS4gIFdoZW4g dGhpcyBoYXBwZW5zLCBhbGwgb2JqZWN0cyBkZXBlbmRpbmcgb24KKyAgIHRo ZSBjb2xsYXRpb24gc2hvdWxkIGJlIHJlYnVpbHQsIGZvciBleGFtcGxlLAor ICAgdXNpbmcgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4uICBXaGVuIHRo YXQgaXMgZG9uZSwgdGhlIGNvbGxhdGlvbiB2ZXJzaW9uCisgICBjYW4gYmUg cmVmcmVzaGVkIHVzaW5nIHRoZSBjb21tYW5kIDxsaXRlcmFsPkFMVEVSIENP TExBVElPTiAuLi4gUkVGUkVTSAorICAgVkVSU0lPTjwvbGl0ZXJhbD4uICBU aGlzIHdpbGwgdXBkYXRlIHRoZSBzeXN0ZW0gY2F0YWxvZyB0byByZWNvcmQg dGhlCisgICBjdXJyZW50IGNvbGxhdG9yIHZlcnNpb24gYW5kIHdpbGwgbWFr ZSB0aGUgd2FybmluZyBnbyBhd2F5LiAgTm90ZSB0aGF0IHRoaXMKKyAgIGRv ZXMgbm90IGFjdHVhbGx5IGNoZWNrIHdoZXRoZXIgYWxsIGFmZmVjdGVkIG9i amVjdHMgaGF2ZSBiZWVuIHJlYnVpbHQKKyAgIGNvcnJlY3RseS4KKyAgPC9w YXJhPgorCisgIDxwYXJhPgorICAgVGhlIGZvbGxvd2luZyBxdWVyeSBjYW4g YmUgdXNlZCB0byBpZGVudGlmeSBhbGwgY29sbGF0aW9ucyBpbiB0aGUgY3Vy cmVudAorICAgZGF0YWJhc2UgdGhhdCBuZWVkIHRvIGJlIHJlZnJlc2hlZCBh bmQgdGhlIG9iamVjdHMgdGhhdCBkZXBlbmQgb24gdGhlbToKKzxwcm9ncmFt bGlzdGluZz48IVtDREFUQVsKK1NFTEVDVCBwZ19kZXNjcmliZV9vYmplY3Qo cmVmY2xhc3NpZCwgcmVmb2JqaWQsIHJlZm9ianN1YmlkKSBBUyAiQ29sbGF0 aW9uIiwKKyAgICAgICBwZ19kZXNjcmliZV9vYmplY3QoY2xhc3NpZCwgb2Jq aWQsIG9ianN1YmlkKSBBUyAiT2JqZWN0IgorICBGUk9NIHBnX2RlcGVuZCBk IEpPSU4gcGdfY29sbGF0aW9uIGMKKyAgICAgICBPTiByZWZjbGFzc2lkID0g J3BnX2NvbGxhdGlvbic6OnJlZ2NsYXNzIEFORCByZWZvYmppZCA9IGMub2lk CisgIFdIRVJFIGMuY29sbHZlcnNpb24gPD4gcGdfY29sbGF0aW9uX2FjdHVh bF92ZXJzaW9uKGMub2lkKQorICBPUkRFUiBCWSAxLCAyOworXV0+PC9wcm9n cmFtbGlzdGluZz4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKICA8cmVm c2VjdDE+CiAgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2NvbGxhdGlvbi5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfY29sbGF0aW9uLnNnbWwKaW5kZXgg YzA5ZTViZDZkNC4uNDdkZTlhMDliNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfY29sbGF0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfY29sbGF0aW9uLnNnbWwKQEAgLTIxLDcgKzIxLDkg QEAKIENSRUFURSBDT0xMQVRJT04gWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxh Y2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiAoCiAgICAgWyBMT0NBTEUgPSA8 cmVwbGFjZWFibGU+bG9jYWxlPC9yZXBsYWNlYWJsZT4sIF0KICAgICBbIExD X0NPTExBVEUgPSA8cmVwbGFjZWFibGU+bGNfY29sbGF0ZTwvcmVwbGFjZWFi bGU+LCBdCi0gICAgWyBMQ19DVFlQRSA9IDxyZXBsYWNlYWJsZT5sY19jdHlw ZTwvcmVwbGFjZWFibGU+IF0KKyAgICBbIExDX0NUWVBFID0gPHJlcGxhY2Vh YmxlPmxjX2N0eXBlPC9yZXBsYWNlYWJsZT4sIF0KKyAgICBbIFBST1ZJREVS ID0gPHJlcGxhY2VhYmxlPnByb3ZpZGVyPC9yZXBsYWNlYWJsZT4sIF0KKyAg ICBbIFZFUlNJT04gPSA8cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFi bGU+IF0KICkKIENSRUFURSBDT0xMQVRJT04gWyBJRiBOT1QgRVhJU1RTIF0g PHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBGUk9NIDxyZXBsYWNl YWJsZT5leGlzdGluZ19jb2xsYXRpb248L3JlcGxhY2VhYmxlPgogPC9zeW5v cHNpcz4KQEAgLTExNCw2ICsxMTYsMzkgQEAgPHRpdGxlPlBhcmFtZXRlcnM8 L3RpdGxlPgogICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgPHRlcm0+PHJlcGxhY2VhYmxlPnByb3ZpZGVyPC9yZXBs YWNlYWJsZT48L3Rlcm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBh cmE+CisgICAgICAgU3BlY2lmaWVzIHRoZSBwcm92aWRlciB0byB1c2UgZm9y IGxvY2FsZSBzZXJ2aWNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcworICAgICAg IGNvbGxhdGlvbi4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgIGFyZTogPGxp dGVyYWw+aWN1PC9saXRlcmFsPiw8aW5kZXh0ZXJtPjxwcmltYXJ5PklDVTwv PjwvPiA8bGl0ZXJhbD5saWJjPC9saXRlcmFsPi4KKyAgICAgICBUaGUgYXZh aWxhYmxlIGNob2ljZXMgZGVwZW5kIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVt IGFuZCBidWlsZCBvcHRpb25zLgorICAgICAgPC9wYXJhPgorICAgICA8L2xp c3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgPHRlcm0+PHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxh Y2VhYmxlPjwvdGVybT4KKworICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFy YT4KKyAgICAgICBTcGVjaWZpZXMgdGhlIHZlcnNpb24gc3RyaW5nIHRvIHN0 b3JlIHdpdGggdGhlIGNvbGxhdGlvbi4gIE5vcm1hbGx5LAorICAgICAgIHRo aXMgc2hvdWxkIGJlIG9taXR0ZWQsIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHZl cnNpb24gdG8gYmUgY29tcHV0ZWQKKyAgICAgICBmcm9tIHRoZSBhY3R1YWwg dmVyc2lvbiBvZiB0aGUgY29sbGF0aW9uIGFzIHByb3ZpZGVkIGJ5IHRoZSBv cGVyYXRpbmcKKyAgICAgICBzeXN0ZW0uICBUaGlzIG9wdGlvbiBpcyBpbnRl bmRlZCB0byBiZSB1c2VkCisgICAgICAgYnkgPGNvbW1hbmQ+cGdfdXBncmFk ZTwvY29tbWFuZD4gZm9yIGNvcHlpbmcgdGhlIHZlcnNpb24gZnJvbSBhbgor ICAgICAgIGV4aXN0aW5nIGluc3RhbGxhdGlvbi4KKyAgICAgIDwvcGFyYT4K KworICAgICAgPHBhcmE+CisgICAgICAgU2VlIGFsc28gPHhyZWYgbGlua2Vu ZD0ic3FsLWFsdGVyY29sbGF0aW9uIj4gZm9yIGhvdyB0byBoYW5kbGUKKyAg ICAgICBjb2xsYXRpb24gdmVyc2lvbiBtaXNtYXRjaGVzLgorICAgICAgPC9w YXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5Pgor CisgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgPHRlcm0+PHJlcGxhY2VhYmxl PmV4aXN0aW5nX2NvbGxhdGlvbjwvcmVwbGFjZWFibGU+PC90ZXJtPgogCiAg ICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5nbG9i YWwuaW4gYi9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCmluZGV4IDhlMWQ2ZTNi ZDQuLjRhY2Y3ZDJmMDYgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZS5nbG9i YWwuaW4KKysrIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpAQCAtMTc5LDYg KzE3OSw3IEBAIHBneHNkaXIgPSAkKHBrZ2xpYmRpcikvcGd4cwogIwogIyBS ZWNvcmRzIHRoZSBjaG9pY2Ugb2YgdGhlIHZhcmlvdXMgLS1lbmFibGUteHh4 IGFuZCAtLXdpdGgteHh4IG9wdGlvbnMuCiAKK3dpdGhfaWN1CT0gQHdpdGhf aWN1QAogd2l0aF9wZXJsCT0gQHdpdGhfcGVybEAKIHdpdGhfcHl0aG9uCT0g QHdpdGhfcHl0aG9uQAogd2l0aF90Y2wJPSBAd2l0aF90Y2xACkBAIC0yMDgs NiArMjA5LDkgQEAgcHl0aG9uX3ZlcnNpb24JCT0gQHB5dGhvbl92ZXJzaW9u QAogCiBrcmJfc3J2dGFiID0gQGtyYl9zcnZ0YWJACiAKK0lDVV9DRkxBR1MJ CT0gQElDVV9DRkxBR1NACitJQ1VfTElCUwkJPSBASUNVX0xJQlNACisKIFRD TFNICQkJPSBAVENMU0hACiBUQ0xfTElCUwkJPSBAVENMX0xJQlNACiBUQ0xf TElCX1NQRUMJCT0gQFRDTF9MSUJfU1BFQ0AKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvTWFrZWZpbGUKaW5kZXgg N2EwYmJiMjk0Mi4uZmZmYjBkOTViYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvTWFrZWZpbGUKQEAgLTU4 LDcgKzU4LDcgQEAgaWZuZXEgKCQoUE9SVE5BTUUpLCB3aW4zMikKIGlmbmVx ICgkKFBPUlROQU1FKSwgYWl4KQogCiBwb3N0Z3JlczogJChPQkpTKQotCSQo Q0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChleHBv cnRfZHluYW1pYykgJChjYWxsIGV4cGFuZF9zdWJzeXMsJF4pICQoTElCUykg LW8gJEAKKwkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKExERkxBR1Nf RVgpICQoZXhwb3J0X2R5bmFtaWMpICQoY2FsbCBleHBhbmRfc3Vic3lzLCRe KSAkKExJQlMpICQoSUNVX0xJQlMpIC1vICRACiAKIGVuZGlmCiBlbmRpZgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb2xsYXRpb24u YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29sbGF0aW9uLmMKaW5kZXgg NjViNjA1MWMwZC4uZWRlOTIwOTU1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19jb2xsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbGxhdGlvbi5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j bHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAi dXRpbHMvcGdfbG9jYWxlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90 cXVhbC5oIgpAQCAtNDAsOCArNDEsMTAgQEAKIE9pZAogQ29sbGF0aW9uQ3Jl YXRlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwK IAkJCQlPaWQgY29sbG93bmVyLAorCQkJCWNoYXIgY29sbHByb3ZpZGVyLAog CQkJCWludDMyIGNvbGxlbmNvZGluZywKIAkJCQljb25zdCBjaGFyICpjb2xs Y29sbGF0ZSwgY29uc3QgY2hhciAqY29sbGN0eXBlLAorCQkJCWNvbnN0IGNo YXIgKmNvbGx2ZXJzaW9uLAogCQkJCWJvb2wgaWZfbm90X2V4aXN0cykKIHsK IAlSZWxhdGlvbglyZWw7CkBAIC03OCwyOSArODEsNDcgQEAgQ29sbGF0aW9u Q3JlYXRlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFj ZSwKIAkJewogCQkJZXJlcG9ydChOT1RJQ0UsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKLQkJCQkgZXJybXNnKCJjb2xsYXRp b24gXCIlc1wiIGZvciBlbmNvZGluZyBcIiVzXCIgYWxyZWFkeSBleGlzdHMs IHNraXBwaW5nIiwKLQkJCQkJCWNvbGxuYW1lLCBwZ19lbmNvZGluZ190b19j aGFyKGNvbGxlbmNvZGluZykpKSk7CisJCQkJIGNvbGxlbmNvZGluZyA9PSAt MQorCQkJCSA/IGVycm1zZygiY29sbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4 aXN0cywgc2tpcHBpbmciLAorCQkJCQkJICBjb2xsbmFtZSkKKwkJCQkgOiBl cnJtc2coImNvbGxhdGlvbiBcIiVzXCIgZm9yIGVuY29kaW5nIFwiJXNcIiBh bHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJCQkJICBjb2xsbmFtZSwg cGdfZW5jb2RpbmdfdG9fY2hhcihjb2xsZW5jb2RpbmcpKSkpOwogCQkJcmV0 dXJuIEludmFsaWRPaWQ7CiAJCX0KIAkJZWxzZQogCQkJZXJlcG9ydChFUlJP UiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwK LQkJCQkJIGVycm1zZygiY29sbGF0aW9uIFwiJXNcIiBmb3IgZW5jb2Rpbmcg XCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKLQkJCQkJCQljb2xsbmFtZSwgcGdf ZW5jb2RpbmdfdG9fY2hhcihjb2xsZW5jb2RpbmcpKSkpOworCQkJCQkgY29s bGVuY29kaW5nID09IC0xCisJCQkJCSA/IGVycm1zZygiY29sbGF0aW9uIFwi JXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQkJICBjb2xsbmFtZSkKKwkJ CQkJIDogZXJybXNnKCJjb2xsYXRpb24gXCIlc1wiIGZvciBlbmNvZGluZyBc IiVzXCIgYWxyZWFkeSBleGlzdHMiLAorCQkJCQkJCSAgY29sbG5hbWUsIHBn X2VuY29kaW5nX3RvX2NoYXIoY29sbGVuY29kaW5nKSkpKTsKIAl9CiAKKwkv KiBvcGVuIHBnX2NvbGxhdGlvbjsgc2VlIGJlbG93IGFib3V0IHRoZSBsb2Nr IGxldmVsICovCisJcmVsID0gaGVhcF9vcGVuKENvbGxhdGlvblJlbGF0aW9u SWQsIFNoYXJlUm93RXhjbHVzaXZlTG9jayk7CisKIAkvKgotCSAqIEFsc28g Zm9yYmlkIG1hdGNoaW5nIGFuIGFueS1lbmNvZGluZyBlbnRyeS4gIFRoaXMg dGVzdCBvZiBjb3Vyc2UgaXMgbm90Ci0JICogYmFja2VkIHVwIGJ5IHRoZSB1 bmlxdWUgaW5kZXgsIGJ1dCBpdCdzIG5vdCBhIHByb2JsZW0gc2luY2Ugd2Ug ZG9uJ3QKLQkgKiBzdXBwb3J0IGFkZGluZyBhbnktZW5jb2RpbmcgZW50cmll cyBhZnRlciBpbml0ZGIuCisJICogQWxzbyBmb3JiaWQgYSBzcGVjaWZpYy1l bmNvZGluZyBjb2xsYXRpb24gc2hhZG93aW5nIGFuIGFueS1lbmNvZGluZwor CSAqIGNvbGxhdGlvbiwgb3IgYW4gYW55LWVuY29kaW5nIGNvbGxhdGlvbiBi ZWluZyBzaGFkb3dlZCAoc2VlCisJICogZ2V0X2NvbGxhdGlvbl9uYW1lKCkp LiAgVGhpcyB0ZXN0IGlzIG5vdCBiYWNrZWQgdXAgYnkgdGhlIHVuaXF1ZSBp bmRleCwKKwkgKiBzbyB3ZSB0YWtlIGEgU2hhcmVSb3dFeGNsdXNpdmVMb2Nr IGVhcmxpZXIsIHRvIHByb3RlY3QgYWdhaW5zdAorCSAqIGNvbmN1cnJlbnQg Y2hhbmdlcyBmb29saW5nIHRoaXMgY2hlY2suCiAJICovCi0JaWYgKFNlYXJj aFN5c0NhY2hlRXhpc3RzMyhDT0xMTkFNRUVOQ05TUCwKLQkJCQkJCQkgIFBv aW50ZXJHZXREYXR1bShjb2xsbmFtZSksCi0JCQkJCQkJICBJbnQzMkdldERh dHVtKC0xKSwKLQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oY29sbG5hbWVz cGFjZSkpKQorCWlmICgoY29sbGVuY29kaW5nID09IC0xICYmCisJCSBTZWFy Y2hTeXNDYWNoZUV4aXN0czMoQ09MTE5BTUVFTkNOU1AsCisJCQkJCQkJICAg UG9pbnRlckdldERhdHVtKGNvbGxuYW1lKSwKKwkJCQkJCQkgICBJbnQzMkdl dERhdHVtKEdldERhdGFiYXNlRW5jb2RpbmcoKSksCisJCQkJCQkJICAgT2Jq ZWN0SWRHZXREYXR1bShjb2xsbmFtZXNwYWNlKSkpIHx8CisJCShjb2xsZW5j b2RpbmcgIT0gLTEgJiYKKwkJIFNlYXJjaFN5c0NhY2hlRXhpc3RzMyhDT0xM TkFNRUVOQ05TUCwKKwkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oY29sbG5h bWUpLAorCQkJCQkJCSAgIEludDMyR2V0RGF0dW0oLTEpLAorCQkJCQkJCSAg IE9iamVjdElkR2V0RGF0dW0oY29sbG5hbWVzcGFjZSkpKSkKIAl7CiAJCWlm IChpZl9ub3RfZXhpc3RzKQogCQl7CisJCQloZWFwX2Nsb3NlKHJlbCwgTm9M b2NrKTsKIAkJCWVyZXBvcnQoTk9USUNFLAogCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX09CSkVDVCksCiAJCQkJIGVycm1zZygiY29sbGF0aW9u IFwiJXNcIiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLApAQCAtMTE0LDgg KzEzNSw2IEBAIENvbGxhdGlvbkNyZWF0ZShjb25zdCBjaGFyICpjb2xsbmFt ZSwgT2lkIGNvbGxuYW1lc3BhY2UsCiAJCQkJCQljb2xsbmFtZSkpKTsKIAl9 CiAKLQkvKiBvcGVuIHBnX2NvbGxhdGlvbiAqLwotCXJlbCA9IGhlYXBfb3Bl bihDb2xsYXRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAl0 dXBEZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwogCiAJLyogZm9ybSBh IHR1cGxlICovCkBAIC0xMjUsMTEgKzE0NCwxNiBAQCBDb2xsYXRpb25DcmVh dGUoY29uc3QgY2hhciAqY29sbG5hbWUsIE9pZCBjb2xsbmFtZXNwYWNlLAog CXZhbHVlc1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xsbmFtZSAtIDFdID0gTmFt ZUdldERhdHVtKCZuYW1lX25hbWUpOwogCXZhbHVlc1tBbnVtX3BnX2NvbGxh dGlvbl9jb2xsbmFtZXNwYWNlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGNv bGxuYW1lc3BhY2UpOwogCXZhbHVlc1tBbnVtX3BnX2NvbGxhdGlvbl9jb2xs b3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oY29sbG93bmVyKTsKKwl2 YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbHByb3ZpZGVyIC0gMV0gPSBD aGFyR2V0RGF0dW0oY29sbHByb3ZpZGVyKTsKIAl2YWx1ZXNbQW51bV9wZ19j b2xsYXRpb25fY29sbGVuY29kaW5nIC0gMV0gPSBJbnQzMkdldERhdHVtKGNv bGxlbmNvZGluZyk7CiAJbmFtZXN0cmNweSgmbmFtZV9jb2xsYXRlLCBjb2xs Y29sbGF0ZSk7CiAJdmFsdWVzW0FudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xs YXRlIC0gMV0gPSBOYW1lR2V0RGF0dW0oJm5hbWVfY29sbGF0ZSk7CiAJbmFt ZXN0cmNweSgmbmFtZV9jdHlwZSwgY29sbGN0eXBlKTsKIAl2YWx1ZXNbQW51 bV9wZ19jb2xsYXRpb25fY29sbGN0eXBlIC0gMV0gPSBOYW1lR2V0RGF0dW0o Jm5hbWVfY3R5cGUpOworCWlmIChjb2xsdmVyc2lvbikKKwkJdmFsdWVzW0Fu dW1fcGdfY29sbGF0aW9uX2NvbGx2ZXJzaW9uIC0gMV0gPSBDU3RyaW5nR2V0 VGV4dERhdHVtKGNvbGx2ZXJzaW9uKTsKKwllbHNlCisJCW51bGxzW0FudW1f cGdfY29sbGF0aW9uX2NvbGx2ZXJzaW9uIC0gMV0gPSB0cnVlOwogCiAJdHVw ID0gaGVhcF9mb3JtX3R1cGxlKHR1cERlc2MsIHZhbHVlcywgbnVsbHMpOwog CkBAIC0xNTksNyArMTgzLDcgQEAgQ29sbGF0aW9uQ3JlYXRlKGNvbnN0IGNo YXIgKmNvbGxuYW1lLCBPaWQgY29sbG5hbWVzcGFjZSwKIAlJbnZva2VPYmpl Y3RQb3N0Q3JlYXRlSG9vayhDb2xsYXRpb25SZWxhdGlvbklkLCBvaWQsIDAp OwogCiAJaGVhcF9mcmVldHVwbGUodHVwKTsKLQloZWFwX2Nsb3NlKHJlbCwg Um93RXhjbHVzaXZlTG9jayk7CisJaGVhcF9jbG9zZShyZWwsIE5vTG9jayk7 CiAKIAlyZXR1cm4gb2lkOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29sbGF0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29sbGF0aW9uY21kcy5jCmluZGV4IDkxOWNmYzZhMDYuLjgzNWNiMjYz ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlv bmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25j bWRzLmMKQEAgLTE0LDE1ICsxNCwxOCBAQAogICovCiAjaW5jbHVkZSAicG9z dGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNpbmNs dWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL2RlcGVuZGVuY3kuaCIKICNp bmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vz cy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb25fZm4uaCIKICNpbmNsdWRlICJj b21tYW5kcy9hbHRlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbGxhdGlv bmNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50LmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1h bmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC0z Myw2ICszNiw3IEBACiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVk ZSAidXRpbHMvc3lzY2FjaGUuaCIKIAorCiAvKgogICogQ1JFQVRFIENPTExB VElPTgogICovCkBAIC00Nyw4ICs1MSwxNCBAQCBEZWZpbmVDb2xsYXRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1l dGVycywgYm9vbCBpZl9ub3RfZQogCURlZkVsZW0gICAgKmxvY2FsZUVsID0g TlVMTDsKIAlEZWZFbGVtICAgICpsY2NvbGxhdGVFbCA9IE5VTEw7CiAJRGVm RWxlbSAgICAqbGNjdHlwZUVsID0gTlVMTDsKKwlEZWZFbGVtICAgICpwcm92 aWRlckVsID0gTlVMTDsKKwlEZWZFbGVtICAgICp2ZXJzaW9uRWwgPSBOVUxM OwogCWNoYXIJICAgKmNvbGxjb2xsYXRlID0gTlVMTDsKIAljaGFyCSAgICpj b2xsY3R5cGUgPSBOVUxMOworCWNoYXIJICAgKmNvbGxwcm92aWRlcnN0ciA9 IE5VTEw7CisJaW50CQkJY29sbGVuY29kaW5nOworCWNoYXIJCWNvbGxwcm92 aWRlciA9IDA7CisJY2hhcgkgICAqY29sbHZlcnNpb24gPSBOVUxMOwogCU9p ZAkJCW5ld29pZDsKIAlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CiAKQEAgLTcy LDYgKzgyLDEwIEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIExpc3QgKm5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25v dF9lCiAJCQlkZWZlbHAgPSAmbGNjb2xsYXRlRWw7CiAJCWVsc2UgaWYgKHBn X3N0cmNhc2VjbXAoZGVmZWwtPmRlZm5hbWUsICJsY19jdHlwZSIpID09IDAp CiAJCQlkZWZlbHAgPSAmbGNjdHlwZUVsOworCQllbHNlIGlmIChwZ19zdHJj YXNlY21wKGRlZmVsLT5kZWZuYW1lLCAicHJvdmlkZXIiKSA9PSAwKQorCQkJ ZGVmZWxwID0gJnByb3ZpZGVyRWw7CisJCWVsc2UgaWYgKHBnX3N0cmNhc2Vj bXAoZGVmZWwtPmRlZm5hbWUsICJ2ZXJzaW9uIikgPT0gMCkKKwkJCWRlZmVs cCA9ICZ2ZXJzaW9uRWw7CiAJCWVsc2UKIAkJewogCQkJZXJlcG9ydChFUlJP UiwKQEAgLTEwMyw2ICsxMTcsNyBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywg Ym9vbCBpZl9ub3RfZQogCiAJCWNvbGxjb2xsYXRlID0gcHN0cmR1cChOYW1l U3RyKCgoRm9ybV9wZ19jb2xsYXRpb24pIEdFVFNUUlVDVCh0cCkpLT5jb2xs Y29sbGF0ZSkpOwogCQljb2xsY3R5cGUgPSBwc3RyZHVwKE5hbWVTdHIoKChG b3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxjdHlwZSkp OworCQljb2xscHJvdmlkZXIgPSAoKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRT VFJVQ1QodHApKS0+Y29sbHByb3ZpZGVyOwogCiAJCVJlbGVhc2VTeXNDYWNo ZSh0cCk7CiAJfQpAQCAtMTE5LDYgKzEzNCwyNyBAQCBEZWZpbmVDb2xsYXRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFy YW1ldGVycywgYm9vbCBpZl9ub3RfZQogCWlmIChsY2N0eXBlRWwpCiAJCWNv bGxjdHlwZSA9IGRlZkdldFN0cmluZyhsY2N0eXBlRWwpOwogCisJaWYgKHBy b3ZpZGVyRWwpCisJCWNvbGxwcm92aWRlcnN0ciA9IGRlZkdldFN0cmluZyhw cm92aWRlckVsKTsKKworCWlmICh2ZXJzaW9uRWwpCisJCWNvbGx2ZXJzaW9u ID0gZGVmR2V0U3RyaW5nKHZlcnNpb25FbCk7CisKKwlpZiAoY29sbHByb3Zp ZGVyc3RyKQorCXsKKwkJaWYgKHBnX3N0cmNhc2VjbXAoY29sbHByb3ZpZGVy c3RyLCAiaWN1IikgPT0gMCkKKwkJCWNvbGxwcm92aWRlciA9IENPTExQUk9W SURFUl9JQ1U7CisJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAoY29sbHByb3Zp ZGVyc3RyLCAibGliYyIpID09IDApCisJCQljb2xscHJvdmlkZXIgPSBDT0xM UFJPVklERVJfTElCQzsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9O KSwKKwkJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGNvbGxhdGlvbiBwcm92 aWRlcjogJXMiLAorCQkJCQkJCWNvbGxwcm92aWRlcnN0cikpKTsKKwl9CisJ ZWxzZSBpZiAoIWZyb21FbCkKKwkJY29sbHByb3ZpZGVyID0gQ09MTFBST1ZJ REVSX0xJQkM7CisKIAlpZiAoIWNvbGxjb2xsYXRlKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCkBAIC0xMjksMTQgKzE2NSwyNSBAQCBEZWZpbmVDb2xsYXRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFy YW1ldGVycywgYm9vbCBpZl9ub3RfZQogCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCiAJCQkJIGVycm1zZygicGFy YW1ldGVyIFwibGNfY3R5cGVcIiBtdXN0IGJlIHNwZWNpZmllZCIpKSk7CiAK LQljaGVja19lbmNvZGluZ19sb2NhbGVfbWF0Y2hlcyhHZXREYXRhYmFzZUVu Y29kaW5nKCksIGNvbGxjb2xsYXRlLCBjb2xsY3R5cGUpOworCWlmIChjb2xs cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJY29sbGVuY29kaW5n ID0gLTE7CisJZWxzZQorCXsKKwkJY29sbGVuY29kaW5nID0gR2V0RGF0YWJh c2VFbmNvZGluZygpOworCQljaGVja19lbmNvZGluZ19sb2NhbGVfbWF0Y2hl cyhjb2xsZW5jb2RpbmcsIGNvbGxjb2xsYXRlLCBjb2xsY3R5cGUpOworCX0K KworCWlmICghY29sbHZlcnNpb24pCisJCWNvbGx2ZXJzaW9uID0gZ2V0X2Nv bGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjb2xscHJvdmlkZXIsIGNvbGxjb2xs YXRlKTsKIAogCW5ld29pZCA9IENvbGxhdGlvbkNyZWF0ZShjb2xsTmFtZSwK IAkJCQkJCQkgY29sbE5hbWVzcGFjZSwKIAkJCQkJCQkgR2V0VXNlcklkKCks Ci0JCQkJCQkJIEdldERhdGFiYXNlRW5jb2RpbmcoKSwKKwkJCQkJCQkgY29s bHByb3ZpZGVyLAorCQkJCQkJCSBjb2xsZW5jb2RpbmcsCiAJCQkJCQkJIGNv bGxjb2xsYXRlLAogCQkJCQkJCSBjb2xsY3R5cGUsCisJCQkJCQkJIGNvbGx2 ZXJzaW9uLAogCQkJCQkJCSBpZl9ub3RfZXhpc3RzKTsKIAogCWlmICghT2lk SXNWYWxpZChuZXdvaWQpKQpAQCAtMTgyLDE2ICsyMjksMTE4IEBAIElzVGhl cmVDb2xsYXRpb25Jbk5hbWVzcGFjZShjb25zdCBjaGFyICpjb2xsbmFtZSwg T2lkIG5zcE9pZCkKIAkJCQkJCWNvbGxuYW1lLCBnZXRfbmFtZXNwYWNlX25h bWUobnNwT2lkKSkpKTsKIH0KIAorLyoKKyAqIEFMVEVSIENPTExBVElPTgor ICovCitPYmplY3RBZGRyZXNzCitBbHRlckNvbGxhdGlvbihBbHRlckNvbGxh dGlvblN0bXQgKnN0bXQpCit7CisJUmVsYXRpb24JcmVsOworCU9pZAkJCWNv bGxPaWQ7CisJSGVhcFR1cGxlCXR1cDsKKwlGb3JtX3BnX2NvbGxhdGlvbiBj b2xsRm9ybTsKKwlEYXR1bQkJY29sbHZlcnNpb247CisJYm9vbAkJaXNudWxs OworCWNoYXIJICAgKm9sZHZlcnNpb247CisJY2hhcgkgICAqbmV3dmVyc2lv bjsKKwlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CisKKwlyZWwgPSBoZWFwX29w ZW4oQ29sbGF0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJ Y29sbE9pZCA9IGdldF9jb2xsYXRpb25fb2lkKHN0bXQtPmNvbGxuYW1lLCBm YWxzZSk7CisKKwlpZiAoIXBnX2NvbGxhdGlvbl9vd25lcmNoZWNrKGNvbGxP aWQsIEdldFVzZXJJZCgpKSkKKwkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tf Tk9UX09XTkVSLCBBQ0xfS0lORF9DT0xMQVRJT04sCisJCQkJCSAgIE5hbWVM aXN0VG9TdHJpbmcoc3RtdC0+Y29sbG5hbWUpKTsKKworCXR1cCA9IFNlYXJj aFN5c0NhY2hlQ29weTEoQ09MTE9JRCwgT2JqZWN0SWRHZXREYXR1bShjb2xs T2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBjb2xsYXRpb24gJXUi LCBjb2xsT2lkKTsKKworCWNvbGxGb3JtID0gKEZvcm1fcGdfY29sbGF0aW9u KSBHRVRTVFJVQ1QodHVwKTsKKwljb2xsdmVyc2lvbiA9IFN5c0NhY2hlR2V0 QXR0cihDT0xMT0lELCB0dXAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGx2ZXJz aW9uLAorCQkJCQkJCQkgICZpc251bGwpOworCW9sZHZlcnNpb24gPSBpc251 bGwgPyBOVUxMIDogVGV4dERhdHVtR2V0Q1N0cmluZyhjb2xsdmVyc2lvbik7 CisKKwluZXd2ZXJzaW9uID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lv bihjb2xsRm9ybS0+Y29sbHByb3ZpZGVyLCBOYW1lU3RyKGNvbGxGb3JtLT5j b2xsY29sbGF0ZSkpOworCisJLyogY2Fubm90IGNoYW5nZSBmcm9tIE5VTEwg dG8gbm9uLU5VTEwgb3IgdmljZSB2ZXJzYSAqLworCWlmICgoIW9sZHZlcnNp b24gJiYgbmV3dmVyc2lvbikgfHwgKG9sZHZlcnNpb24gJiYgIW5ld3ZlcnNp b24pKQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBjb2xsYXRpb24gdmVyc2lv biBjaGFuZ2UiKTsKKwllbHNlIGlmIChvbGR2ZXJzaW9uICYmIG5ld3ZlcnNp b24gJiYgc3RyY21wKG5ld3ZlcnNpb24sIG9sZHZlcnNpb24pICE9IDApCisJ eworCQlib29sICAgICAgICBudWxsc1tOYXR0c19wZ19jb2xsYXRpb25dOwor CQlib29sICAgICAgICByZXBsYWNlc1tOYXR0c19wZ19jb2xsYXRpb25dOwor CQlEYXR1bSAgICAgICB2YWx1ZXNbTmF0dHNfcGdfY29sbGF0aW9uXTsKKwor CQllcmVwb3J0KE5PVElDRSwKKwkJCQkoZXJybXNnKCJjaGFuZ2luZyB2ZXJz aW9uIGZyb20gJXMgdG8gJXMiLAorCQkJCQkJb2xkdmVyc2lvbiwgbmV3dmVy c2lvbikpKTsKKworCQltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVz KSk7CisJCW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOwor CQltZW1zZXQocmVwbGFjZXMsIGZhbHNlLCBzaXplb2YocmVwbGFjZXMpKTsK KworCQl2YWx1ZXNbQW51bV9wZ19jb2xsYXRpb25fY29sbHZlcnNpb24gLSAx XSA9IENTdHJpbmdHZXRUZXh0RGF0dW0obmV3dmVyc2lvbik7CisJCXJlcGxh Y2VzW0FudW1fcGdfY29sbGF0aW9uX2NvbGx2ZXJzaW9uIC0gMV0gPSB0cnVl OworCisJCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwgUmVsYXRpb25H ZXREZXNjcihyZWwpLAorCQkJCQkJCQl2YWx1ZXMsIG51bGxzLCByZXBsYWNl cyk7CisJfQorCWVsc2UKKwkJZXJlcG9ydChOT1RJQ0UsCisJCQkJKGVycm1z ZygidmVyc2lvbiBoYXMgbm90IGNoYW5nZWQiKSkpOworCisJQ2F0YWxvZ1R1 cGxlVXBkYXRlKHJlbCwgJnR1cC0+dF9zZWxmLCB0dXApOworCisJSW52b2tl T2JqZWN0UG9zdEFsdGVySG9vayhDb2xsYXRpb25SZWxhdGlvbklkLCBjb2xs T2lkLCAwKTsKKworCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgQ29sbGF0 aW9uUmVsYXRpb25JZCwgY29sbE9pZCk7CisKKwloZWFwX2ZyZWV0dXBsZSh0 dXApOworCWhlYXBfY2xvc2UocmVsLCBOb0xvY2spOworCisJcmV0dXJuIGFk ZHJlc3M7Cit9CisKKworRGF0dW0KK3BnX2NvbGxhdGlvbl9hY3R1YWxfdmVy c2lvbihQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCWNvbGxpZCA9IFBH X0dFVEFSR19PSUQoMCk7CisJSGVhcFR1cGxlCXRwOworCWNoYXIJICAgKmNv bGxjb2xsYXRlOworCWNoYXIJCWNvbGxwcm92aWRlcjsKKwljaGFyCSAgICp2 ZXJzaW9uOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoQ09MTE9JRCwgT2Jq ZWN0SWRHZXREYXR1bShjb2xsaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFs aWQodHApKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygiY29sbGF0aW9u IHdpdGggT0lEICV1IGRvZXMgbm90IGV4aXN0IiwgY29sbGlkKSkpOworCisJ Y29sbGNvbGxhdGUgPSBwc3RyZHVwKE5hbWVTdHIoKChGb3JtX3BnX2NvbGxh dGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxjb2xsYXRlKSk7CisJY29sbHBy b3ZpZGVyID0gKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSkt PmNvbGxwcm92aWRlcjsKKworCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisKKwl2 ZXJzaW9uID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjb2xscHJv dmlkZXIsIGNvbGxjb2xsYXRlKTsKKworCWlmICh2ZXJzaW9uKQorCQlQR19S RVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dCh2ZXJzaW9uKSk7CisJZWxz ZQorCQlQR19SRVRVUk5fTlVMTCgpOworfQorCiAKIC8qCi0gKiAiTm9ybWFs aXplIiBhIGxvY2FsZSBuYW1lLCBzdHJpcHBpbmcgb2ZmIGVuY29kaW5nIHRh Z3Mgc3VjaCBhcworICogIk5vcm1hbGl6ZSIgYSBsaWJjIGxvY2FsZSBuYW1l LCBzdHJpcHBpbmcgb2ZmIGVuY29kaW5nIHRhZ3Mgc3VjaCBhcwogICogIi51 dGY4IiAoZS5nLiwgImVuX1VTLnV0ZjgiIC0+ICJlbl9VUyIsIGJ1dCAiYnJf RlIuaXNvODg1OTE1QGV1cm8iCiAgKiAtPiAiYnJfRlJAZXVybyIpLiAgUmV0 dXJuIHRydWUgaWYgYSBuZXcsIGRpZmZlcmVudCBuYW1lIHdhcwogICogZ2Vu ZXJhdGVkLgogICovCiBwZ19hdHRyaWJ1dGVfdW51c2VkKCkKIHN0YXRpYyBi b29sCi1ub3JtYWxpemVfbG9jYWxlX25hbWUoY2hhciAqbmV3LCBjb25zdCBj aGFyICpvbGQpCitub3JtYWxpemVfbGliY19sb2NhbGVfbmFtZShjaGFyICpu ZXcsIGNvbnN0IGNoYXIgKm9sZCkKIHsKIAljaGFyCSAgICpuID0gbmV3Owog CWNvbnN0IGNoYXIgKm8gPSBvbGQ7CkBAIC0yMTksNiArMzY4LDQ2IEBAIG5v cm1hbGl6ZV9sb2NhbGVfbmFtZShjaGFyICpuZXcsIGNvbnN0IGNoYXIgKm9s ZCkKIH0KIAogCisjaWZkZWYgVVNFX0lDVQorc3RhdGljIGNoYXIgKgorZ2V0 X2ljdV9sYW5ndWFnZV90YWcoY29uc3QgY2hhciAqbG9jYWxlbmFtZSkKK3sK KwljaGFyCQlidWZbVUxPQ19GVUxMTkFNRV9DQVBBQ0lUWV07CisJVUVycm9y Q29kZQlzdGF0dXM7CisKKwlzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisJdWxv Y190b0xhbmd1YWdlVGFnKGxvY2FsZW5hbWUsIGJ1Ziwgc2l6ZW9mKGJ1Ziks IFRSVUUsICZzdGF0dXMpOworCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3VsZCBub3QgY29udmVy dCBsb2NhbGUgbmFtZSBcIiVzXCIgdG8gbGFuZ3VhZ2UgdGFnOiAlcyIsCisJ CQkJCQlsb2NhbGVuYW1lLCB1X2Vycm9yTmFtZShzdGF0dXMpKSkpOworCisJ cmV0dXJuIHBzdHJkdXAoYnVmKTsKK30KKworCitzdGF0aWMgY2hhciAqCitn ZXRfaWN1X2xvY2FsZV9jb21tZW50KGNvbnN0IGNoYXIgKmxvY2FsZW5hbWUp Cit7CisJVUVycm9yQ29kZQlzdGF0dXM7CisJVUNoYXIJCWRpc3BsYXluYW1l WzEyOF07CisJaW50MzIJCWxlbl91Y2hhcjsKKwljaGFyCSAgICpyZXN1bHQ7 CisKKwlzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisJbGVuX3VjaGFyID0gdWxv Y19nZXREaXNwbGF5TmFtZShsb2NhbGVuYW1lLCAiZW4iLCAmZGlzcGxheW5h bWVbMF0sIHNpemVvZihkaXNwbGF5bmFtZSksICZzdGF0dXMpOworCWlmIChV X0ZBSUxVUkUoc3RhdHVzKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy bXNnKCJjb3VsZCBnZXQgZGlzcGxheSBuYW1lIGZvciBsb2NhbGUgXCIlc1wi OiAlcyIsCisJCQkJCQlsb2NhbGVuYW1lLCB1X2Vycm9yTmFtZShzdGF0dXMp KSkpOworCisJaWN1X2Zyb21fdWNoYXIoJnJlc3VsdCwgZGlzcGxheW5hbWUs IGxlbl91Y2hhcik7CisKKwlyZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCS8q IFVTRV9JQ1UgKi8KKworCiBEYXR1bQogcGdfaW1wb3J0X3N5c3RlbV9jb2xs YXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CkBAIC0zMDIsOCArNDkxLDEw IEBAIHBnX2ltcG9ydF9zeXN0ZW1fY29sbGF0aW9ucyhQR19GVU5DVElPTl9B UkdTKQogCiAJCWNvdW50Kys7CiAKLQkJQ29sbGF0aW9uQ3JlYXRlKGxvY2Fs ZWJ1ZiwgbnNwaWQsIEdldFVzZXJJZCgpLCBlbmMsCi0JCQkJCQlsb2NhbGVi dWYsIGxvY2FsZWJ1ZiwgaWZfbm90X2V4aXN0cyk7CisJCUNvbGxhdGlvbkNy ZWF0ZShsb2NhbGVidWYsIG5zcGlkLCBHZXRVc2VySWQoKSwgQ09MTFBST1ZJ REVSX0xJQkMsIGVuYywKKwkJCQkJCWxvY2FsZWJ1ZiwgbG9jYWxlYnVmLAor CQkJCQkJZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihDT0xMUFJPVklE RVJfTElCQywgbG9jYWxlYnVmKSwKKwkJCQkJCWlmX25vdF9leGlzdHMpOwog CiAJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAKQEAgLTMxNiw3ICs1 MDcsNyBAQCBwZ19pbXBvcnRfc3lzdGVtX2NvbGxhdGlvbnMoUEdfRlVOQ1RJ T05fQVJHUykKIAkJICogImxvY2FsZSAtYSIgb3V0cHV0LiAgU28gc2F2ZSB1 cCB0aGUgYWxpYXNlcyBhbmQgdHJ5IHRvIGFkZCB0aGVtCiAJCSAqIGFmdGVy IHdlJ3ZlIHJlYWQgYWxsIHRoZSBvdXRwdXQuCiAJCSAqLwotCQlpZiAobm9y bWFsaXplX2xvY2FsZV9uYW1lKGFsaWFzLCBsb2NhbGVidWYpKQorCQlpZiAo bm9ybWFsaXplX2xpYmNfbG9jYWxlX25hbWUoYWxpYXMsIGxvY2FsZWJ1Zikp CiAJCXsKIAkJCWFsaWFzbGlzdCA9IGxhcHBlbmQoYWxpYXNsaXN0LCBwc3Ry ZHVwKGFsaWFzKSk7CiAJCQlsb2NhbGVsaXN0ID0gbGFwcGVuZChsb2NhbGVs aXN0LCBwc3RyZHVwKGxvY2FsZWJ1ZikpOwpAQCAtMzMzLDggKzUyNCwxMCBA QCBwZ19pbXBvcnRfc3lzdGVtX2NvbGxhdGlvbnMoUEdfRlVOQ1RJT05fQVJH UykKIAkJY2hhcgkgICAqbG9jYWxlID0gKGNoYXIgKikgbGZpcnN0KGxjbCk7 CiAJCWludAkJCWVuYyA9IGxmaXJzdF9pbnQobGNlKTsKIAotCQlDb2xsYXRp b25DcmVhdGUoYWxpYXMsIG5zcGlkLCBHZXRVc2VySWQoKSwgZW5jLAotCQkJ CQkJbG9jYWxlLCBsb2NhbGUsIHRydWUpOworCQlDb2xsYXRpb25DcmVhdGUo YWxpYXMsIG5zcGlkLCBHZXRVc2VySWQoKSwgQ09MTFBST1ZJREVSX0xJQkMs IGVuYywKKwkJCQkJCWxvY2FsZSwgbG9jYWxlLAorCQkJCQkJZ2V0X2NvbGxh dGlvbl9hY3R1YWxfdmVyc2lvbihDT0xMUFJPVklERVJfTElCQywgbG9jYWxl KSwKKwkJCQkJCXRydWUpOwogCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgp OwogCX0KIApAQCAtMzQzLDUgKzUzNiw4MiBAQCBwZ19pbXBvcnRfc3lzdGVt X2NvbGxhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkoZXJybXNnKCJu byB1c2FibGUgc3lzdGVtIGxvY2FsZXMgd2VyZSBmb3VuZCIpKSk7CiAjZW5k aWYgICAvKiBub3QgSEFWRV9MT0NBTEVfVCAmJiBub3QgV0lOMzIgKi8KIAor I2lmZGVmIFVTRV9JQ1UKKwlpZiAoIWlzX2VuY29kaW5nX3N1cHBvcnRlZF9i eV9pY3UoR2V0RGF0YWJhc2VFbmNvZGluZygpKSkKKwl7CisJCWVyZXBvcnQo Tk9USUNFLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKKwkJCQkgZXJybXNnKCJlbmNvZGluZyBcIiVzXCIgbm90IHN1 cHBvcnRlZCBieSBJQ1UiLAorCQkJCQkJcGdfZW5jb2RpbmdfdG9fY2hhcihH ZXREYXRhYmFzZUVuY29kaW5nKCkpKSkpOworCX0KKwllbHNlCisJeworCQlp bnQgaTsKKworCQkvKgorCQkgKiBTdGFydCB0aGUgbG9vcCBhdCAtMSB0byBz bmVhayBpbiB0aGUgcm9vdCBsb2NhbGUgd2l0aG91dCB0b28gbXVjaAorCQkg KiBjb2RlIGR1cGxpY2F0aW9uLgorCQkgKi8KKwkJZm9yIChpID0gLTE7IGkg PCB1Y29sX2NvdW50QXZhaWxhYmxlKCk7IGkrKykKKwkJeworCQkJY29uc3Qg Y2hhciAqbmFtZTsKKwkJCWNoYXIJICAgKmxhbmd0YWc7CisJCQljb25zdCBj aGFyICpjb2xsY29sbGF0ZTsKKwkJCVVFbnVtZXJhdGlvbiAqZW47CisJCQlV RXJyb3JDb2RlCXN0YXR1czsKKwkJCWNvbnN0IGNoYXIgKnZhbDsKKwkJCU9p ZAkJCWNvbGxpZDsKKworCQkJaWYgKGkgPT0gLTEpCisJCQkJbmFtZSA9ICIi OyAgLyogSUNVIHJvb3QgbG9jYWxlICovCisJCQllbHNlCisJCQkJbmFtZSA9 IHVjb2xfZ2V0QXZhaWxhYmxlKGkpOworCisJCQlsYW5ndGFnID0gZ2V0X2lj dV9sYW5ndWFnZV90YWcobmFtZSk7CisJCQljb2xsY29sbGF0ZSA9IFVfSUNV X1ZFUlNJT05fTUFKT1JfTlVNID49IDU0ID8gbGFuZ3RhZyA6IG5hbWU7CisJ CQljb2xsaWQgPSBDb2xsYXRpb25DcmVhdGUocHNwcmludGYoIiVzLXgtaWN1 IiwgbGFuZ3RhZyksCisJCQkJCQkJCQkgbnNwaWQsIEdldFVzZXJJZCgpLCBD T0xMUFJPVklERVJfSUNVLCAtMSwKKwkJCQkJCQkJCSBjb2xsY29sbGF0ZSwg Y29sbGNvbGxhdGUsCisJCQkJCQkJCQkgZ2V0X2NvbGxhdGlvbl9hY3R1YWxf dmVyc2lvbihDT0xMUFJPVklERVJfSUNVLCBjb2xsY29sbGF0ZSksCisJCQkJ CQkJCQkgaWZfbm90X2V4aXN0cyk7CisKKwkJCUNyZWF0ZUNvbW1lbnRzKGNv bGxpZCwgQ29sbGF0aW9uUmVsYXRpb25JZCwgMCwKKwkJCQkJCSAgIGdldF9p Y3VfbG9jYWxlX2NvbW1lbnQobmFtZSkpOworCisJCQkvKgorCQkJICogQWRk IGtleXdvcmQgdmFyaWFudHMKKwkJCSAqLworCQkJc3RhdHVzID0gVV9aRVJP X0VSUk9SOworCQkJZW4gPSB1Y29sX2dldEtleXdvcmRWYWx1ZXNGb3JMb2Nh bGUoImNvbGxhdGlvbiIsIG5hbWUsIFRSVUUsICZzdGF0dXMpOworCQkJaWYg KFVfRkFJTFVSRShzdGF0dXMpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJybXNnKCJjb3VsZCBub3QgZ2V0IGtleXdvcmQgdmFsdWVzIGZvciBs b2NhbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkJCW5hbWUsIHVfZXJyb3JOYW1l KHN0YXR1cykpKSk7CisKKwkJCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKKwkJ CXVlbnVtX3Jlc2V0KGVuLCAmc3RhdHVzKTsKKwkJCXdoaWxlICgodmFsID0g dWVudW1fbmV4dChlbiwgTlVMTCwgJnN0YXR1cykpKQorCQkJeworCQkJCWNo YXIgKmxvY2FsZWlkID0gcHNwcmludGYoIiVzQGNvbGxhdGlvbj0lcyIsIG5h bWUsIHZhbCk7CisKKwkJCQlsYW5ndGFnID0gIGdldF9pY3VfbGFuZ3VhZ2Vf dGFnKGxvY2FsZWlkKTsKKwkJCQljb2xsY29sbGF0ZSA9IFVfSUNVX1ZFUlNJ T05fTUFKT1JfTlVNID49IDU0ID8gbGFuZ3RhZyA6IGxvY2FsZWlkOworCQkJ CWNvbGxpZCA9IENvbGxhdGlvbkNyZWF0ZShwc3ByaW50ZigiJXMteC1pY3Ui LCBsYW5ndGFnKSwKKwkJCQkJCQkJCQkgbnNwaWQsIEdldFVzZXJJZCgpLCBD T0xMUFJPVklERVJfSUNVLCAtMSwKKwkJCQkJCQkJCQkgY29sbGNvbGxhdGUs IGNvbGxjb2xsYXRlLAorCQkJCQkJCQkJCSBnZXRfY29sbGF0aW9uX2FjdHVh bF92ZXJzaW9uKENPTExQUk9WSURFUl9JQ1UsIGNvbGxjb2xsYXRlKSwKKwkJ CQkJCQkJCQkgaWZfbm90X2V4aXN0cyk7CisJCQkJQ3JlYXRlQ29tbWVudHMo Y29sbGlkLCBDb2xsYXRpb25SZWxhdGlvbklkLCAwLAorCQkJCQkJCSAgIGdl dF9pY3VfbG9jYWxlX2NvbW1lbnQobG9jYWxlaWQpKTsKKwkJCX0KKwkJCWlm IChVX0ZBSUxVUkUoc3RhdHVzKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJKGVycm1zZygiY291bGQgbm90IGdldCBrZXl3b3JkIHZhbHVlcyBmb3Ig bG9jYWxlIFwiJXNcIjogJXMiLAorCQkJCQkJCQluYW1lLCB1X2Vycm9yTmFt ZShzdGF0dXMpKSkpOworCQkJdWVudW1fY2xvc2UoZW4pOworCQl9CisJfQor I2VuZGlmCisKIAlQR19SRVRVUk5fVk9JRCgpOwogfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbW9uLm1rIGIvc3JjL2JhY2tlbmQvY29tbW9uLm1r CmluZGV4IDVkNTk5ZGJkMGMuLjBiNTc1NDNiYzQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1vbi5taworKysgYi9zcmMvYmFja2VuZC9jb21tb24u bWsKQEAgLTgsNiArOCw4IEBACiAjIHRoaXMgZGlyZWN0b3J5IGFuZCBTVUJE SVJTIHRvIHN1YmRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgbW9yZSB0aGluZ3MK ICMgdG8gYnVpbGQuCiAKK292ZXJyaWRlIENQUEZMQUdTIDo9ICQoQ1BQRkxB R1MpICQoSUNVX0NGTEFHUykKKwogaWZkZWYgUEFSVElBTF9MSU5LSU5HCiAj IG9sZCBzdHlsZTogbGlua2luZyB1c2luZyBTVUJTWVMubwogc3Vic3lzZmls ZW5hbWUgPSBTVUJTWVMubwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3Mu YwppbmRleCAyNWZkMDUxZDZlLi5hYzQ4OTAzMTI2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMzAyOCw2ICszMDI4LDE2IEBAIF9j b3B5QWx0ZXJUYWJsZUNtZChjb25zdCBBbHRlclRhYmxlQ21kICpmcm9tKQog CXJldHVybiBuZXdub2RlOwogfQogCitzdGF0aWMgQWx0ZXJDb2xsYXRpb25T dG10ICoKK19jb3B5QWx0ZXJDb2xsYXRpb25TdG10KGNvbnN0IEFsdGVyQ29s bGF0aW9uU3RtdCAqZnJvbSkKK3sKKwlBbHRlckNvbGxhdGlvblN0bXQgKm5l d25vZGUgPSBtYWtlTm9kZShBbHRlckNvbGxhdGlvblN0bXQpOworCisJQ09Q WV9OT0RFX0ZJRUxEKGNvbGxuYW1lKTsKKworCXJldHVybiBuZXdub2RlOwor fQorCiBzdGF0aWMgQWx0ZXJEb21haW5TdG10ICoKIF9jb3B5QWx0ZXJEb21h aW5TdG10KGNvbnN0IEFsdGVyRG9tYWluU3RtdCAqZnJvbSkKIHsKQEAgLTQ5 NjAsNiArNDk3MCw5IEBAIGNvcHlPYmplY3QoY29uc3Qgdm9pZCAqZnJvbSkK IAkJY2FzZSBUX0FsdGVyVGFibGVDbWQ6CiAJCQlyZXR2YWwgPSBfY29weUFs dGVyVGFibGVDbWQoZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX0FsdGVy Q29sbGF0aW9uU3RtdDoKKwkJCXJldHZhbCA9IF9jb3B5QWx0ZXJDb2xsYXRp b25TdG10KGZyb20pOworCQkJYnJlYWs7CiAJCWNhc2UgVF9BbHRlckRvbWFp blN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weUFsdGVyRG9tYWluU3RtdChmcm9t KTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv ZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5j CmluZGV4IDY3NTI5ZTNmODYuLjIxNTQ3MzQ1ZDEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKQEAgLTEwODcsNiArMTA4NywxNCBAQCBf ZXF1YWxBbHRlclRhYmxlQ21kKGNvbnN0IEFsdGVyVGFibGVDbWQgKmEsIGNv bnN0IEFsdGVyVGFibGVDbWQgKmIpCiB9CiAKIHN0YXRpYyBib29sCitfZXF1 YWxBbHRlckNvbGxhdGlvblN0bXQoY29uc3QgQWx0ZXJDb2xsYXRpb25TdG10 ICphLCBjb25zdCBBbHRlckNvbGxhdGlvblN0bXQgKmIpCit7CisJQ09NUEFS RV9OT0RFX0ZJRUxEKGNvbGxuYW1lKTsKKworCXJldHVybiB0cnVlOworfQor CitzdGF0aWMgYm9vbAogX2VxdWFsQWx0ZXJEb21haW5TdG10KGNvbnN0IEFs dGVyRG9tYWluU3RtdCAqYSwgY29uc3QgQWx0ZXJEb21haW5TdG10ICpiKQog ewogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHN1YnR5cGUpOwpAQCAtMzE1Nyw2 ICszMTY1LDkgQEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAq YikKIAkJY2FzZSBUX0FsdGVyVGFibGVDbWQ6CiAJCQlyZXR2YWwgPSBfZXF1 YWxBbHRlclRhYmxlQ21kKGEsIGIpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9B bHRlckNvbGxhdGlvblN0bXQ6CisJCQlyZXR2YWwgPSBfZXF1YWxBbHRlckNv bGxhdGlvblN0bXQoYSwgYik7CisJCQlicmVhazsKIAkJY2FzZSBUX0FsdGVy RG9tYWluU3RtdDoKIAkJCXJldHZhbCA9IF9lcXVhbEFsdGVyRG9tYWluU3Rt dChhLCBiKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5k ZXggNjMxNjY4OGE4OC4uNWE3ZTdhZmYyMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKIH0KIAogJXR5cGUgPG5vZGU+CXN0bXQgc2No ZW1hX3N0bXQKLQkJQWx0ZXJFdmVudFRyaWdTdG10CisJCUFsdGVyRXZlbnRU cmlnU3RtdCBBbHRlckNvbGxhdGlvblN0bXQKIAkJQWx0ZXJEYXRhYmFzZVN0 bXQgQWx0ZXJEYXRhYmFzZVNldFN0bXQgQWx0ZXJEb21haW5TdG10IEFsdGVy RW51bVN0bXQKIAkJQWx0ZXJGZHdTdG10IEFsdGVyRm9yZWlnblNlcnZlclN0 bXQgQWx0ZXJHcm91cFN0bXQKIAkJQWx0ZXJPYmplY3REZXBlbmRzU3RtdCBB bHRlck9iamVjdFNjaGVtYVN0bXQgQWx0ZXJPd25lclN0bXQKQEAgLTgxMiw2 ICs4MTIsNyBAQCBzdG10bXVsdGk6CXN0bXRtdWx0aSAnOycgc3RtdAogCiBz dG10IDoKIAkJCUFsdGVyRXZlbnRUcmlnU3RtdAorCQkJfCBBbHRlckNvbGxh dGlvblN0bXQKIAkJCXwgQWx0ZXJEYXRhYmFzZVN0bXQKIAkJCXwgQWx0ZXJE YXRhYmFzZVNldFN0bXQKIAkJCXwgQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0 bXQKQEAgLTk2NjAsNiArOTY2MSwyMSBAQCBEcm9wZGJTdG10OiBEUk9QIERB VEFCQVNFIGRhdGFiYXNlX25hbWUKIAogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCiAgKgorICoJCUFMVEVSIENPTExBVElPTgorICoKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworQWx0ZXJDb2xs YXRpb25TdG10OiBBTFRFUiBDT0xMQVRJT04gYW55X25hbWUgUkVGUkVTSCBW RVJTSU9OX1AKKwkJCQl7CisJCQkJCUFsdGVyQ29sbGF0aW9uU3RtdCAqbiA9 IG1ha2VOb2RlKEFsdGVyQ29sbGF0aW9uU3RtdCk7CisJCQkJCW4tPmNvbGxu YW1lID0gJDM7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJOwor CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKICAq CQlBTFRFUiBTWVNURU0KICAqCiAgKiBUaGlzIGlzIHVzZWQgdG8gY2hhbmdl IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBwZXJzaXN0ZW50bHkuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZWdleC9yZWdjX3BnX2xvY2FsZS5jIGIv c3JjL2JhY2tlbmQvcmVnZXgvcmVnY19wZ19sb2NhbGUuYwppbmRleCAwMTIx Y2JiMmFkLi40YmRjYjRmZDZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZWdleC9yZWdjX3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlZ2V4 L3JlZ2NfcGdfbG9jYWxlLmMKQEAgLTY4LDcgKzY4LDggQEAgdHlwZWRlZiBl bnVtCiAJUEdfUkVHRVhfTE9DQUxFX1dJREUsCQkvKiBVc2UgPHdjdHlwZS5o PiBmdW5jdGlvbnMgKi8KIAlQR19SRUdFWF9MT0NBTEVfMUJZVEUsCQkvKiBV c2UgPGN0eXBlLmg+IGZ1bmN0aW9ucyAqLwogCVBHX1JFR0VYX0xPQ0FMRV9X SURFX0wsCQkvKiBVc2UgbG9jYWxlX3QgPHdjdHlwZS5oPiBmdW5jdGlvbnMg Ki8KLQlQR19SRUdFWF9MT0NBTEVfMUJZVEVfTAkJLyogVXNlIGxvY2FsZV90 IDxjdHlwZS5oPiBmdW5jdGlvbnMgKi8KKwlQR19SRUdFWF9MT0NBTEVfMUJZ VEVfTCwJLyogVXNlIGxvY2FsZV90IDxjdHlwZS5oPiBmdW5jdGlvbnMgKi8K KwlQR19SRUdFWF9MT0NBTEVfSUNVCQkJLyogVXNlIElDVSB1Y2hhci5oIGZ1 bmN0aW9ucyAqLwogfSBQR19Mb2NhbGVfU3RyYXRlZ3k7CiAKIHN0YXRpYyBQ R19Mb2NhbGVfU3RyYXRlZ3kgcGdfcmVnZXhfc3RyYXRlZ3k7CkBAIC0yNjIs NiArMjYzLDExIEBAIHBnX3NldF9yZWdleF9jb2xsYXRpb24oT2lkIGNvbGxh dGlvbikKIAkJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1c2Ug dG8gc2V0IHRoZSBjb2xsYXRpb24gZXhwbGljaXRseS4iKSkpOwogCQl9CiAK KyNpZmRlZiBVU0VfSUNVCisJCWlmIChwZ19yZWdleF9sb2NhbGUgJiYgcGdf cmVnZXhfbG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQor CQkJcGdfcmVnZXhfc3RyYXRlZ3kgPSBQR19SRUdFWF9MT0NBTEVfSUNVOwor CQllbHNlCisjZW5kaWYKICNpZmRlZiBVU0VfV0lERV9VUFBFUl9MT1dFUgog CQlpZiAoR2V0RGF0YWJhc2VFbmNvZGluZygpID09IFBHX1VURjgpCiAJCXsK QEAgLTMwMywxMyArMzA5LDE4IEBAIHBnX3djX2lzZGlnaXQocGdfd2NoYXIg YykKIAkJY2FzZSBQR19SRUdFWF9MT0NBTEVfV0lERV9MOgogI2lmIGRlZmlu ZWQoSEFWRV9MT0NBTEVfVCkgJiYgZGVmaW5lZChVU0VfV0lERV9VUFBFUl9M T1dFUikKIAkJCWlmIChzaXplb2Yod2NoYXJfdCkgPj0gNCB8fCBjIDw9IChw Z193Y2hhcikgMHhGRkZGKQotCQkJCXJldHVybiBpc3dkaWdpdF9sKCh3aW50 X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZSk7CisJCQkJcmV0dXJuIGlzd2RpZ2l0 X2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KTsKICNl bmRpZgogCQkJLyogRkFMTCBUSFJVICovCiAJCWNhc2UgUEdfUkVHRVhfTE9D QUxFXzFCWVRFX0w6CiAjaWZkZWYgSEFWRV9MT0NBTEVfVAogCQkJcmV0dXJu IChjIDw9IChwZ193Y2hhcikgVUNIQVJfTUFYICYmCi0JCQkJCWlzZGlnaXRf bCgodW5zaWduZWQgY2hhcikgYywgcGdfcmVnZXhfbG9jYWxlKSk7CisJCQkJ CWlzZGlnaXRfbCgodW5zaWduZWQgY2hhcikgYywgcGdfcmVnZXhfbG9jYWxl LT5pbmZvLmx0KSk7CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIFBHX1JF R0VYX0xPQ0FMRV9JQ1U6CisjaWZkZWYgVVNFX0lDVQorCQkJcmV0dXJuIHVf aXNkaWdpdChjKTsKICNlbmRpZgogCQkJYnJlYWs7CiAJfQpAQCAtMzM2LDEz ICszNDcsMTggQEAgcGdfd2NfaXNhbHBoYShwZ193Y2hhciBjKQogCQljYXNl IFBHX1JFR0VYX0xPQ0FMRV9XSURFX0w6CiAjaWYgZGVmaW5lZChIQVZFX0xP Q0FMRV9UKSAmJiBkZWZpbmVkKFVTRV9XSURFX1VQUEVSX0xPV0VSKQogCQkJ aWYgKHNpemVvZih3Y2hhcl90KSA+PSA0IHx8IGMgPD0gKHBnX3djaGFyKSAw eEZGRkYpCi0JCQkJcmV0dXJuIGlzd2FscGhhX2woKHdpbnRfdCkgYywgcGdf cmVnZXhfbG9jYWxlKTsKKwkJCQlyZXR1cm4gaXN3YWxwaGFfbCgod2ludF90 KSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8ubHQpOwogI2VuZGlmCiAJCQkv KiBGQUxMIFRIUlUgKi8KIAkJY2FzZSBQR19SRUdFWF9MT0NBTEVfMUJZVEVf TDoKICNpZmRlZiBIQVZFX0xPQ0FMRV9UCiAJCQlyZXR1cm4gKGMgPD0gKHBn X3djaGFyKSBVQ0hBUl9NQVggJiYKLQkJCQkJaXNhbHBoYV9sKCh1bnNpZ25l ZCBjaGFyKSBjLCBwZ19yZWdleF9sb2NhbGUpKTsKKwkJCQkJaXNhbHBoYV9s KCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8ubHQp KTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgUEdfUkVHRVhfTE9DQUxF X0lDVToKKyNpZmRlZiBVU0VfSUNVCisJCQlyZXR1cm4gdV9pc2FscGhhKGMp OwogI2VuZGlmCiAJCQlicmVhazsKIAl9CkBAIC0zNjksMTMgKzM4NSwxOCBA QCBwZ193Y19pc2FsbnVtKHBnX3djaGFyIGMpCiAJCWNhc2UgUEdfUkVHRVhf TE9DQUxFX1dJREVfTDoKICNpZiBkZWZpbmVkKEhBVkVfTE9DQUxFX1QpICYm IGRlZmluZWQoVVNFX1dJREVfVVBQRVJfTE9XRVIpCiAJCQlpZiAoc2l6ZW9m KHdjaGFyX3QpID49IDQgfHwgYyA8PSAocGdfd2NoYXIpIDB4RkZGRikKLQkJ CQlyZXR1cm4gaXN3YWxudW1fbCgod2ludF90KSBjLCBwZ19yZWdleF9sb2Nh bGUpOworCQkJCXJldHVybiBpc3dhbG51bV9sKCh3aW50X3QpIGMsIHBnX3Jl Z2V4X2xvY2FsZS0+aW5mby5sdCk7CiAjZW5kaWYKIAkJCS8qIEZBTEwgVEhS VSAqLwogCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV8xQllURV9MOgogI2lmZGVm IEhBVkVfTE9DQUxFX1QKIAkJCXJldHVybiAoYyA8PSAocGdfd2NoYXIpIFVD SEFSX01BWCAmJgotCQkJCQlpc2FsbnVtX2woKHVuc2lnbmVkIGNoYXIpIGMs IHBnX3JlZ2V4X2xvY2FsZSkpOworCQkJCQlpc2FsbnVtX2woKHVuc2lnbmVk IGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCkpOworI2VuZGlm CisJCQlicmVhazsKKwkJY2FzZSBQR19SRUdFWF9MT0NBTEVfSUNVOgorI2lm ZGVmIFVTRV9JQ1UKKwkJCXJldHVybiB1X2lzYWxudW0oYyk7CiAjZW5kaWYK IAkJCWJyZWFrOwogCX0KQEAgLTQwMiwxMyArNDIzLDE4IEBAIHBnX3djX2lz dXBwZXIocGdfd2NoYXIgYykKIAkJY2FzZSBQR19SRUdFWF9MT0NBTEVfV0lE RV9MOgogI2lmIGRlZmluZWQoSEFWRV9MT0NBTEVfVCkgJiYgZGVmaW5lZChV U0VfV0lERV9VUFBFUl9MT1dFUikKIAkJCWlmIChzaXplb2Yod2NoYXJfdCkg Pj0gNCB8fCBjIDw9IChwZ193Y2hhcikgMHhGRkZGKQotCQkJCXJldHVybiBp c3d1cHBlcl9sKCh3aW50X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZSk7CisJCQkJ cmV0dXJuIGlzd3VwcGVyX2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxl LT5pbmZvLmx0KTsKICNlbmRpZgogCQkJLyogRkFMTCBUSFJVICovCiAJCWNh c2UgUEdfUkVHRVhfTE9DQUxFXzFCWVRFX0w6CiAjaWZkZWYgSEFWRV9MT0NB TEVfVAogCQkJcmV0dXJuIChjIDw9IChwZ193Y2hhcikgVUNIQVJfTUFYICYm Ci0JCQkJCWlzdXBwZXJfbCgodW5zaWduZWQgY2hhcikgYywgcGdfcmVnZXhf bG9jYWxlKSk7CisJCQkJCWlzdXBwZXJfbCgodW5zaWduZWQgY2hhcikgYywg cGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KSk7CisjZW5kaWYKKwkJCWJyZWFr OworCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV9JQ1U6CisjaWZkZWYgVVNFX0lD VQorCQkJcmV0dXJuIHVfaXN1cHBlcihjKTsKICNlbmRpZgogCQkJYnJlYWs7 CiAJfQpAQCAtNDM1LDEzICs0NjEsMTggQEAgcGdfd2NfaXNsb3dlcihwZ193 Y2hhciBjKQogCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV9XSURFX0w6CiAjaWYg ZGVmaW5lZChIQVZFX0xPQ0FMRV9UKSAmJiBkZWZpbmVkKFVTRV9XSURFX1VQ UEVSX0xPV0VSKQogCQkJaWYgKHNpemVvZih3Y2hhcl90KSA+PSA0IHx8IGMg PD0gKHBnX3djaGFyKSAweEZGRkYpCi0JCQkJcmV0dXJuIGlzd2xvd2VyX2wo KHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxlKTsKKwkJCQlyZXR1cm4gaXN3 bG93ZXJfbCgod2ludF90KSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8ubHQp OwogI2VuZGlmCiAJCQkvKiBGQUxMIFRIUlUgKi8KIAkJY2FzZSBQR19SRUdF WF9MT0NBTEVfMUJZVEVfTDoKICNpZmRlZiBIQVZFX0xPQ0FMRV9UCiAJCQly ZXR1cm4gKGMgPD0gKHBnX3djaGFyKSBVQ0hBUl9NQVggJiYKLQkJCQkJaXNs b3dlcl9sKCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdleF9sb2NhbGUpKTsK KwkJCQkJaXNsb3dlcl9sKCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdleF9s b2NhbGUtPmluZm8ubHQpKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2Ug UEdfUkVHRVhfTE9DQUxFX0lDVToKKyNpZmRlZiBVU0VfSUNVCisJCQlyZXR1 cm4gdV9pc2xvd2VyKGMpOwogI2VuZGlmCiAJCQlicmVhazsKIAl9CkBAIC00 NjgsMTMgKzQ5OSwxOCBAQCBwZ193Y19pc2dyYXBoKHBnX3djaGFyIGMpCiAJ CWNhc2UgUEdfUkVHRVhfTE9DQUxFX1dJREVfTDoKICNpZiBkZWZpbmVkKEhB VkVfTE9DQUxFX1QpICYmIGRlZmluZWQoVVNFX1dJREVfVVBQRVJfTE9XRVIp CiAJCQlpZiAoc2l6ZW9mKHdjaGFyX3QpID49IDQgfHwgYyA8PSAocGdfd2No YXIpIDB4RkZGRikKLQkJCQlyZXR1cm4gaXN3Z3JhcGhfbCgod2ludF90KSBj LCBwZ19yZWdleF9sb2NhbGUpOworCQkJCXJldHVybiBpc3dncmFwaF9sKCh3 aW50X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCk7CiAjZW5kaWYK IAkJCS8qIEZBTEwgVEhSVSAqLwogCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV8x QllURV9MOgogI2lmZGVmIEhBVkVfTE9DQUxFX1QKIAkJCXJldHVybiAoYyA8 PSAocGdfd2NoYXIpIFVDSEFSX01BWCAmJgotCQkJCQlpc2dyYXBoX2woKHVu c2lnbmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2FsZSkpOworCQkJCQlpc2dy YXBoX2woKHVuc2lnbmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5m by5sdCkpOworI2VuZGlmCisJCQlicmVhazsKKwkJY2FzZSBQR19SRUdFWF9M T0NBTEVfSUNVOgorI2lmZGVmIFVTRV9JQ1UKKwkJCXJldHVybiB1X2lzZ3Jh cGgoYyk7CiAjZW5kaWYKIAkJCWJyZWFrOwogCX0KQEAgLTUwMSwxMyArNTM3 LDE4IEBAIHBnX3djX2lzcHJpbnQocGdfd2NoYXIgYykKIAkJY2FzZSBQR19S RUdFWF9MT0NBTEVfV0lERV9MOgogI2lmIGRlZmluZWQoSEFWRV9MT0NBTEVf VCkgJiYgZGVmaW5lZChVU0VfV0lERV9VUFBFUl9MT1dFUikKIAkJCWlmIChz aXplb2Yod2NoYXJfdCkgPj0gNCB8fCBjIDw9IChwZ193Y2hhcikgMHhGRkZG KQotCQkJCXJldHVybiBpc3dwcmludF9sKCh3aW50X3QpIGMsIHBnX3JlZ2V4 X2xvY2FsZSk7CisJCQkJcmV0dXJuIGlzd3ByaW50X2woKHdpbnRfdCkgYywg cGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KTsKICNlbmRpZgogCQkJLyogRkFM TCBUSFJVICovCiAJCWNhc2UgUEdfUkVHRVhfTE9DQUxFXzFCWVRFX0w6CiAj aWZkZWYgSEFWRV9MT0NBTEVfVAogCQkJcmV0dXJuIChjIDw9IChwZ193Y2hh cikgVUNIQVJfTUFYICYmCi0JCQkJCWlzcHJpbnRfbCgodW5zaWduZWQgY2hh cikgYywgcGdfcmVnZXhfbG9jYWxlKSk7CisJCQkJCWlzcHJpbnRfbCgodW5z aWduZWQgY2hhcikgYywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KSk7Cisj ZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV9JQ1U6 CisjaWZkZWYgVVNFX0lDVQorCQkJcmV0dXJuIHVfaXNwcmludChjKTsKICNl bmRpZgogCQkJYnJlYWs7CiAJfQpAQCAtNTM0LDEzICs1NzUsMTggQEAgcGdf d2NfaXNwdW5jdChwZ193Y2hhciBjKQogCQljYXNlIFBHX1JFR0VYX0xPQ0FM RV9XSURFX0w6CiAjaWYgZGVmaW5lZChIQVZFX0xPQ0FMRV9UKSAmJiBkZWZp bmVkKFVTRV9XSURFX1VQUEVSX0xPV0VSKQogCQkJaWYgKHNpemVvZih3Y2hh cl90KSA+PSA0IHx8IGMgPD0gKHBnX3djaGFyKSAweEZGRkYpCi0JCQkJcmV0 dXJuIGlzd3B1bmN0X2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxlKTsK KwkJCQlyZXR1cm4gaXN3cHVuY3RfbCgod2ludF90KSBjLCBwZ19yZWdleF9s b2NhbGUtPmluZm8ubHQpOwogI2VuZGlmCiAJCQkvKiBGQUxMIFRIUlUgKi8K IAkJY2FzZSBQR19SRUdFWF9MT0NBTEVfMUJZVEVfTDoKICNpZmRlZiBIQVZF X0xPQ0FMRV9UCiAJCQlyZXR1cm4gKGMgPD0gKHBnX3djaGFyKSBVQ0hBUl9N QVggJiYKLQkJCQkJaXNwdW5jdF9sKCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19y ZWdleF9sb2NhbGUpKTsKKwkJCQkJaXNwdW5jdF9sKCh1bnNpZ25lZCBjaGFy KSBjLCBwZ19yZWdleF9sb2NhbGUtPmluZm8ubHQpKTsKKyNlbmRpZgorCQkJ YnJlYWs7CisJCWNhc2UgUEdfUkVHRVhfTE9DQUxFX0lDVToKKyNpZmRlZiBV U0VfSUNVCisJCQlyZXR1cm4gdV9pc3B1bmN0KGMpOwogI2VuZGlmCiAJCQli cmVhazsKIAl9CkBAIC01NjcsMTMgKzYxMywxOCBAQCBwZ193Y19pc3NwYWNl KHBnX3djaGFyIGMpCiAJCWNhc2UgUEdfUkVHRVhfTE9DQUxFX1dJREVfTDoK ICNpZiBkZWZpbmVkKEhBVkVfTE9DQUxFX1QpICYmIGRlZmluZWQoVVNFX1dJ REVfVVBQRVJfTE9XRVIpCiAJCQlpZiAoc2l6ZW9mKHdjaGFyX3QpID49IDQg fHwgYyA8PSAocGdfd2NoYXIpIDB4RkZGRikKLQkJCQlyZXR1cm4gaXN3c3Bh Y2VfbCgod2ludF90KSBjLCBwZ19yZWdleF9sb2NhbGUpOworCQkJCXJldHVy biBpc3dzcGFjZV9sKCh3aW50X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5m by5sdCk7CiAjZW5kaWYKIAkJCS8qIEZBTEwgVEhSVSAqLwogCQljYXNlIFBH X1JFR0VYX0xPQ0FMRV8xQllURV9MOgogI2lmZGVmIEhBVkVfTE9DQUxFX1QK IAkJCXJldHVybiAoYyA8PSAocGdfd2NoYXIpIFVDSEFSX01BWCAmJgotCQkJ CQlpc3NwYWNlX2woKHVuc2lnbmVkIGNoYXIpIGMsIHBnX3JlZ2V4X2xvY2Fs ZSkpOworCQkJCQlpc3NwYWNlX2woKHVuc2lnbmVkIGNoYXIpIGMsIHBnX3Jl Z2V4X2xvY2FsZS0+aW5mby5sdCkpOworI2VuZGlmCisJCQlicmVhazsKKwkJ Y2FzZSBQR19SRUdFWF9MT0NBTEVfSUNVOgorI2lmZGVmIFVTRV9JQ1UKKwkJ CXJldHVybiB1X2lzc3BhY2UoYyk7CiAjZW5kaWYKIAkJCWJyZWFrOwogCX0K QEAgLTYwOCwxNSArNjU5LDIwIEBAIHBnX3djX3RvdXBwZXIocGdfd2NoYXIg YykKIAkJY2FzZSBQR19SRUdFWF9MT0NBTEVfV0lERV9MOgogI2lmIGRlZmlu ZWQoSEFWRV9MT0NBTEVfVCkgJiYgZGVmaW5lZChVU0VfV0lERV9VUFBFUl9M T1dFUikKIAkJCWlmIChzaXplb2Yod2NoYXJfdCkgPj0gNCB8fCBjIDw9IChw Z193Y2hhcikgMHhGRkZGKQotCQkJCXJldHVybiB0b3d1cHBlcl9sKCh3aW50 X3QpIGMsIHBnX3JlZ2V4X2xvY2FsZSk7CisJCQkJcmV0dXJuIHRvd3VwcGVy X2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxlLT5pbmZvLmx0KTsKICNl bmRpZgogCQkJLyogRkFMTCBUSFJVICovCiAJCWNhc2UgUEdfUkVHRVhfTE9D QUxFXzFCWVRFX0w6CiAjaWZkZWYgSEFWRV9MT0NBTEVfVAogCQkJaWYgKGMg PD0gKHBnX3djaGFyKSBVQ0hBUl9NQVgpCi0JCQkJcmV0dXJuIHRvdXBwZXJf bCgodW5zaWduZWQgY2hhcikgYywgcGdfcmVnZXhfbG9jYWxlKTsKKwkJCQly ZXR1cm4gdG91cHBlcl9sKCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdleF9s b2NhbGUtPmluZm8ubHQpOwogI2VuZGlmCiAJCQlyZXR1cm4gYzsKKwkJY2Fz ZSBQR19SRUdFWF9MT0NBTEVfSUNVOgorI2lmZGVmIFVTRV9JQ1UKKwkJCXJl dHVybiB1X3RvdXBwZXIoYyk7CisjZW5kaWYKKwkJCWJyZWFrOwogCX0KIAly ZXR1cm4gMDsJCQkJCS8qIGNhbid0IGdldCBoZXJlLCBidXQga2VlcCBjb21w aWxlciBxdWlldCAqLwogfQpAQCAtNjQ5LDE1ICs3MDUsMjAgQEAgcGdfd2Nf dG9sb3dlcihwZ193Y2hhciBjKQogCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV9X SURFX0w6CiAjaWYgZGVmaW5lZChIQVZFX0xPQ0FMRV9UKSAmJiBkZWZpbmVk KFVTRV9XSURFX1VQUEVSX0xPV0VSKQogCQkJaWYgKHNpemVvZih3Y2hhcl90 KSA+PSA0IHx8IGMgPD0gKHBnX3djaGFyKSAweEZGRkYpCi0JCQkJcmV0dXJu IHRvd2xvd2VyX2woKHdpbnRfdCkgYywgcGdfcmVnZXhfbG9jYWxlKTsKKwkJ CQlyZXR1cm4gdG93bG93ZXJfbCgod2ludF90KSBjLCBwZ19yZWdleF9sb2Nh bGUtPmluZm8ubHQpOwogI2VuZGlmCiAJCQkvKiBGQUxMIFRIUlUgKi8KIAkJ Y2FzZSBQR19SRUdFWF9MT0NBTEVfMUJZVEVfTDoKICNpZmRlZiBIQVZFX0xP Q0FMRV9UCiAJCQlpZiAoYyA8PSAocGdfd2NoYXIpIFVDSEFSX01BWCkKLQkJ CQlyZXR1cm4gdG9sb3dlcl9sKCh1bnNpZ25lZCBjaGFyKSBjLCBwZ19yZWdl eF9sb2NhbGUpOworCQkJCXJldHVybiB0b2xvd2VyX2woKHVuc2lnbmVkIGNo YXIpIGMsIHBnX3JlZ2V4X2xvY2FsZS0+aW5mby5sdCk7CiAjZW5kaWYKIAkJ CXJldHVybiBjOworCQljYXNlIFBHX1JFR0VYX0xPQ0FMRV9JQ1U6CisjaWZk ZWYgVVNFX0lDVQorCQkJcmV0dXJuIHVfdG9sb3dlcihjKTsKKyNlbmRpZgor CQkJYnJlYWs7CiAJfQogCXJldHVybiAwOwkJCQkJLyogY2FuJ3QgZ2V0IGhl cmUsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiB9CkBAIC04MDgsNiAr ODY5LDkgQEAgcGdfY3R5cGVfZ2V0X2NhY2hlKHBnX3djX3Byb2JlZnVuYyBw cm9iZWZ1bmMsIGludCBjY2xhc3Njb2RlKQogCQkJbWF4X2NociA9IChwZ193 Y2hhcikgTUFYX1NJTVBMRV9DSFI7CiAjZW5kaWYKIAkJCWJyZWFrOworCQlj YXNlIFBHX1JFR0VYX0xPQ0FMRV9JQ1U6CisJCQltYXhfY2hyID0gKHBnX3dj aGFyKSBNQVhfU0lNUExFX0NIUjsKKwkJCWJyZWFrOwogCQlkZWZhdWx0Ogog CQkJbWF4X2NociA9IDA7CQkvKiBjYW4ndCBnZXQgaGVyZSwgYnV0IGtlZXAg Y29tcGlsZXIgcXVpZXQgKi8KIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0 aWxpdHkuYwppbmRleCAyMGI1MjczNDA1Li5jOGQyMGZmZmVhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFj a2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtMTYyMyw2ICsxNjIzLDEwIEBAIFBy b2Nlc3NVdGlsaXR5U2xvdyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJY29t bWFuZENvbGxlY3RlZCA9IHRydWU7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2Ug VF9BbHRlckNvbGxhdGlvblN0bXQ6CisJCQkJYWRkcmVzcyA9IEFsdGVyQ29s bGF0aW9uKChBbHRlckNvbGxhdGlvblN0bXQgKikgcGFyc2V0cmVlKTsKKwkJ CQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLAogCQkJCQkgKGludCkgbm9kZVRh ZyhwYXJzZXRyZWUpKTsKQEAgLTI2NzMsNiArMjY3NywxMCBAQCBDcmVhdGVD b21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9ICJEUk9QIFNV QlNDUklQVElPTiI7CiAJCQlicmVhazsKIAorCQljYXNlIFRfQWx0ZXJDb2xs YXRpb25TdG10OgorCQkJdGFnID0gIkFMVEVSIENPTExBVElPTiI7CisJCQli cmVhazsKKwogCQljYXNlIFRfUHJlcGFyZVN0bXQ6CiAJCQl0YWcgPSAiUFJF UEFSRSI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9mb3JtYXR0aW5nLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv Zm9ybWF0dGluZy5jCmluZGV4IGMxNmJmYmNhOTMuLjA1NjZhYmQzMTQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYwpAQCAt ODIsNiArODIsMTAgQEAKICNpbmNsdWRlIDx3Y3R5cGUuaD4KICNlbmRpZgog CisjaWZkZWYgVVNFX0lDVQorI2luY2x1ZGUgPHVuaWNvZGUvdXN0cmluZy5o PgorI2VuZGlmCisKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5o IgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKQEAgLTE0NDMsNiArMTQ0Nyw0MiBAQCBzdHJfbnVtdGgo Y2hhciAqZGVzdCwgY2hhciAqbnVtLCBpbnQgdHlwZSkKICAqCQkJdXBwZXIv bG93ZXIvaW5pdGNhcCBmdW5jdGlvbnMKICAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KIAorI2lmZGVmIFVTRV9JQ1UKK3N0YXRpYyBpbnQz Ml90CitpY3VfY29udmVydF9jYXNlKGludDMyX3QgKCpmdW5jKShVQ2hhciAq LCBpbnQzMl90LCBjb25zdCBVQ2hhciAqLCBpbnQzMl90LCBjb25zdCBjaGFy ICosIFVFcnJvckNvZGUgKiksCisJCQkJIHBnX2xvY2FsZV90IG15bG9jYWxl LCBVQ2hhciAqKmJ1ZmZfZGVzdCwgVUNoYXIgKmJ1ZmZfc291cmNlLCBpbnQz Ml90IGxlbl9zb3VyY2UpCit7CisJVUVycm9yQ29kZQlzdGF0dXM7CisJaW50 MzJfdAkJbGVuX2Rlc3Q7CisKKwlsZW5fZGVzdCA9IGxlbl9zb3VyY2U7ICAv KiB0cnkgZmlyc3Qgd2l0aCBzYW1lIGxlbmd0aCAqLworCSpidWZmX2Rlc3Qg PSBwYWxsb2MobGVuX2Rlc3QgKiBzaXplb2YoKipidWZmX2Rlc3QpKTsKKwlz dGF0dXMgPSBVX1pFUk9fRVJST1I7CisJbGVuX2Rlc3QgPSBmdW5jKCpidWZm X2Rlc3QsIGxlbl9kZXN0LCBidWZmX3NvdXJjZSwgbGVuX3NvdXJjZSwgbXls b2NhbGUtPmluZm8uaWN1LmxvY2FsZSwgJnN0YXR1cyk7CisJaWYgKHN0YXR1 cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikKKwl7CisJCS8qIHRyeSBh Z2FpbiB3aXRoIGFkanVzdGVkIGxlbmd0aCAqLworCQlwZnJlZShidWZmX2Rl c3QpOworCQlidWZmX2Rlc3QgPSBwYWxsb2MobGVuX2Rlc3QgKiBzaXplb2Yo KipidWZmX2Rlc3QpKTsKKwkJc3RhdHVzID0gVV9aRVJPX0VSUk9SOworCQls ZW5fZGVzdCA9IGZ1bmMoKmJ1ZmZfZGVzdCwgbGVuX2Rlc3QsIGJ1ZmZfc291 cmNlLCBsZW5fc291cmNlLCBteWxvY2FsZS0+aW5mby5pY3UubG9jYWxlLCAm c3RhdHVzKTsKKwl9CisJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNhc2UgY29udmVyc2lvbiBmYWls ZWQ6ICVzIiwgdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwlyZXR1cm4gbGVu X2Rlc3Q7Cit9CisKK3N0YXRpYyBpbnQzMl90Cit1X3N0clRvVGl0bGVfZGVm YXVsdF9CSShVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCisJ CQkJCQljb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwKKwkJ CQkJCWNvbnN0IGNoYXIgKmxvY2FsZSwKKwkJCQkJCVVFcnJvckNvZGUgKnBF cnJvckNvZGUpCit7CisJcmV0dXJuIHVfc3RyVG9UaXRsZShkZXN0LCBkZXN0 Q2FwYWNpdHksIHNyYywgc3JjTGVuZ3RoLCBOVUxMLCBsb2NhbGUsIHBFcnJv ckNvZGUpOworfQorI2VuZGlmCisKIC8qCiAgKiBJZiB0aGUgc3lzdGVtIHBy b3ZpZGVzIHRoZSBuZWVkZWQgZnVuY3Rpb25zIGZvciB3aWRlLWNoYXJhY3Rl ciBtYW5pcHVsYXRpb24KICAqICh3aGljaCBhcmUgYWxsIHN0YW5kYXJkaXpl ZCBieSBDOTkpLCB0aGVuIHdlIGltcGxlbWVudCB1cHBlci9sb3dlci9pbml0 Y2FwCkBAIC0xNDc5LDEyICsxNTE5LDkgQEAgc3RyX3RvbG93ZXIoY29uc3Qg Y2hhciAqYnVmZiwgc2l6ZV90IG5ieXRlcywgT2lkIGNvbGxpZCkKIAkJcmVz dWx0ID0gYXNjX3RvbG93ZXIoYnVmZiwgbmJ5dGVzKTsKIAl9CiAjaWZkZWYg VVNFX1dJREVfVVBQRVJfTE9XRVIKLQllbHNlIGlmIChwZ19kYXRhYmFzZV9l bmNvZGluZ19tYXhfbGVuZ3RoKCkgPiAxKQorCWVsc2UKIAl7CiAJCXBnX2xv Y2FsZV90IG15bG9jYWxlID0gMDsKLQkJd2NoYXJfdCAgICAqd29ya3NwYWNl OwotCQlzaXplX3QJCWN1cnJfY2hhcjsKLQkJc2l6ZV90CQlyZXN1bHRfc2l6 ZTsKIAogCQlpZiAoY29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkK IAkJewpAQCAtMTUwMiw3NyArMTUzOSw3OSBAQCBzdHJfdG9sb3dlcihjb25z dCBjaGFyICpidWZmLCBzaXplX3QgbmJ5dGVzLCBPaWQgY29sbGlkKQogCQkJ bXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlk KTsKIAkJfQogCi0JCS8qIE92ZXJmbG93IHBhcmFub2lhICovCi0JCWlmICgo bmJ5dGVzICsgMSkgPiAoSU5UX01BWCAvIHNpemVvZih3Y2hhcl90KSkpCi0J CQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9P Rl9NRU1PUlkpLAotCQkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5IikpKTsK KyNpZmRlZiBVU0VfSUNVCisJCWlmIChteWxvY2FsZSAmJiBteWxvY2FsZS0+ cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJeworCQkJaW50MzJf dAkJbGVuX3VjaGFyOworCQkJaW50MzJfdAkJbGVuX2NvbnY7CisJCQlVQ2hh cgkgICAqYnVmZl91Y2hhcjsKKwkJCVVDaGFyCSAgICpidWZmX2NvbnY7CisK KwkJCWxlbl91Y2hhciA9IGljdV90b191Y2hhcigmYnVmZl91Y2hhciwgYnVm ZiwgbmJ5dGVzKTsKKwkJCWxlbl9jb252ID0gaWN1X2NvbnZlcnRfY2FzZSh1 X3N0clRvTG93ZXIsIG15bG9jYWxlLCAmYnVmZl9jb252LCBidWZmX3VjaGFy LCBsZW5fdWNoYXIpOworCQkJaWN1X2Zyb21fdWNoYXIoJnJlc3VsdCwgYnVm Zl9jb252LCBsZW5fY29udik7CisJCX0KKwkJZWxzZQorI2VuZGlmCisJCXsK KwkJCWlmIChwZ19kYXRhYmFzZV9lbmNvZGluZ19tYXhfbGVuZ3RoKCkgPiAx KQorCQkJeworCQkJCXdjaGFyX3QgICAgKndvcmtzcGFjZTsKKwkJCQlzaXpl X3QJCWN1cnJfY2hhcjsKKwkJCQlzaXplX3QJCXJlc3VsdF9zaXplOwogCi0J CS8qIE91dHB1dCB3b3Jrc3BhY2UgY2Fubm90IGhhdmUgbW9yZSBjb2RlcyB0 aGFuIGlucHV0IGJ5dGVzICovCi0JCXdvcmtzcGFjZSA9ICh3Y2hhcl90ICop IHBhbGxvYygobmJ5dGVzICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworCQkJ CS8qIE92ZXJmbG93IHBhcmFub2lhICovCisJCQkJaWYgKChuYnl0ZXMgKyAx KSA+IChJTlRfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpKSkKKwkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1P UlkpLAorCQkJCQkJCSBlcnJtc2coIm91dCBvZiBtZW1vcnkiKSkpOwogCi0J CWNoYXIyd2NoYXIod29ya3NwYWNlLCBuYnl0ZXMgKyAxLCBidWZmLCBuYnl0 ZXMsIG15bG9jYWxlKTsKKwkJCQkvKiBPdXRwdXQgd29ya3NwYWNlIGNhbm5v dCBoYXZlIG1vcmUgY29kZXMgdGhhbiBpbnB1dCBieXRlcyAqLworCQkJCXdv cmtzcGFjZSA9ICh3Y2hhcl90ICopIHBhbGxvYygobmJ5dGVzICsgMSkgKiBz aXplb2Yod2NoYXJfdCkpOwogCi0JCWZvciAoY3Vycl9jaGFyID0gMDsgd29y a3NwYWNlW2N1cnJfY2hhcl0gIT0gMDsgY3Vycl9jaGFyKyspCi0JCXsKKwkJ CQljaGFyMndjaGFyKHdvcmtzcGFjZSwgbmJ5dGVzICsgMSwgYnVmZiwgbmJ5 dGVzLCBteWxvY2FsZSk7CisKKwkJCQlmb3IgKGN1cnJfY2hhciA9IDA7IHdv cmtzcGFjZVtjdXJyX2NoYXJdICE9IDA7IGN1cnJfY2hhcisrKQorCQkJCXsK ICNpZmRlZiBIQVZFX0xPQ0FMRV9UCi0JCQlpZiAobXlsb2NhbGUpCi0JCQkJ d29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0b3dsb3dlcl9sKHdvcmtzcGFjZVtj dXJyX2NoYXJdLCBteWxvY2FsZSk7Ci0JCQllbHNlCisJCQkJCWlmIChteWxv Y2FsZSkKKwkJCQkJCXdvcmtzcGFjZVtjdXJyX2NoYXJdID0gdG93bG93ZXJf bCh3b3Jrc3BhY2VbY3Vycl9jaGFyXSwgbXlsb2NhbGUtPmluZm8ubHQpOwor CQkJCQllbHNlCiAjZW5kaWYKLQkJCQl3b3Jrc3BhY2VbY3Vycl9jaGFyXSA9 IHRvd2xvd2VyKHdvcmtzcGFjZVtjdXJyX2NoYXJdKTsKLQkJfQorCQkJCQkJ d29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0b3dsb3dlcih3b3Jrc3BhY2VbY3Vy cl9jaGFyXSk7CisJCQkJfQogCi0JCS8qIE1ha2UgcmVzdWx0IGxhcmdlIGVu b3VnaDsgY2FzZSBjaGFuZ2UgbWlnaHQgY2hhbmdlIG51bWJlciBvZiBieXRl cyAqLwotCQlyZXN1bHRfc2l6ZSA9IGN1cnJfY2hhciAqIHBnX2RhdGFiYXNl X2VuY29kaW5nX21heF9sZW5ndGgoKSArIDE7Ci0JCXJlc3VsdCA9IHBhbGxv YyhyZXN1bHRfc2l6ZSk7CisJCQkJLyogTWFrZSByZXN1bHQgbGFyZ2UgZW5v dWdoOyBjYXNlIGNoYW5nZSBtaWdodCBjaGFuZ2UgbnVtYmVyIG9mIGJ5dGVz ICovCisJCQkJcmVzdWx0X3NpemUgPSBjdXJyX2NoYXIgKiBwZ19kYXRhYmFz ZV9lbmNvZGluZ19tYXhfbGVuZ3RoKCkgKyAxOworCQkJCXJlc3VsdCA9IHBh bGxvYyhyZXN1bHRfc2l6ZSk7CiAKLQkJd2NoYXIyY2hhcihyZXN1bHQsIHdv cmtzcGFjZSwgcmVzdWx0X3NpemUsIG15bG9jYWxlKTsKLQkJcGZyZWUod29y a3NwYWNlKTsKLQl9CisJCQkJd2NoYXIyY2hhcihyZXN1bHQsIHdvcmtzcGFj ZSwgcmVzdWx0X3NpemUsIG15bG9jYWxlKTsKKwkJCQlwZnJlZSh3b3Jrc3Bh Y2UpOworCQkJfQogI2VuZGlmICAgLyogVVNFX1dJREVfVVBQRVJfTE9XRVIg Ki8KLQllbHNlCi0JewotI2lmZGVmIEhBVkVfTE9DQUxFX1QKLQkJcGdfbG9j YWxlX3QgbXlsb2NhbGUgPSAwOwotI2VuZGlmCi0JCWNoYXIJICAgKnA7Ci0K LQkJaWYgKGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQpCi0JCXsK LQkJCWlmICghT2lkSXNWYWxpZChjb2xsaWQpKQorCQkJZWxzZQogCQkJewot CQkJCS8qCi0JCQkJICogVGhpcyB0eXBpY2FsbHkgbWVhbnMgdGhhdCB0aGUg cGFyc2VyIGNvdWxkIG5vdCByZXNvbHZlIGEKLQkJCQkgKiBjb25mbGljdCBv ZiBpbXBsaWNpdCBjb2xsYXRpb25zLCBzbyByZXBvcnQgaXQgdGhhdCB3YXku Ci0JCQkJICovCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5ERVRFUk1JTkFURV9DT0xMQVRJT04pLAotCQkJCQkJIGVy cm1zZygiY291bGQgbm90IGRldGVybWluZSB3aGljaCBjb2xsYXRpb24gdG8g dXNlIGZvciBsb3dlcigpIGZ1bmN0aW9uIiksCi0JCQkJCQkgZXJyaGludCgi VXNlIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNvbGxhdGlvbiBl eHBsaWNpdGx5LiIpKSk7Ci0JCQl9Ci0jaWZkZWYgSEFWRV9MT0NBTEVfVAot CQkJbXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29s bGlkKTsKLSNlbmRpZgotCQl9CisJCQkJY2hhcgkgICAqcDsKIAotCQlyZXN1 bHQgPSBwbnN0cmR1cChidWZmLCBuYnl0ZXMpOworCQkJCXJlc3VsdCA9IHBu c3RyZHVwKGJ1ZmYsIG5ieXRlcyk7CiAKLQkJLyoKLQkJICogTm90ZTogd2Ug YXNzdW1lIHRoYXQgdG9sb3dlcl9sKCkgd2lsbCBub3QgYmUgc28gYnJva2Vu IGFzIHRvIG5lZWQKLQkJICogYW4gaXN1cHBlcl9sKCkgZ3VhcmQgdGVzdC4g IFdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgY29sbGF0aW9uLCB3ZQotCQkgKiBh cHBseSB0aGUgdHJhZGl0aW9uYWwgUG9zdGdyZXMgYmVoYXZpb3IgdGhhdCBm b3JjZXMgQVNDSUktc3R5bGUKLQkJICogdHJlYXRtZW50IG9mIEkvaSwgYnV0 IGluIG5vbi1kZWZhdWx0IGNvbGxhdGlvbnMgeW91IGdldCBleGFjdGx5Ci0J CSAqIHdoYXQgdGhlIGNvbGxhdGlvbiBzYXlzLgotCQkgKi8KLQkJZm9yIChw ID0gcmVzdWx0OyAqcDsgcCsrKQotCQl7CisJCQkJLyoKKwkJCQkgKiBOb3Rl OiB3ZSBhc3N1bWUgdGhhdCB0b2xvd2VyX2woKSB3aWxsIG5vdCBiZSBzbyBi cm9rZW4gYXMgdG8gbmVlZAorCQkJCSAqIGFuIGlzdXBwZXJfbCgpIGd1YXJk IHRlc3QuICBXaGVuIHVzaW5nIHRoZSBkZWZhdWx0IGNvbGxhdGlvbiwgd2UK KwkJCQkgKiBhcHBseSB0aGUgdHJhZGl0aW9uYWwgUG9zdGdyZXMgYmVoYXZp b3IgdGhhdCBmb3JjZXMgQVNDSUktc3R5bGUKKwkJCQkgKiB0cmVhdG1lbnQg b2YgSS9pLCBidXQgaW4gbm9uLWRlZmF1bHQgY29sbGF0aW9ucyB5b3UgZ2V0 IGV4YWN0bHkKKwkJCQkgKiB3aGF0IHRoZSBjb2xsYXRpb24gc2F5cy4KKwkJ CQkgKi8KKwkJCQlmb3IgKHAgPSByZXN1bHQ7ICpwOyBwKyspCisJCQkJewog I2lmZGVmIEhBVkVfTE9DQUxFX1QKLQkJCWlmIChteWxvY2FsZSkKLQkJCQkq cCA9IHRvbG93ZXJfbCgodW5zaWduZWQgY2hhcikgKnAsIG15bG9jYWxlKTsK LQkJCWVsc2UKKwkJCQkJaWYgKG15bG9jYWxlKQorCQkJCQkJKnAgPSB0b2xv d2VyX2woKHVuc2lnbmVkIGNoYXIpICpwLCBteWxvY2FsZS0+aW5mby5sdCk7 CisJCQkJCWVsc2UKICNlbmRpZgotCQkJCSpwID0gcGdfdG9sb3dlcigodW5z aWduZWQgY2hhcikgKnApOworCQkJCQkJKnAgPSBwZ190b2xvd2VyKCh1bnNp Z25lZCBjaGFyKSAqcCk7CisJCQkJfQorCQkJfQogCQl9CiAJfQogCkBAIC0x NTk5LDEyICsxNjM4LDkgQEAgc3RyX3RvdXBwZXIoY29uc3QgY2hhciAqYnVm Ziwgc2l6ZV90IG5ieXRlcywgT2lkIGNvbGxpZCkKIAkJcmVzdWx0ID0gYXNj X3RvdXBwZXIoYnVmZiwgbmJ5dGVzKTsKIAl9CiAjaWZkZWYgVVNFX1dJREVf VVBQRVJfTE9XRVIKLQllbHNlIGlmIChwZ19kYXRhYmFzZV9lbmNvZGluZ19t YXhfbGVuZ3RoKCkgPiAxKQorCWVsc2UKIAl7CiAJCXBnX2xvY2FsZV90IG15 bG9jYWxlID0gMDsKLQkJd2NoYXJfdCAgICAqd29ya3NwYWNlOwotCQlzaXpl X3QJCWN1cnJfY2hhcjsKLQkJc2l6ZV90CQlyZXN1bHRfc2l6ZTsKIAogCQlp ZiAoY29sbGlkICE9IERFRkFVTFRfQ09MTEFUSU9OX09JRCkKIAkJewpAQCAt MTYyMiw3NyArMTY1OCw3OCBAQCBzdHJfdG91cHBlcihjb25zdCBjaGFyICpi dWZmLCBzaXplX3QgbmJ5dGVzLCBPaWQgY29sbGlkKQogCQkJbXlsb2NhbGUg PSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKIAkJfQog Ci0JCS8qIE92ZXJmbG93IHBhcmFub2lhICovCi0JCWlmICgobmJ5dGVzICsg MSkgPiAoSU5UX01BWCAvIHNpemVvZih3Y2hhcl90KSkpCi0JCQllcmVwb3J0 KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkp LAotCQkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5IikpKTsKKyNpZmRlZiBV U0VfSUNVCisJCWlmIChteWxvY2FsZSAmJiBteWxvY2FsZS0+cHJvdmlkZXIg PT0gQ09MTFBST1ZJREVSX0lDVSkKKwkJeworCQkJaW50MzJfdAkJbGVuX3Vj aGFyLCBsZW5fY29udjsKKwkJCVVDaGFyCSAgICpidWZmX3VjaGFyOworCQkJ VUNoYXIJICAgKmJ1ZmZfY29udjsKIAotCQkvKiBPdXRwdXQgd29ya3NwYWNl IGNhbm5vdCBoYXZlIG1vcmUgY29kZXMgdGhhbiBpbnB1dCBieXRlcyAqLwot CQl3b3Jrc3BhY2UgPSAod2NoYXJfdCAqKSBwYWxsb2MoKG5ieXRlcyArIDEp ICogc2l6ZW9mKHdjaGFyX3QpKTsKKwkJCWxlbl91Y2hhciA9IGljdV90b191 Y2hhcigmYnVmZl91Y2hhciwgYnVmZiwgbmJ5dGVzKTsKKwkJCWxlbl9jb252 ID0gaWN1X2NvbnZlcnRfY2FzZSh1X3N0clRvVXBwZXIsIG15bG9jYWxlLCAm YnVmZl9jb252LCBidWZmX3VjaGFyLCBsZW5fdWNoYXIpOworCQkJaWN1X2Zy b21fdWNoYXIoJnJlc3VsdCwgYnVmZl9jb252LCBsZW5fY29udik7CisJCX0K KwkJZWxzZQorI2VuZGlmCisJCXsKKwkJCWlmIChwZ19kYXRhYmFzZV9lbmNv ZGluZ19tYXhfbGVuZ3RoKCkgPiAxKQorCQkJeworCQkJCXdjaGFyX3QgICAg KndvcmtzcGFjZTsKKwkJCQlzaXplX3QJCWN1cnJfY2hhcjsKKwkJCQlzaXpl X3QJCXJlc3VsdF9zaXplOwogCi0JCWNoYXIyd2NoYXIod29ya3NwYWNlLCBu Ynl0ZXMgKyAxLCBidWZmLCBuYnl0ZXMsIG15bG9jYWxlKTsKKwkJCQkvKiBP dmVyZmxvdyBwYXJhbm9pYSAqLworCQkJCWlmICgobmJ5dGVzICsgMSkgPiAo SU5UX01BWCAvIHNpemVvZih3Y2hhcl90KSkpCisJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwK KwkJCQkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5IikpKTsKIAotCQlmb3Ig KGN1cnJfY2hhciA9IDA7IHdvcmtzcGFjZVtjdXJyX2NoYXJdICE9IDA7IGN1 cnJfY2hhcisrKQotCQl7Ci0jaWZkZWYgSEFWRV9MT0NBTEVfVAotCQkJaWYg KG15bG9jYWxlKQotCQkJCXdvcmtzcGFjZVtjdXJyX2NoYXJdID0gdG93dXBw ZXJfbCh3b3Jrc3BhY2VbY3Vycl9jaGFyXSwgbXlsb2NhbGUpOwotCQkJZWxz ZQotI2VuZGlmCi0JCQkJd29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0b3d1cHBl cih3b3Jrc3BhY2VbY3Vycl9jaGFyXSk7Ci0JCX0KKwkJCQkvKiBPdXRwdXQg d29ya3NwYWNlIGNhbm5vdCBoYXZlIG1vcmUgY29kZXMgdGhhbiBpbnB1dCBi eXRlcyAqLworCQkJCXdvcmtzcGFjZSA9ICh3Y2hhcl90ICopIHBhbGxvYygo bmJ5dGVzICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwogCi0JCS8qIE1ha2Ug cmVzdWx0IGxhcmdlIGVub3VnaDsgY2FzZSBjaGFuZ2UgbWlnaHQgY2hhbmdl IG51bWJlciBvZiBieXRlcyAqLwotCQlyZXN1bHRfc2l6ZSA9IGN1cnJfY2hh ciAqIHBnX2RhdGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKSArIDE7Ci0J CXJlc3VsdCA9IHBhbGxvYyhyZXN1bHRfc2l6ZSk7CisJCQkJY2hhcjJ3Y2hh cih3b3Jrc3BhY2UsIG5ieXRlcyArIDEsIGJ1ZmYsIG5ieXRlcywgbXlsb2Nh bGUpOwogCi0JCXdjaGFyMmNoYXIocmVzdWx0LCB3b3Jrc3BhY2UsIHJlc3Vs dF9zaXplLCBteWxvY2FsZSk7Ci0JCXBmcmVlKHdvcmtzcGFjZSk7Ci0JfQot I2VuZGlmICAgLyogVVNFX1dJREVfVVBQRVJfTE9XRVIgKi8KLQllbHNlCi0J eworCQkJCWZvciAoY3Vycl9jaGFyID0gMDsgd29ya3NwYWNlW2N1cnJfY2hh cl0gIT0gMDsgY3Vycl9jaGFyKyspCisJCQkJewogI2lmZGVmIEhBVkVfTE9D QUxFX1QKLQkJcGdfbG9jYWxlX3QgbXlsb2NhbGUgPSAwOworCQkJCQlpZiAo bXlsb2NhbGUpCisJCQkJCQl3b3Jrc3BhY2VbY3Vycl9jaGFyXSA9IHRvd3Vw cGVyX2wod29ya3NwYWNlW2N1cnJfY2hhcl0sIG15bG9jYWxlLT5pbmZvLmx0 KTsKKwkJCQkJZWxzZQogI2VuZGlmCi0JCWNoYXIJICAgKnA7CisJCQkJCQl3 b3Jrc3BhY2VbY3Vycl9jaGFyXSA9IHRvd3VwcGVyKHdvcmtzcGFjZVtjdXJy X2NoYXJdKTsKKwkJCQl9CiAKLQkJaWYgKGNvbGxpZCAhPSBERUZBVUxUX0NP TExBVElPTl9PSUQpCi0JCXsKLQkJCWlmICghT2lkSXNWYWxpZChjb2xsaWQp KQotCQkJewotCQkJCS8qCi0JCQkJICogVGhpcyB0eXBpY2FsbHkgbWVhbnMg dGhhdCB0aGUgcGFyc2VyIGNvdWxkIG5vdCByZXNvbHZlIGEKLQkJCQkgKiBj b25mbGljdCBvZiBpbXBsaWNpdCBjb2xsYXRpb25zLCBzbyByZXBvcnQgaXQg dGhhdCB3YXkuCi0JCQkJICovCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9DT0xMQVRJT04pLAot CQkJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSB3aGljaCBjb2xs YXRpb24gdG8gdXNlIGZvciB1cHBlcigpIGZ1bmN0aW9uIiksCi0JCQkJCQkg ZXJyaGludCgiVXNlIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNv bGxhdGlvbiBleHBsaWNpdGx5LiIpKSk7CisJCQkJLyogTWFrZSByZXN1bHQg bGFyZ2UgZW5vdWdoOyBjYXNlIGNoYW5nZSBtaWdodCBjaGFuZ2UgbnVtYmVy IG9mIGJ5dGVzICovCisJCQkJcmVzdWx0X3NpemUgPSBjdXJyX2NoYXIgKiBw Z19kYXRhYmFzZV9lbmNvZGluZ19tYXhfbGVuZ3RoKCkgKyAxOworCQkJCXJl c3VsdCA9IHBhbGxvYyhyZXN1bHRfc2l6ZSk7CisKKwkJCQl3Y2hhcjJjaGFy KHJlc3VsdCwgd29ya3NwYWNlLCByZXN1bHRfc2l6ZSwgbXlsb2NhbGUpOwor CQkJCXBmcmVlKHdvcmtzcGFjZSk7CiAJCQl9Ci0jaWZkZWYgSEFWRV9MT0NB TEVfVAotCQkJbXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRp b24oY29sbGlkKTsKLSNlbmRpZgotCQl9CisjZW5kaWYgICAvKiBVU0VfV0lE RV9VUFBFUl9MT1dFUiAqLworCQkJZWxzZQorCQkJeworCQkJCWNoYXIJICAg KnA7CiAKLQkJcmVzdWx0ID0gcG5zdHJkdXAoYnVmZiwgbmJ5dGVzKTsKKwkJ CQlyZXN1bHQgPSBwbnN0cmR1cChidWZmLCBuYnl0ZXMpOwogCi0JCS8qCi0J CSAqIE5vdGU6IHdlIGFzc3VtZSB0aGF0IHRvdXBwZXJfbCgpIHdpbGwgbm90 IGJlIHNvIGJyb2tlbiBhcyB0byBuZWVkCi0JCSAqIGFuIGlzbG93ZXJfbCgp IGd1YXJkIHRlc3QuICBXaGVuIHVzaW5nIHRoZSBkZWZhdWx0IGNvbGxhdGlv biwgd2UKLQkJICogYXBwbHkgdGhlIHRyYWRpdGlvbmFsIFBvc3RncmVzIGJl aGF2aW9yIHRoYXQgZm9yY2VzIEFTQ0lJLXN0eWxlCi0JCSAqIHRyZWF0bWVu dCBvZiBJL2ksIGJ1dCBpbiBub24tZGVmYXVsdCBjb2xsYXRpb25zIHlvdSBn ZXQgZXhhY3RseQotCQkgKiB3aGF0IHRoZSBjb2xsYXRpb24gc2F5cy4KLQkJ ICovCi0JCWZvciAocCA9IHJlc3VsdDsgKnA7IHArKykKLQkJeworCQkJCS8q CisJCQkJICogTm90ZTogd2UgYXNzdW1lIHRoYXQgdG91cHBlcl9sKCkgd2ls bCBub3QgYmUgc28gYnJva2VuIGFzIHRvIG5lZWQKKwkJCQkgKiBhbiBpc2xv d2VyX2woKSBndWFyZCB0ZXN0LiAgV2hlbiB1c2luZyB0aGUgZGVmYXVsdCBj b2xsYXRpb24sIHdlCisJCQkJICogYXBwbHkgdGhlIHRyYWRpdGlvbmFsIFBv c3RncmVzIGJlaGF2aW9yIHRoYXQgZm9yY2VzIEFTQ0lJLXN0eWxlCisJCQkJ ICogdHJlYXRtZW50IG9mIEkvaSwgYnV0IGluIG5vbi1kZWZhdWx0IGNvbGxh dGlvbnMgeW91IGdldCBleGFjdGx5CisJCQkJICogd2hhdCB0aGUgY29sbGF0 aW9uIHNheXMuCisJCQkJICovCisJCQkJZm9yIChwID0gcmVzdWx0OyAqcDsg cCsrKQorCQkJCXsKICNpZmRlZiBIQVZFX0xPQ0FMRV9UCi0JCQlpZiAobXls b2NhbGUpCi0JCQkJKnAgPSB0b3VwcGVyX2woKHVuc2lnbmVkIGNoYXIpICpw LCBteWxvY2FsZSk7Ci0JCQllbHNlCisJCQkJCWlmIChteWxvY2FsZSkKKwkJ CQkJCSpwID0gdG91cHBlcl9sKCh1bnNpZ25lZCBjaGFyKSAqcCwgbXlsb2Nh bGUtPmluZm8ubHQpOworCQkJCQllbHNlCiAjZW5kaWYKLQkJCQkqcCA9IHBn X3RvdXBwZXIoKHVuc2lnbmVkIGNoYXIpICpwKTsKKwkJCQkJCSpwID0gcGdf dG91cHBlcigodW5zaWduZWQgY2hhcikgKnApOworCQkJCX0KKwkJCX0KIAkJ fQogCX0KIApAQCAtMTcyMCwxMiArMTc1Nyw5IEBAIHN0cl9pbml0Y2FwKGNv bnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBuYnl0ZXMsIE9pZCBjb2xsaWQpCiAJ CXJlc3VsdCA9IGFzY19pbml0Y2FwKGJ1ZmYsIG5ieXRlcyk7CiAJfQogI2lm ZGVmIFVTRV9XSURFX1VQUEVSX0xPV0VSCi0JZWxzZSBpZiAocGdfZGF0YWJh c2VfZW5jb2RpbmdfbWF4X2xlbmd0aCgpID4gMSkKKwllbHNlCiAJewogCQlw Z19sb2NhbGVfdCBteWxvY2FsZSA9IDA7Ci0JCXdjaGFyX3QgICAgKndvcmtz cGFjZTsKLQkJc2l6ZV90CQljdXJyX2NoYXI7Ci0JCXNpemVfdAkJcmVzdWx0 X3NpemU7CiAKIAkJaWYgKGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9P SUQpCiAJCXsKQEAgLTE3NDMsMTAwICsxNzc3LDEwMSBAQCBzdHJfaW5pdGNh cChjb25zdCBjaGFyICpidWZmLCBzaXplX3QgbmJ5dGVzLCBPaWQgY29sbGlk KQogCQkJbXlsb2NhbGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24o Y29sbGlkKTsKIAkJfQogCi0JCS8qIE92ZXJmbG93IHBhcmFub2lhICovCi0J CWlmICgobmJ5dGVzICsgMSkgPiAoSU5UX01BWCAvIHNpemVvZih3Y2hhcl90 KSkpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RF X09VVF9PRl9NRU1PUlkpLAotCQkJCQkgZXJybXNnKCJvdXQgb2YgbWVtb3J5 IikpKTsKLQotCQkvKiBPdXRwdXQgd29ya3NwYWNlIGNhbm5vdCBoYXZlIG1v cmUgY29kZXMgdGhhbiBpbnB1dCBieXRlcyAqLwotCQl3b3Jrc3BhY2UgPSAo d2NoYXJfdCAqKSBwYWxsb2MoKG5ieXRlcyArIDEpICogc2l6ZW9mKHdjaGFy X3QpKTsKLQotCQljaGFyMndjaGFyKHdvcmtzcGFjZSwgbmJ5dGVzICsgMSwg YnVmZiwgbmJ5dGVzLCBteWxvY2FsZSk7Ci0KLQkJZm9yIChjdXJyX2NoYXIg PSAwOyB3b3Jrc3BhY2VbY3Vycl9jaGFyXSAhPSAwOyBjdXJyX2NoYXIrKykK KyNpZmRlZiBVU0VfSUNVCisJCWlmIChteWxvY2FsZSAmJiBteWxvY2FsZS0+ cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKIAkJewotI2lmZGVmIEhB VkVfTE9DQUxFX1QKLQkJCWlmIChteWxvY2FsZSkKLQkJCXsKLQkJCQlpZiAo d2FzYWxudW0pCi0JCQkJCXdvcmtzcGFjZVtjdXJyX2NoYXJdID0gdG93bG93 ZXJfbCh3b3Jrc3BhY2VbY3Vycl9jaGFyXSwgbXlsb2NhbGUpOwotCQkJCWVs c2UKLQkJCQkJd29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0b3d1cHBlcl9sKHdv cmtzcGFjZVtjdXJyX2NoYXJdLCBteWxvY2FsZSk7Ci0JCQkJd2FzYWxudW0g PSBpc3dhbG51bV9sKHdvcmtzcGFjZVtjdXJyX2NoYXJdLCBteWxvY2FsZSk7 Ci0JCQl9Ci0JCQllbHNlCisJCQlpbnQzMl90CQlsZW5fdWNoYXIsIGxlbl9j b252OworCQkJVUNoYXIJICAgKmJ1ZmZfdWNoYXI7CisJCQlVQ2hhcgkgICAq YnVmZl9jb252OworCisJCQlsZW5fdWNoYXIgPSBpY3VfdG9fdWNoYXIoJmJ1 ZmZfdWNoYXIsIGJ1ZmYsIG5ieXRlcyk7CisJCQlsZW5fY29udiA9IGljdV9j b252ZXJ0X2Nhc2UodV9zdHJUb1RpdGxlX2RlZmF1bHRfQkksIG15bG9jYWxl LCAmYnVmZl9jb252LCBidWZmX3VjaGFyLCBsZW5fdWNoYXIpOworCQkJaWN1 X2Zyb21fdWNoYXIoJnJlc3VsdCwgYnVmZl9jb252LCBsZW5fY29udik7CisJ CX0KKwkJZWxzZQogI2VuZGlmCisJCXsKKwkJCWlmIChwZ19kYXRhYmFzZV9l bmNvZGluZ19tYXhfbGVuZ3RoKCkgPiAxKQogCQkJewotCQkJCWlmICh3YXNh bG51bSkKLQkJCQkJd29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0b3dsb3dlcih3 b3Jrc3BhY2VbY3Vycl9jaGFyXSk7Ci0JCQkJZWxzZQotCQkJCQl3b3Jrc3Bh Y2VbY3Vycl9jaGFyXSA9IHRvd3VwcGVyKHdvcmtzcGFjZVtjdXJyX2NoYXJd KTsKLQkJCQl3YXNhbG51bSA9IGlzd2FsbnVtKHdvcmtzcGFjZVtjdXJyX2No YXJdKTsKLQkJCX0KLQkJfQorCQkJCXdjaGFyX3QgICAgKndvcmtzcGFjZTsK KwkJCQlzaXplX3QJCWN1cnJfY2hhcjsKKwkJCQlzaXplX3QJCXJlc3VsdF9z aXplOwogCi0JCS8qIE1ha2UgcmVzdWx0IGxhcmdlIGVub3VnaDsgY2FzZSBj aGFuZ2UgbWlnaHQgY2hhbmdlIG51bWJlciBvZiBieXRlcyAqLwotCQlyZXN1 bHRfc2l6ZSA9IGN1cnJfY2hhciAqIHBnX2RhdGFiYXNlX2VuY29kaW5nX21h eF9sZW5ndGgoKSArIDE7Ci0JCXJlc3VsdCA9IHBhbGxvYyhyZXN1bHRfc2l6 ZSk7CisJCQkJLyogT3ZlcmZsb3cgcGFyYW5vaWEgKi8KKwkJCQlpZiAoKG5i eXRlcyArIDEpID4gKElOVF9NQVggLyBzaXplb2Yod2NoYXJfdCkpKQorCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfT1VU X09GX01FTU9SWSksCisJCQkJCQkJIGVycm1zZygib3V0IG9mIG1lbW9yeSIp KSk7CiAKLQkJd2NoYXIyY2hhcihyZXN1bHQsIHdvcmtzcGFjZSwgcmVzdWx0 X3NpemUsIG15bG9jYWxlKTsKLQkJcGZyZWUod29ya3NwYWNlKTsKLQl9Ci0j ZW5kaWYgICAvKiBVU0VfV0lERV9VUFBFUl9MT1dFUiAqLwotCWVsc2UKLQl7 Ci0jaWZkZWYgSEFWRV9MT0NBTEVfVAotCQlwZ19sb2NhbGVfdCBteWxvY2Fs ZSA9IDA7Ci0jZW5kaWYKLQkJY2hhcgkgICAqcDsKKwkJCQkvKiBPdXRwdXQg d29ya3NwYWNlIGNhbm5vdCBoYXZlIG1vcmUgY29kZXMgdGhhbiBpbnB1dCBi eXRlcyAqLworCQkJCXdvcmtzcGFjZSA9ICh3Y2hhcl90ICopIHBhbGxvYygo bmJ5dGVzICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwogCi0JCWlmIChjb2xs aWQgIT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQotCQl7Ci0JCQlpZiAoIU9p ZElzVmFsaWQoY29sbGlkKSkKLQkJCXsKLQkJCQkvKgotCQkJCSAqIFRoaXMg dHlwaWNhbGx5IG1lYW5zIHRoYXQgdGhlIHBhcnNlciBjb3VsZCBub3QgcmVz b2x2ZSBhCi0JCQkJICogY29uZmxpY3Qgb2YgaW1wbGljaXQgY29sbGF0aW9u cywgc28gcmVwb3J0IGl0IHRoYXQgd2F5LgotCQkJCSAqLwotCQkJCWVyZXBv cnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVURVJNSU5B VEVfQ09MTEFUSU9OKSwKLQkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRl cm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3IgaW5pdGNhcCgpIGZ1 bmN0aW9uIiksCi0JCQkJCQkgZXJyaGludCgiVXNlIHRoZSBDT0xMQVRFIGNs YXVzZSB0byBzZXQgdGhlIGNvbGxhdGlvbiBleHBsaWNpdGx5LiIpKSk7Ci0J CQl9CisJCQkJY2hhcjJ3Y2hhcih3b3Jrc3BhY2UsIG5ieXRlcyArIDEsIGJ1 ZmYsIG5ieXRlcywgbXlsb2NhbGUpOworCisJCQkJZm9yIChjdXJyX2NoYXIg PSAwOyB3b3Jrc3BhY2VbY3Vycl9jaGFyXSAhPSAwOyBjdXJyX2NoYXIrKykK KwkJCQl7CiAjaWZkZWYgSEFWRV9MT0NBTEVfVAotCQkJbXlsb2NhbGUgPSBw Z19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKKwkJCQkJaWYg KG15bG9jYWxlKQorCQkJCQl7CisJCQkJCQlpZiAod2FzYWxudW0pCisJCQkJ CQkJd29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0b3dsb3dlcl9sKHdvcmtzcGFj ZVtjdXJyX2NoYXJdLCBteWxvY2FsZS0+aW5mby5sdCk7CisJCQkJCQllbHNl CisJCQkJCQkJd29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0b3d1cHBlcl9sKHdv cmtzcGFjZVtjdXJyX2NoYXJdLCBteWxvY2FsZS0+aW5mby5sdCk7CisJCQkJ CQl3YXNhbG51bSA9IGlzd2FsbnVtX2wod29ya3NwYWNlW2N1cnJfY2hhcl0s IG15bG9jYWxlLT5pbmZvLmx0KTsKKwkJCQkJfQorCQkJCQllbHNlCiAjZW5k aWYKLQkJfQorCQkJCQl7CisJCQkJCQlpZiAod2FzYWxudW0pCisJCQkJCQkJ d29ya3NwYWNlW2N1cnJfY2hhcl0gPSB0b3dsb3dlcih3b3Jrc3BhY2VbY3Vy cl9jaGFyXSk7CisJCQkJCQllbHNlCisJCQkJCQkJd29ya3NwYWNlW2N1cnJf Y2hhcl0gPSB0b3d1cHBlcih3b3Jrc3BhY2VbY3Vycl9jaGFyXSk7CisJCQkJ CQl3YXNhbG51bSA9IGlzd2FsbnVtKHdvcmtzcGFjZVtjdXJyX2NoYXJdKTsK KwkJCQkJfQorCQkJCX0KIAotCQlyZXN1bHQgPSBwbnN0cmR1cChidWZmLCBu Ynl0ZXMpOworCQkJCS8qIE1ha2UgcmVzdWx0IGxhcmdlIGVub3VnaDsgY2Fz ZSBjaGFuZ2UgbWlnaHQgY2hhbmdlIG51bWJlciBvZiBieXRlcyAqLworCQkJ CXJlc3VsdF9zaXplID0gY3Vycl9jaGFyICogcGdfZGF0YWJhc2VfZW5jb2Rp bmdfbWF4X2xlbmd0aCgpICsgMTsKKwkJCQlyZXN1bHQgPSBwYWxsb2MocmVz dWx0X3NpemUpOwogCi0JCS8qCi0JCSAqIE5vdGU6IHdlIGFzc3VtZSB0aGF0 IHRvdXBwZXJfbCgpL3RvbG93ZXJfbCgpIHdpbGwgbm90IGJlIHNvIGJyb2tl bgotCQkgKiBhcyB0byBuZWVkIGd1YXJkIHRlc3RzLiAgV2hlbiB1c2luZyB0 aGUgZGVmYXVsdCBjb2xsYXRpb24sIHdlIGFwcGx5Ci0JCSAqIHRoZSB0cmFk aXRpb25hbCBQb3N0Z3JlcyBiZWhhdmlvciB0aGF0IGZvcmNlcyBBU0NJSS1z dHlsZSB0cmVhdG1lbnQKLQkJICogb2YgSS9pLCBidXQgaW4gbm9uLWRlZmF1 bHQgY29sbGF0aW9ucyB5b3UgZ2V0IGV4YWN0bHkgd2hhdCB0aGUKLQkJICog Y29sbGF0aW9uIHNheXMuCi0JCSAqLwotCQlmb3IgKHAgPSByZXN1bHQ7ICpw OyBwKyspCi0JCXsKLSNpZmRlZiBIQVZFX0xPQ0FMRV9UCi0JCQlpZiAobXls b2NhbGUpCi0JCQl7Ci0JCQkJaWYgKHdhc2FsbnVtKQotCQkJCQkqcCA9IHRv bG93ZXJfbCgodW5zaWduZWQgY2hhcikgKnAsIG15bG9jYWxlKTsKLQkJCQll bHNlCi0JCQkJCSpwID0gdG91cHBlcl9sKCh1bnNpZ25lZCBjaGFyKSAqcCwg bXlsb2NhbGUpOwotCQkJCXdhc2FsbnVtID0gaXNhbG51bV9sKCh1bnNpZ25l ZCBjaGFyKSAqcCwgbXlsb2NhbGUpOworCQkJCXdjaGFyMmNoYXIocmVzdWx0 LCB3b3Jrc3BhY2UsIHJlc3VsdF9zaXplLCBteWxvY2FsZSk7CisJCQkJcGZy ZWUod29ya3NwYWNlKTsKIAkJCX0KKyNlbmRpZiAgIC8qIFVTRV9XSURFX1VQ UEVSX0xPV0VSICovCiAJCQllbHNlCi0jZW5kaWYKIAkJCXsKLQkJCQlpZiAo d2FzYWxudW0pCi0JCQkJCSpwID0gcGdfdG9sb3dlcigodW5zaWduZWQgY2hh cikgKnApOwotCQkJCWVsc2UKLQkJCQkJKnAgPSBwZ190b3VwcGVyKCh1bnNp Z25lZCBjaGFyKSAqcCk7Ci0JCQkJd2FzYWxudW0gPSBpc2FsbnVtKCh1bnNp Z25lZCBjaGFyKSAqcCk7CisJCQkJY2hhcgkgICAqcDsKKworCQkJCXJlc3Vs dCA9IHBuc3RyZHVwKGJ1ZmYsIG5ieXRlcyk7CisKKwkJCQkvKgorCQkJCSAq IE5vdGU6IHdlIGFzc3VtZSB0aGF0IHRvdXBwZXJfbCgpL3RvbG93ZXJfbCgp IHdpbGwgbm90IGJlIHNvIGJyb2tlbgorCQkJCSAqIGFzIHRvIG5lZWQgZ3Vh cmQgdGVzdHMuICBXaGVuIHVzaW5nIHRoZSBkZWZhdWx0IGNvbGxhdGlvbiwg d2UgYXBwbHkKKwkJCQkgKiB0aGUgdHJhZGl0aW9uYWwgUG9zdGdyZXMgYmVo YXZpb3IgdGhhdCBmb3JjZXMgQVNDSUktc3R5bGUgdHJlYXRtZW50CisJCQkJ ICogb2YgSS9pLCBidXQgaW4gbm9uLWRlZmF1bHQgY29sbGF0aW9ucyB5b3Ug Z2V0IGV4YWN0bHkgd2hhdCB0aGUKKwkJCQkgKiBjb2xsYXRpb24gc2F5cy4K KwkJCQkgKi8KKwkJCQlmb3IgKHAgPSByZXN1bHQ7ICpwOyBwKyspCisJCQkJ eworI2lmZGVmIEhBVkVfTE9DQUxFX1QKKwkJCQkJaWYgKG15bG9jYWxlKQor CQkJCQl7CisJCQkJCQlpZiAod2FzYWxudW0pCisJCQkJCQkJKnAgPSB0b2xv d2VyX2woKHVuc2lnbmVkIGNoYXIpICpwLCBteWxvY2FsZS0+aW5mby5sdCk7 CisJCQkJCQllbHNlCisJCQkJCQkJKnAgPSB0b3VwcGVyX2woKHVuc2lnbmVk IGNoYXIpICpwLCBteWxvY2FsZS0+aW5mby5sdCk7CisJCQkJCQl3YXNhbG51 bSA9IGlzYWxudW1fbCgodW5zaWduZWQgY2hhcikgKnAsIG15bG9jYWxlLT5p bmZvLmx0KTsKKwkJCQkJfQorCQkJCQllbHNlCisjZW5kaWYKKwkJCQkJewor CQkJCQkJaWYgKHdhc2FsbnVtKQorCQkJCQkJCSpwID0gcGdfdG9sb3dlcigo dW5zaWduZWQgY2hhcikgKnApOworCQkJCQkJZWxzZQorCQkJCQkJCSpwID0g cGdfdG91cHBlcigodW5zaWduZWQgY2hhcikgKnApOworCQkJCQkJd2FzYWxu dW0gPSBpc2FsbnVtKCh1bnNpZ25lZCBjaGFyKSAqcCk7CisJCQkJCX0KKwkJ CQl9CiAJCQl9CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvbGlrZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2Uu YwppbmRleCA4ZDlkMjg1ZmI1Li4xZjY4M2NjZDBmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9saWtlLmMKQEAgLTk2LDcgKzk2LDcgQEAgU0JfbG93ZXJf Y2hhcih1bnNpZ25lZCBjaGFyIGMsIHBnX2xvY2FsZV90IGxvY2FsZSwgYm9v bCBsb2NhbGVfaXNfYykKIAkJcmV0dXJuIHBnX2FzY2lpX3RvbG93ZXIoYyk7 CiAjaWZkZWYgSEFWRV9MT0NBTEVfVAogCWVsc2UgaWYgKGxvY2FsZSkKLQkJ cmV0dXJuIHRvbG93ZXJfbChjLCBsb2NhbGUpOworCQlyZXR1cm4gdG9sb3dl cl9sKGMsIGxvY2FsZS0+aW5mby5sdCk7CiAjZW5kaWYKIAllbHNlCiAJCXJl dHVybiBwZ190b2xvd2VyKGMpOwpAQCAtMTY1LDE0ICsxNjUsMzYgQEAgR2Vu ZXJpY19UZXh0X0lDX2xpa2UodGV4dCAqc3RyLCB0ZXh0ICpwYXQsIE9pZCBj b2xsYXRpb24pCiAJCQkgICAqcDsKIAlpbnQJCQlzbGVuLAogCQkJCXBsZW47 CisJcGdfbG9jYWxlX3QgbG9jYWxlID0gMDsKKwlib29sCQlsb2NhbGVfaXNf YyA9IGZhbHNlOworCisJaWYgKGxjX2N0eXBlX2lzX2MoY29sbGF0aW9uKSkK KwkJbG9jYWxlX2lzX2MgPSB0cnVlOworCWVsc2UgaWYgKGNvbGxhdGlvbiAh PSBERUZBVUxUX0NPTExBVElPTl9PSUQpCisJeworCQlpZiAoIU9pZElzVmFs aWQoY29sbGF0aW9uKSkKKwkJeworCQkJLyoKKwkJCSAqIFRoaXMgdHlwaWNh bGx5IG1lYW5zIHRoYXQgdGhlIHBhcnNlciBjb3VsZCBub3QgcmVzb2x2ZSBh CisJCQkgKiBjb25mbGljdCBvZiBpbXBsaWNpdCBjb2xsYXRpb25zLCBzbyBy ZXBvcnQgaXQgdGhhdCB3YXkuCisJCQkgKi8KKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9DT0xMQVRJ T04pLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHdoaWNo IGNvbGxhdGlvbiB0byB1c2UgZm9yIElMSUtFIiksCisJCQkJCSBlcnJoaW50 KCJVc2UgdGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9u IGV4cGxpY2l0bHkuIikpKTsKKwkJfQorCQlsb2NhbGUgPSBwZ19uZXdsb2Nh bGVfZnJvbV9jb2xsYXRpb24oY29sbGF0aW9uKTsKKwl9CiAKIAkvKgogCSAq IEZvciBlZmZpY2llbmN5IHJlYXNvbnMsIGluIHRoZSBzaW5nbGUgYnl0ZSBj YXNlIHdlIGRvbid0IGNhbGwgbG93ZXIoKQogCSAqIG9uIHRoZSBwYXR0ZXJu IGFuZCB0ZXh0LCBidXQgaW5zdGVhZCBjYWxsIFNCX2xvd2VyX2NoYXIgb24g ZWFjaAotCSAqIGNoYXJhY3Rlci4gIEluIHRoZSBtdWx0aS1ieXRlIGNhc2Ug d2UgZG9uJ3QgaGF2ZSBtdWNoIGNob2ljZSA6LSgKKwkgKiBjaGFyYWN0ZXIu ICBJbiB0aGUgbXVsdGktYnl0ZSBjYXNlIHdlIGRvbid0IGhhdmUgbXVjaCBj aG9pY2UgOi0oLgorCSAqIEFsc28sIElDVSBkb2VzIG5vdCBzdXBwb3J0IHNp bmdsZS1jaGFyYWN0ZXIgY2FzZSBmb2xkaW5nLCBzbyB3ZSBnbyB0aGUKKwkg KiBsb25nIHdheS4KIAkgKi8KIAotCWlmIChwZ19kYXRhYmFzZV9lbmNvZGlu Z19tYXhfbGVuZ3RoKCkgPiAxKQorCWlmIChwZ19kYXRhYmFzZV9lbmNvZGlu Z19tYXhfbGVuZ3RoKCkgPiAxIHx8IGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09M TFBST1ZJREVSX0lDVSkKIAl7CiAJCS8qIGxvd2VyJ3MgcmVzdWx0IGlzIG5l dmVyIHBhY2tlZCwgc28gT0sgdG8gdXNlIG9sZCBtYWNyb3MgaGVyZSAqLwog CQlwYXQgPSBEYXR1bUdldFRleHRQUChEaXJlY3RGdW5jdGlvbkNhbGwxQ29s bChsb3dlciwgY29sbGF0aW9uLApAQCAtMTkwLDMxICsyMTIsNiBAQCBHZW5l cmljX1RleHRfSUNfbGlrZSh0ZXh0ICpzdHIsIHRleHQgKnBhdCwgT2lkIGNv bGxhdGlvbikKIAl9CiAJZWxzZQogCXsKLQkJLyoKLQkJICogSGVyZSB3ZSBu ZWVkIHRvIHByZXBhcmUgbG9jYWxlIGluZm9ybWF0aW9uIGZvciBTQl9sb3dl cl9jaGFyLiBUaGlzCi0JCSAqIHNob3VsZCBtYXRjaCB0aGUgbWV0aG9kcyB1 c2VkIGluIHN0cl90b2xvd2VyKCkuCi0JCSAqLwotCQlwZ19sb2NhbGVfdCBs b2NhbGUgPSAwOwotCQlib29sCQlsb2NhbGVfaXNfYyA9IGZhbHNlOwotCi0J CWlmIChsY19jdHlwZV9pc19jKGNvbGxhdGlvbikpCi0JCQlsb2NhbGVfaXNf YyA9IHRydWU7Ci0JCWVsc2UgaWYgKGNvbGxhdGlvbiAhPSBERUZBVUxUX0NP TExBVElPTl9PSUQpCi0JCXsKLQkJCWlmICghT2lkSXNWYWxpZChjb2xsYXRp b24pKQotCQkJewotCQkJCS8qCi0JCQkJICogVGhpcyB0eXBpY2FsbHkgbWVh bnMgdGhhdCB0aGUgcGFyc2VyIGNvdWxkIG5vdCByZXNvbHZlIGEKLQkJCQkg KiBjb25mbGljdCBvZiBpbXBsaWNpdCBjb2xsYXRpb25zLCBzbyByZXBvcnQg aXQgdGhhdCB3YXkuCi0JCQkJICovCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9DT0xMQVRJT04p LAotCQkJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSB3aGljaCBj b2xsYXRpb24gdG8gdXNlIGZvciBJTElLRSIpLAotCQkJCQkJIGVycmhpbnQo IlVzZSB0aGUgQ09MTEFURSBjbGF1c2UgdG8gc2V0IHRoZSBjb2xsYXRpb24g ZXhwbGljaXRseS4iKSkpOwotCQkJfQotCQkJbG9jYWxlID0gcGdfbmV3bG9j YWxlX2Zyb21fY29sbGF0aW9uKGNvbGxhdGlvbik7Ci0JCX0KLQogCQlwID0g VkFSREFUQV9BTlkocGF0KTsKIAkJcGxlbiA9IFZBUlNJWkVfQU5ZX0VYSERS KHBhdCk7CiAJCXMgPSBWQVJEQVRBX0FOWShzdHIpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCmluZGV4IGFiMTk3MDI1ZjguLjJh MmM5YmM1MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9j YWxlLmMKQEAgLTU3LDExICs1NywxNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9s LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9t ZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKKyNpZmRlZiBVU0VfSUNVCisj aW5jbHVkZSA8dW5pY29kZS91Y252Lmg+CisjZW5kaWYKKwogI2lmZGVmIFdJ TjMyCiAvKgogICogVGhpcyBXaW5kb3dzIGZpbGUgZGVmaW5lcyBTdHJOQ3B5 LiBXZSBkb24ndCBuZWVkIGl0IGhlcmUsIHNvIHdlIHVuZGVmaW5lCkBAIC0x MjcyLDEyICsxMjc4LDEzIEBAIHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlv bihPaWQgY29sbGlkKQogCWlmIChjYWNoZV9lbnRyeS0+bG9jYWxlID09IDAp CiAJewogCQkvKiBXZSBoYXZlbid0IGNvbXB1dGVkIHRoaXMgeWV0IGluIHRo aXMgc2Vzc2lvbiwgc28gZG8gaXQgKi8KLSNpZmRlZiBIQVZFX0xPQ0FMRV9U CiAJCUhlYXBUdXBsZQl0cDsKIAkJRm9ybV9wZ19jb2xsYXRpb24gY29sbGZv cm07CiAJCWNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlOwotCQljb25zdCBjaGFy ICpjb2xsY3R5cGU7Ci0JCWxvY2FsZV90CXJlc3VsdDsKKwkJY29uc3QgY2hh ciAqY29sbGN0eXBlIHBnX2F0dHJpYnV0ZV91bnVzZWQoKTsKKwkJcGdfbG9j YWxlX3QJcmVzdWx0OworCQlEYXR1bQkJY29sbHZlcnNpb247CisJCWJvb2wJ CWlzbnVsbDsKIAogCQl0cCA9IFNlYXJjaFN5c0NhY2hlMShDT0xMT0lELCBP YmplY3RJZEdldERhdHVtKGNvbGxpZCkpOwogCQlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHApKQpAQCAtMTI4Nyw2MSArMTI5NCwyMzAgQEAgcGdfbmV3bG9j YWxlX2Zyb21fY29sbGF0aW9uKE9pZCBjb2xsaWQpCiAJCWNvbGxjb2xsYXRl ID0gTmFtZVN0cihjb2xsZm9ybS0+Y29sbGNvbGxhdGUpOwogCQljb2xsY3R5 cGUgPSBOYW1lU3RyKGNvbGxmb3JtLT5jb2xsY3R5cGUpOwogCi0JCWlmIChz dHJjbXAoY29sbGNvbGxhdGUsIGNvbGxjdHlwZSkgPT0gMCkKKwkJcmVzdWx0 ID0gbWFsbG9jKHNpemVvZigqIHJlc3VsdCkpOworCQltZW1zZXQocmVzdWx0 LCAwLCBzaXplb2YoKiByZXN1bHQpKTsKKwkJcmVzdWx0LT5wcm92aWRlciA9 IGNvbGxmb3JtLT5jb2xscHJvdmlkZXI7CisKKwkJaWYgKGNvbGxmb3JtLT5j b2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMpCiAJCXsKLQkJCS8q IE5vcm1hbCBjYXNlIHdoZXJlIHRoZXkncmUgdGhlIHNhbWUgKi8KKyNpZmRl ZiBIQVZFX0xPQ0FMRV9UCisJCQlsb2NhbGVfdAlsb2M7CisKKwkJCWlmIChz dHJjbXAoY29sbGNvbGxhdGUsIGNvbGxjdHlwZSkgPT0gMCkKKwkJCXsKKwkJ CQkvKiBOb3JtYWwgY2FzZSB3aGVyZSB0aGV5J3JlIHRoZSBzYW1lICovCiAj aWZuZGVmIFdJTjMyCi0JCQlyZXN1bHQgPSBuZXdsb2NhbGUoTENfQ09MTEFU RV9NQVNLIHwgTENfQ1RZUEVfTUFTSywgY29sbGNvbGxhdGUsCi0JCQkJCQkJ ICAgTlVMTCk7CisJCQkJbG9jID0gbmV3bG9jYWxlKExDX0NPTExBVEVfTUFT SyB8IExDX0NUWVBFX01BU0ssIGNvbGxjb2xsYXRlLAorCQkJCQkJCQkgICBO VUxMKTsKICNlbHNlCi0JCQlyZXN1bHQgPSBfY3JlYXRlX2xvY2FsZShMQ19B TEwsIGNvbGxjb2xsYXRlKTsKKwkJCQlsb2MgPSBfY3JlYXRlX2xvY2FsZShM Q19BTEwsIGNvbGxjb2xsYXRlKTsKICNlbmRpZgotCQkJaWYgKCFyZXN1bHQp Ci0JCQkJcmVwb3J0X25ld2xvY2FsZV9mYWlsdXJlKGNvbGxjb2xsYXRlKTsK LQkJfQotCQllbHNlCi0JCXsKKwkJCQlpZiAoIWxvYykKKwkJCQkJcmVwb3J0 X25ld2xvY2FsZV9mYWlsdXJlKGNvbGxjb2xsYXRlKTsKKwkJCX0KKwkJCWVs c2UKKwkJCXsKICNpZm5kZWYgV0lOMzIKLQkJCS8qIFdlIG5lZWQgdHdvIG5l d2xvY2FsZSgpIHN0ZXBzICovCi0JCQlsb2NhbGVfdAlsb2MxOwotCi0JCQls b2MxID0gbmV3bG9jYWxlKExDX0NPTExBVEVfTUFTSywgY29sbGNvbGxhdGUs IE5VTEwpOwotCQkJaWYgKCFsb2MxKQotCQkJCXJlcG9ydF9uZXdsb2NhbGVf ZmFpbHVyZShjb2xsY29sbGF0ZSk7Ci0JCQlyZXN1bHQgPSBuZXdsb2NhbGUo TENfQ1RZUEVfTUFTSywgY29sbGN0eXBlLCBsb2MxKTsKLQkJCWlmICghcmVz dWx0KQotCQkJCXJlcG9ydF9uZXdsb2NhbGVfZmFpbHVyZShjb2xsY3R5cGUp OworCQkJCS8qIFdlIG5lZWQgdHdvIG5ld2xvY2FsZSgpIHN0ZXBzICovCisJ CQkJbG9jYWxlX3QJbG9jMTsKKworCQkJCWxvYzEgPSBuZXdsb2NhbGUoTENf Q09MTEFURV9NQVNLLCBjb2xsY29sbGF0ZSwgTlVMTCk7CisJCQkJaWYgKCFs b2MxKQorCQkJCQlyZXBvcnRfbmV3bG9jYWxlX2ZhaWx1cmUoY29sbGNvbGxh dGUpOworCQkJCWxvYyA9IG5ld2xvY2FsZShMQ19DVFlQRV9NQVNLLCBjb2xs Y3R5cGUsIGxvYzEpOworCQkJCWlmICghbG9jKQorCQkJCQlyZXBvcnRfbmV3 bG9jYWxlX2ZhaWx1cmUoY29sbGN0eXBlKTsKICNlbHNlCiAKLQkJCS8qCi0J CQkgKiBYWFggVGhlIF9jcmVhdGVfbG9jYWxlKCkgQVBJIGRvZXNuJ3QgYXBw ZWFyIHRvIHN1cHBvcnQgdGhpcy4KLQkJCSAqIENvdWxkIHBlcmhhcHMgYmUg d29ya2VkIGFyb3VuZCBieSBjaGFuZ2luZyBwZ19sb2NhbGVfdCB0bwotCQkJ ICogY29udGFpbiB0d28gc2VwYXJhdGUgZmllbGRzLgotCQkJICovCisJCQkJ LyoKKwkJCQkgKiBYWFggVGhlIF9jcmVhdGVfbG9jYWxlKCkgQVBJIGRvZXNu J3QgYXBwZWFyIHRvIHN1cHBvcnQgdGhpcy4KKwkJCQkgKiBDb3VsZCBwZXJo YXBzIGJlIHdvcmtlZCBhcm91bmQgYnkgY2hhbmdpbmcgcGdfbG9jYWxlX3Qg dG8KKwkJCQkgKiBjb250YWluIHR3byBzZXBhcmF0ZSBmaWVsZHMuCisJCQkJ ICovCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNv bGxhdGlvbnMgd2l0aCBkaWZmZXJlbnQgY29sbGF0ZSBhbmQgY3R5cGUgdmFs dWVzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOwor I2VuZGlmCisJCQl9CisKKwkJCXJlc3VsdC0+aW5mby5sdCA9IGxvYzsKKyNl bHNlCQkJCQkJCS8qIG5vdCBIQVZFX0xPQ0FMRV9UICovCisJCQkvKiBwbGF0 Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBsb2NhbGVfdCAqLwogCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAotCQkJCQkgZXJybXNnKCJjb2xsYXRpb25zIHdpdGgg ZGlmZmVyZW50IGNvbGxhdGUgYW5kIGN0eXBlIHZhbHVlcyBhcmUgbm90IHN1 cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpKTsKLSNlbmRpZgorCQkJCQkg ZXJybXNnKCJjb2xsYXRpb24gcHJvdmlkZXIgTElCQyBpcyBub3Qgc3VwcG9y dGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOworI2VuZGlmICAgLyogbm90IEhB VkVfTE9DQUxFX1QgKi8KKwkJfQorCQllbHNlIGlmIChjb2xsZm9ybS0+Y29s bHByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCXsKKyNpZmRlZiBV U0VfSUNVCisJCQlVQ29sbGF0b3IgICpjb2xsYXRvcjsKKwkJCVVFcnJvckNv ZGUJc3RhdHVzOworCisJCQlzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisJCQlj b2xsYXRvciA9IHVjb2xfb3Blbihjb2xsY29sbGF0ZSwgJnN0YXR1cyk7CisJ CQlpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJtc2coImNvdWxkIG5vdCBvcGVuIGNvbGxhdG9yIGZvciBs b2NhbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkJCWNvbGxjb2xsYXRlLCB1X2Vy cm9yTmFtZShzdGF0dXMpKSkpOworCisJCQlyZXN1bHQtPmluZm8uaWN1Lmxv Y2FsZSA9IHN0cmR1cChjb2xsY29sbGF0ZSk7CisJCQlyZXN1bHQtPmluZm8u aWN1LnVjb2wgPSBjb2xsYXRvcjsKKyNlbHNlIC8qIG5vdCBVU0VfSUNVICov CisJCQkvKiBjb3VsZCBnZXQgaGVyZSBpZiBhIGNvbGxhdGlvbiB3YXMgY3Jl YXRlZCBieSBhIGJ1aWxkIHdpdGggSUNVICovCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCSBlcnJtc2coIklDVSBpcyBub3Qgc3VwcG9ydGVkIGluIHRo aXMgYnVpbGQiKSwgXAorCQkJCQkgZXJyaGludCgiWW91IG5lZWQgdG8gcmVi dWlsZCBQb3N0Z3JlU1FMIHVzaW5nIC0td2l0aC1pY3UuIikpKTsKKyNlbmRp ZiAvKiBub3QgVVNFX0lDVSAqLwogCQl9CiAKLQkJY2FjaGVfZW50cnktPmxv Y2FsZSA9IHJlc3VsdDsKKwkJY29sbHZlcnNpb24gPSBTeXNDYWNoZUdldEF0 dHIoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGx2ZXJzaW9u LAorCQkJCQkJCQkJICAmaXNudWxsKTsKKwkJaWYgKCFpc251bGwpCisJCXsK KwkJCWNoYXIJICAgKmFjdHVhbF92ZXJzaW9uc3RyOworCQkJY2hhcgkgICAq Y29sbHZlcnNpb25zdHI7CisKKwkJCWFjdHVhbF92ZXJzaW9uc3RyID0gZ2V0 X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjb2xsZm9ybS0+Y29sbHByb3Zp ZGVyLCBjb2xsY29sbGF0ZSk7CisJCQlpZiAoIWFjdHVhbF92ZXJzaW9uc3Ry KQorCQkJCS8qIFRoaXMgY291bGQgaGFwcGVuIHdoZW4gc3BlY2lmeWluZyBh IHZlcnNpb24gaW4gQ1JFQVRFCisJCQkJICogQ09MTEFUSU9OIGZvciBhIGxp YmMgbG9jYWxlLCBvciBtYW51YWxseSBjcmVhdGluZyBhIG1lc3MKKwkJCQkg KiBpbiB0aGUgY2F0YWxvZ3MuICovCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJtc2coImNvbGxhdGlvbiBcIiVzXCIgaGFzIG5vIGFjdHVhbCB2 ZXJzaW9uLCBidXQgYSB2ZXJzaW9uIHdhcyBzcGVjaWZpZWQiLAorCQkJCQkJ CQlOYW1lU3RyKGNvbGxmb3JtLT5jb2xsbmFtZSkpKSk7CisJCQljb2xsdmVy c2lvbnN0ciA9IFRleHREYXR1bUdldENTdHJpbmcoY29sbHZlcnNpb24pOwor CisJCQlpZiAoc3RyY21wKGFjdHVhbF92ZXJzaW9uc3RyLCBjb2xsdmVyc2lv bnN0cikgIT0gMCkKKwkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkoZXJy bXNnKCJjb2xsYXRpb24gXCIlc1wiIGhhcyB2ZXJzaW9uIG1pc21hdGNoIiwK KwkJCQkJCQkJTmFtZVN0cihjb2xsZm9ybS0+Y29sbG5hbWUpKSwKKwkJCQkJ CSBlcnJkZXRhaWwoIlRoZSBjb2xsYXRpb24gaW4gdGhlIGRhdGFiYXNlIHdh cyBjcmVhdGVkIHVzaW5nIHZlcnNpb24gJXMsICIKKwkJCQkJCQkJICAgImJ1 dCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyB2ZXJzaW9uICVzLiIs CisJCQkJCQkJCSAgIGNvbGx2ZXJzaW9uc3RyLCBhY3R1YWxfdmVyc2lvbnN0 ciksCisJCQkJCQkgZXJyaGludCgiUmVidWlsZCBhbGwgb2JqZWN0cyBhZmZl Y3RlZCBieSB0aGlzIGNvbGxhdGlvbiBhbmQgcnVuICIKKwkJCQkJCQkJICJB TFRFUiBDT0xMQVRJT04gJXMgUkVGUkVTSCBWRVJTSU9OLCAiCisJCQkJCQkJ CSAib3IgYnVpbGQgUG9zdGdyZVNRTCB3aXRoIHRoZSByaWdodCBsaWJyYXJ5 IHZlcnNpb24uIiwKKwkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlm aWVyKGdldF9uYW1lc3BhY2VfbmFtZShjb2xsZm9ybS0+Y29sbG5hbWVzcGFj ZSksCisJCQkJCQkJCQkJCQkJCQlOYW1lU3RyKGNvbGxmb3JtLT5jb2xsbmFt ZSkpKSkpOworCQl9CiAKIAkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKLSNlbHNl CQkJCQkJCS8qIG5vdCBIQVZFX0xPQ0FMRV9UICovCiAKLQkJLyoKLQkJICog Rm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgbG9jYWxlX3QsIHdl IGNhbid0IGRvIGFueXRoaW5nCi0JCSAqIHdpdGggbm9uLWRlZmF1bHQgY29s bGF0aW9ucy4KLQkJICovCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQllcnJtc2co Im5vbmRlZmF1bHQgY29sbGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0 aGlzIHBsYXRmb3JtIikpKTsKLSNlbmRpZiAgIC8qIG5vdCBIQVZFX0xPQ0FM RV9UICovCisJCWNhY2hlX2VudHJ5LT5sb2NhbGUgPSByZXN1bHQ7CiAJfQog CiAJcmV0dXJuIGNhY2hlX2VudHJ5LT5sb2NhbGU7CiB9CiAKKy8qCisgKiBH ZXQgcHJvdmlkZXItc3BlY2lmaWMgY29sbGF0aW9uIHZlcnNpb24gc3RyaW5n IGZvciB0aGUgZ2l2ZW4gY29sbGF0aW9uIGZyb20KKyAqIHRoZSBvcGVyYXRp bmcgc3lzdGVtL2xpYnJhcnkuCisgKgorICogQSBwYXJ0aWN1bGFyIHByb3Zp ZGVyIG11c3QgYWx3YXlzIGVpdGhlciByZXR1cm4gYSBub24tTlVMTCBzdHJp bmcgb3IgcmV0dXJuCisgKiBOVUxMIChpZiBpdCBkb2Vzbid0IHN1cHBvcnQg dmVyc2lvbnMpLiAgSXQgbXVzdCBub3QgcmV0dXJuIE5VTEwgZm9yIHNvbWUK KyAqIGNvbGxjb2xsYXRlIGFuZCBub3QgTlVMTCBmb3Igb3RoZXJzLgorICov CitjaGFyICoKK2dldF9jb2xsYXRpb25fYWN0dWFsX3ZlcnNpb24oY2hhciBj b2xscHJvdmlkZXIsIGNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlKQoreworCWNo YXIJICAgKmNvbGx2ZXJzaW9uOworCisjaWZkZWYgVVNFX0lDVQorCWlmIChj b2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKKwl7CisJCVVDb2xs YXRvciAgKmNvbGxhdG9yOworCQlVRXJyb3JDb2RlCXN0YXR1czsKKwkJVVZl cnNpb25JbmZvIHZlcnNpb25pbmZvOworCQljaGFyCQlidWZbVV9NQVhfVkVS U0lPTl9TVFJJTkdfTEVOR1RIXTsKKworCQlzdGF0dXMgPSBVX1pFUk9fRVJS T1I7CisJCWNvbGxhdG9yID0gdWNvbF9vcGVuKGNvbGxjb2xsYXRlLCAmc3Rh dHVzKTsKKwkJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycm1zZygiY291bGQgbm90IG9wZW4gY29sbGF0b3Ig Zm9yIGxvY2FsZSBcIiVzXCI6ICVzIiwKKwkJCQkJCQljb2xsY29sbGF0ZSwg dV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwkJdWNvbF9nZXRWZXJzaW9uKGNv bGxhdG9yLCB2ZXJzaW9uaW5mbyk7CisJCXVjb2xfY2xvc2UoY29sbGF0b3Ip OworCisJCXVfdmVyc2lvblRvU3RyaW5nKHZlcnNpb25pbmZvLCBidWYpOwor CQljb2xsdmVyc2lvbiA9IHBzdHJkdXAoYnVmKTsKKwl9CisJZWxzZQorI2Vu ZGlmCisJCWNvbGx2ZXJzaW9uID0gTlVMTDsKKworCXJldHVybiBjb2xsdmVy c2lvbjsKK30KKworCisjaWZkZWYgVVNFX0lDVQorLyoKKyAqIENvbnZlcnRl ciBvYmplY3QgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBJQ1UncyBVQ2hhciBz dHJpbmdzIGFuZCBDIHN0cmluZ3MKKyAqIGluIGRhdGFiYXNlIGVuY29kaW5n LiAgU2luY2UgdGhlIGRhdGFiYXNlIGVuY29kaW5nIGRvZXNuJ3QgY2hhbmdl LCB3ZSBvbmx5CisgKiBuZWVkIG9uZSBvZiB0aGVzZSBwZXIgc2Vzc2lvbi4K KyAqLworc3RhdGljIFVDb252ZXJ0ZXIgKmljdV9jb252ZXJ0ZXIgPSBOVUxM OworCitzdGF0aWMgdm9pZAoraW5pdF9pY3VfY29udmVydGVyKHZvaWQpCit7 CisJY29uc3QgY2hhciAqaWN1X2VuY29kaW5nX25hbWU7CisJVUVycm9yQ29k ZQlzdGF0dXM7CisJVUNvbnZlcnRlciAqY29udjsKKworCWlmIChpY3VfY29u dmVydGVyKQorCQlyZXR1cm47CisKKwlpY3VfZW5jb2RpbmdfbmFtZSA9IGdl dF9lbmNvZGluZ19uYW1lX2Zvcl9pY3UoR2V0RGF0YWJhc2VFbmNvZGluZygp KTsKKworCXN0YXR1cyA9IFVfWkVST19FUlJPUjsKKwljb252ID0gdWNudl9v cGVuKGljdV9lbmNvZGluZ19uYW1lLCAmc3RhdHVzKTsKKwlpZiAoVV9GQUlM VVJFKHN0YXR1cykpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygi Y291bGQgbm90IG9wZW4gSUNVIGNvbnZlcnRlciBmb3IgZW5jb2RpbmcgXCIl c1wiOiAlcyIsCisJCQkJCQlpY3VfZW5jb2RpbmdfbmFtZSwgdV9lcnJvck5h bWUoc3RhdHVzKSkpKTsKKworCWljdV9jb252ZXJ0ZXIgPSBjb252OworfQor CitpbnQzMl90CitpY3VfdG9fdWNoYXIoVUNoYXIgKipidWZmX3VjaGFyLCBj b25zdCBjaGFyICpidWZmLCBzaXplX3QgbmJ5dGVzKQoreworCVVFcnJvckNv ZGUJc3RhdHVzOworCWludDMyX3QJCWxlbl91Y2hhcjsKKworCWluaXRfaWN1 X2NvbnZlcnRlcigpOworCisJbGVuX3VjaGFyID0gMiAqIG5ieXRlczsgIC8q IG1heCBsZW5ndGggcGVyIGRvY3MgKi8KKwkqYnVmZl91Y2hhciA9IHBhbGxv YyhsZW5fdWNoYXIgKiBzaXplb2YoKipidWZmX3VjaGFyKSk7CisJc3RhdHVz ID0gVV9aRVJPX0VSUk9SOworCWxlbl91Y2hhciA9IHVjbnZfdG9VQ2hhcnMo aWN1X2NvbnZlcnRlciwgKmJ1ZmZfdWNoYXIsIGxlbl91Y2hhciwgYnVmZiwg bmJ5dGVzLCAmc3RhdHVzKTsKKwlpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygidWNudl90b1VDaGFycyBm YWlsZWQ6ICVzIiwgdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwlyZXR1cm4g bGVuX3VjaGFyOworfQorCitpbnQzMl90CitpY3VfZnJvbV91Y2hhcihjaGFy ICoqcmVzdWx0LCBVQ2hhciAqYnVmZl91Y2hhciwgaW50MzJfdCBsZW5fdWNo YXIpCit7CisJVUVycm9yQ29kZQlzdGF0dXM7CisJaW50MzJfdAkJbGVuX3Jl c3VsdDsKKworCWluaXRfaWN1X2NvbnZlcnRlcigpOworCisJbGVuX3Jlc3Vs dCA9IFVDTlZfR0VUX01BWF9CWVRFU19GT1JfU1RSSU5HKGxlbl91Y2hhciwg dWNudl9nZXRNYXhDaGFyU2l6ZShpY3VfY29udmVydGVyKSk7CisJKnJlc3Vs dCA9IHBhbGxvYyhsZW5fcmVzdWx0ICsgMSk7CisJc3RhdHVzID0gVV9aRVJP X0VSUk9SOworCXVjbnZfZnJvbVVDaGFycyhpY3VfY29udmVydGVyLCAqcmVz dWx0LCBsZW5fcmVzdWx0LCBidWZmX3VjaGFyLCBsZW5fdWNoYXIsICZzdGF0 dXMpOworCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJybXNnKCJ1Y252X2Zyb21VQ2hhcnMgZmFpbGVkOiAlcyIs IHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7CisJcmV0dXJuIGxlbl9yZXN1bHQ7 Cit9CisjZW5kaWYKIAogLyoKICAqIFRoZXNlIGZ1bmN0aW9ucyBjb252ZXJ0 IGZyb20vdG8gbGliYydzIHdjaGFyX3QsICpub3QqIHBnX3djaGFyX3QuCkBA IC0xMzYyLDYgKzE1MzgsOCBAQCB3Y2hhcjJjaGFyKGNoYXIgKnRvLCBjb25z dCB3Y2hhcl90ICpmcm9tLCBzaXplX3QgdG9sZW4sIHBnX2xvY2FsZV90IGxv Y2FsZSkKIHsKIAlzaXplX3QJCXJlc3VsdDsKIAorCUFzc2VydCghbG9jYWxl IHx8IGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMpOwor CiAJaWYgKHRvbGVuID09IDApCiAJCXJldHVybiAwOwogCkBAIC0xMzk4LDEw ICsxNTc2LDEwIEBAIHdjaGFyMmNoYXIoY2hhciAqdG8sIGNvbnN0IHdjaGFy X3QgKmZyb20sIHNpemVfdCB0b2xlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKQog I2lmZGVmIEhBVkVfTE9DQUxFX1QKICNpZmRlZiBIQVZFX1dDU1RPTUJTX0wK IAkJLyogVXNlIHdjc3RvbWJzX2wgZm9yIG5vbmRlZmF1bHQgbG9jYWxlcyAq LwotCQlyZXN1bHQgPSB3Y3N0b21ic19sKHRvLCBmcm9tLCB0b2xlbiwgbG9j YWxlKTsKKwkJcmVzdWx0ID0gd2NzdG9tYnNfbCh0bywgZnJvbSwgdG9sZW4s IGxvY2FsZS0+aW5mby5sdCk7CiAjZWxzZQkJCQkJCQkvKiAhSEFWRV9XQ1NU T01CU19MICovCiAJCS8qIFdlIGhhdmUgdG8gdGVtcG9yYXJpbHkgc2V0IHRo ZSBsb2NhbGUgYXMgY3VycmVudCAuLi4gdWdoICovCi0JCWxvY2FsZV90CXNh dmVfbG9jYWxlID0gdXNlbG9jYWxlKGxvY2FsZSk7CisJCWxvY2FsZV90CXNh dmVfbG9jYWxlID0gdXNlbG9jYWxlKGxvY2FsZS0+aW5mby5sdCk7CiAKIAkJ cmVzdWx0ID0gd2NzdG9tYnModG8sIGZyb20sIHRvbGVuKTsKIApAQCAtMTQz Miw2ICsxNjEwLDggQEAgY2hhcjJ3Y2hhcih3Y2hhcl90ICp0bywgc2l6ZV90 IHRvbGVuLCBjb25zdCBjaGFyICpmcm9tLCBzaXplX3QgZnJvbWxlbiwKIHsK IAlzaXplX3QJCXJlc3VsdDsKIAorCUFzc2VydCghbG9jYWxlIHx8IGxvY2Fs ZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMpOworCiAJaWYgKHRv bGVuID09IDApCiAJCXJldHVybiAwOwogCkBAIC0xNDczLDEwICsxNjUzLDEw IEBAIGNoYXIyd2NoYXIod2NoYXJfdCAqdG8sIHNpemVfdCB0b2xlbiwgY29u c3QgY2hhciAqZnJvbSwgc2l6ZV90IGZyb21sZW4sCiAjaWZkZWYgSEFWRV9M T0NBTEVfVAogI2lmZGVmIEhBVkVfTUJTVE9XQ1NfTAogCQkJLyogVXNlIG1i c3Rvd2NzX2wgZm9yIG5vbmRlZmF1bHQgbG9jYWxlcyAqLwotCQkJcmVzdWx0 ID0gbWJzdG93Y3NfbCh0bywgc3RyLCB0b2xlbiwgbG9jYWxlKTsKKwkJCXJl c3VsdCA9IG1ic3Rvd2NzX2wodG8sIHN0ciwgdG9sZW4sIGxvY2FsZS0+aW5m by5sdCk7CiAjZWxzZQkJCQkJCQkvKiAhSEFWRV9NQlNUT1dDU19MICovCiAJ CQkvKiBXZSBoYXZlIHRvIHRlbXBvcmFyaWx5IHNldCB0aGUgbG9jYWxlIGFz IGN1cnJlbnQgLi4uIHVnaCAqLwotCQkJbG9jYWxlX3QJc2F2ZV9sb2NhbGUg PSB1c2Vsb2NhbGUobG9jYWxlKTsKKwkJCWxvY2FsZV90CXNhdmVfbG9jYWxl ID0gdXNlbG9jYWxlKGxvY2FsZS0+aW5mby5sdCk7CiAKIAkJCXJlc3VsdCA9 IG1ic3Rvd2NzKHRvLCBzdHIsIHRvbGVuKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvc2VsZnVuY3MuYwppbmRleCBiYjlhNTQ0Njg2Li5mOGIyOGZl MGU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwpA QCAtNTI1OSw3ICs1MjU5LDcgQEAgZmluZF9qb2luX2lucHV0X3JlbChQbGFu bmVySW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkcykKIC8qCiAgKiBDaGVjayB3 aGV0aGVyIGNoYXIgaXMgYSBsZXR0ZXIgKGFuZCwgaGVuY2UsIHN1YmplY3Qg dG8gY2FzZS1mb2xkaW5nKQogICoKLSAqIEluIG11bHRpYnl0ZSBjaGFyYWN0 ZXIgc2V0cywgd2UgY2FuJ3QgdXNlIGlzYWxwaGEsIGFuZCBpdCBkb2VzIG5v dCBzZWVtCisgKiBJbiBtdWx0aWJ5dGUgY2hhcmFjdGVyIHNldHMgb3Igd2l0 aCBJQ1UsIHdlIGNhbid0IHVzZSBpc2FscGhhLCBhbmQgaXQgZG9lcyBub3Qg c2VlbQogICogd29ydGggdHJ5aW5nIHRvIGNvbnZlcnQgdG8gd2NoYXJfdCB0 byB1c2UgaXN3YWxwaGEuICBJbnN0ZWFkLCBqdXN0IGFzc3VtZQogICogYW55 IG11bHRpYnl0ZSBjaGFyIGlzIHBvdGVudGlhbGx5IGNhc2UtdmFyeWluZy4K ICAqLwpAQCAtNTI3MSw5ICs1MjcxLDExIEBAIHBhdHRlcm5fY2hhcl9pc2Fs cGhhKGNoYXIgYywgYm9vbCBpc19tdWx0aWJ5dGUsCiAJCXJldHVybiAoYyA+ PSAnQScgJiYgYyA8PSAnWicpIHx8IChjID49ICdhJyAmJiBjIDw9ICd6Jyk7 CiAJZWxzZSBpZiAoaXNfbXVsdGlieXRlICYmIElTX0hJR0hCSVRfU0VUKGMp KQogCQlyZXR1cm4gdHJ1ZTsKKwllbHNlIGlmIChsb2NhbGUgJiYgbG9jYWxl LT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQlyZXR1cm4gSVNf SElHSEJJVF9TRVQoYykgPyB0cnVlIDogZmFsc2U7CiAjaWZkZWYgSEFWRV9M T0NBTEVfVAotCWVsc2UgaWYgKGxvY2FsZSkKLQkJcmV0dXJuIGlzYWxwaGFf bCgodW5zaWduZWQgY2hhcikgYywgbG9jYWxlKTsKKwllbHNlIGlmIChsb2Nh bGUgJiYgbG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfTElCQykK KwkJcmV0dXJuIGlzYWxwaGFfbCgodW5zaWduZWQgY2hhcikgYywgbG9jYWxl LT5pbmZvLmx0KTsKICNlbmRpZgogCWVsc2UKIAkJcmV0dXJuIGlzYWxwaGEo KHVuc2lnbmVkIGNoYXIpIGMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92 YXJsZW5hLmMKaW5kZXggY2QwMzZhZmMwMC4uYWE1NTZhYTVkZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCkBAIC03Myw5ICs3Myw3 IEBAIHR5cGVkZWYgc3RydWN0CiAJaHlwZXJMb2dMb2dTdGF0ZSBhYmJyX2Nh cmQ7IC8qIEFiYnJldmlhdGVkIGtleSBjYXJkaW5hbGl0eSBzdGF0ZSAqLwog CWh5cGVyTG9nTG9nU3RhdGUgZnVsbF9jYXJkOyAvKiBGdWxsIGtleSBjYXJk aW5hbGl0eSBzdGF0ZSAqLwogCWRvdWJsZQkJcHJvcF9jYXJkOwkJLyogUmVx dWlyZWQgY2FyZGluYWxpdHkgcHJvcG9ydGlvbiAqLwotI2lmZGVmIEhBVkVf TE9DQUxFX1QKIAlwZ19sb2NhbGVfdCBsb2NhbGU7Ci0jZW5kaWYKIH0gVmFy U3RyaW5nU29ydFN1cHBvcnQ7CiAKIC8qCkBAIC0xNDAzLDEwICsxNDAxLDcg QEAgdmFyc3RyX2NtcChjaGFyICphcmcxLCBpbnQgbGVuMSwgY2hhciAqYXJn MiwgaW50IGxlbjIsIE9pZCBjb2xsaWQpCiAJCWNoYXIJCWEyYnVmW1RFWFRC VUZMRU5dOwogCQljaGFyCSAgICphMXAsCiAJCQkJICAgKmEycDsKLQotI2lm ZGVmIEhBVkVfTE9DQUxFX1QKIAkJcGdfbG9jYWxlX3QgbXlsb2NhbGUgPSAw OwotI2VuZGlmCiAKIAkJaWYgKGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElP Tl9PSUQpCiAJCXsKQEAgLTE0MjEsOSArMTQxNiw3IEBAIHZhcnN0cl9jbXAo Y2hhciAqYXJnMSwgaW50IGxlbjEsIGNoYXIgKmFyZzIsIGludCBsZW4yLCBP aWQgY29sbGlkKQogCQkJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWlu ZSB3aGljaCBjb2xsYXRpb24gdG8gdXNlIGZvciBzdHJpbmcgY29tcGFyaXNv biIpLAogCQkJCQkJIGVycmhpbnQoIlVzZSB0aGUgQ09MTEFURSBjbGF1c2Ug dG8gc2V0IHRoZSBjb2xsYXRpb24gZXhwbGljaXRseS4iKSkpOwogCQkJfQot I2lmZGVmIEhBVkVfTE9DQUxFX1QKIAkJCW15bG9jYWxlID0gcGdfbmV3bG9j YWxlX2Zyb21fY29sbGF0aW9uKGNvbGxpZCk7Ci0jZW5kaWYKIAkJfQogCiAJ CS8qCkBAIC0xNTQyLDExICsxNTM1LDU0IEBAIHZhcnN0cl9jbXAoY2hhciAq YXJnMSwgaW50IGxlbjEsIGNoYXIgKmFyZzIsIGludCBsZW4yLCBPaWQgY29s bGlkKQogCQltZW1jcHkoYTJwLCBhcmcyLCBsZW4yKTsKIAkJYTJwW2xlbjJd ID0gJ1wwJzsKIAotI2lmZGVmIEhBVkVfTE9DQUxFX1QKIAkJaWYgKG15bG9j YWxlKQotCQkJcmVzdWx0ID0gc3RyY29sbF9sKGExcCwgYTJwLCBteWxvY2Fs ZSk7Ci0JCWVsc2UKKwkJeworCQkJaWYgKG15bG9jYWxlLT5wcm92aWRlciA9 PSBDT0xMUFJPVklERVJfSUNVKQorCQkJeworI2lmZGVmIFVTRV9JQ1UKKyNp ZmRlZiBIQVZFX1VDT0xfU1RSQ09MTFVURjgKKwkJCQlpZiAoR2V0RGF0YWJh c2VFbmNvZGluZygpID09IFBHX1VURjgpCisJCQkJeworCQkJCQlVRXJyb3JD b2RlCXN0YXR1czsKKworCQkJCQlzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisJ CQkJCXJlc3VsdCA9IHVjb2xfc3RyY29sbFVURjgobXlsb2NhbGUtPmluZm8u aWN1LnVjb2wsCisJCQkJCQkJCQkJCSAgYXJnMSwgbGVuMSwKKwkJCQkJCQkJ CQkJICBhcmcyLCBsZW4yLAorCQkJCQkJCQkJCQkgICZzdGF0dXMpOworCQkJ CQlpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisJCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCQkoZXJybXNnKCJjb2xsYXRpb24gZmFpbGVkOiAlcyIsIHVf ZXJyb3JOYW1lKHN0YXR1cykpKSk7CisJCQkJfQorCQkJCWVsc2UKKyNlbmRp ZgorCQkJCXsKKwkJCQkJaW50MzJfdCB1bGVuMSwgdWxlbjI7CisJCQkJCVVD aGFyICp1Y2hhcjEsICp1Y2hhcjI7CisKKwkJCQkJdWxlbjEgPSBpY3VfdG9f dWNoYXIoJnVjaGFyMSwgYXJnMSwgbGVuMSk7CisJCQkJCXVsZW4yID0gaWN1 X3RvX3VjaGFyKCZ1Y2hhcjIsIGFyZzIsIGxlbjIpOworCisJCQkJCXJlc3Vs dCA9IHVjb2xfc3RyY29sbChteWxvY2FsZS0+aW5mby5pY3UudWNvbCwKKwkJ CQkJCQkJCQkgIHVjaGFyMSwgdWxlbjEsCisJCQkJCQkJCQkJICB1Y2hhcjIs IHVsZW4yKTsKKwkJCQl9CisjZWxzZQkvKiBub3QgVVNFX0lDVSAqLworCQkJ CS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJCQllbG9nKEVSUk9SLCAidW5z dXBwb3J0ZWQgY29sbHByb3ZpZGVyOiAlYyIsIG15bG9jYWxlLT5wcm92aWRl cik7CisjZW5kaWYJLyogbm90IFVTRV9JQ1UgKi8KKwkJCX0KKwkJCWVsc2UK KwkJCXsKKyNpZmRlZiBIQVZFX0xPQ0FMRV9UCisJCQkJcmVzdWx0ID0gc3Ry Y29sbF9sKGExcCwgYTJwLCBteWxvY2FsZS0+aW5mby5sdCk7CisjZWxzZQor CQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJCQllbG9nKEVSUk9SLCAi dW5zdXBwb3J0ZWQgY29sbHByb3ZpZGVyOiAlYyIsIG15bG9jYWxlLT5wcm92 aWRlcik7CiAjZW5kaWYKKwkJCX0KKwkJfQorCQllbHNlCiAJCQlyZXN1bHQg PSBzdHJjb2xsKGExcCwgYTJwKTsKIAogCQkvKgpAQCAtMTc2OCwxMCArMTgw NCw3IEBAIHZhcnN0cl9zb3J0c3VwcG9ydChTb3J0U3VwcG9ydCBzc3VwLCBP aWQgY29sbGlkLCBib29sIGJwY2hhcikKIAlib29sCQlhYmJyZXZpYXRlID0g c3N1cC0+YWJicmV2aWF0ZTsKIAlib29sCQljb2xsYXRlX2MgPSBmYWxzZTsK IAlWYXJTdHJpbmdTb3J0U3VwcG9ydCAqc3NzOwotCi0jaWZkZWYgSEFWRV9M T0NBTEVfVAogCXBnX2xvY2FsZV90IGxvY2FsZSA9IDA7Ci0jZW5kaWYKIAog CS8qCiAJICogSWYgcG9zc2libGUsIHNldCBzc3VwLT5jb21wYXJhdG9yIHRv IGEgZnVuY3Rpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8KQEAgLTE4MjYsOSAr MTg1OSw3IEBAIHZhcnN0cl9zb3J0c3VwcG9ydChTb3J0U3VwcG9ydCBzc3Vw LCBPaWQgY29sbGlkLCBib29sIGJwY2hhcikKIAkJCQkJCSBlcnJtc2coImNv dWxkIG5vdCBkZXRlcm1pbmUgd2hpY2ggY29sbGF0aW9uIHRvIHVzZSBmb3Ig c3RyaW5nIGNvbXBhcmlzb24iKSwKIAkJCQkJCSBlcnJoaW50KCJVc2UgdGhl IENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUgY29sbGF0aW9uIGV4cGxpY2l0 bHkuIikpKTsKIAkJCX0KLSNpZmRlZiBIQVZFX0xPQ0FMRV9UCiAJCQlsb2Nh bGUgPSBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oY29sbGlkKTsKLSNl bmRpZgogCQl9CiAJfQogCkBAIC0xODU0LDcgKzE4ODUsNyBAQCB2YXJzdHJf c29ydHN1cHBvcnQoU29ydFN1cHBvcnQgc3N1cCwgT2lkIGNvbGxpZCwgYm9v bCBicGNoYXIpCiAJICogcGxhdGZvcm1zLgogCSAqLwogI2lmbmRlZiBUUlVT VF9TVFJYRlJNCi0JaWYgKCFjb2xsYXRlX2MpCisJaWYgKCFjb2xsYXRlX2Mg JiYgIShsb2NhbGUgJiYgbG9jYWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklE RVJfSUNVKSkKIAkJYWJicmV2aWF0ZSA9IGZhbHNlOwogI2VuZGlmCiAKQEAg LTE4NzcsOSArMTkwOCw3IEBAIHZhcnN0cl9zb3J0c3VwcG9ydChTb3J0U3Vw cG9ydCBzc3VwLCBPaWQgY29sbGlkLCBib29sIGJwY2hhcikKIAkJc3NzLT5s YXN0X2xlbjIgPSAtMTsKIAkJLyogSW5pdGlhbGl6ZSAqLwogCQlzc3MtPmxh c3RfcmV0dXJuZWQgPSAwOwotI2lmZGVmIEhBVkVfTE9DQUxFX1QKIAkJc3Nz LT5sb2NhbGUgPSBsb2NhbGU7Ci0jZW5kaWYKIAogCQkvKgogCQkgKiBUbyBh dm9pZCBzb21laG93IGNvbmZ1c2luZyBhIHN0cnhmcm0oKSBibG9iIGFuZCBh biBvcmlnaW5hbCBzdHJpbmcsCkBAIC0yMDkwLDExICsyMTE5LDU0IEBAIHZh cnN0cmZhc3RjbXBfbG9jYWxlKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBw b3J0IHNzdXApCiAJCWdvdG8gZG9uZTsKIAl9CiAKLSNpZmRlZiBIQVZFX0xP Q0FMRV9UCiAJaWYgKHNzcy0+bG9jYWxlKQotCQlyZXN1bHQgPSBzdHJjb2xs X2woc3NzLT5idWYxLCBzc3MtPmJ1ZjIsIHNzcy0+bG9jYWxlKTsKLQllbHNl CisJeworCQlpZiAoc3NzLT5sb2NhbGUtPnByb3ZpZGVyID09IENPTExQUk9W SURFUl9JQ1UpCisJCXsKKyNpZmRlZiBVU0VfSUNVCisjaWZkZWYgSEFWRV9V Q09MX1NUUkNPTExVVEY4CisJCQlpZiAoR2V0RGF0YWJhc2VFbmNvZGluZygp ID09IFBHX1VURjgpCisJCQl7CisJCQkJVUVycm9yQ29kZQlzdGF0dXM7CisK KwkJCQlzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisJCQkJcmVzdWx0ID0gdWNv bF9zdHJjb2xsVVRGOChzc3MtPmxvY2FsZS0+aW5mby5pY3UudWNvbCwKKwkJ CQkJCQkJCQkgIGExcCwgbGVuMSwKKwkJCQkJCQkJCQkgIGEycCwgbGVuMiwK KwkJCQkJCQkJCQkgICZzdGF0dXMpOworCQkJCWlmIChVX0ZBSUxVUkUoc3Rh dHVzKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJybXNnKCJj b2xsYXRpb24gZmFpbGVkOiAlcyIsIHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7 CisJCQl9CisJCQllbHNlCiAjZW5kaWYKKwkJCXsKKwkJCQlpbnQzMl90IHVs ZW4xLCB1bGVuMjsKKwkJCQlVQ2hhciAqdWNoYXIxLCAqdWNoYXIyOworCisJ CQkJdWxlbjEgPSBpY3VfdG9fdWNoYXIoJnVjaGFyMSwgYTFwLCBsZW4xKTsK KwkJCQl1bGVuMiA9IGljdV90b191Y2hhcigmdWNoYXIyLCBhMnAsIGxlbjIp OworCisJCQkJcmVzdWx0ID0gdWNvbF9zdHJjb2xsKHNzcy0+bG9jYWxlLT5p bmZvLmljdS51Y29sLAorCQkJCQkJCQkJICB1Y2hhcjEsIHVsZW4xLAorCQkJ CQkJCQkJICB1Y2hhcjIsIHVsZW4yKTsKKwkJCX0KKyNlbHNlCS8qIG5vdCBV U0VfSUNVICovCisJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCQllbG9n KEVSUk9SLCAidW5zdXBwb3J0ZWQgY29sbHByb3ZpZGVyOiAlYyIsIHNzcy0+ bG9jYWxlLT5wcm92aWRlcik7CisjZW5kaWYJLyogbm90IFVTRV9JQ1UgKi8K KwkJfQorCQllbHNlCisJCXsKKyNpZmRlZiBIQVZFX0xPQ0FMRV9UCisJCQly ZXN1bHQgPSBzdHJjb2xsX2woc3NzLT5idWYxLCBzc3MtPmJ1ZjIsIHNzcy0+ bG9jYWxlLT5pbmZvLmx0KTsKKyNlbHNlCisJCQkvKiBzaG91bGRuJ3QgaGFw cGVuICovCisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgY29sbHByb3Zp ZGVyOiAlYyIsIHNzcy0+bG9jYWxlLT5wcm92aWRlcik7CisjZW5kaWYKKwkJ fQorCX0KKwllbHNlCiAJCXJlc3VsdCA9IHN0cmNvbGwoc3NzLT5idWYxLCBz c3MtPmJ1ZjIpOwogCiAJLyoKQEAgLTIyMDAsOSArMjI3MiwxNCBAQCB2YXJz dHJfYWJicmV2X2NvbnZlcnQoRGF0dW0gb3JpZ2luYWwsIFNvcnRTdXBwb3J0 IHNzdXApCiAJZWxzZQogCXsKIAkJU2l6ZQkJYnNpemU7CisjaWZkZWYgVVNF X0lDVQorCQlpbnQzMl90CQl1bGVuID0gLTE7CisJCVVDaGFyCSAgICp1Y2hh cjsKKyNlbmRpZgogCiAJCS8qCi0JCSAqIFdlJ3JlIG5vdCB1c2luZyB0aGUg QyBjb2xsYXRpb24sIHNvIGZhbGwgYmFjayBvbiBzdHJ4ZnJtLgorCQkgKiBX ZSdyZSBub3QgdXNpbmcgdGhlIEMgY29sbGF0aW9uLCBzbyBmYWxsIGJhY2sg b24gc3RyeGZybSBvciBJQ1UKKwkJICogYW5hbG9ncy4KIAkJICovCiAKIAkJ LyogQnkgY29udmVudGlvbiwgd2UgdXNlIGJ1ZmZlciAxIHRvIHN0b3JlIGFu ZCBOVUwtdGVybWluYXRlICovCkBAIC0yMjIyLDE3ICsyMjk5LDY2IEBAIHZh cnN0cl9hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5hbCwgU29ydFN1cHBv cnQgc3N1cCkKIAkJCWdvdG8gZG9uZTsKIAkJfQogCi0JCS8qIEp1c3QgbGlr ZSBzdHJjb2xsKCksIHN0cnhmcm0oKSBleHBlY3RzIGEgTlVMLXRlcm1pbmF0 ZWQgc3RyaW5nICovCiAJCW1lbWNweShzc3MtPmJ1ZjEsIGF1dGhvcml0YXRp dmVfZGF0YSwgbGVuKTsKKwkJLyogSnVzdCBsaWtlIHN0cmNvbGwoKSwgc3Ry eGZybSgpIGV4cGVjdHMgYSBOVUwtdGVybWluYXRlZCBzdHJpbmcuCisJCSAq IE5vdCBuZWNlc3NhcnkgZm9yIElDVSwgYnV0IGRvZXNuJ3QgaHVydC4gKi8K IAkJc3NzLT5idWYxW2xlbl0gPSAnXDAnOwogCQlzc3MtPmxhc3RfbGVuMSA9 IGxlbjsKIAorI2lmZGVmIFVTRV9JQ1UKKwkJLyogV2hlbiB1c2luZyBJQ1Ug YW5kIG5vdCBVVEY4LCBjb252ZXJ0IHN0cmluZyB0byBVQ2hhci4gKi8KKwkJ aWYgKHNzcy0+bG9jYWxlICYmIHNzcy0+bG9jYWxlLT5wcm92aWRlciA9PSBD T0xMUFJPVklERVJfSUNVICYmCisJCQlHZXREYXRhYmFzZUVuY29kaW5nKCkg IT0gUEdfVVRGOCkKKwkJCXVsZW4gPSBpY3VfdG9fdWNoYXIoJnVjaGFyLCBz c3MtPmJ1ZjEsIGxlbik7CisjZW5kaWYKKworCQkvKgorCQkgKiBMb29wOiBD YWxsIHN0cnhmcm0oKSBvciB1Y29sX2dldFNvcnRLZXkoKSwgcG9zc2libHkg ZW5sYXJnZSBidWZmZXIsCisJCSAqIGFuZCB0cnkgYWdhaW4uICBCb3RoIG9m IHRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRoZSByZXN1bHQgYnVmZmVyCisJCSAq IGNvbnRlbnQgdW5kZWZpbmVkIGlmIHRoZSByZXN1bHQgZGlkIG5vdCBmaXQs IHNvIHdlIG5lZWQgdG8gcmV0cnkKKwkJICogdW50aWwgZXZlcnl0aGluZyBm aXRzLCBldmVuIHRob3VnaCB3ZSBvbmx5IG5lZWQgdGhlIGZpcnN0IGZldyBi eXRlcworCQkgKiBpbiB0aGUgZW5kLiAgV2hlbiB1c2luZyB1Y29sX25leHRT b3J0S2V5UGFydCgpLCBob3dldmVyLCB3ZSBvbmx5CisJCSAqIGFzayBmb3Ig YXMgbWFueSBieXRlcyBhcyB3ZSBhY3R1YWxseSBuZWVkLgorCQkgKi8KIAkJ Zm9yICg7OykKIAkJeworI2lmZGVmIFVTRV9JQ1UKKwkJCWlmIChzc3MtPmxv Y2FsZSAmJiBzc3MtPmxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVS X0lDVSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFdoZW4gdXNpbmcgVVRGOCwg dXNlIHRoZSBpdGVyYXRpb24gaW50ZXJmYWNlIHNvIHdlIG9ubHkKKwkJCQkg KiBuZWVkIHRvIHByb2R1Y2UgYXMgbWFueSBieXRlcyBhcyB3ZSBhY3R1YWxs eSBuZWVkLgorCQkJCSAqLworCQkJCWlmIChHZXREYXRhYmFzZUVuY29kaW5n KCkgPT0gUEdfVVRGOCkKKwkJCQl7CisJCQkJCVVDaGFySXRlcmF0b3IgaXRl cjsKKwkJCQkJdWludDMyX3QJc3RhdGVbMl07CisJCQkJCVVFcnJvckNvZGUJ c3RhdHVzOworCisJCQkJCXVpdGVyX3NldFVURjgoJml0ZXIsIHNzcy0+YnVm MSwgbGVuKTsKKwkJCQkJc3RhdGVbMF0gPSBzdGF0ZVsxXSA9IDA7ICAvKiB3 b24ndCBuZWVkIHRoYXQgYWdhaW4gKi8KKwkJCQkJc3RhdHVzID0gVV9aRVJP X0VSUk9SOworCQkJCQlic2l6ZSA9IHVjb2xfbmV4dFNvcnRLZXlQYXJ0KHNz cy0+bG9jYWxlLT5pbmZvLmljdS51Y29sLAorCQkJCQkJCQkJCQkJICZpdGVy LAorCQkJCQkJCQkJCQkJIHN0YXRlLAorCQkJCQkJCQkJCQkJICh1aW50OF90 ICopIHNzcy0+YnVmMiwKKwkJCQkJCQkJCQkJCSBNaW4oc2l6ZW9mKERhdHVt KSwgc3NzLT5idWZsZW4yKSwKKwkJCQkJCQkJCQkJCSAmc3RhdHVzKTsKKwkJ CQkJaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorCQkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQkJKGVycm1zZygic29ydCBrZXkgZ2VuZXJhdGlvbiBmYWls ZWQ6ICVzIiwgdV9lcnJvck5hbWUoc3RhdHVzKSkpKTsKKwkJCQl9CisJCQkJ ZWxzZQorCQkJCQlic2l6ZSA9IHVjb2xfZ2V0U29ydEtleShzc3MtPmxvY2Fs ZS0+aW5mby5pY3UudWNvbCwKKwkJCQkJCQkJCQkJdWNoYXIsIHVsZW4sCisJ CQkJCQkJCQkJCSh1aW50OF90ICopIHNzcy0+YnVmMiwgc3NzLT5idWZsZW4y KTsKKwkJCX0KKwkJCWVsc2UKKyNlbmRpZgogI2lmZGVmIEhBVkVfTE9DQUxF X1QKLQkJCWlmIChzc3MtPmxvY2FsZSkKKwkJCWlmIChzc3MtPmxvY2FsZSAm JiBzc3MtPmxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMp CiAJCQkJYnNpemUgPSBzdHJ4ZnJtX2woc3NzLT5idWYyLCBzc3MtPmJ1ZjEs Ci0JCQkJCQkJCSAgc3NzLT5idWZsZW4yLCBzc3MtPmxvY2FsZSk7CisJCQkJ CQkJCSAgc3NzLT5idWZsZW4yLCBzc3MtPmxvY2FsZS0+aW5mby5sdCk7CiAJ CQllbHNlCiAjZW5kaWYKIAkJCQlic2l6ZSA9IHN0cnhmcm0oc3NzLT5idWYy LCBzc3MtPmJ1ZjEsIHNzcy0+YnVmbGVuMik7CkBAIC0yMjQyLDggKzIzNjgs NyBAQCB2YXJzdHJfYWJicmV2X2NvbnZlcnQoRGF0dW0gb3JpZ2luYWwsIFNv cnRTdXBwb3J0IHNzdXApCiAJCQkJYnJlYWs7CiAKIAkJCS8qCi0JCQkgKiBU aGUgQyBzdGFuZGFyZCBzdGF0ZXMgdGhhdCB0aGUgY29udGVudHMgb2YgdGhl IGJ1ZmZlciBpcyBub3cKLQkJCSAqIHVuc3BlY2lmaWVkLiAgR3JvdyBidWZm ZXIsIGFuZCByZXRyeS4KKwkJCSAqIEdyb3cgYnVmZmVyIGFuZCByZXRyeS4K IAkJCSAqLwogCQkJcGZyZWUoc3NzLT5idWYyKTsKIAkJCXNzcy0+YnVmbGVu MiA9IE1heChic2l6ZSArIDEsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9tYi9lbmNuYW1lcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWIvZW5j bmFtZXMuYwppbmRleCAxMTA5OWI4NDRmLi40NDRlZWMyNWI1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9tYi9lbmNuYW1lcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21iL2VuY25hbWVzLmMKQEAgLTQwMyw2ICs0MDMs ODIgQEAgY29uc3QgcGdfZW5jMmdldHRleHQgcGdfZW5jMmdldHRleHRfdGJs W10gPQogfTsKIAogCisjaWZuZGVmIEZST05URU5ECisKKy8qCisgKiBUYWJs ZSBvZiBlbmNvZGluZyBuYW1lcyBmb3IgSUNVCisgKgorICogUmVmZXJlbmNl OiA8aHR0cHM6Ly9zc2wuaWN1LXByb2plY3Qub3JnL2ljdS1iaW4vY29udmV4 cD4KKyAqCisgKiBOVUxMIGVudHJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkg SUNVLCBvciB0aGVpciBtYXBwaW5nIGlzIHVuY2xlYXIuCisgKi8KK3N0YXRp YyBjb25zdCBjaGFyICogY29uc3QgcGdfZW5jMmljdV90YmxbXSA9Cit7CisJ TlVMTCwJCQkJCS8qIFBHX1NRTF9BU0NJSSAqLworCSJFVUMtSlAiLAkJCQkv KiBQR19FVUNfSlAgKi8KKwkiRVVDLUNOIiwJCQkJLyogUEdfRVVDX0NOICov CisJIkVVQy1LUiIsCQkJCS8qIFBHX0VVQ19LUiAqLworCSJFVUMtVFciLAkJ CQkvKiBQR19FVUNfVFcgKi8KKwlOVUxMLAkJCQkJLyogUEdfRVVDX0pJU18y MDA0ICovCisJIlVURi04IiwJCQkJLyogUEdfVVRGOCAqLworCU5VTEwsCQkJ CQkvKiBQR19NVUxFX0lOVEVSTkFMICovCisJIklTTy04ODU5LTEiLAkJCS8q IFBHX0xBVElOMSAqLworCSJJU08tODg1OS0yIiwJCQkvKiBQR19MQVRJTjIg Ki8KKwkiSVNPLTg4NTktMyIsCQkJLyogUEdfTEFUSU4zICovCisJIklTTy04 ODU5LTQiLAkJCS8qIFBHX0xBVElONCAqLworCSJJU08tODg1OS05IiwJCQkv KiBQR19MQVRJTjUgKi8KKwkiSVNPLTg4NTktMTAiLAkJCS8qIFBHX0xBVElO NiAqLworCSJJU08tODg1OS0xMyIsCQkJLyogUEdfTEFUSU43ICovCisJIklT Ty04ODU5LTE0IiwJCQkvKiBQR19MQVRJTjggKi8KKwkiSVNPLTg4NTktMTUi LAkJCS8qIFBHX0xBVElOOSAqLworCU5VTEwsCQkJCQkvKiBQR19MQVRJTjEw ICovCisJIkNQMTI1NiIsCQkJCS8qIFBHX1dJTjEyNTYgKi8KKwkiQ1AxMjU4 IiwJCQkJLyogUEdfV0lOMTI1OCAqLworCSJDUDg2NiIsCQkJCS8qIFBHX1dJ Tjg2NiAqLworCU5VTEwsCQkJCQkvKiBQR19XSU44NzQgKi8KKwkiS09JOC1S IiwJCQkJLyogUEdfS09JOFIgKi8KKwkiQ1AxMjUxIiwJCQkJLyogUEdfV0lO MTI1MSAqLworCSJDUDEyNTIiLAkJCQkvKiBQR19XSU4xMjUyICovCisJIklT Ty04ODU5LTUiLAkJCS8qIFBHX0lTT184ODU5XzUgKi8KKwkiSVNPLTg4NTkt NiIsCQkJLyogUEdfSVNPXzg4NTlfNiAqLworCSJJU08tODg1OS03IiwJCQkv KiBQR19JU09fODg1OV83ICovCisJIklTTy04ODU5LTgiLAkJCS8qIFBHX0lT T184ODU5XzggKi8KKwkiQ1AxMjUwIiwJCQkJLyogUEdfV0lOMTI1MCAqLwor CSJDUDEyNTMiLAkJCQkvKiBQR19XSU4xMjUzICovCisJIkNQMTI1NCIsCQkJ CS8qIFBHX1dJTjEyNTQgKi8KKwkiQ1AxMjU1IiwJCQkJLyogUEdfV0lOMTI1 NSAqLworCSJDUDEyNTciLAkJCQkvKiBQR19XSU4xMjU3ICovCisJIktPSTgt VSIsCQkJCS8qIFBHX0tPSThVICovCit9OworCitib29sCitpc19lbmNvZGlu Z19zdXBwb3J0ZWRfYnlfaWN1KGludCBlbmNvZGluZykKK3sKKwlyZXR1cm4g KHBnX2VuYzJpY3VfdGJsW2VuY29kaW5nXSAhPSBOVUxMKTsKK30KKworY29u c3QgY2hhciAqCitnZXRfZW5jb2RpbmdfbmFtZV9mb3JfaWN1KGludCBlbmNv ZGluZykKK3sKKwljb25zdCBjaGFyICppY3VfZW5jb2RpbmdfbmFtZTsKKwor CVN0YXRpY0Fzc2VydFN0bXQobGVuZ3Rob2YocGdfZW5jMmljdV90YmwpID09 IFBHX0VOQ09ESU5HX0JFX0xBU1QgKyAxLAorCQkJCQkgInBnX2VuYzJpY3Vf dGJsIGluY29tcGxldGUiKTsKKworCWljdV9lbmNvZGluZ19uYW1lID0gcGdf ZW5jMmljdV90YmxbZW5jb2RpbmddOworCisJaWYgKCFpY3VfZW5jb2Rpbmdf bmFtZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiZW5jb2Rp bmcgXCIlc1wiIG5vdCBzdXBwb3J0ZWQgYnkgSUNVIiwKKwkJCQkJCXBnX2Vu Y29kaW5nX3RvX2NoYXIoZW5jb2RpbmcpKSkpOworCisJcmV0dXJuIGljdV9l bmNvZGluZ19uYW1lOworfQorCisjZW5kaWYgLyogbm90IEZST05URU5EICov CisKKwogLyogLS0tLS0tLS0tLQogICogRW5jb2RpbmcgY2hlY2tzLCBmb3Ig ZXJyb3IgcmV0dXJucyAtMSBlbHNlIGVuY29kaW5nIGlkCiAgKiAtLS0tLS0t LS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYyBiL3Ny Yy9iaW4vaW5pdGRiL2luaXRkYi5jCmluZGV4IGUwYzcyZmJiODAuLjhkZGUx ZThmOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCisr KyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC02Miw2ICs2Miw3IEBA CiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19hdXRoaWQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNz LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNs dWRlICJjb21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9y ZXN0cmljdGVkX3Rva2VuLmgiCiAjaW5jbHVkZSAiY29tbW9uL3VzZXJuYW1l LmgiCkBAIC0xNjI5LDcgKzE2MzAsNyBAQCBzZXR1cF9jb2xsYXRpb24oRklM RSAqY21kZmQpCiAJUEdfQ01EX1BVVFMoIlNFTEVDVCBwZ19pbXBvcnRfc3lz dGVtX2NvbGxhdGlvbnMoaWZfbm90X2V4aXN0cyA9PiBmYWxzZSwgc2NoZW1h ID0+ICdwZ19jYXRhbG9nJyk7XG5cbiIpOwogCiAJLyogQWRkIGFuIFNRTC1z dGFuZGFyZCBuYW1lICovCi0JUEdfQ01EX1BSSU5URjIoIklOU0VSVCBJTlRP IHBnX2NvbGxhdGlvbiAoY29sbG5hbWUsIGNvbGxuYW1lc3BhY2UsIGNvbGxv d25lciwgY29sbGVuY29kaW5nLCBjb2xsY29sbGF0ZSwgY29sbGN0eXBlKSBW QUxVRVMgKCd1Y3NfYmFzaWMnLCAncGdfY2F0YWxvZyc6OnJlZ25hbWVzcGFj ZSwgJXUsICVkLCAnQycsICdDJyk7XG5cbiIsIEJPT1RTVFJBUF9TVVBFUlVT RVJJRCwgUEdfVVRGOCk7CisJUEdfQ01EX1BSSU5URjMoIklOU0VSVCBJTlRP IHBnX2NvbGxhdGlvbiAoY29sbG5hbWUsIGNvbGxuYW1lc3BhY2UsIGNvbGxv d25lciwgY29sbHByb3ZpZGVyLCBjb2xsZW5jb2RpbmcsIGNvbGxjb2xsYXRl LCBjb2xsY3R5cGUpIFZBTFVFUyAoJ3Vjc19iYXNpYycsICdwZ19jYXRhbG9n Jzo6cmVnbmFtZXNwYWNlLCAldSwgJyVjJywgJWQsICdDJywgJ0MnKTtcblxu IiwgQk9PVFNUUkFQX1NVUEVSVVNFUklELCBDT0xMUFJPVklERVJfTElCQywg UEdfVVRGOCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRl eCBlNjcxNzFkY2NiLi41NGI0YTFmZDE2IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKQEAgLTEyODA2LDggKzEyODA2LDEwIEBAIGR1bXBDb2xsYXRpb24o QXJjaGl2ZSAqZm91dCwgQ29sbEluZm8gKmNvbGxpbmZvKQogCVBRRXhwQnVm ZmVyIGRlbHE7CiAJUFFFeHBCdWZmZXIgbGFiZWxxOwogCVBHcmVzdWx0ICAg KnJlczsKKwlpbnQJCQlpX2NvbGxwcm92aWRlcjsKIAlpbnQJCQlpX2NvbGxj b2xsYXRlOwogCWludAkJCWlfY29sbGN0eXBlOworCWNvbnN0IGNoYXIgKmNv bGxwcm92aWRlcjsKIAljb25zdCBjaGFyICpjb2xsY29sbGF0ZTsKIAljb25z dCBjaGFyICpjb2xsY3R5cGU7CiAKQEAgLTEyODI0LDE4ICsxMjgyNiwzMiBA QCBkdW1wQ29sbGF0aW9uKEFyY2hpdmUgKmZvdXQsIENvbGxJbmZvICpjb2xs aW5mbykKIAlzZWxlY3RTb3VyY2VTY2hlbWEoZm91dCwgY29sbGluZm8tPmRv YmoubmFtZXNwYWNlLT5kb2JqLm5hbWUpOwogCiAJLyogR2V0IGNvbGxhdGlv bi1zcGVjaWZpYyBkZXRhaWxzICovCi0JYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksICJTRUxFQ1QgIgotCQkJCQkgICJjb2xsY29sbGF0ZSwgIgotCQkJCQkg ICJjb2xsY3R5cGUgIgotCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY29s bGF0aW9uIGMgIgotCQkJCQkgICJXSEVSRSBjLm9pZCA9ICcldSc6OnBnX2Nh dGFsb2cub2lkIiwKLQkJCQkJICBjb2xsaW5mby0+ZG9iai5jYXRJZC5vaWQp OworCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEwMDAwMCkKKwkJYXBw ZW5kUFFFeHBCdWZmZXIocXVlcnksICJTRUxFQ1QgIgorCQkJCQkJICAiY29s bHByb3ZpZGVyLCAiCisJCQkJCQkgICJjb2xsY29sbGF0ZSwgIgorCQkJCQkJ ICAiY29sbGN0eXBlLCAiCisJCQkJCQkgICJjb2xsdmVyc2lvbiAiCisJCQkJ CQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY29sbGF0aW9uIGMgIgorCQkJCQkJ ICAiV0hFUkUgYy5vaWQgPSAnJXUnOjpwZ19jYXRhbG9nLm9pZCIsCisJCQkJ CQkgIGNvbGxpbmZvLT5kb2JqLmNhdElkLm9pZCk7CisJZWxzZQorCQlhcHBl bmRQUUV4cEJ1ZmZlcihxdWVyeSwgIlNFTEVDVCAiCisJCQkJCQkgICIncCc6 OmNoYXIgQVMgY29sbHByb3ZpZGVyLCAiCisJCQkJCQkgICJjb2xsY29sbGF0 ZSwgIgorCQkJCQkJICAiY29sbGN0eXBlLCAiCisJCQkJCQkgICJOVUxMIEFT IGNvbGx2ZXJzaW9uICIKKwkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19j b2xsYXRpb24gYyAiCisJCQkJCQkgICJXSEVSRSBjLm9pZCA9ICcldSc6OnBn X2NhdGFsb2cub2lkIiwKKwkJCQkJCSAgY29sbGluZm8tPmRvYmouY2F0SWQu b2lkKTsKIAogCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeUZvclNpbmdsZVJvdyhm b3V0LCBxdWVyeS0+ZGF0YSk7CiAKKwlpX2NvbGxwcm92aWRlciA9IFBRZm51 bWJlcihyZXMsICJjb2xscHJvdmlkZXIiKTsKIAlpX2NvbGxjb2xsYXRlID0g UFFmbnVtYmVyKHJlcywgImNvbGxjb2xsYXRlIik7CiAJaV9jb2xsY3R5cGUg PSBQUWZudW1iZXIocmVzLCAiY29sbGN0eXBlIik7CiAKKwljb2xscHJvdmlk ZXIgPSBQUWdldHZhbHVlKHJlcywgMCwgaV9jb2xscHJvdmlkZXIpOwogCWNv bGxjb2xsYXRlID0gUFFnZXR2YWx1ZShyZXMsIDAsIGlfY29sbGNvbGxhdGUp OwogCWNvbGxjdHlwZSA9IFBRZ2V0dmFsdWUocmVzLCAwLCBpX2NvbGxjdHlw ZSk7CiAKQEAgLTEyODQ3LDExICsxMjg2Myw1MCBAQCBkdW1wQ29sbGF0aW9u KEFyY2hpdmUgKmZvdXQsIENvbGxJbmZvICpjb2xsaW5mbykKIAlhcHBlbmRQ UUV4cEJ1ZmZlcihkZWxxLCAiLiVzO1xuIiwKIAkJCQkJICBmbXRJZChjb2xs aW5mby0+ZG9iai5uYW1lKSk7CiAKLQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAi Q1JFQVRFIENPTExBVElPTiAlcyAobGNfY29sbGF0ZSA9ICIsCisJYXBwZW5k UFFFeHBCdWZmZXIocSwgIkNSRUFURSBDT0xMQVRJT04gJXMgKCIsCiAJCQkJ CSAgZm10SWQoY29sbGluZm8tPmRvYmoubmFtZSkpOwotCWFwcGVuZFN0cmlu Z0xpdGVyYWxBSChxLCBjb2xsY29sbGF0ZSwgZm91dCk7Ci0JYXBwZW5kUFFF eHBCdWZmZXJTdHIocSwgIiwgbGNfY3R5cGUgPSAiKTsKLQlhcHBlbmRTdHJp bmdMaXRlcmFsQUgocSwgY29sbGN0eXBlLCBmb3V0KTsKKworCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHEsICJwcm92aWRlciA9ICIpOworCWlmIChjb2xscHJv dmlkZXJbMF0gPT0gJ2MnKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAi bGliYyIpOworCWVsc2UgaWYgKGNvbGxwcm92aWRlclswXSA9PSAnaScpCisJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICJpY3UiKTsKKwllbHNlCisJCWV4 aXRfaG9ycmlibHkoTlVMTCwKKwkJCQkJICAidW5yZWNvZ25pemVkIGNvbGxh dGlvbiBwcm92aWRlcjogJXNcbiIsCisJCQkJCSAgY29sbHByb3ZpZGVyKTsK KworCWlmIChzdHJjbXAoY29sbGNvbGxhdGUsIGNvbGxjdHlwZSkgPT0gMCkK Kwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIsIGxvY2FsZSA9ICIp OworCQlhcHBlbmRTdHJpbmdMaXRlcmFsQUgocSwgY29sbGNvbGxhdGUsIGZv dXQpOworCX0KKwllbHNlCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx LCAiLCBsY19jb2xsYXRlID0gIik7CisJCWFwcGVuZFN0cmluZ0xpdGVyYWxB SChxLCBjb2xsY29sbGF0ZSwgZm91dCk7CisJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHEsICIsIGxjX2N0eXBlID0gIik7CisJCWFwcGVuZFN0cmluZ0xpdGVy YWxBSChxLCBjb2xsY3R5cGUsIGZvdXQpOworCX0KKworCS8qCisJICogRm9y IGJpbmFyeSB1cGdyYWRlLCBjYXJyeSBvdmVyIHRoZSBjb2xsYXRpb24gdmVy c2lvbi4gIEZvciBub3JtYWwKKwkgKiBkdW1wL3Jlc3RvcmUsIG9taXQgdGhl IHZlcnNpb24sIHNvIHRoYXQgaXQgaXMgY29tcHV0ZWQgdXBvbiByZXN0b3Jl LgorCSAqLworCWlmIChkb3B0LT5iaW5hcnlfdXBncmFkZSkKKwl7CisJCWlu dAkJCWlfY29sbHZlcnNpb247CisKKwkJaV9jb2xsdmVyc2lvbiA9IFBRZm51 bWJlcihyZXMsICJjb2xsdmVyc2lvbiIpOworCQlpZiAoIVBRZ2V0aXNudWxs KHJlcywgMCwgaV9jb2xsdmVyc2lvbikpCisJCXsKKwkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHEsICIsIHZlcnNpb24gPSAiKTsKKwkJCWFwcGVuZFN0cmlu Z0xpdGVyYWxBSChxLAorCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzLCAwLCBp X2NvbGx2ZXJzaW9uKSwKKwkJCQkJCQkJICBmb3V0KTsKKwkJfQorCX0KKwog CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIpO1xuIik7CiAKIAlhcHBlbmRQ UUV4cEJ1ZmZlcihsYWJlbHEsICJDT0xMQVRJT04gJXMiLCBmbXRJZChjb2xs aW5mby0+ZG9iai5uYW1lKSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9w Z19kdW1wLnBsCmluZGV4IGE0ZTI2MGE0ZTQuLjA1YzY4MWFkN2EgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBi L3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0yNDI0LDcg KzI0MjQsNyBAQAogCQkgICdDUkVBVEUgQ09MTEFUSU9OIHRlc3QwIEZST00g IkMiOycsCiAJCXJlZ2V4cCA9PgogCQkgIHFyL14KLQkJICBcUUNSRUFURSBD T0xMQVRJT04gdGVzdDAgKGxjX2NvbGxhdGUgPSAnQycsIGxjX2N0eXBlID0g J0MnKTtcRS94bSwKKwkJICBcUUNSRUFURSBDT0xMQVRJT04gdGVzdDAgKHBy b3ZpZGVyID0gbGliYywgbG9jYWxlID0gJ0MnKTtcRS94bSwKIAkgICAgY29s bGF0aW9uID0+IDEsCiAJCWxpa2UgPT4gewogCQkJYmluYXJ5X3VwZ3JhZGUg ICAgICAgICAgID0+IDEsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVz Y3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDYxYTNl MmE4NDguLjhjNTgzMTI3ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9k ZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0z NzM4LDcgKzM3MzgsNyBAQCBsaXN0Q29sbGF0aW9ucyhjb25zdCBjaGFyICpw YXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIAlQUUV4 cEJ1ZmZlckRhdGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKIAlwcmludFF1 ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OwotCXN0YXRpYyBjb25zdCBib29s IHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlfTsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVf Y29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2V9OwogCiAJaWYgKHBzZXQuc3ZlcnNpb24gPCA5MDEwMCkKIAl7 CkBAIC0zNzYyLDYgKzM3NjIsMTEgQEAgbGlzdENvbGxhdGlvbnMoY29uc3Qg Y2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXN0ZW0p CiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJDb2xsYXRlIiksCiAJCQkJCSAgZ2V0 dGV4dF9ub29wKCJDdHlwZSIpKTsKIAorCWlmIChwc2V0LnN2ZXJzaW9uID49 IDEwMDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAg IixcbiAgICAgICBDQVNFIGMuY29sbHByb3ZpZGVyIFdIRU4gJ2QnIFRIRU4g J2RlZmF1bHQnIFdIRU4gJ2MnIFRIRU4gJ2xpYmMnIFdIRU4gJ2knIFRIRU4g J2ljdScgRU5EIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgi UHJvdmlkZXIiKSk7CisKIAlpZiAodmVyYm9zZSkKIAkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIixcbiAgICAgICBwZ19jYXRhbG9nLm9i al9kZXNjcmlwdGlvbihjLm9pZCwgJ3BnX2NvbGxhdGlvbicpIEFTIFwiJXNc IiIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxh dGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb2xsYXRpb24uaApp bmRleCAzMGM4N2UwMDRlLi44ZWRkOGFhMDY2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbi5oCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfY29sbGF0aW9uLmgKQEAgLTM0LDkgKzM0LDEzIEBA IENBVEFMT0cocGdfY29sbGF0aW9uLDM0NTYpCiAJTmFtZURhdGEJY29sbG5h bWU7CQkvKiBjb2xsYXRpb24gbmFtZSAqLwogCU9pZAkJCWNvbGxuYW1lc3Bh Y2U7CS8qIE9JRCBvZiBuYW1lc3BhY2UgY29udGFpbmluZyBjb2xsYXRpb24g Ki8KIAlPaWQJCQljb2xsb3duZXI7CQkvKiBvd25lciBvZiBjb2xsYXRpb24g Ki8KKwljaGFyCQljb2xscHJvdmlkZXI7CS8qIHNlZSBjb25zdGFudHMgYmVs b3cgKi8KIAlpbnQzMgkJY29sbGVuY29kaW5nOwkvKiBlbmNvZGluZyBmb3Ig dGhpcyBjb2xsYXRpb247IC0xID0gImFsbCIgKi8KIAlOYW1lRGF0YQljb2xs Y29sbGF0ZTsJLyogTENfQ09MTEFURSBzZXR0aW5nICovCiAJTmFtZURhdGEJ Y29sbGN0eXBlOwkJLyogTENfQ1RZUEUgc2V0dGluZyAqLworI2lmZGVmIENB VEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFy dCBoZXJlICovCisJdGV4dAkJY29sbHZlcnNpb247CS8qIHByb3ZpZGVyLWRl cGVuZGVudCB2ZXJzaW9uIG9mIGNvbGxhdGlvbiBkYXRhICovCisjZW5kaWYK IH0gRm9ybURhdGFfcGdfY29sbGF0aW9uOwogCiAvKiAtLS0tLS0tLS0tLS0t LS0tCkBAIC01MCwyNyArNTQsMzQgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19j b2xsYXRpb24gKkZvcm1fcGdfY29sbGF0aW9uOwogICoJCWNvbXBpbGVyIGNv bnN0YW50cyBmb3IgcGdfY29sbGF0aW9uCiAgKiAtLS0tLS0tLS0tLS0tLS0t CiAgKi8KLSNkZWZpbmUgTmF0dHNfcGdfY29sbGF0aW9uCQkJCTYKKyNkZWZp bmUgTmF0dHNfcGdfY29sbGF0aW9uCQkJCTgKICNkZWZpbmUgQW51bV9wZ19j b2xsYXRpb25fY29sbG5hbWUJCTEKICNkZWZpbmUgQW51bV9wZ19jb2xsYXRp b25fY29sbG5hbWVzcGFjZSAyCiAjZGVmaW5lIEFudW1fcGdfY29sbGF0aW9u X2NvbGxvd25lcgkJMwotI2RlZmluZSBBbnVtX3BnX2NvbGxhdGlvbl9jb2xs ZW5jb2RpbmcJNAotI2RlZmluZSBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsY29s bGF0ZQk1Ci0jZGVmaW5lIEFudW1fcGdfY29sbGF0aW9uX2NvbGxjdHlwZQkJ NgorI2RlZmluZSBBbnVtX3BnX2NvbGxhdGlvbl9jb2xscHJvdmlkZXIJNAor I2RlZmluZSBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsZW5jb2RpbmcJNQorI2Rl ZmluZSBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsY29sbGF0ZQk2CisjZGVmaW5l IEFudW1fcGdfY29sbGF0aW9uX2NvbGxjdHlwZQkJNworI2RlZmluZSBBbnVt X3BnX2NvbGxhdGlvbl9jb2xsdmVyc2lvbgk4CiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0KICAqCQlpbml0aWFsIGNvbnRlbnRzIG9mIHBnX2NvbGxhdGlvbgog ICogLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLURBVEEoaW5zZXJ0IE9JRCA9 IDEwMCAoIGRlZmF1bHQJCVBHTlNQIFBHVUlEIC0xICIiICIiICkpOworREFU QShpbnNlcnQgT0lEID0gMTAwICggZGVmYXVsdAkJUEdOU1AgUEdVSUQgZCAt MSAiIiAiIiAwICkpOwogREVTQ1IoImRhdGFiYXNlJ3MgZGVmYXVsdCBjb2xs YXRpb24iKTsKICNkZWZpbmUgREVGQVVMVF9DT0xMQVRJT05fT0lECTEwMAot REFUQShpbnNlcnQgT0lEID0gOTUwICggQwkJCVBHTlNQIFBHVUlEIC0xICJD IiAiQyIgKSk7CitEQVRBKGluc2VydCBPSUQgPSA5NTAgKCBDCQkJUEdOU1Ag UEdVSUQgYyAtMSAiQyIgIkMiIDAgKSk7CiBERVNDUigic3RhbmRhcmQgQyBj b2xsYXRpb24iKTsKICNkZWZpbmUgQ19DT0xMQVRJT05fT0lECQkJOTUwCi1E QVRBKGluc2VydCBPSUQgPSA5NTEgKCBQT1NJWAkJUEdOU1AgUEdVSUQgLTEg IlBPU0lYIiAiUE9TSVgiICkpOworREFUQShpbnNlcnQgT0lEID0gOTUxICgg UE9TSVgJCVBHTlNQIFBHVUlEIGMgLTEgIlBPU0lYIiAiUE9TSVgiIDAgKSk7 CiBERVNDUigic3RhbmRhcmQgUE9TSVggY29sbGF0aW9uIik7CiAjZGVmaW5l IFBPU0lYX0NPTExBVElPTl9PSUQJCTk1MQogCisKKyNkZWZpbmUgQ09MTFBS T1ZJREVSX0RFRkFVTFQJJ2QnCisjZGVmaW5lIENPTExQUk9WSURFUl9JQ1UJ CSdpJworI2RlZmluZSBDT0xMUFJPVklERVJfTElCQwkJJ2MnCisKICNlbmRp ZiAgIC8qIFBHX0NPTExBVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2NvbGxhdGlvbl9mbi5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19jb2xsYXRpb25fZm4uaAppbmRleCA0ODJiYTc5MjBlLi5k ZmViZGJhYTBiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2NvbGxhdGlvbl9mbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y29sbGF0aW9uX2ZuLmgKQEAgLTE2LDggKzE2LDEwIEBACiAKIGV4dGVybiBP aWQgQ29sbGF0aW9uQ3JlYXRlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQg Y29sbG5hbWVzcGFjZSwKIAkJCQlPaWQgY29sbG93bmVyLAorCQkJCWNoYXIg Y29sbHByb3ZpZGVyLAogCQkJCWludDMyIGNvbGxlbmNvZGluZywKIAkJCQlj b25zdCBjaGFyICpjb2xsY29sbGF0ZSwgY29uc3QgY2hhciAqY29sbGN0eXBl LAorCQkJCWNvbnN0IGNoYXIgKmNvbGx2ZXJzaW9uLAogCQkJCWJvb2wgaWZf bm90X2V4aXN0cyk7CiBleHRlcm4gdm9pZCBSZW1vdmVDb2xsYXRpb25CeUlk KE9pZCBjb2xsYXRpb25PaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5oCmluZGV4IDgzNmQ2ZmYwYjIuLmI5MmJmYjk2NTUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCkBAIC01Mzk4LDYgKzUzOTgsOSBA QCBERVNDUigicGdfY29udHJvbGRhdGEgaW5pdCBzdGF0ZSBpbmZvcm1hdGlv biBhcyBhIGZ1bmN0aW9uIik7CiBEQVRBKGluc2VydCBPSUQgPSAzNDQ1ICgg cGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zIFBHTlNQIFBHVUlEIDEyIDEw MCAwIDAgMCBmIGYgZiBmIHQgZiB2IHIgMiAwIDIyNzggIjE2IDQwODkiIF9u dWxsXyBfbnVsbF8gIntpZl9ub3RfZXhpc3RzLHNjaGVtYX0iIF9udWxsXyBf bnVsbF8gcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zIF9udWxsXyBfbnVs bF8gX251bGxfICkpOwogREVTQ1IoImltcG9ydCBjb2xsYXRpb25zIGZyb20g b3BlcmF0aW5nIHN5c3RlbSIpOwogCitEQVRBKGluc2VydCBPSUQgPSAzNDQ4 ICggcGdfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uIFBHTlNQIFBHVUlEIDEy IDEwMCAwIDAgMCBmIGYgZiBmIHQgZiB2IHMgMSAwIDI1ICIyNiIgX251bGxf IF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBwZ19jb2xsYXRpb25fYWN0 dWFsX3ZlcnNpb24gX251bGxfIF9udWxsXyBfbnVsbF8gKSk7CitERVNDUigi aW1wb3J0IGNvbGxhdGlvbnMgZnJvbSBvcGVyYXRpbmcgc3lzdGVtIik7CisK IC8qIHN5c3RlbSBtYW5hZ2VtZW50L21vbml0b3JpbmcgcmVsYXRlZCBmdW5j dGlvbnMgKi8KIERBVEEoaW5zZXJ0IE9JRCA9IDMzNTMgKCAgcGdfbHNfbG9n ZGlyICAgICAgICAgICAgICAgUEdOU1AgUEdVSUQgMTIgMTAgMjAgMCAwIGYg ZiBmIGYgdCB0IHYgcyAwIDAgMjI0OSAiIiAiezI1LDIwLDExODR9IiAie28s byxvfSIgIntuYW1lLHNpemUsbW9kaWZpY2F0aW9ufSIgX251bGxfIF9udWxs XyBwZ19sc19sb2dkaXIgX251bGxfIF9udWxsXyBfbnVsbF8gKSk7CiBERVND UigibGlzdCBmaWxlcyBpbiB0aGUgbG9nIGRpcmVjdG9yeSIpOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29sbGF0aW9uY21kcy5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvY29sbGF0aW9uY21kcy5oCmluZGV4IDNi MmZjYjgyNzEuLmRmNTYyM2NjYjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9jb2xsYXRpb25jbWRzLmgKQEAgLTIwLDUgKzIwLDYgQEAKIAog ZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqbmFtZXMsIExpc3QgKnBhcmFtZXRlcnMsIGJv b2wgaWZfbm90X2V4aXN0cyk7CiBleHRlcm4gdm9pZCBJc1RoZXJlQ29sbGF0 aW9uSW5OYW1lc3BhY2UoY29uc3QgY2hhciAqY29sbG5hbWUsIE9pZCBuc3BP aWQpOworZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJDb2xsYXRpb24oQWx0 ZXJDb2xsYXRpb25TdG10ICpzdG10KTsKIAogI2VuZGlmICAgLyogQ09MTEFU SU9OQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9tYi9wZ193 Y2hhci5oIGIvc3JjL2luY2x1ZGUvbWIvcGdfd2NoYXIuaAppbmRleCA1ZjU0 Njk3MzAyLi45YzVlNzQ5YzllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9t Yi9wZ193Y2hhci5oCisrKyBiL3NyYy9pbmNsdWRlL21iL3BnX3djaGFyLmgK QEAgLTMzMyw2ICszMzMsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgcGdfZW5jMmdl dHRleHQKIGV4dGVybiBjb25zdCBwZ19lbmMyZ2V0dGV4dCBwZ19lbmMyZ2V0 dGV4dF90YmxbXTsKIAogLyoKKyAqIEVuY29kaW5nIG5hbWVzIGZvciBJQ1UK KyAqLworZXh0ZXJuIGJvb2wgaXNfZW5jb2Rpbmdfc3VwcG9ydGVkX2J5X2lj dShpbnQgZW5jb2RpbmcpOworZXh0ZXJuIGNvbnN0IGNoYXIgKmdldF9lbmNv ZGluZ19uYW1lX2Zvcl9pY3UoaW50IGVuY29kaW5nKTsKKworLyoKICAqIHBn X3djaGFyIHN0dWZmCiAgKi8KIHR5cGVkZWYgaW50ICgqbWIyd2NoYXJfd2l0 aF9sZW5fY29udmVydGVyKSAoY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4IDJiYzdhNWRmMTEuLjVkNmQw NTM4NWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtNDIzLDYgKzQy Myw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVTdWJzY3Jp cHRpb25TdG10LAogCVRfQWx0ZXJTdWJzY3JpcHRpb25TdG10LAogCVRfRHJv cFN1YnNjcmlwdGlvblN0bXQsCisJVF9BbHRlckNvbGxhdGlvblN0bXQsCiAK IAkvKgogCSAqIFRBR1MgRk9SIFBBUlNFIFRSRUUgTk9ERVMgKHBhcnNlbm9k ZXMuaCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBk NTc2NTIzZjZhLi5hYmM0YWU1NDg3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC0xNzMzLDYgKzE3MzMsMTcgQEAgdHlwZWRlZiBz dHJ1Y3QgQWx0ZXJUYWJsZUNtZAkvKiBvbmUgc3ViY29tbWFuZCBvZiBhbiBB TFRFUiBUQUJMRSAqLwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqIEFsdGVyIENvbGxhdGlvbgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCit0eXBlZGVmIHN0cnVjdCBBbHRlckNvbGxhdGlvblN0bXQKK3sK KwlOb2RlVGFnCQl0eXBlOworCUxpc3QJICAgKmNvbGxuYW1lOworfSBBbHRl ckNvbGxhdGlvblN0bXQ7CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICoJQWx0ZXIgRG9tYWluCiAgKgogICogVGhlIGZpZWxkcyBhcmUgdXNl ZCBpbiBkaWZmZXJlbnQgd2F5cyBieSB0aGUgZGlmZmVyZW50IHZhcmlhbnRz IG9mCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiBi L3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCmluZGV4IDViY2Q4YTExNjAu LjBjYTcwOGJiZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZp Zy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCkBAIC02 MDMsNiArNjAzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo ZSBleHRlcm5hbCBhcnJheSBgdHpuYW1lJy4gKi8KICN1bmRlZiBIQVZFX1Ra TkFNRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVjb2xf c3RyY29sbFVURjgnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVUNPTF9T VFJDT0xMVVRGOAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg PHVjcmVkLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVUNSRURf SAogCkBAIC04MTYsNiArODE5LDkgQEAKICAgICgtLWVuYWJsZS1mbG9hdDgt Ynl2YWwpICovCiAjdW5kZWYgVVNFX0ZMT0FUOF9CWVZBTAogCisvKiBEZWZp bmUgdG8gYnVpbGQgd2l0aCBJQ1Ugc3VwcG9ydC4gKC0td2l0aC1pY3UpICov CisjdW5kZWYgVVNFX0lDVQorCiAvKiBEZWZpbmUgdG8gMSB0byBidWlsZCB3 aXRoIExEQVAgc3VwcG9ydC4gKC0td2l0aC1sZGFwKSAqLwogI3VuZGVmIFVT RV9MREFQCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BnX2xv Y2FsZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKaW5kZXgg Y2I1MDllMmI2Yi4uMTJkNzU0NzQxMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvcGdfbG9jYWxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv cGdfbG9jYWxlLmgKQEAgLTE1LDYgKzE1LDkgQEAKICNpZiBkZWZpbmVkKExP Q0FMRV9UX0lOX1hMT0NBTEUpIHx8IGRlZmluZWQoV0NTVE9NQlNfTF9JTl9Y TE9DQUxFKQogI2luY2x1ZGUgPHhsb2NhbGUuaD4KICNlbmRpZgorI2lmZGVm IFVTRV9JQ1UKKyNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KKyNlbmRpZgog CiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAKQEAgLTYxLDE3ICs2NCwzNiBA QCBleHRlcm4gdm9pZCBjYWNoZV9sb2NhbGVfdGltZSh2b2lkKTsKICAqIFdl IGRlZmluZSBvdXIgb3duIHdyYXBwZXIgYXJvdW5kIGxvY2FsZV90IHNvIHdl IGNhbiBrZWVwIHRoZSBzYW1lCiAgKiBmdW5jdGlvbiBzaWduYXR1cmVzIGZv ciBhbGwgYnVpbGRzLCB3aGlsZSBub3QgaGF2aW5nIHRvIGNyZWF0ZSBhCiAg KiBmYWtlIHZlcnNpb24gb2YgdGhlIHN0YW5kYXJkIHR5cGUgbG9jYWxlX3Qg aW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCi0gKiBUaGUgZmFrZSB2ZXJzaW9u IG9mIHBnX2xvY2FsZV90IGNhbiBiZSBjaGVja2VkIGZvciB0cnV0aDsgdGhh dCdzCi0gKiBhYm91dCBhbGwgaXQgd2lsbCBiZSBuZWVkZWQgZm9yLgorICog cGdfbG9jYWxlX3QgaXMgb2NjYXNpb25hbGx5IGNoZWNrZWQgZm9yIHRydXRo LCBzbyBtYWtlIGl0IGEgcG9pbnRlci4KICAqLworc3RydWN0IHBnX2xvY2Fs ZV90Cit7CisJY2hhcglwcm92aWRlcjsKKwl1bmlvbgorCXsKICNpZmRlZiBI QVZFX0xPQ0FMRV9UCi10eXBlZGVmIGxvY2FsZV90IHBnX2xvY2FsZV90Owot I2Vsc2UKLXR5cGVkZWYgaW50IHBnX2xvY2FsZV90OworCQlsb2NhbGVfdCBs dDsKKyNlbmRpZgorI2lmZGVmIFVTRV9JQ1UKKwkJc3RydWN0IHsKKwkJCWNv bnN0IGNoYXIgKmxvY2FsZTsKKwkJCVVDb2xsYXRvciAqdWNvbDsKKwkJfSBp Y3U7CiAjZW5kaWYKKwl9IGluZm87Cit9OworCit0eXBlZGVmIHN0cnVjdCBw Z19sb2NhbGVfdCAqcGdfbG9jYWxlX3Q7CiAKIGV4dGVybiBwZ19sb2NhbGVf dCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxpZCk7CiAK K2V4dGVybiBjaGFyICpnZXRfY29sbGF0aW9uX2FjdHVhbF92ZXJzaW9uKGNo YXIgY29sbHByb3ZpZGVyLCBjb25zdCBjaGFyICpjb2xsY29sbGF0ZSk7CisK KyNpZmRlZiBVU0VfSUNVCitleHRlcm4gaW50MzJfdCBpY3VfdG9fdWNoYXIo VUNoYXIgKipidWZmX3VjaGFyLCBjb25zdCBjaGFyICpidWZmLCBzaXplX3Qg bmJ5dGVzKTsKK2V4dGVybiBpbnQzMl90IGljdV9mcm9tX3VjaGFyKGNoYXIg KipyZXN1bHQsIFVDaGFyICpidWZmX3VjaGFyLCBpbnQzMl90IGxlbl91Y2hh cik7CisjZW5kaWYKKwogLyogVGhlc2UgZnVuY3Rpb25zIGNvbnZlcnQgZnJv bS90byBsaWJjJ3Mgd2NoYXJfdCwgKm5vdCogcGdfd2NoYXJfdCAqLwogI2lm ZGVmIFVTRV9XSURFX1VQUEVSX0xPV0VSCiBleHRlcm4gc2l6ZV90IHdjaGFy MmNoYXIoY2hhciAqdG8sIGNvbnN0IHdjaGFyX3QgKmZyb20sIHNpemVfdCB0 b2xlbiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvR05VbWFrZWZp bGUgYi9zcmMvdGVzdC9yZWdyZXNzL0dOVW1ha2VmaWxlCmluZGV4IGI5MjNl YTE0MjAuLmE3NDdmYWNiOWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvR05VbWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtl ZmlsZQpAQCAtMTI1LDYgKzEyNSw5IEBAIHRhYmxlc3BhY2Utc2V0dXA6CiAj IwogCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0uICQoRVhUUkFfUkVHUkVT U19PUFRTKQoraWZlcSAoJCh3aXRoX2ljdSkseWVzKQorb3ZlcnJpZGUgRVhU UkFfVEVTVFMgOj0gY29sbGF0ZS5pY3UgJChFWFRSQV9URVNUUykKK2VuZGlm CiAKIGNoZWNrOiBhbGwgdGFibGVzcGFjZS1zZXR1cAogCSQocGdfcmVncmVz c19jaGVjaykgJChSRUdSRVNTX09QVFMpIC0tc2NoZWR1bGU9JChzcmNkaXIp L3BhcmFsbGVsX3NjaGVkdWxlICQoTUFYQ09OTk9QVCkgJChFWFRSQV9URVNU UykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29s bGF0ZS5saW51eC51dGY4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29sbGF0ZS5pY3Uub3V0CnNpbWlsYXJpdHkgaW5kZXggODAlCmNvcHkg ZnJvbSBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUubGludXgu dXRmOC5vdXQKY29weSB0byBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv bGxhdGUuaWN1Lm91dAppbmRleCAyOTNlNzg2NDFlLi5lMWZjOTk4NGYyIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUu bGludXgudXRmOC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb2xsYXRlLmljdS5vdXQKQEAgLTEsNTQgKzEsNTQgQEAKIC8qCi0gKiBU aGlzIHRlc3QgaXMgZm9yIExpbnV4L2dsaWJjIHN5c3RlbXMgYW5kIGFzc3Vt ZXMgdGhhdCBhIGZ1bGwgc2V0IG9mCi0gKiBsb2NhbGVzIGlzIGluc3RhbGxl ZC4gIEl0IG11c3QgYmUgcnVuIGluIGEgZGF0YWJhc2Ugd2l0aCBVVEYtOCBl bmNvZGluZywKLSAqIGJlY2F1c2Ugb3RoZXIgZW5jb2RpbmdzIGRvbid0IHN1 cHBvcnQgYWxsIHRoZSBjaGFyYWN0ZXJzIHVzZWQuCisgKiBUaGlzIHRlc3Qg aXMgZm9yIElDVSBjb2xsYXRpb25zLgogICovCiBTRVQgY2xpZW50X2VuY29k aW5nIFRPIFVURjg7CitDUkVBVEUgU0NIRU1BIGNvbGxhdGVfdGVzdHM7CitT RVQgc2VhcmNoX3BhdGggPSBjb2xsYXRlX3Rlc3RzOwogQ1JFQVRFIFRBQkxF IGNvbGxhdGVfdGVzdDEgKAogICAgIGEgaW50LAotICAgIGIgdGV4dCBDT0xM QVRFICJlbl9VUyIgTk9UIE5VTEwKKyAgICBiIHRleHQgQ09MTEFURSAiZW4t eC1pY3UiIE5PVCBOVUxMCiApOwogXGQgY29sbGF0ZV90ZXN0MQotICAgICAg ICAgICBUYWJsZSAicHVibGljLmNvbGxhdGVfdGVzdDEiCisgICAgICAgIFRh YmxlICJjb2xsYXRlX3Rlc3RzLmNvbGxhdGVfdGVzdDEiCiAgQ29sdW1uIHwg IFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKIC0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQogIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IAotIGIgICAgICB8IHRleHQgICAgfCBlbl9VUyAgICAgfCBub3QgbnVs bCB8IAorIGIgICAgICB8IHRleHQgICAgfCBlbi14LWljdSAgfCBub3QgbnVs bCB8IAogCiBDUkVBVEUgVEFCTEUgY29sbGF0ZV90ZXN0X2ZhaWwgKAogICAg IGEgaW50LAotICAgIGIgdGV4dCBDT0xMQVRFICJqYV9KUC5ldWNqcCIKKyAg ICBiIHRleHQgQ09MTEFURSAiamFfSlAuZXVjanAteC1pY3UiCiApOwotRVJS T1I6ICBjb2xsYXRpb24gImphX0pQLmV1Y2pwIiBmb3IgZW5jb2RpbmcgIlVU RjgiIGRvZXMgbm90IGV4aXN0Ci1MSU5FIDM6ICAgICBiIHRleHQgQ09MTEFU RSAiamFfSlAuZXVjanAiCitFUlJPUjogIGNvbGxhdGlvbiAiamFfSlAuZXVj anAteC1pY3UiIGZvciBlbmNvZGluZyAiVVRGOCIgZG9lcyBub3QgZXhpc3QK K0xJTkUgMzogICAgIGIgdGV4dCBDT0xMQVRFICJqYV9KUC5ldWNqcC14LWlj dSIKICAgICAgICAgICAgICAgICAgICBeCiBDUkVBVEUgVEFCTEUgY29sbGF0 ZV90ZXN0X2ZhaWwgKAogICAgIGEgaW50LAotICAgIGIgdGV4dCBDT0xMQVRF ICJmb28iCisgICAgYiB0ZXh0IENPTExBVEUgImZvby14LWljdSIKICk7Ci1F UlJPUjogIGNvbGxhdGlvbiAiZm9vIiBmb3IgZW5jb2RpbmcgIlVURjgiIGRv ZXMgbm90IGV4aXN0Ci1MSU5FIDM6ICAgICBiIHRleHQgQ09MTEFURSAiZm9v IgorRVJST1I6ICBjb2xsYXRpb24gImZvby14LWljdSIgZm9yIGVuY29kaW5n ICJVVEY4IiBkb2VzIG5vdCBleGlzdAorTElORSAzOiAgICAgYiB0ZXh0IENP TExBVEUgImZvby14LWljdSIKICAgICAgICAgICAgICAgICAgICBeCiBDUkVB VEUgVEFCTEUgY29sbGF0ZV90ZXN0X2ZhaWwgKAotICAgIGEgaW50IENPTExB VEUgImVuX1VTIiwKKyAgICBhIGludCBDT0xMQVRFICJlbi14LWljdSIsCiAg ICAgYiB0ZXh0CiApOwogRVJST1I6ICBjb2xsYXRpb25zIGFyZSBub3Qgc3Vw cG9ydGVkIGJ5IHR5cGUgaW50ZWdlcgotTElORSAyOiAgICAgYSBpbnQgQ09M TEFURSAiZW5fVVMiLAorTElORSAyOiAgICAgYSBpbnQgQ09MTEFURSAiZW4t eC1pY3UiLAogICAgICAgICAgICAgICAgICAgXgogQ1JFQVRFIFRBQkxFIGNv bGxhdGVfdGVzdF9saWtlICgKICAgICBMSUtFIGNvbGxhdGVfdGVzdDEKICk7 CiBcZCBjb2xsYXRlX3Rlc3RfbGlrZQotICAgICAgICAgVGFibGUgInB1Ymxp Yy5jb2xsYXRlX3Rlc3RfbGlrZSIKKyAgICAgIFRhYmxlICJjb2xsYXRlX3Rl c3RzLmNvbGxhdGVfdGVzdF9saWtlIgogIENvbHVtbiB8ICBUeXBlICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCiAtLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KICBhICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKLSBiICAg ICAgfCB0ZXh0ICAgIHwgZW5fVVMgICAgIHwgbm90IG51bGwgfCAKKyBiICAg ICAgfCB0ZXh0ICAgIHwgZW4teC1pY3UgIHwgbm90IG51bGwgfCAKIAogQ1JF QVRFIFRBQkxFIGNvbGxhdGVfdGVzdDIgKAogICAgIGEgaW50LAotICAgIGIg dGV4dCBDT0xMQVRFICJzdl9TRSIKKyAgICBiIHRleHQgQ09MTEFURSAic3Yt eC1pY3UiCiApOwogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDMgKAogICAg IGEgaW50LApAQCAtMTA2LDEyICsxMDYsMTIgQEAgU0VMRUNUICogRlJPTSBj b2xsYXRlX3Rlc3QxIFdIRVJFIGIgQ09MTEFURSAiQyIgPj0gJ2JiYycgQ09M TEFURSAiQyI7CiAgMyB8IGJiYwogKDIgcm93cykKIAotU0VMRUNUICogRlJP TSBjb2xsYXRlX3Rlc3QxIFdIRVJFIGIgQ09MTEFURSAiQyIgPj0gJ2JiYycg Q09MTEFURSAiZW5fVVMiOwotRVJST1I6ICBjb2xsYXRpb24gbWlzbWF0Y2gg YmV0d2VlbiBleHBsaWNpdCBjb2xsYXRpb25zICJDIiBhbmQgImVuX1VTIgor U0VMRUNUICogRlJPTSBjb2xsYXRlX3Rlc3QxIFdIRVJFIGIgQ09MTEFURSAi QyIgPj0gJ2JiYycgQ09MTEFURSAiZW4teC1pY3UiOworRVJST1I6ICBjb2xs YXRpb24gbWlzbWF0Y2ggYmV0d2VlbiBleHBsaWNpdCBjb2xsYXRpb25zICJD IiBhbmQgImVuLXgtaWN1IgogTElORSAxOiAuLi4qIEZST00gY29sbGF0ZV90 ZXN0MSBXSEVSRSBiIENPTExBVEUgIkMiID49ICdiYmMnIENPTExBVEUgImUu Li4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCi1DUkVBVEUgRE9NQUlOIHRlc3Rkb21h aW5fc3YgQVMgdGV4dCBDT0xMQVRFICJzdl9TRSI7Ci1DUkVBVEUgRE9NQUlO IHRlc3Rkb21haW5faSBBUyBpbnQgQ09MTEFURSAic3ZfU0UiOyAtLSBmYWls cworQ1JFQVRFIERPTUFJTiB0ZXN0ZG9tYWluX3N2IEFTIHRleHQgQ09MTEFU RSAic3YteC1pY3UiOworQ1JFQVRFIERPTUFJTiB0ZXN0ZG9tYWluX2kgQVMg aW50IENPTExBVEUgInN2LXgtaWN1IjsgLS0gZmFpbHMKIEVSUk9SOiAgY29s bGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0eXBlIGludGVnZXIKIENS RUFURSBUQUJMRSBjb2xsYXRlX3Rlc3Q0ICgKICAgICBhIGludCwKQEAgLTEy OSw3ICsxMjksNyBAQCBTRUxFQ1QgYSwgYiBGUk9NIGNvbGxhdGVfdGVzdDQg T1JERVIgQlkgYjsKIAogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDUgKAog ICAgIGEgaW50LAotICAgIGIgdGVzdGRvbWFpbl9zdiBDT0xMQVRFICJlbl9V UyIKKyAgICBiIHRlc3Rkb21haW5fc3YgQ09MTEFURSAiZW4teC1pY3UiCiAp OwogSU5TRVJUIElOVE8gY29sbGF0ZV90ZXN0NSBTRUxFQ1QgKiBGUk9NIGNv bGxhdGVfdGVzdDE7CiBTRUxFQ1QgYSwgYiBGUk9NIGNvbGxhdGVfdGVzdDUg T1JERVIgQlkgYjsKQEAgLTIwNiwxMyArMjA2LDEzIEBAIFNFTEVDVCAqIEZS T00gY29sbGF0ZV90ZXN0MyBPUkRFUiBCWSBiOwogKDQgcm93cykKIAogLS0g Y29uc3RhbnQgZXhwcmVzc2lvbiBmb2xkaW5nCi1TRUxFQ1QgJ2JiYycgQ09M TEFURSAiZW5fVVMiID4gJ8OkYmMnIENPTExBVEUgImVuX1VTIiBBUyAidHJ1 ZSI7CitTRUxFQ1QgJ2JiYycgQ09MTEFURSAiZW4teC1pY3UiID4gJ8OkYmMn IENPTExBVEUgImVuLXgtaWN1IiBBUyAidHJ1ZSI7CiAgdHJ1ZSAKIC0tLS0t LQogIHQKICgxIHJvdykKIAotU0VMRUNUICdiYmMnIENPTExBVEUgInN2X1NF IiA+ICfDpGJjJyBDT0xMQVRFICJzdl9TRSIgQVMgImZhbHNlIjsKK1NFTEVD VCAnYmJjJyBDT0xMQVRFICJzdi14LWljdSIgPiAnw6RiYycgQ09MTEFURSAi c3YteC1pY3UiIEFTICJmYWxzZSI7CiAgZmFsc2UgCiAtLS0tLS0tCiAgZgpA QCAtMjIxLDggKzIyMSw4IEBAIFNFTEVDVCAnYmJjJyBDT0xMQVRFICJzdl9T RSIgPiAnw6RiYycgQ09MTEFURSAic3ZfU0UiIEFTICJmYWxzZSI7CiAtLSB1 cHBlci9sb3dlcgogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDEwICgKICAg ICBhIGludCwKLSAgICB4IHRleHQgQ09MTEFURSAiZW5fVVMiLAotICAgIHkg dGV4dCBDT0xMQVRFICJ0cl9UUiIKKyAgICB4IHRleHQgQ09MTEFURSAiZW4t eC1pY3UiLAorICAgIHkgdGV4dCBDT0xMQVRFICJ0ci14LWljdSIKICk7CiBJ TlNFUlQgSU5UTyBjb2xsYXRlX3Rlc3QxMCBWQUxVRVMgKDEsICdoaWonLCAn aGlqJyksICgyLCAnSElKJywgJ0hJSicpOwogU0VMRUNUIGEsIGxvd2VyKHgp LCBsb3dlcih5KSwgdXBwZXIoeCksIHVwcGVyKHkpLCBpbml0Y2FwKHgpLCBp bml0Y2FwKHkpIEZST00gY29sbGF0ZV90ZXN0MTA7CkBAIC0yOTAsMjUgKzI5 MCwyNSBAQCBTRUxFQ1QgKiBGUk9NIGNvbGxhdGVfdGVzdDEgV0hFUkUgYiBJ TElLRSAnJWJjJSc7CiAgNCB8IEFCQwogKDQgcm93cykKIAotU0VMRUNUICdU w7xya2l5ZScgQ09MTEFURSAiZW5fVVMiIElMSUtFICclS0klJyBBUyAidHJ1 ZSI7CitTRUxFQ1QgJ1TDvHJraXllJyBDT0xMQVRFICJlbi14LWljdSIgSUxJ S0UgJyVLSSUnIEFTICJ0cnVlIjsKICB0cnVlIAogLS0tLS0tCiAgdAogKDEg cm93KQogCi1TRUxFQ1QgJ1TDvHJraXllJyBDT0xMQVRFICJ0cl9UUiIgSUxJ S0UgJyVLSSUnIEFTICJmYWxzZSI7CitTRUxFQ1QgJ1TDvHJraXllJyBDT0xM QVRFICJ0ci14LWljdSIgSUxJS0UgJyVLSSUnIEFTICJmYWxzZSI7CiAgZmFs c2UgCiAtLS0tLS0tCiAgZgogKDEgcm93KQogCi1TRUxFQ1QgJ2LEsXQnIElM SUtFICdCSVQnIENPTExBVEUgImVuX1VTIiBBUyAiZmFsc2UiOworU0VMRUNU ICdixLF0JyBJTElLRSAnQklUJyBDT0xMQVRFICJlbi14LWljdSIgQVMgImZh bHNlIjsKICBmYWxzZSAKIC0tLS0tLS0KICBmCiAoMSByb3cpCiAKLVNFTEVD VCAnYsSxdCcgSUxJS0UgJ0JJVCcgQ09MTEFURSAidHJfVFIiIEFTICJ0cnVl IjsKK1NFTEVDVCAnYsSxdCcgSUxJS0UgJ0JJVCcgQ09MTEFURSAidHIteC1p Y3UiIEFTICJ0cnVlIjsKICB0cnVlIAogLS0tLS0tCiAgdApAQCAtMzY0LDUw ICszNjQsNzUgQEAgU0VMRUNUICogRlJPTSBjb2xsYXRlX3Rlc3QxIFdIRVJF IGIgfiogJ2JjJzsKICA0IHwgQUJDCiAoNCByb3dzKQogCi1TRUxFQ1QgJ1TD vHJraXllJyBDT0xMQVRFICJlbl9VUyIgfiogJ0tJJyBBUyAidHJ1ZSI7CitD UkVBVEUgVEFCTEUgY29sbGF0ZV90ZXN0NiAoCisgICAgYSBpbnQsCisgICAg YiB0ZXh0IENPTExBVEUgImVuLXgtaWN1IgorKTsKK0lOU0VSVCBJTlRPIGNv bGxhdGVfdGVzdDYgVkFMVUVTICgxLCAnYWJjJyksICgyLCAnQUJDJyksICgz LCAnMTIzJyksICg0LCAnYWIxJyksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoNSwgJ2ExIScpLCAoNiwgJ2EgYycpLCAoNywgJyEuOycp LCAoOCwgJyAgICcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKDksICfDpGLDpycpLCAoMTAsICfDhELDhycpOworU0VMRUNUIGIsCisg ICAgICAgYiB+ICdeW1s6YWxwaGE6XV0rJCcgQVMgaXNfYWxwaGEsCisgICAg ICAgYiB+ICdeW1s6dXBwZXI6XV0rJCcgQVMgaXNfdXBwZXIsCisgICAgICAg YiB+ICdeW1s6bG93ZXI6XV0rJCcgQVMgaXNfbG93ZXIsCisgICAgICAgYiB+ ICdeW1s6ZGlnaXQ6XV0rJCcgQVMgaXNfZGlnaXQsCisgICAgICAgYiB+ICde W1s6YWxudW06XV0rJCcgQVMgaXNfYWxudW0sCisgICAgICAgYiB+ICdeW1s6 Z3JhcGg6XV0rJCcgQVMgaXNfZ3JhcGgsCisgICAgICAgYiB+ICdeW1s6cHJp bnQ6XV0rJCcgQVMgaXNfcHJpbnQsCisgICAgICAgYiB+ICdeW1s6cHVuY3Q6 XV0rJCcgQVMgaXNfcHVuY3QsCisgICAgICAgYiB+ICdeW1s6c3BhY2U6XV0r JCcgQVMgaXNfc3BhY2UKK0ZST00gY29sbGF0ZV90ZXN0NjsKKyAgYiAgfCBp c19hbHBoYSB8IGlzX3VwcGVyIHwgaXNfbG93ZXIgfCBpc19kaWdpdCB8IGlz X2FsbnVtIHwgaXNfZ3JhcGggfCBpc19wcmludCB8IGlzX3B1bmN0IHwgaXNf c3BhY2UgCistLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIGFiYyB8IHQgICAgICAgIHwgZiAg ICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgfCB0ICAg ICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgfCBmCisgQUJDIHwgdCAgICAg ICAgfCB0ICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAg ICB8IHQgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICB8IGYKKyAxMjMg fCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICB8 IHQgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgIHwg ZgorIGFiMSB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYg ICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgIHwgZiAg ICAgICAgfCBmCisgYTEhIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAg ICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgIHwgdCAgICAg ICAgfCBmICAgICAgICB8IGYKKyBhIGMgfCBmICAgICAgICB8IGYgICAgICAg IHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAg fCB0ICAgICAgICB8IGYgICAgICAgIHwgZgorICEuOyB8IGYgICAgICAgIHwg ZiAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCB0 ICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgfCBmCisgICAgIHwgZiAg ICAgICAgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAg ICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICB8IHQKKyDD pGLDpyB8IHQgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICB8IGYgICAg ICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgIHwgZiAgICAg ICAgfCBmCisgw4RCw4cgfCB0ICAgICAgICB8IHQgICAgICAgIHwgZiAgICAg ICAgfCBmICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAg ICB8IGYgICAgICAgIHwgZgorKDEwIHJvd3MpCisKK1NFTEVDVCAnVMO8cmtp eWUnIENPTExBVEUgImVuLXgtaWN1IiB+KiAnS0knIEFTICJ0cnVlIjsKICB0 cnVlIAogLS0tLS0tCiAgdAogKDEgcm93KQogCi1TRUxFQ1QgJ1TDvHJraXll JyBDT0xMQVRFICJ0cl9UUiIgfiogJ0tJJyBBUyAiZmFsc2UiOworU0VMRUNU ICdUw7xya2l5ZScgQ09MTEFURSAidHIteC1pY3UiIH4qICdLSScgQVMgInRy dWUiOyAgLS0gdHJ1ZSB3aXRoIElDVQorIHRydWUgCistLS0tLS0KKyB0Ciso MSByb3cpCisKK1NFTEVDVCAnYsSxdCcgfiogJ0JJVCcgQ09MTEFURSAiZW4t eC1pY3UiIEFTICJmYWxzZSI7CiAgZmFsc2UgCiAtLS0tLS0tCiAgZgogKDEg cm93KQogCi1TRUxFQ1QgJ2LEsXQnIH4qICdCSVQnIENPTExBVEUgImVuX1VT IiBBUyAiZmFsc2UiOworU0VMRUNUICdixLF0JyB+KiAnQklUJyBDT0xMQVRF ICJ0ci14LWljdSIgQVMgImZhbHNlIjsgIC0tIGZhbHNlIHdpdGggSUNVCiAg ZmFsc2UgCiAtLS0tLS0tCiAgZgogKDEgcm93KQogCi1TRUxFQ1QgJ2LEsXQn IH4qICdCSVQnIENPTExBVEUgInRyX1RSIiBBUyAidHJ1ZSI7Ci0gdHJ1ZSAK LS0tLS0tLQotIHQKLSgxIHJvdykKLQogLS0gVGhlIGZvbGxvd2luZyBhY3R1 YWxseSBleGVyY2lzZXMgdGhlIHNlbGVjdGl2aXR5IGVzdGltYXRpb24gZm9y IH4qLgogU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxu YW1lIH4qICdeYWJjJzsKICByZWxuYW1lIAogLS0tLS0tLS0tCiAoMCByb3dz KQogCisvKiBub3QgcnVuIGJ5IGRlZmF1bHQgYmVjYXVzZSBpdCByZXF1aXJl cyB0cl9UUiBzeXN0ZW0gbG9jYWxlCiAtLSB0b19jaGFyCisKIFNFVCBsY190 aW1lIFRPICd0cl9UUic7CiBTRUxFQ1QgdG9fY2hhcihkYXRlICcyMDEwLTA0 LTAxJywgJ0REIFRNTU9OIFlZWVknKTsKLSAgIHRvX2NoYXIgICAKLS0tLS0t LS0tLS0tLS0KLSAwMSBOSVMgMjAxMAotKDEgcm93KQotCi1TRUxFQ1QgdG9f Y2hhcihkYXRlICcyMDEwLTA0LTAxJywgJ0REIFRNTU9OIFlZWVknIENPTExB VEUgInRyX1RSIik7Ci0gICB0b19jaGFyICAgCi0tLS0tLS0tLS0tLS0tCi0g MDEgTsSwUyAyMDEwCi0oMSByb3cpCi0KK1NFTEVDVCB0b19jaGFyKGRhdGUg JzIwMTAtMDQtMDEnLCAnREQgVE1NT04gWVlZWScgQ09MTEFURSAidHIteC1p Y3UiKTsKKyovCiAtLSBiYWNrd2FyZHMgcGFyc2luZwogQ1JFQVRFIFZJRVcg Y29sbHZpZXcxIEFTIFNFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MSBXSEVS RSBiIENPTExBVEUgIkMiID49ICdiYmMnOwogQ1JFQVRFIFZJRVcgY29sbHZp ZXcyIEFTIFNFTEVDVCBhLCBiIEZST00gY29sbGF0ZV90ZXN0MSBPUkRFUiBC WSBiIENPTExBVEUgIkMiOwpAQCAtNjkzLDcgKzcxOCw3IEBAIFNFTEVDVCBh LCBiIEZST00gY29sbGF0ZV90ZXN0MSBVTklPTiBBTEwgU0VMRUNUIGEsIGIg RlJPTSBjb2xsYXRlX3Rlc3QzOyAtLSBvawogKDggcm93cykKIAogU0VMRUNU IGEsIGIgRlJPTSBjb2xsYXRlX3Rlc3QxIFVOSU9OIFNFTEVDVCBhLCBiIEZS T00gY29sbGF0ZV90ZXN0MyBPUkRFUiBCWSAyOyAtLSBmYWlsCi1FUlJPUjog IGNvbGxhdGlvbiBtaXNtYXRjaCBiZXR3ZWVuIGltcGxpY2l0IGNvbGxhdGlv bnMgImVuX1VTIiBhbmQgIkMiCitFUlJPUjogIGNvbGxhdGlvbiBtaXNtYXRj aCBiZXR3ZWVuIGltcGxpY2l0IGNvbGxhdGlvbnMgImVuLXgtaWN1IiBhbmQg IkMiCiBMSU5FIDE6IFNFTEVDVCBhLCBiIEZST00gY29sbGF0ZV90ZXN0MSBV TklPTiBTRUxFQ1QgYSwgYiBGUk9NIGNvbGxhdC4uLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K IEhJTlQ6ICBZb3UgY2FuIGNob29zZSB0aGUgY29sbGF0aW9uIGJ5IGFwcGx5 aW5nIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBvbmUgb3IgYm90aCBleHByZXNz aW9ucy4KQEAgLTcwNywxMiArNzMyLDEyIEBAIFNFTEVDVCBhLCBiIENPTExB VEUgIkMiIEZST00gY29sbGF0ZV90ZXN0MSBVTklPTiBTRUxFQ1QgYSwgYiBG Uk9NIGNvbGxhdGVfdGVzdDMKICg0IHJvd3MpCiAKIFNFTEVDVCBhLCBiIEZS T00gY29sbGF0ZV90ZXN0MSBJTlRFUlNFQ1QgU0VMRUNUIGEsIGIgRlJPTSBj b2xsYXRlX3Rlc3QzIE9SREVSIEJZIDI7IC0tIGZhaWwKLUVSUk9SOiAgY29s bGF0aW9uIG1pc21hdGNoIGJldHdlZW4gaW1wbGljaXQgY29sbGF0aW9ucyAi ZW5fVVMiIGFuZCAiQyIKK0VSUk9SOiAgY29sbGF0aW9uIG1pc21hdGNoIGJl dHdlZW4gaW1wbGljaXQgY29sbGF0aW9ucyAiZW4teC1pY3UiIGFuZCAiQyIK IExJTkUgMTogLi4uRUxFQ1QgYSwgYiBGUk9NIGNvbGxhdGVfdGVzdDEgSU5U RVJTRUNUIFNFTEVDVCBhLCBiIEZST00gY29sLi4uCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgogSElOVDogIFlvdSBjYW4gY2hvb3NlIHRoZSBjb2xsYXRpb24gYnkg YXBwbHlpbmcgdGhlIENPTExBVEUgY2xhdXNlIHRvIG9uZSBvciBib3RoIGV4 cHJlc3Npb25zLgogU0VMRUNUIGEsIGIgRlJPTSBjb2xsYXRlX3Rlc3QxIEVY Q0VQVCBTRUxFQ1QgYSwgYiBGUk9NIGNvbGxhdGVfdGVzdDMgT1JERVIgQlkg MjsgLS0gZmFpbAotRVJST1I6ICBjb2xsYXRpb24gbWlzbWF0Y2ggYmV0d2Vl biBpbXBsaWNpdCBjb2xsYXRpb25zICJlbl9VUyIgYW5kICJDIgorRVJST1I6 ICBjb2xsYXRpb24gbWlzbWF0Y2ggYmV0d2VlbiBpbXBsaWNpdCBjb2xsYXRp b25zICJlbi14LWljdSIgYW5kICJDIgogTElORSAxOiBTRUxFQ1QgYSwgYiBG Uk9NIGNvbGxhdGVfdGVzdDEgRVhDRVBUIFNFTEVDVCBhLCBiIEZST00gY29s bGEuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgogSElOVDogIFlvdSBjYW4gY2hvb3NlIHRo ZSBjb2xsYXRpb24gYnkgYXBwbHlpbmcgdGhlIENPTExBVEUgY2xhdXNlIHRv IG9uZSBvciBib3RoIGV4cHJlc3Npb25zLgpAQCAtNzMxLDE4ICs3NTYsMTgg QEAgc2VsZWN0IHggfHwgeSBmcm9tIGNvbGxhdGVfdGVzdDEwOyAtLSBvaywg YmVjYXVzZSB8fCBpcyBub3QgY29sbGF0aW9uIGF3YXJlCiAoMiByb3dzKQog CiBzZWxlY3QgeCwgeSBmcm9tIGNvbGxhdGVfdGVzdDEwIG9yZGVyIGJ5IHgg fHwgeTsgLS0gbm90IHNvIG9rCi1FUlJPUjogIGNvbGxhdGlvbiBtaXNtYXRj aCBiZXR3ZWVuIGltcGxpY2l0IGNvbGxhdGlvbnMgImVuX1VTIiBhbmQgInRy X1RSIgorRVJST1I6ICBjb2xsYXRpb24gbWlzbWF0Y2ggYmV0d2VlbiBpbXBs aWNpdCBjb2xsYXRpb25zICJlbi14LWljdSIgYW5kICJ0ci14LWljdSIKIExJ TkUgMTogc2VsZWN0IHgsIHkgZnJvbSBjb2xsYXRlX3Rlc3QxMCBvcmRlciBi eSB4IHx8IHk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCiBISU5UOiAgWW91IGNhbiBjaG9vc2Ug dGhlIGNvbGxhdGlvbiBieSBhcHBseWluZyB0aGUgQ09MTEFURSBjbGF1c2Ug dG8gb25lIG9yIGJvdGggZXhwcmVzc2lvbnMuCiAtLSBjb2xsYXRpb24gbWlz bWF0Y2ggYmV0d2VlbiByZWN1cnNpdmUgYW5kIG5vbi1yZWN1cnNpdmUgdGVy bQogV0lUSCBSRUNVUlNJVkUgZm9vKHgpIEFTCi0gICAoU0VMRUNUIHggRlJP TSAoVkFMVUVTKCdhJyBDT0xMQVRFICJlbl9VUyIpLCgnYicpKSB0KHgpCisg ICAoU0VMRUNUIHggRlJPTSAoVkFMVUVTKCdhJyBDT0xMQVRFICJlbi14LWlj dSIpLCgnYicpKSB0KHgpCiAgICBVTklPTiBBTEwKLSAgIFNFTEVDVCAoeCB8 fCAnYycpIENPTExBVEUgImRlX0RFIiBGUk9NIGZvbyBXSEVSRSBsZW5ndGgo eCkgPCAxMCkKKyAgIFNFTEVDVCAoeCB8fCAnYycpIENPTExBVEUgImRlLXgt aWN1IiBGUk9NIGZvbyBXSEVSRSBsZW5ndGgoeCkgPCAxMCkKIFNFTEVDVCAq IEZST00gZm9vOwotRVJST1I6ICByZWN1cnNpdmUgcXVlcnkgImZvbyIgY29s dW1uIDEgaGFzIGNvbGxhdGlvbiAiZW5fVVMiIGluIG5vbi1yZWN1cnNpdmUg dGVybSBidXQgY29sbGF0aW9uICJkZV9ERSIgb3ZlcmFsbAotTElORSAyOiAg ICAoU0VMRUNUIHggRlJPTSAoVkFMVUVTKCdhJyBDT0xMQVRFICJlbl9VUyIp LCgnYicpKSB0KHgpCitFUlJPUjogIHJlY3Vyc2l2ZSBxdWVyeSAiZm9vIiBj b2x1bW4gMSBoYXMgY29sbGF0aW9uICJlbi14LWljdSIgaW4gbm9uLXJlY3Vy c2l2ZSB0ZXJtIGJ1dCBjb2xsYXRpb24gImRlLXgtaWN1IiBvdmVyYWxsCitM SU5FIDI6ICAgIChTRUxFQ1QgeCBGUk9NIChWQUxVRVMoJ2EnIENPTExBVEUg ImVuLXgtaWN1IiksKCdiJykpIHQoeC4uLgogICAgICAgICAgICAgICAgICAg IF4KIEhJTlQ6ICBVc2UgdGhlIENPTExBVEUgY2xhdXNlIHRvIHNldCB0aGUg Y29sbGF0aW9uIG9mIHRoZSBub24tcmVjdXJzaXZlIHRlcm0uCiAtLSBjYXN0 aW5nCkBAIC04NDMsNyArODY4LDcgQEAgYmVnaW4KICAgcmV0dXJuIHh4IDwg eXk7CiBlbmQKICQkOwotU0VMRUNUIG15bHQyKCdhJywgJ0InIGNvbGxhdGUg ImVuX1VTIikgYXMgdCwgbXlsdDIoJ2EnLCAnQicgY29sbGF0ZSAiQyIpIGFz IGY7CitTRUxFQ1QgbXlsdDIoJ2EnLCAnQicgY29sbGF0ZSAiZW4teC1pY3Ui KSBhcyB0LCBteWx0MignYScsICdCJyBjb2xsYXRlICJDIikgYXMgZjsKICB0 IHwgZiAKIC0tLSstLS0KICB0IHwgZgpAQCAtOTU3LDI5ICs5ODIsMjMgQEAg Q1JFQVRFIFNDSEVNQSB0ZXN0X3NjaGVtYTsKIC0tIFdlIG5lZWQgdG8gZG8g dGhpcyB0aGlzIHdheSB0byBjb3BlIHdpdGggdmFyeWluZyBuYW1lcyBmb3Ig ZW5jb2RpbmdzOgogZG8gJCQKIEJFR0lOCi0gIEVYRUNVVEUgJ0NSRUFURSBD T0xMQVRJT04gdGVzdDAgKGxvY2FsZSA9ICcgfHwKKyAgRVhFQ1VURSAnQ1JF QVRFIENPTExBVElPTiB0ZXN0MCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9 ICcgfHwKICAgICAgICAgICBxdW90ZV9saXRlcmFsKGN1cnJlbnRfc2V0dGlu ZygnbGNfY29sbGF0ZScpKSB8fCAnKTsnOwogRU5ECiAkJDsKIENSRUFURSBD T0xMQVRJT04gdGVzdDAgRlJPTSAiQyI7IC0tIGZhaWwsIGR1cGxpY2F0ZSBu YW1lCi1FUlJPUjogIGNvbGxhdGlvbiAidGVzdDAiIGZvciBlbmNvZGluZyAi VVRGOCIgYWxyZWFkeSBleGlzdHMKLUNSRUFURSBDT0xMQVRJT04gSUYgTk9U IEVYSVNUUyB0ZXN0MCBGUk9NICJDIjsgLS0gb2ssIHNraXBwZWQKLU5PVElD RTogIGNvbGxhdGlvbiAidGVzdDAiIGZvciBlbmNvZGluZyAiVVRGOCIgYWxy ZWFkeSBleGlzdHMsIHNraXBwaW5nCi1DUkVBVEUgQ09MTEFUSU9OIElGIE5P VCBFWElTVFMgdGVzdDAgKGxvY2FsZSA9ICdmb28nKTsgLS0gb2ssIHNraXBw ZWQKLU5PVElDRTogIGNvbGxhdGlvbiAidGVzdDAiIGZvciBlbmNvZGluZyAi VVRGOCIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nCitFUlJPUjogIGNvbGxh dGlvbiAidGVzdDAiIGFscmVhZHkgZXhpc3RzCiBkbyAkJAogQkVHSU4KLSAg RVhFQ1VURSAnQ1JFQVRFIENPTExBVElPTiB0ZXN0MSAobGNfY29sbGF0ZSA9 ICcgfHwKKyAgRVhFQ1VURSAnQ1JFQVRFIENPTExBVElPTiB0ZXN0MSAocHJv dmlkZXIgPSBpY3UsIGxjX2NvbGxhdGUgPSAnIHx8CiAgICAgICAgICAgcXVv dGVfbGl0ZXJhbChjdXJyZW50X3NldHRpbmcoJ2xjX2NvbGxhdGUnKSkgfHwK ICAgICAgICAgICAnLCBsY19jdHlwZSA9ICcgfHwKICAgICAgICAgICBxdW90 ZV9saXRlcmFsKGN1cnJlbnRfc2V0dGluZygnbGNfY3R5cGUnKSkgfHwgJyk7 JzsKIEVORAogJCQ7Ci1DUkVBVEUgQ09MTEFUSU9OIHRlc3QzIChsY19jb2xs YXRlID0gJ2VuX1VTLnV0ZjgnKTsgLS0gZmFpbCwgbmVlZCBsY19jdHlwZQor Q1JFQVRFIENPTExBVElPTiB0ZXN0MyAocHJvdmlkZXIgPSBpY3UsIGxjX2Nv bGxhdGUgPSAnZW5fVVMudXRmOCcpOyAtLSBmYWlsLCBuZWVkIGxjX2N0eXBl CiBFUlJPUjogIHBhcmFtZXRlciAibGNfY3R5cGUiIG11c3QgYmUgc3BlY2lm aWVkCi1DUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChsb2NhbGUgPSAnbm9uc2Vu c2UnKTsgLS0gZmFpbAotRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIGxvY2Fs ZSAibm9uc2Vuc2UiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1ERVRB SUw6ICBUaGUgb3BlcmF0aW5nIHN5c3RlbSBjb3VsZCBub3QgZmluZCBhbnkg bG9jYWxlIGRhdGEgZm9yIHRoZSBsb2NhbGUgbmFtZSAibm9uc2Vuc2UiLgor Q1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2Fs ZSA9ICdub25zZW5zZScpOyAvKiBuZXZlciBmYWlscyB3aXRoIElDVSAqLyAg RFJPUCBDT0xMQVRJT04gdGVzdHg7CiBDUkVBVEUgQ09MTEFUSU9OIHRlc3Q0 IEZST00gbm9uc2Vuc2U7CiBFUlJPUjogIGNvbGxhdGlvbiAibm9uc2Vuc2Ui IGZvciBlbmNvZGluZyAiVVRGOCIgZG9lcyBub3QgZXhpc3QKIENSRUFURSBD T0xMQVRJT04gdGVzdDUgRlJPTSB0ZXN0MDsKQEAgLTk5Myw3ICsxMDEyLDcg QEAgU0VMRUNUIGNvbGxuYW1lIEZST00gcGdfY29sbGF0aW9uIFdIRVJFIGNv bGxuYW1lIExJS0UgJ3Rlc3QlJyBPUkRFUiBCWSAxOwogCiBBTFRFUiBDT0xM QVRJT04gdGVzdDEgUkVOQU1FIFRPIHRlc3QxMTsKIEFMVEVSIENPTExBVElP TiB0ZXN0MCBSRU5BTUUgVE8gdGVzdDExOyAtLSBmYWlsCi1FUlJPUjogIGNv bGxhdGlvbiAidGVzdDExIiBmb3IgZW5jb2RpbmcgIlVURjgiIGFscmVhZHkg ZXhpc3RzIGluIHNjaGVtYSAicHVibGljIgorRVJST1I6ICBjb2xsYXRpb24g InRlc3QxMSIgYWxyZWFkeSBleGlzdHMgaW4gc2NoZW1hICJjb2xsYXRlX3Rl c3RzIgogQUxURVIgQ09MTEFUSU9OIHRlc3QxIFJFTkFNRSBUTyB0ZXN0MjI7 IC0tIGZhaWwKIEVSUk9SOiAgY29sbGF0aW9uICJ0ZXN0MSIgZm9yIGVuY29k aW5nICJVVEY4IiBkb2VzIG5vdCBleGlzdAogQUxURVIgQ09MTEFUSU9OIHRl c3QxMSBPV05FUiBUTyByZWdyZXNzX3Rlc3Rfcm9sZTsKQEAgLTEwMDUsMTEg KzEwMjQsMTEgQEAgU0VMRUNUIGNvbGxuYW1lLCBuc3BuYW1lLCBvYmpfZGVz Y3JpcHRpb24ocGdfY29sbGF0aW9uLm9pZCwgJ3BnX2NvbGxhdGlvbicpCiAg ICAgRlJPTSBwZ19jb2xsYXRpb24gSk9JTiBwZ19uYW1lc3BhY2UgT04gKGNv bGxuYW1lc3BhY2UgPSBwZ19uYW1lc3BhY2Uub2lkKQogICAgIFdIRVJFIGNv bGxuYW1lIExJS0UgJ3Rlc3QlJwogICAgIE9SREVSIEJZIDE7Ci0gY29sbG5h bWUgfCAgIG5zcG5hbWUgICB8IG9ial9kZXNjcmlwdGlvbiAKLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQotIHRlc3QwICAg IHwgcHVibGljICAgICAgfCBVUyBFbmdsaXNoCi0gdGVzdDExICAgfCB0ZXN0 X3NjaGVtYSB8IAotIHRlc3Q1ICAgIHwgcHVibGljICAgICAgfCAKKyBjb2xs bmFtZSB8ICAgIG5zcG5hbWUgICAgfCBvYmpfZGVzY3JpcHRpb24gCistLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHRl c3QwICAgIHwgY29sbGF0ZV90ZXN0cyB8IFVTIEVuZ2xpc2gKKyB0ZXN0MTEg ICB8IHRlc3Rfc2NoZW1hICAgfCAKKyB0ZXN0NSAgICB8IGNvbGxhdGVfdGVz dHMgfCAKICgzIHJvd3MpCiAKIERST1AgQ09MTEFUSU9OIHRlc3QwLCB0ZXN0 X3NjaGVtYS50ZXN0MTEsIHRlc3Q1OwpAQCAtMTAyNCw2ICsxMDQzLDkgQEAg U0VMRUNUIGNvbGxuYW1lIEZST00gcGdfY29sbGF0aW9uIFdIRVJFIGNvbGxu YW1lIExJS0UgJ3Rlc3QlJzsKIAogRFJPUCBTQ0hFTUEgdGVzdF9zY2hlbWE7 CiBEUk9QIFJPTEUgcmVncmVzc190ZXN0X3JvbGU7CistLSBBTFRFUgorQUxU RVIgQ09MTEFUSU9OICJlbi14LWljdSIgUkVGUkVTSCBWRVJTSU9OOworTk9U SUNFOiAgdmVyc2lvbiBoYXMgbm90IGNoYW5nZWQKIC0tIGRlcGVuZGVuY2ll cwogQ1JFQVRFIENPTExBVElPTiB0ZXN0MCBGUk9NICJDIjsKIENSRUFURSBU QUJMRSBjb2xsYXRlX2RlcF90ZXN0MSAoYSBpbnQsIGIgdGV4dCBDT0xMQVRF IHRlc3QwKTsKQEAgLTEwNDgsMTMgKzEwNzAsMTMgQEAgZHJvcCBjYXNjYWRl cyB0byBjb21wb3NpdGUgdHlwZSBjb2xsYXRlX2RlcF90ZXN0MiBjb2x1bW4g eQogZHJvcCBjYXNjYWRlcyB0byB2aWV3IGNvbGxhdGVfZGVwX3Rlc3QzCiBk cm9wIGNhc2NhZGVzIHRvIGluZGV4IGNvbGxhdGVfZGVwX3Rlc3Q0aQogXGQg Y29sbGF0ZV9kZXBfdGVzdDEKLSAgICAgICAgIFRhYmxlICJwdWJsaWMuY29s bGF0ZV9kZXBfdGVzdDEiCisgICAgICBUYWJsZSAiY29sbGF0ZV90ZXN0cy5j b2xsYXRlX2RlcF90ZXN0MSIKICBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAogLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCiAgYSAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCiAKIFxkIGNvbGxh dGVfZGVwX3Rlc3QyCi0gICAgIENvbXBvc2l0ZSB0eXBlICJwdWJsaWMuY29s bGF0ZV9kZXBfdGVzdDIiCisgQ29tcG9zaXRlIHR5cGUgImNvbGxhdGVfdGVz dHMuY29sbGF0ZV9kZXBfdGVzdDIiCiAgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKIC0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQogIHggICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IApAQCAtMTA2 Myw3ICsxMDg1LDcgQEAgRFJPUCBUQUJMRSBjb2xsYXRlX2RlcF90ZXN0MSwg Y29sbGF0ZV9kZXBfdGVzdDR0OwogRFJPUCBUWVBFIGNvbGxhdGVfZGVwX3Rl c3QyOwogLS0gdGVzdCByYW5nZSB0eXBlcyBhbmQgY29sbGF0aW9ucwogY3Jl YXRlIHR5cGUgdGV4dHJhbmdlX2MgYXMgcmFuZ2Uoc3VidHlwZT10ZXh0LCBj b2xsYXRpb249IkMiKTsKLWNyZWF0ZSB0eXBlIHRleHRyYW5nZV9lbl91cyBh cyByYW5nZShzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iZW5fVVMiKTsKK2Ny ZWF0ZSB0eXBlIHRleHRyYW5nZV9lbl91cyBhcyByYW5nZShzdWJ0eXBlPXRl eHQsIGNvbGxhdGlvbj0iZW4teC1pY3UiKTsKIHNlbGVjdCB0ZXh0cmFuZ2Vf YygnQScsJ1onKSBAPiAnYic6OnRleHQ7CiAgP2NvbHVtbj8gCiAtLS0tLS0t LS0tCkBAIC0xMDc4LDMgKzExMDAsMjcgQEAgc2VsZWN0IHRleHRyYW5nZV9l bl91cygnQScsJ1onKSBAPiAnYic6OnRleHQ7CiAKIGRyb3AgdHlwZSB0ZXh0 cmFuZ2VfYzsKIGRyb3AgdHlwZSB0ZXh0cmFuZ2VfZW5fdXM7CistLSBjbGVh bnVwCitEUk9QIFNDSEVNQSBjb2xsYXRlX3Rlc3RzIENBU0NBREU7CitOT1RJ Q0U6ICBkcm9wIGNhc2NhZGVzIHRvIDE4IG90aGVyIG9iamVjdHMKK0RFVEFJ TDogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgY29sbGF0ZV90ZXN0MQorZHJv cCBjYXNjYWRlcyB0byB0YWJsZSBjb2xsYXRlX3Rlc3RfbGlrZQorZHJvcCBj YXNjYWRlcyB0byB0YWJsZSBjb2xsYXRlX3Rlc3QyCitkcm9wIGNhc2NhZGVz IHRvIHRhYmxlIGNvbGxhdGVfdGVzdDMKK2Ryb3AgY2FzY2FkZXMgdG8gdHlw ZSB0ZXN0ZG9tYWluX3N2Citkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNvbGxh dGVfdGVzdDQKK2Ryb3AgY2FzY2FkZXMgdG8gdGFibGUgY29sbGF0ZV90ZXN0 NQorZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjb2xsYXRlX3Rlc3QxMAorZHJv cCBjYXNjYWRlcyB0byB0YWJsZSBjb2xsYXRlX3Rlc3Q2Citkcm9wIGNhc2Nh ZGVzIHRvIHZpZXcgY29sbHZpZXcxCitkcm9wIGNhc2NhZGVzIHRvIHZpZXcg Y29sbHZpZXcyCitkcm9wIGNhc2NhZGVzIHRvIHZpZXcgY29sbHZpZXczCitk cm9wIGNhc2NhZGVzIHRvIHR5cGUgdGVzdGRvbWFpbgorZHJvcCBjYXNjYWRl cyB0byBmdW5jdGlvbiBteWx0KHRleHQsdGV4dCkKK2Ryb3AgY2FzY2FkZXMg dG8gZnVuY3Rpb24gbXlsdF9ub25pbmxpbmUodGV4dCx0ZXh0KQorZHJvcCBj YXNjYWRlcyB0byBmdW5jdGlvbiBteWx0X3BscGdzcWwodGV4dCx0ZXh0KQor ZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBteWx0Mih0ZXh0LHRleHQpCitk cm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGR1cChhbnllbGVtZW50KQorUkVT RVQgc2VhcmNoX3BhdGg7CistLSBsZWF2ZSBhIGNvbGxhdGlvbiBmb3IgcGdf dXBncmFkZSB0ZXN0CitDUkVBVEUgQ09MTEFUSU9OIGNvbGxfaWN1X3VwZ3Jh ZGUgRlJPTSAidW5kLXgtaWN1IjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5saW51eC51dGY4Lm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5saW51eC51dGY4Lm91dApp bmRleCAyOTNlNzg2NDFlLi4yNjI3NWMzZmIzIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUubGludXgudXRmOC5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmxpbnV4 LnV0Zjgub3V0CkBAIC00LDEyICs0LDE0IEBACiAgKiBiZWNhdXNlIG90aGVy IGVuY29kaW5ncyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY2hhcmFjdGVycyB1 c2VkLgogICovCiBTRVQgY2xpZW50X2VuY29kaW5nIFRPIFVURjg7CitDUkVB VEUgU0NIRU1BIGNvbGxhdGVfdGVzdHM7CitTRVQgc2VhcmNoX3BhdGggPSBj b2xsYXRlX3Rlc3RzOwogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDEgKAog ICAgIGEgaW50LAogICAgIGIgdGV4dCBDT0xMQVRFICJlbl9VUyIgTk9UIE5V TEwKICk7CiBcZCBjb2xsYXRlX3Rlc3QxCi0gICAgICAgICAgIFRhYmxlICJw dWJsaWMuY29sbGF0ZV90ZXN0MSIKKyAgICAgICAgVGFibGUgImNvbGxhdGVf dGVzdHMuY29sbGF0ZV90ZXN0MSIKICBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAogLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCiAgYSAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCkBAIC00MCw3 ICs0Miw3IEBAIENSRUFURSBUQUJMRSBjb2xsYXRlX3Rlc3RfbGlrZSAoCiAg ICAgTElLRSBjb2xsYXRlX3Rlc3QxCiApOwogXGQgY29sbGF0ZV90ZXN0X2xp a2UKLSAgICAgICAgIFRhYmxlICJwdWJsaWMuY29sbGF0ZV90ZXN0X2xpa2Ui CisgICAgICBUYWJsZSAiY29sbGF0ZV90ZXN0cy5jb2xsYXRlX3Rlc3RfbGlr ZSIKICBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCBEZWZhdWx0IAogLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tCiAgYSAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCkBAIC0zNjQsNiArMzY2LDM4IEBAIFNFTEVD VCAqIEZST00gY29sbGF0ZV90ZXN0MSBXSEVSRSBiIH4qICdiYyc7CiAgNCB8 IEFCQwogKDQgcm93cykKIAorQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDYg KAorICAgIGEgaW50LAorICAgIGIgdGV4dCBDT0xMQVRFICJlbl9VUyIKKyk7 CitJTlNFUlQgSU5UTyBjb2xsYXRlX3Rlc3Q2IFZBTFVFUyAoMSwgJ2FiYycp LCAoMiwgJ0FCQycpLCAoMywgJzEyMycpLCAoNCwgJ2FiMScpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKDUsICdhMSEnKSwgKDYsICdh IGMnKSwgKDcsICchLjsnKSwgKDgsICcgICAnKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICg5LCAnw6Riw6cnKSwgKDEwLCAnw4RCw4cn KTsKK1NFTEVDVCBiLAorICAgICAgIGIgfiAnXltbOmFscGhhOl1dKyQnIEFT IGlzX2FscGhhLAorICAgICAgIGIgfiAnXltbOnVwcGVyOl1dKyQnIEFTIGlz X3VwcGVyLAorICAgICAgIGIgfiAnXltbOmxvd2VyOl1dKyQnIEFTIGlzX2xv d2VyLAorICAgICAgIGIgfiAnXltbOmRpZ2l0Ol1dKyQnIEFTIGlzX2RpZ2l0 LAorICAgICAgIGIgfiAnXltbOmFsbnVtOl1dKyQnIEFTIGlzX2FsbnVtLAor ICAgICAgIGIgfiAnXltbOmdyYXBoOl1dKyQnIEFTIGlzX2dyYXBoLAorICAg ICAgIGIgfiAnXltbOnByaW50Ol1dKyQnIEFTIGlzX3ByaW50LAorICAgICAg IGIgfiAnXltbOnB1bmN0Ol1dKyQnIEFTIGlzX3B1bmN0LAorICAgICAgIGIg fiAnXltbOnNwYWNlOl1dKyQnIEFTIGlzX3NwYWNlCitGUk9NIGNvbGxhdGVf dGVzdDY7CisgIGIgIHwgaXNfYWxwaGEgfCBpc191cHBlciB8IGlzX2xvd2Vy IHwgaXNfZGlnaXQgfCBpc19hbG51bSB8IGlzX2dyYXBoIHwgaXNfcHJpbnQg fCBpc19wdW5jdCB8IGlzX3NwYWNlIAorLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBhYmMg fCB0ICAgICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICB8 IHQgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgIHwg ZgorIEFCQyB8IHQgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICB8IGYg ICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgIHwgZiAg ICAgICAgfCBmCisgMTIzIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAg ICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAgIHwgdCAgICAg ICAgfCBmICAgICAgICB8IGYKKyBhYjEgfCBmICAgICAgICB8IGYgICAgICAg IHwgZiAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAg fCB0ICAgICAgICB8IGYgICAgICAgIHwgZgorIGExISB8IGYgICAgICAgIHwg ZiAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCB0 ICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgfCBmCisgYSBjIHwgZiAg ICAgICAgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAg ICAgICB8IGYgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICB8IGYKKyAh LjsgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAg ICB8IGYgICAgICAgIHwgdCAgICAgICAgfCB0ICAgICAgICB8IHQgICAgICAg IHwgZgorICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8 IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgIHwg ZiAgICAgICAgfCB0Cisgw6Riw6cgfCB0ICAgICAgICB8IGYgICAgICAgIHwg dCAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgIHwgdCAgICAgICAgfCB0 ICAgICAgICB8IGYgICAgICAgIHwgZgorIMOEQsOHIHwgdCAgICAgICAgfCB0 ICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgfCB0ICAgICAgICB8IHQg ICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICB8IGYKKygxMCByb3dzKQor CiBTRUxFQ1QgJ1TDvHJraXllJyBDT0xMQVRFICJlbl9VUyIgfiogJ0tJJyBB UyAidHJ1ZSI7CiAgdHJ1ZSAKIC0tLS0tLQpAQCAtOTgwLDYgKzEwMTQsOCBA QCBFUlJPUjogIHBhcmFtZXRlciAibGNfY3R5cGUiIG11c3QgYmUgc3BlY2lm aWVkCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChsb2NhbGUgPSAnbm9uc2Vu c2UnKTsgLS0gZmFpbAogRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIGxvY2Fs ZSAibm9uc2Vuc2UiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CiBERVRB SUw6ICBUaGUgb3BlcmF0aW5nIHN5c3RlbSBjb3VsZCBub3QgZmluZCBhbnkg bG9jYWxlIGRhdGEgZm9yIHRoZSBsb2NhbGUgbmFtZSAibm9uc2Vuc2UiLgor Q1JFQVRFIENPTExBVElPTiB0ZXN0eSAobG9jYWxlID0gJ2VuX1VTLnV0Zjgn LCB2ZXJzaW9uID0gJ2ZvbycpOyAtLSBmYWlsLCBubyB2ZXJzaW9ucyBmb3Ig bGliYworRVJST1I6ICBjb2xsYXRpb24gInRlc3R5IiBoYXMgbm8gYWN0dWFs IHZlcnNpb24sIGJ1dCBhIHZlcnNpb24gd2FzIHNwZWNpZmllZAogQ1JFQVRF IENPTExBVElPTiB0ZXN0NCBGUk9NIG5vbnNlbnNlOwogRVJST1I6ICBjb2xs YXRpb24gIm5vbnNlbnNlIiBmb3IgZW5jb2RpbmcgIlVURjgiIGRvZXMgbm90 IGV4aXN0CiBDUkVBVEUgQ09MTEFUSU9OIHRlc3Q1IEZST00gdGVzdDA7CkBA IC05OTMsNyArMTAyOSw3IEBAIFNFTEVDVCBjb2xsbmFtZSBGUk9NIHBnX2Nv bGxhdGlvbiBXSEVSRSBjb2xsbmFtZSBMSUtFICd0ZXN0JScgT1JERVIgQlkg MTsKIAogQUxURVIgQ09MTEFUSU9OIHRlc3QxIFJFTkFNRSBUTyB0ZXN0MTE7 CiBBTFRFUiBDT0xMQVRJT04gdGVzdDAgUkVOQU1FIFRPIHRlc3QxMTsgLS0g ZmFpbAotRVJST1I6ICBjb2xsYXRpb24gInRlc3QxMSIgZm9yIGVuY29kaW5n ICJVVEY4IiBhbHJlYWR5IGV4aXN0cyBpbiBzY2hlbWEgInB1YmxpYyIKK0VS Uk9SOiAgY29sbGF0aW9uICJ0ZXN0MTEiIGZvciBlbmNvZGluZyAiVVRGOCIg YWxyZWFkeSBleGlzdHMgaW4gc2NoZW1hICJjb2xsYXRlX3Rlc3RzIgogQUxU RVIgQ09MTEFUSU9OIHRlc3QxIFJFTkFNRSBUTyB0ZXN0MjI7IC0tIGZhaWwK IEVSUk9SOiAgY29sbGF0aW9uICJ0ZXN0MSIgZm9yIGVuY29kaW5nICJVVEY4 IiBkb2VzIG5vdCBleGlzdAogQUxURVIgQ09MTEFUSU9OIHRlc3QxMSBPV05F UiBUTyByZWdyZXNzX3Rlc3Rfcm9sZTsKQEAgLTEwMDUsMTEgKzEwNDEsMTEg QEAgU0VMRUNUIGNvbGxuYW1lLCBuc3BuYW1lLCBvYmpfZGVzY3JpcHRpb24o cGdfY29sbGF0aW9uLm9pZCwgJ3BnX2NvbGxhdGlvbicpCiAgICAgRlJPTSBw Z19jb2xsYXRpb24gSk9JTiBwZ19uYW1lc3BhY2UgT04gKGNvbGxuYW1lc3Bh Y2UgPSBwZ19uYW1lc3BhY2Uub2lkKQogICAgIFdIRVJFIGNvbGxuYW1lIExJ S0UgJ3Rlc3QlJwogICAgIE9SREVSIEJZIDE7Ci0gY29sbG5hbWUgfCAgIG5z cG5hbWUgICB8IG9ial9kZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQotIHRlc3QwICAgIHwgcHVibGlj ICAgICAgfCBVUyBFbmdsaXNoCi0gdGVzdDExICAgfCB0ZXN0X3NjaGVtYSB8 IAotIHRlc3Q1ICAgIHwgcHVibGljICAgICAgfCAKKyBjb2xsbmFtZSB8ICAg IG5zcG5hbWUgICAgfCBvYmpfZGVzY3JpcHRpb24gCistLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHRlc3QwICAgIHwg Y29sbGF0ZV90ZXN0cyB8IFVTIEVuZ2xpc2gKKyB0ZXN0MTEgICB8IHRlc3Rf c2NoZW1hICAgfCAKKyB0ZXN0NSAgICB8IGNvbGxhdGVfdGVzdHMgfCAKICgz IHJvd3MpCiAKIERST1AgQ09MTEFUSU9OIHRlc3QwLCB0ZXN0X3NjaGVtYS50 ZXN0MTEsIHRlc3Q1OwpAQCAtMTAyNCw2ICsxMDYwLDkgQEAgU0VMRUNUIGNv bGxuYW1lIEZST00gcGdfY29sbGF0aW9uIFdIRVJFIGNvbGxuYW1lIExJS0Ug J3Rlc3QlJzsKIAogRFJPUCBTQ0hFTUEgdGVzdF9zY2hlbWE7CiBEUk9QIFJP TEUgcmVncmVzc190ZXN0X3JvbGU7CistLSBBTFRFUgorQUxURVIgQ09MTEFU SU9OICJlbl9VUyIgUkVGUkVTSCBWRVJTSU9OOworTk9USUNFOiAgdmVyc2lv biBoYXMgbm90IGNoYW5nZWQKIC0tIGRlcGVuZGVuY2llcwogQ1JFQVRFIENP TExBVElPTiB0ZXN0MCBGUk9NICJDIjsKIENSRUFURSBUQUJMRSBjb2xsYXRl X2RlcF90ZXN0MSAoYSBpbnQsIGIgdGV4dCBDT0xMQVRFIHRlc3QwKTsKQEAg LTEwNDgsMTMgKzEwODcsMTMgQEAgZHJvcCBjYXNjYWRlcyB0byBjb21wb3Np dGUgdHlwZSBjb2xsYXRlX2RlcF90ZXN0MiBjb2x1bW4geQogZHJvcCBjYXNj YWRlcyB0byB2aWV3IGNvbGxhdGVfZGVwX3Rlc3QzCiBkcm9wIGNhc2NhZGVz IHRvIGluZGV4IGNvbGxhdGVfZGVwX3Rlc3Q0aQogXGQgY29sbGF0ZV9kZXBf dGVzdDEKLSAgICAgICAgIFRhYmxlICJwdWJsaWMuY29sbGF0ZV9kZXBfdGVz dDEiCisgICAgICBUYWJsZSAiY29sbGF0ZV90ZXN0cy5jb2xsYXRlX2RlcF90 ZXN0MSIKICBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCBEZWZhdWx0IAogLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCiAgYSAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCiAKIFxkIGNvbGxhdGVfZGVwX3Rlc3Qy Ci0gICAgIENvbXBvc2l0ZSB0eXBlICJwdWJsaWMuY29sbGF0ZV9kZXBfdGVz dDIiCisgQ29tcG9zaXRlIHR5cGUgImNvbGxhdGVfdGVzdHMuY29sbGF0ZV9k ZXBfdGVzdDIiCiAgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgRGVmYXVsdCAKIC0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQogIHggICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IApAQCAtMTA3OCwzICsxMTE3LDI0 IEBAIHNlbGVjdCB0ZXh0cmFuZ2VfZW5fdXMoJ0EnLCdaJykgQD4gJ2InOjp0 ZXh0OwogCiBkcm9wIHR5cGUgdGV4dHJhbmdlX2M7CiBkcm9wIHR5cGUgdGV4 dHJhbmdlX2VuX3VzOworLS0gY2xlYW51cAorRFJPUCBTQ0hFTUEgY29sbGF0 ZV90ZXN0cyBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAx OCBvdGhlciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRh YmxlIGNvbGxhdGVfdGVzdDEKK2Ryb3AgY2FzY2FkZXMgdG8gdGFibGUgY29s bGF0ZV90ZXN0X2xpa2UKK2Ryb3AgY2FzY2FkZXMgdG8gdGFibGUgY29sbGF0 ZV90ZXN0MgorZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBjb2xsYXRlX3Rlc3Qz Citkcm9wIGNhc2NhZGVzIHRvIHR5cGUgdGVzdGRvbWFpbl9zdgorZHJvcCBj YXNjYWRlcyB0byB0YWJsZSBjb2xsYXRlX3Rlc3Q0Citkcm9wIGNhc2NhZGVz IHRvIHRhYmxlIGNvbGxhdGVfdGVzdDUKK2Ryb3AgY2FzY2FkZXMgdG8gdGFi bGUgY29sbGF0ZV90ZXN0MTAKK2Ryb3AgY2FzY2FkZXMgdG8gdGFibGUgY29s bGF0ZV90ZXN0NgorZHJvcCBjYXNjYWRlcyB0byB2aWV3IGNvbGx2aWV3MQor ZHJvcCBjYXNjYWRlcyB0byB2aWV3IGNvbGx2aWV3MgorZHJvcCBjYXNjYWRl cyB0byB2aWV3IGNvbGx2aWV3MworZHJvcCBjYXNjYWRlcyB0byB0eXBlIHRl c3Rkb21haW4KK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gbXlsdCh0ZXh0 LHRleHQpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIG15bHRfbm9uaW5s aW5lKHRleHQsdGV4dCkKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gbXls dF9wbHBnc3FsKHRleHQsdGV4dCkKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rp b24gbXlsdDIodGV4dCx0ZXh0KQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlv biBkdXAoYW55ZWxlbWVudCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvbGxhdGUubGludXgudXRmOC5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb2xsYXRlLmljdS5zcWwKc2ltaWxhcml0eSBpbmRleCA4MCUK Y29weSBmcm9tIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUubGludXgu dXRmOC5zcWwKY29weSB0byBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRl LmljdS5zcWwKaW5kZXggYzM0OWNiZGUyYi4uZWYzOTQ0NWIzMCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5saW51eC51dGY4 LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmljdS5z cWwKQEAgLTEsMzEgKzEsMzIgQEAKIC8qCi0gKiBUaGlzIHRlc3QgaXMgZm9y IExpbnV4L2dsaWJjIHN5c3RlbXMgYW5kIGFzc3VtZXMgdGhhdCBhIGZ1bGwg c2V0IG9mCi0gKiBsb2NhbGVzIGlzIGluc3RhbGxlZC4gIEl0IG11c3QgYmUg cnVuIGluIGEgZGF0YWJhc2Ugd2l0aCBVVEYtOCBlbmNvZGluZywKLSAqIGJl Y2F1c2Ugb3RoZXIgZW5jb2RpbmdzIGRvbid0IHN1cHBvcnQgYWxsIHRoZSBj aGFyYWN0ZXJzIHVzZWQuCisgKiBUaGlzIHRlc3QgaXMgZm9yIElDVSBjb2xs YXRpb25zLgogICovCiAKIFNFVCBjbGllbnRfZW5jb2RpbmcgVE8gVVRGODsK IAorQ1JFQVRFIFNDSEVNQSBjb2xsYXRlX3Rlc3RzOworU0VUIHNlYXJjaF9w YXRoID0gY29sbGF0ZV90ZXN0czsKKwogCiBDUkVBVEUgVEFCTEUgY29sbGF0 ZV90ZXN0MSAoCiAgICAgYSBpbnQsCi0gICAgYiB0ZXh0IENPTExBVEUgImVu X1VTIiBOT1QgTlVMTAorICAgIGIgdGV4dCBDT0xMQVRFICJlbi14LWljdSIg Tk9UIE5VTEwKICk7CiAKIFxkIGNvbGxhdGVfdGVzdDEKIAogQ1JFQVRFIFRB QkxFIGNvbGxhdGVfdGVzdF9mYWlsICgKICAgICBhIGludCwKLSAgICBiIHRl eHQgQ09MTEFURSAiamFfSlAuZXVjanAiCisgICAgYiB0ZXh0IENPTExBVEUg ImphX0pQLmV1Y2pwLXgtaWN1IgogKTsKIAogQ1JFQVRFIFRBQkxFIGNvbGxh dGVfdGVzdF9mYWlsICgKICAgICBhIGludCwKLSAgICBiIHRleHQgQ09MTEFU RSAiZm9vIgorICAgIGIgdGV4dCBDT0xMQVRFICJmb28teC1pY3UiCiApOwog CiBDUkVBVEUgVEFCTEUgY29sbGF0ZV90ZXN0X2ZhaWwgKAotICAgIGEgaW50 IENPTExBVEUgImVuX1VTIiwKKyAgICBhIGludCBDT0xMQVRFICJlbi14LWlj dSIsCiAgICAgYiB0ZXh0CiApOwogCkBAIC0zNyw3ICszOCw3IEBAIENSRUFU RSBUQUJMRSBjb2xsYXRlX3Rlc3RfbGlrZSAoCiAKIENSRUFURSBUQUJMRSBj b2xsYXRlX3Rlc3QyICgKICAgICBhIGludCwKLSAgICBiIHRleHQgQ09MTEFU RSAic3ZfU0UiCisgICAgYiB0ZXh0IENPTExBVEUgInN2LXgtaWN1IgogKTsK IAogQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDMgKApAQCAtNTcsMTEgKzU4 LDExIEBAIENSRUFURSBUQUJMRSBjb2xsYXRlX3Rlc3QzICgKIFNFTEVDVCAq IEZST00gY29sbGF0ZV90ZXN0MSBXSEVSRSBiIENPTExBVEUgIkMiID49ICdi YmMnOwogU0VMRUNUICogRlJPTSBjb2xsYXRlX3Rlc3QxIFdIRVJFIGIgPj0g J2JiYycgQ09MTEFURSAiQyI7CiBTRUxFQ1QgKiBGUk9NIGNvbGxhdGVfdGVz dDEgV0hFUkUgYiBDT0xMQVRFICJDIiA+PSAnYmJjJyBDT0xMQVRFICJDIjsK LVNFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MSBXSEVSRSBiIENPTExBVEUg IkMiID49ICdiYmMnIENPTExBVEUgImVuX1VTIjsKK1NFTEVDVCAqIEZST00g Y29sbGF0ZV90ZXN0MSBXSEVSRSBiIENPTExBVEUgIkMiID49ICdiYmMnIENP TExBVEUgImVuLXgtaWN1IjsKIAogCi1DUkVBVEUgRE9NQUlOIHRlc3Rkb21h aW5fc3YgQVMgdGV4dCBDT0xMQVRFICJzdl9TRSI7Ci1DUkVBVEUgRE9NQUlO IHRlc3Rkb21haW5faSBBUyBpbnQgQ09MTEFURSAic3ZfU0UiOyAtLSBmYWls cworQ1JFQVRFIERPTUFJTiB0ZXN0ZG9tYWluX3N2IEFTIHRleHQgQ09MTEFU RSAic3YteC1pY3UiOworQ1JFQVRFIERPTUFJTiB0ZXN0ZG9tYWluX2kgQVMg aW50IENPTExBVEUgInN2LXgtaWN1IjsgLS0gZmFpbHMKIENSRUFURSBUQUJM RSBjb2xsYXRlX3Rlc3Q0ICgKICAgICBhIGludCwKICAgICBiIHRlc3Rkb21h aW5fc3YKQEAgLTcxLDcgKzcyLDcgQEAgQ1JFQVRFIFRBQkxFIGNvbGxhdGVf dGVzdDQgKAogCiBDUkVBVEUgVEFCTEUgY29sbGF0ZV90ZXN0NSAoCiAgICAg YSBpbnQsCi0gICAgYiB0ZXN0ZG9tYWluX3N2IENPTExBVEUgImVuX1VTIgor ICAgIGIgdGVzdGRvbWFpbl9zdiBDT0xMQVRFICJlbi14LWljdSIKICk7CiBJ TlNFUlQgSU5UTyBjb2xsYXRlX3Rlc3Q1IFNFTEVDVCAqIEZST00gY29sbGF0 ZV90ZXN0MTsKIFNFTEVDVCBhLCBiIEZST00gY29sbGF0ZV90ZXN0NSBPUkRF UiBCWSBiOwpAQCAtODksMTUgKzkwLDE1IEBAIENSRUFURSBUQUJMRSBjb2xs YXRlX3Rlc3Q1ICgKIFNFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MyBPUkRF UiBCWSBiOwogCiAtLSBjb25zdGFudCBleHByZXNzaW9uIGZvbGRpbmcKLVNF TEVDVCAnYmJjJyBDT0xMQVRFICJlbl9VUyIgPiAnw6RiYycgQ09MTEFURSAi ZW5fVVMiIEFTICJ0cnVlIjsKLVNFTEVDVCAnYmJjJyBDT0xMQVRFICJzdl9T RSIgPiAnw6RiYycgQ09MTEFURSAic3ZfU0UiIEFTICJmYWxzZSI7CitTRUxF Q1QgJ2JiYycgQ09MTEFURSAiZW4teC1pY3UiID4gJ8OkYmMnIENPTExBVEUg ImVuLXgtaWN1IiBBUyAidHJ1ZSI7CitTRUxFQ1QgJ2JiYycgQ09MTEFURSAi c3YteC1pY3UiID4gJ8OkYmMnIENPTExBVEUgInN2LXgtaWN1IiBBUyAiZmFs c2UiOwogCiAtLSB1cHBlci9sb3dlcgogCiBDUkVBVEUgVEFCTEUgY29sbGF0 ZV90ZXN0MTAgKAogICAgIGEgaW50LAotICAgIHggdGV4dCBDT0xMQVRFICJl bl9VUyIsCi0gICAgeSB0ZXh0IENPTExBVEUgInRyX1RSIgorICAgIHggdGV4 dCBDT0xMQVRFICJlbi14LWljdSIsCisgICAgeSB0ZXh0IENPTExBVEUgInRy LXgtaWN1IgogKTsKIAogSU5TRVJUIElOVE8gY29sbGF0ZV90ZXN0MTAgVkFM VUVTICgxLCAnaGlqJywgJ2hpaicpLCAoMiwgJ0hJSicsICdISUonKTsKQEAg LTExNiwxMSArMTE3LDExIEBAIENSRUFURSBUQUJMRSBjb2xsYXRlX3Rlc3Qx MCAoCiBTRUxFQ1QgKiBGUk9NIGNvbGxhdGVfdGVzdDEgV0hFUkUgYiBJTElL RSAnYWJjJSc7CiBTRUxFQ1QgKiBGUk9NIGNvbGxhdGVfdGVzdDEgV0hFUkUg YiBJTElLRSAnJWJjJSc7CiAKLVNFTEVDVCAnVMO8cmtpeWUnIENPTExBVEUg ImVuX1VTIiBJTElLRSAnJUtJJScgQVMgInRydWUiOwotU0VMRUNUICdUw7xy a2l5ZScgQ09MTEFURSAidHJfVFIiIElMSUtFICclS0klJyBBUyAiZmFsc2Ui OworU0VMRUNUICdUw7xya2l5ZScgQ09MTEFURSAiZW4teC1pY3UiIElMSUtF ICclS0klJyBBUyAidHJ1ZSI7CitTRUxFQ1QgJ1TDvHJraXllJyBDT0xMQVRF ICJ0ci14LWljdSIgSUxJS0UgJyVLSSUnIEFTICJmYWxzZSI7CiAKLVNFTEVD VCAnYsSxdCcgSUxJS0UgJ0JJVCcgQ09MTEFURSAiZW5fVVMiIEFTICJmYWxz ZSI7Ci1TRUxFQ1QgJ2LEsXQnIElMSUtFICdCSVQnIENPTExBVEUgInRyX1RS IiBBUyAidHJ1ZSI7CitTRUxFQ1QgJ2LEsXQnIElMSUtFICdCSVQnIENPTExB VEUgImVuLXgtaWN1IiBBUyAiZmFsc2UiOworU0VMRUNUICdixLF0JyBJTElL RSAnQklUJyBDT0xMQVRFICJ0ci14LWljdSIgQVMgInRydWUiOwogCiAtLSBU aGUgZm9sbG93aW5nIGFjdHVhbGx5IGV4ZXJjaXNlcyB0aGUgc2VsZWN0aXZp dHkgZXN0aW1hdGlvbiBmb3IgSUxJS0UuCiBTRUxFQ1QgcmVsbmFtZSBGUk9N IHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgSUxJS0UgJ2FiYyUnOwpAQCAtMTM0 LDIxICsxMzUsNDIgQEAgQ1JFQVRFIFRBQkxFIGNvbGxhdGVfdGVzdDEwICgK IFNFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MSBXSEVSRSBiIH4qICdeYWJj JzsKIFNFTEVDVCAqIEZST00gY29sbGF0ZV90ZXN0MSBXSEVSRSBiIH4qICdi Yyc7CiAKLVNFTEVDVCAnVMO8cmtpeWUnIENPTExBVEUgImVuX1VTIiB+KiAn S0knIEFTICJ0cnVlIjsKLVNFTEVDVCAnVMO8cmtpeWUnIENPTExBVEUgInRy X1RSIiB+KiAnS0knIEFTICJmYWxzZSI7Ci0KLVNFTEVDVCAnYsSxdCcgfiog J0JJVCcgQ09MTEFURSAiZW5fVVMiIEFTICJmYWxzZSI7Ci1TRUxFQ1QgJ2LE sXQnIH4qICdCSVQnIENPTExBVEUgInRyX1RSIiBBUyAidHJ1ZSI7CitDUkVB VEUgVEFCTEUgY29sbGF0ZV90ZXN0NiAoCisgICAgYSBpbnQsCisgICAgYiB0 ZXh0IENPTExBVEUgImVuLXgtaWN1IgorKTsKK0lOU0VSVCBJTlRPIGNvbGxh dGVfdGVzdDYgVkFMVUVTICgxLCAnYWJjJyksICgyLCAnQUJDJyksICgzLCAn MTIzJyksICg0LCAnYWIxJyksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoNSwgJ2ExIScpLCAoNiwgJ2EgYycpLCAoNywgJyEuOycpLCAo OCwgJyAgICcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KDksICfDpGLDpycpLCAoMTAsICfDhELDhycpOworU0VMRUNUIGIsCisgICAg ICAgYiB+ICdeW1s6YWxwaGE6XV0rJCcgQVMgaXNfYWxwaGEsCisgICAgICAg YiB+ICdeW1s6dXBwZXI6XV0rJCcgQVMgaXNfdXBwZXIsCisgICAgICAgYiB+ ICdeW1s6bG93ZXI6XV0rJCcgQVMgaXNfbG93ZXIsCisgICAgICAgYiB+ICde W1s6ZGlnaXQ6XV0rJCcgQVMgaXNfZGlnaXQsCisgICAgICAgYiB+ICdeW1s6 YWxudW06XV0rJCcgQVMgaXNfYWxudW0sCisgICAgICAgYiB+ICdeW1s6Z3Jh cGg6XV0rJCcgQVMgaXNfZ3JhcGgsCisgICAgICAgYiB+ICdeW1s6cHJpbnQ6 XV0rJCcgQVMgaXNfcHJpbnQsCisgICAgICAgYiB+ICdeW1s6cHVuY3Q6XV0r JCcgQVMgaXNfcHVuY3QsCisgICAgICAgYiB+ICdeW1s6c3BhY2U6XV0rJCcg QVMgaXNfc3BhY2UKK0ZST00gY29sbGF0ZV90ZXN0NjsKKworU0VMRUNUICdU w7xya2l5ZScgQ09MTEFURSAiZW4teC1pY3UiIH4qICdLSScgQVMgInRydWUi OworU0VMRUNUICdUw7xya2l5ZScgQ09MTEFURSAidHIteC1pY3UiIH4qICdL SScgQVMgInRydWUiOyAgLS0gdHJ1ZSB3aXRoIElDVQorCitTRUxFQ1QgJ2LE sXQnIH4qICdCSVQnIENPTExBVEUgImVuLXgtaWN1IiBBUyAiZmFsc2UiOwor U0VMRUNUICdixLF0JyB+KiAnQklUJyBDT0xMQVRFICJ0ci14LWljdSIgQVMg ImZhbHNlIjsgIC0tIGZhbHNlIHdpdGggSUNVCiAKIC0tIFRoZSBmb2xsb3dp bmcgYWN0dWFsbHkgZXhlcmNpc2VzIHRoZSBzZWxlY3Rpdml0eSBlc3RpbWF0 aW9uIGZvciB+Ki4KIFNFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MgV0hF UkUgcmVsbmFtZSB+KiAnXmFiYyc7CiAKIAorLyogbm90IHJ1biBieSBkZWZh dWx0IGJlY2F1c2UgaXQgcmVxdWlyZXMgdHJfVFIgc3lzdGVtIGxvY2FsZQog LS0gdG9fY2hhcgogCiBTRVQgbGNfdGltZSBUTyAndHJfVFInOwogU0VMRUNU IHRvX2NoYXIoZGF0ZSAnMjAxMC0wNC0wMScsICdERCBUTU1PTiBZWVlZJyk7 Ci1TRUxFQ1QgdG9fY2hhcihkYXRlICcyMDEwLTA0LTAxJywgJ0REIFRNTU9O IFlZWVknIENPTExBVEUgInRyX1RSIik7CitTRUxFQ1QgdG9fY2hhcihkYXRl ICcyMDEwLTA0LTAxJywgJ0REIFRNTU9OIFlZWVknIENPTExBVEUgInRyLXgt aWN1Iik7CisqLwogCiAKIC0tIGJhY2t3YXJkcyBwYXJzaW5nCkBAIC0yMTgs OSArMjQwLDkgQEAgQ1JFQVRFIFRBQkxFIHRlc3RfdSBBUyBTRUxFQ1QgYSwg YiBGUk9NIGNvbGxhdGVfdGVzdDEgVU5JT04gQUxMIFNFTEVDVCBhLCBiIEZS T00KIAogLS0gY29sbGF0aW9uIG1pc21hdGNoIGJldHdlZW4gcmVjdXJzaXZl IGFuZCBub24tcmVjdXJzaXZlIHRlcm0KIFdJVEggUkVDVVJTSVZFIGZvbyh4 KSBBUwotICAgKFNFTEVDVCB4IEZST00gKFZBTFVFUygnYScgQ09MTEFURSAi ZW5fVVMiKSwoJ2InKSkgdCh4KQorICAgKFNFTEVDVCB4IEZST00gKFZBTFVF UygnYScgQ09MTEFURSAiZW4teC1pY3UiKSwoJ2InKSkgdCh4KQogICAgVU5J T04gQUxMCi0gICBTRUxFQ1QgKHggfHwgJ2MnKSBDT0xMQVRFICJkZV9ERSIg RlJPTSBmb28gV0hFUkUgbGVuZ3RoKHgpIDwgMTApCisgICBTRUxFQ1QgKHgg fHwgJ2MnKSBDT0xMQVRFICJkZS14LWljdSIgRlJPTSBmb28gV0hFUkUgbGVu Z3RoKHgpIDwgMTApCiBTRUxFQ1QgKiBGUk9NIGZvbzsKIAogCkBAIC0yNjgs NyArMjkwLDcgQEAgQ1JFQVRFIEZVTkNUSU9OIG15bHQyICh4IHRleHQsIHkg dGV4dCkgUkVUVVJOUyBib29sZWFuIExBTkdVQUdFIHBscGdzcWwgQVMgJCQK IGVuZAogJCQ7CiAKLVNFTEVDVCBteWx0MignYScsICdCJyBjb2xsYXRlICJl bl9VUyIpIGFzIHQsIG15bHQyKCdhJywgJ0InIGNvbGxhdGUgIkMiKSBhcyBm OworU0VMRUNUIG15bHQyKCdhJywgJ0InIGNvbGxhdGUgImVuLXgtaWN1Iikg YXMgdCwgbXlsdDIoJ2EnLCAnQicgY29sbGF0ZSAiQyIpIGFzIGY7CiAKIENS RUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OCiAgIG15bHQyICh4IHRleHQsIHkg dGV4dCkgUkVUVVJOUyBib29sZWFuIExBTkdVQUdFIHBscGdzcWwgQVMgJCQK QEAgLTMyMCwyMyArMzQyLDIxIEBAIENSRUFURSBTQ0hFTUEgdGVzdF9zY2hl bWE7CiAtLSBXZSBuZWVkIHRvIGRvIHRoaXMgdGhpcyB3YXkgdG8gY29wZSB3 aXRoIHZhcnlpbmcgbmFtZXMgZm9yIGVuY29kaW5nczoKIGRvICQkCiBCRUdJ TgotICBFWEVDVVRFICdDUkVBVEUgQ09MTEFUSU9OIHRlc3QwIChsb2NhbGUg PSAnIHx8CisgIEVYRUNVVEUgJ0NSRUFURSBDT0xMQVRJT04gdGVzdDAgKHBy b3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnIHx8CiAgICAgICAgICAgcXVvdGVf bGl0ZXJhbChjdXJyZW50X3NldHRpbmcoJ2xjX2NvbGxhdGUnKSkgfHwgJyk7 JzsKIEVORAogJCQ7CiBDUkVBVEUgQ09MTEFUSU9OIHRlc3QwIEZST00gIkMi OyAtLSBmYWlsLCBkdXBsaWNhdGUgbmFtZQotQ1JFQVRFIENPTExBVElPTiBJ RiBOT1QgRVhJU1RTIHRlc3QwIEZST00gIkMiOyAtLSBvaywgc2tpcHBlZAot Q1JFQVRFIENPTExBVElPTiBJRiBOT1QgRVhJU1RTIHRlc3QwIChsb2NhbGUg PSAnZm9vJyk7IC0tIG9rLCBza2lwcGVkCiBkbyAkJAogQkVHSU4KLSAgRVhF Q1VURSAnQ1JFQVRFIENPTExBVElPTiB0ZXN0MSAobGNfY29sbGF0ZSA9ICcg fHwKKyAgRVhFQ1VURSAnQ1JFQVRFIENPTExBVElPTiB0ZXN0MSAocHJvdmlk ZXIgPSBpY3UsIGxjX2NvbGxhdGUgPSAnIHx8CiAgICAgICAgICAgcXVvdGVf bGl0ZXJhbChjdXJyZW50X3NldHRpbmcoJ2xjX2NvbGxhdGUnKSkgfHwKICAg ICAgICAgICAnLCBsY19jdHlwZSA9ICcgfHwKICAgICAgICAgICBxdW90ZV9s aXRlcmFsKGN1cnJlbnRfc2V0dGluZygnbGNfY3R5cGUnKSkgfHwgJyk7JzsK IEVORAogJCQ7Ci1DUkVBVEUgQ09MTEFUSU9OIHRlc3QzIChsY19jb2xsYXRl ID0gJ2VuX1VTLnV0ZjgnKTsgLS0gZmFpbCwgbmVlZCBsY19jdHlwZQotQ1JF QVRFIENPTExBVElPTiB0ZXN0eCAobG9jYWxlID0gJ25vbnNlbnNlJyk7IC0t IGZhaWwKK0NSRUFURSBDT0xMQVRJT04gdGVzdDMgKHByb3ZpZGVyID0gaWN1 LCBsY19jb2xsYXRlID0gJ2VuX1VTLnV0ZjgnKTsgLS0gZmFpbCwgbmVlZCBs Y19jdHlwZQorQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBp Y3UsIGxvY2FsZSA9ICdub25zZW5zZScpOyAvKiBuZXZlciBmYWlscyB3aXRo IElDVSAqLyAgRFJPUCBDT0xMQVRJT04gdGVzdHg7CiAKIENSRUFURSBDT0xM QVRJT04gdGVzdDQgRlJPTSBub25zZW5zZTsKIENSRUFURSBDT0xMQVRJT04g dGVzdDUgRlJPTSB0ZXN0MDsKQEAgLTM2OCw2ICszODgsMTEgQEAgQ1JFQVRF IENPTExBVElPTiB0ZXN0NSBGUk9NIHRlc3QwOwogRFJPUCBST0xFIHJlZ3Jl c3NfdGVzdF9yb2xlOwogCiAKKy0tIEFMVEVSCisKK0FMVEVSIENPTExBVElP TiAiZW4teC1pY3UiIFJFRlJFU0ggVkVSU0lPTjsKKworCiAtLSBkZXBlbmRl bmNpZXMKIAogQ1JFQVRFIENPTExBVElPTiB0ZXN0MCBGUk9NICJDIjsKQEAg LTM5MSwxMCArNDE2LDE4IEBAIENSRUFURSBJTkRFWCBjb2xsYXRlX2RlcF90 ZXN0NGkgT04gY29sbGF0ZV9kZXBfdGVzdDR0IChiIENPTExBVEUgdGVzdDAp OwogLS0gdGVzdCByYW5nZSB0eXBlcyBhbmQgY29sbGF0aW9ucwogCiBjcmVh dGUgdHlwZSB0ZXh0cmFuZ2VfYyBhcyByYW5nZShzdWJ0eXBlPXRleHQsIGNv bGxhdGlvbj0iQyIpOwotY3JlYXRlIHR5cGUgdGV4dHJhbmdlX2VuX3VzIGFz IHJhbmdlKHN1YnR5cGU9dGV4dCwgY29sbGF0aW9uPSJlbl9VUyIpOworY3Jl YXRlIHR5cGUgdGV4dHJhbmdlX2VuX3VzIGFzIHJhbmdlKHN1YnR5cGU9dGV4 dCwgY29sbGF0aW9uPSJlbi14LWljdSIpOwogCiBzZWxlY3QgdGV4dHJhbmdl X2MoJ0EnLCdaJykgQD4gJ2InOjp0ZXh0Owogc2VsZWN0IHRleHRyYW5nZV9l bl91cygnQScsJ1onKSBAPiAnYic6OnRleHQ7CiAKIGRyb3AgdHlwZSB0ZXh0 cmFuZ2VfYzsKIGRyb3AgdHlwZSB0ZXh0cmFuZ2VfZW5fdXM7CisKKworLS0g Y2xlYW51cAorRFJPUCBTQ0hFTUEgY29sbGF0ZV90ZXN0cyBDQVNDQURFOwor UkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tIGxlYXZlIGEgY29sbGF0aW9uIGZv ciBwZ191cGdyYWRlIHRlc3QKK0NSRUFURSBDT0xMQVRJT04gY29sbF9pY3Vf dXBncmFkZSBGUk9NICJ1bmQteC1pY3UiOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY29sbGF0ZS5saW51eC51dGY4LnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUubGludXgudXRmOC5zcWwKaW5kZXgg YzM0OWNiZGUyYi4uYjUxMTYyZTNhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29sbGF0ZS5saW51eC51dGY4LnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmxpbnV4LnV0Zjguc3FsCkBAIC02 LDYgKzYsOSBAQAogCiBTRVQgY2xpZW50X2VuY29kaW5nIFRPIFVURjg7CiAK K0NSRUFURSBTQ0hFTUEgY29sbGF0ZV90ZXN0czsKK1NFVCBzZWFyY2hfcGF0 aCA9IGNvbGxhdGVfdGVzdHM7CisKIAogQ1JFQVRFIFRBQkxFIGNvbGxhdGVf dGVzdDEgKAogICAgIGEgaW50LApAQCAtMTM0LDYgKzEzNywyNSBAQCBDUkVB VEUgVEFCTEUgY29sbGF0ZV90ZXN0MTAgKAogU0VMRUNUICogRlJPTSBjb2xs YXRlX3Rlc3QxIFdIRVJFIGIgfiogJ15hYmMnOwogU0VMRUNUICogRlJPTSBj b2xsYXRlX3Rlc3QxIFdIRVJFIGIgfiogJ2JjJzsKIAorQ1JFQVRFIFRBQkxF IGNvbGxhdGVfdGVzdDYgKAorICAgIGEgaW50LAorICAgIGIgdGV4dCBDT0xM QVRFICJlbl9VUyIKKyk7CitJTlNFUlQgSU5UTyBjb2xsYXRlX3Rlc3Q2IFZB TFVFUyAoMSwgJ2FiYycpLCAoMiwgJ0FCQycpLCAoMywgJzEyMycpLCAoNCwg J2FiMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDUs ICdhMSEnKSwgKDYsICdhIGMnKSwgKDcsICchLjsnKSwgKDgsICcgICAnKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg5LCAnw6Riw6cn KSwgKDEwLCAnw4RCw4cnKTsKK1NFTEVDVCBiLAorICAgICAgIGIgfiAnXltb OmFscGhhOl1dKyQnIEFTIGlzX2FscGhhLAorICAgICAgIGIgfiAnXltbOnVw cGVyOl1dKyQnIEFTIGlzX3VwcGVyLAorICAgICAgIGIgfiAnXltbOmxvd2Vy Ol1dKyQnIEFTIGlzX2xvd2VyLAorICAgICAgIGIgfiAnXltbOmRpZ2l0Ol1d KyQnIEFTIGlzX2RpZ2l0LAorICAgICAgIGIgfiAnXltbOmFsbnVtOl1dKyQn IEFTIGlzX2FsbnVtLAorICAgICAgIGIgfiAnXltbOmdyYXBoOl1dKyQnIEFT IGlzX2dyYXBoLAorICAgICAgIGIgfiAnXltbOnByaW50Ol1dKyQnIEFTIGlz X3ByaW50LAorICAgICAgIGIgfiAnXltbOnB1bmN0Ol1dKyQnIEFTIGlzX3B1 bmN0LAorICAgICAgIGIgfiAnXltbOnNwYWNlOl1dKyQnIEFTIGlzX3NwYWNl CitGUk9NIGNvbGxhdGVfdGVzdDY7CisKIFNFTEVDVCAnVMO8cmtpeWUnIENP TExBVEUgImVuX1VTIiB+KiAnS0knIEFTICJ0cnVlIjsKIFNFTEVDVCAnVMO8 cmtpeWUnIENPTExBVEUgInRyX1RSIiB+KiAnS0knIEFTICJmYWxzZSI7CiAK QEAgLTMzNyw2ICszNTksNyBAQCBDUkVBVEUgQ09MTEFUSU9OIElGIE5PVCBF WElTVFMgdGVzdDAgKGxvY2FsZSA9ICdmb28nKTsgLS0gb2ssIHNraXBwZWQK ICQkOwogQ1JFQVRFIENPTExBVElPTiB0ZXN0MyAobGNfY29sbGF0ZSA9ICdl bl9VUy51dGY4Jyk7IC0tIGZhaWwsIG5lZWQgbGNfY3R5cGUKIENSRUFURSBD T0xMQVRJT04gdGVzdHggKGxvY2FsZSA9ICdub25zZW5zZScpOyAtLSBmYWls CitDUkVBVEUgQ09MTEFUSU9OIHRlc3R5IChsb2NhbGUgPSAnZW5fVVMudXRm OCcsIHZlcnNpb24gPSAnZm9vJyk7IC0tIGZhaWwsIG5vIHZlcnNpb25zIGZv ciBsaWJjCiAKIENSRUFURSBDT0xMQVRJT04gdGVzdDQgRlJPTSBub25zZW5z ZTsKIENSRUFURSBDT0xMQVRJT04gdGVzdDUgRlJPTSB0ZXN0MDsKQEAgLTM2 OCw2ICszOTEsMTEgQEAgQ1JFQVRFIENPTExBVElPTiB0ZXN0NSBGUk9NIHRl c3QwOwogRFJPUCBST0xFIHJlZ3Jlc3NfdGVzdF9yb2xlOwogCiAKKy0tIEFM VEVSCisKK0FMVEVSIENPTExBVElPTiAiZW5fVVMiIFJFRlJFU0ggVkVSU0lP TjsKKworCiAtLSBkZXBlbmRlbmNpZXMKIAogQ1JFQVRFIENPTExBVElPTiB0 ZXN0MCBGUk9NICJDIjsKQEAgLTM5OCwzICs0MjYsNyBAQCBDUkVBVEUgSU5E RVggY29sbGF0ZV9kZXBfdGVzdDRpIE9OIGNvbGxhdGVfZGVwX3Rlc3Q0dCAo YiBDT0xMQVRFIHRlc3QwKTsKIAogZHJvcCB0eXBlIHRleHRyYW5nZV9jOwog ZHJvcCB0eXBlIHRleHRyYW5nZV9lbl91czsKKworCistLSBjbGVhbnVwCitE Uk9QIFNDSEVNQSBjb2xsYXRlX3Rlc3RzIENBU0NBREU7Ci0tIAoyLjEyLjAK Cg== --------------3A889A7CF9D8FDDFABCAE8BC Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------3A889A7CF9D8FDDFABCAE8BC--