Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w3OT1-001AzG-1r for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 01:16:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3OSz-003ilG-03 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 01:15:57 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w3OSy-003il7-1P for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 01:15:57 +0000 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w3OSv-000000006FM-3bii for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 01:15:56 +0000 Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-5a0faa0d15cso1444567e87.0 for ; Thu, 19 Mar 2026 18:15:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773969351; cv=none; d=google.com; s=arc-20240605; b=kEBWx9N2q+kmvKbBuo6yeM1JlW9owgknXltlD//CA4CGKHComrgzI1UZ5uC2LGJ/4P CGxm7k7GK0035jLEQrEo6jL49VVtVdhH0LfgHEI01NJQLw/WFLZYWbX9ljqFsC8eh3fp EmVSqPPERQybBMwO1C2iyjK8DXsE/zdAjyru6gFnNK3BONvbU5S3dVl3GH10C5TLtvwS Udu5yBHnUwKyRvFGcRVhMgWBGOt14yA4MLuPf18vrWuXDa2a8TB4lScHa3aN0T4y8dgp nxJ1OajGdcitWDF9vfod8fAGc9kAF3G//ByoO5/ndqHgPHQzhvlAjGrw7kV2XDbXwVws AvIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=bXWo2IzI6lKfJYVNfbTAyyXpRBreXkF2IFb82392PKE=; fh=uNlui2YEBCtEy2d3vA4RpK+pYZ1szBoDJllA5NTNn30=; b=GFVJAXc1bKQKX4V05nQEnRihXRq9mjj/A5aXUr+ey+w5Cpco0yGprN2SY7YjNh4AKN fOyczdMH02rBZnk5N+kkpNWOfQC5n7aLsFbq6ifX5FPIz0VUSwp8k/GqkjOwBDxXx3EV l5sgfNhFbGIkLFFcZSxIFEKw2TCbV1h2oZBqP2V5ZJGnJaRoJXAp5HfHgc1HO6fA4iY3 4GF+yvYL6kJO/n9RhdtqOKbGFtAaDuUZ0F+5X4G4HNBljRGfaD0kbdGXdl21jj4u4KyU JgUYxmzCuFnWbaZnFo1xwUx4VCDKQFyoIN06JOrHtkD2aUTCCebrrVJy5l4YOIza1LeU OCmA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773969351; x=1774574151; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=bXWo2IzI6lKfJYVNfbTAyyXpRBreXkF2IFb82392PKE=; b=IrizrWP/IgTghRfww58rAPs2+IHF2mTh8oxW8brTmjXjJQqHUA8SMMeCW+Qq5B/slz lZcCtQ2YvBYtdADVbSN2dxwbUVAAAGgOlIHKRQ+u5ISrOjPzxKx4ZXjWnsg7sQ6fYm6j YpDcd1NmlYAG5Vz1Z8d2iffug9JoWlZ6hxoTvdFJomNEkid9nc79nRmp6pegpkceMqF4 Sj+5bWT81ay/CuFa5ypuwy/lYvZrAjM6eCu6MbV/bNsxPwo2WT7KnT21SOCMZldy59Yf L30QgtBe2ATkolFCQBDygRLjEnuSaCQslIUD25yOrkpNAlRlXkixdqRLmJxg4KEwX7Ei 8W9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773969351; x=1774574151; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=bXWo2IzI6lKfJYVNfbTAyyXpRBreXkF2IFb82392PKE=; b=p+E7IMqZ+XIdtuzz2GPM1ie95IA+hJmd/NT/NXmzZXxnA2+VRSPzO1NNruX4MdjI27 ZplH7MvISt3SVkOPUzL+jx9LvcmNFngKbAkeKJ1wprfUJ7g04VJ1FfNj7PA8d4e5HA9h UxEqvZEhVnKfFF4FRrBnXWENtJmoRceeV3STC1gm9jdj8ZoSurSM543eSCUeU85NW7a5 Vkni5LDtE1AvmRbJI7txRQFi3NusPcVLCrDCpQsbklK2+acD8g5/vix74X900LINBNuz sqeMw6+xeUeUemQi/eibi569LNhWqciAio9GXiVo73wSl8lQt8VnElzCEQfQSdiCBqI1 ejrg== X-Gm-Message-State: AOJu0YzGoc9E08K91r5SQlPRjAFJ+KIxKse+IWzIGts4jK6T2Vgb1vIB xfUEQSdzRBaHUuH2Ry08WcbDMh3U/5G/1R+ShfhSvppwNbI5y2t3J4RimF6STffF4ivmpFG1mGt RCxbbsIwiC8mKRxbyiWoCLnFMJ/ciu1eUcQ== X-Gm-Gg: ATEYQzwbOYN44+3ZuFUZH/jgihEz2JqJWsnwNym+grbLY3CVvN50L7u2Kg6bHPvDflr uzwSw+/m1z4X9ndPS1644H4Ugpv6eUC5FzLC6DIgZCH4aqrgxgVnQfRfuw16sO6MHP15VJLBXhu QpjIoXt88njajirjZmSschW35Nu8jdpBhCze07GQ1785HbGTlSbX+CGFeWq1ntnQSf5aV7vhNXF JbV0TUXOtKhD59wq8qKRksGxgcN+5eCYn6xBVqJXq+vqprG3xiKOcLLsGMvjkWk4+LI9tjcATD0 PalwyumqHifw9DtROwh/+Zp34IoMH5iP6gxl34XWW8pQkAuM21edh3zJkbY/TclUAOAdh8+G5N/ HnO4= X-Received: by 2002:a05:6512:33d2:b0:5a1:378c:11ea with SMTP id 2adb3069b0e04-5a285afdc36mr347845e87.13.1773969351112; Thu, 19 Mar 2026 18:15:51 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Fri, 20 Mar 2026 02:15:00 +0100 X-Gm-Features: AaiRm52kbREZECqjo0QlX3PGCmzPBll6q7_RmLsvzyp0S8VzpI3ScTvCADFe3uY Message-ID: Subject: Re: Resetting snapshots during the first phase of [CREATE |RE]INDEX CONCURRENTLY To: PostgreSQL Hackers Cc: Matthias van de Meent , =?UTF-8?Q?=C3=81lvaro_Herrera?= , Antonin Houska , Sergey Sargsyan , Hannu Krosing Content-Type: multipart/mixed; boundary="000000000000041d7b064d6a6d1e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000041d7b064d6a6d1e Content-Type: text/plain; charset="UTF-8" Rebased. --000000000000041d7b064d6a6d1e Content-Type: application/octet-stream; name="v3-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v3-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmy5djwg0 RnJvbSA3NzAyNTU2ZmUwOGQyMzg3MjU0YWIzMDQwOWVhM2YxMTEzZWJhMGYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjMgMS80XSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxk cwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25z OgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlOREVY IElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVlLCBn aW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVuaXF1 ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVzdCBi b3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwoKVGhlc2UgdGVzdHMgdmVy aWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgZm9sbG93aW5nIGNvbW1pdHMuCi0tLQogc3JjL2Jpbi9w Z19hbWNoZWNrL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsIHwgMjI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDIyNiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19h bWNoZWNrL3QvMDA2X2NpYy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNv bi5idWlsZCBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCA1OTJjZWY3NGVj Yi4uNTFhNjJkY2NiN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWls ZAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQKQEAgLTI4LDYgKzI4LDcgQEAg dGVzdHMgKz0gewogICAgICAgJ3QvMDAzX2NoZWNrLnBsJywKICAgICAgICd0LzAwNF92ZXJpZnlf aGVhcGFtLnBsJywKICAgICAgICd0LzAwNV9vcGNsYXNzX2RhbWFnZS5wbCcsCisgICAgICAndC8w MDZfY2ljLnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbCBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcwYjE4NTIxMmU3Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NpYy5wbApAQCAtMCwwICsxLDIyNSBA QAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKKyMgVGVzdCBSRUlOREVYIENPTkNVUlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9kaWZp Y2F0aW9ucyBhbmQgSE9UIHVwZGF0ZXMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK1Rlc3Q6Ok1vcmUtPmJ1aWxkZXIt PnRvZG9fc3RhcnQoJ2ZpbGVzeXN0ZW0gYnVnJykKKyAgaWYgUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM6Omhhc193YWxfcmVhZF9idWc7CisKK215ICgkbm9kZSwgJHJlc3VsdCk7CisKKyMKKyMgVGVz dCBzZXQtdXAKKyMKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdSQ190 ZXN0Jyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKKwknbG9ja190aW1lb3V0ID0gJyAuICgxMDAwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz Ojp0aW1lb3V0X2RlZmF1bHQpKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgJ2ZzeW5jID0gb2ZmJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics ICdtYWludGVuYW5jZV93b3JrX21lbSA9IDMyTUInKTsgIyB0byBhdm9pZCBPT00KKyRub2RlLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ3NoYXJlZF9idWZmZXJzID0gMzJNQicpOyAj IHRvIGF2b2lkIE9PTQorJG5vZGUtPnN0YXJ0OworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxKENSRUFURSBFWFRFTlNJT04gYW1jaGVjaykpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKENSRUFURSBUQUJMRSB0YmwoaSBpbnQgcHJpbWFyeSBrZXksCisJCQkJCQkJCWMxIG1v bmV5IGRlZmF1bHQgMCwgYzIgbW9uZXkgZGVmYXVsdCAwLAorCQkJCQkJCQljMyBtb25leSBkZWZh dWx0IDAsIHVwZGF0ZWRfYXQgdGltZXN0YW1wLAorCQkJCQkJCQlpYSBpbnQ0W10sIHAgcG9pbnQp KSk7CisjIHVuY29tbWVudCB0byBmb3JjZSBub24tSE9UIC0+ICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcShDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiB0YmwoaSwgdXBkYXRl ZF9hdCk7KSk7CisjIGNyZWF0ZSBzZXF1ZW5jZQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxKENSRUFURSBVTkxPR0dFRCBTRVFVRU5DRSBpbl9yb3dfcmVidWlsZCBTVEFSVCAxIElOQ1JF TUVOVCAxOykpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBuZXh0dmFs KCdpbl9yb3dfcmVidWlsZCcpOykpOworCisjIENyZWF0ZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBw cmVkaWNhdGUgdGVzdHMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUg RlVOQ1RJT04gcHJlZGljYXRlX3N0YWJsZSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5H VUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVu dCgpJzsKKwkJUkVUVVJOIHRydWU7CisJRU5EOyAkJDsKKykpOworCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRFIEZVTkNUSU9OIHByZWRpY2F0ZV9jb25zdChpbnRlZ2Vy KSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorCUJFR0lO CisJCVJFVFVSTiBNT0QoJDEsIDIpID0gMDsKKwlFTkQ7ICQkOworKSk7CisKKyMgUnVuIENJQy9S SUMgaW4gZGlmZmVyZW50IG9wdGlvbnMgY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUt PnBnYmVuY2goCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTE1IC0tam9icz00IC0tZXhpdC1vbi1h Ym9ydCAtLXRyYW5zYWN0aW9ucz0xMDAwJywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9 XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZJywKKwl7CisJCSdjb25jdXJyZW50X29wcycgPT4gcSgKKwkJ CVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9mZjsgLS0gdGhpcyBpcyBiZWNhdXNlIHByZWRp Y2F0ZV9zdGFibGUgaW1wbGVtZW50YXRpb24KKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9j ayg0Mik6OmludGVnZXIgQVMgZ290bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VM RUNUIG5leHR2YWwoJ2luX3Jvd19yZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxz ZXQgdmFyaWFudCByYW5kb20oMCwgNSkKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkK KwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFs bGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7CisJ CQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBu ZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfc3RhYmxlKCk7CisJ CQkJCVxlbGlmIDp2YXJpYW50ID0gMgorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBu ZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0KSBXSEVSRSBNT0QoaSwgMikgPSAwOworCQkJCQlc ZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlc ZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwocHJlZGljYXRlX2NvbnN0KGkpKTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSA1CisJ CQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsKGksIHByZWRpY2F0 ZV9jb25zdChpKSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlc ZW5kaWYKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnbmV3 X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJ CQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCQlcc2xlZXAgMTAgbXMK KwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4g dHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZ IG5ld19pZHg7CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7 CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVHSU47 CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxu b3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93 KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAs MCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSww LDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0 ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVt KSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVk X2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6 bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsK KwkJCQlDT01NSVQ7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciB1 bmlxdWUgaW5kZXggY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJ Jy0tbm8tdmFjdXVtIC0tY2xpZW50PTE1IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5z YWN0aW9ucz0xMDAwJywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9 XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09O Q1VSUkVOVExZIGZvciB1bmlxdWUgQlRSRUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3VuaXF1 ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2Vy IEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdp bl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyBy YW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRi bCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsKGkpOworCQkJCQlcc2xlZXAgMTAgbXMK KwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4g dHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIG5ld19pZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hl Y2soJ25ld19pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVl KTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJ CQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0g cmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBW QUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNU KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2YWwo J2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMv UklDIGZvciBHSU4gd2l0aCB1cHNlcnRzCiskbm9kZS0+cGdiZW5jaCgKKwknLS1uby12YWN1dW0g LS1jbGllbnQ9MTUgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0IC0tdHJhbnNhY3Rpb25zPTEwMDAn LAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJy ZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9y IEdJTi9HSVNUL0JSSU4vSEFTSC9TUEdJU1QnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX2dpbl9p ZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFT IGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9y b3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5k b20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBT RVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgR0lOIChpYSk7CisJCQkJCVxzbGVlcCAxMCBt cworCQkJCQlTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCduZXdfaWR4Jyk7CisJCQkJCVJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxF Q1QgZ2luX2luZGV4X2NoZWNrKCduZXdfaWR4Jyk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVO VExZIG5ld19pZHg7CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0 Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEs IDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAs MCwwLG5vdygpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQg PSBub3coKTsKKwkJCQlTRUxFQ1Qgc2V0dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJXGVu ZGlmCisJCSkKKwl9KTsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRF IFRBQkxFIHRibDspKTsKKworIyBSdW4gQ0lDL1JJQyBmb3IgR0lTVC9CUklOL0hBU0gvU1BHSVNU IGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5v LXZhY3V1bSAtLWNsaWVudD0xNSAtLWpvYnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlv bnM9MTAwMCcsCisJMCwKKwlbcXJ7YWN0dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJ J2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9IQVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9v cHNfb3RoZXJfaWR4JyA9PiBxKAorCQkJU0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6 aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4 dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCBwYXJh bGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJXGlmIDpsYXN0X3ZhbHVlIDwgMworCQkJCQlBTFRFUiBU QUJMRSB0YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTpwYXJhbGxlbHMpOworCQkJCQlcc2V0IHZh cmlhbnQgcmFuZG9tKDAsIDMpCisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgR0lTVCAocCk7CisJCQkJCVxl bGlmIDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4 IE9OIHRibCBVU0lORyBCUklOICh1cGRhdGVkX2F0KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAy CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVTSU5HIEhB U0ggKHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgU1BHSVNUIChwKTsKKwkJCQkJ XGVuZGlmCisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBuZXdfaWR4OworCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQy KTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwg NSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCww LDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9 IG5vdygpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5k aWYKKwkJKQorCX0pOworCiskbm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuNDMuMAoK --000000000000041d7b064d6a6d1e Content-Type: application/octet-stream; name="v3-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Disposition: attachment; filename="v3-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmy5djwp2 RnJvbSAwYTgzN2UzZTJmYWM1ZWZhMTM3YWNlYjY3NDY4MjI5YWE1OGIxZWM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxODo0NTo1NiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjMgMy80XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBwYXJhbGxlbCBjb25jdXJy ZW50IGluZGV4CiBidWlsZHMKCkV4dGVuZCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldCBzdXBwb3J0 IHRvIHBhcmFsbGVsIGJ1aWxkcywgcHJldmlvdXNseSBsaW1pdGVkIHRvIG5vbi1wYXJhbGxlbCBv cGVyYXRpb25zLiBUaGlzIGFsbG93cyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UgZHVyaW5n IHBhcmFsbGVsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIGFzIHdlbGwuCgpUaGUgbWFpbiBsaW1p dGF0aW9uIG9mIGFwcGx5aW5nIHRoYXQgdGVjaG5pcXVlIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMg YSByZXF1aXJlbWVudCB0byB3YWl0IHVudGlsIHdvcmtlciBwcm9jZXNzZXMgcmVzdG9yZSB0aGVp ciBpbml0aWFsIHNuYXBzaG90IGZyb20gbGVhZGVyLgoKVG8gYWRkcmVzcyB0aGlzLCBmb2xsb3dp bmcgY2hhbmdlcyBhcHBsaWVkOgotIGFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hv dCByZXN0b3JhdGlvbiBpbiBwYXJhbGxlbCB3b3JrZXJzCi0gZXh0ZW5kIHBhcmFsbGVsIHNjYW4g aW5pdGlhbGl6YXRpb24gdG8gc3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSB3YWl0 IGZvciBwYXJhbGxlbCB3b3JrZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMg YmVmb3JlIHByb2NlZWRpbmcgd2l0aCBzY2FuCi0gcmVsYXggbGltaXRhdGlvbiBmb3IgcGFyYWxs ZWwgd29ya2VyIHRvIGNhbGwgR2V0TGF0ZXN0U25hcHNob3QKLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCA1NCArKysrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgNTEgKysrKysrKysr LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg MTIgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwg NjAgKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YyAgICAgICAgICAgIHwgMzcgKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jICAgICAgICAgfCA0OSArKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2Vxc2Nhbi5jICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3Rp bWUvc25hcG1nci5jICAgICAgICAgICAgICB8ICA4IC0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Bh cmFsbGVsLmggICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmggICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmggICAgICAgICAgICAgICAgICB8ICA1ICstCiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsICAgICAgICAgICAgICAgfCAgNSArLQogMTQgZmlsZXMgY2hhbmdlZCwgMjA4IGluc2VydGlv bnMoKyksIDg1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCA4NTM0ZDcx MjVhMC4uZDNmYzhjMTRhNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTE0Nyw3ICsxNDcs NiBAQCB0eXBlZGVmIHN0cnVjdCBCcmluTGVhZGVyCiAJICovCiAJQnJpblNoYXJlZCAqYnJpbnNo YXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwotCVNuYXBzaG90CXNuYXBzaG90OwogCVdh bFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIH0gQnJpbkxl YWRlcjsKQEAgLTIzNSw3ICsyMzQsNyBAQCBzdGF0aWMgdm9pZCBicmluX2ZpbGxfZW1wdHlfcmFu Z2VzKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIHN0YXRpYyB2b2lkIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkJCQkJCQkJIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCk7CiBzdGF0aWMg dm9pZCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwgQnJpbkJ1aWxk U3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBTaXplIF9icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJl ZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitzdGF0aWMgU2l6ZSBfYnJpbl9w YXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCk7CiBzdGF0aWMgZG91YmxlIF9i cmluX3BhcmFsbGVsX2hlYXBzY2FuKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgZG91 YmxlIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMg dm9pZCBfYnJpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEJyaW5CdWlsZFN0YXRlICpi dWlsZHN0YXRlLApAQCAtMTIyNiw3ICsxMjI1LDYgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJcmVsdHVwbGVzID0gX2Jy aW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9icmluX2VuZF9wYXJhbGxlbChzdGF0ZS0+ YnNfbGVhZGVyLCBzdGF0ZSk7Ci0JCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8 ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJZWxzZQkJCQkJCS8q IG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtMTI1OSw3ICsxMjU3LDYgQEAgYnJp bmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5m bykKIAkJYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBzdGF0ZS0+YnNf Y3VyclJhbmdlU3RhcnQsCiAJCQkJCQkJICAgc3RhdGUtPmJzX21heFJhbmdlU3RhcnQpOwotCQlB c3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAJfQogCiAJLyogcmVsZWFzZSByZXNvdXJjZXMgKi8KQEAgLTEyNzUs NiArMTI3Miw5IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5k ZXhJbmZvICppbmRleEluZm8pCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAly ZXN1bHQtPmluZGV4X3R1cGxlcyA9IGlkeHR1cGxlczsKIAorCUludmFsaWRhdGVDYXRhbG9nU25h cHNob3QoKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0y Mzg0LDcgKzIzODQsNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiB7CiAJUGFyYWxsZWxDb250 ZXh0ICpwY3h0OwogCWludAkJCXNjYW50dXBsZXNvcnRzdGF0ZXM7Ci0JU25hcHNob3QJc25hcHNo b3Q7CiAJU2l6ZQkJZXN0YnJpbnNoYXJlZDsKIAlTaXplCQllc3Rzb3J0OwogCUJyaW5TaGFyZWQg KmJyaW5zaGFyZWQ7CkBAIC0yNDE1LDI1ICsyNDE0LDI1IEBAIF9icmluX2JlZ2luX3BhcmFsbGVs KEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3Jt YWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCBy ZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAo YmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkg KiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBp bmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJy ZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFz IGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRv IHRoYXQgc25hcHNob3Qgd2hpbGUgdGhhdAorCSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGlj YWxseS4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFw c2hvdFNldCgpKTsKLQkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVsc2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBz aG90U2V0KCkpOwogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKIAl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZ X0JSSU5fU0hBUkVEIHdvcmtzcGFjZS4KIAkgKi8KLQllc3Ricmluc2hhcmVkID0gX2JyaW5fcGFy YWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAsIHNuYXBzaG90KTsKKwllc3Ricmluc2hhcmVkID0g X2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXApOwogCXNobV90b2NfZXN0aW1hdGVf Y2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0YnJpbnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxl c29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1cGxlc29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3Rp bWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBlc3Rzb3J0KTsKQEAgLTI0NzMsOCArMjQ3Miw2 IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl7CiAJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25h cHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25h cHNob3QpKQotCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFs bGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwogCQlyZXR1cm47CkBAIC0y NDk5LDcgKzI0OTYsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAKIAl0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRnJvbUJy aW5TaGFyZWQoYnJpbnNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIGlz Y29uY3VycmVudCA/IEludmFsaWRTbmFwc2hvdCA6IFNuYXBzaG90QW55LAorCQkJCQkJCQkgIGlz Y29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBz dGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMjU0NSw3ICsyNTQzLDYgQEAg X2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQlicmlubGVhZGVyLT5ucGFydGljaXBhbnR0dXBsZXNv cnRzKys7CiAJYnJpbmxlYWRlci0+YnJpbnNoYXJlZCA9IGJyaW5zaGFyZWQ7CiAJYnJpbmxlYWRl ci0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQ7Ci0JYnJpbmxlYWRlci0+c25hcHNob3QgPSBzbmFw c2hvdDsKIAlicmlubGVhZGVyLT53YWx1c2FnZSA9IHdhbHVzYWdlOwogCWJyaW5sZWFkZXItPmJ1 ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CiAKQEAgLTI1NjEsNiArMjU1OCwxMyBAQCBfYnJpbl9i ZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQncyBjbGVh ciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVyID0gYnJp bmxlYWRlcjsKIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIHNuYXBzaG90 cyBhcmUgZ29pbmcgdG8gYmUgcmVzZXQgcGVyaW9kaWNhbGx5LgorCSAqIFdlIG5lZWQgdG8gd2Fp dCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlm IChpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0 cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwogCWlmIChsZWFkZXJwYXJ0 aWNpcGF0ZXMpCiAJCV9icmluX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0 ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMjU2OSw5ICsyNTczLDEzIEBAIF9icmluX2JlZ2luX3BhcmFs bGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkgKiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtlcnMg d2hlbiB3ZSByZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0 IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJhbGxlbFdvcmtl cnNUb0F0dGFjaChwY3h0KTsKKwlpZiAoIWlzY29uY3VycmVudCkKKwkJV2FpdEZvclBhcmFsbGVs V29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBz aG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hv dCgpOworCUFzc2VydCghYnJpbmxlYWRlci0+YnJpbnNoYXJlZC0+aXNjb25jdXJyZW50IHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIH0KIAogLyoKQEAgLTI1OTIsOSAr MjYwMCw2IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVhZGVyICpicmlubGVhZGVyLCBCcmlu QnVpbGRTdGF0ZSAqc3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IGJyaW5sZWFkZXItPnBjeHQtPm53 b3JrZXJzX2xhdW5jaGVkOyBpKyspCiAJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZicmlubGVh ZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJyaW5sZWFkZXItPndhbHVzYWdlW2ldKTsKIAotCS8qIEZy ZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYgb25lIHdhcyB1c2VkICovCi0J aWYgKElzTVZDQ1NuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KSkKLQkJVW5yZWdpc3RlclNu YXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGJy aW5sZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsKIH0KQEAgLTI3OTQsMTQgKzI3 OTksMTQgQEAgX2JyaW5fcGFyYWxsZWxfbWVyZ2UoQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCiAv KgogICogUmV0dXJucyBzaXplIG9mIHNoYXJlZCBtZW1vcnkgcmVxdWlyZWQgdG8gc3RvcmUgc3Rh dGUgZm9yIGEgcGFyYWxsZWwKLSAqIGJyaW4gaW5kZXggYnVpbGQgYmFzZWQgb24gdGhlIHNuYXBz aG90IGl0cyBwYXJhbGxlbCBzY2FuIHdpbGwgdXNlLgorICogYnJpbiBpbmRleCBidWlsZC4KICAq Lwogc3RhdGljIFNpemUKLV9icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBo ZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCkKK19icmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChS ZWxhdGlvbiBoZWFwKQogewogCS8qIGMuZi4gc2htX3RvY19hbGxvY2F0ZSBhcyB0byB3aHkgQlVG RkVSQUxJR04gaXMgdXNlZCAqLwogCXJldHVybiBhZGRfc2l6ZShCVUZGRVJBTElHTihzaXplb2Yo QnJpblNoYXJlZCkpLAotCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoaGVhcCwgc25h cHNob3QpKTsKKwkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIEludmFsaWRT bmFwc2hvdCkpOwogfQogCiAvKgpAQCAtMjk2Myw2ICsyOTY4LDEzIEBAIF9icmluX3BhcmFsbGVs X2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCiAJX2JyaW5fcGFy YWxsZWxfc2Nhbl9hbmRfYnVpbGQoYnVpbGRzdGF0ZSwgYnJpbnNoYXJlZCwgc2hhcmVkc29ydCwK IAkJCQkJCQkJICBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFsc2UpOworCWlmIChicmlu c2hhcmVkLT5pc2NvbmN1cnJlbnQpCisJeworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCX0KIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxl bCBleGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxM RUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMK aW5kZXggYzMwODVkMTc0YzcuLmU5MjIwYjBhNzJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMKQEAgLTEzOCw3ICsxMzgsNiBAQCB0eXBlZGVmIHN0cnVjdCBHaW5MZWFkZXIKIAkgKi8K IAlHaW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7Ci0J U25hcHNob3QJc25hcHNob3Q7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2Ug KmJ1ZmZlcnVzYWdlOwogfSBHaW5MZWFkZXI7CkBAIC0xODgsNyArMTg3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QKIHN0YXRpYyB2b2lkIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCWJvb2wgaXNj b25jdXJyZW50LCBpbnQgcmVxdWVzdCk7CiBzdGF0aWMgdm9pZCBfZ2luX2VuZF9wYXJhbGxlbChH aW5MZWFkZXIgKmdpbmxlYWRlciwgR2luQnVpbGRTdGF0ZSAqc3RhdGUpOwotc3RhdGljIFNpemUg X2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25h cHNob3QpOworc3RhdGljIFNpemUgX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRp b24gaGVhcCk7CiBzdGF0aWMgZG91YmxlIF9naW5fcGFyYWxsZWxfaGVhcHNjYW4oR2luQnVpbGRT dGF0ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxk U3RhdGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIF9naW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dv cmtlcihHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLApAQCAtNzU1LDcgKzc1NCw2IEBAIGdpbmJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykK IAkJcmVsdHVwbGVzID0gX2dpbl9wYXJhbGxlbF9tZXJnZShzdGF0ZSk7CiAKIAkJX2dpbl9lbmRf cGFyYWxsZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+ aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJ fQogCWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTc3OSw3 ICs3NzcsNiBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJ bmZvICppbmRleEluZm8pCiAJCQkJCQkgICBsaXN0LCBubGlzdCwgJmJ1aWxkc3RhdGUuYnVpbGRT dGF0cyk7CiAJCX0KIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7Ci0JCUFzc2VydCgh aW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhtaW4pKTsKIAl9CiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKGJ1aWxkc3RhdGUuZnVuY0N0eCk7 CkBAIC04MDksNiArODA2LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1 cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFz c2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC05NDcsNyArOTQ1LDYgQEAg X2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwKIHsKIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAJaW50CQkJ c2NhbnR1cGxlc29ydHN0YXRlczsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlTaXplCQllc3RnaW5z aGFyZWQ7CiAJU2l6ZQkJZXN0c29ydDsKIAlHaW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwpAQCAt OTc3LDI1ICs5NzQsMjUgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBz Y2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVz ZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFu ZCBkbyBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGlu ZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3 ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICog bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEg cmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3 ZSBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUg dGhhdAorCSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlz Y29uY3VycmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNo b3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJ fQogCWVsc2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVz dGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQgd29ya3NwYWNl LgogCSAqLwotCWVzdGdpbnNoYXJlZCA9IF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhl YXAsIHNuYXBzaG90KTsKKwllc3RnaW5zaGFyZWQgPSBfZ2luX3BhcmFsbGVsX2VzdGltYXRlX3No YXJlZChoZWFwKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVz dGdpbnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1 cGxlc29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCBlc3Rzb3J0KTsKQEAgLTEwMzUsOCArMTAzMiw2IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2lu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ ewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3Qo KTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKLQkJCVVucmVnaXN0ZXJTbmFwc2hv dChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJh bGxlbE1vZGUoKTsKIAkJcmV0dXJuOwpAQCAtMTA2MCw3ICsxMDU1LDggQEAgX2dpbl9iZWdpbl9w YXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwKIAogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGhlYXAsCiAJCQkJCQkJ CSAgUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKLQkJCQkJ CQkJICBzbmFwc2hvdCk7CisJCQkJCQkJCSAgaXNjb25jdXJyZW50ID8gSW52YWxpZFNuYXBzaG90 IDogU25hcHNob3RBbnksCisJCQkJCQkJCSAgaXNjb25jdXJyZW50KTsKIAogCS8qCiAJICogU3Rv cmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2ZWQg c3BhY2UuCkBAIC0xMTAyLDcgKzEwOTgsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQlnaW5s ZWFkZXItPm5wYXJ0aWNpcGFudHR1cGxlc29ydHMrKzsKIAlnaW5sZWFkZXItPmdpbnNoYXJlZCA9 IGdpbnNoYXJlZDsKIAlnaW5sZWFkZXItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwotCWdpbmxl YWRlci0+c25hcHNob3QgPSBzbmFwc2hvdDsKIAlnaW5sZWFkZXItPndhbHVzYWdlID0gd2FsdXNh Z2U7CiAJZ2lubGVhZGVyLT5idWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOwogCkBAIC0xMTE4LDYg KzExMTMsMTMgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRl LCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBu b3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdpbGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRl LT5ic19sZWFkZXIgPSBnaW5sZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVu dCBidWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkg KiBXZSBuZWVkIHRvIHdhaXQgdW50aWwgYWxsIHdvcmtlcnMgaW1wb3J0ZWQgaW5pdGlhbCBzbmFw c2hvdC4KKwkgKi8KKwlpZiAoaXNjb25jdXJyZW50KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJz VG9BdHRhY2gocGN4dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8K IAlpZiAobGVhZGVycGFydGljaXBhdGVzKQogCQlfZ2luX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193 b3JrZXIoYnVpbGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMTEyNiw5ICsxMTI4LDEyIEBAIF9n aW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVu Y2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFp bHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9y UGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFpc2NvbmN1cnJlbnQpCisJCVdh aXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9w X2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KCFnaW5sZWFkZXItPmdpbnNoYXJlZC0+aXNjb25jdXJy ZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIH0KIAogLyoKQEAg LTExNDksOSArMTE1NCw2IEBAIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVy LCBHaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAlmb3IgKGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0 LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lu bGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmdpbmxlYWRlci0+d2FsdXNhZ2VbaV0pOwogCi0JLyog RnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8K LQlpZiAoSXNNVkNDU25hcHNob3QoZ2lubGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJT bmFwc2hvdChnaW5sZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGdp bmxlYWRlci0+cGN4dCk7CiAJRXhpdFBhcmFsbGVsTW9kZSgpOwogfQpAQCAtMTgyNiwxNCArMTgy OCwxNCBAQCBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCiAvKgog ICogUmV0dXJucyBzaXplIG9mIHNoYXJlZCBtZW1vcnkgcmVxdWlyZWQgdG8gc3RvcmUgc3RhdGUg Zm9yIGEgcGFyYWxsZWwKLSAqIGdpbiBpbmRleCBidWlsZCBiYXNlZCBvbiB0aGUgc25hcHNob3Qg aXRzIHBhcmFsbGVsIHNjYW4gd2lsbCB1c2UuCisgKiBnaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0 YXRpYyBTaXplCi1fZ2luX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBT bmFwc2hvdCBzbmFwc2hvdCkKK19naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9u IGhlYXApCiB7CiAJLyogYy5mLiBzaG1fdG9jX2FsbG9jYXRlIGFzIHRvIHdoeSBCVUZGRVJBTElH TiBpcyB1c2VkICovCiAJcmV0dXJuIGFkZF9zaXplKEJVRkZFUkFMSUdOKHNpemVvZihHaW5CdWls ZFNoYXJlZCkpLAotCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoaGVhcCwgc25hcHNo b3QpKTsKKwkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIEludmFsaWRTbmFw c2hvdCkpOwogfQogCiAvKgpAQCAtMjIxOCw2ICsyMjIwLDEzIEBAIF9naW5fcGFyYWxsZWxfYnVp bGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAlfZ2luX3BhcmFsbGVs X3NjYW5fYW5kX2J1aWxkKCZidWlsZHN0YXRlLCBnaW5zaGFyZWQsIHNoYXJlZHNvcnQsCiAJCQkJ CQkJCSBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFsc2UpOworCWlmIChnaW5zaGFyZWQt PmlzY29uY3VycmVudCkKKwl7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhtaW4pKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CisJfQogCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1 dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlf QlVGRkVSX1VTQUdFLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYwppbmRleCA5Y2FkMmUxMTViZC4uYTYzOWU4YjMxZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTI2MCwxNCArMTI2MCwxMyBAQCBoZWFwYW1faW5k ZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogU25hcHNob3RB bnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGlt ZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVB RCB0dXBsZXMpLiBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgb3IgZHVyaW5nIGJvb3RzdHJh cCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdAotCSAqIGFuZCBpbmRleCB3aGF0ZXZl cidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2 ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0aGF0IHNuYXBzaG90IGlzIHJlc2V0CisJICogZXZl cnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCkuCiAJICovCiAJT2xkZXN0 WG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKIAkgKiBGb3IgdW5pcXVlIGluZGV4 IHdlIG5lZWQgY29uc2lzdGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCi0JICogSW4g Y2FzZSBvZiBwYXJhbGxlbCBzY2FuIHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1 aXJlZAotCSAqIHRvIHBlcmZvcm0gc2NhbiB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlz IG5vdCB5ZXQgcmVhZHkuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9D b25jdXJyZW50ICYmCiAJCQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCkBAIC0xMzI5LDgg KzEzMjgsMTEgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCQlBc3NlcnQoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2Vy dChhbGxvd19zeW5jKTsKIAkJc25hcHNob3QgPSBzY2FuLT5yc19zbmFwc2hvdDsKLQkJUHVzaEFj dGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1 ZTsKKwkJaWYgKCFyZXNldF9zbmFwc2hvdHMpCisJCXsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChz bmFwc2hvdCk7CisJCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOworCQl9CiAJfQog CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwppbmRleCA2ZjA5MWQzOTgxMy4uMDFlMzM4ZmI1NjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c29ydC5jCkBAIC0zMjUsMjIgKzMyNSwyMCBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShpbmRleCkpOwogCiAJcmVsdHVwbGVzID0gX2J0X3Nwb29sc19oZWFwc2Nhbiho ZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUsIGluZGV4SW5mbyk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+ aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWlu KSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9V bmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkg KiBGaW5pc2ggdGhlIGJ1aWxkIGJ5ICgxKSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9v bCBmaWxlLCAoMikKIAkgKiBpbnNlcnRpbmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBw YWdlcyBhbmQgKDMpIGJ1aWxkaW5nIHRoZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0 IG1heSBhbHNvIGJlIG5lY2Vzc2FyeSB0byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwot CV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRl eEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyAmJiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwor CV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRl eEluZm8tPmlpX1VuaXF1ZSAmJiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCV9idF9zcG9v bGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlf YnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxl YWRlcikKIAkJX2J0X2VuZF9wYXJhbGxlbChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKLQlBc3NlcnQo aW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwK LQkJICAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRl eEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CiAKIAlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEluZGV4QnVpbGRSZXN1bHQpOwogCkBAIC00ODks OCArNDg3LDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxs ZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tl bkhvdENoYWluKTsKIAlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4 SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAg IWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZv LT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ LyoKIAkgKiBTZXQgdGhlIHByb2dyZXNzIHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNl dCB0aGUgYmxvY2sgbnVtYmVyCkBAIC0xNDIyLDYgKzE0MTksNyBAQCBfYnRfYmVnaW5fcGFyYWxs ZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVl c3QpCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRl cyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwlib29s CQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVB REVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzksMTIgKzE0MzcsMjEgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVl c3QgKyAxIDogcmVxdWVzdDsKIAorICAgIC8qCisJICogRm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1 ZSBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQgc25hcHNob3RzCisJICog dG8gYWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiBUaGlzIGlzIHNhZmUgc2luY2Ug dGhlc2UgYnVpbGRzIGRvbid0CisJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3Mg dGhlIGVudGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBzdGlsbCBuZWVkCisJICogYSBzdGFibGUg c25hcHNob3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLgorICAg ICAqLworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFidHNwb29sLT5pc3VuaXF1 ZTsKKwogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIElu IGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdl IG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBj aGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJ biBhCiAJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hv dCBhbmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICog bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQg cGVyaW9kaWNhbGx5IGluCisJICogY2FzZSBvZiBub24tdW5pcXVlIGluZGV4LgogCSAqLwogCWlm ICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTIsNiArMTQ1OSwxMSBAQCBfYnRfYmVnaW5fcGFy YWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJl cXVlc3QpCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2ZV9zbmFw c2hvdCA9IGZhbHNlOwogCX0KKwllbHNlIGlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCXNuYXBz aG90ID0gSW52YWxpZFNuYXBzaG90OworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rp b25TbmFwc2hvdCgpKTsKKwl9CiAJZWxzZQogCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBAIC0xNTEyLDcgKzE1MjQsNyBAQCBfYnRf YmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVu dCwgaW50IHJlcXVlc3QpCiAJewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKKwkJ aWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hv dCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxD b250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xNTM5LDcgKzE1NTEsOCBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRzaGFyZWQtPmJyb2tlbmhvdGNoYWluID0gZmFsc2U7 CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJ ICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCi0JCQkJCQkJCSAgc25h cHNob3QpOworCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJCQkJCQkgIHJlc2V0X3NuYXBzaG90KTsK IAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hp Y2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0xNjE1LDYgKzE2MjgsMTMgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3MgY2xlYXIgYnVpbGQg d2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUtPmJ0bGVhZGVyID0gYnRsZWFkZXI7CiAK KwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5n IHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBXYWl0IHVudGlsIGFsbCB3b3JrZXJzIGlt cG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCQlX YWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhl YXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVycGFydGljaXBhdGVzKQogCQlfYnRfbGVh ZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0YXRlKTsKQEAgLTE2MjMsOSArMTY0Mywx MyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFs bCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0 aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlX YWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFyZXNldF9zbmFwc2hv dCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAo bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJSW52 YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghcmVzZXRfc25hcHNob3R8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiB9CiAKIC8qCkBAIC0xNjQ3LDcgKzE2 NzEsNyBAQCBfYnRfZW5kX3BhcmFsbGVsKEJUTGVhZGVyICpidGxlYWRlcikKIAkJSW5zdHJBY2N1 bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJ0bGVhZGVyLT53YWx1 c2FnZVtpXSk7CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlm IG9uZSB3YXMgdXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3Qp KQorCWlmIChidGxlYWRlci0+c25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1Nu YXBzaG90KGJ0bGVhZGVyLT5zbmFwc2hvdCkpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChidGxlYWRl ci0+c25hcHNob3QpOwogCURlc3Ryb3lQYXJhbGxlbENvbnRleHQoYnRsZWFkZXItPnBjeHQpOwog CUV4aXRQYXJhbGxlbE1vZGUoKTsKQEAgLTE4OTcsNiArMTkyMSw3IEBAIF9idF9wYXJhbGxlbF9z Y2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCVNvcnRD b29yZGluYXRlIGNvb3JkaW5hdGU7CiAJQlRCdWlsZFN0YXRlIGJ1aWxkc3RhdGU7CiAJVGFibGVT Y2FuRGVzYyBzY2FuOworCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKIAlkb3VibGUJCXJl bHR1cGxlczsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKQEAgLTE5NTEsMTEgKzE5NzYsMTUg QEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAq YnRzcG9vbDIsCiAJLyogSm9pbiBwYXJhbGxlbCBzY2FuICovCiAJaW5kZXhJbmZvID0gQnVpbGRJ bmRleEluZm8oYnRzcG9vbC0+aW5kZXgpOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGJ0 c2hhcmVkLT5pc2NvbmN1cnJlbnQ7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChi dHNwb29sLT5oZWFwLAotCQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRz aGFyZWQpKTsKKwlwc2NhbiA9IFBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVk KTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsIHBzY2Fu KTsKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0 c3Bvb2wtPmluZGV4LCBpbmRleEluZm8sCiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0 X2J1aWxkX2NhbGxiYWNrLAogCQkJCQkJCQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOworCUludmFs aWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCkK KwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNo b3QgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogRXhlY3V0 ZSB0aGlzIHdvcmtlcidzIHBhcnQgb2YgdGhlIHNvcnQgKi8KIAlpZiAocHJvZ3Jlc3MpCkBAIC0x OTkxLDQgKzIwMjAsNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNw b29sLCBCVFNwb29sICpidHNwb29sMiwKIAl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wtPnNvcnRzdGF0 ZSk7CiAJaWYgKGJ0c3Bvb2wyKQogCQl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wyLT5zb3J0c3RhdGUp OworCUFzc2VydCghcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJ CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXggZGZkYTFhZjQxMmUuLjI2ZGY1NjM4OTIxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHRhYmxlX3Bh cmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogewog CVNpemUJCXN6ID0gMDsKIAotCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJaWYgKHNu YXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJ CXN6ID0gYWRkX3NpemUoc3osIEVzdGltYXRlU25hcHNob3RTcGFjZShzbmFwc2hvdCkpOwogCWVs c2UKLQkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KHNuYXBzaG90 ID09IFNuYXBzaG90QW55IHx8IHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CiAKIAlzeiA9 IGFkZF9zaXplKHN6LCByZWwtPnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nhbl9lc3RpbWF0ZShyZWwp KTsKIApAQCAtMTQ0LDIxICsxNDQsMzYgQEAgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJl bGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QpCiAKIHZvaWQKIHRhYmxlX3BhcmFsbGVsc2Nh bl9pbml0aWFsaXplKFJlbGF0aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAot CQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpCisJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwg Ym9vbCByZXNldF9zbmFwc2hvdCkKIHsKIAlTaXplCQlzbmFwc2hvdF9vZmYgPSByZWwtPnJkX3Rh YmxlYW0tPnBhcmFsbGVsc2Nhbl9pbml0aWFsaXplKHJlbCwgcHNjYW4pOwogCiAJcHNjYW4tPnBo c19zbmFwc2hvdF9vZmYgPSBzbmFwc2hvdF9vZmY7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25h cHNob3QpKQorCS8qCisJICogSW5pdGlhbGl6ZSBwYXJhbGxlbCBzY2FuIGRlc2NyaXB0aW9uLiBG b3Igbm9ybWFsIHNjYW5zIHdpdGggYSByZWd1bGFyCisJICogTVZDQyBzbmFwc2hvdCwgc2VyaWFs aXplIHRoZSBzbmFwc2hvdCBpbmZvLiBGb3Igc2NhbnMgdGhhdCB1c2UgcGVyaW9kaWMKKwkgKiBz bmFwc2hvdCByZXNldHMsIG1hcmsgdGhlIHNjYW4gYWNjb3JkaW5nbHkuCisJICovCisJaWYgKHJl c2V0X3NuYXBzaG90KQorCXsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7 CisJCXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRf c25hcHNob3QgPSB0cnVlOworCQlJTkpFQ1RJT05fUE9JTlQoInRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplIiwgTlVMTCk7CisJfQorCWVsc2UgaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90 KSkKIAl7CiAJCVNlcmlhbGl6ZVNuYXBzaG90KHNuYXBzaG90LCAoY2hhciAqKSBwc2NhbiArIHBz Y2FuLT5waHNfc25hcHNob3Rfb2ZmKTsKIAkJcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxz ZTsKKwkJcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewog CQlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNob3RBbnkpOworCQlBc3NlcnQoIXJlc2V0X3NuYXBz aG90KTsKIAkJcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkgPSB0cnVlOworCQlwc2Nhbi0+cGhzX3Jl c2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogfQogCkBAIC0xNzEsNyArMTg2LDE5IEBAIHRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5E ZXNjIHBzY2FuKQogCiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9s b2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsKIAotCWlmICghcHNjYW4tPnBoc19zbmFwc2hv dF9hbnkpCisJLyoKKwkgKiBGb3Igc2NhbnMgdGhhdAorCSAqIHVzZSBwZXJpb2RpYyBzbmFwc2hv dCByZXNldHMsIG1hcmsgdGhlIHNjYW4gYWNjb3JkaW5nbHkgYW5kIHVzZSB0aGUgYWN0aXZlCisJ ICogc25hcHNob3QgYXMgdGhlIGluaXRpYWwgc3RhdGUuCisJICovCisJaWYgKHBzY2FuLT5waHNf cmVzZXRfc25hcHNob3QpCisJeworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCWZs YWdzIHw9IFNPX1JFU0VUX1NOQVBTSE9UOworCQkvKiBTdGFydCB3aXRoIGN1cnJlbnQgYWN0aXZl IHNuYXBzaG90LiAqLworCQlzbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVs c2UgaWYgKCFwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSkKIAl7CiAJCS8qIFNuYXBzaG90IHdhcyBz ZXJpYWxpemVkIC0tIHJlc3RvcmUgaXQgKi8KIAkJc25hcHNob3QgPSBSZXN0b3JlU25hcHNob3Qo KGNoYXIgKikgcHNjYW4gKyBwc2Nhbi0+cGhzX3NuYXBzaG90X29mZik7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCBhYjFkZmIzMGU3My4uMDQ5OGMwN2MzN2IgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwpAQCAtNzksNiArNzksNyBAQAogI2RlZmlu ZSBQQVJBTExFTF9LRVlfUkVMTUFQUEVSX1NUQVRFCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZG RjAwMEQpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9VTkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05T VCgweEZGRkZGRkZGRkZGRjAwMEUpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5G TwkJCVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZGMDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZ X1NOQVBTSE9UX1JFU1RPUkVECQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8q IEZpeGVkLXNpemUgcGFyYWxsZWwgc3RhdGUuICovCiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFs bGVsU3RhdGUKQEAgLTMwOCw2ICszMDksMTAgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFs bGVsQ29udGV4dCAqcGN4dCkKIAkJCQkJCQkJCQlwY3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9j X2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0 ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBtdWxfc2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJ ICAgcGN4dC0+bndvcmtlcnMpKTsKKwkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3Rp bWF0b3IsIDEpOworCiAJCS8qIEVzdGltYXRlIGhvdyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBl bnRyeXBvaW50IGluZm8uICovCiAJCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGlt YXRvciwgc3RybGVuKHBjeHQtPmxpYnJhcnlfbmFtZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0 LT5mdW5jdGlvbl9uYW1lKSArIDIpOwpAQCAtMzc5LDYgKzM4NCw3IEBAIEluaXRpYWxpemVQYXJh bGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0 ZTsKIAkJY2hhcgkgICAqdW5jb21taXR0ZWRlbnVtc3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRj b25uaW5mb3NwYWNlOworCQlib29sCSAgICpzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6 ZQkJbG5hbWVsZW47CiAKIAkJLyogU2VyaWFsaXplIHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBs b2FkZWQuICovCkBAIC00OTQsNiArNTAwLDE5IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJh bGxlbENvbnRleHQgKnBjeHQpCiAJCXN0cmNweShlbnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJh cnlfbmFtZSk7CiAJCXN0cmNweShlbnRyeXBvaW50c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQt PmZ1bmN0aW9uX25hbWUpOwogCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tF WV9FTlRSWVBPSU5ULCBlbnRyeXBvaW50c3RhdGUpOworCisJCS8qCisJCSAqIEVzdGFibGlzaCBk eW5hbWljIHNoYXJlZCBtZW1vcnkgdG8gcGFzcyBpbmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcK KwkJICogb2Ygc25hcHNob3QuCisJCSAqLworCQlzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJ CQkJc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIG11bF9zaXplKHNpemVvZihib29sKSwgcGN4 dC0+bndvcmtlcnMpKTsKKwkJZm9yIChpID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJ CXsKKwkJCXBjeHQtPndvcmtlcltpXS5zbmFwc2hvdF9yZXN0b3JlZCA9ICZzbmFwc2hvdF9zZXRf ZmxhZ19zcGFjZVtpXTsKKwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBm YWxzZTsKKwkJfQorCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQ U0hPVF9SRVNUT1JFRCwgc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0 ZSBud29ya2Vyc190b19sYXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4g Ki8KQEAgLTY3MCw2ICs2ODksMTAgQEAgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29u dGV4dCAqcGN4dCkKICAqIFdhaXQgZm9yIGFsbCB3b3JrZXJzIHRvIGF0dGFjaCB0byB0aGVpciBl cnJvciBxdWV1ZXMsIGFuZCB0aHJvdyBhbiBlcnJvciBpZgogICogYW55IHdvcmtlciBmYWlscyB0 byBkbyB0aGlzLgogICoKKyAqIHdhaXRfZm9yX3NuYXBzaG90OiB0cmFjayB3aGV0aGVyIGVhY2gg cGFyYWxsZWwgd29ya2VyIGhhcyBzdWNjZXNzZnVsbHkgcmVzdG9yZWQKKyAqIGl0cyBzbmFwc2hv dC4gVGhpcyBpcyBuZWVkZWQgd2hlbiB1c2luZyBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMgdG8g ZW5zdXJlIGFsbAorICogd29ya2VycyBoYXZlIGEgdmFsaWQgaW5pdGlhbCBzbmFwc2hvdCBiZWZv cmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzY2FuLgorICoKICAqIENhbGxlcnMgY2FuIGFzc3VtZSB0 aGF0IGlmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBzdWNjZXNzZnVsbHksIHRoZW4gdGhlCiAgKiBu dW1iZXIgb2Ygd29ya2VycyBnaXZlbiBieSBwY3h0LT5ud29ya2Vyc19sYXVuY2hlZCBoYXZlIGlu aXRpYWxpemVkIGFuZAogICogYXR0YWNoZWQgdG8gdGhlaXIgZXJyb3IgcXVldWVzLiAgV2hldGhl ciBvciBub3QgdGhlc2Ugd29ya2VycyBhcmUgZ3VhcmFudGVlZApAQCAtNjk5LDcgKzcyMiw3IEBA IExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAgKiBjYWxsIHRo aXMgZnVuY3Rpb24gYXQgYWxsLgogICovCiB2b2lkCi1XYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9B dHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQorV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCwgYm9vbCB3YWl0X2Zvcl9zbmFwc2hvdCkKIHsKIAlp bnQJCQlpOwogCkBAIC03NDMsOSArNzY2LDEyIEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQkJbXEgPSBzaG1fbXFfZ2V0X3F1ZXVlKHBj eHQtPndvcmtlcltpXS5lcnJvcl9tcWgpOwogCQkJCWlmIChzaG1fbXFfZ2V0X3NlbmRlcihtcSkg IT0gTlVMTCkKIAkJCQl7Ci0JCQkJCS8qIFllcywgc28gaXQgaXMga25vd24gdG8gYmUgYXR0YWNo ZWQuICovCi0JCQkJCXBjeHQtPmtub3duX2F0dGFjaGVkX3dvcmtlcnNbaV0gPSB0cnVlOwotCQkJ CQkrK3BjeHQtPm5rbm93bl9hdHRhY2hlZF93b3JrZXJzOworCQkJCQlpZiAoIXdhaXRfZm9yX3Nu YXBzaG90IHx8ICoocGN4dC0+d29ya2VyW2ldLnNuYXBzaG90X3Jlc3RvcmVkKSkKKwkJCQkJewor CQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBiZSBhdHRhY2hlZC4gKi8KKwkJCQkJCXBj eHQtPmtub3duX2F0dGFjaGVkX3dvcmtlcnNbaV0gPSB0cnVlOworCQkJCQkJKytwY3h0LT5ua25v d25fYXR0YWNoZWRfd29ya2VyczsKKwkJCQkJfQogCQkJCX0KIAkJCX0KIAkJCWVsc2UgaWYgKHN0 YXR1cyA9PSBCR1dIX1NUT1BQRUQpCkBAIC03ODgsNiArODE0LDE2IEBAIFdhaXRGb3JQYXJhbGxl bFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQlicmVhazsKIAkJfQog CX0KKworCS8qIFNldCBzbmFwc2hvdCByZXN0b3JlZCBmbGFnIHRvIGZhbHNlLiAqLworCWlmIChw Y3h0LT5ud29ya2VycyA+IDApCisJeworCQlib29sCSAgICpzbmFwc2hvdF9yZXN0b3JlZF9zcGFj ZTsKKwkJc25hcHNob3RfcmVzdG9yZWRfc3BhY2UgPQorCQkJCXNobV90b2NfbG9va3VwKHBjeHQt PnRvYywgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RPUkVELCBmYWxzZSk7CisJCWZvciAoaSA9 IDA7IGkgPCBwY3h0LT5ud29ya2VyczsgKytpKQorCQkJc25hcHNob3RfcmVzdG9yZWRfc3BhY2Vb aV0gPSBmYWxzZTsKKwl9CiB9CiAKIC8qCkBAIC0xMzA0LDYgKzEzNDAsNyBAQCBQYXJhbGxlbFdv cmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJc2htX3RvYyAgICAqdG9jOwogCUZpeGVkUGFyYWxs ZWxTdGF0ZSAqZnBzOwogCWNoYXIJICAgKmVycm9yX3F1ZXVlX3NwYWNlOworCWJvb2wJICAgKnNu YXBzaG90X3Jlc3RvcmVkX3NwYWNlOwogCXNobV9tcQkgICAqbXE7CiAJc2htX21xX2hhbmRsZSAq bXFoOwogCWNoYXIJICAgKmxpYnJhcnlzcGFjZTsKQEAgLTE1MDcsNiArMTU0NCwxMCBAQCBQYXJh bGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCQkJICAgZnBzLT5wYXJhbGxlbF9s ZWFkZXJfcGdwcm9jKTsKIAlQdXNoQWN0aXZlU25hcHNob3QoYXNuYXBzaG90KTsKIAorCS8qIFNu YXBzaG90IGlzIHJlc3RvcmVkLCBzZXQgZmxhZyB0byBtYWtlIGxlYWRlciBrbm93IGFib3V0IGl0 LiAqLworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJB TExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZhbHNlKTsKKwlzbmFwc2hvdF9yZXN0b3JlZF9z cGFjZVtQYXJhbGxlbFdvcmtlck51bWJlcl0gPSB0cnVlOworCiAJLyoKIAkgKiBXZSd2ZSBjaGFu Z2VkIHdoaWNoIHR1cGxlcyB3ZSBjYW4gc2VlLCBhbmQgbXVzdCB0aGVyZWZvcmUgaW52YWxpZGF0 ZQogCSAqIHN5c3RlbSBjYWNoZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggZjRkYzQ1NjNjOTEuLjdj N2E0MWZkMDllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0xNTM0LDcgKzE1MzQsNyBAQCBpbmRleF9j b25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCWluZGV4X2J1aWxkKGhlYXBS ZWwsIGluZGV4UmVsYXRpb24sIGluZGV4SW5mbywgZmFsc2UsIHRydWUpOwogCiAJSW52YWxpZGF0 ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtl cnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdl cyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNh dmVfbmVzdGxldmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDhmMjE5ZjYw YTkzLi4wNmE5MTY5MjA3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl cXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0zNzIs NyArMzcyLDggQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwK IAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwog CXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlv biwKIAkJCQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJ CQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9j X2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4p OwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCA2MTc3MTNiZGUwNC4uZjFiZjczN2YzOTUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKQEAgLTQ1Niw3ICs0NTYsOCBA QCBFeGVjVGlkUmFuZ2VTY2FuSW5pdGlhbGl6ZURTTShUaWRSYW5nZVNjYW5TdGF0ZSAqbm9kZSwg UGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50 b2MsIG5vZGUtPnRyc3NfcHNjYW5sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJ ICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAor CQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBz LnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVz YyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF90aWRyYW5nZShub2RlLT5zcy5zc19jdXJy ZW50UmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3Iu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IDJlNjE5N2Y1ZjM1Li5k ZjkxMTY1MzJjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKQEAgLTM1MywxNCArMzUzLDYg QEAgR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCh2b2lkKQogU25hcHNob3QKIEdldExhdGVzdFNuYXBz aG90KHZvaWQpCiB7Ci0JLyoKLQkgKiBXZSBtaWdodCBiZSBhYmxlIHRvIHJlbGF4IHRoaXMsIGJ1 dCBub3RoaW5nIHRoYXQgY291bGQgb3RoZXJ3aXNlIHdvcmsKLQkgKiBuZWVkcyBpdC4KLQkgKi8K LQlpZiAoSXNJblBhcmFsbGVsTW9kZSgpKQotCQllbG9nKEVSUk9SLAotCQkJICJjYW5ub3QgdXBk YXRlIFNlY29uZGFyeVNuYXBzaG90IGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpOwotCiAJ LyoKIAkgKiBTbyBmYXIgdGhlcmUgYXJlIG5vIGNhc2VzIHJlcXVpcmluZyBzdXBwb3J0IGZvciBH ZXRMYXRlc3RTbmFwc2hvdCgpCiAJICogZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcsIGJ1dCBpdCB3 b3VsZG4ndCBiZSBoYXJkIHRvIGFkZCBpZiByZXF1aXJlZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9wYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKaW5k ZXggNjBmODU3Njc1ZTAuLjlhM2UxNGUwYzBlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvcGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMjgs NiArMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFdvcmtlckluZm8KIHsKIAlCYWNrZ3Jv dW5kV29ya2VySGFuZGxlICpiZ3doYW5kbGU7CiAJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFoOwor CWJvb2wJCSAgKnNuYXBzaG90X3Jlc3RvcmVkOwogfSBQYXJhbGxlbFdvcmtlckluZm87CiAKIHR5 cGVkZWYgc3RydWN0IFBhcmFsbGVsQ29udGV4dApAQCAtNjcsNyArNjgsNyBAQCBleHRlcm4gdm9p ZCBJbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2 b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRl cm4gdm9pZCBSZWluaXRpYWxpemVQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpwY3h0 LCBpbnQgbndvcmtlcnNfdG9fbGF1bmNoKTsKIGV4dGVybiB2b2lkIExhdW5jaFBhcmFsbGVsV29y a2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQpOwotZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVs V29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CitleHRlcm4gdm9pZCBXYWl0 Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdh aXRfZm9yX3NuYXBzaG90KTsKIGV4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0Zp bmlzaChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVs Q29udGV4dChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxDb250 ZXh0QWN0aXZlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4u aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggY2UzNDBjMDc2ZjguLmFjZmEw NmFlZDc4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKQEAgLTgxLDYgKzgxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YQogCVJlbEZpbGVMb2NhdG9yIHBoc19sb2NhdG9y OyAvKiBwaHlzaWNhbCByZWxhdGlvbiB0byBzY2FuICovCiAJYm9vbAkJcGhzX3N5bmNzY2FuOwkv KiByZXBvcnQgbG9jYXRpb24gdG8gc3luY3NjYW4gbG9naWM/ICovCiAJYm9vbAkJcGhzX3NuYXBz aG90X2FueTsJLyogU25hcHNob3RBbnksIG5vdCBwaHNfc25hcHNob3RfZGF0YT8gKi8KKwlib29s CQlwaHNfcmVzZXRfc25hcHNob3Q7IC8qIHVzZSBTT19SRVNFVF9TTkFQU0hPVD8gKi8KIAlTaXpl CQlwaHNfc25hcHNob3Rfb2ZmOwkvKiBkYXRhIGZvciBzbmFwc2hvdCAqLwogfSBQYXJhbGxlbFRh YmxlU2NhbkRlc2NEYXRhOwogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0 YSAqUGFyYWxsZWxUYWJsZVNjYW5EZXNjOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggZDA3MDk3ODJk ZGUuLjg0YjA2ZmZhNDJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTExNTEsNyArMTE1MSw4IEBA IGV4dGVybiBTaXplIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxhdGlvbiByZWwsIFNu YXBzaG90IHNuYXBzaG90KTsKICAqLwogZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5EZXNj IHBzY2FuLAotCQkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOworCQkJCQkJCQkJCSAgU25h cHNob3Qgc25hcHNob3QsCisJCQkJCQkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KTsKIAogLyoK ICAqIEJlZ2luIGEgcGFyYWxsZWwgc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZlIGJlZW4gaW5p dGlhbGl6ZWQgd2l0aApAQCAtMTc4Myw3ICsxNzg0LDcgQEAgdGFibGVfc2Nhbl9hbmFseXplX25l eHRfdHVwbGUoVGFibGVTY2FuRGVzYyBzY2FuLAogICogVGhpcyBvbmx5IHJlYWxseSBtYWtlcyBz ZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFsaXplZAogICogZm9y IG90aGVyIEFNcyBsYXRlci4KICAqCi0gKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXggYW5k IG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkLAorICogSW4gY2FzZSBvZiBub24tdW5pcXVl IGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsCiAgKiBTT19SRVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVk IGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBzbmFwc2hvdHMKICAqIG9uIHRo ZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KICAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3Rz LnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwKaW5kZXggN2Y3ZGZmYTViZTQuLjM3ODE5YmYwZmI3IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0 X3NuYXBzaG90cy5zcWwKQEAgLTMsNyArMyw3IEBAIENSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9u X3BvaW50czsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl JywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOwotCitTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGlj ZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19y ZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwpAQCAtNTMsNiArNTMsOSBA QCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiAtLSBUaGUgc2Ft ZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChw YXJhbGxlbF93b3JrZXJzPTIpOwogCistLSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwgc2lu Y2UgcGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVj dGl2ZScpOworCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKGkpOwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwotLSAK Mi40My4wCgo= --000000000000041d7b064d6a6d1e Content-Type: application/octet-stream; name="v3-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Disposition: attachment; filename="v3-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmy5djwn1 RnJvbSBhMjUxMGI0NzVhN2QyOGRiMjAwNDUwNzUwMWE0OWU2NTA4MTRjOWM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxNTo1OTo0NyArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjMgMi80XSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlxdWUK IG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcwoKTG9uZy1saXZpbmcgc25hcHNo b3RzIHVzZWQgYnkgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJS RU5UTFkgY2FuIGhvbGQgYmFjayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbi4gQ29tbWl0IGQ5ZDA3 NjIyMmY1YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBzdWNoIHNuYXBzaG90 cyB0byBtaXRpZ2F0ZSB0aGlzIHByb2JsZW0uIEhvd2V2ZXIsIHRoaXMgd2FzIHJldmVydGVkIGlu IGNvbW1pdCBlMjhiYjg4NTE5NjkgYmVjYXVzZSBpdCBjb3VsZCBjYXVzZSBpbmRleGVzIHRvIG1p c3MgaGVhcCB0dXBsZXMgdGhhdCB3ZXJlIEhPVC11cGRhdGVkIGFuZCBIT1QtcHJ1bmVkIGR1cmlu ZyB0aGUgaW5kZXggY3JlYXRpb24sIGxlYWRpbmcgdG8gaW5kZXggY29ycnVwdGlvbi4KClRoaXMg cGF0Y2ggaW50cm9kdWNlcyBhbiBhbHRlcm5hdGl2ZSBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5n IHRoZSBzbmFwc2hvdCB1c2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UuIEJ5IHJlc2V0dGluZyB0 aGUgc25hcHNob3QgZXZlcnkgTiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2NhbiwgaXQgYWxsb3dz IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KCkN1cnJlbnRseSwgdGhpcyB0ZWNobmlxdWUg aXMgYXBwbGllZCB0bzoKCi0gb25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhlIGhlYXA6 IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2VzIGEgc2lu Z2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcwotIG5vbi1wYXJhbGxlbCBp bmRleCBidWlsZHM6IFBhcmFsbGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQg YW5kIHdpbGwgYmUgYWRkcmVzc2VkIGluIGZvbGxvd2luZyBjb21taXRzCi0gbm9uLXVuaXF1ZSBp bmRleGVzOiBVbmlxdWUgaW5kZXggYnVpbGRzIHN0aWxsIHJlcXVpcmUgYSBjb25zaXN0ZW50IHNu YXBzaG90IHRvIGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cywgd2lsbCBiZSBhZGRyZXNz ZWQgaW4gZm9sbG93aW5nIGNvbW1pdHMKCkEgbmV3IHNjYW4gb3B0aW9uIFNPX1JFU0VUX1NOQVBT SE9UIGlzIGludHJvZHVjZWQuIFdoZW4gc2V0LCBpdCBjYXVzZXMgdGhlIHNuYXBzaG90IHRvIGJl IHJlc2V0ICJiZXR3ZWVuIiBldmVyeSBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdl cyBkdXJpbmcgdGhlIHNjYW4uIFRoZSBoZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBw b3J0IHRoaXMgb3B0aW9uLCBhbmQgdGhlIGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8g dXNlIGl0IGZvciBhcHBsaWNhYmxlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5v dCBvbiBzeXN0ZW0gY2F0YWxvZ3MgYW5kIG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgotLS0K IGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICAgICB8ICAgMyArLQog Y29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jICAgICAgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgMTkgKystCiBz cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAgMjIgKysrKwog c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgICAgICAgICAgIHwgICA0ICsKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCAgNDcgKysrKysrLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgIDU3ICsrKysr KystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAgMzAg KysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMgICAgICAgICB8ICAg MyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAgICAgICAgICAgfCAgMTEg KysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAzMSAr KysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDE3 ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgIDEw ICsrCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAgICAgICAgfCAgIDMg Kwogc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0ICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgICAgICAgICAgICAgICB8ICAgMiArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAgICB8ICAyOCArKysrLQog c3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSAgICB8ICAgMiArLQogLi4u L2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAgICAgIHwgMTE1ICsrKysrKysr KysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxk IHwgICAxICsKIC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8 ICA5NSArKysrKysrKysrKysrKysKIDI1IGZpbGVzIGNoYW5nZWQsIDQ3NCBpbnNlcnRpb25zKCsp LCAzNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNl dF9zbmFwc2hvdHMuc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRy ZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggYjc0YWI1ZjdhMDUu LjQwODc0MTY3NjMxIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j CisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTU1Nyw3ICs1NTcsOCBA QCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJv b2wgaGVhcGtleXNwYWNlLAogCQkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJ CQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNj ZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LPyAqLwor CQkJCQkJCQkJIHRydWUsIC8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGZhbHNlKTsKIAog CQkvKgogCQkgKiBTY2FuIHdpbGwgYmVoYXZlIGFzIHRoZSBmaXJzdCBzY2FuIG9mIGEgQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IDZhN2Y4 Y2I0YTdjLi5hMGU3ZWQyZTEzNyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMzM1 LDcgKzMzNSw3IEBAIHBnc3RhdF9oZWFwKFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8pCiAJCQkJIGVycm1zZygib25seSBoZWFwIEFNIGlzIHN1cHBvcnRlZCIpKSk7CiAKIAkv KiBEaXNhYmxlIHN5bmNzY2FuIGJlY2F1c2Ugd2UgYXNzdW1lIHdlIHNjYW4gZnJvbSBibG9jayB6 ZXJvIHVwd2FyZHMgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNo b3RBbnksIDAsIE5VTEwsIHRydWUsIGZhbHNlKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0 cmF0KHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIHRydWUsIGZhbHNlLCBmYWxzZSk7CiAJaHNj YW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJSW5pdERpcnR5U25hcHNob3QoU25hcHNob3RE aXJ0eSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggMmEwZjhjOGUzYjguLjg1MzRkNzEyNWEw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0xMjIxLDExICsxMjIxLDEyIEBAIGJyaW5idWls ZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJ CXN0YXRlLT5ic19zb3J0c3RhdGUgPQogCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2JyaW4obWFp bnRlbmFuY2Vfd29ya19tZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkgICBUVVBMRVNPUlRfTk9O RSk7Ci0KKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCQkvKiBzY2FuIHRoZSByZWxh dGlvbiBhbmQgbWVyZ2UgcGVyLXdvcmtlciByZXN1bHRzICovCiAJCXJlbHR1cGxlcyA9IF9icmlu X3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfYnJpbl9lbmRfcGFyYWxsZWwoc3RhdGUtPmJz X2xlYWRlciwgc3RhdGUpOworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCWVsc2UJCQkJCQkvKiBu byBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTEyMzgsNiArMTIzOSw3IEBAIGJyaW5i dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4 SW5mbywgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJICAgYnJpbmJ1aWxkQ2FsbGJhY2ssIHN0YXRl LCBOVUxMKTsKIAorCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAJCS8qCiAJCSAqIHBy b2Nlc3MgdGhlIGZpbmFsIGJhdGNoCiAJCSAqCkBAIC0xMjU3LDYgKzEyNTksNyBAQCBicmluYnVp bGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQog CQlicmluX2ZpbGxfZW1wdHlfcmFuZ2VzKHN0YXRlLAogCQkJCQkJCSAgIHN0YXRlLT5ic19jdXJy UmFuZ2VTdGFydCwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfbWF4UmFuZ2VTdGFydCk7CisJCUFzc2Vy dCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAl9CiAKIAkvKiByZWxlYXNlIHJlc291cmNlcyAqLwpAQCAtMjM5MCw2ICsy MzkzLDcgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCVdhbFVzYWdlICAgKndhbHVzYWdlOwog CUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0 cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVl cnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0yNDE1LDkg KzI0MTksMTYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIGxpdmUgYWNjb3JkaW5nIHRv IHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJeworCQlBc3NlcnQoQWN0aXZlU25h cHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNlCisJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXpl IGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9CUklOX1NIQVJFRCB3b3Jrc3BhY2UuCkBAIC0yNDYw LDYgKzI0NzEsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogSWYgbm8gRFNNIHNlZ21l bnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4 dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJ CVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQo cGN4dCk7CkBAIC0yNTM5LDYgKzI1NTIsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyog SWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJ CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog CQlfYnJpbl9lbmRfcGFyYWxsZWwoYnJpbmxlYWRlciwgTlVMTCk7CiAJCXJldHVybjsKIAl9CkBA IC0yNTU1LDYgKzI1NzAsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogc3VyZSB0aGF0 IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwog CVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAobmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggZTU0NzgyZDlkZDguLmMzMDg1ZDE3NGM3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTY4Myw2ICs2ODQsOSBAQCBnaW5idWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRz dGF0ZS5hY2N1bS5naW5zdGF0ZSA9ICZidWlsZHN0YXRlLmdpbnN0YXRlOwogCWdpbkluaXRCQSgm YnVpbGRzdGF0ZS5hY2N1bSk7CiAKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdv cmtlcnMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJLyogUmVw b3J0IHRhYmxlIHNjYW4gcGhhc2Ugc3RhcnRlZCAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVf cGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfR0lO X1BIQVNFX0lOREVYQlVJTERfVEFCTEVTQ0FOKTsKQEAgLTc0NSwxMSArNzQ5LDEzIEBAIGdpbmJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykK IAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9naW4oaGVhcCwgaW5kZXgsCiAJCQkJCQkJCQkgIG1h aW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJICBUVVBMRVNPUlRfTk9O RSk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCQkvKiBzY2FuIHRoZSByZWxh dGlvbiBpbiBwYXJhbGxlbCBhbmQgbWVyZ2UgcGVyLXdvcmtlciByZXN1bHRzICovCiAJCXJlbHR1 cGxlcyA9IF9naW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9naW5fZW5kX3BhcmFsbGVs KHN0YXRlLT5ic19sZWFkZXIsIHN0YXRlKTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAllbHNl CQkJCQkJLyogbm8gcGFyYWxsZWwgaW5kZXggYnVpbGQgKi8KIAl7CkBAIC03NTksNiArNzY1LDcg QEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5k ZXhJbmZvKQogCQkgKi8KIAkJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFw LCBpbmRleCwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkgICBnaW5CdWlsZENh bGxiYWNrLCAmYnVpbGRzdGF0ZSwgTlVMTCk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKIAogCQkvKiBkdW1wIHJlbWFpbmluZyBlbnRyaWVzIHRvIHRoZSBpbmRleCAqLwogCQlvbGRD dHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYnVpbGRzdGF0ZS50bXBDdHgpOwpAQCAtNzcyLDYg Kzc3OSw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJCQkJCSAgIGxpc3QsIG5saXN0LCAmYnVpbGRzdGF0ZS5idWlsZFN0 YXRzKTsKIAkJfQogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJQXNzZXJ0KCFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOwogCX0KIAogCU1lbW9yeUNvbnRleHREZWxldGUoYnVpbGRzdGF0ZS5mdW5jQ3R4KTsK QEAgLTk0OCw2ICs5NTYsNyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1 aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCVdhbFVzYWdlICAgKndh bHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNp cGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJ aW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBA IC05NzIsOSArOTgxLDE2IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogbGl2ZSBhY2NvcmRp bmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3Rp dmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKgogCSAqIEVzdGltYXRl IHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQgd29ya3NwYWNlLgpAQCAt MTAxNyw2ICsxMDMzLDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBJZiBubyBEU00gc2Vn bWVudCB3YXMgYXZhaWxhYmxlLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChw Y3h0LT5zZWcgPT0gTlVMTCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJ CQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQog CQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4 dChwY3h0KTsKQEAgLTEwOTEsNiArMTEwOSw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyog SWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJ CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog CQlfZ2luX2VuZF9wYXJhbGxlbChnaW5sZWFkZXIsIE5VTEwpOwogCQlyZXR1cm47CiAJfQpAQCAt MTEwNyw2ICsxMTI3LDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBzdXJlIHRoYXQgdGhl IGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCiAJV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmIChuZWVkX3BvcF9hY3RpdmVf c25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3RidWlsZC5jCmluZGV4IDdmNTdjNzg3ZjRjLi42MjA3ZTlmNWQ4MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJvcHRp bWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0yNTks NiArMjYwLDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRl eEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0YXRlLmluZHR1cGxlcyA9IDA7CiAJYnVpbGRzdGF0 ZS5pbmR0dXBsZXNTaXplID0gMDsKIAorCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAlpZiAoYnVpbGRzdGF0 ZS5idWlsZE1vZGUgPT0gR0lTVF9TT1JURURfQlVJTEQpCiAJewogCQkvKgpAQCAtMzUwLDYgKzM1 Miw4IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZv ICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3Vs dC0+aW5kZXhfdHVwbGVzID0gKGRvdWJsZSkgYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1 bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggNmRmNWU3Y2NiZDEuLmZkZjRhMzY1OWI4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAibm9k ZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdl L3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUg InV0aWxzL2luZGV4X3NlbGZ1bmNzLmgiCkBAIC0yMTAsNiArMjExLDggQEAgaGFzaGJ1aWxkKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAogCXJl c3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90dXBsZXMgPSBi dWlsZHN0YXRlLmluZHR1cGxlczsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKaW5kZXggZTViZDA2MmRlNzcuLjUyYjI3ZjAzODRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYwpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVk ZSAidXRpbHMvc3BjY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1 ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKIHN0YXRpYyBIZWFwVHVwbGUgaGVhcF9w cmVwYXJlX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCwKQEAgLTY5Nyw2 ICs2OTgsMzYgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJ TG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiB9CiAKKy8qCisgKiBSZXNl dCB0aGUgYWN0aXZlIHNuYXBzaG90IGR1cmluZyBhIHNjYW4uCisgKiBUaGlzIGVuc3VyZXMgdGhl IHhtaW4gaG9yaXpvbiBjYW4gYWR2YW5jZSB3aGlsZSBtYWludGFpbmluZyBzYWZlIHR1cGxlIHZp c2liaWxpdHkuCisgKiBOb3RlOiBObyBvdGhlciBzbmFwc2hvdCBzaG91bGQgYmUgYWN0aXZlIGR1 cmluZyB0aGlzIG9wZXJhdGlvbi4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitoZWFwX3Jlc2V0 X3NjYW5fc25hcHNob3QoVGFibGVTY2FuRGVzYyBzc2NhbikKK3sKKwkvKiBNYWtlIHN1cmUgbm8g b3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUuICovCisJQXNzZXJ0KEdldEFjdGl2ZVNu YXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsKKwkvKiBBbmQgbWFrZSBzdXJlIGFjdGl2 ZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8KKwlBc3NlcnQoR2V0QWN0aXZlU25hcHNo b3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJc3NjYW4t PnJzX3NuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OyAvKiBqdXN0IHRvIGJlIHRpZHkgKi8KKwlB c3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JBY3RpdmVTbmFwc2hvdCgpKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisKKwkvKiBUaGUgZ29hbCBvZiBzbmFwc2hvdCByZXNldCBpcyB0byBh bGxvdyBob3Jpem9uIHRvIGFkdmFuY2UuICovCisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKKyNpZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCS8qIEluIHNvbWUg Y2FzZXMgaXQgaXMgc3RpbGwgbm90IHBvc3NpYmxlIGR1ZSB4aWQgYXNzaWduLiAqLworCWlmICgh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKQorCQlJTkpFQ1RJT05fUE9JTlQoImhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUiLCBOVUxMKTsKKyNlbmRpZgorCisJUHVz aEFjdGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCXNzY2FuLT5yc19zbmFwc2hv dCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKIC8qCiAgKiBoZWFwX2ZldGNoX25leHRfYnVm ZmVyIC0gcmVhZCBhbmQgcGluIHRoZSBuZXh0IGJsb2NrIGZyb20gTUFJTl9GT1JLTlVNLgogICoK QEAgLTczOCw3ICs3NjksMTIgQEAgaGVhcF9mZXRjaF9uZXh0X2J1ZmZlcihIZWFwU2NhbkRlc2Mg c2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAKIAlzY2FuLT5yc19jYnVmID0gcmVhZF9zdHJlYW1f bmV4dF9idWZmZXIoc2Nhbi0+cnNfcmVhZF9zdHJlYW0sIE5VTEwpOwogCWlmIChCdWZmZXJJc1Zh bGlkKHNjYW4tPnJzX2NidWYpKQorCXsKIAkJc2Nhbi0+cnNfY2Jsb2NrID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoc2Nhbi0+cnNfY2J1Zik7CisJCWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYg U09fUkVTRVRfU05BUFNIT1QgJiYKKwkJCXNjYW4tPnJzX2NibG9jayAlIFNPX1JFU0VUX1NOQVBT SE9UX0VBQ0hfTl9QQUdFID09IDApCisJCQloZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QoKFRhYmxl U2NhbkRlc2MpIHNjYW4pOworCX0KIH0KIAogLyoKQEAgLTE0MDksNyArMTQ0NSwxNiBAQCBoZWFw X2VuZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAogCWlmIChzY2FuLT5yc19wYXJhbGxlbHdv cmtlcmRhdGEgIT0gTlVMTCkKIAkJcGZyZWUoc2Nhbi0+cnNfcGFyYWxsZWx3b3JrZXJkYXRhKTsK LQorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAoc2Nhbi0+cnNfYmFzZS5yc19mbGFn cyAmIFNPX1JFU0VUX1NOQVBTSE9UKQorCXsKKwkJQXNzZXJ0KCEoc2Nhbi0+cnNfYmFzZS5yc19m bGFncyAmIFNPX1RFTVBfU05BUFNIT1QpKTsKKwkJLyogTWFrZSBzdXJlIG5vIG90aGVyIHNuYXBz aG90IHdhcyBzZXQgYXMgYWN0aXZlLiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9 PSBzc2Nhbi0+cnNfc25hcHNob3QpOworCQkvKiBBbmQgbWFrZSBzdXJlIHNuYXBzaG90IGlzIG5v dCByZWdpc3RlcmVkLiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKS0+cmVnZF9jb3Vu dCA9PSAwKTsKKwl9CisjZW5kaWYKIAlpZiAoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1RF TVBfU05BUFNIT1QpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzY2FuLT5yc19iYXNlLnJzX3NuYXBz aG90KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggMjUz YTczNWI2YzEuLjljYWQyZTExNWJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKQEAgLTEyMTksNiArMTIxOSw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9z Y2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlFeHByQ29udGV4dCAqZWNvbnRleHQ7CiAJU25h cHNob3QJc25hcHNob3Q7CiAJYm9vbAkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gZmFsc2U7 CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJYm9vbAkJcmVzZXRf c25hcHNob3RzID0gZmFsc2U7CiAJVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluOwogCUJsb2NrTnVt YmVyIHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwogCUJsb2NrTnVtYmVyIHJv b3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7CkBAIC0xMjUzLDkgKzEyNTUsNiBAQCBoZWFw YW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJLyogQXJy YW5nZSBmb3IgZWNvbnRleHQncyBzY2FuIHR1cGxlIHRvIGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0 ICovCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKIAotCS8qIFNldCB1cCBleGVj dXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQ cmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKLQogCS8qCiAJICog UHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4 IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUg YWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCkBAIC0xMjY1LDYgKzEyNjQsMTUgQEAgaGVh cGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCSAqLwog CU9sZGVzdFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAorCS8qCisJICogRm9yIHVuaXF1 ZSBpbmRleCB3ZSBuZWVkIGNvbnNpc3RlbnQgc25hcHNob3QgZm9yIHRoZSB3aG9sZSBzY2FuLgor CSAqIEluIGNhc2Ugb2YgcGFyYWxsZWwgc2NhbiBzb21lIGFkZGl0aW9uYWwgaW5mcmFzdHJ1Y3R1 cmUgcmVxdWlyZWQKKwkgKiB0byBwZXJmb3JtIHNjYW4gd2l0aCBTT19SRVNFVF9TTkFQU0hPVCB3 aGljaCBpcyBub3QgeWV0IHJlYWR5LgorCSAqLworCXJlc2V0X3NuYXBzaG90cyA9IGluZGV4SW5m by0+aWlfQ29uY3VycmVudCAmJgorCQkJCQkgICFpbmRleEluZm8tPmlpX1VuaXF1ZSAmJgorCQkJ CQkgICFpc19zeXN0ZW1fY2F0YWxvZzsgLyoganVzdCBmb3IgdGhlIGNhc2UgKi8KKwogCS8qIG9r YXkgdG8gaWdub3JlIGxhenkgVkFDVVVNcyBoZXJlICovCiAJaWYgKCFJc0Jvb3RzdHJhcFByb2Nl c3NpbmdNb2RlKCkgJiYgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCkKIAkJT2xkZXN0WG1pbiA9 IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoaGVhcFJlbGF0aW9uKTsKQEAgLTEy NzMsMjQgKzEyODEsNDEgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCXsKIAkJLyoKIAkJICogU2VyaWFsIGluZGV4IGJ1aWxkLgotCQkgKgot CQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2FuIGluIHRoaXMgY2FzZS4gIFdlIG1heSBh bHNvIG5lZWQgdG8KLQkJICogcmVnaXN0ZXIgYSBzbmFwc2hvdCB3aG9zZSBsaWZldGltZSBpcyB1 bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wuCiAJCSAqLwogCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE9sZGVzdFhtaW4pKQogCQl7Ci0JCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRy dWU7CisJCQlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCS8qCisJCQkg KiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2FuIGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNv IG5lZWQgdG8KKwkJCSAqIHJlZ2lzdGVyIGEgc25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5k ZXIgb3VyIGRpcmVjdCBjb250cm9sLgorCQkJICogSW4gY2FzZSBvZiByZXNldHRpbmcgb2Ygc25h cHNob3QgZHVyaW5nIHRoZSBzY2FuIHJlZ2lzdHJhdGlvbiBpcworCQkJICogbm90IGFsbG93ZWQg YmVjYXVzZSBzbmFwc2hvdCBpcyBnb2luZyB0byBiZSBjaGFuZ2VkIGV2ZXJ5IHNvCisJCQkgKiBv ZnRlbi4KKwkJCSAqLworCQkJaWYgKCFyZXNldF9zbmFwc2hvdHMpCisJCQl7CisJCQkJc25hcHNo b3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwkJCQluZWVkX3VucmVnaXN0ZXJfc25h cHNob3QgPSB0cnVlOworCQkJfQorCQkJQXNzZXJ0KCFBY3RpdmVTbmFwc2hvdFNldCgpKTsKKwkJ CVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkvKiBzdG9yZSBsaW5rIHRvIHNuYXBz aG90IGJlY2F1c2UgaXQgbWF5IGJlIGNvcGllZCAqLworCQkJc25hcHNob3QgPSBHZXRBY3RpdmVT bmFwc2hvdCgpOworCQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAkJfQogCQll bHNlCisJCXsKKwkJCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAkJCXNuYXBz aG90ID0gU25hcHNob3RBbnk7CisJCX0KIAogCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0 KGhlYXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KIAkJCQkJCQkJCSBzbmFwc2hvdCwJLyogc25h cHNob3QgKi8KIAkJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkJIE5V TEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJh dGVneSBPSyAqLwotCQkJCQkJCQkJIGFsbG93X3N5bmMpOwkvKiBzeW5jc2NhbiBPSz8gKi8KKwkJ CQkJCQkJCSBhbGxvd19zeW5jLAkvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSByZXNldF9z bmFwc2hvdHMgLyogcmVzZXQgc25hcHNob3RzPyAqLyk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMzA0 LDYgKzEzMjksOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNz ZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJzX3NuYXBzaG90OworCQlQdXNo QWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0 cnVlOwogCX0KIAogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKQEAgLTEzMTgsNiArMTM0 NSwxMyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55ID8gVHJhbnNhY3Rpb25JZElzVmFs aWQoT2xkZXN0WG1pbikgOgogCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikp OwogCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSB8fCAhYW55dmlzaWJsZSk7CisJQXNz ZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8IEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJ LyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRlLCBpZiBhbnkuICovCisJcHJl ZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlfUHJlZGljYXRlLCBlc3RhdGUp OworCS8qIENsZWFyIHJlZmVyZW5jZSB0byBzbmFwc2hvdCBzaW5jZSBpdCBtYXkgYmUgY2hhbmdl ZCBieSB0aGUgc2NhbiBpdHNlbGYuICovCisJaWYgKHJlc2V0X3NuYXBzaG90cykKKwkJc25hcHNo b3QgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkvKiBQdWJsaXNoIG51bWJlciBvZiBibG9ja3MgdG8g c2NhbiAqLwogCWlmIChwcm9ncmVzcykKQEAgLTE3NTMsNiArMTc4Nyw4IEBAIGhlYXBhbV9pbmRl eF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogCXRhYmxlX2VuZHNj YW4oc2Nhbik7CiAKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVT bmFwc2hvdCgpOwogCS8qIHdlIGNhbiBub3cgZm9yZ2V0IG91ciBzbmFwc2hvdCwgaWYgc2V0IGFu ZCByZWdpc3RlcmVkIGJ5IHVzICovCiAJaWYgKG5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCkKIAkJ VW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKQEAgLTE4MjUsNyArMTg2MSw4IEBAIGhlYXBh bV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJIDAs IC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJ CQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkgZmFs c2UpOwkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlLAkvKiBzeW5jc2NhbiBu b3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47 CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1NDQU5fQkxPQ0tTX1RP VEFMLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCA1ZTg5Yjg2YTYyYy4uZTQyODQxODE3 MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00NzIsNyArNDcyLDcgQEAgc3lzdGFi bGVfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJICovCiAJCXN5c3NjYW4tPnNj YW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLCBzbmFwc2hvdCwKIAkJCQkJ CQkJCQkJICBua2V5cywga2V5LAotCQkJCQkJCQkJCQkgIHRydWUsIGZhbHNlKTsKKwkJCQkJCQkJ CQkJICB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCQlzeXNzY2FuLT5pc2NhbiA9IE5VTEw7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDQ3YTliZGEzMGM5Li42ZjA5MWQz OTgxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTI2Miw3ICsyNjIsNyBA QCBzdGF0aWMgZG91YmxlIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsCiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2xkZXN0cm95KEJUU3Bvb2wgKmJ0c3Bvb2wp Owogc3RhdGljIHZvaWQgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqc2VsZiwKIAkJCQkJICBjb25zdCBEYXR1bSAqdmFsdWVzLCBjb25zdCBib29sICpp c251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNw b29sICpidHNwb29sMik7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CiBzdGF0aWMgdm9p ZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVyIHRpZCwgRGF0 dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJc0FsaXZlLCB2 b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3BhZ2UoQlRXcml0 ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMjUsMTggKzMyNSwyMiBAQCBidGJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykK IAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJcmVsdHVwbGVzID0gX2J0 X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUsIGluZGV4SW5mbyk7CisJ QXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5p cXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEp IGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGluc2VydGlu ZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhl IHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRv IGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRl LnNwb29sLCBidWlsZHN0YXRlLnNwb29sMik7CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNw b29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzICYm IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRl LnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9vbGRlc3Ryb3koYnVp bGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0bGVhZGVyKQogCQlfYnRfZW5kX3Bh cmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOworCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFs bGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ cmVzdWx0ID0gcGFsbG9jX29iamVjdChJbmRleEJ1aWxkUmVzdWx0KTsKIApAQCAtNDg0LDYgKzQ4 OCw5IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAllbHNlCiAJCXJlbHR1cGxlcyA9IF9idF9wYXJh bGxlbF9oZWFwc2NhbihidWlsZHN0YXRlLAogCQkJCQkJCQkJCSAgJmluZGV4SW5mby0+aWlfQnJv a2VuSG90Q2hhaW4pOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoaW5k ZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJ ICAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBu ZXh0IHBoYXNlLiAgUmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAtNTM5LDcgKzU0Niw3IEBAIF9i dF9zcG9vbChCVFNwb29sICpidHNwb29sLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnNlbGYsIGNv bnN0IERhdHVtICp2YWx1ZXMsIGNvCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0cmVlLgogICovCiBz dGF0aWMgdm9pZAotX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNw b29sMikKK19idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIs IGJvb2wgcmVzZXRfc25hcHNob3RzKQogewogCUJUV3JpdGVTdGF0ZSB3c3RhdGU7CiAKQEAgLTU2 MSwxOCArNTY4LDIxIEBAIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAq YnRzcG9vbDIpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfUEVSRk9STVNPUlRfMik7 CiAJCXR1cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+c29ydHN0YXRlKTsKIAl9CisJQXNz ZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCiAJd3N0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCXdzdGF0ZS5pbmRleCA9IGJ0 c3Bvb2wtPmluZGV4OwogCXdzdGF0ZS5pbnNrZXkgPSBfYnRfbWtzY2Fua2V5KHdzdGF0ZS5pbmRl eCwgTlVMTCk7CiAJLyogX2J0X21rc2NhbmtleSgpIHdvbid0IHNldCBhbGxlcXVhbGltYWdlIHdp dGhvdXQgbWV0YXBhZ2UgKi8KIAl3c3RhdGUuaW5za2V5LT5hbGxlcXVhbGltYWdlID0gX2J0X2Fs bGVxdWFsaW1hZ2Uod3N0YXRlLmluZGV4LCB0cnVlKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBz aG90KCk7CiAKIAkvKiByZXNlcnZlIHRoZSBtZXRhcGFnZSAqLwogCXdzdGF0ZS5idHdzX3BhZ2Vz X2FsbG9jZWQgPSBCVFJFRV9NRVRBUEFHRSArIDE7CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRl X3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9TVUJQSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0JU UkVFX1BIQVNFX0xFQUZfTE9BRCk7CisJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bv b2wsIGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTQxMSw2ICsxNDIxLDcgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xF QURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM2LDkgKzE0NDcsMTYgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJl bnQpCisJeworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25h cHNob3RBbnk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNl CisJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hv dCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwl9CiAKIAkvKgogCSAqIEVz dGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3Bh Y2UsIGFuZApAQCAtMTQ5Miw2ICsxNTEwLDggQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIElm IG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQp ICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJc01WQ0NTbmFwc2hvdChz bmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFy YWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMTU4Niw2ICsxNjA2LDggQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQsIGJhY2sg b3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkID09 IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25h cHNob3QoKTsKIAkJX2J0X2VuZF9wYXJhbGxlbChidGxlYWRlcik7CiAJCXJldHVybjsKIAl9CkBA IC0xNjAyLDYgKzE2MjQsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogc3VyZSB0aGF0IHRo ZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwogCVdh aXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAobmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9zcGdpc3Qvc3BnaW5zZXJ0LmMKaW5kZXggNzgwZWY2NDZhNTQuLjQ5ODMyYTM2NDcwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNs dWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVsa193cml0ZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKQEAg LTE0Myw2ICsxNDQsOCBAQCBzcGdidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAJcmVzdWx0ID0gcGFsbG9jMF9vYmplY3QoSW5kZXhCdWls ZFJlc3VsdCk7CiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmlu ZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUludmFsaWRhdGVDYXRhbG9nU25h cHNob3QoKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IGFhZmM1M2UwMTY0Li43NzcyZDEzNzliYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMzcwOCw2ICszNzA4LDE3IEBAIFByZXZlbnRJblRy YW5zYWN0aW9uQmxvY2soYm9vbCBpc1RvcExldmVsLCBjb25zdCBjaGFyICpzdG10VHlwZSkKIAlN eVhhY3RGbGFncyB8PSBYQUNUX0ZMQUdTX05FRURJTU1FRElBVEVDT01NSVQ7CiB9CiAKK3ZvaWQK K1ByZXZlbnRJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KGNvbnN0IGNoYXIgKnN0bXRUeXBlKQor eworCWlmIChJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTkFQUFJPUFJJQVRFX0lTT0xBVElPTl9MRVZFTF9GT1JfQ09N TUFORCksCisJCS8qIHRyYW5zbGF0b3I6ICVzIHJlcHJlc2VudHMgYW4gU1FMIHN0YXRlbWVudCBu YW1lICovCisJCQkJIGVycm1zZygiJXMgZG9lcyBub3Qgc3VwcG9ydCB0cmFuc2FjdGlvbiBpc29s YXRpb24gaGlnaGVyIHRoYW4gUkVBRCBDT01NSVRURUQiLAorCQkJCQkJc3RtdFR5cGUpKSk7Cit9 CisKIC8qCiAgKglXYXJuTm9UcmFuc2FjdGlvbkJsb2NrCiAgKglSZXF1aXJlVHJhbnNhY3Rpb25C bG9jawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGQ4MjE5YjE4YzQ4Li5mNGRjNDU2M2M5MSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYwpAQCAtODEsNiArODEsNyBAQAogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK ICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5o IgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCiAvKiBQb3RlbnRpYWxseSBzZXQgYnkgcGdf dXBncmFkZV9zdXBwb3J0IGZ1bmN0aW9ucyAqLwogT2lkCQkJYmluYXJ5X3VwZ3JhZGVfbmV4dF9p bmRleF9wZ19jbGFzc19vaWQgPSBJbnZhbGlkT2lkOwpAQCAtMTQ5Myw4ICsxNDk0LDggQEAgaW5k ZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlSZWxhdGlvbglpbmRl eFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAotCS8qIFRoaXMgaGFkIGJldHRl ciBtYWtlIHN1cmUgdGhhdCBhIHNuYXBzaG90IGlzIGFjdGl2ZSAqLwotCUFzc2VydChBY3RpdmVT bmFwc2hvdFNldCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCS8q IE9wZW4gYW5kIGxvY2sgdGhlIHBhcmVudCBoZWFwIHJlbGF0aW9uICovCiAJaGVhcFJlbCA9IHRh YmxlX29wZW4oaGVhcFJlbGF0aW9uSWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CkBAIC0x NTEyLDE5ICsxNTEzLDI5IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0 aW9uSWQsCiAKIAlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihpbmRleFJlbGF0aW9uSWQsIFJv d0V4Y2x1c2l2ZUxvY2spOwogCisJLyogQnVpbGRJbmRleEluZm8gbWF5IHJlcXVpcmUgYXMgc25h cHNob3QgZm9yIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzICovCisJUHVzaEFjdGl2ZVNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBXZSBoYXZlIHRvIHJlLWJ1 aWxkIHRoZSBJbmRleEluZm8gc3RydWN0LCBzaW5jZSBpdCB3YXMgbG9zdCBpbiB0aGUKIAkgKiBj b21taXQgb2YgdGhlIHRyYW5zYWN0aW9uIHdoZXJlIHRoaXMgY29uY3VycmVudCBpbmRleCB3YXMg Y3JlYXRlZCBhdAogCSAqIHRoZSBjYXRhbG9nIGxldmVsLgogCSAqLwogCWluZGV4SW5mbyA9IEJ1 aWxkSW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCS8qIERvbmUgd2l0aCBzbmFwc2hvdCAqLwor CVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJQXNzZXJ0KCFpbmRleEluZm8tPmlpX1JlYWR5Rm9ySW5z ZXJ0cyk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKIAlpbmRleEluZm8tPmlp X0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7 CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qIE5v dyBidWlsZCB0aGUgaW5kZXggKi8KIAlpbmRleF9idWlsZChoZWFwUmVsLCBpbmRleFJlbGF0aW9u LCBpbmRleEluZm8sIGZhbHNlLCB0cnVlKTsKIAorCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKKwlBc3NlcnQoKGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+ aWlfVW5pcXVlKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKIAkv KiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAq LwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwogCkBAIC0xNTM1LDEyICsx NTQ2LDE5IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJ dGFibGVfY2xvc2UoaGVhcFJlbCwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9u LCBOb0xvY2spOwogCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRP QVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90 LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwog CS8qCiAJICogVXBkYXRlIHRoZSBwZ19pbmRleCByb3cgdG8gbWFyayB0aGUgaW5kZXggYXMgcmVh ZHkgZm9yIGluc2VydHMuIE9uY2Ugd2UKIAkgKiBjb21taXQgdGhpcyB0cmFuc2FjdGlvbiwgYW55 IG5ldyB0cmFuc2FjdGlvbnMgdGhhdCBvcGVuIHRoZSB0YWJsZSBtdXN0CiAJICogaW5zZXJ0IG5l dyBlbnRyaWVzIGludG8gdGhlIGluZGV4IGZvciBpbnNlcnRpb25zIGFuZCBub24tSE9UIHVwZGF0 ZXMuCiAJICovCiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVsYXRpb25JZCwgSU5ERVhf Q1JFQVRFX1NFVF9SRUFEWSk7CisJLyogd2UgY2FuIGRvIGF3YXkgd2l0aCBvdXIgc25hcHNob3Qg Ki8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpAQCAtMzIzNyw3ICszMjU1LDggQEAg SW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAwLCAv KiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJ CQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIHRydWUp OyAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgdHJ1ZSwgLyogc3luY3NjYW4gT0sgKi8KKwkJ CQkJCQkJIGZhbHNlKTsKIAogCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZv cndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAl7CkBAIC0zMzAwLDEyICszMzE5LDE2IEBAIElu ZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogYXMgb2YgdGhlIHN0 YXJ0IG9mIHRoZSBzY2FuIChzZWUgdGFibGVfaW5kZXhfYnVpbGRfc2NhbiksIHdoZXJlYXMgYSBu b3JtYWwKICAqIGJ1aWxkIHRha2VzIGNhcmUgdG8gaW5jbHVkZSByZWNlbnRseS1kZWFkIHR1cGxl cy4gIFRoaXMgaXMgT0sgYmVjYXVzZQogICogd2Ugd29uJ3QgbWFyayB0aGUgaW5kZXggdmFsaWQg dW50aWwgYWxsIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIGFibGUKLSAqIHRvIHNlZSB0aG9z ZSB0dXBsZXMgYXJlIGdvbmUuICBUaGUgcmVhc29uIGZvciBkb2luZyB0aGF0IGlzIHRvIGF2b2lk CisgKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgT25lIG9mIHJlYXNvbnMgZm9yIGRv aW5nIHRoYXQgaXMgdG8gYXZvaWQKICAqIGJvZ3VzIHVuaXF1ZS1pbmRleCBmYWlsdXJlcyBkdWUg dG8gY29uY3VycmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRpZmZlcmVudCB2ZXJzaW9u cyBvZiB0aGUgc2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92ZXIgdGhlbSwK ICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVz IHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVk IHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgorICogRnVydGhlcm1v cmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1Qg Zm9yIHRoZQorICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQgYXMg YWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCisgKiBmb3IgdGhhdCBpcyB0byBwcm9w YWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICoKICAqIE5leHQsIHdlIG1hcmsgdGhl IGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2YWxpZCIpIGFuZAogICog Y29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2FpbiB3 ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2Rp ZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwppbmRleCBiODljNjg1NTM2NC4uNDE1ZDAyMzZjNDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21k cy5jCkBAIC0xNzAyLDIzICsxNzAyLDE3IEBAIERlZmluZUluZGV4KFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhl IG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgog CSAqCi0JICogV2Ugbm93IHRha2UgYSBuZXcgc25hcHNob3QsIGFuZCBidWlsZCB0aGUgaW5kZXgg dXNpbmcgYWxsIHR1cGxlcyB0aGF0Ci0JICogYXJlIHZpc2libGUgaW4gdGhpcyBzbmFwc2hvdC4g IFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhl IGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBzaW5nbGUgb3IK KwkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBh bnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdp dGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCiAJICogYnkgdHJhbnNhY3Rpb25z IHRoYXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4IGFyZSBub3cgY29tbWl0dGVkIG9yCiAJ ICogcm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2libGUgdHVwbGUgaXMgZWl0aGVyIHRoZSBl bmQgb2YgaXRzCiAJICogSE9ULWNoYWluIG9yIHRoZSBleHRlbnNpb24gb2YgdGhlIGNoYWluIGlz IEhPVC1zYWZlIGZvciB0aGlzIGluZGV4LgogCSAqLwogCi0JLyogU2V0IEFjdGl2ZVNuYXBzaG90 IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAqLwotCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCiAJLyogUGVyZm9ybSBjb25j dXJyZW50IGJ1aWxkIG9mIGluZGV4ICovCiAJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKHRhYmxl SWQsIGluZGV4UmVsYXRpb25JZCk7CiAKLQkvKiB3ZSBjYW4gZG8gYXdheSB3aXRoIG91ciBzbmFw c2hvdCAqLwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0KIAkvKgogCSAqIENvbW1pdCB0aGlzIHRy YW5zYWN0aW9uIHRvIG1ha2UgdGhlIGluZGlzcmVhZHkgdXBkYXRlIHZpc2libGUuCiAJICovCkBA IC0yODc1LDggKzI4NjksMTEgQEAgRXhlY1JlaW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCX0KIAogCWlmIChjb25jdXJy ZW50bHkpCisJewogCQlQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9wTGV2ZWwsCiAJCQkJ CQkJCSAgIlJFSU5ERVggQ09OQ1VSUkVOVExZIik7CisJCVByZXZlbnRJc29sYXRpb25Vc2VzWGFj dFNuYXBzaG90KCJSRUlOREVYIENPTkNVUlJFTlRMWSIpOworCX0KIAogCXBhcmFtcy5vcHRpb25z ID0KIAkJKHZlcmJvc2UgPyBSRUlOREVYT1BUX1ZFUkJPU0UgOiAwKSB8CkBAIC00MTMyLDkgKzQx MjksNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJ c2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAotCQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2lu Y2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCi0JCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBw cm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAog CQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQxNDksNyArNDE0Myw2IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCS8qIFBlcmZvcm0gY29uY3VycmVudCBidWlsZCBvZiBuZXcgaW5kZXggKi8K IAkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRl eElkKTsKIAotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0MjYwNGEw Zjc1Yy4uZDZiYjM1NDZiZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAg LTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxz L3NuYXBtZ3IuaCIKIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGRvdWJsZQkJY3Vyc29yX3R1cGxl X2ZyYWN0aW9uID0gREVGQVVMVF9DVVJTT1JfVFVQTEVfRlJBQ1RJT047CkBAIC03MDI3LDYgKzcw MjgsNyBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4 T2lkKQogCVJlbGF0aW9uCWhlYXA7CiAJUmVsYXRpb24JaW5kZXg7CiAJUmVsT3B0SW5mbyAqcmVs OworCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCWludAkJCXBhcmFs bGVsX3dvcmtlcnM7CiAJQmxvY2tOdW1iZXIgaGVhcF9ibG9ja3M7CiAJZG91YmxlCQlyZWx0dXBs ZXM7CkBAIC03MDgyLDYgKzcwODQsMTIgQEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQg dGFibGVPaWQsIE9pZCBpbmRleE9pZCkKIAloZWFwID0gdGFibGVfb3Blbih0YWJsZU9pZCwgTm9M b2NrKTsKIAlpbmRleCA9IGluZGV4X29wZW4oaW5kZXhPaWQsIE5vTG9jayk7CiAKKwkvKiBTZXQg QWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0 ICovCisJaWYgKCFBY3RpdmVTbmFwc2hvdFNldCgpKQorCXsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9 IHRydWU7CisJfQogCS8qCiAJICogRGV0ZXJtaW5lIGlmIGl0J3Mgc2FmZSB0byBwcm9jZWVkLgog CSAqCkBAIC03MTM5LDYgKzcxNDcsOCBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0 YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCQlwYXJhbGxlbF93b3JrZXJzLS07CiAKIGRvbmU6CisJ aWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlp bmRleF9jbG9zZShpbmRleCwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwLCBOb0xvY2spOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rj b3AvdXRpbGl0eS5jCmluZGV4IDJiNjA5YmZjODI0Li5iNTUyMzIxMTZkZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMKQEAgLTE0NjMsOCArMTQ2MywxMSBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQlib29sCQlpc19hbHRlcl90YWJsZTsKIAogCQkJCQlpZiAoc3RtdC0+Y29u Y3VycmVudCkKKwkJCQkJewogCQkJCQkJUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayhpc1RvcExl dmVsLAogCQkJCQkJCQkJCQkJICAiQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSIpOworCQkJCQkJ UHJldmVudElzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoIkNSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkiKTsKKwkJCQkJfQogCiAJCQkJCS8qCiAJCQkJCSAqIExvb2sgdXAgdGhlIHJlbGF0aW9uIE9J RCBqdXN0IG9uY2UsIHJpZ2h0IGhlcmUgYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9lcnJjb2Rlcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9lcnJjb2Rlcy50eHQKaW5kZXgg NWIyNTQwMmViYmUuLmE4MGYwOGFmMjQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9l cnJjb2Rlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0CkBAIC0yNTks NiArMjU5LDcgQEAgU2VjdGlvbjogQ2xhc3MgMjUgLSBJbnZhbGlkIFRyYW5zYWN0aW9uIFN0YXRl CiAyNVAwMiAgICBFICAgIEVSUkNPREVfSU5fRkFJTEVEX1NRTF9UUkFOU0FDVElPTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluX2ZhaWxlZF9zcWxfdHJhbnNhY3Rpb24KIDI1UDAzICAg IEUgICAgRVJSQ09ERV9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCAgICAgICAg ICAgICAgICAgICAgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQKIDI1UDA0ICAg IEUgICAgRVJSQ09ERV9UUkFOU0FDVElPTl9USU1FT1VUICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHJhbnNhY3Rpb25fdGltZW91dAorMjVQMDUgICAgRSAgICBFUlJDT0RFX0lO QVBQUk9QUklBVEVfSVNPTEFUSU9OX0xFVkVMX0ZPUl9DT01NQU5EICAgICAgICAgICAgICBpbmFw cHJvcHJpYXRlX2lzb2xhdGlvbl9sZXZlbF9mb3JfY29tbWFuZAogCiBTZWN0aW9uOiBDbGFzcyAy NiAtIEludmFsaWQgU1FMIFN0YXRlbWVudCBOYW1lCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf YW1jaGVjay90LzAwNl9jaWMucGwgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCmlu ZGV4IDcwYjE4NTIxMmU3Li40YWU3Yjc5NmM2ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCkBA IC0xNTIsNyArMTUyLDcgQEAgJG5vZGUtPnBnYmVuY2goCiAJMCwKIAlbcXJ7YWN0dWFsbHkgcHJv Y2Vzc2VkfV0sCiAJW3Fye14kfV0sCi0JJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFSU5E RVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9IQVNIL1NQR0lT VCcsCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBmb3IgR0lOJywKIAl7CiAJCSdjb25jdXJyZW50X29wc19naW5faWR4JyA9PiBx KAogCQkJU0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2Nr IFxnc2V0CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMmZkYzUwYjg2NWIuLmZkMGMyY2YwYmYwIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oCkBAIC00Myw2ICs0Myw4IEBACiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9N QVJLX1VOVVNFRF9OT1cJCSgxIDw8IDApCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUJ CQkJKDEgPDwgMSkKIAorI2RlZmluZSBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRQkJNDA5 NgorCiB0eXBlZGVmIHN0cnVjdCBCdWxrSW5zZXJ0U3RhdGVEYXRhICpCdWxrSW5zZXJ0U3RhdGU7 CiB0eXBlZGVmIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSBHbG9iYWxWaXNTdGF0ZTsKIHR5cGVkZWYg c3RydWN0IFR1cGxlVGFibGVTbG90IFR1cGxlVGFibGVTbG90OwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5k ZXggMDYwODQ3NTIyNDUuLmQwNzA5NzgyZGRlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTI1LDYg KzI1LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcHNob3QuaCIKKyNpbmNsdWRlICJ1dGlscy9p bmplY3Rpb25fcG9pbnQuaCIKIAogCiAjZGVmaW5lIERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhP RAkiaGVhcCIKQEAgLTYzLDYgKzY0LDE3IEBAIHR5cGVkZWYgZW51bSBTY2FuT3B0aW9ucwogCiAJ LyogdW5yZWdpc3RlciBzbmFwc2hvdCBhdCBzY2FuIGVuZD8gKi8KIAlTT19URU1QX1NOQVBTSE9U ID0gMSA8PCA5LAorCS8qCisJICogUmVzZXQgc2NhbiBhbmQgY2F0YWxvZyBzbmFwc2hvdCBldmVy eSBzbyBvZnRlbj8gSWYgc28sIGVhY2gKKwkgKiBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFH RSBwYWdlcyBhY3RpdmUgc25hcHNob3QgaXMgcG9wcGVkLAorCSAqIGNhdGFsb2cgc25hcHNob3Qg aW52YWxpZGF0ZWQsIGxhdGVzdCBzbmFwc2hvdCBwdXNoZWQgYXMgYWN0aXZlLgorCSAqCisJICog QXQgdGhlIGVuZCBvZiB0aGUgc2NhbiBzbmFwc2hvdCBpcyBub3QgcG9wcGVkLgorCSAqIEdvYWwg b2Ygc3VjaCBtb2RlIGlzIGtlZXAgeG1pbiBwcm9wYWdhdGluZyBob3Jpem9uIGZvcndhcmQuCisJ ICoKKwkgKiBzZWUgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90IGZvciBkZXRhaWxzLgorCSAqLwor CVNPX1JFU0VUX1NOQVBTSE9UID0gMSA8PCAxMCwKIH0JCQlTY2FuT3B0aW9uczsKIAogLyoKQEAg LTkxOSw3ICs5MzEsOCBAQCBleHRlcm4gVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fY2F0 YWxvZyhSZWxhdGlvbiByZWxhdGlvbiwgaW50IG5rZXlzLAogc3RhdGljIGlubGluZSBUYWJsZVNj YW5EZXNjCiB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFw c2hvdCwKIAkJCQkJICBpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksCi0JCQkJCSAgYm9vbCBh bGxvd19zdHJhdCwgYm9vbCBhbGxvd19zeW5jKQorCQkJCQkgIGJvb2wgYWxsb3dfc3RyYXQsIGJv b2wgYWxsb3dfc3luYywKKwkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KQogewogCXVpbnQzMgkJ ZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKIApAQCAtOTI3LDYg Kzk0MCwxNSBAQCB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBz bmFwc2hvdCwKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1RSQVQ7CiAJaWYgKGFsbG93X3N5bmMpCiAJ CWZsYWdzIHw9IFNPX0FMTE9XX1NZTkM7CisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJSU5K RUNUSU9OX1BPSU5UKCJ0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzIiwgTlVM TCk7CisJCS8qIEFjdGl2ZSBzbmFwc2hvdCBpcyByZXF1aXJlZCBvbiBzdGFydC4gKi8KKwkJQXNz ZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc25hcHNob3QpOworCQkvKiBBY3RpdmUgc25hcHNo b3Qgc2hvdWxkIG5vdCBiZSByZWdpc3RlcmVkIHRvIGtlZXAgeG1pbiBwcm9wYWdhdGluZy4gKi8K KwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJCWZsYWdz IHw9IChTT19SRVNFVF9TTkFQU0hPVCk7CisJfQogCiAJcmV0dXJuIHRhYmxlX2JlZ2luc2Nhbl9j b21tb24ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOwogfQpAQCAtMTc2 MCw2ICsxNzgyLDEwIEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRl c2Mgc2NhbiwKICAqIHZlcnkgaGFyZCB0byBkZXRlY3Qgd2hldGhlciB0aGV5J3JlIHJlYWxseSBp bmNvbXBhdGlibGUgd2l0aCB0aGUgY2hhaW4gdGlwLgogICogVGhpcyBvbmx5IHJlYWxseSBtYWtl cyBzZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFsaXplZAogICog Zm9yIG90aGVyIEFNcyBsYXRlci4KKyAqCisgKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXgg YW5kIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkLAorICogU09fUkVTRVRfU05BUFNIT1Qg aXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgdG8gY2hhbmdpbmcgc25hcHNob3Rz CisgKiBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0 YXRpYyBpbmxpbmUgZG91YmxlCiB0YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxl X3JlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MveGFjdC5oCmluZGV4IGYwYjRkNzk1MDcxLi4yZTNmNjE3YTk0OSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGFj dC5oCkBAIC00ODgsNiArNDg4LDcgQEAgZXh0ZXJuIGJvb2wgSXNUcmFuc2FjdGlvbk9yVHJhbnNh Y3Rpb25CbG9jayh2b2lkKTsKIGV4dGVybiBjaGFyIFRyYW5zYWN0aW9uQmxvY2tTdGF0dXNDb2Rl KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKHZvaWQpOwogZXh0 ZXJuIHZvaWQgUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayhib29sIGlzVG9wTGV2ZWwsIGNvbnN0 IGNoYXIgKnN0bXRUeXBlKTsKK2V4dGVybiB2b2lkIFByZXZlbnRJc29sYXRpb25Vc2VzWGFjdFNu YXBzaG90KGNvbnN0IGNoYXIgKnN0bXRUeXBlKTsKIGV4dGVybiB2b2lkIFJlcXVpcmVUcmFuc2Fj dGlvbkJsb2NrKGJvb2wgaXNUb3BMZXZlbCwgY29uc3QgY2hhciAqc3RtdFR5cGUpOwogZXh0ZXJu IHZvaWQgV2Fybk5vVHJhbnNhY3Rpb25CbG9jayhib29sIGlzVG9wTGV2ZWwsIGNvbnN0IGNoYXIg KnN0bXRUeXBlKTsKIGV4dGVybiBib29sIElzSW5UcmFuc2FjdGlvbkJsb2NrKGJvb2wgaXNUb3BM ZXZlbCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFr ZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKaW5kZXgg YTQxZDc4MWY4YzkuLmVlYWVhYWYyY2M2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL01ha2VmaWxlCkBAIC05LDcgKzksNyBAQCBFWFRFTlNJT04gPSBpbmplY3Rpb25fcG9p bnRzCiBEQVRBID0gaW5qZWN0aW9uX3BvaW50cy0tMS4wLnNxbAogUEdGSUxFREVTQyA9ICJpbmpl Y3Rpb25fcG9pbnRzIC0gZmFjaWxpdHkgZm9yIGluamVjdGlvbiBwb2ludHMiCiAKLVJFR1JFU1Mg PSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIHZhY3V1bQorUkVHUkVTUyA9 IGluamVjdGlvbl9wb2ludHMgaGFzaGFnZyByZWluZGV4X2NvbmMgdmFjdXVtIGNpY19yZXNldF9z bmFwc2hvdHMKIFJFR1JFU1NfT1BUUyA9IC0tZGxwYXRoPSQodG9wX2J1aWxkZGlyKS9zcmMvdGVz dC9yZWdyZXNzCiAKIElTT0xBVElPTiA9IGJhc2ljIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBi L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjRhZDkw ZWIzMzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTAsMCArMSwxMTUgQEAKK0NS RUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3NldF9sb2NhbCgpOworIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19h dHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7Cisg aW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2Fu X3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFND SEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBp bnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBT RUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOworQ1JFQVRF IEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaW50ZWdlcikgUkVUVVJO UyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJ TgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIE1PRCgk MSwgMikgPSAwOworRU5EOyAkJDsKK0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVk aWNhdGVfc3RhYmxlX25vX3BhcmFtKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJ ICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlk X2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIGZhbHNlOworRU5EOyAkJDsKKy0tLS0tLS0tLS0tLS0t LS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9 MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBz aG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0 cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFi bGUoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5f c3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFw LnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0 cmF0X3Jlc2V0X3NuYXBzaG90cworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworLS0gVGhlIHNh bWUgaW4gcGFyYWxsZWwgbW9kZQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAo cGFyYWxsZWxfd29ya2Vycz0yKTsKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVS RSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdI RVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0 X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFy YW0oKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7 CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0JFR0lOIFRSQU5TQUNUSU9OOworQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworRVJST1I6ICBD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNhbm5vdCBydW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24g YmxvY2sKK1JPTExCQUNLIDsKK1NFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9IHNl cmlhbGl6YWJsZTsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpKTsKK0VSUk9SOiAgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBkb2VzIG5vdCBz dXBwb3J0IHRyYW5zYWN0aW9uIGlzb2xhdGlvbiBoaWdoZXIgdGhhbiBSRUFEIENPTU1JVFRFRAor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRVJST1I6ICBS RUlOREVYIENPTkNVUlJFTlRMWSBkb2VzIG5vdCBzdXBwb3J0IHRyYW5zYWN0aW9uIGlzb2xhdGlv biBoaWdoZXIgdGhhbiBSRUFEIENPTU1JVFRFRAorUkVTRVQgZGVmYXVsdF90cmFuc2FjdGlvbl9p c29sYXRpb247CitEUk9QIFNDSEVNQSBjaWNfcmVzZXRfc25hcCBDQVNDQURFOworTk9USUNFOiAg ZHJvcCBjYXNjYWRlcyB0byAzIG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2FkZXMg dG8gdGFibGUgY2ljX3Jlc2V0X3NuYXAudGJsCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGNp Y19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaW50ZWdlcikKK2Ryb3AgY2FzY2FkZXMgdG8g ZnVuY3Rpb24gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpCitEUk9Q IEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL21lc29uLmJ1aWxkCmluZGV4IGZjYzg1NDE0NTE1Li41ZDI5OGNkMjcxMCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZApAQCAtMzYs NiArMzYsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAnaGFzaGFnZycsCiAgICAgICAncmVpbmRleF9j b25jJywKICAgICAgICd2YWN1dW0nLAorICAgICAgJ2NpY19yZXNldF9zbmFwc2hvdHMnLAogICAg IF0sCiAgICAgJ3JlZ3Jlc3NfYXJncyc6IFsnLS1kbHBhdGgnLCBtZXNvbi5wcm9qZWN0X2J1aWxk X3Jvb3QoKSAvICdzcmMvdGVzdC9yZWdyZXNzJ10sCiAgICAgIyBUaGUgaW5qZWN0aW9uIHBvaW50 cyBhcmUgY2x1c3Rlci13aWRlLCBzbyBkaXNhYmxlIGluc3RhbGxjaGVjawpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3Rz LnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdmN2Rm ZmE1YmU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAtMCwwICsxLDk1IEBACitDUkVBVEUg RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CisKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3Nl dF9sb2NhbCgpOworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3Nj YW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOworU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGlj ZScpOworCisKK0NSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CitDUkVBVEUgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CitJTlNFUlQgSU5UTyBj aWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMCkgcyhpKTsKKworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9z dGFibGUoaW50ZWdlcikgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJICBMQU5HVUFH RSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQo KSc7CisgICAgUkVUVVJOIE1PRCgkMSwgMikgPSAwOworRU5EOyAkJDsKKworQ1JFQVRFIEZVTkNU SU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKSBSRVRVUk5TIGJv b2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisg ICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gZmFsc2U7CitF TkQ7ICQkOworCistLS0tLS0tLS0tLS0tLS0tCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50 YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisK K0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0Qo aSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOwor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3Nu YXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKKworLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0 X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKKworQ1JFQVRFIFVOSVFVRSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJs ZShpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19y ZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkgREVTQyBOVUxMUyBMQVNUKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK0JFR0lOIFRSQU5TQUNUSU9OOworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUk9MTEJBQ0sgOworCitTRVQgZGVmYXVsdF90 cmFuc2FjdGlvbl9pc29sYXRpb24gPSBzZXJpYWxpemFibGU7CitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitSRVNFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lz b2xhdGlvbjsKKworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKKworRFJPUCBF WFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0gCjIuNDMuMAoK --000000000000041d7b064d6a6d1e Content-Type: application/octet-stream; name="v3-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Disposition: attachment; filename="v3-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmy5djwq3 RnJvbSAxOTdkMjIxY2NlMmM3MjI5MjgzMjNmMDQ2YTdjMTViYzBmZDA0NDczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxOTowMjozNCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjMgNC80XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IGJ1aWxk cyBvZiB1bmlxdWUKIGluZGV4ZXMKClByZXZpb3VzbHksIGNvbmN1cnJlbnQgYnVpbGRzIG9mIHVu aXF1ZSBpbmRleCB1c2VkIGEgZml4ZWQgc25hcHNob3QgZm9yIHRoZSBlbnRpcmUgc2NhbiB0byBl bnN1cmUgcHJvcGVyIHVuaXF1ZW5lc3MgY2hlY2tzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJp b2RpY2FsbHkgZHVyaW5nIGNvbmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUgc3Rp bGwgbWFpbnRhaW5pbmcgdW5pcXVlbmVzcyBieToKLSBpZ25vcmluZyBTbmFwc2hvdFNlbGYgZGVh ZCB0dXBsZXMgZHVyaW5nIHVuaXF1ZW5lc3MgY2hlY2tzIGluIHR1cGxlc29ydCBhcyBub3QgYSBn dWFyYW50ZWUsIGJ1dCBhIGZhaWwtZmFzdCBtZWNoYW5pY3MKLSBhZGRpbmcgYSB1bmlxdWVuZXNz IGNoZWNrIGluIF9idF9sb2FkIHRoYXQgZGV0ZWN0cyBtdWx0aXBsZSBhbGl2ZSB0dXBsZXMgd2l0 aCB0aGUgc2FtZSBrZXkgdmFsdWVzIGFzIGEgZ3VhcmFudGVlIG9mIGNvcnJlY3RuZXNzCgpUdXBs ZXMgYXJlIFNuYXBzaG90U2VsZiB0ZXN0ZWQgb25seSBpbiB0aGUgY2FzZSBvZiBlcXVhbCBpbmRl eCBrZXkgdmFsdWVzLCBvdGhlcndpc2UgX2J0X2xvYWQgd29ya3MgbGlrZSBiZWZvcmUuCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAgICAgIHwgIDEyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyAgICAgICAgICB8ICAgOCArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWFkcGFnZS5jICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAxOTUgKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMgICAgICAg fCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyAgICAgICAgICB8 ICAzMCArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8 ICAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMgICAgfCAg NzEgKysrKystLQogc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oICAgICAgICAgICAgICAgICAg IHwgICA0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAgICAgICB8 ICAgMSArCiAuLi4vZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgICAgICAgICAgfCAg MzEgKystCiAxNCBmaWxlcyBjaGFuZ2VkLCAyOTAgaW5zZXJ0aW9ucygrKSwgOTYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3ZjM3NWEuLjgyOWRh ZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM4NiwxMiArMzg2LDEy IEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQgYmVmb3JlIHdlIHN0YXJ0 IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5nIGZvciB0cmFuc2FjdGlv bnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUgaW5kZXgKLWZvciBhbGwg cm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAgQW55IHR1cGxlcyB2aXNp YmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5n IEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQg dGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3IgdGhlIHNhbWUKLXJlYXNv biBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBhYm92ZSwgd2UgcG9pbnQg dGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQg d2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUuCitmb3IgYWxsIHJvd3Mg dGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2ggaXMgdXBkYXRlZCBldmVy eSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25hcHNob3Qgd2lsbCBoYXZl IG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAgKFRoZXkgbWlnaHQgaGF2 ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLAorYnV0IHRo aXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBi dWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5IGF0IHRoZSByb290IG9m IHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUg bGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0 aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0 aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBhNjM5ZThiMzFlMC4uMDQ3MzhkNTli OTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTI2MSwx NSArMTI2MSwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNF TlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcg Ym9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90CiAJICogYW5kIGluZGV4 IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0aGF0IHNuYXBzaG90IGlz IHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCku CisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBz bmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1cnJlbnQgYnVpbGRzIG9m IG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9kaWNhbGx5CisJICogcmVz ZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0dXBsZXMuCiAJICovCiAJ cmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCi0JCQkJCSAgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9nOyAvKiBqdXN0 IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNVVU1zIGhlcmUg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCBhZjdhZmZkZjQwOS4uMTBm NGY3ZWViYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKQEAgLTE0OSw3ICsx NDksNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVw bGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVuZGluZyhz dGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0ZS0+ZGVkdXBsaWNhdGUg JiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5r ZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1 cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0YXRlLCBp dHVwKSkKIAkJewogCQkJLyoKQEAgLTM3Niw3ICszNzYsNyBAQCBfYnRfYm90dG9tdXBkZWxfcGFz cyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkvKiBpdHVw IHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVu ZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0 c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMgJiYKKwkJZWxzZSBpZiAo X2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwLCBOVUxMKSA+IG5rZXlh dHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0dXApKQogCQl7CiAJCQkv KiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBwZW5kaW5nIGludGVydmFs ICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRfZG9fc2luZ2xldmFsKFJlbGF0aW9uIHJlbCwg UGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChw YWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocGFnZSwgaXRl bWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBu a2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5V TEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIFBhZ2VH ZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJ dGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdp dGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVhZHBhZ2UuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVhZHBhZ2UuYwppbmRleCAyYmExY2E2NjAyMy4uYzRj Mjc4ZTc3N2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVhZHBh Z2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdlLmMKQEAgLTYy Myw3ICs2MjMsNyBAQCBfYnRfc2V0X3N0YXJ0aWtleShJbmRleFNjYW5EZXNjIHNjYW4sIEJUUmVh ZFBhZ2VTdGF0ZSAqcHN0YXRlKQogCWxhc3R0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0o cHN0YXRlLT5wYWdlLCBpaWQpOwogCiAJLyogRGV0ZXJtaW5lIHRoZSBmaXJzdCBhdHRyaWJ1dGUg d2hvc2UgdmFsdWVzIGNoYW5nZSBvbiBjYWxsZXIncyBwYWdlICovCi0JZmlyc3RjaGFuZ2luZ2F0 dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBmaXJzdHR1cCwgbGFzdHR1cCk7CisJZmly c3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBmaXJzdHR1cCwgbGFz dHR1cCwgTlVMTCk7CiAKIAlmb3IgKDsgc3RhcnRpa2V5IDwgc28tPm51bWJlck9mS2V5czsgc3Rh cnRpa2V5KyspCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz b3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCAwMWUzMzhm YjU2Mi4uN2JmZjg5ZTA5MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC04 Nyw2ICs4Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEJUU3Bvb2wKIAlSZWxhdGlvbglpbmRleDsKIAli b29sCQlpc3VuaXF1ZTsKIAlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CisJYm9vbAkJdW5pcXVl X2RlYWRfaWdub3JlZDsKIH0gQlRTcG9vbDsKIAogLyoKQEAgLTEwNSw2ICsxMDYsNyBAQCB0eXBl ZGVmIHN0cnVjdCBCVFNoYXJlZAogCU9pZAkJCWluZGV4cmVsaWQ7CiAJYm9vbAkJaXN1bmlxdWU7 CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9kZWFkX2lnbm9yZWQ7 CiAJYm9vbAkJaXNjb25jdXJyZW50OwogCWludAkJCXNjYW50dXBsZXNvcnRzdGF0ZXM7CiAKQEAg LTIwNywxNSArMjA5LDEzIEBAIHR5cGVkZWYgc3RydWN0IEJUTGVhZGVyCiAgKi8KIHR5cGVkZWYg c3RydWN0IEJUQnVpbGRTdGF0ZQogewotCWJvb2wJCWlzdW5pcXVlOwotCWJvb2wJCW51bGxzX25v dF9kaXN0aW5jdDsKIAlib29sCQloYXZlZGVhZDsKIAlSZWxhdGlvbgloZWFwOwogCUJUU3Bvb2wg ICAgKnNwb29sOwogCiAJLyoKLQkgKiBzcG9vbDIgaXMgbmVlZGVkIG9ubHkgd2hlbiB0aGUgaW5k ZXggaXMgYSB1bmlxdWUgaW5kZXguIERlYWQgdHVwbGVzIGFyZQotCSAqIHB1dCBpbnRvIHNwb29s MiBpbnN0ZWFkIG9mIHNwb29sIGluIG9yZGVyIHRvIGF2b2lkIHVuaXF1ZW5lc3MgY2hlY2suCisJ ICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlzIGEgdW5pcXVlIGluZGV4 IGFuZCBidWlsdCBub24tY29uY3VycmVudGx5LgorCSAqIERlYWQgdHVwbGVzIGFyZSBwdXQgaW50 byBzcG9vbDIgaW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNo ZWNrLgogCSAqLwogCUJUU3Bvb2wgICAgKnNwb29sMjsKIAlkb3VibGUJCWluZHR1cGxlczsKQEAg LTI2Miw3ICsyNjIsNyBAQCBzdGF0aWMgZG91YmxlIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2xkZXN0cm95KEJU U3Bvb2wgKmJ0c3Bvb2wpOwogc3RhdGljIHZvaWQgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2ws IGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqc2VsZiwKIAkJCQkJICBjb25zdCBEYXR1bSAqdmFsdWVz LCBjb25zdCBib29sICppc251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29s ICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpOworc3Rh dGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29s MiwgYm9vbCBpc2NvbmN1cnJlbnQpOwogc3RhdGljIHZvaWQgX2J0X2J1aWxkX2NhbGxiYWNrKFJl bGF0aW9uIGluZGV4LCBJdGVtUG9pbnRlciB0aWQsIERhdHVtICp2YWx1ZXMsCiAJCQkJCQkJICAg Ym9vbCAqaXNudWxsLCBib29sIHR1cGxlSXNBbGl2ZSwgdm9pZCAqc3RhdGUpOwogc3RhdGljIEJ1 bGtXcml0ZUJ1ZmZlciBfYnRfYmxuZXdwYWdlKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCB1aW50MzIg bGV2ZWwpOwpAQCAtMzA3LDggKzMwNyw2IEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlSZXNldFVzYWdlKCk7CiAjZW5kaWYJ CQkJCQkJLyogQlRSRUVfQlVJTERfU1RBVFMgKi8KIAotCWJ1aWxkc3RhdGUuaXN1bmlxdWUgPSBp bmRleEluZm8tPmlpX1VuaXF1ZTsKLQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5jdCA9IGlu ZGV4SW5mby0+aWlfTnVsbHNOb3REaXN0aW5jdDsKIAlidWlsZHN0YXRlLmhhdmVkZWFkID0gZmFs c2U7CiAJYnVpbGRzdGF0ZS5oZWFwID0gaGVhcDsKIAlidWlsZHN0YXRlLnNwb29sID0gTlVMTDsK QEAgLTMyNSwyMCArMzIzLDIwIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlu ZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2FuKGhlYXAsIGluZGV4LCAm YnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsKLQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVu dCB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhlIGJ1aWxk IGJ5ICgxKSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikKIAkgKiBp bnNlcnRpbmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMpIGJ1aWxk aW5nIHRoZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJlIG5lY2Vz c2FyeSB0byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVpbGQoYnVp bGRzdGF0ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1VuaXF1ZSAm JiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOworCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5z cG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0 X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIp CiAJCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRl LmJ0bGVhZGVyKQogCQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOwotCUFz c2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8 ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5m by0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CiAKIAlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEluZGV4QnVpbGRSZXN1bHQpOwogCkBAIC0zODUs NiArMzgzLDExIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4 OwogCWJ0c3Bvb2wtPmlzdW5pcXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+ bnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworCS8q CisJICogV2UgbmVlZCB0byBpZ25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3MgaW4g Y2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkLgorCSAqIEl0IGlzIHJlcXVpcmVkIGJlY2F1c2Ugb2Yg cGVyaW9kaWMgcmVzZXQgb2Ygc25hcHNob3QuCisJICovCisJYnRzcG9vbC0+dW5pcXVlX2RlYWRf aWdub3JlZCA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJiBpbmRleEluZm8tPmlpX1VuaXF1 ZTsKIAogCS8qIFNhdmUgYXMgcHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUtPnNwb29sID0g YnRzcG9vbDsKQEAgLTQzMyw4ICs0MzYsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogdGhl IHVzZSBvZiBwYXJhbGxlbGlzbSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwogCWJ1aWxkc3Rh dGUtPnNwb29sLT5zb3J0c3RhdGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVh cCwgaW5kZXgsIGJ1aWxkc3RhdGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRzdGF0ZS0+bnVs bHNfbm90X2Rpc3RpbmN0LAorCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5k ZXgsIGJ0c3Bvb2wtPmlzdW5pcXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3Rp bmN0LAorCQkJCQkJCQkJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCW1h aW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVTT1JUX05PTkUp OwogCkBAIC00NDIsOCArNDQ2LDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiBJZiBidWls ZGluZyBhIHVuaXF1ZSBpbmRleCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25kIHNwb29sIHRv IGtlZXAKIAkgKiB0aGVtIG91dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdlIGV4cGVjdCB0 aGF0IHRoZSBzZWNvbmQgc3Bvb2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVy eSBmdWxsLCBzbyB3ZSBnaXZlIGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJbiBjYXNlIG9m IGNvbmN1cnJlbnQgYnVpbGQgZGVhZCB0dXBsZXMgZG8gbm90IG5lZWQgdG8gYmUgcHV0IGludG8g aW5kZXgKKwkgKiBzaW5jZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9sZGVyIHRoYW4gcmVm ZXJlbmNlIHNuYXBzaG90IGR1cmluZyB0aGUKKwkgKiB2YWxpZGF0aW9uIHBoYXNlLgogCSAqLwot CWlmIChpbmRleEluZm8tPmlpX1VuaXF1ZSkKKwlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYg IWluZGV4SW5mby0+aWlfQ29uY3VycmVudCkKIAl7CiAJCUJUU3Bvb2wgICAgKmJ0c3Bvb2wyID0g cGFsbG9jMF9vYmplY3QoQlRTcG9vbCk7CiAJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUyID0g TlVMTDsKQEAgLTQ3NCw3ICs0ODIsNyBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJCSAqIGZ1bGws IHNvIHdlIGdpdmUgaXQgb25seSB3b3JrX21lbQogCQkgKi8KIAkJYnVpbGRzdGF0ZS0+c3Bvb2wy LT5zb3J0c3RhdGUgPQotCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGhlYXAsIGluZGV4 LCBmYWxzZSwgZmFsc2UsIHdvcmtfbWVtLAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVl KGhlYXAsIGluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB3b3JrX21lbSwKIAkJCQkJCQkJCQlj b29yZGluYXRlMiwgVFVQTEVTT1JUX05PTkUpOwogCX0KIApAQCAtNDg3LDcgKzQ5NSw3IEBAIF9i dF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwKIAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVsX2hlYXBzY2FuKGJ1 aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbik7CiAJ SW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIFNldCB0aGUgcHJv Z3Jlc3MgdGFyZ2V0IGZvciB0aGUgbmV4dCBwaGFzZS4gIFJlc2V0IHRoZSBibG9jayBudW1iZXIK QEAgLTU0Myw3ICs1NTEsNyBAQCBfYnRfc3Bvb2woQlRTcG9vbCAqYnRzcG9vbCwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICpzZWxmLCBjb25zdCBEYXR1bSAqdmFsdWVzLCBjbwogICogY3JlYXRlIGFu IGVudGlyZSBidHJlZS4KICAqLwogc3RhdGljIHZvaWQKLV9idF9sZWFmYnVpbGQoQlRTcG9vbCAq YnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25hcHNob3RzKQorX2J0X2xl YWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCBpc2NvbmN1 cnJlbnQpCiB7CiAJQlRXcml0ZVN0YXRlIHdzdGF0ZTsKIApAQCAtNTY1LDcgKzU3Myw3IEBAIF9i dF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVz ZXRfc25hcHNob3RzKQogCQkJCQkJCQkJIFBST0dSRVNTX0JUUkVFX1BIQVNFX1BFUkZPUk1TT1JU XzIpOwogCQl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoYnRzcG9vbDItPnNvcnRzdGF0ZSk7CiAJfQot CUFzc2VydCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhtaW4pKTsKKwlBc3NlcnQoIWlzY29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJd3N0YXRl LmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7CkBAIC01NzksNyArNTg3LDcgQEAgX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hv dHMpCiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9T VUJQSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0JUUkVFX1BIQVNFX0xFQUZfTE9BRCk7Ci0JQXNz ZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOworCUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAlfYnRfbG9hZCgmd3N0YXRlLCBidHNwb29sLCBidHNwb29sMik7CiB9CiAK QEAgLTExNTYsMTMgKzExNjQsMTE4IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCBC VFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAlTb3J0U3VwcG9ydCBzb3J0S2V5 czsKIAlpbnQ2NAkJdHVwbGVzX2RvbmUgPSAwOwogCWJvb2wJCWRlZHVwbGljYXRlOworCWJvb2wJ CWZhaWxfb25fYWxpdmVfZHVwbGljYXRlOwogCiAJd3N0YXRlLT5idWxrc3RhdGUgPSBzbWdyX2J1 bGtfc3RhcnRfcmVsKHdzdGF0ZS0+aW5kZXgsIE1BSU5fRk9SS05VTSk7CiAKIAlkZWR1cGxpY2F0 ZSA9IHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlICYmICFidHNwb29sLT5pc3VuaXF1ZSAm JgogCQlCVEdldERlZHVwbGljYXRlSXRlbXMod3N0YXRlLT5pbmRleCk7CisJLyoKKwkgKiBUaGUg dW5pcXVlX2RlYWRfaWdub3JlZCBkb2VzIG5vdCBndWFyYW50ZWUgYWJzZW5jZSBvZiBtdWx0aXBs ZSBhbGl2ZQorCSAqIHR1cGxlcyB3aXRoIHNhbWUgdmFsdWVzIGV4aXN0cyBpbiB0aGUgc3Bvb2wu IFN1Y2ggdGhpbmcgbWF5IGhhcHBlbiBpZgorCSAqIGFsaXZlIHR1cGxlcyBhcmUgbG9jYXRlZCBi ZXR3ZWVuIGEgZmV3IGRlYWQgdHVwbGVzLCBsaWtlIHRoaXM6IGFkZGRhLgorCSAqLworCWZhaWxf b25fYWxpdmVfZHVwbGljYXRlID0gYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZDsKIAotCWlm IChtZXJnZSkKKwlpZiAoZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGUpCisJeworCQlib29sCXNlZW5f YWxpdmUgPSBmYWxzZSwKKwkJCQlwcmV2X3Rlc3RlZCA9IGZhbHNlOworCQlJbmRleFR1cGxlIHBy ZXYgPSBOVUxMOworCQlUdXBsZVRhYmxlU2xvdCAJCSpzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFi bGVTbG90KFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5oZWFwKSwKKwkJCQkJCQkJCQkJCQkJCSAg ICZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQlJbmRleEZldGNoVGFibGVEYXRhICpmZXRjaCA9 IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHdzdGF0ZS0+aGVhcCk7CisKKwkJQXNzZXJ0KGJ0c3Bv b2wtPmlzdW5pcXVlKTsKKwkJQXNzZXJ0KCFidHNwb29sMik7CisKKwkJd2hpbGUgKChpdHVwID0g dHVwbGVzb3J0X2dldGluZGV4dHVwbGUoYnRzcG9vbC0+c29ydHN0YXRlLCB0cnVlKSkgIT0gTlVM TCkKKwkJeworCQkJYm9vbAl0dXBsZXNfZXF1YWwgPSBmYWxzZTsKKworCQkJLyogV2hlbiB3ZSBz ZWUgZmlyc3QgdHVwbGUsIGNyZWF0ZSBmaXJzdCBpbmRleCBwYWdlICovCisJCQlpZiAoc3RhdGUg PT0gTlVMTCkKKwkJCQlzdGF0ZSA9IF9idF9wYWdlc3RhdGUod3N0YXRlLCAwKTsKKworCQkJaWYg KHByZXYgIT0gTlVMTCkgLyogaWYgaXMgbm90IHRoZSBmaXJzdCB0dXBsZSAqLworCQkJeworCQkJ CWJvb2wJaGFzX251bGxzID0gZmFsc2UsCisJCQkJCQljYWxsX2FnYWluLCAvKiBqdXN0IHRvIHBh c3Mgc29tZXRoaW5nICovCisJCQkJCQlpZ25vcmVkLCAgLyoganVzdCB0byBwYXNzIHNvbWV0aGlu ZyAqLworCQkJCQkJbm93X2FsaXZlOworCQkJCUl0ZW1Qb2ludGVyRGF0YSB0aWQ7CisKKwkJCQkv KiBpZiB0aGlzIHR1cGxlcyBlcXVhbCB0byBwcmV2aW91cyBvbmU/ICovCisJCQkJaWYgKHdzdGF0 ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9u YXR0c19mYXN0KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZoYXNfbnVsbHMpID4ga2V5c3o7 CisJCQkJZWxzZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0cyh3c3RhdGUtPmlu ZGV4LCBwcmV2LCBpdHVwLCB3c3RhdGUtPmluc2tleSwgJmhhc19udWxscykgPiBrZXlzejsKKwor CQkJCS8qIGhhbmRsZSBudWxsIHZhbHVlcyBjb3JyZWN0bHkgKi8KKwkJCQlpZiAoaGFzX251bGxz ICYmICFidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3QpCisJCQkJCXR1cGxlc19lcXVhbCA9IGZh bHNlOworCisJCQkJaWYgKHR1cGxlc19lcXVhbCkKKwkJCQl7CisJCQkJCS8qIGNoZWNrIHByZXZp b3VzIHR1cGxlIGlmIG5vdCB5ZXQgKi8KKwkJCQkJaWYgKCFwcmV2X3Rlc3RlZCkKKwkJCQkJewor CQkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQkJdGlkID0gcHJldi0+dF90aWQ7CisJCQkJ CQlzZWVuX2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBz aG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKwkJCQkJCXByZXZfdGVzdGVk ID0gdHJ1ZTsKKwkJCQkJfQorCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZTsKKwkJCQkJdGlkID0g aXR1cC0+dF90aWQ7CisJCQkJCW5vd19hbGl2ZSA9IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKGZl dGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLCAmaWdub3JlZCk7CisK KwkJCQkJLyogYXJlIG11bHRpcGxlIGFsaXZlIHR1cGxlcyBkZXRlY3RlZCBpbiBlcXVhbCBncm91 cD8gKi8KKwkJCQkJaWYgKHNlZW5fYWxpdmUgJiYgbm93X2FsaXZlKQorCQkJCQl7CisJCQkJCQlj aGFyICprZXlfZGVzYzsKKwkJCQkJCVR1cGxlRGVzYyB0dXBEZXMgPSBSZWxhdGlvbkdldERlc2Ny KHdzdGF0ZS0+aW5kZXgpOworCQkJCQkJYm9vbCBpc251bGxbSU5ERVhfTUFYX0tFWVNdOworCQkJ CQkJRGF0dW0gdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKKworCQkJCQkJaW5kZXhfZGVmb3JtX3R1 cGxlKGl0dXAsIHR1cERlcywgdmFsdWVzLCBpc251bGwpOworCisJCQkJCQlrZXlfZGVzYyA9IEJ1 aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKHdzdGF0ZS0+aW5kZXgsIHZhbHVlcywgaXNudWxsKTsK KworCQkJCQkJLyoga2VlcCB0aGlzIG1lc3NhZ2UgaW4gc3luYyB3aXRoIHRoZSBzYW1lIGluIGNv bXBhcmV0dXBfaW5kZXhfYnRyZWVfdGllYnJlYWsgKi8KKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCisJCQkJCQkJCQkJZXJy bXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAorCQkJCQkJCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh3c3RhdGUtPmluZGV4KSksCisJCQkJCQkJCQkJa2V5 X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6CisJ CQkJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlzdC4iKSwKKwkJCQkJCQkJCQll cnJ0YWJsZWNvbnN0cmFpbnQod3N0YXRlLT5oZWFwLAorCQkJCQkJCQkJCQkJCQkgICBSZWxhdGlv bkdldFJlbGF0aW9uTmFtZSh3c3RhdGUtPmluZGV4KSkpKTsKKwkJCQkJfQorCQkJCQlzZWVuX2Fs aXZlIHw9IG5vd19hbGl2ZTsKKwkJCQl9CisJCQl9CisKKwkJCWlmICghdHVwbGVzX2VxdWFsKQor CQkJeworCQkJCXNlZW5fYWxpdmUgPSBmYWxzZTsKKwkJCQlwcmV2X3Rlc3RlZCA9IGZhbHNlOwor CQkJfQorCisJCQlfYnRfYnVpbGRhZGQod3N0YXRlLCBzdGF0ZSwgaXR1cCwgMCk7CisJCQlpZiAo cHJldikgcGZyZWUocHJldik7CisJCQlwcmV2ID0gQ29weUluZGV4VHVwbGUoaXR1cCk7CisKKwkJ CS8qIFJlcG9ydCBwcm9ncmVzcyAqLworCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUsCisJCQkJCQkJCQkJICsrdHVwbGVzX2RvbmUp OworCQl9CisJCWlmIChwcmV2KSBwZnJlZShwcmV2KTsKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRh YmxlU2xvdChzbG90KTsKKwkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsKKwkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwl9CisJZWxzZSBpZiAobWVy Z2UpCiAJewogCQkvKgogCQkgKiBBbm90aGVyIEJUU3Bvb2wgZm9yIGRlYWQgdHVwbGVzIGV4aXN0 cy4gTm93IHdlIGhhdmUgdG8gbWVyZ2UKQEAgLTEzMjIsNyArMTQzNSw3IEBAIF9idF9sb2FkKEJU V3JpdGVTdGF0ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikK IAkJCQkJCQkJCQlJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAkJCX0KIAkJCWVsc2UgaWYgKF9idF9r ZWVwX25hdHRzX2Zhc3Qod3N0YXRlLT5pbmRleCwgZHN0YXRlLT5iYXNlLAotCQkJCQkJCQkJCSBp dHVwKSA+IGtleXN6ICYmCisJCQkJCQkJCQkJIGl0dXAsIE5VTEwpID4ga2V5c3ogJiYKIAkJCQkJ IF9idF9kZWR1cF9zYXZlX2h0aWQoZHN0YXRlLCBpdHVwKSkKIAkJCXsKIAkJCQkvKgpAQCAtMTQx OSw3ICsxNTMyLDYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1 c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9w X2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7Ci0JYm9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50CQkJ cXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM3 LDIxICsxNTQ5LDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAogCXNjYW50dXBsZXNvcnRzdGF0 ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKLSAgICAv KgotCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVy aW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cwotCSAqIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24g dG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNlIGJ1aWxkcyBkb24ndAotCSAqIHJl cXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGlu ZGV4ZXMgc3RpbGwgbmVlZAotCSAqIGEgc3RhYmxlIHNuYXBzaG90IHRvIHByb3Blcmx5IGVuZm9y Y2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KLSAgICAgKi8KLQlyZXNldF9zbmFwc2hvdCA9IGlz Y29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9y IHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2Ug dXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMg YW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8g aW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQs IHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkg KiBsaXZlIGFjY29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNl dCBwZXJpb2RpY2FsbHkgaW4KLQkgKiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXguCisJICogbGl2 ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVy aW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTksMTYgKzE1 NjIsMTYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55Owog CQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9Ci0JZWxzZSBpZiAocmVzZXRf c25hcHNob3QpCisJZWxzZQogCXsKKwkJLyoKKwkJICogRm9yIGNvbmN1cnJlbnQgaW5kZXggYnVp bGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cyB0byBhbGxvdworCQkgKiB0 aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMgc2FmZSBzaW5jZSB0aGVzZSBidWls ZHMgZG9uJ3QKKwkJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGly ZSBzY2FuLgorCQkgKi8KIAkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAJCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KLQllbHNlCi0JewotCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJ UHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNp emUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApA QCAtMTUzOCw2ICsxNjQxLDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5pbmRl eHJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChidHNwb29sLT5pbmRleCk7CiAJYnRzaGFyZWQtPmlz dW5pcXVlID0gYnRzcG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5j dCA9IGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdDsKKwlidHNoYXJlZC0+dW5pcXVlX2RlYWRf aWdub3JlZCA9IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAJYnRzaGFyZWQtPmlzY29u Y3VycmVudCA9IGlzY29uY3VycmVudDsKIAlidHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlcyA9 IHNjYW50dXBsZXNvcnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215 X3F1ZXJ5X2lkKCk7CkBAIC0xNTUyLDcgKzE2NTYsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJ dGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQ YXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCiAJCQkJCQkJCSAgc25hcHNo b3QsCi0JCQkJCQkJCSAgcmVzZXRfc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCk7 CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdo aWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYzMiw3ICsxNzM2LDcgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdv aW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBXYWl0IHVudGlsIGFsbCB3b3JrZXJz IGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCiAJICovCi0JaWYgKHJlc2V0X3NuYXBzaG90KQor CWlmIChpc2NvbmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0 LCB0cnVlKTsKIAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwpAQCAtMTY0MywxMyAr MTc0NywxMyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQg Zm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUg dGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkg Ki8KLQlpZiAoIXJlc2V0X3NuYXBzaG90KQorCWlmICghaXNjb25jdXJyZW50KQogCQlXYWl0Rm9y UGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAlJbnZhbGlkYXRlQ2F0YWxv Z1NuYXBzaG90KCk7Ci0JQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWlzY29uY3VycmVudCB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiB9CiAKIC8qCkBAIC0xNzQ5LDYgKzE4NTMsNyBA QCBfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihCVEJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUpCiAJbGVhZGVyd29ya2VyLT5pbmRleCA9IGJ1aWxkc3RhdGUtPnNwb29sLT5pbmRleDsKIAls ZWFkZXJ3b3JrZXItPmlzdW5pcXVlID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPmlzdW5pcXVlOwogCWxl YWRlcndvcmtlci0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPm51bGxz X25vdF9kaXN0aW5jdDsKKwlsZWFkZXJ3b3JrZXItPnVuaXF1ZV9kZWFkX2lnbm9yZWQgPSBidWls ZHN0YXRlLT5zcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZDsKIAogCS8qIEluaXRpYWxpemUgc2Vj b25kIHNwb29sLCBpZiByZXF1aXJlZCAqLwogCWlmICghYnRsZWFkZXItPmJ0c2hhcmVkLT5pc3Vu aXF1ZSkKQEAgLTE4NTIsMTEgKzE5NTcsMTIgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNt X3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWJ0c3Bvb2wtPmluZGV4ID0gaW5kZXhSZWw7 CiAJYnRzcG9vbC0+aXN1bmlxdWUgPSBidHNoYXJlZC0+aXN1bmlxdWU7CiAJYnRzcG9vbC0+bnVs bHNfbm90X2Rpc3RpbmN0ID0gYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdDsKKwlidHNwb29s LT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnRzaGFyZWQtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAK IAkvKiBMb29rIHVwIHNoYXJlZCBzdGF0ZSBwcml2YXRlIHRvIHR1cGxlc29ydC5jICovCiAJc2hh cmVkc29ydCA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1RVUExFU09SVCwgZmFs c2UpOwogCXR1cGxlc29ydF9hdHRhY2hfc2hhcmVkKHNoYXJlZHNvcnQsIHNlZyk7Ci0JaWYgKCFi dHNoYXJlZC0+aXN1bmlxdWUpCisJaWYgKCFidHNoYXJlZC0+aXN1bmlxdWUgfHwgYnRzaGFyZWQt PmlzY29uY3VycmVudCkKIAl7CiAJCWJ0c3Bvb2wyID0gTlVMTDsKIAkJc2hhcmVkc29ydDIgPSBO VUxMOwpAQCAtMTkzNiw2ICsyMDQyLDcgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRT cG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wt PmluZGV4LAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5pc3VuaXF1ZSwKIAkJCQkJCQkJCQkJCQkg YnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJCQkJCSBidHNwb29sLT51bmlx dWVfZGVhZF9pZ25vcmVkLAogCQkJCQkJCQkJCQkJCSBzb3J0bWVtLCBjb29yZGluYXRlLAogCQkJ CQkJCQkJCQkJCSBUVVBMRVNPUlRfTk9ORSk7CiAKQEAgLTE5NTgsMTQgKzIwNjUsMTIgQEAgX2J0 X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9v bDIsCiAJCWNvb3JkaW5hdGUyLT5uUGFydGljaXBhbnRzID0gLTE7CiAJCWNvb3JkaW5hdGUyLT5z aGFyZWRzb3J0ID0gc2hhcmVkc29ydDI7CiAJCWJ0c3Bvb2wyLT5zb3J0c3RhdGUgPQotCQkJdHVw bGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBm YWxzZSwgZmFsc2UsCisJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoYnRzcG9vbC0+aGVh cCwgYnRzcG9vbC0+aW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCiAJCQkJCQkJCQkJTWluKHNv cnRtZW0sIHdvcmtfbWVtKSwgY29vcmRpbmF0ZTIsCiAJCQkJCQkJCQkJZmFsc2UpOwogCX0KIAog CS8qIEZpbGwgaW4gYnVpbGRzdGF0ZSBmb3IgX2J0X2J1aWxkX2NhbGxiYWNrKCkgKi8KLQlidWls ZHN0YXRlLmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwotCWJ1aWxkc3RhdGUubnVsbHNf bm90X2Rpc3RpbmN0ID0gYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdDsKIAlidWlsZHN0YXRl LmhhdmVkZWFkID0gZmFsc2U7CiAJYnVpbGRzdGF0ZS5oZWFwID0gYnRzcG9vbC0+aGVhcDsKIAli dWlsZHN0YXRlLnNwb29sID0gYnRzcG9vbDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c3BsaXRsb2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3Bs aXRsb2MuYwppbmRleCBkZTllY2EzYzhiMi4uYjE3NGZiOGQzZWUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKQEAgLTY4OCw3ICs2ODgsNyBAQCBfYnRfYWZ0ZXJuZXdp dGVtb2ZmKEZpbmRTcGxpdERhdGEgKnN0YXRlLCBPZmZzZXROdW1iZXIgbWF4b2ZmLAogCXsKIAkJ aXRlbWlkID0gUGFnZUdldEl0ZW1JZChzdGF0ZS0+b3JpZ3BhZ2UsIG1heG9mZik7CiAJCXR1cCA9 IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0ZW1pZCk7Ci0JCWtl ZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+bmV3 aXRlbSk7CisJCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVw LCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAKIAkJaWYgKGtlZXBuYXR0cyA+IDEgJiYga2VlcG5h dHRzIDw9IG5rZXlhdHRzKQogCQl7CkBAIC03MTksNyArNzE5LDcgQEAgX2J0X2FmdGVybmV3aXRl bW9mZihGaW5kU3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVtYmVyIG1heG9mZiwKIAkJIV9idF9h ZGphY2VudGh0aWQoJnR1cC0+dF90aWQsICZzdGF0ZS0+bmV3aXRlbS0+dF90aWQpKQogCQlyZXR1 cm4gZmFsc2U7CiAJLyogQ2hlY2sgc2FtZSBjb25kaXRpb25zIGFzIHJpZ2h0bW9zdCBpdGVtIGNh c2UsIHRvbyAqLwotCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwg dHVwLCBzdGF0ZS0+bmV3aXRlbSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHNfZmFzdChz dGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAogCWlmIChrZWVwbmF0dHMg PiAxICYmIGtlZXBuYXR0cyA8PSBua2V5YXR0cykKIAl7CkBAIC05NjgsNyArOTY4LDcgQEAgX2J0 X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0cGFnZSwKIAkg KiBhdm9pZCBhcHBlbmRpbmcgYSBoZWFwIFRJRCBpbiBuZXcgaGlnaCBrZXksIHdlJ3JlIGRvbmUu ICBGaW5pc2ggc3BsaXQKIAkgKiB3aXRoIGRlZmF1bHQgc3RyYXRlZ3kgYW5kIGluaXRpYWwgc3Bs aXQgaW50ZXJ2YWwuCiAJICovCi0JcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0 KHN0YXRlLT5yZWwsIGxlZnRtb3N0LCByaWdodG1vc3QpOworCXBlcmZlY3RwZW5hbHR5ID0gX2J0 X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0LCBOVUxMKTsK IAlpZiAocGVyZmVjdHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJCXJldHVybiBwZXJmZWN0cGVu YWx0eTsKIApAQCAtOTg5LDcgKzk4OSw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpz dGF0ZSwgU3BsaXRQb2ludCAqbGVmdHBhZ2UsCiAJICogSWYgcGFnZSBpcyBlbnRpcmVseSBmdWxs IG9mIGR1cGxpY2F0ZXMsIGEgc2luZ2xlIHZhbHVlIHN0cmF0ZWd5IHNwbGl0CiAJICogd2lsbCBi ZSBwZXJmb3JtZWQuCiAJICovCi0JcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0 KHN0YXRlLT5yZWwsIGxlZnRtb3N0LCByaWdodG1vc3QpOworCXBlcmZlY3RwZW5hbHR5ID0gX2J0 X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0LCBOVUxMKTsK IAlpZiAocGVyZmVjdHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJewogCQkqc3RyYXRlZ3kgPSBT UExJVF9NQU5ZX0RVUExJQ0FURVM7CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBfYnRfc3RyYXRlZ3ko RmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCQlpdGVtaWQgPSBQ YWdlR2V0SXRlbUlkKHN0YXRlLT5vcmlncGFnZSwgUF9ISUtFWSk7CiAJCWhpa2V5ID0gKEluZGV4 VHVwbGUpIFBhZ2VHZXRJdGVtKHN0YXRlLT5vcmlncGFnZSwgaXRlbWlkKTsKIAkJcGVyZmVjdHBl bmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGhpa2V5LAotCQkJCQkJCQkJ CQkgc3RhdGUtPm5ld2l0ZW0pOworCQkJCQkJCQkJCQkgc3RhdGUtPm5ld2l0ZW0sIE5VTEwpOwog CQlpZiAocGVyZmVjdHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJCQkqc3RyYXRlZ3kgPSBTUExJ VF9TSU5HTEVfVkFMVUU7CiAJCWVsc2UKQEAgLTExNTAsNyArMTE1MCw3IEBAIF9idF9zcGxpdF9w ZW5hbHR5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpzcGxpdCkKIAlsYXN0bGVm dCA9IF9idF9zcGxpdF9sYXN0bGVmdChzdGF0ZSwgc3BsaXQpOwogCWZpcnN0cmlnaHQgPSBfYnRf c3BsaXRfZmlyc3RyaWdodChzdGF0ZSwgc3BsaXQpOwogCi0JcmV0dXJuIF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQpOworCXJldHVybiBfYnRfa2Vl cF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0LCBOVUxMKTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwppbmRleCA5YjA5MTg1ODk5Ny4u MTNmYjY3NmUzODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRp bHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKQEAgLTMwLDkg KzMwLDYgQEAKIAogCiBzdGF0aWMgaW50CV9idF9jb21wYXJlX2ludChjb25zdCB2b2lkICp2YSwg Y29uc3Qgdm9pZCAqdmIpOwotc3RhdGljIGludAlfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWws IEluZGV4VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkgICBJbmRleFR1cGxlIGZpcnN0cmlnaHQsIEJU U2Nhbkluc2VydCBpdHVwX2tleSk7Ci0KIAogLyoKICAqIF9idF9ta3NjYW5rZXkKQEAgLTcwOCw3 ICs3MDUsNyBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0 LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAJQXNzZXJ0KCFCVHJlZVR1cGxlSXNQaXZvdChsYXN0 bGVmdCkgJiYgIUJUcmVlVHVwbGVJc1Bpdm90KGZpcnN0cmlnaHQpKTsKIAogCS8qIERldGVybWlu ZSBob3cgbWFueSBhdHRyaWJ1dGVzIG11c3QgYmUga2VwdCBpbiB0cnVuY2F0ZWQgdHVwbGUgKi8K LQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0LCBp dHVwX2tleSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHMocmVsLCBsYXN0bGVmdCwgZmly c3RyaWdodCwgaXR1cF9rZXksIE5VTEwpOwogCiAjaWZkZWYgREVCVUdfTk9fVFJVTkNBVEUKIAkv KiBGb3JjZSB0cnVuY2F0aW9uIHRvIGJlIGluZWZmZWN0aXZlIGZvciB0ZXN0aW5nIHB1cnBvc2Vz ICovCkBAIC04MjYsMTcgKzgyMywyNCBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRl eFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAvKgogICogX2J0X2tlZXBf bmF0dHMgLSBob3cgbWFueSBrZXkgYXR0cmlidXRlcyB0byBrZWVwIHdoZW4gdHJ1bmNhdGluZy4K ICAqCisgKiBUaGlzIGlzIGV4cG9ydGVkIHRvIGJlIHVzZWQgYXMgY29tcGFyaXNvbiBmdW5jdGlv biBkdXJpbmcgY29uY3VycmVudAorICogdW5pcXVlIGluZGV4IGJ1aWxkIGluIGNhc2UgX2J0X2tl ZXBfbmF0dHNfZmFzdCBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZQorICogY29sbGF0aW9uIGlzIG5v dCAiYWxsZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZlLgorICoKICAqIENhbGxlciBwcm92 aWRlcyB0d28gdHVwbGVzIHRoYXQgZW5jbG9zZSBhIHNwbGl0IHBvaW50LiAgQ2FsbGVyJ3MgaW5z ZXJ0aW9uCiAgKiBzY2Fua2V5IGlzIHVzZWQgdG8gY29tcGFyZSB0aGUgdHVwbGVzOyB0aGUgc2Nh bmtleSdzIGFyZ3VtZW50IHZhbHVlcyBhcmUKICAqIG5vdCBjb25zaWRlcmVkIGhlcmUuCiAgKgor ICogaGFzbnVsbHMgdmFsdWUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBhbnkgbnVsbCBjb2x1bW4g aW4gYW55IHR1cGxlLgorICoKICAqIFRoaXMgY2FuIHJldHVybiBhIG51bWJlciBvZiBhdHRyaWJ1 dGVzIHRoYXQgaXMgb25lIGdyZWF0ZXIgdGhhbiB0aGUKICAqIG51bWJlciBvZiBrZXkgYXR0cmli dXRlcyBmb3IgdGhlIGluZGV4IHJlbGF0aW9uLiAgVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUKICAq IGNhbGxlciBtdXN0IHVzZSBhIGhlYXAgVElEIGFzIGEgdW5pcXVlLWlmaWVyIGluIG5ldyBwaXZv dCB0dXBsZS4KICAqLwotc3RhdGljIGludAoraW50CiBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiBy ZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKLQkJCSAgIEJU U2Nhbkluc2VydCBpdHVwX2tleSkKKwkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKKwkJCSAg IGJvb2wgKmhhc251bGxzKQogewogCWludAkJCW5rZXlhdHRzID0gSW5kZXhSZWxhdGlvbkdldE51 bWJlck9mS2V5QXR0cmlidXRlcyhyZWwpOwogCVR1cGxlRGVzYwlpdHVwZGVzYyA9IFJlbGF0aW9u R2V0RGVzY3IocmVsKTsKQEAgLTg2Miw2ICs4NjYsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlv biByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKIAogCQlk YXR1bTEgPSBpbmRleF9nZXRhdHRyKGxhc3RsZWZ0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxs MSk7CiAJCWRhdHVtMiA9IGluZGV4X2dldGF0dHIoZmlyc3RyaWdodCwgYXR0bnVtLCBpdHVwZGVz YywgJmlzTnVsbDIpOworCQlpZiAoaGFzbnVsbHMpCisJCQkqaGFzbnVsbHMgfD0gaXNOdWxsMSB8 IGlzTnVsbDI7CiAKIAkJaWYgKGlzTnVsbDEgIT0gaXNOdWxsMikKIAkJCWJyZWFrOwpAQCAtODgx LDcgKzg4Nyw3IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0 bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCSAqIGV4cGVjdGVkIGluIGFuIGFsbGVxdWFs aW1hZ2UgaW5kZXguCiAJICovCiAJQXNzZXJ0KCFpdHVwX2tleS0+YWxsZXF1YWxpbWFnZSB8fAot CQkgICBrZWVwbmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIGxhc3RsZWZ0LCBmaXJz dHJpZ2h0KSk7CisJCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbGFz dGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpKTsKIAogCXJldHVybiBrZWVwbmF0dHM7CiB9CkBAIC04 OTIsNyArODk4LDggQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxh c3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAgKiBUaGlzIGlzIGV4cG9ydGVkIHNvIHRo YXQgYSBjYW5kaWRhdGUgc3BsaXQgcG9pbnQgY2FuIGhhdmUgaXRzIGVmZmVjdCBvbgogICogc3Vm Zml4IHRydW5jYXRpb24gaW5leHBlbnNpdmVseSBldmFsdWF0ZWQgYWhlYWQgb2YgdGltZSB3aGVu IGZpbmRpbmcgYQogICogc3BsaXQgbG9jYXRpb24uICBBIG5haXZlIGJpdHdpc2UgYXBwcm9hY2gg dG8gZGF0dW0gY29tcGFyaXNvbnMgaXMgdXNlZCB0bwotICogc2F2ZSBjeWNsZXMuCisgKiBzYXZl IGN5Y2xlcy4gQWxzbywgaXQgbWF5IGJlIHVzZWQgYXMgY29tcGFyaXNvbiBmdW5jdGlvbiBkdXJp bmcgY29uY3VycmVudAorICogYnVpbGQgb2YgdW5pcXVlIGluZGV4LgogICoKICAqIFRoZSBhcHBy b2FjaCB0YWtlbiBoZXJlIHVzdWFsbHkgcHJvdmlkZXMgdGhlIHNhbWUgYW5zd2VyIGFzIF9idF9r ZWVwX25hdHRzCiAgKiB3aWxsIChmb3IgdGhlIHNhbWUgcGFpciBvZiB0dXBsZXMgZnJvbSBhIGhl YXBrZXlzcGFjZSBpbmRleCksIHNpbmNlIHRoZQpAQCAtOTAxLDYgKzkwOCw4IEBAIF9idF9rZWVw X25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJz dHJpZ2h0LAogICogImVxdWFsIGltYWdlIiBjb2x1bW5zLCByb3V0aW5lIGlzIGd1YXJhbnRlZWQg dG8gZ2l2ZSB0aGUgc2FtZSByZXN1bHQgYXMKICAqIF9idF9rZWVwX25hdHRzIHdvdWxkLgogICoK KyAqIGhhc251bGxzIHZhbHVlIHNldCB0byB0cnVlIGluIGNhc2Ugb2YgYW55IG51bGwgY29sdW1u IGluIGFueSB0dXBsZS4KKyAqCiAgKiBDYWxsZXJzIGNhbiByZWx5IG9uIHRoZSBmYWN0IHRoYXQg YXR0cmlidXRlcyBjb25zaWRlcmVkIGVxdWFsIGhlcmUgYXJlCiAgKiBkZWZpbml0ZWx5IGFsc28g ZXF1YWwgYWNjb3JkaW5nIHRvIF9idF9rZWVwX25hdHRzLCBldmVuIHdoZW4gdGhlIGluZGV4IHVz ZXMKICAqIGFuIG9wY2xhc3Mgb3IgY29sbGF0aW9uIHRoYXQgaXMgbm90ICJhbGxlcXVhbGltYWdl Ii9kZWR1cGxpY2F0aW9uLXNhZmUuCkBAIC05MDksNyArOTE4LDggQEAgX2J0X2tlZXBfbmF0dHMo UmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQs CiAgKiBtb3JlIGJhbGFuY2VkIHNwbGl0IHBvaW50LgogICovCiBpbnQKLV9idF9rZWVwX25hdHRz X2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0 cmlnaHQpCitfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0 bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQlib29sICpoYXNudWxscykKIHsKIAlU dXBsZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAJaW50CQkJa2V5c3og PSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CkBAIC05MjYsNiAr OTM2LDggQEAgX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFz dGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKIAogCQlkYXR1bTEgPSBpbmRleF9nZXRhdHRy KGxhc3RsZWZ0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMSk7CiAJCWRhdHVtMiA9IGluZGV4 X2dldGF0dHIoZmlyc3RyaWdodCwgYXR0bnVtLCBpdHVwZGVzYywgJmlzTnVsbDIpOworCQlpZiAo aGFzbnVsbHMpCisJCQkqaGFzbnVsbHMgfD0gaXNOdWxsMSB8IGlzTnVsbDI7CiAJCWF0dCA9IFR1 cGxlRGVzY0NvbXBhY3RBdHRyKGl0dXBkZXNjLCBhdHRudW0gLSAxKTsKIAogCQlpZiAoaXNOdWxs MSAhPSBpc051bGwyKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDdjN2E0MWZkMDllLi4yMjhlNmJjZTY1 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMTUzNCw3ICsxNTM0LDcgQEAgaW5kZXhfY29uY3VycmVu dGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlpbmRleF9idWlsZChoZWFwUmVsLCBpbmRl eFJlbGF0aW9uLCBpbmRleEluZm8sIGZhbHNlLCB0cnVlKTsKIAogCUludmFsaWRhdGVDYXRhbG9n U25hcHNob3QoKTsKLQlBc3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVk IGJ5IGluZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2 ZWwpOwpAQCAtMzMyNSw5ICszMzI1LDkgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAgKiBpZiB3ZSB1c2VkIEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSkuICBU aGlzIGxlYXZlcyB1cyB3aXRoIGFuIGluZGV4IHRoYXQKICAqIGRvZXMgbm90IGNvbnRhaW4gYW55 IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQgdGhlIGluZGV4LgogICoK LSAqIEZ1cnRoZXJtb3JlLCBpbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXggd2Ugc2V0IFNPX1JF U0VUX1NOQVBTSE9UIGZvciB0aGUKLSAqIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcgc25hcHNob3Qg dG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJlYXNvbgotICogZm9yIHRo YXQgaXMgdG8gcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6b24gZm9yd2FyZC4KKyAqIEZ1cnRoZXJt b3JlLCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZSBzY2FuLCB3aGljaCBjYXVzZXMg bmV3CisgKiBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUg cmVhc29uICBmb3IgdGhhdCBpcyB0bworICogcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6b24gZm9y d2FyZC4KICAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNyZWFkeSIgKGJ1dCBz dGlsbCBub3QgImluZGlzdmFsaWQiKSBhbmQKICAqIGNvbW1pdCB0aGUgc2Vjb25kIHRyYW5zYWN0 aW9uIGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCmluZGV4IDQxNWQwMjM2YzQ2Li45NzAyOWJlMzc4ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMKQEAgLTE3MDIsOCArMTcwMiw4IEBAIERlZmluZUluZGV4KFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBs ZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVudCBpbmRl eCBrZXlzLgogCSAqCi0JICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhh dCBhcmUgdmlzaWJsZSB1c2luZyBzaW5nbGUgb3IKLQkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNu YXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBi dWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11 bHRpcGxlCisJICogcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55 IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRo IHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQogCSAqIGJ5IHRyYW5zYWN0aW9ucyB0 aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUgbm93IGNvbW1pdHRlZCBvcgogCSAq IHJvbGxlZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxlIHR1cGxlIGlzIGVpdGhlciB0aGUgZW5k IG9mIGl0cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJp YW50cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCmluZGV4 IDI1MDlhYzNlM2E0Li4xZWNmNzQ1YzY2MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv c29ydC90dXBsZXNvcnR2YXJpYW50cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVw bGVzb3J0dmFyaWFudHMuYwpAQCAtMjUsNiArMjUsOCBAQAogI2luY2x1ZGUgImFjY2Vzcy9oYXNo LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9u YnRyZWUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvcmVsc2Nhbi5oIgorI2luY2x1ZGUgImFjY2Vzcy90 YWJsZWFtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAgLTM1LDYg KzM3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9y ZWwuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKIAogCiAvKiBzb3J0LXR5cGUgY29kZXMgZm9yIHNvcnRfX3N0YXJ0IHByb2JlcyAqLwpA QCAtMTM2LDYgKzEzOSw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQllbmZvcmNlVW5pcXVl OwkvKiBjb21wbGFpbiBpZiB3ZSBmaW5kIGR1cGxpY2F0ZSB0dXBsZXMgKi8KIAlib29sCQl1bmlx dWVOdWxsc05vdERpc3RpbmN0OyAvKiB1bmlxdWUgY29uc3RyYWludCBudWxsIHRyZWF0bWVudCAq LworCWJvb2wJCXVuaXF1ZURlYWRJZ25vcmVkOyAvKiBpZ25vcmUgZGVhZCB0dXBsZXMgaW4gdW5p cXVlIGNoZWNrICovCiB9IFR1cGxlc29ydEluZGV4QlRyZWVBcmc7CiAKIC8qCkBAIC0zNjEsNiAr MzY1LDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJ CQkJCQkJUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJYm9vbCBlbmZvcmNlVW5pcXVlLAogCQkJ CQkJCWJvb2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlib29sIHVuaXF1ZURlYWRJ Z25vcmVkLAogCQkJCQkJCWludCB3b3JrTWVtLAogCQkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3Jk aW5hdGUsCiAJCQkJCQkJaW50IHNvcnRvcHQpCkBAIC00MDMsNiArNDA4LDcgQEAgdHVwbGVzb3J0 X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5pbmRleC5pbmRleFJl bCA9IGluZGV4UmVsOwogCWFyZy0+ZW5mb3JjZVVuaXF1ZSA9IGVuZm9yY2VVbmlxdWU7CiAJYXJn LT51bmlxdWVOdWxsc05vdERpc3RpbmN0ID0gdW5pcXVlTnVsbHNOb3REaXN0aW5jdDsKKwlhcmct PnVuaXF1ZURlYWRJZ25vcmVkID0gdW5pcXVlRGVhZElnbm9yZWQ7CiAKIAlpbmRleFNjYW5LZXkg PSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKIApAQCAtMTY3MCw2ICsxNjc2LDcgQEAg Y29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUgKmEsIGNvbnN0 IFNvcnRUdXBsZSAqYiwKIAkJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJCWJvb2wJ CWlzbnVsbFtJTkRFWF9NQVhfS0VZU107CiAJCWNoYXIJICAgKmtleV9kZXNjOworCQlib29sCQl1 bmlxdWVDaGVja0ZhaWwgPSB0cnVlOwogCiAJCS8qCiAJCSAqIFNvbWUgcmF0aGVyIGJyYWluLWRl YWQgaW1wbGVtZW50YXRpb25zIG9mIHFzb3J0IChzdWNoIGFzIHRoZSBvbmUgaW4KQEAgLTE2Nzks MTggKzE2ODYsNTggQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0 VHVwbGUgKmEsIGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJICovCiAJCUFzc2VydCh0dXBsZTEgIT0g dHVwbGUyKTsKIAotCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMsIHZhbHVlcywg aXNudWxsKTsKLQotCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKGFyZy0+ aW5kZXguaW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKLQotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZygiY291bGQg bm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSwKLQkJCQkga2V5X2Rlc2MgPyBlcnJkZXRhaWwo IktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6Ci0JCQkJIGVycmRldGFpbCgiRHVw bGljYXRlIGtleXMgZXhpc3QuIiksCi0JCQkJIGVycnRhYmxlY29uc3RyYWludChhcmctPmluZGV4 LmhlYXBSZWwsCi0JCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4Lmlu ZGV4UmVsKSkpKTsKKwkJLyogVGhpcyBpcyBmYWlsLWZhc3QgY2hlY2ssIHNlZSBfYnRfbG9hZCBm b3IgZGV0YWlscy4gKi8KKwkJaWYgKGFyZy0+dW5pcXVlRGVhZElnbm9yZWQpCisJCXsKKwkJCWJv b2wJYW55X3R1cGxlX2RlYWQsCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZSwKKwkJCQkJaWdub3Jl ZDsKKworCQkJVHVwbGVUYWJsZVNsb3QJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3Qo UmVsYXRpb25HZXREZXNjcihhcmctPmluZGV4LmhlYXBSZWwpLAorCQkJCQkJCQkJCQkJCQkJICZU VFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZCA9IHR1cGxlMS0+ dF90aWQ7CisKKwkJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0 Y2hfYmVnaW4oYXJnLT5pbmRleC5oZWFwUmVsKTsKKwkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxl X2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxs X2FnYWluLCAmaWdub3JlZCk7CisKKwkJCWlmICghYW55X3R1cGxlX2RlYWQpCisJCQl7CisJCQkJ Y2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCXRpZCA9IHR1cGxlMi0+dF90aWQ7CisJCQkJYW55X3R1 cGxlX2RlYWQgPSAhdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0dXBsZTItPnRfdGlk LCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLAorCQkJCQkJCQkJCQkJCQkgICZpZ25v cmVkKTsKKwkJCX0KKworCQkJaWYgKGFueV90dXBsZV9kZWFkKQorCQkJeworCQkJCWVsb2coREVC VUc1LCAic2tpcHBpbmcgZHVwbGljYXRlIHZhbHVlcyBiZWNhdXNlIHNvbWUgb2YgdGhlbSBhcmUg ZGVhZDogKCV1LCV1KSB2cyAoJXUsJXUpIiwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1i ZXIoJnR1cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1 cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVwbGUyLT50 X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUyLT50X3RpZCkp OworCisJCQkJdW5pcXVlQ2hlY2tGYWlsID0gZmFsc2U7CisJCQl9CisJCQlFeGVjRHJvcFNpbmds ZVR1cGxlVGFibGVTbG90KHNsb3QpOworCQkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsK KwkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJCX0KKwkJ aWYgKHVuaXF1ZUNoZWNrRmFpbCkKKwkJeworCQkJaW5kZXhfZGVmb3JtX3R1cGxlKHR1cGxlMSwg dHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVl RGVzY3JpcHRpb24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwpOworCisJCQkv KiBrZWVwIHRoaXMgZXJyb3IgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gX2J0X2xv YWQgKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJ T0xBVElPTiksCisJCQkJCQkJZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBc IiVzXCIiLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4Lmlu ZGV4UmVsKSksCisJCQkJCQkJa2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNh dGVkLiIsIGtleV9kZXNjKSA6CisJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlz dC4iKSwKKwkJCQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFwUmVsLAorCQkJ CQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSkp KTsKKwkJfQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVl LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggZGE3NTAzYzU3YjYuLmI3MjQ0 NWE3NjEwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMzA5LDggKzEzMDksMTAgQEAgZXh0ZXJuIGJv b2wgYnRwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4gY2hhciAqYnRi dWlsZHBoYXNlbmFtZShpbnQ2NCBwaGFzZW51bSk7CiBleHRlcm4gSW5kZXhUdXBsZSBfYnRfdHJ1 bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAogCQkJCQkJCSAgIEluZGV4 VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsKK2V4dGVybiBpbnQJX2J0 X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxl IGZpcnN0cmlnaHQsCisJCQkJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIGJvb2wgKmhhc251 bGxzKTsKIGV4dGVybiBpbnQJX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIEluZGV4 VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCk7CisJCQkJCQkJ CUluZGV4VHVwbGUgZmlyc3RyaWdodCwgYm9vbCAqaGFzbnVsbHMpOwogZXh0ZXJuIGJvb2wgX2J0 X2NoZWNrX25hdHRzKFJlbGF0aW9uIHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsIFBhZ2UgcGFnZSwK IAkJCQkJCQlPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVybiB2b2lkIF9idF9jaGVja190aGly ZF9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4 IDg0YjA2ZmZhNDJmLi45MjI5MGU3OTU5MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0xNzg0LDcg KzE3ODQsNyBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNj YW4sCiAgKiBUaGlzIG9ubHkgcmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdo dCBuZWVkIHRvIGJlIGdlbmVyYWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAq IEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBjb25jdXJyZW50IGluZGV4IGJ1aWxkLAorICogSW4gY2Fz ZSBvZiBjb25jdXJyZW50IGluZGV4IGJ1aWxkLAogICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBw bGllZCBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgdG8gY2hhbmdpbmcgc25hcHNob3RzCiAgKiBv biB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVw bGVzb3J0LmgKaW5kZXggZGE2OGY0NWFjZjIuLjQ0OGRjODNhYTU4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNv cnQuaApAQCAtMzk2LDYgKzM5Niw3IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0 X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJCQkJCQkgICBSZWxh dGlvbiBpbmRleFJlbCwKIAkJCQkJCQkJCQkJCSAgIGJvb2wgZW5mb3JjZVVuaXF1ZSwKIAkJCQkJ CQkJCQkJCSAgIGJvb2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQkJCQkJCSAgIGJv b2wJdW5pcXVlRGVhZElnbm9yZWQsCiAJCQkJCQkJCQkJCQkgICBpbnQgd29ya01lbSwgU29ydENv b3JkaW5hdGUgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsKIGV4dGVy biBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2hhc2goUmVsYXRpb24gaGVh cFJlbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBl Y3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCBiNGFkOTBlYjMz OS4uYmI4NGQ2MWY0MGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAg LTE3LDYgKzE3LDEyIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7 CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGlu dCk7CiBJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKQEAgLTM1LDcgKzQxLDExIEBAIEVORDsgJCQ7 CiAtLS0tLS0tLS0tLS0tLS0tCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChw YXJhbGxlbF93b3JrZXJzPTApOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwpAQCAtNzIsMzAgKzgyLDQ3IEBAIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiAtLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25h cC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworLS0gRGV0YWNoIHRvIGtlZXAgdGVzdCBz dGFibGUsIHNpbmNlIHBhcmFsbGVsIHdvcmtlciBtYXkgY29tcGxldGUgc2NhbiBiZWZvcmUgbGVh ZGVyCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQog UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5f aW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKIE5P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNj YW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRl X3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6 ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQkVHSU4gVFJB TlNBQ1RJT047CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSk7Ci0tIAoyLjQzLjAKCg== --000000000000041d7b064d6a6d1e--