Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nW66j-0002X4-2w for pgsql-hackers@arkaria.postgresql.org; Mon, 21 Mar 2022 00:41:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nW66h-0005Pw-SH for pgsql-hackers@arkaria.postgresql.org; Mon, 21 Mar 2022 00:41:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nW66g-0005Pn-IW for pgsql-hackers@lists.postgresql.org; Mon, 21 Mar 2022 00:41:11 +0000 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nW66b-0000jK-2c for pgsql-hackers@postgresql.org; Mon, 21 Mar 2022 00:41:10 +0000 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 99BB43200A64; Sun, 20 Mar 2022 20:41:01 -0400 (EDT) Received: from imap49 ([10.202.2.99]) by compute4.internal (MEProxy); Sun, 20 Mar 2022 20:41:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eulerto.com; h= cc:cc:content-type:date:date:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to; s=fm1; bh=szk40i2mToilPDC+89lQiEB24c5eQgsWCAOARO bqDY4=; b=N4MadFAekbXbJ9DDnwgQn4C3VF/A4Pwf1CkkjamsAv5M2AF8VcowWM FIle/psBIY+u4hJhWj7AKuINjc5kN7s/uSj6u/3djI0qkJyebx2z+Nxiq1KWkHRn sQMiWZejyCuLyWWXxciI2gTTLejzyFIMgAJRUWoOGbwVeeNn5xGg9tQg/SYV/Xcm dqFkfsGueojLsZHS1uPWiUl4eoERBL/ItD2ETDvJuRP+tr2oukaB/oVc3ecSysUR Y/tfMmLELv33Od2FrgQmcGqddPZk2E0lEv23R5tu4NM/WoqXL1zLhJnn1Js7aprh Z3vm2xwqv4SuMR7Nce5Wo/BVciTYc8Kw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=szk40i2mToilPDC+8 9lQiEB24c5eQgsWCAOARObqDY4=; b=IjJX3ut/BIwGV6uLN44geH4hfQgbj/AYE C2M0VGYrVKi3fzAYhoqHOfJwQU+olRxWApjVzne5qtEDy/sYMkV/miMeXc+nCc0/ Xb+U3AsUKx7qG0be7FDie8XHBgFnJ+fKd+ZRUUbUFgo7i8Eemm91J/XZ1SeMpnV/ n+KFuUKb0y1zkU7k+wxk+G71MtR+fZ2AOw0ZTJGwe8WFgRg7LBZJTrExP7tCR02O SLeclEnLgeHphkXqB2/nQaP4whdenb0dS59yukIA2KFxxgspjSo4ug6bbauzwIKq 4s+feLQ9yHh3pijVi7j0Mgsul8FHJgRxcznCGwenakcJNPLlqHHVA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddrudegvddgvdehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepofgfggfkjghffffhvffutgesmhdtreerreertdenucfhrhhomhepfdfguhhl vghrucfvrghvvghirhgrfdcuoegvuhhlvghrsegvuhhlvghrthhordgtohhmqeenucggtf frrghtthgvrhhnpefhvdelgfekvdetjeejtefhudejfeeileetjeeufeetffegjedtvdeu kedtgeffgeenucffohhmrghinhepvghnthgvrhhprhhishgvuggsrdgtohhmnecuvehluh hsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepvghulhgvrhesvghu lhgvrhhtohdrtghomh X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id B3FD5F60083; Sun, 20 Mar 2022 20:41:00 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.5.0-alpha0-4907-g25ce6f34a9-fm-20220311.001-g25ce6f34 Mime-Version: 1.0 Message-Id: In-Reply-To: References: <73b06a32-56ab-4056-86ff-e307f3c316f1@www.fastmail.com> Date: Sun, 20 Mar 2022 21:40:40 -0300 From: "Euler Taveira" To: "Amit Kapila" , "Marcos Pegoraro" Cc: pgsql-hackers Subject: Re: logical replication restrictions Content-Type: multipart/mixed; boundary=63d5a64fc6084fc584da334d5a97278e List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --63d5a64fc6084fc584da334d5a97278e Content-Type: multipart/alternative; boundary=3497d4c285b4451f882bff91c49eb4c5 --3497d4c285b4451f882bff91c49eb4c5 Content-Type: text/plain On Mon, Feb 28, 2022, at 9:18 PM, Euler Taveira wrote: > Long time, no patch. Here it is. I will provide documentation in the next > version. I would appreciate some feedback. This patch is broken since commit 705e20f8550c0e8e47c0b6b20b5f5ffd6ffd9e33. I rebased it. I added documentation that explains how this parameter works. I decided to rename the parameter from apply_delay to min_apply_delay to use the same terminology from the physical replication. IMO the new name seems clear that there isn't a guarantee that we are always x ms behind the publisher. Indeed, due to processing/transferring the delay might be higher than the specified interval. I refactored the way the delay is applied. The previous patch is only covering a regular transaction. This new one also covers prepared transaction. The current design intercepts the transaction during the first change (at the time it will start the transaction to apply the changes) and applies the delay before effectively starting the transaction. The previous patch uses begin_replication_step() as this point. However, to support prepared transactions I changed the apply_delay signature to accepts a timestamp parameter (because we use another variable to calculate the delay for prepared transactions -- prepare_time). Hence, the apply_delay() moved to another places -- apply_handle_begin and apply_handle_begin_prepare(). The new code does not apply the delay in 2 situations: * STREAM START: streamed transactions might not have commit_time or prepare_time set. I'm afraid it is not possible to use the referred variables because at STREAM START time we don't have a transaction commit time. The protocol could provide a timestamp that indicates when it starts streaming the transaction then we could use it to apply the delay. Unfortunately, we don't have it. Having said that this new patch does not apply delay for streamed transactions. * non-transaction messages: the delay could be applied to non-transaction messages too. It is sent independently of the transaction that contains it. Since the logical replication does not send messages to the subscriber, this is not an issue. However, consumers that use pgoutput and wants to implement a delay will require it. I'm still looking for a way to support streamed transactions without much surgery into the logical replication protocol. -- Euler Taveira EDB https://www.enterprisedb.com/ --3497d4c285b4451f882bff91c49eb4c5 Content-Type: text/html Content-Transfer-Encoding: quoted-printable
On Mon, Fe= b 28, 2022, at 9:18 PM, Euler Taveira wrote:
Long time, no patch. Here it is. I will= provide documentation in the next
version. I would apprec= iate some feedback.
This patch is broken sinc= e commit 705e20f8550c0e8e47c0b6b20b5f5ffd6ffd9e33. I
rebas= ed it.

I added documentation that explains = how this parameter works. I decided to
rename the paramete= r from apply_delay to min_apply_delay to use the same
term= inology from the physical replication. IMO the new name seems clear that=
there isn't a guarantee that we are always x ms behind th= e publisher. Indeed,
due to processing/transferring the de= lay might be higher than the specified
interval.
=

I refactored the way the delay is applied. The previ= ous patch is only covering
a regular transaction. This new= one also covers prepared transaction. The
current design = intercepts the transaction during the first change (at the time
it will start the transaction to apply the changes) and applies th= e delay
before effectively starting the transaction. The p= revious patch uses
begin_replication_step() as this point.= However, to support prepared
transactions I changed the a= pply_delay signature to accepts a timestamp
parameter (bec= ause we use another variable to calculate the delay for prepared
transactions -- prepare_time). Hence, the apply_delay() moved to = another places
-- apply_handle_begin and apply_handle_begi= n_prepare().

