Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2HaQ-0009Zo-3A for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Mar 2026 23:43:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2HaP-00EN7x-2O for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Mar 2026 23:43:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2HaP-00EN7o-0E for pgsql-hackers@lists.postgresql.org; Mon, 16 Mar 2026 23:43:01 +0000 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2HaL-000000005wk-1KM4 for pgsql-hackers@lists.postgresql.org; Mon, 16 Mar 2026 23:43:00 +0000 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-6611d20c026so7346881a12.1 for ; Mon, 16 Mar 2026 16:42:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773704577; cv=none; d=google.com; s=arc-20240605; b=P4krYntDlFMb4mYrn9xbYk92deRF/2B3DFmLXkk2+P9fWJD2fIBddFxkeoavvKhdcV z2Z+H1glOKhEWSWiDdh/+pm0uxStqoooRPNWj4X1REj65xTbytO7IENIDZOw3aCuxN4F ScdoI4NZTESkRzZSOxmx0mpR/jJkNaxplHhmmp8RgFATOr7CmpiuSHj7uBz3sVaVdenp MQOsqmDkDPECX7KYmZO9Kycmfj2l01PSMf1bguG2E5MXKHoi57EshIYGZWhF0mKwwrFV I9SwWiUF54knGI8b0jpyDOQP384ftAUjzLlr3O44RPFCUSToYVbWVparNDardIL43eqt pxFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=kbVWG6FldFIgd3D+Q/YuzUBXgDr2yO8xrA6Wus0UcGY=; fh=zhzQUmKaeM8yG8zJdfY6z5GVwAF1IPk1UN99V3EIwlE=; b=gkKvnt5v1smIgdj7+birRxQNT/2GZ98uWAAlwMzwjHAjQ+YMw5wsSLcsevI0C+l55r 3ZvAkQuwphwwmQPlc2w9w4Cc9avtDgGLcMa0hz3RBX3Ag/wIhBxgIi/SYNOtJAy4gBis eUMKRLekZMC9lLrn32yKaSoxO8BMzKX61L03R/xX917ZEq+BnpMYFhNqXMApnLvVPLoJ fJXItYBIdGj5vBw/FIg2SpONPxRKk9s2gONkxyRJBNPkGn1xV+wkaxlAXB0CdUjFV8Gh YXTbNSiUlapH9g2fc6vvIdG1ruSds/c3hMkDl20enSpqk9BdNAZsM7UWxaRyCqws3ZHY 6wWg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773704577; x=1774309377; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kbVWG6FldFIgd3D+Q/YuzUBXgDr2yO8xrA6Wus0UcGY=; b=cGBv7VUaez3qrAFFKy6nLmqlPDQvn1xTREoy+x8dP73WNiLIZj1OWdD7vEqEt8XUUZ +CjcE30/6lK+TXIAzXSxvCq8KtkwwPLJ8YebMd6IrnzFCm3te+mGFp6UFoeQ7tCt3jPV nkCmOfnd2GWLjUHZHHGQMeJAaTo7pzqmRieuwpgwG2c6UM68GbocIN9HQuHJA7cM6kLu ztQ4C2Gtt3bSimoSrYJLMQZjJ+XSbaJjBahz29IRLxVI0dW9MgI+j93k/41RqlcnU04E dzJe2znftfLUAP6Orjq897giOyCs08a8PTF9apDTHsEuudBUa3RkjoLm4K7KjlLzJt94 p+sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773704577; x=1774309377; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kbVWG6FldFIgd3D+Q/YuzUBXgDr2yO8xrA6Wus0UcGY=; b=cg48L9j//i172sB/vFdURcoyKkdB852KSYANWZKCQoJJjFNZZHCEreiEEgBCZ5fZet LPC58rb4IPzDlfGqJUUMQksd6ZWd6us08Upcauv2YGQZ8QXqbxy5Ox++gMLPWzDtjv2J JOyvhIRvVljli2iQYC4jAZgzNVEOEArNLAAPUG3ZKndbHecbGyj2SR+qMhTY8W0L7yg1 U9QF3e+3exn//BnoXYm7mlGEWuIuQIFVjwCV3IYx+h24FQrv/SkL2YidEwVWmLT8ssN7 Pl/Le2zPj4Dw9XPIqLzTcAY1lB2dkxD6odMEFG6aEHbTInEATRnpJaq+pK4LmTtE/0qh hMWQ== X-Forwarded-Encrypted: i=1; AJvYcCWzFUxCxfHU+fvHnRWXx5GOFXTeTdJ8euGHqgmFIP8+IdD2VdQPooOaU/QuvD/0bLfdYwn2Scz5MEPhQOYx@lists.postgresql.org X-Gm-Message-State: AOJu0YyK9X8+sS/wcJzRW1tJPQUDHm+Fkkj/4pgTX6BMk8MjnEyhCBFs urrhm9nwl91Wflkjdiy9o2swGGD7HkFCez95TNhDstHecN0gLjwpgbql/+NCGoMnktBpElBoPn1 FSIwXpPfncxwLUwI2a0woBc3Ac79Srp8= X-Gm-Gg: ATEYQzwv/mx5JubpXgiu1WxTIptt6nVKFsevpIrbCN4zm4Nsxal6nSZqYToGRMpJdWl sgg1qVoNdoYiuqNJwAuMZ0j6F33KmbBoFjJ7jovfsTcziUjfCqexT6kY0i+17VbRbErclUSVIhq CXLPoQBgQu5SjVcXju6HGc8/6JIv6Q6ASnVLfujaS1SXb72FjrNYLJmrxOKyVtxoffe0PqRh1Ep gdeo940PgfZ7sSnRjZtddEv+SfdlH2RddfDNThWnrlFj8jEzCnouDscMOf54TPWGLpWkqX/ofTg kNOxjw== X-Received: by 2002:a05:6402:1ed4:b0:662:e479:e883 with SMTP id 4fb4d7f45d1cf-663ba0e9384mr8985727a12.5.1773704577101; Mon, 16 Mar 2026 16:42:57 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Sami Imseih Date: Mon, 16 Mar 2026 18:42:44 -0500 X-Gm-Features: AaiRm50CFUn5WJUk323dHq87_lv9CtUF9SiK5SzS0Nz6R-VRYLUnScbX4RnphrI Message-ID: Subject: Re: Flush some statistics within running transactions To: Michael Paquier Cc: Bertrand Drouvot , Fujii Masao , pgsql-hackers@lists.postgresql.org, Zsolt Parragi Content-Type: multipart/mixed; boundary="00000000000041b9ca064d2cc7d5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000041b9ca064d2cc7d5 Content-Type: text/plain; charset="UTF-8" Hi, I have spent some time thinking about Michael's feedback and I want to see if I can propose an alternate design that we can come to a consensus on. > I had to work around the assert at the end of pgstat_report_stat(), to > tell that under an xact the partial flushes were OK. I was wondering > about keeping the end assertion based on solely "force" intact, making > the flush routines return a status based on if we are in an xact. > > > That looks "simpler" that the previous proposal but who would be responsible to > > call pg_stat_report()? If that's the client responsibility that kind of look weird > > to me. If that's the core, how would that be scheduled? I think that the > > end solution should prevent to find similar issues as 039549d70f6 fixed, without > > delegating to the client. > > TBH, I don't like the requirement of setting SIGALRM in all the places > where we'd require it for the sake of this proposal, where > historically we have never done that, copying a mechanism that already > exists in the tree for procsigs, as the previous patch I posted proves > we could reuse. How about we add a timeout when a transaction goes idle? Currently we have IDLE_STATS_UPDATE_TIMEOUT, which is the timeout interval used when we have done more than one flush within a second. This only works when the session is idle (not in a transaction), and flushes everything. However, as I mentioned earlier in this thread, we can also schedule a flush that occurs when a transaction goes idle. This means when a transaction is started (BEGIN/START TRANSACTION) the proceeding idle-in-transaction can schedule a timeout of 10 seconds based on a new #define called PGSTAT_IDLE_TXN_INTERVAL. The timeout is not a fixed repeating interval. It is set on-demand each time the transaction enters idle-in-transaction state: first after the BEGIN, then again after each subsequent command completes. This is a trade-off: if a single command runs for a long time, no flush happens until it finishes and the transaction goes idle again. So, we still introduce a new timeout in this mechanism, but it does not need to be registered all over the place. So with this all the "safe to be flushed" stats will be flushed mid-transaction at some point, and all stats will be flushed at the end of a transaction. With that said, the only way I can conceive getting away from a a new timeout in this design is to track timestamp whenever we go into idle-intransaction, but I am not too comfy adding a GetCurrentTimestamp() there. -> if no action occurs at this point, we don't set another timeout > It's also not clear to me what a correct frequency of > the stat updates should be, and why it would make sense to force that > in a GUC; No GUC will be needed in what I am proposing. A 10s flush interval should be sufficient. > On top of that, I am not really convinced that there is a good reason > to remove the existing stat report calls we have already planted in > the tree for auxiliary processes, diverging from the stable branches > where these exist. The design being proposed keeps all the existing in-tact. So attached is a new proposal with tests and docs. In terms of test I fell back to the strategy used by Bertrand [0] with the INJECTION_POINT trick to reduce the flush interval. It does mean we keep a pg_sleep in the test, but I think we should not try to do anything different here. Also, with this design we can call the flush modes FLUSH_IN_TRANSACTION and FLUSH_AT_TXN_BOUNDARY. As the earlier proposals, the callbacks will still need to make the decision what stats to flush based on if it's called in-transaction or at boundary. [0] https://www.postgresql.org/message-id/aZbDYMrOkeCyIubO%40ip-10-97-1-34.eu-west-3.compute.internal -- Sami Imseih Amazon Web Services (AWS) --00000000000041b9ca064d2cc7d5 Content-Type: application/octet-stream; name="v12-0001-Add-periodic-in-transaction-stats-flushing.patch" Content-Disposition: attachment; filename="v12-0001-Add-periodic-in-transaction-stats-flushing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmttwam00 RnJvbSA1ZDc1ZDkzNzAxYmQyNjhlNzY4OTc5MTA0MjQwNTQ1MDI5N2ZlZGU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2b3QucGdA Z21haWwuY29tPgpEYXRlOiBNb24sIDUgSmFuIDIwMjYgMDk6NDE6MzkgKzAwMDAKU3ViamVjdDog W1BBVENIIHYxMiAxLzFdIEFkZCBwZXJpb2RpYyBpbi10cmFuc2FjdGlvbiBzdGF0cyBmbHVzaGlu ZwoKU29tZSBzdGF0aXN0aWNzLCBzdWNoIGFzIHJlbGF0aW9uIHNjYW4gY291bnRzLCBibG9ja3Mg ZmV0Y2hlZC9oaXQsCldBTCwgSU8sIGFuZCBTTFJVIHN0YXRzLCBjYW4gc2FmZWx5IGJlIGZsdXNo ZWQgdG8gc2hhcmVkIG1lbW9yeQptaWQtdHJhbnNhY3Rpb24uICBPdGhlcnMsIGxpa2UgdHVwbGUg aW5zZXJ0L3VwZGF0ZS9kZWxldGUgY291bnRzLApzaG91bGQgb25seSBiZSBmbHVzaGVkIGF0IHRy YW5zYWN0aW9uIGJvdW5kYXJpZXMuCgpJbnRyb2R1Y2UgYSBmbHVzaF9tb2RlIGZpZWxkIChGTFVT SF9JTl9UUkFOU0FDVElPTiBhbmQKRkxVU0hfQVRfVFhOX0JPVU5EQVJZKSBmbyBlYWNoIHN0YXRz IGtpbmQuIEZMVVNIX0lOX1RSQU5TQUNUSU9OIHdpbGwKYmUgZmx1c2hlZCBldmVyeSBQR1NUQVRf SURMRV9UWE5fSU5URVJWQUwgKDEwcykgd2hpbGUgaWRsZSBpbiB0cmFuc2FjdGlvbi4KClRoZSB0 aW1lb3V0IGlzIHNldCBlYWNoIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGdvZXMgaWRsZSBiZXR3ZWVu CmNvbW1hbmRzLCBub3Qgb24gYSBmaXhlZCByZXBlYXRpbmcgaW50ZXJ2YWwuICBJdCBpcyBkaXNh YmxlZCB3aGVuCnRoZSBzZXNzaW9uIGdvZXMgaWRsZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gZW5k cy4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgICAgfCAg MjggKysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8 ICAgOCArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwg IDQzICsrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jICAgICAgICAg ICB8IDEwOSArKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X2JhY2tlbmQuYyAgIHwgICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0 YXRfYmd3cml0ZXIuYyAgfCAgIDIgKy0KIC4uLi91dGlscy9hY3Rpdml0eS9wZ3N0YXRfY2hlY2tw b2ludGVyLmMgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X2RhdGFiYXNlLmMgIHwgICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRf ZnVuY3Rpb24uYyAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9p by5jICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3Jl bGF0aW9uLmMgIHwgIDk4ICsrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X3NscnUuYyAgICAgIHwgICAyICstCiAuLi4vdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X3N1YnNjcmlwdGlvbi5jICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3Bnc3RhdF93YWwuYyAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9i YWxzLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYyAgICAgICAgICAgICB8ICAxMiArKwogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgOCArKwogc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFs LmggICAgICAgICAgIHwgIDU4ICsrKysrKystLQogc3JjL2luY2x1ZGUvdXRpbHMvdGltZW91dC5o ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi90ZXN0X2N1c3RvbV9zdGF0cy90LzAwMV9j dXN0b21fc3RhdHMucGwgICB8ICA1OSArKysrKysrKysKIC4uLi90ZXN0X2N1c3RvbV92YXJfc3Rh dHMtLTEuMC5zcWwgICAgICAgICAgICB8ICAxMCArKwogLi4uL3Rlc3RfY3VzdG9tX3N0YXRzL3Rl c3RfY3VzdG9tX3Zhcl9zdGF0cy5jIHwgMTE0ICsrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X21pc2MvbWVzb24uYnVpbGQgICAgICAgIHwgICAxICsKIC4uLi90ZXN0X21p c2MvdC8wMTFfaW5fdHJhbnNhY3Rpb25fc3RhdHMucGwgICB8ICA5MSArKysrKysrKysrKysrKwog c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAxICsKIDI2 IGZpbGVzIGNoYW5nZWQsIDYxMSBpbnNlcnRpb25zKCspLCA4MiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxMV9pbl90cmFuc2Fj dGlvbl9zdGF0cy5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDQ2MjAxOWE5NzJjLi5kY2RlYjlh YWJlYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC0yMzUsMTUgKzIzNSwzMSBAQCBwb3N0Z3JlcyAg IDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAg cG9zdGdyZXM6IHNlcgogICAgV2hlbiB1c2luZyB0aGUgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzIHZp ZXdzIGFuZCBmdW5jdGlvbnMgdG8gbW9uaXRvcgogICAgY29sbGVjdGVkIGRhdGEsIGl0IGlzIGlt cG9ydGFudCB0byByZWFsaXplIHRoYXQgdGhlIGluZm9ybWF0aW9uIGRvZXMgbm90CiAgICB1cGRh dGUgaW5zdGFudGFuZW91c2x5LiAgRWFjaCBpbmRpdmlkdWFsIHNlcnZlciBwcm9jZXNzIGZsdXNo ZXMgb3V0Ci0gICBhY2N1bXVsYXRlZCBzdGF0aXN0aWNzIHRvIHNoYXJlZCBtZW1vcnkganVzdCBi ZWZvcmUgZ29pbmcgaWRsZSwgYnV0IG5vdAotICAgbW9yZSBmcmVxdWVudGx5IHRoYW4gb25jZSBw ZXIgPHZhcm5hbWU+UEdTVEFUX01JTl9JTlRFUlZBTDwvdmFybmFtZT4KLSAgIG1pbGxpc2Vjb25k cyAoMSBzZWNvbmQgdW5sZXNzIGFsdGVyZWQgd2hpbGUgYnVpbGRpbmcgdGhlIHNlcnZlcik7IHNv IGEKLSAgIHF1ZXJ5IG9yIHRyYW5zYWN0aW9uIHN0aWxsIGluIHByb2dyZXNzIGRvZXMgbm90IGFm ZmVjdCB0aGUgZGlzcGxheWVkIHRvdGFscwotICAgYW5kIHRoZSBkaXNwbGF5ZWQgaW5mb3JtYXRp b24gbGFncyBiZWhpbmQgYWN0dWFsIGFjdGl2aXR5LiAgSG93ZXZlciwKLSAgIGN1cnJlbnQtcXVl cnkgaW5mb3JtYXRpb24gY29sbGVjdGVkIGJ5IDx2YXJuYW1lPnRyYWNrX2FjdGl2aXRpZXM8L3Zh cm5hbWU+CisgICBhY2N1bXVsYXRlZCBzdGF0aXN0aWNzIHRvIHNoYXJlZCBtZW1vcnkganVzdCBi ZWZvcmUgZ29pbmcgaWRsZSBvcgorICAgcGVyaW9kaWNhbGx5IGR1cmluZyB0cmFuc2FjdGlvbnMs IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBzdGF0aXN0aWNzCisgICBzaG91bGQgb25seSBiZSBm bHVzaGVkIGF0IGEgdHJhbnNhY3Rpb24gYm91bmRhcnksIGFzIGRlc2NyaWJlZCBiZWxvdy4KKyAg IEN1cnJlbnQtcXVlcnkgaW5mb3JtYXRpb24gY29sbGVjdGVkIGJ5IDx2YXJuYW1lPnRyYWNrX2Fj dGl2aXRpZXM8L3Zhcm5hbWU+CiAgICBpcyBhbHdheXMgdXAtdG8tZGF0ZS4KICAgPC9wYXJhPgog CisgIDxwYXJhPgorICAgV2hlbiBhIHNlcnZlciBwcm9jZXNzIGlzIGFib3V0IHRvIGJlY29tZSBp ZGxlLCBpdCBmbHVzaGVzIGFsbCBwZW5kaW5nCisgICBzdGF0aXN0aWNzIHRvIHNoYXJlZCBtZW1v cnksIGJ1dCBub3QgbW9yZSBmcmVxdWVudGx5IHRoYW4gb25jZSBwZXIKKyAgIDx2YXJuYW1lPlBH U1RBVF9NSU5fSU5URVJWQUw8L3Zhcm5hbWU+IG1pbGxpc2Vjb25kcyAoMSBzZWNvbmQgdW5sZXNz CisgICBhbHRlcmVkIHdoaWxlIGJ1aWxkaW5nIHRoZSBzZXJ2ZXIpLgorICA8L3BhcmE+CisKKyAg PHBhcmE+CisgICBEdXJpbmcgZXhwbGljaXQgdHJhbnNhY3Rpb24gYmxvY2tzLCBzdGF0aXN0aWNz IHRoYXQgY2FuIGJlIGZsdXNoZWQgYXQgYW55CisgICB0aW1lLCBzdWNoIGFzIHJlbGF0aW9uIHNj YW4gY291bnRzLCB0dXBsZXMgcmV0dXJuZWQgYW5kIGZldGNoZWQsIGJsb2NrcworICAgZmV0Y2hl ZCBhbmQgaGl0LCBhcyB3ZWxsIGFzIElPLCBXQUwsIFNMUlUsIGFuZCBiYWNrZW5kIHN0YXRpc3Rp Y3MsIGFyZQorICAgcGVyaW9kaWNhbGx5IGZsdXNoZWQgdG8gc2hhcmVkIG1lbW9yeSBldmVyeQor ICAgPHZhcm5hbWU+UEdTVEFUX0lETEVfVFhOX0lOVEVSVkFMPC92YXJuYW1lPiBtaWxsaXNlY29u ZHMgKDEwIHNlY29uZHMKKyAgIHVubGVzcyBhbHRlcmVkIHdoaWxlIGJ1aWxkaW5nIHRoZSBzZXJ2 ZXIpLiAgVGhpcyBwZXJpb2RpYyBmbHVzaGluZyBvY2N1cnMKKyAgIHdoZW4gdGhlIHRyYW5zYWN0 aW9uIGdvZXMgaWRsZSBiZXR3ZWVuIGNvbW1hbmRzLiAgSXQgZG9lcyBub3QgYXBwbHkgdG8KKyAg IHNpbmdsZSBzdGF0ZW1lbnRzIHJ1bm5pbmcgb3V0c2lkZSBhbiBleHBsaWNpdCB0cmFuc2FjdGlv biBibG9jay4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgQW5vdGhlciBpbXBvcnRhbnQgcG9p bnQgaXMgdGhhdCB3aGVuIGEgc2VydmVyIHByb2Nlc3MgaXMgYXNrZWQgdG8gZGlzcGxheQogICAg YW55IG9mIHRoZSBhY2N1bXVsYXRlZCBzdGF0aXN0aWNzLCBhY2Nlc3NlZCB2YWx1ZXMgYXJlIGNh Y2hlZCB1bnRpbCB0aGUgZW5kCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDM3 NmZmNDYzNDBkLi4yNDEyNGQ0NzhlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMK QEAgLTE5OTMsOCArMTk5Myw4IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJ CWlmIChUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyhsYXN0X2ZsdXNoLCBub3csCiAJCQkJCQkJ CQkgICBXQUxTRU5ERVJfU1RBVFNfRkxVU0hfSU5URVJWQUwpKQogCQl7Ci0JCQlwZ3N0YXRfZmx1 c2hfaW8oZmFsc2UpOwotCQkJKHZvaWQpIHBnc3RhdF9mbHVzaF9iYWNrZW5kKGZhbHNlLCBQR1NU QVRfQkFDS0VORF9GTFVTSF9JTyk7CisJCQlwZ3N0YXRfZmx1c2hfaW8oZmFsc2UsIHRydWUpOwor CQkJKHZvaWQpIHBnc3RhdF9mbHVzaF9iYWNrZW5kKGZhbHNlLCBQR1NUQVRfQkFDS0VORF9GTFVT SF9JTywgdHJ1ZSk7CiAJCQlsYXN0X2ZsdXNoID0gbm93OwogCQl9CiAKQEAgLTMwMjIsOCArMzAy Miw4IEBAIFdhbFNuZExvb3AoV2FsU25kU2VuZERhdGFDYWxsYmFjayBzZW5kX2RhdGEpCiAJCQlp ZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMobGFzdF9mbHVzaCwgbm93LAogCQkJCQkJCQkJ CSAgIFdBTFNFTkRFUl9TVEFUU19GTFVTSF9JTlRFUlZBTCkpCiAJCQl7Ci0JCQkJcGdzdGF0X2Zs dXNoX2lvKGZhbHNlKTsKLQkJCQkodm9pZCkgcGdzdGF0X2ZsdXNoX2JhY2tlbmQoZmFsc2UsIFBH U1RBVF9CQUNLRU5EX0ZMVVNIX0lPKTsKKwkJCQlwZ3N0YXRfZmx1c2hfaW8oZmFsc2UsIHRydWUp OworCQkJCSh2b2lkKSBwZ3N0YXRfZmx1c2hfYmFja2VuZChmYWxzZSwgUEdTVEFUX0JBQ0tFTkRf RkxVU0hfSU8sIHRydWUpOwogCQkJCWxhc3RfZmx1c2ggPSBub3c7CiAJCQl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYwppbmRleCBiMzU2MzExMzIxOS4uMDA0MzZmZWUwZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAg LTM1NjUsNiArMzU2NSwxMiBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCQlwZ3N0YXRfcmVw b3J0X3N0YXQodHJ1ZSk7CiAJfQogCisJaWYgKEluVHJhbnNhY3Rpb25TdGF0c1VwZGF0ZVRpbWVv dXRQZW5kaW5nKQorCXsKKwkJSW5UcmFuc2FjdGlvblN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmcg PSBmYWxzZTsKKwkJcGdzdGF0X3JlcG9ydF9pbl90cmFuc2FjdGlvbl9zdGF0KGZhbHNlKTsKKwl9 CisKIAlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQogCQlQcm9jZXNzUHJvY1NpZ25hbEJh cnJpZXIoKTsKIApAQCAtNDYyMSw2ICs0NjI3LDIxIEBAIFBvc3RncmVzTWFpbihjb25zdCBjaGFy ICpkYm5hbWUsIGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogCQkJCQllbmFibGVfdGltZW91dF9hZnRl cihJRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCwKIAkJCQkJCQkJCQkgSWRsZUlu VHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dCk7CiAJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBGbHVz aCBpbi10cmFuc2FjdGlvbiBzdGF0cy4KKwkJCQkgKi8KKwkJCQlpZiAoIWdldF90aW1lb3V0X2Fj dGl2ZShJTl9UUkFOU0FDVElPTl9TVEFUU19VUERBVEVfVElNRU9VVCkpCisJCQkJeworCQkJCQlp bnQJCQlzdGF0c19pbnRlcnZhbCA9IFBHU1RBVF9JRExFX1RYTl9JTlRFUlZBTDsKKworI2lmZGVm IFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJCQkJCWlmIChJU19JTkpFQ1RJT05fUE9JTlRfQVRUQUNI RUQoImluLXRyYW5zYWN0aW9uLXN0YXRzLXNob3J0LWludGVydmFsIikpCisJCQkJCQlzdGF0c19p bnRlcnZhbCA9IDEwMDA7CisjZW5kaWYKKwkJCQkJZW5hYmxlX3RpbWVvdXRfYWZ0ZXIoSU5fVFJB TlNBQ1RJT05fU1RBVFNfVVBEQVRFX1RJTUVPVVQsCisJCQkJCQkJCQkJIHN0YXRzX2ludGVydmFs KTsKKwkJCQl9CiAJCQl9CiAJCQllbHNlIGlmIChJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJs b2NrKCkpCiAJCQl7CkBAIC00NjM1LDYgKzQ2NTYsMjEgQEAgUG9zdGdyZXNNYWluKGNvbnN0IGNo YXIgKmRibmFtZSwgY29uc3QgY2hhciAqdXNlcm5hbWUpCiAJCQkJCWVuYWJsZV90aW1lb3V0X2Fm dGVyKElETEVfSU5fVFJBTlNBQ1RJT05fU0VTU0lPTl9USU1FT1VULAogCQkJCQkJCQkJCSBJZGxl SW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0KTsKIAkJCQl9CisKKwkJCQkvKgorCQkJCSAqIEZs dXNoIGluLXRyYW5zYWN0aW9uIHN0YXRzLgorCQkJCSAqLworCQkJCWlmICghZ2V0X3RpbWVvdXRf YWN0aXZlKElOX1RSQU5TQUNUSU9OX1NUQVRTX1VQREFURV9USU1FT1VUKSkKKwkJCQl7CisJCQkJ CWludAkJCXN0YXRzX2ludGVydmFsID0gUEdTVEFUX0lETEVfVFhOX0lOVEVSVkFMOworCisjaWZk ZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwkJCQkJaWYgKElTX0lOSkVDVElPTl9QT0lOVF9BVFRB Q0hFRCgiaW4tdHJhbnNhY3Rpb24tc3RhdHMtc2hvcnQtaW50ZXJ2YWwiKSkKKwkJCQkJCXN0YXRz X2ludGVydmFsID0gMTAwMDsKKyNlbmRpZgorCQkJCQllbmFibGVfdGltZW91dF9hZnRlcihJTl9U UkFOU0FDVElPTl9TVEFUU19VUERBVEVfVElNRU9VVCwKKwkJCQkJCQkJCQkgc3RhdHNfaW50ZXJ2 YWwpOworCQkJCX0KIAkJCX0KIAkJCWVsc2UKIAkJCXsKQEAgLTQ2NTAsNiArNDY4NiwxMyBAQCBQ b3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAkJ CQlpZiAobm90aWZ5SW50ZXJydXB0UGVuZGluZykKIAkJCQkJUHJvY2Vzc05vdGlmeUludGVycnVw dChmYWxzZSk7CiAKKwkJCQkvKgorCQkJCSAqIFdlIGFyZSBubyBsb25nZXIgaW4gYSB0cmFuc2Fj dGlvbiwgc28gZGlzYWJsZSB0aGUKKwkJCQkgKiBpbi10cmFuc2FjdGlvbiBzdGF0cyBmbHVzaCB0 aW1lb3V0IGlmIGl0IHdhcyBhY3RpdmUuCisJCQkJICovCisJCQkJaWYgKGdldF90aW1lb3V0X2Fj dGl2ZShJTl9UUkFOU0FDVElPTl9TVEFUU19VUERBVEVfVElNRU9VVCkpCisJCQkJCWRpc2FibGVf dGltZW91dChJTl9UUkFOU0FDVElPTl9TVEFUU19VUERBVEVfVElNRU9VVCwgZmFsc2UpOworCiAJ CQkJLyoKIAkJCQkgKiBDaGVjayBpZiB3ZSBuZWVkIHRvIHJlcG9ydCBzdGF0cy4gSWYgcGdzdGF0 X3JlcG9ydF9zdGF0KCkKIAkJCQkgKiBkZWNpZGVzIGl0J3MgdG9vIHNvb24gdG8gZmx1c2ggb3V0 IHBlbmRpbmcgc3RhdHMgLyBsb2NrCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jCmluZGV4 IDExYmI3MWNhZDVhLi43MDA5MDU2NWZlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 LmMKQEAgLTE4Nyw3ICsxODcsOCBAQCBzdGF0aWMgdm9pZCBwZ3N0YXRfaW5pdF9zbmFwc2hvdF9m aXhlZCh2b2lkKTsKIAogc3RhdGljIHZvaWQgcGdzdGF0X3Jlc2V0X2FmdGVyX2ZhaWx1cmUodm9p ZCk7CiAKLXN0YXRpYyBib29sIHBnc3RhdF9mbHVzaF9wZW5kaW5nX2VudHJpZXMoYm9vbCBub3dh aXQpOworc3RhdGljIGJvb2wgcGdzdGF0X2ZsdXNoX3BlbmRpbmdfZW50cmllcyhib29sIG5vd2Fp dCwgYm9vbCBpbl90eG5fb25seSk7CitzdGF0aWMgYm9vbCBwZ3N0YXRfZmx1c2hfZml4ZWRfc3Rh dHMoYm9vbCBub3dhaXQsIGJvb2wgaW5fdHhuX29ubHkpOwogCiBzdGF0aWMgdm9pZCBwZ3N0YXRf cHJlcF9zbmFwc2hvdCh2b2lkKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9idWlsZF9zbmFwc2hvdCh2 b2lkKTsKQEAgLTI4OCw2ICsyODksNyBAQCBzdGF0aWMgY29uc3QgUGdTdGF0X0tpbmRJbmZvIHBn c3RhdF9raW5kX2J1aWx0aW5faW5mb3NbUEdTVEFUX0tJTkRfQlVJTFRJTl9TSVpFXQogCiAJCS5m aXhlZF9hbW91bnQgPSBmYWxzZSwKIAkJLndyaXRlX3RvX2ZpbGUgPSB0cnVlLAorCQkuZmx1c2hf bW9kZSA9IEZMVVNIX0lOX1RSQU5TQUNUSU9OLAogCQkvKiBzbyBwZ19zdGF0X2RhdGFiYXNlIGVu dHJpZXMgY2FuIGJlIHNlZW4gaW4gYWxsIGRhdGFiYXNlcyAqLwogCQkuYWNjZXNzZWRfYWNyb3Nz X2RhdGFiYXNlcyA9IHRydWUsCiAKQEAgLTMwNSw2ICszMDcsNyBAQCBzdGF0aWMgY29uc3QgUGdT dGF0X0tpbmRJbmZvIHBnc3RhdF9raW5kX2J1aWx0aW5faW5mb3NbUEdTVEFUX0tJTkRfQlVJTFRJ Tl9TSVpFXQogCiAJCS5maXhlZF9hbW91bnQgPSBmYWxzZSwKIAkJLndyaXRlX3RvX2ZpbGUgPSB0 cnVlLAorCQkuZmx1c2hfbW9kZSA9IEZMVVNIX0lOX1RSQU5TQUNUSU9OLAogCiAJCS5zaGFyZWRf c2l6ZSA9IHNpemVvZihQZ1N0YXRTaGFyZWRfUmVsYXRpb24pLAogCQkuc2hhcmVkX2RhdGFfb2Zm ID0gb2Zmc2V0b2YoUGdTdGF0U2hhcmVkX1JlbGF0aW9uLCBzdGF0cyksCkBAIC0zMjEsNiArMzI0 LDcgQEAgc3RhdGljIGNvbnN0IFBnU3RhdF9LaW5kSW5mbyBwZ3N0YXRfa2luZF9idWlsdGluX2lu Zm9zW1BHU1RBVF9LSU5EX0JVSUxUSU5fU0laRV0KIAogCQkuZml4ZWRfYW1vdW50ID0gZmFsc2Us CiAJCS53cml0ZV90b19maWxlID0gdHJ1ZSwKKwkJLmZsdXNoX21vZGUgPSBGTFVTSF9BVF9UWE5f Qk9VTkRBUlksCiAKIAkJLnNoYXJlZF9zaXplID0gc2l6ZW9mKFBnU3RhdFNoYXJlZF9GdW5jdGlv biksCiAJCS5zaGFyZWRfZGF0YV9vZmYgPSBvZmZzZXRvZihQZ1N0YXRTaGFyZWRfRnVuY3Rpb24s IHN0YXRzKSwKQEAgLTMzNiw2ICszNDAsNyBAQCBzdGF0aWMgY29uc3QgUGdTdGF0X0tpbmRJbmZv IHBnc3RhdF9raW5kX2J1aWx0aW5faW5mb3NbUEdTVEFUX0tJTkRfQlVJTFRJTl9TSVpFXQogCiAJ CS5maXhlZF9hbW91bnQgPSBmYWxzZSwKIAkJLndyaXRlX3RvX2ZpbGUgPSB0cnVlLAorCQkuZmx1 c2hfbW9kZSA9IEZMVVNIX0FUX1RYTl9CT1VOREFSWSwKIAogCQkuYWNjZXNzZWRfYWNyb3NzX2Rh dGFiYXNlcyA9IHRydWUsCiAKQEAgLTM1Myw2ICszNTgsNyBAQCBzdGF0aWMgY29uc3QgUGdTdGF0 X0tpbmRJbmZvIHBnc3RhdF9raW5kX2J1aWx0aW5faW5mb3NbUEdTVEFUX0tJTkRfQlVJTFRJTl9T SVpFXQogCiAJCS5maXhlZF9hbW91bnQgPSBmYWxzZSwKIAkJLndyaXRlX3RvX2ZpbGUgPSB0cnVl LAorCQkuZmx1c2hfbW9kZSA9IEZMVVNIX0FUX1RYTl9CT1VOREFSWSwKIAkJLyogc28gcGdfc3Rh dF9zdWJzY3JpcHRpb25fc3RhdHMgZW50cmllcyBjYW4gYmUgc2VlbiBpbiBhbGwgZGF0YWJhc2Vz ICovCiAJCS5hY2Nlc3NlZF9hY3Jvc3NfZGF0YWJhc2VzID0gdHJ1ZSwKIApAQCAtMzcwLDYgKzM3 Niw3IEBAIHN0YXRpYyBjb25zdCBQZ1N0YXRfS2luZEluZm8gcGdzdGF0X2tpbmRfYnVpbHRpbl9p bmZvc1tQR1NUQVRfS0lORF9CVUlMVElOX1NJWkVdCiAKIAkJLmZpeGVkX2Ftb3VudCA9IGZhbHNl LAogCQkud3JpdGVfdG9fZmlsZSA9IGZhbHNlLAorCQkuZmx1c2hfbW9kZSA9IEZMVVNIX0lOX1RS QU5TQUNUSU9OLAogCiAJCS5hY2Nlc3NlZF9hY3Jvc3NfZGF0YWJhc2VzID0gdHJ1ZSwKIApAQCAt NDM2LDYgKzQ0Myw3IEBAIHN0YXRpYyBjb25zdCBQZ1N0YXRfS2luZEluZm8gcGdzdGF0X2tpbmRf YnVpbHRpbl9pbmZvc1tQR1NUQVRfS0lORF9CVUlMVElOX1NJWkVdCiAKIAkJLmZpeGVkX2Ftb3Vu dCA9IHRydWUsCiAJCS53cml0ZV90b19maWxlID0gdHJ1ZSwKKwkJLmZsdXNoX21vZGUgPSBGTFVT SF9JTl9UUkFOU0FDVElPTiwKIAogCQkuc25hcHNob3RfY3RsX29mZiA9IG9mZnNldG9mKFBnU3Rh dF9TbmFwc2hvdCwgaW8pLAogCQkuc2hhcmVkX2N0bF9vZmYgPSBvZmZzZXRvZihQZ1N0YXRfU2ht ZW1Db250cm9sLCBpbyksCkBAIC00NTMsNiArNDYxLDcgQEAgc3RhdGljIGNvbnN0IFBnU3RhdF9L aW5kSW5mbyBwZ3N0YXRfa2luZF9idWlsdGluX2luZm9zW1BHU1RBVF9LSU5EX0JVSUxUSU5fU0la RV0KIAogCQkuZml4ZWRfYW1vdW50ID0gdHJ1ZSwKIAkJLndyaXRlX3RvX2ZpbGUgPSB0cnVlLAor CQkuZmx1c2hfbW9kZSA9IEZMVVNIX0lOX1RSQU5TQUNUSU9OLAogCiAJCS5zbmFwc2hvdF9jdGxf b2ZmID0gb2Zmc2V0b2YoUGdTdGF0X1NuYXBzaG90LCBzbHJ1KSwKIAkJLnNoYXJlZF9jdGxfb2Zm ID0gb2Zmc2V0b2YoUGdTdGF0X1NobWVtQ29udHJvbCwgc2xydSksCkBAIC00NzAsNiArNDc5LDcg QEAgc3RhdGljIGNvbnN0IFBnU3RhdF9LaW5kSW5mbyBwZ3N0YXRfa2luZF9idWlsdGluX2luZm9z W1BHU1RBVF9LSU5EX0JVSUxUSU5fU0laRV0KIAogCQkuZml4ZWRfYW1vdW50ID0gdHJ1ZSwKIAkJ LndyaXRlX3RvX2ZpbGUgPSB0cnVlLAorCQkuZmx1c2hfbW9kZSA9IEZMVVNIX0lOX1RSQU5TQUNU SU9OLAogCiAJCS5zbmFwc2hvdF9jdGxfb2ZmID0gb2Zmc2V0b2YoUGdTdGF0X1NuYXBzaG90LCB3 YWwpLAogCQkuc2hhcmVkX2N0bF9vZmYgPSBvZmZzZXRvZihQZ1N0YXRfU2htZW1Db250cm9sLCB3 YWwpLApAQCAtNzc1LDIzICs3ODUsMTEgQEAgcGdzdGF0X3JlcG9ydF9zdGF0KGJvb2wgZm9yY2Up CiAJcGFydGlhbF9mbHVzaCA9IGZhbHNlOwogCiAJLyogZmx1c2ggb2YgdmFyaWFibGUtbnVtYmVy ZWQgc3RhdHMgdHJhY2tlZCBpbiBwZW5kaW5nIGVudHJpZXMgbGlzdCAqLwotCXBhcnRpYWxfZmx1 c2ggfD0gcGdzdGF0X2ZsdXNoX3BlbmRpbmdfZW50cmllcyhub3dhaXQpOworCXBhcnRpYWxfZmx1 c2ggfD0gcGdzdGF0X2ZsdXNoX3BlbmRpbmdfZW50cmllcyhub3dhaXQsIGZhbHNlKTsKIAogCS8q IGZsdXNoIG9mIG90aGVyIHN0YXRzIGtpbmRzICovCiAJaWYgKHBnc3RhdF9yZXBvcnRfZml4ZWQp Ci0JewotCQlmb3IgKFBnU3RhdF9LaW5kIGtpbmQgPSBQR1NUQVRfS0lORF9NSU47IGtpbmQgPD0g UEdTVEFUX0tJTkRfTUFYOyBraW5kKyspCi0JCXsKLQkJCWNvbnN0IFBnU3RhdF9LaW5kSW5mbyAq a2luZF9pbmZvID0gcGdzdGF0X2dldF9raW5kX2luZm8oa2luZCk7Ci0KLQkJCWlmICgha2luZF9p bmZvKQotCQkJCWNvbnRpbnVlOwotCQkJaWYgKCFraW5kX2luZm8tPmZsdXNoX3N0YXRpY19jYikK LQkJCQljb250aW51ZTsKLQotCQkJcGFydGlhbF9mbHVzaCB8PSBraW5kX2luZm8tPmZsdXNoX3N0 YXRpY19jYihub3dhaXQpOwotCQl9Ci0JfQorCQlwYXJ0aWFsX2ZsdXNoIHw9IHBnc3RhdF9mbHVz aF9maXhlZF9zdGF0cyhub3dhaXQsIGZhbHNlKTsKIAogCWxhc3RfZmx1c2ggPSBub3c7CiAKQEAg LTEyOTMsNyArMTI5MSw4IEBAIHBnc3RhdF9wcmVwX3BlbmRpbmdfZW50cnkoUGdTdGF0X0tpbmQg a2luZCwgT2lkIGRib2lkLCB1aW50NjQgb2JqaWQsIGJvb2wgKmNyZWF0CiAKIAlpZiAoZW50cnlf cmVmLT5wZW5kaW5nID09IE5VTEwpCiAJewotCQlzaXplX3QJCWVudHJ5c2l6ZSA9IHBnc3RhdF9n ZXRfa2luZF9pbmZvKGtpbmQpLT5wZW5kaW5nX3NpemU7CisJCWNvbnN0IFBnU3RhdF9LaW5kSW5m byAqa2luZF9pbmZvID0gcGdzdGF0X2dldF9raW5kX2luZm8oa2luZCk7CisJCXNpemVfdAkJZW50 cnlzaXplID0ga2luZF9pbmZvLT5wZW5kaW5nX3NpemU7CiAKIAkJQXNzZXJ0KGVudHJ5c2l6ZSAh PSAoc2l6ZV90KSAtMSk7CiAKQEAgLTEzNDUsOSArMTM0NCwxNSBAQCBwZ3N0YXRfZGVsZXRlX3Bl bmRpbmdfZW50cnkoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYpCiAKIC8qCiAgKiBGbHVzaCBv dXQgcGVuZGluZyB2YXJpYWJsZS1udW1iZXJlZCBzdGF0cy4KKyAqCisgKiBJZiBpbl90eG5fb25s eSBpcyB0cnVlLCBvbmx5IGZsdXNoZXMgRkxVU0hfSU5fVFJBTlNBQ1RJT04gZW50cmllcy4gRm9y IGVudHJpZXMKKyAqIHRoYXQgc3VwcG9ydCBpdCwgdGhlIGNhbGxiYWNrIG1heSBmbHVzaCBvbmx5 IG5vbi10cmFuc2FjdGlvbmFsIGZpZWxkcy4KKyAqIFRoaXMgaXMgc2FmZSB0byBjYWxsIGluc2lk ZSB0cmFuc2FjdGlvbnMuCisgKgorICogSWYgaW5fdHhuX29ubHkgaXMgZmFsc2UsIGZsdXNoZXMg YWxsIGVudHJpZXMuCiAgKi8KIHN0YXRpYyBib29sCi1wZ3N0YXRfZmx1c2hfcGVuZGluZ19lbnRy aWVzKGJvb2wgbm93YWl0KQorcGdzdGF0X2ZsdXNoX3BlbmRpbmdfZW50cmllcyhib29sIG5vd2Fp dCwgYm9vbCBpbl90eG5fb25seSkKIHsKIAlib29sCQloYXZlX3BlbmRpbmcgPSBmYWxzZTsKIAlk bGlzdF9ub2RlICpjdXIgPSBOVUxMOwpAQCAtMTM3MiwxMyArMTM3NywyOSBAQCBwZ3N0YXRfZmx1 c2hfcGVuZGluZ19lbnRyaWVzKGJvb2wgbm93YWl0KQogCQlQZ1N0YXRfS2luZCBraW5kID0ga2V5 LmtpbmQ7CiAJCWNvbnN0IFBnU3RhdF9LaW5kSW5mbyAqa2luZF9pbmZvID0gcGdzdGF0X2dldF9r aW5kX2luZm8oa2luZCk7CiAJCWJvb2wJCWRpZF9mbHVzaDsKKwkJYm9vbAkJaXNfcGFydGlhbF9m bHVzaCA9IGZhbHNlOwogCQlkbGlzdF9ub2RlICpuZXh0OwogCiAJCUFzc2VydCgha2luZF9pbmZv LT5maXhlZF9hbW91bnQpOwogCQlBc3NlcnQoa2luZF9pbmZvLT5mbHVzaF9wZW5kaW5nX2NiICE9 IE5VTEwpOwogCisJCS8qIFNraXAgdHJhbnNhY3Rpb25hbCBzdGF0cyBpZiB3ZSdyZSBpbiBpbl90 eG5fb25seSBtb2RlICovCisJCWlmIChpbl90eG5fb25seSAmJiBraW5kX2luZm8tPmZsdXNoX21v ZGUgPT0gRkxVU0hfQVRfVFhOX0JPVU5EQVJZKQorCQl7CisJCQloYXZlX3BlbmRpbmcgPSB0cnVl OworCisJCQlpZiAoZGxpc3RfaGFzX25leHQoJnBnU3RhdFBlbmRpbmcsIGN1cikpCisJCQkJbmV4 dCA9IGRsaXN0X25leHRfbm9kZSgmcGdTdGF0UGVuZGluZywgY3VyKTsKKwkJCWVsc2UKKwkJCQlu ZXh0ID0gTlVMTDsKKworCQkJY3VyID0gbmV4dDsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJLyog Zmx1c2ggdGhlIHN0YXRzLCBpZiBwb3NzaWJsZSAqLwotCQlkaWRfZmx1c2ggPSBraW5kX2luZm8t PmZsdXNoX3BlbmRpbmdfY2IoZW50cnlfcmVmLCBub3dhaXQpOworCQlkaWRfZmx1c2ggPSBraW5k X2luZm8tPmZsdXNoX3BlbmRpbmdfY2IoZW50cnlfcmVmLCBub3dhaXQsCisJCQkJCQkJCQkJCQlp bl90eG5fb25seSwgJmlzX3BhcnRpYWxfZmx1c2gpOwogCiAJCUFzc2VydChkaWRfZmx1c2ggfHwg bm93YWl0KTsKIApAQCAtMTM4OCw4ICsxNDA5LDggQEAgcGdzdGF0X2ZsdXNoX3BlbmRpbmdfZW50 cmllcyhib29sIG5vd2FpdCkKIAkJZWxzZQogCQkJbmV4dCA9IE5VTEw7CiAKLQkJLyogaWYgc3Vj Y2Vzc2Z1bGx5IGZsdXNoZWQsIHJlbW92ZSBlbnRyeSAqLwotCQlpZiAoZGlkX2ZsdXNoKQorCQkv KiBpZiBzdWNjZXNzZnVsbCBub24tcGFydGlhbCBmbHVzaCwgcmVtb3ZlIGVudHJ5ICovCisJCWlm IChkaWRfZmx1c2ggJiYgIWlzX3BhcnRpYWxfZmx1c2gpCiAJCQlwZ3N0YXRfZGVsZXRlX3BlbmRp bmdfZW50cnkoZW50cnlfcmVmKTsKIAkJZWxzZQogCQkJaGF2ZV9wZW5kaW5nID0gdHJ1ZTsKQEAg LTE0MDIsNiArMTQyMywzMyBAQCBwZ3N0YXRfZmx1c2hfcGVuZGluZ19lbnRyaWVzKGJvb2wgbm93 YWl0KQogCXJldHVybiBoYXZlX3BlbmRpbmc7CiB9CiAKKy8qCisgKiBGbHVzaCBmaXhlZC1hbW91 bnQgc3RhdHMuCisgKgorICogSWYgaW5fdHhuX29ubHkgaXMgdHJ1ZSwgb25seSBmbHVzaGVzIEZM VVNIX0lOX1RSQU5TQUNUSU9OIHN0YXRzIChzYWZlIGluc2lkZSB0cmFuc2FjdGlvbnMpLgorICog SWYgaW5fdHhuX29ubHkgaXMgZmFsc2UsIGZsdXNoZXMgYWxsIHN0YXRzIHdpdGggZmx1c2hfc3Rh dGljX2NiLgorICovCitzdGF0aWMgYm9vbAorcGdzdGF0X2ZsdXNoX2ZpeGVkX3N0YXRzKGJvb2wg bm93YWl0LCBib29sIGluX3R4bl9vbmx5KQoreworCWJvb2wJCXBhcnRpYWxfZmx1c2ggPSBmYWxz ZTsKKworCWZvciAoUGdTdGF0X0tpbmQga2luZCA9IFBHU1RBVF9LSU5EX01JTjsga2luZCA8PSBQ R1NUQVRfS0lORF9NQVg7IGtpbmQrKykKKwl7CisJCWNvbnN0IFBnU3RhdF9LaW5kSW5mbyAqa2lu ZF9pbmZvID0gcGdzdGF0X2dldF9raW5kX2luZm8oa2luZCk7CisKKwkJaWYgKCFraW5kX2luZm8g fHwgIWtpbmRfaW5mby0+Zmx1c2hfc3RhdGljX2NiKQorCQkJY29udGludWU7CisKKwkJLyogU2tp cCB0cmFuc2FjdGlvbmFsIHN0YXRzIGlmIHdlJ3JlIGluIGluX3R4bl9vbmx5IG1vZGUgKi8KKwkJ aWYgKGluX3R4bl9vbmx5ICYmIGtpbmRfaW5mby0+Zmx1c2hfbW9kZSA9PSBGTFVTSF9BVF9UWE5f Qk9VTkRBUlkpCisJCQljb250aW51ZTsKKworCQlwYXJ0aWFsX2ZsdXNoIHw9IGtpbmRfaW5mby0+ Zmx1c2hfc3RhdGljX2NiKG5vd2FpdCwgaW5fdHhuX29ubHkpOworCX0KKworCXJldHVybiBwYXJ0 aWFsX2ZsdXNoOworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEhlbHBlciAvIGluZnJhc3RydWN0dXJlIGZ1bmN0 aW9ucwpAQCAtMjExOSwzICsyMTY3LDI0IEBAIGFzc2lnbl9zdGF0c19mZXRjaF9jb25zaXN0ZW5j eShpbnQgbmV3dmFsLCB2b2lkICpleHRyYSkKIAlpZiAocGdzdGF0X2ZldGNoX2NvbnNpc3RlbmN5 ICE9IG5ld3ZhbCkKIAkJZm9yY2Vfc3RhdHNfc25hcHNob3RfY2xlYXIgPSB0cnVlOwogfQorCisv KgorICogRmx1c2hlcyBvbmx5IEZMVVNIX0lOX1RSQU5TQUNUSU9OIHN0YXRzIHVzaW5nIG5vbi1i bG9ja2luZyBsb2Nrcy4gVHJhbnNhY3Rpb25hbAorICogc3RhdHMgKEZMVVNIX0FUX1RYTl9CT1VO REFSWSkgcmVtYWluIHBlbmRpbmcgdW50aWwgdHJhbnNhY3Rpb24gYm91bmRhcnkuCisgKiBTYWZl IHRvIGNhbGwgaW5zaWRlIHRyYW5zYWN0aW9ucy4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBmcm9t IGEgdGltZW91dCBoYW5kbGVyIGV2ZXJ5IFBHU1RBVF9JRExFX1RYTl9JTlRFUlZBTAorICogKDEw MDAwbXMpIHdoaWxlIGlkbGUgaW4gdHJhbnNhY3Rpb24sIHRvIGVuc3VyZSBub24tdHJhbnNhY3Rp b25hbCBzdGF0cworICogKGUuZy4sIElPLCBiYWNrZW5kKSBhcmUgZmx1c2hlZCBwZXJpb2RpY2Fs bHkgZXZlbiBkdXJpbmcgbG9uZyB0cmFuc2FjdGlvbnMuCisgKi8KK3ZvaWQKK3Bnc3RhdF9yZXBv cnRfaW5fdHJhbnNhY3Rpb25fc3RhdChib29sIGZvcmNlKQoreworCWJvb2wJCW5vd2FpdCA9ICFm b3JjZTsKKworCXBnc3RhdF9hc3NlcnRfaXNfdXAoKTsKKworCS8qIEZsdXNoIHN0YXRzIG91dHNp ZGUgb2YgdHJhbnNhY3Rpb24gYm91bmRhcnkgKi8KKwlwZ3N0YXRfZmx1c2hfcGVuZGluZ19lbnRy aWVzKG5vd2FpdCwgdHJ1ZSk7CisJcGdzdGF0X2ZsdXNoX2ZpeGVkX3N0YXRzKG5vd2FpdCwgdHJ1 ZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfYmFj a2VuZC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2JhY2tlbmQuYwppbmRl eCBmMmY4ZDNmZjc1Zi4uM2JlOGIyNzA1YjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3Bnc3RhdF9iYWNrZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X2JhY2tlbmQuYwpAQCAtMjY4LDcgKzI2OCw3IEBAIHBnc3RhdF9mbHVzaF9iYWNr ZW5kX2VudHJ5X3dhbChQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZikKICAqIGlmIHNvbWUgc3Rh dGlzdGljcyBjb3VsZCBub3QgYmUgZmx1c2hlZCBkdWUgdG8gbG9jayBjb250ZW50aW9uLgogICov CiBib29sCi1wZ3N0YXRfZmx1c2hfYmFja2VuZChib29sIG5vd2FpdCwgYml0czMyIGZsYWdzKQor cGdzdGF0X2ZsdXNoX2JhY2tlbmQoYm9vbCBub3dhaXQsIGJpdHMzMiBmbGFncywgYm9vbCBpbl90 eG5fb25seSkKIHsKIAlQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZjsKIAlib29sCQloYXNfcGVu ZGluZ19kYXRhID0gZmFsc2U7CkBAIC0zMTEsOSArMzExLDkgQEAgcGdzdGF0X2ZsdXNoX2JhY2tl bmQoYm9vbCBub3dhaXQsIGJpdHMzMiBmbGFncykKICAqIElmIHNvbWUgc3RhdHMgY291bGQgbm90 IGJlIGZsdXNoZWQgZHVlIHRvIGxvY2sgY29udGVudGlvbiwgcmV0dXJuIHRydWUuCiAgKi8KIGJv b2wKLXBnc3RhdF9iYWNrZW5kX2ZsdXNoX2NiKGJvb2wgbm93YWl0KQorcGdzdGF0X2JhY2tlbmRf Zmx1c2hfY2IoYm9vbCBub3dhaXQsIGJvb2wgaW5fdHhuX29ubHkpCiB7Ci0JcmV0dXJuIHBnc3Rh dF9mbHVzaF9iYWNrZW5kKG5vd2FpdCwgUEdTVEFUX0JBQ0tFTkRfRkxVU0hfQUxMKTsKKwlyZXR1 cm4gcGdzdGF0X2ZsdXNoX2JhY2tlbmQobm93YWl0LCBQR1NUQVRfQkFDS0VORF9GTFVTSF9BTEws IGluX3R4bl9vbmx5KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3Bnc3RhdF9iZ3dyaXRlci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X2Jnd3JpdGVyLmMKaW5kZXggZWQyZmQ4MDExODkuLjFjNWYwYzNlYzQwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfYmd3cml0ZXIuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfYmd3cml0ZXIuYwpAQCAtNjEsNyArNjEsNyBA QCBwZ3N0YXRfcmVwb3J0X2Jnd3JpdGVyKHZvaWQpCiAJLyoKIAkgKiBSZXBvcnQgSU8gc3RhdGlz dGljcwogCSAqLwotCXBnc3RhdF9mbHVzaF9pbyhmYWxzZSk7CisJcGdzdGF0X2ZsdXNoX2lvKGZh bHNlLCB0cnVlKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3Bnc3RhdF9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9jaGVja3BvaW50ZXIuYwppbmRleCAxZjcwMTk0YjdhNy4uMmQ4OWEwODI0NjQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9jaGVja3BvaW50ZXIuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfY2hlY2twb2ludGVyLmMKQEAg LTY4LDcgKzY4LDcgQEAgcGdzdGF0X3JlcG9ydF9jaGVja3BvaW50ZXIodm9pZCkKIAkvKgogCSAq IFJlcG9ydCBJTyBzdGF0aXN0aWNzCiAJICovCi0JcGdzdGF0X2ZsdXNoX2lvKGZhbHNlKTsKKwlw Z3N0YXRfZmx1c2hfaW8oZmFsc2UsIHRydWUpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMgYi9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYwppbmRleCA5MzNkY2I1Y2FlNS4uNzJkNzU3YTY2 MzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFz ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCkBA IC00MzUsNyArNDM1LDggQEAgcGdzdGF0X3Jlc2V0X2RhdGFiYXNlX3RpbWVzdGFtcChPaWQgZGJv aWQsIFRpbWVzdGFtcFR6IHRzKQogICogZmFsc2Ugd2l0aG91dCBmbHVzaGluZyB0aGUgZW50cnku ICBPdGhlcndpc2UgcmV0dXJucyB0cnVlLgogICovCiBib29sCi1wZ3N0YXRfZGF0YWJhc2VfZmx1 c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQorcGdzdGF0X2Rh dGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCwK KwkJCQkJCSBib29sIGluX3R4bl9vbmx5LCBib29sICppc19wYXJ0aWFsKQogewogCVBnU3RhdFNo YXJlZF9EYXRhYmFzZSAqc2hhcmVkZW50OwogCVBnU3RhdF9TdGF0REJFbnRyeSAqcGVuZGluZ2Vu dDsKQEAgLTQ0Myw2ICs0NDQsOSBAQCBwZ3N0YXRfZGF0YWJhc2VfZmx1c2hfY2IoUGdTdGF0X0Vu dHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQogCXBlbmRpbmdlbnQgPSAoUGdTdGF0X1N0 YXREQkVudHJ5ICopIGVudHJ5X3JlZi0+cGVuZGluZzsKIAlzaGFyZWRlbnQgPSAoUGdTdGF0U2hh cmVkX0RhdGFiYXNlICopIGVudHJ5X3JlZi0+c2hhcmVkX3N0YXRzOwogCisJLyogdGhpcyBpcyBu b3QgYSBwYXJ0aWFsIGZsdXNoICovCisJKmlzX3BhcnRpYWwgPSBmYWxzZTsKKwogCWlmICghcGdz dGF0X2xvY2tfZW50cnkoZW50cnlfcmVmLCBub3dhaXQpKQogCQlyZXR1cm4gZmFsc2U7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9mdW5jdGlvbi5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2Z1bmN0aW9uLmMKaW5kZXggZTZiODQy ODNjNmMuLmQ1MTM3MWQ3OTY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfZnVuY3Rpb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0 YXRfZnVuY3Rpb24uYwpAQCAtMTkwLDE0ICsxOTAsMjAgQEAgcGdzdGF0X2VuZF9mdW5jdGlvbl91 c2FnZShQZ1N0YXRfRnVuY3Rpb25DYWxsVXNhZ2UgKmZjdSwgYm9vbCBmaW5hbGl6ZSkKICAqIGZh bHNlIHdpdGhvdXQgZmx1c2hpbmcgdGhlIGVudHJ5LiAgT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZS4K ICAqLwogYm9vbAotcGdzdGF0X2Z1bmN0aW9uX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50 cnlfcmVmLCBib29sIG5vd2FpdCkKK3Bnc3RhdF9mdW5jdGlvbl9mbHVzaF9jYihQZ1N0YXRfRW50 cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQsCisJCQkJCQkgYm9vbCBpbl90eG5fb25seSwg Ym9vbCAqaXNfcGFydGlhbCkKIHsKIAlQZ1N0YXRfRnVuY3Rpb25Db3VudHMgKmxvY2FsZW50Owog CVBnU3RhdFNoYXJlZF9GdW5jdGlvbiAqc2hmdW5jZW50OwogCisJQXNzZXJ0KCFpbl90eG5fb25s eSk7CisKIAlsb2NhbGVudCA9IChQZ1N0YXRfRnVuY3Rpb25Db3VudHMgKikgZW50cnlfcmVmLT5w ZW5kaW5nOwogCXNoZnVuY2VudCA9IChQZ1N0YXRTaGFyZWRfRnVuY3Rpb24gKikgZW50cnlfcmVm LT5zaGFyZWRfc3RhdHM7CiAKKwkvKiB0aGlzIGlzIG5vdCBhIHBhcnRpYWwgZmx1c2ggKi8KKwkq aXNfcGFydGlhbCA9IGZhbHNlOworCiAJLyogbG9jYWxlbnQgYWx3YXlzIGhhcyBub24temVybyBj b250ZW50ICovCiAKIAlpZiAoIXBnc3RhdF9sb2NrX2VudHJ5KGVudHJ5X3JlZiwgbm93YWl0KSkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKaW5kZXggMjhkZTI0NTM4ZGMuLmVj NTQxYmYzZjc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRf aW8uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwpAQCAtMTcy LDkgKzE3Miw5IEBAIHBnc3RhdF9mZXRjaF9zdGF0X2lvKHZvaWQpCiAgKiBTaW1wbGVyIHdyYXBw ZXIgb2YgcGdzdGF0X2lvX2ZsdXNoX2NiKCkKICAqLwogdm9pZAotcGdzdGF0X2ZsdXNoX2lvKGJv b2wgbm93YWl0KQorcGdzdGF0X2ZsdXNoX2lvKGJvb2wgbm93YWl0LCBib29sIGluX3R4bl9vbmx5 KQogewotCSh2b2lkKSBwZ3N0YXRfaW9fZmx1c2hfY2Iobm93YWl0KTsKKwkodm9pZCkgcGdzdGF0 X2lvX2ZsdXNoX2NiKG5vd2FpdCwgaW5fdHhuX29ubHkpOwogfQogCiAvKgpAQCAtMTg2LDcgKzE4 Niw3IEBAIHBnc3RhdF9mbHVzaF9pbyhib29sIG5vd2FpdCkKICAqIGFjcXVpcmVkLiBPdGhlcndp c2UsIHJldHVybiBmYWxzZS4KICAqLwogYm9vbAotcGdzdGF0X2lvX2ZsdXNoX2NiKGJvb2wgbm93 YWl0KQorcGdzdGF0X2lvX2ZsdXNoX2NiKGJvb2wgbm93YWl0LCBib29sIGluX3R4bl9vbmx5KQog ewogCUxXTG9jawkgICAqYmt0eXBlX2xvY2s7CiAJUGdTdGF0X0JrdHlwZUlPICpia3R5cGVfc2hz dGF0czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxh dGlvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKaW5k ZXggYmM4YzQzYjk2YWEuLjMzMzU5Y2YwN2IwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfcmVsYXRpb24uYwpAQCAtNDcsNyArNDcsMTkgQEAgc3RhdGljIHZvaWQgYWRk X3RhYnN0YXRfeGFjdF9sZXZlbChQZ1N0YXRfVGFibGVTdGF0dXMgKnBnc3RhdF9pbmZvLCBpbnQg bmVzdF9sZXYKIHN0YXRpYyB2b2lkIGVuc3VyZV90YWJzdGF0X3hhY3RfbGV2ZWwoUGdTdGF0X1Rh YmxlU3RhdHVzICpwZ3N0YXRfaW5mbyk7CiBzdGF0aWMgdm9pZCBzYXZlX3RydW5jZHJvcF9jb3Vu dGVycyhQZ1N0YXRfVGFibGVYYWN0U3RhdHVzICp0cmFucywgYm9vbCBpc19kcm9wKTsKIHN0YXRp YyB2b2lkIHJlc3RvcmVfdHJ1bmNkcm9wX2NvdW50ZXJzKFBnU3RhdF9UYWJsZVhhY3RTdGF0dXMg KnRyYW5zKTsKK3N0YXRpYyB2b2lkIGZsdXNoX3JlbGF0aW9uX2luX3RyYW5zYWN0aW9uX3N0YXRz KFBnU3RhdF9TdGF0VGFiRW50cnkgKnRhYmVudHJ5LAorCQkJCQkJCQkJCQkJUGdTdGF0X1RhYmxl Q291bnRzICpjb3VudHMsIGJvb2wgaW5fdHhuX29ubHkpOwogCisvKgorICogVXBkYXRlIGRhdGFi YXNlIHN0YXRpc3RpY3Mgd2l0aCBub24tdHJhbnNhY3Rpb25hbCBzdGF0cy4KKyAqLworI2RlZmlu ZSBVUERBVEVfREFUQUJBU0VfSU5fVFJBTlNBQ1RJT05fU1RBVFMoZGJlbnRyeSwgY291bnRzKQkJ CQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJKGRiZW50cnkpLT50dXBsZXNfcmV0dXJuZWQg Kz0gKGNvdW50cyktPnR1cGxlc19yZXR1cm5lZDsJXAorCQkoZGJlbnRyeSktPnR1cGxlc19mZXRj aGVkICs9IChjb3VudHMpLT50dXBsZXNfZmV0Y2hlZDsJCVwKKwkJKGRiZW50cnkpLT5ibG9ja3Nf ZmV0Y2hlZCArPSAoY291bnRzKS0+YmxvY2tzX2ZldGNoZWQ7CQlcCisJCShkYmVudHJ5KS0+Ymxv Y2tzX2hpdCArPSAoY291bnRzKS0+YmxvY2tzX2hpdDsJCQkJXAorCX0gd2hpbGUgKDApCiAKIC8q CiAgKiBDb3B5IHN0YXRzIGJldHdlZW4gcmVsYXRpb25zLiBUaGlzIGlzIHVzZWQgZm9yIHRoaW5n cyBsaWtlIFJFSU5ERVgKQEAgLTI2Nyw4ICsyNzksOCBAQCBwZ3N0YXRfcmVwb3J0X3ZhY3V1bShS ZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVyIGxpdmV0dXBsZXMsCiAJICogaXMgZG9uZSAtLSB3 aGljaCB3aWxsIGxpa2VseSB2YWN1dW0gbWFueSByZWxhdGlvbnMgLS0gb3IgdW50aWwgdGhlCiAJ ICogVkFDVVVNIGNvbW1hbmQgaGFzIHByb2Nlc3NlZCBhbGwgdGFibGVzIGFuZCBjb21taXR0ZWQu CiAJICovCi0JcGdzdGF0X2ZsdXNoX2lvKGZhbHNlKTsKLQkodm9pZCkgcGdzdGF0X2ZsdXNoX2Jh Y2tlbmQoZmFsc2UsIFBHU1RBVF9CQUNLRU5EX0ZMVVNIX0lPKTsKKwlwZ3N0YXRfZmx1c2hfaW8o ZmFsc2UsIHRydWUpOworCSh2b2lkKSBwZ3N0YXRfZmx1c2hfYmFja2VuZChmYWxzZSwgUEdTVEFU X0JBQ0tFTkRfRkxVU0hfSU8sIHRydWUpOwogfQogCiAvKgpAQCAtMzYyLDggKzM3NCw4IEBAIHBn c3RhdF9yZXBvcnRfYW5hbHl6ZShSZWxhdGlvbiByZWwsCiAJcGdzdGF0X3VubG9ja19lbnRyeShl bnRyeV9yZWYpOwogCiAJLyogc2VlIHBnc3RhdF9yZXBvcnRfdmFjdXVtKCkgKi8KLQlwZ3N0YXRf Zmx1c2hfaW8oZmFsc2UpOwotCSh2b2lkKSBwZ3N0YXRfZmx1c2hfYmFja2VuZChmYWxzZSwgUEdT VEFUX0JBQ0tFTkRfRkxVU0hfSU8pOworCXBnc3RhdF9mbHVzaF9pbyhmYWxzZSwgdHJ1ZSk7CisJ KHZvaWQpIHBnc3RhdF9mbHVzaF9iYWNrZW5kKGZhbHNlLCBQR1NUQVRfQkFDS0VORF9GTFVTSF9J TywgdHJ1ZSk7CiB9CiAKIC8qCkBAIC04MDIsNiArODE0LDI5IEBAIHBnc3RhdF90d29waGFzZV9w b3N0YWJvcnQoRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCwgdWludDE2IGluZm8sCiAJCXJlYy0+dHVw bGVzX2luc2VydGVkICsgcmVjLT50dXBsZXNfdXBkYXRlZDsKIH0KIAorLyoKKyAqIEhlbHBlciBm dW5jdGlvbiB0byBmbHVzaCBub24tdHJhbnNhY3Rpb25hbCBzdGF0aXN0aWNzLgorICovCitzdGF0 aWMgdm9pZAorZmx1c2hfcmVsYXRpb25faW5fdHJhbnNhY3Rpb25fc3RhdHMoUGdTdGF0X1N0YXRU YWJFbnRyeSAqdGFiZW50cnksIFBnU3RhdF9UYWJsZUNvdW50cyAqY291bnRzLAorCQkJCQkJCQkJ Ym9vbCBpbl90eG5fb25seSkKK3sKKwlUaW1lc3RhbXBUeiB0OworCisJdGFiZW50cnktPm51bXNj YW5zICs9IGNvdW50cy0+bnVtc2NhbnM7CisJaWYgKGNvdW50cy0+bnVtc2NhbnMpCisJeworCQl0 ID0gaW5fdHhuX29ubHkgPyBHZXRDdXJyZW50VGltZXN0YW1wKCkgOiBHZXRDdXJyZW50VHJhbnNh Y3Rpb25TdG9wVGltZXN0YW1wKCk7CisJCWlmICh0ID4gdGFiZW50cnktPmxhc3RzY2FuKQorCQkJ dGFiZW50cnktPmxhc3RzY2FuID0gdDsKKwl9CisKKwl0YWJlbnRyeS0+dHVwbGVzX3JldHVybmVk ICs9IGNvdW50cy0+dHVwbGVzX3JldHVybmVkOworCXRhYmVudHJ5LT50dXBsZXNfZmV0Y2hlZCAr PSBjb3VudHMtPnR1cGxlc19mZXRjaGVkOworCXRhYmVudHJ5LT5ibG9ja3NfZmV0Y2hlZCArPSBj b3VudHMtPmJsb2Nrc19mZXRjaGVkOworCXRhYmVudHJ5LT5ibG9ja3NfaGl0ICs9IGNvdW50cy0+ YmxvY2tzX2hpdDsKK30KKwogLyoKICAqIEZsdXNoIG91dCBwZW5kaW5nIHN0YXRzIGZvciB0aGUg ZW50cnkKICAqCkBAIC04MTAsOSArODQ1LDE3IEBAIHBnc3RhdF90d29waGFzZV9wb3N0YWJvcnQo RnVsbFRyYW5zYWN0aW9uSWQgZnhpZCwgdWludDE2IGluZm8sCiAgKgogICogU29tZSBvZiB0aGUg c3RhdHMgYXJlIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZyBwZW5kaW5nIGRhdGFiYXNlIHN0 YXRzCiAgKiBlbnRyeSB3aGVuIHN1Y2Nlc3NmdWxseSBmbHVzaGluZy4KKyAqCisgKiBJZiBpbl90 eG5fb25seSBpcyB0cnVlLCBvbmx5IG5vbi10cmFuc2FjdGlvbmFsIGZpZWxkcyBhcmUgZmx1c2hl ZAorICogKG51bXNjYW5zLCB0dXBsZXNfcmV0dXJuZWQsIHR1cGxlc19mZXRjaGVkLCBibG9ja3Nf ZmV0Y2hlZCwgYmxvY2tzX2hpdCkuCisgKiBUcmFuc2FjdGlvbmFsIGZpZWxkcyByZW1haW4gcGVu ZGluZyB1bnRpbCB0cmFuc2FjdGlvbiBib3VuZGFyeS4KKyAqCisgKiBTb21lIG9mIHRoZSBzdGF0 cyBhcmUgY29waWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHBlbmRpbmcgZGF0YWJhc2Ugc3RhdHMK KyAqIGVudHJ5IHdoZW4gc3VjY2Vzc2Z1bGx5IGZsdXNoaW5nLgogICovCiBib29sCi1wZ3N0YXRf cmVsYXRpb25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0 KQorcGdzdGF0X3JlbGF0aW9uX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBi b29sIG5vd2FpdCwKKwkJCQkJCSBib29sIGluX3R4bl9vbmx5LCBib29sICppc19wYXJ0aWFsKQog ewogCU9pZAkJCWRib2lkOwogCVBnU3RhdF9UYWJsZVN0YXR1cyAqbHN0YXRzOyAvKiBwZW5kaW5n IHN0YXRzIGVudHJ5ICAqLwpAQCAtODI0LDYgKzg2Nyw5IEBAIHBnc3RhdF9yZWxhdGlvbl9mbHVz aF9jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpCiAJbHN0YXRzID0g KFBnU3RhdF9UYWJsZVN0YXR1cyAqKSBlbnRyeV9yZWYtPnBlbmRpbmc7CiAJc2h0YWJzdGF0cyA9 IChQZ1N0YXRTaGFyZWRfUmVsYXRpb24gKikgZW50cnlfcmVmLT5zaGFyZWRfc3RhdHM7CiAKKwkv KiB0aGlzIGlzIGEgcGFydGlhbCBmbHVzaCBpZiBpbiBpbl90eG5fb25seSBtb2RlICovCisJKmlz X3BhcnRpYWwgPSBpbl90eG5fb25seTsKKwogCS8qCiAJICogSWdub3JlIGVudHJpZXMgdGhhdCBk aWRuJ3QgYWNjdW11bGF0ZSBhbnkgYWN0dWFsIGNvdW50cywgc3VjaCBhcwogCSAqIGluZGV4ZXMg dGhhdCB3ZXJlIG9wZW5lZCBieSB0aGUgcGxhbm5lciBidXQgbm90IHVzZWQuCkBAIC04MzUsMTkg Kzg4MSwzNiBAQCBwZ3N0YXRfcmVsYXRpb25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRy eV9yZWYsIGJvb2wgbm93YWl0KQogCWlmICghcGdzdGF0X2xvY2tfZW50cnkoZW50cnlfcmVmLCBu b3dhaXQpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQkvKiBhZGQgdGhlIHZhbHVlcyB0byB0aGUgc2hh cmVkIGVudHJ5LiAqLwogCXRhYmVudHJ5ID0gJnNodGFic3RhdHMtPnN0YXRzOwogCi0JdGFiZW50 cnktPm51bXNjYW5zICs9IGxzdGF0cy0+Y291bnRzLm51bXNjYW5zOwotCWlmIChsc3RhdHMtPmNv dW50cy5udW1zY2FucykKKwlpZiAoaW5fdHhuX29ubHkpCiAJewotCQlUaW1lc3RhbXBUeiB0ID0g R2V0Q3VycmVudFRyYW5zYWN0aW9uU3RvcFRpbWVzdGFtcCgpOwogCi0JCWlmICh0ID4gdGFiZW50 cnktPmxhc3RzY2FuKQotCQkJdGFiZW50cnktPmxhc3RzY2FuID0gdDsKKwkJLyogRmx1c2ggbm9u LXRyYW5zYWN0aW9uYWwgc3RhdGlzdGljcyAqLworCQlmbHVzaF9yZWxhdGlvbl9pbl90cmFuc2Fj dGlvbl9zdGF0cyh0YWJlbnRyeSwgJmxzdGF0cy0+Y291bnRzLCB0cnVlKTsKKworCQlwZ3N0YXRf dW5sb2NrX2VudHJ5KGVudHJ5X3JlZik7CisKKwkJLyogQWxzbyB1cGRhdGUgdGhlIGNvcnJlc3Bv bmRpbmcgZmllbGRzIGluIGRhdGFiYXNlIHN0YXRzICovCisJCWRiZW50cnkgPSBwZ3N0YXRfcHJl cF9kYXRhYmFzZV9wZW5kaW5nKGRib2lkKTsKKwkJVVBEQVRFX0RBVEFCQVNFX0lOX1RSQU5TQUNU SU9OX1NUQVRTKGRiZW50cnksICZsc3RhdHMtPmNvdW50cyk7CisKKwkJLyoKKwkJICogQ2xlYXIg dGhlIGZsdXNoZWQgZmllbGRzIGZyb20gcGVuZGluZyBzdGF0cyB0byBwcmV2ZW50CisJCSAqIGRv dWJsZS1jb3VudGluZyB3aGVuIHdlIGZsdXNoIGFsbCBmaWVsZHMgYXQgdHJhbnNhY3Rpb24gYm91 bmRhcnkuCisJCSAqLworCQlsc3RhdHMtPmNvdW50cy5udW1zY2FucyA9IDA7CisJCWxzdGF0cy0+ Y291bnRzLnR1cGxlc19yZXR1cm5lZCA9IDA7CisJCWxzdGF0cy0+Y291bnRzLnR1cGxlc19mZXRj aGVkID0gMDsKKwkJbHN0YXRzLT5jb3VudHMuYmxvY2tzX2ZldGNoZWQgPSAwOworCQlsc3RhdHMt PmNvdW50cy5ibG9ja3NfaGl0ID0gMDsKKworCQlyZXR1cm4gdHJ1ZTsKIAl9Ci0JdGFiZW50cnkt PnR1cGxlc19yZXR1cm5lZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfcmV0dXJuZWQ7Ci0JdGFi ZW50cnktPnR1cGxlc19mZXRjaGVkICs9IGxzdGF0cy0+Y291bnRzLnR1cGxlc19mZXRjaGVkOwor CisJLyogRmx1c2ggbm9uLXRyYW5zYWN0aW9uYWwgc3RhdGlzdGljcyAqLworCWZsdXNoX3JlbGF0 aW9uX2luX3RyYW5zYWN0aW9uX3N0YXRzKHRhYmVudHJ5LCAmbHN0YXRzLT5jb3VudHMsIGZhbHNl KTsKKwogCXRhYmVudHJ5LT50dXBsZXNfaW5zZXJ0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVwbGVz X2luc2VydGVkOwogCXRhYmVudHJ5LT50dXBsZXNfdXBkYXRlZCArPSBsc3RhdHMtPmNvdW50cy50 dXBsZXNfdXBkYXRlZDsKIAl0YWJlbnRyeS0+dHVwbGVzX2RlbGV0ZWQgKz0gbHN0YXRzLT5jb3Vu dHMudHVwbGVzX2RlbGV0ZWQ7CkBAIC04NzcsOSArOTQwLDYgQEAgcGdzdGF0X3JlbGF0aW9uX2Zs dXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAkgKi8KIAl0 YWJlbnRyeS0+aW5zX3NpbmNlX3ZhY3V1bSArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfaW5zZXJ0 ZWQ7CiAKLQl0YWJlbnRyeS0+YmxvY2tzX2ZldGNoZWQgKz0gbHN0YXRzLT5jb3VudHMuYmxvY2tz X2ZldGNoZWQ7Ci0JdGFiZW50cnktPmJsb2Nrc19oaXQgKz0gbHN0YXRzLT5jb3VudHMuYmxvY2tz X2hpdDsKLQogCS8qIENsYW1wIGxpdmVfdHVwbGVzIGluIGNhc2Ugb2YgbmVnYXRpdmUgZGVsdGFf bGl2ZV90dXBsZXMgKi8KIAl0YWJlbnRyeS0+bGl2ZV90dXBsZXMgPSBNYXgodGFiZW50cnktPmxp dmVfdHVwbGVzLCAwKTsKIAkvKiBMaWtld2lzZSBmb3IgZGVhZF90dXBsZXMgKi8KQEAgLTg4OSwx MyArOTQ5LDExIEBAIHBnc3RhdF9yZWxhdGlvbl9mbHVzaF9jYihQZ1N0YXRfRW50cnlSZWYgKmVu dHJ5X3JlZiwgYm9vbCBub3dhaXQpCiAKIAkvKiBUaGUgZW50cnkgd2FzIHN1Y2Nlc3NmdWxseSBm bHVzaGVkLCBhZGQgdGhlIHNhbWUgdG8gZGF0YWJhc2Ugc3RhdHMgKi8KIAlkYmVudHJ5ID0gcGdz dGF0X3ByZXBfZGF0YWJhc2VfcGVuZGluZyhkYm9pZCk7Ci0JZGJlbnRyeS0+dHVwbGVzX3JldHVy bmVkICs9IGxzdGF0cy0+Y291bnRzLnR1cGxlc19yZXR1cm5lZDsKLQlkYmVudHJ5LT50dXBsZXNf ZmV0Y2hlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfZmV0Y2hlZDsKKwlVUERBVEVfREFUQUJB U0VfSU5fVFJBTlNBQ1RJT05fU1RBVFMoZGJlbnRyeSwgJmxzdGF0cy0+Y291bnRzKTsKKwogCWRi ZW50cnktPnR1cGxlc19pbnNlcnRlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfaW5zZXJ0ZWQ7 CiAJZGJlbnRyeS0+dHVwbGVzX3VwZGF0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVwbGVzX3VwZGF0 ZWQ7CiAJZGJlbnRyeS0+dHVwbGVzX2RlbGV0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVwbGVzX2Rl bGV0ZWQ7Ci0JZGJlbnRyeS0+YmxvY2tzX2ZldGNoZWQgKz0gbHN0YXRzLT5jb3VudHMuYmxvY2tz X2ZldGNoZWQ7Ci0JZGJlbnRyeS0+YmxvY2tzX2hpdCArPSBsc3RhdHMtPmNvdW50cy5ibG9ja3Nf aGl0OwogCiAJcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS9wZ3N0YXRfc2xydS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X3NscnUuYwppbmRleCAyMTkwZjM4OGVhZS4uZDhkYzdiZTExZWYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zbHJ1LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvcGdzdGF0X3NscnUuYwpAQCAtMTM5LDcgKzEzOSw3IEBAIHBnc3RhdF9nZXRf c2xydV9pbmRleChjb25zdCBjaGFyICpuYW1lKQogICogYWNxdWlyZWQuIE90aGVyd2lzZSByZXR1 cm4gZmFsc2UuCiAgKi8KIGJvb2wKLXBnc3RhdF9zbHJ1X2ZsdXNoX2NiKGJvb2wgbm93YWl0KQor cGdzdGF0X3NscnVfZmx1c2hfY2IoYm9vbCBub3dhaXQsIGJvb2wgaW5fdHhuX29ubHkpCiB7CiAJ UGdTdGF0U2hhcmVkX1NMUlUgKnN0YXRzX3NobWVtID0gJnBnU3RhdExvY2FsLnNobWVtLT5zbHJ1 OwogCWludAkJCWk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0 YXRfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc3Vi c2NyaXB0aW9uLmMKaW5kZXggMzI3N2NmODhhNGUuLjRmMjg5NjgzZDMzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc3Vic2NyaXB0aW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3N1YnNjcmlwdGlvbi5jCkBAIC0xMTcsMTQg KzExNywyMCBAQCBwZ3N0YXRfZmV0Y2hfc3RhdF9zdWJzY3JpcHRpb24oT2lkIHN1YmlkKQogICog ZmFsc2Ugd2l0aG91dCBmbHVzaGluZyB0aGUgZW50cnkuICBPdGhlcndpc2UgcmV0dXJucyB0cnVl LgogICovCiBib29sCi1wZ3N0YXRfc3Vic2NyaXB0aW9uX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJl ZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKK3Bnc3RhdF9zdWJzY3JpcHRpb25fZmx1c2hfY2Io UGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0LAorCQkJCQkJCSBib29sIGlu X3R4bl9vbmx5LCBib29sICppc19wYXJ0aWFsKQogewogCVBnU3RhdF9CYWNrZW5kU3ViRW50cnkg KmxvY2FsZW50OwogCVBnU3RhdFNoYXJlZF9TdWJzY3JpcHRpb24gKnNoc3ViZW50OwogCisJQXNz ZXJ0KCFpbl90eG5fb25seSk7CisKIAlsb2NhbGVudCA9IChQZ1N0YXRfQmFja2VuZFN1YkVudHJ5 ICopIGVudHJ5X3JlZi0+cGVuZGluZzsKIAlzaHN1YmVudCA9IChQZ1N0YXRTaGFyZWRfU3Vic2Ny aXB0aW9uICopIGVudHJ5X3JlZi0+c2hhcmVkX3N0YXRzOwogCisJLyogdGhpcyBpcyBub3QgYSBw YXJ0aWFsIGZsdXNoICovCisJKmlzX3BhcnRpYWwgPSBmYWxzZTsKKwogCS8qIGxvY2FsZW50IGFs d2F5cyBoYXMgbm9uLXplcm8gY29udGVudCAqLwogCiAJaWYgKCFwZ3N0YXRfbG9ja19lbnRyeShl bnRyeV9yZWYsIG5vd2FpdCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfd2FsLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfd2FsLmMK aW5kZXggMTgzZTBhN2E5N2IuLmJmNzk2YWQ2NTVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9wZ3N0YXRfd2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X3dhbC5jCkBAIC01MSwxMiArNTEsMTIgQEAgcGdzdGF0X3JlcG9ydF93YWwoYm9v bCBmb3JjZSkKIAlub3dhaXQgPSAhZm9yY2U7CiAKIAkvKiBmbHVzaCB3YWwgc3RhdHMgKi8KLQko dm9pZCkgcGdzdGF0X3dhbF9mbHVzaF9jYihub3dhaXQpOwotCXBnc3RhdF9mbHVzaF9iYWNrZW5k KG5vd2FpdCwgUEdTVEFUX0JBQ0tFTkRfRkxVU0hfV0FMKTsKKwkodm9pZCkgcGdzdGF0X3dhbF9m bHVzaF9jYihub3dhaXQsIHRydWUpOworCSh2b2lkKSBwZ3N0YXRfZmx1c2hfYmFja2VuZChub3dh aXQsIFBHU1RBVF9CQUNLRU5EX0ZMVVNIX1dBTCwgdHJ1ZSk7CiAKIAkvKiBmbHVzaCBJTyBzdGF0 cyAqLwotCXBnc3RhdF9mbHVzaF9pbyhub3dhaXQpOwotCSh2b2lkKSBwZ3N0YXRfZmx1c2hfYmFj a2VuZChub3dhaXQsIFBHU1RBVF9CQUNLRU5EX0ZMVVNIX0lPKTsKKwlwZ3N0YXRfZmx1c2hfaW8o bm93YWl0LCB0cnVlKTsKKwkodm9pZCkgcGdzdGF0X2ZsdXNoX2JhY2tlbmQobm93YWl0LCBQR1NU QVRfQkFDS0VORF9GTFVTSF9JTywgdHJ1ZSk7CiB9CiAKIC8qCkBAIC04OCw3ICs4OCw3IEBAIHBn c3RhdF93YWxfaGF2ZV9wZW5kaW5nKHZvaWQpCiAgKiBhY3F1aXJlZC4gT3RoZXJ3aXNlIHJldHVy biBmYWxzZS4KICAqLwogYm9vbAotcGdzdGF0X3dhbF9mbHVzaF9jYihib29sIG5vd2FpdCkKK3Bn c3RhdF93YWxfZmx1c2hfY2IoYm9vbCBub3dhaXQsIGJvb2wgaW5fdHhuX29ubHkpCiB7CiAJUGdT dGF0U2hhcmVkX1dhbCAqc3RhdHNfc2htZW0gPSAmcGdTdGF0TG9jYWwuc2htZW0tPndhbDsKIAlX YWxVc2FnZQl3YWxfdXNhZ2VfZGlmZiA9IHswfTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5k ZXggMzZhZDcwOGIzNjAuLmJjY2U1NDM2N2Q1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpA QCAtNDAsNiArNDAsNyBAQCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0 UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NTaWduYWxCYXJyaWVy UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IExvZ01lbW9yeUNvbnRleHRQ ZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVN0YXRzVXBkYXRlVGlt ZW91dFBlbmRpbmcgPSBmYWxzZTsKK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBJblRyYW5zYWN0aW9u U3RhdHNVcGRhdGVUaW1lb3V0UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgdWludDMyIEludGVy cnVwdEhvbGRvZmZDb3VudCA9IDA7CiB2b2xhdGlsZSB1aW50MzIgUXVlcnlDYW5jZWxIb2xkb2Zm Q291bnQgPSAwOwogdm9sYXRpbGUgdWludDMyIENyaXRTZWN0aW9uQ291bnQgPSAwOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IDI2MTE4NjYxZjA3Li4yN2VjZjBkZjE2ZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvcG9zdGluaXQuYwpAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgInV0aWxz L2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvcGdfbG9jYWxlLmgiCisjaW5jbHVkZSAidXRpbHMvcGdzdGF0X2ludGVybmFsLmgi CiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgi CiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgpAQCAtODksNiArOTAsNyBAQCBzdGF0aWMgdm9p ZCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0SGFuZGxlcih2b2lkKTsKIHN0YXRpYyB2 b2lkIFRyYW5zYWN0aW9uVGltZW91dEhhbmRsZXIodm9pZCk7CiBzdGF0aWMgdm9pZCBJZGxlU2Vz c2lvblRpbWVvdXRIYW5kbGVyKHZvaWQpOwogc3RhdGljIHZvaWQgSWRsZVN0YXRzVXBkYXRlVGlt ZW91dEhhbmRsZXIodm9pZCk7CitzdGF0aWMgdm9pZCBJblRyYW5zYWN0aW9uU3RhdHNVcGRhdGVU aW1lb3V0SGFuZGxlcih2b2lkKTsKIHN0YXRpYyB2b2lkIENsaWVudENoZWNrVGltZW91dEhhbmRs ZXIodm9pZCk7CiBzdGF0aWMgYm9vbCBUaGVyZUlzQXRMZWFzdE9uZVJvbGUodm9pZCk7CiBzdGF0 aWMgdm9pZCBwcm9jZXNzX3N0YXJ0dXBfb3B0aW9ucyhQb3J0ICpwb3J0LCBib29sIGFtX3N1cGVy dXNlcik7CkBAIC03NzQsNiArNzc2LDggQEAgSW5pdFBvc3RncmVzKGNvbnN0IGNoYXIgKmluX2Ri bmFtZSwgT2lkIGRib2lkLAogCQlSZWdpc3RlclRpbWVvdXQoQ0xJRU5UX0NPTk5FQ1RJT05fQ0hF Q0tfVElNRU9VVCwgQ2xpZW50Q2hlY2tUaW1lb3V0SGFuZGxlcik7CiAJCVJlZ2lzdGVyVGltZW91 dChJRExFX1NUQVRTX1VQREFURV9USU1FT1VULAogCQkJCQkJSWRsZVN0YXRzVXBkYXRlVGltZW91 dEhhbmRsZXIpOworCQlSZWdpc3RlclRpbWVvdXQoSU5fVFJBTlNBQ1RJT05fU1RBVFNfVVBEQVRF X1RJTUVPVVQsCisJCQkJCQlJblRyYW5zYWN0aW9uU3RhdHNVcGRhdGVUaW1lb3V0SGFuZGxlcik7 CiAJfQogCiAJLyoKQEAgLTE0MzMsNiArMTQzNywxNCBAQCBJZGxlU3RhdHNVcGRhdGVUaW1lb3V0 SGFuZGxlcih2b2lkKQogCVNldExhdGNoKE15TGF0Y2gpOwogfQogCitzdGF0aWMgdm9pZAorSW5U cmFuc2FjdGlvblN0YXRzVXBkYXRlVGltZW91dEhhbmRsZXIodm9pZCkKK3sKKwlJblRyYW5zYWN0 aW9uU3RhdHNVcGRhdGVUaW1lb3V0UGVuZGluZyA9IHRydWU7CisJSW50ZXJydXB0UGVuZGluZyA9 IHRydWU7CisJU2V0TGF0Y2goTXlMYXRjaCk7Cit9CisKIHN0YXRpYyB2b2lkCiBDbGllbnRDaGVj a1RpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRt aW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IGYxNmYzNTY1OWI5Li43MDUxZTRi NmYzZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmgKQEAgLTk2LDYgKzk2LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0 aWxlIHNpZ19hdG9taWNfdCBJZGxlU2Vzc2lvblRpbWVvdXRQZW5kaW5nOwogZXh0ZXJuIFBHRExM SU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQcm9jU2lnbmFsQmFycmllclBlbmRpbmc7CiBl eHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IExvZ01lbW9yeUNvbnRleHRQ ZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlU3Rh dHNVcGRhdGVUaW1lb3V0UGVuZGluZzsKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdf YXRvbWljX3QgSW5UcmFuc2FjdGlvblN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmc7CiAKIGV4dGVy biBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9u UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50 Q29ubmVjdGlvbkxvc3Q7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9p bmNsdWRlL3Bnc3RhdC5oCmluZGV4IDIxNmI5MzQ5MmJhLi44NTcxZWIxYWZkNyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTM4 LDYgKzM4LDEzIEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YSAqUmVsYXRpb247CiAvKiBE ZWZhdWx0IGRpcmVjdG9yeSB0byBzdG9yZSB0ZW1wb3Jhcnkgc3RhdGlzdGljcyBkYXRhIGluICov CiAjZGVmaW5lIFBHX1NUQVRfVE1QX0RJUgkJInBnX3N0YXRfdG1wIgogCisvKgorICogSW50ZXJ2 YWwgaW4gbWlsbGlzZWNvbmRzIGZvciBmbHVzaGluZyBGTFVTSF9JTl9UUkFOU0FDVElPTiBzdGF0 cyB0byBzaGFyZWQKKyAqIG1lbW9yeS4gIEFuIGV4cGxpY2l0IHRyYW5zYWN0aW9uIGFsd2F5cyBl bnRlcnMgaWRsZS1pbi10cmFuc2FjdGlvbiBzdGF0ZQorICogYmV0d2VlbiBjb21tYW5kcywgd2hp Y2ggaXMgd2hlbiB0aGlzIHRpbWVvdXQgaXMgZW5hYmxlZC4KKyAqLworI2RlZmluZSBQR1NUQVRf SURMRV9UWE5fSU5URVJWQUwJMTAwMDAKKwogLyogVmFsdWVzIGZvciB0cmFja19mdW5jdGlvbnMg R1VDIHZhcmlhYmxlIC0tLSBvcmRlciBpcyBzaWduaWZpY2FudCEgKi8KIHR5cGVkZWYgZW51bSBU cmFja0Z1bmN0aW9uc0xldmVsCiB7CkBAIC01MzYsNiArNTQzLDcgQEAgZXh0ZXJuIHZvaWQgcGdz dGF0X2luaXRpYWxpemUodm9pZCk7CiAKIC8qIEZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBiYWNrZW5k cyAqLwogZXh0ZXJuIGxvbmcgcGdzdGF0X3JlcG9ydF9zdGF0KGJvb2wgZm9yY2UpOworZXh0ZXJu IHZvaWQgcGdzdGF0X3JlcG9ydF9pbl90cmFuc2FjdGlvbl9zdGF0KGJvb2wgZm9yY2UpOwogZXh0 ZXJuIHZvaWQgcGdzdGF0X2ZvcmNlX25leHRfZmx1c2godm9pZCk7CiAKIGV4dGVybiB2b2lkIHBn c3RhdF9yZXNldF9jb3VudGVycyh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L3Bnc3RhdF9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmgK aW5kZXggOWI4ZmJhZTAwZWQuLmU5ZjRkYzg1NTI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9wZ3N0YXRfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50 ZXJuYWwuaApAQCAtMjI0LDYgKzIyNCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3ViWGFj dFN0YXR1cwogCVBnU3RhdF9UYWJsZVhhY3RTdGF0dXMgKmZpcnN0OwkvKiBoZWFkIG9mIGxpc3Qg Zm9yIHRoaXMgc3VieGFjdCAqLwogfSBQZ1N0YXRfU3ViWGFjdFN0YXR1czsKIAorLyoKKyAqIEZs dXNoIG1vZGUgZm9yIHN0YXRpc3RpY3Mga2luZHMuCisgKgorICogRkxVU0hfQVRfVFhOX0JPVU5E QVJZIGhhcyB0byBiZSB0aGUgZmlyc3QgYmVjYXVzZSB3ZSB3YW50IGl0IHRvIGJlIHRoZQorICog ZGVmYXVsdCB2YWx1ZS4KKyAqLwordHlwZWRlZiBlbnVtIFBnU3RhdF9GbHVzaE1vZGUKK3sKKwlG TFVTSF9BVF9UWE5fQk9VTkRBUlksCQkvKiBBbGwgZmllbGRzIGNhbiBvbmx5IGJlIGZsdXNoZWQg YXQKKwkJCQkJCQkJICogdHJhbnNhY3Rpb24gYm91bmRhcnkgKi8KKwlGTFVTSF9JTl9UUkFOU0FD VElPTiwJCS8qIEFsbCBmaWVsZHMgY2FuIGJlIGZsdXNoZWQgaW4gYSB0cmFuc2FjdGlvbiAqLwor fSBQZ1N0YXRfRmx1c2hNb2RlOwogCiAvKgogICogTWV0YWRhdGEgZm9yIGEgc3BlY2lmaWMga2lu ZCBvZiBzdGF0aXN0aWNzLgpAQCAtMjUxLDYgKzI2MywxNiBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0 YXRfS2luZEluZm8KIAkgKi8KIAlib29sCQl0cmFja19lbnRyeV9jb3VudDoxOwogCisJLyoKKwkg KiBUaGUgbW9kZSBvZiB3aGVuIHRvIGZsdXNoIHN0YXRzLiBTZWUgUGdTdGF0X0ZsdXNoTW9kZSBm b3IgbW9yZSBkZXRhaWxzLgorCSAqCisJICogVGhpcyBtZW1iZXIgb25seSBoYXMgbWVhbmluZyBm b3Igc3RhdGlzdGljcyBraW5kcyB0aGF0IGFjY3VtdWxhdGUKKwkgKiBwZW5kaW5nIHN0YXRzIGFu ZCB1c2UgZmx1c2ggY2FsbGJhY2tzLiBGb3Iga2luZHMgdGhhdCB3cml0ZSBkaXJlY3RseSB0bwor CSAqIHNoYXJlZCBtZW1vcnkgKGUuZy4sIGFyY2hpdmVyLCBiZ3dyaXRlciwgY2hlY2twb2ludGVy KSwgdGhpcyBtZW1iZXIgaGFzCisJICogbm8gZWZmZWN0LgorCSAqLworCVBnU3RhdF9GbHVzaE1v ZGUgZmx1c2hfbW9kZTsKKwogCS8qCiAJICogVGhlIHNpemUgb2YgYW4gZW50cnkgaW4gdGhlIHNo YXJlZCBzdGF0cyBoYXNoIHRhYmxlIChwb2ludGVkIHRvIGJ5CiAJICogUGdTdGF0U2hhcmVkX0hh c2hFbnRyeS0+Ym9keSkuICBGb3IgZml4ZWQtbnVtYmVyZWQgc3RhdGlzdGljcywgdGhpcyBpcwpA QCAtMjk3LDggKzMxOSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfS2luZEluZm8KIAkgKiBG b3IgdmFyaWFibGUtbnVtYmVyZWQgc3RhdHM6IGZsdXNoIHBlbmRpbmcgc3RhdHMuIFJlcXVpcmVk IGlmIHBlbmRpbmcKIAkgKiBkYXRhIGlzIHVzZWQuIFNlZSBmbHVzaF9zdGF0aWNfY2Igd2hlbiBk ZWFsaW5nIHdpdGggc3RhdHMgZGF0YSB0aGF0CiAJICogdGhhdCBjYW5ub3QgdXNlIFBnU3RhdF9F bnRyeVJlZi0+cGVuZGluZy4KKwkgKgorCSAqIFRoZSBpbl90eG5fb25seSBwYXJhbWV0ZXIgaW5k aWNhdGVzIHdoZXRoZXIgdGhpcyBpcyBhbiBpbi10cmFuc2FjdGlvbgorCSAqIGZsdXNoLiBUaGUg aXNfcGFydGlhbCBwYXJhbWV0ZXIgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBpcyBhIHBhcnRpYWwK KwkgKiBmbHVzaC4KIAkgKi8KLQlib29sCQkoKmZsdXNoX3BlbmRpbmdfY2IpIChQZ1N0YXRfRW50 cnlSZWYgKnNyLCBib29sIG5vd2FpdCk7CisJYm9vbAkJKCpmbHVzaF9wZW5kaW5nX2NiKSAoUGdT dGF0X0VudHJ5UmVmICpzciwgYm9vbCBub3dhaXQsCisJCQkJCQkJCQkgYm9vbCBpbl90eG5fb25s eSwgYm9vbCAqaXNfcGFydGlhbCk7CiAKIAkvKgogCSAqIEZvciB2YXJpYWJsZS1udW1iZXJlZCBz dGF0czogZGVsZXRlIHBlbmRpbmcgc3RhdHMuIE9wdGlvbmFsLgpAQCAtMzY2LDggKzM5MywxMSBA QCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfS2luZEluZm8KIAkgKgogCSAqICJwZ3N0YXRfcmVwb3J0 X2ZpeGVkIiBuZWVkcyB0byBiZSBzZXQgdG8gdHJpZ2dlciB0aGUgZmx1c2ggb2YgcGVuZGluZwog CSAqIHN0YXRzLgorCSAqCisJICogVGhlIGluX3R4bl9vbmx5IHBhcmFtZXRlciBpbmRpY2F0ZXMg d2hldGhlciB0aGlzIGlzIGFuIGluLXRyYW5zYWN0aW9uCisJICogZmx1c2guCiAJICovCi0JYm9v bAkJKCpmbHVzaF9zdGF0aWNfY2IpIChib29sIG5vd2FpdCk7CisJYm9vbAkJKCpmbHVzaF9zdGF0 aWNfY2IpIChib29sIG5vd2FpdCwgYm9vbCBpbl90eG5fb25seSk7CiAKIAkvKgogCSAqIEZvciBm aXhlZC1udW1iZXJlZCBzdGF0aXN0aWNzOiBSZXNldCBBbGwuCkBAIC02OTYsOCArNzI2LDggQEAg ZXh0ZXJuIHZvaWQgcGdzdGF0X2FyY2hpdmVyX3NuYXBzaG90X2NiKHZvaWQpOwogI2RlZmluZSBQ R1NUQVRfQkFDS0VORF9GTFVTSF9XQUwgICAoMSA8PCAxKSAvKiBGbHVzaCBXQUwgc3RhdGlzdGlj cyAqLwogI2RlZmluZSBQR1NUQVRfQkFDS0VORF9GTFVTSF9BTEwgICAoUEdTVEFUX0JBQ0tFTkRf RkxVU0hfSU8gfCBQR1NUQVRfQkFDS0VORF9GTFVTSF9XQUwpCiAKLWV4dGVybiBib29sIHBnc3Rh dF9mbHVzaF9iYWNrZW5kKGJvb2wgbm93YWl0LCBiaXRzMzIgZmxhZ3MpOwotZXh0ZXJuIGJvb2wg cGdzdGF0X2JhY2tlbmRfZmx1c2hfY2IoYm9vbCBub3dhaXQpOworZXh0ZXJuIGJvb2wgcGdzdGF0 X2ZsdXNoX2JhY2tlbmQoYm9vbCBub3dhaXQsIGJpdHMzMiBmbGFncywgYm9vbCBpbl90eG5fb25s eSk7CitleHRlcm4gYm9vbCBwZ3N0YXRfYmFja2VuZF9mbHVzaF9jYihib29sIG5vd2FpdCwgYm9v bCBpbl90eG5fb25seSk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfYmFja2VuZF9yZXNldF90aW1lc3Rh bXBfY2IoUGdTdGF0U2hhcmVkX0NvbW1vbiAqaGVhZGVyLAogCQkJCQkJCQkJCQkgIFRpbWVzdGFt cFR6IHRzKTsKIApAQCAtNzI5LDcgKzc1OSw4IEBAIGV4dGVybiB2b2lkIEF0RU9YYWN0X1BnU3Rh dF9EYXRhYmFzZShib29sIGlzQ29tbWl0LCBib29sIHBhcmFsbGVsKTsKIAogZXh0ZXJuIFBnU3Rh dF9TdGF0REJFbnRyeSAqcGdzdGF0X3ByZXBfZGF0YWJhc2VfcGVuZGluZyhPaWQgZGJvaWQpOwog ZXh0ZXJuIHZvaWQgcGdzdGF0X3Jlc2V0X2RhdGFiYXNlX3RpbWVzdGFtcChPaWQgZGJvaWQsIFRp bWVzdGFtcFR6IHRzKTsKLWV4dGVybiBib29sIHBnc3RhdF9kYXRhYmFzZV9mbHVzaF9jYihQZ1N0 YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpOworZXh0ZXJuIGJvb2wgcGdzdGF0 X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2Fp dCwKKwkJCQkJCQkJCSBib29sIGluX3R4bl9vbmx5LCBib29sICppc19wYXJ0aWFsKTsKIGV4dGVy biB2b2lkIHBnc3RhdF9kYXRhYmFzZV9yZXNldF90aW1lc3RhbXBfY2IoUGdTdGF0U2hhcmVkX0Nv bW1vbiAqaGVhZGVyLCBUaW1lc3RhbXBUeiB0cyk7CiAKIApAQCAtNzM3LDcgKzc2OCw4IEBAIGV4 dGVybiB2b2lkIHBnc3RhdF9kYXRhYmFzZV9yZXNldF90aW1lc3RhbXBfY2IoUGdTdGF0U2hhcmVk X0NvbW1vbiAqaGVhZGVyLCBUaW1lCiAgKiBGdW5jdGlvbnMgaW4gcGdzdGF0X2Z1bmN0aW9uLmMK ICAqLwogCi1leHRlcm4gYm9vbCBwZ3N0YXRfZnVuY3Rpb25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5 UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KTsKK2V4dGVybiBib29sIHBnc3RhdF9mdW5jdGlv bl9mbHVzaF9jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQsCisJCQkJ CQkJCQkgYm9vbCBpbl90eG5fb25seSwgYm9vbCAqaXNfcGFydGlhbCk7CiBleHRlcm4gdm9pZCBw Z3N0YXRfZnVuY3Rpb25fcmVzZXRfdGltZXN0YW1wX2NiKFBnU3RhdFNoYXJlZF9Db21tb24gKmhl YWRlciwgVGltZXN0YW1wVHogdHMpOwogCiAKQEAgLTc0NSw5ICs3NzcsOSBAQCBleHRlcm4gdm9p ZCBwZ3N0YXRfZnVuY3Rpb25fcmVzZXRfdGltZXN0YW1wX2NiKFBnU3RhdFNoYXJlZF9Db21tb24g KmhlYWRlciwgVGltZQogICogRnVuY3Rpb25zIGluIHBnc3RhdF9pby5jCiAgKi8KIAotZXh0ZXJu IHZvaWQgcGdzdGF0X2ZsdXNoX2lvKGJvb2wgbm93YWl0KTsKK2V4dGVybiB2b2lkIHBnc3RhdF9m bHVzaF9pbyhib29sIG5vd2FpdCwgYm9vbCBpbl90eG5fb25seSk7CiAKLWV4dGVybiBib29sIHBn c3RhdF9pb19mbHVzaF9jYihib29sIG5vd2FpdCk7CitleHRlcm4gYm9vbCBwZ3N0YXRfaW9fZmx1 c2hfY2IoYm9vbCBub3dhaXQsIGJvb2wgaW5fdHhuX29ubHkpOwogZXh0ZXJuIHZvaWQgcGdzdGF0 X2lvX2luaXRfc2htZW1fY2Iodm9pZCAqc3RhdHMpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2lvX3Jl c2V0X2FsbF9jYihUaW1lc3RhbXBUeiB0cyk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfaW9fc25hcHNo b3RfY2Iodm9pZCk7CkBAIC03NjIsNyArNzk0LDggQEAgZXh0ZXJuIHZvaWQgQXRFT1N1YlhhY3Rf UGdTdGF0X1JlbGF0aW9ucyhQZ1N0YXRfU3ViWGFjdFN0YXR1cyAqeGFjdF9zdGF0ZSwgYm9vbAog ZXh0ZXJuIHZvaWQgQXRQcmVwYXJlX1BnU3RhdF9SZWxhdGlvbnMoUGdTdGF0X1N1YlhhY3RTdGF0 dXMgKnhhY3Rfc3RhdGUpOwogZXh0ZXJuIHZvaWQgUG9zdFByZXBhcmVfUGdTdGF0X1JlbGF0aW9u cyhQZ1N0YXRfU3ViWGFjdFN0YXR1cyAqeGFjdF9zdGF0ZSk7CiAKLWV4dGVybiBib29sIHBnc3Rh dF9yZWxhdGlvbl9mbHVzaF9jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dh aXQpOworZXh0ZXJuIGJvb2wgcGdzdGF0X3JlbGF0aW9uX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJl ZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCwKKwkJCQkJCQkJCSBib29sIGluX3R4bl9vbmx5LCBi b29sICppc19wYXJ0aWFsKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZWxhdGlvbl9kZWxldGVfcGVu ZGluZ19jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZik7CiBleHRlcm4gdm9pZCBwZ3N0YXRf cmVsYXRpb25fcmVzZXRfdGltZXN0YW1wX2NiKFBnU3RhdFNoYXJlZF9Db21tb24gKmhlYWRlciwg VGltZXN0YW1wVHogdHMpOwogCkBAIC04MDksNyArODQyLDcgQEAgZXh0ZXJuIFBnU3RhdFNoYXJl ZF9Db21tb24gKnBnc3RhdF9pbml0X2VudHJ5KFBnU3RhdF9LaW5kIGtpbmQsCiAgKiBGdW5jdGlv bnMgaW4gcGdzdGF0X3NscnUuYwogICovCiAKLWV4dGVybiBib29sIHBnc3RhdF9zbHJ1X2ZsdXNo X2NiKGJvb2wgbm93YWl0KTsKK2V4dGVybiBib29sIHBnc3RhdF9zbHJ1X2ZsdXNoX2NiKGJvb2wg bm93YWl0LCBib29sIGluX3R4bl9vbmx5KTsKIGV4dGVybiB2b2lkIHBnc3RhdF9zbHJ1X2luaXRf c2htZW1fY2Iodm9pZCAqc3RhdHMpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3NscnVfcmVzZXRfYWxs X2NiKFRpbWVzdGFtcFR6IHRzKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9zbHJ1X3NuYXBzaG90X2Ni KHZvaWQpOwpAQCAtODIwLDcgKzg1Myw3IEBAIGV4dGVybiB2b2lkIHBnc3RhdF9zbHJ1X3NuYXBz aG90X2NiKHZvaWQpOwogICovCiAKIGV4dGVybiB2b2lkIHBnc3RhdF93YWxfaW5pdF9iYWNrZW5k X2NiKHZvaWQpOwotZXh0ZXJuIGJvb2wgcGdzdGF0X3dhbF9mbHVzaF9jYihib29sIG5vd2FpdCk7 CitleHRlcm4gYm9vbCBwZ3N0YXRfd2FsX2ZsdXNoX2NiKGJvb2wgbm93YWl0LCBib29sIGluX3R4 bl9vbmx5KTsKIGV4dGVybiB2b2lkIHBnc3RhdF93YWxfaW5pdF9zaG1lbV9jYih2b2lkICpzdGF0 cyk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfd2FsX3Jlc2V0X2FsbF9jYihUaW1lc3RhbXBUeiB0cyk7 CiBleHRlcm4gdm9pZCBwZ3N0YXRfd2FsX3NuYXBzaG90X2NiKHZvaWQpOwpAQCAtODMwLDcgKzg2 Myw4IEBAIGV4dGVybiB2b2lkIHBnc3RhdF93YWxfc25hcHNob3RfY2Iodm9pZCk7CiAgKiBGdW5j dGlvbnMgaW4gcGdzdGF0X3N1YnNjcmlwdGlvbi5jCiAgKi8KIAotZXh0ZXJuIGJvb2wgcGdzdGF0 X3N1YnNjcmlwdGlvbl9mbHVzaF9jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBu b3dhaXQpOworZXh0ZXJuIGJvb2wgcGdzdGF0X3N1YnNjcmlwdGlvbl9mbHVzaF9jYihQZ1N0YXRf RW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQsCisJCQkJCQkJCQkJIGJvb2wgaW5fdHhu X29ubHksIGJvb2wgKmlzX3BhcnRpYWwpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3N1YnNjcmlwdGlv bl9yZXNldF90aW1lc3RhbXBfY2IoUGdTdGF0U2hhcmVkX0NvbW1vbiAqaGVhZGVyLCBUaW1lc3Rh bXBUeiB0cyk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdGltZW91dC5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvdGltZW91dC5oCmluZGV4IDA5NjViNTkwYjM0Li42OGZlODE0YmRl NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdGltZW91dC5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL3RpbWVvdXQuaApAQCAtMzQsNiArMzQsNyBAQCB0eXBlZGVmIGVudW0gVGltZW91 dElkCiAJVFJBTlNBQ1RJT05fVElNRU9VVCwKIAlJRExFX1NFU1NJT05fVElNRU9VVCwKIAlJRExF X1NUQVRTX1VQREFURV9USU1FT1VULAorCUlOX1RSQU5TQUNUSU9OX1NUQVRTX1VQREFURV9USU1F T1VULAogCUNMSUVOVF9DT05ORUNUSU9OX0NIRUNLX1RJTUVPVVQsCiAJU1RBUlRVUF9QUk9HUkVT U19USU1FT1VULAogCS8qIEZpcnN0IHVzZXItZGVmaW5hYmxlIHRpbWVvdXQgcmVhc29uICovCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY3VzdG9tX3N0YXRzL3QvMDAxX2N1c3Rv bV9zdGF0cy5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jdXN0b21fc3RhdHMvdC8wMDFfY3Vz dG9tX3N0YXRzLnBsCmluZGV4IDllNmE3YTM4NTc3Li5kM2FmYmZmMzdjNSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2N1c3RvbV9zdGF0cy90LzAwMV9jdXN0b21fc3RhdHMucGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2N1c3RvbV9zdGF0cy90LzAwMV9jdXN0b21fc3Rh dHMucGwKQEAgLTE1Niw1ICsxNTYsNjQgQEAgJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKICk7CiBpcygkcmVzdWx0LCAiMCIsICJyZXBvcnQgb2YgZml4ZWQtc2l6ZWQgYWZ0 ZXIgbWFudWFsIHJlc2V0Iik7CiAKKyMgVGVzdCBGTFVTSF9JTl9UUkFOU0FDVElPTiBjdXN0b20g c3RhdHMga2luZC4KKyMgVGhlIGludHhuIGtpbmQgaXMgcmVnaXN0ZXJlZCBhbG9uZ3NpZGUgdGhl IHJlZ3VsYXIga2luZCBieSB0ZXN0X2N1c3RvbV92YXJfc3RhdHMuCisKKyMgQmFzaWMgdXBkYXRl IGFuZCByZXBvcnQuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcShTRUxFQ1QgdGVz dF9jdXN0b21fdmFyX2ludHhuX3VwZGF0ZSgnaW50eG5fZW50cnkxJykpKTsKKyRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwlxKFNFTEVDVCB0ZXN0X2N1c3RvbV92YXJfaW50eG5fdXBkYXRl KCdpbnR4bl9lbnRyeTEnKSkpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXEoU0VM RUNUIHRlc3RfY3VzdG9tX3Zhcl9pbnR4bl91cGRhdGUoJ2ludHhuX2VudHJ5MScpKSk7CisKKyRy ZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcShTRUxFQ1QgdGVzdF9jdXN0 b21fdmFyX2ludHhuX3JlcG9ydCgnaW50eG5fZW50cnkxJykpKTsKK2lzKCRyZXN1bHQsICIzIiwg ImludHhuIHN0YXRzIHJlcG9ydCBhZnRlciB1cGRhdGVzIik7CisKKyMgVmVyaWZ5IGludHhuIHN0 YXRzIGFyZSBub3QgcGVyc2lzdGVkICh3cml0ZV90b19maWxlID0gZmFsc2UpLgorJG5vZGUtPnN0 b3AoKTsKKyRub2RlLT5zdGFydCgpOworCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXEoU0VMRUNUIHRlc3RfY3VzdG9tX3Zhcl9pbnR4bl9yZXBvcnQoJ2ludHhuX2Vu dHJ5MScpKSk7CitpcygkcmVzdWx0LCAiIiwgImludHhuIHN0YXRzIGxvc3QgYWZ0ZXIgY2xlYW4g cmVzdGFydCAobm90IHBlcnNpc3RlZCkiKTsKKworIyBUZXN0IGluLXRyYW5zYWN0aW9uIGZsdXNo aW5nIHdpdGggaW5qZWN0aW9uIHBvaW50LgorU0tJUDoKK3sKKwlza2lwICJpbmplY3Rpb24gcG9p bnRzIG5vdCBzdXBwb3J0ZWQiLCAxCisJCXVubGVzcyAoKCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9w b2ludHN9IC8vICcnKSBlcSAneWVzJworCQkmJiAkbm9kZS0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmpl Y3Rpb25fcG9pbnRzJykpOworCisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRF IEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIGluamVjdGlvbl9wb2ludHM7Jyk7CisJJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdp bi10cmFuc2FjdGlvbi1zdGF0cy1zaG9ydC1pbnRlcnZhbCcsICdlcnJvcicpOyIpOworCisJJG5v ZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3RhdHNfZmV0Y2hfY29uc2lzdGVu Y3kgPSBub25lJyk7CisJJG5vZGUtPnJlbG9hZDsKKworCW15ICRpbnR4bl9iZWZvcmUgPSAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgQ09BTEVTQ0UodGVzdF9jdXN0b21f dmFyX2ludHhuX3JlcG9ydCgnaW50eG5fZmx1c2gnKSwgMCk7Iik7CisKKwkkcmVzdWx0ID0gJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworQkVHSU47CitTRUxFQ1QgdGVzdF9jdXN0b21f dmFyX2ludHhuX3VwZGF0ZSgnaW50eG5fZmx1c2gnKTsKK1NFTEVDVCB0ZXN0X2N1c3RvbV92YXJf aW50eG5fdXBkYXRlKCdpbnR4bl9mbHVzaCcpOworU0VMRUNUIHRlc3RfY3VzdG9tX3Zhcl9pbnR4 bl91cGRhdGUoJ2ludHhuX2ZsdXNoJyk7CitTRUxFQ1QgcGdfc2xlZXAoMik7CitTRUxFQ1QgQ09B TEVTQ0UodGVzdF9jdXN0b21fdmFyX2ludHhuX3JlcG9ydCgnaW50eG5fZmx1c2gnKSwgMCk7Cit9 KTsKKworCW15IEBsaW5lcyA9IHNwbGl0KC9cbi8sICRyZXN1bHQpOworCW15ICRpbnR4bl9taWRf dHhuID0gJGxpbmVzWy0xXTsKKworCW9rKCRpbnR4bl9taWRfdHhuID4gJGludHhuX2JlZm9yZSwK KwkJImN1c3RvbSBpbnR4biBzdGF0cyBmbHVzaGVkIG1pZC10cmFuc2FjdGlvbiAoYmVmb3JlOiAk aW50eG5fYmVmb3JlLCBtaWQtdHhuOiAkaW50eG5fbWlkX3R4bikiKTsKKworCSRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaW4t dHJhbnNhY3Rpb24tc3RhdHMtc2hvcnQtaW50ZXJ2YWwnKTsiKTsKK30KKwogIyBUZXN0IGNvbXBs ZXRlZCBzdWNjZXNzZnVsbHkKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2N1c3RvbV9zdGF0cy90ZXN0X2N1c3RvbV92YXJfc3RhdHMtLTEuMC5zcWwg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY3VzdG9tX3N0YXRzL3Rlc3RfY3VzdG9tX3Zhcl9zdGF0 cy0tMS4wLnNxbAppbmRleCA1ZWQ4Y2ZjMmRjZi4uMDM2NTBjYmM0MTQgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9jdXN0b21fc3RhdHMvdGVzdF9jdXN0b21fdmFyX3N0YXRzLS0x LjAuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jdXN0b21fc3RhdHMvdGVzdF9jdXN0 b21fdmFyX3N0YXRzLS0xLjAuc3FsCkBAIC0yNCwzICsyNCwxMyBAQCBDUkVBVEUgRlVOQ1RJT04g dGVzdF9jdXN0b21fc3RhdHNfdmFyX3JlcG9ydChJTk9VVCBuYW1lIFRFWFQsCiBSRVRVUk5TIFNF VE9GIHJlY29yZAogQVMgJ01PRFVMRV9QQVRITkFNRScsICd0ZXN0X2N1c3RvbV9zdGF0c192YXJf cmVwb3J0JwogTEFOR1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgVU5TQUZFOworCitDUkVBVEUgRlVO Q1RJT04gdGVzdF9jdXN0b21fdmFyX2ludHhuX3VwZGF0ZShJTiBuYW1lIFRFWFQpCitSRVRVUk5T IHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAndGVzdF9jdXN0b21fdmFyX2ludHhuX3VwZGF0 ZScKK0xBTkdVQUdFIEMgU1RSSUNUIFBBUkFMTEVMIFVOU0FGRTsKKworQ1JFQVRFIEZVTkNUSU9O IHRlc3RfY3VzdG9tX3Zhcl9pbnR4bl9yZXBvcnQoSU4gbmFtZSBURVhUKQorUkVUVVJOUyBiaWdp bnQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAndGVzdF9jdXN0b21fdmFyX2ludHhuX3JlcG9ydCcK K0xBTkdVQUdFIEMgU1RSSUNUIFBBUkFMTEVMIFVOU0FGRTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9jdXN0b21fc3RhdHMvdGVzdF9jdXN0b21fdmFyX3N0YXRzLmMgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfY3VzdG9tX3N0YXRzL3Rlc3RfY3VzdG9tX3Zhcl9zdGF0cy5jCmlu ZGV4IDJlZjBlOTAzNzQ1Li5lODdkNDdhMjhhYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2N1c3RvbV9zdGF0cy90ZXN0X2N1c3RvbV92YXJfc3RhdHMuYworKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfY3VzdG9tX3N0YXRzL3Rlc3RfY3VzdG9tX3Zhcl9zdGF0cy5jCkBAIC0z Nyw2ICszNywxMSBAQCBQR19NT0RVTEVfTUFHSUNfRVhUKAogICovCiAjZGVmaW5lIFBHU1RBVF9L SU5EX1RFU1RfQ1VTVE9NX1ZBUl9TVEFUUyAyNQogCisvKgorICogS2luZCBJRCBmb3IgdGVzdF9j dXN0b21fdmFyX2ludHhuX3N0YXRzIHN0YXRpc3RpY3MgKEZMVVNIX0lOX1RSQU5TQUNUSU9OKS4K KyAqLworI2RlZmluZSBQR1NUQVRfS0lORF9URVNUX0NVU1RPTV9WQVJfSU5UWE5fU1RBVFMgMjcK KwogLyogRmlsZSBwYXRocyBmb3IgYXV4aWxpYXJ5IGRhdGEgc2VyaWFsaXphdGlvbiAqLwogI2Rl ZmluZSBURVNUX0NVU1RPTV9BVVhfREFUQV9ERVNDICJwZ19zdGF0L3Rlc3RfY3VzdG9tX3Zhcl9z dGF0c19kZXNjLnN0YXRzIgogCkBAIC00NSw2ICs1MCw4IEBAIFBHX01PRFVMRV9NQUdJQ19FWFQo CiAgKi8KICNkZWZpbmUgUEdTVEFUX0NVU1RPTV9WQVJfU1RBVFNfSURYKG5hbWUpIGhhc2hfYnl0 ZXNfZXh0ZW5kZWQoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbmFtZSwgc3RybGVuKG5hbWUpLCAw KQogCisjZGVmaW5lIFBHU1RBVF9DVVNUT01fVkFSX0lOVFhOX0lEWChuYW1lKSBoYXNoX2J5dGVz X2V4dGVuZGVkKChjb25zdCB1bnNpZ25lZCBjaGFyICopIG5hbWUsIHN0cmxlbihuYW1lKSwgMCkK KwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVHlwZSBkZWZpbml0aW9ucwogICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpAQCAtNTYsNiArNjMsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRDdXN0 b21WYXJFbnRyeQogCVBnU3RhdF9Db3VudGVyIG51bWNhbGxzOwkvKiB0aW1lcyBzdGF0aXN0aWMg d2FzIGluY3JlbWVudGVkICovCiB9IFBnU3RhdF9TdGF0Q3VzdG9tVmFyRW50cnk7CiAKKy8qIFBl bmRpbmcgZW50cnkgZm9yIEZMVVNIX0lOX1RSQU5TQUNUSU9OIGtpbmQgKHNhbWUgbGF5b3V0KSAq LwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0N1c3RvbVZhckluVHhuRW50cnkKK3sKKwlQZ1N0YXRf Q291bnRlciBudW1jYWxsczsKK30JCQlQZ1N0YXRfQ3VzdG9tVmFySW5UeG5FbnRyeTsKKwogLyog U2hhcmVkIG1lbW9yeSBzdGF0aXN0aWNzIGVudHJ5IHZpc2libGUgdG8gYWxsIGJhY2tlbmRzICov CiB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRTaGFyZWRfQ3VzdG9tVmFyRW50cnkKIHsKQEAgLTY0LDYg Kzc3LDEzIEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdFNoYXJlZF9DdXN0b21WYXJFbnRyeQogCWRz YV9wb2ludGVyIGRlc2NyaXB0aW9uOwkvKiBwb2ludGVyIHRvIGRlc2NyaXB0aW9uIHN0cmluZyBp biBEU0EgKi8KIH0gUGdTdGF0U2hhcmVkX0N1c3RvbVZhckVudHJ5OwogCisvKiBTaGFyZWQgbWVt b3J5IGVudHJ5IGZvciBGTFVTSF9JTl9UUkFOU0FDVElPTiBraW5kICovCit0eXBlZGVmIHN0cnVj dCBQZ1N0YXRTaGFyZWRfQ3VzdG9tVmFySW5UeG5FbnRyeQoreworCVBnU3RhdFNoYXJlZF9Db21t b24gaGVhZGVyOworCVBnU3RhdF9DdXN0b21WYXJJblR4bkVudHJ5IHN0YXRzOworfQkJCVBnU3Rh dFNoYXJlZF9DdXN0b21WYXJJblR4bkVudHJ5OworCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBH bG9iYWwgVmFyaWFibGVzCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04NSw3ICsxMDUsOCBAQCBz dGF0aWMgZHNhX2FyZWEgKmN1c3RvbV9zdGF0c19kZXNjcmlwdGlvbl9kc2EgPSBOVUxMOwogCiAv KiBGbHVzaCBjYWxsYmFjazogbWVyZ2UgcGVuZGluZyBzdGF0cyBpbnRvIHNoYXJlZCBtZW1vcnkg Ki8KIHN0YXRpYyBib29sIHRlc3RfY3VzdG9tX3N0YXRzX3Zhcl9mbHVzaF9wZW5kaW5nX2NiKFBn U3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLAotCQkJCQkJCQkJCQkJICAgYm9vbCBub3dhaXQpOwor CQkJCQkJCQkJCQkJICAgYm9vbCBub3dhaXQsIGJvb2wgaW5fdHhuX29ubHksCisJCQkJCQkJCQkJ CQkgICBib29sICppc19wYXJ0aWFsKTsKIAogLyogU2VyaWFsaXphdGlvbiBjYWxsYmFjazogd3Jp dGUgYXV4aWxpYXJ5IGVudHJ5IGRhdGEgKi8KIHN0YXRpYyB2b2lkIHRlc3RfY3VzdG9tX3N0YXRz X3Zhcl90b19zZXJpYWxpemVkX2RhdGEoY29uc3QgUGdTdGF0X0hhc2hLZXkgKmtleSwKQEAgLTEw MCw2ICsxMjEsMTEgQEAgc3RhdGljIGJvb2wgdGVzdF9jdXN0b21fc3RhdHNfdmFyX2Zyb21fc2Vy aWFsaXplZF9kYXRhKGNvbnN0IFBnU3RhdF9IYXNoS2V5ICprZXkKIC8qIEZpbmlzaCBjYWxsYmFj azogZW5kIG9mIHN0YXRpc3RpY3MgZmlsZSBvcGVyYXRpb25zICovCiBzdGF0aWMgdm9pZCB0ZXN0 X2N1c3RvbV9zdGF0c192YXJfZmluaXNoKFBnU3RhdF9TdGF0c0ZpbGVPcCBzdGF0dXMpOwogCisv KiBGbHVzaCBjYWxsYmFjayBmb3IgRkxVU0hfSU5fVFJBTlNBQ1RJT04ga2luZCAqLworc3RhdGlj IGJvb2wgdGVzdF9jdXN0b21fdmFyX2ludHhuX2ZsdXNoX3BlbmRpbmdfY2IoUGdTdGF0X0VudHJ5 UmVmICplbnRyeV9yZWYsCisJCQkJCQkJCQkJCQkgICBib29sIG5vd2FpdCwgYm9vbCBpbl90eG5f b25seSwKKwkJCQkJCQkJCQkJCSAgIGJvb2wgKmlzX3BhcnRpYWwpOworCiAvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKiBDdXN0b20ga2luZCBjb25maWd1cmF0aW9uCiAgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkBAIC0xMjEsNiArMTQ3LDE5IEBAIHN0YXRpYyBjb25zdCBQZ1N0YXRfS2luZEluZm8gY3VzdG9t X3N0YXRzID0gewogCS5maW5pc2ggPSB0ZXN0X2N1c3RvbV9zdGF0c192YXJfZmluaXNoLAogfTsK IAorc3RhdGljIGNvbnN0IFBnU3RhdF9LaW5kSW5mbyBjdXN0b21faW50eG5fc3RhdHMgPSB7CisJ Lm5hbWUgPSAidGVzdF9jdXN0b21fdmFyX2ludHhuX3N0YXRzIiwKKwkuZml4ZWRfYW1vdW50ID0g ZmFsc2UsCisJLndyaXRlX3RvX2ZpbGUgPSBmYWxzZSwJCS8qIG5vIHBlcnNpc3RlbmNlIG5lZWRl ZCBmb3IgdGVzdCAqLworCS5mbHVzaF9tb2RlID0gRkxVU0hfSU5fVFJBTlNBQ1RJT04sCisJLmFj Y2Vzc2VkX2Fjcm9zc19kYXRhYmFzZXMgPSB0cnVlLAorCS5zaGFyZWRfc2l6ZSA9IHNpemVvZihQ Z1N0YXRTaGFyZWRfQ3VzdG9tVmFySW5UeG5FbnRyeSksCisJLnNoYXJlZF9kYXRhX29mZiA9IG9m ZnNldG9mKFBnU3RhdFNoYXJlZF9DdXN0b21WYXJJblR4bkVudHJ5LCBzdGF0cyksCisJLnNoYXJl ZF9kYXRhX2xlbiA9IHNpemVvZihQZ1N0YXRfQ3VzdG9tVmFySW5UeG5FbnRyeSksCisJLnBlbmRp bmdfc2l6ZSA9IHNpemVvZihQZ1N0YXRfQ3VzdG9tVmFySW5UeG5FbnRyeSksCisJLmZsdXNoX3Bl bmRpbmdfY2IgPSB0ZXN0X2N1c3RvbV92YXJfaW50eG5fZmx1c2hfcGVuZGluZ19jYiwKK307CisK IC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIE1vZHVsZSBpbml0aWFsaXphdGlvbgogICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpAQCAtMTMzLDggKzE3Miw5IEBAIF9QR19pbml0KHZvaWQpCiAJaWYgKCFwcm9j ZXNzX3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllc19pbl9wcm9ncmVzcykKIAkJcmV0dXJuOwogCi0J LyogUmVnaXN0ZXIgY3VzdG9tIHN0YXRpc3RpY3Mga2luZCAqLworCS8qIFJlZ2lzdGVyIGN1c3Rv bSBzdGF0aXN0aWNzIGtpbmRzICovCiAJcGdzdGF0X3JlZ2lzdGVyX2tpbmQoUEdTVEFUX0tJTkRf VEVTVF9DVVNUT01fVkFSX1NUQVRTLCAmY3VzdG9tX3N0YXRzKTsKKwlwZ3N0YXRfcmVnaXN0ZXJf a2luZChQR1NUQVRfS0lORF9URVNUX0NVU1RPTV9WQVJfSU5UWE5fU1RBVFMsICZjdXN0b21faW50 eG5fc3RhdHMpOwogfQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNTIsNyArMTkyLDggQEAg X1BHX2luaXQodm9pZCkKICAqIFJldHVybnMgZmFsc2Ugb25seSBpZiBub3dhaXQ9dHJ1ZSBhbmQg bG9jayBhY3F1aXNpdGlvbiBmYWlscy4KICAqLwogc3RhdGljIGJvb2wKLXRlc3RfY3VzdG9tX3N0 YXRzX3Zhcl9mbHVzaF9wZW5kaW5nX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29s IG5vd2FpdCkKK3Rlc3RfY3VzdG9tX3N0YXRzX3Zhcl9mbHVzaF9wZW5kaW5nX2NiKFBnU3RhdF9F bnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCwKKwkJCQkJCQkJCSAgIGJvb2wgaW5fdHhu X29ubHksIGJvb2wgKmlzX3BhcnRpYWwpCiB7CiAJUGdTdGF0X1N0YXRDdXN0b21WYXJFbnRyeSAq cGVuZGluZ19lbnRyeTsKIAlQZ1N0YXRTaGFyZWRfQ3VzdG9tVmFyRW50cnkgKnNoYXJlZF9lbnRy eTsKQEAgLTE2MCw2ICsyMDEsOSBAQCB0ZXN0X2N1c3RvbV9zdGF0c192YXJfZmx1c2hfcGVuZGlu Z19jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpCiAJcGVuZGluZ19l bnRyeSA9IChQZ1N0YXRfU3RhdEN1c3RvbVZhckVudHJ5ICopIGVudHJ5X3JlZi0+cGVuZGluZzsK IAlzaGFyZWRfZW50cnkgPSAoUGdTdGF0U2hhcmVkX0N1c3RvbVZhckVudHJ5ICopIGVudHJ5X3Jl Zi0+c2hhcmVkX3N0YXRzOwogCisJLyogdGhpcyBpcyBub3QgYSBwYXJ0aWFsIGZsdXNoICovCisJ KmlzX3BhcnRpYWwgPSBmYWxzZTsKKwogCWlmICghcGdzdGF0X2xvY2tfZW50cnkoZW50cnlfcmVm LCBub3dhaXQpKQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTY5MSwzICs3MzUsNjcgQEAgdGVzdF9j dXN0b21fc3RhdHNfdmFyX3JlcG9ydChQR19GVU5DVElPTl9BUkdTKQogCiAJU1JGX1JFVFVSTl9E T05FKGZ1bmNjdHgpOwogfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBGTFVTSF9JTl9UUkFO U0FDVElPTiBraW5kOiBjYWxsYmFja3MgYW5kIFNRTCBmdW5jdGlvbnMKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworCitzdGF0aWMgYm9vbAordGVzdF9jdXN0b21fdmFyX2ludHhuX2ZsdXNoX3Bl bmRpbmdfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0LAorCQkJCQkJ CQkJICAgYm9vbCBpbl90eG5fb25seSwgYm9vbCAqaXNfcGFydGlhbCkKK3sKKwlQZ1N0YXRfQ3Vz dG9tVmFySW5UeG5FbnRyeSAqcGVuZGluZzsKKwlQZ1N0YXRTaGFyZWRfQ3VzdG9tVmFySW5UeG5F bnRyeSAqc2hhcmVkOworCisJcGVuZGluZyA9IChQZ1N0YXRfQ3VzdG9tVmFySW5UeG5FbnRyeSAq KSBlbnRyeV9yZWYtPnBlbmRpbmc7CisJc2hhcmVkID0gKFBnU3RhdFNoYXJlZF9DdXN0b21WYXJJ blR4bkVudHJ5ICopIGVudHJ5X3JlZi0+c2hhcmVkX3N0YXRzOworCisJKmlzX3BhcnRpYWwgPSBm YWxzZTsKKworCWlmICghcGdzdGF0X2xvY2tfZW50cnkoZW50cnlfcmVmLCBub3dhaXQpKQorCQly ZXR1cm4gZmFsc2U7CisKKwlzaGFyZWQtPnN0YXRzLm51bWNhbGxzICs9IHBlbmRpbmctPm51bWNh bGxzOworCisJcGdzdGF0X3VubG9ja19lbnRyeShlbnRyeV9yZWYpOworCisJcmV0dXJuIHRydWU7 Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9jdXN0b21fdmFyX2ludHhuX3VwZGF0ZSk7 CitEYXR1bQordGVzdF9jdXN0b21fdmFyX2ludHhuX3VwZGF0ZShQR19GVU5DVElPTl9BUkdTKQor eworCWNoYXIJICAgKnN0YXRfbmFtZSA9IHRleHRfdG9fY3N0cmluZyhQR19HRVRBUkdfVEVYVF9Q UCgwKSk7CisJUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWY7CisJUGdTdGF0X0N1c3RvbVZhcklu VHhuRW50cnkgKnBlbmRpbmc7CisKKwllbnRyeV9yZWYgPSBwZ3N0YXRfcHJlcF9wZW5kaW5nX2Vu dHJ5KFBHU1RBVF9LSU5EX1RFU1RfQ1VTVE9NX1ZBUl9JTlRYTl9TVEFUUywKKwkJCQkJCQkJCQkg IEludmFsaWRPaWQsCisJCQkJCQkJCQkJICBQR1NUQVRfQ1VTVE9NX1ZBUl9JTlRYTl9JRFgoc3Rh dF9uYW1lKSwKKwkJCQkJCQkJCQkgIE5VTEwpOworCisJcGVuZGluZyA9IChQZ1N0YXRfQ3VzdG9t VmFySW5UeG5FbnRyeSAqKSBlbnRyeV9yZWYtPnBlbmRpbmc7CisJcGVuZGluZy0+bnVtY2FsbHMr KzsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9j dXN0b21fdmFyX2ludHhuX3JlcG9ydCk7CitEYXR1bQordGVzdF9jdXN0b21fdmFyX2ludHhuX3Jl cG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCWNoYXIJICAgKnN0YXRfbmFtZSA9IHRleHRfdG9f Y3N0cmluZyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisJUGdTdGF0X0N1c3RvbVZhckluVHhuRW50 cnkgKnN0YXRzOworCisJc3RhdHMgPSAoUGdTdGF0X0N1c3RvbVZhckluVHhuRW50cnkgKikKKwkJ cGdzdGF0X2ZldGNoX2VudHJ5KFBHU1RBVF9LSU5EX1RFU1RfQ1VTVE9NX1ZBUl9JTlRYTl9TVEFU UywKKwkJCQkJCSAgIEludmFsaWRPaWQsCisJCQkJCQkgICBQR1NUQVRfQ1VTVE9NX1ZBUl9JTlRY Tl9JRFgoc3RhdF9uYW1lKSk7CisKKwlpZiAoIXN0YXRzKQorCQlQR19SRVRVUk5fTlVMTCgpOwor CisJUEdfUkVUVVJOX0lOVDY0KHN0YXRzLT5udW1jYWxscyk7Cit9CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9taXNjL21lc29uLmJ1aWxkCmluZGV4IDZlOGRiMTYyMWE3Li43MDI0ODM2MGQyMSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X21pc2MvbWVzb24uYnVpbGQKQEAgLTE5LDYgKzE5LDcgQEAgdGVzdHMg Kz0gewogICAgICAgJ3QvMDA4X3JlcGxzbG90X3NpbmdsZV91c2VyLnBsJywKICAgICAgICd0LzAw OV9sb2dfdGVtcF9maWxlcy5wbCcsCiAgICAgICAndC8wMTBfaW5kZXhfY29uY3VycmVudGx5X3Vw c2VydC5wbCcsCisgICAgICAndC8wMTFfaW5fdHJhbnNhY3Rpb25fc3RhdHMucGwnLAogICAgIF0s CiAgICAgIyBUaGUgaW5qZWN0aW9uIHBvaW50cyBhcmUgY2x1c3Rlci13aWRlLCBzbyBkaXNhYmxl IGluc3RhbGxjaGVjawogICAgICdydW5uaW5nY2hlY2snOiBmYWxzZSwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDExX2luX3RyYW5zYWN0aW9uX3N0YXRzLnBsIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTFfaW5fdHJhbnNhY3Rpb25fc3RhdHMucGwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNmMWJkZTI0YTVkCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTFfaW5fdHJhbnNh Y3Rpb25fc3RhdHMucGwKQEAgLTAsMCArMSw5MSBAQAorCisjIENvcHlyaWdodCAoYykgMjAyNC0y MDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgaW4tdHJh bnNhY3Rpb24gc3RhdHMgZmx1c2hpbmcgbWVjaGFuaXNtLgorIworIyBUaGlzIHRlc3QgdmVyaWZp ZXMgdGhhdCBGTFVTSF9JTl9UUkFOU0FDVElPTiBzdGF0cyBhcmUgcGVyaW9kaWNhbGx5IGZsdXNo ZWQKKyMgdG8gc2hhcmVkIG1lbW9yeSB3aGlsZSBhIHRyYW5zYWN0aW9uIGlzIGlkbGUgYmV0d2Vl biBjb21tYW5kcy4gIFVzZXMgYW4KKyMgaW5qZWN0aW9uIHBvaW50IHRvIHJlZHVjZSB0aGUgZmx1 c2ggaW50ZXJ2YWwgZnJvbSAxMCBzZWNvbmRzIHRvIDEgc2Vjb25kCisjIGZvciBmYXN0ZXIgdGVz dGluZy4KKyMKKyMgV2UgdGVzdCBvbmUgcmVwcmVzZW50YXRpdmUgb2YgZWFjaCBzdGF0cyBraW5k OiByZWxhdGlvbiBzdGF0cyAoc2VxX3NjYW4pCisjIGZvciB2YXJpYWJsZS1udW1iZXJlZCBzdGF0 cywgYW5kIFdBTCBmb3IgZml4ZWQtc2l6ZWQgc3RhdHMuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fy bmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5W e2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAneWVzJykKK3sKKwlwbGFuIHNraXBfYWxsID0+ ICdJbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisKK215 ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlJyk7Ciskbm9kZS0+ aW5pdCgpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc3RhdHNfZmV0 Y2hfY29uc2lzdGVuY3kgPSBub25lJyk7Ciskbm9kZS0+c3RhcnQ7CisKK2lmICghJG5vZGUtPmNo ZWNrX2V4dGVuc2lvbignaW5qZWN0aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tpcF9hbGwgPT4g J0V4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQorCiskbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7 Jyk7CisKKyMgQXR0YWNoIGluamVjdGlvbiBwb2ludCB0byByZWR1Y2UgdGhlIGluLXRyYW5zYWN0 aW9uIHN0YXRzIGZsdXNoIGludGVydmFsCisjIHRvIDEgc2Vjb25kLgorJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2luLXRyYW5z YWN0aW9uLXN0YXRzLXNob3J0LWludGVydmFsJywgJ2Vycm9yJyk7Iik7CisKKyMgQ3JlYXRlIHRl c3QgdGFibGUKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwknQ1JFQVRFIFRBQkxFIHRl c3RfaW5fdHhuX3N0YXRzKGEgaW50KSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYpOycp OworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSdJTlNFUlQgSU5UTyB0ZXN0X2luX3R4 bl9zdGF0cyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApOycpOworCisjIEZvcmNlIGZs dXNoIGFuZCBnZXQgYmFzZWxpbmUgc3RhdHMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsnKTsKK215ICRzZXFfc2Nhbl9iZWZv cmUgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBzZXFfc2NhbiBGUk9N IHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICd0ZXN0X2luX3R4bl9zdGF0cyc7 Iik7CisKKyMgVGVzdCB0aGF0IHNlcV9zY2FuIHN0YXRzICh2YXJpYWJsZS1udW1iZXJlZCkgYXJl IGZsdXNoZWQgbWlkLXRyYW5zYWN0aW9uCisjIHZpYSB0aGUgaW4tdHJhbnNhY3Rpb24gcGVyaW9k aWMgZmx1c2ggbWVjaGFuaXNtLgorbXkgJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXsKK0JFR0lOOworU0VMRUNUIENPVU5UKCopIEZST00gdGVzdF9pbl90eG5fc3RhdHM7 CitTRUxFQ1QgQ09VTlQoKikgRlJPTSB0ZXN0X2luX3R4bl9zdGF0czsKK1NFTEVDVCBwZ19zbGVl cCgyKTsKK1NFTEVDVCBzZXFfc2NhbiBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVs bmFtZSA9ICd0ZXN0X2luX3R4bl9zdGF0cyc7Cit9KTsKKworbXkgQGxpbmVzID0gc3BsaXQoL1xu LywgJHJlc3VsdCk7CitteSAkc2VxX3NjYW5fbWlkX3R4biA9ICRsaW5lc1stMV07CisKK29rKCRz ZXFfc2Nhbl9taWRfdHhuID4gJHNlcV9zY2FuX2JlZm9yZSwKKwkic2VxX3NjYW4gc3RhdHMgZmx1 c2hlZCBkdXJpbmcgdHJhbnNhY3Rpb24gKGJlZm9yZTogJHNlcV9zY2FuX2JlZm9yZSwgbWlkLXR4 bjogJHNlcV9zY2FuX21pZF90eG4pIik7CisKKyMgVGVzdCBXQUwgc3RhdHMgKGZpeGVkLXNpemVk KSBmbHVzaGluZyBkdXJpbmcgdHJhbnNhY3Rpb24uCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdTRUxFQ1QgcGdfc3RhdF9yZXNldF9zaGFyZWQoXCd3YWxcJyk7Jyk7CitteSAkd2FsX3Jl Y29yZHNfYmVmb3JlID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgd2Fs X3JlY29yZHMgRlJPTSBwZ19zdGF0X3dhbDsiKTsKKworJHJlc3VsdCA9ICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF9pbl90eG5fc3RhdHMg U0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKTsKK1NFTEVDVCBwZ19zbGVlcCgyKTsKK1NF TEVDVCB3YWxfcmVjb3JkcyBGUk9NIHBnX3N0YXRfd2FsOworfSk7CisKK0BsaW5lcyA9IHNwbGl0 KC9cbi8sICRyZXN1bHQpOworbXkgJHdhbF9yZWNvcmRzX21pZF90eG4gPSAkbGluZXNbLTFdOwor Citvaygkd2FsX3JlY29yZHNfbWlkX3R4biA+ICR3YWxfcmVjb3Jkc19iZWZvcmUsCisJIldBTCBz dGF0cyBmbHVzaGVkIGR1cmluZyB0cmFuc2FjdGlvbiAoYmVmb3JlOiAkd2FsX3JlY29yZHNfYmVm b3JlLCBtaWQtdHhuOiAkd2FsX3JlY29yZHNfbWlkX3R4bikiKTsKKworIyBDbGVhbnVwCiskbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFRBQkxFIHRlc3RfaW5fdHhuX3N0YXRzOycp OworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNTJmODYw M2E3YmUuLmM5Y2Q2MDg3YWJjIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjI5MCw2 ICsyMjkwLDcgQEAgUGdTdGF0X0NvdW50ZXIKIFBnU3RhdF9FbnRyeVJlZgogUGdTdGF0X0VudHJ5 UmVmSGFzaEVudHJ5CiBQZ1N0YXRfRmV0Y2hDb25zaXN0ZW5jeQorUGdTdGF0X0ZsdXNoTW9kZQog UGdTdGF0X0Z1bmN0aW9uQ2FsbFVzYWdlCiBQZ1N0YXRfRnVuY3Rpb25Db3VudHMKIFBnU3RhdF9I YXNoS2V5Ci0tIAoyLjQ3LjMKCg== --00000000000041b9ca064d2cc7d5--