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 1rNxtk-00HWKk-18 for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Jan 2024 16:27:17 +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 1rNxth-00D6Y7-Mz for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Jan 2024 16:27:13 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rNxtg-00D6Xy-DB for pgsql-hackers@lists.postgresql.org; Thu, 11 Jan 2024 16:27:13 +0000 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rNxtV-0012C7-3D for pgsql-hackers@lists.postgresql.org; Thu, 11 Jan 2024 16:27:10 +0000 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-55642663ac4so6254501a12.1 for ; Thu, 11 Jan 2024 08:27:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1704990419; x=1705595219; darn=lists.postgresql.org; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=t2cLvw4CTwcq/E44/HwzLq9k7zihmtTAsWwBized7xo=; b=MVD6c3wjrTBf0at2xYVaxKUvmPQauLrM0YuKYHmpmFDTA2ioKLOvOa9P0mBEK7LiiX wX2gtHena3/9mUccFPbH3owpmvluyabjL4B0V0b0MmecZ2V1BAjI8+2dqWf1to+vfVFm wcm/A5U4lBe8Wqv20uTKYRDsx5GXc4nDADWFdMZkMjWtMOYY/Frf3dy5ldvZXuqyNB96 b15bmuauh/tUav4weDXCnse+Q9ZmeaObQOHzkFI/OfM8G0YT8pakkF2T1VUViW+AgLmg IY/DR4titdxkS2j2paVyg/UTqAD/s4f3eoXO4vT+nW0qtvNaYx3I13hKQT8aqQ8dodq8 SEog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704990419; x=1705595219; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=t2cLvw4CTwcq/E44/HwzLq9k7zihmtTAsWwBized7xo=; b=X2VjCy6qUbNyl6sVY3LOXpd69m2KTp6shvdQQmD36I3LvHVBI4ofAPOmjZK3hNGd/N ia3d01s65lsW0se7ECaWNfPRZiK2FHADy/zeBQtzAcKk3lWaXu07qwPINPwA77RyN9k+ SoTj+nV/uM9Gi/QjnLQ7+lo0Uthkofs+vCmlidmVBtUg92mhjrFBjKx7QM30ilvZhpww HCAaMuOA57YA5NfXTxDnbn/pBWFQS7CmVid3u2hJofA3o9wnuB526/Otv0wU2+duHafu Un/pndkJhlnkH1yoPqRlQwwGnZ1VNAzP6UNqqYuechqKNUctrk7jpGP+RrFvZnT2180Z CXGA== X-Gm-Message-State: AOJu0Yxa3JaKxwBtui8xaiHrN2iHI+T85EkcwWGWoN/CL/vPAXOeB/OD mYPY4IqaK5KExxm2ROg42FZB7NE26XQj X-Google-Smtp-Source: AGHT+IEsAVlBTwGZ7ziWvgc6FwF/HT9K6tvmNBgK2P9cQm1dvRjoPsePPlgY59WtAUfso5g+XRb/bQ== X-Received: by 2002:a17:906:59:b0:a2a:f391:e5a4 with SMTP id 25-20020a170906005900b00a2af391e5a4mr666700ejg.142.1704990418670; Thu, 11 Jan 2024 08:26:58 -0800 (PST) Received: from [10.137.0.18] (srv1.mobissw.com. [89.235.0.226]) by smtp.gmail.com with ESMTPSA id p10-20020a17090635ca00b00a2699b0fd49sm760939ejb.86.2024.01.11.08.26.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 11 Jan 2024 08:26:57 -0800 (PST) Content-Type: multipart/mixed; boundary="------------04bDZ9og1eK4R6g8Y06g4sJM" Message-ID: <09613730-5ee9-4cc3-82d8-f089be90aa64@enterprisedb.com> Date: Thu, 11 Jan 2024 17:26:56 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: logical decoding and replication of sequences, take 2 From: Tomas Vondra To: Amit Kapila , Ashutosh Bapat Cc: Dilip Kumar , "Hayato Kuroda (Fujitsu)" , "Zhijie Hou (Fujitsu)" , PostgreSQL Hackers , Masahiko Sawada , Peter Eisentraut References: <8a2f25d8-23d4-4ab8-2a23-7c8d2d976209@enterprisedb.com> <577ec4fc-62c5-cb4a-de0f-66dee8232d00@enterprisedb.com> Content-Language: en-US In-Reply-To: <577ec4fc-62c5-cb4a-de0f-66dee8232d00@enterprisedb.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------04bDZ9og1eK4R6g8Y06g4sJM Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, Here's new version of this patch series. It rebases the 2023/12/03 version, and there's a couple improvements to address the performance and correctness questions. Since the 2023/12/03 version was posted, there were a couple off-list discussions with several people - with Amit, as mentioned in [1], and then also internally and at pgconf.eu. My personal (very brief) takeaway from these discussions is this: 1) desirability: We want a built-in way to handle sequences in logical replication. I think everyone agrees this is not a way to do distributed sequences in an active-active setups, but that there are other use cases that need this feature - typically upgrades / logical failover. Multiple approaches were discussed (support in logical replication or a separate tool to be executed on the logical replica). Both might work, people usually end up with some sort of custom tool anyway. But it's cumbersome, and the consensus seems the logical rep feature is better. 2) performance: There was concern about the performance impact, and that it affects everyone, including those who don't replicate sequences (as the overhead is mostly incurred before calls to output plugin etc.). I do agree with this, but I don't think sequences can be decoded in a much cheaper way. There was a proposal [2] that maybe we could batch the non-transactional sequences changes in the "next" transaction, and distribute them similarly to SnapBuildDistributeNewCatalogSnapshot() distributes catalog snapshots. But I doubt that'd actually work. Or more precisely - if we can make the code work, I think it would not solve the issue for some common cases. Consider for example a case with many concurrent top-level transactions, making this quite expensive. And I'd bet sequence changes are far more common than catalog changes. However, I think we ultimately agreed that the overhead is acceptable if it only applies to use cases that actually need to decode sequences. So if there was a way to skip sequence decoding when not necessary, that would work. Unfortunately, that can't be based on simply checking which callbacks are defined by the output plugin, because e.g. pgoutput needs to handle both cases (so the callbacks need to be defined). Nor it can be determined based on what's included in the publication (as that's not available that early). The agreement was that the best way is to have a CREATE SUBSCRIPTION option that would instruct the upstream to decode sequences. By default this option is 'off' (because that's the no-overhead case), but it can be enabled for each subscription. This is what 0005 implements, and interestingly enough, this is what an earlier version [3] from 2023/04/02 did. This means that if you add a sequence to the publication, but leave "sequences=off" in CREATE SUBSCRIPTION, the sequence won't be replicated after all. That may seems a bit surprising, and I don't like it, but I don't think there's a better way to do this. 3) correctness: The last point is about making "transactional" flag correct when the snapshot state changes mid-transaction, originally pointed out by Dilip [4]. Per [5] this however happens to work correctly, because while we identify the change as 'non-transactional' (which is incorrect), we immediately throw it again (so we don't try to apply it, which would error-out). One option would be to document/describe this in the comments, per 0006. This means that when ReorderBufferSequenceIsTransactional() returns true, it's correct. But if it returns 'false', it means 'maybe'. I agree it seems a bit strange, but with the extra comments I think it's OK. It simply means that if we get transactional=false incorrectly, we're guaranteed to not process it. Maybe we could rename the function to make this clear from the name. The other solution proposed in the thread [6] was to always decode the relfilenode, and add it to the hash table. 0007 does this, and it works. But I agree this seems possibly worse than 0006 - it means we may be adding entries to the hash table, and it's not clear when exactly we'll clean them up etc. It'd be the only place processing stuff before the snapshots reaches FULL. I personally would go with 0006, i.e. just explaining why doing it this way is correct. regards [1] https://www.postgresql.org/message-id/12822961-b7de-9d59-dd27-2e3dc3980c7e%40enterprisedb.com [2] https://www.postgresql.org/message-id/CAFiTN-vm3-bGfm-uJdzRLERMHozW8xjZHu4rdmtWR-rP-SJYMQ%40mail.gmail.com [3] https://www.postgresql.org/message-id/1f96b282-cb90-8302-cee8-7b3f5576a31c%40enterprisedb.com [4] https://www.postgresql.org/message-id/CAFiTN-vAx-Y%2B19ROKOcWnGf7ix2VOTUebpzteaGw9XQyCAeK6g%40mail.gmail.com [5] https://www.postgresql.org/message-id/CAA4eK1LFise9iN%2BNN%3Dagrk4prR1qD%2BebvzNjKAWUog2%2Bhy3HxQ%40mail.gmail.com [6] https://www.postgresql.org/message-id/CAFiTN-sYpyUBabxopJysqH3DAp4OZUCTi6m_qtgt8d32vDcWSA%40mail.gmail.com -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------04bDZ9og1eK4R6g8Y06g4sJM Content-Type: text/x-patch; charset=UTF-8; name="v20240111-0001-Logical-decoding-of-sequences.patch" Content-Disposition: attachment; filename="v20240111-0001-Logical-decoding-of-sequences.patch" Content-Transfer-Encoding: base64 RnJvbSBkOWQ5ZDIzZjJlMDU2Nzg1NTA3YWI1MWYxZWFlMzdhZTU2M2IxNTc5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAyIE5vdiAyMDIzIDE1OjAzOjEzICswMTAwClN1Ympl Y3Q6IFtQQVRDSCB2MjAyNDAxMTEgMS83XSBMb2dpY2FsIGRlY29kaW5nIG9mIHNlcXVlbmNl cwoKRXh0ZW5kIHRoZSBsb2dpY2FsIGRlY29kaW5nIHRvIGFsbG93IGRlY29kaW5nIHNlcXVl bmNlIGNoYW5nZXMuCgpFYWNoIHNlcXVlbmNlIGNoYW5nZSBpcyBlaXRoZXIgdHJhbnNhY3Rp b25hbCBvciBub24tdHJhbnNhY3Rpb25hbCwKZGVwZW5kaW5nIG9uIHdoYXQgd2hldGhlciB0 aGUgc2VxdWVuY2UgcmVsZmlsZW5vZGUgaXMgdmlzaWJsZSBvdXRzaWRlCnRoZSB0cmFuc2Fj dGlvbi4KCldoZW4gYSB0cmFuc2FjdGlvbiBjcmVhdGVzIGEgbmV3IHJlbGZpbGVub2RlIHRv IHRoZSBzZXF1ZW5jZSAodXN1YWxseQpiZWNhdXNlIG9mIENSRUFURSBTRVFVRU5DRSBvciBB TFRFUiBTRVFVRU5DRSksIGFsbCBzdWJzZXF1ZW50IHNlcXVlbmNlCmNoYW5nZXMgYXJlIHRy ZWF0ZWQgYXMgdHJhbnNhY3Rpb25hbCAtIHF1ZXVlZCBqdXN0IGxpa2Ugb3RoZXIgY2hhbmdl cyBpbgp0aGUgdHJhbnNhY3Rpb24sIGFuZCBlaXRoZXIgcmVwbGF5ZWQgYXQgY29tbWl0IHRp bWUgb3IgZGlzY2FyZGVkIGlmIHRoZQp0cmFuc2FjdGlvbiBhYm9ydHMuCgpBbGwgb3RoZXIg c2VxdWVuY2UgY2hhbmdlcywgcGVyZm9ybWVkIG9uIHNlcXVlbmNlcyAvIHJlbGZpbGVub2Rl cwpjcmVhdGVkIGJ5IGVhcmxpZXIgdHJhbnNhY3Rpb25zLCBhcmUgbm9uLXRyYW5zYWN0aW9u YWwuIFRoZXNlIGNoYW5nZXMKYXJlIG5vdCBxdWV1ZWQgYnV0IHJlcGxheWVkIGltbWVkaWF0 ZWx5IGFmdGVyIGRlY29kaW5nLiBUaGlzIGFsc28gbWVhbnMKdGhlc2UgY2hhbmdlcyBhcmUg bm90IHN1YmplY3QgdG8gYWJvcnQuCgpUaGlzIG1peGVkIGJlaGF2aW9yIGlzIG5lY2Vzc2Fy eSwgYW5kIGlzIGNvbnNpc3RlbnQgd2l0aCBob3cgc2VxdWVuY2VzCmJlaGF2ZSBpbiBnZW5l cmFsIC0gY2FsbGluZyBuZXh0dmFsKHMpIG1ha2VzIHRoZSBjaGFuZ2UgdmlzaWJsZSB0bwpj b25jdXJyZW50IHRyYW5zYWN0aW9ucywgYW5kIGNhbid0IGJlIHJvbGxlZCBiYWNrLiBCdXQg aWYgRERMIGlzCnBlcmZvcm1lZCBvbiBhIHNlcXVlbmNlLCBjaGFuZ2VzIGJlY29tZSB0cmFu c2FjdGlvbmFsIC0gaW52aXNpYmxlIHRvCmNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zIHVudGls IGNvbW1pdCwgYW5kIHN1YmplY3QgdG8gYWJvcnQuCgpUbyBpZGVudGlmeSBjaGFuZ2VzIHRo YXQgbmVlZCB0cmFuc2FjdGlvbmFsIGhhbmRsaW5nLCBlYWNoIHRyYW5zYWN0aW9uCnRyYWNr cyByZWxmaWxlbm9kZXMgaXQgY3JlYXRlZCBpbiBhIGhhc2ggdGFibGUuIFRoZW4gd2hlbiBh IGNoYW5nZSBpcwpkZWNvZGVkLCB0aGlzIGhhc2ggdGFibGUgaXMgdXNlZCB0byBjaGVjayBp ZiB0aGUgcmVsZmlsZW5vZGUgaXMgbmV3LgoKRm9yIGVhY2ggcmVsZmlsZW5vZGUgd2UgdHJh Y2sgdGhlIFhJRCBvZiAoc3ViKXRyYW5zYWN0aW9uIHRoYXQgY3JlYXRlZAppdCwgd2hpY2gg aXMgbmVlZGVkIGZvciBjbGVhbnVwIGF0IHRoZSB0cmFuc2FjdGlvbiBlbmQuIFdlIGRvbid0 IG5lZWQgdG8KY2hlY2sgdGhlIFhJRCB0byBkZWNpZGUgaWYgYW4gaW5jcmVtZW50IGlzIHRy YW5zYWN0aW9uYWwgLSBpZiB3ZSBmaW5kIGEKbWF0Y2ggaW4gdGhlIGhhc2ggdGFibGUsIGl0 IGhhcyB0byBiZSB0aGUgc2FtZSB0cmFuc2FjdGlvbi4KClRoaXMgcmVxdWlyZXMgb25seSBt aW5vciBjaGFuZ2VzIHRvIFdBTC1sb2dnaW5nLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGUKc2Vx dWVuY2UgcmVjb3JkIGlzIGFsd2F5cyBhc3NvY2lhdGVkIHdpdGggdGhlIHN1YnhhY3QgWElE IC0gdW50aWwgbm93CnRoZSBjaGFuZ2UgbWlnaHQgaGF2ZSBYSUQgMCBpZiBpdCB3YXMgdGhl IGZpcnN0IGNoYW5nZSBpbiBhIHN1YnhhY3QuIEJ1dAp0aGUgc2VxdWVuY2UgbWlnaHQgaGF2 ZSBiZWVuIGNyZWF0ZWQgaW4gdGhlIHNhbWUgdG9wLWxldmVsIHRyYW5zYWN0aW9uLAppbiB3 aGljaCBjYXNlIGl0IHN0aWxsIG5lZWRzIHRyYW5zYWN0aW9uYWwgdHJlYXRtZW50LiBTbyB3 ZSBlbnN1cmUgdGhlClhJRCBpcyBhc3NpZ25lZCB3aGVuIFdBTC1sb2dnaW5nIHNlcXVlbmNl IGNoYW5nZXMsIGlmIHdhbF9sZXZlbD1sb2dpY2FsLgoKQSBwYXRjaCBhZGRpbmcgZGVjb2Rp bmcgb2Ygc2VxdWVuY2VzIHdhcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCBieSBDYXJ5Ckh1YW5n LiBUaGlzIGNvbW1pdCByZXdvcmtzIG1hbnkgaW1wb3J0YW50IGFzcGVjdHMgKGUuZy4gdGhl IFdBTCBsb2dnaW5nCmFuZCB0cmFuc2FjdGlvbmFsL25vbi10cmFuc2FjdGlvbmFsIGhhbmRs aW5nKS4gSG93ZXZlciwgdGhlIG9yaWdpbmFsCnBhdGNoIGFuZCByZXZpZXdzIHdlcmUgdmVy eSB1c2VmdWwuCgpBdXRob3I6IFRvbWFzIFZvbmRyYSwgQ2FyeSBIdWFuZwpSZXZpZXdlZC1i eTogQXNodXRvc2ggQmFwYXQsIEFtaXQgS2FwaWxhLCBQZXRlciBFaXNlbnRyYXV0LCBIYW5u dQpLcm9zaW5nLCBBbmRyZXMgRnJldW5kLCBaaGlqaWUgSG91LCBQZXRlciBTbWl0aApEaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2QwNDVmM2MyLTZjZmItMDZkMy01NTQwLWU2 M2MzMjBkZjhiY0BlbnRlcnByaXNlZGIuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vMTcxMGVkN2UxM2IuY2Q3MTc3NDYxNDMwNzQ2LjMzNzIyNjQ1NjI1NDM2MDc3ODFA aGlnaGdvLmNhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNzZlNWZjZDgtODA3 Mi04ZWEyLWQzNjEtMmU4MTE5NDEwMDBjQGVudGVycHJpc2VkYi5jb20KLS0tCiBkb2Mvc3Jj L3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwgICAgICAgICAgICAgfCAgNjIgKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8ICA4OSArKysKIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8IDIyOCArKysr Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jICAgICB8IDEw MCArKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8 IDczOCArKysrKysrKysrKysrKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5o ICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGVj b2RlLmggICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWwuaCAgICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9v dXRwdXRfcGx1Z2luLmggICAgICAgfCAgMjMgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v cmVvcmRlcmJ1ZmZlci5oICAgICAgIHwgIDQyICsKIHNyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAxMSBmaWxlcyBjaGFuZ2VkLCAxMjgy IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rp bmcuc2dtbAppbmRleCBjZDE1MmQ0Y2VkOS4uOTBlOTlhOTUxMjggMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9n aWNhbGRlY29kaW5nLnNnbWwKQEAgLTQ4OCw2ICs0ODgsNyBAQCB0eXBlZGVmIHN0cnVjdCBP dXRwdXRQbHVnaW5DYWxsYmFja3MKICAgICBMb2dpY2FsRGVjb2RlVHJ1bmNhdGVDQiB0cnVu Y2F0ZV9jYjsKICAgICBMb2dpY2FsRGVjb2RlQ29tbWl0Q0IgY29tbWl0X2NiOwogICAgIExv Z2ljYWxEZWNvZGVNZXNzYWdlQ0IgbWVzc2FnZV9jYjsKKyAgICBMb2dpY2FsRGVjb2RlU2Vx dWVuY2VDQiBzZXF1ZW5jZV9jYjsKICAgICBMb2dpY2FsRGVjb2RlRmlsdGVyQnlPcmlnaW5D QiBmaWx0ZXJfYnlfb3JpZ2luX2NiOwogICAgIExvZ2ljYWxEZWNvZGVTaHV0ZG93bkNCIHNo dXRkb3duX2NiOwogICAgIExvZ2ljYWxEZWNvZGVGaWx0ZXJQcmVwYXJlQ0IgZmlsdGVyX3By ZXBhcmVfY2I7CkBAIC01MDIsNiArNTAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0UGx1 Z2luQ2FsbGJhY2tzCiAgICAgTG9naWNhbERlY29kZVN0cmVhbUNvbW1pdENCIHN0cmVhbV9j b21taXRfY2I7CiAgICAgTG9naWNhbERlY29kZVN0cmVhbUNoYW5nZUNCIHN0cmVhbV9jaGFu Z2VfY2I7CiAgICAgTG9naWNhbERlY29kZVN0cmVhbU1lc3NhZ2VDQiBzdHJlYW1fbWVzc2Fn ZV9jYjsKKyAgICBMb2dpY2FsRGVjb2RlU3RyZWFtU2VxdWVuY2VDQiBzdHJlYW1fc2VxdWVu Y2VfY2I7CiAgICAgTG9naWNhbERlY29kZVN0cmVhbVRydW5jYXRlQ0Igc3RyZWFtX3RydW5j YXRlX2NiOwogfSBPdXRwdXRQbHVnaW5DYWxsYmFja3M7CiAKQEAgLTUxMCwxMCArNTEyLDEz IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxPdXRwdXRQbHVnaW5Jbml0KSAoc3RydWN0IE91 dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpOwogICAgICBUaGUgPGZ1bmN0aW9uPmJlZ2luX2Ni PC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5jaGFuZ2VfY2I8L2Z1bmN0aW9uPgogICAgICBhbmQg PGZ1bmN0aW9uPmNvbW1pdF9jYjwvZnVuY3Rpb24+IGNhbGxiYWNrcyBhcmUgcmVxdWlyZWQs CiAgICAgIHdoaWxlIDxmdW5jdGlvbj5zdGFydHVwX2NiPC9mdW5jdGlvbj4sIDxmdW5jdGlv bj50cnVuY2F0ZV9jYjwvZnVuY3Rpb24+LAotICAgICA8ZnVuY3Rpb24+bWVzc2FnZV9jYjwv ZnVuY3Rpb24+LCA8ZnVuY3Rpb24+ZmlsdGVyX2J5X29yaWdpbl9jYjwvZnVuY3Rpb24+LAor ICAgICA8ZnVuY3Rpb24+bWVzc2FnZV9jYjwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+c2VxdWVu Y2VfY2I8L2Z1bmN0aW9uPiwKKyAgICAgPGZ1bmN0aW9uPmZpbHRlcl9ieV9vcmlnaW5fY2I8 L2Z1bmN0aW9uPiwKICAgICAgYW5kIDxmdW5jdGlvbj5zaHV0ZG93bl9jYjwvZnVuY3Rpb24+ IGFyZSBvcHRpb25hbC4KICAgICAgSWYgPGZ1bmN0aW9uPnRydW5jYXRlX2NiPC9mdW5jdGlv bj4gaXMgbm90IHNldCBidXQgYQogICAgICA8Y29tbWFuZD5UUlVOQ0FURTwvY29tbWFuZD4g aXMgdG8gYmUgZGVjb2RlZCwgdGhlIGFjdGlvbiB3aWxsIGJlIGlnbm9yZWQuCisgICAgIFNp bWlsYXJseSwgaWYgPGZ1bmN0aW9uPnNlcXVlbmNlX2NiPC9mdW5jdGlvbj4gaXMgbm90IHNl dCBhbmQgYSBzZXF1ZW5jZQorICAgICBjaGFuZ2UgaXMgdG8gYmUgZGVjb2RlZCwgdGhlIGFj dGlvbiB3aWxsIGJlIGlnbm9yZWQuCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC01 MjEsNyArNTI2LDggQEAgdHlwZWRlZiB2b2lkICgqTG9naWNhbE91dHB1dFBsdWdpbkluaXQp IChzdHJ1Y3QgT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYik7CiAgICAgIGluLXByb2dyZXNz IHRyYW5zYWN0aW9ucy4gVGhlIDxmdW5jdGlvbj5zdHJlYW1fc3RhcnRfY2I8L2Z1bmN0aW9u PiwKICAgICAgPGZ1bmN0aW9uPnN0cmVhbV9zdG9wX2NiPC9mdW5jdGlvbj4sIDxmdW5jdGlv bj5zdHJlYW1fYWJvcnRfY2I8L2Z1bmN0aW9uPiwKICAgICAgPGZ1bmN0aW9uPnN0cmVhbV9j b21taXRfY2I8L2Z1bmN0aW9uPiwgYW5kIDxmdW5jdGlvbj5zdHJlYW1fY2hhbmdlX2NiPC9m dW5jdGlvbj4KLSAgICAgYXJlIHJlcXVpcmVkLCB3aGlsZSA8ZnVuY3Rpb24+c3RyZWFtX21l c3NhZ2VfY2I8L2Z1bmN0aW9uPiBhbmQKKyAgICAgYXJlIHJlcXVpcmVkLCB3aGlsZSA8ZnVu Y3Rpb24+c3RyZWFtX21lc3NhZ2VfY2I8L2Z1bmN0aW9uPiwKKyAgICAgPGZ1bmN0aW9uPnN0 cmVhbV9zZXF1ZW5jZV9jYjwvZnVuY3Rpb24+IGFuZAogICAgICA8ZnVuY3Rpb24+c3RyZWFt X3RydW5jYXRlX2NiPC9mdW5jdGlvbj4gYXJlIG9wdGlvbmFsLiBUaGUKICAgICAgPGZ1bmN0 aW9uPnN0cmVhbV9wcmVwYXJlX2NiPC9mdW5jdGlvbj4gaXMgYWxzbyByZXF1aXJlZCBpZiB0 aGUgb3V0cHV0CiAgICAgIHBsdWdpbiBhbHNvIHN1cHBvcnQgdHdvLXBoYXNlIGNvbW1pdHMu CkBAIC04NDAsNiArODQ2LDM1IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVNZXNz YWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogICAgICA8L3Bh cmE+CiAgICAgPC9zZWN0Mz4KIAorICAgIDxzZWN0MyBpZD0ibG9naWNhbGRlY29kaW5nLW91 dHB1dC1wbHVnaW4tc2VxdWVuY2UiPgorICAgICA8dGl0bGU+U2VxdWVuY2UgQ2FsbGJhY2s8 L3RpdGxlPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIG9wdGlvbmFsIDxmdW5jdGlvbj5z ZXF1ZW5jZV9jYjwvZnVuY3Rpb24+IGNhbGxiYWNrIGlzIGNhbGxlZCBmb3IKKyAgICAgIGFj dGlvbnMgdGhhdCB1cGRhdGUgYSBzZXF1ZW5jZSB2YWx1ZS4KKzxwcm9ncmFtbGlzdGluZz4K K3R5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTZXF1ZW5jZUNCKSAoc3RydWN0IExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb24gcmVsLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRyYW5zYWN0aW9u YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0IHZh bHVlKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICBUaGUgPHBhcmFtZXRlcj50eG48L3Bh cmFtZXRlcj4gcGFyYW1ldGVyIGNvbnRhaW5zIG1ldGEgaW5mb3JtYXRpb24gYWJvdXQKKyAg ICAgIHRoZSB0cmFuc2FjdGlvbiB0aGUgc2VxdWVuY2UgY2hhbmdlIGlzIHBhcnQgb2YuIE5v dGUgaG93ZXZlciB0aGF0IGZvcgorICAgICAgbm9uLXRyYW5zYWN0aW9uYWwgdXBkYXRlcywg dGhlIHRyYW5zYWN0aW9uIG1heSBiZSBOVUxMLCBkZXBlbmRpbmcgb24KKyAgICAgIGlmIHRo ZSB0cmFuc2FjdGlvbiBhbHJlYWR5IGhhcyBhbiBYSUQgYXNzaWduZWQuCisgICAgICBUaGUg PHBhcmFtZXRlcj5zZXF1ZW5jZV9sc248L3BhcmFtZXRlcj4gaGFzIHRoZSBXQUwgbG9jYXRp b24gb2YgdGhlCisgICAgICBzZXF1ZW5jZSB1cGRhdGUuIDxwYXJhbWV0ZXI+dHJhbnNhY3Rp b25hbDwvcGFyYW1ldGVyPiBkZXRlcm1pbmVzIHdoZXRoZXIKKyAgICAgIHRoZSBzZXF1ZW5j ZSBoYXMgdG8gYmUgcmVwbGF5ZWQgYXMgcGFydCBvZiB0aGUgdHJhbnNhY3Rpb24gb3IgZGly ZWN0bHkuCisKKyAgICAgIFRoZSA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+IHBhcmFt ZXRlciBkZXNjcmliZXMgdGhlIHNlcXVlbmNlIGNoYW5nZS4KKyAgICAgIE5vdGUgdGhhdCB0 aGlzIG1heSBub3QgYmUgdGhlIHZhbHVlIG9idGFpbmVkIGJ5IHRoZSBwcm9jZXNzIHVwZGF0 aW5nIHRoZQorICAgICAgcHJvY2VzcywgYnV0IHRoZSBmdXR1cmUgc2VxdWVuY2UgdmFsdWUg d3JpdHRlbiB0byBXQUwgKHR5cGljYWxseSBhYm91dAorICAgICAgMzIgdmFsdWVzIGFoZWFk KS4KKyAgICAgPC9wYXJhPgorICAgIDwvc2VjdDM+CisKICAgICA8c2VjdDMgaWQ9ImxvZ2lj YWxkZWNvZGluZy1vdXRwdXQtcGx1Z2luLWZpbHRlci1wcmVwYXJlIj4KICAgICAgPHRpdGxl PlByZXBhcmUgRmlsdGVyIENhbGxiYWNrPC90aXRsZT4KIApAQCAtMTA1MSw2ICsxMDg2LDI0 IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0IpIChzdHJ1 Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4CiAgICAgIDwvcGFyYT4KICAgICA8L3Nl Y3QzPgogCisgICAgPHNlY3QzIGlkPSJsb2dpY2FsZGVjb2Rpbmctb3V0cHV0LXBsdWdpbi1z dHJlYW0tc2VxdWVuY2UiPgorICAgICA8dGl0bGU+U3RyZWFtIFNlcXVlbmNlIENhbGxiYWNr PC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgb3B0aW9uYWwgPGZ1bmN0aW9uPnN0 cmVhbV9zZXF1ZW5jZV9jYjwvZnVuY3Rpb24+IGNhbGxiYWNrIGlzIGNhbGxlZAorICAgICAg Zm9yIGFjdGlvbnMgdGhhdCBjaGFuZ2UgYSBzZXF1ZW5jZSBpbiBhIGJsb2NrIG9mIHN0cmVh bWVkIGNoYW5nZXMKKyAgICAgIChkZW1hcmNhdGVkIGJ5IDxmdW5jdGlvbj5zdHJlYW1fc3Rh cnRfY2I8L2Z1bmN0aW9uPiBhbmQKKyAgICAgIDxmdW5jdGlvbj5zdHJlYW1fc3RvcF9jYjwv ZnVuY3Rpb24+IGNhbGxzKS4KKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgdm9pZCAoKkxv Z2ljYWxEZWNvZGVTdHJlYW1TZXF1ZW5jZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb24gcmVs LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s IHRyYW5zYWN0aW9uYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludDY0IHZhbHVlKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgIDwvcGFy YT4KKyAgICA8L3NlY3QzPgorCiAgICAgPHNlY3QzIGlkPSJsb2dpY2FsZGVjb2Rpbmctb3V0 cHV0LXBsdWdpbi1zdHJlYW0tdHJ1bmNhdGUiPgogICAgICA8dGl0bGU+U3RyZWFtIFRydW5j YXRlIENhbGxiYWNrPC90aXRsZT4KICAgICAgPHBhcmE+CkBAIC0xMjMwLDggKzEyODMsOSBA QCBPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogICAgIGluLXByb2dyZXNzIHRyYW5z YWN0aW9ucy4gVGhlcmUgYXJlIG11bHRpcGxlIHJlcXVpcmVkIHN0cmVhbWluZyBjYWxsYmFj a3MKICAgICAoPGZ1bmN0aW9uPnN0cmVhbV9zdGFydF9jYjwvZnVuY3Rpb24+LCA8ZnVuY3Rp b24+c3RyZWFtX3N0b3BfY2I8L2Z1bmN0aW9uPiwKICAgICA8ZnVuY3Rpb24+c3RyZWFtX2Fi b3J0X2NiPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5zdHJlYW1fY29tbWl0X2NiPC9mdW5jdGlv bj4KLSAgICBhbmQgPGZ1bmN0aW9uPnN0cmVhbV9jaGFuZ2VfY2I8L2Z1bmN0aW9uPikgYW5k IHR3byBvcHRpb25hbCBjYWxsYmFja3MKLSAgICAoPGZ1bmN0aW9uPnN0cmVhbV9tZXNzYWdl X2NiPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5zdHJlYW1fdHJ1bmNhdGVfY2I8L2Z1bmN0 aW9uPikuCisgICAgYW5kIDxmdW5jdGlvbj5zdHJlYW1fY2hhbmdlX2NiPC9mdW5jdGlvbj4p IGFuZCB0aHJlZSBvcHRpb25hbCBjYWxsYmFja3MKKyAgICAoPGZ1bmN0aW9uPnN0cmVhbV9t ZXNzYWdlX2NiPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5zdHJlYW1fc2VxdWVuY2VfY2I8L2Z1 bmN0aW9uPiwKKyAgICBhbmQgPGZ1bmN0aW9uPnN0cmVhbV90cnVuY2F0ZV9jYjwvZnVuY3Rp b24+KS4KICAgICBBbHNvLCBpZiBzdHJlYW1pbmcgb2YgdHdvLXBoYXNlIGNvbW1hbmRzIGlz IHRvIGJlIHN1cHBvcnRlZCwgdGhlbiBhZGRpdGlvbmFsCiAgICAgY2FsbGJhY2tzIG11c3Qg YmUgcHJvdmlkZWQuIChTZWUgPHhyZWYgbGlua2VuZD0ibG9naWNhbGRlY29kaW5nLXR3by1w aGFzZS1jb21taXRzIi8+CiAgICAgZm9yIGRldGFpbHMpLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVl bmNlLmMKaW5kZXggZjc4MDM3NDRhNWIuLmFmMjdkOTZlY2Q3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3NlcXVlbmNlLmMKQEAgLTIwNCw2ICsyMDQsMTQgQEAgRGVmaW5lU2VxdWVuY2UoUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVTZXFTdG10ICpzZXEpCiAJc3RtdC0+dGFibGVzcGFjZW5h bWUgPSBOVUxMOwogCXN0bXQtPmlmX25vdF9leGlzdHMgPSBzZXEtPmlmX25vdF9leGlzdHM7 CiAKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGUgcmVsZmlsZW5vZGUgY3JlYXRpb24gKGluIERl ZmluZVJlbGF0aW9uKSBpcyBhc3NvY2lhdGVkCisJICogd2l0aCB0aGUgWElELCBzbyB0aGF0 IGRlY29kaW5nIG9mIHNlcXVlbmNlcyBjYW4gaGFuZGxlIHRoaXMgYXMgYQorCSAqIHRyYW5z YWN0aW9uYWwgY2hhbmdlLgorCSAqLworCWlmIChYTG9nTG9naWNhbEluZm9BY3RpdmUoKSkK KwkJR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKKwogCWFkZHJlc3MgPSBEZWZpbmVSZWxh dGlvbihzdG10LCBSRUxLSU5EX1NFUVVFTkNFLCBzZXEtPm93bmVySWQsIE5VTEwsIE5VTEwp OwogCXNlcW9pZCA9IGFkZHJlc3Mub2JqZWN0SWQ7CiAJQXNzZXJ0KHNlcW9pZCAhPSBJbnZh bGlkT2lkKTsKQEAgLTMwMiw2ICszMTAsMTMgQEAgUmVzZXRTZXF1ZW5jZShPaWQgc2VxX3Jl bGlkKQogCXNlcS0+aXNfY2FsbGVkID0gZmFsc2U7CiAJc2VxLT5sb2dfY250ID0gMDsKIAor CS8qCisJICogTWFrZSBzdXJlIHRoZSByZWxmaWxlbm9kZSBjcmVhdGlvbiBpcyBhc3NvY2lh dGVkIHdpdGggdGhlIFhJRCwgc28gdGhhdAorCSAqIGRlY29kaW5nIG9mIHNlcXVlbmNlcyBj YW4gaGFuZGxlIHRoaXMgYXMgYSB0cmFuc2FjdGlvbmFsIGNoYW5nZS4KKwkgKi8KKwlpZiAo WExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkpCisJCUdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7 CisKIAkvKgogCSAqIENyZWF0ZSBhIG5ldyBzdG9yYWdlIGZpbGUgZm9yIHRoZSBzZXF1ZW5j ZS4KIAkgKi8KQEAgLTM5Miw4ICs0MDcsMTkgQEAgZmlsbF9zZXFfZm9ya193aXRoX2RhdGEo UmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwbGUsIEZvcmtOdW1iZXIgZm9ya051bSkKIAog CS8qIGNoZWNrIHRoZSBjb21tZW50IGFib3ZlIG5leHR2YWxfaW50ZXJuYWwoKSdzIGVxdWl2 YWxlbnQgY2FsbC4gKi8KIAlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQorCXsKIAkJR2V0 VG9wVHJhbnNhY3Rpb25JZCgpOwogCisJCS8qCisJCSAqIE1ha2Ugc3VyZSB0aGUgc3VidHJh bnNhY3Rpb24gaGFzIGEgWElEIGFzc2lnbmVkLCBzbyB0aGF0IHRoZQorCQkgKiBzZXF1ZW5j ZSBjaGFuZ2UgV0FMIHJlY29yZCBpcyBwcm9wZXJseSBhc3NvY2lhdGVkIHdpdGggaXQuIFRo aXMKKwkJICogbWF0dGVycyBmb3Igc2VxdWVuY2VzIGNyZWF0ZWQvYWx0ZXJlZCBpbiBhIHRy YW5zYWN0aW9uIC0gdGhlCisJCSAqIHN1YnNlcXVlbnQgY2hhbmdlcyBuZWVkIHRvIGJlIGhh bmRsZWQgYXMgdHJhbnNhY3Rpb25hbC4KKwkJICovCisJCWlmIChYTG9nTG9naWNhbEluZm9B Y3RpdmUoKSkKKwkJCUdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CisJfQorCiAJU1RBUlRf Q1JJVF9TRUNUSU9OKCk7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmKTsKQEAgLTQxNyw2ICs0 NDMsOSBAQCBmaWxsX3NlcV9mb3JrX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBs ZSB0dXBsZSwgRm9ya051bWJlciBmb3JrTnVtKQogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFy ICopICZ4bHJlYywgc2l6ZW9mKHhsX3NlcV9yZWMpKTsKIAkJWExvZ1JlZ2lzdGVyRGF0YSgo Y2hhciAqKSB0dXBsZS0+dF9kYXRhLCB0dXBsZS0+dF9sZW4pOwogCisJCS8qIGFsbG93IGZp bHRlcmluZyBieSBvcmlnaW4gb24gYSBzZXF1ZW5jZSB1cGRhdGUgKi8KKwkJWExvZ1NldFJl Y29yZEZsYWdzKFhMT0dfSU5DTFVERV9PUklHSU4pOworCiAJCXJlY3B0ciA9IFhMb2dJbnNl cnQoUk1fU0VRX0lELCBYTE9HX1NFUV9MT0cpOwogCiAJCVBhZ2VTZXRMU04ocGFnZSwgcmVj cHRyKTsKQEAgLTQ5OSw2ICs1MjgsMTQgQEAgQWx0ZXJTZXF1ZW5jZShQYXJzZVN0YXRlICpw c3RhdGUsIEFsdGVyU2VxU3RtdCAqc3RtdCkKIAkJaWYgKFJlbGF0aW9uTmVlZHNXQUwoc2Vx cmVsKSkKIAkJCUdldFRvcFRyYW5zYWN0aW9uSWQoKTsKIAorCQkvKgorCQkgKiBNYWtlIHN1 cmUgdGhlIHJlbGZpbGVub2RlIGNyZWF0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgWElE LCBzbworCQkgKiB0aGF0IGRlY29kaW5nIG9mIHNlcXVlbmNlcyBjYW4gaGFuZGxlIHRoaXMg YXMgYSB0cmFuc2FjdGlvbmFsCisJCSAqIGNoYW5nZS4KKwkJICovCisJCWlmIChYTG9nTG9n aWNhbEluZm9BY3RpdmUoKSkKKwkJCUdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CisKIAkJ LyoKIAkJICogQ3JlYXRlIGEgbmV3IHN0b3JhZ2UgZmlsZSBmb3IgdGhlIHNlcXVlbmNlLCBt YWtpbmcgdGhlIHN0YXRlCiAJCSAqIGNoYW5nZXMgdHJhbnNhY3Rpb25hbC4KQEAgLTU0OCw4 ICs1ODUsMTkgQEAgU2VxdWVuY2VDaGFuZ2VQZXJzaXN0ZW5jZShPaWQgcmVsaWQsIGNoYXIg bmV3cmVscGVyc2lzdGVuY2UpCiAKIAkvKiBjaGVjayB0aGUgY29tbWVudCBhYm92ZSBuZXh0 dmFsX2ludGVybmFsKCkncyBlcXVpdmFsZW50IGNhbGwuICovCiAJaWYgKFJlbGF0aW9uTmVl ZHNXQUwoc2VxcmVsKSkKKwl7CiAJCUdldFRvcFRyYW5zYWN0aW9uSWQoKTsKIAorCQkvKgor CQkgKiBNYWtlIHN1cmUgdGhlIHN1YnRyYW5zYWN0aW9uIGhhcyBhIFhJRCBhc3NpZ25lZCwg c28gdGhhdCB0aGUKKwkJICogc2VxdWVuY2UgY2hhbmdlIFdBTCByZWNvcmQgaXMgcHJvcGVy bHkgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzCisJCSAqIG1hdHRlcnMgZm9yIHNlcXVlbmNl cyBjcmVhdGVkL2FsdGVyZWQgaW4gYSB0cmFuc2FjdGlvbiAtIHRoZQorCQkgKiBzdWJzZXF1 ZW50IGNoYW5nZXMgbmVlZCB0byBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwuCisJCSAq LworCQlpZiAoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkpCisJCQlHZXRDdXJyZW50VHJhbnNh Y3Rpb25JZCgpOworCX0KKwogCSh2b2lkKSByZWFkX3NlcV90dXBsZShzZXFyZWwsICZidWYs ICZzZXFkYXRhdHVwbGUpOwogCVJlbGF0aW9uU2V0TmV3UmVsZmlsZW51bWJlcihzZXFyZWws IG5ld3JlbHBlcnNpc3RlbmNlKTsKIAlmaWxsX3NlcV93aXRoX2RhdGEoc2VxcmVsLCAmc2Vx ZGF0YXR1cGxlKTsKQEAgLTc5MiwxMCArODQwLDM0IEBAIG5leHR2YWxfaW50ZXJuYWwoT2lk IHJlbGlkLCBib29sIGNoZWNrX3Blcm1pc3Npb25zKQogCSAqIEl0J3Mgc3VmZmljaWVudCB0 byBlbnN1cmUgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGhhcyBhbiB4aWQsIG5vIG5lZWQK IAkgKiB0byBhc3NpZ24geGlkcyBzdWJ4YWN0cywgdGhhdCdsbCBhbHJlYWR5IHRyaWdnZXIg YW4gYXBwcm9wcmlhdGUgd2FpdC4KIAkgKiAoSGF2ZSB0byBkbyB0aGF0IGhlcmUsIHNvIHdl J3JlIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24pCisJICoKKwkgKiBXZSBoYXZlIHRv IGVuc3VyZSB3ZSBoYXZlIGEgcHJvcGVyIFhJRCwgd2hpY2ggd2lsbCBiZSBpbmNsdWRlZCBp biB0aGUKKwkgKiBYTE9HIHJlY29yZCBieSBYTG9nUmVjb3JkQXNzZW1ibGUuIE90aGVyd2lz ZSB0aGUgZmlyc3QgbmV4dHZhbCgpIGluIGEKKwkgKiBzdWJ4YWN0ICh3aXRob3V0IGFueSBw cmVjZWRpbmcgY2hhbmdlcykgd291bGQgZ2V0IFhJRCAwLCBhbmQgaXQgd291bGQKKwkgKiB0 aGVuIGJlIGltcG9zc2libGUgdG8gZGVjaWRlIHdoaWNoIHRvcCB4YWN0IGl0IGJlbG9uZ3Mg dG8uIEl0J2QgYWxzbworCSAqIHRyaWdnZXIgYXNzZXJ0IGluIERlY29kZVNlcXVlbmNlLiBX ZSBvbmx5IGRvIHRoYXQgd2l0aAorCSAqIHdhbF9sZXZlbD1sb2dpY2FsLCB0aG91Z2guCisJ ICoKKwkgKiBYWFggVGhpcyBtaWdodCBzZWVtIHVubmVjZXNzYXJ5LCBiZWNhdXNlIGlmIHRo ZXJlJ3Mgbm8gWElEIHRoZSB4YWN0CisJICogY291bGRuJ3QgaGF2ZSBkb25lIGFueXRoaW5n IGltcG9ydGFudCB5ZXQsIGUuZy4gaXQgY291bGQgbm90IGhhdmUKKwkgKiBjcmVhdGVkIGEg c2VxdWVuY2UuIEJ1dCB0aGF0J3MgaW5jb3JyZWN0LCBiZWNhdXNlIG9mIHN1YnhhY3RzLiBU aGUKKwkgKiBjdXJyZW50IHN1YnRyYW5zYWN0aW9uIG1pZ2h0IG5vdCBoYXZlIGRvbmUgYW55 dGhpbmcgeWV0ICh0aHVzIG5vIFhJRCksCisJICogYnV0IGFuIGVhcmxpZXIgb25lIG1pZ2h0 IGhhdmUgY3JlYXRlZCB0aGUgc2VxdWVuY2UuCiAJICovCiAJaWYgKGxvZ2l0ICYmIFJlbGF0 aW9uTmVlZHNXQUwoc2VxcmVsKSkKKwl7CiAJCUdldFRvcFRyYW5zYWN0aW9uSWQoKTsKIAor CQkvKgorCQkgKiBNYWtlIHN1cmUgdGhlIHN1YnRyYW5zYWN0aW9uIGhhcyBhIFhJRCBhc3Np Z25lZCwgc28gdGhhdCB0aGUKKwkJICogc2VxdWVuY2UgY2hhbmdlIFdBTCByZWNvcmQgaXMg cHJvcGVybHkgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzCisJCSAqIG1hdHRlcnMgZm9yIHNl cXVlbmNlcyBjcmVhdGVkL2FsdGVyZWQgaW4gYSB0cmFuc2FjdGlvbiAtIHRoZQorCQkgKiBz dWJzZXF1ZW50IGNoYW5nZXMgbmVlZCB0byBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwu CisJCSAqLworCQlpZiAoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkpCisJCQlHZXRDdXJyZW50 VHJhbnNhY3Rpb25JZCgpOworCX0KKwogCS8qIHJlYWR5IHRvIGNoYW5nZSB0aGUgb24tZGlz ayAob3IgcmVhbGx5LCBpbi1idWZmZXIpIHR1cGxlICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9O KCk7CiAKQEAgLTgzNSw2ICs5MDcsOSBAQCBuZXh0dmFsX2ludGVybmFsKE9pZCByZWxpZCwg Ym9vbCBjaGVja19wZXJtaXNzaW9ucykKIAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAm eGxyZWMsIHNpemVvZih4bF9zZXFfcmVjKSk7CiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIg Kikgc2VxZGF0YXR1cGxlLnRfZGF0YSwgc2VxZGF0YXR1cGxlLnRfbGVuKTsKIAorCQkvKiBh bGxvdyBmaWx0ZXJpbmcgYnkgb3JpZ2luIG9uIGEgc2VxdWVuY2UgdXBkYXRlICovCisJCVhM b2dTZXRSZWNvcmRGbGFncyhYTE9HX0lOQ0xVREVfT1JJR0lOKTsKKwogCQlyZWNwdHIgPSBY TG9nSW5zZXJ0KFJNX1NFUV9JRCwgWExPR19TRVFfTE9HKTsKIAogCQlQYWdlU2V0TFNOKHBh Z2UsIHJlY3B0cik7CkBAIC05OTYsOCArMTA3MSwxOSBAQCBkb19zZXR2YWwoT2lkIHJlbGlk LCBpbnQ2NCBuZXh0LCBib29sIGlzY2FsbGVkKQogCiAJLyogY2hlY2sgdGhlIGNvbW1lbnQg YWJvdmUgbmV4dHZhbF9pbnRlcm5hbCgpJ3MgZXF1aXZhbGVudCBjYWxsLiAqLwogCWlmIChS ZWxhdGlvbk5lZWRzV0FMKHNlcXJlbCkpCisJewogCQlHZXRUb3BUcmFuc2FjdGlvbklkKCk7 CiAKKwkJLyoKKwkJICogTWFrZSBzdXJlIHRoZSBzdWJ0cmFuc2FjdGlvbiBoYXMgYSBYSUQg YXNzaWduZWQsIHNvIHRoYXQgdGhlCisJCSAqIHNlcXVlbmNlIGNoYW5nZSBXQUwgcmVjb3Jk IGlzIHByb3Blcmx5IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcworCQkgKiBtYXR0ZXJzIGZv ciBzZXF1ZW5jZXMgY3JlYXRlZC9hbHRlcmVkIGluIGEgdHJhbnNhY3Rpb24gLSB0aGUKKwkJ ICogc3Vic2VxdWVudCBjaGFuZ2VzIG5lZWQgdG8gYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlv bmFsLgorCQkgKi8KKwkJaWYgKFhMb2dMb2dpY2FsSW5mb0FjdGl2ZSgpKQorCQkJR2V0Q3Vy cmVudFRyYW5zYWN0aW9uSWQoKTsKKwl9CisKIAkvKiByZWFkeSB0byBjaGFuZ2UgdGhlIG9u LWRpc2sgKG9yIHJlYWxseSwgaW4tYnVmZmVyKSB0dXBsZSAqLwogCVNUQVJUX0NSSVRfU0VD VElPTigpOwogCkBAIC0xMDIxLDYgKzExMDcsOSBAQCBkb19zZXR2YWwoT2lkIHJlbGlkLCBp bnQ2NCBuZXh0LCBib29sIGlzY2FsbGVkKQogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICop ICZ4bHJlYywgc2l6ZW9mKHhsX3NlcV9yZWMpKTsKIAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hh ciAqKSBzZXFkYXRhdHVwbGUudF9kYXRhLCBzZXFkYXRhdHVwbGUudF9sZW4pOwogCisJCS8q IGFsbG93IGZpbHRlcmluZyBieSBvcmlnaW4gb24gYSBzZXF1ZW5jZSB1cGRhdGUgKi8KKwkJ WExvZ1NldFJlY29yZEZsYWdzKFhMT0dfSU5DTFVERV9PUklHSU4pOworCiAJCXJlY3B0ciA9 IFhMb2dJbnNlcnQoUk1fU0VRX0lELCBYTE9HX1NFUV9MT0cpOwogCiAJCVBhZ2VTZXRMU04o cGFnZSwgcmVjcHRyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jCmluZGV4IGIzZjhmOTA4ZDE4Li4zNDYyYzU0NWJiNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2dyZWNvcmQuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9z dG9yYWdlX3hsb2cuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZWNvZGUuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbWVz c2FnZS5oIgpAQCAtNDIsNiArNDMsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Jlb3Jk ZXJidWZmZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbmFwYnVpbGQuaCIKICNpbmNs dWRlICJzdG9yYWdlL3N0YW5kYnkuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5o IgogCiAvKiBpbmRpdmlkdWFsIHJlY29yZChncm91cCkncyBoYW5kbGVycyAqLwogc3RhdGlj IHZvaWQgRGVjb2RlSW5zZXJ0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1Jl Y29yZEJ1ZmZlciAqYnVmKTsKQEAgLTYzLDYgKzY1LDcgQEAgc3RhdGljIHZvaWQgRGVjb2Rl UHJlcGFyZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIg KmJ1ZiwKIAogLyogY29tbW9uIGZ1bmN0aW9uIHRvIGRlY29kZSB0dXBsZXMgKi8KIHN0YXRp YyB2b2lkIERlY29kZVhMb2dUdXBsZShjaGFyICpkYXRhLCBTaXplIGxlbiwgUmVvcmRlckJ1 ZmZlclR1cGxlQnVmICp0dXBsZSk7CitzdGF0aWMgdm9pZCBEZWNvZGVTZXFUdXBsZShjaGFy ICpkYXRhLCBTaXplIGxlbiwgUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXBsZSk7CiAKIC8q IGhlbHBlciBmdW5jdGlvbnMgZm9yIGRlY29kaW5nIHRyYW5zYWN0aW9ucyAqLwogc3RhdGlj IGlubGluZSBib29sIEZpbHRlclByZXBhcmUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LApAQCAtNjI5LDcgKzYzMiw3IEBAIGxvZ2ljYWxtc2dfZGVjb2RlKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkgKiBXZSBuZWVkIHRv IHNldCBwcm9jZXNzaW5nX3JlcXVpcmVkIGZsYWcgdG8gbm90aWZ5IHRoZSBtZXNzYWdlJ3MK IAkJICogZXhpc3RlbmNlIHRvIHRoZSBjYWxsZXIuIFVzdWFsbHksIHRoZSBmbGFnIGlzIHNl dCB3aGVuIGVpdGhlciB0aGUKIAkJICogQ09NTUlUIG9yIEFCT1JUIHJlY29yZHMgYXJlIGRl Y29kZWQsIGJ1dCB0aGlzIG11c3QgYmUgdHVybmVkIG9uCi0JCSAqIGhlcmUgYmVjYXVzZSB0 aGUgbm9uLXRyYW5zYWN0aW9uYWwgbG9naWNhbCBtZXNzYWdlIGlzIGRlY29kZWQKKwkJICog aGVyZSBiZWNhdXNlIHRoZSBub24tdHJhbnNhY3Rpb25hbCBzZXF1ZW5jZSBjaGFuZ2UgaXMg ZGVjb2RlZAogCQkgKiB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZXNlIHJlY29yZHMuCiAJCSAq LwogCQlpZiAoIW1lc3NhZ2UtPnRyYW5zYWN0aW9uYWwpCkBAIC0xMzIwLDMgKzEzMjMsMjI2 IEBAIERlY29kZVRYTk5lZWRTa2lwKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExv Z1JlY29yZEJ1ZmZlciAqYnVmLAogCiAJcmV0dXJuIGZhbHNlOwogfQorCisvKgorICogRGVj b2RlU2VxVHVwbGUKKyAqCQlkZWNvZGUgdHVwbGUgZGVzY3JpYmluZyB0aGUgc2VxdWVuY2Ug Y2hhbmdlCisgKgorICogU2VxdWVuY2VzIGFyZSByZXByZXNlbnRlZCBhcyBhIHRhYmxlIHdp dGggYSBzaW5nbGUgcm93LCB3aGljaCBnZXRzIHVwZGF0ZWQgYnkKKyAqIG5leHR2YWwoKSBl dGMuIFRoZSB0dXBsZSBpcyBzdG9yZWQgaW4gV0FMIHJpZ2h0IGFmdGVyIHRoZSB4bF9zZXFf cmVjLCBzbyB3ZQorICogc2ltcGx5IGNvcHkgaXQgaW50byB0aGUgdHVwbGVidWYgKHNpbWls YXIgdG8gc2VxX3JlZG8pLgorICovCitzdGF0aWMgdm9pZAorRGVjb2RlU2VxVHVwbGUoY2hh ciAqZGF0YSwgU2l6ZSBsZW4sIFJlb3JkZXJCdWZmZXJUdXBsZUJ1ZiAqdHVwbGUpCit7CisJ aW50CQkJZGF0YWxlbiA9IGxlbiAtIHNpemVvZih4bF9zZXFfcmVjKSAtIFNpemVvZkhlYXBU dXBsZUhlYWRlcjsKKworCUFzc2VydChkYXRhbGVuID49IDApOworCisJdHVwbGUtPnR1cGxl LnRfbGVuID0gZGF0YWxlbiArIFNpemVvZkhlYXBUdXBsZUhlYWRlcjsKKworCUl0ZW1Qb2lu dGVyU2V0SW52YWxpZCgmdHVwbGUtPnR1cGxlLnRfc2VsZik7CisKKwl0dXBsZS0+dHVwbGUu dF90YWJsZU9pZCA9IEludmFsaWRPaWQ7CisKKwltZW1jcHkoKChjaGFyICopIHR1cGxlLT50 dXBsZS50X2RhdGEpLAorCQkgICBkYXRhICsgc2l6ZW9mKHhsX3NlcV9yZWMpLAorCQkgICBT aXplb2ZIZWFwVHVwbGVIZWFkZXIgKyBkYXRhbGVuKTsKK30KKworLyoKKyAqIEhhbmRsZSBz ZXF1ZW5jZSBkZWNvZGUKKyAqCisgKiBEZWNvZGluZyBzZXF1ZW5jZXMgaXMgYSBiaXQgdHJp Y2t5LCBiZWNhdXNlIHdoaWxlIG1vc3Qgc2VxdWVuY2UgYWN0aW9ucworICogYXJlIG5vbi10 cmFuc2FjdGlvbmFsIChpbW1lZGlhdGVseSB2aXNpYmxlIGFuZCBub3Qgc3ViamVjdCB0byBy b2xsYmFjayksCisgKiBzb21lIG5lZWQgdG8gYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFs IChlLmcuIGZvciBzZXF1ZW5jZXMgY3JlYXRlZCBpbgorICogYSB0cmFuc2FjdGlvbiBhcmUg aW52aXNpYmxlIHVudGlsIHRoYXQgdHJhbnNhY3Rpb24gY29tbWl0cykuCisgKgorICogQnkg ZGVmYXVsdCwgYSBzZXF1ZW5jZSBjaGFuZ2UgaXMgbm9uLXRyYW5zYWN0aW9uYWwgLSB3ZSBt dXN0IG5vdCBxdWV1ZQorICogaXQgaW4gYSB0cmFuc2FjdGlvbiBhcyBvdGhlciBjaGFuZ2Vz LCBiZWNhdXNlIHRoZSB0cmFuc2FjdGlvbiBtaWdodCBnZXQKKyAqIHJvbGxlZCBiYWNrIGFu ZCB3ZSdkIGRpc2NhcmQgdGhlIGNoYW5nZS4gQnV0IHRoYXQnZCBiZSBpbmNvcnJlY3QsIGFz IHRoZQorICogY2hhbmdlIGlzIGFscmVhZHkgdmlzaWJsZSB0byBvdGhlciBwcm9jZXNzZXMg YWNjZXNzaW5nIHRoZSBzZXF1ZW5jZS4gSWYKKyAqIHdlIGRpc2NhcmQgdGhlIGNoYW5nZSwg dGhlIGRvd25zdHJlYW0gd2lsbCBub3QgYmUgbm90aWZpZWQgYWJvdXQgdGhlCisgKiBjaGFu Z2UsIGFuZCBtYXkgZmFsbCBiZWhpbmQuCisgKgorICogT24gdGhlIG90aGVyIGhhbmQsIHRo ZSBzZXF1ZW5jZSBtYXkgYmUgY3JlYXRlZCBpbiBhIHRyYW5zYWN0aW9uLiBJbiB0aGlzCisg KiBjYXNlIHdlICpoYXZlIHRvKiBxdWV1ZSBpdCBpbiB0aGUgdHJhbnNhY3Rpb24ganVzdCBs aWtlIG90aGVyIGNoYW5nZXMsCisgKiBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcHJvY2Vz cyBjaGFuZ2VzIGZvciBzZXF1ZW5jZXMgdGhhdCBtYXkgYmUgdW5rbm93bgorICogb3V0c2lk ZSB0aGUgdHJhbnNhY3Rpb24gLSB0aGUgZG93bnN0cmVhbSBtaWdodCBnZXQgY29uZnVzZWQg YWJvdXQgd2hpY2gKKyAqIHNlcXVlbmNlIGl0J3MgcmVsYXRlZCB0byBldGMuCisgKi8KK3Zv aWQKK3NlcV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3Jk QnVmZmVyICpidWYpCit7CisJU25hcEJ1aWxkICAqYnVpbGRlciA9IGN0eC0+c25hcHNob3Rf YnVpbGRlcjsKKwlSZW9yZGVyQnVmZmVyVHVwbGVCdWYgKnR1cGxlYnVmOworCVJlbEZpbGVM b2NhdG9yIHRhcmdldF9sb2NhdG9yOworCVhMb2dSZWFkZXJTdGF0ZSAqciA9IGJ1Zi0+cmVj b3JkOworCWNoYXIJICAgKnR1cGxlZGF0YSA9IE5VTEw7CisJU2l6ZQkJdHVwbGVsZW47CisJ U2l6ZQkJZGF0YWxlbiA9IDA7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSBYTG9nUmVjR2V0WGlk KHIpOworCXVpbnQ4CQlpbmZvID0gWExvZ1JlY0dldEluZm8oYnVmLT5yZWNvcmQpICYgflhM Ul9JTkZPX01BU0s7CisJU25hcHNob3QJc25hcHNob3QgPSBOVUxMOworCVJlcE9yaWdpbklk IG9yaWdpbl9pZCA9IFhMb2dSZWNHZXRPcmlnaW4ocik7CisJYm9vbAkJdHJhbnNhY3Rpb25h bDsKKworCS8qIGlnbm9yZSBzZXF1ZW5jZXMgd2hlbiB0aGUgcGx1Z2luIGRvZXMgbm90IGhh dmUgdGhlIGNhbGxiYWNrcyAqLworCWlmICghY3R4LT5zZXF1ZW5jZXMpCisJCXJldHVybjsK KworCS8qIG9ubHkgZGVjb2RlIGNoYW5nZXMgZmxhZ2dlZCB3aXRoIFhMT0dfU0VRX0xPRyAq LworCWlmIChpbmZvICE9IFhMT0dfU0VRX0xPRykKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0 ZWQgUk1fU0VRX0lEIHJlY29yZCB0eXBlOiAldSIsIGluZm8pOworCisJUmVvcmRlckJ1ZmZl clByb2Nlc3NYaWQoY3R4LT5yZW9yZGVyLCBYTG9nUmVjR2V0WGlkKHIpLCBidWYtPm9yaWdw dHIpOworCisJLyoKKwkgKiBJZiB3ZSBkb24ndCBoYXZlIHNuYXBzaG90IG9yIHdlIGFyZSBq dXN0IGZhc3QtZm9yd2FyZGluZywgdGhlcmUgaXMgbm8KKwkgKiBwb2ludCBpbiBkZWNvZGlu ZyBzZXF1ZW5jZXMuCisJICovCisJaWYgKFNuYXBCdWlsZEN1cnJlbnRTdGF0ZShidWlsZGVy KSA8IFNOQVBCVUlMRF9GVUxMX1NOQVBTSE9UKQorCQlyZXR1cm47CisKKwkvKiBvbmx5IGlu dGVyZXN0ZWQgaW4gb3VyIGRhdGFiYXNlICovCisJWExvZ1JlY0dldEJsb2NrVGFnKHIsIDAs ICZ0YXJnZXRfbG9jYXRvciwgTlVMTCwgTlVMTCk7CisJaWYgKHRhcmdldF9sb2NhdG9yLmRi T2lkICE9IGN0eC0+c2xvdC0+ZGF0YS5kYXRhYmFzZSkKKwkJcmV0dXJuOworCisJLyogb3V0 cHV0IHBsdWdpbiBkb2Vzbid0IGxvb2sgZm9yIHRoaXMgb3JpZ2luLCBubyBuZWVkIHRvIHF1 ZXVlICovCisJaWYgKEZpbHRlckJ5T3JpZ2luKGN0eCwgWExvZ1JlY0dldE9yaWdpbihyKSkp CisJCXJldHVybjsKKworCS8qIHRpbWUgdG8gZGVjb2RlIHRoZSBzZXF1ZW5jZSBkYXRhIGZy b20gdGhlIHR1cGxlICovCisJdHVwbGVkYXRhID0gWExvZ1JlY0dldERhdGEocik7CisJZGF0 YWxlbiA9IFhMb2dSZWNHZXREYXRhTGVuKHIpOworCXR1cGxlbGVuID0gZGF0YWxlbiAtIFNp emVPZkhlYXBIZWFkZXIgLSBzaXplb2YoeGxfc2VxX3JlYyk7CisKKwkvKiB0aGUgc2VxdWVu Y2Ugc2hvdWxkIG5vdCBoYXZlIGNoYW5nZWQgd2l0aG91dCBkYXRhICovCisJaWYgKCFkYXRh bGVuIHx8ICF0dXBsZWRhdGEpCisJCWVsb2coRVJST1IsICJzZXF1ZW5jZSBkZWNvZGUgbWlz c2luZyB0dXBsZSBkYXRhIik7CisKKwl0dXBsZWJ1ZiA9IFJlb3JkZXJCdWZmZXJHZXRUdXBs ZUJ1ZihjdHgtPnJlb3JkZXIsIHR1cGxlbGVuKTsKKwlEZWNvZGVTZXFUdXBsZSh0dXBsZWRh dGEsIGRhdGFsZW4sIHR1cGxlYnVmKTsKKworCS8qCisJICogU2hvdWxkIHdlIGhhbmRsZSB0 aGUgc2VxdWVuY2UgY2hhbmdlIGFzIHRyYW5zYWN0aW9uYWwgb3Igbm90PworCSAqCisJICog SWYgdGhlIHJlbGZpbGVub2RlIHdhcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHRyYW5zYWN0 aW9uLCB0cmVhdCB0aGUKKwkgKiBjaGFuZ2UgYXMgdHJhbnNhY3Rpb25hbCBhbmQgcXVldWUg aXQuIE90aGVyd2lzZSBpdCBuZWVkcyB0byBiZSB0cmVhdGVkCisJICogYXMgbm9uLXRyYW5z YWN0aW9uYWwsIGluIHdoaWNoIGNhc2Ugd2UganVzdCBzZW5kIGl0IHRvIHRoZSBwbHVnaW4g cmlnaHQKKwkgKiBhd2F5LgorCSAqLworCXRyYW5zYWN0aW9uYWwgPSBSZW9yZGVyQnVmZmVy U2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwoY3R4LT5yZW9yZGVyLAorCQkJCQkJCQkJCQkJCQkg dGFyZ2V0X2xvY2F0b3IsCisJCQkJCQkJCQkJCQkJCSBOVUxMKTsKKworCS8qIFNraXAgdGhl IGNoYW5nZSBpZiBhbHJlYWR5IHByb2Nlc3NlZCAocGVyIHRoZSBzbmFwc2hvdCkuICovCisJ aWYgKHRyYW5zYWN0aW9uYWwgJiYKKwkJIVNuYXBCdWlsZFByb2Nlc3NDaGFuZ2UoYnVpbGRl ciwgeGlkLCBidWYtPm9yaWdwdHIpKQorCQlyZXR1cm47CisJZWxzZSBpZiAoIXRyYW5zYWN0 aW9uYWwgJiYKKwkJCSAoU25hcEJ1aWxkQ3VycmVudFN0YXRlKGJ1aWxkZXIpICE9IFNOQVBC VUlMRF9DT05TSVNURU5UIHx8CisJCQkgIFNuYXBCdWlsZFhhY3ROZWVkc1NraXAoYnVpbGRl ciwgYnVmLT5vcmlncHRyKSkpCisJCXJldHVybjsKKworCS8qCisJICogV2UgYWxzbyBza2lw IGRlY29kaW5nIGluIGZhc3RfZm9yd2FyZCBtb2RlLiBUaGlzIGNoZWNrIG11c3QgYmUgbGFz dAorCSAqIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBzZXQgdGhlIHByb2Nlc3NpbmdfcmVx dWlyZWQgZmxhZyB1bmxlc3Mgd2UKKwkgKiBoYXZlIGEgZGVjb2RhYmxlIHNlcXVlbmNlIGNo YW5nZS4KKwkgKi8KKwlpZiAoY3R4LT5mYXN0X2ZvcndhcmQpCisJeworCQkvKgorCQkgKiBX ZSBuZWVkIHRvIHNldCBwcm9jZXNzaW5nX3JlcXVpcmVkIGZsYWcgdG8gbm90aWZ5IHRoZSBz ZXF1ZW5jZQorCQkgKiBjaGFuZ2UgZXhpc3RlbmNlIHRvIHRoZSBjYWxsZXIuIFVzdWFsbHks IHRoZSBmbGFnIGlzIHNldCB3aGVuCisJCSAqIGVpdGhlciB0aGUgQ09NTUlUIG9yIEFCT1JU IHJlY29yZHMgYXJlIGRlY29kZWQsIGJ1dCB0aGlzIG11c3QgYmUKKwkJICogdHVybmVkIG9u IGhlcmUgYmVjYXVzZSB0aGUgbm9uLXRyYW5zYWN0aW9uYWwgbG9naWNhbCBtZXNzYWdlIGlz CisJCSAqIGRlY29kZWQgd2l0aG91dCB3YWl0aW5nIGZvciB0aGVzZSByZWNvcmRzLgorCQkg Ki8KKwkJaWYgKCF0cmFuc2FjdGlvbmFsKQorCQkJY3R4LT5wcm9jZXNzaW5nX3JlcXVpcmVk ID0gdHJ1ZTsKKworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBJZiB0aGlzIGlzIGEgbm9u LXRyYW5zYWN0aW9uYWwgY2hhbmdlLCBnZXQgdGhlIHNuYXBzaG90IHdlJ3JlIGV4cGVjdGVk CisJICogdG8gdXNlLiBXZSBvbmx5IGdldCBoZXJlIHdoZW4gdGhlIHNuYXBzaG90IGlzIGNv bnNpc3RlbnQsIGFuZCB0aGUKKwkgKiBjaGFuZ2UgaXMgbm90IG1lYW50IHRvIGJlIHNraXBw ZWQuCisJICoKKwkgKiBGb3IgdHJhbnNhY3Rpb25hbCBjaGFuZ2VzIHdlIGRvbid0IG5lZWQg YSBzbmFwc2hvdCwgd2UnbGwgdXNlIHRoZQorCSAqIHJlZ3VsYXIgc25hcHNob3QgbWFpbnRh aW5lZCBieSBSZW9yZGVyQnVmZmVyLiBXZSBqdXN0IGxlYXZlIGl0IE5VTEwuCisJICovCisJ aWYgKCF0cmFuc2FjdGlvbmFsKQorCQlzbmFwc2hvdCA9IFNuYXBCdWlsZEdldE9yQnVpbGRT bmFwc2hvdChidWlsZGVyKTsKKworCS8qIFF1ZXVlIHRoZSBjaGFuZ2UgKG9yIHNlbmQgaW1t ZWRpYXRlbHkgaWYgbm90IHRyYW5zYWN0aW9uYWwpLiAqLworCVJlb3JkZXJCdWZmZXJRdWV1 ZVNlcXVlbmNlKGN0eC0+cmVvcmRlciwgeGlkLCBzbmFwc2hvdCwgYnVmLT5lbmRwdHIsCisJ CQkJCQkJICAgb3JpZ2luX2lkLCB0YXJnZXRfbG9jYXRvciwgdHJhbnNhY3Rpb25hbCwKKwkJ CQkJCQkgICB0dXBsZWJ1Zik7Cit9CisKKy8qCisgKiBEZWNvZGUgcmVsZmlsZW5vZGUgY2hh bmdlCisgKgorICogRGVjb2RlIFNNR1IgcmVjb3Jkcywgc28gdGhhdCB3ZSBjYW4gbGF0ZXIg ZGVjaWRlIHdoaWNoIHNlcXVlbmNlIGNoYW5nZXMKKyAqIG5lZWQgdG8gYmUgdHJlYXRlZCBh cyB0cmFuc2FjdGlvbmFsLiBNb3N0IHNlcXVlbmNlIGNoYW5nZXMgYXJlIGdvaW5nIHRvCisg KiBiZSBub24tdHJhbnNhY3Rpb25hbCAoYXBwbGllZCBhcyBpZiBvdXRzaWRlIHRoZSBkZWNv ZGVkIHRyYW5zYWN0aW9uLCBub3QKKyAqIHN1YmplY3QgdG8gcm9sbGJhY2ssIGV0Yy4pLiBD aGFuZ2VzIGZvciBzZXF1ZW5jZXMgY3JlYXRlZC9hbHRlcmVkIGluIHRoZQorICogdHJhbnNh Y3Rpb24gbmVlZCB0byBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwgKGkuZS4gYXBwbGll ZCBhcyBwYXJ0IG9mCisgKiB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiwgc2FtZSBhcyBhbGwg b3RoZXIgY2hhbmdlcykuCisgKgorICogVG8gZGVjaWRlIHdoaWNoIG9mIHRob3NlIGNhc2Vz IGlzIGl0IHdlIGRlY29kZSBYTE9HX1NNR1JfQ1JFQVRFIHJlY29yZHMKKyAqIGFuZCB0cmFj ayByZWxmaWxlbm9kZXMgY3JlYXRlZCBpbiBlYWNoIChzdWIpdHJhbnNhY3Rpb24uIENoYW5n ZXMgZm9yCisgKiB0aGVzZSByZWxmaWxlbm9kZXMgYXJlIHRoZW4gcXVldWVkIGFuZCB0cmVh dGVkIGFzIHRyYW5zYWN0aW9uYWwsIHdoaWxlCisgKiByZW1haW5pbmcgY2hhbmdlcyBhcmUg dHJlYXRlZCBhcyBub24tdHJhbnNhY3Rpb25hbC4KKyAqCisgKiBXZSBvbmx5IGNhcmUgYWJv dXQgWExPR19TTUdSX0NSRUFURSByZWNvcmRzIGZvciAib3VyIiBkYXRhYmFzZSAobG9naWNh bAorICogZGVjb2RpbmcgaXMgcmVzdHJpY3RlZCB0byBhIHNpbmdsZSBkYXRhYmFzZSksIGFu ZCB3ZSBkbyB0aGUgZmlsdGVyaW5nCisgKiBhbmQgc2tpcHBpbmcsIGFzIGFwcHJvcHJpYXRl LgorICovCit2b2lkCitzbWdyX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs IFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKK3sKKwlTbmFwQnVpbGQgICpidWlsZGVyID0gY3R4 LT5zbmFwc2hvdF9idWlsZGVyOworCVhMb2dSZWFkZXJTdGF0ZSAqciA9IGJ1Zi0+cmVjb3Jk OworCVRyYW5zYWN0aW9uSWQgeGlkID0gWExvZ1JlY0dldFhpZChyKTsKKwl1aW50OAkJaW5m byA9IFhMb2dSZWNHZXRJbmZvKGJ1Zi0+cmVjb3JkKSAmIH5YTFJfSU5GT19NQVNLOworCXhs X3NtZ3JfY3JlYXRlICp4bHJlYzsKKworCS8qCisJICogQmFpbCBvdXQgd2hlbiBub3QgZGVj b2Rpbmcgc2VxdWVuY2VzLCB3aGljaCBpcyBjdXJyZW50bHkgdGhlIG9ubHkgY2FzZQorCSAq IHdoZW4gd2UgbmVlZCB0byBrbm93IGFib3V0IHJlbGZpbGVub2RlcyBjcmVhdGVkIGluIGEg dHJhbnNhY3Rpb24uCisJICovCisJaWYgKCFjdHgtPnNlcXVlbmNlcykKKwkJcmV0dXJuOwor CisJLyoKKwkgKiBXZSBvbmx5IGNhcmUgYWJvdXQgWExPR19TTUdSX0NSRUFURSwgYmVjYXVz ZSB0aGF0J3Mgd2hhdCBkZXRlcm1pbmVzIGlmCisJICogdGhlIGZvbGxvd2luZyBzZXF1ZW5j ZSBjaGFuZ2VzIGFyZSB0cmFuc2FjdGlvbmFsLgorCSAqLworCWlmIChpbmZvICE9IFhMT0df U01HUl9DUkVBVEUpCisJCXJldHVybjsKKworCVJlb3JkZXJCdWZmZXJQcm9jZXNzWGlkKGN0 eC0+cmVvcmRlciwgWExvZ1JlY0dldFhpZChyKSwgYnVmLT5vcmlncHRyKTsKKworCS8qCisJ ICogSWYgd2UgZG9uJ3QgaGF2ZSBzbmFwc2hvdCBvciB3ZSBhcmUganVzdCBmYXN0LWZvcndh cmRpbmcsIHRoZXJlIGlzIG5vCisJICogcG9pbnQgaW4gZGVjb2RpbmcgcmVsZmlsZW5vZGUg aW5mb3JtYXRpb24uCisJICovCisJaWYgKFNuYXBCdWlsZEN1cnJlbnRTdGF0ZShidWlsZGVy KSA8IFNOQVBCVUlMRF9GVUxMX1NOQVBTSE9UIHx8CisJCWN0eC0+ZmFzdF9mb3J3YXJkKQor CQlyZXR1cm47CisKKwkvKiBvbmx5IGludGVyZXN0ZWQgaW4gb3VyIGRhdGFiYXNlICovCisJ eGxyZWMgPSAoeGxfc21ncl9jcmVhdGUgKikgWExvZ1JlY0dldERhdGEocik7CisJaWYgKHhs cmVjLT5ybG9jYXRvci5kYk9pZCAhPSBjdHgtPnNsb3QtPmRhdGEuZGF0YWJhc2UpCisJCXJl dHVybjsKKworCS8qIG91dHB1dCBwbHVnaW4gZG9lc24ndCBsb29rIGZvciB0aGlzIG9yaWdp biwgbm8gbmVlZCB0byBxdWV1ZSAqLworCWlmIChGaWx0ZXJCeU9yaWdpbihjdHgsIFhMb2dS ZWNHZXRPcmlnaW4ocikpKQorCQlyZXR1cm47CisKKwlSZW9yZGVyQnVmZmVyQWRkUmVsRmls ZUxvY2F0b3IoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+ZW5kcHRyLCB4bHJlYy0+cmxvY2F0 b3IpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s b2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpp bmRleCBjYTA5YzY4M2YxMS4uOGNhZGMwZTllNmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyB2b2lk IHRydW5jYXRlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKIHN0YXRpYyB2b2lkIG1lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVm ZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJCSAgIFhMb2dSZWNQ dHIgbWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKIAkJCQkJCQkgICBjb25zdCBj aGFyICpwcmVmaXgsIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBjaGFyICptZXNzYWdlKTsK K3N0YXRpYyB2b2lkIHNlcXVlbmNlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUs IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJWExvZ1JlY1B0ciBzZXF1ZW5jZV9s c24sIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJYm9vbCB0cmFuc2FjdGlvbmFsLCBpbnQ2NCB2 YWx1ZSk7CiAKIC8qIHN0cmVhbWluZyBjYWxsYmFja3MgKi8KIHN0YXRpYyB2b2lkIHN0cmVh bV9zdGFydF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCkBAIC05Miw2ICs5NSw5IEBAIHN0YXRpYyB2b2lkIHN0cmVhbV9jaGFuZ2Vf Y2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu CiBzdGF0aWMgdm9pZCBzdHJlYW1fbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIg KmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJCQkgIFhMb2dSZWNQdHIg bWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKIAkJCQkJCQkJCSAgY29uc3QgY2hh ciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7Citz dGF0aWMgdm9pZCBzdHJlYW1fc2VxdWVuY2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpj YWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBz ZXF1ZW5jZV9sc24sIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCSAgIGJvb2wgdHJhbnNhY3Rp b25hbCwgaW50NjQgdmFsdWUpOwogc3RhdGljIHZvaWQgc3RyZWFtX3RydW5jYXRlX2NiX3dy YXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJ CQkJCQkJCSAgIGludCBucmVsYXRpb25zLCBSZWxhdGlvbiByZWxhdGlvbnNbXSwgUmVvcmRl ckJ1ZmZlckNoYW5nZSAqY2hhbmdlKTsKIApAQCAtMjIzLDEzICsyMjksMTQgQEAgU3RhcnR1 cERlY29kaW5nQ29udGV4dChMaXN0ICpvdXRwdXRfcGx1Z2luX29wdGlvbnMsCiAJY3R4LT5y ZW9yZGVyLT5hcHBseV90cnVuY2F0ZSA9IHRydW5jYXRlX2NiX3dyYXBwZXI7CiAJY3R4LT5y ZW9yZGVyLT5jb21taXQgPSBjb21taXRfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPm1l c3NhZ2UgPSBtZXNzYWdlX2NiX3dyYXBwZXI7CisJY3R4LT5yZW9yZGVyLT5zZXF1ZW5jZSA9 IHNlcXVlbmNlX2NiX3dyYXBwZXI7CiAKIAkvKgogCSAqIFRvIHN1cHBvcnQgc3RyZWFtaW5n LCB3ZSByZXF1aXJlIHN0YXJ0L3N0b3AvYWJvcnQvY29tbWl0L2NoYW5nZQotCSAqIGNhbGxi YWNrcy4gVGhlIG1lc3NhZ2UgYW5kIHRydW5jYXRlIGNhbGxiYWNrcyBhcmUgb3B0aW9uYWws IHNpbWlsYXIgdG8KLQkgKiByZWd1bGFyIG91dHB1dCBwbHVnaW5zLiBXZSBob3dldmVyIGVu YWJsZSBzdHJlYW1pbmcgd2hlbiBhdCBsZWFzdCBvbmUKLQkgKiBvZiB0aGUgbWV0aG9kcyBp cyBlbmFibGVkIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZGVudGlmeSBtaXNzaW5nCi0JICog bWV0aG9kcy4KKwkgKiBjYWxsYmFja3MuIFRoZSBtZXNzYWdlLCBzZXF1ZW5jZSBhbmQgdHJ1 bmNhdGUgY2FsbGJhY2tzIGFyZSBvcHRpb25hbCwKKwkgKiBzaW1pbGFyIHRvIHJlZ3VsYXIg b3V0cHV0IHBsdWdpbnMuIFdlIGhvd2V2ZXIgZW5hYmxlIHN0cmVhbWluZyB3aGVuIGF0CisJ ICogbGVhc3Qgb25lIG9mIHRoZSBtZXRob2RzIGlzIGVuYWJsZWQgc28gdGhhdCB3ZSBjYW4g ZWFzaWx5IGlkZW50aWZ5CisJICogbWlzc2luZyBtZXRob2RzLgogCSAqCiAJICogV2UgZGVj aWRlIGl0IGhlcmUsIGJ1dCBvbmx5IGNoZWNrIGl0IGxhdGVyIGluIHRoZSB3cmFwcGVycy4K IAkgKi8KQEAgLTIzOSw2ICsyNDYsNyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExpc3Qg Km91dHB1dF9wbHVnaW5fb3B0aW9ucywKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jb21t aXRfY2IgIT0gTlVMTCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jaGFuZ2VfY2Ig IT0gTlVMTCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9tZXNzYWdlX2NiICE9IE5V TEwpIHx8CisJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fc2VxdWVuY2VfY2IgIT0gTlVMTCkg fHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV90cnVuY2F0ZV9jYiAhPSBOVUxMKTsKIAog CS8qCkBAIC0yNTYsNiArMjY0LDcgQEAgU3RhcnR1cERlY29kaW5nQ29udGV4dChMaXN0ICpv dXRwdXRfcGx1Z2luX29wdGlvbnMsCiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1fY29tbWl0ID0g c3RyZWFtX2NvbW1pdF9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+c3RyZWFtX2NoYW5n ZSA9IHN0cmVhbV9jaGFuZ2VfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPnN0cmVhbV9t ZXNzYWdlID0gc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcjsKKwljdHgtPnJlb3JkZXItPnN0 cmVhbV9zZXF1ZW5jZSA9IHN0cmVhbV9zZXF1ZW5jZV9jYl93cmFwcGVyOwogCWN0eC0+cmVv cmRlci0+c3RyZWFtX3RydW5jYXRlID0gc3RyZWFtX3RydW5jYXRlX2NiX3dyYXBwZXI7CiAK IApAQCAtMjg5LDYgKzI5OCwxMyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExpc3QgKm91 dHB1dF9wbHVnaW5fb3B0aW9ucywKIAkgKi8KIAljdHgtPnJlb3JkZXItPnVwZGF0ZV9wcm9n cmVzc190eG4gPSB1cGRhdGVfcHJvZ3Jlc3NfdHhuX2NiX3dyYXBwZXI7CiAKKwkvKgorCSAq IFRvIHN1cHBvcnQgbG9naWNhbCBkZWNvZGluZyBvZiBzZXF1ZW5jZXMsIHdlIHJlcXVpcmUg dGhlIHNlcXVlbmNlCisJICogY2FsbGJhY2suIFdlIGRlY2lkZSBpdCBoZXJlLCBidXQgb25s eSBjaGVjayBpdCBsYXRlciBpbiB0aGUgd3JhcHBlcnMuCisJICovCisJY3R4LT5zZXF1ZW5j ZXMgPSAoKGN0eC0+Y2FsbGJhY2tzLnNlcXVlbmNlX2NiICE9IE5VTEwpIHx8CisJCQkJCSAg KGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9zZXF1ZW5jZV9jYiAhPSBOVUxMKSk7CisKIAljdHgt Pm91dCA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJY3R4LT5wcmVwYXJlX3dyaXRlID0gcHJlcGFy ZV93cml0ZTsKIAljdHgtPndyaXRlID0gZG9fd3JpdGU7CkBAIC0xMjYyLDYgKzEyNzgsNDIg QEAgbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVm ZmVyVFhOICp0eG4sCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZp b3VzOwogfQogCitzdGF0aWMgdm9pZAorc2VxdWVuY2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVm ZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQlYTG9nUmVjUHRyIHNl cXVlbmNlX2xzbiwgUmVsYXRpb24gcmVsLCBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCWlu dDY0IHZhbHVlKQoreworCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCA9IGNhY2hlLT5w cml2YXRlX2RhdGE7CisJTG9naWNhbEVycm9yQ2FsbGJhY2tTdGF0ZSBzdGF0ZTsKKwlFcnJv ckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKworCUFzc2VydCghY3R4LT5mYXN0X2Zv cndhcmQpOworCisJaWYgKGN0eC0+Y2FsbGJhY2tzLnNlcXVlbmNlX2NiID09IE5VTEwpCisJ CXJldHVybjsKKworCS8qIFB1c2ggY2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJvciBjb250 ZXh0IHN0YWNrICovCisJc3RhdGUuY3R4ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25hbWUg PSAic2VxdWVuY2UiOworCXN0YXRlLnJlcG9ydF9sb2NhdGlvbiA9IHNlcXVlbmNlX2xzbjsK KwllcnJjYWxsYmFjay5jYWxsYmFjayA9IG91dHB1dF9wbHVnaW5fZXJyb3JfY2FsbGJhY2s7 CisJZXJyY2FsbGJhY2suYXJnID0gKHZvaWQgKikgJnN0YXRlOworCWVycmNhbGxiYWNrLnBy ZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0g JmVycmNhbGxiYWNrOworCisJLyogc2V0IG91dHB1dCBzdGF0ZSAqLworCWN0eC0+YWNjZXB0 X3dyaXRlcyA9IHRydWU7CisJY3R4LT53cml0ZV94aWQgPSB0eG4gIT0gTlVMTCA/IHR4bi0+ eGlkIDogSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJY3R4LT53cml0ZV9sb2NhdGlvbiA9IHNl cXVlbmNlX2xzbjsKKworCS8qIGRvIHRoZSBhY3R1YWwgd29yazogY2FsbCBjYWxsYmFjayAq LworCWN0eC0+Y2FsbGJhY2tzLnNlcXVlbmNlX2NiKGN0eCwgdHhuLCBzZXF1ZW5jZV9sc24s IHJlbCwKKwkJCQkJCQkgICB0cmFuc2FjdGlvbmFsLCB2YWx1ZSk7CisKKwkvKiBQb3AgdGhl IGVycm9yIGNvbnRleHQgc3RhY2sgKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2Fs bGJhY2sucHJldmlvdXM7Cit9CisKIHN0YXRpYyB2b2lkCiBzdHJlYW1fc3RhcnRfY2Jfd3Jh cHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJ CQkJWExvZ1JlY1B0ciBmaXJzdF9sc24pCkBAIC0xNTc3LDYgKzE2MjksNDYgQEAgc3RyZWFt X21lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91 czsKIH0KIAorc3RhdGljIHZvaWQKK3N0cmVhbV9zZXF1ZW5jZV9jYl93cmFwcGVyKFJlb3Jk ZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkgICBYTG9n UmVjUHRyIHNlcXVlbmNlX2xzbiwgUmVsYXRpb24gcmVsLAorCQkJCQkJICAgYm9vbCB0cmFu c2FjdGlvbmFsLCBpbnQ2NCB2YWx1ZSkKK3sKKwlMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHggPSBjYWNoZS0+cHJpdmF0ZV9kYXRhOworCUxvZ2ljYWxFcnJvckNhbGxiYWNrU3RhdGUg c3RhdGU7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlBc3NlcnQo IWN0eC0+ZmFzdF9mb3J3YXJkKTsKKworCS8qIFdlJ3JlIG9ubHkgc3VwcG9zZWQgdG8gY2Fs bCB0aGlzIHdoZW4gc3RyZWFtaW5nIGlzIHN1cHBvcnRlZC4gKi8KKwlBc3NlcnQoY3R4LT5z dHJlYW1pbmcpOworCisJLyogdGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCAqLworCWlmIChj dHgtPmNhbGxiYWNrcy5zdHJlYW1fc2VxdWVuY2VfY2IgPT0gTlVMTCkKKwkJcmV0dXJuOwor CisJLyogUHVzaCBjYWxsYmFjayArIGluZm8gb24gdGhlIGVycm9yIGNvbnRleHQgc3RhY2sg Ki8KKwlzdGF0ZS5jdHggPSBjdHg7CisJc3RhdGUuY2FsbGJhY2tfbmFtZSA9ICJzdHJlYW1f c2VxdWVuY2UiOworCXN0YXRlLnJlcG9ydF9sb2NhdGlvbiA9IHNlcXVlbmNlX2xzbjsKKwll cnJjYWxsYmFjay5jYWxsYmFjayA9IG91dHB1dF9wbHVnaW5fZXJyb3JfY2FsbGJhY2s7CisJ ZXJyY2FsbGJhY2suYXJnID0gKHZvaWQgKikgJnN0YXRlOworCWVycmNhbGxiYWNrLnByZXZp b3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVy cmNhbGxiYWNrOworCisJLyogc2V0IG91dHB1dCBzdGF0ZSAqLworCWN0eC0+YWNjZXB0X3dy aXRlcyA9IHRydWU7CisJY3R4LT53cml0ZV94aWQgPSB0eG4gIT0gTlVMTCA/IHR4bi0+eGlk IDogSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJY3R4LT53cml0ZV9sb2NhdGlvbiA9IHNlcXVl bmNlX2xzbjsKKworCS8qIGRvIHRoZSBhY3R1YWwgd29yazogY2FsbCBjYWxsYmFjayAqLwor CWN0eC0+Y2FsbGJhY2tzLnNlcXVlbmNlX2NiKGN0eCwgdHhuLCBzZXF1ZW5jZV9sc24sIHJl bCwKKwkJCQkJCQkgICB0cmFuc2FjdGlvbmFsLCB2YWx1ZSk7CisKKwkvKiBQb3AgdGhlIGVy cm9yIGNvbnRleHQgc3RhY2sgKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJh Y2sucHJldmlvdXM7Cit9CisKIHN0YXRpYyB2b2lkCiBzdHJlYW1fdHJ1bmNhdGVfY2Jfd3Jh cHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJ CQkJICAgaW50IG5yZWxhdGlvbnMsIFJlbGF0aW9uIHJlbGF0aW9uc1tdLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCBk MTMzNGZmYjU1MC4uNmFjOTEwNjg3OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC03Nyw2ICs3Nyw0MSBAQAogICoJ ICBhIGJpdCBtb3JlIG1lbW9yeSB0byB0aGUgb2xkZXN0IHN1YnRyYW5zYWN0aW9ucywgYmVj YXVzZSBpdCdzIGxpa2VseQogICoJICB0aGV5IGFyZSB0aGUgc291cmNlIGZvciB0aGUgbmV4 dCBzZXF1ZW5jZSBvZiBjaGFuZ2VzLgogICoKKyAqCSAgV2hlbiBkZWNvZGluZyBzZXF1ZW5j ZXMsIHdlIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0cmFuc2FjdGlvbmFsIGFuZAorICoJICBu b24tdHJhbnNhY3Rpb25hbCBjaGFuZ2VzLiBTZXF1ZW5jZSBjaGFuZ2UgaXMgIm5vbi10cmFu c2FjdGlvbmFsIiBpZgorICoJICBpdCB3YXMgdmlzaWJsZSB0byBvdXRzaWRlIHRyYW5zYWN0 aW9ucyBpbW1lZGlhdGVseSwgYW5kIHdvdWxkIG5vdCBiZQorICoJICB1bmRvbmUgYnkgYSBy b2xsYmFjay4gTW9zdCBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBub24tdHJhbnNhY3Rpb25hbCwg YXMKKyAqCSAgdGhlIGNoYW5nZXMgcGVyZm9ybWVkIGJ5IG5leHR2YWwoKSBhcmUgdmlzaWJs ZSBhbmQgY2FuJ3QgYmUgdW5kb25lLgorICoJICBOb24tdHJhbnNhY3Rpb25hbCBjaGFuZ2Vz IGFyZSByZXBsYXllZCBpbW1lZGlhdGVseSwgYXMgaWYgb3V0c2lkZSBhbnkKKyAqCSAgdHJh bnNhY3Rpb24gKGFuZCB0aHVzIGFsc28gbm90IHN1YmplY3QgdG8gcm9sbGJhY2sgZXRjLiku CisgKgorICoJICBIb3dldmVyLCBpZiBhIHRyYW5zYWN0aW9uIG1vZGlmaWVzIHRoZSBzZXF1 ZW5jZSBpbiBhIHdheSB0aGF0IGNyZWF0ZXMKKyAqCSAgYSBuZXcgcmVsZmlsZW5vZGUgKGUu Zy4gYnkgcnVubmluZyBBTFRFUiBTRVFVRU5DRSksIHdlIGNvbnNpZGVyIHRoZQorICoJICBz dWJzZXF1ZW50IGNoYW5nZXMgInRyYW5zYWN0aW9uYWwiIGFuZCBxdWV1ZSB0aGVtIGluIHRo ZSB0cmFuc2FjdGlvbgorICoJICB0aGF0IHBlcmZvcm1lZCB0aGVtLCBqdXN0IGxpa2Ugb3Ro ZXIgY2hhbmdlcy4gSWYgdGhhdCB0cmFuc2FjdGlvbiByb2xscworICoJICBiYWNrLCB0aGVz ZSBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBkaXNjYXJkZWQgdG9vICh0b2dldGhlciB3aXRoIHRo ZQorICoJICBuZXcgcmVsZmlsZW5vZGUpLgorICoKKyAqCSAgVGhpcyBtaXhlZCBiZWhhdmlv ciBpcyBuZWNlc3NhcnkgLSBzZXF1ZW5jZXMgYXJlIG5vbi10cmFuc2FjdGlvbmFsCisgKgkg IChlLmcuIFJPTExCQUNLIGRvZXMgbm90IHVuZG8gdGhhdCB0aGUgc2VxdWVuY2UgbW92ZWQg Zm9yd2FyZCkuIEJ1dAorICoJICBjaGFuZ2VzIG9uIG5ldyByZWxmaWxlbm9kZXMgbmVlZCB0 byBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwuCisgKgorICoJICBUbyBkZWNpZGUgaWYg YSBzZXF1ZW5jZSBjaGFuZ2UgaXMgdHJhbnNhY3Rpb25hbCwgd2UgbWFpbnRhaW4gYSBoYXNo CisgKgkgIHRhYmxlIG9mIHJlbGZpbGVub2RlcyBjcmVhdGVkIGluIGVhY2ggKHN1Yil0cmFu c2FjdGlvbiwgYWxvbmcgd2l0aAorICoJICB0aGUgWElEIG9mIHRoZSAoc3ViKXRyYW5zYWN0 aW9uIHRoYXQgY3JlYXRlZCB0aGUgcmVsZmlsZW5vZGUuIFRoZQorICoJICBlbnRyaWVzIGZy b20gc3VidHJhbnNhY3Rpb25zIGFyZSBjb3BpZWQgdG8gdGhlIHRvcC1sZXZlbCB0cmFuc2Fj dGlvbgorICoJICB0byBtYWtlIGNoZWNrcyBjaGVhcGVyLiBUaGUgaGFzaCB0YWJsZSBnZXRz IGNsZWFuZWQgdXAgd2hlbiB0aGUKKyAqCSAgdHJhbnNhY3Rpb24gY29tcGxldGVzIChjb21t aXQvYWJvcnQpLgorICoKKyAqCSAgVGhlIFhJRCBvZiB0aGUgc3VieGFjdCB0aGF0IGNyZWF0 ZWQgdGhlIHJlbGZpbGVub2RlIGlzIG5lY2Vzc2FyeSwgYXMKKyAqCSAgdGhhdCdzIHdoZXJl IHRoZSBzZXF1ZW5jZSBjaGFuZ2VzIG5lZWQgdG8gYmUgcXVldWVkIC0gaWYgdGhpcyBzdWJ4 YWN0CisgKgkgIHJvbGxzIGJhY2ssIHdlIHdhbnQgdG8gZGlzY2FyZCB0aGUgY2hhbmdlcyB0 aWVkIHRvIHRoaXMgcmVsZmlsZW5vZGUKKyAqCSAgKGV2ZW4gaWYgZG9uZSBpbiBzb21lIG90 aGVyIHN1YnRyYW5zYWN0aW9uKS4KKyAqCisgKgkgIFRoZSBYSUQgbWF5IGJlIHZhbGlkIGV2 ZW4gZm9yIG5vbi10cmFuc2FjdGlvbmFsIHNlcXVlbmNlcyAtIHdlIHNpbXBseQorICoJICBr ZWVwIHRoZSBYSUQgZGVjb2RlZCBmcm9tIFdBTCwgaXQncyB1cCB0byB0aGUgcmVvcmRlcmJ1 ZmZlciB0byBkZWNpZGUKKyAqCSAgaWYgdGhlIGNoYW5nZSBpcyB0cmFuc2FjdGlvbmFsLgor ICoKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgi CkBAIC05MSw2ICsxMjYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cu aCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUgImxpYi9iaW5h cnloZWFwLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0Lmgi CkBAIC0xMTYsNiArMTUyLDEzIEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE5C eUlkRW50CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogfSBSZW9yZGVyQnVmZmVyVFhOQnlJ ZEVudDsKIAorLyogZW50cnkgZm9yIGhhc2ggdGFibGUgd2UgdXNlIHRvIHRyYWNrIHNlcXVl bmNlcyBjcmVhdGVkIGluIHJ1bm5pbmcgeGFjdHMgKi8KK3R5cGVkZWYgc3RydWN0IFJlb3Jk ZXJCdWZmZXJTZXF1ZW5jZUVudAoreworCVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOworCVJl b3JkZXJCdWZmZXJUWE4gKnR4bjsKK30gUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50OworCiAv KiBkYXRhIHN0cnVjdHVyZXMgZm9yIChyZWxmaWxlbG9jYXRvciwgY3RpZCkgPT4gKGNtaW4s IGNtYXgpIG1hcHBpbmcgKi8KIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUdXBsZUNp ZEtleQogewpAQCAtMjI1LDYgKzI2OCw3IEBAIHN0YXRpYyB2b2lkIFJlb3JkZXJCdWZmZXJU cmFuc2ZlclNuYXBUb1BhcmVudChSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJCQkJ CSAgUmVvcmRlckJ1ZmZlclRYTiAqc3VidHhuKTsKIAogc3RhdGljIHZvaWQgQXNzZXJ0VFhO THNuT3JkZXIoUmVvcmRlckJ1ZmZlciAqcmIpOworc3RhdGljIHZvaWQgQXNzZXJ0Q2hlY2tT ZXF1ZW5jZXMoUmVvcmRlckJ1ZmZlciAqcmIpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIHN1cHBvcnQgZnVuY3Rpb25zIGZvciBsc24tb3Jk ZXIgaXRlcmF0aW5nIG92ZXIgdGhlIC0+Y2hhbmdlcyBvZiBhCkBAIC00NTYsMTIgKzUwMCw0 OCBAQCBSZW9yZGVyQnVmZmVyUmV0dXJuVFhOKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVy QnVmZmVyVFhOICp0eG4pCiAJCXR4bi0+aW52YWxpZGF0aW9ucyA9IE5VTEw7CiAJfQogCisJ aWYgKHR4bi0+c2VxdWVuY2VzX2hhc2ggIT0gTlVMTCkKKwl7CisJCWhhc2hfZGVzdHJveSh0 eG4tPnNlcXVlbmNlc19oYXNoKTsKKwkJdHhuLT5zZXF1ZW5jZXNfaGFzaCA9IE5VTEw7CisJ fQorCiAJLyogUmVzZXQgdGhlIHRvYXN0IGhhc2ggKi8KIAlSZW9yZGVyQnVmZmVyVG9hc3RS ZXNldChyYiwgdHhuKTsKIAogCXBmcmVlKHR4bik7CiB9CiAKKy8qCisgKiBJbml0aWFsaXpl IGhhc2ggdGFibGUgb2YgcmVsZmlsZW5vZGVzIGNyZWF0ZWQgYnkgdGhlIHRyYW5zYWN0aW9u LgorICoKKyAqIEVhY2ggZW50cnkgbWFwcyB0aGUgcmVsZmlsZW5vZGUgdG8gdGhlIChzdWIp dHJhbnNhY3Rpb24gdGhhdCBjcmVhdGVkIHRoZQorICogcmVsZmlsZW5vZGUgLSB3aGljaCBp cyBhbHNvIHRoZSB0cmFuc2FjdGlvbiB0aGUgc2VxdWVuY2UgY2hhbmdlIG5lZWRzIHRvCisg KiBiZSBwYXJ0IG9mIChpbiB0cmFuc2FjdGlvbmFsIGNhc2UpLgorICoKKyAqIFdlIGRvbid0 IGRvIHRoaXMgaW4gUmVvcmRlckJ1ZmZlckdldFRYTiBiZWNhdXNlIHRoYXQnZCBhbGxvY2F0 ZSB0aGUgaGFzaAorICogZm9yIGFsbCB0cmFuc2FjdGlvbnMsIGFuZCB3ZSBleHBlY3QgbmV3 IHJlbGZpbGVub2RlcyB0byBiZSBmYWlybHkgcmFyZS4KKyAqIFNvIG9ubHkgZG8gdGhhdCB3 aGVuIGFkZGluZyB0aGUgZmlyc3QgZW50cnkuCisgKi8KK3N0YXRpYyB2b2lkCitSZW9yZGVy QnVmZmVyVFhOU2VxdWVuY2VzSW5pdChSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuKQoreworCUhBU0hDVEwJCWhhc2hfY3RsOworCisJLyogYmFpbCBvdXQgaWYg YWxyZWFkeSBpbml0aWFsaXplZCAqLworCWlmICh0eG4tPnNlcXVlbmNlc19oYXNoKQorCQly ZXR1cm47CisKKwkvKiBoYXNoIHRhYmxlIG9mIHNlcXVlbmNlcywgbWFwcGluZyByZWxmaWxl bG9jYXRvciB0byB0cmFuc2FjdGlvbiAqLworCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2Yo UmVsRmlsZUxvY2F0b3IpOworCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZW9yZGVy QnVmZmVyU2VxdWVuY2VFbnQpOworCWhhc2hfY3RsLmhjeHQgPSByYi0+Y29udGV4dDsKKwor CS8qIHdlIGV4cGVjdCByZWxmaWxlbm9kZXMgdG8gYmUgY3JlYXRlZCBvbmx5IHJhcmVseSwg c28gMzIgc2VlbXMgZW5vdWdoICovCisJdHhuLT5zZXF1ZW5jZXNfaGFzaCA9IGhhc2hfY3Jl YXRlKCJSZW9yZGVyQnVmZmVyVFhOU2VxdWVuY2VIYXNoIiwgMzIsICZoYXNoX2N0bCwKKwkJ CQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7Cit9CisK IC8qCiAgKiBHZXQgYSBmcmVzaCBSZW9yZGVyQnVmZmVyQ2hhbmdlLgogICovCkBAIC01MzYs NiArNjE2LDEzIEBAIFJlb3JkZXJCdWZmZXJSZXR1cm5DaGFuZ2UoUmVvcmRlckJ1ZmZlciAq cmIsIFJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZSwKIAkJCQljaGFuZ2UtPmRhdGEudHJ1 bmNhdGUucmVsaWRzID0gTlVMTDsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFJFT1JERVJf QlVGRkVSX0NIQU5HRV9TRVFVRU5DRToKKwkJCWlmIChjaGFuZ2UtPmRhdGEuc2VxdWVuY2Uu dHVwbGUpCisJCQl7CisJCQkJUmVvcmRlckJ1ZmZlclJldHVyblR1cGxlQnVmKHJiLCBjaGFu Z2UtPmRhdGEuc2VxdWVuY2UudHVwbGUpOworCQkJCWNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50 dXBsZSA9IE5VTEw7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9D SEFOR0VfSU5URVJOQUxfU1BFQ19DT05GSVJNOgogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NI QU5HRV9JTlRFUk5BTF9TUEVDX0FCT1JUOgogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5H RV9JTlRFUk5BTF9DT01NQU5EX0lEOgpAQCAtODA0LDcgKzg5MSw4IEBAIFJlb3JkZXJCdWZm ZXJRdWV1ZUNoYW5nZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuLAogCQljaGFuZ2UtPmFjdGlvbiA9PSBSRU9SREVSX0JVRkZFUl9DSEFO R0VfREVMRVRFIHx8CiAJCWNoYW5nZS0+YWN0aW9uID09IFJFT1JERVJfQlVGRkVSX0NIQU5H RV9JTlRFUk5BTF9TUEVDX0lOU0VSVCB8fAogCQljaGFuZ2UtPmFjdGlvbiA9PSBSRU9SREVS X0JVRkZFUl9DSEFOR0VfVFJVTkNBVEUgfHwKLQkJY2hhbmdlLT5hY3Rpb24gPT0gUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX01FU1NBR0UpCisJCWNoYW5nZS0+YWN0aW9uID09IFJFT1JERVJf QlVGRkVSX0NIQU5HRV9NRVNTQUdFIHx8CisJCWNoYW5nZS0+YWN0aW9uID09IFJFT1JERVJf QlVGRkVSX0NIQU5HRV9TRVFVRU5DRSkKIAl7CiAJCVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4 biA9IHJidHhuX2dldF90b3B0eG4odHhuKTsKIApAQCAtODk1LDYgKzk4MywzNTIgQEAgUmVv cmRlckJ1ZmZlclF1ZXVlTWVzc2FnZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25J ZCB4aWQsCiAJfQogfQogCisvKgorICogVHJlYXQgdGhlIHNlcXVlbmNlIGNoYW5nZSBhcyB0 cmFuc2FjdGlvbmFsPworICoKKyAqIFRvIGRlY2lkZSBpZiBhIHNlcXVlbmNlIGNoYW5nZSBz aG91bGQgYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFsIG9yIGFwcGxpZWQKKyAqIGltbWVk aWF0ZWx5LCB3ZSBuZWVkIHRvIGRlY2lkZSBpZiB0aGUgcmVsZmlsZW5vZGUgd2FzIGNyZWF0 ZWQgYnkgYSBydW5uaW5nCisgKiB0cmFuc2FjdGlvbi4gRWFjaCB0cmFuc2FjdGlvbiBoYXMg YSBoYXNoIHRhYmxlIG9mIHN1Y2ggcmVsZmlsZW5vZGVzLgorICoKKyAqIEEgbmFpdmUgYXBw cm9hY2ggd291bGQgYmUgdG8ganVzdCBsb29wIHRocm91Z2ggYWxsIHRyYW5zYWN0aW9ucyBh bmQgY2hlY2sKKyAqIGVhY2ggb2YgdGhlbSwgYnV0IHRoZXJlIG1heSBiZSBtYW55IChlYXNp bHkgdGhvdXNhbmRzIG9mKSBzdWJ0cmFuc2FjdGlvbnMsCisgKiBhbmQgdGhlIGNoZWNrIGhh cHBlbnMgZm9yIGVhY2ggc2VxdWVuY2UgY2hhbmdlLiBTbyB0aGlzIGNvdWxkIGJlIHZlcnkg Y29zdGx5LgorICoKKyAqIFRvIGxpbWl0IHRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIHdl IG5lZWQgdG8gY2hlY2ssIHdlIHRyYW5zZmVyIHRoZQorICogcmVsZmlsZW5vZGVzIHRvIHRo ZSB0b3AtbGV2ZWwgeGFjdCwgd2hpY2ggYWxsb3dzIHVzIHRvIGNoZWNrIGp1c3QgdGhlCisg KiB0b3AtbGV2ZWwgeGFjdHMgKGFuZCB0aGVyZSBzaG91bGQgYmUgYSB2ZXJ5IGxpbWl0ZWQg bnVtYmVyIG9mIHRob3NlKS4gV2UKKyAqIGV4cGVjdCByZWxmaWxlbm9kZSBjcmVhdGlvbiB0 byBiZSBhIHF1aXRlIHJhcmUgdGhpbmcsIHNvIHRoaXMgc2hvdWxkIG5vdAorICogd2FzdGUg dG9vIG11Y2ggbWVtb3J5LiBPVE9IIHNlcXVlbmNlIGNoYW5nZXMgYXJlIHZlcnkgY29tbW9u LCBzbyBtYWtpbmcKKyAqIHRoZSBjaGVjayBjaGVhcGVyIHNlZW1zIGxpa2UgYSBnb29kIHRy YWRlIG9mZi4KKyAqCisgKiBSZXR1cm5zIHRydWUgZm9yIHRyYW5zYWN0aW9uYWwgY2hhbmdl cywgZmFsc2Ugb3RoZXJ3aXNlLgorICoKKyAqIE9wdGlvbmFseSAod2hlbiB0aGUgInhpZCIg cGFyYW1ldGVyIGlzIHNldCkgcmV0dXJucyBYSUQgb2YgdGhlIChzdWIpeGFjdAorICogdG8g dXNlIGZvciBxdWV1ZWluZyB0cmFuc2FjdGlvbmFsIGNoYW5nZXMuCisgKgorICogWFhYIEFz IGFuIG9wdGltaXphdGlvbiwgbWF5YmUgd2Ugc2hvdWxkIHRyeSBzZWFyY2hpbmcgdGhlIGN1 cnJlbnQgeGFjdCAob3IKKyAqIGl0J3MgdG9wLWxldmVsIHhhY3QpIGZpcnN0LiBJZiB0aGUg Y2hhbmdlIGlzIHRyYW5zYWN0aW9uYWwsIHdoZXJlIHdlJ2QKKyAqIGZpbmQgdGhlIG1hdGNo LgorICovCitib29sCitSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwoUmVv cmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsCisJ CQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqeGlkKQoreworCWJvb2wJCWZvdW5kID0gZmFsc2U7 CisJZGxpc3RfaXRlcglpdGVyOworCisJQXNzZXJ0Q2hlY2tTZXF1ZW5jZXMocmIpOworCisJ LyoKKwkgKiBXYWxrIGFsbCB0b3AtbGV2ZWwgdHJhbnNhY3Rpb25zIChzb21lIG9mIHdoaWNo IG1heSBiZSBzdWJ4YWN0cywgZXhjZXB0CisJICogdGhhdCB3ZSBoYXZlbid0IHByb2Nlc3Nl ZCB0aGUgYXNzaWdubWVudHMgeWV0KSwgYW5kIGNoZWNrIGlmIGFueSBvZgorCSAqIHRoZW0g Y3JlYXRlZCB0aGUgcmVsZmlsZW5vZGUuCisJICovCisJZGxpc3RfZm9yZWFjaChpdGVyLCAm cmItPnRvcGxldmVsX2J5X2xzbikKKwl7CisJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAq ZW50cnk7CisJCVJlb3JkZXJCdWZmZXJUWE4gKnR4biA9IGRsaXN0X2NvbnRhaW5lcihSZW9y ZGVyQnVmZmVyVFhOLCBub2RlLAorCQkJCQkJCQkJCQkJaXRlci5jdXIpOworCisJCS8qIHRy YW5zYWN0aW9uIGhhcyBubyByZWxmaWxlbm9kZXMgYXQgYWxsICovCisJCWlmICghdHhuLT5z ZXF1ZW5jZXNfaGFzaCkKKwkJCWNvbnRpbnVlOworCisJCWVudHJ5ID0gaGFzaF9zZWFyY2go dHhuLT5zZXF1ZW5jZXNfaGFzaCwKKwkJCQkJCQkodm9pZCAqKSAmcmxvY2F0b3IsCisJCQkJ CQkJSEFTSF9GSU5ELAorCQkJCQkJCSZmb3VuZCk7CisKKwkJLyoKKwkJICogSWYgd2UgZm91 bmQgYW4gZW50cnkgd2l0aCBtYXRjaGluZyByZWxmaWxlbm9kZSwgd2UncmUgZG9uZSAtIHdl CisJCSAqIGhhdmUgdG8gdHJlYXQgdGhlIHNlcXVlbmNlIGNoYW5nZSBhcyB0cmFuc2FjdGlv bmFsLCBhbmQgcmVwbGF5IGl0CisJCSAqIGluIHRoZSBzYW1lIChzdWIpdHJhbnNhY3Rpb24g anVzdCBsaWtlIGFueSBvdGhlciBjaGFuZ2UuCisJCSAqCisJCSAqIE9wdGlvbmFsbHkgc2V0 IFhJRCBvZiB0aGUgKHN1Yil4YWN0IHRoYXQgY3JlYXRlZCB0aGUgcmVsZmlsZW5vZGUuCisJ CSAqLworCQlpZiAoZm91bmQpCisJCXsKKwkJCWlmICh4aWQpCisJCQkJKnhpZCA9IGVudHJ5 LT50eG4tPnhpZDsKKworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1cm4gZm91bmQ7Cit9 CisKKy8qCisgKiBDbGVhbnVwIHNlcXVlbmNlcyBhZnRlciBhIHN1YnRyYW5zYWN0aW9uIGdv dCBjb21taXR0ZWQvYWJvcnRlZC4KKyAqCisgKiBUaGUgaGFzaCB0YWJsZSB3aWxsIGdldCBk ZXN0cm95ZWQgaW4gUmVvcmRlckJ1ZmZlclJldHVyblRYTiwgc28gd2UgZG9uJ3QKKyAqIG5l ZWQgdG8gd29ycnkgYWJvdXQgdGhhdC4gQnV0IHRoZSBlbnRyaWVzIHdlcmUgY29waWVkIHRv IHRoZSBwYXJlbnQgeGFjdCwKKyAqIGFuZCB0aGF0J3Mgc3RpbGwgYmVpbmcgZGVjb2RlZCAt IHdlIG1ha2Ugc3VyZSB0byByZW1vdmUgdGhlIGVudHJpZXMgZnJvbQorICogdGhlIGNvbW1p dHRlZC9hYm9ydGVkIG9uZS4KKyAqLworc3RhdGljIHZvaWQKK1Jlb3JkZXJCdWZmZXJTZXF1 ZW5jZUNsZWFudXAoUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQoreworCUhBU0hfU0VRX1NUQVRV UyBzY2FuX3N0YXR1czsKKwlSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKmVudDsKKworCS8q IEJhaWwgb3V0IGlmIG5vdCBhIHN1YnhhY3QsIG9yIGlmIHRoZXJlIGFyZSBubyBlbnRyaWVz LiAqLworCWlmICghcmJ0eG5faXNfa25vd25fc3VieGFjdCh0eG4pKQorCQlyZXR1cm47CisK KwlpZiAoIXR4bi0+c2VxdWVuY2VzX2hhc2gpCisJCXJldHVybjsKKworCS8qCisJICogU2Nh biB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGhhc2ggYW5kIHJlbW92ZSB0aGUgZW50cmll cyBmcm9tIGl0LiBJZgorCSAqIHdlIGhhdmUgZW50cmllcyBmb3Igc3VieGFjdCwgdGhlIHRv cC1sZXZlbCBoYXNoIG11c3QgaGF2ZSBiZWVuCisJICogaW5pdGlhbGl6ZWQuCisJICovCisJ aGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHR4bi0+c2VxdWVuY2VzX2hhc2gpOworCXdo aWxlICgoZW50ID0gKFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqKSBoYXNoX3NlcV9zZWFy Y2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCWlmIChoYXNoX3NlYXJjaCh0eG4t PnRvcHR4bi0+c2VxdWVuY2VzX2hhc2gsCisJCQkJCQkodm9pZCAqKSAmZW50LT5ybG9jYXRv ciwKKwkJCQkJCUhBU0hfUkVNT1ZFLCBOVUxMKSA9PSBOVUxMKQorCQkJZWxvZyhFUlJPUiwg Imhhc2ggdGFibGUgY29ycnVwdGVkIik7CisJfQorfQorCisvKgorICogQSB0cmFuc2FjdGlv bmFsIHNlcXVlbmNlIGNoYW5nZSBpcyBxdWV1ZWQgdG8gYmUgcHJvY2Vzc2VkIHVwb24gY29t bWl0CisgKiBhbmQgYSBub24tdHJhbnNhY3Rpb25hbCBjaGFuZ2UgZ2V0cyBwcm9jZXNzZWQg aW1tZWRpYXRlbHkuCisgKgorICogQSBzZXF1ZW5jZSB1cGRhdGUgbWF5IGJlIGJvdGggdHJh bnNhY3Rpb25hbCBhbmQgbm9uLXRyYW5zYWN0aW9uYWwuIFdoZW4KKyAqIGNyZWF0ZWQgaW4g YSBydW5uaW5nIHRyYW5zYWN0aW9uLCB0cmVhdCBpdCBhcyB0cmFuc2FjdGlvbmFsIGFuZCBx dWV1ZQorICogdGhlIGNoYW5nZSBpbiBpdC4gT3RoZXJ3aXNlIHRyZWF0IGl0IGFzIG5vbi10 cmFuc2FjdGlvbmFsLCBzbyB0aGF0IHdlCisgKiBkb24ndCBmb3JnZXQgdGhlIGNoYW5nZSBp biBjYXNlIG9mIGEgcm9sbGJhY2suCisgKi8KK3ZvaWQKK1Jlb3JkZXJCdWZmZXJRdWV1ZVNl cXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCSAg IFNuYXBzaG90IHNuYXBzaG90LCBYTG9nUmVjUHRyIGxzbiwgUmVwT3JpZ2luSWQgb3JpZ2lu X2lkLAorCQkJCQkJICAgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIGJvb2wgdHJhbnNhY3Rp b25hbCwKKwkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUdXBsZUJ1ZiAqdHVwbGVidWYpCit7CisJ QXNzZXJ0Q2hlY2tTZXF1ZW5jZXMocmIpOworCisJLyoKKwkgKiBDaGFuZ2UgbmVlZHMgdG8g YmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFsLCBiZWNhdXNlIHRoZSBzZXF1ZW5jZSB3YXMK KwkgKiBjcmVhdGVkIGluIGEgdHJhbnNhY3Rpb24gdGhhdCBpcyBzdGlsbCBzZWVuIGFzIHJ1 bm5pbmcuIEluIHRoYXQgY2FzZQorCSAqIGFsbCB0aGUgY2hhbmdlcyBuZWVkIHRvIGJlIHF1 ZXVlZCBpbiB0aGF0IHRyYW5zYWN0aW9uLCB3ZSBtdXN0IG5vdCBzZW5kCisJICogdGhlIGNo YW5nZXMgdG8gdGhlIGRvd25zdHJlYW0gdW50aWwgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdHMu CisJICoKKwkgKiBUaGVyZSdzIGEgYml0IG9mIGEgdHJvdWJsZSB3aXRoIHN1YnRyYW5zYWN0 aW9ucyAtIHdlIGNhbid0IHF1ZXVlIGl0CisJICogaW50byB0aGUgc3VieGFjdCwgYmVjYXVz ZSBpdCBtaWdodCBiZSByb2xsZWQgYmFjayBhbmQgd2UnZCBsb3NlIHRoZQorCSAqIGNoYW5n ZSAoYW5kIHRoYXQnZCBiZSB3cm9uZywgYXMgc2VxdWVuY2VzIGFyZSBub3QgdHJhbnNhY3Rp b25hbCkuIEJ1dAorCSAqIHdlIGFsc28gY2FuJ3QgcXVldWUgaXQgaW50byB0aGUgdG9wLWxl dmVsIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHRoZQorCSAqIHJlbGZpbGVub2RlIGNyZWF0aW9u IGlzIHRyYW5zYWN0aW9uYWwgLSBpZiB0aGF0IHN1YnhhY3QgZ2V0cyBhYm9ydGVkLAorCSAq IHdlIG11c3QgdGhyb3cgYXdheSB0aGUgY2hhbmdlcyB0b28uCisJICoKKwkgKiBTbyB3ZSBu ZWVkIHRvIHF1ZXVlIGl0IGludG8gdGhlIHNhbWUgKHN1Yil4YWN0IHRoYXQgY3JlYXRlZCB0 aGUgbmV3CisJICogc2VxdWVuY2UgcmVsZmlsZW5vZGUsIHdoaWNoIGlzIHdoeSB3ZSBoYXZl IHRoZSBYSUQgaW4gdGhlIGhhc2ggdGFibGUuCisJICovCisJaWYgKHRyYW5zYWN0aW9uYWwp CisJeworCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJCVJlb3JkZXJCdWZmZXJDaGFu Z2UgKmNoYW5nZTsKKworCQkvKiBhbGxvY2F0ZSBhbmQgcXVldWUgdGhlIHRyYW5zYWN0aW9u YWwgc2VxdWVuY2UgY2hhbmdlICovCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8ocmItPmNvbnRleHQpOworCisJCWNoYW5nZSA9IFJlb3JkZXJCdWZmZXJHZXRDaGFu Z2UocmIpOworCisJCWNoYW5nZS0+YWN0aW9uID0gUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NF UVVFTkNFOworCQljaGFuZ2UtPm9yaWdpbl9pZCA9IG9yaWdpbl9pZDsKKworCQltZW1jcHko JmNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS5sb2NhdG9yLCAmcmxvY2F0b3IsIHNpemVvZihSZWxG aWxlTG9jYXRvcikpOworCisJCWNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZSA9IHR1cGxl YnVmOworCisJCS8qIGxvb2t1cCB0aGUgWElEIGZvciB0cmFuc2FjdGlvbiB0aGF0IGNyZWF0 ZWQgdGhlIHJlbGZpbGVub2RlICovCisJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUlzVHJhbnNh Y3Rpb25hbChyYiwgcmxvY2F0b3IsICZ4aWQpOworCisJCS8qIHRoZSBYSUQgc2hvdWxkIGJl IHZhbGlkIGZvciBhIHRyYW5zYWN0aW9uYWwgY2hhbmdlICovCisJCUFzc2VydChUcmFuc2Fj dGlvbklkSXNWYWxpZCh4aWQpKTsKKworCQkvKiBhZGQgaXQgdG8gdGhlIHNhbWUgKHN1Yil4 YWN0IHRoYXQgY3JlYXRlZCB0aGF0IHJlbGZpbGVub2RlICovCisJCVJlb3JkZXJCdWZmZXJR dWV1ZUNoYW5nZShyYiwgeGlkLCBsc24sIGNoYW5nZSwgZmFsc2UpOworCisJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICog VGhpcyBjaGFuZ2UgaXMgZm9yIGEgc2VxdWVuY2UgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW4g YW55IHJ1bm5pbmcKKwkJICogdHJhbnNhY3Rpb24sIHNvIHdlIHRyZWF0IGl0IGFzIG5vbi10 cmFuc2FjdGlvbmFsIGFuZCBqdXN0IHNlbmQgaXQKKwkJICogdG8gdGhlIG91dHB1dCBwbHVn aW4gZGlyZWN0bHkuCisJCSAqLworCQlSZW9yZGVyQnVmZmVyVFhOICp0eG4gPSBOVUxMOwor CQl2b2xhdGlsZSBTbmFwc2hvdCBzbmFwc2hvdF9ub3cgPSBzbmFwc2hvdDsKKwkJYm9vbAkJ dXNpbmdfc3VidHhuOworCisJCS8qIG5vbi10cmFuc2FjdGlvbmFsIGNoYW5nZXMgcmVxdWly ZSBhIHZhbGlkIHNuYXBzaG90IGFuZCBYSUQgKi8KKwkJQXNzZXJ0KHNuYXBzaG90X25vdyk7 CisJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsKKworCQkvKiBNYWtlIHN1 cmUgdGhlIHNlcXVlbmNlIGlzIG5vdCBpbiBhbnkgb2YgdGhlIGhhc2ggdGFibGVzICovCisJ CUFzc2VydCghUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNUcmFuc2FjdGlvbmFsKHJiLCBybG9j YXRvciwgTlVMTCkpOworCisJCXR4biA9IFJlb3JkZXJCdWZmZXJUWE5CeVhpZChyYiwgeGlk LCB0cnVlLCBOVUxMLCBsc24sIHRydWUpOworCisJCS8qIHNldHVwIHNuYXBzaG90IHRvIGFs bG93IGNhdGFsb2cgYWNjZXNzICovCisJCVNldHVwSGlzdG9yaWNTbmFwc2hvdChzbmFwc2hv dF9ub3csIE5VTEwpOworCisJCS8qCisJCSAqIERlY29kaW5nIG5lZWRzIGFjY2VzcyB0byBz eXNjYWNoZXMgZXQgYWwuLCB3aGljaCBpbiB0dXJuIHVzZQorCQkgKiBoZWF2eXdlaWdodCBs b2NrcyBhbmQgc3VjaC4gVGh1cyB3ZSBuZWVkIHRvIGhhdmUgZW5vdWdoIHN0YXRlCisJCSAq IGFyb3VuZCB0byBrZWVwIHRyYWNrIG9mIHRob3NlLiAgVGhlIGVhc2llc3Qgd2F5IGlzIHRv IHNpbXBseSB1c2UgYQorCQkgKiB0cmFuc2FjdGlvbiBpbnRlcm5hbGx5LiAgVGhhdCBhbHNv IGFsbG93cyB1cyB0byBlYXNpbHkgZW5mb3JjZSB0aGF0CisJCSAqIG5vdGhpbmcgd3JpdGVz IHRvIHRoZSBkYXRhYmFzZSBieSBjaGVja2luZyBmb3IgeGlkIGFzc2lnbm1lbnRzLgorCQkg KgorCQkgKiBXaGVuIHdlJ3JlIGNhbGxlZCB2aWEgdGhlIFNRTCBTUkYgdGhlcmUncyBhbHJl YWR5IGEgdHJhbnNhY3Rpb24KKwkJICogc3RhcnRlZCwgc28gc3RhcnQgYW4gZXhwbGljaXQg c3VidHJhbnNhY3Rpb24gdGhlcmUuCisJCSAqLworCQl1c2luZ19zdWJ0eG4gPSBJc1RyYW5z YWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCk7CisKKwkJUEdfVFJZKCk7CisJCXsKKwkJCVJl bGF0aW9uCXJlbGF0aW9uOworCQkJSGVhcFR1cGxlCXR1cGxlOworCQkJRm9ybV9wZ19zZXF1 ZW5jZV9kYXRhIHNlcTsKKwkJCU9pZAkJCXJlbG9pZDsKKwkJCWludDY0CQl2YWx1ZTsKKwor CQkJaWYgKHVzaW5nX3N1YnR4bikKKwkJCQlCZWdpbkludGVybmFsU3ViVHJhbnNhY3Rpb24o InNlcXVlbmNlIik7CisJCQllbHNlCisJCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KworCQkJcmVsb2lkID0gUmVsaWRCeVJlbGZpbGVudW1iZXIocmxvY2F0b3Iuc3BjT2lkLCBy bG9jYXRvci5yZWxOdW1iZXIpOworCisJCQlpZiAocmVsb2lkID09IEludmFsaWRPaWQpCisJ CQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBtYXAgZmlsZW5vZGUgXCIlc1wiIHRvIHJlbGF0 aW9uIE9JRCIsCisJCQkJCSByZWxwYXRocGVybShybG9jYXRvciwKKwkJCQkJCQkJIE1BSU5f Rk9SS05VTSkpOworCisJCQlyZWxhdGlvbiA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihyZWxv aWQpOworCisJCQlpZiAoIVJlbGF0aW9uSXNWYWxpZChyZWxhdGlvbikpCisJCQkJZWxvZyhF UlJPUiwgImNvdWxkIG5vdCBvcGVuIHJlbGF0aW9uIHdpdGggT0lEICV1IChmb3IgZmlsZW5v ZGUgXCIlc1wiKSIsCisJCQkJCSByZWxvaWQsCisJCQkJCSByZWxwYXRocGVybShybG9jYXRv ciwgTUFJTl9GT1JLTlVNKSk7CisKKwkJCXR1cGxlID0gJnR1cGxlYnVmLT50dXBsZTsKKwkJ CXNlcSA9IChGb3JtX3BnX3NlcXVlbmNlX2RhdGEpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJ CS8qCisJCQkgKiBDYWxjdWxhdGUgdGhlIGZpcnN0IHZhbHVlIG9mIHRoZSBuZXh0IGJhdGNo IChhdCB3aGljaCBwb2ludCB3ZQorCQkJICogZ2VuZXJhdGUgYW5kIGRlY29kZSBhbm90aGVy IFdBTCByZWNvcmQpLgorCQkJICovCisJCQl2YWx1ZSA9IHNlcS0+bGFzdF92YWx1ZTsKKwkJ CXZhbHVlICs9IChzZXEtPmlzX2NhbGxlZCkgPyBzZXEtPmxvZ19jbnQgOiAwOworCisJCQly Yi0+c2VxdWVuY2UocmIsIHR4biwgbHNuLCByZWxhdGlvbiwgdHJhbnNhY3Rpb25hbCwgdmFs dWUpOworCisJCQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKworCQkJVGVhcmRvd25IaXN0 b3JpY1NuYXBzaG90KGZhbHNlKTsKKworCQkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsK KworCQkJaWYgKHVzaW5nX3N1YnR4bikKKwkJCQlSb2xsYmFja0FuZFJlbGVhc2VDdXJyZW50 U3ViVHJhbnNhY3Rpb24oKTsKKwkJfQorCQlQR19DQVRDSCgpOworCQl7CisJCQlUZWFyZG93 bkhpc3RvcmljU25hcHNob3QodHJ1ZSk7CisKKwkJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9u KCk7CisKKwkJCWlmICh1c2luZ19zdWJ0eG4pCisJCQkJUm9sbGJhY2tBbmRSZWxlYXNlQ3Vy cmVudFN1YlRyYW5zYWN0aW9uKCk7CisKKwkJCVBHX1JFX1RIUk9XKCk7CisJCX0KKwkJUEdf RU5EX1RSWSgpOworCX0KK30KKworLyoKKyAqIFJlb3JkZXJCdWZmZXJBZGRSZWxGaWxlTG9j YXRvcgorICoJCUFkZCBuZXdseSBjcmVhdGVkIHJlbGZpbGVub2RlIHRvIHRoZSBoYXNoIHRh YmxlIGZvciB0cmFuc2FjdGlvbi4KKyAqCisgKiBJZiB0aGUgdHJhbnNhY3Rpb24gaXMgYWxy ZWFkeSBrbm93biB0byBiZSBhIHN1YnRyYW5zYWN0aW9uLCB3ZSBhZGQgdGhlIHNhbWUKKyAq IGVudHJ5IGludG8gdGhlIHBhcmVudCB0cmFuc2FjdGlvbiAoYnV0IGl0IHN0aWxsIHBvaW50 cyBhdCB0aGUgc3VieGFjdCwgc28KKyAqIHRoYXQgd2Uga25vdyB3aGVyZSB0byBxdWV1ZSBj aGFuZ2VzIG9yIHdoYXQgdG8gZGlzY2FyZCBpbiBjYXNlIG9mIGFuIGFib3J0KS4KKyAqLwor dm9pZAorUmVvcmRlckJ1ZmZlckFkZFJlbEZpbGVMb2NhdG9yKFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkgICBYTG9nUmVjUHRyIGxzbiwgUmVsRmls ZUxvY2F0b3IgcmxvY2F0b3IpCit7CisJYm9vbAkJZm91bmQ7CisJUmVvcmRlckJ1ZmZlclNl cXVlbmNlRW50ICplbnRyeTsKKwlSZW9yZGVyQnVmZmVyVFhOICp0eG47CisKKwlBc3NlcnRD aGVja1NlcXVlbmNlcyhyYik7CisKKwkvKgorCSAqIFdlIG9ubHkgY2FyZSBhYm91dCBzZXF1 ZW5jZSByZWxmaWxlbm9kZXMgZm9yIG5vdywgYW5kIHRob3NlIGFsd2F5cyBoYXZlCisJICog YSBYSUQuIFNvIGlmIHRoZXJlJ3Mgbm8gWElELCBkb24ndCBib3RoZXIgYWRkaW5nIHRoZW0g dG8gdGhlIGhhc2guCisJICovCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQor CQlyZXR1cm47CisKKwkvKgorCSAqIFRoaXMgbWlnaHQgYmUgdGhlIGZpcnN0IGNoYW5nZSBk ZWNvZGVkIGZvciB0aGlzIHRyYW5zYWN0aW9uLCBzbyBtYWtlCisJICogc3VyZSB3ZSBjcmVh dGUgaXQgaWYgbmVlZGVkLgorCSAqLworCXR4biA9IFJlb3JkZXJCdWZmZXJUWE5CeVhpZChy YiwgeGlkLCB0cnVlLCBOVUxMLCBsc24sIHRydWUpOworCisJLyoKKwkgKiBGaXJzdCBhZGQg aXQgdG8gdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiwgYnV0IG1ha2Ugc3VyZSBpdCBsaW5r cyB0bworCSAqIHRoZSBjb3JyZWN0IHN1YnRyYW5zYWN0aW9uIChzbyB0aGF0IHdlIGFkZCBs YXRlciBjaGFuZ2VzIHRvIGl0KS4KKwkgKi8KKwlpZiAodHhuLT50b3B0eG4pCisJeworCQkv KiBtYWtlIHN1cmUgdGhlIGhhc2ggdGFibGUgaXMgaW5pdGlhbGl6ZWQgKi8KKwkJUmVvcmRl ckJ1ZmZlclRYTlNlcXVlbmNlc0luaXQocmIsIHR4bi0+dG9wdHhuKTsKKworCQkvKiBzZWFy Y2ggdGhlIGxvb2t1cCB0YWJsZSAqLworCQllbnRyeSA9IGhhc2hfc2VhcmNoKHR4bi0+dG9w dHhuLT5zZXF1ZW5jZXNfaGFzaCwKKwkJCQkJCQkodm9pZCAqKSAmcmxvY2F0b3IsCisJCQkJ CQkJSEFTSF9FTlRFUiwKKwkJCQkJCQkmZm91bmQpOworCisJCS8qCisJCSAqIFdlJ3ZlIGp1 c3QgZGVjb2RlZCBjcmVhdGlvbiBvZiB0aGUgcmVsZmlsZW5vZGUsIHNvIGlmIHdlIGZvdW5k IGl0CisJCSAqIGluIHRoZSBoYXNoIHRhYmxlLCBzb21ldGhpbmcgaXMgd3JvbmcuCisJCSAq LworCQlBc3NlcnQoIWZvdW5kKTsKKworCQllbnRyeS0+dHhuID0gdHhuOworCX0KKworCS8q IG1ha2Ugc3VyZSB0aGUgaGFzaCB0YWJsZSBpcyBpbml0aWFsaXplZCAqLworCVJlb3JkZXJC dWZmZXJUWE5TZXF1ZW5jZXNJbml0KHJiLCB0eG4pOworCisJLyogc2VhcmNoIHRoZSBsb29r dXAgdGFibGUgKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKHR4bi0+c2VxdWVuY2VzX2hhc2gs CisJCQkJCQkodm9pZCAqKSAmcmxvY2F0b3IsCisJCQkJCQlIQVNIX0VOVEVSLAorCQkJCQkJ JmZvdW5kKTsKKworCS8qCisJICogV2UndmUganVzdCBkZWNvZGVkIGNyZWF0aW9uIG9mIHRo ZSByZWxmaWxlbm9kZSwgc28gaWYgd2UgZm91bmQgaXQgaW4KKwkgKiB0aGUgaGFzaCB0YWJs ZSwgc29tZXRoaW5nIGlzIHdyb25nLgorCSAqLworCUFzc2VydCghZm91bmQpOworCisJZW50 cnktPnR4biA9IHR4bjsKKworCUFzc2VydENoZWNrU2VxdWVuY2VzKHJiKTsKK30KKwogLyoK ICAqIEFzc2VydFRYTkxzbk9yZGVyCiAgKgkJVmVyaWZ5IExTTiBvcmRlcmluZyBvZiB0cmFu c2FjdGlvbiBsaXN0cyBpbiB0aGUgcmVvcmRlcmJ1ZmZlcgpAQCAtOTY5LDYgKzE0MDMsMTYx IEBAIEFzc2VydFRYTkxzbk9yZGVyKFJlb3JkZXJCdWZmZXIgKnJiKQogI2VuZGlmCiB9CiAK Ky8qCisgKiBBc3NlcnRDaGVja1NlcXVlbmNlcworICoJCVZlcmlmeSBjb25zaXN0ZW5jeSBv ZiBoYXNoIHRhYmxlcyB0cmFja2luZyBuZXcgcmVsZmlsZW5vZGVzLgorICoKKyAqIFdlIGNo ZWNrIHRoYXQgdGhlIGhhc2ggdGFibGUgaW4gdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiBp cyBjb25zaXN0ZW50IHdpdGgKKyAqIHJlc3BlY3QgdG8gdGhlIGhhc2ggdGFibGVzIGluIGl0 J3Mgc3VieGFjdHMuIFRoYXQgaXMsIGVhY2ggZW50cnkgaGFzIHRvIGJlCisgKiBlaXRoZXIg ZnJvbSB0aGUgdG9wLWxldmVsIHhhY3Qgb3Igb25lIG9mIGl0J3Mgc3VidHJhbnNhY3Rpb25z LiBMaWtld2lzZSwgZWFjaAorICogZW50cnkgaW4gc3VieGFjdCBoYXNoIHRhYmxlIGhhcyB0 byBoYXZlIGEgbWF0Y2ggaW4gdGhlIHRvcC1sZXZlbCBoYXNoIHRhYmxlLgorICovCitzdGF0 aWMgdm9pZAorQXNzZXJ0Q2hlY2tTZXF1ZW5jZXMoUmVvcmRlckJ1ZmZlciAqcmIpCit7Cisj aWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCA9IHJiLT5wcml2YXRlX2RhdGE7CisJZGxpc3RfaXRlcglpdGVyOworCisJLyoKKwkgKiBT a2lwIHRoZSB2ZXJpZmljYXRpb24gaWYgd2UgZG9uJ3QgcmVhY2ggdGhlIExTTiBhdCB3aGlj aCB3ZSBzdGFydAorCSAqIGRlY29kaW5nIHRoZSBjb250ZW50cyBvZiB0cmFuc2FjdGlvbnMg eWV0IGJlY2F1c2UgdW50aWwgd2UgcmVhY2ggdGhlCisJICogTFNOLCB3ZSBjb3VsZCBoYXZl IHRyYW5zYWN0aW9ucyB0aGF0IGRvbid0IGhhdmUgdGhlIGFzc29jaWF0aW9uIGJldHdlZW4K KwkgKiB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlvbiB5ZXQg YW5kIGNvbnNlcXVlbnRseSBoYXZlCisJICogdGhlIHNhbWUgTFNOLiAgV2UgZG9uJ3QgZ3Vh cmFudGVlIHRoaXMgYXNzb2NpYXRpb24gdW50aWwgd2UgdHJ5IHRvCisJICogZGVjb2RlIHRo ZSBhY3R1YWwgY29udGVudHMgb2YgdHJhbnNhY3Rpb24uIFRoZSBvcmRlcmluZyBvZiB0aGUg cmVjb3JkcworCSAqIHByaW9yIHRvIHRoZSBzdGFydF9kZWNvZGluZ19hdCBMU04gc2hvdWxk IGhhdmUgYmVlbiBjaGVja2VkIGJlZm9yZSB0aGUKKwkgKiByZXN0YXJ0LgorCSAqLworCWlm IChTbmFwQnVpbGRYYWN0TmVlZHNTa2lwKGN0eC0+c25hcHNob3RfYnVpbGRlciwgY3R4LT5y ZWFkZXItPkVuZFJlY1B0cikpCisJCXJldHVybjsKKworCS8qCisJICogTWFrZSBzdXJlIHRo ZSByZWxmaWxlbm9kZXMgZnJvbSBzdWJ4YWN0cyBhcmUgcHJvcGVybHkgcmVjb3JkZWQgaW4g dGhlCisJICogdG9wLWxldmVsIHRyYW5zYWN0aW9uIGhhc2ggdGFibGUuCisJICovCisJZGxp c3RfZm9yZWFjaChpdGVyLCAmcmItPnRvcGxldmVsX2J5X2xzbikKKwl7CisJCWludAkJCW5l bnRyaWVzID0gMCwKKwkJCQkJbnN1YmVudHJpZXMgPSAwOworCQlkbGlzdF9pdGVyCXN1Yml0 ZXI7CisJCVJlb3JkZXJCdWZmZXJUWE4gKnR4biA9IGRsaXN0X2NvbnRhaW5lcihSZW9yZGVy QnVmZmVyVFhOLCBub2RlLAorCQkJCQkJCQkJCQkJaXRlci5jdXIpOworCisJCS8qCisJCSAq IFdlIGRvbid0IHNraXAgdG9wLWxldmVsIHRyYW5zYWN0aW9ucyB3aXRob3V0IHJlbGZpbGVu b2RlcywgYmVjYXVzZQorCQkgKiB0aGVyZSBtaWdodCBiZSBhIHN1YnRyYW5zYWN0aW9uIHdp dGggc29tZSwgYW5kIHdlIHdhbnQgdG8gZGV0ZWN0CisJCSAqIHN1Y2ggY2FzZXMgdG9vLgor CQkgKi8KKwkJaWYgKHR4bi0+c2VxdWVuY2VzX2hhc2gpCisJCQluZW50cmllcyA9IGhhc2hf Z2V0X251bV9lbnRyaWVzKHR4bi0+c2VxdWVuY2VzX2hhc2gpOworCisJCS8qIHdhbGsgYWxs IHN1YnhhY3RzLCBhbmQgY2hlY2sgdGhlIGhhc2ggdGFibGUgaW4gZWFjaCBvbmUgKi8KKwkJ ZGxpc3RfZm9yZWFjaChzdWJpdGVyLCAmdHhuLT5zdWJ0eG5zKQorCQl7CisJCQlIQVNIX1NF UV9TVEFUVVMgc2Nhbl9zdGF0dXM7CisJCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKmVu dHJ5OworCisJCQlSZW9yZGVyQnVmZmVyVFhOICpzdWJ0eG4gPSBkbGlzdF9jb250YWluZXIo UmVvcmRlckJ1ZmZlclRYTiwgbm9kZSwKKwkJCQkJCQkJCQkJCQkgICBzdWJpdGVyLmN1cik7 CisKKwkJCS8qCisJCQkgKiBJZiB0aGlzIHN1YnhhY3QgaGFzIG5vIHJlbGZpbGVub2Rlcywg c2tpcCBpdC4gV2UnbGwgZG8gdGhlCisJCQkgKiBjaGVjayBpbiB0aGUgb3Bwb3NpdGUgZGly ZWN0aW9uICh0aGF0IGFsbCB0b3AtbGV2ZWwKKwkJCSAqIHJlbGZpbGVub2RlcyBhcmUgaW4g dGhlIGNvcnJlY3Qgc3VieGFjdCkgbGF0ZXIuCisJCQkgKi8KKwkJCWlmICghc3VidHhuLT5z ZXF1ZW5jZXNfaGFzaCkKKwkJCQljb250aW51ZTsKKworCQkJLyogYWRkIG51bWJlciBvZiBy ZWxmaWxlbm9kZXMgaW4gdGhpcyBzdWJ4YWN0ICovCisJCQluc3ViZW50cmllcyArPSBoYXNo X2dldF9udW1fZW50cmllcyhzdWJ0eG4tPnNlcXVlbmNlc19oYXNoKTsKKworCQkJLyoKKwkJ CSAqIENoZWNrIHRoYXQgYWxsIHN1YnhhY3QgcmVsZmlsZW5vZGVzIGFyZSBpbiB0aGUgdG9w LWxldmVsIHR4bgorCQkJICogdG9vLCBhbmQgYXJlIHBvaW50aW5nIHRvIHRoaXMgc3VidHJh bnNhY3Rpb24uCisJCQkgKi8KKwkJCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBzdWJ0 eG4tPnNlcXVlbmNlc19oYXNoKTsKKwkJCXdoaWxlICgoZW50cnkgPSAoUmVvcmRlckJ1ZmZl clNlcXVlbmNlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxM KQorCQkJeworCQkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCQkJUmVvcmRlckJ1ZmZlclNl cXVlbmNlRW50ICpzdWJlbnRyeTsKKworCQkJCS8qIHNlYXJjaCBmb3IgdGhlIHNhbWUgcmVs ZmlsZW5vZGUgaW4gdGhlIHRvcC1sZXZlbCB0eG4gKi8KKwkJCQlzdWJlbnRyeSA9IGhhc2hf c2VhcmNoKHR4bi0+c2VxdWVuY2VzX2hhc2gsCisJCQkJCQkJCQkgICAodm9pZCAqKSAmZW50 cnktPnJsb2NhdG9yLAorCQkJCQkJCQkJICAgSEFTSF9GSU5ELAorCQkJCQkJCQkJICAgJmZv dW5kKTsKKworCQkJCS8qCisJCQkJICogVGhlIHRvcC1sZXZlbCB0eG4gaGFzaCBzaG91bGQg aGF2ZSB0aGUgcmVsZmlsZW5vZGUgdG9vLCBhbmQKKwkJCQkgKiBpdCBzaG91bGQgcG9pbnQg dG8gdGhpcyBzdWJ4YWN0LgorCQkJCSAqLworCQkJCUFzc2VydChmb3VuZCk7CisKKwkJCQkv KgorCQkJCSAqIFRoZSBlbnRyeSBoYXMgdG8gcG9pbnQgdG8gdGhlIHN1YnhhY3QgLSB0aGVy ZSdzIG5vIHN1YnhhY3QKKwkJCQkgKiAiYmVsb3ciIHRoaXMgb25lIHRvIHdoaWNoIHRoZSBy ZWxmaWxlbm9kZSBjb3VsZCBiZWxvbmcuCisJCQkJICovCisJCQkJQXNzZXJ0KHN1YmVudHJ5 LT50eG4gPT0gc3VidHhuKTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIFdlIHNob3VsZG4n dCBoYXZlIG1vcmUgcmVsZmlsZW5vZGVzIGluIHN1YnRyYW5zYWN0aW9ucyB0aGFuIGluIHRo ZQorCQkgKiB0b3AtbGV2ZWwgb25lLiBUaGVyZSBtaWdodCBiZSByZWxmaWxlbm9kZXMgaW4g dGhlIHRvcC1sZXZlbCBvbmUKKwkJICogZGlyZWN0bHksIHNvIHRoaXMgbmVlZHMgdG8gYmUg aW5lcXVhbGl0eS4KKwkJICovCisJCUFzc2VydChuZW50cmllcyA+PSBuc3ViZW50cmllcyk7 CisKKwkJLyoKKwkJICogTm93IGRvIHRoZSBjaGVjayBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0 aW9uIC0gY2hlY2sgdGhhdCBldmVyeSBlbnRyeQorCQkgKiBpbiB0aGUgdG9wLWxldmVsIHR4 biAoZXhjZXB0IHRob3NlIHBvaW50aW5nIHRvIHRoZSB0b3AtbGV2ZWwgdHhuCisJCSAqIGl0 c2VsZikgcG9pbnQgdG8gb25lIG9mIHRoZSBzdWJ4YWN0cywgYW5kIHRoZXJlJ3MgYW4gZW50 cnkgaW4gdGhlCisJCSAqIHN1YnhhY3QgaGFzaC4KKwkJICovCisJCWlmICh0eG4tPnNlcXVl bmNlc19oYXNoKQorCQl7CisJCQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CisJCQlS ZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKmVudHJ5OworCisJCQloYXNoX3NlcV9pbml0KCZz Y2FuX3N0YXR1cywgdHhuLT5zZXF1ZW5jZXNfaGFzaCk7CisJCQl3aGlsZSAoKGVudHJ5ID0g KFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3Rh dHVzKSkgIT0gTlVMTCkKKwkJCXsKKwkJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCQkJCVJl b3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqc3ViZW50cnk7CisKKwkJCQkvKiBTa2lwIGVudHJp ZXMgZm9yIHRoZSB0b3AtbGV2ZWwgdHhuIGl0c2VsZi4gKi8KKwkJCQlpZiAoZW50cnktPnR4 biA9PSB0eG4pCisJCQkJCWNvbnRpbnVlOworCisJCQkJLyogSXMgaXQgYSBzdWJ4YWN0IG9m IHRoaXMgdHhuPyAqLworCQkJCUFzc2VydChyYnR4bl9pc19rbm93bl9zdWJ4YWN0KGVudHJ5 LT50eG4pKTsKKwkJCQlBc3NlcnQoZW50cnktPnR4bi0+dG9wdHhuID09IHR4bik7CisKKwkJ CQkvKgorCQkJCSAqIFNlYXJjaCBmb3IgdGhlIHNhbWUgcmVsZmlsZW5vZGUgaW4gdGhlIHN1 YnhhY3QgKGl0IHNob3VsZAorCQkJCSAqIGJlIGluaXRpYWxpemVkLCBhcyB3ZSBleHBlY3Qg aXQgdG8gY29udGFpbiB0aGUKKwkJCQkgKiByZWxmaWxlbm9kZSkuCisJCQkJICovCisJCQkJ c3ViZW50cnkgPSBoYXNoX3NlYXJjaChlbnRyeS0+dHhuLT5zZXF1ZW5jZXNfaGFzaCwKKwkJ CQkJCQkJCSAgICh2b2lkICopICZlbnRyeS0+cmxvY2F0b3IsCisJCQkJCQkJCQkgICBIQVNI X0ZJTkQsCisJCQkJCQkJCQkgICAmZm91bmQpOworCisJCQkJQXNzZXJ0KGZvdW5kKTsKKwor CQkJCS8qCisJCQkJICogQ2hlY2sgdGhlIHR4biBwb2ludGVyIGluIHRoZSB0b3AtbGV2ZWwg aGFzaCB0YWJsZSBlbnRyeSBpcworCQkJCSAqIGNvbnNpc3RlbnQgd2l0aCB0aGUgc3VieGFj dCBoYXNoIHRhYmxlICh3ZSBhbHJlYWR5IGNoZWNrZWQKKwkJCQkgKiB0aGUgc3VieGFjdCBl bnRyeSBwb2ludHMgdG8gdGhlIHN1YnhhY3QgaXRzZWxmKS4KKwkJCQkgKi8KKwkJCQlBc3Nl cnQoc3ViZW50cnktPnR4biA9IGVudHJ5LT50eG4pOworCQkJfQorCQl9CisJfQorI2VuZGlm Cit9CisKIC8qCiAgKiBBc3NlcnRDaGFuZ2VMc25PcmRlcgogICoKQEAgLTEwOTQsNiArMTY4 Myw5IEBAIFJlb3JkZXJCdWZmZXJBc3NpZ25DaGlsZChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsCiAJc3VidHhuLT50b3BsZXZlbF94aWQgPSB4aWQ7CiAJQXNzZXJ0 KHN1YnR4bi0+bnN1YnR4bnMgPT0gMCk7CiAKKwkvKiBUaGVyZSBzaG91bGQgYmUgbm8gc2Vx dWVuY2UgcmVsZmlsZW5vZGVzIGluIHRoZSBzdWJ4YWN0IHlldC4gKi8KKwlBc3NlcnQoIXN1 YnR4bi0+c2VxdWVuY2VzX2hhc2gpOworCiAJLyogc2V0IHRoZSByZWZlcmVuY2UgdG8gdG9w LWxldmVsIHRyYW5zYWN0aW9uICovCiAJc3VidHhuLT50b3B0eG4gPSB0eG47CiAKQEAgLTE5 OTcsNiArMjU4OSwzNSBAQCBSZW9yZGVyQnVmZmVyQXBwbHlNZXNzYWdlKFJlb3JkZXJCdWZm ZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCWNoYW5nZS0+ZGF0YS5tc2cu bWVzc2FnZSk7CiB9CiAKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFJlb3JkZXJCdWZm ZXJQcm9jZXNzVFhOIGZvciBhcHBseWluZyBzZXF1ZW5jZXMuCisgKi8KK3N0YXRpYyBpbmxp bmUgdm9pZAorUmVvcmRlckJ1ZmZlckFwcGx5U2VxdWVuY2UoUmVvcmRlckJ1ZmZlciAqcmIs IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCSAgIFJlbGF0aW9uIHJlbGF0aW9uLCBS ZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UsCisJCQkJCQkgICBib29sIHN0cmVhbWluZykK K3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHNlcTsKKwlp bnQ2NAkJdmFsdWU7CisKKwl0dXBsZSA9ICZjaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUt PnR1cGxlOworCXNlcSA9IChGb3JtX3BnX3NlcXVlbmNlX2RhdGEpIEdFVFNUUlVDVCh0dXBs ZSk7CisKKwl2YWx1ZSA9IHNlcS0+bGFzdF92YWx1ZTsKKwl2YWx1ZSArPSAoc2VxLT5pc19j YWxsZWQpID8gc2VxLT5sb2dfY250IDogMDsKKworCS8qCisJICogV2hlbiBjYWxsZWQgZnJv bSBSZW9yZGVyQnVmZmVyQXBwbHlTZXF1ZW5jZSwgd2UncmUgYXBwbHlpbmcgY2hhbmdlcwor CSAqIGFjY3VtdWxhdGVkIGluIGEgUmVvcmRlckJ1ZmZlclRYTiwgc28gYWxsIHRob3NlIGFy ZSB0cmFuc2FjdGlvbmFsCisJICogY2hhbmdlcyBvZiBzZXF1ZW5jZXMuCisJICovCisJaWYg KHN0cmVhbWluZykKKwkJcmItPnN0cmVhbV9zZXF1ZW5jZShyYiwgdHhuLCBjaGFuZ2UtPmxz biwgcmVsYXRpb24sIHRydWUsIHZhbHVlKTsKKwllbHNlCisJCXJiLT5zZXF1ZW5jZShyYiwg dHhuLCBjaGFuZ2UtPmxzbiwgcmVsYXRpb24sIHRydWUsIHZhbHVlKTsKK30KKwogLyoKICAq IEZ1bmN0aW9uIHRvIHN0b3JlIHRoZSBjb21tYW5kIGlkIGFuZCBzbmFwc2hvdCBhdCB0aGUg ZW5kIG9mIHRoZSBjdXJyZW50CiAgKiBzdHJlYW0gc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhl IHNhbWUgd2hpbGUgc2VuZGluZyB0aGUgbmV4dCBzdHJlYW0uCkBAIC0yNDQyLDYgKzMwNjMs MzEgQEAgUmVvcmRlckJ1ZmZlclByb2Nlc3NUWE4oUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIAkJCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRF Uk5BTF9UVVBMRUNJRDoKIAkJCQkJZWxvZyhFUlJPUiwgInR1cGxlY2lkIHZhbHVlIGluIGNo YW5nZXF1ZXVlIik7CiAJCQkJCWJyZWFrOworCisJCQkJY2FzZSBSRU9SREVSX0JVRkZFUl9D SEFOR0VfU0VRVUVOQ0U6CisJCQkJCUFzc2VydChzbmFwc2hvdF9ub3cpOworCisJCQkJCXJl bG9pZCA9IFJlbGlkQnlSZWxmaWxlbnVtYmVyKGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS5sb2Nh dG9yLnNwY09pZCwKKwkJCQkJCQkJCQkJCSAgY2hhbmdlLT5kYXRhLnNlcXVlbmNlLmxvY2F0 b3IucmVsTnVtYmVyKTsKKworCQkJCQlpZiAocmVsb2lkID09IEludmFsaWRPaWQpCisJCQkJ CQllbG9nKEVSUk9SLCAiY291bGQgbm90IG1hcCBmaWxlbm9kZSBcIiVzXCIgdG8gcmVsYXRp b24gT0lEIiwKKwkJCQkJCQkgcmVscGF0aHBlcm0oY2hhbmdlLT5kYXRhLnNlcXVlbmNlLmxv Y2F0b3IsCisJCQkJCQkJCQkJIE1BSU5fRk9SS05VTSkpOworCisJCQkJCXJlbGF0aW9uID0g UmVsYXRpb25JZEdldFJlbGF0aW9uKHJlbG9pZCk7CisKKwkJCQkJaWYgKCFSZWxhdGlvbklz VmFsaWQocmVsYXRpb24pKQorCQkJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBvcGVuIHJl bGF0aW9uIHdpdGggT0lEICV1IChmb3IgZmlsZW5vZGUgXCIlc1wiKSIsCisJCQkJCQkJIHJl bG9pZCwKKwkJCQkJCQkgcmVscGF0aHBlcm0oY2hhbmdlLT5kYXRhLnNlcXVlbmNlLmxvY2F0 b3IsCisJCQkJCQkJCQkJIE1BSU5fRk9SS05VTSkpOworCisJCQkJCWlmIChSZWxhdGlvbklz TG9naWNhbGx5TG9nZ2VkKHJlbGF0aW9uKSkKKwkJCQkJCVJlb3JkZXJCdWZmZXJBcHBseVNl cXVlbmNlKHJiLCB0eG4sIHJlbGF0aW9uLCBjaGFuZ2UsIHN0cmVhbWluZyk7CisKKwkJCQkJ UmVsYXRpb25DbG9zZShyZWxhdGlvbik7CisJCQkJCWJyZWFrOwogCQkJfQogCiAJCQkvKgpA QCAtMjg3Miw2ICszNTE4LDEwIEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9y ZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJLyogY2xlYW51cDogbWFrZSBz dXJlIHRoZXJlJ3Mgbm8gY2FjaGUgcG9sbHV0aW9uICovCiAJUmVvcmRlckJ1ZmZlckV4ZWN1 dGVJbnZhbGlkYXRpb25zKHR4bi0+bmludmFsaWRhdGlvbnMsCiAJCQkJCQkJCQkgIHR4bi0+ aW52YWxpZGF0aW9ucyk7CisKKwkvKiBjbGVhbnVwOiByZW1vdmUgc2VxdWVuY2UgcmVsZmls ZW5vZGVzIGZyb20gdGhlIHRvcC1sZXZlbCB0eG4gKi8KKwlSZW9yZGVyQnVmZmVyU2VxdWVu Y2VDbGVhbnVwKHR4bik7CisKIAlSZW9yZGVyQnVmZmVyQ2xlYW51cFRYTihyYiwgdHhuKTsK IH0KIApAQCAtMjkyMSw4ICszNTcxLDEzIEBAIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVy QnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAogCS8qIGNv c21ldGljLi4uICovCiAJdHhuLT5maW5hbF9sc24gPSBsc247CiAKKwkvKiByZW1vdmUgc2Vx dWVuY2UgcmVsZmlsZW5vZGVzIGZyb20gdGhlIHRvcC1sZXZlbCB0eG4gKi8KKwlSZW9yZGVy QnVmZmVyU2VxdWVuY2VDbGVhbnVwKHR4bik7CisKIAkvKiByZW1vdmUgcG90ZW50aWFsIG9u LWRpc2sgZGF0YSwgYW5kIGRlYWxsb2NhdGUgKi8KIAlSZW9yZGVyQnVmZmVyQ2xlYW51cFRY TihyYiwgdHhuKTsKKworCUFzc2VydENoZWNrU2VxdWVuY2VzKHJiKTsKIH0KIAogLyoKQEAg LTI5NTgsOCArMzYxMywxMyBAQCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZl ciAqcmIsIFRyYW5zYWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCkKIAkJCWlmIChyYnR4bl9p c19zdHJlYW1lZCh0eG4pKQogCQkJCXJiLT5zdHJlYW1fYWJvcnQocmIsIHR4biwgSW52YWxp ZFhMb2dSZWNQdHIpOwogCisJCQkvKiByZW1vdmUgc2VxdWVuY2UgcmVsZmlsZW5vZGVzIGZy b20gdGhlIHRvcC1sZXZlbCB0eG4gKi8KKwkJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNsZWFu dXAodHhuKTsKKwogCQkJLyogcmVtb3ZlIHBvdGVudGlhbCBvbi1kaXNrIGRhdGEsIGFuZCBk ZWFsbG9jYXRlIHRoaXMgdHggKi8KIAkJCVJlb3JkZXJCdWZmZXJDbGVhbnVwVFhOKHJiLCB0 eG4pOworCisJCQlBc3NlcnRDaGVja1NlcXVlbmNlcyhyYik7CiAJCX0KIAkJZWxzZQogCQkJ cmV0dXJuOwpAQCAtMzAwOCw2ICszNjY4LDkgQEAgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9y ZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWVs c2UKIAkJQXNzZXJ0KHR4bi0+bmludmFsaWRhdGlvbnMgPT0gMCk7CiAKKwkvKiByZW1vdmUg c2VxdWVuY2UgcmVsZmlsZW5vZGVzIGZyb20gYSB0b3AtbGV2ZWwgdHhuICovCisJUmVvcmRl ckJ1ZmZlclNlcXVlbmNlQ2xlYW51cCh0eG4pOworCiAJLyogcmVtb3ZlIHBvdGVudGlhbCBv bi1kaXNrIGRhdGEsIGFuZCBkZWFsbG9jYXRlICovCiAJUmVvcmRlckJ1ZmZlckNsZWFudXBU WE4ocmIsIHR4bik7CiB9CkBAIC0zOTA5LDYgKzQ1NzIsMzkgQEAgUmVvcmRlckJ1ZmZlclNl cmlhbGl6ZUNoYW5nZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LAogCQkJCW1lbWNweShkYXRhLCBjaGFuZ2UtPmRhdGEudHJ1bmNhdGUucmVsaWRzLCBzaXpl KTsKIAkJCQlkYXRhICs9IHNpemU7CiAKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBSRU9S REVSX0JVRkZFUl9DSEFOR0VfU0VRVUVOQ0U6CisJCQl7CisJCQkJY2hhcgkgICAqZGF0YTsK KwkJCQlSZW9yZGVyQnVmZmVyVHVwbGVCdWYgKnR1cDsKKwkJCQlTaXplCQlsZW4gPSAwOwor CisJCQkJdHVwID0gY2hhbmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlOworCisJCQkJaWYgKHR1 cCkKKwkJCQl7CisJCQkJCXN6ICs9IHNpemVvZihIZWFwVHVwbGVEYXRhKTsKKwkJCQkJbGVu ID0gdHVwLT50dXBsZS50X2xlbjsKKwkJCQkJc3ogKz0gbGVuOworCQkJCX0KKworCQkJCS8q IG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBzcGFjZSAqLworCQkJCVJlb3JkZXJCdWZmZXJT ZXJpYWxpemVSZXNlcnZlKHJiLCBzeik7CisKKwkJCQlkYXRhID0gKChjaGFyICopIHJiLT5v dXRidWYpICsgc2l6ZW9mKFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlKTsKKwkJCQkvKiBtaWdo dCBoYXZlIGJlZW4gcmVhbGxvY2F0ZWQgYWJvdmUgKi8KKwkJCQlvbmRpc2sgPSAoUmVvcmRl ckJ1ZmZlckRpc2tDaGFuZ2UgKikgcmItPm91dGJ1ZjsKKworCQkJCWlmIChsZW4pCisJCQkJ eworCQkJCQltZW1jcHkoZGF0YSwgJnR1cC0+dHVwbGUsIHNpemVvZihIZWFwVHVwbGVEYXRh KSk7CisJCQkJCWRhdGEgKz0gc2l6ZW9mKEhlYXBUdXBsZURhdGEpOworCisJCQkJCW1lbWNw eShkYXRhLCB0dXAtPnR1cGxlLnRfZGF0YSwgbGVuKTsKKwkJCQkJZGF0YSArPSBsZW47CisJ CQkJfQorCiAJCQkJYnJlYWs7CiAJCQl9CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdF X0lOVEVSTkFMX1NQRUNfQ09ORklSTToKQEAgLTQxNzMsNiArNDg2OSwyMiBAQCBSZW9yZGVy QnVmZmVyQ2hhbmdlU2l6ZShSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UpCiAJCQl7CiAJ CQkJc3ogKz0gc2l6ZW9mKE9pZCkgKiBjaGFuZ2UtPmRhdGEudHJ1bmNhdGUubnJlbGlkczsK IAorCQkJCWJyZWFrOworCQkJfQorCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9TRVFV RU5DRToKKwkJCXsKKwkJCQlSZW9yZGVyQnVmZmVyVHVwbGVCdWYgKnR1cDsKKwkJCQlTaXpl CQlsZW4gPSAwOworCisJCQkJdHVwID0gY2hhbmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlOwor CisJCQkJaWYgKHR1cCkKKwkJCQl7CisJCQkJCXN6ICs9IHNpemVvZihIZWFwVHVwbGVEYXRh KTsKKwkJCQkJbGVuID0gdHVwLT50dXBsZS50X2xlbjsKKwkJCQkJc3ogKz0gbGVuOworCQkJ CX0KKwogCQkJCWJyZWFrOwogCQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9J TlRFUk5BTF9TUEVDX0NPTkZJUk06CkBAIC00NDc2LDYgKzUxODgsMzAgQEAgUmVvcmRlckJ1 ZmZlclJlc3RvcmVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIAogCQkJCWJyZWFrOwogCQkJfQorCisJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hB TkdFX1NFUVVFTkNFOgorCQkJaWYgKGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZSkKKwkJ CXsKKwkJCQl1aW50MzIJCXR1cGxlbGVuID0gKChIZWFwVHVwbGUpIGRhdGEpLT50X2xlbjsK KworCQkJCWNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZSA9CisJCQkJCVJlb3JkZXJCdWZm ZXJHZXRUdXBsZUJ1ZihyYiwgdHVwbGVsZW4gLSBTaXplb2ZIZWFwVHVwbGVIZWFkZXIpOwor CisJCQkJLyogcmVzdG9yZSAtPnR1cGxlICovCisJCQkJbWVtY3B5KCZjaGFuZ2UtPmRhdGEu c2VxdWVuY2UudHVwbGUtPnR1cGxlLCBkYXRhLAorCQkJCQkgICBzaXplb2YoSGVhcFR1cGxl RGF0YSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKEhlYXBUdXBsZURhdGEpOworCisJCQkJLyog cmVzZXQgdF9kYXRhIHBvaW50ZXIgaW50byB0aGUgbmV3IHR1cGxlYnVmICovCisJCQkJY2hh bmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlLT50dXBsZS50X2RhdGEgPQorCQkJCQlSZW9yZGVy QnVmZmVyVHVwbGVCdWZEYXRhKGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZSk7CisKKwkJ CQkvKiByZXN0b3JlIHR1cGxlIGRhdGEgaXRzZWxmICovCisJCQkJbWVtY3B5KGNoYW5nZS0+ ZGF0YS5zZXF1ZW5jZS50dXBsZS0+dHVwbGUudF9kYXRhLCBkYXRhLCB0dXBsZWxlbik7CisJ CQkJZGF0YSArPSB0dXBsZWxlbjsKKwkJCX0KKwkJCWJyZWFrOworCiAJCWNhc2UgUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX0lOVEVSTkFMX1NQRUNfQ09ORklSTToKIAkJY2FzZSBSRU9SREVS X0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfU1BFQ19BQk9SVDoKIAkJY2FzZSBSRU9SREVSX0JV RkZFUl9DSEFOR0VfSU5URVJOQUxfQ09NTUFORF9JRDoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9ybWdybGlzdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgK aW5kZXggNzhlNmI5MDhjNmUuLmM2ZDkwMmZjMDc3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3Mvcm1ncmxpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3Qu aApAQCAtMjcsNyArMjcsNyBAQAogLyogc3ltYm9sIG5hbWUsIHRleHR1YWwgbmFtZSwgcmVk bywgZGVzYywgaWRlbnRpZnksIHN0YXJ0dXAsIGNsZWFudXAsIG1hc2ssIGRlY29kZSAqLwog UEdfUk1HUihSTV9YTE9HX0lELCAiWExPRyIsIHhsb2dfcmVkbywgeGxvZ19kZXNjLCB4bG9n X2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCB4bG9nX2RlY29kZSkKIFBHX1JNR1IoUk1f WEFDVF9JRCwgIlRyYW5zYWN0aW9uIiwgeGFjdF9yZWRvLCB4YWN0X2Rlc2MsIHhhY3RfaWRl bnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIHhhY3RfZGVjb2RlKQotUEdfUk1HUihSTV9TTUdS X0lELCAiU3RvcmFnZSIsIHNtZ3JfcmVkbywgc21ncl9kZXNjLCBzbWdyX2lkZW50aWZ5LCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMKQorUEdfUk1HUihSTV9TTUdSX0lELCAiU3RvcmFnZSIs IHNtZ3JfcmVkbywgc21ncl9kZXNjLCBzbWdyX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxM LCBzbWdyX2RlY29kZSkKIFBHX1JNR1IoUk1fQ0xPR19JRCwgIkNMT0ciLCBjbG9nX3JlZG8s IGNsb2dfZGVzYywgY2xvZ19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKIFBH X1JNR1IoUk1fREJBU0VfSUQsICJEYXRhYmFzZSIsIGRiYXNlX3JlZG8sIGRiYXNlX2Rlc2Ms IGRiYXNlX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQogUEdfUk1HUihSTV9U QkxTUENfSUQsICJUYWJsZXNwYWNlIiwgdGJsc3BjX3JlZG8sIHRibHNwY19kZXNjLCB0Ymxz cGNfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCkBAIC00MCw3ICs0MCw3IEBA IFBHX1JNR1IoUk1fQlRSRUVfSUQsICJCdHJlZSIsIGJ0cmVlX3JlZG8sIGJ0cmVlX2Rlc2Ms IGJ0cmVlX2lkZW50aWZ5LCBidHJlZV94bG9nCiBQR19STUdSKFJNX0hBU0hfSUQsICJIYXNo IiwgaGFzaF9yZWRvLCBoYXNoX2Rlc2MsIGhhc2hfaWRlbnRpZnksIE5VTEwsIE5VTEwsIGhh c2hfbWFzaywgTlVMTCkKIFBHX1JNR1IoUk1fR0lOX0lELCAiR2luIiwgZ2luX3JlZG8sIGdp bl9kZXNjLCBnaW5faWRlbnRpZnksIGdpbl94bG9nX3N0YXJ0dXAsIGdpbl94bG9nX2NsZWFu dXAsIGdpbl9tYXNrLCBOVUxMKQogUEdfUk1HUihSTV9HSVNUX0lELCAiR2lzdCIsIGdpc3Rf cmVkbywgZ2lzdF9kZXNjLCBnaXN0X2lkZW50aWZ5LCBnaXN0X3hsb2dfc3RhcnR1cCwgZ2lz dF94bG9nX2NsZWFudXAsIGdpc3RfbWFzaywgTlVMTCkKLVBHX1JNR1IoUk1fU0VRX0lELCAi U2VxdWVuY2UiLCBzZXFfcmVkbywgc2VxX2Rlc2MsIHNlcV9pZGVudGlmeSwgTlVMTCwgTlVM TCwgc2VxX21hc2ssIE5VTEwpCitQR19STUdSKFJNX1NFUV9JRCwgIlNlcXVlbmNlIiwgc2Vx X3JlZG8sIHNlcV9kZXNjLCBzZXFfaWRlbnRpZnksIE5VTEwsIE5VTEwsIHNlcV9tYXNrLCBz ZXFfZGVjb2RlKQogUEdfUk1HUihSTV9TUEdJU1RfSUQsICJTUEdpc3QiLCBzcGdfcmVkbywg c3BnX2Rlc2MsIHNwZ19pZGVudGlmeSwgc3BnX3hsb2dfc3RhcnR1cCwgc3BnX3hsb2dfY2xl YW51cCwgc3BnX21hc2ssIE5VTEwpCiBQR19STUdSKFJNX0JSSU5fSUQsICJCUklOIiwgYnJp bl9yZWRvLCBicmluX2Rlc2MsIGJyaW5faWRlbnRpZnksIE5VTEwsIE5VTEwsIGJyaW5fbWFz aywgTlVMTCkKIFBHX1JNR1IoUk1fQ09NTUlUX1RTX0lELCAiQ29tbWl0VHMiLCBjb21taXRf dHNfcmVkbywgY29tbWl0X3RzX2Rlc2MsIGNvbW1pdF90c19pZGVudGlmeSwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2Rl Y29kZS5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgKaW5kZXggMTdhNWI1 ZTk1YWIuLjNkZTAyZWU0YTAyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9kZWNvZGUuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaApAQCAt MjcsNiArMjcsOCBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZWNvZGUoTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgeGFj dF9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVy ICpidWYpOwogZXh0ZXJuIHZvaWQgc3RhbmRieV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgbG9naWNh bG1zZ19kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVm ZmVyICpidWYpOworZXh0ZXJuIHZvaWQgc2VxX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CitleHRlcm4gdm9pZCBzbWdyX2Rl Y29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1 Zik7CiAKIGV4dGVybiB2b2lkIExvZ2ljYWxEZWNvZGluZ1Byb2Nlc3NSZWNvcmQoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJCSBYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsLmgg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsLmgKaW5kZXggZGMyZGY0Y2U5MmEu LjRkYjI1MmYwNmQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oCkBAIC05MCw2 ICs5MCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0CiAJICov CiAJYm9vbAkJdHdvcGhhc2U7CiAKKwkvKgorCSAqIERvZXMgdGhlIG91dHB1dCBwbHVnaW5n IHN1cHBvcnQgZGVjb2Rpbmcgb2Ygc2VxdWVuY2UgY2hhbmdlcz8KKwkgKi8KKwlib29sCQlz ZXF1ZW5jZXM7CisKIAkvKgogCSAqIElzIHR3by1waGFzZSBvcHRpb24gZ2l2ZW4gYnkgb3V0 cHV0IHBsdWdpbj8KIAkgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v b3V0cHV0X3BsdWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdp bi5oCmluZGV4IDQ0OTg4ZWJkZDg5Li4yYWUyNWM2ZjRmZSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaApAQCAtOTAsNiArOTAsMTYgQEAgdHlwZWRlZiB2 b2lkICgqTG9naWNhbERlY29kZU1lc3NhZ2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsCiAJCQkJCQkJCQkJU2l6ZSBtZXNzYWdlX3NpemUsCiAJCQkJCQkJCQkJ Y29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qCisgKiBDYWxsZWQgZm9yIHRoZSBnZW5lcmlj IGxvZ2ljYWwgZGVjb2Rpbmcgc2VxdWVuY2VzLgorICovCit0eXBlZGVmIHZvaWQgKCpMb2dp Y2FsRGVjb2RlU2VxdWVuY2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsCisJCQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgWExv Z1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJCQkJCQkJIFJlbGF0aW9uIHJlbCwKKwkJCQkJ CQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJCSBpbnQ2NCB2YWx1ZSk7CisK IC8qCiAgKiBGaWx0ZXIgY2hhbmdlcyBieSBvcmlnaW4uCiAgKi8KQEAgLTIwMSw2ICsyMTEs MTcgQEAgdHlwZWRlZiB2b2lkICgqTG9naWNhbERlY29kZVN0cmVhbU1lc3NhZ2VDQikgKHN0 cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgKIAkJCQkJCQkJCQkJICBTaXplIG1l c3NhZ2Vfc2l6ZSwKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFyICptZXNzYWdlKTsKIAorLyoK KyAqIENhbGxlZCBmb3IgdGhlIHN0cmVhbWluZyBnZW5lcmljIGxvZ2ljYWwgZGVjb2Rpbmcg c2VxdWVuY2VzIGZyb20gaW4tcHJvZ3Jlc3MKKyAqIHRyYW5zYWN0aW9ucy4KKyAqLwordHlw ZWRlZiB2b2lkICgqTG9naWNhbERlY29kZVN0cmVhbVNlcXVlbmNlQ0IpIChzdHJ1Y3QgTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkJCQkgICBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCisJCQkJCQkJCQkJCSAgIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorCQkJ CQkJCQkJCQkgICBSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkJCSAgIGJvb2wgdHJhbnNhY3Rp b25hbCwKKwkJCQkJCQkJCQkJICAgaW50NjQgdmFsdWUpOworCiAvKgogICogQ2FsbGJhY2sg Zm9yIHN0cmVhbWluZyB0cnVuY2F0ZXMgZnJvbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMu CiAgKi8KQEAgLTIyMSw2ICsyNDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBPdXRwdXRQbHVnaW5D YWxsYmFja3MKIAlMb2dpY2FsRGVjb2RlVHJ1bmNhdGVDQiB0cnVuY2F0ZV9jYjsKIAlMb2dp Y2FsRGVjb2RlQ29tbWl0Q0IgY29tbWl0X2NiOwogCUxvZ2ljYWxEZWNvZGVNZXNzYWdlQ0Ig bWVzc2FnZV9jYjsKKwlMb2dpY2FsRGVjb2RlU2VxdWVuY2VDQiBzZXF1ZW5jZV9jYjsKIAlM b2dpY2FsRGVjb2RlRmlsdGVyQnlPcmlnaW5DQiBmaWx0ZXJfYnlfb3JpZ2luX2NiOwogCUxv Z2ljYWxEZWNvZGVTaHV0ZG93bkNCIHNodXRkb3duX2NiOwogCkBAIC0yMzksNiArMjYxLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0UGx1Z2luQ2FsbGJhY2tzCiAJTG9naWNhbERlY29k ZVN0cmVhbUNvbW1pdENCIHN0cmVhbV9jb21taXRfY2I7CiAJTG9naWNhbERlY29kZVN0cmVh bUNoYW5nZUNCIHN0cmVhbV9jaGFuZ2VfY2I7CiAJTG9naWNhbERlY29kZVN0cmVhbU1lc3Nh Z2VDQiBzdHJlYW1fbWVzc2FnZV9jYjsKKwlMb2dpY2FsRGVjb2RlU3RyZWFtU2VxdWVuY2VD QiBzdHJlYW1fc2VxdWVuY2VfY2I7CiAJTG9naWNhbERlY29kZVN0cmVhbVRydW5jYXRlQ0Ig c3RyZWFtX3RydW5jYXRlX2NiOwogfSBPdXRwdXRQbHVnaW5DYWxsYmFja3M7CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCAzZTIzMmM2YzI3Zi4u MDEzNDEzMzUxN2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3Jk ZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVy LmgKQEAgLTc0LDYgKzc0LDcgQEAgdHlwZWRlZiBlbnVtIFJlb3JkZXJCdWZmZXJDaGFuZ2VU eXBlCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVEVSTkFMX1NQRUNfQ09ORklSTSwKIAlS RU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfU1BFQ19BQk9SVCwKIAlSRU9SREVSX0JV RkZFUl9DSEFOR0VfVFJVTkNBVEUsCisJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNF LAogfSBSZW9yZGVyQnVmZmVyQ2hhbmdlVHlwZTsKIAogLyogZm9yd2FyZCBkZWNsYXJhdGlv biAqLwpAQCAtMTY3LDYgKzE2OCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVy Q2hhbmdlCiAJCQl1aW50MzIJCW5pbnZhbGlkYXRpb25zOyAvKiBOdW1iZXIgb2YgbWVzc2Fn ZXMgKi8KIAkJCVNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKmludmFsaWRhdGlvbnM7CS8q IGludmFsaWRhdGlvbiBtZXNzYWdlICovCiAJCX0JCQlpbnZhbDsKKworCQkvKiBDb250ZXh0 IGRhdGEgZm9yIFNlcXVlbmNlIGNoYW5nZXMgKi8KKwkJc3RydWN0CisJCXsKKwkJCVJlbEZp bGVMb2NhdG9yIGxvY2F0b3I7CisJCQlSZW9yZGVyQnVmZmVyVHVwbGVCdWYgKnR1cGxlOwor CQl9CQkJc2VxdWVuY2U7CiAJfQkJCWRhdGE7CiAKIAkvKgpAQCAtMzkyLDYgKzQwMCwxMiBA QCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyVFhOCiAJICovCiAJSFRBQgkgICAqdG9h c3RfaGFzaDsKIAorCS8qCisJICogU2VxdWVuY2UgcmVsZmlsZW5vZGVzIGNyZWF0ZWQgaW4g dGhpcyB0cmFuc2FjdGlvbiAoYWxzbyBpbmNsdWRlcworCSAqIGFsdGVyZWQgc2VxdWVuY2Vz LCB3aGljaCBhc3NpZ25zIG5ldyByZWxmaWxlbm9kZSkuCisJICovCisJSFRBQgkgICAqc2Vx dWVuY2VzX2hhc2g7CisKIAkvKgogCSAqIG5vbi1oaWVyYXJjaGljYWwgbGlzdCBvZiBzdWJ0 cmFuc2FjdGlvbnMgdGhhdCBhcmUgKm5vdCogYWJvcnRlZC4gT25seQogCSAqIHVzZWQgaW4g dG9wbGV2ZWwgdHJhbnNhY3Rpb25zLgpAQCAtNDcwLDYgKzQ4NCwxNCBAQCB0eXBlZGVmIHZv aWQgKCpSZW9yZGVyQnVmZmVyTWVzc2FnZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCiAJCQkJ CQkJCQkJY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LAogCQkJCQkJCQkJCWNvbnN0IGNo YXIgKm1lc3NhZ2UpOwogCisvKiBzZXF1ZW5jZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5 cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNCKSAoUmVvcmRlckJ1ZmZlciAq cmIsCisJCQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgWExv Z1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJCQkJCQkJIFJlbGF0aW9uIHJlbCwKKwkJCQkJ CQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJCSBpbnQ2NCB2YWx1ZSk7CisK IC8qIGJlZ2luIHByZXBhcmUgY2FsbGJhY2sgc2lnbmF0dXJlICovCiB0eXBlZGVmIHZvaWQg KCpSZW9yZGVyQnVmZmVyQmVnaW5QcmVwYXJlQ0IpIChSZW9yZGVyQnVmZmVyICpyYiwKIAkJ CQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4bik7CkBAIC01MzYsNiArNTU4LDE0IEBA IHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTdHJlYW1NZXNzYWdlQ0IpICgKIAkJCQkJ CQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgc3osCiAJCQkJCQkJCQkJCSAgY29u c3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qIHN0cmVhbSBzZXF1ZW5jZSBjYWxsYmFjayBzaWdu YXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTdHJlYW1TZXF1ZW5jZUNC KSAoUmVvcmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKKwkJCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJCQkJ CQkJCSAgIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCQkJICAgYm9vbCB0cmFuc2FjdGlvbmFs LAorCQkJCQkJCQkJCQkgICBpbnQ2NCB2YWx1ZSk7CisKIC8qIHN0cmVhbSB0cnVuY2F0ZSBj YWxsYmFjayBzaWduYXR1cmUgKi8KIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTdHJl YW1UcnVuY2F0ZUNCKSAoCiAJCQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXIgKnJiLApAQCAt NTkyLDYgKzYyMiw3IEBAIHN0cnVjdCBSZW9yZGVyQnVmZmVyCiAJUmVvcmRlckJ1ZmZlckFw cGx5VHJ1bmNhdGVDQiBhcHBseV90cnVuY2F0ZTsKIAlSZW9yZGVyQnVmZmVyQ29tbWl0Q0Ig Y29tbWl0OwogCVJlb3JkZXJCdWZmZXJNZXNzYWdlQ0IgbWVzc2FnZTsKKwlSZW9yZGVyQnVm ZmVyU2VxdWVuY2VDQiBzZXF1ZW5jZTsKIAogCS8qCiAJICogQ2FsbGJhY2tzIHRvIGJlIGNh bGxlZCB3aGVuIHN0cmVhbWluZyBhIHRyYW5zYWN0aW9uIGF0IHByZXBhcmUgdGltZS4KQEAg LTYxMSw2ICs2NDIsNyBAQCBzdHJ1Y3QgUmVvcmRlckJ1ZmZlcgogCVJlb3JkZXJCdWZmZXJT dHJlYW1Db21taXRDQiBzdHJlYW1fY29tbWl0OwogCVJlb3JkZXJCdWZmZXJTdHJlYW1DaGFu Z2VDQiBzdHJlYW1fY2hhbmdlOwogCVJlb3JkZXJCdWZmZXJTdHJlYW1NZXNzYWdlQ0Igc3Ry ZWFtX21lc3NhZ2U7CisJUmVvcmRlckJ1ZmZlclN0cmVhbVNlcXVlbmNlQ0Igc3RyZWFtX3Nl cXVlbmNlOwogCVJlb3JkZXJCdWZmZXJTdHJlYW1UcnVuY2F0ZUNCIHN0cmVhbV90cnVuY2F0 ZTsKIAogCS8qCkBAIC02OTYsNiArNzI4LDEwIEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZm ZXJRdWV1ZU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAog CQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSAg Ym9vbCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJCQkgIFNp emUgbWVzc2FnZV9zaXplLCBjb25zdCBjaGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIFJl b3JkZXJCdWZmZXJRdWV1ZVNlcXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlv bklkIHhpZCwKKwkJCQkJCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LCBYTG9nUmVjUHRyIGxz biwgUmVwT3JpZ2luSWQgb3JpZ2luX2lkLAorCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0b3Ig bG9jYXRvciwgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJICAgUmVvcmRlckJ1ZmZl clR1cGxlQnVmICp0dXBsZWJ1Zik7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29tbWl0 KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJWExvZ1Jl Y1B0ciBjb21taXRfbHNuLCBYTG9nUmVjUHRyIGVuZF9sc24sCiAJCQkJCQkJCVRpbWVzdGFt cFR6IGNvbW1pdF90aW1lLCBSZXBPcmlnaW5JZCBvcmlnaW5faWQsIFhMb2dSZWNQdHIgb3Jp Z2luX2xzbik7CkBAIC03NTAsNCArNzg2LDEwIEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZm ZXJTZXRSZXN0YXJ0UG9pbnQoUmVvcmRlckJ1ZmZlciAqcmIsIFhMb2dSZWNQdHIgcHRyKTsK IAogZXh0ZXJuIHZvaWQgU3RhcnR1cFJlb3JkZXJCdWZmZXIodm9pZCk7CiAKK2V4dGVybiB2 b2lkIFJlb3JkZXJCdWZmZXJBZGRSZWxGaWxlTG9jYXRvcihSZW9yZGVyQnVmZmVyICpyYiwg VHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBsc24sIFJlbEZp bGVMb2NhdG9yIHJsb2NhdG9yKTsKK2V4dGVybiBib29sIFJlb3JkZXJCdWZmZXJTZXF1ZW5j ZUlzVHJhbnNhY3Rpb25hbChSZW9yZGVyQnVmZmVyICpyYiwKKwkJCQkJCQkJCQkJCSBSZWxG aWxlTG9jYXRvciBsb2NhdG9yLAorCQkJCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnhpZCk7 CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA1ZmQ0NmI3YmQx Zi4uYjYzMmZiZDdjZjMgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yMzM2 LDYgKzIzMzYsNyBAQCBSZW9yZGVyQnVmZmVySXRlclRYTlN0YXRlCiBSZW9yZGVyQnVmZmVy TWVzc2FnZUNCCiBSZW9yZGVyQnVmZmVyUHJlcGFyZUNCCiBSZW9yZGVyQnVmZmVyUm9sbGJh Y2tQcmVwYXJlZENCCitSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQKIFJlb3JkZXJCdWZmZXJT dHJlYW1BYm9ydENCCiBSZW9yZGVyQnVmZmVyU3RyZWFtQ2hhbmdlQ0IKIFJlb3JkZXJCdWZm ZXJTdHJlYW1Db21taXRDQgotLSAKMi40My4wCgo= --------------04bDZ9og1eK4R6g8Y06g4sJM Content-Type: text/x-patch; charset=UTF-8; name="v20240111-0002-Add-decoding-of-sequences-to-test_decoding.patch" Content-Disposition: attachment; filename*0="v20240111-0002-Add-decoding-of-sequences-to-test_decoding.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5NjU1NzZmZjRhNGZiYzk0MzA5YWEwOGE2YWIwZWE1ZTA3NGRmMDhhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogRnJpLCAxMyBKYW4gMjAyMyAyMDozMjo0NCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjQwMTExIDIvN10gQWRkIGRlY29kaW5nIG9mIHNlcXVlbmNlcyB0byB0ZXN0 X2RlY29kaW5nCgpFeHRlbmRzIHRlc3RfZGVjb2Rpbmcgd2l0aCBjYWxsYmFja3MgdG8gZGVj b2RlIHNlcXVlbmNlcy4gVGhpcyBmZWF0dXJlCmlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgKGku ZS4gc2VxdWVuY2UgY2hhbmdlcyBhcmUgb21pdHRlZCBmcm9tIHRoZQpvdXRwdXQpLCBidXQg bWF5IGJlIGVuYWJsZWQgYnkgcGFzc2luZyAnaW5jbHVkZS1zZXF1ZW5jZXMnIG9wdGlvbiB0 byB0aGUKdGVzdF9kZWNvZGluZyBwbHVnaW4uCgpBdXRob3I6IFRvbWFzIFZvbmRyYSwgQ2Fy eSBIdWFuZwpSZXZpZXdlZC1ieTogQXNodXRvc2ggQmFwYXQsIEFtaXQgS2FwaWxhLCBQZXRl ciBFaXNlbnRyYXV0LCBIYW5udQpLcm9zaW5nLCBBbmRyZXMgRnJldW5kLCBaaGlqaWUgSG91 CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZDA0NWYzYzItNmNmYi0wNmQzLTU1 NDAtZTYzYzMyMGRmOGJjQGVudGVycHJpc2VkYi5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS8xNzEwZWQ3ZTEzYi5jZDcxNzc0NjE0MzA3NDYuMzM3MjI2NDU2MjU0MzYw Nzc4MUBoaWdoZ28uY2EKLS0tCiBjb250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUgICAg ICAgICAgICAgIHwgICAzICstCiBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc2Vx dWVuY2Uub3V0IHwgMzI1ICsrKysrKysrKysrKysrKysrKysrCiBjb250cmliL3Rlc3RfZGVj b2Rpbmcvc3FsL3NlcXVlbmNlLnNxbCAgICAgIHwgMTE5ICsrKysrKysKIGNvbnRyaWIvdGVz dF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMgICAgICAgfCAgODcgKysrKysrCiA0IGZpbGVz IGNoYW5nZWQsIDUzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNlLm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvc2VxdWVuY2Uu c3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlIGIvY29u dHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCmluZGV4IGM3Y2U2MDM3MDY0Li4wNWMwYzVh MmY4NiAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCisrKyBi L2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQpAQCAtNSw3ICs1LDggQEAgUEdGSUxF REVTQyA9ICJ0ZXN0X2RlY29kaW5nIC0gZXhhbXBsZSBvZiBhIGxvZ2ljYWwgZGVjb2Rpbmcg b3V0cHV0IHBsdWdpbiIKIAogUkVHUkVTUyA9IGRkbCB4YWN0IHJld3JpdGUgdG9hc3QgcGVy bWlzc2lvbnMgZGVjb2RpbmdfaW5feGFjdCBcCiAJZGVjb2RpbmdfaW50b19yZWwgYmluYXJ5 IHByZXBhcmVkIHJlcGxvcmlnaW4gdGltZSBtZXNzYWdlcyBcCi0Jc3BpbGwgc2xvdCB0cnVu Y2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vfc3RyZWFtCisJc3BpbGwgc2xv dCB0cnVuY2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vfc3RyZWFtIFwKKwlz ZXF1ZW5jZQogSVNPTEFUSU9OID0gbXhhY3QgZGVsYXllZF9zdGFydHVwIG9uZGlza19zdGFy dHVwIGNvbmN1cnJlbnRfZGRsX2RtbCBcCiAJb2xkZXN0X3htaW4gc25hcHNob3RfdHJhbnNm ZXIgc3VieGFjdF93aXRob3V0X3RvcCBjb25jdXJyZW50X3N0cmVhbSBcCiAJdHdvcGhhc2Vf c25hcHNob3Qgc2xvdF9jcmVhdGlvbl9lcnJvciBjYXRhbG9nX2NoYW5nZV9zbmFwc2hvdApk aWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNlLm91 dCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zZXF1ZW5jZS5vdXQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk4YThmMjVlNWFkCi0tLSAvZGV2 L251bGwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNlLm91 dApAQCAtMCwwICsxLDMyNSBAQAorLS0gcHJlZGljdGFiaWxpdHkKK1NFVCBzeW5jaHJvbm91 c19jb21taXQgPSBvbjsKK1NFTEVDVCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9y ZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3QnLCAndGVzdF9kZWNvZGluZycpOwor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGluaXQKKygxIHJvdykKKworQ1JFQVRFIFNFUVVF TkNFIHRlc3Rfc2VxdWVuY2U7CistLSB0ZXN0IHRoZSBzZXF1ZW5jZSBjaGFuZ2VzIGJ5IHNl dmVyYWwgbmV4dHZhbCgpIGNhbGxzCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScp OworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBu ZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgICAg IDIKKygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0 dmFsIAorLS0tLS0tLS0tCisgICAgICAgMworKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgn dGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICA0CisoMSBy b3cpCisKKy0tIHRlc3QgdGhlIHNlcXVlbmNlIGNoYW5nZXMgYnkgc2V2ZXJhbCBBTFRFUiBj b21tYW5kcworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZSBJTkNSRU1FTlQgQlkgMTA7 CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0t LS0KKyAgICAgIDE0CisoMSByb3cpCisKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2Ug U1RBUlQgV0lUSCAzMDAwOworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZSBNQVhWQUxV RSAxMDAwMDsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgUkVTVEFSVCBXSVRIIDQw MDA7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0t LS0tLS0KKyAgICA0MDAwCisoMSByb3cpCisKKy0tIHRlc3QgdGhlIHNlcXVlbmNlIGNoYW5n ZXMgYnkgc2V2ZXJhbCBzZXR2YWwoKSBjYWxscworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1 ZW5jZScsIDM1MDApOworIHNldHZhbCAKKy0tLS0tLS0tCisgICAzNTAwCisoMSByb3cpCisK K1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0t LQorICAgIDM1MTAKKygxIHJvdykKKworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScs IDM1MDAsIHRydWUpOworIHNldHZhbCAKKy0tLS0tLS0tCisgICAzNTAwCisoMSByb3cpCisK K1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0t LQorICAgIDM1MTAKKygxIHJvdykKKworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScs IDM1MDAsIGZhbHNlKTsKKyBzZXR2YWwgCistLS0tLS0tLQorICAgMzUwMAorKDEgcm93KQor CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0t LS0KKyAgICAzNTAwCisoMSByb3cpCisKKy0tIHNob3cgcmVzdWx0cyBhbmQgZHJvcCBzZXF1 ZW5jZQorU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3Jl Z3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lw LWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS1zZXF1ZW5jZXMnLCAnMScpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRy YW5zYWN0aW9uYWw6IDEgdmFsdWU6IDEKKyBDT01NSVQKKyBzZXF1ZW5jZSBwdWJsaWMudGVz dF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDogMCB2YWx1ZTogMzMKKyBCRUdJTgorIHNlcXVl bmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAxIHZhbHVlOiA0Cisg Q09NTUlUCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6 IDAgdmFsdWU6IDMzNAorIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6 IHRyYW5zYWN0aW9uYWw6IDEgdmFsdWU6IDQ2CisgQ09NTUlUCisgQkVHSU4KKyBzZXF1ZW5j ZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDogMSB2YWx1ZTogMTQKKyBD T01NSVQKKyBCRUdJTgorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2Fj dGlvbmFsOiAxIHZhbHVlOiA0MDAwCisgQ09NTUlUCisgc2VxdWVuY2UgcHVibGljLnRlc3Rf c2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6IDAgdmFsdWU6IDQzMjAKKyBzZXF1ZW5jZSBwdWJs aWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDogMCB2YWx1ZTogMzUwMAorIHNlcXVl bmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAwIHZhbHVlOiAzODMw Cisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6IDAgdmFs dWU6IDM1MDAKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25h bDogMCB2YWx1ZTogMzgzMAorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFu c2FjdGlvbmFsOiAwIHZhbHVlOiAzNTAwCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVu Y2U6IHRyYW5zYWN0aW9uYWw6IDAgdmFsdWU6IDM4MjAKKygyNCByb3dzKQorCitEUk9QIFNF UVVFTkNFIHRlc3Rfc2VxdWVuY2U7CistLSByb2xsYmFjayBvbiBzZXF1ZW5jZSBjcmVhdGlv biBhbmQgdXBkYXRlCitCRUdJTjsKK0NSRUFURSBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOwor Q1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEgSU5UKTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0 X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgICAgIDEKKygxIHJvdykK KworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0t LS0tCisgICAgICAgMgorKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5j ZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICAzCisoMSByb3cpCisKK1NFTEVD VCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCAzMDAwKTsKKyBzZXR2YWwgCistLS0tLS0tLQor ICAgMzAwMAorKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOwor IG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAzMDAxCisoMSByb3cpCisKK1NFTEVDVCBuZXh0 dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgIDMwMDIK KygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFs IAorLS0tLS0tLS0tCisgICAgMzAwMworKDEgcm93KQorCitBTFRFUiBTRVFVRU5DRSB0ZXN0 X3NlcXVlbmNlIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSBW QUxVRVMoIChTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpKSApOworU0VMRUNUIG5l eHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgNjAw MQorKDEgcm93KQorCitST0xMQkFDSzsKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVk ZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJywgJ2luY2x1ZGUtc2VxdWVu Y2VzJywgJzEnKTsKKyBkYXRhIAorLS0tLS0tCisoMCByb3dzKQorCistLSByb2xsYmFjayBv biB0YWJsZSBjcmVhdGlvbiB3aXRoIHNlcmlhbCBjb2x1bW4KK0JFR0lOOworQ1JFQVRFIFRB QkxFIHRlc3RfdGFibGUgKGEgU0VSSUFMLCBiIElOVCk7CitJTlNFUlQgSU5UTyB0ZXN0X3Rh YmxlIChiKSBWQUxVRVMgKDEwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxV RVMgKDIwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDMwMCk7CitT RUxFQ1Qgc2V0dmFsKCd0ZXN0X3RhYmxlX2Ffc2VxJywgMzAwMCk7Cisgc2V0dmFsIAorLS0t LS0tLS0KKyAgIDMwMDAKKygxIHJvdykKKworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICg0MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg1MDAp OworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg2MDApOworQUxURVIgU0VR VUVOQ0UgdGVzdF90YWJsZV9hX3NlcSBSRVNUQVJUIFdJVEggNjAwMDsKK0lOU0VSVCBJTlRP IHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNzAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUg KGIpIFZBTFVFUyAoODAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAo OTAwKTsKK1JPTExCQUNLOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMn LCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS1zZXF1ZW5jZXMnLCAn MScpOworIGRhdGEgCistLS0tLS0KKygwIHJvd3MpCisKKy0tIHJvbGxiYWNrIG9uIHRhYmxl IHdpdGggc2VyaWFsIGNvbHVtbgorQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEgU0VSSUFM LCBiIElOVCk7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAo MTAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMjAwKTsKK0lOU0VS VCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMzAwKTsKK1NFTEVDVCBzZXR2YWwoJ3Rl c3RfdGFibGVfYV9zZXEnLCAzMDAwKTsKKyBzZXR2YWwgCistLS0tLS0tLQorICAgMzAwMAor KDEgcm93KQorCitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDQwMCk7CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDUwMCk7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDYwMCk7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3RhYmxl X2Ffc2VxIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICg3MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg4MDAp OworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg5MDApOworUk9MTEJBQ0s7 CistLSBjaGVjayB0YWJsZSBhbmQgc2VxdWVuY2UgdmFsdWVzIGFmdGVyIHJvbGxiYWNrCitT RUxFQ1QgKiBmcm9tIHRlc3RfdGFibGVfYV9zZXE7CisgbGFzdF92YWx1ZSB8IGxvZ19jbnQg fCBpc19jYWxsZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgICAg ICAgMzAwMyB8ICAgICAgMzAgfCB0CisoMSByb3cpCisKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0 X3RhYmxlX2Ffc2VxJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgIDMwMDQKKygxIHJv dykKKworRFJPUCBUQUJMRSB0ZXN0X3RhYmxlOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dp Y2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdp bmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS1z ZXF1ZW5jZXMnLCAnMScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJFR0lOCisgc2Vx dWVuY2UgcHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6IDEgdmFsdWU6 IDEKKyBDT01NSVQKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNh Y3Rpb25hbDogMCB2YWx1ZTogMzMKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3Nl cTogdHJhbnNhY3Rpb25hbDogMCB2YWx1ZTogMzAwMAorIHNlcXVlbmNlIHB1YmxpYy50ZXN0 X3RhYmxlX2Ffc2VxOiB0cmFuc2FjdGlvbmFsOiAwIHZhbHVlOiAzMDMzCisoNiByb3dzKQor CistLSBzYXZlcG9pbnQgdGVzdCBvbiB0YWJsZSB3aXRoIHNlcmlhbCBjb2x1bW4KK0JFR0lO OworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEgU0VSSUFMLCBiIElOVCk7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDEwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3Rh YmxlIChiKSBWQUxVRVMgKDIwMCk7CitTQVZFUE9JTlQgYTsKK0lOU0VSVCBJTlRPIHRlc3Rf dGFibGUgKGIpIFZBTFVFUyAoMzAwKTsKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBhOworRFJP UCBUQUJMRSB0ZXN0X3RhYmxlOworQ09NTUlUOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dp Y2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdp bmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS1z ZXF1ZW5jZXMnLCAnMScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQkVHSU4KKyBzZXF1ZW5j ZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNhY3Rpb25hbDogMSB2YWx1ZTogMQor IHNlcXVlbmNlIHB1YmxpYy50ZXN0X3RhYmxlX2Ffc2VxOiB0cmFuc2FjdGlvbmFsOiAxIHZh bHVlOiAzMworIHRhYmxlIHB1YmxpYy50ZXN0X3RhYmxlOiBJTlNFUlQ6IGFbaW50ZWdlcl06 MSBiW2ludGVnZXJdOjEwMAorIHRhYmxlIHB1YmxpYy50ZXN0X3RhYmxlOiBJTlNFUlQ6IGFb aW50ZWdlcl06MiBiW2ludGVnZXJdOjIwMAorIENPTU1JVAorKDYgcm93cykKKworLS0gc2F2 ZXBvaW50IHRlc3Qgb24gdGFibGUgd2l0aCBzZXJpYWwgY29sdW1uCitCRUdJTjsKK0NSRUFU RSBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVu Y2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgICAgMQorKDEgcm93KQorCitTRUxF Q1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgMzAwMCk7Cisgc2V0dmFsIAorLS0tLS0tLS0K KyAgIDMwMDAKKygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsK KyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgMzAwMQorKDEgcm93KQorCitTQVZFUE9JTlQg YTsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgU1RBUlQgV0lUSCA3MDAwOworU0VM RUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScsIDUwMDApOworIHNldHZhbCAKKy0tLS0tLS0t CisgICA1MDAwCisoMSByb3cpCisKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBhOworU0VMRUNU ICogRlJPTSB0ZXN0X3NlcXVlbmNlOworIGxhc3RfdmFsdWUgfCBsb2dfY250IHwgaXNfY2Fs bGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAgICAgIDMwMDEg fCAgICAgIDMyIHwgdAorKDEgcm93KQorCitEUk9QIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7 CitDT01NSVQ7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdl cygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywg J3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRlLXNlcXVlbmNlcycsICcxJyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQkVHSU4KKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5j ZTogdHJhbnNhY3Rpb25hbDogMSB2YWx1ZTogMQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3Nl cXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAxIHZhbHVlOiAzMworIHNlcXVlbmNlIHB1YmxpYy50 ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAxIHZhbHVlOiAzMDAwCisgc2VxdWVuY2Ug cHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6IDEgdmFsdWU6IDMwMzMKKyBD T01NSVQKKyg2IHJvd3MpCisKK1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3Jl Z3Jlc3Npb25fc2xvdCcpOworIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL2NvbnRyaWIv dGVzdF9kZWNvZGluZy9zcWwvc2VxdWVuY2Uuc3FsIGIvY29udHJpYi90ZXN0X2RlY29kaW5n L3NxbC9zZXF1ZW5jZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmMxOWE1ZDUwNzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi90ZXN0X2RlY29k aW5nL3NxbC9zZXF1ZW5jZS5zcWwKQEAgLTAsMCArMSwxMTkgQEAKKy0tIHByZWRpY3RhYmls aXR5CitTRVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CitTRUxFQ1QgJ2luaXQnIEZST00g cGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jywg J3Rlc3RfZGVjb2RpbmcnKTsKKworQ1JFQVRFIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7CisK Ky0tIHRlc3QgdGhlIHNlcXVlbmNlIGNoYW5nZXMgYnkgc2V2ZXJhbCBuZXh0dmFsKCkgY2Fs bHMKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxFQ1QgbmV4dHZhbCgn dGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1NF TEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisKKy0tIHRlc3QgdGhlIHNlcXVlbmNl IGNoYW5nZXMgYnkgc2V2ZXJhbCBBTFRFUiBjb21tYW5kcworQUxURVIgU0VRVUVOQ0UgdGVz dF9zZXF1ZW5jZSBJTkNSRU1FTlQgQlkgMTA7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1 ZW5jZScpOworCitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFNUQVJUIFdJVEggMzAw MDsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgTUFYVkFMVUUgMTAwMDA7CitBTFRF UiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFJFU1RBUlQgV0lUSCA0MDAwOworU0VMRUNUIG5l eHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKworLS0gdGVzdCB0aGUgc2VxdWVuY2UgY2hhbmdl cyBieSBzZXZlcmFsIHNldHZhbCgpIGNhbGxzCitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVl bmNlJywgMzUwMCk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworU0VMRUNU IHNldHZhbCgndGVzdF9zZXF1ZW5jZScsIDM1MDAsIHRydWUpOworU0VMRUNUIG5leHR2YWwo J3Rlc3Rfc2VxdWVuY2UnKTsKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCAzNTAw LCBmYWxzZSk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworCistLSBzaG93 IHJlc3VsdHMgYW5kIGRyb3Agc2VxdWVuY2UKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNh bF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5j bHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJywgJ2luY2x1ZGUtc2Vx dWVuY2VzJywgJzEnKTsKK0RST1AgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKKworLS0gcm9s bGJhY2sgb24gc2VxdWVuY2UgY3JlYXRpb24gYW5kIHVwZGF0ZQorQkVHSU47CitDUkVBVEUg U0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKK0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlIChhIElO VCk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwo J3Rlc3Rfc2VxdWVuY2UnKTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitT RUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgMzAwMCk7CitTRUxFQ1QgbmV4dHZhbCgn dGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1NF TEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3Nl cXVlbmNlIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSBWQUxV RVMoIChTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpKSApOworU0VMRUNUIG5leHR2 YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1JPTExCQUNLOworU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEws ICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVk ZS1zZXF1ZW5jZXMnLCAnMScpOworCistLSByb2xsYmFjayBvbiB0YWJsZSBjcmVhdGlvbiB3 aXRoIHNlcmlhbCBjb2x1bW4KK0JFR0lOOworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEg U0VSSUFMLCBiIElOVCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDEw MCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDIwMCk7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDMwMCk7CitTRUxFQ1Qgc2V0dmFsKCd0ZXN0 X3RhYmxlX2Ffc2VxJywgMzAwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxV RVMgKDQwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDUwMCk7CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDYwMCk7CitBTFRFUiBTRVFVRU5D RSB0ZXN0X3RhYmxlX2Ffc2VxIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVz dF90YWJsZSAoYikgVkFMVUVTICg3MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICg4MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg5MDAp OworUk9MTEJBQ0s7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hh bmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcw JywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRlLXNlcXVlbmNlcycsICcxJyk7 CisKKy0tIHJvbGxiYWNrIG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgorQ1JFQVRFIFRB QkxFIHRlc3RfdGFibGUgKGEgU0VSSUFMLCBiIElOVCk7CisKK0JFR0lOOworSU5TRVJUIElO VE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgxMDApOworSU5TRVJUIElOVE8gdGVzdF90YWJs ZSAoYikgVkFMVUVTICgyMDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVT ICgzMDApOworU0VMRUNUIHNldHZhbCgndGVzdF90YWJsZV9hX3NlcScsIDMwMDApOworSU5T RVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg0MDApOworSU5TRVJUIElOVE8gdGVz dF90YWJsZSAoYikgVkFMVUVTICg1MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICg2MDApOworQUxURVIgU0VRVUVOQ0UgdGVzdF90YWJsZV9hX3NlcSBSRVNUQVJU IFdJVEggNjAwMDsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNzAwKTsK K0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoODAwKTsKK0lOU0VSVCBJTlRP IHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoOTAwKTsKK1JPTExCQUNLOworCistLSBjaGVjayB0 YWJsZSBhbmQgc2VxdWVuY2UgdmFsdWVzIGFmdGVyIHJvbGxiYWNrCitTRUxFQ1QgKiBmcm9t IHRlc3RfdGFibGVfYV9zZXE7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF90YWJsZV9hX3NlcScp OworCitEUk9QIFRBQkxFIHRlc3RfdGFibGU7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2lj YWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2lu Y2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRlLXNl cXVlbmNlcycsICcxJyk7CisKKy0tIHNhdmVwb2ludCB0ZXN0IG9uIHRhYmxlIHdpdGggc2Vy aWFsIGNvbHVtbgorQkVHSU47CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoYSBTRVJJQUws IGIgSU5UKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMTAwKTsKK0lO U0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMjAwKTsKK1NBVkVQT0lOVCBhOwor SU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgzMDApOworUk9MTEJBQ0sgVE8g U0FWRVBPSU5UIGE7CitEUk9QIFRBQkxFIHRlc3RfdGFibGU7CitDT01NSVQ7CitTRUxFQ1Qg ZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90 JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMn LCAnMScsICdpbmNsdWRlLXNlcXVlbmNlcycsICcxJyk7CisKKy0tIHNhdmVwb2ludCB0ZXN0 IG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgorQkVHSU47CitDUkVBVEUgU0VRVUVOQ0Ug dGVzdF9zZXF1ZW5jZTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxF Q1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgMzAwMCk7CitTRUxFQ1QgbmV4dHZhbCgndGVz dF9zZXF1ZW5jZScpOworU0FWRVBPSU5UIGE7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVl bmNlIFNUQVJUIFdJVEggNzAwMDsKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCA1 MDAwKTsKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBhOworU0VMRUNUICogRlJPTSB0ZXN0X3Nl cXVlbmNlOworRFJPUCBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOworQ09NTUlUOworU0VMRUNU IGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xv dCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3Rz JywgJzEnLCAnaW5jbHVkZS1zZXF1ZW5jZXMnLCAnMScpOworCitTRUxFQ1QgcGdfZHJvcF9y ZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3QnKTsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMgYi9jb250cmliL3Rlc3RfZGVjb2Rp bmcvdGVzdF9kZWNvZGluZy5jCmluZGV4IDRmNGY1MWE4OWMxLi4yMDBjYWFkNjg2MyAxMDA2 NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYworKysgYi9j b250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCkBAIC0yOSw2ICsyOSw3IEBA IHR5cGVkZWYgc3RydWN0CiAJTWVtb3J5Q29udGV4dCBjb250ZXh0OwogCWJvb2wJCWluY2x1 ZGVfeGlkczsKIAlib29sCQlpbmNsdWRlX3RpbWVzdGFtcDsKKwlib29sCQlpbmNsdWRlX3Nl cXVlbmNlczsKIAlib29sCQlza2lwX2VtcHR5X3hhY3RzOwogCWJvb2wJCW9ubHlfbG9jYWw7 CiB9IFRlc3REZWNvZGluZ0RhdGE7CkBAIC03Miw2ICs3MywxMCBAQCBzdGF0aWMgdm9pZCBw Z19kZWNvZGVfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJ ICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgbHNuLAogCQkJCQkJCSAgYm9v bCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJICBTaXplIHN6 LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHBnX2RlY29kZV9zZXF1ZW5j ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJICAgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLCBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKwkJCQkJCQkgICBSZWxhdGlv biByZWwsIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkgICBpbnQ2NCB2YWx1ZSk7CiBz dGF0aWMgYm9vbCBwZ19kZWNvZGVfZmlsdGVyX3ByZXBhcmUoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJIGNv bnN0IGNoYXIgKmdpZCk7CkBAIC0xMTIsNiArMTE3LDEwIEBAIHN0YXRpYyB2b2lkIHBnX2Rl Y29kZV9zdHJlYW1fbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJ CQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJ CSBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkJCSBT aXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHBnX2RlY29kZV9z dHJlYW1fc2VxdWVuY2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkJ ICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorCQkJ CQkJCQkJICBSZWxhdGlvbiByZWwsIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkJCSAg aW50NjQgdmFsdWUpOwogc3RhdGljIHZvaWQgcGdfZGVjb2RlX3N0cmVhbV90cnVuY2F0ZShM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCQkgIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKIAkJCQkJCQkJCSAgaW50IG5yZWxhdGlvbnMsIFJlbGF0aW9uIHJlbGF0aW9u c1tdLApAQCAtMTM1LDYgKzE0NCw3IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0 UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+ZmlsdGVyX2J5X29yaWdpbl9jYiA9IHBnX2Rl Y29kZV9maWx0ZXI7CiAJY2ItPnNodXRkb3duX2NiID0gcGdfZGVjb2RlX3NodXRkb3duOwog CWNiLT5tZXNzYWdlX2NiID0gcGdfZGVjb2RlX21lc3NhZ2U7CisJY2ItPnNlcXVlbmNlX2Ni ID0gcGdfZGVjb2RlX3NlcXVlbmNlOwogCWNiLT5maWx0ZXJfcHJlcGFyZV9jYiA9IHBnX2Rl Y29kZV9maWx0ZXJfcHJlcGFyZTsKIAljYi0+YmVnaW5fcHJlcGFyZV9jYiA9IHBnX2RlY29k ZV9iZWdpbl9wcmVwYXJlX3R4bjsKIAljYi0+cHJlcGFyZV9jYiA9IHBnX2RlY29kZV9wcmVw YXJlX3R4bjsKQEAgLTE0Nyw2ICsxNTcsNyBAQCBfUEdfb3V0cHV0X3BsdWdpbl9pbml0KE91 dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPnN0cmVhbV9jb21taXRfY2IgPSBwZ19k ZWNvZGVfc3RyZWFtX2NvbW1pdDsKIAljYi0+c3RyZWFtX2NoYW5nZV9jYiA9IHBnX2RlY29k ZV9zdHJlYW1fY2hhbmdlOwogCWNiLT5zdHJlYW1fbWVzc2FnZV9jYiA9IHBnX2RlY29kZV9z dHJlYW1fbWVzc2FnZTsKKwljYi0+c3RyZWFtX3NlcXVlbmNlX2NiID0gcGdfZGVjb2RlX3N0 cmVhbV9zZXF1ZW5jZTsKIAljYi0+c3RyZWFtX3RydW5jYXRlX2NiID0gcGdfZGVjb2RlX3N0 cmVhbV90cnVuY2F0ZTsKIH0KIApAQCAtMTY4LDYgKzE3OSw3IEBAIHBnX2RlY29kZV9zdGFy dHVwKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAq b3B0LAogCWRhdGEtPmluY2x1ZGVfdGltZXN0YW1wID0gZmFsc2U7CiAJZGF0YS0+c2tpcF9l bXB0eV94YWN0cyA9IGZhbHNlOwogCWRhdGEtPm9ubHlfbG9jYWwgPSBmYWxzZTsKKwlkYXRh LT5pbmNsdWRlX3NlcXVlbmNlcyA9IGZhbHNlOwogCiAJY3R4LT5vdXRwdXRfcGx1Z2luX3By aXZhdGUgPSBkYXRhOwogCkBAIC0yNTksNiArMjcxLDE3IEBAIHBnX2RlY29kZV9zdGFydHVw KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0 LAogCQkJCQkJIGVycm1zZygiY291bGQgbm90IHBhcnNlIHZhbHVlIFwiJXNcIiBmb3IgcGFy YW1ldGVyIFwiJXNcIiIsCiAJCQkJCQkJCXN0clZhbChlbGVtLT5hcmcpLCBlbGVtLT5kZWZu YW1lKSkpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAiaW5jbHVk ZS1zZXF1ZW5jZXMiKSA9PSAwKQorCQl7CisKKwkJCWlmIChlbGVtLT5hcmcgPT0gTlVMTCkK KwkJCQlkYXRhLT5pbmNsdWRlX3NlcXVlbmNlcyA9IHRydWU7CisJCQllbHNlIGlmICghcGFy c2VfYm9vbChzdHJWYWwoZWxlbS0+YXJnKSwgJmRhdGEtPmluY2x1ZGVfc2VxdWVuY2VzKSkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcGFyc2UgdmFsdWUg XCIlc1wiIGZvciBwYXJhbWV0ZXIgXCIlc1wiIiwKKwkJCQkJCQkJc3RyVmFsKGVsZW0tPmFy ZyksIGVsZW0tPmRlZm5hbWUpKSk7CisJCX0KIAkJZWxzZQogCQl7CiAJCQllcmVwb3J0KEVS Uk9SLApAQCAtNzYyLDYgKzc4NSwzOCBAQCBwZ19kZWNvZGVfbWVzc2FnZShMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0K IAorc3RhdGljIHZvaWQKK3BnX2RlY29kZV9zZXF1ZW5jZShMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkgICBYTG9nUmVjUHRyIHNl cXVlbmNlX2xzbiwgUmVsYXRpb24gcmVsLAorCQkJCSAgIGJvb2wgdHJhbnNhY3Rpb25hbCwK KwkJCQkgICBpbnQ2NCB2YWx1ZSkKK3sKKwlUZXN0RGVjb2RpbmdEYXRhICpkYXRhID0gY3R4 LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisJVGVzdERlY29kaW5nVHhuRGF0YSAqdHhuZGF0 YSA9IHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJaWYgKCFkYXRhLT5pbmNsdWRl X3NlcXVlbmNlcykKKwkJcmV0dXJuOworCisJLyogb3V0cHV0IEJFR0lOIGlmIHdlIGhhdmVu J3QgeWV0LCBidXQgb25seSBmb3IgdGhlIHRyYW5zYWN0aW9uYWwgY2FzZSAqLworCWlmICh0 cmFuc2FjdGlvbmFsKQorCXsKKwkJaWYgKGRhdGEtPnNraXBfZW1wdHlfeGFjdHMgJiYgIXR4 bmRhdGEtPnhhY3Rfd3JvdGVfY2hhbmdlcykKKwkJeworCQkJcGdfb3V0cHV0X2JlZ2luKGN0 eCwgZGF0YSwgdHhuLCBmYWxzZSk7CisJCX0KKwkJdHhuZGF0YS0+eGFjdF93cm90ZV9jaGFu Z2VzID0gdHJ1ZTsKKwl9CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVl KTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LCAic2VxdWVuY2UgIik7CisJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjdHgtPm91dCwKKwkJCQkJCSAgIHF1b3RlX3F1YWxp ZmllZF9pZGVudGlmaWVyKGdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShS ZWxhdGlvbkdldFJlbGlkKHJlbCkpKSwKKwkJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCkpKTsKKwlhcHBlbmRTdHJpbmdJbmZvKGN0eC0+b3V0LCAiOiB0cmFu c2FjdGlvbmFsOiAlZCB2YWx1ZTogIiBJTlQ2NF9GT1JNQVQsCisJCQkJCSB0cmFuc2FjdGlv bmFsLCB2YWx1ZSk7CisJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKK30KKwogc3Rh dGljIHZvaWQKIHBnX2RlY29kZV9zdHJlYW1fc3RhcnQoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAogCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCkBAIC05NzQsNiArMTAy OSwzOCBAQCBwZ19kZWNvZGVfc3RyZWFtX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiB9CiAKK3N0YXRpYyB2 b2lkCitwZ19kZWNvZGVfc3RyZWFtX3NlcXVlbmNlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJICBYTG9nUmVjUHRyIHNlcXVl bmNlX2xzbiwgUmVsYXRpb24gcmVsLAorCQkJCQkJICBib29sIHRyYW5zYWN0aW9uYWwsCisJ CQkJCQkgIGludDY0IHZhbHVlKQoreworCVRlc3REZWNvZGluZ0RhdGEgKmRhdGEgPSBjdHgt Pm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlUZXN0RGVjb2RpbmdUeG5EYXRhICp0eG5kYXRh ID0gdHhuLT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisKKwlpZiAoIWRhdGEtPmluY2x1ZGVf c2VxdWVuY2VzKQorCQlyZXR1cm47CisKKwkvKiBvdXRwdXQgQkVHSU4gaWYgd2UgaGF2ZW4n dCB5ZXQsIGJ1dCBvbmx5IGZvciB0aGUgdHJhbnNhY3Rpb25hbCBjYXNlICovCisJaWYgKHRy YW5zYWN0aW9uYWwpCisJeworCQlpZiAoZGF0YS0+c2tpcF9lbXB0eV94YWN0cyAmJiAhdHhu ZGF0YS0+eGFjdF93cm90ZV9jaGFuZ2VzKQorCQl7CisJCQlwZ19vdXRwdXRfc3RyZWFtX3N0 YXJ0KGN0eCwgZGF0YSwgdHhuLCBmYWxzZSk7CisJCX0KKwkJdHhuZGF0YS0+eGFjdF93cm90 ZV9jaGFuZ2VzID0gdHJ1ZTsKKwl9CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4 LCB0cnVlKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LCAic3RyZWFtaW5n IHNlcXVlbmNlICIpOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY3R4LT5vdXQsCisJCQkJ CQkgICBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihnZXRfbmFtZXNwYWNlX25hbWUoZ2V0 X3JlbF9uYW1lc3BhY2UoUmVsYXRpb25HZXRSZWxpZChyZWwpKSksCisJCQkJCQkJCQkJCQkJ ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSk7CisJYXBwZW5kU3RyaW5nSW5mbyhj dHgtPm91dCwgIjogdHJhbnNhY3Rpb25hbDogJWQgdmFsdWU6ICIgSU5UNjRfRk9STUFULAor CQkJCQkgdHJhbnNhY3Rpb25hbCwgdmFsdWUpOworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwg dHJ1ZSk7Cit9CisKIC8qCiAgKiBJbiBzdHJlYW1pbmcgbW9kZSwgd2UgZG9uJ3QgZGlzcGxh eSB0aGUgZGV0YWlsZWQgaW5mb3JtYXRpb24gb2YgVHJ1bmNhdGUuCiAgKiBTZWUgcGdfZGVj b2RlX3N0cmVhbV9jaGFuZ2UuCi0tIAoyLjQzLjAKCg== --------------04bDZ9og1eK4R6g8Y06g4sJM Content-Type: text/x-patch; charset=UTF-8; name="v20240111-0003-Add-decoding-of-sequences-to-built-in-repl.patch" Content-Disposition: attachment; filename*0="v20240111-0003-Add-decoding-of-sequences-to-built-in-repl.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0NmMxZTllNjk3MjQ1NDM1YTAxZmExZDg2ZTM3NTA3MWQ3ZjdmNDJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogV2VkLCAxMCBKYW4gMjAyNCAxNjowODo0OCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjQwMTExIDMvN10gQWRkIGRlY29kaW5nIG9mIHNlcXVlbmNlcyB0 byBidWlsdC1pbgogcmVwbGljYXRpb24KClRoaXMgY29tbWl0IGFkZHMgc3VwcG9ydCBmb3Ig ZGVjb2Rpbmcgb2Ygc2VxdWVuY2VzIHRvIHRoZSBidWlsdC1pbgpyZXBsaWNhdGlvbiAodGhl IGluZnJhc3RydWN0dXJlIHdhcyBhZGRlZCBieSBjb21taXQgMGRhOTJkYzUzMCkuCgpUaGUg c3ludGF4IGFuZCBiZWhhdmlvciBtb3N0bHkgbWltaWNzIGhhbmRsaW5nIG9mIHRhYmxlcywg aS5lLiBhCnB1YmxpY2F0aW9uIG1heSBiZSBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VT IChyZXBsaWNhdGluZyBhbGwKc2VxdWVuY2VzIGluIGEgZGF0YWJhc2UpLCBGT1IgQUxMIFNF UVVFTkNFUyBJTiBTQ0hFTUEgKHJlcGxpY2F0aW5nCmFsbCBzZXF1ZW5jZXMgaW4gYSBwYXJ0 aWN1bGFyIHNjaGVtYSkgb3IgaW5kaXZpZHVhbCBzZXF1ZW5jZXMuCgpUbyBwdWJsaXNoIHNl cXVlbmNlIG1vZGlmaWNhdGlvbnMsIHRoZSBwdWJsaWNhdGlvbiBoYXMgdG8gaW5jbHVkZQon c2VxdWVuY2UnIGFjdGlvbi4gVGhlIHByb3RvY29sIGlzIGV4dGVuZGVkIHdpdGggYSBuZXcg bWVzc2FnZSwKZGVzY3JpYmluZyBzZXF1ZW5jZSBpbmNyZW1lbnRzLgoKQSBuZXcgc3lzdGVt IHZpZXcgcGdfcHVibGljYXRpb25fc2VxdWVuY2VzIGxpc3RzIGFsbCB0aGUgc2VxdWVuY2Vz CmFkZGVkIHRvIGEgcHVibGljYXRpb24sIGJvdGggZGlyZWN0bHkgYW5kIGluZGlyZWN0bHku IFZhcmlvdXMgcHNxbApjb21tYW5kcyAoXGQgYW5kIFxkUnApIGFyZSBpbXByb3ZlZCB0byBh bHNvIGRpc3BsYXkgcHVibGljYXRpb25zCmluY2x1ZGluZyBhIGdpdmVuIHNlcXVlbmNlLCBv ciBzZXF1ZW5jZXMgaW5jbHVkZWQgaW4gYSBwdWJsaWNhdGlvbi4KCkF1dGhvcjogVG9tYXMg Vm9uZHJhLCBDYXJ5IEh1YW5nLCBNYXNhaGlrbyBTYXdhZGEKUmV2aWV3ZWQtYnk6IEFzaHV0 b3NoIEJhcGF0LCBBbWl0IEthcGlsYSwgUGV0ZXIgRWlzZW50cmF1dCwgQW1pdCBLYXBpbGEs Ckhhbm51IEtyb3NpbmcsIEFuZHJlcyBGcmV1bmQsIFBldHIgSmVsaW5laywgWmhpamllIEhv dQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2QwNDVmM2MyLTZjZmItMDZkMy01 NTQwLWU2M2MzMjBkZjhiY0BlbnRlcnByaXNlZGIuY29tCkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vMTcxMGVkN2UxM2IuY2Q3MTc3NDYxNDMwNzQ2LjMzNzIyNjQ1NjI1NDM2 MDc3ODFAaGlnaGdvLmNhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FEMjFB b0R0S3BkSmNIT0xqZlBRN1RtcEZxTkI1X18lM0RRX2cxZThPQlJyd1Q1TFAtJTNEZyU0MG1h aWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAg ICAgICAgICAgIHwgICAxMCArCiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAg ICAgICAgICAgICAgfCAgIDgwICsrCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0 aW9uLnNnbWwgICAgICAgfCAgIDI1ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNj cmlwdGlvbi5zZ21sICAgICAgfCAgICA4ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9w dWJsaWNhdGlvbi5zZ21sICAgICAgfCAgIDUxICstCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZp ZXdzLnNnbWwgICAgICAgICAgICAgICAgfCAgIDcxICsrCiBzcmMvYmFja2VuZC9jYXRhbG9n L29iamVjdGFkZHJlc3MuYyAgICAgICAgICAgfCAgIDQ1ICstCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAgfCAgMzM2ICsrKysrLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAxMCArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAgNDIyICsrKysrLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8ICAyNDgg KysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwg IDEwMSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAgICAg IHwgICAgNCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAg ICAgIHwgICA3MyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j ICAgICAgIHwgICA1NSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jICAgfCAgMTM1ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYyAgICAgIHwgICA5NyArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRw dXQvcGdvdXRwdXQuYyAgIHwgIDEwOCArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYyAgICAgICAgICAgIHwgICAyOCArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv c3lzY2FjaGUuYyAgICAgICAgICAgIHwgICAgNSArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgICA2NCArLQogc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAgIDQ3ICstCiBzcmMvYmluL3BzcWwv ZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjk3ICsrKy0tCiBzcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAgICAgICAgICAgfCAgIDM5ICstCiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDEzICsKIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgICB8ICAgMjYgKy0K IC4uLi9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oICAgICAgICB8ICAgMTAg Ky0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggICAgICAgICAgICAgICB8ICAg IDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwg ICAxMCArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAg IHwgICAxOSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vYmplY3RfYWRkcmVzcy5v dXQgIHwgICAyMCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCAgICAg ICAgICAgIHwgICAgNiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQgICAgIHwgMTA1NSArKysrKysrKysrKysrLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICAgOCArCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9vYmplY3RfYWRkcmVzcy5zcWwgICAgICAgfCAgICA1ICstCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgMjMxICsrKy0KIHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzNF9zZXF1ZW5jZXMucGwgICAgICB8ICAzNDQgKysrKysrCiBz cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgICAxICsK IDM5IGZpbGVzIGNoYW5nZWQsIDM1ODkgaW5zZXJ0aW9ucygrKSwgNTIyIGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF9zZXF1 ZW5jZXMucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDNlYzczOTFlYzVlLi5kNjFmYTAxNDMx NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTY0MjUsNiArNjQyNSwxNiBAQCBTQ1JBTS1TSEEt MjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+ OjxyZXBsYWNlYWJsZT4mbAogICAgICAgIFJlZmVyZW5jZSB0byBzY2hlbWEKICAgICAgIDwv cGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cG50eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ Y2hhcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERldGVy bWluZXMgd2hpY2ggb2JqZWN0IHR5cGUgaXMgaW5jbHVkZWQgZnJvbSB0aGlzIHNjaGVtYS4K KyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiBmb3IgdGFibGVzLCA8bGl0ZXJhbD5zPC9s aXRlcmFsPiBmb3Igc2VxdWVuY2VzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wu c2dtbAppbmRleCA2YzNlOGE2MzFkNy4uZTJlMGRlY2YyZWQgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21s CkBAIC02NDc3LDYgKzY0NzcsODYgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0 aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InByb3RvY29sLWxv Z2ljYWxyZXAtbWVzc2FnZS1mb3JtYXRzLVNlcXVlbmNlIj4KKyAgICA8dGVybT5TZXF1ZW5j ZTwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8 dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkJ5dGUxKCdYJyk8L3Rlcm0+CisgICAgICAg PGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIElkZW50aWZpZXMgdGhlIG1l c3NhZ2UgYXMgYSBzZXF1ZW5jZSBtZXNzYWdlLgorICAgICAgICA8L3BhcmE+CisgICAgICAg PC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgIDx0ZXJtPkludDMyIChUcmFuc2FjdGlvbklkKTwvdGVybT4KKyAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgWGlkIG9mIHRoZSB0cmFu c2FjdGlvbiAob25seSBwcmVzZW50IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMpLgorICAg ICAgICAgVGhpcyBmaWVsZCBpcyBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wgdmVyc2lvbiAy LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlz dGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDggKDAp PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBG bGFnczsgY3VycmVudGx5IHVudXNlZC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlz dGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgICA8dGVybT5JbnQ2NCAoWExvZ1JlY1B0cik8L3Rlcm0+CisgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBMU04gb2YgdGhlIHNlcXVlbmNl IGluY3JlbWVudC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVy bT5TdHJpbmc8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAg ICAgICAgIE5hbWVzcGFjZSAoZW1wdHkgc3RyaW5nIGZvciA8bGl0ZXJhbD5wZ19jYXRhbG9n PC9saXRlcmFsPikuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRl cm0+U3RyaW5nPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+Cisg ICAgICAgICBTZXF1ZW5jZSBuYW1lLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5Pgor ICAgICAgIDx0ZXJtPkludDg8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8 cGFyYT4KKyAgICAgICAgIDEgaWYgdGhlIHNlcXVlbmNlIHVwZGF0ZSBpcyB0cmFuc2FjdGlv bmFsLCAwIG90aGVyd2lzZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+ CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAg ICA8dGVybT5JbnQ2NDwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJh PgorICAgICAgICAgPHN0cnVjdGZpZWxkPnZhbHVlPC9zdHJ1Y3RmaWVsZD4gdmFsdWUgb2Yg dGhlIHNlcXVlbmNlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAg ICAgIDwvdmFybGlzdGVudHJ5PgorICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InByb3Rv Y29sLWxvZ2ljYWxyZXAtbWVzc2FnZS1mb3JtYXRzLVR5cGUiPgogICAgIDx0ZXJtPlR5cGU8 L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9wdWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNh dGlvbi5zZ21sCmluZGV4IDQ0YWU3ZTBlODcxLi44Y2FmMjEzNWZjNyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMzEsNyArMzEsOSBAQCBBTFRF UiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+IFJFTkFNRSBUTyA8cgogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25l IG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gKSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhw cmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBbLCAuLi4gXQorICAgIFNFUVVFTkNFIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXF1ZW5jZV9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0KICAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9 IFssIC4uLiBdCisgICAgU0VRVUVOQ0VTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hF TUEgfSBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC00 NCwxMyArNDYsMTMgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgPC9wYXJhPgog CiAgIDxwYXJhPgotICAgVGhlIGZpcnN0IHRocmVlIHZhcmlhbnRzIGNoYW5nZSB3aGljaCB0 YWJsZXMvc2NoZW1hcyBhcmUgcGFydCBvZiB0aGUKLSAgIHB1YmxpY2F0aW9uLiAgVGhlIDxs aXRlcmFsPlNFVDwvbGl0ZXJhbD4gY2xhdXNlIHdpbGwgcmVwbGFjZSB0aGUgbGlzdCBvZgot ICAgdGFibGVzL3NjaGVtYXMgaW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmll ZCBsaXN0OyB0aGUgZXhpc3RpbmcKLSAgIHRhYmxlcy9zY2hlbWFzIHRoYXQgd2VyZSBwcmVz ZW50IGluIHRoZSBwdWJsaWNhdGlvbiB3aWxsIGJlIHJlbW92ZWQuICBUaGUKLSAgIDxsaXRl cmFsPkFERDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkRST1A8L2xpdGVyYWw+IGNsYXVzZXMg d2lsbCBhZGQgYW5kCi0gICByZW1vdmUgb25lIG9yIG1vcmUgdGFibGVzL3NjaGVtYXMgZnJv bSB0aGUgcHVibGljYXRpb24uICBOb3RlIHRoYXQgYWRkaW5nCi0gICB0YWJsZXMvc2NoZW1h cyB0byBhIHB1YmxpY2F0aW9uIHRoYXQgaXMgYWxyZWFkeSBzdWJzY3JpYmVkIHRvIHdpbGwg cmVxdWlyZSBhbgorICAgVGhlIGZpcnN0IHRocmVlIHZhcmlhbnRzIGNoYW5nZSB3aGljaCBv YmplY3RzICh0YWJsZXMsIHNlcXVlbmNlcyBvciBzY2hlbWFzKQorICAgYXJlIHBhcnQgb2Yg dGhlIHB1YmxpY2F0aW9uLiAgVGhlIDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gY2xhdXNlIHdp bGwgcmVwbGFjZQorICAgdGhlIGxpc3Qgb2Ygb2JqZWN0cyBpbiB0aGUgcHVibGljYXRpb24g d2l0aCB0aGUgc3BlY2lmaWVkIGxpc3Q7IHRoZSBleGlzdGluZworICAgb2JqZWN0cyB0aGF0 IHdlcmUgcHJlc2VudCBpbiB0aGUgcHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLgorICAg VGhlIDxsaXRlcmFsPkFERDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkRST1A8L2xpdGVyYWw+ IGNsYXVzZXMgd2lsbCBhZGQgYW5kCisgICByZW1vdmUgb25lIG9yIG1vcmUgb2JqZWN0cyBm cm9tIHRoZSBwdWJsaWNhdGlvbi4gIE5vdGUgdGhhdCBhZGRpbmcgb2JqZWN0cworICAgdG8g YSBwdWJsaWNhdGlvbiB0aGF0IGlzIGFscmVhZHkgc3Vic2NyaWJlZCB0byB3aWxsIHJlcXVp cmUgYW4KICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMt cmVmcmVzaC1wdWJsaWNhdGlvbiI+CiAgICA8bGl0ZXJhbD5BTFRFUiBTVUJTQ1JJUFRJT04g Li4uIFJFRlJFU0ggUFVCTElDQVRJT048L2xpdGVyYWw+PC9saW5rPiBhY3Rpb24gb24gdGhl CiAgICBzdWJzY3JpYmluZyBzaWRlIGluIG9yZGVyIHRvIGJlY29tZSBlZmZlY3RpdmUuIE5v dGUgYWxzbyB0aGF0CkBAIC0xMzgsNiArMTQwLDE1IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1F IFRPIDxyCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z ZXF1ZW5jZV9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIE5hbWUgb2YgYW4gZXhpc3Rpbmcgc2VxdWVuY2UuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnk+CiAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNj aGVtYV9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggNmQzNmZmMGRjOTAu LjQ3OWVjNDk1ODk2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNj cmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9u LnNnbWwKQEAgLTE1Miw4ICsxNTIsOCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAog ICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBGZXRjaCBtaXNzaW5nIHRhYmxl IGluZm9ybWF0aW9uIGZyb20gcHVibGlzaGVyLiAgVGhpcyB3aWxsIHN0YXJ0Ci0gICAgICBy ZXBsaWNhdGlvbiBvZiB0YWJsZXMgdGhhdCB3ZXJlIGFkZGVkIHRvIHRoZSBzdWJzY3JpYmVk LXRvIHB1YmxpY2F0aW9ucwotICAgICAgc2luY2UgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0 ZXN1YnNjcmlwdGlvbiI+CisgICAgICByZXBsaWNhdGlvbiBvZiB0YWJsZXMgYW5kIHNlcXVl bmNlcyB0aGF0IHdlcmUgYWRkZWQgdG8gdGhlIHN1YnNjcmliZWQtdG8KKyAgICAgIHB1Ymxp Y2F0aW9ucyBzaW5jZSA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uIj4K ICAgICAgIDxjb21tYW5kPkNSRUFURSBTVUJTQ1JJUFRJT048L2NvbW1hbmQ+PC9saW5rPiBv cgogICAgICAgdGhlIGxhc3QgaW52b2NhdGlvbiBvZiA8Y29tbWFuZD5SRUZSRVNIIFBVQkxJ Q0FUSU9OPC9jb21tYW5kPi4KICAgICAgPC9wYXJhPgpAQCAtMTcyLDggKzE3Miw4IEBAIEFM VEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8CiAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxp dGVyYWw+dHJ1ZTwvbGl0ZXJhbD4uCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFy YT4KLSAgICAgICAgICBQcmV2aW91c2x5IHN1YnNjcmliZWQgdGFibGVzIGFyZSBub3QgY29w aWVkLCBldmVuIGlmIGEgdGFibGUncyByb3cKLSAgICAgICAgICBmaWx0ZXIgPGxpdGVyYWw+ V0hFUkU8L2xpdGVyYWw+IGNsYXVzZSBoYXMgc2luY2UgYmVlbiBtb2RpZmllZC4KKyAgICAg ICAgICBQcmV2aW91c2x5IHN1YnNjcmliZWQgdGFibGVzIGFuZCBzZXF1ZW5jZXMgYXJlIG5v dCBjb3BpZWQsIGV2ZW4gaWYgYQorICAgICAgICAgIHRhYmxlJ3Mgcm93IGZpbHRlciA8bGl0 ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlIGhhcyBzaW5jZSBiZWVuIG1vZGlmaWVkLgog ICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU2VlIDx4cmVm IGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tbm90ZXMiLz4gZm9yIGRldGFpbHMg b2YKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IGZk OWM1ZGVhYzk1Li5iYTU3OGViOWFhNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9w dWJsaWNhdGlvbi5zZ21sCkBAIC0yMiwxNCArMjIsMjEgQEAgUG9zdGdyZVNRTCBkb2N1bWVu dGF0aW9uCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgogQ1JFQVRFIFBVQkxJQ0FU SU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4K LSAgICBbIEZPUiBBTEwgVEFCTEVTCisgICAgWyBGT1IgQUxMIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5vYmplY3RfdHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICAg IHwgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBdCiAgICAgWyBXSVRIICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+ IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+ XSBbLCAuLi4gXSApIF0KIAorPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b2JqZWN0IHR5cGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+ CisKKyAgICBUQUJMRVMKKyAgICBTRVFVRU5DRVMKKwogPHBocmFzZT53aGVyZSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJs ZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBb ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gKSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBbLCAuLi4gXQorICAgIFNFUVVF TkNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXF1ZW5jZV9uYW1lPC9yZXBs YWNlYWJsZT4gWyAqIF0gWywgLi4uIF0KICAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBD VVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCisgICAgU0VRVUVOQ0VTIElOIFNDSEVNQSB7IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+ IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9w c2lzZGl2PgogCkBAIC0xMTcsMjIgKzEyNCwzOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0i c3FsLWNyZWF0ZXB1YmxpY2F0aW9uLWZvci1zZXF1ZW5jZSI+CisgICAgPHRlcm0+PGxpdGVy YWw+Rk9SIFNFUVVFTkNFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBzZXF1ZW5jZXMgdG8gYWRkIHRv IHRoZSBwdWJsaWNhdGlvbi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAg U3BlY2lmeWluZyBhIHNlcXVlbmNlIHRoYXQgaXMgcGFydCBvZiBhIHNjaGVtYSBzcGVjaWZp ZWQgYnkgPGxpdGVyYWw+Rk9SCisgICAgICBBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQTwvbGl0 ZXJhbD4gaXMgbm90IHN1cHBvcnRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0 ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItYWxsLXRhYmxlcyI+CiAgICAgPHRlcm0+PGxpdGVy YWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDx0ZXJtPjxsaXRlcmFs PkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CiAg ICAgIDxwYXJhPgotICAgICAgTWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIG9uZSB0aGF0IHJl cGxpY2F0ZXMgY2hhbmdlcyBmb3IgYWxsIHRhYmxlcyBpbgotICAgICAgdGhlIGRhdGFiYXNl LCBpbmNsdWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgIE1hcmtz IHRoZSBwdWJsaWNhdGlvbiBhcyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFs bCB0YWJsZXMgb3IKKyAgICAgIHNlcXVlbmNlcyBpbiB0aGUgZGF0YWJhc2UsIGluY2x1ZGlu ZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0dXJlLgogICAgICA8L3BhcmE+CiAgICAgPC9s aXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICA8dmFybGlzdGVudHJ5IGlkPSJz cWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci10YWJsZXMtaW4tc2NoZW1hIj4KICAg ICA8dGVybT48bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD48L3Rlcm0+ CisgICAgPHRlcm0+PGxpdGVyYWw+Rk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+ PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBNYXJrcyB0aGUg cHVibGljYXRpb24gYXMgb25lIHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFi bGVzIGluCi0gICAgICB0aGUgc3BlY2lmaWVkIGxpc3Qgb2Ygc2NoZW1hcywgaW5jbHVkaW5n IHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUuCisgICAgICBNYXJrcyB0aGUgcHVibGlj YXRpb24gYXMgb25lIHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVzIG9y CisgICAgICBzZXF1ZW5jZXMgaW4gdGhlIHNwZWNpZmllZCBsaXN0IG9mIHNjaGVtYXMsIGlu Y2x1ZGluZyB0YWJsZXMgb3Igc2VxdWVuY2VzCisgICAgICBjcmVhdGVkIGluIHRoZSBmdXR1 cmUuCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAgLTI0MCwxMCArMjY0LDEyIEBA IENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+CiAgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CiAKICAgPHBhcmE+Ci0g ICBJZiA8bGl0ZXJhbD5GT1IgVEFCTEU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5GT1IgQUxMIFRB QkxFUzwvbGl0ZXJhbD4gb3IKLSAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9s aXRlcmFsPiBhcmUgbm90IHNwZWNpZmllZCwgdGhlbiB0aGUKLSAgIHB1YmxpY2F0aW9uIHN0 YXJ0cyBvdXQgd2l0aCBhbiBlbXB0eSBzZXQgb2YgdGFibGVzLiAgVGhhdCBpcyB1c2VmdWwg aWYKLSAgIHRhYmxlcyBvciBzY2hlbWFzIGFyZSB0byBiZSBhZGRlZCBsYXRlci4KKyAgIElm IDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4sIDxsaXRlcmFsPkZPUiBTRVFVRU5DRTwv bGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sIDxsaXRl cmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiwKKyAgIDxsaXRlcmFsPkZPUiBUQUJM RVMgSU4gU0NIRU1BPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5GT1IgU0VRVUVOQ0VTIElOIFND SEVNQTwvbGl0ZXJhbD4KKyAgIGFyZSBub3Qgc3BlY2lmaWVkLCB0aGVuIHRoZSBwdWJsaWNh dGlvbiBzdGFydHMgb3V0IHdpdGggYW4gZW1wdHkgc2V0CisgICBvZiB0YWJsZXMvc2VxdWVu Y2VzLiAgVGhhdCBpcyB1c2VmdWwgaWYgdGFibGVzLCBzZXF1ZW5jZXMgb3Igc2NoZW1hcwor ICAgYXJlIHRvIGJlIGFkZGVkIGxhdGVyLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CkBAIC0y NTgsOSArMjg0LDEwIEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4K LSAgIFRvIGFkZCBhIHRhYmxlIHRvIGEgcHVibGljYXRpb24sIHRoZSBpbnZva2luZyB1c2Vy IG11c3QgaGF2ZSBvd25lcnNoaXAKLSAgIHJpZ2h0cyBvbiB0aGUgdGFibGUuICBUaGUgPGNv bW1hbmQ+Rk9SIEFMTCBUQUJMRVM8L2NvbW1hbmQ+IGFuZAotICAgPGNvbW1hbmQ+Rk9SIFRB QkxFUyBJTiBTQ0hFTUE8L2NvbW1hbmQ+IGNsYXVzZXMgcmVxdWlyZSB0aGUgaW52b2tpbmcK KyAgIFRvIGFkZCBhIHRhYmxlIG9yIGEgc2VxdWVuY2UgdG8gYSBwdWJsaWNhdGlvbiwgdGhl IGludm9raW5nIHVzZXIgbXVzdAorICAgaGF2ZSBvd25lcnNoaXAgcmlnaHRzIG9uIHRoZSBv YmplY3QuICBUaGUgPGNvbW1hbmQ+Rk9SIEFMTCBUQUJMRVM8L2NvbW1hbmQ+LAorICAgPGNv bW1hbmQ+Rk9SIEFMTCBTRVFVRU5DRVM8L2NvbW1hbmQ+LCA8Y29tbWFuZD5GT1IgVEFCTEVT IElOIFNDSEVNQTwvY29tbWFuZD4KKyAgIGFuZCA8Y29tbWFuZD5GT1IgU0VRVUVOQ0VTIElO IFNDSEVNQTwvY29tbWFuZD4gY2xhdXNlcyByZXF1aXJlIHRoZSBpbnZva2luZwogICAgdXNl ciB0byBiZSBhIHN1cGVydXNlci4KICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNn bWwKaW5kZXggNzJkMDFmYzYyNGMuLmQyZjkxMTczOTE3IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3 cy5zZ21sCkBAIC0xMjYsNiArMTI2LDExIEBACiAgICAgICA8ZW50cnk+cHJlcGFyZWQgdHJh bnNhY3Rpb25zPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT48bGluayBsaW5rZW5kPSJ2aWV3LXBnLXB1YmxpY2F0aW9uLXNlcXVlbmNlcyI+PHN0 cnVjdG5hbWU+cGdfcHVibGljYXRpb25fc2VxdWVuY2VzPC9zdHJ1Y3RuYW1lPjwvbGluaz48 L2VudHJ5PgorICAgICAgPGVudHJ5PnB1YmxpY2F0aW9ucyBhbmQgaW5mb3JtYXRpb24gb2Yg dGhlaXIgYXNzb2NpYXRlZCBzZXF1ZW5jZXM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAg ICA8cm93PgogICAgICAgPGVudHJ5PjxsaW5rIGxpbmtlbmQ9InZpZXctcGctcHVibGljYXRp b24tdGFibGVzIj48c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl90YWJsZXM8L3N0cnVjdG5h bWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cHVibGljYXRpb25zIGFuZCBpbmZv cm1hdGlvbiBvZiB0aGVpciBhc3NvY2lhdGVkIHRhYmxlczwvZW50cnk+CkBAIC0yMTM4LDYg KzIxNDMsNzIgQEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJl cGFyZWRfeGFjdHMgcHB4CiAKICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJ2aWV3LXBnLXB1 YmxpY2F0aW9uLXNlcXVlbmNlcyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wdWJsaWNh dGlvbl9zZXF1ZW5jZXM8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpv bmU9InZpZXctcGctcHVibGljYXRpb24tc2VxdWVuY2VzIj4KKyAgIDxwcmltYXJ5PnBnX3B1 YmxpY2F0aW9uX3NlcXVlbmNlczwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBh cmE+CisgICBUaGUgdmlldyA8c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM8 L3N0cnVjdG5hbWU+IHByb3ZpZGVzCisgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbWFwcGlu ZyBiZXR3ZWVuIHB1YmxpY2F0aW9ucyBhbmQgaW5mb3JtYXRpb24gb2YKKyAgIHNlcXVlbmNl cyB0aGV5IGNvbnRhaW4uICBVbmxpa2UgdGhlIHVuZGVybHlpbmcgY2F0YWxvZworICAgPGxp bmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wdWJsaWNhdGlvbi1yZWwiPjxzdHJ1Y3RuYW1lPnBn X3B1YmxpY2F0aW9uX3JlbDwvc3RydWN0bmFtZT48L2xpbms+LAorICAgdGhpcyB2aWV3IGV4 cGFuZHMgcHVibGljYXRpb25zIGRlZmluZWQgYXMgPGxpdGVyYWw+Rk9SIEFMTCBTRVFVRU5D RVM8L2xpdGVyYWw+CisgICBhbmQgPGxpdGVyYWw+Rk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUE8 L2xpdGVyYWw+LCBzbyBmb3Igc3VjaCBwdWJsaWNhdGlvbnMKKyAgIHRoZXJlIHdpbGwgYmUg YSByb3cgZm9yIGVhY2ggZWxpZ2libGUgc2VxdWVuY2UuCisgIDwvcGFyYT4KKworICA8dGFi bGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fc2VxdWVuY2VzPC9z dHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1bW4g VHlwZQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24K KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisg ICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+cHVibmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAg ICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wdWJsaWNhdGlvbiI+ PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb248L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0 ZmllbGQ+cHVibmFtZTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgTmFtZSBvZiBwdWJsaWNhdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IDxzdHJ1Y3RmaWVsZD5zY2hlbWFuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlw ZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLW5hbWVz cGFjZSI+PHN0cnVjdG5hbWU+cGdfbmFtZXNwYWNlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0 cnVjdGZpZWxkPm5zcG5hbWU8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIE5hbWUgb2Ygc2NoZW1hIGNvbnRhaW5pbmcgc2VxdWVuY2UKKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c2VxdWVuY2VuYW1lPC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5r ZW5kPSJjYXRhbG9nLXBnLWNsYXNzIj48c3RydWN0bmFtZT5wZ19jbGFzczwvc3RydWN0bmFt ZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5yZWxuYW1lPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHNlcXVlbmNlCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3Vw PgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9InZpZXctcGctcHVibGlj YXRpb24tdGFibGVzIj4KICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0aW9uX3Rh Ymxlczwvc3RydWN0bmFtZT48L3RpdGxlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL29iamVjdGFkZHJlc3MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRk cmVzcy5jCmluZGV4IDhiYjI5MjRiOWNkLi42Njc5NmJmMTBlYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTE5NjQsMTIgKzE5NjQsMTQgQEAgZ2V0X29iamVj dF9hZGRyZXNzX3B1YmxpY2F0aW9uX3NjaGVtYShMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2lu Z19vaykKIAljaGFyCSAgICpwdWJuYW1lOwogCWNoYXIJICAgKnNjaGVtYW5hbWU7CiAJT2lk CQkJc2NoZW1haWQ7CisJY2hhcgkgICAqb2JqdHlwZTsKIAogCU9iamVjdEFkZHJlc3NTZXQo YWRkcmVzcywgUHVibGljYXRpb25OYW1lc3BhY2VSZWxhdGlvbklkLCBJbnZhbGlkT2lkKTsK IAogCS8qIEZldGNoIHNjaGVtYSBuYW1lIGFuZCBwdWJsaWNhdGlvbiBuYW1lIGZyb20gaW5w dXQgbGlzdCAqLwogCXNjaGVtYW5hbWUgPSBzdHJWYWwobGluaXRpYWwob2JqZWN0KSk7CiAJ cHVibmFtZSA9IHN0clZhbChsc2Vjb25kKG9iamVjdCkpOworCW9ianR5cGUgPSBzdHJWYWwo bHRoaXJkKG9iamVjdCkpOwogCiAJc2NoZW1haWQgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hl bWFuYW1lLCBtaXNzaW5nX29rKTsKIAlpZiAoIU9pZElzVmFsaWQoc2NoZW1haWQpKQpAQCAt MTk4MiwxMCArMTk4NCwxMiBAQCBnZXRfb2JqZWN0X2FkZHJlc3NfcHVibGljYXRpb25fc2No ZW1hKExpc3QgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCiAJLyogRmluZCB0aGUgcHVi bGljYXRpb24gc2NoZW1hIG1hcHBpbmcgaW4gc3lzY2FjaGUgKi8KIAlhZGRyZXNzLm9iamVj dElkID0KLQkJR2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAorCQlH ZXRTeXNDYWNoZU9pZDMoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCiAJCQkJCQlBbnVtX3Bn X3B1YmxpY2F0aW9uX25hbWVzcGFjZV9vaWQsCiAJCQkJCQlPYmplY3RJZEdldERhdHVtKHNj aGVtYWlkKSwKLQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocHViLT5vaWQpKTsKKwkJCQkJCU9i amVjdElkR2V0RGF0dW0ocHViLT5vaWQpLAorCQkJCQkJQ2hhckdldERhdHVtKG9ianR5cGVb MF0pKTsKKwogCWlmICghT2lkSXNWYWxpZChhZGRyZXNzLm9iamVjdElkKSAmJiAhbWlzc2lu Z19vaykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5F RF9PQkpFQ1QpLApAQCAtMjI2MCw3ICsyMjY0LDYgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJICovCiAJc3dpdGNoICh0eXBlKQogCXsKLQkJY2FzZSBP QkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNFOgogCQljYXNlIE9CSkVDVF9VU0VSX01BUFBJ Tkc6CiAJCQlpZiAobGlzdF9sZW5ndGgobmFtZSkgIT0gMSkKIAkJCQllcmVwb3J0KEVSUk9S LApAQCAtMjI5Myw2ICsyMjk2LDcgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCQkJCQkgZXJybXNnKCJuYW1lIGxpc3QgbGVuZ3RoIG11c3QgYmUgYXQg bGVhc3QgJWQiLCAzKSkpOwogCQkJLyogZmFsbCB0aHJvdWdoIHRvIGNoZWNrIGFyZ3MgbGVu Z3RoICovCiAJCQkvKiBGQUxMVEhST1VHSCAqLworCQljYXNlIE9CSkVDVF9QVUJMSUNBVElP Tl9OQU1FU1BBQ0U6CiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQkJaWYgKGxpc3RfbGVu Z3RoKGFyZ3MpICE9IDIpCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAgLTIzNjUsNiArMjM2OSw4 IEBAIHBnX2dldF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQkJb2Jqbm9k ZSA9IChOb2RlICopIGxpc3RfbWFrZTIobmFtZSwgbGluaXRpYWwoYXJncykpOwogCQkJYnJl YWs7CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKKwkJCW9iam5vZGUg PSAoTm9kZSAqKSBsaXN0X21ha2UzKGxpbml0aWFsKG5hbWUpLCBsaW5pdGlhbChhcmdzKSwg bHNlY29uZChhcmdzKSk7CisJCQlicmVhazsKIAkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5H OgogCQkJb2Jqbm9kZSA9IChOb2RlICopIGxpc3RfbWFrZTIobGluaXRpYWwobmFtZSksIGxp bml0aWFsKGFyZ3MpKTsKIAkJCWJyZWFrOwpAQCAtMjg2OCwxMSArMjg3NCwxMiBAQCBnZXRf Y2F0YWxvZ19vYmplY3RfYnlfb2lkKFJlbGF0aW9uIGNhdGFsb2csIEF0dHJOdW1iZXIgb2lk Y29sLCBPaWQgb2JqZWN0SWQpCiAgKgogICogR2V0IHB1YmxpY2F0aW9uIG5hbWUgYW5kIHNj aGVtYSBuYW1lIGZyb20gdGhlIG9iamVjdCBhZGRyZXNzIGludG8gcHVibmFtZSBhbmQKICAq IG5zcG5hbWUuIEJvdGggcHVibmFtZSBhbmQgbnNwbmFtZSBhcmUgcGFsbG9jJ2Qgc3RyaW5n cyB3aGljaCB3aWxsIGJlIGZyZWVkIGJ5Ci0gKiB0aGUgY2FsbGVyLgorICogdGhlIGNhbGxl ci4gVGhlIGxhc3QgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGljaCBvYmplY3QgdHlwZSBpcyBp bmNsdWRlZCBmcm9tCisgKiB0aGUgc2NoZW1hLgogICovCiBzdGF0aWMgYm9vbAogZ2V0UHVi bGljYXRpb25TY2hlbWFJbmZvKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBt aXNzaW5nX29rLAotCQkJCQkJIGNoYXIgKipwdWJuYW1lLCBjaGFyICoqbnNwbmFtZSkKKwkJ CQkJCSBjaGFyICoqcHVibmFtZSwgY2hhciAqKm5zcG5hbWUsIGNoYXIgKipvYmp0eXBlKQog ewogCUhlYXBUdXBsZQl0dXA7CiAJRm9ybV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG5m b3JtOwpAQCAtMjkwOCw2ICsyOTE1LDE0IEBAIGdldFB1YmxpY2F0aW9uU2NoZW1hSW5mbyhj b25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaywKIAkJcmV0dXJu IGZhbHNlOwogCX0KIAorCS8qCisJICogVGhlIHR5cGUgaXMgYWx3YXlzIGEgc2luZ2xlIGNo YXJhY3RlciwgYnV0IHdlIG5lZWQgdG8gcGFzcyBpdCBhcyBhCisJICogc3RyaW5nLCBzbyBh bGxvY2F0ZSB0d28gY2hhcmF0ZXJzIGFuZCBzZXQgdGhlIGZpcnN0IG9uZS4gVGhlIHNlY29u ZCBvbmUKKwkgKiBpcyBcMC4KKwkgKi8KKwkqb2JqdHlwZSA9IHBhbGxvYzAoMik7CisJKm9i anR5cGVbMF0gPSBwbmZvcm0tPnBudHlwZTsKKwogCVJlbGVhc2VTeXNDYWNoZSh0dXApOwog CXJldHVybiB0cnVlOwogfQpAQCAtMzk3OCwxNSArMzk5MywxNyBAQCBnZXRPYmplY3REZXNj cmlwdGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykK IAkJCXsKIAkJCQljaGFyCSAgICpwdWJuYW1lOwogCQkJCWNoYXIJICAgKm5zcG5hbWU7CisJ CQkJY2hhcgkgICAqb2JqdHlwZTsKIAogCQkJCWlmICghZ2V0UHVibGljYXRpb25TY2hlbWFJ bmZvKG9iamVjdCwgbWlzc2luZ19vaywKLQkJCQkJCQkJCQkJICAmcHVibmFtZSwgJm5zcG5h bWUpKQorCQkJCQkJCQkJCQkgICZwdWJuYW1lLCAmbnNwbmFtZSwgJm9ianR5cGUpKQogCQkJ CQlicmVhazsKIAotCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgXygicHVibGljYXRp b24gb2Ygc2NoZW1hICVzIGluIHB1YmxpY2F0aW9uICVzIiksCi0JCQkJCQkJCSBuc3BuYW1l LCBwdWJuYW1lKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInB1YmxpY2F0 aW9uIG9mIHNjaGVtYSAlcyBpbiBwdWJsaWNhdGlvbiAlcyB0eXBlICVzIiksCisJCQkJCQkJ CSBuc3BuYW1lLCBwdWJuYW1lLCBvYmp0eXBlKTsKIAkJCQlwZnJlZShwdWJuYW1lKTsKIAkJ CQlwZnJlZShuc3BuYW1lKTsKKwkJCQlwZnJlZShvYmp0eXBlKTsKIAkJCQlicmVhazsKIAkJ CX0KIApAQCAtNTgzMiwxOCArNTg0OSwyNCBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNv bnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCXsKIAkJCQljaGFyCSAgICpwdWJuYW1l OwogCQkJCWNoYXIJICAgKm5zcG5hbWU7CisJCQkJY2hhcgkgICAqb2JqdHlwZTsKIAogCQkJ CWlmICghZ2V0UHVibGljYXRpb25TY2hlbWFJbmZvKG9iamVjdCwgbWlzc2luZ19vaywgJnB1 Ym5hbWUsCi0JCQkJCQkJCQkJCSAgJm5zcG5hbWUpKQorCQkJCQkJCQkJCQkgICZuc3BuYW1l LCAmb2JqdHlwZSkpCiAJCQkJCWJyZWFrOwotCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZl ciwgIiVzIGluIHB1YmxpY2F0aW9uICVzIiwKLQkJCQkJCQkJIG5zcG5hbWUsIHB1Ym5hbWUp OworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVzIGluIHB1YmxpY2F0aW9uICVz IHR5cGUgJXMiLAorCQkJCQkJCQkgbnNwbmFtZSwgcHVibmFtZSwgb2JqdHlwZSk7CiAKIAkJ CQlpZiAob2JqYXJncykKIAkJCQkJKm9iamFyZ3MgPSBsaXN0X21ha2UxKHB1Ym5hbWUpOwog CQkJCWVsc2UKIAkJCQkJcGZyZWUocHVibmFtZSk7CiAKKwkJCQlpZiAob2JqYXJncykKKwkJ CQkJKm9iamFyZ3MgPSBsYXBwZW5kKCpvYmphcmdzLCBvYmp0eXBlKTsKKwkJCQllbHNlCisJ CQkJCXBmcmVlKG9ianR5cGUpOworCiAJCQkJaWYgKG9iam5hbWUpCiAJCQkJCSpvYmpuYW1l ID0gbGlzdF9tYWtlMShuc3BuYW1lKTsKIAkJCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMKaW5kZXggYjk4YjBjZTBhZWYuLmFjNTY4NGYzZjA5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC02Myw5ICs2MywxMCBAQCBzdGF0 aWMgdm9pZCBwdWJsaWNhdGlvbl90cmFuc2xhdGVfY29sdW1ucyhSZWxhdGlvbiB0YXJnZXRy ZWwsIExpc3QgKmNvbHVtbnMsCiBzdGF0aWMgdm9pZAogY2hlY2tfcHVibGljYXRpb25fYWRk X3JlbGF0aW9uKFJlbGF0aW9uIHRhcmdldHJlbCkKIHsKLQkvKiBNdXN0IGJlIGEgcmVndWxh ciBvciBwYXJ0aXRpb25lZCB0YWJsZSAqLworCS8qIE11c3QgYmUgYSByZWd1bGFyIG9yIHBh cnRpdGlvbmVkIHRhYmxlLCBvciBhIHNlcXVlbmNlICovCiAJaWYgKFJlbGF0aW9uR2V0Rm9y bSh0YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKLQkJUmVsYXRp b25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9U QUJMRSkKKwkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSAmJgorCQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+ cmVsa2luZCAhPSBSRUxLSU5EX1NFUVVFTkNFKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2co ImNhbm5vdCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKQEAgLTE0Miw3 ICsxNDMsOCBAQCBzdGF0aWMgYm9vbAogaXNfcHVibGlzaGFibGVfY2xhc3MoT2lkIHJlbGlk LCBGb3JtX3BnX2NsYXNzIHJlbHR1cGxlKQogewogCXJldHVybiAocmVsdHVwbGUtPnJlbGtp bmQgPT0gUkVMS0lORF9SRUxBVElPTiB8fAotCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSkgJiYKKwkJCXJlbHR1cGxlLT5yZWxraW5kID09IFJF TEtJTkRfUEFSVElUSU9ORURfVEFCTEUgfHwKKwkJCXJlbHR1cGxlLT5yZWxraW5kID09IFJF TEtJTkRfU0VRVUVOQ0UpICYmCiAJCSFJc0NhdGFsb2dSZWxhdGlvbk9pZChyZWxpZCkgJiYK IAkJcmVsdHVwbGUtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVO VCAmJgogCQlyZWxpZCA+PSBGaXJzdE5vcm1hbE9iamVjdElkOwpAQCAtMjMzLDYgKzIzNSw1 MiBAQCBmaWx0ZXJfcGFydGl0aW9ucyhMaXN0ICp0YWJsZV9pbmZvcykKIAl9CiB9CiAKKy8q CisgKiBDaGVjayB0aGUgY2hhcmFjdGVyIGlzIGEgdmFsaWQgb2JqZWN0IHR5cGUgZm9yIHNj aGVtYSBwdWJsaWNhdGlvbi4KKyAqCisgKiBUaGlzIHJlY29nbml6ZXMgZWl0aGVyICd0JyBm b3IgdGFibGVzIG9yICdzJyBmb3Igc2VxdWVuY2VzLiBQbGFjZXMgdGhhdAorICogbmVlZCB0 byBoYW5kbGUgJ3UnIGZvciB1bnN1cHBvcnRlZCByZWxraW5kcyBuZWVkIHRvIGRvIHRoYXQg ZXhwbGljaXRseWwKKyAqLworc3RhdGljIHZvaWQKK0Fzc2VydE9iamVjdFR5cGVWYWxpZChj aGFyIG9iamVjdFR5cGUpCit7CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCUFzc2Vy dChvYmplY3RUeXBlID09IFBVQl9PQkpUWVBFX1NFUVVFTkNFIHx8IG9iamVjdFR5cGUgPT0g UFVCX09CSlRZUEVfVEFCTEUpOworI2VuZGlmCit9CisKKy8qCisgKiBEZXRlcm1pbmUgb2Jq ZWN0IHR5cGUgbWF0Y2hpbmcgYSBnaXZlbiBhIHJlbGtpbmQgdmFsdWUuCisgKi8KK2NoYXIK K3B1Yl9nZXRfb2JqZWN0X3R5cGVfZm9yX3JlbGtpbmQoY2hhciByZWxraW5kKQoreworCS8q IHNlcXVlbmNlIG1hcHMgZGlyZWN0bHkgdG8gc2VxdWVuY2UgcmVsa2luZCAqLworCWlmIChy ZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJCXJldHVybiBQVUJfT0JKVFlQRV9TRVFV RU5DRTsKKworCS8qIGZvciB0YWJsZSwgd2UgbWF0Y2ggZWl0aGVyIHJlZ3VsYXIgb3IgcGFy dGl0aW9uZWQgdGFibGUgKi8KKwlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8 CisJCXJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJcmV0dXJuIFBV Ql9PQkpUWVBFX1RBQkxFOworCisJcmV0dXJuIFBVQl9PQkpUWVBFX1VOU1VQUE9SVEVEOwor fQorCisvKgorICogRGV0ZXJtaW5lIGlmIHB1YmxpY2F0aW9uIG9iamVjdCB0eXBlIG1hdGNo ZXMgdGhlIHJlbGtpbmQuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSByZWxhdGlvbiBt YXRjaGVzIG9iamVjdCB0eXBlIHJlcGxpY2F0ZWQgYnkgdGhpcyBzY2hlbWEsCisgKiBmYWxz ZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitwdWJfb2JqZWN0X3R5cGVfbWF0Y2hl c19yZWxraW5kKGNoYXIgb2JqZWN0VHlwZSwgY2hhciByZWxraW5kKQoreworCUFzc2VydE9i amVjdFR5cGVWYWxpZChvYmplY3RUeXBlKTsKKworCXJldHVybiAocHViX2dldF9vYmplY3Rf dHlwZV9mb3JfcmVsa2luZChyZWxraW5kKSA9PSBvYmplY3RUeXBlKTsKK30KKwogLyoKICAq IFJldHVybnMgdHJ1ZSBpZiBhbnkgc2NoZW1hIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVi bGljYXRpb24sIGZhbHNlIGlmIG5vCiAgKiBzY2hlbWEgaXMgYXNzb2NpYXRlZCB3aXRoIHRo ZSBwdWJsaWNhdGlvbi4KQEAgLTI1Myw3ICszMDEsNyBAQCBpc19zY2hlbWFfcHVibGljYXRp b24oT2lkIHB1YmlkKQogCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKIAogCXNjYW4g PSBzeXN0YWJsZV9iZWdpbnNjYW4ocHVic2Noc3JlbCwKLQkJCQkJCQkgIFB1YmxpY2F0aW9u TmFtZXNwYWNlUG5uc3BpZFBucHViaWRJbmRleElkLAorCQkJCQkJCSAgUHVibGljYXRpb25O YW1lc3BhY2VQbm5zcGlkUG5wdWJpZFBudHlwZUluZGV4SWQsCiAJCQkJCQkJICB0cnVlLCBO VUxMLCAxLCAmc2NhbmtleSk7CiAJdHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKTsKIAly ZXN1bHQgPSBIZWFwVHVwbGVJc1ZhbGlkKHR1cCk7CkBAIC0zMzksNyArMzg3LDkgQEAgR2V0 VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3Rv cnMsIGludCAqYW5jZXN0b3JfbGV2ZWwKIAkJfQogCQllbHNlCiAJCXsKLQkJCWFzY2hlbWFQ dWJpZHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0 b3IpKTsKKwkJCS8qIHdlIG9ubHkgc2VhcmNoIGZvciBhbmNlc3RvcnMgb2YgdGFibGVzLCBz byBQVUJfT0JKVFlQRV9UQUJMRSAqLworCQkJYXNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1 YmxpY2F0aW9ucyhnZXRfcmVsX25hbWVzcGFjZShhbmNlc3RvciksCisJCQkJCQkJCQkJCQkg IFBVQl9PQkpUWVBFX1RBQkxFKTsKIAkJCWlmIChsaXN0X21lbWJlcl9vaWQoYXNjaGVtYVB1 YmlkcywgcHVib2lkKSkKIAkJCXsKIAkJCQl0b3Btb3N0X3JlbGlkID0gYW5jZXN0b3I7CkBA IC02MDgsNyArNjU4LDcgQEAgcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0KEJpdG1hcHNldCAq Y29sdW1ucywgRGF0dW0gcHViY29scywgTWVtb3J5Q29udGV4dCBtY3h0KQogICogSW5zZXJ0 IG5ldyBwdWJsaWNhdGlvbiAvIHNjaGVtYSBtYXBwaW5nLgogICovCiBPYmplY3RBZGRyZXNz Ci1wdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLCBib29s IGlmX25vdF9leGlzdHMpCitwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lk IHNjaGVtYWlkLCBjaGFyIG9iamVjdFR5cGUsIGJvb2wgaWZfbm90X2V4aXN0cykKIHsKIAlS ZWxhdGlvbglyZWw7CiAJSGVhcFR1cGxlCXR1cDsKQEAgLTYyMCw2ICs2NzAsOCBAQCBwdWJs aWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLCBib29sIGlmX25v dF9leGlzdHMpCiAJT2JqZWN0QWRkcmVzcyBteXNlbGYsCiAJCQkJcmVmZXJlbmNlZDsKIAor CUFzc2VydE9iamVjdFR5cGVWYWxpZChvYmplY3RUeXBlKTsKKwogCXJlbCA9IHRhYmxlX29w ZW4oUHVibGljYXRpb25OYW1lc3BhY2VSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsK IAogCS8qCkBAIC02MjcsOSArNjc5LDEwIEBAIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lk IHB1YmlkLCBPaWQgc2NoZW1haWQsIGJvb2wgaWZfbm90X2V4aXN0cykKIAkgKiBkdXBsaWNh dGVzLCBpdCdzIGhlcmUganVzdCB0byBwcm92aWRlIG5pY2VyIGVycm9yIG1lc3NhZ2UgaW4g Y29tbW9uCiAJICogY2FzZS4gVGhlIHJlYWwgcHJvdGVjdGlvbiBpcyB0aGUgdW5pcXVlIGtl eSBvbiB0aGUgY2F0YWxvZy4KIAkgKi8KLQlpZiAoU2VhcmNoU3lzQ2FjaGVFeGlzdHMyKFBV QkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAorCWlmIChTZWFyY2hTeXNDYWNoZUV4aXN0czMoUFVC TElDQVRJT05OQU1FU1BBQ0VNQVAsCiAJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHNjaGVt YWlkKSwKLQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKSkKKwkJCQkJCQkgIE9i amVjdElkR2V0RGF0dW0ocHViaWQpLAorCQkJCQkJCSAgQ2hhckdldERhdHVtKG9iamVjdFR5 cGUpKSkKIAl7CiAJCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKQEAg LTY1NSw2ICs3MDgsOCBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lk IHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJCU9iamVjdElkR2V0RGF0dW0ocHVi aWQpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9wbm5zcGlkIC0g MV0gPQogCQlPYmplY3RJZEdldERhdHVtKHNjaGVtYWlkKTsKKwl2YWx1ZXNbQW51bV9wZ19w dWJsaWNhdGlvbl9uYW1lc3BhY2VfcG50eXBlIC0gMV0gPQorCQlDaGFyR2V0RGF0dW0ob2Jq ZWN0VHlwZSk7CiAKIAl0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihy ZWwpLCB2YWx1ZXMsIG51bGxzKTsKIApAQCAtNjgwLDcgKzczNSw3IEBAIHB1YmxpY2F0aW9u X2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsIGJvb2wgaWZfbm90X2V4aXN0 cykKIAkgKiBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24gZm9yIHdoeSB3ZSBuZWVkIHRvIGNv bnNpZGVyIGFsbCB0aGUKIAkgKiBwYXJ0aXRpb25zLgogCSAqLwotCXNjaGVtYVJlbHMgPSBH ZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhzY2hlbWFpZCwKKwlzY2hlbWFSZWxzID0g R2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoc2NoZW1haWQsIG9iamVjdFR5cGUsCiAJ CQkJCQkJCQkJCSAgIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIAlJbnZhbGlkYXRlUHVibGlj YXRpb25SZWxzKHNjaGVtYVJlbHMpOwogCkBAIC03MTQsMTEgKzc2OSwxNCBAQCBHZXRSZWxh dGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCiAvKgogICogR2V0cyBsaXN0IG9mIHJlbGF0 aW9uIG9pZHMgZm9yIGEgcHVibGljYXRpb24uCiAgKgotICogVGhpcyBzaG91bGQgb25seSBi ZSB1c2VkIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMsIHRoZSBGT1IgQUxMIFRBQkxFUwotICog c2hvdWxkIHVzZSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucygpLgorICogVGhp cyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBUQUJMRSAvIEZPUiBTRVFVRU5DRSBwdWJsaWNh dGlvbnMsIHRoZSBGT1IKKyAqIEFMTCBUQUJMRVMgLyBTRVFVRU5DRVMgc2hvdWxkIHVzZSBH ZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucygpCisgKiBhbmQgR2V0QWxsU2VxdWVu Y2VzUHVibGljYXRpb25SZWxhdGlvbnMoKS4KKyAqCisgKiBYWFggcHViX3BhcnRvcHQgb25s eSBtYXR0ZXJzIGZvciB0YWJsZXMsIG5vdCBzZXF1ZW5jZXMuCiAgKi8KIExpc3QgKgotR2V0 UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHVi X3BhcnRvcHQpCitHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgb2Jq ZWN0VHlwZSwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogewogCUxpc3QJICAg KnJlc3VsdDsKIAlSZWxhdGlvbglwdWJyZWxzcmVsOwpAQCAtNzI2LDYgKzc4NCw4IEBAIEdl dFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0KQogCVN5c1NjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIAorCUFz c2VydE9iamVjdFR5cGVWYWxpZChvYmplY3RUeXBlKTsKKwogCS8qIEZpbmQgYWxsIHB1Ymxp Y2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbGF0aW9uLiAqLwogCXB1YnJlbHNyZWwg PSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2Nr KTsKIApAQCAtNzQwLDExICs4MDAsMjkgQEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lk IHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJcmVzdWx0ID0gTklM OwogCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2Nh bikpKQogCXsKKwkJY2hhcgkJcmVsa2luZDsKIAkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwg cHVicmVsOwogCiAJCXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RS VUNUKHR1cCk7Ci0JCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhy ZXN1bHQsIHB1Yl9wYXJ0b3B0LAotCQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKKwkJ cmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChwdWJyZWwtPnBycmVsaWQpOworCisJCS8qCisJ CSAqIElmIHRoZSByZWxraW5kIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1ZXN0ZWQgb2JqZWN0 IHR5cGUsIGlnbm9yZSB0aGUKKwkJICogcmVsYXRpb24uIEZvciBleGFtcGxlIHdlIG1pZ2h0 IGJlIGludGVyZXN0ZWQgb25seSBpbiBzZXF1ZW5jZXMsIHNvCisJCSAqIHdlIGlnbm9yZSB0 YWJsZXMuCisJCSAqLworCQlpZiAoIXB1Yl9vYmplY3RfdHlwZV9tYXRjaGVzX3JlbGtpbmQo b2JqZWN0VHlwZSwgcmVsa2luZCkpCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBXZSBk b24ndCBoYXZlIHBhcnRpdGlvbmVkIHNlcXVlbmNlcywgc28ganVzdCBhZGQgdGhlbSB0byB0 aGUgbGlzdC4KKwkJICogT3RoZXJ3aXNlIGNvbnNpZGVyIGFkZGluZyBhbGwgY2hpbGQgcmVs YXRpb25zLCBpZiByZXF1ZXN0ZWQuCisJCSAqLworCQlpZiAocmVsa2luZCA9PSBSRUxLSU5E X1NFUVVFTkNFKQorCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJyZWwtPnBy cmVsaWQpOworCQllbHNlCisJCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxh dGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVs aWQpOwogCX0KIAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC03OTQsNiArODcyLDQz IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogCXJldHVybiByZXN1bHQ7CiB9 CiAKKy8qCisgKiBHZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBmb3IgcHVibGljYXRp b25zIG1hcmtlZCBhcyBGT1IgQUxMIFNFUVVFTkNFUy4KKyAqLworTGlzdCAqCitHZXRBbGxT ZXF1ZW5jZXNQdWJsaWNhdGlvbnModm9pZCkKK3sKKwlMaXN0CSAgICpyZXN1bHQ7CisJUmVs YXRpb24JcmVsOworCVNjYW5LZXlEYXRhIHNjYW5rZXk7CisJU3lzU2NhbkRlc2Mgc2NhbjsK KwlIZWFwVHVwbGUJdHVwOworCisJLyogRmluZCBhbGwgcHVibGljYXRpb25zIHRoYXQgYXJl IG1hcmtlZCBhcyBmb3IgYWxsIHNlcXVlbmNlcy4gKi8KKwlyZWwgPSB0YWJsZV9vcGVuKFB1 YmxpY2F0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0 KCZzY2Fua2V5LAorCQkJCUFudW1fcGdfcHVibGljYXRpb25fcHViYWxsc2VxdWVuY2VzLAor CQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9CT09MRVEsCisJCQkJQm9vbEdldERhdHVt KHRydWUpKTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBJbnZhbGlkT2lk LCBmYWxzZSwKKwkJCQkJCQkgIE5VTEwsIDEsICZzY2Fua2V5KTsKKworCXJlc3VsdCA9IE5J TDsKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNj YW4pKSkKKwl7CisJCU9pZAkJCW9pZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RS VUNUKHR1cCkpLT5vaWQ7CisKKwkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBvaWQp OworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocmVsLCBB Y2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIEdldHMg bGlzdCBvZiBhbGwgcmVsYXRpb24gcHVibGlzaGVkIGJ5IEZPUiBBTEwgVEFCTEVTIHB1Ymxp Y2F0aW9uKHMpLgogICoKQEAgLTg2MCwyOCArOTc1LDM4IEBAIEdldEFsbFRhYmxlc1B1Ymxp Y2F0aW9uUmVsYXRpb25zKGJvb2wgcHVidmlhcm9vdCkKIC8qCiAgKiBHZXRzIHRoZSBsaXN0 IG9mIHNjaGVtYSBvaWRzIGZvciBhIHB1YmxpY2F0aW9uLgogICoKLSAqIFRoaXMgc2hvdWxk IG9ubHkgYmUgdXNlZCBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbnMuCisgKiBU aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgYW5kIEZPUiBT RVFVRU5DRVMgSU4gU0NIRU1BCisgKiBwdWJsaWNhdGlvbnMuCisgKgorICogJ29iamVjdFR5 cGUnIGRldGVybWluZXMgd2hldGhlciB0byBnZXQgRk9SIFRBQkxFIG9yIEZPUiBTRVFVRU5D RVMgc2NoZW1hcwogICovCiBMaXN0ICoKLUdldFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHVi aWQpCitHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkLCBjaGFyIG9iamVjdFR5cGUp CiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCVJlbGF0aW9uCXB1YnNjaHNyZWw7Ci0J U2NhbktleURhdGEgc2NhbmtleTsKKwlTY2FuS2V5RGF0YSBzY2Fua2V5WzJdOwogCVN5c1Nj YW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIAorCUFzc2VydE9iamVjdFR5cGVWYWxp ZChvYmplY3RUeXBlKTsKKwogCS8qIEZpbmQgYWxsIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRo IHRoZSBwdWJsaWNhdGlvbiAqLwogCXB1YnNjaHNyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0 aW9uTmFtZXNwYWNlUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAotCVNjYW5LZXlJ bml0KCZzY2Fua2V5LAorCVNjYW5LZXlJbml0KCZzY2Fua2V5WzBdLAogCQkJCUFudW1fcGdf cHVibGljYXRpb25fbmFtZXNwYWNlX3BucHViaWQsCiAJCQkJQlRFcXVhbFN0cmF0ZWd5TnVt YmVyLCBGX09JREVRLAogCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKIAorCVNjYW5L ZXlJbml0KCZzY2Fua2V5WzFdLAorCQkJCUFudW1fcGdfcHVibGljYXRpb25fbmFtZXNwYWNl X3BudHlwZSwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfQ0hBUkVRLAorCQkJCUNo YXJHZXREYXR1bShvYmplY3RUeXBlKSk7CisKIAlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2Fu KHB1YnNjaHNyZWwsCi0JCQkJCQkJICBQdWJsaWNhdGlvbk5hbWVzcGFjZVBubnNwaWRQbnB1 YmlkSW5kZXhJZCwKLQkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZzY2Fua2V5KTsKKwkJCQkJ CQkgIFB1YmxpY2F0aW9uTmFtZXNwYWNlUG5uc3BpZFBucHViaWRQbnR5cGVJbmRleElkLAor CQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMiwgc2NhbmtleSk7CiAJd2hpbGUgKEhlYXBUdXBsZUlz VmFsaWQodHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCiAJewogCQlGb3JtX3BnX3B1 YmxpY2F0aW9uX25hbWVzcGFjZSBwdWJzY2g7CkBAIC04OTksMTQgKzEwMjQsMjYgQEAgR2V0 UHVibGljYXRpb25TY2hlbWFzKE9pZCBwdWJpZCkKIAogLyoKICAqIEdldHMgdGhlIGxpc3Qg b2YgcHVibGljYXRpb24gb2lkcyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpZWQgc2NoZW1h LgorICoKKyAqIG9iamVjdFR5cGUgc3BlY2lmaWVzIHdoZXRoZXIgd2UncmUgbG9va2luZyBm b3Igc2NoZW1hcyBpbmNsdWRpbmcgdGFibGVzIG9yCisgKiBzZXF1ZW5jZXMuCisgKgorICog Tm90ZTogcmVsY2FjaGUgY2FsbHMgdGhpcyBmb3IgYWxsIG9iamVjdCB0eXBlcywgbm90IGp1 c3QgdGFibGVzIGFuZCBzZXF1ZW5jZXMuCisgKiBXaGljaCBpcyB3aHkgd2UgaGFuZGxlIHRo ZSBQVUJfT0JKVFlQRV9VTlNVUFBPUlRFRCBvYmplY3QgdHlwZSB0b28uCiAgKi8KIExpc3Qg KgotR2V0U2NoZW1hUHVibGljYXRpb25zKE9pZCBzY2hlbWFpZCkKK0dldFNjaGVtYVB1Ymxp Y2F0aW9ucyhPaWQgc2NoZW1haWQsIGNoYXIgb2JqZWN0VHlwZSkKIHsKIAlMaXN0CSAgICpy ZXN1bHQgPSBOSUw7CiAJQ2F0Q0xpc3QgICAqcHVic2NobGlzdDsKIAlpbnQJCQlpOwogCisJ LyogdW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGUgKi8KKwlpZiAob2JqZWN0VHlwZSA9PSBQVUJf T0JKVFlQRV9VTlNVUFBPUlRFRCkKKwkJcmV0dXJuIHJlc3VsdDsKKworCUFzc2VydE9iamVj dFR5cGVWYWxpZChvYmplY3RUeXBlKTsKKwogCS8qIEZpbmQgYWxsIHB1YmxpY2F0aW9ucyBh c3NvY2lhdGVkIHdpdGggdGhlIHNjaGVtYSAqLwogCXB1YnNjaGxpc3QgPSBTZWFyY2hTeXND YWNoZUxpc3QxKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJCQkJIE9iamVjdElk R2V0RGF0dW0oc2NoZW1haWQpKTsKQEAgLTkxNCw2ICsxMDUxLDExIEBAIEdldFNjaGVtYVB1 YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpCiAJewogCQlIZWFwVHVwbGUJdHVwID0gJnB1YnNj aGxpc3QtPm1lbWJlcnNbaV0tPnR1cGxlOwogCQlPaWQJCQlwdWJpZCA9ICgoRm9ybV9wZ19w dWJsaWNhdGlvbl9uYW1lc3BhY2UpIEdFVFNUUlVDVCh0dXApKS0+cG5wdWJpZDsKKwkJY2hh cgkJcG50eXBlID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSkgR0VUU1RSVUNU KHR1cCkpLT5wbnR5cGU7CisKKwkJLyogU2tpcCBzY2hlbWFzIHB1Ymxpc2hpbmcgYSBkaWZm ZXJlbnQgb2JqZWN0IHR5cGUuICovCisJCWlmIChwbnR5cGUgIT0gb2JqZWN0VHlwZSkKKwkJ CWNvbnRpbnVlOwogCiAJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHViaWQpOwog CX0KQEAgLTkyNSw5ICsxMDY3LDEzIEBAIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2No ZW1haWQpCiAKIC8qCiAgKiBHZXQgdGhlIGxpc3Qgb2YgcHVibGlzaGFibGUgcmVsYXRpb24g b2lkcyBmb3IgYSBzcGVjaWZpZWQgc2NoZW1hLgorICoKKyAqIG9iamVjdFR5cGUgc3BlY2lm aWVzIHdoZXRoZXIgdGhpcyBpcyBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgb3IgRk9SIEFM TAorICogU0VRVUVOQ0VTIElOIFNDSEVNQQogICovCiBMaXN0ICoKLUdldFNjaGVtYVB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9w YXJ0b3B0KQorR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNjaGVtYWlkLCBj aGFyIG9iamVjdFR5cGUsCisJCQkJCQkJICBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRv cHQpCiB7CiAJUmVsYXRpb24JY2xhc3NSZWw7CiAJU2NhbktleURhdGEga2V5WzFdOwpAQCAt OTM2LDYgKzEwODIsNyBAQCBHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2No ZW1haWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAlMaXN0CSAgICpyZXN1 bHQgPSBOSUw7CiAKIAlBc3NlcnQoT2lkSXNWYWxpZChzY2hlbWFpZCkpOworCUFzc2VydE9i amVjdFR5cGVWYWxpZChvYmplY3RUeXBlKTsKIAogCWNsYXNzUmVsID0gdGFibGVfb3BlbihS ZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKQEAgLTk1Niw5ICsxMTAz LDE3IEBAIEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgUHVi bGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCQkJY29udGludWU7CiAKIAkJcmVsa2lu ZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7Ci0JCWlmIChyZWxraW5kID09IFJFTEtJTkRf UkVMQVRJT04pCi0JCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKLQkJ ZWxzZSBpZiAocmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCisJCS8q IFNraXAgaWYgdGhlIHJlbGtpbmQgZG9lcyBub3QgbWF0Y2ggRk9SIEFMTCBUQUJMRVMgLyBT RVFVRU5DRVMuICovCisJCWlmICghcHViX29iamVjdF90eXBlX21hdGNoZXNfcmVsa2luZChv YmplY3RUeXBlLCByZWxraW5kKSkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIElmIHRo ZSBvYmplY3QgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZSwgbG9va3VwIGFsbCB0aGUgY2hpbGQK KwkJICogcmVsYXRpb25zIChpZiByZXF1ZXN0ZWQpLiBPdGhlcndpc2UganVzdCBhZGQgdGhl IG9iamVjdCB0byB0aGUKKwkJICogbGlzdC4KKwkJICovCisJCWlmIChyZWxraW5kID09IFJF TEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCiAJCXsKIAkJCUxpc3QJICAgKnBhcnRpdGlvbnJl bHMgPSBOSUw7CiAKQEAgLTk3MSw3ICsxMTI2LDExIEBAIEdldFNjaGVtYVB1YmxpY2F0aW9u UmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KQogCQkJCQkJCQkJCQkJCQkgICBwdWJfcGFydG9wdCwKIAkJCQkJCQkJCQkJCQkJICAgcmVs Rm9ybS0+b2lkKTsKIAkJCXJlc3VsdCA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocmVzdWx0 LCBwYXJ0aXRpb25yZWxzKTsKKwkJCWNvbnRpbnVlOwogCQl9CisKKwkJLyogbm9uLXBhcnRp dGlvbmVkIHRhYmxlcyBhbmQgc2VxdWVuY2VzICovCisJCXJlc3VsdCA9IGxhcHBlbmRfb2lk KHJlc3VsdCwgcmVsaWQpOwogCX0KIAogCXRhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC05ODAs MjggKzExMzksNjggQEAgR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNjaGVt YWlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiB9CiAKIC8qCi0gKiBHZXRz IHRoZSBsaXN0IG9mIGFsbCByZWxhdGlvbnMgcHVibGlzaGVkIGJ5IEZPUiBUQUJMRVMgSU4g U0NIRU1BCi0gKiBwdWJsaWNhdGlvbi4KKyAqIEdldHMgdGhlIGxpc3Qgb2YgYWxsIHJlbGF0 aW9ucyBwdWJsaXNoZWQgYnkgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgb3IKKyAqIEZPUiBTRVFV RU5DRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uLgogICovCiBMaXN0ICoKLUdldEFsbFNjaGVt YVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0KQorR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LCBjaGFyIG9iamVjdFR5cGUsCisJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3Bh cnRvcHQpCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwotCUxpc3QJICAgKnB1YnNjaGVt YWxpc3QgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQpOworCUxpc3QJICAgKnB1YnNj aGVtYWxpc3QgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQsIG9iamVjdFR5cGUpOwog CUxpc3RDZWxsICAgKmNlbGw7CiAKKwlBc3NlcnRPYmplY3RUeXBlVmFsaWQob2JqZWN0VHlw ZSk7CisKIAlmb3JlYWNoKGNlbGwsIHB1YnNjaGVtYWxpc3QpCiAJewogCQlPaWQJCQlzY2hl bWFpZCA9IGxmaXJzdF9vaWQoY2VsbCk7CiAJCUxpc3QJICAgKnNjaGVtYVJlbHMgPSBOSUw7 CiAKLQkJc2NoZW1hUmVscyA9IEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHNjaGVt YWlkLCBwdWJfcGFydG9wdCk7CisJCXNjaGVtYVJlbHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlv blJlbGF0aW9ucyhzY2hlbWFpZCwgb2JqZWN0VHlwZSwKKwkJCQkJCQkJCQkJCSAgIHB1Yl9w YXJ0b3B0KTsKIAkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBzY2hlbWFSZWxzKTsK IAl9CiAKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogR2V0cyBsaXN0IG9mIGFsbCBy ZWxhdGlvbiBwdWJsaXNoZWQgYnkgRk9SIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb24ocyku CisgKi8KK0xpc3QgKgorR2V0QWxsU2VxdWVuY2VzUHVibGljYXRpb25SZWxhdGlvbnModm9p ZCkKK3sKKwlSZWxhdGlvbgljbGFzc1JlbDsKKwlTY2FuS2V5RGF0YSBrZXlbMV07CisJVGFi bGVTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXBsZTsKKwlMaXN0CSAgICpyZXN1bHQg PSBOSUw7CisKKwljbGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBB Y2Nlc3NTaGFyZUxvY2spOworCisJU2NhbktleUluaXQoJmtleVswXSwKKwkJCQlBbnVtX3Bn X2NsYXNzX3JlbGtpbmQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0NIQVJFUSwK KwkJCQlDaGFyR2V0RGF0dW0oUkVMS0lORF9TRVFVRU5DRSkpOworCisJc2NhbiA9IHRhYmxl X2JlZ2luc2Nhbl9jYXRhbG9nKGNsYXNzUmVsLCAxLCBrZXkpOworCisJd2hpbGUgKCh0dXBs ZSA9IGhlYXBfZ2V0bmV4dChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbikpICE9IE5VTEwp CisJeworCQlGb3JtX3BnX2NsYXNzIHJlbEZvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RS VUNUKHR1cGxlKTsKKwkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CisKKwkJaWYgKGlz X3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSkKKwkJCXJlc3VsdCA9IGxhcHBl bmRfb2lkKHJlc3VsdCwgcmVsaWQpOworCX0KKworCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisK Kwl0YWJsZV9jbG9zZShjbGFzc1JlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlyZXR1cm4gcmVz dWx0OworfQorCiAvKgogICogR2V0IHB1YmxpY2F0aW9uIHVzaW5nIG9pZAogICoKQEAgLTEw MjQsMTAgKzEyMjMsMTIgQEAgR2V0UHVibGljYXRpb24oT2lkIHB1YmlkKQogCXB1Yi0+b2lk ID0gcHViaWQ7CiAJcHViLT5uYW1lID0gcHN0cmR1cChOYW1lU3RyKHB1YmZvcm0tPnB1Ym5h bWUpKTsKIAlwdWItPmFsbHRhYmxlcyA9IHB1YmZvcm0tPnB1YmFsbHRhYmxlczsKKwlwdWIt PmFsbHNlcXVlbmNlcyA9IHB1YmZvcm0tPnB1YmFsbHNlcXVlbmNlczsKIAlwdWItPnB1YmFj dGlvbnMucHViaW5zZXJ0ID0gcHViZm9ybS0+cHViaW5zZXJ0OwogCXB1Yi0+cHViYWN0aW9u cy5wdWJ1cGRhdGUgPSBwdWJmb3JtLT5wdWJ1cGRhdGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1 YmRlbGV0ZSA9IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAlwdWItPnB1YmFjdGlvbnMucHVidHJ1 bmNhdGUgPSBwdWJmb3JtLT5wdWJ0cnVuY2F0ZTsKKwlwdWItPnB1YmFjdGlvbnMucHVic2Vx dWVuY2UgPSBwdWJmb3JtLT5wdWJzZXF1ZW5jZTsKIAlwdWItPnB1YnZpYXJvb3QgPSBwdWJm b3JtLT5wdWJ2aWFyb290OwogCiAJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CkBAIC0xMTA4LDEw ICsxMzA5LDEyIEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJH UykKIAkJCQkJCSAgICpzY2hlbWFyZWxpZHM7CiAKIAkJCQlyZWxpZHMgPSBHZXRQdWJsaWNh dGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAorCQkJCQkJCQkJCQkJIFBVQl9PQkpUWVBF X1RBQkxFLAogCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KIAkJCQkJCQkJ CQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgogCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9O X1BBUlRfTEVBRik7CiAJCQkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRp b25SZWxhdGlvbnMocHViX2VsZW0tPm9pZCwKKwkJCQkJCQkJCQkJCQkJCQlQVUJfT0JKVFlQ RV9UQUJMRSwKIAkJCQkJCQkJCQkJCQkJCQlwdWJfZWxlbS0+cHVidmlhcm9vdCA/CiAJCQkJ CQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UIDoKIAkJCQkJCQkJCQkJCQkJCQlQ VUJMSUNBVElPTl9QQVJUX0xFQUYpOwpAQCAtMTE5Nyw5ICsxNDAwLDEwIEBAIHBnX2dldF9w dWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJICogRk9SIFRBQkxFUyBJ TiBTQ0hFTUEgcHVibGljYXRpb25zLgogCQkgKi8KIAkJaWYgKCFwdWItPmFsbHRhYmxlcyAm JgotCQkJIVNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElPTk5BTUVTUEFDRU1BUCwK KwkJCSFTZWFyY2hTeXNDYWNoZUV4aXN0czMoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCiAJ CQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oc2NoZW1haWQpLAotCQkJCQkJCQkgICBPYmpl Y3RJZEdldERhdHVtKHB1Yi0+b2lkKSkpCisJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0o cHViLT5vaWQpLAorCQkJCQkJCQkgICBQVUJfT0JKVFlQRV9UQUJMRSkpCiAJCQlwdWJ0dXBs ZSA9IFNlYXJjaFN5c0NhY2hlQ29weTIoUFVCTElDQVRJT05SRUxNQVAsCiAJCQkJCQkJCQkJ ICAgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCiAJCQkJCQkJCQkJICAgT2JqZWN0SWRHZXRE YXR1bShwdWItPm9pZCkpOwpAQCAtMTI1OSwzICsxNDYzLDcxIEBAIHBnX2dldF9wdWJsaWNh dGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAogCVNSRl9SRVRVUk5fRE9ORShmdW5j Y3R4KTsKIH0KKworLyoKKyAqIFJldHVybnMgT2lkcyBvZiBzZXF1ZW5jZXMgaW4gYSBwdWJs aWNhdGlvbi4KKyAqLworRGF0dW0KK3BnX2dldF9wdWJsaWNhdGlvbl9zZXF1ZW5jZXMoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CisJY2hhcgkg ICAqcHVibmFtZSA9IHRleHRfdG9fY3N0cmluZyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisJ UHVibGljYXRpb24gKnB1YmxpY2F0aW9uOworCUxpc3QJICAgKnNlcXVlbmNlczsKKworCS8q IHN0dWZmIGRvbmUgb25seSBvbiB0aGUgZmlyc3QgY2FsbCBvZiB0aGUgZnVuY3Rpb24gKi8K KwlpZiAoU1JGX0lTX0ZJUlNUQ0FMTCgpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjb250 ZXh0OworCisJCS8qIGNyZWF0ZSBhIGZ1bmN0aW9uIGNvbnRleHQgZm9yIGNyb3NzLWNhbGwg cGVyc2lzdGVuY2UgKi8KKwkJZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOworCisJ CS8qIHN3aXRjaCB0byBtZW1vcnkgY29udGV4dCBhcHByb3ByaWF0ZSBmb3IgbXVsdGlwbGUg ZnVuY3Rpb24gY2FsbHMgKi8KKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhmdW5jY3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOworCisJCXB1YmxpY2F0aW9uID0g R2V0UHVibGljYXRpb25CeU5hbWUocHVibmFtZSwgZmFsc2UpOworCisJCS8qCisJCSAqIFB1 YmxpY2F0aW9ucyBzdXBwb3J0IHBhcnRpdGlvbmVkIHRhYmxlcywgYWx0aG91Z2ggYWxsIGNo YW5nZXMgYXJlCisJCSAqIHJlcGxpY2F0ZWQgdXNpbmcgbGVhZiBwYXJ0aXRpb24gaWRlbnRp dHkgYW5kIHNjaGVtYSwgc28gd2Ugb25seQorCQkgKiBuZWVkIHRob3NlLgorCQkgKi8KKwkJ aWYgKHB1YmxpY2F0aW9uLT5hbGxzZXF1ZW5jZXMpCisJCQlzZXF1ZW5jZXMgPSBHZXRBbGxT ZXF1ZW5jZXNQdWJsaWNhdGlvblJlbGF0aW9ucygpOworCQllbHNlCisJCXsKKwkJCUxpc3QJ ICAgKnJlbGlkcywKKwkJCQkJICAgKnNjaGVtYXJlbGlkczsKKworCQkJcmVsaWRzID0gR2V0 UHVibGljYXRpb25SZWxhdGlvbnMocHVibGljYXRpb24tPm9pZCwKKwkJCQkJCQkJCQkJIFBV Ql9PQkpUWVBFX1NFUVVFTkNFLAorCQkJCQkJCQkJCQkgcHVibGljYXRpb24tPnB1YnZpYXJv b3QgPworCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKKwkJCQkJCQkJCQkJ IFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hl bWFQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJsaWNhdGlvbi0+b2lkLAorCQkJCQkJCQkJCQkJ CQkJUFVCX09CSlRZUEVfU0VRVUVOQ0UsCisJCQkJCQkJCQkJCQkJCQlwdWJsaWNhdGlvbi0+ cHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgor CQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwkJCXNlcXVlbmNlcyA9 IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocmVsaWRzLCBzY2hlbWFyZWxpZHMpOworCQl9CisK KwkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gKHZvaWQgKikgc2VxdWVuY2VzOworCisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisKKwkvKiBzdHVmZiBkb25lIG9u IGV2ZXJ5IGNhbGwgb2YgdGhlIGZ1bmN0aW9uICovCisJZnVuY2N0eCA9IFNSRl9QRVJDQUxM X1NFVFVQKCk7CisJc2VxdWVuY2VzID0gKExpc3QgKikgZnVuY2N0eC0+dXNlcl9mY3R4Owor CisJaWYgKGZ1bmNjdHgtPmNhbGxfY250ciA8IGxpc3RfbGVuZ3RoKHNlcXVlbmNlcykpCisJ eworCQlPaWQJCQlyZWxpZCA9IGxpc3RfbnRoX29pZChzZXF1ZW5jZXMsIGZ1bmNjdHgtPmNh bGxfY250cik7CisKKwkJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIE9iamVjdElkR2V0RGF0 dW0ocmVsaWQpKTsKKwl9CisKKwlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZTQzZTM2ZjVhYzYuLmRmY2Zl NDk0ZDRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC00MDEs NiArNDAxLDE2IEBAIENSRUFURSBWSUVXIHBnX3B1YmxpY2F0aW9uX3RhYmxlcyBBUwogICAg ICAgICAgcGdfY2xhc3MgQyBKT0lOIHBnX25hbWVzcGFjZSBOIE9OIChOLm9pZCA9IEMucmVs bmFtZXNwYWNlKQogICAgIFdIRVJFIEMub2lkID0gR1BULnJlbGlkOwogCitDUkVBVEUgVklF VyBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXMgQVMKKyAgICBTRUxFQ1QKKyAgICAgICAgUC5w dWJuYW1lIEFTIHB1Ym5hbWUsCisgICAgICAgIE4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAor ICAgICAgICBDLnJlbG5hbWUgQVMgc2VxdWVuY2VuYW1lCisgICAgRlJPTSBwZ19wdWJsaWNh dGlvbiBQLAorICAgICAgICAgTEFURVJBTCBwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2Vz KFAucHVibmFtZSkgR1BTLAorICAgICAgICAgcGdfY2xhc3MgQyBKT0lOIHBnX25hbWVzcGFj ZSBOIE9OIChOLm9pZCA9IEMucmVsbmFtZXNwYWNlKQorICAgIFdIRVJFIEMub2lkID0gR1BT LnJlbGlkOworCiBDUkVBVEUgVklFVyBwZ19sb2NrcyBBUwogICAgIFNFTEVDVCAqIEZST00g cGdfbG9ja19zdGF0dXMoKSBBUyBMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0 aW9uY21kcy5jCmluZGV4IDg4ZGI4MjU4ZDcxLi4zZGQyYzVhNWQ3NSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2lu Y2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMu aCIKKyNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFi bGUuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0 YWxvZy5oIgpAQCAtNjgsMTUgKzY5LDE3IEBAIHR5cGVkZWYgc3RydWN0IHJmX2NvbnRleHQK IAlPaWQJCQlwYXJlbnRpZDsJCS8qIHJlbGlkIG9mIHRoZSBwYXJlbnQgcmVsYXRpb24gKi8K IH0gcmZfY29udGV4dDsKIAotc3RhdGljIExpc3QgKk9wZW5UYWJsZUxpc3QoTGlzdCAqdGFi bGVzKTsKLXN0YXRpYyB2b2lkIENsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMpOworc3RhdGlj IExpc3QgKk9wZW5SZWxhdGlvbkxpc3QoTGlzdCAqcmVscywgY2hhciBvYmplY3RUeXBlKTsK K3N0YXRpYyB2b2lkIENsb3NlUmVsYXRpb25MaXN0KExpc3QgKnJlbHMpOwogc3RhdGljIHZv aWQgTG9ja1NjaGVtYUxpc3QoTGlzdCAqc2NoZW1hbGlzdCk7Ci1zdGF0aWMgdm9pZCBQdWJs aWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4 aXN0cywKLQkJCQkJCQkJIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKLXN0YXRpYyB2 b2lkIFB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wg bWlzc2luZ19vayk7Ci1zdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1 YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIGlmX25vdF9leGlzdHMsCi0JCQkJCQkJCSAgQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwotc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9w U2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vayk7Citz dGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3QgKnJl bHMsIGJvb2wgaWZfbm90X2V4aXN0cywKKwkJCQkJCQkJCUFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10KTsKK3N0YXRpYyB2b2lkIFB1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhPaWQgcHVi aWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vayk7CitzdGF0aWMgdm9pZCBQdWJsaWNh dGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBjaGFyIG9iamVjdFR5 cGUsCisJCQkJCQkJCSAgYm9vbCBpZl9ub3RfZXhpc3RzLCBBbHRlclB1YmxpY2F0aW9uU3Rt dCAqc3RtdCk7CitzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJp ZCwgTGlzdCAqc2NoZW1hcywgY2hhciBvYmplY3RUeXBlLAorCQkJCQkJCQkgICBib29sIG1p c3Npbmdfb2spOworCiAKIAogc3RhdGljIHZvaWQKQEAgLTk3LDYgKzEwMCw3IEBAIHBhcnNl X3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCXB1YmFjdGlvbnMt PnB1YnVwZGF0ZSA9IHRydWU7CiAJcHViYWN0aW9ucy0+cHViZGVsZXRlID0gdHJ1ZTsKIAlw dWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IHRydWU7CisJcHViYWN0aW9ucy0+cHVic2VxdWVu Y2UgPSB0cnVlOwogCSpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlOwogCiAJ LyogUGFyc2Ugb3B0aW9ucyAqLwpAQCAtMTIxLDYgKzEyNSw3IEBAIHBhcnNlX3B1YmxpY2F0 aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJcHViYWN0aW9ucy0+cHVidXBk YXRlID0gZmFsc2U7CiAJCQlwdWJhY3Rpb25zLT5wdWJkZWxldGUgPSBmYWxzZTsKIAkJCXB1 YmFjdGlvbnMtPnB1YnRydW5jYXRlID0gZmFsc2U7CisJCQlwdWJhY3Rpb25zLT5wdWJzZXF1 ZW5jZSA9IGZhbHNlOwogCiAJCQkqcHVibGlzaF9naXZlbiA9IHRydWU7CiAJCQlwdWJsaXNo ID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsKQEAgLTE0NCw2ICsxNDksOCBAQCBwYXJzZV9wdWJs aWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJcHViYWN0aW9ucy0+ cHViZGVsZXRlID0gdHJ1ZTsKIAkJCQllbHNlIGlmIChzdHJjbXAocHVibGlzaF9vcHQsICJ0 cnVuY2F0ZSIpID09IDApCiAJCQkJCXB1YmFjdGlvbnMtPnB1YnRydW5jYXRlID0gdHJ1ZTsK KwkJCQllbHNlIGlmIChzdHJjbXAocHVibGlzaF9vcHQsICJzZXF1ZW5jZSIpID09IDApCisJ CQkJCXB1YmFjdGlvbnMtPnB1YnNlcXVlbmNlID0gdHJ1ZTsKIAkJCQllbHNlCiAJCQkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApA QCAtMTcxLDcgKzE3OCw4IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogICovCiBzdGF0aWMgdm9pZAogT2JqZWN0c0luUHVibGljYXRpb25Ub09p ZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkg ICBMaXN0ICoqcmVscywgTGlzdCAqKnNjaGVtYXMpCisJCQkJCQkgICBMaXN0ICoqdGFibGVz LCBMaXN0ICoqc2VxdWVuY2VzLAorCQkJCQkJICAgTGlzdCAqKnRhYmxlc19zY2hlbWFzLCBM aXN0ICoqc2VxdWVuY2VzX3NjaGVtYXMpCiB7CiAJTGlzdENlbGwgICAqY2VsbDsKIAlQdWJs aWNhdGlvbk9ialNwZWMgKnB1Ym9iajsKQEAgLTE4OSwxMyArMTk3LDIyIEBAIE9iamVjdHNJ blB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQlzd2l0Y2ggKHB1Ym9iai0+cHVib2JqdHlwZSkKIAkJewogCQkJY2FzZSBQ VUJMSUNBVElPTk9CSl9UQUJMRToKLQkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9i ai0+cHVidGFibGUpOworCQkJCSp0YWJsZXMgPSBsYXBwZW5kKCp0YWJsZXMsIHB1Ym9iai0+ cHVidGFibGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9TRVFVRU5D RToKKwkJCQkqc2VxdWVuY2VzID0gbGFwcGVuZCgqc2VxdWVuY2VzLCBwdWJvYmotPnB1YnRh YmxlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1ND SEVNQToKIAkJCQlzY2hlbWFpZCA9IGdldF9uYW1lc3BhY2Vfb2lkKHB1Ym9iai0+bmFtZSwg ZmFsc2UpOwogCiAJCQkJLyogRmlsdGVyIG91dCBkdXBsaWNhdGVzIGlmIHVzZXIgc3BlY2lm aWVzICJzY2gxLCBzY2gxIiAqLwotCQkJCSpzY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVl X29pZCgqc2NoZW1hcywgc2NoZW1haWQpOworCQkJCSp0YWJsZXNfc2NoZW1hcyA9IGxpc3Rf YXBwZW5kX3VuaXF1ZV9vaWQoKnRhYmxlc19zY2hlbWFzLCBzY2hlbWFpZCk7CisJCQkJYnJl YWs7CisJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFU19JTl9TQ0hFTUE6CisJCQkJ c2NoZW1haWQgPSBnZXRfbmFtZXNwYWNlX29pZChwdWJvYmotPm5hbWUsIGZhbHNlKTsKKwor CQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRlcyBpZiB1c2VyIHNwZWNpZmllcyAic2NoMSwg c2NoMSIgKi8KKwkJCQkqc2VxdWVuY2VzX3NjaGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVf b2lkKCpzZXF1ZW5jZXNfc2NoZW1hcywgc2NoZW1haWQpOwogCQkJCWJyZWFrOwogCQkJY2Fz ZSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQToKIAkJCQlzZWFyY2hfcGF0 aCA9IGZldGNoX3NlYXJjaF9wYXRoKGZhbHNlKTsKQEAgLTIwOCw3ICsyMjUsMjAgQEAgT2Jq ZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJbGlzdF9mcmVlKHNlYXJjaF9wYXRoKTsKIAogCQkJCS8qIEZp bHRlciBvdXQgZHVwbGljYXRlcyBpZiB1c2VyIHNwZWNpZmllcyAic2NoMSwgc2NoMSIgKi8K LQkJCQkqc2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVt YWlkKTsKKwkJCQkqdGFibGVzX3NjaGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCp0 YWJsZXNfc2NoZW1hcywgc2NoZW1haWQpOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNB VElPTk9CSl9TRVFVRU5DRVNfSU5fQ1VSX1NDSEVNQToKKwkJCQlzZWFyY2hfcGF0aCA9IGZl dGNoX3NlYXJjaF9wYXRoKGZhbHNlKTsKKwkJCQlpZiAoc2VhcmNoX3BhdGggPT0gTklMKSAv KiBub3RoaW5nIHZhbGlkIGluIHNlYXJjaF9wYXRoPyAqLworCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfU0NIRU1BKSwKKwkJCQkJCQll cnJtc2coIm5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgQ1VSUkVOVF9TQ0hFTUEi KSk7CisKKwkJCQlzY2hlbWFpZCA9IGxpbml0aWFsX29pZChzZWFyY2hfcGF0aCk7CisJCQkJ bGlzdF9mcmVlKHNlYXJjaF9wYXRoKTsKKworCQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRl cyBpZiB1c2VyIHNwZWNpZmllcyAic2NoMSwgc2NoMSIgKi8KKwkJCQkqc2VxdWVuY2VzX3Nj aGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCpzZXF1ZW5jZXNfc2NoZW1hcywgc2No ZW1haWQpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBzaG91bGRuJ3QgaGFw cGVuICovCkBAIC03MzQsNiArNzY0LDcgQEAgQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3Qo Y2hhciAqcHVibmFtZSwgTGlzdCAqdGFibGVzLAogT2JqZWN0QWRkcmVzcwogQ3JlYXRlUHVi bGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0 bXQpCiB7CisJTGlzdENlbGwgICAqbGM7CiAJUmVsYXRpb24JcmVsOwogCU9iamVjdEFkZHJl c3MgbXlzZWxmOwogCU9pZAkJCXB1Ym9pZDsKQEAgLTc0NSw4ICs3NzYsMjcgQEAgQ3JlYXRl UHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQg KnN0bXQpCiAJYm9vbAkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW47CiAJYm9v bAkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsK LQlMaXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7Ci0JTGlzdAkgICAqc2NoZW1haWRsaXN0ID0g TklMOworCUxpc3QJICAgKnRhYmxlcyA9IE5JTDsKKwlMaXN0CSAgICpzZXF1ZW5jZXMgPSBO SUw7CisJTGlzdAkgICAqdGFibGVzX3NjaGVtYWlkbGlzdCA9IE5JTDsKKwlMaXN0CSAgICpz ZXF1ZW5jZXNfc2NoZW1haWRsaXN0ID0gTklMOworCisJYm9vbAkJZm9yX2FsbF90YWJsZXMg PSBmYWxzZTsKKwlib29sCQlmb3JfYWxsX3NlcXVlbmNlcyA9IGZhbHNlOworCisJLyoKKwkg KiBUcmFuc2xhdGUgdGhlIGxpc3Qgb2Ygb2JqZWN0IHR5cGVzIChyZXByZXNlbnRlZCBieSBz dHJpbmdzKSB0byBib29sCisJICogZmxhZ3MuCisJICovCisJZm9yZWFjaChsYywgc3RtdC0+ Zm9yX2FsbF9vYmplY3RzKQorCXsKKwkJY2hhcgkgICAqdmFsID0gc3RyVmFsKGxmaXJzdChs YykpOworCisJCWlmIChzdHJjbXAodmFsLCAidGFibGVzIikgPT0gMCkKKwkJCWZvcl9hbGxf dGFibGVzID0gdHJ1ZTsKKwkJZWxzZSBpZiAoc3RyY21wKHZhbCwgInNlcXVlbmNlcyIpID09 IDApCisJCQlmb3JfYWxsX3NlcXVlbmNlcyA9IHRydWU7CisJfQogCiAJLyogbXVzdCBoYXZl IENSRUFURSBwcml2aWxlZ2Ugb24gZGF0YWJhc2UgKi8KIAlhY2xyZXN1bHQgPSBvYmplY3Rf YWNsY2hlY2soRGF0YWJhc2VSZWxhdGlvbklkLCBNeURhdGFiYXNlSWQsIEdldFVzZXJJZCgp LCBBQ0xfQ1JFQVRFKTsKQEAgLTc1NSwxMSArODA1LDE3IEBAIENyZWF0ZVB1YmxpY2F0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJ CQkgICBnZXRfZGF0YWJhc2VfbmFtZShNeURhdGFiYXNlSWQpKTsKIAogCS8qIEZPUiBBTEwg VEFCTEVTIHJlcXVpcmVzIHN1cGVydXNlciAqLwotCWlmIChzdG10LT5mb3JfYWxsX3RhYmxl cyAmJiAhc3VwZXJ1c2VyKCkpCisJaWYgKGZvcl9hbGxfdGFibGVzICYmICFzdXBlcnVzZXIo KSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVO VF9QUklWSUxFR0UpLAogCQkJCSBlcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0 ZSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiIpKSk7CiAKKwkvKiBGT1IgQUxMIFNFUVVF TkNFUyByZXF1aXJlcyBzdXBlcnVzZXIgKi8KKwlpZiAoZm9yX2FsbF9zZXF1ZW5jZXMgJiYg IXN1cGVydXNlcigpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf SU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJIGVycm1zZygibXVzdCBiZSBzdXBlcnVz ZXIgdG8gY3JlYXRlIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9uIikpKTsKKwogCXJl bCA9IHRhYmxlX29wZW4oUHVibGljYXRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKIAogCS8qIENoZWNrIGlmIG5hbWUgaXMgdXNlZCAqLwpAQCAtNzg5LDcgKzg0NSw5IEBA IENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRp b25TdG10ICpzdG10KQogCQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX29pZCk7CiAJdmFs dWVzW0FudW1fcGdfcHVibGljYXRpb25fb2lkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHB1 Ym9pZCk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsdGFibGVzIC0gMV0g PQotCQlCb29sR2V0RGF0dW0oc3RtdC0+Zm9yX2FsbF90YWJsZXMpOworCQlCb29sR2V0RGF0 dW0oZm9yX2FsbF90YWJsZXMpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFs bHNlcXVlbmNlcyAtIDFdID0KKwkJQm9vbEdldERhdHVtKGZvcl9hbGxfc2VxdWVuY2VzKTsK IAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJpbnNlcnQgLSAxXSA9CiAJCUJvb2xH ZXREYXR1bShwdWJhY3Rpb25zLnB1Ymluc2VydCk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGlj YXRpb25fcHVidXBkYXRlIC0gMV0gPQpAQCAtNzk4LDYgKzg1Niw4IEBAIENyZWF0ZVB1Ymxp Y2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10 KQogCQlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJkZWxldGUpOwogCXZhbHVlc1tBbnVt X3BnX3B1YmxpY2F0aW9uX3B1YnRydW5jYXRlIC0gMV0gPQogCQlCb29sR2V0RGF0dW0ocHVi YWN0aW9ucy5wdWJ0cnVuY2F0ZSk7CisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVi c2VxdWVuY2UgLSAxXSA9CisJCUJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YnNlcXVlbmNl KTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ2aWFyb290IC0gMV0gPQogCQlC b29sR2V0RGF0dW0ocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCkBAIC04MTUsNDYg Kzg3NSw4OCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0 ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwog CiAJLyogQXNzb2NpYXRlIG9iamVjdHMgd2l0aCB0aGUgcHVibGljYXRpb24uICovCi0JaWYg KHN0bXQtPmZvcl9hbGxfdGFibGVzKQorCWlmIChmb3JfYWxsX3RhYmxlcyB8fCBmb3JfYWxs X3NlcXVlbmNlcykKIAl7CiAJCS8qIEludmFsaWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJs aWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuICovCiAJCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hl QWxsKCk7CiAJfQotCWVsc2UKKworCS8qCisJICogSWYgdGhlIHB1YmxpY2F0aW9uIG1pZ2h0 IGhhdmUgZWl0aGVyIHRhYmxlcyBvciBzZXF1ZW5jZXMgKGRpcmVjdGx5IG9yCisJICogdGhy b3VnaCBhIHNjaGVtYSksIHByb2Nlc3MgdGhhdC4KKwkgKi8KKwlpZiAoIWZvcl9hbGxfdGFi bGVzIHx8ICFmb3JfYWxsX3NlcXVlbmNlcykKIAl7Ci0JCU9iamVjdHNJblB1YmxpY2F0aW9u VG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKLQkJCQkJCQkJ ICAgJnNjaGVtYWlkbGlzdCk7CisJCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQt PnB1Ym9iamVjdHMsIHBzdGF0ZSwKKwkJCQkJCQkJICAgJnRhYmxlcywgJnNlcXVlbmNlcywK KwkJCQkJCQkJICAgJnRhYmxlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJCSAgICZzZXF1ZW5j ZXNfc2NoZW1haWRsaXN0KTsKIAogCQkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJl cyBzdXBlcnVzZXIgKi8KLQkJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNl cigpKQorCQlpZiAodGFibGVzX3NjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigp KQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVO VF9QUklWSUxFR0UpLAogCQkJCQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0 ZSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsKIAotCQlpZiAocmVsYXRp b25zICE9IE5JTCkKKwkJLyogRk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3Vw ZXJ1c2VyICovCisJCWlmIChzZXF1ZW5jZXNfc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAhc3Vw ZXJ1c2VyKCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5T VUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIg dG8gY3JlYXRlIEZPUiBBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsK KworCQkvKiB0YWJsZXMgYWRkZWQgZGlyZWN0bHkgKi8KKwkJaWYgKHRhYmxlcyAhPSBOSUwp CiAJCXsKIAkJCUxpc3QJICAgKnJlbHM7CiAKLQkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KHJl bGF0aW9ucyk7CisJCQlyZWxzID0gT3BlblJlbGF0aW9uTGlzdCh0YWJsZXMsIFBVQl9PQkpU WVBFX1RBQkxFKTsKKwogCQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0 ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 KTsKIAogCQkJQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVs cywKLQkJCQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwsCisJCQkJCQkJCQkgICB0YWJs ZXNfc2NoZW1haWRsaXN0ICE9IE5JTCwKIAkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290KTsKIAotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0 cnVlLCBOVUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCQkJUHVibGljYXRpb25B ZGRSZWxhdGlvbnMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKKwkJCUNsb3NlUmVsYXRp b25MaXN0KHJlbHMpOworCQl9CisKKwkJLyogc2VxdWVuY2VzIGFkZGVkIGRpcmVjdGx5ICov CisJCWlmIChzZXF1ZW5jZXMgIT0gTklMKQorCQl7CisJCQlMaXN0CSAgICpyZWxzOworCisJ CQlyZWxzID0gT3BlblJlbGF0aW9uTGlzdChzZXF1ZW5jZXMsIFBVQl9PQkpUWVBFX1NFUVVF TkNFKTsKKworCQkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHVib2lkLCByZWxzLCB0cnVl LCBOVUxMKTsKKwkJCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMpOwogCQl9CiAKLQkJaWYgKHNj aGVtYWlkbGlzdCAhPSBOSUwpCisJCS8qIHRhYmxlcyBhZGRlZCB0aHJvdWdoIGEgc2NoZW1h ICovCisJCWlmICh0YWJsZXNfc2NoZW1haWRsaXN0ICE9IE5JTCkKIAkJewogCQkJLyoKIAkJ CSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0 ZWQgdG8gcHJldmVudAogCQkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCiAJCQkg Ki8KLQkJCUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7Ci0JCQlQdWJsaWNhdGlvbkFk ZFNjaGVtYXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOworCQkJTG9ja1Nj aGVtYUxpc3QodGFibGVzX3NjaGVtYWlkbGlzdCk7CisJCQlQdWJsaWNhdGlvbkFkZFNjaGVt YXMocHVib2lkLAorCQkJCQkJCQkgIHRhYmxlc19zY2hlbWFpZGxpc3QsIFBVQl9PQkpUWVBF X1RBQkxFLAorCQkJCQkJCQkgIHRydWUsIE5VTEwpOworCQl9CisKKwkJLyogc2VxdWVuY2Vz IGFkZGVkIHRocm91Z2ggYSBzY2hlbWEgKi8KKwkJaWYgKHNlcXVlbmNlc19zY2hlbWFpZGxp c3QgIT0gTklMKQorCQl7CisJCQkvKgorCQkJICogU2NoZW1hIGxvY2sgaXMgaGVsZCB1bnRp bCB0aGUgcHVibGljYXRpb24gaXMgY3JlYXRlZCB0byBwcmV2ZW50CisJCQkgKiBjb25jdXJy ZW50IHNjaGVtYSBkZWxldGlvbi4KKwkJCSAqLworCQkJTG9ja1NjaGVtYUxpc3Qoc2VxdWVu Y2VzX3NjaGVtYWlkbGlzdCk7CisJCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lkLAor CQkJCQkJCQkgIHNlcXVlbmNlc19zY2hlbWFpZGxpc3QsIFBVQl9PQkpUWVBFX1NFUVVFTkNF LAorCQkJCQkJCQkgIHRydWUsIE5VTEwpOwogCQl9CiAJfQogCkBAIC05MTcsNiArMTAxOSw3 IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCQkJCQkgICBBY2Nlc3NTaGFyZUxvY2spOwogCiAJ CXJvb3RfcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAor CQkJCQkJCQkJCQkgIFBVQl9PQkpUWVBFX1RBQkxFLAogCQkJCQkJCQkJCQkgIFBVQkxJQ0FU SU9OX1BBUlRfUk9PVCk7CiAKIAkJZm9yZWFjaChsYywgcm9vdF9yZWxpZHMpCkBAIC05OTYs NiArMTA5OSw5IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAKIAkJdmFsdWVzW0FudW1fcGdfcHVi bGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9IEJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1 YnRydW5jYXRlKTsKIAkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ0cnVuY2F0 ZSAtIDFdID0gdHJ1ZTsKKworCQl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJzZXF1 ZW5jZSAtIDFdID0gQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHVic2VxdWVuY2UpOworCQly ZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnNlcXVlbmNlIC0gMV0gPSB0cnVlOwog CX0KIAogCWlmIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbikKQEAgLTEwMTUs NyArMTEyMSw3IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJcHViZm9ybSA9IChGb3JtX3BnX3B1 YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIAogCS8qIEludmFsaWRhdGUgdGhlIHJlbGNh Y2hlLiAqLwotCWlmIChwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCisJaWYgKHB1YmZvcm0tPnB1 YmFsbHRhYmxlcyB8fCBwdWJmb3JtLT5wdWJhbGxzZXF1ZW5jZXMpCiAJewogCQlDYWNoZUlu dmFsaWRhdGVSZWxjYWNoZUFsbCgpOwogCX0KQEAgLTEwMzEsNiArMTEzNyw3IEBAIEFsdGVy UHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQsCiAJCSAqLwogCQlpZiAocm9vdF9yZWxpZHMgPT0gTklMKQogCQkJcmVs aWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJ CQkgUFVCX09CSlRZUEVfVEFCTEUsCiAJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FM TCk7CiAJCWVsc2UKIAkJewpAQCAtMTA0NCw3ICsxMTUxLDIwIEBAIEFsdGVyUHVibGljYXRp b25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0 bXQsCiAJCQkJCQkJCQkJCQkJCWxmaXJzdF9vaWQobGMpKTsKIAkJfQogCisJCS8qIHRhYmxl cyAqLwogCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9u cyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJCVBVQl9PQkpUWVBFX1RBQkxFLAorCQkJ CQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX0FMTCk7CisJCXJlbGlkcyA9IGxpc3RfY29u Y2F0X3VuaXF1ZV9vaWQocmVsaWRzLCBzY2hlbWFyZWxpZHMpOworCisJCS8qIHNlcXVlbmNl cyAqLworCQlyZWxpZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHJlbGlkcywKKwkJCQkJ CQkJCQlHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJ CQkJCQkJUFVCX09CSlRZUEVfU0VRVUVOQ0UsCisJCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJ T05fUEFSVF9BTEwpKTsKKworCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNh dGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJCVBVQl9PQkpUWVBF X1NFUVVFTkNFLAogCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAJCXJl bGlkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocmVsaWRzLCBzY2hlbWFyZWxpZHMpOwog CkBAIC0xMDk5LDcgKzEyMTksNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCWlmICghdGFibGVzICYmIHN0 bXQtPmFjdGlvbiAhPSBBUF9TZXRPYmplY3RzKQogCQlyZXR1cm47CiAKLQlyZWxzID0gT3Bl blRhYmxlTGlzdCh0YWJsZXMpOworCXJlbHMgPSBPcGVuUmVsYXRpb25MaXN0KHRhYmxlcywg UFVCX09CSlRZUEVfVEFCTEUpOwogCiAJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmpl Y3RzKQogCXsKQEAgLTExMTAsMTMgKzEyMzAsMTQgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxl cyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJQ2hlY2tQ dWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywgcHVibGlzaF9zY2hl bWEsCiAJCQkJCQkJCSAgIHB1YmZvcm0tPnB1YnZpYXJvb3QpOwogCi0JCVB1YmxpY2F0aW9u QWRkVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCk7CisJCVB1YmxpY2F0aW9uQWRk UmVsYXRpb25zKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCk7CiAJfQogCWVsc2UgaWYgKHN0 bXQtPmFjdGlvbiA9PSBBUF9Ecm9wT2JqZWN0cykKLQkJUHVibGljYXRpb25Ecm9wVGFibGVz KHB1YmlkLCByZWxzLCBmYWxzZSk7CisJCVB1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhwdWJp ZCwgcmVscywgZmFsc2UpOwogCWVsc2UJCQkJCQkvKiBBUF9TZXRPYmplY3RzICovCiAJewog CQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwK KwkJCQkJCQkJCQkJCQkJUFVCX09CSlRZUEVfVEFCTEUsCiAJCQkJCQkJCQkJCQkJCVBVQkxJ Q0FUSU9OX1BBUlRfUk9PVCk7CiAJCUxpc3QJICAgKmRlbHJlbHMgPSBOSUw7CiAJCUxpc3RD ZWxsICAgKm9sZGxjOwpAQCAtMTIzMywxOCArMTM1NCwxOCBAQCBBbHRlclB1YmxpY2F0aW9u VGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQl9 CiAKIAkJLyogQW5kIGRyb3AgdGhlbS4gKi8KLQkJUHVibGljYXRpb25Ecm9wVGFibGVzKHB1 YmlkLCBkZWxyZWxzLCB0cnVlKTsKKwkJUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKHB1Ymlk LCBkZWxyZWxzLCB0cnVlKTsKIAogCQkvKgogCQkgKiBEb24ndCBib3RoZXIgY2FsY3VsYXRp bmcgdGhlIGRpZmZlcmVuY2UgZm9yIGFkZGluZywgd2UnbGwgY2F0Y2ggYW5kCiAJCSAqIHNr aXAgZXhpc3Rpbmcgb25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBkYXRlLgogCQkgKi8KLQkJ UHVibGljYXRpb25BZGRUYWJsZXMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQpOworCQlQdWJs aWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7CiAKLQkJQ2xv c2VUYWJsZUxpc3QoZGVscmVscyk7CisJCUNsb3NlUmVsYXRpb25MaXN0KGRlbHJlbHMpOwog CX0KIAotCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMp OwogfQogCiAvKgpAQCAtMTI1NCw3ICsxMzc1LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxl cyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKICAqLwogc3Rh dGljIHZvaWQKIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10LAotCQkJCQkJSGVhcFR1cGxlIHR1cCwgTGlzdCAqc2NoZW1haWRsaXN0KQorCQkJ CQkJSGVhcFR1cGxlIHR1cCwgTGlzdCAqc2NoZW1haWRsaXN0LAorCQkJCQkJY2hhciBvYmpl Y3RUeXBlKQogewogCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1 YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIApAQCAtMTI3Niw3ICsxMzk4LDcgQEAgQWx0 ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCUxp c3RDZWxsICAgKmxjOwogCQlMaXN0CSAgICpyZWxvaWRzOwogCi0JCXJlbG9pZHMgPSBHZXRQ dWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9P VCk7CisJCXJlbG9pZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQs IG9iamVjdFR5cGUsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKIAkJZm9yZWFjaChsYywg cmVsb2lkcykKIAkJewpAQCAtMTMwMywxMyArMTQyNSwxMyBAQCBBbHRlclB1YmxpY2F0aW9u U2NoZW1hcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJCVJlbGVhc2VTeXNDYWNo ZShjb2x0dXBsZSk7CiAJCX0KIAotCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHViZm9ybS0+ b2lkLCBzY2hlbWFpZGxpc3QsIGZhbHNlLCBzdG10KTsKKwkJUHVibGljYXRpb25BZGRTY2hl bWFzKHB1YmZvcm0tPm9pZCwgc2NoZW1haWRsaXN0LCBvYmplY3RUeXBlLCBmYWxzZSwgc3Rt dCk7CiAJfQogCWVsc2UgaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9Ecm9wT2JqZWN0cykKLQkJ UHVibGljYXRpb25Ecm9wU2NoZW1hcyhwdWJmb3JtLT5vaWQsIHNjaGVtYWlkbGlzdCwgZmFs c2UpOworCQlQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKHB1YmZvcm0tPm9pZCwgc2NoZW1haWRs aXN0LCBvYmplY3RUeXBlLCBmYWxzZSk7CiAJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMg Ki8KIAl7Ci0JCUxpc3QJICAgKm9sZHNjaGVtYWlkcyA9IEdldFB1YmxpY2F0aW9uU2NoZW1h cyhwdWJmb3JtLT5vaWQpOworCQlMaXN0CSAgICpvbGRzY2hlbWFpZHMgPSBHZXRQdWJsaWNh dGlvblNjaGVtYXMocHViZm9ybS0+b2lkLCBvYmplY3RUeXBlKTsKIAkJTGlzdAkgICAqZGVs c2NoZW1hcyA9IE5JTDsKIAogCQkvKiBJZGVudGlmeSB3aGljaCBzY2hlbWFzIHNob3VsZCBi ZSBkcm9wcGVkICovCkBAIC0xMzIyLDEzICsxNDQ0LDEzIEBAIEFsdGVyUHVibGljYXRpb25T Y2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQlMb2NrU2NoZW1hTGlzdChk ZWxzY2hlbWFzKTsKIAogCQkvKiBBbmQgZHJvcCB0aGVtICovCi0JCVB1YmxpY2F0aW9uRHJv cFNjaGVtYXMocHViZm9ybS0+b2lkLCBkZWxzY2hlbWFzLCB0cnVlKTsKKwkJUHVibGljYXRp b25Ecm9wU2NoZW1hcyhwdWJmb3JtLT5vaWQsIGRlbHNjaGVtYXMsIG9iamVjdFR5cGUsIHRy dWUpOwogCiAJCS8qCiAJCSAqIERvbid0IGJvdGhlciBjYWxjdWxhdGluZyB0aGUgZGlmZmVy ZW5jZSBmb3IgYWRkaW5nLCB3ZSdsbCBjYXRjaCBhbmQKIAkJICogc2tpcCBleGlzdGluZyBv bmVzIHdoZW4gZG9pbmcgY2F0YWxvZyB1cGRhdGUuCiAJCSAqLwotCQlQdWJsaWNhdGlvbkFk ZFNjaGVtYXMocHViZm9ybS0+b2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIHN0bXQpOworCQlQ dWJsaWNhdGlvbkFkZFNjaGVtYXMocHViZm9ybS0+b2lkLCBzY2hlbWFpZGxpc3QsIG9iamVj dFR5cGUsIHRydWUsIHN0bXQpOwogCX0KIH0KIApAQCAtMTMzOCwxMiArMTQ2MCwxMyBAQCBB bHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKICAq Lwogc3RhdGljIHZvaWQKIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKLQkJCQkJICBMaXN0ICp0YWJsZXMsIExpc3Qg KnNjaGVtYWlkbGlzdCkKKwkJCQkJICBMaXN0ICp0YWJsZXMsIExpc3QgKnRhYmxlc19zY2hl bWFpZGxpc3QsCisJCQkJCSAgTGlzdCAqc2VxdWVuY2VzLCBMaXN0ICpzZXF1ZW5jZXNfc2No ZW1haWRsaXN0KQogewogCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3Bn X3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIAogCWlmICgoc3RtdC0+YWN0aW9uID09 IEFQX0FkZE9iamVjdHMgfHwgc3RtdC0+YWN0aW9uID09IEFQX1NldE9iamVjdHMpICYmCi0J CXNjaGVtYWlkbGlzdCAmJiAhc3VwZXJ1c2VyKCkpCisJCSh0YWJsZXNfc2NoZW1haWRsaXN0 IHx8IHNlcXVlbmNlc19zY2hlbWFpZGxpc3QpICYmICFzdXBlcnVzZXIoKSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0Up LAogCQkJCSBlcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGFkZCBvciBzZXQgc2NoZW1h cyIpKSk7CkBAIC0xMzUyLDEzICsxNDc1LDI0IEBAIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkgKiBDaGVjayB0 aGF0IHVzZXIgaXMgYWxsb3dlZCB0byBtYW5pcHVsYXRlIHRoZSBwdWJsaWNhdGlvbiB0YWJs ZXMgaW4KIAkgKiBzY2hlbWEKIAkgKi8KLQlpZiAoc2NoZW1haWRsaXN0ICYmIHB1YmZvcm0t PnB1YmFsbHRhYmxlcykKKwlpZiAodGFibGVzX3NjaGVtYWlkbGlzdCAmJiBwdWJmb3JtLT5w dWJhbGx0YWJsZXMpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJIGVycm1zZygicHVibGlj YXRpb24gXCIlc1wiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMiLAogCQkJCQkJTmFt ZVN0cihwdWJmb3JtLT5wdWJuYW1lKSksCiAJCQkJIGVycmRldGFpbCgiU2NoZW1hcyBjYW5u b3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0 aW9ucy4iKSkpOwogCisJLyoKKwkgKiBDaGVjayB0aGF0IHVzZXIgaXMgYWxsb3dlZCB0byBt YW5pcHVsYXRlIHRoZSBwdWJsaWNhdGlvbiBzZXF1ZW5jZXMgaW4KKwkgKiBzY2hlbWEKKwkg Ki8KKwlpZiAoc2VxdWVuY2VzX3NjaGVtYWlkbGlzdCAmJiBwdWJmb3JtLT5wdWJhbGxzZXF1 ZW5jZXMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygicHVibGljYXRpb24g XCIlc1wiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMiLAorCQkJCQkJTmFtZVN0 cihwdWJmb3JtLT5wdWJuYW1lKSksCisJCQkJIGVycmRldGFpbCgiU2VxdWVuY2VzIGZyb20g c2NoZW1hIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQgb24gRk9S IEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb25zLiIpKSk7CisKIAkvKiBDaGVjayB0aGF0IHVz ZXIgaXMgYWxsb3dlZCB0byBtYW5pcHVsYXRlIHRoZSBwdWJsaWNhdGlvbiB0YWJsZXMuICov CiAJaWYgKHRhYmxlcyAmJiBwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCiAJCWVyZXBvcnQoRVJS T1IsCkBAIC0xMzY2LDYgKzE1MDAsMTA3IEBAIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkgZXJybXNnKCJw dWJsaWNhdGlvbiBcIiVzXCIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUyIsCiAJCQkJ CQlOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSwKIAkJCQkgZXJyZGV0YWlsKCJUYWJsZXMg Y2Fubm90IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBGT1IgQUxMIFRBQkxFUyBwdWJs aWNhdGlvbnMuIikpKTsKKworCS8qIENoZWNrIHRoYXQgdXNlciBpcyBhbGxvd2VkIHRvIG1h bmlwdWxhdGUgdGhlIHB1YmxpY2F0aW9uIHNlcXVlbmNlcy4gKi8KKwlpZiAoc2VxdWVuY2Vz ICYmIHB1YmZvcm0tPnB1YmFsbHNlcXVlbmNlcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJ CQkgZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFNF UVVFTkNFUyIsCisJCQkJCQlOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSwKKwkJCQkgZXJy ZGV0YWlsKCJTZXF1ZW5jZXMgY2Fubm90IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBG T1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbnMuIikpKTsKK30KKworLyoKKyAqIEFkZCBv ciByZW1vdmUgdGFibGUgdG8vZnJvbSBwdWJsaWNhdGlvbi4KKyAqLworc3RhdGljIHZvaWQK K0FsdGVyUHVibGljYXRpb25TZXF1ZW5jZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQs IEhlYXBUdXBsZSB0dXAsCisJCQkJCQkgIExpc3QgKnNlcXVlbmNlcykKK3sKKwlMaXN0CSAg ICpyZWxzID0gTklMOworCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3Bn X3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwlPaWQJCQlwdWJpZCA9IHB1YmZvcm0t Pm9pZDsKKworCS8qCisJICogTm90aGluZyB0byBkbyBpZiBubyBvYmplY3RzLCBleGNlcHQg aW4gU0VUOiBmb3IgdGhhdCBpdCBpcyBxdWl0ZQorCSAqIHBvc3NpYmxlIHRoYXQgdXNlciBo YXMgbm90IHNwZWNpZmllZCBhbnkgdGFibGVzIGluIHdoaWNoIGNhc2Ugd2UgbmVlZAorCSAq IHRvIHJlbW92ZSBhbGwgdGhlIGV4aXN0aW5nIHRhYmxlcy4KKwkgKi8KKwlpZiAoIXNlcXVl bmNlcyAmJiBzdG10LT5hY3Rpb24gIT0gQVBfU2V0T2JqZWN0cykKKwkJcmV0dXJuOworCisJ cmVscyA9IE9wZW5SZWxhdGlvbkxpc3Qoc2VxdWVuY2VzLCBQVUJfT0JKVFlQRV9TRVFVRU5D RSk7CisKKwlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCisJeworCQlQdWJs aWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOworCX0KKwll bHNlIGlmIChzdG10LT5hY3Rpb24gPT0gQVBfRHJvcE9iamVjdHMpCisJCVB1YmxpY2F0aW9u RHJvcFJlbGF0aW9ucyhwdWJpZCwgcmVscywgZmFsc2UpOworCWVsc2UJCQkJCQkvKiBBUF9T ZXRPYmplY3RzICovCisJeworCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRQdWJsaWNhdGlv blJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJUFVCX09CSlRZUEVfU0VRVUVOQ0Us CisJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCUxpc3QJICAgKmRl bHJlbHMgPSBOSUw7CisJCUxpc3RDZWxsICAgKm9sZGxjOworCisJCS8qCisJCSAqIFRvIHJl Y3JlYXRlIHRoZSByZWxhdGlvbiBsaXN0IGZvciB0aGUgcHVibGljYXRpb24sIGxvb2sgZm9y CisJCSAqIGV4aXN0aW5nIHJlbGF0aW9ucyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGRyb3Bw ZWQuCisJCSAqLworCQlmb3JlYWNoKG9sZGxjLCBvbGRyZWxpZHMpCisJCXsKKwkJCU9pZAkJ CW9sZHJlbGlkID0gbGZpcnN0X29pZChvbGRsYyk7CisJCQlMaXN0Q2VsbCAgICpuZXdsYzsK KwkJCVB1YmxpY2F0aW9uUmVsSW5mbyAqb2xkcmVsOworCQkJYm9vbAkJZm91bmQgPSBmYWxz ZTsKKworCQkJZm9yZWFjaChuZXdsYywgcmVscykKKwkJCXsKKwkJCQlQdWJsaWNhdGlvblJl bEluZm8gKm5ld3B1YnJlbDsKKworCQkJCW5ld3B1YnJlbCA9IChQdWJsaWNhdGlvblJlbElu Zm8gKikgbGZpcnN0KG5ld2xjKTsKKworCQkJCS8qCisJCQkJICogQ2hlY2sgaWYgYW55IG9m IHRoZSBuZXcgc2V0IG9mIHJlbGF0aW9ucyBtYXRjaGVzIHdpdGggdGhlCisJCQkJICogZXhp c3RpbmcgcmVsYXRpb25zIGluIHRoZSBwdWJsaWNhdGlvbi4KKwkJCQkgKi8KKwkJCQlpZiAo UmVsYXRpb25HZXRSZWxpZChuZXdwdWJyZWwtPnJlbGF0aW9uKSA9PSBvbGRyZWxpZCkKKwkJ CQl7CisJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCisJ CQkvKgorCQkJICogQWRkIHRoZSBub24tbWF0Y2hlZCByZWxhdGlvbnMgdG8gYSBsaXN0IHNv IHRoYXQgdGhleSBjYW4gYmUKKwkJCSAqIGRyb3BwZWQuCisJCQkgKi8KKwkJCWlmICghZm91 bmQpCisJCQl7CisJCQkJb2xkcmVsID0gcGFsbG9jKHNpemVvZihQdWJsaWNhdGlvblJlbElu Zm8pKTsKKwkJCQlvbGRyZWwtPndoZXJlQ2xhdXNlID0gTlVMTDsKKwkJCQlvbGRyZWwtPmNv bHVtbnMgPSBOSUw7CisJCQkJb2xkcmVsLT5yZWxhdGlvbiA9IHRhYmxlX29wZW4ob2xkcmVs aWQsCisJCQkJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJCQlkZWxy ZWxzID0gbGFwcGVuZChkZWxyZWxzLCBvbGRyZWwpOworCQkJfQorCQl9CisKKwkJLyogQW5k IGRyb3AgdGhlbS4gKi8KKwkJUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKHB1YmlkLCBkZWxy ZWxzLCB0cnVlKTsKKworCQkvKgorCQkgKiBEb24ndCBib3RoZXIgY2FsY3VsYXRpbmcgdGhl IGRpZmZlcmVuY2UgZm9yIGFkZGluZywgd2UnbGwgY2F0Y2ggYW5kCisJCSAqIHNraXAgZXhp c3Rpbmcgb25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBkYXRlLgorCQkgKi8KKwkJUHVibGlj YXRpb25BZGRSZWxhdGlvbnMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQpOworCisJCUNsb3Nl UmVsYXRpb25MaXN0KGRlbHJlbHMpOworCX0KKworCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMp OwogfQogCiAvKgpAQCAtMTQwMywxNCArMTYzOCwyMCBAQCBBbHRlclB1YmxpY2F0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCUFsdGVy UHVibGljYXRpb25PcHRpb25zKHBzdGF0ZSwgc3RtdCwgcmVsLCB0dXApOwogCWVsc2UKIAl7 Ci0JCUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKLQkJTGlzdAkgICAqc2NoZW1haWRsaXN0 ID0gTklMOworCQlMaXN0CSAgICp0YWJsZXMgPSBOSUw7CisJCUxpc3QJICAgKnNlcXVlbmNl cyA9IE5JTDsKKwkJTGlzdAkgICAqdGFibGVzX3NjaGVtYWlkbGlzdCA9IE5JTDsKKwkJTGlz dAkgICAqc2VxdWVuY2VzX3NjaGVtYWlkbGlzdCA9IE5JTDsKIAkJT2lkCQkJcHViaWQgPSBw dWJmb3JtLT5vaWQ7CiAKLQkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVi b2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0 KTsKKwkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0 YXRlLAorCQkJCQkJCQkgICAmdGFibGVzLCAmc2VxdWVuY2VzLAorCQkJCQkJCQkgICAmdGFi bGVzX3NjaGVtYWlkbGlzdCwKKwkJCQkJCQkJICAgJnNlcXVlbmNlc19zY2hlbWFpZGxpc3Qp OwogCi0JCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAsIHJlbGF0aW9ucywgc2No ZW1haWRsaXN0KTsKKwkJQ2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQsIHR1cCwKKwkJCQkJ CQkgIHRhYmxlcywgdGFibGVzX3NjaGVtYWlkbGlzdCwKKwkJCQkJCQkgIHNlcXVlbmNlcywg c2VxdWVuY2VzX3NjaGVtYWlkbGlzdCk7CiAKIAkJaGVhcF9mcmVldHVwbGUodHVwKTsKIApA QCAtMTQzMSw5ICsxNjcyLDE2IEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJZXJybXNnKCJwdWJsaWNh dGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAogCQkJCQkJICAgc3RtdC0+cHVibmFtZSkp OwogCi0JCUFsdGVyUHVibGljYXRpb25UYWJsZXMoc3RtdCwgdHVwLCByZWxhdGlvbnMsIHBz dGF0ZS0+cF9zb3VyY2V0ZXh0LAotCQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwpOwot CQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlkbGlzdCk7CisJ CUFsdGVyUHVibGljYXRpb25UYWJsZXMoc3RtdCwgdHVwLCB0YWJsZXMsIHBzdGF0ZS0+cF9z b3VyY2V0ZXh0LAorCQkJCQkJCSAgIHRhYmxlc19zY2hlbWFpZGxpc3QgIT0gTklMKTsKKwor CQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHRhYmxlc19zY2hlbWFpZGxp c3QsCisJCQkJCQkJCVBVQl9PQkpUWVBFX1RBQkxFKTsKKworCQlBbHRlclB1YmxpY2F0aW9u U2VxdWVuY2VzKHN0bXQsIHR1cCwgc2VxdWVuY2VzKTsKKworCQlBbHRlclB1YmxpY2F0aW9u U2NoZW1hcyhzdG10LCB0dXAsIHNlcXVlbmNlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJCVBV Ql9PQkpUWVBFX1NFUVVFTkNFKTsKIAl9CiAKIAkvKiBDbGVhbnVwLiAqLwpAQCAtMTUwMSw3 ICsxNzQ5LDcgQEAgUmVtb3ZlUHVibGljYXRpb25CeUlkKE9pZCBwdWJpZCkKIAlwdWJmb3Jt ID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOwogCiAJLyogSW52YWxp ZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4gKi8K LQlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQorCWlmIChwdWJmb3JtLT5wdWJhbGx0YWJs ZXMgfHwgcHViZm9ybS0+cHViYWxsc2VxdWVuY2VzKQogCQlDYWNoZUludmFsaWRhdGVSZWxj YWNoZUFsbCgpOwogCiAJQ2F0YWxvZ1R1cGxlRGVsZXRlKHJlbCwgJnR1cC0+dF9zZWxmKTsK QEAgLTE1MzcsNiArMTc4NSw3IEBAIFJlbW92ZVB1YmxpY2F0aW9uU2NoZW1hQnlJZChPaWQg cHNvaWQpCiAJICogcGFydGl0aW9ucy4KIAkgKi8KIAlzY2hlbWFSZWxzID0gR2V0U2NoZW1h UHVibGljYXRpb25SZWxhdGlvbnMocHVic2NoLT5wbm5zcGlkLAorCQkJCQkJCQkJCQkgICBw dWJzY2gtPnBudHlwZSwKIAkJCQkJCQkJCQkJICAgUFVCTElDQVRJT05fUEFSVF9BTEwpOwog CUludmFsaWRhdGVQdWJsaWNhdGlvblJlbHMoc2NoZW1hUmVscyk7CiAKQEAgLTE1NTMsMTAg KzE4MDIsMTAgQEAgUmVtb3ZlUHVibGljYXRpb25TY2hlbWFCeUlkKE9pZCBwc29pZCkKICAq IGFkZCB0aGVtIHRvIGEgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyBMaXN0ICoKLU9wZW5U YWJsZUxpc3QoTGlzdCAqdGFibGVzKQorT3BlblJlbGF0aW9uTGlzdChMaXN0ICpyZWxzLCBj aGFyIG9iamVjdFR5cGUpCiB7CiAJTGlzdAkgICAqcmVsaWRzID0gTklMOwotCUxpc3QJICAg KnJlbHMgPSBOSUw7CisJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUxpc3RDZWxsICAgKmxj OwogCUxpc3QJICAgKnJlbGlkc193aXRoX3JmID0gTklMOwogCUxpc3QJICAgKnJlbGlkc193 aXRoX2NvbGxpc3QgPSBOSUw7CkBAIC0xNTY0LDE5ICsxODEzLDM1IEBAIE9wZW5UYWJsZUxp c3QoTGlzdCAqdGFibGVzKQogCS8qCiAJICogT3Blbiwgc2hhcmUtbG9jaywgYW5kIGNoZWNr IGFsbCB0aGUgZXhwbGljaXRseS1zcGVjaWZpZWQgcmVsYXRpb25zCiAJICovCi0JZm9yZWFj aChsYywgdGFibGVzKQorCWZvcmVhY2gobGMsIHJlbHMpCiAJewogCQlQdWJsaWNhdGlvblRh YmxlICp0ID0gbGZpcnN0X25vZGUoUHVibGljYXRpb25UYWJsZSwgbGMpOwogCQlib29sCQly ZWN1cnNlID0gdC0+cmVsYXRpb24tPmluaDsKIAkJUmVsYXRpb24JcmVsOwogCQlPaWQJCQlt eXJlbGlkOwogCQlQdWJsaWNhdGlvblJlbEluZm8gKnB1Yl9yZWw7CisJCWNoYXIJCW15cmVs a2luZDsKIAogCQkvKiBBbGxvdyBxdWVyeSBjYW5jZWwgaW4gY2FzZSB0aGlzIHRha2VzIGEg bG9uZyB0aW1lICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJcmVsID0gdGFi bGVfb3BlbnJ2KHQtPnJlbGF0aW9uLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCQlt eXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOworCQlteXJlbGtpbmQgPSBnZXRfcmVs X3JlbGtpbmQobXlyZWxpZCk7CisKKwkJLyoKKwkJICogTWFrZSBzdXJlIHRoZSByZWxraW5k IG1hdGNoZXMgdGhlIGV4cGVjdGVkIG9iamVjdCB0eXBlLiBUaGlzIG1heQorCQkgKiBoYXBw ZW4gZS5nLiB3aGVuIGFkZGluZyBhIHNlcXVlbmNlIHVzaW5nIEFERCBUQUJMRSBvciBhIHRh YmxlIHVzaW5nCisJCSAqIEFERCBTRVFVRU5DRSkuCisJCSAqCisJCSAqIFhYWCBXZSBsZXQg dGhyb3VnaCB1bnN1cHBvcnRlZCBvYmplY3QgdHlwZXMgKHZpZXdzIGV0Yy4pLiBUaG9zZQor CQkgKiB3aWxsIGJlIGNhdWdodCBsYXRlciBpbiBjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVs YXRpb24uCisJCSAqLworCQlpZiAocHViX2dldF9vYmplY3RfdHlwZV9mb3JfcmVsa2luZCht eXJlbGtpbmQpICE9IFBVQl9PQkpUWVBFX1VOU1VQUE9SVEVEICYmCisJCQlwdWJfZ2V0X29i amVjdF90eXBlX2Zvcl9yZWxraW5kKG15cmVsa2luZCkgIT0gb2JqZWN0VHlwZSkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCisJCQkJCWVycm1zZygib2JqZWN0IHR5cGUgZG9lcyBub3QgbWF0Y2ggdHlwZSBl eHBlY3RlZCBieSBjb21tYW5kIikpOwogCiAJCS8qCiAJCSAqIEZpbHRlciBvdXQgZHVwbGlj YXRlcyBpZiB1c2VyIHNwZWNpZmllcyAiZm9vLCBmb28iLgpAQCAtMTYwOSw3ICsxODc0LDcg QEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJCXB1Yl9yZWwtPnJlbGF0aW9uID0g cmVsOwogCQlwdWJfcmVsLT53aGVyZUNsYXVzZSA9IHQtPndoZXJlQ2xhdXNlOwogCQlwdWJf cmVsLT5jb2x1bW5zID0gdC0+Y29sdW1uczsKLQkJcmVscyA9IGxhcHBlbmQocmVscywgcHVi X3JlbCk7CisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBwdWJfcmVsKTsKIAkJcmVsaWRz ID0gbGFwcGVuZF9vaWQocmVsaWRzLCBteXJlbGlkKTsKIAogCQlpZiAodC0+d2hlcmVDbGF1 c2UpCkBAIC0xNjc4LDEwICsxOTQzLDkgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMp CiAJCQkJcHViX3JlbC0+cmVsYXRpb24gPSByZWw7CiAJCQkJLyogY2hpbGQgaW5oZXJpdHMg V0hFUkUgY2xhdXNlIGZyb20gcGFyZW50ICovCiAJCQkJcHViX3JlbC0+d2hlcmVDbGF1c2Ug PSB0LT53aGVyZUNsYXVzZTsKLQogCQkJCS8qIGNoaWxkIGluaGVyaXRzIGNvbHVtbiBsaXN0 IGZyb20gcGFyZW50ICovCiAJCQkJcHViX3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7Ci0J CQkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CisJCQkJcmVzdWx0ID0gbGFwcGVu ZChyZXN1bHQsIHB1Yl9yZWwpOwogCQkJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywg Y2hpbGRyZWxpZCk7CiAKIAkJCQlpZiAodC0+d2hlcmVDbGF1c2UpCkBAIC0xNjk2LDE0ICsx OTYwLDE0IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCWxpc3RfZnJlZShyZWxp ZHMpOwogCWxpc3RfZnJlZShyZWxpZHNfd2l0aF9yZik7CiAKLQlyZXR1cm4gcmVsczsKKwly ZXR1cm4gcmVzdWx0OwogfQogCiAvKgogICogQ2xvc2UgYWxsIHJlbGF0aW9ucyBpbiB0aGUg bGlzdC4KICAqLwogc3RhdGljIHZvaWQKLUNsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMpCitD bG9zZVJlbGF0aW9uTGlzdChMaXN0ICpyZWxzKQogewogCUxpc3RDZWxsICAgKmxjOwogCkBA IC0xNzUxLDEyICsyMDE1LDEyIEBAIExvY2tTY2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3Qp CiAgKiBBZGQgbGlzdGVkIHRhYmxlcyB0byB0aGUgcHVibGljYXRpb24uCiAgKi8KIHN0YXRp YyB2b2lkCi1QdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJv b2wgaWZfbm90X2V4aXN0cywKLQkJCQkJIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQor UHVibGljYXRpb25BZGRSZWxhdGlvbnMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlm X25vdF9leGlzdHMsCisJCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIHsKIAlM aXN0Q2VsbCAgICpsYzsKIAotCUFzc2VydCghc3RtdCB8fCAhc3RtdC0+Zm9yX2FsbF90YWJs ZXMpOworCUFzc2VydCghc3RtdCB8fCAhc3RtdC0+Zm9yX2FsbF9vYmplY3RzKTsKIAogCWZv cmVhY2gobGMsIHJlbHMpCiAJewpAQCAtMTc4NSw3ICsyMDQ5LDcgQEAgUHVibGljYXRpb25B ZGRUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCiAg KiBSZW1vdmUgbGlzdGVkIHRhYmxlcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAqLwogc3Rh dGljIHZvaWQKLVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMs IGJvb2wgbWlzc2luZ19vaykKK1B1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhPaWQgcHViaWQs IExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykKIHsKIAlPYmplY3RBZGRyZXNzIG9iajsK IAlMaXN0Q2VsbCAgICpsYzsKQEAgLTE4MzAsMTkgKzIwOTQsMTkgQEAgUHVibGljYXRpb25E cm9wVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKQogICog QWRkIGxpc3RlZCBzY2hlbWFzIHRvIHRoZSBwdWJsaWNhdGlvbi4KICAqLwogc3RhdGljIHZv aWQKLVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJv b2wgaWZfbm90X2V4aXN0cywKLQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkK K1B1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGNoYXIg b2JqZWN0VHlwZSwKKwkJCQkJICBib29sIGlmX25vdF9leGlzdHMsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10KQogewogCUxpc3RDZWxsICAgKmxjOwogCi0JQXNzZXJ0KCFzdG10IHx8 ICFzdG10LT5mb3JfYWxsX3RhYmxlcyk7CisJQXNzZXJ0KCFzdG10IHx8ICFzdG10LT5mb3Jf YWxsX29iamVjdHMpOwogCiAJZm9yZWFjaChsYywgc2NoZW1hcykKIAl7CiAJCU9pZAkJCXNj aGVtYWlkID0gbGZpcnN0X29pZChsYyk7CiAJCU9iamVjdEFkZHJlc3Mgb2JqOwogCi0JCW9i aiA9IHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEocHViaWQsIHNjaGVtYWlkLCBpZl9ub3RfZXhp c3RzKTsKKwkJb2JqID0gcHVibGljYXRpb25fYWRkX3NjaGVtYShwdWJpZCwgc2NoZW1haWQs IG9iamVjdFR5cGUsIGlmX25vdF9leGlzdHMpOwogCQlpZiAoc3RtdCkKIAkJewogCQkJRXZl bnRUcmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQob2JqLCBJbnZhbGlkT2JqZWN0QWRkcmVz cywKQEAgLTE4NTgsNyArMjEyMiw3IEBAIFB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHVi aWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4aXN0cywKICAqIFJlbW92ZSBsaXN0 ZWQgc2NoZW1hcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLVB1 YmxpY2F0aW9uRHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1p c3Npbmdfb2spCitQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2No ZW1hcywgY2hhciBvYmplY3RUeXBlLCBib29sIG1pc3Npbmdfb2spCiB7CiAJT2JqZWN0QWRk cmVzcyBvYmo7CiAJTGlzdENlbGwgICAqbGM7CkBAIC0xODY4LDEwICsyMTMyLDExIEBAIFB1 YmxpY2F0aW9uRHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1p c3Npbmdfb2spCiAJewogCQlPaWQJCQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQobGMpOwogCi0J CXBzaWQgPSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCisJCXBz aWQgPSBHZXRTeXNDYWNoZU9pZDMoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCiAJCQkJCQkJ ICAgQW51bV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2Vfb2lkLAogCQkJCQkJCSAgIE9iamVj dElkR2V0RGF0dW0oc2NoZW1haWQpLAotCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHVi aWQpKTsKKwkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSwKKwkJCQkJCQkgICBD aGFyR2V0RGF0dW0ob2JqZWN0VHlwZSkpOwogCQlpZiAoIU9pZElzVmFsaWQocHNpZCkpCiAJ CXsKIAkJCWlmIChtaXNzaW5nX29rKQpAQCAtMTkyNiw2ICsyMTkxLDEzIEBAIEFsdGVyUHVi bGljYXRpb25Pd25lcl9pbnRlcm5hbChSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXAsIE9p ZCBuZXdPd25lcklkKQogCQkJCQkJCU5hbWVTdHIoZm9ybS0+cHVibmFtZSkpLAogCQkJCQkg ZXJyaGludCgiVGhlIG93bmVyIG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24gbXVz dCBiZSBhIHN1cGVydXNlci4iKSkpOwogCisJCWlmIChmb3JtLT5wdWJhbGxzZXF1ZW5jZXMg JiYgIXN1cGVydXNlcl9hcmcobmV3T3duZXJJZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCQkgZXJy bXNnKCJwZXJtaXNzaW9uIGRlbmllZCB0byBjaGFuZ2Ugb3duZXIgb2YgcHVibGljYXRpb24g XCIlc1wiIiwKKwkJCQkJCQlOYW1lU3RyKGZvcm0tPnB1Ym5hbWUpKSwKKwkJCQkJIGVycmhp bnQoIlRoZSBvd25lciBvZiBhIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9uIG11c3Qg YmUgYSBzdXBlcnVzZXIuIikpKTsKKwogCQlpZiAoIXN1cGVydXNlcl9hcmcobmV3T3duZXJJ ZCkgJiYgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKGZvcm0tPm9pZCkpCiAJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggYWYyN2Q5NmVjZDcuLmYzZDFmM2VjMzkx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs dWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1 ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgogI2lu Y2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCkBAIC0xMDEsNyArMTAyLDggQEAgc3RhdGlj IFJlbGF0aW9uIGxvY2tfYW5kX29wZW5fc2VxdWVuY2UoU2VxVGFibGUgc2VxKTsKIHN0YXRp YyB2b2lkIGNyZWF0ZV9zZXFfaGFzaHRhYmxlKHZvaWQpOwogc3RhdGljIHZvaWQgaW5pdF9z ZXF1ZW5jZShPaWQgcmVsaWQsIFNlcVRhYmxlICpwX2VsbSwgUmVsYXRpb24gKnBfcmVsKTsK IHN0YXRpYyBGb3JtX3BnX3NlcXVlbmNlX2RhdGEgcmVhZF9zZXFfdHVwbGUoUmVsYXRpb24g cmVsLAotCQkJCQkJCQkJCQlCdWZmZXIgKmJ1ZiwgSGVhcFR1cGxlIHNlcWRhdGF0dXBsZSk7 CisJCQkJCQkJCQkJCUJ1ZmZlciAqYnVmLCBIZWFwVHVwbGUgc2VxZGF0YXR1cGxlLAorCQkJ CQkJCQkJCQlYTG9nUmVjUHRyICpsc24pOwogc3RhdGljIHZvaWQgaW5pdF9wYXJhbXMoUGFy c2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcHRpb25zLCBib29sIGZvcl9pZGVudGl0eSwKIAkJ CQkJCWJvb2wgaXNJbml0LAogCQkJCQkJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3JtLApAQCAt Mjg0LDcgKzI4Niw3IEBAIFJlc2V0U2VxdWVuY2UoT2lkIHNlcV9yZWxpZCkKIAkgKiBpbmRl ZWQgYSBzZXF1ZW5jZS4KIAkgKi8KIAlpbml0X3NlcXVlbmNlKHNlcV9yZWxpZCwgJmVsbSwg JnNlcV9yZWwpOwotCSh2b2lkKSByZWFkX3NlcV90dXBsZShzZXFfcmVsLCAmYnVmLCAmc2Vx ZGF0YXR1cGxlKTsKKwkodm9pZCkgcmVhZF9zZXFfdHVwbGUoc2VxX3JlbCwgJmJ1ZiwgJnNl cWRhdGF0dXBsZSwgTlVMTCk7CiAKIAlwZ3N0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShTRVFS RUxJRCwgT2JqZWN0SWRHZXREYXR1bShzZXFfcmVsaWQpKTsKIAlpZiAoIUhlYXBUdXBsZUlz VmFsaWQocGdzdHVwbGUpKQpAQCAtMzQyLDYgKzM0NCwxNjYgQEAgUmVzZXRTZXF1ZW5jZShP aWQgc2VxX3JlbGlkKQogCXJlbGF0aW9uX2Nsb3NlKHNlcV9yZWwsIE5vTG9jayk7CiB9CiAK Ky8qCisgKiBVcGRhdGUgdGhlIHNlcXVlbmNlIHN0YXRlIGJ5IG1vZGlmeWluZyB0aGUgZXhp c3Rpbmcgc2VxdWVuY2UgZGF0YSByb3cuCisgKgorICogVGhpcyBrZWVwcyB0aGUgc2FtZSBy ZWxmaWxlbm9kZSwgc28gdGhlIGJlaGF2aW9yIGlzIG5vbi10cmFuc2FjdGlvbmFsLgorICov CitzdGF0aWMgdm9pZAorU2V0U2VxdWVuY2Vfbm9uX3RyYW5zYWN0aW9uYWwoT2lkIHNlcXJl bGlkLCBpbnQ2NCB2YWx1ZSkKK3sKKwlTZXFUYWJsZQllbG07CisJUmVsYXRpb24Jc2VxcmVs OworCUJ1ZmZlcgkJYnVmOworCUhlYXBUdXBsZURhdGEgc2VxZGF0YXR1cGxlOworCUZvcm1f cGdfc2VxdWVuY2VfZGF0YSBzZXE7CisKKwkvKiBvcGVuIGFuZCBsb2NrIHNlcXVlbmNlICov CisJaW5pdF9zZXF1ZW5jZShzZXFyZWxpZCwgJmVsbSwgJnNlcXJlbCk7CisKKwkvKiBsb2Nr IHBhZ2UnIGJ1ZmZlciBhbmQgcmVhZCB0dXBsZSAqLworCXNlcSA9IHJlYWRfc2VxX3R1cGxl KHNlcXJlbCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSwgTlVMTCk7CisKKwkvKiBjaGVjayB0aGUg Y29tbWVudCBhYm92ZSBuZXh0dmFsX2ludGVybmFsKCkncyBlcXVpdmFsZW50IGNhbGwuICov CisJaWYgKFJlbGF0aW9uTmVlZHNXQUwoc2VxcmVsKSkKKwl7CisJCUdldFRvcFRyYW5zYWN0 aW9uSWQoKTsKKworCQlpZiAoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkpCisJCQlHZXRDdXJy ZW50VHJhbnNhY3Rpb25JZCgpOworCX0KKworCS8qIHJlYWR5IHRvIGNoYW5nZSB0aGUgb24t ZGlzayAob3IgcmVhbGx5LCBpbi1idWZmZXIpIHR1cGxlICovCisJU1RBUlRfQ1JJVF9TRUNU SU9OKCk7CisKKwlzZXEtPmxhc3RfdmFsdWUgPSB2YWx1ZTsKKwlzZXEtPmlzX2NhbGxlZCA9 IHRydWU7CisJc2VxLT5sb2dfY250ID0gMDsKKworCU1hcmtCdWZmZXJEaXJ0eShidWYpOwor CisJLyogWExPRyBzdHVmZiAqLworCWlmIChSZWxhdGlvbk5lZWRzV0FMKHNlcXJlbCkpCisJ eworCQl4bF9zZXFfcmVjCXhscmVjOworCQlYTG9nUmVjUHRyCXJlY3B0cjsKKwkJUGFnZQkJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKKworCQlYTG9nQmVnaW5JbnNlcnQoKTsKKwkJ WExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZiwgUkVHQlVGX1dJTExfSU5JVCk7CisKKwkJeGxy ZWMubG9jYXRvciA9IHNlcXJlbC0+cmRfbG9jYXRvcjsKKworCQlYTG9nUmVnaXN0ZXJEYXRh KChjaGFyICopICZ4bHJlYywgc2l6ZW9mKHhsX3NlcV9yZWMpKTsKKwkJWExvZ1JlZ2lzdGVy RGF0YSgoY2hhciAqKSBzZXFkYXRhdHVwbGUudF9kYXRhLCBzZXFkYXRhdHVwbGUudF9sZW4p OworCisJCS8qIGFsbG93IGZpbHRlcmluZyBieSBvcmlnaW4gb24gYSBzZXF1ZW5jZSB1cGRh dGUgKi8KKwkJWExvZ1NldFJlY29yZEZsYWdzKFhMT0dfSU5DTFVERV9PUklHSU4pOworCisJ CXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fU0VRX0lELCBYTE9HX1NFUV9MT0cpOworCisJCVBh Z2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKKwl9CisKKwlFTkRfQ1JJVF9TRUNUSU9OKCk7CisK KwlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CisKKwkvKiBDbGVhciBsb2NhbCBjYWNoZSBz byB0aGF0IHdlIGRvbid0IHRoaW5rIHdlIGhhdmUgY2FjaGVkIG51bWJlcnMgKi8KKwkvKiBO b3RlIHRoYXQgd2UgZG8gbm90IGNoYW5nZSB0aGUgY3VycnZhbCgpIHN0YXRlICovCisJZWxt LT5jYWNoZWQgPSBlbG0tPmxhc3Q7CisKKwlyZWxhdGlvbl9jbG9zZShzZXFyZWwsIE5vTG9j ayk7Cit9CisKKy8qCisgKiBVcGRhdGUgdGhlIHNlcXVlbmNlIHN0YXRlIGJ5IGNyZWF0aW5n IGEgbmV3IHJlbGZpbGVub2RlLgorICoKKyAqIFRoaXMgY3JlYXRlcyBhIG5ldyByZWxmaWxl bm9kZSwgdG8gYWxsb3cgdHJhbnNhY3Rpb25hbCBiZWhhdmlvci4KKyAqLworc3RhdGljIHZv aWQKK1NldFNlcXVlbmNlX3RyYW5zYWN0aW9uYWwoT2lkIHNlcV9yZWxpZCwgaW50NjQgdmFs dWUpCit7CisJU2VxVGFibGUJZWxtOworCVJlbGF0aW9uCXNlcXJlbDsKKwlCdWZmZXIJCWJ1 ZjsKKwlIZWFwVHVwbGVEYXRhIHNlcWRhdGF0dXBsZTsKKwlGb3JtX3BnX3NlcXVlbmNlX2Rh dGEgc2VxOworCUhlYXBUdXBsZQl0dXBsZTsKKworCS8qIG9wZW4gYW5kIGxvY2sgc2VxdWVu Y2UgKi8KKwlpbml0X3NlcXVlbmNlKHNlcV9yZWxpZCwgJmVsbSwgJnNlcXJlbCk7CisKKwkv KiBsb2NrIHBhZ2UnIGJ1ZmZlciBhbmQgcmVhZCB0dXBsZSAqLworCXNlcSA9IHJlYWRfc2Vx X3R1cGxlKHNlcXJlbCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSwgTlVMTCk7CisKKwkvKiBDb3B5 IHRoZSBleGlzdGluZyBzZXF1ZW5jZSB0dXBsZS4gKi8KKwl0dXBsZSA9IGhlYXBfY29weXR1 cGxlKCZzZXFkYXRhdHVwbGUpOworCisJLyogTm93IHdlJ3JlIGRvbmUgd2l0aCB0aGUgb2xk IHBhZ2UgKi8KKwlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CisKKwkvKgorCSAqIE1vZGlm eSB0aGUgY29waWVkIHR1cGxlIHRvIHVwZGF0ZSB0aGUgc2VxdWVuY2Ugc3RhdGUgKHNpbWls YXIgdG8gd2hhdAorCSAqIFJlc2V0U2VxdWVuY2UgZG9lcykuCisJICovCisJc2VxID0gKEZv cm1fcGdfc2VxdWVuY2VfZGF0YSkgR0VUU1RSVUNUKHR1cGxlKTsKKwlzZXEtPmxhc3RfdmFs dWUgPSB2YWx1ZTsKKwlzZXEtPmlzX2NhbGxlZCA9IHRydWU7CisJc2VxLT5sb2dfY250ID0g MDsKKworCS8qIG1ha2Ugc3VyZSB0aGUgcmVsZmlsZW5vZGUgY3JlYXRpb24gaXMgYXNzb2Np YXRlZCB3aXRoIHRoZSBYSUQgKi8KKwlpZiAoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkpCisJ CUdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CisKKwkvKgorCSAqIENyZWF0ZSBhIG5ldyBz dG9yYWdlIGZpbGUgZm9yIHRoZSBzZXF1ZW5jZSAtIHRoaXMgaXMgbmVlZGVkIGZvciB0aGUK KwkgKiB0cmFuc2FjdGlvbmFsIGJlaGF2aW9yLgorCSAqLworCVJlbGF0aW9uU2V0TmV3UmVs ZmlsZW51bWJlcihzZXFyZWwsIHNlcXJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CisK KwkvKgorCSAqIEVuc3VyZSBzZXF1ZW5jZSdzIHJlbGZyb3plbnhpZCBpcyBhdCAwLCBzaW5j ZSBpdCB3b24ndCBjb250YWluIGFueQorCSAqIHVuZnJvemVuIFhJRHMuICBTYW1lIHdpdGgg cmVsbWlubXhpZCwgc2luY2UgYSBzZXF1ZW5jZSB3aWxsIG5ldmVyCisJICogY29udGFpbiBt dWx0aXhhY3RzLgorCSAqLworCUFzc2VydChzZXFyZWwtPnJkX3JlbC0+cmVsZnJvemVueGlk ID09IEludmFsaWRUcmFuc2FjdGlvbklkKTsKKwlBc3NlcnQoc2VxcmVsLT5yZF9yZWwtPnJl bG1pbm14aWQgPT0gSW52YWxpZE11bHRpWGFjdElkKTsKKworCS8qCisJICogSW5zZXJ0IHRo ZSBtb2RpZmllZCB0dXBsZSBpbnRvIHRoZSBuZXcgc3RvcmFnZSBmaWxlLiBUaGlzIGRvZXMg YWxsIHRoZQorCSAqIG5lY2Vzc2FyeSBXQUwtbG9nZ2luZyBldGMuCisJICovCisJZmlsbF9z ZXFfd2l0aF9kYXRhKHNlcXJlbCwgdHVwbGUpOworCisJLyogQ2xlYXIgbG9jYWwgY2FjaGUg c28gdGhhdCB3ZSBkb24ndCB0aGluayB3ZSBoYXZlIGNhY2hlZCBudW1iZXJzICovCisJLyog Tm90ZSB0aGF0IHdlIGRvIG5vdCBjaGFuZ2UgdGhlIGN1cnJ2YWwoKSBzdGF0ZSAqLworCWVs bS0+Y2FjaGVkID0gZWxtLT5sYXN0OworCisJcmVsYXRpb25fY2xvc2Uoc2VxcmVsLCBOb0xv Y2spOworfQorCisvKgorICogU2V0IGEgc2VxdWVuY2UgdG8gYSBzcGVjaWZpZWQgaW50ZXJu YWwgc3RhdGUuCisgKgorICogVGhlIGNoYW5nZSBpcyBtYWRlIHRyYW5zYWN0aW9uYWxseSwg c28gdGhhdCBvbiBmYWlsdXJlIG9mIHRoZSBjdXJyZW50CisgKiB0cmFuc2FjdGlvbiwgdGhl IHNlcXVlbmNlIHdpbGwgYmUgcmVzdG9yZWQgdG8gaXRzIHByZXZpb3VzIHN0YXRlLgorICog V2UgZG8gdGhhdCBieSBjcmVhdGluZyBhIHdob2xlIG5ldyByZWxmaWxlbm9kZSBmb3IgdGhl IHNlcXVlbmNlOyBzbyB0aGlzCisgKiB3b3JrcyBtdWNoIGxpa2UgdGhlIHJld3JpdGluZyBm b3JtcyBvZiBBTFRFUiBUQUJMRS4KKyAqCisgKiBDYWxsZXIgaXMgYXNzdW1lZCB0byBoYXZl IGFjcXVpcmVkIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgb24gdGhlIHNlcXVlbmNlLAorICogd2hp Y2ggbXVzdCBub3QgYmUgcmVsZWFzZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uLiAgQ2Fs bGVyIGlzIGFsc28KKyAqIHJlc3BvbnNpYmxlIGZvciBwZXJtaXNzaW9ucyBjaGVja2luZy4K KyAqLwordm9pZAorU2V0U2VxdWVuY2UoT2lkIHNlcV9yZWxpZCwgYm9vbCB0cmFuc2FjdGlv bmFsLCBpbnQ2NCB2YWx1ZSkKK3sKKwlpZiAodHJhbnNhY3Rpb25hbCkKKwkJU2V0U2VxdWVu Y2VfdHJhbnNhY3Rpb25hbChzZXFfcmVsaWQsIHZhbHVlKTsKKwllbHNlCisJCVNldFNlcXVl bmNlX25vbl90cmFuc2FjdGlvbmFsKHNlcV9yZWxpZCwgdmFsdWUpOworfQorCiAvKgogICog SW5pdGlhbGl6ZSBhIHNlcXVlbmNlJ3MgcmVsYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIHR1 cGxlIGFzIGNvbnRlbnQKICAqCkBAIC01MDQsNyArNjY2LDcgQEAgQWx0ZXJTZXF1ZW5jZShQ YXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU2VxU3RtdCAqc3RtdCkKIAlzZXFmb3JtID0gKEZv cm1fcGdfc2VxdWVuY2UpIEdFVFNUUlVDVChzZXF0dXBsZSk7CiAKIAkvKiBsb2NrIHBhZ2Ug YnVmZmVyIGFuZCByZWFkIHR1cGxlIGludG8gbmV3IHNlcXVlbmNlIHN0cnVjdHVyZSAqLwot CSh2b2lkKSByZWFkX3NlcV90dXBsZShzZXFyZWwsICZidWYsICZkYXRhdHVwbGUpOworCSh2 b2lkKSByZWFkX3NlcV90dXBsZShzZXFyZWwsICZidWYsICZkYXRhdHVwbGUsIE5VTEwpOwog CiAJLyogY29weSB0aGUgZXhpc3Rpbmcgc2VxdWVuY2UgZGF0YSB0dXBsZSwgc28gaXQgY2Fu IGJlIG1vZGlmaWVkIGxvY2FsbHkgKi8KIAluZXdkYXRhdHVwbGUgPSBoZWFwX2NvcHl0dXBs ZSgmZGF0YXR1cGxlKTsKQEAgLTU5OCw3ICs3NjAsNyBAQCBTZXF1ZW5jZUNoYW5nZVBlcnNp c3RlbmNlKE9pZCByZWxpZCwgY2hhciBuZXdyZWxwZXJzaXN0ZW5jZSkKIAkJCUdldEN1cnJl bnRUcmFuc2FjdGlvbklkKCk7CiAJfQogCi0JKHZvaWQpIHJlYWRfc2VxX3R1cGxlKHNlcXJl bCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSk7CisJKHZvaWQpIHJlYWRfc2VxX3R1cGxlKHNlcXJl bCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSwgTlVMTCk7CiAJUmVsYXRpb25TZXROZXdSZWxmaWxl bnVtYmVyKHNlcXJlbCwgbmV3cmVscGVyc2lzdGVuY2UpOwogCWZpbGxfc2VxX3dpdGhfZGF0 YShzZXFyZWwsICZzZXFkYXRhdHVwbGUpOwogCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmKTsK QEAgLTcyNyw3ICs4ODksNyBAQCBuZXh0dmFsX2ludGVybmFsKE9pZCByZWxpZCwgYm9vbCBj aGVja19wZXJtaXNzaW9ucykKIAlSZWxlYXNlU3lzQ2FjaGUocGdzdHVwbGUpOwogCiAJLyog bG9jayBwYWdlIGJ1ZmZlciBhbmQgcmVhZCB0dXBsZSAqLwotCXNlcSA9IHJlYWRfc2VxX3R1 cGxlKHNlcXJlbCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSk7CisJc2VxID0gcmVhZF9zZXFfdHVw bGUoc2VxcmVsLCAmYnVmLCAmc2VxZGF0YXR1cGxlLCBOVUxMKTsKIAlwYWdlID0gQnVmZmVy R2V0UGFnZShidWYpOwogCiAJZWxtLT5pbmNyZW1lbnQgPSBpbmNieTsKQEAgLTEwNTAsNyAr MTIxMiw3IEBAIGRvX3NldHZhbChPaWQgcmVsaWQsIGludDY0IG5leHQsIGJvb2wgaXNjYWxs ZWQpCiAJUHJldmVudENvbW1hbmRJZlBhcmFsbGVsTW9kZSgic2V0dmFsKCkiKTsKIAogCS8q IGxvY2sgcGFnZSBidWZmZXIgYW5kIHJlYWQgdHVwbGUgKi8KLQlzZXEgPSByZWFkX3NlcV90 dXBsZShzZXFyZWwsICZidWYsICZzZXFkYXRhdHVwbGUpOworCXNlcSA9IHJlYWRfc2VxX3R1 cGxlKHNlcXJlbCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSwgTlVMTCk7CiAKIAlpZiAoKG5leHQg PCBtaW52KSB8fCAobmV4dCA+IG1heHYpKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTI3MCwx MSArMTQzMiwxMyBAQCBpbml0X3NlcXVlbmNlKE9pZCByZWxpZCwgU2VxVGFibGUgKnBfZWxt LCBSZWxhdGlvbiAqcF9yZWwpCiAgKiAqYnVmIHJlY2VpdmVzIHRoZSByZWZlcmVuY2UgdG8g dGhlIHBpbm5lZC1hbmQtZXgtbG9ja2VkIGJ1ZmZlcgogICogKnNlcWRhdGF0dXBsZSByZWNl aXZlcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzZXF1ZW5jZSB0dXBsZSBwcm9wZXIKICAqCQko dGhpcyBhcmcgc2hvdWxkIHBvaW50IHRvIGEgbG9jYWwgdmFyaWFibGUgb2YgdHlwZSBIZWFw VHVwbGVEYXRhKQorICogKmxzbiByZWNlaXZlcyBMU04gb2YgdGhlIGxhc3Qgc2VxdWVuY2Ug Y2hhbmdlIChwYWdlIExTTiksIG9wdGlvbmFsCiAgKgogICogRnVuY3Rpb24ncyByZXR1cm4g dmFsdWUgcG9pbnRzIHRvIHRoZSBkYXRhIHBheWxvYWQgb2YgdGhlIHR1cGxlCiAgKi8KIHN0 YXRpYyBGb3JtX3BnX3NlcXVlbmNlX2RhdGEKLXJlYWRfc2VxX3R1cGxlKFJlbGF0aW9uIHJl bCwgQnVmZmVyICpidWYsIEhlYXBUdXBsZSBzZXFkYXRhdHVwbGUpCityZWFkX3NlcV90dXBs ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciAqYnVmLCBIZWFwVHVwbGUgc2VxZGF0YXR1cGxlLAor CQkJICAgWExvZ1JlY1B0ciAqbHNuKQogewogCVBhZ2UJCXBhZ2U7CiAJSXRlbUlkCQlscDsK QEAgLTEyOTEsNiArMTQ1NSwxMyBAQCByZWFkX3NlcV90dXBsZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciAqYnVmLCBIZWFwVHVwbGUgc2VxZGF0YXR1cGxlKQogCQllbG9nKEVSUk9SLCAiYmFk IG1hZ2ljIG51bWJlciBpbiBzZXF1ZW5jZSBcIiVzXCI6ICUwOFgiLAogCQkJIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCksIHNtLT5tYWdpYyk7CiAKKwkvKgorCSAqIElmIHRoZSBj YWxsZXIgcmVxdWVzdGVkIGl0LCBzZXQgdGhlIHBhZ2UgTFNOLiBUaGlzIGFsbG93cyBkZWNp ZGluZworCSAqIHdoaWNoIHNlcXVlbmNlIGNoYW5nZXMgYXJlIGJlZm9yZS9hZnRlciB0aGUg cmV0dXJuZWQgc2VxdWVuY2Ugc3RhdGUuCisJICovCisJaWYgKGxzbikKKwkJKmxzbiA9IFBh Z2VHZXRMU04ocGFnZSk7CisKIAlscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgRmlyc3RPZmZz ZXROdW1iZXIpOwogCUFzc2VydChJdGVtSWRJc05vcm1hbChscCkpOwogCkBAIC0xODg2LDcg KzIwNTcsNyBAQCBwZ19zZXF1ZW5jZV9sYXN0X3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQkJIGVycm1zZygicGVybWlzc2lvbiBkZW5pZWQgZm9yIHNlcXVlbmNlICVzIiwKIAkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHNlcXJlbCkpKSk7CiAKLQlzZXEgPSByZWFkX3Nl cV90dXBsZShzZXFyZWwsICZidWYsICZzZXF0dXBsZSk7CisJc2VxID0gcmVhZF9zZXFfdHVw bGUoc2VxcmVsLCAmYnVmLCAmc2VxdHVwbGUsIE5VTEwpOwogCiAJaXNfY2FsbGVkID0gc2Vx LT5pc19jYWxsZWQ7CiAJcmVzdWx0ID0gc2VxLT5sYXN0X3ZhbHVlOwpAQCAtMTkwMCw2ICsy MDcxLDY3IEBAIHBnX3NlcXVlbmNlX2xhc3RfdmFsdWUoUEdfRlVOQ1RJT05fQVJHUykKIAkJ UEdfUkVUVVJOX05VTEwoKTsKIH0KIAorLyoKKyAqIFJldHVybiB0aGUgY3VycmVudCBvbi1k aXNrIHN0YXRlIG9mIHRoZSBzZXF1ZW5jZS4KKyAqCisgKiBOb3RlOiBUaGlzIGlzIHJvdWdo bHkgZXF1aXZhbGVudCB0byBzZWxlY3RpbmcgdGhlIGRhdGEgZnJvbSB0aGUgc2VxdWVuY2Us CisgKiBleGNlcHQgdGhhdCBpdCBhbHNvIHJldHVybnMgdGhlIHBhZ2UgTFNOLgorICovCitE YXR1bQorcGdfc2VxdWVuY2Vfc3RhdGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQly ZWxpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJU2VxVGFibGUJZWxtOworCVJlbGF0aW9uCXNl cXJlbDsKKwlCdWZmZXIJCWJ1ZjsKKwlIZWFwVHVwbGVEYXRhIHNlcXR1cGxlOworCUZvcm1f cGdfc2VxdWVuY2VfZGF0YSBzZXE7CisJRGF0dW0JCXJlc3VsdDsKKworCWludDY0CQlsYXN0 X3ZhbHVlOworCWludDY0CQlsb2dfY250OworCWJvb2wJCWlzX2NhbGxlZDsKKwlYTG9nUmVj UHRyCWxzbjsKKworCVR1cGxlRGVzYwl0dXBkZXNjOworCUhlYXBUdXBsZQl0dXBsZTsKKwlE YXR1bQkJdmFsdWVzWzRdOworCWJvb2wJCW51bGxzWzRdOworCisJaWYgKGdldF9jYWxsX3Jl c3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBPU0lU RSkKKwkJZWxvZyhFUlJPUiwgInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOwor CisJLyogb3BlbiBhbmQgbG9jayBzZXF1ZW5jZSAqLworCWluaXRfc2VxdWVuY2UocmVsaWQs ICZlbG0sICZzZXFyZWwpOworCisJaWYgKHBnX2NsYXNzX2FjbGNoZWNrKGVsbS0+cmVsaWQs IEdldFVzZXJJZCgpLAorCQkJCQkJICBBQ0xfU0VMRUNUIHwgQUNMX1VTQUdFKSAhPSBBQ0xD SEVDS19PSykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VG RklDSUVOVF9QUklWSUxFR0UpLAorCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkIGZv ciBzZXF1ZW5jZSAlcyIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzZXFyZWwp KSkpOworCisJc2VxID0gcmVhZF9zZXFfdHVwbGUoc2VxcmVsLCAmYnVmLCAmc2VxdHVwbGUs ICZsc24pOworCisJaXNfY2FsbGVkID0gc2VxLT5pc19jYWxsZWQ7CisJbGFzdF92YWx1ZSA9 IHNlcS0+bGFzdF92YWx1ZTsKKwlsb2dfY250ID0gc2VxLT5sb2dfY250OworCisJVW5sb2Nr UmVsZWFzZUJ1ZmZlcihidWYpOworCXJlbGF0aW9uX2Nsb3NlKHNlcXJlbCwgTm9Mb2NrKTsK KworCXZhbHVlc1swXSA9IExTTkdldERhdHVtKGxzbik7CisJdmFsdWVzWzFdID0gSW50NjRH ZXREYXR1bShsYXN0X3ZhbHVlKTsKKwl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKGxvZ19j bnQpOworCXZhbHVlc1szXSA9IEJvb2xHZXREYXR1bShpc19jYWxsZWQpOworCisJbWVtc2V0 KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKKworCXR1cGxlID0gaGVhcF9mb3JtX3R1cGxl KHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOworCXJlc3VsdCA9IEhlYXBUdXBsZUdldERhdHVt KHR1cGxlKTsKKworCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQpOworfQogCiB2b2lkCiBzZXFf cmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYwppbmRleCA3NWU2Y2Q4YWUzYy4uMTQ0NjA5YzFiOWYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTEwMCw2ICsxMDAs NyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiB9IFN1Yk9wdHM7CiAKIHN0YXRpYyBMaXN0 ICpmZXRjaF90YWJsZV9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpwdWJs aWNhdGlvbnMpOworc3RhdGljIExpc3QgKmZldGNoX3NlcXVlbmNlX2xpc3QoV2FsUmVjZWl2 ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucyk7CiBzdGF0aWMgdm9pZCBjaGVj a19wdWJsaWNhdGlvbnNfb3JpZ2luKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLAogCQkJCQkJ CQkJICBMaXN0ICpwdWJsaWNhdGlvbnMsIGJvb2wgY29weWRhdGEsCiAJCQkJCQkJCQkgIGNo YXIgKm9yaWdpbiwgT2lkICpzdWJyZWxfbG9jYWxfb2lkcywKQEAgLTczMCw5ICs3MzEsOSBA QCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3Jp cHRpb25TdG10ICpzdG10LAogCXsKIAkJY2hhcgkgICAqZXJyOwogCQlXYWxSZWNlaXZlckNv bm4gKndyY29ubjsKLQkJTGlzdAkgICAqdGFibGVzOworCQlMaXN0CSAgICpyZWxhdGlvbnM7 CiAJCUxpc3RDZWxsICAgKmxjOwotCQljaGFyCQl0YWJsZV9zdGF0ZTsKKwkJY2hhcgkJc3lu Y19zdGF0ZTsKIAkJYm9vbAkJbXVzdF91c2VfcGFzc3dvcmQ7CiAKIAkJLyogVHJ5IHRvIGNv bm5lY3QgdG8gdGhlIHB1Ymxpc2hlci4gKi8KQEAgLTc1NCwxNCArNzU1LDE3IEBAIENyZWF0 ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0 bXQgKnN0bXQsCiAJCQkgKiBTZXQgc3luYyBzdGF0ZSBiYXNlZCBvbiBpZiB3ZSB3ZXJlIGFz a2VkIHRvIGRvIGRhdGEgY29weSBvcgogCQkJICogbm90LgogCQkJICovCi0JCQl0YWJsZV9z dGF0ZSA9IG9wdHMuY29weV9kYXRhID8gU1VCUkVMX1NUQVRFX0lOSVQgOiBTVUJSRUxfU1RB VEVfUkVBRFk7CisJCQlzeW5jX3N0YXRlID0gb3B0cy5jb3B5X2RhdGEgPyBTVUJSRUxfU1RB VEVfSU5JVCA6IFNVQlJFTF9TVEFURV9SRUFEWTsKIAogCQkJLyoKLQkJCSAqIEdldCB0aGUg dGFibGUgbGlzdCBmcm9tIHB1Ymxpc2hlciBhbmQgYnVpbGQgbG9jYWwgdGFibGUgc3RhdHVz Ci0JCQkgKiBpbmZvLgorCQkJICogR2V0IHRoZSB0YWJsZSBhbmQgc2VxdWVuY2UgbGlzdCBm cm9tIHB1Ymxpc2hlciBhbmQgYnVpbGQgbG9jYWwKKwkJCSAqIHJlbGF0aW9uIHN5bmMgc3Rh dHVzIGluZm8uCiAJCQkgKi8KLQkJCXRhYmxlcyA9IGZldGNoX3RhYmxlX2xpc3Qod3Jjb25u LCBwdWJsaWNhdGlvbnMpOwotCQkJZm9yZWFjaChsYywgdGFibGVzKQorCQkJcmVsYXRpb25z ID0gZmV0Y2hfdGFibGVfbGlzdCh3cmNvbm4sIHB1YmxpY2F0aW9ucyk7CisJCQlyZWxhdGlv bnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMsCisJCQkJCQkJCQlmZXRjaF9zZXF1ZW5jZV9s aXN0KHdyY29ubiwgcHVibGljYXRpb25zKSk7CisKKwkJCWZvcmVhY2gobGMsIHJlbGF0aW9u cykKIAkJCXsKIAkJCQlSYW5nZVZhciAgICpydiA9IChSYW5nZVZhciAqKSBsZmlyc3QobGMp OwogCQkJCU9pZAkJCXJlbGlkOwpAQCAtNzcyLDcgKzc3Niw3IEBAIENyZWF0ZVN1YnNjcmlw dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQs CiAJCQkJQ2hlY2tTdWJzY3JpcHRpb25SZWxraW5kKGdldF9yZWxfcmVsa2luZChyZWxpZCks CiAJCQkJCQkJCQkJIHJ2LT5zY2hlbWFuYW1lLCBydi0+cmVsbmFtZSk7CiAKLQkJCQlBZGRT dWJzY3JpcHRpb25SZWxTdGF0ZShzdWJpZCwgcmVsaWQsIHRhYmxlX3N0YXRlLAorCQkJCUFk ZFN1YnNjcmlwdGlvblJlbFN0YXRlKHN1YmlkLCByZWxpZCwgc3luY19zdGF0ZSwKIAkJCQkJ CQkJCQlJbnZhbGlkWExvZ1JlY1B0ciwgdHJ1ZSk7CiAJCQl9CiAKQEAgLTc5OCwxMiArODAy LDEyIEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJICoKIAkJCQkgKiBOb3RlIHRoYXQgaWYgdGFi bGVzIHdlcmUgc3BlY2lmaWVkIGJ1dCBjb3B5X2RhdGEgaXMgZmFsc2UKIAkJCQkgKiB0aGVu IGl0IGlzIHNhZmUgdG8gZW5hYmxlIHR3b19waGFzZSB1cC1mcm9udCBiZWNhdXNlIHRob3Nl Ci0JCQkJICogdGFibGVzIGFyZSBhbHJlYWR5IGluaXRpYWxseSBpbiBSRUFEWSBzdGF0ZS4g V2hlbiB0aGUKLQkJCQkgKiBzdWJzY3JpcHRpb24gaGFzIG5vIHRhYmxlcywgd2UgbGVhdmUg dGhlIHR3b3BoYXNlIHN0YXRlIGFzCi0JCQkJICogUEVORElORywgdG8gYWxsb3cgQUxURVIg U1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNICisJCQkJICogcmVsYXRpb25zIGFyZSBhbHJlYWR5 IGluaXRpYWxseSBpbiBSRUFEWSBzdGF0ZS4gV2hlbiB0aGUKKwkJCQkgKiBzdWJzY3JpcHRp b24gaGFzIG5vIHJlbGF0aW9ucywgd2UgbGVhdmUgdGhlIHR3b3BoYXNlIHN0YXRlCisJCQkJ ICogYXMgUEVORElORywgdG8gYWxsb3cgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNI CiAJCQkJICogUFVCTElDQVRJT04gdG8gd29yay4KIAkJCQkgKi8KLQkJCQlpZiAob3B0cy50 d29waGFzZSAmJiAhb3B0cy5jb3B5X2RhdGEgJiYgdGFibGVzICE9IE5JTCkKKwkJCQlpZiAo b3B0cy50d29waGFzZSAmJiAhb3B0cy5jb3B5X2RhdGEgJiYgcmVsYXRpb25zICE9IE5JTCkK IAkJCQkJdHdvcGhhc2VfZW5hYmxlZCA9IHRydWU7CiAKIAkJCQl3YWxyY3ZfY3JlYXRlX3Ns b3Qod3Jjb25uLCBvcHRzLnNsb3RfbmFtZSwgZmFsc2UsIHR3b3BoYXNlX2VuYWJsZWQsCkBA IC04ODIsOCArODg2LDEwIEBAIEFsdGVyU3Vic2NyaXB0aW9uX3JlZnJlc2goU3Vic2NyaXB0 aW9uICpzdWIsIGJvb2wgY29weV9kYXRhLAogCQlpZiAodmFsaWRhdGVfcHVibGljYXRpb25z KQogCQkJY2hlY2tfcHVibGljYXRpb25zKHdyY29ubiwgdmFsaWRhdGVfcHVibGljYXRpb25z KTsKIAotCQkvKiBHZXQgdGhlIHRhYmxlIGxpc3QgZnJvbSBwdWJsaXNoZXIuICovCisJCS8q IEdldCB0aGUgbGlzdCBvZiByZWxhdGlvbnMgZnJvbSBwdWJsaXNoZXIuICovCiAJCXB1YnJl bF9uYW1lcyA9IGZldGNoX3RhYmxlX2xpc3Qod3Jjb25uLCBzdWItPnB1YmxpY2F0aW9ucyk7 CisJCXB1YnJlbF9uYW1lcyA9IGxpc3RfY29uY2F0KHB1YnJlbF9uYW1lcywKKwkJCQkJCQkJ ICAgZmV0Y2hfc2VxdWVuY2VfbGlzdCh3cmNvbm4sIHN1Yi0+cHVibGljYXRpb25zKSk7CiAK IAkJLyogR2V0IGxvY2FsIHRhYmxlIGxpc3QuICovCiAJCXN1YnJlbF9zdGF0ZXMgPSBHZXRT dWJzY3JpcHRpb25SZWxhdGlvbnMoc3ViLT5vaWQsIGZhbHNlKTsKQEAgLTIxNTMsNiArMjE1 OSw3NSBAQCBmZXRjaF90YWJsZV9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0 ICpwdWJsaWNhdGlvbnMpCiAJcmV0dXJuIHRhYmxlbGlzdDsKIH0KIAorLyoKKyAqIEdldCB0 aGUgbGlzdCBvZiBzZXF1ZW5jZXMgd2hpY2ggYmVsb25nIHRvIHNwZWNpZmllZCBwdWJsaWNh dGlvbnMgb24gdGhlCisgKiBwdWJsaXNoZXIgY29ubmVjdGlvbi4KKyAqLworc3RhdGljIExp c3QgKgorZmV0Y2hfc2VxdWVuY2VfbGlzdChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlz dCAqcHVibGljYXRpb25zKQoreworCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKKwlTdHJpbmdJ bmZvRGF0YSBjbWQ7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJT2lkCQkJdGFibGVSb3db Ml0gPSB7VEVYVE9JRCwgVEVYVE9JRH07CisJTGlzdENlbGwgICAqbGM7CisJYm9vbAkJZmly c3Q7CisJTGlzdAkgICAqdGFibGVsaXN0ID0gTklMOworCisJQXNzZXJ0KGxpc3RfbGVuZ3Ro KHB1YmxpY2F0aW9ucykgPiAwKTsKKworCWluaXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIlNFTEVDVCBESVNUSU5DVCBzLnNjaGVtYW5hbWUs IHMuc2VxdWVuY2VuYW1lXG4iCisJCQkJCQkgICAiICBGUk9NIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb25fc2VxdWVuY2VzIHNcbiIKKwkJCQkJCSAgICIgV0hFUkUgcy5wdWJuYW1lIElO ICgiKTsKKwlmaXJzdCA9IHRydWU7CisJZm9yZWFjaChsYywgcHVibGljYXRpb25zKQorCXsK KwkJY2hhcgkgICAqcHVibmFtZSA9IHN0clZhbChsZmlyc3QobGMpKTsKKworCQlpZiAoZmly c3QpCisJCQlmaXJzdCA9IGZhbHNlOworCQllbHNlCisJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZjbWQsICIsICIpOworCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgcXVv dGVfbGl0ZXJhbF9jc3RyKHB1Ym5hbWUpKTsKKwl9CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIo JmNtZCwgJyknKTsKKworCXJlcyA9IHdhbHJjdl9leGVjKHdyY29ubiwgY21kLmRhdGEsIDIs IHRhYmxlUm93KTsKKwlwZnJlZShjbWQuZGF0YSk7CisKKwlpZiAocmVzLT5zdGF0dXMgIT0g V0FMUkNWX09LX1RVUExFUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3Vs ZCBub3QgcmVjZWl2ZSBsaXN0IG9mIHJlcGxpY2F0ZWQgc2VxdWVuY2VzIGZyb20gdGhlIHB1 Ymxpc2hlcjogJXMiLAorCQkJCQkJcmVzLT5lcnIpKSk7CisKKwkvKiBQcm9jZXNzIHNlcXVl bmNlcy4gKi8KKwlzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHJlcy0+dHVwbGVk ZXNjLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsKKwl3aGlsZSAodHVwbGVzdG9yZV9nZXR0dXBs ZXNsb3QocmVzLT50dXBsZXN0b3JlLCB0cnVlLCBmYWxzZSwgc2xvdCkpCisJeworCQljaGFy CSAgICpuc3BuYW1lOworCQljaGFyCSAgICpyZWxuYW1lOworCQlib29sCQlpc251bGw7CisJ CVJhbmdlVmFyICAgKnJ2OworCisJCW5zcG5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHNs b3RfZ2V0YXR0cihzbG90LCAxLCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsKKwkJ cmVsbmFtZSA9IFRleHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRhdHRyKHNsb3QsIDIsICZp c251bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCisJCXJ2ID0gbWFrZVJhbmdlVmFyKG5z cG5hbWUsIHJlbG5hbWUsIC0xKTsKKwkJdGFibGVsaXN0ID0gbGFwcGVuZCh0YWJsZWxpc3Qs IHJ2KTsKKworCQlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKwl9CisJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChzbG90KTsKKworCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKKwor CXJldHVybiB0YWJsZWxpc3Q7Cit9CisKIC8qCiAgKiBUaGlzIGlzIHRvIHJlcG9ydCB0aGUg Y29ubmVjdGlvbiBmYWlsdXJlIHdoaWxlIGRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3RzLgog ICogSGVyZSwgd2UgcmVwb3J0IHRoZSBXQVJOSU5HIGZvciBhbGwgdGFibGVzeW5jIHNsb3Rz IHNvIHRoYXQgdXNlciBjYW4gZHJvcApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGlj YXRpb24uYwppbmRleCBmZjhhN2Y3N2Y1ZC4uZGViZTkyZjk2YjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCkBAIC03NDUsNyArNzQ1LDkgQEAgdm9pZAog Q2hlY2tTdWJzY3JpcHRpb25SZWxraW5kKGNoYXIgcmVsa2luZCwgY29uc3QgY2hhciAqbnNw bmFtZSwKIAkJCQkJCSBjb25zdCBjaGFyICpyZWxuYW1lKQogewotCWlmIChyZWxraW5kICE9 IFJFTEtJTkRfUkVMQVRJT04gJiYgcmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQorCWlmIChyZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKKwkJcmVsa2luZCAh PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFICYmCisJCXJlbGtpbmQgIT0gUkVMS0lORF9T RVFVRU5DRSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05H X09CSkVDVF9UWVBFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHJlbGF0aW9uIFwiJXMu JXNcIiBhcyBsb2dpY2FsIHJlcGxpY2F0aW9uIHRhcmdldCIsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRl eCA2Yjg4MDk2ZThlMS4uMDM3YmZjNmI2ZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNDUyLDcg KzQ1Miw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJdHJhbnNmb3JtX2Vs ZW1lbnRfbGlzdCB0cmFuc2Zvcm1fdHlwZV9saXN0CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25z IFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1 dW1fcmVsYXRpb25fbGlzdAotCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0CisJ CQkJZHJvcF9vcHRpb25fbGlzdCBwdWJfb2JqX2xpc3QgcHViX29ial90eXBlX2xpc3QKIAog JXR5cGUgPG5vZGU+CW9wdF9yb3V0aW5lX2JvZHkKICV0eXBlIDxncm91cGNsYXVzZT4gZ3Jv dXBfY2xhdXNlCkBAIC01ODYsNiArNTg2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92YWx1ZQogJXR5cGUgPHJvbGVzcGVj PiBhdXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAldHlwZSA8cHVibGljYXRp b25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKKyV0eXBlIDxub2RlPglwdWJfb2Jq X3R5cGUKIAogJXR5cGUgPGtleXdvcmQ+IHVucmVzZXJ2ZWRfa2V5d29yZCB0eXBlX2Z1bmNf bmFtZV9rZXl3b3JkCiAldHlwZSA8a2V5d29yZD4gY29sX25hbWVfa2V5d29yZCByZXNlcnZl ZF9rZXl3b3JkCkBAIC0xMDQzNywxMiArMTA0MzgsMTYgQEAgQWx0ZXJPd25lclN0bXQ6IEFM VEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3Bl YwogICoKICAqIENSRUFURSBQVUJMSUNBVElPTiBGT1IgQUxMIFRBQkxFUyBbV0lUSCBvcHRp b25zXQogICoKKyAqIENSRUFURSBQVUJMSUNBVElPTiBGT1IgQUxMIFNFUVVFTkNFUyBbV0lU SCBvcHRpb25zXQorICoKICAqIENSRUFURSBQVUJMSUNBVElPTiBGT1IgcHViX29iaiBbLCAu Li5dIFtXSVRIIG9wdGlvbnNdCiAgKgogICogcHViX29iaiBpcyBvbmUgb2Y6CiAgKgogICoJ CVRBQkxFIHRhYmxlIFssIC4uLl0KKyAqCQlTRVFVRU5DRSB0YWJsZSBbLCAuLi5dCiAgKgkJ VEFCTEVTIElOIFNDSEVNQSBzY2hlbWEgWywgLi4uXQorICoJCVNFUVVFTkNFUyBJTiBTQ0hF TUEgc2NoZW1hIFssIC4uLl0KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKQEAg LTEwNDU1LDEzICsxMDQ2MCwxMyBAQCBDcmVhdGVQdWJsaWNhdGlvblN0bXQ6CiAJCQkJCW4t Pm9wdGlvbnMgPSAkNDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KLQkJCXwgQ1JF QVRFIFBVQkxJQ0FUSU9OIG5hbWUgRk9SIEFMTCBUQUJMRVMgb3B0X2RlZmluaXRpb24KKwkJ CXwgQ1JFQVRFIFBVQkxJQ0FUSU9OIG5hbWUgRk9SIEFMTCBwdWJfb2JqX3R5cGVfbGlzdCBv cHRfZGVmaW5pdGlvbgogCQkJCXsKIAkJCQkJQ3JlYXRlUHVibGljYXRpb25TdG10ICpuID0g bWFrZU5vZGUoQ3JlYXRlUHVibGljYXRpb25TdG10KTsKIAogCQkJCQluLT5wdWJuYW1lID0g JDM7CiAJCQkJCW4tPm9wdGlvbnMgPSAkNzsKLQkJCQkJbi0+Zm9yX2FsbF90YWJsZXMgPSB0 cnVlOworCQkJCQluLT5mb3JfYWxsX29iamVjdHMgPSAkNjsKIAkJCQkJJCQgPSAoTm9kZSAq KSBuOwogCQkJCX0KIAkJCXwgQ1JFQVRFIFBVQkxJQ0FUSU9OIG5hbWUgRk9SIHB1Yl9vYmpf bGlzdCBvcHRfZGVmaW5pdGlvbgpAQCAtMTA1MTIsNiArMTA1MTcsMjYgQEAgUHVibGljYXRp b25PYmpTcGVjOgogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxF U19JTl9DVVJfU0NIRU1BOwogCQkJCQkkJC0+bG9jYXRpb24gPSBANDsKIAkJCQl9CisJCQl8 IFNFUVVFTkNFIHJlbGF0aW9uX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVi bGljYXRpb25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9C Sl9TRVFVRU5DRTsKKwkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25U YWJsZSk7CisJCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMjsKKwkJCQl9CisJCQl8 IFNFUVVFTkNFUyBJTl9QIFNDSEVNQSBDb2xJZAorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9k ZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FU SU9OT0JKX1NFUVVFTkNFU19JTl9TQ0hFTUE7CisJCQkJCSQkLT5uYW1lID0gJDQ7CisJCQkJ CSQkLT5sb2NhdGlvbiA9IEA0OworCQkJCX0KKwkJCXwgU0VRVUVOQ0VTIElOX1AgU0NIRU1B IENVUlJFTlRfU0NIRU1BCisJCQkJeworCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9u T2JqU3BlYyk7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfU0VRVUVO Q0VTX0lOX0NVUl9TQ0hFTUE7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEA0OworCQkJCX0KIAkJ CXwgQ29sSWQgb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlCiAJCQkJewogCQkJCQkk JCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CkBAIC0xMDU3Myw2ICsxMDU5OCwx OSBAQCBwdWJfb2JqX2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFw cGVuZCgkMSwgJDMpOyB9CiAJOwogCitwdWJfb2JqX3R5cGU6CVRBQkxFUworCQkJCQl7ICQk ID0gKE5vZGUgKikgbWFrZVN0cmluZygidGFibGVzIik7IH0KKwkJCQl8IFNFUVVFTkNFUwor CQkJCQl7ICQkID0gKE5vZGUgKikgbWFrZVN0cmluZygic2VxdWVuY2VzIik7IH0KKwk7CisK K3B1Yl9vYmpfdHlwZV9saXN0OglwdWJfb2JqX3R5cGUKKwkJCQkJeyAkJCA9IGxpc3RfbWFr ZTEoJDEpOyB9CisJCQkJfCBwdWJfb2JqX3R5cGVfbGlzdCAnLCcgcHViX29ial90eXBlCisJ CQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwk7CisKKwogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCiAgKgogICogQUxURVIgUFVCTElDQVRJT04gbmFtZSBTRVQgKCBvcHRpb25z ICkKQEAgLTEwNTg2LDcgKzEwNjI0LDkgQEAgcHViX29ial9saXN0OglQdWJsaWNhdGlvbk9i alNwZWMKICAqIHB1Yl9vYmogaXMgb25lIG9mOgogICoKICAqCQlUQUJMRSB0YWJsZV9uYW1l IFssIC4uLl0KKyAqCQlTRVFVRU5DRSB0YWJsZV9uYW1lIFssIC4uLl0KICAqCQlUQUJMRVMg SU4gU0NIRU1BIHNjaGVtYV9uYW1lIFssIC4uLl0KKyAqCQlTRVFVRU5DRVMgSU4gU0NIRU1B IHNjaGVtYV9uYW1lIFssIC4uLl0KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAK QEAgLTE4OTYzLDcgKzE5MDAzLDggQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpw dWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQlpZiAocHVib2Jq LT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTikKIAkJCXB1Ym9i ai0+cHVib2JqdHlwZSA9IHByZXZvYmp0eXBlOwogCi0JCWlmIChwdWJvYmotPnB1Ym9ianR5 cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEUpCisJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUg PT0gUFVCTElDQVRJT05PQkpfVEFCTEUgfHwKKwkJCXB1Ym9iai0+cHVib2JqdHlwZSA9PSBQ VUJMSUNBVElPTk9CSl9TRVFVRU5DRSkKIAkJewogCQkJLyogcmVsYXRpb24gbmFtZSBvciBw dWJ0YWJsZSBtdXN0IGJlIHNldCBmb3IgdGhpcyB0eXBlIG9mIG9iamVjdCAqLwogCQkJaWYg KCFwdWJvYmotPm5hbWUgJiYgIXB1Ym9iai0+cHVidGFibGUpCkBAIC0xOTAxNCw2ICsxOTA1 NSwzMCBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwg Y29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQkJCQllcnJtc2coImludmFsaWQgc2NoZW1h IG5hbWUiKSwKIAkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwdWJvYmotPmxvY2F0aW9uKSk7 CiAJCX0KKwkJZWxzZSBpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JK X1NFUVVFTkNFU19JTl9TQ0hFTUEgfHwKKwkJCQkgcHVib2JqLT5wdWJvYmp0eXBlID09IFBV QkxJQ0FUSU9OT0JKX1NFUVVFTkNFU19JTl9DVVJfU0NIRU1BKQorCQl7CisJCQkvKiBXSEVS RSBjbGF1c2UgaXMgbm90IGFsbG93ZWQgb24gYSBzY2hlbWEgb2JqZWN0ICovCisJCQlpZiAo cHVib2JqLT5wdWJ0YWJsZSAmJiBwdWJvYmotPnB1YnRhYmxlLT53aGVyZUNsYXVzZSkKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkJCQllcnJtc2coIldIRVJFIGNsYXVzZSBub3QgYWxsb3dlZCBmb3Igc2NoZW1hIiks CisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlvbikpOworCisJCQkv KgorCQkJICogV2UgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIGRpZmZlcmVudCB0eXBl IG9mIHNjaGVtYQorCQkJICogb2JqZWN0cyBiYXNlZCBvbiB3aGV0aGVyIG5hbWUgYW5kIHB1 YnRhYmxlIGlzIHNldC4KKwkJCSAqLworCQkJaWYgKHB1Ym9iai0+bmFtZSkKKwkJCQlwdWJv YmotPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNfSU5fU0NIRU1BOwor CQkJZWxzZSBpZiAoIXB1Ym9iai0+bmFtZSAmJiAhcHVib2JqLT5wdWJ0YWJsZSkKKwkJCQlw dWJvYmotPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNfSU5fQ1VSX1ND SEVNQTsKKwkJCWVsc2UKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJtc2coImludmFsaWQgc2NoZW1hIG5hbWUg YXQgb3IgbmVhciIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRp b24pKTsKKwkJfQogCiAJCXByZXZvYmp0eXBlID0gcHVib2JqLT5wdWJvYmp0eXBlOwogCX0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBmMjczMDA1 YzE1ZC4uYTk4Mjk2ZjY2N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Byb3RvLmMKQEAgLTY2Myw2ICs2NjMsNTkgQEAgbG9naWNhbHJlcF93cml0ZV9tZXNzYWdl KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCiAJ cHFfc2VuZGJ5dGVzKG91dCwgbWVzc2FnZSwgc3opOwogfQogCisvKgorICogV3JpdGUgU0VR VUVOQ0UgdG8gc3RyZWFtCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd3JpdGVfc2VxdWVuY2Uo U3RyaW5nSW5mbyBvdXQsIFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJ CQkgIFhMb2dSZWNQdHIgbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkgIGludDY0 IHZhbHVlKQoreworCXVpbnQ4CQlmbGFncyA9IDA7CisKKwlwcV9zZW5kYnl0ZShvdXQsIExP R0lDQUxfUkVQX01TR19TRVFVRU5DRSk7CisKKwkvKiB0cmFuc2FjdGlvbiBJRCAoaWYgbm90 IHZhbGlkLCB3ZSdyZSBub3Qgc3RyZWFtaW5nKSAqLworCWlmIChUcmFuc2FjdGlvbklkSXNW YWxpZCh4aWQpKQorCQlwcV9zZW5kaW50MzIob3V0LCB4aWQpOworCisJcHFfc2VuZGludDgo b3V0LCBmbGFncyk7CisKKwkvKiB1c2UgT2lkIGFzIHJlbGF0aW9uIGlkZW50aWZpZXIgKi8K KwlwcV9zZW5kaW50MzIob3V0LCBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOworCisJLyogd3Jp dGUgdGhlIExTTiBvZiB0aGUgc2VxdWVuY2UgY2hhbmdlICovCisJcHFfc2VuZGludDY0KG91 dCwgbHNuKTsKKworCS8qIHdyaXRlIHNlcXVlbmNlIGluZm8gKi8KKwlwcV9zZW5kaW50OChv dXQsIHRyYW5zYWN0aW9uYWwpOworCXBxX3NlbmRpbnQ2NChvdXQsIHZhbHVlKTsKK30KKwor LyoKKyAqIFJlYWQgU0VRVUVOQ0UgZnJvbSB0aGUgc3RyZWFtLgorICovCitMb2dpY2FsUmVw UmVsSWQKK2xvZ2ljYWxyZXBfcmVhZF9zZXF1ZW5jZShTdHJpbmdJbmZvIGluLCBMb2dpY2Fs UmVwU2VxdWVuY2UgKnNlcWRhdGEpCit7CisJTG9naWNhbFJlcFJlbElkIHJlbGlkOworCisJ LyogWFhYIHNraXBwaW5nIGZsYWdzICovCisJcHFfZ2V0bXNnaW50KGluLCAxKTsKKworCS8q IHJlYWQgdGhlIHJlbGF0aW9uIGlkICovCisJcmVsaWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQp OworCisJLyogcmVhZCB0aGUgTFNOIG9mIHRoZSBzZXF1ZW5jZSBjaGFuZ2UgKi8KKwlzZXFk YXRhLT5sc24gPSBwcV9nZXRtc2dpbnQ2NChpbik7CisKKwkvKiBpbmZvIGFib3V0IHRoZSBz ZXF1ZW5jZSBjaGFuZ2UgKi8KKwlzZXFkYXRhLT50cmFuc2FjdGlvbmFsID0gcHFfZ2V0bXNn aW50KGluLCAxKTsKKwlzZXFkYXRhLT52YWx1ZSA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwor CXJldHVybiByZWxpZDsKK30KKwogLyoKICAqIFdyaXRlIHJlbGF0aW9uIGRlc2NyaXB0aW9u IHRvIHRoZSBvdXRwdXQgc3RyZWFtLgogICovCkBAIC0xMjU4LDYgKzEzMTEsOCBAQCBsb2dp Y2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24pCiAJCQlyZXR1 cm4gIlNUUkVBTSBBQk9SVCI7CiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9QUkVQ QVJFOgogCQkJcmV0dXJuICJTVFJFQU0gUFJFUEFSRSI7CisJCWNhc2UgTE9HSUNBTF9SRVBf TVNHX1NFUVVFTkNFOgorCQkJcmV0dXJuICJTRVFVRU5DRSI7CiAJfQogCiAJLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDA2ZDVi M2RmMzNhLi40NzU5MGUyZDU5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jCkBAIC0xMDAsNiArMTAwLDcgQEAKICNpbmNsdWRlICJjYXRh bG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKICNpbmNsdWRlICJjb21tYW5kcy9jb3B5LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2Vx dWVuY2UuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtl ZnVuY3MuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKQEAgLTExOCw2 ICsxMTksNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRl ICJ1dGlscy9wZ19sc24uaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRlICJ1 dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTEyMzks NiArMTI0MSwxMDYgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAJbG9naWNhbHJlcF9y ZWxfY2xvc2UocmVsbWFwZW50cnksIE5vTG9jayk7CiB9CiAKKy8qCisgKiBGZXRjaCBzZXF1 ZW5jZSBkYXRhIChjdXJyZW50IHN0YXRlKSBmcm9tIHRoZSByZW1vdGUgbm9kZSwgaW5jbHVk aW5nIHRoZQorICogcGFnZSBMU04uCisgKi8KK3N0YXRpYyBpbnQ2NAorZmV0Y2hfc2VxdWVu Y2VfZGF0YShPaWQgcmVtb3RlaWQsIFhMb2dSZWNQdHIgKmxzbikKK3sKKwlXYWxSY3ZFeGVj UmVzdWx0ICpyZXM7CisJU3RyaW5nSW5mb0RhdGEgY21kOworCVR1cGxlVGFibGVTbG90ICpz bG90OworCU9pZAkJCXRhYmxlUm93WzJdID0ge0lOVDhPSUQsIExTTk9JRH07CisJaW50NjQJ CXZhbHVlID0gKERhdHVtKSAwOworCisJaW5pdFN0cmluZ0luZm8oJmNtZCk7CisJYXBwZW5k U3RyaW5nSW5mbygmY21kLCAiU0VMRUNUIChsYXN0X3ZhbHVlICsgbG9nX2NudCksIHBhZ2Vf bHNuICIKKwkJCQkJICJGUk9NIHBnX3NlcXVlbmNlX3N0YXRlKCVkKSIsIHJlbW90ZWlkKTsK KworCXJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sIGNtZC5kYXRh LCAyLCB0YWJsZVJvdyk7CisJcGZyZWUoY21kLmRhdGEpOworCisJaWYgKHJlcy0+c3RhdHVz ICE9IFdBTFJDVl9PS19UVVBMRVMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygi Y291bGQgbm90IHJlY2VpdmUgbGlzdCBvZiByZXBsaWNhdGVkIHRhYmxlcyBmcm9tIHRoZSBw dWJsaXNoZXI6ICVzIiwKKwkJCQkJCXJlcy0+ZXJyKSkpOworCisJLyogUHJvY2VzcyB0aGUg c2VxdWVuY2UuICovCisJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChyZXMtPnR1 cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisJd2hpbGUgKHR1cGxlc3RvcmVfZ2V0 dHVwbGVzbG90KHJlcy0+dHVwbGVzdG9yZSwgdHJ1ZSwgZmFsc2UsIHNsb3QpKQorCXsKKwkJ Ym9vbAkJaXNudWxsOworCisJCXZhbHVlID0gRGF0dW1HZXRJbnQ2NChzbG90X2dldGF0dHIo c2xvdCwgMSwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlzbnVsbCk7CisKKwkJKmxzbiA9IERh dHVtR2V0SW50NjQoc2xvdF9nZXRhdHRyKHNsb3QsIDIsICZpc251bGwpKTsKKwkJQXNzZXJ0 KCFpc251bGwpOworCX0KKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7 CisKKwl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CisKKwlyZXR1cm4gdmFsdWU7Cit9CisK Ky8qCisgKiBDb3B5IGV4aXN0aW5nIGRhdGEgb2YgYSBzZXF1ZW5jZSBmcm9tIHB1Ymxpc2hl ci4KKyAqCisgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGxvY2tpbmcgdGhlIGxvY2Fs IHJlbGF0aW9uLgorICovCitzdGF0aWMgWExvZ1JlY1B0cgorY29weV9zZXF1ZW5jZShSZWxh dGlvbiByZWwpCit7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxtYXBlbnRyeTsKKwlM b2dpY2FsUmVwUmVsYXRpb24gbHJlbDsKKwlMaXN0CSAgICpxdWFsID0gTklMOworCVN0cmlu Z0luZm9EYXRhIGNtZDsKKwlpbnQ2NAkJc2VxdWVuY2VfdmFsdWU7CisJWExvZ1JlY1B0cgls c24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCS8qIEdldCB0aGUgcHVibGlzaGVyIHJlbGF0 aW9uIGluZm8uICovCisJZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oZ2V0X25hbWVzcGFjZV9u YW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksICZscmVsLCAmcXVhbCk7CisKKwkvKiBzZXF1ZW5jZXMgZG9uJ3Qg aGF2ZSByb3cgZmlsdGVycyAqLworCUFzc2VydCghcXVhbCk7CisKKwkvKiBQdXQgdGhlIHJl bGF0aW9uIGludG8gcmVsbWFwLiAqLworCWxvZ2ljYWxyZXBfcmVsbWFwX3VwZGF0ZSgmbHJl bCk7CisKKwkvKiBNYXAgdGhlIHB1Ymxpc2hlciByZWxhdGlvbiB0byBsb2NhbCBvbmUuICov CisJcmVsbWFwZW50cnkgPSBsb2dpY2FscmVwX3JlbF9vcGVuKGxyZWwucmVtb3RlaWQsIE5v TG9jayk7CisJQXNzZXJ0KHJlbCA9PSByZWxtYXBlbnRyeS0+bG9jYWxyZWwpOworCisJLyog U3RhcnQgY29weSBvbiB0aGUgcHVibGlzaGVyLiAqLworCWluaXRTdHJpbmdJbmZvKCZjbWQp OworCisJQXNzZXJ0KGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKTsKKworCS8q CisJICogTG9naWNhbCByZXBsaWNhdGlvbiBvZiBzZXF1ZW5jZXMgaXMgYmFzZWQgb24gZGVj b2RpbmcgV0FMIHJlY29yZHMsCisJICogZGVzY3JpYmluZyB0aGUgIm5leHQiIHN0YXRlIG9m IHRoZSBzZXF1ZW5jZSB0aGUgY3VycmVudCBzdGF0ZSBpbiB0aGUKKwkgKiByZWxmaWxlbm9k ZSBpcyB5ZXQgdG8gcmVhY2guIEJ1dCBkdXJpbmcgdGhlIGluaXRpYWwgc3luYyB3ZSByZWFk IHRoZQorCSAqIGN1cnJlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcmVjb25zdHJ1Y3QgdGhl IFdBTCByZWNvcmQgbG9nZ2VkIHdoZW4gd2UKKwkgKiBzdGFydGVkIHRoZSBjdXJyZW50IGJh dGNoIG9mIHNlcXVlbmNlIHZhbHVlcy4KKwkgKgorCSAqIE90aGVyd2lzZSB3ZSBtaWdodCBn ZXQgZHVwbGljYXRlIHZhbHVlcyAob24gc3Vic2NyaWJlcikgaWYgd2UgZmFpbGVkCisJICog b3ZlciByaWdodCBhZnRlciB0aGUgc3luYy4KKwkgKi8KKwlzZXF1ZW5jZV92YWx1ZSA9IGZl dGNoX3NlcXVlbmNlX2RhdGEobHJlbC5yZW1vdGVpZCwgJmxzbik7CisKKwkvKiB0YWJsZXN5 bmMgc2V0cyB0aGUgc2VxdWVuY2VzIGluIG5vbi10cmFuc2FjdGlvbmFsIHdheSAqLworCVNl dFNlcXVlbmNlKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgZmFsc2UsIHNlcXVlbmNlX3ZhbHVl KTsKKworCWxvZ2ljYWxyZXBfcmVsX2Nsb3NlKHJlbG1hcGVudHJ5LCBOb0xvY2spOworCisJ LyogcmV0dXJuIHRoZSBMU04gd2hlbiB0aGUgc2VxdWVuY2Ugc3RhdGUgd2FzIHNldCAqLwor CXJldHVybiBsc247Cit9CisKIC8qCiAgKiBEZXRlcm1pbmUgdGhlIHRhYmxlc3luYyBzbG90 IG5hbWUuCiAgKgpAQCAtMTI4Nyw2ICsxMzg5LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0 YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAlVc2VyQ29udGV4dCB1Y3h0Owog CWJvb2wJCW11c3RfdXNlX3Bhc3N3b3JkOwogCWJvb2wJCXJ1bl9hc19vd25lcjsKKwlYTG9n UmVjUHRyCXNlcXVlbmNlX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCiAJLyogQ2hlY2sg dGhlIHN0YXRlIG9mIHRoZSB0YWJsZSBzeW5jaHJvbml6YXRpb24uICovCiAJU3RhcnRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKQEAgLTE0OTgsMTAgKzE2MDEsMzQgQEAgTG9naWNhbFJlcFN5 bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJCQkJCUdldFVz ZXJOYW1lRnJvbUlkKEdldFVzZXJJZCgpLCB0cnVlKSwKIAkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCkpKSk7CiAKLQkvKiBOb3cgZG8gdGhlIGluaXRpYWwgZGF0YSBjb3B5 ICovCi0JUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0J Y29weV90YWJsZShyZWwpOwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJLyogRG8gdGhlIHJp Z2h0IGFjdGlvbiBkZXBlbmRpbmcgb24gdGhlIHJlbGF0aW9uIGtpbmQuICovCisJaWYgKGdl dF9yZWxfcmVsa2luZChSZWxhdGlvbkdldFJlbGlkKHJlbCkpID09IFJFTEtJTkRfU0VRVUVO Q0UpCisJeworCQkvKiBOb3cgZG8gdGhlIGluaXRpYWwgc2VxdWVuY2UgY29weSAqLworCQlQ dXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJc2VxdWVu Y2VfbHNuID0gY29weV9zZXF1ZW5jZShyZWwpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwor CisJCS8qCisJCSAqIFNlcXVlbmNlcyBhcmUgbm90IGNvbnNpc3RlbnQgKGluIHRoZSBNVkND IHNlbnNlKSB3aXRoIHJlc3BlY3QgdG8KKwkJICogdGhlIHJlcGxpY2F0aW9uIHNsb3QsIHNv IHRoZSBjb3B5IG1pZ2h0IGhhdmUgcmVhZCBhIG1vcmUgcmVjZW50CisJCSAqIHN0YXRlIHRo YW4gb3JpZ2luX3N0YXJ0cG9zLiBUaGUgc2VxdWVuY2VfbHNuIGNvbWVzIGZyb20gcGFnZSBM U04KKwkJICogKHdoaWNoIGlzIExTTiBvZiB0aGUgbGFzdCBzZXF1ZW5jZSBjaGFuZ2UpLCBz byB0aGF0J3MgdGhlIHJpZ2h0CisJCSAqIHBvc2l0aW9uIHdoZXJlIHRvIHN0YXJ0IHdpdGgg dGhlIGNhdGNodXAgYXBwbHkuCisJCSAqCisJCSAqIEl0IG1pZ2h0IGJlIGJlZm9yZSB0aGUg c2xvdCwgdGhvdWdoIChpZiB0aGUgc2VxdWVuY2Ugd2FzIG5vdCB1c2VkCisJCSAqIHNpbmNl IGJldHdlZW4gdGhlIHNsb3QgY3JlYXRpb24gYW5kIGNvcHkpLCBzbyBtYWtlIHN1cmUgdGhl CisJCSAqIHBvc2l0aW9uIGRvZXMgbm90IG1vdmUgYmFja3dhcmRzLgorCQkgKi8KKwkJKm9y aWdpbl9zdGFydHBvcyA9IE1heCgqb3JpZ2luX3N0YXJ0cG9zLCBzZXF1ZW5jZV9sc24pOwor CX0KKwllbHNlCisJeworCQkvKiBOb3cgZG8gdGhlIGluaXRpYWwgZGF0YSBjb3B5ICovCisJ CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQljb3B5 X3RhYmxlKHJlbCk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJfQogCiAJcmVzID0gd2Fs cmN2X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgIkNPTU1JVCIsIDAsIE5VTEwpOwog CWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfQ09NTUFORCkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDkxMTgzNWM1Y2IzLi4wMWZlOTUy N2I2YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBA IC0xNTQsNiArMTU0LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKQEAgLTE0 MzcsNiArMTQzOCw5NyBAQCBhcHBseV9oYW5kbGVfb3JpZ2luKFN0cmluZ0luZm8gcykKIAkJ CQkgZXJybXNnX2ludGVybmFsKCJPUklHSU4gbWVzc2FnZSBzZW50IG91dCBvZiBvcmRlciIp KSk7CiB9CiAKKy8qCisgKiBIYW5kbGUgU0VRVUVOQ0UgbWVzc2FnZS4KKyAqLworc3RhdGlj IHZvaWQKK2FwcGx5X2hhbmRsZV9zZXF1ZW5jZShTdHJpbmdJbmZvIHMpCit7CisJTG9naWNh bFJlcFNlcXVlbmNlIHNlcTsKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbDsKKwlPaWQJ CQlyZWxpZDsKKwlib29sCQlhbHJlYWR5X2luX3RyYW5zYWN0aW9uIFBHX1VTRURfRk9SX0FT U0VSVFNfT05MWTsKKworCWlmIChpc19za2lwcGluZ19jaGFuZ2VzKCkgfHwKKwkJaGFuZGxl X3N0cmVhbWVkX3RyYW5zYWN0aW9uKExPR0lDQUxfUkVQX01TR19TRVFVRU5DRSwgcykpCisJ CXJldHVybjsKKworCS8qCisJICogUmVtZW1iZXIgaWYgd2UncmUgYWxyZWFkeSBpbiB0cmFu c2FjdGlvbiAoYmVnaW5fcmVwbGljYXRpb24gc3RlcCBzdGFydHMKKwkgKiBhIHRyYW5zYWN0 aW9uLCBzbyB3ZSBjYW4ndCB1c2UgSXNUcmFuc2FjdGlvblN0YXRlKCkgYWZ0ZXIgdGhhdCBw b2ludC4KKwkgKi8KKwlhbHJlYWR5X2luX3RyYW5zYWN0aW9uID0gSXNUcmFuc2FjdGlvblN0 YXRlKCk7CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB3ZSdyZSBpbiBhIHRyYW5zYWN0aW9uIChu ZWVkZWQgYnkgU2V0U2VxdWVuY2UpLiBGb3IKKwkgKiBub24tdHJhbnNhY3Rpb25hbCB1cGRh dGVzIHdlJ3JlIGd1YXJhbnRlZWQgdG8gc3RhcnQgYSBuZXcgb25lLCBhbmQKKwkgKiB3ZSds bCBjb21taXQgaXQgYXQgdGhlIGVuZC4KKwkgKi8KKwliZWdpbl9yZXBsaWNhdGlvbl9zdGVw KCk7CisKKwlyZWxpZCA9IGxvZ2ljYWxyZXBfcmVhZF9zZXF1ZW5jZShzLCAmc2VxKTsKKwor CS8qCisJICogTm9uLXRyYW5zYWN0aW9uYWwgc2VxdWVuY2UgdXBkYXRlcyBzaG91bGQgbm90 IGJlIHBhcnQgb2YgYSByZW1vdGUKKwkgKiB0cmFuc2FjdGlvbi4gVGhlcmUgc2hvdWxkIG5v dCBiZSBhbnkgcnVubmluZyB0cmFuc2FjdGlvbi4KKwkgKi8KKwlBc3NlcnQoKCFzZXEudHJh bnNhY3Rpb25hbCkgfHwgaW5fcmVtb3RlX3RyYW5zYWN0aW9uKTsKKwlBc3NlcnQoISghc2Vx LnRyYW5zYWN0aW9uYWwgJiYgaW5fcmVtb3RlX3RyYW5zYWN0aW9uKSk7CisJQXNzZXJ0KCEo IXNlcS50cmFuc2FjdGlvbmFsICYmIGFscmVhZHlfaW5fdHJhbnNhY3Rpb24pKTsKKworCS8q IGxvY2sgdGhlIHNlcXVlbmNlIGluIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIGFzIGV4cGVjdGVk IGJ5IFNldFNlcXVlbmNlICovCisJcmVsID0gbG9naWNhbHJlcF9yZWxfb3BlbihyZWxpZCwg QWNjZXNzRXhjbHVzaXZlTG9jayk7CisJaWYgKCFzaG91bGRfYXBwbHlfY2hhbmdlc19mb3Jf cmVsKHJlbCkpCisJeworCQkvKgorCQkgKiBUaGUgcmVsYXRpb24gY2FuJ3QgYmVjb21lIGlu dGVyZXN0aW5nIGluIHRoZSBtaWRkbGUgb2YgdGhlCisJCSAqIHRyYW5zYWN0aW9uIHNvIGl0 J3Mgc2FmZSB0byB1bmxvY2sgaXQuCisJCSAqLworCQlsb2dpY2FscmVwX3JlbF9jbG9zZShy ZWwsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwor CisJCS8qCisJCSAqIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAod2Ugb25s eSBkbyB0aGlzIHdoZW4gbm90IGluCisJCSAqIHJlbW90ZSB0cmFuc2FjdGlvbiwgaS5lLiBm b3Igbm9uLXRyYW5zYWN0aW9uYWwgc2VxdWVuY2UgdXBkYXRlcy4pCisJCSAqLworCQlpZiAo IWluX3JlbW90ZV90cmFuc2FjdGlvbikKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIGFwcGx5IHRoZSBzZXF1ZW5jZSBjaGFu Z2UKKwkgKgorCSAqIFhYWCBXZSBkb24ndCBuZWVkIHRvIHJlY29uc3RydWN0IHRoZSB2YWx1 ZSBmcm9tIGxhc3RfdmFsdWUsIGxvZ19jbnQKKwkgKiBldGMuIGJlY2F1c2UgdGhhdCBoYXBw ZW5zIG9uIHRoZSBwdWJsaXNoZXIuCisJICovCisJU2V0U2VxdWVuY2UocmVsLT5sb2NhbHJl bG9pZCwgc2VxLnRyYW5zYWN0aW9uYWwsIHNlcS52YWx1ZSk7CisKKwlsb2dpY2FscmVwX3Jl bF9jbG9zZShyZWwsIE5vTG9jayk7CisKKwllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCisJ LyoKKwkgKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKHdlIG9ubHkgZG8g dGhpcyB3aGVuIG5vdCBpbiByZW1vdGUKKwkgKiB0cmFuc2FjdGlvbiwgaS5lLiBmb3Igbm9u LXRyYW5zYWN0aW9uYWwgc2VxdWVuY2UgdXBkYXRlcy4pCisJICovCisJaWYgKCFpbl9yZW1v dGVfdHJhbnNhY3Rpb24pCisJeworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwor CQkvKgorCQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGRvbid0IHRyeSBhcHBseWlu ZyB0aGlzIHNlcXVlbmNlIGNoYW5nZQorCQkgKiBpbiBjYXNlIG9mIGNyYXNoLiBXZSBvbmx5 IGRvIHRoaXMgZm9yIG5vbi10cmFzYWN0aW9uYWwgY2hhbmdlcywKKwkJICogdGhhdCBhcmUg cmVwbGF5ZWQgZGlyZWN0bHkuCisJCSAqCisJCSAqIFhYWCBXZSBkb24ndCBoYXZlIHJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wLCBidXQgd2UgY2FuCisJCSAqIGp1c3Qg bGVhdmUgdGhhdCBzZXQgdG8gMC4KKwkJICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW5fbHNuID0gc2VxLmxzbjsKKwl9Cit9CisKIC8qCiAgKiBJbml0aWFsaXplIGZpbGVzZXQg KGlmIG5vdCBhbHJlYWR5IGRvbmUpLgogICoKQEAgLTMzNDcsNiArMzQzOSwxMCBAQCBhcHBs eV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiAJCQkgKi8KIAkJCWJyZWFrOwogCisJCWNhc2Ug TE9HSUNBTF9SRVBfTVNHX1NFUVVFTkNFOgorCQkJYXBwbHlfaGFuZGxlX3NlcXVlbmNlKHMp OworCQkJcmV0dXJuOworCiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVEFSVDoK IAkJCWFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQocyk7CiAJCQlicmVhazsKQEAgLTQzNjUs NiArNDQ2MSw3IEBAIHNldF9zdHJlYW1fb3B0aW9ucyhXYWxSY3ZTdHJlYW1PcHRpb25zICpv cHRpb25zLAogCiAJc2VydmVyX3ZlcnNpb24gPSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9n UmVwV29ya2VyV2FsUmN2Q29ubik7CiAJb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5wcm90b192 ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTcwMDAwID8gTE9HSUNBTFJFUF9QUk9U T19TRVFVRU5DRVNfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAg PyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CiAJCXNl cnZlcl92ZXJzaW9uID49IDE1MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVS U0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BS T1RPX1NUUkVBTV9WRVJTSU9OX05VTSA6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA0MjUyMzgxODdmNi4uOGI4ZjgxYzVmOGUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAt MTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgi CkBAIC01NSw2ICs1NiwxMCBAQCBzdGF0aWMgdm9pZCBwZ291dHB1dF9tZXNzYWdlKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LCBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAogCQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWws IGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVz c2FnZSk7CitzdGF0aWMgdm9pZCBwZ291dHB1dF9zZXF1ZW5jZShMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsCisJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQ dHIgc2VxdWVuY2VfbHNuLAorCQkJCQkJCSAgUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgdHJh bnNhY3Rpb25hbCwKKwkJCQkJCQkgIGludDY0IHZhbHVlKTsKIHN0YXRpYyBib29sIHBnb3V0 cHV0X29yaWdpbl9maWx0ZXIoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJ CQkgICBSZXBPcmlnaW5JZCBvcmlnaW5faWQpOwogc3RhdGljIHZvaWQgcGdvdXRwdXRfYmVn aW5fcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LApAQCAtMjUyLDYg KzI1Nyw3IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tz ICpjYikKIAljYi0+Y2hhbmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNiLT50cnVuY2F0 ZV9jYiA9IHBnb3V0cHV0X3RydW5jYXRlOwogCWNiLT5tZXNzYWdlX2NiID0gcGdvdXRwdXRf bWVzc2FnZTsKKwljYi0+c2VxdWVuY2VfY2IgPSBwZ291dHB1dF9zZXF1ZW5jZTsKIAljYi0+ Y29tbWl0X2NiID0gcGdvdXRwdXRfY29tbWl0X3R4bjsKIAogCWNiLT5iZWdpbl9wcmVwYXJl X2NiID0gcGdvdXRwdXRfYmVnaW5fcHJlcGFyZV90eG47CkBAIC0yNjgsNiArMjc0LDcgQEAg X1BHX291dHB1dF9wbHVnaW5faW5pdChPdXRwdXRQbHVnaW5DYWxsYmFja3MgKmNiKQogCWNi LT5zdHJlYW1fY29tbWl0X2NiID0gcGdvdXRwdXRfc3RyZWFtX2NvbW1pdDsKIAljYi0+c3Ry ZWFtX2NoYW5nZV9jYiA9IHBnb3V0cHV0X2NoYW5nZTsKIAljYi0+c3RyZWFtX21lc3NhZ2Vf Y2IgPSBwZ291dHB1dF9tZXNzYWdlOworCWNiLT5zdHJlYW1fc2VxdWVuY2VfY2IgPSBwZ291 dHB1dF9zZXF1ZW5jZTsKIAljYi0+c3RyZWFtX3RydW5jYXRlX2NiID0gcGdvdXRwdXRfdHJ1 bmNhdGU7CiAJLyogdHJhbnNhY3Rpb24gc3RyZWFtaW5nIC0gdHdvLXBoYXNlIGNvbW1pdCAq LwogCWNiLT5zdHJlYW1fcHJlcGFyZV9jYiA9IHBnb3V0cHV0X3N0cmVhbV9wcmVwYXJlX3R4 bjsKQEAgLTY3OCw3ICs2ODUsNyBAQCBwZ291dHB1dF9yb2xsYmFja19wcmVwYXJlZF90eG4o TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogICovCiBzdGF0aWMgdm9pZAogbWF5YmVf c2VuZF9zY2hlbWEoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAotCQkJCSAgUmVvcmRl ckJ1ZmZlckNoYW5nZSAqY2hhbmdlLAorCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAog CQkJCSAgUmVsYXRpb24gcmVsYXRpb24sIFJlbGF0aW9uU3luY0VudHJ5ICpyZWxlbnRyeSkK IHsKIAlQR091dHB1dERhdGEgKmRhdGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0 X3BsdWdpbl9wcml2YXRlOwpAQCAtNjk1LDEwICs3MDIsMTAgQEAgbWF5YmVfc2VuZF9zY2hl bWEoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCSAqIHRoZSB3cml0ZSBtZXRob2Rz IHdpbGwgbm90IGluY2x1ZGUgaXQuCiAJICovCiAJaWYgKGRhdGEtPmluX3N0cmVhbWluZykK LQkJeGlkID0gY2hhbmdlLT50eG4tPnhpZDsKKwkJeGlkID0gdHhuLT54aWQ7CiAKLQlpZiAo cmJ0eG5faXNfc3VidHhuKGNoYW5nZS0+dHhuKSkKLQkJdG9weGlkID0gcmJ0eG5fZ2V0X3Rv cHR4bihjaGFuZ2UtPnR4biktPnhpZDsKKwlpZiAocmJ0eG5faXNfc3VidHhuKHR4bikpCisJ CXRvcHhpZCA9IHJidHhuX2dldF90b3B0eG4odHhuKS0+eGlkOwogCWVsc2UKIAkJdG9weGlk ID0geGlkOwogCkBAIC05MDcsOSArOTE0LDEwIEBAIHBnb3V0cHV0X3Jvd19maWx0ZXJfaW5p dChQR091dHB1dERhdGEgKmRhdGEsIExpc3QgKnB1YmxpY2F0aW9ucywKIAkJICogKGV2ZW4g aWYgb3RoZXIgcHVibGljYXRpb25zIGhhdmUgYSByb3cgZmlsdGVyKS4KIAkJICovCiAJCWlm ICghcHViLT5hbGx0YWJsZXMgJiYKLQkJCSFTZWFyY2hTeXNDYWNoZUV4aXN0czIoUFVCTElD QVRJT05OQU1FU1BBQ0VNQVAsCisJCQkhU2VhcmNoU3lzQ2FjaGVFeGlzdHMzKFBVQkxJQ0FU SU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHNjaGVtYWlk KSwKLQkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkpKQorCQkJCQkJCQkg ICBPYmplY3RJZEdldERhdHVtKHB1Yi0+b2lkKSwKKwkJCQkJCQkJICAgUFVCX09CSlRZUEVf VEFCTEUpKQogCQl7CiAJCQkvKgogCQkJICogQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBh IHJvdyBmaWx0ZXIgaW4gdGhpcyBwdWJsaWNhdGlvbi4KQEAgLTE1MjMsNyArMTUzMSw3IEBA IHBnb3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKIAkgKiBTY2hlbWEgc2hvdWxkIGJlIHNlbnQgdXNpbmcgdGhlIG9y aWdpbmFsIHJlbGF0aW9uIGJlY2F1c2UgaXQgYWxzbyBzZW5kcwogCSAqIHRoZSBhbmNlc3Rv cidzIHJlbGF0aW9uLgogCSAqLwotCW1heWJlX3NlbmRfc2NoZW1hKGN0eCwgY2hhbmdlLCBy ZWxhdGlvbiwgcmVsZW50cnkpOworCW1heWJlX3NlbmRfc2NoZW1hKGN0eCwgdHhuLCByZWxh dGlvbiwgcmVsZW50cnkpOwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1 ZSk7CiAKQEAgLTE2MDgsNyArMTYxNiw3IEBAIHBnb3V0cHV0X3RydW5jYXRlKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQlpZiAodHhu ZGF0YSAmJiAhdHhuZGF0YS0+c2VudF9iZWdpbl90eG4pCiAJCQlwZ291dHB1dF9zZW5kX2Jl Z2luKGN0eCwgdHhuKTsKIAotCQltYXliZV9zZW5kX3NjaGVtYShjdHgsIGNoYW5nZSwgcmVs YXRpb24sIHJlbGVudHJ5KTsKKwkJbWF5YmVfc2VuZF9zY2hlbWEoY3R4LCBjaGFuZ2UtPnR4 biwgcmVsYXRpb24sIHJlbGVudHJ5KTsKIAl9CiAKIAlpZiAobnJlbGlkcyA+IDApCkBAIC0x NjY4LDYgKzE2NzYsNzAgQEAgcGdvdXRwdXRfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlPdXRwdXRQbHVnaW5Xcml0ZShj dHgsIHRydWUpOwogfQogCitzdGF0aWMgdm9pZAorcGdvdXRwdXRfc2VxdWVuY2UoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBY TG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKwkJCQkgIFJlbGF0aW9uIHJlbGF0aW9uLCBib29s IHRyYW5zYWN0aW9uYWwsCisJCQkJICBpbnQ2NCB2YWx1ZSkKK3sKKwlQR091dHB1dERhdGEg KmRhdGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOwor CVRyYW5zYWN0aW9uSWQgeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJUmVsYXRpb25T eW5jRW50cnkgKnJlbGVudHJ5OworCisJaWYgKCFpc19wdWJsaXNoYWJsZV9yZWxhdGlvbihy ZWxhdGlvbikpCisJCXJldHVybjsKKworCS8qCisJICogSWYgdGhlIG5lZ290aWF0ZWQgcHJv dG9jb2wgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IHNlcXVlbmNlcywgeWV0IHdlCisJICog Zm91bmQgYSBzZXF1ZW5jZSBpbiB0aGUgcHVibGljYXRpb24sIGVycm9yIG91dC4KKwkgKi8K KwlpZiAoZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU0VRVUVO Q0VTX1ZFUlNJT05fTlVNKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJwcm90b2NvbCB2ZXJzaW9uIGRvZXMg bm90IHN1cHBvcnQgc2VxdWVuY2UgcmVwbGljYXRpb24iKSkpOworCisJLyoKKwkgKiBSZW1l bWJlciB0aGUgeGlkIGZvciB0aGUgbWVzc2FnZSBpbiBzdHJlYW1pbmcgbW9kZS4gU2VlCisJ ICogcGdvdXRwdXRfY2hhbmdlLgorCSAqLworCWlmIChkYXRhLT5pbl9zdHJlYW1pbmcpCisJ CXhpZCA9IHR4bi0+eGlkOworCisJcmVsZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0 YSwgcmVsYXRpb24pOworCisJLyoKKwkgKiBGaXJzdCBjaGVjayB0aGUgc2VxdWVuY2UgZmls dGVyLgorCSAqCisJICogV2UgaGFuZGxlIGp1c3QgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NF UVVFTkNFIGhlcmUuCisJICovCisJaWYgKCFyZWxlbnRyeS0+cHViYWN0aW9ucy5wdWJzZXF1 ZW5jZSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBPdXRwdXQgQkVHSU4gaWYgd2UgaGF2ZW4n dCB5ZXQuIEF2b2lkIGZvciBub24tdHJhbnNhY3Rpb25hbCBzZXF1ZW5jZQorCSAqIGNoYW5n ZXMuCisJICovCisJaWYgKHRyYW5zYWN0aW9uYWwpCisJeworCQlQR091dHB1dFR4bkRhdGEg KnR4bmRhdGEgPSAoUEdPdXRwdXRUeG5EYXRhICopIHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2 YXRlOworCisJCS8qIFNlbmQgQkVHSU4gaWYgd2UgaGF2ZW4ndCB5ZXQgKi8KKwkJaWYgKHR4 bmRhdGEgJiYgIXR4bmRhdGEtPnNlbnRfYmVnaW5fdHhuKQorCQkJcGdvdXRwdXRfc2VuZF9i ZWdpbihjdHgsIHR4bik7CisJfQorCisJbWF5YmVfc2VuZF9zY2hlbWEoY3R4LCB0eG4sIHJl bGF0aW9uLCByZWxlbnRyeSk7CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0 cnVlKTsKKwlsb2dpY2FscmVwX3dyaXRlX3NlcXVlbmNlKGN0eC0+b3V0LAorCQkJCQkJCSAg cmVsYXRpb24sCisJCQkJCQkJICB4aWQsCisJCQkJCQkJICBzZXF1ZW5jZV9sc24sCisJCQkJ CQkJICB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCSAgdmFsdWUpOworCU91dHB1dFBsdWdpbldy aXRlKGN0eCwgdHJ1ZSk7Cit9CisKIC8qCiAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZGF0YSBp cyBhc3NvY2lhdGVkIHdpdGggYW4gb3JpZ2luIGFuZCB0aGUgdXNlciBoYXMKICAqIHJlcXVl c3RlZCB0aGUgY2hhbmdlcyB0aGF0IGRvbid0IGhhdmUgYW4gb3JpZ2luLCBmYWxzZSBvdGhl cndpc2UuCkBAIC0xOTgzLDcgKzIwNTUsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRw dXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPnNjaGVtYV9zZW50 ID0gZmFsc2U7CiAJCWVudHJ5LT5zdHJlYW1lZF90eG5zID0gTklMOwogCQllbnRyeS0+cHVi YWN0aW9ucy5wdWJpbnNlcnQgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPQotCQkJ ZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZW50cnktPnB1YmFjdGlvbnMucHVidHJ1 bmNhdGUgPSBmYWxzZTsKKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGVudHJ5 LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0KKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnNl cXVlbmNlID0gZmFsc2U7CiAJCWVudHJ5LT5uZXdfc2xvdCA9IE5VTEw7CiAJCWVudHJ5LT5v bGRfc2xvdCA9IE5VTEw7CiAJCW1lbXNldChlbnRyeS0+ZXhwcnN0YXRlLCAwLCBzaXplb2Yo ZW50cnktPmV4cHJzdGF0ZSkpOwpAQCAtMTk5OCwxOCArMjA3MSwxOSBAQCBnZXRfcmVsX3N5 bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAl7CiAJ CU9pZAkJCXNjaGVtYUlkID0gZ2V0X3JlbF9uYW1lc3BhY2UocmVsaWQpOwogCQlMaXN0CSAg ICpwdWJpZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCk7CisJCWNoYXIJCXJl bGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQocmVsaWQpOworCQljaGFyCQlvYmplY3RUeXBlID0g cHViX2dldF9vYmplY3RfdHlwZV9mb3JfcmVsa2luZChyZWxraW5kKTsKIAogCQkvKgogCQkg KiBXZSBkb24ndCBhY3F1aXJlIGEgbG9jayBvbiB0aGUgbmFtZXNwYWNlIHN5c3RlbSB0YWJs ZSBhcyB3ZSBidWlsZAogCQkgKiB0aGUgY2FjaGUgZW50cnkgdXNpbmcgYSBoaXN0b3JpYyBz bmFwc2hvdCBhbmQgYWxsIHRoZSBsYXRlciBjaGFuZ2VzCiAJCSAqIGFyZSBhYnNvcmJlZCB3 aGlsZSBkZWNvZGluZyBXQUwuCiAJCSAqLwotCQlMaXN0CSAgICpzY2hlbWFQdWJpZHMgPSBH ZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1hSWQpOworCQlMaXN0CSAgICpzY2hlbWFQdWJp ZHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1hSWQsIG9iamVjdFR5cGUpOwogCQlM aXN0Q2VsbCAgICpsYzsKIAkJT2lkCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwogCQlp bnQJCQlwdWJsaXNoX2FuY2VzdG9yX2xldmVsID0gMDsKIAkJYm9vbAkJYW1fcGFydGl0aW9u ID0gZ2V0X3JlbF9yZWxpc3BhcnRpdGlvbihyZWxpZCk7Ci0JCWNoYXIJCXJlbGtpbmQgPSBn ZXRfcmVsX3JlbGtpbmQocmVsaWQpOwogCQlMaXN0CSAgICpyZWxfcHVibGljYXRpb25zID0g TklMOwogCiAJCS8qIFJlbG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVkIGJlZm9yZSB1c2Uu ICovCkBAIC0yMDQxLDYgKzIxMTUsNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXRE YXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPnB1YmFjdGlvbnMucHVi dXBkYXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGZhbHNl OwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZhbHNlOworCQllbnRyeS0+ cHViYWN0aW9ucy5wdWJzZXF1ZW5jZSA9IGZhbHNlOwogCiAJCS8qCiAJCSAqIFR1cGxlIHNs b3RzIGNsZWFudXBzLiAoV2lsbCBiZSByZWJ1aWx0IGxhdGVyIGlmIG5lZWRlZCkuCkBAIC0y MDg4LDkgKzIxNjMsMTEgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0 YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJCS8qCiAJCQkgKiBJZiB0aGlzIGlzIGEgRk9S IEFMTCBUQUJMRVMgcHVibGljYXRpb24sIHBpY2sgdGhlIHBhcnRpdGlvbgotCQkJICogcm9v dCBhbmQgc2V0IHRoZSBhbmNlc3RvciBsZXZlbCBhY2NvcmRpbmdseS4KKwkJCSAqIHJvb3Qg YW5kIHNldCB0aGUgYW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuIElmIHRoaXMgaXMgYSBG T1IKKwkJCSAqIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb24sIHdlIHB1Ymxpc2ggaXQgdG9v IGJ1dCB3ZSBkb24ndCBuZWVkCisJCQkgKiB0byBwaWNrIHRoZSBwYXJ0aXRpb24gcm9vdCBl dGMuCiAJCQkgKi8KLQkJCWlmIChwdWItPmFsbHRhYmxlcykKKwkJCWlmIChwdWItPmFsbHRh YmxlcyAmJiAob2JqZWN0VHlwZSA9PSBQVUJfT0JKVFlQRV9UQUJMRSkpCiAJCQl7CiAJCQkJ cHVibGlzaCA9IHRydWU7CiAJCQkJaWYgKHB1Yi0+cHVidmlhcm9vdCAmJiBhbV9wYXJ0aXRp b24pCkBAIC0yMTAxLDYgKzIxNzgsMTAgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0 RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkJCWFuY2VzdG9yX2xldmVsID0g bGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKIAkJCQl9CiAJCQl9CisJCQllbHNlIGlmIChwdWIt PmFsbHNlcXVlbmNlcyAmJiAob2JqZWN0VHlwZSA9PSBQVUJfT0JKVFlQRV9TRVFVRU5DRSkp CisJCQl7CisJCQkJcHVibGlzaCA9IHRydWU7CisJCQl9CiAKIAkJCWlmICghcHVibGlzaCkK IAkJCXsKQEAgLTIxNTQsNiArMjIzNSw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1 dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJCWVudHJ5LT5wdWJhY3Rpb25z LnB1YnVwZGF0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHVidXBkYXRlOwogCQkJCWVudHJ5LT5w dWJhY3Rpb25zLnB1YmRlbGV0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHViZGVsZXRlOwogCQkJ CWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0 cnVuY2F0ZTsKKwkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJzZXF1ZW5jZSB8PSBwdWItPnB1 YmFjdGlvbnMucHVic2VxdWVuY2U7CiAKIAkJCQkvKgogCQkJCSAqIFdlIHdhbnQgdG8gcHVi bGlzaCB0aGUgY2hhbmdlcyBhcyB0aGUgdG9wLW1vc3QgYW5jZXN0b3IKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDIwMjczZjBiZTE2Li4xYmM3N2I0NzYwMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9j LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19yZXdyaXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zaHNlY2xhYmVsLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCkBAIC01NzE1LDYgKzU3MTYsOCBA QCBSZWxhdGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJs aWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJT2lkCQkJc2NoZW1haWQ7CiAJTGlzdAkgICAqYW5j ZXN0b3JzID0gTklMOwogCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlv bik7CisJY2hhcgkJcmVsa2luZCA9IHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQ7CisJY2hh cgkJb2JqVHlwZTsKIAogCS8qCiAJICogSWYgbm90IHB1Ymxpc2hhYmxlLCBpdCBwdWJsaXNo ZXMgbm8gYWN0aW9ucy4gIChwZ291dHB1dF9jaGFuZ2UoKSB3aWxsCkBAIC01NzQ1LDggKzU3 NDgsMTUgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlv biwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCS8qIEZldGNoIHRoZSBwdWJsaWNhdGlv biBtZW1iZXJzaGlwIGluZm8uICovCiAJcHVib2lkcyA9IEdldFJlbGF0aW9uUHVibGljYXRp b25zKHJlbGlkKTsKIAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9u KTsKLQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRTY2hl bWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKKwlvYmpUeXBlID0gcHViX2dldF9vYmplY3Rf dHlwZV9mb3JfcmVsa2luZChyZWxraW5kKTsKIAorCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91 bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJCQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNj aGVtYWlkLCBvYmpUeXBlKSk7CisKKwkvKgorCSAqIElmIHRoaXMgaXMgYSBwYXJ0aW9uIChh bmQgdGh1cyBhIHRhYmxlKSwgbG9va3VwIGFsbCBhbmNlc3RvcnMgYW5kIHRyYWNrCisJICog YWxsIHB1YmxpY2F0aW9ucyB0aGVtIHRvby4KKwkgKi8KIAlpZiAocmVsYXRpb24tPnJkX3Jl bC0+cmVsaXNwYXJ0aXRpb24pCiAJewogCQkvKiBBZGQgcHVibGljYXRpb25zIHRoYXQgdGhl IGFuY2VzdG9ycyBhcmUgaW4gdG9vLiAqLwpAQCAtNTc1OCwxMiArNTc2OCwyMyBAQCBSZWxh dGlvbkJ1aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlv bkRlc2MgKnB1YmRlc2MpCiAKIAkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lk KHB1Ym9pZHMsCiAJCQkJCQkJCQkJCSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3Rv cikpOworCisJCQkvKiBpbmNsdWRlIGFsbCBwdWJsaWNhdGlvbnMgcHVibGlzaGluZyBzY2hl bWEgb2YgYWxsIGFuY2VzdG9ycyAqLwogCQkJc2NoZW1haWQgPSBnZXRfcmVsX25hbWVzcGFj ZShhbmNlc3Rvcik7CiAJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJv aWRzLAotCQkJCQkJCQkJCQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CisJ CQkJCQkJCQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQsCisJCQkJCQkJCQkJ CQkJCQkJICAgUFVCX09CSlRZUEVfVEFCTEUpKTsKIAkJfQogCX0KLQlwdWJvaWRzID0gbGlz dF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMo KSk7CisKKwkvKgorCSAqIENvbnNpZGVyIGFsc28gRk9SIEFMTCBUQUJMRVMgYW5kIEZPUiBB TEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucywKKwkgKiBkZXBlbmRpbmcgb24gdGhlIHJlbGtp bmQgb2YgdGhlIHJlbGF0aW9uLgorCSAqLworCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxr aW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlx dWVfb2lkKHB1Ym9pZHMsIEdldEFsbFNlcXVlbmNlc1B1YmxpY2F0aW9ucygpKTsKKwllbHNl CisJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFRh Ymxlc1B1YmxpY2F0aW9ucygpKTsKIAogCWZvcmVhY2gobGMsIHB1Ym9pZHMpCiAJewpAQCAt NTc4Miw2ICs1ODAzLDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlv biByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCQlwdWJkZXNjLT5wdWJh Y3Rpb25zLnB1YnVwZGF0ZSB8PSBwdWJmb3JtLT5wdWJ1cGRhdGU7CiAJCXB1YmRlc2MtPnB1 YmFjdGlvbnMucHViZGVsZXRlIHw9IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAkJcHViZGVzYy0+ cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSB8PSBwdWJmb3JtLT5wdWJ0cnVuY2F0ZTsKKwkJcHVi ZGVzYy0+cHViYWN0aW9ucy5wdWJzZXF1ZW5jZSB8PSBwdWJmb3JtLT5wdWJzZXF1ZW5jZTsK IAogCQkvKgogCQkgKiBDaGVjayBpZiBhbGwgY29sdW1ucyByZWZlcmVuY2VkIGluIHRoZSBm aWx0ZXIgZXhwcmVzc2lvbiBhcmUgcGFydApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hl LmMKaW5kZXggYzEwYTdiM2QwZDIuLmFiM2YzZjE5MWMyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3N5c2NhY2hlLmMKQEAgLTQ1MCw5ICs0NTAsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBjYWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJfSwKIAlbUFVCTElDQVRJT05OQU1FU1BB Q0VNQVBdID0gewogCQlQdWJsaWNhdGlvbk5hbWVzcGFjZVJlbGF0aW9uSWQsCi0JCVB1Ymxp Y2F0aW9uTmFtZXNwYWNlUG5uc3BpZFBucHViaWRJbmRleElkLAorCQlQdWJsaWNhdGlvbk5h bWVzcGFjZVBubnNwaWRQbnB1YmlkUG50eXBlSW5kZXhJZCwKIAkJS0VZKEFudW1fcGdfcHVi bGljYXRpb25fbmFtZXNwYWNlX3BubnNwaWQsCi0JCQlBbnVtX3BnX3B1YmxpY2F0aW9uX25h bWVzcGFjZV9wbnB1YmlkKSwKKwkJCUFudW1fcGdfcHVibGljYXRpb25fbmFtZXNwYWNlX3Bu cHViaWQsCisJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9wbnR5cGUpLAogCQk2 NAogCX0sCiAJW1BVQkxJQ0FUSU9OT0lEXSA9IHsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDIyZDFl NmNmOTIyLi44MDhmZjRiZWZjNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00MDg4LDEwICs0MDg4 LDEyIEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0 aW9ucykKIAlpbnQJCQlpX3B1Ym5hbWU7CiAJaW50CQkJaV9wdWJvd25lcjsKIAlpbnQJCQlp X3B1YmFsbHRhYmxlczsKKwlpbnQJCQlpX3B1YmFsbHNlcXVlbmNlczsKIAlpbnQJCQlpX3B1 Ymluc2VydDsKIAlpbnQJCQlpX3B1YnVwZGF0ZTsKIAlpbnQJCQlpX3B1YmRlbGV0ZTsKIAlp bnQJCQlpX3B1YnRydW5jYXRlOworCWludAkJCWlfcHVic2VxdWVuY2U7CiAJaW50CQkJaV9w dWJ2aWFyb290OwogCWludAkJCWksCiAJCQkJbnR1cHM7CkBAIC00MTA3LDIzICs0MTA5LDI5 IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9u cykKIAlyZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAogCS8qIEdldCB0aGUgcHVibGljYXRp b25zLiAqLwotCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEzMDAwMCkKKwlpZiAoZm91 dC0+cmVtb3RlVmVyc2lvbiA+PSAxNzAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LAorCQkJCQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIK KwkJCQkJCQkgInAucHVib3duZXIsICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1 YmFsbHNlcXVlbmNlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwg cC5wdWJ0cnVuY2F0ZSwgcC5wdWJzZXF1ZW5jZSwgcC5wdWJ2aWFyb290ICIKKwkJCQkJCQkg IkZST00gcGdfcHVibGljYXRpb24gcCIpOworCWVsc2UgaWYgKGZvdXQtPnJlbW90ZVZlcnNp b24gPj0gMTMwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkg IlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1 Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVi dXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJ2aWFyb290ICIKKwkJ CQkJCQkgInAucHViYWxsdGFibGVzLCBmYWxzZSBhcyBwLnB1YmFsbHNlcXVlbmNlcywgcC5w dWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgZmFs c2UgYXMgcC5wdWJzZXF1ZW5jZSwgcC5wdWJ2aWFyb290ICIKIAkJCQkJCQkgIkZST00gcGdf cHVibGljYXRpb24gcCIpOwogCWVsc2UgaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTEw MDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBw LnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAi Ci0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBw LnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCisJCQkJ CQkJICJwLnB1YmFsbHRhYmxlcywgZmFsc2UgYXMgcC5wdWJhbGxzZXF1ZW5jZXMsIHAucHVi aW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNl IEFTIHB1YnNlcXVlbmNlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKIAkJCQkJCQkgIkZST00g cGdfcHVibGljYXRpb24gcCIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksCiAJCQkJCQkJICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgog CQkJCQkJCSAicC5wdWJvd25lciwgIgotCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHVi aW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIGZhbHNlIEFTIHB1YnRydW5jYXRl LCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBmYWxz ZSBhcyBwLnB1YmFsbHNlcXVlbmNlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1 YmRlbGV0ZSwgZmFsc2UgQVMgcHVidHJ1bmNhdGUsIGZhbHNlIEFTIHB1YnNlcXVlbmNlLCBm YWxzZSBBUyBwdWJ2aWFyb290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24gcCIp OwogCiAJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19U VVBMRVNfT0spOwpAQCAtNDEzNSwxMCArNDE0MywxMiBAQCBnZXRQdWJsaWNhdGlvbnMoQXJj aGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJaV9wdWJuYW1lID0gUFFmbnVt YmVyKHJlcywgInB1Ym5hbWUiKTsKIAlpX3B1Ym93bmVyID0gUFFmbnVtYmVyKHJlcywgInB1 Ym93bmVyIik7CiAJaV9wdWJhbGx0YWJsZXMgPSBQUWZudW1iZXIocmVzLCAicHViYWxsdGFi bGVzIik7CisJaV9wdWJhbGxzZXF1ZW5jZXMgPSBQUWZudW1iZXIocmVzLCAicHViYWxsc2Vx dWVuY2VzIik7CiAJaV9wdWJpbnNlcnQgPSBQUWZudW1iZXIocmVzLCAicHViaW5zZXJ0Iik7 CiAJaV9wdWJ1cGRhdGUgPSBQUWZudW1iZXIocmVzLCAicHVidXBkYXRlIik7CiAJaV9wdWJk ZWxldGUgPSBQUWZudW1iZXIocmVzLCAicHViZGVsZXRlIik7CiAJaV9wdWJ0cnVuY2F0ZSA9 IFBRZm51bWJlcihyZXMsICJwdWJ0cnVuY2F0ZSIpOworCWlfcHVic2VxdWVuY2UgPSBQUWZu dW1iZXIocmVzLCAicHVic2VxdWVuY2UiKTsKIAlpX3B1YnZpYXJvb3QgPSBQUWZudW1iZXIo cmVzLCAicHVidmlhcm9vdCIpOwogCiAJcHViaW5mbyA9IHBnX21hbGxvYyhudHVwcyAqIHNp emVvZihQdWJsaWNhdGlvbkluZm8pKTsKQEAgLTQxNTQsNiArNDE2NCw4IEBAIGdldFB1Ymxp Y2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAkJcHViaW5m b1tpXS5yb2xuYW1lID0gZ2V0Um9sZU5hbWUoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVib3du ZXIpKTsKIAkJcHViaW5mb1tpXS5wdWJhbGx0YWJsZXMgPQogCQkJKHN0cmNtcChQUWdldHZh bHVlKHJlcywgaSwgaV9wdWJhbGx0YWJsZXMpLCAidCIpID09IDApOworCQlwdWJpbmZvW2ld LnB1YmFsbHNlcXVlbmNlcyA9CisJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1 YmFsbHNlcXVlbmNlcyksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHViaW5zZXJ0ID0K IAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHViaW5zZXJ0KSwgInQiKSA9PSAw KTsKIAkJcHViaW5mb1tpXS5wdWJ1cGRhdGUgPQpAQCAtNDE2Miw2ICs0MTc0LDggQEAgZ2V0 UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25zKQogCQkJ KHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJkZWxldGUpLCAidCIpID09IDApOwog CQlwdWJpbmZvW2ldLnB1YnRydW5jYXRlID0KIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMs IGksIGlfcHVidHJ1bmNhdGUpLCAidCIpID09IDApOworCQlwdWJpbmZvW2ldLnB1YnNlcXVl bmNlID0KKwkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVic2VxdWVuY2UpLCAi dCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YnZpYXJvb3QgPQogCQkJKHN0cmNtcChQUWdl dHZhbHVlKHJlcywgaSwgaV9wdWJ2aWFyb290KSwgInQiKSA9PSAwKTsKIApAQCAtNDIwNyw2 ICs0MjIxLDkgQEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1Ymxp Y2F0aW9uSW5mbyAqcHViaW5mbykKIAlpZiAocHViaW5mby0+cHViYWxsdGFibGVzKQogCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUyIpOwogCisJaWYg KHB1YmluZm8tPnB1YmFsbHNlcXVlbmNlcykKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgRk9SIEFMTCBTRVFVRU5DRVMiKTsKKwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiIFdJVEggKHB1Ymxpc2ggPSAnIik7CiAJaWYgKHB1YmluZm8tPnB1Ymluc2VydCkK IAl7CkBAIC00MjQxLDYgKzQyNTgsMTUgQEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZv dXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbykKIAkJZmlyc3QgPSBmYWxzZTsK IAl9CiAKKwlpZiAocHViaW5mby0+cHVic2VxdWVuY2UpCisJeworCQlpZiAoIWZpcnN0KQor CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsICIpOworCisJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAic2VxdWVuY2UiKTsKKwkJZmlyc3QgPSBmYWxzZTsKKwl9CisK IAlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIocXVlcnksICdcJycpOwogCiAJaWYgKHB1YmluZm8t PnB1YnZpYXJvb3QpCkBAIC00Mjg3LDYgKzQzMTMsNyBAQCBnZXRQdWJsaWNhdGlvbk5hbWVz cGFjZXMoQXJjaGl2ZSAqZm91dCkKIAlpbnQJCQlpX29pZDsKIAlpbnQJCQlpX3BucHViaWQ7 CiAJaW50CQkJaV9wbm5zcGlkOworCWludAkJCWlfcG50eXBlOwogCWludAkJCWksCiAJCQkJ aiwKIAkJCQludHVwczsKQEAgLTQyOTgsNyArNDMyNSw3IEBAIGdldFB1YmxpY2F0aW9uTmFt ZXNwYWNlcyhBcmNoaXZlICpmb3V0KQogCiAJLyogQ29sbGVjdCBhbGwgcHVibGljYXRpb24g bWVtYmVyc2hpcCBpbmZvLiAqLwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJ CQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcG5wdWJpZCwgcG5uc3BpZCAiCisJCQkJCQkg IlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwbnB1YmlkLCBwbm5zcGlkLCBwbnR5cGUgIgogCQkJ CQkJICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNlIik7CiAJcmVz ID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0sp OwogCkBAIC00MzA4LDYgKzQzMzUsNyBAQCBnZXRQdWJsaWNhdGlvbk5hbWVzcGFjZXMoQXJj aGl2ZSAqZm91dCkKIAlpX29pZCA9IFBRZm51bWJlcihyZXMsICJvaWQiKTsKIAlpX3BucHVi aWQgPSBQUWZudW1iZXIocmVzLCAicG5wdWJpZCIpOwogCWlfcG5uc3BpZCA9IFBRZm51bWJl cihyZXMsICJwbm5zcGlkIik7CisJaV9wbnR5cGUgPSBQUWZudW1iZXIocmVzLCAicG50eXBl Iik7CiAKIAkvKiB0aGlzIGFsbG9jYXRpb24gbWF5IGJlIG1vcmUgdGhhbiB3ZSBuZWVkICov CiAJcHVic2luZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoUHVibGljYXRpb25TY2hl bWFJbmZvKSk7CkBAIC00MzE3LDYgKzQzNDUsNyBAQCBnZXRQdWJsaWNhdGlvbk5hbWVzcGFj ZXMoQXJjaGl2ZSAqZm91dCkKIAl7CiAJCU9pZAkJCXBucHViaWQgPSBhdG9vaWQoUFFnZXR2 YWx1ZShyZXMsIGksIGlfcG5wdWJpZCkpOwogCQlPaWQJCQlwbm5zcGlkID0gYXRvb2lkKFBR Z2V0dmFsdWUocmVzLCBpLCBpX3BubnNwaWQpKTsKKwkJY2hhcgkJcG50eXBlID0gUFFnZXR2 YWx1ZShyZXMsIGksIGlfcG50eXBlKVswXTsKIAkJUHVibGljYXRpb25JbmZvICpwdWJpbmZv OwogCQlOYW1lc3BhY2VJbmZvICpuc3BpbmZvOwogCkBAIC00MzQ4LDYgKzQzNzcsNyBAQCBn ZXRQdWJsaWNhdGlvbk5hbWVzcGFjZXMoQXJjaGl2ZSAqZm91dCkKIAkJcHVic2luZm9bal0u ZG9iai5uYW1lID0gbnNwaW5mby0+ZG9iai5uYW1lOwogCQlwdWJzaW5mb1tqXS5wdWJsaWNh dGlvbiA9IHB1YmluZm87CiAJCXB1YnNpbmZvW2pdLnB1YnNjaGVtYSA9IG5zcGluZm87CisJ CXB1YnNpbmZvW2pdLnB1YnR5cGUgPSBwbnR5cGU7CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIg d2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlUHVibGljYXRpb25PYmpl Y3QoJihwdWJzaW5mb1tqXS5kb2JqKSwgZm91dCk7CkBAIC00NTEzLDcgKzQ1NDMsMTEgQEAg ZHVtcFB1YmxpY2F0aW9uTmFtZXNwYWNlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0 aW9uU2NoZW1hSW5mbyAqcHVic2luZm8pCiAJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigp OwogCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBTFRFUiBQVUJMSUNBVElPTiAlcyAi LCBmbXRJZChwdWJpbmZvLT5kb2JqLm5hbWUpKTsKLQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVy eSwgIkFERCBUQUJMRVMgSU4gU0NIRU1BICVzO1xuIiwgZm10SWQoc2NoZW1haW5mby0+ZG9i ai5uYW1lKSk7CisKKwlpZiAocHVic2luZm8tPnB1YnR5cGUgPT0gJ3QnKQorCQlhcHBlbmRQ UUV4cEJ1ZmZlcihxdWVyeSwgIkFERCBUQUJMRVMgSU4gU0NIRU1BICVzO1xuIiwgZm10SWQo c2NoZW1haW5mby0+ZG9iai5uYW1lKSk7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihx dWVyeSwgIkFERCBTRVFVRU5DRVMgSU4gU0NIRU1BICVzO1xuIiwgZm10SWQoc2NoZW1haW5m by0+ZG9iai5uYW1lKSk7CiAKIAkvKgogCSAqIFRoZXJlIGlzIG5vIHBvaW50IGluIGNyZWF0 aW5nIGRyb3AgcXVlcnkgYXMgdGhlIGRyb3AgaXMgZG9uZSBieSBzY2hlbWEKQEAgLTQ1NDYs NiArNDU4MCw3IEBAIGR1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUgKmZvdXQsIGNvbnN0 IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmluZm8pCiAJVGFibGVJbmZvICAqdGJpbmZvID0g cHVicmluZm8tPnB1YnRhYmxlOwogCVBRRXhwQnVmZmVyIHF1ZXJ5OwogCWNoYXIJICAgKnRh ZzsKKwljaGFyCSAgICpkZXNjcmlwdGlvbjsKIAogCS8qIERvIG5vdGhpbmcgaW4gZGF0YS1v bmx5IGR1bXAgKi8KIAlpZiAoZG9wdC0+ZGF0YU9ubHkpCkBAIC00NTU1LDggKzQ1OTAsMTkg QEAgZHVtcFB1YmxpY2F0aW9uVGFibGUoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRp b25SZWxJbmZvICpwdWJyaW5mbykKIAogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsK IAotCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMgQURE IFRBQkxFIE9OTFkiLAotCQkJCQkgIGZtdElkKHB1YmluZm8tPmRvYmoubmFtZSkpOworCWlm ICh0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkKKwl7CisJCWFwcGVuZFBR RXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMgQUREIFNFUVVFTkNFIiwK KwkJCQkJCSAgZm10SWQocHViaW5mby0+ZG9iai5uYW1lKSk7CisJCWRlc2NyaXB0aW9uID0g IlBVQkxJQ0FUSU9OIFNFUVVFTkNFIjsKKwl9CisJZWxzZQorCXsKKwkJYXBwZW5kUFFFeHBC dWZmZXIocXVlcnksICJBTFRFUiBQVUJMSUNBVElPTiAlcyBBREQgVEFCTEUgT05MWSIsCisJ CQkJCQkgIGZtdElkKHB1YmluZm8tPmRvYmoubmFtZSkpOworCQlkZXNjcmlwdGlvbiA9ICJQ VUJMSUNBVElPTiBUQUJMRSI7CisJfQorCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIg JXMiLAogCQkJCQkgIGZtdFF1YWxpZmllZER1bXBhYmxlKHRiaW5mbykpOwogCkBAIC00NTg2 LDcgKzQ2MzIsNyBAQCBkdW1wUHVibGljYXRpb25UYWJsZShBcmNoaXZlICpmb3V0LCBjb25z dCBQdWJsaWNhdGlvblJlbEluZm8gKnB1YnJpbmZvKQogCQkJCQkgQVJDSElWRV9PUFRTKC50 YWcgPSB0YWcsCiAJCQkJCQkJCSAgLm5hbWVzcGFjZSA9IHRiaW5mby0+ZG9iai5uYW1lc3Bh Y2UtPmRvYmoubmFtZSwKIAkJCQkJCQkJICAub3duZXIgPSBwdWJpbmZvLT5yb2xuYW1lLAot CQkJCQkJCQkgIC5kZXNjcmlwdGlvbiA9ICJQVUJMSUNBVElPTiBUQUJMRSIsCisJCQkJCQkJ CSAgLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24sCiAJCQkJCQkJCSAgLnNlY3Rpb24gPSBT RUNUSU9OX1BPU1RfREFUQSwKIAkJCQkJCQkJICAuY3JlYXRlU3RtdCA9IHF1ZXJ5LT5kYXRh KSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDlhMzQzNDdjZmM3Li5jODcxMTQ1OTNlNyAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oCkBAIC02MjQsMTAgKzYyNCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBfUHVi bGljYXRpb25JbmZvCiAJRHVtcGFibGVPYmplY3QgZG9iajsKIAljb25zdCBjaGFyICpyb2xu YW1lOwogCWJvb2wJCXB1YmFsbHRhYmxlczsKKwlib29sCQlwdWJhbGxzZXF1ZW5jZXM7CiAJ Ym9vbAkJcHViaW5zZXJ0OwogCWJvb2wJCXB1YnVwZGF0ZTsKIAlib29sCQlwdWJkZWxldGU7 CiAJYm9vbAkJcHVidHJ1bmNhdGU7CisJYm9vbAkJcHVic2VxdWVuY2U7CiAJYm9vbAkJcHVi dmlhcm9vdDsKIH0gUHVibGljYXRpb25JbmZvOwogCkBAIC02NTMsNiArNjU1LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uU2NoZW1hSW5mbwogCUR1bXBhYmxlT2JqZWN0IGRv Ymo7CiAJUHVibGljYXRpb25JbmZvICpwdWJsaWNhdGlvbjsKIAlOYW1lc3BhY2VJbmZvICpw dWJzY2hlbWE7CisJY2hhcgkJcHVidHlwZTsKIH0gUHVibGljYXRpb25TY2hlbWFJbmZvOwog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9z cmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCAzOTEyZGJmNDgxYS4uZWNj ZWQxOWM0YTEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs CisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0yOTI3LDcgKzI5 MjcsNyBAQCBteSAldGVzdHMgPSAoCiAJCWNyZWF0ZV9vcmRlciA9PiA1MCwKIAkJY3JlYXRl X3NxbCA9PiAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjE7JywKIAkJcmVnZXhwID0+IHFyL14K LQkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQs IHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQlcUUNSRUFURSBQVUJMSUNBVElP TiBwdWIxIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNh dGUsIHNlcXVlbmNlJyk7XEUKIAkJCS94bSwKIAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNl Y3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCiAJfSwKQEAgLTI5NDcsNyArMjk0Nyw3IEBAIG15 ICV0ZXN0cyA9ICgKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdD UkVBVEUgUFVCTElDQVRJT04gcHViMzsnLAogCQlyZWdleHAgPT4gcXIvXgotCQkJXFFDUkVB VEUgUFVCTElDQVRJT04gcHViMyBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBk ZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjMgV0lU SCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZSwgc2VxdWVu Y2UnKTtcRQogCQkJL3htLAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0 X2RhdGEgPT4gMSwgfSwKIAl9LApAQCAtMjk1Niw3ICsyOTU2LDI3IEBAIG15ICV0ZXN0cyA9 ICgKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgUFVC TElDQVRJT04gcHViNDsnLAogCQlyZWdleHAgPT4gcXIvXgotCQkJXFFDUkVBVEUgUFVCTElD QVRJT04gcHViNCBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRy dW5jYXRlJyk7XEUKKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjQgV0lUSCAocHVibGlz aCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZSwgc2VxdWVuY2UnKTtcRQor CQkJL3htLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4g MSwgfSwKKwl9LAorCisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI1JyA9PiB7CisJCWNyZWF0 ZV9vcmRlciA9PiA1MCwKKwkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 YjUKKwkJCQkJCSBGT1IgQUxMIFNFUVVFTkNFUworCQkJCQkJIFdJVEggKHB1Ymxpc2ggPSBc J1wnKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHVi NSBGT1IgQUxMIFNFUVVFTkNFUyBXSVRIIChwdWJsaXNoID0gJycpO1xFCisJCQkveG0sCisJ CWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0s CisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjYnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+ IDUwLAorCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgUFVCTElDQVRJT04gcHViNjsnLAorCQly ZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViNiBXSVRIIChwdWJs aXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlLCBzZXF1ZW5jZScpO1xF CiAJCQkveG0sCiAJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9 PiAxLCB9LAogCX0sCkBAIC0zMTAyLDYgKzMxMjIsMjcgQEAgbXkgJXRlc3RzID0gKAogCQl1 bmxpa2UgPT4geyBleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwgfSwKIAkgIH0sCiAK KwknQUxURVIgUFVCTElDQVRJT04gcHViMyBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBkdW1w X3Rlc3QnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUxLAorCQljcmVhdGVfc3FsID0+CisJ CSAgJ0FMVEVSIFBVQkxJQ0FUSU9OIHB1YjMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgZHVt cF90ZXN0OycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1 YjMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0O1xFCisJCQkveG0sCisJCWxp a2UgICA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJCXVu bGlrZSA9PiB7IGV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLCB9LAorCX0sCisKKwkn QUxURVIgUFVCTElDQVRJT04gcHViMyBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJsaWMn ID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUyLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0FM VEVSIFBVQkxJQ0FUSU9OIHB1YjMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHVibGljOycs CisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1YjMgQUREIFNF UVVFTkNFUyBJTiBTQ0hFTUEgcHVibGljO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVs bF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKIAknQ1JFQVRFIFND SEVNQSBwdWJsaWMnID0+IHsKIAkJcmVnZXhwID0+IHFyL15DUkVBVEUgU0NIRU1BIHB1Ymxp YzsvbSwKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuYwppbmRleCAzN2Y5NTE2MzIwMS4uNzlmYzUwMTgwYjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCkBAIC0xNzExLDI4ICsxNzExLDE5IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJaWYgKHRhYmxlaW5mby5yZWxraW5kID09IFJF TEtJTkRfU0VRVUVOQ0UpCiAJewogCQlQR3Jlc3VsdCAgICpyZXN1bHQgPSBOVUxMOwotCQlw cmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OwotCQljaGFyCSAgICpmb290ZXJzWzJd ID0ge05VTEwsIE5VTEx9OwogCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDEwMDAwMCkKIAkJ ewogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkgICJTRUxFQ1QgcGdfY2F0 YWxvZy5mb3JtYXRfdHlwZShzZXF0eXBpZCwgTlVMTCkgQVMgXCIlc1wiLFxuIgotCQkJCQkJ CSAgIiAgICAgICBzZXFzdGFydCBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIHNl cW1pbiBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIHNlcW1heCBBUyBcIiVzXCIs XG4iCi0JCQkJCQkJICAiICAgICAgIHNlcWluY3JlbWVudCBBUyBcIiVzXCIsXG4iCi0JCQkJ CQkJICAiICAgICAgIENBU0UgV0hFTiBzZXFjeWNsZSBUSEVOICclcycgRUxTRSAnJXMnIEVO RCBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIHNlcWNhY2hlIEFTIFwiJXNcIlxu IiwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiVHlwZSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9u b29wKCJTdGFydCIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJNaW5pbXVtIiksCi0JCQkJ CQkJICBnZXR0ZXh0X25vb3AoIk1heGltdW0iKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgi SW5jcmVtZW50IiksCisJCQkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cuZm9ybWF0X3R5cGUo c2VxdHlwaWQsIE5VTEwpLFxuIgorCQkJCQkJCSAgIiAgICAgICBzZXFzdGFydCxcbiIKKwkJ CQkJCQkgICIgICAgICAgc2VxbWluLFxuIgorCQkJCQkJCSAgIiAgICAgICBzZXFtYXgsXG4i CisJCQkJCQkJICAiICAgICAgIHNlcWluY3JlbWVudCxcbiIKKwkJCQkJCQkgICIgICAgICAg Q0FTRSBXSEVOIHNlcWN5Y2xlIFRIRU4gJyVzJyBFTFNFICclcycgRU5ELFxuIgorCQkJCQkJ CSAgIiAgICAgICBzZXFjYWNoZVxuIiwKIAkJCQkJCQkgIGdldHRleHRfbm9vcCgieWVzIiks Ci0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIm5vIiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3Ao IkN5Y2xlcz8iKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiQ2FjaGUiKSk7CisJCQkJCQkJ ICBnZXR0ZXh0X25vb3AoIm5vIikpOwogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJ CQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfc2VxdWVuY2VcbiIKIAkJCQkJCQkgICJXSEVS RSBzZXFyZWxpZCA9ICclcyc7IiwKQEAgLTE3NDEsMjIgKzE3MzIsMTUgQEAgZGVzY3JpYmVP bmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJZWxzZQogCQl7CiAJ CQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJCSAgIlNFTEVDVCAnYmlnaW50JyBB UyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIHN0YXJ0X3ZhbHVlIEFTIFwiJXNcIixc biIKLQkJCQkJCQkgICIgICAgICAgbWluX3ZhbHVlIEFTIFwiJXNcIixcbiIKLQkJCQkJCQkg ICIgICAgICAgbWF4X3ZhbHVlIEFTIFwiJXNcIixcbiIKLQkJCQkJCQkgICIgICAgICAgaW5j cmVtZW50X2J5IEFTIFwiJXNcIixcbiIKLQkJCQkJCQkgICIgICAgICAgQ0FTRSBXSEVOIGlz X2N5Y2xlZCBUSEVOICclcycgRUxTRSAnJXMnIEVORCBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJ ICAiICAgICAgIGNhY2hlX3ZhbHVlIEFTIFwiJXNcIlxuIiwKLQkJCQkJCQkgIGdldHRleHRf bm9vcCgiVHlwZSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdGFydCIpLAotCQkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJNaW5pbXVtIiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIk1h eGltdW0iKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiSW5jcmVtZW50IiksCisJCQkJCQkJ ICAiU0VMRUNUICdiaWdpbnQnLFxuIgorCQkJCQkJCSAgIiAgICAgICBzdGFydF92YWx1ZSxc biIKKwkJCQkJCQkgICIgICAgICAgbWluX3ZhbHVlLFxuIgorCQkJCQkJCSAgIiAgICAgICBt YXhfdmFsdWUsXG4iCisJCQkJCQkJICAiICAgICAgIGluY3JlbWVudF9ieSxcbiIKKwkJCQkJ CQkgICIgICAgICAgQ0FTRSBXSEVOIGlzX2N5Y2xlZCBUSEVOICclcycgRUxTRSAnJXMnIEVO RCxcbiIKKwkJCQkJCQkgICIgICAgICAgY2FjaGVfdmFsdWVcbiIsCiAJCQkJCQkJICBnZXR0 ZXh0X25vb3AoInllcyIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJubyIpLAotCQkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJDeWNsZXM/IiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkNh Y2hlIikpOworCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJubyIpKTsKIAkJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsICJGUk9NICVzIiwgZm10SWQoc2NoZW1hbmFtZSkpOwogCQkJLyogbXVz dCBiZSBzZXBhcmF0ZSBiZWNhdXNlIGZtdElkIGlzbid0IHJlZW50cmFudCAqLwogCQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIi4lczsiLCBmbXRJZChyZWxhdGlvbm5hbWUpKTsKQEAg LTE3NjYsNiArMTc1MCw1OSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFy ICpzY2hlbWFuYW1lLAogCQlpZiAoIXJlcykKIAkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCisJ CW51bXJvd3MgPSBQUW50dXBsZXMocmVzKTsKKworCQkvKgorCQkgKiBYWFggcmVzZXQgdG8g dXNlIGV4cGFuZGVkIG91dHB1dCBmb3Igc2VxdWVuY2VzIChtYXliZSB3ZSBzaG91bGQKKwkJ ICoga2VlcCB0aGlzIGRpc2FibGVkLCBqdXN0IGxpa2UgZm9yIHRhYmxlcz8pCisJCSAqLwor CQlteW9wdC5leHBhbmRlZCA9IHBzZXQucG9wdC50b3B0LmV4cGFuZGVkOworCisJCXByaW50 VGFibGVJbml0KCZjb250LCAmbXlvcHQsIHRpdGxlLmRhdGEsIDcsIG51bXJvd3MpOworCQlw cmludFRhYmxlSW5pdGlhbGl6ZWQgPSB0cnVlOworCisJCWlmICh0YWJsZWluZm8ucmVscGVy c2lzdGVuY2UgPT0gJ3UnKQorCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJVbmxv Z2dlZCBzZXF1ZW5jZSBcIiVzLiVzXCIiKSwKKwkJCQkJCQkgIHNjaGVtYW5hbWUsIHJlbGF0 aW9ubmFtZSk7CisJCWVsc2UKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0aXRsZSwgXygiU2Vx dWVuY2UgXCIlcy4lc1wiIiksCisJCQkJCQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5hbWUp OworCisJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiVHlwZSIp LCB0cnVlLCAnbCcpOworCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25v b3AoIlN0YXJ0IiksIHRydWUsICdyJyk7CisJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQs IGdldHRleHRfbm9vcCgiTWluaW11bSIpLCB0cnVlLCAncicpOworCQlwcmludFRhYmxlQWRk SGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIk1heGltdW0iKSwgdHJ1ZSwgJ3InKTsKKwkJ cHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJJbmNyZW1lbnQiKSwg dHJ1ZSwgJ3InKTsKKwkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29w KCJDeWNsZXM/IiksIHRydWUsICdsJyk7CisJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQs IGdldHRleHRfbm9vcCgiQ2FjaGUiKSwgdHJ1ZSwgJ3InKTsKKworCQkvKiBHZW5lcmF0ZSB0 YWJsZSBjZWxscyB0byBiZSBwcmludGVkICovCisJCWZvciAoaSA9IDA7IGkgPCBudW1yb3dz OyBpKyspCisJCXsKKwkJCS8qIFR5cGUgKi8KKwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250 LCBQUWdldHZhbHVlKHJlcywgaSwgMCksIGZhbHNlLCBmYWxzZSk7CisKKwkJCS8qIFN0YXJ0 ICovCisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDEp LCBmYWxzZSwgZmFsc2UpOworCisJCQkvKiBNaW5pbXVtICovCisJCQlwcmludFRhYmxlQWRk Q2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDIpLCBmYWxzZSwgZmFsc2UpOworCisJ CQkvKiBNYXhpbXVtICovCisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1 ZShyZXMsIGksIDMpLCBmYWxzZSwgZmFsc2UpOworCisJCQkvKiBJbmNyZW1lbnQgKi8KKwkJ CXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNCksIGZhbHNl LCBmYWxzZSk7CisKKwkJCS8qIEN5Y2xlcz8gKi8KKwkJCXByaW50VGFibGVBZGRDZWxsKCZj b250LCBQUWdldHZhbHVlKHJlcywgaSwgNSksIGZhbHNlLCBmYWxzZSk7CisKKwkJCS8qIENh Y2hlICovCisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGks IDYpLCBmYWxzZSwgZmFsc2UpOworCQl9CisKKwkJLyogRm9vdGVyIGluZm9ybWF0aW9uIGFi b3V0IGEgc2VxdWVuY2UgKi8KKwogCQkvKiBHZXQgdGhlIGNvbHVtbiB0aGF0IG93bnMgdGhp cyBzZXF1ZW5jZSAqLwogCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiU0VMRUNUIHBnX2Nh dGFsb2cucXVvdGVfaWRlbnQobnNwbmFtZSkgfHwgJy4nIHx8IgogCQkJCQkJICAiXG4gICBw Z19jYXRhbG9nLnF1b3RlX2lkZW50KHJlbG5hbWUpIHx8ICcuJyB8fCIKQEAgLTE3OTcsMzIg KzE4MzQsNjMgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1h bmFtZSwKIAkJCXN3aXRjaCAoUFFnZXR2YWx1ZShyZXN1bHQsIDAsIDEpWzBdKQogCQkJewog CQkJCWNhc2UgJ2EnOgotCQkJCQlmb290ZXJzWzBdID0gcHNwcmludGYoXygiT3duZWQgYnk6 ICVzIiksCi0JCQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgMCwgMCkpOworCQkJCQlw cmludFRhYmxlQWRkRm9vdGVyKCZjb250LAorCQkJCQkJCQkJCXBzcHJpbnRmKF8oIk93bmVk IGJ5OiAlcyIpLAorCQkJCQkJCQkJCQkJIFBRZ2V0dmFsdWUocmVzdWx0LCAwLCAwKSkpOwog CQkJCQlicmVhazsKIAkJCQljYXNlICdpJzoKLQkJCQkJZm9vdGVyc1swXSA9IHBzcHJpbnRm KF8oIlNlcXVlbmNlIGZvciBpZGVudGl0eSBjb2x1bW46ICVzIiksCi0JCQkJCQkJCQkJICBQ UWdldHZhbHVlKHJlc3VsdCwgMCwgMCkpOworCQkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZj b250LAorCQkJCQkJCQkJCXBzcHJpbnRmKF8oIlNlcXVlbmNlIGZvciBpZGVudGl0eSBjb2x1 bW46ICVzIiksCisJCQkJCQkJCQkJCQkgUFFnZXR2YWx1ZShyZXN1bHQsIDAsIDApKSk7CiAJ CQkJCWJyZWFrOwogCQkJfQogCQl9CiAJCVBRY2xlYXIocmVzdWx0KTsKIAotCQlpZiAodGFi bGVpbmZvLnJlbHBlcnNpc3RlbmNlID09ICd1JykKLQkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0 aXRsZSwgXygiVW5sb2dnZWQgc2VxdWVuY2UgXCIlcy4lc1wiIiksCi0JCQkJCQkJICBzY2hl bWFuYW1lLCByZWxhdGlvbm5hbWUpOwotCQllbHNlCi0JCQlwcmludGZQUUV4cEJ1ZmZlcigm dGl0bGUsIF8oIlNlcXVlbmNlIFwiJXMuJXNcIiIpLAotCQkJCQkJCSAgc2NoZW1hbmFtZSwg cmVsYXRpb25uYW1lKTsKKwkJLyogcHJpbnQgYW55IHB1YmxpY2F0aW9ucyAqLworCQlpZiAo cHNldC5zdmVyc2lvbiA+PSAxNzAwMDApCisJCXsKKwkJCWludAkJCXR1cGxlcyA9IDA7CiAK LQkJbXlvcHQuZm9vdGVycyA9IGZvb3RlcnM7Ci0JCW15b3B0LnRvcHQuZGVmYXVsdF9mb290 ZXIgPSBmYWxzZTsKLQkJbXlvcHQudGl0bGUgPSB0aXRsZS5kYXRhOwotCQlteW9wdC50cmFu c2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJ CQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdf cHVibGljYXRpb24gcFxuIgorCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uX25hbWVzcGFjZSBwbiBPTiBwLm9pZCA9IHBuLnBucHViaWRcbiIKKwkJCQkJCQkg ICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwYyBPTiBwYy5yZWxuYW1lc3BhY2UgPSBw bi5wbm5zcGlkXG4iCisJCQkJCQkJICAiV0hFUkUgcGMub2lkID0nJXMnIGFuZCBwbi5wbnR5 cGUgPSAncycgYW5kIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVz JylcbiIKKwkJCQkJCQkgICJVTklPTlxuIgorCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4i CisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJ CQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQg PSBwci5wcnB1YmlkXG4iCisJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcydcbiIK KwkJCQkJCQkgICJVTklPTlxuIgorCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJ CQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkgICJX SEVSRSBwLnB1YmFsbHNlcXVlbmNlcyBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19w dWJsaXNoYWJsZSgnJXMnKVxuIgorCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKKwkJCQkJCQkg IG9pZCwgb2lkLCBvaWQsIG9pZCk7CiAKLQkJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNl dC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCQkJcmVzdWx0ID0gUFNRTGV4 ZWMoYnVmLmRhdGEpOworCQkJaWYgKCFyZXN1bHQpCisJCQkJZ290byBlcnJvcl9yZXR1cm47 CisJCQllbHNlCisJCQkJdHVwbGVzID0gUFFudHVwbGVzKHJlc3VsdCk7CisKKwkJCWlmICh0 dXBsZXMgPiAwKQorCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIF8oIlB1YmxpY2F0 aW9uczoiKSk7CisKKwkJCS8qIE1pZ2h0IGJlIGFuIGVtcHR5IHNldCAtIHRoYXQncyBvayAq LworCQkJZm9yIChpID0gMDsgaSA8IHR1cGxlczsgaSsrKQorCQkJeworCQkJCXByaW50ZlBR RXhwQnVmZmVyKCZidWYsICIgICAgXCIlc1wiIiwKKwkJCQkJCQkJICBQUWdldHZhbHVlKHJl c3VsdCwgaSwgMCkpOworCisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgYnVmLmRh dGEpOworCQkJfQorCQkJUFFjbGVhcihyZXN1bHQpOworCQl9CiAKLQkJZnJlZShmb290ZXJz WzBdKTsKKwkJcHJpbnRUYWJsZSgmY29udCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0 LmxvZ2ZpbGUpOwogCiAJCXJldHZhbCA9IHRydWU7CiAJCWdvdG8gZXJyb3JfcmV0dXJuOwkJ Lyogbm90IGFuIGVycm9yLCBqdXN0IHJldHVybiBlYXJseSAqLwpAQCAtMjA0OSw2ICsyMTE3 LDExIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUs CiAJZm9yIChpID0gMDsgaSA8IGNvbHM7IGkrKykKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigm Y29udCwgaGVhZGVyc1tpXSwgdHJ1ZSwgJ2wnKTsKIAorCXJlcyA9IFBTUUxleGVjKGJ1Zi5k YXRhKTsKKwlpZiAoIXJlcykKKwkJZ290byBlcnJvcl9yZXR1cm47CisJbnVtcm93cyA9IFBR bnR1cGxlcyhyZXMpOworCiAJLyogR2VuZXJhdGUgdGFibGUgY2VsbHMgdG8gYmUgcHJpbnRl ZCAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1yb3dzOyBpKyspCiAJewpAQCAtMjk3NCw3ICsz MDQ3LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFt ZSwKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKIAkJ CQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNl IHBuIE9OIHAub2lkID0gcG4ucG5wdWJpZFxuIgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdf Y2F0YWxvZy5wZ19jbGFzcyBwYyBPTiBwYy5yZWxuYW1lc3BhY2UgPSBwbi5wbm5zcGlkXG4i Ci0JCQkJCQkJCSAgIldIRVJFIHBjLm9pZCA9JyVzJyBhbmQgcGdfY2F0YWxvZy5wZ19yZWxh dGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKVxuIgorCQkJCQkJCQkgICJXSEVSRSBwYy5vaWQg PSclcycgYW5kIHBuLnBudHlwZSA9ICd0JyBhbmQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9p c19wdWJsaXNoYWJsZSgnJXMnKVxuIgogCQkJCQkJCQkgICJVTklPTlxuIgogCQkJCQkJCQkg ICJTRUxFQ1QgcHVibmFtZVxuIgogCQkJCQkJCQkgICIgICAgICwgcGdfZ2V0X2V4cHIocHIu cHJxdWFsLCBjLm9pZClcbiIKQEAgLTUxMTEsNyArNTE4NCw3IEBAIGxpc3RTY2hlbWFzKGNv bnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKQogCQlp bnQJCQlpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCi0JCQkJCQkgICJTRUxFQ1Qg cHVibmFtZSBcbiIKKwkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lLCAoQ0FTRSBXSEVOIHBudHlw ZSA9ICd0JyBUSEVOICd0YWJsZXMnIEVMU0UgJ3NlcXVlbmNlcycgRU5EKSBBUyBwdWJ0eXBl XG4iCiAJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgogCQkJ CQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHBu IE9OIHAub2lkID0gcG4ucG5wdWJpZFxuIgogCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFs b2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBwbi5wbm5zcGlkIFxuIgpAQCAtNTEzNyw4 ICs1MjEwLDkgQEAgbGlzdFNjaGVtYXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJi b3NlLCBib29sIHNob3dTeXN0ZW0pCiAJCQkvKiBNaWdodCBiZSBhbiBlbXB0eSBzZXQgLSB0 aGF0J3Mgb2sgKi8KIAkJCWZvciAoaSA9IDA7IGkgPCBwdWJfc2NoZW1hX3R1cGxlczsgaSsr KQogCQkJewotCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgXCIlc1wiIiwKLQkJ CQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCkpOworCQkJCXByaW50ZlBRRXhwQnVm ZmVyKCZidWYsICIgICAgXCIlc1wiICglcykiLAorCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVz dWx0LCBpLCAwKSwKKwkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMSkpOwogCiAJ CQkJZm9vdGVyc1tpICsgMV0gPSBwZ19zdHJkdXAoYnVmLmRhdGEpOwogCQkJfQpAQCAtNjI1 NCw3ICs2MzI4LDcgQEAgbGlzdFB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQog CVBRRXhwQnVmZmVyRGF0YSBidWY7CiAJUEdyZXN1bHQgICAqcmVzOwogCXByaW50UXVlcnlP cHQgbXlvcHQgPSBwc2V0LnBvcHQ7Ci0Jc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2Nv bHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2V9OworCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10g PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2V9OwogCiAJaWYgKHBzZXQuc3ZlcnNpb24gPCAxMDAwMDApCiAJ ewpAQCAtNjI2OCwyMyArNjM0Miw0NSBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIg KnBhdHRlcm4pCiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKLQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLAotCQkJCQkgICJTRUxFQ1QgcHVibmFtZSBBUyBcIiVzXCIsXG4iCi0JCQkJ CSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQocHVib3duZXIpIEFTIFwiJXNcIixc biIKLQkJCQkJICAiICBwdWJhbGx0YWJsZXMgQVMgXCIlc1wiLFxuIgotCQkJCQkgICIgIHB1 Ymluc2VydCBBUyBcIiVzXCIsXG4iCi0JCQkJCSAgIiAgcHVidXBkYXRlIEFTIFwiJXNcIixc biIKLQkJCQkJICAiICBwdWJkZWxldGUgQVMgXCIlc1wiIiwKLQkJCQkJICBnZXR0ZXh0X25v b3AoIk5hbWUiKSwKLQkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIiksCi0JCQkJCSAgZ2V0 dGV4dF9ub29wKCJBbGwgdGFibGVzIiksCi0JCQkJCSAgZ2V0dGV4dF9ub29wKCJJbnNlcnRz IiksCi0JCQkJCSAgZ2V0dGV4dF9ub29wKCJVcGRhdGVzIiksCi0JCQkJCSAgZ2V0dGV4dF9u b29wKCJEZWxldGVzIikpOworCWlmIChwc2V0LnN2ZXJzaW9uID49IDE3MDAwMCkKKwkJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lIEFTIFwiJXNc IixcbiIKKwkJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQocHVib3duZXIp IEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgcHViYWxsdGFibGVzIEFTIFwiJXNcIixcbiIK KwkJCQkJCSAgIiAgcHViYWxsc2VxdWVuY2VzIEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAg cHViaW5zZXJ0IEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgcHVidXBkYXRlIEFTIFwiJXNc IixcbiIKKwkJCQkJCSAgIiAgcHViZGVsZXRlIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRl eHRfbm9vcCgiTmFtZSIpLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIiksCisJCQkJ CQkgIGdldHRleHRfbm9vcCgiQWxsIHRhYmxlcyIpLAorCQkJCQkJICBnZXR0ZXh0X25vb3Ao IkFsbCBzZXF1ZW5jZXMiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksCisJ CQkJCQkgIGdldHRleHRfbm9vcCgiVXBkYXRlcyIpLAorCQkJCQkJICBnZXR0ZXh0X25vb3Ao IkRlbGV0ZXMiKSk7CisJZWxzZQorCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJ ICAiU0VMRUNUIHB1Ym5hbWUgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwZ19jYXRhbG9n LnBnX2dldF91c2VyYnlpZChwdWJvd25lcikgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBw dWJhbGx0YWJsZXMgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwdWJpbnNlcnQgQVMgXCIl c1wiLFxuIgorCQkJCQkJICAiICBwdWJ1cGRhdGUgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAi ICBwdWJkZWxldGUgQVMgXCIlc1wiIiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJOYW1lIiks CisJCQkJCQkgIGdldHRleHRfbm9vcCgiT3duZXIiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29w KCJBbGwgdGFibGVzIiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiSW5zZXJ0cyIpLAorCQkJ CQkJICBnZXR0ZXh0X25vb3AoIlVwZGF0ZXMiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJE ZWxldGVzIikpOworCiAJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTEwMDAwKQogCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiLFxuICBwdWJ0cnVuY2F0ZSBBUyBcIiVzXCIi LAogCQkJCQkJICBnZXR0ZXh0X25vb3AoIlRydW5jYXRlcyIpKTsKKwlpZiAocHNldC5zdmVy c2lvbiA+PSAxNzAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICIs XG4gIHB1YnNlcXVlbmNlIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgiU2Vx dWVuY2VzIikpOwogCWlmIChwc2V0LnN2ZXJzaW9uID49IDEzMDAwMCkKIAkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIixcbiAgcHVidmlhcm9vdCBBUyBcIiVzXCIiLApA QCAtNjM3OCw2ICs2NDc0LDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAq cGF0dGVybikKIAlQR3Jlc3VsdCAgICpyZXM7CiAJYm9vbAkJaGFzX3B1YnRydW5jYXRlOwog CWJvb2wJCWhhc19wdWJ2aWFyb290OworCWJvb2wJCWhhc19wdWJzZXF1ZW5jZTsKIAogCVBR RXhwQnVmZmVyRGF0YSB0aXRsZTsKIAlwcmludFRhYmxlQ29udGVudCBjb250OwpAQCAtNjM5 NCw2ICs2NDkxLDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVy bikKIAogCWhhc19wdWJ0cnVuY2F0ZSA9IChwc2V0LnN2ZXJzaW9uID49IDExMDAwMCk7CiAJ aGFzX3B1YnZpYXJvb3QgPSAocHNldC5zdmVyc2lvbiA+PSAxMzAwMDApOworCWhhc19wdWJz ZXF1ZW5jZSA9IChwc2V0LnN2ZXJzaW9uID49IDE3MDAwMCk7CiAKIAlpbml0UFFFeHBCdWZm ZXIoJmJ1Zik7CiAKQEAgLTY0MDcsNiArNjUwNSwxMCBAQCBkZXNjcmliZVB1YmxpY2F0aW9u cyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCWlmIChoYXNfcHVidmlhcm9vdCkKIAkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoJmJ1ZiwKIAkJCQkJCQkgIiwgcHVidmlhcm9vdCIpOworCWlmICho YXNfcHVic2VxdWVuY2UpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkJ ICIsIHB1YmFsbHNlcXVlbmNlcywgcHVic2VxdWVuY2UiKTsKKwogCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZidWYsCiAJCQkJCQkgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9u XG4iKTsKIApAQCAtNjQ1Miw2ICs2NTU0LDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29u c3QgY2hhciAqcGF0dGVybikKIAkJY2hhcgkgICAqcHViaWQgPSBQUWdldHZhbHVlKHJlcywg aSwgMCk7CiAJCWNoYXIJICAgKnB1Ym5hbWUgPSBQUWdldHZhbHVlKHJlcywgaSwgMSk7CiAJ CWJvb2wJCXB1YmFsbHRhYmxlcyA9IHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgMyksICJ0 IikgPT0gMDsKKwkJYm9vbAkJcHViYWxsc2VxdWVuY2VzID0gc3RyY21wKFBRZ2V0dmFsdWUo cmVzLCBpLCA5KSwgInQiKSA9PSAwOwogCQlwcmludFRhYmxlT3B0IG15b3B0ID0gcHNldC5w b3B0LnRvcHQ7CiAKIAkJaWYgKGhhc19wdWJ0cnVuY2F0ZSkKQEAgLTY0NTksMjkgKzY1NjIs NDMgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJaWYg KGhhc19wdWJ2aWFyb290KQogCQkJbmNvbHMrKzsKIAorCQkvKiBzZXF1ZW5jZXMgaGF2ZSB0 d28gZXh0cmEgY29sdW1ucyAocHViYWxsc2VxdWVuY2VzLCBwdWJzZXF1ZW5jZXMpICovCisJ CWlmIChoYXNfcHVic2VxdWVuY2UpCisJCQluY29scyArPSAyOworCiAJCWluaXRQUUV4cEJ1 ZmZlcigmdGl0bGUpOwogCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlB1YmxpY2F0 aW9uICVzIiksIHB1Ym5hbWUpOwogCQlwcmludFRhYmxlSW5pdCgmY29udCwgJm15b3B0LCB0 aXRsZS5kYXRhLCBuY29scywgbnJvd3MpOwogCiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNv bnQsIGdldHRleHRfbm9vcCgiT3duZXIiKSwgdHJ1ZSwgYWxpZ24pOwogCQlwcmludFRhYmxl QWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIkFsbCB0YWJsZXMiKSwgdHJ1ZSwgYWxp Z24pOworCQlpZiAoaGFzX3B1YnNlcXVlbmNlKQorCQkJcHJpbnRUYWJsZUFkZEhlYWRlcigm Y29udCwgZ2V0dGV4dF9ub29wKCJBbGwgc2VxdWVuY2VzIiksIHRydWUsIGFsaWduKTsKIAkJ cHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksIHRy dWUsIGFsaWduKTsKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29w KCJVcGRhdGVzIiksIHRydWUsIGFsaWduKTsKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29u dCwgZ2V0dGV4dF9ub29wKCJEZWxldGVzIiksIHRydWUsIGFsaWduKTsKIAkJaWYgKGhhc19w dWJ0cnVuY2F0ZSkKIAkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9v cCgiVHJ1bmNhdGVzIiksIHRydWUsIGFsaWduKTsKKwkJaWYgKGhhc19wdWJzZXF1ZW5jZSkK KwkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiU2VxdWVuY2Vz IiksIHRydWUsIGFsaWduKTsKIAkJaWYgKGhhc19wdWJ2aWFyb290KQogCQkJcHJpbnRUYWJs ZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJWaWEgcm9vdCIpLCB0cnVlLCBhbGln bik7CiAKLQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAy KSwgZmFsc2UsIGZhbHNlKTsKLQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFs dWUocmVzLCBpLCAzKSwgZmFsc2UsIGZhbHNlKTsKLQkJcHJpbnRUYWJsZUFkZENlbGwoJmNv bnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA0KSwgZmFsc2UsIGZhbHNlKTsKLQkJcHJpbnRUYWJs ZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA1KSwgZmFsc2UsIGZhbHNlKTsK LQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA2KSwgZmFs c2UsIGZhbHNlKTsKKwkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVz LCBpLCAyKSwgZmFsc2UsIGZhbHNlKTsJLyogb3duZXIgKi8KKwkJcHJpbnRUYWJsZUFkZENl bGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAzKSwgZmFsc2UsIGZhbHNlKTsJLyogYWxs IHRhYmxlcyAqLworCisJCWlmIChoYXNfcHVic2VxdWVuY2UpCisJCQlwcmludFRhYmxlQWRk Q2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDkpLCBmYWxzZSwgZmFsc2UpOwkvKiBh bGwgc2VxdWVuY2VzICovCisKKwkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFs dWUocmVzLCBpLCA0KSwgZmFsc2UsIGZhbHNlKTsJLyogaW5zZXJ0ICovCisJCXByaW50VGFi bGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNSksIGZhbHNlLCBmYWxzZSk7 CS8qIHVwZGF0ZSAqLworCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShy ZXMsIGksIDYpLCBmYWxzZSwgZmFsc2UpOwkvKiBkZWxldGUgKi8KIAkJaWYgKGhhc19wdWJ0 cnVuY2F0ZSkKLQkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywg aSwgNyksIGZhbHNlLCBmYWxzZSk7CisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFn ZXR2YWx1ZShyZXMsIGksIDcpLCBmYWxzZSwgZmFsc2UpOwkvKiB0cnVuY2F0ZSAqLworCQlp ZiAoaGFzX3B1YnNlcXVlbmNlKQorCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0 dmFsdWUocmVzLCBpLCAxMCksIGZhbHNlLCBmYWxzZSk7IC8qIHNlcXVlbmNlICovCiAJCWlm IChoYXNfcHVidmlhcm9vdCkKLQkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZh bHVlKHJlcywgaSwgOCksIGZhbHNlLCBmYWxzZSk7CisJCQlwcmludFRhYmxlQWRkQ2VsbCgm Y29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDgpLCBmYWxzZSwgZmFsc2UpOwkvKiB2aWEgcm9v dCAqLwogCiAJCWlmICghcHViYWxsdGFibGVzKQogCQl7CkBAIC02NTEyLDYgKzY2MjksNyBA QCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkJCSAg IldIRVJFIGMucmVsbmFtZXNwYWNlID0gbi5vaWRcbiIKIAkJCQkJCQkgICIgIEFORCBjLm9p ZCA9IHByLnBycmVsaWRcbiIKIAkJCQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVzJ1xu IgorCQkJCQkJCSAgIiAgQU5EIGMucmVsa2luZCAhPSAnUydcbiIJLyogZXhjbHVkZSBzZXF1 ZW5jZXMgKi8KIAkJCQkJCQkgICJPUkRFUiBCWSAxLDIiLCBwdWJpZCk7CiAJCQlpZiAoIWFk ZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIlRhYmxlczoiKSwgZmFsc2UsICZj b250KSkKIAkJCQlnb3RvIGVycm9yX3JldHVybjsKQEAgLTY1MjMsNyArNjY0MSw3IEBAIGRl c2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCQkJCSAgIlNF TEVDVCBuLm5zcG5hbWVcbiIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX25hbWVz cGFjZSBuXG4iCiAJCQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZSBwbiBPTiBuLm9pZCA9IHBuLnBubnNwaWRcbiIKLQkJCQkJCQkJICAi V0hFUkUgcG4ucG5wdWJpZCA9ICclcydcbiIKKwkJCQkJCQkJICAiV0hFUkUgcG4ucG5wdWJp ZCA9ICclcycgQU5EIHBuLnBudHlwZSA9ICd0J1xuIgogCQkJCQkJCQkgICJPUkRFUiBCWSAx IiwgcHViaWQpOwogCQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1Ziwg XygiVGFibGVzIGZyb20gc2NoZW1hczoiKSwKIAkJCQkJCQkJCQkJCXRydWUsICZjb250KSkK QEAgLTY1MzEsNiArNjY0OSwzNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFy ICpwYXR0ZXJuKQogCQkJfQogCQl9CiAKKwkJaWYgKCFwdWJhbGxzZXF1ZW5jZXMpCisJCXsK KwkJCS8qIEdldCB0aGUgc2VxdWVuY2VzIGZvciB0aGUgc3BlY2lmaWVkIHB1YmxpY2F0aW9u ICovCisJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBuLm5z cG5hbWUsIGMucmVsbmFtZSwgTlVMTCwgTlVMTFxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjLFxuIgorCQkJCQkJCSAgIiAgICAgcGdfY2F0YWxvZy5wZ19uYW1l c3BhY2UgbixcbiIKKwkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25f cmVsIHByXG4iCisJCQkJCQkJICAiV0hFUkUgYy5yZWxuYW1lc3BhY2UgPSBuLm9pZFxuIgor CQkJCQkJCSAgIiAgQU5EIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJCQkJCSAgIiAgQU5E IHByLnBycHViaWQgPSAnJXMnXG4iCisJCQkJCQkJICAiICBBTkQgYy5yZWxraW5kID0gJ1Mn XG4iIC8qIG9ubHkgc2VxdWVuY2VzICovCisJCQkJCQkJICAiT1JERVIgQlkgMSwyIiwgcHVi aWQpOworCQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCAiU2VxdWVu Y2VzOiIsIGZhbHNlLCAmY29udCkpCisJCQkJZ290byBlcnJvcl9yZXR1cm47CisKKwkJCWlm IChwc2V0LnN2ZXJzaW9uID49IDE1MDAwMCkKKwkJCXsKKwkJCQkvKiBHZXQgdGhlIHNjaGVt YXMgZm9yIHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb24gKi8KKwkJCQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLAorCQkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lXG4iCisJCQkJCQkJCSAg IkZST00gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgblxuIgorCQkJCQkJCQkgICIgICAgIEpP SU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG4gT04gbi5vaWQgPSBw bi5wbm5zcGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHBuLnBucHViaWQgPSAnJXMnIEFORCBw bi5wbnR5cGUgPSAncydcbiIKKwkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKKwkJ CQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsICJTZXF1ZW5jZXMgZnJv bSBzY2hlbWFzOiIsCisJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCisJCQkJCWdvdG8gZXJy b3JfcmV0dXJuOworCQkJfQorCQl9CisKIAkJcHJpbnRUYWJsZSgmY29udCwgcHNldC5xdWVy eUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOwogCQlwcmludFRhYmxlQ2xlYW51cCgmY29u dCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCAwOTkxNDE2NWU0Mi4uY2QxYmQ0ZWJmODEg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTE4OTAsMTEgKzE4OTAsMTUgQEAgcHNxbF9jb21w bGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJQ09NUExF VEVfV0lUSCgiQUREIiwgIkRST1AiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwgIlNFVCIp OwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBBREQgKi8KIAllbHNlIGlmIChNYXRj aGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIikpCi0JCUNPTVBM RVRFX1dJVEgoIlRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwkJQ09NUExFVEVfV0lU SCgiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIsICJTRVFVRU5DRVMgSU4gU0NIRU1BIiwg IlNFUVVFTkNFIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkFERHxTRVQiLCAiVEFCTEUiKSB8fAogCQkJIChIZWFkTWF0Y2hlcygi QUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxTRVQiLCAiVEFCTEUiKSAm JgogCQkJICBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkpCiAJCUNPTVBMRVRFX1dJVEhfU0NI RU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxzZSBpZiAoTWF0Y2hl cygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxTRVQiLCAiU0VRVUVO Q0UiKSB8fAorCQkJIChIZWFkTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkFERHxTRVQiLCAiU0VRVUVOQ0UiKSAmJgorCQkJICBlbmRzX3dpdGgocHJldl93 ZCwgJywnKSkpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0 X29mX3NlcXVlbmNlcyk7CiAKIAkvKgogCSAqICJBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4g U0VUIFRBQkxFIDxuYW1lPiBXSEVSRSAoIiAtIGNvbXBsZXRlIHdpdGgKQEAgLTE5MTQsMTEg KzE5MTgsMTEgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFy dCwgaW50IGVuZCkKIAkJQ09NUExFVEVfV0lUSCgiLCIpOwogCS8qIEFMVEVSIFBVQkxJQ0FU SU9OIDxuYW1lPiBEUk9QICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElD QVRJT04iLCBNYXRjaEFueSwgIkRST1AiKSkKLQkJQ09NUExFVEVfV0lUSCgiVEFCTEVTIElO IFNDSEVNQSIsICJUQUJMRSIpOworCQlDT01QTEVURV9XSVRIKCJUQUJMRVMgSU4gU0NIRU1B IiwgIlRBQkxFIiwgIlNFUVVFTkNFUyBJTiBTQ0hFTUEiLCAiU0VRVUVOQ0UiKTsKIAkvKiBB TFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIpKQotCQlDT01QTEVURV9XSVRI KCIoIiwgIlRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKLQllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8U0VUIiwgIlRB QkxFUyIsICJJTiIsICJTQ0hFTUEiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCIsICJUQUJMRVMg SU4gU0NIRU1BIiwgIlRBQkxFIiwgIlNFUVVFTkNFUyBJTiBTQ0hFTUEiLCAiU0VRVUVOQ0Ui KTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiQUREfERST1B8U0VUIiwgIlRBQkxFU3xTRVFVRU5DRVMiLCAiSU4iLCAiU0NIRU1BIikp CiAJCUNPTVBMRVRFX1dJVEhfUVVFUllfUExVUyhRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFz CiAJCQkJCQkJCSAiIEFORCBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXFxcXyUlJyIsCiAJCQkJ CQkJCSAiQ1VSUkVOVF9TQ0hFTUEiKTsKQEAgLTMxMzEsMjQgKzMxMzUsMzEgQEAgcHNxbF9j b21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAogLyog Q1JFQVRFIFBVQkxJQ0FUSU9OICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnkpKQotCQlDT01QTEVURV9XSVRIKCJGT1IgVEFCTEUiLCAi Rk9SIEFMTCBUQUJMRVMiLCAiRk9SIFRBQkxFUyBJTiBTQ0hFTUEiLCAiV0lUSCAoIik7CisJ CUNPTVBMRVRFX1dJVEgoIkZPUiBUQUJMRSIsICJGT1IgQUxMIFRBQkxFUyIsICJGT1IgVEFC TEVTIElOIFNDSEVNQSIsICJGT1IgU0VRVUVOQ0UiLCAiRk9SIEFMTCBTRVFVRU5DRVMiLCAi Rk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUEiLCAiV0lUSCAoIik7CiAJZWxzZSBpZiAoTWF0Y2hl cygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiKSkKLQkJQ09NUExF VEVfV0lUSCgiVEFCTEUiLCAiQUxMIFRBQkxFUyIsICJUQUJMRVMgSU4gU0NIRU1BIik7CisJ CUNPTVBMRVRFX1dJVEgoIlRBQkxFIiwgIkFMTCBUQUJMRVMiLCAiVEFCTEVTIElOIFNDSEVN QSIsICJTRVFVRU5DRSIsICJBTEwgU0VRVUVOQ0VTIiwgIlNFUVVFTkNFUyBJTiBTQ0hFTUEi KTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFu eSwgIkZPUiIsICJBTEwiKSkKLQkJQ09NUExFVEVfV0lUSCgiVEFCTEVTIik7Ci0JZWxzZSBp ZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAi QUxMIiwgIlRBQkxFUyIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRVMiLCAiU0VRVUVOQ0VT Iik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hB bnksICJGT1IiLCAiQUxMIiwgIlRBQkxFU3xTRVFVRU5DRVMiKSkKIAkJQ09NUExFVEVfV0lU SCgiV0lUSCAoIik7Ci0JZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIikpCisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JF QVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTfFNFUVVFTkNF UyIpKQogCQlDT01QTEVURV9XSVRIKCJJTiBTQ0hFTUEiKTsKLQllbHNlIGlmIChNYXRjaGVz KCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRSIsIE1h dGNoQW55KSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJZWxzZSBpZiAoTWF0Y2hl cygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEV8U0VR VUVOQ0UiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQlDT01Q TEVURV9XSVRIKCJXSEVSRSAoIiwgIldJVEggKCIpOwogCS8qIENvbXBsZXRlICJDUkVBVEUg UFVCTElDQVRJT04gPG5hbWU+IEZPUiBUQUJMRSIgd2l0aCAiPHRhYmxlPiwgLi4uIiAqLwog CWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi Rk9SIiwgIlRBQkxFIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zv cl9saXN0X29mX3RhYmxlcyk7CiAKIAkvKgotCSAqICJDUkVBVEUgUFVCTElDQVRJT04gPG5h bWU+IEZPUiBUQUJMRSA8bmFtZT4gV0hFUkUgKCIgLSBjb21wbGV0ZSB3aXRoCi0JICogdGFi bGUgYXR0cmlidXRlcworCSAqIENvbXBsZXRlICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+ IEZPUiBTRVFVRU5DRSIgd2l0aCAiPHNlcXVlbmNlPiwKKwkgKiAuLi4iCisJICovCisJZWxz ZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1Ii LCAiU0VRVUVOQ0UiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2Zfc2VxdWVuY2VzKTsKKworCS8qCisJICogIkNSRUFURSBQVUJMSUNBVElPTiA8 bmFtZT4gRk9SIFRBQkxFfFNFUVVFTkNFIDxuYW1lPiBXSEVSRSAoIiAtCisJICogY29tcGxl dGUgd2l0aCB0YWJsZSBhdHRyaWJ1dGVzCiAJICovCiAJZWxzZSBpZiAoSGVhZE1hdGNoZXMo IkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55KSAmJiBUYWlsTWF0Y2hlcygiV0hF UkUiKSkKIAkJQ09NUExFVEVfV0lUSCgiKCIpOwpAQCAtMzE2MCwxMSArMzE3MSwxMSBAQCBw c3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQog CS8qCiAJICogQ29tcGxldGUgIkNSRUFURSBQVUJMSUNBVElPTiA8bmFtZT4gRk9SIFRBQkxF UyBJTiBTQ0hFTUEgPHNjaGVtYT4sIC4uLiIKIAkgKi8KLQllbHNlIGlmIChNYXRjaGVzKCJD UkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4i LCAiU0NIRU1BIikpCisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTfFNFUVVFTkNFUyIsICJJTiIsICJTQ0hFTUEi KSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVt YXMKIAkJCQkJCQkJICIgQU5EIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXFxfJSUnIiwKIAkJ CQkJCQkJICJDVVJSRU5UX1NDSEVNQSIpOwotCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hF TUEiLCBNYXRjaEFueSkgJiYgKCFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkpCisJZWxzZSBp ZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAi VEFCTEVTfFNFUVVFTkNFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSkgJiYgKCFlbmRz X3dpdGgocHJldl93ZCwgJywnKSkpCiAJCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOwogCS8q IENvbXBsZXRlICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+IFsuLi5dIFdJVEgiICovCiAJ ZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIpICYmIFRhaWxN YXRjaGVzKCJXSVRIIiwgIigiKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDc5 NzkzOTI3NzZkLi43OTk1M2IzYjg2NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBA IC0zMzI5LDYgKzMzMjksMTQgQEAKICAgcHJvbmFtZSA9PiAncGdfc2VxdWVuY2VfbGFzdF92 YWx1ZScsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLAogICBwcm9y ZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ3JlZ2NsYXNzJywKICAgcHJvc3Jj ID0+ICdwZ19zZXF1ZW5jZV9sYXN0X3ZhbHVlJyB9LAoreyBvaWQgPT4gJzYzMTInLAorICBk ZXNjciA9PiAnY3VycmVudCBvbi1kaXNrIHNlcXVlbmNlIHN0YXRlJywKKyAgcHJvbmFtZSA9 PiAncGdfc2VxdWVuY2Vfc3RhdGUnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5 cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcycsCisgIHByb2FsbGFy Z3R5cGVzID0+ICd7cmVnY2xhc3MscGdfbHNuLGludDgsaW50OCxib29sfScsCisgIHByb2Fy Z21vZGVzID0+ICd7aSxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7c2VxX29pZCxw YWdlX2xzbixsYXN0X3ZhbHVlLGxvZ19jbnQsaXNfY2FsbGVkfScsCisgIHByb3NyYyA9PiAn cGdfc2VxdWVuY2Vfc3RhdGUnIH0sCiAKIHsgb2lkID0+ICcyNzUnLCBkZXNjciA9PiAncmV0 dXJuIHRoZSBuZXh0IG9pZCBmb3IgYSBzeXN0ZW0gdGFibGUnLAogICBwcm9uYW1lID0+ICdw Z19uZXh0b2lkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAndScsCkBA IC0xMTg5Nyw2ICsxMTkwNSwxMSBAQAogICBwcm9hcmdtb2RlcyA9PiAne3YsbyxvLG8sb30n LAogICBwcm9hcmduYW1lcyA9PiAne3B1Ym5hbWUscHViaWQscmVsaWQsYXR0cnMscXVhbH0n LAogICBwcm9zcmMgPT4gJ3BnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMnIH0sCit7IG9pZCA9 PiAnODAwMCcsIGRlc2NyID0+ICdnZXQgT0lEcyBvZiBzZXF1ZW5jZXMgaW4gYSBwdWJsaWNh dGlvbicsCisgIHByb25hbWUgPT4gJ3BnX2dldF9wdWJsaWNhdGlvbl9zZXF1ZW5jZXMnLCBw cm9yb3dzID0+ICcxMDAwJywgcHJvcmV0c2V0ID0+ICd0JywKKyAgcHJvdm9sYXRpbGUgPT4g J3MnLCBwcm9yZXR0eXBlID0+ICdvaWQnLCBwcm9hcmd0eXBlcyA9PiAndGV4dCcsCisgIHBy b2FsbGFyZ3R5cGVzID0+ICd7dGV4dCxvaWR9JywgcHJvYXJnbW9kZXMgPT4gJ3tpLG99JywK KyAgcHJvYXJnbmFtZXMgPT4gJ3twdWJuYW1lLHJlbGlkfScsIHByb3NyYyA9PiAncGdfZ2V0 X3B1YmxpY2F0aW9uX3NlcXVlbmNlcycgfSwKIHsgb2lkID0+ICc2MTIxJywKICAgZGVzY3Ig PT4gJ3JldHVybnMgd2hldGhlciBhIHJlbGF0aW9uIGNhbiBiZSBwYXJ0IG9mIGEgcHVibGlj YXRpb24nLAogICBwcm9uYW1lID0+ICdwZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZScsIHBy b3ZvbGF0aWxlID0+ICdzJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApp bmRleCA2ZTliYmU4MGZmYy4uYTRmZmViMjAwMjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmgKQEAgLTQwLDYgKzQwLDEyIEBAIENBVEFMT0cocGdfcHVibGljYXRp b24sNjEwNCxQdWJsaWNhdGlvblJlbGF0aW9uSWQpCiAJICovCiAJYm9vbAkJcHViYWxsdGFi bGVzOwogCisJLyoKKwkgKiBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIHNwZWNpYWwgcHVibGlj YXRpb24gd2hpY2ggc2hvdWxkIGVuY29tcGFzcyBhbGwKKwkgKiBzZXF1ZW5jZXMgaW4gdGhl IGRhdGFiYXNlIChleGNlcHQgZm9yIHRoZSB1bmxvZ2dlZCBhbmQgdGVtcCBvbmVzKQorCSAq LworCWJvb2wJCXB1YmFsbHNlcXVlbmNlczsKKwogCS8qIHRydWUgaWYgaW5zZXJ0cyBhcmUg cHVibGlzaGVkICovCiAJYm9vbAkJcHViaW5zZXJ0OwogCkBAIC01Miw2ICs1OCw5IEBAIENB VEFMT0cocGdfcHVibGljYXRpb24sNjEwNCxQdWJsaWNhdGlvblJlbGF0aW9uSWQpCiAJLyog dHJ1ZSBpZiB0cnVuY2F0ZXMgYXJlIHB1Ymxpc2hlZCAqLwogCWJvb2wJCXB1YnRydW5jYXRl OwogCisJLyogdHJ1ZSBpZiBzZXF1ZW5jZXMgYXJlIHB1Ymxpc2hlZCAqLworCWJvb2wJCXB1 YnNlcXVlbmNlOworCiAJLyogdHJ1ZSBpZiBwYXJ0aXRpb24gY2hhbmdlcyBhcmUgcHVibGlz aGVkIHVzaW5nIHJvb3Qgc2NoZW1hICovCiAJYm9vbAkJcHVidmlhcm9vdDsKIH0gRm9ybURh dGFfcGdfcHVibGljYXRpb247CkBAIC03Miw2ICs4MSw3IEBAIHR5cGVkZWYgc3RydWN0IFB1 YmxpY2F0aW9uQWN0aW9ucwogCWJvb2wJCXB1YnVwZGF0ZTsKIAlib29sCQlwdWJkZWxldGU7 CiAJYm9vbAkJcHVidHJ1bmNhdGU7CisJYm9vbAkJcHVic2VxdWVuY2U7CiB9IFB1YmxpY2F0 aW9uQWN0aW9uczsKIAogdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25EZXNjCkBAIC05OSw2 ICsxMDksNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbgogCU9pZAkJCW9pZDsKIAlj aGFyCSAgICpuYW1lOwogCWJvb2wJCWFsbHRhYmxlczsKKwlib29sCQlhbGxzZXF1ZW5jZXM7 CiAJYm9vbAkJcHVidmlhcm9vdDsKIAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9uczsK IH0gUHVibGljYXRpb247CkBAIC0xMzAsMTQgKzE0MSwxNSBAQCB0eXBlZGVmIGVudW0gUHVi bGljYXRpb25QYXJ0T3B0CiAJUFVCTElDQVRJT05fUEFSVF9BTEwsCiB9IFB1YmxpY2F0aW9u UGFydE9wdDsKIAotZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBw dWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpH ZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgb2JqZWN0VHlwZSwKKwkJ CQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwogZXh0ZXJuIExpc3Qg KkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKIGV4dGVybiBMaXN0ICpHZXRBbGxU YWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpOwotZXh0ZXJuIExp c3QgKkdldFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpOwotZXh0ZXJuIExpc3QgKkdl dFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpOwotZXh0ZXJuIExpc3QgKkdldFNj aGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKK2V4dGVybiBMaXN0ICpH ZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkLCBjaGFyIG9iamVjdFR5cGUpOworZXh0 ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQsIGNoYXIgb2Jq ZWN0VHlwZSk7CitleHRlcm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMo T2lkIHNjaGVtYWlkLCBjaGFyIG9iamVjdFR5cGUsCiAJCQkJCQkJCQkJICAgUHVibGljYXRp b25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKLWV4dGVybiBMaXN0ICpHZXRBbGxTY2hlbWFQdWJs aWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsCitleHRlcm4gTGlzdCAqR2V0QWxsU2NoZW1h UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ym9pZCwgY2hhciBvYmplY3RUeXBlLAogCQkJ CQkJCQkJCQkgIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CiBleHRlcm4gTGlz dCAqR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKExpc3QgKnJlc3VsdCwKIAkJCQkJ CQkJCQkJUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LApAQCAtMTQ1LDExICsxNTcs MTUgQEAgZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0 ICpyZXN1bHQsCiBleHRlcm4gT2lkCUdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24o T2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLAogCQkJCQkJCQkJCQlpbnQgKmFuY2VzdG9y X2xldmVsKTsKIAorZXh0ZXJuIExpc3QgKkdldEFsbFNlcXVlbmNlc1B1YmxpY2F0aW9ucyh2 b2lkKTsKK2V4dGVybiBMaXN0ICpHZXRBbGxTZXF1ZW5jZXNQdWJsaWNhdGlvblJlbGF0aW9u cyh2b2lkKTsKKwogZXh0ZXJuIGJvb2wgaXNfcHVibGlzaGFibGVfcmVsYXRpb24oUmVsYXRp b24gcmVsKTsKIGV4dGVybiBib29sIGlzX3NjaGVtYV9wdWJsaWNhdGlvbihPaWQgcHViaWQp OwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBw dWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQkJCQkJCSAgYm9vbCBpZl9u b3RfZXhpc3RzKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9zY2hl bWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsCisJCQkJCQkJCQkJCWNoYXIgb2JqZWN0VHlw ZSwKIAkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKIAogZXh0ZXJuIEJpdG1hcHNl dCAqcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0KEJpdG1hcHNldCAqY29sdW1ucywgRGF0dW0g cHViY29scywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRp b25fbmFtZXNwYWNlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX25h bWVzcGFjZS5oCmluZGV4IDkyYWE1OGMxZWQwLi4zMGY1OTliNGY1YSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oCkBAIC0zMiw2 ICszMiw3IEBAIENBVEFMT0cocGdfcHVibGljYXRpb25fbmFtZXNwYWNlLDYyMzcsUHVibGlj YXRpb25OYW1lc3BhY2VSZWxhdGlvbklkKQogCU9pZAkJCW9pZDsJCQkvKiBvaWQgKi8KIAlP aWQJCQlwbnB1YmlkIEJLSV9MT09LVVAocGdfcHVibGljYXRpb24pOyAvKiBPaWQgb2YgdGhl IHB1YmxpY2F0aW9uICovCiAJT2lkCQkJcG5uc3BpZCBCS0lfTE9PS1VQKHBnX25hbWVzcGFj ZSk7CS8qIE9pZCBvZiB0aGUgc2NoZW1hICovCisJY2hhcgkJcG50eXBlOwkJCS8qIG9iamVj dCB0eXBlIHRvIGluY2x1ZGUgKi8KIH0gRm9ybURhdGFfcGdfcHVibGljYXRpb25fbmFtZXNw YWNlOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC00Miw2ICs0MywxMyBAQCBDQVRBTE9H KHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSw2MjM3LFB1YmxpY2F0aW9uTmFtZXNwYWNlUmVs YXRpb25JZCkKIHR5cGVkZWYgRm9ybURhdGFfcGdfcHVibGljYXRpb25fbmFtZXNwYWNlICpG b3JtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZTsKIAogREVDTEFSRV9VTklRVUVfSU5ERVhf UEtFWShwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2Vfb2lkX2luZGV4LCA2MjM4LCBQdWJsaWNh dGlvbk5hbWVzcGFjZU9iamVjdEluZGV4SWQsIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSwg YnRyZWUob2lkIG9pZF9vcHMpKTsKLURFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZV9wbm5zcGlkX3BucHViaWRfaW5kZXgsIDYyMzksIFB1YmxpY2F0aW9u TmFtZXNwYWNlUG5uc3BpZFBucHViaWRJbmRleElkLCBwZ19wdWJsaWNhdGlvbl9uYW1lc3Bh Y2UsIGJ0cmVlKHBubnNwaWQgb2lkX29wcywgcG5wdWJpZCBvaWRfb3BzKSk7CitERUNMQVJF X1VOSVFVRV9JTkRFWChwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2VfcG5uc3BpZF9wbnB1Ymlk X3BudHlwZV9pbmRleCwgODkwMywgUHVibGljYXRpb25OYW1lc3BhY2VQbm5zcGlkUG5wdWJp ZFBudHlwZUluZGV4SWQsIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSwgYnRyZWUocG5uc3Bp ZCBvaWRfb3BzLCBwbnB1YmlkIG9pZF9vcHMsIHBudHlwZSBjaGFyX29wcykpOworCisvKiBv YmplY3QgdHlwZSB0byBpbmNsdWRlIGZyb20gYSBzY2hlbWEsIG1hcHMgdG8gcmVsa2luZCAq LworI2RlZmluZQkJUFVCX09CSlRZUEVfVEFCTEUJCQkndCcgLyogdGFibGUgKHJlZ3VsYXIg b3IgcGFydGl0aW9uZWQpICovCisjZGVmaW5lCQlQVUJfT0JKVFlQRV9TRVFVRU5DRQkJJ3Mn IC8qIHNlcXVlbmNlIG9iamVjdCAqLworI2RlZmluZQkJUFVCX09CSlRZUEVfVU5TVVBQT1JU RUQJCSd1JyAvKiB1c2VkIGZvciBub24tcmVwbGljYXRlZCB0eXBlcyAqLworCitleHRlcm4g Y2hhciBwdWJfZ2V0X29iamVjdF90eXBlX2Zvcl9yZWxraW5kKGNoYXIgcmVsa2luZCk7CiAK ICNlbmRpZgkJCQkJCQkvKiBQR19QVUJMSUNBVElPTl9OQU1FU1BBQ0VfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3NlcXVlbmNlLmgKaW5kZXggZTg4Y2JlZTNiNTYuLjAzYTRmZTExNzNjIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKQEAgLTYwLDYgKzYwLDcgQEAgZXh0ZXJuIE9iamVj dEFkZHJlc3MgQWx0ZXJTZXF1ZW5jZShQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU2VxU3Rt dCAqc3RtdCk7CiBleHRlcm4gdm9pZCBTZXF1ZW5jZUNoYW5nZVBlcnNpc3RlbmNlKE9pZCBy ZWxpZCwgY2hhciBuZXdyZWxwZXJzaXN0ZW5jZSk7CiBleHRlcm4gdm9pZCBEZWxldGVTZXF1 ZW5jZVR1cGxlKE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBSZXNldFNlcXVlbmNlKE9pZCBz ZXFfcmVsaWQpOworZXh0ZXJuIHZvaWQgU2V0U2VxdWVuY2UoT2lkIHNlcV9yZWxpZCwgYm9v bCB0cmFuc2FjdGlvbmFsLCBpbnQ2NCB2YWx1ZSk7CiBleHRlcm4gdm9pZCBSZXNldFNlcXVl bmNlQ2FjaGVzKHZvaWQpOwogCiBleHRlcm4gdm9pZCBzZXFfcmVkbyhYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggYjMxODFmMzRhZWUu LmU5ZmExMGVhOWVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zOTkxLDYgKzM5 OTEsMTAgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIAlQVUJMSUNB VElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIHNjaGVtYSAqLwog CVBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BLAkvKiBBbGwgdGFibGVzIGlu IGZpcnN0IGVsZW1lbnQgb2YKIAkJCQkJCQkJCQkJICogc2VhcmNoX3BhdGggKi8KKwlQVUJM SUNBVElPTk9CSl9TRVFVRU5DRSwJLyogU2VxdWVuY2UgdHlwZSAqLworCVBVQkxJQ0FUSU9O T0JKX1NFUVVFTkNFU19JTl9TQ0hFTUEsIC8qIFNlcXVlbmNlcyBpbiBzY2hlbWEgdHlwZSAq LworCVBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFU19JTl9DVVJfU0NIRU1BLCAvKiBHZXQgdGhl IGZpcnN0IGVsZW1lbnQgb2YKKwkJCQkJCQkJCQkJICogc2VhcmNoX3BhdGggKi8KIAlQVUJM SUNBVElPTk9CSl9DT05USU5VQVRJT04sCS8qIENvbnRpbnVhdGlvbiBvZiBwcmV2aW91cyB0 eXBlICovCiB9IFB1YmxpY2F0aW9uT2JqU3BlY1R5cGU7CiAKQEAgLTQwMDksNyArNDAxMyw4 IEBAIHR5cGVkZWYgc3RydWN0IENyZWF0ZVB1YmxpY2F0aW9uU3RtdAogCWNoYXIJICAgKnB1 Ym5hbWU7CQkvKiBOYW1lIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCUxpc3QJICAgKm9wdGlv bnM7CQkvKiBMaXN0IG9mIERlZkVsZW0gbm9kZXMgKi8KIAlMaXN0CSAgICpwdWJvYmplY3Rz OwkJLyogT3B0aW9uYWwgbGlzdCBvZiBwdWJsaWNhdGlvbiBvYmplY3RzICovCi0JYm9vbAkJ Zm9yX2FsbF90YWJsZXM7IC8qIFNwZWNpYWwgcHVibGljYXRpb24gZm9yIGFsbCB0YWJsZXMg aW4gZGIgKi8KKwlMaXN0CSAgICpmb3JfYWxsX29iamVjdHM7CS8qIFNwZWNpYWwgcHVibGlj YXRpb24gZm9yIGFsbCBvYmplY3RzIGluCisJCQkJCQkJCQkgKiBkYiAqLwogfSBDcmVhdGVQ dWJsaWNhdGlvblN0bXQ7CiAKIHR5cGVkZWYgZW51bSBBbHRlclB1YmxpY2F0aW9uQWN0aW9u CkBAIC00MDMyLDcgKzQwMzcsOCBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclB1YmxpY2F0aW9u U3RtdAogCSAqIG9iamVjdHMuCiAJICovCiAJTGlzdAkgICAqcHVib2JqZWN0czsJCS8qIE9w dGlvbmFsIGxpc3Qgb2YgcHVibGljYXRpb24gb2JqZWN0cyAqLwotCWJvb2wJCWZvcl9hbGxf dGFibGVzOyAvKiBTcGVjaWFsIHB1YmxpY2F0aW9uIGZvciBhbGwgdGFibGVzIGluIGRiICov CisJTGlzdAkgICAqZm9yX2FsbF9vYmplY3RzOwkvKiBTcGVjaWFsIHB1YmxpY2F0aW9uIGZv ciBhbGwgb2JqZWN0cyBpbgorCQkJCQkJCQkJICogZGIgKi8KIAlBbHRlclB1YmxpY2F0aW9u QWN0aW9uIGFjdGlvbjsJLyogV2hhdCBhY3Rpb24gdG8gcGVyZm9ybSB3aXRoIHRoZSBnaXZl bgogCQkJCQkJCQkJICogb2JqZWN0cyAqLwogfSBBbHRlclB1YmxpY2F0aW9uU3RtdDsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggYzQwOTYzOGEyZWYu LjA4MmI1MzY0ZGQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aApAQCAtNDIsNyArNDIsOCBAQAogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9W RVJTSU9OX05VTSAyCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lP Tl9OVU0gMwogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJT SU9OX05VTSA0Ci0jZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExP R0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNCisjZGVmaW5lIExP R0lDQUxSRVBfUFJPVE9fU0VRVUVOQ0VTX1ZFUlNJT05fTlVNIDUKKyNkZWZpbmUgTE9HSUNB TFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19TRVFVRU5DRVNf VkVSU0lPTl9OVU0KIAogLyoKICAqIExvZ2ljYWwgbWVzc2FnZSB0eXBlcwpAQCAtNjYsNiAr NjcsNyBAQCB0eXBlZGVmIGVudW0gTG9naWNhbFJlcE1zZ1R5cGUKIAlMT0dJQ0FMX1JFUF9N U0dfUkVMQVRJT04gPSAnUicsCiAJTE9HSUNBTF9SRVBfTVNHX1RZUEUgPSAnWScsCiAJTE9H SUNBTF9SRVBfTVNHX01FU1NBR0UgPSAnTScsCisJTE9HSUNBTF9SRVBfTVNHX1NFUVVFTkNF ID0gJ1EnLAogCUxPR0lDQUxfUkVQX01TR19CRUdJTl9QUkVQQVJFID0gJ2InLAogCUxPR0lD QUxfUkVQX01TR19QUkVQQVJFID0gJ1AnLAogCUxPR0lDQUxfUkVQX01TR19DT01NSVRfUFJF UEFSRUQgPSAnSycsCkBAIC0xMjMsNiArMTI1LDE3IEBAIHR5cGVkZWYgc3RydWN0IExvZ2lj YWxSZXBUeXAKIAljaGFyCSAgICp0eXBuYW1lOwkJLyogbmFtZSBvZiB0aGUgcmVtb3RlIHR5 cGUgKi8KIH0gTG9naWNhbFJlcFR5cDsKIAorLyogU2VxdWVuY2UgaW5mbyAqLwordHlwZWRl ZiBzdHJ1Y3QgTG9naWNhbFJlcFNlcXVlbmNlCit7CisJWExvZ1JlY1B0cglsc247CQkJLyog TFNOIG9mIHRoZSBzZXF1ZW5jZSBjaGFuZ2UgKi8KKwlPaWQJCQlyZW1vdGVpZDsJCS8qIHVu aXF1ZSBpZCBvZiB0aGUgcmVtb3RlIHNlcXVlbmNlICovCisJY2hhcgkgICAqbnNwbmFtZTsJ CS8qIHNjaGVtYSBuYW1lIG9mIHJlbW90ZSBzZXF1ZW5jZSAqLworCWNoYXIJICAgKnNlcW5h bWU7CQkvKiBuYW1lIG9mIHRoZSByZW1vdGUgc2VxdWVuY2UgKi8KKwlib29sCQl0cmFuc2Fj dGlvbmFsOworCWludDY0CQl2YWx1ZTsKK30gTG9naWNhbFJlcFNlcXVlbmNlOworCiAvKiBU cmFuc2FjdGlvbiBpbmZvICovCiB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwQmVnaW5EYXRh CiB7CkBAIC0yNDYsNiArMjU5LDEwIEBAIGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3JlYWRf dHJ1bmNhdGUoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCSAgYm9vbCAqY2FzY2FkZSwgYm9v bCAqcmVzdGFydF9zZXFzKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2Fn ZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAog CQkJCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LCBTaXpl IHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3Jp dGVfc2VxdWVuY2UoU3RyaW5nSW5mbyBvdXQsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCSAg VHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCQkJICBib29sIHRy YW5zYWN0aW9uYWwsIGludDY0IHZhbHVlKTsKK2V4dGVybiBMb2dpY2FsUmVwUmVsSWQgbG9n aWNhbHJlcF9yZWFkX3NlcXVlbmNlKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBTZXF1ZW5j ZSAqc2VxZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJ bmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCSBSZWxhdGlvbiByZWwsIEJp dG1hcHNldCAqY29sdW1ucyk7CiBleHRlcm4gTG9naWNhbFJlcFJlbGF0aW9uICpsb2dpY2Fs cmVwX3JlYWRfcmVsKFN0cmluZ0luZm8gaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9vYmplY3RfYWRkcmVzcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29iamVjdF9hZGRyZXNzLm91dAppbmRleCBmYzQyZDQxOGJmMS4uOWFlYzI2MTJk MDEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2FkZHJl c3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2FkZHJlc3Mu b3V0CkBAIC00Nyw2ICs0Nyw3IEBAIENSRUFURSBUUkFOU0ZPUk0gRk9SIGludCBMQU5HVUFH RSBTUUwgKAogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIGFkZHJfcHViIEZPUiBUQUJMRSBhZGRyX25zcC5nZW50YWJsZTsKIENSRUFU RSBQVUJMSUNBVElPTiBhZGRyX3B1Yl9zY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgYWRk cl9uc3A7CitDUkVBVEUgUFVCTElDQVRJT04gYWRkcl9wdWJfc2NoZW1hMiBGT1IgU0VRVUVO Q0VTIElOIFNDSEVNQSBhZGRyX25zcDsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfYWRkcl9zdWIgQ09OTkVDVElPTiAnJyBQVUJM SUNBVElPTiBiYXIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzbG90X25hbWUgPSBOT05FKTsK IFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVj dGVkCkBAIC0zMTUsMTIgKzMxNiwxMiBAQCBXQVJOSU5HOiAgZXJyb3IgZm9yIGZ1bmN0aW9u IG9mIGFjY2VzcyBtZXRob2Qse2FkZHJfbnNwLHp3ZWl9LHt9OiBuYW1lIGxpc3QgbGVuZwog V0FSTklORzogIGVycm9yIGZvciBmdW5jdGlvbiBvZiBhY2Nlc3MgbWV0aG9kLHthZGRyX25z cCx6d2VpfSx7aW50ZWdlcn06IG5hbWUgbGlzdCBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAz CiBXQVJOSU5HOiAgZXJyb3IgZm9yIGZ1bmN0aW9uIG9mIGFjY2VzcyBtZXRob2Qse2VpbnMs endlaSxkcmVpfSx7fTogYXJndW1lbnQgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5IDIK IFdBUk5JTkc6ICBlcnJvciBmb3IgZnVuY3Rpb24gb2YgYWNjZXNzIG1ldGhvZCx7ZWlucyx6 d2VpLGRyZWl9LHtpbnRlZ2VyfTogYXJndW1lbnQgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFj dGx5IDIKLVdBUk5JTkc6ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNwYWNlLHtlaW5z fSx7fTogYXJndW1lbnQgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5IDEKLVdBUk5JTkc6 ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNwYWNlLHtlaW5zfSx7aW50ZWdlcn06IHNj aGVtYSAiZWlucyIgZG9lcyBub3QgZXhpc3QKLVdBUk5JTkc6ICBlcnJvciBmb3IgcHVibGlj YXRpb24gbmFtZXNwYWNlLHthZGRyX25zcCx6d2VpfSx7fTogbmFtZSBsaXN0IGxlbmd0aCBt dXN0IGJlIGV4YWN0bHkgMQotV0FSTklORzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiBuYW1l c3BhY2Use2FkZHJfbnNwLHp3ZWl9LHtpbnRlZ2VyfTogbmFtZSBsaXN0IGxlbmd0aCBtdXN0 IGJlIGV4YWN0bHkgMQotV0FSTklORzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiBuYW1lc3Bh Y2Use2VpbnMsendlaSxkcmVpfSx7fTogbmFtZSBsaXN0IGxlbmd0aCBtdXN0IGJlIGV4YWN0 bHkgMQotV0FSTklORzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiBuYW1lc3BhY2Use2VpbnMs endlaSxkcmVpfSx7aW50ZWdlcn06IG5hbWUgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5 IDEKK1dBUk5JTkc6ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNwYWNlLHtlaW5zfSx7 fTogYXJndW1lbnQgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5IDIKK1dBUk5JTkc6ICBl cnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNwYWNlLHtlaW5zfSx7aW50ZWdlcn06IGFyZ3Vt ZW50IGxpc3QgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSAyCitXQVJOSU5HOiAgZXJyb3IgZm9y IHB1YmxpY2F0aW9uIG5hbWVzcGFjZSx7YWRkcl9uc3AsendlaX0se306IGFyZ3VtZW50IGxp c3QgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSAyCitXQVJOSU5HOiAgZXJyb3IgZm9yIHB1Ymxp Y2F0aW9uIG5hbWVzcGFjZSx7YWRkcl9uc3AsendlaX0se2ludGVnZXJ9OiBhcmd1bWVudCBs aXN0IGxlbmd0aCBtdXN0IGJlIGV4YWN0bHkgMgorV0FSTklORzogIGVycm9yIGZvciBwdWJs aWNhdGlvbiBuYW1lc3BhY2Use2VpbnMsendlaSxkcmVpfSx7fTogYXJndW1lbnQgbGlzdCBs ZW5ndGggbXVzdCBiZSBleGFjdGx5IDIKK1dBUk5JTkc6ICBlcnJvciBmb3IgcHVibGljYXRp b24gbmFtZXNwYWNlLHtlaW5zLHp3ZWksZHJlaX0se2ludGVnZXJ9OiBhcmd1bWVudCBsaXN0 IGxlbmd0aCBtdXN0IGJlIGV4YWN0bHkgMgogV0FSTklORzogIGVycm9yIGZvciBwdWJsaWNh dGlvbiByZWxhdGlvbix7ZWluc30se306IGFyZ3VtZW50IGxpc3QgbGVuZ3RoIG11c3QgYmUg ZXhhY3RseSAxCiBXQVJOSU5HOiAgZXJyb3IgZm9yIHB1YmxpY2F0aW9uIHJlbGF0aW9uLHtl aW5zfSx7aW50ZWdlcn06IHJlbGF0aW9uICJlaW5zIiBkb2VzIG5vdCBleGlzdAogV0FSTklO RzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiByZWxhdGlvbix7YWRkcl9uc3AsendlaX0se306 IGFyZ3VtZW50IGxpc3QgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSAxCkBAIC00NDEsNyArNDQy LDggQEAgV0lUSCBvYmplY3RzICh0eXBlLCBuYW1lLCBhcmdzKSBBUyAoVkFMVUVTCiAgICAg KCd0cmFuc2Zvcm0nLCAne2ludH0nLCAne3NxbH0nKSwKICAgICAoJ2FjY2VzcyBtZXRob2Qn LCAne2J0cmVlfScsICd7fScpLAogICAgICgncHVibGljYXRpb24nLCAne2FkZHJfcHVifScs ICd7fScpLAotICAgICgncHVibGljYXRpb24gbmFtZXNwYWNlJywgJ3thZGRyX25zcH0nLCAn e2FkZHJfcHViX3NjaGVtYX0nKSwKKyAgICAoJ3B1YmxpY2F0aW9uIG5hbWVzcGFjZScsICd7 YWRkcl9uc3B9JywgJ3thZGRyX3B1Yl9zY2hlbWEsIHR9JyksCisgICAgKCdwdWJsaWNhdGlv biBuYW1lc3BhY2UnLCAne2FkZHJfbnNwfScsICd7YWRkcl9wdWJfc2NoZW1hMiwgc30nKSwK ICAgICAoJ3B1YmxpY2F0aW9uIHJlbGF0aW9uJywgJ3thZGRyX25zcCwgZ2VudGFibGV9Jywg J3thZGRyX3B1Yn0nKSwKICAgICAoJ3N1YnNjcmlwdGlvbicsICd7cmVncmVzc19hZGRyX3N1 Yn0nLCAne30nKSwKICAgICAoJ3N0YXRpc3RpY3Mgb2JqZWN0JywgJ3thZGRyX25zcCwgZ2Vu dGFibGVfc3RhdH0nLCAne30nKQpAQCAtNTA0LDcgKzUwNiw4IEBAIHRleHQgc2VhcmNoIHRl bXBsYXRlfGFkZHJfbnNwfGFkZHJfdHNfdGVtcHxhZGRyX25zcC5hZGRyX3RzX3RlbXB8dAog c3Vic2NyaXB0aW9ufE5VTEx8cmVncmVzc19hZGRyX3N1YnxyZWdyZXNzX2FkZHJfc3VifHQK IHB1YmxpY2F0aW9ufE5VTEx8YWRkcl9wdWJ8YWRkcl9wdWJ8dAogcHVibGljYXRpb24gcmVs YXRpb258TlVMTHxOVUxMfGFkZHJfbnNwLmdlbnRhYmxlIGluIHB1YmxpY2F0aW9uIGFkZHJf cHVifHQKLXB1YmxpY2F0aW9uIG5hbWVzcGFjZXxOVUxMfE5VTEx8YWRkcl9uc3AgaW4gcHVi bGljYXRpb24gYWRkcl9wdWJfc2NoZW1hfHQKK3B1YmxpY2F0aW9uIG5hbWVzcGFjZXxOVUxM fE5VTEx8YWRkcl9uc3AgaW4gcHVibGljYXRpb24gYWRkcl9wdWJfc2NoZW1hIHR5cGUgdHx0 CitwdWJsaWNhdGlvbiBuYW1lc3BhY2V8TlVMTHxOVUxMfGFkZHJfbnNwIGluIHB1YmxpY2F0 aW9uIGFkZHJfcHViX3NjaGVtYTIgdHlwZSBzfHQKIC0tLQogLS0tIENsZWFudXAgcmVzb3Vy Y2VzCiAtLS0KQEAgLTUxNiw2ICs1MTksNyBAQCBkcm9wIGNhc2NhZGVzIHRvIHNlcnZlciBp bnRlZ2VyCiBkcm9wIGNhc2NhZGVzIHRvIHVzZXIgbWFwcGluZyBmb3IgcmVncmVzc19hZGRy X3VzZXIgb24gc2VydmVyIGludGVnZXIKIERST1AgUFVCTElDQVRJT04gYWRkcl9wdWI7CiBE Uk9QIFBVQkxJQ0FUSU9OIGFkZHJfcHViX3NjaGVtYTsKK0RST1AgUFVCTElDQVRJT04gYWRk cl9wdWJfc2NoZW1hMjsKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfYWRkcl9zdWI7CiBE Uk9QIFNDSEVNQSBhZGRyX25zcCBDQVNDQURFOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0 byAxNCBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRl eCA0ZjNmZDQ2NDIwNy4uZTFkMGZkYTA2ZmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHNxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w c3FsLm91dApAQCAtNjI0NCw5ICs2MjQ0LDkgQEAgTGlzdCBvZiBzY2hlbWFzCiAoMCByb3dz KQogCiBcZFJwICJuby5zdWNoLnB1YmxpY2F0aW9uIgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSBOYW1lIHwgT3duZXIgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworIE5hbWUgfCBP d25lciB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KICgwIHJv d3MpCiAKIFxkUnMgIm5vLnN1Y2guc3Vic2NyaXB0aW9uIgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAxNjM2MWE5MWY5Zi4uMmY1YzcyYzlk MmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24u b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBA IC0zMCwyMCArMzAsMjAgQEAgRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0 aW9ucwogTElORSAxOiAuLi51Yl94eHggV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QgPSAndHJ1ZScsIHB1Ymxpc2hfdmkuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBcZFJwCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlv bnMKLSAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICAgIE5h bWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8 IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgZiAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAg IHwgZgogKDIgcm93cykKIAotQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IFNF VCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlJyk7CitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2RlZmF1bHQgU0VUIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBk ZWxldGUsIHNlcXVlbmNlJyk7CiBcZFJwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgICAgTmFtZSAg ICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCi0g dGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICAgIE5hbWUgICAgICAgIHwgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwaWJfaW5z X3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwg ZiAgICAgICAgIHwgZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgIHwgZgogKDIgcm93cykKIAog LS0tIGFkZGluZyB0YWJsZXMKQEAgLTYxLDYgKzYxLDkgQEAgQ1JFQVRFIFRBQkxFIHRlc3Rw dWJfdGJsMiAoaWQgc2VyaWFsIHByaW1hcnkga2V5LCBkYXRhIHRleHQpOwogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMgQUREIFRBQkxFIHRlc3RwdWJfdGJsMjsK IEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9yYWxsdGFibGVzIiBpcyBkZWZpbmVk IGFzIEZPUiBBTEwgVEFCTEVTCiBERVRBSUw6ICBUYWJsZXMgY2Fubm90IGJlIGFkZGVkIHRv IG9yIGRyb3BwZWQgZnJvbSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCistLSBmYWls IC0gY2FuJ3QgYWRkIGEgdGFibGUgdXNpbmcgQUREIFNFUVVFTkNFIGNvbW1hbmQKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzIEFERCBTRVFVRU5DRSB0ZXN0cHVi X3RibDI7CitFUlJPUjogIG9iamVjdCB0eXBlIGRvZXMgbm90IG1hdGNoIHR5cGUgZXhwZWN0 ZWQgYnkgY29tbWFuZAogLS0gZmFpbCAtIGNhbid0IGRyb3AgZnJvbSBhbGwgdGFibGVzIHB1 YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcyBEUk9Q IFRBQkxFIHRlc3RwdWJfdGJsMjsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9y YWxsdGFibGVzIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTCkBAIC04NywxMCArOTAs MTAgQEAgUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIC0tIHNob3VsZCBiZSBhYmxlIHRv IGFkZCBzY2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBc ZFJwKyB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJs ZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVu Y2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVu Y2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVi bGljLnRlc3RwdWJfdGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC05OSwyMCArMTAy LDIwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBzaG91bGQgYmUgYWJsZSB0byBkcm9w IHNjaGVtYSBmcm9tICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcnRhYmxlIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxk UnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxl CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5j ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl90YmwxIgogCiAtLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2NoZW1hIHRv ICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9m b3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJf dGVzdCIKIApAQCAtMTIzLDEwICsxMjYsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QsIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFJFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEK LSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAg ICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogVGFibGVz IGZyb20gc2NoZW1hczoKQEAgLTE0NCwxMCArMTQ3LDEwIEBAIExJTkUgMTogLi4uQ0FUSU9O IHRlc3RwdWJfcGFyc2VydHN0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIGZvbywgdGVzdC5mb287 CiAtLSBzaG91bGQgYmUgYWJsZSB0byBhZGQgYSB0YWJsZSBvZiB0aGUgc2FtZSBzY2hlbWEg dG8gdGhlIHNjaGVtYSBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JzY2hlbWEgQUREIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFxkUnArIHRlc3Rw dWJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVz dHB1Yl9ub3BrIgogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTE1NiwxMCArMTU5LDEwIEBA IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBzaG91bGQgYmUgYWJsZSB0byBkcm9wIHRoZSB0 YWJsZQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRFJPUCBUQUJMRSBw dWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1h Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAg ICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdCIKIApAQCAtMTcw LDEwICsxNzMsMTAgQEAgRVJST1I6ICByZWxhdGlvbiAidGVzdHB1Yl9ub3BrIiBpcyBub3Qg cGFydCBvZiB0aGUgcHVibGljYXRpb24KIC0tIHNob3VsZCBiZSBhYmxlIHRvIHNldCB0YWJs ZSB0byBzY2hlbWEgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y c2NoZW1hIFNFVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHVi X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3Rw dWJfbm9wayIKIApAQCAtMTk3LDEwICsyMDAsMTAgQEAgTm90LW51bGwgY29uc3RyYWludHM6 CiAgICAgInRlc3RwdWJfdGJsMl9pZF9ub3RfbnVsbCIgTk9UIE5VTEwgImlkIgogCiBcZFJw KyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXMKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxs dGFibGVzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBz ZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBT ZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93KQogCiBE Uk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKQEAgLTIxMiwyNCArMjE1LDUyNSBAQCBDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKIENSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CiBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjMKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViMworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoK ICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKICAgICAicHVibGljLnRlc3RwdWJfdGJsM2Ei CiAKIFxkUnArIHRlc3RwdWI0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViNAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjQKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHVi X3RibDMiCiAKIERST1AgVEFCTEUgdGVzdHB1Yl90YmwzLCB0ZXN0cHViX3RibDNhOwogRFJP UCBQVUJMSUNBVElPTiB0ZXN0cHViMywgdGVzdHB1YjQ7CistLS0gYWRkaW5nIHNlcXVlbmNl cworQ1JFQVRFIFNFUVVFTkNFIHRlc3RwdWJfc2VxMDsKK0NSRUFURSBTRVFVRU5DRSBwdWJf dGVzdC50ZXN0cHViX3NlcTE7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7 CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgRk9SIEFMTCBT RVFVRU5DRVMgV0lUSCAocHVibGlzaCA9ICdzZXF1ZW5jZScpOworUkVTRVQgY2xpZW50X21p bl9tZXNzYWdlczsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2Vz IFNFVCAocHVibGlzaCA9ICdpbnNlcnQsIHNlcXVlbmNlJyk7CitDUkVBVEUgU0VRVUVOQ0Ug dGVzdHB1Yl9zZXEyOworLS0gZmFpbCAtIGNhbid0IGFkZCB0byBmb3IgYWxsIHNlcXVlbmNl cyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5j ZXMgQUREIFNFUVVFTkNFIHRlc3RwdWJfc2VxMjsKK0VSUk9SOiAgcHVibGljYXRpb24gInRl c3RwdWJfZm9yYWxsc2VxdWVuY2VzIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VT CitERVRBSUw6ICBTZXF1ZW5jZXMgY2Fubm90IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJv bSBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbnMuCistLSBmYWlsIC0gY2FuJ3QgZHJv cCBmcm9tIGFsbCBzZXF1ZW5jZXMgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9yYWxsc2VxdWVuY2VzIERST1AgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEyOworRVJS T1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMiIGlzIGRlZmluZWQg YXMgRk9SIEFMTCBTRVFVRU5DRVMKK0RFVEFJTDogIFNlcXVlbmNlcyBjYW5ub3QgYmUgYWRk ZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4K Ky0tIGZhaWwgLSBjYW4ndCBhZGQgdG8gZm9yIGFsbCBzZXF1ZW5jZXMgcHVibGljYXRpb24K K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIFNFVCBTRVFVRU5D RSBwdWJfdGVzdC50ZXN0cHViX3NlcTE7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHVi X2ZvcmFsbHNlcXVlbmNlcyIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFNFUVVFTkNFUworREVU QUlMOiAgU2VxdWVuY2VzIGNhbm5vdCBiZSBhZGRlZCB0byBvciBkcm9wcGVkIGZyb20gRk9S IEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IGFkZCBzY2hl bWEgdG8gJ0ZPUiBBTEwgU0VRVUVOQ0VTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHVi X3Rlc3Q7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyIg aXMgZGVmaW5lZCBhcyBGT1IgQUxMIFNFUVVFTkNFUworREVUQUlMOiAgU2VxdWVuY2VzIGZy b20gc2NoZW1hIGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQgb24g Rk9SIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IGRyb3Ag c2NoZW1hIGZyb20gJ0ZPUiBBTEwgU0VRVUVOQ0VTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgRFJPUCBTRVFVRU5DRVMgSU4gU0NI RU1BIHB1Yl90ZXN0OworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JhbGxzZXF1 ZW5jZXMiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMKK0RFVEFJTDogIFNlcXVl bmNlcyBmcm9tIHNjaGVtYSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Ig c2V0IG9uIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4KKy0tIGZhaWwgLSBjYW4n dCBzZXQgc2NoZW1hIHRvICdGT1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24KK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIFNFVCBTRVFVRU5DRVMgSU4g U0NIRU1BIHB1Yl90ZXN0OworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JhbGxz ZXF1ZW5jZXMiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMKK0RFVEFJTDogIFNl cXVlbmNlcyBmcm9tIHNjaGVtYSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwg b3Igc2V0IG9uIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4KK1NFVCBjbGllbnRf bWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnNlcXVlbmNlIEZPUiBTRVFVRU5DRSB0ZXN0cHViX3NlcTA7CitSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOworLS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIHNjaGVtYSB0byAnRk9SIFNF UVVFTkNFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzZXF1 ZW5jZSBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJf Zm9yc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzZXF1ZW5jZQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IHQgICAgICAgICB8IGYKK1NlcXVlbmNlczoKKyAgICAicHVibGljLnRlc3RwdWJfc2VxMCIK K1NlcXVlbmNlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorCistLSBhZGQgc2Vx dWVuY2UgZnJvbSB0aGUgc2NoZW1hIHdlIGFscmVhZHkgYWRkZWQKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9yc2VxdWVuY2UgQUREIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJf c2VxMTsKKy0tIGZhaWwgLSBjYW4ndCBhZGQgc2VxdWVuY2UgdXNpbmcgQUREIFRBQkxFIGNv bW1hbmQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2VxdWVuY2UgQUREIFRBQkxF IHB1Yl90ZXN0LnRlc3RwdWJfc2VxMTsKK0VSUk9SOiAgb2JqZWN0IHR5cGUgZG9lcyBub3Qg bWF0Y2ggdHlwZSBleHBlY3RlZCBieSBjb21tYW5kCistLSBzaG91bGQgYmUgYWJsZSB0byBk cm9wIHNjaGVtYSBmcm9tICdGT1IgU0VRVUVOQ0UnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnNlcXVlbmNlIERST1AgU0VRVUVOQ0VTIElOIFNDSEVNQSBw dWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfZm9yc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzZXF1 ZW5jZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2Vx dWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2Vx dWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1NlcXVlbmNlczoKKyAg ICAicHViX3Rlc3QudGVzdHB1Yl9zZXExIgorICAgICJwdWJsaWMudGVzdHB1Yl9zZXEwIgor CistLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2NoZW1hIHRvICdGT1IgU0VRVUVOQ0UnIHB1 YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNlcXVlbmNlIFNFVCBT RVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9mb3JzZXF1ZW5j ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2ZvcnNlcXVlbmNlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAg IHwgZgorU2VxdWVuY2VzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCisKK1NFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcnNjaGVtYSBGT1IgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1JFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CistLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2VxdWVu Y2UgdG8gc2NoZW1hIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnNjaGVtYSBTRVQgU0VRVUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9zZXExOworXGRScCsgdGVz dHB1Yl9mb3JzY2hlbWEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgdCAgICAgICAgIHwgZgorU2VxdWVuY2VzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX3Nl cTEiCisKK1NFTEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMsIHB1YmFsbHNlcXVlbmNlcyBG Uk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGxzZXF1 ZW5jZXMnOworICAgICAgICAgcHVibmFtZSAgICAgICAgIHwgcHViYWxsdGFibGVzIHwgcHVi YWxsc2VxdWVuY2VzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLQorIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIHwgZiAgICAg ICAgICAgIHwgdAorKDEgcm93KQorCitcZCsgcHViX3Rlc3QudGVzdHB1Yl9zZXExCisgICAg ICAgICAgICAgICAgICAgICAgIFNlcXVlbmNlICJwdWJfdGVzdC50ZXN0cHViX3NlcTEiCisg IFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3Jl bWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJp Z2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAg IDEgfCBubyAgICAgIHwgICAgIDEKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9mb3Jh bGxzZXF1ZW5jZXMiCisgICAgInRlc3RwdWJfZm9yc2NoZW1hIgorICAgICJ0ZXN0cHViX2Zv cnNlcXVlbmNlIgorCitcZFJwKyB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9m b3JhbGxzZXF1ZW5jZXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgfCBmCisoMSBy b3cpCisKK0RST1AgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEwLCBwdWJfdGVzdC50ZXN0cHViX3Nl cTEsIHRlc3RwdWJfc2VxMjsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1 ZW5jZXMsIHRlc3RwdWJfZm9yc2VxdWVuY2UsIHRlc3RwdWJfZm9yc2NoZW1hOworLS0gcHVi bGljYXRpb24gdGVzdGluZyBtdWx0aXBsZSBzZXF1ZW5jZXMgYXQgdGhlIHNhbWUgdGltZQor Q1JFQVRFIFNFUVVFTkNFIHRlc3RwdWJfc2VxMTsKK0NSRUFURSBTRVFVRU5DRSB0ZXN0cHVi X3NlcTI7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9tdWx0aSBGT1IgU0VRVUVOQ0UgdGVzdHB1Yl9zZXExLCB0ZXN0 cHViX3NlcTI7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworXGRScCsgdGVzdHB1Yl9t dWx0aQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX211bHRpCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAg IHwgZgorU2VxdWVuY2VzOgorICAgICJwdWJsaWMudGVzdHB1Yl9zZXExIgorICAgICJwdWJs aWMudGVzdHB1Yl9zZXEyIgorCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbXVsdGk7CitE Uk9QIFNFUVVFTkNFIHRlc3RwdWJfc2VxMTsKK0RST1AgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEy OworLS0gUHVibGljYXRpb24gbWl4aW5nIHRhYmxlcyBhbmQgc2VxdWVuY2VzCitTRVQgY2xp ZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9taXg7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworQ1JFQVRFIFNFUVVFTkNFIHRl c3RwdWJfc2VxMTsKK0NSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC50ZXN0cHViX3NlcTI7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX21peCBBREQgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEx LCBUQUJMRSB0ZXN0cHViX3RibDE7CitcZFJwKyB0ZXN0cHViX21peAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9taXgKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNl cXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNl cXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCitUYWJsZXM6CisgICAg InB1YmxpYy50ZXN0cHViX3RibDEiCitTZXF1ZW5jZXM6CisgICAgInB1YmxpYy50ZXN0cHVi X3NlcTEiCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbWl4IEFERCBTRVFVRU5DRVMg SU4gU0NIRU1BIHB1Yl90ZXN0LCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsg dGVzdHB1Yl9taXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfbWl4CisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAg ICAgICAgIHwgZgorVGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorVGFibGVz IGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCitTZXF1ZW5jZXM6CisgICAgInB1Ymxp Yy50ZXN0cHViX3NlcTEiCitTZXF1ZW5jZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVz dCIKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9taXggRFJPUCBTRVFVRU5DRVMgSU4g U0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9taXgKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfbWl4 CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5j ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVzOgorICAgICJwdWJs aWMudGVzdHB1Yl90YmwxIgorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3Qi CitTZXF1ZW5jZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3NlcTEiCisKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfbWl4IERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xk UnArIHRlc3RwdWJfbWl4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX21peAorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IHQgICAgICAgICB8IGYKK1RhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKK1Nl cXVlbmNlczoKKyAgICAicHVibGljLnRlc3RwdWJfc2VxMSIKKworRFJPUCBQVUJMSUNBVElP TiB0ZXN0cHViX21peDsKK0RST1AgU0VRVUVOQ0UgdGVzdHB1Yl9zZXExOworRFJPUCBTRVFV RU5DRSBwdWJfdGVzdC50ZXN0cHViX3NlcTI7CistLSBtYWtlIHN1cmUgd2UgcmVwbGljYXRl IG9ubHkgdGhlIGNvcnJlY3QgcmVsYXRpb24gdHlwZQorQ1JFQVRFIFNDSEVNQSBwdWJfdGVz dDE7CitDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKK0NSRUFURSBUQUJM RSBwdWJfdGVzdDEudGVzdF90YmwxIChhIGludCBwcmltYXJ5IGtleSwgYiBpbnQpOworQ1JF QVRFIFNDSEVNQSBwdWJfdGVzdDI7CitDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QyLnRlc3Rf c2VxMjsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdDIudGVzdF90YmwyIChhIGludCBwcmltYXJ5 IGtleSwgYiBpbnQpOworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hczsKK1JFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CistLSBhZGQgdGFibGVzIGZyb20gb25lIHNjaGVtYSwgc2VxdWVuY2VzIGZyb20g dGhlIG90aGVyCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QyOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hl bWFzIEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKK1xkUnArIHRlc3RwdWJf c2NoZW1hcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1hcworICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAg ICAgICB8IGYKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0MiIKK1NlcXVl bmNlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0MSIKKworXGRuKyBwdWJfdGVzdDEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHNjaGVtYXMKKyAgIE5hbWUg ICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBY2Nlc3MgcHJpdmlsZWdlcyB8IERl c2NyaXB0aW9uIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcHViX3Rlc3QxIHwgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgICAgICAgICAgICAgICAgICAgfCAKK1B1YmxpY2F0aW9uczoK KyAgICAidGVzdHB1Yl9zY2hlbWFzIiAoc2VxdWVuY2VzKQorCitcZG4rIHB1Yl90ZXN0Mgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc2NoZW1hcworICAgTmFtZSAg ICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFjY2VzcyBwcml2aWxlZ2VzIHwgRGVz Y3JpcHRpb24gCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBwdWJfdGVzdDIgfCByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCAgICAgICAgICAgICAgICAgICB8IAorUHVibGljYXRpb25zOgor ICAgICJ0ZXN0cHViX3NjaGVtYXMiICh0YWJsZXMpCisKK1xkKyBwdWJfdGVzdDEudGVzdF9z ZXExOworICAgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1Yl90ZXN0MS50ZXN0 X3NlcTEiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAg ICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcg fCAgICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKK1B1YmxpY2F0aW9uczoKKyAgICAidGVz dHB1Yl9zY2hlbWFzIgorCitcZCsgcHViX3Rlc3QxLnRlc3RfdGJsMTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHViX3Rlc3QxLnRlc3RfdGJsMSIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFn ZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBu dWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAg ICAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVzdF90YmwxX3BrZXkiIFBSSU1BUlkg S0VZLCBidHJlZSAoYSkKKworXGQrIHB1Yl90ZXN0Mi50ZXN0X3NlcTI7CisgICAgICAgICAg ICAgICAgICAgICAgICBTZXF1ZW5jZSAicHViX3Rlc3QyLnRlc3Rfc2VxMiIKKyAgVHlwZSAg fCBTdGFydCB8IE1pbmltdW0gfCAgICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwg Q3ljbGVzPyB8IENhY2hlIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwg ICAgIDEgfCAgICAgICAxIHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5v ICAgICAgfCAgICAgMQorCitcZCsgcHViX3Rlc3QyLnRlc3RfdGJsMjsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHViX3Rlc3QyLnRlc3RfdGJsMiIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFn ZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBu dWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAg ICAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVzdF90YmwyX3BrZXkiIFBSSU1BUlkg S0VZLCBidHJlZSAoYSkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIgor CistLSBhZGQgdGhlIG90aGVyIG9iamVjdCB0eXBlIGZyb20gZWFjaCBzY2hlbWEKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFNFUVVFTkNF UyBJTiBTQ0hFTUEgcHViX3Rlc3QyOworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9zY2hlbWFzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVz IGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QxIgorICAgICJwdWJfdGVzdDIiCitTZXF1 ZW5jZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdDEiCisgICAgInB1Yl90ZXN0MiIK KworXGRuKyBwdWJfdGVzdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHNjaGVtYXMKKyAgIE5hbWUgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBY2Nl c3MgcHJpdmlsZWdlcyB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcHVi X3Rlc3QxIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgICAgICAgICAgICAgICAgICAg fCAKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIiAoc2VxdWVuY2VzKQor ICAgICJ0ZXN0cHViX3NjaGVtYXMiICh0YWJsZXMpCisKK1xkbisgcHViX3Rlc3QyCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzY2hlbWFzCisgICBOYW1lICAgIHwg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWNjZXNzIHByaXZpbGVnZXMgfCBEZXNjcmlw dGlvbiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHB1Yl90ZXN0MiB8IHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8ICAgICAgICAgICAgICAgICAgIHwgCitQdWJsaWNhdGlvbnM6CisgICAg InRlc3RwdWJfc2NoZW1hcyIgKHRhYmxlcykKKyAgICAidGVzdHB1Yl9zY2hlbWFzIiAoc2Vx dWVuY2VzKQorCitcZCsgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIFNlcXVlbmNlICJwdWJfdGVzdDEudGVzdF9zZXExIgorICBUeXBlICB8IFN0YXJ0 IHwgTWluaW11bSB8ICAgICAgIE1heGltdW0gICAgICAgfCBJbmNyZW1lbnQgfCBDeWNsZXM/ IHwgQ2FjaGUgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQgfCAgICAgMSB8 ICAgICAgIDEgfCA5MjIzMzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwgbm8gICAgICB8 ICAgICAxCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworXGQrIHB1 Yl90ZXN0MS50ZXN0X3RibDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFi bGUgInB1Yl90ZXN0MS50ZXN0X3RibDEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNj cmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGEgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK0luZGV4ZXM6 CisgICAgInRlc3RfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEpCitQdWJsaWNh dGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworXGQrIHB1Yl90ZXN0Mi50ZXN0X3Nl cTI7CisgICAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSAicHViX3Rlc3QyLnRlc3Rf c2VxMiIKKyAgVHlwZSAgfCBTdGFydCB8IE1pbmltdW0gfCAgICAgICBNYXhpbXVtICAgICAg IHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAgICAxIHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8 ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0 cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJfdGVzdDIudGVzdF90YmwyIgorIENvbHVt biB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdl IHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51 bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0X3RibDJfcGtleSIgUFJJTUFSWSBL RVksIGJ0cmVlIChhKQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisK Ky0tIG5vdyBkcm9wIHRoZSBvYmplY3QgdHlwZSBhZGRlZCBmaXJzdAorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9zY2hlbWFzIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7 CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgRFJPUCBTRVFVRU5DRVMgSU4g U0NIRU1BIHB1Yl90ZXN0MTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf c2NoZW1hcworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg c2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg U2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxlcyBmcm9t IHNjaGVtYXM6CisgICAgInB1Yl90ZXN0MSIKK1NlcXVlbmNlcyBmcm9tIHNjaGVtYXM6Cisg ICAgInB1Yl90ZXN0MiIKKworXGRuKyBwdWJfdGVzdDEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHNjaGVtYXMKKyAgIE5hbWUgICAgfCAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBY2Nlc3MgcHJpdmlsZWdlcyB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcHViX3Rlc3QxIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgICAg ICAgICAgICAgICAgICAgfCAKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFz IiAodGFibGVzKQorCitcZG4rIHB1Yl90ZXN0MgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc2NoZW1hcworICAgTmFtZSAgICB8ICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFjY2VzcyBwcml2aWxlZ2VzIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KKyBwdWJfdGVzdDIgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCAgICAgICAg ICAgICAgICAgICB8IAorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiIChz ZXF1ZW5jZXMpCisKK1xkKyBwdWJfdGVzdDEudGVzdF9zZXExOworICAgICAgICAgICAgICAg ICAgICAgICAgU2VxdWVuY2UgInB1Yl90ZXN0MS50ZXN0X3NlcTEiCisgIFR5cGUgIHwgU3Rh cnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xl cz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8ICAgICAx IHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAg IHwgICAgIDEKKworXGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVGFibGUgInB1Yl90ZXN0MS50ZXN0X3RibDEiCisgQ29sdW1uIHwg IFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBT dGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8 ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdl ciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAg ICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlc3RfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwg YnRyZWUgKGEpCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworXGQr IHB1Yl90ZXN0Mi50ZXN0X3NlcTI7CisgICAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5j ZSAicHViX3Rlc3QyLnRlc3Rfc2VxMiIKKyAgVHlwZSAgfCBTdGFydCB8IE1pbmltdW0gfCAg ICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAgICAxIHwgOTIy MzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQorUHVibGlj YXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVzdF90 YmwyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJfdGVzdDIu dGVzdF90YmwyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAg ICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAg ICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0X3Ri bDJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorCistLSBhZGQgYSBkaWZmZXJlbnQg c2NoZW1hIChub3QgaW5jbHVkaW5nIHRoZSBhbHJlYWR5IHB1Ymxpc2hlZCBzZXF1ZW5jZXMp CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFRBQkxFIHB1Yl90ZXN0 Mi50ZXN0X3RibDI7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFNF UVVFTkNFIHB1Yl90ZXN0MS50ZXN0X3NlcTE7CitcZFJwKyB0ZXN0cHViX3NjaGVtYXMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX3NjaGVtYXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCitU YWJsZXM6CisgICAgInB1Yl90ZXN0Mi50ZXN0X3RibDIiCitUYWJsZXMgZnJvbSBzY2hlbWFz OgorICAgICJwdWJfdGVzdDEiCitTZXF1ZW5jZXM6CisgICAgInB1Yl90ZXN0MS50ZXN0X3Nl cTEiCitTZXF1ZW5jZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdDIiCisKK1xkKyBw dWJfdGVzdDEudGVzdF9zZXExOworICAgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2Ug InB1Yl90ZXN0MS50ZXN0X3NlcTEiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAg ICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMz NzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKK1B1YmxpY2F0 aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIgorCitcZCsgcHViX3Rlc3QxLnRlc3RfdGJs MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHViX3Rlc3QxLnRl c3RfdGJsMSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAg IHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVzdF90Ymwx X3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoYSkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVz dHB1Yl9zY2hlbWFzIgorCitcZCsgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKKyAgICAgICAgICAg ICAgICAgICAgICAgIFNlcXVlbmNlICJwdWJfdGVzdDIudGVzdF9zZXEyIgorICBUeXBlICB8 IFN0YXJ0IHwgTWluaW11bSB8ICAgICAgIE1heGltdW0gICAgICAgfCBJbmNyZW1lbnQgfCBD eWNsZXM/IHwgQ2FjaGUgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQgfCAg ICAgMSB8ICAgICAgIDEgfCA5MjIzMzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwgbm8g ICAgICB8ICAgICAxCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKwor XGQrIHB1Yl90ZXN0Mi50ZXN0X3RibDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGFibGUgInB1Yl90ZXN0Mi50ZXN0X3RibDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQg fCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQor IGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK0lu ZGV4ZXM6CisgICAgInRlc3RfdGJsMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEpCitQ dWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworLS0gbm93IGRyb3AgdGhl IGV4cGxpY2l0bHkgYWRkZWQgb2JqZWN0cyBhZ2FpbgorQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9zY2hlbWFzIERST1AgVEFCTEUgcHViX3Rlc3QyLnRlc3RfdGJsMjsKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBEUk9QIFNFUVVFTkNFIHB1Yl90ZXN0MS50ZXN0 X3NlcTE7CitcZFJwKyB0ZXN0cHViX3NjaGVtYXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3NjaGVtYXMKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCitUYWJsZXMgZnJvbSBzY2hlbWFzOgor ICAgICJwdWJfdGVzdDEiCitTZXF1ZW5jZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVz dDIiCisKK1xkKyBwdWJfdGVzdDEudGVzdF9zZXExOworICAgICAgICAgICAgICAgICAgICAg ICAgU2VxdWVuY2UgInB1Yl90ZXN0MS50ZXN0X3NlcTEiCisgIFR5cGUgIHwgU3RhcnQgfCBN aW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBD YWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAg ICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAg IDEKKworXGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVGFibGUgInB1Yl90ZXN0MS50ZXN0X3RibDEiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0 YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAg ICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKK0luZGV4ZXM6CisgICAgInRlc3RfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUg KGEpCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworXGQrIHB1Yl90 ZXN0Mi50ZXN0X3NlcTI7CisgICAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSAicHVi X3Rlc3QyLnRlc3Rfc2VxMiIKKyAgVHlwZSAgfCBTdGFydCB8IE1pbmltdW0gfCAgICAgICBN YXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAgICAxIHwgOTIyMzM3MjAz Njg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQorUHVibGljYXRpb25z OgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJfdGVzdDIudGVzdF90 YmwyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAor IGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0X3RibDJfcGtl eSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJf c2NoZW1hczsKK0RST1AgVEFCTEUgcHViX3Rlc3QxLnRlc3RfdGJsMSwgcHViX3Rlc3QyLnRl c3RfdGJsMjsKK0RST1AgU0VRVUVOQ0UgcHViX3Rlc3QxLnRlc3Rfc2VxMSwgcHViX3Rlc3Qy LnRlc3Rfc2VxMjsKK0RST1AgU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QyOwogLS0gVGVz dHMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkOwpAQCAtMjQ1 LDEwICs3NDksMTAgQEAgVVBEQVRFIHRlc3RwdWJfcGFydGVkMSBTRVQgYSA9IDE7CiAtLSBv bmx5IHBhcmVudCBpcyBsaXN0ZWQgYXMgYmVpbmcgaW4gcHVibGljYXRpb24sIG5vdCB0aGUg cGFydGl0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBBREQgVEFC TEUgdGVzdHB1Yl9wYXJ0ZWQ7CiBcZFJwKyB0ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3BhcnRlZCIKIApAQCAtMjYzLDEw ICs3NjcsMTAgQEAgQUxURVIgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQgREVUQUNIIFBBUlRJVElP TiB0ZXN0cHViX3BhcnRlZDE7CiBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQxIFNFVCBhID0gMTsK IEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkIFNFVCAocHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKIFxkUnArIHRlc3RwdWJfZm9ycGFydGVkCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0 ZWQKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAg ICAgICB8IHQKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcGFydGVkIgogCkBAIC0y OTUsMTAgKzc5OSwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwg dGVzdHB1Yl9yZl90YmwyIFdIRVJFIChjIDw+ICd0ZXN0JyBBTkQgZCA8IDUpIFdJVEggKHB1 Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsg dGVzdHB1YjUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAg IHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8 IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIK ICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChjIDw+ICd0ZXN0Jzo6dGV4 dCkgQU5EIChkIDwgNSkpCkBAIC0zMTEsMTAgKzgxNSwxMCBAQCBUYWJsZXM6CiAKIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUg KGUgPiAxMDAwIEFORCBlIDwgMjAwMCk7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVz OgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9y Zl90YmwyIiBXSEVSRSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTMz MCwxMCArODM0LDEwIEBAIFB1YmxpY2F0aW9uczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1YjUgRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3RibDI7CiBcZFJwKyB0ZXN0cHViNQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUK LSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAg fCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwg ZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMu dGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAxMDAwKSBBTkQgKGUgPCAyMDAwKSkKQEAg LTM0MSwxMCArODQ1LDEwIEBAIFRhYmxlczoKIC0tIHJlbW92ZSB0ZXN0cHViX3JmX3RibDEg YW5kIGFkZCB0ZXN0cHViX3JmX3RibDMgYWdhaW4gKGFub3RoZXIgV0hFUkUgZXhwcmVzc2lv bikKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3Ri bDMgV0hFUkUgKGUgPiAzMDAgQU5EIGUgPCA1MDApOwogXGRScCsgdGVzdHB1YjUKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICB8IGYK IFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMyIgV0hFUkUgKChlID4gMzAw KSBBTkQgKGUgPCA1MDApKQogCkBAIC0zNzcsMTAgKzg4MSwxMCBAQCBTRVQgY2xpZW50X21p bl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50 YXgxIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIE9OTFkgdGVzdHB1Yl9yZl90YmwzIFdI RVJFIChlIDwgOTk5KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfc3ludGF4MQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDEKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9zeW50YXgxCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFi bGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1 Yl9yZl90YmwzIiBXSEVSRSAoZSA8IDk5OSkKQEAgLTM5MCwxMCArODk0LDEwIEBAIFNFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX3N5bnRheDIgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl9zY2hl bWExLnRlc3RwdWJfcmZfdGJsNSBXSEVSRSAoaCA8IDk5OSkgV0lUSCAocHVibGlzaCA9ICdp bnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX3N5 bnRheDIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9zeW50YXgyCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAg IHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MgorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg ICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJs MSIKICAgICAidGVzdHB1Yl9yZl9zY2hlbWExLnRlc3RwdWJfcmZfdGJsNSIgV0hFUkUgKGgg PCA5OTkpCkBAIC01MDgsMTAgKzEwMTIsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWI2IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfc2NoZW1hMjsKIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfc2No ZW1hMiwgVEFCTEUgdGVzdHB1Yl9yZl9zY2hlbWEyLnRlc3RwdWJfcmZfdGJsNiBXSEVSRSAo aSA8IDk5KTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViNgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjYKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzOgogICAgICJ0ZXN0cHViX3JmX3NjaGVtYTIudGVzdHB1Yl9yZl90Ymw2 IiBXSEVSRSAoaSA8IDk5KQogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTcyNSwxMCArMTIy OSwxMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl90YWJsZV9pbnMgV0lUSCAocHVi bGlzaCA9ICdpbnNlcnQsIHRydW5jYXRlJyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl90YWJsZV9pbnMgQUREIFRBQkxFIHRlc3Rw dWJfdGJsNSAoYSk7CQktLSBvawogXGRScCsgdGVzdHB1Yl90YWJsZV9pbnMKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3RhYmxlX2lucwot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfdGFibGVfaW5zCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAg IHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90Ymw1IiAoYSkKIApAQCAtOTAy LDEwICsxNDA2LDEwIEBAIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMg KGEgaW50LCBiIGludCwgYyBpbnQsIFBSSU1BUlkgS0VZIChhLGMpKTsKIEFMVEVSIFRBQkxF IHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVY IHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVyc19wa2V5OwogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9ib3RoX2ZpbHRlcnMgQUREIFRBQkxFIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyAo YSxjKSBXSEVSRSAoYyAhPSAxKTsKIFxkUnArIHRlc3RwdWJfYm90aF9maWx0ZXJzCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2JvdGhfZmls dGVycwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibF9ib3RoX2Zp bHRlcnMiIChhLCBjKSBXSEVSRSAoYyA8PiAxKQogCkBAIC0xMTEwLDEwICsxNjE0LDEwIEBA IEVSUk9SOiAgcmVsYXRpb24gInRlc3RwdWJfdGJsMSIgaXMgYWxyZWFkeSBtZW1iZXIgb2Yg cHVibGljYXRpb24gInRlc3RwdWJfZm9ydGJsCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3J0YmwgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMTsKIEVSUk9SOiAgcHVibGljYXRpb24g InRlc3RwdWJfZm9ydGJsIiBhbHJlYWR5IGV4aXN0cwogXGRScCsgdGVzdHB1Yl9mb3J0YmwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9ydGJsCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRibAorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQg ICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogICAg ICJwdWJsaWMudGVzdHB1Yl90YmwxIgpAQCAtMTE1MywxMCArMTY1NywxMCBAQCBOb3QtbnVs bCBjb25zdHJhaW50czoKICAgICAidGVzdHB1Yl90YmwxX2lkX25vdF9udWxsIiBOT1QgTlVM TCAiaWQiCiAKIFxkUnArIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9kZWZhdWx0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgog ICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAgICAgInB1YmxpYy50ZXN0cHViX3RibDEi CkBAIC0xMjM2LDEwICsxNzQwLDEwIEBAIFJFVk9LRSBDUkVBVEUgT04gREFUQUJBU0UgcmVn cmVzc2lvbiBGUk9NIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBEUk9QIFRBQkxFIHRl c3RwdWJfcGFydGVkOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDE7CiBcZFJwKyB0ZXN0cHVi X2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgICB8IHQgICAgICAgICB8IGYKICgxIHJvdykKIAogLS0gZmFpbCAtIG11c3QgYmUgb3du ZXIgb2YgcHVibGljYXRpb24KQEAgLTEyNDksMjAgKzE3NTMsMjAgQEAgRVJST1I6ICBtdXN0 IGJlIG93bmVyIG9mIHB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAogUkVTRVQgUk9MRTsK IEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBSRU5BTUUgVE8gdGVzdHB1Yl9m b287CiBcZFJwIHRlc3RwdWJfZm9vCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICBOYW1lICAgICB8ICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cHViX2ZvbyB8IHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAg IE5hbWUgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg dGVzdHB1Yl9mb28gfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg ICB8IHQgICAgICAgICB8IGYKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0 aGUgcmVzdCBzaW1wbGUKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9vIFJFTkFNRSBU TyB0ZXN0cHViX2RlZmF1bHQ7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1bHQg T1dORVIgVE8gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIFxkUnAgdGVzdHB1Yl9kZWZh dWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHB1YmxpY2F0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAg ICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyB0ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0tIGFkZGlu ZyBzY2hlbWFzIGFuZCB0YWJsZXMKQEAgLTEyNzgsMTkgKzE3ODIsMTkgQEAgQ1JFQVRFIFRB QkxFICJDVVJSRU5UX1NDSEVNQSIuIkNVUlJFTlRfU0NIRU1BIihpZCBpbnQpOwogU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWIxX2ZvcnNjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0 ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNl cyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFz OgogICAgICJwdWJfdGVzdDEiCiAKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMl9mb3Jz Y2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDIsIHB1Yl90 ZXN0MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIyX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAt MTMwNCw0NCArMTgwOCw0NCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjZfZm9yc2No ZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BICJDVVJSRU5UX1NDSEVNQSIsIENVUgogQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgRk9SIFRBQkxFICJDVVJSRU5UX1NDSEVN QSIuIkNVUlJFTlRfU0NIRU1BIjsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJw KyB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hl bWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVl bmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWI0X2ZvcnNjaGVtYQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0X2ZvcnNjaGVt YQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWI0X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAg ICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgog CiBcZFJwKyB0ZXN0cHViNV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNV9m b3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxs IHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgogICAgICJDVVJSRU5UX1NDSEVNQSIKICAgICAicHVibGljIgogCiBcZFJw KyB0ZXN0cHViNl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hl bWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVl bmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJDVVJSRU5UX1NDSEVNQSIKICAgICAicHVibGljIgogCiBcZFJwKyB0ZXN0 cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAiQ1VSUkVOVF9TQ0hF TUEuQ1VSUkVOVF9TQ0hFTUEiCiAKQEAgLTEzNzUsMTAgKzE4NzksMTAgQEAgRVJST1I6ICBz Y2hlbWEgInRlc3RwdWJfdmlldyIgZG9lcyBub3QgZXhpc3QKIC0tIGRyb3BwaW5nIHRoZSBz Y2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5nZSBpbiBwdWJsaWNhdGlvbgogRFJPUCBT Q0hFTUEgcHViX3Rlc3QzOwogXGRScCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJf dGVzdDIiCkBAIC0xMzg2LDIwICsxODkwLDIwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAt LSByZW5hbWluZyB0aGUgc2NoZW1hIHNob3VsZCByZWZsZWN0IHRoZSBjaGFuZ2UgaW4gcHVi bGljYXRpb24KIEFMVEVSIFNDSEVNQSBwdWJfdGVzdDEgUkVOQU1FIHRvIHB1Yl90ZXN0MV9y ZW5hbWVkOwogXGRScCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFi bGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxX3JlbmFtZWQiCiAgICAgInB1Yl90 ZXN0MiIKIAogQUxURVIgU0NIRU1BIHB1Yl90ZXN0MV9yZW5hbWVkIFJFTkFNRSB0byBwdWJf dGVzdDE7CiBcZFJwKyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViMl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAg LTE0MDcsMTAgKzE5MTEsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIGFsdGVyIHB1 YmxpY2F0aW9uIGFkZCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNj aGVtYSBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9m b3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJw dWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MTksMTAgKzE5MjMsMTAgQEAgVGFi bGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVt YSBBREQgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3RlbnRfc2NoZW1hOwogRVJST1I6ICBz Y2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90IGV4aXN0CiBcZFJwKyB0ZXN0 cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgog ICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MzEsMTAgKzE5MzUsMTAg QEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2Zv cnNjaGVtYSBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBFUlJPUjogIHNjaGVt YSAicHViX3Rlc3QxIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiAidGVzdHB1 YjFfZm9yc2NoZW1hIgogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwg ZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVz dDIiCkBAIC0xNDQyLDEwICsxOTQ2LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBh bHRlciBwdWJsaWNhdGlvbiBkcm9wIHNjaGVtYQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0 ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNl cyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFz OgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE0NTMsMTAgKzE5NTcsMTAgQEAgVGFibGVzIGZy b20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9Q IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwogRVJST1I6ICB0YWJsZXMgZnJvbSBzY2hl bWEgInB1Yl90ZXN0MiIgYXJlIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbgogXGRScCsg dGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1h CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5j ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1h czoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNDY0LDI5ICsxOTY4LDI5IEBAIFRhYmxlcyBm cm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJP UCBUQUJMRVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVt YSAibm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIx X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAg InB1Yl90ZXN0MSIKIAogLS0gZHJvcCBhbGwgc2NoZW1hcwogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBc ZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3Jz Y2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNl cXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNl cXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0t IGFsdGVyIHB1YmxpY2F0aW9uIHNldCBtdWx0aXBsZSBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDEs IHB1Yl90ZXN0MjsKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYK IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3Qy IgpAQCAtMTQ5NSwxMCArMTk5OSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIG5v bl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9uX2V4aXN0ZW50X3NjaGVt YSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAg ICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHVi X3Rlc3QyIgpAQCAtMTUwNywxMCArMjAxMSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgog LS0gcmVtb3ZpbmcgdGhlIGR1cGxpY2F0ZSBzY2hlbWFzCiBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJf dGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE1ODksMTggKzIwOTMs MTggQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWIzX2ZvcnNjaGVtYTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CiBcZFJwKyB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19m b3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxs IHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAK IEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIzX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAg fCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE2MTAs MjAgKzIxMTQsMjAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hX2Zv cnRhYmxlIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgVEEKIENSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYSBGT1IgVEFCTEUgcHViX3Rlc3Qy LnRibDEsIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJs ZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0Mi50YmwxIgogVGFibGVzIGZy b20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxl X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1h CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5j ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJf dGVzdDIudGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC0xNjY3LDQwICsyMTcxLDg1 IEBAIENSRUFURSBTQ0hFTUEgc2NoMTsKIENSRUFURSBTQ0hFTUEgc2NoMjsKIENSRUFURSBU QUJMRSBzY2gxLnRibDEgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CiBDUkVBVEUg VEFCTEUgc2NoMi50YmwxX3BhcnQxIFBBUlRJVElPTiBPRiBzY2gxLnRibDEgRk9SIFZBTFVF UyBGUk9NICgxKSB0byAoMTApOworQ1JFQVRFIFNFUVVFTkNFIHNjaDEuc2VxMTsKK0NSRUFU RSBTRVFVRU5DRSBzY2gyLnNlcTI7CiAtLSBTY2hlbWEgcHVibGljYXRpb24gdGhhdCBkb2Vz IG5vdCBpbmNsdWRlIHRoZSBzY2hlbWEgdGhhdCBoYXMgdGhlIHBhcmVudCB0YWJsZQogQ1JF QVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgVEFCTEVTIElOIFNDSEVNQSBzY2gyIFdJVEggKFBV QkxJU0hfVklBX1BBUlRJVElPTl9ST09UPTEpOworQUxURVIgUFVCTElDQVRJT04gcHViIEFE RCBTRVFVRU5DRVMgSU4gU0NIRU1BIHNjaDI7CiBTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0 aW9uX3RhYmxlczsKICBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSAgfCBhdHRu YW1lcyB8IHJvd2ZpbHRlciAKIC0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KICBwdWIgICAgIHwgc2NoMiAgICAgICB8IHRibDFf cGFydDEgfCB7YX0gICAgICB8IAogKDEgcm93KQogCitTRUxFQ1QgKiBGUk9NIHBnX3B1Ymxp Y2F0aW9uX3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFt ZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwg c2NoMiAgICAgICB8IHNlcTIKKygxIHJvdykKKwogRFJPUCBQVUJMSUNBVElPTiBwdWI7CiAt LSBUYWJsZSBwdWJsaWNhdGlvbiB0aGF0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHBhcmVudCB0 YWJsZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgVEFCTEUgc2NoMi50YmwxX3BhcnQx IFdJVEggKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UPTEpOworQUxURVIgUFVCTElDQVRJ T04gcHViIEFERCBTRVFVRU5DRSBzY2gyLnNlcTI7CiBTRUxFQ1QgKiBGUk9NIHBnX3B1Ymxp Y2F0aW9uX3RhYmxlczsKICBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSAgfCBh dHRuYW1lcyB8IHJvd2ZpbHRlciAKIC0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KICBwdWIgICAgIHwgc2NoMiAgICAgICB8IHRi bDFfcGFydDEgfCB7YX0gICAgICB8IAogKDEgcm93KQogCitTRUxFQ1QgKiBGUk9NIHBnX3B1 YmxpY2F0aW9uX3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNl bmFtZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAg IHwgc2NoMiAgICAgICB8IHNlcTIKKygxIHJvdykKKwogLS0gVGFibGUgcHVibGljYXRpb24g dGhhdCBpbmNsdWRlcyBib3RoIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRoZSBjaGlsZCB0YWJs ZQogQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBUQUJMRSBzY2gxLnRibDE7CitBTFRFUiBQ VUJMSUNBVElPTiBwdWIgQUREIFNFUVVFTkNFIHNjaDEuc2VxMTsKIFNFTEVDVCAqIEZST00g cGdfcHVibGljYXRpb25fdGFibGVzOwogIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgdGFibGVu YW1lIHwgYXR0bmFtZXMgfCByb3dmaWx0ZXIgCiAtLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KICBwdWIgICAgIHwgc2NoMSAgICAg ICB8IHRibDEgICAgICB8IHthfSAgICAgIHwgCiAoMSByb3cpCiAKK1NFTEVDVCAqIEZST00g cGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgc2Vx dWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHB1 YiAgICAgfCBzY2gxICAgICAgIHwgc2VxMQorIHB1YiAgICAgfCBzY2gyICAgICAgIHwgc2Vx MgorKDIgcm93cykKKwogRFJPUCBQVUJMSUNBVElPTiBwdWI7CiAtLSBTY2hlbWEgcHVibGlj YXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzY2hlbWEgdGhhdCBoYXMgdGhlIHBh cmVudCB0YWJsZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgVEFCTEVTIElOIFNDSEVN QSBzY2gyIFdJVEggKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UPTApOworQUxURVIgUFVC TElDQVRJT04gcHViIEFERCBTRVFVRU5DRSBzY2gxLnNlcTE7CiBTRUxFQ1QgKiBGUk9NIHBn X3B1YmxpY2F0aW9uX3RhYmxlczsKICBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFt ZSAgfCBhdHRuYW1lcyB8IHJvd2ZpbHRlciAKIC0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KICBwdWIgICAgIHwgc2NoMiAgICAg ICB8IHRibDFfcGFydDEgfCB7YX0gICAgICB8IAogKDEgcm93KQogCitTRUxFQ1QgKiBGUk9N IHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNl cXVlbmNlbmFtZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBw dWIgICAgIHwgc2NoMSAgICAgICB8IHNlcTEKKygxIHJvdykKKworRFJPUCBQVUJMSUNBVElP TiBwdWI7CistLSBTZXF1ZW5jZSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 YiBGT1IgU0VRVUVOQ0Ugc2NoMi5zZXEyOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlv bl90YWJsZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUgfCBhdHRuYW1l cyB8IHJvd2ZpbHRlciAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorKDAgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19wdWJs aWNhdGlvbl9zZXF1ZW5jZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBzZXF1ZW5jZW5h bWUgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgcHViICAgICB8 IHNjaDIgICAgICAgfCBzZXEyCisoMSByb3cpCisKIERST1AgUFVCTElDQVRJT04gcHViOwog LS0gVGFibGUgcHVibGljYXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBwYXJlbnQg dGFibGUKIENSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFRBQkxFIHNjaDIudGJsMV9wYXJ0 MSBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0wKTsKQEAgLTE3MTAsMTQgKzIy NTksMjYgQEAgU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CiAgcHViICAg ICB8IHNjaDIgICAgICAgfCB0YmwxX3BhcnQxIHwge2F9ICAgICAgfCAKICgxIHJvdykKIAor U0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisgcHVibmFtZSB8IHNj aGVtYW5hbWUgfCBzZXF1ZW5jZW5hbWUgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tCisoMCByb3dzKQorCiAtLSBUYWJsZSBwdWJsaWNhdGlvbiB0aGF0IGluY2x1 ZGVzIGJvdGggdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhlIGNoaWxkIHRhYmxlCiBBTFRFUiBQ VUJMSUNBVElPTiBwdWIgQUREIFRBQkxFIHNjaDEudGJsMTsKK0FMVEVSIFBVQkxJQ0FUSU9O IHB1YiBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBzY2gyOwogU0VMRUNUICogRlJPTSBwZ19w dWJsaWNhdGlvbl90YWJsZXM7CiAgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUg IHwgYXR0bmFtZXMgfCByb3dmaWx0ZXIgCiAtLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tCiAgcHViICAgICB8IHNjaDIgICAgICAg fCB0YmwxX3BhcnQxIHwge2F9ICAgICAgfCAKICgxIHJvdykKIAorU0VMRUNUICogRlJPTSBw Z19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBzZXF1 ZW5jZW5hbWUgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgcHVi ICAgICB8IHNjaDIgICAgICAgfCBzZXEyCisoMSByb3cpCisKIERST1AgUFVCTElDQVRJT04g cHViOwogRFJPUCBUQUJMRSBzY2gyLnRibDFfcGFydDE7CiBEUk9QIFRBQkxFIHNjaDEudGJs MTsKQEAgLTE3MzMsOSArMjI5NCw4MSBAQCBTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9u X3RhYmxlczsKICBwdWIgICAgIHwgc2NoMSAgICAgICB8IHRibDEgICAgICB8IHthfSAgICAg IHwgCiAoMSByb3cpCiAKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2Vz OworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorKDAgcm93cykKKworRFJPUCBQVUJMSUNBVElP TiBwdWI7CistLSBTY2hlbWEgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiBwdWIg Rk9SIFNFUVVFTkNFIHNjaDIuc2VxMjsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25f dGFibGVzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgdGFibGVuYW1lIHwgYXR0bmFtZXMg fCByb3dmaWx0ZXIgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGdfcHVibGlj YXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1l IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHB1YiAgICAgfCBz Y2gyICAgICAgIHwgc2VxMgorKDEgcm93KQorCitEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKKy0t IFNlcXVlbmNlIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBTRVFV RU5DRVMgSU4gU0NIRU1BIHNjaDI7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3Rh YmxlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSB8IGF0dG5hbWVzIHwg cm93ZmlsdGVyIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0 aW9uX3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAK Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2No MiAgICAgICB8IHNlcTIKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBT RVFVRU5DRSBzY2gxLnNlcTE7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxl czsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSB8IGF0dG5hbWVzIHwgcm93 ZmlsdGVyIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9u X3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2NoMSAg ICAgICB8IHNlcTEKKyBwdWIgICAgIHwgc2NoMiAgICAgICB8IHNlcTIKKygyIHJvd3MpCisK K0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBEUk9QIFNFUVVFTkNFIHNjaDEuc2VxMTsKK1NFTEVD VCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1l IHwgdGFibGVuYW1lIHwgYXR0bmFtZXMgfCByb3dmaWx0ZXIgCistLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisK K1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBz Y2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLQorIHB1YiAgICAgfCBzY2gyICAgICAgIHwgc2VxMgorKDEgcm93KQorCitB TFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgc2NoMTsKK1NF TEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworIHB1Ym5hbWUgfCBzY2hlbWFu YW1lIHwgdGFibGVuYW1lIHwgYXR0bmFtZXMgfCByb3dmaWx0ZXIgCistLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUg fCBzY2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLQorIHB1YiAgICAgfCBzY2gxICAgICAgIHwgc2VxMQorIHB1YiAgICAg fCBzY2gyICAgICAgIHwgc2VxMgorKDIgcm93cykKKwogUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKIERST1AgUFVCTElDQVRJT04gcHViOwogRFJPUCBUQUJMRSBzY2gxLnRibDE7CitE Uk9QIFNFUVVFTkNFIHNjaDEuc2VxMSwgc2NoMi5zZXEyOwogRFJPUCBTQ0hFTUEgc2NoMSBj YXNjYWRlOwogRFJPUCBTQ0hFTUEgc2NoMiBjYXNjYWRlOwogUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBkODc4 YTk3MWRmOS4uYTAzZTZkOTM3ODAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0CkBAIC0xNDQxLDYgKzE0NDEsMTQgQEAgcGdfcHJlcGFyZWRfeGFjdHN8IFNFTEVDVCBw LnRyYW5zYWN0aW9uLAogICAgRlJPTSAoKHBnX3ByZXBhcmVkX3hhY3QoKSBwKHRyYW5zYWN0 aW9uLCBnaWQsIHByZXBhcmVkLCBvd25lcmlkLCBkYmlkKQogICAgICBMRUZUIEpPSU4gcGdf YXV0aGlkIHUgT04gKChwLm93bmVyaWQgPSB1Lm9pZCkpKQogICAgICBMRUZUIEpPSU4gcGdf ZGF0YWJhc2UgZCBPTiAoKHAuZGJpZCA9IGQub2lkKSkpOworcGdfcHVibGljYXRpb25fc2Vx dWVuY2VzfCBTRUxFQ1QgcC5wdWJuYW1lLAorICAgIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1l LAorICAgIGMucmVsbmFtZSBBUyBzZXF1ZW5jZW5hbWUKKyAgIEZST00gcGdfcHVibGljYXRp b24gcCwKKyAgICBMQVRFUkFMIHBnX2dldF9wdWJsaWNhdGlvbl9zZXF1ZW5jZXMoKHAucHVi bmFtZSk6OnRleHQpIGdwcyhyZWxpZCksCisgICAgKHBnX2NsYXNzIGMKKyAgICAgSk9JTiBw Z19uYW1lc3BhY2UgbiBPTiAoKG4ub2lkID0gYy5yZWxuYW1lc3BhY2UpKSkKKyAgV0hFUkUg KGMub2lkID0gZ3BzLnJlbGlkKTsKIHBnX3B1YmxpY2F0aW9uX3RhYmxlc3wgU0VMRUNUIHAu cHVibmFtZSwKICAgICBuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICBjLnJlbG5hbWUg QVMgdGFibGVuYW1lLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb2JqZWN0 X2FkZHJlc3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb2JqZWN0X2FkZHJlc3Muc3Fs CmluZGV4IDFhNmM2MWY0OWQ1Li41YzZjZGViMDVkZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvb2JqZWN0X2FkZHJlc3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL29iamVjdF9hZGRyZXNzLnNxbApAQCAtNTAsNiArNTAsNyBAQCBDUkVBVEUgVFJBTlNG T1JNIEZPUiBpbnQgTEFOR1VBR0UgU1FMICgKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0g J0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiBhZGRyX3B1YiBGT1IgVEFCTEUgYWRkcl9u c3AuZ2VudGFibGU7CiBDUkVBVEUgUFVCTElDQVRJT04gYWRkcl9wdWJfc2NoZW1hIEZPUiBU QUJMRVMgSU4gU0NIRU1BIGFkZHJfbnNwOworQ1JFQVRFIFBVQkxJQ0FUSU9OIGFkZHJfcHVi X3NjaGVtYTIgRk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUEgYWRkcl9uc3A7CiBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2FkZHJfc3Vi IENPTk5FQ1RJT04gJycgUFVCTElDQVRJT04gYmFyIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwg c2xvdF9uYW1lID0gTk9ORSk7CiBDUkVBVEUgU1RBVElTVElDUyBhZGRyX25zcC5nZW50YWJs ZV9zdGF0IE9OIGEsIGIgRlJPTSBhZGRyX25zcC5nZW50YWJsZTsKQEAgLTIwNiw3ICsyMDcs OCBAQCBXSVRIIG9iamVjdHMgKHR5cGUsIG5hbWUsIGFyZ3MpIEFTIChWQUxVRVMKICAgICAo J3RyYW5zZm9ybScsICd7aW50fScsICd7c3FsfScpLAogICAgICgnYWNjZXNzIG1ldGhvZCcs ICd7YnRyZWV9JywgJ3t9JyksCiAgICAgKCdwdWJsaWNhdGlvbicsICd7YWRkcl9wdWJ9Jywg J3t9JyksCi0gICAgKCdwdWJsaWNhdGlvbiBuYW1lc3BhY2UnLCAne2FkZHJfbnNwfScsICd7 YWRkcl9wdWJfc2NoZW1hfScpLAorICAgICgncHVibGljYXRpb24gbmFtZXNwYWNlJywgJ3th ZGRyX25zcH0nLCAne2FkZHJfcHViX3NjaGVtYSwgdH0nKSwKKyAgICAoJ3B1YmxpY2F0aW9u IG5hbWVzcGFjZScsICd7YWRkcl9uc3B9JywgJ3thZGRyX3B1Yl9zY2hlbWEyLCBzfScpLAog ICAgICgncHVibGljYXRpb24gcmVsYXRpb24nLCAne2FkZHJfbnNwLCBnZW50YWJsZX0nLCAn e2FkZHJfcHVifScpLAogICAgICgnc3Vic2NyaXB0aW9uJywgJ3tyZWdyZXNzX2FkZHJfc3Vi fScsICd7fScpLAogICAgICgnc3RhdGlzdGljcyBvYmplY3QnLCAne2FkZHJfbnNwLCBnZW50 YWJsZV9zdGF0fScsICd7fScpCkBAIC0yMjcsNiArMjI5LDcgQEAgT1JERVIgQlkgYWRkcjEu Y2xhc3NpZCwgYWRkcjEub2JqaWQsIGFkZHIxLm9ianN1YmlkOwogRFJPUCBGT1JFSUdOIERB VEEgV1JBUFBFUiBhZGRyX2ZkdyBDQVNDQURFOwogRFJPUCBQVUJMSUNBVElPTiBhZGRyX3B1 YjsKIERST1AgUFVCTElDQVRJT04gYWRkcl9wdWJfc2NoZW1hOworRFJPUCBQVUJMSUNBVElP TiBhZGRyX3B1Yl9zY2hlbWEyOwogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc19hZGRyX3N1 YjsKIAogRFJPUCBTQ0hFTUEgYWRkcl9uc3AgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3B1YmxpY2F0aW9uLnNxbAppbmRleCBkNTA1MWE1ZTc0Ni4uMDE2YjU4YzY3ZWMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTI3LDcgKzI3LDcgQEAgQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfeHh4IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290ID0gJ3RydWUnLCBwdWJsaXMKIAogXGRScAogCi1BTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2RlZmF1bHQgU0VUIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUn KTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBTRVQgKHB1Ymxpc2ggPSAn aW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgc2VxdWVuY2UnKTsKIAogXGRScAogCkBAIC00Niw2 ICs0Niw4IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzIFNFVCAo cHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZScpOwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJs MiAoaWQgc2VyaWFsIHByaW1hcnkga2V5LCBkYXRhIHRleHQpOwogLS0gZmFpbCAtIGNhbid0 IGFkZCB0byBmb3IgYWxsIHRhYmxlcyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JhbGx0YWJsZXMgQUREIFRBQkxFIHRlc3RwdWJfdGJsMjsKKy0tIGZhaWwg LSBjYW4ndCBhZGQgYSB0YWJsZSB1c2luZyBBREQgU0VRVUVOQ0UgY29tbWFuZAorQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMgQUREIFNFUVVFTkNFIHRlc3RwdWJf dGJsMjsKIC0tIGZhaWwgLSBjYW4ndCBkcm9wIGZyb20gYWxsIHRhYmxlcyBwdWJsaWNhdGlv bgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMgRFJPUCBUQUJMRSB0 ZXN0cHViX3RibDI7CiAtLSBmYWlsIC0gY2FuJ3QgYWRkIHRvIGZvciBhbGwgdGFibGVzIHB1 YmxpY2F0aW9uCkBAIC0xMTcsNiArMTE5LDE4OCBAQCBSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJsM2E7CiBEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNDsKIAorLS0tIGFkZGluZyBzZXF1ZW5jZXMK K0NSRUFURSBTRVFVRU5DRSB0ZXN0cHViX3NlcTA7CitDUkVBVEUgU0VRVUVOQ0UgcHViX3Rl c3QudGVzdHB1Yl9zZXExOworCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7 CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgRk9SIEFMTCBT RVFVRU5DRVMgV0lUSCAocHVibGlzaCA9ICdzZXF1ZW5jZScpOworUkVTRVQgY2xpZW50X21p bl9tZXNzYWdlczsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2Vz IFNFVCAocHVibGlzaCA9ICdpbnNlcnQsIHNlcXVlbmNlJyk7CisKK0NSRUFURSBTRVFVRU5D RSB0ZXN0cHViX3NlcTI7CistLSBmYWlsIC0gY2FuJ3QgYWRkIHRvIGZvciBhbGwgc2VxdWVu Y2VzIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVl bmNlcyBBREQgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEyOworLS0gZmFpbCAtIGNhbid0IGRyb3Ag ZnJvbSBhbGwgc2VxdWVuY2VzIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbHNlcXVlbmNlcyBEUk9QIFNFUVVFTkNFIHRlc3RwdWJfc2VxMjsKKy0tIGZh aWwgLSBjYW4ndCBhZGQgdG8gZm9yIGFsbCBzZXF1ZW5jZXMgcHVibGljYXRpb24KK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIFNFVCBTRVFVRU5DRSBwdWJf dGVzdC50ZXN0cHViX3NlcTE7CisKKy0tIGZhaWwgLSBjYW4ndCBhZGQgc2NoZW1hIHRvICdG T1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsc2VxdWVuY2VzIEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0Owor LS0gZmFpbCAtIGNhbid0IGRyb3Agc2NoZW1hIGZyb20gJ0ZPUiBBTEwgU0VRVUVOQ0VTJyBw dWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMg RFJPUCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworLS0gZmFpbCAtIGNhbid0IHNl dCBzY2hlbWEgdG8gJ0ZPUiBBTEwgU0VRVUVOQ0VTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgU0VUIFNFUVVFTkNFUyBJTiBTQ0hF TUEgcHViX3Rlc3Q7CisKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNlcXVlbmNlIEZPUiBTRVFVRU5DRSB0ZXN0 cHViX3NlcTA7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworLS0gc2hvdWxkIGJlIGFi bGUgdG8gYWRkIHNjaGVtYSB0byAnRk9SIFNFUVVFTkNFJyBwdWJsaWNhdGlvbgorQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzZXF1ZW5jZSBBREQgU0VRVUVOQ0VTIElOIFNDSEVN QSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfZm9yc2VxdWVuY2UKKy0tIGFkZCBzZXF1ZW5j ZSBmcm9tIHRoZSBzY2hlbWEgd2UgYWxyZWFkeSBhZGRlZAorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JzZXF1ZW5jZSBBREQgU0VRVUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9zZXEx OworLS0gZmFpbCAtIGNhbid0IGFkZCBzZXF1ZW5jZSB1c2luZyBBREQgVEFCTEUgY29tbWFu ZAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzZXF1ZW5jZSBBREQgVEFCTEUgcHVi X3Rlc3QudGVzdHB1Yl9zZXExOworLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCBzY2hlbWEg ZnJvbSAnRk9SIFNFUVVFTkNFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JzZXF1ZW5jZSBEUk9QIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7Citc ZFJwKyB0ZXN0cHViX2ZvcnNlcXVlbmNlCistLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2No ZW1hIHRvICdGT1IgU0VRVUVOQ0UnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcnNlcXVlbmNlIFNFVCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0Owor XGRScCsgdGVzdHB1Yl9mb3JzZXF1ZW5jZQorCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIFNF UVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OworLS0gc2hvdWxkIGJlIGFibGUgdG8gc2V0IHNlcXVlbmNlIHRvIHNjaGVtYSBwdWJsaWNh dGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIFNFUVVFTkNF IHB1Yl90ZXN0LnRlc3RwdWJfc2VxMTsKK1xkUnArIHRlc3RwdWJfZm9yc2NoZW1hCisKK1NF TEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMsIHB1YmFsbHNlcXVlbmNlcyBGUk9NIHBnX3B1 YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMnOwor XGQrIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMQorXGRScCsgdGVzdHB1Yl9mb3JhbGxzZXF1ZW5j ZXMKK0RST1AgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEwLCBwdWJfdGVzdC50ZXN0cHViX3NlcTEs IHRlc3RwdWJfc2VxMjsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5j ZXMsIHRlc3RwdWJfZm9yc2VxdWVuY2UsIHRlc3RwdWJfZm9yc2NoZW1hOworCisKKy0tIHB1 YmxpY2F0aW9uIHRlc3RpbmcgbXVsdGlwbGUgc2VxdWVuY2VzIGF0IHRoZSBzYW1lIHRpbWUK K0NSRUFURSBTRVFVRU5DRSB0ZXN0cHViX3NlcTE7CitDUkVBVEUgU0VRVUVOQ0UgdGVzdHB1 Yl9zZXEyOworCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9tdWx0aSBGT1IgU0VRVUVOQ0UgdGVzdHB1Yl9zZXExLCB0 ZXN0cHViX3NlcTI7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworCitcZFJwKyB0ZXN0 cHViX211bHRpCisKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9tdWx0aTsKK0RST1AgU0VR VUVOQ0UgdGVzdHB1Yl9zZXExOworRFJPUCBTRVFVRU5DRSB0ZXN0cHViX3NlcTI7CisKKwor LS0gUHVibGljYXRpb24gbWl4aW5nIHRhYmxlcyBhbmQgc2VxdWVuY2VzCitTRVQgY2xpZW50 X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9t aXg7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworCitDUkVBVEUgU0VRVUVOQ0UgdGVz dHB1Yl9zZXExOworQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMjsKKwor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9taXggQUREIFNFUVVFTkNFIHRlc3RwdWJfc2Vx MSwgVEFCTEUgdGVzdHB1Yl90YmwxOworXGRScCsgdGVzdHB1Yl9taXgKKworQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9taXggQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qs IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX21peAorCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX21peCBEUk9QIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHVi X3Rlc3Q7CitcZFJwKyB0ZXN0cHViX21peAorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X21peCBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX21p eAorCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbWl4OworRFJPUCBTRVFVRU5DRSB0ZXN0 cHViX3NlcTE7CitEUk9QIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMjsKKworCist LSBtYWtlIHN1cmUgd2UgcmVwbGljYXRlIG9ubHkgdGhlIGNvcnJlY3QgcmVsYXRpb24gdHlw ZQorQ1JFQVRFIFNDSEVNQSBwdWJfdGVzdDE7CitDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3Qx LnRlc3Rfc2VxMTsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdDEudGVzdF90YmwxIChhIGludCBw cmltYXJ5IGtleSwgYiBpbnQpOworCitDUkVBVEUgU0NIRU1BIHB1Yl90ZXN0MjsKK0NSRUFU RSBTRVFVRU5DRSBwdWJfdGVzdDIudGVzdF9zZXEyOworQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0 Mi50ZXN0X3RibDIgKGEgaW50IHByaW1hcnkga2V5LCBiIGludCk7CisKK1NFVCBjbGllbnRf bWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3Nj aGVtYXM7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworCistLSBhZGQgdGFibGVzIGZy b20gb25lIHNjaGVtYSwgc2VxdWVuY2VzIGZyb20gdGhlIG90aGVyCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBTRVFVRU5DRVMgSU4gU0NI RU1BIHB1Yl90ZXN0MTsKKworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisKK1xkbisgcHViX3Rl c3QxCitcZG4rIHB1Yl90ZXN0MgorCitcZCsgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKK1xkKyBw dWJfdGVzdDEudGVzdF90YmwxOworCitcZCsgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKK1xkKyBw dWJfdGVzdDIudGVzdF90YmwyOworCistLSBhZGQgdGhlIG90aGVyIG9iamVjdCB0eXBlIGZy b20gZWFjaCBzY2hlbWEKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBBREQg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X3NjaGVtYXMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOworCitcZFJwKyB0 ZXN0cHViX3NjaGVtYXMKKworXGRuKyBwdWJfdGVzdDEKK1xkbisgcHViX3Rlc3QyCisKK1xk KyBwdWJfdGVzdDEudGVzdF9zZXExOworXGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisKK1xk KyBwdWJfdGVzdDIudGVzdF9zZXEyOworXGQrIHB1Yl90ZXN0Mi50ZXN0X3RibDI7CisKKy0t IG5vdyBkcm9wIHRoZSBvYmplY3QgdHlwZSBhZGRlZCBmaXJzdAorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9zY2hlbWFzIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgRFJPUCBTRVFVRU5DRVMgSU4gU0NI RU1BIHB1Yl90ZXN0MTsKKworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisKK1xkbisgcHViX3Rl c3QxCitcZG4rIHB1Yl90ZXN0MgorCitcZCsgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKK1xkKyBw dWJfdGVzdDEudGVzdF90YmwxOworCitcZCsgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKK1xkKyBw dWJfdGVzdDIudGVzdF90YmwyOworCistLSBhZGQgYSBkaWZmZXJlbnQgc2NoZW1hIChub3Qg aW5jbHVkaW5nIHRoZSBhbHJlYWR5IHB1Ymxpc2hlZCBzZXF1ZW5jZXMpCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFRBQkxFIHB1Yl90ZXN0Mi50ZXN0X3RibDI7 CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFNFUVVFTkNFIHB1Yl90 ZXN0MS50ZXN0X3NlcTE7CisKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworCitcZCsgcHViX3Rl c3QxLnRlc3Rfc2VxMTsKK1xkKyBwdWJfdGVzdDEudGVzdF90YmwxOworCitcZCsgcHViX3Rl c3QyLnRlc3Rfc2VxMjsKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOworCistLSBub3cgZHJv cCB0aGUgZXhwbGljaXRseSBhZGRlZCBvYmplY3RzIGFnYWluCitBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX3NjaGVtYXMgRFJPUCBUQUJMRSBwdWJfdGVzdDIudGVzdF90YmwyOworQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIERST1AgU0VRVUVOQ0UgcHViX3Rlc3Qx LnRlc3Rfc2VxMTsKKworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisKK1xkKyBwdWJfdGVzdDEu dGVzdF9zZXExOworXGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisKK1xkKyBwdWJfdGVzdDIu dGVzdF9zZXEyOworXGQrIHB1Yl90ZXN0Mi50ZXN0X3RibDI7CisKK0RST1AgUFVCTElDQVRJ T04gdGVzdHB1Yl9zY2hlbWFzOworRFJPUCBUQUJMRSBwdWJfdGVzdDEudGVzdF90YmwxLCBw dWJfdGVzdDIudGVzdF90YmwyOworRFJPUCBTRVFVRU5DRSBwdWJfdGVzdDEudGVzdF9zZXEx LCBwdWJfdGVzdDIudGVzdF9zZXEyOworRFJPUCBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVz dDI7CisKIC0tIFRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMKIFNFVCBjbGllbnRfbWlu X21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBh cnRlZDsKQEAgLTEwNTIsMzIgKzEyMzYsNTEgQEAgQ1JFQVRFIFNDSEVNQSBzY2gxOwogQ1JF QVRFIFNDSEVNQSBzY2gyOwogQ1JFQVRFIFRBQkxFIHNjaDEudGJsMSAoYSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRShhKTsKIENSRUFURSBUQUJMRSBzY2gyLnRibDFfcGFydDEgUEFSVElU SU9OIE9GIHNjaDEudGJsMSBGT1IgVkFMVUVTIEZST00gKDEpIHRvICgxMCk7CitDUkVBVEUg U0VRVUVOQ0Ugc2NoMS5zZXExOworQ1JFQVRFIFNFUVVFTkNFIHNjaDIuc2VxMjsKIC0tIFNj aGVtYSBwdWJsaWNhdGlvbiB0aGF0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNjaGVtYSB0aGF0 IGhhcyB0aGUgcGFyZW50IHRhYmxlCiBDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBUQUJM RVMgSU4gU0NIRU1BIHNjaDIgV0lUSCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MSk7 CitBTFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgc2NoMjsK IFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBw Z19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CiAKIERST1AgUFVCTElDQVRJT04gcHViOwogLS0g VGFibGUgcHVibGljYXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBwYXJlbnQgdGFi bGUKIENSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFRBQkxFIHNjaDIudGJsMV9wYXJ0MSBX SVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0xKTsKK0FMVEVSIFBVQkxJQ0FUSU9O IHB1YiBBREQgU0VRVUVOQ0Ugc2NoMi5zZXEyOwogU0VMRUNUICogRlJPTSBwZ19wdWJsaWNh dGlvbl90YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsK IAogLS0gVGFibGUgcHVibGljYXRpb24gdGhhdCBpbmNsdWRlcyBib3RoIHRoZSBwYXJlbnQg dGFibGUgYW5kIHRoZSBjaGlsZCB0YWJsZQogQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBU QUJMRSBzY2gxLnRibDE7CitBTFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFNFUVVFTkNFIHNj aDEuc2VxMTsKIFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNU ICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CiAKIERST1AgUFVCTElDQVRJT04g cHViOwogLS0gU2NoZW1hIHB1YmxpY2F0aW9uIHRoYXQgZG9lcyBub3QgaW5jbHVkZSB0aGUg c2NoZW1hIHRoYXQgaGFzIHRoZSBwYXJlbnQgdGFibGUKIENSRUFURSBQVUJMSUNBVElPTiBw dWIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMiBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJ T05fUk9PVD0wKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VRVUVOQ0Ugc2NoMS5z ZXExOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1QgKiBG Uk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKKworRFJPUCBQVUJMSUNBVElPTiBwdWI7 CistLSBTZXF1ZW5jZSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1Ig U0VRVUVOQ0Ugc2NoMi5zZXEyOwogU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJs ZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKIAogRFJPUCBQ VUJMSUNBVElPTiBwdWI7CiAtLSBUYWJsZSBwdWJsaWNhdGlvbiB0aGF0IGRvZXMgbm90IGlu Y2x1ZGUgdGhlIHBhcmVudCB0YWJsZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgVEFC TEUgc2NoMi50YmwxX3BhcnQxIFdJVEggKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UPTAp OwogU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1QgKiBGUk9N IHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKIAogLS0gVGFibGUgcHVibGljYXRpb24gdGhh dCBpbmNsdWRlcyBib3RoIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRoZSBjaGlsZCB0YWJsZQog QUxURVIgUFVCTElDQVRJT04gcHViIEFERCBUQUJMRSBzY2gxLnRibDE7CitBTFRFUiBQVUJM SUNBVElPTiBwdWIgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgc2NoMjsKIFNFTEVDVCAqIEZS T00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlv bl9zZXF1ZW5jZXM7CiAKIERST1AgUFVCTElDQVRJT04gcHViOwogRFJPUCBUQUJMRSBzY2gy LnRibDFfcGFydDE7CkBAIC0xMDkwLDEwICsxMjkzLDM2IEBAIENSRUFURSBUQUJMRSBzY2gx LnRibDFfcGFydDMgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CiBBTFRFUiBUQUJM RSBzY2gxLnRibDEgQVRUQUNIIFBBUlRJVElPTiBzY2gxLnRibDFfcGFydDMgRk9SIFZBTFVF UyBGUk9NICgyMCkgdG8gKDMwKTsKIENSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFRBQkxF UyBJTiBTQ0hFTUEgc2NoMSBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0xKTsK IFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBw Z19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisKK0RST1AgUFVCTElDQVRJT04gcHViOworLS0g U2NoZW1hIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBTRVFVRU5D RSBzY2gyLnNlcTI7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKK1NF TEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworCitEUk9QIFBVQkxJQ0FU SU9OIHB1YjsKKy0tIFNlcXVlbmNlIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04g cHViIEZPUiBTRVFVRU5DRVMgSU4gU0NIRU1BIHNjaDI7CitTRUxFQ1QgKiBGUk9NIHBnX3B1 YmxpY2F0aW9uX3RhYmxlczsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVu Y2VzOworCitBTFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFNFUVVFTkNFIHNjaDEuc2VxMTsK K1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBw Z19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBEUk9Q IFNFUVVFTkNFIHNjaDEuc2VxMTsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFi bGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisKK0FMVEVS IFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBzY2gxOworU0VMRUNU ICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1Ymxp Y2F0aW9uX3NlcXVlbmNlczsKIAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1Ag UFVCTElDQVRJT04gcHViOwogRFJPUCBUQUJMRSBzY2gxLnRibDE7CitEUk9QIFNFUVVFTkNF IHNjaDEuc2VxMSwgc2NoMi5zZXEyOwogRFJPUCBTQ0hFTUEgc2NoMSBjYXNjYWRlOwogRFJP UCBTQ0hFTUEgc2NoMiBjYXNjYWRlOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzRfc2VxdWVuY2VzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM0 X3NlcXVlbmNlcy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MmU5MzE3NjQyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMzRfc2VxdWVuY2VzLnBsCkBAIC0wLDAgKzEsMzQ0IEBACisKKyMgQ29weXJpZ2h0IChj KSAyMDIxLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRoaXMg dGVzdHMgdGhhdCBzZXF1ZW5jZXMgYXJlIHJlcGxpY2F0ZWQgY29ycmVjdGx5IGJ5IGxvZ2lj YWwgcmVwbGljYXRpb24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3Vz ZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2Rl X3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVy Jyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNh bCcpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBu b2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIENy ZWF0ZSBzb21lIHByZWV4aXN0aW5nIGNvbnRlbnQgb24gcHVibGlzaGVyCitteSAkZGRsID0g cXEoCisJQ1JFQVRFIFRBQkxFIHNlcV90ZXN0ICh2IEJJR0lOVCk7CisJQ1JFQVRFIFNFUVVF TkNFIHM7CispOworCisjIFNldHVwIHN0cnVjdHVyZSBvbiB0aGUgcHVibGlzaGVyCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkZGRsKTsKKworIyBDcmVhdGUg c29tZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlciwgYW5kIGFuIGV4dHJhIHNl cXVlbmNlIHRoYXQKKyMgd2UnbGwgY3JlYXRlIG9uIHRoZSBwdWJsaXNoZXIgbGF0ZXIKKyRk ZGwgPSBxcSgKKwlDUkVBVEUgVEFCTEUgc2VxX3Rlc3QgKHYgQklHSU5UKTsKKwlDUkVBVEUg U0VRVUVOQ0UgczsKKwlDUkVBVEUgU0VRVUVOQ0UgczI7CispOworCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJGRkbCk7CisKKyMgU2V0dXAgbG9naWNhbCBy ZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5j b25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHNlcV9wdWIiKTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgUFVCTElDQVRJ T04gc2VxX3B1YiBBREQgU0VRVUVOQ0UgcyIpOworCisjIGZ1bmN0aW9uIHRoYXQgYWx0ZXJz IHRoZSBzZXF1ZW5jZSBpbiBhIGNvbXBsZXRlZCBzdWJ0cmFuc2FjdGlvbgorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIEZVTkNUSU9OIHJlZ3Jl c3NfYWx0ZXJfc2VxdWVuY2UocyByZWdjbGFzcywgdiBpbnRlZ2VyKSBSRVRVUk5TIHZvaWQg YXMgXCRcJAorQkVHSU4KK0VYRUNVVEUgZm9ybWF0KCdhbHRlciBzZXF1ZW5jZSAlcyByZXN0 YXJ0ICVzJywgcywgdik7CitFWENFUFRJT04gV0hFTiBvdGhlcnMgVEhFTiBOVUxMOworRU5E OyBcJFwkIExBTkdVQUdFIHBscGdzcWwiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc2VxX3N1YiBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNlcV9wdWIiCispOworCisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NlcV9zdWInKTsKKworIyBXYWl0 IGZvciBpbml0aWFsIHN5bmMgdG8gZmluaXNoIGFzIHdlbGwKK215ICRzeW5jZWRfcXVlcnkg PQorICAiU0VMRUNUIGNvdW50KDEpID0gMCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hF UkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdzJywgJ3InKTsiOworJG5vZGVfc3Vic2NyaWJlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUg IlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXpl IGRhdGEiOworCisjIEluc2VydCBpbml0aWFsIHRlc3QgZGF0YQorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJLS0gZ2VuZXJhdGUgYSBudW1iZXIg b2YgdmFsdWVzIHVzaW5nIHRoZSBzZXF1ZW5jZQorCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNF TEVDVCBuZXh0dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworKSk7CisK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENo ZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKK215ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJU0VMRUNUICogRlJPTSBzOwor KSk7CisKK2lzKCAkcmVzdWx0LCAnMTMyfDB8dCcsCisJJ2luaXRpYWwgdGVzdCBkYXRhIHJl cGxpY2F0ZWQnKTsKKworCisjIGFkdmFuY2UgdGhlIHNlcXVlbmNlIGluIGEgcm9sbGVkLWJh Y2sgdHJhbnNhY3Rpb24gLSB0aGUgcm9sbGJhY2sKKyMgZG9lcyBub3Qgd2FpdCBmb3IgdGhl IHJlcGxpY2F0aW9uLCBzbyB3ZSBjb3VsZCBzZWUgYW55IGludGVybWVkaWF0ZSBzdGF0ZQor IyBzbyBkbyBzb21ldGhpbmcgZWxzZSBhZnRlciB0aGUgdGVzdCwgdG8gZW5zdXJlIHdlIHdh aXQgZm9yIGV2ZXJ5dGhpbmcKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCUJFR0lOOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0 dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCVJPTExCQUNLOworCUlO U0VSVCBJTlRPIHNlcV90ZXN0IFZBTFVFUyAoLTEpOworKSk7CisKKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9u IHN1YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXEoCisJU0VMRUNUICogRlJPTSBzOworKSk7CisKK2lzKCAkcmVzdWx0 LCAnMjMxfDB8dCcsCisJJ2FkdmFuY2Ugc2VxdWVuY2UgaW4gcm9sbGVkLWJhY2sgdHJhbnNh Y3Rpb24nKTsKKworCisjIGNyZWF0ZSBhIG5ldyBzZXF1ZW5jZSBhbmQgcm9sbCBpdCBiYWNr IC0gc2hvdWxkIG5vdCBiZSByZXBsaWNhdGVkLCBkdWUgdG8KKyMgdGhlIHRyYW5zYWN0aW9u YWwgYmVoYXZpb3IKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxKAorCUJFR0lOOworCUNSRUFURSBTRVFVRU5DRSBzMjsKKwlBTFRFUiBQVUJMSUNBVElP TiBzZXFfcHViIEFERCBTRVFVRU5DRSBzMjsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxF Q1QgbmV4dHZhbCgnczInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJUk9MTEJB Q0s7CispKTsKKworIyBSZWZyZXNoIHB1YmxpY2F0aW9uIGFmdGVyIHNlcXVlbmNlIGlzIGFk ZGVkIHRvIHB1YmxpY2F0aW9uCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUFMVEVSIFNVQlNDUklQVElPTiBzZXFfc3ViIFJF RlJFU0ggUFVCTElDQVRJT04KKykpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJ3NlcV9zdWInKTsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJzY3JpYmVyCisk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx KAorCVNFTEVDVCAqIEZST00gczI7CispKTsKKworaXMoICRyZXN1bHQsICcxfDB8ZicsCisJ J2NyZWF0ZSBuZXcgc2VxdWVuY2UgYW5kIHJvbGwgaXQgYmFjaycpOworCisKKyMgY3JlYXRl IGEgbmV3IHNlcXVlbmNlLCBhZHZhbmNlIGl0IGluIGEgcm9sbGVkLWJhY2sgdHJhbnNhY3Rp b24sIGJ1dCBjb21taXQKKyMgdGhlIGNyZWF0ZSAtIHRoZSBhZHZhbmNlIHNob3VsZCBiZSBy ZXBsaWNhdGVkIG5ldmVydGhlbGVzcworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXEoCisJQkVHSU47CisJQUxURVIgU0VRVUVOQ0UgcyBSRVNUQVJUIFdJ VEggMTAwMDsKKwlTQVZFUE9JTlQgc3AxOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVD VCBuZXh0dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCVJPTExCQUNL IFRPIHNwMTsKKwlDT01NSVQ7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgV2FpdCBmb3Igc3luYyBvZiB0aGUgc2Vjb25kIHNl cXVlbmNlIHdlIGp1c3QgYWRkZWQgdG8gZmluaXNoCiskc3luY2VkX3F1ZXJ5ID0KKyAgIlNF TEVDVCBjb3VudCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25fcmVsIFdIRVJFIHNyc3Vi c3RhdGUgTk9UIElOICgncycsICdyJyk7IjsKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVl cnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkKKyAgb3IgZGllICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsK KworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVNFTEVDVCAqIEZST00g czsKKykpOworCitpcyggJHJlc3VsdCwgJzExMzF8MHx0JywKKwknY3JlYXRlIHNlcXVlbmNl LCBhZHZhbmNlIGl0IGluIHJvbGxlZC1iYWNrIHRyYW5zYWN0aW9uLCBidXQgY29tbWl0IHRo ZSBjcmVhdGUnKTsKKworCisjIGFkdmFuY2UgdGhlIG5ldyBzZXF1ZW5jZSBpbiBhIHRyYW5z YWN0aW9uLCBhbmQgcm9sbCBpdCBiYWNrIC0gdGhlIHJvbGxiYWNrCisjIGRvZXMgbm90IHdh aXQgZm9yIHRoZSByZXBsaWNhdGlvbiwgc28gd2UgY291bGQgc2VlIGFueSBpbnRlcm1lZGlh dGUgc3RhdGUKKyMgc28gZG8gc29tZXRoaW5nIGVsc2UgYWZ0ZXIgdGhlIHRlc3QsIHRvIGVu c3VyZSB3ZSB3YWl0IGZvciBldmVyeXRoaW5nCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcSgKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBT RUxFQ1QgbmV4dHZhbCgncycpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlST0xM QkFDSzsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBWQUxVRVMgKC0xKTsKKykpOworCiskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NlcV9zdWInKTsKKworIyBDaGVjayB0 aGUgZGF0YSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVNFTEVDVCAqIEZST00gczsKKykpOworCitp cyggJHJlc3VsdCwgJzEyMzB8MHx0JywKKwknYWR2YW5jZSB0aGUgbmV3IHNlcXVlbmNlIGlu IGEgdHJhbnNhY3Rpb24gYW5kIHJvbGwgaXQgYmFjaycpOworCisKKyMgYWR2YW5jZSB0aGUg c2VxdWVuY2UgaW4gYSBzdWJ0cmFuc2FjdGlvbiAtIHRoZSBzdWJ0cmFuc2FjdGlvbiBnZXRz IHJvbGxlZAorIyBiYWNrLCBidXQgY29tbWl0IHRoZSBtYWluIG9uZSAtIHRoZSBjaGFuZ2Vz IHNob3VsZCBzdGlsbCBiZSByZXBsaWNhdGVkCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcSgKKwlCRUdJTjsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJU IElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3MnKSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLDEwMCk7CisJUk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOworKSk7CisKKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBk YXRhIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXEoCisJU0VMRUNUICogRlJPTSBzOworKSk7CisKK2lzKCAk cmVzdWx0LCAnMTMyOXwwfHQnLAorCSdhZHZhbmNlIHNlcXVlbmNlIGluIGEgc3VidHJhbnNh Y3Rpb24nKTsKKworCisjIGFsdGVyIHRoZSBzZXF1ZW5jZSB0d2ljZSBpbiB0aGUgc2FtZSB0 cmFuc2FjdGlvbgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXEoCisJQkVHSU47CisJQUxURVIgU0VRVUVOQ0UgcyBSRVNUQVJUIDEwMDA7CisJU0FWRVBP SU5UIHMxOworCUFMVEVSIFNFUVVFTkNFIHMgUkVTVEFSVCAyMDAwOworCUlOU0VSVCBJTlRP IHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw0 MCk7CisJQ09NTUlUOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJ U0VMRUNUICogRlJPTSBzOworKSk7CisKK2lzKCAkcmVzdWx0LCAnMjA2NXwwfHQnLAorCSdh bHRlciBzZXF1ZW5jZSB0d2ljZSBpbiBhIHN1YnRyYW5zYWN0aW9uJyk7CisKKworIyBhbHRl ciB0aGUgc2VxdWVuY2UgdHdpY2UgaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24sIHJvbGxiYWNr IHRoZSBzZWNvbmQgY2hhbmdlCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxcSgKKwlCRUdJTjsKKwlBTFRFUiBTRVFVRU5DRSBzIFJFU1RBUlQgMTAwMDsK KwlTQVZFUE9JTlQgczE7CisJQUxURVIgU0VRVUVOQ0UgcyBSRVNUQVJUIDIwMDA7CisJUk9M TEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3Mn KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQwKTsKKwlDT01NSVQ7CispKTsKKworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgQ2hlY2sgdGhl IGRhdGEgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgKiBGUk9NIHM7CispKTsKKworaXMo ICRyZXN1bHQsICcxMDY1fDB8dCcsCisJJ2FsdGVyIHNlcXVlbmNlIHR3aWNlIGluIGEgc3Vi dHJhbnNhY3Rpb24nKTsKKworCisjIGFsdGVyIHRoZSBzZXF1ZW5jZSBpbiBhIHN1YnRyYW5z YWN0aW9uIHRoYXQgY29tbWl0cywgZm9sbG93ZWQgYnkgYWR2YW5jaW5nCisjIHRoZSBzZXF1 ZW5jZSBpbiBhIHN1YnRyYW5zYWN0aW9uIHRoYXQgZ2V0cyByb2xsZWQgYmFjaywgYnV0IHRo ZW4gdGhlIG1haW4KKyMgb25lIGNvbW1pdHMgLSBvbmx5IHRoZSBzZWNvbmQgc2V0IG9mIGNo YW5nZXMgc2hvdWxkIGJlIHJlcGxpY2F0ZWQsIGFzIGl0CisjIGJlbG9uZ3MgdG8gdGhlIGFs dGVyLCB3aGljaCB3YXMgaW4gdGhlIGNvbW1pdHRlZCBwYXJ0Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlCRUdJTjsKKwlTRUxFQ1QgcmVncmVz c19hbHRlcl9zZXF1ZW5jZSgncycsIDEwMDApOyAtLSByZXNldCB0byAxMDAwCisJSU5TRVJU IElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3MnKSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLDEwMCk7CisJU0FWRVBPSU5UIHMxOworCVNFTEVDVCByZWdyZXNzX2FsdGVyX3NlcXVl bmNlKCdzJywgMjAwMCk7IC0tIHJlc2V0IHRvIDIwMDAKKwlJTlNFUlQgSU5UTyBzZXFfdGVz dCBTRUxFQ1QgbmV4dHZhbCgncycpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlS T0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgn cycpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlDT01NSVQ7CispKTsKKworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgQ2hlY2sg dGhlIGRhdGEgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgKiBGUk9NIHM7CispKTsKKwor aXMoICRyZXN1bHQsICcxMjMwfDB8dCcsCisJJ2FsdGVyIHNlcXVlbmNlIGluIGEgc3VidHJh bnNhY3Rpb24nKTsKKworCisjIGFsdGVyIHRoZSBzZXF1ZW5jZSBpbiBhIHN1YnRyYW5zYWN0 aW9uIHRoYXQgY29tbWl0cywgZm9sbG93ZWQgYnkgYWR2YW5jaW5nCisjIHRoZSBzZXF1ZW5j ZSBpbiBhbm90aGVyIHN1YnRyYW5zYWN0aW8uIHRoZSBjaGFuZ2VzIHNob3VsZCBiZSByZXBs aWNhdGVkLCBhcworIyBpdCBiZWxvbmdzIHRvIHRoZSBzZWNvbmQgYWx0ZXIsIGFuZCBib3Ro IGFsdGVycyBjb21taXQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxKAorCUJFR0lOOworCVNFTEVDVCByZWdyZXNzX2FsdGVyX3NlcXVlbmNlKCdzJywg MTAwMCk7IC0tIHJlc2V0IHRvIDEwMDAKKwlTQVZFUE9JTlQgczE7CisJU0VMRUNUIHJlZ3Jl c3NfYWx0ZXJfc2VxdWVuY2UoJ3MnLCAyMDAwKTsgLS0gcmVzZXQgdG8gMjAwMAorCUlOU0VS VCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwxMDApOworCUNPTU1JVDsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJ3NlcV9zdWInKTsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJzY3JpYmVy CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxKAorCVNFTEVDVCAqIEZST00gczsKKykpOworCitpcyggJHJlc3VsdCwgJzIxMzF8MHx0 JywKKwknYWx0ZXIgc2VxdWVuY2UgaW4gYSBzdWJ0cmFuc2FjdGlvbicpOworCisKKyMgYWx0 ZXIgdGhlIHNlcXVlbmNlIGluIGEgc3VidHJhbnNhY3Rpb24gdGhhdCBjb21taXRzLCBmb2xs b3dlZCBieSBhZHZhbmNpbmcKKyMgdGhlIHNlcXVlbmNlIGluIGEgc3VidHJhbnNhY3Rpb24g dGhhdCBnZXRzIHJvbGxlZCBiYWNrLCBidXQgdGhlbiB0aGUgbWFpbgorIyBvbmUgY29tbWl0 cyAtIHRoZSBjaGFuZ2VzIHNob3VsZCBzdGlsbCBiZSByZXBsaWNhdGVkLCBiZWNhdXNlIHRo ZXkgYmVsb25nCisjIHRvIHRoZSBhbHRlciwgd2hpY2ggd2FzIGluIHRoZSBjb21taXR0ZWQg cGFydAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJ QkVHSU47CisJU0VMRUNUIHJlZ3Jlc3NfYWx0ZXJfc2VxdWVuY2UoJ3MnLCAxMDAwKTsgLS0g cmVzZXQgdG8gMTAwMAorCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdz JykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCVNBVkVQT0lOVCBzMTsKKwlJTlNF UlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgncycpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsMTAwKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBT RUxFQ1QgbmV4dHZhbCgncycpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlDT01N SVQ7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3Vi Jyk7CisKKyMgQ2hlY2sgdGhlIGRhdGEgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgKiBG Uk9NIHM7CispKTsKKworaXMoICRyZXN1bHQsICcxMzI5fDB8dCcsCisJJ2FsdGVyIHNlcXVl bmNlIGluIGEgc3VidHJhbnNhY3Rpb24nKTsKKworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAt LWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYjYzMmZiZDdjZjMuLjRhMzdkZWMxMmEwIDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTUwNyw2ICsxNTA3LDcgQEAgTG9n aWNhbFJlcFJlbElkCiBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlv bgogTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU2VxdWVu Y2UKIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKIExvZ2ljYWxSZXBUdXBsZURhdGEKIExv Z2ljYWxSZXBUeXAKLS0gCjIuNDMuMAoK --------------04bDZ9og1eK4R6g8Y06g4sJM Content-Type: text/x-patch; charset=UTF-8; name="v20240111-0004-global-hash-table-of-sequence-relfilenodes.patch" Content-Disposition: attachment; filename*0="v20240111-0004-global-hash-table-of-sequence-relfilenodes.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0ZWNkYTVlNmRlYmRhODI5NDY2NjlmNTAwYWQxNGMwMThiMGVhZTU3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAyIERlYyAyMDIzIDEwOjI4OjI2ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCB2MjAyNDAxMTEgNC83XSBnbG9iYWwgaGFzaCB0YWJsZSBvZiBzZXF1ZW5j ZSByZWxmaWxlbm9kZXMKCi0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1 ZmZlci5jICAgICAgIHwgMTc3ICsrKysrKystLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgIHwgICA2ICsKIDIgZmlsZXMgY2hhbmdl ZCwgNzQgaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggNmFjOTEw Njg3OTkuLmFjYWE2ZGNlOGU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtNDE1LDYgKzQxNSwxNCBAQCBSZW9yZGVy QnVmZmVyQWxsb2NhdGUodm9pZCkKIAlkbGlzdF9pbml0KCZidWZmZXItPnR4bnNfYnlfYmFz ZV9zbmFwc2hvdF9sc24pOwogCWRjbGlzdF9pbml0KCZidWZmZXItPmNhdGNoYW5nZV90eG5z KTsKIAorCS8qIENyZWF0ZSBoYXNoIG9mIHNlcXVlbmNlcywgbWFwcGluZyByZWxmaWxlbG9j YXRvciB0byB0cmFuc2FjdGlvbi4gKi8KKwloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFJl bEZpbGVMb2NhdG9yKTsKKwloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1 ZmZlclNlcXVlbmNlRW50KTsKKwloYXNoX2N0bC5oY3h0ID0gYnVmZmVyLT5jb250ZXh0Owor CisJYnVmZmVyLT5zZXF1ZW5jZXNfaGFzaCA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVy U2VxdWVuY2VIYXNoIiwgMzIsICZoYXNoX2N0bCwKKwkJCQkJCQkJCQkgSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisKIAkvKgogCSAqIEVuc3VyZSB0aGVyZSdz IG5vIHN0YWxlIGRhdGEgZnJvbSBwcmlvciB1c2VzIG9mIHRoaXMgc2xvdCwgaW4gY2FzZSBz b21lCiAJICogcHJpb3IgZXhpdCBhdm9pZGVkIGNhbGxpbmcgUmVvcmRlckJ1ZmZlckZyZWUu IEZhaWx1cmUgdG8gZG8gdGhpcyBjYW4KQEAgLTEwMTUsNDUgKzEwMjMsMjcgQEAgUmVvcmRl ckJ1ZmZlclNlcXVlbmNlSXNUcmFuc2FjdGlvbmFsKFJlb3JkZXJCdWZmZXIgKnJiLAogCQkJ CQkJCQkJIFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLAogCQkJCQkJCQkJIFRyYW5zYWN0aW9u SWQgKnhpZCkKIHsKKwlSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKmVudHJ5OwogCWJvb2wJ CWZvdW5kID0gZmFsc2U7Ci0JZGxpc3RfaXRlcglpdGVyOwogCiAJQXNzZXJ0Q2hlY2tTZXF1 ZW5jZXMocmIpOwogCisJZW50cnkgPSBoYXNoX3NlYXJjaChyYi0+c2VxdWVuY2VzX2hhc2gs CisJCQkJCQkodm9pZCAqKSAmcmxvY2F0b3IsCisJCQkJCQlIQVNIX0ZJTkQsCisJCQkJCQkm Zm91bmQpOworCiAJLyoKLQkgKiBXYWxrIGFsbCB0b3AtbGV2ZWwgdHJhbnNhY3Rpb25zIChz b21lIG9mIHdoaWNoIG1heSBiZSBzdWJ4YWN0cywgZXhjZXB0Ci0JICogdGhhdCB3ZSBoYXZl bid0IHByb2Nlc3NlZCB0aGUgYXNzaWdubWVudHMgeWV0KSwgYW5kIGNoZWNrIGlmIGFueSBv ZgotCSAqIHRoZW0gY3JlYXRlZCB0aGUgcmVsZmlsZW5vZGUuCisJICogSWYgd2UgZm91bmQg YW4gZW50cnkgd2l0aCBtYXRjaGluZyByZWxmaWxlbm9kZSwgd2UncmUgZG9uZSAtIHdlCisJ ICogaGF2ZSB0byB0cmVhdCB0aGUgc2VxdWVuY2UgY2hhbmdlIGFzIHRyYW5zYWN0aW9uYWws IGFuZCByZXBsYXkgaXQKKwkgKiBpbiB0aGUgc2FtZSAoc3ViKXRyYW5zYWN0aW9uIGp1c3Qg bGlrZSBhbnkgb3RoZXIgY2hhbmdlLgorCSAqCisJICogT3B0aW9uYWxseSBzZXQgWElEIG9m IHRoZSAoc3ViKXhhY3QgdGhhdCBjcmVhdGVkIHRoZSByZWxmaWxlbm9kZS4KIAkgKi8KLQlk bGlzdF9mb3JlYWNoKGl0ZXIsICZyYi0+dG9wbGV2ZWxfYnlfbHNuKQorCWlmIChmb3VuZCkK IAl7Ci0JCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqZW50cnk7Ci0JCVJlb3JkZXJCdWZm ZXJUWE4gKnR4biA9IGRsaXN0X2NvbnRhaW5lcihSZW9yZGVyQnVmZmVyVFhOLCBub2RlLAot CQkJCQkJCQkJCQkJaXRlci5jdXIpOwotCi0JCS8qIHRyYW5zYWN0aW9uIGhhcyBubyByZWxm aWxlbm9kZXMgYXQgYWxsICovCi0JCWlmICghdHhuLT5zZXF1ZW5jZXNfaGFzaCkKLQkJCWNv bnRpbnVlOwotCi0JCWVudHJ5ID0gaGFzaF9zZWFyY2godHhuLT5zZXF1ZW5jZXNfaGFzaCwK LQkJCQkJCQkodm9pZCAqKSAmcmxvY2F0b3IsCi0JCQkJCQkJSEFTSF9GSU5ELAotCQkJCQkJ CSZmb3VuZCk7Ci0KLQkJLyoKLQkJICogSWYgd2UgZm91bmQgYW4gZW50cnkgd2l0aCBtYXRj aGluZyByZWxmaWxlbm9kZSwgd2UncmUgZG9uZSAtIHdlCi0JCSAqIGhhdmUgdG8gdHJlYXQg dGhlIHNlcXVlbmNlIGNoYW5nZSBhcyB0cmFuc2FjdGlvbmFsLCBhbmQgcmVwbGF5IGl0Ci0J CSAqIGluIHRoZSBzYW1lIChzdWIpdHJhbnNhY3Rpb24ganVzdCBsaWtlIGFueSBvdGhlciBj aGFuZ2UuCi0JCSAqCi0JCSAqIE9wdGlvbmFsbHkgc2V0IFhJRCBvZiB0aGUgKHN1Yil4YWN0 IHRoYXQgY3JlYXRlZCB0aGUgcmVsZmlsZW5vZGUuCi0JCSAqLwotCQlpZiAoZm91bmQpCi0J CXsKLQkJCWlmICh4aWQpCi0JCQkJKnhpZCA9IGVudHJ5LT50eG4tPnhpZDsKLQotCQkJYnJl YWs7Ci0JCX0KKwkJaWYgKHhpZCkKKwkJCSp4aWQgPSBlbnRyeS0+dHhuLT54aWQ7CiAJfQog CiAJcmV0dXJuIGZvdW5kOwpAQCAtMTA2OCwyNyArMTA1OCwyMiBAQCBSZW9yZGVyQnVmZmVy U2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwoUmVvcmRlckJ1ZmZlciAqcmIsCiAgKiB0aGUgY29t bWl0dGVkL2Fib3J0ZWQgb25lLgogICovCiBzdGF0aWMgdm9pZAotUmVvcmRlckJ1ZmZlclNl cXVlbmNlQ2xlYW51cChSZW9yZGVyQnVmZmVyVFhOICp0eG4pCitSZW9yZGVyQnVmZmVyU2Vx dWVuY2VDbGVhbnVwKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4p CiB7CiAJSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwogCVJlb3JkZXJCdWZmZXJTZXF1 ZW5jZUVudCAqZW50OwogCi0JLyogQmFpbCBvdXQgaWYgbm90IGEgc3VieGFjdCwgb3IgaWYg dGhlcmUgYXJlIG5vIGVudHJpZXMuICovCi0JaWYgKCFyYnR4bl9pc19rbm93bl9zdWJ4YWN0 KHR4bikpCi0JCXJldHVybjsKLQorCS8qIEJhaWwgb3V0IGlmIHRoZXJlIGFyZSBubyBzZXF1 ZW5jZSBlbnRyaWVzIGZvciB0aGlzIHhhY3QuICovCiAJaWYgKCF0eG4tPnNlcXVlbmNlc19o YXNoKQogCQlyZXR1cm47CiAKIAkvKgotCSAqIFNjYW4gdGhlIHRvcC1sZXZlbCB0cmFuc2Fj dGlvbiBoYXNoIGFuZCByZW1vdmUgdGhlIGVudHJpZXMgZnJvbSBpdC4gSWYKLQkgKiB3ZSBo YXZlIGVudHJpZXMgZm9yIHN1YnhhY3QsIHRoZSB0b3AtbGV2ZWwgaGFzaCBtdXN0IGhhdmUg YmVlbgotCSAqIGluaXRpYWxpemVkLgorCSAqIFNjYW4gdGhlIGdsb2JhbCB0cmFuc2FjdGlv biBoYXNoIGFuZCByZW1vdmUgdGhlIGVudHJpZXMgZnJvbSBpdC4KIAkgKi8KIAloYXNoX3Nl cV9pbml0KCZzY2FuX3N0YXR1cywgdHhuLT5zZXF1ZW5jZXNfaGFzaCk7CiAJd2hpbGUgKChl bnQgPSAoUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nh bl9zdGF0dXMpKSAhPSBOVUxMKQogCXsKLQkJaWYgKGhhc2hfc2VhcmNoKHR4bi0+dG9wdHhu LT5zZXF1ZW5jZXNfaGFzaCwKKwkJaWYgKGhhc2hfc2VhcmNoKHJiLT5zZXF1ZW5jZXNfaGFz aCwKIAkJCQkJCSh2b2lkICopICZlbnQtPnJsb2NhdG9yLAogCQkJCQkJSEFTSF9SRU1PVkUs IE5VTEwpID09IE5VTEwpCiAJCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQi KTsKQEAgLTEyODYsMjggKzEyNzEsMjMgQEAgUmVvcmRlckJ1ZmZlckFkZFJlbEZpbGVMb2Nh dG9yKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAl0eG4gPSBSZW9y ZGVyQnVmZmVyVFhOQnlYaWQocmIsIHhpZCwgdHJ1ZSwgTlVMTCwgbHNuLCB0cnVlKTsKIAog CS8qCi0JICogRmlyc3QgYWRkIGl0IHRvIHRoZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24sIGJ1 dCBtYWtlIHN1cmUgaXQgbGlua3MgdG8KKwkgKiBGaXJzdCBhZGQgaXQgdG8gdGhlIGdsb2Jh bCBoYXNoIHRhYmxlLCBhbmQgbWFrZSBzdXJlIGl0IGxpbmtzIHRvCiAJICogdGhlIGNvcnJl Y3Qgc3VidHJhbnNhY3Rpb24gKHNvIHRoYXQgd2UgYWRkIGxhdGVyIGNoYW5nZXMgdG8gaXQp LgogCSAqLwotCWlmICh0eG4tPnRvcHR4bikKLQl7Ci0JCS8qIG1ha2Ugc3VyZSB0aGUgaGFz aCB0YWJsZSBpcyBpbml0aWFsaXplZCAqLwotCQlSZW9yZGVyQnVmZmVyVFhOU2VxdWVuY2Vz SW5pdChyYiwgdHhuLT50b3B0eG4pOworCWVudHJ5ID0gaGFzaF9zZWFyY2gocmItPnNlcXVl bmNlc19oYXNoLAorCQkJCQkJKHZvaWQgKikgJnJsb2NhdG9yLAorCQkJCQkJSEFTSF9FTlRF UiwKKwkJCQkJCSZmb3VuZCk7CiAKLQkJLyogc2VhcmNoIHRoZSBsb29rdXAgdGFibGUgKi8K LQkJZW50cnkgPSBoYXNoX3NlYXJjaCh0eG4tPnRvcHR4bi0+c2VxdWVuY2VzX2hhc2gsCi0J CQkJCQkJKHZvaWQgKikgJnJsb2NhdG9yLAotCQkJCQkJCUhBU0hfRU5URVIsCi0JCQkJCQkJ JmZvdW5kKTsKKwkvKgorCSAqIFdlJ3ZlIGp1c3QgZGVjb2RlZCBjcmVhdGlvbiBvZiB0aGUg cmVsZmlsZW5vZGUsIHNvIGlmIHdlIGZvdW5kIGl0CisJICogaW4gdGhlIGhhc2ggdGFibGUs IHNvbWV0aGluZyBpcyB3cm9uZy4KKwkgKi8KKwlBc3NlcnQoIWZvdW5kKTsKIAotCQkvKgot CQkgKiBXZSd2ZSBqdXN0IGRlY29kZWQgY3JlYXRpb24gb2YgdGhlIHJlbGZpbGVub2RlLCBz byBpZiB3ZSBmb3VuZCBpdAotCQkgKiBpbiB0aGUgaGFzaCB0YWJsZSwgc29tZXRoaW5nIGlz IHdyb25nLgotCQkgKi8KLQkJQXNzZXJ0KCFmb3VuZCk7CisJZW50cnktPnR4biA9IHR4bjsK IAotCQllbnRyeS0+dHhuID0gdHhuOwotCX0KKwkvKiBub3cgYWRkIGl0IHRvIHRoZSBoYXNo IHRhYmxlIGluIHRoZSB0cmFuc2FjdGlvbiBpdHNlbGYgKi8KIAogCS8qIG1ha2Ugc3VyZSB0 aGUgaGFzaCB0YWJsZSBpcyBpbml0aWFsaXplZCAqLwogCVJlb3JkZXJCdWZmZXJUWE5TZXF1 ZW5jZXNJbml0KHJiLCB0eG4pOwpAQCAtMTQxNyw3ICsxMzk3LDYgQEAgQXNzZXJ0Q2hlY2tT ZXF1ZW5jZXMoUmVvcmRlckJ1ZmZlciAqcmIpCiB7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVD S0lORwogCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCA9IHJiLT5wcml2YXRlX2RhdGE7 Ci0JZGxpc3RfaXRlcglpdGVyOwogCiAJLyoKIAkgKiBTa2lwIHRoZSB2ZXJpZmljYXRpb24g aWYgd2UgZG9uJ3QgcmVhY2ggdGhlIExTTiBhdCB3aGljaCB3ZSBzdGFydApAQCAtMTQzMyw1 NyArMTQxMiw1MyBAQCBBc3NlcnRDaGVja1NlcXVlbmNlcyhSZW9yZGVyQnVmZmVyICpyYikK IAkJcmV0dXJuOwogCiAJLyoKLQkgKiBNYWtlIHN1cmUgdGhlIHJlbGZpbGVub2RlcyBmcm9t IHN1YnhhY3RzIGFyZSBwcm9wZXJseSByZWNvcmRlZCBpbiB0aGUKLQkgKiB0b3AtbGV2ZWwg dHJhbnNhY3Rpb24gaGFzaCB0YWJsZS4KKwkgKiBNYWtlIHN1cmUgdGhlIHJlbGZpbGVub2Rl cyBmcm9tIGFsbCB4YWN0cyBhcmUgcHJvcGVybHkgcmVjb3JkZWQgaW4gdGhlCisJICogZ2xv YmFsIGhhc2ggdGFibGUgb2Ygc2VxdWVuY2VzLgogCSAqLwotCWRsaXN0X2ZvcmVhY2goaXRl ciwgJnJiLT50b3BsZXZlbF9ieV9sc24pCiAJeworCQlIQVNIX1NFUV9TVEFUVVMgaGFzaF9z ZXE7CisJCVJlb3JkZXJCdWZmZXJUWE5CeUlkRW50ICplbnQ7CiAJCWludAkJCW5lbnRyaWVz ID0gMCwKIAkJCQkJbnN1YmVudHJpZXMgPSAwOwotCQlkbGlzdF9pdGVyCXN1Yml0ZXI7Ci0J CVJlb3JkZXJCdWZmZXJUWE4gKnR4biA9IGRsaXN0X2NvbnRhaW5lcihSZW9yZGVyQnVmZmVy VFhOLCBub2RlLAotCQkJCQkJCQkJCQkJaXRlci5jdXIpOwogCiAJCS8qCi0JCSAqIFdlIGRv bid0IHNraXAgdG9wLWxldmVsIHRyYW5zYWN0aW9ucyB3aXRob3V0IHJlbGZpbGVub2Rlcywg YmVjYXVzZQotCQkgKiB0aGVyZSBtaWdodCBiZSBhIHN1YnRyYW5zYWN0aW9uIHdpdGggc29t ZSwgYW5kIHdlIHdhbnQgdG8gZGV0ZWN0CisJCSAqIFdlIGRvIHRoaXMgY2hlY2sgZXZlbiBp ZiB0aGUgZ2xvYmFsIGhhc2ggdGFibGUgaXMgZW1wdHksIGJlY2F1c2UKKwkJICogdGhlcmUg bWlnaHQgYmUgYSB0cmFuc2FjdGlvbiB3aXRoIHNvbWUsIGFuZCB3ZSB3YW50IHRvIGRldGVj dAogCQkgKiBzdWNoIGNhc2VzIHRvby4KIAkJICovCi0JCWlmICh0eG4tPnNlcXVlbmNlc19o YXNoKQotCQkJbmVudHJpZXMgPSBoYXNoX2dldF9udW1fZW50cmllcyh0eG4tPnNlcXVlbmNl c19oYXNoKTsKKwkJbmVudHJpZXMgPSBoYXNoX2dldF9udW1fZW50cmllcyhyYi0+c2VxdWVu Y2VzX2hhc2gpOwogCi0JCS8qIHdhbGsgYWxsIHN1YnhhY3RzLCBhbmQgY2hlY2sgdGhlIGhh c2ggdGFibGUgaW4gZWFjaCBvbmUgKi8KLQkJZGxpc3RfZm9yZWFjaChzdWJpdGVyLCAmdHhu LT5zdWJ0eG5zKQorCQkvKiB3YWxrIGFsbCB4YWN0cywgYW5kIGNoZWNrIHRoZSBoYXNoIHRh YmxlIGluIGVhY2ggb25lICovCisJCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCByYi0+Ynlf dHhuKTsKKwkJd2hpbGUgKChlbnQgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0g TlVMTCkKIAkJewotCQkJSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOworCQkJUmVvcmRl ckJ1ZmZlclRYTiAqdHhuID0gZW50LT50eG47CiAJCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VF bnQgKmVudHJ5OwotCi0JCQlSZW9yZGVyQnVmZmVyVFhOICpzdWJ0eG4gPSBkbGlzdF9jb250 YWluZXIoUmVvcmRlckJ1ZmZlclRYTiwgbm9kZSwKLQkJCQkJCQkJCQkJCQkgICBzdWJpdGVy LmN1cik7CisJCQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CiAKIAkJCS8qCiAJCQkg KiBJZiB0aGlzIHN1YnhhY3QgaGFzIG5vIHJlbGZpbGVub2Rlcywgc2tpcCBpdC4gV2UnbGwg ZG8gdGhlCi0JCQkgKiBjaGVjayBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uICh0aGF0IGFs bCB0b3AtbGV2ZWwKLQkJCSAqIHJlbGZpbGVub2RlcyBhcmUgaW4gdGhlIGNvcnJlY3Qgc3Vi eGFjdCkgbGF0ZXIuCisJCQkgKiBjaGVjayBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uICh0 aGF0IGFsbCByZWxmaWxlbm9kZXMgYXJlCisJCQkgKiBhbHNvIGluIGhhc2ggZm9yIHRoZSBj b3JyZWN0IHhhY3QpIGxhdGVyLgogCQkJICovCi0JCQlpZiAoIXN1YnR4bi0+c2VxdWVuY2Vz X2hhc2gpCisJCQlpZiAoIXR4bi0+c2VxdWVuY2VzX2hhc2gpCiAJCQkJY29udGludWU7CiAK LQkJCS8qIGFkZCBudW1iZXIgb2YgcmVsZmlsZW5vZGVzIGluIHRoaXMgc3VieGFjdCAqLwot CQkJbnN1YmVudHJpZXMgKz0gaGFzaF9nZXRfbnVtX2VudHJpZXMoc3VidHhuLT5zZXF1ZW5j ZXNfaGFzaCk7CisJCQkvKiBhY2NvdW50IGZvciByZWxmaWxlbm9kZXMgaW4gdGhpcyB4YWN0 ICovCisJCQluc3ViZW50cmllcyArPSBoYXNoX2dldF9udW1fZW50cmllcyh0eG4tPnNlcXVl bmNlc19oYXNoKTsKIAogCQkJLyoKIAkJCSAqIENoZWNrIHRoYXQgYWxsIHN1YnhhY3QgcmVs ZmlsZW5vZGVzIGFyZSBpbiB0aGUgdG9wLWxldmVsIHR4bgogCQkJICogdG9vLCBhbmQgYXJl IHBvaW50aW5nIHRvIHRoaXMgc3VidHJhbnNhY3Rpb24uCiAJCQkgKi8KLQkJCWhhc2hfc2Vx X2luaXQoJnNjYW5fc3RhdHVzLCBzdWJ0eG4tPnNlcXVlbmNlc19oYXNoKTsKKwkJCWhhc2hf c2VxX2luaXQoJnNjYW5fc3RhdHVzLCB0eG4tPnNlcXVlbmNlc19oYXNoKTsKIAkJCXdoaWxl ICgoZW50cnkgPSAoUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50ICopIGhhc2hfc2VxX3NlYXJj aCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQogCQkJewogCQkJCWJvb2wJCWZvdW5kID0gZmFs c2U7CiAJCQkJUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50ICpzdWJlbnRyeTsKIAotCQkJCS8q IHNlYXJjaCBmb3IgdGhlIHNhbWUgcmVsZmlsZW5vZGUgaW4gdGhlIHRvcC1sZXZlbCB0eG4g Ki8KLQkJCQlzdWJlbnRyeSA9IGhhc2hfc2VhcmNoKHR4bi0+c2VxdWVuY2VzX2hhc2gsCisJ CQkJLyogc2VhcmNoIGZvciB0aGUgc2FtZSByZWxmaWxlbm9kZSBpbiB0aGUgZ2xvYmFsIGhh c2ggdGFibGUgKi8KKwkJCQlzdWJlbnRyeSA9IGhhc2hfc2VhcmNoKHJiLT5zZXF1ZW5jZXNf aGFzaCwKIAkJCQkJCQkJCSAgICh2b2lkICopICZlbnRyeS0+cmxvY2F0b3IsCiAJCQkJCQkJ CQkgICBIQVNIX0ZJTkQsCiAJCQkJCQkJCQkgICAmZm91bmQpOwpAQCAtMTQ5OCw3ICsxNDcz LDcgQEAgQXNzZXJ0Q2hlY2tTZXF1ZW5jZXMoUmVvcmRlckJ1ZmZlciAqcmIpCiAJCQkJICog VGhlIGVudHJ5IGhhcyB0byBwb2ludCB0byB0aGUgc3VieGFjdCAtIHRoZXJlJ3Mgbm8gc3Vi eGFjdAogCQkJCSAqICJiZWxvdyIgdGhpcyBvbmUgdG8gd2hpY2ggdGhlIHJlbGZpbGVub2Rl IGNvdWxkIGJlbG9uZy4KIAkJCQkgKi8KLQkJCQlBc3NlcnQoc3ViZW50cnktPnR4biA9PSBz dWJ0eG4pOworCQkJCUFzc2VydChzdWJlbnRyeS0+dHhuID09IHR4bik7CiAJCQl9CiAJCX0K IApAQCAtMTUwOCwzMiArMTQ4MywyNSBAQCBBc3NlcnRDaGVja1NlcXVlbmNlcyhSZW9yZGVy QnVmZmVyICpyYikKIAkJICogZGlyZWN0bHksIHNvIHRoaXMgbmVlZHMgdG8gYmUgaW5lcXVh bGl0eS4KIAkJICovCiAJCUFzc2VydChuZW50cmllcyA+PSBuc3ViZW50cmllcyk7CisJfQog CisJewogCQkvKgogCQkgKiBOb3cgZG8gdGhlIGNoZWNrIGluIHRoZSBvcHBvc2l0ZSBkaXJl Y3Rpb24gLSBjaGVjayB0aGF0IGV2ZXJ5IGVudHJ5Ci0JCSAqIGluIHRoZSB0b3AtbGV2ZWwg dHhuIChleGNlcHQgdGhvc2UgcG9pbnRpbmcgdG8gdGhlIHRvcC1sZXZlbCB0eG4KLQkJICog aXRzZWxmKSBwb2ludCB0byBvbmUgb2YgdGhlIHN1YnhhY3RzLCBhbmQgdGhlcmUncyBhbiBl bnRyeSBpbiB0aGUKLQkJICogc3VieGFjdCBoYXNoLgorCQkgKiBpbiB0aGUgZ2xvYmFsIGhh c2ggdGFibGUgcG9pbnQgdG8gb25lIG9mIHRoZSBydW5uaW5nIHhhY3RzLCBhbmQKKwkJICog dGhlcmUncyBhbiBlbnRyeSBpbiB0aGUgdHJhbnNhY3Rpb24gaGFzaCB0YWJsZS4KIAkJICov Ci0JCWlmICh0eG4tPnNlcXVlbmNlc19oYXNoKQorCQlpZiAocmItPnNlcXVlbmNlc19oYXNo KQogCQl7CiAJCQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CiAJCQlSZW9yZGVyQnVm ZmVyU2VxdWVuY2VFbnQgKmVudHJ5OwogCi0JCQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1 cywgdHhuLT5zZXF1ZW5jZXNfaGFzaCk7CisJCQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1 cywgcmItPnNlcXVlbmNlc19oYXNoKTsKIAkJCXdoaWxlICgoZW50cnkgPSAoUmVvcmRlckJ1 ZmZlclNlcXVlbmNlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBO VUxMKQogCQkJewogCQkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAJCQkJUmVvcmRlckJ1ZmZl clNlcXVlbmNlRW50ICpzdWJlbnRyeTsKIAotCQkJCS8qIFNraXAgZW50cmllcyBmb3IgdGhl IHRvcC1sZXZlbCB0eG4gaXRzZWxmLiAqLwotCQkJCWlmIChlbnRyeS0+dHhuID09IHR4bikK LQkJCQkJY29udGludWU7Ci0KLQkJCQkvKiBJcyBpdCBhIHN1YnhhY3Qgb2YgdGhpcyB0eG4/ ICovCi0JCQkJQXNzZXJ0KHJidHhuX2lzX2tub3duX3N1YnhhY3QoZW50cnktPnR4bikpOwot CQkJCUFzc2VydChlbnRyeS0+dHhuLT50b3B0eG4gPT0gdHhuKTsKLQogCQkJCS8qCiAJCQkJ ICogU2VhcmNoIGZvciB0aGUgc2FtZSByZWxmaWxlbm9kZSBpbiB0aGUgc3VieGFjdCAoaXQg c2hvdWxkCiAJCQkJICogYmUgaW5pdGlhbGl6ZWQsIGFzIHdlIGV4cGVjdCBpdCB0byBjb250 YWluIHRoZQpAQCAtMjE4MSw2ICsyMTQ5LDkgQEAgUmVvcmRlckJ1ZmZlckNsZWFudXBUWE4o UmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIAlpZiAocmJ0eG5f aXNfc2VyaWFsaXplZCh0eG4pKQogCQlSZW9yZGVyQnVmZmVyUmVzdG9yZUNsZWFudXAocmIs IHR4bik7CiAKKwkvKiByZW1vdmUgdGhlIHNlcXVlbmNlIHJlbGZpbGVub2RlIGZyb20gdGhl IGdsb2JhbCBoYXNoIHRhYmxlICovCisJUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xlYW51cChy YiwgdHhuKTsKKwogCS8qIGRlYWxsb2NhdGUgKi8KIAlSZW9yZGVyQnVmZmVyUmV0dXJuVFhO KHJiLCB0eG4pOwogfQpAQCAtMzUxOSw5ICszNDkwLDYgQEAgUmVvcmRlckJ1ZmZlckZpbmlz aFByZXBhcmVkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAlSZW9y ZGVyQnVmZmVyRXhlY3V0ZUludmFsaWRhdGlvbnModHhuLT5uaW52YWxpZGF0aW9ucywKIAkJ CQkJCQkJCSAgdHhuLT5pbnZhbGlkYXRpb25zKTsKIAotCS8qIGNsZWFudXA6IHJlbW92ZSBz ZXF1ZW5jZSByZWxmaWxlbm9kZXMgZnJvbSB0aGUgdG9wLWxldmVsIHR4biAqLwotCVJlb3Jk ZXJCdWZmZXJTZXF1ZW5jZUNsZWFudXAodHhuKTsKLQogCVJlb3JkZXJCdWZmZXJDbGVhbnVw VFhOKHJiLCB0eG4pOwogfQogCkBAIC0zNTcxLDkgKzM1MzksNiBAQCBSZW9yZGVyQnVmZmVy QWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbiwKIAkvKiBjb3NtZXRpYy4uLiAqLwogCXR4bi0+ZmluYWxfbHNuID0gbHNuOwogCi0J LyogcmVtb3ZlIHNlcXVlbmNlIHJlbGZpbGVub2RlcyBmcm9tIHRoZSB0b3AtbGV2ZWwgdHhu ICovCi0JUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xlYW51cCh0eG4pOwotCiAJLyogcmVtb3Zl IHBvdGVudGlhbCBvbi1kaXNrIGRhdGEsIGFuZCBkZWFsbG9jYXRlICovCiAJUmVvcmRlckJ1 ZmZlckNsZWFudXBUWE4ocmIsIHR4bik7CiAKQEAgLTM2MTMsOSArMzU3OCw2IEBAIFJlb3Jk ZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRl c3RSdW5uaW5nWGlkKQogCQkJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJCQkJcmIt PnN0cmVhbV9hYm9ydChyYiwgdHhuLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAKLQkJCS8qIHJl bW92ZSBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgZnJvbSB0aGUgdG9wLWxldmVsIHR4biAqLwot CQkJUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xlYW51cCh0eG4pOwotCiAJCQkvKiByZW1vdmUg cG90ZW50aWFsIG9uLWRpc2sgZGF0YSwgYW5kIGRlYWxsb2NhdGUgdGhpcyB0eCAqLwogCQkJ UmVvcmRlckJ1ZmZlckNsZWFudXBUWE4ocmIsIHR4bik7CiAKQEAgLTM2NjgsOSArMzYzMCw2 IEBAIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAllbHNlCiAJCUFzc2VydCh0eG4tPm5pbnZhbGlk YXRpb25zID09IDApOwogCi0JLyogcmVtb3ZlIHNlcXVlbmNlIHJlbGZpbGVub2RlcyBmcm9t IGEgdG9wLWxldmVsIHR4biAqLwotCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNsZWFudXAodHhu KTsKLQogCS8qIHJlbW92ZSBwb3RlbnRpYWwgb24tZGlzayBkYXRhLCBhbmQgZGVhbGxvY2F0 ZSAqLwogCVJlb3JkZXJCdWZmZXJDbGVhbnVwVFhOKHJiLCB0eG4pOwogfQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IDAxMzQxMzM1MTdhLi5hZDIw NmIzZjdkMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1 ZmZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApA QCAtNzA0LDYgKzcwNCwxMiBAQCBzdHJ1Y3QgUmVvcmRlckJ1ZmZlcgogCSAqLwogCWludDY0 CQl0b3RhbFR4bnM7CQkvKiB0b3RhbCBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIHNlbnQgKi8K IAlpbnQ2NAkJdG90YWxCeXRlczsJCS8qIHRvdGFsIGFtb3VudCBvZiBkYXRhIGRlY29kZWQg Ki8KKworCS8qCisJICogU2VxdWVuY2UgcmVsZmlsZW5vZGVzIGNyZWF0ZWQgaW4gYW55IHRy YW5zYWN0aW9uIChhbHNvIGluY2x1ZGVzCisJICogYWx0ZXJlZCBzZXF1ZW5jZXMsIHdoaWNo IGFzc2lnbnMgbmV3IHJlbGZpbGVub2RlKS4KKwkgKi8KKwlIVEFCCSAgICpzZXF1ZW5jZXNf aGFzaDsKIH07CiAKIAotLSAKMi40My4wCgo= --------------04bDZ9og1eK4R6g8Y06g4sJM Content-Type: text/x-patch; charset=UTF-8; name="v20240111-0005-CREATE-SUBSCRIPTION-flag-to-enable-sequenc.patch" Content-Disposition: attachment; filename*0="v20240111-0005-CREATE-SUBSCRIPTION-flag-to-enable-sequenc.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1OGZkMGJkMDllZGZhMjgxNGUxNjNlNzVlMDU0NDk5NDZhZDE3OTViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogV2VkLCAxMCBKYW4gMjAyNCAxNzoyMjowNyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjQwMTExIDUvN10gQ1JFQVRFIFNVQlNDUklQVElPTiBmbGFnIHRv IGVuYWJsZSBzZXF1ZW5jZXMKCi0tLQogY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVj b2RpbmcuYyAgICAgICAgIHwgMTMgKystLS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29k aW5nLnNnbWwgICAgICAgICAgICAgfCAgOCArKysrCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3N1YnNjcmlwdGlvbi5zZ21sICAgICAgfCAgNSArKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8IDEyICsrKysrKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgNDMgKysrKysrKysrKysrKysrKy0t LQogLi4uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgIHwgIDQg KysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jICAgICB8IDIw ICsrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAg ICAgIHwgMTAgKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMgICB8IDE0ICsrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaCAgICAgICAgIHwgIDQgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9w bHVnaW4uaCAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 LmggICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmggICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF9zZXF1 ZW5jZXMucGwgICAgICB8ICAyICstCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9u cygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29k aW5nL3Rlc3RfZGVjb2RpbmcuYyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29k aW5nLmMKaW5kZXggMjAwY2FhZDY4NjMuLjA3MmJiYmE1NzViIDEwMDY0NAotLS0gYS9jb250 cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCisrKyBiL2NvbnRyaWIvdGVzdF9k ZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKQEAgLTI5LDcgKzI5LDYgQEAgdHlwZWRlZiBzdHJ1 Y3QKIAlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CiAJYm9vbAkJaW5jbHVkZV94aWRzOwogCWJv b2wJCWluY2x1ZGVfdGltZXN0YW1wOwotCWJvb2wJCWluY2x1ZGVfc2VxdWVuY2VzOwogCWJv b2wJCXNraXBfZW1wdHlfeGFjdHM7CiAJYm9vbAkJb25seV9sb2NhbDsKIH0gVGVzdERlY29k aW5nRGF0YTsKQEAgLTE3OSwxMiArMTc4LDEyIEBAIHBnX2RlY29kZV9zdGFydHVwKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCWRh dGEtPmluY2x1ZGVfdGltZXN0YW1wID0gZmFsc2U7CiAJZGF0YS0+c2tpcF9lbXB0eV94YWN0 cyA9IGZhbHNlOwogCWRhdGEtPm9ubHlfbG9jYWwgPSBmYWxzZTsKLQlkYXRhLT5pbmNsdWRl X3NlcXVlbmNlcyA9IGZhbHNlOwogCiAJY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGUgPSBk YXRhOwogCiAJb3B0LT5vdXRwdXRfdHlwZSA9IE9VVFBVVF9QTFVHSU5fVEVYVFVBTF9PVVRQ VVQ7CiAJb3B0LT5yZWNlaXZlX3Jld3JpdGVzID0gZmFsc2U7CisJb3B0LT5yZWNlaXZlX3Nl cXVlbmNlcyA9IGZhbHNlOwogCiAJZm9yZWFjaChvcHRpb24sIGN0eC0+b3V0cHV0X3BsdWdp bl9vcHRpb25zKQogCXsKQEAgLTI3NSw4ICsyNzQsOCBAQCBwZ19kZWNvZGVfc3RhcnR1cChM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwK IAkJewogCiAJCQlpZiAoZWxlbS0+YXJnID09IE5VTEwpCi0JCQkJZGF0YS0+aW5jbHVkZV9z ZXF1ZW5jZXMgPSB0cnVlOwotCQkJZWxzZSBpZiAoIXBhcnNlX2Jvb2woc3RyVmFsKGVsZW0t PmFyZyksICZkYXRhLT5pbmNsdWRlX3NlcXVlbmNlcykpCisJCQkJb3B0LT5yZWNlaXZlX3Nl cXVlbmNlcyA9IHRydWU7CisJCQllbHNlIGlmICghcGFyc2VfYm9vbChzdHJWYWwoZWxlbS0+ YXJnKSwgJm9wdC0+cmVjZWl2ZV9zZXF1ZW5jZXMpKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJ CSBlcnJtc2coImNvdWxkIG5vdCBwYXJzZSB2YWx1ZSBcIiVzXCIgZm9yIHBhcmFtZXRlciBc IiVzXCIiLApAQCAtNzk0LDkgKzc5Myw2IEBAIHBnX2RlY29kZV9zZXF1ZW5jZShMb2dpY2Fs RGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlUZXN0RGVj b2RpbmdEYXRhICpkYXRhID0gY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CiAJVGVzdERl Y29kaW5nVHhuRGF0YSAqdHhuZGF0YSA9IHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOwog Ci0JaWYgKCFkYXRhLT5pbmNsdWRlX3NlcXVlbmNlcykKLQkJcmV0dXJuOwotCiAJLyogb3V0 cHV0IEJFR0lOIGlmIHdlIGhhdmVuJ3QgeWV0LCBidXQgb25seSBmb3IgdGhlIHRyYW5zYWN0 aW9uYWwgY2FzZSAqLwogCWlmICh0cmFuc2FjdGlvbmFsKQogCXsKQEAgLTEwMzgsOSArMTAz NCw2IEBAIHBnX2RlY29kZV9zdHJlYW1fc2VxdWVuY2UoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJVGVzdERlY29kaW5nRGF0YSAqZGF0 YSA9IGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOwogCVRlc3REZWNvZGluZ1R4bkRhdGEg KnR4bmRhdGEgPSB0eG4tPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKIAotCWlmICghZGF0YS0+ aW5jbHVkZV9zZXF1ZW5jZXMpCi0JCXJldHVybjsKLQogCS8qIG91dHB1dCBCRUdJTiBpZiB3 ZSBoYXZlbid0IHlldCwgYnV0IG9ubHkgZm9yIHRoZSB0cmFuc2FjdGlvbmFsIGNhc2UgKi8K IAlpZiAodHJhbnNhY3Rpb25hbCkKIAl7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9n aWNhbGRlY29kaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwK aW5kZXggOTBlOTlhOTUxMjguLjMxZjhhYTdmOTMyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbGRlY29kaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNv ZGluZy5zZ21sCkBAIC02NDYsNiArNjQ2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0UGx1 Z2luT3B0aW9ucwogewogICAgIE91dHB1dFBsdWdpbk91dHB1dFR5cGUgb3V0cHV0X3R5cGU7 CiAgICAgYm9vbCAgICAgICAgcmVjZWl2ZV9yZXdyaXRlczsKKyAgICBib29sICAgICAgICBy ZWNlaXZlX3NlcXVlbmNlczsKIH0gT3V0cHV0UGx1Z2luT3B0aW9uczsKIDwvcHJvZ3JhbWxp c3Rpbmc+CiAgICAgICA8bGl0ZXJhbD5vdXRwdXRfdHlwZTwvbGl0ZXJhbD4gaGFzIHRvIGVp dGhlciBiZSBzZXQgdG8KQEAgLTY1OCw2ICs2NTksMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0 cHV0UGx1Z2luT3B0aW9ucwogICAgICAgcmVwbGljYXRpb24sIGJ1dCB0aGV5IHJlcXVpcmUg c3BlY2lhbCBoYW5kbGluZy4KICAgICAgPC9wYXJhPgogCisgICAgIDxwYXJhPgorICAgICAg SWYgPGxpdGVyYWw+cmVjZWl2ZV9zZXF1ZW5jZXM8L2xpdGVyYWw+IGlzIHRydWUsIHRoZSBv dXRwdXQgcGx1Z2luIHdpbGwKKyAgICAgIGFsc28gYmUgY2FsbGVkIGZvciBjaGFuZ2VzIG1h ZGUgYnkgb3BlcmF0aW9ucyBvbiBzZXF1ZW5jZXMuICBUaGVzZSBhcmUKKyAgICAgIG9mIGlu dGVyZXN0IHRvIHBsdWdpbnMgdGhhdCBuZWVkIHRvIG1haW50YWluIHNlcXVlbmNlcyBjb25z aXN0ZW50IHdpdGgKKyAgICAgIHRoZSByZXN0IG9mIHRoZSBkYXRhLCBmb3IgZXhhbXBsZSBm b3IgcHVycG9zZXMgb2YgdXBncmFkZSBvciBmYWlsb3Zlci4KKyAgICAgPC9wYXJhPgorCiAg ICAgIDxwYXJhPgogICAgICAgVGhlIHN0YXJ0dXAgY2FsbGJhY2sgc2hvdWxkIHZhbGlkYXRl IHRoZSBvcHRpb25zIHByZXNlbnQgaW4KICAgICAgIDxsaXRlcmFsPmN0eC0mZ3Q7b3V0cHV0 X3BsdWdpbl9vcHRpb25zPC9saXRlcmFsPi4gSWYgdGhlIG91dHB1dCBwbHVnaW4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDQ3OWVjNDk1ODk2 Li4yZDI0ZmY1NzY4ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJz Y3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlv bi5zZ21sCkBAIC0yMjYsOCArMjI2LDkgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwK ICAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdp dGgtc3RyZWFtaW5nIj48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+PC9saW5rPiwKICAg ICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgt ZGlzYWJsZS1vbi1lcnJvciI+PGxpdGVyYWw+ZGlzYWJsZV9vbl9lcnJvcjwvbGl0ZXJhbD48 L2xpbms+LAogICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1w YXJhbXMtd2l0aC1wYXNzd29yZC1yZXF1aXJlZCI+PGxpdGVyYWw+cGFzc3dvcmRfcmVxdWly ZWQ8L2xpdGVyYWw+PC9saW5rPiwKLSAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVz dWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtcnVuLWFzLW93bmVyIj48bGl0ZXJhbD5ydW5fYXNf b3duZXI8L2xpdGVyYWw+PC9saW5rPiwgYW5kCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwt Y3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLW9yaWdpbiI+PGxpdGVyYWw+b3JpZ2lu PC9saXRlcmFsPjwvbGluaz4uCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vi c2NyaXB0aW9uLXBhcmFtcy13aXRoLXJ1bi1hcy1vd25lciI+PGxpdGVyYWw+cnVuX2FzX293 bmVyPC9saXRlcmFsPjwvbGluaz4sCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRl c3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLW9yaWdpbiI+PGxpdGVyYWw+b3JpZ2luPC9saXRl cmFsPjwvbGluaz4gYW5kCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2Ny aXB0aW9uLXBhcmFtcy13aXRoLXNlcXVlbmNlcyI+PGxpdGVyYWw+c2VxdWVuY2VzPC9saXRl cmFsPjwvbGluaz4uCiAgICAgICBPbmx5IGEgc3VwZXJ1c2VyIGNhbiBzZXQgPGxpdGVyYWw+ cGFzc3dvcmRfcmVxdWlyZWQgPSBmYWxzZTwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAg ICA8L2xpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24u c2dtbAppbmRleCBmMWMyMGIzYTQ2NS4uNDU5MWUzN2RhYzcgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0zOTksNiArMzk5LDE4IEBAIENS RUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNj cmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICA8dmFybGlzdGVu dHJ5IGlkPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXNlcXVlbmNlcyI+ CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnNlcXVlbmNlczwvbGl0ZXJhbD4gKDx0eXBlPmJv b2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBh cmE+CisgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHN1YnNjcmlwdGlvbiB3aWxs IHJlcXVlc3QgdGhlIHB1Ymxpc2hlciB0bworICAgICAgICAgIGRlY29kZSBhbmQgc2VuZCBz ZXF1ZW5jZSBjaGFuZ2VzLiBOb3RlIHRoYXQgZm9yIHNlcXVlbmNlcyB0byBiZQorICAgICAg ICAgIGRlY29kZWQsIHRoZSBzZXF1ZW5jZSBhbHNvIGhhcyB0byBiZSBhZGRlZCB0byB0aGUg cHVibGljYXRpb24uCisgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ZmFsc2U8 L2xpdGVyYWw+LgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxpc3Q+PC9wYXJhPgogCiAg ICAgPC9saXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmlu ZGV4IGM1MTZjMjVhYzdiLi5lNTJhYmY2MTc5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5jCkBAIC03Myw2ICs3Myw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQg c3ViaWQsIGJvb2wgbWlzc2luZ19vaykKIAlzdWItPmRpc2FibGVvbmVyciA9IHN1YmZvcm0t PnN1YmRpc2FibGVvbmVycjsKIAlzdWItPnBhc3N3b3JkcmVxdWlyZWQgPSBzdWJmb3JtLT5z dWJwYXNzd29yZHJlcXVpcmVkOwogCXN1Yi0+cnVuYXNvd25lciA9IHN1YmZvcm0tPnN1YnJ1 bmFzb3duZXI7CisJc3ViLT5zZXF1ZW5jZXMgPSBzdWJmb3JtLT5zdWJzZXF1ZW5jZXM7CiAK IAkvKiBHZXQgY29ubmluZm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwo U1VCU0NSSVBUSU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5jCmluZGV4IDE0NDYwOWMxYjlmLi43NmIxYmJkOWIyZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNzEsNiArNzEsNyBAQAogI2RlZmluZSBT VUJPUFRfUlVOX0FTX09XTkVSCQkJMHgwMDAwMTAwMAogI2RlZmluZSBTVUJPUFRfTFNOCQkJ CQkweDAwMDAyMDAwCiAjZGVmaW5lIFNVQk9QVF9PUklHSU4JCQkJMHgwMDAwNDAwMAorI2Rl ZmluZSBTVUJPUFRfU0VRVUVOQ0VTCQkJMHgwMDAwODAwMAogCiAvKiBjaGVjayBpZiB0aGUg J3ZhbCcgaGFzICdiaXRzJyBzZXQgKi8KICNkZWZpbmUgSXNTZXQodmFsLCBiaXRzKSAgKCgo dmFsKSAmIChiaXRzKSkgPT0gKGJpdHMpKQpAQCAtOTcsNiArOTgsNyBAQCB0eXBlZGVmIHN0 cnVjdCBTdWJPcHRzCiAJYm9vbAkJcnVuYXNvd25lcjsKIAljaGFyCSAgICpvcmlnaW47CiAJ WExvZ1JlY1B0cglsc247CisJYm9vbAkJc2VxdWVuY2VzOwogfSBTdWJPcHRzOwogCiBzdGF0 aWMgTGlzdCAqZmV0Y2hfdGFibGVfbGlzdChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlz dCAqcHVibGljYXRpb25zKTsKQEAgLTE1OCw2ICsxNjAsOCBAQCBwYXJzZV9zdWJzY3JpcHRp b25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJ b3B0cy0+cnVuYXNvd25lciA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywg U1VCT1BUX09SSUdJTikpCiAJCW9wdHMtPm9yaWdpbiA9IHBzdHJkdXAoTE9HSUNBTFJFUF9P UklHSU5fQU5ZKTsKKwlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TRVFVRU5D RVMpKQorCQlvcHRzLT5zZXF1ZW5jZXMgPSBmYWxzZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMg Ki8KIAlmb3JlYWNoKGxjLCBzdG10X29wdGlvbnMpCkBAIC0zNTQsNiArMzU4LDE1IEBAIHBh cnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3Rt dF9vcHRpb25zLAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX0xTTjsKIAkJ CW9wdHMtPmxzbiA9IGxzbjsKIAkJfQorCQllbHNlIGlmIChJc1NldChzdXBwb3J0ZWRfb3B0 cywgU1VCT1BUX1NFUVVFTkNFUykgJiYKKwkJCQkgc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAi c2VxdWVuY2VzIikgPT0gMCkKKwkJeworCQkJaWYgKElzU2V0KG9wdHMtPnNwZWNpZmllZF9v cHRzLCBTVUJPUFRfU0VRVUVOQ0VTKSkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShk ZWZlbCwgcHN0YXRlKTsKKworCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX1NF UVVFTkNFUzsKKwkJCW9wdHMtPnNlcXVlbmNlcyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOwor CQl9CiAJCWVsc2UKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKQEAgLTU5Miw3ICs2MDUsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJ CQkgIFNVQk9QVF9TWU5DSFJPTk9VU19DT01NSVQgfCBTVUJPUFRfQklOQVJZIHwKIAkJCQkJ ICBTVUJPUFRfU1RSRUFNSU5HIHwgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCB8CiAJCQkJCSAg U1VCT1BUX0RJU0FCTEVfT05fRVJSIHwgU1VCT1BUX1BBU1NXT1JEX1JFUVVJUkVEIHwKLQkJ CQkJICBTVUJPUFRfUlVOX0FTX09XTkVSIHwgU1VCT1BUX09SSUdJTik7CisJCQkJCSAgU1VC T1BUX1JVTl9BU19PV05FUiB8IFNVQk9QVF9PUklHSU4gfCBTVUJPUFRfU0VRVUVOQ0VTKTsK IAlwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhwc3RhdGUsIHN0bXQtPm9wdGlvbnMsIHN1 cHBvcnRlZF9vcHRzLCAmb3B0cyk7CiAKIAkvKgpAQCAtNjk4LDYgKzcxMSw3IEBAIENyZWF0 ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0 bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmRpc2FibGVvbmVy ciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZGlzYWJsZW9uZXJyKTsKIAl2YWx1ZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3VicGFzc3dvcmRyZXF1aXJlZCAtIDFdID0gQm9vbEdldERh dHVtKG9wdHMucGFzc3dvcmRyZXF1aXJlZCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0 aW9uX3N1YnJ1bmFzb3duZXIgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLnJ1bmFzb3duZXIp OworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzZXF1ZW5jZXMgLSAxXSA9IEJv b2xHZXREYXR1bShvcHRzLnNlcXVlbmNlcyk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0 aW9uX3N1YmNvbm5pbmZvIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZv KTsKIAlpZiAob3B0cy5zbG90X25hbWUpCkBAIC03NjIsOCArNzc2LDE0IEBAIENyZWF0ZVN1 YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQg KnN0bXQsCiAJCQkgKiByZWxhdGlvbiBzeW5jIHN0YXR1cyBpbmZvLgogCQkJICovCiAJCQly ZWxhdGlvbnMgPSBmZXRjaF90YWJsZV9saXN0KHdyY29ubiwgcHVibGljYXRpb25zKTsKLQkJ CXJlbGF0aW9ucyA9IGxpc3RfY29uY2F0KHJlbGF0aW9ucywKLQkJCQkJCQkJCWZldGNoX3Nl cXVlbmNlX2xpc3Qod3Jjb25uLCBwdWJsaWNhdGlvbnMpKTsKKworCQkJLyoKKwkJCSAqIEFk ZCBzZXF1ZW5jZXMsIGJ1dCBvbmx5IGlmIHRoZSBzdWJzY3JpcHRpb24gZXhwbGljaXRseSBl bmFibGVkCisJCQkgKiB0aGVtIHRvIGJlIHJlcGxpY2F0ZWQuCisJCQkgKi8KKwkJCWlmIChv cHRzLnNlcXVlbmNlcykKKwkJCQlyZWxhdGlvbnMgPSBsaXN0X2NvbmNhdChyZWxhdGlvbnMs CisJCQkJCQkJCQkJZmV0Y2hfc2VxdWVuY2VfbGlzdCh3cmNvbm4sIHB1YmxpY2F0aW9ucykp OwogCiAJCQlmb3JlYWNoKGxjLCByZWxhdGlvbnMpCiAJCQl7CkBAIC04ODgsOCArOTA4LDE0 IEBAIEFsdGVyU3Vic2NyaXB0aW9uX3JlZnJlc2goU3Vic2NyaXB0aW9uICpzdWIsIGJvb2wg Y29weV9kYXRhLAogCiAJCS8qIEdldCB0aGUgbGlzdCBvZiByZWxhdGlvbnMgZnJvbSBwdWJs aXNoZXIuICovCiAJCXB1YnJlbF9uYW1lcyA9IGZldGNoX3RhYmxlX2xpc3Qod3Jjb25uLCBz dWItPnB1YmxpY2F0aW9ucyk7Ci0JCXB1YnJlbF9uYW1lcyA9IGxpc3RfY29uY2F0KHB1YnJl bF9uYW1lcywKLQkJCQkJCQkJICAgZmV0Y2hfc2VxdWVuY2VfbGlzdCh3cmNvbm4sIHN1Yi0+ cHVibGljYXRpb25zKSk7CisKKwkJLyoKKwkJICogQWRkIHNlcXVlbmNlcywgYnV0IG9ubHkg aWYgdGhlIHN1YnNjcmlwdGlvbiBleHBsaWNpdGx5IGVuYWJsZWQKKwkJICogdGhlbSB0byBi ZSByZXBsaWNhdGVkLgorCQkgKi8KKwkJaWYgKHN1Yi0+c2VxdWVuY2VzKQorCQkJcHVicmVs X25hbWVzID0gbGlzdF9jb25jYXQocHVicmVsX25hbWVzLAorCQkJCQkJCQkJICAgZmV0Y2hf c2VxdWVuY2VfbGlzdCh3cmNvbm4sIHN1Yi0+cHVibGljYXRpb25zKSk7CiAKIAkJLyogR2V0 IGxvY2FsIHRhYmxlIGxpc3QuICovCiAJCXN1YnJlbF9zdGF0ZXMgPSBHZXRTdWJzY3JpcHRp b25SZWxhdGlvbnMoc3ViLT5vaWQsIGZhbHNlKTsKQEAgLTEyMjQsNiArMTI1MCwxMyBAQCBB bHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9u U3RtdCAqc3RtdCwKIAkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3Jp Z2luIC0gMV0gPSB0cnVlOwogCQkJCX0KIAorCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmll ZF9vcHRzLCBTVUJPUFRfU0VRVUVOQ0VTKSkKKwkJCQl7CisJCQkJCXZhbHVlc1tBbnVtX3Bn X3N1YnNjcmlwdGlvbl9zdWJzZXF1ZW5jZXMgLSAxXSA9CisJCQkJCQlCb29sR2V0RGF0dW0o b3B0cy5zZXF1ZW5jZXMpOworCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJzZXF1ZW5jZXMgLSAxXSA9IHRydWU7CisJCQkJfQorCiAJCQkJdXBkYXRlX3R1cGxlID0g dHJ1ZTsKIAkJCQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKaW5k ZXggNzgzNDRhMDM2MTUuLjA3YTBlNTVjMjFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2 ZXIuYwpAQCAtNDc1LDYgKzQ3NSwxMCBAQCBsaWJwcXJjdl9zdGFydHN0cmVhbWluZyhXYWxS ZWNlaXZlckNvbm4gKmNvbm4sCiAJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICIsIG9yaWdp biAnJXMnIiwKIAkJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5vcmlnaW4pOwogCisJ CWlmIChvcHRpb25zLT5wcm90by5sb2dpY2FsLnNlcXVlbmNlcyAmJgorCQkJUFFzZXJ2ZXJW ZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pID49IDE3MDAwMCkKKwkJCWFwcGVuZFN0cmluZ0lu Zm8oJmNtZCwgIiwgc2VxdWVuY2VzICdvbiciKTsKKwogCQlwdWJuYW1lcyA9IG9wdGlvbnMt PnByb3RvLmxvZ2ljYWwucHVibGljYXRpb25fbmFtZXM7CiAJCXB1Ym5hbWVzX3N0ciA9IHN0 cmluZ2xpc3RfdG9faWRlbnRpZmllcnN0cihjb25uLT5zdHJlYW1Db25uLCBwdWJuYW1lcyk7 CiAJCWlmICghcHVibmFtZXNfc3RyKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xvZ2ljYWwuYwppbmRleCA4Y2FkYzBlOWU2Zi4uODY1NTc3NDVlMTggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC00NzUsNiArNDc1 LDE2IEBAIENyZWF0ZUluaXREZWNvZGluZ0NvbnRleHQoY29uc3QgY2hhciAqcGx1Z2luLAog CiAJY3R4LT5yZW9yZGVyLT5vdXRwdXRfcmV3cml0ZXMgPSBjdHgtPm9wdGlvbnMucmVjZWl2 ZV9yZXdyaXRlczsKIAorCS8qCisJICogU3RhcnR1cERlY29kaW5nQ29udGV4dCBvbmx5IGNo ZWNrcyB3aGljaCBjYWxsYmFja3MgYXJlIGRlZmluZWQsIGFuZAorCSAqIHN0YXJ0dXBfY2Jf d3JhcHBlciBzZXRzIHJlY2VpdmVyX3NlcXVlbmNlcyBmbGFnLiBXZSBuZWVkIHRvIGNvbWJp bmUKKwkgKiB0aG9zZSB0d28gcGllY2VzIGFuZCBkaXNhYmxlIHNlcXVlbmNlcyBpZiByZWNl aXZlcl9zZXF1ZW5jZXM9ZmFsc2UuCisJICoKKwkgKiBYWFggV2UgY291bGQgYWxzbyBsZWF2 ZSB0aGlzIHVwIHRvIHRoZSBwbHVnaW4gc3RhcnR1cCwgYnV0IGl0IHNlZW1zCisJICogY2xl YW5lciB0byBqdXN0IGRvIGl0IGhlcmUuCisJICovCisJY3R4LT5zZXF1ZW5jZXMgJj0gY3R4 LT5vcHRpb25zLnJlY2VpdmVfc2VxdWVuY2VzOworCiAJcmV0dXJuIGN0eDsKIH0KIApAQCAt NjIyLDYgKzYzMiwxNiBAQCBDcmVhdGVEZWNvZGluZ0NvbnRleHQoWExvZ1JlY1B0ciBzdGFy dF9sc24sCiAKIAljdHgtPnJlb3JkZXItPm91dHB1dF9yZXdyaXRlcyA9IGN0eC0+b3B0aW9u cy5yZWNlaXZlX3Jld3JpdGVzOwogCisJLyoKKwkgKiBTdGFydHVwRGVjb2RpbmdDb250ZXh0 IG9ubHkgY2hlY2tzIHdoaWNoIGNhbGxiYWNrcyBhcmUgZGVmaW5lZCwgYW5kCisJICogc3Rh cnR1cF9jYl93cmFwcGVyIHNldHMgcmVjZWl2ZXJfc2VxdWVuY2VzIGZsYWcuIFdlIG5lZWQg dG8gY29tYmluZQorCSAqIHRob3NlIHR3byBwaWVjZXMgYW5kIGRpc2FibGUgc2VxdWVuY2Vz IGlmIHJlY2VpdmVyX3NlcXVlbmNlcz1mYWxzZS4KKwkgKgorCSAqIFhYWCBXZSBjb3VsZCBh bHNvIGxlYXZlIHRoaXMgdXAgdG8gdGhlIHBsdWdpbiBzdGFydHVwLCBidXQgaXQgc2VlbXMK KwkgKiBjbGVhbmVyIHRvIGp1c3QgZG8gaXQgaGVyZS4KKwkgKi8KKwljdHgtPnNlcXVlbmNl cyAmPSBjdHgtPm9wdGlvbnMucmVjZWl2ZV9zZXF1ZW5jZXM7CisKIAllcmVwb3J0KExPRywK IAkJCShlcnJtc2coInN0YXJ0aW5nIGxvZ2ljYWwgZGVjb2RpbmcgZm9yIHNsb3QgXCIlc1wi IiwKIAkJCQkJTmFtZVN0cihzbG90LT5kYXRhLm5hbWUpKSwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDAxZmU5NTI3YjZiLi42YTcxZGIzNTRh MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC00 MDQwLDYgKzQwNDAsNyBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJCXN0 cmNtcChuZXdzdWItPnNsb3RuYW1lLCBNeVN1YnNjcmlwdGlvbi0+c2xvdG5hbWUpICE9IDAg fHwKIAkJbmV3c3ViLT5iaW5hcnkgIT0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeSB8fAogCQlu ZXdzdWItPnN0cmVhbSAhPSBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtIHx8CisJCW5ld3N1Yi0+ c2VxdWVuY2VzICE9IE15U3Vic2NyaXB0aW9uLT5zZXF1ZW5jZXMgfHwKIAkJbmV3c3ViLT5w YXNzd29yZHJlcXVpcmVkICE9IE15U3Vic2NyaXB0aW9uLT5wYXNzd29yZHJlcXVpcmVkIHx8 CiAJCXN0cmNtcChuZXdzdWItPm9yaWdpbiwgTXlTdWJzY3JpcHRpb24tPm9yaWdpbikgIT0g MCB8fAogCQluZXdzdWItPm93bmVyICE9IE15U3Vic2NyaXB0aW9uLT5vd25lciB8fApAQCAt NDQ3MCw2ICs0NDcxLDE1IEBAIHNldF9zdHJlYW1fb3B0aW9ucyhXYWxSY3ZTdHJlYW1PcHRp b25zICpvcHRpb25zLAogCW9wdGlvbnMtPnByb3RvLmxvZ2ljYWwucHVibGljYXRpb25fbmFt ZXMgPSBNeVN1YnNjcmlwdGlvbi0+cHVibGljYXRpb25zOwogCW9wdGlvbnMtPnByb3RvLmxv Z2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKIAorCS8qCisJICogRklY TUUgbWF5YmUgdGhpcyBzaG91bGQgZGVwZW5kIG9uIHNlcnZlcl92ZXJzaW9uIHRvbz8gV2Ug ZG9uJ3Qgd2FudAorCSAqIHRvIHJlcXVlc3Qgc2VxdWVuY2VzIGZyb20gb2xkIHJlbGVhc2Vz LCBidXQgbWF5YmUgd2Ugc2hvdWxkIG5vdCBqdXN0CisJICogaWdub3JlIHRoYXQ/IE1pZ2h0 IGVhc2lseSBsZWFkIHRvIHN1cnByaXNlcy4KKwkgKgorCSAqIFhYWCBOb3cgdGhlcmUncyBh IHNlcnZlcl92ZXJzaW9uIGNoZWNrIGluIGxpYnBxcmN2X3N0YXJ0c3RyZWFtaW5nLgorCSAq LworCW9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc2VxdWVuY2VzID0gTXlTdWJzY3JpcHRpb24t PnNlcXVlbmNlczsKKwogCS8qCiAJICogQXNzaWduIHRoZSBhcHByb3ByaWF0ZSBvcHRpb24g dmFsdWUgZm9yIHN0cmVhbWluZyBvcHRpb24gYWNjb3JkaW5nIHRvCiAJICogdGhlICdzdHJl YW1pbmcnIG1vZGUgYW5kIHRoZSBwdWJsaXNoZXIncyBhYmlsaXR5IHRvIHN1cHBvcnQgdGhh dCBtb2RlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMKaW5kZXggOGI4ZjgxYzVmOGUuLjVhMTkzMDZkMjZjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTI5MSw2ICsyOTEsNyBAQCBw YXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25zLCBQR091dHB1dERhdGEgKmRh dGEpCiAJYm9vbAkJc3RyZWFtaW5nX2dpdmVuID0gZmFsc2U7CiAJYm9vbAkJdHdvX3BoYXNl X29wdGlvbl9naXZlbiA9IGZhbHNlOwogCWJvb2wJCW9yaWdpbl9vcHRpb25fZ2l2ZW4gPSBm YWxzZTsKKwlib29sCQlzZXF1ZW5jZXNfb3B0aW9uX2dpdmVuID0gZmFsc2U7CiAKIAlkYXRh LT5iaW5hcnkgPSBmYWxzZTsKIAlkYXRhLT5zdHJlYW1pbmcgPSBMT0dJQ0FMUkVQX1NUUkVB TV9PRkY7CkBAIC00MDQsNiArNDA1LDE2IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExp c3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAkJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCQllcnJtc2coInVucmVjb2duaXpl ZCBvcmlnaW4gdmFsdWU6IFwiJXNcIiIsIG9yaWdpbikpOwogCQl9CisJCWVsc2UgaWYgKHN0 cmNtcChkZWZlbC0+ZGVmbmFtZSwgInNlcXVlbmNlcyIpID09IDApCisJCXsKKwkJCWlmIChz ZXF1ZW5jZXNfb3B0aW9uX2dpdmVuKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJjb25mbGljdGlu ZyBvciByZWR1bmRhbnQgb3B0aW9ucyIpKSk7CisJCQlzZXF1ZW5jZXNfb3B0aW9uX2dpdmVu ID0gdHJ1ZTsKKworCQkJZGF0YS0+c2VxdWVuY2VzID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7 CisJCX0KIAkJZWxzZQogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBwZ291dHB1dCBv cHRpb246ICVzIiwgZGVmZWwtPmRlZm5hbWUpOwogCX0KQEAgLTQ0Miw2ICs0NTMsNyBAQCBw Z291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1 Z2luT3B0aW9ucyAqb3B0LAogCiAJLyogVGhpcyBwbHVnaW4gdXNlcyBiaW5hcnkgcHJvdG9j b2wuICovCiAJb3B0LT5vdXRwdXRfdHlwZSA9IE9VVFBVVF9QTFVHSU5fQklOQVJZX09VVFBV VDsKKwlvcHQtPnJlY2VpdmVfc2VxdWVuY2VzID0gZmFsc2U7CiAKIAkvKgogCSAqIFRoaXMg aXMgcmVwbGljYXRpb24gc3RhcnQgYW5kIG5vdCBzbG90IGluaXRpYWxpemF0aW9uLgpAQCAt NTQwLDYgKzU1Miw4IEBAIHBnb3V0cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQsCiAJCWN0eC0+c3RyZWFtaW5nID0g ZmFsc2U7CiAJCWN0eC0+dHdvcGhhc2UgPSBmYWxzZTsKIAl9CisKKwlvcHQtPnJlY2VpdmVf c2VxdWVuY2VzID0gZGF0YS0+c2VxdWVuY2VzOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggY2EzMjYyNTU4NTIuLjcyMDVmOWVkMTNiIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTkzLDYgKzkzLDkg QEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklk KSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJydW5hc293bmVyOwkv KiBUcnVlIGlmIHJlcGxpY2F0aW9uIHNob3VsZCBleGVjdXRlIGFzIHRoZQogCQkJCQkJCQkg KiBzdWJzY3JpcHRpb24gb3duZXIgKi8KIAorCWJvb2wJCXN1YnNlcXVlbmNlczsJLyogVHJ1 ZSBpZiByZXBsaWNhdGlvbiBzdHJlYW0gc2hvdWxkIGNvbnRhaW4KKwkJCQkJCQkJICogZGVj b2RlZCBzZXF1ZW5jZSBjaGFuZ2VzICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8q IHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24g c3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9S Q0VfTk9UX05VTEw7CkBAIC0xMzksNiArMTQyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2Ny aXB0aW9uCiAJCQkJCQkJCSAqIG9jY3VycyAqLwogCWJvb2wJCXBhc3N3b3JkcmVxdWlyZWQ7 CS8qIE11c3QgY29ubmVjdGlvbiB1c2UgYSBwYXNzd29yZD8gKi8KIAlib29sCQlydW5hc293 bmVyOwkJLyogUnVuIHJlcGxpY2F0aW9uIGFzIHN1YnNjcmlwdGlvbiBvd25lciAqLworCWJv b2wJCXNlcXVlbmNlczsJCS8qIFJlcXVlc3Qgc2VxdWVuY2VzIGZyb20gdGhlIHB1Ymxpc2hl ciAqLwogCWNoYXIJICAgKmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhl IHB1Ymxpc2hlciAqLwogCWNoYXIJICAgKnNsb3RuYW1lOwkJLyogTmFtZSBvZiB0aGUgcmVw bGljYXRpb24gc2xvdCAqLwogCWNoYXIJICAgKnN5bmNjb21taXQ7CQkvKiBTeW5jaHJvbm91 cyBjb21taXQgc2V0dGluZyBmb3Igd29ya2VyICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9vdXRwdXRfcGx1Z2luLmgKaW5kZXggMmFlMjVjNmY0ZmUuLmY5Y2EyOTk0ZmE3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oCkBAIC0yNyw2ICsyNyw3 IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdpbk9wdGlvbnMKIHsKIAlPdXRwdXRQbHVn aW5PdXRwdXRUeXBlIG91dHB1dF90eXBlOwogCWJvb2wJCXJlY2VpdmVfcmV3cml0ZXM7CisJ Ym9vbAkJcmVjZWl2ZV9zZXF1ZW5jZXM7CiB9IE91dHB1dFBsdWdpbk9wdGlvbnM7CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAppbmRleCA4OWY5NGUxMTQ3Mi4uYTc0 NjEyNzdhMDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaApAQCAtMzMsNiAr MzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBQR091dHB1dERhdGEKIAlib29sCQltZXNzYWdlczsK IAlib29sCQl0d29fcGhhc2U7CiAJYm9vbAkJcHVibGlzaF9ub19vcmlnaW47CisJYm9vbAkJ c2VxdWVuY2VzOwogfSBQR091dHB1dERhdGE7CiAKICNlbmRpZgkJCQkJCQkvKiBQR09VVFBV VF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAppbmRleCAwODk5 ODkxY2RiOC4uYzA1MjZmZDJjZDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuaApAQCAtMTg2LDYgKzE4Niw3IEBAIHR5cGVkZWYgc3RydWN0CiAJCQkJCQkJCQkg KiBwcmVwYXJlIHRpbWUgKi8KIAkJCWNoYXIJICAgKm9yaWdpbjsgLyogT25seSBwdWJsaXNo IGRhdGEgb3JpZ2luYXRpbmcgZnJvbSB0aGUKIAkJCQkJCQkJICogc3BlY2lmaWVkIG9yaWdp biAqLworCQkJYm9vbAkJc2VxdWVuY2VzOwkvKiBSZXF1ZXN0IHNlcXVlbmNlcyBmcm9tIHB1 Ymxpc2hlciAqLwogCQl9CQkJbG9naWNhbDsKIAl9CQkJcHJvdG87CiB9IFdhbFJjdlN0cmVh bU9wdGlvbnM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRfc2Vx dWVuY2VzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM0X3NlcXVlbmNlcy5wbApp bmRleCAyZTkzMTc2NDJmYy4uY2E3MDY2MzEyMDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzNF9zZXF1ZW5jZXMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM0X3NlcXVlbmNlcy5wbApAQCAtNTQsNyArNTQsNyBAQCBFWENFUFRJT04gV0hF TiBvdGhlcnMgVEhFTiBOVUxMOwogRU5EOyBcJFwkIExBTkdVQUdFIHBscGdzcWwiKTsKIAog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNSRUFURSBTVUJT Q1JJUFRJT04gc2VxX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJ Q0FUSU9OIHNlcV9wdWIiCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc2VxX3N1YiBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNlcV9wdWIgV0lUSCAoc2Vx dWVuY2VzID0gdHJ1ZSkiCiApOwogCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJ3NlcV9zdWInKTsKLS0gCjIuNDMuMAoK --------------04bDZ9og1eK4R6g8Y06g4sJM Content-Type: text/x-patch; charset=UTF-8; name="v20240111-0006-add-comment-about-SNAPBUILD_FULL.patch" Content-Disposition: attachment; filename="v20240111-0006-add-comment-about-SNAPBUILD_FULL.patch" Content-Transfer-Encoding: base64 RnJvbSAyZDk2YWY3Yjg5MDA4ZDkwNmZmYzJhNzZjYTkwNmUwZjdlYWMwYTY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAxMSBKYW4gMjAyNCAxNDozNToyOSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjQwMTExIDYvN10gYWRkIGNvbW1lbnQgYWJvdXQgU05BUEJVSUxE X0ZVTEwKCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyB8 IDE3ICsrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rl Y29kZS5jCmluZGV4IDM0NjJjNTQ1YmI3Li45NWYyMjRkZjRhNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC0xNDMyLDEyICsxNDMyLDI3IEBA IHNlcV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVm ZmVyICpidWYpCiAJICogY2hhbmdlIGFzIHRyYW5zYWN0aW9uYWwgYW5kIHF1ZXVlIGl0LiBP dGhlcndpc2UgaXQgbmVlZHMgdG8gYmUgdHJlYXRlZAogCSAqIGFzIG5vbi10cmFuc2FjdGlv bmFsLCBpbiB3aGljaCBjYXNlIHdlIGp1c3Qgc2VuZCBpdCB0byB0aGUgcGx1Z2luIHJpZ2h0 CiAJICogYXdheS4KKwkgKgorCSAqIFhYWCBUaGlzIG1heSBpbmNvcnJlY3RseSBpZGVudGlm eSBzb21lIGNoYW5nZXMgYXMgbm9uLXRyYW5zYWN0aW9uYWwsCisJICogaWYgdGhlIHJlbGZp bGVub2RlIHdhcyBjcmVhdGVkIGJlZm9yZSB0aGUgc25hcHNob3Qgc3dpdGNoZWQgdG8gRlVM TAorCSAqIChzbyB0aGF0IHNtZ3JfZGVjb2RlIHNraXBwZWQgaXQsIGFuZCBpdCdzIG5vdCBp biB0aGUgaGFzaCB0YWJsZSkuCisJICogQnV0IHdlIHN0aWxsIGhhbmRsZSB0aGlzIGNvcnJl Y3RseSwgYmVjYXVzZSB0aGUgc25hcHNob3QgY2FuJ3QgYmUKKwkgKiBpbiBDT05TSVNURU5U IHN0YXRlIHlldCwgc28gdGhlIGZvbGxvd2luZyBjaGVjayB3aWxsIHNraXAgdGhlIGNoYW5n ZQorCSAqIHRvbywgYW5kIHdlIHdvbid0IHRyeSB0byBhcHBseSBpdCAod2hpY2ggd291bGQg ZmFpbCBkdWUgdG8gdW5rbm93bgorCSAqIHJlbGZpbGVub2RlKS4KIAkgKi8KIAl0cmFuc2Fj dGlvbmFsID0gUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNUcmFuc2FjdGlvbmFsKGN0eC0+cmVv cmRlciwKIAkJCQkJCQkJCQkJCQkJIHRhcmdldF9sb2NhdG9yLAogCQkJCQkJCQkJCQkJCQkg TlVMTCk7CiAKLQkvKiBTa2lwIHRoZSBjaGFuZ2UgaWYgYWxyZWFkeSBwcm9jZXNzZWQgKHBl ciB0aGUgc25hcHNob3QpLiAqLworCS8qCisJICogU2tpcCB0aGUgY2hhbmdlIGlmIGFscmVh ZHkgcHJvY2Vzc2VkIChwZXIgdGhlIHNuYXBzaG90KS4KKwkgKgorCSAqIFhYWCBJdCdzIGlt cG9ydGFudCB0byBza2lwIGFsbCBub24tdHJhbnNhY3Rpb25hbCBjaGFuZ2VzIHdpdGggc25h cHNob3QKKwkgKiB0aGF0IGlzIG5vdCBjb25zaXN0ZW50IHlldC4gVGhlIHNlcXVlbmNlIGNo YW5nZSBtYXkgYmUgaW5jb3JyZWN0bHkKKwkgKiBpZGVudGlmaWVkIGFzIG5vbi10cmFuc2Fj dGlvbmFsIChzZWUgYWJvdmUpLCBhbmQgd2UgbXVzdCBub3QgYXR0ZW1wdAorCSAqIHRvIHBy b2Nlc3MgaXQuCisJICovCiAJaWYgKHRyYW5zYWN0aW9uYWwgJiYKIAkJIVNuYXBCdWlsZFBy b2Nlc3NDaGFuZ2UoYnVpbGRlciwgeGlkLCBidWYtPm9yaWdwdHIpKQogCQlyZXR1cm47Ci0t IAoyLjQzLjAKCg== --------------04bDZ9og1eK4R6g8Y06g4sJM Content-Type: text/x-patch; charset=UTF-8; name="v20240111-0007-decode-all-sequence-relfilenodes.patch" Content-Disposition: attachment; filename="v20240111-0007-decode-all-sequence-relfilenodes.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZjE1OThhYzc3OTVkNzBhOWJhZWNjMzQ5MmIyOTMwZGNkODI4ZjM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAxMSBKYW4gMjAyNCAxNTo0ODo0NCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjQwMTExIDcvN10gZGVjb2RlIGFsbCBzZXF1ZW5jZSByZWxmaWxl bm9kZXMKCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAg ICAgIHwgMzEgKysrKy0tLS0tLS0tLS0tLS0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgMjYgKysrKysrKysrKysrKystLQogMiBmaWxlcyBj aGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCA5NWYyMjRkZjRhNy4uYTE0 MWY0NDQ3NzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUu YwpAQCAtMTQzMiwyNyArMTQzMiwxMiBAQCBzZXFfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCSAqIGNoYW5nZSBhcyB0cmFu c2FjdGlvbmFsIGFuZCBxdWV1ZSBpdC4gT3RoZXJ3aXNlIGl0IG5lZWRzIHRvIGJlIHRyZWF0 ZWQKIAkgKiBhcyBub24tdHJhbnNhY3Rpb25hbCwgaW4gd2hpY2ggY2FzZSB3ZSBqdXN0IHNl bmQgaXQgdG8gdGhlIHBsdWdpbiByaWdodAogCSAqIGF3YXkuCi0JICoKLQkgKiBYWFggVGhp cyBtYXkgaW5jb3JyZWN0bHkgaWRlbnRpZnkgc29tZSBjaGFuZ2VzIGFzIG5vbi10cmFuc2Fj dGlvbmFsLAotCSAqIGlmIHRoZSByZWxmaWxlbm9kZSB3YXMgY3JlYXRlZCBiZWZvcmUgdGhl IHNuYXBzaG90IHN3aXRjaGVkIHRvIEZVTEwKLQkgKiAoc28gdGhhdCBzbWdyX2RlY29kZSBz a2lwcGVkIGl0LCBhbmQgaXQncyBub3QgaW4gdGhlIGhhc2ggdGFibGUpLgotCSAqIEJ1dCB3 ZSBzdGlsbCBoYW5kbGUgdGhpcyBjb3JyZWN0bHksIGJlY2F1c2UgdGhlIHNuYXBzaG90IGNh bid0IGJlCi0JICogaW4gQ09OU0lTVEVOVCBzdGF0ZSB5ZXQsIHNvIHRoZSBmb2xsb3dpbmcg Y2hlY2sgd2lsbCBza2lwIHRoZSBjaGFuZ2UKLQkgKiB0b28sIGFuZCB3ZSB3b24ndCB0cnkg dG8gYXBwbHkgaXQgKHdoaWNoIHdvdWxkIGZhaWwgZHVlIHRvIHVua25vd24KLQkgKiByZWxm aWxlbm9kZSkuCiAJICovCiAJdHJhbnNhY3Rpb25hbCA9IFJlb3JkZXJCdWZmZXJTZXF1ZW5j ZUlzVHJhbnNhY3Rpb25hbChjdHgtPnJlb3JkZXIsCiAJCQkJCQkJCQkJCQkJCSB0YXJnZXRf bG9jYXRvciwKIAkJCQkJCQkJCQkJCQkJIE5VTEwpOwogCi0JLyoKLQkgKiBTa2lwIHRoZSBj aGFuZ2UgaWYgYWxyZWFkeSBwcm9jZXNzZWQgKHBlciB0aGUgc25hcHNob3QpLgotCSAqCi0J ICogWFhYIEl0J3MgaW1wb3J0YW50IHRvIHNraXAgYWxsIG5vbi10cmFuc2FjdGlvbmFsIGNo YW5nZXMgd2l0aCBzbmFwc2hvdAotCSAqIHRoYXQgaXMgbm90IGNvbnNpc3RlbnQgeWV0LiBU aGUgc2VxdWVuY2UgY2hhbmdlIG1heSBiZSBpbmNvcnJlY3RseQotCSAqIGlkZW50aWZpZWQg YXMgbm9uLXRyYW5zYWN0aW9uYWwgKHNlZSBhYm92ZSksIGFuZCB3ZSBtdXN0IG5vdCBhdHRl bXB0Ci0JICogdG8gcHJvY2VzcyBpdC4KLQkgKi8KKwkvKiBTa2lwIHRoZSBjaGFuZ2UgaWYg YWxyZWFkeSBwcm9jZXNzZWQgKHBlciB0aGUgc25hcHNob3QpLiAqLwogCWlmICh0cmFuc2Fj dGlvbmFsICYmCiAJCSFTbmFwQnVpbGRQcm9jZXNzQ2hhbmdlKGJ1aWxkZXIsIHhpZCwgYnVm LT5vcmlncHRyKSkKIAkJcmV0dXJuOwpAQCAtMTUxNiwxMSArMTUwMSwxNSBAQCBzZXFfZGVj b2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVm KQogICogV2Ugb25seSBjYXJlIGFib3V0IFhMT0dfU01HUl9DUkVBVEUgcmVjb3JkcyBmb3Ig Im91ciIgZGF0YWJhc2UgKGxvZ2ljYWwKICAqIGRlY29kaW5nIGlzIHJlc3RyaWN0ZWQgdG8g YSBzaW5nbGUgZGF0YWJhc2UpLCBhbmQgd2UgZG8gdGhlIGZpbHRlcmluZwogICogYW5kIHNr aXBwaW5nLCBhcyBhcHByb3ByaWF0ZS4KKyAqCisgKiBOb3RlIHRoYXQgdGhlIHJlbGZpbGVu b2RlIGlzIGRlY29kZWQgYW5kIGFkZGVkIHRvIHRoZSByZW9yZGVyIGJ1ZmZlciBldmVuCisg KiBiZWZvcmUgdGhlIHNuYXBzaG90IHN3aXRjaGVzIHRvIFNOQVBCVUlMRF9GVUxMX1NOQVBT SE9ULiBUaGlzIGlzIG5lY2Vzc2FyeQorICogc28gdGhhdCBzZXFfZGVjb2RlIGNhbiBjb3Jy ZWN0bHkgaWRlbnRpZnkgdHJhbnNhY3Rpb25hbCBjaGFuZ2VzIHdoZW4gdGhlCisgKiBzdGF0 ZSBjaGFuZ2VzIHRvIEZVTEwgYWZ0ZXIgdGhlIHJlbGZpbGVub2RlIGlzIGNyZWF0ZWQuCiAg Ki8KIHZvaWQKIHNtZ3JfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExv Z1JlY29yZEJ1ZmZlciAqYnVmKQogewotCVNuYXBCdWlsZCAgKmJ1aWxkZXIgPSBjdHgtPnNu YXBzaG90X2J1aWxkZXI7CiAJWExvZ1JlYWRlclN0YXRlICpyID0gYnVmLT5yZWNvcmQ7CiAJ VHJhbnNhY3Rpb25JZCB4aWQgPSBYTG9nUmVjR2V0WGlkKHIpOwogCXVpbnQ4CQlpbmZvID0g WExvZ1JlY0dldEluZm8oYnVmLT5yZWNvcmQpICYgflhMUl9JTkZPX01BU0s7CkBAIC0xNTQy LDE0ICsxNTMxLDYgQEAgc21ncl9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCiAKIAlSZW9yZGVyQnVmZmVyUHJvY2Vzc1hpZChj dHgtPnJlb3JkZXIsIFhMb2dSZWNHZXRYaWQociksIGJ1Zi0+b3JpZ3B0cik7CiAKLQkvKgot CSAqIElmIHdlIGRvbid0IGhhdmUgc25hcHNob3Qgb3Igd2UgYXJlIGp1c3QgZmFzdC1mb3J3 YXJkaW5nLCB0aGVyZSBpcyBubwotCSAqIHBvaW50IGluIGRlY29kaW5nIHJlbGZpbGVub2Rl IGluZm9ybWF0aW9uLgotCSAqLwotCWlmIChTbmFwQnVpbGRDdXJyZW50U3RhdGUoYnVpbGRl cikgPCBTTkFQQlVJTERfRlVMTF9TTkFQU0hPVCB8fAotCQljdHgtPmZhc3RfZm9yd2FyZCkK LQkJcmV0dXJuOwotCiAJLyogb25seSBpbnRlcmVzdGVkIGluIG91ciBkYXRhYmFzZSAqLwog CXhscmVjID0gKHhsX3NtZ3JfY3JlYXRlICopIFhMb2dSZWNHZXREYXRhKHIpOwogCWlmICh4 bHJlYy0+cmxvY2F0b3IuZGJPaWQgIT0gY3R4LT5zbG90LT5kYXRhLmRhdGFiYXNlKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpp bmRleCBhY2FhNmRjZThlNC4uMDE3ZmQ5YzA5ZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0xMjgwLDEwICsxMjgw LDMwIEBAIFJlb3JkZXJCdWZmZXJBZGRSZWxGaWxlTG9jYXRvcihSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkmZm91bmQpOwogCiAJLyoKLQkgKiBXZSd2 ZSBqdXN0IGRlY29kZWQgY3JlYXRpb24gb2YgdGhlIHJlbGZpbGVub2RlLCBzbyBpZiB3ZSBm b3VuZCBpdAotCSAqIGluIHRoZSBoYXNoIHRhYmxlLCBzb21ldGhpbmcgaXMgd3JvbmcuCisJ ICogV2UndmUganVzdCBkZWNvZGVkIGNyZWF0aW9uIG9mIHRoZSByZWxmaWxlbm9kZSwgYnV0 IGl0J3MgcG9zc2libGUgYQorCSAqIHRoZSB0cmFuc2FjdGlvbiBhYm9ydGVkIHdpdGhvdXQg dHJpZ2dlcmluZyBhIHJlb3JkZXJidWZmZXIgY2xlYW51cCwKKwkgKiBhbmQgdGhlIHJlbGZp bGVub2RlIHdhcyBhbGxvY2F0ZWQgYWdhaW4uIFdoaWxlIHF1aXRlIHVubGlrZWx5ICh0aGUK KwkgKiBoYXNoIHRhYmxlIGVudHJ5IHNob3VsZCBiZSBjbGVhbmVkIHdoZW4gcHJvY2Vzc2lu ZyBSVU5OSU5HX1hBQ1RTLAorCSAqIGFuZCB3ZSBzaG91bGQgbm90IHJldXNlIHRoZSByZWxm aWxlbm9kZSB0aGlzIGZhc3QpLgorCSAqCisJICogU28gaWYgd2UgZmluZCBhbiBlbnRyeSBm b3IgdGhlIHJlbGZpbGVub2RlLCB3ZSBzaW1wbHkgcG9pbnQgaXQgdG8KKwkgKiB0aGUgbmV3 IHRyYW5zYWN0aW9uLCBidXQgd2UgbmVlZCB0byByZW1vdmUgaXQgZnJvbSB0aGUgaGFzaCB0 YWJsZQorCSAqIGluIHRoZSBvcmlnaW5hbCB0cmFuc2FjdGlvbiAob3RoZXJ3aXNlIGl0J2Qg Y29uZnVzZSBjbGVhbnVwKS4KIAkgKi8KLQlBc3NlcnQoIWZvdW5kKTsKKwlpZiAoZm91bmQp CisJeworCQkvKgorCQkgKiBUaGUgZW50cnkgbXVzdCBiZSBwb2ludGluZyB0byBhIHRyYW5z YWN0aW9uLCBhbmQgdGhlcmUgbXVzdCBiZQorCQkgKiBtdXN0IGJlIGEgaGFzaCB0YWJsZSBv ZiByZWxmaWxlbm9kZXMuCisJCSAqLworCQlBc3NlcnQoZW50cnktPnR4bik7CisJCUFzc2Vy dChlbnRyeS0+dHhuLT5zZXF1ZW5jZXNfaGFzaCk7CisKKwkJaWYgKGhhc2hfc2VhcmNoKGVu dHJ5LT50eG4tPnNlcXVlbmNlc19oYXNoLAorCQkJCQkJKHZvaWQgKikgJmVudHJ5LT5ybG9j YXRvciwKKwkJCQkJCUhBU0hfUkVNT1ZFLCBOVUxMKSA9PSBOVUxMKQorCQkJZWxvZyhFUlJP UiwgImhhc2ggdGFibGUgb2Ygc2VxdWVuY2UgcmVsZmlsZW5vZGUgY29ycnVwdGVkIik7CisJ fQogCiAJZW50cnktPnR4biA9IHR4bjsKIAotLSAKMi40My4wCgo= --------------04bDZ9og1eK4R6g8Y06g4sJM--