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 1x3aVZ-006Wil-0N for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Sep 2026 14:39:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1x3aVW-0021vg-0b for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Sep 2026 14:39:38 +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 1x3aVV-0021vY-12 for pgsql-hackers@lists.postgresql.org; Mon, 07 Sep 2026 14:39:37 +0000 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1x3aVQ-00000004RbS-0ajB for pgsql-hackers@lists.postgresql.org; Mon, 07 Sep 2026 14:39:36 +0000 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-6a20319d030so4759117a12.2 for ; Mon, 07 Sep 2026 07:39:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=planetscale.com; s=google; t=1788791970; x=1789396770; darn=lists.postgresql.org; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:content-type:from:to:cc:subject:date:message-id:reply-to :content-type; bh=GHNcXqjyI+eeI65M/lnKtAKUATb4AbHosgyizj+qV4E=; b=By44qGXdBIkp9ZdYI+bvfe93mKv6iQpx0Mw81VPAIubG/BXQZRTUHhXuZABDrlm94Z 3BJ81STD0/Z9lSzJEokh4dGAZpIJu2gLbukxtzhqk3ty8AjPA/7Rmz5ZDghSWJLjjWK8 o/0s9ueHKVgPNZyDf9TL97WP8n3h3PnzxmKnLWwB86qZZtaqR//1WVHbl3VsRMbwU+6j QpoD+DHGNISGIv6D0DTY+UMJsHBOKGS4/hATCpfry83HMKTcpYk0RikhUzE616FtyZ15 2jfok4x40tXwy/y2D0MBO+nJF4kTpMtnyBU0gGcuJTUmlF5/dLAuJogEmGwveVQOelnb YV1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788791970; x=1789396770; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:content-type:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=GHNcXqjyI+eeI65M/lnKtAKUATb4AbHosgyizj+qV4E=; b=R8CPKSAn23IT7kRsEoyAqSOG4nmwY/O5POJNn7ov+SaBbA5OwqEpIc6z0wW6cagTIp AQYpFepYhpA+SRGN11zmrP+VGHkGhEDejWoAtn59GCdqag5vCxhyr3gAlWhEinmJUf8T GgzHxH6Zhq6ddP6x4In/+UXQvFOzFobWdSAMdC+jB+0g4Q8a8hw0SeNM+xibcp6tHVI7 tPI9OmRZDjjiOspg9YFz+X4p2c0YLnNhN9DGWFvdUjDBQH3MwmApUg2N+LpWaWy1glt7 UZ537kv+HYVBJ3ZcARJLzl91LfiFN1oLWpEtyx0lXG6ZszdyYFE0at0I4sPmvxJ1Q1DT YrkA== X-Gm-Message-State: AFuF++l57/x2m0XkXhzD30SueEcDrWpNor3nFpWxyHq3GkeJbda3HBEe NQuB7yrU3uk0WkAc1QlNYTvmavcoy7Oqh1/2P0JE0M87WnZJr8KAT+6DGV6EjTf8rkwEANddTbU bQmdh X-Gm-Gg: AYBFou2WMJQWzHEIkMdRtFqxnh25UuxoqTkAeqald+kL9mlkb/zTHNB89KihVLbHptE LF3jZRs1g9NXbbNePG6eQ7yVQ+d+MtY5l7MqasBy5czrC7gId7hzgCP94RyCNXN1fg+QA1rLMCj 4t/QBWQMe/Zs7Uf8xSMwxIUduvGuL1X6pxMhYRcO4ZfoEYWBHyRK0DfTATK2iXtIJwvDSUQjctN e+3j/rq7IxoaXPekg8Xul1xi0TQuLlJ4HDrX8wx4odP5FQtlxcMHXYnHm9HJmFrHNWWggYH+N35 snsrveKSJ+RtU5m8Yma5P/wcdjs2t0gvl+hl+IH0zvgQTMZWT1gahRmzplZdMj0QUqrm/CwZNIT 0eaPJDw1aZhhFZzj2Eywl64ahj96ASPzjVCIZk2iy8ZFH5WQquBa35WlfOZdHd8WaoWM1tbgHw6 ko+RACkdFy8gE8dB8qHwyjfVnpp76jufzxWfG0/V6cMmTRVFWFuizMpp78OWEVlyk59xSuKFgav KrQLWcGY63Y0YSjbt6fQldbbqptgaoluSmSPrt328qR5gp1GB5L+aJhbP8iKocgQzTCpAk= X-Received: by 2002:a05:6402:5387:b0:6a6:1b08:3ab4 with SMTP id 4fb4d7f45d1cf-6a7e8d79606mr7958931a12.2.1788791970223; Mon, 07 Sep 2026 07:39:30 -0700 (PDT) Received: from ?IPV6:2a04:4540:654b:d700:e46a:f5eb:ee2b:6903? ([2a04:4540:654b:d700:e46a:f5eb:ee2b:6903]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a7e64672bfsm4367609a12.0.2026.09.07.07.39.29 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 07 Sep 2026 07:39:29 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------o5gDsuwb0UNO3B9LN0bTQv7o" Message-ID: <28f66580-5d6b-4997-95f6-7d9e7917c585@planetscale.com> Date: Mon, 7 Sep 2026 16:39:29 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-GB From: Jan Nidzwetzki Subject: Prevent object capture in CREATE/ALTER EXTENSION scripts To: pgsql-hackers@lists.postgresql.org 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. --------------o5gDsuwb0UNO3B9LN0bTQv7o Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hi Hackers, We would like to propose hardening name resolution during extension installation and upgrade scripts, so that a script cannot be made to reach an object that another role planted in the extension's installation schema. Problem ======= A CREATE EXTENSION or ALTER EXTENSION ... UPDATE script runs as the invoking role, or as the bootstrap superuser for a trusted extension installed by a non-superuser. Either way a captured reference runs another role's code with elevated rights. Say the script calls f('abc'). The literal has type "unknown", so if the extension defines f(varchar) but another role has already created f(text) in the same schema, both are candidates. They sit in the same schema, so search-path position cannot break the tie, and func_select_candidate() falls back to type preference: text is the preferred type of the string category, so f(text) wins, and the script runs that role's function with its own privileges. Writing @extschema@.f('abc') changes nothing: qualification pins the schema the plant sits in, not the signature. Neither existing defense covers this. The search_path pinning from 7eeb1d9861b ("Make contrib modules' installation scripts more secure.") only keeps the plant out of the other schemas on the path, not out of the extension's own target schema, which is necessarily first. And the ownership checks from b9b21acc766 ("In extensions, don't replace objects not belonging to the extension.") guard what a script creates, not what it references. The same applies to operators: CREATE OPERATOR only requires a function the creating role can execute. Nor is it limited to overloads: a domain or table planted under the name of a required extension's type or config table captures the reference outright, and its CHECK constraint or triggers then run with the script's privileges. The only precondition is that some other role can create objects in the installation schema. Hosted platforms that run whitelisted extension scripts as superuser on a user's behalf make that the normal case, not an odd configuration. This hazard is documented: "Security Considerations for Extension Scripts" describes these trojan objects and tells authors to schema-qualify every name and add explicit casts [1]. That advice is correct, but it puts the whole burden on the author getting every call site right, and one uncast call is enough, so a resolution-time backstop seems worthwhile. Proposed change =============== Two patches attached: 0001 - propagates the extension-script state to parallel workers. creating_extension and CurrentExtensionObject are backend-local globals, so a worker never saw them. Work that a worker does on behalf of a script, such as parse-analyzing a parallel-safe function's body at run time, therefore ran as though no script were in progress and would skip the check that 0002 adds. Both values now ride through FixedParallelState the same way the current user id and the temp-namespace state already do. No visible effect on its own. 0002 - makes name resolution ignore untrusted objects while creating_extension is set. An object is trusted if it is in pg_catalog, owned by a superuser, owned by the role the script is running as, or a member of the extension being installed or of one it requires; the last rule reads pg_depend, and only where the cheaper tests fail. The search-path lookups for relations, types, functions and operators all apply the test. For functions and operators it happens as candidates are gathered, not in the callers that resolve the ambiguity: the gather loop collapses duplicate signatures to the one earliest on the path, so a plant in the extension's own schema would otherwise displace a required extension's identical function. It is also the single place every caller passes through, including LookupFuncNameInternal() and regprocedure input; the operator test in OpernameGetOprid() likewise covers binary_oper_exact(), LookupOperName(), and so CREATE OPERATOR CLASS, and regoperator. Caches need the same treatment. oper() and left_oper() skip the operator lookaside cache while creating_extension, and CachedPlanSource records whether it was analyzed inside a script, including on the plpgsql simple-expression fast path, since a plan analyzed beforehand in a session whose search_path matches the one the script pins would otherwise be reused inside it. If nothing trusted remains, resolution fails as though the object did not exist, with a detail saying a candidate was ignored. If a trusted candidate exists but does not match, the usual argument-type error is raised and the ignored candidate is mentioned in a hint. Outside extension scripts every object is trusted, so ordinary parsing is unchanged. 0002 adds regression tests for planted overloads, references with no trusted candidate, "superuser = false" extensions, updates run by another role, required extensions, cached plans and parallel workers. What this does not cover ======================== The filtering only applies while the script runs. An extension's own function bodies resolve names when they execute, with creating_extension false again, so a planted overload can still capture those calls after installation, usually with the caller's privileges, though SECURITY DEFINER puts the elevated case back on the table. Covering that wants a different mechanism; script time seems worth doing on its own, being the window where a captured reference is most likely to run as a superuser. Trust is by ownership, not by name. A script that references an object owned by another ordinary role, including one that belongs to an extension outside its direct requires list, now fails even with a schema-qualified name. Such references should be rare, but this is a behavior change for existing scripts. Operator classes and families, collations, text search objects, conversions, statistics objects and casts still take unfiltered lookup paths; none looked like a route to running an unprivileged role's code, but we may have missed one. The lookups that resolve by exact name also have no flags word to carry the "candidate ignored" detail. Related work ============ Jelte Fennema-Nio's "extensions with an owned schema" [2] starts from the same observation and gives the extension a fresh schema, removing the precondition. It is opt-in and only for new extensions, so the two look complementary. The "sandboxing untrusted code" thread [3] makes a point we tried to honor: a check that rejects what a human reads as harmless gets switched off. A script references built-ins, its own objects and its required extensions', and the trust rule accepts all three regardless of who owns them. Does this approach seem reasonable? [1] https://www.postgresql.org/docs/current/extend-extensions.html#EXTEND-EXTENSIONS-SECURITY-SCRIPTS [2] https://www.postgresql.org/message-id/flat/CAGECzQQzDqDzakBkR71ZkQ1N1ffTjAaruRSqppQAKu3WF%2B6rNQ%40mail.gmail.com [3] https://www.postgresql.org/message-id/flat/CA%2BTgmoYiumw-yR8nUUX_8qdihPd0ZmT29ch0VR_r%2Bkw%2Bo7QJvQ%40mail.gmail.com Best regards Jan Nidzwetzki Fabrízio de Royes Mello -- Jan Nidzwetzki PlanetScale Postgres Core Team --------------o5gDsuwb0UNO3B9LN0bTQv7o Content-Type: text/plain; charset=UTF-8; name="0001-Propagate-extension-script-state-to-parallel-workers.patch" Content-Disposition: attachment; filename*0="0001-Propagate-extension-script-state-to-parallel-workers.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0NjU4ZjcyZDZhMWU0YTllMGU5MWZhNDVlNzg3YTNlYzE4NmQzMTc2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKYW4gTmlkendldHpraSA8amFuQHBsYW5ldHNjYWxl LmNvbT4KRGF0ZTogV2VkLCA1IEF1ZyAyMDI2IDE1OjIxOjA5ICswMjAwClN1YmplY3Q6IFtQ QVRDSCAxLzJdIFByb3BhZ2F0ZSBleHRlbnNpb24tc2NyaXB0IHN0YXRlIHRvIHBhcmFsbGVs IHdvcmtlcnMKCmNyZWF0aW5nX2V4dGVuc2lvbiBhbmQgQ3VycmVudEV4dGVuc2lvbk9iamVj dCBhcmUgYmFja2VuZC1sb2NhbCwgc28gYQpwYXJhbGxlbCB3b3JrZXIgZG9pbmcgd29yayBm b3IgYSBDUkVBVEUvQUxURVIgRVhURU5TSU9OIHNjcmlwdCAoZm9yCmV4YW1wbGUsIGV4ZWN1 dGluZyBhIHBhcmFsbGVsLXNhZmUgZnVuY3Rpb24ncyBib2R5KSBiZWhhdmVkIGFzIHRob3Vn aCBubwpzY3JpcHQgd2VyZSBpbiBwcm9ncmVzcy4KCk5vIHZpc2libGUgZWZmZWN0IG9uIGl0 cyBvd247IHByZXBhcmF0aW9uIGZvciB0aGUgZm9sbG93aW5nIGNvbW1pdC4KLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jIHwgIDkgKysrKysrKysrCiBzcmMv YmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgIHwgMjQgKysrKysrKysrKysrKysr KysrKysrKysrCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaCAgICAgIHwgIDMg KysrCiAzIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCAxN2ZjZDI0NmIwYy4uYzVmNjdiMmY5OTIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwpAQCAtMjYsNiArMjYs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfZW51bS5oIgogI2luY2x1ZGUgImNhdGFsb2cv c3RvcmFnZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCisjaW5jbHVkZSAiY29t bWFuZHMvZXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEu aCIKQEAgLTkwLDkgKzkxLDExIEBAIHR5cGVkZWYgc3RydWN0IEZpeGVkUGFyYWxsZWxTdGF0 ZQogCU9pZAkJCWN1cnJlbnRfdXNlcl9pZDsKIAlPaWQJCQl0ZW1wX25hbWVzcGFjZV9pZDsK IAlPaWQJCQl0ZW1wX3RvYXN0X25hbWVzcGFjZV9pZDsKKwlPaWQJCQljdXJyZW50X2V4dGVu c2lvbl9vYmplY3Q7CiAJaW50CQkJc2VjX2NvbnRleHQ7CiAJYm9vbAkJc2Vzc2lvbl91c2Vy X2lzX3N1cGVydXNlcjsKIAlib29sCQlyb2xlX2lzX3N1cGVydXNlcjsKKwlib29sCQljcmVh dGluZ19leHRlbnNpb247CiAJUEdQUk9DCSAgICpwYXJhbGxlbF9sZWFkZXJfcGdwcm9jOwog CXBpZF90CQlwYXJhbGxlbF9sZWFkZXJfcGlkOwogCVByb2NOdW1iZXIJcGFyYWxsZWxfbGVh ZGVyX3Byb2NfbnVtYmVyOwpAQCAtMzQ4LDYgKzM1MSw4IEBAIEluaXRpYWxpemVQYXJhbGxl bERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJZnBzLT5yb2xlX2lzX3N1cGVydXNlciA9 IGN1cnJlbnRfcm9sZV9pc19zdXBlcnVzZXI7CiAJR2V0VGVtcE5hbWVzcGFjZVN0YXRlKCZm cHMtPnRlbXBfbmFtZXNwYWNlX2lkLAogCQkJCQkJICAmZnBzLT50ZW1wX3RvYXN0X25hbWVz cGFjZV9pZCk7CisJR2V0RXh0ZW5zaW9uQ3JlYXRpb25TdGF0ZSgmZnBzLT5jcmVhdGluZ19l eHRlbnNpb24sCisJCQkJCQkJICAmZnBzLT5jdXJyZW50X2V4dGVuc2lvbl9vYmplY3QpOwog CWZwcy0+cGFyYWxsZWxfbGVhZGVyX3BncHJvYyA9IE15UHJvYzsKIAlmcHMtPnBhcmFsbGVs X2xlYWRlcl9waWQgPSBNeVByb2NQaWQ7CiAJZnBzLT5wYXJhbGxlbF9sZWFkZXJfcHJvY19u dW1iZXIgPSBNeVByb2NOdW1iZXI7CkBAIC0xNTM0LDYgKzE1MzksMTAgQEAgUGFyYWxsZWxX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCVNldFRlbXBOYW1lc3BhY2VTdGF0ZShmcHMt PnRlbXBfbmFtZXNwYWNlX2lkLAogCQkJCQkJICBmcHMtPnRlbXBfdG9hc3RfbmFtZXNwYWNl X2lkKTsKIAorCS8qIFJlc3RvcmUgZXh0ZW5zaW9uLXNjcmlwdCBzdGF0ZSwgc28gdGhlIHdv cmtlciBtYXRjaGVzIHRoZSBsZWFkZXIuICovCisJU2V0RXh0ZW5zaW9uQ3JlYXRpb25TdGF0 ZShmcHMtPmNyZWF0aW5nX2V4dGVuc2lvbiwKKwkJCQkJCQkgIGZwcy0+Y3VycmVudF9leHRl bnNpb25fb2JqZWN0KTsKKwogCS8qIFJlc3RvcmUgdW5jb21taXR0ZWQgZW51bXMuICovCiAJ dW5jb21taXR0ZWRlbnVtc3NwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9L RVlfVU5DT01NSVRURURFTlVNUywKIAkJCQkJCQkJCQkgICBmYWxzZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4dGVuc2lvbi5jCmluZGV4IGY3ZTczOTVjMTczLi40ZTNiNDQ5NDc1OSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTE1MDksNiArMTUwOSwzMCBAQCBleGVjdXRl X2V4dGVuc2lvbl9zY3JpcHQoT2lkIGV4dGVuc2lvbk9pZCwgRXh0ZW5zaW9uQ29udHJvbEZp bGUgKmNvbnRyb2wsCiAJCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNh dmVfc2VjX2NvbnRleHQpOwogfQogCisvKgorICogR2V0RXh0ZW5zaW9uQ3JlYXRpb25TdGF0 ZSAtIHJlcG9ydCB0aGUgY3VycmVudCBleHRlbnNpb24tc2NyaXB0IHN0YXRlCisgKgorICog VXNlZCBieSB0aGUgcGFyYWxsZWwtcXVlcnkgbWFjaGluZXJ5IHRvIGNhcnJ5IGNyZWF0aW5n X2V4dGVuc2lvbiBhbmQKKyAqIEN1cnJlbnRFeHRlbnNpb25PYmplY3QgdG8gd29ya2Vycywg c28gYSB3b3JrZXIgc2VlcyB0aGUgc2FtZQorICogZXh0ZW5zaW9uLXNjcmlwdCBzdGF0ZSBh cyB0aGUgbGVhZGVyLgorICovCit2b2lkCitHZXRFeHRlbnNpb25DcmVhdGlvblN0YXRlKGJv b2wgKmNyZWF0aW5nLCBPaWQgKmV4dGVuc2lvbk9iamVjdCkKK3sKKwkqY3JlYXRpbmcgPSBj cmVhdGluZ19leHRlbnNpb247CisJKmV4dGVuc2lvbk9iamVjdCA9IEN1cnJlbnRFeHRlbnNp b25PYmplY3Q7Cit9CisKKy8qCisgKiBTZXRFeHRlbnNpb25DcmVhdGlvblN0YXRlIC0gcmVz dG9yZSBleHRlbnNpb24tc2NyaXB0IHN0YXRlIGluIGEgd29ya2VyCisgKi8KK3ZvaWQKK1Nl dEV4dGVuc2lvbkNyZWF0aW9uU3RhdGUoYm9vbCBjcmVhdGluZywgT2lkIGV4dGVuc2lvbk9i amVjdCkKK3sKKwljcmVhdGluZ19leHRlbnNpb24gPSBjcmVhdGluZzsKKwlDdXJyZW50RXh0 ZW5zaW9uT2JqZWN0ID0gZXh0ZW5zaW9uT2JqZWN0OworfQorCiAvKgogICogRmluZCBvciBj cmVhdGUgYW4gRXh0ZW5zaW9uVmVyc2lvbkluZm8gZm9yIHRoZSBzcGVjaWZpZWQgdmVyc2lv biBuYW1lCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9u LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaAppbmRleCA3YTc2YmRlYmNm YS4uOGVhZWMyZDRmNjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVu c2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oCkBAIC0zMiw2 ICszMiw5IEBAIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpFeHRlbnNpb25fY29udHJvbF9w YXRoOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgY3JlYXRpbmdfZXh0ZW5zaW9uOwogZXh0 ZXJuIFBHRExMSU1QT1JUIE9pZCBDdXJyZW50RXh0ZW5zaW9uT2JqZWN0OwogCitleHRlcm4g dm9pZCBHZXRFeHRlbnNpb25DcmVhdGlvblN0YXRlKGJvb2wgKmNyZWF0aW5nLCBPaWQgKmV4 dGVuc2lvbk9iamVjdCk7CitleHRlcm4gdm9pZCBTZXRFeHRlbnNpb25DcmVhdGlvblN0YXRl KGJvb2wgY3JlYXRpbmcsIE9pZCBleHRlbnNpb25PYmplY3QpOworCiAKIGV4dGVybiBPYmpl Y3RBZGRyZXNzIENyZWF0ZUV4dGVuc2lvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUV4 dGVuc2lvblN0bXQgKnN0bXQpOwogCi0tIAoyLjQ3LjMKCg== --------------o5gDsuwb0UNO3B9LN0bTQv7o Content-Type: text/plain; charset=UTF-8; name="0002-Prefer-trusted-candidates-when-resolving-names-in-ex.patch" Content-Disposition: attachment; filename*0="0002-Prefer-trusted-candidates-when-resolving-names-in-ex.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4YTBlMWYxYmE0MzIxOGIxYThkMzY4NTE3MGRjMGZkZTU4MzI0NzkyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKYW4gTmlkendldHpraSA8amFuQHBsYW5ldHNjYWxl LmNvbT4KRGF0ZTogV2VkLCA1IEF1ZyAyMDI2IDE1OjIxOjA5ICswMjAwClN1YmplY3Q6IFtQ QVRDSCAyLzJdIFByZWZlciB0cnVzdGVkIGNhbmRpZGF0ZXMgd2hlbiByZXNvbHZpbmcgbmFt ZXMgaW4KIGV4dGVuc2lvbiBzY3JpcHRzCgpBbiBleHRlbnNpb24gc2NyaXB0IHJ1bnMgd2l0 aCBzdXBlcnVzZXIgcHJpdmlsZWdlcywgc28gYSB1c2VyIHdobyBjYW4KY3JlYXRlIG9iamVj dHMgaW4gdGhlIGV4dGVuc2lvbidzIHNjaGVtYSBjYW4gcGxhbnQgb25lIHRoYXQgY2FwdHVy ZXMgYQpyZWZlcmVuY2UgdGhlIHNjcmlwdCBtYWtlcywgZih0ZXh0KSBiZXNpZGUgdGhlIGV4 dGVuc2lvbidzIGYodmFyY2hhcikKb3IgYSBkb21haW4gc2hhZG93aW5nIGEgcmVxdWlyZWQg ZXh0ZW5zaW9uJ3MsIGFuZCBydW4gY29kZSB3aXRoIHRob3NlCnByaXZpbGVnZXMuICBQaW5u aW5nIHNlYXJjaF9wYXRoIGRvZXMgbm90IGhlbHA6IHRoZSBwbGFudCBpcyBpbiB0aGUKc2Ny aXB0J3Mgb3duIGZpcnN0IHNjaGVtYS4KCklnbm9yZSB1bnRydXN0ZWQgb2JqZWN0cyB3aGls ZSBhIHNjcmlwdCBydW5zLiAgVHJ1c3RlZCBtZWFucyBpbgpwZ19jYXRhbG9nLCBvd25lZCBi eSBhIHN1cGVydXNlciwgb3duZWQgYnkgdGhlIHJvbGUgcnVubmluZyB0aGUgc2NyaXB0LApv ciBhIG1lbWJlciBvZiB0aGUgZXh0ZW5zaW9uIGJlaW5nIGluc3RhbGxlZCBvciBvZiBvbmUg aXQgcmVxdWlyZXMuICBUaGUKcmVsYXRpb24sIHR5cGUsIGZ1bmN0aW9uIGFuZCBvcGVyYXRv ciBsb29rdXBzIGFsbCBhcHBseSB0aGUgdGVzdCwgdGhlCmxhc3QgdHdvIGFzIHRoZXkgZ2F0 aGVyIGNhbmRpZGF0ZXMgc28gYSBwbGFudCBjYW5ub3QgZGlzcGxhY2UgYSB0cnVzdGVkCm1h dGNoIGJ5IHNlYXJjaC1wYXRoIHBvc2l0aW9uLiAgUmVzb2x1dGlvbiBvdGhlcndpc2UgZmFp bHMgYXMgaWYgdGhlCm9iamVjdCBkaWQgbm90IGV4aXN0LCB3aXRoIGEgZGV0YWlsIHNheWlu ZyB3aHkuICBDYWNoZWQgcGxhbnMgcmVjb3JkCndoZXRoZXIgdGhleSB3ZXJlIGFuYWx5emVk IGluc2lkZSBhIHNjcmlwdCwgc2luY2UgYSBzY3JpcHQncyBzZWFyY2hfcGF0aApjYW4gbWF0 Y2ggb25lIHRoZSBzZXNzaW9uIGFscmVhZHkgaGFkLgotLS0KIHNyYy9iYWNrZW5kL2NhdGFs b2cvbmFtZXNwYWNlLmMgICAgICAgICAgICAgICB8IDIxMCArKysrKysrKystLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvcGdfb3BlcmF0b3IuYyAgICAgICAgICAgICB8ICAxOCArKwogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgICAgICAgIHwgIDUxICsrKwog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAgICAgIHwgIDIxICst CiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jICAgICAgICAgICAgICAgfCAgMzMg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8ICAy OSArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCAgICAgICAgICAgICAgIHwg ICA0ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUgICAg IHwgIDE2ICsKIC4uLi9leHBlY3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0ICAgICAgICAgICAg ICB8IDMwMCArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRl bnNpb25zL21lc29uLmJ1aWxkICB8ICAxOCArKwogLi4uL3Rlc3RfZXh0ZW5zaW9ucy9zcWwv dGVzdF9leHRlbnNpb25zLnNxbCAgIHwgMTgzICsrKysrKysrKysrCiAuLi4vdGVzdF9leHRf b3ZlcmxvYWQtLTEuMC5zcWwgICAgICAgICAgICAgICAgfCAgMTkgKysKIC4uLi90ZXN0X2V4 dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWQuY29udHJvbCB8ICAgMyArCiAuLi4vdGVzdF9l eHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLS0yLjAuc3FsICAgfCAgIDkgKwogLi4uL3Rlc3Rf ZXh0X292ZXJsb2FkX25vc3VwZXItLTEuMC5zcWwgICAgICAgIHwgIDEyICsKIC4uLi90ZXN0 X2V4dF9vdmVybG9hZF9ub3N1cGVyLmNvbnRyb2wgICAgICAgICB8ICAgNCArCiAuLi4vdGVz dF9leHRfb3ZlcmxvYWRfcGFyYWxsZWwtLTEuMC5zcWwgICAgICAgfCAgMTUgKwogLi4uL3Rl c3RfZXh0X292ZXJsb2FkX3BhcmFsbGVsLmNvbnRyb2wgICAgICAgIHwgICAzICsKIC4uLi90 ZXN0X2V4dF9vdmVybG9hZF9yZXEtLTEuMC5zcWwgICAgICAgICAgICB8ICAyMCArKwogLi4u L3Rlc3RfZXh0X292ZXJsb2FkX3JlcS5jb250cm9sICAgICAgICAgICAgIHwgICA0ICsKIC4u Li90ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwLS0xLjAuc3FsICAgICAgICB8ICAyMyArKwog Li4uL3Rlc3RfZXh0X292ZXJsb2FkX3JlcV9kZXAuY29udHJvbCAgICAgICAgIHwgICA0ICsK IC4uLi90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTEuMC5zcWwgICAgICAgICB8ICAgOSAr CiAuLi4vdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0yLjAuc3FsICAgICAgICAgfCAgIDkg KwogLi4uL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMy4wLnNxbCAgICAgICAgIHwgIDEw ICsKIC4uLi90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTQuMC5zcWwgICAgICAgICB8ICAg OSArCiAuLi4vdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS01LjAuc3FsICAgICAgICAgfCAg IDggKwogLi4uL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNi4wLnNxbCAgICAgICAgIHwg ICA4ICsKIC4uLi90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QuY29udHJvbCAgICAgICAgICB8 ICAgMyArCiAzMSBmaWxlcyBjaGFuZ2VkLCAxMDA4IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRl bnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkLS0xLjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWQuY29u dHJvbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X292ZXJsb2FkX25vc3VwZXItLTEuMC0tMi4wLnNxbAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292 ZXJsb2FkX25vc3VwZXItLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLmNvbnRy b2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy90ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbC0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2Fk X3BhcmFsbGVsLmNvbnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9yZXEtLTEuMC5zcWwKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4 dF9vdmVybG9hZF9yZXEuY29udHJvbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21v ZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3JlcV9kZXAtLTEuMC5z cWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy90ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwLmNvbnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9z dHJpY3QtLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTIuMC5zcWwKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4 dF9vdmVybG9hZF9zdHJpY3QtLTMuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTQu MC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTUuMC5zcWwKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9h ZF9zdHJpY3QtLTYuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QuY29udHJvbAoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL25hbWVzcGFjZS5jCmluZGV4IDA2NDdhMTk4ZGVhLi43MzdkMDNlOTM5ZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3Rl bXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29t bWFuZHMvZXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiY29tbW9uL2hhc2hmbl91bnN0YWJsZS5o IgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAt MjI1LDYgKzIyNiw4IEBAIHN0YXRpYyBib29sIFRTUGFyc2VySXNWaXNpYmxlRXh0KE9pZCBw cnNJZCwgYm9vbCAqaXNfbWlzc2luZyk7CiBzdGF0aWMgYm9vbCBUU0RpY3Rpb25hcnlJc1Zp c2libGVFeHQoT2lkIGRpY3RJZCwgYm9vbCAqaXNfbWlzc2luZyk7CiBzdGF0aWMgYm9vbCBU U1RlbXBsYXRlSXNWaXNpYmxlRXh0KE9pZCB0bXBsSWQsIGJvb2wgKmlzX21pc3NpbmcpOwog c3RhdGljIGJvb2wgVFNDb25maWdJc1Zpc2libGVFeHQoT2lkIGNmZ2lkLCBib29sICppc19t aXNzaW5nKTsKK3N0YXRpYyBib29sIFJlbGF0aW9uSXNUcnVzdGVkSW5FeHRlbnNpb25TY3Jp cHQoT2lkIHJlbGlkKTsKK3N0YXRpYyBib29sIFR5cGVJc1RydXN0ZWRJbkV4dGVuc2lvblNj cmlwdChPaWQgdHlwaWQpOwogc3RhdGljIHZvaWQgcmVjb21wdXRlTmFtZXNwYWNlUGF0aCh2 b2lkKTsKIHN0YXRpYyB2b2lkIEFjY2Vzc1RlbXBUYWJsZU5hbWVzcGFjZShib29sIGZvcmNl KTsKIHN0YXRpYyB2b2lkIEluaXRUZW1wVGFibGVOYW1lc3BhY2Uodm9pZCk7CkBAIC04OTYs MTMgKzg5OSw0MSBAQCBSZWxuYW1lR2V0UmVsaWQoY29uc3QgY2hhciAqcmVsbmFtZSkKIAog CQlyZWxpZCA9IGdldF9yZWxuYW1lX3JlbGlkKHJlbG5hbWUsIG5hbWVzcGFjZUlkKTsKIAkJ aWYgKE9pZElzVmFsaWQocmVsaWQpKQorCQl7CisJCQkvKiBTa2lwIHVudHJ1c3RlZCBtYXRj aGVzIHdoaWxlIGFuIGV4dGVuc2lvbiBzY3JpcHQgcnVucyAqLworCQkJaWYgKGNyZWF0aW5n X2V4dGVuc2lvbiAmJgorCQkJCSFSZWxhdGlvbklzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0 KHJlbGlkKSkKKwkJCQljb250aW51ZTsKIAkJCXJldHVybiByZWxpZDsKKwkJfQogCX0KIAog CS8qIE5vdCBmb3VuZCBpbiBwYXRoICovCiAJcmV0dXJuIEludmFsaWRPaWQ7CiB9CiAKKy8q CisgKiBSZWxhdGlvbklzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0CisgKgkJT2JqZWN0SXNU cnVzdGVkSW5FeHRlbnNpb25TY3JpcHQgZm9yIGEgcmVsYXRpb24sIGJ5IE9JRC4KKyAqLwor c3RhdGljIGJvb2wKK1JlbGF0aW9uSXNUcnVzdGVkSW5FeHRlbnNpb25TY3JpcHQoT2lkIHJl bGlkKQoreworCUhlYXBUdXBsZQl0cDsKKwlGb3JtX3BnX2NsYXNzIGZvcm07CisJYm9vbAkJ cmVzdWx0OworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERh dHVtKHJlbGlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJcmV0dXJuIHRy dWU7CisJZm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHApOworCXJlc3VsdCA9 IE9iamVjdElzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0KFJlbGF0aW9uUmVsYXRpb25JZCwg cmVsaWQsCisJCQkJCQkJCQkJCSAgZm9ybS0+cmVsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkg IGZvcm0tPnJlbG93bmVyKTsKKwlSZWxlYXNlU3lzQ2FjaGUodHApOworCXJldHVybiByZXN1 bHQ7Cit9CisKIAogLyoKICAqIFJlbGF0aW9uSXNWaXNpYmxlCkBAIC0xMDI0LDEzICsxMDU1 LDQwIEBAIFR5cGVuYW1lR2V0VHlwaWRFeHRlbmRlZChjb25zdCBjaGFyICp0eXBuYW1lLCBi b29sIHRlbXBfb2spCiAJCQkJCQkJCVBvaW50ZXJHZXREYXR1bSh0eXBuYW1lKSwKIAkJCQkJ CQkJT2JqZWN0SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOwogCQlpZiAoT2lkSXNWYWxpZCh0 eXBpZCkpCisJCXsKKwkJCS8qIFNraXAgdW50cnVzdGVkIG1hdGNoZXMgd2hpbGUgYW4gZXh0 ZW5zaW9uIHNjcmlwdCBydW5zICovCisJCQlpZiAoY3JlYXRpbmdfZXh0ZW5zaW9uICYmICFU eXBlSXNUcnVzdGVkSW5FeHRlbnNpb25TY3JpcHQodHlwaWQpKQorCQkJCWNvbnRpbnVlOwog CQkJcmV0dXJuIHR5cGlkOworCQl9CiAJfQogCiAJLyogTm90IGZvdW5kIGluIHBhdGggKi8K IAlyZXR1cm4gSW52YWxpZE9pZDsKIH0KIAorLyoKKyAqIFR5cGVJc1RydXN0ZWRJbkV4dGVu c2lvblNjcmlwdAorICoJCU9iamVjdElzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0IGZvciBh IHR5cGUsIGJ5IE9JRC4KKyAqLworc3RhdGljIGJvb2wKK1R5cGVJc1RydXN0ZWRJbkV4dGVu c2lvblNjcmlwdChPaWQgdHlwaWQpCit7CisJSGVhcFR1cGxlCXRwOworCUZvcm1fcGdfdHlw ZSBmb3JtOworCWJvb2wJCXJlc3VsdDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVP SUQsIE9iamVjdElkR2V0RGF0dW0odHlwaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo dHApKQorCQlyZXR1cm4gdHJ1ZTsKKwlmb3JtID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNU KHRwKTsKKwlyZXN1bHQgPSBPYmplY3RJc1RydXN0ZWRJbkV4dGVuc2lvblNjcmlwdChUeXBl UmVsYXRpb25JZCwgdHlwaWQsCisJCQkJCQkJCQkJCSAgZm9ybS0+dHlwbmFtZXNwYWNlLAor CQkJCQkJCQkJCQkgIGZvcm0tPnR5cG93bmVyKTsKKwlSZWxlYXNlU3lzQ2FjaGUodHApOwor CXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBUeXBlSXNWaXNpYmxlCiAgKgkJRGV0ZXJt aW5lIHdoZXRoZXIgYSB0eXBlIChpZGVudGlmaWVkIGJ5IE9JRCkgaXMgdmlzaWJsZSBpbiB0 aGUKQEAgLTEyNzgsNiArMTMzNiwyMSBAQCBGdW5jbmFtZUdldENhbmRpZGF0ZXMoTGlzdCAq bmFtZXMsIGludCBuYXJncywgTGlzdCAqYXJnbmFtZXMsCiAJCQkJY29udGludWU7CQkvKiBw cm9jIGlzIG5vdCBpbiBzZWFyY2ggcGF0aCAqLwogCQl9CiAKKwkJLyoKKwkJICogRHVyaW5n IGFuIGV4dGVuc2lvbiBzY3JpcHQsIHNraXAgdW50cnVzdGVkIGNhbmRpZGF0ZXMgYmVmb3Jl IGFueQorCQkgKiBmdXJ0aGVyIGZsYWdzIGFyZSBzZXQsIHNvIHRoZSByZW1haW5pbmcgZmxh Z3MgZGVzY3JpYmUgdHJ1c3RlZAorCQkgKiBjYW5kaWRhdGVzIG9ubHkgKHNlZSBPYmplY3RJ c1RydXN0ZWRJbkV4dGVuc2lvblNjcmlwdCkuCisJCSAqLworCQlpZiAoY3JlYXRpbmdfZXh0 ZW5zaW9uICYmCisJCQkhT2JqZWN0SXNUcnVzdGVkSW5FeHRlbnNpb25TY3JpcHQoUHJvY2Vk dXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJICBwcm9jZm9ybS0+b2lkLAorCQkJCQkJCQkJ CQkgIHByb2Nmb3JtLT5wcm9uYW1lc3BhY2UsCisJCQkJCQkJCQkJCSAgcHJvY2Zvcm0tPnBy b293bmVyKSkKKwkJeworCQkJKmZnY19mbGFncyB8PSBGR0NfVU5UUlVTVEVEX1NLSVA7CisJ CQljb250aW51ZTsKKwkJfQorCiAJCSpmZ2NfZmxhZ3MgfD0gRkdDX05BTUVfVklTSUJMRTsg Lyogcm91dGluZSBpcyBpbiB0aGUgcmlnaHQgc2NoZW1hICovCiAKIAkJLyoKQEAgLTE1OTEs NiArMTY2NCwzNSBAQCBGdW5jbmFtZUdldENhbmRpZGF0ZXMoTGlzdCAqbmFtZXMsIGludCBu YXJncywgTGlzdCAqYXJnbmFtZXMsCiAJcmV0dXJuIHJlc3VsdExpc3Q7CiB9CiAKKy8qCisg KiBPYmplY3RJc1RydXN0ZWRJbkV4dGVuc2lvblNjcmlwdAorICoJCU1heSBhbiBleHRlbnNp b24gc2NyaXB0IHNhZmVseSByZXNvbHZlIGEgbmFtZSB0byB0aGlzIG9iamVjdD8KKyAqCisg KiBUcnVzdGVkIG1lYW5zIGluIHBnX2NhdGFsb2csIG93bmVkIGJ5IGEgc3VwZXJ1c2VyLCBv d25lZCBieSB0aGUgcm9sZSBydW5uaW5nCisgKiB0aGUgc2NyaXB0LCBvciBhIG1lbWJlciBv ZiB0aGUgZXh0ZW5zaW9uIGJlaW5nIGluc3RhbGxlZCBvciBvZiBvbmUgaXQKKyAqIHJlcXVp cmVzLiAgVGhlIG1lbWJlcnNoaXAgcnVsZSBsZXRzIGEgc2NyaXB0IHJlYWNoIG9iamVjdHMg dGhhdCBhbiBlYXJsaWVyCisgKiB2ZXJzaW9uIG9mIGl0c2VsZiwgb3IgYSAic3VwZXJ1c2Vy ID0gZmFsc2UiIHJlcXVpcmVkIGV4dGVuc2lvbiwgY3JlYXRlZAorICogdW5kZXIgc29tZSBv dGhlciByb2xlLgorICovCitib29sCitPYmplY3RJc1RydXN0ZWRJbkV4dGVuc2lvblNjcmlw dChPaWQgY2xhc3NJZCwgT2lkIG9iamVjdElkLAorCQkJCQkJCQkgT2lkIG5hbWVzcGFjZUlk LCBPaWQgb3duZXJJZCkKK3sKKwlPaWQJCQlleHRlbnNpb25JZDsKKworCWlmIChuYW1lc3Bh Y2VJZCA9PSBQR19DQVRBTE9HX05BTUVTUEFDRSB8fAorCQlzdXBlcnVzZXJfYXJnKG93bmVy SWQpIHx8CisJCW93bmVySWQgPT0gR2V0VXNlcklkKCkpCisJCXJldHVybiB0cnVlOworCisJ ZXh0ZW5zaW9uSWQgPSBnZXRFeHRlbnNpb25PZk9iamVjdChjbGFzc0lkLCBvYmplY3RJZCk7 CisJaWYgKCFPaWRJc1ZhbGlkKGV4dGVuc2lvbklkKSkKKwkJcmV0dXJuIGZhbHNlOworCisJ cmV0dXJuIGV4dGVuc2lvbklkID09IEN1cnJlbnRFeHRlbnNpb25PYmplY3QgfHwKKwkJQ3Vy cmVudEV4dGVuc2lvblJlcXVpcmVzKGV4dGVuc2lvbklkKTsKK30KKwogLyoKICAqIE1hdGNo TmFtZWRDYWxsCiAgKgkJR2l2ZW4gYSBwZ19wcm9jIGhlYXAgdHVwbGUgYW5kIGEgY2FsbCdz IGxpc3Qgb2YgYXJndW1lbnQgbmFtZXMsCkBAIC0xODYxLDYgKzE5NjMsMTQgQEAgT3Blcm5h bWVHZXRPcHJpZChMaXN0ICpuYW1lcywgT2lkIG9wcmxlZnQsIE9pZCBvcHJyaWdodCkKIAkJ CQlGb3JtX3BnX29wZXJhdG9yIG9wZXJjbGFzcyA9IChGb3JtX3BnX29wZXJhdG9yKSBHRVRT VFJVQ1Qob3BlcnR1cCk7CiAJCQkJT2lkCQkJcmVzdWx0ID0gb3BlcmNsYXNzLT5vaWQ7CiAK KwkJCQkvKiBSZWplY3QgYW4gdW50cnVzdGVkIG1hdGNoIHdoaWxlIGFuIGV4dGVuc2lvbiBz Y3JpcHQgcnVucyAqLworCQkJCWlmIChjcmVhdGluZ19leHRlbnNpb24gJiYKKwkJCQkJIU9i amVjdElzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0KE9wZXJhdG9yUmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJCQkgIHJlc3VsdCwKKwkJCQkJCQkJCQkJCQkgIG9wZXJjbGFzcy0+b3BybmFt ZXNwYWNlLAorCQkJCQkJCQkJCQkJCSAgb3BlcmNsYXNzLT5vcHJvd25lcikpCisJCQkJCXJl c3VsdCA9IEludmFsaWRPaWQ7CisKIAkJCQlSZWxlYXNlU3lzQ2FjaGUob3BlcnR1cCk7CiAJ CQkJcmV0dXJuIHJlc3VsdDsKIAkJCX0KQEAgLTE5MDYsNiArMjAxNiwxNCBAQCBPcGVybmFt ZUdldE9wcmlkKExpc3QgKm5hbWVzLCBPaWQgb3BybGVmdCwgT2lkIG9wcnJpZ2h0KQogCQkJ ewogCQkJCU9pZAkJCXJlc3VsdCA9IG9wZXJmb3JtLT5vaWQ7CiAKKwkJCQkvKiBTa2lwIHVu dHJ1c3RlZCBtYXRjaGVzIHdoaWxlIGFuIGV4dGVuc2lvbiBzY3JpcHQgcnVucyAqLworCQkJ CWlmIChjcmVhdGluZ19leHRlbnNpb24gJiYKKwkJCQkJIU9iamVjdElzVHJ1c3RlZEluRXh0 ZW5zaW9uU2NyaXB0KE9wZXJhdG9yUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkgIHJlc3Vs dCwKKwkJCQkJCQkJCQkJCQkgIG9wZXJmb3JtLT5vcHJuYW1lc3BhY2UsCisJCQkJCQkJCQkJ CQkJICBvcGVyZm9ybS0+b3Byb3duZXIpKQorCQkJCQljb250aW51ZTsKKwogCQkJCVJlbGVh c2VTeXNDYWNoZUxpc3QoY2F0bGlzdCk7CiAJCQkJcmV0dXJuIHJlc3VsdDsKIAkJCX0KQEAg LTIwMzMsNTMgKzIxNTEsNjMgQEAgT3Blcm5hbWVHZXRDYW5kaWRhdGVzKExpc3QgKm5hbWVz LCBjaGFyIG9wcmtpbmQsIGJvb2wgbWlzc2luZ19zY2hlbWFfb2ssCiAJCQl9CiAJCQlpZiAo bnNwID09IE5VTEwpCiAJCQkJY29udGludWU7CQkvKiBvcGVyIGlzIG5vdCBpbiBzZWFyY2gg cGF0aCAqLworCQl9CiAKLQkJCS8qCi0JCQkgKiBPa2F5LCBpdCdzIGluIHRoZSBzZWFyY2gg cGF0aCwgYnV0IGRvZXMgaXQgaGF2ZSB0aGUgc2FtZQotCQkJICogYXJndW1lbnRzIGFzIHNv bWV0aGluZyB3ZSBhbHJlYWR5IGFjY2VwdGVkPwlJZiBzbywga2VlcCBvbmx5Ci0JCQkgKiB0 aGUgb25lIHRoYXQgYXBwZWFycyBlYXJsaWVyIGluIHRoZSBzZWFyY2ggcGF0aC4KLQkJCSAq Ci0JCQkgKiBJZiB3ZSBoYXZlIGFuIG9yZGVyZWQgbGlzdCBmcm9tIFNlYXJjaFN5c0NhY2hl TGlzdCAodGhlIG5vcm1hbAotCQkJICogY2FzZSksIHRoZW4gYW55IGNvbmZsaWN0aW5nIG9w ZXIgbXVzdCBpbW1lZGlhdGVseSBhZGpvaW4gdGhpcwotCQkJICogb25lIGluIHRoZSBsaXN0 LCBzbyB3ZSBvbmx5IG5lZWQgdG8gbG9vayBhdCB0aGUgbmV3ZXN0IHJlc3VsdAotCQkJICog aXRlbS4gIElmIHdlIGhhdmUgYW4gdW5vcmRlcmVkIGxpc3QsIHdlIGhhdmUgdG8gc2NhbiB0 aGUgd2hvbGUKLQkJCSAqIHJlc3VsdCBsaXN0LgotCQkJICovCi0JCQlpZiAocmVzdWx0TGlz dCkKLQkJCXsKLQkJCQlGdW5jQ2FuZGlkYXRlTGlzdCBwcmV2UmVzdWx0OworCQkvKiBMaWtl d2lzZSBza2lwIHVudHJ1c3RlZCBjYW5kaWRhdGVzLCBhcyBpbiBGdW5jbmFtZUdldENhbmRp ZGF0ZXMgKi8KKwkJaWYgKGNyZWF0aW5nX2V4dGVuc2lvbiAmJgorCQkJIU9iamVjdElzVHJ1 c3RlZEluRXh0ZW5zaW9uU2NyaXB0KE9wZXJhdG9yUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJ ICBvcGVyZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkgIG9wZXJmb3JtLT5vcHJuYW1lc3BhY2Us CisJCQkJCQkJCQkJCSAgb3BlcmZvcm0tPm9wcm93bmVyKSkKKwkJeworCQkJKmZnY19mbGFn cyB8PSBGR0NfVU5UUlVTVEVEX1NLSVA7CisJCQljb250aW51ZTsKKwkJfQogCi0JCQkJaWYg KGNhdGxpc3QtPm9yZGVyZWQpCi0JCQkJewotCQkJCQlpZiAob3BlcmZvcm0tPm9wcmxlZnQg PT0gcmVzdWx0TGlzdC0+YXJnc1swXSAmJgotCQkJCQkJb3BlcmZvcm0tPm9wcnJpZ2h0ID09 IHJlc3VsdExpc3QtPmFyZ3NbMV0pCi0JCQkJCQlwcmV2UmVzdWx0ID0gcmVzdWx0TGlzdDsK LQkJCQkJZWxzZQotCQkJCQkJcHJldlJlc3VsdCA9IE5VTEw7Ci0JCQkJfQorCQkvKgorCQkg KiBPa2F5LCBpdCdzIGluIHRoZSBzZWFyY2ggcGF0aCwgYnV0IGRvZXMgaXQgaGF2ZSB0aGUg c2FtZSBhcmd1bWVudHMKKwkJICogYXMgc29tZXRoaW5nIHdlIGFscmVhZHkgYWNjZXB0ZWQ/ ICBJZiBzbywga2VlcCBvbmx5IHRoZSBvbmUgdGhhdAorCQkgKiBhcHBlYXJzIGVhcmxpZXIg aW4gdGhlIHNlYXJjaCBwYXRoLgorCQkgKgorCQkgKiBJZiB3ZSBoYXZlIGFuIG9yZGVyZWQg bGlzdCBmcm9tIFNlYXJjaFN5c0NhY2hlTGlzdCAodGhlIG5vcm1hbAorCQkgKiBjYXNlKSwg dGhlbiBhbnkgY29uZmxpY3Rpbmcgb3BlciBtdXN0IGltbWVkaWF0ZWx5IGFkam9pbiB0aGlz IG9uZQorCQkgKiBpbiB0aGUgbGlzdCwgc28gd2Ugb25seSBuZWVkIHRvIGxvb2sgYXQgdGhl IG5ld2VzdCByZXN1bHQgaXRlbS4gIElmCisJCSAqIHdlIGhhdmUgYW4gdW5vcmRlcmVkIGxp c3QsIHdlIGhhdmUgdG8gc2NhbiB0aGUgd2hvbGUgcmVzdWx0IGxpc3QuCisJCSAqLworCQlp ZiAoIU9pZElzVmFsaWQobmFtZXNwYWNlSWQpICYmIHJlc3VsdExpc3QpCisJCXsKKwkJCUZ1 bmNDYW5kaWRhdGVMaXN0IHByZXZSZXN1bHQ7CisKKwkJCWlmIChjYXRsaXN0LT5vcmRlcmVk KQorCQkJeworCQkJCWlmIChvcGVyZm9ybS0+b3BybGVmdCA9PSByZXN1bHRMaXN0LT5hcmdz WzBdICYmCisJCQkJCW9wZXJmb3JtLT5vcHJyaWdodCA9PSByZXN1bHRMaXN0LT5hcmdzWzFd KQorCQkJCQlwcmV2UmVzdWx0ID0gcmVzdWx0TGlzdDsKIAkJCQllbHNlCisJCQkJCXByZXZS ZXN1bHQgPSBOVUxMOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWZvciAocHJldlJlc3Vs dCA9IHJlc3VsdExpc3Q7CisJCQkJCSBwcmV2UmVzdWx0OworCQkJCQkgcHJldlJlc3VsdCA9 IHByZXZSZXN1bHQtPm5leHQpCiAJCQkJewotCQkJCQlmb3IgKHByZXZSZXN1bHQgPSByZXN1 bHRMaXN0OwotCQkJCQkJIHByZXZSZXN1bHQ7Ci0JCQkJCQkgcHJldlJlc3VsdCA9IHByZXZS ZXN1bHQtPm5leHQpCi0JCQkJCXsKLQkJCQkJCWlmIChvcGVyZm9ybS0+b3BybGVmdCA9PSBw cmV2UmVzdWx0LT5hcmdzWzBdICYmCi0JCQkJCQkJb3BlcmZvcm0tPm9wcnJpZ2h0ID09IHBy ZXZSZXN1bHQtPmFyZ3NbMV0pCi0JCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCQl9Ci0JCQkJ aWYgKHByZXZSZXN1bHQpCi0JCQkJewotCQkJCQkvKiBXZSBoYXZlIGEgbWF0Y2ggd2l0aCBh IHByZXZpb3VzIHJlc3VsdCAqLwotCQkJCQlBc3NlcnQocGF0aHBvcyAhPSBwcmV2UmVzdWx0 LT5wYXRocG9zKTsKLQkJCQkJaWYgKHBhdGhwb3MgPiBwcmV2UmVzdWx0LT5wYXRocG9zKQot CQkJCQkJY29udGludWU7CS8qIGtlZXAgcHJldmlvdXMgcmVzdWx0ICovCi0JCQkJCS8qIHJl cGxhY2UgcHJldmlvdXMgcmVzdWx0ICovCi0JCQkJCXByZXZSZXN1bHQtPnBhdGhwb3MgPSBw YXRocG9zOwotCQkJCQlwcmV2UmVzdWx0LT5vaWQgPSBvcGVyZm9ybS0+b2lkOwotCQkJCQlj b250aW51ZTsJLyogYXJncyBhcmUgc2FtZSwgb2YgY291cnNlICovCisJCQkJCWlmIChvcGVy Zm9ybS0+b3BybGVmdCA9PSBwcmV2UmVzdWx0LT5hcmdzWzBdICYmCisJCQkJCQlvcGVyZm9y bS0+b3BycmlnaHQgPT0gcHJldlJlc3VsdC0+YXJnc1sxXSkKKwkJCQkJCWJyZWFrOwogCQkJ CX0KIAkJCX0KKwkJCWlmIChwcmV2UmVzdWx0KQorCQkJeworCQkJCS8qIFdlIGhhdmUgYSBt YXRjaCB3aXRoIGEgcHJldmlvdXMgcmVzdWx0ICovCisJCQkJQXNzZXJ0KHBhdGhwb3MgIT0g cHJldlJlc3VsdC0+cGF0aHBvcyk7CisJCQkJaWYgKHBhdGhwb3MgPiBwcmV2UmVzdWx0LT5w YXRocG9zKQorCQkJCQljb250aW51ZTsJLyoga2VlcCBwcmV2aW91cyByZXN1bHQgKi8KKwkJ CQkvKiByZXBsYWNlIHByZXZpb3VzIHJlc3VsdCAqLworCQkJCXByZXZSZXN1bHQtPnBhdGhw b3MgPSBwYXRocG9zOworCQkJCXByZXZSZXN1bHQtPm9pZCA9IG9wZXJmb3JtLT5vaWQ7CisJ CQkJY29udGludWU7CQkvKiBhcmdzIGFyZSBzYW1lLCBvZiBjb3Vyc2UgKi8KKwkJCX0KIAkJ fQogCiAJCSpmZ2NfZmxhZ3MgfD0gRkdDX05BTUVfVklTSUJMRTsgLyogb3BlcmF0b3IgaXMg aW4gdGhlIHJpZ2h0IHNjaGVtYSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19vcGVyYXRvci5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19vcGVyYXRvci5jCmlu ZGV4IDZiOTBjNzc0YzE4Li4zN2M3ZDJlNmM1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19vcGVyYXRvci5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfb3Bl cmF0b3IuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0 b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9leHRlbnNpb24uaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfb3Blci5oIgogI2luY2x1 ZGUgInV0aWxzL2FjbC5oIgpAQCAtNjQzLDYgKzY0NCwyMyBAQCBnZXRfb3RoZXJfb3BlcmF0 b3IoTGlzdCAqb3RoZXJPcCwgT2lkIG90aGVyTGVmdFR5cGVJZCwgT2lkIG90aGVyUmlnaHRU eXBlSWQsCiAJb3RoZXJOYW1lc3BhY2UgPSBRdWFsaWZpZWROYW1lR2V0Q3JlYXRpb25OYW1l c3BhY2Uob3RoZXJPcCwKIAkJCQkJCQkJCQkJCQkgICAmb3RoZXJOYW1lKTsKIAorCS8qCisJ ICogSWYgdGhlIGxvb2t1cCBmYWlsZWQgb25seSBiZWNhdXNlIHRoZSBvcGVyYXRvciBpcyB1 bnRydXN0ZWQgZHVyaW5nIGFuCisJICogZXh0ZW5zaW9uIHNjcmlwdCwgc2F5IHNvIHJhdGhl ciB0aGFuIGNvbGxpZGluZyB3aXRoIGl0IGJlbG93LgorCSAqLworCWlmIChjcmVhdGluZ19l eHRlbnNpb24gJiYKKwkJT2lkSXNWYWxpZChPcGVyYXRvckdldChvdGhlck5hbWUsIG90aGVy TmFtZXNwYWNlLAorCQkJCQkJCSAgIG90aGVyTGVmdFR5cGVJZCwgb3RoZXJSaWdodFR5cGVJ ZCwKKwkJCQkJCQkgICAmb3RoZXJEZWZpbmVkKSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfRlVOQ1RJT04pLAorCQkJCSBlcnJtc2coIm9w ZXJhdG9yIGRvZXMgbm90IGV4aXN0OiAlcyIsCisJCQkJCQlvcF9zaWduYXR1cmVfc3RyaW5n KG90aGVyT3AsCisJCQkJCQkJCQkJCW90aGVyTGVmdFR5cGVJZCwKKwkJCQkJCQkJCQkJb3Ro ZXJSaWdodFR5cGVJZCkpLAorCQkJCSBlcnJkZXRhaWwoIkFuIG9wZXJhdG9yIG9mIHRoYXQg bmFtZSBleGlzdHMsIGJ1dCBpdCBpcyBub3QgdHJ1c3RlZCB3aGlsZSBhbiBleHRlbnNpb24g c2NyaXB0IHJ1bnMuIiksCisJCQkJIGVycmhpbnQoIk9ubHkgb2JqZWN0cyBpbiBwZ19jYXRh bG9nLCBvd25lZCBieSBhIHN1cGVydXNlciwgb3IgYmVsb25naW5nIHRvIHRoZSBleHRlbnNp b24gb3Igb25lIGl0IHJlcXVpcmVzIGFyZSB0cnVzdGVkLiIpKSk7CisKIAlpZiAoc3RyY21w KG90aGVyTmFtZSwgb3BlcmF0b3JOYW1lKSA9PSAwICYmCiAJCW90aGVyTmFtZXNwYWNlID09 IG9wZXJhdG9yTmFtZXNwYWNlICYmCiAJCW90aGVyTGVmdFR5cGVJZCA9PSBsZWZ0VHlwZUlk ICYmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IDRlM2I0NDk0NzU5Li4zNjE4 YmU3ODc1MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTE1MzMsNiArMTUz Myw1NyBAQCBTZXRFeHRlbnNpb25DcmVhdGlvblN0YXRlKGJvb2wgY3JlYXRpbmcsIE9pZCBl eHRlbnNpb25PYmplY3QpCiAJQ3VycmVudEV4dGVuc2lvbk9iamVjdCA9IGV4dGVuc2lvbk9i amVjdDsKIH0KIAorLyoKKyAqIEN1cnJlbnRFeHRlbnNpb25SZXF1aXJlcyAtIGRvZXMgdGhl IHJ1bm5pbmcgc2NyaXB0J3MgZXh0ZW5zaW9uIHJlcXVpcmUgdGhpcworICogZXh0ZW5zaW9u PworICoKKyAqIE9ubHkgZGlyZWN0IHJlcXVpcmVtZW50cyBjb3VudDsgdGhvc2UgYXJlIHRo ZSBvbmVzIHdob3NlIHNjaGVtYXMKKyAqIGV4ZWN1dGVfZXh0ZW5zaW9uX3NjcmlwdCBwdXRz IGludG8gdGhlIHNjcmlwdCdzIHNlYXJjaCBwYXRoLgorICovCitib29sCitDdXJyZW50RXh0 ZW5zaW9uUmVxdWlyZXMoT2lkIGV4dGVuc2lvbklkKQoreworCVJlbGF0aW9uCWRlcFJlbDsK KwlTY2FuS2V5RGF0YSBrZXlbMl07CisJU3lzU2NhbkRlc2MgZGVwU2NhbjsKKwlIZWFwVHVw bGUJZGVwVHVwOworCWJvb2wJCXJlc3VsdCA9IGZhbHNlOworCisJaWYgKCFPaWRJc1ZhbGlk KEN1cnJlbnRFeHRlbnNpb25PYmplY3QpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlkZXBSZWwg PSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlT Y2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1fcGdfZGVwZW5kX2NsYXNzaWQsCisJCQkJ QlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0o RXh0ZW5zaW9uUmVsYXRpb25JZCkpOworCVNjYW5LZXlJbml0KCZrZXlbMV0sCisJCQkJQW51 bV9wZ19kZXBlbmRfb2JqaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVR LAorCQkJCU9iamVjdElkR2V0RGF0dW0oQ3VycmVudEV4dGVuc2lvbk9iamVjdCkpOworCisJ ZGVwU2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZERlcGVuZGVySW5k ZXhJZCwgdHJ1ZSwKKwkJCQkJCQkJIE5VTEwsIDIsIGtleSk7CisKKwl3aGlsZSAoSGVhcFR1 cGxlSXNWYWxpZChkZXBUdXAgPSBzeXN0YWJsZV9nZXRuZXh0KGRlcFNjYW4pKSkKKwl7CisJ CUZvcm1fcGdfZGVwZW5kIHBnX2RlcGVuZCA9IChGb3JtX3BnX2RlcGVuZCkgR0VUU1RSVUNU KGRlcFR1cCk7CisKKwkJaWYgKHBnX2RlcGVuZC0+cmVmY2xhc3NpZCA9PSBFeHRlbnNpb25S ZWxhdGlvbklkICYmCisJCQlwZ19kZXBlbmQtPnJlZm9iamlkID09IGV4dGVuc2lvbklkKQor CQl7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlzeXN0YWJs ZV9lbmRzY2FuKGRlcFNjYW4pOworCXRhYmxlX2Nsb3NlKGRlcFJlbCwgQWNjZXNzU2hhcmVM b2NrKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBGaW5kIG9yIGNyZWF0ZSBh biBFeHRlbnNpb25WZXJzaW9uSW5mbyBmb3IgdGhlIHNwZWNpZmllZCB2ZXJzaW9uIG5hbWUK ICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCBjODc4MDRmNWQ0MS4uZjVlYzVm ZmE1MTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMTAwMyw3ICsxMDAzLDE1 IEBAIGZ1bmNfbG9va3VwX2ZhaWx1cmVfZGV0YWlscyhpbnQgZmdjX2ZsYWdzLCBMaXN0ICph cmduYW1lcywgYm9vbCBwcm9jX2NhbGwpCiAJICovCiAJaWYgKCEoZmdjX2ZsYWdzICYgRkdD X05BTUVfVklTSUJMRSkpCiAJewotCQlpZiAoZmdjX2ZsYWdzICYgRkdDX1NDSEVNQV9HSVZF TikKKwkJaWYgKGZnY19mbGFncyAmIEZHQ19VTlRSVVNURURfU0tJUCkKKwkJeworCQkJaWYg KHByb2NfY2FsbCkKKwkJCQkodm9pZCkgZXJyZGV0YWlsKCJBIHByb2NlZHVyZSBvZiB0aGF0 IG5hbWUgZXhpc3RzLCBidXQgaXQgaXMgbm90IHRydXN0ZWQgd2hpbGUgYW4gZXh0ZW5zaW9u IHNjcmlwdCBydW5zLiIpOworCQkJZWxzZQorCQkJCSh2b2lkKSBlcnJkZXRhaWwoIkEgZnVu Y3Rpb24gb2YgdGhhdCBuYW1lIGV4aXN0cywgYnV0IGl0IGlzIG5vdCB0cnVzdGVkIHdoaWxl IGFuIGV4dGVuc2lvbiBzY3JpcHQgcnVucy4iKTsKKwkJCXJldHVybiBlcnJoaW50KCJPbmx5 IG9iamVjdHMgaW4gcGdfY2F0YWxvZywgb3duZWQgYnkgYSBzdXBlcnVzZXIsIG9yIGJlbG9u Z2luZyB0byB0aGUgZXh0ZW5zaW9uIG9yIG9uZSBpdCByZXF1aXJlcyBhcmUgdHJ1c3RlZC4i KTsKKwkJfQorCQllbHNlIGlmIChmZ2NfZmxhZ3MgJiBGR0NfU0NIRU1BX0dJVkVOKQogCQkJ cmV0dXJuIDA7CQkJLyogc2NoZW1hLXF1YWxpZmllZCBuYW1lICovCiAJCWVsc2UgaWYgKCEo ZmdjX2ZsYWdzICYgRkdDX05BTUVfRVhJU1RTKSkKIAkJewpAQCAtMTAyMSw2ICsxMDI5LDE1 IEBAIGZ1bmNfbG9va3VwX2ZhaWx1cmVfZGV0YWlscyhpbnQgZmdjX2ZsYWdzLCBMaXN0ICph cmduYW1lcywgYm9vbCBwcm9jX2NhbGwpCiAJCX0KIAl9CiAKKwkvKiBBIHRydXN0ZWQgY2Fu ZGlkYXRlIHdhcyB2aXNpYmxlOyBtZW50aW9uIGFueSBza2lwcGVkIG9uZSBhcyBhIGhpbnQg Ki8KKwlpZiAoZmdjX2ZsYWdzICYgRkdDX1VOVFJVU1RFRF9TS0lQKQorCXsKKwkJaWYgKHBy b2NfY2FsbCkKKwkJCSh2b2lkKSBlcnJoaW50KCJBIHByb2NlZHVyZSBvZiB0aGF0IG5hbWUg d2FzIGlnbm9yZWQgYmVjYXVzZSBpdCBpcyBub3QgdHJ1c3RlZCB3aGlsZSBhbiBleHRlbnNp b24gc2NyaXB0IHJ1bnMuIik7CisJCWVsc2UKKwkJCSh2b2lkKSBlcnJoaW50KCJBIGZ1bmN0 aW9uIG9mIHRoYXQgbmFtZSB3YXMgaWdub3JlZCBiZWNhdXNlIGl0IGlzIG5vdCB0cnVzdGVk IHdoaWxlIGFuIGV4dGVuc2lvbiBzY3JpcHQgcnVucy4iKTsKKwl9CisKIAkvKgogCSAqIE5l eHQsIGNvbXBsYWluIGlmIG5vdGhpbmcgaGFkIHRoZSByaWdodCBudW1iZXIgb2YgYXJndW1l bnRzLiAgKFRoaXMKIAkgKiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgd3JvbmctYXJnbmFtZXMg Y2FzZXMgYmVjYXVzZSB3ZSB3b24ndCBldmVuIGxvb2sKQEAgLTEwNzYsNiArMTA5Myw4IEBA IGZ1bmNfbG9va3VwX2ZhaWx1cmVfZGV0YWlscyhpbnQgZmdjX2ZsYWdzLCBMaXN0ICphcmdu YW1lcywgYm9vbCBwcm9jX2NhbGwpCiAJCSh2b2lkKSBlcnJkZXRhaWwoIk5vIHByb2NlZHVy ZSBvZiB0aGF0IG5hbWUgYWNjZXB0cyB0aGUgZ2l2ZW4gYXJndW1lbnQgdHlwZXMuIik7CiAJ ZWxzZQogCQkodm9pZCkgZXJyZGV0YWlsKCJObyBmdW5jdGlvbiBvZiB0aGF0IG5hbWUgYWNj ZXB0cyB0aGUgZ2l2ZW4gYXJndW1lbnQgdHlwZXMuIik7CisJaWYgKGZnY19mbGFncyAmIEZH Q19VTlRSVVNURURfU0tJUCkKKwkJcmV0dXJuIDA7CQkJCS8qIGtlZXAgdGhlIGhpbnQgc2V0 IGFib3ZlICovCiAJcmV0dXJuIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGFkZCBleHBs aWNpdCB0eXBlIGNhc3RzLiIpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2Vfb3Blci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYwppbmRl eCBkYzBmMDQ3Y2EyNS4uYTk3NDIyNzg2ZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9vcGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIu YwpAQCAtMTYsOCArMTYsMTAgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVk ZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4dGVuc2lvbi5oIgogI2luY2x1 ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAj aW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgpAQCAtMzg4LDYgKzM5MCwxMyBAQCBv cGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLCBPaWQgbHR5cGVJZCwgT2lk IHJ0eXBlSWQsCiAJICovCiAJa2V5X29rID0gbWFrZV9vcGVyX2NhY2hlX2tleShwc3RhdGUs ICZrZXksIG9wbmFtZSwgbHR5cGVJZCwgcnR5cGVJZCwgbG9jYXRpb24pOwogCisJLyoKKwkg KiBTa2lwIHRoZSBsb29rYXNpZGUgY2FjaGUgZHVyaW5nIGFuIGV4dGVuc2lvbiBzY3JpcHQs IHNvIHRoZSB0cnVzdAorCSAqIGNoZWNrcyBiZWxvdyBzZWUgdGhlIGNhdGFsb2cgc3RhdGUu CisJICovCisJaWYgKGNyZWF0aW5nX2V4dGVuc2lvbikKKwkJa2V5X29rID0gZmFsc2U7CisK IAlpZiAoa2V5X29rKQogCXsKIAkJb3Blck9pZCA9IGZpbmRfb3Blcl9jYWNoZV9lbnRyeSgm a2V5KTsKQEAgLTU0MCw2ICs1NDksMTAgQEAgbGVmdF9vcGVyKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTGlzdCAqb3AsIE9pZCBhcmcsIGJvb2wgbm9FcnJvciwgaW50IGxvY2F0aW9uKQogCSAq LwogCWtleV9vayA9IG1ha2Vfb3Blcl9jYWNoZV9rZXkocHN0YXRlLCAma2V5LCBvcCwgSW52 YWxpZE9pZCwgYXJnLCBsb2NhdGlvbik7CiAKKwkvKiBTa2lwIHRoZSBsb29rYXNpZGUgY2Fj aGUgZHVyaW5nIGFuIGV4dGVuc2lvbiBzY3JpcHQ7IHNlZSBvcGVyKCkgKi8KKwlpZiAoY3Jl YXRpbmdfZXh0ZW5zaW9uKQorCQlrZXlfb2sgPSBmYWxzZTsKKwogCWlmIChrZXlfb2spCiAJ ewogCQlvcGVyT2lkID0gZmluZF9vcGVyX2NhY2hlX2VudHJ5KCZrZXkpOwpAQCAtNjcyLDcg KzY4NSwxMiBAQCBvcGVyX2xvb2t1cF9mYWlsdXJlX2RldGFpbHMoaW50IGZnY19mbGFncywg Ym9vbCBpc191bmFyeV9vcCkKIAkgKi8KIAlpZiAoIShmZ2NfZmxhZ3MgJiBGR0NfTkFNRV9W SVNJQkxFKSkKIAl7Ci0JCWlmIChmZ2NfZmxhZ3MgJiBGR0NfU0NIRU1BX0dJVkVOKQorCQlp ZiAoZmdjX2ZsYWdzICYgRkdDX1VOVFJVU1RFRF9TS0lQKQorCQl7CisJCQkodm9pZCkgZXJy ZGV0YWlsKCJBbiBvcGVyYXRvciBvZiB0aGF0IG5hbWUgZXhpc3RzLCBidXQgaXQgaXMgbm90 IHRydXN0ZWQgd2hpbGUgYW4gZXh0ZW5zaW9uIHNjcmlwdCBydW5zLiIpOworCQkJcmV0dXJu IGVycmhpbnQoIk9ubHkgb2JqZWN0cyBpbiBwZ19jYXRhbG9nLCBvd25lZCBieSBhIHN1cGVy dXNlciwgb3IgYmVsb25naW5nIHRvIHRoZSBleHRlbnNpb24gb3Igb25lIGl0IHJlcXVpcmVz IGFyZSB0cnVzdGVkLiIpOworCQl9CisJCWVsc2UgaWYgKGZnY19mbGFncyAmIEZHQ19TQ0hF TUFfR0lWRU4pCiAJCQlyZXR1cm4gMDsJCQkvKiBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgKi8K IAkJZWxzZSBpZiAoIShmZ2NfZmxhZ3MgJiBGR0NfTkFNRV9FWElTVFMpKQogCQkJcmV0dXJu IGVycmRldGFpbCgiVGhlcmUgaXMgbm8gb3BlcmF0b3Igb2YgdGhhdCBuYW1lLiIpOwpAQCAt NjgxLDE4ICs2OTksMTkgQEAgb3Blcl9sb29rdXBfZmFpbHVyZV9kZXRhaWxzKGludCBmZ2Nf ZmxhZ3MsIGJvb2wgaXNfdW5hcnlfb3ApCiAJfQogCiAJLyoKLQkgKiBPdGhlcndpc2UsIHRo ZSBwcm9ibGVtIG11c3QgYmUgaW5jb3JyZWN0IGFyZ3VtZW50IHR5cGUocykuCisJICogT3Ro ZXJ3aXNlLCB0aGUgcHJvYmxlbSBtdXN0IGJlIGluY29ycmVjdCBhcmd1bWVudCB0eXBlKHMp OyBtZW50aW9uIGFueQorCSAqIHNraXBwZWQgdW50cnVzdGVkIGNhbmRpZGF0ZSBpbiBwbGFj ZSBvZiB0aGUgdXN1YWwgaGludC4KIAkgKi8KIAlpZiAoaXNfdW5hcnlfb3ApCi0JewogCQko dm9pZCkgZXJyZGV0YWlsKCJObyBvcGVyYXRvciBvZiB0aGF0IG5hbWUgYWNjZXB0cyB0aGUg Z2l2ZW4gYXJndW1lbnQgdHlwZS4iKTsKLQkJcmV0dXJuIGVycmhpbnQoIllvdSBtaWdodCBu ZWVkIHRvIGFkZCBhbiBleHBsaWNpdCB0eXBlIGNhc3QuIik7Ci0JfQogCWVsc2UKLQl7CiAJ CSh2b2lkKSBlcnJkZXRhaWwoIk5vIG9wZXJhdG9yIG9mIHRoYXQgbmFtZSBhY2NlcHRzIHRo ZSBnaXZlbiBhcmd1bWVudCB0eXBlcy4iKTsKKwlpZiAoZmdjX2ZsYWdzICYgRkdDX1VOVFJV U1RFRF9TS0lQKQorCQlyZXR1cm4gZXJyaGludCgiQW4gb3BlcmF0b3Igb2YgdGhhdCBuYW1l IHdhcyBpZ25vcmVkIGJlY2F1c2UgaXQgaXMgbm90IHRydXN0ZWQgd2hpbGUgYW4gZXh0ZW5z aW9uIHNjcmlwdCBydW5zLiIpOworCWVsc2UgaWYgKGlzX3VuYXJ5X29wKQorCQlyZXR1cm4g ZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGFuIGV4cGxpY2l0IHR5cGUgY2FzdC4i KTsKKwllbHNlCiAJCXJldHVybiBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBhZGQgZXhw bGljaXQgdHlwZSBjYXN0cy4iKTsKLQl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3BsYW5jYWNoZS5jCmluZGV4IGZiM2IzOGZmYmJmLi44YjRkNWU1OTkwYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTYxLDYgKzYxLDcgQEAKIAogI2luY2x1 ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIK KyNpbmNsdWRlICJjb21tYW5kcy9leHRlbnNpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjdXRvci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL25v ZGVGdW5jcy5oIgpAQCAtMjQzLDYgKzI0NCw3IEBAIENyZWF0ZUNhY2hlZFBsYW4oY29uc3Qg UmF3U3RtdCAqcmF3X3BhcnNlX3RyZWUsCiAJcGxhbnNvdXJjZS0+cmV3cml0ZVJvbGVJZCA9 IEludmFsaWRPaWQ7CiAJcGxhbnNvdXJjZS0+cmV3cml0ZVJvd1NlY3VyaXR5ID0gZmFsc2U7 CiAJcGxhbnNvdXJjZS0+ZGVwZW5kc09uUkxTID0gZmFsc2U7CisJcGxhbnNvdXJjZS0+cGFy c2VkSW5FeHRlbnNpb25TY3JpcHQgPSBmYWxzZTsKIAlwbGFuc291cmNlLT5ncGxhbiA9IE5V TEw7CiAJcGxhbnNvdXJjZS0+aXNfb25lc2hvdCA9IGZhbHNlOwogCXBsYW5zb3VyY2UtPmlz X2NvbXBsZXRlID0gZmFsc2U7CkBAIC0zNDIsNiArMzQ0LDcgQEAgQ3JlYXRlT25lU2hvdENh Y2hlZFBsYW4oUmF3U3RtdCAqcmF3X3BhcnNlX3RyZWUsCiAJcGxhbnNvdXJjZS0+cmV3cml0 ZVJvbGVJZCA9IEludmFsaWRPaWQ7CiAJcGxhbnNvdXJjZS0+cmV3cml0ZVJvd1NlY3VyaXR5 ID0gZmFsc2U7CiAJcGxhbnNvdXJjZS0+ZGVwZW5kc09uUkxTID0gZmFsc2U7CisJcGxhbnNv dXJjZS0+cGFyc2VkSW5FeHRlbnNpb25TY3JpcHQgPSBmYWxzZTsKIAlwbGFuc291cmNlLT5n cGxhbiA9IE5VTEw7CiAJcGxhbnNvdXJjZS0+aXNfb25lc2hvdCA9IHRydWU7CiAJcGxhbnNv dXJjZS0+aXNfY29tcGxldGUgPSBmYWxzZTsKQEAgLTQ2Miw2ICs0NjUsOSBAQCBDb21wbGV0 ZUNhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJcGxhbnNvdXJj ZS0+cmV3cml0ZVJvbGVJZCA9IEdldFVzZXJJZCgpOwogCQlwbGFuc291cmNlLT5yZXdyaXRl Um93U2VjdXJpdHkgPSByb3dfc2VjdXJpdHk7CiAKKwkJLyogUmVtZW1iZXIgd2hldGhlciBh biBleHRlbnNpb24gc2NyaXB0IHdhcyBydW5uaW5nLiAqLworCQlwbGFuc291cmNlLT5wYXJz ZWRJbkV4dGVuc2lvblNjcmlwdCA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKKwogCQkvKgogCQkg KiBBbHNvIHNhdmUgdGhlIGN1cnJlbnQgc2VhcmNoX3BhdGggaW4gdGhlIHF1ZXJ5X2NvbnRl eHQuICAoVGhpcwogCQkgKiBzaG91bGQgbm90IGdlbmVyYXRlIG11Y2ggZXh0cmEgY3J1ZnQg ZWl0aGVyLCBzaW5jZSBhbG1vc3QgY2VydGFpbmx5CkBAIC03MzMsNiArNzM5LDIwIEBAIFJl dmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQl9 CiAJfQogCisJLyoKKwkgKiBOYW1lIHJlc29sdXRpb24gYXBwbGllcyBleHRyYSB0cnVzdCBj aGVja3Mgd2hpbGUgYW4gZXh0ZW5zaW9uIHNjcmlwdAorCSAqIHJ1bnMsIHNvIGEgdHJlZSBh bmFseXplZCBvdXRzaWRlIG9uZSBtdXN0IG5vdCBiZSByZXVzZWQgaW5zaWRlIGl0IG9yCisJ ICogdmljZSB2ZXJzYS4gIFRoZSBzZWFyY2hfcGF0aCBjaGVjayBhYm92ZSBuZWVkIG5vdCBo YXZlIGNhdWdodCB0aGlzLgorCSAqLworCWlmIChwbGFuc291cmNlLT5pc192YWxpZCAmJgor CQlwbGFuc291cmNlLT5wYXJzZWRJbkV4dGVuc2lvblNjcmlwdCAhPSBjcmVhdGluZ19leHRl bnNpb24pCisJeworCQkvKiBJbnZhbGlkYXRlIHRoZSBxdWVyeXRyZWUgYW5kIGdlbmVyaWMg cGxhbiAqLworCQlwbGFuc291cmNlLT5pc192YWxpZCA9IGZhbHNlOworCQlpZiAocGxhbnNv dXJjZS0+Z3BsYW4pCisJCQlwbGFuc291cmNlLT5ncGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsK Kwl9CisKIAkvKgogCSAqIElmIHRoZSBxdWVyeSByZXdyaXRlIHBoYXNlIGhhZCBhIHBvc3Np YmxlIFJMUyBkZXBlbmRlbmN5LCB3ZSBtdXN0IHJlZG8KIAkgKiBpdCBpZiBlaXRoZXIgdGhl IHJvbGUgb3IgdGhlIHJvd19zZWN1cml0eSBzZXR0aW5nIGhhcyBjaGFuZ2VkLgpAQCAtOTE4 LDYgKzkzOCw5IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLAogCXBsYW5zb3VyY2UtPnJld3JpdGVSb2xlSWQgPSBHZXRVc2VySWQoKTsK IAlwbGFuc291cmNlLT5yZXdyaXRlUm93U2VjdXJpdHkgPSByb3dfc2VjdXJpdHk7CiAKKwkv KiBSZW1lbWJlciB3aGV0aGVyIGFuIGV4dGVuc2lvbiBzY3JpcHQgd2FzIHJ1bm5pbmcuICov CisJcGxhbnNvdXJjZS0+cGFyc2VkSW5FeHRlbnNpb25TY3JpcHQgPSBjcmVhdGluZ19leHRl bnNpb247CisKIAkvKgogCSAqIEFsc28gc2F2ZSB0aGUgY3VycmVudCBzZWFyY2hfcGF0aCBp biB0aGUgcXVlcnlfY29udGV4dC4gIChUaGlzIHNob3VsZAogCSAqIG5vdCBnZW5lcmF0ZSBt dWNoIGV4dHJhIGNydWZ0IGVpdGhlciwgc2luY2UgYWxtb3N0IGNlcnRhaW5seSB0aGUgcGF0 aApAQCAtMTQ5OCw2ICsxNTIxLDcgQEAgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5 Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAlBc3NlcnQocGxhbiA9PSBw bGFuc291cmNlLT5ncGxhbik7CiAJQXNzZXJ0KHBsYW5zb3VyY2UtPnNlYXJjaF9wYXRoICE9 IE5VTEwpOwogCUFzc2VydChTZWFyY2hQYXRoTWF0Y2hlc0N1cnJlbnRFbnZpcm9ubWVudChw bGFuc291cmNlLT5zZWFyY2hfcGF0aCkpOworCUFzc2VydChwbGFuc291cmNlLT5wYXJzZWRJ bkV4dGVuc2lvblNjcmlwdCA9PSBjcmVhdGluZ19leHRlbnNpb24pOwogCiAJLyogV2UgZG9u J3Qgc3VwcG9ydCBvbmVzaG90IHBsYW5zIGhlcmUuICovCiAJaWYgKHBsYW5zb3VyY2UtPmlz X29uZXNob3QpCkBAIC0xNjIzLDYgKzE2NDcsMTAgQEAgQ2FjaGVkUGxhbklzU2ltcGx5VmFs aWQoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgQ2FjaGVkUGxhbiAqcGxhbiwKIAlp ZiAoIVNlYXJjaFBhdGhNYXRjaGVzQ3VycmVudEVudmlyb25tZW50KHBsYW5zb3VyY2UtPnNl YXJjaF9wYXRoKSkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyogQXJlIHdlIGluIHRoZSBzYW1l IGV4dGVuc2lvbi1zY3JpcHQgY29udGV4dCBhcyB3aGVuIHdlIG1hZGUgaXQ/ICovCisJaWYg KHBsYW5zb3VyY2UtPnBhcnNlZEluRXh0ZW5zaW9uU2NyaXB0ICE9IGNyZWF0aW5nX2V4dGVu c2lvbikKKwkJcmV0dXJuIGZhbHNlOworCiAJLyogSXQncyBzdGlsbCBnb29kLiAgQnVtcCBy ZWZjb3VudCBpZiByZXF1ZXN0ZWQuICovCiAJaWYgKG93bmVyKQogCXsKQEAgLTE3NDMsNiAr MTc3MSw3IEBAIENvcHlDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Up CiAJbmV3c291cmNlLT5yZXdyaXRlUm9sZUlkID0gcGxhbnNvdXJjZS0+cmV3cml0ZVJvbGVJ ZDsKIAluZXdzb3VyY2UtPnJld3JpdGVSb3dTZWN1cml0eSA9IHBsYW5zb3VyY2UtPnJld3Jp dGVSb3dTZWN1cml0eTsKIAluZXdzb3VyY2UtPmRlcGVuZHNPblJMUyA9IHBsYW5zb3VyY2Ut PmRlcGVuZHNPblJMUzsKKwluZXdzb3VyY2UtPnBhcnNlZEluRXh0ZW5zaW9uU2NyaXB0ID0g cGxhbnNvdXJjZS0+cGFyc2VkSW5FeHRlbnNpb25TY3JpcHQ7CiAKIAluZXdzb3VyY2UtPmdw bGFuID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3Bh Y2UuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmgKaW5kZXggOTQ1M2EzZTQ5 MzIuLmJlODQxMGMzZTk5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVz cGFjZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmgKQEAgLTU2LDYg KzU2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0Z1bmNDYW5kaWRhdGVMaXN0CiAjZGVmaW5lIEZH Q19BUkdOQU1FU19WQUxJRAkweDAxMDAJLyogRm91bmQgYSBmdWxseS12YWxpZCB1c2Ugb2Yg YXJnbmFtZXMgKi8KIC8qIFRoZXNlIGJpdHMgYXJlIGFjdHVhbGx5IGZpbGxlZCBieSBmdW5j X2dldF9kZXRhaWw6ICovCiAjZGVmaW5lIEZHQ19WQVJJQURJQ19GQUlMCTB4MDIwMAkvKiBE aXNhbGxvd2VkIFZBUklBRElDIHdpdGggbmFtZWQgYXJncyAqLworLyogVGhpcyBiaXQgaXMg c2V0IG9ubHkgd2hpbGUgYW4gZXh0ZW5zaW9uIHNjcmlwdCBpcyBydW5uaW5nOiAqLworI2Rl ZmluZSBGR0NfVU5UUlVTVEVEX1NLSVAJMHgwNDAwCS8qIElnbm9yZWQgYW4gdW50cnVzdGVk IGNhbmRpZGF0ZSAqLwogCiAvKgogICogUmVzdWx0IG9mIGNoZWNrVGVtcE5hbWVzcGFjZVN0 YXR1cwpAQCAtMTIyLDYgKzEyNCw4IEBAIGV4dGVybiBGdW5jQ2FuZGlkYXRlTGlzdCBGdW5j bmFtZUdldENhbmRpZGF0ZXMoTGlzdCAqbmFtZXMsCiAJCQkJCQkJCQkJCSAgIGJvb2wgaW5j bHVkZV9vdXRfYXJndW1lbnRzLAogCQkJCQkJCQkJCQkgICBib29sIG1pc3Npbmdfb2ssCiAJ CQkJCQkJCQkJCSAgIGludCAqZmdjX2ZsYWdzKTsKK2V4dGVybiBib29sIE9iamVjdElzVHJ1 c3RlZEluRXh0ZW5zaW9uU2NyaXB0KE9pZCBjbGFzc0lkLCBPaWQgb2JqZWN0SWQsCisJCQkJ CQkJCQkJCSBPaWQgbmFtZXNwYWNlSWQsIE9pZCBvd25lcklkKTsKIGV4dGVybiBib29sIEZ1 bmN0aW9uSXNWaXNpYmxlKE9pZCBmdW5jaWQpOwogCiBleHRlcm4gT2lkCU9wZXJuYW1lR2V0 T3ByaWQoTGlzdCAqbmFtZXMsIE9pZCBvcHJsZWZ0LCBPaWQgb3BycmlnaHQpOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9leHRlbnNpb24uaAppbmRleCA4ZWFlYzJkNGY2OC4uMzI3NTAyZjkzMTEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oCisrKyBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oCkBAIC0zNCw2ICszNCw3IEBAIGV4dGVybiBQ R0RMTElNUE9SVCBPaWQgQ3VycmVudEV4dGVuc2lvbk9iamVjdDsKIAogZXh0ZXJuIHZvaWQg R2V0RXh0ZW5zaW9uQ3JlYXRpb25TdGF0ZShib29sICpjcmVhdGluZywgT2lkICpleHRlbnNp b25PYmplY3QpOwogZXh0ZXJuIHZvaWQgU2V0RXh0ZW5zaW9uQ3JlYXRpb25TdGF0ZShib29s IGNyZWF0aW5nLCBPaWQgZXh0ZW5zaW9uT2JqZWN0KTsKK2V4dGVybiBib29sIEN1cnJlbnRF eHRlbnNpb25SZXF1aXJlcyhPaWQgZXh0ZW5zaW9uSWQpOwogCiAKIGV4dGVybiBPYmplY3RB ZGRyZXNzIENyZWF0ZUV4dGVuc2lvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUV4dGVu c2lvblN0bXQgKnN0bXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNh Y2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCBhMDM1NWU3OWMy OC4uMDQyZWExMjg4NjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNo ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0xMjksNiArMTI5 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhblNvdXJjZQogCU9pZAkJCXJld3JpdGVS b2xlSWQ7CS8qIFJvbGUgSUQgd2UgZGlkIHJld3JpdGluZyBmb3IgKi8KIAlib29sCQlyZXdy aXRlUm93U2VjdXJpdHk7IC8qIHJvd19zZWN1cml0eSB1c2VkIGR1cmluZyByZXdyaXRlICov CiAJYm9vbAkJZGVwZW5kc09uUkxTOwkvKiBpcyByZXdyaXR0ZW4gcXVlcnkgc3BlY2lmaWMg dG8gdGhlIGFib3ZlPyAqLworCWJvb2wJCXBhcnNlZEluRXh0ZW5zaW9uU2NyaXB0OwkvKiBj cmVhdGluZ19leHRlbnNpb24gYXQgcGFyc2UgKi8KIAkvKiBJZiB3ZSBoYXZlIGEgZ2VuZXJp YyBwbGFuLCB0aGlzIGlzIGEgcmVmZXJlbmNlLWNvdW50ZWQgbGluayB0byBpdDogKi8KIAlz dHJ1Y3QgQ2FjaGVkUGxhbiAqZ3BsYW47CS8qIGdlbmVyaWMgcGxhbiwgb3IgTlVMTCBpZiBu b3QgdmFsaWQgKi8KIAkvKiBTb21lIHN0YXRlIGZsYWdzOiAqLwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy9NYWtlZmlsZQppbmRleCBkMWIwYjgxZTVmZC4uNzFlNDg5 ZWFmNTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01h a2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2VmaWxl CkBAIC05LDYgKzksMTAgQEAgRVhURU5TSU9OID0gdGVzdF9leHQxIHRlc3RfZXh0MiB0ZXN0 X2V4dDMgdGVzdF9leHQ0IHRlc3RfZXh0NSB0ZXN0X2V4dDYgXAogICAgICAgICAgICAgdGVz dF9leHRfY3ljbGljMSB0ZXN0X2V4dF9jeWNsaWMyIFwKICAgICAgICAgICAgIHRlc3RfZXh0 X2V4dHNjaGVtYSBcCiAgICAgICAgICAgICB0ZXN0X2V4dF9ldnR0cmlnIFwKKyAgICAgICAg ICAgIHRlc3RfZXh0X292ZXJsb2FkIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdCBcCisgICAg ICAgICAgICB0ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyIFwKKyAgICAgICAgICAgIHRlc3Rf ZXh0X292ZXJsb2FkX3BhcmFsbGVsIFwKKyAgICAgICAgICAgIHRlc3RfZXh0X292ZXJsb2Fk X3JlcSB0ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwIFwKICAgICAgICAgICAgIHRlc3RfZXh0 X3NldF9zY2hlbWEgXAogICAgICAgICAgICAgdGVzdF9leHRfcmVxX3NjaGVtYTEgdGVzdF9l eHRfcmVxX3NjaGVtYTIgdGVzdF9leHRfcmVxX3NjaGVtYTMKIApAQCAtMjUsNiArMjksMTgg QEAgREFUQSA9IHRlc3RfZXh0MS0tMS4wLnNxbCB0ZXN0X2V4dDItLTEuMC5zcWwgdGVzdF9l eHQzLS0xLjAuc3FsIFwKICAgICAgICB0ZXN0X2V4dF9jeWNsaWMxLS0xLjAuc3FsIHRlc3Rf ZXh0X2N5Y2xpYzItLTEuMC5zcWwgXAogICAgICAgIHRlc3RfZXh0X2V4dHNjaGVtYS0tMS4w LnNxbCBcCiAgICAgICAgdGVzdF9leHRfZXZ0dHJpZy0tMS4wLnNxbCB0ZXN0X2V4dF9ldnR0 cmlnLS0xLjAtLTIuMC5zcWwgXAorICAgICAgIHRlc3RfZXh0X292ZXJsb2FkLS0xLjAuc3Fs IFwKKyAgICAgICB0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTEuMC5zcWwgXAorICAgICAg IHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMi4wLnNxbCBcCisgICAgICAgdGVzdF9leHRf b3ZlcmxvYWRfc3RyaWN0LS0zLjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vdmVybG9hZF9z dHJpY3QtLTQuMC5zcWwgXAorICAgICAgIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNS4w LnNxbCBcCisgICAgICAgdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS02LjAuc3FsIFwKKyAg ICAgICB0ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLS0xLjAuc3FsIFwKKyAgICAgICB0ZXN0 X2V4dF9vdmVybG9hZF9ub3N1cGVyLS0xLjAtLTIuMC5zcWwgXAorICAgICAgIHRlc3RfZXh0 X292ZXJsb2FkX3BhcmFsbGVsLS0xLjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vdmVybG9h ZF9yZXEtLTEuMC5zcWwgXAorICAgICAgIHRlc3RfZXh0X292ZXJsb2FkX3JlcV9kZXAtLTEu MC5zcWwgXAogICAgICAgIHRlc3RfZXh0X3NldF9zY2hlbWEtLTEuMC5zcWwgXAogICAgICAg IHRlc3RfZXh0X3JlcV9zY2hlbWExLS0xLjAuc3FsIFwKICAgICAgICB0ZXN0X2V4dF9yZXFf c2NoZW1hMi0tMS4wLnNxbCBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0IGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2V4dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNpb25zLm91dAppbmRl eCAxYjVkZWJkZWViMS4uYjQ0ZjdhYWRlMWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZW5zaW9ucy5vdXQKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNp b25zLm91dApAQCAtNjY3LDMgKzY2NywzMDMgQEAgU0VMRUNUIHRlc3Rfc19kZXAuZGVwX3Jl cTIoKTsKIAogRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfcmVxX3NjaGVtYTEgQ0FTQ0FERTsK IE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gZXh0ZW5zaW9uIHRlc3RfZXh0X3JlcV9zY2hl bWEyCistLSBWZXJpZnkgdGhhdCBuYW1lIHJlc29sdXRpb24gZHVyaW5nIGFuIGV4dGVuc2lv biBzY3JpcHQgY2Fubm90IGJlIGNhcHR1cmVkCistLSBieSBvYmplY3RzIGFuIHVucHJpdmls ZWdlZCB1c2VyIHBsYW50ZWQgaW4gdGhlIGV4dGVuc2lvbidzIHNjaGVtYS4KK0NSRUFURSBS T0xFIHJlZ3Jlc3NfZXh0X3VzZXI7CitDUkVBVEUgU0NIRU1BIHRlc3Rfb3ZlcmxvYWQ7CitH UkFOVCBDUkVBVEUsIFVTQUdFIE9OIFNDSEVNQSB0ZXN0X292ZXJsb2FkIFRPIHJlZ3Jlc3Nf ZXh0X3VzZXI7CistLSBBcyB0aGUgdW5wcml2aWxlZ2VkIHVzZXIsIHBsYW50IGRpZmZlcmVu dGx5LXR5cGVkIHNpYmxpbmdzIGFuZCB0aGUgc29sZQorLS0gZGVmaW5pdGlvbiBvZiBoZWxw ZXJfb25seSgpLgorU0VUIFJPTEUgcmVncmVzc19leHRfdXNlcjsKK0NSRUFURSBGVU5DVElP TiB0ZXN0X292ZXJsb2FkLmYodGV4dCkgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNU ICdhdHRhY2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK0NSRUFURSBG VU5DVElPTiB0ZXN0X292ZXJsb2FkLm9waW1wbF9iYWQodGV4dCwgdGV4dCkgUkVUVVJOUyB0 ZXh0CisgICAgQVMgJCQgU0VMRUNUICdhdHRhY2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3Fs IElNTVVUQUJMRTsKK0NSRUFURSBPUEVSQVRPUiB0ZXN0X292ZXJsb2FkLiMjIyAobGVmdGFy ZyA9IHRleHQsIHJpZ2h0YXJnID0gdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnVuY3Rpb24gPSB0ZXN0X292ZXJsb2FkLm9waW1wbF9iYWQpOworQ1JFQVRF IEZVTkNUSU9OIHRlc3Rfb3ZlcmxvYWQuaGVscGVyX29ubHkodGV4dCkgUkVUVVJOUyB0ZXh0 CisgICAgQVMgJCQgU0VMRUNUICdhdHRhY2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElN TVVUQUJMRTsKK0NSRUFURSBGVU5DVElPTiB0ZXN0X292ZXJsb2FkLm9waW1wbF9vbmx5KHRl eHQsIHRleHQpIFJFVFVSTlMgdGV4dAorICAgIEFTICQkIFNFTEVDVCAnYXR0YWNrZXInOjp0 ZXh0ICQkIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CitDUkVBVEUgT1BFUkFUT1IgdGVzdF9v dmVybG9hZC5AQEAgKGxlZnRhcmcgPSB0ZXh0LCByaWdodGFyZyA9IHRleHQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gdGVzdF9vdmVybG9hZC5v cGltcGxfb25seSk7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9vdmVybG9hZC5vcGltcGxfdmMo dmFyY2hhciwgdmFyY2hhcikgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdhdHRh Y2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK0NSRUFURSBPUEVSQVRP UiB0ZXN0X292ZXJsb2FkLjw8PCAobGVmdGFyZyA9IHZhcmNoYXIsIHJpZ2h0YXJnID0gdmFy Y2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSB0 ZXN0X292ZXJsb2FkLm9waW1wbF92Yyk7CitSRVNFVCBST0xFOworLS0gQSBzY2hlbWEgb3V0 c2lkZSB0aGUgc2NyaXB0J3Mgc2VhcmNoIHBhdGgsIGhvbGRpbmcgYSBwbGFudGVkIG9wZXJh dG9yLgorQ1JFQVRFIFNDSEVNQSB0ZXN0X292ZXJsb2FkX290aGVyOworR1JBTlQgQ1JFQVRF LCBVU0FHRSBPTiBTQ0hFTUEgdGVzdF9vdmVybG9hZF9vdGhlciBUTyByZWdyZXNzX2V4dF91 c2VyOworU0VUIFJPTEUgcmVncmVzc19leHRfdXNlcjsKK0NSRUFURSBPUEVSQVRPUiB0ZXN0 X292ZXJsb2FkX290aGVyLiYmJiAobGVmdGFyZyA9IHRleHQsIHJpZ2h0YXJnID0gdGV4dCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSB0 ZXN0X292ZXJsb2FkLm9waW1wbF9vbmx5KTsKK1JFU0VUIFJPTEU7CistLSBJbnN0YWxsaW5n IHRoZSBleHRlbnNpb24gcmVzb2x2ZXMgZignYWJjJykgYW5kIHRoZSAjIyMgb3BlcmF0b3Ig dG8gdGhlCistLSBleHRlbnNpb24ncyBvd24gKHRydXN0ZWQpIG9iamVjdHMsIG5vdCB0aGUg cGxhbnRlZCBvbmVzLgorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZCBTQ0hF TUEgdGVzdF9vdmVybG9hZDsKK1NFTEVDVCBmbiwgb3AgRlJPTSB0ZXN0X292ZXJsb2FkLmNh cHR1cmVkOworICAgIGZuICAgICB8ICAgIG9wICAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgZXh0ZW5zaW9uIHwgZXh0ZW5zaW9uCisoMSByb3cpCisKKy0tIE91dHNpZGUgb2Yg ZXh0ZW5zaW9uIHNjcmlwdHMsIG9yZGluYXJ5IHJlc29sdXRpb24gcnVsZXMgYXJlIHVuY2hh bmdlZDogdGhlCistLSBzYW1lIGNhbGxzIHJlYWNoIHRoZSBwbGFudGVkIG9iamVjdHMuCitT RUxFQ1QgdGVzdF9vdmVybG9hZC5mKCdhYmMnKSBBUyBmbiwKKyAgICAgICAoJ2EnIE9QRVJB VE9SKHRlc3Rfb3ZlcmxvYWQuIyMjKSAnYicpIEFTIG9wOworICAgIGZuICAgIHwgICAgb3Ag ICAgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBhdHRhY2tlciB8IGF0dGFja2VyCisoMSBy b3cpCisKKy0tIFdoZW4gb25seSBhbiB1bnRydXN0ZWQgY2FuZGlkYXRlIGV4aXN0cywgdGhl IHNjcmlwdCByZWZ1c2VzIHRvIGNhbGwgaXQuCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0 X292ZXJsb2FkX3N0cmljdCBTQ0hFTUEgdGVzdF9vdmVybG9hZDsgIC0tIGZhaWxzCitFUlJP UjogIGZ1bmN0aW9uIHRlc3Rfb3ZlcmxvYWQuaGVscGVyX29ubHkodW5rbm93bikgZG9lcyBu b3QgZXhpc3QKK0xJTkUgMjogICAgIFNFTEVDVCB0ZXN0X292ZXJsb2FkLmhlbHBlcl9vbmx5 KCdhYmMnKSBBUyByCisgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgQSBmdW5jdGlv biBvZiB0aGF0IG5hbWUgZXhpc3RzLCBidXQgaXQgaXMgbm90IHRydXN0ZWQgd2hpbGUgYW4g ZXh0ZW5zaW9uIHNjcmlwdCBydW5zLgorSElOVDogIE9ubHkgb2JqZWN0cyBpbiBwZ19jYXRh bG9nLCBvd25lZCBieSBhIHN1cGVydXNlciwgb3IgYmVsb25naW5nIHRvIHRoZSBleHRlbnNp b24gb3Igb25lIGl0IHJlcXVpcmVzIGFyZSB0cnVzdGVkLgorUVVFUlk6ICBDUkVBVEUgVEFC TEUgdGVzdF9vdmVybG9hZC5jYXB0dXJlZCBBUworICAgIFNFTEVDVCB0ZXN0X292ZXJsb2Fk LmhlbHBlcl9vbmx5KCdhYmMnKSBBUyByCitDT05URVhUOiAgZXh0ZW5zaW9uIHNjcmlwdCBm aWxlICJ0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTEuMC5zcWwiLCBuZWFyIGxpbmUgOAor Q1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QgU0NIRU1BIHRlc3Rf b3ZlcmxvYWQgVkVSU0lPTiAnMi4wJzsgIC0tIGZhaWxzCitFUlJPUjogIG9wZXJhdG9yIGRv ZXMgbm90IGV4aXN0OiB1bmtub3duIHRlc3Rfb3ZlcmxvYWQuQEBAIHVua25vd24KK0xJTkUg MjogICAgIFNFTEVDVCAoJ2EnIE9QRVJBVE9SKHRlc3Rfb3ZlcmxvYWQuQEBAKSAnYicpIEFT IHIKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEFuIG9wZXJhdG9yIG9m IHRoYXQgbmFtZSBleGlzdHMsIGJ1dCBpdCBpcyBub3QgdHJ1c3RlZCB3aGlsZSBhbiBleHRl bnNpb24gc2NyaXB0IHJ1bnMuCitISU5UOiAgT25seSBvYmplY3RzIGluIHBnX2NhdGFsb2cs IG93bmVkIGJ5IGEgc3VwZXJ1c2VyLCBvciBiZWxvbmdpbmcgdG8gdGhlIGV4dGVuc2lvbiBv ciBvbmUgaXQgcmVxdWlyZXMgYXJlIHRydXN0ZWQuCitRVUVSWTogIENSRUFURSBUQUJMRSB0 ZXN0X292ZXJsb2FkLmNhcHR1cmVkIEFTCisgICAgU0VMRUNUICgnYScgT1BFUkFUT1IodGVz dF9vdmVybG9hZC5AQEApICdiJykgQVMgcgorQ09OVEVYVDogIGV4dGVuc2lvbiBzY3JpcHQg ZmlsZSAidGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0yLjAuc3FsIiwgbmVhciBsaW5lIDgK Ky0tIEEgcGxhbnRlZCBvcGVyYXRvciBuYW1lZCBhcyBDT01NVVRBVE9SIGlzIHJlZnVzZWQg YXMgd2VsbC4KK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0IFND SEVNQSB0ZXN0X292ZXJsb2FkIFZFUlNJT04gJzMuMCc7ICAtLSBmYWlscworRVJST1I6ICBv cGVyYXRvciBkb2VzIG5vdCBleGlzdDogY2hhcmFjdGVyIHZhcnlpbmcgPDw8IGNoYXJhY3Rl ciB2YXJ5aW5nCitERVRBSUw6ICBBbiBvcGVyYXRvciBvZiB0aGF0IG5hbWUgZXhpc3RzLCBi dXQgaXQgaXMgbm90IHRydXN0ZWQgd2hpbGUgYW4gZXh0ZW5zaW9uIHNjcmlwdCBydW5zLgor SElOVDogIE9ubHkgb2JqZWN0cyBpbiBwZ19jYXRhbG9nLCBvd25lZCBieSBhIHN1cGVydXNl ciwgb3IgYmVsb25naW5nIHRvIHRoZSBleHRlbnNpb24gb3Igb25lIGl0IHJlcXVpcmVzIGFy ZSB0cnVzdGVkLgorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIkNSRUFURSBPUEVSQVRPUiB0 ZXN0X292ZXJsb2FkLj4+PiAobGVmdGFyZyA9IHZhcmNoYXIsIHJpZ2h0YXJnID0gdmFyY2hh ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gdGVzdF9v dmVybG9hZC5vcGltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21t dXRhdG9yID0gPDw8KSIKK2V4dGVuc2lvbiBzY3JpcHQgZmlsZSAidGVzdF9leHRfb3Zlcmxv YWRfc3RyaWN0LS0zLjAuc3FsIiwgbmVhciBsaW5lIDgKKy0tIFRydXN0ZWQgY2FuZGlkYXRl IHZpc2libGUgYnV0IGFyZ3VtZW50cyBkb24ndCBtYXRjaDogYXJndW1lbnQgZXJyb3IsIHdp dGgKKy0tIHRoZSB1bnRydXN0ZWQgY2FuZGlkYXRlIGFzIGEgaGludC4KK0NSRUFURSBFWFRF TlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0IFNDSEVNQSB0ZXN0X292ZXJsb2FkIFZF UlNJT04gJzQuMCc7ICAtLSBmYWlscworRVJST1I6ICBmdW5jdGlvbiB0ZXN0X292ZXJsb2Fk LmYoaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogICAgIFNFTEVDVCB0ZXN0X292 ZXJsb2FkLmYoMSkgQVMgcgorICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIE5vIGZ1 bmN0aW9uIG9mIHRoYXQgbmFtZSBhY2NlcHRzIHRoZSBnaXZlbiBhcmd1bWVudCB0eXBlcy4K K0hJTlQ6ICBBIGZ1bmN0aW9uIG9mIHRoYXQgbmFtZSB3YXMgaWdub3JlZCBiZWNhdXNlIGl0 IGlzIG5vdCB0cnVzdGVkIHdoaWxlIGFuIGV4dGVuc2lvbiBzY3JpcHQgcnVucy4KK1FVRVJZ OiAgQ1JFQVRFIFRBQkxFIHRlc3Rfb3ZlcmxvYWQuY2FwdHVyZWQgQVMKKyAgICBTRUxFQ1Qg dGVzdF9vdmVybG9hZC5mKDEpIEFTIHIKK0NPTlRFWFQ6ICBleHRlbnNpb24gc2NyaXB0IGZp bGUgInRlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNC4wLnNxbCIsIG5lYXIgbGluZSA4CitD UkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdCBTQ0hFTUEgdGVzdF9v dmVybG9hZCBWRVJTSU9OICc1LjAnOyAgLS0gZmFpbHMKK0VSUk9SOiAgb3BlcmF0b3IgZG9l cyBub3QgZXhpc3Q6IGludGVnZXIgdGVzdF9vdmVybG9hZC4jIyMgaW50ZWdlcgorTElORSAy OiAgICAgU0VMRUNUICgxIE9QRVJBVE9SKHRlc3Rfb3ZlcmxvYWQuIyMjKSAyKSBBUyByCisg ICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgTm8gb3BlcmF0b3Igb2YgdGhhdCBu YW1lIGFjY2VwdHMgdGhlIGdpdmVuIGFyZ3VtZW50IHR5cGVzLgorSElOVDogIEFuIG9wZXJh dG9yIG9mIHRoYXQgbmFtZSB3YXMgaWdub3JlZCBiZWNhdXNlIGl0IGlzIG5vdCB0cnVzdGVk IHdoaWxlIGFuIGV4dGVuc2lvbiBzY3JpcHQgcnVucy4KK1FVRVJZOiAgQ1JFQVRFIFRBQkxF IHRlc3Rfb3ZlcmxvYWQuY2FwdHVyZWQgQVMKKyAgICBTRUxFQ1QgKDEgT1BFUkFUT1IodGVz dF9vdmVybG9hZC4jIyMpIDIpIEFTIHIKK0NPTlRFWFQ6ICBleHRlbnNpb24gc2NyaXB0IGZp bGUgInRlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNS4wLnNxbCIsIG5lYXIgbGluZSA3Cist LSBVbnRydXN0ZWQgY2FuZGlkYXRlIG91dHNpZGUgdGhlIHNlYXJjaCBwYXRoOiBvcmRpbmFy eSBub3QtaW4tcGF0aCBlcnJvci4KK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3Zlcmxv YWRfc3RyaWN0IFNDSEVNQSB0ZXN0X292ZXJsb2FkIFZFUlNJT04gJzYuMCc7ICAtLSBmYWls cworRVJST1I6ICBvcGVyYXRvciBkb2VzIG5vdCBleGlzdDogdW5rbm93biAmJiYgdW5rbm93 bgorTElORSAyOiAgICAgU0VMRUNUICgnYScgJiYmICdiJykgQVMgcgorICAgICAgICAgICAg ICAgICAgICAgICAgXgorREVUQUlMOiAgQW4gb3BlcmF0b3Igb2YgdGhhdCBuYW1lIGV4aXN0 cywgYnV0IGl0IGlzIG5vdCBpbiB0aGUgc2VhcmNoX3BhdGguCitRVUVSWTogIENSRUFURSBU QUJMRSB0ZXN0X292ZXJsb2FkLmNhcHR1cmVkIEFTCisgICAgU0VMRUNUICgnYScgJiYmICdi JykgQVMgcgorQ09OVEVYVDogIGV4dGVuc2lvbiBzY3JpcHQgZmlsZSAidGVzdF9leHRfb3Zl cmxvYWRfc3RyaWN0LS02LjAuc3FsIiwgbmVhciBsaW5lIDcKK0RST1AgRVhURU5TSU9OIHRl c3RfZXh0X292ZXJsb2FkOworRFJPUCBTQ0hFTUEgdGVzdF9vdmVybG9hZCBDQVNDQURFOwor Tk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byA5IG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRy b3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gdGVzdF9vdmVybG9hZC5mKHRleHQpCitkcm9wIGNh c2NhZGVzIHRvIGZ1bmN0aW9uIHRlc3Rfb3ZlcmxvYWQub3BpbXBsX2JhZCh0ZXh0LHRleHQp Citkcm9wIGNhc2NhZGVzIHRvIG9wZXJhdG9yIHRlc3Rfb3ZlcmxvYWQuIyMjKHRleHQsdGV4 dCkKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gdGVzdF9vdmVybG9hZC5oZWxwZXJfb25s eSh0ZXh0KQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiB0ZXN0X292ZXJsb2FkLm9waW1w bF9vbmx5KHRleHQsdGV4dCkKK2Ryb3AgY2FzY2FkZXMgdG8gb3BlcmF0b3IgdGVzdF9vdmVy bG9hZF9vdGhlci4mJiYodGV4dCx0ZXh0KQorZHJvcCBjYXNjYWRlcyB0byBvcGVyYXRvciB0 ZXN0X292ZXJsb2FkLkBAQCh0ZXh0LHRleHQpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9u IHRlc3Rfb3ZlcmxvYWQub3BpbXBsX3ZjKGNoYXJhY3RlciB2YXJ5aW5nLGNoYXJhY3RlciB2 YXJ5aW5nKQorZHJvcCBjYXNjYWRlcyB0byBvcGVyYXRvciB0ZXN0X292ZXJsb2FkLjw8PChj aGFyYWN0ZXIgdmFyeWluZyxjaGFyYWN0ZXIgdmFyeWluZykKK0RST1AgU0NIRU1BIHRlc3Rf b3ZlcmxvYWRfb3RoZXIgQ0FTQ0FERTsKK0RST1AgUk9MRSByZWdyZXNzX2V4dF91c2VyOwor LS0gQSAic3VwZXJ1c2VyID0gZmFsc2UiIHNjcmlwdCBydW5zIGFzIHRoZSBpbnZva2luZyB1 c2VyLCBzbyBpdHMgb2JqZWN0cyBhcmUKKy0tIG93bmVkIGJ5IHRoYXQgcm9sZS4gIFRoZXkg bXVzdCBzdGlsbCBiZSB0cnVzdGVkLCBhbmQgYW5vdGhlciB1c2VyJ3MgcGxhbnQKKy0tIG11 c3Qgbm90IGJlLgorQ1JFQVRFIFJPTEUgcmVncmVzc19leHRfb3duZXI7CitDUkVBVEUgUk9M RSByZWdyZXNzX2V4dF9hdHRhY2tlcjsKK0RPICQkIEJFR0lOCisgICAgRVhFQ1VURSBmb3Jt YXQoJ0dSQU5UIENSRUFURSBPTiBEQVRBQkFTRSAlSSBUTyByZWdyZXNzX2V4dF9vd25lcics CisgICAgICAgICAgICAgICAgICAgY3VycmVudF9kYXRhYmFzZSgpKTsKK0VORCAkJDsKK0NS RUFURSBTQ0hFTUEgdGVzdF9ub3N1cGVyIEFVVEhPUklaQVRJT04gcmVncmVzc19leHRfb3du ZXI7CitHUkFOVCBDUkVBVEUsIFVTQUdFIE9OIFNDSEVNQSB0ZXN0X25vc3VwZXIgVE8gcmVn cmVzc19leHRfYXR0YWNrZXI7CistLSBBdHRhY2tlciBwbGFudHMgYSBwcmVmZXJyZWQtdHlw ZSAodGV4dCkgc2libGluZyBvZiB0aGUgZXh0ZW5zaW9uJ3MgZygpLgorU0VUIFJPTEUgcmVn cmVzc19leHRfYXR0YWNrZXI7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9ub3N1cGVyLmcodGV4 dCkgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdhdHRhY2tlcic6OnRleHQgJCQg TEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK1JFU0VUIFJPTEU7CistLSBUaGUgc2NyaXB0IHJ1 bnMgYXMgcmVncmVzc19leHRfb3duZXIgYW5kIG11c3QgcmVzb2x2ZSBnKCdhYmMnKSB0byBp dHMgb3duCistLSB2YXJjaGFyIGZ1bmN0aW9uLCBub3QgdGhlIGF0dGFja2VyJ3MgdGV4dCBv bmUuCitTRVQgUk9MRSByZWdyZXNzX2V4dF9vd25lcjsKK0NSRUFURSBFWFRFTlNJT04gdGVz dF9leHRfb3ZlcmxvYWRfbm9zdXBlciBTQ0hFTUEgdGVzdF9ub3N1cGVyOworU0VMRUNUIGZu IEZST00gdGVzdF9ub3N1cGVyLmNhcHR1cmVkX25vc3VwZXI7CisgICAgZm4gICAgIAorLS0t LS0tLS0tLS0KKyBleHRlbnNpb24KKygxIHJvdykKKworUkVTRVQgUk9MRTsKKy0tIEFuIHVw ZGF0ZSBydW4gYnkgYW5vdGhlciByb2xlIChoZXJlIHRoZSBzdXBlcnVzZXIpIG11c3Qgc3Rp bGwgcmVhY2ggdGhlCistLSBleHRlbnNpb24ncyBvd24gZygpLCB3aGljaCB0aGUgaW5zdGFs bCBsZWZ0IG93bmVkIGJ5IHJlZ3Jlc3NfZXh0X293bmVyLgorQUxURVIgRVhURU5TSU9OIHRl c3RfZXh0X292ZXJsb2FkX25vc3VwZXIgVVBEQVRFIFRPICcyLjAnOworU0VMRUNUIGZuIEZS T00gdGVzdF9ub3N1cGVyLnVwZGF0ZWQ7CisgICAgZm4gICAgIAorLS0tLS0tLS0tLS0KKyBl eHRlbnNpb24KKygxIHJvdykKKworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRf bm9zdXBlcjsKK0RST1AgU0NIRU1BIHRlc3Rfbm9zdXBlciBDQVNDQURFOworTk9USUNFOiAg ZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiB0ZXN0X25vc3VwZXIuZyh0ZXh0KQorRE8gJCQg QkVHSU4KKyAgICBFWEVDVVRFIGZvcm1hdCgnUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSAl SSBGUk9NIHJlZ3Jlc3NfZXh0X293bmVyJywKKyAgICAgICAgICAgICAgICAgICBjdXJyZW50 X2RhdGFiYXNlKCkpOworRU5EICQkOworRFJPUCBST0xFIHJlZ3Jlc3NfZXh0X293bmVyOwor RFJPUCBST0xFIHJlZ3Jlc3NfZXh0X2F0dGFja2VyOworLS0gUmVzb2x1dGlvbiBpbiBhIHBh cmFsbGVsIHdvcmtlciBtdXN0IGFwcGx5IHRoZSBzYW1lIGNoZWNrLCBzbworLS0gY3JlYXRp bmdfZXh0ZW5zaW9uIG11c3QgcmVhY2ggdGhlIHdvcmtlci4gIEZvcmNlIHdyYXAoKSBpbnRv IGEgd29ya2VyIHdpdGgKKy0tIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5LgorQ1JFQVRFIFJPTEUg cmVncmVzc19leHRfYXR0YWNrZXIgTk9TVVBFUlVTRVI7CitDUkVBVEUgU0NIRU1BIHRlc3Rf cGFyYWxsZWw7CitHUkFOVCBDUkVBVEUsIFVTQUdFIE9OIFNDSEVNQSB0ZXN0X3BhcmFsbGVs IFRPIHJlZ3Jlc3NfZXh0X2F0dGFja2VyOworU0VUIFJPTEUgcmVncmVzc19leHRfYXR0YWNr ZXI7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9wYXJhbGxlbC5wcm9iZSh0ZXh0KSBSRVRVUk5T IHRleHQKKyAgICBBUyAkJCBTRUxFQ1QgJ2F0dGFja2VyJzo6dGV4dCAkJCBMQU5HVUFHRSBz cWwgSU1NVVRBQkxFIFBBUkFMTEVMIFNBRkU7CitSRVNFVCBST0xFOworU0VUIGRlYnVnX3Bh cmFsbGVsX3F1ZXJ5ID0gb247CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2Fk X3BhcmFsbGVsIFNDSEVNQSB0ZXN0X3BhcmFsbGVsOworUkVTRVQgZGVidWdfcGFyYWxsZWxf cXVlcnk7CistLSBUaGUgd29ya2VyIHJlc29sdmVkIHByb2JlKCd4JykgdG8gdGhlIGV4dGVu c2lvbidzIG93biBwcm9iZSh2YXJjaGFyKSwgbm90CistLSB0aGUgcGxhbnRlZCBwcm9iZSh0 ZXh0KS4KK1NFTEVDVCB3aG8gRlJPTSB0ZXN0X3BhcmFsbGVsLmNhcHR1cmVkOworICAgIHdo byAgICAKKy0tLS0tLS0tLS0tCisgZXh0ZW5zaW9uCisoMSByb3cpCisKK0RST1AgRVhURU5T SU9OIHRlc3RfZXh0X292ZXJsb2FkX3BhcmFsbGVsOworRFJPUCBTQ0hFTUEgdGVzdF9wYXJh bGxlbCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiB0ZXN0 X3BhcmFsbGVsLnByb2JlKHRleHQpCitEUk9QIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXI7 CistLSBBIHBsYW50IGluIHRoZSBleHRlbnNpb24ncyBvd24gc2NoZW1hIG11c3Qgbm90IHNo YWRvdyBhIHJlcXVpcmVkCistLSBleHRlbnNpb24ncyBvYmplY3QsIGZvciBhbnkga2luZCBv ZiByZWZlcmVuY2U6IGNhbGwsIERETCBieSBuYW1lLCB0eXBlLAorLS0gcmVsYXRpb24sIG9y IGEgcmVzb2x1dGlvbiBjYWNoZWQgYmVmb3JlIHRoZSBzY3JpcHQuCitDUkVBVEUgUk9MRSBy ZWdyZXNzX2V4dF9hdHRhY2tlcjsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfZXh0X3JlcW93bmVy OworRE8gJCQgQkVHSU4KKyAgICBFWEVDVVRFIGZvcm1hdCgnR1JBTlQgQ1JFQVRFIE9OIERB VEFCQVNFICVJIFRPIHJlZ3Jlc3NfZXh0X3JlcW93bmVyJywKKyAgICAgICAgICAgICAgICAg ICBjdXJyZW50X2RhdGFiYXNlKCkpOworRU5EICQkOworQ1JFQVRFIFNDSEVNQSB0ZXN0X3Jl cWRlcCBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfZXh0X3JlcW93bmVyOworQ1JFQVRFIFNDSEVN QSB0ZXN0X3JlcTsKK0dSQU5UIENSRUFURSwgVVNBR0UgT04gU0NIRU1BIHRlc3RfcmVxIFRP IHJlZ3Jlc3NfZXh0X2F0dGFja2VyOworLS0gVGhlIHJlcXVpcmVkIGV4dGVuc2lvbiBpcyAi c3VwZXJ1c2VyID0gZmFsc2UiIGFuZCBpbnN0YWxsZWQgYnkgYW4gb3JkaW5hcnkKKy0tIHJv bGUsIHNvIGl0cyBvYmplY3RzIGFyZSByZWFjaGFibGUgb25seSB0aHJvdWdoIHJlcXVpcmVk LWV4dGVuc2lvbgorLS0gbWVtYmVyc2hpcC4KK1NFVCBST0xFIHJlZ3Jlc3NfZXh0X3JlcW93 bmVyOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwIFNDSEVN QSB0ZXN0X3JlcWRlcDsKK1JFU0VUIFJPTEU7CitTRVQgUk9MRSByZWdyZXNzX2V4dF9hdHRh Y2tlcjsKK0NSRUFURSBGVU5DVElPTiB0ZXN0X3JlcS5yZXFjYWxsKGludCkgUkVUVVJOUyB0 ZXh0CisgICAgQVMgJCQgU0VMRUNUICdhdHRhY2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3Fs IElNTVVUQUJMRTsKK0NSRUFURSBGVU5DVElPTiB0ZXN0X3JlcS5yZXFlcShpbnQsIGludCkg UkVUVVJOUyBib29sZWFuCisgICAgQVMgJCQgU0VMRUNUIGZhbHNlICQkIExBTkdVQUdFIHNx bCBJTU1VVEFCTEU7CitDUkVBVEUgT1BFUkFUT1IgdGVzdF9yZXEuPT09IChsZWZ0YXJnID0g aW50ZWdlciwgcmlnaHRhcmcgPSBpbnRlZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZnVuY3Rpb24gPSB0ZXN0X3JlcS5yZXFlcSk7CistLSBSZXNvbHZpbmcgdG8gdGhp cyBkb21haW4gd291bGQgcnVuIHB3bigpIHdpdGggdGhlIHNjcmlwdCdzIHByaXZpbGVnZXMu CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9yZXEucHduKHRleHQpIFJFVFVSTlMgYm9vbGVhbgor ICAgIEFTICQkIEJFR0lOIFJBSVNFIEVYQ0VQVElPTiAnYXR0YWNrZXIgY29kZSBleGVjdXRl ZCc7IEVORCAkJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIERPTUFJTiB0ZXN0X3JlcS5y ZXFkb20gQVMgdGV4dCBDSEVDSyAodGVzdF9yZXEucHduKFZBTFVFKSk7CitDUkVBVEUgVEFC TEUgdGVzdF9yZXEucmVxdGFiKHQgdGV4dCk7CitSRVNFVCBST0xFOworLS0gQ2FjaGUgYSBy ZXNvbHV0aW9uIG1hZGUgb3V0c2lkZSBhbnkgc2NyaXB0LCB1bmRlciB0aGUgc2VhcmNoX3Bh dGggdGhlCistLSBzY3JpcHQgd2lsbCBwaW47IHRoYXQgcGxhbiBtdXN0IG5vdCBiZSByZXVz ZWQgaW5zaWRlIHRoZSBzY3JpcHQuCitTRVQgc2VhcmNoX3BhdGggPSB0ZXN0X3JlcSwgdGVz dF9yZXFkZXAsIHBnX3RlbXA7CitTRUxFQ1QgdGVzdF9yZXFkZXAucmVxcGxwZ3NxbCgpIEFT IHdhcm1lZF9vdXRzaWRlX3NjcmlwdDsKKyB3YXJtZWRfb3V0c2lkZV9zY3JpcHQgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIGF0dGFja2VyCisoMSByb3cpCisKK1JFU0VUIHNlYXJj aF9wYXRoOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9yZXEgU0NIRU1B IHRlc3RfcmVxOworLS0gRXZlcnkgcmVmZXJlbmNlIHJlc29sdmVkIHRvIHRoZSByZXF1aXJl ZCBleHRlbnNpb24ncyBvYmplY3RzIChpbgorLS0gdGVzdF9yZXFkZXApLCBub3QgdGhlIHBs YW50ZWQgb25lcyBpbiB0ZXN0X3JlcS4KK1NFTEVDVCBjLndobywgYy53aG9fY2FjaGVkLCBu Lm5zcG5hbWUgQVMgZG9tYWluX3NjaGVtYQorICBGUk9NIHRlc3RfcmVxLmNhcHR1cmVkIGMK KyAgSk9JTiBwZ190eXBlIHQgT04gdC5vaWQgPSBjLmRvbQorICBKT0lOIHBnX25hbWVzcGFj ZSBuIE9OIG4ub2lkID0gdC50eXBuYW1lc3BhY2U7CisgICB3aG8gICAgfCB3aG9fY2FjaGVk IHwgZG9tYWluX3NjaGVtYSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLQorIHJlcXVpcmVkIHwgcmVxdWlyZWQgICB8IHRlc3RfcmVxZGVwCisoMSByb3cpCisK K1NFTEVDVCBuLm5zcG5hbWUgQVMgb3BlcmF0b3JfZnVuY19zY2hlbWEKKyAgRlJPTSBwZ19v cGVyYXRvciBvCisgIEpPSU4gcGdfcHJvYyBwIE9OIHAub2lkID0gby5vcHJjb2RlCisgIEpP SU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBwLnByb25hbWVzcGFjZQorIFdIRVJFIG8u b3BybmFtZSA9ICcjIyMnIEFORCBvLm9wcm5hbWVzcGFjZSA9ICd0ZXN0X3JlcSc6OnJlZ25h bWVzcGFjZTsKKyBvcGVyYXRvcl9mdW5jX3NjaGVtYSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyB0ZXN0X3JlcWRlcAorKDEgcm93KQorCitTRUxFQ1QgJ3Rlc3RfcmVxZGVwLnJlcXRh YicgQVMgdGJsLCBjb3VudCgqKSBGUk9NIHRlc3RfcmVxZGVwLnJlcXRhYgorVU5JT04gQUxM CitTRUxFQ1QgJ3Rlc3RfcmVxLnJlcXRhYicsIGNvdW50KCopIEZST00gdGVzdF9yZXEucmVx dGFiOworICAgICAgICB0YmwgICAgICAgICB8IGNvdW50IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLQorIHRlc3RfcmVxZGVwLnJlcXRhYiB8ICAgICAxCisgdGVzdF9yZXEucmVx dGFiICAgIHwgICAgIDAKKygyIHJvd3MpCisKK1NFTEVDVCBuLm5zcG5hbWUgQVMgb3BmYW1p bHlfbWVtYmVyX3NjaGVtYQorICBGUk9NIHBnX2Ftb3AgYQorICBKT0lOIHBnX29wZmFtaWx5 IGYgT04gZi5vaWQgPSBhLmFtb3BmYW1pbHkKKyAgSk9JTiBwZ19vcGVyYXRvciBvIE9OIG8u b2lkID0gYS5hbW9wb3ByCisgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBvLm9w cm5hbWVzcGFjZQorIFdIRVJFIGYub3BmbmFtZSA9ICdyZXFmYW0nOworIG9wZmFtaWx5X21l bWJlcl9zY2hlbWEgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ZXN0X3JlcWRlcAor KDEgcm93KQorCistLSBPdXRzaWRlIHRoZSBzY3JpcHQgdGhlIGNhY2hlZCBwbGFuIGlzIGdv b2QgYWdhaW4uCitTRVQgc2VhcmNoX3BhdGggPSB0ZXN0X3JlcSwgdGVzdF9yZXFkZXAsIHBn X3RlbXA7CitTRUxFQ1QgdGVzdF9yZXFkZXAucmVxcGxwZ3NxbCgpIEFTIGFmdGVyX3Njcmlw dDsKKyBhZnRlcl9zY3JpcHQgCistLS0tLS0tLS0tLS0tLQorIGF0dGFja2VyCisoMSByb3cp CisKK1JFU0VUIHNlYXJjaF9wYXRoOworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3Zlcmxv YWRfcmVxOworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfcmVxX2RlcDsKK0RS T1AgU0NIRU1BIHRlc3RfcmVxIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRv IDYgb3RoZXIgb2JqZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiB0 ZXN0X3JlcS5yZXFjYWxsKGludGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIHRl c3RfcmVxLnJlcWVxKGludGVnZXIsaW50ZWdlcikKK2Ryb3AgY2FzY2FkZXMgdG8gb3BlcmF0 b3IgdGVzdF9yZXEuPT09KGludGVnZXIsaW50ZWdlcikKK2Ryb3AgY2FzY2FkZXMgdG8gZnVu Y3Rpb24gdGVzdF9yZXEucHduKHRleHQpCitkcm9wIGNhc2NhZGVzIHRvIHR5cGUgdGVzdF9y ZXEucmVxZG9tCitkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIHRlc3RfcmVxLnJlcXRhYgorRFJP UCBTQ0hFTUEgdGVzdF9yZXFkZXAgQ0FTQ0FERTsKK0RPICQkIEJFR0lOCisgICAgRVhFQ1VU RSBmb3JtYXQoJ1JFVk9LRSBDUkVBVEUgT04gREFUQUJBU0UgJUkgRlJPTSByZWdyZXNzX2V4 dF9yZXFvd25lcicsCisgICAgICAgICAgICAgICAgICAgY3VycmVudF9kYXRhYmFzZSgpKTsK K0VORCAkJDsKK0RST1AgUk9MRSByZWdyZXNzX2V4dF9hdHRhY2tlcjsKK0RST1AgUk9MRSBy ZWdyZXNzX2V4dF9yZXFvd25lcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9leHRlbnNpb25zL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVu c2lvbnMvbWVzb24uYnVpbGQKaW5kZXggMmM3Y2VhMTg5ZTIuLjhhZWNhNDhmMzJlIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZApAQCAt MzYsNiArMzYsMjQgQEAgdGVzdF9pbnN0YWxsX2RhdGEgKz0gZmlsZXMoCiAgICd0ZXN0X2V4 dF9ldnR0cmlnLS0xLjAtLTIuMC5zcWwnLAogICAndGVzdF9leHRfZXZ0dHJpZy0tMS4wLnNx bCcsCiAgICd0ZXN0X2V4dF9ldnR0cmlnLmNvbnRyb2wnLAorICAndGVzdF9leHRfb3Zlcmxv YWQtLTEuMC5zcWwnLAorICAndGVzdF9leHRfb3ZlcmxvYWQuY29udHJvbCcsCisgICd0ZXN0 X2V4dF9vdmVybG9hZF9zdHJpY3QtLTEuMC5zcWwnLAorICAndGVzdF9leHRfb3ZlcmxvYWRf c3RyaWN0LS0yLjAuc3FsJywKKyAgJ3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMy4wLnNx bCcsCisgICd0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTQuMC5zcWwnLAorICAndGVzdF9l eHRfb3ZlcmxvYWRfc3RyaWN0LS01LjAuc3FsJywKKyAgJ3Rlc3RfZXh0X292ZXJsb2FkX3N0 cmljdC0tNi4wLnNxbCcsCisgICd0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QuY29udHJvbCcs CisgICd0ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLS0xLjAtLTIuMC5zcWwnLAorICAndGVz dF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLnNxbCcsCisgICd0ZXN0X2V4dF9vdmVybG9h ZF9ub3N1cGVyLmNvbnRyb2wnLAorICAndGVzdF9leHRfb3ZlcmxvYWRfcGFyYWxsZWwtLTEu MC5zcWwnLAorICAndGVzdF9leHRfb3ZlcmxvYWRfcGFyYWxsZWwuY29udHJvbCcsCisgICd0 ZXN0X2V4dF9vdmVybG9hZF9yZXEtLTEuMC5zcWwnLAorICAndGVzdF9leHRfb3ZlcmxvYWRf cmVxLmNvbnRyb2wnLAorICAndGVzdF9leHRfb3ZlcmxvYWRfcmVxX2RlcC0tMS4wLnNxbCcs CisgICd0ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwLmNvbnRyb2wnLAogICAndGVzdF9leHRf cmVxX3NjaGVtYTEtLTEuMC5zcWwnLAogICAndGVzdF9leHRfcmVxX3NjaGVtYTEuY29udHJv bCcsCiAgICd0ZXN0X2V4dF9yZXFfc2NoZW1hMi0tMS4wLnNxbCcsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRlbnNpb25zLnNx bCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3NxbC90ZXN0X2V4dGVuc2lv bnMuc3FsCmluZGV4IGI1ODc4ZjZmODBmLi4xYTA5ZTk4YzExNSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZW5z aW9ucy5zcWwKQEAgLTMwMywzICszMDMsMTg2IEBAIEFMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4 dF9yZXFfc2NoZW1hMSBTRVQgU0NIRU1BIHRlc3Rfc19kZXAyOyAgLS0gbm93IG9rCiBTRUxF Q1QgdGVzdF9zX2RlcDIuZGVwX3JlcTEoKTsKIFNFTEVDVCB0ZXN0X3NfZGVwLmRlcF9yZXEy KCk7CiBEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9yZXFfc2NoZW1hMSBDQVNDQURFOworCist LSBWZXJpZnkgdGhhdCBuYW1lIHJlc29sdXRpb24gZHVyaW5nIGFuIGV4dGVuc2lvbiBzY3Jp cHQgY2Fubm90IGJlIGNhcHR1cmVkCistLSBieSBvYmplY3RzIGFuIHVucHJpdmlsZWdlZCB1 c2VyIHBsYW50ZWQgaW4gdGhlIGV4dGVuc2lvbidzIHNjaGVtYS4KK0NSRUFURSBST0xFIHJl Z3Jlc3NfZXh0X3VzZXI7CitDUkVBVEUgU0NIRU1BIHRlc3Rfb3ZlcmxvYWQ7CitHUkFOVCBD UkVBVEUsIFVTQUdFIE9OIFNDSEVNQSB0ZXN0X292ZXJsb2FkIFRPIHJlZ3Jlc3NfZXh0X3Vz ZXI7CistLSBBcyB0aGUgdW5wcml2aWxlZ2VkIHVzZXIsIHBsYW50IGRpZmZlcmVudGx5LXR5 cGVkIHNpYmxpbmdzIGFuZCB0aGUgc29sZQorLS0gZGVmaW5pdGlvbiBvZiBoZWxwZXJfb25s eSgpLgorU0VUIFJPTEUgcmVncmVzc19leHRfdXNlcjsKK0NSRUFURSBGVU5DVElPTiB0ZXN0 X292ZXJsb2FkLmYodGV4dCkgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdhdHRh Y2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK0NSRUFURSBGVU5DVElP TiB0ZXN0X292ZXJsb2FkLm9waW1wbF9iYWQodGV4dCwgdGV4dCkgUkVUVVJOUyB0ZXh0Cisg ICAgQVMgJCQgU0VMRUNUICdhdHRhY2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVU QUJMRTsKK0NSRUFURSBPUEVSQVRPUiB0ZXN0X292ZXJsb2FkLiMjIyAobGVmdGFyZyA9IHRl eHQsIHJpZ2h0YXJnID0gdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZnVuY3Rpb24gPSB0ZXN0X292ZXJsb2FkLm9waW1wbF9iYWQpOworQ1JFQVRFIEZVTkNU SU9OIHRlc3Rfb3ZlcmxvYWQuaGVscGVyX29ubHkodGV4dCkgUkVUVVJOUyB0ZXh0CisgICAg QVMgJCQgU0VMRUNUICdhdHRhY2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJM RTsKK0NSRUFURSBGVU5DVElPTiB0ZXN0X292ZXJsb2FkLm9waW1wbF9vbmx5KHRleHQsIHRl eHQpIFJFVFVSTlMgdGV4dAorICAgIEFTICQkIFNFTEVDVCAnYXR0YWNrZXInOjp0ZXh0ICQk IExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CitDUkVBVEUgT1BFUkFUT1IgdGVzdF9vdmVybG9h ZC5AQEAgKGxlZnRhcmcgPSB0ZXh0LCByaWdodGFyZyA9IHRleHQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gdGVzdF9vdmVybG9hZC5vcGltcGxf b25seSk7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9vdmVybG9hZC5vcGltcGxfdmModmFyY2hh ciwgdmFyY2hhcikgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdhdHRhY2tlcic6 OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK0NSRUFURSBPUEVSQVRPUiB0ZXN0 X292ZXJsb2FkLjw8PCAobGVmdGFyZyA9IHZhcmNoYXIsIHJpZ2h0YXJnID0gdmFyY2hhciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSB0ZXN0X292 ZXJsb2FkLm9waW1wbF92Yyk7CitSRVNFVCBST0xFOworLS0gQSBzY2hlbWEgb3V0c2lkZSB0 aGUgc2NyaXB0J3Mgc2VhcmNoIHBhdGgsIGhvbGRpbmcgYSBwbGFudGVkIG9wZXJhdG9yLgor Q1JFQVRFIFNDSEVNQSB0ZXN0X292ZXJsb2FkX290aGVyOworR1JBTlQgQ1JFQVRFLCBVU0FH RSBPTiBTQ0hFTUEgdGVzdF9vdmVybG9hZF9vdGhlciBUTyByZWdyZXNzX2V4dF91c2VyOwor U0VUIFJPTEUgcmVncmVzc19leHRfdXNlcjsKK0NSRUFURSBPUEVSQVRPUiB0ZXN0X292ZXJs b2FkX290aGVyLiYmJiAobGVmdGFyZyA9IHRleHQsIHJpZ2h0YXJnID0gdGV4dCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSB0ZXN0X292 ZXJsb2FkLm9waW1wbF9vbmx5KTsKK1JFU0VUIFJPTEU7CistLSBJbnN0YWxsaW5nIHRoZSBl eHRlbnNpb24gcmVzb2x2ZXMgZignYWJjJykgYW5kIHRoZSAjIyMgb3BlcmF0b3IgdG8gdGhl CistLSBleHRlbnNpb24ncyBvd24gKHRydXN0ZWQpIG9iamVjdHMsIG5vdCB0aGUgcGxhbnRl ZCBvbmVzLgorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZCBTQ0hFTUEgdGVz dF9vdmVybG9hZDsKK1NFTEVDVCBmbiwgb3AgRlJPTSB0ZXN0X292ZXJsb2FkLmNhcHR1cmVk OworLS0gT3V0c2lkZSBvZiBleHRlbnNpb24gc2NyaXB0cywgb3JkaW5hcnkgcmVzb2x1dGlv biBydWxlcyBhcmUgdW5jaGFuZ2VkOiB0aGUKKy0tIHNhbWUgY2FsbHMgcmVhY2ggdGhlIHBs YW50ZWQgb2JqZWN0cy4KK1NFTEVDVCB0ZXN0X292ZXJsb2FkLmYoJ2FiYycpIEFTIGZuLAor ICAgICAgICgnYScgT1BFUkFUT1IodGVzdF9vdmVybG9hZC4jIyMpICdiJykgQVMgb3A7Cist LSBXaGVuIG9ubHkgYW4gdW50cnVzdGVkIGNhbmRpZGF0ZSBleGlzdHMsIHRoZSBzY3JpcHQg cmVmdXNlcyB0byBjYWxsIGl0LgorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9h ZF9zdHJpY3QgU0NIRU1BIHRlc3Rfb3ZlcmxvYWQ7ICAtLSBmYWlscworQ1JFQVRFIEVYVEVO U0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QgU0NIRU1BIHRlc3Rfb3ZlcmxvYWQgVkVS U0lPTiAnMi4wJzsgIC0tIGZhaWxzCistLSBBIHBsYW50ZWQgb3BlcmF0b3IgbmFtZWQgYXMg Q09NTVVUQVRPUiBpcyByZWZ1c2VkIGFzIHdlbGwuCitDUkVBVEUgRVhURU5TSU9OIHRlc3Rf ZXh0X292ZXJsb2FkX3N0cmljdCBTQ0hFTUEgdGVzdF9vdmVybG9hZCBWRVJTSU9OICczLjAn OyAgLS0gZmFpbHMKKy0tIFRydXN0ZWQgY2FuZGlkYXRlIHZpc2libGUgYnV0IGFyZ3VtZW50 cyBkb24ndCBtYXRjaDogYXJndW1lbnQgZXJyb3IsIHdpdGgKKy0tIHRoZSB1bnRydXN0ZWQg Y2FuZGlkYXRlIGFzIGEgaGludC4KK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3Zlcmxv YWRfc3RyaWN0IFNDSEVNQSB0ZXN0X292ZXJsb2FkIFZFUlNJT04gJzQuMCc7ICAtLSBmYWls cworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QgU0NIRU1BIHRl c3Rfb3ZlcmxvYWQgVkVSU0lPTiAnNS4wJzsgIC0tIGZhaWxzCistLSBVbnRydXN0ZWQgY2Fu ZGlkYXRlIG91dHNpZGUgdGhlIHNlYXJjaCBwYXRoOiBvcmRpbmFyeSBub3QtaW4tcGF0aCBl cnJvci4KK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0IFNDSEVN QSB0ZXN0X292ZXJsb2FkIFZFUlNJT04gJzYuMCc7ICAtLSBmYWlscworRFJPUCBFWFRFTlNJ T04gdGVzdF9leHRfb3ZlcmxvYWQ7CitEUk9QIFNDSEVNQSB0ZXN0X292ZXJsb2FkIENBU0NB REU7CitEUk9QIFNDSEVNQSB0ZXN0X292ZXJsb2FkX290aGVyIENBU0NBREU7CitEUk9QIFJP TEUgcmVncmVzc19leHRfdXNlcjsKKworLS0gQSAic3VwZXJ1c2VyID0gZmFsc2UiIHNjcmlw dCBydW5zIGFzIHRoZSBpbnZva2luZyB1c2VyLCBzbyBpdHMgb2JqZWN0cyBhcmUKKy0tIG93 bmVkIGJ5IHRoYXQgcm9sZS4gIFRoZXkgbXVzdCBzdGlsbCBiZSB0cnVzdGVkLCBhbmQgYW5v dGhlciB1c2VyJ3MgcGxhbnQKKy0tIG11c3Qgbm90IGJlLgorQ1JFQVRFIFJPTEUgcmVncmVz c19leHRfb3duZXI7CitDUkVBVEUgUk9MRSByZWdyZXNzX2V4dF9hdHRhY2tlcjsKK0RPICQk IEJFR0lOCisgICAgRVhFQ1VURSBmb3JtYXQoJ0dSQU5UIENSRUFURSBPTiBEQVRBQkFTRSAl SSBUTyByZWdyZXNzX2V4dF9vd25lcicsCisgICAgICAgICAgICAgICAgICAgY3VycmVudF9k YXRhYmFzZSgpKTsKK0VORCAkJDsKK0NSRUFURSBTQ0hFTUEgdGVzdF9ub3N1cGVyIEFVVEhP UklaQVRJT04gcmVncmVzc19leHRfb3duZXI7CitHUkFOVCBDUkVBVEUsIFVTQUdFIE9OIFND SEVNQSB0ZXN0X25vc3VwZXIgVE8gcmVncmVzc19leHRfYXR0YWNrZXI7CistLSBBdHRhY2tl ciBwbGFudHMgYSBwcmVmZXJyZWQtdHlwZSAodGV4dCkgc2libGluZyBvZiB0aGUgZXh0ZW5z aW9uJ3MgZygpLgorU0VUIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXI7CitDUkVBVEUgRlVO Q1RJT04gdGVzdF9ub3N1cGVyLmcodGV4dCkgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VM RUNUICdhdHRhY2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK1JFU0VU IFJPTEU7CistLSBUaGUgc2NyaXB0IHJ1bnMgYXMgcmVncmVzc19leHRfb3duZXIgYW5kIG11 c3QgcmVzb2x2ZSBnKCdhYmMnKSB0byBpdHMgb3duCistLSB2YXJjaGFyIGZ1bmN0aW9uLCBu b3QgdGhlIGF0dGFja2VyJ3MgdGV4dCBvbmUuCitTRVQgUk9MRSByZWdyZXNzX2V4dF9vd25l cjsKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlciBTQ0hFTUEg dGVzdF9ub3N1cGVyOworU0VMRUNUIGZuIEZST00gdGVzdF9ub3N1cGVyLmNhcHR1cmVkX25v c3VwZXI7CitSRVNFVCBST0xFOworLS0gQW4gdXBkYXRlIHJ1biBieSBhbm90aGVyIHJvbGUg KGhlcmUgdGhlIHN1cGVydXNlcikgbXVzdCBzdGlsbCByZWFjaCB0aGUKKy0tIGV4dGVuc2lv bidzIG93biBnKCksIHdoaWNoIHRoZSBpbnN0YWxsIGxlZnQgb3duZWQgYnkgcmVncmVzc19l eHRfb3duZXIuCitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlciBV UERBVEUgVE8gJzIuMCc7CitTRUxFQ1QgZm4gRlJPTSB0ZXN0X25vc3VwZXIudXBkYXRlZDsK K0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX25vc3VwZXI7CitEUk9QIFNDSEVN QSB0ZXN0X25vc3VwZXIgQ0FTQ0FERTsKK0RPICQkIEJFR0lOCisgICAgRVhFQ1VURSBmb3Jt YXQoJ1JFVk9LRSBDUkVBVEUgT04gREFUQUJBU0UgJUkgRlJPTSByZWdyZXNzX2V4dF9vd25l cicsCisgICAgICAgICAgICAgICAgICAgY3VycmVudF9kYXRhYmFzZSgpKTsKK0VORCAkJDsK K0RST1AgUk9MRSByZWdyZXNzX2V4dF9vd25lcjsKK0RST1AgUk9MRSByZWdyZXNzX2V4dF9h dHRhY2tlcjsKKworLS0gUmVzb2x1dGlvbiBpbiBhIHBhcmFsbGVsIHdvcmtlciBtdXN0IGFw cGx5IHRoZSBzYW1lIGNoZWNrLCBzbworLS0gY3JlYXRpbmdfZXh0ZW5zaW9uIG11c3QgcmVh Y2ggdGhlIHdvcmtlci4gIEZvcmNlIHdyYXAoKSBpbnRvIGEgd29ya2VyIHdpdGgKKy0tIGRl YnVnX3BhcmFsbGVsX3F1ZXJ5LgorQ1JFQVRFIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXIg Tk9TVVBFUlVTRVI7CitDUkVBVEUgU0NIRU1BIHRlc3RfcGFyYWxsZWw7CitHUkFOVCBDUkVB VEUsIFVTQUdFIE9OIFNDSEVNQSB0ZXN0X3BhcmFsbGVsIFRPIHJlZ3Jlc3NfZXh0X2F0dGFj a2VyOworU0VUIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXI7CitDUkVBVEUgRlVOQ1RJT04g dGVzdF9wYXJhbGxlbC5wcm9iZSh0ZXh0KSBSRVRVUk5TIHRleHQKKyAgICBBUyAkJCBTRUxF Q1QgJ2F0dGFja2VyJzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIFBBUkFMTEVM IFNBRkU7CitSRVNFVCBST0xFOworU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb247CitD UkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3BhcmFsbGVsIFNDSEVNQSB0ZXN0 X3BhcmFsbGVsOworUkVTRVQgZGVidWdfcGFyYWxsZWxfcXVlcnk7CistLSBUaGUgd29ya2Vy IHJlc29sdmVkIHByb2JlKCd4JykgdG8gdGhlIGV4dGVuc2lvbidzIG93biBwcm9iZSh2YXJj aGFyKSwgbm90CistLSB0aGUgcGxhbnRlZCBwcm9iZSh0ZXh0KS4KK1NFTEVDVCB3aG8gRlJP TSB0ZXN0X3BhcmFsbGVsLmNhcHR1cmVkOworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3Zl cmxvYWRfcGFyYWxsZWw7CitEUk9QIFNDSEVNQSB0ZXN0X3BhcmFsbGVsIENBU0NBREU7CitE Uk9QIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXI7CisKKy0tIEEgcGxhbnQgaW4gdGhlIGV4 dGVuc2lvbidzIG93biBzY2hlbWEgbXVzdCBub3Qgc2hhZG93IGEgcmVxdWlyZWQKKy0tIGV4 dGVuc2lvbidzIG9iamVjdCwgZm9yIGFueSBraW5kIG9mIHJlZmVyZW5jZTogY2FsbCwgRERM IGJ5IG5hbWUsIHR5cGUsCistLSByZWxhdGlvbiwgb3IgYSByZXNvbHV0aW9uIGNhY2hlZCBi ZWZvcmUgdGhlIHNjcmlwdC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfZXh0X2F0dGFja2VyOwor Q1JFQVRFIFJPTEUgcmVncmVzc19leHRfcmVxb3duZXI7CitETyAkJCBCRUdJTgorICAgIEVY RUNVVEUgZm9ybWF0KCdHUkFOVCBDUkVBVEUgT04gREFUQUJBU0UgJUkgVE8gcmVncmVzc19l eHRfcmVxb3duZXInLAorICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGF0YWJhc2UoKSk7 CitFTkQgJCQ7CitDUkVBVEUgU0NIRU1BIHRlc3RfcmVxZGVwIEFVVEhPUklaQVRJT04gcmVn cmVzc19leHRfcmVxb3duZXI7CitDUkVBVEUgU0NIRU1BIHRlc3RfcmVxOworR1JBTlQgQ1JF QVRFLCBVU0FHRSBPTiBTQ0hFTUEgdGVzdF9yZXEgVE8gcmVncmVzc19leHRfYXR0YWNrZXI7 CistLSBUaGUgcmVxdWlyZWQgZXh0ZW5zaW9uIGlzICJzdXBlcnVzZXIgPSBmYWxzZSIgYW5k IGluc3RhbGxlZCBieSBhbiBvcmRpbmFyeQorLS0gcm9sZSwgc28gaXRzIG9iamVjdHMgYXJl IHJlYWNoYWJsZSBvbmx5IHRocm91Z2ggcmVxdWlyZWQtZXh0ZW5zaW9uCistLSBtZW1iZXJz aGlwLgorU0VUIFJPTEUgcmVncmVzc19leHRfcmVxb3duZXI7CitDUkVBVEUgRVhURU5TSU9O IHRlc3RfZXh0X292ZXJsb2FkX3JlcV9kZXAgU0NIRU1BIHRlc3RfcmVxZGVwOworUkVTRVQg Uk9MRTsKK1NFVCBST0xFIHJlZ3Jlc3NfZXh0X2F0dGFja2VyOworQ1JFQVRFIEZVTkNUSU9O IHRlc3RfcmVxLnJlcWNhbGwoaW50KSBSRVRVUk5TIHRleHQKKyAgICBBUyAkJCBTRUxFQ1Qg J2F0dGFja2VyJzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFOworQ1JFQVRFIEZV TkNUSU9OIHRlc3RfcmVxLnJlcWVxKGludCwgaW50KSBSRVRVUk5TIGJvb2xlYW4KKyAgICBB UyAkJCBTRUxFQ1QgZmFsc2UgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK0NSRUFURSBP UEVSQVRPUiB0ZXN0X3JlcS49PT0gKGxlZnRhcmcgPSBpbnRlZ2VyLCByaWdodGFyZyA9IGlu dGVnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHRlc3Rf cmVxLnJlcWVxKTsKKy0tIFJlc29sdmluZyB0byB0aGlzIGRvbWFpbiB3b3VsZCBydW4gcHdu KCkgd2l0aCB0aGUgc2NyaXB0J3MgcHJpdmlsZWdlcy4KK0NSRUFURSBGVU5DVElPTiB0ZXN0 X3JlcS5wd24odGV4dCkgUkVUVVJOUyBib29sZWFuCisgICAgQVMgJCQgQkVHSU4gUkFJU0Ug RVhDRVBUSU9OICdhdHRhY2tlciBjb2RlIGV4ZWN1dGVkJzsgRU5EICQkIExBTkdVQUdFIHBs cGdzcWw7CitDUkVBVEUgRE9NQUlOIHRlc3RfcmVxLnJlcWRvbSBBUyB0ZXh0IENIRUNLICh0 ZXN0X3JlcS5wd24oVkFMVUUpKTsKK0NSRUFURSBUQUJMRSB0ZXN0X3JlcS5yZXF0YWIodCB0 ZXh0KTsKK1JFU0VUIFJPTEU7CistLSBDYWNoZSBhIHJlc29sdXRpb24gbWFkZSBvdXRzaWRl IGFueSBzY3JpcHQsIHVuZGVyIHRoZSBzZWFyY2hfcGF0aCB0aGUKKy0tIHNjcmlwdCB3aWxs IHBpbjsgdGhhdCBwbGFuIG11c3Qgbm90IGJlIHJldXNlZCBpbnNpZGUgdGhlIHNjcmlwdC4K K1NFVCBzZWFyY2hfcGF0aCA9IHRlc3RfcmVxLCB0ZXN0X3JlcWRlcCwgcGdfdGVtcDsKK1NF TEVDVCB0ZXN0X3JlcWRlcC5yZXFwbHBnc3FsKCkgQVMgd2FybWVkX291dHNpZGVfc2NyaXB0 OworUkVTRVQgc2VhcmNoX3BhdGg7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJs b2FkX3JlcSBTQ0hFTUEgdGVzdF9yZXE7CistLSBFdmVyeSByZWZlcmVuY2UgcmVzb2x2ZWQg dG8gdGhlIHJlcXVpcmVkIGV4dGVuc2lvbidzIG9iamVjdHMgKGluCistLSB0ZXN0X3JlcWRl cCksIG5vdCB0aGUgcGxhbnRlZCBvbmVzIGluIHRlc3RfcmVxLgorU0VMRUNUIGMud2hvLCBj Lndob19jYWNoZWQsIG4ubnNwbmFtZSBBUyBkb21haW5fc2NoZW1hCisgIEZST00gdGVzdF9y ZXEuY2FwdHVyZWQgYworICBKT0lOIHBnX3R5cGUgdCBPTiB0Lm9pZCA9IGMuZG9tCisgIEpP SU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSB0LnR5cG5hbWVzcGFjZTsKK1NFTEVDVCBu Lm5zcG5hbWUgQVMgb3BlcmF0b3JfZnVuY19zY2hlbWEKKyAgRlJPTSBwZ19vcGVyYXRvciBv CisgIEpPSU4gcGdfcHJvYyBwIE9OIHAub2lkID0gby5vcHJjb2RlCisgIEpPSU4gcGdfbmFt ZXNwYWNlIG4gT04gbi5vaWQgPSBwLnByb25hbWVzcGFjZQorIFdIRVJFIG8ub3BybmFtZSA9 ICcjIyMnIEFORCBvLm9wcm5hbWVzcGFjZSA9ICd0ZXN0X3JlcSc6OnJlZ25hbWVzcGFjZTsK K1NFTEVDVCAndGVzdF9yZXFkZXAucmVxdGFiJyBBUyB0YmwsIGNvdW50KCopIEZST00gdGVz dF9yZXFkZXAucmVxdGFiCitVTklPTiBBTEwKK1NFTEVDVCAndGVzdF9yZXEucmVxdGFiJywg Y291bnQoKikgRlJPTSB0ZXN0X3JlcS5yZXF0YWI7CitTRUxFQ1Qgbi5uc3BuYW1lIEFTIG9w ZmFtaWx5X21lbWJlcl9zY2hlbWEKKyAgRlJPTSBwZ19hbW9wIGEKKyAgSk9JTiBwZ19vcGZh bWlseSBmIE9OIGYub2lkID0gYS5hbW9wZmFtaWx5CisgIEpPSU4gcGdfb3BlcmF0b3IgbyBP TiBvLm9pZCA9IGEuYW1vcG9wcgorICBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0g by5vcHJuYW1lc3BhY2UKKyBXSEVSRSBmLm9wZm5hbWUgPSAncmVxZmFtJzsKKy0tIE91dHNp ZGUgdGhlIHNjcmlwdCB0aGUgY2FjaGVkIHBsYW4gaXMgZ29vZCBhZ2Fpbi4KK1NFVCBzZWFy Y2hfcGF0aCA9IHRlc3RfcmVxLCB0ZXN0X3JlcWRlcCwgcGdfdGVtcDsKK1NFTEVDVCB0ZXN0 X3JlcWRlcC5yZXFwbHBnc3FsKCkgQVMgYWZ0ZXJfc2NyaXB0OworUkVTRVQgc2VhcmNoX3Bh dGg7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9yZXE7CitEUk9QIEVYVEVO U0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwOworRFJPUCBTQ0hFTUEgdGVzdF9yZXEg Q0FTQ0FERTsKK0RST1AgU0NIRU1BIHRlc3RfcmVxZGVwIENBU0NBREU7CitETyAkJCBCRUdJ TgorICAgIEVYRUNVVEUgZm9ybWF0KCdSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFICVJIEZS T00gcmVncmVzc19leHRfcmVxb3duZXInLAorICAgICAgICAgICAgICAgICAgIGN1cnJlbnRf ZGF0YWJhc2UoKSk7CitFTkQgJCQ7CitEUk9QIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXI7 CitEUk9QIFJPTEUgcmVncmVzc19leHRfcmVxb3duZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZC0tMS4wLnNxbCBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkLS0x LjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42M2U2MGEx ZTgxNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X292ZXJsb2FkLS0xLjAuc3FsCkBAIC0wLDAgKzEsMTkgQEAKKy8qIHNy Yy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkLS0xLjAu c3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJh dGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRF TlNJT04gdGVzdF9leHRfb3ZlcmxvYWQiIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCist LSBmKCkgYW5kICMjIyB0YWtlIHZhcmNoYXIuICBSZXNvbHZpbmcgZignYWJjJykgZHVyaW5n IHRoaXMgc2NyaXB0IG11c3QKKy0tIHJlYWNoIHRoZW0sIG5vdCBhIHBsYW50ZWQgZih0ZXh0 KSBzaWJsaW5nLgorQ1JFQVRFIEZVTkNUSU9OIEBleHRzY2hlbWFALmYodmFyY2hhcikgUkVU VVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdleHRlbnNpb24nOjp0ZXh0ICQkIExBTkdV QUdFIHNxbCBJTU1VVEFCTEU7CisKK0NSRUFURSBGVU5DVElPTiBAZXh0c2NoZW1hQC5vcGlt cGwodmFyY2hhciwgdmFyY2hhcikgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdl eHRlbnNpb24nOjp0ZXh0ICQkIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CisKK0NSRUFURSBP UEVSQVRPUiBAZXh0c2NoZW1hQC4jIyMgKGxlZnRhcmcgPSB2YXJjaGFyLCByaWdodGFyZyA9 IHZhcmNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9 IEBleHRzY2hlbWFALm9waW1wbCk7CisKK0NSRUFURSBUQUJMRSBAZXh0c2NoZW1hQC5jYXB0 dXJlZCBBUworICAgIFNFTEVDVCBAZXh0c2NoZW1hQC5mKCdhYmMnKSBBUyBmbiwKKyAgICAg ICAgICAgKCdhJyBPUEVSQVRPUihAZXh0c2NoZW1hQC4jIyMpICdiJykgQVMgb3A7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVy bG9hZC5jb250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9l eHRfb3ZlcmxvYWQuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZWZhZWYxY2I1NTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZC5jb250cm9sCkBAIC0wLDAgKzEs MyBAQAorY29tbWVudCA9ICdUZXN0IHByb3RlY3Rpb24gYWdhaW5zdCBvdmVybG9hZCBjYXB0 dXJlIGR1cmluZyBleHRlbnNpb24gc2NyaXB0cycKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAn CityZWxvY2F0YWJsZSA9IGZhbHNlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLS0xLjAtLTIuMC5zcWwg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9u b3N1cGVyLS0xLjAtLTIuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmY2M2NmY2MwMmE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLS0yLjAu c3FsCkBAIC0wLDAgKzEsOSBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lv bnMvdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLS0yLjAuc3FsICovCisKKy0tIGNv bXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBB TFRFUiBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X292 ZXJsb2FkX25vc3VwZXIgVVBEQVRFIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0g ZygpIGJlbG9uZ3MgdG8gdGhpcyBleHRlbnNpb24gYnV0IGlzIG93bmVkIGJ5IHRoZSBub24t c3VwZXJ1c2VyIHdobworLS0gaW5zdGFsbGVkIDEuMCwgc28gYW4gdXBkYXRlIHJ1biBieSBh bnkgb3RoZXIgcm9sZSByZWFjaGVzIGl0IG9ubHkgYnkKKy0tIGV4dGVuc2lvbiBtZW1iZXJz aGlwLgorQ1JFQVRFIFRBQkxFIEBleHRzY2hlbWFALnVwZGF0ZWQgQVMgU0VMRUNUIGcoJ2Fi YycpIEFTIGZuOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lv bnMvdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX25vc3VwZXItLTEuMC5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMzZTkzMTEwODI1Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVz dF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLnNxbApAQCAtMCwwICsxLDEyIEBACisvKiBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9ub3N1 cGVyLS0xLjAuc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGlu IHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNS RUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlciIgdG8gbG9hZCB0aGlz IGZpbGUuIFxxdWl0CisKKy0tIFRoZSBzY3JpcHQgcnVucyBhcyB0aGUgaW52b2tpbmcgbm9u LXN1cGVydXNlciwgc28gZygpIGlzIG93bmVkIGJ5IHRoYXQKKy0tIHJvbGUuICBnKCdhYmMn KSBtdXN0IHN0aWxsIHJlc29sdmUgdG8gaXQsIG5vdCB0byBhIHBsYW50ZWQgZyh0ZXh0KS4K K0NSRUFURSBGVU5DVElPTiBAZXh0c2NoZW1hQC5nKHZhcmNoYXIpIFJFVFVSTlMgdGV4dAor ICAgIEFTICQkIFNFTEVDVCAnZXh0ZW5zaW9uJzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1N VVRBQkxFOworCitDUkVBVEUgVEFCTEUgQGV4dHNjaGVtYUAuY2FwdHVyZWRfbm9zdXBlciBB UworICAgIFNFTEVDVCBAZXh0c2NoZW1hQC5nKCdhYmMnKSBBUyBmbjsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX25v c3VwZXIuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3Rf ZXh0X292ZXJsb2FkX25vc3VwZXIuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZWI3NDgwODllNzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLmNv bnRyb2wKQEAgLTAsMCArMSw0IEBACitjb21tZW50ID0gJ1Rlc3Qgb3ZlcmxvYWQtY2FwdHVy ZSBwcm90ZWN0aW9uIGZvciBhIHN1cGVydXNlciA9IGZhbHNlIGV4dGVuc2lvbicKK2RlZmF1 bHRfdmVyc2lvbiA9ICcxLjAnCityZWxvY2F0YWJsZSA9IGZhbHNlCitzdXBlcnVzZXIgPSBm YWxzZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVz dF9leHRfb3ZlcmxvYWRfcGFyYWxsZWwtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbC0tMS4wLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTRhNDZiY2E1OTAKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4 dF9vdmVybG9hZF9wYXJhbGxlbC0tMS4wLnNxbApAQCAtMCwwICsxLDE1IEBACisvKiBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxl bC0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBw c3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVB VEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3BhcmFsbGVsIiB0byBsb2FkIHRoaXMg ZmlsZS4gXHF1aXQKKworLS0gd3JhcCgpIGlzIHBhcmFsbGVsIHNhZmUgYW5kIGl0cyBib2R5 IGlzIHBhcnNlZCBhdCBydW4gdGltZSwgc28gdW5kZXIKKy0tIGRlYnVnX3BhcmFsbGVsX3F1 ZXJ5IHRoZSB3b3JrZXIgcmVzb2x2ZXMgcHJvYmUoJ3gnKS4gIEl0IG11c3QgcmVhY2gKKy0t IHByb2JlKHZhcmNoYXIpLCBub3QgYSBwbGFudGVkIHByb2JlKHRleHQpLgorQ1JFQVRFIEZV TkNUSU9OIEBleHRzY2hlbWFALnByb2JlKHZhcmNoYXIpIFJFVFVSTlMgdGV4dAorICAgIEFT ICQkIFNFTEVDVCAnZXh0ZW5zaW9uJzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxF IFBBUkFMTEVMIFNBRkU7CisKK0NSRUFURSBGVU5DVElPTiBAZXh0c2NoZW1hQC53cmFwKCkg UkVUVVJOUyB0ZXh0CisgICAgTEFOR1VBR0UgcGxwZ3NxbCBQQVJBTExFTCBTQUZFIEFTICQk IEJFR0lOIFJFVFVSTiBwcm9iZSgneCcpOyBFTkQgJCQ7CisKK0NSRUFURSBUQUJMRSBAZXh0 c2NoZW1hQC5jYXB0dXJlZCBBUyBTRUxFQ1QgQGV4dHNjaGVtYUAud3JhcCgpIEFTIHdobzsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0 X292ZXJsb2FkX3BhcmFsbGVsLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbC5jb250cm9sCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYTNjYmFlMjE2MgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJs b2FkX3BhcmFsbGVsLmNvbnRyb2wKQEAgLTAsMCArMSwzIEBACitjb21tZW50ID0gJ1Rlc3Qg b3ZlcmxvYWQtY2FwdHVyZSBwcm90ZWN0aW9uIHdoZW4gcmVzb2x1dGlvbiBydW5zIGluIGEg cGFyYWxsZWwgd29ya2VyJworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK3JlbG9jYXRhYmxl ID0gZmFsc2UKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25z L3Rlc3RfZXh0X292ZXJsb2FkX3JlcS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3JlcS0tMS4wLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmU3ZDgyYTBlMzQKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVy bG9hZF9yZXEtLTEuMC5zcWwKQEAgLTAsMCArMSwyMCBAQAorLyogc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfcmVxLS0xLjAuc3FsICovCisK Ky0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFu IHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gdGVz dF9leHRfb3ZlcmxvYWRfcmVxIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0gRXZl cnkgcmVmZXJlbmNlIGJlbG93IGlzIHRvIGEgcmVxdWlyZWQgZXh0ZW5zaW9uJ3Mgb2JqZWN0 LiAgQSBzYW1lLW5hbWVkCistLSBwbGFudCBpbiBAZXh0c2NoZW1hQCBtdXN0IG5vdCBjYXB0 dXJlIGFueSBvZiB0aGVtLgorQ1JFQVRFIFRBQkxFIEBleHRzY2hlbWFALmNhcHR1cmVkIEFT CisgICAgU0VMRUNUIHJlcWNhbGwoMSkgQVMgd2hvLAorICAgICAgICAgICByZXFwbHBnc3Fs KCkgQVMgd2hvX2NhY2hlZCwKKyAgICAgICAgICAgcGdfY2F0YWxvZy5wZ190eXBlb2YoJ2Fi Yyc6OnJlcWRvbSkgQVMgZG9tOworCitJTlNFUlQgSU5UTyByZXF0YWIgVkFMVUVTICgnZnJv bSBzY3JpcHQnKTsKKworQ1JFQVRFIE9QRVJBVE9SIEBleHRzY2hlbWFALiMjIyAobGVmdGFy ZyA9IGludGVnZXIsIHJpZ2h0YXJnID0gaW50ZWdlciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZ1bmN0aW9uID0gcmVxZXEpOworCitDUkVBVEUgT1BFUkFUT1IgRkFN SUxZIEBleHRzY2hlbWFALnJlcWZhbSBVU0lORyBidHJlZTsKK0FMVEVSIE9QRVJBVE9SIEZB TUlMWSBAZXh0c2NoZW1hQC5yZXFmYW0gVVNJTkcgYnRyZWUgQURECisgICAgT1BFUkFUT1Ig MyA9PT0gKGludGVnZXIsIGludGVnZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfcmVxLmNvbnRyb2wgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9yZXEuY29u dHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTQ3NTU2ZGIy MzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy90ZXN0X2V4dF9vdmVybG9hZF9yZXEuY29udHJvbApAQCAtMCwwICsxLDQgQEAKK2NvbW1l bnQgPSAnZXh0ZW5zaW9uIHdob3NlIHNjcmlwdCByZWZlcmVuY2VzIGEgcmVxdWlyZWQgZXh0 ZW5zaW9uJydzIG9iamVjdHMnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworcmVsb2NhdGFi bGUgPSBmYWxzZQorcmVxdWlyZXMgPSAndGVzdF9leHRfb3ZlcmxvYWRfcmVxX2RlcCcKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292 ZXJsb2FkX3JlcV9kZXAtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy90ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iZTQyNTUzYTg2ZAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2Fk X3JlcV9kZXAtLTEuMC5zcWwKQEAgLTAsMCArMSwyMyBAQAorLyogc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfcmVxX2RlcC0tMS4wLnNxbCAq LworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIg dGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9O IHRlc3RfZXh0X292ZXJsb2FkX3JlcV9kZXAiIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAor CistLSBPYmplY3RzIHRoZSBkZXBlbmRlbnQgZXh0ZW5zaW9uJ3Mgc2NyaXB0IHJlZmVyZW5j ZXMgYnkgdW5xdWFsaWZpZWQgbmFtZS4KK0NSRUFURSBGVU5DVElPTiBAZXh0c2NoZW1hQC5y ZXFjYWxsKGludCkgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdyZXF1aXJlZCc6 OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKKworQ1JFQVRFIEZVTkNUSU9OIEBl eHRzY2hlbWFALnJlcWVxKGludCwgaW50KSBSRVRVUk5TIGJvb2xlYW4KKyAgICBBUyAkJCBT RUxFQ1QgdHJ1ZSAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFOworCitDUkVBVEUgRE9NQUlO IEBleHRzY2hlbWFALnJlcWRvbSBBUyB0ZXh0OworCitDUkVBVEUgVEFCTEUgQGV4dHNjaGVt YUAucmVxdGFiKHQgdGV4dCk7CisKKy0tIFBhcnNlZCBhdCBydW4gdGltZSwgc28gYSBjYWxs IGJlZm9yZSB0aGUgZGVwZW5kZW50IHNjcmlwdCBjYWNoZXMgYQorLS0gcmVzb2x1dGlvbiBt YWRlIHdpdGhvdXQgdHJ1c3QgY2hlY2tzLgorQ1JFQVRFIEZVTkNUSU9OIEBleHRzY2hlbWFA LnJlcXBscGdzcWwoKSBSRVRVUk5TIHRleHQKKyAgICBMQU5HVUFHRSBwbHBnc3FsIEFTICQk IEJFR0lOIFJFVFVSTiByZXFjYWxsKDEpOyBFTkQgJCQ7CisKK0NSRUFURSBPUEVSQVRPUiBA ZXh0c2NoZW1hQC49PT0gKGxlZnRhcmcgPSBpbnRlZ2VyLCByaWdodGFyZyA9IGludGVnZXIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IEBleHRzY2hl bWFALnJlcWVxKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X292ZXJsb2FkX3JlcV9kZXAuY29udHJvbCBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3JlcV9kZXAuY29udHJvbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjZkZmI1ZmE4NzQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0 X2V4dF9vdmVybG9hZF9yZXFfZGVwLmNvbnRyb2wKQEAgLTAsMCArMSw0IEBACitjb21tZW50 ID0gJ3JlcXVpcmVkIGV4dGVuc2lvbiBwcm92aWRpbmcgb2JqZWN0cyBmb3IgdGhlIG92ZXJs b2FkLWNhcHR1cmUgdGVzdCcKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCityZWxvY2F0YWJs ZSA9IGZhbHNlCitzdXBlcnVzZXIgPSBmYWxzZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0xLjAuc3Fs IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRf c3RyaWN0LS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4xM2I0YTg5ODJhYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMS4wLnNxbApAQCAtMCww ICsxLDkgQEAKKy8qIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0 X292ZXJsb2FkX3N0cmljdC0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQg aXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgor XGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdCIg dG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0tIGhlbHBlcl9vbmx5KCkgZXhpc3RzIG9u bHkgYXMgYSBwbGFudGVkIGRlZmluaXRpb24sIHNvIHRoZSBzY3JpcHQgbXVzdAorLS0gZmFp bCB3aXRoICJmdW5jdGlvbiBkb2VzIG5vdCBleGlzdCIuCitDUkVBVEUgVEFCTEUgQGV4dHNj aGVtYUAuY2FwdHVyZWQgQVMKKyAgICBTRUxFQ1QgQGV4dHNjaGVtYUAuaGVscGVyX29ubHko J2FiYycpIEFTIHI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTIuMC5zcWwgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTIuMC5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY4MGIyZDAwYzI1Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVz dF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0yLjAuc3FsCkBAIC0wLDAgKzEsOSBAQAorLyogc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0 LS0yLjAuc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBz cWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFU RSBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0IiB0byBsb2FkIHRoaXMgZmls ZS4gXHF1aXQKKworLS0gQXMgZm9yIGhlbHBlcl9vbmx5KCkgaW4gMS4wLCBidXQgZm9yIGFu IG9wZXJhdG9yOiB0aGUgb25seSBkZWZpbml0aW9uIG9mCistLSBAQEAgaXMgb25lIGFuIHVu cHJpdmlsZWdlZCB1c2VyIHBsYW50ZWQsIHNvIHRoZSBzY3JpcHQgbXVzdCByZWZ1c2UgaXQu CitDUkVBVEUgVEFCTEUgQGV4dHNjaGVtYUAuY2FwdHVyZWQgQVMKKyAgICBTRUxFQ1QgKCdh JyBPUEVSQVRPUihAZXh0c2NoZW1hQC5AQEApICdiJykgQVMgcjsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmlj dC0tMy4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0 X292ZXJsb2FkX3N0cmljdC0tMy4wLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZWRkMDEzNDQyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTMuMC5z cWwKQEAgLTAsMCArMSwxMCBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lv bnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0zLjAuc3FsICovCisKKy0tIGNvbXBsYWlu IGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUg RVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3Zlcmxv YWRfc3RyaWN0IiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0gVGhlIG9ubHkgPDw8 ICh2YXJjaGFyLCB2YXJjaGFyKSBpcyBhIHBsYW50OyBuYW1pbmcgaXQgYXMgQ09NTVVUQVRP UiBtdXN0CistLSBmYWlsIGFzICJkb2VzIG5vdCBleGlzdCIsIG5vdCBjb2xsaWRlIHdpdGgg aXQgd2hlbiBtYWtpbmcgYSBzaGVsbC4KK0NSRUFURSBPUEVSQVRPUiBAZXh0c2NoZW1hQC4+ Pj4gKGxlZnRhcmcgPSB2YXJjaGFyLCByaWdodGFyZyA9IHZhcmNoYXIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IEBleHRzY2hlbWFALm9waW1wbCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW11dGF0b3IgPSA8PDwpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRf b3ZlcmxvYWRfc3RyaWN0LS00LjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVu c2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS00LjAuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41YjdhMjZkYjg1MQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2Fk X3N0cmljdC0tNC4wLnNxbApAQCAtMCwwICsxLDkgQEAKKy8qIHNyYy90ZXN0L21vZHVsZXMv dGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNC4wLnNxbCAqLwor CistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhh biB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRl c3RfZXh0X292ZXJsb2FkX3N0cmljdCIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0t IFRydXN0ZWQgZih2YXJjaGFyKSBhbmQgcGxhbnRlZCBmKHRleHQpIGFyZSB2aXNpYmxlOyBm KDEpIG1hdGNoZXMgbmVpdGhlciwKKy0tIHNvIHRoZSBlcnJvciBpcyBhYm91dCB0aGUgYXJn dW1lbnQgdHlwZXMuCitDUkVBVEUgVEFCTEUgQGV4dHNjaGVtYUAuY2FwdHVyZWQgQVMKKyAg ICBTRUxFQ1QgQGV4dHNjaGVtYUAuZigxKSBBUyByOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS01LjAu c3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3Zlcmxv YWRfc3RyaWN0LS01LjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4xZWYzMTE1ZWIxYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNS4wLnNxbApAQCAt MCwwICsxLDggQEAKKy8qIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3Rf ZXh0X292ZXJsb2FkX3N0cmljdC0tNS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3Jp cHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lP TgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0cmlj dCIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0tIEFzIGluIDQuMCwgZm9yIGFuIG9w ZXJhdG9yOiBpbnRlZ2VyIG9wZXJhbmRzIG1hdGNoIG5laXRoZXIgIyMjLgorQ1JFQVRFIFRB QkxFIEBleHRzY2hlbWFALmNhcHR1cmVkIEFTCisgICAgU0VMRUNUICgxIE9QRVJBVE9SKEBl eHRzY2hlbWFALiMjIykgMikgQVMgcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNi4wLnNxbCBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmlj dC0tNi4wLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTk1 ZTZkMGU0MjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTYuMC5zcWwKQEAgLTAsMCArMSw4 IEBACisvKiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVy bG9hZF9zdHJpY3QtLTYuMC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNv dXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hv IFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QiIHRvIGxv YWQgdGhpcyBmaWxlLiBccXVpdAorCistLSBUaGUgb25seSAmJiYgaXMgb3V0c2lkZSB0aGUg c2VhcmNoIHBhdGg7IHJlcG9ydCB0aGF0LCBub3QgdHJ1c3QuCitDUkVBVEUgVEFCTEUgQGV4 dHNjaGVtYUAuY2FwdHVyZWQgQVMKKyAgICBTRUxFQ1QgKCdhJyAmJiYgJ2InKSBBUyByOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRf b3ZlcmxvYWRfc3RyaWN0LmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QuY29udHJvbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDUzNzY4N2M5MWYKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9z dHJpY3QuY29udHJvbApAQCAtMCwwICsxLDMgQEAKK2NvbW1lbnQgPSAnVGVzdCByZWZ1c2Fs IHRvIGNhbGwgYW4gdW50cnVzdGVkIGZ1bmN0aW9uIGR1cmluZyBleHRlbnNpb24gc2NyaXB0 cycKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCityZWxvY2F0YWJsZSA9IGZhbHNlCi0tIAoy LjQ3LjMKCg== --------------o5gDsuwb0UNO3B9LN0bTQv7o--