Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ghsDl-0004O0-K4 for pgsql-hackers@arkaria.postgresql.org; Fri, 11 Jan 2019 08:31:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1ghsDj-0004QA-2H for pgsql-hackers@arkaria.postgresql.org; Fri, 11 Jan 2019 08:31:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ghsDh-0004Q2-9L for pgsql-hackers@lists.postgresql.org; Fri, 11 Jan 2019 08:31:14 +0000 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ghsDS-0000Rc-RE for pgsql-hackers@postgresql.org; Fri, 11 Jan 2019 08:31:11 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.west.internal (Postfix) with ESMTP id 612FD133F; Fri, 11 Jan 2019 03:30:56 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Fri, 11 Jan 2019 03:30:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=Tckvcv bnIV9rWCBqpbyg5eBpxAzQCKqU/6rl1b4qCrc=; b=oUVUDD3mB2j1r1nAwf2pbm 6e83NRA9URgsKBEq1P849LwMFrS5I4fIVV3hGn4M4esVsBqD5pQQIws+zCmeL9lt W/UCbDQ0VRfGZ167ibm2oIwk+H2f/g9+SwRZp009aw6SZx2rVUfE4+LUZVmoNi91 gECaaun9iXbo00Ba016tEbX9ar6xuHi5JqDjIkj73KvRuwmGFvzxnhHzzzZcvK4p lXwxlxJvGgM7gzjrieVKcoTVBnLivQWuZWHZT2x7Gk8X9fs07Ac1x7IKg1dTO4lF ALxviAAgvki0lI2HH4mefjaD/aJdHygSGIvII3ySfTzEPT/h0h/wmgh4rkMWNNQA == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedtledrfeeggdduvdduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfquhhtnecuuegrihhlohhuthemucef tddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefuhffvfhhokf fffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghu thcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomh eqnecuffhomhgrihhnpedvnhguqhhurggurhgrnhhtrdgtohhmnecukfhppeelfedrvdeg fedrudduledrvdefleenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghish gvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhmnecuvehluhhsthgvrhfuihii vgeptd X-ME-Proxy: Received: from april.pezone.net (p5df377ef.dip0.t-ipconnect.de [93.243.119.239]) by mail.messagingengine.com (Postfix) with ESMTPA id A765CE41AC; Fri, 11 Jan 2019 03:30:53 -0500 (EST) Subject: Re: [HACKERS] generated columns From: Peter Eisentraut To: pgsql-hackers References: <1bc948f8-3bab-6c54-50af-c0723a75b85f@2ndquadrant.com> <20180116063546.GA3679@paquier.xyz> <48502d9b-60c4-5b10-40a2-e34f562132b4@2ndquadrant.com> <20180119051804.GC12826@paquier.xyz> <2e3d5147-16f8-af0f-00ab-4c72cafc896f@2ndquadrant.com> <20180131131804.GB1586@paquier.xyz> <20180202022532.GA84623@paquier.xyz> <050e663d-d915-f61b-af96-5a09c10ade02@2ndquadrant.com> <79e4de23-52e3-2c45-9ba0-5f6932f590aa@2ndquadrant.com> <28574501540912440@iva5-750e13568e4d.qloud-c.yandex.net> <2ddd0bfa-0fcd-35ec-266c-f03cf72fc581@2ndquadrant.com> Cc: Sergei Kornilov , Michael Paquier , Jaime Casanova Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= xsFNBFUUt6kBEADZd9NNTBJbHmAXXJgPGOdd6Q73l80oifIVgn2tRxP9dYkCfTlo/yLqbKTl JNqTcyM6XrJDnB2sMEUGYCewYZXl+9C4bBJWyNqcEI1ae9u71vEq/fknFLArJ+2wN+f7QuRx Q8d94ZJAiJQ5g3fNk2HVeedCQCKP5dCzU+ZLt2dbsx1PDZLjTO9gf+JswWuGFb5wY5PZVM5V hq66Xk7ZJzHuARacza2RT7J2fkMmQBY+kr7L98Perb0GhafnlhXB0PvUB+N3xpmggMfwuhTu BngS/G/r3GvemxJuFxouw8xsMqrsfdksJXA2gLXYtwRCssdPV3PO0rlD9twqDo8URfIJ5fb6 1g/MV8aTOKjg3Q8MpJPtkwJqN4o3PvbwYdedeFnOVkkYAJdu/aX1v1BeCBDu7Hy3sF52scD3 pQbyQSl9vUDpTLarASAxNbAV0NRJE8dp4vfW6AH1ccryGiFqw/czPK/iN0+MT8wsjAW6WW4w hvjm5UPA1KTwi3ZT8eT5uycuH7QpuNk7LnGGXQ6KaRALFywzkr0A0V0AvFNa+l4wstMaXaB6 dmMXyF0/hfryqyOeu1gAdq4q0/PNC2dPgb/6uoh4eMjN6A5GXcprilhz5DulmsilY21hfSoU S64ODed96pKhprsOxjZiDRsN1QM5MwB+uwVWUNfsX7fIxE0BrwARAQABzSdQZXRlciBFaXNl bnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz7CwXoEEwEIACQCGwMFCwkIBwMFFQoJCAsF FgIDAQACHgECF4AFAlUUuKQCGQEACgkQoZ8SQ+xBJp8llw//RbGoXnF72FZTlOFsnNyxnWbF vViPCfdAlZl1GGK9OYCvV1dp/956HuhB0wpaGQHiBmQfOPJf/jLOPjXFYm2iEChEycrBChuE j4TSYemMp5BSPILYk9Uwd16kVD/+U6fQfK6H5pOhfBvbM6asMnmpY2wQuvktxHvaGlytFw84 EzFWNZtAZfxkw28w3AhIQkKe9hJanfyDL750RcbyEr8AAHty5IErrvS7tM5vQwIeh5BF26ND CyKPRdZgOgMpcwFfROKBDpAt052CgWIpNdhBdfIKlkCs4/ILxmC3rT/Mb/qZiHcoMMwEu6k+ T7vRAFZZAk62Yrr/U8/vUGKlzRZQoo86fyojCfI0ibCIc0z8rwCVY9P40G9wD9BTCZS/z8Vh jjpBlNnIKw2hM6hbxavKndCJjFFJD08rXrTyrLF/of18xD37vNdYooP9VATB5QjOWFRrscSZ 4a89e+to3m7YVnd4xdXwGp47dYusoax84C8tg1gZrH38ol9dPmnKX6GZrXeS7tH9k8VeUpJ8 HQbRThQRWAT936QpYbLConBmOtmbLmjQOGtiXPo1oK57X/7U/WBja5vWmm2q+Yxtt+3uHGVg DdDU4CJpXo4lX0v2n3QV5EBSW9hjdF3bNfl6GFBb1pPEhqNcMDUc7zkx/2uENdAdk/BnqMgH umip7b0pVfvOwU0EVRS3qQEQAJf6p0P7D+hMYUgCPkvgrcz6OJYsAYdUMUmokfqmkKwK0oJM ew8TNGM53ocKAgQGma5f10rwbZNPlpVPNRX5hwUmwVlcwSut0oE+JfUBH7mpysWvpF05RKIy q9RCoJZrAbXS7Tig56A1QD8IcM00rERZMcCOlI1+q9m4u9AOI+0LyGGSH+VvoyDHD/Jew4R2 TmPEF8Pu7lYiNYK88Q6u0kBkc+Tz3BNlyc6fi3HxnFfp0b75HLXPSTu2SwA/0Q31wHZXwrEU BR9KgSn/qbgy8ydPc97i82fhiFE3cbGexfPrQSMYmDGi+dcQ0s+AMQwC3XyMC0JkHpYUuFkR QdlIvaIhgFUUN2Vr4xF2ADaNTNFc4DYaiPHFAgHZw+3pZWqS4uIiWgJynrEaHw4F3QWU8/JB iyEWDhNq4WBrRA0u914TCCAoFOOKMnRdl8eJrRQKM/5/lXbHFjjlI/LDKhLRFsuQsnJJ3331 RjCzpHPZG5/p5KR1RHiAXa0p/DW5lXyq21hS3kjDlleoHqOxCN/cy0Jgz7qLDq1vZoCl67Sy RAH60c2Xu4may9SVltmot0OzWVHdrfS+85FQGp9580DaeLio7YMFKy2bfEvwQJ/c9xD2QPB+ oSb3V8ueSznXBG5+dyfOsZFRPxceA0wA2rSWZSjxLdKxvyGTj9vsCjaDu13rABEBAAHCwV8E GAEIAAkFAlUUt6kCGwwACgkQoZ8SQ+xBJp+HJhAAxmSTsC5y7p9Zu+nnLpucv/h88oEx985e qWeXzQiwM3pfRZS+PdTH9TyzHK0KOgKoAiubk0vt+BrT91D9d0G5kVQaTctAErGBoMkTaZJT XVEcNphiPzysdSqvprjojMp1y7rG8AP+Xd6m0rE1LRnkRRm8HyI8vdXsuLQPITGWXDLMjaNq AOV3BUnzkgtjMuIYw7SCr+12ZOb5dEKvaG4kjC4kaJ/TLbuBhVANcXkC90yp0AOZLs/cB1Dj OAXno/RUUruJ3r27a+pFv768UAi9QWcdw58yPxreMNMLqAgsS9oTHwHfGNWcB2dJ4UW+GMLJ hTf9TjQ2f+N/sIx5XMQ9pYw6CAJMK29qPx6/ZayrPxf22EXf0D3zTwIEZgwfSkynFVwV25L7 awQq60fifdMYheSxq7GbhpsixmcD+e161cCmLIt75YDt5bQ0B1yf7EmxG8n7pGZAOM6LoNsU fkSldba5XVwh8LuN5mK0nQBELGW6Os4TDq4REggLpfcvFC215zpuo0iCGnmE/Bns4nowqUSP u4tkWL+nxW4qgv8wo8HJ52jd79EJ8iqfIBoidBfy9AIUiEUApGQzWPu6yWcI8fY0rN5D+tc+ Yw1Zt6Mm+huYJpgCRsTcfzEcahnBn521CWcWvhW1ff3KFileFMtNmnBBhMncmRKHphtTKEpN 3jI= Organization: 2ndQuadrant Message-ID: <26129f50-cf47-2013-8f9b-e7a98853aa69@2ndquadrant.com> Date: Fri, 11 Jan 2019 09:30:52 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <2ddd0bfa-0fcd-35ec-266c-f03cf72fc581@2ndquadrant.com> Content-Type: multipart/mixed; boundary="------------6654DB75553D561D8EB967FE" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------6654DB75553D561D8EB967FE Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 06/11/2018 13:27, Peter Eisentraut wrote: > This is a small bug that I will fix in my next update. Time for another update. Lot's of rebasing, many things fixed, including the ADD COLUMN bug you found, replication, foreign tables, better caching, some corner cases in trigger behavior, more documentation. This addresses everything I've had in my notes, so it's functionally and logically complete from my perspective. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------6654DB75553D561D8EB967FE Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v7-0001-Generated-columns.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v7-0001-Generated-columns.patch" RnJvbSBjNjI1MDVlMDY3MzVjZDQ4NDE4NzEzMGMzMTkyNDllZGM1MTk3Y2VhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAxMSBKYW4gMjAxOSAwOToyMjozMCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjddIEdlbmVyYXRlZCBjb2x1bW5zCgpUaGlzIGlzIGFuIFNRTC1zdGFuZGFy ZCBmZWF0dXJlIHRoYXQgYWxsb3dzIGNyZWF0aW5nIGNvbHVtbnMgdGhhdCBhcmUKY29tcHV0 ZWQgZnJvbSBleHByZXNzaW9ucyByYXRoZXIgdGhhbiBhc3NpZ25lZCwgc2ltaWxhciB0byBh IHZpZXcgb3IKbWF0ZXJpYWxpemVkIHZpZXcgYnV0IG9uIGEgY29sdW1uIGJhc2lzLgoKVGhp cyBpbXBsZW1lbnRzIHR3byBraW5kcyBvZiBnZW5lcmF0ZWQgY29sdW1uczogdmlydHVhbCAo Y29tcHV0ZWQgb24KcmVhZCkgYW5kIHN0b3JlZCAoY29tcHV0ZWQgb24gd3JpdGUpLgotLS0K IC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8ICAyNiAr CiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgICAgfCAgIDMg Ky0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsICAgICB8ICAx NSArCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAg MTkgKy0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICB8 IDExNyArKysKIGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAg ICB8ICA2NiArLQogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgICAgICAgICAgICAgICAg ICAgIHwgICA0ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAgICAgICAg ICAgICAgfCAgIDMgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2ZvcmVpZ25fdGFibGUu c2dtbCAgICB8ICAzMCArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAg ICAgICAgICAgIHwgIDQ5ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90cmlnZ2VyLnNn bWwgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMvc2dtbC90ZXh0c2VhcmNoLnNnbWwgICAg ICAgICAgICAgICAgICB8ICAyNiArLQogZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbCAgICAg ICAgICAgICAgICAgICAgIHwgIDIwICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVw ZGVzYy5jICAgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyAg ICAgICAgICAgICAgICAgICAgfCAgODAgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3Jt YXRpb25fc2NoZW1hLnNxbCAgICB8ICAzMCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eS5jICAgICAgICAgICAgICAgICAgIHwgIDM4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYyAgICAgICAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jICAgICAgICAgICAgICB8IDIyNSArKysrLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgIDY4ICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICAxNSArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAgICAgIHwgIDE3ICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDExOCArKysKIHNyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMv YmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAgICAgICAgICAgfCAgIDQgKwogc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAgICAgIHwgIDExICsKIHNy Yy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgICAgICAgfCAgIDggKy0K IHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2luaGVyaXQuYyAgICAgICAgICB8ICAgNiAr CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgICAgfCAgMTkg Kwogc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAgICAgIHwgIDMz ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAy NiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAgICAgIHwg IDExICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyAgICAgICAgICAgICB8 ICAgNCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAg fCAgIDUgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAgICAg IHwgIDEyICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAg ICB8ICAyNCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAg ICAgfCAxMTUgKystCiAuLi4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMg ICAgICAgfCAgMTkgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8u YyAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxh dGlvbi5jICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRw dXQvcGdvdXRwdXQuYyAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5jICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0 ZUhhbmRsZXIuYyAgICAgICAgICB8IDE5NSArKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNo ZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgMzMgKwogc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGFydGNhY2hlLmMgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8ICAgNyArCiBzcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAv cGdfZHVtcF9zb3J0LmMgICAgICAgICAgICAgICAgfCAgMTAgKwogc3JjL2Jpbi9wZ19kdW1w L3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwgIDE3ICsKIHNyYy9iaW4vcHNxbC9k ZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyNSArLQogc3JjL2luY2x1ZGUv YWNjZXNzL3R1cGRlc2MuaCAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRl L2NhdGFsb2cvaGVhcC5oICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hdHRyaWJ1dGUuaCAgICAgICAgICAgIHwgICA2ICsKIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfY2xhc3MuZGF0ICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2lu Y2x1ZGUvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmggICAgICAgIHwgICAyICsKIHNyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgMjUgKy0KIHNy Yy9pbmNsdWRlL29wdGltaXplci9wbGFuY2F0LmggICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgICAgIHwgICA0ICst CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgfCAgMTEg Ky0KIHNyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCAgICAgICAgICB8ICAg MSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL3BsL3BscGVybC9leHBlY3RlZC9wbHBlcmxfdHJpZ2dlci5vdXQgICAgIHwg IDk2ICsrCiBzcmMvcGwvcGxwZXJsL3BscGVybC5jICAgICAgICAgICAgICAgICAgICAgICAg fCAgNDMgKy0KIHNyYy9wbC9wbHBlcmwvc3FsL3BscGVybF90cmlnZ2VyLnNxbCAgICAgICAg ICB8ICAzNyArCiBzcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jICAgICAgICAgICAgICAg ICAgfCAgMjAgKwogc3JjL3BsL3BscHl0aG9uL2V4cGVjdGVkL3BscHl0aG9uX3RyaWdnZXIu b3V0IHwgIDk1ICsrCiBzcmMvcGwvcGxweXRob24vcGxweV9jdXJzb3JvYmplY3QuYyAgICAg ICAgICAgfCAgIDUgKy0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X2V4ZWMuYyAgICAgICAgICAg ICAgICAgICB8ICAyMyArLQogc3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmMgICAgICAgICAg ICAgICAgICAgIHwgICAzICstCiBzcmMvcGwvcGxweXRob24vcGxweV90eXBlaW8uYyAgICAg ICAgICAgICAgICAgfCAgMjAgKy0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5oICAg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL3BsL3BscHl0aG9uL3NxbC9wbHB5dGhvbl90 cmlnZ2VyLnNxbCAgICAgIHwgIDM4ICsKIHNyYy9wbC90Y2wvZXhwZWN0ZWQvcGx0Y2xfcXVl cmllcy5vdXQgICAgICAgICB8ICA4OSArKwogc3JjL3BsL3RjbC9leHBlY3RlZC9wbHRjbF9z ZXR1cC5vdXQgICAgICAgICAgIHwgIDExICsKIHNyYy9wbC90Y2wvcGx0Y2wuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICA1MyArLQogc3JjL3BsL3RjbC9zcWwvcGx0Y2xfcXVl cmllcy5zcWwgICAgICAgICAgICAgIHwgIDI1ICsKIHNyYy9wbC90Y2wvc3FsL3BsdGNsX3Nl dHVwLnNxbCAgICAgICAgICAgICAgICB8ICAxMyArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9j cmVhdGVfdGFibGVfbGlrZS5vdXQgICAgfCAgNDYgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9nZW5lcmF0ZWQub3V0ICAgICAgIHwgODM2ICsrKysrKysrKysrKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBz cmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZSAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsICAgIHwgIDE0ICsK IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZC5zcWwgICAgICAgICAgICB8IDQ5MCAr KysrKysrKysrCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTFfZ2VuZXJhdGVkLnBsICAg ICAgfCAgNjUgKysKIDkxIGZpbGVzIGNoYW5nZWQsIDM2MDkgaW5zZXJ0aW9ucygrKSwgMTc3 IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZ2VuZXJhdGVkLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2dlbmVyYXRlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTFfZ2VuZXJhdGVkLnBsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0 Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggYmI5MmQ5ZDM3YS4uZDUxOTMw Nzc5MSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdy ZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jl c19mZHcub3V0CkBAIC02Mzc1LDYgKzYzNzUsMzIgQEAgc2VsZWN0ICogZnJvbSByZW0xOwog IDExIHwgYnllIHJlbW90ZQogKDQgcm93cykKIAorLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gdGVz dCBnZW5lcmF0ZWQgY29sdW1ucworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorY3JlYXRlIHRhYmxlIGds b2MxIChhIGludCwgYiBpbnQsIGMgaW50KTsKK2FsdGVyIHRhYmxlIGdsb2MxIHNldCAoYXV0 b3ZhY3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7CitjcmVhdGUgZm9yZWlnbiB0YWJsZSBncmVt MSAoCisgIGEgaW50LAorICBiIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChhICogMikgdmly dHVhbCwKKyAgYyBpbnQgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoYSAqIDMpIHN0b3JlZCkKKyAg c2VydmVyIGxvb3BiYWNrIG9wdGlvbnModGFibGVfbmFtZSAnZ2xvYzEnKTsKK2luc2VydCBp bnRvIGdyZW0xIChhKSB2YWx1ZXMgKDEpLCAoMik7Cit1cGRhdGUgZ3JlbTEgc2V0IGEgPSAy MiB3aGVyZSBhID0gMjsKK3NlbGVjdCAqIGZyb20gZ2xvYzE7CisgYSAgfCBiIHwgYyAgCist LS0tKy0tLSstLS0tCisgIDEgfCAgIHwgIDMKKyAyMiB8ICAgfCA2NgorKDIgcm93cykKKwor c2VsZWN0ICogZnJvbSBncmVtMTsKKyBhICB8IGIgIHwgYyAgCistLS0tKy0tLS0rLS0tLQor ICAxIHwgIDIgfCAgMworIDIyIHwgNDQgfCA2NgorKDIgcm93cykKKwogLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogLS0gdGVzdCBsb2NhbCB0cmlnZ2VycwogLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0t Z2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCBlMGM2OGRjNmI0Li43NDg0YzM5YTVl IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtMTYzNSw5ICsxNjM1 LDEwIEBAIHBvc3RncmVzUGxhbkZvcmVpZ25Nb2RpZnkoUGxhbm5lckluZm8gKnJvb3QsCiAJ ZWxzZSBpZiAob3BlcmF0aW9uID09IENNRF9VUERBVEUpCiAJewogCQlpbnQJCQljb2w7CisJ CUJpdG1hcHNldCAgKmFsbFVwZGF0ZWRDb2xzID0gYm1zX3VuaW9uKHJ0ZS0+dXBkYXRlZENv bHMsIHJ0ZS0+ZXh0cmFVcGRhdGVkQ29scyk7CiAKIAkJY29sID0gLTE7Ci0JCXdoaWxlICgo Y29sID0gYm1zX25leHRfbWVtYmVyKHJ0ZS0+dXBkYXRlZENvbHMsIGNvbCkpID49IDApCisJ CXdoaWxlICgoY29sID0gYm1zX25leHRfbWVtYmVyKGFsbFVwZGF0ZWRDb2xzLCBjb2wpKSA+ PSAwKQogCQl7CiAJCQkvKiBiaXQgbnVtYmVycyBhcmUgb2Zmc2V0IGJ5IEZpcnN0TG93SW52 YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgKi8KIAkJCUF0dHJOdW1iZXIJYXR0bm8gPSBjb2wg KyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCBmNDM4MTY1NjUwLi5iYzlhZTEz NzAzIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3 LnNxbAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApA QCAtMTMzNyw2ICsxMzM3LDIxIEBAIENSRUFURSBWSUVXIHJ3X3ZpZXcgQVMgU0VMRUNUICog RlJPTSBwYXJlbnRfdGJsCiBzZWxlY3QgKiBmcm9tIGxvYzE7CiBzZWxlY3QgKiBmcm9tIHJl bTE7CiAKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIHRlc3QgZ2VuZXJhdGVkIGNvbHVtbnMKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KK2NyZWF0ZSB0YWJsZSBnbG9jMSAoYSBpbnQsIGIgaW50LCBjIGlu dCk7CithbHRlciB0YWJsZSBnbG9jMSBzZXQgKGF1dG92YWN1dW1fZW5hYmxlZCA9ICdmYWxz ZScpOworY3JlYXRlIGZvcmVpZ24gdGFibGUgZ3JlbTEgKAorICBhIGludCwKKyAgYiBpbnQg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoYSAqIDIpIHZpcnR1YWwsCisgIGMgaW50IGdlbmVyYXRl ZCBhbHdheXMgYXMgKGEgKiAzKSBzdG9yZWQpCisgIHNlcnZlciBsb29wYmFjayBvcHRpb25z KHRhYmxlX25hbWUgJ2dsb2MxJyk7CitpbnNlcnQgaW50byBncmVtMSAoYSkgdmFsdWVzICgx KSwgKDIpOwordXBkYXRlIGdyZW0xIHNldCBhID0gMjIgd2hlcmUgYSA9IDI7CitzZWxlY3Qg KiBmcm9tIGdsb2MxOworc2VsZWN0ICogZnJvbSBncmVtMTsKKwogLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0gdGVzdCBsb2NhbCB0cmlnZ2VycwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbAppbmRleCBhZjRkMDYyNWVhLi4zMzE4OTE5YjZiIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApA QCAtMTEyOSw5ICsxMTI5LDExIEBAIDx0aXRsZT48c3RydWN0bmFtZT5wZ19hdHRyaWJ1dGU8 L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgogICAgICAgPGVudHJ5Pjx0eXBlPmJvb2w8 L3R5cGU+PC9lbnRyeT4KICAgICAgIDxlbnRyeT48L2VudHJ5PgogICAgICAgPGVudHJ5Pgot ICAgICAgIFRoaXMgY29sdW1uIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGluIHdoaWNoIGNhc2Ug dGhlcmUgd2lsbCBiZSBhCi0gICAgICAgY29ycmVzcG9uZGluZyBlbnRyeSBpbiB0aGUgPHN0 cnVjdG5hbWU+cGdfYXR0cmRlZjwvc3RydWN0bmFtZT4KLSAgICAgICBjYXRhbG9nIHRoYXQg YWN0dWFsbHkgZGVmaW5lcyB0aGUgdmFsdWUuCisgICAgICAgVGhpcyBjb2x1bW4gaGFzIGEg ZGVmYXVsdCBleHByZXNzaW9uIG9yIGdlbmVyYXRpb24gZXhwcmVzc2lvbiwgaW4gd2hpY2gK KyAgICAgICBjYXNlIHRoZXJlIHdpbGwgYmUgYSBjb3JyZXNwb25kaW5nIGVudHJ5IGluIHRo ZQorICAgICAgIDxzdHJ1Y3RuYW1lPnBnX2F0dHJkZWY8L3N0cnVjdG5hbWU+IGNhdGFsb2cg dGhhdCBhY3R1YWxseSBkZWZpbmVzIHRoZQorICAgICAgIGV4cHJlc3Npb24uICAoQ2hlY2sg PHN0cnVjdGZpZWxkPmF0dGdlbmVyYXRlZDwvc3RydWN0ZmllbGQ+IHRvCisgICAgICAgZGV0 ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhIGRlZmF1bHQgb3IgYSBnZW5lcmF0aW9uIGV4cHJl c3Npb24uKQogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTExNTksNiArMTE2 MSwxNyBAQCA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPiBD b2x1bW5zPC90aXRsZT4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxy b3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmF0dGdlbmVyYXRlZDwvc3RydWN0Zmll bGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5jaGFyPC90eXBlPjwvZW50cnk+Cisg ICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBJZiBhIHplcm8g Ynl0ZSAoPGxpdGVyYWw+Jyc8L2xpdGVyYWw+KSwgdGhlbiBub3QgYSBnZW5lcmF0ZWQgY29s dW1uLgorICAgICAgIE90aGVyd2lzZSwgPGxpdGVyYWw+czwvbGl0ZXJhbD4gPSBzdG9yZWQs IDxsaXRlcmFsPnY8L2xpdGVyYWw+ID0KKyAgICAgICB2aXJ0dWFsLgorICAgICAgPC9lbnRy eT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48c3RydWN0Zmll bGQ+YXR0aXNkcm9wcGVkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgogICAgICAgPGVudHJ5Pjx0 eXBlPmJvb2w8L3R5cGU+PC9lbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwu c2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCA4NWU0MzU4OTg4Li4xYWY2YzBh ODQ0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2RkbC5zZ21sCkBAIC0yMzMsNiArMjMzLDEyMyBAQCA8dGl0bGU+RGVmYXVsdCBWYWx1 ZXM8L3RpdGxlPgogICA8L3BhcmE+CiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0iZGRsLWdl bmVyYXRlZC1jb2x1bW5zIj4KKyAgPHRpdGxlPkdlbmVyYXRlZCBDb2x1bW5zPC90aXRsZT4K KyAgCisgIDxpbmRleHRlcm0gem9uZT0iZGRsLWdlbmVyYXRlZC1jb2x1bW5zIj4KKyAgIDxw cmltYXJ5PmdlbmVyYXRlZCBjb2x1bW48L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisg IDxwYXJhPgorICAgQSBnZW5lcmF0ZWQgY29sdW1uIGlzIGEgc3BlY2lhbCBjb2x1bW4gdGhh dCBpcyBhbHdheXMgY29tcHV0ZWQgZnJvbSBvdGhlcgorICAgY29sdW1ucy4gIFRodXMsIGl0 IGlzIGZvciBjb2x1bW5zIHdoYXQgYSB2aWV3IGlzIGZvciB0YWJsZXMuICBUaGVyZSBhcmUg dHdvCisgICBraW5kcyBvZiBnZW5lcmF0ZWQgY29sdW1uczogdmlydHVhbCBhbmQgc3RvcmVk LiAgQSB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW4KKyAgIG9jY3VwaWVzIG5vIHN0b3JhZ2Ug YW5kIGlzIGNvbXB1dGVkIHdoZW4gaXQgaXMgcmVhZC4gIEEgc3RvcmVkIGdlbmVyYXRlZAor ICAgY29sdW1uIGlzIGNvbXB1dGVkIHdoZW4gaXQgaXMgd3JpdHRlbiAoaW5zZXJ0ZWQgb3Ig dXBkYXRlZCkgYW5kIG9jY3VwaWVzCisgICBzdG9yYWdlIGFzIGlmIGl0IHdlcmUgYSBub3Jt YWwgY29sdW1uLiAgVGh1cywgYSB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW4gaXMKKyAgIHNp bWlsYXIgdG8gYSB2aWV3IGFuZCBhIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1uIGlzIHNpbWls YXIgdG8gYQorICAgbWF0ZXJpYWxpemVkIHZpZXcgKGV4Y2VwdCB0aGF0IGl0IGlzIGFsd2F5 cyB1cGRhdGVkIGF1dG9tYXRpY2FsbHkpLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBU byBjcmVhdGUgYSBnZW5lcmF0ZWQgY29sdW1uLCB1c2UgdGhlIDxsaXRlcmFsPkdFTkVSQVRF RCBBTFdBWVMKKyAgIEFTPC9saXRlcmFsPiBjbGF1c2UgaW4gPGNvbW1hbmQ+Q1JFQVRFIFRB QkxFPC9jb21tYW5kPiwgZm9yIGV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUg VEFCTEUgcGVvcGxlICgKKyAgICAuLi4sCisgICAgaGVpZ2h0X2NtIG51bWVyaWMsCisgICAg aGVpZ2h0X2luIG51bWVyaWMgPGVtcGhhc2lzPkdFTkVSQVRFRCBBTFdBWVMgQVMgKGhlaWdo dF9jbSAqIDIuNTQpPC9lbXBoYXNpcz4KKyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgQSBn ZW5lcmF0ZWQgY29sdW1uIGlzIGJ5IGRlZmF1bHQgb2YgdGhlIHZpcnR1YWwga2luZC4gIFVz ZSB0aGUga2V5d29yZHMKKyAgIDxsaXRlcmFsPlZJUlRVQUw8L2xpdGVyYWw+IG9yIDxsaXRl cmFsPlNUT1JFRDwvbGl0ZXJhbD4gdG8gbWFrZSB0aGUgY2hvaWNlCisgICBleHBsaWNpdC4g IFNlZSA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldGFibGUiLz4gZm9yIG1vcmUgZGV0YWls cy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQSBnZW5lcmF0ZWQgY29sdW1uIGNhbm5v dCBiZSB3cml0dGVuIHRvIGRpcmVjdGx5LiAgSW4KKyAgIDxjb21tYW5kPklOU0VSVDwvY29t bWFuZD4gb3IgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiBjb21tYW5kcywgYSB2YWx1ZQor ICAgY2Fubm90IGJlIHNwZWNpZmllZCBmb3IgYSBnZW5lcmF0ZWQgY29sdW1uLCBidXQgdGhl IGtleXdvcmQKKyAgIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IG1heSBiZSBzcGVjaWZp ZWQuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIENvbnNpZGVyIHRoZSBkaWZmZXJlbmNl cyBiZXR3ZWVuIGEgY29sdW1uIHdpdGggYSBkZWZhdWx0IGFuZCBhIGdlbmVyYXRlZAorICAg Y29sdW1uLiAgVGhlIGNvbHVtbiBkZWZhdWx0IGlzIGV2YWx1YXRlZCBvbmNlIHdoZW4gdGhl IHJvdyBpcyBmaXJzdAorICAgaW5zZXJ0ZWQgaWYgbm8gb3RoZXIgdmFsdWUgd2FzIHByb3Zp ZGVkOyBhIGdlbmVyYXRlZCBjb2x1bW4gaXMgdXBkYXRlZAorICAgd2hlbmV2ZXIgdGhlIHJv dyBjaGFuZ2VzIGFuZCBjYW5ub3QgYmUgb3ZlcnJpZGRlbi4gIEEgY29sdW1uIGRlZmF1bHQg bWF5CisgICBub3QgcmVmZXIgdG8gb3RoZXIgY29sdW1ucyBvZiB0aGUgdGFibGU7IGEgZ2Vu ZXJhdGlvbiBleHByZXNzaW9uIHdvdWxkCisgICBub3JtYWxseSBkbyBzby4gIEEgY29sdW1u IGRlZmF1bHQgY2FuIHVzZSB2b2xhdGlsZSBmdW5jdGlvbnMsIGZvciBleGFtcGxlCisgICA8 bGl0ZXJhbD5yYW5kb20oKTwvbGl0ZXJhbD4gb3IgZnVuY3Rpb25zIHJlZmVycmluZyB0byB0 aGUgY3VycmVudCB0aW1lOworICAgdGhpcyBpcyBub3QgYWxsb3dlZCBmb3IgZ2VuZXJhdGVk IGNvbHVtbnMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFNldmVyYWwgcmVzdHJpY3Rp b25zIGFwcGx5IHRvIHRoZSBkZWZpbml0aW9uIG9mIGdlbmVyYXRlZCBjb2x1bW5zIGFuZAor ICAgdGFibGVzIGludm9sdmluZyBnZW5lcmF0ZWQgY29sdW1uczoKKworICAgPGl0ZW1pemVk bGlzdD4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGdlbmVyYXRp b24gZXhwcmVzc2lvbiBjYW4gb25seSB1c2UgaW1tdXRhYmxlIGZ1bmN0aW9ucyBhbmQgY2Fu bm90CisgICAgICB1c2Ugc3VicXVlcmllcyBvciByZWZlcmVuY2UgYW55dGhpbmcgb3RoZXIg dGhhbiB0aGUgY3VycmVudCByb3cgaW4gYW55CisgICAgICB3YXkuCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBB IGdlbmVyYXRpb24gZXhwcmVzc2lvbiBjYW5ub3QgcmVmZXJlbmNlIGFub3RoZXIgZ2VuZXJh dGVkIGNvbHVtbi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIEEgZ2VuZXJhdGlvbiBleHByZXNzaW9uIGNhbm5v dCByZWZlcmVuY2UgYSBzeXN0ZW0gY29sdW1uLCBleGNlcHQKKyAgICAgIDx2YXJuYW1lPnRh Ymxlb2lkPC92YXJuYW1lPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEEgZ2VuZXJhdGVkIGNvbHVtbiBjYW5u b3QgaGF2ZSBhIGNvbHVtbiBkZWZhdWx0IG9yIGFuIGlkZW50aXR5IGRlZmluaXRpb24uCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBh cmE+CisgICAgICBBIGdlbmVyYXRlZCBjb2x1bW4gY2Fubm90IGJlIHBhcnQgb2YgYSBwYXJ0 aXRpb24ga2V5LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgRm9yZWlnbiB0YWJsZXMgY2FuIGhhdmUgZ2VuZXJh dGVkIGNvbHVtbnMuICBTZWUgPHhyZWYKKyAgICAgIGxpbmtlbmQ9InNxbC1jcmVhdGVmb3Jl aWdudGFibGUiLz4gZm9yIGRldGFpbHMuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC9pdGVtaXplZGxpc3Q+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEFkZGl0 aW9uYWwgY29uc2lkZXJhdGlvbnMgYXBwbHkgdG8gdGhlIHVzZSBvZiBnZW5lcmF0ZWQgY29s dW1ucy4KKyAgIDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIEdlbmVyYXRlZCBjb2x1bW5zIG1haW50YWluIGFjY2VzcyBwcml2aWxlZ2VzIHNl cGFyYXRlbHkgZnJvbSB0aGVpcgorICAgICAgdW5kZXJseWluZyBiYXNlIGNvbHVtbnMuICBT bywgaXQgaXMgcG9zc2libGUgdG8gYXJyYW5nZSBpdCBzbyB0aGF0IGEKKyAgICAgIHBhcnRp Y3VsYXIgcm9sZSBjYW4gcmVhZCBmcm9tIGEgZ2VuZXJhdGVkIGNvbHVtbiBidXQgbm90IGZy b20gdGhlCisgICAgICB1bmRlcmx5aW5nIGJhc2UgY29sdW1ucy4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEdl bmVyYXRlZCBjb2x1bW5zIGFyZSwgY29uY2VwdHVhbGx5LCB1cGRhdGVkIGFmdGVyCisgICAg ICA8bGl0ZXJhbD5CRUZPUkU8L2xpdGVyYWw+IHRyaWdnZXJzIGhhdmUgcnVuLiAgVGhlcmVm b3JlLCBjaGFuZ2VzIG1hZGUgdG8KKyAgICAgIGJhc2UgY29sdW1ucyBpbiBhIDxsaXRlcmFs PkJFRk9SRTwvbGl0ZXJhbD4gdHJpZ2dlciB3aWxsIGJlIHJlZmxlY3RlZCBpbgorICAgICAg Z2VuZXJhdGVkIGNvbHVtbnMuICBCdXQgY29udmVyc2VseSwgaXQgaXMgbm90IGFsbG93ZWQg dG8gYWNjZXNzCisgICAgICBnZW5lcmF0ZWQgY29sdW1ucyBpbiA8bGl0ZXJhbD5CRUZPUkU8 L2xpdGVyYWw+IHRyaWdnZXJzLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvaXRlbWl6ZWRsaXN0PgorICA8L3BhcmE+CisgPC9zZWN0MT4KKwogIDxzZWN0MSBpZD0i ZGRsLWNvbnN0cmFpbnRzIj4KICAgPHRpdGxlPkNvbnN0cmFpbnRzPC90aXRsZT4KIApkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCmluZGV4IGIxMzcwMGRhOTIuLjEzMjFh ZGU0NGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKQEAgLTk1Miw2 ICs5NTIsNjIgQEAgPHRpdGxlPjxsaXRlcmFsPmNvbGxhdGlvbl9jaGFyYWN0ZXJfc2V0X2Fw cGxpY2FiaWxpdHk8L2xpdGVyYWw+IENvbHVtbnM8L3RpdGxlPgogICA8L3RhYmxlPgogIDwv c2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImluZm9zY2hlbWEtY29sdW1uLWNvbHVtbi11c2FnZSI+ CisgIDx0aXRsZT48bGl0ZXJhbD5jb2x1bW5fY29sdW1uX3VzYWdlPC9saXRlcmFsPjwvdGl0 bGU+CisKKyAgPHBhcmE+CisgICBUaGUgdmlldyA8bGl0ZXJhbD5jb2x1bW5fY29sdW1uX3Vz YWdlPC9saXRlcmFsPiBpZGVudGlmaWVzIGFsbCBnZW5lcmF0ZWQKKyAgIGNvbHVtbnMgdGhh dCBkZXBlbmQgb24gYW5vdGhlciBiYXNlIGNvbHVtbiBpbiB0aGUgc2FtZSB0YWJsZS4gIE9u bHkgdGFibGVzCisgICBvd25lZCBieSBhIGN1cnJlbnRseSBlbmFibGVkIHJvbGUgYXJlIGlu Y2x1ZGVkLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAgPHRpdGxlPjxsaXRlcmFsPmNv bHVtbl9jb2x1bW5fdXNhZ2U8L2xpdGVyYWw+IENvbHVtbnM8L3RpdGxlPgorCisgICA8dGdy b3VwIGNvbHM9IjMiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT5O YW1lPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5EYXRhIFR5cGU8L2VudHJ5PgorICAgICAgPGVu dHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKwor ICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50YWJsZV9j YXRhbG9nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50 aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBkYXRhYmFz ZSBjb250YWluaW5nIHRoZSB0YWJsZSAoYWx3YXlzIHRoZSBjdXJyZW50IGRhdGFiYXNlKTwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVy YWw+dGFibGVfc2NoZW1hPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+ c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRo ZSBzY2hlbWEgY29udGFpbmluZyB0aGUgdGFibGU8L2VudHJ5PgorICAgICA8L3Jvdz4KKwor ICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRhYmxlX25hbWU8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2Vu dHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHRhYmxlPC9lbnRyeT4KKyAgICAgPC9y b3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5jb2x1bW5fbmFtZTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90 eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgYmFzZSBjb2x1bW4gdGhh dCBhIGdlbmVyYXRlZCBjb2x1bW4gZGVwZW5kcyBvbjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ZGVwZW5kZW50X2NvbHVtbjwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90 eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgZ2VuZXJhdGVkIGNvbHVt bjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAg PC90YWJsZT4KKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJpbmZvc2NoZW1hLWNvbHVtbi1k b21haW4tdXNhZ2UiPgogICA8dGl0bGU+PGxpdGVyYWw+Y29sdW1uX2RvbWFpbl91c2FnZTwv bGl0ZXJhbD48L3RpdGxlPgogCkBAIC0xNjQ4LDEzICsxNzA0LDE5IEBAIDx0aXRsZT48bGl0 ZXJhbD5jb2x1bW5zPC9saXRlcmFsPiBDb2x1bW5zPC90aXRsZT4KICAgICAgPHJvdz4KICAg ICAgIDxlbnRyeT48bGl0ZXJhbD5pc19nZW5lcmF0ZWQ8L2xpdGVyYWw+PC9lbnRyeT4KICAg ICAgIDxlbnRyeT48dHlwZT5jaGFyYWN0ZXJfZGF0YTwvdHlwZT48L2VudHJ5PgotICAgICAg PGVudHJ5PkFwcGxpZXMgdG8gYSBmZWF0dXJlIG5vdCBhdmFpbGFibGUgaW4gPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPjwvZW50cnk+CisgICAgICA8ZW50cnk+Cisg ICAgICAgSWYgdGhlIGNvbHVtbiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4sIHRoZW4gPGxpdGVy YWw+QUxXQVlTPC9saXRlcmFsPiwKKyAgICAgICBlbHNlIDxsaXRlcmFsPk5FVkVSPC9saXRl cmFsPi4KKyAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogCiAgICAgIDxyb3c+CiAgICAg ICA8ZW50cnk+PGxpdGVyYWw+Z2VuZXJhdGlvbl9leHByZXNzaW9uPC9saXRlcmFsPjwvZW50 cnk+CiAgICAgICA8ZW50cnk+PHR5cGU+Y2hhcmFjdGVyX2RhdGE8L3R5cGU+PC9lbnRyeT4K LSAgICAgIDxlbnRyeT5BcHBsaWVzIHRvIGEgZmVhdHVyZSBub3QgYXZhaWxhYmxlIGluIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT48L2VudHJ5PgorICAgICAgPGVu dHJ5PgorICAgICAgIElmIHRoZSBjb2x1bW4gaXMgYSBnZW5lcmF0ZWQgY29sdW1uLCB0aGVu IHRoZSBnZW5lcmF0aW9uIGV4cHJlc3Npb24sCisgICAgICAgZWxzZSBudWxsLgorICAgICAg PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKICAgICAgPHJvdz4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5k ZXggZDY2Yjg2MGNiZC4uYTBlMWY3OGJmYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3By b3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTY0NTAs NyArNjQ1MCw3IEBAIDx0aXRsZT5Mb2dpY2FsIFJlcGxpY2F0aW9uIE1lc3NhZ2UgRm9ybWF0 czwvdGl0bGU+CiA8L2xpc3RpdGVtPgogPC92YXJsaXN0ZW50cnk+CiA8L3ZhcmlhYmxlbGlz dD4KLSAgICAgICAgTmV4dCwgdGhlIGZvbGxvd2luZyBtZXNzYWdlIHBhcnQgYXBwZWFycyBm b3IgZWFjaCBjb2x1bW46CisgICAgICAgIE5leHQsIHRoZSBmb2xsb3dpbmcgbWVzc2FnZSBw YXJ0IGFwcGVhcnMgZm9yIGVhY2ggY29sdW1uIChleGNlcHQgZ2VuZXJhdGVkIGNvbHVtbnMp OgogPHZhcmlhYmxlbGlzdD4KIDx2YXJsaXN0ZW50cnk+CiA8dGVybT4KQEAgLTY4NzUsNyAr Njg3NSw3IEBAIDx0aXRsZT5Mb2dpY2FsIFJlcGxpY2F0aW9uIE1lc3NhZ2UgRm9ybWF0czwv dGl0bGU+CiA8L2xpc3RpdGVtPgogPC92YXJsaXN0ZW50cnk+CiA8L3ZhcmlhYmxlbGlzdD4K LSAgICAgICAgTmV4dCwgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3VibWVzc2FnZXMgYXBwZWFy cyBmb3IgZWFjaCBjb2x1bW46CisgICAgICAgIE5leHQsIG9uZSBvZiB0aGUgZm9sbG93aW5n IHN1Ym1lc3NhZ2VzIGFwcGVhcnMgZm9yIGVhY2ggY29sdW1uIChleGNlcHQgZ2VuZXJhdGVk IGNvbHVtbnMpOgogPHZhcmlhYmxlbGlzdD4KIDx2YXJsaXN0ZW50cnk+CiA8dGVybT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jb3B5LnNnbWwKaW5kZXggNDExOTQxZWQzMS4uZDI3MWIyMzEyOCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5 LnNnbWwKQEAgLTEwMiw3ICsxMDIsOCBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAg ICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBBbiBvcHRpb25hbCBsaXN0IG9m IGNvbHVtbnMgdG8gYmUgY29waWVkLiAgSWYgbm8gY29sdW1uIGxpc3QgaXMKLSAgICAgIHNw ZWNpZmllZCwgYWxsIGNvbHVtbnMgb2YgdGhlIHRhYmxlIHdpbGwgYmUgY29waWVkLgorICAg ICAgc3BlY2lmaWVkLCBhbGwgY29sdW1ucyBvZiB0aGUgdGFibGUgZXhjZXB0IGdlbmVyYXRl ZCBjb2x1bW5zIHdpbGwgYmUKKyAgICAgIGNvcGllZC4KICAgICAgPC9wYXJhPgogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX2ZvcmVpZ25fdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX2ZvcmVpZ25fdGFibGUuc2dtbAppbmRleCAzN2E0NWIyNmRiLi44NGM0OGYyOTY1IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mb3JlaWduX3RhYmxlLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZm9yZWlnbl90YWJsZS5zZ21sCkBAIC00 Miw3ICs0Miw4IEBACiB7IE5PVCBOVUxMIHwKICAgTlVMTCB8CiAgIENIRUNLICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIFsg Tk8gSU5IRVJJVCBdIHwKLSAgREVGQVVMVCA8cmVwbGFjZWFibGU+ZGVmYXVsdF9leHByPC9y ZXBsYWNlYWJsZT4gfQorICBERUZBVUxUIDxyZXBsYWNlYWJsZT5kZWZhdWx0X2V4cHI8L3Jl cGxhY2VhYmxlPiB8CisgIEdFTkVSQVRFRCBBTFdBWVMgQVMgKCA8cmVwbGFjZWFibGU+Z2Vu ZXJhdGlvbl9leHByPC9yZXBsYWNlYWJsZT4gKSBbIFZJUlRVQUwgfCBTVE9SRUQgXSB9CiAK IDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9jb25z dHJhaW50PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKQEAgLTI0Niw2ICsyNDcsMzMg QEAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zh cmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5H RU5FUkFURUQgQUxXQVlTIEFTICggPHJlcGxhY2VhYmxlPmdlbmVyYXRpb25fZXhwcjwvcmVw bGFjZWFibGU+ICkgWyBWSVJUVUFMIHwgU1RPUkVEIF08L2xpdGVyYWw+PGluZGV4dGVybT48 cHJpbWFyeT5nZW5lcmF0ZWQgY29sdW1uPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1c2UgY3JlYXRl cyB0aGUgY29sdW1uIGFzIGEgPGZpcnN0dGVybT5nZW5lcmF0ZWQKKyAgICAgIGNvbHVtbjwv Zmlyc3R0ZXJtPi4gIFRoZSBjb2x1bW4gY2Fubm90IGJlIHdyaXR0ZW4gdG8sIGFuZCB3aGVu IHJlYWQgaXQKKyAgICAgIHdpbGwgYmUgY29tcHV0ZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGV4 cHJlc3Npb24uCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFdoZW4gPGxp dGVyYWw+VklSVFVBTDwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkLCB0aGUgY29sdW1uIHdpbGwg YmUKKyAgICAgIGNvbXB1dGVkIHdoZW4gaXQgaXMgcmVhZC4gIChUaGUgZm9yZWlnbi1kYXRh IHdyYXBwZXIgd2lsbCBzZWUgaXQgYXMgYQorICAgICAgbnVsbCB2YWx1ZSBpbiBuZXcgcm93 cyBhbmQgbWF5IGNob29zZSB0byBzdG9yZSBpdCBhcyBhIG51bGwgdmFsdWUgb3IKKyAgICAg IGlnbm9yZSBpdCBhbHRvZ2V0aGVyLikgIFdoZW4gPGxpdGVyYWw+U1RPUkVEPC9saXRlcmFs PiBpcyBzcGVjaWZpZWQsIHRoZQorICAgICAgY29sdW1uIHdpbGwgYmUgY29tcHV0ZWQgb24g d3JpdGUuICAoVGhlIGNvbXB1dGVkIHZhbHVlIHdpbGwgYmUgcHJlc2VudGVkCisgICAgICB0 byB0aGUgZm9yZWlnbi1kYXRhIHdyYXBwZXIgZm9yIHN0b3JhZ2UgYW5kIG11c3QgYmUgcmV0 dXJuZWQgb24KKyAgICAgIHJlYWRpbmcuKSAgPGxpdGVyYWw+VklSVFVBTDwvbGl0ZXJhbD4g aXMgdGhlIGRlZmF1bHQuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFRo ZSBnZW5lcmF0aW9uIGV4cHJlc3Npb24gY2FuIHJlZmVyIHRvIG90aGVyIGNvbHVtbnMgaW4g dGhlIHRhYmxlLCBidXQKKyAgICAgIG5vdCBvdGhlciBnZW5lcmF0ZWQgY29sdW1ucy4gIEFu eSBmdW5jdGlvbnMgYW5kIG9wZXJhdG9ycyB1c2VkIG11c3QgYmUKKyAgICAgIGltbXV0YWJs ZS4gIFJlZmVyZW5jZXMgdG8gb3RoZXIgdGFibGVzIGFyZSBub3QgYWxsb3dlZC4KKyAgICAg PC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZh cmxpc3RlbnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ c2VydmVyX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCA4NTc1MTVlYzhmLi43YWFhNTQ3OTMy IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTYyLDYgKzYyLDcgQEAK ICAgTlVMTCB8CiAgIENIRUNLICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4 cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIFsgTk8gSU5IRVJJVCBdIHwKICAgREVGQVVMVCA8 cmVwbGFjZWFibGU+ZGVmYXVsdF9leHByPC9yZXBsYWNlYWJsZT4gfAorICBHRU5FUkFURUQg QUxXQVlTIEFTICggPHJlcGxhY2VhYmxlPmdlbmVyYXRpb25fZXhwcjwvcmVwbGFjZWFibGU+ ICkgWyBWSVJUVUFMIHwgU1RPUkVEIF0gfAogICBHRU5FUkFURUQgeyBBTFdBWVMgfCBCWSBE RUZBVUxUIH0gQVMgSURFTlRJVFkgWyAoIDxyZXBsYWNlYWJsZT5zZXF1ZW5jZV9vcHRpb25z PC9yZXBsYWNlYWJsZT4gKSBdIHwKICAgVU5JUVVFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBQUklNQVJZIEtF WSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVw bGFjZWFibGU+IHwKQEAgLTgzLDcgKzg0LDcgQEAKIAogPHBocmFzZT5hbmQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxpa2Vfb3B0aW9uPC9yZXBsYWNlYWJsZT4gaXM6PC9w aHJhc2U+CiAKLXsgSU5DTFVESU5HIHwgRVhDTFVESU5HIH0geyBDT01NRU5UUyB8IENPTlNU UkFJTlRTIHwgREVGQVVMVFMgfCBJREVOVElUWSB8IElOREVYRVMgfCBTVEFUSVNUSUNTIHwg U1RPUkFHRSB8IEFMTCB9Cit7IElOQ0xVRElORyB8IEVYQ0xVRElORyB9IHsgQ09NTUVOVFMg fCBDT05TVFJBSU5UUyB8IERFRkFVTFRTIHwgR0VORVJBVEVEIHwgSURFTlRJVFkgfCBJTkRF WEVTIHwgU1RBVElTVElDUyB8IFNUT1JBR0UgfCBBTEwgfQogCiA8cGhyYXNlPmFuZCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxh Y2VhYmxlPiBpczo8L3BocmFzZT4KIApAQCAtNjI2LDYgKzYyNywxNyBAQCA8dGl0bGU+UGFy YW1ldGVyczwvdGl0bGU+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0 ZW50cnk+CiAKKyAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48bGl0ZXJh bD5JTkNMVURJTkcgR0VORVJBVEVEPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgQW55IGdlbmVyYXRpb24gZXhwcmVz c2lvbnMgYXMgd2VsbCBhcyB0aGUgdmlydHVhbC9zdG9yZWQgY2hvaWNlIG9mCisgICAgICAg ICAgY29waWVkIGNvbHVtbiBkZWZpbml0aW9ucyB3aWxsIGJlIGNvcGllZC4gIEJ5IGRlZmF1 bHQsIG5ldyBjb2x1bW5zCisgICAgICAgICAgd2lsbCBiZSByZWd1bGFyIGJhc2UgY29sdW1u cy4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgIDx0ZXJtPjxs aXRlcmFsPklOQ0xVRElORyBJREVOVElUWTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICAgIDxs aXN0aXRlbT4KQEAgLTc5Niw2ICs4MDgsMzEgQEAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxl PgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5HRU5FUkFURUQgQUxXQVlTIEFTICggPHJlcGxh Y2VhYmxlPmdlbmVyYXRpb25fZXhwcjwvcmVwbGFjZWFibGU+ICkgWyBWSVJUVUFMIHwgU1RP UkVEIF08L2xpdGVyYWw+PGluZGV4dGVybT48cHJpbWFyeT5nZW5lcmF0ZWQgY29sdW1uPC9w cmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgVGhpcyBjbGF1c2UgY3JlYXRlcyB0aGUgY29sdW1uIGFzIGEgPGZpcnN0dGVy bT5nZW5lcmF0ZWQKKyAgICAgIGNvbHVtbjwvZmlyc3R0ZXJtPi4gIFRoZSBjb2x1bW4gY2Fu bm90IGJlIHdyaXR0ZW4gdG8sIGFuZCB3aGVuIHJlYWQgaXQKKyAgICAgIHdpbGwgYmUgY29t cHV0ZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGV4cHJlc3Npb24uCisgICAgIDwvcGFyYT4KKwor ICAgICA8cGFyYT4KKyAgICAgIFdoZW4gPGxpdGVyYWw+VklSVFVBTDwvbGl0ZXJhbD4gaXMg c3BlY2lmaWVkLCB0aGUgY29sdW1uIHdpbGwgYmUKKyAgICAgIGNvbXB1dGVkIHdoZW4gaXQg aXMgcmVhZCwgYW5kIGl0IHdpbGwgbm90IG9jY3VweSBhbnkgc3RvcmFnZS4KKyAgICAgIFdo ZW4gPGxpdGVyYWw+U1RPUkVEPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQsIHRoZSBjb2x1bW4g d2lsbCBiZSBjb21wdXRlZAorICAgICAgb24gd3JpdGUgYW5kIHdpbGwgYmUgc3RvcmVkIG9u IGRpc2suICA8bGl0ZXJhbD5WSVJUVUFMPC9saXRlcmFsPiBpcyB0aGUKKyAgICAgIGRlZmF1 bHQuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSBnZW5lcmF0aW9u IGV4cHJlc3Npb24gY2FuIHJlZmVyIHRvIG90aGVyIGNvbHVtbnMgaW4gdGhlIHRhYmxlLCBi dXQKKyAgICAgIG5vdCBvdGhlciBnZW5lcmF0ZWQgY29sdW1ucy4gIEFueSBmdW5jdGlvbnMg YW5kIG9wZXJhdG9ycyB1c2VkIG11c3QgYmUKKyAgICAgIGltbXV0YWJsZS4gIFJlZmVyZW5j ZXMgdG8gb3RoZXIgdGFibGVzIGFyZSBub3QgYWxsb3dlZC4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4K ICAgICA8dGVybT48bGl0ZXJhbD5HRU5FUkFURUQgeyBBTFdBWVMgfCBCWSBERUZBVUxUIH0g QVMgSURFTlRJVFkgWyAoIDxyZXBsYWNlYWJsZT5zZXF1ZW5jZV9vcHRpb25zPC9yZXBsYWNl YWJsZT4gKSBdPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC0yMDI3LDYg KzIwNjQsMTYgQEAgPHRpdGxlPk11bHRpcGxlIElkZW50aXR5IENvbHVtbnM8L3RpdGxlPgog ICAgPC9wYXJhPgogICA8L3JlZnNlY3QyPgogCisgIDxyZWZzZWN0Mj4KKyAgIDx0aXRsZT5H ZW5lcmF0ZWQgQ29sdW1uczwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFRoZSBvcHRpb25z IDxsaXRlcmFsPlZJUlRVQUw8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5TVE9SRUQ8L2xpdGVy YWw+IGFyZQorICAgIG5vdCBzdGFuZGFyZCBidXQgYXJlIGFsc28gdXNlZCBieSBvdGhlciBT UUwgaW1wbGVtZW50YXRpb25zLiAgVGhlIFNRTAorICAgIHN0YW5kYXJkIGRvZXMgbm90IHNw ZWNpZnkgdGhlIHN0b3JhZ2Ugb2YgZ2VuZXJhdGVkIGNvbHVtbnMuCisgICA8L3BhcmE+Cisg IDwvcmVmc2VjdDI+CisKICAgPHJlZnNlY3QyPgogICAgPHRpdGxlPjxsaXRlcmFsPkxJS0U8 L2xpdGVyYWw+IENsYXVzZTwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RyaWdnZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RyaWdn ZXIuc2dtbAppbmRleCA2NTE0ZmZjNmFlLi42NDU2MTA1ZGU2IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV90cmlnZ2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfdHJpZ2dlci5zZ21sCkBAIC0yNjEsNyArMjYxLDkgQEAgPHRpdGxlPlBhcmFt ZXRlcnM8L3RpdGxlPgogVVBEQVRFIE9GIDxyZXBsYWNlYWJsZT5jb2x1bW5fbmFtZTE8L3Jl cGxhY2VhYmxlPiBbLCA8cmVwbGFjZWFibGU+Y29sdW1uX25hbWUyPC9yZXBsYWNlYWJsZT4g Li4uIF0KIDwvc3lub3BzaXM+CiAgICAgICBUaGUgdHJpZ2dlciB3aWxsIG9ubHkgZmlyZSBp ZiBhdCBsZWFzdCBvbmUgb2YgdGhlIGxpc3RlZCBjb2x1bW5zCi0gICAgICBpcyBtZW50aW9u ZWQgYXMgYSB0YXJnZXQgb2YgdGhlIDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4gY29tbWFu ZC4KKyAgICAgIGlzIG1lbnRpb25lZCBhcyBhIHRhcmdldCBvZiB0aGUgPGNvbW1hbmQ+VVBE QVRFPC9jb21tYW5kPiBjb21tYW5kCisgICAgICBvciBpZiBvbmUgb2YgdGhlIGxpc3RlZCBj b2x1bW5zIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbiB0aGF0IGRlcGVuZHMgb24gYQorICAgICAg Y29sdW1uIHRoYXQgaXMgdGhlIHRhcmdldCBvZiB0aGUgPGNvbW1hbmQ+VVBEQVRFPC9jb21t YW5kPi4KICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3RleHRzZWFyY2guc2dtbCBiL2RvYy9zcmMvc2dtbC90ZXh0c2VhcmNoLnNnbWwK aW5kZXggZWNlYmFkZTc2Ny4uNjRkYmE4ODZiZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3RleHRzZWFyY2guc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvdGV4dHNlYXJjaC5zZ21sCkBA IC02MjAsMTUgKzYyMCwxNyBAQCA8dGl0bGU+Q3JlYXRpbmcgSW5kZXhlczwvdGl0bGU+CiAK ICAgIDxwYXJhPgogICAgIEFub3RoZXIgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgc2VwYXJh dGUgPHR5cGU+dHN2ZWN0b3I8L3R5cGU+IGNvbHVtbgotICAgIHRvIGhvbGQgdGhlIG91dHB1 dCBvZiA8ZnVuY3Rpb24+dG9fdHN2ZWN0b3I8L2Z1bmN0aW9uPi4gIFRoaXMgZXhhbXBsZSBp cyBhCisgICAgdG8gaG9sZCB0aGUgb3V0cHV0IG9mIDxmdW5jdGlvbj50b190c3ZlY3Rvcjwv ZnVuY3Rpb24+LiAgVG8ga2VlcCB0aGlzCisgICAgY29sdW1uIGF1dG9tYXRpY2FsbHkgdXAg dG8gZGF0ZSB3aXRoIGl0cyBzb3VyY2UgZGF0YSwgdXNlIGEgc3RvcmVkCisgICAgZ2VuZXJh dGVkIGNvbHVtbi4gIFRoaXMgZXhhbXBsZSBpcyBhCiAgICAgY29uY2F0ZW5hdGlvbiBvZiA8 bGl0ZXJhbD50aXRsZTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPmJvZHk8L2xpdGVyYWw+LAog ICAgIHVzaW5nIDxmdW5jdGlvbj5jb2FsZXNjZTwvZnVuY3Rpb24+IHRvIGVuc3VyZSB0aGF0 IG9uZSBmaWVsZCB3aWxsIHN0aWxsIGJlCiAgICAgaW5kZXhlZCB3aGVuIHRoZSBvdGhlciBp cyA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPjoKIAogPHByb2dyYW1saXN0aW5nPgotQUxURVIg VEFCTEUgcGd3ZWIgQUREIENPTFVNTiB0ZXh0c2VhcmNoYWJsZV9pbmRleF9jb2wgdHN2ZWN0 b3I7Ci1VUERBVEUgcGd3ZWIgU0VUIHRleHRzZWFyY2hhYmxlX2luZGV4X2NvbCA9Ci0gICAg IHRvX3RzdmVjdG9yKCdlbmdsaXNoJywgY29hbGVzY2UodGl0bGUsJycpIHx8ICcgJyB8fCBj b2FsZXNjZShib2R5LCcnKSk7CitBTFRFUiBUQUJMRSBwZ3dlYgorICAgIEFERCBDT0xVTU4g dGV4dHNlYXJjaGFibGVfaW5kZXhfY29sIHRzdmVjdG9yCisgICAgICAgICAgICAgICBHRU5F UkFURUQgQUxXQVlTIEFTICh0b190c3ZlY3RvcignZW5nbGlzaCcsIGNvYWxlc2NlKHRpdGxl LCAnJykgfHwgJyAnIHx8IGNvYWxlc2NlKGJvZHksICcnKSkpIFNUT1JFRDsKIDwvcHJvZ3Jh bWxpc3Rpbmc+CiAKICAgICBUaGVuIHdlIGNyZWF0ZSBhIDxhY3JvbnltPkdJTjwvYWNyb255 bT4gaW5kZXggdG8gc3BlZWQgdXAgdGhlIHNlYXJjaDoKQEAgLTY0OCwxNCArNjUwLDYgQEAg PHRpdGxlPkNyZWF0aW5nIEluZGV4ZXM8L3RpdGxlPgogPC9wcm9ncmFtbGlzdGluZz4KICAg IDwvcGFyYT4KIAotICAgPHBhcmE+Ci0gICAgV2hlbiB1c2luZyBhIHNlcGFyYXRlIGNvbHVt biB0byBzdG9yZSB0aGUgPHR5cGU+dHN2ZWN0b3I8L3R5cGU+Ci0gICAgcmVwcmVzZW50YXRp b24sCi0gICAgaXQgaXMgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBhIHRyaWdnZXIgdG8ga2VlcCB0 aGUgPHR5cGU+dHN2ZWN0b3I8L3R5cGU+Ci0gICAgY29sdW1uIGN1cnJlbnQgYW55dGltZSA8 bGl0ZXJhbD50aXRsZTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Ym9keTwvbGl0ZXJhbD4gY2hh bmdlcy4KLSAgICA8eHJlZiBsaW5rZW5kPSJ0ZXh0c2VhcmNoLXVwZGF0ZS10cmlnZ2VycyIv PiBleHBsYWlucyBob3cgdG8gZG8gdGhhdC4KLSAgIDwvcGFyYT4KLQogICAgPHBhcmE+CiAg ICAgT25lIGFkdmFudGFnZSBvZiB0aGUgc2VwYXJhdGUtY29sdW1uIGFwcHJvYWNoIG92ZXIg YW4gZXhwcmVzc2lvbiBpbmRleAogICAgIGlzIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyeSB0 byBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHRleHQgc2VhcmNoCkBAIC0xODU3LDYgKzE4NTEs MTQgQEAgPHRpdGxlPlRyaWdnZXJzIGZvciBBdXRvbWF0aWMgVXBkYXRlczwvdGl0bGU+CiAg ICAgPHNlY29uZGFyeT5mb3IgdXBkYXRpbmcgYSBkZXJpdmVkIHRzdmVjdG9yIGNvbHVtbjwv c2Vjb25kYXJ5PgogICAgPC9pbmRleHRlcm0+CiAKKyAgIDxub3RlPgorICAgIDxwYXJhPgor ICAgICBUaGUgbWV0aG9kIGRlc2NyaWJlZCBpbiB0aGlzIHNlY3Rpb24gaGFzIGJlZW4gb2Jz b2xldGVkIGJ5IHRoZSB1c2Ugb2YKKyAgICAgc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLCBh cyBkZXNjcmliZWQgaW4gPHhyZWYKKyAgICAgbGlua2VuZD0idGV4dHNlYXJjaC10YWJsZXMt aW5kZXgiLz4uCisgICAgPC9wYXJhPgorICAgPC9ub3RlPgorCiAgICA8cGFyYT4KICAgICBX aGVuIHVzaW5nIGEgc2VwYXJhdGUgY29sdW1uIHRvIHN0b3JlIHRoZSA8dHlwZT50c3ZlY3Rv cjwvdHlwZT4gcmVwcmVzZW50YXRpb24KICAgICBvZiB5b3VyIGRvY3VtZW50cywgaXQgaXMg bmVjZXNzYXJ5IHRvIGNyZWF0ZSBhIHRyaWdnZXIgdG8gdXBkYXRlIHRoZQpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNn bWwKaW5kZXggYmU5YzIyODQ0OC4uMzg0ODQ1ZmY3NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3RyaWdnZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCkBAIC0y NDMsNiArMjQzLDI2IEBAIDx0aXRsZT5PdmVydmlldyBvZiBUcmlnZ2VyIEJlaGF2aW9yPC90 aXRsZT4KICAgICBvcGVyYXRpb24sIGFuZCBzbyB0aGV5IGNhbiByZXR1cm4gPHN5bWJvbD5O VUxMPC9zeW1ib2w+LgogICAgPC9wYXJhPgogCisgICA8cGFyYT4KKyAgICBTb21lIGNvbnNp ZGVyYXRpb25zIGFwcGx5IGZvciBnZW5lcmF0ZWQKKyAgICBjb2x1bW5zLjxpbmRleHRlcm0+ PHByaW1hcnk+Z2VuZXJhdGVkIGNvbHVtbjwvcHJpbWFyeT48c2Vjb25kYXJ5PmluCisgICAg dHJpZ2dlcnM8L3NlY29uZGFyeT48L2luZGV4dGVybT4gVmlydHVhbCBnZW5lcmF0ZWQgY29s dW1ucyBhcmUgbmV2ZXIKKyAgICBjb21wdXRlZCB3aGVuIHRyaWdnZXJzIGZpcmU7IHRoZXkg d2lsbCBhbHdheXMgYXBwZWFyIGFzIG51bGwgaW5zaWRlIGEKKyAgICB0cmlnZ2VyIGZ1bmN0 aW9uLiAgU3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zIGFyZSBjb21wdXRlZCBhZnRlcgorICAg IDxsaXRlcmFsPkJFRk9SRTwvbGl0ZXJhbD4gdHJpZ2dlcnMgYW5kIGJlZm9yZSA8bGl0ZXJh bD5BRlRFUjwvbGl0ZXJhbD4KKyAgICB0cmlnZ2Vycy4gIFRoZXJlZm9yZSwgdGhlIGdlbmVy YXRlZCB2YWx1ZSBjYW4gYmUgaW5zcGVjdGVkIGluCisgICAgPGxpdGVyYWw+QUZURVI8L2xp dGVyYWw+IHRyaWdnZXJzLiAgSW4gPGxpdGVyYWw+QkVGT1JFPC9saXRlcmFsPiB0cmlnZ2Vy cywKKyAgICB0aGUgPGxpdGVyYWw+T0xEPC9saXRlcmFsPiByb3cgY29udGFpbnMgdGhlIG9s ZCBnZW5lcmF0ZWQgdmFsdWUsIGFzIG9uZQorICAgIHdvdWxkIGV4cGVjdCwgYnV0IHRoZSA8 bGl0ZXJhbD5ORVc8L2xpdGVyYWw+IHJvdyBkb2VzIG5vdCB5ZXQgY29udGFpbiB0aGUKKyAg ICBuZXcgZ2VuZXJhdGVkIHZhbHVlIGFuZCBzaG91bGQgbm90IGJlIGFjY2Vzc2VkLiAgSW4g dGhlIEMgbGFuZ3VhZ2UKKyAgICBpbnRlcmZhY2UsIHRoZSBjb250ZW50IG9mIHRoZSBjb2x1 bW4gaXMgdW5kZWZpbmVkIGF0IHRoaXMgcG9pbnQ7IGEKKyAgICBoaWdoZXItbGV2ZWwgcHJv Z3JhbW1pbmcgbGFuZ3VhZ2Ugc2hvdWxkIHByZXZlbnQgYWNjZXNzIHRvIGEgc3RvcmVkCisg ICAgZ2VuZXJhdGVkIGNvbHVtbiBpbiB0aGUgPGxpdGVyYWw+TkVXPC9saXRlcmFsPiByb3cg aW4gYQorICAgIDxsaXRlcmFsPkJFRk9SRTwvbGl0ZXJhbD4gdHJpZ2dlci4gIENoYW5nZXMg dG8gdGhlIHZhbHVlIG9mIGEgZ2VuZXJhdGVkCisgICAgY29sdW1uIGluIGEgPGxpdGVyYWw+ QkVGT1JFPC9saXRlcmFsPiB0cmlnZ2VyIGFyZSBpZ25vcmVkIGFuZCB3aWxsIGJlCisgICAg b3ZlcndyaXR0ZW4uCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIElmIG1vcmUgdGhh biBvbmUgdHJpZ2dlciBpcyBkZWZpbmVkIGZvciB0aGUgc2FtZSBldmVudCBvbiB0aGUgc2Ft ZQogICAgIHJlbGF0aW9uLCB0aGUgdHJpZ2dlcnMgd2lsbCBiZSBmaXJlZCBpbiBhbHBoYWJl dGljYWwgb3JkZXIgYnkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v dHVwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMKaW5kZXgg ZTk4YWJhZGNkNy4uMGE2MDk3ZmRiNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2NvbW1vbi90dXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBk ZXNjLmMKQEAgLTEzMiw2ICsxMzIsNyBAQCBDcmVhdGVUdXBsZURlc2NDb3B5KFR1cGxlRGVz YyB0dXBkZXNjKQogCQlhdHQtPmF0dGhhc2RlZiA9IGZhbHNlOwogCQlhdHQtPmF0dGhhc21p c3NpbmcgPSBmYWxzZTsKIAkJYXR0LT5hdHRpZGVudGl0eSA9ICdcMCc7CisJCWF0dC0+YXR0 Z2VuZXJhdGVkID0gJ1wwJzsKIAl9CiAKIAkvKiBXZSBjYW4gY29weSB0aGUgdHVwbGUgdHlw ZSBpZGVudGlmaWNhdGlvbiwgdG9vICovCkBAIC0xNjYsNiArMTY3LDggQEAgQ3JlYXRlVHVw bGVEZXNjQ29weUNvbnN0cihUdXBsZURlc2MgdHVwZGVzYykKIAkJVHVwbGVDb25zdHIgKmNw eSA9IChUdXBsZUNvbnN0ciAqKSBwYWxsb2MwKHNpemVvZihUdXBsZUNvbnN0cikpOwogCiAJ CWNweS0+aGFzX25vdF9udWxsID0gY29uc3RyLT5oYXNfbm90X251bGw7CisJCWNweS0+aGFz X2dlbmVyYXRlZF9zdG9yZWQgPSBjb25zdHItPmhhc19nZW5lcmF0ZWRfc3RvcmVkOworCQlj cHktPmhhc19nZW5lcmF0ZWRfdmlydHVhbCA9IGNvbnN0ci0+aGFzX2dlbmVyYXRlZF92aXJ0 dWFsOwogCiAJCWlmICgoY3B5LT5udW1fZGVmdmFsID0gY29uc3RyLT5udW1fZGVmdmFsKSA+ IDApCiAJCXsKQEAgLTI0OCw2ICsyNTEsNyBAQCBUdXBsZURlc2NDb3B5KFR1cGxlRGVzYyBk c3QsIFR1cGxlRGVzYyBzcmMpCiAJCWF0dC0+YXR0aGFzZGVmID0gZmFsc2U7CiAJCWF0dC0+ YXR0aGFzbWlzc2luZyA9IGZhbHNlOwogCQlhdHQtPmF0dGlkZW50aXR5ID0gJ1wwJzsKKwkJ YXR0LT5hdHRnZW5lcmF0ZWQgPSAnXDAnOwogCX0KIAlkc3QtPmNvbnN0ciA9IE5VTEw7CiAK QEAgLTMwMSw2ICszMDUsNyBAQCBUdXBsZURlc2NDb3B5RW50cnkoVHVwbGVEZXNjIGRzdCwg QXR0ck51bWJlciBkc3RBdHRubywKIAlkc3RBdHQtPmF0dGhhc2RlZiA9IGZhbHNlOwogCWRz dEF0dC0+YXR0aGFzbWlzc2luZyA9IGZhbHNlOwogCWRzdEF0dC0+YXR0aWRlbnRpdHkgPSAn XDAnOworCWRzdEF0dC0+YXR0Z2VuZXJhdGVkID0gJ1wwJzsKIH0KIAogLyoKQEAgLTQ1Nyw2 ICs0NjIsOCBAQCBlcXVhbFR1cGxlRGVzY3MoVHVwbGVEZXNjIHR1cGRlc2MxLCBUdXBsZURl c2MgdHVwZGVzYzIpCiAJCQlyZXR1cm4gZmFsc2U7CiAJCWlmIChhdHRyMS0+YXR0aWRlbnRp dHkgIT0gYXR0cjItPmF0dGlkZW50aXR5KQogCQkJcmV0dXJuIGZhbHNlOworCQlpZiAoYXR0 cjEtPmF0dGdlbmVyYXRlZCAhPSBhdHRyMi0+YXR0Z2VuZXJhdGVkKQorCQkJcmV0dXJuIGZh bHNlOwogCQlpZiAoYXR0cjEtPmF0dGlzZHJvcHBlZCAhPSBhdHRyMi0+YXR0aXNkcm9wcGVk KQogCQkJcmV0dXJuIGZhbHNlOwogCQlpZiAoYXR0cjEtPmF0dGlzbG9jYWwgIT0gYXR0cjIt PmF0dGlzbG9jYWwpCkBAIC00NzcsNiArNDg0LDEwIEBAIGVxdWFsVHVwbGVEZXNjcyhUdXBs ZURlc2MgdHVwZGVzYzEsIFR1cGxlRGVzYyB0dXBkZXNjMikKIAkJCXJldHVybiBmYWxzZTsK IAkJaWYgKGNvbnN0cjEtPmhhc19ub3RfbnVsbCAhPSBjb25zdHIyLT5oYXNfbm90X251bGwp CiAJCQlyZXR1cm4gZmFsc2U7CisJCWlmIChjb25zdHIxLT5oYXNfZ2VuZXJhdGVkX3N0b3Jl ZCAhPSBjb25zdHIyLT5oYXNfZ2VuZXJhdGVkX3N0b3JlZCkKKwkJCXJldHVybiBmYWxzZTsK KwkJaWYgKGNvbnN0cjEtPmhhc19nZW5lcmF0ZWRfdmlydHVhbCAhPSBjb25zdHIyLT5oYXNf Z2VuZXJhdGVkX3ZpcnR1YWwpCisJCQlyZXR1cm4gZmFsc2U7CiAJCW4gPSBjb25zdHIxLT5u dW1fZGVmdmFsOwogCQlpZiAobiAhPSAoaW50KSBjb25zdHIyLT5udW1fZGVmdmFsKQogCQkJ cmV0dXJuIGZhbHNlOwpAQCAtNjM5LDYgKzY1MCw3IEBAIFR1cGxlRGVzY0luaXRFbnRyeShU dXBsZURlc2MgZGVzYywKIAlhdHQtPmF0dGhhc2RlZiA9IGZhbHNlOwogCWF0dC0+YXR0aGFz bWlzc2luZyA9IGZhbHNlOwogCWF0dC0+YXR0aWRlbnRpdHkgPSAnXDAnOworCWF0dC0+YXR0 Z2VuZXJhdGVkID0gJ1wwJzsKIAlhdHQtPmF0dGlzZHJvcHBlZCA9IGZhbHNlOwogCWF0dC0+ YXR0aXNsb2NhbCA9IHRydWU7CiAJYXR0LT5hdHRpbmhjb3VudCA9IDA7CkBAIC02OTgsNiAr NzEwLDcgQEAgVHVwbGVEZXNjSW5pdEJ1aWx0aW5FbnRyeShUdXBsZURlc2MgZGVzYywKIAlh dHQtPmF0dGhhc2RlZiA9IGZhbHNlOwogCWF0dC0+YXR0aGFzbWlzc2luZyA9IGZhbHNlOwog CWF0dC0+YXR0aWRlbnRpdHkgPSAnXDAnOworCWF0dC0+YXR0Z2VuZXJhdGVkID0gJ1wwJzsK IAlhdHQtPmF0dGlzZHJvcHBlZCA9IGZhbHNlOwogCWF0dC0+YXR0aXNsb2NhbCA9IHRydWU7 CiAJYXR0LT5hdHRpbmhjb3VudCA9IDA7CkBAIC04NTQsNiArODY3LDggQEAgQnVpbGREZXNj Rm9yUmVsYXRpb24oTGlzdCAqc2NoZW1hKQogCQlUdXBsZUNvbnN0ciAqY29uc3RyID0gKFR1 cGxlQ29uc3RyICopIHBhbGxvYzAoc2l6ZW9mKFR1cGxlQ29uc3RyKSk7CiAKIAkJY29uc3Ry LT5oYXNfbm90X251bGwgPSB0cnVlOworCQljb25zdHItPmhhc19nZW5lcmF0ZWRfc3RvcmVk ID0gZmFsc2U7CisJCWNvbnN0ci0+aGFzX2dlbmVyYXRlZF92aXJ0dWFsID0gZmFsc2U7CiAJ CWNvbnN0ci0+ZGVmdmFsID0gTlVMTDsKIAkJY29uc3RyLT5taXNzaW5nID0gTlVMTDsKIAkJ Y29uc3RyLT5udW1fZGVmdmFsID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggNDcyMjg1ZDM5 MS4uNzYzODMyNTBjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTY4LDYgKzY4LDcgQEAKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJz ZV9leHByLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCisjaW5jbHVk ZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgi CkBAIC02NjUsNiArNjY2LDcgQEAgSW5zZXJ0UGdBdHRyaWJ1dGVUdXBsZShSZWxhdGlvbiBw Z19hdHRyaWJ1dGVfcmVsLAogCXZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRoYXNkZWYg LSAxXSA9IEJvb2xHZXREYXR1bShuZXdfYXR0cmlidXRlLT5hdHRoYXNkZWYpOwogCXZhbHVl c1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRoYXNtaXNzaW5nIC0gMV0gPSBCb29sR2V0RGF0dW0o bmV3X2F0dHJpYnV0ZS0+YXR0aGFzbWlzc2luZyk7CiAJdmFsdWVzW0FudW1fcGdfYXR0cmli dXRlX2F0dGlkZW50aXR5IC0gMV0gPSBDaGFyR2V0RGF0dW0obmV3X2F0dHJpYnV0ZS0+YXR0 aWRlbnRpdHkpOworCXZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRnZW5lcmF0ZWQgLSAx XSA9IENoYXJHZXREYXR1bShuZXdfYXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQpOwogCXZhbHVl c1tBbnVtX3BnX2F0dHJpYnV0ZV9hdHRpc2Ryb3BwZWQgLSAxXSA9IEJvb2xHZXREYXR1bShu ZXdfYXR0cmlidXRlLT5hdHRpc2Ryb3BwZWQpOwogCXZhbHVlc1tBbnVtX3BnX2F0dHJpYnV0 ZV9hdHRpc2xvY2FsIC0gMV0gPSBCb29sR2V0RGF0dW0obmV3X2F0dHJpYnV0ZS0+YXR0aXNs b2NhbCk7CiAJdmFsdWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dGluaGNvdW50IC0gMV0gPSBJ bnQzMkdldERhdHVtKG5ld19hdHRyaWJ1dGUtPmF0dGluaGNvdW50KTsKQEAgLTIxMDYsNiAr MjEwOCw3IEBAIFN0b3JlQXR0ckRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0 dG51bSwKIAlSZWxhdGlvbglhdHRycmVsOwogCUhlYXBUdXBsZQlhdHR0dXA7CiAJRm9ybV9w Z19hdHRyaWJ1dGUgYXR0U3RydWN0OworCWNoYXIJCWF0dGdlbmVyYXRlZDsKIAlPaWQJCQlh dHRyZGVmT2lkOwogCU9iamVjdEFkZHJlc3MgY29sb2JqZWN0LAogCQkJCWRlZm9iamVjdDsK QEAgLTIxNTMsNiArMjE1Niw3IEBAIFN0b3JlQXR0ckRlZmF1bHQoUmVsYXRpb24gcmVsLCBB dHRyTnVtYmVyIGF0dG51bSwKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIGF0dHJpYnV0ZSAlZCBvZiByZWxhdGlvbiAldSIsCiAJCQkgYXR0bnVtLCBSZWxhdGlv bkdldFJlbGlkKHJlbCkpOwogCWF0dFN0cnVjdCA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VU U1RSVUNUKGF0dHR1cCk7CisJYXR0Z2VuZXJhdGVkID0gYXR0U3RydWN0LT5hdHRnZW5lcmF0 ZWQ7CiAJaWYgKCFhdHRTdHJ1Y3QtPmF0dGhhc2RlZikKIAl7CiAJCUZvcm1fcGdfYXR0cmli dXRlIGRlZkF0dFN0cnVjdDsKQEAgLTIxNzMsNyArMjE3Nyw3IEBAIFN0b3JlQXR0ckRlZmF1 bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJdmFsdWVzQXR0W0FudW1f cGdfYXR0cmlidXRlX2F0dGhhc2RlZiAtIDFdID0gdHJ1ZTsKIAkJcmVwbGFjZXNBdHRbQW51 bV9wZ19hdHRyaWJ1dGVfYXR0aGFzZGVmIC0gMV0gPSB0cnVlOwogCi0JCWlmIChhZGRfY29s dW1uX21vZGUpCisJCWlmIChhZGRfY29sdW1uX21vZGUgJiYgIWF0dGdlbmVyYXRlZCkKIAkJ ewogCQkJZXhwcjIgPSBleHByZXNzaW9uX3BsYW5uZXIoZXhwcjIpOwogCQkJZXN0YXRlID0g Q3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwpAQCAtMjIzNSw3ICsyMjM5LDI2IEBAIFN0b3JlQXR0 ckRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkvKgogCSAqIFJl Y29yZCBkZXBlbmRlbmNpZXMgb24gb2JqZWN0cyB1c2VkIGluIHRoZSBleHByZXNzaW9uLCB0 b28uCiAJICovCi0JcmVjb3JkRGVwZW5kZW5jeU9uRXhwcigmZGVmb2JqZWN0LCBleHByLCBO SUwsIERFUEVOREVOQ1lfTk9STUFMKTsKKwlpZiAoYXR0Z2VuZXJhdGVkKQorCXsKKwkJLyoK KwkJICogR2VuZXJhdGVkIGNvbHVtbjogRHJvcHBpbmcgYW55dGhpbmcgdGhhdCB0aGUgZ2Vu ZXJhdGlvbiBleHByZXNzaW9uCisJCSAqIHJlZmVycyB0byBhdXRvbWF0aWNhbGx5IGRyb3Bz IHRoZSBnZW5lcmF0ZWQgY29sdW1uLgorCQkgKi8KKwkJcmVjb3JkRGVwZW5kZW5jeU9uU2lu Z2xlUmVsRXhwcigmY29sb2JqZWN0LCBleHByLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksCisJ CQkJCQkJCQkJREVQRU5ERU5DWV9BVVRPLAorCQkJCQkJCQkJCURFUEVOREVOQ1lfQVVUTywg ZmFsc2UpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBOb3JtYWwgZGVmYXVsdDogRHJv cHBpbmcgYW55dGhpbmcgdGhhdCB0aGUgZGVmYXVsdCByZWZlcnMgdG8KKwkJICogcmVxdWly ZXMgQ0FTQ0FERSBhbmQgZHJvcHMgdGhlIGRlZmF1bHQgb25seS4KKwkJICovCisJCXJlY29y ZERlcGVuZGVuY3lPblNpbmdsZVJlbEV4cHIoJmRlZm9iamVjdCwgZXhwciwgUmVsYXRpb25H ZXRSZWxpZChyZWwpLAorCQkJCQkJCQkJCURFUEVOREVOQ1lfTk9STUFMLAorCQkJCQkJCQkJ CURFUEVOREVOQ1lfTk9STUFMLCBmYWxzZSk7CisJfQogCiAJLyoKIAkgKiBQb3N0IGNyZWF0 aW9uIGhvb2sgZm9yIGF0dHJpYnV0ZSBkZWZhdWx0cy4KQEAgLTI0OTMsNyArMjUxNiw4IEBA IEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoUmVsYXRpb24gcmVsLAogCiAJCWV4cHIgPSBj b29rRGVmYXVsdChwc3RhdGUsIGNvbERlZi0+cmF3X2RlZmF1bHQsCiAJCQkJCQkgICBhdHAt PmF0dHR5cGlkLCBhdHAtPmF0dHR5cG1vZCwKLQkJCQkJCSAgIE5hbWVTdHIoYXRwLT5hdHRu YW1lKSk7CisJCQkJCQkgICBOYW1lU3RyKGF0cC0+YXR0bmFtZSksCisJCQkJCQkgICBhdHAt PmF0dGdlbmVyYXRlZCk7CiAKIAkJLyoKIAkJICogSWYgdGhlIGV4cHJlc3Npb24gaXMganVz dCBhIE5VTEwgY29uc3RhbnQsIHdlIGRvIG5vdCBib3RoZXIgdG8gbWFrZQpAQCAtMjg2NCw2 ICsyODg4LDQ2IEBAIFNldFJlbGF0aW9uTnVtQ2hlY2tzKFJlbGF0aW9uIHJlbCwgaW50IG51 bWNoZWNrcykKIAloZWFwX2Nsb3NlKHJlbHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAK Ky8qCisgKiBDaGVjayBmb3IgcmVmZXJlbmNlcyB0byBnZW5lcmF0ZWQgY29sdW1ucworICov CitzdGF0aWMgYm9vbAorY2hlY2tfbmVzdGVkX2dlbmVyYXRlZF93YWxrZXIoTm9kZSAqbm9k ZSwgdm9pZCAqY29udGV4dCkKK3sKKwlQYXJzZVN0YXRlICpwc3RhdGUgPSBjb250ZXh0Owor CisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCWVsc2UgaWYgKElzQShu b2RlLCBWYXIpKQorCXsKKwkJVmFyCQkgICAqdmFyID0gKFZhciAqKSBub2RlOworCQlPaWQJ CQlyZWxpZDsKKwkJQXR0ck51bWJlcglhdHRudW07CisKKwkJcmVsaWQgPSBydF9mZXRjaCh2 YXItPnZhcm5vLCBwc3RhdGUtPnBfcnRhYmxlKS0+cmVsaWQ7CisJCWF0dG51bSA9IHZhci0+ dmFyYXR0bm87CisKKwkJaWYgKHJlbGlkICYmIGF0dG51bSAmJiBnZXRfYXR0Z2VuZXJhdGVk KHJlbGlkLCBhdHRudW0pKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIGdlbmVyYXRl ZCBjb2x1bW4gXCIlc1wiIGluIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb24iLAorCQkJ CQkJCWdldF9hdHRuYW1lKHJlbGlkLCBhdHRudW0sIGZhbHNlKSksCisJCQkJCSBlcnJkZXRh aWwoIkEgZ2VuZXJhdGVkIGNvbHVtbiBjYW5ub3QgcmVmZXJlbmNlIGFub3RoZXIgZ2VuZXJh dGVkIGNvbHVtbi4iKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHZhci0+ bG9jYXRpb24pKSk7CisKKwkJcmV0dXJuIGZhbHNlOworCX0KKwllbHNlCisJCXJldHVybiBl eHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGNoZWNrX25lc3RlZF9nZW5lcmF0ZWRfd2Fs a2VyLAorCQkJCQkJCQkJICAodm9pZCAqKSBjb250ZXh0KTsKK30KKworc3RhdGljIHZvaWQK K2NoZWNrX25lc3RlZF9nZW5lcmF0ZWQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2Rl KQoreworCWNoZWNrX25lc3RlZF9nZW5lcmF0ZWRfd2Fsa2VyKG5vZGUsIHBzdGF0ZSk7Cit9 CisKIC8qCiAgKiBUYWtlIGEgcmF3IGRlZmF1bHQgYW5kIGNvbnZlcnQgaXQgdG8gYSBjb29r ZWQgZm9ybWF0IHJlYWR5IGZvcgogICogc3RvcmFnZS4KQEAgLTI4ODEsNyArMjk0NSw4IEBA IGNvb2tEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCU5vZGUgKnJhd19kZWZhdWx0 LAogCQkJT2lkIGF0dHR5cGlkLAogCQkJaW50MzIgYXR0dHlwbW9kLAotCQkJY29uc3QgY2hh ciAqYXR0bmFtZSkKKwkJCWNvbnN0IGNoYXIgKmF0dG5hbWUsCisJCQljaGFyIGF0dGdlbmVy YXRlZCkKIHsKIAlOb2RlCSAgICpleHByOwogCkBAIC0yODkwLDE3ICsyOTU1LDIwIEBAIGNv b2tEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkvKgogCSAqIFRyYW5zZm9ybSByYXcg cGFyc2V0cmVlIHRvIGV4ZWN1dGFibGUgZXhwcmVzc2lvbi4KIAkgKi8KLQlleHByID0gdHJh bnNmb3JtRXhwcihwc3RhdGUsIHJhd19kZWZhdWx0LCBFWFBSX0tJTkRfQ09MVU1OX0RFRkFV TFQpOworCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgcmF3X2RlZmF1bHQsIGF0dGdl bmVyYXRlZCA/IEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OIDogRVhQUl9LSU5EX0NPTFVN Tl9ERUZBVUxUKTsKIAogCS8qCiAJICogTWFrZSBzdXJlIGRlZmF1bHQgZXhwciBkb2VzIG5v dCByZWZlciB0byBhbnkgdmFycyAod2UgbmVlZCB0aGlzIGNoZWNrCiAJICogc2luY2UgdGhl IHBzdGF0ZSBpbmNsdWRlcyB0aGUgdGFyZ2V0IHRhYmxlKS4KIAkgKi8KLQlpZiAoY29udGFp bl92YXJfY2xhdXNlKGV4cHIpKQorCWlmICghYXR0Z2VuZXJhdGVkICYmIGNvbnRhaW5fdmFy X2NsYXVzZShleHByKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCiAJCQkJIGVycm1zZygiY2Fubm90IHVzZSBj b2x1bW4gcmVmZXJlbmNlcyBpbiBkZWZhdWx0IGV4cHJlc3Npb24iKSkpOwogCisJaWYgKGF0 dGdlbmVyYXRlZCkKKwkJY2hlY2tfbmVzdGVkX2dlbmVyYXRlZChwc3RhdGUsIGV4cHIpOwor CiAJLyoKIAkgKiB0cmFuc2Zvcm1FeHByKCkgc2hvdWxkIGhhdmUgYWxyZWFkeSByZWplY3Rl ZCBzdWJxdWVyaWVzLCBhZ2dyZWdhdGVzLAogCSAqIHdpbmRvdyBmdW5jdGlvbnMsIGFuZCBT UkZzLCBiYXNlZCBvbiB0aGUgRVhQUl9LSU5EXyBmb3IgYSBkZWZhdWx0CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKaW5kZXggYjI3ZmY1ZmEzNS4u YmZkY2Q4MTU0NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlv bl9zY2hlbWEuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2No ZW1hLnNxbApAQCAtNTA5LDcgKzUwOSwyOSBAQCBDUkVBVEUgVklFVyBjb2xsYXRpb25fY2hh cmFjdGVyX3NldF9hcHBsaWNhYmlsaXR5IEFTCiAgKiBDT0xVTU5fQ09MVU1OX1VTQUdFIHZp ZXcKICAqLwogCi0tLSBmZWF0dXJlIG5vdCBzdXBwb3J0ZWQKK0NSRUFURSBWSUVXIGNvbHVt bl9jb2x1bW5fdXNhZ2UgQVMKKyAgICBTRUxFQ1QgQ0FTVChjdXJyZW50X2RhdGFiYXNlKCkg QVMgc3FsX2lkZW50aWZpZXIpIEFTIHRhYmxlX2NhdGFsb2csCisgICAgICAgICAgIENBU1Qo bi5uc3BuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyB0YWJsZV9zY2hlbWEsCisgICAgICAg ICAgIENBU1QoYy5yZWxuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyB0YWJsZV9uYW1lLAor ICAgICAgICAgICBDQVNUKGFjLmF0dG5hbWUgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGNvbHVt bl9uYW1lLAorICAgICAgICAgICBDQVNUKGFkLmF0dG5hbWUgQVMgc3FsX2lkZW50aWZpZXIp IEFTIGRlcGVuZGVudF9jb2x1bW4KKworICAgIEZST00gcGdfbmFtZXNwYWNlIG4sIHBnX2Ns YXNzIGMsIHBnX2RlcGVuZCBkLAorICAgICAgICAgcGdfYXR0cmlidXRlIGFjLCBwZ19hdHRy aWJ1dGUgYWQKKworICAgIFdIRVJFIG4ub2lkID0gYy5yZWxuYW1lc3BhY2UKKyAgICAgICAg ICBBTkQgYy5vaWQgPSBhYy5hdHRyZWxpZAorICAgICAgICAgIEFORCBjLm9pZCA9IGFkLmF0 dHJlbGlkCisgICAgICAgICAgQU5EIGQuY2xhc3NpZCA9ICdwZ19jYXRhbG9nLnBnX2NsYXNz Jzo6cmVnY2xhc3MKKyAgICAgICAgICBBTkQgZC5yZWZjbGFzc2lkID0gJ3BnX2NhdGFsb2cu cGdfY2xhc3MnOjpyZWdjbGFzcworICAgICAgICAgIEFORCBkLm9iamlkID0gZC5yZWZvYmpp ZAorICAgICAgICAgIEFORCBjLm9pZCA9IGQub2JqaWQKKyAgICAgICAgICBBTkQgZC5vYmpz dWJpZCA9IGFkLmF0dG51bQorICAgICAgICAgIEFORCBkLnJlZm9ianN1YmlkID0gYWMuYXR0 bnVtCisgICAgICAgICAgQU5EIGFkLmF0dGdlbmVyYXRlZCA8PiAnJworICAgICAgICAgIEFO RCBwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKTsKKworR1JBTlQgU0VMRUNUIE9O IGNvbHVtbl9jb2x1bW5fdXNhZ2UgVE8gUFVCTElDOwogCiAKIC8qCkBAIC02NTYsNyArNjc4 LDcgQEAgQ1JFQVRFIFZJRVcgY29sdW1ucyBBUwogICAgICAgICAgICBDQVNUKGMucmVsbmFt ZSBBUyBzcWxfaWRlbnRpZmllcikgQVMgdGFibGVfbmFtZSwKICAgICAgICAgICAgQ0FTVChh LmF0dG5hbWUgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGNvbHVtbl9uYW1lLAogICAgICAgICAg ICBDQVNUKGEuYXR0bnVtIEFTIGNhcmRpbmFsX251bWJlcikgQVMgb3JkaW5hbF9wb3NpdGlv biwKLSAgICAgICAgICAgQ0FTVChwZ19nZXRfZXhwcihhZC5hZGJpbiwgYWQuYWRyZWxpZCkg QVMgY2hhcmFjdGVyX2RhdGEpIEFTIGNvbHVtbl9kZWZhdWx0LAorICAgICAgICAgICBDQVNU KENBU0UgV0hFTiBhLmF0dGdlbmVyYXRlZCA9ICcnIFRIRU4gcGdfZ2V0X2V4cHIoYWQuYWRi aW4sIGFkLmFkcmVsaWQpIEVORCBBUyBjaGFyYWN0ZXJfZGF0YSkgQVMgY29sdW1uX2RlZmF1 bHQsCiAgICAgICAgICAgIENBU1QoQ0FTRSBXSEVOIGEuYXR0bm90bnVsbCBPUiAodC50eXB0 eXBlID0gJ2QnIEFORCB0LnR5cG5vdG51bGwpIFRIRU4gJ05PJyBFTFNFICdZRVMnIEVORAog ICAgICAgICAgICAgIEFTIHllc19vcl9ubykKICAgICAgICAgICAgICBBUyBpc19udWxsYWJs ZSwKQEAgLTc0NSw4ICs3NjcsOCBAQCBDUkVBVEUgVklFVyBjb2x1bW5zIEFTCiAgICAgICAg ICAgIENBU1Qoc2VxLnNlcW1pbiBBUyBjaGFyYWN0ZXJfZGF0YSkgQVMgaWRlbnRpdHlfbWlu aW11bSwKICAgICAgICAgICAgQ0FTVChDQVNFIFdIRU4gc2VxLnNlcWN5Y2xlIFRIRU4gJ1lF UycgRUxTRSAnTk8nIEVORCBBUyB5ZXNfb3Jfbm8pIEFTIGlkZW50aXR5X2N5Y2xlLAogCi0g ICAgICAgICAgIENBU1QoJ05FVkVSJyBBUyBjaGFyYWN0ZXJfZGF0YSkgQVMgaXNfZ2VuZXJh dGVkLAotICAgICAgICAgICBDQVNUKG51bGwgQVMgY2hhcmFjdGVyX2RhdGEpIEFTIGdlbmVy YXRpb25fZXhwcmVzc2lvbiwKKyAgICAgICAgICAgQ0FTVChDQVNFIFdIRU4gYS5hdHRnZW5l cmF0ZWQgPD4gJycgVEhFTiAnQUxXQVlTJyBFTFNFICdORVZFUicgRU5EIEFTIGNoYXJhY3Rl cl9kYXRhKSBBUyBpc19nZW5lcmF0ZWQsCisgICAgICAgICAgIENBU1QoQ0FTRSBXSEVOIGEu YXR0Z2VuZXJhdGVkIDw+ICcnIFRIRU4gcGdfZ2V0X2V4cHIoYWQuYWRiaW4sIGFkLmFkcmVs aWQpIEVORCBBUyBjaGFyYWN0ZXJfZGF0YSkgQVMgZ2VuZXJhdGlvbl9leHByZXNzaW9uLAog CiAgICAgICAgICAgIENBU1QoQ0FTRSBXSEVOIGMucmVsa2luZCBJTiAoJ3InLCAncCcpIE9S CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjLnJlbGtpbmQgSU4gKCd2JywgJ2YnKSBB TkQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCBhNjFhNjI4NDcxLi5hM2U0ZGIyMDY1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weS5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMv dHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNs dWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAi Zm9yZWlnbi9mZHdhcGkuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgpAQCAtMjg3OCw2 ICsyODc5LDI4IEBAIENvcHlGcm9tKENvcHlTdGF0ZSBjc3RhdGUpCiAJCQl9CiAJCQllbHNl CiAJCQl7CisJCQkJLyoKKwkJCQkgKiBOb3JtYWwgY2FzZTogaW5zZXJ0IHR1cGxlIGludG8g dGFibGUKKwkJCQkgKi8KKworCQkJCS8qCisJCQkJICogQ29tcHV0ZSBzdG9yZWQgZ2VuZXJh dGVkIGNvbHVtbnMKKwkJCQkgKgorCQkJCSAqIFN3aXRjaCBtZW1vcnkgY29udGV4dCBzbyB0 aGF0IHRoZSBuZXcgdHVwbGUgaXMgaW4gdGhlIHNhbWUKKwkJCQkgKiBjb250ZXh0IGFzIHRo ZSBvbGQgb25lLiAgTm90ZSB0aGF0IHdlIGRvbid0IHVzZSB0aGUgc2xvdCdzCisJCQkJICog Y29udGV4dC4KKwkJCQkgKi8KKwkJCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25E ZXNjLT5yZF9hdHQtPmNvbnN0ciAmJgorCQkJCQlyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlv bkRlc2MtPnJkX2F0dC0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkX3N0b3JlZCkKKwkJCQl7CisJ CQkJCWlmIChFeGVjQ29tcHV0ZVN0b3JlZEdlbmVyYXRlZChlc3RhdGUsIHNsb3QpKQorCQkJ CQl7CisJCQkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250 ZXh0KGVzdGF0ZSkpOworCQkJCQkJdHVwbGUgPSBFeGVjQ29weVNsb3RIZWFwVHVwbGUoc2xv dCk7CisJCQkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCQkJCX0K KwkJCQl9CisKIAkJCQkvKgogCQkJCSAqIElmIHRoZSB0YXJnZXQgaXMgYSBwbGFpbiB0YWJs ZSwgY2hlY2sgdGhlIGNvbnN0cmFpbnRzIG9mCiAJCQkJICogdGhlIHR1cGxlLgpAQCAtMzIy MCw3ICszMjQzLDcgQEAgQmVnaW5Db3B5RnJvbShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCWZt Z3JfaW5mbyhpbl9mdW5jX29pZCwgJmluX2Z1bmN0aW9uc1thdHRudW0gLSAxXSk7CiAKIAkJ LyogR2V0IGRlZmF1bHQgaW5mbyBpZiBuZWVkZWQgKi8KLQkJaWYgKCFsaXN0X21lbWJlcl9p bnQoY3N0YXRlLT5hdHRudW1saXN0LCBhdHRudW0pKQorCQlpZiAoIWxpc3RfbWVtYmVyX2lu dChjc3RhdGUtPmF0dG51bWxpc3QsIGF0dG51bSkgJiYgIWF0dC0+YXR0Z2VuZXJhdGVkKQog CQl7CiAJCQkvKiBhdHRyaWJ1dGUgaXMgTk9UIHRvIGJlIGNvcGllZCBmcm9tIGlucHV0ICov CiAJCQkvKiB1c2UgZGVmYXVsdCB2YWx1ZSBpZiBvbmUgZXhpc3RzICovCkBAIC00ODIwLDYg KzQ4NDMsMTEgQEAgQ29weUF0dHJpYnV0ZU91dENTVihDb3B5U3RhdGUgY3N0YXRlLCBjaGFy ICpzdHJpbmcsCiAgKiBvciBOSUwgaWYgdGhlcmUgd2FzIG5vbmUgKGluIHdoaWNoIGNhc2Ug d2Ugd2FudCBhbGwgdGhlIG5vbi1kcm9wcGVkCiAgKiBjb2x1bW5zKS4KICAqCisgKiBXZSBk b24ndCBpbmNsdWRlIGdlbmVyYXRlZCBjb2x1bW5zIGluIHRoZSBnZW5lcmF0ZWQgZnVsbCBs aXN0IGFuZCB3ZSBkb24ndAorICogYWxsb3cgdGhlbSB0byBiZSBzcGVjaWZpZWQgZXhwbGlj aXRseS4gIFRoZXkgZG9uJ3QgbWFrZSBzZW5zZSBmb3IgQ09QWQorICogRlJPTSwgYnV0IHdl IGNvdWxkIHBvc3NpYmx5IGFsbG93IHRoZW0gZm9yIENPUFkgVE8uICBCdXQgdGhpcyB3YXkg aXQncyBhdAorICogbGVhc3QgZW5zdXJlZCB0aGF0IHdoYXRldmVyIHdlIGNvcHkgb3V0IGNh biBiZSBjb3BpZWQgYmFjayBpbi4KKyAqCiAgKiByZWwgY2FuIGJlIE5VTEwgLi4uIGl0J3Mg b25seSB1c2VkIGZvciBlcnJvciByZXBvcnRzLgogICovCiBzdGF0aWMgTGlzdCAqCkBAIC00 ODM3LDYgKzQ4NjUsOCBAQCBDb3B5R2V0QXR0bnVtcyhUdXBsZURlc2MgdHVwRGVzYywgUmVs YXRpb24gcmVsLCBMaXN0ICphdHRuYW1lbGlzdCkKIAkJewogCQkJaWYgKFR1cGxlRGVzY0F0 dHIodHVwRGVzYywgaSktPmF0dGlzZHJvcHBlZCkKIAkJCQljb250aW51ZTsKKwkJCWlmIChU dXBsZURlc2NBdHRyKHR1cERlc2MsIGkpLT5hdHRnZW5lcmF0ZWQpCisJCQkJY29udGludWU7 CiAJCQlhdHRudW1zID0gbGFwcGVuZF9pbnQoYXR0bnVtcywgaSArIDEpOwogCQl9CiAJfQpA QCAtNDg2MSw2ICs0ODkxLDEyIEBAIENvcHlHZXRBdHRudW1zKFR1cGxlRGVzYyB0dXBEZXNj LCBSZWxhdGlvbiByZWwsIExpc3QgKmF0dG5hbWVsaXN0KQogCQkJCQljb250aW51ZTsKIAkJ CQlpZiAobmFtZXN0cmNtcCgmKGF0dC0+YXR0bmFtZSksIG5hbWUpID09IDApCiAJCQkJewor CQkJCQlpZiAoYXR0LT5hdHRnZW5lcmF0ZWQpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCisJCQkJ CQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uIiwKKwkJ CQkJCQkJCQluYW1lKSwKKwkJCQkJCQkJIGVycmRldGFpbCgiR2VuZXJhdGVkIGNvbHVtbnMg Y2Fubm90IGJlIHVzZWQgaW4gQ09QWS4iKSkpOwogCQkJCQlhdHRudW0gPSBhdHQtPmF0dG51 bTsKIAkJCQkJYnJlYWs7CiAJCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRl eCBkMjYzOTAzNjIyLi4xNTA1YTBkODBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwpAQCAtNzQ5LDYgKzc0OSw5IEBAIERlZmluZUluZGV4KE9pZCByZWxhdGlvbklkLAogCS8q CiAJICogV2UgZGlzYWxsb3cgaW5kZXhlcyBvbiBzeXN0ZW0gY29sdW1ucy4gIFRoZXkgd291 bGQgbm90IG5lY2Vzc2FyaWx5IGdldAogCSAqIHVwZGF0ZWQgY29ycmVjdGx5LCBhbmQgdGhl eSBkb24ndCBzZWVtIHVzZWZ1bCBhbnl3YXkuCisJICoKKwkgKiBBbHNvIGRpc2FsbG93IHZp cnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgaW4gaW5kZXhlcyAodXNlIGV4cHJlc3Npb24KKwkg KiBpbmRleCBpbnN0ZWFkKS4KIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgaW5kZXhJbmZvLT5p aV9OdW1JbmRleEF0dHJzOyBpKyspCiAJewpAQCAtNzU4LDEwICs3NjEsMTYgQEAgRGVmaW5l SW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBlcnJtc2coImluZGV4 IGNyZWF0aW9uIG9uIHN5c3RlbSBjb2x1bW5zIGlzIG5vdCBzdXBwb3J0ZWQiKSkpOworCisJ CWlmIChUdXBsZURlc2NBdHRyKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgYXR0bm8gLSAxKS0+ YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJIGVycm1zZygiaW5kZXggY3JlYXRpb24gb24gdmlydHVhbCBnZW5lcmF0ZWQg Y29sdW1ucyBpcyBub3Qgc3VwcG9ydGVkIikpKTsKIAl9CiAKIAkvKgotCSAqIEFsc28gY2hl Y2sgZm9yIHN5c3RlbSBjb2x1bW5zIHVzZWQgaW4gZXhwcmVzc2lvbnMgb3IgcHJlZGljYXRl cy4KKwkgKiBBbHNvIGNoZWNrIGZvciBzeXN0ZW0gYW5kIGdlbmVyYXRlZCBjb2x1bW5zIHVz ZWQgaW4gZXhwcmVzc2lvbnMgb3IKKwkgKiBwcmVkaWNhdGVzLgogCSAqLwogCWlmIChpbmRl eEluZm8tPmlpX0V4cHJlc3Npb25zIHx8IGluZGV4SW5mby0+aWlfUHJlZGljYXRlKQogCXsK QEAgLTc3OCw2ICs3ODcsMjIgQEAgRGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkgZXJy bXNnKCJpbmRleCBjcmVhdGlvbiBvbiBzeXN0ZW0gY29sdW1ucyBpcyBub3Qgc3VwcG9ydGVk IikpKTsKIAkJfQorCisJCS8qCisJCSAqIFhYWCBWaXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5z IGluIGluZGV4IGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMKKwkJICogY291bGQgYmUgc3Vw cG9ydGVkLCBidXQgaXQgbmVlZHMgc3VwcG9ydCBpbgorCQkgKiBSZWxhdGlvbkdldEluZGV4 RXhwcmVzc2lvbnMoKSBhbmQgUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZSgpLgorCQkgKi8K KwkJaSA9IC0xOworCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIoaW5kZXhhdHRycywg aSkpID49IDApCisJCXsKKwkJCUF0dHJOdW1iZXIgIGF0dG5vID0gaSArIEZpcnN0TG93SW52 YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CisKKwkJCWlmIChUdXBsZURlc2NBdHRyKFJlbGF0 aW9uR2V0RGVzY3IocmVsKSwgYXR0bm8gLSAxKS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVU RV9HRU5FUkFURURfVklSVFVBTCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiaW5k ZXggY3JlYXRpb24gb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBpcyBub3Qgc3VwcG9y dGVkIikpKTsKKwkJfQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IGU3MDE3ZTkwZDEuLjc0YzE1ZDFmYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCkBAIC03NzUsNiArNzc1LDkgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAqc3Rt dCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAogCQlpZiAoY29sRGVmLT5pZGVudGl0 eSkKIAkJCWF0dHItPmF0dGlkZW50aXR5ID0gY29sRGVmLT5pZGVudGl0eTsKKworCQlpZiAo Y29sRGVmLT5nZW5lcmF0ZWQpCisJCQlhdHRyLT5hdHRnZW5lcmF0ZWQgPSBjb2xEZWYtPmdl bmVyYXRlZDsKIAl9CiAKIAkvKgpAQCAtODE4LDYgKzgyMSwyNyBAQCBEZWZpbmVSZWxhdGlv bihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAogCSAqLwog CXJlbCA9IHJlbGF0aW9uX29wZW4ocmVsYXRpb25JZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7 CiAKKwkvKgorCSAqIE5vdyBhZGQgYW55IG5ld2x5IHNwZWNpZmllZCBjb2x1bW4gZGVmYXVs dCBhbmQgZ2VuZXJhdGlvbiBleHByZXNzaW9ucworCSAqIHRvIHRoZSBuZXcgcmVsYXRpb24u ICBUaGVzZSBhcmUgcGFzc2VkIHRvIHVzIGluIHRoZSBmb3JtIG9mIHJhdworCSAqIHBhcnNl dHJlZXM7IHdlIG5lZWQgdG8gdHJhbnNmb3JtIHRoZW0gdG8gZXhlY3V0YWJsZSBleHByZXNz aW9uIHRyZWVzCisJICogYmVmb3JlIHRoZXkgY2FuIGJlIGFkZGVkLiBUaGUgbW9zdCBjb252 ZW5pZW50IHdheSB0byBkbyB0aGF0IGlzIHRvCisJICogYXBwbHkgdGhlIHBhcnNlcidzIHRy YW5zZm9ybUV4cHIgcm91dGluZSwgYnV0IHRyYW5zZm9ybUV4cHIgZG9lc24ndAorCSAqIHdv cmsgdW5sZXNzIHdlIGhhdmUgYSBwcmUtZXhpc3RpbmcgcmVsYXRpb24uIFNvLCB0aGUgdHJh bnNmb3JtYXRpb24gaGFzCisJICogdG8gYmUgcG9zdHBvbmVkIHRvIHRoaXMgZmluYWwgc3Rl cCBvZiBDUkVBVEUgVEFCTEUuCisJICoKKwkgKiBUaGlzIG5lZWRzIHRvIGJlIGJlZm9yZSBw cm9jZXNzaW5nIHRoZSBwYXJ0aXRpb25pbmcgY2xhdXNlcyBiZWNhdXNlCisJICogdGhvc2Ug Y291bGQgcmVmZXIgdG8gZ2VuZXJhdGVkIGNvbHVtbnMuCisJICovCisJaWYgKHJhd0RlZmF1 bHRzKQorCQlBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwgcmF3RGVmYXVsdHMsIE5J TCwKKwkJCQkJCQkJICB0cnVlLCB0cnVlLCBmYWxzZSwgcXVlcnlTdHJpbmcpOworCisJLyoK KwkgKiBNYWtlIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb25zIHZpc2libGUgZm9yIHVz ZSBieSBwYXJ0aXRpb25pbmcuCisJICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsK KwogCS8qIFByb2Nlc3MgYW5kIHN0b3JlIHBhcnRpdGlvbiBib3VuZCwgaWYgYW55LiAqLwog CWlmIChzdG10LT5wYXJ0Ym91bmQpCiAJewpAQCAtMTAxMCwxNiArMTAzNCwxMiBAQCBEZWZp bmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklk LAogCX0KIAogCS8qCi0JICogTm93IGFkZCBhbnkgbmV3bHkgc3BlY2lmaWVkIGNvbHVtbiBk ZWZhdWx0IHZhbHVlcyBhbmQgQ0hFQ0sgY29uc3RyYWludHMKLQkgKiB0byB0aGUgbmV3IHJl bGF0aW9uLiAgVGhlc2UgYXJlIHBhc3NlZCB0byB1cyBpbiB0aGUgZm9ybSBvZiByYXcKLQkg KiBwYXJzZXRyZWVzOyB3ZSBuZWVkIHRvIHRyYW5zZm9ybSB0aGVtIHRvIGV4ZWN1dGFibGUg ZXhwcmVzc2lvbiB0cmVlcwotCSAqIGJlZm9yZSB0aGV5IGNhbiBiZSBhZGRlZC4gVGhlIG1v c3QgY29udmVuaWVudCB3YXkgdG8gZG8gdGhhdCBpcyB0bwotCSAqIGFwcGx5IHRoZSBwYXJz ZXIncyB0cmFuc2Zvcm1FeHByIHJvdXRpbmUsIGJ1dCB0cmFuc2Zvcm1FeHByIGRvZXNuJ3QK LQkgKiB3b3JrIHVubGVzcyB3ZSBoYXZlIGEgcHJlLWV4aXN0aW5nIHJlbGF0aW9uLiBTbywg dGhlIHRyYW5zZm9ybWF0aW9uIGhhcwotCSAqIHRvIGJlIHBvc3Rwb25lZCB0byB0aGlzIGZp bmFsIHN0ZXAgb2YgQ1JFQVRFIFRBQkxFLgorCSAqIE5vdyBhZGQgYW55IG5ld2x5IHNwZWNp ZmllZCBDSEVDSyBjb25zdHJhaW50cyB0byB0aGUgbmV3IHJlbGF0aW9uLgorCSAqIFNhbWUg YXMgZm9yIGRlZmF1bHRzIGFib3ZlLCBidXQgdGhlc2UgbmVlZCB0byBjb21lIGFmdGVyIHBh cnRpdGlvbmluZworCSAqIGlzIHNldCB1cC4KIAkgKi8KLQlpZiAocmF3RGVmYXVsdHMgfHwg c3RtdC0+Y29uc3RyYWludHMpCi0JCUFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMocmVsLCBy YXdEZWZhdWx0cywgc3RtdC0+Y29uc3RyYWludHMsCisJaWYgKHN0bXQtPmNvbnN0cmFpbnRz KQorCQlBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwgTklMLCBzdG10LT5jb25zdHJh aW50cywKIAkJCQkJCQkJICB0cnVlLCB0cnVlLCBmYWxzZSwgcXVlcnlTdHJpbmcpOwogCiAJ T2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsIHJlbGF0aW9u SWQpOwpAQCAtMjE3OCw2ICsyMTk4LDEzIEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpzY2hl bWEsIExpc3QgKnN1cGVycywgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQlkZWYtPmlzX25v dF9udWxsIHw9IGF0dHJpYnV0ZS0+YXR0bm90bnVsbDsKIAkJCQkvKiBEZWZhdWx0IGFuZCBv dGhlciBjb25zdHJhaW50cyBhcmUgaGFuZGxlZCBiZWxvdyAqLwogCQkJCW5ld2F0dG5vW3Bh cmVudF9hdHRubyAtIDFdID0gZXhpc3RfYXR0bm87CisKKwkJCQkvKiBDaGVjayBmb3IgR0VO RVJBVEVEIGNvbmZsaWN0cyAqLworCQkJCWlmIChkZWYtPmdlbmVyYXRlZCAhPSBhdHRyaWJ1 dGUtPmF0dGdlbmVyYXRlZCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJCQkgZXJybXNnKCJpbmhlcml0 ZWQgY29sdW1uIFwiJXNcIiBoYXMgYSBnZW5lcmF0aW9uIGNvbmZsaWN0IiwKKwkJCQkJCQkJ CWF0dHJpYnV0ZU5hbWUpKSk7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC0yMTk1LDYgKzIy MjIsNyBAQCBNZXJnZUF0dHJpYnV0ZXMoTGlzdCAqc2NoZW1hLCBMaXN0ICpzdXBlcnMsIGNo YXIgcmVscGVyc2lzdGVuY2UsCiAJCQkJZGVmLT5zdG9yYWdlID0gYXR0cmlidXRlLT5hdHRz dG9yYWdlOwogCQkJCWRlZi0+cmF3X2RlZmF1bHQgPSBOVUxMOwogCQkJCWRlZi0+Y29va2Vk X2RlZmF1bHQgPSBOVUxMOworCQkJCWRlZi0+Z2VuZXJhdGVkID0gYXR0cmlidXRlLT5hdHRn ZW5lcmF0ZWQ7CiAJCQkJZGVmLT5jb2xsQ2xhdXNlID0gTlVMTDsKIAkJCQlkZWYtPmNvbGxP aWQgPSBhdHRyaWJ1dGUtPmF0dGNvbGxhdGlvbjsKIAkJCQlkZWYtPmNvbnN0cmFpbnRzID0g TklMOwpAQCAtNDYzNCw3ICs0NjYyLDkgQEAgQVRSZXdyaXRlVGFibGUoQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLCBPaWQgT0lETmV3SGVhcCwgTE9DS01PREUgbG9ja21vZGUpCiAJCXsKIAkJ CWNhc2UgQ09OU1RSX0NIRUNLOgogCQkJCW5lZWRzY2FuID0gdHJ1ZTsKLQkJCQljb24tPnF1 YWxzdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBjb24tPnF1YWwsIGVzdGF0ZSk7 CisJCQkJY29uLT5xdWFsc3RhdGUgPSBFeGVjUHJlcGFyZUV4cHIoKEV4cHIgKikgZXhwYW5k X2dlbmVyYXRlZF9jb2x1bW5zX2luX2V4cHIoY29uLT5xdWFsLAorCQkJCQkJCQkJCQkJCQkJ CQkJCQkgIG5ld3JlbCA/IG5ld3JlbCA6IG9sZHJlbCksCisJCQkJCQkJCQkJCQkgZXN0YXRl KTsKIAkJCQlicmVhazsKIAkJCWNhc2UgQ09OU1RSX0ZPUkVJR046CiAJCQkJLyogTm90aGlu ZyB0byBkbyBoZXJlICovCkBAIC01NTE1LDYgKzU1NDUsNyBAQCBBVEV4ZWNBZGRDb2x1bW4o TGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJ YXR0cmlidXRlLmF0dGhhc2RlZiA9IGZhbHNlOwogCWF0dHJpYnV0ZS5hdHRoYXNtaXNzaW5n ID0gZmFsc2U7CiAJYXR0cmlidXRlLmF0dGlkZW50aXR5ID0gY29sRGVmLT5pZGVudGl0eTsK KwlhdHRyaWJ1dGUuYXR0Z2VuZXJhdGVkID0gY29sRGVmLT5nZW5lcmF0ZWQ7CiAJYXR0cmli dXRlLmF0dGlzZHJvcHBlZCA9IGZhbHNlOwogCWF0dHJpYnV0ZS5hdHRpc2xvY2FsID0gY29s RGVmLT5pc19sb2NhbDsKIAlhdHRyaWJ1dGUuYXR0aW5oY291bnQgPSBjb2xEZWYtPmluaGNv dW50OwpAQCAtNTU2MCw3ICs1NTkxLDcgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVl dWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkgKiBERUZBVUxU IHZhbHVlIG91dHNpZGUgb2YgdGhlIGhlYXAuICBUaGlzIG1heSBiZSBkaXNhYmxlZCBpbnNp ZGUKIAkJICogQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyBpZiB0aGUgb3B0aW1pemF0aW9u IGNhbm5vdCBiZSBhcHBsaWVkLgogCQkgKi8KLQkJcmF3RW50LT5taXNzaW5nTW9kZSA9IHRy dWU7CisJCXJhd0VudC0+bWlzc2luZ01vZGUgPSAoIWNvbERlZi0+Z2VuZXJhdGVkKTsKIAog CQkvKgogCQkgKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBDUkVBVEUgVEFCTEUs IHNvIGl0IHByb2Nlc3NlcyBhCkBAIC01ODg1LDYgKzU5MTYsMTggQEAgQVRFeGVjRHJvcE5v dE51bGwoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLCBMT0NLTU9ERSBsb2Nr bW9kZSkKIAkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgc3lzdGVtIGNvbHVtbiBcIiVzXCIi LAogCQkJCQkJY29sTmFtZSkpKTsKIAorCS8qCisJICogVmlydHVhbCBnZW5lcmF0ZWQgY29s dW1ucyBkb24ndCB1c2UgdGhlIGF0dG5vdG51bGwgZmllbGQgYnV0IHVzZSBhIGZ1bGwKKwkg KiBDSEVDSyBjb25zdHJhaW50IGluc3RlYWQuICBXZSBjb3VsZCBpbXBsZW1lbnQgaGVyZSB0 aGF0IGl0IGZpbmRzIHRoYXQKKwkgKiBDSEVDSyBjb25zdHJhaW50IGFuZCBkcm9wcyBpdCwg d2hpY2ggaXMga2luZCBvZiB3aGF0IHRoZSBTUUwgc3RhbmRhcmQKKwkgKiB3b3VsZCByZXF1 aXJlIGFueXdheSwgYnV0IHRoYXQgd291bGQgYmUgcXVpdGUgYSBiaXQgbW9yZSB3b3JrLgor CSAqLworCWlmIChhdHRUdXAtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVE X1ZJUlRVQUwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2UgRFJPUCBOT1Qg TlVMTCBvbiB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW4gXCIlc1wiIiwKKwkJCQkJCWNvbE5h bWUpKSk7CisKIAlpZiAoYXR0VHVwLT5hdHRpZGVudGl0eSkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC02MDMzLDYgKzYwNzYs MTcgQEAgQVRFeGVjU2V0Tm90TnVsbChBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9u IHJlbCwKIAkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgc3lzdGVtIGNvbHVtbiBcIiVzXCIi LAogCQkJCQkJY29sTmFtZSkpKTsKIAorCS8qCisJICogWFhYIFdlIG1pZ2h0IHdhbnQgdG8g Y29udmVydCB0aGlzIHRvIGEgQ0hFQ0sgY29uc3RyYWludCBsaWtlIHdlIGRvIGluCisJICog dHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbigpLgorCSAqLworCWlmICgoKEZvcm1fcGdfYXR0 cmlidXRlKSBHRVRTVFJVQ1QodHVwbGUpKS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9H RU5FUkFURURfVklSVFVBTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBT RVQgTk9UIE5VTEwgb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uIFwiJXNcIiIsCisJCQkJ CQljb2xOYW1lKSwKKwkJCQkgZXJyaGludCgiQWRkIGEgQ0hFQ0sgY29uc3RyYWludCBpbnN0 ZWFkLiIpKSk7CisKIAkvKgogCSAqIE9rYXksIGFjdHVhbGx5IHBlcmZvcm0gdGhlIGNhdGFs b2cgY2hhbmdlIC4uLiBpZiBuZWVkZWQKIAkgKi8KQEAgLTYwOTYsNiArNjE1MCwxMiBAQCBB VEV4ZWNDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwK IAkJCQkJCWNvbE5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAogCQkJCSBu ZXdEZWZhdWx0ID8gMCA6IGVycmhpbnQoIlVzZSBBTFRFUiBUQUJMRSAuLi4gQUxURVIgQ09M VU1OIC4uLiBEUk9QIElERU5USVRZIGluc3RlYWQuIikpKTsKIAorCWlmIChUdXBsZURlc2NB dHRyKHR1cGRlc2MsIGF0dG51bSAtIDEpLT5hdHRnZW5lcmF0ZWQpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2co ImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGlzIGEgZ2VuZXJhdGVkIGNvbHVt biIsCisJCQkJCQljb2xOYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwor CiAJLyoKIAkgKiBSZW1vdmUgYW55IG9sZCBkZWZhdWx0IGZvciB0aGUgY29sdW1uLiAgV2Ug dXNlIFJFU1RSSUNUIGhlcmUgZm9yCiAJICogc2FmZXR5LCBidXQgYXQgcHJlc2VudCB3ZSBk byBub3QgZXhwZWN0IGFueXRoaW5nIHRvIGRlcGVuZCBvbiB0aGUKQEAgLTczNzcsNiArNzQz Nyw0NSBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCSAqLwogCWNoZWNrRmtleVBlcm1p c3Npb25zKHBrcmVsLCBwa2F0dG51bSwgbnVtcGtzKTsKIAorCS8qCisJICogQ2hlY2sgc29t ZSB0aGluZ3MgZm9yIGdlbmVyYXRlZCBjb2x1bW5zLgorCSAqLworCWZvciAoaSA9IDA7IGkg PCBudW1ma3M7IGkrKykKKwl7CisJCWNoYXIJCWF0dGdlbmVyYXRlZCA9IFR1cGxlRGVzY0F0 dHIoUmVsYXRpb25HZXREZXNjcihyZWwpLCBma2F0dG51bVtpXSAtIDEpLT5hdHRnZW5lcmF0 ZWQ7CisKKwkJaWYgKGF0dGdlbmVyYXRlZCkKKwkJeworCQkJLyoKKwkJCSAqIENoZWNrIHJl c3RyaWN0aW9ucyBvbiBVUERBVEUvREVMRVRFIGFjdGlvbnMsIHBlciBTUUwgc3RhbmRhcmQK KwkJCSAqLworCQkJaWYgKGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbiA9PSBGS0NPTlNU Ul9BQ1RJT05fU0VUTlVMTCB8fAorCQkJCWZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbiA9 PSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVCB8fAorCQkJCWZrY29uc3RyYWludC0+Zmtf dXBkX2FjdGlvbiA9PSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERSkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVy cm1zZygiaW52YWxpZCBPTiBVUERBVEUgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJh aW50IGNvbnRhaW5pbmcgZ2VuZXJhdGVkIGNvbHVtbiIpKSk7CisJCQlpZiAoZmtjb25zdHJh aW50LT5ma19kZWxfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVROVUxMIHx8CisJCQkJ Zmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVRERUZB VUxUKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9y IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgY29udGFpbmluZyBnZW5lcmF0ZWQgY29sdW1uIikp KTsKKwkJfQorCisJCS8qCisJCSAqIEZLcyBvbiB2aXJ0dWFsIGNvbHVtbnMgYXJlIG5vdCBz dXBwb3J0ZWQuICBUaGlzIHdvdWxkIHJlcXVpcmUKKwkJICogdmFyaW91cyBhZGRpdGlvbmFs IHN1cHBvcnQgaW4gcmlfdHJpZ2dlcnMuYywgaW5jbHVkaW5nIHNwZWNpYWwKKwkJICogaGFu ZGxpbmcgaW4gcmlfTnVsbENoZWNrKCksIHJpX0tleXNFcXVhbCgpLAorCQkgKiBSSV9GS2V5 X2ZrX3VwZF9jaGVja19yZXF1aXJlZCgpIChzaW5jZSBhbGwgdmlydHVhbCBjb2x1bW5zIGFw cGVhcgorCQkgKiBhcyBOVUxMIHRoZXJlKS4gIEFsc28gbm90IHJlYWxseSBwcmFjdGljYWwg YXMgbG9uZyBhcyB5b3UgY2FuJ3QKKwkJICogaW5kZXggdmlydHVhbCBjb2x1bW5zLgorCQkg Ki8KKwkJaWYgKGF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIG9u IHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSkpOworCX0K KwogCS8qCiAJICogTG9vayB1cCB0aGUgZXF1YWxpdHkgb3BlcmF0b3JzIHRvIHVzZSBpbiB0 aGUgY29uc3RyYWludC4KIAkgKgpAQCAtODM3Nyw3ICs4NDc2LDcgQEAgdmFsaWRhdGVDaGVj a0NvbnN0cmFpbnQoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgY29uc3RydHVwKQogCUVTdGF0 ZQkgICAqZXN0YXRlOwogCURhdHVtCQl2YWw7CiAJY2hhcgkgICAqY29uYmluOwotCUV4cHIJ ICAgKm9yaWdleHByOworCU5vZGUJICAgKm9yaWdleHByOwogCUV4cHJTdGF0ZSAgKmV4cHJz dGF0ZTsKIAlUdXBsZURlc2MJdHVwZGVzYzsKIAlIZWFwU2NhbkRlc2Mgc2NhbjsKQEAgLTg0 MTIsOCArODUxMSw4IEBAIHZhbGlkYXRlQ2hlY2tDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwg SGVhcFR1cGxlIGNvbnN0cnR1cCkKIAkJZWxvZyhFUlJPUiwgIm51bGwgY29uYmluIGZvciBj b25zdHJhaW50ICV1IiwKIAkJCSBjb25zdHJGb3JtLT5vaWQpOwogCWNvbmJpbiA9IFRleHRE YXR1bUdldENTdHJpbmcodmFsKTsKLQlvcmlnZXhwciA9IChFeHByICopIHN0cmluZ1RvTm9k ZShjb25iaW4pOwotCWV4cHJzdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcihvcmlnZXhwciwgZXN0 YXRlKTsKKwlvcmlnZXhwciA9IHN0cmluZ1RvTm9kZShjb25iaW4pOworCWV4cHJzdGF0ZSA9 IEV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5f ZXhwcihvcmlnZXhwciwgcmVsKSwgZXN0YXRlKTsKIAogCWVjb250ZXh0ID0gR2V0UGVyVHVw bGVFeHByQ29udGV4dChlc3RhdGUpOwogCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJl bCk7CkBAIC05MDYyLDggKzkxNjEsOSBAQCBBVFByZXBBbHRlckNvbHVtblR5cGUoTGlzdCAq KndxdWV1ZSwKIAkJCQkJICAgbGlzdF9tYWtlMV9vaWQocmVsLT5yZF9yZWwtPnJlbHR5cGUp LAogCQkJCQkgICBmYWxzZSk7CiAKLQlpZiAodGFiLT5yZWxraW5kID09IFJFTEtJTkRfUkVM QVRJT04gfHwKLQkJdGFiLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUp CisJaWYgKCh0YWItPnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiB8fAorCQkgdGFiLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICYmCisJCWF0dFR1cC0+YXR0 Z2VuZXJhdGVkICE9IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKIAl7CiAJCS8qCiAJ CSAqIFNldCB1cCBhbiBleHByZXNzaW9uIHRvIHRyYW5zZm9ybSB0aGUgb2xkIGRhdGEgdmFs dWUgdG8gdGhlIG5ldwpAQCAtOTM1MiwxMCArOTQ1MiwxOCBAQCBBVEV4ZWNBbHRlckNvbHVt blR5cGUoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJ CUNPRVJDRV9JTVBMSUNJVF9DQVNULAogCQkJCQkJCQkJCQktMSk7CiAJCWlmIChkZWZhdWx0 ZXhwciA9PSBOVUxMKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09E RV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCSBlcnJtc2coImRlZmF1bHQgZm9yIGNvbHVt biBcIiVzXCIgY2Fubm90IGJlIGNhc3QgYXV0b21hdGljYWxseSB0byB0eXBlICVzIiwKLQkJ CQkJCQljb2xOYW1lLCBmb3JtYXRfdHlwZV9iZSh0YXJnZXR0eXBlKSkpKTsKKwkJeworCQkJ aWYgKGF0dFR1cC0+YXR0Z2VuZXJhdGVkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJCSBlcnJtc2coImdl bmVyYXRpb24gZXhwcmVzc2lvbiBmb3IgY29sdW1uIFwiJXNcIiBjYW5ub3QgYmUgY2FzdCBh dXRvbWF0aWNhbGx5IHRvIHR5cGUgJXMiLAorCQkJCQkJCQljb2xOYW1lLCBmb3JtYXRfdHlw ZV9iZSh0YXJnZXR0eXBlKSkpKTsKKwkJCWVsc2UKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQkgZXJybXNn KCJkZWZhdWx0IGZvciBjb2x1bW4gXCIlc1wiIGNhbm5vdCBiZSBjYXN0IGF1dG9tYXRpY2Fs bHkgdG8gdHlwZSAlcyIsCisJCQkJCQkJCWNvbE5hbWUsIGZvcm1hdF90eXBlX2JlKHRhcmdl dHR5cGUpKSkpOworCQl9CiAJfQogCWVsc2UKIAkJZGVmYXVsdGV4cHIgPSBOVUxMOwpAQCAt OTQzMSw2ICs5NTM5LDIxIEBAIEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCSAqLwogCQkJCQkJQXNzZXJ0KGZvdW5k T2JqZWN0Lm9iamVjdFN1YklkID09IDApOwogCQkJCQl9CisJCQkJCWVsc2UgaWYgKHJlbEtp bmQgPT0gUkVMS0lORF9SRUxBVElPTiAmJgorCQkJCQkJCSBmb3VuZE9iamVjdC5vYmplY3RT dWJJZCAhPSAwICYmCisJCQkJCQkJIGdldF9hdHRnZW5lcmF0ZWQoZm91bmRPYmplY3Qub2Jq ZWN0SWQsIGZvdW5kT2JqZWN0Lm9iamVjdFN1YklkKSkKKwkJCQkJeworCQkJCQkJLyoKKwkJ CQkJCSAqIENoYW5naW5nIHRoZSB0eXBlIG9mIGEgY29sdW1uIHRoYXQgaXMgdXNlZCBieSBh CisJCQkJCQkgKiBnZW5lcmF0ZWQgY29sdW1uIGlzIG5vdCBhbGxvd2VkIGJ5IFNRTCBzdGFu ZGFyZC4KKwkJCQkJCSAqIEl0IG1pZ2h0IGJlIGRvYWJsZSB3aXRoIHNvbWUgdGhpbmtpbmcg YW5kIGVmZm9ydC4KKwkJCQkJCSAqLworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJjYW5u b3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgZ2VuZXJhdGVkIGNvbHVtbiIp LAorCQkJCQkJCQkgZXJyZGV0YWlsKCJDb2x1bW4gXCIlc1wiIGlzIHVzZWQgYnkgZ2VuZXJh dGVkIGNvbHVtbiBcIiVzXCIuIiwKKwkJCQkJCQkJCQkgICBjb2xOYW1lLCBnZXRfYXR0bmFt ZShmb3VuZE9iamVjdC5vYmplY3RJZCwgZm91bmRPYmplY3Qub2JqZWN0U3ViSWQsIGZhbHNl KSkpKTsKKwkJCQkJfQogCQkJCQllbHNlCiAJCQkJCXsKIAkJCQkJCS8qIE5vdCBleHBlY3Rp bmcgYW55IG90aGVyIGRpcmVjdCBkZXBlbmRlbmNpZXMuLi4gKi8KQEAgLTk1NzUsNyArOTY5 OCw4IEBAIEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJl bGF0aW9uIHJlbCwKIAkvKgogCSAqIE5vdyBzY2FuIGZvciBkZXBlbmRlbmNpZXMgb2YgdGhp cyBjb2x1bW4gb24gb3RoZXIgdGhpbmdzLiAgVGhlIG9ubHkKIAkgKiB0aGluZyB3ZSBzaG91 bGQgZmluZCBpcyB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgY29sdW1uIGRhdGF0eXBlLCB3aGlj aCB3ZQotCSAqIHdhbnQgdG8gcmVtb3ZlLCBhbmQgcG9zc2libHkgYSBjb2xsYXRpb24gZGVw ZW5kZW5jeS4KKwkgKiB3YW50IHRvIHJlbW92ZSwgcG9zc2libHkgYSBjb2xsYXRpb24gZGVw ZW5kZW5jeSwgYW5kIGRlcGVuZGVuY2llcyBvbgorCSAqIG90aGVyIGNvbHVtbnMgaWYgaXQg aXMgYSBnZW5lcmF0ZWQgY29sdW1uLgogCSAqLwogCVNjYW5LZXlJbml0KCZrZXlbMF0sCiAJ CQkJQW51bV9wZ19kZXBlbmRfY2xhc3NpZCwKQEAgLTk1OTYsMTUgKzk3MjAsMjYgQEAgQVRF eGVjQWx0ZXJDb2x1bW5UeXBlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LAogCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKGRlcFR1cCA9IHN5c3RhYmxlX2dldG5leHQo c2NhbikpKQogCXsKIAkJRm9ybV9wZ19kZXBlbmQgZm91bmREZXAgPSAoRm9ybV9wZ19kZXBl bmQpIEdFVFNUUlVDVChkZXBUdXApOworCQlPYmplY3RBZGRyZXNzIGZvdW5kT2JqZWN0Owog Ci0JCWlmIChmb3VuZERlcC0+ZGVwdHlwZSAhPSBERVBFTkRFTkNZX05PUk1BTCkKKwkJZm91 bmRPYmplY3QuY2xhc3NJZCA9IGZvdW5kRGVwLT5yZWZjbGFzc2lkOworCQlmb3VuZE9iamVj dC5vYmplY3RJZCA9IGZvdW5kRGVwLT5yZWZvYmppZDsKKwkJZm91bmRPYmplY3Qub2JqZWN0 U3ViSWQgPSBmb3VuZERlcC0+cmVmb2Jqc3ViaWQ7CisKKwkJaWYgKGZvdW5kRGVwLT5kZXB0 eXBlICE9IERFUEVOREVOQ1lfTk9STUFMICYmCisJCQlmb3VuZERlcC0+ZGVwdHlwZSAhPSBE RVBFTkRFTkNZX0FVVE8pCiAJCQllbG9nKEVSUk9SLCAiZm91bmQgdW5leHBlY3RlZCBkZXBl bmRlbmN5IHR5cGUgJyVjJyIsCiAJCQkJIGZvdW5kRGVwLT5kZXB0eXBlKTsKIAkJaWYgKCEo Zm91bmREZXAtPnJlZmNsYXNzaWQgPT0gVHlwZVJlbGF0aW9uSWQgJiYKIAkJCSAgZm91bmRE ZXAtPnJlZm9iamlkID09IGF0dFR1cC0+YXR0dHlwaWQpICYmCiAJCQkhKGZvdW5kRGVwLT5y ZWZjbGFzc2lkID09IENvbGxhdGlvblJlbGF0aW9uSWQgJiYKLQkJCSAgZm91bmREZXAtPnJl Zm9iamlkID09IGF0dFR1cC0+YXR0Y29sbGF0aW9uKSkKLQkJCWVsb2coRVJST1IsICJmb3Vu ZCB1bmV4cGVjdGVkIGRlcGVuZGVuY3kgZm9yIGNvbHVtbiIpOworCQkJICBmb3VuZERlcC0+ cmVmb2JqaWQgPT0gYXR0VHVwLT5hdHRjb2xsYXRpb24pICYmCisJCQkhKGZvdW5kRGVwLT5y ZWZjbGFzc2lkID09IFJlbGF0aW9uUmVsYXRpb25JZCAmJgorCQkJICBmb3VuZERlcC0+cmVm b2JqaWQgPT0gUmVsYXRpb25HZXRSZWxpZChyZWwpICYmCisJCQkgIGZvdW5kRGVwLT5yZWZv YmpzdWJpZCAhPSAwKQorCQkJKQorCQkJZWxvZyhFUlJPUiwgImZvdW5kIHVuZXhwZWN0ZWQg ZGVwZW5kZW5jeSBmb3IgY29sdW1uOiAlcyIsCisJCQkJIGdldE9iamVjdERlc2NyaXB0aW9u KCZmb3VuZE9iamVjdCkpOwogCiAJCUNhdGFsb2dUdXBsZURlbGV0ZShkZXBSZWwsICZkZXBU dXAtPnRfc2VsZik7CiAJfQpAQCAtMTM3MzMsNiArMTM4NjgsMTggQEAgQ29tcHV0ZVBhcnRp dGlvbkF0dHJzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVsYXRpb24gcmVsLCBMaXN0ICpwYXJ0 UGFyYW1zLCBBdHRyTnUKIAkJCQkJCQkJcGVsZW0tPm5hbWUpLAogCQkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIHBlbGVtLT5sb2NhdGlvbikpKTsKIAorCQkJLyoKKwkJCSAq IFNvbWUgZ2VuZXJhdGVkIGNvbHVtbnMgY291bGQgcGVyaGFwcyBiZSBzdXBwb3J0ZWQgaW4g cGFydGl0aW9uCisJCQkgKiBleHByZXNzaW9ucyBpbnN0ZWFkOyBzZWUgYmVsb3cuCisJCQkg Ki8KKwkJCWlmIChhdHRmb3JtLT5hdHRnZW5lcmF0ZWQpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CSBlcnJtc2coInVzaW5nIGdlbmVyYXRlZCBjb2x1bW4gaW4gcGFydGl0aW9uIGtleSBpcyBu b3Qgc3VwcG9ydGVkIiksCisJCQkJCQkgZXJyZGV0YWlsKCJDb2x1bW4gXCIlc1wiIGlzIGEg Z2VuZXJhdGVkIGNvbHVtbi4iLAorCQkJCQkJCQkgICBwZWxlbS0+bmFtZSksCisJCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgcGVsZW0tPmxvY2F0aW9uKSkpOworCiAJCQlw YXJ0YXR0cnNbYXR0bl0gPSBhdHRmb3JtLT5hdHRudW07CiAJCQlhdHR0eXBlID0gYXR0Zm9y bS0+YXR0dHlwaWQ7CiAJCQlhdHRjb2xsYXRpb24gPSBhdHRmb3JtLT5hdHRjb2xsYXRpb247 CkBAIC0xMzgyMCw2ICsxMzk2NywzNiBAQCBDb21wdXRlUGFydGl0aW9uQXR0cnMoUGFyc2VT dGF0ZSAqcHN0YXRlLCBSZWxhdGlvbiByZWwsIExpc3QgKnBhcnRQYXJhbXMsIEF0dHJOdQog CQkJCQkJCQkgZXJybXNnKCJwYXJ0aXRpb24ga2V5IGV4cHJlc3Npb25zIGNhbm5vdCBjb250 YWluIHN5c3RlbSBjb2x1bW4gcmVmZXJlbmNlcyIpKSk7CiAJCQkJfQogCisJCQkJLyoKKwkJ CQkgKiBHZW5lcmF0ZWQgY29sdW1ucyBpbiBwYXJ0aXRpb24ga2V5IGV4cHJlc3Npb25zOgor CQkJCSAqCisJCQkJICogLSBTdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMgY2Fubm90IHdvcms6 IFRoZXkgYXJlIGNvbXB1dGVkCisJCQkJICogICBhZnRlciBCRUZPUkUgdHJpZ2dlcnMsIGJ1 dCBwYXJ0aXRpb24gcm91dGluZyBpcyBkb25lCisJCQkJICogICBiZWZvcmUgYWxsIHRyaWdn ZXJzLgorCQkJCSAqCisJCQkJICogLSBWaXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGNvdWxk IHdvcmsuICBCdXQgdGhlcmUgaXMgYQorCQkJCSAqICAgcHJvYmxlbSB3aGVuIGRyb3BwaW5n IHN1Y2ggYSB0YWJsZTogRHJvcHBpbmcgYSB0YWJsZQorCQkJCSAqICAgY2FsbHMgcmVsYXRp b25fb3BlbigpLCB3aGljaCBjYXVzZXMgcGFydGl0aW9uIGtleXMgdG8gYmUKKwkJCQkgKiAg IGNvbnN0cnVjdGVkIGZvciB0aGUgcGFydGNhY2hlLCBidXQgYXQgdGhhdCBwb2ludCB0aGUK KwkJCQkgKiAgIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBpcyBhbHJlYWR5IGRlbGV0ZWQgKHRo cm91Z2gKKwkJCQkgKiAgIGRlcGVuZGVuY2llcyksIHNvIHRoaXMgd2lsbCBmYWlsLiAgU28g aWYgeW91IHJlbW92ZSB0aGUKKwkJCQkgKiAgIHJlc3RyaWN0aW9uIGJlbG93LCB0aGluZ3Mg d2lsbCBhcHBlYXIgdG8gd29yaywgYnV0IHlvdQorCQkJCSAqICAgY2FuJ3QgZHJvcCB0aGUg dGFibGUuIDotKAorCQkJCSAqLworCQkJCWkgPSAtMTsKKwkJCQl3aGlsZSAoKGkgPSBibXNf bmV4dF9tZW1iZXIoZXhwcl9hdHRycywgaSkpID49IDApCisJCQkJeworCQkJCQlBdHRyTnVt YmVyICBhdHRubyA9IGkgKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOwor CisJCQkJCWlmIChUdXBsZURlc2NBdHRyKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgYXR0bm8g LSAxKS0+YXR0Z2VuZXJhdGVkKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCQkgZXJybXNn KCJ1c2luZyBnZW5lcmF0ZWQgY29sdW1uIGluIHBhcnRpdGlvbiBrZXkgaXMgbm90IHN1cHBv cnRlZCIpLAorCQkJCQkJCQkgZXJyZGV0YWlsKCJDb2x1bW4gXCIlc1wiIGlzIGEgZ2VuZXJh dGVkIGNvbHVtbi4iLAorCQkJCQkJCQkJCSAgIGdldF9hdHRuYW1lKFJlbGF0aW9uR2V0UmVs aWQocmVsKSwgYXR0bm8sIGZhbHNlKSksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBwZWxlbS0+bG9jYXRpb24pKSk7CisJCQkJfQorCiAJCQkJLyoKIAkJCQkgKiBX aGlsZSBpdCBpcyBub3QgZXhhY3RseSAqd3JvbmcqIGZvciBhIHBhcnRpdGlvbiBleHByZXNz aW9uCiAJCQkJICogdG8gYmUgYSBjb25zdGFudCwgaXQgc2VlbXMgYmV0dGVyIHRvIHJlamVj dCBzdWNoIGtleXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2Vy LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggMmRhZmZhZThjZC4u NDVmZWY2MGEyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtNDQsNiArNDQsNyBA QAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBhcnNl ci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXdyaXRl L3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5o IgpAQCAtNzQsOCArNzUsOSBAQCBzdGF0aWMgaW50CU15VHJpZ2dlckRlcHRoID0gMDsKICAq IHRoZXkgdXNlLCBzbyB3ZSBsZXQgdGhlbSBiZSBkdXBsaWNhdGVkLiAgQmUgc3VyZSB0byB1 cGRhdGUgYWxsIGlmIG9uZSBuZWVkcwogICogdG8gYmUgY2hhbmdlZCwgaG93ZXZlci4KICAq LwotI2RlZmluZSBHZXRVcGRhdGVkQ29sdW1ucyhyZWxpbmZvLCBlc3RhdGUpIFwKLQkoZXhl Y19ydF9mZXRjaCgocmVsaW5mbyktPnJpX1JhbmdlVGFibGVJbmRleCwgZXN0YXRlKS0+dXBk YXRlZENvbHMpCisjZGVmaW5lIEdldEFsbFVwZGF0ZWRDb2x1bW5zKHJlbGluZm8sIGVzdGF0 ZSkgXAorCShibXNfdW5pb24oZXhlY19ydF9mZXRjaCgocmVsaW5mbyktPnJpX1JhbmdlVGFi bGVJbmRleCwgZXN0YXRlKS0+dXBkYXRlZENvbHMsIFwKKwkJCSAgIGV4ZWNfcnRfZmV0Y2go KHJlbGluZm8pLT5yaV9SYW5nZVRhYmxlSW5kZXgsIGVzdGF0ZSktPmV4dHJhVXBkYXRlZENv bHMpKQogCiAvKiBMb2NhbCBmdW5jdGlvbiBwcm90b3R5cGVzICovCiBzdGF0aWMgdm9pZCBD b252ZXJ0VHJpZ2dlclRvRksoQ3JlYXRlVHJpZ1N0bXQgKnN0bXQsIE9pZCBmdW5jb2lkKTsK QEAgLTEwMiw2ICsxMDQsNyBAQCBzdGF0aWMgdm9pZCBBZnRlclRyaWdnZXJTYXZlRXZlbnQo RVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCQkJCSAgVHJhbnNp dGlvbkNhcHR1cmVTdGF0ZSAqdHJhbnNpdGlvbl9jYXB0dXJlKTsKIHN0YXRpYyB2b2lkIEFm dGVyVHJpZ2dlckVubGFyZ2VRdWVyeVN0YXRlKHZvaWQpOwogc3RhdGljIGJvb2wgYmVmb3Jl X3N0bXRfdHJpZ2dlcnNfZmlyZWQoT2lkIHJlbGlkLCBDbWRUeXBlIGNtZFR5cGUpOworc3Rh dGljIHZvaWQgY2hlY2tfbW9kaWZpZWRfdmlydHVhbF9nZW5lcmF0ZWQoVHVwbGVEZXNjIHR1 cGRlc2MsIEhlYXBUdXBsZSB0dXBsZSk7CiAKIAogLyoKQEAgLTYzOCw2ICs2NDEsMjUgQEAg Q3JlYXRlVHJpZ2dlcihDcmVhdGVUcmlnU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlT dHJpbmcsCiAJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKIAkJCQkJCQkJIGVycm1zZygiQkVGT1JFIHRyaWdnZXIncyBXSEVOIGNvbmRpdGlvbiBj YW5ub3QgcmVmZXJlbmNlIE5FVyBzeXN0ZW0gY29sdW1ucyIpLAogCQkJCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgdmFyLT5sb2NhdGlvbikpKTsKKwkJCQkJaWYgKFRSSUdH RVJfRk9SX0JFRk9SRSh0Z3R5cGUpICYmCisJCQkJCQl2YXItPnZhcmF0dG5vID09IDAgJiYK KwkJCQkJCVJlbGF0aW9uR2V0RGVzY3IocmVsKS0+Y29uc3RyICYmCisJCQkJCQkoUmVsYXRp b25HZXREZXNjcihyZWwpLT5jb25zdHItPmhhc19nZW5lcmF0ZWRfc3RvcmVkIHx8CisJCQkJ CQkgUmVsYXRpb25HZXREZXNjcihyZWwpLT5jb25zdHItPmhhc19nZW5lcmF0ZWRfdmlydHVh bCkpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQkgZXJybXNnKCJCRUZPUkUgdHJp Z2dlcidzIFdIRU4gY29uZGl0aW9uIGNhbm5vdCByZWZlcmVuY2UgTkVXIGdlbmVyYXRlZCBj b2x1bW5zIiksCisJCQkJCQkJCSBlcnJkZXRhaWwoIkEgd2hvbGUtcm93IHJlZmVyZW5jZSBp cyB1c2VkIGFuZCB0aGUgdGFibGUgY29udGFpbnMgZ2VuZXJhdGVkIGNvbHVtbnMuIiksCisJ CQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCB2YXItPmxvY2F0aW9uKSkpOwor CQkJCQlpZiAoVFJJR0dFUl9GT1JfQkVGT1JFKHRndHlwZSkgJiYKKwkJCQkJCXZhci0+dmFy YXR0bm8gPiAwICYmCisJCQkJCQlUdXBsZURlc2NBdHRyKFJlbGF0aW9uR2V0RGVzY3IocmVs KSwgdmFyLT52YXJhdHRubyAtIDEpLT5hdHRnZW5lcmF0ZWQpCisJCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCQkJCQkgZXJybXNnKCJCRUZPUkUgdHJpZ2dlcidzIFdIRU4gY29uZGl0aW9u IGNhbm5vdCByZWZlcmVuY2UgTkVXIGdlbmVyYXRlZCBjb2x1bW5zIiksCisJCQkJCQkJCSBl cnJkZXRhaWwoIkNvbHVtbiBcIiVzXCIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLiIsCisJCQkJ CQkJCQkJICAgTmFtZVN0cihUdXBsZURlc2NBdHRyKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwg dmFyLT52YXJhdHRubyAtIDEpLT5hdHRuYW1lKSksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCB2YXItPmxvY2F0aW9uKSkpOwogCQkJCQlicmVhazsKIAkJCQlkZWZh dWx0OgogCQkJCQkvKiBjYW4ndCBoYXBwZW4gd2l0aG91dCBhZGRfbWlzc2luZ19mcm9tLCBz byBqdXN0IGVsb2cgKi8KQEAgLTI1NjMsNiArMjU4NSw3IEBAIEV4ZWNCUkluc2VydFRyaWdn ZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCWhlYXBf ZnJlZXR1cGxlKHNsb3R0dXBsZSk7CiAJCQlyZXR1cm4gTlVMTDsJCS8qICJkbyBub3RoaW5n IiAqLwogCQl9CisJCWNoZWNrX21vZGlmaWVkX3ZpcnR1YWxfZ2VuZXJhdGVkKFJlbGF0aW9u R2V0RGVzY3IocmVsaW5mby0+cmlfUmVsYXRpb25EZXNjKSwgbmV3dHVwbGUpOwogCX0KIAog CWlmIChuZXd0dXBsZSAhPSBzbG90dHVwbGUpCkBAIC0yOTMyLDcgKzI5NTUsNyBAQCBFeGVj QlNVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5m bykKIAkJCQkJCQkJICAgQ01EX1VQREFURSkpCiAJCXJldHVybjsKIAotCXVwZGF0ZWRDb2xz ID0gR2V0VXBkYXRlZENvbHVtbnMocmVsaW5mbywgZXN0YXRlKTsKKwl1cGRhdGVkQ29scyA9 IEdldEFsbFVwZGF0ZWRDb2x1bW5zKHJlbGluZm8sIGVzdGF0ZSk7CiAKIAlMb2NUcmlnZ2Vy RGF0YS50eXBlID0gVF9UcmlnZ2VyRGF0YTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19ldmVudCA9 IFRSSUdHRVJfRVZFTlRfVVBEQVRFIHwKQEAgLTI5ODEsNyArMzAwNCw3IEBAIEV4ZWNBU1Vw ZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAog CWlmICh0cmlnZGVzYyAmJiB0cmlnZGVzYy0+dHJpZ191cGRhdGVfYWZ0ZXJfc3RhdGVtZW50 KQogCQlBZnRlclRyaWdnZXJTYXZlRXZlbnQoZXN0YXRlLCByZWxpbmZvLCBUUklHR0VSX0VW RU5UX1VQREFURSwKIAkJCQkJCQkgIGZhbHNlLCBOVUxMLCBOVUxMLCBOSUwsCi0JCQkJCQkJ ICBHZXRVcGRhdGVkQ29sdW1ucyhyZWxpbmZvLCBlc3RhdGUpLAorCQkJCQkJCSAgR2V0QWxs VXBkYXRlZENvbHVtbnMocmVsaW5mbywgZXN0YXRlKSwKIAkJCQkJCQkgIHRyYW5zaXRpb25f Y2FwdHVyZSk7CiB9CiAKQEAgLTMwNDcsNyArMzA3MCw3IEBAIEV4ZWNCUlVwZGF0ZVRyaWdn ZXJzKEVTdGF0ZSAqZXN0YXRlLCBFUFFTdGF0ZSAqZXBxc3RhdGUsCiAJTG9jVHJpZ2dlckRh dGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJTG9jVHJpZ2dl ckRhdGEudGdfb2xkdGFibGUgPSBOVUxMOwogCUxvY1RyaWdnZXJEYXRhLnRnX25ld3RhYmxl ID0gTlVMTDsKLQl1cGRhdGVkQ29scyA9IEdldFVwZGF0ZWRDb2x1bW5zKHJlbGluZm8sIGVz dGF0ZSk7CisJdXBkYXRlZENvbHMgPSBHZXRBbGxVcGRhdGVkQ29sdW1ucyhyZWxpbmZvLCBl c3RhdGUpOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykK IAl7CiAJCVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rlc2MtPnRyaWdnZXJzW2ldOwpA QCAtMzA3OSw2ICszMTAyLDcgQEAgRXhlY0JSVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3Rh dGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJCQloZWFwX2ZyZWV0dXBsZSh0cmlndHVwbGUp OwogCQkJcmV0dXJuIE5VTEw7CQkvKiAiZG8gbm90aGluZyIgKi8KIAkJfQorCQljaGVja19t b2RpZmllZF92aXJ0dWFsX2dlbmVyYXRlZChSZWxhdGlvbkdldERlc2NyKHJlbGluZm8tPnJp X1JlbGF0aW9uRGVzYyksIG5ld3R1cGxlKTsKIAl9CiAJaWYgKHRyaWd0dXBsZSAhPSBmZHdf dHJpZ3R1cGxlICYmIHRyaWd0dXBsZSAhPSBuZXd0dXBsZSkKIAkJaGVhcF9mcmVldHVwbGUo dHJpZ3R1cGxlKTsKQEAgLTMxMzcsNyArMzE2MSw3IEBAIEV4ZWNBUlVwZGF0ZVRyaWdnZXJz KEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCiAJCUFmdGVyVHJp Z2dlclNhdmVFdmVudChlc3RhdGUsIHJlbGluZm8sIFRSSUdHRVJfRVZFTlRfVVBEQVRFLAog CQkJCQkJCSAgdHJ1ZSwgdHJpZ3R1cGxlLCBuZXd0dXBsZSwgcmVjaGVja0luZGV4ZXMsCi0J CQkJCQkJICBHZXRVcGRhdGVkQ29sdW1ucyhyZWxpbmZvLCBlc3RhdGUpLAorCQkJCQkJCSAg R2V0QWxsVXBkYXRlZENvbHVtbnMocmVsaW5mbywgZXN0YXRlKSwKIAkJCQkJCQkgIHRyYW5z aXRpb25fY2FwdHVyZSk7CiAJCWlmICh0cmlndHVwbGUgIT0gZmR3X3RyaWd0dXBsZSkKIAkJ CWhlYXBfZnJlZXR1cGxlKHRyaWd0dXBsZSk7CkBAIC0zNTAwLDYgKzM1MjQsNyBAQCBUcmln Z2VyRW5hYmxlZChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAog CQkJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5 X2N4dCk7CiAJCQl0Z3F1YWwgPSBzdHJpbmdUb05vZGUodHJpZ2dlci0+dGdxdWFsKTsKKwkJ CXRncXVhbCA9IChOb2RlICopIGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKHRn cXVhbCwgcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjKTsKIAkJCS8qIENoYW5nZSByZWZlcmVu Y2VzIHRvIE9MRCBhbmQgTkVXIHRvIElOTkVSX1ZBUiBhbmQgT1VURVJfVkFSICovCiAJCQlD aGFuZ2VWYXJOb2Rlcyh0Z3F1YWwsIFBSUzJfT0xEX1ZBUk5PLCBJTk5FUl9WQVIsIDApOwog CQkJQ2hhbmdlVmFyTm9kZXModGdxdWFsLCBQUlMyX05FV19WQVJOTywgT1VURVJfVkFSLCAw KTsKQEAgLTYxNzksMyArNjIwNCwzNCBAQCBwZ190cmlnZ2VyX2RlcHRoKFBHX0ZVTkNUSU9O X0FSR1MpCiB7CiAJUEdfUkVUVVJOX0lOVDMyKE15VHJpZ2dlckRlcHRoKTsKIH0KKworLyoK KyAqIENoZWNrIHdoZXRoZXIgYSB0cmlnZ2VyIG1vZGlmaWVkIGEgdmlydHVhbCBnZW5lcmF0 ZWQgY29sdW1uIGFuZCBlcnJvciBpZgorICogc28uCisgKgorICogV2UgbmVlZCB0byBjaGVj ayB0aGlzIHNvIHRoYXQgd2UgZG9uJ3QgZW5kIHVwIHN0b3JpbmcgYSBub24tbnVsbCB2YWx1 ZSBpbiBhCisgKiB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW4uCisgKgorICogV2UgZG9uJ3Qg bmVlZCB0byBjaGVjayBmb3Igc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLCBzaW5jZSB0aG9z ZSB3aWxsIGJlCisgKiBvdmVyd3JpdHRlbiBsYXRlciBhbnl3YXkuCisgKi8KK3N0YXRpYyB2 b2lkCitjaGVja19tb2RpZmllZF92aXJ0dWFsX2dlbmVyYXRlZChUdXBsZURlc2MgdHVwZGVz YywgSGVhcFR1cGxlIHR1cGxlKQoreworCWlmICghKHR1cGRlc2MtPmNvbnN0ciAmJiB0dXBk ZXNjLT5jb25zdHItPmhhc19nZW5lcmF0ZWRfdmlydHVhbCkpCisJCXJldHVybjsKKworCWZv ciAoaW50IGkgPSAwOyBpIDwgdHVwZGVzYy0+bmF0dHM7IGkrKykKKwl7CisJCWlmIChUdXBs ZURlc2NBdHRyKHR1cGRlc2MsIGkpLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVS QVRFRF9WSVJUVUFMKQorCQl7CisJCQlib29sCQlpc251bGw7CisKKwkJCWZhc3RnZXRhdHRy KHR1cGxlLCBpICsgMSwgdHVwZGVzYywgJmlzbnVsbCk7CisJCQlpZiAoIWlzbnVsbCkKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9FX1JfSV9FX1RSSUdH RVJfUFJPVE9DT0xfVklPTEFURUQpLAorCQkJCQkJIGVycm1zZygidHJpZ2dlciBtb2RpZmll ZCB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW4gdmFsdWUiKSkpOworCQl9CisJfQorfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3R5cGVjbWRzLmMKaW5kZXggMjJiMGQ1ZDQ3ZS4uNzJjNGI0MDJlZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90eXBlY21kcy5jCkBAIC05MTUsNyArOTE1LDggQEAgRGVmaW5lRG9t YWluKENyZWF0ZURvbWFpblN0bXQgKnN0bXQpCiAJCQkJCWRlZmF1bHRFeHByID0gY29va0Rl ZmF1bHQocHN0YXRlLCBjb25zdHItPnJhd19leHByLAogCQkJCQkJCQkJCQkgIGJhc2V0eXBl b2lkLAogCQkJCQkJCQkJCQkgIGJhc2V0eXBlTW9kLAotCQkJCQkJCQkJCQkgIGRvbWFpbk5h bWUpOworCQkJCQkJCQkJCQkgIGRvbWFpbk5hbWUsCisJCQkJCQkJCQkJCSAgMCk7CiAKIAkJ CQkJLyoKIAkJCQkJICogSWYgdGhlIGV4cHJlc3Npb24gaXMganVzdCBhIE5VTEwgY29uc3Rh bnQsIHdlIHRyZWF0IGl0CkBAIC0yMjI0LDcgKzIyMjUsOCBAQCBBbHRlckRvbWFpbkRlZmF1 bHQoTGlzdCAqbmFtZXMsIE5vZGUgKmRlZmF1bHRSYXcpCiAJCWRlZmF1bHRFeHByID0gY29v a0RlZmF1bHQocHN0YXRlLCBkZWZhdWx0UmF3LAogCQkJCQkJCQkgIHR5cFR1cC0+dHlwYmFz ZXR5cGUsCiAJCQkJCQkJCSAgdHlwVHVwLT50eXB0eXBtb2QsCi0JCQkJCQkJCSAgTmFtZVN0 cih0eXBUdXAtPnR5cG5hbWUpKTsKKwkJCQkJCQkJICBOYW1lU3RyKHR5cFR1cC0+dHlwbmFt ZSksCisJCQkJCQkJCSAgMCk7CiAKIAkJLyoKIAkJICogSWYgdGhlIGV4cHJlc3Npb24gaXMg anVzdCBhIE5VTEwgY29uc3RhbnQsIHdlIHRyZWF0IHRoZSBjb21tYW5kCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwppbmRleCAyNmU0MTkwMmYzLi5mYTdiN2Q1MTMwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTUzLDcgKzUzLDcgQEAKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5oIgogI2luY2x1ZGUgInBhcnNl ci9wYXJzZXRyZWUuaCIKLSNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgorI2lu Y2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3AvdXRp bGl0eS5oIgpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIEV2YWxQbGFuUXVhbFN0 YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgRVN0YXRlICpwYXJlbnRlc3RhdGUsCiAJCQkJICBQ bGFuICpwbGFuVHJlZSk7CiAKIC8qCi0gKiBOb3RlIHRoYXQgR2V0VXBkYXRlZENvbHVtbnMo KSBhbHNvIGV4aXN0cyBpbiBjb21tYW5kcy90cmlnZ2VyLmMuICBUaGVyZSBkb2VzCisgKiBO b3RlIHRoYXQgR2V0QWxsVXBkYXRlZENvbHVtbnMoKSBhbHNvIGV4aXN0cyBpbiBjb21tYW5k cy90cmlnZ2VyLmMuICBUaGVyZSBkb2VzCiAgKiBub3QgYXBwZWFyIHRvIGJlIGFueSBnb29k IGhlYWRlciB0byBwdXQgaXQgaW50bywgZ2l2ZW4gdGhlIHN0cnVjdHVyZXMgdGhhdAogICog aXQgdXNlcywgc28gd2UgbGV0IHRoZW0gYmUgZHVwbGljYXRlZC4gIEJlIHN1cmUgdG8gdXBk YXRlIGJvdGggaWYgb25lIG5lZWRzCiAgKiB0byBiZSBjaGFuZ2VkLCBob3dldmVyLgpAQCAt MTEyLDYgKzExMiw5IEBAIHN0YXRpYyB2b2lkIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRl ICplcHFzdGF0ZSwgRVN0YXRlICpwYXJlbnRlc3RhdGUsCiAJKGV4ZWNfcnRfZmV0Y2goKHJl bGluZm8pLT5yaV9SYW5nZVRhYmxlSW5kZXgsIGVzdGF0ZSktPmluc2VydGVkQ29scykKICNk ZWZpbmUgR2V0VXBkYXRlZENvbHVtbnMocmVsaW5mbywgZXN0YXRlKSBcCiAJKGV4ZWNfcnRf ZmV0Y2goKHJlbGluZm8pLT5yaV9SYW5nZVRhYmxlSW5kZXgsIGVzdGF0ZSktPnVwZGF0ZWRD b2xzKQorI2RlZmluZSBHZXRBbGxVcGRhdGVkQ29sdW1ucyhyZWxpbmZvLCBlc3RhdGUpIFwK KwkoYm1zX3VuaW9uKGV4ZWNfcnRfZmV0Y2goKHJlbGluZm8pLT5yaV9SYW5nZVRhYmxlSW5k ZXgsIGVzdGF0ZSktPnVwZGF0ZWRDb2xzLCBcCisJCQkgICBleGVjX3J0X2ZldGNoKChyZWxp bmZvKS0+cmlfUmFuZ2VUYWJsZUluZGV4LCBlc3RhdGUpLT5leHRyYVVwZGF0ZWRDb2xzKSkK IAogLyogZW5kIG9mIGxvY2FsIGRlY2xzICovCiAKQEAgLTEzMjEsNiArMTMyNCw3IEBAIElu aXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJcmVzdWx0 UmVsSW5mby0+cmlfRmR3U3RhdGUgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX3VzZXNG ZHdEaXJlY3RNb2RpZnkgPSBmYWxzZTsKIAlyZXN1bHRSZWxJbmZvLT5yaV9Db25zdHJhaW50 RXhwcnMgPSBOVUxMOworCXJlc3VsdFJlbEluZm8tPnJpX0dlbmVyYXRlZEV4cHJzID0gTlVM TDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9qdW5rRmlsdGVyID0gTlVMTDsKIAlyZXN1bHRSZWxJ bmZvLT5yaV9wcm9qZWN0UmV0dXJuaW5nID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9v bkNvbmZsaWN0QXJiaXRlckluZGV4ZXMgPSBOSUw7CkBAIC0xNzQ3LDYgKzE3NTEsNyBAQCBF eGVjUmVsQ2hlY2soUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCUV4cHIJICAg KmNoZWNrY29uc3RyOwogCiAJCQljaGVja2NvbnN0ciA9IHN0cmluZ1RvTm9kZShjaGVja1tp XS5jY2Jpbik7CisJCQljaGVja2NvbnN0ciA9IChFeHByICopIGV4cGFuZF9nZW5lcmF0ZWRf Y29sdW1uc19pbl9leHByKChOb2RlICopIGNoZWNrY29uc3RyLCByZWwpOwogCQkJcmVzdWx0 UmVsSW5mby0+cmlfQ29uc3RyYWludEV4cHJzW2ldID0KIAkJCQlFeGVjUHJlcGFyZUV4cHIo Y2hlY2tjb25zdHIsIGVzdGF0ZSk7CiAJCX0KQEAgLTIyNDEsNiArMjI0NiwxMCBAQCBFeGVj QnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihPaWQgcmVsb2lkLAogCQlpZiAoYXR0LT5hdHRp c2Ryb3BwZWQpCiAJCQljb250aW51ZTsKIAorCQkvKiBpZ25vcmUgdmlydHVhbCBnZW5lcmF0 ZWQgY29sdW1uczsgdGhleSBhcmUgYWx3YXlzIG51bGwgaGVyZSAqLworCQlpZiAoYXR0LT5h dHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQkJY29udGlu dWU7CisKIAkJaWYgKCF0YWJsZV9wZXJtKQogCQl7CiAJCQkvKgpAQCAtMjMzMCw3ICsyMzM5 LDcgQEAgRXhlY1VwZGF0ZUxvY2tNb2RlKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZv ICpyZWxpbmZvKQogCSAqIGJlZW4gbW9kaWZpZWQsIHRoZW4gd2UgY2FuIHVzZSBhIHdlYWtl ciBsb2NrLCBhbGxvd2luZyBmb3IgYmV0dGVyCiAJICogY29uY3VycmVuY3kuCiAJICovCi0J dXBkYXRlZENvbHMgPSBHZXRVcGRhdGVkQ29sdW1ucyhyZWxpbmZvLCBlc3RhdGUpOworCXVw ZGF0ZWRDb2xzID0gR2V0QWxsVXBkYXRlZENvbHVtbnMocmVsaW5mbywgZXN0YXRlKTsKIAlr ZXlDb2xzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsaW5mby0+cmlfUmVsYXRp b25EZXNjLAogCQkJCQkJCQkJCSBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmluZGV4IGU5YzFiZWIxYjcuLjQ1NGRj MDM4NzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlv bi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCkBAIC0x OSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21t YW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNs dWRlICJleGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaCIKICNpbmNsdWRlICJub2Rlcy9ub2Rl RnVuY3MuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2V0cmVlLmgiCkBAIC00MTcsNiArNDE4LDE0IEBAIEV4ZWNTaW1wbGVS ZWxhdGlvbkluc2VydChFU3RhdGUgKmVzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCiAJ ewogCQlMaXN0CSAgICpyZWNoZWNrSW5kZXhlcyA9IE5JTDsKIAorCQkvKiBDb21wdXRlIHN0 b3JlZCBnZW5lcmF0ZWQgY29sdW1ucyAqLworCQlpZiAocmVsLT5yZF9hdHQtPmNvbnN0ciAm JgorCQkJcmVsLT5yZF9hdHQtPmNvbnN0ci0+aGFzX2dlbmVyYXRlZF9zdG9yZWQpCisJCXsK KwkJCWlmIChFeGVjQ29tcHV0ZVN0b3JlZEdlbmVyYXRlZChlc3RhdGUsIHNsb3QpKQorCQkJ CXR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCBOVUxMKTsKKwkJ fQorCiAJCS8qIENoZWNrIHRoZSBjb25zdHJhaW50cyBvZiB0aGUgdHVwbGUgKi8KIAkJaWYg KHJlbC0+cmRfYXR0LT5jb25zdHIpCiAJCQlFeGVjQ29uc3RyYWludHMocmVzdWx0UmVsSW5m bywgc2xvdCwgZXN0YXRlKTsKQEAgLTQ4OSw2ICs0OTgsMTQgQEAgRXhlY1NpbXBsZVJlbGF0 aW9uVXBkYXRlKEVTdGF0ZSAqZXN0YXRlLCBFUFFTdGF0ZSAqZXBxc3RhdGUsCiAJewogCQlM aXN0CSAgICpyZWNoZWNrSW5kZXhlcyA9IE5JTDsKIAorCQkvKiBDb21wdXRlIHN0b3JlZCBn ZW5lcmF0ZWQgY29sdW1ucyAqLworCQlpZiAocmVsLT5yZF9hdHQtPmNvbnN0ciAmJgorCQkJ cmVsLT5yZF9hdHQtPmNvbnN0ci0+aGFzX2dlbmVyYXRlZF9zdG9yZWQpCisJCXsKKwkJCWlm IChFeGVjQ29tcHV0ZVN0b3JlZEdlbmVyYXRlZChlc3RhdGUsIHNsb3QpKQorCQkJCXR1cGxl ID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCBOVUxMKTsKKwkJfQorCiAJ CS8qIENoZWNrIHRoZSBjb25zdHJhaW50cyBvZiB0aGUgdHVwbGUgKi8KIAkJaWYgKHJlbC0+ cmRfYXR0LT5jb25zdHIpCiAJCQlFeGVjQ29uc3RyYWludHMocmVzdWx0UmVsSW5mbywgc2xv dCwgZXN0YXRlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5k ZXggODRhYzJlNjNhZC4uYWJmMGQ0ZGFjOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1vZGlmeVRhYmxlLmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJmb3JlaWduL2Zk d2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVG dW5jcy5oIgorI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC0yNDQsNiArMjQ1LDgzIEBAIEV4ZWNDaGVja1RJ RFZpc2libGUoRVN0YXRlICplc3RhdGUsCiAJUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogfQog Citib29sCitFeGVjQ29tcHV0ZVN0b3JlZEdlbmVyYXRlZChFU3RhdGUgKmVzdGF0ZSwgVHVw bGVUYWJsZVNsb3QgKnNsb3QpCit7CisJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyA9 IGVzdGF0ZS0+ZXNfcmVzdWx0X3JlbGF0aW9uX2luZm87CisJUmVsYXRpb24JcmVsID0gcmVz dWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOworCVR1cGxlRGVzYwl0dXBkZXNjID0gUmVs YXRpb25HZXREZXNjcihyZWwpOworCWludAkJCW5hdHRzID0gdHVwZGVzYy0+bmF0dHM7CisJ RGF0dW0JICAgKnZhbHVlczsKKwlib29sCSAgICpudWxsczsKKwlib29sCSAgICpyZXBsYWNl czsKKwlib29sCQlhbnlfY2hhbmdlcyA9IGZhbHNlOworCisJdmFsdWVzID0gcGFsbG9jKHNp emVvZigqdmFsdWVzKSAqIG5hdHRzKTsKKwludWxscyA9IHBhbGxvYyhzaXplb2YoKm51bGxz KSAqIG5hdHRzKTsKKwlyZXBsYWNlcyA9IHBhbGxvYzAoc2l6ZW9mKCpyZXBsYWNlcykgKiBu YXR0cyk7CisKKwkvKgorCSAqIElmIGZpcnN0IHRpbWUgdGhyb3VnaCBmb3IgdGhpcyByZXN1 bHQgcmVsYXRpb24sIGJ1aWxkIGV4cHJlc3Npb24KKwkgKiBub2RldHJlZXMgZm9yIHJlbCdz IHN0b3JlZCBnZW5lcmF0aW9uIGV4cHJlc3Npb25zLiAgS2VlcCB0aGVtIGluIHRoZQorCSAq IHBlci1xdWVyeSBtZW1vcnkgY29udGV4dCBzbyB0aGV5J2xsIHN1cnZpdmUgdGhyb3VnaG91 dCB0aGUgcXVlcnkuCisJICovCisJaWYgKHJlc3VsdFJlbEluZm8tPnJpX0dlbmVyYXRlZEV4 cHJzID09IE5VTEwpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZENvbnRleHQ7CisKKwkJb2xk Q29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7 CisJCXJlc3VsdFJlbEluZm8tPnJpX0dlbmVyYXRlZEV4cHJzID0KKwkJCShFeHByU3RhdGUg KiopIHBhbGxvYyhuYXR0cyAqIHNpemVvZihFeHByU3RhdGUgKikpOworCisJCWZvciAoaW50 IGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwkJeworCQkJaWYgKFR1cGxlRGVzY0F0dHIodHVw ZGVzYywgaSktPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkK KwkJCXsKKwkJCQlFeHByCSAgICpleHByOworCisJCQkJZXhwciA9IChFeHByICopIGJ1aWxk X2NvbHVtbl9kZWZhdWx0KHJlbCwgaSArIDEpOworCQkJCUFzc2VydChleHByKTsKKworCQkJ CXJlc3VsdFJlbEluZm8tPnJpX0dlbmVyYXRlZEV4cHJzW2ldID0gRXhlY1ByZXBhcmVFeHBy KGV4cHIsIGVzdGF0ZSk7CisJCQl9CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkQ29udGV4dCk7CisJfQorCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuYXR0czsgaSsrKQor CXsKKwkJaWYgKFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSktPmF0dGdlbmVyYXRlZCA9PSBB VFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJeworCQkJRXhwckNvbnRleHQgKmVjb250 ZXh0OworCQkJRGF0dW0JCXZhbDsKKwkJCWJvb2wJCWlzbnVsbDsKKworCQkJZWNvbnRleHQg PSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisJCQllY29udGV4dC0+ZWN4dF9z Y2FudHVwbGUgPSBzbG90OworCisJCQl2YWwgPSBFeGVjRXZhbEV4cHJTd2l0Y2hDb250ZXh0 KHJlc3VsdFJlbEluZm8tPnJpX0dlbmVyYXRlZEV4cHJzW2ldLCBlY29udGV4dCwgJmlzbnVs bCk7CisKKwkJCXZhbHVlc1tpXSA9IHZhbDsKKwkJCW51bGxzW2ldID0gaXNudWxsOworCQkJ cmVwbGFjZXNbaV0gPSB0cnVlOworCQkJYW55X2NoYW5nZXMgPSB0cnVlOworCQl9CisJfQor CisJaWYgKGFueV9jaGFuZ2VzKQorCXsKKwkJSGVhcFR1cGxlCXR1cGxlOworCisJCXR1cGxl ID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCBOVUxMKTsKKwkJdHVwbGUg PSBoZWFwX21vZGlmeV90dXBsZSh0dXBsZSwgdHVwZGVzYywgdmFsdWVzLCBudWxscywgcmVw bGFjZXMpOworCQlFeGVjU3RvcmVIZWFwVHVwbGUodHVwbGUsIHNsb3QsIGZhbHNlKTsKKwl9 CisKKwlyZXR1cm4gYW55X2NoYW5nZXM7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVj SW5zZXJ0CiAgKgpAQCAtMzE2LDYgKzM5NCwxNiBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxl U3RhdGUgKm10c3RhdGUsCiAJfQogCWVsc2UgaWYgKHJlc3VsdFJlbEluZm8tPnJpX0Zkd1Jv dXRpbmUpCiAJeworCQkvKgorCQkgKiBDb21wdXRlIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1u cworCQkgKi8KKwkJaWYgKHJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfYXR0LT5jb25zdHIgJiYK KwkJCXJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfYXR0LT5jb25zdHItPmhhc19nZW5lcmF0ZWRf c3RvcmVkKQorCQl7CisJCQlpZiAoRXhlY0NvbXB1dGVTdG9yZWRHZW5lcmF0ZWQoZXN0YXRl LCBzbG90KSkKKwkJCQl0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgdHJ1 ZSwgTlVMTCk7CisJCX0KKwogCQkvKgogCQkgKiBpbnNlcnQgaW50byBmb3JlaWduIHRhYmxl OiBsZXQgdGhlIEZEVyBkbyBpdAogCQkgKi8KQEAgLTM0Niw2ICs0MzQsMTYgQEAgRXhlY0lu c2VydChNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQkgKi8KIAkJdHVwbGUtPnRfdGFi bGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlc3VsdFJlbGF0aW9uRGVzYyk7CiAKKwkJLyoK KwkJICogQ29tcHV0ZSBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMKKwkJICovCisJCWlmIChy ZXN1bHRSZWxhdGlvbkRlc2MtPnJkX2F0dC0+Y29uc3RyICYmCisJCQlyZXN1bHRSZWxhdGlv bkRlc2MtPnJkX2F0dC0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkX3N0b3JlZCkKKwkJeworCQkJ aWYgKEV4ZWNDb21wdXRlU3RvcmVkR2VuZXJhdGVkKGVzdGF0ZSwgc2xvdCkpCisJCQkJdHVw bGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIHRydWUsIE5VTEwpOworCQl9CisK IAkJLyoKIAkJICogQ2hlY2sgYW55IFJMUyBXSVRIIENIRUNLIHBvbGljaWVzLgogCQkgKgpA QCAtOTY5LDYgKzEwNjcsMTYgQEAgRXhlY1VwZGF0ZShNb2RpZnlUYWJsZVN0YXRlICptdHN0 YXRlLAogCX0KIAllbHNlIGlmIChyZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lKQogCXsK KwkJLyoKKwkJICogQ29tcHV0ZSBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMKKwkJICovCisJ CWlmIChyZXN1bHRSZWxhdGlvbkRlc2MtPnJkX2F0dC0+Y29uc3RyICYmCisJCQlyZXN1bHRS ZWxhdGlvbkRlc2MtPnJkX2F0dC0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkX3N0b3JlZCkKKwkJ eworCQkJaWYgKEV4ZWNDb21wdXRlU3RvcmVkR2VuZXJhdGVkKGVzdGF0ZSwgc2xvdCkpCisJ CQkJdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIHRydWUsIE5VTEwpOwor CQl9CisKIAkJLyoKIAkJICogdXBkYXRlIGluIGZvcmVpZ24gdGFibGU6IGxldCB0aGUgRkRX IGRvIGl0CiAJCSAqLwpAQCAtMTAwMCw2ICsxMTA4LDE2IEBAIEV4ZWNVcGRhdGUoTW9kaWZ5 VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJICovCiAJCXR1cGxlLT50X3RhYmxlT2lkID0gUmVs YXRpb25HZXRSZWxpZChyZXN1bHRSZWxhdGlvbkRlc2MpOwogCisJCS8qCisJCSAqIENvbXB1 dGUgc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zCisJCSAqLworCQlpZiAocmVzdWx0UmVsYXRp b25EZXNjLT5yZF9hdHQtPmNvbnN0ciAmJgorCQkJcmVzdWx0UmVsYXRpb25EZXNjLT5yZF9h dHQtPmNvbnN0ci0+aGFzX2dlbmVyYXRlZF9zdG9yZWQpCisJCXsKKwkJCWlmIChFeGVjQ29t cHV0ZVN0b3JlZEdlbmVyYXRlZChlc3RhdGUsIHNsb3QpKQorCQkJCXR1cGxlID0gRXhlY0Zl dGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCBOVUxMKTsKKwkJfQorCiAJCS8qCiAJCSAq IENoZWNrIGFueSBSTFMgVVBEQVRFIFdJVEggQ0hFQ0sgcG9saWNpZXMKIAkJICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMKaW5kZXggMDA2YTNkMTc3Mi4uNmNlZDk2ZDFhYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMKQEAgLTIzODEsNiArMjM4MSw3IEBAIF9jb3B5UmFuZ2VUYmxFbnRy eShjb25zdCBSYW5nZVRibEVudHJ5ICpmcm9tKQogCUNPUFlfQklUTUFQU0VUX0ZJRUxEKHNl bGVjdGVkQ29scyk7CiAJQ09QWV9CSVRNQVBTRVRfRklFTEQoaW5zZXJ0ZWRDb2xzKTsKIAlD T1BZX0JJVE1BUFNFVF9GSUVMRCh1cGRhdGVkQ29scyk7CisJQ09QWV9CSVRNQVBTRVRfRklF TEQoZXh0cmFVcGRhdGVkQ29scyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHNlY3VyaXR5UXVhbHMp OwogCiAJcmV0dXJuIG5ld25vZGU7CkBAIC0yODc4LDYgKzI4NzksNyBAQCBfY29weUNvbHVt bkRlZihjb25zdCBDb2x1bW5EZWYgKmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxEKGNvb2tlZF9k ZWZhdWx0KTsKIAlDT1BZX1NDQUxBUl9GSUVMRChpZGVudGl0eSk7CiAJQ09QWV9OT0RFX0ZJ RUxEKGlkZW50aXR5U2VxdWVuY2UpOworCUNPUFlfU0NBTEFSX0ZJRUxEKGdlbmVyYXRlZCk7 CiAJQ09QWV9OT0RFX0ZJRUxEKGNvbGxDbGF1c2UpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGNv bGxPaWQpOwogCUNPUFlfTk9ERV9GSUVMRChjb25zdHJhaW50cyk7CkBAIC0yOTAxLDYgKzI5 MDMsNyBAQCBfY29weUNvbnN0cmFpbnQoY29uc3QgQ29uc3RyYWludCAqZnJvbSkKIAlDT1BZ X05PREVfRklFTEQocmF3X2V4cHIpOwogCUNPUFlfU1RSSU5HX0ZJRUxEKGNvb2tlZF9leHBy KTsKIAlDT1BZX1NDQUxBUl9GSUVMRChnZW5lcmF0ZWRfd2hlbik7CisJQ09QWV9TQ0FMQVJf RklFTEQoZ2VuZXJhdGVkX2tpbmQpOwogCUNPUFlfTk9ERV9GSUVMRChrZXlzKTsKIAlDT1BZ X05PREVfRklFTEQoaW5jbHVkaW5nKTsKIAlDT1BZX05PREVfRklFTEQoZXhjbHVzaW9ucyk7 CkBAIC0zMDA2LDYgKzMwMDksNyBAQCBfY29weVF1ZXJ5KGNvbnN0IFF1ZXJ5ICpmcm9tKQog CUNPUFlfU0NBTEFSX0ZJRUxEKGhhc01vZGlmeWluZ0NURSk7CiAJQ09QWV9TQ0FMQVJfRklF TEQoaGFzRm9yVXBkYXRlKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChoYXNSb3dTZWN1cml0eSk7 CisJQ09QWV9TQ0FMQVJfRklFTEQoaGFzR2VuZXJhdGVkVmlydHVhbCk7CiAJQ09QWV9OT0RF X0ZJRUxEKGN0ZUxpc3QpOwogCUNPUFlfTk9ERV9GSUVMRChydGFibGUpOwogCUNPUFlfTk9E RV9GSUVMRChqb2ludHJlZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVh bGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggMTMzZGYx YjM2NC4uNjcyZWI0ZGZjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtOTU5LDYg Kzk1OSw3IEBAIF9lcXVhbFF1ZXJ5KGNvbnN0IFF1ZXJ5ICphLCBjb25zdCBRdWVyeSAqYikK IAlDT01QQVJFX1NDQUxBUl9GSUVMRChoYXNNb2RpZnlpbmdDVEUpOwogCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKGhhc0ZvclVwZGF0ZSk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzUm93 U2VjdXJpdHkpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc0dlbmVyYXRlZFZpcnR1YWwp OwogCUNPTVBBUkVfTk9ERV9GSUVMRChjdGVMaXN0KTsKIAlDT01QQVJFX05PREVfRklFTEQo cnRhYmxlKTsKIAlDT01QQVJFX05PREVfRklFTEQoam9pbnRyZWUpOwpAQCAtMjU1OCw2ICsy NTU5LDcgQEAgX2VxdWFsQ29sdW1uRGVmKGNvbnN0IENvbHVtbkRlZiAqYSwgY29uc3QgQ29s dW1uRGVmICpiKQogCUNPTVBBUkVfTk9ERV9GSUVMRChjb29rZWRfZGVmYXVsdCk7CiAJQ09N UEFSRV9TQ0FMQVJfRklFTEQoaWRlbnRpdHkpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChpZGVu dGl0eVNlcXVlbmNlKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChnZW5lcmF0ZWQpOwogCUNP TVBBUkVfTk9ERV9GSUVMRChjb2xsQ2xhdXNlKTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChj b2xsT2lkKTsKIAlDT01QQVJFX05PREVfRklFTEQoY29uc3RyYWludHMpOwpAQCAtMjU3OSw2 ICsyNTgxLDcgQEAgX2VxdWFsQ29uc3RyYWludChjb25zdCBDb25zdHJhaW50ICphLCBjb25z dCBDb25zdHJhaW50ICpiKQogCUNPTVBBUkVfTk9ERV9GSUVMRChyYXdfZXhwcik7CiAJQ09N UEFSRV9TVFJJTkdfRklFTEQoY29va2VkX2V4cHIpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxE KGdlbmVyYXRlZF93aGVuKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChnZW5lcmF0ZWRfa2lu ZCk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGtleXMpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChp bmNsdWRpbmcpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChleGNsdXNpb25zKTsKQEAgLTI2NTcs NiArMjY2MCw3IEBAIF9lcXVhbFJhbmdlVGJsRW50cnkoY29uc3QgUmFuZ2VUYmxFbnRyeSAq YSwgY29uc3QgUmFuZ2VUYmxFbnRyeSAqYikKIAlDT01QQVJFX0JJVE1BUFNFVF9GSUVMRChz ZWxlY3RlZENvbHMpOwogCUNPTVBBUkVfQklUTUFQU0VUX0ZJRUxEKGluc2VydGVkQ29scyk7 CiAJQ09NUEFSRV9CSVRNQVBTRVRfRklFTEQodXBkYXRlZENvbHMpOworCUNPTVBBUkVfQklU TUFQU0VUX0ZJRUxEKGV4dHJhVXBkYXRlZENvbHMpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChz ZWN1cml0eVF1YWxzKTsKIAogCXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5k ZXggMGZkZTg3NmM3Ny4uMmMwZDY0ZWM0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9k ZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC0y NzczLDYgKzI3NzMsNyBAQCBfb3V0Q29sdW1uRGVmKFN0cmluZ0luZm8gc3RyLCBjb25zdCBD b2x1bW5EZWYgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChjb29rZWRfZGVmYXVsdCk7CiAJ V1JJVEVfQ0hBUl9GSUVMRChpZGVudGl0eSk7CiAJV1JJVEVfTk9ERV9GSUVMRChpZGVudGl0 eVNlcXVlbmNlKTsKKwlXUklURV9DSEFSX0ZJRUxEKGdlbmVyYXRlZCk7CiAJV1JJVEVfTk9E RV9GSUVMRChjb2xsQ2xhdXNlKTsKIAlXUklURV9PSURfRklFTEQoY29sbE9pZCk7CiAJV1JJ VEVfTk9ERV9GSUVMRChjb25zdHJhaW50cyk7CkBAIC0yODc0LDYgKzI4NzUsNyBAQCBfb3V0 UXVlcnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFF1ZXJ5ICpub2RlKQogCVdSSVRFX0JPT0xf RklFTEQoaGFzTW9kaWZ5aW5nQ1RFKTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc0ZvclVwZGF0 ZSk7CiAJV1JJVEVfQk9PTF9GSUVMRChoYXNSb3dTZWN1cml0eSk7CisJV1JJVEVfQk9PTF9G SUVMRChoYXNHZW5lcmF0ZWRWaXJ0dWFsKTsKIAlXUklURV9OT0RFX0ZJRUxEKGN0ZUxpc3Qp OwogCVdSSVRFX05PREVfRklFTEQocnRhYmxlKTsKIAlXUklURV9OT0RFX0ZJRUxEKGpvaW50 cmVlKTsKQEAgLTMwNzMsNiArMzA3NSw3IEBAIF9vdXRSYW5nZVRibEVudHJ5KFN0cmluZ0lu Zm8gc3RyLCBjb25zdCBSYW5nZVRibEVudHJ5ICpub2RlKQogCVdSSVRFX0JJVE1BUFNFVF9G SUVMRChzZWxlY3RlZENvbHMpOwogCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChpbnNlcnRlZENv bHMpOwogCVdSSVRFX0JJVE1BUFNFVF9GSUVMRCh1cGRhdGVkQ29scyk7CisJV1JJVEVfQklU TUFQU0VUX0ZJRUxEKGV4dHJhVXBkYXRlZENvbHMpOwogCVdSSVRFX05PREVfRklFTEQoc2Vj dXJpdHlRdWFscyk7CiB9CiAKQEAgLTM0NDQsNiArMzQ0NywxNCBAQCBfb3V0Q29uc3RyYWlu dChTdHJpbmdJbmZvIHN0ciwgY29uc3QgQ29uc3RyYWludCAqbm9kZSkKIAkJCVdSSVRFX0NI QVJfRklFTEQoZ2VuZXJhdGVkX3doZW4pOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBDT05TVFJf R0VORVJBVEVEOgorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICJHRU5FUkFURUQi KTsKKwkJCVdSSVRFX05PREVfRklFTEQocmF3X2V4cHIpOworCQkJV1JJVEVfU1RSSU5HX0ZJ RUxEKGNvb2tlZF9leHByKTsKKwkJCVdSSVRFX0NIQVJfRklFTEQoZ2VuZXJhdGVkX3doZW4p OworCQkJV1JJVEVfQ0hBUl9GSUVMRChnZW5lcmF0ZWRfa2luZCk7CisJCQlicmVhazsKKwog CQljYXNlIENPTlNUUl9DSEVDSzoKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCAi Q0hFQ0siKTsKIAkJCVdSSVRFX0JPT0xfRklFTEQoaXNfbm9faW5oZXJpdCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jCmluZGV4IGVjNmYyNTY5YWIuLmFhYTQzYWI4YTggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jCkBAIC0yNjMsNiArMjYzLDcgQEAgX3JlYWRRdWVyeSh2b2lkKQogCVJF QURfQk9PTF9GSUVMRChoYXNNb2RpZnlpbmdDVEUpOwogCVJFQURfQk9PTF9GSUVMRChoYXNG b3JVcGRhdGUpOwogCVJFQURfQk9PTF9GSUVMRChoYXNSb3dTZWN1cml0eSk7CisJUkVBRF9C T09MX0ZJRUxEKGhhc0dlbmVyYXRlZFZpcnR1YWwpOwogCVJFQURfTk9ERV9GSUVMRChjdGVM aXN0KTsKIAlSRUFEX05PREVfRklFTEQocnRhYmxlKTsKIAlSRUFEX05PREVfRklFTEQoam9p bnRyZWUpOwpAQCAtMTQyNSw2ICsxNDI2LDcgQEAgX3JlYWRSYW5nZVRibEVudHJ5KHZvaWQp CiAJUkVBRF9CSVRNQVBTRVRfRklFTEQoc2VsZWN0ZWRDb2xzKTsKIAlSRUFEX0JJVE1BUFNF VF9GSUVMRChpbnNlcnRlZENvbHMpOwogCVJFQURfQklUTUFQU0VUX0ZJRUxEKHVwZGF0ZWRD b2xzKTsKKwlSRUFEX0JJVE1BUFNFVF9GSUVMRChleHRyYVVwZGF0ZWRDb2xzKTsKIAlSRUFE X05PREVfRklFTEQoc2VjdXJpdHlRdWFscyk7CiAKIAlSRUFEX0RPTkUoKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCAwNjY2ODVjM2M3Li40NDg5 NzM4NmMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVw bGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBA IC02NjU4LDggKzY2NTgsOSBAQCBtYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpyb290 LAogCiAJCS8qCiAJCSAqIFRyeSB0byBtb2RpZnkgdGhlIGZvcmVpZ24gdGFibGUgZGlyZWN0 bHkgaWYgKDEpIHRoZSBGRFcgcHJvdmlkZXMKLQkJICogY2FsbGJhY2sgZnVuY3Rpb25zIG5l ZWRlZCBmb3IgdGhhdCwgKDIpIHRoZXJlIGFyZSBubyByb3ctbGV2ZWwKLQkJICogdHJpZ2dl cnMgb24gdGhlIGZvcmVpZ24gdGFibGUsIGFuZCAoMykgdGhlcmUgYXJlIG5vIFdJVEggQ0hF Q0sKKwkJICogY2FsbGJhY2sgZnVuY3Rpb25zIG5lZWRlZCBmb3IgdGhhdCBhbmQgKDIpIHRo ZXJlIGFyZSBubyBsb2NhbAorCQkgKiBzdHJ1Y3R1cmVzIHRoYXQgbmVlZCB0byBiZSBydW4g Zm9yIGVhY2ggbW9kaWZpZWQgcm93OiByb3ctbGV2ZWwKKwkJICogdHJpZ2dlcnMgb24gdGhl IGZvcmVpZ24gdGFibGUsIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucywgV0lUSCBDSEVDSwog CQkgKiBPUFRJT05zIGZyb20gcGFyZW50IHZpZXdzLgogCQkgKi8KIAkJZGlyZWN0X21vZGlm eSA9IGZhbHNlOwpAQCAtNjY2OSw3ICs2NjcwLDggQEAgbWFrZV9tb2RpZnl0YWJsZShQbGFu bmVySW5mbyAqcm9vdCwKIAkJCWZkd3JvdXRpbmUtPkl0ZXJhdGVEaXJlY3RNb2RpZnkgIT0g TlVMTCAmJgogCQkJZmR3cm91dGluZS0+RW5kRGlyZWN0TW9kaWZ5ICE9IE5VTEwgJiYKIAkJ CXdpdGhDaGVja09wdGlvbkxpc3RzID09IE5JTCAmJgotCQkJIWhhc19yb3dfdHJpZ2dlcnMo c3Vicm9vdCwgcnRpLCBvcGVyYXRpb24pKQorCQkJIWhhc19yb3dfdHJpZ2dlcnMoc3Vicm9v dCwgcnRpLCBvcGVyYXRpb24pICYmCisJCQkhaGFzX3N0b3JlZF9nZW5lcmF0ZWRfY29sdW1u cyhzdWJyb290LCBydGkpKQogCQkJZGlyZWN0X21vZGlmeSA9IGZkd3JvdXRpbmUtPlBsYW5E aXJlY3RNb2RpZnkoc3Vicm9vdCwgbm9kZSwgcnRpLCBpKTsKIAkJaWYgKGRpcmVjdF9tb2Rp ZnkpCiAJCQlkaXJlY3RfbW9kaWZ5X3BsYW5zID0gYm1zX2FkZF9tZW1iZXIoZGlyZWN0X21v ZGlmeV9wbGFucywgaSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9pbmhlcml0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMKaW5k ZXggMzUwZTZhZmUyNy4uOTI0ODc5ZWYwZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvaW5oZXJpdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L2luaGVyaXQuYwpAQCAtMjY0LDYgKzI2NCwxMCBAQCBleHBhbmRfcGFydGl0aW9uZWRfcnRl bnRyeShQbGFubmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCWlm ICghcm9vdC0+cGFydENvbHNVcGRhdGVkKQogCQlyb290LT5wYXJ0Q29sc1VwZGF0ZWQgPQog CQkJaGFzX3BhcnRpdGlvbl9hdHRycyhwYXJlbnRyZWwsIHBhcmVudHJ0ZS0+dXBkYXRlZENv bHMsIE5VTEwpOworCS8qCisJICogVGhlcmUgc2hvdWxkbid0IGJlIGFueSBnZW5lcmF0ZWQg Y29sdW1ucyBpbiB0aGUgcGFydGl0aW9uIGtleS4KKwkgKi8KKwlBc3NlcnQoIWhhc19wYXJ0 aXRpb25fYXR0cnMocGFyZW50cmVsLCBwYXJlbnRydGUtPmV4dHJhVXBkYXRlZENvbHMsIE5V TEwpKTsKIAogCS8qIEZpcnN0IGV4cGFuZCB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxm LiAqLwogCWV4cGFuZF9zaW5nbGVfaW5oZXJpdGFuY2VfY2hpbGQocm9vdCwgcGFyZW50cnRl LCBwYXJlbnRSVGluZGV4LCBwYXJlbnRyZWwsCkBAIC00MDQsNiArNDA4LDggQEAgZXhwYW5k X3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFubmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxF bnRyeSAqcGFyZW50cnRlLAogCQkJCQkJCQkJCQkJCQkgYXBwaW5mby0+dHJhbnNsYXRlZF92 YXJzKTsKIAkJCWNoaWxkcnRlLT51cGRhdGVkQ29scyA9IHRyYW5zbGF0ZV9jb2xfcHJpdnMo cGFyZW50cnRlLT51cGRhdGVkQ29scywKIAkJCQkJCQkJCQkJCQkJYXBwaW5mby0+dHJhbnNs YXRlZF92YXJzKTsKKwkJCWNoaWxkcnRlLT5leHRyYVVwZGF0ZWRDb2xzID0gdHJhbnNsYXRl X2NvbF9wcml2cyhwYXJlbnRydGUtPmV4dHJhVXBkYXRlZENvbHMsCisJCQkJCQkJCQkJCQkJ CQkgYXBwaW5mby0+dHJhbnNsYXRlZF92YXJzKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcGxhbmNhdC5jCmluZGV4IDQ4ZmZjNWYyNTQuLmRlNjg3ZmMzNDkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTE4ODksNiArMTg4OSwy NSBAQCBoYXNfcm93X3RyaWdnZXJzKFBsYW5uZXJJbmZvICpyb290LCBJbmRleCBydGksIENt ZFR5cGUgZXZlbnQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbAoraGFzX3N0b3JlZF9n ZW5lcmF0ZWRfY29sdW1ucyhQbGFubmVySW5mbyAqcm9vdCwgSW5kZXggcnRpKQoreworCVJh bmdlVGJsRW50cnkgKnJ0ZSA9IHBsYW5uZXJfcnRfZmV0Y2gocnRpLCByb290KTsKKwlSZWxh dGlvbiAgICByZWxhdGlvbjsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlib29sICAgICAgICBy ZXN1bHQgPSBmYWxzZTsKKworCS8qIEFzc3VtZSB3ZSBhbHJlYWR5IGhhdmUgYWRlcXVhdGUg bG9jayAqLworCXJlbGF0aW9uID0gaGVhcF9vcGVuKHJ0ZS0+cmVsaWQsIE5vTG9jayk7CisK Kwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJcmVzdWx0ID0gdHVw ZGVzYy0+Y29uc3RyICYmIHR1cGRlc2MtPmNvbnN0ci0+aGFzX2dlbmVyYXRlZF9zdG9yZWQ7 CisKKwloZWFwX2Nsb3NlKHJlbGF0aW9uLCBOb0xvY2spOworCisJcmV0dXJuIHJlc3VsdDsK K30KKwogLyoKICAqIHNldF9yZWxhdGlvbl9wYXJ0aXRpb25faW5mbwogICoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv YW5hbHl6ZS5jCmluZGV4IDVmZjY5NjRkNTEuLjVkMzcyZTE2OTAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYwpAQCAtNDUzLDYgKzQ1Myw3IEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KQogCXFyeS0+aGFzQWdncyA9IHBzdGF0 ZS0+cF9oYXNBZ2dzOwogCWlmIChwc3RhdGUtPnBfaGFzQWdncykKIAkJcGFyc2VDaGVja0Fn Z3JlZ2F0ZXMocHN0YXRlLCBxcnkpOworCXFyeS0+aGFzR2VuZXJhdGVkVmlydHVhbCA9IHBz dGF0ZS0+cF9oYXNHZW5lcmF0ZWRWaXJ0dWFsOwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlv bnMocHN0YXRlLCBxcnkpOwogCkBAIC04ODAsNiArODgxLDcgQEAgdHJhbnNmb3JtSW5zZXJ0 U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIEluc2VydFN0bXQgKnN0bXQpCiAKIAlxcnktPmhh c1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKIAlxcnktPmhhc1N1Ykxp bmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCXFyeS0+aGFzR2VuZXJhdGVkVmlydHVh bCA9IHBzdGF0ZS0+cF9oYXNHZW5lcmF0ZWRWaXJ0dWFsOwogCiAJYXNzaWduX3F1ZXJ5X2Nv bGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBAIC0xMzIxLDYgKzEzMjMsNyBAQCB0cmFuc2Zv cm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCkKIAlx cnktPmhhc0FnZ3MgPSBwc3RhdGUtPnBfaGFzQWdnczsKIAlpZiAocHN0YXRlLT5wX2hhc0Fn Z3MgfHwgcXJ5LT5ncm91cENsYXVzZSB8fCBxcnktPmdyb3VwaW5nU2V0cyB8fCBxcnktPmhh dmluZ1F1YWwpCiAJCXBhcnNlQ2hlY2tBZ2dyZWdhdGVzKHBzdGF0ZSwgcXJ5KTsKKwlxcnkt Pmhhc0dlbmVyYXRlZFZpcnR1YWwgPSBwc3RhdGUtPnBfaGFzR2VuZXJhdGVkVmlydHVhbDsK IAogCWZvcmVhY2gobCwgc3RtdC0+bG9ja2luZ0NsYXVzZSkKIAl7CkBAIC0xNzkzLDYgKzE3 OTYsNyBAQCB0cmFuc2Zvcm1TZXRPcGVyYXRpb25TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwg U2VsZWN0U3RtdCAqc3RtdCkKIAlxcnktPmhhc0FnZ3MgPSBwc3RhdGUtPnBfaGFzQWdnczsK IAlpZiAocHN0YXRlLT5wX2hhc0FnZ3MgfHwgcXJ5LT5ncm91cENsYXVzZSB8fCBxcnktPmdy b3VwaW5nU2V0cyB8fCBxcnktPmhhdmluZ1F1YWwpCiAJCXBhcnNlQ2hlY2tBZ2dyZWdhdGVz KHBzdGF0ZSwgcXJ5KTsKKwlxcnktPmhhc0dlbmVyYXRlZFZpcnR1YWwgPSBwc3RhdGUtPnBf aGFzR2VuZXJhdGVkVmlydHVhbDsKIAogCWZvcmVhY2gobCwgbG9ja2luZ0NsYXVzZSkKIAl7 CkBAIC0yMjc5LDYgKzIyODMsNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUg KnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAogCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IHBz dGF0ZS0+cF9oYXNUYXJnZXRTUkZzOwogCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBf aGFzU3ViTGlua3M7CisJcXJ5LT5oYXNHZW5lcmF0ZWRWaXJ0dWFsID0gcHN0YXRlLT5wX2hh c0dlbmVyYXRlZFZpcnR1YWw7CiAKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUs IHFyeSk7CiAKQEAgLTIyOTYsNiArMjMwMSw3IEBAIHRyYW5zZm9ybVVwZGF0ZVRhcmdldExp c3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcmlnVGxpc3QpCiAJUmFuZ2VUYmxFbnRy eSAqdGFyZ2V0X3J0ZTsKIAlMaXN0Q2VsbCAgICpvcmlnX3RsOwogCUxpc3RDZWxsICAgKnRs OworCVR1cGxlRGVzYwl0dXBkZXNjID0gcHN0YXRlLT5wX3RhcmdldF9yZWxhdGlvbi0+cmRf YXR0OwogCiAJdGxpc3QgPSB0cmFuc2Zvcm1UYXJnZXRMaXN0KHBzdGF0ZSwgb3JpZ1RsaXN0 LAogCQkJCQkJCQlFWFBSX0tJTkRfVVBEQVRFX1NPVVJDRSk7CkBAIC0yMzU0LDYgKzIzNjAs MzMgQEAgdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExp c3QgKm9yaWdUbGlzdCkKIAlpZiAob3JpZ190bCAhPSBOVUxMKQogCQllbG9nKEVSUk9SLCAi VVBEQVRFIHRhcmdldCBjb3VudCBtaXNtYXRjaCAtLS0gaW50ZXJuYWwgZXJyb3IiKTsKIAor CS8qCisJICogUmVjb3JkIGluIGV4dHJhVXBkYXRlZENvbHMgZ2VuZXJhdGVkIGNvbHVtbnMg cmVmZXJlbmNpbmcgdXBkYXRlZCBiYXNlCisJICogY29sdW1ucy4KKwkgKi8KKwlpZiAodHVw ZGVzYy0+Y29uc3RyICYmCisJCSh0dXBkZXNjLT5jb25zdHItPmhhc19nZW5lcmF0ZWRfc3Rv cmVkIHx8CisJCSB0dXBkZXNjLT5jb25zdHItPmhhc19nZW5lcmF0ZWRfdmlydHVhbCkpCisJ eworCQlmb3IgKGludCBpID0gMDsgaSA8IHR1cGRlc2MtPmNvbnN0ci0+bnVtX2RlZnZhbDsg aSsrKQorCQl7CisJCQlBdHRyRGVmYXVsdCBkZWZ2YWwgPSB0dXBkZXNjLT5jb25zdHItPmRl ZnZhbFtpXTsKKwkJCU5vZGUJICAgKmV4cHI7CisJCQlCaXRtYXBzZXQgICphdHRyc191c2Vk ID0gTlVMTDsKKworCQkJLyogc2tpcCBpZiBub3QgZ2VuZXJhdGVkIGNvbHVtbiAqLworCQkJ aWYgKCFUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGRlZnZhbC5hZG51bSAtIDEpLT5hdHRnZW5l cmF0ZWQpCisJCQkJY29udGludWU7CisKKwkJCWV4cHIgPSBzdHJpbmdUb05vZGUoZGVmdmFs LmFkYmluKTsKKwkJCXB1bGxfdmFyYXR0bm9zKGV4cHIsIDEsICZhdHRyc191c2VkKTsKKwor CQkJaWYgKGJtc19vdmVybGFwKHRhcmdldF9ydGUtPnVwZGF0ZWRDb2xzLCBhdHRyc191c2Vk KSkKKwkJCQl0YXJnZXRfcnRlLT5leHRyYVVwZGF0ZWRDb2xzID0gYm1zX2FkZF9tZW1iZXIo dGFyZ2V0X3J0ZS0+ZXh0cmFVcGRhdGVkQ29scywKKwkJCQkJCQkJCQkJCQkJCSAgZGVmdmFs LmFkbnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCX0KKwl9 CisKIAlyZXR1cm4gdGxpc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGMwODYyMzViMjUu LmFjZDA1NzA4ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTc1LDcgKzU3NSw3IEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICph bGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8aXZhbD4Jb3B0X3dpbmRvd19leGNsdXNp b25fY2xhdXNlCiAldHlwZSA8c3RyPgkJb3B0X2V4aXN0aW5nX3dpbmRvd19uYW1lCiAldHlw ZSA8Ym9vbGVhbj4gb3B0X2lmX25vdF9leGlzdHMKLSV0eXBlIDxpdmFsPglnZW5lcmF0ZWRf d2hlbiBvdmVycmlkZV9raW5kCisldHlwZSA8aXZhbD4JZ2VuZXJhdGVkX3doZW4gb3ZlcnJp ZGVfa2luZCBvcHRfdmlydHVhbF9vcl9zdG9yZWQKICV0eXBlIDxwYXJ0c3BlYz4JUGFydGl0 aW9uU3BlYyBPcHRQYXJ0aXRpb25TcGVjCiAldHlwZSA8c3RyPgkJCXBhcnRfc3RyYXRlZ3kK ICV0eXBlIDxwYXJ0ZWxlbT4JcGFydF9lbGVtCkBAIC02NzYsNyArNjc2LDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlTQVZFUE9JTlQgU0NIRU1BIFNDSEVNQVMgU0NST0xM IFNFQVJDSCBTRUNPTkRfUCBTRUNVUklUWSBTRUxFQ1QgU0VRVUVOQ0UgU0VRVUVOQ0VTCiAJ U0VSSUFMSVpBQkxFIFNFUlZFUiBTRVNTSU9OIFNFU1NJT05fVVNFUiBTRVQgU0VUUyBTRVRP RiBTSEFSRSBTSE9XCiAJU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBT T01FIFNRTF9QIFNUQUJMRSBTVEFOREFMT05FX1AKLQlTVEFSVCBTVEFURU1FTlQgU1RBVElT VElDUyBTVERJTiBTVERPVVQgU1RPUkFHRSBTVFJJQ1RfUCBTVFJJUF9QCisJU1RBUlQgU1RB VEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9Q IFNUUklQX1AKIAlTVUJTQ1JJUFRJT04gU1VCU1RSSU5HIFNZTU1FVFJJQyBTWVNJRCBTWVNU RU1fUAogCiAJVEFCTEUgVEFCTEVTIFRBQkxFU0FNUExFIFRBQkxFU1BBQ0UgVEVNUCBURU1Q TEFURSBURU1QT1JBUlkgVEVYVF9QIFRIRU4KQEAgLTY4OCw3ICs2ODgsNyBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCVVOVElMIFVQREFURSBVU0VSIFVTSU5HCiAKIAlWQUNV VU0gVkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFS SUFESUMgVkFSWUlORwotCVZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUK KwlWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZJUlRVQUwgVk9MQVRJTEUKIAogCVdI RU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVyBXSVRIIFdJVEhJTiBXSVRIT1VUIFdPUksg V1JBUFBFUiBXUklURQogCkBAIC0zNTI5LDYgKzM1MjksMTcgQEAgQ29sQ29uc3RyYWludEVs ZW06CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJ CX0KKwkJCXwgR0VORVJBVEVEIGdlbmVyYXRlZF93aGVuIEFTICcoJyBhX2V4cHIgJyknIG9w dF92aXJ0dWFsX29yX3N0b3JlZAorCQkJCXsKKwkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VO b2RlKENvbnN0cmFpbnQpOworCQkJCQluLT5jb250eXBlID0gQ09OU1RSX0dFTkVSQVRFRDsK KwkJCQkJbi0+Z2VuZXJhdGVkX3doZW4gPSAkMjsKKwkJCQkJbi0+cmF3X2V4cHIgPSAkNTsK KwkJCQkJbi0+Y29va2VkX2V4cHIgPSBOVUxMOworCQkJCQluLT5nZW5lcmF0ZWRfa2luZCA9 ICQ3OworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CiAJCQl8IFJFRkVSRU5DRVMgcXVhbGlmaWVkX25hbWUgb3B0X2NvbHVtbl9saXN0IGtl eV9tYXRjaCBrZXlfYWN0aW9ucwogCQkJCXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VO b2RlKENvbnN0cmFpbnQpOwpAQCAtMzU1MSw2ICszNTYyLDEyIEBAIGdlbmVyYXRlZF93aGVu OgogCQkJfCBCWSBERUZBVUxUCXsgJCQgPSBBVFRSSUJVVEVfSURFTlRJVFlfQllfREVGQVVM VDsgfQogCQk7CiAKK29wdF92aXJ0dWFsX29yX3N0b3JlZDoKKwkJCVNUT1JFRAkJCXsgJCQg PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRDsgfQorCQkJfCBWSVJUVUFMCQl7ICQkID0g QVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMOyB9CisJCQl8IC8qRU1QVFkqLwkJeyAkJCA9 IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTDsgfQorCQk7CisKIC8qCiAgKiBDb25zdHJh aW50QXR0ciByZXByZXNlbnRzIGNvbnN0cmFpbnQgYXR0cmlidXRlcywgd2hpY2ggd2UgcGFy c2UgYXMgaWYKICAqIHRoZXkgd2VyZSBpbmRlcGVuZGVudCBjb25zdHJhaW50IGNsYXVzZXMs IGluIG9yZGVyIHRvIGF2b2lkIHNoaWZ0L3JlZHVjZQpAQCAtMzYxOSw2ICszNjM2LDcgQEAg VGFibGVMaWtlT3B0aW9uOgogCQkJCXwgQ09OU1RSQUlOVFMJCXsgJCQgPSBDUkVBVEVfVEFC TEVfTElLRV9DT05TVFJBSU5UUzsgfQogCQkJCXwgREVGQVVMVFMJCQl7ICQkID0gQ1JFQVRF X1RBQkxFX0xJS0VfREVGQVVMVFM7IH0KIAkJCQl8IElERU5USVRZX1AJCXsgJCQgPSBDUkVB VEVfVEFCTEVfTElLRV9JREVOVElUWTsgfQorCQkJCXwgR0VORVJBVEVECQkJeyAkJCA9IENS RUFURV9UQUJMRV9MSUtFX0dFTkVSQVRFRDsgfQogCQkJCXwgSU5ERVhFUwkJCXsgJCQgPSBD UkVBVEVfVEFCTEVfTElLRV9JTkRFWEVTOyB9CiAJCQkJfCBTVEFUSVNUSUNTCQl7ICQkID0g Q1JFQVRFX1RBQkxFX0xJS0VfU1RBVElTVElDUzsgfQogCQkJCXwgU1RPUkFHRQkJCXsgJCQg PSBDUkVBVEVfVEFCTEVfTElLRV9TVE9SQUdFOyB9CkBAIC0xNTIwNyw2ICsxNTIyNSw3IEBA IHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgU1RESU4KIAkJCXwgU1RET1VUCiAJCQl8IFNU T1JBR0UKKwkJCXwgU1RPUkVECiAJCQl8IFNUUklDVF9QCiAJCQl8IFNUUklQX1AKIAkJCXwg U1VCU0NSSVBUSU9OCkBAIC0xNTI0Myw2ICsxNTI2Miw3IEBAIHVucmVzZXJ2ZWRfa2V5d29y ZDoKIAkJCXwgVkVSU0lPTl9QCiAJCQl8IFZJRVcKIAkJCXwgVklFV1MKKwkJCXwgVklSVFVB TAogCQkJfCBWT0xBVElMRQogCQkJfCBXSElURVNQQUNFX1AKIAkJCXwgV0lUSElOCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggYmQ2MjAxZTUwYS4uYmY2YzkwZTE1NSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtNTE0LDYgKzUxNCwxNCBAQCBjaGVja19hZ2dsZXZl bHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJ CQllcnIgPSBfKCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwYXJ0 aXRpb24ga2V5IGV4cHJlc3Npb25zIik7CiAKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lO RF9HRU5FUkFURURfQ09MVU1OOgorCisJCQlpZiAoaXNBZ2cpCisJCQkJZXJyID0gXygiYWdn cmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gY29sdW1uIGdlbmVyYXRpb24g ZXhwcmVzc2lvbnMiKTsKKwkJCWVsc2UKKwkJCQllcnIgPSBfKCJncm91cGluZyBvcGVyYXRp b25zIGFyZSBub3QgYWxsb3dlZCBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9ucyIp OworCisJCQlicmVhazsKIAogCQljYXNlIEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgogCQkJ aWYgKGlzQWdnKQpAQCAtOTAyLDYgKzkxMCw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxs KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9L SU5EX0NBTExfQVJHVU1FTlQ6CiAJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBu b3QgYWxsb3dlZCBpbiBDQUxMIGFyZ3VtZW50cyIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQ Ul9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25z IGFyZSBub3QgYWxsb3dlZCBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9ucyIpOwor CQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRl ZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9jbGF1c2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1 c2UuYwppbmRleCA2OTYzOTIyYjBlLi5iZGM2NzQyN2ZiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2NsYXVzZS5jCkBAIC0yMTMsNiArMjEzLDEwIEBAIHNldFRhcmdldFRhYmxlKFBhcnNl U3RhdGUgKnBzdGF0ZSwgUmFuZ2VWYXIgKnJlbGF0aW9uLAogCXBzdGF0ZS0+cF90YXJnZXRf cmVsYXRpb24gPSBwYXJzZXJPcGVuVGFibGUocHN0YXRlLCByZWxhdGlvbiwKIAkJCQkJCQkJ CQkJCVJvd0V4Y2x1c2l2ZUxvY2spOwogCisJaWYgKHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRp b24tPnJkX2F0dC0+Y29uc3RyICYmCisJCXBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb24tPnJk X2F0dC0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkX3ZpcnR1YWwpCisJCXBzdGF0ZS0+cF9oYXNH ZW5lcmF0ZWRWaXJ0dWFsID0gdHJ1ZTsKKwogCS8qCiAJICogTm93IGJ1aWxkIGFuIFJURS4K IAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IGJmZjIzNzA5NGEuLjMwNThl YzIwMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMTg0OSw2ICsxODQ5LDkg QEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1Ymxp bmspCiAJCWNhc2UgRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQ6CiAJCQllcnIgPSBfKCJjYW5u b3QgdXNlIHN1YnF1ZXJ5IGluIENBTEwgYXJndW1lbnQiKTsKIAkJCWJyZWFrOworCQljYXNl IEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBz dWJxdWVyeSBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9uIik7CisJCQlicmVhazsK IAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2Fz ZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtMzQ3NSw2ICszNDc4LDggQEAgUGFyc2VFeHByS2lu ZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJCXJldHVybiAiUEFSVElUSU9OIEJZ IjsKIAkJY2FzZSBFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVDoKIAkJCXJldHVybiAiQ0FMTCI7 CisJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CisJCQlyZXR1cm4gIkdFTkVS QVRFRCBBUyI7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRl ZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5j CmluZGV4IDQ2NjFmYzRmNjIuLjMyZDY3YzhjY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1 bmMuYwpAQCAtNjIxLDYgKzYyMSwxNSBAQCBQYXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0YXRl ICpwc3RhdGUsIExpc3QgKmZ1bmNuYW1lLCBMaXN0ICpmYXJncywKIAkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwogCX0KIAorCWlmIChwc3RhdGUtPnBf ZXhwcl9raW5kID09IEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OICYmCisJCWZ1bmNfdm9s YXRpbGUoZnVuY2lkKSAhPSBQUk9WT0xBVElMRV9JTU1VVEFCTEUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2co ImNhbm5vdCB1c2UgZnVuY3Rpb24gJXMgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lv biIsCisJCQkJCQlmdW5jX3NpZ25hdHVyZV9zdHJpbmcoZnVuY25hbWUsIG5hcmdzLCBhcmdu YW1lcywgYWN0dWFsX2FyZ190eXBlcykpLAorCQkJCSBlcnJkZXRhaWwoIkZ1bmN0aW9ucyB1 c2VkIGluIGEgY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBtdXN0IGJlIGltbXV0YWJs ZS4iKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisK IAkvKgogCSAqIElmIHRoZXJlIGFyZSBkZWZhdWx0IGFyZ3VtZW50cywgd2UgaGF2ZSB0byBp bmNsdWRlIHRoZWlyIHR5cGVzIGluCiAJICogYWN0dWFsX2FyZ190eXBlcyBmb3IgdGhlIHB1 cnBvc2Ugb2YgY2hlY2tpbmcgZ2VuZXJpYyB0eXBlIGNvbnNpc3RlbmN5LgpAQCAtMjM3MCw2 ICsyMzc5LDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfQ0FM TF9BUkdVTUVOVDoKIAkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBu b3QgYWxsb3dlZCBpbiBDQUxMIGFyZ3VtZW50cyIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQ Ul9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1 bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lv bnMiKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxs eSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5jCmluZGV4IGRmYmMxY2M0OTkuLjhiNGZiN2RmMjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC03MjksNiArNzI5LDE5IEBAIHNjYW5S VEVGb3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBSYW5nZVRibEVudHJ5ICpydGUsIGNv bnN0IGNoYXIgKmNvbG5hbWUsCiAJCQkJCQkJY29sbmFtZSksCiAJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKIAorCQkvKgorCQkgKiBJbiBnZW5lcmF0 ZWQgY29sdW1uLCBubyBzeXN0ZW0gY29sdW1uIGlzIGFsbG93ZWQgZXhjZXB0IHRhYmxlT2lk LgorCQkgKiAoUmVxdWlyZWQgZm9yIHN0b3JlZCBnZW5lcmF0ZWQsIGJ1dCB3ZSBhbHNvIGRv IGl0IGZvciB2aXJ0dWFsCisJCSAqIGdlbmVyYXRlZCBmb3Igbm93IGZvciBjb25zaXN0ZW5j eS4pCisJCSAqLworCQlpZiAocHN0YXRlLT5wX2V4cHJfa2luZCA9PSBFWFBSX0tJTkRfR0VO RVJBVEVEX0NPTFVNTiAmJgorCQkJYXR0bnVtIDwgSW52YWxpZEF0dHJOdW1iZXIgJiYgYXR0 bnVtICE9IFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAorCQkJCQkg ZXJybXNnKCJjYW5ub3QgdXNlIHN5c3RlbSBjb2x1bW4gXCIlc1wiIGluIGNvbHVtbiBnZW5l cmF0aW9uIGV4cHJlc3Npb24iLAorCQkJCQkJCWNvbG5hbWUpLAorCQkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisKIAkJaWYgKGF0dG51bSAhPSBJbnZh bGlkQXR0ck51bWJlcikKIAkJewogCQkJLyogbm93IGNoZWNrIHRvIHNlZSBpZiBjb2x1bW4g YWN0dWFsbHkgaXMgZGVmaW5lZCAqLwpAQCAtMTIzMyw2ICsxMjQ2LDkgQEAgYWRkUmFuZ2VU YWJsZUVudHJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlydGUtPmVyZWYgPSBtYWtlQWxpYXMo cmVmbmFtZSwgTklMKTsKIAlidWlsZFJlbGF0aW9uQWxpYXNlcyhyZWwtPnJkX2F0dCwgYWxp YXMsIHJ0ZS0+ZXJlZik7CiAKKwlpZiAocmVsLT5yZF9hdHQtPmNvbnN0ciAmJiByZWwtPnJk X2F0dC0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVkX3ZpcnR1YWwpCisJCXBzdGF0ZS0+cF9oYXNH ZW5lcmF0ZWRWaXJ0dWFsID0gdHJ1ZTsKKwogCS8qCiAJICogRHJvcCB0aGUgcmVsIHJlZmNv dW50LCBidXQga2VlcCB0aGUgYWNjZXNzIGxvY2sgdGlsbCBlbmQgb2YgdHJhbnNhY3Rpb24K IAkgKiBzbyB0aGF0IHRoZSB0YWJsZSBjYW4ndCBiZSBkZWxldGVkIG9yIGhhdmUgaXRzIHNj aGVtYSBtb2RpZmllZApAQCAtMTI1NSw2ICsxMjcxLDcgQEAgYWRkUmFuZ2VUYWJsZUVudHJ5 KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlydGUtPnNlbGVjdGVkQ29scyA9IE5VTEw7CiAJcnRl LT5pbnNlcnRlZENvbHMgPSBOVUxMOwogCXJ0ZS0+dXBkYXRlZENvbHMgPSBOVUxMOworCXJ0 ZS0+ZXh0cmFVcGRhdGVkQ29scyA9IE5VTEw7CiAKIAkvKgogCSAqIEFkZCBjb21wbGV0ZWQg UlRFIHRvIHBzdGF0ZSdzIHJhbmdlIHRhYmxlIGxpc3QsIGJ1dCBub3QgdG8gam9pbiBsaXN0 CkBAIC0xMzI2LDYgKzEzNDMsNyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JSZWxhdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsCiAJcnRlLT5zZWxlY3RlZENvbHMgPSBOVUxMOwogCXJ0ZS0+ aW5zZXJ0ZWRDb2xzID0gTlVMTDsKIAlydGUtPnVwZGF0ZWRDb2xzID0gTlVMTDsKKwlydGUt PmV4dHJhVXBkYXRlZENvbHMgPSBOVUxMOwogCiAJLyoKIAkgKiBBZGQgY29tcGxldGVkIFJU RSB0byBwc3RhdGUncyByYW5nZSB0YWJsZSBsaXN0LCBidXQgbm90IHRvIGpvaW4gbGlzdApA QCAtMTQwNSw2ICsxNDIzLDcgQEAgYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yU3VicXVlcnkoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCXJ0ZS0+c2VsZWN0ZWRDb2xzID0gTlVMTDsKIAlydGUtPmlu c2VydGVkQ29scyA9IE5VTEw7CiAJcnRlLT51cGRhdGVkQ29scyA9IE5VTEw7CisJcnRlLT5l eHRyYVVwZGF0ZWRDb2xzID0gTlVMTDsKIAogCS8qCiAJICogQWRkIGNvbXBsZXRlZCBSVEUg dG8gcHN0YXRlJ3MgcmFuZ2UgdGFibGUgbGlzdCwgYnV0IG5vdCB0byBqb2luIGxpc3QKQEAg LTE2NjIsNiArMTY4MSw3IEBAIGFkZFJhbmdlVGFibGVFbnRyeUZvckZ1bmN0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAlydGUtPnNlbGVjdGVkQ29scyA9IE5VTEw7CiAJcnRlLT5pbnNl cnRlZENvbHMgPSBOVUxMOwogCXJ0ZS0+dXBkYXRlZENvbHMgPSBOVUxMOworCXJ0ZS0+ZXh0 cmFVcGRhdGVkQ29scyA9IE5VTEw7CiAKIAkvKgogCSAqIEFkZCBjb21wbGV0ZWQgUlRFIHRv IHBzdGF0ZSdzIHJhbmdlIHRhYmxlIGxpc3QsIGJ1dCBub3QgdG8gam9pbiBsaXN0CkBAIC0x NzI1LDYgKzE3NDUsNyBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JUYWJsZUZ1bmMoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCXJ0ZS0+c2VsZWN0ZWRDb2xzID0gTlVMTDsKIAlydGUtPmluc2Vy dGVkQ29scyA9IE5VTEw7CiAJcnRlLT51cGRhdGVkQ29scyA9IE5VTEw7CisJcnRlLT5leHRy YVVwZGF0ZWRDb2xzID0gTlVMTDsKIAogCS8qCiAJICogQWRkIGNvbXBsZXRlZCBSVEUgdG8g cHN0YXRlJ3MgcmFuZ2UgdGFibGUgbGlzdCwgYnV0IG5vdCB0byBqb2luIGxpc3QKQEAgLTE4 MDMsNiArMTgyNCw3IEBAIGFkZFJhbmdlVGFibGVFbnRyeUZvclZhbHVlcyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJcnRlLT5zZWxlY3RlZENvbHMgPSBOVUxMOwogCXJ0ZS0+aW5zZXJ0ZWRD b2xzID0gTlVMTDsKIAlydGUtPnVwZGF0ZWRDb2xzID0gTlVMTDsKKwlydGUtPmV4dHJhVXBk YXRlZENvbHMgPSBOVUxMOwogCiAJLyoKIAkgKiBBZGQgY29tcGxldGVkIFJURSB0byBwc3Rh dGUncyByYW5nZSB0YWJsZSBsaXN0LCBidXQgbm90IHRvIGpvaW4gbGlzdApAQCAtMTg3Myw2 ICsxODk1LDcgQEAgYWRkUmFuZ2VUYWJsZUVudHJ5Rm9ySm9pbihQYXJzZVN0YXRlICpwc3Rh dGUsCiAJcnRlLT5zZWxlY3RlZENvbHMgPSBOVUxMOwogCXJ0ZS0+aW5zZXJ0ZWRDb2xzID0g TlVMTDsKIAlydGUtPnVwZGF0ZWRDb2xzID0gTlVMTDsKKwlydGUtPmV4dHJhVXBkYXRlZENv bHMgPSBOVUxMOwogCiAJLyoKIAkgKiBBZGQgY29tcGxldGVkIFJURSB0byBwc3RhdGUncyBy YW5nZSB0YWJsZSBsaXN0LCBidXQgbm90IHRvIGpvaW4gbGlzdApAQCAtMTk3NSw2ICsxOTk4 LDcgQEAgYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yQ1RFKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAly dGUtPnNlbGVjdGVkQ29scyA9IE5VTEw7CiAJcnRlLT5pbnNlcnRlZENvbHMgPSBOVUxMOwog CXJ0ZS0+dXBkYXRlZENvbHMgPSBOVUxMOworCXJ0ZS0+ZXh0cmFVcGRhdGVkQ29scyA9IE5V TEw7CiAKIAkvKgogCSAqIEFkZCBjb21wbGV0ZWQgUlRFIHRvIHBzdGF0ZSdzIHJhbmdlIHRh YmxlIGxpc3QsIGJ1dCBub3QgdG8gam9pbiBsaXN0CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYwppbmRleCBmMzUzMGMzYTU0Li5iMDI3MTgzZDQ5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMKQEAgLTQ5Nyw2ICs0OTcsNyBAQCB0cmFuc2Zvcm1Db2x1bW5E ZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAqY29sdW1uKQog CWJvb2wJCXNhd19udWxsYWJsZTsKIAlib29sCQlzYXdfZGVmYXVsdDsKIAlib29sCQlzYXdf aWRlbnRpdHk7CisJYm9vbAkJc2F3X2dlbmVyYXRlZDsKIAlMaXN0Q2VsbCAgICpjbGlzdDsK IAogCWN4dC0+Y29sdW1ucyA9IGxhcHBlbmQoY3h0LT5jb2x1bW5zLCBjb2x1bW4pOwpAQCAt NjA0LDYgKzYwNSw3IEBAIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3JlYXRlU3RtdENv bnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pCiAJc2F3X251bGxhYmxlID0gZmFsc2U7 CiAJc2F3X2RlZmF1bHQgPSBmYWxzZTsKIAlzYXdfaWRlbnRpdHkgPSBmYWxzZTsKKwlzYXdf Z2VuZXJhdGVkID0gZmFsc2U7CiAKIAlmb3JlYWNoKGNsaXN0LCBjb2x1bW4tPmNvbnN0cmFp bnRzKQogCXsKQEAgLTY4NCw2ICs2ODYsNTAgQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlv bihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbikKIAkJCQkJYnJl YWs7CiAJCQkJfQogCisJCQljYXNlIENPTlNUUl9HRU5FUkFURUQ6CisJCQkJaWYgKGN4dC0+ b2ZUeXBlKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkgZXJybXNnKCJnZW5lcmF0ZWQgY29s dW1ucyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0eXBlZCB0YWJsZXMiKSkpOworCQkJCWlmIChj eHQtPnBhcnRib3VuZCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygiZ2VuZXJh dGVkIGNvbHVtbnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gcGFydGl0aW9ucyIpKSk7CisKKwkJ CQlpZiAoc2F3X2dlbmVyYXRlZCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJIGVycm1zZygibXVsdGlwbGUg Z2VuZXJhdGlvbiBjbGF1c2VzIHNwZWNpZmllZCBmb3IgY29sdW1uIFwiJXNcIiBvZiB0YWJs ZSBcIiVzXCIiLAorCQkJCQkJCQkJY29sdW1uLT5jb2xuYW1lLCBjeHQtPnJlbGF0aW9uLT5y ZWxuYW1lKSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAorCQkJ CQkJCQkJCQkJY29uc3RyYWludC0+bG9jYXRpb24pKSk7CisJCQkJY29sdW1uLT5nZW5lcmF0 ZWQgPSBjb25zdHJhaW50LT5nZW5lcmF0ZWRfa2luZDsKKwkJCQljb2x1bW4tPnJhd19kZWZh dWx0ID0gY29uc3RyYWludC0+cmF3X2V4cHI7CisJCQkJQXNzZXJ0KGNvbnN0cmFpbnQtPmNv b2tlZF9leHByID09IE5VTEwpOworCQkJCXNhd19nZW5lcmF0ZWQgPSB0cnVlOworCisJCQkJ LyoKKwkJCQkgKiBQcmV2ZW50IHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgZnJvbSBoYXZp bmcgYSBkb21haW4KKwkJCQkgKiB0eXBlLiAgV2Ugd291bGQgaGF2ZSB0byBlbmZvcmNlIGRv bWFpbiBjb25zdHJhaW50cyB3aGVuCisJCQkJICogY29sdW1ucyB1bmRlcmx5aW5nIHRoZSBn ZW5lcmF0ZWQgY29sdW1uIGNoYW5nZS4gIFRoaXMgY291bGQKKwkJCQkgKiBwb3NzaWJseSBi ZSBpbXBsZW1lbnRlZCwgYnV0IGl0J3Mgbm90LgorCQkJCSAqLworCQkJCWlmIChjb2x1bW4t PmdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCQkJeworCQkJ CQlUeXBlCQljdHlwZTsKKworCQkJCQljdHlwZSA9IHR5cGVuYW1lVHlwZShjeHQtPnBzdGF0 ZSwgY29sdW1uLT50eXBlTmFtZSwgTlVMTCk7CisJCQkJCWlmICgoKEZvcm1fcGdfdHlwZSkg R0VUU1RSVUNUKGN0eXBlKSktPnR5cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4pCisJCQkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCQkJCSBlcnJtc2coInZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbiBc IiVzXCIgY2Fubm90IGhhdmUgYSBkb21haW4gdHlwZSIsCisJCQkJCQkJCQkJY29sdW1uLT5j b2xuYW1lKSwKKwkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKKwkJ CQkJCQkJCQkJCQljb2x1bW4tPmxvY2F0aW9uKSkpOworCQkJCQlSZWxlYXNlU3lzQ2FjaGUo Y3R5cGUpOworCQkJCX0KKwkJCQlicmVhazsKKwogCQkJY2FzZSBDT05TVFJfQ0hFQ0s6CiAJ CQkJY3h0LT5ja2NvbnN0cmFpbnRzID0gbGFwcGVuZChjeHQtPmNrY29uc3RyYWludHMsIGNv bnN0cmFpbnQpOwogCQkJCWJyZWFrOwpAQCAtNzUwLDYgKzc5Niw1MCBAQCB0cmFuc2Zvcm1D b2x1bW5EZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAqY29s dW1uKQogCQkJCQkJCWNvbHVtbi0+Y29sbmFtZSwgY3h0LT5yZWxhdGlvbi0+cmVsbmFtZSks CiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsCiAJCQkJCQkJCQkJY29u c3RyYWludC0+bG9jYXRpb24pKSk7CisKKwkJaWYgKHNhd19kZWZhdWx0ICYmIHNhd19nZW5l cmF0ZWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCSBlcnJtc2coImJvdGggZGVmYXVsdCBhbmQgZ2VuZXJhdGlvbiBl eHByZXNzaW9uIHNwZWNpZmllZCBmb3IgY29sdW1uIFwiJXNcIiBvZiB0YWJsZSBcIiVzXCIi LAorCQkJCQkJCWNvbHVtbi0+Y29sbmFtZSwgY3h0LT5yZWxhdGlvbi0+cmVsbmFtZSksCisJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsCisJCQkJCQkJCQkJY29uc3Ry YWludC0+bG9jYXRpb24pKSk7CisKKwkJaWYgKHNhd19pZGVudGl0eSAmJiBzYXdfZ2VuZXJh dGVkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAorCQkJCQkgZXJybXNnKCJib3RoIGlkZW50aXR5IGFuZCBnZW5lcmF0aW9uIGV4 cHJlc3Npb24gc3BlY2lmaWVkIGZvciBjb2x1bW4gXCIlc1wiIG9mIHRhYmxlIFwiJXNcIiIs CisJCQkJCQkJY29sdW1uLT5jb2xuYW1lLCBjeHQtPnJlbGF0aW9uLT5yZWxuYW1lKSwKKwkJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKKwkJCQkJCQkJCQljb25zdHJh aW50LT5sb2NhdGlvbikpKTsKKworCQkvKgorCQkgKiBGb3IgYSB2aXJ0dWFsIGdlbmVyYXRl ZCBjb2x1bW4sIGNvbnZlcnQgdGhlIG5vdC1udWxsIGNvbnN0cmFpbnQKKwkJICogaW50byBh IGZ1bGwgY2hlY2sgY29uc3RyYWludCwgc28gdGhhdCB0aGUgZ2VuZXJhdGlvbiBleHByZXNz aW9uIGNhbgorCQkgKiBiZSBleHBhbmRlZCBhdCBjaGVjayB0aW1lLgorCQkgKi8KKwkJaWYg KGNvbHVtbi0+aXNfbm90X251bGwgJiYgY29sdW1uLT5nZW5lcmF0ZWQgPT0gQVRUUklCVVRF X0dFTkVSQVRFRF9WSVJUVUFMKQorCQl7CisJCQlDb25zdHJhaW50ICpjaGsgPSBtYWtlTm9k ZShDb25zdHJhaW50KTsKKwkJCU51bGxUZXN0ICpudCA9IG1ha2VOb2RlKE51bGxUZXN0KTsK KwkJCUNvbHVtblJlZiAqY3IgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCisJCQljci0+bG9j YXRpb24gPSAtMTsKKwkJCWNyLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcoY29s dW1uLT5jb2xuYW1lKSk7CisKKwkJCW50LT5hcmcgPSAoRXhwciAqKSBjcjsKKwkJCW50LT5u dWxsdGVzdHR5cGUgPSBJU19OT1RfTlVMTDsKKwkJCW50LT5sb2NhdGlvbiA9IC0xOworCisJ CQljaGstPmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7CisJCQljaGstPmxvY2F0aW9uID0gLTE7 CisJCQljaGstPmluaXRpYWxseV92YWxpZCA9IHRydWU7CisJCQljaGstPnJhd19leHByID0g KE5vZGUgKikgbnQ7CisKKwkJCWN4dC0+Y2tjb25zdHJhaW50cyA9IGxhcHBlbmQoY3h0LT5j a2NvbnN0cmFpbnRzLCBjaGspOworCisJCQljb2x1bW4tPmlzX25vdF9udWxsID0gZmFsc2U7 CisJCX0KIAl9CiAKIAkvKgpAQCAtOTc4LDExICsxMDY4LDEzIEBAIHRyYW5zZm9ybVRhYmxl TGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBUYWJsZUxpa2VDbGF1c2UgKnRh YmxlX2xpa2VfY2xhCiAJCSAqIENvcHkgZGVmYXVsdCwgaWYgcHJlc2VudCBhbmQgdGhlIGRl ZmF1bHQgaGFzIGJlZW4gcmVxdWVzdGVkCiAJCSAqLwogCQlpZiAoYXR0cmlidXRlLT5hdHRo YXNkZWYgJiYKLQkJCSh0YWJsZV9saWtlX2NsYXVzZS0+b3B0aW9ucyAmIENSRUFURV9UQUJM RV9MSUtFX0RFRkFVTFRTKSkKKwkJCSh0YWJsZV9saWtlX2NsYXVzZS0+b3B0aW9ucyAmIENS RUFURV9UQUJMRV9MSUtFX0RFRkFVTFRTIHx8CisJCQkgdGFibGVfbGlrZV9jbGF1c2UtPm9w dGlvbnMgJiBDUkVBVEVfVEFCTEVfTElLRV9HRU5FUkFURUQpKQogCQl7CiAJCQlOb2RlCSAg ICp0aGlzX2RlZmF1bHQgPSBOVUxMOwogCQkJQXR0ckRlZmF1bHQgKmF0dHJkZWY7CiAJCQlp bnQJCQlpOworCQkJYm9vbAkJZm91bmRfd2hvbGVfcm93OwogCiAJCQkvKiBGaW5kIGRlZmF1 bHQgaW4gY29uc3RyYWludCBzdHJ1Y3R1cmUgKi8KIAkJCUFzc2VydChjb25zdHIgIT0gTlVM TCk7CkBAIC05OTcsMTIgKzEwODksMjcgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEK IAkJCX0KIAkJCUFzc2VydCh0aGlzX2RlZmF1bHQgIT0gTlVMTCk7CiAKKwkJCWRlZi0+Y29v a2VkX2RlZmF1bHQgPSBtYXBfdmFyaWFibGVfYXR0bm9zKHRoaXNfZGVmYXVsdCwKKwkJCQkJ CQkJCQkJCQkgIDEsIDAsCisJCQkJCQkJCQkJCQkJICBhdHRtYXAsIHR1cGxlRGVzYy0+bmF0 dHMsCisJCQkJCQkJCQkJCQkJICBJbnZhbGlkT2lkLCAmZm91bmRfd2hvbGVfcm93KTsKKwog CQkJLyoKLQkJCSAqIElmIGRlZmF1bHQgZXhwciBjb3VsZCBjb250YWluIGFueSB2YXJzLCB3 ZSdkIG5lZWQgdG8gZml4ICdlbSwKLQkJCSAqIGJ1dCBpdCBjYW4ndDsgc28gZGVmYXVsdCBp cyByZWFkeSB0byBhcHBseSB0byBjaGlsZC4KKwkJCSAqIFByZXZlbnQgdGhpcyBmb3IgdGhl IHNhbWUgcmVhc29uIGFzIGZvciBjb25zdHJhaW50cyBiZWxvdy4KKwkJCSAqIE5vdGUgdGhh dCBkZWZhdWx0cyBjYW5ub3QgY29udGFpbiBhbnkgdmFycywgc28gaXQncyBPSyB0aGF0IHRo ZQorCQkJICogZXJyb3IgbWVzc2FnZSByZWZlcnMgdG8gZ2VuZXJhdGVkIGNvbHVtbnMuCiAJ CQkgKi8KKwkJCWlmIChmb3VuZF93aG9sZV9yb3cpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBl cnJtc2coImNhbm5vdCBjb252ZXJ0IHdob2xlLXJvdyB0YWJsZSByZWZlcmVuY2UiKSwKKwkJ CQkJCSBlcnJkZXRhaWwoIkdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3IgY29sdW1uIFwiJXNc IiBjb250YWlucyBhIHdob2xlLXJvdyByZWZlcmVuY2UgdG8gdGFibGUgXCIlc1wiLiIsCisJ CQkJCQkJCSAgIGF0dHJpYnV0ZU5hbWUsCisJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbGF0aW9uKSkpKTsKIAotCQkJZGVmLT5jb29rZWRfZGVmYXVsdCA9IHRoaXNf ZGVmYXVsdDsKKwkJCWlmIChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCAmJgorCQkJCSh0YWJs ZV9saWtlX2NsYXVzZS0+b3B0aW9ucyAmIENSRUFURV9UQUJMRV9MSUtFX0dFTkVSQVRFRCkp CisJCQkJZGVmLT5nZW5lcmF0ZWQgPSBhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZDsKIAkJfQog CiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJl Y2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xp YnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCmluZGV4IDcwMjc3MzdlNjcuLjcx MjNkNDE2OWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2Fs cmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC01Niw4ICs1Niw4 IEBAIHN0YXRpYyBjaGFyICpsaWJwcXJjdl9nZXRfY29ubmluZm8oV2FsUmVjZWl2ZXJDb25u ICpjb25uKTsKIHN0YXRpYyB2b2lkIGxpYnBxcmN2X2dldF9zZW5kZXJpbmZvKFdhbFJlY2Vp dmVyQ29ubiAqY29ubiwKIAkJCQkJCWNoYXIgKipzZW5kZXJfaG9zdCwgaW50ICpzZW5kZXJf cG9ydCk7CiBzdGF0aWMgY2hhciAqbGlicHFyY3ZfaWRlbnRpZnlfc3lzdGVtKFdhbFJlY2Vp dmVyQ29ubiAqY29ubiwKLQkJCQkJCSBUaW1lTGluZUlEICpwcmltYXJ5X3RsaSwKLQkJCQkJ CSBpbnQgKnNlcnZlcl92ZXJzaW9uKTsKKwkJCQkJCSBUaW1lTGluZUlEICpwcmltYXJ5X3Rs aSk7CitzdGF0aWMgaW50IGxpYnBxcmN2X3NlcnZlcl92ZXJzaW9uKFdhbFJlY2VpdmVyQ29u biAqY29ubik7CiBzdGF0aWMgdm9pZCBsaWJwcXJjdl9yZWFkdGltZWxpbmVoaXN0b3J5Zmls ZShXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJCQkJCQkJCSBUaW1lTGluZUlEIHRsaSwgY2hh ciAqKmZpbGVuYW1lLAogCQkJCQkJCQkgY2hhciAqKmNvbnRlbnQsIGludCAqbGVuKTsKQEAg LTg2LDYgKzg2LDcgQEAgc3RhdGljIFdhbFJlY2VpdmVyRnVuY3Rpb25zVHlwZSBQUVdhbFJl Y2VpdmVyRnVuY3Rpb25zID0gewogCWxpYnBxcmN2X2dldF9jb25uaW5mbywKIAlsaWJwcXJj dl9nZXRfc2VuZGVyaW5mbywKIAlsaWJwcXJjdl9pZGVudGlmeV9zeXN0ZW0sCisJbGlicHFy Y3Zfc2VydmVyX3ZlcnNpb24sCiAJbGlicHFyY3ZfcmVhZHRpbWVsaW5laGlzdG9yeWZpbGUs CiAJbGlicHFyY3Zfc3RhcnRzdHJlYW1pbmcsCiAJbGlicHFyY3ZfZW5kc3RyZWFtaW5nLApA QCAtMzA5LDggKzMxMCw3IEBAIGxpYnBxcmN2X2dldF9zZW5kZXJpbmZvKFdhbFJlY2VpdmVy Q29ubiAqY29ubiwgY2hhciAqKnNlbmRlcl9ob3N0LAogICogdGltZWxpbmUgSUQgb2YgdGhl IHByaW1hcnkuCiAgKi8KIHN0YXRpYyBjaGFyICoKLWxpYnBxcmN2X2lkZW50aWZ5X3N5c3Rl bShXYWxSZWNlaXZlckNvbm4gKmNvbm4sIFRpbWVMaW5lSUQgKnByaW1hcnlfdGxpLAotCQkJ CQkJIGludCAqc2VydmVyX3ZlcnNpb24pCitsaWJwcXJjdl9pZGVudGlmeV9zeXN0ZW0oV2Fs UmVjZWl2ZXJDb25uICpjb25uLCBUaW1lTGluZUlEICpwcmltYXJ5X3RsaSkKIHsKIAlQR3Jl c3VsdCAgICpyZXM7CiAJY2hhcgkgICAqcHJpbWFyeV9zeXNpZDsKQEAgLTM0MywxMSArMzQz LDE4IEBAIGxpYnBxcmN2X2lkZW50aWZ5X3N5c3RlbShXYWxSZWNlaXZlckNvbm4gKmNvbm4s IFRpbWVMaW5lSUQgKnByaW1hcnlfdGxpLAogCSpwcmltYXJ5X3RsaSA9IHBnX3N0cnRvaW50 MzIoUFFnZXR2YWx1ZShyZXMsIDAsIDEpKTsKIAlQUWNsZWFyKHJlcyk7CiAKLQkqc2VydmVy X3ZlcnNpb24gPSBQUXNlcnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29ubik7Ci0KIAlyZXR1 cm4gcHJpbWFyeV9zeXNpZDsKIH0KIAorLyoKKyAqIFRoaW4gd3JhcHBlciBhcm91bmQgbGli cHEgdG8gb2J0YWluIHNlcnZlciB2ZXJzaW9uLgorICovCitzdGF0aWMgaW50CitsaWJwcXJj dl9zZXJ2ZXJfdmVyc2lvbihXYWxSZWNlaXZlckNvbm4gKmNvbm4pCit7CisJcmV0dXJuIFBR c2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKTsKK30KKwogLyoKICAqIFN0YXJ0IHN0 cmVhbWluZyBXQUwgZGF0YSBmcm9tIGdpdmVuIHN0cmVhbWluZyBvcHRpb25zLgogICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBkZmZiNmNkOWZk Li4wNDExOTYzZjkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90 by5jCkBAIC00NTMsNyArNDUzLDcgQEAgbG9naWNhbHJlcF93cml0ZV90dXBsZShTdHJpbmdJ bmZvIG91dCwgUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwbGUpCiAKIAlmb3IgKGkgPSAw OyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7Ci0JCWlmIChUdXBsZURlc2NBdHRyKGRlc2Ms IGkpLT5hdHRpc2Ryb3BwZWQpCisJCWlmIChUdXBsZURlc2NBdHRyKGRlc2MsIGkpLT5hdHRp c2Ryb3BwZWQgfHwgVHVwbGVEZXNjQXR0cihkZXNjLCBpKS0+YXR0Z2VuZXJhdGVkKQogCQkJ Y29udGludWU7CiAJCW5saXZlYXR0cysrOwogCX0KQEAgLTQ3Myw4ICs0NzMsNyBAQCBsb2dp Y2FscmVwX3dyaXRlX3R1cGxlKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEhlYXBU dXBsZSB0dXBsZSkKIAkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihk ZXNjLCBpKTsKIAkJY2hhcgkgICAqb3V0cHV0c3RyOwogCi0JCS8qIHNraXAgZHJvcHBlZCBj b2x1bW5zICovCi0JCWlmIChhdHQtPmF0dGlzZHJvcHBlZCkKKwkJaWYgKGF0dC0+YXR0aXNk cm9wcGVkIHx8IGF0dC0+YXR0Z2VuZXJhdGVkKQogCQkJY29udGludWU7CiAKIAkJaWYgKGlz bnVsbFtpXSkKQEAgLTU3Myw3ICs1NzIsNyBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0 cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwpCiAJLyogc2VuZCBudW1iZXIgb2YgbGl2ZSBh dHRyaWJ1dGVzICovCiAJZm9yIChpID0gMDsgaSA8IGRlc2MtPm5hdHRzOyBpKyspCiAJewot CQlpZiAoVHVwbGVEZXNjQXR0cihkZXNjLCBpKS0+YXR0aXNkcm9wcGVkKQorCQlpZiAoVHVw bGVEZXNjQXR0cihkZXNjLCBpKS0+YXR0aXNkcm9wcGVkIHx8IFR1cGxlRGVzY0F0dHIoZGVz YywgaSktPmF0dGdlbmVyYXRlZCkKIAkJCWNvbnRpbnVlOwogCQlubGl2ZWF0dHMrKzsKIAl9 CkBAIC01OTEsNyArNTkwLDcgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZv IG91dCwgUmVsYXRpb24gcmVsKQogCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURl c2NBdHRyKGRlc2MsIGkpOwogCQl1aW50OAkJZmxhZ3MgPSAwOwogCi0JCWlmIChhdHQtPmF0 dGlzZHJvcHBlZCkKKwkJaWYgKGF0dC0+YXR0aXNkcm9wcGVkIHx8IGF0dC0+YXR0Z2VuZXJh dGVkKQogCQkJY29udGludWU7CiAKIAkJLyogUkVQTElDQSBJREVOVElUWSBGVUxMIG1lYW5z IGFsbCBjb2x1bW5zIGFyZSBzZW50IGFzIHBhcnQgb2Yga2V5LiAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IDU3Y2E0MjkwNjguLmM3 MDZhODkwOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0 aW9uLmMKQEAgLTI3Niw3ICsyNzYsNyBAQCBsb2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxS ZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJCQlpbnQJCQlhdHRudW07 CiAJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cihkZXNjLCBpKTsK IAotCQkJaWYgKGF0dHItPmF0dGlzZHJvcHBlZCkKKwkJCWlmIChhdHRyLT5hdHRpc2Ryb3Bw ZWQgfHwgYXR0ci0+YXR0Z2VuZXJhdGVkKQogCQkJewogCQkJCWVudHJ5LT5hdHRybWFwW2ld ID0gLTE7CiAJCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYwppbmRleCBhZGZhNDhlM2ZmLi45YzhkNmQxZDhmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTY5Niwx MCArNjk2LDEyIEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNo YXIgKnJlbG5hbWUsCiAJCQkJCSAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19pbmRleCBp IgogCQkJCQkgIiAgICAgICBPTiAoaS5pbmRleHJlbGlkID0gcGdfZ2V0X3JlcGxpY2FfaWRl bnRpdHlfaW5kZXgoJXUpKSIKIAkJCQkJICIgV0hFUkUgYS5hdHRudW0gPiAwOjpwZ19jYXRh bG9nLmludDIiCi0JCQkJCSAiICAgQU5EIE5PVCBhLmF0dGlzZHJvcHBlZCIKKwkJCQkJICIg ICBBTkQgTk9UIGEuYXR0aXNkcm9wcGVkICVzIgogCQkJCQkgIiAgIEFORCBhLmF0dHJlbGlk ID0gJXUiCiAJCQkJCSAiIE9SREVSIEJZIGEuYXR0bnVtIiwKLQkJCQkJIGxyZWwtPnJlbW90 ZWlkLCBscmVsLT5yZW1vdGVpZCk7CisJCQkJCSBscmVsLT5yZW1vdGVpZCwKKwkJCQkJICh3 YWxyY3Zfc2VydmVyX3ZlcnNpb24od3Jjb25uKSA+PSAxMjAwMDAgPyAiQU5EIGEuYXR0Z2Vu ZXJhdGVkID0gJyciIDogIiIpLAorCQkJCQkgbHJlbC0+cmVtb3RlaWQpOwogCXJlcyA9IHdh bHJjdl9leGVjKHdyY29ubiwgY21kLmRhdGEsIDQsIGF0dHJSb3cpOwogCiAJaWYgKHJlcy0+ c3RhdHVzICE9IFdBTFJDVl9PS19UVVBMRVMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwppbmRleCBmNWQ2MjIxOTNjLi41Y2Q2MWYzNGIyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTI1NSw3ICsyNTUs NyBAQCBzbG90X2ZpbGxfZGVmYXVsdHMoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwsIEVT dGF0ZSAqZXN0YXRlLAogCXsKIAkJRXhwcgkgICAqZGVmZXhwcjsKIAotCQlpZiAoVHVwbGVE ZXNjQXR0cihkZXNjLCBhdHRudW0pLT5hdHRpc2Ryb3BwZWQpCisJCWlmIChUdXBsZURlc2NB dHRyKGRlc2MsIGF0dG51bSktPmF0dGlzZHJvcHBlZCB8fCBUdXBsZURlc2NBdHRyKGRlc2Ms IGF0dG51bSktPmF0dGdlbmVyYXRlZCkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChyZWwtPmF0 dHJtYXBbYXR0bnVtXSA+PSAwKQpAQCAtMTY5NSw3ICsxNjk1LDYgQEAgQXBwbHlXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKQogCQlSZXBPcmlnaW5JZCBvcmlnaW5pZDsKIAkJVGltZUxp bmVJRAlzdGFydHBvaW50VExJOwogCQljaGFyCSAgICplcnI7Ci0JCWludAkJCXNlcnZlcl92 ZXJzaW9uOwogCiAJCW15c2xvdG5hbWUgPSBNeVN1YnNjcmlwdGlvbi0+c2xvdG5hbWU7CiAK QEAgLTE3MjksOCArMTcyOCw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IAkJICogV2UgZG9uJ3QgcmVhbGx5IHVzZSB0aGUgb3V0cHV0IGlkZW50aWZ5X3N5c3RlbSBm b3IgYW55dGhpbmcgYnV0IGl0CiAJCSAqIGRvZXMgc29tZSBpbml0aWFsaXphdGlvbnMgb24g dGhlIHVwc3RyZWFtIHNvIGxldCdzIHN0aWxsIGNhbGwgaXQuCiAJCSAqLwotCQkodm9pZCkg d2FscmN2X2lkZW50aWZ5X3N5c3RlbSh3cmNvbm4sICZzdGFydHBvaW50VExJLAotCQkJCQkJ CQkJICAmc2VydmVyX3ZlcnNpb24pOworCQkodm9pZCkgd2FscmN2X2lkZW50aWZ5X3N5c3Rl bSh3cmNvbm4sICZzdGFydHBvaW50VExJKTsKIAogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggNTUxMTk1NzUxNi4uYmY2NGM4 ZTRhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1 dC5jCkBAIC0yNzYsNyArMjc2LDcgQEAgbWF5YmVfc2VuZF9zY2hlbWEoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCQl7CiAJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBs ZURlc2NBdHRyKGRlc2MsIGkpOwogCi0JCQlpZiAoYXR0LT5hdHRpc2Ryb3BwZWQpCisJCQlp ZiAoYXR0LT5hdHRpc2Ryb3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQpCiAJCQkJY29udGlu dWU7CiAKIAkJCWlmIChhdHQtPmF0dHR5cGlkIDwgRmlyc3ROb3JtYWxPYmplY3RJZCkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmluZGV4IDJlOTA5NDRhZDUuLjdk ZDQxNzkxZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwpAQCAt MzMwLDcgKzMzMCw2IEBAIFdhbFJlY2VpdmVyTWFpbih2b2lkKQogCXsKIAkJY2hhcgkgICAq cHJpbWFyeV9zeXNpZDsKIAkJY2hhcgkJc3RhbmRieV9zeXNpZFszMl07Ci0JCWludAkJCXNl cnZlcl92ZXJzaW9uOwogCQlXYWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7CiAKIAkJLyoK QEAgLTMzOCw4ICszMzcsNyBAQCBXYWxSZWNlaXZlck1haW4odm9pZCkKIAkJICogSURFTlRJ RllfU1lTVEVNIHJlcGxpY2F0aW9uIGNvbW1hbmQuCiAJCSAqLwogCQlFbmFibGVXYWxSY3ZJ bW1lZGlhdGVFeGl0KCk7Ci0JCXByaW1hcnlfc3lzaWQgPSB3YWxyY3ZfaWRlbnRpZnlfc3lz dGVtKHdyY29ubiwgJnByaW1hcnlUTEksCi0JCQkJCQkJCQkJCSAgICZzZXJ2ZXJfdmVyc2lv bik7CisJCXByaW1hcnlfc3lzaWQgPSB3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtKHdyY29ubiwg JnByaW1hcnlUTEkpOwogCiAJCXNucHJpbnRmKHN0YW5kYnlfc3lzaWQsIHNpemVvZihzdGFu ZGJ5X3N5c2lkKSwgVUlOVDY0X0ZPUk1BVCwKIAkJCQkgR2V0U3lzdGVtSWRlbnRpZmllcigp KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBi L3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwppbmRleCBjN2E1ZTYzMGI3 Li41Nzk2OWNjMGE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVI YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBA IC0yMCw2ICsyMCw3IEBACiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVk ZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9kZXBlbmRlbmN5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCiAKIC8qIFdlIHVzZSBhIGxpc3Qg b2YgdGhlc2UgdG8gZGV0ZWN0IHJlY3Vyc2lvbiBpbiBSZXdyaXRlUXVlcnkgKi8KQEAgLTgx LDYgKzgzLDggQEAgc3RhdGljIExpc3QgKm1hdGNoTG9ja3MoQ21kVHlwZSBldmVudCwgUnVs ZUxvY2sgKnJ1bGVsb2NrcywKIHN0YXRpYyBRdWVyeSAqZmlyZVJJUnJ1bGVzKFF1ZXJ5ICpw YXJzZXRyZWUsIExpc3QgKmFjdGl2ZVJJUnMpOwogc3RhdGljIGJvb2wgdmlld19oYXNfaW5z dGVhZF90cmlnZ2VyKFJlbGF0aW9uIHZpZXcsIENtZFR5cGUgZXZlbnQpOwogc3RhdGljIEJp dG1hcHNldCAqYWRqdXN0X3ZpZXdfY29sdW1uX3NldChCaXRtYXBzZXQgKmNvbHMsIExpc3Qg KnRhcmdldGxpc3QpOworc3RydWN0IGV4cGFuZF9nZW5lcmF0ZWRfY29udGV4dDsKK3N0YXRp YyBRdWVyeSAqZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2luX3F1ZXJ5KFF1ZXJ5ICpxdWVy eSwgc3RydWN0IGV4cGFuZF9nZW5lcmF0ZWRfY29udGV4dCAqY29udGV4dCk7CiAKIAogLyoK QEAgLTgzMCw2ICs4MzQsMTMgQEAgcmV3cml0ZVRhcmdldExpc3RJVShMaXN0ICp0YXJnZXRM aXN0LAogCiAJCQlpZiAoYXR0X3R1cC0+YXR0aWRlbnRpdHkgPT0gQVRUUklCVVRFX0lERU5U SVRZX0JZX0RFRkFVTFQgJiYgb3ZlcnJpZGUgPT0gT1ZFUlJJRElOR19VU0VSX1ZBTFVFKQog CQkJCWFwcGx5X2RlZmF1bHQgPSB0cnVlOworCisJCQlpZiAoYXR0X3R1cC0+YXR0Z2VuZXJh dGVkICYmICFhcHBseV9kZWZhdWx0KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJjYW5ub3QgaW5z ZXJ0IGludG8gY29sdW1uIFwiJXNcIiIsIE5hbWVTdHIoYXR0X3R1cC0+YXR0bmFtZSkpLAor CQkJCQkJIGVycmRldGFpbCgiQ29sdW1uIFwiJXNcIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4u IiwKKwkJCQkJCQkJICAgTmFtZVN0cihhdHRfdHVwLT5hdHRuYW1lKSkpKTsKIAkJfQogCiAJ CWlmIChjb21tYW5kVHlwZSA9PSBDTURfVVBEQVRFKQpAQCAtODQwLDkgKzg1MSwyNCBAQCBy ZXdyaXRlVGFyZ2V0TGlzdElVKExpc3QgKnRhcmdldExpc3QsCiAJCQkJCQkgZXJybXNnKCJj b2x1bW4gXCIlc1wiIGNhbiBvbmx5IGJlIHVwZGF0ZWQgdG8gREVGQVVMVCIsIE5hbWVTdHIo YXR0X3R1cC0+YXR0bmFtZSkpLAogCQkJCQkJIGVycmRldGFpbCgiQ29sdW1uIFwiJXNcIiBp cyBhbiBpZGVudGl0eSBjb2x1bW4gZGVmaW5lZCBhcyBHRU5FUkFURUQgQUxXQVlTLiIsCiAJ CQkJCQkJCSAgIE5hbWVTdHIoYXR0X3R1cC0+YXR0bmFtZSkpKSk7CisKKwkJCWlmIChhdHRf dHVwLT5hdHRnZW5lcmF0ZWQgJiYgbmV3X3RsZSAmJiAhYXBwbHlfZGVmYXVsdCkKKwkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBjYW4gb25seSBiZSB1cGRhdGVkIHRvIERF RkFVTFQiLCBOYW1lU3RyKGF0dF90dXAtPmF0dG5hbWUpKSwKKwkJCQkJCSBlcnJkZXRhaWwo IkNvbHVtbiBcIiVzXCIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLiIsCisJCQkJCQkJCSAgIE5h bWVTdHIoYXR0X3R1cC0+YXR0bmFtZSkpKSk7CiAJCX0KIAotCQlpZiAoYXBwbHlfZGVmYXVs dCkKKwkJaWYgKGF0dF90dXAtPmF0dGdlbmVyYXRlZCkKKwkJeworCQkJLyoKKwkJCSAqIHZp cnR1YWwgZ2VuZXJhdGVkIGNvbHVtbiBzdG9yZXMgYSBudWxsIHZhbHVlOyBzdG9yZWQgZ2Vu ZXJhdGVkCisJCQkgKiBjb2x1bW4gd2lsbCBiZSBmaXhlZCBpbiBleGVjdXRvcgorCQkJICov CisJCQluZXdfdGxlID0gTlVMTDsKKwkJfQorCQllbHNlIGlmIChhcHBseV9kZWZhdWx0KQog CQl7CiAJCQlOb2RlCSAgICpuZXdfZXhwcjsKIApAQCAtMTE0NywxMyArMTE3MywxMiBAQCBi dWlsZF9jb2x1bW5fZGVmYXVsdChSZWxhdGlvbiByZWwsIGludCBhdHRybm8pCiAJCX0KIAl9 CiAKLQlpZiAoZXhwciA9PSBOVUxMKQotCXsKLQkJLyoKLQkJICogTm8gcGVyLWNvbHVtbiBk ZWZhdWx0LCBzbyBsb29rIGZvciBhIGRlZmF1bHQgZm9yIHRoZSB0eXBlIGl0c2VsZi4KLQkJ ICovCisJLyoKKwkgKiBObyBwZXItY29sdW1uIGRlZmF1bHQsIHNvIGxvb2sgZm9yIGEgZGVm YXVsdCBmb3IgdGhlIHR5cGUgaXRzZWxmLiAgQnV0CisJICogbm90IGZvciBnZW5lcmF0ZWQg Y29sdW1ucy4KKwkgKi8KKwlpZiAoZXhwciA9PSBOVUxMICYmICFhdHRfdHVwLT5hdHRnZW5l cmF0ZWQpCiAJCWV4cHIgPSBnZXRfdHlwZGVmYXVsdChhdHR0eXBlKTsKLQl9CiAKIAlpZiAo ZXhwciA9PSBOVUxMKQogCQlyZXR1cm4gTlVMTDsJCQkvKiBObyBkZWZhdWx0IGFueXdoZXJl ICovCkBAIC0xNjEwLDEyICsxNjM1LDE0IEBAIEFwcGx5UmV0cmlldmVSdWxlKFF1ZXJ5ICpw YXJzZXRyZWUsCiAJc3VicnRlLT5zZWxlY3RlZENvbHMgPSBydGUtPnNlbGVjdGVkQ29sczsK IAlzdWJydGUtPmluc2VydGVkQ29scyA9IHJ0ZS0+aW5zZXJ0ZWRDb2xzOwogCXN1YnJ0ZS0+ dXBkYXRlZENvbHMgPSBydGUtPnVwZGF0ZWRDb2xzOworCXN1YnJ0ZS0+ZXh0cmFVcGRhdGVk Q29scyA9IHJ0ZS0+ZXh0cmFVcGRhdGVkQ29sczsKIAogCXJ0ZS0+cmVxdWlyZWRQZXJtcyA9 IDA7CQkvKiBubyBwZXJtaXNzaW9uIGNoZWNrIG9uIHN1YnF1ZXJ5IGl0c2VsZiAqLwogCXJ0 ZS0+Y2hlY2tBc1VzZXIgPSBJbnZhbGlkT2lkOwogCXJ0ZS0+c2VsZWN0ZWRDb2xzID0gTlVM TDsKIAlydGUtPmluc2VydGVkQ29scyA9IE5VTEw7CiAJcnRlLT51cGRhdGVkQ29scyA9IE5V TEw7CisJcnRlLT5leHRyYVVwZGF0ZWRDb2xzID0gTlVMTDsKIAogCXJldHVybiBwYXJzZXRy ZWU7CiB9CkBAIC0zNjc2LDYgKzM3MDMsMTQ1IEBAIFJld3JpdGVRdWVyeShRdWVyeSAqcGFy c2V0cmVlLCBMaXN0ICpyZXdyaXRlX2V2ZW50cykKIH0KIAogCitzdGF0aWMgTm9kZSAqCitl eHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5fZXhwcl9tdXRhdG9yKE5vZGUgKm5vZGUsIFJl bGF0aW9uIHJlbCkKK3sKKwlpZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKwor CWlmIChJc0Eobm9kZSwgVmFyKSkKKwl7CisJCVZhciAqdiA9IChWYXIgKikgbm9kZTsKKwkJ QXR0ck51bWJlcglhdHRudW0gPSB2LT52YXJhdHRubzsKKworCQlpZiAoYXR0bnVtID4gMCAm JiBUdXBsZURlc2NBdHRyKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgYXR0bnVtIC0gMSktPmF0 dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCXsKKwkJCW5v ZGUgPSBidWlsZF9jb2x1bW5fZGVmYXVsdChyZWwsIGF0dG51bSk7CisJCQlpZiAobm9kZSA9 PSBOVUxMKQorCQkJCWVsb2coRVJST1IsICJubyBnZW5lcmF0aW9uIGV4cHJlc3Npb24gZm91 bmQgZm9yIGNvbHVtbiBudW1iZXIgJWQgb2YgdGFibGUgXCIlc1wiIiwKKwkJCQkJIGF0dG51 bSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CisJCQlDaGFuZ2VWYXJOb2Rlcyhu b2RlLCAxLCB2LT52YXJubywgMCk7CisJCX0KKworCQlyZXR1cm4gbm9kZTsKKwl9CisJZWxz ZQorCQlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX211dGF0b3Iobm9kZSwgZXhwYW5kX2dlbmVy YXRlZF9jb2x1bW5zX2luX2V4cHJfbXV0YXRvciwgcmVsKTsKK30KKworCitOb2RlICoKK2V4 cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKE5vZGUgKm5vZGUsIFJlbGF0aW9uIHJl bCkKK3sKKwlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKwor CWlmICh0dXBkZXNjLT5jb25zdHIgJiYgdHVwZGVzYy0+Y29uc3RyLT5oYXNfZ2VuZXJhdGVk X3ZpcnR1YWwpCisJCXJldHVybiBleHByZXNzaW9uX3RyZWVfbXV0YXRvcihub2RlLAorCQkJ CQkJCQkJICAgZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2luX2V4cHJfbXV0YXRvciwKKwkJ CQkJCQkJCSAgIHJlbCk7CisJZWxzZQorCQlyZXR1cm4gbm9kZTsKK30KKworc3RydWN0IGV4 cGFuZF9nZW5lcmF0ZWRfY29udGV4dAoreworCS8qIGxpc3Qgb2YgcmFuZ2UgdGFibGVzLCBp bm5lcm1vc3QgbGFzdCAqLworCUxpc3QgICAgICAgKnJ0YWJsZXM7Cit9OworCitzdGF0aWMg Tm9kZSAqCitleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5fcXVlcnlfbXV0YXRvcihOb2Rl ICpub2RlLCBzdHJ1Y3QgZXhwYW5kX2dlbmVyYXRlZF9jb250ZXh0ICpjb250ZXh0KQorewor CWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJaWYgKElzQShub2RlLCBW YXIpKQorCXsKKwkJVmFyICp2ID0gKFZhciAqKSBub2RlOworCQlPaWQJCQlyZWxpZDsKKwkJ QXR0ck51bWJlcglhdHRudW07CisJCUxpc3QJICAgKnJ0YWJsZSA9IGxpc3RfbnRoX25vZGUo TGlzdCwKKwkJCQkJCQkJCQkgICBjb250ZXh0LT5ydGFibGVzLAorCQkJCQkJCQkJCSAgIGxp c3RfbGVuZ3RoKGNvbnRleHQtPnJ0YWJsZXMpIC0gdi0+dmFybGV2ZWxzdXAgLSAxKTsKKwor CQlyZWxpZCA9IHJ0X2ZldGNoKHYtPnZhcm5vLCBydGFibGUpLT5yZWxpZDsKKwkJYXR0bnVt ID0gdi0+dmFyYXR0bm87CisKKwkJaWYgKCFyZWxpZCB8fCAhYXR0bnVtKQorCQkJcmV0dXJu IG5vZGU7CisKKwkJaWYgKGdldF9hdHRnZW5lcmF0ZWQocmVsaWQsIGF0dG51bSkgPT0gQVRU UklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQorCQl7CisJCQlSZWxhdGlvbiBydF9lbnRyeV9y ZWxhdGlvbiA9IGhlYXBfb3BlbihyZWxpZCwgTm9Mb2NrKTsKKworCQkJbm9kZSA9IGJ1aWxk X2NvbHVtbl9kZWZhdWx0KHJ0X2VudHJ5X3JlbGF0aW9uLCBhdHRudW0pOworCQkJQ2hhbmdl VmFyTm9kZXMobm9kZSwgMSwgdi0+dmFybm8sIHYtPnZhcmxldmVsc3VwKTsKKworCQkJaGVh cF9jbG9zZShydF9lbnRyeV9yZWxhdGlvbiwgTm9Mb2NrKTsKKwkJfQorCisJCXJldHVybiBu b2RlOworCX0KKwllbHNlIGlmIChJc0Eobm9kZSwgUXVlcnkpKQorCXsKKwkJUXVlcnkJICAg KnF1ZXJ5ID0gKFF1ZXJ5ICopIG5vZGU7CisKKwkJcXVlcnkgPSBleHBhbmRfZ2VuZXJhdGVk X2NvbHVtbnNfaW5fcXVlcnkocXVlcnksIGNvbnRleHQpOworCisJCXJldHVybiAoTm9kZSAq KSBxdWVyeTsKKwl9CisJZWxzZQorCQlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX211dGF0b3Io bm9kZSwgZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2luX3F1ZXJ5X211dGF0b3IsIGNvbnRl eHQpOworfQorCisvKgorICogRXhwYW5kIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgaW4g YSBRdWVyeS4gIFdlIGRvIHNvbWUgb3B0aW1pemF0aW9ucyBoZXJlCisgKiB0byBhdm9pZCBk aWdnaW5nIHRocm91Z2ggdGhlIHdob2xlIFF1ZXJ5IHVubGVzcyBuZWNlc3NhcnkuCisgKi8K K3N0YXRpYyBRdWVyeSAqCitleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5fcXVlcnkoUXVl cnkgKnF1ZXJ5LCBzdHJ1Y3QgZXhwYW5kX2dlbmVyYXRlZF9jb250ZXh0ICpjb250ZXh0KQor eworCWNvbnRleHQtPnJ0YWJsZXMgPSBsYXBwZW5kKGNvbnRleHQtPnJ0YWJsZXMsIHF1ZXJ5 LT5ydGFibGUpOworCisJLyoKKwkgKiBJZiBhbnkgdGFibGUgaW4gdGhlIHF1ZXJ5IGhhcyBh IHZpcnR1YWwgY29sdW1uIG9yIHRoZXJlIGlzIGEgc3VibGluaywKKwkgKiB0aGVuIHdlIG5l ZWQgdG8gZG8gdGhlIHdob2xlIHdhbGsuCisJICovCisJaWYgKHF1ZXJ5LT5oYXNHZW5lcmF0 ZWRWaXJ0dWFsIHx8IHF1ZXJ5LT5oYXNTdWJMaW5rcykKKwl7CisJCXF1ZXJ5ID0gcXVlcnlf dHJlZV9tdXRhdG9yKHF1ZXJ5LAorCQkJCQkJCQkgICBleHBhbmRfZ2VuZXJhdGVkX2NvbHVt bnNfaW5fcXVlcnlfbXV0YXRvciwKKwkJCQkJCQkJICAgY29udGV4dCwKKwkJCQkJCQkJICAg UVRXX0RPTlRfQ09QWV9RVUVSWSk7CisJfQorCS8qCisJICogRWxzZSB3ZSBvbmx5IG5lZWQg dG8gcHJvY2VzcyBzdWJxdWVyaWVzLgorCSAqLworCWVsc2UKKwl7CisJCUxpc3RDZWxsICAg KmxjOworCisJCWZvcmVhY2ggKGxjLCBxdWVyeS0+cnRhYmxlKQorCQl7CisJCQlSYW5nZVRi bEVudHJ5ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMpOworCisJCQlpZiAo cnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSkKKwkJCQlydGUtPnN1YnF1ZXJ5ID0gZXhw YW5kX2dlbmVyYXRlZF9jb2x1bW5zX2luX3F1ZXJ5KHJ0ZS0+c3VicXVlcnksIGNvbnRleHQp OworCQl9CisKKwkJZm9yZWFjaChsYywgcXVlcnktPmN0ZUxpc3QpCisJCXsKKwkJCUNvbW1v blRhYmxlRXhwciAqY3RlID0gKENvbW1vblRhYmxlRXhwciAqKSBsZmlyc3QobGMpOworCisJ CQljdGUtPmN0ZXF1ZXJ5ID0gKE5vZGUgKikgZXhwYW5kX2dlbmVyYXRlZF9jb2x1bW5zX2lu X3F1ZXJ5KGNhc3ROb2RlKFF1ZXJ5LCBjdGUtPmN0ZXF1ZXJ5KSwgY29udGV4dCk7CisJCX0K Kwl9CisKKwljb250ZXh0LT5ydGFibGVzID0gbGlzdF90cnVuY2F0ZShjb250ZXh0LT5ydGFi bGVzLCBsaXN0X2xlbmd0aChjb250ZXh0LT5ydGFibGVzKSAtIDEpOworCisJcmV0dXJuIHF1 ZXJ5OworfQorCiAvKgogICogUXVlcnlSZXdyaXRlIC0KICAqCSAgUHJpbWFyeSBlbnRyeSBw b2ludCB0byB0aGUgcXVlcnkgcmV3cml0ZXIuCkBAIC0zNzMxLDYgKzM4OTcsMjEgQEAgUXVl cnlSZXdyaXRlKFF1ZXJ5ICpwYXJzZXRyZWUpCiAJLyoKIAkgKiBTdGVwIDMKIAkgKgorCSAq IEV4cGFuZCBnZW5lcmF0ZWQgY29sdW1ucy4KKwkgKi8KKwlmb3JlYWNoKGwsIHF1ZXJ5bGlz dCkKKwl7CisJCVF1ZXJ5CSAgICpxdWVyeSA9IChRdWVyeSAqKSBsZmlyc3QobCk7CisJCXN0 cnVjdCBleHBhbmRfZ2VuZXJhdGVkX2NvbnRleHQgY29udGV4dDsKKworCQljb250ZXh0LnJ0 YWJsZXMgPSBOSUw7CisKKwkJcXVlcnkgPSBleHBhbmRfZ2VuZXJhdGVkX2NvbHVtbnNfaW5f cXVlcnkocXVlcnksICZjb250ZXh0KTsKKwl9CisKKwkvKgorCSAqIFN0ZXAgNAorCSAqCiAJ ICogRGV0ZXJtaW5lIHdoaWNoLCBpZiBhbnksIG9mIHRoZSByZXN1bHRpbmcgcXVlcmllcyBp cyBzdXBwb3NlZCB0byBzZXQKIAkgKiB0aGUgY29tbWFuZC1yZXN1bHQgdGFnOyBhbmQgdXBk YXRlIHRoZSBjYW5TZXRUYWcgZmllbGRzIGFjY29yZGluZ2x5LgogCSAqCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IGZiYTBlZThiODQuLmU0OTUwM2IxNDUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC04MjEsNiArODIxLDM5IEBA IGdldF9hdHRudW0oT2lkIHJlbGlkLCBjb25zdCBjaGFyICphdHRuYW1lKQogCQlyZXR1cm4g SW52YWxpZEF0dHJOdW1iZXI7CiB9CiAKKy8qCisgKiBnZXRfYXR0Z2VuZXJhdGVkCisgKgor ICoJCUdpdmVuIHRoZSByZWxhdGlvbiBpZCBhbmQgdGhlIGF0dHJpYnV0ZSBuYW1lLAorICoJ CXJldHVybiB0aGUgImF0dGdlbmVyYXRlZCIgZmllbGQgZnJvbSB0aGUgYXR0cmlidXRlIHJl bGF0aW9uLgorICoKKyAqCQlFcnJvcnMgaWYgbm90IGZvdW5kLgorICoKKyAqCQlTaW5jZSBu b3QgZ2VuZXJhdGVkIGlzIHJlcHJlc2VudGVkIGJ5ICdcMCcsIHRoaXMgY2FuIGFsc28gYmUg dXNlZCBhcyBhCisgKgkJQm9vbGVhbiB0ZXN0LgorICovCitjaGFyCitnZXRfYXR0Z2VuZXJh dGVkKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pCit7CisJSGVhcFR1cGxlCXRwOwor CisJdHAgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVNLAorCQkJCQkJIE9iamVjdElkR2V0RGF0 dW0ocmVsaWQpLAorCQkJCQkJIEludDE2R2V0RGF0dW0oYXR0bnVtKSk7CisJaWYgKEhlYXBU dXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0X3R1cCA9IChG b3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKHRwKTsKKwkJY2hhcgkJcmVzdWx0OworCisJ CXJlc3VsdCA9IGF0dF90dXAtPmF0dGdlbmVyYXRlZDsKKwkJUmVsZWFzZVN5c0NhY2hlKHRw KTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisJZWxzZQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3IgYXR0cmlidXRlICVkIG9mIHJlbGF0aW9uICV1IiwKKwkJCSBh dHRudW0sIHJlbGlkKTsKK30KKwogLyoKICAqIGdldF9hdHR0eXBlCiAgKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGFydGNhY2hlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9wYXJ0Y2FjaGUuYwppbmRleCAyMDA0ZjJkNDY3Li43MWI3YzYxYWVlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wYXJ0Y2FjaGUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9wYXJ0Y2FjaGUuYwpAQCAtMjgsNiArMjgsNyBAQAog I2luY2x1ZGUgIm9wdGltaXplci9jbGF1c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Bs YW5uZXIuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgorI2luY2x1 ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2Nh Y2hlLmgiCkBAIC0xMjcsNiArMTI4LDggQEAgUmVsYXRpb25CdWlsZFBhcnRpdGlvbktleShS ZWxhdGlvbiByZWxhdGlvbikKIAkJZXhwciA9IHN0cmluZ1RvTm9kZShleHByU3RyaW5nKTsK IAkJcGZyZWUoZXhwclN0cmluZyk7CiAKKwkJZXhwciA9IGV4cGFuZF9nZW5lcmF0ZWRfY29s dW1uc19pbl9leHByKGV4cHIsIHJlbGF0aW9uKTsKKwogCQkvKgogCQkgKiBSdW4gdGhlIGV4 cHJlc3Npb25zIHRocm91Z2ggY29uc3Qtc2ltcGxpZmljYXRpb24gc2luY2UgdGhlIHBsYW5u ZXIKIAkJICogd2lsbCBiZSBjb21wYXJpbmcgdGhlbSB0byBzaW1pbGFybHktcHJvY2Vzc2Vk IHF1YWwgY2xhdXNlIG9wZXJhbmRzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMK aW5kZXggMDY1MDNiYzk4Yi4uZDE0ZjMwMzQ4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jCkBAIC01MDcsNiArNTA3LDggQEAgUmVsYXRpb25CdWlsZFR1cGxlRGVzYyhS ZWxhdGlvbiByZWxhdGlvbikKIAljb25zdHIgPSAoVHVwbGVDb25zdHIgKikgTWVtb3J5Q29u dGV4dEFsbG9jKENhY2hlTWVtb3J5Q29udGV4dCwKIAkJCQkJCQkJCQkJCXNpemVvZihUdXBs ZUNvbnN0cikpOwogCWNvbnN0ci0+aGFzX25vdF9udWxsID0gZmFsc2U7CisJY29uc3RyLT5o YXNfZ2VuZXJhdGVkX3N0b3JlZCA9IGZhbHNlOworCWNvbnN0ci0+aGFzX2dlbmVyYXRlZF92 aXJ0dWFsID0gZmFsc2U7CiAKIAkvKgogCSAqIEZvcm0gYSBzY2FuIGtleSB0aGF0IHNlbGVj dHMgb25seSB1c2VyIGF0dHJpYnV0ZXMgKGF0dG51bSA+IDApLgpAQCAtNTU5LDYgKzU2MSwx MCBAQCBSZWxhdGlvbkJ1aWxkVHVwbGVEZXNjKFJlbGF0aW9uIHJlbGF0aW9uKQogCQkvKiBV cGRhdGUgY29uc3RyYWludC9kZWZhdWx0IGluZm8gKi8KIAkJaWYgKGF0dHAtPmF0dG5vdG51 bGwpCiAJCQljb25zdHItPmhhc19ub3RfbnVsbCA9IHRydWU7CisJCWlmIChhdHRwLT5hdHRn ZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQpCisJCQljb25zdHItPmhh c19nZW5lcmF0ZWRfc3RvcmVkID0gdHJ1ZTsKKwkJaWYgKGF0dHAtPmF0dGdlbmVyYXRlZCA9 PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCQljb25zdHItPmhhc19nZW5lcmF0 ZWRfdmlydHVhbCA9IHRydWU7CiAKIAkJLyogSWYgdGhlIGNvbHVtbiBoYXMgYSBkZWZhdWx0 LCBmaWxsIGl0IGludG8gdGhlIGF0dHJkZWYgYXJyYXkgKi8KIAkJaWYgKGF0dHAtPmF0dGhh c2RlZikKQEAgLTMxODUsNiArMzE5MSw3IEBAIFJlbGF0aW9uQnVpbGRMb2NhbFJlbGF0aW9u KGNvbnN0IGNoYXIgKnJlbG5hbWUsCiAJCUZvcm1fcGdfYXR0cmlidXRlIGRhdHQgPSBUdXBs ZURlc2NBdHRyKHJlbC0+cmRfYXR0LCBpKTsKIAogCQlkYXR0LT5hdHRpZGVudGl0eSA9IHNh dHQtPmF0dGlkZW50aXR5OworCQlkYXR0LT5hdHRnZW5lcmF0ZWQgPSBzYXR0LT5hdHRnZW5l cmF0ZWQ7CiAJCWRhdHQtPmF0dG5vdG51bGwgPSBzYXR0LT5hdHRub3RudWxsOwogCQloYXNf bm90X251bGwgfD0gc2F0dC0+YXR0bm90bnVsbDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAw ZTEyOWY5NjU0Li4wMTcyMGYwYmFlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTE5NjYsNiArMTk2 NiwxMSBAQCBkdW1wVGFibGVEYXRhX2luc2VydChBcmNoaXZlICpmb3V0LCB2b2lkICpkY29u dGV4dCkKIAkJCXsKIAkJCQlpZiAoZmllbGQgPiAwKQogCQkJCQlhcmNocHV0cygiLCAiLCBm b3V0KTsKKwkJCQlpZiAodGJpbmZvLT5hdHRnZW5lcmF0ZWRbZmllbGRdKQorCQkJCXsKKwkJ CQkJYXJjaHB1dHMoIkRFRkFVTFQiLCBmb3V0KTsKKwkJCQkJY29udGludWU7CisJCQkJfQog CQkJCWlmIChQUWdldGlzbnVsbChyZXMsIHR1cGxlLCBmaWVsZCkpCiAJCQkJewogCQkJCQlh cmNocHV0cygiTlVMTCIsIGZvdXQpOwpAQCAtODA5Nyw2ICs4MTAyLDcgQEAgZ2V0VGFibGVB dHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMp CiAJaW50CQkJaV9hdHRub3RudWxsOwogCWludAkJCWlfYXR0aGFzZGVmOwogCWludAkJCWlf YXR0aWRlbnRpdHk7CisJaW50CQkJaV9hdHRnZW5lcmF0ZWQ7CiAJaW50CQkJaV9hdHRpc2Ry b3BwZWQ7CiAJaW50CQkJaV9hdHRsZW47CiAJaW50CQkJaV9hdHRhbGlnbjsKQEAgLTgxNTAs NiArODE1NiwxMyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAq dGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCQkJCSAgImEuYXR0aXNsb2NhbCxcbiIKIAkJ CQkJCSAgInBnX2NhdGFsb2cuZm9ybWF0X3R5cGUodC5vaWQsIGEuYXR0dHlwbW9kKSBBUyBh dHR0eXBuYW1lLFxuIik7CiAKKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTIwMDAw KQorCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkJCQkgICJhLmF0dGdlbmVyYXRlZCxc biIpOworCQllbHNlCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLAorCQkJCQkJCSAgIicnIEFT IGF0dGdlbmVyYXRlZCxcbiIpOworCiAJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEx MDAwMCkKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsCiAJCQkJCQkJICAiQ0FTRSBXSEVOIGEu YXR0aGFzbWlzc2luZyBBTkQgTk9UIGEuYXR0aXNkcm9wcGVkICIKQEAgLTgyMjIsNiArODIz NSw3IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZv LCBpbnQgbnVtVGFibGVzKQogCQlpX2F0dG5vdG51bGwgPSBQUWZudW1iZXIocmVzLCAiYXR0 bm90bnVsbCIpOwogCQlpX2F0dGhhc2RlZiA9IFBRZm51bWJlcihyZXMsICJhdHRoYXNkZWYi KTsKIAkJaV9hdHRpZGVudGl0eSA9IFBRZm51bWJlcihyZXMsICJhdHRpZGVudGl0eSIpOwor CQlpX2F0dGdlbmVyYXRlZCA9IFBRZm51bWJlcihyZXMsICJhdHRnZW5lcmF0ZWQiKTsKIAkJ aV9hdHRpc2Ryb3BwZWQgPSBQUWZudW1iZXIocmVzLCAiYXR0aXNkcm9wcGVkIik7CiAJCWlf YXR0bGVuID0gUFFmbnVtYmVyKHJlcywgImF0dGxlbiIpOwogCQlpX2F0dGFsaWduID0gUFFm bnVtYmVyKHJlcywgImF0dGFsaWduIik7CkBAIC04MjM5LDYgKzgyNTMsNyBAQCBnZXRUYWJs ZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxl cykKIAkJdGJpbmZvLT5hdHRzdG9yYWdlID0gKGNoYXIgKikgcGdfbWFsbG9jKG50dXBzICog c2l6ZW9mKGNoYXIpKTsKIAkJdGJpbmZvLT50eXBzdG9yYWdlID0gKGNoYXIgKikgcGdfbWFs bG9jKG50dXBzICogc2l6ZW9mKGNoYXIpKTsKIAkJdGJpbmZvLT5hdHRpZGVudGl0eSA9IChj aGFyICopIHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihjaGFyKSk7CisJCXRiaW5mby0+YXR0 Z2VuZXJhdGVkID0gKGNoYXIgKikgcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKGNoYXIpKTsK IAkJdGJpbmZvLT5hdHRpc2Ryb3BwZWQgPSAoYm9vbCAqKSBwZ19tYWxsb2MobnR1cHMgKiBz aXplb2YoYm9vbCkpOwogCQl0YmluZm8tPmF0dGxlbiA9IChpbnQgKikgcGdfbWFsbG9jKG50 dXBzICogc2l6ZW9mKGludCkpOwogCQl0YmluZm8tPmF0dGFsaWduID0gKGNoYXIgKikgcGdf bWFsbG9jKG50dXBzICogc2l6ZW9mKGNoYXIpKTsKQEAgLTgyNjUsNiArODI4MCw3IEBAIGdl dFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVt VGFibGVzKQogCQkJdGJpbmZvLT5hdHRzdG9yYWdlW2pdID0gKihQUWdldHZhbHVlKHJlcywg aiwgaV9hdHRzdG9yYWdlKSk7CiAJCQl0YmluZm8tPnR5cHN0b3JhZ2Vbal0gPSAqKFBRZ2V0 dmFsdWUocmVzLCBqLCBpX3R5cHN0b3JhZ2UpKTsKIAkJCXRiaW5mby0+YXR0aWRlbnRpdHlb al0gPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBpX2F0dGlkZW50aXR5KSk7CisJCQl0YmluZm8t PmF0dGdlbmVyYXRlZFtqXSA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfYXR0Z2VuZXJhdGVk KSk7CiAJCQl0YmluZm8tPm5lZWRzX292ZXJyaWRlID0gdGJpbmZvLT5uZWVkc19vdmVycmlk ZSB8fCAodGJpbmZvLT5hdHRpZGVudGl0eVtqXSA9PSBBVFRSSUJVVEVfSURFTlRJVFlfQUxX QVlTKTsKIAkJCXRiaW5mby0+YXR0aXNkcm9wcGVkW2pdID0gKFBRZ2V0dmFsdWUocmVzLCBq LCBpX2F0dGlzZHJvcHBlZClbMF0gPT0gJ3QnKTsKIAkJCXRiaW5mby0+YXR0bGVuW2pdID0g YXRvaShQUWdldHZhbHVlKHJlcywgaiwgaV9hdHRsZW4pKTsKQEAgLTE1NTQzLDYgKzE1NTU5 LDIzIEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRiaW5m bykKIAkJCQkJCQkJCQkgIHRiaW5mby0+YXR0dHlwbmFtZXNbal0pOwogCQkJCQl9CiAKKwkJ CQkJaWYgKGhhc19kZWZhdWx0KQorCQkJCQl7CisJCQkJCQlpZiAodGJpbmZvLT5hdHRnZW5l cmF0ZWRbal0gPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQpCisJCQkJCQkJYXBwZW5k UFFFeHBCdWZmZXIocSwgIiBHRU5FUkFURUQgQUxXQVlTIEFTICglcykgU1RPUkVEIiwKKwkJ CQkJCQkJCQkJICB0YmluZm8tPmF0dHJkZWZzW2pdLT5hZGVmX2V4cHIpOworCQkJCQkJZWxz ZSBpZiAodGJpbmZvLT5hdHRnZW5lcmF0ZWRbal0gPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9W SVJUVUFMKQorCQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgR0VORVJBVEVEIEFMV0FZ UyBBUyAoJXMpIiwKKwkJCQkJCQkJCQkJICB0YmluZm8tPmF0dHJkZWZzW2pdLT5hZGVmX2V4 cHIpOworCQkJCQkJZWxzZQorCQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgREVGQVVM VCAlcyIsCisJCQkJCQkJCQkJCSAgdGJpbmZvLT5hdHRyZGVmc1tqXS0+YWRlZl9leHByKTsK KwkJCQkJfQorCisKKwkJCQkJaWYgKGhhc19ub3RudWxsKQorCQkJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocSwgIiBOT1QgTlVMTCIpOworCiAJCQkJCS8qIEFkZCBjb2xsYXRpb24gaWYg bm90IGRlZmF1bHQgZm9yIHRoZSB0eXBlICovCiAJCQkJCWlmIChPaWRJc1ZhbGlkKHRiaW5m by0+YXR0Y29sbGF0aW9uW2pdKSkKIAkJCQkJewpAQCAtMTU1NTMsMTMgKzE1NTg2LDYgQEAg ZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJ CQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgQ09MTEFURSAlcyIsCiAJCQkJCQkJCQkJCSAg Zm10UXVhbGlmaWVkRHVtcGFibGUoY29sbCkpOwogCQkJCQl9Ci0KLQkJCQkJaWYgKGhhc19k ZWZhdWx0KQotCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiBERUZBVUxUICVzIiwKLQkJ CQkJCQkJCQkgIHRiaW5mby0+YXR0cmRlZnNbal0tPmFkZWZfZXhwcik7Ci0KLQkJCQkJaWYg KGhhc19ub3RudWxsKQotCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiBOT1QgTlVM TCIpOwogCQkJCX0KIAkJCX0KIApAQCAtMTgxMzcsNiArMTgxNjMsNyBAQCBmbXRDb3B5Q29s dW1uTGlzdChjb25zdCBUYWJsZUluZm8gKnRpLCBQUUV4cEJ1ZmZlciBidWZmZXIpCiAJaW50 CQkJbnVtYXR0cyA9IHRpLT5udW1hdHRzOwogCWNoYXIJICAqKmF0dG5hbWVzID0gdGktPmF0 dG5hbWVzOwogCWJvb2wJICAgKmF0dGlzZHJvcHBlZCA9IHRpLT5hdHRpc2Ryb3BwZWQ7CisJ Y2hhcgkgICAqYXR0Z2VuZXJhdGVkID0gdGktPmF0dGdlbmVyYXRlZDsKIAlib29sCQluZWVk Q29tbWE7CiAJaW50CQkJaTsKIApAQCAtMTgxNDYsNiArMTgxNzMsOCBAQCBmbXRDb3B5Q29s dW1uTGlzdChjb25zdCBUYWJsZUluZm8gKnRpLCBQUUV4cEJ1ZmZlciBidWZmZXIpCiAJewog CQlpZiAoYXR0aXNkcm9wcGVkW2ldKQogCQkJY29udGludWU7CisJCWlmIChhdHRnZW5lcmF0 ZWRbaV0pCisJCQljb250aW51ZTsKIAkJaWYgKG5lZWRDb21tYSkKIAkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKGJ1ZmZlciwgIiwgIik7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1ZmZl ciwgZm10SWQoYXR0bmFtZXNbaV0pKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDIxZDJhYjA1YjAu LjkyOGVkMTJkMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtMzEwLDYgKzMxMCw3IEBAIHR5cGVk ZWYgc3RydWN0IF90YWJsZUluZm8KIAljaGFyCSAgICp0eXBzdG9yYWdlOwkJLyogdHlwZSBz dG9yYWdlIHNjaGVtZSAqLwogCWJvb2wJICAgKmF0dGlzZHJvcHBlZDsJLyogdHJ1ZSBpZiBh dHRyIGlzIGRyb3BwZWQ7IGRvbid0IGR1bXAgaXQgKi8KIAljaGFyCSAgICphdHRpZGVudGl0 eTsKKwljaGFyCSAgICphdHRnZW5lcmF0ZWQ7CiAJaW50CQkgICAqYXR0bGVuOwkJCS8qIGF0 dHJpYnV0ZSBsZW5ndGgsIHVzZWQgYnkgYmluYXJ5X3VwZ3JhZGUgKi8KIAljaGFyCSAgICph dHRhbGlnbjsJCS8qIGF0dHJpYnV0ZSBhbGlnbiwgdXNlZCBieSBiaW5hcnlfdXBncmFkZSAq LwogCWJvb2wJICAgKmF0dGlzbG9jYWw7CQkvKiB0cnVlIGlmIGF0dHIgaGFzIGxvY2FsIGRl ZmluaXRpb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQu YyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCAwODAwNWM1MzBmLi5k MzRkNTk4ODE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC0xMTAyLDYgKzExMDIs MTYgQEAgcmVwYWlyRGVwZW5kZW5jeUxvb3AoRHVtcGFibGVPYmplY3QgKipsb29wLAogCQl9 CiAJfQogCisJLyogTG9vcCBvZiB0YWJsZSB3aXRoIGl0c2VsZiwgaGFwcGVucyB3aXRoIGdl bmVyYXRlZCBjb2x1bW5zICovCisJaWYgKG5Mb29wID09IDEpCisJeworCQlpZiAobG9vcFsw XS0+b2JqVHlwZSA9PSBET19UQUJMRSkKKwkJeworCQkJcmVtb3ZlT2JqZWN0RGVwZW5kZW5j eShsb29wWzBdLCBsb29wWzBdLT5kdW1wSWQpOworCQkJcmV0dXJuOworCQl9CisJfQorCiAJ LyoKIAkgKiBJZiBhbGwgdGhlIG9iamVjdHMgYXJlIFRBQkxFX0RBVEEgaXRlbXMsIHdoYXQg d2UgbXVzdCBoYXZlIGlzIGEKIAkgKiBjaXJjdWxhciBzZXQgb2YgZm9yZWlnbiBrZXkgY29u c3RyYWludHMgKG9yIGEgc2luZ2xlIHNlbGYtcmVmZXJlbnRpYWwKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAy X3BnX2R1bXAucGwKaW5kZXggMjQ1ZmNiZjVjZS4uM2Y1Mjg4YWUxMiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3QvMDAyX3BnX2R1bXAucGwKQEAgLTIzNDMsNiArMjM0MywyMyBAQAogCQl1bmxpa2UgPT4g eyBleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwgfSwKIAl9LAogCisJJ0NSRUFURSBU QUJMRSB0ZXN0X3RhYmxlX2dlbmVyYXRlZCcgPT4geworCQljcmVhdGVfb3JkZXIgPT4gMywK KwkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVf Z2VuZXJhdGVkICgKKwkJCQkJCSAgIGNvbDEgaW50IHByaW1hcnkga2V5LAorCQkJCQkJICAg Y29sMiBpbnQgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoY29sMSAqIDIpCisJCQkJCSAgICk7JywK KwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3Rh YmxlX2dlbmVyYXRlZCAoXEVcbgorCQkJXHMrXFFjb2wxIGludGVnZXIgTk9UIE5VTEwsXEVc bgorCQkJXHMrXFFjb2wyIGludGVnZXIgR0VORVJBVEVEIEFMV0FZUyBBUyAoKGNvbDEgKiAy KSlcRVxuCisJCQlcKTsKKwkJCS94bXMsCisJCWxpa2UgPT4KKwkJICB7ICVmdWxsX3J1bnMs ICVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsIHNlY3Rpb25fcHJlX2RhdGEgPT4gMSwgfSwKKwkJ dW5saWtlID0+IHsgZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsIH0sCisJfSwKKwog CSdDUkVBVEUgVEFCTEUgdGFibGVfd2l0aF9zdGF0cycgPT4gewogCQljcmVhdGVfb3JkZXIg PT4gOTgsCiAJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50YWJs ZV9pbmRleF9zdGF0cyAoCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDRkYTY3MTljZTcuLjkwZjNmNGE5OTUg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCkBAIC0xNDYyLDYgKzE0NjIsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0 YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCWF0dG5vdG51bGxfY29sID0gLTEs CiAJCQkJYXR0Y29sbF9jb2wgPSAtMSwKIAkJCQlhdHRpZGVudGl0eV9jb2wgPSAtMSwKKwkJ CQlhdHRnZW5lcmF0ZWRfY29sID0gLTEsCiAJCQkJaXNpbmRleGtleV9jb2wgPSAtMSwKIAkJ CQlpbmRleGRlZl9jb2wgPSAtMSwKIAkJCQlmZHdvcHRzX2NvbCA9IC0xLApAQCAtMTgwNiw4 ICsxODA3LDkgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1h bmFtZSwKIAogCWlmIChzaG93X2NvbHVtbl9kZXRhaWxzKQogCXsKKwkJLyogdXNlICJwcmV0 dHkiIG1vZGUgZm9yIGV4cHJlc3Npb24gdG8gYXZvaWQgZXhjZXNzaXZlIHBhcmVudGhlc2Vz ICovCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCi0JCQkJCQkJICIsXG4gIChTRUxF Q1Qgc3Vic3RyaW5nKHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoZC5hZGJpbiwgZC5hZHJlbGlk KSBmb3IgMTI4KSIKKwkJCQkJCQkgIixcbiAgKFNFTEVDVCBzdWJzdHJpbmcocGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihkLmFkYmluLCBkLmFkcmVsaWQsIHRydWUpIGZvciAxMjgpIgogCQkJ CQkJCSAiXG4gICBGUk9NIHBnX2NhdGFsb2cucGdfYXR0cmRlZiBkIgogCQkJCQkJCSAiXG4g ICBXSEVSRSBkLmFkcmVsaWQgPSBhLmF0dHJlbGlkIEFORCBkLmFkbnVtID0gYS5hdHRudW0g QU5EIGEuYXR0aGFzZGVmKSIKIAkJCQkJCQkgIixcbiAgYS5hdHRub3RudWxsIik7CkBAIC0x ODI0LDYgKzE4MjYsMTEgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAq c2NoZW1hbmFtZSwKIAkJZWxzZQogCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIixc biAgJyc6OnBnX2NhdGFsb2cuY2hhciBBUyBhdHRpZGVudGl0eSIpOwogCQlhdHRpZGVudGl0 eV9jb2wgPSBjb2xzKys7CisJCWlmIChwc2V0LnN2ZXJzaW9uID49IDEyMDAwMCkKKwkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsXG4gIGEuYXR0Z2VuZXJhdGVkIik7CisJCWVs c2UKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsXG4gICcnOjpwZ19jYXRhbG9n LmNoYXIgQVMgYXR0Z2VuZXJhdGVkIik7CisJCWF0dGdlbmVyYXRlZF9jb2wgPSBjb2xzKys7 CiAJfQogCWlmICh0YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX0lOREVYIHx8CiAJCXRh YmxlaW5mby5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCkBAIC0yMDA0 LDYgKzIwMTEsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hl bWFuYW1lLAogCQlpZiAoc2hvd19jb2x1bW5fZGV0YWlscykKIAkJewogCQkJY2hhcgkgICAq aWRlbnRpdHk7CisJCQljaGFyCSAgICpnZW5lcmF0ZWQ7CiAJCQljaGFyCSAgICpkZWZhdWx0 X3N0ciA9ICIiOwogCiAJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShy ZXMsIGksIGF0dGNvbGxfY29sKSwgZmFsc2UsIGZhbHNlKTsKQEAgLTIwMTMsMTYgKzIwMjEs MjEgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwK IAkJCQkJCQkgIGZhbHNlLCBmYWxzZSk7CiAKIAkJCWlkZW50aXR5ID0gUFFnZXR2YWx1ZShy ZXMsIGksIGF0dGlkZW50aXR5X2NvbCk7CisJCQlnZW5lcmF0ZWQgPSBQUWdldHZhbHVlKHJl cywgaSwgYXR0Z2VuZXJhdGVkX2NvbCk7CiAKLQkJCWlmICghaWRlbnRpdHlbMF0pCi0JCQkJ LyogKG5vdGU6IGFib3ZlIHdlIGN1dCBvZmYgdGhlICdkZWZhdWx0JyBzdHJpbmcgYXQgMTI4 KSAqLwotCQkJCWRlZmF1bHRfc3RyID0gUFFnZXR2YWx1ZShyZXMsIGksIGF0dHJkZWZfY29s KTsKLQkJCWVsc2UgaWYgKGlkZW50aXR5WzBdID09IEFUVFJJQlVURV9JREVOVElUWV9BTFdB WVMpCisJCQlpZiAoaWRlbnRpdHlbMF0gPT0gQVRUUklCVVRFX0lERU5USVRZX0FMV0FZUykK IAkJCQlkZWZhdWx0X3N0ciA9ICJnZW5lcmF0ZWQgYWx3YXlzIGFzIGlkZW50aXR5IjsKIAkJ CWVsc2UgaWYgKGlkZW50aXR5WzBdID09IEFUVFJJQlVURV9JREVOVElUWV9CWV9ERUZBVUxU KQogCQkJCWRlZmF1bHRfc3RyID0gImdlbmVyYXRlZCBieSBkZWZhdWx0IGFzIGlkZW50aXR5 IjsKKwkJCWVsc2UgaWYgKGdlbmVyYXRlZFswXSA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NU T1JFRCkKKwkJCQlkZWZhdWx0X3N0ciA9IHBzcHJpbnRmKCJnZW5lcmF0ZWQgYWx3YXlzIGFz ICglcykgc3RvcmVkIiwgUFFnZXR2YWx1ZShyZXMsIGksIGF0dHJkZWZfY29sKSk7CisJCQll bHNlIGlmIChnZW5lcmF0ZWRbMF0gPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQor CQkJCWRlZmF1bHRfc3RyID0gcHNwcmludGYoImdlbmVyYXRlZCBhbHdheXMgYXMgKCVzKSIs IFBRZ2V0dmFsdWUocmVzLCBpLCBhdHRyZGVmX2NvbCkpOworCQkJZWxzZQorCQkJCS8qIChu b3RlOiBhYm92ZSB3ZSBjdXQgb2ZmIHRoZSAnZGVmYXVsdCcgc3RyaW5nIGF0IDEyOCkgKi8K KwkJCQlkZWZhdWx0X3N0ciA9IFBRZ2V0dmFsdWUocmVzLCBpLCBhdHRyZGVmX2NvbCk7CiAK LQkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBkZWZhdWx0X3N0ciwgZmFsc2UsIGZhbHNl KTsKKwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBkZWZhdWx0X3N0ciwgZmFsc2UsIGdl bmVyYXRlZFswXSA/IHRydWUgOiBmYWxzZSk7CiAJCX0KIAogCQkvKiBJbmZvIGZvciBpbmRl eCBjb2x1bW5zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHVwZGVzYy5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaAppbmRleCBkODhiZGNlYzg0Li4xNzFi NDhhZWMyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHVwZGVzYy5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBkZXNjLmgKQEAgLTQ0LDYgKzQ0LDggQEAgdHlwZWRl ZiBzdHJ1Y3QgdHVwbGVDb25zdHIKIAl1aW50MTYJCW51bV9kZWZ2YWw7CiAJdWludDE2CQlu dW1fY2hlY2s7CiAJYm9vbAkJaGFzX25vdF9udWxsOworCWJvb2wJCWhhc19nZW5lcmF0ZWRf c3RvcmVkOworCWJvb2wJCWhhc19nZW5lcmF0ZWRfdmlydHVhbDsKIH0gVHVwbGVDb25zdHI7 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvaGVhcC5oCmluZGV4IDYyNWI3ZTVjNDMuLjljOGY1OTg4NjIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvaGVhcC5oCkBAIC0xMTQsNyArMTE0LDggQEAgZXh0ZXJuIE5vZGUgKmNvb2tE ZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCU5vZGUgKnJhd19kZWZhdWx0LAogCQkJ T2lkIGF0dHR5cGlkLAogCQkJaW50MzIgYXR0dHlwbW9kLAotCQkJY29uc3QgY2hhciAqYXR0 bmFtZSk7CisJCQljb25zdCBjaGFyICphdHRuYW1lLAorCQkJY2hhciBhdHRnZW5lcmF0ZWQp OwogCiBleHRlcm4gdm9pZCBEZWxldGVSZWxhdGlvblR1cGxlKE9pZCByZWxpZCk7CiBleHRl cm4gdm9pZCBEZWxldGVBdHRyaWJ1dGVUdXBsZXMoT2lkIHJlbGlkKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmggYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2F0dHJpYnV0ZS5oCmluZGV4IGE2ZWMxMjIzODkuLjU2NjJkOTJlYTYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19hdHRyaWJ1dGUuaApAQCAtMTQwLDYgKzE0MCw5IEBAIENBVEFM T0cocGdfYXR0cmlidXRlLDEyNDksQXR0cmlidXRlUmVsYXRpb25JZCkgQktJX0JPT1RTVFJB UCBCS0lfUk9XVFlQRV9PSUQoNzUsCiAJLyogT25lIG9mIHRoZSBBVFRSSUJVVEVfSURFTlRJ VFlfKiBjb25zdGFudHMgYmVsb3csIG9yICdcMCcgKi8KIAljaGFyCQlhdHRpZGVudGl0eSBC S0lfREVGQVVMVCgnXDAnKTsKIAorCS8qIE9uZSBvZiB0aGUgQVRUUklCVVRFX0dFTkVSQVRF RF8qIGNvbnN0YW50cyBiZWxvdywgb3IgJ1wwJyAqLworCWNoYXIJCWF0dGdlbmVyYXRlZCBC S0lfREVGQVVMVCgnXDAnKTsKKwogCS8qIElzIGRyb3BwZWQgKGllLCBsb2dpY2FsbHkgaW52 aXNpYmxlKSBvciBub3QgKi8KIAlib29sCQlhdHRpc2Ryb3BwZWQgQktJX0RFRkFVTFQoZik7 CiAKQEAgLTIwMSw2ICsyMDQsOSBAQCB0eXBlZGVmIEZvcm1EYXRhX3BnX2F0dHJpYnV0ZSAq Rm9ybV9wZ19hdHRyaWJ1dGU7CiAjZGVmaW5lCQkgIEFUVFJJQlVURV9JREVOVElUWV9BTFdB WVMJCSdhJwogI2RlZmluZQkJICBBVFRSSUJVVEVfSURFTlRJVFlfQllfREVGQVVMVCAnZCcK IAorI2RlZmluZQkJICBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRAkncycKKyNkZWZpbmUJ CSAgQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMCSd2JworCiAjZW5kaWYJCQkJCQkJLyog RVhQT1NFX1RPX0NMSUVOVF9DT0RFICovCiAKICNlbmRpZgkJCQkJCQkvKiBQR19BVFRSSUJV VEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5kYXQg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmRhdAppbmRleCBjY2NhZDI1YzE0Li41 N2RiZmI2NDk1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmRh dAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmRhdApAQCAtMzYsMTEgKzM2 LDExIEBACiAgIHJlbG9mdHlwZSA9PiAnMCcsIHJlbG93bmVyID0+ICdQR1VJRCcsIHJlbGFt ID0+ICcwJywgcmVsZmlsZW5vZGUgPT4gJzAnLAogICByZWx0YWJsZXNwYWNlID0+ICcwJywg cmVscGFnZXMgPT4gJzAnLCByZWx0dXBsZXMgPT4gJzAnLCByZWxhbGx2aXNpYmxlID0+ICcw JywKICAgcmVsdG9hc3RyZWxpZCA9PiAnMCcsIHJlbGhhc2luZGV4ID0+ICdmJywgcmVsaXNz aGFyZWQgPT4gJ2YnLAotICByZWxwZXJzaXN0ZW5jZSA9PiAncCcsIHJlbGtpbmQgPT4gJ3In LCByZWxuYXR0cyA9PiAnMjQnLCByZWxjaGVja3MgPT4gJzAnLAotICByZWxoYXNydWxlcyA9 PiAnZicsIHJlbGhhc3RyaWdnZXJzID0+ICdmJywgcmVsaGFzc3ViY2xhc3MgPT4gJ2YnLAot ICByZWxyb3dzZWN1cml0eSA9PiAnZicsIHJlbGZvcmNlcm93c2VjdXJpdHkgPT4gJ2YnLCBy ZWxpc3BvcHVsYXRlZCA9PiAndCcsCi0gIHJlbHJlcGxpZGVudCA9PiAnbicsIHJlbGlzcGFy dGl0aW9uID0+ICdmJywgcmVscmV3cml0ZSA9PiAnMCcsCi0gIHJlbGZyb3plbnhpZCA9PiAn MycsIHJlbG1pbm14aWQgPT4gJzEnLCByZWxhY2wgPT4gJ19udWxsXycsCisgIHJlbHBlcnNp c3RlbmNlID0+ICdwJywgcmVsa2luZCA9PiAncicsIHJlbG5hdHRzID0+ICcyNScsIHJlbGNo ZWNrcyA9PiAnMCcsCisgIHJlbGhhc3J1bGVzID0+ICdmJywgcmVsaGFzdHJpZ2dlcnMgPT4g J2YnLAorICByZWxoYXNzdWJjbGFzcyA9PiAnZicsIHJlbHJvd3NlY3VyaXR5ID0+ICdmJywg cmVsZm9yY2Vyb3dzZWN1cml0eSA9PiAnZicsCisgIHJlbGlzcG9wdWxhdGVkID0+ICd0Jywg cmVscmVwbGlkZW50ID0+ICduJywgcmVsaXNwYXJ0aXRpb24gPT4gJ2YnLAorICByZWxyZXdy aXRlID0+ICcwJywgcmVsZnJvemVueGlkID0+ICczJywgcmVsbWlubXhpZCA9PiAnMScsIHJl bGFjbCA9PiAnX251bGxfJywKICAgcmVsb3B0aW9ucyA9PiAnX251bGxfJywgcmVscGFydGJv dW5kID0+ICdfbnVsbF8nIH0sCiB7IG9pZCA9PiAnMTI1NScsCiAgIHJlbG5hbWUgPT4gJ3Bn X3Byb2MnLCByZWxuYW1lc3BhY2UgPT4gJ1BHTlNQJywgcmVsdHlwZSA9PiAnODEnLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaAppbmRleCBiOGIyODllZmMwLi4y NDA0NmI5NzkwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaApA QCAtMTUsNiArMTUsOCBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAKK2V4 dGVybiBib29sIEV4ZWNDb21wdXRlU3RvcmVkR2VuZXJhdGVkKEVTdGF0ZSAqZXN0YXRlLCBU dXBsZVRhYmxlU2xvdCAqc2xvdCk7CisKIGV4dGVybiBNb2RpZnlUYWJsZVN0YXRlICpFeGVj SW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjRW5kTW9kaWZ5VGFibGUoTW9kaWZ5VGFibGVT dGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjUmVTY2FuTW9kaWZ5VGFibGUoTW9kaWZ5 VGFibGVTdGF0ZSAqbm9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGE5M2JiNjFi ZjUuLmEwNzlkMjM4M2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC00NDYsNiArNDQ2 LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVzdWx0UmVsSW5mbwogCS8qIGFycmF5IG9mIGNvbnN0 cmFpbnQtY2hlY2tpbmcgZXhwciBzdGF0ZXMgKi8KIAlFeHByU3RhdGUgKipyaV9Db25zdHJh aW50RXhwcnM7CiAKKwkvKiBhcnJheSBvZiBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMgZXhw ciBzdGF0ZXMgKi8KKwlFeHByU3RhdGUgKipyaV9HZW5lcmF0ZWRFeHByczsKKwogCS8qIGZv ciByZW1vdmluZyBqdW5rIGF0dHJpYnV0ZXMgZnJvbSB0dXBsZXMgKi8KIAlKdW5rRmlsdGVy ICpyaV9qdW5rRmlsdGVyOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMjc3ODJm ZWQ2Yy4uNTUxYTUwMmY3YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTMxLDYg KzEzMSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5CiAJYm9vbAkJaGFzTW9kaWZ5aW5nQ1RF OwkvKiBoYXMgSU5TRVJUL1VQREFURS9ERUxFVEUgaW4gV0lUSCAqLwogCWJvb2wJCWhhc0Zv clVwZGF0ZTsJLyogRk9SIFtLRVldIFVQREFURS9TSEFSRSB3YXMgc3BlY2lmaWVkICovCiAJ Ym9vbAkJaGFzUm93U2VjdXJpdHk7IC8qIHJld3JpdGVyIGhhcyBhcHBsaWVkIHNvbWUgUkxT IHBvbGljeSAqLworCWJvb2wJCWhhc0dlbmVyYXRlZFZpcnR1YWw7CS8qIHNvbWUgdGFibGUg aGFzIGEgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uICovCiAKIAlMaXN0CSAgICpjdGVMaXN0 OwkJLyogV0lUSCBsaXN0IChvZiBDb21tb25UYWJsZUV4cHIncykgKi8KIApAQCAtNjU1LDYg KzY1Niw3IEBAIHR5cGVkZWYgc3RydWN0IENvbHVtbkRlZgogCWNoYXIJCWlkZW50aXR5OwkJ LyogYXR0aWRlbnRpdHkgc2V0dGluZyAqLwogCVJhbmdlVmFyICAgKmlkZW50aXR5U2VxdWVu Y2U7CS8qIHRvIHN0b3JlIGlkZW50aXR5IHNlcXVlbmNlIG5hbWUgZm9yCiAJCQkJCQkJCQkg KiBBTFRFUiBUQUJMRSAuLi4gQUREIENPTFVNTiAqLworCWNoYXIJCWdlbmVyYXRlZDsJCS8q IGF0dGdlbmVyYXRlZCBzZXR0aW5nICovCiAJQ29sbGF0ZUNsYXVzZSAqY29sbENsYXVzZTsJ LyogdW50cmFuc2Zvcm1lZCBDT0xMQVRFIHNwZWMsIGlmIGFueSAqLwogCU9pZAkJCWNvbGxP aWQ7CQkvKiBjb2xsYXRpb24gT0lEIChJbnZhbGlkT2lkIGlmIG5vdCBzZXQpICovCiAJTGlz dAkgICAqY29uc3RyYWludHM7CS8qIG90aGVyIGNvbnN0cmFpbnRzIG9uIGNvbHVtbiAqLwpA QCAtNjc3LDEwICs2NzksMTEgQEAgdHlwZWRlZiBlbnVtIFRhYmxlTGlrZU9wdGlvbgogCUNS RUFURV9UQUJMRV9MSUtFX0NPTU1FTlRTID0gMSA8PCAwLAogCUNSRUFURV9UQUJMRV9MSUtF X0NPTlNUUkFJTlRTID0gMSA8PCAxLAogCUNSRUFURV9UQUJMRV9MSUtFX0RFRkFVTFRTID0g MSA8PCAyLAotCUNSRUFURV9UQUJMRV9MSUtFX0lERU5USVRZID0gMSA8PCAzLAotCUNSRUFU RV9UQUJMRV9MSUtFX0lOREVYRVMgPSAxIDw8IDQsCi0JQ1JFQVRFX1RBQkxFX0xJS0VfU1RB VElTVElDUyA9IDEgPDwgNSwKLQlDUkVBVEVfVEFCTEVfTElLRV9TVE9SQUdFID0gMSA8PCA2 LAorCUNSRUFURV9UQUJMRV9MSUtFX0dFTkVSQVRFRCA9IDEgPDwgMywKKwlDUkVBVEVfVEFC TEVfTElLRV9JREVOVElUWSA9IDEgPDwgNCwKKwlDUkVBVEVfVEFCTEVfTElLRV9JTkRFWEVT ID0gMSA8PCA1LAorCUNSRUFURV9UQUJMRV9MSUtFX1NUQVRJU1RJQ1MgPSAxIDw8IDYsCisJ Q1JFQVRFX1RBQkxFX0xJS0VfU1RPUkFHRSA9IDEgPDwgNywKIAlDUkVBVEVfVEFCTEVfTElL RV9BTEwgPSBQR19JTlQzMl9NQVgKIH0gVGFibGVMaWtlT3B0aW9uOwogCkBAIC05MzMsNiAr OTM2LDE1IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNtZAogICoJICB0aGVtIGluIHRo ZXNlIGZpZWxkcy4gIEEgd2hvbGUtcm93IFZhciByZWZlcmVuY2UgaXMgcmVwcmVzZW50ZWQg YnkKICAqCSAgc2V0dGluZyB0aGUgYml0IGZvciBJbnZhbGlkQXR0ck51bWJlci4KICAqCisg KgkgIHVwZGF0ZWRDb2xzIGlzIGFsc28gdXNlZCBpbiBzb21lIG90aGVyIHBsYWNlcywgZm9y IGV4YW1wbGUsIHRvIGRldGVybWluZQorICoJICB3aGljaCB0cmlnZ2VycyB0byBmaXJlIGFu ZCBpbiBGRFdzIHRvIGtub3cgd2hpY2ggY2hhbmdlZCBjb2x1bW5zIHRoZXkKKyAqCSAgbmVl ZCB0byBzaGlwIG9mZi4gIEdlbmVyYXRlZCBjb2x1bW5zIHRoYXQgYXJlIGNhdXNlZCB0byBi ZSB1cGRhdGVkIGJ5IGFuCisgKgkgIHVwZGF0ZSB0byBhIGJhc2UgY29sdW1uIGFyZSBjb2xs ZWN0ZWQgaW4gZXh0cmFVcGRhdGVkQ29scy4gIFRoaXMgaXMgbm90CisgKgkgIGNvbnNpZGVy ZWQgZm9yIHBlcm1pc3Npb24gY2hlY2tpbmcsIGJ1dCBpdCBpcyB1c2VmdWwgaW4gdGhvc2Ug cGxhY2VzCisgKgkgIHRoYXQgd2FudCB0byBrbm93IHRoZSBmdWxsIHNldCBvZiBjb2x1bW5z IGJlaW5nIHVwZGF0ZWQgYXMgb3Bwb3NlZCB0bworICoJICBvbmx5IHRoZSBvbmVzIHRoZSB1 c2VyIGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIHRoZSBxdWVyeS4gIChUaGVyZSBpcworICoJ ICBjdXJyZW50bHkgbm8gbmVlZCBmb3IgYW4gZXh0cmFJbnNlcnRlZENvbHMsIGJ1dCBpdCBj b3VsZCBleGlzdC4pCisgKgogICoJICBzZWN1cml0eVF1YWxzIGlzIGEgbGlzdCBvZiBzZWN1 cml0eSBiYXJyaWVyIHF1YWxzIChib29sZWFuIGV4cHJlc3Npb25zKSwKICAqCSAgdG8gYmUg dGVzdGVkIGluIHRoZSBsaXN0ZWQgb3JkZXIgYmVmb3JlIHJldHVybmluZyBhIHJvdyBmcm9t IHRoZQogICoJICByZWxhdGlvbi4gIEl0IGlzIGFsd2F5cyBOSUwgaW4gcGFyc2VyIG91dHB1 dC4gIEVudHJpZXMgYXJlIGFkZGVkIGJ5IHRoZQpAQCAtMTA4NCw2ICsxMDk2LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUmFuZ2VUYmxFbnRyeQogCUJpdG1hcHNldCAgKnNlbGVjdGVkQ29sczsJ LyogY29sdW1ucyBuZWVkaW5nIFNFTEVDVCBwZXJtaXNzaW9uICovCiAJQml0bWFwc2V0ICAq aW5zZXJ0ZWRDb2xzOwkvKiBjb2x1bW5zIG5lZWRpbmcgSU5TRVJUIHBlcm1pc3Npb24gKi8K IAlCaXRtYXBzZXQgICp1cGRhdGVkQ29sczsJLyogY29sdW1ucyBuZWVkaW5nIFVQREFURSBw ZXJtaXNzaW9uICovCisJQml0bWFwc2V0ICAqZXh0cmFVcGRhdGVkQ29sczsJLyogZ2VuZXJh dGVkIGNvbHVtbnMgYmVpbmcgdXBkYXRlZCAqLwogCUxpc3QJICAgKnNlY3VyaXR5UXVhbHM7 CS8qIHNlY3VyaXR5IGJhcnJpZXIgcXVhbHMgdG8gYXBwbHksIGlmIGFueSAqLwogfSBSYW5n ZVRibEVudHJ5OwogCkBAIC0yMDczLDYgKzIwODYsNyBAQCB0eXBlZGVmIGVudW0gQ29uc3Ry VHlwZQkJCS8qIHR5cGVzIG9mIGNvbnN0cmFpbnRzICovCiAJQ09OU1RSX05PVE5VTEwsCiAJ Q09OU1RSX0RFRkFVTFQsCiAJQ09OU1RSX0lERU5USVRZLAorCUNPTlNUUl9HRU5FUkFURUQs CiAJQ09OU1RSX0NIRUNLLAogCUNPTlNUUl9QUklNQVJZLAogCUNPTlNUUl9VTklRVUUsCkBA IC0yMTExLDcgKzIxMjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBDb25zdHJhaW50CiAJYm9vbAkJ aXNfbm9faW5oZXJpdDsJLyogaXMgY29uc3RyYWludCBub24taW5oZXJpdGFibGU/ICovCiAJ Tm9kZQkgICAqcmF3X2V4cHI7CQkvKiBleHByLCBhcyB1bnRyYW5zZm9ybWVkIHBhcnNlIHRy ZWUgKi8KIAljaGFyCSAgICpjb29rZWRfZXhwcjsJLyogZXhwciwgYXMgbm9kZVRvU3RyaW5n IHJlcHJlc2VudGF0aW9uICovCi0JY2hhcgkJZ2VuZXJhdGVkX3doZW47CisJY2hhcgkJZ2Vu ZXJhdGVkX3doZW47CS8qIEFMV0FZUyBvciBCWSBERUZBVUxUICovCisJY2hhcgkJZ2VuZXJh dGVkX2tpbmQ7IC8qIFNUT1JFRCBvciBWSVJUVUFMICovCiAKIAkvKiBGaWVsZHMgdXNlZCBm b3IgdW5pcXVlIGNvbnN0cmFpbnRzIChVTklRVUUgYW5kIFBSSU1BUlkgS0VZKTogKi8KIAlM aXN0CSAgICprZXlzOwkJCS8qIFN0cmluZyBub2RlcyBuYW1pbmcgcmVmZXJlbmNlZCBrZXkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFuY2F0LmggYi9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGxhbmNhdC5oCmluZGV4IGExYjIzMjUxYTEuLjVmMWJhM2Q5Njkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFuY2F0LmgKKysrIGIvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3BsYW5jYXQuaApAQCAtNTcsNCArNTcsNiBAQCBleHRlcm4g U2VsZWN0aXZpdHkgam9pbl9zZWxlY3Rpdml0eShQbGFubmVySW5mbyAqcm9vdCwKIAogZXh0 ZXJuIGJvb2wgaGFzX3Jvd190cmlnZ2VycyhQbGFubmVySW5mbyAqcm9vdCwgSW5kZXggcnRp LCBDbWRUeXBlIGV2ZW50KTsKIAorZXh0ZXJuIGJvb2wgaGFzX3N0b3JlZF9nZW5lcmF0ZWRf Y29sdW1ucyhQbGFubmVySW5mbyAqcm9vdCwgSW5kZXggcnRpKTsKKwogI2VuZGlmCQkJCQkJ CS8qIFBMQU5DQVRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IGFkZWI4MzRjZTguLjUy MjA0N2UzNTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysg Yi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTM4Myw2ICszODMsNyBAQCBQR19L RVlXT1JEKCJzdGF0aXN0aWNzIiwgU1RBVElTVElDUywgVU5SRVNFUlZFRF9LRVlXT1JEKQog UEdfS0VZV09SRCgic3RkaW4iLCBTVERJTiwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZ V09SRCgic3Rkb3V0IiwgU1RET1VULCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JE KCJzdG9yYWdlIiwgU1RPUkFHRSwgVU5SRVNFUlZFRF9LRVlXT1JEKQorUEdfS0VZV09SRCgi c3RvcmVkIiwgU1RPUkVELCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJzdHJp Y3QiLCBTVFJJQ1RfUCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgic3RyaXAi LCBTVFJJUF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJzdWJzY3JpcHRp b24iLCBTVUJTQ1JJUFRJT04sIFVOUkVTRVJWRURfS0VZV09SRCkKQEAgLTQzOSw2ICs0NDAs NyBAQCBQR19LRVlXT1JEKCJ2ZXJib3NlIiwgVkVSQk9TRSwgVFlQRV9GVU5DX05BTUVfS0VZ V09SRCkKIFBHX0tFWVdPUkQoInZlcnNpb24iLCBWRVJTSU9OX1AsIFVOUkVTRVJWRURfS0VZ V09SRCkKIFBHX0tFWVdPUkQoInZpZXciLCBWSUVXLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQ R19LRVlXT1JEKCJ2aWV3cyIsIFZJRVdTLCBVTlJFU0VSVkVEX0tFWVdPUkQpCitQR19LRVlX T1JEKCJ2aXJ0dWFsIiwgVklSVFVBTCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09S RCgidm9sYXRpbGUiLCBWT0xBVElMRSwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09S RCgid2hlbiIsIFdIRU4sIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ3aGVyZSIs IFdIRVJFLCBSRVNFUlZFRF9LRVlXT1JEKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5k ZXggZjRlMWNkZDg1Yi4uNDZhYTUwNDBhYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5o CkBAIC02OSw3ICs2OSw4IEBAIHR5cGVkZWYgZW51bSBQYXJzZUV4cHJLaW5kCiAJRVhQUl9L SU5EX1RSSUdHRVJfV0hFTiwJCS8qIFdIRU4gY29uZGl0aW9uIGluIENSRUFURSBUUklHR0VS ICovCiAJRVhQUl9LSU5EX1BPTElDWSwJCQkvKiBVU0lORyBvciBXSVRIIENIRUNLIGV4cHIg aW4gcG9saWN5ICovCiAJRVhQUl9LSU5EX1BBUlRJVElPTl9FWFBSRVNTSU9OLCAvKiBQQVJU SVRJT04gQlkgZXhwcmVzc2lvbiAqLwotCUVYUFJfS0lORF9DQUxMX0FSR1VNRU5UCQkvKiBw cm9jZWR1cmUgYXJndW1lbnQgaW4gQ0FMTCAqLworCUVYUFJfS0lORF9DQUxMX0FSR1VNRU5U LAkvKiBwcm9jZWR1cmUgYXJndW1lbnQgaW4gQ0FMTCAqLworCUVYUFJfS0lORF9HRU5FUkFU RURfQ09MVU1OLAkvKiBnZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9yIGEgY29sdW1uICovCiB9 IFBhcnNlRXhwcktpbmQ7CiAKIApAQCAtMjAyLDYgKzIwMyw3IEBAIHN0cnVjdCBQYXJzZVN0 YXRlCiAJYm9vbAkJcF9oYXNUYXJnZXRTUkZzOwogCWJvb2wJCXBfaGFzU3ViTGlua3M7CiAJ Ym9vbAkJcF9oYXNNb2RpZnlpbmdDVEU7CisJYm9vbAkJcF9oYXNHZW5lcmF0ZWRWaXJ0dWFs OwogCiAJTm9kZQkgICAqcF9sYXN0X3NyZjsJCS8qIG1vc3QgcmVjZW50IHNldC1yZXR1cm5p bmcgZnVuYy9vcCBmb3VuZCAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93YWxyZWNlaXZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuaAppbmRleCBlMDRkNzI1ZmY1Li4zM2U4OWNhZTM2IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmgKQEAgLTIwOSw4ICsyMDksOCBAQCB0eXBlZGVmIHZvaWQg KCp3YWxyY3ZfZ2V0X3NlbmRlcmluZm9fZm4pIChXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJ CQkJCQkJCQkJICBjaGFyICoqc2VuZGVyX2hvc3QsCiAJCQkJCQkJCQkJICBpbnQgKnNlbmRl cl9wb3J0KTsKIHR5cGVkZWYgY2hhciAqKCp3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtX2ZuKSAo V2FsUmVjZWl2ZXJDb25uICpjb25uLAotCQkJCQkJCQkJCQlUaW1lTGluZUlEICpwcmltYXJ5 X3RsaSwKLQkJCQkJCQkJCQkJaW50ICpzZXJ2ZXJfdmVyc2lvbik7CisJCQkJCQkJCQkJCVRp bWVMaW5lSUQgKnByaW1hcnlfdGxpKTsKK3R5cGVkZWYgaW50ICgqd2FscmN2X3NlcnZlcl92 ZXJzaW9uX2ZuKSAoV2FsUmVjZWl2ZXJDb25uICpjb25uKTsKIHR5cGVkZWYgdm9pZCAoKndh bHJjdl9yZWFkdGltZWxpbmVoaXN0b3J5ZmlsZV9mbikgKFdhbFJlY2VpdmVyQ29ubiAqY29u biwKIAkJCQkJCQkJCQkJCSAgIFRpbWVMaW5lSUQgdGxpLAogCQkJCQkJCQkJCQkJICAgY2hh ciAqKmZpbGVuYW1lLApAQCAtMjQwLDYgKzI0MCw3IEBAIHR5cGVkZWYgc3RydWN0IFdhbFJl Y2VpdmVyRnVuY3Rpb25zVHlwZQogCXdhbHJjdl9nZXRfY29ubmluZm9fZm4gd2FscmN2X2dl dF9jb25uaW5mbzsKIAl3YWxyY3ZfZ2V0X3NlbmRlcmluZm9fZm4gd2FscmN2X2dldF9zZW5k ZXJpbmZvOwogCXdhbHJjdl9pZGVudGlmeV9zeXN0ZW1fZm4gd2FscmN2X2lkZW50aWZ5X3N5 c3RlbTsKKwl3YWxyY3Zfc2VydmVyX3ZlcnNpb25fZm4gd2FscmN2X3NlcnZlcl92ZXJzaW9u OwogCXdhbHJjdl9yZWFkdGltZWxpbmVoaXN0b3J5ZmlsZV9mbiB3YWxyY3ZfcmVhZHRpbWVs aW5laGlzdG9yeWZpbGU7CiAJd2FscmN2X3N0YXJ0c3RyZWFtaW5nX2ZuIHdhbHJjdl9zdGFy dHN0cmVhbWluZzsKIAl3YWxyY3ZfZW5kc3RyZWFtaW5nX2ZuIHdhbHJjdl9lbmRzdHJlYW1p bmc7CkBAIC0yNjAsOCArMjYxLDEwIEBAIGV4dGVybiBQR0RMTElNUE9SVCBXYWxSZWNlaXZl ckZ1bmN0aW9uc1R5cGUgKldhbFJlY2VpdmVyRnVuY3Rpb25zOwogCVdhbFJlY2VpdmVyRnVu Y3Rpb25zLT53YWxyY3ZfZ2V0X2Nvbm5pbmZvKGNvbm4pCiAjZGVmaW5lIHdhbHJjdl9nZXRf c2VuZGVyaW5mbyhjb25uLCBzZW5kZXJfaG9zdCwgc2VuZGVyX3BvcnQpIFwKIAlXYWxSZWNl aXZlckZ1bmN0aW9ucy0+d2FscmN2X2dldF9zZW5kZXJpbmZvKGNvbm4sIHNlbmRlcl9ob3N0 LCBzZW5kZXJfcG9ydCkKLSNkZWZpbmUgd2FscmN2X2lkZW50aWZ5X3N5c3RlbShjb25uLCBw cmltYXJ5X3RsaSwgc2VydmVyX3ZlcnNpb24pIFwKLQlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+ d2FscmN2X2lkZW50aWZ5X3N5c3RlbShjb25uLCBwcmltYXJ5X3RsaSwgc2VydmVyX3ZlcnNp b24pCisjZGVmaW5lIHdhbHJjdl9pZGVudGlmeV9zeXN0ZW0oY29ubiwgcHJpbWFyeV90bGkp IFwKKwlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X2lkZW50aWZ5X3N5c3RlbShjb25u LCBwcmltYXJ5X3RsaSkKKyNkZWZpbmUgd2FscmN2X3NlcnZlcl92ZXJzaW9uKGNvbm4pIFwK KwlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2X3NlcnZlcl92ZXJzaW9uKGNvbm4pCiAj ZGVmaW5lIHdhbHJjdl9yZWFkdGltZWxpbmVoaXN0b3J5ZmlsZShjb25uLCB0bGksIGZpbGVu YW1lLCBjb250ZW50LCBzaXplKSBcCiAJV2FsUmVjZWl2ZXJGdW5jdGlvbnMtPndhbHJjdl9y ZWFkdGltZWxpbmVoaXN0b3J5ZmlsZShjb25uLCB0bGksIGZpbGVuYW1lLCBjb250ZW50LCBz aXplKQogI2RlZmluZSB3YWxyY3Zfc3RhcnRzdHJlYW1pbmcoY29ubiwgb3B0aW9ucykgXApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIGIvc3Jj L2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oCmluZGV4IGRhZWFhMzczYWQuLjM3 NjM1MDRhMDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZUhhbmRs ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgKQEAgLTMy LDUgKzMyLDYgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKnZpZXdfcXVlcnlfaXNfYXV0b191cGRh dGFibGUoUXVlcnkgKnZpZXdxdWVyeSwKIGV4dGVybiBpbnQgcmVsYXRpb25faXNfdXBkYXRh YmxlKE9pZCByZWxvaWQsCiAJCQkJCSAgYm9vbCBpbmNsdWRlX3RyaWdnZXJzLAogCQkJCQkg IEJpdG1hcHNldCAqaW5jbHVkZV9jb2xzKTsKK2V4dGVybiBOb2RlICpleHBhbmRfZ2VuZXJh dGVkX2NvbHVtbnNfaW5fZXhwcihOb2RlICpub2RlLCBSZWxhdGlvbiByZWwpOwogCiAjZW5k aWYJCQkJCQkJLyogUkVXUklURUhBTkRMRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApp bmRleCBjZWVjODVkYjkyLi4wOThiNTk5ZWRlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApA QCAtODYsNiArODYsNyBAQCBleHRlcm4gT2lkIGdldF9vcGZhbWlseV9wcm9jKE9pZCBvcGZh bWlseSwgT2lkIGxlZnR0eXBlLCBPaWQgcmlnaHR0eXBlLAogCQkJCSAgaW50MTYgcHJvY251 bSk7CiBleHRlcm4gY2hhciAqZ2V0X2F0dG5hbWUoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0 dG51bSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBBdHRyTnVtYmVyIGdldF9hdHRudW0o T2lkIHJlbGlkLCBjb25zdCBjaGFyICphdHRuYW1lKTsKK2V4dGVybiBjaGFyIGdldF9hdHRn ZW5lcmF0ZWQoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSk7CiBleHRlcm4gT2lkCWdl dF9hdHR0eXBlKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pOwogZXh0ZXJuIHZvaWQg Z2V0X2F0dHR5cGV0eXBtb2Rjb2xsKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0sCiAJ CQkJCSAgT2lkICp0eXBpZCwgaW50MzIgKnR5cG1vZCwgT2lkICpjb2xsaWQpOwpkaWZmIC0t Z2l0IGEvc3JjL3BsL3BscGVybC9leHBlY3RlZC9wbHBlcmxfdHJpZ2dlci5vdXQgYi9zcmMv cGwvcGxwZXJsL2V4cGVjdGVkL3BscGVybF90cmlnZ2VyLm91dAppbmRleCAyODAxMWNkOWY2 Li5iNWZjNTFhODM1IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZXJsL2V4cGVjdGVkL3BscGVy bF90cmlnZ2VyLm91dAorKysgYi9zcmMvcGwvcGxwZXJsL2V4cGVjdGVkL3BscGVybF90cmln Z2VyLm91dApAQCAtNiw2ICs2LDExIEBAIENSRUFURSBUQUJMRSB0cmlnZ2VyX3Rlc3QgKAog ICAgICAgICB2IHZhcmNoYXIsCiAJCWZvbyByb3djb21wbmVzdAogKTsKK0NSRUFURSBUQUJM RSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkICgKKyAgICBpIGludCwKKyAgICBqIGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChpICogMikgVklSVFVBTCwKKyAgICBrIGludCBHRU5FUkFURUQg QUxXQVlTIEFTIChpICogMykgU1RPUkVECispOwogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJ T04gdHJpZ2dlcl9kYXRhKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscGVybCBBUyAk JAogCiAgICMgbWFrZSBzdXJlIGtleXMgYXJlIHNvcnRlZCBmb3IgY29uc2lzdGVudCByZXN1 bHRzIC0gcGVybCBubyBsb25nZXIKQEAgLTk4LDYgKzEwMyw3OSBAQCBOT1RJQ0U6ICAkX1RE LT57dGFibGVfbmFtZX0gPSAndHJpZ2dlcl90ZXN0JwogTk9USUNFOiAgJF9URC0+e3RhYmxl X3NjaGVtYX0gPSAncHVibGljJwogTk9USUNFOiAgJF9URC0+e3doZW59ID0gJ0JFRk9SRScK IERST1AgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnIG9uIHRyaWdnZXJfdGVzdDsK K0NSRUFURSBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlCitCRUZPUkUg SU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAor Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSgpOworQ1JFQVRF IFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19hZnRlcgorQUZURVIgSU5TRVJUIE9S IFVQREFURSBPUiBERUxFVEUgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAorRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSgpOworaW5zZXJ0IGludG8gdHJp Z2dlcl90ZXN0X2dlbmVyYXRlZCAoaSkgdmFsdWVzICgxKTsKK05PVElDRTogICRfVEQtPnth cmdjfSA9ICcwJworTk9USUNFOiAgJF9URC0+e2V2ZW50fSA9ICdJTlNFUlQnCitOT1RJQ0U6 ICAkX1RELT57bGV2ZWx9ID0gJ1JPVycKK05PVElDRTogICRfVEQtPntuYW1lfSA9ICdzaG93 X3RyaWdnZXJfZGF0YV90cmlnX2JlZm9yZScKK05PVElDRTogICRfVEQtPntuZXd9ID0geydp JyA9PiAnMSd9CitOT1RJQ0U6ICAkX1RELT57cmVsaWR9ID0gJ2JvZ3VzOjEyMzQ1JworTk9U SUNFOiAgJF9URC0+e3JlbG5hbWV9ID0gJ3RyaWdnZXJfdGVzdF9nZW5lcmF0ZWQnCitOT1RJ Q0U6ICAkX1RELT57dGFibGVfbmFtZX0gPSAndHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCcKK05P VElDRTogICRfVEQtPnt0YWJsZV9zY2hlbWF9ID0gJ3B1YmxpYycKK05PVElDRTogICRfVEQt Pnt3aGVufSA9ICdCRUZPUkUnCitOT1RJQ0U6ICAkX1RELT57YXJnY30gPSAnMCcKK05PVElD RTogICRfVEQtPntldmVudH0gPSAnSU5TRVJUJworTk9USUNFOiAgJF9URC0+e2xldmVsfSA9 ICdST1cnCitOT1RJQ0U6ICAkX1RELT57bmFtZX0gPSAnc2hvd190cmlnZ2VyX2RhdGFfdHJp Z19hZnRlcicKK05PVElDRTogICRfVEQtPntuZXd9ID0geydpJyA9PiAnMScsICdrJyA9PiAn Myd9CitOT1RJQ0U6ICAkX1RELT57cmVsaWR9ID0gJ2JvZ3VzOjEyMzQ1JworTk9USUNFOiAg JF9URC0+e3JlbG5hbWV9ID0gJ3RyaWdnZXJfdGVzdF9nZW5lcmF0ZWQnCitOT1RJQ0U6ICAk X1RELT57dGFibGVfbmFtZX0gPSAndHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCcKK05PVElDRTog ICRfVEQtPnt0YWJsZV9zY2hlbWF9ID0gJ3B1YmxpYycKK05PVElDRTogICRfVEQtPnt3aGVu fSA9ICdBRlRFUicKK3VwZGF0ZSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkIHNldCBpID0gMTEg d2hlcmUgaSA9IDE7CitOT1RJQ0U6ICAkX1RELT57YXJnY30gPSAnMCcKK05PVElDRTogICRf VEQtPntldmVudH0gPSAnVVBEQVRFJworTk9USUNFOiAgJF9URC0+e2xldmVsfSA9ICdST1cn CitOT1RJQ0U6ICAkX1RELT57bmFtZX0gPSAnc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19iZWZv cmUnCitOT1RJQ0U6ICAkX1RELT57bmV3fSA9IHsnaScgPT4gJzExJ30KK05PVElDRTogICRf VEQtPntvbGR9ID0geydpJyA9PiAnMScsICdrJyA9PiAnMyd9CitOT1RJQ0U6ICAkX1RELT57 cmVsaWR9ID0gJ2JvZ3VzOjEyMzQ1JworTk9USUNFOiAgJF9URC0+e3JlbG5hbWV9ID0gJ3Ry aWdnZXJfdGVzdF9nZW5lcmF0ZWQnCitOT1RJQ0U6ICAkX1RELT57dGFibGVfbmFtZX0gPSAn dHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCcKK05PVElDRTogICRfVEQtPnt0YWJsZV9zY2hlbWF9 ID0gJ3B1YmxpYycKK05PVElDRTogICRfVEQtPnt3aGVufSA9ICdCRUZPUkUnCitOT1RJQ0U6 ICAkX1RELT57YXJnY30gPSAnMCcKK05PVElDRTogICRfVEQtPntldmVudH0gPSAnVVBEQVRF JworTk9USUNFOiAgJF9URC0+e2xldmVsfSA9ICdST1cnCitOT1RJQ0U6ICAkX1RELT57bmFt ZX0gPSAnc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19hZnRlcicKK05PVElDRTogICRfVEQtPntu ZXd9ID0geydpJyA9PiAnMTEnLCAnaycgPT4gJzMzJ30KK05PVElDRTogICRfVEQtPntvbGR9 ID0geydpJyA9PiAnMScsICdrJyA9PiAnMyd9CitOT1RJQ0U6ICAkX1RELT57cmVsaWR9ID0g J2JvZ3VzOjEyMzQ1JworTk9USUNFOiAgJF9URC0+e3JlbG5hbWV9ID0gJ3RyaWdnZXJfdGVz dF9nZW5lcmF0ZWQnCitOT1RJQ0U6ICAkX1RELT57dGFibGVfbmFtZX0gPSAndHJpZ2dlcl90 ZXN0X2dlbmVyYXRlZCcKK05PVElDRTogICRfVEQtPnt0YWJsZV9zY2hlbWF9ID0gJ3B1Ymxp YycKK05PVElDRTogICRfVEQtPnt3aGVufSA9ICdBRlRFUicKK2RlbGV0ZSBmcm9tIHRyaWdn ZXJfdGVzdF9nZW5lcmF0ZWQ7CitOT1RJQ0U6ICAkX1RELT57YXJnY30gPSAnMCcKK05PVElD RTogICRfVEQtPntldmVudH0gPSAnREVMRVRFJworTk9USUNFOiAgJF9URC0+e2xldmVsfSA9 ICdST1cnCitOT1RJQ0U6ICAkX1RELT57bmFtZX0gPSAnc2hvd190cmlnZ2VyX2RhdGFfdHJp Z19iZWZvcmUnCitOT1RJQ0U6ICAkX1RELT57b2xkfSA9IHsnaScgPT4gJzExJywgJ2snID0+ ICczMyd9CitOT1RJQ0U6ICAkX1RELT57cmVsaWR9ID0gJ2JvZ3VzOjEyMzQ1JworTk9USUNF OiAgJF9URC0+e3JlbG5hbWV9ID0gJ3RyaWdnZXJfdGVzdF9nZW5lcmF0ZWQnCitOT1RJQ0U6 ICAkX1RELT57dGFibGVfbmFtZX0gPSAndHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCcKK05PVElD RTogICRfVEQtPnt0YWJsZV9zY2hlbWF9ID0gJ3B1YmxpYycKK05PVElDRTogICRfVEQtPnt3 aGVufSA9ICdCRUZPUkUnCitOT1RJQ0U6ICAkX1RELT57YXJnY30gPSAnMCcKK05PVElDRTog ICRfVEQtPntldmVudH0gPSAnREVMRVRFJworTk9USUNFOiAgJF9URC0+e2xldmVsfSA9ICdS T1cnCitOT1RJQ0U6ICAkX1RELT57bmFtZX0gPSAnc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19h ZnRlcicKK05PVElDRTogICRfVEQtPntvbGR9ID0geydpJyA9PiAnMTEnLCAnaycgPT4gJzMz J30KK05PVElDRTogICRfVEQtPntyZWxpZH0gPSAnYm9ndXM6MTIzNDUnCitOT1RJQ0U6ICAk X1RELT57cmVsbmFtZX0gPSAndHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCcKK05PVElDRTogICRf VEQtPnt0YWJsZV9uYW1lfSA9ICd0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkJworTk9USUNFOiAg JF9URC0+e3RhYmxlX3NjaGVtYX0gPSAncHVibGljJworTk9USUNFOiAgJF9URC0+e3doZW59 ID0gJ0FGVEVSJworRFJPUCBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3Jl IE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CitEUk9QIFRSSUdHRVIgc2hvd190cmlnZ2Vy X2RhdGFfdHJpZ19hZnRlciBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOwogaW5zZXJ0IGlu dG8gdHJpZ2dlcl90ZXN0IHZhbHVlcygxLCdpbnNlcnQnLCAnKCIoMSkiKScpOwogQ1JFQVRF IFZJRVcgdHJpZ2dlcl90ZXN0X3ZpZXcgQVMgU0VMRUNUICogRlJPTSB0cmlnZ2VyX3Rlc3Q7 CiBDUkVBVEUgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnCkBAIC0yOTUsMyArMzcz LDIxIEBAIE5PVElDRTogIHBlcmxzbml0Y2g6IGRkbF9jb21tYW5kX3N0YXJ0IERST1AgVEFC TEUKIE5PVElDRTogIHBlcmxzbml0Y2g6IGRkbF9jb21tYW5kX2VuZCBEUk9QIFRBQkxFIAog ZHJvcCBldmVudCB0cmlnZ2VyIHBlcmxfYV9zbml0Y2g7CiBkcm9wIGV2ZW50IHRyaWdnZXIg cGVybF9iX3NuaXRjaDsKKy0tIGRlYWxpbmcgd2l0aCBnZW5lcmF0ZWQgY29sdW1ucworQ1JF QVRFIEZVTkNUSU9OIGdlbmVyYXRlZF90ZXN0X2Z1bmMxKCkgUkVUVVJOUyB0cmlnZ2VyCitM QU5HVUFHRSBwbHBlcmwKK0FTICQkCiskX1RELT57bmV3fXtqfSA9IDU7ICAjIG5vdCBhbGxv d2VkCityZXR1cm4gJ01PRElGWSc7CiskJDsKK0NSRUFURSBUUklHR0VSIGdlbmVyYXRlZF90 ZXN0X3RyaWdnZXIxIEJFRk9SRSBJTlNFUlQgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAor Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGdlbmVyYXRlZF90ZXN0X2Z1bmMxKCk7 CitUUlVOQ0FURSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworSU5TRVJUIElOVE8gdHJpZ2dl cl90ZXN0X2dlbmVyYXRlZCAoaSkgVkFMVUVTICgxKTsKK0VSUk9SOiAgY2Fubm90IHNldCBn ZW5lcmF0ZWQgY29sdW1uICJqIgorQ09OVEVYVDogIFBML1BlcmwgZnVuY3Rpb24gImdlbmVy YXRlZF90ZXN0X2Z1bmMxIgorU0VMRUNUICogRlJPTSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVk OworIGkgfCBqIHwgayAKKy0tLSstLS0rLS0tCisoMCByb3dzKQorCmRpZmYgLS1naXQgYS9z cmMvcGwvcGxwZXJsL3BscGVybC5jIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwppbmRleCBm ZTU0YjIwOTAzLi5lYWI3NjNlZWU4IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZXJsL3BscGVy bC5jCisrKyBiL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKQEAgLTI2Niw3ICsyNjYsNyBAQCBz dGF0aWMgcGxwZXJsX3Byb2NfZGVzYyAqY29tcGlsZV9wbHBlcmxfZnVuY3Rpb24oT2lkIGZu X29pZCwKIAkJCQkJCWJvb2wgaXNfdHJpZ2dlciwKIAkJCQkJCWJvb2wgaXNfZXZlbnRfdHJp Z2dlcik7CiAKLXN0YXRpYyBTViAgKnBscGVybF9oYXNoX2Zyb21fdHVwbGUoSGVhcFR1cGxl IHR1cGxlLCBUdXBsZURlc2MgdHVwZGVzYyk7CitzdGF0aWMgU1YgICpwbHBlcmxfaGFzaF9m cm9tX3R1cGxlKEhlYXBUdXBsZSB0dXBsZSwgVHVwbGVEZXNjIHR1cGRlc2MsIGJvb2wgaW5j bHVkZV9nZW5lcmF0ZWQpOwogc3RhdGljIFNWICAqcGxwZXJsX2hhc2hfZnJvbV9kYXR1bShE YXR1bSBhdHRyKTsKIHN0YXRpYyBTViAgKnBscGVybF9yZWZfZnJvbV9wZ19hcnJheShEYXR1 bSBhcmcsIE9pZCB0eXBpZCk7CiBzdGF0aWMgU1YgICpzcGxpdF9hcnJheShwbHBlcmxfYXJy YXlfaW5mbyAqaW5mbywgaW50IGZpcnN0LCBpbnQgbGFzdCwgaW50IG5lc3QpOwpAQCAtMTY0 NCwxMyArMTY0NCwxOSBAQCBwbHBlcmxfdHJpZ2dlcl9idWlsZF9hcmdzKEZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvKQogCWh2X3N0b3JlX3N0cmluZyhodiwgIm5hbWUiLCBjc3RyMnN2KHRk YXRhLT50Z190cmlnZ2VyLT50Z25hbWUpKTsKIAlodl9zdG9yZV9zdHJpbmcoaHYsICJyZWxp ZCIsIGNzdHIyc3YocmVsaWQpKTsKIAorCS8qCisJICogTm90ZTogSW4gQkVGT1JFIHRyaWdn ZXIsIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1ucyBhcmUgbm90IGNvbXB1dGVkIHlldCwKKwkg KiBzbyBkb24ndCBtYWtlIHRoZW0gYWNjZXNzaWJsZSBpbiBORVcgcm93LgorCSAqLworCiAJ aWYgKFRSSUdHRVJfRklSRURfQllfSU5TRVJUKHRkYXRhLT50Z19ldmVudCkpCiAJewogCQll dmVudCA9ICJJTlNFUlQiOwogCQlpZiAoVFJJR0dFUl9GSVJFRF9GT1JfUk9XKHRkYXRhLT50 Z19ldmVudCkpCiAJCQlodl9zdG9yZV9zdHJpbmcoaHYsICJuZXciLAogCQkJCQkJCXBscGVy bF9oYXNoX2Zyb21fdHVwbGUodGRhdGEtPnRnX3RyaWd0dXBsZSwKLQkJCQkJCQkJCQkJCSAg IHR1cGRlc2MpKTsKKwkJCQkJCQkJCQkJCSAgIHR1cGRlc2MsCisJCQkJCQkJCQkJCQkgICAh VFJJR0dFUl9GSVJFRF9CRUZPUkUodGRhdGEtPnRnX2V2ZW50KSkpOwogCX0KIAllbHNlIGlm IChUUklHR0VSX0ZJUkVEX0JZX0RFTEVURSh0ZGF0YS0+dGdfZXZlbnQpKQogCXsKQEAgLTE2 NTgsNyArMTY2NCw4IEBAIHBscGVybF90cmlnZ2VyX2J1aWxkX2FyZ3MoRnVuY3Rpb25DYWxs SW5mbyBmY2luZm8pCiAJCWlmIChUUklHR0VSX0ZJUkVEX0ZPUl9ST1codGRhdGEtPnRnX2V2 ZW50KSkKIAkJCWh2X3N0b3JlX3N0cmluZyhodiwgIm9sZCIsCiAJCQkJCQkJcGxwZXJsX2hh c2hfZnJvbV90dXBsZSh0ZGF0YS0+dGdfdHJpZ3R1cGxlLAotCQkJCQkJCQkJCQkJICAgdHVw ZGVzYykpOworCQkJCQkJCQkJCQkJICAgdHVwZGVzYywKKwkJCQkJCQkJCQkJCSAgIHRydWUp KTsKIAl9CiAJZWxzZSBpZiAoVFJJR0dFUl9GSVJFRF9CWV9VUERBVEUodGRhdGEtPnRnX2V2 ZW50KSkKIAl7CkBAIC0xNjY3LDEwICsxNjc0LDEyIEBAIHBscGVybF90cmlnZ2VyX2J1aWxk X2FyZ3MoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJCXsKIAkJCWh2X3N0b3JlX3N0cmlu ZyhodiwgIm9sZCIsCiAJCQkJCQkJcGxwZXJsX2hhc2hfZnJvbV90dXBsZSh0ZGF0YS0+dGdf dHJpZ3R1cGxlLAotCQkJCQkJCQkJCQkJICAgdHVwZGVzYykpOworCQkJCQkJCQkJCQkJICAg dHVwZGVzYywKKwkJCQkJCQkJCQkJCSAgIHRydWUpKTsKIAkJCWh2X3N0b3JlX3N0cmluZyho diwgIm5ldyIsCiAJCQkJCQkJcGxwZXJsX2hhc2hfZnJvbV90dXBsZSh0ZGF0YS0+dGdfbmV3 dHVwbGUsCi0JCQkJCQkJCQkJCQkgICB0dXBkZXNjKSk7CisJCQkJCQkJCQkJCQkgICB0dXBk ZXNjLAorCQkJCQkJCQkJCQkJICAgIVRSSUdHRVJfRklSRURfQkVGT1JFKHRkYXRhLT50Z19l dmVudCkpKTsKIAkJfQogCX0KIAllbHNlIGlmIChUUklHR0VSX0ZJUkVEX0JZX1RSVU5DQVRF KHRkYXRhLT50Z19ldmVudCkpCkBAIC0xNzkxLDYgKzE4MDAsMTEgQEAgcGxwZXJsX21vZGlm eV90dXBsZShIViAqaHZURCwgVHJpZ2dlckRhdGEgKnRkYXRhLCBIZWFwVHVwbGUgb3R1cCkK IAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkg ZXJybXNnKCJjYW5ub3Qgc2V0IHN5c3RlbSBhdHRyaWJ1dGUgXCIlc1wiIiwKIAkJCQkJCQlr ZXkpKSk7CisJCWlmIChhdHRyLT5hdHRnZW5lcmF0ZWQpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0VfUl9JX0VfVFJJR0dFUl9QUk9UT0NPTF9WSU9MQVRF RCksCisJCQkJCSBlcnJtc2coImNhbm5vdCBzZXQgZ2VuZXJhdGVkIGNvbHVtbiBcIiVzXCIi LAorCQkJCQkJCWtleSkpKTsKIAogCQltb2R2YWx1ZXNbYXR0biAtIDFdID0gcGxwZXJsX3N2 X3RvX2RhdHVtKHZhbCwKIAkJCQkJCQkJCQkJCSBhdHRyLT5hdHR0eXBpZCwKQEAgLTMwMTIs NyArMzAyNiw3IEBAIHBscGVybF9oYXNoX2Zyb21fZGF0dW0oRGF0dW0gYXR0cikKIAl0bXB0 dXAudF9sZW4gPSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bUxlbmd0aCh0ZCk7CiAJdG1wdHVw LnRfZGF0YSA9IHRkOwogCi0Jc3YgPSBwbHBlcmxfaGFzaF9mcm9tX3R1cGxlKCZ0bXB0dXAs IHR1cGRlc2MpOworCXN2ID0gcGxwZXJsX2hhc2hfZnJvbV90dXBsZSgmdG1wdHVwLCB0dXBk ZXNjLCB0cnVlKTsKIAlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MpOwogCiAJcmV0dXJuIHN2 OwpAQCAtMzAyMCw3ICszMDM0LDcgQEAgcGxwZXJsX2hhc2hfZnJvbV9kYXR1bShEYXR1bSBh dHRyKQogCiAvKiBCdWlsZCBhIGhhc2ggZnJvbSBhbGwgYXR0cmlidXRlcyBvZiBhIGdpdmVu IHR1cGxlLiAqLwogc3RhdGljIFNWICAqCi1wbHBlcmxfaGFzaF9mcm9tX3R1cGxlKEhlYXBU dXBsZSB0dXBsZSwgVHVwbGVEZXNjIHR1cGRlc2MpCitwbHBlcmxfaGFzaF9mcm9tX3R1cGxl KEhlYXBUdXBsZSB0dXBsZSwgVHVwbGVEZXNjIHR1cGRlc2MsIGJvb2wgaW5jbHVkZV9nZW5l cmF0ZWQpCiB7CiAJZFRIWDsKIAlIVgkJICAgKmh2OwpAQCAtMzA0NCw2ICszMDU4LDE2IEBA IHBscGVybF9oYXNoX2Zyb21fdHVwbGUoSGVhcFR1cGxlIHR1cGxlLCBUdXBsZURlc2MgdHVw ZGVzYykKIAkJaWYgKGF0dC0+YXR0aXNkcm9wcGVkKQogCQkJY29udGludWU7CiAKKwkJaWYg KGF0dC0+YXR0Z2VuZXJhdGVkKQorCQl7CisJCQkvKiBkb24ndCBpbmNsdWRlIHVubGVzcyBy ZXF1ZXN0ZWQgKi8KKwkJCWlmICghaW5jbHVkZV9nZW5lcmF0ZWQpCisJCQkJY29udGludWU7 CisJCQkvKiBuZXZlciBpbmNsdWRlIHZpcnR1YWwgY29sdW1ucyAqLworCQkJaWYgKGF0dC0+ YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJCQljb250 aW51ZTsKKwkJfQorCiAJCWF0dG5hbWUgPSBOYW1lU3RyKGF0dC0+YXR0bmFtZSk7CiAJCWF0 dHIgPSBoZWFwX2dldGF0dHIodHVwbGUsIGkgKyAxLCB0dXBkZXNjLCAmaXNudWxsKTsKIApA QCAtMzE5OCw3ICszMjIyLDcgQEAgcGxwZXJsX3NwaV9leGVjdXRlX2ZldGNoX3Jlc3VsdChT UElUdXBsZVRhYmxlICp0dXB0YWJsZSwgdWludDY0IHByb2Nlc3NlZCwKIAkJYXZfZXh0ZW5k KHJvd3MsIHByb2Nlc3NlZCk7CiAJCWZvciAoaSA9IDA7IGkgPCBwcm9jZXNzZWQ7IGkrKykK IAkJewotCQkJcm93ID0gcGxwZXJsX2hhc2hfZnJvbV90dXBsZSh0dXB0YWJsZS0+dmFsc1tp XSwgdHVwdGFibGUtPnR1cGRlc2MpOworCQkJcm93ID0gcGxwZXJsX2hhc2hfZnJvbV90dXBs ZSh0dXB0YWJsZS0+dmFsc1tpXSwgdHVwdGFibGUtPnR1cGRlc2MsIHRydWUpOwogCQkJYXZf cHVzaChyb3dzLCByb3cpOwogCQl9CiAJCWh2X3N0b3JlX3N0cmluZyhyZXN1bHQsICJyb3dz IiwKQEAgLTM0ODQsNyArMzUwOCw4IEBAIHBscGVybF9zcGlfZmV0Y2hyb3coY2hhciAqY3Vy c29yKQogCQkJZWxzZQogCQkJewogCQkJCXJvdyA9IHBscGVybF9oYXNoX2Zyb21fdHVwbGUo U1BJX3R1cHRhYmxlLT52YWxzWzBdLAotCQkJCQkJCQkJCQkgU1BJX3R1cHRhYmxlLT50dXBk ZXNjKTsKKwkJCQkJCQkJCQkJIFNQSV90dXB0YWJsZS0+dHVwZGVzYywKKwkJCQkJCQkJCQkJ IHRydWUpOwogCQkJfQogCQkJU1BJX2ZyZWV0dXB0YWJsZShTUElfdHVwdGFibGUpOwogCQl9 CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZXJsL3NxbC9wbHBlcmxfdHJpZ2dlci5zcWwgYi9z cmMvcGwvcGxwZXJsL3NxbC9wbHBlcmxfdHJpZ2dlci5zcWwKaW5kZXggNjI0MTkzYjlkMC4u N2ZhNGEwNmZmNSAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGVybC9zcWwvcGxwZXJsX3RyaWdn ZXIuc3FsCisrKyBiL3NyYy9wbC9wbHBlcmwvc3FsL3BscGVybF90cmlnZ2VyLnNxbApAQCAt OCw2ICs4LDEyIEBAIENSRUFURSBUQUJMRSB0cmlnZ2VyX3Rlc3QgKAogCQlmb28gcm93Y29t cG5lc3QKICk7CiAKK0NSRUFURSBUQUJMRSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkICgKKyAg ICBpIGludCwKKyAgICBqIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICogMikgVklSVFVB TCwKKyAgICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICogMykgU1RPUkVECispOwor CiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0cmlnZ2VyX2RhdGEoKSBSRVRVUk5TIHRy aWdnZXIgTEFOR1VBR0UgcGxwZXJsIEFTICQkCiAKICAgIyBtYWtlIHN1cmUga2V5cyBhcmUg c29ydGVkIGZvciBjb25zaXN0ZW50IHJlc3VsdHMgLSBwZXJsIG5vIGxvbmdlcgpAQCAtNzAs NiArNzYsMjEgQEAgQ1JFQVRFIFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZwogCiBE Uk9QIFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZyBvbiB0cmlnZ2VyX3Rlc3Q7CiAK K0NSRUFURSBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlCitCRUZPUkUg SU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAor Rk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSgpOworCitDUkVB VEUgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2FmdGVyCitBRlRFUiBJTlNFUlQg T1IgVVBEQVRFIE9SIERFTEVURSBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitGT1IgRUFD SCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9kYXRhKCk7CisKK2luc2VydCBpbnRv IHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQgKGkpIHZhbHVlcyAoMSk7Cit1cGRhdGUgdHJpZ2dl cl90ZXN0X2dlbmVyYXRlZCBzZXQgaSA9IDExIHdoZXJlIGkgPSAxOworZGVsZXRlIGZyb20g dHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKKworRFJPUCBUUklHR0VSIHNob3dfdHJpZ2dlcl9k YXRhX3RyaWdfYmVmb3JlIE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CitEUk9QIFRSSUdH RVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19hZnRlciBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJh dGVkOworCiBpbnNlcnQgaW50byB0cmlnZ2VyX3Rlc3QgdmFsdWVzKDEsJ2luc2VydCcsICco IigxKSIpJyk7CiBDUkVBVEUgVklFVyB0cmlnZ2VyX3Rlc3RfdmlldyBBUyBTRUxFQ1QgKiBG Uk9NIHRyaWdnZXJfdGVzdDsKIApAQCAtMjIxLDMgKzI0MiwxOSBAQCBDUkVBVEUgVFJJR0dF UiBhX3QgQUZURVIgVVBEQVRFIE9OIHRyYW5zaXRpb25fdGFibGVfdGVzdAogCiBkcm9wIGV2 ZW50IHRyaWdnZXIgcGVybF9hX3NuaXRjaDsKIGRyb3AgZXZlbnQgdHJpZ2dlciBwZXJsX2Jf c25pdGNoOworCistLSBkZWFsaW5nIHdpdGggZ2VuZXJhdGVkIGNvbHVtbnMKKworQ1JFQVRF IEZVTkNUSU9OIGdlbmVyYXRlZF90ZXN0X2Z1bmMxKCkgUkVUVVJOUyB0cmlnZ2VyCitMQU5H VUFHRSBwbHBlcmwKK0FTICQkCiskX1RELT57bmV3fXtqfSA9IDU7ICAjIG5vdCBhbGxvd2Vk CityZXR1cm4gJ01PRElGWSc7CiskJDsKKworQ1JFQVRFIFRSSUdHRVIgZ2VuZXJhdGVkX3Rl c3RfdHJpZ2dlcjEgQkVGT1JFIElOU0VSVCBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitG T1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZ2VuZXJhdGVkX3Rlc3RfZnVuYzEoKTsK KworVFJVTkNBVEUgdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKK0lOU0VSVCBJTlRPIHRyaWdn ZXJfdGVzdF9nZW5lcmF0ZWQgKGkpIFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRyaWdn ZXJfdGVzdF9nZW5lcmF0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxf ZXhlYy5jIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwppbmRleCA1YzZkYmU0YzVm Li5lZmY1NzU0NzQzIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5j CisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKQEAgLTkyNSw2ICs5MjUsMjYg QEAgcGxwZ3NxbF9leGVjX3RyaWdnZXIoUExwZ1NRTF9mdW5jdGlvbiAqZnVuYywKIAkJCQkJ CQkJICBmYWxzZSwgZmFsc2UpOwogCQlleHBhbmRlZF9yZWNvcmRfc2V0X3R1cGxlKHJlY19v bGQtPmVyaCwgdHJpZ2RhdGEtPnRnX3RyaWd0dXBsZSwKIAkJCQkJCQkJICBmYWxzZSwgZmFs c2UpOworCisJCS8qCisJCSAqIEluIEJFRk9SRSB0cmlnZ2VyLCBzdG9yZWQgZ2VuZXJhdGVk IGNvbHVtbnMgYXJlIG5vdCBjb21wdXRlZCB5ZXQsCisJCSAqIHNvIG1ha2UgdGhlbSBudWxs IGluIHRoZSBORVcgcm93LiAgKE9ubHkgbmVlZGVkIGluIFVQREFURSBicmFuY2g7CisJCSAq IGluIHRoZSBJTlNFUlQgY2FzZSwgdGhleSBhcmUgYWxyZWFkeSBudWxsLCBidXQgaW4gVVBE QVRFLCB0aGUgZmllbGQKKwkJICogc3RpbGwgY29udGFpbnMgdGhlIG9sZCB2YWx1ZS4pICBB bHRlcm5hdGl2ZWx5LCB3ZSBjb3VsZCBjb25zdHJ1Y3QgYQorCQkgKiB3aG9sZSBuZXcgcm93 IHN0cnVjdHVyZSB3aXRob3V0IHRoZSBnZW5lcmF0ZWQgY29sdW1ucywgYnV0IHRoaXMgd2F5 CisJCSAqIHNlZW1zIG1vcmUgZWZmaWNpZW50IGFuZCBwb3RlbnRpYWxseSBsZXNzIGNvbmZ1 c2luZy4KKwkJICovCisJCWlmICh0dXBkZXNjLT5jb25zdHIgJiYgdHVwZGVzYy0+Y29uc3Ry LT5oYXNfZ2VuZXJhdGVkX3N0b3JlZCAmJgorCQkJVFJJR0dFUl9GSVJFRF9CRUZPUkUodHJp Z2RhdGEtPnRnX2V2ZW50KSkKKwkJeworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB0dXBkZXNj LT5uYXR0czsgaSsrKQorCQkJCWlmIChUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpLT5hdHRn ZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQpCisJCQkJCWV4cGFuZGVk X3JlY29yZF9zZXRfZmllbGRfaW50ZXJuYWwocmVjX25ldy0+ZXJoLAorCQkJCQkJCQkJCQkJ CSAgIGkgKyAxLAorCQkJCQkJCQkJCQkJCSAgIChEYXR1bSkgMCwKKwkJCQkJCQkJCQkJCQkg ICB0cnVlLCAvKmlzbnVsbCovCisJCQkJCQkJCQkJCQkJICAgZmFsc2UsIGZhbHNlKTsKKwkJ fQogCX0KIAllbHNlIGlmIChUUklHR0VSX0ZJUkVEX0JZX0RFTEVURSh0cmlnZGF0YS0+dGdf ZXZlbnQpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9leHBlY3RlZC9wbHB5 dGhvbl90cmlnZ2VyLm91dCBiL3NyYy9wbC9wbHB5dGhvbi9leHBlY3RlZC9wbHB5dGhvbl90 cmlnZ2VyLm91dAppbmRleCBkN2FiOGFjNmI4Li4zZTRmNTEwZDU3IDEwMDY0NAotLS0gYS9z cmMvcGwvcGxweXRob24vZXhwZWN0ZWQvcGxweXRob25fdHJpZ2dlci5vdXQKKysrIGIvc3Jj L3BsL3BscHl0aG9uL2V4cGVjdGVkL3BscHl0aG9uX3RyaWdnZXIub3V0CkBAIC02Nyw2ICs2 NywxMSBAQCBTRUxFQ1QgKiBGUk9NIHVzZXJzOwogLS0gZHVtcCB0cmlnZ2VyIGRhdGEKIENS RUFURSBUQUJMRSB0cmlnZ2VyX3Rlc3QKIAkoaSBpbnQsIHYgdGV4dCApOworQ1JFQVRFIFRB QkxFIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQgKAorCWkgaW50LAorICAgICAgICBqIGludCBH RU5FUkFURUQgQUxXQVlTIEFTIChpICogMikgVklSVFVBTCwKKyAgICAgICAgayBpbnQgR0VO RVJBVEVEIEFMV0FZUyBBUyAoaSAqIDMpIFNUT1JFRAorKTsKIENSRUFURSBGVU5DVElPTiB0 cmlnZ2VyX2RhdGEoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxweXRob251IEFTICQk CiAKIGlmICdyZWxpZCcgaW4gVEQ6CkBAIC0yMDMsNiArMjA4LDc3IEBAIE5PVElDRTogIFRE W3doZW5dID0+IEJFRk9SRQogRFJPUCBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdf c3RtdCBvbiB0cmlnZ2VyX3Rlc3Q7CiBEUk9QIFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFf dHJpZ19iZWZvcmUgb24gdHJpZ2dlcl90ZXN0OwogRFJPUCBUUklHR0VSIHNob3dfdHJpZ2dl cl9kYXRhX3RyaWdfYWZ0ZXIgb24gdHJpZ2dlcl90ZXN0OworQ1JFQVRFIFRSSUdHRVIgc2hv d190cmlnZ2VyX2RhdGFfdHJpZ19iZWZvcmUKK0JFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9S IERFTEVURSBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitGT1IgRUFDSCBST1cgRVhFQ1VU RSBQUk9DRURVUkUgdHJpZ2dlcl9kYXRhKCk7CitDUkVBVEUgVFJJR0dFUiBzaG93X3RyaWdn ZXJfZGF0YV90cmlnX2FmdGVyCitBRlRFUiBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBP TiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURV UkUgdHJpZ2dlcl9kYXRhKCk7CitpbnNlcnQgaW50byB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVk IChpKSB2YWx1ZXMgKDEpOworTk9USUNFOiAgVERbYXJnc10gPT4gTm9uZQorTk9USUNFOiAg VERbZXZlbnRdID0+IElOU0VSVAorTk9USUNFOiAgVERbbGV2ZWxdID0+IFJPVworTk9USUNF OiAgVERbbmFtZV0gPT4gc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19iZWZvcmUKK05PVElDRTog IFREW25ld10gPT4geydpJzogMX0KK05PVElDRTogIFREW29sZF0gPT4gTm9uZQorTk9USUNF OiAgVERbcmVsaWRdID0+IGJvZ3VzOjEyMzQ1CitOT1RJQ0U6ICBURFt0YWJsZV9uYW1lXSA9 PiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitOT1RJQ0U6ICBURFt0YWJsZV9zY2hlbWFdID0+ IHB1YmxpYworTk9USUNFOiAgVERbd2hlbl0gPT4gQkVGT1JFCitOT1RJQ0U6ICBURFthcmdz XSA9PiBOb25lCitOT1RJQ0U6ICBURFtldmVudF0gPT4gSU5TRVJUCitOT1RJQ0U6ICBURFts ZXZlbF0gPT4gUk9XCitOT1RJQ0U6ICBURFtuYW1lXSA9PiBzaG93X3RyaWdnZXJfZGF0YV90 cmlnX2FmdGVyCitOT1RJQ0U6ICBURFtuZXddID0+IHsnaSc6IDEsICdrJzogM30KK05PVElD RTogIFREW29sZF0gPT4gTm9uZQorTk9USUNFOiAgVERbcmVsaWRdID0+IGJvZ3VzOjEyMzQ1 CitOT1RJQ0U6ICBURFt0YWJsZV9uYW1lXSA9PiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitO T1RJQ0U6ICBURFt0YWJsZV9zY2hlbWFdID0+IHB1YmxpYworTk9USUNFOiAgVERbd2hlbl0g PT4gQUZURVIKK3VwZGF0ZSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkIHNldCBpID0gMTEgd2hl cmUgaSA9IDE7CitOT1RJQ0U6ICBURFthcmdzXSA9PiBOb25lCitOT1RJQ0U6ICBURFtldmVu dF0gPT4gVVBEQVRFCitOT1RJQ0U6ICBURFtsZXZlbF0gPT4gUk9XCitOT1RJQ0U6ICBURFtu YW1lXSA9PiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2JlZm9yZQorTk9USUNFOiAgVERbbmV3 XSA9PiB7J2knOiAxMX0KK05PVElDRTogIFREW29sZF0gPT4geydpJzogMSwgJ2snOiAzfQor Tk9USUNFOiAgVERbcmVsaWRdID0+IGJvZ3VzOjEyMzQ1CitOT1RJQ0U6ICBURFt0YWJsZV9u YW1lXSA9PiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitOT1RJQ0U6ICBURFt0YWJsZV9zY2hl bWFdID0+IHB1YmxpYworTk9USUNFOiAgVERbd2hlbl0gPT4gQkVGT1JFCitOT1RJQ0U6ICBU RFthcmdzXSA9PiBOb25lCitOT1RJQ0U6ICBURFtldmVudF0gPT4gVVBEQVRFCitOT1RJQ0U6 ICBURFtsZXZlbF0gPT4gUk9XCitOT1RJQ0U6ICBURFtuYW1lXSA9PiBzaG93X3RyaWdnZXJf ZGF0YV90cmlnX2FmdGVyCitOT1RJQ0U6ICBURFtuZXddID0+IHsnaSc6IDExLCAnayc6IDMz fQorTk9USUNFOiAgVERbb2xkXSA9PiB7J2knOiAxLCAnayc6IDN9CitOT1RJQ0U6ICBURFty ZWxpZF0gPT4gYm9ndXM6MTIzNDUKK05PVElDRTogIFREW3RhYmxlX25hbWVdID0+IHRyaWdn ZXJfdGVzdF9nZW5lcmF0ZWQKK05PVElDRTogIFREW3RhYmxlX3NjaGVtYV0gPT4gcHVibGlj CitOT1RJQ0U6ICBURFt3aGVuXSA9PiBBRlRFUgorZGVsZXRlIGZyb20gdHJpZ2dlcl90ZXN0 X2dlbmVyYXRlZDsKK05PVElDRTogIFREW2FyZ3NdID0+IE5vbmUKK05PVElDRTogIFREW2V2 ZW50XSA9PiBERUxFVEUKK05PVElDRTogIFREW2xldmVsXSA9PiBST1cKK05PVElDRTogIFRE W25hbWVdID0+IHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlCitOT1RJQ0U6ICBURFtu ZXddID0+IE5vbmUKK05PVElDRTogIFREW29sZF0gPT4geydpJzogMTEsICdrJzogMzN9CitO T1RJQ0U6ICBURFtyZWxpZF0gPT4gYm9ndXM6MTIzNDUKK05PVElDRTogIFREW3RhYmxlX25h bWVdID0+IHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK05PVElDRTogIFREW3RhYmxlX3NjaGVt YV0gPT4gcHVibGljCitOT1RJQ0U6ICBURFt3aGVuXSA9PiBCRUZPUkUKK05PVElDRTogIFRE W2FyZ3NdID0+IE5vbmUKK05PVElDRTogIFREW2V2ZW50XSA9PiBERUxFVEUKK05PVElDRTog IFREW2xldmVsXSA9PiBST1cKK05PVElDRTogIFREW25hbWVdID0+IHNob3dfdHJpZ2dlcl9k YXRhX3RyaWdfYWZ0ZXIKK05PVElDRTogIFREW25ld10gPT4gTm9uZQorTk9USUNFOiAgVERb b2xkXSA9PiB7J2knOiAxMSwgJ2snOiAzM30KK05PVElDRTogIFREW3JlbGlkXSA9PiBib2d1 czoxMjM0NQorTk9USUNFOiAgVERbdGFibGVfbmFtZV0gPT4gdHJpZ2dlcl90ZXN0X2dlbmVy YXRlZAorTk9USUNFOiAgVERbdGFibGVfc2NoZW1hXSA9PiBwdWJsaWMKK05PVElDRTogIFRE W3doZW5dID0+IEFGVEVSCitEUk9QIFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19i ZWZvcmUgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKK0RST1AgVFJJR0dFUiBzaG93X3Ry aWdnZXJfZGF0YV90cmlnX2FmdGVyIE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CiBpbnNl cnQgaW50byB0cmlnZ2VyX3Rlc3QgdmFsdWVzKDEsJ2luc2VydCcpOwogQ1JFQVRFIFZJRVcg dHJpZ2dlcl90ZXN0X3ZpZXcgQVMgU0VMRUNUICogRlJPTSB0cmlnZ2VyX3Rlc3Q7CiBDUkVB VEUgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnCkBAIC01MjQsMyArNjAwLDIyIEBA IElORk86ICBvbGQ6IDEgLT4gYQogSU5GTzogIG5ldzogMSAtPiBiCiBEUk9QIFRBQkxFIHRy YW5zaXRpb25fdGFibGVfdGVzdDsKIERST1AgRlVOQ1RJT04gdHJhbnNpdGlvbl90YWJsZV90 ZXN0X2YoKTsKKy0tIGRlYWxpbmcgd2l0aCBnZW5lcmF0ZWQgY29sdW1ucworQ1JFQVRFIEZV TkNUSU9OIGdlbmVyYXRlZF90ZXN0X2Z1bmMxKCkgUkVUVVJOUyB0cmlnZ2VyCitMQU5HVUFH RSBwbHB5dGhvbnUKK0FTICQkCitURFsnbmV3J11bJ2onXSA9IDUgICMgbm90IGFsbG93ZWQK K3JldHVybiAnTU9ESUZZJworJCQ7CitDUkVBVEUgVFJJR0dFUiBnZW5lcmF0ZWRfdGVzdF90 cmlnZ2VyMSBCRUZPUkUgSU5TRVJUIE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK0ZPUiBF QUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBnZW5lcmF0ZWRfdGVzdF9mdW5jMSgpOworVFJV TkNBVEUgdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKK0lOU0VSVCBJTlRPIHRyaWdnZXJfdGVz dF9nZW5lcmF0ZWQgKGkpIFZBTFVFUyAoMSk7CitFUlJPUjogIGNhbm5vdCBzZXQgZ2VuZXJh dGVkIGNvbHVtbiAiaiIKK0NPTlRFWFQ6ICB3aGlsZSBtb2RpZnlpbmcgdHJpZ2dlciByb3cK K1BML1B5dGhvbiBmdW5jdGlvbiAiZ2VuZXJhdGVkX3Rlc3RfZnVuYzEiCitTRUxFQ1QgKiBG Uk9NIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CisgaSB8IGogfCBrIAorLS0tKy0tLSstLS0K KygwIHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X2N1cnNvcm9i amVjdC5jIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfY3Vyc29yb2JqZWN0LmMKaW5kZXggNDVh YzI1YjJhZS4uZTRkNTQzYTRkNCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlf Y3Vyc29yb2JqZWN0LmMKKysrIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfY3Vyc29yb2JqZWN0 LmMKQEAgLTM1Nyw3ICszNTcsNyBAQCBQTHlfY3Vyc29yX2l0ZXJuZXh0KFB5T2JqZWN0ICpz ZWxmKQogCQkJCQkJCQkgIGV4ZWNfY3R4LT5jdXJyX3Byb2MpOwogCiAJCQlyZXQgPSBQTHlf aW5wdXRfZnJvbV90dXBsZSgmY3Vyc29yLT5yZXN1bHQsIFNQSV90dXB0YWJsZS0+dmFsc1sw XSwKLQkJCQkJCQkJCSAgIFNQSV90dXB0YWJsZS0+dHVwZGVzYyk7CisJCQkJCQkJCQkgICBT UElfdHVwdGFibGUtPnR1cGRlc2MsIHRydWUpOwogCQl9CiAKIAkJU1BJX2ZyZWV0dXB0YWJs ZShTUElfdHVwdGFibGUpOwpAQCAtNDUzLDcgKzQ1Myw4IEBAIFBMeV9jdXJzb3JfZmV0Y2go UHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogCQkJCXsKIAkJCQkJUHlPYmplY3Qg ICAqcm93ID0gUEx5X2lucHV0X2Zyb21fdHVwbGUoJmN1cnNvci0+cmVzdWx0LAogCQkJCQkJ CQkJCQkJCQkgICBTUElfdHVwdGFibGUtPnZhbHNbaV0sCi0JCQkJCQkJCQkJCQkJCSAgIFNQ SV90dXB0YWJsZS0+dHVwZGVzYyk7CisJCQkJCQkJCQkJCQkJCSAgIFNQSV90dXB0YWJsZS0+ dHVwZGVzYywKKwkJCQkJCQkJCQkJCQkJICAgdHJ1ZSk7CiAKIAkJCQkJUHlMaXN0X1NldEl0 ZW0ocmV0LT5yb3dzLCBpLCByb3cpOwogCQkJCX0KZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5 dGhvbi9wbHB5X2V4ZWMuYyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X2V4ZWMuYwppbmRleCA0 N2VkOTVkY2M2Li45NGJhYmMzNmJhIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxweXRob24vcGxw eV9leGVjLmMKKysrIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfZXhlYy5jCkBAIC0xMyw2ICsx Myw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2Nh Y2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2Fj aGUuaCIKIApAQCAtNzUxLDYgKzc1MiwxMSBAQCBQTHlfdHJpZ2dlcl9idWlsZF9hcmdzKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBQTHlQcm9jZWR1cmUgKnByb2MsIEhlYXBUdXBsZSAq cgogCQkJUHlEaWN0X1NldEl0ZW1TdHJpbmcocGx0ZGF0YSwgImxldmVsIiwgcGx0bGV2ZWwp OwogCQkJUHlfREVDUkVGKHBsdGxldmVsKTsKIAorCQkJLyoKKwkJCSAqIE5vdGU6IEluIEJF Rk9SRSB0cmlnZ2VyLCBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMgYXJlIG5vdCBjb21wdXRl ZCB5ZXQsCisJCQkgKiBzbyBkb24ndCBtYWtlIHRoZW0gYWNjZXNzaWJsZSBpbiBORVcgcm93 LgorCQkJICovCisKIAkJCWlmIChUUklHR0VSX0ZJUkVEX0JZX0lOU0VSVCh0ZGF0YS0+dGdf ZXZlbnQpKQogCQkJewogCQkJCXBsdGV2ZW50ID0gUHlTdHJpbmdfRnJvbVN0cmluZygiSU5T RVJUIik7CkBAIC03NTgsNyArNzY0LDggQEAgUEx5X3RyaWdnZXJfYnVpbGRfYXJncyhGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbywgUEx5UHJvY2VkdXJlICpwcm9jLCBIZWFwVHVwbGUgKnIK IAkJCQlQeURpY3RfU2V0SXRlbVN0cmluZyhwbHRkYXRhLCAib2xkIiwgUHlfTm9uZSk7CiAJ CQkJcHl0bmV3ID0gUEx5X2lucHV0X2Zyb21fdHVwbGUoJnByb2MtPnJlc3VsdF9pbiwKIAkJ CQkJCQkJCQkJICB0ZGF0YS0+dGdfdHJpZ3R1cGxlLAotCQkJCQkJCQkJCQkgIHJlbF9kZXNj cik7CisJCQkJCQkJCQkJCSAgcmVsX2Rlc2NyLAorCQkJCQkJCQkJCQkgICFUUklHR0VSX0ZJ UkVEX0JFRk9SRSh0ZGF0YS0+dGdfZXZlbnQpKTsKIAkJCQlQeURpY3RfU2V0SXRlbVN0cmlu ZyhwbHRkYXRhLCAibmV3IiwgcHl0bmV3KTsKIAkJCQlQeV9ERUNSRUYocHl0bmV3KTsKIAkJ CQkqcnYgPSB0ZGF0YS0+dGdfdHJpZ3R1cGxlOwpAQCAtNzcwLDcgKzc3Nyw4IEBAIFBMeV90 cmlnZ2VyX2J1aWxkX2FyZ3MoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIFBMeVByb2NlZHVy ZSAqcHJvYywgSGVhcFR1cGxlICpyCiAJCQkJUHlEaWN0X1NldEl0ZW1TdHJpbmcocGx0ZGF0 YSwgIm5ldyIsIFB5X05vbmUpOwogCQkJCXB5dG9sZCA9IFBMeV9pbnB1dF9mcm9tX3R1cGxl KCZwcm9jLT5yZXN1bHRfaW4sCiAJCQkJCQkJCQkJCSAgdGRhdGEtPnRnX3RyaWd0dXBsZSwK LQkJCQkJCQkJCQkJICByZWxfZGVzY3IpOworCQkJCQkJCQkJCQkgIHJlbF9kZXNjciwKKwkJ CQkJCQkJCQkJICB0cnVlKTsKIAkJCQlQeURpY3RfU2V0SXRlbVN0cmluZyhwbHRkYXRhLCAi b2xkIiwgcHl0b2xkKTsKIAkJCQlQeV9ERUNSRUYocHl0b2xkKTsKIAkJCQkqcnYgPSB0ZGF0 YS0+dGdfdHJpZ3R1cGxlOwpAQCAtNzgxLDEyICs3ODksMTQgQEAgUEx5X3RyaWdnZXJfYnVp bGRfYXJncyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgUEx5UHJvY2VkdXJlICpwcm9jLCBI ZWFwVHVwbGUgKnIKIAogCQkJCXB5dG5ldyA9IFBMeV9pbnB1dF9mcm9tX3R1cGxlKCZwcm9j LT5yZXN1bHRfaW4sCiAJCQkJCQkJCQkJCSAgdGRhdGEtPnRnX25ld3R1cGxlLAotCQkJCQkJ CQkJCQkgIHJlbF9kZXNjcik7CisJCQkJCQkJCQkJCSAgcmVsX2Rlc2NyLAorCQkJCQkJCQkJ CQkgICFUUklHR0VSX0ZJUkVEX0JFRk9SRSh0ZGF0YS0+dGdfZXZlbnQpKTsKIAkJCQlQeURp Y3RfU2V0SXRlbVN0cmluZyhwbHRkYXRhLCAibmV3IiwgcHl0bmV3KTsKIAkJCQlQeV9ERUNS RUYocHl0bmV3KTsKIAkJCQlweXRvbGQgPSBQTHlfaW5wdXRfZnJvbV90dXBsZSgmcHJvYy0+ cmVzdWx0X2luLAogCQkJCQkJCQkJCQkgIHRkYXRhLT50Z190cmlndHVwbGUsCi0JCQkJCQkJ CQkJCSAgcmVsX2Rlc2NyKTsKKwkJCQkJCQkJCQkJICByZWxfZGVzY3IsCisJCQkJCQkJCQkJ CSAgdHJ1ZSk7CiAJCQkJUHlEaWN0X1NldEl0ZW1TdHJpbmcocGx0ZGF0YSwgIm9sZCIsIHB5 dG9sZCk7CiAJCQkJUHlfREVDUkVGKHB5dG9sZCk7CiAJCQkJKnJ2ID0gdGRhdGEtPnRnX25l d3R1cGxlOwpAQCAtOTUyLDYgKzk2MiwxMSBAQCBQTHlfbW9kaWZ5X3R1cGxlKFBMeVByb2Nl ZHVyZSAqcHJvYywgUHlPYmplY3QgKnBsdGQsIFRyaWdnZXJEYXRhICp0ZGF0YSwKIAkJCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJCSBlcnJt c2coImNhbm5vdCBzZXQgc3lzdGVtIGF0dHJpYnV0ZSBcIiVzXCIiLAogCQkJCQkJCQlwbGF0 dHN0cikpKTsKKwkJCWlmIChUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGF0dG4gLSAxKS0+YXR0 Z2VuZXJhdGVkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RF X0VfUl9JX0VfVFJJR0dFUl9QUk9UT0NPTF9WSU9MQVRFRCksCisJCQkJCQkgZXJybXNnKCJj YW5ub3Qgc2V0IGdlbmVyYXRlZCBjb2x1bW4gXCIlc1wiIiwKKwkJCQkJCQkJcGxhdHRzdHIp KSk7CiAKIAkJCXBsdmFsID0gUHlEaWN0X0dldEl0ZW0ocGxudHVwLCBwbGF0dCk7CiAJCQlp ZiAocGx2YWwgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Nw aS5jIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmMKaW5kZXggNDExNTVmYzgxZS4uZmIy M2E3YjNhNCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmMKKysrIGIv c3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmMKQEAgLTQxOSw3ICs0MTksOCBAQCBQTHlfc3Bp X2V4ZWN1dGVfZmV0Y2hfcmVzdWx0KFNQSVR1cGxlVGFibGUgKnR1cHRhYmxlLCB1aW50NjQg cm93cywgaW50IHN0YXR1cykKIAkJCQkJewogCQkJCQkJUHlPYmplY3QgICAqcm93ID0gUEx5 X2lucHV0X2Zyb21fdHVwbGUoJmluaW5mbywKIAkJCQkJCQkJCQkJCQkJCSAgIHR1cHRhYmxl LT52YWxzW2ldLAotCQkJCQkJCQkJCQkJCQkJICAgdHVwdGFibGUtPnR1cGRlc2MpOworCQkJ CQkJCQkJCQkJCQkJICAgdHVwdGFibGUtPnR1cGRlc2MsCisJCQkJCQkJCQkJCQkJCQkgICB0 cnVlKTsKIAogCQkJCQkJUHlMaXN0X1NldEl0ZW0ocmVzdWx0LT5yb3dzLCBpLCByb3cpOwog CQkJCQl9CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxweXRob24vcGxweV90eXBlaW8uYyBiL3Ny Yy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5jCmluZGV4IGQ2YTZhODQ5YzMuLmVhYjczOTYz OTggMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5jCisrKyBiL3Ny Yy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5jCkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBQ eU9iamVjdCAqUEx5TGlzdF9Gcm9tQXJyYXkoUEx5RGF0dW1Ub09iICphcmcsIERhdHVtIGQp Owogc3RhdGljIFB5T2JqZWN0ICpQTHlMaXN0X0Zyb21BcnJheV9yZWN1cnNlKFBMeURhdHVt VG9PYiAqZWxtLCBpbnQgKmRpbXMsIGludCBuZGltLCBpbnQgZGltLAogCQkJCQkJICBjaGFy ICoqZGF0YXB0cl9wLCBiaXRzOCAqKmJpdG1hcF9wLCBpbnQgKmJpdG1hc2tfcCk7CiBzdGF0 aWMgUHlPYmplY3QgKlBMeURpY3RfRnJvbUNvbXBvc2l0ZShQTHlEYXR1bVRvT2IgKmFyZywg RGF0dW0gZCk7Ci1zdGF0aWMgUHlPYmplY3QgKlBMeURpY3RfRnJvbVR1cGxlKFBMeURhdHVt VG9PYiAqYXJnLCBIZWFwVHVwbGUgdHVwbGUsIFR1cGxlRGVzYyBkZXNjKTsKK3N0YXRpYyBQ eU9iamVjdCAqUEx5RGljdF9Gcm9tVHVwbGUoUEx5RGF0dW1Ub09iICphcmcsIEhlYXBUdXBs ZSB0dXBsZSwgVHVwbGVEZXNjIGRlc2MsIGJvb2wgaW5jbHVkZV9nZW5lcmF0ZWQpOwogCiAv KiBjb252ZXJzaW9uIGZyb20gUHl0aG9uIG9iamVjdHMgdG8gRGF0dW1zICovCiBzdGF0aWMg RGF0dW0gUEx5T2JqZWN0X1RvQm9vbChQTHlPYlRvRGF0dW0gKmFyZywgUHlPYmplY3QgKnBs cnYsCkBAIC0xMzQsNyArMTM0LDcgQEAgUEx5X291dHB1dF9jb252ZXJ0KFBMeU9iVG9EYXR1 bSAqYXJnLCBQeU9iamVjdCAqdmFsLCBib29sICppc251bGwpCiAgKiBidXQgaW4gcHJhY3Rp Y2UgYWxsIGNhbGxlcnMgaGF2ZSB0aGUgcmlnaHQgdHVwZGVzYyBhdmFpbGFibGUuCiAgKi8K IFB5T2JqZWN0ICoKLVBMeV9pbnB1dF9mcm9tX3R1cGxlKFBMeURhdHVtVG9PYiAqYXJnLCBI ZWFwVHVwbGUgdHVwbGUsIFR1cGxlRGVzYyBkZXNjKQorUEx5X2lucHV0X2Zyb21fdHVwbGUo UEx5RGF0dW1Ub09iICphcmcsIEhlYXBUdXBsZSB0dXBsZSwgVHVwbGVEZXNjIGRlc2MsIGJv b2wgaW5jbHVkZV9nZW5lcmF0ZWQpCiB7CiAJUHlPYmplY3QgICAqZGljdDsKIAlQTHlFeGVj dXRpb25Db250ZXh0ICpleGVjX2N0eCA9IFBMeV9jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0 KCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgUEx5X2lucHV0X2Zyb21fdHVwbGUoUEx5RGF0dW1U b09iICphcmcsIEhlYXBUdXBsZSB0dXBsZSwgVHVwbGVEZXNjIGRlc2MpCiAKIAlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHNjcmF0Y2hfY29udGV4dCk7CiAKLQlkaWN0 ID0gUEx5RGljdF9Gcm9tVHVwbGUoYXJnLCB0dXBsZSwgZGVzYyk7CisJZGljdCA9IFBMeURp Y3RfRnJvbVR1cGxlKGFyZywgdHVwbGUsIGRlc2MsIGluY2x1ZGVfZ2VuZXJhdGVkKTsKIAog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIApAQCAtODA0LDcgKzgwNCw3 IEBAIFBMeURpY3RfRnJvbUNvbXBvc2l0ZShQTHlEYXR1bVRvT2IgKmFyZywgRGF0dW0gZCkK IAl0bXB0dXAudF9sZW4gPSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bUxlbmd0aCh0ZCk7CiAJ dG1wdHVwLnRfZGF0YSA9IHRkOwogCi0JZGljdCA9IFBMeURpY3RfRnJvbVR1cGxlKGFyZywg JnRtcHR1cCwgdHVwZGVzYyk7CisJZGljdCA9IFBMeURpY3RfRnJvbVR1cGxlKGFyZywgJnRt cHR1cCwgdHVwZGVzYywgdHJ1ZSk7CiAKIAlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MpOwog CkBAIC04MTUsNyArODE1LDcgQEAgUEx5RGljdF9Gcm9tQ29tcG9zaXRlKFBMeURhdHVtVG9P YiAqYXJnLCBEYXR1bSBkKQogICogVHJhbnNmb3JtIGEgdHVwbGUgaW50byBhIFB5dGhvbiBk aWN0IG9iamVjdC4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLVBMeURpY3RfRnJvbVR1cGxl KFBMeURhdHVtVG9PYiAqYXJnLCBIZWFwVHVwbGUgdHVwbGUsIFR1cGxlRGVzYyBkZXNjKQor UEx5RGljdF9Gcm9tVHVwbGUoUEx5RGF0dW1Ub09iICphcmcsIEhlYXBUdXBsZSB0dXBsZSwg VHVwbGVEZXNjIGRlc2MsIGJvb2wgaW5jbHVkZV9nZW5lcmF0ZWQpCiB7CiAJUHlPYmplY3Qg ICAqdm9sYXRpbGUgZGljdDsKIApAQCAtODQyLDYgKzg0MiwxNiBAQCBQTHlEaWN0X0Zyb21U dXBsZShQTHlEYXR1bVRvT2IgKmFyZywgSGVhcFR1cGxlIHR1cGxlLCBUdXBsZURlc2MgZGVz YykKIAkJCWlmIChhdHRyLT5hdHRpc2Ryb3BwZWQpCiAJCQkJY29udGludWU7CiAKKwkJCWlm IChhdHRyLT5hdHRnZW5lcmF0ZWQpCisJCQl7CisJCQkJLyogZG9uJ3QgaW5jbHVkZSB1bmxl c3MgcmVxdWVzdGVkICovCisJCQkJaWYgKCFpbmNsdWRlX2dlbmVyYXRlZCkKKwkJCQkJY29u dGludWU7CisJCQkJLyogbmV2ZXIgaW5jbHVkZSB2aXJ0dWFsIGNvbHVtbnMgKi8KKwkJCQlp ZiAoYXR0ci0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkK KwkJCQkJY29udGludWU7CisJCQl9CisKIAkJCWtleSA9IE5hbWVTdHIoYXR0ci0+YXR0bmFt ZSk7CiAJCQl2YXR0ciA9IGhlYXBfZ2V0YXR0cih0dXBsZSwgKGkgKyAxKSwgZGVzYywgJmlz X251bGwpOwogCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxweXRob24vcGxweV90eXBlaW8uaCBi L3NyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5oCmluZGV4IDgyYmRmYWU1NDguLmYyMTAx NzgyMzggMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5oCisrKyBi L3NyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5oCkBAIC0xNTEsNyArMTUxLDcgQEAgZXh0 ZXJuIERhdHVtIFBMeV9vdXRwdXRfY29udmVydChQTHlPYlRvRGF0dW0gKmFyZywgUHlPYmpl Y3QgKnZhbCwKIAkJCQkgICBib29sICppc251bGwpOwogCiBleHRlcm4gUHlPYmplY3QgKlBM eV9pbnB1dF9mcm9tX3R1cGxlKFBMeURhdHVtVG9PYiAqYXJnLCBIZWFwVHVwbGUgdHVwbGUs Ci0JCQkJCSBUdXBsZURlc2MgZGVzYyk7CisJCQkJCSBUdXBsZURlc2MgZGVzYywgYm9vbCBp bmNsdWRlX2dlbmVyYXRlZCk7CiAKIGV4dGVybiB2b2lkIFBMeV9pbnB1dF9zZXR1cF9mdW5j KFBMeURhdHVtVG9PYiAqYXJnLCBNZW1vcnlDb250ZXh0IGFyZ19tY3h0LAogCQkJCQkgT2lk IHR5cGVPaWQsIGludDMyIHR5cG1vZCwKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9z cWwvcGxweXRob25fdHJpZ2dlci5zcWwgYi9zcmMvcGwvcGxweXRob24vc3FsL3BscHl0aG9u X3RyaWdnZXIuc3FsCmluZGV4IDc5YzI0YjcxNGIuLjA3ZDQ5NTQ3ZDAgMTAwNjQ0Ci0tLSBh L3NyYy9wbC9wbHB5dGhvbi9zcWwvcGxweXRob25fdHJpZ2dlci5zcWwKKysrIGIvc3JjL3Bs L3BscHl0aG9uL3NxbC9wbHB5dGhvbl90cmlnZ2VyLnNxbApAQCAtNjcsNiArNjcsMTIgQEAg Q1JFQVRFIFRSSUdHRVIgdXNlcnNfZGVsZXRlX3RyaWcgQkVGT1JFIERFTEVURSBPTiB1c2Vy cyBGT1IgRUFDSCBST1cKIENSRUFURSBUQUJMRSB0cmlnZ2VyX3Rlc3QKIAkoaSBpbnQsIHYg dGV4dCApOwogCitDUkVBVEUgVEFCTEUgdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCAoCisJaSBp bnQsCisgICAgICAgIGogaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKiAyKSBWSVJUVUFM LAorICAgICAgICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICogMykgU1RPUkVECisp OworCiBDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9kYXRhKCkgUkVUVVJOUyB0cmlnZ2VyIExB TkdVQUdFIHBscHl0aG9udSBBUyAkJAogCiBpZiAncmVsaWQnIGluIFREOgpAQCAtMTA5LDYg KzExNSwyMSBAQCBDUkVBVEUgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX3N0bXQK IERST1AgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2JlZm9yZSBvbiB0cmlnZ2Vy X3Rlc3Q7CiBEUk9QIFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19hZnRlciBvbiB0 cmlnZ2VyX3Rlc3Q7CiAKK0NSRUFURSBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdf YmVmb3JlCitCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gdHJpZ2dlcl90 ZXN0X2dlbmVyYXRlZAorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJf ZGF0YSgpOworCitDUkVBVEUgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2FmdGVy CitBRlRFUiBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiB0cmlnZ2VyX3Rlc3RfZ2Vu ZXJhdGVkCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9kYXRhKCk7 CisKK2luc2VydCBpbnRvIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQgKGkpIHZhbHVlcyAoMSk7 Cit1cGRhdGUgdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCBzZXQgaSA9IDExIHdoZXJlIGkgPSAx OworZGVsZXRlIGZyb20gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKKworRFJPUCBUUklHR0VS IHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlIE9OIHRyaWdnZXJfdGVzdF9nZW5lcmF0 ZWQ7CitEUk9QIFRSSUdHRVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19hZnRlciBPTiB0cmln Z2VyX3Rlc3RfZ2VuZXJhdGVkOworCiBpbnNlcnQgaW50byB0cmlnZ2VyX3Rlc3QgdmFsdWVz KDEsJ2luc2VydCcpOwogQ1JFQVRFIFZJRVcgdHJpZ2dlcl90ZXN0X3ZpZXcgQVMgU0VMRUNU ICogRlJPTSB0cmlnZ2VyX3Rlc3Q7CiAKQEAgLTQzMCwzICs0NTEsMjAgQEAgQ1JFQVRFIFRS SUdHRVIgYV90IEFGVEVSIFVQREFURSBPTiB0cmFuc2l0aW9uX3RhYmxlX3Rlc3QKIAogRFJP UCBUQUJMRSB0cmFuc2l0aW9uX3RhYmxlX3Rlc3Q7CiBEUk9QIEZVTkNUSU9OIHRyYW5zaXRp b25fdGFibGVfdGVzdF9mKCk7CisKKworLS0gZGVhbGluZyB3aXRoIGdlbmVyYXRlZCBjb2x1 bW5zCisKK0NSRUFURSBGVU5DVElPTiBnZW5lcmF0ZWRfdGVzdF9mdW5jMSgpIFJFVFVSTlMg dHJpZ2dlcgorTEFOR1VBR0UgcGxweXRob251CitBUyAkJAorVERbJ25ldyddWydqJ10gPSA1 ICAjIG5vdCBhbGxvd2VkCityZXR1cm4gJ01PRElGWScKKyQkOworCitDUkVBVEUgVFJJR0dF UiBnZW5lcmF0ZWRfdGVzdF90cmlnZ2VyMSBCRUZPUkUgSU5TRVJUIE9OIHRyaWdnZXJfdGVz dF9nZW5lcmF0ZWQKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBnZW5lcmF0ZWRf dGVzdF9mdW5jMSgpOworCitUUlVOQ0FURSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworSU5T RVJUIElOVE8gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCAoaSkgVkFMVUVTICgxKTsKK1NFTEVD VCAqIEZST00gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKZGlmZiAtLWdpdCBhL3NyYy9wbC90 Y2wvZXhwZWN0ZWQvcGx0Y2xfcXVlcmllcy5vdXQgYi9zcmMvcGwvdGNsL2V4cGVjdGVkL3Bs dGNsX3F1ZXJpZXMub3V0CmluZGV4IDE3ZTgyMWJiNGMuLmNiODkzNzA3OGEgMTAwNjQ0Ci0t LSBhL3NyYy9wbC90Y2wvZXhwZWN0ZWQvcGx0Y2xfcXVlcmllcy5vdXQKKysrIGIvc3JjL3Bs L3RjbC9leHBlY3RlZC9wbHRjbF9xdWVyaWVzLm91dApAQCAtMjA3LDYgKzIwNyw3NSBAQCBO T1RJQ0U6ICBUR190YWJsZV9uYW1lOiB0cmlnZ2VyX3Rlc3QKIE5PVElDRTogIFRHX3RhYmxl X3NjaGVtYTogcHVibGljCiBOT1RJQ0U6ICBUR193aGVuOiBCRUZPUkUKIE5PVElDRTogIGFy Z3M6IHsyMyBza2lkb299CitpbnNlcnQgaW50byB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkIChp KSB2YWx1ZXMgKDEpOworTk9USUNFOiAgTkVXOiB7aTogMX0KK05PVElDRTogIE9MRDoge30K K05PVElDRTogIFRHX2xldmVsOiBST1cKK05PVElDRTogIFRHX25hbWU6IHNob3dfdHJpZ2dl cl9kYXRhX3RyaWdfYmVmb3JlCitOT1RJQ0U6ICBUR19vcDogSU5TRVJUCitOT1RJQ0U6ICBU R19yZWxhdHRzOiB7e30gaSBqIGt9CitOT1RJQ0U6ICBUR19yZWxpZDogYm9ndXM6MTIzNDUK K05PVElDRTogIFRHX3RhYmxlX25hbWU6IHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK05PVElD RTogIFRHX3RhYmxlX3NjaGVtYTogcHVibGljCitOT1RJQ0U6ICBUR193aGVuOiBCRUZPUkUK K05PVElDRTogIGFyZ3M6IHt9CitOT1RJQ0U6ICBORVc6IHtpOiAxLCBrOiAyfQorTk9USUNF OiAgT0xEOiB7fQorTk9USUNFOiAgVEdfbGV2ZWw6IFJPVworTk9USUNFOiAgVEdfbmFtZTog c2hvd190cmlnZ2VyX2RhdGFfdHJpZ19hZnRlcgorTk9USUNFOiAgVEdfb3A6IElOU0VSVAor Tk9USUNFOiAgVEdfcmVsYXR0czoge3t9IGkgaiBrfQorTk9USUNFOiAgVEdfcmVsaWQ6IGJv Z3VzOjEyMzQ1CitOT1RJQ0U6ICBUR190YWJsZV9uYW1lOiB0cmlnZ2VyX3Rlc3RfZ2VuZXJh dGVkCitOT1RJQ0U6ICBUR190YWJsZV9zY2hlbWE6IHB1YmxpYworTk9USUNFOiAgVEdfd2hl bjogQUZURVIKK05PVElDRTogIGFyZ3M6IHt9Cit1cGRhdGUgdHJpZ2dlcl90ZXN0X2dlbmVy YXRlZCBzZXQgaSA9IDExIHdoZXJlIGkgPSAxOworTk9USUNFOiAgTkVXOiB7aTogMTF9CitO T1RJQ0U6ICBPTEQ6IHtpOiAxLCBrOiAyfQorTk9USUNFOiAgVEdfbGV2ZWw6IFJPVworTk9U SUNFOiAgVEdfbmFtZTogc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19iZWZvcmUKK05PVElDRTog IFRHX29wOiBVUERBVEUKK05PVElDRTogIFRHX3JlbGF0dHM6IHt7fSBpIGoga30KK05PVElD RTogIFRHX3JlbGlkOiBib2d1czoxMjM0NQorTk9USUNFOiAgVEdfdGFibGVfbmFtZTogdHJp Z2dlcl90ZXN0X2dlbmVyYXRlZAorTk9USUNFOiAgVEdfdGFibGVfc2NoZW1hOiBwdWJsaWMK K05PVElDRTogIFRHX3doZW46IEJFRk9SRQorTk9USUNFOiAgYXJnczoge30KK05PVElDRTog IE5FVzoge2k6IDExLCBrOiAyMn0KK05PVElDRTogIE9MRDoge2k6IDEsIGs6IDJ9CitOT1RJ Q0U6ICBUR19sZXZlbDogUk9XCitOT1RJQ0U6ICBUR19uYW1lOiBzaG93X3RyaWdnZXJfZGF0 YV90cmlnX2FmdGVyCitOT1RJQ0U6ICBUR19vcDogVVBEQVRFCitOT1RJQ0U6ICBUR19yZWxh dHRzOiB7e30gaSBqIGt9CitOT1RJQ0U6ICBUR19yZWxpZDogYm9ndXM6MTIzNDUKK05PVElD RTogIFRHX3RhYmxlX25hbWU6IHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQKK05PVElDRTogIFRH X3RhYmxlX3NjaGVtYTogcHVibGljCitOT1RJQ0U6ICBUR193aGVuOiBBRlRFUgorTk9USUNF OiAgYXJnczoge30KK2RlbGV0ZSBmcm9tIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CitOT1RJ Q0U6ICBORVc6IHt9CitOT1RJQ0U6ICBPTEQ6IHtpOiAxMSwgazogMjJ9CitOT1RJQ0U6ICBU R19sZXZlbDogUk9XCitOT1RJQ0U6ICBUR19uYW1lOiBzaG93X3RyaWdnZXJfZGF0YV90cmln X2JlZm9yZQorTk9USUNFOiAgVEdfb3A6IERFTEVURQorTk9USUNFOiAgVEdfcmVsYXR0czog e3t9IGkgaiBrfQorTk9USUNFOiAgVEdfcmVsaWQ6IGJvZ3VzOjEyMzQ1CitOT1RJQ0U6ICBU R190YWJsZV9uYW1lOiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitOT1RJQ0U6ICBUR190YWJs ZV9zY2hlbWE6IHB1YmxpYworTk9USUNFOiAgVEdfd2hlbjogQkVGT1JFCitOT1RJQ0U6ICBh cmdzOiB7fQorTk9USUNFOiAgTkVXOiB7fQorTk9USUNFOiAgT0xEOiB7aTogMTEsIGs6IDIy fQorTk9USUNFOiAgVEdfbGV2ZWw6IFJPVworTk9USUNFOiAgVEdfbmFtZTogc2hvd190cmln Z2VyX2RhdGFfdHJpZ19hZnRlcgorTk9USUNFOiAgVEdfb3A6IERFTEVURQorTk9USUNFOiAg VEdfcmVsYXR0czoge3t9IGkgaiBrfQorTk9USUNFOiAgVEdfcmVsaWQ6IGJvZ3VzOjEyMzQ1 CitOT1RJQ0U6ICBUR190YWJsZV9uYW1lOiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitOT1RJ Q0U6ICBUR190YWJsZV9zY2hlbWE6IHB1YmxpYworTk9USUNFOiAgVEdfd2hlbjogQUZURVIK K05PVElDRTogIGFyZ3M6IHt9CiBpbnNlcnQgaW50byB0cmlnZ2VyX3Rlc3RfdmlldyB2YWx1 ZXMoMiwnaW5zZXJ0Jyk7CiBOT1RJQ0U6ICBORVc6IHtpOiAyLCB2OiBpbnNlcnR9CiBOT1RJ Q0U6ICBPTEQ6IHt9CkBAIC0zMTQsNiArMzgzLDggQEAgTk9USUNFOiAgVEdfdGFibGVfbmFt ZTogdHJpZ2dlcl90ZXN0CiBOT1RJQ0U6ICBUR190YWJsZV9zY2hlbWE6IHB1YmxpYwogTk9U SUNFOiAgVEdfd2hlbjogQkVGT1JFCiBOT1RJQ0U6ICBhcmdzOiB7NDIge3N0YXRlbWVudCB0 cmlnZ2VyfX0KK0RST1AgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2JlZm9yZSBP TiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworRFJPUCBUUklHR0VSIHNob3dfdHJpZ2dlcl9k YXRhX3RyaWdfYWZ0ZXIgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKIC0tIFRlc3QgY29t cG9zaXRlLXR5cGUgYXJndW1lbnRzCiBzZWxlY3QgdGNsX2NvbXBvc2l0ZV9hcmdfcmVmMShy b3coJ3RrZXknLCA0MiwgJ3JlZjInKSk7CiAgdGNsX2NvbXBvc2l0ZV9hcmdfcmVmMSAKQEAg LTc2MCwzICs4MzEsMjEgQEAgSU5GTzogIG9sZDogMSAtPiBhCiBJTkZPOiAgbmV3OiAxIC0+ IGIKIGRyb3AgdGFibGUgdHJhbnNpdGlvbl90YWJsZV90ZXN0OwogZHJvcCBmdW5jdGlvbiB0 cmFuc2l0aW9uX3RhYmxlX3Rlc3RfZigpOworLS0gZGVhbGluZyB3aXRoIGdlbmVyYXRlZCBj b2x1bW5zCitDUkVBVEUgRlVOQ1RJT04gZ2VuZXJhdGVkX3Rlc3RfZnVuYzEoKSBSRVRVUk5T IHRyaWdnZXIKK0xBTkdVQUdFIHBsdGNsCitBUyAkJAorIyBub3QgYWxsb3dlZAorc2V0IE5F VyhqKSA1CityZXR1cm4gW2FycmF5IGdldCBORVddCiskJDsKK0NSRUFURSBUUklHR0VSIGdl bmVyYXRlZF90ZXN0X3RyaWdnZXIxIEJFRk9SRSBJTlNFUlQgT04gdHJpZ2dlcl90ZXN0X2dl bmVyYXRlZAorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGdlbmVyYXRlZF90ZXN0 X2Z1bmMxKCk7CitUUlVOQ0FURSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworSU5TRVJUIElO VE8gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZCAoaSkgVkFMVUVTICgxKTsKK0VSUk9SOiAgY2Fu bm90IHNldCBnZW5lcmF0ZWQgY29sdW1uICJqIgorU0VMRUNUICogRlJPTSB0cmlnZ2VyX3Rl c3RfZ2VuZXJhdGVkOworIGkgfCBqIHwgayAKKy0tLSstLS0rLS0tCisoMCByb3dzKQorCmRp ZmYgLS1naXQgYS9zcmMvcGwvdGNsL2V4cGVjdGVkL3BsdGNsX3NldHVwLm91dCBiL3NyYy9w bC90Y2wvZXhwZWN0ZWQvcGx0Y2xfc2V0dXAub3V0CmluZGV4IGIxMGNmNGU0N2QuLjA2ZTk4 NWZiMTYgMTAwNjQ0Ci0tLSBhL3NyYy9wbC90Y2wvZXhwZWN0ZWQvcGx0Y2xfc2V0dXAub3V0 CisrKyBiL3NyYy9wbC90Y2wvZXhwZWN0ZWQvcGx0Y2xfc2V0dXAub3V0CkBAIC01OSw2ICs1 OSwxMSBAQCBDUkVBVEUgVEFCTEUgdHJpZ2dlcl90ZXN0ICgKICk7CiAtLSBNYWtlIGNlcnRh aW4gZHJvcHBlZCBhdHRyaWJ1dGVzIGFyZSBoYW5kbGVkIGNvcnJlY3RseQogQUxURVIgVEFC TEUgdHJpZ2dlcl90ZXN0IERST1AgZHJvcG1lOworQ1JFQVRFIFRBQkxFIHRyaWdnZXJfdGVz dF9nZW5lcmF0ZWQgKAorCWkgaW50LAorCWogaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkg KiAyKSBWSVJUVUFMLAorCWsgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKiAyKSBTVE9S RUQKKyk7CiBDUkVBVEUgVklFVyB0cmlnZ2VyX3Rlc3RfdmlldyBBUyBTRUxFQ1QgaSwgdiBG Uk9NIHRyaWdnZXJfdGVzdDsKIENSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2RhdGEoKSByZXR1 cm5zIHRyaWdnZXIgbGFuZ3VhZ2UgcGx0Y2wgYXMgJF8kCiAJaWYgeyRUR190YWJsZV9uYW1l IGVxICJ0cmlnZ2VyX3Rlc3QiICYmICRUR19sZXZlbCBlcSAiUk9XIiAmJiAkVEdfb3AgbmUg IkRFTEVURSJ9IHsKQEAgLTExMCw2ICsxMTUsMTIgQEAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUg UFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSgyMywnc2tpZG9vJyk7CiBDUkVBVEUgVFJJR0dFUiBz dGF0ZW1lbnRfdHJpZ2dlcgogQkVGT1JFIElOU0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIE9S IFRSVU5DQVRFIE9OIHRyaWdnZXJfdGVzdAogRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUg UFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSg0Miwnc3RhdGVtZW50IHRyaWdnZXInKTsKK0NSRUFU RSBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3RyaWdfYmVmb3JlCitCRUZPUkUgSU5TRVJU IE9SIFVQREFURSBPUiBERUxFVEUgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAorRk9SIEVB Q0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSgpOworQ1JFQVRFIFRSSUdH RVIgc2hvd190cmlnZ2VyX2RhdGFfdHJpZ19hZnRlcgorQUZURVIgSU5TRVJUIE9SIFVQREFU RSBPUiBERUxFVEUgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZAorRk9SIEVBQ0ggUk9XIEVY RUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0YSgpOwogQ1JFQVRFIFRSSUdHRVIgc2hvd190 cmlnZ2VyX2RhdGFfdmlld190cmlnCiBJTlNURUFEIE9GIElOU0VSVCBPUiBVUERBVEUgT1Ig REVMRVRFIE9OIHRyaWdnZXJfdGVzdF92aWV3CiBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9D RURVUkUgdHJpZ2dlcl9kYXRhKDI0LCdza2lkb28gdmlldycpOwpkaWZmIC0tZ2l0IGEvc3Jj L3BsL3RjbC9wbHRjbC5jIGIvc3JjL3BsL3RjbC9wbHRjbC5jCmluZGV4IDNiMTQ1NGY4MzMu LjVkNDRkNmQyMmUgMTAwNjQ0Ci0tLSBhL3NyYy9wbC90Y2wvcGx0Y2wuYworKysgYi9zcmMv cGwvdGNsL3BsdGNsLmMKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgdm9pZCBwbHRjbF9z dWJ0cmFuc19hYm9ydChUY2xfSW50ZXJwICppbnRlcnAsCiAKIHN0YXRpYyB2b2lkIHBsdGNs X3NldF90dXBsZV92YWx1ZXMoVGNsX0ludGVycCAqaW50ZXJwLCBjb25zdCBjaGFyICphcnJh eW5hbWUsCiAJCQkJCSAgIHVpbnQ2NCB0dXBubywgSGVhcFR1cGxlIHR1cGxlLCBUdXBsZURl c2MgdHVwZGVzYyk7Ci1zdGF0aWMgVGNsX09iaiAqcGx0Y2xfYnVpbGRfdHVwbGVfYXJndW1l bnQoSGVhcFR1cGxlIHR1cGxlLCBUdXBsZURlc2MgdHVwZGVzYyk7CitzdGF0aWMgVGNsX09i aiAqcGx0Y2xfYnVpbGRfdHVwbGVfYXJndW1lbnQoSGVhcFR1cGxlIHR1cGxlLCBUdXBsZURl c2MgdHVwZGVzYywgYm9vbCBpbmNsdWRlX2dlbmVyYXRlZCk7CiBzdGF0aWMgSGVhcFR1cGxl IHBsdGNsX2J1aWxkX3R1cGxlX3Jlc3VsdChUY2xfSW50ZXJwICppbnRlcnAsCiAJCQkJCQkg VGNsX09iaiAqKmt2T2JqdiwgaW50IGt2T2JqYywKIAkJCQkJCSBwbHRjbF9jYWxsX3N0YXRl ICpjYWxsX3N0YXRlKTsKQEAgLTg4OSw3ICs4ODksNyBAQCBwbHRjbF9mdW5jX2hhbmRsZXIo UEdfRlVOQ1RJT05fQVJHUywgcGx0Y2xfY2FsbF9zdGF0ZSAqY2FsbF9zdGF0ZSwKIAkJCQkJ dG1wdHVwLnRfbGVuID0gSGVhcFR1cGxlSGVhZGVyR2V0RGF0dW1MZW5ndGgodGQpOwogCQkJ CQl0bXB0dXAudF9kYXRhID0gdGQ7CiAKLQkJCQkJbGlzdF90bXAgPSBwbHRjbF9idWlsZF90 dXBsZV9hcmd1bWVudCgmdG1wdHVwLCB0dXBkZXNjKTsKKwkJCQkJbGlzdF90bXAgPSBwbHRj bF9idWlsZF90dXBsZV9hcmd1bWVudCgmdG1wdHVwLCB0dXBkZXNjLCB0cnVlKTsKIAkJCQkJ VGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50KE5VTEwsIHRjbF9jbWQsIGxpc3RfdG1wKTsKIAog CQkJCQlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MpOwpAQCAtMTA2MCw3ICsxMDYwLDYgQEAg cGx0Y2xfdHJpZ2dlcl9oYW5kbGVyKFBHX0ZVTkNUSU9OX0FSR1MsIHBsdGNsX2NhbGxfc3Rh dGUgKmNhbGxfc3RhdGUsCiAJdm9sYXRpbGUgSGVhcFR1cGxlIHJldHR1cDsKIAlUY2xfT2Jq ICAgICp0Y2xfY21kOwogCVRjbF9PYmogICAgKnRjbF90cmlndHVwOwotCVRjbF9PYmogICAg KnRjbF9uZXd0dXA7CiAJaW50CQkJdGNsX3JjOwogCWludAkJCWk7CiAJY29uc3QgY2hhciAq cmVzdWx0OwpAQCAtMTE2MiwyMCArMTE2MSwyMiBAQCBwbHRjbF90cmlnZ2VyX2hhbmRsZXIo UEdfRlVOQ1RJT05fQVJHUywgcGx0Y2xfY2FsbF9zdGF0ZSAqY2FsbF9zdGF0ZSwKIAkJCVRj bF9MaXN0T2JqQXBwZW5kRWxlbWVudChOVUxMLCB0Y2xfY21kLAogCQkJCQkJCQkJIFRjbF9O ZXdTdHJpbmdPYmooIlJPVyIsIC0xKSk7CiAKLQkJCS8qIEJ1aWxkIHRoZSBkYXRhIGxpc3Qg Zm9yIHRoZSB0cmlndHVwbGUgKi8KLQkJCXRjbF90cmlndHVwID0gcGx0Y2xfYnVpbGRfdHVw bGVfYXJndW1lbnQodHJpZ2RhdGEtPnRnX3RyaWd0dXBsZSwKLQkJCQkJCQkJCQkJCQkgdHVw ZGVzYyk7Ci0KIAkJCS8qCiAJCQkgKiBOb3cgdGhlIGNvbW1hbmQgcGFydCBvZiB0aGUgZXZl bnQgZm9yIFRHX29wIGFuZCBkYXRhIGZvciBORVcKIAkJCSAqIGFuZCBPTEQKKwkJCSAqCisJ CQkgKiBOb3RlOiBJbiBCRUZPUkUgdHJpZ2dlciwgc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5z IGFyZSBub3QgY29tcHV0ZWQgeWV0LAorCQkJICogc28gZG9uJ3QgbWFrZSB0aGVtIGFjY2Vz c2libGUgaW4gTkVXIHJvdy4KIAkJCSAqLwogCQkJaWYgKFRSSUdHRVJfRklSRURfQllfSU5T RVJUKHRyaWdkYXRhLT50Z19ldmVudCkpCiAJCQl7CiAJCQkJVGNsX0xpc3RPYmpBcHBlbmRF bGVtZW50KE5VTEwsIHRjbF9jbWQsCiAJCQkJCQkJCQkJIFRjbF9OZXdTdHJpbmdPYmooIklO U0VSVCIsIC0xKSk7CiAKLQkJCQlUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQoTlVMTCwgdGNs X2NtZCwgdGNsX3RyaWd0dXApOworCQkJCVRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudChOVUxM LCB0Y2xfY21kLAorCQkJCQkJCQkJCSBwbHRjbF9idWlsZF90dXBsZV9hcmd1bWVudCh0cmln ZGF0YS0+dGdfdHJpZ3R1cGxlLAorCQkJCQkJCQkJCQkJCQkJCQl0dXBkZXNjLAorCQkJCQkJ CQkJCQkJCQkJCQkhVFJJR0dFUl9GSVJFRF9CRUZPUkUodHJpZ2RhdGEtPnRnX2V2ZW50KSkp OwogCQkJCVRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudChOVUxMLCB0Y2xfY21kLCBUY2xfTmV3 T2JqKCkpOwogCiAJCQkJcmV0dHVwID0gdHJpZ2RhdGEtPnRnX3RyaWd0dXBsZTsKQEAgLTEx ODYsNyArMTE4NywxMCBAQCBwbHRjbF90cmlnZ2VyX2hhbmRsZXIoUEdfRlVOQ1RJT05fQVJH UywgcGx0Y2xfY2FsbF9zdGF0ZSAqY2FsbF9zdGF0ZSwKIAkJCQkJCQkJCQkgVGNsX05ld1N0 cmluZ09iaigiREVMRVRFIiwgLTEpKTsKIAogCQkJCVRjbF9MaXN0T2JqQXBwZW5kRWxlbWVu dChOVUxMLCB0Y2xfY21kLCBUY2xfTmV3T2JqKCkpOwotCQkJCVRjbF9MaXN0T2JqQXBwZW5k RWxlbWVudChOVUxMLCB0Y2xfY21kLCB0Y2xfdHJpZ3R1cCk7CisJCQkJVGNsX0xpc3RPYmpB cHBlbmRFbGVtZW50KE5VTEwsIHRjbF9jbWQsCisJCQkJCQkJCQkJIHBsdGNsX2J1aWxkX3R1 cGxlX2FyZ3VtZW50KHRyaWdkYXRhLT50Z190cmlndHVwbGUsCisJCQkJCQkJCQkJCQkJCQkJ CXR1cGRlc2MsCisJCQkJCQkJCQkJCQkJCQkJCXRydWUpKTsKIAogCQkJCXJldHR1cCA9IHRy aWdkYXRhLT50Z190cmlndHVwbGU7CiAJCQl9CkBAIC0xMTk1LDExICsxMTk5LDE0IEBAIHBs dGNsX3RyaWdnZXJfaGFuZGxlcihQR19GVU5DVElPTl9BUkdTLCBwbHRjbF9jYWxsX3N0YXRl ICpjYWxsX3N0YXRlLAogCQkJCVRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudChOVUxMLCB0Y2xf Y21kLAogCQkJCQkJCQkJCSBUY2xfTmV3U3RyaW5nT2JqKCJVUERBVEUiLCAtMSkpOwogCi0J CQkJdGNsX25ld3R1cCA9IHBsdGNsX2J1aWxkX3R1cGxlX2FyZ3VtZW50KHRyaWdkYXRhLT50 Z19uZXd0dXBsZSwKLQkJCQkJCQkJCQkJCQkJdHVwZGVzYyk7Ci0KLQkJCQlUY2xfTGlzdE9i akFwcGVuZEVsZW1lbnQoTlVMTCwgdGNsX2NtZCwgdGNsX25ld3R1cCk7Ci0JCQkJVGNsX0xp c3RPYmpBcHBlbmRFbGVtZW50KE5VTEwsIHRjbF9jbWQsIHRjbF90cmlndHVwKTsKKwkJCQlU Y2xfTGlzdE9iakFwcGVuZEVsZW1lbnQoTlVMTCwgdGNsX2NtZCwKKwkJCQkJCQkJCQkgcGx0 Y2xfYnVpbGRfdHVwbGVfYXJndW1lbnQodHJpZ2RhdGEtPnRnX25ld3R1cGxlLAorCQkJCQkJ CQkJCQkJCQkJCQl0dXBkZXNjLAorCQkJCQkJCQkJCQkJCQkJCQkhVFJJR0dFUl9GSVJFRF9C RUZPUkUodHJpZ2RhdGEtPnRnX2V2ZW50KSkpOworCQkJCVRjbF9MaXN0T2JqQXBwZW5kRWxl bWVudChOVUxMLCB0Y2xfY21kLAorCQkJCQkJCQkJCSBwbHRjbF9idWlsZF90dXBsZV9hcmd1 bWVudCh0cmlnZGF0YS0+dGdfdHJpZ3R1cGxlLAorCQkJCQkJCQkJCQkJCQkJCQl0dXBkZXNj LAorCQkJCQkJCQkJCQkJCQkJCQl0cnVlKSk7CiAKIAkJCQlyZXR0dXAgPSB0cmlnZGF0YS0+ dGdfbmV3dHVwbGU7CiAJCQl9CkBAIC0zMDkxLDcgKzMwOTgsNyBAQCBwbHRjbF9zZXRfdHVw bGVfdmFsdWVzKFRjbF9JbnRlcnAgKmludGVycCwgY29uc3QgY2hhciAqYXJyYXluYW1lLAog ICoJCQkJICBmcm9tIGFsbCBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gdHVwbGUKICAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwogc3RhdGljIFRjbF9PYmogKgotcGx0Y2xfYnVpbGRfdHVwbGVfYXJndW1l bnQoSGVhcFR1cGxlIHR1cGxlLCBUdXBsZURlc2MgdHVwZGVzYykKK3BsdGNsX2J1aWxkX3R1 cGxlX2FyZ3VtZW50KEhlYXBUdXBsZSB0dXBsZSwgVHVwbGVEZXNjIHR1cGRlc2MsIGJvb2wg aW5jbHVkZV9nZW5lcmF0ZWQpCiB7CiAJVGNsX09iaiAgICAqcmV0b2JqID0gVGNsX05ld09i aigpOwogCWludAkJCWk7CkBAIC0zMTEwLDYgKzMxMTcsMTYgQEAgcGx0Y2xfYnVpbGRfdHVw bGVfYXJndW1lbnQoSGVhcFR1cGxlIHR1cGxlLCBUdXBsZURlc2MgdHVwZGVzYykKIAkJaWYg KGF0dC0+YXR0aXNkcm9wcGVkKQogCQkJY29udGludWU7CiAKKwkJaWYgKGF0dC0+YXR0Z2Vu ZXJhdGVkKQorCQl7CisJCQkvKiBkb24ndCBpbmNsdWRlIHVubGVzcyByZXF1ZXN0ZWQgKi8K KwkJCWlmICghaW5jbHVkZV9nZW5lcmF0ZWQpCisJCQkJY29udGludWU7CisJCQkvKiBuZXZl ciBpbmNsdWRlIHZpcnR1YWwgY29sdW1ucyAqLworCQkJaWYgKGF0dC0+YXR0Z2VuZXJhdGVk ID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJCQljb250aW51ZTsKKwkJfQor CiAJCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKIAkJICogR2V0IHRoZSBhdHRyaWJ1dGUgbmFtZQogCQkgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpA QCAtMzIxOSw2ICszMjM2LDEyIEBAIHBsdGNsX2J1aWxkX3R1cGxlX3Jlc3VsdChUY2xfSW50 ZXJwICppbnRlcnAsIFRjbF9PYmogKiprdk9ianYsIGludCBrdk9iamMsCiAJCQkJCSBlcnJt c2coImNhbm5vdCBzZXQgc3lzdGVtIGF0dHJpYnV0ZSBcIiVzXCIiLAogCQkJCQkJCWZpZWxk TmFtZSkpKTsKIAorCQlpZiAoVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRuIC0gMSktPmF0 dGdlbmVyYXRlZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf RV9SX0lfRV9UUklHR0VSX1BST1RPQ09MX1ZJT0xBVEVEKSwKKwkJCQkJIGVycm1zZygiY2Fu bm90IHNldCBnZW5lcmF0ZWQgY29sdW1uIFwiJXNcIiIsCisJCQkJCQkJZmllbGROYW1lKSkp OworCiAJCXZhbHVlc1thdHRuIC0gMV0gPSB1dGZfdTJlKFRjbF9HZXRTdHJpbmcoa3ZPYmp2 W2kgKyAxXSkpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL3BsL3RjbC9zcWwvcGx0Y2xfcXVl cmllcy5zcWwgYi9zcmMvcGwvdGNsL3NxbC9wbHRjbF9xdWVyaWVzLnNxbAppbmRleCA3Mzkw ZGU2YmQ2Li5lOTc3ZTExYTc2IDEwMDY0NAotLS0gYS9zcmMvcGwvdGNsL3NxbC9wbHRjbF9x dWVyaWVzLnNxbAorKysgYi9zcmMvcGwvdGNsL3NxbC9wbHRjbF9xdWVyaWVzLnNxbApAQCAt NzYsNiArNzYsMTAgQEAKIC0tIHNob3cgZHVtcCBvZiB0cmlnZ2VyIGRhdGEKIGluc2VydCBp bnRvIHRyaWdnZXJfdGVzdCB2YWx1ZXMoMSwnaW5zZXJ0Jyk7CiAKK2luc2VydCBpbnRvIHRy aWdnZXJfdGVzdF9nZW5lcmF0ZWQgKGkpIHZhbHVlcyAoMSk7Cit1cGRhdGUgdHJpZ2dlcl90 ZXN0X2dlbmVyYXRlZCBzZXQgaSA9IDExIHdoZXJlIGkgPSAxOworZGVsZXRlIGZyb20gdHJp Z2dlcl90ZXN0X2dlbmVyYXRlZDsKKwogaW5zZXJ0IGludG8gdHJpZ2dlcl90ZXN0X3ZpZXcg dmFsdWVzKDIsJ2luc2VydCcpOwogdXBkYXRlIHRyaWdnZXJfdGVzdF92aWV3IHNldCB2ID0g J3VwZGF0ZScgd2hlcmUgaT0xOwogZGVsZXRlIGZyb20gdHJpZ2dlcl90ZXN0X3ZpZXc7CkBA IC04NSw2ICs4OSw5IEBACiBkZWxldGUgZnJvbSB0cmlnZ2VyX3Rlc3Q7CiB0cnVuY2F0ZSB0 cmlnZ2VyX3Rlc3Q7CiAKK0RST1AgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0YV90cmlnX2Jl Zm9yZSBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOworRFJPUCBUUklHR0VSIHNob3dfdHJp Z2dlcl9kYXRhX3RyaWdfYWZ0ZXIgT04gdHJpZ2dlcl90ZXN0X2dlbmVyYXRlZDsKKwogLS0g VGVzdCBjb21wb3NpdGUtdHlwZSBhcmd1bWVudHMKIHNlbGVjdCB0Y2xfY29tcG9zaXRlX2Fy Z19yZWYxKHJvdygndGtleScsIDQyLCAncmVmMicpKTsKIHNlbGVjdCB0Y2xfY29tcG9zaXRl X2FyZ19yZWYyKHJvdygndGtleScsIDQyLCAncmVmMicpKTsKQEAgLTI3MywzICsyODAsMjEg QEAgQ1JFQVRFIFRSSUdHRVIgYV90IEFGVEVSIFVQREFURSBPTiB0cmFuc2l0aW9uX3RhYmxl X3Rlc3QKIHVwZGF0ZSB0cmFuc2l0aW9uX3RhYmxlX3Rlc3Qgc2V0IG5hbWUgPSAnYic7CiBk cm9wIHRhYmxlIHRyYW5zaXRpb25fdGFibGVfdGVzdDsKIGRyb3AgZnVuY3Rpb24gdHJhbnNp dGlvbl90YWJsZV90ZXN0X2YoKTsKKworCistLSBkZWFsaW5nIHdpdGggZ2VuZXJhdGVkIGNv bHVtbnMKKworQ1JFQVRFIEZVTkNUSU9OIGdlbmVyYXRlZF90ZXN0X2Z1bmMxKCkgUkVUVVJO UyB0cmlnZ2VyCitMQU5HVUFHRSBwbHRjbAorQVMgJCQKKyMgbm90IGFsbG93ZWQKK3NldCBO RVcoaikgNQorcmV0dXJuIFthcnJheSBnZXQgTkVXXQorJCQ7CisKK0NSRUFURSBUUklHR0VS IGdlbmVyYXRlZF90ZXN0X3RyaWdnZXIxIEJFRk9SRSBJTlNFUlQgT04gdHJpZ2dlcl90ZXN0 X2dlbmVyYXRlZAorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGdlbmVyYXRlZF90 ZXN0X2Z1bmMxKCk7CisKK1RSVU5DQVRFIHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQ7CitJTlNF UlQgSU5UTyB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkIChpKSBWQUxVRVMgKDEpOworU0VMRUNU ICogRlJPTSB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkOwpkaWZmIC0tZ2l0IGEvc3JjL3BsL3Rj bC9zcWwvcGx0Y2xfc2V0dXAuc3FsIGIvc3JjL3BsL3RjbC9zcWwvcGx0Y2xfc2V0dXAuc3Fs CmluZGV4IDBlYTQ2MTM0YzcuLjYzNDQ0NDdiNDcgMTAwNjQ0Ci0tLSBhL3NyYy9wbC90Y2wv c3FsL3BsdGNsX3NldHVwLnNxbAorKysgYi9zcmMvcGwvdGNsL3NxbC9wbHRjbF9zZXR1cC5z cWwKQEAgLTY4LDYgKzY4LDEyIEBAIENSRUFURSBUQUJMRSB0cmlnZ2VyX3Rlc3QgKAogLS0g TWFrZSBjZXJ0YWluIGRyb3BwZWQgYXR0cmlidXRlcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkK IEFMVEVSIFRBQkxFIHRyaWdnZXJfdGVzdCBEUk9QIGRyb3BtZTsKIAorQ1JFQVRFIFRBQkxF IHRyaWdnZXJfdGVzdF9nZW5lcmF0ZWQgKAorCWkgaW50LAorCWogaW50IEdFTkVSQVRFRCBB TFdBWVMgQVMgKGkgKiAyKSBWSVJUVUFMLAorCWsgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMg KGkgKiAyKSBTVE9SRUQKKyk7CisKIENSRUFURSBWSUVXIHRyaWdnZXJfdGVzdF92aWV3IEFT IFNFTEVDVCBpLCB2IEZST00gdHJpZ2dlcl90ZXN0OwogCiBDUkVBVEUgRlVOQ1RJT04gdHJp Z2dlcl9kYXRhKCkgcmV0dXJucyB0cmlnZ2VyIGxhbmd1YWdlIHBsdGNsIGFzICRfJApAQCAt MTIyLDYgKzEyOCwxMyBAQCBDUkVBVEUgVFJJR0dFUiBzdGF0ZW1lbnRfdHJpZ2dlcgogQkVG T1JFIElOU0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIE9SIFRSVU5DQVRFIE9OIHRyaWdnZXJf dGVzdAogRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0 YSg0Miwnc3RhdGVtZW50IHRyaWdnZXInKTsKIAorQ1JFQVRFIFRSSUdHRVIgc2hvd190cmln Z2VyX2RhdGFfdHJpZ19iZWZvcmUKK0JFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVU RSBPTiB0cmlnZ2VyX3Rlc3RfZ2VuZXJhdGVkCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9D RURVUkUgdHJpZ2dlcl9kYXRhKCk7CitDUkVBVEUgVFJJR0dFUiBzaG93X3RyaWdnZXJfZGF0 YV90cmlnX2FmdGVyCitBRlRFUiBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiB0cmln Z2VyX3Rlc3RfZ2VuZXJhdGVkCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJp Z2dlcl9kYXRhKCk7CisKIENSRUFURSBUUklHR0VSIHNob3dfdHJpZ2dlcl9kYXRhX3ZpZXdf dHJpZwogSU5TVEVBRCBPRiBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiB0cmlnZ2Vy X3Rlc3RfdmlldwogRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZGF0 YSgyNCwnc2tpZG9vIHZpZXcnKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY3JlYXRlX3RhYmxlX2xpa2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQKaW5kZXggYjU4MjIxMTI3MC4uZGY1YzM2OTVlZCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlr ZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlr ZS5vdXQKQEAgLTExMyw2ICsxMTMsNTIgQEAgU0VMRUNUICogRlJPTSB0ZXN0X2xpa2VfaWRf MzsgIC0tIGlkZW50aXR5IHdhcyBjb3BpZWQgYW5kIGFwcGxpZWQKICgxIHJvdykKIAogRFJP UCBUQUJMRSB0ZXN0X2xpa2VfaWRfMSwgdGVzdF9saWtlX2lkXzIsIHRlc3RfbGlrZV9pZF8z OworQ1JFQVRFIFRBQkxFIHRlc3RfbGlrZV9nZW5fMSAoYSBpbnQsIGIgaW50IEdFTkVSQVRF RCBBTFdBWVMgQVMgKGEgKiAyKSk7CitcZCB0ZXN0X2xpa2VfZ2VuXzEKKyAgICAgICAgICAg ICAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0X2xpa2VfZ2VuXzEiCisgQ29sdW1uIHwgIFR5 cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgIERlZmF1bHQgICAgICAg ICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAg ICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzIChhICogMikKKworSU5TRVJUIElOVE8gdGVzdF9s aWtlX2dlbl8xIChhKSBWQUxVRVMgKDEpOworU0VMRUNUICogRlJPTSB0ZXN0X2xpa2VfZ2Vu XzE7CisgYSB8IGIgCistLS0rLS0tCisgMSB8IDIKKygxIHJvdykKKworQ1JFQVRFIFRBQkxF IHRlc3RfbGlrZV9nZW5fMiAoTElLRSB0ZXN0X2xpa2VfZ2VuXzEpOworXGQgdGVzdF9saWtl X2dlbl8yCisgICAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0X2xpa2VfZ2VuXzIiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGIgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorCitJTlNFUlQgSU5UTyB0ZXN0X2xpa2Vf Z2VuXzIgKGEpIFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfbGlrZV9nZW5fMjsK KyBhIHwgYiAKKy0tLSstLS0KKyAxIHwgIAorKDEgcm93KQorCitDUkVBVEUgVEFCTEUgdGVz dF9saWtlX2dlbl8zIChMSUtFIHRlc3RfbGlrZV9nZW5fMSBJTkNMVURJTkcgR0VORVJBVEVE KTsKK1xkIHRlc3RfbGlrZV9nZW5fMworICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVi bGljLnRlc3RfbGlrZV9nZW5fMyIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGIg ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdh eXMgYXMgKGEgKiAyKQorCitJTlNFUlQgSU5UTyB0ZXN0X2xpa2VfZ2VuXzMgKGEpIFZBTFVF UyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfbGlrZV9nZW5fMzsKKyBhIHwgYiAKKy0tLSst LS0KKyAxIHwgMgorKDEgcm93KQorCitEUk9QIFRBQkxFIHRlc3RfbGlrZV9nZW5fMSwgdGVz dF9saWtlX2dlbl8yLCB0ZXN0X2xpa2VfZ2VuXzM7CiBDUkVBVEUgVEFCTEUgaW5oZyAoeCB0 ZXh0LCBMSUtFIGluaHggSU5DTFVESU5HIElOREVYRVMsIHkgdGV4dCk7IC8qIGNvcGllcyBp bmRleGVzICovCiBJTlNFUlQgSU5UTyBpbmhnIFZBTFVFUyAoNSwgMTApOwogSU5TRVJUIElO VE8gaW5oZyBWQUxVRVMgKDIwLCAxMCk7IC0tIHNob3VsZCBmYWlsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZC5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2dlbmVyYXRlZC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uNjUyN2NlMzAzNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkLm91dApAQCAtMCwwICsxLDgzNiBAQAorLS0gc2Fu aXR5IGNoZWNrIG9mIHN5c3RlbSBjYXRhbG9nCitTRUxFQ1QgYXR0cmVsaWQsIGF0dG5hbWUs IGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRnZW5lcmF0ZWQgTk9U IElOICgnJywgJ3MnLCAndicpOworIGF0dHJlbGlkIHwgYXR0bmFtZSB8IGF0dGdlbmVyYXRl ZCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisoMCByb3dzKQorCitD UkVBVEUgVEFCTEUgZ3Rlc3QwIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVE IEFMV0FZUyBBUyAoNTUpKTsKK0NSRUFURSBUQUJMRSBndGVzdDEgKGEgaW50IFBSSU1BUlkg S0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikpOworU0VMRUNUIHRhYmxl X25hbWUsIGNvbHVtbl9uYW1lLCBjb2x1bW5fZGVmYXVsdCwgaXNfbnVsbGFibGUsIGlzX2dl bmVyYXRlZCwgZ2VuZXJhdGlvbl9leHByZXNzaW9uIEZST00gaW5mb3JtYXRpb25fc2NoZW1h LmNvbHVtbnMgV0hFUkUgdGFibGVfbmFtZSBMSUtFICdndGVzdF8nIE9SREVSIEJZIDEsIDI7 CisgdGFibGVfbmFtZSB8IGNvbHVtbl9uYW1lIHwgY29sdW1uX2RlZmF1bHQgfCBpc19udWxs YWJsZSB8IGlzX2dlbmVyYXRlZCB8IGdlbmVyYXRpb25fZXhwcmVzc2lvbiAKKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGd0ZXN0MCAgICAgfCBhICAg ICAgICAgICB8ICAgICAgICAgICAgICAgIHwgTk8gICAgICAgICAgfCBORVZFUiAgICAgICAg fCAKKyBndGVzdDAgICAgIHwgYiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFlFUyAg ICAgICAgIHwgQUxXQVlTICAgICAgIHwgNTUKKyBndGVzdDEgICAgIHwgYSAgICAgICAgICAg fCAgICAgICAgICAgICAgICB8IE5PICAgICAgICAgIHwgTkVWRVIgICAgICAgIHwgCisgZ3Rl c3QxICAgICB8IGIgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBZRVMgICAgICAgICB8 IEFMV0FZUyAgICAgICB8IChhICogMikKKyg0IHJvd3MpCisKK1NFTEVDVCB0YWJsZV9uYW1l LCBjb2x1bW5fbmFtZSwgZGVwZW5kZW50X2NvbHVtbiBGUk9NIGluZm9ybWF0aW9uX3NjaGVt YS5jb2x1bW5fY29sdW1uX3VzYWdlIE9SREVSIEJZIDEsIDIsIDM7CisgdGFibGVfbmFtZSB8 IGNvbHVtbl9uYW1lIHwgZGVwZW5kZW50X2NvbHVtbiAKKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIGd0ZXN0MSAgICAgfCBhICAgICAgICAgICB8 IGIKKygxIHJvdykKKworXGQgZ3Rlc3QxCisgICAgICAgICAgICAgICAgICAgICAgICAgVGFi bGUgInB1YmxpYy5ndGVzdDEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBiICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlz IGFzIChhICogMikKK0luZGV4ZXM6CisgICAgImd0ZXN0MV9wa2V5IiBQUklNQVJZIEtFWSwg YnRyZWUgKGEpCisKKy0tIGR1cGxpY2F0ZSBnZW5lcmF0ZWQKK0NSRUFURSBUQUJMRSBndGVz dF9lcnJfMSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMg KGEgKiAyKSBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMykpOworRVJST1I6ICBtdWx0aXBs ZSBnZW5lcmF0aW9uIGNsYXVzZXMgc3BlY2lmaWVkIGZvciBjb2x1bW4gImIiIG9mIHRhYmxl ICJndGVzdF9lcnJfMSIKK0xJTkUgMTogLi4ubnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVS QVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBHRU5FUkFURUQgLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gcmVm ZXJlbmNlcyB0byBvdGhlciBnZW5lcmF0ZWQgY29sdW1ucywgaW5jbHVkaW5nIHNlbGYtcmVm ZXJlbmNlcworQ1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl8yYSAoYSBpbnQgUFJJTUFSWSBLRVks IGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIgKiAyKSk7CitFUlJPUjogIGNhbm5vdCB1 c2UgZ2VuZXJhdGVkIGNvbHVtbiAiYiIgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lv bgorTElORSAxOiAuLi5yXzJhIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVE IEFMV0FZUyBBUyAoYiAqIDIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEEgZ2VuZXJhdGVk IGNvbHVtbiBjYW5ub3QgcmVmZXJlbmNlIGFub3RoZXIgZ2VuZXJhdGVkIGNvbHVtbi4KK0NS RUFURSBUQUJMRSBndGVzdF9lcnJfMmIgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChhICogMiksIGMgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIg KiAzKSk7CitFUlJPUjogIGNhbm5vdCB1c2UgZ2VuZXJhdGVkIGNvbHVtbiAiYiIgaW4gY29s dW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbgorTElORSAxOiAuLi5SQVRFRCBBTFdBWVMgQVMg KGEgKiAyKSwgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYiAqIDMpKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KK0RFVEFJTDogIEEgZ2VuZXJhdGVkIGNvbHVtbiBjYW5ub3QgcmVmZXJlbmNlIGFub3Ro ZXIgZ2VuZXJhdGVkIGNvbHVtbi4KKy0tIGludmFsaWQgcmVmZXJlbmNlCitDUkVBVEUgVEFC TEUgZ3Rlc3RfZXJyXzMgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxX QVlTIEFTIChjICogMikpOworRVJST1I6ICBjb2x1bW4gImMiIGRvZXMgbm90IGV4aXN0CitM SU5FIDE6IC4uLnJyXzMgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxX QVlTIEFTIChjICogMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZnVuY3Rpb25zIG11c3QgYmUgaW1t dXRhYmxlCitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzQgKGEgaW50IFBSSU1BUlkgS0VZLCBi IGRvdWJsZSBwcmVjaXNpb24gR0VORVJBVEVEIEFMV0FZUyBBUyAocmFuZG9tKCkpKTsKK0VS Uk9SOiAgY2Fubm90IHVzZSBmdW5jdGlvbiByYW5kb20oKSBpbiBjb2x1bW4gZ2VuZXJhdGlv biBleHByZXNzaW9uCitMSU5FIDE6IC4uLk1BUlkgS0VZLCBiIGRvdWJsZSBwcmVjaXNpb24g R0VORVJBVEVEIEFMV0FZUyBBUyAocmFuZG9tKCkpKS4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDog IEZ1bmN0aW9ucyB1c2VkIGluIGEgY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBtdXN0 IGJlIGltbXV0YWJsZS4KKy0tIGNhbm5vdCBoYXZlIGRlZmF1bHQvaWRlbnRpdHkgYW5kIGdl bmVyYXRlZAorQ1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl81YSAoYSBpbnQgUFJJTUFSWSBLRVks IGIgaW50IERFRkFVTFQgNSBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikpOworRVJST1I6 ICBib3RoIGRlZmF1bHQgYW5kIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBzcGVjaWZpZWQgZm9y IGNvbHVtbiAiYiIgb2YgdGFibGUgImd0ZXN0X2Vycl81YSIKK0xJTkUgMTogLi4uIGd0ZXN0 X2Vycl81YSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IERFRkFVTFQgNSBHRU5FUkFURUQg Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorQ1JFQVRFIFRBQkxFIGd0ZXN0X2Vycl81YiAoYSBpbnQgUFJJTUFS WSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgaWRlbnRpdHkgR0VORVJBVEVEIEFM V0FZUyBBUyAoYSAqIDIpKTsKK0VSUk9SOiAgYm90aCBpZGVudGl0eSBhbmQgZ2VuZXJhdGlv biBleHByZXNzaW9uIHNwZWNpZmllZCBmb3IgY29sdW1uICJiIiBvZiB0YWJsZSAiZ3Rlc3Rf ZXJyXzViIgorTElORSAxOiAuLi50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxX QVlTIEFTIGlkZW50aXR5IEdFTkVSQVRFRCAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSByZWZlcmVuY2Ug dG8gc3lzdGVtIGNvbHVtbiBub3QgYWxsb3dlZCBpbiBnZW5lcmF0ZWQgY29sdW1uCitDUkVB VEUgVEFCTEUgZ3Rlc3RfZXJyXzZhIChhIGludCBQUklNQVJZIEtFWSwgYiBib29sIEdFTkVS QVRFRCBBTFdBWVMgQVMgKHhtaW4gPD4gMzcpIFNUT1JFRCk7CitFUlJPUjogIGNhbm5vdCB1 c2Ugc3lzdGVtIGNvbHVtbiAieG1pbiIgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lv bgorTElORSAxOiAuLi5hIChhIGludCBQUklNQVJZIEtFWSwgYiBib29sIEdFTkVSQVRFRCBB TFdBWVMgQVMgKHhtaW4gPD4gMzcuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitDUkVBVEUgVEFCTEUgZ3Rlc3Rf ZXJyXzZiIChhIGludCBQUklNQVJZIEtFWSwgYiBib29sIEdFTkVSQVRFRCBBTFdBWVMgQVMg KHhtaW4gPD4gMzcpIFZJUlRVQUwpOworRVJST1I6ICBjYW5ub3QgdXNlIHN5c3RlbSBjb2x1 bW4gInhtaW4iIGluIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb24KK0xJTkUgMTogLi4u YiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgYm9vbCBHRU5FUkFURUQgQUxXQVlTIEFTICh4bWlu IDw+IDM3Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorSU5TRVJUIElOVE8gZ3Rlc3QxIFZBTFVFUyAoMSk7CitJ TlNFUlQgSU5UTyBndGVzdDEgVkFMVUVTICgyLCBERUZBVUxUKTsKK0lOU0VSVCBJTlRPIGd0 ZXN0MSBWQUxVRVMgKDMsIDMzKTsgIC0tIGVycm9yCitFUlJPUjogIGNhbm5vdCBpbnNlcnQg aW50byBjb2x1bW4gImIiCitERVRBSUw6ICBDb2x1bW4gImIiIGlzIGEgZ2VuZXJhdGVkIGNv bHVtbi4KK1NFTEVDVCAqIEZST00gZ3Rlc3QxIE9SREVSIEJZIGE7CisgYSB8IGIgCistLS0r LS0tCisgMSB8IDIKKyAyIHwgNAorKDIgcm93cykKKworVVBEQVRFIGd0ZXN0MSBTRVQgYiA9 IERFRkFVTFQgV0hFUkUgYSA9IDE7CitVUERBVEUgZ3Rlc3QxIFNFVCBiID0gMTEgV0hFUkUg YSA9IDE7ICAtLSBlcnJvcgorRVJST1I6ICBjb2x1bW4gImIiIGNhbiBvbmx5IGJlIHVwZGF0 ZWQgdG8gREVGQVVMVAorREVUQUlMOiAgQ29sdW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1 bW4uCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOworIGEgfCBiIAorLS0tKy0t LQorIDEgfCAyCisgMiB8IDQKKygyIHJvd3MpCisKK1NFTEVDVCBhLCBiLCBiICogMiBBUyBi MiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOworIGEgfCBiIHwgYjIgCistLS0rLS0tKy0tLS0K KyAxIHwgMiB8ICA0CisgMiB8IDQgfCAgOAorKDIgcm93cykKKworU0VMRUNUIGEsIGIgRlJP TSBndGVzdDEgV0hFUkUgYiA9IDQgT1JERVIgQlkgYTsKKyBhIHwgYiAKKy0tLSstLS0KKyAy IHwgNAorKDEgcm93KQorCistLSB0ZXN0IHRoYXQgb3ZlcmZsb3cgZXJyb3IgaGFwcGVucyBv biByZWFkCitJTlNFUlQgSU5UTyBndGVzdDEgVkFMVUVTICgyMDAwMDAwMDAwKTsKK1NFTEVD VCAqIEZST00gZ3Rlc3QxOworRVJST1I6ICBpbnRlZ2VyIG91dCBvZiByYW5nZQorREVMRVRF IEZST00gZ3Rlc3QxIFdIRVJFIGEgPSAyMDAwMDAwMDAwOworLS0gdGVzdCB3aXRoIGpvaW5z CitDUkVBVEUgVEFCTEUgZ3Rlc3R4ICh4IGludCwgeSBpbnQpOworSU5TRVJUIElOVE8gZ3Rl c3R4IFZBTFVFUyAoMTEsIDEpLCAoMjIsIDIpLCAoMzMsIDMpOworU0VMRUNUICogRlJPTSBn dGVzdHgsIGd0ZXN0MSBXSEVSRSBndGVzdHgueSA9IGd0ZXN0MS5hOworIHggIHwgeSB8IGEg fCBiIAorLS0tLSstLS0rLS0tKy0tLQorIDExIHwgMSB8IDEgfCAyCisgMjIgfCAyIHwgMiB8 IDQKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgZ3Rlc3R4OworLS0gdGVzdCBVUERBVEUvREVM RVRFIHF1YWxzCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOworIGEgfCBiIAor LS0tKy0tLQorIDEgfCAyCisgMiB8IDQKKygyIHJvd3MpCisKK1VQREFURSBndGVzdDEgU0VU IGEgPSAzIFdIRVJFIGIgPSA0OworU0VMRUNUICogRlJPTSBndGVzdDEgT1JERVIgQlkgYTsK KyBhIHwgYiAKKy0tLSstLS0KKyAxIHwgMgorIDMgfCA2CisoMiByb3dzKQorCitERUxFVEUg RlJPTSBndGVzdDEgV0hFUkUgYiA9IDI7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MSBPUkRFUiBC WSBhOworIGEgfCBiIAorLS0tKy0tLQorIDMgfCA2CisoMSByb3cpCisKKy0tIHZpZXdzCitD UkVBVEUgVklFVyBndGVzdDF2IEFTIFNFTEVDVCAqIEZST00gZ3Rlc3QxOworU0VMRUNUICog RlJPTSBndGVzdDF2OworIGEgfCBiIAorLS0tKy0tLQorIDMgfCA2CisoMSByb3cpCisKK0lO U0VSVCBJTlRPIGd0ZXN0MXYgVkFMVUVTICg0LCA4KTsgIC0tIGZhaWxzCitFUlJPUjogIGNh bm5vdCBpbnNlcnQgaW50byBjb2x1bW4gImIiCitERVRBSUw6ICBDb2x1bW4gImIiIGlzIGEg Z2VuZXJhdGVkIGNvbHVtbi4KKy0tIENURXMKK1dJVEggZm9vIEFTIChTRUxFQ1QgKiBGUk9N IGd0ZXN0MSkgU0VMRUNUICogRlJPTSBmb287CisgYSB8IGIgCistLS0rLS0tCisgMyB8IDYK KygxIHJvdykKKworLS0gaW5oZXJpdGFuY2UKK0NSRUFURSBUQUJMRSBndGVzdDFfMSAoKSBJ TkhFUklUUyAoZ3Rlc3QxKTsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxXzE7CisgYSB8IGIgCist LS0rLS0tCisoMCByb3dzKQorCitcZCBndGVzdDFfMQorICAgICAgICAgICAgICAgICAgICAg ICAgVGFibGUgInB1YmxpYy5ndGVzdDFfMSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgCistLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8 IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRl ZCBhbHdheXMgYXMgKGEgKiAyKQorSW5oZXJpdHM6IGd0ZXN0MQorCitJTlNFUlQgSU5UTyBn dGVzdDFfMSBWQUxVRVMgKDQpOworU0VMRUNUICogRlJPTSBndGVzdDFfMTsKKyBhIHwgYiAK Ky0tLSstLS0KKyA0IHwgOAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MTsKKyBh IHwgYiAKKy0tLSstLS0KKyAzIHwgNgorIDQgfCA4CisoMiByb3dzKQorCistLSB0ZXN0IGlu aGVyaXRhbmNlIG1pc21hdGNoCitDUkVBVEUgVEFCTEUgZ3Rlc3R5ICh4IGludCwgYiBpbnQp OworQ1JFQVRFIFRBQkxFIGd0ZXN0MV8yICgpIElOSEVSSVRTIChndGVzdDEsIGd0ZXN0eSk7 ICAtLSBlcnJvcgorTk9USUNFOiAgbWVyZ2luZyBtdWx0aXBsZSBpbmhlcml0ZWQgZGVmaW5p dGlvbnMgb2YgY29sdW1uICJiIgorRVJST1I6ICBpbmhlcml0ZWQgY29sdW1uICJiIiBoYXMg YSBnZW5lcmF0aW9uIGNvbmZsaWN0CitEUk9QIFRBQkxFIGd0ZXN0eTsKKy0tIHN0b3JlZAor Q1JFQVRFIFRBQkxFIGd0ZXN0MyAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRF RCBBTFdBWVMgQVMgKGEgKiAzKSBTVE9SRUQpOworSU5TRVJUIElOVE8gZ3Rlc3QzIChhKSBW QUxVRVMgKDEpLCAoMiksICgzKTsKK1NFTEVDVCAqIEZST00gZ3Rlc3QzIE9SREVSIEJZIGE7 CisgYSB8IGIgCistLS0rLS0tCisgMSB8IDMKKyAyIHwgNgorIDMgfCA5CisoMyByb3dzKQor CitVUERBVEUgZ3Rlc3QzIFNFVCBhID0gMjIgV0hFUkUgYSA9IDI7CitTRUxFQ1QgKiBGUk9N IGd0ZXN0MyBPUkRFUiBCWSBhOworIGEgIHwgYiAgCistLS0tKy0tLS0KKyAgMSB8ICAzCisg IDMgfCAgOQorIDIyIHwgNjYKKygzIHJvd3MpCisKKy0tIENPUFkKK1RSVU5DQVRFIGd0ZXN0 MTsKK0lOU0VSVCBJTlRPIGd0ZXN0MSAoYSkgVkFMVUVTICgxKSwgKDIpOworQ09QWSBndGVz dDEgVE8gc3Rkb3V0OworMQorMgorQ09QWSBndGVzdDEgKGEsIGIpIFRPIHN0ZG91dDsKK0VS Uk9SOiAgY29sdW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4KK0RFVEFJTDogIEdlbmVy YXRlZCBjb2x1bW5zIGNhbm5vdCBiZSB1c2VkIGluIENPUFkuCitDT1BZIGd0ZXN0MSBGUk9N IHN0ZGluOworQ09QWSBndGVzdDEgKGEsIGIpIEZST00gc3RkaW47CitFUlJPUjogIGNvbHVt biAiYiIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uCitERVRBSUw6ICBHZW5lcmF0ZWQgY29sdW1u cyBjYW5ub3QgYmUgdXNlZCBpbiBDT1BZLgorU0VMRUNUICogRlJPTSBndGVzdDEgT1JERVIg QlkgYTsKKyBhIHwgYiAKKy0tLSstLS0KKyAxIHwgMgorIDIgfCA0CisgMyB8IDYKKyA0IHwg OAorKDQgcm93cykKKworVFJVTkNBVEUgZ3Rlc3QzOworSU5TRVJUIElOVE8gZ3Rlc3QzIChh KSBWQUxVRVMgKDEpLCAoMik7CitDT1BZIGd0ZXN0MyBUTyBzdGRvdXQ7CisxCisyCitDT1BZ IGd0ZXN0MyAoYSwgYikgVE8gc3Rkb3V0OworRVJST1I6ICBjb2x1bW4gImIiIGlzIGEgZ2Vu ZXJhdGVkIGNvbHVtbgorREVUQUlMOiAgR2VuZXJhdGVkIGNvbHVtbnMgY2Fubm90IGJlIHVz ZWQgaW4gQ09QWS4KK0NPUFkgZ3Rlc3QzIEZST00gc3RkaW47CitDT1BZIGd0ZXN0MyAoYSwg YikgRlJPTSBzdGRpbjsKK0VSUk9SOiAgY29sdW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1 bW4KK0RFVEFJTDogIEdlbmVyYXRlZCBjb2x1bW5zIGNhbm5vdCBiZSB1c2VkIGluIENPUFku CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MyBPUkRFUiBCWSBhOworIGEgfCBiICAKKy0tLSstLS0t CisgMSB8ICAzCisgMiB8ICA2CisgMyB8ICA5CisgNCB8IDEyCisoNCByb3dzKQorCistLSBk cm9wIGNvbHVtbiBiZWhhdmlvcgorQ1JFQVRFIFRBQkxFIGd0ZXN0MTAgKGEgaW50IFBSSU1B UlkgS0VZLCBiIGludCwgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYiAqIDIpKTsKK0FM VEVSIFRBQkxFIGd0ZXN0MTAgRFJPUCBDT0xVTU4gYjsKK1xkIGd0ZXN0MTAKKyAgICAgICAg ICAgICAgVGFibGUgInB1YmxpYy5ndGVzdDEwIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgbm90IG51bGwgfCAKK0luZGV4ZXM6CisgICAgImd0ZXN0MTBfcGtleSIgUFJJTUFS WSBLRVksIGJ0cmVlIChhKQorCistLSBwcml2aWxlZ2VzCitDUkVBVEUgVVNFUiByZWdyZXNz X3VzZXIxMTsKK0NSRUFURSBUQUJMRSBndGVzdDExdiAoYSBpbnQgUFJJTUFSWSBLRVksIGIg aW50LCBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiICogMikgVklSVFVBTCk7CitJTlNF UlQgSU5UTyBndGVzdDExdiBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKK0dSQU5UIFNFTEVD VCAoYSwgYykgT04gZ3Rlc3QxMXYgVE8gcmVncmVzc191c2VyMTE7CitDUkVBVEUgVEFCTEUg Z3Rlc3QxMXMgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQgR0VORVJBVEVEIEFM V0FZUyBBUyAoYiAqIDIpIFNUT1JFRCk7CitJTlNFUlQgSU5UTyBndGVzdDExcyBWQUxVRVMg KDEsIDEwKSwgKDIsIDIwKTsKK0dSQU5UIFNFTEVDVCAoYSwgYykgT04gZ3Rlc3QxMXMgVE8g cmVncmVzc191c2VyMTE7CitDUkVBVEUgRlVOQ1RJT04gZ2YxKGEgaW50KSBSRVRVUk5TIGlu dCBBUyAkJCBTRUxFQ1QgYSAqIDMgJCQgSU1NVVRBQkxFIExBTkdVQUdFIFNRTDsKK1JFVk9L RSBBTEwgT04gRlVOQ1RJT04gZ2YxKGludCkgRlJPTSBQVUJMSUM7CitDUkVBVEUgVEFCTEUg Z3Rlc3QxMnYgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQgR0VORVJBVEVEIEFM V0FZUyBBUyAoZ2YxKGIpKSBWSVJUVUFMKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MTJ2IFZBTFVF UyAoMSwgMTApLCAoMiwgMjApOworR1JBTlQgU0VMRUNUIChhLCBjKSBPTiBndGVzdDEydiBU TyByZWdyZXNzX3VzZXIxMTsKK0NSRUFURSBUQUJMRSBndGVzdDEycyAoYSBpbnQgUFJJTUFS WSBLRVksIGIgaW50LCBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChnZjEoYikpIFNUT1JF RCk7CitJTlNFUlQgSU5UTyBndGVzdDEycyBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKK0dS QU5UIFNFTEVDVCAoYSwgYykgT04gZ3Rlc3QxMnMgVE8gcmVncmVzc191c2VyMTE7CitTRVQg Uk9MRSByZWdyZXNzX3VzZXIxMTsKK1NFTEVDVCBhLCBiIEZST00gZ3Rlc3QxMXY7ICAtLSBu b3QgYWxsb3dlZAorRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgZ3Rlc3Qx MXYKK1NFTEVDVCBhLCBjIEZST00gZ3Rlc3QxMXY7ICAtLSBhbGxvd2VkCisgYSB8IGMgIAor LS0tKy0tLS0KKyAxIHwgMjAKKyAyIHwgNDAKKygyIHJvd3MpCisKK1NFTEVDVCBhLCBiIEZS T00gZ3Rlc3QxMXM7ICAtLSBub3QgYWxsb3dlZAorRVJST1I6ICBwZXJtaXNzaW9uIGRlbmll ZCBmb3IgdGFibGUgZ3Rlc3QxMXMKK1NFTEVDVCBhLCBjIEZST00gZ3Rlc3QxMXM7ICAtLSBh bGxvd2VkCisgYSB8IGMgIAorLS0tKy0tLS0KKyAxIHwgMjAKKyAyIHwgNDAKKygyIHJvd3Mp CisKK1NFTEVDVCBnZjEoMTApOyAgLS0gbm90IGFsbG93ZWQKK0VSUk9SOiAgcGVybWlzc2lv biBkZW5pZWQgZm9yIGZ1bmN0aW9uIGdmMQorU0VMRUNUIGEsIGMgRlJPTSBndGVzdDEydjsg IC0tIG5vdCBhbGxvd2VkOyBUT0RPOiBvdWdodCB0byBiZSBhbGxvd2VkCitFUlJPUjogIHBl cm1pc3Npb24gZGVuaWVkIGZvciBmdW5jdGlvbiBnZjEKK1NFTEVDVCBhLCBjIEZST00gZ3Rl c3QxMnM7ICAtLSBhbGxvd2VkCisgYSB8IGMgIAorLS0tKy0tLS0KKyAxIHwgMzAKKyAyIHwg NjAKKygyIHJvd3MpCisKK1JFU0VUIFJPTEU7CitEUk9QIFRBQkxFIGd0ZXN0MTF2LCBndGVz dDExcywgZ3Rlc3QxMnYsIGd0ZXN0MTJzOworRFJPUCBGVU5DVElPTiBnZjEoaW50KTsKK0RS T1AgVVNFUiByZWdyZXNzX3VzZXIxMTsKKy0tIGNoZWNrIGNvbnN0cmFpbnRzCitDUkVBVEUg VEFCTEUgZ3Rlc3QyMCAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdB WVMgQVMgKGEgKiAyKSBDSEVDSyAoYiA8IDUwKSk7CitJTlNFUlQgSU5UTyBndGVzdDIwIChh KSBWQUxVRVMgKDEwKTsgIC0tIG9rCitJTlNFUlQgSU5UTyBndGVzdDIwIChhKSBWQUxVRVMg KDMwKTsgIC0tIHZpb2xhdGVzIGNvbnN0cmFpbnQKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVs YXRpb24gImd0ZXN0MjAiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgImd0ZXN0MjBfYl9j aGVjayIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgzMCkuCitDUkVBVEUgVEFC TEUgZ3Rlc3QyMGEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlT IEFTIChhICogMikpOworSU5TRVJUIElOVE8gZ3Rlc3QyMGEgKGEpIFZBTFVFUyAoMTApOwor SU5TRVJUIElOVE8gZ3Rlc3QyMGEgKGEpIFZBTFVFUyAoMzApOworQUxURVIgVEFCTEUgZ3Rl c3QyMGEgQUREIENIRUNLIChiIDwgNTApOyAgLS0gZmFpbHMgb24gZXhpc3Rpbmcgcm93CitF UlJPUjogIGNoZWNrIGNvbnN0cmFpbnQgImd0ZXN0MjBhX2JfY2hlY2siIGlzIHZpb2xhdGVk IGJ5IHNvbWUgcm93CitDUkVBVEUgVEFCTEUgZ3Rlc3QyMGIgKGEgaW50IFBSSU1BUlkgS0VZ LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikpOworSU5TRVJUIElOVE8gZ3Rl c3QyMGIgKGEpIFZBTFVFUyAoMTApOworSU5TRVJUIElOVE8gZ3Rlc3QyMGIgKGEpIFZBTFVF UyAoMzApOworQUxURVIgVEFCTEUgZ3Rlc3QyMGIgQUREIENPTlNUUkFJTlQgY2hrIENIRUNL IChiIDwgNTApIE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIGd0ZXN0MjBiIFZBTElEQVRFIENP TlNUUkFJTlQgY2hrOyAgLS0gZmFpbHMgb24gZXhpc3Rpbmcgcm93CitFUlJPUjogIGNoZWNr IGNvbnN0cmFpbnQgImNoayIgaXMgdmlvbGF0ZWQgYnkgc29tZSByb3cKKy0tIG5vdC1udWxs IGNvbnN0cmFpbnRzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMWEgKGEgaW50IFBSSU1BUlkgS0VZ LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChudWxsaWYoYSwgMCkpIE5PVCBOVUxMKTsK K0lOU0VSVCBJTlRPIGd0ZXN0MjFhIChhKSBWQUxVRVMgKDEpOyAgLS0gb2sKK0lOU0VSVCBJ TlRPIGd0ZXN0MjFhIChhKSBWQUxVRVMgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3RyYWludAor RVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAiZ3Rlc3QyMWEiIHZpb2xhdGVzIGNoZWNr IGNvbnN0cmFpbnQgImd0ZXN0MjFhX2JfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBj b250YWlucyAoMCkuCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMWIgKGEgaW50IFBSSU1BUlkgS0VZ LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChudWxsaWYoYSwgMCkpKTsKK0FMVEVSIFRB QkxFIGd0ZXN0MjFiIEFMVEVSIENPTFVNTiBiIFNFVCBOT1QgTlVMTDsgIC0tIGVycm9yCitF UlJPUjogIGNhbm5vdCB1c2UgU0VUIE5PVCBOVUxMIG9uIHZpcnR1YWwgZ2VuZXJhdGVkIGNv bHVtbiAiYiIKK0hJTlQ6ICBBZGQgYSBDSEVDSyBjb25zdHJhaW50IGluc3RlYWQuCitBTFRF UiBUQUJMRSBndGVzdDIxYiBBTFRFUiBDT0xVTU4gYiBEUk9QIE5PVCBOVUxMOyAgLS0gZXJy b3IKK0VSUk9SOiAgY2Fubm90IHVzZSBEUk9QIE5PVCBOVUxMIG9uIHZpcnR1YWwgZ2VuZXJh dGVkIGNvbHVtbiAiYiIKK0NSRUFURSBUQUJMRSBndGVzdDIxYyAoYSBpbnQgUFJJTUFSWSBL RVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKG51bGxpZihhLCAwKSkgU1RPUkVEIE5P VCBOVUxMKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MjFjIChhKSBWQUxVRVMgKDEpOyAgLS0gb2sK K0lOU0VSVCBJTlRPIGd0ZXN0MjFjIChhKSBWQUxVRVMgKDApOyAgLS0gdmlvbGF0ZXMgY29u c3RyYWludAorRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiYiIgdmlvbGF0ZXMgbm90 LW51bGwgY29uc3RyYWludAorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDAsIG51 bGwpLgorQ1JFQVRFIFRBQkxFIGd0ZXN0MjFkIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAobnVsbGlmKGEsIDApKSBTVE9SRUQpOworQUxURVIgVEFC TEUgZ3Rlc3QyMWQgQUxURVIgQ09MVU1OIGIgU0VUIE5PVCBOVUxMOworSU5TRVJUIElOVE8g Z3Rlc3QyMWQgKGEpIFZBTFVFUyAoMSk7ICAtLSBvaworSU5TRVJUIElOVE8gZ3Rlc3QyMWQg KGEpIFZBTFVFUyAoMCk7ICAtLSB2aW9sYXRlcyBjb25zdHJhaW50CitFUlJPUjogIG51bGwg dmFsdWUgaW4gY29sdW1uICJiIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50CitERVRB SUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMCwgbnVsbCkuCitBTFRFUiBUQUJMRSBndGVz dDIxZCBBTFRFUiBDT0xVTU4gYiBEUk9QIE5PVCBOVUxMOworSU5TRVJUIElOVE8gZ3Rlc3Qy MWQgKGEpIFZBTFVFUyAoMCk7ICAtLSBvayBub3cKKy0tIGluZGV4IGNvbnN0cmFpbnRzCitD UkVBVEUgVEFCTEUgZ3Rlc3QyMmEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFU RUQgQUxXQVlTIEFTIChhICogMikgVU5JUVVFKTsgIC0tIGVycm9yCitFUlJPUjogIGluZGV4 IGNyZWF0aW9uIG9uIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgaXMgbm90IHN1cHBvcnRl ZAorQ1JFQVRFIFRBQkxFIGd0ZXN0MjJiIChhIGludCwgYiBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyAoYSAqIDIpLCBQUklNQVJZIEtFWSAoYSwgYikpOyAgLS0gZXJyb3IKK0VSUk9SOiAg aW5kZXggY3JlYXRpb24gb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBpcyBub3Qgc3Vw cG9ydGVkCistLSBpbmRleGVzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMmMgKGEgaW50LCBiIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikpOworQ1JFQVRFIElOREVYIGd0ZXN0MjJj X2JfaWR4IE9OIGd0ZXN0MjJjIChiKTsgIC0tIGVycm9yCitFUlJPUjogIGluZGV4IGNyZWF0 aW9uIG9uIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgaXMgbm90IHN1cHBvcnRlZAorQ1JF QVRFIElOREVYIGd0ZXN0MjJjX2V4cHJfaWR4IE9OIGd0ZXN0MjJjICgoYiAqIDMpKTsKK0VS Uk9SOiAgaW5kZXggY3JlYXRpb24gb24gdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBpcyBu b3Qgc3VwcG9ydGVkCitDUkVBVEUgSU5ERVggZ3Rlc3QyMmNfcHJlZF9pZHggT04gZ3Rlc3Qy MmMgKGEpIFdIRVJFIGIgPiAwOworRVJST1I6ICBpbmRleCBjcmVhdGlvbiBvbiB2aXJ0dWFs IGdlbmVyYXRlZCBjb2x1bW5zIGlzIG5vdCBzdXBwb3J0ZWQKK1xkIGd0ZXN0MjJjCisgICAg ICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLmd0ZXN0MjJjIgorIENvbHVtbiB8 ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICBEZWZhdWx0ICAg ICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoYSAqIDIpCisKK0lOU0VSVCBJTlRPIGd0 ZXN0MjJjIFZBTFVFUyAoMSksICgyKSwgKDMpOworU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9m ZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiBUTyBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYiAqIDMgPSA2OworICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFNlcSBTY2FuIG9uIGd0ZXN0MjJjCisgICBGaWx0ZXI6ICgoKGEgKiAyKSAqIDMpID0gNikK KygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYiAqIDMgPSA2Owor IGEgfCBiIAorLS0tKy0tLQorIDEgfCAyCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9G RikgU0VMRUNUICogRlJPTSBndGVzdDIyYyBXSEVSRSBhID0gMSBBTkQgYiA+IDA7CisgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIGd0ZXN0MjJjCisgICBGaWx0 ZXI6ICgoYSA9IDEpIEFORCAoKGEgKiAyKSA+IDApKQorKDIgcm93cykKKworU0VMRUNUICog RlJPTSBndGVzdDIyYyBXSEVSRSBhID0gMSBBTkQgYiA+IDA7CisgYSB8IGIgCistLS0rLS0t CisgMSB8IDIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFi bGVfYml0bWFwc2NhbjsKK0NSRUFURSBUQUJMRSBndGVzdDIyZCAoYSBpbnQsIGIgaW50IEdF TkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBTVE9SRUQpOworQ1JFQVRFIElOREVYIGd0ZXN0 MjJkX2JfaWR4IE9OIGd0ZXN0MjJkIChiKTsKK0NSRUFURSBJTkRFWCBndGVzdDIyZF9leHBy X2lkeCBPTiBndGVzdDIyZCAoKGIgKiAzKSk7CitDUkVBVEUgSU5ERVggZ3Rlc3QyMmRfcHJl ZF9pZHggT04gZ3Rlc3QyMmQgKGEpIFdIRVJFIGIgPiAwOworXGQgZ3Rlc3QyMmQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMuZ3Rlc3QyMmQiCisgQ29sdW1u IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgIERlZmF1 bHQgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGEgICAgICB8 IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKGEgKiAyKSBz dG9yZWQKK0luZGV4ZXM6CisgICAgImd0ZXN0MjJkX2JfaWR4IiBidHJlZSAoYikKKyAgICAi Z3Rlc3QyMmRfZXhwcl9pZHgiIGJ0cmVlICgoYiAqIDMpKQorICAgICJndGVzdDIyZF9wcmVk X2lkeCIgYnRyZWUgKGEpIFdIRVJFIGIgPiAwCisKK0lOU0VSVCBJTlRPIGd0ZXN0MjJkIFZB TFVFUyAoMSksICgyKSwgKDMpOworU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKK1NFVCBl bmFibGVfYml0bWFwc2NhbiBUTyBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gZ3Rlc3QyMmQgV0hFUkUgYiA9IDQ7CisgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgZ3Rlc3QyMmRfYl9pZHggb24gZ3Rl c3QyMmQKKyAgIEluZGV4IENvbmQ6IChiID0gNCkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gZ3Rlc3QyMmQgV0hFUkUgYiA9IDQ7CisgYSB8IGIgCistLS0rLS0tCisgMiB8IDQKKygx IHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdI RVJFIGIgKiAzID0gNjsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBndGVzdDIyZF9leHByX2lkeCBvbiBndGVzdDIy ZAorICAgSW5kZXggQ29uZDogKChiICogMykgPSA2KQorKDIgcm93cykKKworU0VMRUNUICog RlJPTSBndGVzdDIyZCBXSEVSRSBiICogMyA9IDY7CisgYSB8IGIgCistLS0rLS0tCisgMSB8 IDIKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0 MjJkIFdIRVJFIGEgPSAxIEFORCBiID4gMDsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBndGVzdDIyZF9wcmVkX2lk eCBvbiBndGVzdDIyZAorICAgSW5kZXggQ29uZDogKGEgPSAxKQorKDIgcm93cykKKworU0VM RUNUICogRlJPTSBndGVzdDIyZCBXSEVSRSBhID0gMSBBTkQgYiA+IDA7CisgYSB8IGIgCist LS0rLS0tCisgMSB8IDIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNF VCBlbmFibGVfYml0bWFwc2NhbjsKKy0tIGZvcmVpZ24ga2V5cworQ1JFQVRFIFRBQkxFIGd0 ZXN0MjNhICh4IGludCBQUklNQVJZIEtFWSwgeSBpbnQpOworSU5TRVJUIElOVE8gZ3Rlc3Qy M2EgVkFMVUVTICgxLCAxMSksICgyLCAyMiksICgzLCAzMyk7CitDUkVBVEUgVEFCTEUgZ3Rl c3QyM3ggKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChh ICogMikgUkVGRVJFTkNFUyBndGVzdDIzYSAoeCkgT04gVVBEQVRFIENBU0NBREUpOyAgLS0g ZXJyb3IKK0VSUk9SOiAgaW52YWxpZCBPTiBVUERBVEUgYWN0aW9uIGZvciBmb3JlaWduIGtl eSBjb25zdHJhaW50IGNvbnRhaW5pbmcgZ2VuZXJhdGVkIGNvbHVtbgorQ1JFQVRFIFRBQkxF IGd0ZXN0MjN4IChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoYSAqIDIpIFJFRkVSRU5DRVMgZ3Rlc3QyM2EgKHgpIE9OIERFTEVURSBTRVQgTlVMTCk7 ICAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIE9OIERFTEVURSBhY3Rpb24gZm9yIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgY29udGFpbmluZyBnZW5lcmF0ZWQgY29sdW1uCitDUkVBVEUg VEFCTEUgZ3Rlc3QyM2IgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxX QVlTIEFTIChhICogMikgUkVGRVJFTkNFUyBndGVzdDIzYSAoeCkpOyAgLS0gZXJyb3IKK0VS Uk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgb24gdmlydHVhbCBnZW5lcmF0ZWQgY29s dW1ucyBhcmUgbm90IHN1cHBvcnRlZAorQ1JFQVRFIFRBQkxFIGd0ZXN0MjNjIChhIGludCBQ UklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFNUT1JFRCBS RUZFUkVOQ0VTIGd0ZXN0MjNhICh4KSk7CitcZCBndGVzdDIzYworICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGFibGUgInB1YmxpYy5ndGVzdDIzYyIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAg ICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoYSAqIDIpIHN0b3JlZAorSW5k ZXhlczoKKyAgICAiZ3Rlc3QyM2NfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorRm9y ZWlnbi1rZXkgY29uc3RyYWludHM6CisgICAgImd0ZXN0MjNjX2JfZmtleSIgRk9SRUlHTiBL RVkgKGIpIFJFRkVSRU5DRVMgZ3Rlc3QyM2EoeCkKKworSU5TRVJUIElOVE8gZ3Rlc3QyM2Mg VkFMVUVTICgxKTsgIC0tIG9rCitJTlNFUlQgSU5UTyBndGVzdDIzYyBWQUxVRVMgKDUpOyAg LS0gZXJyb3IKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAiZ3Rlc3QyM2Mi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgImd0ZXN0MjNjX2JfZmtleSIKK0RF VEFJTDogIEtleSAoYik9KDEwKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAiZ3Rlc3QyM2Ei LgorRFJPUCBUQUJMRSBndGVzdDIzYzsKK0RST1AgVEFCTEUgZ3Rlc3QyM2E7CitDUkVBVEUg VEFCTEUgZ3Rlc3QyM3AgKHggaW50LCB5IGludCBHRU5FUkFURUQgQUxXQVlTIEFTICh4ICog MikgU1RPUkVELCBQUklNQVJZIEtFWSAoeSkpOworSU5TRVJUIElOVE8gZ3Rlc3QyM3AgVkFM VUVTICgxKSwgKDIpLCAoMyk7CitDUkVBVEUgVEFCTEUgZ3Rlc3QyM3EgKGEgaW50IFBSSU1B UlkgS0VZLCBiIGludCBSRUZFUkVOQ0VTIGd0ZXN0MjNwICh5KSk7CitJTlNFUlQgSU5UTyBn dGVzdDIzcSBWQUxVRVMgKDEsIDIpOyAgLS0gb2sKK0lOU0VSVCBJTlRPIGd0ZXN0MjNxIFZB TFVFUyAoMiwgNSk7ICAtLSBlcnJvcgorRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRh YmxlICJndGVzdDIzcSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAiZ3Rlc3Qy M3FfYl9ma2V5IgorREVUQUlMOiAgS2V5IChiKT0oNSkgaXMgbm90IHByZXNlbnQgaW4gdGFi bGUgImd0ZXN0MjNwIi4KKy0tIG5vIHRlc3QgZm9yIFBLIHVzaW5nIHZpcnR1YWwgY29sdW1u LCBzaW5jZSBzdWNoIGFuIGluZGV4IGNhbm5vdCBiZSBjcmVhdGVkCistLSBkb21haW5zCitD UkVBVEUgRE9NQUlOIGd0ZXN0ZG9tYWluMSBBUyBpbnQgQ0hFQ0sgKFZBTFVFIDwgMTApOwor Q1JFQVRFIFRBQkxFIGd0ZXN0MjQgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGd0ZXN0ZG9tYWlu MSBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikpOyAgLS0gcHJvaGliaXRlZAorRVJST1I6 ICB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW4gImIiIGNhbm5vdCBoYXZlIGEgZG9tYWluIHR5 cGUKK0xJTkUgMTogQ1JFQVRFIFRBQkxFIGd0ZXN0MjQgKGEgaW50IFBSSU1BUlkgS0VZLCBi IGd0ZXN0ZG9tYWluMSBHRU5FLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gdHlwZWQgdGFibGVzIChjdXJyZW50bHkgbm90IHN1 cHBvcnRlZCkKK0NSRUFURSBUWVBFIGd0ZXN0X3R5cGUgQVMgKGYxIGludGVnZXIsIGYyIHRl eHQsIGYzIGJpZ2ludCk7CitDUkVBVEUgVEFCTEUgZ3Rlc3QyOCBPRiBndGVzdF90eXBlIChm MSBXSVRIIE9QVElPTlMgR0VORVJBVEVEIEFMV0FZUyBBUyAoZjIgKjIpKTsKK0VSUk9SOiAg Z2VuZXJhdGVkIGNvbHVtbnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdHlwZWQgdGFibGVzCitE Uk9QIFRZUEUgZ3Rlc3RfdHlwZSBDQVNDQURFOworLS0gdGFibGUgcGFydGl0aW9ucyAoY3Vy cmVudGx5IG5vdCBzdXBwb3J0ZWQpCitDUkVBVEUgVEFCTEUgZ3Rlc3RfcGFyZW50IChmMSBk YXRlIE5PVCBOVUxMLCBmMiB0ZXh0LCBmMyBiaWdpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo ZjEpOworQ1JFQVRFIFRBQkxFIGd0ZXN0X2NoaWxkIFBBUlRJVElPTiBPRiBndGVzdF9wYXJl bnQgKAorICAgIGYzIFdJVEggT1BUSU9OUyBHRU5FUkFURUQgQUxXQVlTIEFTIChmMiAqIDIp CispIEZPUiBWQUxVRVMgRlJPTSAoJzIwMTYtMDctMDEnKSBUTyAoJzIwMTYtMDgtMDEnKTsg LS0gZXJyb3IKK0VSUk9SOiAgZ2VuZXJhdGVkIGNvbHVtbnMgYXJlIG5vdCBzdXBwb3J0ZWQg b24gcGFydGl0aW9ucworRFJPUCBUQUJMRSBndGVzdF9wYXJlbnQ7CistLSBwYXJ0aXRpb25l ZCB0YWJsZQorQ1JFQVRFIFRBQkxFIGd0ZXN0X3BhcmVudCAoZjEgZGF0ZSBOT1QgTlVMTCwg ZjIgYmlnaW50LCBmMyBiaWdpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoZjIgKiAyKSkgUEFS VElUSU9OIEJZIFJBTkdFIChmMSk7CitDUkVBVEUgVEFCTEUgZ3Rlc3RfY2hpbGQgUEFSVElU SU9OIE9GIGd0ZXN0X3BhcmVudCBGT1IgVkFMVUVTIEZST00gKCcyMDE2LTA3LTAxJykgVE8g KCcyMDE2LTA4LTAxJyk7CitJTlNFUlQgSU5UTyBndGVzdF9wYXJlbnQgKGYxLCBmMikgVkFM VUVTICgnMjAxNi0wNy0xNScsIDEpOworU0VMRUNUICogRlJPTSBndGVzdF9wYXJlbnQ7Cisg ICAgIGYxICAgICB8IGYyIHwgZjMgCistLS0tLS0tLS0tLS0rLS0tLSstLS0tCisgMDctMTUt MjAxNiB8ICAxIHwgIDIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBndGVzdF9jaGlsZDsK KyAgICAgZjEgICAgIHwgZjIgfCBmMyAKKy0tLS0tLS0tLS0tLSstLS0tKy0tLS0KKyAwNy0x NS0yMDE2IHwgIDEgfCAgMgorKDEgcm93KQorCitEUk9QIFRBQkxFIGd0ZXN0X3BhcmVudDsK K0NSRUFURSBUQUJMRSBndGVzdF9wYXJlbnQgKGYxIGRhdGUgTk9UIE5VTEwsIGYyIGJpZ2lu dCwgZjMgYmlnaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGYyICogMikgU1RPUkVEKSBQQVJU SVRJT04gQlkgUkFOR0UgKGYxKTsKK0NSRUFURSBUQUJMRSBndGVzdF9jaGlsZCBQQVJUSVRJ T04gT0YgZ3Rlc3RfcGFyZW50IEZPUiBWQUxVRVMgRlJPTSAoJzIwMTYtMDctMDEnKSBUTyAo JzIwMTYtMDgtMDEnKTsKK0lOU0VSVCBJTlRPIGd0ZXN0X3BhcmVudCAoZjEsIGYyKSBWQUxV RVMgKCcyMDE2LTA3LTE1JywgMSk7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0X3BhcmVudDsKKyAg ICAgZjEgICAgIHwgZjIgfCBmMyAKKy0tLS0tLS0tLS0tLSstLS0tKy0tLS0KKyAwNy0xNS0y MDE2IHwgIDEgfCAgMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGd0ZXN0X2NoaWxkOwor ICAgICBmMSAgICAgfCBmMiB8IGYzIAorLS0tLS0tLS0tLS0tKy0tLS0rLS0tLQorIDA3LTE1 LTIwMTYgfCAgMSB8ICAyCisoMSByb3cpCisKK0RST1AgVEFCTEUgZ3Rlc3RfcGFyZW50Owor LS0gZ2VuZXJhdGVkIGNvbHVtbnMgaW4gcGFydGl0aW9uIGtleSAoY3VycmVudGx5IG5vdCBz dXBwb3J0ZWQpCitDUkVBVEUgVEFCTEUgZ3Rlc3RfcGFyZW50IChmMSBkYXRlIE5PVCBOVUxM LCBmMiBiaWdpbnQsIGYzIGJpZ2ludCBHRU5FUkFURUQgQUxXQVlTIEFTIChmMiAqIDIpKSBQ QVJUSVRJT04gQlkgUkFOR0UgKGYzKTsKK0VSUk9SOiAgdXNpbmcgZ2VuZXJhdGVkIGNvbHVt biBpbiBwYXJ0aXRpb24ga2V5IGlzIG5vdCBzdXBwb3J0ZWQKK0xJTkUgMTogLi4uaWdpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAoZjIgKiAyKSkgUEFSVElUSU9OIEJZIFJBTkdFIChmMyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorREVUQUlMOiAgQ29sdW1uICJmMyIgaXMgYSBnZW5lcmF0ZWQg Y29sdW1uLgorQ1JFQVRFIFRBQkxFIGd0ZXN0X3BhcmVudCAoZjEgZGF0ZSBOT1QgTlVMTCwg ZjIgYmlnaW50LCBmMyBiaWdpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoZjIgKiAyKSkgUEFS VElUSU9OIEJZIFJBTkdFICgoZjMgKiAzKSk7CitFUlJPUjogIHVzaW5nIGdlbmVyYXRlZCBj b2x1bW4gaW4gcGFydGl0aW9uIGtleSBpcyBub3Qgc3VwcG9ydGVkCitMSU5FIDE6IC4uLkdF TkVSQVRFRCBBTFdBWVMgQVMgKGYyICogMikpIFBBUlRJVElPTiBCWSBSQU5HRSAoKGYzICog MykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK0RFVEFJTDogIENvbHVtbiAiZjMiIGlzIGEgZ2VuZXJhdGVkIGNv bHVtbi4KK0NSRUFURSBUQUJMRSBndGVzdF9wYXJlbnQgKGYxIGRhdGUgTk9UIE5VTEwsIGYy IGJpZ2ludCwgZjMgYmlnaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGYyICogMikgU1RPUkVE KSBQQVJUSVRJT04gQlkgUkFOR0UgKChmMyAqIDMpKTsKK0VSUk9SOiAgdXNpbmcgZ2VuZXJh dGVkIGNvbHVtbiBpbiBwYXJ0aXRpb24ga2V5IGlzIG5vdCBzdXBwb3J0ZWQKK0xJTkUgMTog Li4uRUQgQUxXQVlTIEFTIChmMiAqIDIpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJBTkdFICgo ZjMgKiAzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgQ29sdW1uICJmMyIgaXMgYSBnZW5lcmF0 ZWQgY29sdW1uLgorLyoKK0NSRUFURSBUQUJMRSBndGVzdF9jaGlsZDEgUEFSVElUSU9OIE9G IGd0ZXN0X3BhcmVudCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFC TEUgZ3Rlc3RfY2hpbGQyIFBBUlRJVElPTiBPRiBndGVzdF9wYXJlbnQgRk9SIFZBTFVFUyBG Uk9NICgxMSkgVE8gKDIwKTsKK0lOU0VSVCBJTlRPIGd0ZXN0X3BhcmVudCAoZjEsIGYyKSBW QUxVRVMgKCcyMDE2LTA3LTE1JywgMSk7CitJTlNFUlQgSU5UTyBndGVzdF9wYXJlbnQgKGYx LCBmMikgVkFMVUVTICgnMjAxNi0wNy0xNScsIDMpOworSU5TRVJUIElOVE8gZ3Rlc3RfcGFy ZW50IChmMSwgZjIpIFZBTFVFUyAoJzIwMTYtMDctMTUnLCAxMCk7ICAtLSBlcnJvcgorU0VM RUNUICogRlJPTSBndGVzdF9jaGlsZDE7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0X2NoaWxkMjsK K0RST1AgVEFCTEUgZ3Rlc3RfcGFyZW50OworKi8KKy0tIEFMVEVSIFRBQkxFIC4uLiBBREQg Q09MVU1OCitDUkVBVEUgVEFCTEUgZ3Rlc3QyNSAoYSBpbnQgUFJJTUFSWSBLRVkpOworSU5T RVJUIElOVE8gZ3Rlc3QyNSBWQUxVRVMgKDMpLCAoNCk7CitBTFRFUiBUQUJMRSBndGVzdDI1 IEFERCBDT0xVTU4gYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDMpOworQUxURVIg VEFCTEUgZ3Rlc3QyNSBBREQgQ09MVU1OIGMgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEg KiA1KSBTVE9SRUQ7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MjUgT1JERVIgQlkgYTsKKyBhIHwg YiAgfCBjICAKKy0tLSstLS0tKy0tLS0KKyAzIHwgIDkgfCAxNQorIDQgfCAxMiB8IDIwCiso MiByb3dzKQorCitBTFRFUiBUQUJMRSBndGVzdDI1IEFERCBDT0xVTU4geCBpbnQgR0VORVJB VEVEIEFMV0FZUyBBUyAoYiAqIDQpOyAgLS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90IHVzZSBn ZW5lcmF0ZWQgY29sdW1uICJiIiBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9uCitE RVRBSUw6ICBBIGdlbmVyYXRlZCBjb2x1bW4gY2Fubm90IHJlZmVyZW5jZSBhbm90aGVyIGdl bmVyYXRlZCBjb2x1bW4uCitBTFRFUiBUQUJMRSBndGVzdDI1IEFERCBDT0xVTU4geCBpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAoYyAqIDQpOyAgLS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90 IHVzZSBnZW5lcmF0ZWQgY29sdW1uICJjIiBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNz aW9uCitERVRBSUw6ICBBIGdlbmVyYXRlZCBjb2x1bW4gY2Fubm90IHJlZmVyZW5jZSBhbm90 aGVyIGdlbmVyYXRlZCBjb2x1bW4uCitBTFRFUiBUQUJMRSBndGVzdDI1IEFERCBDT0xVTU4g eCBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoeiAqIDQpOyAgLS0gZXJyb3IKK0VSUk9SOiAg Y29sdW1uICJ6IiBkb2VzIG5vdCBleGlzdAorLS0gQUxURVIgVEFCTEUgLi4uIEFMVEVSIENP TFVNTgorQ1JFQVRFIFRBQkxFIGd0ZXN0MjcgKAorICAgIGEgaW50LAorICAgIGIgaW50IEdF TkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSwKKyAgICBjIGludCBHRU5FUkFURUQgQUxXQVlT IEFTIChhICogMykgU1RPUkVECispOworSU5TRVJUIElOVE8gZ3Rlc3QyNyAoYSkgVkFMVUVT ICgzKSwgKDQpOworQUxURVIgVEFCTEUgZ3Rlc3QyNyBBTFRFUiBDT0xVTU4gYSBUWVBFIHRl eHQ7ICAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1 c2VkIGJ5IGEgZ2VuZXJhdGVkIGNvbHVtbgorREVUQUlMOiAgQ29sdW1uICJhIiBpcyB1c2Vk IGJ5IGdlbmVyYXRlZCBjb2x1bW4gImMiLgorQUxURVIgVEFCTEUgZ3Rlc3QyNyBBTFRFUiBD T0xVTU4gYiBUWVBFIG51bWVyaWM7CitBTFRFUiBUQUJMRSBndGVzdDI3IEFMVEVSIENPTFVN TiBjIFRZUEUgbnVtZXJpYzsKK1xkIGd0ZXN0MjcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVGFibGUgInB1YmxpYy5ndGVzdDI3IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgYiAgICAgIHwgbnVtZXJpYyB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGEgKiAyKSkKKyBjICAgICAgfCBu dW1lcmljIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgo YSAqIDMpKSBzdG9yZWQKKworU0VMRUNUICogRlJPTSBndGVzdDI3OworIGEgfCBiIHwgYyAg CistLS0rLS0tKy0tLS0KKyAzIHwgNiB8ICA5CisgNCB8IDggfCAxMgorKDIgcm93cykKKwor QUxURVIgVEFCTEUgZ3Rlc3QyNyBBTFRFUiBDT0xVTU4gYiBUWVBFIGJvb2xlYW47ICAtLSBl cnJvcgorRVJST1I6ICBnZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9yIGNvbHVtbiAiYiIgY2Fu bm90IGJlIGNhc3QgYXV0b21hdGljYWxseSB0byB0eXBlIGJvb2xlYW4KK0FMVEVSIFRBQkxF IGd0ZXN0MjcgQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUOyAgLS0gZXJyb3IKK0VSUk9S OiAgY29sdW1uICJiIiBvZiByZWxhdGlvbiAiZ3Rlc3QyNyIgaXMgYSBnZW5lcmF0ZWQgY29s dW1uCitcZCBndGVzdDI3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJw dWJsaWMuZ3Rlc3QyNyIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgCistLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8IAorIGIgICAgICB8IG51bWVyaWMgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdl bmVyYXRlZCBhbHdheXMgYXMgKChhICogMikpCisgYyAgICAgIHwgbnVtZXJpYyB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGEgKiAzKSkgc3RvcmVk CisKKy0tIHRyaWdnZXJzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyNiAoCisgICAgYSBpbnQgUFJJ TUFSWSBLRVksCisgICAgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFZJUlRV QUwsCisgICAgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDMpIFNUT1JFRAorKTsK K0NSRUFURSBGVU5DVElPTiBndGVzdF90cmlnZ2VyX2Z1bmMoKSBSRVRVUk5TIHRyaWdnZXIK KyAgTEFOR1VBR0UgcGxwZ3NxbAorQVMgJCQKK0JFR0lOCisgIElGIHRnX29wIElOICgnREVM RVRFJywgJ1VQREFURScpIFRIRU4KKyAgICBSQUlTRSBJTkZPICclOiAlOiBvbGQgPSAlJywg VEdfTkFNRSwgVEdfV0hFTiwgT0xEOworICBFTkQgSUY7CisgIElGIHRnX29wIElOICgnSU5T RVJUJywgJ1VQREFURScpIFRIRU4KKyAgICBSQUlTRSBJTkZPICclOiAlOiBuZXcgPSAlJywg VEdfTkFNRSwgVEdfV0hFTiwgTkVXOworICBFTkQgSUY7CisgIElGIHRnX29wID0gJ0RFTEVU RScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAgICBSRVRVUk4gTkVXOworICBF TkQgSUY7CitFTkQKKyQkOworQ1JFQVRFIFRSSUdHRVIgZ3Rlc3QxIEJFRk9SRSBERUxFVEUg T1IgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisgIFdIRU4gKE9MRC5iIDwg MCkgIC0tIG9rCisgIEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOwor Q1JFQVRFIFRSSUdHRVIgZ3Rlc3QyYSBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPTiBndGVz dDI2CisgIEZPUiBFQUNIIFJPVworICBXSEVOIChORVcuYiA8IDApICAtLSBlcnJvcgorICBF WEVDVVRFIFBST0NFRFVSRSBndGVzdF90cmlnZ2VyX2Z1bmMoKTsKK0VSUk9SOiAgQkVGT1JF IHRyaWdnZXIncyBXSEVOIGNvbmRpdGlvbiBjYW5ub3QgcmVmZXJlbmNlIE5FVyBnZW5lcmF0 ZWQgY29sdW1ucworTElORSAzOiAgIFdIRU4gKE5FVy5iIDwgMCkgIAorICAgICAgICAgICAg ICAgIF4KK0RFVEFJTDogIENvbHVtbiAiYiIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLgorQ1JF QVRFIFRSSUdHRVIgZ3Rlc3QyYiBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPTiBndGVzdDI2 CisgIEZPUiBFQUNIIFJPVworICBXSEVOIChORVcuKiBJUyBOT1QgTlVMTCkgIC0tIGVycm9y CisgIEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworRVJST1I6ICBC RUZPUkUgdHJpZ2dlcidzIFdIRU4gY29uZGl0aW9uIGNhbm5vdCByZWZlcmVuY2UgTkVXIGdl bmVyYXRlZCBjb2x1bW5zCitMSU5FIDM6ICAgV0hFTiAoTkVXLiogSVMgTk9UIE5VTEwpICAK KyAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBBIHdob2xlLXJvdyByZWZlcmVuY2UgaXMg dXNlZCBhbmQgdGhlIHRhYmxlIGNvbnRhaW5zIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRF IFRSSUdHRVIgZ3Rlc3QyIEJFRk9SRSBJTlNFUlQgT04gZ3Rlc3QyNgorICBGT1IgRUFDSCBS T1cKKyAgV0hFTiAoTkVXLmEgPCAwKQorICBFWEVDVVRFIFBST0NFRFVSRSBndGVzdF90cmln Z2VyX2Z1bmMoKTsKK0NSRUFURSBUUklHR0VSIGd0ZXN0MyBBRlRFUiBERUxFVEUgT1IgVVBE QVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisgIFdIRU4gKE9MRC5iIDwgMCkgIC0t IG9rCisgIEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworQ1JFQVRF IFRSSUdHRVIgZ3Rlc3Q0IEFGVEVSIElOU0VSVCBPUiBVUERBVEUgT04gZ3Rlc3QyNgorICBG T1IgRUFDSCBST1cKKyAgV0hFTiAoTkVXLmIgPCAwKSAgLS0gb2sKKyAgRVhFQ1VURSBQUk9D RURVUkUgZ3Rlc3RfdHJpZ2dlcl9mdW5jKCk7CitJTlNFUlQgSU5UTyBndGVzdDI2IChhKSBW QUxVRVMgKC0yKSwgKDApLCAoMyk7CitJTkZPOiAgZ3Rlc3QyOiBCRUZPUkU6IG5ldyA9ICgt MiwsKQorSU5GTzogIGd0ZXN0NDogQUZURVI6IG5ldyA9ICgtMiwsLTYpCitTRUxFQ1QgKiBG Uk9NIGd0ZXN0MjYgT1JERVIgQlkgYTsKKyBhICB8IGIgIHwgYyAgCistLS0tKy0tLS0rLS0t LQorIC0yIHwgLTQgfCAtNgorICAwIHwgIDAgfCAgMAorICAzIHwgIDYgfCAgOQorKDMgcm93 cykKKworVVBEQVRFIGd0ZXN0MjYgU0VUIGEgPSBhICogLTI7CitJTkZPOiAgZ3Rlc3QxOiBC RUZPUkU6IG9sZCA9ICgtMiwsLTYpCitJTkZPOiAgZ3Rlc3QxOiBCRUZPUkU6IG5ldyA9ICg0 LCwpCitJTkZPOiAgZ3Rlc3QzOiBBRlRFUjogb2xkID0gKC0yLCwtNikKK0lORk86ICBndGVz dDM6IEFGVEVSOiBuZXcgPSAoNCwsMTIpCitJTkZPOiAgZ3Rlc3Q0OiBBRlRFUjogb2xkID0g KDMsLDkpCitJTkZPOiAgZ3Rlc3Q0OiBBRlRFUjogbmV3ID0gKC02LCwtMTgpCitTRUxFQ1Qg KiBGUk9NIGd0ZXN0MjYgT1JERVIgQlkgYTsKKyBhICB8ICBiICB8ICBjICAKKy0tLS0rLS0t LS0rLS0tLS0KKyAtNiB8IC0xMiB8IC0xOAorICAwIHwgICAwIHwgICAwCisgIDQgfCAgIDgg fCAgMTIKKygzIHJvd3MpCisKK0RFTEVURSBGUk9NIGd0ZXN0MjYgV0hFUkUgYSA9IC02Owor SU5GTzogIGd0ZXN0MTogQkVGT1JFOiBvbGQgPSAoLTYsLC0xOCkKK0lORk86ICBndGVzdDM6 IEFGVEVSOiBvbGQgPSAoLTYsLC0xOCkKK1NFTEVDVCAqIEZST00gZ3Rlc3QyNiBPUkRFUiBC WSBhOworIGEgfCBiIHwgYyAgCistLS0rLS0tKy0tLS0KKyAwIHwgMCB8ICAwCisgNCB8IDgg fCAxMgorKDIgcm93cykKKworRFJPUCBUUklHR0VSIGd0ZXN0MSBPTiBndGVzdDI2OworRFJP UCBUUklHR0VSIGd0ZXN0MiBPTiBndGVzdDI2OworRFJPUCBUUklHR0VSIGd0ZXN0MyBPTiBn dGVzdDI2OworLS0gY2hlY2sgZGlzYWxsb3dlZCBtb2RpZmljYXRpb24gb2YgdmlydHVhbCBj b2x1bW5zCitDUkVBVEUgRlVOQ1RJT04gZ3Rlc3RfdHJpZ2dlcl9mdW5jMigpIFJFVFVSTlMg dHJpZ2dlcgorICBMQU5HVUFHRSBwbHBnc3FsCitBUyAkJAorQkVHSU4KKyAgTkVXLmIgOj0g NTsKKyAgUkVUVVJOIE5FVzsKK0VORAorJCQ7CitDUkVBVEUgVFJJR0dFUiBndGVzdDEwIEJF Rk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisgIEVY RUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYzIoKTsKK0lOU0VSVCBJTlRPIGd0 ZXN0MjYgKGEpIFZBTFVFUyAoMTApOworRVJST1I6ICB0cmlnZ2VyIG1vZGlmaWVkIHZpcnR1 YWwgZ2VuZXJhdGVkIGNvbHVtbiB2YWx1ZQorVVBEQVRFIGd0ZXN0MjYgU0VUIGEgPSAxIFdI RVJFIGEgPSAwOworRVJST1I6ICB0cmlnZ2VyIG1vZGlmaWVkIHZpcnR1YWwgZ2VuZXJhdGVk IGNvbHVtbiB2YWx1ZQorRFJPUCBUUklHR0VSIGd0ZXN0MTAgT04gZ3Rlc3QyNjsKKy0tIENo ZWNrIHRoYXQgYW4gVVBEQVRFIG9mICJhIiBmaXJlcyB0aGUgdHJpZ2dlciBmb3IgVVBEQVRF IE9GIGIsIHBlcgorLS0gU1FMIHN0YW5kYXJkLgorQ1JFQVRFIEZVTkNUSU9OIGd0ZXN0X3Ry aWdnZXJfZnVuYzMoKSBSRVRVUk5TIHRyaWdnZXIKKyAgTEFOR1VBR0UgcGxwZ3NxbAorQVMg JCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAnT0snOworICBSRVRVUk4gTkVXOworRU5ECisk JDsKK0NSRUFURSBUUklHR0VSIGd0ZXN0MTEgQkVGT1JFIFVQREFURSBPRiBiIE9OIGd0ZXN0 MjYKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJf ZnVuYzMoKTsKK1VQREFURSBndGVzdDI2IFNFVCBhID0gMSBXSEVSRSBhID0gMDsKK05PVElD RTogIE9LCitEUk9QIFRSSUdHRVIgZ3Rlc3QxMSBPTiBndGVzdDI2OworVFJVTkNBVEUgZ3Rl c3QyNjsKKy0tIGNoZWNrIHRoYXQgbW9kaWZpY2F0aW9ucyBvZiBzdG9yZWQgZ2VuZXJhdGVk IGNvbHVtbnMgaW4gdHJpZ2dlcnMgZG8KKy0tIG5vdCBnZXQgcHJvcGFnYXRlZAorQ1JFQVRF IEZVTkNUSU9OIGd0ZXN0X3RyaWdnZXJfZnVuYzQoKSBSRVRVUk5TIHRyaWdnZXIKKyAgTEFO R1VBR0UgcGxwZ3NxbAorQVMgJCQKK0JFR0lOCisgIE5FVy5hID0gMTA7CisgIE5FVy5jID0g MzAwOworICBSRVRVUk4gTkVXOworRU5EOworJCQ7CitDUkVBVEUgVFJJR0dFUiBndGVzdDEy XzAxIEJFRk9SRSBVUERBVEUgT04gZ3Rlc3QyNgorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VU RSBQUk9DRURVUkUgZ3Rlc3RfdHJpZ2dlcl9mdW5jKCk7CitDUkVBVEUgVFJJR0dFUiBndGVz dDEyXzAyIEJFRk9SRSBVUERBVEUgT04gZ3Rlc3QyNgorICBGT1IgRUFDSCBST1cKKyAgRVhF Q1VURSBQUk9DRURVUkUgZ3Rlc3RfdHJpZ2dlcl9mdW5jNCgpOworQ1JFQVRFIFRSSUdHRVIg Z3Rlc3QxMl8wMyBCRUZPUkUgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisg IEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworSU5TRVJUIElOVE8g Z3Rlc3QyNiAoYSkgVkFMVUVTICgxKTsKK1VQREFURSBndGVzdDI2IFNFVCBhID0gMTEgV0hF UkUgYSA9IDE7CitJTkZPOiAgZ3Rlc3QxMl8wMTogQkVGT1JFOiBvbGQgPSAoMSwsMykKK0lO Rk86ICBndGVzdDEyXzAxOiBCRUZPUkU6IG5ldyA9ICgxMSwsKQorSU5GTzogIGd0ZXN0MTJf MDM6IEJFRk9SRTogb2xkID0gKDEsLDMpCitJTkZPOiAgZ3Rlc3QxMl8wMzogQkVGT1JFOiBu ZXcgPSAoMTAsLCkKK1NFTEVDVCAqIEZST00gZ3Rlc3QyNiBPUkRFUiBCWSBhOworIGEgIHwg YiAgfCBjICAKKy0tLS0rLS0tLSstLS0tCisgMTAgfCAyMCB8IDMwCisoMSByb3cpCisKKy0t IExJS0UgSU5DTFVESU5HIEdFTkVSQVRFRCBhbmQgZHJvcHBlZCBjb2x1bW4gaGFuZGxpbmcK K0NSRUFURSBUQUJMRSBndGVzdDI4YSAoCisgIGEgaW50LAorICBiIGludCwKKyAgYyBpbnQs CisgIHggaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIgKiAyKQorKTsKK0FMVEVSIFRBQkxF IGd0ZXN0MjhhIERST1AgQ09MVU1OIGE7CitDUkVBVEUgVEFCTEUgZ3Rlc3QyOGIgKExJS0Ug Z3Rlc3QyOGEgSU5DTFVESU5HIEdFTkVSQVRFRCk7CitcZCBndGVzdDI4KgorICAgICAgICAg ICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5ndGVzdDI4YSIKKyBDb2x1bW4gfCAgVHlw ZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgRGVmYXVsdCAgICAgICAg ICAgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorIGMgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IAorIHggICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVy YXRlZCBhbHdheXMgYXMgKGIgKiAyKQorCisgICAgICAgICAgICAgICAgICAgICAgICBUYWJs ZSAicHVibGljLmd0ZXN0MjhiIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYyAg ICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgeCAgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoYiAq IDIpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IGNjMGJiZjVkYjku LmM1YzIwN2Q0ZjYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTE2 LDcgKzExNiw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAg ZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAjIC0tLS0tLS0tLS0K ICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwogIyAtLS0tLS0tLS0tCi10ZXN0 OiBpZGVudGl0eSBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBo YXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbwor dGVzdDogaWRlbnRpdHkgZ2VuZXJhdGVkIHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVu ZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBh cnRpdGlvbl9pbmZvCiAKICMgZXZlbnQgdHJpZ2dlcnMgY2Fubm90IHJ1biBjb25jdXJyZW50 bHkgd2l0aCBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCiB0ZXN0OiBldmVudF90cmlnZ2VyCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZSBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlCmluZGV4IDBjMTBjNzEwMGMuLjFkNGMzMGM3ZGQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlCkBAIC0xNzcsNiArMTc3LDcgQEAgdGVz dDogbGFyZ2VvYmplY3QKIHRlc3Q6IHdpdGgKIHRlc3Q6IHhtbAogdGVzdDogaWRlbnRpdHkK K3Rlc3Q6IGdlbmVyYXRlZAogdGVzdDogcGFydGl0aW9uX2pvaW4KIHRlc3Q6IHBhcnRpdGlv bl9wcnVuZQogdGVzdDogcmVsb3B0aW9ucwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3Jl YXRlX3RhYmxlX2xpa2Uuc3FsCmluZGV4IDY1YzM4ODA3OTIuLmQwMDJjYjA3YjMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90YWJsZV9saWtlLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfdGFibGVfbGlrZS5zcWwKQEAgLTUxLDYg KzUxLDIwIEBAIENSRUFURSBUQUJMRSB0ZXN0X2xpa2VfaWRfMyAoTElLRSB0ZXN0X2xpa2Vf aWRfMSBJTkNMVURJTkcgSURFTlRJVFkpOwogU0VMRUNUICogRlJPTSB0ZXN0X2xpa2VfaWRf MzsgIC0tIGlkZW50aXR5IHdhcyBjb3BpZWQgYW5kIGFwcGxpZWQKIERST1AgVEFCTEUgdGVz dF9saWtlX2lkXzEsIHRlc3RfbGlrZV9pZF8yLCB0ZXN0X2xpa2VfaWRfMzsKIAorQ1JFQVRF IFRBQkxFIHRlc3RfbGlrZV9nZW5fMSAoYSBpbnQsIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGEgKiAyKSk7CitcZCB0ZXN0X2xpa2VfZ2VuXzEKK0lOU0VSVCBJTlRPIHRlc3RfbGlr ZV9nZW5fMSAoYSkgVkFMVUVTICgxKTsKK1NFTEVDVCAqIEZST00gdGVzdF9saWtlX2dlbl8x OworQ1JFQVRFIFRBQkxFIHRlc3RfbGlrZV9nZW5fMiAoTElLRSB0ZXN0X2xpa2VfZ2VuXzEp OworXGQgdGVzdF9saWtlX2dlbl8yCitJTlNFUlQgSU5UTyB0ZXN0X2xpa2VfZ2VuXzIgKGEp IFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfbGlrZV9nZW5fMjsKK0NSRUFURSBU QUJMRSB0ZXN0X2xpa2VfZ2VuXzMgKExJS0UgdGVzdF9saWtlX2dlbl8xIElOQ0xVRElORyBH RU5FUkFURUQpOworXGQgdGVzdF9saWtlX2dlbl8zCitJTlNFUlQgSU5UTyB0ZXN0X2xpa2Vf Z2VuXzMgKGEpIFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRlc3RfbGlrZV9nZW5fMzsK K0RST1AgVEFCTEUgdGVzdF9saWtlX2dlbl8xLCB0ZXN0X2xpa2VfZ2VuXzIsIHRlc3RfbGlr ZV9nZW5fMzsKKwogQ1JFQVRFIFRBQkxFIGluaGcgKHggdGV4dCwgTElLRSBpbmh4IElOQ0xV RElORyBJTkRFWEVTLCB5IHRleHQpOyAvKiBjb3BpZXMgaW5kZXhlcyAqLwogSU5TRVJUIElO VE8gaW5oZyBWQUxVRVMgKDUsIDEwKTsKIElOU0VSVCBJTlRPIGluaGcgVkFMVUVTICgyMCwg MTApOyAtLSBzaG91bGQgZmFpbApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Z2VuZXJhdGVkLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZC5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uY2U2MTNjZDRmMgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZC5zcWwKQEAgLTAs MCArMSw0OTAgQEAKKy0tIHNhbml0eSBjaGVjayBvZiBzeXN0ZW0gY2F0YWxvZworU0VMRUNU IGF0dHJlbGlkLCBhdHRuYW1lLCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hF UkUgYXR0Z2VuZXJhdGVkIE5PVCBJTiAoJycsICdzJywgJ3YnKTsKKworCitDUkVBVEUgVEFC TEUgZ3Rlc3QwIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoNTUpKTsKK0NSRUFURSBUQUJMRSBndGVzdDEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikpOworCitTRUxFQ1QgdGFibGVfbmFtZSwg Y29sdW1uX25hbWUsIGNvbHVtbl9kZWZhdWx0LCBpc19udWxsYWJsZSwgaXNfZ2VuZXJhdGVk LCBnZW5lcmF0aW9uX2V4cHJlc3Npb24gRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1u cyBXSEVSRSB0YWJsZV9uYW1lIExJS0UgJ2d0ZXN0XycgT1JERVIgQlkgMSwgMjsKKworU0VM RUNUIHRhYmxlX25hbWUsIGNvbHVtbl9uYW1lLCBkZXBlbmRlbnRfY29sdW1uIEZST00gaW5m b3JtYXRpb25fc2NoZW1hLmNvbHVtbl9jb2x1bW5fdXNhZ2UgT1JERVIgQlkgMSwgMiwgMzsK KworXGQgZ3Rlc3QxCisKKy0tIGR1cGxpY2F0ZSBnZW5lcmF0ZWQKK0NSRUFURSBUQUJMRSBn dGVzdF9lcnJfMSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGEgKiAyKSBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMykpOworCistLSByZWZlcmVu Y2VzIHRvIG90aGVyIGdlbmVyYXRlZCBjb2x1bW5zLCBpbmNsdWRpbmcgc2VsZi1yZWZlcmVu Y2VzCitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzJhIChhIGludCBQUklNQVJZIEtFWSwgYiBp bnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYiAqIDIpKTsKK0NSRUFURSBUQUJMRSBndGVzdF9l cnJfMmIgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChh ICogMiksIGMgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIgKiAzKSk7CisKKy0tIGludmFs aWQgcmVmZXJlbmNlCitDUkVBVEUgVEFCTEUgZ3Rlc3RfZXJyXzMgKGEgaW50IFBSSU1BUlkg S0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChjICogMikpOworCistLSBmdW5jdGlv bnMgbXVzdCBiZSBpbW11dGFibGUKK0NSRUFURSBUQUJMRSBndGVzdF9lcnJfNCAoYSBpbnQg UFJJTUFSWSBLRVksIGIgZG91YmxlIHByZWNpc2lvbiBHRU5FUkFURUQgQUxXQVlTIEFTIChy YW5kb20oKSkpOworCistLSBjYW5ub3QgaGF2ZSBkZWZhdWx0L2lkZW50aXR5IGFuZCBnZW5l cmF0ZWQKK0NSRUFURSBUQUJMRSBndGVzdF9lcnJfNWEgKGEgaW50IFBSSU1BUlkgS0VZLCBi IGludCBERUZBVUxUIDUgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpKTsKK0NSRUFURSBU QUJMRSBndGVzdF9lcnJfNWIgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQg QUxXQVlTIEFTIGlkZW50aXR5IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSk7CisKKy0t IHJlZmVyZW5jZSB0byBzeXN0ZW0gY29sdW1uIG5vdCBhbGxvd2VkIGluIGdlbmVyYXRlZCBj b2x1bW4KK0NSRUFURSBUQUJMRSBndGVzdF9lcnJfNmEgKGEgaW50IFBSSU1BUlkgS0VZLCBi IGJvb2wgR0VORVJBVEVEIEFMV0FZUyBBUyAoeG1pbiA8PiAzNykgU1RPUkVEKTsKK0NSRUFU RSBUQUJMRSBndGVzdF9lcnJfNmIgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGJvb2wgR0VORVJB VEVEIEFMV0FZUyBBUyAoeG1pbiA8PiAzNykgVklSVFVBTCk7CisKK0lOU0VSVCBJTlRPIGd0 ZXN0MSBWQUxVRVMgKDEpOworSU5TRVJUIElOVE8gZ3Rlc3QxIFZBTFVFUyAoMiwgREVGQVVM VCk7CitJTlNFUlQgSU5UTyBndGVzdDEgVkFMVUVTICgzLCAzMyk7ICAtLSBlcnJvcgorCitT RUxFQ1QgKiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOworCitVUERBVEUgZ3Rlc3QxIFNFVCBi ID0gREVGQVVMVCBXSEVSRSBhID0gMTsKK1VQREFURSBndGVzdDEgU0VUIGIgPSAxMSBXSEVS RSBhID0gMTsgIC0tIGVycm9yCisKK1NFTEVDVCAqIEZST00gZ3Rlc3QxIE9SREVSIEJZIGE7 CisKK1NFTEVDVCBhLCBiLCBiICogMiBBUyBiMiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOwor U0VMRUNUIGEsIGIgRlJPTSBndGVzdDEgV0hFUkUgYiA9IDQgT1JERVIgQlkgYTsKKworLS0g dGVzdCB0aGF0IG92ZXJmbG93IGVycm9yIGhhcHBlbnMgb24gcmVhZAorSU5TRVJUIElOVE8g Z3Rlc3QxIFZBTFVFUyAoMjAwMDAwMDAwMCk7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MTsKK0RF TEVURSBGUk9NIGd0ZXN0MSBXSEVSRSBhID0gMjAwMDAwMDAwMDsKKworLS0gdGVzdCB3aXRo IGpvaW5zCitDUkVBVEUgVEFCTEUgZ3Rlc3R4ICh4IGludCwgeSBpbnQpOworSU5TRVJUIElO VE8gZ3Rlc3R4IFZBTFVFUyAoMTEsIDEpLCAoMjIsIDIpLCAoMzMsIDMpOworU0VMRUNUICog RlJPTSBndGVzdHgsIGd0ZXN0MSBXSEVSRSBndGVzdHgueSA9IGd0ZXN0MS5hOworRFJPUCBU QUJMRSBndGVzdHg7CisKKy0tIHRlc3QgVVBEQVRFL0RFTEVURSBxdWFscworU0VMRUNUICog RlJPTSBndGVzdDEgT1JERVIgQlkgYTsKK1VQREFURSBndGVzdDEgU0VUIGEgPSAzIFdIRVJF IGIgPSA0OworU0VMRUNUICogRlJPTSBndGVzdDEgT1JERVIgQlkgYTsKK0RFTEVURSBGUk9N IGd0ZXN0MSBXSEVSRSBiID0gMjsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxIE9SREVSIEJZIGE7 CisKKy0tIHZpZXdzCitDUkVBVEUgVklFVyBndGVzdDF2IEFTIFNFTEVDVCAqIEZST00gZ3Rl c3QxOworU0VMRUNUICogRlJPTSBndGVzdDF2OworSU5TRVJUIElOVE8gZ3Rlc3QxdiBWQUxV RVMgKDQsIDgpOyAgLS0gZmFpbHMKKworLS0gQ1RFcworV0lUSCBmb28gQVMgKFNFTEVDVCAq IEZST00gZ3Rlc3QxKSBTRUxFQ1QgKiBGUk9NIGZvbzsKKworLS0gaW5oZXJpdGFuY2UKK0NS RUFURSBUQUJMRSBndGVzdDFfMSAoKSBJTkhFUklUUyAoZ3Rlc3QxKTsKK1NFTEVDVCAqIEZS T00gZ3Rlc3QxXzE7CitcZCBndGVzdDFfMQorSU5TRVJUIElOVE8gZ3Rlc3QxXzEgVkFMVUVT ICg0KTsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxXzE7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MTsK KworLS0gdGVzdCBpbmhlcml0YW5jZSBtaXNtYXRjaAorQ1JFQVRFIFRBQkxFIGd0ZXN0eSAo eCBpbnQsIGIgaW50KTsKK0NSRUFURSBUQUJMRSBndGVzdDFfMiAoKSBJTkhFUklUUyAoZ3Rl c3QxLCBndGVzdHkpOyAgLS0gZXJyb3IKK0RST1AgVEFCTEUgZ3Rlc3R5OworCistLSBzdG9y ZWQKK0NSRUFURSBUQUJMRSBndGVzdDMgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5F UkFURUQgQUxXQVlTIEFTIChhICogMykgU1RPUkVEKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MyAo YSkgVkFMVUVTICgxKSwgKDIpLCAoMyk7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MyBPUkRFUiBC WSBhOworVVBEQVRFIGd0ZXN0MyBTRVQgYSA9IDIyIFdIRVJFIGEgPSAyOworU0VMRUNUICog RlJPTSBndGVzdDMgT1JERVIgQlkgYTsKKworLS0gQ09QWQorVFJVTkNBVEUgZ3Rlc3QxOwor SU5TRVJUIElOVE8gZ3Rlc3QxIChhKSBWQUxVRVMgKDEpLCAoMik7CisKK0NPUFkgZ3Rlc3Qx IFRPIHN0ZG91dDsKKworQ09QWSBndGVzdDEgKGEsIGIpIFRPIHN0ZG91dDsKKworQ09QWSBn dGVzdDEgRlJPTSBzdGRpbjsKKzMKKzQKK1wuCisKK0NPUFkgZ3Rlc3QxIChhLCBiKSBGUk9N IHN0ZGluOworCitTRUxFQ1QgKiBGUk9NIGd0ZXN0MSBPUkRFUiBCWSBhOworCitUUlVOQ0FU RSBndGVzdDM7CitJTlNFUlQgSU5UTyBndGVzdDMgKGEpIFZBTFVFUyAoMSksICgyKTsKKwor Q09QWSBndGVzdDMgVE8gc3Rkb3V0OworCitDT1BZIGd0ZXN0MyAoYSwgYikgVE8gc3Rkb3V0 OworCitDT1BZIGd0ZXN0MyBGUk9NIHN0ZGluOworMworNAorXC4KKworQ09QWSBndGVzdDMg KGEsIGIpIEZST00gc3RkaW47CisKK1NFTEVDVCAqIEZST00gZ3Rlc3QzIE9SREVSIEJZIGE7 CisKKy0tIGRyb3AgY29sdW1uIGJlaGF2aW9yCitDUkVBVEUgVEFCTEUgZ3Rlc3QxMCAoYSBp bnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiICog MikpOworQUxURVIgVEFCTEUgZ3Rlc3QxMCBEUk9QIENPTFVNTiBiOworCitcZCBndGVzdDEw CisKKy0tIHByaXZpbGVnZXMKK0NSRUFURSBVU0VSIHJlZ3Jlc3NfdXNlcjExOworCitDUkVB VEUgVEFCTEUgZ3Rlc3QxMXYgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQgR0VO RVJBVEVEIEFMV0FZUyBBUyAoYiAqIDIpIFZJUlRVQUwpOworSU5TRVJUIElOVE8gZ3Rlc3Qx MXYgVkFMVUVTICgxLCAxMCksICgyLCAyMCk7CitHUkFOVCBTRUxFQ1QgKGEsIGMpIE9OIGd0 ZXN0MTF2IFRPIHJlZ3Jlc3NfdXNlcjExOworCitDUkVBVEUgVEFCTEUgZ3Rlc3QxMXMgKGEg aW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYiAq IDIpIFNUT1JFRCk7CitJTlNFUlQgSU5UTyBndGVzdDExcyBWQUxVRVMgKDEsIDEwKSwgKDIs IDIwKTsKK0dSQU5UIFNFTEVDVCAoYSwgYykgT04gZ3Rlc3QxMXMgVE8gcmVncmVzc191c2Vy MTE7CisKK0NSRUFURSBGVU5DVElPTiBnZjEoYSBpbnQpIFJFVFVSTlMgaW50IEFTICQkIFNF TEVDVCBhICogMyAkJCBJTU1VVEFCTEUgTEFOR1VBR0UgU1FMOworUkVWT0tFIEFMTCBPTiBG VU5DVElPTiBnZjEoaW50KSBGUk9NIFBVQkxJQzsKKworQ1JFQVRFIFRBQkxFIGd0ZXN0MTJ2 IChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQsIGMgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMg KGdmMShiKSkgVklSVFVBTCk7CitJTlNFUlQgSU5UTyBndGVzdDEydiBWQUxVRVMgKDEsIDEw KSwgKDIsIDIwKTsKK0dSQU5UIFNFTEVDVCAoYSwgYykgT04gZ3Rlc3QxMnYgVE8gcmVncmVz c191c2VyMTE7CisKK0NSRUFURSBUQUJMRSBndGVzdDEycyAoYSBpbnQgUFJJTUFSWSBLRVks IGIgaW50LCBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChnZjEoYikpIFNUT1JFRCk7CitJ TlNFUlQgSU5UTyBndGVzdDEycyBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKK0dSQU5UIFNF TEVDVCAoYSwgYykgT04gZ3Rlc3QxMnMgVE8gcmVncmVzc191c2VyMTE7CisKK1NFVCBST0xF IHJlZ3Jlc3NfdXNlcjExOworU0VMRUNUIGEsIGIgRlJPTSBndGVzdDExdjsgIC0tIG5vdCBh bGxvd2VkCitTRUxFQ1QgYSwgYyBGUk9NIGd0ZXN0MTF2OyAgLS0gYWxsb3dlZAorU0VMRUNU IGEsIGIgRlJPTSBndGVzdDExczsgIC0tIG5vdCBhbGxvd2VkCitTRUxFQ1QgYSwgYyBGUk9N IGd0ZXN0MTFzOyAgLS0gYWxsb3dlZAorU0VMRUNUIGdmMSgxMCk7ICAtLSBub3QgYWxsb3dl ZAorU0VMRUNUIGEsIGMgRlJPTSBndGVzdDEydjsgIC0tIG5vdCBhbGxvd2VkOyBUT0RPOiBv dWdodCB0byBiZSBhbGxvd2VkCitTRUxFQ1QgYSwgYyBGUk9NIGd0ZXN0MTJzOyAgLS0gYWxs b3dlZAorUkVTRVQgUk9MRTsKKworRFJPUCBUQUJMRSBndGVzdDExdiwgZ3Rlc3QxMXMsIGd0 ZXN0MTJ2LCBndGVzdDEyczsKK0RST1AgRlVOQ1RJT04gZ2YxKGludCk7CitEUk9QIFVTRVIg cmVncmVzc191c2VyMTE7CisKKy0tIGNoZWNrIGNvbnN0cmFpbnRzCitDUkVBVEUgVEFCTEUg Z3Rlc3QyMCAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMg KGEgKiAyKSBDSEVDSyAoYiA8IDUwKSk7CitJTlNFUlQgSU5UTyBndGVzdDIwIChhKSBWQUxV RVMgKDEwKTsgIC0tIG9rCitJTlNFUlQgSU5UTyBndGVzdDIwIChhKSBWQUxVRVMgKDMwKTsg IC0tIHZpb2xhdGVzIGNvbnN0cmFpbnQKKworQ1JFQVRFIFRBQkxFIGd0ZXN0MjBhIChhIGlu dCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpKTsKK0lO U0VSVCBJTlRPIGd0ZXN0MjBhIChhKSBWQUxVRVMgKDEwKTsKK0lOU0VSVCBJTlRPIGd0ZXN0 MjBhIChhKSBWQUxVRVMgKDMwKTsKK0FMVEVSIFRBQkxFIGd0ZXN0MjBhIEFERCBDSEVDSyAo YiA8IDUwKTsgIC0tIGZhaWxzIG9uIGV4aXN0aW5nIHJvdworCitDUkVBVEUgVEFCTEUgZ3Rl c3QyMGIgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChh ICogMikpOworSU5TRVJUIElOVE8gZ3Rlc3QyMGIgKGEpIFZBTFVFUyAoMTApOworSU5TRVJU IElOVE8gZ3Rlc3QyMGIgKGEpIFZBTFVFUyAoMzApOworQUxURVIgVEFCTEUgZ3Rlc3QyMGIg QUREIENPTlNUUkFJTlQgY2hrIENIRUNLIChiIDwgNTApIE5PVCBWQUxJRDsKK0FMVEVSIFRB QkxFIGd0ZXN0MjBiIFZBTElEQVRFIENPTlNUUkFJTlQgY2hrOyAgLS0gZmFpbHMgb24gZXhp c3Rpbmcgcm93CisKKy0tIG5vdC1udWxsIGNvbnN0cmFpbnRzCitDUkVBVEUgVEFCTEUgZ3Rl c3QyMWEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChu dWxsaWYoYSwgMCkpIE5PVCBOVUxMKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MjFhIChhKSBWQUxV RVMgKDEpOyAgLS0gb2sKK0lOU0VSVCBJTlRPIGd0ZXN0MjFhIChhKSBWQUxVRVMgKDApOyAg LS0gdmlvbGF0ZXMgY29uc3RyYWludAorCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMWIgKGEgaW50 IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChudWxsaWYoYSwgMCkp KTsKK0FMVEVSIFRBQkxFIGd0ZXN0MjFiIEFMVEVSIENPTFVNTiBiIFNFVCBOT1QgTlVMTDsg IC0tIGVycm9yCitBTFRFUiBUQUJMRSBndGVzdDIxYiBBTFRFUiBDT0xVTU4gYiBEUk9QIE5P VCBOVUxMOyAgLS0gZXJyb3IKKworQ1JFQVRFIFRBQkxFIGd0ZXN0MjFjIChhIGludCBQUklN QVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAobnVsbGlmKGEsIDApKSBTVE9S RUQgTk9UIE5VTEwpOworSU5TRVJUIElOVE8gZ3Rlc3QyMWMgKGEpIFZBTFVFUyAoMSk7ICAt LSBvaworSU5TRVJUIElOVE8gZ3Rlc3QyMWMgKGEpIFZBTFVFUyAoMCk7ICAtLSB2aW9sYXRl cyBjb25zdHJhaW50CisKK0NSRUFURSBUQUJMRSBndGVzdDIxZCAoYSBpbnQgUFJJTUFSWSBL RVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKG51bGxpZihhLCAwKSkgU1RPUkVEKTsK K0FMVEVSIFRBQkxFIGd0ZXN0MjFkIEFMVEVSIENPTFVNTiBiIFNFVCBOT1QgTlVMTDsKK0lO U0VSVCBJTlRPIGd0ZXN0MjFkIChhKSBWQUxVRVMgKDEpOyAgLS0gb2sKK0lOU0VSVCBJTlRP IGd0ZXN0MjFkIChhKSBWQUxVRVMgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3RyYWludAorQUxU RVIgVEFCTEUgZ3Rlc3QyMWQgQUxURVIgQ09MVU1OIGIgRFJPUCBOT1QgTlVMTDsKK0lOU0VS VCBJTlRPIGd0ZXN0MjFkIChhKSBWQUxVRVMgKDApOyAgLS0gb2sgbm93CisKKy0tIGluZGV4 IGNvbnN0cmFpbnRzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMmEgKGEgaW50IFBSSU1BUlkgS0VZ LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgVU5JUVVFKTsgIC0tIGVycm9y CitDUkVBVEUgVEFCTEUgZ3Rlc3QyMmIgKGEgaW50LCBiIGludCBHRU5FUkFURUQgQUxXQVlT IEFTIChhICogMiksIFBSSU1BUlkgS0VZIChhLCBiKSk7ICAtLSBlcnJvcgorCistLSBpbmRl eGVzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyMmMgKGEgaW50LCBiIGludCBHRU5FUkFURUQgQUxX QVlTIEFTIChhICogMikpOworQ1JFQVRFIElOREVYIGd0ZXN0MjJjX2JfaWR4IE9OIGd0ZXN0 MjJjIChiKTsgIC0tIGVycm9yCitDUkVBVEUgSU5ERVggZ3Rlc3QyMmNfZXhwcl9pZHggT04g Z3Rlc3QyMmMgKChiICogMykpOworQ1JFQVRFIElOREVYIGd0ZXN0MjJjX3ByZWRfaWR4IE9O IGd0ZXN0MjJjIChhKSBXSEVSRSBiID4gMDsKK1xkIGd0ZXN0MjJjCisKK0lOU0VSVCBJTlRP IGd0ZXN0MjJjIFZBTFVFUyAoMSksICgyKSwgKDMpOworU0VUIGVuYWJsZV9zZXFzY2FuIFRP IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiBUTyBvZmY7CitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYiAqIDMgPSA2OworU0VMRUNUICog RlJPTSBndGVzdDIyYyBXSEVSRSBiICogMyA9IDY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNF TEVDVCAqIEZST00gZ3Rlc3QyMmMgV0hFUkUgYSA9IDEgQU5EIGIgPiAwOworU0VMRUNUICog RlJPTSBndGVzdDIyYyBXSEVSRSBhID0gMSBBTkQgYiA+IDA7CitSRVNFVCBlbmFibGVfc2Vx c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworCitDUkVBVEUgVEFCTEUgZ3Rlc3Qy MmQgKGEgaW50LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgU1RPUkVEKTsK K0NSRUFURSBJTkRFWCBndGVzdDIyZF9iX2lkeCBPTiBndGVzdDIyZCAoYik7CitDUkVBVEUg SU5ERVggZ3Rlc3QyMmRfZXhwcl9pZHggT04gZ3Rlc3QyMmQgKChiICogMykpOworQ1JFQVRF IElOREVYIGd0ZXN0MjJkX3ByZWRfaWR4IE9OIGd0ZXN0MjJkIChhKSBXSEVSRSBiID4gMDsK K1xkIGd0ZXN0MjJkCisKK0lOU0VSVCBJTlRPIGd0ZXN0MjJkIFZBTFVFUyAoMSksICgyKSwg KDMpOworU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2Nh biBUTyBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ3Rlc3QyMmQg V0hFUkUgYiA9IDQ7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdIRVJFIGIgPSA0OworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdIRVJFIGIgKiAzID0g NjsKK1NFTEVDVCAqIEZST00gZ3Rlc3QyMmQgV0hFUkUgYiAqIDMgPSA2OworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGd0ZXN0MjJkIFdIRVJFIGEgPSAxIEFORCBiID4g MDsKK1NFTEVDVCAqIEZST00gZ3Rlc3QyMmQgV0hFUkUgYSA9IDEgQU5EIGIgPiAwOworUkVT RVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKKworLS0gZm9y ZWlnbiBrZXlzCitDUkVBVEUgVEFCTEUgZ3Rlc3QyM2EgKHggaW50IFBSSU1BUlkgS0VZLCB5 IGludCk7CitJTlNFUlQgSU5UTyBndGVzdDIzYSBWQUxVRVMgKDEsIDExKSwgKDIsIDIyKSwg KDMsIDMzKTsKKworQ1JFQVRFIFRBQkxFIGd0ZXN0MjN4IChhIGludCBQUklNQVJZIEtFWSwg YiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFJFRkVSRU5DRVMgZ3Rlc3QyM2Eg KHgpIE9OIFVQREFURSBDQVNDQURFKTsgIC0tIGVycm9yCitDUkVBVEUgVEFCTEUgZ3Rlc3Qy M3ggKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICog MikgUkVGRVJFTkNFUyBndGVzdDIzYSAoeCkgT04gREVMRVRFIFNFVCBOVUxMKTsgIC0tIGVy cm9yCisKK0NSRUFURSBUQUJMRSBndGVzdDIzYiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50 IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBSRUZFUkVOQ0VTIGd0ZXN0MjNhICh4KSk7 ICAtLSBlcnJvcgorCitDUkVBVEUgVEFCTEUgZ3Rlc3QyM2MgKGEgaW50IFBSSU1BUlkgS0VZ LCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgU1RPUkVEIFJFRkVSRU5DRVMg Z3Rlc3QyM2EgKHgpKTsKK1xkIGd0ZXN0MjNjCisKK0lOU0VSVCBJTlRPIGd0ZXN0MjNjIFZB TFVFUyAoMSk7ICAtLSBvaworSU5TRVJUIElOVE8gZ3Rlc3QyM2MgVkFMVUVTICg1KTsgIC0t IGVycm9yCisKK0RST1AgVEFCTEUgZ3Rlc3QyM2M7CitEUk9QIFRBQkxFIGd0ZXN0MjNhOwor CitDUkVBVEUgVEFCTEUgZ3Rlc3QyM3AgKHggaW50LCB5IGludCBHRU5FUkFURUQgQUxXQVlT IEFTICh4ICogMikgU1RPUkVELCBQUklNQVJZIEtFWSAoeSkpOworSU5TRVJUIElOVE8gZ3Rl c3QyM3AgVkFMVUVTICgxKSwgKDIpLCAoMyk7CisKK0NSRUFURSBUQUJMRSBndGVzdDIzcSAo YSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IFJFRkVSRU5DRVMgZ3Rlc3QyM3AgKHkpKTsKK0lO U0VSVCBJTlRPIGd0ZXN0MjNxIFZBTFVFUyAoMSwgMik7ICAtLSBvaworSU5TRVJUIElOVE8g Z3Rlc3QyM3EgVkFMVUVTICgyLCA1KTsgIC0tIGVycm9yCisKKy0tIG5vIHRlc3QgZm9yIFBL IHVzaW5nIHZpcnR1YWwgY29sdW1uLCBzaW5jZSBzdWNoIGFuIGluZGV4IGNhbm5vdCBiZSBj cmVhdGVkCisKKy0tIGRvbWFpbnMKK0NSRUFURSBET01BSU4gZ3Rlc3Rkb21haW4xIEFTIGlu dCBDSEVDSyAoVkFMVUUgPCAxMCk7CitDUkVBVEUgVEFCTEUgZ3Rlc3QyNCAoYSBpbnQgUFJJ TUFSWSBLRVksIGIgZ3Rlc3Rkb21haW4xIEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSk7 ICAtLSBwcm9oaWJpdGVkCisKKy0tIHR5cGVkIHRhYmxlcyAoY3VycmVudGx5IG5vdCBzdXBw b3J0ZWQpCitDUkVBVEUgVFlQRSBndGVzdF90eXBlIEFTIChmMSBpbnRlZ2VyLCBmMiB0ZXh0 LCBmMyBiaWdpbnQpOworQ1JFQVRFIFRBQkxFIGd0ZXN0MjggT0YgZ3Rlc3RfdHlwZSAoZjEg V0lUSCBPUFRJT05TIEdFTkVSQVRFRCBBTFdBWVMgQVMgKGYyICoyKSk7CitEUk9QIFRZUEUg Z3Rlc3RfdHlwZSBDQVNDQURFOworCistLSB0YWJsZSBwYXJ0aXRpb25zIChjdXJyZW50bHkg bm90IHN1cHBvcnRlZCkKK0NSRUFURSBUQUJMRSBndGVzdF9wYXJlbnQgKGYxIGRhdGUgTk9U IE5VTEwsIGYyIHRleHQsIGYzIGJpZ2ludCkgUEFSVElUSU9OIEJZIFJBTkdFIChmMSk7CitD UkVBVEUgVEFCTEUgZ3Rlc3RfY2hpbGQgUEFSVElUSU9OIE9GIGd0ZXN0X3BhcmVudCAoCisg ICAgZjMgV0lUSCBPUFRJT05TIEdFTkVSQVRFRCBBTFdBWVMgQVMgKGYyICogMikKKykgRk9S IFZBTFVFUyBGUk9NICgnMjAxNi0wNy0wMScpIFRPICgnMjAxNi0wOC0wMScpOyAtLSBlcnJv cgorRFJPUCBUQUJMRSBndGVzdF9wYXJlbnQ7CisKKy0tIHBhcnRpdGlvbmVkIHRhYmxlCitD UkVBVEUgVEFCTEUgZ3Rlc3RfcGFyZW50IChmMSBkYXRlIE5PVCBOVUxMLCBmMiBiaWdpbnQs IGYzIGJpZ2ludCBHRU5FUkFURUQgQUxXQVlTIEFTIChmMiAqIDIpKSBQQVJUSVRJT04gQlkg UkFOR0UgKGYxKTsKK0NSRUFURSBUQUJMRSBndGVzdF9jaGlsZCBQQVJUSVRJT04gT0YgZ3Rl c3RfcGFyZW50IEZPUiBWQUxVRVMgRlJPTSAoJzIwMTYtMDctMDEnKSBUTyAoJzIwMTYtMDgt MDEnKTsKK0lOU0VSVCBJTlRPIGd0ZXN0X3BhcmVudCAoZjEsIGYyKSBWQUxVRVMgKCcyMDE2 LTA3LTE1JywgMSk7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0X3BhcmVudDsKK1NFTEVDVCAqIEZS T00gZ3Rlc3RfY2hpbGQ7CitEUk9QIFRBQkxFIGd0ZXN0X3BhcmVudDsKKworQ1JFQVRFIFRB QkxFIGd0ZXN0X3BhcmVudCAoZjEgZGF0ZSBOT1QgTlVMTCwgZjIgYmlnaW50LCBmMyBiaWdp bnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoZjIgKiAyKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBS QU5HRSAoZjEpOworQ1JFQVRFIFRBQkxFIGd0ZXN0X2NoaWxkIFBBUlRJVElPTiBPRiBndGVz dF9wYXJlbnQgRk9SIFZBTFVFUyBGUk9NICgnMjAxNi0wNy0wMScpIFRPICgnMjAxNi0wOC0w MScpOworSU5TRVJUIElOVE8gZ3Rlc3RfcGFyZW50IChmMSwgZjIpIFZBTFVFUyAoJzIwMTYt MDctMTUnLCAxKTsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfcGFyZW50OworU0VMRUNUICogRlJP TSBndGVzdF9jaGlsZDsKK0RST1AgVEFCTEUgZ3Rlc3RfcGFyZW50OworCistLSBnZW5lcmF0 ZWQgY29sdW1ucyBpbiBwYXJ0aXRpb24ga2V5IChjdXJyZW50bHkgbm90IHN1cHBvcnRlZCkK K0NSRUFURSBUQUJMRSBndGVzdF9wYXJlbnQgKGYxIGRhdGUgTk9UIE5VTEwsIGYyIGJpZ2lu dCwgZjMgYmlnaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGYyICogMikpIFBBUlRJVElPTiBC WSBSQU5HRSAoZjMpOworQ1JFQVRFIFRBQkxFIGd0ZXN0X3BhcmVudCAoZjEgZGF0ZSBOT1Qg TlVMTCwgZjIgYmlnaW50LCBmMyBiaWdpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoZjIgKiAy KSkgUEFSVElUSU9OIEJZIFJBTkdFICgoZjMgKiAzKSk7CitDUkVBVEUgVEFCTEUgZ3Rlc3Rf cGFyZW50IChmMSBkYXRlIE5PVCBOVUxMLCBmMiBiaWdpbnQsIGYzIGJpZ2ludCBHRU5FUkFU RUQgQUxXQVlTIEFTIChmMiAqIDIpIFNUT1JFRCkgUEFSVElUSU9OIEJZIFJBTkdFICgoZjMg KiAzKSk7CisvKgorQ1JFQVRFIFRBQkxFIGd0ZXN0X2NoaWxkMSBQQVJUSVRJT04gT0YgZ3Rl c3RfcGFyZW50IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBn dGVzdF9jaGlsZDIgUEFSVElUSU9OIE9GIGd0ZXN0X3BhcmVudCBGT1IgVkFMVUVTIEZST00g KDExKSBUTyAoMjApOworSU5TRVJUIElOVE8gZ3Rlc3RfcGFyZW50IChmMSwgZjIpIFZBTFVF UyAoJzIwMTYtMDctMTUnLCAxKTsKK0lOU0VSVCBJTlRPIGd0ZXN0X3BhcmVudCAoZjEsIGYy KSBWQUxVRVMgKCcyMDE2LTA3LTE1JywgMyk7CitJTlNFUlQgSU5UTyBndGVzdF9wYXJlbnQg KGYxLCBmMikgVkFMVUVTICgnMjAxNi0wNy0xNScsIDEwKTsgIC0tIGVycm9yCitTRUxFQ1Qg KiBGUk9NIGd0ZXN0X2NoaWxkMTsKK1NFTEVDVCAqIEZST00gZ3Rlc3RfY2hpbGQyOworRFJP UCBUQUJMRSBndGVzdF9wYXJlbnQ7CisqLworCistLSBBTFRFUiBUQUJMRSAuLi4gQUREIENP TFVNTgorQ1JFQVRFIFRBQkxFIGd0ZXN0MjUgKGEgaW50IFBSSU1BUlkgS0VZKTsKK0lOU0VS VCBJTlRPIGd0ZXN0MjUgVkFMVUVTICgzKSwgKDQpOworQUxURVIgVEFCTEUgZ3Rlc3QyNSBB REQgQ09MVU1OIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAzKTsKK0FMVEVSIFRB QkxFIGd0ZXN0MjUgQUREIENPTFVNTiBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICog NSkgU1RPUkVEOworU0VMRUNUICogRlJPTSBndGVzdDI1IE9SREVSIEJZIGE7CitBTFRFUiBU QUJMRSBndGVzdDI1IEFERCBDT0xVTU4geCBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYiAq IDQpOyAgLS0gZXJyb3IKK0FMVEVSIFRBQkxFIGd0ZXN0MjUgQUREIENPTFVNTiB4IGludCBH RU5FUkFURUQgQUxXQVlTIEFTIChjICogNCk7ICAtLSBlcnJvcgorQUxURVIgVEFCTEUgZ3Rl c3QyNSBBREQgQ09MVU1OIHggaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKHogKiA0KTsgIC0t IGVycm9yCisKKy0tIEFMVEVSIFRBQkxFIC4uLiBBTFRFUiBDT0xVTU4KK0NSRUFURSBUQUJM RSBndGVzdDI3ICgKKyAgICBhIGludCwKKyAgICBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFT IChhICogMiksCisgICAgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDMpIFNUT1JF RAorKTsKK0lOU0VSVCBJTlRPIGd0ZXN0MjcgKGEpIFZBTFVFUyAoMyksICg0KTsKK0FMVEVS IFRBQkxFIGd0ZXN0MjcgQUxURVIgQ09MVU1OIGEgVFlQRSB0ZXh0OyAgLS0gZXJyb3IKK0FM VEVSIFRBQkxFIGd0ZXN0MjcgQUxURVIgQ09MVU1OIGIgVFlQRSBudW1lcmljOworQUxURVIg VEFCTEUgZ3Rlc3QyNyBBTFRFUiBDT0xVTU4gYyBUWVBFIG51bWVyaWM7CitcZCBndGVzdDI3 CitTRUxFQ1QgKiBGUk9NIGd0ZXN0Mjc7CitBTFRFUiBUQUJMRSBndGVzdDI3IEFMVEVSIENP TFVNTiBiIFRZUEUgYm9vbGVhbjsgIC0tIGVycm9yCisKK0FMVEVSIFRBQkxFIGd0ZXN0Mjcg QUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUOyAgLS0gZXJyb3IKK1xkIGd0ZXN0MjcKKwor LS0gdHJpZ2dlcnMKK0NSRUFURSBUQUJMRSBndGVzdDI2ICgKKyAgICBhIGludCBQUklNQVJZ IEtFWSwKKyAgICBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgVklSVFVBTCwK KyAgICBjIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMykgU1RPUkVECispOworCitD UkVBVEUgRlVOQ1RJT04gZ3Rlc3RfdHJpZ2dlcl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyCisg IExBTkdVQUdFIHBscGdzcWwKK0FTICQkCitCRUdJTgorICBJRiB0Z19vcCBJTiAoJ0RFTEVU RScsICdVUERBVEUnKSBUSEVOCisgICAgUkFJU0UgSU5GTyAnJTogJTogb2xkID0gJScsIFRH X05BTUUsIFRHX1dIRU4sIE9MRDsKKyAgRU5EIElGOworICBJRiB0Z19vcCBJTiAoJ0lOU0VS VCcsICdVUERBVEUnKSBUSEVOCisgICAgUkFJU0UgSU5GTyAnJTogJTogbmV3ID0gJScsIFRH X05BTUUsIFRHX1dIRU4sIE5FVzsKKyAgRU5EIElGOworICBJRiB0Z19vcCA9ICdERUxFVEUn IFRIRU4KKyAgICBSRVRVUk4gT0xEOworICBFTFNFCisgICAgUkVUVVJOIE5FVzsKKyAgRU5E IElGOworRU5ECiskJDsKKworQ1JFQVRFIFRSSUdHRVIgZ3Rlc3QxIEJFRk9SRSBERUxFVEUg T1IgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisgIFdIRU4gKE9MRC5iIDwg MCkgIC0tIG9rCisgIEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOwor CitDUkVBVEUgVFJJR0dFUiBndGVzdDJhIEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9OIGd0 ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisgIFdIRU4gKE5FVy5iIDwgMCkgIC0tIGVycm9yCisg IEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworCitDUkVBVEUgVFJJ R0dFUiBndGVzdDJiIEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9S IEVBQ0ggUk9XCisgIFdIRU4gKE5FVy4qIElTIE5PVCBOVUxMKSAgLS0gZXJyb3IKKyAgRVhF Q1VURSBQUk9DRURVUkUgZ3Rlc3RfdHJpZ2dlcl9mdW5jKCk7CisKK0NSRUFURSBUUklHR0VS IGd0ZXN0MiBCRUZPUkUgSU5TRVJUIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisgIFdI RU4gKE5FVy5hIDwgMCkKKyAgRVhFQ1VURSBQUk9DRURVUkUgZ3Rlc3RfdHJpZ2dlcl9mdW5j KCk7CisKK0NSRUFURSBUUklHR0VSIGd0ZXN0MyBBRlRFUiBERUxFVEUgT1IgVVBEQVRFIE9O IGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisgIFdIRU4gKE9MRC5iIDwgMCkgIC0tIG9rCisg IEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworCitDUkVBVEUgVFJJ R0dFUiBndGVzdDQgQUZURVIgSU5TRVJUIE9SIFVQREFURSBPTiBndGVzdDI2CisgIEZPUiBF QUNIIFJPVworICBXSEVOIChORVcuYiA8IDApICAtLSBvaworICBFWEVDVVRFIFBST0NFRFVS RSBndGVzdF90cmlnZ2VyX2Z1bmMoKTsKKworSU5TRVJUIElOVE8gZ3Rlc3QyNiAoYSkgVkFM VUVTICgtMiksICgwKSwgKDMpOworU0VMRUNUICogRlJPTSBndGVzdDI2IE9SREVSIEJZIGE7 CitVUERBVEUgZ3Rlc3QyNiBTRVQgYSA9IGEgKiAtMjsKK1NFTEVDVCAqIEZST00gZ3Rlc3Qy NiBPUkRFUiBCWSBhOworREVMRVRFIEZST00gZ3Rlc3QyNiBXSEVSRSBhID0gLTY7CitTRUxF Q1QgKiBGUk9NIGd0ZXN0MjYgT1JERVIgQlkgYTsKKworRFJPUCBUUklHR0VSIGd0ZXN0MSBP TiBndGVzdDI2OworRFJPUCBUUklHR0VSIGd0ZXN0MiBPTiBndGVzdDI2OworRFJPUCBUUklH R0VSIGd0ZXN0MyBPTiBndGVzdDI2OworCistLSBjaGVjayBkaXNhbGxvd2VkIG1vZGlmaWNh dGlvbiBvZiB2aXJ0dWFsIGNvbHVtbnMKK0NSRUFURSBGVU5DVElPTiBndGVzdF90cmlnZ2Vy X2Z1bmMyKCkgUkVUVVJOUyB0cmlnZ2VyCisgIExBTkdVQUdFIHBscGdzcWwKK0FTICQkCitC RUdJTgorICBORVcuYiA6PSA1OworICBSRVRVUk4gTkVXOworRU5ECiskJDsKKworQ1JFQVRF IFRSSUdHRVIgZ3Rlc3QxMCBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPTiBndGVzdDI2Cisg IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSBndGVzdF90cmlnZ2VyX2Z1bmMy KCk7CisKK0lOU0VSVCBJTlRPIGd0ZXN0MjYgKGEpIFZBTFVFUyAoMTApOworVVBEQVRFIGd0 ZXN0MjYgU0VUIGEgPSAxIFdIRVJFIGEgPSAwOworCitEUk9QIFRSSUdHRVIgZ3Rlc3QxMCBP TiBndGVzdDI2OworCistLSBDaGVjayB0aGF0IGFuIFVQREFURSBvZiAiYSIgZmlyZXMgdGhl IHRyaWdnZXIgZm9yIFVQREFURSBPRiBiLCBwZXIKKy0tIFNRTCBzdGFuZGFyZC4KK0NSRUFU RSBGVU5DVElPTiBndGVzdF90cmlnZ2VyX2Z1bmMzKCkgUkVUVVJOUyB0cmlnZ2VyCisgIExB TkdVQUdFIHBscGdzcWwKK0FTICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ09LJzsKKyAg UkVUVVJOIE5FVzsKK0VORAorJCQ7CisKK0NSRUFURSBUUklHR0VSIGd0ZXN0MTEgQkVGT1JF IFVQREFURSBPRiBiIE9OIGd0ZXN0MjYKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJP Q0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYzMoKTsKKworVVBEQVRFIGd0ZXN0MjYgU0VUIGEg PSAxIFdIRVJFIGEgPSAwOworCitEUk9QIFRSSUdHRVIgZ3Rlc3QxMSBPTiBndGVzdDI2Owor VFJVTkNBVEUgZ3Rlc3QyNjsKKworLS0gY2hlY2sgdGhhdCBtb2RpZmljYXRpb25zIG9mIHN0 b3JlZCBnZW5lcmF0ZWQgY29sdW1ucyBpbiB0cmlnZ2VycyBkbworLS0gbm90IGdldCBwcm9w YWdhdGVkCitDUkVBVEUgRlVOQ1RJT04gZ3Rlc3RfdHJpZ2dlcl9mdW5jNCgpIFJFVFVSTlMg dHJpZ2dlcgorICBMQU5HVUFHRSBwbHBnc3FsCitBUyAkJAorQkVHSU4KKyAgTkVXLmEgPSAx MDsKKyAgTkVXLmMgPSAzMDA7CisgIFJFVFVSTiBORVc7CitFTkQ7CiskJDsKKworQ1JFQVRF IFRSSUdHRVIgZ3Rlc3QxMl8wMSBCRUZPUkUgVVBEQVRFIE9OIGd0ZXN0MjYKKyAgRk9SIEVB Q0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIGd0ZXN0X3RyaWdnZXJfZnVuYygpOworCitD UkVBVEUgVFJJR0dFUiBndGVzdDEyXzAyIEJFRk9SRSBVUERBVEUgT04gZ3Rlc3QyNgorICBG T1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgZ3Rlc3RfdHJpZ2dlcl9mdW5jNCgp OworCitDUkVBVEUgVFJJR0dFUiBndGVzdDEyXzAzIEJFRk9SRSBVUERBVEUgT04gZ3Rlc3Qy NgorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgZ3Rlc3RfdHJpZ2dlcl9m dW5jKCk7CisKK0lOU0VSVCBJTlRPIGd0ZXN0MjYgKGEpIFZBTFVFUyAoMSk7CitVUERBVEUg Z3Rlc3QyNiBTRVQgYSA9IDExIFdIRVJFIGEgPSAxOworU0VMRUNUICogRlJPTSBndGVzdDI2 IE9SREVSIEJZIGE7CisKKy0tIExJS0UgSU5DTFVESU5HIEdFTkVSQVRFRCBhbmQgZHJvcHBl ZCBjb2x1bW4gaGFuZGxpbmcKK0NSRUFURSBUQUJMRSBndGVzdDI4YSAoCisgIGEgaW50LAor ICBiIGludCwKKyAgYyBpbnQsCisgIHggaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIgKiAy KQorKTsKKworQUxURVIgVEFCTEUgZ3Rlc3QyOGEgRFJPUCBDT0xVTU4gYTsKKworQ1JFQVRF IFRBQkxFIGd0ZXN0MjhiIChMSUtFIGd0ZXN0MjhhIElOQ0xVRElORyBHRU5FUkFURUQpOwor CitcZCBndGVzdDI4KgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEx X2dlbmVyYXRlZC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxMV9nZW5lcmF0ZWQu cGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2JkMWU4ODMxNwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxMV9nZW5lcmF0 ZWQucGwKQEAgLTAsMCArMSw2NSBAQAorIyBUZXN0IGdlbmVyYXRlZCBjb2x1bW5zCit1c2Ug c3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVzTm9kZTsKK3VzZSBUZXN0TGli OwordXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMjsKKworIyBzZXR1cAorCitteSAkbm9kZV9w dWJsaXNoZXIgPSBnZXRfbmV3X25vZGUoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVy LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hl ci0+c3RhcnQ7CisKK215ICRub2RlX3N1YnNjcmliZXIgPSBnZXRfbmV3X25vZGUoJ3N1YnNj cmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAn bG9naWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKK215ICRwdWJsaXNoZXJf Y29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVz JzsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFRBQkxFIHRhYjEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlT IEFTIChhICogMikgVklSVFVBTCwgYyBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDMp IFNUT1JFRCkiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkNSRUFURSBUQUJMRSB0YWIxIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJB VEVEIEFMV0FZUyBBUyAoYSAqIDIyKSBWSVJUVUFMLCBjIGludCBHRU5FUkFURUQgQUxXQVlT IEFTIChhICogMzMpIFNUT1JFRCkiKTsKKworIyBkYXRhIGZvciBpbml0aWFsIHN5bmMKKwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJCQkJCSAgICJJTlNF UlQgSU5UTyB0YWIxIChhKSBWQUxVRVMgKDEpLCAoMiksICgzKSIpOworCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gcHVi MSBGT1IgQUxMIFRBQkxFUyIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc3ViMSBDT05ORUNUSU9OICckcHVibGlz aGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT1zdWIxJyBQVUJMSUNBVElPTiBwdWIxIgor KTsKKworIyBXYWl0IGZvciBpbml0aWFsIHN5bmMgb2YgYWxsIHN1YnNjcmlwdGlvbnMKK215 ICRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0gMCBGUk9NIHBnX3N1YnNj cmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdyJywgJ3MnKTsiOworJG5v ZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1 ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVy IHRvIHN5bmNocm9uaXplIGRhdGEiOworCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBhLCBiLCBjIEZST00gdGFiMSIp OworaXMoJHJlc3VsdCwgcXEoMXwyMnwzMworMnw0NHw2NgorM3w2Nnw5OSksICdnZW5lcmF0 ZWQgY29sdW1ucyBpbml0aWFsIHN5bmMnKTsKKworIyBkYXRhIHRvIHJlcGxpY2F0ZQorCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0 YWIxIFZBTFVFUyAoNCksICg1KSIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJVUERBVEUgdGFiMSBTRVQgYSA9IDYgV0hFUkUgYSA9IDUiKTsKKwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWIxJyk7CisKKyRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGEs IGIsIGMgRlJPTSB0YWIxIik7CitpcygkcmVzdWx0LCBxcSgxfDIyfDMzCisyfDQ0fDY2Cisz fDY2fDk5Cis0fDg4fDEzMgorNnwxMzJ8MTk4KSwgJ2dlbmVyYXRlZCBjb2x1bW5zIHJlcGxp Y2F0ZWQnKTsKCmJhc2UtY29tbWl0OiA0M2NiZWRhYjhmZjFlZWY0MDg4ODA3ZmZjMWE2NGEx MDdkZTY3YWY2Ci0tIAoyLjIwLjEKCg== --------------6654DB75553D561D8EB967FE--