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 1sKNLI-009qyl-Cq for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Jun 2024 19:21:08 +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 1sKNLH-0007zG-2Z for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Jun 2024 19:21:07 +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 1sKNLG-0007z3-BW for pgsql-hackers@lists.postgresql.org; Thu, 20 Jun 2024 19:21:06 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sKNLB-002IZG-Nd for pgsql-hackers@lists.postgresql.org; Thu, 20 Jun 2024 19:21:05 +0000 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-3653ed8907aso511266f8f.2 for ; Thu, 20 Jun 2024 12:21:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718911260; x=1719516060; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=YU4rei/Lv7yM7bDLJqjyMjJvgf53/l+BTQYl/24dgIs=; b=hGKy2TcVqAfGoL58aEiyNpmvzH3sNP4QwAM7d0+30yNWQq5V1SVricPiTVrR6diX3y mUcfzOThmaqfKBR42Z0ca1HA/rOjb5arrRKbhtJf7TEMfFhhQAESVFqnb8LPEl8llrFh nIC83ILczpMUE0hDWuzXqtlVKIGwXghsx808Z/N3OHf6TVW5Rq4CEveBZyBpsvgphM6+ w50eGFFFnAX/i/9epaYJdEuJncgMqIiofJmSZLaMY6NU07mSVOaclwtK6gnfWaUhQcVz l3a7FVJyKHhrIlmntbmm9pCn1G0MA61WNP9QixBbvF2bJnHigrk2GeVAMhd53ztm4EqD kjbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718911260; x=1719516060; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=YU4rei/Lv7yM7bDLJqjyMjJvgf53/l+BTQYl/24dgIs=; b=wl6DVEJqWHuHsUhssGm7W9bb8WESqhkNSTdHeyv3lBkgKSMCNatvhCpvdi5qs1rOFi WKAMbJFi7inw9ahd4eNQU0laqB/wDY4CT2DZGSq1j9ZKVtaShC7y0dYIGCB2RWYm2S1J /Xsym1NsAopv05bGJaI0spwziw4wVml5ylZ0wc95tZ+GApMfuYx3egv8/SSxNQ/bVFOU 8rAd31oD92xx/izJkHsLqVsSkO9Qk1YC4qASSxbWzn2MUlbqBLLqT/6efhjZWEcfshp4 K9EEaHZd3uSaxtUhNkT5gf6VRcKMLwhU/KKCF3Ux5zLJvRUTRx2Wg6rcaWPC3UCA5PYw oMNQ== X-Forwarded-Encrypted: i=1; AJvYcCXP4hjHtaZHlWu6MYXvnDRtwqiCwhH/hlaWRNhCl9vlg2bFNGRze9JYL5wgLDdehLDfjmtc260P5G9Y0J9RLzqJwA7mo/p8JVHsfN5eH/giqTg2 X-Gm-Message-State: AOJu0YzCvy8WeKjCY2r6aUikAekimin4UA26WYyBsYQ1bOiA/+WICu0c xH597l8yIkkyRA6Ep1ycOGZkGXNYnSwqjts/VmeQwBvXTSM8U58a X-Google-Smtp-Source: AGHT+IFsDVbUNP7IV+flkz35gsUEl+Ei+PPQ22Lc4KWCT5LLHoZpSX6ggQ5IolpUYmsOhYiwUhv9yQ== X-Received: by 2002:adf:e508:0:b0:360:7773:4f76 with SMTP id ffacd0b85a97d-363170ecaf6mr4494341f8f.12.1718911259904; Thu, 20 Jun 2024 12:20:59 -0700 (PDT) Received: from ?IPV6:2a01:4b00:c00c:a500:ada3:25ae:49a5:cc21? ([2a01:4b00:c00c:a500:ada3:25ae:49a5:cc21]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3637f5c3c5dsm5170114f8f.100.2024.06.20.12.20.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 20 Jun 2024 12:20:59 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------tQh0xnSqkt5Vfrhq0f0cObtu" Message-ID: Date: Thu, 20 Jun 2024 20:20:58 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: CREATE INDEX CONCURRENTLY on partitioned index To: Justin Pryzby Cc: Alexander Pyhalov , pgsql-hackers@lists.postgresql.org, Masahiko Sawada , Michael Paquier , =?UTF-8?B?5p2O5p2wKOaFjui/vSk=?= References: <20221121030011.GU11463@telsasoft.com> <5bafee07d0e1b3ce5359d1656c90b4836d7cb6a1.camel@gmail.com> <20221204190935.GD14156@telsasoft.com> <37d3f0a984a15f6465b83027eed8c588@postgrespro.ru> <8fe0027c-a4f9-43a0-afc1-20362c159d07@gmail.com> Content-Language: en-US From: Ilya Gladyshev In-Reply-To: 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. --------------tQh0xnSqkt5Vfrhq0f0cObtu Content-Type: multipart/alternative; boundary="------------9ztLMnmyIbj87wYPiEcwYJzy" --------------9ztLMnmyIbj87wYPiEcwYJzy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 15.06.2024 20:40, Justin Pryzby wrote: > On Thu, May 23, 2024 at 10:14:57PM +0100, Ilya Gladyshev wrote: >> Hi, >> >> I think it's well worth the effort to revive the patch, so I rebased it on >> master, updated it and will return it back to the commitfest. Alexander, >> Justin feel free to add yourselves as authors > Thanks -- I was intending to write about this. > > I realized that the patch will need some isolation tests to exercise its > concurrent behavior. Thanks for the suggestion, added an isolation test that verifies behaviour of partitioned CIC with simultaneous partition drop/detach going on. Also fixed some issues in the new patch that I found while writing the test. --------------9ztLMnmyIbj87wYPiEcwYJzy Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit


On 15.06.2024 20:40, Justin Pryzby wrote:
On Thu, May 23, 2024 at 10:14:57PM +0100, Ilya Gladyshev wrote:
Hi,

I think it's well worth the effort to revive the patch, so I rebased it on
master, updated it and will return it back to the commitfest. Alexander,
Justin feel free to add yourselves as authors
Thanks -- I was intending to write about this.

I realized that the patch will need some isolation tests to exercise its
concurrent behavior.


Thanks for the suggestion, added an isolation test that verifies behaviour of partitioned CIC with simultaneous partition drop/detach going on. Also fixed some issues in the new patch that I found while writing the test.


--------------9ztLMnmyIbj87wYPiEcwYJzy-- --------------tQh0xnSqkt5Vfrhq0f0cObtu Content-Type: text/x-patch; charset=UTF-8; name="v5-0002-Fix-progress-report-for-partitioned-REINDEX.patch" Content-Disposition: attachment; filename*0="v5-0002-Fix-progress-report-for-partitioned-REINDEX.patch" Content-Transfer-Encoding: base64 RnJvbSA0NWYyZWM5ZWU1N2E1MzM3Yjc3YjY2ZGIzYzhjNTA5MmYzMDVhMTc2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbHlhIEdsYWR5c2hldiA8aWx5YS52LmdsYWR5c2hl dkBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMTEgSnVuIDIwMjQgMTc6NDg6MDggKzAxMDAKU3Vi amVjdDogW1BBVENIIHY1IDIvMl0gRml4IHByb2dyZXNzIHJlcG9ydCBmb3IgcGFydGl0aW9u ZWQgUkVJTkRFWAoKLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICB8IDEx ICsrKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgfCA2MyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o ICAgICAgfCAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKyksIDkgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDU1ZmRkZTRiMjQuLmM1YmM3MmIz NTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM1NTksNiArMzU1OSw3IEBAIHJlaW5kZXhf aW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCXZvbGF0aWxl IGJvb2wgc2tpcHBlZF9jb25zdHJhaW50ID0gZmFsc2U7CiAJUEdSVXNhZ2UJcnUwOwogCWJv b2wJCXByb2dyZXNzID0gKChwYXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9Q Uk9HUkVTUykgIT0gMCk7CisJYm9vbAkJcGFydGl0aW9uID0gKChwYXJhbXMtPm9wdGlvbnMg JiBSRUlOREVYT1BUX1BBUlRJVElPTikgIT0gMCk7CiAJYm9vbAkJc2V0X3RhYmxlc3BhY2Ug PSBmYWxzZTsKIAogCXBnX3J1c2FnZV9pbml0KCZydTApOwpAQCAtMzYwNCw4ICszNjA1LDkg QEAgcmVpbmRleF9pbmRleChjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQs CiAJCQlpbmRleElkCiAJCX07CiAKLQkJcGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQo UFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsCi0JCQkJCQkJCQkgIGhlYXBJZCk7CisJ CWlmICghcGFydGl0aW9uKQorCQkJcGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQoUFJP R1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsCisJCQkJCQkJCQkJICBoZWFwSWQpOwogCQlw Z3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDIsIHByb2dyZXNzX2NvbHMsIHBy b2dyZXNzX3ZhbHMpOwogCX0KIApAQCAtMzg0NSw4ICszODQ3LDExIEBAIHJlaW5kZXhfaW5k ZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCWluZGV4X2Nsb3Nl KGlSZWwsIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOwog Ci0JaWYgKHByb2dyZXNzKQorCWlmIChwcm9ncmVzcyAmJiAhcGFydGl0aW9uKQorCXsKKwkJ LyogcHJvZ3Jlc3MgZm9yIHBhcnRpdGlvbnMgaXMgdHJhY2tlZCBpbiB0aGUgY2FsbGVyICov CiAJCXBnc3RhdF9wcm9ncmVzc19lbmRfY29tbWFuZCgpOworCX0KIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggZGNiNGVhODllOS4uNmFiZTFmMDE3YyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTExOCw2ICsxMTgsNyBAQCBzdGF0aWMg Ym9vbCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsCiAJCQkJCQkJCQkJY29uc3QgUmVpbmRleFBhcmFtcyAqcGFyYW1zKTsKIHN0YXRpYyB2 b2lkIHVwZGF0ZV9yZWxpc3BhcnRpdGlvbihPaWQgcmVsYXRpb25JZCwgYm9vbCBuZXd2YWwp Owogc3RhdGljIGlubGluZSB2b2lkIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKHZvaWQpOwor c3RhdGljIGlubGluZSB2b2lkIHByb2dyZXNzX2luZGV4X3BhcnRpdGlvbl9kb25lKHZvaWQp OwogCiAvKgogICogY2FsbGJhY2sgYXJndW1lbnQgdHlwZSBmb3IgUmFuZ2VWYXJDYWxsYmFj a0ZvclJlaW5kZXhJbmRleCgpCkBAIC0xNTUwLDcgKzE1NTEsNyBAQCBEZWZpbmVJbmRleChP aWQgdGFibGVJZCwKIAkJCQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIGFuIGludGVybWVkaWF0 ZSBwYXJ0aXRpb25lZCBpbmRleAogCQkJCSAqIGl0c2VsZgogCQkJCSAqLwotCQkJCXBnc3Rh dF9wcm9ncmVzc19pbmNyX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX0RP TkUsIDEpOworCQkJCXByb2dyZXNzX2luZGV4X3BhcnRpdGlvbl9kb25lKCk7CiAJCQl9CiAK IAkJCXJldHVybiBhZGRyZXNzOwpAQCAtMTU3Nyw3ICsxNTc4LDcgQEAgRGVmaW5lSW5kZXgo T2lkIHRhYmxlSWQsCiAJCWlmICghT2lkSXNWYWxpZChwYXJlbnRJbmRleElkKSkKIAkJCXBn c3RhdF9wcm9ncmVzc19lbmRfY29tbWFuZCgpOwogCQllbHNlIGlmICghY29uY3VycmVudCkK LQkJCXBnc3RhdF9wcm9ncmVzc19pbmNyX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QQVJU SVRJT05TX0RPTkUsIDEpOworCQkJcHJvZ3Jlc3NfaW5kZXhfcGFydGl0aW9uX2RvbmUoKTsK IAogCQlyZXR1cm4gYWRkcmVzczsKIAl9CkBAIC0xNjg2LDcgKzE2ODcsNyBAQCBEZWZpbmVJ bmRleChPaWQgdGFibGVJZCwKIAkJCQkJCQkJCQkgIGhlYXBsb2NrdGFnLCBoZWFwcmVsaWQp OwogCiAJCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK LQkJCXBnc3RhdF9wcm9ncmVzc19pbmNyX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QQVJU SVRJT05TX0RPTkUsIDEpOworCQkJcHJvZ3Jlc3NfaW5kZXhfcGFydGl0aW9uX2RvbmUoKTsK IAkJfQogCiAJCS8qIFNldCBhcyB2YWxpZCBhbGwgcGFydGl0aW9uZWQgaW5kZXhlcywgaW5j bHVkaW5nIHRoZSBwYXJlbnQgKi8KQEAgLTMzMzEsNiArMzMzMiwxNCBAQCBSZWluZGV4UGFy dGl0aW9ucyhjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBjb25zdCBSZWlu ZGV4UGFyYW1zICpwYXJhbQogCUxpc3RDZWxsICAgKmxjOwogCUVycm9yQ29udGV4dENhbGxi YWNrIGVycmNhbGxiYWNrOwogCVJlaW5kZXhFcnJvckluZm8gZXJyaW5mbzsKKwlSZWluZGV4 UGFyYW1zIG5ld3BhcmFtczsKKwlpbnQJCQlwcm9ncmVzc19wYXJhbXNbM10gPSB7CisJCVBS T0dSRVNTX0NSRUFURUlEWF9DT01NQU5ELAorCQlQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Us CisJCVBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX1RPVEFMCisJfTsKKwlpbnQ2NAkJ cHJvZ3Jlc3NfdmFsdWVzWzNdOworCU9pZAkJCWhlYXBJZCA9IHJlbGlkOwogCiAJQXNzZXJ0 KFJFTEtJTkRfSEFTX1BBUlRJVElPTlMocmVsa2luZCkpOwogCkBAIC0zMzkyLDExICszNDAx LDI4IEBAIFJlaW5kZXhQYXJ0aXRpb25zKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQg cmVsaWQsIGNvbnN0IFJlaW5kZXhQYXJhbXMgKnBhcmFtCiAJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRfY29udGV4dCk7CiAJfQogCisJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9QQVJU SVRJT05FRF9JTkRFWCkKKwl7CisJCWhlYXBJZCA9IEluZGV4R2V0UmVsYXRpb24ocmVsaWQs IHRydWUpOworCX0KKworCXByb2dyZXNzX3ZhbHVlc1swXSA9IChwYXJhbXMtPm9wdGlvbnMg JiBSRUlOREVYT1BUX0NPTkNVUlJFTlRMWSkgIT0gMCA/CisJCVBST0dSRVNTX0NSRUFURUlE WF9DT01NQU5EX1JFSU5ERVhfQ09OQ1VSUkVOVExZIDoKKwkJUFJPR1JFU1NfQ1JFQVRFSURY X0NPTU1BTkRfUkVJTkRFWDsKKwlwcm9ncmVzc192YWx1ZXNbMV0gPSAwOworCXByb2dyZXNz X3ZhbHVlc1syXSA9IGxpc3RfbGVuZ3RoKHBhcnRpdGlvbnMpOworCXBnc3RhdF9wcm9ncmVz c19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLCBoZWFwSWQp OworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMywgcHJvZ3Jlc3NfcGFy YW1zLCBwcm9ncmVzc192YWx1ZXMpOworCiAJLyoKIAkgKiBQcm9jZXNzIGVhY2ggcGFydGl0 aW9uIGxpc3RlZCBpbiBhIHNlcGFyYXRlIHRyYW5zYWN0aW9uLiAgTm90ZSB0aGF0CiAJICog dGhpcyBjb21taXRzIGFuZCB0aGVuIHN0YXJ0cyBhIG5ldyB0cmFuc2FjdGlvbiBpbW1lZGlh dGVseS4KIAkgKi8KLQlSZWluZGV4TXVsdGlwbGVJbnRlcm5hbChzdG10LCBwYXJ0aXRpb25z LCBwYXJhbXMpOworCW5ld3BhcmFtcyA9ICpwYXJhbXM7CisJbmV3cGFyYW1zLm9wdGlvbnMg fD0gUkVJTkRFWE9QVF9QQVJUSVRJT047CisJUmVpbmRleE11bHRpcGxlSW50ZXJuYWwoc3Rt dCwgcGFydGl0aW9ucywgJm5ld3BhcmFtcyk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfZW5kX2Nv bW1hbmQoKTsKIAogCS8qCiAJICogQ2xlYW4gdXAgd29ya2luZyBzdG9yYWdlIC0tLSBub3Rl IHdlIG11c3QgZG8gdGhpcyBhZnRlcgpAQCAtMzQxNyw2ICszNDQzLDcgQEAgc3RhdGljIHZv aWQKIFJlaW5kZXhNdWx0aXBsZUludGVybmFsKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBj b25zdCBMaXN0ICpyZWxpZHMsIGNvbnN0IFJlaW5kZXhQYXJhbXMgKnBhcmFtcykKIHsKIAlM aXN0Q2VsbCAgICpsOworCWJvb2wJCXBhcnRpdGlvbnMgPSAoKHBhcmFtcy0+b3B0aW9ucyAm IFJFSU5ERVhPUFRfUEFSVElUSU9OKSAhPSAwKTsKIAogCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0zNTEwLDYgKzM1MzcsOSBAQCBS ZWluZGV4TXVsdGlwbGVJbnRlcm5hbChjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgY29uc3Qg TGlzdCAqcmVsaWRzLCBjb25zdCBSZWluZAogCQl9CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisKKwkJaWYgKHBhcnRpdGlvbnMpCisJCQlwcm9ncmVzc19pbmRleF9wYXJ0 aXRpb25fZG9uZSgpOwogCX0KIAogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0z NTYyLDYgKzM1OTIsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCWNoYXIJICAg KnJlbGF0aW9uTmFtZSA9IE5VTEw7CiAJY2hhcgkgICAqcmVsYXRpb25OYW1lc3BhY2UgPSBO VUxMOwogCVBHUlVzYWdlCXJ1MDsKKwlib29sCQlwYXJ0aXRpb24gPSAoKHBhcmFtcy0+b3B0 aW9ucyAmIFJFSU5ERVhPUFRfUEFSVElUSU9OKSAhPSAwKTsKIAljb25zdCBpbnQJcHJvZ3Jl c3NfaW5kZXhbXSA9IHsKIAkJUFJPR1JFU1NfQ1JFQVRFSURYX0NPTU1BTkQsCiAJCVBST0dS RVNTX0NSRUFURUlEWF9QSEFTRSwKQEAgLTM5MDUsNyArMzkzNiw4IEBAIFJlaW5kZXhSZWxh dGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJCWlmIChpbmRleFJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5j ZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQogCQkJZWxvZyhFUlJPUiwgImNhbm5vdCByZWlu ZGV4IGEgdGVtcG9yYXJ5IHRhYmxlIGNvbmN1cnJlbnRseSIpOwogCi0JCXBnc3RhdF9wcm9n cmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLCBpZHgt PnRhYmxlSWQpOworCQlpZiAoIXBhcnRpdGlvbikKKwkJCXBnc3RhdF9wcm9ncmVzc19zdGFy dF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLCBpZHgtPnRhYmxlSWQp OwogCiAJCXByb2dyZXNzX3ZhbHNbMF0gPSBQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFORF9S RUlOREVYX0NPTkNVUlJFTlRMWTsKIAkJcHJvZ3Jlc3NfdmFsc1sxXSA9IDA7CS8qIGluaXRp YWxpemluZyAqLwpAQCAtNDM3OSw3ICs0NDExLDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3Vy cmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAogCU1lbW9yeUNvbnRleHREZWxldGUocHJpdmF0ZV9jb250ZXh0KTsKIAotCXBn c3RhdF9wcm9ncmVzc19lbmRfY29tbWFuZCgpOworCWlmICghcGFydGl0aW9uKQorCQlwZ3N0 YXRfcHJvZ3Jlc3NfZW5kX2NvbW1hbmQoKTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtNDU2 OSwzICs0NjAyLDIxIEBAIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKHZvaWQpCiAJUHJvY0ds b2JhbC0+c3RhdHVzRmxhZ3NbTXlQcm9jLT5wZ3hhY3RvZmZdID0gTXlQcm9jLT5zdGF0dXNG bGFnczsKIAlMV0xvY2tSZWxlYXNlKFByb2NBcnJheUxvY2spOwogfQorCitzdGF0aWMgaW5s aW5lIHZvaWQKK3Byb2dyZXNzX2luZGV4X3BhcnRpdGlvbl9kb25lKHZvaWQpCit7CisJaW50 CQkJbnBhcmFtID0gNjsKKwljb25zdCBpbnQJcHJvZ3Jlc3NfaWR4W10gPSB7CisJCVBST0dS RVNTX0NSRUFURUlEWF9JTkRFWF9PSUQsCisJCVBST0dSRVNTX0NSRUFURUlEWF9BQ0NFU1Nf TUVUSE9EX09JRCwKKwkJUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQlQUk9HUkVTU19D UkVBVEVJRFhfU1VCUEhBU0UsCisJCVBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfVE9UQUws CisJCVBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORQorCX07CisJY29uc3QgaW50NjQg cHJvZ3Jlc3NfdmFsc1tdID0gezAsIDAsIDAsIDAsIDAsIDB9OworCisJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbShucGFyYW0sIHByb2dyZXNzX2lkeCwgcHJvZ3Jlc3Nf dmFscyk7CisJcGdzdGF0X3Byb2dyZXNzX2luY3JfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURY X1BBUlRJVElPTlNfRE9ORSwgMSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggN2Q0MzRm OGU2NS4uY2NiYTY1ZmJiZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRl eC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtNDIsNiArNDIsNyBA QCB0eXBlZGVmIHN0cnVjdCBSZWluZGV4UGFyYW1zCiAjZGVmaW5lIFJFSU5ERVhPUFRfUkVQ T1JUX1BST0dSRVNTIDB4MDIgLyogcmVwb3J0IHBnc3RhdCBwcm9ncmVzcyAqLwogI2RlZmlu ZSBSRUlOREVYT1BUX01JU1NJTkdfT0sgCTB4MDQJLyogc2tpcCBtaXNzaW5nIHJlbGF0aW9u cyAqLwogI2RlZmluZSBSRUlOREVYT1BUX0NPTkNVUlJFTlRMWQkweDA4CS8qIGNvbmN1cnJl bnQgbW9kZSAqLworI2RlZmluZSBSRUlOREVYT1BUX1BBUlRJVElPTiAweDEwIC8qIHJlaW5k ZXhpbmcgaXMgZG9uZSBhcyBwYXJ0IG9mIHBhcnRpdGlvbmVkIHRhYmxlL2luZGV4IHJlaW5k ZXggKi8KIAogLyogc3RhdGUgaW5mbyBmb3IgdmFsaWRhdGVfaW5kZXggYnVsa2RlbGV0ZSBj YWxsYmFjayAqLwogdHlwZWRlZiBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlCi0tIAoyLjQz LjAKCg== --------------tQh0xnSqkt5Vfrhq0f0cObtu Content-Type: text/x-patch; charset=UTF-8; name="v5-0001-Allow-CREATE-INDEX-CONCURRENTLY-on-partitioned-ta.patch" Content-Disposition: attachment; filename*0="v5-0001-Allow-CREATE-INDEX-CONCURRENTLY-on-partitioned-ta.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhY2Y1Y2Y1ZDRhOTg0YzBmODYzNWEyNWUwM2MyMzQwOTYwMWMwYzkzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbHlhIEdsYWR5c2hldiA8aWx5YS52LmdsYWR5c2hl dkBnbWFpbC5jb20+CkRhdGU6IFRodSwgMjMgTWF5IDIwMjQgMTg6MTM6NDEgKzAxMDAKU3Vi amVjdDogW1BBVENIIHY1IDEvMl0gQWxsb3cgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBv biBwYXJ0aXRpb25lZCB0YWJsZQoKLS0tCiBkb2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2lu ZGV4LnNnbWwgICAgICAgICAgICB8ICAxNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgICAgICAgICAgICAgIHwgMjI4ICsrKysrKysrKysrKystLS0tLQogLi4uL2lz b2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb25lZC1jaWMub3V0ICAgIHwgMTM1ICsrKysrKysr KysrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAgICAgfCAg IDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbmVkLWNpYy5zcGVjIHwg IDU3ICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dCAgICAg ICAgfCAxMjcgKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhpbmcuc3Fs ICAgICAgICAgICAgIHwgIDI2ICstCiA4IGZpbGVzIGNoYW5nZWQsIDUyMCBpbnNlcnRpb25z KCspLCA3OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29s YXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uZWQtY2ljLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb25lZC1jaWMuc3BlYwoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApp bmRleCA2YWFiNzllOTAxLi45MDQ5NzhjNmU1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC00MzE0LDE0ICs0MzE0 LDEyIEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50IEFUVEFDSCBQQVJUSVRJT04gbWVhc3Vy ZW1lbnRfeTIwMDhtMDIKICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIGl0IGlzIHBvc3Np YmxlIHRvIGNyZWF0ZSBpbmRleGVzIG9uIHBhcnRpdGlvbmVkCiAgICAgIHRhYmxlcyBzbyB0 aGF0IHRoZXkgYXJlIGFwcGxpZWQgYXV0b21hdGljYWxseSB0byB0aGUgZW50aXJlIGhpZXJh cmNoeS4KICAgICAgVGhpcyBjYW4gYmUgdmVyeSBjb252ZW5pZW50IGFzIG5vdCBvbmx5IHdp bGwgYWxsIGV4aXN0aW5nIHBhcnRpdGlvbnMgYmUKLSAgICAgaW5kZXhlZCwgYnV0IGFueSBm dXR1cmUgcGFydGl0aW9ucyB3aWxsIGJlIGFzIHdlbGwuICBIb3dldmVyLCBvbmUKLSAgICAg bGltaXRhdGlvbiB3aGVuIGNyZWF0aW5nIG5ldyBpbmRleGVzIG9uIHBhcnRpdGlvbmVkIHRh YmxlcyBpcyB0aGF0IGl0Ci0gICAgIGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgdGhlIDxsaXRl cmFsPkNPTkNVUlJFTlRMWTwvbGl0ZXJhbD4KLSAgICAgcXVhbGlmaWVyLCB3aGljaCBjb3Vs ZCBsZWFkIHRvIGxvbmcgbG9jayB0aW1lcy4gIFRvIGF2b2lkIHRoaXMsIHlvdSBjYW4KLSAg ICAgdXNlIDxjb21tYW5kPkNSRUFURSBJTkRFWCBPTiBPTkxZPC9jb21tYW5kPiB0aGUgcGFy dGl0aW9uZWQgdGFibGUsIHdoaWNoCisgICAgIGluZGV4ZWQsIGJ1dCBhbnkgZnV0dXJlIHBh cnRpdGlvbnMgd2lsbCBiZSBhcyB3ZWxsLiBGb3IgbW9yZSBjb250cm9sIG92ZXIKKyAgICAg bG9ja2luZyBvZiB0aGUgcGFydGl0aW9ucyB5b3UgY2FuIHVzZSA8Y29tbWFuZD5DUkVBVEUg SU5ERVggT04gT05MWTwvY29tbWFuZD4KKyAgICAgb24gdGhlIHBhcnRpdGlvbmVkIHRhYmxl LCB3aGljaAogICAgICBjcmVhdGVzIHRoZSBuZXcgaW5kZXggbWFya2VkIGFzIGludmFsaWQs IHByZXZlbnRpbmcgYXV0b21hdGljIGFwcGxpY2F0aW9uCiAgICAgIHRvIGV4aXN0aW5nIHBh cnRpdGlvbnMuICBJbnN0ZWFkLCBpbmRleGVzIGNhbiB0aGVuIGJlIGNyZWF0ZWQgaW5kaXZp ZHVhbGx5Ci0gICAgIG9uIGVhY2ggcGFydGl0aW9uIHVzaW5nIDxsaXRlcmFsPkNPTkNVUlJF TlRMWTwvbGl0ZXJhbD4gYW5kCisgICAgIG9uIGVhY2ggcGFydGl0aW9uIGFuZAogICAgICA8 Zmlyc3R0ZXJtPmF0dGFjaGVkPC9maXJzdHRlcm0+IHRvIHRoZSBwYXJ0aXRpb25lZCBpbmRl eCBvbiB0aGUgcGFyZW50CiAgICAgIHVzaW5nIDxjb21tYW5kPkFMVEVSIElOREVYIC4uLiBB VFRBQ0ggUEFSVElUSU9OPC9jb21tYW5kPi4gIE9uY2UgaW5kZXhlcyBmb3IKICAgICAgYWxs IHRoZSBwYXJ0aXRpb25zIGFyZSBhdHRhY2hlZCB0byB0aGUgcGFyZW50IGluZGV4LCB0aGUg cGFyZW50IGluZGV4IHdpbGwKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X2luZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCmluZGV4 IDYyMWJjMGUyNTMuLjIzNjZjZmQ5YjUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXgu c2dtbApAQCAtNjQ1LDcgKzY0NSwxMCBAQCBDUkVBVEUgWyBVTklRVUUgXSBJTkRFWCBbIENP TkNVUlJFTlRMWSBdIFsgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPQog ICAgPHBhcmE+CiAgICAgSWYgYSBwcm9ibGVtIGFyaXNlcyB3aGlsZSBzY2FubmluZyB0aGUg dGFibGUsIHN1Y2ggYXMgYSBkZWFkbG9jayBvciBhCiAgICAgdW5pcXVlbmVzcyB2aW9sYXRp b24gaW4gYSB1bmlxdWUgaW5kZXgsIHRoZSA8Y29tbWFuZD5DUkVBVEUgSU5ERVg8L2NvbW1h bmQ+Ci0gICAgY29tbWFuZCB3aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+ aW52YWxpZDwvcXVvdGU+IGluZGV4LiBUaGlzIGluZGV4CisgICAgY29tbWFuZCB3aWxsIGZh aWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4Lgor ICAgIElmIHRoaXMgaGFwcGVucyB3aGlsZSBidWlsZCBhbiBpbmRleCBjb25jdXJyZW50bHkg b24gYSBwYXJ0aXRpb25lZAorICAgIHRhYmxlLCB0aGUgY29tbWFuZCBjYW4gYWxzbyBsZWF2 ZSBiZWhpbmQgPHF1b3RlPnZhbGlkPC9xdW90ZT4gb3IKKyAgICA8cXVvdGU+aW52YWxpZDwv cXVvdGU+IGluZGV4ZXMgb24gdGFibGUgcGFydGl0aW9ucy4gIFRoZSBpbnZhbGlkIGluZGV4 CiAgICAgd2lsbCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcyBiZWNhdXNlIGl0 IG1pZ2h0IGJlIGluY29tcGxldGU7CiAgICAgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1 bWUgdXBkYXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9u PgogICAgIDxjb21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0IHN1Y2gg YW4gaW5kZXggYXMgPGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD46CkBAIC02OTIsMTUgKzY5 NSw2IEBAIEluZGV4ZXM6CiAgICAgY2Fubm90LgogICAgPC9wYXJhPgogCi0gICA8cGFyYT4K LSAgICBDb25jdXJyZW50IGJ1aWxkcyBmb3IgaW5kZXhlcyBvbiBwYXJ0aXRpb25lZCB0YWJs ZXMgYXJlIGN1cnJlbnRseSBub3QKLSAgICBzdXBwb3J0ZWQuICBIb3dldmVyLCB5b3UgbWF5 IGNvbmN1cnJlbnRseSBidWlsZCB0aGUgaW5kZXggb24gZWFjaAotICAgIHBhcnRpdGlvbiBp bmRpdmlkdWFsbHkgYW5kIHRoZW4gZmluYWxseSBjcmVhdGUgdGhlIHBhcnRpdGlvbmVkIGlu ZGV4Ci0gICAgbm9uLWNvbmN1cnJlbnRseSBpbiBvcmRlciB0byByZWR1Y2UgdGhlIHRpbWUg d2hlcmUgd3JpdGVzIHRvIHRoZQotICAgIHBhcnRpdGlvbmVkIHRhYmxlIHdpbGwgYmUgbG9j a2VkIG91dC4gIEluIHRoaXMgY2FzZSwgYnVpbGRpbmcgdGhlCi0gICAgcGFydGl0aW9uZWQg aW5kZXggaXMgYSBtZXRhZGF0YSBvbmx5IG9wZXJhdGlvbi4KLSAgIDwvcGFyYT4KLQogICA8 L3JlZnNlY3QyPgogIDwvcmVmc2VjdDE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMK aW5kZXggMzA5Mzg5ZTIwZC4uZGNiNGVhODllOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhj bWRzLmMKQEAgLTk1LDYgKzk1LDExIEBAIHN0YXRpYyBjaGFyICpDaG9vc2VJbmRleE5hbWUo Y29uc3QgY2hhciAqdGFibmFtZSwgT2lkIG5hbWVzcGFjZUlkLAogCQkJCQkJCSBib29sIHBy aW1hcnksIGJvb2wgaXNjb25zdHJhaW50KTsKIHN0YXRpYyBjaGFyICpDaG9vc2VJbmRleE5h bWVBZGRpdGlvbihjb25zdCBMaXN0ICpjb2xuYW1lcyk7CiBzdGF0aWMgTGlzdCAqQ2hvb3Nl SW5kZXhDb2x1bW5OYW1lcyhjb25zdCBMaXN0ICppbmRleEVsZW1zKTsKK3N0YXRpYyB2b2lk IERlZmluZUluZGV4Q29uY3VycmVudEludGVybmFsKE9pZCByZWxhdGlvbklkLAorCQkJCQkJ CQkJCSAgT2lkIGluZGV4UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkgIEluZGV4SW5mbyAqaW5k ZXhJbmZvLAorCQkJCQkJCQkJCSAgTE9DS1RBRyBoZWFwbG9ja3RhZywKKwkJCQkJCQkJCQkg IExvY2tSZWxJZCBoZWFwcmVsaWQpOwogc3RhdGljIHZvaWQgUmVpbmRleEluZGV4KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBjb25zdCBSZWluZGV4UGFyYW1zICpwYXJhbXMsCiAJCQkJ CQkgYm9vbCBpc1RvcExldmVsKTsKIHN0YXRpYyB2b2lkIFJhbmdlVmFyQ2FsbGJhY2tGb3JS ZWluZGV4SW5kZXgoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLApAQCAtNTYxLDcgKzU2Niw2 IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCWJvb2wJCWFtaXNzdW1tYXJpemluZzsK IAlhbW9wdGlvbnNfZnVuY3Rpb24gYW1vcHRpb25zOwogCWJvb2wJCXBhcnRpdGlvbmVkOwot CWJvb2wJCXNhZmVfaW5kZXg7CiAJRGF0dW0JCXJlbG9wdGlvbnM7CiAJaW50MTYJICAgKmNv bG9wdGlvbnM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwpAQCAtNTY5LDEyICs1NzMsMTAg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJYml0czE2CQljb25zdHJfZmxhZ3M7CiAJ aW50CQkJbnVtYmVyT2ZBdHRyaWJ1dGVzOwogCWludAkJCW51bWJlck9mS2V5QXR0cmlidXRl czsKLQlUcmFuc2FjdGlvbklkIGxpbWl0WG1pbjsKIAlPYmplY3RBZGRyZXNzIGFkZHJlc3M7 CiAJTG9ja1JlbElkCWhlYXByZWxpZDsKIAlMT0NLVEFHCQloZWFwbG9ja3RhZzsKIAlMT0NL TU9ERQlsb2NrbW9kZTsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlPaWQJCQlyb290X3NhdmVf dXNlcmlkOwogCWludAkJCXJvb3Rfc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlyb290X3Nh dmVfbmVzdGxldmVsOwpAQCAtNzA2LDIwICs3MDgsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAkgKiBwYXJ0aXRpb24uCiAJICovCiAJcGFydGl0aW9uZWQgPSByZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFOwotCWlmIChwYXJ0aXRp b25lZCkKLQl7Ci0JCS8qCi0JCSAqIE5vdGU6IHdlIGNoZWNrICdzdG10LT5jb25jdXJyZW50 JyByYXRoZXIgdGhhbiAnY29uY3VycmVudCcsIHNvIHRoYXQKLQkJICogdGhlIGVycm9yIGlz IHRocm93biBhbHNvIGZvciB0ZW1wb3JhcnkgdGFibGVzLiAgU2VlbXMgYmV0dGVyIHRvIGJl Ci0JCSAqIGNvbnNpc3RlbnQsIGV2ZW4gdGhvdWdoIHdlIGNvdWxkIGRvIGl0IG9uIHRlbXBv cmFyeSB0YWJsZSBiZWNhdXNlCi0JCSAqIHdlJ3JlIG5vdCBhY3R1YWxseSBkb2luZyBpdCBj b25jdXJyZW50bHkuCi0JCSAqLwotCQlpZiAoc3RtdC0+Y29uY3VycmVudCkKLQkJCWVyZXBv cnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKLQkJCQkJIGVycm1zZygiY2Fubm90IGNyZWF0ZSBpbmRleCBvbiBwYXJ0aXRpb25lZCB0 YWJsZSBcIiVzXCIgY29uY3VycmVudGx5IiwKLQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKSkpOwotCX0KIAogCS8qCiAJICogRG9uJ3QgdHJ5IHRvIENSRUFURSBJTkRF WCBvbiB0ZW1wIHRhYmxlcyBvZiBvdGhlciBiYWNrZW5kcy4KQEAgLTExMTYsMTAgKzExMDQs NiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJfQogCX0KIAotCS8qIElzIGluZGV4 IHNhZmUgZm9yIG90aGVycyB0byBpZ25vcmU/ICBTZWUgc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKSAqLwotCXNhZmVfaW5kZXggPSBpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zID09IE5J TCAmJgotCQlpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSA9PSBOSUw7Ci0KIAkvKgogCSAqIFJl cG9ydCBpbmRleCBjcmVhdGlvbiBpZiBhcHByb3ByaWF0ZSAoZGVsYXkgdGhpcyB0aWxsIGFm dGVyIG1vc3Qgb2YgdGhlCiAJICogZXJyb3IgY2hlY2tzKQpAQCAtMTE4NCw2ICsxMTY4LDEx IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQlpZiAocGQtPm5wYXJ0cyAhPSAwKQog CQkJZmxhZ3MgfD0gSU5ERVhfQ1JFQVRFX0lOVkFMSUQ7CiAJfQorCWVsc2UgaWYgKGNvbmN1 cnJlbnQgJiYgT2lkSXNWYWxpZChwYXJlbnRJbmRleElkKSkKKwl7CisJCS8qIElmIGNvbmN1 cnJlbnQsIGluaXRpYWxseSBidWlsZCBpbmRleCBwYXJ0aXRpb25zIGFzICJpbnZhbGlkIiAq LworCQlmbGFncyB8PSBJTkRFWF9DUkVBVEVfSU5WQUxJRDsKKwl9CiAKIAlpZiAoc3RtdC0+ ZGVmZXJyYWJsZSkKIAkJY29uc3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfREVG RVJSQUJMRTsKQEAgLTE1MzMsMjEgKzE1MjIsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAkJCSAqLwogCQkJaWYgKGludmFsaWRhdGVfcGFyZW50KQogCQkJewotCQkJCVJlbGF0 aW9uCXBnX2luZGV4ID0gdGFibGVfb3BlbihJbmRleFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOwotCQkJCUhlYXBUdXBsZQl0dXAsCi0JCQkJCQkJbmV3dHVwOwotCi0JCQkJdHVw ID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsCi0JCQkJCQkJCQkgIE9iamVjdElkR2V0 RGF0dW0oaW5kZXhSZWxhdGlvbklkKSk7Ci0JCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1 cCkpCi0JCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBpbmRleCAl dSIsCi0JCQkJCQkgaW5kZXhSZWxhdGlvbklkKTsKLQkJCQluZXd0dXAgPSBoZWFwX2NvcHl0 dXBsZSh0dXApOwotCQkJCSgoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKG5ld3R1cCkpLT5p bmRpc3ZhbGlkID0gZmFsc2U7Ci0JCQkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2luZGV4LCAm dHVwLT50X3NlbGYsIG5ld3R1cCk7Ci0JCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7Ci0JCQkJ dGFibGVfY2xvc2UocGdfaW5kZXgsIFJvd0V4Y2x1c2l2ZUxvY2spOwotCQkJCWhlYXBfZnJl ZXR1cGxlKG5ld3R1cCk7CisJCQkJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVsYXRp b25JZCwgSU5ERVhfRFJPUF9DTEVBUl9WQUxJRCk7CiAKIAkJCQkvKgogCQkJCSAqIENDSSBo ZXJlIHRvIG1ha2UgdGhpcyB1cGRhdGUgdmlzaWJsZSwgaW4gY2FzZSB0aGlzIHJlY3Vyc2Vz CkBAIC0xNTU5LDM3ICsxNTM0LDQ5IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCiAJ CS8qCiAJCSAqIEluZGV4ZXMgb24gcGFydGl0aW9uZWQgdGFibGVzIGFyZSBub3QgdGhlbXNl bHZlcyBidWlsdCwgc28gd2UncmUKLQkJICogZG9uZSBoZXJlLgorCQkgKiBkb25lIGhlcmUg aW4gdGhlIG5vbi1jb25jdXJyZW50IGNhc2UuCiAJCSAqLwotCQlBdEVPWGFjdF9HVUMoZmFs c2UsIHJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOwotCQlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHJv b3Rfc2F2ZV91c2VyaWQsIHJvb3Rfc2F2ZV9zZWNfY29udGV4dCk7Ci0JCXRhYmxlX2Nsb3Nl KHJlbCwgTm9Mb2NrKTsKLQkJaWYgKCFPaWRJc1ZhbGlkKHBhcmVudEluZGV4SWQpKQotCQkJ cGdzdGF0X3Byb2dyZXNzX2VuZF9jb21tYW5kKCk7Ci0JCWVsc2UKKwkJaWYgKCFjb25jdXJy ZW50KQogCQl7Ci0JCQkvKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIGFuIGludGVybWVkaWF0ZSBw YXJ0aXRpb25lZCBpbmRleCBpdHNlbGYgKi8KLQkJCXBnc3RhdF9wcm9ncmVzc19pbmNyX3Bh cmFtKFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX0RPTkUsIDEpOwotCQl9CisJCQlB dEVPWGFjdF9HVUMoZmFsc2UsIHJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOworCQkJU2V0VXNlcklk QW5kU2VjQ29udGV4dChyb290X3NhdmVfdXNlcmlkLCByb290X3NhdmVfc2VjX2NvbnRleHQp OworCQkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCi0JCXJldHVybiBhZGRyZXNzOwor CQkJaWYgKCFPaWRJc1ZhbGlkKHBhcmVudEluZGV4SWQpKQorCQkJCXBnc3RhdF9wcm9ncmVz c19lbmRfY29tbWFuZCgpOworCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogVXBkYXRl IHByb2dyZXNzIGZvciBhbiBpbnRlcm1lZGlhdGUgcGFydGl0aW9uZWQgaW5kZXgKKwkJCQkg KiBpdHNlbGYKKwkJCQkgKi8KKwkJCQlwZ3N0YXRfcHJvZ3Jlc3NfaW5jcl9wYXJhbShQUk9H UkVTU19DUkVBVEVJRFhfUEFSVElUSU9OU19ET05FLCAxKTsKKwkJCX0KKworCQkJcmV0dXJu IGFkZHJlc3M7CisJCX0KIAl9CiAKIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHJvb3Rfc2F2ZV9u ZXN0bGV2ZWwpOwogCVNldFVzZXJJZEFuZFNlY0NvbnRleHQocm9vdF9zYXZlX3VzZXJpZCwg cm9vdF9zYXZlX3NlY19jb250ZXh0KTsKIAotCWlmICghY29uY3VycmVudCkKKwkvKgorCSAq IEFsbCBkb25lIGluIHRoZSBub24tY29uY3VycmVudCBjYXNlLCBhbmQgd2hlbiBidWlsZGlu ZyBjYXRhbG9nIGVudHJpZXMKKwkgKiBvZiBwYXJ0aXRpb25zIGZvciBDSUMuCisJICovCisJ aWYgKCFjb25jdXJyZW50IHx8IE9pZElzVmFsaWQocGFyZW50SW5kZXhJZCkpCiAJewotCQkv KiBDbG9zZSB0aGUgaGVhcCBhbmQgd2UncmUgZG9uZSwgaW4gdGhlIG5vbi1jb25jdXJyZW50 IGNhc2UgKi8KIAkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCiAJCS8qCiAJCSAqIElm IHRoaXMgaXMgdGhlIHRvcC1sZXZlbCBpbmRleCwgdGhlIGNvbW1hbmQgaXMgZG9uZSBvdmVy YWxsOwotCQkgKiBvdGhlcndpc2UsIGluY3JlbWVudCBwcm9ncmVzcyB0byByZXBvcnQgb25l IGNoaWxkIGluZGV4IGlzIGRvbmUuCisJCSAqIG90aGVyd2lzZSAod2hlbiBiZWluZyBjYWxs ZWQgcmVjdXJzaXZlbHkpLCBpbmNyZW1lbnQgcHJvZ3Jlc3MgdG8KKwkJICogcmVwb3J0IHRo YXQgb25lIGNoaWxkIGluZGV4IGlzIGRvbmUuICBFeGNlcHQgaW4gdGhlIGNvbmN1cnJlbnQK KwkJICogKGNhdGFsb2ctb25seSkgY2FzZSwgd2hpY2ggaXMgaGFuZGxlZCBsYXRlci4KIAkJ ICovCiAJCWlmICghT2lkSXNWYWxpZChwYXJlbnRJbmRleElkKSkKIAkJCXBnc3RhdF9wcm9n cmVzc19lbmRfY29tbWFuZCgpOwotCQllbHNlCisJCWVsc2UgaWYgKCFjb25jdXJyZW50KQog CQkJcGdzdGF0X3Byb2dyZXNzX2luY3JfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BBUlRJ VElPTlNfRE9ORSwgMSk7CiAKIAkJcmV0dXJuIGFkZHJlc3M7CkBAIC0xNjAwLDYgKzE1ODcs MTQxIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCVNFVF9MT0NLVEFHX1JFTEFUSU9O KGhlYXBsb2NrdGFnLCBoZWFwcmVsaWQuZGJJZCwgaGVhcHJlbGlkLnJlbElkKTsKIAl0YWJs ZV9jbG9zZShyZWwsIE5vTG9jayk7CiAKKwlpZiAoIXBhcnRpdGlvbmVkKQorCXsKKwkJLyog Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBvbiBhIG5vbnBhcnRpdGlvbmVkIHRhYmxlICov CisJCURlZmluZUluZGV4Q29uY3VycmVudEludGVybmFsKHRhYmxlSWQsIGluZGV4UmVsYXRp b25JZCwKKwkJCQkJCQkJCSAgaW5kZXhJbmZvLCBoZWFwbG9ja3RhZywgaGVhcHJlbGlkKTsK KwkJcGdzdGF0X3Byb2dyZXNzX2VuZF9jb21tYW5kKCk7CisJCXJldHVybiBhZGRyZXNzOwor CX0KKwllbHNlCisJeworCQkvKgorCQkgKiBGb3IgQ0lDIG9uIGEgcGFydGl0aW9uZWQgdGFi bGUsIGZpbmlzaCBieSBidWlsZGluZyBpbmRleGVzIG9uCisJCSAqIHBhcnRpdGlvbnMKKwkJ ICovCisKKwkJTGlzdENlbGwgICAqbGM7CisJCUxpc3QJICAgKmNoaWxkczsKKwkJTGlzdAkg ICAqdG9zZXR2YWxpZCA9IE5JTDsKKwkJTWVtb3J5Q29udGV4dCBjaWNfY29udGV4dCwKKwkJ CQkJb2xkX2NvbnRleHQ7CisKKwkJLyogQ3JlYXRlIHNwZWNpYWwgbWVtb3J5IGNvbnRleHQg Zm9yIGNyb3NzLXRyYW5zYWN0aW9uIHN0b3JhZ2UgKi8KKwkJY2ljX2NvbnRleHQgPSBBbGxv Y1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwKKwkJCQkJCQkJCQkJIkNyZWF0ZSBp bmRleCBjb25jdXJyZW50bHkiLAorCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVT KTsKKworCQlvbGRfY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjaWNfY29udGV4 dCk7CisJCWNoaWxkcyA9IGZpbmRfYWxsX2luaGVyaXRvcnMoaW5kZXhSZWxhdGlvbklkLCBT aGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2ssIE5VTEwpOworCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkX2NvbnRleHQpOworCisJCWZvcmVhY2gobGMsIGNoaWxkcykKKwkJeworCQkJT2lk CQkJaW5kcmVsaWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJCU9pZAkJCXRhYnJlbGlkOworCQkJ Y2hhcgkJcmVsa2luZDsKKworCQkJLyoKKwkJCSAqIFBhcnRpdGlvbiBjb3VsZCBoYXZlIGJl ZW4gZHJvcHBlZCwgc2luY2Ugd2UgbG9va2VkIGl0IHVwLiBJbgorCQkJICogdGhpcyBjYXNl IGNvbnNpZGVyIGl0IGRvbmUgYW5kIGdvIHRvIHRoZSBuZXh0IG9uZS4KKwkJCSAqLworCQkJ dGFicmVsaWQgPSBJbmRleEdldFJlbGF0aW9uKGluZHJlbGlkLCB0cnVlKTsKKwkJCWlmICgh dGFicmVsaWQpCisJCQl7CisJCQkJcGdzdGF0X3Byb2dyZXNzX2luY3JfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BBUlRJVElPTlNfRE9ORSwgMSk7CisJCQkJY29udGludWU7CisJCQl9 CisJCQlyZWwgPSB0cnlfdGFibGVfb3Blbih0YWJyZWxpZCwgU2hhcmVVcGRhdGVFeGNsdXNp dmVMb2NrKTsKKwkJCWlmICghcmVsKQorCQkJeworCQkJCXBnc3RhdF9wcm9ncmVzc19pbmNy X3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX0RPTkUsIDEpOworCQkJCWNv bnRpbnVlOworCQkJfQorCisJCQkvKgorCQkJICogUHJlLWV4aXN0aW5nIHBhcnRpdGlvbnMg d2hpY2ggd2VyZSBBVFRBQ0hFRCB3ZXJlIGFscmVhZHkKKwkJCSAqIGNvdW50ZWQgaW4gdGhl IHByb2dyZXNzIHJlcG9ydC4KKwkJCSAqLworCQkJaWYgKGdldF9pbmRleF9pc3ZhbGlkKGlu ZHJlbGlkKSkKKwkJCXsKKwkJCQl0YWJsZV9jbG9zZShyZWwsIFNoYXJlVXBkYXRlRXhjbHVz aXZlTG9jayk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCS8qCisJCQkgKiBQYXJ0aXRp b25lZCBpbmRleGVzIGFyZSBjb3VudGVkIGluIHRoZSBwcm9ncmVzcyByZXBvcnQsIGJ1dAor CQkJICogZG9uJ3QgbmVlZCB0byBiZSBmdXJ0aGVyIHByb2Nlc3NlZC4KKwkJCSAqLworCQkJ cmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChpbmRyZWxpZCk7CisJCQlpZiAoIVJFTEtJTkRf SEFTX1NUT1JBR0UocmVsa2luZCkpCisJCQl7CisJCQkJLyogVGhlIHRvcGxldmVsIGluZGV4 IGRvZXNuJ3QgY291bnQgdG93YXJkcyAicGFydGl0aW9ucyBkb25lIiAqLworCQkJCWlmIChp bmRyZWxpZCAhPSBpbmRleFJlbGF0aW9uSWQpCisJCQkJCXBnc3RhdF9wcm9ncmVzc19pbmNy X3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX0RPTkUsIDEpOworCisJCQkJ LyoKKwkJCQkgKiBCdWlsZCB1cCBhIGxpc3Qgb2YgYWxsIHRoZSBpbnRlcm1lZGlhdGUgcGFy dGl0aW9uZWQgdGFibGVzCisJCQkJICogd2hpY2ggd2lsbCBsYXRlciBuZWVkIHRvIGJlIHNl dCB2YWxpZC4KKwkJCQkgKi8KKwkJCQlvbGRfY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhjaWNfY29udGV4dCk7CisJCQkJdG9zZXR2YWxpZCA9IGxhcHBlbmRfb2lkKHRvc2V0 dmFsaWQsIGluZHJlbGlkKTsKKwkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkX2NvbnRl eHQpOworCQkJCXRhYmxlX2Nsb3NlKHJlbCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsK KwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJaGVhcHJlbGlkID0gcmVsLT5yZF9sb2NrSW5m by5sb2NrUmVsSWQ7CisKKwkJCS8qCisJCQkgKiBDbG9zZSB0aGUgdGFibGUgYnV0IHJldGFp biB0aGUgbG9jaywgdGhhdCBzaG91bGQgYmUgZXh0ZW5kZWQgdG8KKwkJCSAqIHNlc3Npb24g bGV2ZWwgaW4gRGVmaW5lSW5kZXhDb25jdXJyZW50SW50ZXJuYWwuCisJCQkgKi8KKwkJCXRh YmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwkJCVNFVF9MT0NLVEFHX1JFTEFUSU9OKGhlYXBs b2NrdGFnLCBoZWFwcmVsaWQuZGJJZCwgaGVhcHJlbGlkLnJlbElkKTsKKworCQkJLyogUHJv Y2VzcyBlYWNoIHBhcnRpdGlvbiBpbiBhIHNlcGFyYXRlIHRyYW5zYWN0aW9uICovCisJCQlE ZWZpbmVJbmRleENvbmN1cnJlbnRJbnRlcm5hbCh0YWJyZWxpZCwgaW5kcmVsaWQsIGluZGV4 SW5mbywKKwkJCQkJCQkJCQkgIGhlYXBsb2NrdGFnLCBoZWFwcmVsaWQpOworCisJCQlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCXBnc3RhdF9w cm9ncmVzc19pbmNyX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX0RPTkUs IDEpOworCQl9CisKKwkJLyogU2V0IGFzIHZhbGlkIGFsbCBwYXJ0aXRpb25lZCBpbmRleGVz LCBpbmNsdWRpbmcgdGhlIHBhcmVudCAqLworCQlmb3JlYWNoKGxjLCB0b3NldHZhbGlkKQor CQl7CisJCQlPaWQJCQlpbmRyZWxpZCA9IGxmaXJzdF9vaWQobGMpOworCQkJUmVsYXRpb24J aW5kcmVsID0gdHJ5X2luZGV4X29wZW4oaW5kcmVsaWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZl TG9jayk7CisKKwkJCWlmICghaW5kcmVsKQorCQkJCWNvbnRpbnVlOworCQkJaW5kZXhfc2V0 X3N0YXRlX2ZsYWdzKGluZHJlbGlkLCBJTkRFWF9DUkVBVEVfU0VUX1JFQURZKTsKKwkJCUNv bW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCQlpbmRleF9zZXRfc3RhdGVfZmxhZ3MoaW5k cmVsaWQsIElOREVYX0NSRUFURV9TRVRfVkFMSUQpOworCQkJaW5kZXhfY2xvc2UoaW5kcmVs LCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQl9CisKKwkJTWVtb3J5Q29udGV4dERl bGV0ZShjaWNfY29udGV4dCk7CisJCXBnc3RhdF9wcm9ncmVzc19lbmRfY29tbWFuZCgpOwor CQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQlyZXR1cm4gYWRkcmVzczsKKwl9Cit9CisKKwor c3RhdGljIHZvaWQKK0RlZmluZUluZGV4Q29uY3VycmVudEludGVybmFsKE9pZCB0YWJsZUlk LCBPaWQgaW5kZXhSZWxhdGlvbklkLCBJbmRleEluZm8gKmluZGV4SW5mbywKKwkJCQkJCQkg IExPQ0tUQUcgaGVhcGxvY2t0YWcsIExvY2tSZWxJZCBoZWFwcmVsaWQpCit7CisJVHJhbnNh Y3Rpb25JZCBsaW1pdFhtaW47CisJU25hcHNob3QJc25hcHNob3Q7CisKKwkvKiBJcyBpbmRl eCBzYWZlIGZvciBvdGhlcnMgdG8gaWdub3JlPyAgU2VlIHNldF9pbmRleHNhZmVfcHJvY2Zs YWdzKCkgKi8KKwlib29sCQlzYWZlX2luZGV4ID0gaW5kZXhJbmZvLT5paV9FeHByZXNzaW9u cyA9PSBOSUwgJiYKKwkJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgPT0gTklMOworCiAJLyoK IAkgKiBGb3IgYSBjb25jdXJyZW50IGJ1aWxkLCBpdCdzIGltcG9ydGFudCB0byBtYWtlIHRo ZSBjYXRhbG9nIGVudHJpZXMKIAkgKiB2aXNpYmxlIHRvIG90aGVyIHRyYW5zYWN0aW9ucyBi ZWZvcmUgd2Ugc3RhcnQgdG8gYnVpbGQgdGhlIGluZGV4LiBUaGF0CkBAIC0xNzk1LDEwICsx OTE3LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogTGFzdCB0aGluZyB0byBk byBpcyByZWxlYXNlIHRoZSBzZXNzaW9uLWxldmVsIGxvY2sgb24gdGhlIHBhcmVudCB0YWJs ZS4KIAkgKi8KIAlVbmxvY2tSZWxhdGlvbklkRm9yU2Vzc2lvbigmaGVhcHJlbGlkLCBTaGFy ZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwotCi0JcGdzdGF0X3Byb2dyZXNzX2VuZF9jb21tYW5k KCk7Ci0KLQlyZXR1cm4gYWRkcmVzczsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9p c29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uZWQtY2ljLm91dCBiL3NyYy90ZXN0L2lzb2xh dGlvbi9leHBlY3RlZC9wYXJ0aXRpb25lZC1jaWMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLmI2NmFjYzZmNmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uZWQtY2ljLm91dApAQCAtMCwwICsx LDEzNSBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDMgc2Vzc2lvbnMKKworc3RhcnRpbmcg cGVybXV0YXRpb246IGxvY2tfcDEgY2ljIGluc2VydCBkcm9wMiBjb21taXQgY2hrX2NvbnRl bnQKK3N0ZXAgbG9ja19wMTogbG9jayBjaWN0YWJfcGFydF8xIGluIHJvdyBleGNsdXNpdmUg bW9kZTsKK3N0ZXAgY2ljOiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIE9OIGNpY3RhYihp KTsgPHdhaXRpbmcgLi4uPgorc3RlcCBpbnNlcnQ6IGluc2VydCBpbnRvIGNpY3RhYiB2YWx1 ZXMgKDEsIDEpLCAoMTEsIDEpOworc3RlcCBkcm9wMjogRFJPUCBUQUJMRSBjaWN0YWJfcGFy dF8yOworc3RlcCBjb21taXQ6IENPTU1JVDsKK3N0ZXAgY2ljOiA8Li4uIGNvbXBsZXRlZD4K K3N0ZXAgY2hrX2NvbnRlbnQ6IAorICBzZXQgZW5hYmxlX3NlcXNjYW4gdG8gb2ZmOworICBl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gY2ljdGFiIHdoZXJlIGkgPiAwOwor ICBzZWxlY3QgKiBmcm9tIGNpY3RhYiB3aGVyZSBpID4gMDsKKworUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0luZGV4IFNjYW4gdXNpbmcgY2ljdGFiX3BhcnRfMV9pX2lkeCBvbiBjaWN0YWJfcGFydF8x IGNpY3RhYgorICBJbmRleCBDb25kOiAoaSA+IDApICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisoMiByb3dzKQorCitpfGoKKy0rLQorMXwwCisxfDEKKygyIHJv d3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGxvY2tfcDIgY2ljIGluc2VydCBkcm9w MSBjb21taXQgY2hrX2NvbnRlbnQKK3N0ZXAgbG9ja19wMjogbG9jayBjaWN0YWJfcGFydF8y IGluIHJvdyBleGNsdXNpdmUgbW9kZTsKK3N0ZXAgY2ljOiBDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIE9OIGNpY3RhYihpKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBpbnNlcnQ6IGluc2Vy dCBpbnRvIGNpY3RhYiB2YWx1ZXMgKDEsIDEpLCAoMTEsIDEpOworc3RlcCBkcm9wMTogRFJP UCBUQUJMRSBjaWN0YWJfcGFydF8xOworc3RlcCBjb21taXQ6IENPTU1JVDsKK3N0ZXAgY2lj OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgY2hrX2NvbnRlbnQ6IAorICBzZXQgZW5hYmxlX3Nl cXNjYW4gdG8gb2ZmOworICBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gY2lj dGFiIHdoZXJlIGkgPiAwOworICBzZWxlY3QgKiBmcm9tIGNpY3RhYiB3aGVyZSBpID4gMDsK KworUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0luZGV4IFNjYW4gdXNpbmcgY2ljdGFiX3BhcnRfMl9pX2lk eCBvbiBjaWN0YWJfcGFydF8yIGNpY3RhYgorICBJbmRleCBDb25kOiAoaSA+IDApICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisoMiByb3dzKQorCisgaXxqCist LSstCisxMXwwCisxMXwxCisoMiByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBs b2NrX3AxIGNpYyBpbnNlcnQgZGV0YWNoMiBjb21taXQgY2hrX2NvbnRlbnQgY2hrX2NvbnRl bnRfcGFydDIKK3N0ZXAgbG9ja19wMTogbG9jayBjaWN0YWJfcGFydF8xIGluIHJvdyBleGNs dXNpdmUgbW9kZTsKK3N0ZXAgY2ljOiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIE9OIGNp Y3RhYihpKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBpbnNlcnQ6IGluc2VydCBpbnRvIGNpY3Rh YiB2YWx1ZXMgKDEsIDEpLCAoMTEsIDEpOworc3RlcCBkZXRhY2gyOiBBTFRFUiBUQUJMRSBj aWN0YWIgREVUQUNIIFBBUlRJVElPTiBjaWN0YWJfcGFydF8yOworc3RlcCBjb21taXQ6IENP TU1JVDsKK3N0ZXAgY2ljOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgY2hrX2NvbnRlbnQ6IAor ICBzZXQgZW5hYmxlX3NlcXNjYW4gdG8gb2ZmOworICBleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gY2ljdGFiIHdoZXJlIGkgPiAwOworICBzZWxlY3QgKiBmcm9tIGNpY3Rh YiB3aGVyZSBpID4gMDsKKworUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luZGV4IFNjYW4gdXNpbmcgY2lj dGFiX3BhcnRfMV9pX2lkeCBvbiBjaWN0YWJfcGFydF8xIGNpY3RhYgorICBJbmRleCBDb25k OiAoaSA+IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisoMiBy b3dzKQorCitpfGoKKy0rLQorMXwwCisxfDEKKygyIHJvd3MpCisKK3N0ZXAgY2hrX2NvbnRl bnRfcGFydDI6IAorICBzZXQgZW5hYmxlX3NlcXNjYW4gdG8gb2ZmOworICBleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gY2ljdGFiX3BhcnRfMiB3aGVyZSBpID4gMDsKKyAg c2VsZWN0ICogZnJvbSBjaWN0YWJfcGFydF8yIHdoZXJlIGkgPiAwOworCitRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luZGV4IFNj YW4gdXNpbmcgY2ljdGFiX3BhcnRfMl9pX2lkeCBvbiBjaWN0YWJfcGFydF8yCisgIEluZGV4 IENvbmQ6IChpID4gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKDIgcm93 cykKKworIGl8agorLS0rLQorMTF8MAorMTF8MQorKDIgcm93cykKKworCitzdGFydGluZyBw ZXJtdXRhdGlvbjogbG9ja19wMiBjaWMgaW5zZXJ0IGRldGFjaDEgY29tbWl0IGNoa19jb250 ZW50IGNoa19jb250ZW50X3BhcnQxCitzdGVwIGxvY2tfcDI6IGxvY2sgY2ljdGFiX3BhcnRf MiBpbiByb3cgZXhjbHVzaXZlIG1vZGU7CitzdGVwIGNpYzogQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBPTiBjaWN0YWIoaSk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgaW5zZXJ0OiBpbnNl cnQgaW50byBjaWN0YWIgdmFsdWVzICgxLCAxKSwgKDExLCAxKTsKK3N0ZXAgZGV0YWNoMTog QUxURVIgVEFCTEUgY2ljdGFiIERFVEFDSCBQQVJUSVRJT04gY2ljdGFiX3BhcnRfMTsKK3N0 ZXAgY29tbWl0OiBDT01NSVQ7CitzdGVwIGNpYzogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIGNo a19jb250ZW50OiAKKyAgc2V0IGVuYWJsZV9zZXFzY2FuIHRvIG9mZjsKKyAgZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGNpY3RhYiB3aGVyZSBpID4gMDsKKyAgc2VsZWN0 ICogZnJvbSBjaWN0YWIgd2hlcmUgaSA+IDA7CisKK1FVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbmRleCBT Y2FuIHVzaW5nIGNpY3RhYl9wYXJ0XzJfaV9pZHggb24gY2ljdGFiX3BhcnRfMiBjaWN0YWIK KyAgSW5kZXggQ29uZDogKGkgPiAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorKDIgcm93cykKKworIGl8agorLS0rLQorMTF8MAorMTF8MQorKDIgcm93cykK Kworc3RlcCBjaGtfY29udGVudF9wYXJ0MTogCisgIHNldCBlbmFibGVfc2Vxc2NhbiB0byBv ZmY7CisgIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBjaWN0YWJfcGFydF8x IHdoZXJlIGkgPiAwOworICBzZWxlY3QgKiBmcm9tIGNpY3RhYl9wYXJ0XzEgd2hlcmUgaSA+ IDA7CisKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorSW5kZXggU2NhbiB1c2luZyBjaWN0YWJfcGFydF8xX2lfaWR4IG9uIGNpY3Rh Yl9wYXJ0XzEKKyAgSW5kZXggQ29uZDogKGkgPiAwKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisoMiByb3dzKQorCitpfGoKKy0rLQorMXwwCisxfDEKKygyIHJvd3MpCisK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9z cmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCmluZGV4IDAzNDJlYjM5ZTQu LjU3Yjc5NDg2ODcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpA QCAtMTE0LDMgKzExNCw0IEBAIHRlc3Q6IHNlcmlhbGl6YWJsZS1wYXJhbGxlbC0yCiB0ZXN0 OiBzZXJpYWxpemFibGUtcGFyYWxsZWwtMwogdGVzdDogbWF0dmlldy13cml0ZS1za2V3CiB0 ZXN0OiBsb2NrLW5vd2FpdAordGVzdDogcGFydGl0aW9uZWQtY2ljCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uZWQtY2ljLnNwZWMgYi9zcmMvdGVz dC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uZWQtY2ljLnNwZWMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOTVmMGJiMmI0NwotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb25lZC1jaWMuc3BlYwpAQCAtMCww ICsxLDU3IEBACisjIFRlc3QgdGhlIGFiaWxpdHkgdG8gZHJvcC9kZXRhY2ggcGFydGl0aW9u cyB3aGlsZSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlzIHJ1bm5pbmcuCisjIFRvIGFj aGlldmUgdGhpcywgc3RhcnQgYSB0cmFuc2FjdGlvbiB0aGF0IHdpbGwgcGF1c2UgQ0lDIGlu IHByb2dyZXNzIGJ5CisjIGxvY2tpbmcgYSBwYXJ0aXRpb24gaW4gcm93IGV4Y2x1c2l2ZSBt b2RlLCBnaXZpbmcgdXMgYSBjaGFuZ2UgdG8gZHJvcC9kZXRhY2ggYW5vdGhlciBwYXJ0aXRp b24uCisjIERyb3BwaW5nL2RldGFjaGluZyBpcyB0ZXN0ZWQgZm9yIGVhY2ggcGFydGl0aW9u IHRvIHRlc3QgdHdvIHNjZW5hcmlvczoKKyMgd2hlbiB0aGUgcGFydGl0aW9uIGhhcyBhbHJl YWR5IGJlZW4gaW5kZXhlZCBhbmQgd2hlbiBpdCdzIHlldCB0byBiZSBpbmRleGVkLgorCitz ZXR1cCB7CisgIGNyZWF0ZSB0YWJsZSBjaWN0YWIoaSBpbnQsIGogaW50KSBwYXJ0aXRpb24g YnkgcmFuZ2UoaSk7CisgIGNyZWF0ZSB0YWJsZSBjaWN0YWJfcGFydF8xIHBhcnRpdGlvbiBv ZiBjaWN0YWIgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApOworICBjcmVhdGUgdGFibGUg Y2ljdGFiX3BhcnRfMiBwYXJ0aXRpb24gb2YgY2ljdGFiIGZvciB2YWx1ZXMgZnJvbSAoMTAp IHRvICgyMCk7CisKKyAgaW5zZXJ0IGludG8gY2ljdGFiIHZhbHVlcyAoMSwgMCksICgxMSwg MCk7Cit9CisKK3RlYXJkb3duIHsKKyAgICBkcm9wIHRhYmxlIGlmIGV4aXN0cyBjaWN0YWJf cGFydF8xOworICAgIGRyb3AgdGFibGUgaWYgZXhpc3RzIGNpY3RhYl9wYXJ0XzI7CisgICAg ZHJvcCB0YWJsZSBjaWN0YWI7Cit9CisKK3Nlc3Npb24gczEKK3NldHVwIHtCRUdJTjt9Citz dGVwIGxvY2tfcDEgeyBsb2NrIGNpY3RhYl9wYXJ0XzEgaW4gcm93IGV4Y2x1c2l2ZSBtb2Rl OyB9CitzdGVwIGxvY2tfcDIgeyBsb2NrIGNpY3RhYl9wYXJ0XzIgaW4gcm93IGV4Y2x1c2l2 ZSBtb2RlOyB9CitzdGVwIGNvbW1pdCB7IENPTU1JVDsgfQorCitzZXNzaW9uIHMyCitzdGVw IGNpYyB7IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgT04gY2ljdGFiKGkpOyB9CitzdGVw IGNoa19jb250ZW50IHsKKyAgc2V0IGVuYWJsZV9zZXFzY2FuIHRvIG9mZjsKKyAgZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGNpY3RhYiB3aGVyZSBpID4gMDsKKyAgc2Vs ZWN0ICogZnJvbSBjaWN0YWIgd2hlcmUgaSA+IDA7Cit9CisKK3N0ZXAgY2hrX2NvbnRlbnRf cGFydDEgeworICBzZXQgZW5hYmxlX3NlcXNjYW4gdG8gb2ZmOworICBleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gY2ljdGFiX3BhcnRfMSB3aGVyZSBpID4gMDsKKyAgc2Vs ZWN0ICogZnJvbSBjaWN0YWJfcGFydF8xIHdoZXJlIGkgPiAwOworfQorCitzdGVwIGNoa19j b250ZW50X3BhcnQyIHsKKyAgc2V0IGVuYWJsZV9zZXFzY2FuIHRvIG9mZjsKKyAgZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGNpY3RhYl9wYXJ0XzIgd2hlcmUgaSA+IDA7 CisgIHNlbGVjdCAqIGZyb20gY2ljdGFiX3BhcnRfMiB3aGVyZSBpID4gMDsKK30KKworc2Vz c2lvbiBzMworc3RlcCBkZXRhY2gxIHsgQUxURVIgVEFCTEUgY2ljdGFiIERFVEFDSCBQQVJU SVRJT04gY2ljdGFiX3BhcnRfMTsgfQorc3RlcCBkZXRhY2gyIHsgQUxURVIgVEFCTEUgY2lj dGFiIERFVEFDSCBQQVJUSVRJT04gY2ljdGFiX3BhcnRfMjsgfQorc3RlcCBkcm9wMSB7IERS T1AgVEFCTEUgY2ljdGFiX3BhcnRfMTsgfQorc3RlcCBkcm9wMiB7IERST1AgVEFCTEUgY2lj dGFiX3BhcnRfMjsgfQorc3RlcCBpbnNlcnQgeyBpbnNlcnQgaW50byBjaWN0YWIgdmFsdWVz ICgxLCAxKSwgKDExLCAxKTsgfQorCitwZXJtdXRhdGlvbiBsb2NrX3AxIGNpYyBpbnNlcnQg ZHJvcDIgY29tbWl0IGNoa19jb250ZW50CitwZXJtdXRhdGlvbiBsb2NrX3AyIGNpYyBpbnNl cnQgZHJvcDEgY29tbWl0IGNoa19jb250ZW50CitwZXJtdXRhdGlvbiBsb2NrX3AxIGNpYyBp bnNlcnQgZGV0YWNoMiBjb21taXQgY2hrX2NvbnRlbnQgY2hrX2NvbnRlbnRfcGFydDIKK3Bl cm11dGF0aW9uIGxvY2tfcDIgY2ljIGluc2VydCBkZXRhY2gxIGNvbW1pdCBjaGtfY29udGVu dCBjaGtfY29udGVudF9wYXJ0MQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9pbmRleGluZy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5n Lm91dAppbmRleCBmMjU3MjNkYTkyLi40NGE2Y2YzOWRmIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2luZGV4aW5nLm91dApAQCAtNTAsMTEgKzUwLDEzMCBAQCBzZWxlY3QgcmVs bmFtZSwgcmVsa2luZCwgcmVsaGFzc3ViY2xhc3MsIGluaHBhcmVudDo6cmVnY2xhc3MKICg4 IHJvd3MpCiAKIGRyb3AgdGFibGUgaWR4cGFydDsKLS0tIFNvbWUgdW5zdXBwb3J0ZWQgZmVh dHVyZXMKKy0tIENJQyBvbiBwYXJ0aXRpb25lZCB0YWJsZQogY3JlYXRlIHRhYmxlIGlkeHBh cnQgKGEgaW50LCBiIGludCwgYyB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEpOwotY3Jl YXRlIHRhYmxlIGlkeHBhcnQxIHBhcnRpdGlvbiBvZiBpZHhwYXJ0IGZvciB2YWx1ZXMgZnJv bSAoMCkgdG8gKDEwKTsKLWNyZWF0ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydCAo YSk7Ci1FUlJPUjogIGNhbm5vdCBjcmVhdGUgaW5kZXggb24gcGFydGl0aW9uZWQgdGFibGUg ImlkeHBhcnQiIGNvbmN1cnJlbnRseQorY3JlYXRlIHRhYmxlIGlkeHBhcnQxIHBhcnRpdGlv biBvZiBpZHhwYXJ0IGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwKSBwYXJ0aXRpb24gYnkg cmFuZ2UoYSk7CitjcmVhdGUgdGFibGUgaWR4cGFydDExIHBhcnRpdGlvbiBvZiBpZHhwYXJ0 MSBmb3IgdmFsdWVzIGZyb20gKDApIHRvICgxMCkgcGFydGl0aW9uIGJ5IHJhbmdlKGEpOwor Y3JlYXRlIHRhYmxlIGlkeHBhcnQxMTEgcGFydGl0aW9uIG9mIGlkeHBhcnQxMSBkZWZhdWx0 IHBhcnRpdGlvbiBieSByYW5nZShhKTsKK2NyZWF0ZSB0YWJsZSBpZHhwYXJ0MTExMSBwYXJ0 aXRpb24gb2YgaWR4cGFydDExMSBkZWZhdWx0IHBhcnRpdGlvbiBieSByYW5nZShhKTsKK2Ny ZWF0ZSB0YWJsZSBpZHhwYXJ0MiBwYXJ0aXRpb24gb2YgaWR4cGFydCBmb3IgdmFsdWVzIGZy b20gKDEwKSB0byAoMjApOworY3JlYXRlIHRhYmxlIGlkeHBhcnQzIHBhcnRpdGlvbiBvZiBp ZHhwYXJ0IGZvciB2YWx1ZXMgZnJvbSAoMzApIHRvICg0MCkgcGFydGl0aW9uIGJ5IHJhbmdl KGEpOworY3JlYXRlIHRhYmxlIGlkeHBhcnQzMSBwYXJ0aXRpb24gb2YgaWR4cGFydDMgZGVm YXVsdDsKK2luc2VydCBpbnRvIGlkeHBhcnQyIHZhbHVlcygxMCksKDEwKTsgLS0gbm90IHVu aXF1ZQorY3JlYXRlIGluZGV4IGNvbmN1cnJlbnRseSBvbiBpZHhwYXJ0MTEgKGEpOyAtLSBw YXJ0aXRpb25lZCBhbmQgcGFydGl0aW9uLCB3aXRoIG5vIGxlYXZlcworY3JlYXRlIGluZGV4 IGNvbmN1cnJlbnRseSBvbiBpZHhwYXJ0MSAoYSk7IC0tIHBhcnRpdGlvbmVkIGFuZCBwYXJ0 aXRpb24KK2NyZWF0ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydDIgKGEpOyAtLSBs ZWFmCitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBhcnQgKGEpOyAtLSBwYXJ0 aXRpb25lZAorY3JlYXRlIHVuaXF1ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydCAo YSk7IC0tIHBhcnRpdGlvbmVkLCB1bmlxdWUgZmFpbHVyZQorRVJST1I6ICBjb3VsZCBub3Qg Y3JlYXRlIHVuaXF1ZSBpbmRleCAiaWR4cGFydDJfYV9pZHgxIgorREVUQUlMOiAgS2V5IChh KT0oMTApIGlzIGR1cGxpY2F0ZWQuCitcZCBpZHhwYXJ0CisgICAgICAgIFBhcnRpdGlvbmVk IHRhYmxlICJwdWJsaWMuaWR4cGFydCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCisgYyAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0 aXRpb24ga2V5OiBSQU5HRSAoYSkKK0luZGV4ZXM6CisgICAgImlkeHBhcnRfYV9pZHgiIGJ0 cmVlIChhKQorICAgICJpZHhwYXJ0X2FfaWR4MSIgVU5JUVVFLCBidHJlZSAoYSkgSU5WQUxJ RAorTnVtYmVyIG9mIHBhcnRpdGlvbnM6IDMgKFVzZSBcZCsgdG8gbGlzdCB0aGVtLikKKwor XGQgaWR4cGFydDEKKyAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInB1YmxpYy5pZHhwYXJ0 MSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0 IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t CisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYiAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYyAgICAgIHwgdGV4dCAg ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IGlkeHBhcnQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMTApCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoYSkKK0lu ZGV4ZXM6CisgICAgImlkeHBhcnQxX2FfaWR4IiBidHJlZSAoYSkKKyAgICAiaWR4cGFydDFf YV9pZHgxIiBVTklRVUUsIGJ0cmVlIChhKSBJTlZBTElECitOdW1iZXIgb2YgcGFydGl0aW9u czogMSAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitcZCBpZHhwYXJ0MTEKKyAgICAgICBQ YXJ0aXRpb25lZCB0YWJsZSAicHVibGljLmlkeHBhcnQxMSIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCisgYyAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgCitQYXJ0aXRpb24gb2Y6IGlkeHBhcnQxIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEwKQorUGFydGl0aW9uIGtleTogUkFOR0UgKGEpCitJbmRleGVzOgorICAgICJpZHhwYXJ0 MTFfYV9pZHgiIGJ0cmVlIChhKQorICAgICJpZHhwYXJ0MTFfYV9pZHgxIiBVTklRVUUsIGJ0 cmVlIChhKSBJTlZBTElECitOdW1iZXIgb2YgcGFydGl0aW9uczogMSAoVXNlIFxkKyB0byBs aXN0IHRoZW0uKQorCitcZCBpZHhwYXJ0MTExCisgICAgICAgUGFydGl0aW9uZWQgdGFibGUg InB1YmxpYy5pZHhwYXJ0MTExIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK KyBjICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1BhcnRpdGlv biBvZjogaWR4cGFydDExIERFRkFVTFQKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChhKQorSW5k ZXhlczoKKyAgICAiaWR4cGFydDExMV9hX2lkeCIgYnRyZWUgKGEpCisgICAgImlkeHBhcnQx MTFfYV9pZHgxIiBVTklRVUUsIGJ0cmVlIChhKSBJTlZBTElECitOdW1iZXIgb2YgcGFydGl0 aW9uczogMSAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitcZCBpZHhwYXJ0MTExMQorICAg ICAgUGFydGl0aW9uZWQgdGFibGUgInB1YmxpYy5pZHhwYXJ0MTExMSIKKyBDb2x1bW4gfCAg VHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgYyAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IGlkeHBhcnQxMTEgREVGQVVMVAorUGFydGl0 aW9uIGtleTogUkFOR0UgKGEpCitJbmRleGVzOgorICAgICJpZHhwYXJ0MTExMV9hX2lkeCIg YnRyZWUgKGEpCisgICAgImlkeHBhcnQxMTExX2FfaWR4MSIgVU5JUVVFLCBidHJlZSAoYSkg SU5WQUxJRAorTnVtYmVyIG9mIHBhcnRpdGlvbnM6IDAKKworXGQgaWR4cGFydDIKKyAgICAg ICAgICAgICAgVGFibGUgInB1YmxpYy5pZHhwYXJ0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgCisgYyAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCitQYXJ0aXRpb24gb2Y6IGlkeHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KQorSW5kZXhlczoKKyAgICAiaWR4cGFydDJfYV9pZHgiIGJ0cmVlIChhKQorICAgICJpZHhw YXJ0Ml9hX2lkeDEiIFVOSVFVRSwgYnRyZWUgKGEpIElOVkFMSUQKKworXGQgaWR4cGFydDMK KyAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInB1YmxpYy5pZHhwYXJ0MyIKKyBDb2x1bW4g fCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYyAgICAgIHwgdGV4dCAgICB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IGlkeHBhcnQgRk9SIFZBTFVFUyBGUk9N ICgzMCkgVE8gKDQwKQorUGFydGl0aW9uIGtleTogUkFOR0UgKGEpCitJbmRleGVzOgorICAg ICJpZHhwYXJ0M19hX2lkeCIgYnRyZWUgKGEpCisgICAgImlkeHBhcnQzX2FfaWR4MSIgVU5J UVVFLCBidHJlZSAoYSkgSU5WQUxJRAorTnVtYmVyIG9mIHBhcnRpdGlvbnM6IDEgKFVzZSBc ZCsgdG8gbGlzdCB0aGVtLikKKworXGQgaWR4cGFydDMxCisgICAgICAgICAgICAgVGFibGUg InB1YmxpYy5pZHhwYXJ0MzEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor IGMgICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9u IG9mOiBpZHhwYXJ0MyBERUZBVUxUCitJbmRleGVzOgorICAgICJpZHhwYXJ0MzFfYV9pZHgi IGJ0cmVlIChhKQorICAgICJpZHhwYXJ0MzFfYV9pZHgxIiBVTklRVUUsIGJ0cmVlIChhKSBJ TlZBTElECisKIGRyb3AgdGFibGUgaWR4cGFydDsKIC0tIFZlcmlmeSBidWdmaXggd2l0aCBx dWVyeSBvbiBpbmRleGVkIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggbm8gcGFydGl0aW9ucwog LS0gaHR0cHM6Ly9wb3N0Z3IuZXMvbS8yMDE4MDEyNDE2MjAwNi5wbWFwZml6bmhnbmd3dGpm QGFsdmhlcnJlLnBnc3FsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRl eGluZy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwKaW5kZXggNWYx ZjRiODBjOS4uMzhhNzMwZDg3NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv aW5kZXhpbmcuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbApA QCAtMjksMTAgKzI5LDMwIEBAIHNlbGVjdCByZWxuYW1lLCByZWxraW5kLCByZWxoYXNzdWJj bGFzcywgaW5ocGFyZW50OjpyZWdjbGFzcwogCXdoZXJlIHJlbG5hbWUgbGlrZSAnaWR4cGFy dCUnIG9yZGVyIGJ5IHJlbG5hbWU7CiBkcm9wIHRhYmxlIGlkeHBhcnQ7CiAKLS0tIFNvbWUg dW5zdXBwb3J0ZWQgZmVhdHVyZXMKKy0tIENJQyBvbiBwYXJ0aXRpb25lZCB0YWJsZQogY3Jl YXRlIHRhYmxlIGlkeHBhcnQgKGEgaW50LCBiIGludCwgYyB0ZXh0KSBwYXJ0aXRpb24gYnkg cmFuZ2UgKGEpOwotY3JlYXRlIHRhYmxlIGlkeHBhcnQxIHBhcnRpdGlvbiBvZiBpZHhwYXJ0 IGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwKTsKLWNyZWF0ZSBpbmRleCBjb25jdXJyZW50 bHkgb24gaWR4cGFydCAoYSk7CitjcmVhdGUgdGFibGUgaWR4cGFydDEgcGFydGl0aW9uIG9m IGlkeHBhcnQgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApIHBhcnRpdGlvbiBieSByYW5n ZShhKTsKK2NyZWF0ZSB0YWJsZSBpZHhwYXJ0MTEgcGFydGl0aW9uIG9mIGlkeHBhcnQxIGZv ciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwKSBwYXJ0aXRpb24gYnkgcmFuZ2UoYSk7CitjcmVh dGUgdGFibGUgaWR4cGFydDExMSBwYXJ0aXRpb24gb2YgaWR4cGFydDExIGRlZmF1bHQgcGFy dGl0aW9uIGJ5IHJhbmdlKGEpOworY3JlYXRlIHRhYmxlIGlkeHBhcnQxMTExIHBhcnRpdGlv biBvZiBpZHhwYXJ0MTExIGRlZmF1bHQgcGFydGl0aW9uIGJ5IHJhbmdlKGEpOworY3JlYXRl IHRhYmxlIGlkeHBhcnQyIHBhcnRpdGlvbiBvZiBpZHhwYXJ0IGZvciB2YWx1ZXMgZnJvbSAo MTApIHRvICgyMCk7CitjcmVhdGUgdGFibGUgaWR4cGFydDMgcGFydGl0aW9uIG9mIGlkeHBh cnQgZm9yIHZhbHVlcyBmcm9tICgzMCkgdG8gKDQwKSBwYXJ0aXRpb24gYnkgcmFuZ2UoYSk7 CitjcmVhdGUgdGFibGUgaWR4cGFydDMxIHBhcnRpdGlvbiBvZiBpZHhwYXJ0MyBkZWZhdWx0 OworCitpbnNlcnQgaW50byBpZHhwYXJ0MiB2YWx1ZXMoMTApLCgxMCk7IC0tIG5vdCB1bmlx dWUKK2NyZWF0ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydDExIChhKTsgLS0gcGFy dGl0aW9uZWQgYW5kIHBhcnRpdGlvbiwgd2l0aCBubyBsZWF2ZXMKK2NyZWF0ZSBpbmRleCBj b25jdXJyZW50bHkgb24gaWR4cGFydDEgKGEpOyAtLSBwYXJ0aXRpb25lZCBhbmQgcGFydGl0 aW9uCitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBhcnQyIChhKTsgLS0gbGVh ZgorY3JlYXRlIGluZGV4IGNvbmN1cnJlbnRseSBvbiBpZHhwYXJ0IChhKTsgLS0gcGFydGl0 aW9uZWQKK2NyZWF0ZSB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBhcnQgKGEp OyAtLSBwYXJ0aXRpb25lZCwgdW5pcXVlIGZhaWx1cmUKK1xkIGlkeHBhcnQKK1xkIGlkeHBh cnQxCitcZCBpZHhwYXJ0MTEKK1xkIGlkeHBhcnQxMTEKK1xkIGlkeHBhcnQxMTExCitcZCBp ZHhwYXJ0MgorXGQgaWR4cGFydDMKK1xkIGlkeHBhcnQzMQogZHJvcCB0YWJsZSBpZHhwYXJ0 OwogCiAtLSBWZXJpZnkgYnVnZml4IHdpdGggcXVlcnkgb24gaW5kZXhlZCBwYXJ0aXRpb25l ZCB0YWJsZSB3aXRoIG5vIHBhcnRpdGlvbnMKLS0gCjIuNDMuMAoK --------------tQh0xnSqkt5Vfrhq0f0cObtu--