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.96) (envelope-from ) id 1vx6MA-00FSwx-2d for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 16:42:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vx6L8-001oan-1N for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 16:41:50 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vx6L7-001oaY-27 for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 16:41:50 +0000 Received: from mail-lj1-x22b.google.com ([2a00:1450:4864:20::22b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vx6L4-000000002me-0PJg for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 16:41:49 +0000 Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-389f2c58d96so6527151fa.0 for ; Mon, 02 Mar 2026 08:41:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772469705; x=1773074505; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=9eYePUg7DsNzhjC3fiadYam/wSv5DFdwCWf8sIAMDKI=; b=l7+8JAMoYztSqX/sDAE1RfnOfDwEnoOU1g96e9/pMku9vqFZFe7/BapVNN/usg66mf Jxto24ysW9KgQ7nG7gR5x4kgxqj6lyC60mw7OJRQRZ6jeV6yqoTtNf2jdYk1PBV5if4a 3oLZqVz3umd+8DvYhxzWUuyhimPXcYw7sGxGhpSY7JxqEqMohJRwaODumJKDm6Vzt+J8 TQma1YMmU2Eg2z5gKPf1Ca8xdDsPtyep3zPDNOqMeHhjkhnCvVZvUcEoYPXcgmCd12ou AY3ZiR1j4mWJbYd5k55+58JlPgV0V+1lYsUpQwwfwTKFUMaJS3hKp8+VgJOJ2/0FZU4G yq/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772469705; x=1773074505; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=9eYePUg7DsNzhjC3fiadYam/wSv5DFdwCWf8sIAMDKI=; b=qPhciCapTvcRrF13udLIDFU2cbWulcf3SVB738ayQ2+DLbagxIDExksvIrsM3rPtNs aztwrGiJ/CdGHU4gk58XL+sSdbOJjIs+ESfAr5m2sa8fM4Fic+Ou0BVywc4AqwqbNeqD EaCocmlKvMYvw6UPLme5xo9KNOBkuSf40FnrrFUntZ1qyLKq6a62jEsnuk0x1GlgJl92 pSws3+rVmHXzOIbpm6gTOfmpmaXTaztKkq4RaZM3J7ij+f4wylQrRJtbUN8ID0a+1JAj JlIMsb5L39aJPm6HiibvkY1QTXz5HxVAF6JY1OXCcIApXbFzlDegMZNrEUPU11VhzYSt kj5Q== X-Gm-Message-State: AOJu0Yw7cDBQCwuMpN8BDr/6lYUsKobAegMEJEEmGfidks34rHwjBx8m ty84WDFa8cSI2YNcx5DxEqfoq0kNvToUAYZRS8JCXe7XAGDWElgabzhY X-Gm-Gg: ATEYQzw4Vdgg/fyN80mIOdNsSbwIPnKWx3Z2H/ooYBnSiIAwDsV5khnW8KwBYoR+/Gz tjsGCgUkC7oZ45azYbY0LFpdksai+u2XSB5tbwCIa+r2VE8LIcR8iNIlvIsTR6aXbjLjtqZgPbp 7rDENfldCHQPkYazcIpwTJsNGdupA2fH6rKolLpoSymvxqwCyNhHi3Q7Bi+LNeYbVI3r5X1iSXL Qy+LjzLYJ1dR7t5/nLZGR595rTmtGoeTr84Sa3Tj+Kow/eeQ1AxFBacrciF1zY+00lTg4HqQUB/ y04oBDz6zFPnRWOAV72BFE+k3U+KMnbvjJSte4dTSJh5hHbXcbxn7QbN03sWK2CjkUViTMKwhi4 netgz4PncS5uhC0nxuGTPcpXOoLbor15vFiA2heFns1CIWUyRlWNF+NUsHzYZWWGXno7Yxc3Cru 5X1WFvM1WDNyOcrEgCxRI3fVUYsuDPfSFWdeIy9qzFpYas/EYiFiulD3njEQXKGCcwy1Li86z3R dZFEBlUI60+vA== X-Received: by 2002:a2e:bc02:0:b0:389:fc6b:9441 with SMTP id 38308e7fff4ca-389ff36fdc2mr35892181fa.7.1772469704143; Mon, 02 Mar 2026 08:41:44 -0800 (PST) Received: from [192.168.5.53] ([163.116.235.145]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-389f2ffe01fsm28285991fa.26.2026.03.02.08.41.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 02 Mar 2026 08:41:43 -0800 (PST) Content-Type: multipart/mixed; boundary="------------qgK0dKGip2OpAIfSRaxWz5PK" Message-ID: Date: Mon, 2 Mar 2026 17:41:41 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] pg_get_domain_ddl: DDL reconstruction function for CREATE DOMAIN statement To: Tom Lane , Haritabh Gupta Cc: pgsql-hackers@lists.postgresql.org References: <177145861697.626.9698606909114409697.pgcf@coridan.postgresql.org> <2291232.1771459819@sss.pgh.pa.us> Content-Language: en-US From: Florin Irion In-Reply-To: <2291232.1771459819@sss.pgh.pa.us> 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. --------------qgK0dKGip2OpAIfSRaxWz5PK Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Haritabh, Tom, Thanks for the thorough review. v8 fixes all reported bugs and adds round-trip tests to address the forcing-function concern. Haritabh's bugs — all fixed in attached v8. On 19/02/26 01:10, Tom Lane wrote: > This report crystallized something that's been bothering me > about not only pg_get_domain_ddl() but all the similar patches > that are in the queue. They are adding a large amount of new > code that will have to be kept in sync with behavior elsewhere > and there is basically zero forcing function to ensure that > that happens. Even the rather-overly-voluminous test cases > proposed for the functions cannot catch errors of omission, > especially not future errors of omission. v8 adds a PL/pgSQL round-trip harness that captures DDL, drops the domain, re-executes the DDL, and ASSERTs the regenerated DDL is identical, any suggestions on how to improve it are welcomed. This function can be re-used also with other get__ddl as it accepts a parameter for the , this way we can use some common code. > I don't really know what to do about this, but I don't like the > implementation approach that's being proposed. I think it's > loading too much development effort and future maintenance effort > onto us in comparison to the expected benefit of having these > functions. I understand your point that there are multiple implementations and each have its own way of doing it. I think we should start somewhere and eventually ask further implementations to adapt to use common code or make it work with all existing (at that point) implementations, one at a time. pg_get_domain_ddl implementation uses mainly common code in ruleutils.c plus some glue code. We could maybe also create a new separate module and put all the code for all these features there. What do you think? Cheers, Florin -- *Florin Irion* www.enterprisedb.com --------------qgK0dKGip2OpAIfSRaxWz5PK Content-Type: text/plain; charset=UTF-8; name="v8-0001-Add-pg_get_domain_ddl-function-to-reconstruct-CRE.patch" Content-Disposition: attachment; filename*0="v8-0001-Add-pg_get_domain_ddl-function-to-reconstruct-CRE.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4ZTM2ODNhMTk5NTk1YWM2MTAwZWFiZDQ1OWFiOWNiY2M4NThmMGFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGbG9yaW4gSXJpb24gPGZsb3Jpbi5pcmlvbkBlbnRl cnByaXNlZGIuY29tPgpEYXRlOiBUaHUsIDE4IFNlcCAyMDI1IDE4OjUyOjQzICswMjAwClN1 YmplY3Q6IFtQQVRDSCB2OF0gQWRkIHBnX2dldF9kb21haW5fZGRsKCkgZnVuY3Rpb24gdG8g cmVjb25zdHJ1Y3QgQ1JFQVRFCiBET01BSU4gc3RhdGVtZW50cwpNSU1FLVZlcnNpb246IDEu MApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogOGJpdAoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHN5c3Rl bSBmdW5jdGlvbiBwZ19nZXRfZG9tYWluX2RkbCgpIHRoYXQKcmVjb25zdHJ1Y3RzIHRoZSBD UkVBVEUgRE9NQUlOIHN0YXRlbWVudCBmb3IgYSBnaXZlbiBkb21haW4uIFRoZSBmdW5jdGlv bgp0YWtlcyBhIHJlZ3R5cGUgcGFyYW1ldGVyIGFuZCByZXR1cm5zIHRoZSBjb21wbGV0ZSBE REwgc3RhdGVtZW50IGluY2x1ZGluZwp0aGUgZG9tYWluIG5hbWUsIGJhc2UgdHlwZSwgZGVm YXVsdCB2YWx1ZSwgYW5kIGFsbCBhc3NvY2lhdGVkIGNvbnN0cmFpbnRzLgoKVGhlIGZ1bmN0 aW9uIGZvbGxvd3MgdGhlIHNhbWUgcGF0dGVybiBhcyBvdGhlciBEREwgcmVjb25zdHJ1Y3Rp b24gZnVuY3Rpb25zCmxpa2UgcGdfZ2V0X2Z1bmN0aW9uZGVmKCkgYW5kIHBnX2dldF9jb25z dHJhaW50ZGVmKCksIHByb3ZpZGluZyBhCmRlY29tcGlsZWQgcmVjb25zdHJ1Y3Rpb24gcmF0 aGVyIHRoYW4gdGhlIG9yaWdpbmFsIGNvbW1hbmQgdGV4dC4KCktleSBmZWF0dXJlczoKKiBT dXBwb3J0cyBkb21haW5zIHdpdGggZGVmYXVsdCB2YWx1ZXMKKiBJbmNsdWRlcyBhbGwgZG9t YWluIGNvbnN0cmFpbnRzIChDSEVDSywgTk9UIE5VTEwpCiogTk9UIFZBTElEIGNvbnN0cmFp bnQgYXJlIGhhbmRsZWQgd2l0aCBhbiBleHRyYSBBTFRFUiBjb21tYW5kLgoqIFByb3Blcmx5 IHF1b3RlcyBpZGVudGlmaWVycyBhbmQgc2NoZW1hIG5hbWVzCiogSGFuZGxlcyBjb21wbGV4 IGNvbnN0cmFpbnQgZXhwcmVzc2lvbnMKKiBwcmV0dHkgcHJpbnRpbmcgc3VwcG9ydAoqIHdh cm4gYWdhaW5zdCBjb25mbGljdGluZyBidWlsdC1pbiBuYW1lcwoqIFVzZXMgR0VUX0RETF9Q UkVUVFlfRkxBR1MgbWFjcm8gZm9yIGNvbnNpc3RlbnQgcHJldHR5LXByaW50aW5nIGJlaGF2 aW9yCgpBIG5ldyBkb2N1bWVudGF0aW9uIHNlY3Rpb24gIkdldCBPYmplY3QgRERMIEZ1bmN0 aW9ucyIgaGFzIGJlZW4gY3JlYXRlZAp0byBncm91cCBEREwgcmVjb25zdHJ1Y3Rpb24gZnVu Y3Rpb25zLCBzdGFydGluZyB3aXRoIHBnX2dldF9kb21haW5fZGRsKCkuClRoaXMgcHJvdmlk ZXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUgRERMIGZ1bmN0aW9ucyBmb3Igb3RoZXIgb2Jq ZWN0IHR5cGVzLgoKQ29tcHJlaGVuc2l2ZSByZWdyZXNzaW9uIHRlc3RzIGFyZSBpbmNsdWRl ZCBjb3ZlcmluZyB2YXJpb3VzIGRvbWFpbgpjb25maWd1cmF0aW9ucy4gSW4gYSBzZXBhcmF0 ZSBmaWxlIHNxbC9vYmplY3RfZGRsLnNxbCB3aGVyZSBtb3JlCiJnZXRfb2JqZWN0X2RkbCIg ZnVuY3Rpb25zIGNhbiBiZSB0ZXN0ZWQgaW4gdGhlIGZ1dHVyZS4KUm91bmQtdHJpcCByZWdy ZXNzaW9uIHRlc3RzIHRoYXQgZHJvcCBhbmQgcmVjcmVhdGUgZXZlcnkgdGVzdCBkb21haW4K ZnJvbSBpdHMgb3duIERETCBvdXRwdXQsIGFzc2VydGluZyB0aGUgcmVnZW5lcmF0ZWQgRERM IGlzIGlkZW50aWNhbC4KVGhlIHJldXNhYmxlIGhhcm5lc3MgKHJlZ3Jlc3NfdmVyaWZ5X2Rk bF9yb3VuZHRyaXApIGlzIHBhcmFtZXRlcml6ZWQKYnkgb2JqZWN0IHR5cGUsIHNvIGZ1dHVy ZSBwZ19nZXRfKl9kZGwoKSBmdW5jdGlvbnMgY2FuIHJldXNlIGl0LgoKUmVmZXJlbmNlOiBQ Ry0xNTEKQXV0aG9yOiBGbG9yaW4gSXJpb24gPGZsb3Jpbi5pcmlvbkBlbnRlcnByaXNlZGIu Y29tPgpBdXRob3I6IFRpbSBXYWl6ZW5lZ2dlciA8dGltLndhaXplbmVnZ2VyQGVudGVycHJp c2VkYi5jb20+ClJldmlld2VkLWJ5OiDDgWx2YXJvIEhlcnJlcmEgYWx2aGVycmVAYWx2aC5u by1pcC5vcmcKUmV2aWV3ZWQtYnk6IGppYW4gaGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBOZWlsIENoZW4gPGNhcnBlbnRlci5uYWlsLmN6QGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IE1hbiBaZW5nIDx6ZW5nbWFuQGhhbG9kYnRlY2guY29tPgpSZXZpZXdlZC1i eTogSGFyaXRhYmggPEd1cHRhIGhhcml0YWJoMTk5MkBnbWFpbC5jb20+Ci0tLQogZG9jL3Ny Yy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwgICAgICAgICB8ICA1MyArKysKIHNyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgfCAgIDcgKwogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICB8IDI2MCArKysrKysrKysrKysrCiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2RkbC5vdXQgfCA0NjEgKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgfCAg IDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9kZGwuc3FsICAgICAgfCAxODAg KysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDk2NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9v YmplY3RfZGRsLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L29iamVjdF9kZGwuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1p bmZvLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbAppbmRleCAyOTRm NDVlODJhMy4uZWIxMjhmZWRlMDkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1 bmMtaW5mby5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCkBA IC0zODQ1LDQgKzM4NDUsNTcgQEAgYWNsICAgICAgfCB7cG9zdGdyZXM9YXJ3ZER4dG0vcG9z dGdyZXMsZm9vPXIvcG9zdGdyZXN9CiAKICAgPC9zZWN0Mj4KIAorICA8c2VjdDIgaWQ9ImZ1 bmN0aW9ucy1nZXQtb2JqZWN0LWRkbCI+CisgICA8dGl0bGU+R2V0IE9iamVjdCBEREwgRnVu Y3Rpb25zPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgVGhlIGZ1bmN0aW9ucyBzaG93biBp biA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwtdGFibGUiLz4KKyAg ICBwcmludCB0aGUgRERMIHN0YXRlbWVudHMgZm9yIHZhcmlvdXMgZGF0YWJhc2Ugb2JqZWN0 cy4KKyAgICAoVGhpcyBpcyBhIGRlY29tcGlsZWQgcmVjb25zdHJ1Y3Rpb24sIG5vdCB0aGUg b3JpZ2luYWwgdGV4dAorICAgIG9mIHRoZSBjb21tYW5kLikKKyAgIDwvcGFyYT4KKworICAg PHRhYmxlIGlkPSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwtdGFibGUiPgorICAgIDx0aXRs ZT5HZXQgT2JqZWN0IERETCBGdW5jdGlvbnM8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0i MSI+CisgICAgIDx0aGVhZD4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1 bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAg RnVuY3Rpb24KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIERlc2Ny aXB0aW9uCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgPC90 aGVhZD4KKworICAgICA8dGJvZHk+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xl PSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAg ICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJpbWFyeT5wZ19nZXRfZG9tYWluX2RkbDwv cHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19n ZXRfZG9tYWluX2RkbDwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj5kb21haW48L3BhcmFtZXRl cj4gPHR5cGU+cmVndHlwZTwvdHlwZT4KKyAgICAgICAgIDxvcHRpb25hbD4sIDxwYXJhbWV0 ZXI+cHJldHR5PC9wYXJhbWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDwvb3B0aW9uYWw+ KQorICAgICAgICA8cmV0dXJudmFsdWU+dGV4dDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9w YXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZWNvbnN0cnVjdHMgdGhlIGNyZWF0aW5n IGNvbW1hbmQgZm9yIGEgZG9tYWluLgorICAgICAgICBUaGUgcmVzdWx0IGlzIGEgY29tcGxl dGUgPGNvbW1hbmQ+Q1JFQVRFIERPTUFJTjwvY29tbWFuZD4gc3RhdGVtZW50LgorICAgICAg IDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxwYXJhbWV0ZXI+ZG9tYWlu PC9wYXJhbWV0ZXI+IHBhcmFtZXRlciB1c2VzIHR5cGUgPHR5cGU+cmVndHlwZTwvdHlwZT4s CisgICAgICAgIHdoaWNoIGZvbGxvd3MgdGhlIHN0YW5kYXJkIDx2YXJuYW1lPnNlYXJjaF9w YXRoPC92YXJuYW1lPiBmb3IgdHlwZSBuYW1lCisgICAgICAgIHJlc29sdXRpb24uIElmIGEg ZG9tYWluIG5hbWUgY29uZmxpY3RzIHdpdGggYSBidWlsdC1pbiB0eXBlIG5hbWUKKyAgICAg ICAgKGZvciBleGFtcGxlLCBhIGRvbWFpbiBuYW1lZCA8bGl0ZXJhbD5pbnQ8L2xpdGVyYWw+ KSwgeW91IG11c3QgdXNlIGEKKyAgICAgICAgc2NoZW1hLXF1YWxpZmllZCBuYW1lIChmb3Ig ZXhhbXBsZSwgPGxpdGVyYWw+J3B1YmxpYy5pbnQnOjpyZWd0eXBlPC9saXRlcmFsPikKKyAg ICAgICAgdG8gcmVmZXJlbmNlIHRoZSBkb21haW4uCisgICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgICA8L3Jvdz4KKyAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKyAgIDwvdGFi bGU+CisKKyAgPC9zZWN0Mj4KKwogICA8L3NlY3QxPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX2Z1bmN0aW9ucy5zcWwKaW5kZXggNjk2OTlmODgzMGEuLmY0ODI5Y2M3NzY1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKQEAgLTM3OCw2 ICszNzgsMTMgQEAgQkVHSU4gQVRPTUlDCiBFTkQ7CiAKIAorQ1JFQVRFIE9SIFJFUExBQ0Ug RlVOQ1RJT04KKyBwZ19nZXRfZG9tYWluX2RkbChkb21haW5fbmFtZSByZWd0eXBlLCBwcmV0 dHkgYm9vbCBERUZBVUxUIGZhbHNlKQorIFJFVFVSTlMgdGV4dAorIExBTkdVQUdFIGludGVy bmFsCisgU1RBQkxFIFBBUkFMTEVMIFNBRkUKK0FTICdwZ19nZXRfZG9tYWluX2RkbF9leHQn OworCiAtLQogLS0gVGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGZ1bmN0aW9ucyBtZWFu IHRoYXQgYW55b25lIGNhbiBleGVjdXRlIHRoZW0uCiAtLSBBIG51bWJlciBvZiBmdW5jdGlv bnMgc2hvdWxkbid0IGJlIGV4ZWN1dGFibGUgYnkganVzdCBhbnlvbmUsIGJ1dCByYXRoZXIK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBmMTZmMTUzNTc4NS4uNDVlMDRi Y2YxNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTk0LDYgKzk0LDEx IEBACiAJKChwcmV0dHkpID8gKFBSRVRUWUZMQUdfUEFSRU4gfCBQUkVUVFlGTEFHX0lOREVO VCB8IFBSRVRUWUZMQUdfU0NIRU1BKSBcCiAJIDogUFJFVFRZRkxBR19JTkRFTlQpCiAKKy8q IENvbnZlcnNpb24gb2YgImJvb2wgcHJldHR5IiBvcHRpb24gZm9yIERETCBzdGF0ZW1lbnRz ICgwIHdoZW4gZmFsc2UpICovCisjZGVmaW5lIEdFVF9ERExfUFJFVFRZX0ZMQUdTKHByZXR0 eSkgXAorCSgocHJldHR5KSA/IChQUkVUVFlGTEFHX1BBUkVOIHwgUFJFVFRZRkxBR19JTkRF TlQgfCBQUkVUVFlGTEFHX1NDSEVNQSkgXAorCSA6IDApCisKIC8qIERlZmF1bHQgbGluZSBs ZW5ndGggZm9yIHByZXR0eS1wcmludCB3cmFwcGluZzogMCBtZWFucyB3cmFwIGFsd2F5cyAq LwogI2RlZmluZSBXUkFQX0NPTFVNTl9ERUZBVUxUCQkwCiAKQEAgLTU0Nyw2ICs1NTIsMTEg QEAgc3RhdGljIHZvaWQgZ2V0X2pzb25fdGFibGVfbmVzdGVkX2NvbHVtbnMoVGFibGVGdW5j ICp0ZiwgSnNvblRhYmxlUGxhbiAqcGxhbiwKIAkJCQkJCQkJCQkgIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIGJvb2wgc2hvd2ltcGxpY2l0LAogCQkJCQkJCQkJ CSAgYm9vbCBuZWVkY29tbWEpOworc3RhdGljIHZvaWQgZ2V0X2Zvcm1hdHRlZF9zdHJpbmco U3RyaW5nSW5mbyBidWYsCisJCQkJCQkJCSBpbnQgcHJldHR5RmxhZ3MsCisJCQkJCQkJCSBp bnQgbm9PZlRhYkNoYXJzLAorCQkJCQkJCQkgY29uc3QgY2hhciAqZm10LC4uLikgcGdfYXR0 cmlidXRlX3ByaW50Zig0LCA1KTsKK3N0YXRpYyBjaGFyICpwZ19nZXRfZG9tYWluX2RkbF93 b3JrZXIoT2lkIGRvbWFpbl9vaWQsIGludCBwcmV0dHlGbGFncyk7CiAKICNkZWZpbmUgb25s eV9tYXJrZXIocnRlKSAgKChydGUpLT5pbmggPyAiIiA6ICJPTkxZICIpCiAKQEAgLTEzNzYw LDMgKzEzNzcwLDI1MyBAQCBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3Vu ZF9kYXR1bXMpCiAKIAlyZXR1cm4gYnVmLmRhdGE7CiB9CisKKy8qCisgKiBnZXRfZm9ybWF0 dGVkX3N0cmluZworICoKKyAqIFJldHVybiBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIHRoZSBz dHJpbmcuCisgKgorICogcHJldHR5RmxhZ3MgLSBJZiBwcmV0dHkgaXMgdHJ1ZSwgdGhlIG91 dHB1dCBpbmNsdWRlcyB0YWJzIChcdCkgYW5kIG5ld2xpbmVzIChcbikuCisgKiBub09mVGFi Q2hhcnMgLSBpbmRlbnQgd2l0aCBzcGVjaWZpZWQgbm8gb2YgdGFicy4KKyAqIGZtdCAtIHBy aW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5nIHVzZWQgYnkgYXBwZW5kU3RyaW5nSW5mb1ZBLgor ICovCitzdGF0aWMgdm9pZAorZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoU3RyaW5nSW5mbyBidWYs IGludCBwcmV0dHlGbGFncywgaW50IG5vT2ZUYWJDaGFycywgY29uc3QgY2hhciAqZm10LC4u LikKK3sKKwlpbnQJCQlzYXZlX2Vycm5vID0gZXJybm87CisKKwlpZiAocHJldHR5RmxhZ3Mg JiBQUkVUVFlGTEFHX0lOREVOVCkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1Ziwg J1xuJyk7CisJCS8qIEluZGVudCB3aXRoIHRhYnMgKi8KKwkJZm9yIChpbnQgaSA9IDA7IGkg PCBub09mVGFiQ2hhcnM7IGkrKykKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVm LCAnXHQnKTsKKwkJfQorCX0KKwllbHNlCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1Ziwg JyAnKTsKKworCWZvciAoOzspCisJeworCQl2YV9saXN0CQlhcmdzOworCQlpbnQJCQluZWVk ZWQ7CisKKwkJZXJybm8gPSBzYXZlX2Vycm5vOworCQl2YV9zdGFydChhcmdzLCBmbXQpOwor CQluZWVkZWQgPSBhcHBlbmRTdHJpbmdJbmZvVkEoYnVmLCBmbXQsIGFyZ3MpOworCQl2YV9l bmQoYXJncyk7CisKKwkJaWYgKG5lZWRlZCA9PSAwKQorCQkJYnJlYWs7CisKKwkJZW5sYXJn ZVN0cmluZ0luZm8oYnVmLCBuZWVkZWQpOworCX0KK30KKworCisvKgorICogSGVscGVyIGZ1 bmN0aW9uIHRvIHNjYW4gZG9tYWluIGNvbnN0cmFpbnRzCisgKi8KK3N0YXRpYyB2b2lkCitz Y2FuX2RvbWFpbl9jb25zdHJhaW50cyhPaWQgZG9tYWluX29pZCwgTGlzdCAqKnZhbGlkY29u cywgTGlzdCAqKmludmFsaWRjb25zKQoreworCVJlbGF0aW9uCWNvbnN0cmFpbnRSZWw7CisJ U3lzU2NhbkRlc2Mgc3NjYW47CisJU2NhbktleURhdGEgc2tleTsKKwlIZWFwVHVwbGUJY29u c3RyYWludFR1cDsKKworCSp2YWxpZGNvbnMgPSBOSUw7CisJKmludmFsaWRjb25zID0gTklM OworCisJY29uc3RyYWludFJlbCA9IHRhYmxlX29wZW4oQ29uc3RyYWludFJlbGF0aW9uSWQs IEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2tleSwKKwkJCQlBbnVtX3Bn X2NvbnN0cmFpbnRfY29udHlwaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09J REVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oZG9tYWluX29pZCkpOworCisJc3NjYW4gPSBz eXN0YWJsZV9iZWdpbnNjYW4oY29uc3RyYWludFJlbCwKKwkJCQkJCQkgICBDb25zdHJhaW50 VHlwaWRJbmRleElkLAorCQkJCQkJCSAgIHRydWUsCisJCQkJCQkJICAgTlVMTCwKKwkJCQkJ CQkgICAxLAorCQkJCQkJCSAgICZza2V5KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlk KGNvbnN0cmFpbnRUdXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNzY2FuKSkpCisJeworCQlGb3Jt X3BnX2NvbnN0cmFpbnQgY29uID0gKEZvcm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNUKGNv bnN0cmFpbnRUdXApOworCisJCWlmIChjb24tPmNvbnZhbGlkYXRlZCkKKwkJCSp2YWxpZGNv bnMgPSBsYXBwZW5kX29pZCgqdmFsaWRjb25zLCBjb24tPm9pZCk7CisJCWVsc2UKKwkJCSpp bnZhbGlkY29ucyA9IGxhcHBlbmRfb2lkKCppbnZhbGlkY29ucywgY29uLT5vaWQpOworCX0K KworCXN5c3RhYmxlX2VuZHNjYW4oc3NjYW4pOworCXRhYmxlX2Nsb3NlKGNvbnN0cmFpbnRS ZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBTb3J0IGNvbnN0cmFpbnRzIGJ5IE9JRCBm b3Igc3RhYmxlIG91dHB1dCAqLworCWlmIChsaXN0X2xlbmd0aCgqdmFsaWRjb25zKSA+IDEp CisJCWxpc3Rfc29ydCgqdmFsaWRjb25zLCBsaXN0X29pZF9jbXApOworCWlmIChsaXN0X2xl bmd0aCgqaW52YWxpZGNvbnMpID4gMSkKKwkJbGlzdF9zb3J0KCppbnZhbGlkY29ucywgbGlz dF9vaWRfY21wKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBidWlsZCBDUkVB VEUgRE9NQUlOIHN0YXRlbWVudAorICovCitzdGF0aWMgdm9pZAorYnVpbGRfY3JlYXRlX2Rv bWFpbl9zdGF0ZW1lbnQoU3RyaW5nSW5mbyBidWYsIEZvcm1fcGdfdHlwZSB0eXBGb3JtLAor CQkJCQkJCSAgTm9kZSAqZGVmYXVsdEV4cHIsIExpc3QgKnZhbGlkQ29uc3RyYWludHMsIGlu dCBwcmV0dHlGbGFncykKK3sKKwlIZWFwVHVwbGUJYmFzZVR5cGVUdXBsZTsKKwlGb3JtX3Bn X3R5cGUgYmFzZVR5cGVGb3JtOworCU9pZAkJCWJhc2VDb2xsYXRpb24gPSBJbnZhbGlkT2lk OworCUxpc3RDZWxsICAgKmxjOworCisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJDUkVBVEUg RE9NQUlOICVzIEFTICVzIiwKKwkJCQkJIGdlbmVyYXRlX3F1YWxpZmllZF90eXBlX25hbWUo dHlwRm9ybS0+b2lkKSwKKwkJCQkJIGZvcm1hdF90eXBlX2V4dGVuZGVkKHR5cEZvcm0tPnR5 cGJhc2V0eXBlLAorCQkJCQkJCQkJCSAgdHlwRm9ybS0+dHlwdHlwbW9kLAorCQkJCQkJCQkJ CSAgRk9STUFUX1RZUEVfVFlQRU1PRF9HSVZFTiB8CisJCQkJCQkJCQkJICBGT1JNQVRfVFlQ RV9GT1JDRV9RVUFMSUZZKSk7CisKKwkvKiBBZGQgY29sbGF0aW9uIGlmIGl0IGRpZmZlcnMg ZnJvbSBiYXNlIHR5cGUncyBjb2xsYXRpb24gKi8KKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3Jt LT50eXBjb2xsYXRpb24pKQorCXsKKwkJLyogR2V0IGJhc2UgdHlwZSdzIGNvbGxhdGlvbiBm b3IgY29tcGFyaXNvbiAqLworCQliYXNlVHlwZVR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRZ UEVPSUQsIE9iamVjdElkR2V0RGF0dW0odHlwRm9ybS0+dHlwYmFzZXR5cGUpKTsKKwkJaWYg KEhlYXBUdXBsZUlzVmFsaWQoYmFzZVR5cGVUdXBsZSkpCisJCXsKKwkJCWJhc2VUeXBlRm9y bSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVChiYXNlVHlwZVR1cGxlKTsKKwkJCWJhc2VD b2xsYXRpb24gPSBiYXNlVHlwZUZvcm0tPnR5cGNvbGxhdGlvbjsKKwkJCVJlbGVhc2VTeXND YWNoZShiYXNlVHlwZVR1cGxlKTsKKwkJfQorCisJCS8qIE9ubHkgYWRkIENPTExBVEUgaWYg ZG9tYWluJ3MgY29sbGF0aW9uIGRpZmZlcnMgZnJvbSBiYXNlIHR5cGUncyAqLworCQlpZiAo dHlwRm9ybS0+dHlwY29sbGF0aW9uICE9IGJhc2VDb2xsYXRpb24pCisJCXsKKwkJCWdldF9m b3JtYXR0ZWRfc3RyaW5nKGJ1ZiwgcHJldHR5RmxhZ3MsIDEsICJDT0xMQVRFICVzIiwKKwkJ CQkJCQkJIGdlbmVyYXRlX2NvbGxhdGlvbl9uYW1lKHR5cEZvcm0tPnR5cGNvbGxhdGlvbikp OworCQl9CisJfQorCisJLyogQWRkIGRlZmF1bHQgdmFsdWUgaWYgcHJlc2VudCAqLworCWlm IChkZWZhdWx0RXhwciAhPSBOVUxMKQorCXsKKwkJY2hhcgkgICAqZGVmYXVsdFZhbHVlID0g ZGVwYXJzZV9leHByZXNzaW9uX3ByZXR0eShkZWZhdWx0RXhwciwgTklMLCBmYWxzZSwgZmFs c2UsIHByZXR0eUZsYWdzLCAwKTsKKworCQlnZXRfZm9ybWF0dGVkX3N0cmluZyhidWYsIHBy ZXR0eUZsYWdzLCAxLCAiREVGQVVMVCAlcyIsIGRlZmF1bHRWYWx1ZSk7CisJfQorCisJLyog QWRkIHZhbGlkIGNvbnN0cmFpbnRzICovCisJZm9yZWFjaChsYywgdmFsaWRDb25zdHJhaW50 cykKKwl7CisJCU9pZAkJCWNvbnN0cmFpbnRPaWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJSGVh cFR1cGxlCWNvbnN0cmFpbnRUdXA7CisJCUZvcm1fcGdfY29uc3RyYWludCBjb247CisJCWNo YXIJICAgKmNvbnN0cmFpbnREZWY7CisKKwkJLyogTG9vayB1cCB0aGUgY29uc3RyYWludCBp bmZvICovCisJCWNvbnN0cmFpbnRUdXAgPSBTZWFyY2hTeXNDYWNoZTEoQ09OU1RST0lELCBP YmplY3RJZEdldERhdHVtKGNvbnN0cmFpbnRPaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKGNvbnN0cmFpbnRUdXApKQorCQkJY29udGludWU7CQkJLyogY29uc3RyYWludCB3YXMg ZHJvcHBlZCBjb25jdXJyZW50bHkgKi8KKworCQljb24gPSAoRm9ybV9wZ19jb25zdHJhaW50 KSBHRVRTVFJVQ1QoY29uc3RyYWludFR1cCk7CisJCWNvbnN0cmFpbnREZWYgPSBwZ19nZXRf Y29uc3RyYWludGRlZl93b3JrZXIoY29uc3RyYWludE9pZCwgZmFsc2UsIHByZXR0eUZsYWdz LCB0cnVlKTsKKworCQlnZXRfZm9ybWF0dGVkX3N0cmluZyhidWYsIHByZXR0eUZsYWdzLCAx LCAiQ09OU1RSQUlOVCAlcyIsCisJCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihj b24tPmNvbm5hbWUpKSk7CisJCWdldF9mb3JtYXR0ZWRfc3RyaW5nKGJ1ZiwgcHJldHR5Rmxh Z3MsIDIsICIlcyIsIGNvbnN0cmFpbnREZWYpOworCisJCVJlbGVhc2VTeXNDYWNoZShjb25z dHJhaW50VHVwKTsKKwl9CisKKwlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICc7Jyk7Cit9 CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gdG8gYWRkIEFMVEVSIERPTUFJTiBzdGF0ZW1l bnRzIGZvciBpbnZhbGlkIGNvbnN0cmFpbnRzCisgKi8KK3N0YXRpYyB2b2lkCithZGRfYWx0 ZXJfZG9tYWluX3N0YXRlbWVudHMoU3RyaW5nSW5mbyBidWYsIExpc3QgKmludmFsaWRDb25z dHJhaW50cywgaW50IHByZXR0eUZsYWdzKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9y ZWFjaChsYywgaW52YWxpZENvbnN0cmFpbnRzKQorCXsKKwkJT2lkCQkJY29uc3RyYWludE9p ZCA9IGxmaXJzdF9vaWQobGMpOworCQljaGFyCSAgICphbHRlclN0bXQgPSBwZ19nZXRfY29u c3RyYWludGRlZl93b3JrZXIoY29uc3RyYWludE9pZCwgdHJ1ZSwgcHJldHR5RmxhZ3MsIHRy dWUpOworCisJCWlmIChhbHRlclN0bXQpCisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIlxu JXM7IiwgYWx0ZXJTdG10KTsKKwl9Cit9CisKKy8qCisgKiBwZ19nZXRfZG9tYWluX2RkbF9l eHQgLSBHZXQgQ1JFQVRFIERPTUFJTiBzdGF0ZW1lbnQgZm9yIGEgZG9tYWluIHdpdGggcHJl dHR5LXByaW50IG9wdGlvbgorICovCitEYXR1bQorcGdfZ2V0X2RvbWFpbl9kZGxfZXh0KFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJZG9tYWluX29pZCA9IFBHX0dFVEFSR19PSUQo MCk7CisJYm9vbAkJcHJldHR5ID0gUEdfR0VUQVJHX0JPT0woMSk7CisJY2hhcgkgICAqcmVz OworCWludAkJCXByZXR0eUZsYWdzOworCisJcHJldHR5RmxhZ3MgPSBHRVRfRERMX1BSRVRU WV9GTEFHUyhwcmV0dHkpOworCisJcmVzID0gcGdfZ2V0X2RvbWFpbl9kZGxfd29ya2VyKGRv bWFpbl9vaWQsIHByZXR0eUZsYWdzKTsKKwlpZiAocmVzID09IE5VTEwpCisJCVBHX1JFVFVS Tl9OVUxMKCk7CisJUEdfUkVUVVJOX1RFWFRfUChzdHJpbmdfdG9fdGV4dChyZXMpKTsKK30K KworCisKK3N0YXRpYyBjaGFyICoKK3BnX2dldF9kb21haW5fZGRsX3dvcmtlcihPaWQgZG9t YWluX29pZCwgaW50IHByZXR0eUZsYWdzKQoreworCVN0cmluZ0luZm9EYXRhIGJ1ZjsKKwlI ZWFwVHVwbGUJdHlwZVR1cGxlOworCUZvcm1fcGdfdHlwZSB0eXBGb3JtOworCU5vZGUJICAg KmRlZmF1bHRFeHByOworCUxpc3QJICAgKnZhbGlkQ29uc3RyYWludHM7CisJTGlzdAkgICAq aW52YWxpZENvbnN0cmFpbnRzOworCisJLyogTG9vayB1cCB0aGUgZG9tYWluIGluIHBnX3R5 cGUgKi8KKwl0eXBlVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRH ZXREYXR1bShkb21haW5fb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR5cGVUdXBs ZSkpCisJCXJldHVybiBOVUxMOworCisJdHlwRm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNU UlVDVCh0eXBlVHVwbGUpOworCisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGFjdHVhbGx5IGEg ZG9tYWluICovCisJaWYgKHR5cEZvcm0tPnR5cHR5cGUgIT0gVFlQVFlQRV9ET01BSU4pCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQ RSksCisJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIGRvbWFpbiIsIGZvcm1hdF90eXBl X2JlKGRvbWFpbl9vaWQpKSwKKwkJCQkgZXJyaGludCgiVXNlIGEgc2NoZW1hLXF1YWxpZmll ZCBuYW1lIGlmIHRoZSBkb21haW4gbmFtZSBjb25mbGljdHMgd2l0aCBhIGJ1aWx0LWluIG5h bWUuIikpKTsKKworCS8qIEdldCBkZWZhdWx0IGV4cHJlc3Npb24gKi8KKwlkZWZhdWx0RXhw ciA9IGdldF90eXBkZWZhdWx0KGRvbWFpbl9vaWQpOworCisJLyogU2NhbiBmb3IgdmFsaWQg YW5kIGludmFsaWQgY29uc3RyYWludHMgKi8KKwlzY2FuX2RvbWFpbl9jb25zdHJhaW50cyhk b21haW5fb2lkLCAmdmFsaWRDb25zdHJhaW50cywgJmludmFsaWRDb25zdHJhaW50cyk7CisK KwkvKiBCdWlsZCB0aGUgRERMIHN0YXRlbWVudCAqLworCWluaXRTdHJpbmdJbmZvKCZidWYp OworCWJ1aWxkX2NyZWF0ZV9kb21haW5fc3RhdGVtZW50KCZidWYsIHR5cEZvcm0sIGRlZmF1 bHRFeHByLCB2YWxpZENvbnN0cmFpbnRzLCBwcmV0dHlGbGFncyk7CisKKwkvKiBBZGQgQUxU RVIgRE9NQUlOIHN0YXRlbWVudHMgZm9yIGludmFsaWQgY29uc3RyYWludHMgKi8KKwlpZiAo bGlzdF9sZW5ndGgoaW52YWxpZENvbnN0cmFpbnRzKSA+IDApCisJCWFkZF9hbHRlcl9kb21h aW5fc3RhdGVtZW50cygmYnVmLCBpbnZhbGlkQ29uc3RyYWludHMsIHByZXR0eUZsYWdzKTsK KworCS8qIENsZWFudXAgKi8KKwlsaXN0X2ZyZWUodmFsaWRDb25zdHJhaW50cyk7CisJbGlz dF9mcmVlKGludmFsaWRDb25zdHJhaW50cyk7CisJUmVsZWFzZVN5c0NhY2hlKHR5cGVUdXBs ZSk7CisKKwlyZXR1cm4gYnVmLmRhdGE7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApp bmRleCBkYWM0MDk5MmNiYy4uZDFhNGZiYWY0MGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdApAQCAtODUzOSw2ICs4NTM5LDkgQEAKIHsgb2lkID0+ICcyNTA4JywgZGVzY3IgPT4g J2NvbnN0cmFpbnQgZGVzY3JpcHRpb24gd2l0aCBwcmV0dHktcHJpbnQgb3B0aW9uJywKICAg cHJvbmFtZSA9PiAncGdfZ2V0X2NvbnN0cmFpbnRkZWYnLCBwcm92b2xhdGlsZSA9PiAncycs IHByb3JldHR5cGUgPT4gJ3RleHQnLAogICBwcm9hcmd0eXBlcyA9PiAnb2lkIGJvb2wnLCBw cm9zcmMgPT4gJ3BnX2dldF9jb25zdHJhaW50ZGVmX2V4dCcgfSwKK3sgb2lkID0+ICc4MDI0 JywgZGVzY3IgPT4gJ2dldCBDUkVBVEUgc3RhdGVtZW50IGZvciBET01BSU4gd2l0aCBwcmV0 dHkgb3B0aW9uJywKKyAgcHJvbmFtZSA9PiAncGdfZ2V0X2RvbWFpbl9kZGwnLCBwcm92b2xh dGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3RleHQnLAorICBwcm9hcmd0eXBlcyA9PiAn cmVndHlwZSBib29sJywgcHJvc3JjID0+ICdwZ19nZXRfZG9tYWluX2RkbF9leHQnIH0sCiB7 IG9pZCA9PiAnMjUwOScsCiAgIGRlc2NyID0+ICdkZXBhcnNlIGFuIGVuY29kZWQgZXhwcmVz c2lvbiB3aXRoIHByZXR0eS1wcmludCBvcHRpb24nLAogICBwcm9uYW1lID0+ICdwZ19nZXRf ZXhwcicsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVjdF9kZGwub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vYmplY3RfZGRsLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjhkYzhkMTJkZDYKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVjdF9kZGwub3V0CkBAIC0wLDAgKzEs NDYxIEBACistLQorLS0gVGVzdCBmb3IgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gZ2V0 IG9iamVjdCBEREw6CistLSAtIHBnX2dldF9kb21haW5fZGRsCistLQorQ1JFQVRFIERPTUFJ TiByZWdyZXNzX3VzX3Bvc3RhbF9jb2RlIEFTIFRFWFQKKyAgICBERUZBVUxUICcwMDAwMCcK KyAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGVfY2hlY2sKKyAgICAgICAg Q0hFQ0sgKAorICAgICAgICAgICAgVkFMVUUgfiAnXlxkezV9JCcKKyAgICBPUiBWQUxVRSB+ ICdeXGR7NX0tXGR7NH0kJworICAgICk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3Jl Z3Jlc3NfdXNfcG9zdGFsX2NvZGUnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRF IERPTUFJTiBwdWJsaWMucmVncmVzc191c19wb3N0YWxfY29kZSBBUyBwZ19jYXRhbG9nLnRl eHQgREVGQVVMVCAnMDAwMDAnOjp0ZXh0IENPTlNUUkFJTlQgcmVncmVzc191c19wb3N0YWxf Y29kZV9jaGVjayBDSEVDSyAoKChWQUxVRSB+ICdeXGR7NX0kJzo6dGV4dCkgT1IgKFZBTFVF IH4gJ15cZHs1fS1cZHs0fSQnOjp0ZXh0KSkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnLCBwcmV0dHkgPT4gZmFsc2Up OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9k ZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNz X3VzX3Bvc3RhbF9jb2RlIEFTIHBnX2NhdGFsb2cudGV4dCBERUZBVUxUICcwMDAwMCc6OnRl eHQgQ09OU1RSQUlOVCByZWdyZXNzX3VzX3Bvc3RhbF9jb2RlX2NoZWNrIENIRUNLICgoKFZB TFVFIH4gJ15cZHs1fSQnOjp0ZXh0KSBPUiAoVkFMVUUgfiAnXlxkezV9LVxkezR9JCc6OnRl eHQpKSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc191 c19wb3N0YWxfY29kZScsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRF IERPTUFJTiBwdWJsaWMucmVncmVzc191c19wb3N0YWxfY29kZSBBUyBwZ19jYXRhbG9nLnRl eHQgREVGQVVMVCAnMDAwMDAnOjp0ZXh0IENPTlNUUkFJTlQgcmVncmVzc191c19wb3N0YWxf Y29kZV9jaGVjayBDSEVDSyAoKChWQUxVRSB+ICdeXGR7NX0kJzo6dGV4dCkgT1IgKFZBTFVF IH4gJ15cZHs1fS1cZHs0fSQnOjp0ZXh0KSkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnLCBwcmV0dHkgPT4gdHJ1ZSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3VzX3Bvc3RhbF9jb2Rl IEFTIHBnX2NhdGFsb2cudGV4dCAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBERUZB VUxUICcwMDAwMCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX3VzX3Bvc3Rh bF9jb2RlX2NoZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFIH4gJ15cZHs1fSQnOjp0ZXh0IE9SIFZBTFVFIH4g J15cZHs1fS1cZHs0fSQnOjp0ZXh0KTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJywgdHJ1ZSk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVB VEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3VzX3Bvc3RhbF9jb2RlIEFTIHBnX2NhdGFsb2cu dGV4dCAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBERUZBVUxUICcwMDAwMCc6OnRl eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX3VzX3Bvc3RhbF9jb2RlX2NoZWNrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hF Q0sgKFZBTFVFIH4gJ15cZHs1fSQnOjp0ZXh0IE9SIFZBTFVFIH4gJ15cZHs1fS1cZHs0fSQn Ojp0ZXh0KTsKKygxIHJvdykKKworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3Rf bnVsbCBBUyBJTlQgTk9UIE5VTEw7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jl c3NfZG9tYWluX25vdF9udWxsJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGlj LnJlZ3Jlc3NfZG9tYWluX25vdF9udWxsIEFTIGludGVnZXIgQ09OU1RSQUlOVCByZWdyZXNz X2RvbWFpbl9ub3RfbnVsbF9ub3RfbnVsbCBOT1QgTlVMTDsKKygxIHJvdykKKworU0VMRUNU IHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9ub3RfbnVsbCcsIHByZXR0eSA9 PiB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21h aW5fbm90X251bGwgQVMgaW50ZWdlcisKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc19k b21haW5fbm90X251bGxfbm90X251bGwgICAgKworICAgICAgICAgICAgICAgICBOT1QgTlVM TDsKKygxIHJvdykKKworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2RvbWFpbl9jaGVjayBBUyBJ TlQKKyAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYSBDSEVDSyAoVkFMVUUgPCAxMDApCisgICAg Q09OU1RSQUlOVCByZWdyZXNzX2IgQ0hFQ0sgKFZBTFVFID4gMTApOworU0VMRUNUIHBnX2dl dF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9jaGVjaycpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9k b21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fY2hlY2sgQVMgaW50ZWdlciBD T05TVFJBSU5UIHJlZ3Jlc3NfYSBDSEVDSyAoKFZBTFVFIDwgMTAwKSkgQ09OU1RSQUlOVCBy ZWdyZXNzX2IgQ0hFQ0sgKChWQUxVRSA+IDEwKSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19n ZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fY2hlY2snLCBwcmV0dHkgPT4gdHJ1ZSk7 CisgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX2NoZWNrIEFTIGlu dGVnZXIrCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYSAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFIDwgMTAwKSAgICAgICAg ICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX2IgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIENIRUNLIChWQUxVRSA+IDEwKTsKKygx IHJvdykKKworQ1JFQVRFIERPTUFJTiAicmVncmVzc19kb21haW4gd2l0aCBzcGFjZSIgQVMg SU5UCisgICAgQ09OU1RSQUlOVCByZWdyZXNzX2EgQ0hFQ0sgKFZBTFVFIDwgMTAwKQorICAg IENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWludCBCIiBDSEVDSyAoVkFMVUUgPiAxMCkK KyAgICBDT05TVFJBSU5UICJyZWdyZXNzX0NvbnN0cmFpbnRDIiBDSEVDSyAoVkFMVUUgIT0g NTUpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCcicmVncmVzc19kb21haW4gd2l0aCBz cGFjZSInKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLiJyZWdyZXNzX2RvbWFpbiB3aXRo IHNwYWNlIiBBUyBpbnRlZ2VyIENPTlNUUkFJTlQgcmVncmVzc19hIENIRUNLICgoVkFMVUUg PCAxMDApKSBDT05TVFJBSU5UICJyZWdyZXNzX0NvbnN0cmFpbnQgQiIgQ0hFQ0sgKChWQUxV RSA+IDEwKSkgQ09OU1RSQUlOVCAicmVncmVzc19Db25zdHJhaW50QyIgQ0hFQ0sgKChWQUxV RSA8PiA1NSkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJyJyZWdy ZXNzX2RvbWFpbiB3aXRoIHNwYWNlIicsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy4icmVncmVzc19kb21haW4gd2l0aCBzcGFj ZSIgQVMgaW50ZWdlcisKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc19hICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVF IDwgMTAwKSAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIENPTlNUUkFJTlQg InJlZ3Jlc3NfQ29uc3RyYWludCBCIiAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgICAgQ0hFQ0sgKFZBTFVFID4gMTApICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgIENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWludEMiICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFIDw+IDU1KTsKKygxIHJvdykK KworLS0gVGVzdCBlcnJvciBjYXNlcworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdy ZXNzX25vbmV4aXN0ZW50X2RvbWFpbic6OnJlZ3R5cGUpOyAgLS0gc2hvdWxkIGZhaWwKK0VS Uk9SOiAgdHlwZSAicmVncmVzc19ub25leGlzdGVudF9kb21haW4iIGRvZXMgbm90IGV4aXN0 CitMSU5FIDE6IFNFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19ub25leGlzdGVu dF9kb21haW4nOjpyZWd0eS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKE5VTEwpOyAgLS0gc2hvdWxkIHJldHVybiBO VUxMCisgcGdfZ2V0X2RvbWFpbl9kZGwgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbChOVUxMLCBwcmV0dHkgPT4gdHJ1ZSk7 ICAtLSBzaG91bGQgcmV0dXJuIE5VTEwKKyBwZ19nZXRfZG9tYWluX2RkbCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdw Z19jbGFzcycpOyAgLS0gc2hvdWxkIGZhaWwgLSBub3QgYSBkb21haW4KK0VSUk9SOiAgInBn X2NsYXNzIiBpcyBub3QgYSBkb21haW4KK0hJTlQ6ICBVc2UgYSBzY2hlbWEtcXVhbGlmaWVk IG5hbWUgaWYgdGhlIGRvbWFpbiBuYW1lIGNvbmZsaWN0cyB3aXRoIGEgYnVpbHQtaW4gbmFt ZS4KK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgnaW50ZWdlcicpOyAgLS0gc2hvdWxkIGZh aWwgLSBub3QgYSBkb21haW4KK0VSUk9SOiAgImludGVnZXIiIGlzIG5vdCBhIGRvbWFpbgor SElOVDogIFVzZSBhIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSBpZiB0aGUgZG9tYWluIG5hbWUg Y29uZmxpY3RzIHdpdGggYSBidWlsdC1pbiBuYW1lLgorLS0gVGVzdCBkb21haW5zIHdpdGgg bm8gY29uc3RyYWludHMKK0NSRUFURSBET01BSU4gcmVncmVzc19zaW1wbGVfZG9tYWluIEFT IHRleHQ7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfc2ltcGxlX2RvbWFp bicpOworICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJl Z3Jlc3Nfc2ltcGxlX2RvbWFpbiBBUyBwZ19jYXRhbG9nLnRleHQ7CisoMSByb3cpCisKK1NF TEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19zaW1wbGVfZG9tYWluJywgcHJldHR5 ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVi bGljLnJlZ3Jlc3Nfc2ltcGxlX2RvbWFpbiBBUyBwZ19jYXRhbG9nLnRleHQ7CisoMSByb3cp CisKKy0tIFRlc3QgZG9tYWluIG92ZXIgYW5vdGhlciBkb21haW4KK0NSRUFURSBET01BSU4g cmVncmVzc19iYXNlX2RvbWFpbiBBUyB2YXJjaGFyKDEwKTsKK0NSRUFURSBET01BSU4gcmVn cmVzc19kZXJpdmVkX2RvbWFpbiBBUyByZWdyZXNzX2Jhc2VfZG9tYWluIENIRUNLIChMRU5H VEgoVkFMVUUpID4gMyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZGVy aXZlZF9kb21haW4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZGVyaXZlZF9kb21haW4gQVMgcHVibGlj LnJlZ3Jlc3NfYmFzZV9kb21haW4gQ09OU1RSQUlOVCByZWdyZXNzX2Rlcml2ZWRfZG9tYWlu X2NoZWNrIENIRUNLICgobGVuZ3RoKChWQUxVRSk6OnRleHQpID4gMykpOworKDEgcm93KQor CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZGVyaXZlZF9kb21haW4nLCBw cmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9k b21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZGVyaXZlZF9kb21haW4g QVMgcHVibGljLnJlZ3Jlc3NfYmFzZV9kb21haW4rCisgICAgICAgICBDT05TVFJBSU5UIHJl Z3Jlc3NfZGVyaXZlZF9kb21haW5fY2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgICAgICAgQ0hFQ0sgKGxlbmd0aChWQUxVRTo6dGV4dCkgPiAzKTsKKygx IHJvdykKKworLS0gVGVzdCBkb21haW4gd2l0aCBjb21wbGV4IGRlZmF1bHQgZXhwcmVzc2lv bnMKK0NSRUFURSBTRVFVRU5DRSByZWdyZXNzX3Rlc3Rfc2VxOworQ1JFQVRFIERPTUFJTiBy ZWdyZXNzX3NlcV9kb21haW4gQVMgaW50IERFRkFVTFQgbmV4dHZhbCgncmVncmVzc190ZXN0 X3NlcScpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3NlcV9kb21haW4n KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Rv bWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERP TUFJTiBwdWJsaWMucmVncmVzc19zZXFfZG9tYWluIEFTIGludGVnZXIgREVGQVVMVCBuZXh0 dmFsKCdyZWdyZXNzX3Rlc3Rfc2VxJzo6cmVnY2xhc3MpOworKDEgcm93KQorCitTRUxFQ1Qg cGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfc2VxX2RvbWFpbicsIHByZXR0eSA9PiB0cnVl KTsKKyAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3Nfc2VxX2RvbWFpbiBB UyBpbnRlZ2VyICAgICsKKyAgICAgICAgIERFRkFVTFQgbmV4dHZhbCgncmVncmVzc190ZXN0 X3NlcSc6OnJlZ2NsYXNzKTsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gd2l0aCBhIHJl bmFtZWQgc2VxdWVuY2UgYXMgZGVmYXVsdCBleHByZXNzaW9uCitBTFRFUiBTRVFVRU5DRSBy ZWdyZXNzX3Rlc3Rfc2VxIFJFTkFNRSBUTyByZWdyZXNzX3Rlc3Rfc2VxX3JlbmFtZWQ7CitT RUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfc2VxX2RvbWFpbicpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9k ZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JF QVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19zZXFfZG9tYWluIEFTIGludGVnZXIgREVGQVVM VCBuZXh0dmFsKCdyZWdyZXNzX3Rlc3Rfc2VxX3JlbmFtZWQnOjpyZWdjbGFzcyk7CisoMSBy b3cpCisKKy0tIFRlc3QgZG9tYWluIHdpdGggdHlwZSBtb2RpZmllcnMKK0NSRUFURSBET01B SU4gcmVncmVzc19wcmVjaXNlX251bWVyaWMgQVMgbnVtZXJpYygxMCwyKSBERUZBVUxUIDAu MDA7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfcHJlY2lzZV9udW1lcmlj Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3ByZWNpc2VfbnVtZXJpYyBBUyBudW1l cmljKDEwLDIpIERFRkFVTFQgMC4wMDsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKCdyZWdyZXNzX3ByZWNpc2VfbnVtZXJpYycsIHByZXR0eSA9PiB0cnVlKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19wcmVj aXNlX251bWVyaWMgQVMgbnVtZXJpYygxMCwyKSsKKyAgICAgICAgIERFRkFVTFQgMC4wMDsK KygxIHJvdykKKworLS0gVGVzdCBkb21haW4gb3ZlciBhcnJheSB0eXBlCitDUkVBVEUgRE9N QUlOIHJlZ3Jlc3NfaW50X2FycmF5X2RvbWFpbiBBUyBpbnRbXSBDSEVDSyAoYXJyYXlfbGVu Z3RoKFZBTFVFLCAxKSA8PSA1KTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVz c19pbnRfYXJyYXlfZG9tYWluJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4g cHVibGljLnJlZ3Jlc3NfaW50X2FycmF5X2RvbWFpbiBBUyBpbnRlZ2VyW10gQ09OU1RSQUlO VCByZWdyZXNzX2ludF9hcnJheV9kb21haW5fY2hlY2sgQ0hFQ0sgKChhcnJheV9sZW5ndGgo VkFMVUUsIDEpIDw9IDUpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRs KCdyZWdyZXNzX2ludF9hcnJheV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfaW50X2FycmF5X2RvbWFp biBBUyBpbnRlZ2VyW10rCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfaW50X2FycmF5 X2RvbWFpbl9jaGVjayAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKGFycmF5 X2xlbmd0aChWQUxVRSwgMSkgPD0gNSk7CisoMSByb3cpCisKKy0tIFRlc3QgZG9tYWluIGlu IG5vbi1wdWJsaWMgc2NoZW1hCitDUkVBVEUgU0NIRU1BIHJlZ3Jlc3NfdGVzdF9zY2hlbWE7 CitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9t YWluIEFTIHRleHQgREVGQVVMVCAndGVzdCc7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwo J3JlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluJyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHJlZ3Jlc3Nf dGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluIEFTIHBnX2NhdGFsb2cudGV4dCBE RUZBVUxUICd0ZXN0Jzo6dGV4dDsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gd2l0aCBt dWx0aXBsZSBjb25zdHJhaW50IHR5cGVzIGNvbWJpbmVkCitDUkVBVEUgRE9NQUlOIHJlZ3Jl c3NfY29tcHJlaGVuc2l2ZV9kb21haW4gQVMgdmFyY2hhcig1MCkKKyAgICBOT1QgTlVMTAor ICAgIERFRkFVTFQgJ2RlZmF1bHRfdmFsdWUnCisgICAgQ0hFQ0sgKExFTkdUSChWQUxVRSkg Pj0gNSkKKyAgICBDSEVDSyAoVkFMVUUgIX4gJ15ccyokJyk7ICAtLSBub3QganVzdCB3aGl0 ZXNwYWNlCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfY29tcHJlaGVuc2l2 ZV9kb21haW4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2NvbXByZWhlbnNp dmVfZG9tYWluIEFTIGNoYXJhY3RlciB2YXJ5aW5nKDUwKSBERUZBVUxUICdkZWZhdWx0X3Zh bHVlJzo6Y2hhcmFjdGVyIHZhcnlpbmcgQ09OU1RSQUlOVCByZWdyZXNzX2NvbXByZWhlbnNp dmVfZG9tYWluX25vdF9udWxsIE5PVCBOVUxMIENPTlNUUkFJTlQgcmVncmVzc19jb21wcmVo ZW5zaXZlX2RvbWFpbl9jaGVjayBDSEVDSyAoKGxlbmd0aCgoVkFMVUUpOjp0ZXh0KSA+PSA1 KSkgQ09OU1RSQUlOVCByZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluX2NoZWNrMSBDSEVD SyAoKChWQUxVRSk6OnRleHQgIX4gJ15ccyokJzo6dGV4dCkpOworKDEgcm93KQorCitTRUxF Q1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW4nLCBw cmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9k b21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19jb21wcmVoZW5zaXZl X2RvbWFpbiBBUyBjaGFyYWN0ZXIgdmFyeWluZyg1MCkrCisgICAgICAgICBERUZBVUxUICdk ZWZhdWx0X3ZhbHVlJzo6Y2hhcmFjdGVyIHZhcnlpbmcgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW5f bm90X251bGwgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIE5PVCBOVUxM ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW5fY2hlY2sg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIENIRUNLIChsZW5ndGgo VkFMVUU6OnRleHQpID49IDUpICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICBDT05TVFJBSU5UIHJlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW5fY2hlY2sxICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIENIRUNLIChWQUxVRTo6dGV4dCAh fiAnXlxzKiQnOjp0ZXh0KTsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gb3ZlciBjb21w b3NpdGUgdHlwZQorQ1JFQVRFIFRZUEUgcmVncmVzc19hZGRyZXNzX3R5cGUgQVMgKHN0cmVl dCB0ZXh0LCBjaXR5IHRleHQsIHppcGNvZGUgdGV4dCk7CitDUkVBVEUgRE9NQUlOIHJlZ3Jl c3NfYWRkcmVzc19kb21haW4gQVMgcmVncmVzc19hZGRyZXNzX3R5cGUgQ0hFQ0sgKChWQUxV RSkuemlwY29kZSB+ICdeXGR7NX0kJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3Jl Z3Jlc3NfYWRkcmVzc19kb21haW4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21h aW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jl c3NfYWRkcmVzc19kb21haW4gQVMgcHVibGljLnJlZ3Jlc3NfYWRkcmVzc190eXBlIENPTlNU UkFJTlQgcmVncmVzc19hZGRyZXNzX2RvbWFpbl9jaGVjayBDSEVDSyAoKChWQUxVRSkuemlw Y29kZSB+ICdeXGR7NX0kJzo6dGV4dCkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2Rv bWFpbl9kZGwoJ3JlZ3Jlc3NfYWRkcmVzc19kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRF IERPTUFJTiBwdWJsaWMucmVncmVzc19hZGRyZXNzX2RvbWFpbiBBUyBwdWJsaWMucmVncmVz c19hZGRyZXNzX3R5cGUrCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYWRkcmVzc19k b21haW5fY2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgIENIRUNLICgoVkFMVUUpLnppcGNvZGUgfiAnXlxkezV9JCc6OnRleHQpOworKDEgcm93 KQorCistLSBUZXN0IGRvbWFpbiB3aXRoIE5PVCBWQUxJRCBjb25zdHJhaW50CitDUkVBVEUg RE9NQUlOIHJlZ3Jlc3NfZG9tYWluX25vdF92YWxpZCBBUyBpbnQ7CitBTFRFUiBET01BSU4g cmVncmVzc19kb21haW5fbm90X3ZhbGlkIEFERCBDT05TVFJBSU5UIGNoZWNrX3Bvc2l0aXZl IENIRUNLIChWQUxVRSA+IDApIE5PVCBWQUxJRDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2Rk bCgncmVncmVzc19kb21haW5fbm90X3ZhbGlkJyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1Ymxp Yy5yZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQVMgaW50ZWdlcjsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgQUxURVIgRE9NQUlOIHB1Ymxp Yy5yZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQUREIENPTlNUUkFJTlQgY2hlY2tfcG9zaXRp dmUgQ0hFQ0sgKChWQUxVRSA+IDApKSBOT1QgVkFMSUQ7CisoMSByb3cpCisKK1NFTEVDVCBw Z19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90X3ZhbGlkJywgcHJldHR5ID0+ IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQg QVMgaW50ZWdlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworIEFMVEVSIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fbm90X3ZhbGlkIEFE RCBDT05TVFJBSU5UIGNoZWNrX3Bvc2l0aXZlIENIRUNLIChWQUxVRSA+IDApIE5PVCBWQUxJ RDsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gd2l0aCBtaXggb2YgdmFsaWQgYW5kIG5v dCB2YWxpZCBjb25zdHJhaW50cworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2RvbWFpbl9taXhl ZCBBUyBpbnQgQ0hFQ0sgKFZBTFVFICE9IDApOworQUxURVIgRE9NQUlOIHJlZ3Jlc3NfZG9t YWluX21peGVkIEFERCBDT05TVFJBSU5UIGNoZWNrX3JhbmdlIENIRUNLIChWQUxVRSBCRVRX RUVOIDEgQU5EIDEwMCkgTk9UIFZBTElEOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdy ZWdyZXNzX2RvbWFpbl9taXhlZCcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fbWl4ZWQgQVMgaW50ZWdl ciBDT05TVFJBSU5UIHJlZ3Jlc3NfZG9tYWluX21peGVkX2NoZWNrIENIRUNLICgoVkFMVUUg PD4gMCkpOyAgICAgICAgKworIEFMVEVSIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5f bWl4ZWQgQUREIENPTlNUUkFJTlQgY2hlY2tfcmFuZ2UgQ0hFQ0sgKCgoVkFMVUUgPj0gMSkg QU5EIChWQUxVRSA8PSAxMDApKSkgTk9UIFZBTElEOworKDEgcm93KQorCitTRUxFQ1QgcGdf Z2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX21peGVkJywgcHJldHR5ID0+IHRydWUp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBn X2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19k b21haW5fbWl4ZWQgQVMgaW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlOVCBy ZWdyZXNzX2RvbWFpbl9taXhlZF9jaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgICAgQ0hFQ0sgKFZBTFVFIDw+IDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg QUxURVIgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9taXhlZCBBREQgQ09OU1RSQUlO VCBjaGVja19yYW5nZSBDSEVDSyAoVkFMVUUgPj0gMSBBTkQgVkFMVUUgPD0gMTAwKSBOT1Qg VkFMSUQ7CisoMSByb3cpCisKKy0tIFRlc3QgZG9tYWluIHdpdGggY29sbGF0aW9uCitDUkVB VEUgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0ZSBBUyB0ZXh0IENPTExBVEUg IkMiOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl93aXRoX2Nv bGxhdGUnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFp bl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl93 aXRoX2NvbGxhdGUgQVMgcGdfY2F0YWxvZy50ZXh0IENPTExBVEUgIkMiOworKDEgcm93KQor CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0 ZScsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fd2l0aF9jb2xsYXRlIEFT IHBnX2NhdGFsb2cudGV4dCsKKyAgICAgICAgIENPTExBVEUgIkMiOworKDEgcm93KQorCist LSBUZXN0IGRvbWFpbiB0aGF0IHNoYWRvd3MgYSBidWlsdC1pbiB0eXBlIG5hbWUgKG11c3Qg dXNlIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSkKK0NSRUFURSBET01BSU4gcHVibGljLmludCBB UyBwZ19jYXRhbG9nLmludDQ7CistLSBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2UgJ2ludCcg cmVzb2x2ZXMgdG8gcGdfY2F0YWxvZy5pbnQ0LCBub3QgcHVibGljLmludAorU0VMRUNUIHBn X2dldF9kb21haW5fZGRsKCdpbnQnKTsgIC0tIHNob3VsZCBmYWlsCitFUlJPUjogICJpbnRl Z2VyIiBpcyBub3QgYSBkb21haW4KK0hJTlQ6ICBVc2UgYSBzY2hlbWEtcXVhbGlmaWVkIG5h bWUgaWYgdGhlIGRvbWFpbiBuYW1lIGNvbmZsaWN0cyB3aXRoIGEgYnVpbHQtaW4gbmFtZS4K Ky0tIFRoaXMgc2hvdWxkIHdvcmsgd2l0aCBzY2hlbWEtcXVhbGlmaWVkIG5hbWUKK1NFTEVD VCBwZ19nZXRfZG9tYWluX2RkbCgncHVibGljLmludCcpOworICAgICAgICAgICBwZ19nZXRf ZG9tYWluX2RkbCAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLiJpbnQiIEFTIGludGVnZXI7Ciso MSByb3cpCisKKy0tIFJvdW5kLXRyaXAgdGVzdHM6IHZlcmlmeSBEREwgaXMgc3ludGFjdGlj YWxseSB2YWxpZCBhbmQgc2VtYW50aWNhbGx5IGNvcnJlY3QKK0NSRUFURSBGVU5DVElPTiBy ZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwKG9iamVjdF90eXBlIHRleHQsIG9iamVjdF9u YW1lIHRleHQpIFJFVFVSTlMgdm9pZAorTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorREVDTEFS RQorICAgIG9yaWdpbmFsX2RkbCB0ZXh0OworICAgIHJlY3JlYXRlZF9kZGwgdGV4dDsKK0JF R0lOCisgICAgRVhFQ1VURSBmb3JtYXQoJ1NFTEVDVCBwZ19nZXRfJXNfZGRsKCVMKScsIG9i amVjdF90eXBlLCBvYmplY3RfbmFtZSkgSU5UTyBvcmlnaW5hbF9kZGw7CisgICAgRVhFQ1VU RSBmb3JtYXQoJ0RST1AgJXMgJXMnLCBvYmplY3RfdHlwZSwgb2JqZWN0X25hbWUpOworICAg IEVYRUNVVEUgb3JpZ2luYWxfZGRsOworICAgIEVYRUNVVEUgZm9ybWF0KCdTRUxFQ1QgcGdf Z2V0XyVzX2RkbCglTCknLCBvYmplY3RfdHlwZSwgb2JqZWN0X25hbWUpIElOVE8gcmVjcmVh dGVkX2RkbDsKKyAgICBBU1NFUlQgb3JpZ2luYWxfZGRsID0gcmVjcmVhdGVkX2RkbCwKKyAg ICAgICAgZm9ybWF0KEUncm91bmQtdHJpcCBtaXNtYXRjaCBmb3IgJXMgJXM6XG4gIG9yaWdp bmFsOiAgJXNcbiAgcmVjcmVhdGVkOiAlcycsCisgICAgICAgICAgICAgICBvYmplY3RfdHlw ZSwgb2JqZWN0X25hbWUsIG9yaWdpbmFsX2RkbCwgcmVjcmVhdGVkX2RkbCk7CitFTkQ7Cisk JDsKK1NFTEVDVCByZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwKCdkb21haW4nLCAncmVn cmVzc191c19wb3N0YWxfY29kZScpOworIHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNU IHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAoJ2RvbWFpbicsICdyZWdyZXNzX2RvbWFp bl9ub3RfbnVsbCcpOworIHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHJlZ3Jlc3Nf dmVyaWZ5X2RkbF9yb3VuZHRyaXAoJ2RvbWFpbicsICdyZWdyZXNzX2RvbWFpbl9jaGVjaycp OworIHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHJlZ3Jlc3NfdmVyaWZ5X2RkbF9y b3VuZHRyaXAoJ2RvbWFpbicsICcicmVncmVzc19kb21haW4gd2l0aCBzcGFjZSInKTsKKyBy ZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCByZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0 cmlwKCdkb21haW4nLCAncmVncmVzc19zaW1wbGVfZG9tYWluJyk7CisgcmVncmVzc192ZXJp ZnlfZGRsX3JvdW5kdHJpcCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgcmVncmVzc192ZXJpZnlfZGRsX3JvdW5kdHJpcCgnZG9tYWlu JywgJ3JlZ3Jlc3NfZGVyaXZlZF9kb21haW4nKTsKKyByZWdyZXNzX3ZlcmlmeV9kZGxfcm91 bmR0cmlwIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCByZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwKCdkb21haW4nLCAncmVncmVz c19zZXFfZG9tYWluJyk7CisgcmVncmVzc192ZXJpZnlfZGRsX3JvdW5kdHJpcCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgcmVncmVz c192ZXJpZnlfZGRsX3JvdW5kdHJpcCgnZG9tYWluJywgJ3JlZ3Jlc3NfcHJlY2lzZV9udW1l cmljJyk7CisgcmVncmVzc192ZXJpZnlfZGRsX3JvdW5kdHJpcCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgcmVncmVzc192ZXJpZnlf ZGRsX3JvdW5kdHJpcCgnZG9tYWluJywgJ3JlZ3Jlc3NfaW50X2FycmF5X2RvbWFpbicpOwor IHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3Vu ZHRyaXAoJ2RvbWFpbicsICdyZWdyZXNzX3Rlc3Rfc2NoZW1hLnJlZ3Jlc3Nfc2NoZW1hX2Rv bWFpbicpOworIHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHJlZ3Jlc3NfdmVyaWZ5 X2RkbF9yb3VuZHRyaXAoJ2RvbWFpbicsICdyZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWlu Jyk7CisgcmVncmVzc192ZXJpZnlfZGRsX3JvdW5kdHJpcCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgcmVncmVzc192ZXJpZnlfZGRs X3JvdW5kdHJpcCgnZG9tYWluJywgJ3JlZ3Jlc3NfYWRkcmVzc19kb21haW4nKTsKKyByZWdy ZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCByZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlw KCdkb21haW4nLCAncmVncmVzc19kb21haW5fbm90X3ZhbGlkJyk7CisgcmVncmVzc192ZXJp ZnlfZGRsX3JvdW5kdHJpcCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgcmVncmVzc192ZXJpZnlfZGRsX3JvdW5kdHJpcCgnZG9tYWlu JywgJ3JlZ3Jlc3NfZG9tYWluX21peGVkJyk7CisgcmVncmVzc192ZXJpZnlfZGRsX3JvdW5k dHJpcCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgcmVncmVzc192ZXJpZnlfZGRsX3JvdW5kdHJpcCgnZG9tYWluJywgJ3JlZ3Jlc3Nf ZG9tYWluX3dpdGhfY29sbGF0ZScpOworIHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNU IHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAoJ2RvbWFpbicsICdwdWJsaWMuImludCIn KTsKKyByZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIENsZWFudXAKK0RST1AgRlVOQ1RJT04g cmVncmVzc192ZXJpZnlfZGRsX3JvdW5kdHJpcDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfdXNf cG9zdGFsX2NvZGU7CitEUk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfbnVsbDsKK0RS T1AgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX2NoZWNrOworRFJPUCBET01BSU4gInJlZ3Jlc3Nf ZG9tYWluIHdpdGggc3BhY2UiOworRFJPUCBET01BSU4gcmVncmVzc19jb21wcmVoZW5zaXZl X2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hl bWFfZG9tYWluOworRFJPUCBTQ0hFTUEgcmVncmVzc190ZXN0X3NjaGVtYTsKK0RST1AgRE9N QUlOIHJlZ3Jlc3NfYWRkcmVzc19kb21haW47CitEUk9QIFRZUEUgcmVncmVzc19hZGRyZXNz X3R5cGU7CitEUk9QIERPTUFJTiByZWdyZXNzX2ludF9hcnJheV9kb21haW47CitEUk9QIERP TUFJTiByZWdyZXNzX3ByZWNpc2VfbnVtZXJpYzsKK0RST1AgRE9NQUlOIHJlZ3Jlc3Nfc2Vx X2RvbWFpbjsKK0RST1AgU0VRVUVOQ0UgcmVncmVzc190ZXN0X3NlcV9yZW5hbWVkOworRFJP UCBET01BSU4gcmVncmVzc19kZXJpdmVkX2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3Nf YmFzZV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX3NpbXBsZV9kb21haW47CitEUk9Q IERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQ7CitEUk9QIERPTUFJTiByZWdyZXNz X2RvbWFpbl9taXhlZDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0 ZTsKK0RST1AgRE9NQUlOIHB1YmxpYy5pbnQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQppbmRleCA1NDllOWIyZDdiZS4uNTJiMjRhYjgwNmUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQpAQCAtMjgsNyArMjgsNyBAQCB0ZXN0OiBzdHJpbmdzIG1kNSBu dW1lcm9sb2d5IHBvaW50IGxzZWcgbGluZSBib3ggcGF0aCBwb2x5Z29uIGNpcmNsZSBkYXRl IHRpbWUgdAogIyBnZW9tZXRyeSBkZXBlbmRzIG9uIHBvaW50LCBsc2VnLCBsaW5lLCBib3gs IHBhdGgsIHBvbHlnb24sIGNpcmNsZQogIyBob3JvbG9neSBkZXBlbmRzIG9uIGRhdGUsIHRp bWUsIHRpbWV0eiwgdGltZXN0YW1wLCB0aW1lc3RhbXB0eiwgaW50ZXJ2YWwKICMgLS0tLS0t LS0tLQotdGVzdDogZ2VvbWV0cnkgaG9yb2xvZ3kgdHN0eXBlcyByZWdleCB0eXBlX3Nhbml0 eSBvcHJfc2FuaXR5IG1pc2Nfc2FuaXR5IGNvbW1lbnRzIGV4cHJlc3Npb25zIHVuaWNvZGUg eGlkIG12Y2MgZGF0YWJhc2Ugc3RhdHNfaW1wb3J0IHBnX25kaXN0aW5jdCBwZ19kZXBlbmRl bmNpZXMgb2lkOCBlbmNvZGluZyBldWNfa3IKK3Rlc3Q6IGdlb21ldHJ5IGhvcm9sb2d5IHRz dHlwZXMgcmVnZXggdHlwZV9zYW5pdHkgb3ByX3Nhbml0eSBtaXNjX3Nhbml0eSBjb21tZW50 cyBleHByZXNzaW9ucyB1bmljb2RlIHhpZCBtdmNjIGRhdGFiYXNlIHN0YXRzX2ltcG9ydCBw Z19uZGlzdGluY3QgcGdfZGVwZW5kZW5jaWVzIG9pZDggZW5jb2RpbmcgZXVjX2tyIG9iamVj dF9kZGwKIAogIyAtLS0tLS0tLS0tCiAjIExvYWQgaHVnZSBhbW91bnRzIG9mIGRhdGEKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9kZGwuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvb2JqZWN0X2RkbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmYyMTRlM2I0NjExCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvb2JqZWN0X2RkbC5zcWwKQEAgLTAsMCArMSwxODAgQEAKKy0tCist LSBUZXN0IGZvciB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBnZXQgb2JqZWN0IERETDoK Ky0tIC0gcGdfZ2V0X2RvbWFpbl9kZGwKKy0tCisKK0NSRUFURSBET01BSU4gcmVncmVzc191 c19wb3N0YWxfY29kZSBBUyBURVhUCisgICAgREVGQVVMVCAnMDAwMDAnCisgICAgQ09OU1RS QUlOVCByZWdyZXNzX3VzX3Bvc3RhbF9jb2RlX2NoZWNrCisgICAgICAgIENIRUNLICgKKyAg ICAgICAgICAgIFZBTFVFIH4gJ15cZHs1fSQnCisgICAgT1IgVkFMVUUgfiAnXlxkezV9LVxk ezR9JCcKKyAgICApOworCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNf cG9zdGFsX2NvZGUnKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19w b3N0YWxfY29kZScsIHByZXR0eSA9PiBmYWxzZSk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9k ZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnLCBmYWxzZSk7CitTRUxFQ1QgcGdfZ2V0X2Rv bWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnLCBwcmV0dHkgPT4gdHJ1ZSk7CitT RUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnLCB0cnVl KTsKKworCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX25vdF9udWxsIEFTIElOVCBO T1QgTlVMTDsKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9u b3RfbnVsbCcpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9u b3RfbnVsbCcsIHByZXR0eSA9PiB0cnVlKTsKKworCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3Nf ZG9tYWluX2NoZWNrIEFTIElOVAorICAgIENPTlNUUkFJTlQgcmVncmVzc19hIENIRUNLIChW QUxVRSA8IDEwMCkKKyAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYiBDSEVDSyAoVkFMVUUgPiAx MCk7CisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fY2hlY2sn KTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fY2hlY2snLCBw cmV0dHkgPT4gdHJ1ZSk7CisKKworQ1JFQVRFIERPTUFJTiAicmVncmVzc19kb21haW4gd2l0 aCBzcGFjZSIgQVMgSU5UCisgICAgQ09OU1RSQUlOVCByZWdyZXNzX2EgQ0hFQ0sgKFZBTFVF IDwgMTAwKQorICAgIENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWludCBCIiBDSEVDSyAo VkFMVUUgPiAxMCkKKyAgICBDT05TVFJBSU5UICJyZWdyZXNzX0NvbnN0cmFpbnRDIiBDSEVD SyAoVkFMVUUgIT0gNTUpOworCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJyJyZWdyZXNz X2RvbWFpbiB3aXRoIHNwYWNlIicpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCcicmVn cmVzc19kb21haW4gd2l0aCBzcGFjZSInLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3Qg ZXJyb3IgY2FzZXMKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19ub25leGlz dGVudF9kb21haW4nOjpyZWd0eXBlKTsgIC0tIHNob3VsZCBmYWlsCitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoTlVMTCk7ICAtLSBzaG91bGQgcmV0dXJuIE5VTEwKK1NFTEVDVCBwZ19n ZXRfZG9tYWluX2RkbChOVUxMLCBwcmV0dHkgPT4gdHJ1ZSk7ICAtLSBzaG91bGQgcmV0dXJu IE5VTEwKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncGdfY2xhc3MnKTsgIC0tIHNob3Vs ZCBmYWlsIC0gbm90IGEgZG9tYWluCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ2ludGVn ZXInKTsgIC0tIHNob3VsZCBmYWlsIC0gbm90IGEgZG9tYWluCisKKy0tIFRlc3QgZG9tYWlu cyB3aXRoIG5vIGNvbnN0cmFpbnRzCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3Nfc2ltcGxlX2Rv bWFpbiBBUyB0ZXh0OworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3NpbXBs ZV9kb21haW4nKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19zaW1wbGVf ZG9tYWluJywgcHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGRvbWFpbiBvdmVyIGFub3Ro ZXIgZG9tYWluCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfYmFzZV9kb21haW4gQVMgdmFyY2hh cigxMCk7CitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfZGVyaXZlZF9kb21haW4gQVMgcmVncmVz c19iYXNlX2RvbWFpbiBDSEVDSyAoTEVOR1RIKFZBTFVFKSA+IDMpOworU0VMRUNUIHBnX2dl dF9kb21haW5fZGRsKCdyZWdyZXNzX2Rlcml2ZWRfZG9tYWluJyk7CitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZGVyaXZlZF9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7 CisKKy0tIFRlc3QgZG9tYWluIHdpdGggY29tcGxleCBkZWZhdWx0IGV4cHJlc3Npb25zCitD UkVBVEUgU0VRVUVOQ0UgcmVncmVzc190ZXN0X3NlcTsKK0NSRUFURSBET01BSU4gcmVncmVz c19zZXFfZG9tYWluIEFTIGludCBERUZBVUxUIG5leHR2YWwoJ3JlZ3Jlc3NfdGVzdF9zZXEn KTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19zZXFfZG9tYWluJyk7CitT RUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfc2VxX2RvbWFpbicsIHByZXR0eSA9 PiB0cnVlKTsKKworLS0gVGVzdCBkb21haW4gd2l0aCBhIHJlbmFtZWQgc2VxdWVuY2UgYXMg ZGVmYXVsdCBleHByZXNzaW9uCitBTFRFUiBTRVFVRU5DRSByZWdyZXNzX3Rlc3Rfc2VxIFJF TkFNRSBUTyByZWdyZXNzX3Rlc3Rfc2VxX3JlbmFtZWQ7CitTRUxFQ1QgcGdfZ2V0X2RvbWFp bl9kZGwoJ3JlZ3Jlc3Nfc2VxX2RvbWFpbicpOworCistLSBUZXN0IGRvbWFpbiB3aXRoIHR5 cGUgbW9kaWZpZXJzCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfcHJlY2lzZV9udW1lcmljIEFT IG51bWVyaWMoMTAsMikgREVGQVVMVCAwLjAwOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRs KCdyZWdyZXNzX3ByZWNpc2VfbnVtZXJpYycpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRs KCdyZWdyZXNzX3ByZWNpc2VfbnVtZXJpYycsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVz dCBkb21haW4gb3ZlciBhcnJheSB0eXBlCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfaW50X2Fy cmF5X2RvbWFpbiBBUyBpbnRbXSBDSEVDSyAoYXJyYXlfbGVuZ3RoKFZBTFVFLCAxKSA8PSA1 KTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19pbnRfYXJyYXlfZG9tYWlu Jyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfaW50X2FycmF5X2RvbWFp bicsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVzdCBkb21haW4gaW4gbm9uLXB1YmxpYyBz Y2hlbWEKK0NSRUFURSBTQ0hFTUEgcmVncmVzc190ZXN0X3NjaGVtYTsKK0NSRUFURSBET01B SU4gcmVncmVzc190ZXN0X3NjaGVtYS5yZWdyZXNzX3NjaGVtYV9kb21haW4gQVMgdGV4dCBE RUZBVUxUICd0ZXN0JzsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc190ZXN0 X3NjaGVtYS5yZWdyZXNzX3NjaGVtYV9kb21haW4nKTsKKworLS0gVGVzdCBkb21haW4gd2l0 aCBtdWx0aXBsZSBjb25zdHJhaW50IHR5cGVzIGNvbWJpbmVkCitDUkVBVEUgRE9NQUlOIHJl Z3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW4gQVMgdmFyY2hhcig1MCkKKyAgICBOT1QgTlVM TAorICAgIERFRkFVTFQgJ2RlZmF1bHRfdmFsdWUnCisgICAgQ0hFQ0sgKExFTkdUSChWQUxV RSkgPj0gNSkKKyAgICBDSEVDSyAoVkFMVUUgIX4gJ15ccyokJyk7ICAtLSBub3QganVzdCB3 aGl0ZXNwYWNlCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfY29tcHJlaGVu c2l2ZV9kb21haW4nKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19jb21w cmVoZW5zaXZlX2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVzdCBkb21haW4g b3ZlciBjb21wb3NpdGUgdHlwZQorQ1JFQVRFIFRZUEUgcmVncmVzc19hZGRyZXNzX3R5cGUg QVMgKHN0cmVldCB0ZXh0LCBjaXR5IHRleHQsIHppcGNvZGUgdGV4dCk7CitDUkVBVEUgRE9N QUlOIHJlZ3Jlc3NfYWRkcmVzc19kb21haW4gQVMgcmVncmVzc19hZGRyZXNzX3R5cGUgQ0hF Q0sgKChWQUxVRSkuemlwY29kZSB+ICdeXGR7NX0kJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFp bl9kZGwoJ3JlZ3Jlc3NfYWRkcmVzc19kb21haW4nKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWlu X2RkbCgncmVncmVzc19hZGRyZXNzX2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsKKworLS0g VGVzdCBkb21haW4gd2l0aCBOT1QgVkFMSUQgY29uc3RyYWludAorQ1JFQVRFIERPTUFJTiBy ZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQVMgaW50OworQUxURVIgRE9NQUlOIHJlZ3Jlc3Nf ZG9tYWluX25vdF92YWxpZCBBREQgQ09OU1RSQUlOVCBjaGVja19wb3NpdGl2ZSBDSEVDSyAo VkFMVUUgPiAwKSBOT1QgVkFMSUQ7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jl c3NfZG9tYWluX25vdF92YWxpZCcpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdy ZXNzX2RvbWFpbl9ub3RfdmFsaWQnLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9t YWluIHdpdGggbWl4IG9mIHZhbGlkIGFuZCBub3QgdmFsaWQgY29uc3RyYWludHMKK0NSRUFU RSBET01BSU4gcmVncmVzc19kb21haW5fbWl4ZWQgQVMgaW50IENIRUNLIChWQUxVRSAhPSAw KTsKK0FMVEVSIERPTUFJTiByZWdyZXNzX2RvbWFpbl9taXhlZCBBREQgQ09OU1RSQUlOVCBj aGVja19yYW5nZSBDSEVDSyAoVkFMVUUgQkVUV0VFTiAxIEFORCAxMDApIE5PVCBWQUxJRDsK K1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbWl4ZWQnKTsKK1NF TEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbWl4ZWQnLCBwcmV0dHkg PT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIHdpdGggY29sbGF0aW9uCitDUkVBVEUgRE9N QUlOIHJlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0ZSBBUyB0ZXh0IENPTExBVEUgIkMiOwor U0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl93aXRoX2NvbGxhdGUn KTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fd2l0aF9jb2xs YXRlJywgcHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGRvbWFpbiB0aGF0IHNoYWRvd3Mg YSBidWlsdC1pbiB0eXBlIG5hbWUgKG11c3QgdXNlIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSkK K0NSRUFURSBET01BSU4gcHVibGljLmludCBBUyBwZ19jYXRhbG9nLmludDQ7CistLSBUaGlz IHNob3VsZCBmYWlsIGJlY2F1c2UgJ2ludCcgcmVzb2x2ZXMgdG8gcGdfY2F0YWxvZy5pbnQ0 LCBub3QgcHVibGljLmludAorU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdpbnQnKTsgIC0t IHNob3VsZCBmYWlsCistLSBUaGlzIHNob3VsZCB3b3JrIHdpdGggc2NoZW1hLXF1YWxpZmll ZCBuYW1lCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3B1YmxpYy5pbnQnKTsKKworLS0g Um91bmQtdHJpcCB0ZXN0czogdmVyaWZ5IERETCBpcyBzeW50YWN0aWNhbGx5IHZhbGlkIGFu ZCBzZW1hbnRpY2FsbHkgY29ycmVjdAorQ1JFQVRFIEZVTkNUSU9OIHJlZ3Jlc3NfdmVyaWZ5 X2RkbF9yb3VuZHRyaXAob2JqZWN0X3R5cGUgdGV4dCwgb2JqZWN0X25hbWUgdGV4dCkgUkVU VVJOUyB2b2lkCitMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitERUNMQVJFCisgICAgb3JpZ2lu YWxfZGRsIHRleHQ7CisgICAgcmVjcmVhdGVkX2RkbCB0ZXh0OworQkVHSU4KKyAgICBFWEVD VVRFIGZvcm1hdCgnU0VMRUNUIHBnX2dldF8lc19kZGwoJUwpJywgb2JqZWN0X3R5cGUsIG9i amVjdF9uYW1lKSBJTlRPIG9yaWdpbmFsX2RkbDsKKyAgICBFWEVDVVRFIGZvcm1hdCgnRFJP UCAlcyAlcycsIG9iamVjdF90eXBlLCBvYmplY3RfbmFtZSk7CisgICAgRVhFQ1VURSBvcmln aW5hbF9kZGw7CisgICAgRVhFQ1VURSBmb3JtYXQoJ1NFTEVDVCBwZ19nZXRfJXNfZGRsKCVM KScsIG9iamVjdF90eXBlLCBvYmplY3RfbmFtZSkgSU5UTyByZWNyZWF0ZWRfZGRsOworICAg IEFTU0VSVCBvcmlnaW5hbF9kZGwgPSByZWNyZWF0ZWRfZGRsLAorICAgICAgICBmb3JtYXQo RSdyb3VuZC10cmlwIG1pc21hdGNoIGZvciAlcyAlczpcbiAgb3JpZ2luYWw6ICAlc1xuICBy ZWNyZWF0ZWQ6ICVzJywKKyAgICAgICAgICAgICAgIG9iamVjdF90eXBlLCBvYmplY3RfbmFt ZSwgb3JpZ2luYWxfZGRsLCByZWNyZWF0ZWRfZGRsKTsKK0VORDsKKyQkOworCitTRUxFQ1Qg cmVncmVzc192ZXJpZnlfZGRsX3JvdW5kdHJpcCgnZG9tYWluJywgJ3JlZ3Jlc3NfdXNfcG9z dGFsX2NvZGUnKTsKK1NFTEVDVCByZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwKCdkb21h aW4nLCAncmVncmVzc19kb21haW5fbm90X251bGwnKTsKK1NFTEVDVCByZWdyZXNzX3Zlcmlm eV9kZGxfcm91bmR0cmlwKCdkb21haW4nLCAncmVncmVzc19kb21haW5fY2hlY2snKTsKK1NF TEVDVCByZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwKCdkb21haW4nLCAnInJlZ3Jlc3Nf ZG9tYWluIHdpdGggc3BhY2UiJyk7CitTRUxFQ1QgcmVncmVzc192ZXJpZnlfZGRsX3JvdW5k dHJpcCgnZG9tYWluJywgJ3JlZ3Jlc3Nfc2ltcGxlX2RvbWFpbicpOworU0VMRUNUIHJlZ3Jl c3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAoJ2RvbWFpbicsICdyZWdyZXNzX2Rlcml2ZWRfZG9t YWluJyk7CitTRUxFQ1QgcmVncmVzc192ZXJpZnlfZGRsX3JvdW5kdHJpcCgnZG9tYWluJywg J3JlZ3Jlc3Nfc2VxX2RvbWFpbicpOworU0VMRUNUIHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3Vu ZHRyaXAoJ2RvbWFpbicsICdyZWdyZXNzX3ByZWNpc2VfbnVtZXJpYycpOworU0VMRUNUIHJl Z3Jlc3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAoJ2RvbWFpbicsICdyZWdyZXNzX2ludF9hcnJh eV9kb21haW4nKTsKK1NFTEVDVCByZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwKCdkb21h aW4nLCAncmVncmVzc190ZXN0X3NjaGVtYS5yZWdyZXNzX3NjaGVtYV9kb21haW4nKTsKK1NF TEVDVCByZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwKCdkb21haW4nLCAncmVncmVzc19j b21wcmVoZW5zaXZlX2RvbWFpbicpOworU0VMRUNUIHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3Vu ZHRyaXAoJ2RvbWFpbicsICdyZWdyZXNzX2FkZHJlc3NfZG9tYWluJyk7CitTRUxFQ1QgcmVn cmVzc192ZXJpZnlfZGRsX3JvdW5kdHJpcCgnZG9tYWluJywgJ3JlZ3Jlc3NfZG9tYWluX25v dF92YWxpZCcpOworU0VMRUNUIHJlZ3Jlc3NfdmVyaWZ5X2RkbF9yb3VuZHRyaXAoJ2RvbWFp bicsICdyZWdyZXNzX2RvbWFpbl9taXhlZCcpOworU0VMRUNUIHJlZ3Jlc3NfdmVyaWZ5X2Rk bF9yb3VuZHRyaXAoJ2RvbWFpbicsICdyZWdyZXNzX2RvbWFpbl93aXRoX2NvbGxhdGUnKTsK K1NFTEVDVCByZWdyZXNzX3ZlcmlmeV9kZGxfcm91bmR0cmlwKCdkb21haW4nLCAncHVibGlj LiJpbnQiJyk7CisKKy0tIENsZWFudXAKK0RST1AgRlVOQ1RJT04gcmVncmVzc192ZXJpZnlf ZGRsX3JvdW5kdHJpcDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGU7CitE Uk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfbnVsbDsKK0RST1AgRE9NQUlOIHJlZ3Jl c3NfZG9tYWluX2NoZWNrOworRFJPUCBET01BSU4gInJlZ3Jlc3NfZG9tYWluIHdpdGggc3Bh Y2UiOworRFJPUCBET01BSU4gcmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbjsKK0RST1Ag RE9NQUlOIHJlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluOworRFJP UCBTQ0hFTUEgcmVncmVzc190ZXN0X3NjaGVtYTsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfYWRk cmVzc19kb21haW47CitEUk9QIFRZUEUgcmVncmVzc19hZGRyZXNzX3R5cGU7CitEUk9QIERP TUFJTiByZWdyZXNzX2ludF9hcnJheV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX3By ZWNpc2VfbnVtZXJpYzsKK0RST1AgRE9NQUlOIHJlZ3Jlc3Nfc2VxX2RvbWFpbjsKK0RST1Ag U0VRVUVOQ0UgcmVncmVzc190ZXN0X3NlcV9yZW5hbWVkOworRFJPUCBET01BSU4gcmVncmVz c19kZXJpdmVkX2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfYmFzZV9kb21haW47CitE Uk9QIERPTUFJTiByZWdyZXNzX3NpbXBsZV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNz X2RvbWFpbl9ub3RfdmFsaWQ7CitEUk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9taXhlZDsK K0RST1AgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0ZTsKK0RST1AgRE9NQUlO IHB1YmxpYy5pbnQ7Ci0tIAoyLjQ1LjEKCg== --------------qgK0dKGip2OpAIfSRaxWz5PK--