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 1sefvo-00AWwt-MW for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Aug 2024 19:14:45 +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 1sefuo-000jw7-I3 for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Aug 2024 19:13:42 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sefun-000jvt-Tb for pgsql-hackers@lists.postgresql.org; Thu, 15 Aug 2024 19:13:42 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sefuj-00529j-4M for pgsql-hackers@lists.postgresql.org; Thu, 15 Aug 2024 19:13:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1723749215; bh=0888GnykoTQdd4ejXSUEpmesrNijrV5ADMQ7ZSrtE+E=; h=Message-ID:Date:User-Agent:Subject:From:To:Cc:References: In-Reply-To:From; b=UpI67U7u5/bgdOZarIAOdUFjRO/dgJ7aC08YxrP4tMMk8c0eB9wK61IZ1P3esYpzI bcU2XBZAN/deKGL+iOeAyOo/z0AFdFHNp6QgfFuYJVzZq0rJCyiukdzr4t0QiC4lRY M9LJb7VHqBPqkTxbKyOxcbWy8EIeVBmEhAjUyYpbRz+VYi78VSlLsHLH71NzzQv+/i MuwpKd2XxKkCZY8u3g9A7oJUK7H3NGZZbF5ZttNOP3hQc7TpfjUTRlPteZwG0AbnIb Ij5/c1JRtKy7WSS9U05s5pgfBlD0RCh7tuvpKJTuN9qG1pYPA3CdWY/sCRDNClncRR w47FE7wNdBAOQ== Received: from [172.20.10.4] (unknown [89.113.150.53]) (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) (Client did not present a certificate) (Authenticated sender: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 2DD555FDFB; Thu, 15 Aug 2024 22:13:34 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------QtYpAuGvcTKQES4Z3B4hKtnU" Message-ID: Date: Thu, 15 Aug 2024 22:13:32 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes From: Alena Rybakina To: Alexander Korotkov Cc: Nikolay Shaplov , pgsql-hackers@lists.postgresql.org, Andrei Lepikhov , jian he , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , Marcos Pegoraro , teodor@sigaev.ru, Tomas Vondra , Peter Eisentraut , Ranier Vilela References: <567ED6CA.2040504@sigaev.ru> <8969055.VV5PYv0bhD@thinkpad-pgpro> <38289f6c-b8c0-4713-8fb5-703fe771872a@postgrespro.ru> <759292d5-cb51-4b12-89fa-576c1d9b374d@postgrespro.ru> <531fc0ab-371e-4235-97e3-dd2d077b6995@postgrespro.ru> Content-Language: en-US In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2024/08/15 16:44:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/08/15 17:46:00 #26323443 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------QtYpAuGvcTKQES4Z3B4hKtnU Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi! On 07.08.2024 04:11, Alexander Korotkov wrote: > On Mon, Aug 5, 2024 at 11:24 PM Alena Rybakina > wrote: >> Ok, thank you for your work) >> >> I think we can leave only the two added libraries in the first patch, >> others are superfluous. > Thank you. > I also have fixed some grammar issues. While reviewing the patch, I can't understand one part of the code where we check the comparability of restrictinfos. /* RestrictInfo parameters dmust match parent */         if (subRinfo->is_pushed_down != rinfo->is_pushed_down ||             subRinfo->is_clone != rinfo->is_clone ||             subRinfo->security_level != rinfo->security_level ||             !bms_equal(subRinfo->required_relids, rinfo->required_relids) ||             !bms_equal(subRinfo->incompatible_relids, rinfo->incompatible_relids) ||             !bms_equal(subRinfo->outer_relids, rinfo->outer_relids))             return NULL; I didn't find a place in the optimizer where required_relids, incompatible_relids and outer_relids become different. Each make_restrictinfo function takes arguments from parent data. I disabled this check and the regression tests passed. This code is needed for security verification, may I clarify? In the last patch I corrected the libraries - one of them was not in alphabetical order. -- Regards, Alena Rybakina Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --------------QtYpAuGvcTKQES4Z3B4hKtnU Content-Type: text/x-patch; charset=UTF-8; name="v34-0001-Transform-OR-clauses-to-SAOP-s-during-index-matching.patch" Content-Disposition: attachment; filename*0="v34-0001-Transform-OR-clauses-to-SAOP-s-during-index-matchin"; filename*1="g.patch" Content-Transfer-Encoding: base64 RnJvbSAwZDRlNGQ4OWYzMjQ5NmM2OTJjNDNlYzZiMmQ1YTMzYjkwNmY2Njk3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCA1IEF1ZyAyMDI0IDIxOjI3OjAyICswMzAwClN1 YmplY3Q6IFtQQVRDSCAxLzJdIFRyYW5zZm9ybSBPUi1jbGF1c2VzIHRvIFNBT1AncyBkdXJp bmcgaW5kZXggbWF0Y2hpbmcKClJlcGxhY2UgIihpbmRleGtleSBvcCBDMSkgT1IgKGluZGV4 a2V5IG9wIEMyKSAuLi4gKGluZGV4a2V5IG9wIENOKSIgd2l0aAoiaW5kZXhrZXkgb3AgQU5Z KEFSUkFZW0MxLCBDMiwgLi4uXSkiIChTY2FsYXJBcnJheU9wRXhwciBub2RlKSBkdXJpbmcg bWF0Y2hpbmcKYSBjbGF1c2UgdG8gaW5kZXguCgpIZXJlIENpIGlzIGFuIGktdGggY29uc3Rh bnQgb3IgcGFyYW1ldGVycyBleHByZXNzaW9uLCAnZXhwcicgaXMgbm9uLWNvbnN0YW50CmV4 cHJlc3Npb24sICdvcCcgaXMgYW4gb3BlcmF0b3Igd2hpY2ggcmV0dXJucyBib29sZWFuIHJl c3VsdCBhbmQgaGFzIGEgY29tbXV0ZXIKKGZvciB0aGUgY2FzZSBvZiByZXZlcnNlIG9yZGVy IG9mIGNvbnN0YW50IGFuZCBub24tY29uc3RhbnQgcGFydHMgb2YgdGhlCmV4cHJlc3Npb24s IGxpa2UgJ0NuIG9wIGV4cHInKS4KClRoaXMgdHJhbnNmb3JtYXRpb24gYWxsb3dzIGhhbmRs aW5nIGxvbmcgT1ItY2xhdXNlcyB3aXRoIHNpbmdsZSBJbmRleFNjYW4KYXZvaWRpbmcgc2xv d2VyIGJpdG1hcCBzY2Fucy4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNTY3 RUQ2Q0EuMjA0MDUwNCU0MHNpZ2Fldi5ydQpBdXRob3I6IEFsZW5hIFJ5YmFraW5hIDxsZW5h LnJpYmFja2luYUB5YW5kZXgucnU+CkF1dGhvcjogQW5kcmV5IExlcGlraG92IDxhLmxlcGlr aG92QHBvc3RncmVzcHJvLnJ1PgpSZXZpZXdlZC1ieTogUGV0ZXIgR2VvZ2hlZ2FuIDxwZ0Bi b3d0LmllPgpSZXZpZXdlZC1ieTogUmFuaWVyIFZpbGVsYSA8cmFuaWVyLnZmQGdtYWlsLmNv bT4KUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogSmlhbiBIZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZp ZXdlZC1ieTogVG9tIExhbmUgPHRnbEBzc3MucGdoLnBhLnVzPgpSZXZpZXdlZC1ieTogTmlr b2xheSBTaGFwbG92IDxkaHlhbkBuYXRhcmFqLnN1PgotLS0KIHNyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2luZHhwYXRoLmMgICAgICB8IDI1MyArKysrKysrKysrKysrKysrKysrKysK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCB8IDE4MyArKysr KysrKysrKysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgICAgICAg ICB8ICA1NyArKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAg ICAgIHwgIDQyICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsICAgICAgICAg ICAgICB8ICAgOSArCiA1IGZpbGVzIGNoYW5nZWQsIDUyMiBpbnNlcnRpb25zKCspLCAyMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9p bmR4cGF0aC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwppbmRl eCBjMGZjYzdkNzhkZi4uY2JmYjBmZGIzYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2luZHhwYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvaW5keHBhdGguYwpAQCAtMzIsOCArMzIsMTAgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIv cGF0aHMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcHJlcC5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9yZXN0cmljdGluZm8uaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgogI2luY2x1 ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCisj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogCiAvKiBYWFggc2VlIFBhcnRDb2xsTWF0 Y2hlc0V4cHJDb2xsICovCkBAIC0xNzcsNiArMTc5LDEwIEBAIHN0YXRpYyBJbmRleENsYXVz ZSAqbWF0Y2hfcm93Y29tcGFyZV90b19pbmRleGNvbChQbGFubmVySW5mbyAqcm9vdCwKIAkJ CQkJCQkJCQkJCSBSZXN0cmljdEluZm8gKnJpbmZvLAogCQkJCQkJCQkJCQkJIGludCBpbmRl eGNvbCwKIAkJCQkJCQkJCQkJCSBJbmRleE9wdEluZm8gKmluZGV4KTsKK3N0YXRpYyBJbmRl eENsYXVzZSAqbWF0Y2hfb3JjbGF1c2VfdG9faW5kZXhjb2woUGxhbm5lckluZm8gKnJvb3Qs CisJCQkJCQkJCQkJCSAgIFJlc3RyaWN0SW5mbyAqcmluZm8sCisJCQkJCQkJCQkJCSAgIGlu dCBpbmRleGNvbCwKKwkJCQkJCQkJCQkJICAgSW5kZXhPcHRJbmZvICppbmRleCk7CiBzdGF0 aWMgSW5kZXhDbGF1c2UgKmV4cGFuZF9pbmRleHF1YWxfcm93Y29tcGFyZShQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCQkJCVJlc3RyaWN0SW5mbyAqcmluZm8sCiAJCQkJCQkJCQkJ CQlpbnQgaW5kZXhjb2wsCkBAIC0yMjQ4LDYgKzIyNTQsMTAgQEAgbWF0Y2hfY2xhdXNlX3Rv X2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290LAogCXsKIAkJcmV0dXJuIG1hdGNoX3Jvd2Nv bXBhcmVfdG9faW5kZXhjb2wocm9vdCwgcmluZm8sIGluZGV4Y29sLCBpbmRleCk7CiAJfQor CWVsc2UgaWYgKHJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShyaW5mbykpCisJeworCQlyZXR1 cm4gbWF0Y2hfb3JjbGF1c2VfdG9faW5kZXhjb2wocm9vdCwgcmluZm8sIGluZGV4Y29sLCBp bmRleCk7CisJfQogCWVsc2UgaWYgKGluZGV4LT5hbXNlYXJjaG51bGxzICYmIElzQShjbGF1 c2UsIE51bGxUZXN0KSkKIAl7CiAJCU51bGxUZXN0ICAgKm50ID0gKE51bGxUZXN0ICopIGNs YXVzZTsKQEAgLTI3NzEsNiArMjc4MSwyNDkgQEAgbWF0Y2hfcm93Y29tcGFyZV90b19pbmRl eGNvbChQbGFubmVySW5mbyAqcm9vdCwKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIG1h dGNoX29yY2xhdXNlX3RvX2luZGV4Y29sKCkKKyAqCSAgSGFuZGxlcyB0aGUgT1ItZXhwciBj YXNlIGZvciBtYXRjaF9jbGF1c2VfdG9faW5kZXhjb2woKSBpbiB0aGUgY2FzZQorICoJICB3 aGVuIGl0IGNvdWxkIGJlIHRyYW5zZm9ybWVkIHRvIFNjYWxhckFycmF5T3BFeHByLgorICov CitzdGF0aWMgSW5kZXhDbGF1c2UgKgorbWF0Y2hfb3JjbGF1c2VfdG9faW5kZXhjb2woUGxh bm5lckluZm8gKnJvb3QsCisJCQkJCQkgICBSZXN0cmljdEluZm8gKnJpbmZvLAorCQkJCQkJ ICAgaW50IGluZGV4Y29sLAorCQkJCQkJICAgSW5kZXhPcHRJbmZvICppbmRleCkKK3sKKwlM aXN0Q2VsbCAgICpsYzsKKwlCb29sRXhwciAgICpvcmNsYXVzZSA9IChCb29sRXhwciAqKSBy aW5mby0+b3JjbGF1c2U7CisJTm9kZQkgICAqaW5kZXhFeHByID0gTlVMTDsKKwlMaXN0CSAg ICpjb25zdHMgPSBOSUw7CisJTm9kZQkgICAqYXJyYXlOb2RlID0gTlVMTDsKKwlTY2FsYXJB cnJheU9wRXhwciAqc2FvcGV4cHIgPSBOVUxMOworCUhlYXBUdXBsZQlvcGVydHVwOworCUZv cm1fcGdfb3BlcmF0b3Igb3BlcmZvcm07CisJT2lkCQkJbWF0Y2hPcG5vID0gSW52YWxpZE9p ZDsKKwlJbmRleENsYXVzZSAqaWNsYXVzZTsKKwlPaWQJCQljb25zdHR5cGUgPSBJbnZhbGlk T2lkOworCU9pZAkJCWFycmF5dHlwZSA9IEludmFsaWRPaWQ7CisJT2lkCQkJaW5wdXRjb2xs aWQgPSBJbnZhbGlkT2lkOworCWJvb2wJCWZpcnN0VGltZSA9IHRydWU7CisJYm9vbAkJaGF2 ZV9wYXJhbSA9IGZhbHNlOworCisJQXNzZXJ0KElzQShvcmNsYXVzZSwgQm9vbEV4cHIpKTsK KwlBc3NlcnQob3JjbGF1c2UtPmJvb2xvcCA9PSBPUl9FWFBSKTsKKworCS8qCisJICogSXRl cmF0ZSBvdmVyIE9SIGVudHJpZXMuICBDaGVjayB0aGF0IGVhY2ggT1IgZW50cnkgaXMgb2Yg dGhlIGZvcm06CisJICogKGluZGV4a2V5IG9wZXJhdG9yIGNvbnN0YW50KSBvciAoY29uc3Rh bnQgb3BlcmF0b3IgaW5kZXhrZXkpLiBPcGVyYXRvcnMKKwkgKiBvZiBhbGwgdGhlIGVudHJp ZXMgbXVzdCBtYXRjaC4gIENvbnN0YW50IG1pZ2h0IGJlIGVpdGhlciBDb25zdCBvcgorCSAq IFBhcmFtLiAgRXhpdCB3aXRoIE5VTEwgb24gZmlyc3Qgbm9uLW1hdGNoaW5nIGVudHJ5Lgor CSAqLworCWZvcmVhY2gobGMsIG9yY2xhdXNlLT5hcmdzKQorCXsKKwkJUmVzdHJpY3RJbmZv ICpzdWJSaW5mbzsKKwkJT3BFeHByCSAgICpzdWJDbGF1c2U7CisJCU9pZAkJCW9wbm87CisJ CU5vZGUJICAgKmxlZnRvcCwKKwkJCQkgICAqcmlnaHRvcDsKKwkJTm9kZQkgICAqY29uc3RF eHByOworCisJCWlmICghSXNBKGxmaXJzdChsYyksIFJlc3RyaWN0SW5mbykpCisJCQlyZXR1 cm4gTlVMTDsKKworCQlzdWJSaW5mbyA9IChSZXN0cmljdEluZm8gKikgbGZpcnN0KGxjKTsK KworCQkvKiBPbmx5IG9wZXJhdG9yIGNsYXVzZXMgc2NhbiBtYXRjaCAgKi8KKwkJaWYgKCFJ c0Eoc3ViUmluZm8tPmNsYXVzZSwgT3BFeHByKSkKKwkJCXJldHVybiBOVUxMOworCisJCXN1 YkNsYXVzZSA9IChPcEV4cHIgKikgc3ViUmluZm8tPmNsYXVzZTsKKwkJb3BubyA9IHN1YkNs YXVzZS0+b3BubzsKKworCQkvKiBPbmx5IGJpbmFyeSBvcGVyYXRvcnMgY2FuIG1hdGNoICAq LworCQlpZiAobGlzdF9sZW5ndGgoc3ViQ2xhdXNlLT5hcmdzKSAhPSAyKQorCQkJcmV0dXJu IE5VTEw7CisKKwkJLyogUmVzdHJpY3RJbmZvIHBhcmFtZXRlcnMgbXVzdCBtYXRjaCBwYXJl bnQgKi8KKwkJaWYgKHN1YlJpbmZvLT5pc19wdXNoZWRfZG93biAhPSByaW5mby0+aXNfcHVz aGVkX2Rvd24gfHwKKwkJCXN1YlJpbmZvLT5pc19jbG9uZSAhPSByaW5mby0+aXNfY2xvbmUg fHwKKwkJCXN1YlJpbmZvLT5zZWN1cml0eV9sZXZlbCAhPSByaW5mby0+c2VjdXJpdHlfbGV2 ZWwgfHwKKwkJCSFibXNfZXF1YWwoc3ViUmluZm8tPnJlcXVpcmVkX3JlbGlkcywgcmluZm8t PnJlcXVpcmVkX3JlbGlkcykgfHwKKwkJCSFibXNfZXF1YWwoc3ViUmluZm8tPmluY29tcGF0 aWJsZV9yZWxpZHMsIHJpbmZvLT5pbmNvbXBhdGlibGVfcmVsaWRzKSB8fAorCQkJIWJtc19l cXVhbChzdWJSaW5mby0+b3V0ZXJfcmVsaWRzLCByaW5mby0+b3V0ZXJfcmVsaWRzKSkKKwkJ CXJldHVybiBOVUxMOworCisJCS8qIE9ubHkgb3BlcmF0b3IgcmV0dXJuaW5nIGJvb2xlYW4g c3VpdHMgdGhlIHRyYW5zZm9ybWF0aW9uICovCisJCWlmIChnZXRfb3BfcmV0dHlwZShvcG5v KSAhPSBCT09MT0lEKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9y IGNsYXVzZXMgb2YgdGhlIGZvcm06IChpbmRleGtleSBvcGVyYXRvciBjb25zdGFudCkgb3IK KwkJICogKGNvbnN0YW50IG9wZXJhdG9yIGluZGV4a2V5KS4gIERldGVybWluZSBpbmRleGtl eSBzaWRlIGZpcnN0LCBjaGVjaworCQkgKiB0aGUgY29uc3RhbnQgbGF0ZXIuCisJCSAqLwor CQlsZWZ0b3AgPSAoTm9kZSAqKSBsaW5pdGlhbChzdWJDbGF1c2UtPmFyZ3MpOworCQlyaWdo dG9wID0gKE5vZGUgKikgbHNlY29uZChzdWJDbGF1c2UtPmFyZ3MpOworCQlpZiAobWF0Y2hf aW5kZXhfdG9fb3BlcmFuZChsZWZ0b3AsIGluZGV4Y29sLCBpbmRleCkpCisJCXsKKwkJCWlu ZGV4RXhwciA9IGxlZnRvcDsKKwkJCWNvbnN0RXhwciA9IHJpZ2h0b3A7CisJCX0KKwkJZWxz ZSBpZiAobWF0Y2hfaW5kZXhfdG9fb3BlcmFuZChyaWdodG9wLCBpbmRleGNvbCwgaW5kZXgp KQorCQl7CisJCQlvcG5vID0gZ2V0X2NvbW11dGF0b3Iob3Bubyk7CisJCQlpZiAoIU9pZElz VmFsaWQob3BubykpCisJCQl7CisJCQkJLyogY29tbXV0YXRvciBkb2Vzbid0IGV4aXN0LCB3 ZSBjYW4ndCByZXZlcnNlIHRoZSBvcmRlciAqLworCQkJCXJldHVybiBOVUxMOworCQkJfQor CQkJaW5kZXhFeHByID0gcmlnaHRvcDsKKwkJCWNvbnN0RXhwciA9IGxlZnRvcDsKKwkJfQor CQllbHNlCisJCXsKKwkJCXJldHVybiBOVUxMOworCQl9CisKKwkJLyoKKwkJICogSWdub3Jl IGFueSBSZWxhYmVsVHlwZSBub2RlIGFib3ZlIHRoZSBvcGVyYW5kcy4gIFRoaXMgaXMgbmVl ZGVkIHRvCisJCSAqIGJlIGFibGUgdG8gYXBwbHkgaW5kZXhzY2FubmluZyBpbiBiaW5hcnkt Y29tcGF0aWJsZS1vcGVyYXRvciBjYXNlcy4KKwkJICogTm90ZTogd2UgY2FuIGFzc3VtZSB0 aGVyZSBpcyBhdCBtb3N0IG9uZSBSZWxhYmVsVHlwZSBub2RlOworCQkgKiBldmFsX2NvbnN0 X2V4cHJlc3Npb25zKCkgd2lsbCBoYXZlIHNpbXBsaWZpZWQgaWYgbW9yZSB0aGFuIG9uZS4K KwkJICovCisJCWlmIChJc0EoY29uc3RFeHByLCBSZWxhYmVsVHlwZSkpCisJCQljb25zdEV4 cHIgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBlICopIGNvbnN0RXhwciktPmFyZzsKKwkJaWYg KElzQShpbmRleEV4cHIsIFJlbGFiZWxUeXBlKSkKKwkJCWluZGV4RXhwciA9IChOb2RlICop ICgoUmVsYWJlbFR5cGUgKikgaW5kZXhFeHByKS0+YXJnOworCisJCS8qIFdlIGFsbG93IGNv bnN0YW50IHRvIGJlIENvbnN0IG9yIFBhcmFtICovCisJCWlmICghSXNBKGNvbnN0RXhwciwg Q29uc3QpICYmICFJc0EoY29uc3RFeHByLCBQYXJhbSkpCisJCQlyZXR1cm4gTlVMTDsKKwor CQkvKiBGb3JiaWQgdHJhbnNmb3JtYXRpb24gZm9yIGNvbXBvc2l0ZSB0eXBlcywgcmVjb3Jk cy4gKi8KKwkJaWYgKHR5cGVfaXNfcm93dHlwZShleHByVHlwZShjb25zdEV4cHIpKSB8fAor CQkJdHlwZV9pc19yb3d0eXBlKGV4cHJUeXBlKGluZGV4RXhwcikpKQorCQkJcmV0dXJuIE5V TEw7CisKKwkJLyoKKwkJICogRm9yIHRoZSBmaXJzdCBtYXRjaGluZyBxdWFsLCBzYXZlIGlu Zm9ybWF0aW9uIGFib3V0IG9wZXJhdG9yLCB0eXBlCisJCSAqIGFuZCBjb2xsYXRpb24uICBG b3IgdGhlIG90aGVyIHF1YWxzIGp1c3QgY2hlY2sgdGhlIG1hdGNoIHdpdGggdGhlCisJCSAq IGZpcnN0LgorCQkgKi8KKwkJaWYgKGZpcnN0VGltZSkKKwkJeworCQkJbWF0Y2hPcG5vID0g b3BubzsKKwkJCWNvbnN0dHlwZSA9IGV4cHJUeXBlKGNvbnN0RXhwcik7CisJCQlhcnJheXR5 cGUgPSBnZXRfYXJyYXlfdHlwZShjb25zdHR5cGUpOworCQkJaW5wdXRjb2xsaWQgPSBzdWJD bGF1c2UtPmlucHV0Y29sbGlkOworCisJCQkvKgorCQkJICogVGhlcmUgbXVzdCBiZSBhbiBh cnJheSB0eXBlIGluIG9yZGVyIHRvIGNvbnN0cnVjdCBhbiBhcnJheQorCQkJICogbGF0ZXIK KwkJCSAqLworCQkJaWYgKCFPaWRJc1ZhbGlkKGFycmF5dHlwZSkpCisJCQkJcmV0dXJuIE5V TEw7CisJCQlmaXJzdFRpbWUgPSBmYWxzZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChv cG5vICE9IG1hdGNoT3BubyB8fAorCQkJCWlucHV0Y29sbGlkICE9IHN1YkNsYXVzZS0+aW5w dXRjb2xsaWQgfHwKKwkJCQljb25zdHR5cGUgIT0gZXhwclR5cGUoY29uc3RFeHByKSkKKwkJ CQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCWlmIChJc0EoY29uc3RFeHByLCBQYXJhbSkpCisJ CQloYXZlX3BhcmFtID0gdHJ1ZTsKKwkJY29uc3RzID0gbGFwcGVuZChjb25zdHMsIGNvbnN0 RXhwcik7CisJfQorCisJaWYgKGhhdmVfcGFyYW0pCisJeworCQkvKgorCQkgKiBXZSBuZWVk IHRvIGNvbnN0cnVjdCBhbiBBcnJheUV4cHIgZ2l2ZW4gd2UgaGF2ZSBQYXJhbSdzIG5vdCBq dXN0CisJCSAqIENvbnN0J3MuCisJCSAqLworCQlBcnJheUV4cHIgICphcnJheUV4cHIgPSBt YWtlTm9kZShBcnJheUV4cHIpOworCisJCS8qIGFycmF5X2NvbGxpZCB3aWxsIGJlIHNldCBi eSBwYXJzZV9jb2xsYXRlLmMgKi8KKwkJYXJyYXlFeHByLT5lbGVtZW50X3R5cGVpZCA9IGNv bnN0dHlwZTsKKwkJYXJyYXlFeHByLT5hcnJheV90eXBlaWQgPSBhcnJheXR5cGU7CisJCWFy cmF5RXhwci0+bXVsdGlkaW1zID0gZmFsc2U7CisJCWFycmF5RXhwci0+ZWxlbWVudHMgPSBj b25zdHM7CisJCWFycmF5RXhwci0+bG9jYXRpb24gPSAtMTsKKworCQlhcnJheU5vZGUgPSAo Tm9kZSAqKSBhcnJheUV4cHI7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIFdlIGhhdmUg b25seSBDb25zdCdzLiAgSW4gdGhpcyBjYXNlIHdlIGNhbiBjb25zdHJ1Y3QgYW4gYXJyYXkK KwkJICogZGlyZWN0bHkuCisJCSAqLworCQlpbnQxNgkJdHlwbGVuOworCQlib29sCQl0eXBi eXZhbDsKKwkJY2hhcgkJdHlwYWxpZ247CisJCURhdHVtCSAgICplbGVtczsKKwkJaW50CQkJ aSA9IDA7CisJCUFycmF5VHlwZSAgKmFycmF5Q29uc3Q7CisKKwkJZ2V0X3R5cGxlbmJ5dmFs YWxpZ24oY29uc3R0eXBlLCAmdHlwbGVuLCAmdHlwYnl2YWwsICZ0eXBhbGlnbik7CisKKwkJ ZWxlbXMgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBsaXN0X2xlbmd0aChj b25zdHMpKTsKKwkJZm9yZWFjaChsYywgY29uc3RzKQorCQkJZWxlbXNbaSsrXSA9ICgoQ29u c3QgKikgbGZpcnN0KGxjKSktPmNvbnN0dmFsdWU7CisKKwkJYXJyYXlDb25zdCA9IGNvbnN0 cnVjdF9hcnJheShlbGVtcywgaSwgY29uc3R0eXBlLAorCQkJCQkJCQkJIHR5cGxlbiwgdHlw Ynl2YWwsIHR5cGFsaWduKTsKKwkJYXJyYXlOb2RlID0gKE5vZGUgKikgbWFrZUNvbnN0KGFy cmF5dHlwZSwgLTEsIGlucHV0Y29sbGlkLAorCQkJCQkJCQkJICAgLTEsIFBvaW50ZXJHZXRE YXR1bShhcnJheUNvbnN0KSwKKwkJCQkJCQkJCSAgIGZhbHNlLCBmYWxzZSk7CisKKwkJcGZy ZWUoZWxlbXMpOworCQlsaXN0X2ZyZWUoY29uc3RzKTsKKwl9CisKKwkvKiBMb29rdXAgZm9y IG9wZXJhdG9yIHRvIGZldGNoIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmb3IgdGhlIFNBT1Ag bm9kZSAqLworCW9wZXJ0dXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BFUk9JRCwKKwkJCQkJCQkg IE9iamVjdElkR2V0RGF0dW0obWF0Y2hPcG5vKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KG9wZXJ0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3Bl cmF0b3IgJXUiLCBtYXRjaE9wbm8pOworCisJb3BlcmZvcm0gPSAoRm9ybV9wZ19vcGVyYXRv cikgR0VUU1RSVUNUKG9wZXJ0dXApOworCisJLyogQnVpbGQgdGhlIFNBT1AgZXhwcmVzc2lv biBub2RlICovCisJc2FvcGV4cHIgPSBtYWtlTm9kZShTY2FsYXJBcnJheU9wRXhwcik7CisJ c2FvcGV4cHItPm9wbm8gPSBtYXRjaE9wbm87CisJc2FvcGV4cHItPm9wZnVuY2lkID0gb3Bl cmZvcm0tPm9wcmNvZGU7CisJc2FvcGV4cHItPmhhc2hmdW5jaWQgPSBJbnZhbGlkT2lkOwor CXNhb3BleHByLT5uZWdmdW5jaWQgPSBJbnZhbGlkT2lkOworCXNhb3BleHByLT51c2VPciA9 IHRydWU7CisJc2FvcGV4cHItPmlucHV0Y29sbGlkID0gaW5wdXRjb2xsaWQ7CisJc2FvcGV4 cHItPmFyZ3MgPSBsaXN0X21ha2UyKGluZGV4RXhwciwgYXJyYXlOb2RlKTsKKwlzYW9wZXhw ci0+bG9jYXRpb24gPSAtMTsKKworCVJlbGVhc2VTeXNDYWNoZShvcGVydHVwKTsKKworCS8q CisJICogRmluYWxseSBidWlsZCBhbiBJbmRleENsYXVzZSBiYXNlZCBvbiB0aGUgU0FPUCBu b2RlLgorCSAqLworCWljbGF1c2UgPSBtYWtlTm9kZShJbmRleENsYXVzZSk7CisJaWNsYXVz ZS0+cmluZm8gPSBtYWtlX3Jlc3RyaWN0aW5mbyhyb290LAorCQkJCQkJCQkJICAgJnNhb3Bl eHByLT54cHIsCisJCQkJCQkJCQkgICByaW5mby0+aXNfcHVzaGVkX2Rvd24sCisJCQkJCQkJ CQkgICByaW5mby0+aGFzX2Nsb25lLAorCQkJCQkJCQkJICAgcmluZm8tPmlzX2Nsb25lLAor CQkJCQkJCQkJICAgcmluZm8tPnBzZXVkb2NvbnN0YW50LAorCQkJCQkJCQkJICAgcmluZm8t PnNlY3VyaXR5X2xldmVsLAorCQkJCQkJCQkJICAgcmluZm8tPnJlcXVpcmVkX3JlbGlkcywK KwkJCQkJCQkJCSAgIHJpbmZvLT5pbmNvbXBhdGlibGVfcmVsaWRzLAorCQkJCQkJCQkJICAg cmluZm8tPm91dGVyX3JlbGlkcyk7CisJaWNsYXVzZS0+aW5kZXhxdWFscyA9IGxpc3RfbWFr ZTEoaWNsYXVzZS0+cmluZm8pOworCWljbGF1c2UtPmxvc3N5ID0gZmFsc2U7CisJaWNsYXVz ZS0+aW5kZXhjb2wgPSBpbmRleGNvbDsKKwlpY2xhdXNlLT5pbmRleGNvbHMgPSBOSUw7CisJ cmV0dXJuIGljbGF1c2U7Cit9CisKIC8qCiAgKiBleHBhbmRfaW5kZXhxdWFsX3Jvd2NvbXBh cmUgLS0tIGV4cGFuZCBhIHNpbmdsZSBpbmRleHF1YWwgY29uZGl0aW9uCiAgKgkJdGhhdCBp cyBhIFJvd0NvbXBhcmVFeHByCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NyZWF0ZV9pbmRleC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0 ZV9pbmRleC5vdXQKaW5kZXggY2Y2ZWFjNTczNDkuLmMyYjI1OTM2YzhjIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0xODQ0LDE4ICsx ODQ0LDExIEBAIERST1AgVEFCTEUgb25la193aXRoX251bGw7CiBFWFBMQUlOIChDT1NUUyBP RkYpCiBTRUxFQ1QgKiBGUk9NIHRlbmsxCiAgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0 ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0gQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQotICAgUmVjaGVjayBDb25kOiAoKCh0aG91 c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMSkpIE9SICgodGhvdXNhbmQgPSA0MikgQU5E ICh0ZW50aG91cyA9IDMpKSBPUiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSA0 MikpKQotICAgLT4gIEJpdG1hcE9yCi0gICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgo dGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDEpKQotICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAzKSkKLSAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3Vz ID0gNDIpKQotKDkgcm93cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV90aG91c190ZW50aG91 cyBvbiB0ZW5rMQorICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRo b3VzID0gQU5ZICgnezEsMyw0Mn0nOjppbnRlZ2VyW10pKSkKKygyIHJvd3MpCiAKIFNFTEVD VCAqIEZST00gdGVuazEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0g MSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CkBAIC0xODY0LDE0ICsxODU3 LDE2NiBAQCBTRUxFQ1QgKiBGUk9NIHRlbmsxCiAgICAgICA0MiB8ICAgIDU1MzAgfCAgIDAg fCAgICAyIHwgICAyIHwgICAgICAyIHwgICAgICA0MiB8ICAgICAgIDQyIHwgICAgICAgICAg NDIgfCAgICAgICAgNDIgfCAgICAgICA0MiB8ICA4NCB8ICAgODUgfCBRQkFBQUEgICB8IFNF SUFBQSAgIHwgT09PT3h4CiAoMSByb3cpCiAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0g MSBPUiB0ZW50aG91cyA9IChTRUxFQ1QgMSArIDIpIE9SIHRlbnRob3VzID0gNDIpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgdGVuazFfdGhvdXNfdGVudGhvdXMg b24gdGVuazEKKyAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91 cyA9IEFOWSAoQVJSQVlbMSwgKEluaXRQbGFuIDEpLmNvbDEsIDQyXSkpKQorICAgSW5pdFBs YW4gMQorICAgICAtPiAgUmVzdWx0CisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlbmsx CisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMg PSAoU0VMRUNUIDEgKyAyKSBPUiB0ZW50aG91cyA9IDQyKTsKKyB1bmlxdWUxIHwgdW5pcXVl MiB8IHR3byB8IGZvdXIgfCB0ZW4gfCB0d2VudHkgfCBodW5kcmVkIHwgdGhvdXNhbmQgfCB0 d290aG91c2FuZCB8IGZpdmV0aG91cyB8IHRlbnRob3VzIHwgb2RkIHwgZXZlbiB8IHN0cmlu Z3UxIHwgc3RyaW5ndTIgfCBzdHJpbmc0IAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLSst LS0tLS0rLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgICAgICA0MiB8ICAgIDU1MzAgfCAgIDAgfCAgICAyIHwgICAy IHwgICAgICAyIHwgICAgICA0MiB8ICAgICAgIDQyIHwgICAgICAgICAgNDIgfCAgICAgICAg NDIgfCAgICAgICA0MiB8ICA4NCB8ICAgODUgfCBRQkFBQUEgICB8IFNFSUFBQSAgIHwgT09P T3h4CisoMSByb3cpCisKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1Ig dGhvdXNhbmQgPSA5OSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBBZ2dyZWdhdGUKICAgIC0+ICBCaXRt YXAgSGVhcCBTY2FuIG9uIHRlbmsxCi0gICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJl ZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IDQyKSBPUiAodGhvdXNhbmQgPSA5OSkpKQorICAg ICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQgPSA0MikgQU5EICh0aG91c2FuZCA9IEFO WSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3Vz CisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7 NDIsOTl9Jzo6aW50ZWdlcltdKSkKKyg4IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhv dXNhbmQgPSA5OSk7CisgY291bnQgCistLS0tLS0tCisgICAgMTAKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2Fu ZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9 IDQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV90aG91c190ZW50aG91cyBvbiB0ZW5rMQor ICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgn ezEsMyw0Mn0nOjppbnRlZ2VyW10pKSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVu azEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91 cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CisgdW5pcXVlMSB8IHVuaXF1ZTIgfCB0d28gfCBm b3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRob3VzYW5kIHwgdHdvdGhvdXNhbmQg fCBmaXZldGhvdXMgfCB0ZW50aG91cyB8IG9kZCB8IGV2ZW4gfCBzdHJpbmd1MSB8IHN0cmlu Z3UyIHwgc3RyaW5nNCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorICAgICAgNDIgfCAgICA1NTMwIHwgICAwIHwgICAgMiB8ICAgMiB8ICAgICAgMiB8 ICAgICAgNDIgfCAgICAgICA0MiB8ICAgICAgICAgIDQyIHwgICAgICAgIDQyIHwgICAgICAg NDIgfCAgODQgfCAgIDg1IHwgUUJBQUFBICAgfCBTRUlBQUEgICB8IE9PT094eAorKDEgcm93 KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQor ICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0g OTkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKHRo b3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgLT4gIEJp dG1hcEFuZAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0g NDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhv dXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2Fu ZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQorKDggcm93cykKKworU0VMRUNUIGNv dW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQg PSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEg cm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5r MQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5k IDwgOTkgT1IgNDMgPiB0aG91c2FuZCBPUiA0MiA+IHRob3VzYW5kKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5r MQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQgPSA0MikgQU5EICh0aG91c2Fu ZCA8IEFOWSAoJ3s0Miw5OSw0Myw0Mn0nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgIC0+ICBC aXRtYXBBbmQKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9 IDQyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Ro b3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNh bmQgPCBBTlkgKCd7NDIsOTksNDMsNDJ9Jzo6aW50ZWdlcltdKSkKKyg4IHJvd3MpCisKK1NF TEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRo b3VzYW5kIDwgNDIgT1IgdGhvdXNhbmQgPCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4g dGhvdXNhbmQpOworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRo b3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91 c2FuZCA9IDQxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQor ICAgICAgICAgUmVjaGVjayBDb25kOiAoKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3Vz ID0gQU5ZICgnezEsM30nOjppbnRlZ2VyW10pKSkgT1IgKHRob3VzYW5kID0gNDEpKQorICAg ICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDN9Jzo6 aW50ZWdlcltdKSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh0aG91c2FuZCA9IDQxKQorKDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVu azEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91 cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisgY291bnQgCistLS0tLS0tCisgICAgMTAKKygx IHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVu azEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2Fu ZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBv biB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKChodW5kcmVkID0gNDIpIEFORCAo KHRob3VzYW5kID0gNDIpIE9SICh0aG91c2FuZCA9IDk5KSBPUiAodGVudGhvdXMgPCAyKSkp IE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAg ICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAgICAgICAtPiAg Qml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhv dXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91 c2FuZCA9IDk5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAodGVudGhvdXMgPCAyKQorICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MSkKKygxNiByb3dzKQor CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5E ICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0 aG91c2FuZCA9IDQxOworIGNvdW50IAorLS0tLS0tLQorICAgIDIwCisoMSByb3cpCisKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJF IGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0 aG91c2FuZCA9IDk5IEFORCB0ZW50aG91cyA9IDIpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEK KyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5k ID0gNDIpIE9SICh0aG91c2FuZCA9IDQxKSBPUiAoKHRob3VzYW5kID0gOTkpIEFORCAodGVu dGhvdXMgPSAyKSkpKQogICAgICAgICAgLT4gIEJpdG1hcEFuZAogICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCkBAIC0xODc5LDExICsyMDI0LDEz IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgICAgICAgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQyKQogICAgICAg ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3Rl bnRob3VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNh bmQgPSA5OSkKLSgxMSByb3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHRob3VzYW5kID0gNDEpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA5OSkgQU5EICh0ZW50aG91cyA9 IDIpKQorKDEzIHJvd3MpCiAKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCi0gIFdIRVJF IGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7Cisg IFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0 MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0ZW50aG91cyA9IDIpOwogIGNvdW50IAogLS0tLS0t LQogICAgIDEwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4u b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dAppbmRleCA1M2Y3MGQ3 MmVkNi4uYWJlOThmZjNjNTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dApA QCAtNDI3OCwxNSArNDI3OCw2NCBAQCBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5r MSBiIG9uCiAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQp CiAgICAtPiAgTWF0ZXJpYWxpemUKICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IHRlbmsxIGEKLSAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkg T1IgKHVuaXF1ZTIgPSAzKSBPUiAodW5pcXVlMiA9IDcpKQorICAgICAgICAgICAgICAgUmVj aGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6 aW50ZWdlcltdKSkpCisgICAgICAgICAgICAgICBGaWx0ZXI6ICgodW5pcXVlMSA9IDEpIE9S ICh1bmlxdWUyID0gMykgT1IgKHVuaXF1ZTIgPSA3KSkKICAgICAgICAgICAgICAgIC0+ICBC aXRtYXBPcgogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX3VuaXF1ZTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh1bmlxdWUxID0gMSkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV91bmlxdWUyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAodW5pcXVlMiA9IDMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkKKygxOCByb3dz KQorCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0 ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAo KGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjog KCgoYS51bmlxdWUxID0gMSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51bmlxdWUy ID0gMykgT1IgKGEudW5pcXVlMiA9IDcpKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKKyAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDog KCh1bmlxdWUxID0gMikgT1IgKGh1bmRyZWQgPSA0KSkKKyAgICAgICAgIC0+ICBCaXRtYXBP cgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1 ZTEKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKKyAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCisgICAtPiAg TWF0ZXJpYWxpemUKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEK KyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1 ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgICAgICAgRmlsdGVy OiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpIE9SICh1bmlxdWUyID0gNykpCisg ICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCiAgICAgICAgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSA3KQotKDE5IHJvd3MpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IEFOWSAo J3szLDd9Jzo6aW50ZWdlcltdKSkKKygxOCByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYp CitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEg PCAyMCBvciBhLnVuaXF1ZTEgPSAzIG9yIGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9 IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5k cmVkID0gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAoKGEudW5pcXVlMSA8IDIwKSBP UiAoYS51bmlxdWUxID0gMykgT1IgKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9 IDIpKSBPUiAoKChhLnVuaXF1ZTIgPSAzKSBPUiAoYS51bmlxdWUyID0gNykpIEFORCAoYi5o dW5kcmVkID0gNCkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsxIGIKKyAgIC0+ICBNYXRl cmlhbGl6ZQorICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQorICAg ICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPCAyMCkgT1IgKHVuaXF1ZTEg PSAzKSBPUiAodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRl Z2VyW10pKSkKKyAgICAgICAgICAgICAgIEZpbHRlcjogKCh1bmlxdWUxIDwgMjApIE9SICh1 bmlxdWUxID0gMykgT1IgKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpIE9SICh1bmlx dWUyID0gNykpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA8IDIwKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMykK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91 bmlxdWUxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVl MSA9IDEpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdW5pcXVlMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCisoMTYgcm93cykKIAogLS0K IC0tIHRlc3QgcGxhY2VtZW50IG9mIG1vdmFibGUgcXVhbHMgaW4gYSBwYXJhbWV0ZXJpemVk IGpvaW4gdHJlZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2lu ZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXgg ZTI5Njg5MWNhYjguLmY3NGFkNDE1ZmJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0 ZV9pbmRleC5zcWwKQEAgLTcyNiw2ICs3MjYsMjQgQEAgRFJPUCBUQUJMRSBvbmVrX3dpdGhf bnVsbDsKIC0tIENoZWNrIGJpdG1hcCBpbmRleCBwYXRoIHBsYW5uaW5nCiAtLQogCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5k ID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0g NDIpOworU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAo dGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKKworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2Fu ZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gKFNFTEVDVCAxICsgMikg T1IgdGVudGhvdXMgPSA0Mik7CitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3Vz YW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAoU0VMRUNUIDEgKyAy KSBPUiB0ZW50aG91cyA9IDQyKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQg PSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisg IFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5 OSk7CisKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCAqIEZST00gdGVuazEKICAgV0hF UkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1Ig dGVudGhvdXMgPSA0Mik7CkBAIC03MzgsNiArNzU2LDMwIEBAIFNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVk ID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwogCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5k cmVkID0gNDIgQU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5kIDwgOTkgT1IgNDMgPiB0 aG91c2FuZCBPUiA0MiA+IHRob3VzYW5kKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsx CisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kIDwgNDIgT1IgdGhvdXNhbmQg PCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4gdGhvdXNhbmQpOworCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2Fu ZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQg PSA0MTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0g NDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQx OworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQor ICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0g OTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworU0VMRUNUIGNvdW50KCop IEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBP UiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hF UkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9S IHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CitTRUxFQ1QgY291bnQoKikgRlJP TSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRo b3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKKwogLS0K IC0tIENoZWNrIGJlaGF2aW9yIHdpdGggZHVwbGljYXRlIGluZGV4IGNvbHVtbiBjb250ZW50 cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKaW5kZXggZDgxZmY2M2JlNTMuLjQ0NzNiOGYw NGQ1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbApAQCAtMTQzMyw2ICsxNDMzLDE1IEBAIHNl bGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgKGEudW5pcXVlMSA9IDEg YW5kIGIudW5pcXVlMSA9IDIpIG9yCiAgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIg PSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CiAKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVj dCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA9IDEgYW5k IGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3 KSBhbmQgYi5odW5kcmVkID0gNCk7CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBm cm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPCAyMCBvciBhLnVu aXF1ZTEgPSAzIG9yIGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgo YS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CisK IC0tCiAtLSB0ZXN0IHBsYWNlbWVudCBvZiBtb3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1ldGVy aXplZCBqb2luIHRyZWUKIC0tCi0tIAoyLjM0LjEKCg== --------------QtYpAuGvcTKQES4Z3B4hKtnU Content-Type: text/x-patch; charset=UTF-8; name="v34-0002-Teach-bitmap-path-generation-about-transforming-OR-c.patch" Content-Disposition: attachment; filename*0="v34-0002-Teach-bitmap-path-generation-about-transforming-OR-"; filename*1="c.patch" Content-Transfer-Encoding: base64 RnJvbSBlZTQ2NGM5MzAwNmYxZGE0MzVkOTQ3M2IyZWYzMTIyMDZlNDdkYTBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCAyOCBKdWwgMjAyNCAxNjozNjozNCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggMi8yXSBUZWFjaCBiaXRtYXAgcGF0aCBnZW5lcmF0aW9uIGFib3V0 IHRyYW5zZm9ybWluZwogT1ItY2xhdXNlcyB0byBTQU9QJ3MKCldoZW4gb3B0aW1pemVyIGdl bmVyYXRlcyBiaXRtYXAgcGF0aHMsIGl0IGNvbnNpZGVycyBicmVha2luZyBPUi1jbGF1c2UK YXJndW1lbnRzIG9uZS1ieS1vbmUuICBCdXQgbm93LCBhIGdyb3VwIG9mIHNpbWlsYXIgT1It Y2xhdXNlcyBjYW4gYmUKdHJhbnNmb3JtZWQgaW50byBTQU9QIGR1cmluZyBpbmRleCBtYXRj aGluZy4gIFNvLCBiaXRtYXAgcGF0aHMgc2hvdWxkCmtlZXAgdXAuCgpUaGlzIGNvbW1pdCB0 ZWFjaGVzIGJpdG1hcCBwYXRocyBnZW5lcmF0aW9uIG1hY2hpbmVyeSB0byBncm91cCBzaW1p bGFyCk9SLWNsYXVzZXMgaW50byBkZWRpY2F0ZWQgUmVzdHJpY3RJbmZvcy4gIFRob3NlIFJl c3RyaWN0SW5mb3MgYXJlIGNvbnNpZGVyZWQKYm90aCB0byBtYXRjaCBpbmRleCBhcyBhIHdo b2xlIChhcyBTQU9QKSwgb3IgdG8gbWF0Y2ggYXMgYSBzZXQgb2YgaW5kaXZpZHVhbApPUi1j bGF1c2UgYXJndW1lbnQgb25lLWJ5LW9uZSAodGhlIG9sZCB3YXkpLgoKVGhlcmVmb3JlLCBi aXRtYXAgcGF0aCBnZW5lcmF0aW9uIHdpbGwgdGFrZXMgYWR2YW50YWdlIG9mIE9SLWNsYXVz ZXMgdG8gU0FPUCdzCnRyYW5zZm9ybWF0aW9uLiAgVGhlIG9sZCB3YXkgb2YgaGFuZGxpbmcg dGhlbSBpcyBhbHNvIGNvbnNpZGVyZWQuICBTbywgdGhlcmUKc2hvdWxkbid0IGJlIHBsYW5u aW5nIHJlZ3Jlc3Npb24uCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzU2N0VE NkNBLjIwNDA1MDQlNDBzaWdhZXYucnUKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtv diA8YWVrb3JvdGtvdkBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvaW5keHBhdGguYyAgICAgIHwgMzY4ICsrKysrKysrKysrKysrKysrKysrLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IHwgMTIxICsrKysrKy0KIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgICAgICAgICB8ICA1NiArKy0tCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dCAgfCAgIDcgKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0ICAgIHwgIDEyICsKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQgICAgICAgICB8ICAzMSArKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAgICAgIHwgIDI3ICsrCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9yb3dzZWN1cml0eS5zcWwgICAgICAgfCAgIDEgKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3V1aWQuc3FsICAgICAgICAgICAgICB8ICAxMiArCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgfCAgIDEgKwogMTEgZmlsZXMgY2hhbmdl ZCwgNTkyIGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IGNiZmIwZmRiM2M4Li4wNWZhYzJjN2JhNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCkBAIC0yMCw2ICsyMCw3 IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5 c2F0dHIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19hbW9wLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKQEAgLTExNzIsNiArMTE3MywzMjUgQEAgYnVpbGRfcGF0aHNfZm9yX09SKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoK KyAqIERhdGEgc3RydWN0dXJlIHJlcHJlc2VudGluZyBpbmZvcm1hdGlvbiBhYm91dCBPUi1j bGF1c2UgYXJndW1lbnQgYW5kIGl0cworICogbWF0Y2hpbmcgaW5kZXgga2V5LiAgVXNlZCBm b3IgZ3JvdXBpbmcgb2Ygc2ltaWxhciBPUi1jbGF1c2UgYXJndW1lbnRzIGluCisgKiBncm91 cF9zaW1pbGFyX29yX2FyZ3MoKS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlpbnQJCQlp bmRleG51bTsJCS8qIGluZGV4IG9mIHRoZSBtYXRjaGluZyBpbmRleCAqLworCWludAkJCWNv bG51bTsJCQkvKiBpbmRleCBvZiB0aGUgbWF0Y2hpbmcgY29sdW1uICovCisJT2lkCQkJb3Bu bzsJCQkvKiBPSUQgb2YgdGhlIE9wQ2xhdXNlIG9wZXJhdG9yICovCisJT2lkCQkJaW5wdXRj b2xsaWQ7CS8qIE9JRCBvZiB0aGUgT3BDbGF1c2UgaW5wdXQgY29sbGF0aW9uICovCisJaW50 CQkJYXJnaW5kZXg7CQkvKiBpbmRleCBvZiB0aGUgY2xhdXNlIGluIHRoZSBsaXN0IG9mCisJ CQkJCQkJCSAqIGFyZ3VtZW50cyAqLworfSBPckFyZ0luZGV4TWF0Y2g7CisKKy8qCisgKiBD b21wYXJpc29uIGZ1bmN0aW9uIGZvciBPckFyZ0luZGV4TWF0Y2ggd2hpY2ggcHJvdmlkZXMg c29ydCBvcmRlciBwbGFjaW5nCisgKiBzaW1pbGFyIE9SLWNsYXVzZSBhcmd1bWVudHMgdG9n ZXRoZXIuCisgKi8KK3N0YXRpYyBpbnQKK29yX2FyZ19pbmRleF9tYXRjaF9jbXAoY29uc3Qg dm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKwljb25zdCBPckFyZ0luZGV4TWF0Y2ggKm1h dGNoX2EgPSAoY29uc3QgT3JBcmdJbmRleE1hdGNoICopIGE7CisJY29uc3QgT3JBcmdJbmRl eE1hdGNoICptYXRjaF9iID0gKGNvbnN0IE9yQXJnSW5kZXhNYXRjaCAqKSBiOworCisJaWYg KG1hdGNoX2EtPmluZGV4bnVtIDwgbWF0Y2hfYi0+aW5kZXhudW0pCisJCXJldHVybiAtMTsK KwllbHNlIGlmIChtYXRjaF9hLT5pbmRleG51bSA+IG1hdGNoX2ItPmluZGV4bnVtKQorCQly ZXR1cm4gMTsKKworCWlmIChtYXRjaF9hLT5jb2xudW0gPCBtYXRjaF9iLT5jb2xudW0pCisJ CXJldHVybiAtMTsKKwllbHNlIGlmIChtYXRjaF9hLT5jb2xudW0gPiBtYXRjaF9iLT5jb2xu dW0pCisJCXJldHVybiAxOworCisJaWYgKG1hdGNoX2EtPm9wbm8gPCBtYXRjaF9iLT5vcG5v KQorCQlyZXR1cm4gLTE7CisJZWxzZSBpZiAobWF0Y2hfYS0+b3BubyA+IG1hdGNoX2ItPm9w bm8pCisJCXJldHVybiAxOworCisJaWYgKG1hdGNoX2EtPmlucHV0Y29sbGlkIDwgbWF0Y2hf Yi0+aW5wdXRjb2xsaWQpCisJCXJldHVybiAtMTsKKwllbHNlIGlmIChtYXRjaF9hLT5pbnB1 dGNvbGxpZCA+IG1hdGNoX2ItPmlucHV0Y29sbGlkKQorCQlyZXR1cm4gMTsKKworCWlmICht YXRjaF9hLT5hcmdpbmRleCA8IG1hdGNoX2ItPmFyZ2luZGV4KQorCQlyZXR1cm4gLTE7CisJ ZWxzZSBpZiAobWF0Y2hfYS0+YXJnaW5kZXggPiBtYXRjaF9iLT5hcmdpbmRleCkKKwkJcmV0 dXJuIDE7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIGdyb3VwX3NpbWlsYXJfb3JfYXJn cworICoJCUdyb3VwIHNpbWlsYXIgT1ItYXJndW1lbnRzIGludHJvIGRlZGljYXRlZCBSZXN0 cmljdEluZm9zLiAgUHJvY2VzcworICoJCWFyZ3VtZW50cyBvZiAncmluZm8nIGNsYXVzZSwg cmV0dXJucyB0aGUgcHJvY2Vzc2VkIGxpc3Qgb2YgYXJndW1lbnRzLgorICoKKyAqIFNpbWls YXIgYXJndW1lbnRzIGNsYXVzZXMgb2YgZm9ybSAiaW5kZXhrZXkgb3AgY29uc3RhbnQiIGhh dmluZyBzYW1lCisgKiBpbmRleGtleSwgb3BlcmF0b3IsIGFuZCBjb2xsYXRpb24uICBDb25z dGFudCBtYXkgY29tcHJpc2UgZWl0aGVyIENvbnN0CisgKiBvciBQYXJhbS4KKyAqLworc3Rh dGljIExpc3QgKgorZ3JvdXBfc2ltaWxhcl9vcl9hcmdzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwsIFJlc3RyaWN0SW5mbyAqcmluZm8pCit7CisJaW50CQkJbjsKKwlp bnQJCQlpOworCWludAkJCWdyb3VwX3N0YXJ0OworCU9yQXJnSW5kZXhNYXRjaCAqbWF0Y2hl czsKKwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0Q2VsbCAgICpsYzI7CisJTGlzdAkgICAqb3Jh cmdzOworCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKworCUFzc2VydChJc0EocmluZm8tPm9y Y2xhdXNlLCBCb29sRXhwcikpOworCW9yYXJncyA9ICgoQm9vbEV4cHIgKikgcmluZm8tPm9y Y2xhdXNlKS0+YXJnczsKKwluID0gbGlzdF9sZW5ndGgob3JhcmdzKTsKKworCS8qCisJICog QWxsb2NhdGUgYW5kIGZpbGwgT3JBcmdJbmRleE1hdGNoIHN0cnVjdCBmb3IgZWFjaCBjbGF1 c2UgaW4gdGhlCisJICogYXJndW1lbnQgbGlzdC4KKwkgKi8KKwlpID0gLTE7CisJbWF0Y2hl cyA9IChPckFyZ0luZGV4TWF0Y2ggKikgcGFsbG9jKHNpemVvZihPckFyZ0luZGV4TWF0Y2gp ICogbik7CisJZm9yZWFjaChsYywgb3JhcmdzKQorCXsKKwkJTm9kZQkgICAqYXJnID0gbGZp cnN0KGxjKTsKKwkJUmVzdHJpY3RJbmZvICphcmdyaW5mbzsKKwkJT3BFeHByCSAgICpjbGF1 c2U7CisJCU9pZAkJCW9wbm87CisJCU5vZGUJICAgKmxlZnRvcCwKKwkJCQkgICAqcmlnaHRv cDsKKwkJTm9kZQkgICAqbm9uQ29uc3RFeHByOworCQlpbnQJCQlpbmRleG51bTsKKwkJaW50 CQkJY29sbnVtOworCisJCWkrKzsKKwkJbWF0Y2hlc1tpXS5hcmdpbmRleCA9IGk7CisJCW1h dGNoZXNbaV0uaW5kZXhudW0gPSAtMTsKKwkJbWF0Y2hlc1tpXS5jb2xudW0gPSAtMTsKKwkJ bWF0Y2hlc1tpXS5vcG5vID0gSW52YWxpZE9pZDsKKwkJbWF0Y2hlc1tpXS5pbnB1dGNvbGxp ZCA9IEludmFsaWRPaWQ7CisKKwkJaWYgKCFJc0EoYXJnLCBSZXN0cmljdEluZm8pKQorCQkJ Y29udGludWU7CisKKwkJYXJncmluZm8gPSBjYXN0Tm9kZShSZXN0cmljdEluZm8sIGFyZyk7 CisKKwkJLyogT25seSBvcGVyYXRvciBjbGF1c2VzIHNjYW4gbWF0Y2ggICovCisJCWlmICgh SXNBKGFyZ3JpbmZvLT5jbGF1c2UsIE9wRXhwcikpCisJCQljb250aW51ZTsKKworCQljbGF1 c2UgPSAoT3BFeHByICopIGFyZ3JpbmZvLT5jbGF1c2U7CisJCW9wbm8gPSBjbGF1c2UtPm9w bm87CisKKwkJLyogT25seSBiaW5hcnkgb3BlcmF0b3JzIGNhbiBtYXRjaCAgKi8KKwkJaWYg KGxpc3RfbGVuZ3RoKGNsYXVzZS0+YXJncykgIT0gMikKKwkJCXJldHVybiBOVUxMOworCisJ CS8qCisJCSAqIElnbm9yZSBhbnkgUmVsYWJlbFR5cGUgbm9kZSBhYm92ZSB0aGUgb3BlcmFu ZHMuICBUaGlzIGlzIG5lZWRlZCB0bworCQkgKiBiZSBhYmxlIHRvIGFwcGx5IGluZGV4c2Nh bm5pbmcgaW4gYmluYXJ5LWNvbXBhdGlibGUtb3BlcmF0b3IgY2FzZXMuCisJCSAqIE5vdGU6 IHdlIGNhbiBhc3N1bWUgdGhlcmUgaXMgYXQgbW9zdCBvbmUgUmVsYWJlbFR5cGUgbm9kZTsK KwkJICogZXZhbF9jb25zdF9leHByZXNzaW9ucygpIHdpbGwgaGF2ZSBzaW1wbGlmaWVkIGlm IG1vcmUgdGhhbiBvbmUuCisJCSAqLworCQlsZWZ0b3AgPSBnZXRfbGVmdG9wKGNsYXVzZSk7 CisJCWlmIChJc0EobGVmdG9wLCBSZWxhYmVsVHlwZSkpCisJCQlsZWZ0b3AgPSAoTm9kZSAq KSAoKFJlbGFiZWxUeXBlICopIGxlZnRvcCktPmFyZzsKKworCQlyaWdodG9wID0gZ2V0X3Jp Z2h0b3AoY2xhdXNlKTsKKwkJaWYgKElzQShyaWdodG9wLCBSZWxhYmVsVHlwZSkpCisJCQly aWdodG9wID0gKE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSByaWdodG9wKS0+YXJnOworCisJ CS8qCisJCSAqIENoZWNrIGZvciBjbGF1c2VzIG9mIHRoZSBmb3JtOiAoaW5kZXhrZXkgb3Bl cmF0b3IgY29uc3RhbnQpIG9yCisJCSAqIChjb25zdGFudCBvcGVyYXRvciBpbmRleGtleSku ICBCdXQgd2UgZG9uJ3Qga25vdyBhIHBhcnRpY3VsYXIgaW5kZXgKKwkJICogeWV0LiAgRmly c3QgY2hlY2sgZm9yIGEgY29uc3RhbnQsIHdoaWNoIG11c3QgYmUgQ29uc3Qgb3IgUGFyYW0u CisJCSAqIFRoYXQncyBjaGVhcGVyIHRoYW4gc2VhcmNoIGZvciBhbiBpbmRleCBrZXkgYW1v bmcgYWxsIGluZGV4ZXMuCisJCSAqLworCQlpZiAoSXNBKGxlZnRvcCwgQ29uc3QpIHx8IElz QShsZWZ0b3AsIFBhcmFtKSkKKwkJeworCQkJb3BubyA9IGdldF9jb21tdXRhdG9yKG9wbm8p OworCisJCQlpZiAoIU9pZElzVmFsaWQob3BubykpCisJCQl7CisJCQkJLyogY29tbXV0YXRv ciBkb2Vzbid0IGV4aXN0LCB3ZSBjYW4ndCByZXZlcnNlIHRoZSBvcmRlciAqLworCQkJCWNv bnRpbnVlOworCQkJfQorCQkJbm9uQ29uc3RFeHByID0gcmlnaHRvcDsKKwkJfQorCQllbHNl IGlmIChJc0EocmlnaHRvcCwgQ29uc3QpIHx8IElzQShyaWdodG9wLCBQYXJhbSkpCisJCXsK KwkJCW5vbkNvbnN0RXhwciA9IGxlZnRvcDsKKwkJfQorCQllbHNlCisJCXsKKwkJCWNvbnRp bnVlOworCQl9CisKKwkJLyoKKwkJICogTWF0Y2ggbm9uLWNvbnN0YW50IHBhcnQgdG8gdGhl IGluZGV4IGtleS4gIEl0J3MgcG9zc2libGUgdGhhdCBhCisJCSAqIHNpbmdsZSBub24tY29u c3RhbnQgcGFydCBtYXRjaGVzIG11bHRpcGxlIGluZGV4IGtleXMuICBJdCdzIE9LLCB3ZQor CQkgKiBqdXN0IHN0b3Agd2l0aCBmaXJzdCBtYXRjaGluZyBpbmRleCBrZXkuICBHaXZlbiB0 aGF0IHRoaXMgY2hvaWNlIGlzCisJCSAqIGRldGVybWluZWQgdGhlIHNhbWUgZm9yIGV2ZXJ5 IGNsYXVzZSwgd2Ugd2lsbCBncm91cCBzaW1pbGFyIGNsYXVzZXMKKwkJICogdG9nZXRoZXIg YW55d2F5LgorCQkgKi8KKwkJaW5kZXhudW0gPSAwOworCQlmb3JlYWNoKGxjMiwgcmVsLT5p bmRleGxpc3QpCisJCXsKKwkJCUluZGV4T3B0SW5mbyAqaW5kZXggPSAoSW5kZXhPcHRJbmZv ICopIGxmaXJzdChsYzIpOworCisJCQkvKiBJZ25vcmUgaW5kZXggaWYgaXQgZG9lc24ndCBz dXBwb3J0IGJpdG1hcCBzY2FucyAqLworCQkJaWYgKCFpbmRleC0+YW1oYXNnZXRiaXRtYXAp CisJCQkJY29udGludWU7CisKKwkJCWZvciAoY29sbnVtID0gMDsgY29sbnVtIDwgaW5kZXgt Pm5rZXljb2x1bW5zOyBjb2xudW0rKykKKwkJCXsKKwkJCQlpZiAobWF0Y2hfaW5kZXhfdG9f b3BlcmFuZChub25Db25zdEV4cHIsIGNvbG51bSwgaW5kZXgpKQorCQkJCXsKKwkJCQkJbWF0 Y2hlc1tpXS5pbmRleG51bSA9IGluZGV4bnVtOworCQkJCQltYXRjaGVzW2ldLmNvbG51bSA9 IGNvbG51bTsKKwkJCQkJbWF0Y2hlc1tpXS5vcG5vID0gb3BubzsKKwkJCQkJbWF0Y2hlc1tp XS5pbnB1dGNvbGxpZCA9IGNsYXVzZS0+aW5wdXRjb2xsaWQ7CisJCQkJfQorCQkJfQorCQkJ aW5kZXhudW0rKzsKKwkJfQorCX0KKworCS8qIFNvcnQgY2xhdXNlcyB0byBtYWtlIHNpbWls YXIgY2xhdXNlcyBnbyB0b2dldGhlciAqLworCXBnX3Fzb3J0KG1hdGNoZXMsIG4sIHNpemVv ZihPckFyZ0luZGV4TWF0Y2gpLCBvcl9hcmdfaW5kZXhfbWF0Y2hfY21wKTsKKworCS8qIEdy b3VwIHNpbWlsYXIgY2xhdXNlcyBpbnRvICovCisJZ3JvdXBfc3RhcnQgPSAwOworCWZvciAo aSA9IDE7IGkgPD0gbjsgaSsrKQorCXsKKwkJLyogQ2hlY2sgaWYgaXQncyBhIGdyb3VwIGJv dW5kYXJ5ICovCisJCWlmIChncm91cF9zdGFydCA+PSAwICYmCisJCQkoaSA9PSBuIHx8CisJ CQkgbWF0Y2hlc1tpXS5pbmRleG51bSAhPSBtYXRjaGVzW2dyb3VwX3N0YXJ0XS5pbmRleG51 bSB8fAorCQkJIG1hdGNoZXNbaV0uY29sbnVtICE9IG1hdGNoZXNbZ3JvdXBfc3RhcnRdLmNv bG51bSB8fAorCQkJIG1hdGNoZXNbaV0ub3BubyAhPSBtYXRjaGVzW2dyb3VwX3N0YXJ0XS5v cG5vIHx8CisJCQkgbWF0Y2hlc1tpXS5pbnB1dGNvbGxpZCAhPSBtYXRjaGVzW2dyb3VwX3N0 YXJ0XS5pbnB1dGNvbGxpZCB8fAorCQkJIG1hdGNoZXNbaV0uaW5kZXhudW0gPT0gLTEpKQor CQl7CisJCQkvKgorCQkJICogT25lIGNsYXVzZSBpbiBncm91cDogYWRkIGl0ICJhcyBpcyIg dG8gdGhlIHVwcGVyLWxldmVsIE9SLgorCQkJICovCisJCQlpZiAoaSAtIGdyb3VwX3N0YXJ0 ID09IDEpCisJCQl7CisJCQkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsCisJCQkJCQkJCSBs aXN0X250aChvcmFyZ3MsCisJCQkJCQkJCQkJICBtYXRjaGVzW2dyb3VwX3N0YXJ0XS5hcmdp bmRleCkpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogVHdvIG9yIG1v cmUgY2xhdXNlcyBpbiBhIGdyb3VwOiBjcmVhdGUgYSBuZXN0ZWQgT1IuCisJCQkJICovCisJ CQkJTGlzdAkgICAqYXJncyA9IE5JTDsKKwkJCQlSZXN0cmljdEluZm8gKnN1YnJpbmZvID0g bWFrZU5vZGUoUmVzdHJpY3RJbmZvKTsKKwkJCQlpbnQJCQlqOworCisJCQkJQXNzZXJ0KGkg LSBncm91cF9zdGFydCA+PSAyKTsKKworCQkJCS8qIENvbnN0cnVjdCB0aGUgbGlzdCBvZiBu ZXN0ZWQgT1IgYXJndW1lbnRzICovCisJCQkJZm9yIChqID0gZ3JvdXBfc3RhcnQ7IGogPCBp OyBqKyspCisJCQkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3MsIGxpc3RfbnRoKG9yYXJncywgbWF0 Y2hlc1tqXS5hcmdpbmRleCkpOworCisJCQkJLyogQ29uc3RydWN0IHRoZSBuZXN0ZWQgT1Ig YW5kIHdyYXAgaXQgd2l0aCBSZXN0cmljdEluZm8gKi8KKwkJCQkqc3VicmluZm8gPSAqcmlu Zm87CisJCQkJc3VicmluZm8tPmNsYXVzZSA9IG1ha2Vfb3JjbGF1c2UoYXJncyk7CisJCQkJ c3VicmluZm8tPm9yY2xhdXNlID0gc3VicmluZm8tPmNsYXVzZTsKKwkJCQlyZXN1bHQgPSBs YXBwZW5kKHJlc3VsdCwgc3VicmluZm8pOworCQkJfQorCisJCQlncm91cF9zdGFydCA9IGk7 CisJCX0KKwl9CisJcGZyZWUobWF0Y2hlcyk7CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoK KyAqIG1ha2VfYml0bWFwX3BhdGhzX2Zvcl9vcl9ncm91cAorICoJCUdlbmVyYXRlIGJpdG1h cCBwYXRocyBmb3IgYSBncm91cCBvZiBzaW1pbGFyIE9SLWNsYXVzZSBhcmd1bWVudHMKKyAq CQlwcm9kdWNlZCBieSBncm91cF9zaW1pbGFyX29yX2FyZ3MoKS4KKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIGNvbnNpZGVycyB0d28gY2FzZXM6ICgxKSBtYXRjaGluZyBhIGdyb3VwIG9mIGNs YXVzZXMgdG8KKyAqIHRoZSBpbmRleCBhcyBhIHdob2xlLCBhbmQgKDIpIG1hdGNoaW5nIHRo ZSBpbmRpdmlkdWFsIGNsYXVzZXMgb25lLWJ5LW9uZS4KKyAqICgxKSB0eXBpY2FsbHkgY29t cHJpc2VzIGFuIG9wdGltYWwgc29sdXRpb24uICBJZiBub3QsICgyKSB0eXBpY2FsbHkKKyAq IGNvbXByaXNlcyBmYWlyIGFsdGVybmF0aXZlLgorICoKKyAqIElkZWFsbHksIHdlIGNvdWxk IGNvbnNpZGVyIGFsbCBhcmJpdHJhcnkgc3BsaXRzIG9mIGFyZ3VtZW50cyBpbnRvCisgKiBz dWJncm91cHMsIGJ1dCB0aGF0IGNvdWxkIGxlYWQgdG8gdW5hY2NlcHRhYmxlIGNvbXB1dGF0 aW9uYWwgY29tcGxleGl0eS4KKyAqIFRoaXMgaXMgd2h5IHdlIG9ubHkgY29uc2lkZXIgdHdv IGNhc2VzIG9mIGFib3ZlLgorICovCitzdGF0aWMgTGlzdCAqCittYWtlX2JpdG1hcF9wYXRo c19mb3Jfb3JfZ3JvdXAoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJ CQkJCQkgICBSZXN0cmljdEluZm8gKnJpLCBMaXN0ICpvdGhlcl9jbGF1c2VzKQoreworCUxp c3QJICAgKmpvaW50bGlzdCA9IE5JTDsKKwlMaXN0CSAgICpzcGxpdGxpc3QgPSBOSUw7CisJ TGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqb3JhcmdzOworCUxpc3QJICAgKmFyZ3MgPSAo KEJvb2xFeHByICopIHJpLT5jbGF1c2UpLT5hcmdzOworCUNvc3QJCWpvaW50Y29zdCA9IDAu MCwKKwkJCQlzcGxpdGNvc3QgPSAwLjA7CisJUGF0aAkgICAqYml0bWFwcXVhbDsKKwlMaXN0 CSAgICppbmRsaXN0OworCisJLyoKKwkgKiBGaXJzdCwgdHJ5IHRvIG1hdGNoIHRoZSB3aG9s ZSBncm91cCB0byB0aGUgb25lIGluZGV4LgorCSAqLworCW9yYXJncyA9IGxpc3RfbWFrZTEo cmkpOworCWluZGxpc3QgPSBidWlsZF9wYXRoc19mb3JfT1Iocm9vdCwgcmVsLAorCQkJCQkJ CQkgb3JhcmdzLAorCQkJCQkJCQkgb3RoZXJfY2xhdXNlcyk7CisJaWYgKGluZGxpc3QgIT0g TklMKQorCXsKKwkJYml0bWFwcXVhbCA9IGNob29zZV9iaXRtYXBfYW5kKHJvb3QsIHJlbCwg aW5kbGlzdCk7CisJCWpvaW50Y29zdCA9IGJpdG1hcHF1YWwtPnRvdGFsX2Nvc3Q7CisJCWpv aW50bGlzdCA9IGxpc3RfbWFrZTEoYml0bWFwcXVhbCk7CisJfQorCisJLyoKKwkgKiBBbHNv IHRyeSB0byBtYXRjaCBhbGwgY29udGFpbmluZyBjbGF1c2VzIG9uZS1ieS1vbmUuCisJICov CisJZm9yZWFjaChsYywgYXJncykKKwl7CisJCW9yYXJncyA9IGxpc3RfbWFrZTEobGZpcnN0 KGxjKSk7CisKKwkJaW5kbGlzdCA9IGJ1aWxkX3BhdGhzX2Zvcl9PUihyb290LCByZWwsCisJ CQkJCQkJCQkgb3JhcmdzLAorCQkJCQkJCQkJIG90aGVyX2NsYXVzZXMpOworCisJCWlmIChp bmRsaXN0ID09IE5JTCkKKwkJeworCQkJc3BsaXRsaXN0ID0gTklMOworCQkJYnJlYWs7CisJ CX0KKworCQliaXRtYXBxdWFsID0gY2hvb3NlX2JpdG1hcF9hbmQocm9vdCwgcmVsLCBpbmRs aXN0KTsKKwkJc3BsaXRjb3N0ICs9IGJpdG1hcHF1YWwtPnRvdGFsX2Nvc3Q7CisJCXNwbGl0 bGlzdCA9IGxhcHBlbmQoc3BsaXRsaXN0LCBiaXRtYXBxdWFsKTsKKwl9CisKKwkvKgorCSAq IFBpY2sgdGhlIGJlc3Qgb3B0aW9uLgorCSAqLworCWlmIChzcGxpdGxpc3QgPT0gTklMKQor CQlyZXR1cm4gam9pbnRsaXN0OworCWVsc2UgaWYgKGpvaW50bGlzdCA9PSBOSUwpCisJCXJl dHVybiBzcGxpdGxpc3Q7CisJZWxzZQorCQlyZXR1cm4gKGpvaW50Y29zdCA8IHNwbGl0Y29z dCkgPyBqb2ludGxpc3QgOiBzcGxpdGxpc3Q7Cit9CisKKwogLyoKICAqIGdlbmVyYXRlX2Jp dG1hcF9vcl9wYXRocwogICoJCUxvb2sgdGhyb3VnaCB0aGUgbGlzdCBvZiBjbGF1c2VzIHRv IGZpbmQgT1IgY2xhdXNlcywgYW5kIGdlbmVyYXRlCkBAIC0xMjAyLDYgKzE1MjIsNyBAQCBn ZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKIAkJTGlzdAkgICAqcGF0aGxpc3Q7CiAJCVBhdGgJICAgKmJpdG1hcHF1YWw7CiAJ CUxpc3RDZWxsICAgKmo7CisJCUxpc3QJICAgKmdyb3VwZWRBcmdzOwogCiAJCS8qIElnbm9y ZSBSZXN0cmljdEluZm9zIHRoYXQgYXJlbid0IE9ScyAqLwogCQlpZiAoIXJlc3RyaWN0aW9u X2lzX29yX2NsYXVzZShyaW5mbykpCkBAIC0xMjEyLDcgKzE1MzMsMTMgQEAgZ2VuZXJhdGVf Yml0bWFwX29yX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJ CSAqIHRoZSBPUiwgZWxzZSB3ZSBjYW4ndCB1c2UgaXQuCiAJCSAqLwogCQlwYXRobGlzdCA9 IE5JTDsKLQkJZm9yZWFjaChqLCAoKEJvb2xFeHByICopIHJpbmZvLT5vcmNsYXVzZSktPmFy Z3MpCisKKwkJLyoKKwkJICogR3JvdXAgdGhlIHNpbWlsYXIgT1ItY2xhdXNlIGFyZ3VtZW50 IGludG8gZGVkaWNhdGVkIFJlc3RyaWN0SW5mb3MsCisJCSAqIGJlY2F1c2UgdGhvc2UgUmVz dHJpY3RJbmZvcyBtaWdodCBtYXRjaCB0byB0aGUgaW5kZXggYXMgd2hvbGUuCisJCSAqLwor CQlncm91cGVkQXJncyA9IGdyb3VwX3NpbWlsYXJfb3JfYXJncyhyb290LCByZWwsIHJpbmZv KTsKKwkJZm9yZWFjaChqLCBncm91cGVkQXJncykKIAkJewogCQkJTm9kZQkgICAqb3Jhcmcg PSAoTm9kZSAqKSBsZmlyc3Qoaik7CiAJCQlMaXN0CSAgICppbmRsaXN0OwpAQCAtMTIzMiwx MiArMTU1OSwzNyBAQCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkJCQkJCSAgIGFuZGFyZ3MsCiAJCQkJ CQkJCQkJCQkJCQkgICBhbGxfY2xhdXNlcykpOwogCQkJfQorCQkJZWxzZSBpZiAocmVzdHJp Y3Rpb25faXNfb3JfY2xhdXNlKGNhc3ROb2RlKFJlc3RyaWN0SW5mbywgb3JhcmcpKSkKKwkJ CXsKKwkJCQlSZXN0cmljdEluZm8gKnJpID0gY2FzdE5vZGUoUmVzdHJpY3RJbmZvLCBvcmFy Zyk7CisKKwkJCQkvKgorCQkJCSAqIEdlbmVyYXRlIGJpdG1hcCBwYXRocyBmb3IgdGhlIGdy b3VwIG9mIHNpbWlsYXIgT1ItY2xhdXNlCisJCQkJICogYXJndW1lbnRzLiAgSW4gdGhpcyBj YXNlIHdlIG5lZWQgdG8gaW1tZWRpYXRlbHkgcmVtb3ZlIHRoZQorCQkJCSAqIHJpbmZvIGZy b20gb3RoZXIgY2xhdXNlcy4gIFRoaXMgaXMgYmVjYXVzZSByaW5mbyBjYW4gYmUKKwkJCQkg KiB0cmFuc2Zvcm1lZCBkdXJpbmcgaW5kZXggbWF0Y2hpbmcuICBTbywgd2UgbWlnaHQgYmUg dW5hYmxlCisJCQkJICogdG8gcmVtb3ZlIHRoYXQgbGF0ZXIuCisJCQkJICovCisJCQkJaW5k bGlzdCA9IG1ha2VfYml0bWFwX3BhdGhzX2Zvcl9vcl9ncm91cChyb290LAorCQkJCQkJCQkJ CQkJCQkgcmVsLCByaSwKKwkJCQkJCQkJCQkJCQkJIGxpc3RfZGVsZXRlKGFsbF9jbGF1c2Vz LCByaW5mbykpOworCisJCQkJaWYgKGluZGxpc3QgPT0gTklMKQorCQkJCXsKKwkJCQkJcGF0 aGxpc3QgPSBOSUw7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJ CQlwYXRobGlzdCA9IGxpc3RfY29uY2F0KHBhdGhsaXN0LCBpbmRsaXN0KTsKKwkJCQkJY29u dGludWU7CisJCQkJfQorCQkJfQogCQkJZWxzZQogCQkJewogCQkJCVJlc3RyaWN0SW5mbyAq cmkgPSBjYXN0Tm9kZShSZXN0cmljdEluZm8sIG9yYXJnKTsKIAkJCQlMaXN0CSAgICpvcmFy Z3M7CiAKLQkJCQlBc3NlcnQoIXJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShyaSkpOwogCQkJ CW9yYXJncyA9IGxpc3RfbWFrZTEocmkpOwogCiAJCQkJaW5kbGlzdCA9IGJ1aWxkX3BhdGhz X2Zvcl9PUihyb290LCByZWwsCkBAIC0yODA3LDYgKzMxNTksNyBAQCBtYXRjaF9vcmNsYXVz ZV90b19pbmRleGNvbChQbGFubmVySW5mbyAqcm9vdCwKIAlPaWQJCQlpbnB1dGNvbGxpZCA9 IEludmFsaWRPaWQ7CiAJYm9vbAkJZmlyc3RUaW1lID0gdHJ1ZTsKIAlib29sCQloYXZlX3Bh cmFtID0gZmFsc2U7CisJSGVhcFR1cGxlCXRwOwogCiAJQXNzZXJ0KElzQShvcmNsYXVzZSwg Qm9vbEV4cHIpKTsKIAlBc3NlcnQob3JjbGF1c2UtPmJvb2xvcCA9PSBPUl9FWFBSKTsKQEAg LTI4NDIsNyArMzE5NSw3IEBAIG1hdGNoX29yY2xhdXNlX3RvX2luZGV4Y29sKFBsYW5uZXJJ bmZvICpyb290LAogCQlpZiAobGlzdF9sZW5ndGgoc3ViQ2xhdXNlLT5hcmdzKSAhPSAyKQog CQkJcmV0dXJuIE5VTEw7CiAKLQkJLyogUmVzdHJpY3RJbmZvIHBhcmFtZXRlcnMgbXVzdCBt YXRjaCBwYXJlbnQgKi8KKwkJLyogUmVzdHJpY3RJbmZvIHBhcmFtZXRlcnMgZG11c3QgbWF0 Y2ggcGFyZW50ICovCiAJCWlmIChzdWJSaW5mby0+aXNfcHVzaGVkX2Rvd24gIT0gcmluZm8t PmlzX3B1c2hlZF9kb3duIHx8CiAJCQlzdWJSaW5mby0+aXNfY2xvbmUgIT0gcmluZm8tPmlz X2Nsb25lIHx8CiAJCQlzdWJSaW5mby0+c2VjdXJpdHlfbGV2ZWwgIT0gcmluZm8tPnNlY3Vy aXR5X2xldmVsIHx8CkBAIC0yODgzLDYgKzMyMzYsMTUgQEAgbWF0Y2hfb3JjbGF1c2VfdG9f aW5kZXhjb2woUGxhbm5lckluZm8gKnJvb3QsCiAJCQlyZXR1cm4gTlVMTDsKIAkJfQogCisJ CXRwID0gU2VhcmNoU3lzQ2FjaGUzKEFNT1BPUElELAorCQkJCQkJCU9iamVjdElkR2V0RGF0 dW0ob3BubyksCisJCQkJCQkJQ2hhckdldERhdHVtKEFNT1BfU0VBUkNIKSwKKwkJCQkJCQlP YmplY3RJZEdldERhdHVtKGluZGV4LT5vcGZhbWlseVtpbmRleGNvbF0pKTsKKwkJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJCXJldHVybiBOVUxMOworCisJCVJlbGVhc2VTeXND YWNoZSh0cCk7CisKIAkJLyoKIAkJICogSWdub3JlIGFueSBSZWxhYmVsVHlwZSBub2RlIGFi b3ZlIHRoZSBvcGVyYW5kcy4gIFRoaXMgaXMgbmVlZGVkIHRvCiAJCSAqIGJlIGFibGUgdG8g YXBwbHkgaW5kZXhzY2FubmluZyBpbiBiaW5hcnktY29tcGF0aWJsZS1vcGVyYXRvciBjYXNl cy4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4 Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRl eCBjMmIyNTkzNmM4Yy4uY2FjMDc2YWJiODggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTE5MTMsNiArMTkxMywyNyBAQCBTRUxFQ1Qg KiBGUk9NIHRlbmsxCiAgICAgICA0MiB8ICAgIDU1MzAgfCAgIDAgfCAgICAyIHwgICAyIHwg ICAgICAyIHwgICAgICA0MiB8ICAgICAgIDQyIHwgICAgICAgICAgNDIgfCAgICAgICAgNDIg fCAgICAgICA0MiB8ICA4NCB8ICAgODUgfCBRQkFBQUEgICB8IFNFSUFBQSAgIHwgT09PT3h4 CiAoMSByb3cpCiAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEK KyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMTo6bnVtZXJpYyBPUiB0 ZW50aG91cyA9IDM6OmludDQgT1IgdGVudGhvdXMgPSA0Mjo6bnVtZXJpYyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Qml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgUmVjaGVjayBDb25kOiAodGhvdXNhbmQg PSA0MikKKyAgIEZpbHRlcjogKCgodGVudGhvdXMpOjpudW1lcmljID0gJzEnOjpudW1lcmlj KSBPUiAodGVudGhvdXMgPSAzKSBPUiAoKHRlbnRob3VzKTo6bnVtZXJpYyA9ICc0Mic6Om51 bWVyaWMpKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRo b3VzCisgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MikKKyg1IHJvd3MpCisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGVu dGhvdXMgPSAxOjpudW1lcmljIE9SIHRlbnRob3VzID0gMzo6aW50NCBPUiB0ZW50aG91cyA9 IDQyOjpudW1lcmljOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHRlbmsxCisgICBGaWx0ZXI6ICgo KHRlbnRob3VzKTo6bnVtZXJpYyA9ICcxJzo6bnVtZXJpYykgT1IgKHRlbnRob3VzID0gMykg T1IgKCh0ZW50aG91cyk6Om51bWVyaWMgPSAnNDInOjpudW1lcmljKSkKKygyIHJvd3MpCisK IEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgIFdI RVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7 CkBAIC0xOTgyLDI1ICsyMDAzLDI0IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiBF WFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVS RSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1Ig dGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFnZ3JlZ2F0 ZQogICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJlY2hlY2sg Q29uZDogKCgoaHVuZHJlZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IDQyKSBPUiAodGhvdXNh bmQgPSA5OSkgT1IgKHRlbnRob3VzIDwgMikpKSBPUiAodGhvdXNhbmQgPSA0MSkpCisgICAg ICAgICBSZWNoZWNrIENvbmQ6ICgoKGh1bmRyZWQgPSA0MikgQU5EICgodGhvdXNhbmQgPSBB TlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkgT1IgKHRlbnRob3VzIDwgMikpKSBPUiAodGhv dXNhbmQgPSA0MSkpCisgICAgICAgICBGaWx0ZXI6ICgoKGh1bmRyZWQgPSA0MikgQU5EICgo dGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gOTkpIE9SICh0ZW50aG91cyA8IDIpKSkg T1IgKHRob3VzYW5kID0gNDEpKQogICAgICAgICAgLT4gIEJpdG1hcE9yCiAgICAgICAgICAg ICAgICAtPiAgQml0bWFwQW5kCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKICAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXBPcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MikKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91 cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3Vz YW5kID0gOTkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190 ZW50aG91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHRlbnRob3VzIDwgMikKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biB0ZW5rMV90aG91c190ZW50aG91cwogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHRob3VzYW5kID0gNDEpCi0oMTYgcm93cykKKygxNSByb3dzKQogCiBTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9 IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQx OwpAQCAtMjAxMiwyMiArMjAzMiwyMSBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQog RVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hF UkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9S IHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFn Z3JlZ2F0ZQogICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJl Y2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0 aG91c2FuZCA9IDQxKSBPUiAoKHRob3VzYW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAyKSkp KQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQgPSA0MikgQU5EICgoKHRob3Vz YW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAyKSkgT1IgKHRob3VzYW5kID0gQU5ZICgnezQy LDQxfSc6OmludGVnZXJbXSkpKSkKKyAgICAgICAgIEZpbHRlcjogKCh0aG91c2FuZCA9IDQy KSBPUiAodGhvdXNhbmQgPSA0MSkgT1IgKCh0aG91c2FuZCA9IDk5KSBBTkQgKHRlbnRob3Vz ID0gMikpKQogICAgICAgICAgLT4gIEJpdG1hcEFuZAogICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFw T3IKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHRob3VzYW5kID0gNDIpCi0gICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQxKQogICAgICAgICAgICAgICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gOTkpIEFO RCAodGVudGhvdXMgPSAyKSkKLSgxMyByb3dzKQorICAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsNDF9 Jzo6aW50ZWdlcltdKSkKKygxMiByb3dzKQogCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5r MQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5k ID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKQEAgLTIwMzYsNiAr MjA1NSw3OCBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICAgIDEwCiAoMSByb3cp CiAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxLCB0 ZW5rMgorICBXSEVSRSB0ZW5rMS5odW5kcmVkID0gNDIgQU5EICh0ZW5rMi50aG91c2FuZCA9 IDQyIE9SIHRlbmsxLnRob3VzYW5kID0gNDEgT1IgdGVuazIudGVudGhvdXMgPSAyKSBBTkQK KyAgdGVuazIuaHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQ7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcAorICAgICAgICAg Sm9pbiBGaWx0ZXI6ICgodGVuazIudGhvdXNhbmQgPSA0MikgT1IgKHRlbmsxLnRob3VzYW5k ID0gNDEpIE9SICh0ZW5rMi50ZW50aG91cyA9IDIpKQorICAgICAgICAgLT4gIEJpdG1hcCBI ZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKGh1bmRy ZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9 IDQyKQorICAgICAgICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMgorICAgICAgICAgICAgICAgICAgICAgUmVjaGVjayBD b25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsyX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisoMTIgcm93cykKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEsIHRlbmsyCisgIFdIRVJFIHRl bmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0gNDIgT1IgdGVuazIudGhv dXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAorICB0ZW5rMi5odW5kcmVk ID0gdGVuazEuaHVuZHJlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgTmVzdGVkIExvb3AKKyAgICAg ICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsyCisgICAgICAgICAgICAgICBSZWNo ZWNrIENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICBGaWx0ZXI6ICgodGhv dXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gNDEpIE9SICh0ZW50aG91cyA9IDIpKQorICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsyX2h1bmRyZWQKKyAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAg ICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRlbmsxX2h1bmRyZWQgb24gdGVuazEKKyAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisoOSByb3dzKQorCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMSBKT0lOIHRl bmsyIE9OCisgIHRlbmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0gNDIg T1IgdGVuazIudGhvdXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAorICB0 ZW5rMi5odW5kcmVkID0gdGVuazEuaHVuZHJlZDsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgTmVzdGVk IExvb3AKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsyCisgICAgICAg ICAgICAgICBSZWNoZWNrIENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICBG aWx0ZXI6ICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gNDEpIE9SICh0ZW50aG91 cyA9IDIpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsy X2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0g NDIpCisgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRlbmsxX2h1bmRyZWQg b24gdGVuazEKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCiso OSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZW5rMSBMRUZUIEpPSU4gdGVuazIgT04KKyAgdGVuazEuaHVuZHJlZCA9IDQyIEFORCAodGVu azIudGhvdXNhbmQgPSA0MiBPUiB0ZW5rMi50aG91c2FuZCA9IDQxIE9SIHRlbmsyLnRlbnRo b3VzID0gMikgQU5ECisgIHRlbmsyLmh1bmRyZWQgPSB0ZW5rMS5odW5kcmVkOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAg IEpvaW4gRmlsdGVyOiAodGVuazEuaHVuZHJlZCA9IDQyKQorICAgICAgICAgLT4gIEluZGV4 IE9ubHkgU2NhbiB1c2luZyB0ZW5rMV9odW5kcmVkIG9uIHRlbmsxCisgICAgICAgICAtPiAg TWVtb2l6ZQorICAgICAgICAgICAgICAgQ2FjaGUgS2V5OiB0ZW5rMS5odW5kcmVkCisgICAg ICAgICAgICAgICBDYWNoZSBNb2RlOiBsb2dpY2FsCisgICAgICAgICAgICAgICAtPiAgSW5k ZXggU2NhbiB1c2luZyB0ZW5rMl9odW5kcmVkIG9uIHRlbmsyCisgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQpCisgICAgICAgICAg ICAgICAgICAgICBGaWx0ZXI6ICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gNDEp IE9SICh0ZW50aG91cyA9IDIpKQorKDEwIHJvd3MpCisKIC0tCiAtLSBDaGVjayBiZWhhdmlv ciB3aXRoIGR1cGxpY2F0ZSBpbmRleCBjb2x1bW4gY29udGVudHMKIC0tCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qb2luLm91dAppbmRleCBhYmU5OGZmM2M1My4uZDI2YTkzODMxZDUgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dApAQCAtNDIyNiwyMCArNDIyNiwyMCBA QCBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCiAgTmVzdGVkIExvb3AK ICAgIEpvaW4gRmlsdGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIp KSBPUiAoKGEudW5pcXVlMiA9IDMpIEFORCAoYi5odW5kcmVkID0gNCkpKQogICAgLT4gIEJp dG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYgotICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVu aXF1ZTEgPSAyKSBPUiAoaHVuZHJlZCA9IDQpKQorICAgICAgICAgUmVjaGVjayBDb25kOiAo KGh1bmRyZWQgPSA0KSBPUiAodW5pcXVlMSA9IDIpKQogICAgICAgICAgLT4gIEJpdG1hcE9y Ci0gICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVl MQotICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAyKQogICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNCkKKyAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDIpCiAgICAtPiAgTWF0ZXJp YWxpemUKICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKLSAgICAg ICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSAz KSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUyID0gMykgT1IgKHVu aXF1ZTEgPSAxKSkKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgotICAgICAgICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICAgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUy CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IDMp CisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFf dW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1 ZTEgPSAxKQogKDE3IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikKQEAgLTQyNTMsMTIg KzQyNTMsMTIgQEAgc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogICAg ICAgICAgRmlsdGVyOiAoKHVuaXF1ZTEgPSAyKSBPUiAodGVuID0gNCkpCiAgICAtPiAgTWF0 ZXJpYWxpemUKICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKLSAg ICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIg PSAzKSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUyID0gMykgT1Ig KHVuaXF1ZTEgPSAxKSkKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgotICAgICAgICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKICAg ICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlx dWUyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9 IDMpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTEgPSAxKQogKDEyIHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikKQEAgLTQyNzAs MjEgKzQyNzAsMjEgQEAgc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgog IE5lc3RlZCBMb29wCiAgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkgQU5EIChi LnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51bmlxdWUyID0gMykgT1IgKGEudW5pcXVlMiA9IDcp KSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRl bmsxIGIKLSAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMikgT1IgKGh1bmRy ZWQgPSA0KSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNCkgT1IgKHVu aXF1ZTEgPSAyKSkKICAgICAgICAgIC0+ICBCaXRtYXBPcgotICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKICAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCiAgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHVuaXF1ZTEgPSAyKQogICAgLT4gIE1hdGVyaWFsaXplCiAgICAgICAgICAtPiAg Qml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCi0gICAgICAgICAgICAgICBSZWNoZWNrIENv bmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2Vy W10pKSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUyID0gQU5ZICgn ezMsN30nOjppbnRlZ2VyW10pKSBPUiAodW5pcXVlMSA9IDEpKQogICAgICAgICAgICAgICAg RmlsdGVyOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpIE9SICh1bmlxdWUyID0g NykpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKLSAgICAgICAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCiAgICAgICAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSBBTlkgKCd7Myw3 fSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogKDE4IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9m ZikKQEAgLTQyOTYsMjEgKzQyOTYsMjEgQEAgc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4g dGVuazEgYiBvbgogIE5lc3RlZCBMb29wCiAgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUx ID0gMSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51bmlxdWUyID0gMykgT1IgKGEu dW5pcXVlMiA9IDcpKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKICAgIC0+ICBCaXRtYXAgSGVh cCBTY2FuIG9uIHRlbmsxIGIKLSAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0g MikgT1IgKGh1bmRyZWQgPSA0KSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVk ID0gNCkgT1IgKHVuaXF1ZTEgPSAyKSkKICAgICAgICAgIC0+ICBCaXRtYXBPcgotICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCiAgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCisgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAyKQogICAgLT4gIE1hdGVyaWFsaXplCiAg ICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCi0gICAgICAgICAgICAg ICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMs N30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlx dWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSBPUiAodW5pcXVlMSA9IDEpKQogICAg ICAgICAgICAgICAgRmlsdGVyOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpIE9S ICh1bmlxdWUyID0gNykpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKLSAgICAgICAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCiAg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5p cXVlMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIg PSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogKDE4IHJvd3MpCiAKIGV4cGxh aW4gKGNvc3RzIG9mZikKQEAgLTQzMjQsMTggKzQzMjQsMTYgQEAgc2VsZWN0ICogZnJvbSB0 ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsxIGIKICAg IC0+ICBNYXRlcmlhbGl6ZQogICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVu azEgYQotICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPCAyMCkgT1Ig KHVuaXF1ZTEgPSAzKSBPUiAodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMs N30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlx dWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSBPUiAodW5pcXVlMSA9IEFOWSAoJ3sz LDF9Jzo6aW50ZWdlcltdKSkgT1IgKHVuaXF1ZTEgPCAyMCkpCiAgICAgICAgICAgICAgICBG aWx0ZXI6ICgodW5pcXVlMSA8IDIwKSBPUiAodW5pcXVlMSA9IDMpIE9SICh1bmlxdWUxID0g MSkgT1IgKHVuaXF1ZTIgPSAzKSBPUiAodW5pcXVlMiA9IDcpKQogICAgICAgICAgICAgICAg LT4gIEJpdG1hcE9yCi0gICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdW5pcXVlMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHVuaXF1ZTEgPCAyMCkKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDMpCi0gICAgICAgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogICAgICAgICAgICAgICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjpp bnRlZ2VyW10pKQotKDE2IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSBBTlkgKCd7MywxfSc6OmludGVnZXJbXSkpCisg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5p cXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEg PCAyMCkKKygxNCByb3dzKQogCiAtLQogLS0gdGVzdCBwbGFjZW1lbnQgb2YgbW92YWJsZSBx dWFscyBpbiBhIHBhcmFtZXRlcml6ZWQgam9pbiB0cmVlCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0CmluZGV4IDMxOTE5MDg1NWJkLi5lZjg5MGI5NmNj NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQKQEAg LTQ0OTIsNiArNDQ5MiwxMyBAQCBTRUxFQ1QgKiBGUk9NIHJsc190YmwgV0hFUkUgYSA8PDwg MTAwMDsKIC0tLQogKDAgcm93cykKIAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHJsc190YmwgV0hFUkUgYSA8PDwgMTAwMCBvciBhIDw8PCA5MDA7CisgICAgICAgIFFV RVJZIFBMQU4gICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQK KyAgIE9uZS1UaW1lIEZpbHRlcjogZmFsc2UKKygyIHJvd3MpCisKIERST1AgT1BFUkFUT1Ig PDw8IChpbnQsIGludCk7CiBEUk9QIEZVTkNUSU9OIG9wX2xlYWsoaW50LCBpbnQpOwogUkVT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dGF0c19leHQub3V0CmluZGV4IDhjNGRhOTU1MDg0Li5hNGM3YmU0ODdlZiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dApAQCAtMzI1NCw2ICszMjU0LDgg QEAgQ1JFQVRFIE9QRVJBVE9SIDw8PCAocHJvY2VkdXJlID0gb3BfbGVhaywgbGVmdGFyZyA9 IGludCwgcmlnaHRhcmcgPSBpbnQsCiAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdCA9 IHNjYWxhcmx0c2VsKTsKIFNFTEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBX SEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBQZXJtaXNzaW9uIGRlbmllZAogRVJST1I6 ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgcHJpdl90ZXN0X3RibAorU0VMRUNUICog RlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFdIRVJFIGEgPDw8IDAgT1IgYiA8PDwgMDsK K0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlIHByaXZfdGVzdF90YmwKIERF TEVURSBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF90YmwgV0hFUkUgYSA8PDwgMCBBTkQgYiA8 PDwgMDsgLS0gUGVybWlzc2lvbiBkZW5pZWQKIEVSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQg Zm9yIHRhYmxlIHByaXZfdGVzdF90YmwKIC0tIEdyYW50IGFjY2VzcyB2aWEgYSBzZWN1cml0 eSBiYXJyaWVyIHZpZXcsIGJ1dCBoaWRlIGFsbCBkYXRhCkBAIC0zMjY4LDYgKzMyNzAsMTEg QEAgU0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdmlldyBXSEVSRSBhIDw8PCAw IEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGwKIC0tLSstLS0KICgwIHJvd3MpCiAKK1NF TEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3ZpZXcgV0hFUkUgYSA8PDwgMCBPUiBi IDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKKyBhIHwgYiAKKy0tLSstLS0KKygwIHJvd3Mp CisKIERFTEVURSBGUk9NIHRzdHN0YXRzLnByaXZfdGVzdF92aWV3IFdIRVJFIGEgPDw8IDAg QU5EIGIgPDw8IDA7IC0tIFNob3VsZCBub3QgbGVhawogLS0gR3JhbnQgdGFibGUgYWNjZXNz LCBidXQgaGlkZSBhbGwgZGF0YSB3aXRoIFJMUwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOwpAQCAtMzI4MCw2ICszMjg3LDExIEBAIFNFTEVDVCAqIEZST00gdHN0c3RhdHMucHJp dl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxl CiAtLS0rLS0tCiAoMCByb3dzKQogCitTRUxFQ1QgKiBGUk9NIHRzdHN0YXRzLnByaXZfdGVz dF90YmwgV0hFUkUgYSA8PDwgMCBPUiBiIDw8PCAwOworIGEgfCBiIAorLS0tKy0tLQorKDAg cm93cykKKwogREVMRVRFIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8 PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKIC0tIHByaXZpbGVnZSBjaGVj a3MgZm9yIHBnX3N0YXRzX2V4dCBhbmQgcGdfc3RhdHNfZXh0X2V4cHJzCiBSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3V1aWQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91dAppbmRl eCA2MDI2ZTE1ZWQzMS4uOGY0ZWYwZDdhNmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdXVpZC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91 dWlkLm91dApAQCAtMTI5LDYgKzEyOSwzNyBAQCBDUkVBVEUgSU5ERVggZ3VpZDFfYnRyZWUg T04gZ3VpZDEgVVNJTkcgQlRSRUUgKGd1aWRfZmllbGQpOwogQ1JFQVRFIElOREVYIGd1aWQx X2hhc2ggIE9OIGd1aWQxIFVTSU5HIEhBU0ggIChndWlkX2ZpZWxkKTsKIC0tIHVuaXF1ZSBp bmRleCB0ZXN0CiBDUkVBVEUgVU5JUVVFIElOREVYIGd1aWQxX3VuaXF1ZV9CVFJFRSBPTiBn dWlkMSBVU0lORyBCVFJFRSAoZ3VpZF9maWVsZCk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgRlJPTSBndWlkMSBXSEVSRSBndWlkX2ZpZWxkIDw+ICcxMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMScgT1IKKwkJCQkJCQlndWlkX2ZpZWxkIDw+ICcz ZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiBndWlkMQorICAgICAgICAg RmlsdGVyOiAoKGd1aWRfZmllbGQgPD4gJzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTEx MTExMTExMSc6OnV1aWQpIE9SIChndWlkX2ZpZWxkIDw+ICczZjNlM2MzYi0zYTMwLTM5Mzgt MzczNi0zNTM0MzNhMjMxM2UnOjp1dWlkKSkKKygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIGd1aWQxIFdIRVJFIGd1aWRfZmllbGQgPD0g JzIyMjIyMjIyLTIyMjItMjIyMi0yMjIyLTIyMjIyMjIyMjIyMicgT1IKKwkJCQkJCQkJCWd1 aWRfZmllbGQgPD0gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyBPUgorCQkJ CQkJCQkJZ3VpZF9maWVsZCA8PSAnM2YzZTNjM2ItM2EzMC0zOTM4LTM3MzYtMzUzNDMzYTIz MTNlJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dy ZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiBndWlkMQorICAgICAgICAgRmlsdGVyOiAoKGd1 aWRfZmllbGQgPD0gJzIyMjIyMjIyLTIyMjItMjIyMi0yMjIyLTIyMjIyMjIyMjIyMic6OnV1 aWQpIE9SIChndWlkX2ZpZWxkIDw9ICcxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTEx MTExMTEnOjp1dWlkKSBPUiAoZ3VpZF9maWVsZCA8PSAnM2YzZTNjM2ItM2EzMC0zOTM4LTM3 MzYtMzUzNDMzYTIzMTNlJzo6dXVpZCkpCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBndWlkMSBXSEVSRSBndWlkX2ZpZWxkID0gJzNm M2UzYzNiLTNhMzAtMzkzOC0zNzM2LTM1MzQzM2EyMzEzZScgT1IKKwkJCQkJCQlndWlkX2Zp ZWxkID0gJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJzsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2NhbiBvbiBndWlkMQorICAgICAgICAg RmlsdGVyOiAoKGd1aWRfZmllbGQgPSAnM2YzZTNjM2ItM2EzMC0zOTM4LTM3MzYtMzUzNDMz YTIzMTNlJzo6dXVpZCkgT1IgKGd1aWRfZmllbGQgPSAnMTExMTExMTEtMTExMS0xMTExLTEx MTEtMTExMTExMTExMTExJzo6dXVpZCkpCisoMyByb3dzKQorCiAtLSBzaG91bGQgZmFpbAog SU5TRVJUIElOVE8gZ3VpZDEoZ3VpZF9maWVsZCkgVkFMVUVTKCcxMTExMTExMS0xMTExLTEx MTEtMTExMS0xMTExMTExMTExMTEnKTsKIEVSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2 aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiZ3VpZDFfdW5pcXVlX2J0cmVlIgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXggZjc0YWQ0MTVmYmYuLjdlMTA4 ZjliMjgzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXgu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTc1 MCw2ICs3NTAsMTQgQEAgU0VMRUNUICogRlJPTSB0ZW5rMQogU0VMRUNUICogRlJPTSB0ZW5r MQogICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3Vz ID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKIAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU ICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAx OjpudW1lcmljIE9SIHRlbnRob3VzID0gMzo6aW50NCBPUiB0ZW50aG91cyA9IDQyOjpudW1l cmljKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBX SEVSRSB0ZW50aG91cyA9IDE6Om51bWVyaWMgT1IgdGVudGhvdXMgPSAzOjppbnQ0IE9SIHRl bnRob3VzID0gNDI6Om51bWVyaWM7CisKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBj b3VudCgqKSBGUk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5k ID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CkBAIC03ODAsNiArNzg4LDI1IEBAIFNFTEVDVCBj b3VudCgqKSBGUk9NIHRlbmsxCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVS RSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1Ig dGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKIAorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEsIHRlbmsyCisgIFdIRVJFIHRlbmsxLmh1 bmRyZWQgPSA0MiBBTkQgKHRlbmsyLnRob3VzYW5kID0gNDIgT1IgdGVuazEudGhvdXNhbmQg PSA0MSBPUiB0ZW5rMi50ZW50aG91cyA9IDIpIEFORAorICB0ZW5rMi5odW5kcmVkID0gdGVu azEuaHVuZHJlZDsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZS T00gdGVuazEsIHRlbmsyCisgIFdIRVJFIHRlbmsxLmh1bmRyZWQgPSA0MiBBTkQgKHRlbmsy LnRob3VzYW5kID0gNDIgT1IgdGVuazIudGhvdXNhbmQgPSA0MSBPUiB0ZW5rMi50ZW50aG91 cyA9IDIpIEFORAorICB0ZW5rMi5odW5kcmVkID0gdGVuazEuaHVuZHJlZDsKKworRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEgSk9JTiB0ZW5rMiBP TgorICB0ZW5rMS5odW5kcmVkID0gNDIgQU5EICh0ZW5rMi50aG91c2FuZCA9IDQyIE9SIHRl bmsyLnRob3VzYW5kID0gNDEgT1IgdGVuazIudGVudGhvdXMgPSAyKSBBTkQKKyAgdGVuazIu aHVuZHJlZCA9IHRlbmsxLmh1bmRyZWQ7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRlbmsxIExFRlQgSk9JTiB0ZW5rMiBPTgorICB0ZW5rMS5odW5k cmVkID0gNDIgQU5EICh0ZW5rMi50aG91c2FuZCA9IDQyIE9SIHRlbmsyLnRob3VzYW5kID0g NDEgT1IgdGVuazIudGVudGhvdXMgPSAyKSBBTkQKKyAgdGVuazIuaHVuZHJlZCA9IHRlbmsx Lmh1bmRyZWQ7CiAtLQogLS0gQ2hlY2sgYmVoYXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5kZXgg Y29sdW1uIGNvbnRlbnRzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cm93c2VjdXJpdHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3Fs CmluZGV4IDMwMTFkNzFiMTJiLi42ZDI0MTRiNjA0NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcm93c2VjdXJpdHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Jvd3NlY3VyaXR5LnNxbApAQCAtMjE3Nyw2ICsyMTc3LDcgQEAgQ1JFQVRFIEZVTkNUSU9O IG9wX2xlYWsoaW50LCBpbnQpIFJFVFVSTlMgYm9vbAogQ1JFQVRFIE9QRVJBVE9SIDw8PCAo cHJvY2VkdXJlID0gb3BfbGVhaywgbGVmdGFyZyA9IGludCwgcmlnaHRhcmcgPSBpbnQsCiAg ICAgICAgICAgICAgICAgICAgICByZXN0cmljdCA9IHNjYWxhcmx0c2VsKTsKIFNFTEVDVCAq IEZST00gcmxzX3RibCBXSEVSRSBhIDw8PCAxMDAwOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHJsc190YmwgV0hFUkUgYSA8PDwgMTAwMCBvciBhIDw8PCA5MDA7CiBE Uk9QIE9QRVJBVE9SIDw8PCAoaW50LCBpbnQpOwogRFJPUCBGVU5DVElPTiBvcF9sZWFrKGlu dCwgaW50KTsKIFJFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdGF0c19leHQuc3FsCmluZGV4IDBjMDhhNmNjNDJlLi41Yzc4NmIxNmM2ZiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCkBAIC0xNjM0LDYgKzE2MzQsNyBAQCBDUkVB VEUgRlVOQ1RJT04gb3BfbGVhayhpbnQsIGludCkgUkVUVVJOUyBib29sCiBDUkVBVEUgT1BF UkFUT1IgPDw8IChwcm9jZWR1cmUgPSBvcF9sZWFrLCBsZWZ0YXJnID0gaW50LCByaWdodGFy ZyA9IGludCwKICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0ID0gc2NhbGFybHRzZWwp OwogU0VMRUNUICogRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFdIRVJFIGEgPDw8IDAg QU5EIGIgPDw8IDA7IC0tIFBlcm1pc3Npb24gZGVuaWVkCitTRUxFQ1QgKiBGUk9NIHRzdHN0 YXRzLnByaXZfdGVzdF90YmwgV0hFUkUgYSA8PDwgMCBPUiBiIDw8PCAwOwogREVMRVRFIEZS T00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAt LSBQZXJtaXNzaW9uIGRlbmllZAogCiAtLSBHcmFudCBhY2Nlc3MgdmlhIGEgc2VjdXJpdHkg YmFycmllciB2aWV3LCBidXQgaGlkZSBhbGwgZGF0YQpAQCAtMTY0NSw2ICsxNjQ2LDcgQEAg R1JBTlQgU0VMRUNULCBERUxFVEUgT04gdHN0c3RhdHMucHJpdl90ZXN0X3ZpZXcgVE8gcmVn cmVzc19zdGF0c191c2VyMTsKIC0tIFNob3VsZCBub3cgaGF2ZSBhY2Nlc3MgdmlhIHRoZSB2 aWV3LCBidXQgc2VlIG5vdGhpbmcgYW5kIGxlYWsgbm90aGluZwogU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3N0YXRzX3VzZXIxOwogU0VMRUNUICogRlJPTSB0c3RzdGF0 cy5wcml2X3Rlc3RfdmlldyBXSEVSRSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQg bm90IGxlYWsKK1NFTEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3ZpZXcgV0hFUkUg YSA8PDwgMCBPUiBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKIERFTEVURSBGUk9NIHRz dHN0YXRzLnByaXZfdGVzdF92aWV3IFdIRVJFIGEgPDw8IDAgQU5EIGIgPDw8IDA7IC0tIFNo b3VsZCBub3QgbGVhawogCiAtLSBHcmFudCB0YWJsZSBhY2Nlc3MsIGJ1dCBoaWRlIGFsbCBk YXRhIHdpdGggUkxTCkBAIC0xNjU1LDYgKzE2NTcsNyBAQCBHUkFOVCBTRUxFQ1QsIERFTEVU RSBPTiB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFRPIHJlZ3Jlc3Nfc3RhdHNfdXNlcjE7CiAt LSBTaG91bGQgbm93IGhhdmUgZGlyZWN0IHRhYmxlIGFjY2VzcywgYnV0IHNlZSBub3RoaW5n IGFuZCBsZWFrIG5vdGhpbmcKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19z dGF0c191c2VyMTsKIFNFTEVDVCAqIEZST00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVS RSBhIDw8PCAwIEFORCBiIDw8PCAwOyAtLSBTaG91bGQgbm90IGxlYWsKK1NFTEVDVCAqIEZS T00gdHN0c3RhdHMucHJpdl90ZXN0X3RibCBXSEVSRSBhIDw8PCAwIE9SIGIgPDw8IDA7CiBE RUxFVEUgRlJPTSB0c3RzdGF0cy5wcml2X3Rlc3RfdGJsIFdIRVJFIGEgPDw8IDAgQU5EIGIg PDw8IDA7IC0tIFNob3VsZCBub3QgbGVhawogCiAtLSBwcml2aWxlZ2UgY2hlY2tzIGZvciBw Z19zdGF0c19leHQgYW5kIHBnX3N0YXRzX2V4dF9leHBycwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvdXVpZC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNx bAppbmRleCBjODhmNmQwODdhNy4uNzVlZTk2NmRlZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQu c3FsCkBAIC02Myw2ICs2MywxOCBAQCBDUkVBVEUgSU5ERVggZ3VpZDFfaGFzaCAgT04gZ3Vp ZDEgVVNJTkcgSEFTSCAgKGd1aWRfZmllbGQpOwogCiAtLSB1bmlxdWUgaW5kZXggdGVzdAog Q1JFQVRFIFVOSVFVRSBJTkRFWCBndWlkMV91bmlxdWVfQlRSRUUgT04gZ3VpZDEgVVNJTkcg QlRSRUUgKGd1aWRfZmllbGQpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgRlJPTSBndWlkMSBXSEVSRSBndWlkX2ZpZWxkIDw+ICcxMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMScgT1IKKwkJCQkJCQlndWlkX2ZpZWxkIDw+ICczZjNlM2MzYi0z YTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIEZST00gZ3VpZDEgV0hFUkUgZ3VpZF9maWVsZCA8PSAnMjIyMjIyMjIt MjIyMi0yMjIyLTIyMjItMjIyMjIyMjIyMjIyJyBPUgorCQkJCQkJCQkJZ3VpZF9maWVsZCA8 PSAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnIE9SCisJCQkJCQkJCQlndWlk X2ZpZWxkIDw9ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnOworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIEZST00gZ3VpZDEgV0hFUkUgZ3Vp ZF9maWVsZCA9ICczZjNlM2MzYi0zYTMwLTM5MzgtMzczNi0zNTM0MzNhMjMxM2UnIE9SCisJ CQkJCQkJZ3VpZF9maWVsZCA9ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc7 CisKIC0tIHNob3VsZCBmYWlsCiBJTlNFUlQgSU5UTyBndWlkMShndWlkX2ZpZWxkKSBWQUxV RVMoJzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMScpOwogCmRpZmYgLS1n aXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDU0N2QxNGIzZTdjLi5mNWM0YjUxNDY0NiAxMDA2 NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE3NjMsNiArMTc2Myw3IEBAIE9wckNh Y2hlS2V5CiBPcHJJbmZvCiBPcHJQcm9vZkNhY2hlRW50cnkKIE9wclByb29mQ2FjaGVLZXkK K09yQXJnSW5kZXhNYXRjaAogT3V0ZXJKb2luQ2xhdXNlSW5mbwogT3V0cHV0UGx1Z2luQ2Fs bGJhY2tzCiBPdXRwdXRQbHVnaW5PcHRpb25zCi0tIAoyLjM0LjEKCg== --------------QtYpAuGvcTKQES4Z3B4hKtnU--