Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oE2Eq-00012i-Iq for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Jul 2022 05:27:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oE2Ep-0007uf-Ep for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Jul 2022 05:27:11 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oE2Eo-0007uT-NO for pgsql-hackers@lists.postgresql.org; Wed, 20 Jul 2022 05:27:11 +0000 Received: from mail-oa1-x32.google.com ([2001:4860:4864:20::32]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oE2Ej-0002ON-T6 for pgsql-hackers@lists.postgresql.org; Wed, 20 Jul 2022 05:27:09 +0000 Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-10c8e8d973eso34827233fac.5 for ; Tue, 19 Jul 2022 22:27:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=DgN5K87zFlKlP6fnl5U/AVKiky3B1hFc+gJYwOYKiC4=; b=KGL7TeRl80dpCfNdwu4YxWRpNalM0ChSc4VYxE3uhON5f/PDumxlsxXgl6+8+7SCZR h32pbzK8sQGRc2s5fLT1eER5T/BKEPLMnaf22bWyFKgUBeWr1V4xhO7vi0dkMFga4+z6 M5oRW4X67VR+orHn8J8TTGZ9HvWKT81+EyOF2z2517qfLNS2UJaemAjJ8J7zChR6c8ub CXzhHsOpIf44ENzLsCm2R6093IR6ND6HxHVmSBlMNRMcojkM8VKqqP4C8H3ZwWhGuJWY mOqf0JWbDAjBZpUMlVdfvu2Fo2RfRvrhE6qfgzXH+n88FLK9YkBhQifpVMEVRrVaq79K Oh6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=DgN5K87zFlKlP6fnl5U/AVKiky3B1hFc+gJYwOYKiC4=; b=bXDHAqdGspU+xnlug9fLI+sLZvDcM8VtCg3d/g7qYy9RBDY2CINSsSkMSatOX5W98U g8raigekrVoxLXE2rIrn/8IWUyEnl3FA1kwj0jaKTKnCxUSECwDzd6LW4ks+iPst+yhp PZfffk3+zSQTF2yuYgQWSXkk+VaQ/piF9pPP71C2oeQr+Y6oLgbM7P9t5eBG5CbWqwBl TStG8pUjAMWOA2dfM+rT7SDNCfl7hz5AtqjTzfBT+EoF6DGaH/kTP38a/FfMl1Rks3LX 4vC97WfXFqGi2GOakepEMBrloGUDEXs1Ft+9J4qYp+sCUPQH2EyKibrHAg1NXo/Vo15W XS4w== X-Gm-Message-State: AJIora/ii+/TKxlQvoUBxl+qAGlOnvwUSCy2VLosA8P6BTUV9Gl1wmWv 3RDDreSucSTAgbvoozfrBCPKwXOyySi4UJvBiEc= X-Google-Smtp-Source: AGRyM1tG4HybXe7GntJ9AmJ9Azgza37wvSY/TeUc97jCCeGYXbB2jlEAip1j2RxCCtpbtSI1Sf0Ya/AcuRTfUM8SOos= X-Received: by 2002:a05:6870:210b:b0:10b:ed11:4e2d with SMTP id f11-20020a056870210b00b0010bed114e2dmr1587477oae.265.1658294824503; Tue, 19 Jul 2022 22:27:04 -0700 (PDT) MIME-Version: 1.0 References: <4493999.1py09z8qHF@aivenronan> <3163474.aeNJFYEL58@aivenronan> In-Reply-To: <3163474.aeNJFYEL58@aivenronan> From: David Rowley Date: Wed, 20 Jul 2022 17:26:39 +1200 Message-ID: Subject: Re: Add proper planner support for ORDER BY / DISTINCT aggregates To: Ronan Dunklau Cc: PostgreSQL Developers , Ranier Vilela Content-Type: multipart/mixed; boundary="000000000000f2f9f405e435d9eb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f2f9f405e435d9eb Content-Type: text/plain; charset="UTF-8" On Thu, 4 Nov 2021 at 20:59, Ronan Dunklau wrote: > I took some time to toy with this again. > > At first I thought that charging a discount in foreign grouping paths for > Aggref targets (since they are computed remotely) would be a good idea, > similar to what is done for the grouping keys. I've been working on this patch again. There was a bit of work to do to rebase it atop db0d67db2. The problem there was that since this patch appends pathkeys to suit ORDER BY / DISTINCT aggregates to the query's group_pathkeys, db0d67db2 goes and tries to rearrange those, but fails to find the SortGroupClause corresponding to the PathKey in group_pathkeys. I wish the code I came up with to make that work was a bit nicer, but what's there at least seems to work. There are a few more making copies of Lists than I'd like. I've also went and added LLVM support to make JIT work with the new DISTINCT expression evaluation step types. Also, James mentioned in [1] about the Merge Join plan change that this patch was causing in an existing test. I looked into that and found the cause. The plan change is not really the fault of this patch, so I've proposed a fix for to make that work more efficiently in [2]. The basics there are that select_outer_pathkeys_for_merge() pre-dates Incremental Sorts and didn't consider prefixes of the query_pathkeys after matching all the join quals. The patch on that thread relaxes that rule and makes this patch produce an Incremental Sort plan for the query in question. Another annoying part of this patch is that I've added an "aggpresorted" field to Aggref, which the planner sets. That's a parse node type and it would be nicer not to have the planner mess around with those. We maybe could wrap up the Aggrefs in some planner struct and pass those to the executor instead. That would require a bit more churn than what I've got in the attached. I've attached the v7 patch. David [1] https://www.postgresql.org/message-id/CAAaqYe-yxXkXVPJkRw1nDA=CJBw28jvhACRyDcU10dAOcdSj=Q@mail.gmail.com [2] https://www.postgresql.org/message-id/CAApHDvrtZu0PHVfDPFM4Yx3jNR2Wuwosv+T2zqa7LrhhBr2rRg@mail.gmail.com --000000000000f2f9f405e435d9eb Content-Type: text/plain; charset="US-ASCII"; name="v7-0001-Add-planner-support-for-ORDER-BY-aggregates.patch" Content-Disposition: attachment; filename="v7-0001-Add-planner-support-for-ORDER-BY-aggregates.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l5t5ukt80 RnJvbSBmNTg2YTQyNmQxYmIzYjMyYWEzYmU4ZGVjOTRiMTc5NDQzNTM2MDBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAzIE1heSAyMDIxIDE2OjMxOjI5ICsxMjAwClN1YmplY3Q6IFtQQVRDSCB2N10gQWRk IHBsYW5uZXIgc3VwcG9ydCBmb3IgT1JERVIgQlkgYWdncmVnYXRlcwoKT1JERVIgQlkgYWdncmVh Z3RlcyBoYXZlLCBzaW5jZSBpbXBsZW1lbnRlZCBpbiBQb3N0Z3JlcywgYmVlbiBleGVjdXRlZCBi eQphbHdheXMgcGVyZm9ybWluZyBhIHNvcnQgaW4gbm9kZUFnZy5jIHRvIHNvcnQgdGhlIHR1cGxl cyBpbiB0aGUgY3VycmVudApncm91cCBpbnRvIHRoZSBjb3JyZWN0IG9yZGVyIGJlZm9yZSBjYWxs aW5nIHRoZSB0cmFuc2l0aW9uIGZ1bmN0aW9uIG9uIHRoZQpzb3J0ZWQgcmVzdWx0cy4gIFRoaXMg d2FzIG5vdCBncmVhdCBhcyBvZnRlbiB0aGVyZSBtaWdodCBiZSBhbiBpbmRleCB0aGF0CmNvdWxk IGhhdmUgcHJvdmlkZWQgcHJlLXNvcnRlZCBpbnB1dCBhbmQgYWxsb3dlZCB0aGUgdHJhbnNpdGlv biBmdW5jdGlvbnMKdG8gYmUgY2FsbGVkIGFzIHRoZSByb3dzIGNvbWUgaW4sIHJhdGhlciB0aGFu IGhhdmluZyB0byBzdG9yZSB0aGVtIGluIGEKdHVwbGVzdG9yZSBpbiBvcmRlciB0byBzb3J0IHRo ZW0gbGF0ZXIuCgpIZXJlIHdlIGdldCB0aGUgcGxhbm5lciBvbi1ib2FyZCB3aXRoIHBpY2tpbmcg YSBwbGFuIHRoYXQgcHJvdmlkZXMKcHJlLXNvcnRlZCBpbnB1dHMgdG8gT1JERVIgQlkgYWdncmVn YXRlcy4KClNpbmNlIHRoZXJlIGNhbiBiZSBtYW55IE9SREVSIEJZIGFnZ3JlZ2F0ZXMgaW4gYW55 IGdpdmVuIHF1ZXJ5IGxldmVsLCBpdCdzCnZlcnkgcG9zc2libGUgdGhhdCB3ZSBjYW4ndCBmaW5k IGFuIG9yZGVyIHRoYXQgc3VpdHMgYWxsIGFnZ3JlZ2F0ZXMuICBUaGUKc29ydCBvcmRlciB0aGUg dGhlIHBsYW5uZXIgY2hvb3NlcyBpcyBzaW1wbHkgdGhlIG9uZSB0aGF0IHN1aXRzIHRoZSBtb3N0 CmFnZ3JlZ2F0ZSBmdW5jdGlvbnMuICBXZSB0YWtlIHRoZSBtb3N0IHN0cmljdGx5IHNvcnRlZCB2 YXJpYXRpb24gb2YgZWFjaApvcmRlciBhbmQgc2VlIGhvdyBtYW55IGFnZ3JlZ2F0ZSBmdW5jdGlv bnMgY2FuIHVzZSB0aGF0LCB0aGVuIHdlIHRyeSBhZ2Fpbgp3aXRoIHRoZSBvcmRlciBvZiB0aGUg cmVtYWluaW5nIGFnZ3JlZ2F0ZXMgdG8gc2VlIGlmIGFub3RoZXIgb3JkZXIgd291bGQKc3VpdCBt b3JlIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMuICBGb3IgZXhhbXBsZToKClNFTEVDVCBhZ2coYSBPUkRF UiBCWSBhKSxhZ2cyKGEgT1JERVIgQlkgYSxiKSAuLi4KCndvdWxkIHJlcXVlc3QgdGhlIHNvcnQg b3JkZXIgdG8gYmUge2EsIGJ9IGJlY2F1c2Uge2F9IGlzIGEgc3Vic2V0IG9mIHRoZQpzb3J0IG9y ZGVyIG9mIHthLGJ9LCBidXQ7CgpTRUxFQ1QgYWdnKGEgT1JERVIgQlkgYSksYWdnMihhIE9SREVS IEJZIGMpIC4uLgoKd291bGQganVzdCBwaWNrIGEgcGxhbiBvcmRlcmVkIGJ5IHthfS4KClNFTEVD VCBhZ2coYSBPUkRFUiBCWSBhKSxhZ2cyKGEgT1JERVIgQlkgYiksYWdnMyhhIE9SREVSIEJZIGIp IC4uLgoKd291bGQgY2hvb3NlIHRvIG9yZGVyIGJ5IHtifSBzaW5jZSB0d28gYWdncmVnYXRlcyBz dWl0IHRoYXQgdnMganVzdCBvbmUKdGhhdCByZXF1aXJlcyBvcmRlciBieSB7YX0uCgpEaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQXBIRHZwSHpmbzkyJTNEUjRXMCUyQnhWdWEzQlVZ Q0tNY2tXQW1vLTJ0X0tpWE4td1lIJTNEdyU0MG1haWwuZ21haWwuY29tCi0tLQogLi4uL3Bvc3Rn cmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgIDQ2ICstLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAgICAgIHwgIDUyICsrKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgICAgICAgICB8IDEwMiArKysrKysKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYyAgICAgICAgICAgICAgICB8ICAzNCArLQogc3JjL2Jh Y2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICAgICAgICAgIHwgIDQ4ICsrKwogc3JjL2Jh Y2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMgICAgICAgICB8ICA0NCArKy0KIHNyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5hZ2cuYyAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgMjk0ICsrKysrKysrKysrKysr KystLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5jICAgICAgICAgIHwgICA3 ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICAgICAgfCAgMTcg Kwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFnZy5oICAgICAgICAgICAgICAgIHwgICA5ICsK IHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAxNiArLQog c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgICAgICAgICAgIHwgICA3ICsKIHNy Yy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91dCAgICAgIHwgIDgwICsrKystCiAu Li4vcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dCAgfCAxMTggKysrLS0t LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uLm91dCAgICAgICAgIHwgIDEyICst CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R1cGxlc29ydC5vdXQgICAgICAgfCAgNDAgKy0t CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbCAgICAgICAgICAgfCAgNDMgKysr CiAyMCBmaWxlcyBjaGFuZ2VkLCA4MzMgaW5zZXJ0aW9ucygrKSwgMTQ0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4 IGFkZTc5NzE1OWQuLmE0MmUxNmU4ZDIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhw ZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtMzI5NSwxNSArMzI5NSwxOCBAQCBjcmVhdGUgb3Bl cmF0b3IgY2xhc3MgbXlfb3BfY2xhc3MgZm9yIHR5cGUgaW50IHVzaW5nIGJ0cmVlIGZhbWlseSBt eV9vcF9mYW1pbHkgYQogLS0gZXh0ZW5zaW9uIHlldC4KIGV4cGxhaW4gKHZlcmJvc2UsIGNvc3Rz IG9mZikKIHNlbGVjdCBhcnJheV9hZ2coYzEgb3JkZXIgYnkgYzEgdXNpbmcgb3BlcmF0b3IocHVi bGljLjxeKSkgZnJvbSBmdDIgd2hlcmUgYzIgPSA2IGFuZCBjMSA8IDEwMCBncm91cCBieSBjMjsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgR3JvdXBBZ2dy ZWdhdGUKICAgIE91dHB1dDogYXJyYXlfYWdnKGMxIE9SREVSIEJZIGMxIFVTSU5HIDxeIE5VTExT IExBU1QpLCBjMgogICAgR3JvdXAgS2V5OiBmdDIuYzIKLSAgIC0+ICBGb3JlaWduIFNjYW4gb24g cHVibGljLmZ0MgotICAgICAgICAgT3V0cHV0OiBjMSwgYzIKLSAgICAgICAgIFJlbW90ZSBTUUw6 IFNFTEVDVCAiQyAxIiwgYzIgRlJPTSAiUyAxIi4iVCAxIiBXSEVSRSAoKCJDIDEiIDwgMTAwKSkg QU5EICgoYzIgPSA2KSkKLSg2IHJvd3MpCisgICAtPiAgU29ydAorICAgICAgICAgT3V0cHV0OiBj MiwgYzEKKyAgICAgICAgIFNvcnQgS2V5OiBmdDIuYzEgVVNJTkcgPF4KKyAgICAgICAgIC0+ICBG b3JlaWduIFNjYW4gb24gcHVibGljLmZ0MgorICAgICAgICAgICAgICAgT3V0cHV0OiBjMiwgYzEK KyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCAiQyAxIiwgYzIgRlJPTSAiUyAxIi4i VCAxIiBXSEVSRSAoKCJDIDEiIDwgMTAwKSkgQU5EICgoYzIgPSA2KSkKKyg5IHJvd3MpCiAKIC0t IFRoaXMgc2hvdWxkIG5vdCBiZSBwdXNoZWQgZWl0aGVyLgogZXhwbGFpbiAodmVyYm9zZSwgY29z dHMgb2ZmKQpAQCAtMzMzMSwxMyArMzMzNCwxNSBAQCBhbHRlciBzZXJ2ZXIgbG9vcGJhY2sgb3B0 aW9ucyAoc2V0IGV4dGVuc2lvbnMgJ3Bvc3RncmVzX2ZkdycpOwogLS0gTm93IHRoaXMgd2lsbCBi ZSBwdXNoZWQgYXMgc29ydCBvcGVyYXRvciBpcyBwYXJ0IG9mIHRoZSBleHRlbnNpb24uCiBleHBs YWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCiBzZWxlY3QgYXJyYXlfYWdnKGMxIG9yZGVyIGJ5IGMx IHVzaW5nIG9wZXJhdG9yKHB1YmxpYy48XikpIGZyb20gZnQyIHdoZXJlIGMyID0gNiBhbmQgYzEg PCAxMDAgZ3JvdXAgYnkgYzI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0gRm9yZWlnbiBTY2FuCi0gICBPdXRwdXQ6IChhcnJheV9hZ2coYzEgT1JERVIgQlkgYzEgVVNJ TkcgPF4gTlVMTFMgTEFTVCkpLCBjMgotICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1Ymxp Yy5mdDIpCi0gICBSZW1vdGUgU1FMOiBTRUxFQ1QgYXJyYXlfYWdnKCJDIDEiIE9SREVSIEJZICJD IDEiIFVTSU5HIE9QRVJBVE9SKHB1YmxpYy48XikgTlVMTFMgTEFTVCksIGMyIEZST00gIlMgMSIu IlQgMSIgV0hFUkUgKCgiQyAxIiA8IDEwMCkpIEFORCAoKGMyID0gNikpIEdST1VQIEJZIDIKLSg0 IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IGFycmF5X2FnZyhjMSBP UkRFUiBCWSBjMSBVU0lORyA8XiBOVUxMUyBMQVNUKSwgYzIKKyAgIEdyb3VwIEtleTogZnQyLmMy CisgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDIKKyAgICAgICAgIE91dHB1dDogYzEs IGMyCisgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgIkMgMSIsIGMyIEZST00gIlMgMSIuIlQg MSIgV0hFUkUgKCgiQyAxIiA8IDEwMCkpIEFORCAoKGMyID0gNikpIE9SREVSIEJZICJDIDEiIFVT SU5HIE9QRVJBVE9SKHB1YmxpYy48XikgTlVMTFMgTEFTVAorKDYgcm93cykKIAogc2VsZWN0IGFy cmF5X2FnZyhjMSBvcmRlciBieSBjMSB1c2luZyBvcGVyYXRvcihwdWJsaWMuPF4pKSBmcm9tIGZ0 MiB3aGVyZSBjMiA9IDYgYW5kIGMxIDwgMTAwIGdyb3VwIGJ5IGMyOwogICAgICAgICAgICBhcnJh eV9hZ2cgICAgICAgICAgICAKQEAgLTMzNjYsMTUgKzMzNzEsMTggQEAgYWx0ZXIgc2VydmVyIGxv b3BiYWNrIG9wdGlvbnMgKHNldCBleHRlbnNpb25zICdwb3N0Z3Jlc19mZHcnKTsKIC0tIFRoaXMg d2lsbCBub3QgYmUgcHVzaGVkIGFzIHNvcnQgb3BlcmF0b3IgaXMgbm93IHJlbW92ZWQgZnJvbSB0 aGUgZXh0ZW5zaW9uLgogZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQogc2VsZWN0IGFycmF5 X2FnZyhjMSBvcmRlciBieSBjMSB1c2luZyBvcGVyYXRvcihwdWJsaWMuPF4pKSBmcm9tIGZ0MiB3 aGVyZSBjMiA9IDYgYW5kIGMxIDwgMTAwIGdyb3VwIGJ5IGMyOwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBHcm91cEFnZ3JlZ2F0ZQogICAgT3V0cHV0OiBh cnJheV9hZ2coYzEgT1JERVIgQlkgYzEgVVNJTkcgPF4gTlVMTFMgTEFTVCksIGMyCiAgICBHcm91 cCBLZXk6IGZ0Mi5jMgotICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnQyCi0gICAgICAg ICBPdXRwdXQ6IGMxLCBjMgotICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUICJDIDEiLCBjMiBG Uk9NICJTIDEiLiJUIDEiIFdIRVJFICgoIkMgMSIgPCAxMDApKSBBTkQgKChjMiA9IDYpKQotKDYg cm93cykKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IGMyLCBjMQorICAgICAgICAgU29y dCBLZXk6IGZ0Mi5jMSBVU0lORyA8XgorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJs aWMuZnQyCisgICAgICAgICAgICAgICBPdXRwdXQ6IGMyLCBjMQorICAgICAgICAgICAgICAgUmVt b3RlIFNRTDogU0VMRUNUICJDIDEiLCBjMiBGUk9NICJTIDEiLiJUIDEiIFdIRVJFICgoIkMgMSIg PCAxMDApKSBBTkQgKChjMiA9IDYpKQorKDkgcm93cykKIAogLS0gQ2xlYW51cAogZHJvcCBvcGVy YXRvciBjbGFzcyBteV9vcF9jbGFzcyB1c2luZyBidHJlZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CmluZGV4IGM4ZDcxNDVmZTMuLmQwYTU3YzdhYWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpA QCAtMzY2NiwxMyArMzY2NiwxNyBAQCBFeGVjQnVpbGRBZ2dUcmFucyhBZ2dTdGF0ZSAqYWdnc3Rh dGUsIEFnZ1N0YXRlUGVyUGhhc2UgcGhhc2UsCiAJCQkJc2NyYXRjaC5yZXNudWxsID0gJnN0YXRl LT5yZXNudWxsOwogCQkJfQogCQkJYXJnbm8rKzsKKworCQkJQXNzZXJ0KHBlcnRyYW5zLT5udW1J bnB1dHMgPT0gYXJnbm8pOwogCQl9Ci0JCWVsc2UgaWYgKHBlcnRyYW5zLT5udW1Tb3J0Q29scyA9 PSAwKQorCQllbHNlIGlmICghcGVydHJhbnMtPmFnZ3NvcnRyZXF1aXJlZCkKIAkJewogCQkJTGlz dENlbGwgICAqYXJnOwogCiAJCQkvKgotCQkJICogTm9ybWFsIHRyYW5zaXRpb24gZnVuY3Rpb24g d2l0aG91dCBPUkRFUiBCWSAvIERJU1RJTkNULgorCQkJICogTm9ybWFsIHRyYW5zaXRpb24gZnVu Y3Rpb24gd2l0aG91dCBPUkRFUiBCWSAvIERJU1RJTkNUIG9yIHdpdGgKKwkJCSAqIE9SREVSIEJZ IC8gRElTVElOQ1QgYnV0IHRoZSBwbGFubmVyIGhhcyBnaXZlbiB1cyBwcmUtc29ydGVkCisJCQkg KiBpbnB1dC4KIAkJCSAqLwogCQkJc3RyaWN0YXJncyA9IHRyYW5zX2ZjaW5mby0+YXJncyArIDE7 CiAKQEAgLTM2ODAsNiArMzY4NCwxMyBAQCBFeGVjQnVpbGRBZ2dUcmFucyhBZ2dTdGF0ZSAqYWdn c3RhdGUsIEFnZ1N0YXRlUGVyUGhhc2UgcGhhc2UsCiAJCQl7CiAJCQkJVGFyZ2V0RW50cnkgKnNv dXJjZV90bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGFyZyk7CiAKKwkJCQkvKgorCQkJCSAq IERvbid0IGluaXRpYWxpemUgYXJncyBmb3IgYW55IE9SREVSIEJZIGNsYXVzZSB0aGF0IG1pZ2h0 CisJCQkJICogZXhpc3QgaW4gYSBwcmVzb3J0ZWQgYWdncmVnYXRlLgorCQkJCSAqLworCQkJCWlm IChhcmdubyA9PSBwZXJ0cmFucy0+bnVtVHJhbnNJbnB1dHMpCisJCQkJCWJyZWFrOworCiAJCQkJ LyoKIAkJCQkgKiBTdGFydCBmcm9tIDEsIHNpbmNlIHRoZSAwdGggYXJnIHdpbGwgYmUgdGhlIHRy YW5zaXRpb24KIAkJCQkgKiB2YWx1ZQpAQCAtMzY4OSwxMSArMzcwMCwxMyBAQCBFeGVjQnVpbGRB Z2dUcmFucyhBZ2dTdGF0ZSAqYWdnc3RhdGUsIEFnZ1N0YXRlUGVyUGhhc2UgcGhhc2UsCiAJCQkJ CQkJCSZ0cmFuc19mY2luZm8tPmFyZ3NbYXJnbm8gKyAxXS5pc251bGwpOwogCQkJCWFyZ25vKys7 CiAJCQl9CisJCQlBc3NlcnQocGVydHJhbnMtPm51bVRyYW5zSW5wdXRzID09IGFyZ25vKTsKIAkJ fQogCQllbHNlIGlmIChwZXJ0cmFucy0+bnVtSW5wdXRzID09IDEpCiAJCXsKIAkJCS8qCi0JCQkg KiBESVNUSU5DVCBhbmQvb3IgT1JERVIgQlkgY2FzZSwgd2l0aCBhIHNpbmdsZSBjb2x1bW4gc29y dGVkIG9uLgorCQkJICogTm9uLXByZXNvcnRlZCBESVNUSU5DVCBhbmQvb3IgT1JERVIgQlkgY2Fz ZSwgd2l0aCBhIHNpbmdsZQorCQkJICogY29sdW1uIHNvcnRlZCBvbi4KIAkJCSAqLwogCQkJVGFy Z2V0RW50cnkgKnNvdXJjZV90bGUgPQogCQkJKFRhcmdldEVudHJ5ICopIGxpbml0aWFsKHBlcnRy YW5zLT5hZ2dyZWYtPmFyZ3MpOwpAQCAtMzcwNSwxMSArMzcxOCwxNCBAQCBFeGVjQnVpbGRBZ2dU cmFucyhBZ2dTdGF0ZSAqYWdnc3RhdGUsIEFnZ1N0YXRlUGVyUGhhc2UgcGhhc2UsCiAJCQkJCQkJ JnN0YXRlLT5yZXNudWxsKTsKIAkJCXN0cmljdG51bGxzID0gJnN0YXRlLT5yZXNudWxsOwogCQkJ YXJnbm8rKzsKKworCQkJQXNzZXJ0KHBlcnRyYW5zLT5udW1JbnB1dHMgPT0gYXJnbm8pOwogCQl9 CiAJCWVsc2UKIAkJewogCQkJLyoKLQkJCSAqIERJU1RJTkNUIGFuZC9vciBPUkRFUiBCWSBjYXNl LCB3aXRoIG11bHRpcGxlIGNvbHVtbnMgc29ydGVkIG9uLgorCQkJICogTm9uLXByZXNvcnRlZCBE SVNUSU5DVCBhbmQvb3IgT1JERVIgQlkgY2FzZSwgd2l0aCBtdWx0aXBsZQorCQkJICogY29sdW1u cyBzb3J0ZWQgb24uCiAJCQkgKi8KIAkJCURhdHVtCSAgICp2YWx1ZXMgPSBwZXJ0cmFucy0+c29y dHNsb3QtPnR0c192YWx1ZXM7CiAJCQlib29sCSAgICpudWxscyA9IHBlcnRyYW5zLT5zb3J0c2xv dC0+dHRzX2lzbnVsbDsKQEAgLTM3MjUsOCArMzc0MSw4IEBAIEV4ZWNCdWlsZEFnZ1RyYW5zKEFn Z1N0YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJQaGFzZSBwaGFzZSwKIAkJCQkJCQkJJnZhbHVl c1thcmdub10sICZudWxsc1thcmdub10pOwogCQkJCWFyZ25vKys7CiAJCQl9CisJCQlBc3NlcnQo cGVydHJhbnMtPm51bUlucHV0cyA9PSBhcmdubyk7CiAJCX0KLQkJQXNzZXJ0KHBlcnRyYW5zLT5u dW1JbnB1dHMgPT0gYXJnbm8pOwogCiAJCS8qCiAJCSAqIEZvciBhIHN0cmljdCB0cmFuc2ZuLCBu b3RoaW5nIGhhcHBlbnMgd2hlbiB0aGVyZSdzIGEgTlVMTCBpbnB1dDsgd2UKQEAgLTM3NDgsNiAr Mzc2NCwyMSBAQCBFeGVjQnVpbGRBZ2dUcmFucyhBZ2dTdGF0ZSAqYWdnc3RhdGUsIEFnZ1N0YXRl UGVyUGhhc2UgcGhhc2UsCiAJCQkJCQkJCQkJIHN0YXRlLT5zdGVwc19sZW4gLSAxKTsKIAkJfQog CisJCS8qIEhhbmRsZSBESVNUSU5DVCBhZ2dyZWdhdGVzIHdoaWNoIGhhdmUgcHJlLXNvcnRlZCBp bnB1dCAqLworCQlpZiAocGVydHJhbnMtPm51bURpc3RpbmN0Q29scyA+IDAgJiYgIXBlcnRyYW5z LT5hZ2dzb3J0cmVxdWlyZWQpCisJCXsKKwkJCWlmIChwZXJ0cmFucy0+bnVtRGlzdGluY3RDb2xz ID4gMSkKKwkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfQUdHX1BSRVNPUlRFRF9ESVNUSU5DVF9N VUxUSTsKKwkJCWVsc2UKKwkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfQUdHX1BSRVNPUlRFRF9E SVNUSU5DVF9TSU5HTEU7CisKKwkJCXNjcmF0Y2guZC5hZ2dfcHJlc29ydGVkX2Rpc3RpbmN0Y2hl Y2sucGVydHJhbnMgPSBwZXJ0cmFuczsKKwkJCXNjcmF0Y2guZC5hZ2dfcHJlc29ydGVkX2Rpc3Rp bmN0Y2hlY2suanVtcGRpc3RpbmN0ID0gLTE7CS8qIGFkanVzdCBsYXRlciAqLworCQkJRXhwckV2 YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOworCQkJYWRqdXN0X2JhaWxvdXQgPSBsYXBwZW5k X2ludChhZGp1c3RfYmFpbG91dCwKKwkJCQkJCQkJCQkgc3RhdGUtPnN0ZXBzX2xlbiAtIDEpOwor CQl9CisKIAkJLyoKIAkJICogQ2FsbCB0cmFuc2l0aW9uIGZ1bmN0aW9uIChvbmNlIGZvciBlYWNo IGNvbmN1cnJlbnRseSBldmFsdWF0ZWQKIAkJICogZ3JvdXBpbmcgc2V0KS4gRG8gc28gZm9yIGJv dGggc29ydCBhbmQgaGFzaCBiYXNlZCBjb21wdXRhdGlvbnMsIGFzCkBAIC0zODA4LDYgKzM4Mzks MTIgQEAgRXhlY0J1aWxkQWdnVHJhbnMoQWdnU3RhdGUgKmFnZ3N0YXRlLCBBZ2dTdGF0ZVBlclBo YXNlIHBoYXNlLAogCQkJCUFzc2VydChhcy0+ZC5hZ2dfZGVzZXJpYWxpemUuanVtcG51bGwgPT0g LTEpOwogCQkJCWFzLT5kLmFnZ19kZXNlcmlhbGl6ZS5qdW1wbnVsbCA9IHN0YXRlLT5zdGVwc19s ZW47CiAJCQl9CisJCQllbHNlIGlmIChhcy0+b3Bjb2RlID09IEVFT1BfQUdHX1BSRVNPUlRFRF9E SVNUSU5DVF9TSU5HTEUgfHwKKwkJCQkJIGFzLT5vcGNvZGUgPT0gRUVPUF9BR0dfUFJFU09SVEVE X0RJU1RJTkNUX01VTFRJKQorCQkJeworCQkJCUFzc2VydChhcy0+ZC5hZ2dfcHJlc29ydGVkX2Rp c3RpbmN0Y2hlY2suanVtcGRpc3RpbmN0ID09IC0xKTsKKwkJCQlhcy0+ZC5hZ2dfcHJlc29ydGVk X2Rpc3RpbmN0Y2hlY2suanVtcGRpc3RpbmN0ID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwkJCX0KIAkJ CWVsc2UKIAkJCQlBc3NlcnQoZmFsc2UpOwogCQl9CkBAIC0zODU3LDcgKzM4OTQsOCBAQCBFeGVj QnVpbGRBZ2dUcmFuc0NhbGwoRXhwclN0YXRlICpzdGF0ZSwgQWdnU3RhdGUgKmFnZ3N0YXRlLAog CS8qCiAJICogRGV0ZXJtaW5lIGFwcHJvcHJpYXRlIHRyYW5zaXRpb24gaW1wbGVtZW50YXRpb24u CiAJICoKLQkgKiBGb3Igbm9uLW9yZGVyZWQgYWdncmVnYXRlczoKKwkgKiBGb3Igbm9uLW9yZGVy ZWQgYWdncmVnYXRlcyBhbmQgT1JERVIgQlkgLyBESVNUSU5DVCBhZ2dyZWdhdGVzIHdpdGgKKwkg KiBwcmVzb3J0ZWQgaW5wdXQ6CiAJICoKIAkgKiBJZiB0aGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhl IHRyYW5zaXRpb24gc3RhdGUgZG9lc24ndCBleGlzdCBpbiB0aGUKIAkgKiBwZ19hZ2dyZWdhdGUg dGFibGUgdGhlbiB3ZSB3aWxsIGxldCB0aGUgZmlyc3Qgbm9uLU5VTEwgdmFsdWUgcmV0dXJuZWQK QEAgLTM4ODcsNyArMzkyNSw3IEBAIEV4ZWNCdWlsZEFnZ1RyYW5zQ2FsbChFeHByU3RhdGUgKnN0 YXRlLCBBZ2dTdGF0ZSAqYWdnc3RhdGUsCiAJICogcHJvY2Vzc19vcmRlcmVkX2FnZ3JlZ2F0ZV97 c2luZ2xlLCBtdWx0aX0gYW5kCiAJICogYWR2YW5jZV90cmFuc2l0aW9uX2Z1bmN0aW9uLgogCSAq LwotCWlmIChwZXJ0cmFucy0+bnVtU29ydENvbHMgPT0gMCkKKwlpZiAoIXBlcnRyYW5zLT5hZ2dz b3J0cmVxdWlyZWQpCiAJewogCQlpZiAocGVydHJhbnMtPnRyYW5zdHlwZUJ5VmFsKQogCQl7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCA3MjM3NzBmZGEwLi5lOGQ3Nzky OWE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTUwMiw2ICs1MDIs OCBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRl eHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfQUdHX1BMQUlOX1RSQU5TX0lOSVRfU1RS SUNUX0JZUkVGLAogCQkmJkNBU0VfRUVPUF9BR0dfUExBSU5fVFJBTlNfU1RSSUNUX0JZUkVGLAog CQkmJkNBU0VfRUVPUF9BR0dfUExBSU5fVFJBTlNfQllSRUYsCisJCSYmQ0FTRV9FRU9QX0FHR19Q UkVTT1JURURfRElTVElOQ1RfU0lOR0xFLAorCQkmJkNBU0VfRUVPUF9BR0dfUFJFU09SVEVEX0RJ U1RJTkNUX01VTFRJLAogCQkmJkNBU0VfRUVPUF9BR0dfT1JERVJFRF9UUkFOU19EQVRVTSwKIAkJ JiZDQVNFX0VFT1BfQUdHX09SREVSRURfVFJBTlNfVFVQTEUsCiAJCSYmQ0FTRV9FRU9QX0xBU1QK QEAgLTE3ODYsNiArMTc4OCwyOCBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBF eHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJCUVFT19ORVhUKCk7CiAJCX0K IAorCQlFRU9fQ0FTRShFRU9QX0FHR19QUkVTT1JURURfRElTVElOQ1RfU0lOR0xFKQorCQl7CisJ CQlBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zID0gb3AtPmQuYWdnX3ByZXNvcnRlZF9kaXN0aW5j dGNoZWNrLnBlcnRyYW5zOworCQkJQWdnU3RhdGUgICAqYWdnc3RhdGUgPSBjYXN0Tm9kZShBZ2dT dGF0ZSwgc3RhdGUtPnBhcmVudCk7CisKKwkJCWlmIChFeGVjRXZhbFByZU9yZGVyZWREaXN0aW5j dFNpbmdsZShhZ2dzdGF0ZSwgcGVydHJhbnMpKQorCQkJCUVFT19ORVhUKCk7CisJCQllbHNlCisJ CQkJRUVPX0pVTVAob3AtPmQuYWdnX3ByZXNvcnRlZF9kaXN0aW5jdGNoZWNrLmp1bXBkaXN0aW5j dCk7CisJCX0KKworCQlFRU9fQ0FTRShFRU9QX0FHR19QUkVTT1JURURfRElTVElOQ1RfTVVMVEkp CisJCXsKKwkJCUFnZ1N0YXRlICAgKmFnZ3N0YXRlID0gY2FzdE5vZGUoQWdnU3RhdGUsIHN0YXRl LT5wYXJlbnQpOworCQkJQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucyA9IG9wLT5kLmFnZ19wcmVz b3J0ZWRfZGlzdGluY3RjaGVjay5wZXJ0cmFuczsKKworCQkJaWYgKEV4ZWNFdmFsUHJlT3JkZXJl ZERpc3RpbmN0TXVsdGkoYWdnc3RhdGUsIHBlcnRyYW5zKSkKKwkJCQlFRU9fTkVYVCgpOworCQkJ ZWxzZQorCQkJCUVFT19KVU1QKG9wLT5kLmFnZ19wcmVzb3J0ZWRfZGlzdGluY3RjaGVjay5qdW1w ZGlzdGluY3QpOworCQl9CisKIAkJLyogcHJvY2VzcyBzaW5nbGUtY29sdW1uIG9yZGVyZWQgYWdn cmVnYXRlIGRhdHVtICovCiAJCUVFT19DQVNFKEVFT1BfQUdHX09SREVSRURfVFJBTlNfREFUVU0p CiAJCXsKQEAgLTQ0MDIsNiArNDQyNiw4NCBAQCBFeGVjQWdnVHJhbnNSZXBhcmVudChBZ2dTdGF0 ZSAqYWdnc3RhdGUsIEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMsCiAJcmV0dXJuIG5ld1ZhbHVl OwogfQogCisvKgorICogRXhlY0V2YWxQcmVPcmRlcmVkRGlzdGluY3RTaW5nbGUKKyAqCQlSZXR1 cm5zIHRydWUgd2hlbiB0aGUgYWdncmVnYXRlIHRyYW5zaXRpb24gdmFsdWUgRGF0dW0gaXMgZGlz dGluY3QKKyAqCQlmcm9tIHRoZSBwcmV2aW91cyBpbnB1dCBEYXR1bSBhbmQgcmV0dXJucyBmYWxz ZSB3aGVuIHRoZSBpbnB1dCBEYXR1bQorICoJCW1hdGNoZXMgdGhlIHByZXZpb3VzIGlucHV0IERh dHVtLgorICovCitib29sCitFeGVjRXZhbFByZU9yZGVyZWREaXN0aW5jdFNpbmdsZShBZ2dTdGF0 ZSAqYWdnc3RhdGUsIEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMpCit7CisJRGF0dW0JCXZhbHVl ID0gcGVydHJhbnMtPnRyYW5zZm5fZmNpbmZvLT5hcmdzWzFdLnZhbHVlOworCWJvb2wJCWlzbnVs bCA9IHBlcnRyYW5zLT50cmFuc2ZuX2ZjaW5mby0+YXJnc1sxXS5pc251bGw7CisKKwlpZiAoIXBl cnRyYW5zLT5oYXNsYXN0IHx8CisJCXBlcnRyYW5zLT5sYXN0aXNudWxsICE9IGlzbnVsbCB8fAor CQkhRGF0dW1HZXRCb29sKEZ1bmN0aW9uQ2FsbDJDb2xsKCZwZXJ0cmFucy0+ZXF1YWxmbk9uZSwK KwkJCQkJICBwZXJ0cmFucy0+YWdnQ29sbGF0aW9uLAorCQkJCQkgIHBlcnRyYW5zLT5sYXN0ZGF0 dW0sIHZhbHVlKSkpCisJeworCQlpZiAocGVydHJhbnMtPmhhc2xhc3QgJiYgIXBlcnRyYW5zLT5p bnB1dHR5cGVCeVZhbCkKKwkJCXBmcmVlKERhdHVtR2V0UG9pbnRlcihwZXJ0cmFucy0+bGFzdGRh dHVtKSk7CisKKwkJcGVydHJhbnMtPmhhc2xhc3QgPSB0cnVlOworCQlpZiAoIWlzbnVsbCkKKwkJ eworCQkJTWVtb3J5Q29udGV4dCBvbGRDb250ZXh0OworCisJCQlvbGRDb250ZXh0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGFnZ3N0YXRlLT5jdXJhZ2djb250ZXh0LT5lY3h0X3Blcl90dXBsZV9t ZW1vcnkpOworCisJCQlwZXJ0cmFucy0+bGFzdGRhdHVtID0gZGF0dW1Db3B5KHZhbHVlLCBwZXJ0 cmFucy0+aW5wdXR0eXBlQnlWYWwsCisJCQkJCQkJCQkJCXBlcnRyYW5zLT5pbnB1dHR5cGVMZW4p OworCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ29udGV4dCk7CisJCX0KKwkJZWxzZQor CQkJcGVydHJhbnMtPmxhc3RkYXR1bSA9IChEYXR1bSkgMDsKKwkJcGVydHJhbnMtPmxhc3Rpc251 bGwgPSBpc251bGw7CisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKwor LyoKKyAqIEV4ZWNFdmFsUHJlT3JkZXJlZERpc3RpbmN0TXVsdGkKKyAqCQlSZXR1cm5zIHRydWUg d2hlbiB0aGUgYWdncmVnYXRlIGlucHV0IGlzIGRpc3RpbmN0IGZyb20gdGhlIHByZXZpb3VzCisg KgkJaW5wdXQgYW5kIHJldHVybnMgZmFsc2Ugd2hlbiB0aGUgaW5wdXQgbWF0Y2hlcyB0aGUgcHJl dmlvdXMgaW5wdXQuCisgKi8KK2Jvb2wKK0V4ZWNFdmFsUHJlT3JkZXJlZERpc3RpbmN0TXVsdGko QWdnU3RhdGUgKmFnZ3N0YXRlLCBBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zKQoreworCUV4cHJD b250ZXh0ICp0bXBjb250ZXh0ID0gYWdnc3RhdGUtPnRtcGNvbnRleHQ7CisKKwlmb3IgKGludCBp ID0gMDsgaSA8IHBlcnRyYW5zLT5udW1UcmFuc0lucHV0czsgaSsrKQorCXsKKwkJcGVydHJhbnMt PnNvcnRzbG90LT50dHNfdmFsdWVzW2ldID0gcGVydHJhbnMtPnRyYW5zZm5fZmNpbmZvLT5hcmdz W2kgKyAxXS52YWx1ZTsKKwkJcGVydHJhbnMtPnNvcnRzbG90LT50dHNfaXNudWxsW2ldID0gcGVy dHJhbnMtPnRyYW5zZm5fZmNpbmZvLT5hcmdzW2kgKyAxXS5pc251bGw7CisJfQorCisJRXhlY0Ns ZWFyVHVwbGUocGVydHJhbnMtPnNvcnRzbG90KTsKKwlwZXJ0cmFucy0+c29ydHNsb3QtPnR0c19u dmFsaWQgPSBwZXJ0cmFucy0+bnVtSW5wdXRzOworCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShwZXJ0 cmFucy0+c29ydHNsb3QpOworCisJdG1wY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlID0gcGVydHJh bnMtPnNvcnRzbG90OworCXRtcGNvbnRleHQtPmVjeHRfaW5uZXJ0dXBsZSA9IHBlcnRyYW5zLT51 bmlxc2xvdDsKKworCWlmICghcGVydHJhbnMtPmhhc2xhc3QgfHwKKwkJIUV4ZWNRdWFsKHBlcnRy YW5zLT5lcXVhbGZuTXVsdGksIHRtcGNvbnRleHQpKQorCXsKKwkJaWYgKHBlcnRyYW5zLT5oYXNs YXN0KQorCQkJRXhlY0NsZWFyVHVwbGUocGVydHJhbnMtPnVuaXFzbG90KTsKKworCQlwZXJ0cmFu cy0+aGFzbGFzdCA9IHRydWU7CisJCUV4ZWNDb3B5U2xvdChwZXJ0cmFucy0+dW5pcXNsb3QsIHBl cnRyYW5zLT5zb3J0c2xvdCk7CisJCXJldHVybiB0cnVlOworCX0KKwlyZXR1cm4gZmFsc2U7Cit9 CisKIC8qCiAgKiBJbnZva2Ugb3JkZXJlZCB0cmFuc2l0aW9uIGZ1bmN0aW9uLCB3aXRoIGEgZGF0 dW0gYXJndW1lbnQuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB Z2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwppbmRleCAyZmM2MDZjZjI5Li45 NmQyMDBlNDQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCkBAIC01ODMsNyArNTgzLDcgQEAgaW5p dGlhbGl6ZV9hZ2dyZWdhdGUoQWdnU3RhdGUgKmFnZ3N0YXRlLCBBZ2dTdGF0ZVBlclRyYW5zIHBl cnRyYW5zLAogCS8qCiAJICogU3RhcnQgYSBmcmVzaCBzb3J0IG9wZXJhdGlvbiBmb3IgZWFjaCBE SVNUSU5DVC9PUkRFUiBCWSBhZ2dyZWdhdGUuCiAJICovCi0JaWYgKHBlcnRyYW5zLT5udW1Tb3J0 Q29scyA+IDApCisJaWYgKHBlcnRyYW5zLT5hZ2dzb3J0cmVxdWlyZWQpCiAJewogCQkvKgogCQkg KiBJbiBjYXNlIG9mIHJlc2NhbiwgbWF5YmUgdGhlcmUgY291bGQgYmUgYW4gdW5jb21wbGV0ZWQg c29ydApAQCAtMTMwOSw3ICsxMzA5LDcgQEAgZmluYWxpemVfYWdncmVnYXRlcyhBZ2dTdGF0ZSAq YWdnc3RhdGUsCiAKIAkJcGVyZ3JvdXBzdGF0ZSA9ICZwZXJncm91cFt0cmFuc25vXTsKIAotCQlp ZiAocGVydHJhbnMtPm51bVNvcnRDb2xzID4gMCkKKwkJaWYgKHBlcnRyYW5zLT5hZ2dzb3J0cmVx dWlyZWQpCiAJCXsKIAkJCUFzc2VydChhZ2dzdGF0ZS0+YWdnc3RyYXRlZ3kgIT0gQUdHX0hBU0hF RCAmJgogCQkJCSAgIGFnZ3N0YXRlLT5hZ2dzdHJhdGVneSAhPSBBR0dfTUlYRUQpOwpAQCAtMTMy Myw2ICsxMzIzLDIxIEBAIGZpbmFsaXplX2FnZ3JlZ2F0ZXMoQWdnU3RhdGUgKmFnZ3N0YXRlLAog CQkJCQkJCQkJCQkJcGVydHJhbnMsCiAJCQkJCQkJCQkJCQlwZXJncm91cHN0YXRlKTsKIAkJfQor CQllbHNlIGlmIChwZXJ0cmFucy0+bnVtRGlzdGluY3RDb2xzID4gMCAmJiBwZXJ0cmFucy0+aGFz bGFzdCkKKwkJeworCQkJcGVydHJhbnMtPmhhc2xhc3QgPSBmYWxzZTsKKworCQkJaWYgKHBlcnRy YW5zLT5udW1EaXN0aW5jdENvbHMgPT0gMSkKKwkJCXsKKwkJCQlpZiAoIXBlcnRyYW5zLT5pbnB1 dHR5cGVCeVZhbCAmJiAhcGVydHJhbnMtPmxhc3Rpc251bGwpCisJCQkJCXBmcmVlKERhdHVtR2V0 UG9pbnRlcihwZXJ0cmFucy0+bGFzdGRhdHVtKSk7CisKKwkJCQlwZXJ0cmFucy0+bGFzdGlzbnVs bCA9IGZhbHNlOworCQkJCXBlcnRyYW5zLT5sYXN0ZGF0dW0gPSAoRGF0dW0pIDA7CisJCQl9CisJ CQllbHNlCisJCQkJRXhlY0NsZWFyVHVwbGUocGVydHJhbnMtPnVuaXFzbG90KTsKKwkJfQogCX0K IAogCS8qCkBAIC00MTI3LDYgKzQxNDIsMTIgQEAgYnVpbGRfcGVydHJhbnNfZm9yX2FnZ3JlZihB Z2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zLAogCSAqIHN0aWNrIHRoZW0gaW50byBhcnJheXMuICBX ZSBpZ25vcmUgT1JERVIgQlkgZm9yIGFuIG9yZGVyZWQtc2V0IGFnZywKIAkgKiBob3dldmVyOyB0 aGUgYWdnJ3MgdHJhbnNmbiBhbmQgZmluYWxmbiBhcmUgcmVzcG9uc2libGUgZm9yIHRoYXQuCiAJ ICoKKwkgKiBXaGVuIHRoZSBwbGFubmVyIGhhcyBzZXQgdGhlIGFnZ3ByZXNvcnRlZCBmbGFnLCB0 aGUgaW5wdXQgdG8gdGhlCisJICogYWdncmVnYXRlIGlzIGFscmVhZHkgY29ycmVjdGx5IHNvcnRl ZC4gIEZvciBPUkRFUiBCWSBhZ2dyZWdhdGVzIHdlIGNhbgorCSAqIHNpbXBseSB0cmVhdCB0aGVz ZSBhcyBub3JtYWwgYWdncmVnYXRlcy4gIEZvciBwcmVzb3J0ZWQgRElTVElOQ1QKKwkgKiBhZ2dy ZWdhdGVzIGFuIGV4dHJhIHN0ZXAgbXVzdCBiZSBhZGRlZCB0byByZW1vdmUgZHVwbGljYXRlIGNv bnNlY3V0aXZlCisJICogaW5wdXRzLgorCSAqCiAJICogTm90ZSB0aGF0IGJ5IGNvbnN0cnVjdGlv biwgaWYgdGhlcmUgaXMgYSBESVNUSU5DVCBjbGF1c2UgdGhlbiB0aGUgT1JERVIKIAkgKiBCWSBj bGF1c2UgaXMgYSBwcmVmaXggb2YgaXQgKHNlZSB0cmFuc2Zvcm1EaXN0aW5jdENsYXVzZSkuCiAJ ICovCkBAIC00MTM0LDE4ICs0MTU1LDI3IEBAIGJ1aWxkX3BlcnRyYW5zX2Zvcl9hZ2dyZWYoQWdn U3RhdGVQZXJUcmFucyBwZXJ0cmFucywKIAl7CiAJCXNvcnRsaXN0ID0gTklMOwogCQludW1Tb3J0 Q29scyA9IG51bURpc3RpbmN0Q29scyA9IDA7CisJCXBlcnRyYW5zLT5hZ2dzb3J0cmVxdWlyZWQg PSBmYWxzZTsKKwl9CisJZWxzZSBpZiAoYWdncmVmLT5hZ2dwcmVzb3J0ZWQgJiYgYWdncmVmLT5h Z2dkaXN0aW5jdCA9PSBOSUwpCisJeworCQlzb3J0bGlzdCA9IE5JTDsKKwkJbnVtU29ydENvbHMg PSBudW1EaXN0aW5jdENvbHMgPSAwOworCQlwZXJ0cmFucy0+YWdnc29ydHJlcXVpcmVkID0gZmFs c2U7CiAJfQogCWVsc2UgaWYgKGFnZ3JlZi0+YWdnZGlzdGluY3QpCiAJewogCQlzb3J0bGlzdCA9 IGFnZ3JlZi0+YWdnZGlzdGluY3Q7CiAJCW51bVNvcnRDb2xzID0gbnVtRGlzdGluY3RDb2xzID0g bGlzdF9sZW5ndGgoc29ydGxpc3QpOwogCQlBc3NlcnQobnVtU29ydENvbHMgPj0gbGlzdF9sZW5n dGgoYWdncmVmLT5hZ2dvcmRlcikpOworCQlwZXJ0cmFucy0+YWdnc29ydHJlcXVpcmVkID0gIWFn Z3JlZi0+YWdncHJlc29ydGVkOwogCX0KIAllbHNlCiAJewogCQlzb3J0bGlzdCA9IGFnZ3JlZi0+ YWdnb3JkZXI7CiAJCW51bVNvcnRDb2xzID0gbGlzdF9sZW5ndGgoc29ydGxpc3QpOwogCQludW1E aXN0aW5jdENvbHMgPSAwOworCQlwZXJ0cmFucy0+YWdnc29ydHJlcXVpcmVkID0gKG51bVNvcnRD b2xzID4gMCk7CiAJfQogCiAJcGVydHJhbnMtPm51bVNvcnRDb2xzID0gbnVtU29ydENvbHM7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyBiL3NyYy9iYWNr ZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IGI2YjY1MTJlZjEuLmM2ZWIyZTkyMDcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCisrKyBiL3Ny Yy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCkBAIC0yMzM1LDYgKzIzMzUsNTQgQEAg bGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAkJCQkJYnJlYWs7CiAJCQkJfQog CisJCQljYXNlIEVFT1BfQUdHX1BSRVNPUlRFRF9ESVNUSU5DVF9TSU5HTEU6CisJCQl7CisJCQkJ QWdnU3RhdGUgICAqYWdnc3RhdGUgPSBjYXN0Tm9kZShBZ2dTdGF0ZSwgc3RhdGUtPnBhcmVudCk7 CisJCQkJQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucyA9IG9wLT5kLmFnZ19wcmVzb3J0ZWRfZGlz dGluY3RjaGVjay5wZXJ0cmFuczsKKwkJCQlpbnQJCQlqdW1wZGlzdGluY3QgPSBvcC0+ZC5hZ2df cHJlc29ydGVkX2Rpc3RpbmN0Y2hlY2suanVtcGRpc3RpbmN0OworCisJCQkJTExWTVZhbHVlUmVm CXZfZm4gPSBsbHZtX3BnX2Z1bmMobW9kLCAiRXhlY0V2YWxQcmVPcmRlcmVkRGlzdGluY3RTaW5n bGUiKTsKKwkJCQlMTFZNVmFsdWVSZWYJdl9hcmdzWzJdOworCQkJCUxMVk1WYWx1ZVJlZgl2X3Jl dDsKKworCQkJCXZfYXJnc1swXSA9IGxfcHRyX2NvbnN0KGFnZ3N0YXRlLCBsX3B0cihTdHJ1Y3RB Z2dTdGF0ZSkpOworCQkJCXZfYXJnc1sxXSA9IGxfcHRyX2NvbnN0KHBlcnRyYW5zLCBsX3B0cihT dHJ1Y3RBZ2dTdGF0ZVBlclRyYW5zRGF0YSkpOworCisJCQkJdl9yZXQgPSBMTFZNQnVpbGRDYWxs KGIsIHZfZm4sIHZfYXJncywgMiwgIiIpOworCQkJCXZfcmV0ID0gTExWTUJ1aWxkWkV4dChiLCB2 X3JldCwgVHlwZVN0b3JhZ2VCb29sLCAiIik7CisKKwkJCQlMTFZNQnVpbGRDb25kQnIoYiwKKwkJ CQkJCQkJTExWTUJ1aWxkSUNtcChiLCBMTFZNSW50RVEsIHZfcmV0LAorCQkJCQkJCQkJCQkJbF9z Ym9vbF9jb25zdCgxKSwgIiIpLAorCQkJCQkJCQlvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJCQkJ CW9wYmxvY2tzW2p1bXBkaXN0aW5jdF0pOworCQkJCWJyZWFrOworCQkJfQorCisJCQljYXNlIEVF T1BfQUdHX1BSRVNPUlRFRF9ESVNUSU5DVF9NVUxUSToKKwkJCXsKKwkJCQlBZ2dTdGF0ZSAgICph Z2dzdGF0ZSA9IGNhc3ROb2RlKEFnZ1N0YXRlLCBzdGF0ZS0+cGFyZW50KTsKKwkJCQlBZ2dTdGF0 ZVBlclRyYW5zIHBlcnRyYW5zID0gb3AtPmQuYWdnX3ByZXNvcnRlZF9kaXN0aW5jdGNoZWNrLnBl cnRyYW5zOworCQkJCWludAkJCWp1bXBkaXN0aW5jdCA9IG9wLT5kLmFnZ19wcmVzb3J0ZWRfZGlz dGluY3RjaGVjay5qdW1wZGlzdGluY3Q7CisKKwkJCQlMTFZNVmFsdWVSZWYJdl9mbiA9IGxsdm1f cGdfZnVuYyhtb2QsICJFeGVjRXZhbFByZU9yZGVyZWREaXN0aW5jdE11bHRpIik7CisJCQkJTExW TVZhbHVlUmVmCXZfYXJnc1syXTsKKwkJCQlMTFZNVmFsdWVSZWYJdl9yZXQ7CisKKwkJCQl2X2Fy Z3NbMF0gPSBsX3B0cl9jb25zdChhZ2dzdGF0ZSwgbF9wdHIoU3RydWN0QWdnU3RhdGUpKTsKKwkJ CQl2X2FyZ3NbMV0gPSBsX3B0cl9jb25zdChwZXJ0cmFucywgbF9wdHIoU3RydWN0QWdnU3RhdGVQ ZXJUcmFuc0RhdGEpKTsKKworCQkJCXZfcmV0ID0gTExWTUJ1aWxkQ2FsbChiLCB2X2ZuLCB2X2Fy Z3MsIDIsICIiKTsKKwkJCQl2X3JldCA9IExMVk1CdWlsZFpFeHQoYiwgdl9yZXQsIFR5cGVTdG9y YWdlQm9vbCwgIiIpOworCisJCQkJTExWTUJ1aWxkQ29uZEJyKGIsCisJCQkJCQkJCUxMVk1CdWls ZElDbXAoYiwgTExWTUludEVRLCB2X3JldCwKKwkJCQkJCQkJCQkJCWxfc2Jvb2xfY29uc3QoMSks ICIiKSwKKwkJCQkJCQkJb3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQlvcGJsb2Nrc1tqdW1w ZGlzdGluY3RdKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQkJY2FzZSBFRU9QX0FHR19PUkRFUkVE X1RSQU5TX0RBVFVNOgogCQkJCWJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbEFnZ09y ZGVyZWRUcmFuc0RhdHVtIiwKIAkJCQkJCQkJdl9zdGF0ZSwgb3AsIHZfZWNvbnRleHQpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jIGIvc3JjL2JhY2tl bmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCmluZGV4IGIyYmRhODY4ODkuLjM3MzQ3MWFkMjcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYworKysgYi9z cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKQEAgLTEwMyw2ICsxMDMsOCBAQCB2 b2lkCSAgICpyZWZlcmVuY2VkX2Z1bmN0aW9uc1tdID0KIHsKIAlFeGVjQWdnSW5pdEdyb3VwLAog CUV4ZWNBZ2dUcmFuc1JlcGFyZW50LAorCUV4ZWNFdmFsUHJlT3JkZXJlZERpc3RpbmN0U2luZ2xl LAorCUV4ZWNFdmFsUHJlT3JkZXJlZERpc3RpbmN0TXVsdGksCiAJRXhlY0V2YWxBZ2dPcmRlcmVk VHJhbnNEYXR1bSwKIAlFeGVjRXZhbEFnZ09yZGVyZWRUcmFuc1R1cGxlLAogCUV4ZWNFdmFsQXJy YXlDb2VyY2UsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5 cy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvcGF0aGtleXMuYwppbmRleCBiNWQ2Yzk3 N2VlLi4xMWRlMjg2ZTYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9w YXRoa2V5cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMKQEAg LTEwMyw2ICsxMDMsMjcgQEAgbWFrZV9jYW5vbmljYWxfcGF0aGtleShQbGFubmVySW5mbyAqcm9v dCwKIAlyZXR1cm4gcGs7CiB9CiAKKy8qCisgKiBhcHBlbmRfcGF0aGtleXMKKyAqCQlBcHBlbmQg YWxsIG5vbi1yZWR1bmRhbnQgUGF0aEtleXMgaW4gJ3NvdXJjZScgb250byAndGFyZ2V0JworICov CitMaXN0ICoKK2FwcGVuZF9wYXRoa2V5cyhMaXN0ICp0YXJnZXQsIExpc3QgKnNvdXJjZSkKK3sK KwlMaXN0Q2VsbCAgICpsYzsKKworCUFzc2VydCh0YXJnZXQgIT0gTklMKTsKKworCWZvcmVhY2go bGMsIHNvdXJjZSkKKwl7CisJCVBhdGhLZXkgICAgKnBrID0gbGZpcnN0X25vZGUoUGF0aEtleSwg bGMpOworCisJCWlmICghcGF0aGtleV9pc19yZWR1bmRhbnQocGssIHRhcmdldCkpCisJCQl0YXJn ZXQgPSBsYXBwZW5kKHRhcmdldCwgcGspOworCX0KKwlyZXR1cm4gdGFyZ2V0OworfQorCiAvKgog ICogcGF0aGtleV9pc19yZWR1bmRhbnQKICAqCSAgIElzIGEgcGF0aGtleSByZWR1bmRhbnQgd2l0 aCBvbmUgYWxyZWFkeSBpbiB0aGUgZ2l2ZW4gbGlzdD8KQEAgLTc0Niw3ICs3NjcsOCBAQCBnZXRf Y2hlYXBlc3RfZ3JvdXBfa2V5c19vcmRlcihQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIG5yb3dz LAogTGlzdCAqCiBnZXRfdXNlZnVsX2dyb3VwX2tleXNfb3JkZXJpbmdzKFBsYW5uZXJJbmZvICpy b290LCBkb3VibGUgbnJvd3MsCiAJCQkJCQkJCUxpc3QgKnBhdGhfcGF0aGtleXMsCi0JCQkJCQkJ CUxpc3QgKmdyb3VwX3BhdGhrZXlzLCBMaXN0ICpncm91cF9jbGF1c2VzKQorCQkJCQkJCQlMaXN0 ICpncm91cF9wYXRoa2V5cywgTGlzdCAqZ3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJTGlzdCAqYWdn cmVnYXRlX3BhdGhrZXlzKQogewogCVF1ZXJ5CSAgICpwYXJzZSA9IHJvb3QtPnBhcnNlOwogCUxp c3QJICAgKmluZm9zID0gTklMOwpAQCAtNzU4LDcgKzc4MCwxMCBAQCBnZXRfdXNlZnVsX2dyb3Vw X2tleXNfb3JkZXJpbmdzKFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgbnJvd3MsCiAKIAkvKiBh bHdheXMgcmV0dXJuIGF0IGxlYXN0IHRoZSBvcmlnaW5hbCBwYXRoa2V5cy9jbGF1c2VzICovCiAJ aW5mbyA9IG1ha2VOb2RlKFBhdGhLZXlJbmZvKTsKLQlpbmZvLT5wYXRoa2V5cyA9IHBhdGhrZXlz OworCWlmIChhZ2dyZWdhdGVfcGF0aGtleXMgIT0gTklMKQorCQlpbmZvLT5wYXRoa2V5cyA9IGxp c3RfY29uY2F0X2NvcHkocGF0aGtleXMsIGFnZ3JlZ2F0ZV9wYXRoa2V5cyk7CisJZWxzZQorCQlp bmZvLT5wYXRoa2V5cyA9IHBhdGhrZXlzOwogCWluZm8tPmNsYXVzZXMgPSBjbGF1c2VzOwogCiAJ aW5mb3MgPSBsYXBwZW5kKGluZm9zLCBpbmZvKTsKQEAgLTc4Myw3ICs4MDgsMTAgQEAgZ2V0X3Vz ZWZ1bF9ncm91cF9rZXlzX29yZGVyaW5ncyhQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIG5yb3dz LAogCQkJCQkJCQkJICBuX3ByZW9yZGVyZWQpKQogCXsKIAkJaW5mbyA9IG1ha2VOb2RlKFBhdGhL ZXlJbmZvKTsKLQkJaW5mby0+cGF0aGtleXMgPSBwYXRoa2V5czsKKwkJaWYgKGFnZ3JlZ2F0ZV9w YXRoa2V5cyAhPSBOSUwpCisJCQlpbmZvLT5wYXRoa2V5cyA9IGxpc3RfY29uY2F0X2NvcHkocGF0 aGtleXMsIGFnZ3JlZ2F0ZV9wYXRoa2V5cyk7CisJCWVsc2UKKwkJCWluZm8tPnBhdGhrZXlzID0g cGF0aGtleXM7CiAJCWluZm8tPmNsYXVzZXMgPSBjbGF1c2VzOwogCiAJCWluZm9zID0gbGFwcGVu ZChpbmZvcywgaW5mbyk7CkBAIC04MjIsNyArODUwLDEwIEBAIGdldF91c2VmdWxfZ3JvdXBfa2V5 c19vcmRlcmluZ3MoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSBucm93cywKIAkJICogc3RpbGwg d2FudCB0byBrZWVwIHRoZSBrZXlzIHJlb3JkZXJlZCB0byBwYXRoX3BhdGhrZXlzLgogCQkgKi8K IAkJaW5mbyA9IG1ha2VOb2RlKFBhdGhLZXlJbmZvKTsKLQkJaW5mby0+cGF0aGtleXMgPSBwYXRo a2V5czsKKwkJaWYgKGFnZ3JlZ2F0ZV9wYXRoa2V5cyAhPSBOSUwpCisJCQlpbmZvLT5wYXRoa2V5 cyA9IGxpc3RfY29uY2F0X2NvcHkocGF0aGtleXMsIGFnZ3JlZ2F0ZV9wYXRoa2V5cyk7CisJCWVs c2UKKwkJCWluZm8tPnBhdGhrZXlzID0gcGF0aGtleXM7CiAJCWluZm8tPmNsYXVzZXMgPSBjbGF1 c2VzOwogCiAJCWluZm9zID0gbGFwcGVuZChpbmZvcywgaW5mbyk7CkBAIC04NTAsNyArODgxLDEw IEBAIGdldF91c2VmdWxfZ3JvdXBfa2V5c19vcmRlcmluZ3MoUGxhbm5lckluZm8gKnJvb3QsIGRv dWJsZSBucm93cywKIAogCQkvKiBrZWVwIHRoZSBncm91cCBrZXlzIHJlb3JkZXJlZCB0byBtYXRj aCBvcmRlcmluZyBvZiBpbnB1dCBwYXRoICovCiAJCWluZm8gPSBtYWtlTm9kZShQYXRoS2V5SW5m byk7Ci0JCWluZm8tPnBhdGhrZXlzID0gcGF0aGtleXM7CisJCWlmIChhZ2dyZWdhdGVfcGF0aGtl eXMgIT0gTklMKQorCQkJaW5mby0+cGF0aGtleXMgPSBsaXN0X2NvbmNhdF9jb3B5KHBhdGhrZXlz LCBhZ2dyZWdhdGVfcGF0aGtleXMpOworCQllbHNlCisJCQlpbmZvLT5wYXRoa2V5cyA9IHBhdGhr ZXlzOwogCQlpbmZvLT5jbGF1c2VzID0gY2xhdXNlczsKIAogCQlpbmZvcyA9IGxhcHBlbmQoaW5m b3MsIGluZm8pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbmFn Zy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbmFnZy5jCmluZGV4IGUwZTM1Nzk2 MGYuLmFiM2Y3YWJiYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5hZ2cuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFuYWdnLmMKQEAgLTI0 NSw3ICsyNDUsNyBAQCBjYW5fbWlubWF4X2FnZ3MoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKipj b250ZXh0KQogCWZvcmVhY2gobGMsIHJvb3QtPmFnZ2luZm9zKQogCXsKIAkJQWdnSW5mbyAgICAq YWdnaW5mbyA9IGxmaXJzdF9ub2RlKEFnZ0luZm8sIGxjKTsKLQkJQWdncmVmCSAgICphZ2dyZWYg PSBhZ2dpbmZvLT5yZXByZXNlbnRhdGl2ZV9hZ2dyZWY7CisJCUFnZ3JlZgkgICAqYWdncmVmID0g bGluaXRpYWxfbm9kZShBZ2dyZWYsIGFnZ2luZm8tPmFnZ3JlZnMpOwogCQlPaWQJCQlhZ2dzb3J0 b3A7CiAJCVRhcmdldEVudHJ5ICpjdXJUYXJnZXQ7CiAJCU1pbk1heEFnZ0luZm8gKm1taW5mbzsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCAwNmFkODU2ZWFjLi40NmNiNGQ0 YTIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0yNCw2ICsyNCw3IEBA CiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIK ICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfYWdncmVnYXRl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19pbmhlcml0cy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgpAQCAtMzEyNSw2 ICszMTI2LDIwNSBAQCByZW9yZGVyX2dyb3VwaW5nX3NldHMoTGlzdCAqZ3JvdXBpbmdzZXRzLCBM aXN0ICpzb3J0Y2xhdXNlKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBtYWtlX3BhdGhr ZXlzX2Zvcl9ncm91cGFnZworICoJCURldGVybWluZSB0aGUgcGF0aGtleXMgZm9yIHRoZSBHUk9V UCBCWSBjbGF1c2UgYW5kL29yIGFueSBvcmRlcmVkCisgKgkJYWdncmVnYXRlcy4gIFdlIGV4cGVj dCBhdCBsZWFzdCBvbmUgb2YgdGhlc2UgaGVyZS4KKyAqCisgKiBCdWlsZGluZyB0aGUgcGF0aGtl eXMgZm9yIHRoZSBHUk9VUCBCWSBpcyBzaW1wbGUuICBNb3N0IG9mIHRoZSBjb21wbGV4aXR5Cisg KiBpbnZvbHZlZCBoZXJlIGNvbWVzIGZyb20gY2FsY3VsYXRpbmcgdGhlIGJlc3QgcGF0aGtleXMg Zm9yIG9yZGVyZWQKKyAqIGFnZ3JlZ2F0ZXMuICBXZSBkZWZpbmUgImJlc3QiIGFzIHRoZSBwYXRo a2V5cyB0aGF0IHN1aXQgdGhlIG1vc3QgbnVtYmVyIG9mCisgKiBhZ2dyZWdhdGUgZnVuY3Rpb25z LiAgV2UgZmluZCB0aGVzZSBieSBsb29raW5nIGF0IHRoZSBmaXJzdCBPUkRFUiBCWSAvCisgKiBE SVNUSU5DVCBhZ2dyZWdhdGUgYW5kIHRha2luZyB0aGUgcGF0aGtleXMgZm9yIHRoYXQgYmVmb3Jl IHNlYXJjaGluZyBmb3IKKyAqIG90aGVyIGFnZ3JlZ2F0ZXMgdGhhdCByZXF1aXJlIHRoZSBzYW1l IG9yIGEgbW9yZSBzdHJpY3QgdmFyaWF0aW9uIG9mIHRoZQorICogc2FtZSBwYXRoa2V5cy4gIFdl IHRoZW4gcmVwZWF0IHRoYXQgcHJvY2VzcyBmb3IgYW55IHJlbWFpbmluZyBhZ2dyZWdhdGVzCisg KiB3aXRoIGRpZmZlcmVudCBwYXRoa2V5cyBhbmQgaWYgd2UgZmluZCBhbm90aGVyIHNldCBvZiBw YXRoa2V5cyB0aGF0IHN1aXRzIGEKKyAqIGxhcmdlciBudW1iZXIgb2YgYWdncmVnYXRlcyB0aGVu IHdlIHJldHVybiB0aG9zZSBwYXRoa2V5cyBpbnN0ZWFkLgorICoKKyAqICpudW1iZXJfZ3JvdXBi eV9wYXRoa2V5cyBnZXRzIHNldCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbmVudHMgaW4gdGhlCisg KiByZXR1cm5lZCBsaXN0IHRoYXQgYmVsb25nIHRvIHRoZSBHUk9VUCBCWSBjbGF1c2UuICBBbnkg ZWxlbWVudHMgYWJvdmUgdGhpcworICogbnVtYmVyIG11c3QgYmVsb25nIHRvIE9SREVSIEJZIC8g RElTVElOQ1QgYWdncmVnYXRlcy4KKyAqCisgKiBXaGVuIHRoZSBiZXN0IHBhdGhrZXlzIGFyZSBm b3VuZCB3ZSBhbHNvIG1hcmsgZWFjaCBBZ2dyZWYgdGhhdCBjYW4gdXNlCisgKiB0aG9zZSBwYXRo a2V5cyBhcyBhZ2dwcmVzb3J0ZWQgPSB0cnVlLgorICovCitzdGF0aWMgTGlzdCAqCittYWtlX3Bh dGhrZXlzX2Zvcl9ncm91cGFnZyhQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqZ3JvdXBDbGF1c2Us IExpc3QgKnRsaXN0LAorCQkJCQkJICAgaW50ICpudW1iZXJfZ3JvdXBieV9wYXRoa2V5cykKK3sK KwlMaXN0CSAgICpncm91cHBhdGhrZXlzID0gTklMOworCUxpc3QJICAgKmJlc3RwYXRoa2V5czsK KwlCaXRtYXBzZXQgICpiZXN0YWdnczsKKwlCaXRtYXBzZXQgICp1bnByb2Nlc3NlZF9hZ2dzOwor CUxpc3RDZWxsICAgKmxjOworCWludAkJCWk7CisKKwlBc3NlcnQoZ3JvdXBDbGF1c2UgIT0gTklM IHx8IHJvb3QtPm51bU9yZGVyZWRBZ2dzID4gMCk7CisKKwlpZiAoZ3JvdXBDbGF1c2UgIT0gTklM KQorCXsKKwkJLyogbm8gcGF0aGtleXMgcG9zc2libGUgaWYgdGhlcmUncyBhbiB1bnNvcnRhYmxl IEdST1VQIEJZICovCisJCWlmICghZ3JvdXBpbmdfaXNfc29ydGFibGUoZ3JvdXBDbGF1c2UpKQor CQl7CisJCQkqbnVtYmVyX2dyb3VwYnlfcGF0aGtleXMgPSAwOworCQkJcmV0dXJuIE5JTDsKKwkJ fQorCisJCWdyb3VwcGF0aGtleXMgPSBtYWtlX3BhdGhrZXlzX2Zvcl9zb3J0Y2xhdXNlcyhyb290 LCBncm91cENsYXVzZSwKKwkJCQkJCQkJCQkJCQkgIHRsaXN0KTsKKwkJKm51bWJlcl9ncm91cGJ5 X3BhdGhrZXlzID0gbGlzdF9sZW5ndGgoZ3JvdXBwYXRoa2V5cyk7CisJfQorCWVsc2UKKwkJKm51 bWJlcl9ncm91cGJ5X3BhdGhrZXlzID0gMDsKKworCS8qCisJICogV2UgY2FuJ3QgYWRkIHBhdGhr ZXlzIGZvciBvcmRlcmVkIGFnZ3JlZ2F0ZXMgaWYgdGhlcmUgYXJlIGFueSBncm91cGluZworCSAq IHNldHMuICBBbGwgaGFuZGxpbmcgc3BlY2lmaWMgdG8gb3JkZXJlZCBhZ2dyZWdhdGVzIG11c3Qg YmUgZG9uZSBieSB0aGUKKwkgKiBleGVjdXRvciBpbiB0aGF0IGNhc2UuCisJICovCisJaWYgKHJv b3QtPm51bU9yZGVyZWRBZ2dzID09IDAgfHwgcm9vdC0+cGFyc2UtPmdyb3VwaW5nU2V0cyAhPSBO SUwpCisJCXJldHVybiBncm91cHBhdGhrZXlzOworCisJLyoKKwkgKiBNYWtlIGEgZmlyc3QgcGFz cyBvdmVyIGFsbCBBZ2dJbmZvcyB0byBjb2xsZWN0IGEgQml0bWFwc2V0IGNvbnRhaW5pbmcKKwkg KiB0aGUgaW5kZXhlcyBvZiBhbGwgQWdnSW5mb3MgdG8gYmUgcHJvY2Vzc2VkIGJlbG93LgorCSAq LworCXVucHJvY2Vzc2VkX2FnZ3MgPSBOVUxMOworCWZvcmVhY2gobGMsIHJvb3QtPmFnZ2luZm9z KQorCXsKKwkJQWdnSW5mbyAgICAqYWdnaW5mbyA9IChBZ2dJbmZvICopIGxmaXJzdChsYyk7CisJ CUFnZ3JlZgkgICAqYWdncmVmID0gbGluaXRpYWxfbm9kZShBZ2dyZWYsIGFnZ2luZm8tPmFnZ3Jl ZnMpOworCisJCWlmIChBR0dLSU5EX0lTX09SREVSRURfU0VUKGFnZ3JlZi0+YWdna2luZCkpCisJ CQljb250aW51ZTsKKworCQkvKiBza2lwIGFnZ3Mgd2l0aCBubyBESVNUSU5DVCBvciBPUkRFUiBC WSAqLworCQlpZiAoYWdncmVmLT5hZ2dkaXN0aW5jdCA9PSBOSUwgJiYgYWdncmVmLT5hZ2dvcmRl ciA9PSBOSUwpCisJCQljb250aW51ZTsKKworCisJCXVucHJvY2Vzc2VkX2FnZ3MgPSBibXNfYWRk X21lbWJlcih1bnByb2Nlc3NlZF9hZ2dzLAorCQkJCQkJCQkJCSAgZm9yZWFjaF9jdXJyZW50X2lu ZGV4KGxjKSk7CisJfQorCisJLyoKKwkgKiBOb3cgcHJvY2VzcyBhbGwgdGhlIHVucHJvY2Vzc2Vk X2FnZ3MgdG8gZmluZCB0aGUgYmVzdCBzZXQgb2YgcGF0aGtleXMKKwkgKiBmb3IgdGhlIGdpdmVu IHNldCBvZiBhZ2dyZWdhdGVzLgorCSAqCisJICogT24gdGhlIGZpcnN0IG91dGVyIGxvb3AgaGVy ZSAnYmVzdGFnZ3MnIHdpbGwgYmUgZW1wdHkuICAgV2UnbGwgcG9wdWxhdGUKKwkgKiB0aGlzIGR1 cmluZyB0aGUgZmlyc3QgbG9vcCB1c2luZyB0aGUgcGF0aGtleXMgZm9yIHRoZSB2ZXJ5IGZpcnN0 CisJICogQWdnSW5mbyB0aGVuIHRha2luZyBhbnkgc3Ryb25nZXIgcGF0aGtleXMgZnJvbSBhbnkg b3RoZXIgQWdnSW5mb3Mgd2l0aAorCSAqIGEgbW9yZSBzdHJpY3Qgc2V0IG9mIGNvbXBhdGlibGUg cGF0aGtleXMuICBPbmNlIHRoZSBvdXRlciBsb29wIGlzCisJICogY29tcGxldGUsIHdlIG1hcmsg b2ZmIGFsbCB0aGUgYWdncmVnYXRlcyB3aXRoIGNvbXBhdGlibGUgcGF0aGtleXMgdGhlbgorCSAq IHJlbW92ZSB0aG9zZSBmcm9tIHRoZSB1bnByb2Nlc3NlZF9hZ2dzIGFuZCByZXBlYXQgdGhlIHBy b2Nlc3MgdG8gdHJ5IHRvCisJICogZmluZCBhbm90aGVyIHNldCBvZiBwYXRoa2V5cyB0aGF0IGFy ZSBzdWl0YWJsZSBmb3IgYSBsYXJnZXIgbnVtYmVyIG9mCisJICogYWdncmVnYXRlcy4gIFRoZSBv dXRlciBsb29wIHdpbGwgc3RvcCB3aGVuIHRoZXJlIGFyZSBub3QgZW5vdWdoCisJICogdW5wcm9j ZXNzZWQgYWdncmVnYXRlcyBmb3IgaXQgdG8gYmUgcG9zc2libGUgdG8gZmluZCBhIHNldCBvZiBw YXRoa2V5cworCSAqIHRvIHN1aXQgYSBsYXJnZXIgbnVtYmVyIG9mIGFnZ3JlZ2F0ZXMuCisJICov CisJYmVzdHBhdGhrZXlzID0gTklMOworCWJlc3RhZ2dzID0gTlVMTDsKKwl3aGlsZSAoYm1zX251 bV9tZW1iZXJzKHVucHJvY2Vzc2VkX2FnZ3MpID4gYm1zX251bV9tZW1iZXJzKGJlc3RhZ2dzKSkK Kwl7CisJCUJpdG1hcHNldCAgKmFnZ2luZGV4ZXMgPSBOVUxMOworCQlMaXN0CSAgICpjdXJycGF0 aGtleXMgPSBOSUw7CisKKwkJaSA9IC0xOworCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIo dW5wcm9jZXNzZWRfYWdncywgaSkpID49IDApCisJCXsKKwkJCUFnZ0luZm8gICAgKmFnZ2luZm8g PSBsaXN0X250aChyb290LT5hZ2dpbmZvcywgaSk7CisJCQlBZ2dyZWYJICAgKmFnZ3JlZiA9IGxp bml0aWFsX25vZGUoQWdncmVmLCBhZ2dpbmZvLT5hZ2dyZWZzKTsKKwkJCUxpc3QJICAgKnNvcnRs aXN0OworCisJCQlpZiAoYWdncmVmLT5hZ2dkaXN0aW5jdCAhPSBOSUwpCisJCQkJc29ydGxpc3Qg PSBhZ2dyZWYtPmFnZ2Rpc3RpbmN0OworCQkJZWxzZQorCQkJCXNvcnRsaXN0ID0gYWdncmVmLT5h Z2dvcmRlcjsKKworCQkJLyoKKwkJCSAqIFdoZW4gbm90IHNldCB5ZXQsIHRha2UgdGhlIHBhdGhr ZXlzIGZyb20gdGhlIGZpcnN0IHVucHJvY2Vzc2VkCisJCQkgKiBhZ2dyZWdhdGUuCisJCQkgKi8K KwkJCWlmIChjdXJycGF0aGtleXMgPT0gTklMKQorCQkJeworCQkJCWN1cnJwYXRoa2V5cyA9IG1h a2VfcGF0aGtleXNfZm9yX3NvcnRjbGF1c2VzKHJvb3QsIHNvcnRsaXN0LAorCQkJCQkJCQkJCQkJ CQkJIGFnZ3JlZi0+YXJncyk7CisKKwkJCQkvKiBpbmNsdWRlIHRoZSBHUk9VUCBCWSBwYXRoa2V5 cywgaWYgdGhleSBleGlzdCAqLworCQkJCWlmIChncm91cHBhdGhrZXlzICE9IE5JTCkKKwkJCQkJ Y3VycnBhdGhrZXlzID0gYXBwZW5kX3BhdGhrZXlzKGxpc3RfY29weShncm91cHBhdGhrZXlzKSwK KwkJCQkJCQkJCQkJCSAgIGN1cnJwYXRoa2V5cyk7CisKKwkJCQkvKiByZWNvcmQgdGhhdCB3ZSBm b3VuZCBwYXRoa2V5cyBmb3IgdGhpcyBhZ2dyZWdhdGUgKi8KKwkJCQlhZ2dpbmRleGVzID0gYm1z X2FkZF9tZW1iZXIoYWdnaW5kZXhlcywgaSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJTGlz dAkgICAqcGF0aGtleXM7CisKKwkJCQkvKiBub3cgbG9vayBmb3IgYSBzdHJvbmdlciBzZXQgb2Yg bWF0Y2hpbmcgcGF0aGtleXMgKi8KKwkJCQlwYXRoa2V5cyA9IG1ha2VfcGF0aGtleXNfZm9yX3Nv cnRjbGF1c2VzKHJvb3QsIHNvcnRsaXN0LAorCQkJCQkJCQkJCQkJCQkgYWdncmVmLT5hcmdzKTsK KworCQkJCS8qIGluY2x1ZGUgdGhlIEdST1VQIEJZIHBhdGhrZXlzLCBpZiB0aGV5IGV4aXN0ICov CisJCQkJaWYgKGdyb3VwcGF0aGtleXMgIT0gTklMKQorCQkJCQlwYXRoa2V5cyA9IGFwcGVuZF9w YXRoa2V5cyhsaXN0X2NvcHkoZ3JvdXBwYXRoa2V5cyksCisJCQkJCQkJCQkJCSAgIHBhdGhrZXlz KTsKKworCQkJCWlmIChwYXRoa2V5c19jb250YWluZWRfaW4oY3VycnBhdGhrZXlzLCBwYXRoa2V5 cykpCisJCQkJeworCQkJCQkvKiBwYXRoa2V5cyBhcmUgc3Ryb25nZXIsIHVzZSB0aGVzZSBvbmVz IGluc3RlYWQgKi8KKwkJCQkJY3VycnBhdGhrZXlzID0gcGF0aGtleXM7CisKKwkJCQkJLyogcmVj b3JkIHRoYXQgd2UgZm91bmQgcGF0aGtleXMgZm9yIHRoaXMgYWdncmVnYXRlICovCisJCQkJCWFn Z2luZGV4ZXMgPSBibXNfYWRkX21lbWJlcihhZ2dpbmRleGVzLCBpKTsKKwkJCQl9CisJCQl9CisJ CX0KKworCQkvKiByZW1vdmUgdGhlIGFnZ3JlZ2F0ZXMgdGhhdCB3ZSd2ZSBqdXN0IHByb2Nlc3Nl ZCAqLworCQl1bnByb2Nlc3NlZF9hZ2dzID0gYm1zX2RlbF9tZW1iZXJzKHVucHJvY2Vzc2VkX2Fn Z3MsIGFnZ2luZGV4ZXMpOworCisJCS8qCisJCSAqIElmIHRoaXMgcGFzcyBpbmNsdWRlZCBtb3Jl IGFnZ3JlZ2F0ZXMgdGhhbiB0aGUgcHJldmlvdXMgYmVzdCB0aGVuCisJCSAqIHVzZSB0aGVzZSBv bmVzIGFzIHRoZSBiZXN0IHNldC4KKwkJICovCisJCWlmIChibXNfbnVtX21lbWJlcnMoYWdnaW5k ZXhlcykgPiBibXNfbnVtX21lbWJlcnMoYmVzdGFnZ3MpKQorCQl7CisJCQliZXN0YWdncyA9IGFn Z2luZGV4ZXM7CisJCQliZXN0cGF0aGtleXMgPSBjdXJycGF0aGtleXM7CisJCX0KKwl9CisKKwkv KgorCSAqIE5vdyB0aGF0IHdlJ3ZlIGZvdW5kIHRoZSBiZXN0IHNldCBvZiBhZ2dyZWdhdGVzIHdl IGNhbiBzZXQgdGhlCisJICogcHJlc29ydGVkIGZsYWcgdG8gaW5kaWNhdGUgdG8gdGhlIGV4ZWN1 dG9yIHRoYXQgaXQgbmVlZG4ndCBib3RoZXIKKwkgKiBwZXJmb3JtaW5nIGEgc29ydCBmb3IgdGhl c2UgQWdncmVmcy4KKwkgKi8KKwlpID0gLTE7CisJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVy KGJlc3RhZ2dzLCBpKSkgPj0gMCkKKwl7CisJCUFnZ0luZm8gICAgKmFnZ2luZm8gPSBsaXN0X250 aChyb290LT5hZ2dpbmZvcywgaSk7CisKKwkJZm9yZWFjaChsYywgYWdnaW5mby0+YWdncmVmcykK KwkJeworCQkJQWdncmVmCSAgICphZ2dyZWYgPSBsZmlyc3Rfbm9kZShBZ2dyZWYsIGxjKTsKKwor CQkJYWdncmVmLT5hZ2dwcmVzb3J0ZWQgPSB0cnVlOworCQl9CisJfQorCisJLyoKKwkgKiBiZXN0 cGF0aGtleXMgaW5jbHVkZXMgdGhlIEdST1VQIEJZIHBhdGhrZXlzLCBzbyBpZiB3ZSBmb3VuZCBh bnkgb3JkZXJlZAorCSAqIGFnZ3JlZ2F0ZXMsIHRoZW4gcmV0dXJuIGJlc3RwYXRoa2V5cywgb3Ro ZXJ3aXNlIHJldHVybiB0aGUKKwkgKiBncm91cHBhdGhrZXlzLgorCSAqLworCWlmIChiZXN0cGF0 aGtleXMgIT0gTklMKQorCQlyZXR1cm4gYmVzdHBhdGhrZXlzOworCisJcmV0dXJuIGdyb3VwcGF0 aGtleXM7Cit9CisKIC8qCiAgKiBDb21wdXRlIHF1ZXJ5X3BhdGhrZXlzIGFuZCBvdGhlciBwYXRo a2V5cyBkdXJpbmcgcGxhbiBnZW5lcmF0aW9uCiAgKi8KQEAgLTMxMzcsMTggKzMzMzcsMTkgQEAg c3RhbmRhcmRfcXBfY2FsbGJhY2soUGxhbm5lckluZm8gKnJvb3QsIHZvaWQgKmV4dHJhKQogCUxp c3QJICAgKmFjdGl2ZVdpbmRvd3MgPSBxcF9leHRyYS0+YWN0aXZlV2luZG93czsKIAogCS8qCi0J ICogQ2FsY3VsYXRlIHBhdGhrZXlzIHRoYXQgcmVwcmVzZW50IGdyb3VwaW5nL29yZGVyaW5nIHJl cXVpcmVtZW50cy4gIFRoZQotCSAqIHNvcnRDbGF1c2UgaXMgY2VydGFpbmx5IHNvcnQtYWJsZSwg YnV0IEdST1VQIEJZIGFuZCBESVNUSU5DVCBtaWdodCBub3QKLQkgKiBiZSwgaW4gd2hpY2ggY2Fz ZSB3ZSBqdXN0IGxlYXZlIHRoZWlyIHBhdGhrZXlzIGVtcHR5LgorCSAqIENhbGN1bGF0ZSBwYXRo a2V5cyB0aGF0IHJlcHJlc2VudCBncm91cGluZy9vcmRlcmluZyBhbmQvb3Igb3JkZXJlZAorCSAq IGFnZ3JlZ2F0ZSByZXF1aXJlbWVudHMuCiAJICovCi0JaWYgKHFwX2V4dHJhLT5ncm91cENsYXVz ZSAmJgotCQlncm91cGluZ19pc19zb3J0YWJsZShxcF9leHRyYS0+Z3JvdXBDbGF1c2UpKQotCQly b290LT5ncm91cF9wYXRoa2V5cyA9Ci0JCQltYWtlX3BhdGhrZXlzX2Zvcl9zb3J0Y2xhdXNlcyhy b290LAotCQkJCQkJCQkJCSAgcXBfZXh0cmEtPmdyb3VwQ2xhdXNlLAotCQkJCQkJCQkJCSAgdGxp c3QpOworCWlmIChxcF9leHRyYS0+Z3JvdXBDbGF1c2UgIT0gTklMIHx8IHJvb3QtPm51bU9yZGVy ZWRBZ2dzID4gMCkKKwkJcm9vdC0+Z3JvdXBfcGF0aGtleXMgPSBtYWtlX3BhdGhrZXlzX2Zvcl9n cm91cGFnZyhyb290LAorCQkJCQkJCQkJCQkJCQkgIHFwX2V4dHJhLT5ncm91cENsYXVzZSwKKwkJ CQkJCQkJCQkJCQkJICB0bGlzdCwKKwkJCQkJCQkJCQkJCQkJICAmcm9vdC0+bnVtX2dyb3VwYnlf cGF0aGtleXMpOwogCWVsc2UKKwl7CiAJCXJvb3QtPmdyb3VwX3BhdGhrZXlzID0gTklMOworCQly b290LT5udW1fZ3JvdXBieV9wYXRoa2V5cyA9IDA7CisJfQogCiAJLyogV2UgY29uc2lkZXIgb25s eSB0aGUgZmlyc3QgKGJvdHRvbSkgd2luZG93IGluIHBhdGhrZXlzIGxvZ2ljICovCiAJaWYgKGFj dGl2ZVdpbmRvd3MgIT0gTklMKQpAQCAtNjIyMiw2ICs2NDIzLDI2IEBAIGFkZF9wYXRoc190b19n cm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAog CWlmIChjYW5fc29ydCkKIAl7CisJCUxpc3QJICAgKmdyb3VwX3BhdGhrZXlzOworCQlMaXN0CSAg ICpvcmRlckFnZ1BhdGhrZXlzOworCQlpbnQJCQludW1BZ2dQYXRoa2V5czsKKworCQludW1BZ2dQ YXRoa2V5cyA9IGxpc3RfbGVuZ3RoKHJvb3QtPmdyb3VwX3BhdGhrZXlzKSAtCisJCQkJCQkgcm9v dC0+bnVtX2dyb3VwYnlfcGF0aGtleXM7CisKKwkJaWYgKG51bUFnZ1BhdGhrZXlzID4gMCkKKwkJ eworCQkJZ3JvdXBfcGF0aGtleXMgPSBsaXN0X2NvcHlfaGVhZChyb290LT5ncm91cF9wYXRoa2V5 cywKKwkJCQkJCQkJCQkJcm9vdC0+bnVtX2dyb3VwYnlfcGF0aGtleXMpOworCQkJb3JkZXJBZ2dQ YXRoa2V5cyA9IGxpc3RfY29weV90YWlsKHJvb3QtPmdyb3VwX3BhdGhrZXlzLAorCQkJCQkJCQkJ CQkgIHJvb3QtPm51bV9ncm91cGJ5X3BhdGhrZXlzKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWdy b3VwX3BhdGhrZXlzID0gcm9vdC0+Z3JvdXBfcGF0aGtleXM7CisJCQlvcmRlckFnZ1BhdGhrZXlz ID0gTklMOworCQl9CisKIAkJLyoKIAkJICogVXNlIGFueSBhdmFpbGFibGUgc3VpdGFibHktc29y dGVkIHBhdGggYXMgaW5wdXQsIGFuZCBhbHNvIGNvbnNpZGVyCiAJCSAqIHNvcnRpbmcgdGhlIGNo ZWFwZXN0LXRvdGFsIHBhdGguCkBAIC02MjM0LDcgKzY0NTUsNiBAQCBhZGRfcGF0aHNfdG9fZ3Jv dXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAKIAkJ CUxpc3QJICAgKnBhdGhrZXlfb3JkZXJpbmdzID0gTklMOwogCi0JCQlMaXN0CSAgICpncm91cF9w YXRoa2V5cyA9IHJvb3QtPmdyb3VwX3BhdGhrZXlzOwogCQkJTGlzdAkgICAqZ3JvdXBfY2xhdXNl cyA9IHBhcnNlLT5ncm91cENsYXVzZTsKIAogCQkJLyogZ2VuZXJhdGUgYWx0ZXJuYXRpdmUgZ3Jv dXAgb3JkZXJpbmdzIHRoYXQgbWlnaHQgYmUgdXNlZnVsICovCkBAIC02MjQyLDcgKzY0NjIsOCBA QCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICppbnB1dF9yZWwsCiAJCQkJCQkJCQkJCQkJCQkJcGF0aC0+cm93cywKIAkJCQkJCQkJCQkJCQkJ CQlwYXRoLT5wYXRoa2V5cywKIAkJCQkJCQkJCQkJCQkJCQlncm91cF9wYXRoa2V5cywKLQkJCQkJ CQkJCQkJCQkJCQlncm91cF9jbGF1c2VzKTsKKwkJCQkJCQkJCQkJCQkJCQlncm91cF9jbGF1c2Vz LAorCQkJCQkJCQkJCQkJCQkJCW9yZGVyQWdnUGF0aGtleXMpOwogCiAJCQlBc3NlcnQobGlzdF9s ZW5ndGgocGF0aGtleV9vcmRlcmluZ3MpID4gMCk7CiAKQEAgLTY0MTQsNyArNjYzNSw4IEBAIGFk ZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlu cHV0X3JlbCwKIAkJCQkJCQkJCQkJCQkJCQkJcGF0aC0+cm93cywKIAkJCQkJCQkJCQkJCQkJCQkJ cGF0aC0+cGF0aGtleXMsCiAJCQkJCQkJCQkJCQkJCQkJCWdyb3VwX3BhdGhrZXlzLAotCQkJCQkJ CQkJCQkJCQkJCQlncm91cF9jbGF1c2VzKTsKKwkJCQkJCQkJCQkJCQkJCQkJZ3JvdXBfY2xhdXNl cywKKwkJCQkJCQkJCQkJCQkJCQkJb3JkZXJBZ2dQYXRoa2V5cyk7CiAKIAkJCQlBc3NlcnQobGlz dF9sZW5ndGgocGF0aGtleV9vcmRlcmluZ3MpID4gMCk7CiAKQEAgLTY3MTcsNiArNjkzOSwyNCBA QCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAogCWlm IChjYW5fc29ydCAmJiBjaGVhcGVzdF90b3RhbF9wYXRoICE9IE5VTEwpCiAJeworCQlMaXN0CSAg ICpncm91cF9wYXRoa2V5czsKKwkJTGlzdAkgICAqb3JkZXJBZ2dQYXRoa2V5czsKKwkJaW50CQkJ bnVtQWdnUGF0aGtleXM7CisKKwkJbnVtQWdnUGF0aGtleXMgPSBsaXN0X2xlbmd0aChyb290LT5n cm91cF9wYXRoa2V5cykgLQorCQkJCQkJIHJvb3QtPm51bV9ncm91cGJ5X3BhdGhrZXlzOworCisJ CWlmIChudW1BZ2dQYXRoa2V5cyA+IDApCisJCXsKKwkJCWdyb3VwX3BhdGhrZXlzID0gbGlzdF9j b3B5X2hlYWQocm9vdC0+Z3JvdXBfcGF0aGtleXMsIHJvb3QtPm51bV9ncm91cGJ5X3BhdGhrZXlz KTsKKwkJCW9yZGVyQWdnUGF0aGtleXMgPSBsaXN0X2NvcHlfdGFpbChyb290LT5ncm91cF9wYXRo a2V5cywgcm9vdC0+bnVtX2dyb3VwYnlfcGF0aGtleXMpOworCQl9CisJCWVsc2UKKwkJeworCQkJ Z3JvdXBfcGF0aGtleXMgPSByb290LT5ncm91cF9wYXRoa2V5czsKKwkJCW9yZGVyQWdnUGF0aGtl eXMgPSBOSUw7CisJCX0KKwogCQkvKiBUaGlzIHNob3VsZCBoYXZlIGJlZW4gY2hlY2tlZCBwcmV2 aW91c2x5ICovCiAJCUFzc2VydChwYXJzZS0+aGFzQWdncyB8fCBwYXJzZS0+Z3JvdXBDbGF1c2Up OwogCkBAIC02NzI5LDEwICs2OTY5LDcgQEAgY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0aHMo UGxhbm5lckluZm8gKnJvb3QsCiAJCQlMaXN0Q2VsbCAgICpsYzI7CiAJCQlQYXRoCSAgICpwYXRo ID0gKFBhdGggKikgbGZpcnN0KGxjKTsKIAkJCVBhdGgJICAgKnBhdGhfc2F2ZSA9IHBhdGg7Ci0K IAkJCUxpc3QJICAgKnBhdGhrZXlfb3JkZXJpbmdzID0gTklMOwotCi0JCQlMaXN0CSAgICpncm91 cF9wYXRoa2V5cyA9IHJvb3QtPmdyb3VwX3BhdGhrZXlzOwogCQkJTGlzdAkgICAqZ3JvdXBfY2xh dXNlcyA9IHBhcnNlLT5ncm91cENsYXVzZTsKIAogCQkJLyogZ2VuZXJhdGUgYWx0ZXJuYXRpdmUg Z3JvdXAgb3JkZXJpbmdzIHRoYXQgbWlnaHQgYmUgdXNlZnVsICovCkBAIC02NzQwLDcgKzY5Nzcs OCBAQCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJ CQkJCQkJCQkJCQkJCQlwYXRoLT5yb3dzLAogCQkJCQkJCQkJCQkJCQkJCXBhdGgtPnBhdGhrZXlz LAogCQkJCQkJCQkJCQkJCQkJCWdyb3VwX3BhdGhrZXlzLAotCQkJCQkJCQkJCQkJCQkJCWdyb3Vw X2NsYXVzZXMpOworCQkJCQkJCQkJCQkJCQkJCWdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCQkJ CQkJb3JkZXJBZ2dQYXRoa2V5cyk7CiAKIAkJCUFzc2VydChsaXN0X2xlbmd0aChwYXRoa2V5X29y ZGVyaW5ncykgPiAwKTsKIApAQCAtNjg1NiwxNiArNzA5NCwzMSBAQCBjcmVhdGVfcGFydGlhbF9n cm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAogCWlmIChjYW5fc29ydCAmJiBjaGVh cGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCkKIAl7CisJCUxpc3QJICAgKmdyb3VwX3BhdGhrZXlz OworCQlMaXN0CSAgICpvcmRlckFnZ1BhdGhrZXlzOworCQlpbnQJCQludW1BZ2dQYXRoa2V5czsK KworCQludW1BZ2dQYXRoa2V5cyA9IGxpc3RfbGVuZ3RoKHJvb3QtPmdyb3VwX3BhdGhrZXlzKSAt CisJCQkJCQkgcm9vdC0+bnVtX2dyb3VwYnlfcGF0aGtleXM7CisKKwkJaWYgKG51bUFnZ1BhdGhr ZXlzID4gMCkKKwkJeworCQkJZ3JvdXBfcGF0aGtleXMgPSBsaXN0X2NvcHlfaGVhZChyb290LT5n cm91cF9wYXRoa2V5cywgcm9vdC0+bnVtX2dyb3VwYnlfcGF0aGtleXMpOworCQkJb3JkZXJBZ2dQ YXRoa2V5cyA9IGxpc3RfY29weV90YWlsKHJvb3QtPmdyb3VwX3BhdGhrZXlzLCByb290LT5udW1f Z3JvdXBieV9wYXRoa2V5cyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlncm91cF9wYXRoa2V5cyA9 IHJvb3QtPmdyb3VwX3BhdGhrZXlzOworCQkJb3JkZXJBZ2dQYXRoa2V5cyA9IE5JTDsKKwkJfQor CiAJCS8qIFNpbWlsYXIgdG8gYWJvdmUgbG9naWMsIGJ1dCBmb3IgcGFydGlhbCBwYXRocy4gKi8K IAkJZm9yZWFjaChsYywgaW5wdXRfcmVsLT5wYXJ0aWFsX3BhdGhsaXN0KQogCQl7CiAJCQlMaXN0 Q2VsbCAgICpsYzI7CiAJCQlQYXRoCSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKIAkJ CVBhdGgJICAgKnBhdGhfb3JpZ2luYWwgPSBwYXRoOwotCiAJCQlMaXN0CSAgICpwYXRoa2V5X29y ZGVyaW5ncyA9IE5JTDsKLQotCQkJTGlzdAkgICAqZ3JvdXBfcGF0aGtleXMgPSByb290LT5ncm91 cF9wYXRoa2V5czsKIAkJCUxpc3QJICAgKmdyb3VwX2NsYXVzZXMgPSBwYXJzZS0+Z3JvdXBDbGF1 c2U7CiAKIAkJCS8qIGdlbmVyYXRlIGFsdGVybmF0aXZlIGdyb3VwIG9yZGVyaW5ncyB0aGF0IG1p Z2h0IGJlIHVzZWZ1bCAqLwpAQCAtNjg3Myw3ICs3MTI2LDggQEAgY3JlYXRlX3BhcnRpYWxfZ3Jv dXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkJCQkJcGF0aC0+cm93 cywKIAkJCQkJCQkJCQkJCQkJCQlwYXRoLT5wYXRoa2V5cywKIAkJCQkJCQkJCQkJCQkJCQlncm91 cF9wYXRoa2V5cywKLQkJCQkJCQkJCQkJCQkJCQlncm91cF9jbGF1c2VzKTsKKwkJCQkJCQkJCQkJ CQkJCQlncm91cF9jbGF1c2VzLAorCQkJCQkJCQkJCQkJCQkJCW9yZGVyQWdnUGF0aGtleXMpOwog CiAJCQlBc3NlcnQobGlzdF9sZW5ndGgocGF0aGtleV9vcmRlcmluZ3MpID4gMCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBhZ2cuYyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wcmVwL3ByZXBhZ2cuYwppbmRleCA1YjEyOTM3ZWFkLi5kYTg5YjU1NDAyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwYWdnLmMKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5jCkBAIC0yMjUsNiArMjI1LDcgQEAgcHJl cHJvY2Vzc19hZ2dyZWYoQWdncmVmICphZ2dyZWYsIFBsYW5uZXJJbmZvICpyb290KQogCXsKIAkJ QWdnSW5mbyAgICAqYWdnaW5mbyA9IGxpc3RfbnRoX25vZGUoQWdnSW5mbywgcm9vdC0+YWdnaW5m b3MsIGFnZ25vKTsKIAorCQlhZ2dpbmZvLT5hZ2dyZWZzID0gbGFwcGVuZChhZ2dpbmZvLT5hZ2dy ZWZzLCBhZ2dyZWYpOwogCQl0cmFuc25vID0gYWdnaW5mby0+dHJhbnNubzsKIAl9CiAJZWxzZQpA QCAtMjMyLDcgKzIzMyw3IEBAIHByZXByb2Nlc3NfYWdncmVmKEFnZ3JlZiAqYWdncmVmLCBQbGFu bmVySW5mbyAqcm9vdCkKIAkJQWdnSW5mbyAgICAqYWdnaW5mbyA9IG1ha2VOb2RlKEFnZ0luZm8p OwogCiAJCWFnZ2luZm8tPmZpbmFsZm5fb2lkID0gYWdnZmluYWxmbjsKLQkJYWdnaW5mby0+cmVw cmVzZW50YXRpdmVfYWdncmVmID0gYWdncmVmOworCQlhZ2dpbmZvLT5hZ2dyZWZzID0gbGlzdF9t YWtlMShhZ2dyZWYpOwogCQlhZ2dpbmZvLT5zaGFyZWFibGUgPSBzaGFyZWFibGU7CiAKIAkJYWdn bm8gPSBsaXN0X2xlbmd0aChyb290LT5hZ2dpbmZvcyk7CkBAIC0zODYsNyArMzg3LDcgQEAgZmlu ZF9jb21wYXRpYmxlX2FnZyhQbGFubmVySW5mbyAqcm9vdCwgQWdncmVmICpuZXdhZ2csCiAKIAkJ YWdnbm8rKzsKIAotCQlleGlzdGluZ1JlZiA9IGFnZ2luZm8tPnJlcHJlc2VudGF0aXZlX2FnZ3Jl ZjsKKwkJZXhpc3RpbmdSZWYgPSBsaW5pdGlhbF9ub2RlKEFnZ3JlZiwgYWdnaW5mby0+YWdncmVm cyk7CiAKIAkJLyogYWxsIG9mIHRoZSBmb2xsb3dpbmcgbXVzdCBiZSB0aGUgc2FtZSBvciBpdCdz IG5vIG1hdGNoICovCiAJCWlmIChuZXdhZ2ctPmlucHV0Y29sbGlkICE9IGV4aXN0aW5nUmVmLT5p bnB1dGNvbGxpZCB8fApAQCAtNjQ4LDcgKzY0OSw3IEBAIGdldF9hZ2dfY2xhdXNlX2Nvc3RzKFBs YW5uZXJJbmZvICpyb290LCBBZ2dTcGxpdCBhZ2dzcGxpdCwgQWdnQ2xhdXNlQ29zdHMgKmNvc3Rz CiAJZm9yZWFjaChsYywgcm9vdC0+YWdnaW5mb3MpCiAJewogCQlBZ2dJbmZvICAgICphZ2dpbmZv ID0gbGZpcnN0X25vZGUoQWdnSW5mbywgbGMpOwotCQlBZ2dyZWYJICAgKmFnZ3JlZiA9IGFnZ2lu Zm8tPnJlcHJlc2VudGF0aXZlX2FnZ3JlZjsKKwkJQWdncmVmCSAgICphZ2dyZWYgPSBsaW5pdGlh bF9ub2RlKEFnZ3JlZiwgYWdnaW5mby0+YWdncmVmcyk7CiAKIAkJLyoKIAkJICogQWRkIHRoZSBh cHByb3ByaWF0ZSBjb21wb25lbnQgZnVuY3Rpb24gZXhlY3V0aW9uIGNvc3RzIHRvCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY0V4cHIuaAppbmRleCAxZTNmMWJiZWU4Li4wNzM5YjM4OWYzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNFeHByLmgKQEAgLTI1OCw2ICsyNTgsOCBAQCB0eXBlZGVmIGVudW0gRXhwckV2YWxPcAog CUVFT1BfQUdHX1BMQUlOX1RSQU5TX0lOSVRfU1RSSUNUX0JZUkVGLAogCUVFT1BfQUdHX1BMQUlO X1RSQU5TX1NUUklDVF9CWVJFRiwKIAlFRU9QX0FHR19QTEFJTl9UUkFOU19CWVJFRiwKKwlFRU9Q X0FHR19QUkVTT1JURURfRElTVElOQ1RfU0lOR0xFLAorCUVFT1BfQUdHX1BSRVNPUlRFRF9ESVNU SU5DVF9NVUxUSSwKIAlFRU9QX0FHR19PUkRFUkVEX1RSQU5TX0RBVFVNLAogCUVFT1BfQUdHX09S REVSRURfVFJBTlNfVFVQTEUsCiAKQEAgLTY1OSw2ICs2NjEsMTcgQEAgdHlwZWRlZiBzdHJ1Y3Qg RXhwckV2YWxTdGVwCiAJCQlpbnQJCQlqdW1wbnVsbDsKIAkJfQkJCWFnZ19wbGFpbl9wZXJncm91 cF9udWxsY2hlY2s7CiAKKwkJLyogZm9yIEVFT1BfQUdHX1BSRVNPUlRFRF9ESVNUSU5DVF97U0lO R0xFLE1VTFRJfSAqLworCQlzdHJ1Y3QKKwkJeworCQkJQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFu czsKKwkJCUV4cHJDb250ZXh0ICphZ2djb250ZXh0OworCQkJaW50CQkJc2V0bm87CisJCQlpbnQJ CQl0cmFuc25vOworCQkJaW50CQkJc2V0b2ZmOworCQkJaW50CQkJanVtcGRpc3RpbmN0OworCQl9 CQkJYWdnX3ByZXNvcnRlZF9kaXN0aW5jdGNoZWNrOworCiAJCS8qIGZvciBFRU9QX0FHR19QTEFJ Tl9UUkFOU19bSU5JVF9dW1NUUklDVF9de0JZVkFMLEJZUkVGfSAqLwogCQkvKiBmb3IgRUVPUF9B R0dfT1JERVJFRF9UUkFOU197REFUVU0sVFVQTEV9ICovCiAJCXN0cnVjdApAQCAtODY4LDYgKzg4 MSwxMCBAQCBleHRlcm4gdm9pZCBFeGVjQWdnSW5pdEdyb3VwKEFnZ1N0YXRlICphZ2dzdGF0ZSwg QWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucywgQWdnUwogZXh0ZXJuIERhdHVtIEV4ZWNBZ2dUcmFu c1JlcGFyZW50KEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucywK IAkJCQkJCQkJICBEYXR1bSBuZXdWYWx1ZSwgYm9vbCBuZXdWYWx1ZUlzTnVsbCwKIAkJCQkJCQkJ ICBEYXR1bSBvbGRWYWx1ZSwgYm9vbCBvbGRWYWx1ZUlzTnVsbCk7CitleHRlcm4gYm9vbCBFeGVj RXZhbFByZU9yZGVyZWREaXN0aW5jdFNpbmdsZShBZ2dTdGF0ZSAqYWdnc3RhdGUsCisJCQkJCQkJ CQkJCSBBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zKTsKK2V4dGVybiBib29sIEV4ZWNFdmFsUHJl T3JkZXJlZERpc3RpbmN0TXVsdGkoQWdnU3RhdGUgKmFnZ3N0YXRlLAorCQkJCQkJCQkJCQlBZ2dT dGF0ZVBlclRyYW5zIHBlcnRyYW5zKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsQWdnT3JkZXJlZFRy YW5zRGF0dW0oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQkJCQkg RXhwckNvbnRleHQgKmVjb250ZXh0KTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsQWdnT3JkZXJlZFRy YW5zVHVwbGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVBZ2cuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25v ZGVBZ2cuaAppbmRleCA0ZDFiZDkyOTk5Li5kNDZmZjk4YzZkIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlQWdnLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFn Zy5oCkBAIC00OCw2ICs0OCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBBZ2dTdGF0ZVBlclRyYW5zRGF0 YQogCSAqLwogCWJvb2wJCWFnZ3NoYXJlZDsKIAorCS8qCisJICogVHJ1ZSBmb3IgT1JERVIgQlkg YW5kIERJU1RJTkNUIGFnZ3JlZ2F0ZXMgdGhhdCBhcmUgbm90CisJICogQWdncmVmLT5hZ2dwcmVz b3J0ZWQuCisJICovCisJYm9vbAkJYWdnc29ydHJlcXVpcmVkOworCiAJLyoKIAkgKiBOdW1iZXIg b2YgYWdncmVnYXRlZCBpbnB1dCBjb2x1bW5zLiAgVGhpcyBpbmNsdWRlcyBPUkRFUiBCWSBleHBy ZXNzaW9ucwogCSAqIGluIGJvdGggdGhlIHBsYWluLWFnZyBhbmQgb3JkZXJlZC1zZXQgY2FzZXMu ICBPcmRlcmVkLXNldCBkaXJlY3QgYXJncwpAQCAtMTM2LDYgKzE0Miw5IEBAIHR5cGVkZWYgc3Ry dWN0IEFnZ1N0YXRlUGVyVHJhbnNEYXRhCiAJVHVwbGVUYWJsZVNsb3QgKnNvcnRzbG90OwkvKiBj dXJyZW50IGlucHV0IHR1cGxlICovCiAJVHVwbGVUYWJsZVNsb3QgKnVuaXFzbG90OwkvKiB1c2Vk IGZvciBtdWx0aS1jb2x1bW4gRElTVElOQ1QgKi8KIAlUdXBsZURlc2MJc29ydGRlc2M7CQkvKiBk ZXNjcmlwdG9yIG9mIGlucHV0IHR1cGxlcyAqLworCURhdHVtCQlsYXN0ZGF0dW07CQkvKiB1c2Vk IGZvciBzaW5nbGUtY29sdW1uIERJU1RJTkNUICovCisJYm9vbAkJbGFzdGlzbnVsbDsJCS8qIHVz ZWQgZm9yIHNpbmdsZS1jb2x1bW4gRElTVElOQ1QgKi8KKwlib29sCQloYXNsYXN0OwkJLyogZ290 IGEgbGFzdCB2YWx1ZSBmb3IgRElTVElOQ1QgY2hlY2sgKi8KIAogCS8qCiAJICogVGhlc2UgdmFs dWVzIGFyZSB3b3JraW5nIHN0YXRlIHRoYXQgaXMgaW5pdGlhbGl6ZWQgYXQgdGhlIHN0YXJ0IG9m IGFuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGU2NTBhZjVmZjIuLjUzZWY4ODE3OTIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCkBAIC0zNTksNiArMzU5LDE0IEBAIHN0cnVjdCBQbGFubmVySW5mbwog CiAJLyogZ3JvdXBDbGF1c2UgcGF0aGtleXMsIGlmIGFueSAqLwogCUxpc3QJICAgKmdyb3VwX3Bh dGhrZXlzOworCisJLyoKKwkgKiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBncm91cF9w YXRoa2V5cyBsaXN0IHdoaWNoIGJlbG9uZyB0byB0aGUKKwkgKiBHUk9VUCBCWSBjbGF1c2UuICBB ZGRpdGlvbmFsIG9uZXMgYmVsb25nIHRvIE9SREVSIEJZIC8gRElTVElOQ1QKKwkgKiBhZ2dyZWdh dGVzLgorCSAqLworCWludAkJCW51bV9ncm91cGJ5X3BhdGhrZXlzOworCiAJLyogcGF0aGtleXMg b2YgYm90dG9tIHdpbmRvdywgaWYgYW55ICovCiAJTGlzdAkgICAqd2luZG93X3BhdGhrZXlzOwog CS8qIGRpc3RpbmN0Q2xhdXNlIHBhdGhrZXlzLCBpZiBhbnkgKi8KQEAgLTMxMjYsMTIgKzMxMzQs MTIgQEAgdHlwZWRlZiBzdHJ1Y3QgQWdnSW5mbwogCU5vZGVUYWcJCXR5cGU7CiAKIAkvKgotCSAq IExpbmsgdG8gYW4gQWdncmVmIGV4cHIgdGhpcyBzdGF0ZSB2YWx1ZSBpcyBmb3IuCisJICogTGlz dCBvZiBBZ2dyZWYgZXhwcnMgdGhhdCB0aGlzIHN0YXRlIHZhbHVlIGlzIGZvci4KIAkgKgotCSAq IFRoZXJlIGNhbiBiZSBtdWx0aXBsZSBpZGVudGljYWwgQWdncmVmJ3Mgc2hhcmluZyB0aGUgc2Ft ZSBwZXItYWdnLiBUaGlzCi0JICogcG9pbnRzIHRvIHRoZSBmaXJzdCBvbmUgb2YgdGhlbS4KKwkg KiBUaGVyZSB3aWxsIGFsd2F5cyBiZSBhdCBsZWFzdCBvbmUsIGJ1dCB0aGVyZSBjYW4gYmUgbXVs dGlwbGUgaWRlbnRpY2FsCisJICogQWdncmVmJ3Mgc2hhcmluZyB0aGUgc2FtZSBwZXItYWdnLgog CSAqLwotCUFnZ3JlZgkgICAqcmVwcmVzZW50YXRpdmVfYWdncmVmOworCUxpc3QJICAgKmFnZ3Jl ZnM7CiAKIAkvKiBUcmFuc2l0aW9uIHN0YXRlIG51bWJlciBmb3IgdGhpcyBhZ2dyZWdhdGUgKi8K IAlpbnQJCQl0cmFuc25vOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCAxZmMyZmJmZmEzLi44NTRh ZTRiYTVkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMzU3LDYgKzM1NywxMCBAQCB0eXBlZGVm IHN0cnVjdCBQYXJhbQogICogcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCByZXByZXNl bnRpbmcgdGhlIHBhcnRpYWwtYWdncmVnYXRlCiAgKiB0cmFuc2l0aW9uIHZhbHVlcy4KICAqCisg KiBhZ2dwcmVzb3J0ZWQgaXMgc2V0IGJ5IHRoZSBxdWVyeSBwbGFubmVyIGZvciBPUkRFUiBCWSBh bmQgRElTVElOQ1QKKyAqIGFnZ3JlZ2F0ZXMgd2hlcmUgdGhlIHBsYW4gY2hvc2VuIHByb3ZpZGVz IHByZXNvcnRlZCBpbnB1dCBmb3IgdGhpcworICogYWdncmVnYXRlIGR1cmluZyBleGVjdXRpb24K KyAqCiAgKiBhZ2dzcGxpdCBpbmRpY2F0ZXMgdGhlIGV4cGVjdGVkIHBhcnRpYWwtYWdncmVnYXRp b24gbW9kZSBmb3IgdGhlIEFnZ3JlZidzCiAgKiBwYXJlbnQgcGxhbiBub2RlLiAgSXQncyBhbHdh eXMgc2V0IHRvIEFHR1NQTElUX1NJTVBMRSBpbiB0aGUgcGFyc2VyLCBidXQKICAqIHRoZSBwbGFu bmVyIG1pZ2h0IGNoYW5nZSBpdCB0byBzb21ldGhpbmcgZWxzZS4gIFdlIHVzZSB0aGlzIG1haW5s eSBhcwpAQCAtNDIyLDYgKzQyNiw5IEBAIHR5cGVkZWYgc3RydWN0IEFnZ3JlZgogCS8qIGFnZ3Jl Z2F0ZSBraW5kIChzZWUgcGdfYWdncmVnYXRlLmgpICovCiAJY2hhcgkJYWdna2luZDsKIAorCS8q IGFnZ3JlZ2F0ZSBpbnB1dCBhbHJlYWR5IHNvcnRlZCAqLworCWJvb2wJCWFnZ3ByZXNvcnRlZCBw Z19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsKKwogCS8qID4gMCBpZiBhZ2cgYmVsb25ncyB0byBv dXRlciBxdWVyeSAqLwogCUluZGV4CQlhZ2dsZXZlbHN1cDsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaApp bmRleCA1NGFiNzA5YzY3Li5kMTFjZGFjN2Y4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGF0aHMuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaApAQCAtMjA4 LDcgKzIwOCw4IEBAIGV4dGVybiBpbnQJZ3JvdXBfa2V5c19yZW9yZGVyX2J5X3BhdGhrZXlzKExp c3QgKnBhdGhrZXlzLAogCQkJCQkJCQkJCSAgIExpc3QgKipncm91cF9jbGF1c2VzKTsKIGV4dGVy biBMaXN0ICpnZXRfdXNlZnVsX2dyb3VwX2tleXNfb3JkZXJpbmdzKFBsYW5uZXJJbmZvICpyb290 LCBkb3VibGUgbnJvd3MsCiAJCQkJCQkJCQkJCSBMaXN0ICpwYXRoX3BhdGhrZXlzLAotCQkJCQkJ CQkJCQkgTGlzdCAqZ3JvdXBfcGF0aGtleXMsIExpc3QgKmdyb3VwX2NsYXVzZXMpOworCQkJCQkJ CQkJCQkgTGlzdCAqZ3JvdXBfcGF0aGtleXMsIExpc3QgKmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJ CQkJCSBMaXN0ICphZ2dyZWdhdGVfcGF0aGtleXMpOwogZXh0ZXJuIFBhdGggKmdldF9jaGVhcGVz dF9wYXRoX2Zvcl9wYXRoa2V5cyhMaXN0ICpwYXRocywgTGlzdCAqcGF0aGtleXMsCiAJCQkJCQkJ CQkJCVJlbGlkcyByZXF1aXJlZF9vdXRlciwKIAkJCQkJCQkJCQkJQ29zdFNlbGVjdG9yIGNvc3Rf Y3JpdGVyaW9uLApAQCAtMjU1LDYgKzI1Niw3IEBAIGV4dGVybiBMaXN0ICp0cnVuY2F0ZV91c2Vs ZXNzX3BhdGhrZXlzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJICAgUmVsT3B0SW5mbyAq cmVsLAogCQkJCQkJCQkJICAgTGlzdCAqcGF0aGtleXMpOwogZXh0ZXJuIGJvb2wgaGFzX3VzZWZ1 bF9wYXRoa2V5cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKTsKK2V4dGVybiBM aXN0ICphcHBlbmRfcGF0aGtleXMoTGlzdCAqdGFyZ2V0LCBMaXN0ICpzb3VyY2UpOwogZXh0ZXJu IFBhdGhLZXkgKm1ha2VfY2Fub25pY2FsX3BhdGhrZXkoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJ CQkJCQkgICBFcXVpdmFsZW5jZUNsYXNzICplY2xhc3MsIE9pZCBvcGZhbWlseSwKIAkJCQkJCQkJ CSAgIGludCBzdHJhdGVneSwgYm9vbCBudWxsc19maXJzdCk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9hZ2dyZWdhdGVzLm91dAppbmRleCA2MDEwNDdmYTNkLi5lMTQxOTE5NjAwIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKQEAgLTEzOTIsNiArMTM5Miw4NCBA QCBFUlJPUjogIGNvbHVtbiAidDEuZjEiIG11c3QgYXBwZWFyIGluIHRoZSBHUk9VUCBCWSBjbGF1 c2Ugb3IgYmUgdXNlZCBpbiBhbiBhZ2dyZQogTElORSAxOiBzZWxlY3QgdDEuZjEgZnJvbSB0MSBs ZWZ0IGpvaW4gdDIgdXNpbmcgKGYxKSBncm91cCBieSBmMTsKICAgICAgICAgICAgICAgIF4KIGRy b3AgdGFibGUgdDEsIHQyOworLS0KKy0tIFRlc3QgcGxhbm5lcidzIHNlbGVjdGlvbiBvZiBwYXRo a2V5cyBmb3IgT1JERVIgQlkgYWdncmVnYXRlcworLS0KKy0tIEVuc3VyZSB3ZSBvcmRlciBieSBm b3VyLiAgVGhpcyBzdWl0cyB0aGUgbW9zdCBhZ2dyZWdhdGUgZnVuY3Rpb25zLgorZXhwbGFpbiAo Y29zdHMgb2ZmKQorc2VsZWN0IHN1bSh0d28gb3JkZXIgYnkgdHdvKSxtYXgoZm91ciBvcmRlciBi eSBmb3VyKSwgbWluKGZvdXIgb3JkZXIgYnkgZm91cikKK2Zyb20gdGVuazE7CisgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QWdncmVnYXRlCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGZvdXIKKyAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiB0ZW5rMQorKDQgcm93cykKKworLS0gRW5zdXJlIHdlIG9yZGVyIGJ5 IHR3by4gIEl0J3MgYSB0aWUgYmV0d2VlbiBvcmRlcmluZyBieSB0d28gYW5kIGZvdXIgYnV0Cist LSB3ZSB0aWVicmVhayBvbiB0aGUgYWdncmVnYXRlJ3MgcG9zaXRpb24uCitleHBsYWluIChjb3N0 cyBvZmYpCitzZWxlY3QKKyAgc3VtKHR3byBvcmRlciBieSB0d28pLCBtYXgoZm91ciBvcmRlciBi eSBmb3VyKSwKKyAgbWluKGZvdXIgb3JkZXIgYnkgZm91ciksIG1heCh0d28gb3JkZXIgYnkgdHdv KQorZnJvbSB0ZW5rMTsKKyAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTb3J0CisgICAgICAg ICBTb3J0IEtleTogdHdvCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdGVuazEKKyg0IHJvd3Mp CisKKy0tIFNpbWlsYXIgdG8gYWJvdmUsIGJ1dCB0aWVicmVhayBvbiBvcmRlcmluZyBieSBmb3Vy CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QKKyAgbWF4KGZvdXIgb3JkZXIgYnkgZm91ciks IHN1bSh0d28gb3JkZXIgYnkgdHdvKSwKKyAgbWluKGZvdXIgb3JkZXIgYnkgZm91ciksIG1heCh0 d28gb3JkZXIgYnkgdHdvKQorZnJvbSB0ZW5rMTsKKyAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogZm91cgorICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHRlbmsxCisoNCByb3dzKQorCistLSBFbnN1cmUgdGhpcyBvbmUgb3JkZXJzIGJ5IHRlbiBzaW5j ZSB0aGVyZSBhcmUgMyBhZ2dyZWdhdGVzIHRoYXQgcmVxdWlyZSB0ZW4KKy0tIHZzIHR3byB0aGF0 IHN1aXQgdHdvIGFuZCBmb3VyLgorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0CisgIG1heChm b3VyIG9yZGVyIGJ5IGZvdXIpLCBzdW0odHdvIG9yZGVyIGJ5IHR3byksCisgIG1pbihmb3VyIG9y ZGVyIGJ5IGZvdXIpLCBtYXgodHdvIG9yZGVyIGJ5IHR3byksCisgIHN1bSh0ZW4gb3JkZXIgYnkg dGVuKSwgbWluKHRlbiBvcmRlciBieSB0ZW4pLCBtYXgodGVuIG9yZGVyIGJ5IHRlbikKK2Zyb20g dGVuazE7CisgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBL ZXk6IHRlbgorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsxCisoNCByb3dzKQorCistLSBU cnkgYSBjYXNlIGludm9sdmluZyBhIEdST1VQIEJZIGNsYXVzZSB3aGVyZSB0aGUgR1JPVVAgQlkg Y29sdW1uIGlzIGFsc28KKy0tIHBhcnQgb2YgYW4gYWdncmVnYXRlJ3MgT1JERVIgQlkgY2xhdXNl LiAgV2Ugd2FudCBhIHNvcnQgb3JkZXIgdGhhdCB3b3JrcworLS0gZm9yIHRoZSBHUk9VUCBCWSBh bmQgZmlyc3QgYW5kIGxhc3QgYWdncmVnYXRlLgorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0 CisgIHN1bSh1bmlxdWUxIG9yZGVyIGJ5IHRlbiwgdHdvKSwgc3VtKHVuaXF1ZTEgb3JkZXIgYnkg Zm91ciksCisgIHN1bSh1bmlxdWUxIG9yZGVyIGJ5IHR3bywgZm91cikKK2Zyb20gdGVuazEKK2dy b3VwIGJ5IHRlbjsKKyAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBHcm91cEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5 OiB0ZW4KKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogdGVuLCB0d28sIGZvdXIKKyAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0ZW5rMQorKDUgcm93cykKKwogLS0KIC0tIFRlc3QgY29t YmluYXRpb25zIG9mIERJU1RJTkNUIGFuZC9vciBPUkRFUiBCWQogLS0KQEAgLTIyNjMsOCArMjM0 MSw4IEBAIE5PVElDRTogIGF2Z190cmFuc2ZuIGNhbGxlZCB3aXRoIDMKIC0tIHNob3VsZG4ndCBz aGFyZSBzdGF0ZXMgZHVlIHRvIHRoZSBkaXN0aW5jdG5lc3Mgbm90IG1hdGNoaW5nLgogc2VsZWN0 IG15X2F2ZyhkaXN0aW5jdCBvbmUpLG15X3N1bShvbmUpIGZyb20gKHZhbHVlcygxKSwoMykpIHQo b25lKTsKIE5PVElDRTogIGF2Z190cmFuc2ZuIGNhbGxlZCB3aXRoIDEKLU5PVElDRTogIGF2Z190 cmFuc2ZuIGNhbGxlZCB3aXRoIDMKIE5PVElDRTogIGF2Z190cmFuc2ZuIGNhbGxlZCB3aXRoIDEK K05PVElDRTogIGF2Z190cmFuc2ZuIGNhbGxlZCB3aXRoIDMKIE5PVElDRTogIGF2Z190cmFuc2Zu IGNhbGxlZCB3aXRoIDMKICBteV9hdmcgfCBteV9zdW0gCiAtLS0tLS0tLSstLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5vdXQKaW5k ZXggYTA4YTM4MjVmZi4uNGI0MWNjZjFhYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUub3V0CkBAIC0zNjcsMTcgKzM2NywxNyBAQCBTRUxF Q1QgYywgc3VtKGIgb3JkZXIgYnkgYSkgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBjIE9SREVSIEJZ IDEsIDI7CiAgICAgICAgICAtPiAgR3JvdXBBZ2dyZWdhdGUKICAgICAgICAgICAgICAgIEdyb3Vw IEtleTogcGFnZ190YWIuYwogICAgICAgICAgICAgICAgLT4gIFNvcnQKLSAgICAgICAgICAgICAg ICAgICAgIFNvcnQgS2V5OiBwYWdnX3RhYi5jCisgICAgICAgICAgICAgICAgICAgICBTb3J0IEtl eTogcGFnZ190YWIuYywgcGFnZ190YWIuYQogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHBhZ2dfdGFiX3AxIHBhZ2dfdGFiCiAgICAgICAgICAtPiAgR3JvdXBBZ2dyZWdhdGUK ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWJfMS5jCiAgICAgICAgICAgICAgICAt PiAgU29ydAotICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHBhZ2dfdGFiXzEuYworICAg ICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHBhZ2dfdGFiXzEuYywgcGFnZ190YWJfMS5hCiAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWJfcDIgcGFnZ190YWJf MQogICAgICAgICAgLT4gIEdyb3VwQWdncmVnYXRlCiAgICAgICAgICAgICAgICBHcm91cCBLZXk6 IHBhZ2dfdGFiXzIuYwogICAgICAgICAgICAgICAgLT4gIFNvcnQKLSAgICAgICAgICAgICAgICAg ICAgIFNvcnQgS2V5OiBwYWdnX3RhYl8yLmMKKyAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5 OiBwYWdnX3RhYl8yLmMsIHBhZ2dfdGFiXzIuYQogICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHBhZ2dfdGFiX3AzIHBhZ2dfdGFiXzIKICgxOCByb3dzKQogCkBAIC05NDgsMzQg Kzk0OCwzNiBAQCBTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciBUTyAyOwogLS0g aXMgbm90IHBhcnRpYWwgYWdnIHNhZmUuCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgYSwg c3VtKGIpLCBhcnJheV9hZ2coZGlzdGluY3QgYyksIGNvdW50KCopIEZST00gcGFnZ190YWJfbWwg R1JPVVAgQlkgYSBIQVZJTkcgYXZnKGIpIDwgMyBPUkRFUiBCWSAxLCAyLCAzOwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU29y dAotICAgU29ydCBLZXk6IHBhZ2dfdGFiX21sLmEsIChzdW0ocGFnZ190YWJfbWwuYikpLCAoYXJy YXlfYWdnKERJU1RJTkNUIHBhZ2dfdGFiX21sLmMpKQotICAgLT4gIEFwcGVuZAotICAgICAgICAg LT4gIEdyb3VwQWdncmVnYXRlCi0gICAgICAgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiX21s LmEKLSAgICAgICAgICAgICAgIEZpbHRlcjogKGF2ZyhwYWdnX3RhYl9tbC5iKSA8ICczJzo6bnVt ZXJpYykKLSAgICAgICAgICAgICAgIC0+ICBTb3J0Ci0gICAgICAgICAgICAgICAgICAgICBTb3J0 IEtleTogcGFnZ190YWJfbWwuYQotICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHBhZ2dfdGFiX21sX3AxIHBhZ2dfdGFiX21sCi0gICAgICAgICAtPiAgR3JvdXBBZ2dyZWdhdGUK LSAgICAgICAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWJfbWxfMi5hCi0gICAgICAgICAgICAg ICBGaWx0ZXI6IChhdmcocGFnZ190YWJfbWxfMi5iKSA8ICczJzo6bnVtZXJpYykKLSAgICAgICAg ICAgICAgIC0+ICBTb3J0Ci0gICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogcGFnZ190YWJf bWxfMi5hCi0gICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWJfbWxfcDJfczEgcGFnZ190YWJfbWxf MgotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiX21s X3AyX3MyIHBhZ2dfdGFiX21sXzMKLSAgICAgICAgIC0+ICBHcm91cEFnZ3JlZ2F0ZQotICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYl9tbF81LmEKLSAgICAgICAgICAgICAgIEZpbHRl cjogKGF2ZyhwYWdnX3RhYl9tbF81LmIpIDwgJzMnOjpudW1lcmljKQotICAgICAgICAgICAgICAg LT4gIFNvcnQKLSAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBwYWdnX3RhYl9tbF81LmEK LSAgICAgICAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYl9tbF9wM19zMSBwYWdnX3RhYl9tbF81Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWJfbWxfcDNfczIg cGFnZ190YWJfbWxfNgotKDI1IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBHYXRoZXIgTWVyZ2UK KyAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBw YWdnX3RhYl9tbC5hLCAoc3VtKHBhZ2dfdGFiX21sLmIpKSwgKGFycmF5X2FnZyhESVNUSU5DVCBw YWdnX3RhYl9tbC5jKSkKKyAgICAgICAgIC0+ICBQYXJhbGxlbCBBcHBlbmQKKyAgICAgICAgICAg ICAgIC0+ICBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBw YWdnX3RhYl9tbC5hCisgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChhdmcocGFnZ190YWJf bWwuYikgPCAnMyc6Om51bWVyaWMpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHBhZ2dfdGFiX21sLmEsIHBhZ2dfdGFi X21sLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3Rh Yl9tbF9wMSBwYWdnX3RhYl9tbAorICAgICAgICAgICAgICAgLT4gIEdyb3VwQWdncmVnYXRlCisg ICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiX21sXzUuYQorICAgICAgICAg ICAgICAgICAgICAgRmlsdGVyOiAoYXZnKHBhZ2dfdGFiX21sXzUuYikgPCAnMyc6Om51bWVyaWMp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgU29ydCBLZXk6IHBhZ2dfdGFiX21sXzUuYSwgcGFnZ190YWJfbWxfNS5jCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWJfbWxfcDNfczEgcGFnZ190YWJfbWxfNQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiX21s X3AzX3MyIHBhZ2dfdGFiX21sXzYKKyAgICAgICAgICAgICAgIC0+ICBHcm91cEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYl9tbF8yLmEKKyAgICAgICAg ICAgICAgICAgICAgIEZpbHRlcjogKGF2ZyhwYWdnX3RhYl9tbF8yLmIpIDwgJzMnOjpudW1lcmlj KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNvcnQgS2V5OiBwYWdnX3RhYl9tbF8yLmEsIHBhZ2dfdGFiX21sXzIuYworICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiX21sX3AyX3MxIHBhZ2dfdGFiX21sXzIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYl9t bF9wMl9zMiBwYWdnX3RhYl9tbF8zCisoMjcgcm93cykKIAogU0VMRUNUIGEsIHN1bShiKSwgYXJy YXlfYWdnKGRpc3RpbmN0IGMpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiX21sIEdST1VQIEJZIGEg SEFWSU5HIGF2ZyhiKSA8IDMgT1JERVIgQlkgMSwgMiwgMzsKICBhICB8IHN1bSAgfCAgYXJyYXlf YWdnICB8IGNvdW50IApAQCAtOTk0LDMyICs5OTYsMzQgQEAgU0VMRUNUIGEsIHN1bShiKSwgYXJy YXlfYWdnKGRpc3RpbmN0IGMpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiX21sIEdST1VQIEJZIGEg SEEKIC0tIFdpdGhvdXQgT1JERVIgQlkgY2xhdXNlLCB0byB0ZXN0IEdhdGhlciBhdCB0b3AtbW9z dCBwYXRoCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgYSwgc3VtKGIpLCBhcnJheV9hZ2co ZGlzdGluY3QgYyksIGNvdW50KCopIEZST00gcGFnZ190YWJfbWwgR1JPVVAgQlkgYSBIQVZJTkcg YXZnKGIpIDwgMzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gQXBwZW5kCi0gICAtPiAg R3JvdXBBZ2dyZWdhdGUKLSAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWJfbWwuYQotICAgICAg ICAgRmlsdGVyOiAoYXZnKHBhZ2dfdGFiX21sLmIpIDwgJzMnOjpudW1lcmljKQotICAgICAgICAg LT4gIFNvcnQKLSAgICAgICAgICAgICAgIFNvcnQgS2V5OiBwYWdnX3RhYl9tbC5hCi0gICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWJfbWxfcDEgcGFnZ190YWJfbWwKLSAgIC0+ ICBHcm91cEFnZ3JlZ2F0ZQotICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYl9tbF8yLmEKLSAg ICAgICAgIEZpbHRlcjogKGF2ZyhwYWdnX3RhYl9tbF8yLmIpIDwgJzMnOjpudW1lcmljKQotICAg ICAgICAgLT4gIFNvcnQKLSAgICAgICAgICAgICAgIFNvcnQgS2V5OiBwYWdnX3RhYl9tbF8yLmEK LSAgICAgICAgICAgICAgIC0+ICBBcHBlbmQKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwYWdnX3RhYl9tbF9wMl9zMSBwYWdnX3RhYl9tbF8yCi0gICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWJfbWxfcDJfczIgcGFnZ190YWJfbWxfMwotICAg LT4gIEdyb3VwQWdncmVnYXRlCi0gICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiX21sXzUuYQot ICAgICAgICAgRmlsdGVyOiAoYXZnKHBhZ2dfdGFiX21sXzUuYikgPCAnMyc6Om51bWVyaWMpCi0g ICAgICAgICAtPiAgU29ydAotICAgICAgICAgICAgICAgU29ydCBLZXk6IHBhZ2dfdGFiX21sXzUu YQotICAgICAgICAgICAgICAgLT4gIEFwcGVuZAotICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHBhZ2dfdGFiX21sX3AzX3MxIHBhZ2dfdGFiX21sXzUKLSAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYl9tbF9wM19zMiBwYWdnX3RhYl9tbF82Ci0o MjMgcm93cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgR2F0aGVy CisgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgIC0+ICBQYXJhbGxlbCBBcHBlbmQKKyAgICAgICAg IC0+ICBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYl9t bC5hCisgICAgICAgICAgICAgICBGaWx0ZXI6IChhdmcocGFnZ190YWJfbWwuYikgPCAnMyc6Om51 bWVyaWMpCisgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgU29y dCBLZXk6IHBhZ2dfdGFiX21sLmEsIHBhZ2dfdGFiX21sLmMKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYl9tbF9wMSBwYWdnX3RhYl9tbAorICAgICAgICAgLT4g IEdyb3VwQWdncmVnYXRlCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiX21sXzUu YQorICAgICAgICAgICAgICAgRmlsdGVyOiAoYXZnKHBhZ2dfdGFiX21sXzUuYikgPCAnMyc6Om51 bWVyaWMpCisgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgU29y dCBLZXk6IHBhZ2dfdGFiX21sXzUuYSwgcGFnZ190YWJfbWxfNS5jCisgICAgICAgICAgICAgICAg ICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcGFnZ190YWJfbWxfcDNfczEgcGFnZ190YWJfbWxfNQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiX21sX3AzX3MyIHBhZ2dfdGFiX21sXzYKKyAg ICAgICAgIC0+ICBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBwYWdn X3RhYl9tbF8yLmEKKyAgICAgICAgICAgICAgIEZpbHRlcjogKGF2ZyhwYWdnX3RhYl9tbF8yLmIp IDwgJzMnOjpudW1lcmljKQorICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAg ICAgICAgIFNvcnQgS2V5OiBwYWdnX3RhYl9tbF8yLmEsIHBhZ2dfdGFiX21sXzIuYworICAgICAg ICAgICAgICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBhZ2dfdGFiX21sX3AyX3MxIHBhZ2dfdGFiX21sXzIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYl9tbF9wMl9zMiBwYWdnX3Rh Yl9tbF8zCisoMjUgcm93cykKIAogLS0gRnVsbCBhZ2dyZWdhdGlvbiBhdCBsZXZlbCAxIGFzIEdS T1VQIEJZIGNsYXVzZSBtYXRjaGVzIHdpdGggUEFSVElUSU9OIEtFWQogLS0gZm9yIGxldmVsIDEg b25seS4gRm9yIHN1YnBhcnRpdGlvbnMsIEdST1VQIEJZIGNsYXVzZSBkb2VzIG5vdCBtYXRjaCB3 aXRoCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb24ub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uLm91dAppbmRleCBiZGQwOTY5YTUwLi43 NDhkZmRiMDRkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb24u b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbi5vdXQKQEAgLTg2Niwx NCArODY2LDE0IEBAIEZST00KIAkoVkFMVUVTIChOVUxMKSwgKDMpLCAoMSksIChOVUxMKSwgKE5V TEwpLCAoNSksICgyKSwgKDQpLCAoTlVMTCkpIGZvbyhiYXIpOwogICBqc29uX2FycmF5YWdnICB8 ICBqc29uX2FycmF5YWdnICB8ICBqc29uX2FycmF5YWdnICB8ICBqc29uX2FycmF5YWdnICB8ICAg ICAgICAgICAgICBqc29uX2FycmF5YWdnICAgICAgICAgICAgICB8ICAgICAgICAgICAgICBqc29u X2FycmF5YWdnICAgICAgICAgICAgICB8ICBqc29uX2FycmF5YWdnICB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbl9hcnJheWFnZyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGpzb25f YXJyYXlhZ2cgfCAgICAgICAgICAgIGpzb25fYXJyYXlhZ2cgICAgICAgICAgICAgCiAtLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLSBbMywgMSwgNSwgMiwgNF0gfCBbMywgMSwgNSwgMiwgNF0gfCBbMywgMSwgNSwgMiwgNF0g fCBbMywgMSwgNSwgMiwgNF0gfCBbbnVsbCwgMywgMSwgbnVsbCwgbnVsbCwgNSwgMiwgNCwgbnVs bF0gfCBbbnVsbCwgMywgMSwgbnVsbCwgbnVsbCwgNSwgMiwgNCwgbnVsbF0gfCBbeyJiYXIiOm51 bGx9LCArfCBbeyJiYXIiOiBudWxsfSwgeyJiYXIiOiAzfSwgeyJiYXIiOiAxfSwgeyJiYXIiOiBu dWxsfSwgeyJiYXIiOiBudWxsfSwgeyJiYXIiOiA1fSwgeyJiYXIiOiAyfSwgeyJiYXIiOiA0fSwg eyJiYXIiOiBudWxsfV0gfCBbeyJiYXIiOjN9LCAgK3wgW3siYmFyIjogM30sIHsiYmFyIjogNH0s IHsiYmFyIjogNX1dCi0gICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IHsiYmFyIjozfSwgICAgK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHsiYmFyIjo0fSwgICt8IAotICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB7ImJhciI6MX0sICAgICt8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICB7ImJhciI6NX1dICAgfCAKKyBbMSwgMiwgMywgNCwgNV0gfCBbMSwgMiwgMywgNCwgNV0gfCBb MSwgMiwgMywgNCwgNV0gfCBbMSwgMiwgMywgNCwgNV0gfCBbMSwgMiwgMywgNCwgNSwgbnVsbCwg bnVsbCwgbnVsbCwgbnVsbF0gfCBbMSwgMiwgMywgNCwgNSwgbnVsbCwgbnVsbCwgbnVsbCwgbnVs bF0gfCBbeyJiYXIiOjF9LCAgICArfCBbeyJiYXIiOiAxfSwgeyJiYXIiOiAyfSwgeyJiYXIiOiAz fSwgeyJiYXIiOiA0fSwgeyJiYXIiOiA1fSwgeyJiYXIiOiBudWxsfSwgeyJiYXIiOiBudWxsfSwg eyJiYXIiOiBudWxsfSwgeyJiYXIiOiBudWxsfV0gfCBbeyJiYXIiOjN9LCAgK3wgW3siYmFyIjog M30sIHsiYmFyIjogNH0sIHsiYmFyIjogNX1dCisgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIHsiYmFyIjoyfSwgICAgK3wgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHsiYmFyIjo0fSwgICt8 IAorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB7ImJhciI6M30s ICAgICt8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICB7ImJhciI6NX1dICAgfCAKKyAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgeyJiYXIiOjR9LCAgICArfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgIHwgCisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHsiYmFy Ijo1fSwgICAgK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IAorICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICB7ImJhciI6bnVsbH0sICt8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgfCAKICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg eyJiYXIiOm51bGx9LCArfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgCiAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHsiYmFyIjpudWxsfSwgK3wgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICB8IAotICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICB7ImJhciI6NX0sICAgICt8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAKLSAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgeyJiYXIiOjJ9LCAgICArfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgIHwgCi0gICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIHsiYmFyIjo0fSwgICAgK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IAogICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB7ImJhciI6bnVsbH1dICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgfCAKICgxIHJvdykKIApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC90dXBsZXNvcnQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC90dXBsZXNvcnQub3V0CmluZGV4IDQxOGYyOTZhM2YuLmVmNzk1NzRlY2YgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHVwbGVzb3J0Lm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3R1cGxlc29ydC5vdXQKQEAgLTYyMiwxNSArNjIyLDE3IEBAIEVY UExBSU4gKENPU1RTIE9GRikgOnFyeTsKICAgICAgICAgIC0+ICBHcm91cEFnZ3JlZ2F0ZQogICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiBhLmNvbDEyCiAgICAgICAgICAgICAgICBGaWx0ZXI6IChj b3VudCgqKSA+IDEpCi0gICAgICAgICAgICAgICAtPiAgTWVyZ2UgSm9pbgotICAgICAgICAgICAg ICAgICAgICAgTWVyZ2UgQ29uZDogKGEuY29sMTIgPSBiLmNvbDEyKQotICAgICAgICAgICAgICAg ICAgICAgLT4gIFNvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBhLmNv bDEyIERFU0MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0ZXN0 X21hcmtfcmVzdG9yZSBhCi0gICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IGIuY29sMTIgREVTQwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlc3RfbWFya19yZXN0b3JlIGIKLSgxNCByb3dz KQorICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5 OiBhLmNvbDEyIERFU0MsIGEuY29sMQorICAgICAgICAgICAgICAgICAgICAgLT4gIE1lcmdlIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lcmdlIENvbmQ6IChhLmNvbDEyID0gYi5j b2wxMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogYS5jb2wxMgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlc3RfbWFya19yZXN0b3JlIGEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTb3J0IEtleTogYi5jb2wxMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHRlc3RfbWFya19yZXN0b3JlIGIKKygxNiByb3dzKQogCiA6cXJ5 OwogIGNvbDEyIHwgY291bnQgfCBjb3VudCB8IGNvdW50IHwgY291bnQgfCBjb3VudCAKQEAgLTY1 OCwxNSArNjYwLDE3IEBAIEVYUExBSU4gKENPU1RTIE9GRikgOnFyeTsKICAgICAgICAgIC0+ICBH cm91cEFnZ3JlZ2F0ZQogICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBhLmNvbDEyCiAgICAgICAg ICAgICAgICBGaWx0ZXI6IChjb3VudCgqKSA+IDEpCi0gICAgICAgICAgICAgICAtPiAgTWVyZ2Ug Sm9pbgotICAgICAgICAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKGEuY29sMTIgPSBiLmNvbDEy KQotICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNvcnQgS2V5OiBhLmNvbDEyIERFU0MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiB0ZXN0X21hcmtfcmVzdG9yZSBhCi0gICAgICAgICAgICAgICAgICAgICAt PiAgU29ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IGIuY29sMTIgREVT QwotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlc3RfbWFya19y ZXN0b3JlIGIKLSgxNCByb3dzKQorICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAg ICAgICAgICAgIFNvcnQgS2V5OiBhLmNvbDEyIERFU0MsIGEuY29sMQorICAgICAgICAgICAgICAg ICAgICAgLT4gIE1lcmdlIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lcmdlIENv bmQ6IChhLmNvbDEyID0gYi5jb2wxMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT b3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogYS5jb2wxMgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlc3RfbWFy a19yZXN0b3JlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogYi5jb2wxMgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlc3RfbWFya19yZXN0b3JlIGIK KygxNiByb3dzKQogCiA6cXJ5OwogIGNvbDEyIHwgY291bnQgfCBjb3VudCB8IGNvdW50IHwgY291 bnQgfCBjb3VudCAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwKaW5kZXggYzZlMGQ3YmEy Yi4uZDcxOWNkMTgzNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRl cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwKQEAgLTUwMyw2 ICs1MDMsNDkgQEAgc2VsZWN0IHQxLmYxIGZyb20gdDEgbGVmdCBqb2luIHQyIHVzaW5nIChmMSkg Z3JvdXAgYnkgZjE7CiAKIGRyb3AgdGFibGUgdDEsIHQyOwogCistLQorLS0gVGVzdCBwbGFubmVy J3Mgc2VsZWN0aW9uIG9mIHBhdGhrZXlzIGZvciBPUkRFUiBCWSBhZ2dyZWdhdGVzCistLQorCist LSBFbnN1cmUgd2Ugb3JkZXIgYnkgZm91ci4gIFRoaXMgc3VpdHMgdGhlIG1vc3QgYWdncmVnYXRl IGZ1bmN0aW9ucy4KK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCBzdW0odHdvIG9yZGVyIGJ5 IHR3byksbWF4KGZvdXIgb3JkZXIgYnkgZm91ciksIG1pbihmb3VyIG9yZGVyIGJ5IGZvdXIpCitm cm9tIHRlbmsxOworCistLSBFbnN1cmUgd2Ugb3JkZXIgYnkgdHdvLiAgSXQncyBhIHRpZSBiZXR3 ZWVuIG9yZGVyaW5nIGJ5IHR3byBhbmQgZm91ciBidXQKKy0tIHdlIHRpZWJyZWFrIG9uIHRoZSBh Z2dyZWdhdGUncyBwb3NpdGlvbi4KK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdAorICBzdW0o dHdvIG9yZGVyIGJ5IHR3byksIG1heChmb3VyIG9yZGVyIGJ5IGZvdXIpLAorICBtaW4oZm91ciBv cmRlciBieSBmb3VyKSwgbWF4KHR3byBvcmRlciBieSB0d28pCitmcm9tIHRlbmsxOworCistLSBT aW1pbGFyIHRvIGFib3ZlLCBidXQgdGllYnJlYWsgb24gb3JkZXJpbmcgYnkgZm91cgorZXhwbGFp biAoY29zdHMgb2ZmKQorc2VsZWN0CisgIG1heChmb3VyIG9yZGVyIGJ5IGZvdXIpLCBzdW0odHdv IG9yZGVyIGJ5IHR3byksCisgIG1pbihmb3VyIG9yZGVyIGJ5IGZvdXIpLCBtYXgodHdvIG9yZGVy IGJ5IHR3bykKK2Zyb20gdGVuazE7CisKKy0tIEVuc3VyZSB0aGlzIG9uZSBvcmRlcnMgYnkgdGVu IHNpbmNlIHRoZXJlIGFyZSAzIGFnZ3JlZ2F0ZXMgdGhhdCByZXF1aXJlIHRlbgorLS0gdnMgdHdv IHRoYXQgc3VpdCB0d28gYW5kIGZvdXIuCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QKKyAg bWF4KGZvdXIgb3JkZXIgYnkgZm91ciksIHN1bSh0d28gb3JkZXIgYnkgdHdvKSwKKyAgbWluKGZv dXIgb3JkZXIgYnkgZm91ciksIG1heCh0d28gb3JkZXIgYnkgdHdvKSwKKyAgc3VtKHRlbiBvcmRl ciBieSB0ZW4pLCBtaW4odGVuIG9yZGVyIGJ5IHRlbiksIG1heCh0ZW4gb3JkZXIgYnkgdGVuKQor ZnJvbSB0ZW5rMTsKKworLS0gVHJ5IGEgY2FzZSBpbnZvbHZpbmcgYSBHUk9VUCBCWSBjbGF1c2Ug d2hlcmUgdGhlIEdST1VQIEJZIGNvbHVtbiBpcyBhbHNvCistLSBwYXJ0IG9mIGFuIGFnZ3JlZ2F0 ZSdzIE9SREVSIEJZIGNsYXVzZS4gIFdlIHdhbnQgYSBzb3J0IG9yZGVyIHRoYXQgd29ya3MKKy0t IGZvciB0aGUgR1JPVVAgQlkgYW5kIGZpcnN0IGFuZCBsYXN0IGFnZ3JlZ2F0ZS4KK2V4cGxhaW4g KGNvc3RzIG9mZikKK3NlbGVjdAorICBzdW0odW5pcXVlMSBvcmRlciBieSB0ZW4sIHR3byksIHN1 bSh1bmlxdWUxIG9yZGVyIGJ5IGZvdXIpLAorICBzdW0odW5pcXVlMSBvcmRlciBieSB0d28sIGZv dXIpCitmcm9tIHRlbmsxCitncm91cCBieSB0ZW47CisKIC0tCiAtLSBUZXN0IGNvbWJpbmF0aW9u cyBvZiBESVNUSU5DVCBhbmQvb3IgT1JERVIgQlkKIC0tCi0tIAoyLjM1LjEud2luZG93cy4yCgo= --000000000000f2f9f405e435d9eb--