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.94.2) (envelope-from ) id 1sLcmg-00FhVP-F3 for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Jun 2024 06:02:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sLclg-005jIk-3V for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Jun 2024 06:01:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sLclf-005jI2-Ib for pgsql-hackers@lists.postgresql.org; Mon, 24 Jun 2024 06:01:32 +0000 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sLcld-003Fjw-71 for pgsql-hackers@lists.postgresql.org; Mon, 24 Jun 2024 06:01:31 +0000 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-2ebe3fb5d4dso34298121fa.0 for ; Sun, 23 Jun 2024 23:01:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719208887; x=1719813687; 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=Hi2h0lnZmRarJanz2rCdtlo7HT7QoAWz9v5wfVJnSSg=; b=kKbi/8dkQfJzz/occe+qPs32rMG8u8Zk49Rnusl5uVc44Jj48g/BVXw9ECqHGeuZhP IinpqQ7T3USF9uhUeuh3k4MYyjlTHbgKGET5KyhmIn781HXvDNHyr2YvOGlpURGJX4GQ exffWAxWjrMUnL+tI1tzWyNoOTU5kFSd18OmrPniQRmN+Ke6mwmL0aVE9WVrN3gA+hOg cHKWnO4rZ6aUHn6iRvZZGHoGXRp28VZxZDWI4wlnuQtYh5Ni0IZzkiF6hKX1mLcGUHYO QuJBg+6j1Vf3EtO6ix07e9IDq3glIciFD3nuxdcYNxyyG6wRNf1l4jBZikddilKZpzqN Mh2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719208887; x=1719813687; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Hi2h0lnZmRarJanz2rCdtlo7HT7QoAWz9v5wfVJnSSg=; b=D2KzlB3z5d6lNAEmBycNhC3K4GA0aQsPkAtZtobp0Db4AjswXtZ6c87di7TSRITmaL Dj1P1eq7k7xb8/9q4pb83IUwVVe6li5ObMjY3aGP2ly8kbSdHVXw4dHvaw7p00ctZSor 8lykCpLnf/1ZsbAmppPTuS+dDkkpv7wgaFfB8FIKBW9I14YyHeEDAhzXEE6EX8v6iC0/ Esp2o6wir+sI3W898Zutd87cC/uIL3BRqiN8XestljG60xmv+Nlktz1AN2cZUQGo1onX ilbiX4aoDs+peiiv7INqqcxZPLfeNjjGWs7WEXoGKoMghAnIRsvtMnpYSG9b5kErNRQI mbaw== X-Forwarded-Encrypted: i=1; AJvYcCVJO1pS0hXDKT+aiZcLyd+lVy2HxvZmSDGwIKZgA3s+Z0murrllZvw2zat27S/H5aY9vGsPSw5NFndBGmWci9WPvi3mbrNWYqt0cprg7gyuPS5h X-Gm-Message-State: AOJu0YzG8tXMKYUDz8d87jc5RGw6A89tJYOM78KLzdp0wSu4I4qf/FKK Lu8tqYiL3x9W3SNFZoL2KQxP4YCg8d3PfxGNV2oye4tdbmYoEruKLPfbCGK1uDZ0BGHKDjXTB4R ztsacBFektRrNViX8EtozAzXdLEo= X-Google-Smtp-Source: AGHT+IGuIe+ahdSMSjS4uiLExExNF/x6ivjlhAiPeVuuXy/qsgEoxO3Anm8MMnAF7/HfgKinJPA9ZGmShLxS4Ta3TYA= X-Received: by 2002:a05:651c:1035:b0:2ec:361b:c079 with SMTP id 38308e7fff4ca-2ec56be4536mr11572381fa.25.1719208886717; Sun, 23 Jun 2024 23:01:26 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Mon, 24 Jun 2024 11:30:00 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: Amit Kapila Cc: Bertrand Drouvot , shveta malik , Masahiko Sawada , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000fcf3f6061b9c82d8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fcf3f6061b9c82d8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Mon, Jun 17, 2024 at 5:55=E2=80=AFPM Bharath Rupireddy wrote: > > Here are my thoughts on when to do the XID age invalidation. In all > the patches sent so far, the XID age invalidation happens in two > places - one during the slot acquisition, and another during the > checkpoint. As the suggestion is to do it during the vacuum (manual > and auto), so that even if the checkpoint isn't happening in the > database for whatever reasons, a vacuum command or autovacuum can > invalidate the slots whose XID is aged. > > An idea is to check for XID age based invalidation for all the slots > in ComputeXidHorizons() before it reads replication_slot_xmin and > replication_slot_catalog_xmin, and obviously before the proc array > lock is acquired. A potential problem with this approach is that the > invalidation check can become too aggressive as XID horizons are > computed from many places. > > Another idea is to check for XID age based invalidation for all the > slots in higher levels than ComputeXidHorizons(), for example in > vacuum() which is an entry point for both vacuum command and > autovacuum. This approach seems similar to vacuum_failsafe_age GUC > which checks each relation for the failsafe age before vacuum gets > triggered on it. I am attaching the patches implementing the idea of invalidating replication slots during vacuum when current slot xmin limits (procArray->replication_slot_xmin and procArray->replication_slot_catalog_xmin) are aged as per the new XID age GUC. When either of these limits are aged, there must be at least one replication slot that is aged, because the xmin limits, after all, are the minimum of xmin or catalog_xmin of all replication slots. In this approach, the new XID age GUC will help vacuum when needed, because the current slot xmin limits are recalculated after invalidating replication slots that are holding xmins for longer than the age. The code is placed in vacuum() which is common for both vacuum command and autovacuum, and gets executed only once every vacuum cycle to not be too aggressive in invalidating. However, there might be some concerns with this approach like the following= : 1) Adding more code to vacuum might not be acceptable 2) What if invalidation of replication slots emits an error, will it block vacuum forever? Currently, InvalidateObsoleteReplicationSlots() is also called as part of the checkpoint, and emitting ERRORs from within is avoided already. Therefore, there is no concern here for now. 3) What if there are more replication slots to be invalidated, will it delay the vacuum? If yes, by how much? <> 4) Will the invalidation based on just current replication slot xmin limits suffice irrespective of vacuum cutoffs? IOW, if the replication slots are invalidated but vacuum isn't going to do any work because vacuum cutoffs are not yet met? Is the invalidation work wasteful here? 5) Is it okay to take just one more time the proc array lock to get current replication slot xmin limits via ProcArrayGetReplicationSlotXmin() once every vacuum cycle? <> 6) Vacuum command can't be run on the standby in recovery. So, to help invalidate replication slots on the standby, I have for now let the checkpointer also do the XID age based invalidation. I know invalidating both in checkpointer and vacuum may not be a great idea, but I'm open to thoughts. Following are some of the alternative approaches which IMHO don't help vacuum when needed: a) Let the checkpointer do the XID age based invalidation, and call it out in the documentation that if the checkpoint doesn't happen, the new GUC doesn't help even if the vacuum is run. This has been the approach until v40 patch. b) Checkpointer and/or other backends add an autovacuum work item via AutoVacuumRequestWork(), and autovacuum when it gets to it will invalidate the replication slots. But, what to do for the vacuum command here? Please find the attached v41 patches implementing the idea of vacuum doing the invalidation. Thoughts? Thanks to Sawada-san for a detailed off-list discussion. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000fcf3f6061b9c82d8 Content-Type: application/x-patch; name="v41-0001-Add-inactive_timeout-based-replication-slot-inva.patch" Content-Disposition: attachment; filename="v41-0001-Add-inactive_timeout-based-replication-slot-inva.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lxrr94o90 RnJvbSBkYzFlZWVkMDYzNzdjMTFiMTM5NzI0NzAyMzcwYmE0N2NkNWQ1YmUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFN1biwgMjMgSnVuIDIwMjQgMTQ6MDc6MjUgKzAw MDAKU3ViamVjdDogW1BBVENIIHY0MSAxLzJdIEFkZCBpbmFjdGl2ZV90aW1lb3V0IGJhc2VkIHJl cGxpY2F0aW9uIHNsb3QKIGludmFsaWRhdGlvbgoKVGlsbCBub3csIHBvc3RncmVzIGhhcyB0aGUg YWJpbGl0eSB0byBpbnZhbGlkYXRlIGluYWN0aXZlCnJlcGxpY2F0aW9uIHNsb3RzIGJhc2VkIG9u IHRoZSBhbW91bnQgb2YgV0FMIChzZXQgdmlhCm1heF9zbG90X3dhbF9rZWVwX3NpemUgR1VDKSB0 aGF0IHdpbGwgYmUgbmVlZGVkIGZvciB0aGUgc2xvdHMgaW4KY2FzZSB0aGV5IGJlY29tZSBhY3Rp dmUuIEhvd2V2ZXIsIGNob29zaW5nIGEgZGVmYXVsdCB2YWx1ZSBmb3IKbWF4X3Nsb3Rfd2FsX2tl ZXBfc2l6ZSBpcyB0cmlja3kuIEJlY2F1c2UgdGhlIGFtb3VudCBvZiBXQUwgYQpjdXN0b21lciBn ZW5lcmF0ZXMsIGFuZCB0aGVpciBhbGxvY2F0ZWQgc3RvcmFnZSB3aWxsIHZhcnkgZ3JlYXRseQpp biBwcm9kdWN0aW9uLCBtYWtpbmcgaXQgZGlmZmljdWx0IHRvIHBpbiBkb3duIGEgb25lLXNpemUt Zml0cy1hbGwKdmFsdWUuIEl0IGlzIG9mdGVuIGVhc3kgZm9yIGRldmVsb3BlcnMgdG8gc2V0IGEg dGltZW91dCBvZiBzYXkgMQpvciAyIG9yIDMgZGF5cywgYWZ0ZXIgd2hpY2ggdGhlIGluYWN0aXZl IHNsb3RzIGdldCBpbnZhbGlkYXRlZC4KClRvIGFjaGlldmUgdGhlIGFib3ZlLCBwb3N0Z3JlcyBp bnRyb2R1Y2VzIGEgR1VDIGFsbG93aW5nIHVzZXJzCnNldCBpbmFjdGl2ZSB0aW1lb3V0LiBUaGUg cmVwbGljYXRpb24gc2xvdHMgdGhhdCBhcmUgaW5hY3RpdmUKZm9yIGxvbmdlciB0aGFuIHNwZWNp ZmllZCBhbW91bnQgb2YgdGltZSBnZXQgaW52YWxpZGF0ZWQuCgpUaGUgaW52YWxpZGF0aW9uIGNo ZWNrIGhhcHBlbnMgYXQgdmFyaW91cyBsb2NhdGlvbnMgdG8gaGVscCBiZWluZwphcyBsYXRlc3Qg YXMgcG9zc2libGUsIHRoZXNlIGxvY2F0aW9ucyBpbmNsdWRlIHRoZSBmb2xsb3dpbmc6Ci0gV2hl bmV2ZXIgdGhlIHNsb3QgaXMgYWNxdWlyZWQgYW5kIHRoZSBzbG90IGFjcXVpc2l0aW9uIGVycm9y cwpvdXQgaWYgaW52YWxpZGF0ZWQuCi0gRHVyaW5nIGNoZWNrcG9pbnQKCk5vdGUgdGhhdCB0aGlz IG5ldyBpbnZhbGlkYXRpb24gbWVjaGFuaXNtIHdvbid0IGtpY2staW4gZm9yIHRoZQpzbG90cyB0 aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgc3luY2VkIGZyb20gdGhlIHByaW1hcnkgdG8gdGhlCnN0 YW5kYnksIGJlY2F1c2Ugc3VjaCBzeW5jZWQgc2xvdHMgYXJlIHR5cGljYWxseSBjb25zaWRlcmVk IG5vdAphY3RpdmUgKGZvciB0aGVtIHRvIGJlIGxhdGVyIGNvbnNpZGVyZWQgYXMgaW5hY3RpdmUp IGFzIHRoZXkgZG9uJ3QKcGVyZm9ybSBsb2dpY2FsIGRlY29kaW5nIHRvIHByb2R1Y2UgdGhlIGNo YW5nZXMuCgpBdXRob3I6IEJoYXJhdGggUnVwaXJlZGR5ClJldmlld2VkLWJ5OiBCZXJ0cmFuZCBE cm91dm90LCBBbWl0IEthcGlsYSwgU2h2ZXRhIE1hbGlrCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FMajJBQ1c0YVVlLV91RlFPamRXQ0VOLXhYb0xH aG12UkZuTDhTTndfVFo1bkplK2F3QG1haWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8v d3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0ElMkJUZ21vWlRiYWFFalNaVUcxRkwwbXp4 QWROM3FtWGtzTzNPOV9QWmhFdVhUa1ZuUlElNDBtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzIwMjQwMzI2MDg0MS41amN2N2lo bmljY3klNDBhbHZoZXJyZS5wZ3NxbAotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAg ICAgICAgICAgICAgICAgICB8ICAzMyArKwogZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21s ICAgICAgICAgICAgICAgIHwgICA3ICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxm dW5jcy5jICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9z bG90c3luYy5jICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAg ICAgICAgICAgICAgfCAxODggKysrKysrKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90ZnVuY3MuYyAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3Vw Z3JhZGVfc3VwcG9ydC5jICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYyAgICAgICAgICAgfCAgMTIgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAg ICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFsaWRhdGVf c2xvdHMucGwgICB8IDI4NiArKysrKysrKysrKysrKysrKysKIDEzIGZpbGVzIGNoYW5nZWQsIDUz NSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWNvdmVyeS90LzA1MF9pbnZhbGlkYXRlX3Nsb3RzLnBsCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDBj N2E5MDgyYzUuLjVlN2E4MWExZmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ1NTQsNiArNDU1NCwzOSBAQCBy ZXN0b3JlX2NvbW1hbmQgPSAnY29weSAiQzpcXHNlcnZlclxcYXJjaGl2ZWRpclxcJWYiICIlcCIn ICAjIFdpbmRvd3MKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisg ICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1yZXBsaWNhdGlvbi1zbG90LWluYWN0aXZlLXRpbWVv dXQiIHhyZWZsYWJlbD0icmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0Ij4KKyAgICAg IDx0ZXJtPjx2YXJuYW1lPnJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dDwvdmFybmFt ZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJp bWFyeT48dmFybmFtZT5yZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQ8L3Zhcm5hbWU+ IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+Cisg ICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIElu dmFsaWRhdGVzIHJlcGxpY2F0aW9uIHNsb3RzIHRoYXQgYXJlIGluYWN0aXZlIGZvciBsb25nZXIg dGhhbgorICAgICAgICBzcGVjaWZpZWQgYW1vdW50IG9mIHRpbWUuIElmIHRoaXMgdmFsdWUgaXMg c3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsCisgICAgICAgIGl0IGlzIHRha2VuIGFzIHNlY29uZHMu IEEgdmFsdWUgb2YgemVybyAod2hpY2ggaXMgZGVmYXVsdCkgZGlzYWJsZXMKKyAgICAgICAgdGhl IHRpbWVvdXQgbWVjaGFuaXNtLiBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4KKyAg ICAgICAgdGhlIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIG9u IHRoZSBzZXJ2ZXIKKyAgICAgICAgY29tbWFuZCBsaW5lLgorICAgICAgIDwvcGFyYT4KKworICAg ICAgIDxwYXJhPgorICAgICAgICBUaGlzIGludmFsaWRhdGlvbiBjaGVjayBoYXBwZW5zIGVpdGhl ciB3aGVuIHRoZSBzbG90IGlzIGFjcXVpcmVkCisgICAgICAgIGZvciB1c2Ugb3IgZHVyaW5nIGEg Y2hlY2twb2ludC4gVGhlIHRpbWUgc2luY2UgdGhlIHNsb3QgaGFzIGJlY29tZQorICAgICAgICBp bmFjdGl2ZSBpcyBrbm93biBmcm9tIGl0cworICAgICAgICA8c3RydWN0ZmllbGQ+aW5hY3RpdmVf c2luY2U8L3N0cnVjdGZpZWxkPiB2YWx1ZSB1c2luZyB3aGljaCB0aGUKKyAgICAgICAgdGltZW91 dCBpcyBtZWFzdXJlZC4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAg Tm90ZSB0aGF0IHRoZSBpbmFjdGl2ZSB0aW1lb3V0IGludmFsaWRhdGlvbiBtZWNoYW5pc20gaXMg bm90CisgICAgICAgIGFwcGxpY2FibGUgZm9yIHNsb3RzIG9uIHRoZSBzdGFuZGJ5IHRoYXQgYXJl IGJlaW5nIHN5bmNlZCBmcm9tIGEKKyAgICAgICAgcHJpbWFyeSBzZXJ2ZXIgKHdob3NlIDxzdHJ1 Y3RmaWVsZD5zeW5jZWQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcworICAgICAgICA8bGl0ZXJhbD50 cnVlPC9saXRlcmFsPikuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAg PC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXRyYWNrLWNvbW1p dC10aW1lc3RhbXAiIHhyZWZsYWJlbD0idHJhY2tfY29tbWl0X3RpbWVzdGFtcCI+CiAgICAgICA8 dGVybT48dmFybmFtZT50cmFja19jb21taXRfdGltZXN0YW1wPC92YXJuYW1lPiAoPHR5cGU+Ym9v bGVhbjwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4 IDhjMThiZWE5MDIuLjQ4NjdhZjFiNjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTI1ODAs NiArMjU4MCwxMyBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVw YXJlZF94YWN0cyBwcHgKICAgICAgICAgICBwZXJmb3JtIGxvZ2ljYWwgZGVjb2RpbmcuICBJdCBp cyBzZXQgb25seSBmb3IgbG9naWNhbCBzbG90cy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgPGxpdGVyYWw+aW5hY3RpdmVfdGltZW91dDwvbGl0ZXJhbD4gbWVhbnMgdGhhdCB0aGUgc2xv dCBoYXMgYmVlbgorICAgICAgICAgIGluYWN0aXZlIGZvciB0aGUgZHVyYXRpb24gc3BlY2lmaWVk IGJ5CisgICAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLXJlcGxpY2F0aW9uLXNsb3QtaW5hY3Rp dmUtdGltZW91dCIvPiBwYXJhbWV0ZXIuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlz dGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVu Y3MuYwppbmRleCBiNGRkNWNjZTc1Li41NmZjMWE0NWE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXNfZ3V0cyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9v bCBjb25maXJtLCBib29sIGJpbgogCWVsc2UKIAkJZW5kX29mX3dhbCA9IEdldFhMb2dSZXBsYXlS ZWNQdHIoTlVMTCk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKm5hbWUpLCB0 cnVlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKm5hbWUpLCB0cnVlLCB0cnVl KTsKIAogCVBHX1RSWSgpOwogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xv dHN5bmMuYwppbmRleCA1NmQzZmI1ZDBlLi5hNTk2N2Q0MDBmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCkBAIC00NDgsNyArNDQ4LDcgQEAgZHJvcF9sb2Nh bF9vYnNvbGV0ZV9zbG90cyhMaXN0ICpyZW1vdGVfc2xvdF9saXN0KQogCiAJCQlpZiAoc3luY2Vk X3Nsb3QpCiAJCQl7Ci0JCQkJUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKGxvY2FsX3Ns b3QtPmRhdGEubmFtZSksIHRydWUpOworCQkJCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0 cihsb2NhbF9zbG90LT5kYXRhLm5hbWUpLCB0cnVlLCBmYWxzZSk7CiAJCQkJUmVwbGljYXRpb25T bG90RHJvcEFjcXVpcmVkKCk7CiAJCQl9CiAKQEAgLTY1MSw2ICs2NTEsMTMgQEAgc3luY2hyb25p emVfb25lX3Nsb3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJpZCkKIAkJ CQkJCSAgICIgbmFtZSBzbG90IFwiJXNcIiBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgc3RhbmRieSIs CiAJCQkJCQkgICByZW1vdGVfc2xvdC0+bmFtZSkpOwogCisJCS8qCisJCSAqIFNraXAgdGhlIHN5 bmMgaWYgdGhlIGxvY2FsIHNsb3QgaXMgYWxyZWFkeSBpbnZhbGlkYXRlZC4gV2UgZG8gdGhpcwor CQkgKiBiZWZvcmVoYW5kIHRvIGF2b2lkIHNsb3QgYWNxdWlyZSBhbmQgcmVsZWFzZS4KKwkJICov CisJCWlmIChzbG90LT5kYXRhLmludmFsaWRhdGVkICE9IFJTX0lOVkFMX05PTkUpCisJCQlyZXR1 cm4gZmFsc2U7CisKIAkJLyoKIAkJICogVGhlIHNsb3QgaGFzIGJlZW4gc3luY2hyb25pemVkIGJl Zm9yZS4KIAkJICoKQEAgLTY2Nyw3ICs2NzQsNyBAQCBzeW5jaHJvbml6ZV9vbmVfc2xvdChSZW1v dGVTbG90ICpyZW1vdGVfc2xvdCwgT2lkIHJlbW90ZV9kYmlkKQogCQkgKiBwcmUtY2hlY2sgdG8g ZW5zdXJlIHRoYXQgYXQgbGVhc3Qgb25lIG9mIHRoZSBzbG90IHByb3BlcnRpZXMgaXMKIAkJICog Y2hhbmdlZCBiZWZvcmUgYWNxdWlyaW5nIHRoZSBzbG90LgogCQkgKi8KLQkJUmVwbGljYXRpb25T bG90QWNxdWlyZShyZW1vdGVfc2xvdC0+bmFtZSwgdHJ1ZSk7CisJCVJlcGxpY2F0aW9uU2xvdEFj cXVpcmUocmVtb3RlX3Nsb3QtPm5hbWUsIHRydWUsIGZhbHNlKTsKIAogCQlBc3NlcnQoc2xvdCA9 PSBNeVJlcGxpY2F0aW9uU2xvdCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCA1NjRjZmVl MTI3Li5lODA4NzJmMjdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0xMDcsMTAgKzEwNywx MSBAQCBjb25zdCBjaGFyICpjb25zdCBTbG90SW52YWxpZGF0aW9uQ2F1c2VzW10gPSB7CiAJW1JT X0lOVkFMX1dBTF9SRU1PVkVEXSA9ICJ3YWxfcmVtb3ZlZCIsCiAJW1JTX0lOVkFMX0hPUklaT05d ID0gInJvd3NfcmVtb3ZlZCIsCiAJW1JTX0lOVkFMX1dBTF9MRVZFTF0gPSAid2FsX2xldmVsX2lu c3VmZmljaWVudCIsCisJW1JTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVRdID0gImluYWN0aXZlX3Rp bWVvdXQiLAogfTsKIAogLyogTWF4aW11bSBudW1iZXIgb2YgaW52YWxpZGF0aW9uIGNhdXNlcyAq LwotI2RlZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX1dBTF9MRVZFTAorI2RlZmlu ZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQKIAogU3RhdGlj QXNzZXJ0RGVjbChsZW5ndGhvZihTbG90SW52YWxpZGF0aW9uQ2F1c2VzKSA9PSAoUlNfSU5WQUxf TUFYX0NBVVNFUyArIDEpLAogCQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21hdGNoIik7CkBAIC0xNDAs NiArMTQxLDcgQEAgUmVwbGljYXRpb25TbG90ICpNeVJlcGxpY2F0aW9uU2xvdCA9IE5VTEw7CiAv KiBHVUMgdmFyaWFibGVzICovCiBpbnQJCQltYXhfcmVwbGljYXRpb25fc2xvdHMgPSAxMDsgLyog dGhlIG1heGltdW0gbnVtYmVyIG9mIHJlcGxpY2F0aW9uCiAJCQkJCQkJCQkJICogc2xvdHMgKi8K K2ludAkJCXJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCA9IDA7CiAKIC8qCiAgKiBU aGlzIEdVQyBsaXN0cyBzdHJlYW1pbmcgcmVwbGljYXRpb24gc3RhbmRieSBzZXJ2ZXIgc2xvdCBu YW1lcyB0aGF0CkBAIC0xNTksNiArMTYxLDEzIEBAIHN0YXRpYyBYTG9nUmVjUHRyIHNzX29sZGVz dF9mbHVzaF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIHN0YXRpYyB2b2lkIFJlcGxpY2F0aW9u U2xvdFNobWVtRXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIFJlcGxpY2F0 aW9uU2xvdERyb3BQdHIoUmVwbGljYXRpb25TbG90ICpzbG90KTsKIAorc3RhdGljIGJvb2wgSW52 YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNh dXNlIGNhdXNlLAorCQkJCQkJCQkJCSAgIFJlcGxpY2F0aW9uU2xvdCAqcywKKwkJCQkJCQkJCQkg ICBYTG9nUmVjUHRyIG9sZGVzdExTTiwKKwkJCQkJCQkJCQkgICBPaWQgZGJvaWQsCisJCQkJCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkg ICBib29sICppbnZhbGlkYXRlZCk7CisKIC8qIGludGVybmFsIHBlcnNpc3RlbmN5IGZ1bmN0aW9u cyAqLwogc3RhdGljIHZvaWQgUmVzdG9yZVNsb3RGcm9tRGlzayhjb25zdCBjaGFyICpuYW1lKTsK IHN0YXRpYyB2b2lkIENyZWF0ZVNsb3RPbkRpc2soUmVwbGljYXRpb25TbG90ICpzbG90KTsKQEAg LTUzNSwxMiArNTQ0LDE3IEBAIFJlcGxpY2F0aW9uU2xvdE5hbWUoaW50IGluZGV4LCBOYW1lIG5h bWUpCiAgKgogICogQW4gZXJyb3IgaXMgcmFpc2VkIGlmIG5vd2FpdCBpcyB0cnVlIGFuZCB0aGUg c2xvdCBpcyBjdXJyZW50bHkgaW4gdXNlLiBJZgogICogbm93YWl0IGlzIGZhbHNlLCB3ZSBzbGVl cCB1bnRpbCB0aGUgc2xvdCBpcyByZWxlYXNlZCBieSB0aGUgb3duaW5nIHByb2Nlc3MuCisgKgor ICogQW4gZXJyb3IgaXMgcmFpc2VkIGlmIGNoZWNrX2Zvcl9pbnZhbGlkYXRpb24gaXMgdHJ1ZSBh bmQgdGhlIHNsb3QgZ2V0cworICogaW52YWxpZGF0ZWQgbm93IG9yIGhhcyBiZWVuIGludmFsaWRh dGVkIHByZXZpb3VzbHkuCiAgKi8KIHZvaWQKLVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCBub3dhaXQpCitSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0IGNo YXIgKm5hbWUsIGJvb2wgbm93YWl0LAorCQkJCQkgICBib29sIGNoZWNrX2Zvcl9pbnZhbGlkYXRp b24pCiB7CiAJUmVwbGljYXRpb25TbG90ICpzOwogCWludAkJCWFjdGl2ZV9waWQ7CisJYm9vbAkJ cmVsZWFzZWRfbG9jayA9IGZhbHNlOwogCiAJQXNzZXJ0KG5hbWUgIT0gTlVMTCk7CiAKQEAgLTYx NSw2ICs2MjksNTcgQEAgcmV0cnk6CiAJLyogV2UgbWFkZSB0aGlzIHNsb3QgYWN0aXZlLCBzbyBp dCdzIG91cnMgbm93LiAqLwogCU15UmVwbGljYXRpb25TbG90ID0gczsKIAorCUxXTG9ja0FjcXVp cmUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCk7CisKKwkvKgorCSAqIENo ZWNrIGlmIHRoZSBhY3F1aXJlZCBzbG90IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkLiBBbmQsIGVy cm9yIG91dCBpZgorCSAqIGl0IGdldHMgaW52YWxpZGF0ZWQgbm93IG9yIGhhcyBiZWVuIGludmFs aWRhdGVkIHByZXZpb3VzbHksIGJlY2F1c2UKKwkgKiB0aGVyZSdzIG5vIHVzZSBpbiBhY3F1aXJp bmcgdGhlIGludmFsaWRhdGVkIHNsb3QuCisJICoKKwkgKiBYWFg6IEN1cnJlbnRseSB3ZSBjaGVj ayBmb3IgaW5hY3RpdmVfdGltZW91dCBpbnZhbGlkYXRpb24gaGVyZS4gV2UKKwkgKiBtaWdodCBu ZWVkIHRvIGNoZWNrIGZvciBvdGhlciBpbnZhbGlkYXRpb25zIHRvby4KKwkgKi8KKwlpZiAoY2hl Y2tfZm9yX2ludmFsaWRhdGlvbikKKwl7CisJCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CisK KwkJcmVsZWFzZWRfbG9jayA9IEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSU19JTlZB TF9JTkFDVElWRV9USU1FT1VULAorCQkJCQkJCQkJCQkJCSAgIHMsIDAsIEludmFsaWRPaWQsCisJ CQkJCQkJCQkJCQkJICAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJCQkJICAgJmlu dmFsaWRhdGVkKTsKKworCQkvKgorCQkgKiBJZiB0aGUgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRl ZCwgcmVjYWxjdWxhdGUgdGhlIHJlc291cmNlIGxpbWl0cy4KKwkJICovCisJCWlmIChpbnZhbGlk YXRlZCkKKwkJeworCQkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZFhtaW4oZmFsc2Up OworCQkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOworCQl9CisKKwkJaWYg KHMtPmRhdGEuaW52YWxpZGF0ZWQgPT0gUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVCkKKwkJewor CQkJLyoKKwkJCSAqIFJlbGVhc2UgdGhlIGxvY2sgaWYgaXQncyBub3QgeWV0IHRvIGtlZXAgdGhl IGNsZWFudXAgcGF0aCBvbgorCQkJICogZXJyb3IgaGFwcHkuCisJCQkgKi8KKwkJCWlmICghcmVs ZWFzZWRfbG9jaykKKwkJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2Nr KTsKKworCQkJQXNzZXJ0KHMtPmluYWN0aXZlX3NpbmNlID4gMCk7CisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRF KSwKKwkJCQkJIGVycm1zZygiY2FuIG5vIGxvbmdlciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0 aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCQlOYW1lU3RyKHMtPmRhdGEubmFtZSkpLAorCQkJCQkg ZXJyZGV0YWlsKCJUaGlzIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSBpdCB3YXMg aW5hY3RpdmUgc2luY2UgJXMgZm9yIG1vcmUgdGhhbiAlZCBzZWNvbmRzIHNwZWNpZmllZCBieSBc InJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dFwiLiIsCisJCQkJCQkJICAgdGltZXN0 YW1wdHpfdG9fc3RyKHMtPmluYWN0aXZlX3NpbmNlKSwKKwkJCQkJCQkgICByZXBsaWNhdGlvbl9z bG90X2luYWN0aXZlX3RpbWVvdXQpKSk7CisJCX0KKwl9CisKKwlpZiAoIXJlbGVhc2VkX2xvY2sp CisJCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOworCiAJLyoKIAkg KiBUaGUgY2FsbCB0byBwZ3N0YXRfYWNxdWlyZV9yZXBsc2xvdCgpIHByb3RlY3RzIGFnYWluc3Qg c3RhdHMgZm9yIGEKIAkgKiBkaWZmZXJlbnQgc2xvdCwgZnJvbSBiZWZvcmUgYSByZXN0YXJ0IG9y IHN1Y2gsIGJlaW5nIHByZXNlbnQgZHVyaW5nCkBAIC03ODUsNyArODUwLDcgQEAgUmVwbGljYXRp b25TbG90RHJvcChjb25zdCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCkKIHsKIAlBc3NlcnQoTXlS ZXBsaWNhdGlvblNsb3QgPT0gTlVMTCk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUs IG5vd2FpdCk7CisJUmVwbGljYXRpb25TbG90QWNxdWlyZShuYW1lLCBub3dhaXQsIGZhbHNlKTsK IAogCS8qCiAJICogRG8gbm90IGFsbG93IHVzZXJzIHRvIGRyb3AgdGhlIHNsb3RzIHdoaWNoIGFy ZSBjdXJyZW50bHkgYmVpbmcgc3luY2VkCkBAIC04MDgsNyArODczLDcgQEAgUmVwbGljYXRpb25T bG90QWx0ZXIoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBmYWlsb3ZlcikKIHsKIAlBc3NlcnQoTXlS ZXBsaWNhdGlvblNsb3QgPT0gTlVMTCk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUs IGZhbHNlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUsIGZhbHNlLCB0cnVlKTsKIAog CWlmIChTbG90SXNQaHlzaWNhbChNeVJlcGxpY2F0aW9uU2xvdCkpCiAJCWVyZXBvcnQoRVJST1Is CkBAIC0xNDgwLDcgKzE1NDUsOCBAQCBSZXBvcnRTbG90SW52YWxpZGF0aW9uKFJlcGxpY2F0aW9u U2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJCQkgICBOYW1lRGF0YSBzbG90bmFtZSwK IAkJCQkJICAgWExvZ1JlY1B0ciByZXN0YXJ0X2xzbiwKIAkJCQkJICAgWExvZ1JlY1B0ciBvbGRl c3RMU04sCi0JCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24pCisJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCSAgIFRp bWVzdGFtcFR6IGluYWN0aXZlX3NpbmNlKQogewogCVN0cmluZ0luZm9EYXRhIGVycl9kZXRhaWw7 CiAJYm9vbAkJaGludCA9IGZhbHNlOwpAQCAtMTUxMCw2ICsxNTc2LDEzIEBAIFJlcG9ydFNsb3RJ bnZhbGlkYXRpb24oUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCWNh c2UgUlNfSU5WQUxfV0FMX0xFVkVMOgogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZXJyX2Rl dGFpbCwgXygiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIFwid2FsX2xldmVs XCIgPj0gXCJsb2dpY2FsXCIgb24gdGhlIHByaW1hcnkgc2VydmVyLiIpKTsKIAkJCWJyZWFrOwor CQljYXNlIFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQ6CisJCQlBc3NlcnQoaW5hY3RpdmVfc2lu Y2UgPiAwKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsCisJCQkJCQkJIF8oIlRo ZSBzbG90IGhhcyBiZWVuIGluYWN0aXZlIHNpbmNlICVzIGZvciBtb3JlIHRoYW4gJWQgc2Vjb25k cyBzcGVjaWZpZWQgYnkgXCJyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXRcIi4iKSwK KwkJCQkJCQkgdGltZXN0YW1wdHpfdG9fc3RyKGluYWN0aXZlX3NpbmNlKSwKKwkJCQkJCQkgcmVw bGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0KTsKKwkJCWJyZWFrOwogCQljYXNlIFJTX0lO VkFMX05PTkU6CiAJCQlwZ191bnJlYWNoYWJsZSgpOwogCX0KQEAgLTE1NTMsNiArMTYyNiw3IEBA IEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRp b25DYXVzZSBjYXVzZSwKIAlUcmFuc2FjdGlvbklkIGluaXRpYWxfY2F0YWxvZ19lZmZlY3RpdmVf eG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCVhMb2dSZWNQdHIJaW5pdGlhbF9yZXN0YXJ0 X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCVJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNh dXNlIGludmFsaWRhdGlvbl9jYXVzZV9wcmV2IFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWSA9IFJT X0lOVkFMX05PTkU7CisJVGltZXN0YW1wVHogaW5hY3RpdmVfc2luY2UgPSAwOwogCiAJZm9yICg7 OykKIAl7CkBAIC0xNTYwLDYgKzE2MzQsNyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNs b3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCU5hbWVEYXRhCXNs b3RuYW1lOwogCQlpbnQJCQlhY3RpdmVfcGlkID0gMDsKIAkJUmVwbGljYXRpb25TbG90SW52YWxp ZGF0aW9uQ2F1c2UgaW52YWxpZGF0aW9uX2NhdXNlID0gUlNfSU5WQUxfTk9ORTsKKwkJVGltZXN0 YW1wVHogbm93ID0gMDsKIAogCQlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJbk1vZGUoUmVwbGljYXRp b25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCkpOwogCkBAIC0xNTcwLDYgKzE2NDUsMTggQEAg SW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlv bkNhdXNlIGNhdXNlLAogCQkJYnJlYWs7CiAJCX0KIAorCQlpZiAoY2F1c2UgPT0gUlNfSU5WQUxf SU5BQ1RJVkVfVElNRU9VVCAmJgorCQkJKHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91 dCA+IDAgJiYKKwkJCSBzLT5pbmFjdGl2ZV9zaW5jZSA+IDAgJiYKKwkJCSAhKFJlY292ZXJ5SW5Q cm9ncmVzcygpICYmIHMtPmRhdGEuc3luY2VkKSkpCisJCXsKKwkJCS8qCisJCQkgKiBXZSBnZXQg dGhlIGN1cnJlbnQgdGltZSBiZWZvcmVoYW5kIHRvIGF2b2lkIHN5c3RlbSBjYWxsIHdoaWxlCisJ CQkgKiBob2xkaW5nIHRoZSBzcGlubG9jay4KKwkJCSAqLworCQkJbm93ID0gR2V0Q3VycmVudFRp bWVzdGFtcCgpOworCQl9CisKIAkJLyoKIAkJICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8g YmUgaW52YWxpZGF0ZWQuIElmIGl0IG5lZWRzIHRvIGJlCiAJCSAqIGludmFsaWRhdGVkLCBhbmQg aXMgbm90IGN1cnJlbnRseSBhY3F1aXJlZCwgYWNxdWlyZSBpdCBhbmQgbWFyayBpdApAQCAtMTYy Myw2ICsxNzEwLDM5IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlv blNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJCQkJaWYgKFNsb3RJc0xvZ2ljYWwocykp CiAJCQkJCQlpbnZhbGlkYXRpb25fY2F1c2UgPSBjYXVzZTsKIAkJCQkJYnJlYWs7CisJCQkJY2Fz ZSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUOgorCisJCQkJCS8qCisJCQkJCSAqIFF1aWNrIGV4 aXQgaWYgaW5hY3RpdmUgdGltZW91dCBpbnZhbGlkYXRpb24gbWVjaGFuaXNtCisJCQkJCSAqIGlz IGRpc2FibGVkIG9yIHNsb3QgaXMgY3VycmVudGx5IGJlaW5nIHVzZWQgb3IgdGhlIHNsb3QKKwkJ CQkJICogb24gc3RhbmRieSBpcyBjdXJyZW50bHkgYmVpbmcgc3luY2VkIGZyb20gdGhlIHByaW1h cnkuCisJCQkJCSAqCisJCQkJCSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBpbnZhbGlkYXRlIHN5bmNl ZCBzbG90cyBiZWNhdXNlLAorCQkJCQkgKiB0aGV5IGFyZSB0eXBpY2FsbHkgY29uc2lkZXJlZCBu b3QgYWN0aXZlIGFzIHRoZXkgZG9uJ3QKKwkJCQkJICogcGVyZm9ybSBsb2dpY2FsIGRlY29kaW5n IHRvIHByb2R1Y2UgdGhlIGNoYW5nZXMuCisJCQkJCSAqLworCQkJCQlpZiAocmVwbGljYXRpb25f c2xvdF9pbmFjdGl2ZV90aW1lb3V0ID09IDAgfHwKKwkJCQkJCXMtPmluYWN0aXZlX3NpbmNlID09 IDAgfHwKKwkJCQkJCShSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBzLT5kYXRhLnN5bmNlZCkpCisJ CQkJCQlicmVhazsKKworCQkJCQkvKgorCQkJCQkgKiBDaGVjayBpZiB0aGUgc2xvdCBuZWVkcyB0 byBiZSBpbnZhbGlkYXRlZCBkdWUgdG8KKwkJCQkJICogcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2 ZV90aW1lb3V0IEdVQy4KKwkJCQkJICovCisJCQkJCWlmIChUaW1lc3RhbXBEaWZmZXJlbmNlRXhj ZWVkcyhzLT5pbmFjdGl2ZV9zaW5jZSwgbm93LAorCQkJCQkJCQkJCQkJICAgcmVwbGljYXRpb25f c2xvdF9pbmFjdGl2ZV90aW1lb3V0ICogMTAwMCkpCisJCQkJCXsKKwkJCQkJCWludmFsaWRhdGlv bl9jYXVzZSA9IGNhdXNlOworCQkJCQkJaW5hY3RpdmVfc2luY2UgPSBzLT5pbmFjdGl2ZV9zaW5j ZTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIEludmFsaWRhdGlvbiBkdWUgdG8gaW5hY3RpdmUgdGlt ZW91dCBpbXBsaWVzIHRoYXQKKwkJCQkJCSAqIG5vIG9uZSBpcyB1c2luZyB0aGUgc2xvdC4KKwkJ CQkJCSAqLworCQkJCQkJQXNzZXJ0KHMtPmFjdGl2ZV9waWQgPT0gMCk7CisJCQkJCX0KKwkJCQkJ YnJlYWs7CiAJCQkJY2FzZSBSU19JTlZBTF9OT05FOgogCQkJCQlwZ191bnJlYWNoYWJsZSgpOwog CQkJfQpAQCAtMTY0OCwxMSArMTc2OCwxNCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNs b3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCWFjdGl2ZV9waWQg PSBzLT5hY3RpdmVfcGlkOwogCiAJCS8qCi0JCSAqIElmIHRoZSBzbG90IGNhbiBiZSBhY3F1aXJl ZCwgZG8gc28gYW5kIG1hcmsgaXQgaW52YWxpZGF0ZWQKLQkJICogaW1tZWRpYXRlbHkuICBPdGhl cndpc2Ugd2UnbGwgc2lnbmFsIHRoZSBvd25pbmcgcHJvY2VzcywgYmVsb3csIGFuZAotCQkgKiBy ZXRyeS4KKwkJICogSWYgdGhlIHNsb3QgY2FuIGJlIGFjcXVpcmVkLCBkbyBzbyBvciBpZiB0aGUg c2xvdCBpcyBhbHJlYWR5IG91cnMsCisJCSAqIHRoZW4gbWFyayBpdCBpbnZhbGlkYXRlZC4gIE90 aGVyd2lzZSB3ZSdsbCBzaWduYWwgdGhlIG93bmluZworCQkgKiBwcm9jZXNzLCBiZWxvdywgYW5k IHJldHJ5LgogCQkgKi8KLQkJaWYgKGFjdGl2ZV9waWQgPT0gMCkKKwkJaWYgKGFjdGl2ZV9waWQg PT0gMCB8fAorCQkJKE15UmVwbGljYXRpb25TbG90ICE9IE5VTEwgJiYKKwkJCSBNeVJlcGxpY2F0 aW9uU2xvdCA9PSBzICYmCisJCQkgYWN0aXZlX3BpZCA9PSBNeVByb2NQaWQpKQogCQl7CiAJCQlN eVJlcGxpY2F0aW9uU2xvdCA9IHM7CiAJCQlzLT5hY3RpdmVfcGlkID0gTXlQcm9jUGlkOwpAQCAt MTcwNyw3ICsxODMwLDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0 aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJewogCQkJCVJlcG9ydFNsb3RJbnZh bGlkYXRpb24oaW52YWxpZGF0aW9uX2NhdXNlLCB0cnVlLCBhY3RpdmVfcGlkLAogCQkJCQkJCQkJ ICAgc2xvdG5hbWUsIHJlc3RhcnRfbHNuLAotCQkJCQkJCQkJICAgb2xkZXN0TFNOLCBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbik7CisJCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uLAorCQkJCQkJCQkJICAgaW5hY3RpdmVfc2luY2UpOwogCiAJCQkJaWYgKE15QmFj a2VuZFR5cGUgPT0gQl9TVEFSVFVQKQogCQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwoYWN0aXZl X3BpZCwKQEAgLTE3NTMsNyArMTg3Nyw4IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xv dChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAogCQkJUmVwb3J0U2xv dEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIGZhbHNlLCBhY3RpdmVfcGlkLAogCQkJ CQkJCQkgICBzbG90bmFtZSwgcmVzdGFydF9sc24sCi0JCQkJCQkJCSAgIG9sZGVzdExTTiwgc25h cHNob3RDb25mbGljdEhvcml6b24pOworCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkgICBpbmFjdGl2ZV9zaW5jZSk7CiAKIAkJCS8qIGRvbmUg d2l0aCB0aGlzIHNsb3QgZm9yIG5vdyAqLwogCQkJYnJlYWs7CkBAIC0xNzc2LDYgKzE5MDEsNyBA QCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0 aW9uQ2F1c2UgY2F1c2UsCiAgKiAtIFJTX0lOVkFMX0hPUklaT046IHJlcXVpcmVzIGEgc25hcHNo b3QgPD0gdGhlIGdpdmVuIGhvcml6b24gaW4gdGhlIGdpdmVuCiAgKiAgIGRiOyBkYm9pZCBtYXkg YmUgSW52YWxpZE9pZCBmb3Igc2hhcmVkIHJlbGF0aW9ucwogICogLSBSU19JTlZBTF9XQUxfTEVW RUw6IGlzIGxvZ2ljYWwKKyAqIC0gUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVDogaW5hY3RpdmUg dGltZW91dCBvY2N1cnMKICAqCiAgKiBOQiAtIHRoaXMgcnVucyBhcyBwYXJ0IG9mIGNoZWNrcG9p bnQsIHNvIGF2b2lkIHJhaXNpbmcgZXJyb3JzIGlmIHBvc3NpYmxlLgogICovCkBAIC0xODI4LDcg KzE5NTQsNyBAQCByZXN0YXJ0OgogfQogCiAvKgotICogRmx1c2ggYWxsIHJlcGxpY2F0aW9uIHNs b3RzIHRvIGRpc2suCisgKiBGbHVzaCBhbGwgcmVwbGljYXRpb24gc2xvdHMgdG8gZGlzayBhbmQg aW52YWxpZGF0ZSBzbG90cy4KICAqCiAgKiBJdCBpcyBjb252ZW5pZW50IHRvIGZsdXNoIGRpcnR5 IHJlcGxpY2F0aW9uIHNsb3RzIGF0IHRoZSB0aW1lIG9mIGNoZWNrcG9pbnQuCiAgKiBBZGRpdGlv bmFsbHksIGluIGNhc2Ugb2YgYSBzaHV0ZG93biBjaGVja3BvaW50LCB3ZSBhbHNvIGlkZW50aWZ5 IHRoZSBzbG90cwpAQCAtMTgzOSw2ICsxOTY1LDcgQEAgdm9pZAogQ2hlY2tQb2ludFJlcGxpY2F0 aW9uU2xvdHMoYm9vbCBpc19zaHV0ZG93bikKIHsKIAlpbnQJCQlpOworCWJvb2wJCWludmFsaWRh dGVkID0gZmFsc2U7CiAKIAllbG9nKERFQlVHMSwgInBlcmZvcm1pbmcgcmVwbGljYXRpb24gc2xv dCBjaGVja3BvaW50Iik7CiAKQEAgLTE4ODYsNiArMjAxMyw0MyBAQCBDaGVja1BvaW50UmVwbGlj YXRpb25TbG90cyhib29sIGlzX3NodXRkb3duKQogCQlTYXZlU2xvdFRvUGF0aChzLCBwYXRoLCBM T0cpOwogCX0KIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdEFsbG9jYXRpb25Mb2NrKTsK KworCWVsb2coREVCVUcxLCAicGVyZm9ybWluZyByZXBsaWNhdGlvbiBzbG90IGludmFsaWRhdGlv biIpOworCisJLyoKKwkgKiBOb3RlIHRoYXQgd2Ugd2lsbCBtYWtlIGFub3RoZXIgcGFzcyBvdmVy IHJlcGxpY2F0aW9uIHNsb3RzIGZvcgorCSAqIGludmFsaWRhdGlvbnMgdG8ga2VlcCB0aGUgY29k ZSBzaW1wbGUuIFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCB0aGUKKwkgKiB0cmF2ZXJzYWwg b3ZlciByZXBsaWNhdGlvbiBzbG90cyBpc24ndCB0aGF0IGNvc3RseSBldmVuIHdpdGggaHVuZHJl ZHMKKwkgKiBvZiByZXBsaWNhdGlvbiBzbG90cy4gSWYgaXQgZXZlciB0dXJucyBvdXQgdGhhdCB0 aGlzIGFzc3VtcHRpb24gaXMKKwkgKiB3cm9uZywgd2UgbWlnaHQgaGF2ZSB0byBwdXQgdGhlIGlu dmFsaWRhdGlvbiBjaGVjayBsb2dpYyBpbiB0aGUgYWJvdmUKKwkgKiBsb29wLCBmb3IgdGhhdCB3 ZSBtaWdodCBoYXZlIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisJICoKKwkgKiAtIEFjcXVyZSBDb250 cm9sTG9jayBsb2NrIG9uY2UgYmVmb3JlIHRoZSBsb29wLgorCSAqCisJICogLSBDYWxsIEludmFs aWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCBmb3IgZWFjaCBzbG90LgorCSAqCisJICogLSBIYW5k bGUgdGhlIGNhc2VzIGluIHdoaWNoIENvbnRyb2xMb2NrIGdldHMgcmVsZWFzZWQganVzdCBsaWtl CisJICogSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyBkb2VzLgorCSAqCisJICog LSBBdm9pZCBzYXZpbmcgc2xvdCBpbmZvIHRvIGRpc2sgdHdvIHRpbWVzIGZvciBlYWNoIGludmFs aWRhdGVkIHNsb3QuCisJICoKKwkgKiBYWFg6IFNob3VsZCB3ZSBtb3ZlIGluYWN0aXZlX3RpbWVv dXQgaW5hdmFsaWRhdGlvbiBjaGVjayBjbG9zZXIgdG8KKwkgKiB3YWxfcmVtb3ZlZCBpbiBDcmVh dGVDaGVja1BvaW50IGFuZCBDcmVhdGVSZXN0YXJ0UG9pbnQ/CisJICovCisJaW52YWxpZGF0ZWQg PSBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFJTX0lOVkFMX0lOQUNUSVZFX1RJ TUVPVVQsCisJCQkJCQkJCQkJCQkJIDAsCisJCQkJCQkJCQkJCQkJIEludmFsaWRPaWQsCisJCQkJ CQkJCQkJCQkJIEludmFsaWRUcmFuc2FjdGlvbklkKTsKKworCWlmIChpbnZhbGlkYXRlZCkKKwl7 CisJCS8qCisJCSAqIElmIGFueSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0ZWQsIHJlY2FsY3Vs YXRlIHRoZSByZXNvdXJjZQorCQkgKiBsaW1pdHMuCisJCSAqLworCQlSZXBsaWNhdGlvblNsb3Rz Q29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7CisJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVx dWlyZWRMU04oKTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCmlu ZGV4IGRkNmMxZDVhN2UuLjlhZDNlNTU3MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5j cy5jCkBAIC01MzksNyArNTM5LDcgQEAgcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCW1vdmV0byA9IE1pbihtb3ZldG8sIEdldFhMb2dSZXBsYXlSZWNQdHIo TlVMTCkpOwogCiAJLyogQWNxdWlyZSB0aGUgc2xvdCBzbyB3ZSAib3duIiBpdCAqLwotCVJlcGxp Y2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdG5hbWUpLCB0cnVlKTsKKwlSZXBsaWNhdGlv blNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgdHJ1ZSwgdHJ1ZSk7CiAKIAkvKiBBIHNs b3Qgd2hvc2UgcmVzdGFydF9sc24gaGFzIG5ldmVyIGJlZW4gcmVzZXJ2ZWQgY2Fubm90IGJlIGFk dmFuY2VkICovCiAJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRh dGEucmVzdGFydF9sc24pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCBjNjIz YjA3Y2YwLi4xNzQxZTA5MjU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAt ODQ2LDcgKzg0Niw3IEBAIFN0YXJ0UmVwbGljYXRpb24oU3RhcnRSZXBsaWNhdGlvbkNtZCAqY21k KQogCiAJaWYgKGNtZC0+c2xvdG5hbWUpCiAJewotCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNt ZC0+c2xvdG5hbWUsIHRydWUpOworCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5h bWUsIHRydWUsIHRydWUpOwogCQlpZiAoU2xvdElzTG9naWNhbChNeVJlcGxpY2F0aW9uU2xvdCkp CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKQEAgLTE0NTksNyArMTQ1OSw3IEBAIFN0YXJ0TG9naWNhbFJl cGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAogCUFzc2VydCghTXlSZXBsaWNh dGlvblNsb3QpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShjbWQtPnNsb3RuYW1lLCB0cnVl KTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUsIHRydWUpOwog CiAJLyoKIAkgKiBGb3JjZSBhIGRpc2Nvbm5lY3QsIHNvIHRoYXQgdGhlIGRlY29kaW5nIGNvZGUg ZG9lc24ndCBuZWVkIHRvIGNhcmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z191cGdyYWRlX3N1cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1 cHBvcnQuYwppbmRleCBjNTRiMDhmZTE4Li44Mjk1NmQ1OGQzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCkBAIC0yOTksNyArMjk5LDcgQEAgYmluYXJ5X3Vw Z3JhZGVfbG9naWNhbF9zbG90X2hhc19jYXVnaHRfdXAoUEdfRlVOQ1RJT05fQVJHUykKIAlzbG90 X25hbWUgPSBQR19HRVRBUkdfTkFNRSgwKTsKIAogCS8qIEFjcXVpcmUgdGhlIGdpdmVuIHNsb3Qg Ki8KLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RfbmFtZSksIHRydWUpOwor CVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdF9uYW1lKSwgdHJ1ZSwgZmFsc2Up OwogCiAJQXNzZXJ0KFNsb3RJc0xvZ2ljYWwoTXlSZXBsaWNhdGlvblNsb3QpKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA0NmMyNThiZTI4Li40OTkwZTczYzk3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMjk2MSw2ICsyOTYxLDE4IEBAIHN0cnVj dCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKIAorCXsKKwkJeyJyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQiLCBQR0NfU0lH SFVQLCBSRVBMSUNBVElPTl9TRU5ESU5HLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91 bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBpbnZhbGlkYXRpbmcgYW4gIgorCQkJCQkJICJpbmFj dGl2ZSByZXBsaWNhdGlvbiBzbG90LiIpLAorCQkJTlVMTCwKKwkJCUdVQ19VTklUX1MKKwkJfSwK KwkJJnJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCwKKwkJMCwgMCwgSU5UX01BWCwK KwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsiY29tbWl0X2RlbGF5IiwgUEdDX1NV U0VULCBXQUxfU0VUVElOR1MsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGRlbGF5IGluIG1p Y3Jvc2Vjb25kcyBiZXR3ZWVuIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgIgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGUwNTY3ZGUyMTkuLjUz NWZiMDczODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKQEAgLTMzNSw2ICszMzUsNyBAQAogI3dhbF9zZW5kZXJfdGltZW91dCA9IDYwcwkjIGlu IG1pbGxpc2Vjb25kczsgMCBkaXNhYmxlcwogI3RyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvZmYJ IyBjb2xsZWN0IHRpbWVzdGFtcCBvZiB0cmFuc2FjdGlvbiBjb21taXQKIAkJCQkjIChjaGFuZ2Ug cmVxdWlyZXMgcmVzdGFydCkKKyNyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgPSAw CSMgaW4gc2Vjb25kczsgMCBkaXNhYmxlcwogCiAjIC0gUHJpbWFyeSBTZXJ2ZXIgLQogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9zbG90LmgKaW5kZXggMWJjODA5NjBlZi4uNTZkMjBlMWE3OCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Nsb3QuaApAQCAtNTMsNiArNTMsOCBAQCB0eXBlZGVmIGVudW0gUmVwbGljYXRpb25TbG90 SW52YWxpZGF0aW9uQ2F1c2UKIAlSU19JTlZBTF9IT1JJWk9OLAogCS8qIHdhbF9sZXZlbCBpbnN1 ZmZpY2llbnQgZm9yIHNsb3QgKi8KIAlSU19JTlZBTF9XQUxfTEVWRUwsCisJLyogaW5hY3RpdmUg c2xvdCB0aW1lb3V0IGhhcyBvY2N1cnJlZCAqLworCVJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQs CiB9IFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlOwogCiBleHRlcm4gUEdETExJTVBP UlQgY29uc3QgY2hhciAqY29uc3QgU2xvdEludmFsaWRhdGlvbkNhdXNlc1tdOwpAQCAtMjMwLDYg KzIzMiw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBSZXBsaWNhdGlvblNsb3QgKk15UmVwbGljYXRp b25TbG90OwogLyogR1VDcyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcmVwbGljYXRp b25fc2xvdHM7CiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqc3RhbmRieV9zbG90X25hbWVzOwor ZXh0ZXJuIFBHRExMSU1QT1JUIGludCByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQ7 CiAKIC8qIHNobWVtIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAqLwogZXh0ZXJuIFNpemUgUmVw bGljYXRpb25TbG90c1NobWVtU2l6ZSh2b2lkKTsKQEAgLTI0NSw3ICsyNDgsOCBAQCBleHRlcm4g dm9pZCBSZXBsaWNhdGlvblNsb3REcm9wKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0KTsK IGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdERyb3BBY3F1aXJlZCh2b2lkKTsKIGV4dGVybiB2 b2lkIFJlcGxpY2F0aW9uU2xvdEFsdGVyKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZmFpbG92ZXIp OwogCi1leHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0IGNoYXIgKm5hbWUs IGJvb2wgbm93YWl0KTsKK2V4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCBub3dhaXQsCisJCQkJCQkJCSAgIGJvb2wgY2hlY2tfZm9yX2ludmFs aWRhdGlvbik7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RSZWxlYXNlKHZvaWQpOwogZXh0 ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90Q2xlYW51cChib29sIHN5bmNlZF9vbmx5KTsKIGV4dGVy biB2b2lkIFJlcGxpY2F0aW9uU2xvdFNhdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWNvdmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4 IGIxZWI3N2IxZWMuLmI0YzVjZTI4NzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21l c29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC0xMCw2ICsx MCw3IEBAIHRlc3RzICs9IHsKICAgICAgICAnZW5hYmxlX2luamVjdGlvbl9wb2ludHMnOiBnZXRf b3B0aW9uKCdpbmplY3Rpb25fcG9pbnRzJykgPyAneWVzJyA6ICdubycsCiAgICAgfSwKICAgICAn dGVzdHMnOiBbCisgICAgICAndC8wNTBfaW52YWxpZGF0ZV9zbG90cy5wbCcsCiAgICAgICAndC8w MDFfc3RyZWFtX3JlcC5wbCcsCiAgICAgICAndC8wMDJfYXJjaGl2aW5nLnBsJywKICAgICAgICd0 LzAwM19yZWNvdmVyeV90YXJnZXRzLnBsJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDUwX2ludmFsaWRhdGVfc2xvdHMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9pbnZh bGlkYXRlX3Nsb3RzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ2 NjMwMTljMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9pbnZh bGlkYXRlX3Nsb3RzLnBsCkBAIC0wLDAgKzEsMjg2IEBACisjIENvcHlyaWdodCAoYykgMjAyNCwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IGZvciByZXBsaWNh dGlvbiBzbG90cyBpbnZhbGlkYXRpb24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwordXNlIFRlc3Q6Ok1vcmU7Cit1c2UgVGltZTo6SGlSZXMgcXcodXNs ZWVwKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogSW52YWxp ZGF0ZSBzdHJlYW1pbmcgc3RhbmRieSdzIHNsb3QgYXMgd2VsbCBhcyBsb2dpY2FsCisjIGZhaWxv dmVyIHNsb3Qgb24gcHJpbWFyeSBkdWUgdG8gcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1l b3V0LiBBbHNvLAorIyBjaGVjayB0aGUgbG9naWNhbCBmYWlsb3ZlciBzbG90IHN5bmNlZCBvbiB0 byB0aGUgc3RhbmRieSBkb2Vzbid0IGludmFsaWRhdGUKKyMgdGhlIHNsb3Qgb24gaXRzIG93biwg YnV0IGdldHMgdGhlIGludmFsaWRhdGVkIHN0YXRlIGZyb20gdGhlIHJlbW90ZSBzbG90IG9uCisj IHRoZSBwcmltYXJ5LgorCisjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAkcHJpbWFyeSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJHByaW1hcnktPmlu aXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworCisjIEF2b2lkIGNoZWNrcG9pbnQg ZHVyaW5nIHRoZSB0ZXN0LCBvdGhlcndpc2UsIHRoZSB0ZXN0IGNhbiBnZXQgdW5wcmVkaWN0YWJs ZQorJHByaW1hcnktPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworY2hlY2tw b2ludF90aW1lb3V0ID0gMWgKK2F1dG92YWN1dW0gPSBvZmYKK30pOworJHByaW1hcnktPnN0YXJ0 OworCisjIFRha2UgYmFja3VwCitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRwcmlt YXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyBDcmVhdGUgYSBzdGFuZGJ5IGxpbmtpbmcg dG8gdGhlIHByaW1hcnkgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIHNsb3QKK215ICRzdGFuZGJ5MSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieTEnKTsKKyRzdGFuZGJ5MS0+ aW5pdF9mcm9tX2JhY2t1cCgkcHJpbWFyeSwgJGJhY2t1cF9uYW1lLCBoYXNfc3RyZWFtaW5nID0+ IDEpOworCitteSAkY29ubnN0cl8xID0gJHByaW1hcnktPmNvbm5zdHI7Ciskc3RhbmRieTEtPmFw cGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNr ID0gb24KK3ByaW1hcnlfc2xvdF9uYW1lID0gJ3NiMV9zbG90JworcHJpbWFyeV9jb25uaW5mbyA9 ICckY29ubnN0cl8xIGRibmFtZT1wb3N0Z3JlcycKKykpOworCisjIENyZWF0ZSBzeW5jIHNsb3Qg b24gdGhlIHByaW1hcnkKKyRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdf Y3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgnbHN1YjFfc3luY19zbG90JywgJ3Rlc3Rf ZGVjb2RpbmcnLCBmYWxzZSwgZmFsc2UsIHRydWUpO30KKyk7CisKKyRwcmltYXJ5LT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgU0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBs aWNhdGlvbl9zbG90KHNsb3RfbmFtZSA6PSAnc2IxX3Nsb3QnLCBpbW1lZGlhdGVseV9yZXNlcnZl IDo9IHRydWUpOworXSk7CisKKyRzdGFuZGJ5MS0+c3RhcnQ7CisKK215ICRzdGFuZGJ5MV9sb2dz dGFydCA9IC1zICRzdGFuZGJ5MS0+bG9nZmlsZTsKKworIyBXYWl0IHVudGlsIHN0YW5kYnkgaGFz IHJlcGxheWVkIGVub3VnaCBkYXRhCiskcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkc3RhbmRi eTEpOworCisjIFN5bmNocm9uaXplIHRoZSBwcmltYXJ5IHNlcnZlciBzbG90cyB0byB0aGUgc3Rh bmRieQorJHN0YW5kYnkxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19zeW5jX3Jl cGxpY2F0aW9uX3Nsb3RzKCk7Iik7CisKKyMgQ29uZmlybSB0aGF0IHRoZSBsb2dpY2FsIGZhaWxv dmVyIHNsb3QgaXMgY3JlYXRlZCBvbiB0aGUgc3RhbmRieSBhbmQgaXMKKyMgZmxhZ2dlZCBhcyAn c3luY2VkJy4KK2lzKCAkc3RhbmRieTEtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywKKwkJcXtT RUxFQ1QgY291bnQoKikgPSAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMKKwkJICBXSEVSRSBz bG90X25hbWUgPSAnbHN1YjFfc3luY19zbG90JyBBTkQgc3luY2VkIEFORCBOT1QgdGVtcG9yYXJ5 O30KKwkpLAorCSJ0IiwKKwknbG9naWNhbCBzbG90IGxzdWIxX3N5bmNfc2xvdCBoYXMgc3luY2Vk IGFzIHRydWUgb24gc3RhbmRieScpOworCitteSAkbG9nc3RhcnQgPSAtcyAkcHJpbWFyeS0+bG9n ZmlsZTsKK215ICRpbmFjdGl2ZV90aW1lb3V0ID0gMjsKKworIyBTZXQgdGltZW91dCBzbyB0aGF0 IHRoZSBuZXh0IGNoZWNrcG9pbnQgd2lsbCBpbnZhbGlkYXRlIHRoZSBpbmFjdGl2ZQorIyByZXBs aWNhdGlvbiBzbG90LgorJHByaW1hcnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAg ICBBTFRFUiBTWVNURU0gU0VUIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBUTyAn JHtpbmFjdGl2ZV90aW1lb3V0fXMnOworXSk7CiskcHJpbWFyeS0+cmVsb2FkOworCisjIFdhaXQg Zm9yIHRoZSBsb2dpY2FsIGZhaWxvdmVyIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlIG9uIHRoZSBw cmltYXJ5LiBOb3RlCisjIHRoYXQgbm9ib2R5IGhhcyBhY3F1aXJlZCB0aGF0IHNsb3QgeWV0LCBz byBkdWUgdG8KKyMgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0IHNldHRpbmcgYWJv dmUgaXQgbXVzdCBnZXQgaW52YWxpZGF0ZWQuCit3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbigk cHJpbWFyeSwgJ2xzdWIxX3N5bmNfc2xvdCcsICRsb2dzdGFydCwKKwkkaW5hY3RpdmVfdGltZW91 dCk7CisKKyMgU2V0IHRpbWVvdXQgb24gdGhlIHN0YW5kYnkgYWxzbyB0byBjaGVjayB0aGUgc3lu Y2VkIHNsb3RzIGRvbid0IGdldAorIyBpbnZhbGlkYXRlZCBkdWUgdG8gdGltZW91dCBvbiB0aGUg c3RhbmRieS4KKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworICAgIEFM VEVSIFNZU1RFTSBTRVQgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0IFRPICcycyc7 CitdKTsKKyRzdGFuZGJ5MS0+cmVsb2FkOworCisjIE5vdywgc3luYyB0aGUgbG9naWNhbCBmYWls b3ZlciBzbG90IGZyb20gdGhlIHJlbW90ZSBzbG90IG9uIHRoZSBwcmltYXJ5LgorIyBOb3RlIHRo YXQgdGhlIHJlbW90ZSBzbG90IGhhcyBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQgZHVlIHRvIGlu YWN0aXZlCisjIHRpbWVvdXQuIE5vdywgdGhlIHN0YW5kYnkgbXVzdCBhbHNvIHNlZSBpdCBhcyBp bnZhbGlkYXRlZC4KKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdf c3luY19yZXBsaWNhdGlvbl9zbG90cygpOyIpOworCisjIFdhaXQgZm9yIHRoZSBpbmFjdGl2ZSBy ZXBsaWNhdGlvbiBzbG90IHRvIGJlIGludmFsaWRhdGVkLgorJHN0YW5kYnkxLT5wb2xsX3F1ZXJ5 X3VudGlsKAorCSdwb3N0Z3JlcycsIHFxWworCVNFTEVDVCBDT1VOVChzbG90X25hbWUpID0gMSBG Uk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9zeW5j X3Nsb3QnIEFORAorCQlpbnZhbGlkYXRpb25fcmVhc29uID0gJ2luYWN0aXZlX3RpbWVvdXQnOwor XSkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbGljYXRpb24g c2xvdCBsc3ViMV9zeW5jX3Nsb3QgaW52YWxpZGF0aW9uIHRvIGJlIHN5bmNlZCBvbiBzdGFuZGJ5 IjsKKworIyBTeW5jZWQgc2xvdCBtdXN0bid0IGdldCBpbnZhbGlkYXRlZCBvbiB0aGUgc3RhbmRi eSBldmVuIGFmdGVyIGEgY2hlY2twb2ludCwKKyMgaXQgbXVzdCBzeW5jIGludmFsaWRhdGlvbiBm cm9tIHRoZSBwcmltYXJ5LiBTbywgd2UgbXVzdCBub3Qgc2VlIHRoZSBzbG90J3MKKyMgaW52YWxp ZGF0aW9uIG1lc3NhZ2UgaW4gc2VydmVyIGxvZy4KKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDSEVDS1BPSU5UIik7CitvayggISRzdGFuZGJ5MS0+bG9nX2NvbnRhaW5zKAorCQki aW52YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCJsc3ViMV9zeW5jX3Nsb3Rc IiIsCisJCSRzdGFuZGJ5MV9sb2dzdGFydCksCisJJ2NoZWNrIHRoYXQgc3luZWQgc2xvdCBsc3Vi MV9zeW5jX3Nsb3QgaGFzIG5vdCBiZWVuIGludmFsaWRhdGVkIG9uIHRoZSBzdGFuZGJ5JworKTsK KworIyBTdG9wIHN0YW5kYnkgdG8gbWFrZSB0aGUgc3RhbmRieSdzIHJlcGxpY2F0aW9uIHNsb3Qg b24gdGhlIHByaW1hcnkgaW5hY3RpdmUKKyRzdGFuZGJ5MS0+c3RvcDsKKworIyBXYWl0IGZvciB0 aGUgc3RhbmRieSdzIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlCit3YWl0X2Zv cl9zbG90X2ludmFsaWRhdGlvbigkcHJpbWFyeSwgJ3NiMV9zbG90JywgJGxvZ3N0YXJ0LAorCSRp bmFjdGl2ZV90aW1lb3V0KTsKKworIyBUZXN0Y2FzZSBlbmQ6IEludmFsaWRhdGUgc3RyZWFtaW5n IHN0YW5kYnkncyBzbG90IGFzIHdlbGwgYXMgbG9naWNhbCBmYWlsb3ZlcgorIyBzbG90IG9uIHBy aW1hcnkgZHVlIHRvIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dC4gQWxzbywgY2hl Y2sgdGhlCisjIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCBzeW5jZWQgb24gdG8gdGhlIHN0YW5kYnkg ZG9lc24ndCBpbnZhbGlkYXRlIHRoZSBzbG90IG9uCisjIGl0cyBvd24sIGJ1dCBnZXRzIHRoZSBp bnZhbGlkYXRlZCBzdGF0ZSBmcm9tIHRoZSByZW1vdGUgc2xvdCBvbiB0aGUgcHJpbWFyeS4KKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2Fz ZSBzdGFydDogSW52YWxpZGF0ZSBsb2dpY2FsIHN1YnNjcmliZXIncyBzbG90IGR1ZSB0bworIyBy ZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQuCisKK215ICRwdWJsaXNoZXIgPSAkcHJp bWFyeTsKKworIyBQcmVwYXJlIGZvciB0aGUgbmV4dCB0ZXN0CiskcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgQUxURVIgU1lTVEVNIFNFVCByZXBsaWNhdGlvbl9z bG90X2luYWN0aXZlX3RpbWVvdXQgVE8gJzAnOworXSk7CiskcHVibGlzaGVyLT5yZWxvYWQ7CisK KyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJHN1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YicpOworJHN1YnNjcmliZXItPmluaXQ7Ciskc3Vic2NyaWJl ci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHRhYmxlcworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YmwgKGlkIGludCkiKTsKKyRzdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RibCAoaWQgaW50KSIpOwor CisjIEluc2VydCBzb21lIGRhdGEKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJJTlNFUlQgSU5UTyB0ZXN0X3RibCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxLCA1KSk7Iik7 CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0g JHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRwdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgQUxMIFRBQkxF UyIpOworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworICAgIFNFTEVD VCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KHNsb3RfbmFtZSA6PSAnbHN1YjFf c2xvdCcsIHBsdWdpbiA6PSAncGdvdXRwdXQnKTsKK10pOworCiskc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc3ViIENPTk5FQ1RJT04gJyRw dWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gcHViIFdJVEggKHNsb3RfbmFtZSA9ICdsc3Vi MV9zbG90JywgY3JlYXRlX3Nsb3QgPSBmYWxzZSkiCispOworCiskc3Vic2NyaWJlci0+d2FpdF9m b3Jfc3Vic2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1YicpOworCitteSAkcmVzdWx0ID0K KyAgJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YmwiKTsKKworaXMoJHJlc3VsdCwgcXEoNSksICJjaGVjayBpbml0aWFsIGNvcHkg d2FzIGRvbmUiKTsKKworIyBQcmVwYXJlIGZvciB0aGUgbmV4dCB0ZXN0CiskcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgQUxURVIgU1lTVEVNIFNFVCByZXBsaWNh dGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgVE8gJyAke2luYWN0aXZlX3RpbWVvdXR9cyc7Citd KTsKKyRwdWJsaXNoZXItPnJlbG9hZDsKKworJGxvZ3N0YXJ0ID0gLXMgJHB1Ymxpc2hlci0+bG9n ZmlsZTsKKworIyBTdG9wIHN1YnNjcmliZXIgdG8gbWFrZSB0aGUgcmVwbGljYXRpb24gc2xvdCBv biBwdWJsaXNoZXIgaW5hY3RpdmUKKyRzdWJzY3JpYmVyLT5zdG9wOworCisjIFdhaXQgZm9yIHRo ZSByZXBsaWNhdGlvbiBzbG90IHRvIGJlY29tZSBpbmFjdGl2ZSBhbmQgdGhlbiBpbnZhbGlkYXRl ZCBkdWUgdG8KKyMgdGltZW91dC4KK3dhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uKCRwdWJsaXNo ZXIsICdsc3ViMV9zbG90JywgJGxvZ3N0YXJ0LAorCSRpbmFjdGl2ZV90aW1lb3V0KTsKKworIyBU ZXN0Y2FzZSBlbmQ6IEludmFsaWRhdGUgbG9naWNhbCBzdWJzY3JpYmVyJ3Mgc2xvdCBkdWUgdG8K KyMgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0LgorIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCitzdWIgd2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24KK3sKKwlteSAoJG5vZGUsICRz bG90X25hbWUsICRvZmZzZXQsICRpbmFjdGl2ZV90aW1lb3V0KSA9IEBfOworCW15ICRuYW1lID0g JG5vZGUtPm5hbWU7CisKKwkjIFdhaXQgZm9yIHRoZSByZXBsaWNhdGlvbiBzbG90IHRvIGJlY29t ZSBpbmFjdGl2ZQorCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBxcVsK KwkJU0VMRUNUIENPVU5UKHNsb3RfbmFtZSkgPSAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMK KwkJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdF9uYW1lJyBBTkQgYWN0aXZlID0gJ2YnOworCV0p CisJICBvciBkaWUKKwkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc2xvdCAkc2xvdF9u YW1lIHRvIGJlY29tZSBpbmFjdGl2ZSBvbiBub2RlICRuYW1lIjsKKworCSMgV2FpdCBmb3IgdGhl IHJlcGxpY2F0aW9uIHNsb3QgaW5mbyB0byBiZSB1cGRhdGVkCisJJG5vZGUtPnBvbGxfcXVlcnlf dW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEg RlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCQkJV0hFUkUgaW5hY3RpdmVfc2luY2UgSVMgTk9U IE5VTEwKKwkJCQlBTkQgc2xvdF9uYW1lID0gJyRzbG90X25hbWUnIEFORCBhY3RpdmUgPSAnZic7 CisJXSkKKwkgIG9yIGRpZQorCSAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBpbmZvIG9m IHNsb3QgJHNsb3RfbmFtZSB0byBiZSB1cGRhdGVkIG9uIG5vZGUgJG5hbWUiOworCisJIyBTbGVl cCBhdCBsZWFzdCAkaW5hY3RpdmVfdGltZW91dCBkdXJhdGlvbiB0byBhdm9pZCBtdWx0aXBsZSBj aGVja3BvaW50cworCSMgZm9yIHRoZSBzbG90IHRvIGdldCBpbnZhbGlkYXRlZC4KKwlzbGVlcCgk aW5hY3RpdmVfdGltZW91dCk7CisKKwljaGVja19mb3Jfc2xvdF9pbnZhbGlkYXRpb25faW5fc2Vy dmVyX2xvZygkbm9kZSwgJHNsb3RfbmFtZSwgJG9mZnNldCk7CisKKwkjIFdhaXQgZm9yIHRoZSBp bmFjdGl2ZSByZXBsaWNhdGlvbiBzbG90IHRvIGJlIGludmFsaWRhdGVkCisJJG5vZGUtPnBvbGxf cXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgQ09VTlQoc2xvdF9uYW1l KSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCQkJV0hFUkUgc2xvdF9uYW1lID0gJyRz bG90X25hbWUnIEFORAorCQkJaW52YWxpZGF0aW9uX3JlYXNvbiA9ICdpbmFjdGl2ZV90aW1lb3V0 JzsKKwldKQorCSAgb3IgZGllCisJICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGluYWN0 aXZlIHNsb3QgJHNsb3RfbmFtZSB0byBiZSBpbnZhbGlkYXRlZCBvbiBub2RlICRuYW1lIjsKKwor CSMgQ2hlY2sgdGhhdCB0aGUgaW52YWxpZGF0ZWQgc2xvdCBjYW5ub3QgYmUgYWNxdWlyZWQKKwlt eSAoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycik7CisKKwkoJHJlc3VsdCwgJHN0ZG91dCwgJHN0 ZGVycikgPSAkbm9kZS0+cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCQlTRUxFQ1QgcGdfcmVw bGljYXRpb25fc2xvdF9hZHZhbmNlKCckc2xvdF9uYW1lJywgJzAvMScpOworCV0pOworCisJb2so ICRzdGRlcnIgPX4KKwkJICAvY2FuIG5vIGxvbmdlciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0 aW9uIHNsb3QgIiRzbG90X25hbWUiLywKKwkJImRldGVjdGVkIGVycm9yIHVwb24gdHJ5aW5nIHRv IGFjcXVpcmUgaW52YWxpZGF0ZWQgc2xvdCAkc2xvdF9uYW1lIG9uIG5vZGUgJG5hbWUiCisJICAp CisJICBvciBkaWUKKwkgICJjb3VsZCBub3QgZGV0ZWN0IGVycm9yIHVwb24gdHJ5aW5nIHRvIGFj cXVpcmUgaW52YWxpZGF0ZWQgc2xvdCAkc2xvdF9uYW1lIG9uIG5vZGUgJG5hbWUiOworfQorCisj IENoZWNrIGZvciBpbnZhbGlkYXRpb24gb2Ygc2xvdCBpbiBzZXJ2ZXIgbG9nCitzdWIgY2hlY2tf Zm9yX3Nsb3RfaW52YWxpZGF0aW9uX2luX3NlcnZlcl9sb2cKK3sKKwlteSAoJG5vZGUsICRzbG90 X25hbWUsICRvZmZzZXQpID0gQF87CisJbXkgJG5hbWUgPSAkbm9kZS0+bmFtZTsKKwlteSAkaW52 YWxpZGF0ZWQgPSAwOworCisJZm9yIChteSAkaSA9IDA7ICRpIDwgMTAgKiAkUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsgJGkrKykKKwl7CisJCSRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQiKTsKKwkJaWYgKCRub2RlLT5sb2dfY29udGFpbnMo CisJCQkJImludmFsaWRhdGluZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJHNsb3RfbmFt ZVwiIiwKKwkJCQkkb2Zmc2V0KSkKKwkJeworCQkJJGludmFsaWRhdGVkID0gMTsKKwkJCWxhc3Q7 CisJCX0KKwkJdXNsZWVwKDEwMF8wMDApOworCX0KKwlvaygkaW52YWxpZGF0ZWQsCisJCSJjaGVj ayB0aGF0IHNsb3QgJHNsb3RfbmFtZSBpbnZhbGlkYXRpb24gaGFzIGJlZW4gbG9nZ2VkIG9uIG5v ZGUgJG5hbWUiCisJKTsKK30KKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM0LjEKCg== --000000000000fcf3f6061b9c82d8 Content-Type: application/x-patch; name="v41-0002-Add-XID-age-based-replication-slot-invalidation.patch" Content-Disposition: attachment; filename="v41-0002-Add-XID-age-based-replication-slot-invalidation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lxrr9aqp1 RnJvbSAzZTRlOWM4OTY1ZDYxMDlmNzEzMThhMzM3YzFmMWUxMGYyYWI2N2I2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFN1biwgMjMgSnVuIDIwMjQgMTY6MTg6MjEgKzAw MDAKU3ViamVjdDogW1BBVENIIHY0MSAyLzJdIEFkZCBYSUQgYWdlIGJhc2VkIHJlcGxpY2F0aW9u IHNsb3QgaW52YWxpZGF0aW9uCgpUaWxsIG5vdywgcG9zdGdyZXMgaGFzIHRoZSBhYmlsaXR5IHRv IGludmFsaWRhdGUgaW5hY3RpdmUKcmVwbGljYXRpb24gc2xvdHMgYmFzZWQgb24gdGhlIGFtb3Vu dCBvZiBXQUwgKHNldCB2aWEKbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZSBHVUMpIHRoYXQgd2lsbCBi ZSBuZWVkZWQgZm9yIHRoZSBzbG90cyBpbgpjYXNlIHRoZXkgYmVjb21lIGFjdGl2ZS4gSG93ZXZl ciwgY2hvb3NpbmcgYSBkZWZhdWx0IHZhbHVlIGZvcgptYXhfc2xvdF93YWxfa2VlcF9zaXplIGlz IHRyaWNreS4gQmVjYXVzZSB0aGUgYW1vdW50IG9mIFdBTCBhCmN1c3RvbWVyIGdlbmVyYXRlcywg YW5kIHRoZWlyIGFsbG9jYXRlZCBzdG9yYWdlIHdpbGwgdmFyeSBncmVhdGx5CmluIHByb2R1Y3Rp b24sIG1ha2luZyBpdCBkaWZmaWN1bHQgdG8gcGluIGRvd24gYSBvbmUtc2l6ZS1maXRzLWFsbAp2 YWx1ZS4gSXQgaXMgb2Z0ZW4gZWFzeSBmb3IgZGV2ZWxvcGVycyB0byBzZXQgYW4gWElEIGFnZSAo YWdlIG9mCnNsb3QncyB4bWluIG9yIGNhdGFsb2dfeG1pbikgb2Ygc2F5IDEgb3IgMS41IGJpbGxp b24sIGFmdGVyIHdoaWNoCnRoZSBzbG90cyBnZXQgaW52YWxpZGF0ZWQuCgpUbyBhY2hpZXZlIHRo ZSBhYm92ZSwgcG9zdGdyZXMgaW50cm9kdWNlcyBhIEdVQyBhbGxvd2luZyB1c2VycwpzZXQgc2xv dCBYSUQgYWdlLiBUaGUgcmVwbGljYXRpb24gc2xvdHMgd2hvc2UgeG1pbiBvciBjYXRhbG9nX3ht aW4KaGFzIHJlYWNoZWQgdGhlIGFnZSBzcGVjaWZpZWQgYnkgdGhpcyBzZXR0aW5nIGdldCBpbnZh bGlkYXRlZC4KClRoZSBpbnZhbGlkYXRpb24gY2hlY2sgaGFwcGVucyBhdCB2YXJpb3VzIGxvY2F0 aW9ucyB0byBoZWxwIGJlaW5nCmFzIGxhdGVzdCBhcyBwb3NzaWJsZSwgdGhlc2UgbG9jYXRpb25z IGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKLSBXaGVuZXZlciB0aGUgc2xvdCBpcyBhY3F1aXJlZCBh bmQgdGhlIHNsb3QgYWNxdWlzaXRpb24gZXJyb3JzCm91dCBpZiBpbnZhbGlkYXRlZC4KLSBEdXJp bmcgY2hlY2twb2ludAotIER1cmluZyB2YWN1dW0gKGJvdGggY29tbWFuZC1iYXNlZCBhbmQgYXV0 b3ZhY3V1bSkKCkF1dGhvcjogQmhhcmF0aCBSdXBpcmVkZHkKUmV2aWV3ZWQtYnk6IEJlcnRyYW5k IERyb3V2b3QsIEFtaXQgS2FwaWxhLCBTaHZldGEgTWFsaWsKRGlzY3Vzc2lvbjogaHR0cHM6Ly93 d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUxqMkFDVzRhVWUtX3VGUU9qZFdDRU4teFhv TEdobXZSRm5MOFNOd19UWjVuSmUrYXdAbWFpbC5nbWFpbC5jb20KRGlzY3Vzc2lvbjogaHR0cHM6 Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC8yMDI0MDMyNzE1MDU1Ny5HQTM5OTQ5Mzcl NDBuYXRoYW54cHMxMwpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNz YWdlLWlkL0NBJTJCVGdtb2FSRUNjbnlxeEF4VWhQNWRrMlM0SFglM0RwR2gtcC1Qa0EzdWMlMkJq R185aGlNdyU0MG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAg ICAgICAgICAgICAgICAgICAgIHwgIDI2ICsrCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNn bWwgICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMg ICAgICAgICAgICAgICAgIHwgIDgwICsrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMgICAgICAgICAgICAgICAgfCAxNTEgKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xv dC5oICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFs aWRhdGVfc2xvdHMucGwgICB8IDMyMSArKysrKysrKysrKysrKysrKy0KIDggZmlsZXMgY2hhbmdl ZCwgNTgzIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCA1ZTdh ODFhMWZkLi4yMGQ4MDBjZTBjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00NTg3LDYgKzQ1ODcsMzIgQEAgcmVz dG9yZV9jb21tYW5kID0gJ2NvcHkgIkM6XFxzZXJ2ZXJcXGFyY2hpdmVkaXJcXCVmIiAiJXAiJyAg IyBXaW5kb3dzCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVwbGljYXRpb24tc2xvdC14aWQtYWdlIiB4cmVmbGFi ZWw9InJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZSI+CisgICAgICA8dGVybT48dmFybmFtZT5yZXBs aWNhdGlvbl9zbG90X3hpZF9hZ2U8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAg ICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+cmVwbGljYXRpb25fc2xv dF94aWRfYWdlPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAg ICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAg IDxwYXJhPgorICAgICAgICBJbnZhbGlkYXRlIHJlcGxpY2F0aW9uIHNsb3RzIHdob3NlIDxsaXRl cmFsPnhtaW48L2xpdGVyYWw+ICh0aGUgb2xkZXN0CisgICAgICAgIHRyYW5zYWN0aW9uIHRoYXQg dGhpcyBzbG90IG5lZWRzIHRoZSBkYXRhYmFzZSB0byByZXRhaW4pIG9yCisgICAgICAgIDxsaXRl cmFsPmNhdGFsb2dfeG1pbjwvbGl0ZXJhbD4gKHRoZSBvbGRlc3QgdHJhbnNhY3Rpb24gYWZmZWN0 aW5nIHRoZQorICAgICAgICBzeXN0ZW0gY2F0YWxvZ3MgdGhhdCB0aGlzIHNsb3QgbmVlZHMgdGhl IGRhdGFiYXNlIHRvIHJldGFpbikgaGFzIHJlYWNoZWQKKyAgICAgICAgdGhlIGFnZSBzcGVjaWZp ZWQgYnkgdGhpcyBzZXR0aW5nLiBBIHZhbHVlIG9mIHplcm8gKHdoaWNoIGlzIGRlZmF1bHQpCisg ICAgICAgIGRpc2FibGVzIHRoaXMgZmVhdHVyZS4gVXNlcnMgY2FuIHNldCB0aGlzIHZhbHVlIGFu eXdoZXJlIGZyb20gemVybyB0bworICAgICAgICB0d28gYmlsbGlvbi4gVGhpcyBwYXJhbWV0ZXIg Y2FuIG9ubHkgYmUgc2V0IGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25m PC9maWxlbmFtZT4gZmlsZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQKKyAgICAgICAgbGluZS4K KyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBpbnZhbGlkYXRp b24gY2hlY2sgaGFwcGVucyBlaXRoZXIgd2hlbiB0aGUgc2xvdCBpcyBhY3F1aXJlZAorICAgICAg ICBmb3IgdXNlIG9yIGR1cmluZyB2YWN1dW0gb3IgZHVyaW5nIGNoZWNrcG9pbnQuCisgICAgICAg PC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAg PHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXRyYWNrLWNvbW1pdC10aW1lc3RhbXAiIHhyZWZsYWJlbD0i dHJhY2tfY29tbWl0X3RpbWVzdGFtcCI+CiAgICAgICA8dGVybT48dmFybmFtZT50cmFja19jb21t aXRfdGltZXN0YW1wPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCiAgICAgICA8aW5k ZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9j L3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4IDQ4NjdhZjFiNjEuLjA0OTBmOWYxNTYg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTI1ODcsNiArMjU4NywxNCBAQCBTRUxFQ1QgKiBG Uk9NIHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKICAgICAgICAg ICA8eHJlZiBsaW5rZW5kPSJndWMtcmVwbGljYXRpb24tc2xvdC1pbmFjdGl2ZS10aW1lb3V0Ii8+ IHBhcmFtZXRlci4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAg ICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGxpdGVyYWw+eGlkX2Fn ZWQ8L2xpdGVyYWw+IG1lYW5zIHRoYXQgdGhlIHNsb3QncworICAgICAgICAgIDxsaXRlcmFsPnht aW48L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmNhdGFsb2dfeG1pbjwvbGl0ZXJhbD4KKyAgICAgICAg ICBoYXMgcmVhY2hlZCB0aGUgYWdlIHNwZWNpZmllZCBieQorICAgICAgICAgIDx4cmVmIGxpbmtl bmQ9Imd1Yy1yZXBsaWNhdGlvbi1zbG90LXhpZC1hZ2UiLz4gcGFyYW1ldGVyLgorICAgICAgICAg PC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCA0 OGY4ZWFiMjAyLi45ZWViNDJhYzI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtNDcsNiArNDcs NyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2luY2x1ZGUgInBvc3Rt YXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1 cHQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9i dWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Bt c2lnbmFsLmgiCkBAIC0xMTYsNiArMTE3LDcgQEAgc3RhdGljIGJvb2wgdmFjdXVtX3JlbChPaWQg cmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiBzdGF0aWMg ZG91YmxlIGNvbXB1dGVfcGFyYWxsZWxfZGVsYXkodm9pZCk7CiBzdGF0aWMgVmFjT3B0VmFsdWUg Z2V0X3ZhY29wdHZhbF9mcm9tX2Jvb2xlYW4oRGVmRWxlbSAqZGVmKTsKIHN0YXRpYyBib29sIHZh Y190aWRfcmVhcGVkKEl0ZW1Qb2ludGVyIGl0ZW1wdHIsIHZvaWQgKnN0YXRlKTsKK3N0YXRpYyB2 b2lkIHRyeV9yZXBsaWNhdGlvbl9zbG90X2ludmFsaWRhdGlvbih2b2lkKTsKIAogLyoKICAqIEdV QyBjaGVjayBmdW5jdGlvbiB0byBlbnN1cmUgR1VDIHZhbHVlIHNwZWNpZmllZCBpcyB3aXRoaW4g dGhlIGFsbG93YWJsZQpAQCAtNDUyLDYgKzQ1NCw3NSBAQCBFeGVjVmFjdXVtKFBhcnNlU3RhdGUg KnBzdGF0ZSwgVmFjdXVtU3RtdCAqdmFjc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCU1lbW9yeUNv bnRleHREZWxldGUodmFjX2NvbnRleHQpOwogfQogCisvKgorICogVHJ5IGludmFsaWRhdGluZyBy ZXBsaWNhdGlvbiBzbG90cyBiYXNlZCBvbiBjdXJyZW50IHJlcGxpY2F0aW9uIHNsb3QgeG1pbgor ICogbGltaXRzIG9uY2UgZXZlcnkgdmFjdXVtIGN5Y2xlLgorICovCitzdGF0aWMgdm9pZAordHJ5 X3JlcGxpY2F0aW9uX3Nsb3RfaW52YWxpZGF0aW9uKHZvaWQpCit7CisJVHJhbnNhY3Rpb25JZCBt aW5fc2xvdF94bWluOworCVRyYW5zYWN0aW9uSWQgbWluX3Nsb3RfY2F0YWxvZ194bWluOworCWJv b2wJCWNhbl9pbnZhbGlkYXRlID0gZmFsc2U7CisJVHJhbnNhY3Rpb25JZCBjdXRvZmY7CisJVHJh bnNhY3Rpb25JZCBjdXJyOworCisJY3VyciA9IFJlYWROZXh0VHJhbnNhY3Rpb25JZCgpOworCisJ LyoKKwkgKiBUaGUgY3V0b2ZmIGNhbiB0ZWxsIGhvdyBmYXIgd2UgY2FuIGdvIGJhY2sgZnJvbSB0 aGUgY3VycmVudCB0cmFuc2FjdGlvbgorCSAqIGlkIHRpbGwgdGhlIGFnZS4gQW5kIHRoZW4sIHdl IGNoZWNrIHdoZXRoZXIgb3Igbm90IHRoZSB4bWluIG9yCisJICogY2F0YWxvZ194bWluIGZhbGxz IHdpdGhpbiB0aGUgY3V0b2ZmOyBpZiB5ZXMsIHJldHVybiB0cnVlLCBvdGhlcndpc2UKKwkgKiBm YWxzZS4KKwkgKi8KKwljdXRvZmYgPSBjdXJyIC0gcmVwbGljYXRpb25fc2xvdF94aWRfYWdlOwor CisJaWYgKCFUcmFuc2FjdGlvbklkSXNOb3JtYWwoY3V0b2ZmKSkKKwkJY3V0b2ZmID0gRmlyc3RO b3JtYWxUcmFuc2FjdGlvbklkOworCisJUHJvY0FycmF5R2V0UmVwbGljYXRpb25TbG90WG1pbigm bWluX3Nsb3RfeG1pbiwgJm1pbl9zbG90X2NhdGFsb2dfeG1pbik7CisKKwkvKgorCSAqIEN1cnJl bnQgcmVwbGljYXRpb24gc2xvdCB4bWluIGxpbWl0cyBjYW4gbmV2ZXIgYmUgbGFyZ2VyIHRoYW4g dGhlCisJICogY3VycmVudCB0cmFuc2FjdGlvbiBpZCBldmVuIGluIHRoZSBjYXNlIG9mIHRyYW5z YWN0aW9uIElEIHdyYXBhcm91bmQuCisJICovCisJQXNzZXJ0KG1pbl9zbG90X3htaW4gPD0gY3Vy cik7CisJQXNzZXJ0KG1pbl9zbG90X2NhdGFsb2dfeG1pbiA8PSBjdXJyKTsKKworCWlmIChUcmFu c2FjdGlvbklkSXNOb3JtYWwobWluX3Nsb3RfeG1pbikgJiYKKwkJVHJhbnNhY3Rpb25JZFByZWNl ZGVzT3JFcXVhbHMobWluX3Nsb3RfeG1pbiwgY3V0b2ZmKSkKKwkJY2FuX2ludmFsaWRhdGUgPSB0 cnVlOworCWVsc2UgaWYgKFRyYW5zYWN0aW9uSWRJc05vcm1hbChtaW5fc2xvdF9jYXRhbG9nX3ht aW4pICYmCisJCQkgVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMobWluX3Nsb3RfY2F0YWxv Z194bWluLCBjdXRvZmYpKQorCQljYW5faW52YWxpZGF0ZSA9IHRydWU7CisKKwlpZiAoY2FuX2lu dmFsaWRhdGUpCisJeworCQlib29sCQlpbnZhbGlkYXRlZCA9IGZhbHNlOworCisJCS8qCisJCSAq IE5vdGUgdGhhdCBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzIGlzIGFsc28gY2Fs bGVkIGFzIHBhcnQKKwkJICogb2YgQ0hFQ0tQT0lOVCwgYW5kIGVtaXR0aW5nIEVSUk9ScyBmcm9t IHdpdGhpbiBpcyBhdm9pZGVkIGFscmVhZHkuCisJCSAqIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8g Y29uY2VybiBoZXJlIHRoYXQgYW55IEVSUk9SIGZyb20KKwkJICogaW52YWxpZGF0aW5nIHJlcGxp Y2F0aW9uIHNsb3RzIGJsb2NrcyBWQUNVVU0uCisJCSAqLworCQlpbnZhbGlkYXRlZCA9IEludmFs aWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoUlNfSU5WQUxfWElEX0FHRSwKKwkJCQkJCQkJ CQkJCQkJIDAsCisJCQkJCQkJCQkJCQkJCSBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJCQkgSW52 YWxpZFRyYW5zYWN0aW9uSWQpOworCisJCWlmIChpbnZhbGlkYXRlZCkKKwkJeworCQkJLyoKKwkJ CSAqIElmIGFueSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRlIHRoZSBy ZXNvdXJjZQorCQkJICogbGltaXRzLgorCQkJICovCisJCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0 ZVJlcXVpcmVkWG1pbihmYWxzZSk7CisJCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVk TFNOKCk7CisJCX0KKwl9Cit9CisKIC8qCiAgKiBJbnRlcm5hbCBlbnRyeSBwb2ludCBmb3IgYXV0 b3ZhY3V1bSBhbmQgdGhlIFZBQ1VVTSAvIEFOQUxZWkUgY29tbWFuZHMuCiAgKgpAQCAtNDgzLDYg KzU1NCw3IEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLCBC dWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJY29uc3QgY2hhciAqc3RtdHR5cGU7CiAJ dm9sYXRpbGUgYm9vbCBpbl9vdXRlcl94YWN0LAogCQkJCXVzZV9vd25feGFjdHM7CisJc3RhdGlj IGJvb2wgZmlyc3RfdGltZSA9IHRydWU7CiAKIAlBc3NlcnQocGFyYW1zICE9IE5VTEwpOwogCkBA IC01OTQsNiArNjY2LDE0IEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1bVBhcmFtcyAq cGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCX0KIAorCWlmIChwYXJhbXMtPm9wdGlvbnMgJiBWQUNPUFRfVkFDVVVN ICYmCisJCWZpcnN0X3RpbWUgJiYKKwkJcmVwbGljYXRpb25fc2xvdF94aWRfYWdlID4gMCkKKwl7 CisJCXRyeV9yZXBsaWNhdGlvbl9zbG90X2ludmFsaWRhdGlvbigpOworCQlmaXJzdF90aW1lID0g ZmFsc2U7CisJfQorCiAJLyogVHVybiB2YWN1dW0gY29zdCBhY2NvdW50aW5nIG9uIG9yIG9mZiwg YW5kIHNldC9jbGVhciBpbl92YWN1dW0gKi8KIAlQR19UUlkoKTsKIAl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKaW5kZXggZTgwODcyZjI3Yi4uNzlhYzQxMmQ4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Qu YwpAQCAtMTA4LDEwICsxMDgsMTEgQEAgY29uc3QgY2hhciAqY29uc3QgU2xvdEludmFsaWRhdGlv bkNhdXNlc1tdID0gewogCVtSU19JTlZBTF9IT1JJWk9OXSA9ICJyb3dzX3JlbW92ZWQiLAogCVtS U19JTlZBTF9XQUxfTEVWRUxdID0gIndhbF9sZXZlbF9pbnN1ZmZpY2llbnQiLAogCVtSU19JTlZB TF9JTkFDVElWRV9USU1FT1VUXSA9ICJpbmFjdGl2ZV90aW1lb3V0IiwKKwlbUlNfSU5WQUxfWElE X0FHRV0gPSAieGlkX2FnZWQiLAogfTsKIAogLyogTWF4aW11bSBudW1iZXIgb2YgaW52YWxpZGF0 aW9uIGNhdXNlcyAqLwotI2RlZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX0lOQUNU SVZFX1RJTUVPVVQKKyNkZWZpbmUJUlNfSU5WQUxfTUFYX0NBVVNFUyBSU19JTlZBTF9YSURfQUdF CiAKIFN0YXRpY0Fzc2VydERlY2wobGVuZ3Rob2YoU2xvdEludmFsaWRhdGlvbkNhdXNlcykgPT0g KFJTX0lOVkFMX01BWF9DQVVTRVMgKyAxKSwKIAkJCQkgImFycmF5IGxlbmd0aCBtaXNtYXRjaCIp OwpAQCAtMTQyLDYgKzE0Myw3IEBAIFJlcGxpY2F0aW9uU2xvdCAqTXlSZXBsaWNhdGlvblNsb3Qg PSBOVUxMOwogaW50CQkJbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gMTA7IC8qIHRoZSBtYXhpbXVt IG51bWJlciBvZiByZXBsaWNhdGlvbgogCQkJCQkJCQkJCSAqIHNsb3RzICovCiBpbnQJCQlyZXBs aWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgPSAwOworaW50CQkJcmVwbGljYXRpb25fc2xv dF94aWRfYWdlID0gMDsKIAogLyoKICAqIFRoaXMgR1VDIGxpc3RzIHN0cmVhbWluZyByZXBsaWNh dGlvbiBzdGFuZGJ5IHNlcnZlciBzbG90IG5hbWVzIHRoYXQKQEAgLTE2MCw2ICsxNjIsOSBAQCBz dGF0aWMgWExvZ1JlY1B0ciBzc19vbGRlc3RfZmx1c2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7 CiAKIHN0YXRpYyB2b2lkIFJlcGxpY2F0aW9uU2xvdFNobWVtRXhpdChpbnQgY29kZSwgRGF0dW0g YXJnKTsKIHN0YXRpYyB2b2lkIFJlcGxpY2F0aW9uU2xvdERyb3BQdHIoUmVwbGljYXRpb25TbG90 ICpzbG90KTsKK3N0YXRpYyBib29sIFJlcGxpY2F0aW9uU2xvdElzWElEQWdlZChSZXBsaWNhdGlv blNsb3QgKnNsb3QsCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqeG1pbiwKKwkJCQkJCQkJCSBU cmFuc2FjdGlvbklkICpjYXRhbG9nX3htaW4pOwogCiBzdGF0aWMgYm9vbCBJbnZhbGlkYXRlUG9z c2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2Us CiAJCQkJCQkJCQkJICAgUmVwbGljYXRpb25TbG90ICpzLApAQCAtNjM2LDggKzY0MSw4IEBAIHJl dHJ5OgogCSAqIGl0IGdldHMgaW52YWxpZGF0ZWQgbm93IG9yIGhhcyBiZWVuIGludmFsaWRhdGVk IHByZXZpb3VzbHksIGJlY2F1c2UKIAkgKiB0aGVyZSdzIG5vIHVzZSBpbiBhY3F1aXJpbmcgdGhl IGludmFsaWRhdGVkIHNsb3QuCiAJICoKLQkgKiBYWFg6IEN1cnJlbnRseSB3ZSBjaGVjayBmb3Ig aW5hY3RpdmVfdGltZW91dCBpbnZhbGlkYXRpb24gaGVyZS4gV2UKLQkgKiBtaWdodCBuZWVkIHRv IGNoZWNrIGZvciBvdGhlciBpbnZhbGlkYXRpb25zIHRvby4KKwkgKiBYWFg6IEN1cnJlbnRseSB3 ZSBjaGVjayBmb3IgaW5hY3RpdmVfdGltZW91dCBhbmQgeGlkX2FnZWQgaW52YWxpZGF0aW9ucwor CSAqIGhlcmUuIFdlIG1pZ2h0IG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGludmFsaWRhdGlvbnMg dG9vLgogCSAqLwogCWlmIChjaGVja19mb3JfaW52YWxpZGF0aW9uKQogCXsKQEAgLTY0OCw2ICs2 NTMsMjIgQEAgcmV0cnk6CiAJCQkJCQkJCQkJCQkJICAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJ CQkJCQkJCQkJCQkJICAgJmludmFsaWRhdGVkKTsKIAorCQlpZiAoIWludmFsaWRhdGVkICYmIHJl bGVhc2VkX2xvY2spCisJCXsKKwkJCS8qIFRoZSBzbG90IGlzIHN0aWxsIG91cnMgKi8KKwkJCUFz c2VydChzLT5hY3RpdmVfcGlkID09IE15UHJvY1BpZCk7CisKKwkJCS8qIFJlYWNxdWlyZSB0aGUg Q29udHJvbExvY2sgKi8KKwkJCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJvbExv Y2ssIExXX1NIQVJFRCk7CisJCQlyZWxlYXNlZF9sb2NrID0gZmFsc2U7CisJCX0KKworCQlpZiAo IWludmFsaWRhdGVkKQorCQkJcmVsZWFzZWRfbG9jayA9IEludmFsaWRhdGVQb3NzaWJseU9ic29s ZXRlU2xvdChSU19JTlZBTF9YSURfQUdFLAorCQkJCQkJCQkJCQkJCQkgICBzLCAwLCBJbnZhbGlk T2lkLAorCQkJCQkJCQkJCQkJCQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJCQkJCQkJCQkJ CQkJICAgJmludmFsaWRhdGVkKTsKKwogCQkvKgogCQkgKiBJZiB0aGUgc2xvdCBoYXMgYmVlbiBp bnZhbGlkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHJlc291cmNlIGxpbWl0cy4KIAkJICovCkBAIC02 NTcsNyArNjc4LDggQEAgcmV0cnk6CiAJCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVk TFNOKCk7CiAJCX0KIAotCQlpZiAocy0+ZGF0YS5pbnZhbGlkYXRlZCA9PSBSU19JTlZBTF9JTkFD VElWRV9USU1FT1VUKQorCQlpZiAocy0+ZGF0YS5pbnZhbGlkYXRlZCA9PSBSU19JTlZBTF9JTkFD VElWRV9USU1FT1VUIHx8CisJCQlzLT5kYXRhLmludmFsaWRhdGVkID09IFJTX0lOVkFMX1hJRF9B R0UpCiAJCXsKIAkJCS8qCiAJCQkgKiBSZWxlYXNlIHRoZSBsb2NrIGlmIGl0J3Mgbm90IHlldCB0 byBrZWVwIHRoZSBjbGVhbnVwIHBhdGggb24KQEAgLTY2NSw3ICs2ODcsMTAgQEAgcmV0cnk6CiAJ CQkgKi8KIAkJCWlmICghcmVsZWFzZWRfbG9jaykKIAkJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0 aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJfQogCisJCWlmIChzLT5kYXRhLmludmFsaWRhdGVkID09 IFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQpCisJCXsKIAkJCUFzc2VydChzLT5pbmFjdGl2ZV9z aW5jZSA+IDApOwogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCkBAIC02NzUsNiArNzAwLDIwIEBAIHJldHJ5 OgogCQkJCQkJCSAgIHRpbWVzdGFtcHR6X3RvX3N0cihzLT5pbmFjdGl2ZV9zaW5jZSksCiAJCQkJ CQkJICAgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0KSkpOwogCQl9CisKKwkJaWYg KHMtPmRhdGEuaW52YWxpZGF0ZWQgPT0gUlNfSU5WQUxfWElEX0FHRSkKKwkJeworCQkJQXNzZXJ0 KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEueG1pbikgfHwKKwkJCQkgICBUcmFuc2FjdGlv bklkSXNWYWxpZChzLT5kYXRhLmNhdGFsb2dfeG1pbikpOworCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJ CQkJCSBlcnJtc2coImNhbiBubyBsb25nZXIgZ2V0IGNoYW5nZXMgZnJvbSByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiIsCisJCQkJCQkJTmFtZVN0cihzLT5kYXRhLm5hbWUpKSwKKwkJCQkJIGVycmRl dGFpbCgiVGhlIHNsb3QncyB4bWluICV1IG9yIGNhdGFsb2dfeG1pbiAldSBoYXMgcmVhY2hlZCB0 aGUgYWdlICVkIHNwZWNpZmllZCBieSBcInJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZVwiLiIsCisJ CQkJCQkJICAgcy0+ZGF0YS54bWluLAorCQkJCQkJCSAgIHMtPmRhdGEuY2F0YWxvZ194bWluLAor CQkJCQkJCSAgIHJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZSkpKTsKKwkJfQogCX0KIAogCWlmICgh cmVsZWFzZWRfbG9jaykKQEAgLTE1NDYsNyArMTU4NSw5IEBAIFJlcG9ydFNsb3RJbnZhbGlkYXRp b24oUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCSAgIFhMb2dS ZWNQdHIgcmVzdGFydF9sc24sCiAJCQkJCSAgIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkJCQkg ICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkgICBUaW1lc3Rh bXBUeiBpbmFjdGl2ZV9zaW5jZSkKKwkJCQkJICAgVGltZXN0YW1wVHogaW5hY3RpdmVfc2luY2Us CisJCQkJCSAgIFRyYW5zYWN0aW9uSWQgeG1pbiwKKwkJCQkJICAgVHJhbnNhY3Rpb25JZCBjYXRh bG9nX3htaW4pCiB7CiAJU3RyaW5nSW5mb0RhdGEgZXJyX2RldGFpbDsKIAlib29sCQloaW50ID0g ZmFsc2U7CkBAIC0xNTgzLDYgKzE2MjQsMjAgQEAgUmVwb3J0U2xvdEludmFsaWRhdGlvbihSZXBs aWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJCQkJCQkgdGltZXN0YW1wdHpf dG9fc3RyKGluYWN0aXZlX3NpbmNlKSwKIAkJCQkJCQkgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2 ZV90aW1lb3V0KTsKIAkJCWJyZWFrOworCQljYXNlIFJTX0lOVkFMX1hJRF9BR0U6CisJCQlBc3Nl cnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeG1pbikgfHwKKwkJCQkgICBUcmFuc2FjdGlvbklkSXNW YWxpZChjYXRhbG9nX3htaW4pKTsKKworCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhtaW4p KQorCQkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsIF8oIlRoZSBzbG90J3MgeG1pbiAl dSBoYXMgcmVhY2hlZCB0aGUgYWdlICVkIHNwZWNpZmllZCBieSBcInJlcGxpY2F0aW9uX3Nsb3Rf eGlkX2FnZVwiLiIpLAorCQkJCQkJCQkgeG1pbiwKKwkJCQkJCQkJIHJlcGxpY2F0aW9uX3Nsb3Rf eGlkX2FnZSk7CisJCQllbHNlIGlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChjYXRhbG9nX3htaW4p KQorCQkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsIF8oIlRoZSBzbG90J3MgY2F0YWxv Z194bWluICV1IGhhcyByZWFjaGVkIHRoZSBhZ2UgJWQgc3BlY2lmaWVkIGJ5IFwicmVwbGljYXRp b25fc2xvdF94aWRfYWdlXCIuIiksCisJCQkJCQkJCSBjYXRhbG9nX3htaW4sCisJCQkJCQkJCSBy ZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UpOworCisJCQlicmVhazsKIAkJY2FzZSBSU19JTlZBTF9O T05FOgogCQkJcGdfdW5yZWFjaGFibGUoKTsKIAl9CkBAIC0xNjI3LDYgKzE2ODIsOCBAQCBJbnZh bGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1 c2UgY2F1c2UsCiAJWExvZ1JlY1B0cglpbml0aWFsX3Jlc3RhcnRfbHNuID0gSW52YWxpZFhMb2dS ZWNQdHI7CiAJUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgaW52YWxpZGF0aW9uX2Nh dXNlX3ByZXYgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gUlNfSU5WQUxfTk9ORTsKIAlUaW1l c3RhbXBUeiBpbmFjdGl2ZV9zaW5jZSA9IDA7CisJVHJhbnNhY3Rpb25JZCBhZ2VkX3htaW4gPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlUcmFuc2FjdGlvbklkIGFnZWRfY2F0YWxvZ194bWluID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAlmb3IgKDs7KQogCXsKQEAgLTE3NDMsNiArMTgwMCwx NiBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxp ZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCQlBc3NlcnQocy0+YWN0aXZlX3BpZCA9PSAwKTsKIAkJ CQkJfQogCQkJCQlicmVhazsKKwkJCQljYXNlIFJTX0lOVkFMX1hJRF9BR0U6CisJCQkJCWlmIChS ZXBsaWNhdGlvblNsb3RJc1hJREFnZWQocywgJmFnZWRfeG1pbiwgJmFnZWRfY2F0YWxvZ194bWlu KSkKKwkJCQkJeworCQkJCQkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGFnZWRfeG1pbikg fHwKKwkJCQkJCQkgICBUcmFuc2FjdGlvbklkSXNWYWxpZChhZ2VkX2NhdGFsb2dfeG1pbikpOwor CisJCQkJCQlpbnZhbGlkYXRpb25fY2F1c2UgPSBjYXVzZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9 CisJCQkJCWJyZWFrOwogCQkJCWNhc2UgUlNfSU5WQUxfTk9ORToKIAkJCQkJcGdfdW5yZWFjaGFi bGUoKTsKIAkJCX0KQEAgLTE4MzEsNyArMTg5OCw4IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29s ZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJCQlSZXBv cnRTbG90SW52YWxpZGF0aW9uKGludmFsaWRhdGlvbl9jYXVzZSwgdHJ1ZSwgYWN0aXZlX3BpZCwK IAkJCQkJCQkJCSAgIHNsb3RuYW1lLCByZXN0YXJ0X2xzbiwKIAkJCQkJCQkJCSAgIG9sZGVzdExT Tiwgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCQkgICBpbmFjdGl2ZV9zaW5jZSk7 CisJCQkJCQkJCQkgICBpbmFjdGl2ZV9zaW5jZSwgYWdlZF94bWluLAorCQkJCQkJCQkJICAgYWdl ZF9jYXRhbG9nX3htaW4pOwogCiAJCQkJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9TVEFSVFVQKQog CQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwoYWN0aXZlX3BpZCwKQEAgLTE4NzgsNyArMTk0Niw4 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlk YXRpb25DYXVzZSBjYXVzZSwKIAkJCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24oaW52YWxpZGF0aW9u X2NhdXNlLCBmYWxzZSwgYWN0aXZlX3BpZCwKIAkJCQkJCQkJICAgc2xvdG5hbWUsIHJlc3RhcnRf bHNuLAogCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJ CQkJCQkgICBpbmFjdGl2ZV9zaW5jZSk7CisJCQkJCQkJCSAgIGluYWN0aXZlX3NpbmNlLCBhZ2Vk X3htaW4sCisJCQkJCQkJCSAgIGFnZWRfY2F0YWxvZ194bWluKTsKIAogCQkJLyogZG9uZSB3aXRo IHRoaXMgc2xvdCBmb3Igbm93ICovCiAJCQlicmVhazsKQEAgLTE5MDIsNiArMTk3MSw3IEBAIElu dmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25D YXVzZSBjYXVzZSwKICAqICAgZGI7IGRib2lkIG1heSBiZSBJbnZhbGlkT2lkIGZvciBzaGFyZWQg cmVsYXRpb25zCiAgKiAtIFJTX0lOVkFMX1dBTF9MRVZFTDogaXMgbG9naWNhbAogICogLSBSU19J TlZBTF9JTkFDVElWRV9USU1FT1VUOiBpbmFjdGl2ZSB0aW1lb3V0IG9jY3VycworICogLSBSU19J TlZBTF9YSURfQUdFOiBzbG90J3MgeG1pbiBvciBjYXRhbG9nX3htaW4gaGFzIHJlYWNoZWQgdGhl IGFnZQogICoKICAqIE5CIC0gdGhpcyBydW5zIGFzIHBhcnQgb2YgY2hlY2twb2ludCwgc28gYXZv aWQgcmFpc2luZyBlcnJvcnMgaWYgcG9zc2libGUuCiAgKi8KQEAgLTIwMzMsMTQgKzIxMDMsMjAg QEAgQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHMoYm9vbCBpc19zaHV0ZG93bikKIAkgKgogCSAq IC0gQXZvaWQgc2F2aW5nIHNsb3QgaW5mbyB0byBkaXNrIHR3byB0aW1lcyBmb3IgZWFjaCBpbnZh bGlkYXRlZCBzbG90LgogCSAqCi0JICogWFhYOiBTaG91bGQgd2UgbW92ZSBpbmFjdGl2ZV90aW1l b3V0IGluYXZhbGlkYXRpb24gY2hlY2sgY2xvc2VyIHRvCi0JICogd2FsX3JlbW92ZWQgaW4gQ3Jl YXRlQ2hlY2tQb2ludCBhbmQgQ3JlYXRlUmVzdGFydFBvaW50PworCSAqIFhYWDogU2hvdWxkIHdl IG1vdmUgaW5hY3RpdmVfdGltZW91dCBhbmQgeGlkX2FnZWQgaW5hdmFsaWRhdGlvbiBjaGVja3MK KwkgKiBjbG9zZXIgdG8gd2FsX3JlbW92ZWQgaW4gQ3JlYXRlQ2hlY2tQb2ludCBhbmQgQ3JlYXRl UmVzdGFydFBvaW50PwogCSAqLwogCWludmFsaWRhdGVkID0gSW52YWxpZGF0ZU9ic29sZXRlUmVw bGljYXRpb25TbG90cyhSU19JTlZBTF9JTkFDVElWRV9USU1FT1VULAogCQkJCQkJCQkJCQkJCSAw LAogCQkJCQkJCQkJCQkJCSBJbnZhbGlkT2lkLAogCQkJCQkJCQkJCQkJCSBJbnZhbGlkVHJhbnNh Y3Rpb25JZCk7CiAKKwlpZiAoIWludmFsaWRhdGVkKQorCQlpbnZhbGlkYXRlZCA9IEludmFsaWRh dGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoUlNfSU5WQUxfWElEX0FHRSwKKwkJCQkJCQkJCQkJ CQkJIDAsCisJCQkJCQkJCQkJCQkJCSBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJCQkgSW52YWxp ZFRyYW5zYWN0aW9uSWQpOworCiAJaWYgKGludmFsaWRhdGVkKQogCXsKIAkJLyoKQEAgLTIwNTIs NiArMjEyOCw2MyBAQCBDaGVja1BvaW50UmVwbGljYXRpb25TbG90cyhib29sIGlzX3NodXRkb3du KQogCX0KIH0KIAorLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcmVwbGljYXRpb24g c2xvdCdzIHhtaW4gb3IgY2F0YWxvZ194bWluIGFnZSBpcworICogbW9yZSB0aGFuIHJlcGxpY2F0 aW9uX3Nsb3RfeGlkX2FnZS4KKyAqCisgKiBOb3RlIHRoYXQgdGhlIGNhbGxlciBtdXN0IGhvbGQg dGhlIHJlcGxpY2F0aW9uIHNsb3QncyBzcGlubG9jayB0byBhdm9pZAorICogcmFjZSBjb25kaXRp b25zIHdoaWxlIHRoaXMgZnVuY3Rpb24gcmVhZHMgeG1pbiBhbmQgY2F0YWxvZ194bWluLgorICov CitzdGF0aWMgYm9vbAorUmVwbGljYXRpb25TbG90SXNYSURBZ2VkKFJlcGxpY2F0aW9uU2xvdCAq c2xvdCwgVHJhbnNhY3Rpb25JZCAqeG1pbiwKKwkJCQkJCSBUcmFuc2FjdGlvbklkICpjYXRhbG9n X3htaW4pCit7CisJVHJhbnNhY3Rpb25JZCBjdXRvZmY7CisJVHJhbnNhY3Rpb25JZCBjdXJyOwor CisJaWYgKHJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZSA9PSAwKQorCQlyZXR1cm4gZmFsc2U7CisK KwljdXJyID0gUmVhZE5leHRUcmFuc2FjdGlvbklkKCk7CisKKwkvKgorCSAqIFJlcGxpY2F0aW9u IHNsb3QncyB4bWluIGFuZCBjYXRhbG9nX3htaW4gY2FuIG5ldmVyIGJlIGxhcmdlciB0aGFuIHRo ZQorCSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24gaWQgZXZlbiBpbiB0aGUgY2FzZSBvZiB0cmFuc2Fj dGlvbiBJRCB3cmFwYXJvdW5kLgorCSAqLworCUFzc2VydChzbG90LT5kYXRhLnhtaW4gPD0gY3Vy cik7CisJQXNzZXJ0KHNsb3QtPmRhdGEuY2F0YWxvZ194bWluIDw9IGN1cnIpOworCisJLyoKKwkg KiBUaGUgY3V0b2ZmIGNhbiB0ZWxsIGhvdyBmYXIgd2UgY2FuIGdvIGJhY2sgZnJvbSB0aGUgY3Vy cmVudCB0cmFuc2FjdGlvbgorCSAqIGlkIHRpbGwgdGhlIGFnZS4gQW5kIHRoZW4sIHdlIGNoZWNr IHdoZXRoZXIgb3Igbm90IHRoZSB4bWluIG9yCisJICogY2F0YWxvZ194bWluIGZhbGxzIHdpdGhp biB0aGUgY3V0b2ZmOyBpZiB5ZXMsIHJldHVybiB0cnVlLCBvdGhlcndpc2UKKwkgKiBmYWxzZS4K KwkgKi8KKwljdXRvZmYgPSBjdXJyIC0gcmVwbGljYXRpb25fc2xvdF94aWRfYWdlOworCisJaWYg KCFUcmFuc2FjdGlvbklkSXNOb3JtYWwoY3V0b2ZmKSkKKwkJY3V0b2ZmID0gRmlyc3ROb3JtYWxU cmFuc2FjdGlvbklkOworCisJKnhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkqY2F0YWxv Z194bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKKwlpZiAoVHJhbnNhY3Rpb25JZElzTm9y bWFsKHNsb3QtPmRhdGEueG1pbikgJiYKKwkJVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMo c2xvdC0+ZGF0YS54bWluLCBjdXRvZmYpKQorCXsKKwkJKnhtaW4gPSBzbG90LT5kYXRhLnhtaW47 CisJCXJldHVybiB0cnVlOworCX0KKworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoc2xvdC0+ ZGF0YS5jYXRhbG9nX3htaW4pICYmCisJCVRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNs b3QtPmRhdGEuY2F0YWxvZ194bWluLCBjdXRvZmYpKQorCXsKKwkJKmNhdGFsb2dfeG1pbiA9IHNs b3QtPmRhdGEuY2F0YWxvZ194bWluOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFs c2U7Cit9CisKIC8qCiAgKiBMb2FkIGFsbCByZXBsaWNhdGlvbiBzbG90cyBmcm9tIGRpc2sgaW50 byBtZW1vcnkgYXQgc2VydmVyIHN0YXJ0dXAuIFRoaXMKICAqIG5lZWRzIHRvIGJlIHJ1biBiZWZv cmUgd2Ugc3RhcnQgY3Jhc2ggcmVjb3ZlcnkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j CmluZGV4IDQ5OTBlNzNjOTcuLmNhMjEwYzZiZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jCkBAIC0yOTczLDYgKzI5NzMsMTYgQEAgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJl TmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7InJlcGxpY2F0 aW9uX3Nsb3RfeGlkX2FnZSIsIFBHQ19TSUdIVVAsIFJFUExJQ0FUSU9OX1NFTkRJTkcsCisJCQln ZXR0ZXh0X25vb3AoIkFnZSBvZiB0aGUgdHJhbnNhY3Rpb24gSUQgYXQgd2hpY2ggYSByZXBsaWNh dGlvbiBzbG90IGdldHMgaW52YWxpZGF0ZWQuIiksCisJCQlnZXR0ZXh0X25vb3AoIlRoZSB0cmFu c2FjdGlvbiBpcyB0aGUgb2xkZXN0IHRyYW5zYWN0aW9uIChpbmNsdWRpbmcgdGhlIG9uZSBhZmZl Y3RpbmcgdGhlIHN5c3RlbSBjYXRhbG9ncykgdGhhdCBhIHJlcGxpY2F0aW9uIHNsb3QgbmVlZHMg dGhlIGRhdGFiYXNlIHRvIHJldGFpbi4iKQorCQl9LAorCQkmcmVwbGljYXRpb25fc2xvdF94aWRf YWdlLAorCQkwLCAwLCAyMDAwMDAwMDAwLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCXsK IAkJeyJjb21taXRfZGVsYXkiLCBQR0NfU1VTRVQsIFdBTF9TRVRUSU5HUywKIAkJCWdldHRleHRf bm9vcCgiU2V0cyB0aGUgZGVsYXkgaW4gbWljcm9zZWNvbmRzIGJldHdlZW4gdHJhbnNhY3Rpb24g Y29tbWl0IGFuZCAiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKaW5kZXggNTM1ZmIwNzM4NS4uZjA0NzcxZDY1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzM2LDYgKzMzNiw3IEBACiAjdHJh Y2tfY29tbWl0X3RpbWVzdGFtcCA9IG9mZgkjIGNvbGxlY3QgdGltZXN0YW1wIG9mIHRyYW5zYWN0 aW9uIGNvbW1pdAogCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQogI3JlcGxpY2F0aW9u X3Nsb3RfaW5hY3RpdmVfdGltZW91dCA9IDAJIyBpbiBzZWNvbmRzOyAwIGRpc2FibGVzCisjcmVw bGljYXRpb25fc2xvdF94aWRfYWdlID0gMAogCiAjIC0gUHJpbWFyeSBTZXJ2ZXIgLQogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9zbG90LmgKaW5kZXggNTZkMjBlMWE3OC4uZTc1N2I4MzZjNSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Nsb3QuaApAQCAtNTUsNiArNTUsOCBAQCB0eXBlZGVmIGVudW0gUmVwbGljYXRpb25TbG90 SW52YWxpZGF0aW9uQ2F1c2UKIAlSU19JTlZBTF9XQUxfTEVWRUwsCiAJLyogaW5hY3RpdmUgc2xv dCB0aW1lb3V0IGhhcyBvY2N1cnJlZCAqLwogCVJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQsCisJ Lyogc2xvdCdzIHhtaW4gb3IgY2F0YWxvZ194bWluIGhhcyByZWFjaGVkIHRoZSBhZ2UgKi8KKwlS U19JTlZBTF9YSURfQUdFLAogfSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZTsKIAog ZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IGNoYXIgKmNvbnN0IFNsb3RJbnZhbGlkYXRpb25DYXVz ZXNbXTsKQEAgLTIzMyw2ICsyMzUsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgUmVwbGljYXRpb25T bG90ICpNeVJlcGxpY2F0aW9uU2xvdDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3JlcGxp Y2F0aW9uX3Nsb3RzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKnN0YW5kYnlfc2xvdF9uYW1l czsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1l b3V0OworZXh0ZXJuIFBHRExMSU1QT1JUIGludCByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2U7CiAK IC8qIHNobWVtIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAqLwogZXh0ZXJuIFNpemUgUmVwbGlj YXRpb25TbG90c1NobWVtU2l6ZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDUwX2ludmFsaWRhdGVfc2xvdHMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9pbnZh bGlkYXRlX3Nsb3RzLnBsCmluZGV4IDQ2NjMwMTljMTYuLjE4MzAwY2ZlY2EgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFsaWRhdGVfc2xvdHMucGwKKysrIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wNTBfaW52YWxpZGF0ZV9zbG90cy5wbApAQCAtODksNyArODksNyBAQCAk cHJpbWFyeS0+cmVsb2FkOwogIyB0aGF0IG5vYm9keSBoYXMgYWNxdWlyZWQgdGhhdCBzbG90IHll dCwgc28gZHVlIHRvCiAjIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBzZXR0aW5n IGFib3ZlIGl0IG11c3QgZ2V0IGludmFsaWRhdGVkLgogd2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRp b24oJHByaW1hcnksICdsc3ViMV9zeW5jX3Nsb3QnLCAkbG9nc3RhcnQsCi0JJGluYWN0aXZlX3Rp bWVvdXQpOworCSRpbmFjdGl2ZV90aW1lb3V0LCAnaW5hY3RpdmVfdGltZW91dCcpOwogCiAjIFNl dCB0aW1lb3V0IG9uIHRoZSBzdGFuZGJ5IGFsc28gdG8gY2hlY2sgdGhlIHN5bmNlZCBzbG90cyBk b24ndCBnZXQKICMgaW52YWxpZGF0ZWQgZHVlIHRvIHRpbWVvdXQgb24gdGhlIHN0YW5kYnkuCkBA IC0xMjksNyArMTI5LDcgQEAgJHN0YW5kYnkxLT5zdG9wOwogCiAjIFdhaXQgZm9yIHRoZSBzdGFu ZGJ5J3MgcmVwbGljYXRpb24gc2xvdCB0byBiZWNvbWUgaW5hY3RpdmUKIHdhaXRfZm9yX3Nsb3Rf aW52YWxpZGF0aW9uKCRwcmltYXJ5LCAnc2IxX3Nsb3QnLCAkbG9nc3RhcnQsCi0JJGluYWN0aXZl X3RpbWVvdXQpOworCSRpbmFjdGl2ZV90aW1lb3V0LCAnaW5hY3RpdmVfdGltZW91dCcpOwogCiAj IFRlc3RjYXNlIGVuZDogSW52YWxpZGF0ZSBzdHJlYW1pbmcgc3RhbmRieSdzIHNsb3QgYXMgd2Vs bCBhcyBsb2dpY2FsIGZhaWxvdmVyCiAjIHNsb3Qgb24gcHJpbWFyeSBkdWUgdG8gcmVwbGljYXRp b25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0LiBBbHNvLCBjaGVjayB0aGUKQEAgLTE5NywxNSArMTk3 LDI4MCBAQCAkc3Vic2NyaWJlci0+c3RvcDsKICMgV2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9uIHNs b3QgdG8gYmVjb21lIGluYWN0aXZlIGFuZCB0aGVuIGludmFsaWRhdGVkIGR1ZSB0bwogIyB0aW1l b3V0Lgogd2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24oJHB1Ymxpc2hlciwgJ2xzdWIxX3Nsb3Qn LCAkbG9nc3RhcnQsCi0JJGluYWN0aXZlX3RpbWVvdXQpOworCSRpbmFjdGl2ZV90aW1lb3V0LCAn aW5hY3RpdmVfdGltZW91dCcpOwogCiAjIFRlc3RjYXNlIGVuZDogSW52YWxpZGF0ZSBsb2dpY2Fs IHN1YnNjcmliZXIncyBzbG90IGR1ZSB0bwogIyByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3Rp bWVvdXQuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKKyMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KyMgVGVzdGNhc2Ugc3RhcnQ6IEludmFsaWRhdGUgc3RyZWFtaW5nIHN0YW5kYnkncyBzbG90IGR1 ZSB0byByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UKKyMgR1VDLgorCisjIFByZXBhcmUgZm9yIHRo ZSBuZXh0IHRlc3QKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAg QUxURVIgU1lTVEVNIFNFVCByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgVE8gJzAn OworXSk7CiskcHJpbWFyeS0+cmVsb2FkOworCisjIENyZWF0ZSBhIHN0YW5kYnkgbGlua2luZyB0 byB0aGUgcHJpbWFyeSB1c2luZyB0aGUgcmVwbGljYXRpb24gc2xvdAorbXkgJHN0YW5kYnkyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5MicpOworJHN0YW5kYnkyLT5p bml0X2Zyb21fYmFja3VwKCRwcmltYXJ5LCAkYmFja3VwX25hbWUsIGhhc19zdHJlYW1pbmcgPT4g MSk7CisKKyMgRW5hYmxlIGhzX2ZlZWRiYWNrLiBUaGUgc2xvdCBzaG91bGQgZ2FpbiBhbiB4bWlu LiBXZSBzZXQgdGhlIHN0YXR1cyBpbnRlcnZhbAorIyBzbyB3ZSdsbCBzZWUgdGhlIHJlc3VsdHMg cHJvbXB0bHkuCiskc3RhbmRieTItPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBx eworcHJpbWFyeV9zbG90X25hbWUgPSAnc2IyX3Nsb3QnCitob3Rfc3RhbmRieV9mZWVkYmFjayA9 IG9uCit3YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsID0gMQorfSk7CisKKyRwcmltYXJ5LT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgU0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNh bF9yZXBsaWNhdGlvbl9zbG90KHNsb3RfbmFtZSA6PSAnc2IyX3Nsb3QnLCBpbW1lZGlhdGVseV9y ZXNlcnZlIDo9IHRydWUpOworXSk7CisKKyRzdGFuZGJ5Mi0+c3RhcnQ7CisKKyMgQ3JlYXRlIHNv bWUgY29udGVudCBvbiBwcmltYXJ5IHRvIG1vdmUgeG1pbgorJHByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX2ludCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2Vy aWVzKDEsMTApIEFTIGEiKTsKKworIyBXYWl0IHVudGlsIHN0YW5kYnkgaGFzIHJlcGxheWVkIGVu b3VnaCBkYXRhCiskcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkc3RhbmRieTIpOworCiskcHJp bWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlTRUxFQ1QgeG1pbiBJ UyBOT1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwKKwkJRlJPTSBwZ19jYXRhbG9nLnBn X3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICdzYjJfc2xvdCc7CitdKSBv ciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IHNiMl9zbG90IHhtaW4gdG8gYWR2YW5j ZSI7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQUxURVIgU1lT VEVNIFNFVCByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UgPSA1MDA7CitdKTsKKyRwcmltYXJ5LT5y ZWxvYWQ7CisKKyMgU3RvcCBzdGFuZGJ5IHRvIG1ha2UgdGhlIHJlcGxpY2F0aW9uIHNsb3QncyB4 bWluIG9uIHByaW1hcnkgdG8gYWdlCiskc3RhbmRieTItPnN0b3A7CisKKyRsb2dzdGFydCA9IC1z ICRwcmltYXJ5LT5sb2dmaWxlOworCisjIERvIHNvbWUgd29yayB0byBhZHZhbmNlIHhpZHMgb24g cHJpbWFyeQorYWR2YW5jZV94aWRzKCRwcmltYXJ5LCAndGFiX2ludCcpOworCisjIFdhaXQgZm9y IHRoZSByZXBsaWNhdGlvbiBzbG90IHRvIGJlY29tZSBpbmFjdGl2ZSBhbmQgdGhlbiBpbnZhbGlk YXRlZCBkdWUgdG8KKyMgWElEIGFnZS4KK3dhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uKCRwcmlt YXJ5LCAnc2IyX3Nsb3QnLCAkbG9nc3RhcnQsIDAsICd4aWRfYWdlZCcpOworCisjIFRlc3RjYXNl IGVuZDogSW52YWxpZGF0ZSBzdHJlYW1pbmcgc3RhbmRieSdzIHNsb3QgZHVlIHRvIHJlcGxpY2F0 aW9uX3Nsb3RfeGlkX2FnZQorIyBHVUMuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKyMgVGVzdGNhc2Ugc3RhcnQ6IEludmFsaWRhdGUgbG9naWNhbCBz dWJzY3JpYmVyJ3Mgc2xvdCBkdWUgdG8KKyMgcmVwbGljYXRpb25fc2xvdF94aWRfYWdlIEdVQy4K KworJHB1Ymxpc2hlciA9ICRwcmltYXJ5OworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxWworCUFMVEVSIFNZU1RFTSBTRVQgcmVwbGljYXRpb25fc2xvdF94aWRfYWdlID0g NTAwOworXSk7CiskcHVibGlzaGVyLT5yZWxvYWQ7CisKKyRzdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCit3 YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsID0gMQorKSk7Ciskc3Vic2NyaWJlci0+c3RhcnQ7 CisKKyMgQ3JlYXRlIHRhYmxlcworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgVEFCTEUgdGVzdF90YmwyIChpZCBpbnQpIik7Ciskc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YmwyIChpZCBpbnQpIik7CisKKyMgSW5z ZXJ0IHNvbWUgZGF0YQorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHRlc3RfdGJsMiBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxLCA1KSk7Iik7CisKKyMg U2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorJHB1Ymxpc2hlcl9jb25uc3RyID0gJHB1Ymxpc2hl ci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gcHViMiBGT1IgVEFCTEUgdGVzdF90Ymwy Iik7CisKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlND UklQVElPTiBzdWIyIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04g cHViMiBXSVRIIChzbG90X25hbWUgPSAnbHN1YjJfc2xvdCcpIgorKTsKKworJHN1YnNjcmliZXIt PndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWIyJyk7CisKKyRyZXN1 bHQgPQorICAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSB0ZXN0X3RibDIiKTsKKworaXMoJHJlc3VsdCwgcXEoNSksICJjaGVjayBpbml0aWFs IGNvcHkgd2FzIGRvbmUiKTsKKworJHB1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9z dGdyZXMnLCBxcVsKKwlTRUxFQ1QgeG1pbiBJUyBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTk9U IE5VTEwKKwlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMKKwlXSEVSRSBzbG90 X25hbWUgPSAnbHN1YjJfc2xvdCc7CitdKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBz bG90IGxzdWIyX3Nsb3QgY2F0YWxvZ194bWluIHRvIGFkdmFuY2UiOworCiskbG9nc3RhcnQgPSAt cyAkcHVibGlzaGVyLT5sb2dmaWxlOworCisjIFN0b3Agc3Vic2NyaWJlciB0byBtYWtlIHRoZSBy ZXBsaWNhdGlvbiBzbG90IG9uIHB1Ymxpc2hlciBpbmFjdGl2ZQorJHN1YnNjcmliZXItPnN0b3A7 CisKKyMgRG8gc29tZSB3b3JrIHRvIGFkdmFuY2UgeGlkcyBvbiBwdWJsaXNoZXIKK2FkdmFuY2Vf eGlkcygkcHVibGlzaGVyLCAndGVzdF90YmwyJyk7CisKKyMgV2FpdCBmb3IgdGhlIHJlcGxpY2F0 aW9uIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlIGFuZCB0aGVuIGludmFsaWRhdGVkIGR1ZSB0bwor IyBYSUQgYWdlLgord2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24oJHB1Ymxpc2hlciwgJ2xzdWIy X3Nsb3QnLCAkbG9nc3RhcnQsIDAsCisJJ3hpZF9hZ2VkJyk7CisKKyMgVGVzdGNhc2UgZW5kOiBJ bnZhbGlkYXRlIGxvZ2ljYWwgc3Vic2NyaWJlcidzIHNsb3QgZHVlIHRvCisjIHJlcGxpY2F0aW9u X3Nsb3RfeGlkX2FnZSBHVUMuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKyMgVGVzdGNhc2Ugc3RhcnQ6IEludmFsaWRhdGUgbG9naWNhbCBzbG90IG9u IHN0YW5kYnkgdGhhdCdzIGJlaW5nIHN5bmNlZCBmcm9tCisjIHRoZSBwcmltYXJ5IGR1ZSB0byBy ZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UgR1VDLgorCiskcHVibGlzaGVyID0gJHByaW1hcnk7CisK KyMgUHJlcGFyZSBmb3IgdGhlIG5leHQgdGVzdAorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxWworCUFMVEVSIFNZU1RFTSBTRVQgcmVwbGljYXRpb25fc2xvdF94aWRfYWdl ID0gMDsKK10pOworJHB1Ymxpc2hlci0+cmVsb2FkOworCisjIENyZWF0ZSBhIHN0YW5kYnkgbGlu a2luZyB0byB0aGUgcHJpbWFyeSB1c2luZyB0aGUgcmVwbGljYXRpb24gc2xvdAorbXkgJHN0YW5k YnkzID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5MycpOworJHN0YW5k YnkzLT5pbml0X2Zyb21fYmFja3VwKCRwcmltYXJ5LCAkYmFja3VwX25hbWUsIGhhc19zdHJlYW1p bmcgPT4gMSk7CisKKyRzdGFuZGJ5My0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZics IHFxKAoraG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgorcHJpbWFyeV9zbG90X25hbWUgPSAnc2Iz X3Nsb3QnCitwcmltYXJ5X2Nvbm5pbmZvID0gJyRjb25uc3RyXzEgZGJuYW1lPXBvc3RncmVzJwor KSk7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgU0VMRUNU IHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KHNsb3RfbmFtZSA6PSAnc2IzX3Ns b3QnLCBpbW1lZGlhdGVseV9yZXNlcnZlIDo9IHRydWUpOworXSk7CisKKyRzdGFuZGJ5My0+c3Rh cnQ7CisKK215ICRzdGFuZGJ5M19sb2dzdGFydCA9IC1zICRzdGFuZGJ5My0+bG9nZmlsZTsKKwor IyBXYWl0IHVudGlsIHN0YW5kYnkgaGFzIHJlcGxheWVkIGVub3VnaCBkYXRhCiskcHJpbWFyeS0+ d2FpdF9mb3JfY2F0Y2h1cCgkc3RhbmRieTMpOworCiskc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo CisJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAoraG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgord2Fs X3JlY2VpdmVyX3N0YXR1c19pbnRlcnZhbCA9IDEKKykpOworJHN1YnNjcmliZXItPnN0YXJ0Owor CisjIENyZWF0ZSB0YWJsZXMKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JF QVRFIFRBQkxFIHRlc3RfdGJsMyAoaWQgaW50KSIpOworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGJsMyAoaWQgaW50KSIpOworCisjIEluc2Vy dCBzb21lIGRhdGEKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQg SU5UTyB0ZXN0X3RibDMgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMSwgNSkpOyIpOworCisjIFNl dHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgUFVCTElDQVRJT04gcHViMyBGT1IgVEFCTEUgdGVzdF90YmwzIik7CisKKyRz dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBz dWIzIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gcHViMyBXSVRI IChzbG90X25hbWUgPSAnbHN1YjNfc3luY19zbG90JywgZmFpbG92ZXIgPSB0cnVlKSIKKyk7CisK KyRzdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkcHVibGlzaGVyLCAnc3Vi MycpOworCiskcmVzdWx0ID0KKyAgJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YmwzIik7CisKK2lzKCRyZXN1bHQsIHFxKDUpLCAi Y2hlY2sgaW5pdGlhbCBjb3B5IHdhcyBkb25lIik7CisKKyRwdWJsaXNoZXItPnBvbGxfcXVlcnlf dW50aWwoCisJJ3Bvc3RncmVzJywgcXFbCisJU0VMRUNUIHhtaW4gSVMgTlVMTCBBTkQgY2F0YWxv Z194bWluIElTIE5PVCBOVUxMCisJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3Rz CisJV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIzX3N5bmNfc2xvdCc7CitdKQorICBvciBkaWUgIlRp bWVkIG91dCB3YWl0aW5nIGZvciBzbG90IGxzdWIzX3N5bmNfc2xvdCBjYXRhbG9nX3htaW4gdG8g YWR2YW5jZSI7CisKKyMgU3luY2hyb25pemUgdGhlIHByaW1hcnkgc2VydmVyIHNsb3RzIHRvIHRo ZSBzdGFuZGJ5Ciskc3RhbmRieTMtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX3N5 bmNfcmVwbGljYXRpb25fc2xvdHMoKTsiKTsKKworIyBDb25maXJtIHRoYXQgdGhlIGxvZ2ljYWwg ZmFpbG92ZXIgc2xvdCBpcyBjcmVhdGVkIG9uIHRoZSBzdGFuZGJ5IGFuZCBpcworIyBmbGFnZ2Vk IGFzICdzeW5jZWQnIGFuZCBoYXMgZ290IGNhdGFsb2dfeG1pbiBmcm9tIHRoZSBwcmltYXJ5Lgor aXMoICRzdGFuZGJ5My0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3Vu dCgqKSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCQkgIFdIRVJFIHNsb3RfbmFtZSA9 ICdsc3ViM19zeW5jX3Nsb3QnIEFORCBzeW5jZWQgQU5EIE5PVCB0ZW1wb3JhcnkgQU5ECisJCQl4 bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOT1QgTlVMTDt9CisJKSwKKwkidCIsCisJ J2xvZ2ljYWwgc2xvdCBoYXMgc3luY2VkIGFzIHRydWUgb24gc3RhbmRieScpOworCitteSAkcHJp bWFyeV9jYXRhbG9nX3htaW4gPSAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBjYXRhbG9nX3htaW4gRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25h bWUgPSAnbHN1YjNfc3luY19zbG90JyBBTkQgY2F0YWxvZ194bWluIElTIE5PVCBOVUxMOyIKKyk7 CisKK215ICRzdGFiZGJ5M19jYXRhbG9nX3htaW4gPSAkc3RhbmRieTMtPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgY2F0YWxvZ194bWluIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMg V0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIzX3N5bmNfc2xvdCcgQU5EIGNhdGFsb2dfeG1pbiBJUyBO T1QgTlVMTDsiCispOworCitpcygkcHJpbWFyeV9jYXRhbG9nX3htaW4sICRzdGFiZGJ5M19jYXRh bG9nX3htaW4sCisJImNoZWNrIGNhdGFsb2dfeG1pbiBhcmUgc2FtZSBmb3IgcHJpbWFyeSBzbG90 IGFuZCBzeW5jZWQgc2xvdCIpOworCisjIEVuYWJsZSBYSUQgYWdlIGJhc2VkIGludmFsaWRhdGlv biBvbiB0aGUgc3RhbmRieS4gTm90ZSB0aGF0IHdlIGRpc2FibGVkIHRoZQorIyBzYW1lIG9uIHRo ZSBwcmltYXJ5IHRvIGNoZWNrIGlmIHRoZSBpbnZhbGlkYXRpb24gb2NjdXJzIGZvciBzeW5jZWQg c2xvdCBvbgorIyB0aGUgc3RhbmRieS4KKyRzdGFuZGJ5My0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxWworCUFMVEVSIFNZU1RFTSBTRVQgcmVwbGljYXRpb25fc2xvdF94aWRfYWdlID0gNTAw OworXSk7Ciskc3RhbmRieTMtPnJlbG9hZDsKKworJGxvZ3N0YXJ0ID0gLXMgJHN0YW5kYnkzLT5s b2dmaWxlOworCisjIERvIHNvbWUgd29yayB0byBhZHZhbmNlIHhpZHMgb24gcHJpbWFyeQorYWR2 YW5jZV94aWRzKCRwcmltYXJ5LCAndGVzdF90YmwzJyk7CisKKyMgV2FpdCBmb3Igc3RhbmRieSB0 byBjYXRjaCB1cCB3aXRoIHRoZSBhYm92ZSB3b3JrCiskcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1 cCgkc3RhbmRieTMpOworCisjIFdhaXQgZm9yIHRoZSByZXBsaWNhdGlvbiBzbG90IHRvIGJlY29t ZSBpbmFjdGl2ZSBhbmQgdGhlbiBpbnZhbGlkYXRlZCBkdWUgdG8KKyMgWElEIGFnZS4KK3dhaXRf Zm9yX3Nsb3RfaW52YWxpZGF0aW9uKCRzdGFuZGJ5MywgJ2xzdWIzX3N5bmNfc2xvdCcsICRsb2dz dGFydCwgMCwKKwkneGlkX2FnZWQnKTsKKworIyBOb3RlIHRoYXQgdGhlIHJlcGxpY2F0aW9uIHNs b3Qgb24gdGhlIHByaW1hcnkgaXMgc3RpbGwgYWN0aXZlCiskcmVzdWx0ID0gJHByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEgRlJPTSBw Z19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1YjNfc3luY19zbG90JyBB TkQgaW52YWxpZGF0aW9uX3JlYXNvbiBJUyBOVUxMOyIKKyk7CisKK2lzKCRyZXN1bHQsICd0Jywg ImNoZWNrIGxzdWIzX3N5bmNfc2xvdCBpcyBzdGlsbCBhY3RpdmUgb24gcHJpbWFyeSIpOworCisj IFRlc3RjYXNlIGVuZDogSW52YWxpZGF0ZSBsb2dpY2FsIHNsb3Qgb24gc3RhbmRieSB0aGF0J3Mg YmVpbmcgc3luY2VkIGZyb20KKyMgdGhlIHByaW1hcnkgZHVlIHRvIHJlcGxpY2F0aW9uX3Nsb3Rf eGlkX2FnZSBHVUMuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKIHN1YiB3YWl0X2Zvcl9zbG90 X2ludmFsaWRhdGlvbgogewotCW15ICgkbm9kZSwgJHNsb3RfbmFtZSwgJG9mZnNldCwgJGluYWN0 aXZlX3RpbWVvdXQpID0gQF87CisJbXkgKCRub2RlLCAkc2xvdF9uYW1lLCAkb2Zmc2V0LCAkaW5h Y3RpdmVfdGltZW91dCwgJHJlYXNvbikgPSBAXzsKIAlteSAkbmFtZSA9ICRub2RlLT5uYW1lOwog CiAJIyBXYWl0IGZvciB0aGUgcmVwbGljYXRpb24gc2xvdCB0byBiZWNvbWUgaW5hY3RpdmUKQEAg LTIzMSwxNCArNDk2LDE1IEBAIHN1YiB3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbgogCSMgZm9y IHRoZSBzbG90IHRvIGdldCBpbnZhbGlkYXRlZC4KIAlzbGVlcCgkaW5hY3RpdmVfdGltZW91dCk7 CiAKLQljaGVja19mb3Jfc2xvdF9pbnZhbGlkYXRpb25faW5fc2VydmVyX2xvZygkbm9kZSwgJHNs b3RfbmFtZSwgJG9mZnNldCk7CisJY2hlY2tfZm9yX3Nsb3RfaW52YWxpZGF0aW9uX2luX3NlcnZl cl9sb2coJG5vZGUsICRzbG90X25hbWUsICRvZmZzZXQsCisJCSRyZWFzb24pOwogCiAJIyBXYWl0 IGZvciB0aGUgaW5hY3RpdmUgcmVwbGljYXRpb24gc2xvdCB0byBiZSBpbnZhbGlkYXRlZAogCSRu b2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAogCQkncG9zdGdyZXMnLCBxcVsKIAkJU0VMRUNUIENPVU5U KHNsb3RfbmFtZSkgPSAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMKIAkJCVdIRVJFIHNsb3Rf bmFtZSA9ICckc2xvdF9uYW1lJyBBTkQKLQkJCWludmFsaWRhdGlvbl9yZWFzb24gPSAnaW5hY3Rp dmVfdGltZW91dCc7CisJCQlpbnZhbGlkYXRpb25fcmVhc29uID0gJyRyZWFzb24nOwogCV0pCiAJ ICBvciBkaWUKIAkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgaW5hY3RpdmUgc2xvdCAk c2xvdF9uYW1lIHRvIGJlIGludmFsaWRhdGVkIG9uIG5vZGUgJG5hbWUiOwpAQCAtMjYyLDE1ICs1 MjgsMzMgQEAgc3ViIHdhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uCiAjIENoZWNrIGZvciBpbnZh bGlkYXRpb24gb2Ygc2xvdCBpbiBzZXJ2ZXIgbG9nCiBzdWIgY2hlY2tfZm9yX3Nsb3RfaW52YWxp ZGF0aW9uX2luX3NlcnZlcl9sb2cKIHsKLQlteSAoJG5vZGUsICRzbG90X25hbWUsICRvZmZzZXQp ID0gQF87CisJbXkgKCRub2RlLCAkc2xvdF9uYW1lLCAkb2Zmc2V0LCAkcmVhc29uKSA9IEBfOwog CW15ICRuYW1lID0gJG5vZGUtPm5hbWU7CiAJbXkgJGludmFsaWRhdGVkID0gMDsKKwlteSAkaXNy ZWNvdmVyeSA9CisJICAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfaXNf aW5fcmVjb3ZlcnkoKSIpOworCisJY2hvbXAoJGlzcmVjb3ZlcnkpOwogCiAJZm9yIChteSAkaSA9 IDA7ICRpIDwgMTAgKiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsg JGkrKykKIAl7Ci0JCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQiKTsK KwkJaWYgKCRyZWFzb24gZXEgJ3hpZF9hZ2VkJyAmJiAkaXNyZWNvdmVyeSBlcSAnZicpCisJCXsK KwkJCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlZBQ1VVTSIpOworCQl9CisJCWVsc2UK KwkJeworCQkJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ0hFQ0tQT0lOVCIpOworCQl9 CisKIAkJaWYgKCRub2RlLT5sb2dfY29udGFpbnMoCiAJCQkJImludmFsaWRhdGluZyBvYnNvbGV0 ZSByZXBsaWNhdGlvbiBzbG90IFwiJHNsb3RfbmFtZVwiIiwKKwkJCQkkb2Zmc2V0KQorCQkJfHwg JG5vZGUtPmxvZ19jb250YWlucygKKwkJCQkiVGhlIHNsb3QncyB4bWluIC4qIGhhcyByZWFjaGVk IHRoZSBhZ2UgLiogc3BlY2lmaWVkIGJ5IFwicmVwbGljYXRpb25fc2xvdF94aWRfYWdlXCIuIiwK KwkJCQkkb2Zmc2V0KQorCQkJfHwgJG5vZGUtPmxvZ19jb250YWlucygKKwkJCQkiVGhlIHNsb3Qn cyBjYXRhbG9nX3htaW4gLiogaGFzIHJlYWNoZWQgdGhlIGFnZSAuKiBzcGVjaWZpZWQgYnkgXCJy ZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2VcIi4iLAogCQkJCSRvZmZzZXQpKQogCQl7CiAJCQkkaW52 YWxpZGF0ZWQgPSAxOwpAQCAtMjgzLDQgKzU2NywyNSBAQCBzdWIgY2hlY2tfZm9yX3Nsb3RfaW52 YWxpZGF0aW9uX2luX3NlcnZlcl9sb2cKIAkpOwogfQogCisjIERvIHNvbWUgd29yayBmb3IgYWR2 YW5jaW5nIHhpZHMgb24gYSBnaXZlbiBub2RlCitzdWIgYWR2YW5jZV94aWRzCit7CisJbXkgKCRu b2RlLCAkdGFibGVfbmFtZSkgPSBAXzsKKworCSRub2RlLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHFxWworCQlkbyBcJFwkCisJCWJlZ2luCisJCWZvciBpIGluIDEwMDAwLi4xMTAwMCBsb29w CisJCQktLSB1c2UgYW4gZXhjZXB0aW9uIGJsb2NrIHNvIHRoYXQgZWFjaCBpdGVyYXRpb24gZWF0 cyBhbiBYSUQKKwkJCWJlZ2luCisJCQlpbnNlcnQgaW50byAkdGFibGVfbmFtZSB2YWx1ZXMgKGkp OworCQkJZXhjZXB0aW9uCisJCQl3aGVuIGRpdmlzaW9uX2J5X3plcm8gdGhlbiBudWxsOworCQkJ ZW5kOworCQllbmQgbG9vcDsKKwkJZW5kXCRcJDsKKwldKTsKK30KKwogZG9uZV90ZXN0aW5nKCk7 Ci0tIAoyLjM0LjEKCg== --000000000000fcf3f6061b9c82d8--