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 1tNrBm-002bni-Mm for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Dec 2024 10:22:00 +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 1tNrBl-00DDSq-1F for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Dec 2024 10:21:56 +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 1tNrBj-00DDRo-T3 for pgsql-hackers@lists.postgresql.org; Wed, 18 Dec 2024 10:21:56 +0000 Received: from meesny.iki.fi ([2001:67c:2b0:1c1::201]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tNrBW-000BPO-Px for pgsql-hackers@lists.postgresql.org; Wed, 18 Dec 2024 10:21:54 +0000 Received: from [192.168.1.110] (dsl-hkibng22-50ddb7-241.dhcp.inet.fi [80.221.183.241]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by meesny.iki.fi (Postfix) with ESMTPSA id 4YCqTr2LF1zycN; Wed, 18 Dec 2024 12:21:36 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1734517297; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=M9KnBuPtNLs3Xpn63MP8tcD38oVRihULVkioRFVaBzc=; b=we87+rDKhcKZWpNgQJrHThxFl0J2xiP4yEjueM/X/os4ST6++G2Mw3O4rD9ou4llkkBLPS ts07UTQW+u1yWADsS04elr9fdJwy+3ZZTNw+rCOsmcSgO3J39DHohXXmUTm7u92FlnSM1K 8LKc639ssh97EbvTatzqUEp1titS4gg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1734517297; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=M9KnBuPtNLs3Xpn63MP8tcD38oVRihULVkioRFVaBzc=; b=Vrx1JzrQjgSnbT9sPSRBeLoJbksTv1QNVpcxxH8i6fVMoO//0BkDeMjIQPtUwy9A+vhbea CEFLanzrQJnTR5+F/Cou/JqlTA0VdhjOD9oXg3dUqFCTYBLFHcNRNjFy4PVx3l9GrEzJY1 NwxeWlrYEVgq4frt0h5OnPD8OdHsdIE= ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Seal: i=1; s=meesny; d=iki.fi; t=1734517297; a=rsa-sha256; cv=none; b=DZPVIHD0ZquITmvUnTqVYAnQ1IbLKsBMT9IT2Kz/sJHR7baYmU8ipi0An+dfNrj2V8EHhQ VfHGpkyriBsLjjmH7PCtzdpi8ISUkgN8VLk3jTvZUcbDPakFliRgkEbrTapDh/CVZ5mRm3 VX97tP1oNYtHOonvh0jrgp8uAkhb6po= Content-Type: multipart/mixed; boundary="------------PbmX20yCbf1LIUmss39QwLp0" Message-ID: <4535f3aa-3220-4760-b1f5-2bc91f248e03@iki.fi> Date: Wed, 18 Dec 2024 12:21:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC: make mxidoff 64 bits To: Maxim Orlov Cc: wenhui qiu , Alexander Korotkov , Postgres hackers References: <5ecc35f5-1111-47fc-8a02-36d89490a50d@iki.fi> <24b3deb6-a732-4256-847a-560f4bf39d59@iki.fi> Content-Language: en-US From: Heikki Linnakangas In-Reply-To: X-Spam: Yes 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. --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Thanks for working on this! On 19/11/2024 19:53, Maxim Orlov wrote: > The test itself is in src/bin/pg_upgrade/t/005_offset.pl > It is rather heavy and took about 45 minutes on > my i5 with 2.7 Gb data generated. Basically, each test here is creating > a cluster and fill it with multixacts. Thus, dozens of segments are > created using two methods. One is with prepared transactions, and it > creates, roughly, the same amount of segments for members and for > offsets. The other one is based on Heikki's multixids.py and creates > more members than offsets. I've used both of these methods to generate > as much diverse data as possible. > > Here is how I test this patch set: > > 1. You need two pg clusters: the "old" one, i.e. without patch set, and > the "new" with patch set v9 applied. > 2. Apply v9-0005-TEST-initdb-option-to-initialize-cluster-with- > non.patch.txt to the "old" and "new" clusters. Note, this is only > patch required for "old" cluster. This will allow you to create a > cluster with non-standard initial multixact and multixact offset. > Unfortunately, this patch was not did not arouse public interest > since it is assumed that there is similar functionality to the > pg_resetwal utility. But similar is not mean equal. See, pg_resetwal > must be used after cluster init, thus, we step into some problems > with vacuum and some SLRU segments must be filled with zeroes. Also, > template0 datminmxidmust be manually updated. So, in me view, using > this patch is justifiedand very handy here. > 3. Also, apply all the "TEST" (0006 and 0007) patches to the "new" cluster. > 4. Build "old" and "new" pg clusters. > 5. Run the test with: PROVE_TESTS=t/005_offset.pl > PG_TEST_NOCLEAN=1 oldinstall=/home/orlov/ > proj/OFFSET3/pgsql-old make check -s -C src/bin/pg_upgrade/ > 6. In my case, it took around 45 minutes and generate roughly 2.7 Gb of > data. > > "TEST" patches, of course, are for the test purposes and not to be > committed. > > In src/bin/pg_upgrade/t/005_offset.pl I try to > consider next cases: > > * Basic sanity checks. > Here I test various initial multi and offset values (including > wraparound) and see how appropriate segments are generated. > * pg_upgarde tests. > Here is oldinstall ENV is for. Run pg_upgrade for old cluster with > multi and offset values just like in previous step. i.e. with > various combinations. > * Self pg_upgarde. Attached is some more cleanup on top of patch set v9, removing more dead stuff related to wraparound. I also removed the oldestOffsetKnown variable and related code. It was needed to deal with clusters upgraded from buggy 9.3 and 9.4 era versions, but now that pg_upgrade will rewrite the SLRUs, it's no longer needed. Does the pg_upgrade code work though, if you have that buggy situation where oldestOffsetKnown == false ? > > if (!TransactionIdIsValid(*xactptr)) > { > /* Corner case 3: we must be looking at unused slot zero */ > Assert(offset == 0); > continue; > } After upgrade, this corner case 3 would *not* happen on offset == 0. So looks like we're still missing test coverage for this upgrade corner case. I'm still felt pretty uneasy about the pg_upgrade code. It's complicated, and the way it rewrites offsets and members separately and page at a time is quite different from the normal codepaths in multixact.c, so it's a bit hard to see if it's handling all those corner cases the same way. I rewrito that so that it's easier to understand, IMHO anyway. The code for reading the old format and writing the new format is now more decoupled. The code for reading the old format is in a separate source file, multixact_old.c. The interface to that is the GetOldMultiXactIdSingleMember() that returns the updating member of a given multixid, much like the GetMultiXactIdMembers() backend function. The conversion routine calls that for each multixid, and write it back out in the new format, one multixid at a time. The new code now "squeezes out" locking-only XIDs, keeping only the updating ones. Not that important, but with this new code structure, it was trivial and even easier to do than retaining all the XIDs. Now that the offsets are rewritten one by one, we don't need the "special case 3" in GetMultiXactIdMembers. The upgrade process removes that special case. I tried to keep my changes sepearate from your patches in the attached patch series. This needs some more cleanup and squashing before committing, but I think we're getting close. -- Heikki Linnakangas Neon (https://neon.tech) --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Disposition: attachment; filename*0="v10-0001-Use-64-bit-format-output-for-multixact-offsets.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSBjODMxY2I0MWFlMDMzODk5Y2VhYjAyMjVmOTZhOWRhZGY0YTRkYjRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNyBBdWcgMjAyNCAxNjozNToyMiArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djEwIDAxLzE0XSBVc2UgNjQtYml0IGZvcm1hdCBvdXRwdXQgZm9yIG11bHRpeGFjdCBvZmZz ZXRzCgpBdXRob3I6IE1heGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbXhhY3RkZXNjLmMgICB8ICA5ICsrKystLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYyAgICB8ICA0ICsrLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jICAgIHwgMjYgKysrKysrKysr KysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVy eS5jIHwgIDUgKysrLS0KIHNyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEu YyAgIHwgIDQgKystLQogc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jICAgICAg ICAgfCAgOCArKystLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDI1 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9teGFjdGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRlc2Mu YwppbmRleCAzZThhZDRkNWVmOC4uMWI0ODZkZTM4Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MvbXhhY3RkZXNjLmMKQEAgLTY1LDggKzY1LDggQEAgbXVsdGl4YWN0X2Rl c2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQl4bF9tdWx0 aXhhY3RfY3JlYXRlICp4bHJlYyA9ICh4bF9tdWx0aXhhY3RfY3JlYXRlICopIHJlYzsKIAkJ aW50CQkJaTsKIAotCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiV1IG9mZnNldCAldSBubWVt YmVycyAlZDogIiwgeGxyZWMtPm1pZCwKLQkJCQkJCSB4bHJlYy0+bW9mZiwgeGxyZWMtPm5t ZW1iZXJzKTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIldSBvZmZzZXQgJWxsdSBubWVt YmVycyAlZDogIiwgeGxyZWMtPm1pZCwKKwkJCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4 bHJlYy0+bW9mZiwgeGxyZWMtPm5tZW1iZXJzKTsKIAkJZm9yIChpID0gMDsgaSA8IHhscmVj LT5ubWVtYmVyczsgaSsrKQogCQkJb3V0X21lbWJlcihidWYsICZ4bHJlYy0+bWVtYmVyc1tp XSk7CiAJfQpAQCAtNzQsOSArNzQsMTAgQEAgbXVsdGl4YWN0X2Rlc2MoU3RyaW5nSW5mbyBi dWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCXsKIAkJeGxfbXVsdGl4YWN0X3RydW5j YXRlICp4bHJlYyA9ICh4bF9tdWx0aXhhY3RfdHJ1bmNhdGUgKikgcmVjOwogCi0JCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAib2Zmc2V0cyBbJXUsICV1KSwgbWVtYmVycyBbJXUsICV1KSIs CisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAib2Zmc2V0cyBbJXUsICV1KSwgbWVtYmVycyBb JWxsdSwgJWxsdSkiLAogCQkJCQkJIHhscmVjLT5zdGFydFRydW5jT2ZmLCB4bHJlYy0+ZW5k VHJ1bmNPZmYsCi0JCQkJCQkgeGxyZWMtPnN0YXJ0VHJ1bmNNZW1iLCB4bHJlYy0+ZW5kVHJ1 bmNNZW1iKTsKKwkJCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4bHJlYy0+c3RhcnRUcnVu Y01lbWIsCisJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxyZWMtPmVuZFRydW5jTWVt Yik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv eGxvZ2Rlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94bG9nZGVzYy5jCmlu ZGV4IDM2MzI5NGQ2MjM0Li5hYWExOWM4MWM4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL3hsb2dkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL3hsb2dkZXNjLmMKQEAgLTY2LDcgKzY2LDcgQEAgeGxvZ19kZXNjKFN0cmluZ0lu Zm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJQ2hlY2tQb2ludCAqY2hlY2tw b2ludCA9IChDaGVja1BvaW50ICopIHJlYzsKIAogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1Ziwg InJlZG8gJVgvJVg7ICIKLQkJCQkJCSAidGxpICV1OyBwcmV2IHRsaSAldTsgZnB3ICVzOyB3 YWxfbGV2ZWwgJXM7IHhpZCAldToldTsgb2lkICV1OyBtdWx0aSAldTsgb2Zmc2V0ICV1OyAi CisJCQkJCQkgInRsaSAldTsgcHJldiB0bGkgJXU7IGZwdyAlczsgd2FsX2xldmVsICVzOyB4 aWQgJXU6JXU7IG9pZCAldTsgbXVsdGkgJXU7IG9mZnNldCAlbGx1OyAiCiAJCQkJCQkgIm9s ZGVzdCB4aWQgJXUgaW4gREIgJXU7IG9sZGVzdCBtdWx0aSAldSBpbiBEQiAldTsgIgogCQkJ CQkJICJvbGRlc3QvbmV3ZXN0IGNvbW1pdCB0aW1lc3RhbXAgeGlkOiAldS8ldTsgIgogCQkJ CQkJICJvbGRlc3QgcnVubmluZyB4aWQgJXU7ICVzIiwKQEAgLTc5LDcgKzc5LDcgQEAgeGxv Z19kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJCQkJ CSBYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQoY2hlY2twb2ludC0+bmV4dFhpZCksCiAJCQkJ CQkgY2hlY2twb2ludC0+bmV4dE9pZCwKIAkJCQkJCSBjaGVja3BvaW50LT5uZXh0TXVsdGks Ci0JCQkJCQkgY2hlY2twb2ludC0+bmV4dE11bHRpT2Zmc2V0LAorCQkJCQkJICh1bnNpZ25l ZCBsb25nIGxvbmcpIGNoZWNrcG9pbnQtPm5leHRNdWx0aU9mZnNldCwKIAkJCQkJCSBjaGVj a3BvaW50LT5vbGRlc3RYaWQsCiAJCQkJCQkgY2hlY2twb2ludC0+b2xkZXN0WGlkREIsCiAJ CQkJCQkgY2hlY2twb2ludC0+b2xkZXN0TXVsdGksCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL211bHRpeGFjdC5jCmluZGV4IDhjMzdkN2ViYTc2Li5hYjkwOTEyZWQzYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTEyNjQsNyArMTI2NCw4 IEBAIEdldE5ld011bHRpWGFjdElkKGludCBubWVtYmVycywgTXVsdGlYYWN0T2Zmc2V0ICpv ZmZzZXQpCiAKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCi0JZGVidWdf ZWxvZzQoREVCVUcyLCAiR2V0TmV3OiByZXR1cm5pbmcgJXUgb2Zmc2V0ICV1IiwgcmVzdWx0 LCAqb2Zmc2V0KTsKKwlkZWJ1Z19lbG9nNChERUJVRzIsICJHZXROZXc6IHJldHVybmluZyAl dSBvZmZzZXQgJWxsdSIsIHJlc3VsdCwKKwkJCQkodW5zaWduZWQgbG9uZyBsb25nKSAqb2Zm c2V0KTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMjkzLDggKzIyOTQsOSBAQCBNdWx0 aVhhY3RHZXRDaGVja3B0TXVsdGkoYm9vbCBpc19zaHV0ZG93biwKIAlMV0xvY2tSZWxlYXNl KE11bHRpWGFjdEdlbkxvY2spOwogCiAJZGVidWdfZWxvZzYoREVCVUcyLAotCQkJCSJNdWx0 aVhhY3Q6IGNoZWNrcG9pbnQgaXMgbmV4dE11bHRpICV1LCBuZXh0T2Zmc2V0ICV1LCBvbGRl c3RNdWx0aSAldSBpbiBEQiAldSIsCi0JCQkJKm5leHRNdWx0aSwgKm5leHRNdWx0aU9mZnNl dCwgKm9sZGVzdE11bHRpLCAqb2xkZXN0TXVsdGlEQik7CisJCQkJIk11bHRpWGFjdDogY2hl Y2twb2ludCBpcyBuZXh0TXVsdGkgJXUsIG5leHRPZmZzZXQgJWxsdSwgb2xkZXN0TXVsdGkg JXUgaW4gREIgJXUiLAorCQkJCSpuZXh0TXVsdGksICh1bnNpZ25lZCBsb25nIGxvbmcpICpu ZXh0TXVsdGlPZmZzZXQsICpvbGRlc3RNdWx0aSwKKwkJCQkqb2xkZXN0TXVsdGlEQik7CiB9 CiAKIC8qCkBAIC0yMzI4LDggKzIzMzAsOCBAQCB2b2lkCiBNdWx0aVhhY3RTZXROZXh0TVhh Y3QoTXVsdGlYYWN0SWQgbmV4dE11bHRpLAogCQkJCQkgIE11bHRpWGFjdE9mZnNldCBuZXh0 TXVsdGlPZmZzZXQpCiB7Ci0JZGVidWdfZWxvZzQoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0 aW5nIG5leHQgbXVsdGkgdG8gJXUgb2Zmc2V0ICV1IiwKLQkJCQluZXh0TXVsdGksIG5leHRN dWx0aU9mZnNldCk7CisJZGVidWdfZWxvZzQoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5n IG5leHQgbXVsdGkgdG8gJXUgb2Zmc2V0ICVsbHUiLAorCQkJCW5leHRNdWx0aSwgKHVuc2ln bmVkIGxvbmcgbG9uZykgbmV4dE11bHRpT2Zmc2V0KTsKIAlMV0xvY2tBY3F1aXJlKE11bHRp WGFjdEdlbkxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFj dCA9IG5leHRNdWx0aTsKIAlNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCA9IG5leHRNdWx0 aU9mZnNldDsKQEAgLTI1MTksOCArMjUyMSw4IEBAIE11bHRpWGFjdEFkdmFuY2VOZXh0TVhh Y3QoTXVsdGlYYWN0SWQgbWluTXVsdGksCiAJfQogCWlmIChNdWx0aVhhY3RPZmZzZXRQcmVj ZWRlcyhNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCwgbWluTXVsdGlPZmZzZXQpKQogCXsK LQkJZGVidWdfZWxvZzMoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQgb2Zmc2V0 IHRvICV1IiwKLQkJCQkJbWluTXVsdGlPZmZzZXQpOworCQlkZWJ1Z19lbG9nMyhERUJVRzIs ICJNdWx0aVhhY3Q6IHNldHRpbmcgbmV4dCBvZmZzZXQgdG8gJWxsdSIsCisJCQkJCSh1bnNp Z25lZCBsb25nIGxvbmcpIG1pbk11bHRpT2Zmc2V0KTsKIAkJTXVsdGlYYWN0U3RhdGUtPm5l eHRPZmZzZXQgPSBtaW5NdWx0aU9mZnNldDsKIAl9CiAJTFdMb2NrUmVsZWFzZShNdWx0aVhh Y3RHZW5Mb2NrKTsKQEAgLTMyMTEsMTEgKzMyMTMsMTIgQEAgVHJ1bmNhdGVNdWx0aVhhY3Qo TXVsdGlYYWN0SWQgbmV3T2xkZXN0TXVsdGksIE9pZCBuZXdPbGRlc3RNdWx0aURCKQogCiAJ ZWxvZyhERUJVRzEsICJwZXJmb3JtaW5nIG11bHRpeGFjdCB0cnVuY2F0aW9uOiAiCiAJCSAi b2Zmc2V0cyBbJXUsICV1KSwgb2Zmc2V0cyBzZWdtZW50cyBbJWxseCwgJWxseCksICIKLQkJ ICJtZW1iZXJzIFsldSwgJXUpLCBtZW1iZXJzIHNlZ21lbnRzIFslbGx4LCAlbGx4KSIsCisJ CSAibWVtYmVycyBbJWxsdSwgJWxsdSksIG1lbWJlcnMgc2VnbWVudHMgWyVsbHgsICVsbHgp IiwKIAkJIG9sZGVzdE11bHRpLCBuZXdPbGRlc3RNdWx0aSwKIAkJICh1bnNpZ25lZCBsb25n IGxvbmcpIE11bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50KG9sZGVzdE11bHRpKSwKIAkJICh1 bnNpZ25lZCBsb25nIGxvbmcpIE11bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50KG5ld09sZGVz dE11bHRpKSwKLQkJIG9sZGVzdE9mZnNldCwgbmV3T2xkZXN0T2Zmc2V0LAorCQkgKHVuc2ln bmVkIGxvbmcgbG9uZykgb2xkZXN0T2Zmc2V0LAorCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykg bmV3T2xkZXN0T2Zmc2V0LAogCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgTVhPZmZzZXRUb01l bWJlclNlZ21lbnQob2xkZXN0T2Zmc2V0KSwKIAkJICh1bnNpZ25lZCBsb25nIGxvbmcpIE1Y T2Zmc2V0VG9NZW1iZXJTZWdtZW50KG5ld09sZGVzdE9mZnNldCkpOwogCkBAIC0zNDcxLDEx ICszNDc0LDEyIEBAIG11bHRpeGFjdF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CiAJCWVsb2coREVCVUcxLCAicmVwbGF5aW5nIG11bHRpeGFjdCB0cnVuY2F0aW9uOiAiCiAJ CQkgIm9mZnNldHMgWyV1LCAldSksIG9mZnNldHMgc2VnbWVudHMgWyVsbHgsICVsbHgpLCAi Ci0JCQkgIm1lbWJlcnMgWyV1LCAldSksIG1lbWJlcnMgc2VnbWVudHMgWyVsbHgsICVsbHgp IiwKKwkJCSAibWVtYmVycyBbJWxsdSwgJWxsdSksIG1lbWJlcnMgc2VnbWVudHMgWyVsbHgs ICVsbHgpIiwKIAkJCSB4bHJlYy5zdGFydFRydW5jT2ZmLCB4bHJlYy5lbmRUcnVuY09mZiwK IAkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudCh4 bHJlYy5zdGFydFRydW5jT2ZmKSwKIAkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNdWx0aVhh Y3RJZFRvT2Zmc2V0U2VnbWVudCh4bHJlYy5lbmRUcnVuY09mZiksCi0JCQkgeGxyZWMuc3Rh cnRUcnVuY01lbWIsIHhscmVjLmVuZFRydW5jTWVtYiwKKwkJCSAodW5zaWduZWQgbG9uZyBs b25nKSB4bHJlYy5zdGFydFRydW5jTWVtYiwKKwkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4 bHJlYy5lbmRUcnVuY01lbWIsCiAJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgTVhPZmZzZXRU b01lbWJlclNlZ21lbnQoeGxyZWMuc3RhcnRUcnVuY01lbWIpLAogCQkJICh1bnNpZ25lZCBs b25nIGxvbmcpIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KHhscmVjLmVuZFRydW5jTWVtYikp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3Zl cnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4 IGM2OTk0Yjc4MjgyLi5kM2FmOTg5YzU5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAgLTg3Niw4ICs4NzYsOSBAQCBJbml0V2FsUmVjb3Zl cnkoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwgYm9vbCAqd2FzU2h1dGRvd25fcHRy LAogCQkJCQkJCSBVNjRGcm9tRnVsbFRyYW5zYWN0aW9uSWQoY2hlY2tQb2ludC5uZXh0WGlk KSwKIAkJCQkJCQkgY2hlY2tQb2ludC5uZXh0T2lkKSkpOwogCWVyZXBvcnQoREVCVUcxLAot CQkJKGVycm1zZ19pbnRlcm5hbCgibmV4dCBNdWx0aVhhY3RJZDogJXU7IG5leHQgTXVsdGlY YWN0T2Zmc2V0OiAldSIsCi0JCQkJCQkJIGNoZWNrUG9pbnQubmV4dE11bHRpLCBjaGVja1Bv aW50Lm5leHRNdWx0aU9mZnNldCkpKTsKKwkJCShlcnJtc2dfaW50ZXJuYWwoIm5leHQgTXVs dGlYYWN0SWQ6ICV1OyBuZXh0IE11bHRpWGFjdE9mZnNldDogJWxsdSIsCisJCQkJCQkJIGNo ZWNrUG9pbnQubmV4dE11bHRpLAorCQkJCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBjaGVj a1BvaW50Lm5leHRNdWx0aU9mZnNldCkpKTsKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJt c2dfaW50ZXJuYWwoIm9sZGVzdCB1bmZyb3plbiB0cmFuc2FjdGlvbiBJRDogJXUsIGluIGRh dGFiYXNlICV1IiwKIAkJCQkJCQkgY2hlY2tQb2ludC5vbGRlc3RYaWQsIGNoZWNrUG9pbnQu b2xkZXN0WGlkREIpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL3Bn X2NvbnRyb2xkYXRhLmMgYi9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL3BnX2NvbnRyb2xkYXRh LmMKaW5kZXggOTNhMDVkODBjYTcuLjQzYjY3Mjc1NzBhIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2NvbnRyb2xkYXRhL3BnX2NvbnRyb2xkYXRhLmMKKysrIGIvc3JjL2Jpbi9wZ19jb250 cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jCkBAIC0yNTMsOCArMjUzLDggQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCQkgICBDb250cm9sRmlsZS0+Y2hlY2tQb2ludENvcHku bmV4dE9pZCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRpWGFj dElkOiAgJXVcbiIpLAogCQkgICBDb250cm9sRmlsZS0+Y2hlY2tQb2ludENvcHkubmV4dE11 bHRpKTsKLQlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlPZmZzZXQ6 ICAldVxuIiksCi0JCSAgIENvbnRyb2xGaWxlLT5jaGVja1BvaW50Q29weS5uZXh0TXVsdGlP ZmZzZXQpOworCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5leHRNdWx0aU9mZnNl dDogICVsbHVcbiIpLAorCQkgICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250cm9sRmlsZS0+ Y2hlY2tQb2ludENvcHkubmV4dE11bHRpT2Zmc2V0KTsKIAlwcmludGYoXygiTGF0ZXN0IGNo ZWNrcG9pbnQncyBvbGRlc3RYSUQ6ICAgICAgICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxl LT5jaGVja1BvaW50Q29weS5vbGRlc3RYaWQpOwogCXByaW50ZihfKCJMYXRlc3QgY2hlY2tw b2ludCdzIG9sZGVzdFhJRCdzIERCOiAgICV1XG4iKSwKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVz ZXR3YWwuYwppbmRleCBlOWRjYjVhNmQ4OS4uOTg1Y2QwNjgwMjkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYworKysgYi9zcmMvYmluL3BnX3Jlc2V0 d2FsL3BnX3Jlc2V0d2FsLmMKQEAgLTczNyw4ICs3MzcsOCBAQCBQcmludENvbnRyb2xWYWx1 ZXMoYm9vbCBndWVzc2VkKQogCQkgICBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0 T2lkKTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlYYWN0SWQ6 ICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxlLmNoZWNrUG9pbnRDb3B5Lm5leHRNdWx0aSk7 Ci0JcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRpT2Zmc2V0OiAgJXVc biIpLAotCQkgICBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0TXVsdGlPZmZzZXQp OworCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5leHRNdWx0aU9mZnNldDogICVs bHVcbiIpLAorCQkgICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250cm9sRmlsZS5jaGVja1Bv aW50Q29weS5uZXh0TXVsdGlPZmZzZXQpOwogCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2lu dCdzIG9sZGVzdFhJRDogICAgICAgICV1XG4iKSwKIAkJICAgQ29udHJvbEZpbGUuY2hlY2tQ b2ludENvcHkub2xkZXN0WGlkKTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQncyBv bGRlc3RYSUQncyBEQjogICAldVxuIiksCkBAIC04MDksOCArODA5LDggQEAgUHJpbnROZXdD b250cm9sVmFsdWVzKHZvaWQpCiAKIAlpZiAoc2V0X214b2ZmICE9IC0xKQogCXsKLQkJcHJp bnRmKF8oIk5leHRNdWx0aU9mZnNldDogICAgICAgICAgICAgICAgICAgICAgJXVcbiIpLAot CQkJICAgQ29udHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4dE11bHRpT2Zmc2V0KTsKKwkJ cHJpbnRmKF8oIk5leHRNdWx0aU9mZnNldDogICAgICAgICAgICAgICAgICAgICAgJWxsdVxu IiksCisJCQkgICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250cm9sRmlsZS5jaGVja1BvaW50 Q29weS5uZXh0TXVsdGlPZmZzZXQpOwogCX0KIAogCWlmIChzZXRfb2lkICE9IDApCi0tIAoy LjM5LjUKCg== --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0002-Use-64-bit-multixact-offsets.patch" Content-Disposition: attachment; filename="v10-0002-Use-64-bit-multixact-offsets.patch" Content-Transfer-Encoding: base64 RnJvbSAxNjRlNWVlMjZiN2QwMzk2OGE4ZWIzNzFhODk0ZDM1YjQ3ZDE4ZTYxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3By by5ydT4KRGF0ZTogV2VkLCA2IE1hciAyMDI0IDExOjExOjMzICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MTAgMDIvMTRdIFVzZSA2NC1iaXQgbXVsdGl4YWN0IG9mZnNldHMuCgpBdXRob3I6 IE1heGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9tdWx0aXhhY3QuYyB8IDE3MCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgICAgICB8ICAgMiArLQogc3Jj L2Jpbi9wZ19yZXNldHdhbC90LzAwMV9iYXNpYy5wbCAgICAgfCAgIDIgKy0KIHNyYy9pbmNs dWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9j LmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCAx MCBpbnNlcnRpb25zKCspLCAxNjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCBhYjkwOTEyZWQzYS4uNDhlMWMwMTYwYTggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC05NiwxNCArOTYs NiBAQAogLyoKICAqIERlZmluZXMgZm9yIE11bHRpWGFjdE9mZnNldCBwYWdlIHNpemVzLiAg QSBwYWdlIGlzIHRoZSBzYW1lIEJMQ0tTWiBhcyBpcwogICogdXNlZCBldmVyeXdoZXJlIGVs c2UgaW4gUG9zdGdyZXMuCi0gKgotICogTm90ZTogYmVjYXVzZSBNdWx0aVhhY3RPZmZzZXRz IGFyZSAzMiBiaXRzIGFuZCB3cmFwIGFyb3VuZCBhdCAweEZGRkZGRkZGLAotICogTXVsdGlY YWN0IHBhZ2UgbnVtYmVyaW5nIGFsc28gd3JhcHMgYXJvdW5kIGF0Ci0gKiAweEZGRkZGRkZG L01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFLCBhbmQgc2VnbWVudCBudW1iZXJpbmcgYXQK LSAqIDB4RkZGRkZGRkYvTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0UvU0xSVV9QQUdFU19Q RVJfU0VHTUVOVC4gIFdlIG5lZWQKLSAqIHRha2Ugbm8gZXhwbGljaXQgbm90aWNlIG9mIHRo YXQgZmFjdCBpbiB0aGlzIG1vZHVsZSwgZXhjZXB0IHdoZW4gY29tcGFyaW5nCi0gKiBzZWdt ZW50IGFuZCBwYWdlIG51bWJlcnMgaW4gVHJ1bmNhdGVNdWx0aVhhY3QgKHNlZQotICogTXVs dGlYYWN0T2Zmc2V0UGFnZVByZWNlZGVzKS4KICAqLwogCiAvKiBXZSBuZWVkIGZvdXIgYnl0 ZXMgcGVyIG9mZnNldCAqLwpAQCAtMjcyLDkgKzI2NCw2IEBAIHR5cGVkZWYgc3RydWN0IE11 bHRpWGFjdFN0YXRlRGF0YQogCU11bHRpWGFjdElkIG11bHRpU3RvcExpbWl0OwogCU11bHRp WGFjdElkIG11bHRpV3JhcExpbWl0OwogCi0JLyogc3VwcG9ydCBmb3IgbWVtYmVycyBhbnRp LXdyYXBhcm91bmQgbWVhc3VyZXMgKi8KLQlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0U3RvcExp bWl0OwkvKiBrbm93biBpZiBvbGRlc3RPZmZzZXRLbm93biAqLwotCiAJLyoKIAkgKiBUaGlz IGlzIHVzZWQgdG8gc2xlZXAgdW50aWwgYSBtdWx0aXhhY3Qgb2Zmc2V0IGlzIHdyaXR0ZW4g d2hlbiB3ZSB3YW50CiAJICogdG8gY3JlYXRlIHRoZSBuZXh0IG9uZS4KQEAgLTQwOSw4ICsz OTgsNiBAQCBzdGF0aWMgYm9vbCBNdWx0aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhhY3RP ZmZzZXQgb2Zmc2V0MSwKIAkJCQkJCQkJCU11bHRpWGFjdE9mZnNldCBvZmZzZXQyKTsKIHN0 YXRpYyB2b2lkIEV4dGVuZE11bHRpWGFjdE9mZnNldChNdWx0aVhhY3RJZCBtdWx0aSk7CiBz dGF0aWMgdm9pZCBFeHRlbmRNdWx0aVhhY3RNZW1iZXIoTXVsdGlYYWN0T2Zmc2V0IG9mZnNl dCwgaW50IG5tZW1iZXJzKTsKLXN0YXRpYyBib29sIE11bHRpWGFjdE9mZnNldFdvdWxkV3Jh cChNdWx0aVhhY3RPZmZzZXQgYm91bmRhcnksCi0JCQkJCQkJCQkgTXVsdGlYYWN0T2Zmc2V0 IHN0YXJ0LCB1aW50MzIgZGlzdGFuY2UpOwogc3RhdGljIGJvb2wgU2V0T2Zmc2V0VmFjdXVt TGltaXQoYm9vbCBpc19zdGFydHVwKTsKIHN0YXRpYyBib29sIGZpbmRfbXVsdGl4YWN0X3N0 YXJ0KE11bHRpWGFjdElkIG11bHRpLCBNdWx0aVhhY3RPZmZzZXQgKnJlc3VsdCk7CiBzdGF0 aWMgdm9pZCBXcml0ZU1aZXJvUGFnZVhsb2dSZWMoaW50NjQgcGFnZW5vLCB1aW50OCBpbmZv KTsKQEAgLTExNjQsNzggKzExNTEsNiBAQCBHZXROZXdNdWx0aVhhY3RJZChpbnQgbm1lbWJl cnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQogCWVsc2UKIAkJKm9mZnNldCA9IG5leHRP ZmZzZXQ7CiAKLQkvKi0tLS0tLS0tLS0KLQkgKiBQcm90ZWN0IGFnYWluc3Qgb3ZlcnJ1biBv ZiB0aGUgbWVtYmVycyBzcGFjZSBhcyB3ZWxsLCB3aXRoIHRoZQotCSAqIGZvbGxvd2luZyBy dWxlczoKLQkgKgotCSAqIElmIHdlJ3JlIHBhc3Qgb2Zmc2V0U3RvcExpbWl0LCByZWZ1c2Ug dG8gZ2VuZXJhdGUgbW9yZSBtdWx0aXMuCi0JICogSWYgd2UncmUgY2xvc2UgdG8gb2Zmc2V0 U3RvcExpbWl0LCBlbWl0IGEgd2FybmluZy4KLQkgKgotCSAqIEFyYml0cmFyaWx5LCB3ZSBz dGFydCBlbWl0dGluZyB3YXJuaW5ncyB3aGVuIHdlJ3JlIDIwIHNlZ21lbnRzIG9yIGxlc3MK LQkgKiBmcm9tIG9mZnNldFN0b3BMaW1pdC4KLQkgKgotCSAqIE5vdGUgd2UgaGF2ZW4ndCB1 cGRhdGVkIHRoZSBzaGFyZWQgc3RhdGUgeWV0LCBzbyBpZiB3ZSBmYWlsIGF0IHRoaXMKLQkg KiBwb2ludCwgdGhlIG11bHRpeGFjdCBJRCB3ZSBncmFiYmVkIGNhbiBzdGlsbCBiZSB1c2Vk IGJ5IHRoZSBuZXh0IGd1eS4KLQkgKgotCSAqIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBwb2lu dCBpbiBmb3JjaW5nIGF1dG92YWN1dW0gcnVucyBoZXJlOiB0aGUKLQkgKiBtdWx0aXhhY3Qg ZnJlZXplIHNldHRpbmdzIHdvdWxkIGhhdmUgdG8gYmUgcmVkdWNlZCBmb3IgdGhhdCB0byBo YXZlIGFueQotCSAqIGVmZmVjdC4KLQkgKi0tLS0tLS0tLS0KLQkgKi8KLSNkZWZpbmUgT0ZG U0VUX1dBUk5fU0VHTUVOVFMJMjAKLQlpZiAoTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNl dEtub3duICYmCi0JCU11bHRpWGFjdE9mZnNldFdvdWxkV3JhcChNdWx0aVhhY3RTdGF0ZS0+ b2Zmc2V0U3RvcExpbWl0LCBuZXh0T2Zmc2V0LAotCQkJCQkJCQkgbm1lbWJlcnMpKQotCXsK LQkJLyogc2VlIGNvbW1lbnQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb2Zmc2V0cyB3cmFwYXJv dW5kIGNhc2UgKi8KLQkJU2VuZFBvc3RtYXN0ZXJTaWduYWwoUE1TSUdOQUxfU1RBUlRfQVVU T1ZBQ19MQVVOQ0hFUik7Ci0KLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJD T0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAotCQkJCSBlcnJtc2coIm11bHRpeGFjdCBc Im1lbWJlcnNcIiBsaW1pdCBleGNlZWRlZCIpLAotCQkJCSBlcnJkZXRhaWxfcGx1cmFsKCJU aGlzIGNvbW1hbmQgd291bGQgY3JlYXRlIGEgbXVsdGl4YWN0IHdpdGggJXUgbWVtYmVycywg YnV0IHRoZSByZW1haW5pbmcgc3BhY2UgaXMgb25seSBlbm91Z2ggZm9yICV1IG1lbWJlci4i LAotCQkJCQkJCQkgICJUaGlzIGNvbW1hbmQgd291bGQgY3JlYXRlIGEgbXVsdGl4YWN0IHdp dGggJXUgbWVtYmVycywgYnV0IHRoZSByZW1haW5pbmcgc3BhY2UgaXMgb25seSBlbm91Z2gg Zm9yICV1IG1lbWJlcnMuIiwKLQkJCQkJCQkJICBNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3Rv cExpbWl0IC0gbmV4dE9mZnNldCAtIDEsCi0JCQkJCQkJCSAgbm1lbWJlcnMsCi0JCQkJCQkJ CSAgTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCAtIG5leHRPZmZzZXQgLSAxKSwK LQkJCQkgZXJyaGludCgiRXhlY3V0ZSBhIGRhdGFiYXNlLXdpZGUgVkFDVVVNIGluIGRhdGFi YXNlIHdpdGggT0lEICV1IHdpdGggcmVkdWNlZCBcInZhY3V1bV9tdWx0aXhhY3RfZnJlZXpl X21pbl9hZ2VcIiBhbmQgXCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2VcIiBz ZXR0aW5ncy4iLAotCQkJCQkJIE11bHRpWGFjdFN0YXRlLT5vbGRlc3RNdWx0aVhhY3REQikp KTsKLQl9Ci0KLQkvKgotCSAqIENoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIGtpY2sgYXV0b3Zh Y3V1bSBpbnRvIGFjdGlvbiwgdG8gcHJldmVudCBtZW1iZXJzCi0JICogd3JhcGFyb3VuZC4g TkIgd2UgdXNlIGEgbXVjaCBsYXJnZXIgd2luZG93IHRvIHRyaWdnZXIgYXV0b3ZhY3V1bSB0 aGFuCi0JICoganVzdCB0aGUgd2FybmluZyBsaW1pdC4gVGhlIHdhcm5pbmcgaXMganVzdCBh IG1lYXN1cmUgb2YgbGFzdCByZXNvcnQgLQotCSAqIHRoaXMgaXMgaW4gbGluZSB3aXRoIEdl dE5ld1RyYW5zYWN0aW9uSWQncyBiZWhhdmlvdXIuCi0JICovCi0JaWYgKCFNdWx0aVhhY3RT dGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gfHwKLQkJKE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zm c2V0IC0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldAotCQkgPiBNVUxUSVhBQ1RfTUVN QkVSX1NBRkVfVEhSRVNIT0xEKSkKLQl7Ci0JCS8qCi0JCSAqIFRvIGF2b2lkIHN3YW1waW5n IHRoZSBwb3N0bWFzdGVyIHdpdGggc2lnbmFscywgd2UgaXNzdWUgdGhlIGF1dG92YWMKLQkJ ICogcmVxdWVzdCBvbmx5IHdoZW4gY3Jvc3NpbmcgYSBzZWdtZW50IGJvdW5kYXJ5LiBXaXRo IGRlZmF1bHQKLQkJICogY29tcGlsYXRpb24gc2V0dGluZ3MgdGhhdCdzIHJvdWdobHkgYWZ0 ZXIgNTBrIG1lbWJlcnMuICBUaGlzIHN0aWxsCi0JCSAqIGdpdmVzIHBsZW50eSBvZiBjaGFu Y2VzIGJlZm9yZSB3ZSBnZXQgaW50byByZWFsIHRyb3VibGUuCi0JCSAqLwotCQlpZiAoKE1Y T2Zmc2V0VG9NZW1iZXJQYWdlKG5leHRPZmZzZXQpIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVO VCkgIT0KLQkJCShNWE9mZnNldFRvTWVtYmVyUGFnZShuZXh0T2Zmc2V0ICsgbm1lbWJlcnMp IC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkpCi0JCQlTZW5kUG9zdG1hc3RlclNpZ25hbChQ TVNJR05BTF9TVEFSVF9BVVRPVkFDX0xBVU5DSEVSKTsKLQl9Ci0KLQlpZiAoTXVsdGlYYWN0 U3RhdGUtPm9sZGVzdE9mZnNldEtub3duICYmCi0JCU11bHRpWGFjdE9mZnNldFdvdWxkV3Jh cChNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0LAotCQkJCQkJCQkgbmV4dE9mZnNl dCwKLQkJCQkJCQkJIG5tZW1iZXJzICsgTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UgKiBT TFJVX1BBR0VTX1BFUl9TRUdNRU5UICogT0ZGU0VUX1dBUk5fU0VHTUVOVFMpKQotCQllcmVw b3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VF REVEKSwKLQkJCQkgZXJybXNnX3BsdXJhbCgiZGF0YWJhc2Ugd2l0aCBPSUQgJXUgbXVzdCBi ZSB2YWN1dW1lZCBiZWZvcmUgJWQgbW9yZSBtdWx0aXhhY3QgbWVtYmVyIGlzIHVzZWQiLAot CQkJCQkJCSAgICJkYXRhYmFzZSB3aXRoIE9JRCAldSBtdXN0IGJlIHZhY3V1bWVkIGJlZm9y ZSAlZCBtb3JlIG11bHRpeGFjdCBtZW1iZXJzIGFyZSB1c2VkIiwKLQkJCQkJCQkgICBNdWx0 aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0IC0gbmV4dE9mZnNldCArIG5tZW1iZXJzLAot CQkJCQkJCSAgIE11bHRpWGFjdFN0YXRlLT5vbGRlc3RNdWx0aVhhY3REQiwKLQkJCQkJCQkg ICBNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0IC0gbmV4dE9mZnNldCArIG5tZW1i ZXJzKSwKLQkJCQkgZXJyaGludCgiRXhlY3V0ZSBhIGRhdGFiYXNlLXdpZGUgVkFDVVVNIGlu IHRoYXQgZGF0YWJhc2Ugd2l0aCByZWR1Y2VkIFwidmFjdXVtX211bHRpeGFjdF9mcmVlemVf bWluX2FnZVwiIGFuZCBcInZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZVwiIHNl dHRpbmdzLiIpKSk7Ci0KIAlFeHRlbmRNdWx0aVhhY3RNZW1iZXIobmV4dE9mZnNldCwgbm1l bWJlcnMpOwogCiAJLyoKQEAgLTI3MjEsOCArMjYzNiw2IEBAIFNldE9mZnNldFZhY3V1bUxp bWl0KGJvb2wgaXNfc3RhcnR1cCkKIAlNdWx0aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKIAli b29sCQlvbGRlc3RPZmZzZXRLbm93biA9IGZhbHNlOwogCWJvb2wJCXByZXZPbGRlc3RPZmZz ZXRLbm93bjsKLQlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0U3RvcExpbWl0ID0gMDsKLQlNdWx0 aVhhY3RPZmZzZXQgcHJldk9mZnNldFN0b3BMaW1pdDsKIAogCS8qCiAJICogTkI6IEhhdmUg dG8gcHJldmVudCBjb25jdXJyZW50IHRydW5jYXRpb24sIHdlIG1pZ2h0IG90aGVyd2lzZSB0 cnkgdG8KQEAgLTI3MzcsNyArMjY1MCw2IEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wg aXNfc3RhcnR1cCkKIAluZXh0T2Zmc2V0ID0gTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQ7 CiAJcHJldk9sZGVzdE9mZnNldEtub3duID0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNl dEtub3duOwogCXByZXZPbGRlc3RPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zm c2V0OwotCXByZXZPZmZzZXRTdG9wTGltaXQgPSBNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3Rv cExpbWl0OwogCUFzc2VydChNdWx0aVhhY3RTdGF0ZS0+ZmluaXNoZWRTdGFydHVwKTsKIAlM V0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCkBAIC0yNzY4LDExICsyNjgwLDcg QEAgU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQogCQlvbGRlc3RPZmZz ZXRLbm93biA9CiAJCQlmaW5kX211bHRpeGFjdF9zdGFydChvbGRlc3RNdWx0aVhhY3RJZCwg Jm9sZGVzdE9mZnNldCk7CiAKLQkJaWYgKG9sZGVzdE9mZnNldEtub3duKQotCQkJZXJlcG9y dChERUJVRzEsCi0JCQkJCShlcnJtc2dfaW50ZXJuYWwoIm9sZGVzdCBNdWx0aVhhY3RJZCBt ZW1iZXIgaXMgYXQgb2Zmc2V0ICV1IiwKLQkJCQkJCQkJCSBvbGRlc3RPZmZzZXQpKSk7Ci0J CWVsc2UKKwkJaWYgKCFvbGRlc3RPZmZzZXRLbm93bikKIAkJCWVyZXBvcnQoTE9HLAogCQkJ CQkoZXJybXNnKCJNdWx0aVhhY3QgbWVtYmVyIHdyYXBhcm91bmQgcHJvdGVjdGlvbnMgYXJl IGRpc2FibGVkIGJlY2F1c2Ugb2xkZXN0IGNoZWNrcG9pbnRlZCBNdWx0aVhhY3QgJXUgZG9l cyBub3QgZXhpc3Qgb24gZGlzayIsCiAJCQkJCQkJb2xkZXN0TXVsdGlYYWN0SWQpKSk7CkBA IC0yNzg1LDI0ICsyNjkzLDcgQEAgU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFy dHVwKQogCSAqIG92ZXJydW4gb2Ygb2xkIGRhdGEgaW4gdGhlIG1lbWJlcnMgU0xSVSBhcmVh LiBXZSBjYW4gb25seSBkbyBzbyBpZiB0aGUKIAkgKiBvbGRlc3Qgb2Zmc2V0IGlzIGtub3du IHRob3VnaC4KIAkgKi8KLQlpZiAob2xkZXN0T2Zmc2V0S25vd24pCi0JewotCQkvKiBtb3Zl IGJhY2sgdG8gc3RhcnQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc2VnbWVudCAqLwotCQlvZmZz ZXRTdG9wTGltaXQgPSBvbGRlc3RPZmZzZXQgLSAob2xkZXN0T2Zmc2V0ICUKLQkJCQkJCQkJ CQkgIChNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRSAqIFNMUlVfUEFHRVNfUEVSX1NFR01F TlQpKTsKLQotCQkvKiBhbHdheXMgbGVhdmUgb25lIHNlZ21lbnQgYmVmb3JlIHRoZSB3cmFw YXJvdW5kIHBvaW50ICovCi0JCW9mZnNldFN0b3BMaW1pdCAtPSAoTVVMVElYQUNUX01FTUJF UlNfUEVSX1BBR0UgKiBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKTsKLQotCQlpZiAoIXByZXZP bGRlc3RPZmZzZXRLbm93biAmJiAhaXNfc3RhcnR1cCkKLQkJCWVyZXBvcnQoTE9HLAotCQkJ CQkoZXJybXNnKCJNdWx0aVhhY3QgbWVtYmVyIHdyYXBhcm91bmQgcHJvdGVjdGlvbnMgYXJl IG5vdyBlbmFibGVkIikpKTsKLQotCQllcmVwb3J0KERFQlVHMSwKLQkJCQkoZXJybXNnX2lu dGVybmFsKCJNdWx0aVhhY3QgbWVtYmVyIHN0b3AgbGltaXQgaXMgbm93ICV1IGJhc2VkIG9u IE11bHRpWGFjdCAldSIsCi0JCQkJCQkJCSBvZmZzZXRTdG9wTGltaXQsIG9sZGVzdE11bHRp WGFjdElkKSkpOwotCX0KLQllbHNlIGlmIChwcmV2T2xkZXN0T2Zmc2V0S25vd24pCisJaWYg KHByZXZPbGRlc3RPZmZzZXRLbm93bikKIAl7CiAJCS8qCiAJCSAqIElmIHdlIGZhaWxlZCB0 byBnZXQgdGhlIG9sZGVzdCBvZmZzZXQgdGhpcyB0aW1lLCBidXQgd2UgaGF2ZSBhCkBAIC0y ODEyLDE0ICsyNzAzLDEyIEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1 cCkKIAkJICovCiAJCW9sZGVzdE9mZnNldCA9IHByZXZPbGRlc3RPZmZzZXQ7CiAJCW9sZGVz dE9mZnNldEtub3duID0gdHJ1ZTsKLQkJb2Zmc2V0U3RvcExpbWl0ID0gcHJldk9mZnNldFN0 b3BMaW1pdDsKIAl9CiAKIAkvKiBJbnN0YWxsIHRoZSBjb21wdXRlZCB2YWx1ZXMgKi8KIAlM V0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJTXVsdGlY YWN0U3RhdGUtPm9sZGVzdE9mZnNldCA9IG9sZGVzdE9mZnNldDsKIAlNdWx0aVhhY3RTdGF0 ZS0+b2xkZXN0T2Zmc2V0S25vd24gPSBvbGRlc3RPZmZzZXRLbm93bjsKLQlNdWx0aVhhY3RT dGF0ZS0+b2Zmc2V0U3RvcExpbWl0ID0gb2Zmc2V0U3RvcExpbWl0OwogCUxXTG9ja1JlbGVh c2UoTXVsdGlYYWN0R2VuTG9jayk7CiAKIAkvKgpAQCAtMjgyOSw1NCArMjcxOCw2IEBAIFNl dE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkJKG5leHRPZmZzZXQgLSBv bGRlc3RPZmZzZXQgPiBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKIH0KIAot LyoKLSAqIFJldHVybiB3aGV0aGVyIGFkZGluZyAiZGlzdGFuY2UiIHRvICJzdGFydCIgd291 bGQgbW92ZSBwYXN0ICJib3VuZGFyeSIuCi0gKgotICogV2UgdXNlIHRoaXMgdG8gZGV0ZXJt aW5lIHdoZXRoZXIgdGhlIGFkZGl0aW9uIGlzICJ3cmFwcGluZyBhcm91bmQiIHRoZQotICog Ym91bmRhcnkgcG9pbnQsIGhlbmNlIHRoZSBuYW1lLiAgVGhlIHJlYXNvbiB3ZSBkb24ndCB3 YW50IHRvIHVzZSB0aGUgcmVndWxhcgotICogMl4zMS1tb2R1bG8gYXJpdGhtZXRpYyBoZXJl IGlzIHRoYXQgd2Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSB0aGUgd2hvbGUgb2YKLSAqIHRo ZSAyXjMyLTEgc3BhY2UgaGVyZSwgYWxsb3dpbmcgZm9yIG1vcmUgbXVsdGl4YWN0cyB0aGFu IHdvdWxkIGZpdAotICogb3RoZXJ3aXNlLgotICovCi1zdGF0aWMgYm9vbAotTXVsdGlYYWN0 T2Zmc2V0V291bGRXcmFwKE11bHRpWGFjdE9mZnNldCBib3VuZGFyeSwgTXVsdGlYYWN0T2Zm c2V0IHN0YXJ0LAotCQkJCQkJIHVpbnQzMiBkaXN0YW5jZSkKLXsKLQlNdWx0aVhhY3RPZmZz ZXQgZmluaXNoOwotCi0JLyoKLQkgKiBOb3RlIHRoYXQgb2Zmc2V0IG51bWJlciAwIGlzIG5v dCB1c2VkIChzZWUgR2V0TXVsdGlYYWN0SWRNZW1iZXJzKSwgc28KLQkgKiBpZiB0aGUgYWRk aXRpb24gd3JhcHMgYXJvdW5kIHRoZSBVSU5UX01BWCBib3VuZGFyeSwgc2tpcCB0aGF0IHZh bHVlLgotCSAqLwotCWZpbmlzaCA9IHN0YXJ0ICsgZGlzdGFuY2U7Ci0JaWYgKGZpbmlzaCA8 IHN0YXJ0KQotCQlmaW5pc2grKzsKLQotCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkgKiBXaGVu IHRoZSBib3VuZGFyeSBpcyBudW1lcmljYWxseSBncmVhdGVyIHRoYW4gdGhlIHN0YXJ0aW5n IHBvaW50LCBhbnkKLQkgKiB2YWx1ZSBudW1lcmljYWxseSBiZXR3ZWVuIHRoZSB0d28gaXMg bm90IHdyYXBwZWQ6Ci0JICoKLQkgKgk8LS0tLVMtLS0tQi0tLS0+Ci0JICoJWy0tLSkJCQkg PSBGIHdyYXBwZWQgcGFzdCBCIChhbmQgVUlOVF9NQVgpCi0JICoJCSBbLS0tKQkJID0gRiBu b3Qgd3JhcHBlZAotCSAqCQkJICBbLS0tLV0gPSBGIHdyYXBwZWQgcGFzdCBCCi0JICoKLQkg KiBXaGVuIHRoZSBib3VuZGFyeSBpcyBudW1lcmljYWxseSBsZXNzIHRoYW4gdGhlIHN0YXJ0 aW5nIHBvaW50IChpLmUuIHRoZQotCSAqIFVJTlRfTUFYIHdyYXBhcm91bmQgb2NjdXJzIHNv bWV3aGVyZSBpbiBiZXR3ZWVuKSB0aGVuIGFsbCB2YWx1ZXMgaW4KLQkgKiBiZXR3ZWVuIGFy ZSB3cmFwcGVkOgotCSAqCi0JICoJPC0tLS1CLS0tLVMtLS0tPgotCSAqCVstLS0pCQkJID0g RiBub3Qgd3JhcHBlZCBwYXN0IEIgKGJ1dCB3cmFwcGVkIHBhc3QgVUlOVF9NQVgpCi0JICoJ CSBbLS0tKQkJID0gRiB3cmFwcGVkIHBhc3QgQiAoYW5kIFVJTlRfTUFYKQotCSAqCQkJICBb LS0tLV0gPSBGIG5vdCB3cmFwcGVkCi0JICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCSAqLwotCWlm IChzdGFydCA8IGJvdW5kYXJ5KQotCQlyZXR1cm4gZmluaXNoID49IGJvdW5kYXJ5IHx8IGZp bmlzaCA8IHN0YXJ0OwotCWVsc2UKLQkJcmV0dXJuIGZpbmlzaCA+PSBib3VuZGFyeSAmJiBm aW5pc2ggPCBzdGFydDsKLX0KLQogLyoKICAqIEZpbmQgdGhlIHN0YXJ0aW5nIG9mZnNldCBv ZiB0aGUgZ2l2ZW4gTXVsdGlYYWN0SWQuCiAgKgpAQCAtMjk5OCw4ICsyODM5LDkgQEAgTXVs dGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKHZvaWQpCiAJICogd2UgdHJ5IHRvIGVsaW1p bmF0ZSBmcm9tIHRoZSBzeXN0ZW0gaXMgYmFzZWQgb24gaG93IGZhciB3ZSBhcmUgcGFzdAog CSAqIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQuCiAJICovCi0JZnJhY3Rpb24g PSAoZG91YmxlKSAobWVtYmVycyAtIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQp IC8KLQkJKE1VTFRJWEFDVF9NRU1CRVJfREFOR0VSX1RIUkVTSE9MRCAtIE1VTFRJWEFDVF9N RU1CRVJfU0FGRV9USFJFU0hPTEQpOworCWZyYWN0aW9uID0gKGRvdWJsZSkgKG1lbWJlcnMg LSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKKwlmcmFjdGlvbiAvPSAoZG91 YmxlKSAoTVVMVElYQUNUX01FTUJFUl9EQU5HRVJfVEhSRVNIT0xEIC0gTVVMVElYQUNUX01F TUJFUl9TQUZFX1RIUkVTSE9MRCk7CisKIAl2aWN0aW1fbXVsdGl4YWN0cyA9IG11bHRpeGFj dHMgKiBmcmFjdGlvbjsKIAogCS8qIGZyYWN0aW9uIGNvdWxkIGJlID4gMS4wLCBidXQgbG93 ZXN0IHBvc3NpYmxlIGZyZWV6ZSBhZ2UgaXMgemVybyAqLwpAQCAtMzM0NSw3ICszMTg3LDcg QEAgTXVsdGlYYWN0SWRQcmVjZWRlc09yRXF1YWxzKE11bHRpWGFjdElkIG11bHRpMSwgTXVs dGlYYWN0SWQgbXVsdGkyKQogc3RhdGljIGJvb2wKIE11bHRpWGFjdE9mZnNldFByZWNlZGVz KE11bHRpWGFjdE9mZnNldCBvZmZzZXQxLCBNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0MikKIHsK LQlpbnQzMgkJZGlmZiA9IChpbnQzMikgKG9mZnNldDEgLSBvZmZzZXQyKTsKKwlpbnQ2NAkJ ZGlmZiA9IChpbnQ2NCkgKG9mZnNldDEgLSBvZmZzZXQyKTsKIAogCXJldHVybiAoZGlmZiA8 IDApOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5j IGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCmluZGV4IDk4NWNkMDY4MDI5 Li4xYWYyY2U0YjkzYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNl dHdhbC5jCisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwpAQCAtMjY0 LDcgKzI2NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCQkJY2FzZSAn Tyc6CiAJCQkJZXJybm8gPSAwOwotCQkJCXNldF9teG9mZiA9IHN0cnRvdWwob3B0YXJnLCAm ZW5kcHRyLCAwKTsKKwkJCQlzZXRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZlbmRwdHIs IDApOwogCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBl cnJubyAhPSAwKQogCQkJCXsKIAkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3VtZW50 IGZvciBvcHRpb24gJXMiLCAiLU8iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVzZXR3 YWwvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jhc2ljLnBs CmluZGV4IDk4MjllNDgxMDZlLi5mOGE4ZWVmNDRkMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19yZXNldHdhbC90LzAwMV9iYXNpYy5wbAorKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3Qv MDAxX2Jhc2ljLnBsCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVzaCBAY21kLAogICBzcHJpbnRm KCIlZCwlZCIsIGhleCgkZmlsZXNbMF0pID09IDAgPyAzIDogaGV4KCRmaWxlc1swXSksIGhl eCgkZmlsZXNbLTFdKSk7CiAKIEBmaWxlcyA9IGdldF9zbHJ1X2ZpbGVzKCdwZ19tdWx0aXhh Y3Qvb2Zmc2V0cycpOwotJG11bHQgPSAzMiAqICRibGNrc3ogLyA0OworJG11bHQgPSAzMiAq ICRibGNrc3ogLyA4OwogIyAtbSBhcmd1bWVudCBpcyAibmV3LG9sZCIKIHB1c2ggQGNtZCwg Jy1tJywKICAgc3ByaW50ZigiJWQsJWQiLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL211bHRpeGFjdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCmluZGV4 IDdmZmQyNTZjNzQ0Li45MDU4MzYzNGVjOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL211bHRpeGFjdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaApA QCAtMjcsNyArMjcsNyBAQAogCiAjZGVmaW5lIE11bHRpWGFjdElkSXNWYWxpZChtdWx0aSkg KChtdWx0aSkgIT0gSW52YWxpZE11bHRpWGFjdElkKQogCi0jZGVmaW5lIE1heE11bHRpWGFj dE9mZnNldAkoKE11bHRpWGFjdE9mZnNldCkgMHhGRkZGRkZGRikKKyNkZWZpbmUgTWF4TXVs dGlYYWN0T2Zmc2V0CVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZGRkZGRikKIAogLyoKICAq IFBvc3NpYmxlIG11bHRpeGFjdCBsb2NrIG1vZGVzICgic3RhdHVzIikuICBUaGUgZmlyc3Qg Zm91ciBtb2RlcyBhcmUgZm9yCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jLmggYi9zcmMv aW5jbHVkZS9jLmgKaW5kZXggMTNiYjM5ZmRlZjMuLmI1YjZiOTI2MWIwIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jLmgKKysrIGIvc3JjL2luY2x1ZGUvYy5oCkBAIC02MTUsNyArNjE1 LDcgQEAgdHlwZWRlZiB1aW50MzIgU3ViVHJhbnNhY3Rpb25JZDsKIC8qIE11bHRpWGFjdElk IG11c3QgYmUgZXF1aXZhbGVudCB0byBUcmFuc2FjdGlvbklkLCB0byBmaXQgaW4gdF94bWF4 ICovCiB0eXBlZGVmIFRyYW5zYWN0aW9uSWQgTXVsdGlYYWN0SWQ7CiAKLXR5cGVkZWYgdWlu dDMyIE11bHRpWGFjdE9mZnNldDsKK3R5cGVkZWYgdWludDY0IE11bHRpWGFjdE9mZnNldDsK IAogdHlwZWRlZiB1aW50MzIgQ29tbWFuZElkOwogCi0tIAoyLjM5LjUKCg== --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Disposition: attachment; filename="v10-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Transfer-Encoding: base64 RnJvbSBhODBlMDNlZGJhODhlYjgzNzU0NDM2MTY5MjFiNTllYTBhNDMyMzI2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3By by5ydT4KRGF0ZTogVHVlLCAxMyBBdWcgMjAyNCAxNDo0NDo1MCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjEwIDAzLzE0XSBNYWtlIHBnX3VwZ3JhZGUgY29udmVydCBtdWx0aXhhY3Qgb2Zm c2V0cy4KCkF1dGhvcjogTWF4aW0gT3Jsb3YgPG9ybG92bWdAZ21haWwuY29tPgpBdXRob3I6 IFl1cmEgU29rb2xvdiA8eS5zb2tvbG92QHBvc3RncmVzcHJvLnJ1PgotLS0KIHNyYy9iaW4v cGdfdXBncmFkZS9NYWtlZmlsZSAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ191cGdyYWRlL21l c29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIHwg IDQyICsrLQogc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCB8ICAxNCArLQogc3Jj L2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5jICB8IDUyNyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA1ODAgaW5zZXJ0aW9ucygrKSwgNSBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3JhZGUvc2Vn cmVzaXplLmMKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUgYi9z cmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUKaW5kZXggZjgzZDJiNWQzMDkuLjcwOTA4ZDYz YTMxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUKKysrIGIvc3Jj L2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlCkBAIC0yMSw2ICsyMSw3IEBAIE9CSlMgPSBcCiAJ aW5mby5vIFwKIAlvcHRpb24ubyBcCiAJcGFyYWxsZWwubyBcCisJc2VncmVzaXplLm8gXAog CXBnX3VwZ3JhZGUubyBcCiAJcmVsZmlsZW51bWJlci5vIFwKIAlzZXJ2ZXIubyBcCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX3Vw Z3JhZGUvbWVzb24uYnVpbGQKaW5kZXggM2Q4ODQxOTY3NDYuLjE2Zjg5OGJhMTQ4IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9w Z191cGdyYWRlL21lc29uLmJ1aWxkCkBAIC0xMCw2ICsxMCw3IEBAIHBnX3VwZ3JhZGVfc291 cmNlcyA9IGZpbGVzKAogICAnaW5mby5jJywKICAgJ29wdGlvbi5jJywKICAgJ3BhcmFsbGVs LmMnLAorICAnc2VncmVzaXplLmMnLAogICAncGdfdXBncmFkZS5jJywKICAgJ3JlbGZpbGVu dW1iZXIuYycsCiAgICdzZXJ2ZXIuYycsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3Jh ZGUvcGdfdXBncmFkZS5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYwppbmRl eCA2NjMyMzU4MTZmOC4uMTY1NGU4NzdjMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBn cmFkZS9wZ191cGdyYWRlLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUu YwpAQCAtNzUwLDggKzc1MCw0MiBAQCBjb3B5X3hhY3RfeGxvZ194aWQodm9pZCkKIAlpZiAo b2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBNVUxUSVhBQ1RfRk9STUFUQ0hB TkdFX0NBVF9WRVIgJiYKIAkJbmV3X2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBN VUxUSVhBQ1RfRk9STUFUQ0hBTkdFX0NBVF9WRVIpCiAJewotCQljb3B5X3N1YmRpcl9maWxl cygicGdfbXVsdGl4YWN0L29mZnNldHMiLCAicGdfbXVsdGl4YWN0L29mZnNldHMiKTsKLQkJ Y29weV9zdWJkaXJfZmlsZXMoInBnX211bHRpeGFjdC9tZW1iZXJzIiwgInBnX211bHRpeGFj dC9tZW1iZXJzIik7CisJCS8qCisJCSAqIElmIHRoZSBvbGQgc2VydmVyIGlzIGJlZm9yZSB0 aGUgTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5HRV9DQVRfVkVSCisJCSAqIGl0IG11c3Qg aGF2ZSAzMi1iaXQgbXVsdGl4aWQgb2Zmc2V0cywgdGh1cyBpdCBzaG91bGQgYmUgY29udmVy dGVkLgorCQkgKi8KKwkJaWYgKG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNhdF92ZXIgPCBN VUxUSVhBQ1RPRkZTRVRfRk9STUFUQ0hBTkdFX0NBVF9WRVIgJiYKKwkJCW5ld19jbHVzdGVy LmNvbnRyb2xkYXRhLmNhdF92ZXIgPj0gTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5HRV9D QVRfVkVSKQorCQl7CisJCQlNdWx0aVhhY3RPZmZzZXQJCW9sZGVzdF9vZmZzZXQsCisJCQkJ CQkJCW5leHRfb2Zmc2V0OworCisJCQlyZW1vdmVfbmV3X3N1YmRpcigicGdfbXVsdGl4YWN0 L29mZnNldHMiLCBmYWxzZSk7CisJCQlwcmVwX3N0YXR1cygiQ29udmVydGluZyBwZ19tdWx0 aXhhY3Qvb2Zmc2V0cyB0byA2NC1iaXQiKTsKKwkJCW9sZGVzdF9vZmZzZXQgPSBjb252ZXJ0 X211bHRpeGFjdF9vZmZzZXRzKCk7CisJCQljaGVja19vaygpOworCisJCQlyZW1vdmVfbmV3 X3N1YmRpcigicGdfbXVsdGl4YWN0L21lbWJlcnMiLCBmYWxzZSk7CisJCQlwcmVwX3N0YXR1 cygiQ29udmVydGluZyBwZ19tdWx0aXhhY3QvbWVtYmVycyIpOworCQkJY29udmVydF9tdWx0 aXhhY3RfbWVtYmVycyhvbGRlc3Rfb2Zmc2V0KTsKKwkJCWNoZWNrX29rKCk7CisKKwkJCW5l eHRfb2Zmc2V0ID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X254dG14b2ZmOwor CQkJaWYgKG9sZGVzdF9vZmZzZXQpCisJCQl7CisJCQkJaWYgKG5leHRfb2Zmc2V0IDwgb2xk ZXN0X29mZnNldCkKKwkJCQkJbmV4dF9vZmZzZXQgKz0gKChNdWx0aVhhY3RPZmZzZXQpIDEg PDwgMzIpIC0gMTsKKworCQkJCW5leHRfb2Zmc2V0IC09IG9sZGVzdF9vZmZzZXQgLSAxOwor CisJCQkJb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X254dG14b2ZmID0gbmV4dF9v ZmZzZXQ7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQljb3B5X3N1YmRpcl9maWxlcygi cGdfbXVsdGl4YWN0L29mZnNldHMiLCAicGdfbXVsdGl4YWN0L29mZnNldHMiKTsKKwkJCWNv cHlfc3ViZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3QvbWVtYmVycyIsICJwZ19tdWx0aXhhY3Qv bWVtYmVycyIpOworCQl9CiAKIAkJcHJlcF9zdGF0dXMoIlNldHRpbmcgbmV4dCBtdWx0aXhh Y3QgSUQgYW5kIG9mZnNldCBmb3IgbmV3IGNsdXN0ZXIiKTsKIApAQCAtNzYwLDkgKzc5NCw5 IEBAIGNvcHlfeGFjdF94bG9nX3hpZCh2b2lkKQogCQkgKiBjb3VudGVycyBoZXJlIGFuZCB0 aGUgb2xkZXN0IG11bHRpIHByZXNlbnQgb24gc3lzdGVtLgogCQkgKi8KIAkJZXhlY19wcm9n KFVUSUxJVFlfTE9HX0ZJTEUsIE5VTEwsIHRydWUsIHRydWUsCi0JCQkJICAiXCIlcy9wZ19y ZXNldHdhbFwiIC1PICV1IC1tICV1LCV1IFwiJXNcIiIsCisJCQkJICAiXCIlcy9wZ19yZXNl dHdhbFwiIC1PICVsbHUgLW0gJXUsJXUgXCIlc1wiIiwKIAkJCQkgIG5ld19jbHVzdGVyLmJp bmRpciwKLQkJCQkgIG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZiwK KwkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNo a3BudF9ueHRteG9mZiwKIAkJCQkgIG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9u eHRtdWx0aSwKIAkJCQkgIG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9vbGRzdE11 bHRpLAogCQkJCSAgbmV3X2NsdXN0ZXIucGdkYXRhKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFk ZS5oCmluZGV4IDUzZjY5M2MyZDRiLi4yYzg1ZWMxZTk0OSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdf dXBncmFkZS5oCkBAIC0xMTQsNiArMTE0LDEzIEBAIGV4dGVybiBjaGFyICpvdXRwdXRfZmls ZXNbXTsKICAqLwogI2RlZmluZSBNVUxUSVhBQ1RfRk9STUFUQ0hBTkdFX0NBVF9WRVIgMjAx MzAxMjMxCiAKKy8qCisgKiBTd2ljdGggZnJvbSAzMi1iaXQgdG8gNjQtYml0IGZvciBtdWx0 aXhpZCBvZmZzZXRzLgorICoKKyAqIFhYWDogc2hvdWxkIGJlIGNoYW5nZWQgdG8gdGhlIGFj dHVhbCBDQVRBTE9HX1ZFUlNJT05fTk8gb24gY29tbWl0LgorICovCisjZGVmaW5lIE1VTFRJ WEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAyMDI0MDkwNDEKKwogLyoKICAqIGxh cmdlIG9iamVjdCBjaHVuayBzaXplIGFkZGVkIHRvIHBnX2NvbnRyb2xkYXRhLAogICogY29t bWl0IDVmOTNjMzc4MDVlNzQ4NTQ4ODQ4MDkxNmI0NTg1ZTA5OGQzY2M4ODMKQEAgLTIzMCw3 ICsyMzcsNyBAQCB0eXBlZGVmIHN0cnVjdAogCXVpbnQzMgkJY2hrcG50X254dGVwb2NoOwog CXVpbnQzMgkJY2hrcG50X254dG9pZDsKIAl1aW50MzIJCWNoa3BudF9ueHRtdWx0aTsKLQl1 aW50MzIJCWNoa3BudF9ueHRteG9mZjsKKwl1aW50NjQJCWNoa3BudF9ueHRteG9mZjsKIAl1 aW50MzIJCWNoa3BudF9vbGRzdE11bHRpOwogCXVpbnQzMgkJY2hrcG50X29sZHN0eGlkOwog CXVpbnQzMgkJYWxpZ247CkBAIC01MTUsMyArNTIyLDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlG SUxFCSAgICpmaWxlOwogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIH0gVXBncmFkZVRhc2tS ZXBvcnQ7CisKKy8qIHNlZ3Jlc2l6ZS5jICovCisKK011bHRpWGFjdE9mZnNldAkJY29udmVy dF9tdWx0aXhhY3Rfb2Zmc2V0cyh2b2lkKTsKK3ZvaWQJCQkJY29udmVydF9tdWx0aXhhY3Rf bWVtYmVycyhNdWx0aVhhY3RPZmZzZXQgb2xkZXN0X29mZnNldCk7CmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX3VwZ3JhZGUvc2VncmVzaXplLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvc2Vn cmVzaXplLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjczMDY0 Yzc3ZGViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6 ZS5jCkBAIC0wLDAgKzEsNTI3IEBACisvKgorICoJc2VncmVzaXplLmMKKyAqCisgKglTTFJV IHNlZ21lbnQgcmVzaXplIHV0aWxpdHkKKyAqCisgKglDb3B5cmlnaHQgKGMpIDIwMjQsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKglzcmMvYmluL3BnX3VwZ3Jh ZGUvc2VncmVzaXplLmMKKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKworI2lu Y2x1ZGUgInBnX3VwZ3JhZGUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCisK Ky8qIFNlZSBzbHJ1LmggKi8KKyNkZWZpbmUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVAkJMzIK KworLyoKKyAqIFNvbWUga2luZCBvZiBpdGVyYXRvciBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0 aWN1bGFyIFNMUlUgc2VnbWVudC4gIFRoZSBpZGVhIGlzCisgKiB0byBzcGVjaWZ5IHRoZSBz ZWdtZW50IGFuZCBwYWdlIG51bWJlciBhbmQgdGhlbiBtb3ZlIHRocm91Z2ggdGhlIHBhZ2Vz LgorICovCit0eXBlZGVmIHN0cnVjdCBTbHJ1U2VnU3RhdGUKK3sKKwljaGFyCSAgICpkaXI7 CisJY2hhcgkgICAqZm47CisJRklMRQkgICAqZmlsZTsKKwlpbnQ2NAkJc2Vnbm87CisJdWlu dDY0CQlwYWdlbm87CisJYm9vbAkJbGVhZGluZ19nYXA7Cit9IFNscnVTZWdTdGF0ZTsKKwor LyoKKyAqIE1pcnJvcnMgdGhlIFNscnVGaWxlTmFtZSBmcm9tIHNscnUuYworICovCitzdGF0 aWMgaW5saW5lIGNoYXIgKgorU2xydUZpbGVOYW1lKFNscnVTZWdTdGF0ZSAqc3RhdGUpCit7 CisJQXNzZXJ0KHN0YXRlLT5zZWdubyA+PSAwICYmIHN0YXRlLT5zZWdubyA8PSBJTlQ2NENP TlNUKDB4RkZGRkZGKSk7CisJcmV0dXJuIHBzcHJpbnRmKCIlcy8lMDRYIiwgc3RhdGUtPmRp ciwgKHVuc2lnbmVkIGludCkgc3RhdGUtPnNlZ25vKTsKK30KKworLyoKKyAqIENyZWF0ZSBu ZXcgU0xSVSBzZWdtZW50IGZpbGUuCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVfc2VnbWVu dChTbHJ1U2VnU3RhdGUgKnN0YXRlKQoreworCUFzc2VydChzdGF0ZS0+Zm4gPT0gTlVMTCk7 CisJQXNzZXJ0KHN0YXRlLT5maWxlID09IE5VTEwpOworCisJc3RhdGUtPmZuID0gU2xydUZp bGVOYW1lKHN0YXRlKTsKKwlzdGF0ZS0+ZmlsZSA9IGZvcGVuKHN0YXRlLT5mbiwgIndiIik7 CisJaWYgKCFzdGF0ZS0+ZmlsZSkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZmls ZSBcIiVzXCI6ICVtIiwgc3RhdGUtPmZuKTsKK30KKworLyoKKyAqIE9wZW4gZXhpc3Rpbmcg U0xSVSBzZWdtZW50IGZpbGUuCisgKi8KK3N0YXRpYyB2b2lkCitvcGVuX3NlZ21lbnQoU2xy dVNlZ1N0YXRlICpzdGF0ZSkKK3sKKwlBc3NlcnQoc3RhdGUtPmZuID09IE5VTEwpOworCUFz c2VydChzdGF0ZS0+ZmlsZSA9PSBOVUxMKTsKKworCXN0YXRlLT5mbiA9IFNscnVGaWxlTmFt ZShzdGF0ZSk7CisJc3RhdGUtPmZpbGUgPSBmb3BlbihzdGF0ZS0+Zm4sICJyYiIpOworCWlm ICghc3RhdGUtPmZpbGUpCisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNc IjogJW0iLCBzdGF0ZS0+Zm4pOworfQorCisvKgorICogQ2xvc2UgU0xSVSBzZWdtZW50IGZp bGUuCisgKi8KK3N0YXRpYyB2b2lkCitjbG9zZV9zZWdtZW50KFNscnVTZWdTdGF0ZSAqc3Rh dGUpCit7CisJaWYgKHN0YXRlLT5maWxlKQorCXsKKwkJZmNsb3NlKHN0YXRlLT5maWxlKTsK KwkJc3RhdGUtPmZpbGUgPSBOVUxMOworCX0KKworCWlmIChzdGF0ZS0+Zm4pCisJeworCQlw ZnJlZShzdGF0ZS0+Zm4pOworCQlzdGF0ZS0+Zm4gPSBOVUxMOworCX0KK30KKworLyoKKyAq IFJlYWQgbmV4dCBwYWdlIGZyb20gdGhlIG9sZCAzMi1iaXQgb2Zmc2V0IHNlZ21lbnQgZmls ZS4KKyAqLworc3RhdGljIGludAorcmVhZF9vbGRfc2VnbWVudF9wYWdlKFNscnVTZWdTdGF0 ZSAqc3RhdGUsIHZvaWQgKmJ1ZiwgYm9vbCAqZW1wdHkpCit7CisJaW50CQlsZW47CisKKwkv KiBPcGVuIG5leHQgc2VnbWVudCBmaWxlLCBpZiBuZWVkZWQuICovCisJaWYgKCFzdGF0ZS0+ Zm4pCisJeworCQlpZiAoIXN0YXRlLT5zZWdubykKKwkJCXN0YXRlLT5sZWFkaW5nX2dhcCA9 IHRydWU7CisKKwkJb3Blbl9zZWdtZW50KHN0YXRlKTsKKworCQkvKiBTZXQgcG9zaXRpb24g dG8gdGhlIG5lZWRlZCBwYWdlLiAqLworCQlpZiAoc3RhdGUtPnBhZ2VubyA+IDAgJiYKKwkJ CWZzZWVrKHN0YXRlLT5maWxlLCBzdGF0ZS0+cGFnZW5vICogQkxDS1NaLCBTRUVLX1NFVCkp CisJCXsKKwkJCWNsb3NlX3NlZ21lbnQoc3RhdGUpOworCQl9CisJfQorCisJaWYgKHN0YXRl LT5maWxlKQorCXsKKwkJLyogU2VnbWVudCBmaWxlIGRvIGV4aXN0cywgcmVhZCBwYWdlIGZy b20gaXQuICovCisJCXN0YXRlLT5sZWFkaW5nX2dhcCA9IGZhbHNlOworCisJCWxlbiA9IGZy ZWFkKGJ1Ziwgc2l6ZW9mKGNoYXIpLCBCTENLU1osIHN0YXRlLT5maWxlKTsKKworCQkvKiBB cmUgd2UgZG9uZSBvciB3YXMgdGhlcmUgYW4gZXJyb3I/ICovCisJCWlmIChsZW4gPD0gMCkK KwkJeworCQkJaWYgKGZlcnJvcihzdGF0ZS0+ZmlsZSkpCisJCQkJcGdfZmF0YWwoImVycm9y IHJlYWRpbmcgZmlsZSBcIiVzXCI6ICVtIiwgc3RhdGUtPmZuKTsKKworCQkJaWYgKGZlb2Yo c3RhdGUtPmZpbGUpKQorCQkJeworCQkJCSplbXB0eSA9IHRydWU7CisJCQkJbGVuID0gLTE7 CisKKwkJCQljbG9zZV9zZWdtZW50KHN0YXRlKTsKKwkJCX0KKwkJfQorCQllbHNlCisJCQkq ZW1wdHkgPSBmYWxzZTsKKwl9CisJZWxzZSBpZiAoIXN0YXRlLT5sZWFkaW5nX2dhcCkKKwl7 CisJCS8qIFdlIHJlYWNoZWQgdGhlIGxhc3Qgc2VnbWVudC4gKi8KKwkJbGVuID0gLTE7CisJ CSplbXB0eSA9IHRydWU7CisJfQorCWVsc2UKKwl7CisJCS8qIFNraXAgZmV3IGZpcnN0IHNl Z21lbnRzIGlmIHRoZXkgd2VyZSBmcm96ZW4gYW5kIHJlbW92ZWQuICovCisJCWxlbiA9IEJM Q0tTWjsKKwkJKmVtcHR5ID0gdHJ1ZTsKKwl9CisKKwlpZiAoKytzdGF0ZS0+cGFnZW5vID49 IFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpCisJeworCQkvKiBTdGFydCBhIG5ldyBzZWdtZW50 LiAqLworCQlzdGF0ZS0+c2Vnbm8rKzsKKwkJc3RhdGUtPnBhZ2VubyA9IDA7CisKKwkJY2xv c2Vfc2VnbWVudChzdGF0ZSk7CisJfQorCisJcmV0dXJuIGxlbjsKK30KKworLyoKKyAqIFdy aXRlIG5leHQgcGFnZSB0byB0aGUgbmV3IDY0LWJpdCBvZmZzZXQgc2VnbWVudCBmaWxlLgor ICovCitzdGF0aWMgdm9pZAord3JpdGVfbmV3X3NlZ21lbnRfcGFnZShTbHJ1U2VnU3RhdGUg KnN0YXRlLCB2b2lkICpidWYpCit7CisJLyoKKwkgKiBDcmVhdGUgYSBuZXcgc2VnbWVudCBm aWxlIGlmIHdlIHN0aWxsIGRpZG4ndC4gIENyZWF0aW9uIGlzCisJICogcG9zdHBvbmVkIHVu dGlsIHRoZSBmaXJzdCBub24tZW1wdHkgcGFnZSBpcyBmb3VuZC4gIFRoaXMgaGVscHMKKwkg KiBub3QgdG8gY3JlYXRlIGNvbXBsZXRlbHkgZW1wdHkgc2VnbWVudHMuCisJICovCisJaWYg KCFzdGF0ZS0+ZmlsZSkKKwl7CisJCWNyZWF0ZV9zZWdtZW50KHN0YXRlKTsKKworCQkvKiBX cml0ZSB6ZXJvZXMgdG8gdGhlIHByZXZpb3VzbHkgc2tpcHBlZCBwcmVmaXguICovCisJCWlm IChzdGF0ZS0+cGFnZW5vID4gMCkKKwkJeworCQkJY2hhcgkJemVyb2J1ZltCTENLU1pdID0g ezB9OworCisJCQlmb3IgKGludDY0IGkgPSAwOyBpIDwgc3RhdGUtPnBhZ2VubzsgaSsrKQor CQkJeworCQkJCWlmIChmd3JpdGUoemVyb2J1Ziwgc2l6ZW9mKGNoYXIpLCBCTENLU1osIHN0 YXRlLT5maWxlKSAhPSBCTENLU1opCisJCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgd3JpdGUg ZmlsZSBcIiVzXCI6ICVtIiwgc3RhdGUtPmZuKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIFdy aXRlIHBhZ2UgdG8gdGhlIG5ldyBzZWdtZW50IChpZiBpdCB3YXMgY3JlYXRlZCkuICovCisJ aWYgKHN0YXRlLT5maWxlKQorCXsKKwkJaWYgKGZ3cml0ZShidWYsIHNpemVvZihjaGFyKSwg QkxDS1NaLCBzdGF0ZS0+ZmlsZSkgIT0gQkxDS1NaKQorCQkJcGdfZmF0YWwoImNvdWxkIG5v dCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOworCX0KKworCS8qCisJICog RGlkIHdlIHJlYWNoIHRoZSBtYXhpbXVtIHBhZ2UgbnVtYmVyPyAgVGhlbiBjbG9zZSBzZWdt ZW50IGZpbGUKKwkgKiBhbmQgY3JlYXRlIGEgbmV3IG9uZSBvbiB0aGUgbmV4dCBpdGVyYXRp b24uCisJICovCisJaWYgKCsrc3RhdGUtPnBhZ2VubyA+PSBTTFJVX1BBR0VTX1BFUl9TRUdN RU5UKQorCXsKKwkJLyogU3RhcnQgYSBuZXcgc2VnbWVudC4gKi8KKwkJc3RhdGUtPnNlZ25v Kys7CisJCXN0YXRlLT5wYWdlbm8gPSAwOworCisJCWNsb3NlX3NlZ21lbnQoc3RhdGUpOwor CX0KK30KKwordHlwZWRlZiB1aW50MzIgTXVsdGlYYWN0T2Zmc2V0T2xkOworCisjZGVmaW5l IE1heE11bHRpWGFjdE9mZnNldE9sZAkoKE11bHRpWGFjdE9mZnNldE9sZCkgMHhGRkZGRkZG RikKKworI2RlZmluZSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTEQgKEJMQ0tTWiAv IHNpemVvZihNdWx0aVhhY3RPZmZzZXRPbGQpKQorI2RlZmluZSBNVUxUSVhBQ1RfT0ZGU0VU U19QRVJfUEFHRV9ORVcgKEJMQ0tTWiAvIHNpemVvZihNdWx0aVhhY3RPZmZzZXQpKQorCisv KgorICogQ29udmVydCBwZ19tdWx0aXhhY3Qvb2Zmc2V0cyBzZWdtZW50cyBhbmQgcmV0dXJu IG9sZGVzdCBtdWx0aSBvZmZzZXQuCisgKi8KK011bHRpWGFjdE9mZnNldAorY29udmVydF9t dWx0aXhhY3Rfb2Zmc2V0cyh2b2lkKQoreworCVNscnVTZWdTdGF0ZQkJb2xkc2VnID0gezB9 LAorCQkJCQkJbmV3c2VnID0gezB9OworCU11bHRpWGFjdE9mZnNldE9sZAlvbGRidWZbTVVM VElYQUNUX09GRlNFVFNfUEVSX1BBR0VfT0xEXSA9IHswfTsKKwlNdWx0aVhhY3RPZmZzZXQJ CW5ld2J1ZltNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9ORVddID0gezB9LAorCQkJCQkJ b2xkZXN0X29mZnNldCA9IDA7CisJdWludDY0CQkJCW9sZGVzdF9tdWx0aSA9IG9sZF9jbHVz dGVyLmNvbnRyb2xkYXRhLmNoa3BudF9vbGRzdE11bHRpLAorCQkJCQkJbmV4dF9tdWx0aSA9 IG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRtdWx0aSwKKwkJCQkJCW11bHRp LAorCQkJCQkJb2xkX2VudHJ5LAorCQkJCQkJbmV3X2VudHJ5OworCWJvb2wJCQkJb2xkZXN0 X29mZnNldF9rbm93biA9IGZhbHNlOworCisJb2xkc2VnLmRpciA9IHBzcHJpbnRmKCIlcy9w Z19tdWx0aXhhY3Qvb2Zmc2V0cyIsIG9sZF9jbHVzdGVyLnBnZGF0YSk7CisJbmV3c2VnLmRp ciA9IHBzcHJpbnRmKCIlcy9wZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsIG5ld19jbHVzdGVyLnBn ZGF0YSk7CisKKwlvbGRfZW50cnkgPSBvbGRlc3RfbXVsdGkgJSBNVUxUSVhBQ1RfT0ZGU0VU U19QRVJfUEFHRV9PTEQ7CisJb2xkc2VnLnBhZ2VubyA9IG9sZGVzdF9tdWx0aSAvIE1VTFRJ WEFDVF9PRkZTRVRTX1BFUl9QQUdFX09MRDsKKwlvbGRzZWcuc2Vnbm8gPSBvbGRzZWcucGFn ZW5vIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKKwlvbGRzZWcucGFnZW5vICU9IFNMUlVf UEFHRVNfUEVSX1NFR01FTlQ7CisKKwluZXdfZW50cnkgPSBvbGRlc3RfbXVsdGkgJSBNVUxU SVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9ORVc7CisJbmV3c2VnLnBhZ2VubyA9IG9sZGVzdF9t dWx0aSAvIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVzsKKwluZXdzZWcuc2Vnbm8g PSBuZXdzZWcucGFnZW5vIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKKwluZXdzZWcucGFn ZW5vICU9IFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CisKKwlpZiAobmV4dF9tdWx0aSA8IG9s ZGVzdF9tdWx0aSkKKwkJbmV4dF9tdWx0aSArPSAodWludDY0KSAxIDw8IDMyOwkvKiB3cmFw YXJvdW5kICovCisKKwkvKiBDb3B5IG11bHRpIG9mZnNldHMgcmVhZGluZyBvbmx5IG5lZWRl ZCBzZWdtZW50IHBhZ2VzICovCisJZm9yIChtdWx0aSA9IG9sZGVzdF9tdWx0aTsgbXVsdGkg PCBuZXh0X211bHRpOyBvbGRfZW50cnkgPSAwKQorCXsKKwkJaW50CQlvbGRsZW47CisJCWJv b2wJZW1wdHk7CisKKwkJLyogSGFuZGxlIHBvc3NpYmxlIHNlZ21lbnQgd3JhcGFyb3VuZCAq LworI2RlZmluZSBPTERfT0ZGU0VUX1NFR05PX01BWAlcCisJKE1heE11bHRpWGFjdElkIC8g TVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0VfT0xEIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVO VCkKKwkJaWYgKG9sZHNlZy5zZWdubyA+IE9MRF9PRkZTRVRfU0VHTk9fTUFYKQorCQl7CisJ CQlvbGRzZWcuc2Vnbm8gPSAwOworCQkJb2xkc2VnLnBhZ2VubyA9IDA7CisJCX0KKworCQlv bGRsZW4gPSByZWFkX29sZF9zZWdtZW50X3BhZ2UoJm9sZHNlZywgb2xkYnVmLCAmZW1wdHkp OworCQlpZiAoZW1wdHkgfHwgb2xkbGVuICE9IEJMQ0tTWikKKwkJCXBnX2ZhdGFsKCJjYW5u b3QgcmVhZCBwYWdlICVsbHUgZnJvbSBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkgKHVuc2ln bmVkIGxvbmcgbG9uZykgb2xkc2VnLnBhZ2Vubywgb2xkc2VnLmZuKTsKKworCQkvKiBTYXZl IG9sZGVzdCBtdWx0aSBvZmZzZXQgKi8KKwkJaWYgKCFvbGRlc3Rfb2Zmc2V0X2tub3duKQor CQl7CisJCQlvbGRlc3Rfb2Zmc2V0ID0gb2xkYnVmW29sZF9lbnRyeV07CisJCQlvbGRlc3Rf b2Zmc2V0X2tub3duID0gdHJ1ZTsKKwkJfQorCisJCS8qIFNraXAgd3JhcHBlZC1hcm91bmQg aW52YWxpZCBNdWx0aVhhY3RJZHMgKi8KKwkJaWYgKG11bHRpID09ICh1aW50NjQpIDEgPDwg MzIpCisJCXsKKwkJCUFzc2VydChvbGRzZWcuc2Vnbm8gPT0gMCk7CisJCQlBc3NlcnQob2xk c2VnLnBhZ2VubyA9PSAxKTsKKwkJCUFzc2VydChvbGRfZW50cnkgPT0gMCk7CisJCQlBc3Nl cnQobmV3X2VudHJ5ID09IDApOworCisJCQltdWx0aSArPSBGaXJzdE11bHRpWGFjdElkOwor CQkJb2xkX2VudHJ5ID0gRmlyc3RNdWx0aVhhY3RJZDsKKwkJCW5ld19lbnRyeSA9IEZpcnN0 TXVsdGlYYWN0SWQ7CisJCX0KKworCQkvKiBDb3B5IGVudHJpZXMgdG8gdGhlIG5ldyBwYWdl ICovCisJCWZvciAoOyBtdWx0aSA8IG5leHRfbXVsdGkgJiYgb2xkX2VudHJ5IDwgTVVMVElY QUNUX09GRlNFVFNfUEVSX1BBR0VfT0xEOworCQkJIG11bHRpKyssIG9sZF9lbnRyeSsrKQor CQl7CisJCQlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0ID0gb2xkYnVmW29sZF9lbnRyeV07CisK KwkJCS8qIEhhbmRsZSBwb3NzaWJsZSBvZmZzZXQgd3JhcGFyb3VuZCAoMSBiZWNvbWVzIDJe MzIpICovCisJCQlpZiAob2Zmc2V0IDwgb2xkZXN0X29mZnNldCkKKwkJCQlvZmZzZXQgKz0g KCh1aW50NjQpIDEgPDwgMzIpIC0gMTsKKworCQkJLyogU3VidHJhY3Qgb2xkZXN0X29mZnNl dCwgc28gbmV3IG9mZnNldHMgd2lsbCBzdGFydCBmcm9tIDEgKi8KKwkJCW5ld2J1ZltuZXdf ZW50cnkrK10gPSBvZmZzZXQgLSBvbGRlc3Rfb2Zmc2V0ICsgMTsKKworCQkJaWYgKG5ld19l bnRyeSA+PSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9ORVcpCisJCQl7CisJCQkJLyog SGFuZGxlIHBvc3NpYmxlIHNlZ21lbnQgd3JhcGFyb3VuZCAqLworI2RlZmluZSBORVdfT0ZG U0VUX1NFR05PX01BWAlcCisJKE1heE11bHRpWGFjdElkIC8gTVVMVElYQUNUX09GRlNFVFNf UEVSX1BBR0VfTkVXIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkKKwkJCQlpZiAobmV3c2Vn LnNlZ25vID4gTkVXX09GRlNFVF9TRUdOT19NQVgpCisJCQkJeworCQkJCQluZXdzZWcuc2Vn bm8gPSAwOworCQkJCQluZXdzZWcucGFnZW5vID0gMDsKKwkJCQl9CisKKwkJCQkvKiBXcml0 ZSBuZXcgcGFnZSAqLworCQkJCXdyaXRlX25ld19zZWdtZW50X3BhZ2UoJm5ld3NlZywgbmV3 YnVmKTsKKwkJCQluZXdfZW50cnkgPSAwOworCQkJfQorCQl9CisJfQorCisJLyogV3JpdGUg dGhlIGxhc3QgaW5jb21wbGV0ZSBwYWdlICovCisJaWYgKG5ld19lbnRyeSA+IDAgfHwgb2xk ZXN0X211bHRpID09IG5leHRfbXVsdGkpCisJeworCQltZW1zZXQoJm5ld2J1ZltuZXdfZW50 cnldLCAwLAorCQkJICAgc2l6ZW9mKG5ld2J1ZlswXSkgKiAoTVVMVElYQUNUX09GRlNFVFNf UEVSX1BBR0VfTkVXIC0gbmV3X2VudHJ5KSk7CisJCXdyaXRlX25ld19zZWdtZW50X3BhZ2Uo Jm5ld3NlZywgbmV3YnVmKTsKKwl9CisKKwkvKiBVc2UgbmV4dF9vZmZzZXQgYXMgb2xkZXN0 X29mZnNldCwgaWYgb2xkZXN0X211bHRpID09IG5leHRfbXVsdGkgKi8KKwlpZiAoIW9sZGVz dF9vZmZzZXRfa25vd24pCisJeworCQlBc3NlcnQob2xkZXN0X211bHRpID09IG5leHRfbXVs dGkpOworCQlvbGRlc3Rfb2Zmc2V0ID0gKE11bHRpWGFjdE9mZnNldCkgb2xkX2NsdXN0ZXIu Y29udHJvbGRhdGEuY2hrcG50X254dG14b2ZmOworCX0KKworCS8qIFJlbGVhc2UgcmVzb3Vy Y2VzICovCisJY2xvc2Vfc2VnbWVudCgmb2xkc2VnKTsKKwljbG9zZV9zZWdtZW50KCZuZXdz ZWcpOworCisJcGZyZWUob2xkc2VnLmRpcik7CisJcGZyZWUobmV3c2VnLmRpcik7CisKKwly ZXR1cm4gb2xkZXN0X29mZnNldDsKK30KKworI2RlZmluZSBNWEFDVF9NRU1CRVJTX0ZMQUdf QllURVMJCQkxCisKKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUlNfUEVSX0dST1VQCQkJNAor I2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRQkJCVwKKwkoTVVMVElYQUNUX01F TUJFUlNfUEVSX0dST1VQICogKHNpemVvZihUcmFuc2FjdGlvbklkKSArIE1YQUNUX01FTUJF UlNfRkxBR19CWVRFUykpCisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BB R0UJCVwKKwkoQkxDS1NaIC8gTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUpCisKKyNkZWZp bmUgTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UJCQkJXAorCShNVUxUSVhBQ1RfTUVNQkVS U19QRVJfR1JPVVAgKiBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFKQorI2RlZmlu ZSBNVUxUSVhBQ1RfTUVNQkVSX0ZMQUdfQllURVNfUEVSX0dST1VQCVwKKwkoTVhBQ1RfTUVN QkVSU19GTEFHX0JZVEVTICogTVVMVElYQUNUX01FTUJFUlNfUEVSX0dST1VQKQorCit0eXBl ZGVmIHN0cnVjdCBNdWx0aVhhY3RNZW1iZXJzQ3R4Cit7CisJU2xydVNlZ1N0YXRlCXNlZzsK KwljaGFyCQkJYnVmW0JMQ0tTWl07CisJaW50CQkJCWdyb3VwOworCWludAkJCQltZW1iZXI7 CisJY2hhcgkJICAgKmZsYWc7CisJVHJhbnNhY3Rpb25JZCAgKnhpZDsKK30gTXVsdGlYYWN0 TWVtYmVyc0N0eDsKKworc3RhdGljIHZvaWQKK011bHRpWGFjdE1lbWJlcnNDdHhJbml0KE11 bHRpWGFjdE1lbWJlcnNDdHggKmN0eCkKK3sKKwljdHgtPnNlZy5kaXIgPSBwc3ByaW50Zigi JXMvcGdfbXVsdGl4YWN0L21lbWJlcnMiLCBuZXdfY2x1c3Rlci5wZ2RhdGEpOworCisJY3R4 LT5ncm91cCA9IDA7CisJY3R4LT5tZW1iZXIgPSAxOwkJLyogc2tpcCBpbnZhbGlkIHplcm8g b2Zmc2V0ICovCisKKwljdHgtPmZsYWcgPSAoY2hhciAqKSBjdHgtPmJ1ZiArIGN0eC0+Z3Jv dXAgKiBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRTsKKwljdHgtPnhpZCA9IChUcmFuc2Fj dGlvbklkICopKGN0eC0+ZmxhZyArIE1YQUNUX01FTUJFUlNfRkxBR19CWVRFUyAqIE1VTFRJ WEFDVF9NRU1CRVJTX1BFUl9HUk9VUCk7CisKKwljdHgtPmZsYWcgKz0gY3R4LT5tZW1iZXI7 CisJY3R4LT54aWQgKz0gY3R4LT5tZW1iZXI7Cit9CisKK3N0YXRpYyB2b2lkCitNdWx0aVhh Y3RNZW1iZXJzQ3R4QWRkKE11bHRpWGFjdE1lbWJlcnNDdHggKmN0eCwgY2hhciBmbGFnLCBU cmFuc2FjdGlvbklkIHhpZCkKK3sKKwkvKiBDb3B5IG1lbWJlcidzIHhpZCBhbmQgZmxhZ3Mg dG8gdGhlIG5ldyBwYWdlICovCisJKmN0eC0+ZmxhZysrID0gZmxhZzsKKwkqY3R4LT54aWQr KyA9IHhpZDsKKworCWlmICgrK2N0eC0+bWVtYmVyIDwgTVVMVElYQUNUX01FTUJFUlNfUEVS X0dST1VQKQorCQlyZXR1cm47CisKKwkvKiBTdGFydCBuZXh0IG1lbWJlciBncm91cCAqLwor CWN0eC0+bWVtYmVyID0gMDsKKworCWlmICgrK2N0eC0+Z3JvdXAgPj0gTVVMVElYQUNUX01F TUJFUkdST1VQU19QRVJfUEFHRSkKKwl7CisJCS8qIFdyaXRlIGN1cnJlbnQgcGFnZSBhbmQg c3RhcnQgbmV3ICovCisJCXdyaXRlX25ld19zZWdtZW50X3BhZ2UoJmN0eC0+c2VnLCBjdHgt PmJ1Zik7CisKKwkJY3R4LT5ncm91cCA9IDA7CisJCW1lbXNldChjdHgtPmJ1ZiwgMCwgQkxD S1NaKTsKKwl9CisKKwljdHgtPmZsYWcgPSAoY2hhciAqKSBjdHgtPmJ1ZiArIGN0eC0+Z3Jv dXAgKiBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRTsKKwljdHgtPnhpZCA9IChUcmFuc2Fj dGlvbklkICopKGN0eC0+ZmxhZyArIE1YQUNUX01FTUJFUlNfRkxBR19CWVRFUyAqIE1VTFRJ WEFDVF9NRU1CRVJTX1BFUl9HUk9VUCk7Cit9CisKK3N0YXRpYyB2b2lkCitNdWx0aVhhY3RN ZW1iZXJzQ3R4RmluaXQoTXVsdGlYYWN0TWVtYmVyc0N0eCAqY3R4KQoreworCWlmIChjdHgt PmZsYWcgPiAoY2hhciAqKSBjdHgtPmJ1ZikKKwkJd3JpdGVfbmV3X3NlZ21lbnRfcGFnZSgm Y3R4LT5zZWcsIGN0eC0+YnVmKTsKKworCWNsb3NlX3NlZ21lbnQoJmN0eC0+c2VnKTsKKwor CXBmcmVlKGN0eC0+c2VnLmRpcik7Cit9CisKKy8qCisgKiBDb252ZXJ0IHBnX211bHRpeGFj dC9tZW1iZXJzIHNlZ21lbnRzLCBvZmZzZXRzIHdpbGwgc3RhcnQgZnJvbSAxLgorICoKKyAq Lwordm9pZAorY29udmVydF9tdWx0aXhhY3RfbWVtYmVycyhNdWx0aVhhY3RPZmZzZXQgb2xk ZXN0X29mZnNldCkKK3sKKwlNdWx0aVhhY3RPZmZzZXQJCQluZXh0X29mZnNldCwKKwkJCQkJ CQlvZmZzZXQ7CisJU2xydVNlZ1N0YXRlCQkJb2xkc2VnID0gezB9OworCWNoYXIJCQkJCW9s ZGJ1ZltCTENLU1pdID0gezB9OworCWludAkJCQkJCW9sZGlkeDsKKwlNdWx0aVhhY3RNZW1i ZXJzQ3R4CQluZXdjdHggPSB7MH07CisKKwlvbGRzZWcuZGlyID0gcHNwcmludGYoIiVzL3Bn X211bHRpeGFjdC9tZW1iZXJzIiwgb2xkX2NsdXN0ZXIucGdkYXRhKTsKKworCW5leHRfb2Zm c2V0ID0gKE11bHRpWGFjdE9mZnNldCkgb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50 X254dG14b2ZmOworCWlmIChuZXh0X29mZnNldCA8IG9sZGVzdF9vZmZzZXQpCisJCW5leHRf b2Zmc2V0ICs9ICgodWludDY0KSAxIDw8IDMyKSAtIDE7CisKKwkvKiBJbml0aWFsaXplIHRo ZSBvbGQgc3RhcnRpbmcgcG9zaXRpb24gKi8KKwlvbGRzZWcucGFnZW5vID0gb2xkZXN0X29m ZnNldCAvIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFOworCW9sZHNlZy5zZWdubyA9IG9s ZHNlZy5wYWdlbm8gLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworCW9sZHNlZy5wYWdlbm8g JT0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKKworCS8qIEluaXRpYWxpemUgbmV3IHN0YXJ0 aW5nIHBvc2l0aW9uICovCisJTXVsdGlYYWN0TWVtYmVyc0N0eEluaXQoJm5ld2N0eCk7CisK KwkvKiBJdGVyYXRlIHRocm91Z2ggdGhlIG9yaWdpbmFsIGRpcmVjdG9yeSAqLworCW9sZGlk eCA9IG9sZGVzdF9vZmZzZXQgJSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRTsKKwlmb3Ig KG9mZnNldCA9IG9sZGVzdF9vZmZzZXQ7IG9mZnNldCA8IG5leHRfb2Zmc2V0OykKKwl7CisJ CWJvb2wJZW1wdHk7CisJCWludAkJb2xkbGVuOworCQlpbnQJCW5ncm91cHM7CisJCWludAkJ b2xkZ3JvdXA7CisJCWludAkJb2xkbWVtYmVyOworCisJCW9sZGxlbiA9IHJlYWRfb2xkX3Nl Z21lbnRfcGFnZSgmb2xkc2VnLCBvbGRidWYsICZlbXB0eSk7CisJCWlmIChlbXB0eSB8fCBv bGRsZW4gIT0gQkxDS1NaKQorCQkJcGdfZmF0YWwoImNhbm5vdCByZWFkIHBhZ2UgJWxsdSBm cm9tIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBvbGRz ZWcucGFnZW5vLCBvbGRzZWcuZm4pOworCisJCS8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgb2xk IG1lbWJlciBncm91cHMgKi8KKwkJbmdyb3VwcyA9IG9sZGxlbiAvIE1VTFRJWEFDVF9NRU1C RVJHUk9VUF9TSVpFOworCQlvbGRtZW1iZXIgPSBvbGRpZHggJSBNVUxUSVhBQ1RfTUVNQkVS U19QRVJfR1JPVVA7CisJCW9sZGdyb3VwID0gb2xkaWR4IC8gTVVMVElYQUNUX01FTUJFUlNf UEVSX0dST1VQOworCQl3aGlsZSAob2xkZ3JvdXAgPCBuZ3JvdXBzICYmIG9mZnNldCA8IG5l eHRfb2Zmc2V0KQorCQl7CisJCQljaGFyCQkgICAqb2xkZmxhZzsKKwkJCVRyYW5zYWN0aW9u SWQgICpvbGR4aWQ7CisJCQlpbnQJCQkJaTsKKworCQkJb2xkZmxhZyA9IChjaGFyICopIG9s ZGJ1ZiArIG9sZGdyb3VwICogTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkU7CisJCQlvbGR4 aWQgPSAoVHJhbnNhY3Rpb25JZCAqKShvbGRmbGFnICsgTVVMVElYQUNUX01FTUJFUl9GTEFH X0JZVEVTX1BFUl9HUk9VUCk7CisKKwkJCW9sZHhpZCArPSBvbGRtZW1iZXI7CisJCQlvbGRm bGFnICs9IG9sZG1lbWJlcjsKKworCQkJLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBvbGQgbWVt YmVycyAqLworCQkJZm9yIChpID0gb2xkbWVtYmVyOworCQkJCSBpIDwgTVVMVElYQUNUX01F TUJFUlNfUEVSX0dST1VQICYmIG9mZnNldCA8IG5leHRfb2Zmc2V0OworCQkJCSBpKyspCisJ CQl7CisJCQkJTXVsdGlYYWN0TWVtYmVyc0N0eEFkZCgmbmV3Y3R4LCAqb2xkZmxhZysrLCAq b2xkeGlkKyspOworCisJCQkJaWYgKCsrb2Zmc2V0ID09ICh1aW50NjQpIDEgPDwgMzIpCisJ CQkJeworCQkJCQlBc3NlcnQoaSA9PSBNYXhNdWx0aVhhY3RPZmZzZXRPbGQgJSBNVUxUSVhB Q1RfTUVNQkVSU19QRVJfR1JPVVApOworCQkJCQlnb3RvIHdyYXBhcm91bmQ7CisJCQkJfQor CQkJfQorCisJCQlvbGRncm91cCsrOworCQkJb2xkbWVtYmVyID0gMDsKKwkJfQorCisJCW9s ZGlkeCA9IDA7CisKKwkJY29udGludWU7CisKK3dyYXBhcm91bmQ6CisjZGVmaW5lIFNFR05P X01BWAlNYXhNdWx0aVhhY3RPZmZzZXRPbGQgLyBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFH RSAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQKKyNkZWZpbmUgUEFHRU5PX01BWAlNYXhNdWx0 aVhhY3RPZmZzZXRPbGQgLyBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRSAlIFNMUlVfUEFH RVNfUEVSX1NFR01FTlQKKwkJQXNzZXJ0KChvbGRzZWcuc2Vnbm8gPT0gU0VHTk9fTUFYICYm IG9sZHNlZy5wYWdlbm8gPT0gUEFHRU5PX01BWCArIDEpIHx8CisJCQkgICAob2xkc2VnLnNl Z25vID09IFNFR05PX01BWCArIDEgJiYgb2xkc2VnLnBhZ2VubyA9PSAwKSk7CisKKwkJLyog U3dpdGNoIHRvIHNlZ21lbnQgMDAwMCAqLworCQljbG9zZV9zZWdtZW50KCZvbGRzZWcpOwor CQlvbGRzZWcuc2Vnbm8gPSAwOworCQlvbGRzZWcucGFnZW5vID0gMDsKKworCQkvKiBza2lw IGludmFsaWQgemVybyBtdWx0aSBvZmZzZXQgKi8KKwkJb2xkaWR4ID0gMTsKKwl9CisKKwlN dWx0aVhhY3RNZW1iZXJzQ3R4RmluaXQoJm5ld2N0eCk7CisKKwkvKiBSZWxlYXNlIHJlc291 cmNlcyAqLworCWNsb3NlX3NlZ21lbnQoJm9sZHNlZyk7CisKKwlwZnJlZShvbGRzZWcuZGly KTsKK30KLS0gCjIuMzkuNQoK --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0004-Get-rid-of-MultiXactMemberFreezeThreshold-call.patch" Content-Disposition: attachment; filename*0="v10-0004-Get-rid-of-MultiXactMemberFreezeThreshold-call.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA3MzRjNjE4OTIwNzZlMDM3YWI3ZWEyMjI3M2U2MTU5MDk3N2M1NmVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjMgT2N0IDIwMjQgMTg6MjM6MzkgKzAzMDAKU3ViamVjdDogW1BBVENI IHYxMCAwNC8xNF0gR2V0IHJpZCBvZiBNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQg Y2FsbC4KClNpbmNlIE1heE11bHRpWGFjdE9mZnNldCBhcmUgVUlOVDY0X01BWCBub3csIE1V TFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQgYW5kCk1VTFRJWEFDVF9NRU1CRVJfREFO R0VSX1RIUkVTSE9MRCB2YWx1ZXMgYXJlIG5vdCBtZWFuaW5nZnVsIGFueSBtb3JlLiBUaHVz LApNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQgaXMgbm90IG5lZWRlZCB0b28uCgpJ bnN0ZWFkLCBzd2l0Y2ggdG8gTVVMVElYQUNUX01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRCAo ZXEgMl4zMikgbWVtYmVycwp0aHJlc2hvbGQuIEl0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlm IHdlIG5lZWQgdG8gZm9yY2UgYXV0b3ZhY3V1bSBvciBub3QuCgpBdXRob3I6IE1heGltIE9y bG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9tdWx0aXhhY3QuYyB8IDExNyArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9tdWx0aXhhY3QuaCAgICAgICAgIHwgICAxIC0KIDQgZmlsZXMgY2hhbmdlZCwgMTUgaW5z ZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vbXVsdGl4YWN0LmMKaW5kZXggNDhlMWMwMTYwYTguLmE4MTdmNTM5ZWU5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtMjA0LDEwICsyMDQsMTQg QEAgTVhPZmZzZXRUb01lbWJlck9mZnNldChNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQogCQlt ZW1iZXJfaW5fZ3JvdXAgKiBzaXplb2YoVHJhbnNhY3Rpb25JZCk7CiB9CiAKLS8qIE11bHRp eGFjdCBtZW1iZXJzIHdyYXBhcm91bmQgdGhyZXNob2xkcy4gKi8KLSNkZWZpbmUgTVVMVElY QUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRAkJKE1heE11bHRpWGFjdE9mZnNldCAvIDIpCi0j ZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJfREFOR0VSX1RIUkVTSE9MRAlcCi0JKE1heE11bHRp WGFjdE9mZnNldCAtIE1heE11bHRpWGFjdE9mZnNldCAvIDQpCisvKgorICogTXVsdGl4YWN0 IG1lbWJlcnMgd2FybmluZyB0aHJlc2hvbGQuCisgKgorICogSWYgZGlmZmVyZW5jZSBiZXR0 d2VlbiBuZXh0T2Zmc2V0IGFuZCBvbGRlc3RPZmZzZXQgZXhjZWVkIHRoaXMgdmFsdWUsIHdl CisgKiB0cmlnZ2VyIGF1dG92YWN1dW1pbiBvcmRlciB0byByZWxlYXNlIHRoZSBkaXNrIHNw YWNlLCByZWR1Y2UgdGFibGUgYmxvYXQgaWYKKyAqIHBvc3NpYmxlLgorICovCisjZGVmaW5l IE1VTFRJWEFDVF9NRU1CRVJfQVVUT1ZBQ19USFJFU0hPTEQJCVVJTlQ2NENPTlNUKDB4RkZG RkZGRkYpCiAKIHN0YXRpYyBpbmxpbmUgTXVsdGlYYWN0SWQKIFByZXZpb3VzTXVsdGlYYWN0 SWQoTXVsdGlYYWN0SWQgbXVsdGkpCkBAIC0yNjE2LDE1ICsyNjIwLDEzIEBAIEdldE9sZGVz dE11bHRpWGFjdElkKHZvaWQpCiB9CiAKIC8qCi0gKiBEZXRlcm1pbmUgaG93IGFnZ3Jlc3Np dmVseSB3ZSBuZWVkIHRvIHZhY3V1bSBpbiBvcmRlciB0byBwcmV2ZW50IG1lbWJlcgotICog d3JhcGFyb3VuZC4KKyAqIERldGVybWluZSBpZiB3ZSBuZWVkIHRvIHZhY3V1bSBmb3IgbWVt YmVyIG9yIG5vdC4KICAqCiAgKiBUbyBkbyBzbyBkZXRlcm1pbmUgd2hhdCdzIHRoZSBvbGRl c3QgbWVtYmVyIG9mZnNldCBhbmQgaW5zdGFsbCB0aGUgbGltaXQKICAqIGluZm8gaW4gTXVs dGlYYWN0U3RhdGUsIHdoZXJlIGl0IGNhbiBiZSB1c2VkIHRvIHByZXZlbnQgb3ZlcnJ1biBv ZiBvbGQgZGF0YQogICogaW4gdGhlIG1lbWJlcnMgU0xSVSBhcmVhLgogICoKLSAqIFRoZSBy ZXR1cm4gdmFsdWUgaXMgdHJ1ZSBpZiBlbWVyZ2VuY3kgYXV0b3ZhY3V1bSBpcyByZXF1aXJl ZCBhbmQgZmFsc2UKLSAqIG90aGVyd2lzZS4KKyAqIFRoZSByZXR1cm4gdmFsdWUgaXMgdHJ1 ZSBpZiBhdXRvdmFjdXVtIGlzIHJlcXVpcmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgKi8K IHN0YXRpYyBib29sCiBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCkBA IC0yNzEyLDEwICsyNzE0LDEwIEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3Rh cnR1cCkKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCiAJLyoKLQkgKiBE byB3ZSBuZWVkIGFuIGVtZXJnZW5jeSBhdXRvdmFjdXVtPwlJZiB3ZSdyZSBub3Qgc3VyZSwg YXNzdW1lIHllcy4KKwkgKiBEbyB3ZSBuZWVkIGF1dG92YWN1dW0/CUlmIHdlJ3JlIG5vdCBz dXJlLCBhc3N1bWUgeWVzLgogCSAqLwogCXJldHVybiAhb2xkZXN0T2Zmc2V0S25vd24gfHwK LQkJKG5leHRPZmZzZXQgLSBvbGRlc3RPZmZzZXQgPiBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVf VEhSRVNIT0xEKTsKKwkJKG5leHRPZmZzZXQgLSBvbGRlc3RPZmZzZXQgPiBNVUxUSVhBQ1Rf TUVNQkVSX0FVVE9WQUNfVEhSRVNIT0xEKTsKIH0KIAogLyoKQEAgLTI3NjEsMTAxICsyNzYz LDYgQEAgZmluZF9tdWx0aXhhY3Rfc3RhcnQoTXVsdGlYYWN0SWQgbXVsdGksIE11bHRpWGFj dE9mZnNldCAqcmVzdWx0KQogCXJldHVybiB0cnVlOwogfQogCi0vKgotICogRGV0ZXJtaW5l IGhvdyBtYW55IG11bHRpeGFjdHMsIGFuZCBob3cgbWFueSBtdWx0aXhhY3QgbWVtYmVycywg Y3VycmVudGx5Ci0gKiBleGlzdC4gIFJldHVybiBmYWxzZSBpZiB1bmFibGUgdG8gZGV0ZXJt aW5lLgotICovCi1zdGF0aWMgYm9vbAotUmVhZE11bHRpWGFjdENvdW50cyh1aW50MzIgKm11 bHRpeGFjdHMsIE11bHRpWGFjdE9mZnNldCAqbWVtYmVycykKLXsKLQlNdWx0aVhhY3RPZmZz ZXQgbmV4dE9mZnNldDsKLQlNdWx0aVhhY3RPZmZzZXQgb2xkZXN0T2Zmc2V0OwotCU11bHRp WGFjdElkIG9sZGVzdE11bHRpWGFjdElkOwotCU11bHRpWGFjdElkIG5leHRNdWx0aVhhY3RJ ZDsKLQlib29sCQlvbGRlc3RPZmZzZXRLbm93bjsKLQotCUxXTG9ja0FjcXVpcmUoTXVsdGlY YWN0R2VuTG9jaywgTFdfU0hBUkVEKTsKLQluZXh0T2Zmc2V0ID0gTXVsdGlYYWN0U3RhdGUt Pm5leHRPZmZzZXQ7Ci0Jb2xkZXN0TXVsdGlYYWN0SWQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xk ZXN0TXVsdGlYYWN0SWQ7Ci0JbmV4dE11bHRpWGFjdElkID0gTXVsdGlYYWN0U3RhdGUtPm5l eHRNWGFjdDsKLQlvbGRlc3RPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0 OwotCW9sZGVzdE9mZnNldEtub3duID0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtu b3duOwotCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7Ci0KLQlpZiAoIW9sZGVz dE9mZnNldEtub3duKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQkqbWVtYmVycyA9IG5leHRPZmZz ZXQgLSBvbGRlc3RPZmZzZXQ7Ci0JKm11bHRpeGFjdHMgPSBuZXh0TXVsdGlYYWN0SWQgLSBv bGRlc3RNdWx0aVhhY3RJZDsKLQlyZXR1cm4gdHJ1ZTsKLX0KLQotLyoKLSAqIE11bHRpeGFj dCBtZW1iZXJzIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhlIG11bHRpeGFjdHMgdGhhdCByZWZl ciB0byB0aGVtCi0gKiBhcmUgb2xkZXIgdGhhbiBldmVyeSBkYXRtaW5teGlkLiAgYXV0b3Zh Y3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgYW5kCi0gKiB2YWN1dW1fbXVsdGl4YWN0 X2ZyZWV6ZV90YWJsZV9hZ2Ugd29yayB0b2dldGhlciB0byBtYWtlIHN1cmUgd2UgbmV2ZXIg aGF2ZQotICogdG9vIG1hbnkgbXVsdGl4YWN0czsgd2UgaG9wZSB0aGF0LCBhdCBsZWFzdCB1 bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcywKLSAqIHRoaXMgd2lsbCBhbHNvIGJlIHN1ZmZp Y2llbnQgdG8ga2VlcCB1cyBmcm9tIHVzaW5nIHRvbyBtYW55IG9mZnNldHMuCi0gKiBIb3dl dmVyLCBpZiB0aGUgYXZlcmFnZSBtdWx0aXhhY3QgaGFzIG1hbnkgbWVtYmVycywgd2UgbWln aHQgZXhoYXVzdCB0aGUKLSAqIG1lbWJlcnMgc3BhY2Ugd2hpbGUgc3RpbGwgdXNpbmcgZmV3 IGVub3VnaCBtZW1iZXJzIHRoYXQgdGhlc2UgbGltaXRzIGZhaWwKLSAqIHRvIHRyaWdnZXIg cmVsbWlubXhpZCBhZHZhbmNlbWVudCBieSBWQUNVVU0uICBBdCB0aGF0IHBvaW50LCB3ZSdk IGhhdmUgbm8KLSAqIGNob2ljZSBidXQgdG8gc3RhcnQgZmFpbGluZyBtdWx0aXhhY3QtY3Jl YXRpbmcgb3BlcmF0aW9ucyB3aXRoIGFuIGVycm9yLgotICoKLSAqIFRvIHByZXZlbnQgdGhh dCwgaWYgbW9yZSB0aGFuIGEgdGhyZXNob2xkIHBvcnRpb24gb2YgdGhlIG1lbWJlcnMgc3Bh Y2UgaXMKLSAqIHVzZWQsIHdlIGVmZmVjdGl2ZWx5IHJlZHVjZSBhdXRvdmFjdXVtX211bHRp eGFjdF9mcmVlemVfbWF4X2FnZSBhbmQKLSAqIHRvIGEgdmFsdWUganVzdCBsZXNzIHRoYW4g dGhlIG51bWJlciBvZiBtdWx0aXhhY3RzIGluIHVzZS4gIFdlIGhvcGUgdGhhdAotICogdGhp cyB3aWxsIHF1aWNrbHkgdHJpZ2dlciBhdXRvdmFjdXVtaW5nIG9uIHRoZSB0YWJsZSBvciB0 YWJsZXMgd2l0aCB0aGUKLSAqIG9sZGVzdCByZWxtaW5teGlkLCB0aHVzIGFsbG93aW5nIGRh dG1pbm14aWQgdmFsdWVzIHRvIGFkdmFuY2UgYW5kIHJlbW92aW5nCi0gKiBzb21lIG1lbWJl cnMuCi0gKgotICogQXMgdGhlIGZyYWN0aW9uIG9mIHRoZSBtZW1iZXIgc3BhY2UgY3VycmVu dGx5IGluIHVzZSBncm93cywgd2UgYmVjb21lCi0gKiBtb3JlIGFnZ3Jlc3NpdmUgaW4gY2xh bXBpbmcgdGhpcyB2YWx1ZS4gIFRoYXQgbm90IG9ubHkgY2F1c2VzIGF1dG92YWN1dW0KLSAq IHRvIHJhbXAgdXAsIGJ1dCBhbHNvIG1ha2VzIGFueSBtYW51YWwgdmFjdXVtcyB0aGUgdXNl ciBpc3N1ZXMgbW9yZQotICogYWdncmVzc2l2ZS4gIFRoaXMgaGFwcGVucyBiZWNhdXNlIHZh Y3V1bV9nZXRfY3V0b2ZmcygpIHdpbGwgY2xhbXAgdGhlCi0gKiBmcmVlemUgdGFibGUgYW5k IHRoZSBtaW5pbXVtIGZyZWV6ZSBhZ2UgY3V0b2ZmcyBiYXNlZCBvbiB0aGUgZWZmZWN0aXZl Ci0gKiBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSB0aGlzIGZ1bmN0aW9u IHJldHVybnMuICBJbiB0aGUgd29yc3QKLSAqIGNhc2UsIHdlJ2xsIGNsYWltIHRoZSBmcmVl emVfbWF4X2FnZSB0byB6ZXJvLCBhbmQgZXZlcnkgdmFjdXVtIG9mIGFueQotICogdGFibGUg d2lsbCBmcmVlemUgZXZlcnkgbXVsdGl4YWN0LgotICovCi1pbnQKLU11bHRpWGFjdE1lbWJl ckZyZWV6ZVRocmVzaG9sZCh2b2lkKQotewotCU11bHRpWGFjdE9mZnNldCBtZW1iZXJzOwot CXVpbnQzMgkJbXVsdGl4YWN0czsKLQl1aW50MzIJCXZpY3RpbV9tdWx0aXhhY3RzOwotCWRv dWJsZQkJZnJhY3Rpb247Ci0JaW50CQkJcmVzdWx0OwotCi0JLyogSWYgd2UgY2FuJ3QgZGV0 ZXJtaW5lIG1lbWJlciBzcGFjZSB1dGlsaXphdGlvbiwgYXNzdW1lIHRoZSB3b3JzdC4gKi8K LQlpZiAoIVJlYWRNdWx0aVhhY3RDb3VudHMoJm11bHRpeGFjdHMsICZtZW1iZXJzKSkKLQkJ cmV0dXJuIDA7Ci0KLQkvKiBJZiBtZW1iZXIgc3BhY2UgdXRpbGl6YXRpb24gaXMgbG93LCBu byBzcGVjaWFsIGFjdGlvbiBpcyByZXF1aXJlZC4gKi8KLQlpZiAobWVtYmVycyA8PSBNVUxU SVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKQotCQlyZXR1cm4gYXV0b3ZhY3V1bV9tdWx0 aXhhY3RfZnJlZXplX21heF9hZ2U7Ci0KLQkvKgotCSAqIENvbXB1dGUgYSB0YXJnZXQgZm9y IHJlbG1pbm14aWQgYWR2YW5jZW1lbnQuICBUaGUgbnVtYmVyIG9mIG11bHRpeGFjdHMKLQkg KiB3ZSB0cnkgdG8gZWxpbWluYXRlIGZyb20gdGhlIHN5c3RlbSBpcyBiYXNlZCBvbiBob3cg ZmFyIHdlIGFyZSBwYXN0Ci0JICogTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRC4K LQkgKi8KLQlmcmFjdGlvbiA9IChkb3VibGUpIChtZW1iZXJzIC0gTVVMVElYQUNUX01FTUJF Ul9TQUZFX1RIUkVTSE9MRCk7Ci0JZnJhY3Rpb24gLz0gKGRvdWJsZSkgKE1VTFRJWEFDVF9N RU1CRVJfREFOR0VSX1RIUkVTSE9MRCAtIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hP TEQpOwotCi0JdmljdGltX211bHRpeGFjdHMgPSBtdWx0aXhhY3RzICogZnJhY3Rpb247Ci0K LQkvKiBmcmFjdGlvbiBjb3VsZCBiZSA+IDEuMCwgYnV0IGxvd2VzdCBwb3NzaWJsZSBmcmVl emUgYWdlIGlzIHplcm8gKi8KLQlpZiAodmljdGltX211bHRpeGFjdHMgPiBtdWx0aXhhY3Rz KQotCQlyZXR1cm4gMDsKLQlyZXN1bHQgPSBtdWx0aXhhY3RzIC0gdmljdGltX211bHRpeGFj dHM7Ci0KLQkvKgotCSAqIENsYW1wIHRvIGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9t YXhfYWdlLCBzbyB0aGF0IHdlIG5ldmVyIG1ha2UKLQkgKiBhdXRvdmFjdXVtIGxlc3MgYWdn cmVzc2l2ZSB0aGFuIGl0IHdvdWxkIG90aGVyd2lzZSBiZS4KLQkgKi8KLQlyZXR1cm4gTWlu KHJlc3VsdCwgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UpOwotfQotCiB0 eXBlZGVmIHN0cnVjdCBteHRydW5jaW5mbwogewogCWludDY0CQllYXJsaWVzdEV4aXN0aW5n UGFnZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggYmI2MzllZjUxZmIuLjNlMTk0MmE2 YTJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgdmFj dXVtX2dldF9jdXRvZmZzKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJh bXMsCiAJICogbm9ybWFsbHkgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2Us IGJ1dCBtYXkgYmUgbGVzcyBpZiB3ZSBhcmUKIAkgKiBzaG9ydCBvZiBtdWx0aXhhY3QgbWVt YmVyIHNwYWNlLgogCSAqLwotCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2Ug PSBNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQoKTsKKwllZmZlY3RpdmVfbXVsdGl4 YWN0X2ZyZWV6ZV9tYXhfYWdlID0gYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9h Z2U7CiAKIAkvKgogCSAqIEFsbW9zdCByZWFkeSB0byBzZXQgZnJlZXplIG91dHB1dCBwYXJh bWV0ZXJzOyBjaGVjayBpZiBPbGRlc3RYbWluIG9yCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5jCmluZGV4IGRjM2NmODdhYmFiLi4xODBiYjdlOTZlZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTExMjIsNyArMTEyMiw3IEBAIGRvX3N0YXJ0 X3dvcmtlcih2b2lkKQogCiAJLyogQWxzbyBkZXRlcm1pbmUgdGhlIG9sZGVzdCBkYXRtaW5t eGlkIHdlIHdpbGwgY29uc2lkZXIuICovCiAJcmVjZW50TXVsdGkgPSBSZWFkTmV4dE11bHRp WGFjdElkKCk7Ci0JbXVsdGlGb3JjZUxpbWl0ID0gcmVjZW50TXVsdGkgLSBNdWx0aVhhY3RN ZW1iZXJGcmVlemVUaHJlc2hvbGQoKTsKKwltdWx0aUZvcmNlTGltaXQgPSByZWNlbnRNdWx0 aSAtIGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwogCWlmIChtdWx0aUZv cmNlTGltaXQgPCBGaXJzdE11bHRpWGFjdElkKQogCQltdWx0aUZvcmNlTGltaXQgLT0gRmly c3RNdWx0aVhhY3RJZDsKIApAQCAtMTkxNSw3ICsxOTE1LDcgQEAgZG9fYXV0b3ZhY3V1bSh2 b2lkKQogCSAqIG5vcm1hbGx5IGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdl LCBidXQgbWF5IGJlIGxlc3MgaWYgd2UgYXJlCiAJICogc2hvcnQgb2YgbXVsdGl4YWN0IG1l bWJlciBzcGFjZS4KIAkgKi8KLQllZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdl ID0gTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKCk7CisJZWZmZWN0aXZlX211bHRp eGFjdF9mcmVlemVfbWF4X2FnZSA9IGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhf YWdlOwogCiAJLyoKIAkgKiBGaW5kIHRoZSBwZ19kYXRhYmFzZSBlbnRyeSBhbmQgc2VsZWN0 IHRoZSBkZWZhdWx0IGZyZWV6ZSBhZ2VzLiBXZSB1c2UKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3Qu aAppbmRleCA5MDU4MzYzNGVjOS4uNWFlZmJkZGNlM2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4 YWN0LmgKQEAgLTE0Myw3ICsxNDMsNiBAQCBleHRlcm4gdm9pZCBNdWx0aVhhY3RTZXROZXh0 TVhhY3QoTXVsdGlYYWN0SWQgbmV4dE11bHRpLAogZXh0ZXJuIHZvaWQgTXVsdGlYYWN0QWR2 YW5jZU5leHRNWGFjdChNdWx0aVhhY3RJZCBtaW5NdWx0aSwKIAkJCQkJCQkJCSAgTXVsdGlY YWN0T2Zmc2V0IG1pbk11bHRpT2Zmc2V0KTsKIGV4dGVybiB2b2lkIE11bHRpWGFjdEFkdmFu Y2VPbGRlc3QoTXVsdGlYYWN0SWQgb2xkZXN0TXVsdGksIE9pZCBvbGRlc3RNdWx0aURCKTsK LWV4dGVybiBpbnQJTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKHZvaWQpOwogCiBl eHRlcm4gdm9pZCBtdWx0aXhhY3RfdHdvcGhhc2VfcmVjb3ZlcihUcmFuc2FjdGlvbklkIHhp ZCwgdWludDE2IGluZm8sCiAJCQkJCQkJCQkgICB2b2lkICpyZWNkYXRhLCB1aW50MzIgbGVu KTsKLS0gCjIuMzkuNQoK --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0005-Fixup-setting-oldestOffset.patch" Content-Disposition: attachment; filename="v10-0005-Fixup-setting-oldestOffset.patch" Content-Transfer-Encoding: base64 RnJvbSBhYWI1N2QyNjBjYTUyNjhmODZkNzU5MWNlNzk1N2YzYjBkNjhhNTE3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTggRGVjIDIwMjQgMTE6NDc6MzIgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMCAwNS8xNF0gRml4dXAgc2V0dGluZyBvbGRlc3RPZmZzZXQK Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgfCA2ICsrLS0t LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IGE4MTdmNTM5ZWU5 Li4zZDI3OTk1YTI5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v bXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0 LmMKQEAgLTEwNDUsOSArMTA0NSw3IEBAIEdldE5ld011bHRpWGFjdElkKGludCBubWVtYmVy cywgTXVsdGlYYWN0T2Zmc2V0ICpvZmZzZXQpCiAJICogYWdhaW5zdCBjYXRhc3Ryb3BoaWMg ZGF0YSBsb3NzIGR1ZSB0byBtdWx0aXhhY3Qgd3JhcGFyb3VuZC4gIFRoZSBiYXNpYwogCSAq IHJ1bGVzIGFyZToKIAkgKgotCSAqIElmIHdlJ3JlIHBhc3QgbXVsdGlWYWNMaW1pdCBvciB0 aGUgc2FmZSB0aHJlc2hvbGQgZm9yIG1lbWJlciBzdG9yYWdlCi0JICogc3BhY2UsIG9yIHdl IGRvbid0IGtub3cgd2hhdCB0aGUgc2FmZSB0aHJlc2hvbGQgZm9yIG1lbWJlciBzdG9yYWdl IGlzLAotCSAqIHN0YXJ0IHRyeWluZyB0byBmb3JjZSBhdXRvdmFjdXVtIGN5Y2xlcy4KKwkg KiBJZiB3ZSdyZSBwYXN0IG11bHRpVmFjTGltaXQsIHN0YXJ0IHRyeWluZyB0byBmb3JjZSBh dXRvdmFjdXVtIGN5Y2xlcy4KIAkgKiBJZiB3ZSdyZSBwYXN0IG11bHRpV2FybkxpbWl0LCBz dGFydCBpc3N1aW5nIHdhcm5pbmdzLgogCSAqIElmIHdlJ3JlIHBhc3QgbXVsdGlTdG9wTGlt aXQsIHJlZnVzZSB0byBjcmVhdGUgbmV3IE11bHRpWGFjdElkcy4KIAkgKgpAQCAtMjY5NSw3 ICsyNjkzLDcgQEAgU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQogCSAq IG92ZXJydW4gb2Ygb2xkIGRhdGEgaW4gdGhlIG1lbWJlcnMgU0xSVSBhcmVhLiBXZSBjYW4g b25seSBkbyBzbyBpZiB0aGUKIAkgKiBvbGRlc3Qgb2Zmc2V0IGlzIGtub3duIHRob3VnaC4K IAkgKi8KLQlpZiAocHJldk9sZGVzdE9mZnNldEtub3duKQorCWlmICghb2xkZXN0T2Zmc2V0 S25vd24gJiYgcHJldk9sZGVzdE9mZnNldEtub3duKQogCXsKIAkJLyoKIAkJICogSWYgd2Ug ZmFpbGVkIHRvIGdldCB0aGUgb2xkZXN0IG9mZnNldCB0aGlzIHRpbWUsIGJ1dCB3ZSBoYXZl IGEKLS0gCjIuMzkuNQoK --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0006-Remove-some-dead-code-related-to-handling-member.patch" Content-Disposition: attachment; filename*0="v10-0006-Remove-some-dead-code-related-to-handling-member.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiMzViMGFhODQ5YTE2YTlmNzFiYTYxNWM4MTM0ZmU3NGRiMzdkMDg4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTggRGVjIDIwMjQgMTE6NTc6MDYgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMCAwNi8xNF0gUmVtb3ZlIHNvbWUgZGVhZCBjb2RlIHJlbGF0 ZWQgdG8gaGFuZGxpbmcgbWVtYmVycwogd3JhcGFyb3VuZAoKTm93IHRoYXQgb2Zmc2V0cyBh cmUgNjQtYml0LCB3ZSBhc3N1bWUgbWVtYmVycyBuZXZlciB3cmFwIGFyb3VuZC4KClN0YXJ0 IHRoZSBvZmZzZXQgY291bnRlciBmcm9tIDEgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRoZSBz cGVjaWFsIGNhc2UKZm9yIHN0YXJ0aW5nIGZyb20gMC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9tdWx0aXhhY3QuYyB8IDQyICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICB8ICAyICstCiAyIGZp bGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCAzZDI3OTk1YTI5OS4uNzM3 MTU0ODE0YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRp eGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBA IC0xNDcsMTkgKzE0Nyw2IEBAIE11bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50KE11bHRpWGFj dElkIG11bHRpKQogI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRQlcCiAJKE1V TFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UgKiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJf TUVNQkVSR1JPVVApCiAKLS8qCi0gKiBCZWNhdXNlIHRoZSBudW1iZXIgb2YgaXRlbXMgcGVy IHBhZ2UgaXMgbm90IGEgZGl2aXNvciBvZiB0aGUgbGFzdCBpdGVtCi0gKiBudW1iZXIgKG1l bWJlciAweEZGRkZGRkZGKSwgdGhlIGxhc3Qgc2VnbWVudCBkb2VzIG5vdCB1c2UgdGhlIG1h eGltdW0gbnVtYmVyCi0gKiBvZiBwYWdlcywgYW5kIG1vcmVvdmVyIHRoZSBsYXN0IHVzZWQg cGFnZSB0aGVyZWluIGRvZXMgbm90IHVzZSB0aGUgc2FtZQotICogbnVtYmVyIG9mIGl0ZW1z IGFzIHByZXZpb3VzIHBhZ2VzLiAgKEFub3RoZXIgd2F5IHRvIHNheSBpdCBpcyB0aGF0IHRo ZQotICogMHhGRkZGRkZGRiBtZW1iZXIgaXMgc29tZXdoZXJlIGluIHRoZSBtaWRkbGUgb2Yg dGhlIGxhc3QgcGFnZSwgc28gdGhlIHBhZ2UKLSAqIGhhcyBzb21lIGVtcHR5IHNwYWNlIGFm dGVyIHRoYXQgaXRlbS4pCi0gKgotICogVGhpcyBjb25zdGFudCBpcyB0aGUgbnVtYmVyIG9m IG1lbWJlcnMgaW4gdGhlIGxhc3QgcGFnZSBvZiB0aGUgbGFzdCBzZWdtZW50LgotICovCi0j ZGVmaW5lIE1BWF9NRU1CRVJTX0lOX0xBU1RfTUVNQkVSU19QQUdFIFwKLQkJKCh1aW50MzIp ICgoMHhGRkZGRkZGRiAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFKSArIDEpKQotCiAv KiBwYWdlIGluIHdoaWNoIGEgbWVtYmVyIGlzIHRvIGJlIGZvdW5kICovCiBzdGF0aWMgaW5s aW5lIGludDY0CiBNWE9mZnNldFRvTWVtYmVyUGFnZShNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0 KQpAQCAtMTE0MCwxOCArMTEyNywxMCBAQCBHZXROZXdNdWx0aVhhY3RJZChpbnQgbm1lbWJl cnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQogCUV4dGVuZE11bHRpWGFjdE9mZnNldChy ZXN1bHQpOwogCiAJLyoKLQkgKiBSZXNlcnZlIHRoZSBtZW1iZXJzIHNwYWNlLCBzaW1pbGFy bHkgdG8gYWJvdmUuICBBbHNvLCBiZSBjYXJlZnVsIG5vdCB0bwotCSAqIHJldHVybiB6ZXJv IGFzIHRoZSBzdGFydGluZyBvZmZzZXQgZm9yIGFueSBtdWx0aXhhY3QuIFNlZQotCSAqIEdl dE11bHRpWGFjdElkTWVtYmVycygpIGZvciBtb3RpdmF0aW9uLgorCSAqIFJlc2VydmUgdGhl IG1lbWJlcnMgc3BhY2UsIHNpbWlsYXJseSB0byBhYm92ZS4KIAkgKi8KIAluZXh0T2Zmc2V0 ID0gTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQ7Ci0JaWYgKG5leHRPZmZzZXQgPT0gMCkK LQl7Ci0JCSpvZmZzZXQgPSAxOwotCQlubWVtYmVycysrOwkJCQkvKiBhbGxvY2F0ZSBtZW1i ZXIgc2xvdCAwIHRvbyAqLwotCX0KLQllbHNlCi0JCSpvZmZzZXQgPSBuZXh0T2Zmc2V0Owor CSpvZmZzZXQgPSBuZXh0T2Zmc2V0OwogCiAJRXh0ZW5kTXVsdGlYYWN0TWVtYmVyKG5leHRP ZmZzZXQsIG5tZW1iZXJzKTsKIApAQCAtMjUzNywyMiArMjUxNiw5IEBAIEV4dGVuZE11bHRp WGFjdE1lbWJlcihNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0LCBpbnQgbm1lbWJlcnMpCiAJCX0K IAogCQkvKgotCQkgKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgaXRlbXMgdGlsbCBlbmQgb2Yg Y3VycmVudCBwYWdlLiAgQ2FyZWZ1bDogaWYKLQkJICogYWRkaXRpb24gb2YgdW5zaWduZWQg aW50cyB3cmFwcyBhcm91bmQsIHdlJ3JlIGF0IHRoZSBsYXN0IHBhZ2Ugb2YKLQkJICogdGhl IGxhc3Qgc2VnbWVudDsgc2luY2UgdGhhdCBwYWdlIGhvbGRzIGEgZGlmZmVyZW50IG51bWJl ciBvZiBpdGVtcwotCQkgKiB0aGFuIG90aGVyIHBhZ2VzLCB3ZSBuZWVkIHRvIGRvIGl0IGRp ZmZlcmVudGx5LgorCQkgKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgaXRlbXMgdGlsbCBlbmQg b2YgY3VycmVudCBwYWdlLgogCQkgKi8KLQkJaWYgKG9mZnNldCArIE1BWF9NRU1CRVJTX0lO X0xBU1RfTUVNQkVSU19QQUdFIDwgb2Zmc2V0KQotCQl7Ci0JCQkvKgotCQkJICogVGhpcyBp cyB0aGUgbGFzdCBwYWdlIG9mIHRoZSBsYXN0IHNlZ21lbnQ7IHdlIGNhbiBjb21wdXRlIHRo ZQotCQkJICogbnVtYmVyIG9mIGl0ZW1zIGxlZnQgdG8gYWxsb2NhdGUgaW4gaXQgd2l0aG91 dCBtb2R1bG8KLQkJCSAqIGFyaXRobWV0aWMuCi0JCQkgKi8KLQkJCWRpZmZlcmVuY2UgPSBN YXhNdWx0aVhhY3RPZmZzZXQgLSBvZmZzZXQgKyAxOwotCQl9Ci0JCWVsc2UKLQkJCWRpZmZl cmVuY2UgPSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRSAtIG9mZnNldCAlIE1VTFRJWEFD VF9NRU1CRVJTX1BFUl9QQUdFOworCQlkaWZmZXJlbmNlID0gTVVMVElYQUNUX01FTUJFUlNf UEVSX1BBR0UgLSBvZmZzZXQgJSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRTsKIAogCQkv KgogCQkgKiBBZHZhbmNlIHRvIG5leHQgcGFnZSwgdGFraW5nIGNhcmUgdG8gcHJvcGVybHkg aGFuZGxlIHRoZSB3cmFwYXJvdW5kCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5k ZXggNmY1ODQxMmJjYWIuLjA2N2NiNzA5MzhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jCkBAIC01MDgzLDcgKzUwODMsNyBAQCBCb290U3RyYXBYTE9HKHVpbnQzMiBkYXRh X2NoZWNrc3VtX3ZlcnNpb24pCiAJCUZ1bGxUcmFuc2FjdGlvbklkRnJvbUVwb2NoQW5kWGlk KDAsIEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCk7CiAJY2hlY2tQb2ludC5uZXh0T2lkID0g Rmlyc3RHZW5ia2lPYmplY3RJZDsKIAljaGVja1BvaW50Lm5leHRNdWx0aSA9IEZpcnN0TXVs dGlYYWN0SWQ7Ci0JY2hlY2tQb2ludC5uZXh0TXVsdGlPZmZzZXQgPSAwOworCWNoZWNrUG9p bnQubmV4dE11bHRpT2Zmc2V0ID0gMTsKIAljaGVja1BvaW50Lm9sZGVzdFhpZCA9IEZpcnN0 Tm9ybWFsVHJhbnNhY3Rpb25JZDsKIAljaGVja1BvaW50Lm9sZGVzdFhpZERCID0gVGVtcGxh dGUxRGJPaWQ7CiAJY2hlY2tQb2ludC5vbGRlc3RNdWx0aSA9IEZpcnN0TXVsdGlYYWN0SWQ7 Ci0tIAoyLjM5LjUKCg== --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0007-add-fixme-comment-about-pg_upgrade.patch" Content-Disposition: attachment; filename="v10-0007-add-fixme-comment-about-pg_upgrade.patch" Content-Transfer-Encoding: base64 RnJvbSA2Yzk3ODg3NzM4MTY0ZmM2ODEwNzgxMjExZmJhNDc3NGE2M2UzMTY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTggRGVjIDIwMjQgMTI6MDA6MzAgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMCAwNy8xNF0gYWRkIGZpeG1lIGNvbW1lbnQgYWJvdXQgcGdf dXBncmFkZQoKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyB8 IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCA3MzcxNTQ4MTRhOC4uNjUxNzY2YTQ5MzUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC0xMzAyLDYg KzEzMDIsNyBAQCBHZXRNdWx0aVhhY3RJZE1lbWJlcnMoTXVsdGlYYWN0SWQgbXVsdGksIE11 bHRpWGFjdE1lbWJlciAqKm1lbWJlcnMsCiAJICogd2UgaGF2ZSBqdXN0IGZvciB0aGlzOyB0 aGUgcHJvY2VzcyBpbiBjaGFyZ2Ugd2lsbCBzaWduYWwgdGhlIENWIGFzIHNvb24KIAkgKiBh cyBpdCBoYXMgZmluaXNoZWQgd3JpdGluZyB0aGUgbXVsdGl4YWN0IG9mZnNldC4KIAkgKgor CSAqIEZJWE1FOiBjYXNlIDMgaXMgbm93IG9ubHkgbmVlZGVkIGZvciBwZ191cGdyYWRlZCBj bHVzdGVycwogCSAqIDMuIEJlY2F1c2UgR2V0TmV3TXVsdGlYYWN0SWQgaW5jcmVtZW50cyBv ZmZzZXQgemVybyB0byBvZmZzZXQgb25lIHRvCiAJICogaGFuZGxlIGNhc2UgIzIsIHRoZXJl IGlzIGFuIGFtYmlndWl0eSBuZWFyIHRoZSBwb2ludCBvZiBvZmZzZXQKIAkgKiB3cmFwYXJv dW5kLiAgSWYgd2Ugc2VlIG5leHQgbXVsdGl4YWN0J3Mgb2Zmc2V0IGlzIG9uZSwgaXMgdGhh dCBvdXIKLS0gCjIuMzkuNQoK --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0008-Remove-code-to-deal-with-old-9.3-and-9.3-era-bro.patch" Content-Disposition: attachment; filename*0="v10-0008-Remove-code-to-deal-with-old-9.3-and-9.3-era-bro.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyYzBkM2IzOGQzMWY2NWVkZDdjNTA5MTA3NzBlYTVlNTAyYzA4ZWE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTggRGVjIDIwMjQgMTI6MDM6NDkgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMCAwOC8xNF0gUmVtb3ZlIGNvZGUgdG8gZGVhbCB3aXRoIG9s ZCA5LjMgYW5kIDkuMyBlcmEgYnJva2VuCiBjbHVzdGVycwoKTm93IHRoYXQgcGdfdXBncmFk ZSB3aWxsIHJld3JpdGUgdGhlIFNMUlVzLCB3ZSBrbm93IHRoZSBjb3JyZWN0IG9sZGVzdApt ZW1iZXIgb2Zmc2V0LgoKWFhYOiBpcyB0aGF0IGNvcnJlY3Q/Ci0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgfCA5OSArKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDg0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKaW5kZXggNjUxNzY2 YTQ5MzUuLjI1ZmNhNDMxOTM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9tdWx0aXhhY3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0 aXhhY3QuYwpAQCAtMjQzLDExICsyNDMsOSBAQCB0eXBlZGVmIHN0cnVjdCBNdWx0aVhhY3RT dGF0ZURhdGEKIAogCS8qCiAJICogT2xkZXN0IG11bHRpeGFjdCBvZmZzZXQgdGhhdCBpcyBw b3RlbnRpYWxseSByZWZlcmVuY2VkIGJ5IGEgbXVsdGl4YWN0Ci0JICogcmVmZXJlbmNlZCBi eSBhIHJlbGF0aW9uLiAgV2UgZG9uJ3QgYWx3YXlzIGtub3cgdGhpcyB2YWx1ZSwgc28gdGhl cmUncwotCSAqIGEgZmxhZyBoZXJlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHdlIGN1 cnJlbnRseSBkby4KKwkgKiByZWZlcmVuY2VkIGJ5IGEgcmVsYXRpb24uCiAJICovCiAJTXVs dGlYYWN0T2Zmc2V0IG9sZGVzdE9mZnNldDsKLQlib29sCQlvbGRlc3RPZmZzZXRLbm93bjsK IAogCS8qIHN1cHBvcnQgZm9yIGFudGktd3JhcGFyb3VuZCBtZWFzdXJlcyAqLwogCU11bHRp WGFjdElkIG11bHRpVmFjTGltaXQ7CkBAIC0zOTAsNyArMzg4LDcgQEAgc3RhdGljIGJvb2wg TXVsdGlYYWN0T2Zmc2V0UHJlY2VkZXMoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDEsCiBzdGF0 aWMgdm9pZCBFeHRlbmRNdWx0aVhhY3RPZmZzZXQoTXVsdGlYYWN0SWQgbXVsdGkpOwogc3Rh dGljIHZvaWQgRXh0ZW5kTXVsdGlYYWN0TWVtYmVyKE11bHRpWGFjdE9mZnNldCBvZmZzZXQs IGludCBubWVtYmVycyk7CiBzdGF0aWMgYm9vbCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29s IGlzX3N0YXJ0dXApOwotc3RhdGljIGJvb2wgZmluZF9tdWx0aXhhY3Rfc3RhcnQoTXVsdGlY YWN0SWQgbXVsdGksIE11bHRpWGFjdE9mZnNldCAqcmVzdWx0KTsKK3N0YXRpYyBNdWx0aVhh Y3RPZmZzZXQgZmluZF9tdWx0aXhhY3Rfc3RhcnQoTXVsdGlYYWN0SWQgbXVsdGkpOwogc3Rh dGljIHZvaWQgV3JpdGVNWmVyb1BhZ2VYbG9nUmVjKGludDY0IHBhZ2VubywgdWludDggaW5m byk7CiBzdGF0aWMgdm9pZCBXcml0ZU1UcnVuY2F0ZVhsb2dSZWMoT2lkIG9sZGVzdE11bHRp REIsCiAJCQkJCQkJCSAgTXVsdGlYYWN0SWQgc3RhcnRUcnVuY09mZiwKQEAgLTI1OTksMTAg KzI1OTcsNyBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJTXVs dGlYYWN0SWQgb2xkZXN0TXVsdGlYYWN0SWQ7CiAJTXVsdGlYYWN0SWQgbmV4dE1YYWN0Owog CU11bHRpWGFjdE9mZnNldCBvbGRlc3RPZmZzZXQgPSAwOwkvKiBwbGFjYXRlIGNvbXBpbGVy ICovCi0JTXVsdGlYYWN0T2Zmc2V0IHByZXZPbGRlc3RPZmZzZXQ7CiAJTXVsdGlYYWN0T2Zm c2V0IG5leHRPZmZzZXQ7Ci0JYm9vbAkJb2xkZXN0T2Zmc2V0S25vd24gPSBmYWxzZTsKLQli b29sCQlwcmV2T2xkZXN0T2Zmc2V0S25vd247CiAKIAkvKgogCSAqIE5COiBIYXZlIHRvIHBy ZXZlbnQgY29uY3VycmVudCB0cnVuY2F0aW9uLCB3ZSBtaWdodCBvdGhlcndpc2UgdHJ5IHRv CkBAIC0yNjE1LDggKzI2MTAsNiBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0 YXJ0dXApCiAJb2xkZXN0TXVsdGlYYWN0SWQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVs dGlYYWN0SWQ7CiAJbmV4dE1YYWN0ID0gTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdDsKIAlu ZXh0T2Zmc2V0ID0gTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQ7Ci0JcHJldk9sZGVzdE9m ZnNldEtub3duID0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duOwotCXByZXZP bGRlc3RPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0OwogCUFzc2VydChN dWx0aVhhY3RTdGF0ZS0+ZmluaXNoZWRTdGFydHVwKTsKIAlMV0xvY2tSZWxlYXNlKE11bHRp WGFjdEdlbkxvY2spOwogCkBAIC0yNjM0LDY4ICsyNjI3LDMxIEBAIFNldE9mZnNldFZhY3V1 bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkJICogb2Zmc2V0LgogCQkgKi8KIAkJb2xkZXN0 T2Zmc2V0ID0gbmV4dE9mZnNldDsKLQkJb2xkZXN0T2Zmc2V0S25vd24gPSB0cnVlOwogCX0K IAllbHNlCi0JewotCQkvKgotCQkgKiBGaWd1cmUgb3V0IHdoZXJlIHRoZSBvbGRlc3QgZXhp c3RpbmcgbXVsdGl4YWN0J3Mgb2Zmc2V0cyBhcmUKLQkJICogc3RvcmVkLiBEdWUgdG8gYnVn cyBpbiBlYXJseSByZWxlYXNlIG9mIFBvc3RncmVTUUwgOS4zLlggYW5kIDkuNC5YLAotCQkg KiB0aGUgc3VwcG9zZWRseS1lYXJsaWVzdCBtdWx0aXhhY3QgbWlnaHQgbm90IHJlYWxseSBl eGlzdC4gIFdlIGFyZQotCQkgKiBjYXJlZnVsIG5vdCB0byBmYWlsIGluIHRoYXQgY2FzZS4K LQkJICovCi0JCW9sZGVzdE9mZnNldEtub3duID0KLQkJCWZpbmRfbXVsdGl4YWN0X3N0YXJ0 KG9sZGVzdE11bHRpWGFjdElkLCAmb2xkZXN0T2Zmc2V0KTsKLQotCQlpZiAoIW9sZGVzdE9m ZnNldEtub3duKQotCQkJZXJlcG9ydChMT0csCi0JCQkJCShlcnJtc2coIk11bHRpWGFjdCBt ZW1iZXIgd3JhcGFyb3VuZCBwcm90ZWN0aW9ucyBhcmUgZGlzYWJsZWQgYmVjYXVzZSBvbGRl c3QgY2hlY2twb2ludGVkIE11bHRpWGFjdCAldSBkb2VzIG5vdCBleGlzdCBvbiBkaXNrIiwK LQkJCQkJCQlvbGRlc3RNdWx0aVhhY3RJZCkpKTsKLQl9CisJCW9sZGVzdE9mZnNldCA9IGZp bmRfbXVsdGl4YWN0X3N0YXJ0KG9sZGVzdE11bHRpWGFjdElkKTsKIAogCUxXTG9ja1JlbGVh c2UoTXVsdGlYYWN0VHJ1bmNhdGlvbkxvY2spOwogCi0JLyoKLQkgKiBJZiB3ZSBjYW4sIGNv bXB1dGUgbGltaXRzIChhbmQgaW5zdGFsbCB0aGVtIE11bHRpWGFjdFN0YXRlKSB0byBwcmV2 ZW50Ci0JICogb3ZlcnJ1biBvZiBvbGQgZGF0YSBpbiB0aGUgbWVtYmVycyBTTFJVIGFyZWEu IFdlIGNhbiBvbmx5IGRvIHNvIGlmIHRoZQotCSAqIG9sZGVzdCBvZmZzZXQgaXMga25vd24g dGhvdWdoLgotCSAqLwotCWlmICghb2xkZXN0T2Zmc2V0S25vd24gJiYgcHJldk9sZGVzdE9m ZnNldEtub3duKQotCXsKLQkJLyoKLQkJICogSWYgd2UgZmFpbGVkIHRvIGdldCB0aGUgb2xk ZXN0IG9mZnNldCB0aGlzIHRpbWUsIGJ1dCB3ZSBoYXZlIGEKLQkJICogdmFsdWUgZnJvbSBh IHByZXZpb3VzIHBhc3MgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uLCB1c2UgdGhlIG9sZAotCQkg KiB2YWx1ZXMgcmF0aGVyIHRoYW4gYXV0b21hdGljYWxseSBmb3JjaW5nIGFuIGVtZXJnZW5j eSBhdXRvdmFjdXVtCi0JCSAqIGN5Y2xlIGFnYWluLgotCQkgKi8KLQkJb2xkZXN0T2Zmc2V0 ID0gcHJldk9sZGVzdE9mZnNldDsKLQkJb2xkZXN0T2Zmc2V0S25vd24gPSB0cnVlOwotCX0K LQogCS8qIEluc3RhbGwgdGhlIGNvbXB1dGVkIHZhbHVlcyAqLwogCUxXTG9ja0FjcXVpcmUo TXVsdGlYYWN0R2VuTG9jaywgTFdfRVhDTFVTSVZFKTsKIAlNdWx0aVhhY3RTdGF0ZS0+b2xk ZXN0T2Zmc2V0ID0gb2xkZXN0T2Zmc2V0OwotCU11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZz ZXRLbm93biA9IG9sZGVzdE9mZnNldEtub3duOwogCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0 R2VuTG9jayk7CiAKIAkvKgotCSAqIERvIHdlIG5lZWQgYXV0b3ZhY3V1bT8JSWYgd2UncmUg bm90IHN1cmUsIGFzc3VtZSB5ZXMuCisJICogRG8gd2UgbmVlZCBhdXRvdmFjdXVtPwogCSAq LwotCXJldHVybiAhb2xkZXN0T2Zmc2V0S25vd24gfHwKLQkJKG5leHRPZmZzZXQgLSBvbGRl c3RPZmZzZXQgPiBNVUxUSVhBQ1RfTUVNQkVSX0FVVE9WQUNfVEhSRVNIT0xEKTsKKwlyZXR1 cm4gKG5leHRPZmZzZXQgLSBvbGRlc3RPZmZzZXQgPiBNVUxUSVhBQ1RfTUVNQkVSX0FVVE9W QUNfVEhSRVNIT0xEKTsKIH0KIAogLyoKICAqIEZpbmQgdGhlIHN0YXJ0aW5nIG9mZnNldCBv ZiB0aGUgZ2l2ZW4gTXVsdGlYYWN0SWQuCiAgKgotICogUmV0dXJucyBmYWxzZSBpZiB0aGUg ZmlsZSBjb250YWluaW5nIHRoZSBtdWx0aSBkb2VzIG5vdCBleGlzdCBvbiBkaXNrLgotICog T3RoZXJ3aXNlLCByZXR1cm5zIHRydWUgYW5kIHNldHMgKnJlc3VsdCB0byB0aGUgc3RhcnRp bmcgbWVtYmVyIG9mZnNldC4KLSAqCiAgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHByZXZl bnQgY29uY3VycmVudCB0cnVuY2F0aW9uLCBzbyBpZiB0aGF0J3MKICAqIHJlcXVpcmVkLCB0 aGUgY2FsbGVyIGhhcyB0byBwcm90ZWN0IGFnYWluc3QgdGhhdC4KICAqLwotc3RhdGljIGJv b2wKLWZpbmRfbXVsdGl4YWN0X3N0YXJ0KE11bHRpWGFjdElkIG11bHRpLCBNdWx0aVhhY3RP ZmZzZXQgKnJlc3VsdCkKK3N0YXRpYyBNdWx0aVhhY3RPZmZzZXQKK2ZpbmRfbXVsdGl4YWN0 X3N0YXJ0KE11bHRpWGFjdElkIG11bHRpKQogewogCU11bHRpWGFjdE9mZnNldCBvZmZzZXQ7 CiAJaW50NjQJCXBhZ2VubzsKQEAgLTI3MDgsMTUgKzI2NjQsNiBAQCBmaW5kX211bHRpeGFj dF9zdGFydChNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpCiAJ cGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UobXVsdGkpOwogCWVudHJ5bm8gPSBN dWx0aVhhY3RJZFRvT2Zmc2V0RW50cnkobXVsdGkpOwogCi0JLyoKLQkgKiBXcml0ZSBvdXQg ZGlydHkgZGF0YSwgc28gUGh5c2ljYWxQYWdlRXhpc3RzIGNhbiB3b3JrIGNvcnJlY3RseS4K LQkgKi8KLQlTaW1wbGVMcnVXcml0ZUFsbChNdWx0aVhhY3RPZmZzZXRDdGwsIHRydWUpOwot CVNpbXBsZUxydVdyaXRlQWxsKE11bHRpWGFjdE1lbWJlckN0bCwgdHJ1ZSk7Ci0KLQlpZiAo IVNpbXBsZUxydURvZXNQaHlzaWNhbFBhZ2VFeGlzdChNdWx0aVhhY3RPZmZzZXRDdGwsIHBh Z2VubykpCi0JCXJldHVybiBmYWxzZTsKLQogCS8qIGxvY2sgaXMgYWNxdWlyZWQgYnkgU2lt cGxlTHJ1UmVhZFBhZ2VfUmVhZE9ubHkgKi8KIAlzbG90bm8gPSBTaW1wbGVMcnVSZWFkUGFn ZV9SZWFkT25seShNdWx0aVhhY3RPZmZzZXRDdGwsIHBhZ2VubywgbXVsdGkpOwogCW9mZnB0 ciA9IChNdWx0aVhhY3RPZmZzZXQgKikgTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBh Z2VfYnVmZmVyW3Nsb3Rub107CkBAIC0yNzI0LDggKzI2NzEsNyBAQCBmaW5kX211bHRpeGFj dF9zdGFydChNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpCiAJ b2Zmc2V0ID0gKm9mZnB0cjsKIAlMV0xvY2tSZWxlYXNlKFNpbXBsZUxydUdldEJhbmtMb2Nr KE11bHRpWGFjdE9mZnNldEN0bCwgcGFnZW5vKSk7CiAKLQkqcmVzdWx0ID0gb2Zmc2V0Owot CXJldHVybiB0cnVlOworCXJldHVybiBvZmZzZXQ7CiB9CiAKIHR5cGVkZWYgc3RydWN0IG14 dHJ1bmNpbmZvCkBAIC0yNzU5LDExICsyNzA1LDEyIEBAIFNscnVTY2FuRGlyQ2JGaW5kRWFy bGllc3QoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLCB2b2lk ICpkYXRhCiAgKiB0aGUgZnVsbCByYW5nZSBhdCBvbmNlLiBUaGlzIG1lYW5zIFNpbXBsZUxy dVRydW5jYXRlKCkgY2FuJ3QgdHJpdmlhbGx5IGJlCiAgKiB1c2VkIC0gaW5zdGVhZCB0aGUg dG8tYmUtZGVsZXRlZCByYW5nZSBpcyBjb21wdXRlZCB1c2luZyB0aGUgb2Zmc2V0cwogICog U0xSVS4gQy5mLiBUcnVuY2F0ZU11bHRpWGFjdCgpLgorICoKKyAqIFhYWCBjb3VsZCB1c2Ug U2ltcGxlTHJ1VHJ1bmNhdGUoKSBub3cKICAqLwogc3RhdGljIHZvaWQKIFBlcmZvcm1NZW1i ZXJzVHJ1bmNhdGlvbihNdWx0aVhhY3RPZmZzZXQgb2xkZXN0T2Zmc2V0LCBNdWx0aVhhY3RP ZmZzZXQgbmV3T2xkZXN0T2Zmc2V0KQogewotCWNvbnN0IGludDY0IG1heHNlZ21lbnQgPSBN WE9mZnNldFRvTWVtYmVyU2VnbWVudChNYXhNdWx0aVhhY3RPZmZzZXQpOwogCWludDY0CQlz dGFydHNlZ21lbnQgPSBNWE9mZnNldFRvTWVtYmVyU2VnbWVudChvbGRlc3RPZmZzZXQpOwog CWludDY0CQllbmRzZWdtZW50ID0gTVhPZmZzZXRUb01lbWJlclNlZ21lbnQobmV3T2xkZXN0 T2Zmc2V0KTsKIAlpbnQ2NAkJc2VnbWVudCA9IHN0YXJ0c2VnbWVudDsKQEAgLTI3NzgsMTEg KzI3MjUsNyBAQCBQZXJmb3JtTWVtYmVyc1RydW5jYXRpb24oTXVsdGlYYWN0T2Zmc2V0IG9s ZGVzdE9mZnNldCwgTXVsdGlYYWN0T2Zmc2V0IG5ld09sZGVzdAogCQkJICh1bnNpZ25lZCBs b25nIGxvbmcpIHNlZ21lbnQpOwogCQlTbHJ1RGVsZXRlU2VnbWVudChNdWx0aVhhY3RNZW1i ZXJDdGwsIHNlZ21lbnQpOwogCi0JCS8qIG1vdmUgdG8gbmV4dCBzZWdtZW50LCBoYW5kbGlu ZyB3cmFwYXJvdW5kIGNvcnJlY3RseSAqLwotCQlpZiAoc2VnbWVudCA9PSBtYXhzZWdtZW50 KQotCQkJc2VnbWVudCA9IDA7Ci0JCWVsc2UKLQkJCXNlZ21lbnQgKz0gMTsKKwkJc2VnbWVu dCArPSAxOwogCX0KIH0KIApAQCAtMjg4OCwyMyArMjgzMSwxNSBAQCBUcnVuY2F0ZU11bHRp WGFjdChNdWx0aVhhY3RJZCBuZXdPbGRlc3RNdWx0aSwgT2lkIG5ld09sZGVzdE11bHRpREIp CiAJLyoKIAkgKiBGaXJzdCwgY29tcHV0ZSB0aGUgc2FmZSB0cnVuY2F0aW9uIHBvaW50IGZv ciBNdWx0aVhhY3RNZW1iZXIuIFRoaXMgaXMKIAkgKiB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9m IHRoZSBvbGRlc3QgbXVsdGl4YWN0LgotCSAqCi0JICogSG9wZWZ1bGx5LCBmaW5kX211bHRp eGFjdF9zdGFydCB3aWxsIGFsd2F5cyB3b3JrIGhlcmUsIGJlY2F1c2Ugd2UndmUKLQkgKiBh bHJlYWR5IGNoZWNrZWQgdGhhdCBpdCBkb2Vzbid0IHByZWNlZGUgdGhlIGVhcmxpZXN0IE11 bHRpWGFjdCBvbiBkaXNrLgotCSAqIEJ1dCBpZiBpdCBmYWlscywgZG9uJ3QgdHJ1bmNhdGUg YW55dGhpbmcsIGFuZCBsb2cgYSBtZXNzYWdlLgogCSAqLwogCWlmIChvbGRlc3RNdWx0aSA9 PSBuZXh0TXVsdGkpCiAJewogCQkvKiB0aGVyZSBhcmUgTk8gTXVsdGlYYWN0cyAqLwogCQlv bGRlc3RPZmZzZXQgPSBuZXh0T2Zmc2V0OwogCX0KLQllbHNlIGlmICghZmluZF9tdWx0aXhh Y3Rfc3RhcnQob2xkZXN0TXVsdGksICZvbGRlc3RPZmZzZXQpKQorCWVsc2UKIAl7Ci0JCWVy ZXBvcnQoTE9HLAotCQkJCShlcnJtc2coIm9sZGVzdCBNdWx0aVhhY3QgJXUgbm90IGZvdW5k LCBlYXJsaWVzdCBNdWx0aVhhY3QgJXUsIHNraXBwaW5nIHRydW5jYXRpb24iLAotCQkJCQkJ b2xkZXN0TXVsdGksIGVhcmxpZXN0KSkpOwotCQlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdFRy dW5jYXRpb25Mb2NrKTsKLQkJcmV0dXJuOworCQlvbGRlc3RPZmZzZXQgPSBmaW5kX211bHRp eGFjdF9zdGFydChvbGRlc3RNdWx0aSk7CiAJfQogCiAJLyoKQEAgLTI5MTYsMTMgKzI4NTEs OSBAQCBUcnVuY2F0ZU11bHRpWGFjdChNdWx0aVhhY3RJZCBuZXdPbGRlc3RNdWx0aSwgT2lk IG5ld09sZGVzdE11bHRpREIpCiAJCS8qIHRoZXJlIGFyZSBOTyBNdWx0aVhhY3RzICovCiAJ CW5ld09sZGVzdE9mZnNldCA9IG5leHRPZmZzZXQ7CiAJfQotCWVsc2UgaWYgKCFmaW5kX211 bHRpeGFjdF9zdGFydChuZXdPbGRlc3RNdWx0aSwgJm5ld09sZGVzdE9mZnNldCkpCisJZWxz ZQogCXsKLQkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygiY2Fubm90IHRydW5jYXRlIHVw IHRvIE11bHRpWGFjdCAldSBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0IG9uIGRpc2ssIHNr aXBwaW5nIHRydW5jYXRpb24iLAotCQkJCQkJbmV3T2xkZXN0TXVsdGkpKSk7Ci0JCUxXTG9j a1JlbGVhc2UoTXVsdGlYYWN0VHJ1bmNhdGlvbkxvY2spOwotCQlyZXR1cm47CisJCW5ld09s ZGVzdE9mZnNldCA9IGZpbmRfbXVsdGl4YWN0X3N0YXJ0KG5ld09sZGVzdE11bHRpKTsKIAl9 CiAKIAllbG9nKERFQlVHMSwgInBlcmZvcm1pbmcgbXVsdGl4YWN0IHRydW5jYXRpb246ICIK LS0gCjIuMzkuNQoK --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0009-Move-some-macros-to-deal-with-pg_multixact-on-di.patch" Content-Disposition: attachment; filename*0="v10-0009-Move-some-macros-to-deal-with-pg_multixact-on-di.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMDc5OGE5ZGNjZjQ0MmNhODgwZjk4ZmQ2ODJjNzgyOWJhYjI4NjgzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTggRGVjIDIwMjQgMTI6MDg6MjEgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMCAwOS8xNF0gTW92ZSBzb21lIG1hY3JvcyB0byBkZWFsIHdp dGggcGdfbXVsdGl4YWN0IG9uLWRpc2sKIGZvcm1hdCB0byBoZWFkZXIgZmlsZQoKU28gdGhh dCB0aGV5IGNhbiBiZSB1c2VkIGZyb20gcGdfdXBncmFkZSBpbiBuZXh0IGNvbW1pdAotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jICB8IDEwMCArLS0tLS0t LS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwu aCB8IDExNSArKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTE2 IGluc2VydGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaAoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKaW5kZXggMjVmY2E0MzE5MzcuLmI3ODZlZTIzNTYz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtNjksNiAr NjksNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvbXVs dGl4YWN0LmgiCisjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdF9pbnRlcm5hbC5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9zbHJ1LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKQEAgLTkyLDEwNSArOTMsNiBAQAogI2luY2x1 ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCiAKLQotLyoKLSAqIERlZmluZXMgZm9yIE11bHRpWGFjdE9mZnNldCBwYWdlIHNpemVz LiAgQSBwYWdlIGlzIHRoZSBzYW1lIEJMQ0tTWiBhcyBpcwotICogdXNlZCBldmVyeXdoZXJl IGVsc2UgaW4gUG9zdGdyZXMuCi0gKi8KLQotLyogV2UgbmVlZCBmb3VyIGJ5dGVzIHBlciBv ZmZzZXQgKi8KLSNkZWZpbmUgTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0UgKEJMQ0tTWiAv IHNpemVvZihNdWx0aVhhY3RPZmZzZXQpKQotCi1zdGF0aWMgaW5saW5lIGludDY0Ci1NdWx0 aVhhY3RJZFRvT2Zmc2V0UGFnZShNdWx0aVhhY3RJZCBtdWx0aSkKLXsKLQlyZXR1cm4gbXVs dGkgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRTsKLX0KLQotc3RhdGljIGlubGluZSBp bnQKLU11bHRpWGFjdElkVG9PZmZzZXRFbnRyeShNdWx0aVhhY3RJZCBtdWx0aSkKLXsKLQly ZXR1cm4gbXVsdGkgJSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRTsKLX0KLQotc3RhdGlj IGlubGluZSBpbnQ2NAotTXVsdGlYYWN0SWRUb09mZnNldFNlZ21lbnQoTXVsdGlYYWN0SWQg bXVsdGkpCi17Ci0JcmV0dXJuIE11bHRpWGFjdElkVG9PZmZzZXRQYWdlKG11bHRpKSAvIFNM UlVfUEFHRVNfUEVSX1NFR01FTlQ7Ci19Ci0KLS8qCi0gKiBUaGUgc2l0dWF0aW9uIGZvciBt ZW1iZXJzIGlzIGEgYml0IG1vcmUgY29tcGxleDogd2Ugc3RvcmUgb25lIGJ5dGUgb2YKLSAq IGFkZGl0aW9uYWwgZmxhZyBiaXRzIGZvciBlYWNoIFRyYW5zYWN0aW9uSWQuICBUbyBkbyB0 aGlzIHdpdGhvdXQgZ2V0dGluZwotICogaW50byBhbGlnbm1lbnQgaXNzdWVzLCB3ZSBzdG9y ZSBmb3VyIGJ5dGVzIG9mIGZsYWdzLCBhbmQgdGhlbiB0aGUKLSAqIGNvcnJlc3BvbmRpbmcg NCBYaWRzLiAgRWFjaCBzdWNoIDUtd29yZCAoMjAtYnl0ZSkgc2V0IHdlIGNhbGwgYSAiZ3Jv dXAiLCBhbmQKLSAqIGFyZSBzdG9yZWQgYXMgYSB3aG9sZSBpbiBwYWdlcy4gIFRodXMsIHdp dGggOGtCIEJMQ0tTWiwgd2Uga2VlcCA0MDkgZ3JvdXBzCi0gKiBwZXIgcGFnZS4gIFRoaXMg d2FzdGVzIDEyIGJ5dGVzIHBlciBwYWdlLCBidXQgdGhhdCdzIE9LIC0tIHNpbXBsaWNpdHkg KGFuZAotICogcGVyZm9ybWFuY2UpIHRydW1wcyBzcGFjZSBlZmZpY2llbmN5IGhlcmUuCi0g KgotICogTm90ZSB0aGF0IHRoZSAib2Zmc2V0IiBtYWNyb3Mgd29yayB3aXRoIGJ5dGUgb2Zm c2V0LCBub3QgYXJyYXkgaW5kZXhlcywgc28KLSAqIGFyaXRobWV0aWMgbXVzdCBiZSBkb25l IHVzaW5nICJjaGFyICoiIHBvaW50ZXJzLgotICovCi0vKiBXZSBuZWVkIGVpZ2h0IGJpdHMg cGVyIHhhY3QsIHNvIG9uZSB4YWN0IGZpdHMgaW4gYSBieXRlICovCi0jZGVmaW5lIE1YQUNU X01FTUJFUl9CSVRTX1BFUl9YQUNUCQkJOAotI2RlZmluZSBNWEFDVF9NRU1CRVJfRkxBR1Nf UEVSX0JZVEUJCQkxCi0jZGVmaW5lIE1YQUNUX01FTUJFUl9YQUNUX0JJVE1BU0sJKCgxIDw8 IE1YQUNUX01FTUJFUl9CSVRTX1BFUl9YQUNUKSAtIDEpCi0KLS8qIGhvdyBtYW55IGZ1bGwg Ynl0ZXMgb2YgZmxhZ3MgYXJlIHRoZXJlIGluIGEgZ3JvdXA/ICovCi0jZGVmaW5lIE1VTFRJ WEFDVF9GTEFHQllURVNfUEVSX0dST1VQCQk0Ci0jZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJT X1BFUl9NRU1CRVJHUk9VUAlcCi0JKE1VTFRJWEFDVF9GTEFHQllURVNfUEVSX0dST1VQICog TVhBQ1RfTUVNQkVSX0ZMQUdTX1BFUl9CWVRFKQotLyogc2l6ZSBpbiBieXRlcyBvZiBhIGNv bXBsZXRlIGdyb3VwICovCi0jZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFIFwK LQkoc2l6ZW9mKFRyYW5zYWN0aW9uSWQpICogTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJF UkdST1VQICsgTVVMVElYQUNUX0ZMQUdCWVRFU19QRVJfR1JPVVApCi0jZGVmaW5lIE1VTFRJ WEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UgKEJMQ0tTWiAvIE1VTFRJWEFDVF9NRU1CRVJH Uk9VUF9TSVpFKQotI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRQlcCi0JKE1V TFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UgKiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJf TUVNQkVSR1JPVVApCi0KLS8qIHBhZ2UgaW4gd2hpY2ggYSBtZW1iZXIgaXMgdG8gYmUgZm91 bmQgKi8KLXN0YXRpYyBpbmxpbmUgaW50NjQKLU1YT2Zmc2V0VG9NZW1iZXJQYWdlKE11bHRp WGFjdE9mZnNldCBvZmZzZXQpCi17Ci0JcmV0dXJuIG9mZnNldCAvIE1VTFRJWEFDVF9NRU1C RVJTX1BFUl9QQUdFOwotfQotCi1zdGF0aWMgaW5saW5lIGludDY0Ci1NWE9mZnNldFRvTWVt YmVyU2VnbWVudChNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQotewotCXJldHVybiBNWE9mZnNl dFRvTWVtYmVyUGFnZShvZmZzZXQpIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKLX0KLQot LyogTG9jYXRpb24gKGJ5dGUgb2Zmc2V0IHdpdGhpbiBwYWdlKSBvZiBmbGFnIHdvcmQgZm9y IGEgZ2l2ZW4gbWVtYmVyICovCi1zdGF0aWMgaW5saW5lIGludAotTVhPZmZzZXRUb0ZsYWdz T2Zmc2V0KE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCi17Ci0JTXVsdGlYYWN0T2Zmc2V0IGdy b3VwID0gb2Zmc2V0IC8gTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOwotCWlu dAkJCWdyb3Vwb25wZyA9IGdyb3VwICUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFH RTsKLQlpbnQJCQlieXRlb2ZmID0gZ3JvdXBvbnBnICogTVVMVElYQUNUX01FTUJFUkdST1VQ X1NJWkU7Ci0KLQlyZXR1cm4gYnl0ZW9mZjsKLX0KLQotc3RhdGljIGlubGluZSBpbnQKLU1Y T2Zmc2V0VG9GbGFnc0JpdFNoaWZ0KE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCi17Ci0JaW50 CQkJbWVtYmVyX2luX2dyb3VwID0gb2Zmc2V0ICUgTVVMVElYQUNUX01FTUJFUlNfUEVSX01F TUJFUkdST1VQOwotCWludAkJCWJzaGlmdCA9IG1lbWJlcl9pbl9ncm91cCAqIE1YQUNUX01F TUJFUl9CSVRTX1BFUl9YQUNUOwotCi0JcmV0dXJuIGJzaGlmdDsKLX0KLQotLyogTG9jYXRp b24gKGJ5dGUgb2Zmc2V0IHdpdGhpbiBwYWdlKSBvZiBUcmFuc2FjdGlvbklkIG9mIGdpdmVu IG1lbWJlciAqLwotc3RhdGljIGlubGluZSBpbnQKLU1YT2Zmc2V0VG9NZW1iZXJPZmZzZXQo TXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKLXsKLQlpbnQJCQltZW1iZXJfaW5fZ3JvdXAgPSBv ZmZzZXQgJSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVA7Ci0KLQlyZXR1cm4g TVhPZmZzZXRUb0ZsYWdzT2Zmc2V0KG9mZnNldCkgKwotCQlNVUxUSVhBQ1RfRkxBR0JZVEVT X1BFUl9HUk9VUCArCi0JCW1lbWJlcl9pbl9ncm91cCAqIHNpemVvZihUcmFuc2FjdGlvbklk KTsKLX0KLQogLyoKICAqIE11bHRpeGFjdCBtZW1iZXJzIHdhcm5pbmcgdGhyZXNob2xkLgog ICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzllNzRhMjFjNzQKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0X2ludGVybmFsLmgKQEAgLTAs MCArMSwxMTUgQEAKKy8qCisgKiBtdWx0aXhhY3RfaW50ZXJuYWwuaAorICoKKyAqIEludGVy bmFsIGRlZmluaXRpb25zIGZvciB0aGUgb24tZGlzayBmb3JtYXQgb2YgbXVsdGl4YWN0IG1h bmFnZXIuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoK KyAqIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaAorICovCisjaWZu ZGVmIE1VTFRJWEFDVF9JTlRFUk5BTF9ICisjZGVmaW5lIE1VTFRJWEFDVF9JTlRFUk5BTF9I CisKKy8qIEZJWE1FOiBoYWQgdG8gZHVwbGljYXRlIHRoaXMgKi8KKyNkZWZpbmUgU0xSVV9Q QUdFU19QRVJfU0VHTUVOVAkzMgorCisvKgorICogRGVmaW5lcyBmb3IgTXVsdGlYYWN0T2Zm c2V0IHBhZ2Ugc2l6ZXMuICBBIHBhZ2UgaXMgdGhlIHNhbWUgQkxDS1NaIGFzIGlzCisgKiB1 c2VkIGV2ZXJ5d2hlcmUgZWxzZSBpbiBQb3N0Z3Jlcy4KKyAqLworCisvKiBXZSBuZWVkIGZv dXIgYnl0ZXMgcGVyIG9mZnNldCAqLworI2RlZmluZSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJf UEFHRSAoQkxDS1NaIC8gc2l6ZW9mKE11bHRpWGFjdE9mZnNldCkpCisKK3N0YXRpYyBpbmxp bmUgaW50NjQKK011bHRpWGFjdElkVG9PZmZzZXRQYWdlKE11bHRpWGFjdElkIG11bHRpKQor eworCXJldHVybiBtdWx0aSAvIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFOworfQorCitz dGF0aWMgaW5saW5lIGludAorTXVsdGlYYWN0SWRUb09mZnNldEVudHJ5KE11bHRpWGFjdElk IG11bHRpKQoreworCXJldHVybiBtdWx0aSAlIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdF OworfQorCitzdGF0aWMgaW5saW5lIGludDY0CitNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVu dChNdWx0aVhhY3RJZCBtdWx0aSkKK3sKKwlyZXR1cm4gTXVsdGlYYWN0SWRUb09mZnNldFBh Z2UobXVsdGkpIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKK30KKworLyoKKyAqIFRoZSBz aXR1YXRpb24gZm9yIG1lbWJlcnMgaXMgYSBiaXQgbW9yZSBjb21wbGV4OiB3ZSBzdG9yZSBv bmUgYnl0ZSBvZgorICogYWRkaXRpb25hbCBmbGFnIGJpdHMgZm9yIGVhY2ggVHJhbnNhY3Rp b25JZC4gIFRvIGRvIHRoaXMgd2l0aG91dCBnZXR0aW5nCisgKiBpbnRvIGFsaWdubWVudCBp c3N1ZXMsIHdlIHN0b3JlIGZvdXIgYnl0ZXMgb2YgZmxhZ3MsIGFuZCB0aGVuIHRoZQorICog Y29ycmVzcG9uZGluZyA0IFhpZHMuICBFYWNoIHN1Y2ggNS13b3JkICgyMC1ieXRlKSBzZXQg d2UgY2FsbCBhICJncm91cCIsIGFuZAorICogYXJlIHN0b3JlZCBhcyBhIHdob2xlIGluIHBh Z2VzLiAgVGh1cywgd2l0aCA4a0IgQkxDS1NaLCB3ZSBrZWVwIDQwOSBncm91cHMKKyAqIHBl ciBwYWdlLiAgVGhpcyB3YXN0ZXMgMTIgYnl0ZXMgcGVyIHBhZ2UsIGJ1dCB0aGF0J3MgT0sg LS0gc2ltcGxpY2l0eSAoYW5kCisgKiBwZXJmb3JtYW5jZSkgdHJ1bXBzIHNwYWNlIGVmZmlj aWVuY3kgaGVyZS4KKyAqCisgKiBOb3RlIHRoYXQgdGhlICJvZmZzZXQiIG1hY3JvcyB3b3Jr IHdpdGggYnl0ZSBvZmZzZXQsIG5vdCBhcnJheSBpbmRleGVzLCBzbworICogYXJpdGhtZXRp YyBtdXN0IGJlIGRvbmUgdXNpbmcgImNoYXIgKiIgcG9pbnRlcnMuCisgKi8KKy8qIFdlIG5l ZWQgZWlnaHQgYml0cyBwZXIgeGFjdCwgc28gb25lIHhhY3QgZml0cyBpbiBhIGJ5dGUgKi8K KyNkZWZpbmUgTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1QJCQk4CisjZGVmaW5lIE1YQUNU X01FTUJFUl9GTEFHU19QRVJfQllURQkJCTEKKyNkZWZpbmUgTVhBQ1RfTUVNQkVSX1hBQ1Rf QklUTUFTSwkoKDEgPDwgTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1QpIC0gMSkKKworLyog aG93IG1hbnkgZnVsbCBieXRlcyBvZiBmbGFncyBhcmUgdGhlcmUgaW4gYSBncm91cD8gKi8K KyNkZWZpbmUgTVVMVElYQUNUX0ZMQUdCWVRFU19QRVJfR1JPVVAJCTQKKyNkZWZpbmUgTVVM VElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQCVwKKwkoTVVMVElYQUNUX0ZMQUdCWVRF U19QRVJfR1JPVVAgKiBNWEFDVF9NRU1CRVJfRkxBR1NfUEVSX0JZVEUpCisvKiBzaXplIGlu IGJ5dGVzIG9mIGEgY29tcGxldGUgZ3JvdXAgKi8KKyNkZWZpbmUgTVVMVElYQUNUX01FTUJF UkdST1VQX1NJWkUgXAorCShzaXplb2YoVHJhbnNhY3Rpb25JZCkgKiBNVUxUSVhBQ1RfTUVN QkVSU19QRVJfTUVNQkVSR1JPVVAgKyBNVUxUSVhBQ1RfRkxBR0JZVEVTX1BFUl9HUk9VUCkK KyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRSAoQkxDS1NaIC8gTVVM VElYQUNUX01FTUJFUkdST1VQX1NJWkUpCisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJTX1BF Ul9QQUdFCVwKKwkoTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRSAqIE1VTFRJWEFD VF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUCkKKworLyogcGFnZSBpbiB3aGljaCBhIG1lbWJl ciBpcyB0byBiZSBmb3VuZCAqLworc3RhdGljIGlubGluZSBpbnQ2NAorTVhPZmZzZXRUb01l bWJlclBhZ2UoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKK3sKKwlyZXR1cm4gb2Zmc2V0IC8g TVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0U7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50NjQK K01YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCit7CisJ cmV0dXJuIE1YT2Zmc2V0VG9NZW1iZXJQYWdlKG9mZnNldCkgLyBTTFJVX1BBR0VTX1BFUl9T RUdNRU5UOworfQorCisvKiBMb2NhdGlvbiAoYnl0ZSBvZmZzZXQgd2l0aGluIHBhZ2UpIG9m IGZsYWcgd29yZCBmb3IgYSBnaXZlbiBtZW1iZXIgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitN WE9mZnNldFRvRmxhZ3NPZmZzZXQoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKK3sKKwlNdWx0 aVhhY3RPZmZzZXQgZ3JvdXAgPSBvZmZzZXQgLyBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVN QkVSR1JPVVA7CisJaW50CQkJZ3JvdXBvbnBnID0gZ3JvdXAgJSBNVUxUSVhBQ1RfTUVNQkVS R1JPVVBTX1BFUl9QQUdFOworCWludAkJCWJ5dGVvZmYgPSBncm91cG9ucGcgKiBNVUxUSVhB Q1RfTUVNQkVSR1JPVVBfU0laRTsKKworCXJldHVybiBieXRlb2ZmOworfQorCitzdGF0aWMg aW5saW5lIGludAorTVhPZmZzZXRUb0ZsYWdzQml0U2hpZnQoTXVsdGlYYWN0T2Zmc2V0IG9m ZnNldCkKK3sKKwlpbnQJCQltZW1iZXJfaW5fZ3JvdXAgPSBvZmZzZXQgJSBNVUxUSVhBQ1Rf TUVNQkVSU19QRVJfTUVNQkVSR1JPVVA7CisJaW50CQkJYnNoaWZ0ID0gbWVtYmVyX2luX2dy b3VwICogTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1Q7CisKKwlyZXR1cm4gYnNoaWZ0Owor fQorCisvKiBMb2NhdGlvbiAoYnl0ZSBvZmZzZXQgd2l0aGluIHBhZ2UpIG9mIFRyYW5zYWN0 aW9uSWQgb2YgZ2l2ZW4gbWVtYmVyICovCitzdGF0aWMgaW5saW5lIGludAorTVhPZmZzZXRU b01lbWJlck9mZnNldChNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQoreworCWludAkJCW1lbWJl cl9pbl9ncm91cCA9IG9mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9V UDsKKworCXJldHVybiBNWE9mZnNldFRvRmxhZ3NPZmZzZXQob2Zmc2V0KSArCisJCU1VTFRJ WEFDVF9GTEFHQllURVNfUEVSX0dST1VQICsKKwkJbWVtYmVyX2luX2dyb3VwICogc2l6ZW9m KFRyYW5zYWN0aW9uSWQpOworfQorCisjZW5kaWYJCQkJCQkJLyogTVVMVElYQUNUX0lOVEVS TkFMX0ggKi8KLS0gCjIuMzkuNQoK --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0010-rewrite-pg_upgrade-code.patch" Content-Disposition: attachment; filename="v10-0010-rewrite-pg_upgrade-code.patch" Content-Transfer-Encoding: base64 RnJvbSA2Y2M2OWI1MGY2NzdhMDhjNzJlN2ExMGZkMDQzZjJjMGFmNzA3MmJjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTggRGVjIDIwMjQgMDE6MDc6MDMgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMCAxMC8xNF0gcmV3cml0ZSBwZ191cGdyYWRlIGNvZGUKCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgfCAgMzYgKy0KIHNy Yy9iaW4vcGdfdXBncmFkZS9NYWtlZmlsZSAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmlu L3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQgICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ191 cGdyYWRlL211bHRpeGFjdF9vbGQuYyAgICAgfCAzNDAgKysrKysrKysrKysrKysrKwogc3Jj L2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuaCAgICAgfCAgMTIgKwogc3JjL2Jpbi9w Z191cGdyYWRlL211bHRpeGFjdF9yZXdyaXRlLmMgfCAyMzggKysrKysrKysrKysKIHNyYy9i aW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgICAgICAgIHwgIDI5ICstCiBzcmMvYmluL3Bn X3VwZ3JhZGUvcGdfdXBncmFkZS5oICAgICAgICB8ICAgNSArLQogc3JjL2Jpbi9wZ191cGdy YWRlL3NlZ3Jlc2l6ZS5jICAgICAgICAgfCA1MjcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uYyAgICAgICAgICAgfCAyMTQgKysrKysr KysrKwogc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uaCAgICAgICAgICAgfCAgMjMgKysK IDExIGZpbGVzIGNoYW5nZWQsIDg1MSBpbnNlcnRpb25zKCspLCA1ODEgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xk LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X3Jl d3JpdGUuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfdXBncmFkZS9zZWdyZXNp emUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfdXBncmFkZS9zbHJ1X2lvLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9pby5oCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCBiNzg2ZWUyMzU2My4u ZWEwOWY4NjA2Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211 bHRpeGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5j CkBAIC0xMTAzLDcgKzExMDMsNiBAQCBHZXRNdWx0aVhhY3RJZE1lbWJlcnMoTXVsdGlYYWN0 SWQgbXVsdGksIE11bHRpWGFjdE1lbWJlciAqKm1lbWJlcnMsCiAJTXVsdGlYYWN0T2Zmc2V0 ICpvZmZwdHI7CiAJTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDsKIAlpbnQJCQlsZW5ndGg7Ci0J aW50CQkJdHJ1ZWxlbmd0aDsKIAlNdWx0aVhhY3RJZCBvbGRlc3RNWGFjdDsKIAlNdWx0aVhh Y3RJZCBuZXh0TVhhY3Q7CiAJTXVsdGlYYWN0SWQgdG1wTVhhY3Q7CkBAIC0xMjAyLDE2ICsx MjAxLDYgQEAgR2V0TXVsdGlYYWN0SWRNZW1iZXJzKE11bHRpWGFjdElkIG11bHRpLCBNdWx0 aVhhY3RNZW1iZXIgKiptZW1iZXJzLAogCSAqIHdlIGhhdmUganVzdCBmb3IgdGhpczsgdGhl IHByb2Nlc3MgaW4gY2hhcmdlIHdpbGwgc2lnbmFsIHRoZSBDViBhcyBzb29uCiAJICogYXMg aXQgaGFzIGZpbmlzaGVkIHdyaXRpbmcgdGhlIG11bHRpeGFjdCBvZmZzZXQuCiAJICoKLQkg KiBGSVhNRTogY2FzZSAzIGlzIG5vdyBvbmx5IG5lZWRlZCBmb3IgcGdfdXBncmFkZWQgY2x1 c3RlcnMKLQkgKiAzLiBCZWNhdXNlIEdldE5ld011bHRpWGFjdElkIGluY3JlbWVudHMgb2Zm c2V0IHplcm8gdG8gb2Zmc2V0IG9uZSB0bwotCSAqIGhhbmRsZSBjYXNlICMyLCB0aGVyZSBp cyBhbiBhbWJpZ3VpdHkgbmVhciB0aGUgcG9pbnQgb2Ygb2Zmc2V0Ci0JICogd3JhcGFyb3Vu ZC4gIElmIHdlIHNlZSBuZXh0IG11bHRpeGFjdCdzIG9mZnNldCBpcyBvbmUsIGlzIHRoYXQg b3VyCi0JICogbXVsdGl4YWN0J3MgYWN0dWFsIGVuZHBvaW50LCBvciBkaWQgaXQgZW5kIGF0 IHplcm8gd2l0aCBhIHN1YnNlcXVlbnQKLQkgKiBpbmNyZW1lbnQ/ICBXZSBoYW5kbGUgdGhp cyB1c2luZyB0aGUga25vd2xlZGdlIHRoYXQgaWYgdGhlIHplcm8ndGgKLQkgKiBtZW1iZXIg c2xvdCB3YXNuJ3QgZmlsbGVkLCBpdCdsbCBjb250YWluIHplcm8sIGFuZCB6ZXJvIGlzbid0 IGEgdmFsaWQKLQkgKiB0cmFuc2FjdGlvbiBJRCBzbyBpdCBjYW4ndCBiZSBhIG11bHRpeGFj dCBtZW1iZXIuICBUaGVyZWZvcmUsIGlmIHdlCi0JICogcmVhZCBhIHplcm8gZnJvbSB0aGUg bWVtYmVycyBhcnJheSwganVzdCBpZ25vcmUgaXQuCi0JICoKIAkgKiBUaGlzIGlzIGFsbCBw cmV0dHkgbWVzc3ksIGJ1dCB0aGUgbWVzcyBvY2N1cnMgb25seSBpbiBpbmZyZXF1ZW50IGNv cm5lcgogCSAqIGNhc2VzLCBzbyBpdCBzZWVtcyBiZXR0ZXIgdGhhbiBob2xkaW5nIHRoZSBN dWx0aVhhY3RHZW5Mb2NrIGZvciBhIGxvbmcKIAkgKiB0aW1lIG9uIGV2ZXJ5IG11bHRpeGFj dCBjcmVhdGlvbi4KQEAgLTEyOTgsNiArMTI4Nyw5IEBAIHJldHJ5OgogCUxXTG9ja1JlbGVh c2UobG9jayk7CiAJbG9jayA9IE5VTEw7CiAKKwkvKiBBIG11bHRpeGlkIHdpdGggemVybyBt ZW1iZXJzIHNob3VsZCBub3QgaGFwcGVuICovCisJQXNzZXJ0KGxlbmd0aCA+IDApOworCiAJ LyoKIAkgKiBJZiB3ZSBzbGVwdCBhYm92ZSwgY2xlYW4gdXAgc3RhdGU7IGl0J3Mgbm8gbG9u Z2VyIG5lZWRlZC4KIAkgKi8KQEAgLTEzMDYsNyArMTI5OCw2IEBAIHJldHJ5OgogCiAJcHRy ID0gKE11bHRpWGFjdE1lbWJlciAqKSBwYWxsb2MobGVuZ3RoICogc2l6ZW9mKE11bHRpWGFj dE1lbWJlcikpOwogCi0JdHJ1ZWxlbmd0aCA9IDA7CiAJcHJldl9wYWdlbm8gPSAtMTsKIAlm b3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrLCBvZmZzZXQrKykKIAl7CkBAIC0xMzQ0 LDM2ICsxMzM1LDI3IEBAIHJldHJ5OgogCQl4YWN0cHRyID0gKFRyYW5zYWN0aW9uSWQgKikK IAkJCShNdWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSAr IG1lbWJlcm9mZik7CiAKLQkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGFjdHB0cikp Ci0JCXsKLQkJCS8qIENvcm5lciBjYXNlIDM6IHdlIG11c3QgYmUgbG9va2luZyBhdCB1bnVz ZWQgc2xvdCB6ZXJvICovCi0JCQlBc3NlcnQob2Zmc2V0ID09IDApOwotCQkJY29udGludWU7 Ci0JCX0KKwkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKCp4YWN0cHRyKSk7CiAKIAkJ ZmxhZ3NvZmYgPSBNWE9mZnNldFRvRmxhZ3NPZmZzZXQob2Zmc2V0KTsKIAkJYnNoaWZ0ID0g TVhPZmZzZXRUb0ZsYWdzQml0U2hpZnQob2Zmc2V0KTsKIAkJZmxhZ3NwdHIgPSAodWludDMy ICopIChNdWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSAr IGZsYWdzb2ZmKTsKIAotCQlwdHJbdHJ1ZWxlbmd0aF0ueGlkID0gKnhhY3RwdHI7Ci0JCXB0 clt0cnVlbGVuZ3RoXS5zdGF0dXMgPSAoKmZsYWdzcHRyID4+IGJzaGlmdCkgJiBNWEFDVF9N RU1CRVJfWEFDVF9CSVRNQVNLOwotCQl0cnVlbGVuZ3RoKys7CisJCXB0cltpXS54aWQgPSAq eGFjdHB0cjsKKwkJcHRyW2ldLnN0YXR1cyA9ICgqZmxhZ3NwdHIgPj4gYnNoaWZ0KSAmIE1Y QUNUX01FTUJFUl9YQUNUX0JJVE1BU0s7CiAJfQogCiAJTFdMb2NrUmVsZWFzZShsb2NrKTsK IAotCS8qIEEgbXVsdGl4aWQgd2l0aCB6ZXJvIG1lbWJlcnMgc2hvdWxkIG5vdCBoYXBwZW4g Ki8KLQlBc3NlcnQodHJ1ZWxlbmd0aCA+IDApOwotCiAJLyoKIAkgKiBDb3B5IHRoZSByZXN1 bHQgaW50byB0aGUgbG9jYWwgY2FjaGUuCiAJICovCi0JbVhhY3RDYWNoZVB1dChtdWx0aSwg dHJ1ZWxlbmd0aCwgcHRyKTsKKwltWGFjdENhY2hlUHV0KG11bHRpLCBsZW5ndGgsIHB0cik7 CiAKIAlkZWJ1Z19lbG9nMyhERUJVRzIsICJHZXRNZW1iZXJzOiBubyBjYWNoZSBmb3IgJXMi LAotCQkJCW14aWRfdG9fc3RyaW5nKG11bHRpLCB0cnVlbGVuZ3RoLCBwdHIpKTsKKwkJCQlt eGlkX3RvX3N0cmluZyhtdWx0aSwgbGVuZ3RoLCBwdHIpKTsKIAkqbWVtYmVycyA9IHB0cjsK LQlyZXR1cm4gdHJ1ZWxlbmd0aDsKKwlyZXR1cm4gbGVuZ3RoOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ191cGdyYWRl L01ha2VmaWxlCmluZGV4IDcwOTA4ZDYzYTMxLi5iNGFkMDFjMDBiMiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9N YWtlZmlsZQpAQCAtMTksMTIgKzE5LDE0IEBAIE9CSlMgPSBcCiAJZmlsZS5vIFwKIAlmdW5j dGlvbi5vIFwKIAlpbmZvLm8gXAorCW11bHRpeGFjdF9vbGQubyBcCisJbXVsdGl4YWN0X3Jl d3JpdGUubyBcCiAJb3B0aW9uLm8gXAogCXBhcmFsbGVsLm8gXAotCXNlZ3Jlc2l6ZS5vIFwK IAlwZ191cGdyYWRlLm8gXAogCXJlbGZpbGVudW1iZXIubyBcCiAJc2VydmVyLm8gXAorCXNs cnVfaW8ubyBcCiAJdGFibGVzcGFjZS5vIFwKIAl0YXNrLm8gXAogCXV0aWwubyBcCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX3Vw Z3JhZGUvbWVzb24uYnVpbGQKaW5kZXggMTZmODk4YmExNDguLjJkZmZjNDhiM2QyIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9w Z191cGdyYWRlL21lc29uLmJ1aWxkCkBAIC04LDEyICs4LDE0IEBAIHBnX3VwZ3JhZGVfc291 cmNlcyA9IGZpbGVzKAogICAnZmlsZS5jJywKICAgJ2Z1bmN0aW9uLmMnLAogICAnaW5mby5j JywKKyAgJ211bHRpeGFjdF9vbGQuYycsCisgICdtdWx0aXhhY3RfcmV3cml0ZS5jJywKICAg J29wdGlvbi5jJywKICAgJ3BhcmFsbGVsLmMnLAotICAnc2VncmVzaXplLmMnLAogICAncGdf dXBncmFkZS5jJywKICAgJ3JlbGZpbGVudW1iZXIuYycsCiAgICdzZXJ2ZXIuYycsCisgICdz bHJ1X2lvLmMnLAogICAndGFibGVzcGFjZS5jJywKICAgJ3Rhc2suYycsCiAgICd1dGlsLmMn LApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuYyBiL3Ny Yy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjE0OTg4YzEwNWNlCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuYwpAQCAtMCwwICsxLDM0MCBAQAorLyoK KyAqCW11bHRpeGFjdF9vbGQuYworICoKKyAqCVN1cHBvcnQgZm9yIHJlYWRpbmcgcHJlLXYx OCBmb3JtYXQgcGdfbXVsdGl4YWN0IGZpbGVzCisgKgorICoJQ29weXJpZ2h0IChjKSAyMDI0 LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoJc3JjL2Jpbi9wZ191 cGdyYWRlL211bHRpeGFjdF9vbGQuYworICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5o IgorCisjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKKyNpbmNsdWRlICJwZ191cGdyYWRl LmgiCisjaW5jbHVkZSAibXVsdGl4YWN0X29sZC5oIgorI2luY2x1ZGUgInNscnVfaW8uaCIK KworLyoKKyAqIEJlbG93IGFyZSBhIGJ1bmNoIG9mIGRlZmluaXRpb25zIHRoYXQgYXJlIGNv cHktcGFzdGVkIGZyb20gbXVsdGl4YWN0LmMgZnJvbQorICogdmVyc2lvbiAxNy4gVGhleSBz aGFkb3cgdGhlIG5ldyBkZWZpbml0aW9ucyBpbiBhY2Nlc3MvbXVsdGl4YWN0LmgsIHNvIGl0 J3MKKyAqIGltcG9ydGFudCB0aGF0IHdlICpkb24ndCogaW5jbHVkZSB0aGF0IGhlcmUuIFRo YXQncyBpcyBhIGJpZyByZWFzb24gdGhpcworICogY29kZSBoYXMgdG8gYmUgaW4gYSBzZXBh cmF0ZSBzb3VyY2UgZmlsZS4KKyAqCisgKiBBbGwgcmVmZXJlbmNlcyB0byBNdWx0aVhhY3RP ZmZzZXQgaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggT2xkTXVsdGlYYWN0T2Zmc2V0OworICov Cit0eXBlZGVmIHVpbnQzMiBPbGRNdWx0aVhhY3RPZmZzZXQ7CisKKyNkZWZpbmUgRmlyc3RN dWx0aVhhY3RJZAkoKE11bHRpWGFjdElkKSAxKQorCisvKgorICogUG9zc2libGUgbXVsdGl4 YWN0IGxvY2sgbW9kZXMgKCJzdGF0dXMiKS4gIFRoZSBmaXJzdCBmb3VyIG1vZGVzIGFyZSBm b3IKKyAqIHR1cGxlIGxvY2tzIChGT1IgS0VZIFNIQVJFLCBGT1IgU0hBUkUsIEZPUiBOTyBL RVkgVVBEQVRFLCBGT1IgVVBEQVRFKTsgdGhlCisgKiBuZXh0IHR3byBhcmUgdXNlZCBmb3Ig dXBkYXRlIGFuZCBkZWxldGUgbW9kZXMuCisgKi8KK3R5cGVkZWYgZW51bQoreworCU11bHRp WGFjdFN0YXR1c0ZvcktleVNoYXJlID0gMHgwMCwKKwlNdWx0aVhhY3RTdGF0dXNGb3JTaGFy ZSA9IDB4MDEsCisJTXVsdGlYYWN0U3RhdHVzRm9yTm9LZXlVcGRhdGUgPSAweDAyLAorCU11 bHRpWGFjdFN0YXR1c0ZvclVwZGF0ZSA9IDB4MDMsCisJLyogYW4gdXBkYXRlIHRoYXQgZG9l c24ndCB0b3VjaCAia2V5IiBjb2x1bW5zICovCisJTXVsdGlYYWN0U3RhdHVzTm9LZXlVcGRh dGUgPSAweDA0LAorCS8qIG90aGVyIHVwZGF0ZXMsIGFuZCBkZWxldGUgKi8KKwlNdWx0aVhh Y3RTdGF0dXNVcGRhdGUgPSAweDA1LAorfSBNdWx0aVhhY3RTdGF0dXM7CisKKy8qIGRvZXMg YSBzdGF0dXMgdmFsdWUgY29ycmVzcG9uZCB0byBhIHR1cGxlIHVwZGF0ZT8gKi8KKyNkZWZp bmUgSVNVUERBVEVfZnJvbV9teHN0YXR1cyhzdGF0dXMpIFwKKwkJCSgoc3RhdHVzKSA+IE11 bHRpWGFjdFN0YXR1c0ZvclVwZGF0ZSkKKworLyoKKyAqIERlZmluZXMgZm9yIE9sZE11bHRp WGFjdE9mZnNldCBwYWdlIHNpemVzLiAgQSBwYWdlIGlzIHRoZSBzYW1lIEJMQ0tTWiBhcyBp cworICogdXNlZCBldmVyeXdoZXJlIGVsc2UgaW4gUG9zdGdyZXMuCisgKgorICogTm90ZTog YmVjYXVzZSBPbGRNdWx0aVhhY3RPZmZzZXRzIGFyZSAzMiBiaXRzIGFuZCB3cmFwIGFyb3Vu ZCBhdCAweEZGRkZGRkZGLAorICogTXVsdGlYYWN0IHBhZ2UgbnVtYmVyaW5nIGFsc28gd3Jh cHMgYXJvdW5kIGF0CisgKiAweEZGRkZGRkZGL01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdF LCBhbmQgc2VnbWVudCBudW1iZXJpbmcgYXQKKyAqIDB4RkZGRkZGRkYvTVVMVElYQUNUX09G RlNFVFNfUEVSX1BBR0UvU0xSVV9QQUdFU19QRVJfU0VHTUVOVC4gIFdlIG5lZWQKKyAqIHRh a2Ugbm8gZXhwbGljaXQgbm90aWNlIG9mIHRoYXQgZmFjdCBpbiB0aGlzIG1vZHVsZSwgZXhj ZXB0IHdoZW4gY29tcGFyaW5nCisgKiBzZWdtZW50IGFuZCBwYWdlIG51bWJlcnMgaW4gVHJ1 bmNhdGVNdWx0aVhhY3QgKHNlZQorICogT2xkTXVsdGlYYWN0T2Zmc2V0UGFnZVByZWNlZGVz KS4KKyAqLworCisvKiBXZSBuZWVkIGZvdXIgYnl0ZXMgcGVyIG9mZnNldCAqLworI2RlZmlu ZSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSAoQkxDS1NaIC8gc2l6ZW9mKHVpbnQzMikp CisKK3N0YXRpYyBpbmxpbmUgaW50NjQKK011bHRpWGFjdElkVG9PZmZzZXRQYWdlKE11bHRp WGFjdElkIG11bHRpKQoreworCXJldHVybiBtdWx0aSAvIE1VTFRJWEFDVF9PRkZTRVRTX1BF Ul9QQUdFOworfQorCitzdGF0aWMgaW5saW5lIGludAorTXVsdGlYYWN0SWRUb09mZnNldEVu dHJ5KE11bHRpWGFjdElkIG11bHRpKQoreworCXJldHVybiBtdWx0aSAlIE1VTFRJWEFDVF9P RkZTRVRTX1BFUl9QQUdFOworfQorCitzdGF0aWMgaW5saW5lIGludDY0CitNdWx0aVhhY3RJ ZFRvT2Zmc2V0U2VnbWVudChNdWx0aVhhY3RJZCBtdWx0aSkKK3sKKwlyZXR1cm4gTXVsdGlY YWN0SWRUb09mZnNldFBhZ2UobXVsdGkpIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKK30K KworLyoKKyAqIFRoZSBzaXR1YXRpb24gZm9yIG1lbWJlcnMgaXMgYSBiaXQgbW9yZSBjb21w bGV4OiB3ZSBzdG9yZSBvbmUgYnl0ZSBvZgorICogYWRkaXRpb25hbCBmbGFnIGJpdHMgZm9y IGVhY2ggVHJhbnNhY3Rpb25JZC4gIFRvIGRvIHRoaXMgd2l0aG91dCBnZXR0aW5nCisgKiBp bnRvIGFsaWdubWVudCBpc3N1ZXMsIHdlIHN0b3JlIGZvdXIgYnl0ZXMgb2YgZmxhZ3MsIGFu ZCB0aGVuIHRoZQorICogY29ycmVzcG9uZGluZyA0IFhpZHMuICBFYWNoIHN1Y2ggNS13b3Jk ICgyMC1ieXRlKSBzZXQgd2UgY2FsbCBhICJncm91cCIsIGFuZAorICogYXJlIHN0b3JlZCBh cyBhIHdob2xlIGluIHBhZ2VzLiAgVGh1cywgd2l0aCA4a0IgQkxDS1NaLCB3ZSBrZWVwIDQw OSBncm91cHMKKyAqIHBlciBwYWdlLiAgVGhpcyB3YXN0ZXMgMTIgYnl0ZXMgcGVyIHBhZ2Us IGJ1dCB0aGF0J3MgT0sgLS0gc2ltcGxpY2l0eSAoYW5kCisgKiBwZXJmb3JtYW5jZSkgdHJ1 bXBzIHNwYWNlIGVmZmljaWVuY3kgaGVyZS4KKyAqCisgKiBOb3RlIHRoYXQgdGhlICJvZmZz ZXQiIG1hY3JvcyB3b3JrIHdpdGggYnl0ZSBvZmZzZXQsIG5vdCBhcnJheSBpbmRleGVzLCBz bworICogYXJpdGhtZXRpYyBtdXN0IGJlIGRvbmUgdXNpbmcgImNoYXIgKiIgcG9pbnRlcnMu CisgKi8KKy8qIFdlIG5lZWQgZWlnaHQgYml0cyBwZXIgeGFjdCwgc28gb25lIHhhY3QgZml0 cyBpbiBhIGJ5dGUgKi8KKyNkZWZpbmUgTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1QJCQk4 CisjZGVmaW5lIE1YQUNUX01FTUJFUl9GTEFHU19QRVJfQllURQkJCTEKKyNkZWZpbmUgTVhB Q1RfTUVNQkVSX1hBQ1RfQklUTUFTSwkoKDEgPDwgTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hB Q1QpIC0gMSkKKworLyogaG93IG1hbnkgZnVsbCBieXRlcyBvZiBmbGFncyBhcmUgdGhlcmUg aW4gYSBncm91cD8gKi8KKyNkZWZpbmUgTVVMVElYQUNUX0ZMQUdCWVRFU19QRVJfR1JPVVAJ CTQKKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQCVwKKwkoTVVM VElYQUNUX0ZMQUdCWVRFU19QRVJfR1JPVVAgKiBNWEFDVF9NRU1CRVJfRkxBR1NfUEVSX0JZ VEUpCisvKiBzaXplIGluIGJ5dGVzIG9mIGEgY29tcGxldGUgZ3JvdXAgKi8KKyNkZWZpbmUg TVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUgXAorCShzaXplb2YoVHJhbnNhY3Rpb25JZCkg KiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVAgKyBNVUxUSVhBQ1RfRkxBR0JZ VEVTX1BFUl9HUk9VUCkKKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFH RSAoQkxDS1NaIC8gTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUpCisjZGVmaW5lIE1VTFRJ WEFDVF9NRU1CRVJTX1BFUl9QQUdFCVwKKwkoTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJf UEFHRSAqIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUCkKKworLyogcGFnZSBp biB3aGljaCBhIG1lbWJlciBpcyB0byBiZSBmb3VuZCAqLworc3RhdGljIGlubGluZSBpbnQ2 NAorTVhPZmZzZXRUb01lbWJlclBhZ2UoT2xkTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKK3sK KwlyZXR1cm4gb2Zmc2V0IC8gTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0U7Cit9CisKKy8q IExvY2F0aW9uIChieXRlIG9mZnNldCB3aXRoaW4gcGFnZSkgb2YgZmxhZyB3b3JkIGZvciBh IGdpdmVuIG1lbWJlciAqLworc3RhdGljIGlubGluZSBpbnQKK01YT2Zmc2V0VG9GbGFnc09m ZnNldChPbGRNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQoreworCU9sZE11bHRpWGFjdE9mZnNl dCBncm91cCA9IG9mZnNldCAvIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUDsK KwlpbnQJCQlncm91cG9ucGcgPSBncm91cCAlIE1VTFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVS X1BBR0U7CisJaW50CQkJYnl0ZW9mZiA9IGdyb3Vwb25wZyAqIE1VTFRJWEFDVF9NRU1CRVJH Uk9VUF9TSVpFOworCisJcmV0dXJuIGJ5dGVvZmY7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50 CitNWE9mZnNldFRvRmxhZ3NCaXRTaGlmdChPbGRNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQor eworCWludAkJCW1lbWJlcl9pbl9ncm91cCA9IG9mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJT X1BFUl9NRU1CRVJHUk9VUDsKKwlpbnQJCQlic2hpZnQgPSBtZW1iZXJfaW5fZ3JvdXAgKiBN WEFDVF9NRU1CRVJfQklUU19QRVJfWEFDVDsKKworCXJldHVybiBic2hpZnQ7Cit9CisKKy8q IExvY2F0aW9uIChieXRlIG9mZnNldCB3aXRoaW4gcGFnZSkgb2YgVHJhbnNhY3Rpb25JZCBv ZiBnaXZlbiBtZW1iZXIgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitNWE9mZnNldFRvTWVtYmVy T2Zmc2V0KE9sZE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCit7CisJaW50CQkJbWVtYmVyX2lu X2dyb3VwID0gb2Zmc2V0ICUgTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOwor CisJcmV0dXJuIE1YT2Zmc2V0VG9GbGFnc09mZnNldChvZmZzZXQpICsKKwkJTVVMVElYQUNU X0ZMQUdCWVRFU19QRVJfR1JPVVAgKworCQltZW1iZXJfaW5fZ3JvdXAgKiBzaXplb2YoVHJh bnNhY3Rpb25JZCk7Cit9CisKK3R5cGVkZWYgc3RydWN0IE9sZE11bHRpWGFjdFJlYWRlcgor eworCU11bHRpWGFjdElkIG5leHRNWGFjdDsKKwl1aW50MzIJbmV4dE9mZnNldDsKKworCVNs cnVTZWdTdGF0ZSAqb2Zmc2V0OworCVNscnVTZWdTdGF0ZSAqbWVtYmVyczsKK30gT2xkTXVs dGlYYWN0UmVhZGVyOworCitPbGRNdWx0aVhhY3RSZWFkZXIgKgorU3RhcnRPbGRNdWx0aVhh Y3RSZWFkKHZvaWQpCit7CisJT2xkTXVsdGlYYWN0UmVhZGVyICpzdGF0ZTsKKwljaGFyCSAg ICpkaXI7CisKKwlzdGF0ZSA9IHBnX21hbGxvYyhzaXplb2YoT2xkTXVsdGlYYWN0UmVhZGVy KSk7CisJc3RhdGUtPm5leHRNWGFjdCA9IG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3Bu dF9ueHRtdWx0aTsKKwlzdGF0ZS0+bmV4dE9mZnNldCA9IG9sZF9jbHVzdGVyLmNvbnRyb2xk YXRhLmNoa3BudF9ueHRteG9mZjsKKworCWRpciA9IHBzcHJpbnRmKCIlcy9wZ19tdWx0aXhh Y3Qvb2Zmc2V0cyIsIG9sZF9jbHVzdGVyLnBnZGF0YSk7CisJc3RhdGUtPm9mZnNldCA9IE9w ZW5TbHJ1UmVhZChkaXIpOworCXBnX2ZyZWUoZGlyKTsKKworCWRpciA9IHBzcHJpbnRmKCIl cy9wZ19tdWx0aXhhY3QvbWVtYmVycyIsIG9sZF9jbHVzdGVyLnBnZGF0YSk7CisJc3RhdGUt Pm1lbWJlcnMgPSBPcGVuU2xydVJlYWQoZGlyKTsKKwlwZ19mcmVlKGRpcik7CisKKwlyZXR1 cm4gc3RhdGU7Cit9CisKKy8qCisgKiBUaGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9m IHRoZSBHZXRNdWx0aVhhY3RJZE1lbWJlcnMoKSBzZXJ2ZXIgZnVuY3Rpb24uCisgKgorICog LSBPbmx5IHJldHVybiB0aGUgdXBkYXRpbmcgbWVtYmVyLCBpZiBhbnkuIFVwZ3JhZGUgb25s eSBjYXJlcyBhYm91dCB0aGUgdXBkYXRlcnMuCisgKiAgIElmIHRoZXJlIGlzIG5vIHVwZGF0 aW5nIG1lbWJlciwgcmV0dXJuIHRoZSBmaXJzdCBsb2NraW5nLW9ubHkgbWVtYmVyLiBXZSBk b24ndAorICogICBoYXZlIGFueSB3YXkgdG8gcmVwcmVzZW50ICJubyBtZW1iZXJzIiwgYnV0 IHdlIGFsc28gZG9uJ3QgbmVlZCB0byBwcmVzZXJ2ZSBhbGwKKyAqICAgdGhlIGxvY2tpbmcg bWVtYmVycy4KKyAqCisgKiAtIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgbG9ja2lu ZyBhbmQgc29tZSBjb3JuZXIgY2FzZXMgYmVjYXVzZSB0aGVyZSdzCisgKiAgIG5vIGNvbmN1 cnJlbnQgYWN0aXZpdHkuCisgKi8KK3ZvaWQKK0dldE9sZE11bHRpWGFjdElkU2luZ2xlTWVt YmVyKE9sZE11bHRpWGFjdFJlYWRlciAqc3RhdGUsIE11bHRpWGFjdElkIG11bHRpLAorCQkJ CQkJCSAgVHJhbnNhY3Rpb25JZCAqcmVzdWx0LCBib29sICppc3VwZGF0ZSkKK3sKKwlUcmFu c2FjdGlvbklkIHJlc3VsdF94aWQ7CisJYm9vbAkJcmVzdWx0X2lzdXBkYXRlOworCWludDY0 CQlwYWdlbm87CisJaW50NjQJCXByZXZfcGFnZW5vOworCWludAkJCWVudHJ5bm87CisJT2xk TXVsdGlYYWN0T2Zmc2V0ICpvZmZwdHI7CisJT2xkTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDsK KwlpbnQJCQlsZW5ndGg7CisJTXVsdGlYYWN0SWQgbmV4dE1YYWN0OworCU11bHRpWGFjdElk IHRtcE1YYWN0OworCU9sZE11bHRpWGFjdE9mZnNldCBuZXh0T2Zmc2V0OworCWNoYXIJICAg KmJ1ZjsKKworCW5leHRNWGFjdCA9IHN0YXRlLT5uZXh0TVhhY3Q7CisJbmV4dE9mZnNldCA9 IHN0YXRlLT5uZXh0T2Zmc2V0OworCisJLyoKKwkgKiBGaW5kIG91dCB0aGUgb2Zmc2V0IGF0 IHdoaWNoIHdlIG5lZWQgdG8gc3RhcnQgcmVhZGluZyBNdWx0aVhhY3RNZW1iZXJzCisJICog YW5kIHRoZSBudW1iZXIgb2YgbWVtYmVycyBpbiB0aGUgbXVsdGl4YWN0LiAgV2UgZGV0ZXJt aW5lIHRoZSBsYXR0ZXIgYXMKKwkgKiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgbXVs dGl4YWN0J3Mgc3RhcnRpbmcgb2Zmc2V0IGFuZCB0aGUgbmV4dAorCSAqIG9uZSdzLiAgSG93 ZXZlciwgdGhlcmUgYXJlIHNvbWUgY29ybmVyIGNhc2VzIHRvIHdvcnJ5IGFib3V0OgorCSAq CisJICogMS4gVGhpcyBtdWx0aXhhY3QgbWF5IGJlIHRoZSBsYXRlc3Qgb25lIGNyZWF0ZWQs IGluIHdoaWNoIGNhc2UgdGhlcmUgaXMKKwkgKiBubyBuZXh0IG9uZSB0byBsb29rIGF0LiAg SW4gdGhpcyBjYXNlIHRoZSBuZXh0T2Zmc2V0IHZhbHVlIHdlIGp1c3QKKwkgKiBzYXZlZCBp cyB0aGUgY29ycmVjdCBlbmRwb2ludC4KKwkgKgorCSAqIDIuICh0aGlzIGNhbm5vdCBoYXBw ZW4gZHVyaW5nIHVwZ3JhZGUpCisJICoKKwkgKiAzLiBCZWNhdXNlIEdldE5ld011bHRpWGFj dElkIGluY3JlbWVudHMgb2Zmc2V0IHplcm8gdG8gb2Zmc2V0IG9uZSB0bworCSAqIGhhbmRs ZSBjYXNlICMyLCB0aGVyZSBpcyBhbiBhbWJpZ3VpdHkgbmVhciB0aGUgcG9pbnQgb2Ygb2Zm c2V0CisJICogd3JhcGFyb3VuZC4gIElmIHdlIHNlZSBuZXh0IG11bHRpeGFjdCdzIG9mZnNl dCBpcyBvbmUsIGlzIHRoYXQgb3VyCisJICogbXVsdGl4YWN0J3MgYWN0dWFsIGVuZHBvaW50 LCBvciBkaWQgaXQgZW5kIGF0IHplcm8gd2l0aCBhIHN1YnNlcXVlbnQKKwkgKiBpbmNyZW1l bnQ/ICBXZSBoYW5kbGUgdGhpcyB1c2luZyB0aGUga25vd2xlZGdlIHRoYXQgaWYgdGhlIHpl cm8ndGgKKwkgKiBtZW1iZXIgc2xvdCB3YXNuJ3QgZmlsbGVkLCBpdCdsbCBjb250YWluIHpl cm8sIGFuZCB6ZXJvIGlzbid0IGEgdmFsaWQKKwkgKiB0cmFuc2FjdGlvbiBJRCBzbyBpdCBj YW4ndCBiZSBhIG11bHRpeGFjdCBtZW1iZXIuICBUaGVyZWZvcmUsIGlmIHdlCisJICogcmVh ZCBhIHplcm8gZnJvbSB0aGUgbWVtYmVycyBhcnJheSwganVzdCBpZ25vcmUgaXQuCisJICov CisJcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UobXVsdGkpOworCWVudHJ5bm8g PSBNdWx0aVhhY3RJZFRvT2Zmc2V0RW50cnkobXVsdGkpOworCisJYnVmID0gU2xydVJlYWRT d2l0Y2hQYWdlKHN0YXRlLT5vZmZzZXQsIHBhZ2Vubyk7CisJb2ZmcHRyID0gKE9sZE11bHRp WGFjdE9mZnNldCAqKSBidWY7CisJb2ZmcHRyICs9IGVudHJ5bm87CisJb2Zmc2V0ID0gKm9m ZnB0cjsKKworCUFzc2VydChvZmZzZXQgIT0gMCk7CisKKwkvKgorCSAqIFVzZSB0aGUgc2Ft ZSBpbmNyZW1lbnQgcnVsZSBhcyBHZXROZXdNdWx0aVhhY3RJZCgpLCB0aGF0IGlzLCBkb24n dAorCSAqIGhhbmRsZSB3cmFwYXJvdW5kIGV4cGxpY2l0bHkgdW50aWwgbmVlZGVkLgorCSAq LworCXRtcE1YYWN0ID0gbXVsdGkgKyAxOworCisJaWYgKG5leHRNWGFjdCA9PSB0bXBNWGFj dCkKKwl7CisJCS8qIENvcm5lciBjYXNlIDE6IHRoZXJlIGlzIG5vIG5leHQgbXVsdGl4YWN0 ICovCisJCWxlbmd0aCA9IG5leHRPZmZzZXQgLSBvZmZzZXQ7CisJfQorCWVsc2UKKwl7CisJ CU9sZE11bHRpWGFjdE9mZnNldCBuZXh0TVhPZmZzZXQ7CisKKwkJLyogaGFuZGxlIHdyYXBh cm91bmQgaWYgbmVlZGVkICovCisJCWlmICh0bXBNWGFjdCA8IEZpcnN0TXVsdGlYYWN0SWQp CisJCQl0bXBNWGFjdCA9IEZpcnN0TXVsdGlYYWN0SWQ7CisKKwkJcHJldl9wYWdlbm8gPSBw YWdlbm87CisKKwkJcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UodG1wTVhhY3Qp OworCQllbnRyeW5vID0gTXVsdGlYYWN0SWRUb09mZnNldEVudHJ5KHRtcE1YYWN0KTsKKwor CQlpZiAocGFnZW5vICE9IHByZXZfcGFnZW5vKQorCQl7CisJCQlidWYgPSBTbHJ1UmVhZFN3 aXRjaFBhZ2Uoc3RhdGUtPm9mZnNldCwgcGFnZW5vKTsKKwkJfQorCisJCW9mZnB0ciA9IChP bGRNdWx0aVhhY3RPZmZzZXQgKikgYnVmOworCQlvZmZwdHIgKz0gZW50cnlubzsKKwkJbmV4 dE1YT2Zmc2V0ID0gKm9mZnB0cjsKKworCQlpZiAobmV4dE1YT2Zmc2V0ID09IDApCisJCXsK KwkJCS8qIENvcm5lciBjYXNlIDI6IG5leHQgbXVsdGl4YWN0IGlzIHN0aWxsIGJlaW5nIGZp bGxlZCBpbiAqLworCQkJQXNzZXJ0KGZhbHNlKTsgLyogc2hvdWxkbid0IGhhcHBlbiBkdXJp bmcgdXBncmFkZSAqLworCQl9CisKKwkJbGVuZ3RoID0gbmV4dE1YT2Zmc2V0IC0gb2Zmc2V0 OworCX0KKworCXJlc3VsdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlyZXN1bHRf aXN1cGRhdGUgPSBmYWxzZTsKKwlwcmV2X3BhZ2VubyA9IC0xOworCWZvciAoaW50IGkgPSAw OyBpIDwgbGVuZ3RoOyBpKyssIG9mZnNldCsrKQorCXsKKwkJVHJhbnNhY3Rpb25JZCAqeGFj dHB0cjsKKwkJdWludDMyCSAgICpmbGFnc3B0cjsKKwkJaW50CQkJZmxhZ3NvZmY7CisJCWlu dAkJCWJzaGlmdDsKKwkJaW50CQkJbWVtYmVyb2ZmOworCQlNdWx0aVhhY3RTdGF0dXMgc3Rh dHVzOworCisJCXBhZ2VubyA9IE1YT2Zmc2V0VG9NZW1iZXJQYWdlKG9mZnNldCk7CisJCW1l bWJlcm9mZiA9IE1YT2Zmc2V0VG9NZW1iZXJPZmZzZXQob2Zmc2V0KTsKKworCQlpZiAocGFn ZW5vICE9IHByZXZfcGFnZW5vKQorCQl7CisJCQlidWYgPSBTbHJ1UmVhZFN3aXRjaFBhZ2Uo c3RhdGUtPm1lbWJlcnMsIHBhZ2Vubyk7CisJCQlwcmV2X3BhZ2VubyA9IHBhZ2VubzsKKwkJ fQorCisJCXhhY3RwdHIgPSAoVHJhbnNhY3Rpb25JZCAqKSAoYnVmICsgbWVtYmVyb2ZmKTsK KworCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKCp4YWN0cHRyKSkKKwkJeworCQkJLyog Q29ybmVyIGNhc2UgMzogd2UgbXVzdCBiZSBsb29raW5nIGF0IHVudXNlZCBzbG90IHplcm8g Ki8KKwkJCUFzc2VydChvZmZzZXQgPT0gMCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWZs YWdzb2ZmID0gTVhPZmZzZXRUb0ZsYWdzT2Zmc2V0KG9mZnNldCk7CisJCWJzaGlmdCA9IE1Y T2Zmc2V0VG9GbGFnc0JpdFNoaWZ0KG9mZnNldCk7CisJCWZsYWdzcHRyID0gKHVpbnQzMiAq KSAoYnVmICsgZmxhZ3NvZmYpOworCisJCXN0YXR1cyA9ICgqZmxhZ3NwdHIgPj4gYnNoaWZ0 KSAmIE1YQUNUX01FTUJFUl9YQUNUX0JJVE1BU0s7CisKKwkJLyogVmVyaWZ5IHRoYXQgdGhl cmUgaXMgYSBzaW5nbGUgdXBkYXRlIFhpZCBhbW9uZyB0aGUgZ2l2ZW4gbWVtYmVycy4gKi8K KwkJaWYgKElTVVBEQVRFX2Zyb21fbXhzdGF0dXMoc3RhdHVzKSkKKwkJeworCQkJaWYgKHJl c3VsdF9pc3VwZGF0ZSkKKwkJCQlwZ19mYXRhbCgibXVsdGl4YWN0ICV1IGhhcyBtb3JlIHRo YW4gb25lIHVwZGF0aW5nIG1lbWJlciIsCisJCQkJCQkgbXVsdGkpOworCQkJcmVzdWx0X3hp ZCA9ICp4YWN0cHRyOworCQkJcmVzdWx0X2lzdXBkYXRlID0gdHJ1ZTsKKwkJfQorCQllbHNl IGlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQocmVzdWx0X3hpZCkpCisJCQlyZXN1bHRfeGlk ID0gKnhhY3RwdHI7CisJfQorCisJLyogQSBtdWx0aXhpZCB3aXRoIHplcm8gbWVtYmVycyBz aG91bGQgbm90IGhhcHBlbiAqLworCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChyZXN1 bHRfeGlkKSk7CisKKwkqcmVzdWx0ID0gcmVzdWx0X3hpZDsKKwkqaXN1cGRhdGUgPSByZXN1 bHRfaXN1cGRhdGU7Cit9CisKKwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL211 bHRpeGFjdF9vbGQuaCBiL3NyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xkLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcwODAwYzFjZGE1Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuaApAQCAt MCwwICsxLDEyIEBACisvKgorICoJbXVsdGl4YWN0X29sZC5oCisgKgorICoJQ29weXJpZ2h0 IChjKSAyMDEwLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KglzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X29sZC5oCisgKi8KKwordHlwZWRlZiBz dHJ1Y3QgT2xkTXVsdGlYYWN0UmVhZGVyIE9sZE11bHRpWGFjdFJlYWRlcjsKKworZXh0ZXJu IE9sZE11bHRpWGFjdFJlYWRlciAqU3RhcnRPbGRNdWx0aVhhY3RSZWFkKHZvaWQpOworZXh0 ZXJuIHZvaWQgR2V0T2xkTXVsdGlYYWN0SWRTaW5nbGVNZW1iZXIoT2xkTXVsdGlYYWN0UmVh ZGVyICpzdGF0ZSwgTXVsdGlYYWN0SWQgbXVsdGksCisJCQkJCQkJCQkJICBUcmFuc2FjdGlv bklkICpyZXN1bHQsIGJvb2wgKmlzdXBkYXRlKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf dXBncmFkZS9tdWx0aXhhY3RfcmV3cml0ZS5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL211bHRp eGFjdF9yZXdyaXRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjdiM2FlYjgwYzBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL211 bHRpeGFjdF9yZXdyaXRlLmMKQEAgLTAsMCArMSwyMzggQEAKKy8qCisgKgltdWx0aXhhY3Rf cmV3cml0ZS5jCisgKgorICoJUmV3cml0ZSBwcmUtdjE4IG11bHRpeGFjdHMgdG8gbmV3IGZv cm1hdCB3aXRoIDY0LWJpdCBNdWx0aVhhY3RPZmZzZXRzCisgKgorICoJQ29weXJpZ2h0IChj KSAyMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoJc3JjL2Jp bi9wZ191cGdyYWRlL211bHRpeGFjdF9yZXdyaXRlLmMKKyAqLworCisjaW5jbHVkZSAicG9z dGdyZXNfZmUuaCIKKworI2luY2x1ZGUgIm11bHRpeGFjdF9vbGQuaCIKKyNpbmNsdWRlICJw Z191cGdyYWRlLmgiCisjaW5jbHVkZSAic2xydV9pby5oIgorCisjaW5jbHVkZSAiYWNjZXNz L211bHRpeGFjdC5oIgorI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaCIK KwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlNdWx0aVhhY3RJZCBuZXh0TVhhY3Q7CisJTXVsdGlY YWN0T2Zmc2V0IG5leHRPZmZzZXQ7CisKKwlTbHJ1U2VnU3RhdGUgKm9mZnNldDsKKwlTbHJ1 U2VnU3RhdGUgKm1lbWJlcnM7Cit9IE11bHRpWGFjdFdyaXRlcjsKKworc3RhdGljIE11bHRp WGFjdFdyaXRlciAqU3RhcnRNdWx0aVhhY3RXcml0ZShNdWx0aVhhY3RJZCBmaXJzdE11bHRp LCBNdWx0aVhhY3RPZmZzZXQgZmlyc3RPZmZzZXQpOworc3RhdGljIE11bHRpWGFjdElkIEdl dE5ld011bHRpWGFjdElkKE11bHRpWGFjdFdyaXRlciAqc3RhdGUsIGludCBubWVtYmVycywg TXVsdGlYYWN0T2Zmc2V0ICpvZmZzZXQpOworc3RhdGljIHZvaWQgUmVjb3JkTmV3TXVsdGlY YWN0KE11bHRpWGFjdFdyaXRlciAqc3RhdGUsCisJCQkJCQkJICAgTXVsdGlYYWN0T2Zmc2V0 IG9mZnNldCwKKwkJCQkJCQkgICBNdWx0aVhhY3RJZCBtdWx0aSwKKwkJCQkJCQkgICBpbnQg bm1lbWJlcnMsIE11bHRpWGFjdE1lbWJlciAqbWVtYmVycyk7CitzdGF0aWMgdm9pZCBDbG9z ZU11bHRpWGFjdFdyaXRlKE11bHRpWGFjdFdyaXRlciAqc3RhdGUpOworCisKKy8qCisgKiBD b252ZXJ0IHBnX211bHRpeGFjdC9vZmZzZXQgYW5kIC9tZW1iZXJzIHRvIG5ldyBmb3JtYXQg d2l0aCA2NC1iaXQgb2Zmc2V0cy4KKyAqLwordm9pZAorY29udmVydF9tdWx0aXhhY3RzKE11 bHRpWGFjdElkICpuZXdfbnh0bXVsdGksIE11bHRpWGFjdE9mZnNldCAqbmV3X254dG14b2Zm KQoreworCU11bHRpWGFjdFdyaXRlcgkgICAqbmV3X3dyaXRlcjsKKwlNdWx0aVhhY3RJZAkJ CW9sZGVzdF9tdWx0aSA9IG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9vbGRzdE11 bHRpLAorCQkJCQkJbmV4dF9tdWx0aSA9IG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3Bu dF9ueHRtdWx0aSwKKwkJCQkJCW11bHRpOworCU9sZE11bHRpWGFjdFJlYWRlciAqb2xkX3Jl YWRlcjsKKworCWlmIChuZXh0X211bHRpIDwgRmlyc3RNdWx0aVhhY3RJZCkKKwkJbmV4dF9t dWx0aSA9IEZpcnN0TXVsdGlYYWN0SWQ7CisKKwlvbGRfcmVhZGVyID0gU3RhcnRPbGRNdWx0 aVhhY3RSZWFkKCk7CisJbmV3X3dyaXRlciA9IFN0YXJ0TXVsdGlYYWN0V3JpdGUob2xkZXN0 X211bHRpLCAxKTsKKworCS8qCisJICogUmVhZCBtdWx0aXhpZHMgZnJvbSBvbGQgZmlsZXMg b25lIGJ5IG9uZSwgYW5kIHdyaXRlIHRoZW0gYmFjayBpbiB0aGUKKwkgKiBuZXcgZm9ybWF0 LgorCSAqCisJICogVGhlIGxvY2tpbmctb25seSBYSURzIHRoYXQgbWF5IGJlIHBhcnQgb2Yg bXVsdGkteGlkcyBkb24ndCBtYXR0ZXIgYWZ0ZXIKKwkgKiB1cGdyYWRlLCBhcyB0aGVyZSBj YW4gYmUgbm8gdHJhbnNhY3Rpb25zIHJ1bm5pbmcgYWNyb3NzIHVwZ3JhZGUuIFNvIGFzCisJ ICogYSBsaXR0bGUgb3B0aW1pemF0aW9uLCB3ZSBvbmx5IHJlYWQgb25lIG1lbWJlciBmcm9t IGVhY2ggbXVsdGl4aWQ6IHRoZQorCSAqIG9uZSB1cGRhdGluZyBvbmUsIG9yIGlmIHRoZXJl IHdhcyBubyB1cGRhdGUsIGFyYml0cmFyaWx5IHRoZSBmaXJzdAorCSAqIGxvY2tpbmcgeGlk LgorCSAqLworCWZvciAobXVsdGkgPSBvbGRlc3RfbXVsdGk7IG11bHRpICE9IG5leHRfbXVs dGk7KQorCXsKKwkJVHJhbnNhY3Rpb25JZCB4aWQ7CisJCWJvb2wJCWlzdXBkYXRlOworCQlN dWx0aVhhY3RNZW1iZXIgbWVtYmVyOworCQlNdWx0aVhhY3RJZCBuZXdtdWx0aTsKKwkJTXVs dGlYYWN0T2Zmc2V0IG9mZnNldDsKKworCQkvKiBSZWFkIHRoZSBvbGQgbXVsdGl4aWQgKi8K KwkJR2V0T2xkTXVsdGlYYWN0SWRTaW5nbGVNZW1iZXIob2xkX3JlYWRlciwgbXVsdGksICZ4 aWQsICZpc3VwZGF0ZSk7CisKKwkJLyogV3JpdGUgaXQgb3V0IGluIG5ldyBmb3JtYXQgKi8K KwkJbWVtYmVyLnhpZCA9IHhpZDsKKwkJbWVtYmVyLnN0YXR1cyA9IGlzdXBkYXRlID8gTXVs dGlYYWN0U3RhdHVzVXBkYXRlIDogTXVsdGlYYWN0U3RhdHVzRm9yS2V5U2hhcmU7CisJCW5l d211bHRpID0gR2V0TmV3TXVsdGlYYWN0SWQobmV3X3dyaXRlciwgMSwgJm9mZnNldCk7CisJ CUFzc2VydChuZXdtdWx0aSA9PSBtdWx0aSk7CisJCVJlY29yZE5ld011bHRpWGFjdChuZXdf d3JpdGVyLCBvZmZzZXQsIG11bHRpLCAxLCAmbWVtYmVyKTsKKworCQltdWx0aSsrOworCQlp ZiAobXVsdGkgPCBGaXJzdE11bHRpWGFjdElkKQorCQkJbXVsdGkgPSBGaXJzdE11bHRpWGFj dElkOworCX0KKworCS8qCisJICogVXBkYXRlIHRoZSBuZXh0TVhhY3QvT2Zmc2V0IHZhbHVl cyBpbiB0aGUgY29udHJvbCBmaWxlIHRvIG1hdGNoIHdoYXQgd2UKKwkgKiB3cm90ZS4gVGhl IG5leHRNWGFjdCBzaG91bGQgYmUgdW5jaGFuZ2VkLCBidXQgYmVjYXVzZSB3ZSBpZ25vcmVk IHRoZQorCSAqIGxvY2tpbmcgWElEcyBtZW1iZXJzLCB0aGUgbmV4dE9mZnNldCB3aWxsIGJl IGRpZmZlcmVudC4KKwkgKi8KKwlBc3NlcnQobmV3X3dyaXRlci0+bmV4dE1YYWN0ID09IG5l eHRfbXVsdGkpOworCSpuZXdfbnh0bXVsdGkgPSBuZXh0X211bHRpOworCSpuZXdfbnh0bXhv ZmYgPSBuZXdfd3JpdGVyLT5uZXh0T2Zmc2V0OworCisJLyogUmVsZWFzZSByZXNvdXJjZXMg Ki8KKwlDbG9zZU11bHRpWGFjdFdyaXRlKG5ld193cml0ZXIpOworfQorCisvKiBTdXBwb3J0 IHJvdXRpbmVzIGZvciB3cml0aW5nIHRoZSBuZXcgZm9ybWF0ICovCisKK3N0YXRpYyBNdWx0 aVhhY3RXcml0ZXIgKgorU3RhcnRNdWx0aVhhY3RXcml0ZShNdWx0aVhhY3RJZCBmaXJzdE11 bHRpLCBNdWx0aVhhY3RPZmZzZXQgZmlyc3RPZmZzZXQpCit7CisJTXVsdGlYYWN0V3JpdGVy ICpzdGF0ZTsKKwljaGFyCSAgICpkaXI7CisKKwlzdGF0ZSA9IHBnX21hbGxvYyhzaXplb2Yo TXVsdGlYYWN0V3JpdGVyKSk7CisJc3RhdGUtPm5leHRNWGFjdCA9IGZpcnN0TXVsdGk7CisJ c3RhdGUtPm5leHRPZmZzZXQgPSBmaXJzdE9mZnNldDsKKworCWRpciA9IHBzcHJpbnRmKCIl cy9wZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsIG5ld19jbHVzdGVyLnBnZGF0YSk7CisJc3RhdGUt Pm9mZnNldCA9IE9wZW5TbHJ1V3JpdGUoZGlyLCBNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShm aXJzdE11bHRpKSk7CisJcGdfZnJlZShkaXIpOworCisJZGlyID0gcHNwcmludGYoIiVzL3Bn X211bHRpeGFjdC9tZW1iZXJzIiwgbmV3X2NsdXN0ZXIucGdkYXRhKTsKKwlzdGF0ZS0+bWVt YmVycyA9IE9wZW5TbHJ1V3JpdGUoZGlyLCBNWE9mZnNldFRvTWVtYmVyUGFnZSgxKSk7CisJ cGdfZnJlZShkaXIpOworCisJcmV0dXJuIHN0YXRlOworfQorCitzdGF0aWMgdm9pZAorQ2xv c2VNdWx0aVhhY3RXcml0ZShNdWx0aVhhY3RXcml0ZXIgKnN0YXRlKQoreworCUNsb3NlU2xy dVdyaXRlKHN0YXRlLT5vZmZzZXQpOworCUNsb3NlU2xydVdyaXRlKHN0YXRlLT5tZW1iZXJz KTsKKwlwZ19mcmVlKHN0YXRlKTsKK30KKworLyoKKyAqIFNpbXBsaWZpZWQgY29weSBvZiB0 aGUgY29ycmVzcG9uZGluZyBzZXJ2ZXIgZnVuY3Rpb24KKyAqLworc3RhdGljIE11bHRpWGFj dElkCitHZXROZXdNdWx0aVhhY3RJZChNdWx0aVhhY3RXcml0ZXIgKnN0YXRlLCBpbnQgbm1l bWJlcnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQoreworCU11bHRpWGFjdElkCQlyZXN1 bHQ7CisKKwkvKiBIYW5kbGUgd3JhcGFyb3VuZCBvZiB0aGUgbmV4dE1YYWN0IGNvdW50ZXIg Ki8KKwlpZiAoc3RhdGUtPm5leHRNWGFjdCA8IEZpcnN0TXVsdGlYYWN0SWQpCisJCXN0YXRl LT5uZXh0TVhhY3QgPSBGaXJzdE11bHRpWGFjdElkOworCisJLyogQXNzaWduIHRoZSBNWElE ICovCisJcmVzdWx0ID0gc3RhdGUtPm5leHRNWGFjdDsKKworCS8qCisJICogUmVzZXJ2ZSB0 aGUgbWVtYmVycyBzcGFjZSwgc2ltaWxhcmx5IHRvIGFib3ZlLgorCSAqLworCSpvZmZzZXQg PSBzdGF0ZS0+bmV4dE9mZnNldDsKKworCS8qCisJICogQWR2YW5jZSBjb3VudGVycy4gIEFz IGluIEdldE5ld1RyYW5zYWN0aW9uSWQoKSwgdGhpcyBtdXN0IG5vdCBoYXBwZW4KKwkgKiB1 bnRpbCBhZnRlciBmaWxlIGV4dGVuc2lvbiBoYXMgc3VjY2VlZGVkIQorCSAqCisJICogV2Ug ZG9uJ3QgY2FyZSBhYm91dCBNdWx0aVhhY3RJZCB3cmFwYXJvdW5kIGhlcmU7IGl0IHdpbGwg YmUgaGFuZGxlZCBieQorCSAqIHRoZSBuZXh0IGl0ZXJhdGlvbi4gIEJ1dCBub3RlIHRoYXQg bmV4dE1YYWN0IG1heSBiZSBJbnZhbGlkTXVsdGlYYWN0SWQKKwkgKiBvciB0aGUgZmlyc3Qg dmFsdWUgb24gYSBzZWdtZW50LWJlZ2lubmluZyBwYWdlIGFmdGVyIHRoaXMgcm91dGluZQor CSAqIGV4aXRzLCBzbyBhbnlvbmUgZWxzZSBsb29raW5nIGF0IHRoZSB2YXJpYWJsZSBtdXN0 IGJlIHByZXBhcmVkIHRvIGRlYWwKKwkgKiB3aXRoIGVpdGhlciBjYXNlLiAgU2ltaWxhcmx5 LCBuZXh0T2Zmc2V0IG1heSBiZSB6ZXJvLCBidXQgd2Ugd29uJ3QgdXNlCisJICogdGhhdCBh cyB0aGUgYWN0dWFsIHN0YXJ0IG9mZnNldCBvZiB0aGUgbmV4dCBtdWx0aXhhY3QuCisJICov CisJKHN0YXRlLT5uZXh0TVhhY3QpKys7CisKKwlzdGF0ZS0+bmV4dE9mZnNldCArPSBubWVt YmVyczsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBXcml0ZSBhIG5ldyBtdWx0 aXhhY3Qgd2l0aCBtZW1iZXJzLgorICoKKyAqIFNpbXBsaWZpZWQgdmVyc2lvbiBvZiB0aGUg Y29ycmVzcG9kaW5nIHNlcnZlciBmdW5jdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK1JlY29y ZE5ld011bHRpWGFjdChNdWx0aVhhY3RXcml0ZXIgKnN0YXRlLCBNdWx0aVhhY3RPZmZzZXQg b2Zmc2V0LAorCQkJCSAgIE11bHRpWGFjdElkIG11bHRpLAorCQkJCSAgIGludCBubWVtYmVy cywgTXVsdGlYYWN0TWVtYmVyICptZW1iZXJzKQoreworCWludDY0CQlwYWdlbm87CisJaW50 NjQJCXByZXZfcGFnZW5vOworCWludAkJCWVudHJ5bm87CisKKwljaGFyCSAgICpidWY7CisJ TXVsdGlYYWN0T2Zmc2V0ICpvZmZwdHI7CisKKwlwYWdlbm8gPSBNdWx0aVhhY3RJZFRvT2Zm c2V0UGFnZShtdWx0aSk7CisJZW50cnlubyA9IE11bHRpWGFjdElkVG9PZmZzZXRFbnRyeSht dWx0aSk7CisKKwkvKgorCSAqIE5vdGU6IHdlIHBhc3MgdGhlIE11bHRpWGFjdElkIHRvIFNp bXBsZUxydVJlYWRQYWdlIGFzIHRoZSAidHJhbnNhY3Rpb24iCisJICogdG8gY29tcGxhaW4g YWJvdXQgaWYgdGhlcmUncyBhbnkgSS9PIGVycm9yLiAgVGhpcyBpcyBraW5kYSBib2d1cywg YnV0CisJICogc2luY2UgdGhlIGVycm9ycyB3aWxsIGFsd2F5cyBnaXZlIHRoZSBmdWxsIHBh dGhuYW1lLCBpdCBzaG91bGQgYmUgY2xlYXIKKwkgKiBlbm91Z2ggdGhhdCBhIE11bHRpWGFj dElkIGlzIHJlYWxseSBpbnZvbHZlZC4gIFBlcmhhcHMgc29tZWRheSB3ZSdsbAorCSAqIHRh a2UgdGhlIHRyb3VibGUgdG8gZ2VuZXJhbGl6ZSB0aGUgc2xydS5jIGVycm9yIHJlcG9ydGlu ZyBjb2RlLgorCSAqLworCWJ1ZiA9IFNscnVXcml0ZVN3aXRjaFBhZ2Uoc3RhdGUtPm9mZnNl dCwgcGFnZW5vKTsKKwlvZmZwdHIgPSAoTXVsdGlYYWN0T2Zmc2V0ICopIGJ1ZjsKKwlvZmZw dHIgKz0gZW50cnlubzsKKworCSpvZmZwdHIgPSBvZmZzZXQ7CisKKwlwcmV2X3BhZ2VubyA9 IC0xOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBubWVtYmVyczsgaSsrLCBvZmZzZXQrKykK Kwl7CisJCVRyYW5zYWN0aW9uSWQgKm1lbWJlcnB0cjsKKwkJdWludDMyCSAgICpmbGFnc3B0 cjsKKwkJdWludDMyCQlmbGFnc3ZhbDsKKwkJaW50CQkJYnNoaWZ0OworCQlpbnQJCQlmbGFn c29mZjsKKwkJaW50CQkJbWVtYmVyb2ZmOworCisJCUFzc2VydChtZW1iZXJzW2ldLnN0YXR1 cyA8PSBNdWx0aVhhY3RTdGF0dXNVcGRhdGUpOworCisJCXBhZ2VubyA9IE1YT2Zmc2V0VG9N ZW1iZXJQYWdlKG9mZnNldCk7CisJCW1lbWJlcm9mZiA9IE1YT2Zmc2V0VG9NZW1iZXJPZmZz ZXQob2Zmc2V0KTsKKwkJZmxhZ3NvZmYgPSBNWE9mZnNldFRvRmxhZ3NPZmZzZXQob2Zmc2V0 KTsKKwkJYnNoaWZ0ID0gTVhPZmZzZXRUb0ZsYWdzQml0U2hpZnQob2Zmc2V0KTsKKworCQlp ZiAocGFnZW5vICE9IHByZXZfcGFnZW5vKQorCQl7CisJCQlidWYgPSBTbHJ1V3JpdGVTd2l0 Y2hQYWdlKHN0YXRlLT5tZW1iZXJzLCBwYWdlbm8pOworCQkJcHJldl9wYWdlbm8gPSBwYWdl bm87CisJCX0KKworCQltZW1iZXJwdHIgPSAoVHJhbnNhY3Rpb25JZCAqKSAoYnVmICsgbWVt YmVyb2ZmKTsKKworCQkqbWVtYmVycHRyID0gbWVtYmVyc1tpXS54aWQ7CisKKwkJZmxhZ3Nw dHIgPSAodWludDMyICopIChidWYgKyBmbGFnc29mZik7CisKKwkJZmxhZ3N2YWwgPSAqZmxh Z3NwdHI7CisJCWZsYWdzdmFsICY9IH4oKCgxIDw8IE1YQUNUX01FTUJFUl9CSVRTX1BFUl9Y QUNUKSAtIDEpIDw8IGJzaGlmdCk7CisJCWZsYWdzdmFsIHw9IChtZW1iZXJzW2ldLnN0YXR1 cyA8PCBic2hpZnQpOworCQkqZmxhZ3NwdHIgPSBmbGFnc3ZhbDsKKwl9Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIGIvc3JjL2Jpbi9wZ191cGdy YWRlL3BnX3VwZ3JhZGUuYwppbmRleCAxNjU0ZTg3N2MwNy4uNDg0NTM2ODUzYTEgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMKKysrIGIvc3JjL2Jpbi9w Z191cGdyYWRlL3BnX3VwZ3JhZGUuYwpAQCAtNzUwLDYgKzc1MCw5IEBAIGNvcHlfeGFjdF94 bG9nX3hpZCh2b2lkKQogCWlmIChvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyID49 IE1VTFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAmJgogCQluZXdfY2x1c3Rlci5jb250 cm9sZGF0YS5jYXRfdmVyID49IE1VTFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUikKIAl7 CisJCU11bHRpWGFjdElkIG5ld19ueHRtdWx0aSA9IG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRh LmNoa3BudF9ueHRtdWx0aTsKKwkJTXVsdGlYYWN0T2Zmc2V0IG5ld19ueHRteG9mZiA9IG9s ZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZjsKKwogCQkvKgogCQkgKiBJ ZiB0aGUgb2xkIHNlcnZlciBpcyBiZWZvcmUgdGhlIE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRD SEFOR0VfQ0FUX1ZFUgogCQkgKiBpdCBtdXN0IGhhdmUgMzItYml0IG11bHRpeGlkIG9mZnNl dHMsIHRodXMgaXQgc2hvdWxkIGJlIGNvbnZlcnRlZC4KQEAgLTc1NywyOSArNzYwLDExIEBA IGNvcHlfeGFjdF94bG9nX3hpZCh2b2lkKQogCQlpZiAob2xkX2NsdXN0ZXIuY29udHJvbGRh dGEuY2F0X3ZlciA8IE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAmJgog CQkJbmV3X2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBNVUxUSVhBQ1RPRkZTRVRf Rk9STUFUQ0hBTkdFX0NBVF9WRVIpCiAJCXsKLQkJCU11bHRpWGFjdE9mZnNldAkJb2xkZXN0 X29mZnNldCwKLQkJCQkJCQkJbmV4dF9vZmZzZXQ7Ci0KKwkJCXJlbW92ZV9uZXdfc3ViZGly KCJwZ19tdWx0aXhhY3QvbWVtYmVycyIsIGZhbHNlKTsKIAkJCXJlbW92ZV9uZXdfc3ViZGly KCJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsIGZhbHNlKTsKIAkJCXByZXBfc3RhdHVzKCJDb252 ZXJ0aW5nIHBnX211bHRpeGFjdC9vZmZzZXRzIHRvIDY0LWJpdCIpOwotCQkJb2xkZXN0X29m ZnNldCA9IGNvbnZlcnRfbXVsdGl4YWN0X29mZnNldHMoKTsKLQkJCWNoZWNrX29rKCk7Ci0K LQkJCXJlbW92ZV9uZXdfc3ViZGlyKCJwZ19tdWx0aXhhY3QvbWVtYmVycyIsIGZhbHNlKTsK LQkJCXByZXBfc3RhdHVzKCJDb252ZXJ0aW5nIHBnX211bHRpeGFjdC9tZW1iZXJzIik7Ci0J CQljb252ZXJ0X211bHRpeGFjdF9tZW1iZXJzKG9sZGVzdF9vZmZzZXQpOworCQkJY29udmVy dF9tdWx0aXhhY3RzKCZuZXdfbnh0bXVsdGksICZuZXdfbnh0bXhvZmYpOwogCQkJY2hlY2tf b2soKTsKLQotCQkJbmV4dF9vZmZzZXQgPSBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtw bnRfbnh0bXhvZmY7Ci0JCQlpZiAob2xkZXN0X29mZnNldCkKLQkJCXsKLQkJCQlpZiAobmV4 dF9vZmZzZXQgPCBvbGRlc3Rfb2Zmc2V0KQotCQkJCQluZXh0X29mZnNldCArPSAoKE11bHRp WGFjdE9mZnNldCkgMSA8PCAzMikgLSAxOwotCi0JCQkJbmV4dF9vZmZzZXQgLT0gb2xkZXN0 X29mZnNldCAtIDE7Ci0KLQkJCQlvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0 bXhvZmYgPSBuZXh0X29mZnNldDsKLQkJCX0KIAkJfQogCQllbHNlCiAJCXsKQEAgLTc5Niw4 ICs3ODEsOCBAQCBjb3B5X3hhY3RfeGxvZ194aWQodm9pZCkKIAkJZXhlY19wcm9nKFVUSUxJ VFlfTE9HX0ZJTEUsIE5VTEwsIHRydWUsIHRydWUsCiAJCQkJICAiXCIlcy9wZ19yZXNldHdh bFwiIC1PICVsbHUgLW0gJXUsJXUgXCIlc1wiIiwKIAkJCQkgIG5ld19jbHVzdGVyLmJpbmRp ciwKLQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRh LmNoa3BudF9ueHRteG9mZiwKLQkJCQkgIG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3Bu dF9ueHRtdWx0aSwKKwkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIG5ld19ueHRteG9mZiwK KwkJCQkgIG5ld19ueHRtdWx0aSwKIAkJCQkgIG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNo a3BudF9vbGRzdE11bHRpLAogCQkJCSAgbmV3X2NsdXN0ZXIucGdkYXRhKTsKIAkJY2hlY2tf b2soKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9z cmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCmluZGV4IDJjODVlYzFlOTQ5Li5jMTMy OTNiNGFkZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaAor KysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCkBAIC01MjMsNyArNTIzLDYg QEAgdHlwZWRlZiBzdHJ1Y3QKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CiB9IFVwZ3JhZGVU YXNrUmVwb3J0OwogCi0vKiBzZWdyZXNpemUuYyAqLworLyogbXVsdGl4YWN0X3Jld3JpdGUu YyAqLwogCi1NdWx0aVhhY3RPZmZzZXQJCWNvbnZlcnRfbXVsdGl4YWN0X29mZnNldHModm9p ZCk7Ci12b2lkCQkJCWNvbnZlcnRfbXVsdGl4YWN0X21lbWJlcnMoTXVsdGlYYWN0T2Zmc2V0 IG9sZGVzdF9vZmZzZXQpOwordm9pZCBjb252ZXJ0X211bHRpeGFjdHMoTXVsdGlYYWN0SWQg Km5ld19ueHRtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpuZXdfbnh0bXhvZmYpOwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5jIGIvc3JjL2Jpbi9wZ191cGdy YWRlL3NlZ3Jlc2l6ZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzA2NGM3 N2RlYi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5j CisrKyAvZGV2L251bGwKQEAgLTEsNTI3ICswLDAgQEAKLS8qCi0gKglzZWdyZXNpemUuYwot ICoKLSAqCVNMUlUgc2VnbWVudCByZXNpemUgdXRpbGl0eQotICoKLSAqCUNvcHlyaWdodCAo YykgMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKLSAqCXNyYy9i aW4vcGdfdXBncmFkZS9zZWdyZXNpemUuYwotICovCi0KLSNpbmNsdWRlICJwb3N0Z3Jlc19m ZS5oIgotCi0jaW5jbHVkZSAicGdfdXBncmFkZS5oIgotI2luY2x1ZGUgImFjY2Vzcy9tdWx0 aXhhY3QuaCIKLQotLyogU2VlIHNscnUuaCAqLwotI2RlZmluZSBTTFJVX1BBR0VTX1BFUl9T RUdNRU5UCQkzMgotCi0vKgotICogU29tZSBraW5kIG9mIGl0ZXJhdG9yIGFzc29jaWF0ZWQg d2l0aCBhIHBhcnRpY3VsYXIgU0xSVSBzZWdtZW50LiAgVGhlIGlkZWEgaXMKLSAqIHRvIHNw ZWNpZnkgdGhlIHNlZ21lbnQgYW5kIHBhZ2UgbnVtYmVyIGFuZCB0aGVuIG1vdmUgdGhyb3Vn aCB0aGUgcGFnZXMuCi0gKi8KLXR5cGVkZWYgc3RydWN0IFNscnVTZWdTdGF0ZQotewotCWNo YXIJICAgKmRpcjsKLQljaGFyCSAgICpmbjsKLQlGSUxFCSAgICpmaWxlOwotCWludDY0CQlz ZWdubzsKLQl1aW50NjQJCXBhZ2VubzsKLQlib29sCQlsZWFkaW5nX2dhcDsKLX0gU2xydVNl Z1N0YXRlOwotCi0vKgotICogTWlycm9ycyB0aGUgU2xydUZpbGVOYW1lIGZyb20gc2xydS5j Ci0gKi8KLXN0YXRpYyBpbmxpbmUgY2hhciAqCi1TbHJ1RmlsZU5hbWUoU2xydVNlZ1N0YXRl ICpzdGF0ZSkKLXsKLQlBc3NlcnQoc3RhdGUtPnNlZ25vID49IDAgJiYgc3RhdGUtPnNlZ25v IDw9IElOVDY0Q09OU1QoMHhGRkZGRkYpKTsKLQlyZXR1cm4gcHNwcmludGYoIiVzLyUwNFgi LCBzdGF0ZS0+ZGlyLCAodW5zaWduZWQgaW50KSBzdGF0ZS0+c2Vnbm8pOwotfQotCi0vKgot ICogQ3JlYXRlIG5ldyBTTFJVIHNlZ21lbnQgZmlsZS4KLSAqLwotc3RhdGljIHZvaWQKLWNy ZWF0ZV9zZWdtZW50KFNscnVTZWdTdGF0ZSAqc3RhdGUpCi17Ci0JQXNzZXJ0KHN0YXRlLT5m biA9PSBOVUxMKTsKLQlBc3NlcnQoc3RhdGUtPmZpbGUgPT0gTlVMTCk7Ci0KLQlzdGF0ZS0+ Zm4gPSBTbHJ1RmlsZU5hbWUoc3RhdGUpOwotCXN0YXRlLT5maWxlID0gZm9wZW4oc3RhdGUt PmZuLCAid2IiKTsKLQlpZiAoIXN0YXRlLT5maWxlKQotCQlwZ19mYXRhbCgiY291bGQgbm90 IGNyZWF0ZSBmaWxlIFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOwotfQotCi0vKgotICogT3Bl biBleGlzdGluZyBTTFJVIHNlZ21lbnQgZmlsZS4KLSAqLwotc3RhdGljIHZvaWQKLW9wZW5f c2VnbWVudChTbHJ1U2VnU3RhdGUgKnN0YXRlKQotewotCUFzc2VydChzdGF0ZS0+Zm4gPT0g TlVMTCk7Ci0JQXNzZXJ0KHN0YXRlLT5maWxlID09IE5VTEwpOwotCi0Jc3RhdGUtPmZuID0g U2xydUZpbGVOYW1lKHN0YXRlKTsKLQlzdGF0ZS0+ZmlsZSA9IGZvcGVuKHN0YXRlLT5mbiwg InJiIik7Ci0JaWYgKCFzdGF0ZS0+ZmlsZSkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVu IGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7Ci19Ci0KLS8qCi0gKiBDbG9zZSBTTFJV IHNlZ21lbnQgZmlsZS4KLSAqLwotc3RhdGljIHZvaWQKLWNsb3NlX3NlZ21lbnQoU2xydVNl Z1N0YXRlICpzdGF0ZSkKLXsKLQlpZiAoc3RhdGUtPmZpbGUpCi0JewotCQlmY2xvc2Uoc3Rh dGUtPmZpbGUpOwotCQlzdGF0ZS0+ZmlsZSA9IE5VTEw7Ci0JfQotCi0JaWYgKHN0YXRlLT5m bikKLQl7Ci0JCXBmcmVlKHN0YXRlLT5mbik7Ci0JCXN0YXRlLT5mbiA9IE5VTEw7Ci0JfQot fQotCi0vKgotICogUmVhZCBuZXh0IHBhZ2UgZnJvbSB0aGUgb2xkIDMyLWJpdCBvZmZzZXQg c2VnbWVudCBmaWxlLgotICovCi1zdGF0aWMgaW50Ci1yZWFkX29sZF9zZWdtZW50X3BhZ2Uo U2xydVNlZ1N0YXRlICpzdGF0ZSwgdm9pZCAqYnVmLCBib29sICplbXB0eSkKLXsKLQlpbnQJ CWxlbjsKLQotCS8qIE9wZW4gbmV4dCBzZWdtZW50IGZpbGUsIGlmIG5lZWRlZC4gKi8KLQlp ZiAoIXN0YXRlLT5mbikKLQl7Ci0JCWlmICghc3RhdGUtPnNlZ25vKQotCQkJc3RhdGUtPmxl YWRpbmdfZ2FwID0gdHJ1ZTsKLQotCQlvcGVuX3NlZ21lbnQoc3RhdGUpOwotCi0JCS8qIFNl dCBwb3NpdGlvbiB0byB0aGUgbmVlZGVkIHBhZ2UuICovCi0JCWlmIChzdGF0ZS0+cGFnZW5v ID4gMCAmJgotCQkJZnNlZWsoc3RhdGUtPmZpbGUsIHN0YXRlLT5wYWdlbm8gKiBCTENLU1os IFNFRUtfU0VUKSkKLQkJewotCQkJY2xvc2Vfc2VnbWVudChzdGF0ZSk7Ci0JCX0KLQl9Ci0K LQlpZiAoc3RhdGUtPmZpbGUpCi0JewotCQkvKiBTZWdtZW50IGZpbGUgZG8gZXhpc3RzLCBy ZWFkIHBhZ2UgZnJvbSBpdC4gKi8KLQkJc3RhdGUtPmxlYWRpbmdfZ2FwID0gZmFsc2U7Ci0K LQkJbGVuID0gZnJlYWQoYnVmLCBzaXplb2YoY2hhciksIEJMQ0tTWiwgc3RhdGUtPmZpbGUp OwotCi0JCS8qIEFyZSB3ZSBkb25lIG9yIHdhcyB0aGVyZSBhbiBlcnJvcj8gKi8KLQkJaWYg KGxlbiA8PSAwKQotCQl7Ci0JCQlpZiAoZmVycm9yKHN0YXRlLT5maWxlKSkKLQkJCQlwZ19m YXRhbCgiZXJyb3IgcmVhZGluZyBmaWxlIFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOwotCi0J CQlpZiAoZmVvZihzdGF0ZS0+ZmlsZSkpCi0JCQl7Ci0JCQkJKmVtcHR5ID0gdHJ1ZTsKLQkJ CQlsZW4gPSAtMTsKLQotCQkJCWNsb3NlX3NlZ21lbnQoc3RhdGUpOwotCQkJfQotCQl9Ci0J CWVsc2UKLQkJCSplbXB0eSA9IGZhbHNlOwotCX0KLQllbHNlIGlmICghc3RhdGUtPmxlYWRp bmdfZ2FwKQotCXsKLQkJLyogV2UgcmVhY2hlZCB0aGUgbGFzdCBzZWdtZW50LiAqLwotCQls ZW4gPSAtMTsKLQkJKmVtcHR5ID0gdHJ1ZTsKLQl9Ci0JZWxzZQotCXsKLQkJLyogU2tpcCBm ZXcgZmlyc3Qgc2VnbWVudHMgaWYgdGhleSB3ZXJlIGZyb3plbiBhbmQgcmVtb3ZlZC4gKi8K LQkJbGVuID0gQkxDS1NaOwotCQkqZW1wdHkgPSB0cnVlOwotCX0KLQotCWlmICgrK3N0YXRl LT5wYWdlbm8gPj0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkKLQl7Ci0JCS8qIFN0YXJ0IGEg bmV3IHNlZ21lbnQuICovCi0JCXN0YXRlLT5zZWdubysrOwotCQlzdGF0ZS0+cGFnZW5vID0g MDsKLQotCQljbG9zZV9zZWdtZW50KHN0YXRlKTsKLQl9Ci0KLQlyZXR1cm4gbGVuOwotfQot Ci0vKgotICogV3JpdGUgbmV4dCBwYWdlIHRvIHRoZSBuZXcgNjQtYml0IG9mZnNldCBzZWdt ZW50IGZpbGUuCi0gKi8KLXN0YXRpYyB2b2lkCi13cml0ZV9uZXdfc2VnbWVudF9wYWdlKFNs cnVTZWdTdGF0ZSAqc3RhdGUsIHZvaWQgKmJ1ZikKLXsKLQkvKgotCSAqIENyZWF0ZSBhIG5l dyBzZWdtZW50IGZpbGUgaWYgd2Ugc3RpbGwgZGlkbid0LiAgQ3JlYXRpb24gaXMKLQkgKiBw b3N0cG9uZWQgdW50aWwgdGhlIGZpcnN0IG5vbi1lbXB0eSBwYWdlIGlzIGZvdW5kLiAgVGhp cyBoZWxwcwotCSAqIG5vdCB0byBjcmVhdGUgY29tcGxldGVseSBlbXB0eSBzZWdtZW50cy4K LQkgKi8KLQlpZiAoIXN0YXRlLT5maWxlKQotCXsKLQkJY3JlYXRlX3NlZ21lbnQoc3RhdGUp OwotCi0JCS8qIFdyaXRlIHplcm9lcyB0byB0aGUgcHJldmlvdXNseSBza2lwcGVkIHByZWZp eC4gKi8KLQkJaWYgKHN0YXRlLT5wYWdlbm8gPiAwKQotCQl7Ci0JCQljaGFyCQl6ZXJvYnVm W0JMQ0tTWl0gPSB7MH07Ci0KLQkJCWZvciAoaW50NjQgaSA9IDA7IGkgPCBzdGF0ZS0+cGFn ZW5vOyBpKyspCi0JCQl7Ci0JCQkJaWYgKGZ3cml0ZSh6ZXJvYnVmLCBzaXplb2YoY2hhciks IEJMQ0tTWiwgc3RhdGUtPmZpbGUpICE9IEJMQ0tTWikKLQkJCQkJcGdfZmF0YWwoImNvdWxk IG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOwotCQkJfQotCQl9Ci0J fQotCi0JLyogV3JpdGUgcGFnZSB0byB0aGUgbmV3IHNlZ21lbnQgKGlmIGl0IHdhcyBjcmVh dGVkKS4gKi8KLQlpZiAoc3RhdGUtPmZpbGUpCi0JewotCQlpZiAoZndyaXRlKGJ1Ziwgc2l6 ZW9mKGNoYXIpLCBCTENLU1osIHN0YXRlLT5maWxlKSAhPSBCTENLU1opCi0JCQlwZ19mYXRh bCgiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7Ci0JfQot Ci0JLyoKLQkgKiBEaWQgd2UgcmVhY2ggdGhlIG1heGltdW0gcGFnZSBudW1iZXI/ICBUaGVu IGNsb3NlIHNlZ21lbnQgZmlsZQotCSAqIGFuZCBjcmVhdGUgYSBuZXcgb25lIG9uIHRoZSBu ZXh0IGl0ZXJhdGlvbi4KLQkgKi8KLQlpZiAoKytzdGF0ZS0+cGFnZW5vID49IFNMUlVfUEFH RVNfUEVSX1NFR01FTlQpCi0JewotCQkvKiBTdGFydCBhIG5ldyBzZWdtZW50LiAqLwotCQlz dGF0ZS0+c2Vnbm8rKzsKLQkJc3RhdGUtPnBhZ2VubyA9IDA7Ci0KLQkJY2xvc2Vfc2VnbWVu dChzdGF0ZSk7Ci0JfQotfQotCi10eXBlZGVmIHVpbnQzMiBNdWx0aVhhY3RPZmZzZXRPbGQ7 Ci0KLSNkZWZpbmUgTWF4TXVsdGlYYWN0T2Zmc2V0T2xkCSgoTXVsdGlYYWN0T2Zmc2V0T2xk KSAweEZGRkZGRkZGKQotCi0jZGVmaW5lIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX09M RCAoQkxDS1NaIC8gc2l6ZW9mKE11bHRpWGFjdE9mZnNldE9sZCkpCi0jZGVmaW5lIE1VTFRJ WEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVyAoQkxDS1NaIC8gc2l6ZW9mKE11bHRpWGFjdE9m ZnNldCkpCi0KLS8qCi0gKiBDb252ZXJ0IHBnX211bHRpeGFjdC9vZmZzZXRzIHNlZ21lbnRz IGFuZCByZXR1cm4gb2xkZXN0IG11bHRpIG9mZnNldC4KLSAqLwotTXVsdGlYYWN0T2Zmc2V0 Ci1jb252ZXJ0X211bHRpeGFjdF9vZmZzZXRzKHZvaWQpCi17Ci0JU2xydVNlZ1N0YXRlCQlv bGRzZWcgPSB7MH0sCi0JCQkJCQluZXdzZWcgPSB7MH07Ci0JTXVsdGlYYWN0T2Zmc2V0T2xk CW9sZGJ1ZltNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTERdID0gezB9OwotCU11bHRp WGFjdE9mZnNldAkJbmV3YnVmW01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FV10gPSB7 MH0sCi0JCQkJCQlvbGRlc3Rfb2Zmc2V0ID0gMDsKLQl1aW50NjQJCQkJb2xkZXN0X211bHRp ID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X29sZHN0TXVsdGksCi0JCQkJCQlu ZXh0X211bHRpID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X254dG11bHRpLAot CQkJCQkJbXVsdGksCi0JCQkJCQlvbGRfZW50cnksCi0JCQkJCQluZXdfZW50cnk7Ci0JYm9v bAkJCQlvbGRlc3Rfb2Zmc2V0X2tub3duID0gZmFsc2U7Ci0KLQlvbGRzZWcuZGlyID0gcHNw cmludGYoIiVzL3BnX211bHRpeGFjdC9vZmZzZXRzIiwgb2xkX2NsdXN0ZXIucGdkYXRhKTsK LQluZXdzZWcuZGlyID0gcHNwcmludGYoIiVzL3BnX211bHRpeGFjdC9vZmZzZXRzIiwgbmV3 X2NsdXN0ZXIucGdkYXRhKTsKLQotCW9sZF9lbnRyeSA9IG9sZGVzdF9tdWx0aSAlIE1VTFRJ WEFDVF9PRkZTRVRTX1BFUl9QQUdFX09MRDsKLQlvbGRzZWcucGFnZW5vID0gb2xkZXN0X211 bHRpIC8gTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0VfT0xEOwotCW9sZHNlZy5zZWdubyA9 IG9sZHNlZy5wYWdlbm8gLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOwotCW9sZHNlZy5wYWdl bm8gJT0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKLQotCW5ld19lbnRyeSA9IG9sZGVzdF9t dWx0aSAlIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVzsKLQluZXdzZWcucGFnZW5v ID0gb2xkZXN0X211bHRpIC8gTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0VfTkVXOwotCW5l d3NlZy5zZWdubyA9IG5ld3NlZy5wYWdlbm8gLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOwot CW5ld3NlZy5wYWdlbm8gJT0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKLQotCWlmIChuZXh0 X211bHRpIDwgb2xkZXN0X211bHRpKQotCQluZXh0X211bHRpICs9ICh1aW50NjQpIDEgPDwg MzI7CS8qIHdyYXBhcm91bmQgKi8KLQotCS8qIENvcHkgbXVsdGkgb2Zmc2V0cyByZWFkaW5n IG9ubHkgbmVlZGVkIHNlZ21lbnQgcGFnZXMgKi8KLQlmb3IgKG11bHRpID0gb2xkZXN0X211 bHRpOyBtdWx0aSA8IG5leHRfbXVsdGk7IG9sZF9lbnRyeSA9IDApCi0JewotCQlpbnQJCW9s ZGxlbjsKLQkJYm9vbAllbXB0eTsKLQotCQkvKiBIYW5kbGUgcG9zc2libGUgc2VnbWVudCB3 cmFwYXJvdW5kICovCi0jZGVmaW5lIE9MRF9PRkZTRVRfU0VHTk9fTUFYCVwKLQkoTWF4TXVs dGlYYWN0SWQgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTEQgLyBTTFJVX1BBR0VT X1BFUl9TRUdNRU5UKQotCQlpZiAob2xkc2VnLnNlZ25vID4gT0xEX09GRlNFVF9TRUdOT19N QVgpCi0JCXsKLQkJCW9sZHNlZy5zZWdubyA9IDA7Ci0JCQlvbGRzZWcucGFnZW5vID0gMDsK LQkJfQotCi0JCW9sZGxlbiA9IHJlYWRfb2xkX3NlZ21lbnRfcGFnZSgmb2xkc2VnLCBvbGRi dWYsICZlbXB0eSk7Ci0JCWlmIChlbXB0eSB8fCBvbGRsZW4gIT0gQkxDS1NaKQotCQkJcGdf ZmF0YWwoImNhbm5vdCByZWFkIHBhZ2UgJWxsdSBmcm9tIGZpbGUgXCIlc1wiOiAlbSIsCi0J CQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBvbGRzZWcucGFnZW5vLCBvbGRzZWcuZm4pOwot Ci0JCS8qIFNhdmUgb2xkZXN0IG11bHRpIG9mZnNldCAqLwotCQlpZiAoIW9sZGVzdF9vZmZz ZXRfa25vd24pCi0JCXsKLQkJCW9sZGVzdF9vZmZzZXQgPSBvbGRidWZbb2xkX2VudHJ5XTsK LQkJCW9sZGVzdF9vZmZzZXRfa25vd24gPSB0cnVlOwotCQl9Ci0KLQkJLyogU2tpcCB3cmFw cGVkLWFyb3VuZCBpbnZhbGlkIE11bHRpWGFjdElkcyAqLwotCQlpZiAobXVsdGkgPT0gKHVp bnQ2NCkgMSA8PCAzMikKLQkJewotCQkJQXNzZXJ0KG9sZHNlZy5zZWdubyA9PSAwKTsKLQkJ CUFzc2VydChvbGRzZWcucGFnZW5vID09IDEpOwotCQkJQXNzZXJ0KG9sZF9lbnRyeSA9PSAw KTsKLQkJCUFzc2VydChuZXdfZW50cnkgPT0gMCk7Ci0KLQkJCW11bHRpICs9IEZpcnN0TXVs dGlYYWN0SWQ7Ci0JCQlvbGRfZW50cnkgPSBGaXJzdE11bHRpWGFjdElkOwotCQkJbmV3X2Vu dHJ5ID0gRmlyc3RNdWx0aVhhY3RJZDsKLQkJfQotCi0JCS8qIENvcHkgZW50cmllcyB0byB0 aGUgbmV3IHBhZ2UgKi8KLQkJZm9yICg7IG11bHRpIDwgbmV4dF9tdWx0aSAmJiBvbGRfZW50 cnkgPCBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTEQ7Ci0JCQkgbXVsdGkrKywgb2xk X2VudHJ5KyspCi0JCXsKLQkJCU11bHRpWGFjdE9mZnNldCBvZmZzZXQgPSBvbGRidWZbb2xk X2VudHJ5XTsKLQotCQkJLyogSGFuZGxlIHBvc3NpYmxlIG9mZnNldCB3cmFwYXJvdW5kICgx IGJlY29tZXMgMl4zMikgKi8KLQkJCWlmIChvZmZzZXQgPCBvbGRlc3Rfb2Zmc2V0KQotCQkJ CW9mZnNldCArPSAoKHVpbnQ2NCkgMSA8PCAzMikgLSAxOwotCi0JCQkvKiBTdWJ0cmFjdCBv bGRlc3Rfb2Zmc2V0LCBzbyBuZXcgb2Zmc2V0cyB3aWxsIHN0YXJ0IGZyb20gMSAqLwotCQkJ bmV3YnVmW25ld19lbnRyeSsrXSA9IG9mZnNldCAtIG9sZGVzdF9vZmZzZXQgKyAxOwotCi0J CQlpZiAobmV3X2VudHJ5ID49IE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVykKLQkJ CXsKLQkJCQkvKiBIYW5kbGUgcG9zc2libGUgc2VnbWVudCB3cmFwYXJvdW5kICovCi0jZGVm aW5lIE5FV19PRkZTRVRfU0VHTk9fTUFYCVwKLQkoTWF4TXVsdGlYYWN0SWQgLyBNVUxUSVhB Q1RfT0ZGU0VUU19QRVJfUEFHRV9ORVcgLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKQotCQkJ CWlmIChuZXdzZWcuc2Vnbm8gPiBORVdfT0ZGU0VUX1NFR05PX01BWCkKLQkJCQl7Ci0JCQkJ CW5ld3NlZy5zZWdubyA9IDA7Ci0JCQkJCW5ld3NlZy5wYWdlbm8gPSAwOwotCQkJCX0KLQot CQkJCS8qIFdyaXRlIG5ldyBwYWdlICovCi0JCQkJd3JpdGVfbmV3X3NlZ21lbnRfcGFnZSgm bmV3c2VnLCBuZXdidWYpOwotCQkJCW5ld19lbnRyeSA9IDA7Ci0JCQl9Ci0JCX0KLQl9Ci0K LQkvKiBXcml0ZSB0aGUgbGFzdCBpbmNvbXBsZXRlIHBhZ2UgKi8KLQlpZiAobmV3X2VudHJ5 ID4gMCB8fCBvbGRlc3RfbXVsdGkgPT0gbmV4dF9tdWx0aSkKLQl7Ci0JCW1lbXNldCgmbmV3 YnVmW25ld19lbnRyeV0sIDAsCi0JCQkgICBzaXplb2YobmV3YnVmWzBdKSAqIChNVUxUSVhB Q1RfT0ZGU0VUU19QRVJfUEFHRV9ORVcgLSBuZXdfZW50cnkpKTsKLQkJd3JpdGVfbmV3X3Nl Z21lbnRfcGFnZSgmbmV3c2VnLCBuZXdidWYpOwotCX0KLQotCS8qIFVzZSBuZXh0X29mZnNl dCBhcyBvbGRlc3Rfb2Zmc2V0LCBpZiBvbGRlc3RfbXVsdGkgPT0gbmV4dF9tdWx0aSAqLwot CWlmICghb2xkZXN0X29mZnNldF9rbm93bikKLQl7Ci0JCUFzc2VydChvbGRlc3RfbXVsdGkg PT0gbmV4dF9tdWx0aSk7Ci0JCW9sZGVzdF9vZmZzZXQgPSAoTXVsdGlYYWN0T2Zmc2V0KSBv bGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmY7Ci0JfQotCi0JLyogUmVs ZWFzZSByZXNvdXJjZXMgKi8KLQljbG9zZV9zZWdtZW50KCZvbGRzZWcpOwotCWNsb3NlX3Nl Z21lbnQoJm5ld3NlZyk7Ci0KLQlwZnJlZShvbGRzZWcuZGlyKTsKLQlwZnJlZShuZXdzZWcu ZGlyKTsKLQotCXJldHVybiBvbGRlc3Rfb2Zmc2V0OwotfQotCi0jZGVmaW5lIE1YQUNUX01F TUJFUlNfRkxBR19CWVRFUwkJCTEKLQotI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJf R1JPVVAJCQk0Ci0jZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFCQkJXAotCShN VUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVAgKiAoc2l6ZW9mKFRyYW5zYWN0aW9uSWQpICsg TVhBQ1RfTUVNQkVSU19GTEFHX0JZVEVTKSkKLSNkZWZpbmUgTVVMVElYQUNUX01FTUJFUkdS T1VQU19QRVJfUEFHRQkJXAotCShCTENLU1ogLyBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0la RSkKLQotI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRQkJCQlcCi0JKE1VTFRJ WEFDVF9NRU1CRVJTX1BFUl9HUk9VUCAqIE1VTFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BB R0UpCi0jZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJfRkxBR19CWVRFU19QRVJfR1JPVVAJXAot CShNWEFDVF9NRU1CRVJTX0ZMQUdfQllURVMgKiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JP VVApCi0KLXR5cGVkZWYgc3RydWN0IE11bHRpWGFjdE1lbWJlcnNDdHgKLXsKLQlTbHJ1U2Vn U3RhdGUJc2VnOwotCWNoYXIJCQlidWZbQkxDS1NaXTsKLQlpbnQJCQkJZ3JvdXA7Ci0JaW50 CQkJCW1lbWJlcjsKLQljaGFyCQkgICAqZmxhZzsKLQlUcmFuc2FjdGlvbklkICAqeGlkOwot fSBNdWx0aVhhY3RNZW1iZXJzQ3R4OwotCi1zdGF0aWMgdm9pZAotTXVsdGlYYWN0TWVtYmVy c0N0eEluaXQoTXVsdGlYYWN0TWVtYmVyc0N0eCAqY3R4KQotewotCWN0eC0+c2VnLmRpciA9 IHBzcHJpbnRmKCIlcy9wZ19tdWx0aXhhY3QvbWVtYmVycyIsIG5ld19jbHVzdGVyLnBnZGF0 YSk7Ci0KLQljdHgtPmdyb3VwID0gMDsKLQljdHgtPm1lbWJlciA9IDE7CQkvKiBza2lwIGlu dmFsaWQgemVybyBvZmZzZXQgKi8KLQotCWN0eC0+ZmxhZyA9IChjaGFyICopIGN0eC0+YnVm ICsgY3R4LT5ncm91cCAqIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFOwotCWN0eC0+eGlk ID0gKFRyYW5zYWN0aW9uSWQgKikoY3R4LT5mbGFnICsgTVhBQ1RfTUVNQkVSU19GTEFHX0JZ VEVTICogTVVMVElYQUNUX01FTUJFUlNfUEVSX0dST1VQKTsKLQotCWN0eC0+ZmxhZyArPSBj dHgtPm1lbWJlcjsKLQljdHgtPnhpZCArPSBjdHgtPm1lbWJlcjsKLX0KLQotc3RhdGljIHZv aWQKLU11bHRpWGFjdE1lbWJlcnNDdHhBZGQoTXVsdGlYYWN0TWVtYmVyc0N0eCAqY3R4LCBj aGFyIGZsYWcsIFRyYW5zYWN0aW9uSWQgeGlkKQotewotCS8qIENvcHkgbWVtYmVyJ3MgeGlk IGFuZCBmbGFncyB0byB0aGUgbmV3IHBhZ2UgKi8KLQkqY3R4LT5mbGFnKysgPSBmbGFnOwot CSpjdHgtPnhpZCsrID0geGlkOwotCi0JaWYgKCsrY3R4LT5tZW1iZXIgPCBNVUxUSVhBQ1Rf TUVNQkVSU19QRVJfR1JPVVApCi0JCXJldHVybjsKLQotCS8qIFN0YXJ0IG5leHQgbWVtYmVy IGdyb3VwICovCi0JY3R4LT5tZW1iZXIgPSAwOwotCi0JaWYgKCsrY3R4LT5ncm91cCA+PSBN VUxUSVhBQ1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFKQotCXsKLQkJLyogV3JpdGUgY3VycmVu dCBwYWdlIGFuZCBzdGFydCBuZXcgKi8KLQkJd3JpdGVfbmV3X3NlZ21lbnRfcGFnZSgmY3R4 LT5zZWcsIGN0eC0+YnVmKTsKLQotCQljdHgtPmdyb3VwID0gMDsKLQkJbWVtc2V0KGN0eC0+ YnVmLCAwLCBCTENLU1opOwotCX0KLQotCWN0eC0+ZmxhZyA9IChjaGFyICopIGN0eC0+YnVm ICsgY3R4LT5ncm91cCAqIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFOwotCWN0eC0+eGlk ID0gKFRyYW5zYWN0aW9uSWQgKikoY3R4LT5mbGFnICsgTVhBQ1RfTUVNQkVSU19GTEFHX0JZ VEVTICogTVVMVElYQUNUX01FTUJFUlNfUEVSX0dST1VQKTsKLX0KLQotc3RhdGljIHZvaWQK LU11bHRpWGFjdE1lbWJlcnNDdHhGaW5pdChNdWx0aVhhY3RNZW1iZXJzQ3R4ICpjdHgpCi17 Ci0JaWYgKGN0eC0+ZmxhZyA+IChjaGFyICopIGN0eC0+YnVmKQotCQl3cml0ZV9uZXdfc2Vn bWVudF9wYWdlKCZjdHgtPnNlZywgY3R4LT5idWYpOwotCi0JY2xvc2Vfc2VnbWVudCgmY3R4 LT5zZWcpOwotCi0JcGZyZWUoY3R4LT5zZWcuZGlyKTsKLX0KLQotLyoKLSAqIENvbnZlcnQg cGdfbXVsdGl4YWN0L21lbWJlcnMgc2VnbWVudHMsIG9mZnNldHMgd2lsbCBzdGFydCBmcm9t IDEuCi0gKgotICovCi12b2lkCi1jb252ZXJ0X211bHRpeGFjdF9tZW1iZXJzKE11bHRpWGFj dE9mZnNldCBvbGRlc3Rfb2Zmc2V0KQotewotCU11bHRpWGFjdE9mZnNldAkJCW5leHRfb2Zm c2V0LAotCQkJCQkJCW9mZnNldDsKLQlTbHJ1U2VnU3RhdGUJCQlvbGRzZWcgPSB7MH07Ci0J Y2hhcgkJCQkJb2xkYnVmW0JMQ0tTWl0gPSB7MH07Ci0JaW50CQkJCQkJb2xkaWR4OwotCU11 bHRpWGFjdE1lbWJlcnNDdHgJCW5ld2N0eCA9IHswfTsKLQotCW9sZHNlZy5kaXIgPSBwc3By aW50ZigiJXMvcGdfbXVsdGl4YWN0L21lbWJlcnMiLCBvbGRfY2x1c3Rlci5wZ2RhdGEpOwot Ci0JbmV4dF9vZmZzZXQgPSAoTXVsdGlYYWN0T2Zmc2V0KSBvbGRfY2x1c3Rlci5jb250cm9s ZGF0YS5jaGtwbnRfbnh0bXhvZmY7Ci0JaWYgKG5leHRfb2Zmc2V0IDwgb2xkZXN0X29mZnNl dCkKLQkJbmV4dF9vZmZzZXQgKz0gKCh1aW50NjQpIDEgPDwgMzIpIC0gMTsKLQotCS8qIElu aXRpYWxpemUgdGhlIG9sZCBzdGFydGluZyBwb3NpdGlvbiAqLwotCW9sZHNlZy5wYWdlbm8g PSBvbGRlc3Rfb2Zmc2V0IC8gTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0U7Ci0Jb2xkc2Vn LnNlZ25vID0gb2xkc2VnLnBhZ2VubyAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7Ci0Jb2xk c2VnLnBhZ2VubyAlPSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOwotCi0JLyogSW5pdGlhbGl6 ZSBuZXcgc3RhcnRpbmcgcG9zaXRpb24gKi8KLQlNdWx0aVhhY3RNZW1iZXJzQ3R4SW5pdCgm bmV3Y3R4KTsKLQotCS8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5 ICovCi0Jb2xkaWR4ID0gb2xkZXN0X29mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9Q QUdFOwotCWZvciAob2Zmc2V0ID0gb2xkZXN0X29mZnNldDsgb2Zmc2V0IDwgbmV4dF9vZmZz ZXQ7KQotCXsKLQkJYm9vbAllbXB0eTsKLQkJaW50CQlvbGRsZW47Ci0JCWludAkJbmdyb3Vw czsKLQkJaW50CQlvbGRncm91cDsKLQkJaW50CQlvbGRtZW1iZXI7Ci0KLQkJb2xkbGVuID0g cmVhZF9vbGRfc2VnbWVudF9wYWdlKCZvbGRzZWcsIG9sZGJ1ZiwgJmVtcHR5KTsKLQkJaWYg KGVtcHR5IHx8IG9sZGxlbiAhPSBCTENLU1opCi0JCQlwZ19mYXRhbCgiY2Fubm90IHJlYWQg cGFnZSAlbGx1IGZyb20gZmlsZSBcIiVzXCI6ICVtIiwKLQkJCQkJICh1bnNpZ25lZCBsb25n IGxvbmcpIG9sZHNlZy5wYWdlbm8sIG9sZHNlZy5mbik7Ci0KLQkJLyogSXRlcmF0ZSB0aHJv dWdoIHRoZSBvbGQgbWVtYmVyIGdyb3VwcyAqLwotCQluZ3JvdXBzID0gb2xkbGVuIC8gTVVM VElYQUNUX01FTUJFUkdST1VQX1NJWkU7Ci0JCW9sZG1lbWJlciA9IG9sZGlkeCAlIE1VTFRJ WEFDVF9NRU1CRVJTX1BFUl9HUk9VUDsKLQkJb2xkZ3JvdXAgPSBvbGRpZHggLyBNVUxUSVhB Q1RfTUVNQkVSU19QRVJfR1JPVVA7Ci0JCXdoaWxlIChvbGRncm91cCA8IG5ncm91cHMgJiYg b2Zmc2V0IDwgbmV4dF9vZmZzZXQpCi0JCXsKLQkJCWNoYXIJCSAgICpvbGRmbGFnOwotCQkJ VHJhbnNhY3Rpb25JZCAgKm9sZHhpZDsKLQkJCWludAkJCQlpOwotCi0JCQlvbGRmbGFnID0g KGNoYXIgKikgb2xkYnVmICsgb2xkZ3JvdXAgKiBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0la RTsKLQkJCW9sZHhpZCA9IChUcmFuc2FjdGlvbklkICopKG9sZGZsYWcgKyBNVUxUSVhBQ1Rf TUVNQkVSX0ZMQUdfQllURVNfUEVSX0dST1VQKTsKLQotCQkJb2xkeGlkICs9IG9sZG1lbWJl cjsKLQkJCW9sZGZsYWcgKz0gb2xkbWVtYmVyOwotCi0JCQkvKiBJdGVyYXRlIHRocm91Z2gg dGhlIG9sZCBtZW1iZXJzICovCi0JCQlmb3IgKGkgPSBvbGRtZW1iZXI7Ci0JCQkJIGkgPCBN VUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVAgJiYgb2Zmc2V0IDwgbmV4dF9vZmZzZXQ7Ci0J CQkJIGkrKykKLQkJCXsKLQkJCQlNdWx0aVhhY3RNZW1iZXJzQ3R4QWRkKCZuZXdjdHgsICpv bGRmbGFnKyssICpvbGR4aWQrKyk7Ci0KLQkJCQlpZiAoKytvZmZzZXQgPT0gKHVpbnQ2NCkg MSA8PCAzMikKLQkJCQl7Ci0JCQkJCUFzc2VydChpID09IE1heE11bHRpWGFjdE9mZnNldE9s ZCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9HUk9VUCk7Ci0JCQkJCWdvdG8gd3JhcGFyb3Vu ZDsKLQkJCQl9Ci0JCQl9Ci0KLQkJCW9sZGdyb3VwKys7Ci0JCQlvbGRtZW1iZXIgPSAwOwot CQl9Ci0KLQkJb2xkaWR4ID0gMDsKLQotCQljb250aW51ZTsKLQotd3JhcGFyb3VuZDoKLSNk ZWZpbmUgU0VHTk9fTUFYCU1heE11bHRpWGFjdE9mZnNldE9sZCAvIE1VTFRJWEFDVF9NRU1C RVJTX1BFUl9QQUdFIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVAotI2RlZmluZSBQQUdFTk9f TUFYCU1heE11bHRpWGFjdE9mZnNldE9sZCAvIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdF ICUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVAotCQlBc3NlcnQoKG9sZHNlZy5zZWdubyA9PSBT RUdOT19NQVggJiYgb2xkc2VnLnBhZ2VubyA9PSBQQUdFTk9fTUFYICsgMSkgfHwKLQkJCSAg IChvbGRzZWcuc2Vnbm8gPT0gU0VHTk9fTUFYICsgMSAmJiBvbGRzZWcucGFnZW5vID09IDAp KTsKLQotCQkvKiBTd2l0Y2ggdG8gc2VnbWVudCAwMDAwICovCi0JCWNsb3NlX3NlZ21lbnQo Jm9sZHNlZyk7Ci0JCW9sZHNlZy5zZWdubyA9IDA7Ci0JCW9sZHNlZy5wYWdlbm8gPSAwOwot Ci0JCS8qIHNraXAgaW52YWxpZCB6ZXJvIG11bHRpIG9mZnNldCAqLwotCQlvbGRpZHggPSAx OwotCX0KLQotCU11bHRpWGFjdE1lbWJlcnNDdHhGaW5pdCgmbmV3Y3R4KTsKLQotCS8qIFJl bGVhc2UgcmVzb3VyY2VzICovCi0JY2xvc2Vfc2VnbWVudCgmb2xkc2VnKTsKLQotCXBmcmVl KG9sZHNlZy5kaXIpOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVf aW8uYyBiL3NyYy9iaW4vcGdfdXBncmFkZS9zbHJ1X2lvLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE1MmVjZmRjZTU5Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uYwpAQCAtMCwwICsxLDIxNCBAQAorLyoKKyAq CXNscnVfaW8uYworICoKKyAqCVJvdXRpbmVzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIFNM UlUgZmlsZXMgZHVyaW5nIHVwZ3JhZGUuCisgKgorICoJQ29weXJpZ2h0IChjKSAyMDI0LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoJc3JjL2Jpbi9wZ191cGdy YWRlL3NscnVfaW8uYworICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5j bHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgInBnX3VwZ3JhZGUuaCIKKyNpbmNsdWRlICJz bHJ1X2lvLmgiCisKKyNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCisjaW5jbHVkZSAi Y29tbW9uL2ZpbGVfdXRpbHMuaCIKKyNpbmNsdWRlICJwb3J0L3BnX2lvdmVjLmgiCisKKy8q IFNlZSBzbHJ1LmggKi8KKyNkZWZpbmUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVAkJMzIKKwor LyoKKyAqIFN0YXRlIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgYW4gU0xSVSwgd2l0aCBhIG9u ZSBwYWdlIGJ1ZmZlci4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2xydVNlZ1N0YXRlCit7CisJ Ym9vbAkJd3JpdGluZzsKKworCWNoYXIJICAgKmRpcjsKKwljaGFyCSAgICpmbjsKKwlpbnQJ CQlmZDsKKwlpbnQ2NAkJc2Vnbm87CisJdWludDY0CQlwYWdlbm87CisKKwlQR0FsaWduZWRC bG9jayBidWY7Cit9IFNscnVTZWdTdGF0ZTsKKworc3RhdGljIHZvaWQgU2xydUZsdXNoKFNs cnVTZWdTdGF0ZSAqc3RhdGUpOworCisKK1NscnVTZWdTdGF0ZSAqCitPcGVuU2xydVJlYWQo Y2hhciAqZGlyKQoreworCVNscnVTZWdTdGF0ZSAqc3RhdGU7CisKKwlzdGF0ZSA9IHBnX21h bGxvYyhzaXplb2YoU2xydVNlZ1N0YXRlKSk7CisJc3RhdGUtPndyaXRpbmcgPSBmYWxzZTsK KwlzdGF0ZS0+c2Vnbm8gPSAtMTsKKwlzdGF0ZS0+cGFnZW5vID0gMDsKKwlzdGF0ZS0+ZGly ID0gcHN0cmR1cChkaXIpOworCXN0YXRlLT5mZCA9IC0xOworCXN0YXRlLT5mbiA9IE5VTEw7 CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKK3ZvaWQKK0Nsb3NlU2xydVJlYWQoU2xydVNlZ1N0 YXRlICpzdGF0ZSkKK3sKKwlBc3NlcnQoIXN0YXRlLT53cml0aW5nKTsKKwljbG9zZShzdGF0 ZS0+ZmQpOworCXBnX2ZyZWUoc3RhdGUpOworfQorCitTbHJ1U2VnU3RhdGUgKgorT3BlblNs cnVXcml0ZShjaGFyICpkaXIsIGludDY0IHN0YXJ0UGFnZW5vKQoreworCVNscnVTZWdTdGF0 ZSAqc3RhdGU7CisKKwlzdGF0ZSA9IHBnX21hbGxvYyhzaXplb2YoU2xydVNlZ1N0YXRlKSk7 CisJc3RhdGUtPndyaXRpbmcgPSB0cnVlOworCXN0YXRlLT5zZWdubyA9IC0xOworCXN0YXRl LT5wYWdlbm8gPSAwOworCXN0YXRlLT5kaXIgPSBwc3RyZHVwKGRpcik7CisJc3RhdGUtPmZk ID0gLTE7CisJc3RhdGUtPmZuID0gTlVMTDsKKworCXJldHVybiBzdGF0ZTsKK30KKwordm9p ZAorQ2xvc2VTbHJ1V3JpdGUoU2xydVNlZ1N0YXRlICpzdGF0ZSkKK3sKKwlBc3NlcnQoc3Rh dGUtPndyaXRpbmcpOworCVNscnVGbHVzaChzdGF0ZSk7CisKKwljbG9zZShzdGF0ZS0+ZmQp OworCXBnX2ZyZWUoc3RhdGUpOworfQorCitzdGF0aWMgdm9pZAorU2xydUZsdXNoKFNscnVT ZWdTdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGlvdmVjIGlvdmVjID0geworCQkuaW92X2Jh c2UgPSAmc3RhdGUtPmJ1ZiwKKwkJLmlvdl9sZW4gPSBCTENLU1osCisJfTsKKwlvZmZfdAkJ b2Zmc2V0OworCisJaWYgKHN0YXRlLT5zZWdubyA9PSAtMSkKKwkJcmV0dXJuOworCisJb2Zm c2V0ID0gKHN0YXRlLT5wYWdlbm8gJSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKSAqIEJMQ0tT WjsKKworCWlmIChwZ19wd3JpdGV2X3dpdGhfcmV0cnkoc3RhdGUtPmZkLCAmaW92ZWMsIDEs IG9mZnNldCkgPCAwKQorCQlwZ19mYXRhbCgiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wi OiAlbSIsIHN0YXRlLT5mbik7Cit9CisKKy8qCisgKiBPcGVuIHRoZSBnaXZlbiBwYWdlIGZv ciB3cml0aW5nLgorICoKKyAqIE5PVEU6IFRoaXMgdXNlcyBPX0VYQ0wgd2hlbiBzdGVwcGlu ZyB0byBhIG5ldyBzZWdtZW50LCBzbyB0aGlzIGFzc3VtZXMgdGhhdAorICogZWFjaCBzZWdt ZW50IGlzIHdyaXR0ZW4gaW4gZnVsbCBiZWZvcmUgbW92aW5nIG9uIHRvIG5leHQgb25lLiBU aGlzCisgKiBsaW1pdGF0aW9uIHdvdWxkIGJlIGVhc3kgdG8gbGlmdCBpZiBuZWVkZWQsIGJ1 dCBpdCBmaXRzIHRoZSB1c2FnZSBwYXR0ZXJuCisgKiBvZiBjdXJyZW50IGNhbGxlcnMuCisg Ki8KK2NoYXIgKgorU2xydVdyaXRlU3dpdGNoUGFnZShTbHJ1U2VnU3RhdGUgKnN0YXRlLCB1 aW50NjQgcGFnZW5vKQoreworCWludDY0CQlzZWdubyA9IHBhZ2VubyAvIFNMUlVfUEFHRVNf UEVSX1NFR01FTlQ7CisJb2ZmX3QJCW9mZnNldDsKKworCWlmIChzdGF0ZS0+c2Vnbm8gIT0g LTEgJiYgcGFnZW5vID09IHN0YXRlLT5wYWdlbm8pCisJCXJldHVybiBzdGF0ZS0+YnVmLmRh dGE7CisKKwlzZWdubyA9IHBhZ2VubyAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CisJb2Zm c2V0ID0gKHBhZ2VubyAlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpICogQkxDS1NaOworCisJ U2xydUZsdXNoKHN0YXRlKTsKKwltZW1zZXQoc3RhdGUtPmJ1Zi5kYXRhLCAwLCBCTENLU1op OworCisJaWYgKHNlZ25vICE9IHN0YXRlLT5zZWdubykKKwl7CisJCWlmIChzdGF0ZS0+c2Vn bm8gIT0gLTEpCisJCXsKKwkJCWNsb3NlKHN0YXRlLT5mZCk7CisJCQlzdGF0ZS0+ZmQgPSAt MTsKKwkJCXBnX2ZyZWUoc3RhdGUtPmZuKTsKKwkJCXN0YXRlLT5mbiA9IE5VTEw7CisJCX0K KworCQkvKiBDcmVhdGUgdGhlIHNlZ21lbnQgKi8KKwkJc3RhdGUtPmZuID0gcHNwcmludGYo IiVzLyUwNFgiLCBzdGF0ZS0+ZGlyLCAodW5zaWduZWQgaW50KSBzZWdubyk7CisJCWlmICgo c3RhdGUtPmZkID0gb3BlbihzdGF0ZS0+Zm4sIE9fUkRXUiB8IE9fQ1JFQVQgfCBPX0VYQ0wg fCBQR19CSU5BUlksCisJCQkJCQkJICBwZ19maWxlX2NyZWF0ZV9tb2RlKSkgPCAwKQorCQl7 CisJCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjogJW0iLCBzdGF0 ZS0+Zm4pOworCQl9CisJCXN0YXRlLT5zZWdubyA9IHNlZ25vOworCisJCWlmIChvZmZzZXQg PiAwKQorCQl7CisJCQlpZiAocGdfcHdyaXRlX3plcm9zKHN0YXRlLT5mZCwgb2Zmc2V0LCAw KSA8IDApCisJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0i LCBzdGF0ZS0+Zm4pOworCQl9CisJfQorCisJc3RhdGUtPnBhZ2VubyA9IHBhZ2VubzsKKwly ZXR1cm4gc3RhdGUtPmJ1Zi5kYXRhOworfQorCisvKgorICogT3BlbiBnaXZlbiBwYWdlIGZv ciByZWFkaW5nLgorICoKKyAqIFJlYWRpbmcgY2FuIGJlIGRvbmUgaW4gcmFuZG9tIG9yZGVy LgorICovCitjaGFyICoKK1NscnVSZWFkU3dpdGNoUGFnZShTbHJ1U2VnU3RhdGUgKnN0YXRl LCB1aW50NjQgcGFnZW5vKQoreworCWludDY0CQlzZWdubzsKKworCWlmIChzdGF0ZS0+c2Vn bm8gIT0gLTEgJiYgcGFnZW5vID09IHN0YXRlLT5wYWdlbm8pCisJCXJldHVybiBzdGF0ZS0+ YnVmLmRhdGE7CisKKwlzZWdubyA9IHBhZ2VubyAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7 CisKKwlpZiAoc2Vnbm8gIT0gc3RhdGUtPnNlZ25vKQorCXsKKwkJaWYgKHN0YXRlLT5zZWdu byAhPSAtMSkKKwkJeworCQkJY2xvc2Uoc3RhdGUtPmZkKTsKKwkJCXN0YXRlLT5mZCA9IC0x OworCQkJcGdfZnJlZShzdGF0ZS0+Zm4pOworCQkJc3RhdGUtPmZuID0gTlVMTDsKKwkJfQor CisJCS8qIE9wZW4gbmV3IHNlZ21lbnQgKi8KKwkJc3RhdGUtPmZuID0gcHNwcmludGYoIiVz LyUwNFgiLCBzdGF0ZS0+ZGlyLCAodW5zaWduZWQgaW50KSBzZWdubyk7CisJCWlmICgoc3Rh dGUtPmZkID0gb3BlbihzdGF0ZS0+Zm4sIE9fUkRPTkxZIHwgUEdfQklOQVJZLCAwKSkgPCAw KQorCQl7CisJCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwg c3RhdGUtPmZuKTsKKwkJfQorCQlzdGF0ZS0+c2Vnbm8gPSBzZWdubzsKKwl9CisKKwl7CisJ CXN0cnVjdCBpb3ZlYyBpb3ZlYyA9IHsKKwkJCS5pb3ZfYmFzZSA9ICZzdGF0ZS0+YnVmLAor CQkJLmlvdl9sZW4gPSBCTENLU1osCisJCX07CisJCW9mZl90CQlvZmZzZXQ7CisKKwkJb2Zm c2V0ID0gKHBhZ2VubyAlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpICogQkxDS1NaOworCisJ CWlmIChwZ19wcmVhZHYoc3RhdGUtPmZkLCAmaW92ZWMsIDEsIG9mZnNldCkgPCAwKQorCQkJ cGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7 CisKKwkJc3RhdGUtPnBhZ2VubyA9IHBhZ2VubzsKKwl9CisKKwlyZXR1cm4gc3RhdGUtPmJ1 Zi5kYXRhOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uaCBi L3NyYy9iaW4vcGdfdXBncmFkZS9zbHJ1X2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmUxYTljMDYzMTM5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jp bi9wZ191cGdyYWRlL3NscnVfaW8uaApAQCAtMCwwICsxLDIzIEBACisvKgorICoJc2xydV9p by5oCisgKgorICoJQ29weXJpZ2h0IChjKSAyMDEwLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKglzcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9pby5oCisg Ki8KKworLyogWFhYOiBjb3BpZWQgZnJvbSBzbHJ1LmggKi8KKyNkZWZpbmUgU0xSVV9QQUdF U19QRVJfU0VHTUVOVAkzMgorCisvKgorICogU29tZSBraW5kIG9mIGl0ZXJhdG9yIGFzc29j aWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgU0xSVSBzZWdtZW50LiAgVGhlIGlkZWEgaXMKKyAq IHRvIHNwZWNpZnkgdGhlIHNlZ21lbnQgYW5kIHBhZ2UgbnVtYmVyIGFuZCB0aGVuIG1vdmUg dGhyb3VnaCB0aGUgcGFnZXMuCisgKi8KK3R5cGVkZWYgc3RydWN0IFNscnVTZWdTdGF0ZSBT bHJ1U2VnU3RhdGU7CisKK2V4dGVybiBTbHJ1U2VnU3RhdGUgKk9wZW5TbHJ1UmVhZChjaGFy ICpkaXIpOworZXh0ZXJuIHZvaWQgQ2xvc2VTbHJ1UmVhZChTbHJ1U2VnU3RhdGUgKnN0YXRl KTsKK2V4dGVybiBjaGFyICpTbHJ1UmVhZFN3aXRjaFBhZ2UoU2xydVNlZ1N0YXRlICpzdGF0 ZSwgdWludDY0IHBhZ2Vubyk7CisKK2V4dGVybiBTbHJ1U2VnU3RhdGUgKk9wZW5TbHJ1V3Jp dGUoY2hhciAqZGlyLCBpbnQ2NCBzdGFydFBhZ2Vubyk7CitleHRlcm4gdm9pZCBDbG9zZVNs cnVXcml0ZShTbHJ1U2VnU3RhdGUgKnN0YXRlKTsKK2V4dGVybiBjaGFyICpTbHJ1V3JpdGVT d2l0Y2hQYWdlKFNscnVTZWdTdGF0ZSAqc3RhdGUsIHVpbnQ2NCBwYWdlbm8pOwotLSAKMi4z OS41Cgo= --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0011-TEST-initdb-option-to-initialize-cluster-with-no.patch" Content-Disposition: attachment; filename*0="v10-0011-TEST-initdb-option-to-initialize-cluster-with-no.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxZGRiY2U0NmY5NWYyNjQxNzkzNGZkMjMyMTgxZjJjYjUxYjVkMmI1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3By by5ydT4KRGF0ZTogV2VkLCA0IE1heSAyMDIyIDE1OjUzOjM2ICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MTAgMTEvMTRdIFRFU1Q6IGluaXRkYiBvcHRpb24gdG8gaW5pdGlhbGl6ZSBjbHVz dGVyIHdpdGgKIG5vbi1zdGFuZGFyZCB4aWQvbXhpZC9teG9mZgoKVG8gZGF0ZSB0ZXN0aW5n IGRhdGFiYXNlIGNsdXN0ZXIgd3JhcGFydW5kIHdhcyBub3QgZWFzeSBhcyBpbml0ZGIgaGFz IGFsd2F5cwppbml0ZWQgaXQgd2l0aCBkZWZhdWx0IHhpZC9teGlkL214b2ZmLiBUaGUgb3B0 aW9uIHRvIHNwZWNpZnkgYW55IHZhbGlkCnhpZC9teGlkL214b2ZmIGF0IGNsdXN0ZXIgc3Rh cnR1cCB3aWxsIG1ha2UgdGhlc2UgdGhpbmdzIGVhc2llci4KCkF1dGhvcjogTWF4aW0gT3Js b3YgPG9ybG92bWdAZ21haWwuY29tPgpBdXRob3I6IFBhdmVsIEJvcmlzb3YgPHBhc2hraW4u ZWxmZUBnbWFpbC5jb20+CkF1dGhvcjogU3ZldGxhbmEgRGVyZXZ5YW5rbyA8cy5kZXJldnlh bmtvQHBvc3RncmVzcHJvLnJ1PgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3Fs Lm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FDRyUzRGV6YWE0dnFZakoxNnlveGdycGEtJTNEZ1hu ZjBWdjNFeTliakdyUlJGTjJZeVdGUSU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jICAgICAgfCAgMjEgKysrKysKIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIHwgIDUzICsrKysrKysrKysrKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYyAgfCAgIDggKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgIHwgIDE1ICsrLS0KIHNyYy9iYWNrZW5kL2Jv b3RzdHJhcC9ib290c3RyYXAuYyAgICAgIHwgIDUwICsrKysrKysrKysrLQogc3JjL2JhY2tl bmQvbWFpbi9tYWluLmMgICAgICAgICAgICAgICAgfCAgIDYgKysKIHNyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvcG9zdG1hc3Rlci5jICAgIHwgIDE0ICsrKy0KIHNyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYyAgICAgICAgICAgIHwgIDUzICsrKysrKysrKysrLQogc3JjL2Jpbi9pbml0 ZGIvaW5pdGRiLmMgICAgICAgICAgICAgICAgfCAxMDcgKysrKysrKysrKysrKysrKysrKysr KysrLQogc3JjL2Jpbi9pbml0ZGIvdC8wMDFfaW5pdGRiLnBsICAgICAgICAgfCAgNjAgKysr KysrKysrKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAgICAgICAgICAgIHwg ICAzICsKIHNyYy9pbmNsdWRlL2MuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaCAgICAgICAgIHwgICAyICstCiAxMyBm aWxlcyBjaGFuZ2VkLCAzODIgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCmluZGV4IGU2Zjc5MzIwZTk0Li4xN2UyOWY0NDk3 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwpAQCAtODM0LDYgKzgzNCw3IEBA IEJvb3RTdHJhcENMT0codm9pZCkKIHsKIAlpbnQJCQlzbG90bm87CiAJTFdMb2NrCSAgICps b2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soWGFjdEN0bCwgMCk7CisJaW50NjQJCXBhZ2Vu bzsKIAogCUxXTG9ja0FjcXVpcmUobG9jaywgTFdfRVhDTFVTSVZFKTsKIApAQCAtODQ0LDYg Kzg0NSwyNiBAQCBCb290U3RyYXBDTE9HKHZvaWQpCiAJU2ltcGxlTHJ1V3JpdGVQYWdlKFhh Y3RDdGwsIHNsb3Rubyk7CiAJQXNzZXJ0KCFYYWN0Q3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlb c2xvdG5vXSk7CiAKKwlwYWdlbm8gPSBUcmFuc2FjdGlvbklkVG9QYWdlKFhpZEZyb21GdWxs VHJhbnNhY3Rpb25JZChUcmFuc2FtVmFyaWFibGVzLT5uZXh0WGlkKSk7CisJaWYgKHBhZ2Vu byAhPSAwKQorCXsKKwkJTFdMb2NrICpuZXh0bG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2Nr KFhhY3RDdGwsIHBhZ2Vubyk7CisKKwkJaWYgKG5leHRsb2NrICE9IGxvY2spCisJCXsKKwkJ CUxXTG9ja1JlbGVhc2UobG9jayk7CisJCQlMV0xvY2tBY3F1aXJlKG5leHRsb2NrLCBMV19F WENMVVNJVkUpOworCQkJbG9jayA9IG5leHRsb2NrOworCQl9CisKKwkJLyogQ3JlYXRlIGFu ZCB6ZXJvIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBjb21taXQgbG9nICovCisJCXNsb3RubyA9 IFplcm9DTE9HUGFnZShwYWdlbm8sIGZhbHNlKTsKKworCQkvKiBNYWtlIHN1cmUgaXQncyB3 cml0dGVuIG91dCAqLworCQlTaW1wbGVMcnVXcml0ZVBhZ2UoWGFjdEN0bCwgc2xvdG5vKTsK KwkJQXNzZXJ0KCFYYWN0Q3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSk7CisJfQor CiAJTFdMb2NrUmVsZWFzZShsb2NrKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9tdWx0aXhhY3QuYwppbmRleCBlYTA5Zjg2MDZjZi4uNDIzMWJlM2I2NjUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC0xODE1LDYgKzE4MTUsNyBA QCBCb290U3RyYXBNdWx0aVhhY3Qodm9pZCkKIHsKIAlpbnQJCQlzbG90bm87CiAJTFdMb2Nr CSAgICpsb2NrOworCWludDY0CQlwYWdlbm87CiAKIAlsb2NrID0gU2ltcGxlTHJ1R2V0QmFu a0xvY2soTXVsdGlYYWN0T2Zmc2V0Q3RsLCAwKTsKIAlMV0xvY2tBY3F1aXJlKGxvY2ssIExX X0VYQ0xVU0lWRSk7CkBAIC0xODI2LDYgKzE4MjcsMjYgQEAgQm9vdFN0cmFwTXVsdGlYYWN0 KHZvaWQpCiAJU2ltcGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFjdE9mZnNldEN0bCwgc2xvdG5v KTsKIAlBc3NlcnQoIU11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Ns b3Rub10pOwogCisJcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UoTXVsdGlYYWN0 U3RhdGUtPm5leHRNWGFjdCk7CisJaWYgKHBhZ2VubyAhPSAwKQorCXsKKwkJTFdMb2NrICpu ZXh0bG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKE11bHRpWGFjdE9mZnNldEN0bCwgcGFn ZW5vKTsKKworCQlpZiAobmV4dGxvY2sgIT0gbG9jaykKKwkJeworCQkJTFdMb2NrUmVsZWFz ZShsb2NrKTsKKwkJCUxXTG9ja0FjcXVpcmUobmV4dGxvY2ssIExXX0VYQ0xVU0lWRSk7CisJ CQlsb2NrID0gbmV4dGxvY2s7CisJCX0KKworCQkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZp cnN0IHBhZ2Ugb2YgdGhlIG9mZnNldHMgbG9nICovCisJCXNsb3RubyA9IFplcm9NdWx0aVhh Y3RPZmZzZXRQYWdlKHBhZ2VubywgZmFsc2UpOworCisJCS8qIE1ha2Ugc3VyZSBpdCdzIHdy aXR0ZW4gb3V0ICovCisJCVNpbXBsZUxydVdyaXRlUGFnZShNdWx0aVhhY3RPZmZzZXRDdGws IHNsb3Rubyk7CisJCUFzc2VydCghTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBhZ2Vf ZGlydHlbc2xvdG5vXSk7CisJfQorCiAJTFdMb2NrUmVsZWFzZShsb2NrKTsKIAogCWxvY2sg PSBTaW1wbGVMcnVHZXRCYW5rTG9jayhNdWx0aVhhY3RNZW1iZXJDdGwsIDApOwpAQCAtMTgz OCw3ICsxODU5LDM5IEBAIEJvb3RTdHJhcE11bHRpWGFjdCh2b2lkKQogCVNpbXBsZUxydVdy aXRlUGFnZShNdWx0aVhhY3RNZW1iZXJDdGwsIHNsb3Rubyk7CiAJQXNzZXJ0KCFNdWx0aVhh Y3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKIAorCXBhZ2VubyA9 IE1YT2Zmc2V0VG9NZW1iZXJQYWdlKE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0KTsKKwlp ZiAocGFnZW5vICE9IDApCisJeworCQlMV0xvY2sgKm5leHRsb2NrID0gU2ltcGxlTHJ1R2V0 QmFua0xvY2soTXVsdGlYYWN0TWVtYmVyQ3RsLCBwYWdlbm8pOworCisJCWlmIChuZXh0bG9j ayAhPSBsb2NrKQorCQl7CisJCQlMV0xvY2tSZWxlYXNlKGxvY2spOworCQkJTFdMb2NrQWNx dWlyZShuZXh0bG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJCWxvY2sgPSBuZXh0bG9jazsKKwkJ fQorCisJCS8qIENyZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgbWVtYmVy cyBsb2cgKi8KKwkJc2xvdG5vID0gWmVyb011bHRpWGFjdE1lbWJlclBhZ2UocGFnZW5vLCBm YWxzZSk7CisKKwkJLyogTWFrZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KKwkJU2ltcGxl THJ1V3JpdGVQYWdlKE11bHRpWGFjdE1lbWJlckN0bCwgc2xvdG5vKTsKKwkJQXNzZXJ0KCFN dWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisK IAlMV0xvY2tSZWxlYXNlKGxvY2spOworCisJLyoKKwkgKiBJZiB3ZSdyZSBzdGFydGluZyBu b3QgZnJvbSB6ZXJvIG9mZnNldCwgaW5pdGlsaXplIGR1bW15IG11bHRpeGFjdCB0bworCSAq IGV2YWRlIHRvbyBsb25nIGxvb3AgaW4gUGVyZm9ybU1lbWJlcnNUcnVuY2F0aW9uKCkuCisJ ICovCisJaWYgKE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0ID4gMCAmJiBNdWx0aVhhY3RT dGF0ZS0+bmV4dE1YYWN0ID4gMCkKKwl7CisJCVJlY29yZE5ld011bHRpWGFjdChGaXJzdE11 bHRpWGFjdElkLAorCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQsIDAsIE5V TEwpOworCQlSZWNvcmROZXdNdWx0aVhhY3QoTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCwK KwkJCQkJCSAgIE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0LCAwLCBOVUxMKTsKKwl9CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFu cy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYwppbmRleCA1MGJi MWQ4Y2ZjNS4uYTVlNmU4ZjA5MDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3N1YnRyYW5zLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3Vi dHJhbnMuYwpAQCAtMjcwLDEyICsyNzAsMTYgQEAgdm9pZAogQm9vdFN0cmFwU1VCVFJBTlMo dm9pZCkKIHsKIAlpbnQJCQlzbG90bm87Ci0JTFdMb2NrCSAgICpsb2NrID0gU2ltcGxlTHJ1 R2V0QmFua0xvY2soU3ViVHJhbnNDdGwsIDApOworCUxXTG9jawkgICAqbG9jazsKKwlpbnQ2 NAkJcGFnZW5vOworCisJcGFnZW5vID0gVHJhbnNhY3Rpb25JZFRvUGFnZShYaWRGcm9tRnVs bFRyYW5zYWN0aW9uSWQoVHJhbnNhbVZhcmlhYmxlcy0+bmV4dFhpZCkpOworCWxvY2sgPSBT aW1wbGVMcnVHZXRCYW5rTG9jayhTdWJUcmFuc0N0bCwgcGFnZW5vKTsKIAogCUxXTG9ja0Fj cXVpcmUobG9jaywgTFdfRVhDTFVTSVZFKTsKIAogCS8qIENyZWF0ZSBhbmQgemVybyB0aGUg Zmlyc3QgcGFnZSBvZiB0aGUgc3VidHJhbnMgbG9nICovCi0Jc2xvdG5vID0gWmVyb1NVQlRS QU5TUGFnZSgwKTsKKwlzbG90bm8gPSBaZXJvU1VCVFJBTlNQYWdlKHBhZ2Vubyk7CiAKIAkv KiBNYWtlIHN1cmUgaXQncyB3cml0dGVuIG91dCAqLwogCVNpbXBsZUxydVdyaXRlUGFnZShT dWJUcmFuc0N0bCwgc2xvdG5vKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRl eCAwNjdjYjcwOTM4YS4uYzE0N2JmMTE0Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKQEAgLTEzNiw2ICsxMzYsMTAgQEAgaW50CQkJbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6 ZV9tYiA9IC0xOwogaW50CQkJd2FsX2RlY29kZV9idWZmZXJfc2l6ZSA9IDUxMiAqIDEwMjQ7 CiBib29sCQl0cmFja193YWxfaW9fdGltaW5nID0gZmFsc2U7CiAKK1RyYW5zYWN0aW9uSWQJ CXN0YXJ0X3hpZCA9IEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZDsKK011bHRpWGFjdElkCQkJ c3RhcnRfbXhpZCA9IEZpcnN0TXVsdGlYYWN0SWQ7CitNdWx0aVhhY3RPZmZzZXQJCXN0YXJ0 X214b2ZmID0gMDsKKwogI2lmZGVmIFdBTF9ERUJVRwogYm9vbAkJWExPR19ERUJVRyA9IGZh bHNlOwogI2VuZGlmCkBAIC01MDgwLDEzICs1MDg0LDE0IEBAIEJvb3RTdHJhcFhMT0codWlu dDMyIGRhdGFfY2hlY2tzdW1fdmVyc2lvbikKIAljaGVja1BvaW50LmZ1bGxQYWdlV3JpdGVz ID0gZnVsbFBhZ2VXcml0ZXM7CiAJY2hlY2tQb2ludC53YWxfbGV2ZWwgPSB3YWxfbGV2ZWw7 CiAJY2hlY2tQb2ludC5uZXh0WGlkID0KLQkJRnVsbFRyYW5zYWN0aW9uSWRGcm9tRXBvY2hB bmRYaWQoMCwgRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkKTsKKwkJRnVsbFRyYW5zYWN0aW9u SWRGcm9tRXBvY2hBbmRYaWQoMCwgTWF4KEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCwKKwkJ CQkJCQkJCQkJCXN0YXJ0X3hpZCkpOwogCWNoZWNrUG9pbnQubmV4dE9pZCA9IEZpcnN0R2Vu YmtpT2JqZWN0SWQ7Ci0JY2hlY2tQb2ludC5uZXh0TXVsdGkgPSBGaXJzdE11bHRpWGFjdElk OwotCWNoZWNrUG9pbnQubmV4dE11bHRpT2Zmc2V0ID0gMTsKLQljaGVja1BvaW50Lm9sZGVz dFhpZCA9IEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZDsKKwljaGVja1BvaW50Lm5leHRNdWx0 aSA9IE1heChGaXJzdE11bHRpWGFjdElkLCBzdGFydF9teGlkKTsKKwljaGVja1BvaW50Lm5l eHRNdWx0aU9mZnNldCA9IE1heCgxLCBzdGFydF9teG9mZik7CisJY2hlY2tQb2ludC5vbGRl c3RYaWQgPSBYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQoY2hlY2tQb2ludC5uZXh0WGlkKTsK IAljaGVja1BvaW50Lm9sZGVzdFhpZERCID0gVGVtcGxhdGUxRGJPaWQ7Ci0JY2hlY2tQb2lu dC5vbGRlc3RNdWx0aSA9IEZpcnN0TXVsdGlYYWN0SWQ7CisJY2hlY2tQb2ludC5vbGRlc3RN dWx0aSA9IGNoZWNrUG9pbnQubmV4dE11bHRpOwogCWNoZWNrUG9pbnQub2xkZXN0TXVsdGlE QiA9IFRlbXBsYXRlMURiT2lkOwogCWNoZWNrUG9pbnQub2xkZXN0Q29tbWl0VHNYaWQgPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKIAljaGVja1BvaW50Lm5ld2VzdENvbW1pdFRzWGlkID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ib290c3Ry YXAvYm9vdHN0cmFwLmMgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKaW5k ZXggZjNhN2EwMDdmNzcuLjQ4NTIxM2UxMjZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9i b290c3RyYXAvYm9vdHN0cmFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3Rz dHJhcC5jCkBAIC0yMTcsNyArMjE3LDcgQEAgQm9vdHN0cmFwTW9kZU1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSwgYm9vbCBjaGVja19vbmx5KQogCWFyZ3YrKzsKIAlhcmdjLS07CiAK LQl3aGlsZSAoKGZsYWcgPSBnZXRvcHQoYXJnYywgYXJndiwgIkI6YzpkOkQ6RmtyOlg6LToi KSkgIT0gLTEpCisJd2hpbGUgKChmbGFnID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJCOmM6ZDpE OkZrbTpvOnI6WDp4Oi06IikpICE9IC0xKQogCXsKIAkJc3dpdGNoIChmbGFnKQogCQl7CkBA IC0yODUsMTIgKzI4NSw2MCBAQCBCb290c3RyYXBNb2RlTWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdLCBib29sIGNoZWNrX29ubHkpCiAJCQljYXNlICdrJzoKIAkJCQlib290c3RyYXBf ZGF0YV9jaGVja3N1bV92ZXJzaW9uID0gUEdfREFUQV9DSEVDS1NVTV9WRVJTSU9OOwogCQkJ CWJyZWFrOworCQkJY2FzZSAnbSc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRwdHI7CisK KwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlkID0gc3RydG91NjQob3B0YXJnLCAm ZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9 ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0SWRJc1ZhbGlk KHN0YXJ0X214aWQpKQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQko ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFs aWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIpKSk7CisJCQkJCX0K KwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlICdvJzoKKwkJCQl7CisJCQkJCWNoYXIJICAg KmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X214b2ZmID0gc3RydG91 NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8 fCAqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlY YWN0T2Zmc2V0SXNWYWxpZChzdGFydF9teG9mZikpCisJCQkJCXsKKwkJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJ CQkJIGVycm1zZygiaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0 IG9mZnNldCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CiAJCQljYXNlICdyJzoK IAkJCQlzdHJsY3B5KE91dHB1dEZpbGVOYW1lLCBvcHRhcmcsIE1BWFBHUEFUSCk7CiAJCQkJ YnJlYWs7CiAJCQljYXNlICdYJzoKIAkJCQlTZXRDb25maWdPcHRpb24oIndhbF9zZWdtZW50 X3NpemUiLCBvcHRhcmcsIFBHQ19JTlRFUk5BTCwgUEdDX1NfRFlOQU1JQ19ERUZBVUxUKTsK IAkJCQlicmVhazsKKwkJCWNhc2UgJ3gnOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRy OworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfeGlkID0gc3RydG91NjQob3B0YXJn LCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRy ICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0VHJhbnNhY3Rpb25JZElz VmFsaWQoc3RhcnRfeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJp bnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQgdmFsdWUiKSkpOworCQkJCQl9 CisJCQkJfQorCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQl3cml0ZV9zdGRlcnIoIlRy eSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwKIAkJCQkJCQkgcHJv Z25hbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbWFpbi9tYWluLmMgYi9zcmMvYmFj a2VuZC9tYWluL21haW4uYwppbmRleCA4NjQ3MTQxMDdjYi4uN2JkOGQ5OWY4MTYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL21haW4vbWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL21haW4v bWFpbi5jCkBAIC00MjYsMTIgKzQyNiwxOCBAQCBoZWxwKGNvbnN0IGNoYXIgKnByb2duYW1l KQogCXByaW50ZihfKCIgIC1FICAgICAgICAgICAgICAgICBlY2hvIHN0YXRlbWVudCBiZWZv cmUgZXhlY3V0aW9uXG4iKSk7CiAJcHJpbnRmKF8oIiAgLWogICAgICAgICAgICAgICAgIGRv IG5vdCB1c2UgbmV3bGluZSBhcyBpbnRlcmFjdGl2ZSBxdWVyeSBkZWxpbWl0ZXJcbiIpKTsK IAlwcmludGYoXygiICAtciBGSUxFTkFNRSAgICAgICAgc2VuZCBzdGRvdXQgYW5kIHN0ZGVy ciB0byBnaXZlbiBmaWxlXG4iKSk7CisJcHJpbnRmKF8oIiAgLW0gU1RBUlRfTVhJRCAgICAg IHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IGlkXG4iKSk7CisJcHJp bnRmKF8oIiAgLW8gU1RBUlRfTVhPRkYgICAgIHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0 ZXIgbXVsdGl4YWN0IG9mZnNldFxuIikpOworCXByaW50ZihfKCIgIC14IFNUQVJUX1hJRCAg ICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZFxuIikpOwogCiAJcHJpbnRm KF8oIlxuT3B0aW9ucyBmb3IgYm9vdHN0cmFwcGluZyBtb2RlOlxuIikpOwogCXByaW50Zihf KCIgIC0tYm9vdCAgICAgICAgICAgICBzZWxlY3RzIGJvb3RzdHJhcHBpbmcgbW9kZSAobXVz dCBiZSBmaXJzdCBhcmd1bWVudClcbiIpKTsKIAlwcmludGYoXygiICAtLWNoZWNrICAgICAg ICAgICAgc2VsZWN0cyBjaGVjayBtb2RlIChtdXN0IGJlIGZpcnN0IGFyZ3VtZW50KVxuIikp OwogCXByaW50ZihfKCIgIERCTkFNRSAgICAgICAgICAgICBkYXRhYmFzZSBuYW1lIChtYW5k YXRvcnkgYXJndW1lbnQgaW4gYm9vdHN0cmFwcGluZyBtb2RlKVxuIikpOwogCXByaW50Zihf KCIgIC1yIEZJTEVOQU1FICAgICAgICBzZW5kIHN0ZG91dCBhbmQgc3RkZXJyIHRvIGdpdmVu IGZpbGVcbiIpKTsKKwlwcmludGYoXygiICAtbSBTVEFSVF9NWElEICAgICAgc2V0IGluaXRp YWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3QgaWRcbiIpKTsKKwlwcmludGYoXygiICAt byBTVEFSVF9NWE9GRiAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhh Y3Qgb2Zmc2V0XG4iKSk7CisJcHJpbnRmKF8oIiAgLXggU1RBUlRfWElEICAgICAgIHNldCBp bml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkXG4iKSk7CiAKIAlwcmludGYoXygiXG5QbGVh c2UgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgcnVu LXRpbWVcbiIKIAkJCSAiY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQgaG93IHRvIHNldCB0 aGVtIG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgaW5cbiIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w b3N0bWFzdGVyLmMKaW5kZXggNmY4NDlmZmJjYjUuLjAzMjYyZjI5MDZjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtNTcyLDcgKzU3Miw3IEBAIFBvc3RtYXN0 ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICogdGNvcC9wb3N0Z3Jlcy5jICh0 aGUgb3B0aW9uIHNldHMgc2hvdWxkIG5vdCBjb25mbGljdCkgYW5kIHdpdGggdGhlCiAJICog Y29tbW9uIGhlbHAoKSBmdW5jdGlvbiBpbiBtYWluL21haW4uYy4KIAkgKi8KLQl3aGlsZSAo KG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6aWprOmxOOk9Q cDpyOlM6c1R0Olc6LToiKSkgIT0gLTEpCisJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywg YXJndiwgIkI6YkM6YzpEOmQ6RWVGZjpoOmlqazpsbTpOOk9vOlBwOnI6UzpzVHQ6Vzp4Oi06 IikpICE9IC0xKQogCXsKIAkJc3dpdGNoIChvcHQpCiAJCXsKQEAgLTY4MiwxMCArNjgyLDE4 IEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJU2V0Q29u ZmlnT3B0aW9uKCJtYXhfY29ubmVjdGlvbnMiLCBvcHRhcmcsIFBHQ19QT1NUTUFTVEVSLCBQ R0NfU19BUkdWKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSAnbSc6CisJCQkJLyogb25seSB1 c2VkIGJ5IHNpbmdsZS11c2VyIGJhY2tlbmQgKi8KKwkJCQlicmVhazsKKwogCQkJY2FzZSAn Tyc6CiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJhbGxvd19zeXN0ZW1fdGFibGVfbW9kcyIsICJ0 cnVlIiwgUEdDX1BPU1RNQVNURVIsIFBHQ19TX0FSR1YpOwogCQkJCWJyZWFrOwogCisJCQlj YXNlICdvJzoKKwkJCQkvKiBvbmx5IHVzZWQgYnkgc2luZ2xlLXVzZXIgYmFja2VuZCAqLwor CQkJCWJyZWFrOworCiAJCQljYXNlICdQJzoKIAkJCQlTZXRDb25maWdPcHRpb24oImlnbm9y ZV9zeXN0ZW1faW5kZXhlcyIsICJ0cnVlIiwgUEdDX1BPU1RNQVNURVIsIFBHQ19TX0FSR1Yp OwogCQkJCWJyZWFrOwpAQCAtNzM2LDYgKzc0NCwxMCBAQCBQb3N0bWFzdGVyTWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCQkJCVNldENvbmZpZ09wdGlvbigicG9zdF9hdXRoX2Rl bGF5Iiwgb3B0YXJnLCBQR0NfUE9TVE1BU1RFUiwgUEdDX1NfQVJHVik7CiAJCQkJYnJlYWs7 CiAKKwkJCWNhc2UgJ3gnOgorCQkJCS8qIG9ubHkgdXNlZCBieSBzaW5nbGUtdXNlciBiYWNr ZW5kICovCisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CiAJCQkJd3JpdGVfc3RkZXJyKCJU cnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsCiAJCQkJCQkJIHBy b2duYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCA4NTkwMjc4ODE4MS4uNTg1OWUxOGIy ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTM3ODgsNyArMzc4OCw3IEBAIHByb2Nlc3Nf cG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgR3VjQ29udGV4dCBj dHgsCiAJICogcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgKHRoZSBvcHRpb24gc2V0cyBzaG91 bGQgbm90IGNvbmZsaWN0KSBhbmQgd2l0aAogCSAqIHRoZSBjb21tb24gaGVscCgpIGZ1bmN0 aW9uIGluIG1haW4vbWFpbi5jLgogCSAqLwotCXdoaWxlICgoZmxhZyA9IGdldG9wdChhcmdj LCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6aWprOmxOOm5PUHA6cjpTOnNUdDp2Olc6LToi KSkgIT0gLTEpCisJd2hpbGUgKChmbGFnID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJCOmJDOmM6 RDpkOkVlRmY6aDppams6bG06TjpuT286UHA6cjpTOnNUdDp2Olc6eDotOiIpKSAhPSAtMSkK IAl7CiAJCXN3aXRjaCAoZmxhZykKIAkJewpAQCAtMzg5Myw2ICszODkzLDIzIEBAIHByb2Nl c3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgR3VjQ29udGV4 dCBjdHgsCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJzc2wiLCAidHJ1ZSIsIGN0eCwgZ3Vjc291 cmNlKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSAnbSc6CisJCQkJeworCQkJCQljaGFyCSAg ICplbmRwdHI7CisKKwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlkID0gc3RydG91 NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8 fCAqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlY YWN0SWRJc1ZhbGlkKHN0YXJ0X214aWQpKQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBl cnJtc2coImludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIp KSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgJ04nOgogCQkJCVNl dENvbmZpZ09wdGlvbigibWF4X2Nvbm5lY3Rpb25zIiwgb3B0YXJnLCBjdHgsIGd1Y3NvdXJj ZSk7CiAJCQkJYnJlYWs7CkBAIC0zOTA1LDYgKzM5MjIsMjMgQEAgcHJvY2Vzc19wb3N0Z3Jl c19zd2l0Y2hlcyhpbnQgYXJnYywgY2hhciAqYXJndltdLCBHdWNDb250ZXh0IGN0eCwKIAkJ CQlTZXRDb25maWdPcHRpb24oImFsbG93X3N5c3RlbV90YWJsZV9tb2RzIiwgInRydWUiLCBj dHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgJ28nOgorCQkJCXsKKwkJ CQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfbXhv ZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZlbmRwdHIsIDApOworCisJCQkJCWlmIChlbmRwdHIg PT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwIHx8CisJCQkJCQkh U3RhcnRNdWx0aVhhY3RPZmZzZXRJc1ZhbGlkKHN0YXJ0X214b2ZmKSkKKwkJCQkJeworCQkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3Rl ciBtdWx0aXhhY3Qgb2Zmc2V0IikpKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKKwog CQkJY2FzZSAnUCc6CiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJpZ25vcmVfc3lzdGVtX2luZGV4 ZXMiLCAidHJ1ZSIsIGN0eCwgZ3Vjc291cmNlKTsKIAkJCQlicmVhazsKQEAgLTM5NTksNiAr Mzk5MywyMyBAQCBwcm9jZXNzX3Bvc3RncmVzX3N3aXRjaGVzKGludCBhcmdjLCBjaGFyICph cmd2W10sIEd1Y0NvbnRleHQgY3R4LAogCQkJCVNldENvbmZpZ09wdGlvbigicG9zdF9hdXRo X2RlbGF5Iiwgb3B0YXJnLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNh c2UgJ3gnOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0g MDsKKwkJCQkJc3RhcnRfeGlkID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKwor CQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8g IT0gMCB8fAorCQkJCQkJIVN0YXJ0VHJhbnNhY3Rpb25JZElzVmFsaWQoc3RhcnRfeGlkKSkK KwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGluaXRpYWwgZGF0 YWJhc2UgY2x1c3RlciB4aWQiKSkpOworCQkJCQl9CisJCQkJfQorCQkJCWJyZWFrOworCiAJ CQlkZWZhdWx0OgogCQkJCWVycnMrKzsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i aW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKaW5kZXggOWE5 MTgzMDc4M2UuLjQxMDg2OGRkZGYxIDEwMDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi9pbml0 ZGIuYworKysgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwpAQCAtMTY4LDYgKzE2OCw5IEBA IHN0YXRpYyBib29sIGRhdGFfY2hlY2tzdW1zID0gdHJ1ZTsKIHN0YXRpYyBjaGFyICp4bG9n X2RpciA9IE5VTEw7CiBzdGF0aWMgaW50CXdhbF9zZWdtZW50X3NpemVfbWIgPSAoREVGQVVM VF9YTE9HX1NFR19TSVpFKSAvICgxMDI0ICogMTAyNCk7CiBzdGF0aWMgRGF0YURpclN5bmNN ZXRob2Qgc3luY19tZXRob2QgPSBEQVRBX0RJUl9TWU5DX01FVEhPRF9GU1lOQzsKK3N0YXRp YyBUcmFuc2FjdGlvbklkIHN0YXJ0X3hpZCA9IDA7CitzdGF0aWMgTXVsdGlYYWN0SWQgc3Rh cnRfbXhpZCA9IDA7CitzdGF0aWMgTXVsdGlYYWN0T2Zmc2V0IHN0YXJ0X214b2ZmID0gMDsK IAogCiAvKiBpbnRlcm5hbCB2YXJzICovCkBAIC0xNTY4LDYgKzE1NzEsMTEgQEAgYm9vdHN0 cmFwX3RlbXBsYXRlMSh2b2lkKQogCWJraV9saW5lcyA9IHJlcGxhY2VfdG9rZW4oYmtpX2xp bmVzLCAiUE9TVEdSRVMiLAogCQkJCQkJCSAgZXNjYXBlX3F1b3Rlc19ia2kodXNlcm5hbWUp KTsKIAorCS8qIHJlbGZyb3plbnhpZCBtdXN0IG5vdCBiZSBsZXNzIHRoYW4gRmlyc3ROb3Jt YWxUcmFuc2FjdGlvbklkICovCisJc3ByaW50ZihidWYsICIlbGx1IiwgKHVuc2lnbmVkIGxv bmcgbG9uZykgTWF4KHN0YXJ0X3hpZCwgMykpOworCWJraV9saW5lcyA9IHJlcGxhY2VfdG9r ZW4oYmtpX2xpbmVzLCAiUkVDRU5UWE1JTiIsCisJCQkJCQkJICBidWYpOworCiAJYmtpX2xp bmVzID0gcmVwbGFjZV90b2tlbihia2lfbGluZXMsICJFTkNPRElORyIsCiAJCQkJCQkJICBl bmNvZGluZ2lkX3RvX3N0cmluZyhlbmNvZGluZ2lkKSk7CiAKQEAgLTE1OTMsNiArMTYwMSw5 IEBAIGJvb3RzdHJhcF90ZW1wbGF0ZTEodm9pZCkKIAogCXByaW50ZlBRRXhwQnVmZmVyKCZj bWQsICJcIiVzXCIgLS1ib290ICVzICVzIiwgYmFja2VuZF9leGVjLCBib290X29wdGlvbnMs IGV4dHJhX29wdGlvbnMpOwogCWFwcGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLVggJWQiLCB3 YWxfc2VnbWVudF9zaXplX21iICogKDEwMjQgKiAxMDI0KSk7CisJYXBwZW5kUFFFeHBCdWZm ZXIoJmNtZCwgIiAtbSAlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnRfbXhpZCk7 CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtbyAlbGx1IiwgKHVuc2lnbmVkIGxvbmcg bG9uZykgc3RhcnRfbXhvZmYpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLXggJWxs dSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X3hpZCk7CiAJaWYgKGRhdGFfY2hlY2tz dW1zKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC1rIik7CiAJaWYgKGRlYnVnKQpA QCAtMjUzMiwxMiArMjU0MywyMCBAQCB1c2FnZShjb25zdCBjaGFyICpwcm9nbmFtZSkKIAlw cmludGYoXygiICAtZCwgLS1kZWJ1ZyAgICAgICAgICAgICAgIGdlbmVyYXRlIGxvdHMgb2Yg ZGVidWdnaW5nIG91dHB1dFxuIikpOwogCXByaW50ZihfKCIgICAgICAtLWRpc2NhcmQtY2Fj aGVzICAgICAgc2V0IGRlYnVnX2Rpc2NhcmRfY2FjaGVzPTFcbiIpKTsKIAlwcmludGYoXygi ICAtTCBESVJFQ1RPUlkgICAgICAgICAgICAgIHdoZXJlIHRvIGZpbmQgdGhlIGlucHV0IGZp bGVzXG4iKSk7CisJcHJpbnRmKF8oIiAgLW0sIC0tbXVsdGl4YWN0LWlkPVNUQVJUX01YSURc biIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCBpbml0aWFsIGRhdGFi YXNlIGNsdXN0ZXIgbXVsdGl4YWN0IGlkXG4iCisJCQkgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtYXggdmFsdWUgaXMgMl42Mi0xXG4iKSk7CiAJcHJpbnRmKF8oIiAgLW4sIC0t bm8tY2xlYW4gICAgICAgICAgICBkbyBub3QgY2xlYW4gdXAgYWZ0ZXIgZXJyb3JzXG4iKSk7 CiAJcHJpbnRmKF8oIiAgLU4sIC0tbm8tc3luYyAgICAgICAgICAgICBkbyBub3Qgd2FpdCBm b3IgY2hhbmdlcyB0byBiZSB3cml0dGVuIHNhZmVseSB0byBkaXNrXG4iKSk7CiAJcHJpbnRm KF8oIiAgICAgIC0tbm8taW5zdHJ1Y3Rpb25zICAgICBkbyBub3QgcHJpbnQgaW5zdHJ1Y3Rp b25zIGZvciBuZXh0IHN0ZXBzXG4iKSk7CisJcHJpbnRmKF8oIiAgLW8sIC0tbXVsdGl4YWN0 LW9mZnNldD1TVEFSVF9NWE9GRlxuIgorCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3Qgb2Zmc2V0XG4iCisJ CQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXggdmFsdWUgaXMgMl42Mi0xXG4i KSk7CiAJcHJpbnRmKF8oIiAgLXMsIC0tc2hvdyAgICAgICAgICAgICAgICBzaG93IGludGVy bmFsIHNldHRpbmdzLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygiICAgICAgLS1zeW5j LW1ldGhvZD1NRVRIT0QgIHNldCBtZXRob2QgZm9yIHN5bmNpbmcgZmlsZXMgdG8gZGlza1xu IikpOwogCXByaW50ZihfKCIgIC1TLCAtLXN5bmMtb25seSAgICAgICAgICAgb25seSBzeW5j IGRhdGFiYXNlIGZpbGVzIHRvIGRpc2ssIHRoZW4gZXhpdFxuIikpOworCXByaW50ZihfKCIg IC14LCAtLXhpZD1TVEFSVF9YSUQgICAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3Rl ciB4aWRcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCB2YWx1ZSBp cyAyXjYyLTFcbiIpKTsKIAlwcmludGYoXygiXG5PdGhlciBvcHRpb25zOlxuIikpOwogCXBy aW50ZihfKCIgIC1WLCAtLXZlcnNpb24gICAgICAgICAgICAgb3V0cHV0IHZlcnNpb24gaW5m b3JtYXRpb24sIHRoZW4gZXhpdFxuIikpOwogCXByaW50ZihfKCIgIC0/LCAtLWhlbHAgICAg ICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAsIHRoZW4gZXhpdFxuIikpOwpAQCAtMzA3OSw2 ICszMDk4LDE4IEBAIGluaXRpYWxpemVfZGF0YV9kaXJlY3Rvcnkodm9pZCkKIAkvKiBOb3cg Y3JlYXRlIGFsbCB0aGUgdGV4dCBjb25maWcgZmlsZXMgKi8KIAlzZXR1cF9jb25maWcoKTsK IAorCWlmIChzdGFydF9teGlkICE9IDApCisJCXByaW50ZihfKCJzZWxlY3RpbmcgaW5pdGlh bCBtdWx0aXhhY3QgaWQgLi4uICVsbHVcbiIpLAorCQkJCSAodW5zaWduZWQgbG9uZyBsb25n KSBzdGFydF9teGlkKTsKKworCWlmIChzdGFydF9teG9mZiAhPSAwKQorCQlwcmludGYoXygi c2VsZWN0aW5nIGluaXRpYWwgbXVsdGl4YWN0IG9mZnNldCAuLi4gJWxsdVxuIiksCisJCQkJ ICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X214b2ZmKTsKKworCWlmIChzdGFydF94aWQg IT0gMCkKKwkJcHJpbnRmKF8oInNlbGVjdGluZyBpbml0aWFsIHhpZCAuLi4gJWxsdVxuIiks CisJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X3hpZCk7CisKIAkvKiBCb290c3Ry YXAgdGVtcGxhdGUxICovCiAJYm9vdHN0cmFwX3RlbXBsYXRlMSgpOwogCkBAIC0zMDk1LDgg KzMxMjYsMTIgQEAgaW5pdGlhbGl6ZV9kYXRhX2RpcmVjdG9yeSh2b2lkKQogCWZmbHVzaChz dGRvdXQpOwogCiAJaW5pdFBRRXhwQnVmZmVyKCZjbWQpOwotCXByaW50ZlBRRXhwQnVmZmVy KCZjbWQsICJcIiVzXCIgJXMgJXMgdGVtcGxhdGUxID4lcyIsCi0JCQkJCSAgYmFja2VuZF9l eGVjLCBiYWNrZW5kX29wdGlvbnMsIGV4dHJhX29wdGlvbnMsIERFVk5VTEwpOworCXByaW50 ZlBRRXhwQnVmZmVyKCZjbWQsICJcIiVzXCIgJXMgJXMiLAorCQkJCQkgIGJhY2tlbmRfZXhl YywgYmFja2VuZF9vcHRpb25zLCBleHRyYV9vcHRpb25zKTsKKwlhcHBlbmRQUUV4cEJ1ZmZl cigmY21kLCAiIC1tICVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKSBzdGFydF9teGlkKTsK KwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC1vICVsbHUiLCAodW5zaWduZWQgbG9uZyBs b25nKSBzdGFydF9teG9mZik7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAteCAlbGx1 IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnRfeGlkKTsKKwlhcHBlbmRQUUV4cEJ1ZmZl cigmY21kLCAiIHRlbXBsYXRlMSA+JXMiLCBERVZOVUxMKTsKIAogCVBHX0NNRF9PUEVOKGNt ZC5kYXRhKTsKIApAQCAtMzE4Myw2ICszMjE4LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCQl7ImljdS1ydWxlcyIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxOH0s CiAJCXsic3luYy1tZXRob2QiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTl9LAogCQl7 Im5vLWRhdGEtY2hlY2tzdW1zIiwgbm9fYXJndW1lbnQsIE5VTEwsIDIwfSwKKwkJeyJ4aWQi LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3gnfSwKKwkJeyJtdWx0aXhhY3QtaWQiLCBy ZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ20nfSwKKwkJeyJtdWx0aXhhY3Qtb2Zmc2V0Iiwg cmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdvJ30sCiAJCXtOVUxMLCAwLCBOVUxMLCAwfQog CX07CiAKQEAgLTMyMjQsNyArMzI2Miw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAogCS8qIHByb2Nlc3MgY29tbWFuZC1saW5lIG9wdGlvbnMgKi8KIAotCXdoaWxlICgo YyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJBOmM6ZEQ6RTpna0w6bk5zU1Q6VTpXWDoi LAorCXdoaWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJBOmM6ZEQ6RTpna0w6 bTpuTm86c1NUOlU6V3g6WDoiLAogCQkJCQkJCWxvbmdfb3B0aW9ucywgJm9wdGlvbl9pbmRl eCkpICE9IC0xKQogCXsKIAkJc3dpdGNoIChjKQpAQCAtMzI4Miw2ICszMzIwLDMwIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlkZWJ1ZyA9IHRydWU7CiAJCQkJcHJp bnRmKF8oIlJ1bm5pbmcgaW4gZGVidWcgbW9kZS5cbiIpKTsKIAkJCQlicmVhazsKKwkJCWNh c2UgJ20nOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0g MDsKKwkJCQkJc3RhcnRfbXhpZCA9IHN0cnRvdTY0KG9wdGFyZywgJmVuZHB0ciwgMCk7CisK KwkJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5v ICE9IDAgfHwKKwkJCQkJCSFTdGFydE11bHRpWGFjdElkSXNWYWxpZChzdGFydF9teGlkKSkK KwkJCQkJeworCQkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2Ug Y2x1c3RlciBtdWx0aXhhY3QgaWQiKTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJ ZWxzZSBpZiAoc3RhcnRfbXhpZCA8IDEpIC8qIEZpcnN0TXVsdGlYYWN0SWQgKi8KKwkJCQkJ eworCQkJCQkJLyoKKwkJCQkJCSAqIFdlIGF2b2lkIG14aWQgdG8gYmUgc2lsZW50bHkgc2V0 IHRvCisJCQkJCQkgKiBGaXJzdE11bHRpWGFjdElkLCB0aG91Z2ggaXQgZG9lcyBub3QgaGFy bS4KKwkJCQkJCSAqLworCQkJCQkJcGdfbG9nX2Vycm9yKCJtdWx0aXhhY3QgaWQgc2hvdWxk IGJlIGdyZWF0ZXIgdGhhbiAwIik7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJfQor CQkJCWJyZWFrOwogCQkJY2FzZSAnbic6CiAJCQkJbm9jbGVhbiA9IHRydWU7CiAJCQkJcHJp bnRmKF8oIlJ1bm5pbmcgaW4gbm8tY2xlYW4gbW9kZS4gIE1pc3Rha2VzIHdpbGwgbm90IGJl IGNsZWFuZWQgdXAuXG4iKSk7CkBAIC0zMjg5LDYgKzMzNTEsMjEgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCQkJY2FzZSAnTic6CiAJCQkJZG9fc3luYyA9IGZhbHNlOwog CQkJCWJyZWFrOworCQkJY2FzZSAnbyc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRwdHI7 CisKKwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teG9mZiA9IHN0cnRvdTY0KG9wdGFy ZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0 ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydE11bHRpWGFjdE9mZnNl dElzVmFsaWQoc3RhcnRfbXhvZmYpKQorCQkJCQl7CisJCQkJCQlwZ19sb2dfZXJyb3IoImlu dmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBvZmZzZXQiKTsKKwkJ CQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CiAJCQljYXNlICdTJzoK IAkJCQlzeW5jX29ubHkgPSB0cnVlOwogCQkJCWJyZWFrOwpAQCAtMzM3Nyw2ICszNDU0LDMw IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCWNhc2UgMjA6CiAJCQkJZGF0 YV9jaGVja3N1bXMgPSBmYWxzZTsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ3gnOgorCQkJCXsK KwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRf eGlkID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRy ID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJ IVN0YXJ0VHJhbnNhY3Rpb25JZElzVmFsaWQoc3RhcnRfeGlkKSkKKwkJCQkJeworCQkJCQkJ cGdfbG9nX2Vycm9yKCJpbnZhbGlkIHZhbHVlIGZvciBpbml0aWFsIGRhdGFiYXNlIGNsdXN0 ZXIgeGlkIik7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJCWVsc2UgaWYgKHN0YXJ0 X3hpZCA8IDMpIC8qIEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCAqLworCQkJCQl7CisJCQkJ CQkvKgorCQkJCQkJICogV2UgYXZvaWQgeGlkIHRvIGJlIHNpbGVudGx5IHNldCB0bworCQkJ CQkJICogRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkLCB0aG91Z2ggaXQgZG9lcyBub3QgaGFy bS4KKwkJCQkJCSAqLworCQkJCQkJcGdfbG9nX2Vycm9yKCJ4aWQgc2hvdWxkIGJlIGdyZWF0 ZXIgdGhhbiAyIik7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJfQorCQkJCWJyZWFr OwogCQkJZGVmYXVsdDoKIAkJCQkvKiBnZXRvcHRfbG9uZyBhbHJlYWR5IGVtaXR0ZWQgYSBj b21wbGFpbnQgKi8KIAkJCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxwXCIg Zm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9pbml0ZGIvdC8wMDFfaW5pdGRiLnBsIGIvc3JjL2Jpbi9pbml0ZGIvdC8wMDFfaW5pdGRi LnBsCmluZGV4IDc1MjBkM2QwZGRhLi45MWE4NWQ5ZjRkMSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9pbml0ZGIvdC8wMDFfaW5pdGRiLnBsCisrKyBiL3NyYy9iaW4vaW5pdGRiL3QvMDAxX2lu aXRkYi5wbApAQCAtMjgyLDQgKzI4Miw2NCBAQCBjb21tYW5kX2ZhaWxzKAogCVsgJ3BnX2No ZWNrc3VtcycsICctRCcsICRkYXRhZGlyX25vY2hlY2tzdW1zIF0sCiAJInBnX2NoZWNrc3Vt cyBmYWlscyB3aXRoIGRhdGEgY2hlY2tzdW0gZGlzYWJsZWQiKTsKIAorIyBTZXQgbm9uLXN0 YW5kYXJkIGluaXRpYWwgbXhpZC9teG9mZi94aWQuCitjb21tYW5kX2ZhaWxzX2xpa2UoCisJ WyAnaW5pdGRiJywgJy1tJywgJ3NldmVuJywgJGRhdGFkaXIgXSwKKwlxci9pbml0ZGI6IGVy cm9yOiBpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3QgaWQvLAor CSdmYWlscyBmb3IgaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0 IGlkJyk7Citjb21tYW5kX2ZhaWxzX2xpa2UoCisJWyAnaW5pdGRiJywgJy1vJywgJ3NldmVu JywgJGRhdGFkaXIgXSwKKwlxci9pbml0ZGI6IGVycm9yOiBpbnZhbGlkIGluaXRpYWwgZGF0 YWJhc2UgY2x1c3RlciBtdWx0aXhhY3Qgb2Zmc2V0LywKKwknZmFpbHMgZm9yIGludmFsaWQg aW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBvZmZzZXQnKTsKK2NvbW1hbmRf ZmFpbHNfbGlrZSgKKwlbICdpbml0ZGInLCAnLXgnLCAnc2V2ZW4nLCAkZGF0YWRpciBdLAor CXFyL2luaXRkYjogZXJyb3I6IGludmFsaWQgdmFsdWUgZm9yIGluaXRpYWwgZGF0YWJhc2Ug Y2x1c3RlciB4aWQvLAorCSdmYWlscyBmb3IgaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNs dXN0ZXIgeGlkJyk7CisKK2NvbW1hbmRfY2hlY2tzX2FsbCgKKwlbICdpbml0ZGInLCAnLW0n LCAnNjU1MzUnLCAiJHRlbXBkaXIvZGF0YS1tNjU1MzUiIF0sCisJMCwKKwlbcXIvc2VsZWN0 aW5nIGluaXRpYWwgbXVsdGl4YWN0IGlkIC4uLiA2NTUzNS9dLAorCVtdLAorCSdzZWxlY3Rp bmcgaW5pdGlhbCBtdWx0aXhhY3QgaWQnKTsKK2NvbW1hbmRfY2hlY2tzX2FsbCgKKwlbICdp bml0ZGInLCAnLW8nLCAnNjU1MzUnLCAiJHRlbXBkaXIvZGF0YS1vNjU1MzUiIF0sCisJMCwK KwlbcXIvc2VsZWN0aW5nIGluaXRpYWwgbXVsdGl4YWN0IG9mZnNldCAuLi4gNjU1MzUvXSwK KwlbXSwKKwknc2VsZWN0aW5nIGluaXRpYWwgbXVsdGl4YWN0IG9mZnNldCcpOworY29tbWFu ZF9jaGVja3NfYWxsKAorCVsgJ2luaXRkYicsICcteCcsICc2NTUzNScsICIkdGVtcGRpci9k YXRhLXg2NTUzNSIgXSwKKwkwLAorCVtxci9zZWxlY3RpbmcgaW5pdGlhbCB4aWQgLi4uIDY1 NTM1L10sCisJW10sCisJJ3NlbGVjdGluZyBpbml0aWFsIHhpZCcpOworCisjIFNldHVwIG5l dyBjbHVzdGVyIHdpdGggZ2l2ZW4gbXhpZC9teG9mZi94aWQuCitteSAkbm9kZTsKK215ICRy ZXN1bHQ7CisKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCd0ZXN0 LW14aWQnKTsKKyRub2RlLT5pbml0KGV4dHJhID0+IFsnLW0nLCAnMTY3NzcyMTUnXSk7ICMg MHhGRkZGRkYKKyRub2RlLT5zdGFydDsKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgbmV4dF9tdWx0aXhhY3RfaWQgRlJPTSBwZ19jb250cm9sX2No ZWNrcG9pbnQoKTsiKTsKK29rKCRyZXN1bHQgPj0gMTY3NzcyMTUsICdzZXR1cCBjbHVzdGVy IHdpdGggZ2l2ZW4gbXhpZCcpOworJG5vZGUtPnN0b3A7CisKKyRub2RlID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCd0ZXN0LW14b2ZmJyk7Ciskbm9kZS0+aW5pdChleHRy YSA9PiBbJy1vJywgJzE2Nzc3MjE1J10pOyAjIDB4RkZGRkZGCiskbm9kZS0+c3RhcnQ7Cisk cmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIG5leHRfbXVs dGlfb2Zmc2V0IEZST00gcGdfY29udHJvbF9jaGVja3BvaW50KCk7Iik7CitvaygkcmVzdWx0 ID49IDE2Nzc3MjE1LCAnc2V0dXAgY2x1c3RlciB3aXRoIGdpdmVuIG14b2ZmJyk7Ciskbm9k ZS0+c3RvcDsKKworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3Rl c3QteGlkJyk7Ciskbm9kZS0+aW5pdChleHRyYSA9PiBbJy14JywgJzE2Nzc3MjE1J10pOyAj IDB4RkZGRkZGCiskbm9kZS0+c3RhcnQ7CiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIHR4aWRfY3VycmVudCgpOyIpOworb2soJHJlc3VsdCA+PSAx Njc3NzIxNSwgJ3NldHVwIGNsdXN0ZXIgd2l0aCBnaXZlbiB4aWQgLSBjaGVjayAxJyk7Cisk cmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIG9sZGVzdF94 aWQgRlJPTSBwZ19jb250cm9sX2NoZWNrcG9pbnQoKTsiKTsKK29rKCRyZXN1bHQgPj0gMTY3 NzcyMTUsICdzZXR1cCBjbHVzdGVyIHdpdGggZ2l2ZW4geGlkIC0gY2hlY2sgMicpOworJG5v ZGUtPnN0b3A7CisKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKaW5kZXggMzRhZDQ2 YzA2N2IuLjRjZTc5YjEyZTM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxv Zy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTk0LDYgKzk0LDkgQEAg dHlwZWRlZiBlbnVtIFJlY292ZXJ5U3RhdGUKIH0gUmVjb3ZlcnlTdGF0ZTsKIAogZXh0ZXJu IFBHRExMSU1QT1JUIGludCB3YWxfbGV2ZWw7CitleHRlcm4gUEdETExJTVBPUlQgVHJhbnNh Y3Rpb25JZCBzdGFydF94aWQ7CitleHRlcm4gUEdETExJTVBPUlQgTXVsdGlYYWN0SWQgc3Rh cnRfbXhpZDsKK2V4dGVybiBQR0RMTElNUE9SVCBNdWx0aVhhY3RPZmZzZXQgc3RhcnRfbXhv ZmY7CiAKIC8qIElzIFdBTCBhcmNoaXZpbmcgZW5hYmxlZCAoYWx3YXlzIG9yIG9ubHkgd2hp bGUgc2VydmVyIGlzIHJ1bm5pbmcgbm9ybWFsbHkpPyAqLwogI2RlZmluZSBYTG9nQXJjaGl2 aW5nQWN0aXZlKCkgXApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYy5oIGIvc3JjL2luY2x1 ZGUvYy5oCmluZGV4IGI1YjZiOTI2MWIwLi44YzE1NjYzZTNmZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2MuaApAQCAtNjE5LDYgKzYxOSwxMCBA QCB0eXBlZGVmIHVpbnQ2NCBNdWx0aVhhY3RPZmZzZXQ7CiAKIHR5cGVkZWYgdWludDMyIENv bW1hbmRJZDsKIAorI2RlZmluZSBTdGFydFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkJCQko KHhpZCkgPD0gMHhGRkZGRkZGRikKKyNkZWZpbmUgU3RhcnRNdWx0aVhhY3RJZElzVmFsaWQo bXhpZCkJCQkoKG14aWQpIDw9IDB4RkZGRkZGRkYpCisjZGVmaW5lIFN0YXJ0TXVsdGlYYWN0 T2Zmc2V0SXNWYWxpZChvZmZzZXQpCQkoKG9mZnNldCkgPD0gMHhGRkZGRkZGRikKKwogI2Rl ZmluZSBGaXJzdENvbW1hbmRJZAkoKENvbW1hbmRJZCkgMCkKICNkZWZpbmUgSW52YWxpZENv bW1hbmRJZAkofihDb21tYW5kSWQpMCkKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jbGFzcy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCmluZGV4 IDBmYzJjMDkzYjBkLi4wYTc1MThkZjBkYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jbGFzcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaApA QCAtMTIzLDcgKzEyMyw3IEBAIENBVEFMT0cocGdfY2xhc3MsMTI1OSxSZWxhdGlvblJlbGF0 aW9uSWQpIEJLSV9CT09UU1RSQVAgQktJX1JPV1RZUEVfT0lEKDgzLFJlbGF0CiAJT2lkCQkJ cmVscmV3cml0ZSBCS0lfREVGQVVMVCgwKSBCS0lfTE9PS1VQX09QVChwZ19jbGFzcyk7CiAK IAkvKiBhbGwgWGlkcyA8IHRoaXMgYXJlIGZyb3plbiBpbiB0aGlzIHJlbCAqLwotCVRyYW5z YWN0aW9uSWQgcmVsZnJvemVueGlkIEJLSV9ERUZBVUxUKDMpOwkvKiBGaXJzdE5vcm1hbFRy YW5zYWN0aW9uSWQgKi8KKwlUcmFuc2FjdGlvbklkIHJlbGZyb3plbnhpZCBCS0lfREVGQVVM VChSRUNFTlRYTUlOKTsJLyogRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkICovCiAKIAkvKiBh bGwgbXVsdGl4YWN0cyBpbiB0aGlzIHJlbCBhcmUgPj0gdGhpczsgaXQgaXMgcmVhbGx5IGEg TXVsdGlYYWN0SWQgKi8KIAlUcmFuc2FjdGlvbklkIHJlbG1pbm14aWQgQktJX0RFRkFVTFQo MSk7CS8qIEZpcnN0TXVsdGlYYWN0SWQgKi8KLS0gCjIuMzkuNQoK --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0012-TEST-add-src-bin-pg_upgrade-t-005_offset.pl.patch" Content-Disposition: attachment; filename*0="v10-0012-TEST-add-src-bin-pg_upgrade-t-005_offset.pl.patch" Content-Transfer-Encoding: base64 RnJvbSAxMmVmOGQ2ZGEwM2EzMDlkZDhhZGYwNmFhZDY0MzllOTAxMGJhMzBmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTkgTm92IDIwMjQgMTc6MDg6MTAgKzAzMDAKU3ViamVjdDogW1BBVENI IHYxMCAxMi8xNF0gVEVTVDogYWRkIHNyYy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQu cGwKCi0tLQogc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA1X29mZnNldC5wbCB8IDU2MiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDU2MiBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA1X29m ZnNldC5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQu cGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDVfb2Zmc2V0LnBsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xY2ZkOGIzNjRhOQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwKQEAgLTAsMCArMSw1NjIg QEAKKyMgQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwor Cit1c2UgRmlsZTo6RmluZCBxdyhmaW5kKTsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworIyBUaGlzIHBhaXIgb2YgY2FsbHMgd2lsbCBjcmVhdGUgc2lnbmlmaWNhbnRseSBtb3Jl IG1lbWJlciBzZWdtZW50cyB0aGFuIG9mZnNldAorIyBzZWdtZW50cy4KK3N1YiBwcmVwCit7 CisJbXkgJG5vZGUgPSBzaGlmdDsKKwlteSAkdGJsID0gc2hpZnQ7CisKKwkkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDUkVBVEUgVEFCTEUgJHt0Ymx9IChJIElOVCBQUklN QVJZIEtFWSwgTl9VUERBVEVEIElOVCkgIiAuCisJCSIgICAgICAgV0lUSCAoQVVUT1ZBQ1VV TV9FTkFCTEVEPUZBTFNFKTsiIC4KKwkJIklOU0VSVCBJTlRPICR7dGJsfSBTRUxFQ1QgRywg MCBGUk9NIEdFTkVSQVRFX1NFUklFUygxLCA1MCkgRzsiKTsKK30KKworc3ViIGZpbGwKK3sK KwlteSAkbm9kZSA9IHNoaWZ0OworCW15ICR0YmwgPSBzaGlmdDsKKworCW15ICRuY2xpZW50 cyA9IDUwOworCW15ICR1cGRhdGVfZXZlcnkgPSA5MDsKKwlteSBAY29ubmVjdGlvbnMgPSAo KTsKKworCWZvciAoMC4uJG5jbGllbnRzKQorCXsKKwkJbXkgJGNvbm4gPSAkbm9kZS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworCQkkY29ubi0+cXVlcnlfc2FmZSgiQkVHSU4i KTsKKworCQlwdXNoKEBjb25uZWN0aW9ucywgJGNvbm4pOworCX0KKworCWZvciAobXkgJGkg PSAwOyAkaSA8IDIwMDAwOyAkaSsrKQorCXsKKwkJbXkgJGNvbm4gPSAkY29ubmVjdGlvbnNb JGkgJSAkbmNsaWVudHNdOworCisJCSRjb25uLT5xdWVyeV9zYWZlKCJDT01NSVQ7Iik7CisJ CSRjb25uLT5xdWVyeV9zYWZlKCJCRUdJTiIpOworCisJCWlmICgkaSAlICR1cGRhdGVfZXZl cnkgPT0gMCkKKwkJeworCQkJJGNvbm4tPnF1ZXJ5X3NhZmUoCisJCQkJIlVQREFURSAke3Ri bH0gU0VUICIgLgorCQkJCSJOX1VQREFURUQgPSBOX1VQREFURUQgKyAxICIgLgorCQkJCSJX SEVSRSBJID0gJHtpfSAlIDUwIik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkkY29ubi0+cXVl cnlfc2FmZSgKKwkJCQkiU0VMRUNUICogRlJPTSAke3RibH0gRk9SIEtFWSBTSEFSRSIpOwor CQl9CisJfQorCisJZm9yIG15ICRjb25uIChAY29ubmVjdGlvbnMpCisJeworCQkkY29ubi0+ cXVpdCgpOworCX0KK30KKworIyBUaGlzIHBhaXIgb2YgY2FsbHMgd2lsbCBjcmVhdGUgbW9y ZSBvciBsZXNzIHRoZSBzYW1lIGFtb3VudCBvZiBtZW1ic2VycyBhbmQKKyMgb2Zmc2V0cyBz ZWdtZW50cy4KK3N1YiBwcmVwMgoreworCW15ICRub2RlID0gc2hpZnQ7CisJbXkgJHRibCA9 IHNoaWZ0OworCisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ1JFQVRFIFRB QkxFICR7dGJsfShCQVIgSU5UIFBSSU1BUlkgS0VZLCBCQVogSU5UKTsgIiAuCisJCSJDUkVB VEUgT1IgUkVQTEFDRSBQUk9DRURVUkUgTVhJREZJTExFUihOX1NURVBTIElOVCBERUZBVUxU IDEwMDApICIgLgorCQkiTEFOR1VBR0UgUExQR1NRTCAiIC4KKwkJIkFTIFwkXCQgIiAuCisJ CSJCRUdJTiAiIC4KKwkJIglGT1IgSSBJTiAxLi5OX1NURVBTIExPT1AgIiAuCisJCSIJCVVQ REFURSAke3RibH0gU0VUIEJBWiA9IFJBTkRPTSgxLCAxMDAwKSAiIC4KKwkJIgkJV0hFUkUg QkFSIElOIChTRUxFQ1QgQkFSIEZST00gJHt0Ymx9ICIgLgorCQkiCQkJCQkJVEFCTEVTQU1Q TEUgQkVSTk9VTExJKDgwKSk7ICIgLgorCQkiCQlDT01NSVQ7ICIgLgorCQkiCUVORCBMT09Q OyAiIC4KKwkJIkVORDsgXCRcJDsgIiAuCisJCSJJTlNFUlQgSU5UTyAke3RibH0gKEJBUiwg QkFaKSAiIC4KKwkJIlNFTEVDVCBJRCwgSUQgRlJPTSBHRU5FUkFURV9TRVJJRVMoMSwgMTAy NCkgSUQ7Iik7Cit9CisKK3N1YiBmaWxsMgoreworCW15ICRub2RlID0gc2hpZnQ7CisJbXkg JHRibCA9IHNoaWZ0OworCW15ICRzY2FsZSA9IHNoaWZ0IC8vIDE7CisKKwkkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJCRUdJTjsgIiAuCisJCSJTRUxFQ1QgKiBGUk9NICR7 dGJsfSBGT1IgS0VZIFNIQVJFOyAiIC4KKwkJIlBSRVBBUkUgVFJBTlNBQ1RJT04gJ0EnOyAi IC4KKwkJIkNBTEwgTVhJREZJTExFUigoMzY1ICogJHtzY2FsZX0pOjppbnQpOyAiIC4KKwkJ IkNPTU1JVCBQUkVQQVJFRCAnQSc7Iik7Cit9CisKKworIyBnZW5lcmF0ZSBhcm91bmQgMiBv ZmZzZXQgc2VnbWVudHMgYW5kIDU1IG1lbWJlciBzZWdtZW50cworc3ViIG14aWRfZ2VuMQor eworCW15ICRub2RlID0gc2hpZnQ7CisJbXkgJHRibCA9IHNoaWZ0OworCisJcHJlcCgkbm9k ZSwgJHRibCk7CisJZmlsbCgkbm9kZSwgJHRibCk7CisKKwkkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoQ0hFQ0tQT0lOVCkpOworfQorCisjIGdlbmVyYXRlIGFyb3VuZCAxMCBv ZmZzZXQgc2VnbWVudHMgYW5kIDEyIG1lbWJlciBzZWdtZW50cworc3ViIG14aWRfZ2VuMgor eworCW15ICRub2RlID0gc2hpZnQ7CisJbXkgJHRibCA9IHNoaWZ0OworCW15ICRzY2FsZSA9 IHNoaWZ0IC8vIDE7CisKKwlwcmVwMigkbm9kZSwgJHRibCk7CisJZmlsbDIoJG5vZGUsICR0 YmwsICRzY2FsZSk7CisKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ0hFQ0tQ T0lOVCkpOworfQorCisjIEZldGNoIGxhdGVzdCBtdWx0aXhhY3QgY2hlY2twb2ludCB2YWx1 ZXMuCitzdWIgbXVsdGlfYm91bmRzCit7CisJbXkgKCRub2RlKSA9IEBfOworCW15ICRwYXRo ID0gJG5vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpOworCW15ICgkc3Rkb3V0LCAkc3Rk ZXJyKSA9IHJ1bl9jb21tYW5kKFsKKwkJCQkJCQkJCSRwYXRoIC4gJy9wZ19jb250cm9sZGF0 YScsCisJCQkJCQkJCQkkbm9kZS0+ZGF0YV9kaXIKKwkJCQkJCQkJXSk7CisJbXkgQGNvbnRy b2xfZGF0YSA9IHNwbGl0KCJcbiIsICRzdGRvdXQpOworCW15ICRuZXh0ID0gdW5kZWY7CisJ bXkgJG9sZGVzdCA9IHVuZGVmOworCW15ICRuZXh0X29mZnNldCA9IHVuZGVmOworCisJZm9y ZWFjaCAoQGNvbnRyb2xfZGF0YSkKKwl7CisJCWlmICgkXyA9fiAvXkxhdGVzdCBjaGVja3Bv aW50J3MgTmV4dE11bHRpWGFjdElkOlxzKiguKikkL21nKQorCQl7CisJCQkkbmV4dCA9ICQx OworCQkJcHJpbnQgIj4+PiBAIG5vZGUgIi4gJG5vZGUtPm5hbWUgLiAiLCAiIC4gJF8gLiAi XG4iOworCQl9CisKKwkJaWYgKCRfID1+IC9eTGF0ZXN0IGNoZWNrcG9pbnQncyBvbGRlc3RN dWx0aVhpZDpccyooLiopJC9tZykKKwkJeworCQkJJG9sZGVzdCA9ICQxOworCQkJcHJpbnQg Ij4+PiBAIG5vZGUgIi4gJG5vZGUtPm5hbWUgLiAiLCAiIC4gJF8gLiAiXG4iOworCQl9CisK KwkJaWYgKCRfID1+IC9eTGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlPZmZzZXQ6XHMq KC4qKSQvbWcpCisJCXsKKwkJCSRuZXh0X29mZnNldCA9ICQxOworCQkJcHJpbnQgIj4+PiBA IG5vZGUgIi4gJG5vZGUtPm5hbWUgLiAiLCAiIC4gJF8gLiAiXG4iOworCQl9CisKKwkJaWYg KGRlZmluZWQoJG9sZGVzdCkgJiYgZGVmaW5lZCgkbmV4dCkgJiYgZGVmaW5lZCgkbmV4dF9v ZmZzZXQpKQorCQl7CisJCQlsYXN0OworCQl9CisJfQorCisJZGllICJMYXRlc3QgY2hlY2tw b2ludCdzIE5leHRNdWx0aVhhY3RJZCBub3QgZm91bmQgaW4gY29udHJvbCBmaWxlIVxuIgor CXVubGVzcyBkZWZpbmVkKCRuZXh0KTsKKworCWRpZSAiTGF0ZXN0IGNoZWNrcG9pbnQncyBv bGRlc3RNdWx0aVhpZCBub3QgZm91bmQgaW4gY29udHJvbCBmaWxlIVxuIgorCXVubGVzcyBk ZWZpbmVkKCRvbGRlc3QpOworCisJZGllICJMYXRlc3QgY2hlY2twb2ludCdzIE5leHRNdWx0 aU9mZnNldCBub3QgZm91bmQgaW4gY29udHJvbCBmaWxlIVxuIgorCXVubGVzcyBkZWZpbmVk KCRuZXh0X29mZnNldCk7CisKKwlyZXR1cm4gKCRvbGRlc3QsICRuZXh0LCAkbmV4dF9vZmZz ZXQpOworfQorCisjIENyZWF0ZSBub2RlIGZyb20gZXhpc3RpbmcgYmlucy4KK3N1YiBjcmVh dGVfbmV3X25vZGUKK3sKKwlteSAoJG5hbWUsICVwYXJhbXMpID0gQF87CisKKwljcmVhdGVf bm9kZSgwLCBAXyk7Cit9CisKKyMgQ3JlYXRlIG5vZGUgZnJvbSBFTlYgb2xkaW5zdGFsbAor c3ViIGNyZWF0ZV9vbGRfbm9kZQoreworCW15ICgkbmFtZSwgJXBhcmFtcykgPSBAXzsKKwor CWlmICghZGVmaW5lZCgkRU5We29sZGluc3RhbGx9KSkKKwl7CisJCWRpZSAib2xkaW5zdGFs bCBpcyBub3QgZGVmaW5lZCI7CisJfQorCisJY3JlYXRlX25vZGUoMSwgQF8pOworfQorCitz dWIgY3JlYXRlX25vZGUKK3sKKwlteSAoJGluc3RhbGxfcGF0aF9mcm9tX2VudiwgJG5hbWUs ICVwYXJhbXMpID0gQF87CisJbXkgJHNjYWxlID0gZGVmaW5lZCAkcGFyYW1ze3NjYWxlfSA/ ICRwYXJhbXN7c2NhbGV9IDogMTsKKwlteSAkbXVsdGkgPSBkZWZpbmVkICRwYXJhbXN7bXVs dGl9ID8gJHBhcmFtc3ttdWx0aX0gOiB1bmRlZjsKKwlteSAkb2Zmc2V0ID0gZGVmaW5lZCAk cGFyYW1ze29mZnNldH0gPyAkcGFyYW1ze29mZnNldH0gOiB1bmRlZjsKKworCW15ICRub2Rl ID0KKwkJJGluc3RhbGxfcGF0aF9mcm9tX2VudiA/CisJCQlQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJG5hbWUsCisJCQkJCWluc3RhbGxfcGF0aCA9PiAkRU5We29sZGluc3Rh bGx9KSA6CisJCQlQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJG5hbWUpOworCisJ JG5vZGUtPmluaXQoZm9yY2VfaW5pdGRiID0+IDEsIAorCQlleHRyYSA9PiBbCisJCQkkbXVs dGkgPyAoJy1tJywgJG11bHRpKSA6ICgpLAorCQkJJG9mZnNldCA/ICgnLW8nLCAkb2Zmc2V0 KSA6ICgpLAorCQldKTsKKworCSMgRml4dXAgTU9YIHBhdGNoIHF1aXJrCisJaWYgKCRtdWx0 aSkKKwl7CisJCXVubGluayAkbm9kZS0+ZGF0YV9kaXIgLiAnL3BnX211bHRpeGFjdC9vZmZz ZXRzLzAwMDAnOworCX0KKwlpZiAoJG9mZnNldCkKKwl7CisJCXVubGluayAkbm9kZS0+ZGF0 YV9kaXIgLiAnL3BnX211bHRpeGFjdC9tZW1iZXJzLzAwMDAnOworCX0KKworCSRub2RlLT5h cHBlbmRfY29uZignZnN5bmMnLCAnb2ZmJyk7CisJJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAnbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDInKTsKKworCSRu b2RlLT5zdGFydCgpOworCW14aWRfZ2VuMigkbm9kZSwgJ0ZPTycsICRzY2FsZSk7CisJbXhp ZF9nZW4xKCRub2RlLCAnQkFSJywgJHNjYWxlKTsKKwkkbm9kZS0+cmVzdGFydCgpOworCSRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShTRUxFQ1QgKiBGUk9NIEZPTykpOwkJIyBq dXN0IGluIGNhc2UuLi4KKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNU ICogRlJPTSBCQVIpKTsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ0hFQ0tQ T0lOVCkpOworCSRub2RlLT5zdG9wKCk7CisKKwlyZXR1cm4gJG5vZGU7Cit9CisKK3N1YiBk b191cGdyYWRlCit7CisJbXkgKCRvbGRub2RlLCAkbmV3bm9kZSkgPSBAXzsKKworCWNvbW1h bmRfb2soCisJCVsKKwkJCSdwZ191cGdyYWRlJywgJy0tbm8tc3luYycsCisJCQknLWQnLCAk b2xkbm9kZS0+ZGF0YV9kaXIsCisJCQknLUQnLCAkbmV3bm9kZS0+ZGF0YV9kaXIsCisJCQkn LWInLCAkb2xkbm9kZS0+Y29uZmlnX2RhdGEoJy0tYmluZGlyJyksCisJCQknLUInLCAkbmV3 bm9kZS0+Y29uZmlnX2RhdGEoJy0tYmluZGlyJyksCisJCQknLXMnLCAkbmV3bm9kZS0+aG9z dCwKKwkJCSctcCcsICRvbGRub2RlLT5wb3J0LAorCQkJJy1QJywgJG5ld25vZGUtPnBvcnQs CisJCQknLS1jaGVjaycKKwkJXSwKKwkJJ3J1biBvZiBwZ191cGdyYWRlJyk7CisKKwljb21t YW5kX29rKAorCQlbCisJCQkncGdfdXBncmFkZScsICctLW5vLXN5bmMnLAorCQkJJy1kJywg JG9sZG5vZGUtPmRhdGFfZGlyLAorCQkJJy1EJywgJG5ld25vZGUtPmRhdGFfZGlyLAorCQkJ Jy1iJywgJG9sZG5vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQkJJy1CJywgJG5l d25vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQkJJy1zJywgJG5ld25vZGUtPmhv c3QsCisJCQknLXAnLCAkb2xkbm9kZS0+cG9ydCwKKwkJCSctUCcsICRuZXdub2RlLT5wb3J0 LAorCQkJJy0tY29weScKKwkJXSwKKwkJJ3J1biBvZiBwZ191cGdyYWRlJyk7CisKKwkkb2xk bm9kZS0+c3RhcnQoKTsKKwkkbmV3bm9kZS0+c3RhcnQoKTsKKworCW15ICRvbGRmb28gPSAk b2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUICogRlJPTSBGT08pKTsK KwlteSAkbmV3Zm9vID0gJG5ld25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVD VCAqIEZST00gRk9PKSk7CisJaXMoJG9sZGZvbywgJG5ld2ZvbywgInNlbGVjdCBmb28gZXEi KTsKKworCW15ICRvbGRiYXIgPSAkb2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEo U0VMRUNUICogRlJPTSBCQVIpKTsKKwlteSAkbmV3YmFyID0gJG5ld25vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxKFNFTEVDVCAqIEZST00gQkFSKSk7CisJaXMoJG9sZGJhciwgJG5l d2JhciwgInNlbGVjdCBiYXIgZXEiKTsKKworCSRvbGRub2RlLT5zdG9wKCk7CisJJG5ld25v ZGUtPnN0b3AoKTsKKworCW11bHRpX2JvdW5kcygkb2xkbm9kZSk7CisJbXVsdGlfYm91bmRz KCRuZXdub2RlKTsKK30KKworbXkgQFRFU1RTID0gKAorCSMgdGVzdHMgd2l0aG91dCBFTlYg b2xkaW5zdGFsbAorCTAsIDEsIDIsIDMsIDQsIDUsIDYsCisJIyB0ZXN0cyB3aXRoICJyZWFs IiBwZ191cGdyYWRlCisJMTAwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LAorCSMg c2VsZiB1cGdyYWRlCisJMTAwMCwKKyk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KyMgQmFzaWMgc2FuaXR5IHRlc3RzIG9uIGEgTkVXIGJpbgorIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorCisjIHN0YXJ0cyBmcm9tIHRoZSB6ZXJvCitTS0lQOgoreworCW15ICRURVNU X05PID0gMDsKKwlza2lwICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxl c3MgKCBncmVwKCAvXiRURVNUX05PJC8sIEBURVNUUyApICk7CisKKwlteSAkbm9kZSA9IGNy ZWF0ZV9uZXdfbm9kZSgnc2ltcGxlX21vJywKKwkJCQkJCXNjYWxlID0+IDEpOworCW11bHRp X2JvdW5kcygkbm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisK KyMgbXVsdGkgc3RhcnRzIGZyb20gdGhlIHZhbHVlCitTS0lQOgoreworCW15ICRURVNUX05P ID0gMTsKKwlza2lwICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3Mg KCBncmVwKCAvXiRURVNUX05PJC8sIEBURVNUUyApICk7CisKKwlteSAkbm9kZSA9IGNyZWF0 ZV9uZXdfbm9kZSgnc2ltcGxlX01vJywKKwkJCQkJCXNjYWxlID0+IDEuMTUsCisJCQkJCQlt dWx0aSA9PiAnMHgxMjM0MDAnKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJU RVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCisjIG9mZnNldHMgc3RhcnRzIGZyb20gdGhl IHZhbHVlCitTS0lQOgoreworCW15ICRURVNUX05PID0gMjsKKwlza2lwICJkbyBub3QgdGVz dCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNUX05PJC8sIEBU RVNUUyApICk7CisKKwlteSAkbm9kZSA9IGNyZWF0ZV9uZXdfbm9kZSgnc2ltcGxlX21PJywK KwkJCQkJCXNjYWxlID0+IDEuMTUsCisJCQkJCQlvZmZzZXQgPT4gJzB4NDMyMTAwJyk7CisJ bXVsdGlfYm91bmRzKCRub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsK K30KKworIyBtdWx0aSBhbmQgb2Zmc2V0cyBzdGFydHMgZnJvbSB0aGUgdmFsdWUKK1NLSVA6 Cit7CisJbXkgJFRFU1RfTk8gPSAzOworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1Rf Tk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsKKwor CW15ICRub2RlID0gY3JlYXRlX25ld19ub2RlKCdzaW1wbGVfTU8nLAorCQkJCQkJc2NhbGUg PT4gMS4xNSwKKwkJCQkJCW11bHRpID0+ICcweERFQUQwMCcsIG9mZnNldCA9PiAnMHhCRUVG MDAnKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBB U1NFRCIpOworfQorCisjIG11bHRpIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZSwgbXVsdGkgd3Jh cAorU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDQ7CisJc2tpcCAiZG8gbm90IHRlc3QgY2Fz ZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMg KSApOworCisJbXkgJG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9Nb193cmFwJywK KwkJCQkJCXNjYWxlID0+IDEuMTUsCisJCQkJCQltdWx0aSA9PiAnMHhGRkZGNzAwMCcpOwor CW11bHRpX2JvdW5kcygkbm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7 Cit9CisKKyMgb2Zmc2V0cyBzdGFydHMgZnJvbSB0aGUgdmFsdWUsIG9mZnNldHMgd3JhcAor U0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDU7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAk VEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSAp OworCisJbXkgJG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9tT193cmFwJywKKwkJ CQkJCXNjYWxlID0+IDEuMTUsCisJCQkJCQlvZmZzZXQgPT4gJzB4RkZGRkZDMDAnKTsKKwlt dWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOwor fQorCisjIG11bHRpIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZSwgb2Zmc2V0cyBzdGFydHMgZnJv bSB0aGUgdmFsdWUsCisjIG11bHRpIHdyYXAsIG9mZnNldHMgd3JhcAorU0tJUDoKK3sKKwlt eSAkVEVTVF9OTyA9IDY7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEK KwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJG5v ZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9NT193cmFwJywKKwkJCQkJCXNjYWxlID0+ IDEuMTUsCisJCQkJCQltdWx0aSA9PiAnMHhGRkZGNzAwMCcsIG9mZnNldCA9PiAnMHhGRkZG RkMwMCcpOworCW11bHRpX2JvdW5kcygkbm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8g UEFTU0VEIik7Cit9CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgcGdfdXBnYXJk ZSB0ZXN0cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIHN0YXJ0cyBmcm9tIHRo ZSB6ZXJvCitTS0lQOgoreworCW15ICRURVNUX05PID0gMTAwOworCXNraXAgImRvIG5vdCB0 ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywg QFRFU1RTICkgKTsKKworCW15ICRkYm5hbWUgPSAnbW8nOworCW15ICRvbGRub2RlID0gY3Jl YXRlX29sZF9ub2RlKCJvbGRfJGRibmFtZSIsCisJCQkJCQlzY2FsZSA9PiAxKTsKKwlteSAk bmV3bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygibmV3XyRkYm5hbWUi KTsKKwkkbmV3bm9kZS0+aW5pdCgpOworCisJZG9fdXBncmFkZSgkb2xkbm9kZSwgJG5ld25v ZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCisjIG11bHRpIHN0 YXJ0cyBmcm9tIHRoZSB2YWx1ZQorU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDEwMTsKKwlz a2lwICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAv XiRURVNUX05PJC8sIEBURVNUUyApICk7CisKKwlteSAkZGJuYW1lID0gJ01vJzsKKwlteSAk b2xkbm9kZSA9IGNyZWF0ZV9vbGRfbm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUg PT4gMS4yLAorCQkJCQkJbXVsdGkgPT4gJzB4MTIzNDAwJyk7CisJbXkgJG5ld25vZGUgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm5ld18kZGJuYW1lIik7CisJJG5ld25v ZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9sZG5vZGUsICRuZXdub2RlKTsKKwlvaygx LCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBvZmZzZXRzIHN0YXJ0cyBmcm9t IHRoZSB2YWx1ZQorU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDEwMjsKKwlza2lwICJkbyBu b3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNUX05P JC8sIEBURVNUUyApICk7CisKKwlteSAkZGJuYW1lID0gJ21PJzsKKwlteSAkb2xkbm9kZSA9 IGNyZWF0ZV9vbGRfbm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMS4yLAor CQkJCQkJb2Zmc2V0ID0+ICcweDQzMjEwMCcpOworCW15ICRuZXdub2RlID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCJuZXdfJGRibmFtZSIpOworCSRuZXdub2RlLT5pbml0 KCk7CisKKwlkb191cGdyYWRlKCRvbGRub2RlLCAkbmV3bm9kZSk7CisJb2soMSwgIlRFU1Qg JFRFU1RfTk8gUEFTU0VEIik7Cit9CisKKyMgbXVsdGkgYW5kIG9mZnNldHMgc3RhcnRzIGZy b20gdGhlIHZhbHVlCitTS0lQOgoreworCW15ICRURVNUX05PID0gMTAzOworCXNraXAgImRv IG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1Rf Tk8kLywgQFRFU1RTICkgKTsKKworCW15ICRkYm5hbWUgPSAnTU8nOworCW15ICRvbGRub2Rl ID0gY3JlYXRlX29sZF9ub2RlKCJvbGRfJGRibmFtZSIsCisJCQkJCQlzY2FsZSA9PiAxLjIs CisJCQkJCQltdWx0aSA9PiAnMHhERUFEMDAnLCBvZmZzZXQgPT4gJzB4QkVFRjAwJyk7CisJ bXkgJG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm5ld18kZGJu YW1lIik7CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9sZG5vZGUsICRu ZXdub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0 aSBzdGFydHMgZnJvbSB0aGUgdmFsdWUsIG11bHRpIHdyYXAKK1NLSVA6Cit7CisJbXkgJFRF U1RfTk8gPSAxMDQ7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJ dW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJGRibmFt ZSA9ICdNb193cmFwJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0ZV9vbGRfbm9kZSgib2xkXyRk Ym5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMS4yLAorCQkJCQkJbXVsdGkgPT4gJzB4RkZGRjcw MDAnKTsKKwlteSAkbmV3bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygi bmV3XyRkYm5hbWUiKTsKKwkkbmV3bm9kZS0+aW5pdCgpOworCisJZG9fdXBncmFkZSgkb2xk bm9kZSwgJG5ld25vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOworfQor CisjIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlLCBvZmZzZXRzIHdyYXAKK1NLSVA6 Cit7CisJbXkgJFRFU1RfTk8gPSAxMDU7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVT VF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOwor CisJbXkgJGRibmFtZSA9ICdtT193cmFwJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0ZV9vbGRf bm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMS4yLAorCQkJCQkJb2Zmc2V0 ID0+ICcweEZGRkZGQzAwJyk7CisJbXkgJG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoIm5ld18kZGJuYW1lIik7CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRv X3VwZ3JhZGUoJG9sZG5vZGUsICRuZXdub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQ QVNTRUQiKTsKK30KKworIyBtdWx0aSBzdGFydHMgZnJvbSB0aGUgdmFsdWUsIG9mZnNldHMg c3RhcnRzIGZyb20gdGhlIHZhbHVlLAorIyBtdWx0aSB3cmFwLCBvZmZzZXRzIHdyYXAKK1NL SVA6Cit7CisJbXkgJFRFU1RfTk8gPSAxMDY7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAk VEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSAp OworCisJbXkgJGRibmFtZSA9ICdNT193cmFwJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0ZV9v bGRfbm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMS4yLAorCQkJCQkJbXVs dGkgPT4gJzB4RkZGRjcwMDAnLCBvZmZzZXQgPT4gJzB4RkZGRkZDMDAnKTsKKwlteSAkbmV3 bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygibmV3XyRkYm5hbWUiKTsK KwkkbmV3bm9kZS0+aW5pdCgpOworCisJZG9fdXBncmFkZSgkb2xkbm9kZSwgJG5ld25vZGUp OworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisjIFNlbGYgdXBncmFkZQorIyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCisjIHN0YXJ0cyBmcm9tIHRoZSB6ZXJvCitTS0lQOgoreworCW15ICRURVNUX05PID0g MTAwMDsKKwlza2lwICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3Mg KCBncmVwKCAvXiRURVNUX05PJC8sIEBURVNUUyApICk7CisKKwlteSAkZGJuYW1lID0gJ3Nl bGZfdXBncmFkZSc7CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoIm9sZF8kZGJu YW1lIiwKKwkJCQkJCXNjYWxlID0+IDEpOworCW15ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCJuZXdfJGRibmFtZSIpOworCSRuZXdub2RlLT5pbml0KCk7 CisKKwlkb191cGdyYWRlKCRvbGRub2RlLCAkbmV3bm9kZSk7CisJb2soMSwgIlRFU1QgJFRF U1RfTk8gUEFTU0VEIik7Cit9CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zOS41Cgo= --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0013-Initialize-old-test-clusters-with-checksums.patch" Content-Disposition: attachment; filename*0="v10-0013-Initialize-old-test-clusters-with-checksums.patch" Content-Transfer-Encoding: base64 RnJvbSA0ZGIwZmRjMTk4MzgyZTY5NDJhNDZlMTYzZWIwNzZiN2U5N2JjMzg0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTggRGVjIDIwMjQgMTE6NDE6NDggKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMCAxMy8xNF0gSW5pdGlhbGl6ZSBvbGQgdGVzdCBjbHVzdGVy cyB3aXRoIGNoZWNrc3VtcwoKYmVjYXVzZSB0aGUgZGVmYXVsdCBjaGFuZ2VkIHRvIGNoZWNr c3Vtcy1vbiBpbiB2MTguCi0tLQogc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA1X29mZnNldC5w bCB8IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA1X29mZnNldC5wbCBiL3NyYy9iaW4vcGdfdXBncmFk ZS90LzAwNV9vZmZzZXQucGwKaW5kZXggMWNmZDhiMzY0YTkuLjk4YTZiZTNhYmQ4IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDVfb2Zmc2V0LnBsCisrKyBiL3NyYy9i aW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwKQEAgLTIyMCw2ICsyMjAsNyBAQCBzdWIg Y3JlYXRlX25vZGUKIAkJZXh0cmEgPT4gWwogCQkJJG11bHRpID8gKCctbScsICRtdWx0aSkg OiAoKSwKIAkJCSRvZmZzZXQgPyAoJy1vJywgJG9mZnNldCkgOiAoKSwKKwkJCSgnLWsnKSwK IAkJXSk7CiAKIAkjIEZpeHVwIE1PWCBwYXRjaCBxdWlyawotLSAKMi4zOS41Cgo= --------------PbmX20yCbf1LIUmss39QwLp0 Content-Type: text/x-patch; charset=UTF-8; name="v10-0014-TEST-bump-catver.patch" Content-Disposition: attachment; filename="v10-0014-TEST-bump-catver.patch" Content-Transfer-Encoding: base64 RnJvbSBkMDA5YWUxYTRlYzdmYWZkNjBhNjM1OTRiNTNkMjBhMjU2ZTUzMTgyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMTMgTm92IDIwMjQgMTY6MzQ6MzQgKzAzMDAKU3ViamVjdDogW1BBVENI IHYxMCAxNC8xNF0gVEVTVDogYnVtcCBjYXR2ZXIKCi0tLQogc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuaCAgfCAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24u aCB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9z cmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCmluZGV4IGMxMzI5M2I0YWRkLi43YWNj Y2YyOTAwZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaAor KysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCkBAIC0xMTksNyArMTE5LDcg QEAgZXh0ZXJuIGNoYXIgKm91dHB1dF9maWxlc1tdOwogICoKICAqIFhYWDogc2hvdWxkIGJl IGNoYW5nZWQgdG8gdGhlIGFjdHVhbCBDQVRBTE9HX1ZFUlNJT05fTk8gb24gY29tbWl0Lgog ICovCi0jZGVmaW5lIE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAyMDI0 MDkwNDEKKyNkZWZpbmUgTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5HRV9DQVRfVkVSIDIw MjQxMTExMgogCiAvKgogICogbGFyZ2Ugb2JqZWN0IGNodW5rIHNpemUgYWRkZWQgdG8gcGdf Y29udHJvbGRhdGEsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNp b24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCmluZGV4IGY4MTVkMTU0 MTVmLi4zMDdhOWQ4ODQ3MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2 ZXJzaW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKQEAgLTU3 LDYgKzU3LDYgQEAKICAqLwogCiAvKgkJCQkJCQl5eXl5bW1kZE4gKi8KLSNkZWZpbmUgQ0FU QUxPR19WRVJTSU9OX05PCTIwMjQxMjExMgorI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8J MjAyNDEyMTEzCiAKICNlbmRpZgotLSAKMi4zOS41Cgo= --------------PbmX20yCbf1LIUmss39QwLp0--