The new code does not apply th= e delay in 2 situations:

* STREAM START: st= reamed transactions might not have commit_time or
  p= repare_time set. I'm afraid it is not possible to use the referred varia= bles
  because at STREAM START time we don't have a t= ransaction commit time. The
  protocol could provide = a timestamp that indicates when it starts streaming
 = the transaction then we could use it to apply the delay. Unfortunately,= we
  don't have it. Having said that this new patch = does not apply delay for
  streamed transactions.
=
* non-transaction messages: the delay could be applied to non= -transaction
  messages too. It is sent independently= of the transaction that contains it.
  Since the log= ical replication does not send messages to the subscriber, this
  is not an issue. However, consumers that use pgoutput and w= ants to implement
  a delay will require it.

I'm still looking for a way to support streamed tra= nsactions without much
surgery into the logical replicatio= n protocol.


--
Euler = Taveira
<= /div>

--3497d4c285b4451f882bff91c49eb4c5-- --63d5a64fc6084fc584da334d5a97278e Content-Disposition: attachment;filename="v2-0001-Time-delayed-logical-replication-subscriber.patch" Content-Type: text/x-patch; name="v2-0001-Time-delayed-logical-replication-subscriber.patch" Content-Transfer-Encoding: BASE64 RnJvbSA5YWQ3ODNjMTI1OWFlZDliZWY4MTg3NzI2NWM2NDhhYWU4NGVkNWQ4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IFNhdCwgNiBOb3YgMjAyMSAxMTozMToxMCAtMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjJdIFRpbWUtZGVsYXllZCBsb2dpY2FsIHJlcGxpY2F0aW9uIHN1 YnNjcmliZXIKClNpbWlsYXIgdG8gcGh5c2ljYWwgcmVwbGljYXRpb24sIGEgdGltZS1kZWxh eWVkIGNvcHkgb2YgdGhlIGRhdGEgZm9yCmxvZ2ljYWwgcmVwbGljYXRpb24gaXMgdXNlZnVs IGZvciBzb21lIHNjZW5hcmlvcyAoc3BlY2lhbGx5IHRvIGZpeAplcnJvcnMgdGhhdCBtaWdo dCBjYXVzZSBkYXRhIGxvc3MpLgoKSWYgdGhlIHN1YnNjcmliZXIgc2V0cyBtaW5fYXBwbHlf ZGVsYXkgcGFyYW1ldGVyLCB0aGUgbG9naWNhbApyZXBsaWNhdGlvbiB3b3JrZXIgd2lsbCBk ZWxheSB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IGZvciBtaW5fYXBwbHlfZGVsYXkKbWlsbGlz ZWNvbmRzLgoKVGhlIGRlbGF5IGlzIGNhbGN1bGF0ZWQgYmV0d2VlbiB0aGUgV0FMIHRpbWUg c3RhbXAgYW5kIHRoZSBjdXJyZW50IHRpbWUKb24gdGhlIHN1YnNjcmliZXIuCgpUaGUgZGVs YXkgb2NjdXJzIG9ubHkgb24gV0FMIHJlY29yZHMgZm9yIHRyYW5zYWN0aW9uIGJlZ2lucy4g UmVndWxhciBhbmQKcHJlcGFyZWQgdHJhbnNhY3Rpb25zIGFyZSBjb3ZlcmVkLiBTdHJlYW1l ZCB0cmFuc2FjdGlvbnMgYXJlIG5vdApkZWxheWVkLiBJdCBzaG91bGQgYmUgaW1wbGVtZW50 ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLgoKQXV0aG9yOiBFdWxlciBUYXZlaXJhCkRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FCLUpMd1lPWXdMPVhUeUFYS2lINUN0TV9WbThL aktoN2FhaXRDS3ZtQ2g0cnpyNXBRQG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgIHwgICA1ICstCiBkb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgfCAgMzMgKysrKysKIHNyYy9iYWNrZW5k L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICB8ICA0NiArKysrKystCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgfCAgNjEgKysrKysrKysrCiBzcmMv YmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMgICAgICAgICAgfCAgIDggKysKIHNyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4v cHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRl L3V0aWxzL3RpbWVzdGFtcC5oICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgfCAxNDEgKysrKysrKysrKysrKy0tLS0t LS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsICAgICAgfCAgMjAg KysrCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzBfYXBwbHlfZGVsYXkucGwgfCAgNzYg KysrKysrKysrKysKIDE1IGZpbGVzIGNoYW5nZWQsIDM1OCBpbnNlcnRpb25zKCspLCA2NiBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMzBfYXBwbHlfZGVsYXkucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3Jp cHRpb24uc2dtbAppbmRleCA1OGI3OGE5NGVhLi5iNzY0ZjhlYmE4IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIwNCw4ICsyMDQsOSBAQCBB TFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgICAgaW5mb3JtYXRpb24uICBUaGUgcGFy YW1ldGVycyB0aGF0IGNhbiBiZSBhbHRlcmVkCiAgICAgICBhcmUgPGxpdGVyYWw+c2xvdF9u YW1lPC9saXRlcmFsPiwKICAgICAgIDxsaXRlcmFsPnN5bmNocm9ub3VzX2NvbW1pdDwvbGl0 ZXJhbD4sCi0gICAgICA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+LCA8bGl0ZXJhbD5zdHJl YW1pbmc8L2xpdGVyYWw+LCBhbmQKLSAgICAgIDxsaXRlcmFsPmRpc2FibGVfb25fZXJyb3I8 L2xpdGVyYWw+LgorICAgICAgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiwgPGxpdGVyYWw+ c3RyZWFtaW5nPC9saXRlcmFsPiwKKyAgICAgIDxsaXRlcmFsPmRpc2FibGVfb25fZXJyb3I8 L2xpdGVyYWw+LCBhbmQKKyAgICAgIDxsaXRlcmFsPm1pbl9hcHBseV9kZWxheTwvbGl0ZXJh bD4uCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IGI3 MDE3NTJmYzkuLjJiYzhkZWIxMzIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1 YnNjcmlwdGlvbi5zZ21sCkBAIC0zMDIsNiArMzAyLDM5IEBAIENSRUFURSBTVUJTQ1JJUFRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9y ZXBsYWNlYWJsCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAg ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8 dGVybT48bGl0ZXJhbD5taW5fYXBwbHlfZGVsYXk8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2Vy PC90eXBlPik8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgor ICAgICAgICAgIEJ5IGRlZmF1bHQsIHN1YnNjcmliZXIgYXBwbGllcyBjaGFuZ2VzIGFzIHNv b24gYXMgcG9zc2libGUuIFNpbWlsYXIKKyAgICAgICAgICB0byB0aGUgcGh5c2ljYWwgcmVw bGljYXRpb24gZmVhdHVyZQorICAgICAgICAgICg8eHJlZiBsaW5rZW5kPSJndWMtcmVjb3Zl cnktbWluLWFwcGx5LWRlbGF5Ii8+KSwgaXQgbWF5IGJlIHVzZWZ1bCB0bworICAgICAgICAg IGhhdmUgYSB0aW1lLWRlbGF5ZWQgY29weSBvZiBkYXRhIGZvciBsb2dpY2FsIHJlcGxpY2F0 aW9uLiBUaGlzCisgICAgICAgICAgcGFyYW1ldGVyIGFsbG93cyB5b3UgdG8gZGVsYXkgdGhl IGFwcGxpY2F0aW9uIG9mIGNoYW5nZXMgYnkgYQorICAgICAgICAgIHNwZWNpZmllZCBhbW91 bnQgb2YgdGltZS4gSWYgdGhpcyB2YWx1ZSBpcyBzcGVjaWZpY2VkIHdpdGhvdXQgdW5pdHMs CisgICAgICAgICAgaXQgaXMgdGFrZW4gYXMgbWlsbGlzZWNvbmRzLiBUaGUgZGVmYXVsdCBp cyB6ZXJvLCBhZGRpbmcgbm8gZGVsYXkuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICBUaGUgZGVsYXkgb2NjdXJzIG9ubHkgYWZ0ZXIgdGhlIGluaXRp YWwgdGFibGUgc3luY2hyb25pemF0aW9uLiBJdCBpcworICAgICAgICAgIHBvc3NpYmxlIHRo YXQgdGhlIHJlcGxpY2F0aW9uIGRlbGF5IGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3Jp YmVyCisgICAgICAgICAgZXhjZWVkcyB0aGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIsIGlu IHdoaWNoIGNhc2Ugbm8gZGVsYXkgaXMgYWRkZWQuCisgICAgICAgICAgTm90ZSB0aGF0IHRo ZSBkZWxheSBpcyBjYWxjdWxhdGVkIGJldHdlZW4gdGhlIFdBTCB0aW1lIHN0YW1wIGFzCisg ICAgICAgICAgd3JpdHRlbiBvbiBwdWJsaXNoZXIgYW5kIHRoZSBjdXJyZW50IHRpbWUgb24g dGhlIHN1YnNjcmliZXIuIERlbGF5cworICAgICAgICAgIGluIGxvZ2ljYWwgZGVjb2Rpbmcg YW5kIGluIHRyYW5zZmVyIHRoZSB0cmFuc2FjdGlvbiBtYXkgcmVkdWNlIHRoZQorICAgICAg ICAgIGFjdHVhbCB3YWl0IHRpbWUuIElmIHRoZSBzeXN0ZW0gY2xvY2tzIG9uIHB1Ymxpc2hl ciBhbmQgc3Vic2NyaWJlcgorICAgICAgICAgIGFyZSBub3Qgc3luY2hyb25pemVkLCB0aGlz IG1heSBsZWFkIHRvIGFwcGx5IGNoYW5nZXMgZWFybGllciB0aGFuCisgICAgICAgICAgZXhw ZWN0ZWQuIFRoaXMgaXMgbm90IGEgbWFqb3IgaXNzdWUgYmVjYXVzZSBhIHR5cGljYWwgc2V0 dGluZyBvZiB0aGlzCisgICAgICAgICAgcGFyYW1ldGVyIGFyZSBtdWNoIGxhcmdlciB0aGFu IHR5cGljYWwgdGltZSBkZXZpYXRpb25zIGJldHdlZW4KKyAgICAgICAgICBzZXJ2ZXJzLgor ICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGRlbGF5 IG9jY3VycyBvbmx5IG9uIFdBTCByZWNvcmRzIGZvciB0cmFuc2FjdGlvbiBiZWdpbnMuIFN0 cmVhbWVkCisgICAgICAgICAgdHJhbnNhY3Rpb25zIGRvIG5vdCBpbXBvc2UgYSBkZWxheS4g SXQgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIGZ1dHVyZQorICAgICAgICAgIHJlbGVhc2Vz LgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFy bGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvcGFyYT4KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5kZXggYTYzMDRmNWY4MS4uNDhl NmQwYWY3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC03 MCw2ICs3MCw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19v aykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0tPnN1YnN0cmVhbTsKIAlzdWItPnR3b3BoYXNl c3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0YXRlOwogCXN1Yi0+ZGlzYWJsZW9uZXJy ID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1Yi0+YXBwbHlkZWxheSA9IHN1YmZv cm0tPnN1YmFwcGx5ZGVsYXk7CiAKIAkvKiBHZXQgY29ubmluZm8gKi8KIAlkYXR1bSA9IFN5 c0NhY2hlR2V0QXR0cihTVUJTQ1JJUFRJT05PSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKaW5kZXggYmIxYWMzMGNkMS4uZDdjMDE4YjgxZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTI2MSw4ICsxMjYxLDggQEAgUkVWT0tF IEFMTCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVzIEZST00gcHVibGljOwogLS0g QWxsIGNvbHVtbnMgb2YgcGdfc3Vic2NyaXB0aW9uIGV4Y2VwdCBzdWJjb25uaW5mbyBhcmUg cHVibGljbHkgcmVhZGFibGUuCiBSRVZPS0UgQUxMIE9OIHBnX3N1YnNjcmlwdGlvbiBGUk9N IHB1YmxpYzsKIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJuYW1lLCBzdWJvd25l ciwgc3ViZW5hYmxlZCwgc3ViYmluYXJ5LAotICAgICAgICAgICAgICBzdWJzdHJlYW0sIHN1 YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwgc3Vic2xvdG5hbWUsCi0gICAgICAg ICAgICAgIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucykKKyAgICAgICAgICAgICAg c3Vic3RyZWFtLCBzdWJ0d29waGFzZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsIHN1YmFwcGx5 ZGVsYXksCisgICAgICAgICAgICAgIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJw dWJsaWNhdGlvbnMpCiAgICAgT04gcGdfc3Vic2NyaXB0aW9uIFRPIHB1YmxpYzsKIAogQ1JF QVRFIFZJRVcgcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHMgQVMKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCAzOTIyNjU4YmJjLi40Yjk4OTBlNmU2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC00Niw2 ICs0Niw3IEBACiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUg InV0aWxzL3RpbWVzdGFtcC5oIgogCiAvKgogICogT3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVj aWZpZWQgYnkgdGhlIHVzZXIgaW4gQ1JFQVRFL0FMVEVSIFNVQlNDUklQVElPTgpAQCAtNjIs NiArNjMsNyBAQAogI2RlZmluZSBTVUJPUFRfU1RSRUFNSU5HCQkJMHgwMDAwMDEwMAogI2Rl ZmluZSBTVUJPUFRfVFdPUEhBU0VfQ09NTUlUCQkweDAwMDAwMjAwCiAjZGVmaW5lIFNVQk9Q VF9ESVNBQkxFX09OX0VSUgkJMHgwMDAwMDQwMAorI2RlZmluZSBTVUJPUFRfTUlOX0FQUExZ X0RFTEFZCQkweDAwMDAwODAwCiAKIC8qIGNoZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMn IHNldCAqLwogI2RlZmluZSBJc1NldCh2YWwsIGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9 PSAoYml0cykpCkBAIC04NCw2ICs4Niw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMKIAli b29sCQlzdHJlYW1pbmc7CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJy OworCWludDY0CQltaW5fYXBwbHlfZGVsYXk7CiB9IFN1Yk9wdHM7CiAKIHN0YXRpYyBMaXN0 ICpmZXRjaF90YWJsZV9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpwdWJs aWNhdGlvbnMpOwpAQCAtMjYyLDEyICsyNjUsMzUgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29w dGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJCQlvcHRz LT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfRElTQUJMRV9PTl9FUlI7CiAJCQlvcHRzLT5k aXNhYmxlb25lcnIgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKIAkJfQorCQllbHNlIGlmIChJ c1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX01JTl9BUFBMWV9ERUxBWSkgJiYKKwkJCQkg c3RyY21wKGRlZmVsLT5kZWZuYW1lLCAibWluX2FwcGx5X2RlbGF5IikgPT0gMCkKKwkJewor CQkJY2hhcgkgICAqdmFsOworCQkJSW50ZXJ2YWwgICAqaW50ZXJ2YWw7CisKKwkJCWlmIChJ c1NldChvcHRzLT5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX01JTl9BUFBMWV9ERUxBWSkpCisJ CQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJCW9wdHMt PnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9NSU5fQVBQTFlfREVMQVk7CisJCQl2YWwgPSBk ZWZHZXRTdHJpbmcoZGVmZWwpOworCisJCQlpbnRlcnZhbCA9IERhdHVtR2V0SW50ZXJ2YWxQ KERpcmVjdEZ1bmN0aW9uQ2FsbDMoaW50ZXJ2YWxfaW4sCisJCQkJCQkJCQkJCQkJCQkJCUNT dHJpbmdHZXREYXR1bSh2YWwpLAorCQkJCQkJCQkJCQkJCQkJCQlPYmplY3RJZEdldERhdHVt KEludmFsaWRPaWQpLAorCQkJCQkJCQkJCQkJCQkJCQlJbnQzMkdldERhdHVtKC0xKSkpOwor CQkJb3B0cy0+bWluX2FwcGx5X2RlbGF5ID0gaW50ZXJ2YWxfdG9fbXMoaW50ZXJ2YWwpOwor CQl9CiAJCWVsc2UKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIHN1YnNjcmlwdGlv biBwYXJhbWV0ZXI6IFwiJXNcIiIsIGRlZmVsLT5kZWZuYW1lKSkpOwogCX0KIAorCWlmIChv cHRzLT5taW5fYXBwbHlfZGVsYXkgPCAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNv ZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJZXJybXNnKCJv cHRpb24gXCIlc1wiIG11c3Qgbm90IGJlIG5lZ2F0aXZlIiwgIm1pbl9hcHBseV9kZWxheSIp KTsKKwogCS8qCiAJICogV2UndmUgYmVlbiBleHBsaWNpdGx5IGFza2VkIHRvIG5vdCBjb25u ZWN0LCB0aGF0IHJlcXVpcmVzIHNvbWUKIAkgKiBhZGRpdGlvbmFsIHByb2Nlc3NpbmcuCkBA IC00MDQsNyArNDMwLDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJICBTVUJPUFRfU0xPVF9O QU1FIHwgU1VCT1BUX0NPUFlfREFUQSB8CiAJCQkJCSAgU1VCT1BUX1NZTkNIUk9OT1VTX0NP TU1JVCB8IFNVQk9QVF9CSU5BUlkgfAogCQkJCQkgIFNVQk9QVF9TVFJFQU1JTkcgfCBTVUJP UFRfVFdPUEhBU0VfQ09NTUlUIHwKLQkJCQkJICBTVUJPUFRfRElTQUJMRV9PTl9FUlIpOwor CQkJCQkgIFNVQk9QVF9ESVNBQkxFX09OX0VSUiB8IFNVQk9QVF9NSU5fQVBQTFlfREVMQVkp OwogCXBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0ZSwgc3RtdC0+b3B0aW9ucywg c3VwcG9ydGVkX29wdHMsICZvcHRzKTsKIAogCS8qCkBAIC00NzksNiArNTA1LDcgQEAgQ3Jl YXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9u U3RtdCAqc3RtdCwKIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfUEVORElORyA6 CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX0RJU0FCTEVEKTsKIAl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZGlzYWJsZW9uZXJyIC0gMV0gPSBCb29sR2V0RGF0 dW0ob3B0cy5kaXNhYmxlb25lcnIpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJhcHBseWRlbGF5IC0gMV0gPSBJbnQ2NEdldERhdHVtKG9wdHMubWluX2FwcGx5X2RlbGF5 KTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9CiAJ CUNTdHJpbmdHZXRUZXh0RGF0dW0oY29ubmluZm8pOwogCWlmIChvcHRzLnNsb3RfbmFtZSkK QEAgLTkzNSw2ICs5NjIsMTIgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCXJlcGxhY2VzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdCiAJCQkJCQk9IHRydWU7CiAJ CQkJfQorCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfTUlOX0FQ UExZX0RFTEFZKSkKKwkJCQl7CisJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJhcHBseWRlbGF5IC0gMV0gPQorCQkJCQkJSW50NjRHZXREYXR1bShvcHRzLm1pbl9hcHBs eV9kZWxheSk7CisJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmFwcGx5 ZGVsYXkgLSAxXSA9IHRydWU7CisJCQkJfQogCiAJCQkJdXBkYXRlX3R1cGxlID0gdHJ1ZTsK IAkJCQlicmVhazsKQEAgLTk1OCw2ICs5OTEsMTcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJaWYg KG9wdHMuZW5hYmxlZCkKIAkJCQkJQXBwbHlMYXVuY2hlcldha2V1cEF0Q29tbWl0KCk7CiAK KwkJCQkvKgorCQkJCSAqIElmIHRoaXMgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVk IGFuZCBpdCBoYXMgYW4gYXBwbHkKKwkJCQkgKiBkZWxheSBzZXQsIHdha2UgdXAgdGhlIGxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHRvIGZpbmlzaAorCQkJCSAqIGl0IGFzIHNvb24g YXMgcG9zc2libGUuCisJCQkJICovCisJCQkJaWYgKCFvcHRzLmVuYWJsZWQgJiYgc3ViLT5h cHBseWRlbGF5ID4gMCkKKwkJCQl7CisJCQkJCWVsb2coREVCVUcxLCAic3Vic2NyaXB0aW9u IGhhcyBiZWVuIGRpc2FibGVkIik7CisJCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChz dWItPm9pZCwgSW52YWxpZE9pZCk7CisJCQkJfQorCiAJCQkJdXBkYXRlX3R1cGxlID0gdHJ1 ZTsKIAkJCQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jCmluZGV4IDAzZTA2OWM3Y2QuLjI0MTgxMGM2MmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjUwLDYgKzI1MCw3IEBAIFdh bFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9IE5VTEw7CiAKIFN1YnNj cmlwdGlvbiAqTXlTdWJzY3JpcHRpb24gPSBOVUxMOwogYm9vbAkJTXlTdWJzY3JpcHRpb25W YWxpZCA9IGZhbHNlOworVGltZXN0YW1wVHoJTXlTdWJzY3JpcHRpb25NaW5BcHBseURlbGF5 VW50aWwgPSAwOwogCiBib29sCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIHN0 YXRpYyBYTG9nUmVjUHRyIHJlbW90ZV9maW5hbF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsK QEAgLTMwNyw2ICszMDgsOCBAQCBzdGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0 aW9uKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2 b2lkKTsKIAorc3RhdGljIHZvaWQgYXBwbHlfZGVsYXkoVGltZXN0YW1wVHogdHMpOworCiAv KiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwogc3RhdGlj IHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKIApAQCAtNzgyLDYgKzc4NSw1 OCBAQCBzbG90X21vZGlmeV9kYXRhKFR1cGxlVGFibGVTbG90ICpzbG90LCBUdXBsZVRhYmxl U2xvdCAqc3Jjc2xvdCwKIAlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoc2xvdCk7CiB9CiAKKy8q CisgKiBBcHBseSB0aGUgaW5mb3JtZWQgZGVsYXkgZm9yIHRoZSB0cmFuc2FjdGlvbi4KKyAq CisgKiBBIHJlZ3VsYXIgdHJhbnNhY3Rpb24gdXNlcyB0aGUgY29tbWl0IHRpbWUgdG8gY2Fs Y3VsYXRlIHRoZSBkZWxheS4gQQorICogcHJlcGFyZWQgdHJhbnNhY3Rpb24gdXNlcyB0aGUg cHJlcGFyZSB0aW1lIHRvIGNhbGN1bGF0ZSB0aGUgZGVsYXkgKHRoZQorICogY29tbWl0IHRp bWUgaXMgdW5rbm93biBhdCBwcmVwYXJlIHRpbWUpLgorICoKKyAqIEZJWE1FIEEgc3RyZWFt ZWQgdHJhbnNhY3Rpb24gY291bGQgYmUgZGVsYXllZCB0b28gYnV0IHRoZXJlIGlzIG5vIHRp bWVzdGFtcAorICogaW4gdGhlIFNUUkVBTSBTVEFSVCBwcm90b2NvbCBtZXNzYWdlLiBIZW5j ZSwgaWYgaXQgaXMgYSBzdHJlYW1lZCAocmVndWxhciBvcgorICogcHJlcGFyZWQpIHRyYW5z YWN0aW9uLCBubyBkZWxheSBpcyBhcHBsaWVkLgorICovCitzdGF0aWMgdm9pZAorYXBwbHlf ZGVsYXkoVGltZXN0YW1wVHogdHMpCit7CisJLyogbm90aGluZyB0byBkbyBpZiBubyBkZWxh eSBzZXQgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPmFwcGx5ZGVsYXkgPD0gMCkKKwkJcmV0 dXJuOworCisJLyogc2V0IGFwcGx5IGRlbGF5ICovCisJTXlTdWJzY3JpcHRpb25NaW5BcHBs eURlbGF5VW50aWwgPSBUaW1lc3RhbXBUelBsdXNNaWxsaXNlY29uZHMoVGltZXN0YW1wVHpH ZXREYXR1bSh0cyksCisJCQkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+YXBwbHlkZWxheSk7 CisKKwl3aGlsZSAodHJ1ZSkKKwl7CisJCWludAkJCWRpZmZtczsKKworCQlkaWZmbXMgPSBU aW1lc3RhbXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRzKEdldEN1cnJlbnRUaW1lc3RhbXAoKSwg TXlTdWJzY3JpcHRpb25NaW5BcHBseURlbGF5VW50aWwpOworCisJCWVsb2coREVCVUcyLCAi bG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSBkZWxheTogJXUgbXMiLCBkaWZmbXMpOworCisJ CS8qCisJCSAqIEV4aXQgd2l0aG91dCBhcm1pbmcgdGhlIGxhdGNoIGlmIGl0J3MgYWxyZWFk eSBwYXN0IHRpbWUgdG8gYXBwbHkKKwkJICogdGhpcyB0cmFuc2FjdGlvbi4KKwkJICovCisJ CWlmIChkaWZmbXMgPD0gMCkKKwkJCWJyZWFrOworCisJCVdhaXRMYXRjaChNeUxhdGNoLAor CQkJCSAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CisJCQkJICBkaWZmbXMsCisJCQkJICBXQUlUX0VWRU5UX1JFQ09WRVJZX0FQUExZX0RFTEFZ KTsKKwkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCX0KKworCS8qCisJICogRGVsYXkgYXBwbGllZC4gUmVzZXQgc3RhdGUuCisJICovCisJ TXlTdWJzY3JpcHRpb25NaW5BcHBseURlbGF5VW50aWwgPSAwOworfQorCiAvKgogICogSGFu ZGxlIEJFR0lOIG1lc3NhZ2UuCiAgKi8KQEAgLTc5Myw2ICs4NDgsOSBAQCBhcHBseV9oYW5k bGVfYmVnaW4oU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVhZF9iZWdpbihzLCAmYmVn aW5fZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChiZWdpbl9kYXRhLnhp ZCwgYmVnaW5fZGF0YS5maW5hbF9sc24pOwogCisJLyogU2hvdWxkIHdlIGRlbGF5IHRoZSBj dXJyZW50IHRyYW5zYWN0aW9uPyAqLworCWFwcGx5X2RlbGF5KGJlZ2luX2RhdGEuY29tbWl0 dGltZSk7CisKIAlyZW1vdGVfZmluYWxfbHNuID0gYmVnaW5fZGF0YS5maW5hbF9sc247CiAK IAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSB0cnVlOwpAQCAtODQ1LDYgKzkwMyw5IEBAIGFw cGx5X2hhbmRsZV9iZWdpbl9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlsb2dpY2FscmVwX3Jl YWRfYmVnaW5fcHJlcGFyZShzLCAmYmVnaW5fZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfeGFjdChiZWdpbl9kYXRhLnhpZCwgYmVnaW5fZGF0YS5wcmVwYXJlX2xzbik7CiAK KwkvKiBTaG91bGQgd2UgZGVsYXkgdGhlIGN1cnJlbnQgcHJlcGFyZWQgdHJhbnNhY3Rpb24/ ICovCisJYXBwbHlfZGVsYXkoYmVnaW5fZGF0YS5wcmVwYXJlX3RpbWUpOworCiAJcmVtb3Rl X2ZpbmFsX2xzbiA9IGJlZ2luX2RhdGEucHJlcGFyZV9sc247CiAKIAlpbl9yZW1vdGVfdHJh bnNhY3Rpb24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Rp bWVzdGFtcC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCmluZGV4IGFl MzZmZjMzMjguLjFlZGEzZWQ1N2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC90aW1lc3RhbXAuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMK QEAgLTIzNzksNiArMjM3OSwxNCBAQCBpbnRlcnZhbF9jbXBfaW50ZXJuYWwoSW50ZXJ2YWwg KmludGVydmFsMSwgSW50ZXJ2YWwgKmludGVydmFsMikKIAlyZXR1cm4gaW50MTI4X2NvbXBh cmUoc3BhbjEsIHNwYW4yKTsKIH0KIAoraW50NjQKK2ludGVydmFsX3RvX21zKGNvbnN0IElu dGVydmFsICppbnRlcnZhbCkKK3sKKwlJTlQxMjgJCXNwYW4gPSBpbnRlcnZhbF9jbXBfdmFs dWUoaW50ZXJ2YWwpIC8gMTAwMDsKKworCXJldHVybiBzcGFuOworfQorCiBEYXR1bQogaW50 ZXJ2YWxfZXEoUEdfRlVOQ1RJT05fQVJHUykKIHsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDcyNWNk MmU0ZWIuLmMxY2M1NDc2Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDMyNSw2ICs0MzI1LDcg QEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWludAkJCWlfc3Vic3luY2Nv bW1pdDsKIAlpbnQJCQlpX3N1YnB1YmxpY2F0aW9uczsKIAlpbnQJCQlpX3N1YmJpbmFyeTsK KwlpbnQJCQlpX3N1YmFwcGx5ZGVsYXk7CiAJaW50CQkJaSwKIAkJCQludHVwczsKIApAQCAt NDM2OSwxMSArNDM3MCwxMyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJ aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKIAkJCQkJCQkgIiBzLnN1YnR3b3BoYXNlc3RhdGUsXG4iCi0JCQkJCQkJ ICIgcy5zdWJkaXNhYmxlb25lcnJcbiIpOworCQkJCQkJCSAiIHMuc3ViZGlzYWJsZW9uZXJy LFxuIgorCQkJCQkJCSAiIHMuc3ViYXBwbHlkZWxheVxuIik7CiAJZWxzZQogCQlhcHBlbmRQ UUV4cEJ1ZmZlcihxdWVyeSwKIAkJCQkJCSAgIiAnJWMnIEFTIHN1YnR3b3BoYXNlc3RhdGUs XG4iCi0JCQkJCQkgICIgZmFsc2UgQVMgc3ViZGlzYWJsZW9uZXJyXG4iLAorCQkJCQkJICAi IGZhbHNlIEFTIHN1YmRpc2FibGVvbmVycixcbiIKKwkJCQkJCSAgIiAwIEFTIHN1YmFwcGx5 ZGVsYXlcbiIsCiAJCQkJCQkgIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQp OwogCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCkBAIC00Mzk3LDYgKzQ0MDAsNyBA QCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaV9zdWJzdHJlYW0gPSBQUWZu dW1iZXIocmVzLCAic3Vic3RyZWFtIik7CiAJaV9zdWJ0d29waGFzZXN0YXRlID0gUFFmbnVt YmVyKHJlcywgInN1YnR3b3BoYXNlc3RhdGUiKTsKIAlpX3N1YmRpc2FibGVvbmVyciA9IFBR Zm51bWJlcihyZXMsICJzdWJkaXNhYmxlb25lcnIiKTsKKwlpX3N1YmFwcGx5ZGVsYXkgPSBQ UWZudW1iZXIocmVzLCAic3ViYXBwbHlkZWxheSIpOwogCiAJc3ViaW5mbyA9IHBnX21hbGxv YyhudHVwcyAqIHNpemVvZihTdWJzY3JpcHRpb25JbmZvKSk7CiAKQEAgLTQ0MjYsNiArNDQz MCw4IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJCXBnX3N0cmR1cChQ UWdldHZhbHVlKHJlcywgaSwgaV9zdWJ0d29waGFzZXN0YXRlKSk7CiAJCXN1YmluZm9baV0u c3ViZGlzYWJsZW9uZXJyID0KIAkJCXBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9z dWJkaXNhYmxlb25lcnIpKTsKKwkJc3ViaW5mb1tpXS5zdWJhcHBseWRlbGF5ID0KKwkJCXN0 cnRvaTY0KFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YmFwcGx5ZGVsYXkpLCBOVUxMLCAxMCk7 CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVj dER1bXBhYmxlT2JqZWN0KCYoc3ViaW5mb1tpXS5kb2JqKSwgZm91dCk7CkBAIC00NTAyLDYg KzQ1MDgsOSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNj cmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzeW5jY29t bWl0LCAib2ZmIikgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIsIHN5bmNo cm9ub3VzX2NvbW1pdCA9ICVzIiwgZm10SWQoc3ViaW5mby0+c3Vic3luY2NvbW1pdCkpOwog CisJaWYgKHN1YmluZm8tPnN1YmFwcGx5ZGVsYXkgPiAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZl cihxdWVyeSwgIiwgbWluX2FwcGx5X2RlbGF5ID0gJyIgSU5UNjRfRk9STUFUICIgbXMnIiwg c3ViaW5mby0+c3ViYXBwbHlkZWxheSk7CisKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIik7XG4iKTsKIAogCWlmIChzdWJpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVO VF9ERUZJTklUSU9OKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggNzcyZGMwY2Y3YS4uMTVhMDUyMjdm OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02NTksNiArNjU5LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg X1N1YnNjcmlwdGlvbkluZm8KIAljaGFyCSAgICpzdWJ0d29waGFzZXN0YXRlOwogCWNoYXIJ ICAgKnN1YmRpc2FibGVvbmVycjsKIAljaGFyCSAgICpzdWJzeW5jY29tbWl0OworCWludDY0 CQlzdWJhcHBseWRlbGF5OwogCWNoYXIJICAgKnN1YnB1YmxpY2F0aW9uczsKIH0gU3Vic2Ny aXB0aW9uSW5mbzsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA5OTFiZmMxNTQ2Li5jZDM4N2VjNjJjIDEw MDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYwpAQCAtNjEzOSwxMyArNjEzOSwxOCBAQCBkZXNjcmliZVN1YnNjcmlwdGlv bnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCQkJCQkJCSAgZ2V0dGV4 dF9ub29wKCJCaW5hcnkiKSwKIAkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikp OwogCi0JCS8qIFR3b19waGFzZSBhbmQgZGlzYWJsZV9vbl9lcnJvciBhcmUgb25seSBzdXBw b3J0ZWQgaW4gdjE1IGFuZCBoaWdoZXIgKi8KKwkJLyoKKwkJICogdHdvX3BoYXNlLCBkaXNh YmxlX29uX2Vycm9yIGFuZCBtaW5fYXBwbHlfZGVsYXkgYXJlIG9ubHkgc3VwcG9ydGVkCisJ CSAqIGluIHYxNSBhbmQgaGlnaGVyLgorCQkgKi8KIAkJaWYgKHBzZXQuc3ZlcnNpb24gPj0g MTUwMDAwKQogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICIsIHN1YnR3 b3BoYXNlc3RhdGUgQVMgXCIlc1wiXG4iCi0JCQkJCQkJICAiLCBzdWJkaXNhYmxlb25lcnIg QVMgXCIlc1wiXG4iLAorCQkJCQkJCSAgIiwgc3ViZGlzYWJsZW9uZXJyIEFTIFwiJXNcIlxu IgorCQkJCQkJCSAgIiwgc3ViYXBwbHlkZWxheSBBUyBcIiVzXCJcbiIsCiAJCQkJCQkJICBn ZXR0ZXh0X25vb3AoIlR3byBwaGFzZSBjb21taXQiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9v cCgiRGlzYWJsZSBvbiBlcnJvciIpKTsKKwkJCQkJCQkgIGdldHRleHRfbm9vcCgiRGlzYWJs ZSBvbiBlcnJvciIpLAorCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJBcHBseSBkZWxheSIpKTsK IAogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiLCAgc3Vic3luY2NvbW1p dCBBUyBcIiVzXCJcbiIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmlu ZGV4IGUyYmVmYWYzNTEuLmU4ODQwYTdkMTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaApAQCAtNjksNiArNjksNyBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlv biw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJ X1JPVwogCiAJYm9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVy cm9yIHNob3VsZCBjYXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBk aXNhYmxlZCAqLworCWludDY0CQlzdWJhcHBseWRlbGF5OwkJLyogUmVwbGljYXRpb24gYXBw bHkgZGVsYXkgKi8KIAogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVu Z3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhl IHB1Ymxpc2hlciAqLwpAQCAtMTA5LDYgKzExMCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNj cmlwdGlvbgogCWJvb2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJz Y3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQg aWYgYSB3b3JrZXIgZXJyb3IKIAkJCQkJCQkJICogb2NjdXJzICovCisJaW50NjQJCWFwcGx5 ZGVsYXk7CQkvKiBSZXBsaWNhdGlvbiBhcHBseSBkZWxheSAqLwogCWNoYXIJICAgKmNvbm5p bmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNoYXIJ ICAgKnNsb3RuYW1lOwkJLyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNo YXIJICAgKnN5bmNjb21taXQ7CQkvKiBTeW5jaHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Ig d29ya2VyICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90aW1lc3RhbXAuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL3RpbWVzdGFtcC5oCmluZGV4IGMxYTc0ZjhlMmIuLjU4YTZl NmI2ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3RpbWVzdGFtcC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL3RpbWVzdGFtcC5oCkBAIC03OCw2ICs3OCw4IEBAIGV4dGVy biBib29sIFRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKFRpbWVzdGFtcFR6IHN0YXJ0X3Rp bWUsCiAJCQkJCQkJCQkgICBUaW1lc3RhbXBUeiBzdG9wX3RpbWUsCiAJCQkJCQkJCQkgICBp bnQgbXNlYyk7CiAKK2V4dGVybiBpbnQ2NCBpbnRlcnZhbF90b19tcyhjb25zdCBJbnRlcnZh bCAqaW50ZXJ2YWwpOworCiBleHRlcm4gVGltZXN0YW1wVHogdGltZV90X3RvX3RpbWVzdGFt cHR6KHBnX3RpbWVfdCB0bSk7CiBleHRlcm4gcGdfdGltZV90IHRpbWVzdGFtcHR6X3RvX3Rp bWVfdChUaW1lc3RhbXBUeiB0KTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzY3JpcHRpb24ub3V0CmluZGV4IGFkODAwM2ZhZTEuLmFhMWZkYzhhMTEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTc2LDEwICs3 NiwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04g J2Zvb2Jhcic7CiBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBt aXNzaW5nICI9IiBhZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAK IFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z Ci0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3byBwaGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3byBwaGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgQXBwbHkgZGVsYXkgfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgICAgICAgICAgIDAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QKICgxIHJv dykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJ T04gdGVzdHB1YjIsIHRlc3RwdWIzIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBAIC05NCwx MCArOTQsMTAgQEAgRVJST1I6ICBzdWJzY3JpcHRpb24gInJlZ3Jlc3NfZG9lc25vdGV4aXN0 IiBkb2VzIG5vdCBleGlzdAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKGNyZWF0ZV9zbG90ID0gZmFsc2UpOwogRVJST1I6ICB1bnJlY29nbml6ZWQgc3Vic2Ny aXB0aW9uIHBhcmFtZXRlcjogImNyZWF0ZV9zbG90IgogXGRScysKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRp b24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvIHBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0 ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0 cmVhbWluZyB8IFR3byBwaGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgQXBwbHkg ZGVsYXkgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgICAgICAgICAgIDAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyCiAoMSByb3cpCiAKIEJFR0lOOwpA QCAtMTI5LDEwICsxMjksMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 Yl9mb28gU0VUIChzeW5jaHJvbm91c19jb21taXQgPSBmb29iYXIpOwogRVJST1I6ICBpbnZh bGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgInN5bmNocm9ub3VzX2NvbW1pdCI6ICJmb29iYXIi CiBISU5UOiAgQXZhaWxhYmxlIHZhbHVlczogbG9jYWwsIHJlbW90ZV93cml0ZSwgcmVtb3Rl X2FwcGx5LCBvbiwgb2ZmLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwg QmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvIHBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViX2Zv byB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRl c3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvIHBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBB cHBseSBkZWxheSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAwIHwgbG9j YWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MgogKDEgcm93 KQogCiAtLSByZW5hbWUgYmFjayB0byBrZWVwIHRoZSByZXN0IHNpbXBsZQpAQCAtMTY1LDE5 ICsxNjUsMTkgQEAgRVJST1I6ICBiaW5hcnkgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlCiBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVj dCA9IGZhbHNlLCBiaW5hcnkgPSB0cnVlKTsKIFdBUk5JTkc6ICB0YWJsZXMgd2VyZSBub3Qg c3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxURVIgU1VCU0NSSVBUSU9OIC4u LiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHRvIHN1YnNjcmliZSB0aGUgdGFibGVzCiBcZFJzKwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28gcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAg ICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28gcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IEFwcGx5IGRlbGF5IHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBmICAgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAwIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0CiAoMSByb3cpCiAKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChiaW5hcnkgPSBmYWxzZSk7 CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0g Tk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28gcGhh c2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28g cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IEFwcGx5IGRlbGF5IHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAg ICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAwIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 CiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKQEAgLTE4 OCwxOSArMTg4LDE5IEBAIEVSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2 YWx1ZQogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAn ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEgg KGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gdHJ1ZSk7CiBXQVJOSU5HOiAgdGFibGVz IHdlcmUgbm90IHN1YnNjcmliZWQsIHlvdSB3aWxsIGhhdmUgdG8gcnVuIEFMVEVSIFNVQlND UklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiB0byBzdWJzY3JpYmUgdGhlIHRhYmxl cwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvIHBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvIHBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBBcHBseSBkZWxheSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCAgICAgICAgICAgMCB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdAogKDEg cm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFt aW5nID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KHNsb3RfbmFtZSA9IE5PTkUpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvIHBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvIHBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBBcHBseSBk ZWxheSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgMCB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gYWxyZWFk eSBleGlzdHMKQEAgLTIxNSwxMCArMjE1LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgQUREIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChy ZWZyCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIEFERCBQVUJMSUNBVElP TiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIEVSUk9SOiAg cHVibGljYXRpb24gInRlc3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1YnNjcmlwdGlvbiAicmVn cmVzc190ZXN0c3ViIgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJsaWNhdGlvbiAgICAgICAg IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvIHBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViLHRl c3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAg ICAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28gcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IEFwcGx5IGRlbGF5IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYg ICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgICAgICAgICAgIDAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIHVzZWQgbW9y ZSB0aGVuIG9uY2UKQEAgLTIzMywxMCArMjMzLDEwIEBAIEVSUk9SOiAgcHVibGljYXRpb24g InRlc3RwdWIzIiBpcyBub3QgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAt LSBvayAtIGRlbGV0ZSBwdWJsaWNhdGlvbnMKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVm cmVzaCA9IGZhbHNlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3byBwaGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3byBwaGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgQXBwbHkgZGVsYXkg fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg ICAgICAgICAgIDAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi OwpAQCAtMjcwLDEwICsyNzAsMTAgQEAgRVJST1I6ICB0d29fcGhhc2UgcmVxdWlyZXMgYSBC b29sZWFuIHZhbHVlCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05O RUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3Rw dWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCB0d29fcGhhc2UgPSB0cnVlKTsKIFdBUk5JTkc6 ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxU RVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHRvIHN1YnNjcmliZSB0 aGUgdGFibGVzCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28g cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28gcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IEFwcGx5IGRlbGF5IHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBm ICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAwIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0CiAoMSByb3cpCiAKIC0tZmFpbCAtIGFsdGVyIG9mIHR3b19waGFzZSBvcHRpb24gbm90 IHN1cHBvcnRlZC4KQEAgLTI4MiwxMCArMjgyLDEwIEBAIEVSUk9SOiAgdW5yZWNvZ25pemVk IHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXI6ICJ0d29fcGhhc2UiCiAtLSBidXQgY2FuIGFsdGVy IHN0cmVhbWluZyB3aGVuIHR3b19waGFzZSBlbmFibGVkCiBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiBcZFJzKwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28gcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHQg ICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28gcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IEFwcGx5IGRlbGF5IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAwIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0CiAoMSByb3cpCiAKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAg LTI5NCwxMCArMjk0LDEwIEBAIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsK IENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25u ZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IHRydWUsIHR3b19waGFzZSA9IHRydWUpOwogV0FS TklORzogIHRhYmxlcyB3ZXJlIG5vdCBzdWJzY3JpYmVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJ1 biBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gdG8gc3Vic2Ny aWJlIHRoZSB0YWJsZXMKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3byBwaGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAgIHwgcCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3byBwaGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgQXBwbHkgZGVsYXkg fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHQgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg ICAgICAgICAgIDAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtMzA5LDE4ICszMDksNDcgQEAgRVJST1I6 ICBkaXNhYmxlX29uX2Vycm9yIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZQogQ1JFQVRFIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxz ZSwgZGlzYWJsZV9vbl9lcnJvciA9IGZhbHNlKTsKIFdBUk5JTkc6ICB0YWJsZXMgd2VyZSBu b3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxURVIgU1VCU0NSSVBUSU9O IC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHRvIHN1YnNjcmliZSB0aGUgdGFibGVzCiBcZFJz KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28gcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwor ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28gcGhhc2UgY29tbWl0 IHwgRGlzYWJsZSBvbiBlcnJvciB8IEFwcGx5IGRlbGF5IHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAwIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0CiAoMSByb3cpCiAK IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChkaXNhYmxlX29uX2Vy cm9yID0gdHJ1ZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28gcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAg fCB0ICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28gcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IEFwcGx5IGRlbGF5IHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAwIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0CisoMSByb3cpCisKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzbG90X25hbWUgPSBOT05FKTsKK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YjsKKy0tIGZhaWwgLS0gbWluX2FwcGx5X2RlbGF5IG11c3QgYmUgYSBub24tbmVnYXRp dmUgaW50ZWdlcgorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVD VElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHVi IFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgbWluX2FwcGx5X2RlbGF5ID0gZm9vKTsKK0VSUk9S OiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZXJ2YWw6ICJmb28iCitDUkVB VEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9 IGZhbHNlLCBtaW5fYXBwbHlfZGVsYXkgPSAtMSk7CitFUlJPUjogIG9wdGlvbiAibWluX2Fw cGx5X2RlbGF5IiBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorLS0gc3VjY2VzcyAtLSAxMjMgbXMK K0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25u ZWN0ID0gZmFsc2UsIG1pbl9hcHBseV9kZWxheSA9IDEyMyk7CitXQVJOSU5HOiAgdGFibGVz IHdlcmUgbm90IHN1YnNjcmliZWQsIHlvdSB3aWxsIGhhdmUgdG8gcnVuIEFMVEVSIFNVQlND UklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiB0byBzdWJzY3JpYmUgdGhlIHRhYmxl cworXGRScysKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3byBw aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgQXBwbHkgZGVsYXkgfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgICAgICAxMjMw MDAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QK KygxIHJvdykKKworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNs b3RfbmFtZSA9IE5PTkUpOworRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwor LS0gc3VjY2VzcyAtLSBpbnRlcnZhbCBpcyBjb252ZXJ0ZWQgaW50byBtcyBhbmQgc3RvcmVk IGFzIGludGVnZXIKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5F Q1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1 YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIG1pbl9hcHBseV9kZWxheSA9ICc0aCAyN21pbiAz NXMnKTsKK1dBUk5JTkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwg aGF2ZSB0byBydW4gQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9O IHRvIHN1YnNjcmliZSB0aGUgdGFibGVzCitcZFJzKworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvIHBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBBcHBseSBkZWxheSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCAgICAxNjA1NTAwMCB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3Vic2NyaXB0aW9uLnNxbAppbmRleCBhN2MxNWIxZGFmLi45YjI4MmI4MjYzIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKQEAgLTI0Myw2ICsyNDMs MjYgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVf b25fZXJyb3IgPSB0cnVlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzbG90X25hbWUgPSBOT05FKTsKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YjsKIAorLS0gZmFpbCAtLSBtaW5fYXBwbHlfZGVsYXkgbXVzdCBiZSBhIG5vbi1uZWdh dGl2ZSBpbnRlZ2VyCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05O RUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3Rw dWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBtaW5fYXBwbHlfZGVsYXkgPSBmb28pOworQ1JF QVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3Qg PSBmYWxzZSwgbWluX2FwcGx5X2RlbGF5ID0gLTEpOworCistLSBzdWNjZXNzIC0tIDEyMyBt cworQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNv bm5lY3QgPSBmYWxzZSwgbWluX2FwcGx5X2RlbGF5ID0gMTIzKTsKKworXGRScysKKworQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUp OworRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOworCistLSBzdWNjZXNzIC0t IGludGVydmFsIGlzIGNvbnZlcnRlZCBpbnRvIG1zIGFuZCBzdG9yZWQgYXMgaW50ZWdlcgor Q1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5l Y3QgPSBmYWxzZSwgbWluX2FwcGx5X2RlbGF5ID0gJzRoIDI3bWluIDM1cycpOworCitcZFJz KworCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1l ID0gTk9ORSk7CitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CisKIFJFU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTjsKIERST1AgUk9MRSByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyOwogRFJPUCBST0xFIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIyOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMwX2FwcGx5X2RlbGF5LnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMwX2FwcGx5X2RlbGF5LnBsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI1NDMzYzQ1ZTkKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzBfYXBwbHlfZGVsYXkucGwKQEAgLTAsMCAr MSw3NiBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHJlcGxpY2F0aW9uIGFwcGx5IGRlbGF5Cit1c2Ug c3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7 Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBD cmVhdGUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmlu aXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5z dGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzIiKTsKKyRub2Rl X3N1YnNjcmliZXItPnN0YXJ0OworCisjIENyZWF0ZSBzb21lIHByZWV4aXN0aW5nIGNvbnRl bnQgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNo YXIpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDEsICdmb28nKSwgKDIsICdiYXInKSIpOworCisj IFNldHVwIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiIChhIGludCBwcmlt YXJ5IGtleSwgYiB0ZXh0LCBjIHRpbWVzdGFtcHR6IERFRkFVTFQgbm93KCksIGQgYmlnaW50 IERFRkFVTFQgOTk5KSIKKyk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkg JHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5h bWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisK K215ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9O ICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElD QVRJT04gdGFwX3B1YiBXSVRIIChtaW5fYXBwbHlfZGVsYXkgPSAnMnMnKSIKKyk7CisKKyRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQWxzbyB3 YWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCitteSAkc3luY2VkX3F1ZXJ5 ID0KKyAgIlNFTEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25fcmVsIFdI RVJFIHNyc3Vic3RhdGUgTk9UIElOICgncicsICdzJyk7IjsKKyRub2RlX3N1YnNjcmliZXIt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkKKyAgb3IgZGll ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6 ZSBkYXRhIjsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00g dGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDJ8MXwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0 YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKKworIyBuZXcgcm93IHRvIHRyaWdnZXIg YXBwbHkgZGVsYXkKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgJ2JheicpIik7CisKKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50 KCopLCBtaW4oYSksIG1heChhKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgz fDF8MyksICdjaGVjayB0aGUgbmV3IHJvdyB3YXMgYXBwbGllZCB0byBzdWJzY3JpYmVyJyk7 CisKK215ICRsb2dmaWxlID0gc2x1cnBfZmlsZSgkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxl KCkpOworb2soICRsb2dmaWxlID1+CisJICBxci9sb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5 IGRlbGF5LywKKwknY2hlY2sgaWYgcmVwbGljYXRpb24gYXBwbHkgZGVsYXkgaXMgdHJpZ2dl cmVkJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnN0b3A7Ciskbm9kZV9wdWJsaXNoZXItPnN0 b3A7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zMC4yCgo= --63d5a64fc6084fc584da334d5a97278e--