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 1vJmgt-002SSb-3B for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Nov 2025 05:49:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vJmgr-004Yne-1c for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Nov 2025 05:49:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vJmgq-004YnK-2b for pgsql-hackers@lists.postgresql.org; Fri, 14 Nov 2025 05:49:45 +0000 Received: from mail-il1-x129.google.com ([2607:f8b0:4864:20::129]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vJmgk-007fFx-2U for pgsql-hackers@lists.postgresql.org; Fri, 14 Nov 2025 05:49:44 +0000 Received: by mail-il1-x129.google.com with SMTP id e9e14a558f8ab-4332381ba9bso16590945ab.1 for ; Thu, 13 Nov 2025 21:49:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763099376; x=1763704176; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=HVxQ5+tcK5rD/ok5TnrtKaj7YQ3M7hzfJ0nMqf6uBcM=; b=XtSX7sWvvZZ31noEPwpJf7BcCm6pCciFIYQCphgoF3hbkydykkSVU27ZXH/zNrAViM ZPP722gkHO/tqugR4Fatv6CLu8uh1CVNxhRuOhDik+OEGFb0rsUhlRbXCdwRDK8PulQA 1r5Cvo9gKtxrlFuyK/lLkO4jWPq0cghqO5M8FyHu7/tO/nJiqcYHzEDUjUZqKGffv+u9 dBLYwneNgahgmv58+FkqqyZs6cwnVlVjGNeABPg31J6mZu/22i2kCBBuDbEZgIYJ8GTQ 1fH8PHVsyvUMPheYy+jMWbNtnMBdPva0gM2ncjVG9tKDNrFV3jRDLXi8rNXAIoi1HA3z T44Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763099376; x=1763704176; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=HVxQ5+tcK5rD/ok5TnrtKaj7YQ3M7hzfJ0nMqf6uBcM=; b=i6i7VKD6F8xNvuXAQ9e4Bh7OnH5VUn79BGR4dTUqrbySYqXSi0Ao17vtNwYoklbQHK uB52YEYPRdFCUuXX7PKts/F0ZrCJGx4Y1eXf0R6GEz8m1iuFcORv1gzERLS82dJqkFcW RlOVR5ikL4YMwd3GlrwJlsCjegj8ZlWyOkwBHsp0FXR4vPYCTjmPy7rS6QzfDF4nNgCo Tw2hVlXClCxqW7g/sVWVarlO8johXNCD326r2RjKH22LsYK8D40mRtzO2UCn/jis0oW2 dZIkEBDG+7oqWqGMYEHCt1CWt49PQuM3f4uxv8Hsm9K7RstCHnMbywK0mXw8SXh+pAYK t27A== X-Forwarded-Encrypted: i=1; AJvYcCW5qh2a+g+H2GQhqH2vba+0/7FbHuzzoQ8TWDB1ExSv3zpPFj/FfdwwQzrTcZmsSkVFr09WVkFPTL4Kov/o@lists.postgresql.org X-Gm-Message-State: AOJu0Yxp5+8Yo5Fq0tfD7HmasOPHJ2D/59534tfJXX5RF4wkBso7kJeg VGzbJd9EqAWohJri6jrUy1WSrvXgeq3Eh2uNI8EbyxCz3+B4ITDrEdqJdlHlgqxGHOdNA3+EDIA sCSYcjBkO7xxJB2htjWBMEixZfMNOXv4= X-Gm-Gg: ASbGncvBnAWKvq1t0NaaKLhtv4+QhRqFwOtey0CTf2ByWQznv4Sm0ywSmKCId1/OYIu 7AGKqkcbRxQ2DcLJY7gvjIlJ+apDfhv6LqZnATjjF2L+uCUNMd+LRWkusL1ppw6D+oIc3hGl1W5 /Y2ZksEfKLpL98USek+TQLDFV0kayn61TgX5fze2y6fmlbOn+gyYl+qaISnCvJ55kUaKpShSrqo F/cz0pdjo9NpIiisrgzO68fA5Ss+fqAAesdV3cPEWD2ppsOMxCn6STUWl6NeVitx7vS4WchHWf2 KUgLRJXttndvXXC381aJNRAgpno= X-Google-Smtp-Source: AGHT+IEciq+l4iguGOOj2lpkhHkJdtwHQlurFboTNiFVanHXZS0cuwb1qs0dl/WqkEmDHO2dTcooXbWjT6LjuMIrsZA= X-Received: by 2002:a05:6e02:19c6:b0:433:5e33:d424 with SMTP id e9e14a558f8ab-4348c86b20amr33321465ab.2.1763099376444; Thu, 13 Nov 2025 21:49:36 -0800 (PST) MIME-Version: 1.0 References: <439a9947-e6a1-4ea9-84d8-1f843deaf6b1@vondra.me> In-Reply-To: From: Corey Huinker Date: Fri, 14 Nov 2025 00:49:23 -0500 X-Gm-Features: AWmQ_blJV-51ZdyqYdpj63IJ9Z7yJ1A8DISRf4V2QaXVkZBzc6Tfe9_h67GAHLY Message-ID: Subject: Re: Extended Statistics set/restore/clear functions. To: jian he Cc: Michael Paquier , Tomas Vondra , pgsql-hackers@lists.postgresql.org, tgl@sss.pgh.pa.us Content-Type: multipart/mixed; boundary="00000000000009c16c0643879075" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000009c16c0643879075 Content-Type: multipart/alternative; boundary="00000000000009c16a0643879073" --00000000000009c16a0643879073 Content-Type: text/plain; charset="UTF-8" > > extenssted statistics surely won't work on system columns, > how should we deal with case like: > ``` > {"attributes": [6, -1], "ndistinct": 14} > {"attributes": [6, -7], "ndistinct": 14}, > ``` > issue a warning or error out saying that your attribute number is invalid? > Should we discourage using system columns as examples in comments here? > Negative numbers represent the Nth expression defined in the extended statistics object. So if you have extended statistics on a, b, length(a), length(b) then you can legally have -1 and -2 in the attributes, but nothing lower than that. See functions pg_ndistinct_validate_items() and pg_depdendencies_validate_deps() as these check the attributes in the value against the definition of the extended stats object. Though this does bring up a small naming problem: Elements of a pg_dependencies are Dependency, abbreviated to dep, but are also called Items like the elements in a pg_ndistinct. We should pick a standard name for such things (probably item) and use it everywhere. > > I have added more test code in src/test/regress/sql/pg_ndistinct.sql, > to improve the code coverage. > I'm trying to implement those test cases, but I may have missed some. > > > this (and many other places) looks wrong, because > ereturn would really return ``(Datum) 0``, and this function returns > JsonParseErrorType. > so we have to errsave here. > Good point. Implemented. > > NDistinctParseState.ndistinct should be integer, > otherwise pg_ndistinct_out will not be consistent with pg_ndistinct_in? > +1 Implemented many, but not all of these suggestions. --00000000000009c16a0643879073 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
extenssted statistics surely won&#= 39;t work on system columns,
how should we deal with case like:
```
{"attributes": [6, -1], "ndistinct": 14}
{"attributes": [6, -7], "ndistinct": 14},
```
issue a warning or error out saying that your attribute number is invalid?<= br> Should we discourage using system columns as examples in comments here?
=

Negative numbers represent the Nth express= ion defined in the extended statistics object. So if you have extended stat= istics on a, b, length(a), length(b) then you can legally have -1 and -2 in= the attributes, but nothing lower than that.
See functions pg_nd= istinct_validate_items() and pg_depdendencies_validate_deps() as these chec= k=C2=A0the attributes in the value against the definition of the extended s= tats object.

Though this does bring up a small nam= ing problem: Elements of a pg_dependencies are Dependency, abbreviated to d= ep, but are also called Items like the elements in a pg_ndistinct. We shoul= d pick a standard name for such things (probably item) and use it everywher= e.
=C2=A0

I have added more test code in src/test/regress/sql/pg_ndistinct.sql,
to improve the code coverage.

I'm t= rying to implement those test cases, but I may have missed some.
= =C2=A0


this (and many other places) looks wrong, because
ereturn would really return ``(Datum) 0``, and this function returns
JsonParseErrorType.
so we have to errsave here.

Good point.= Implemented.

=C2=A0

NDistinctParseState.ndistinct should be integer,
otherwise pg_ndistinct_out will not be consistent with=C2=A0 pg_ndistinct_i= n?

+1=C2=A0=C2=A0

Implemented many, but not all of these= suggestions.



--00000000000009c16a0643879073-- --00000000000009c16c0643879075 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0001-Refactor-output-format-of-pg_ndistinct.patch" Content-Disposition: attachment; filename="v13-0001-Refactor-output-format-of-pg_ndistinct.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhyfthx30 RnJvbSBjMTk2N2M0NTUyOTk3Mjg4ZjQzNDJhZjhlZDAyMTVkOTY3ZWE4YzY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWllci54eXo+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMTQ6MDU6NDkgKzA5MDAKU3ViamVjdDogW1BBVENIIHYx MyAxLzddIFJlZmFjdG9yIG91dHB1dCBmb3JtYXQgb2YgcGdfbmRpc3RpbmN0LgoKVGhlIGV4aXN0 aW5nIGZvcm1hdCBvZiBwZ19uZGlzdGluY3QgdXNlcyBhIHNpbmdsZS1vYmplY3QgSlNPTiBzdHJ1 Y3R1cmUKd2hlcmUgZWFjaCBrZXkgaXMgaXRzZWxmIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Yg YXR0bnVtcy4gV2hpbGUgdGhpcwppcyBhIHZlcnkgY29tcGFjdCBmb3JtYXQsIGl0J3MgY29uZnVz aW5nIHRvIHJlYWQgYW5kIGlzIGRpZmZpY3VsdCB0bwptYW5pcHVsYXRlIHZhbHVlcyB3aXRoaW4g dGhlIG9iamVjdC4gVGhpcyB3YXNuJ3QgYSBjb25jZXJuIHVudGlsCnN0YXRpc3RpY3MgaW1wb3J0 IGZ1bmN0aW9ucyB3ZXJlIGludHJvZHVjZWQsIGVuYWJsaW5nIHVzZXJzIHRvIGluamVjdApoeXBv dGhldGljYWwgc3RhdGlzdGljcyBpbnRvIGFuIG9iamVjdCB0byBvYnNlcnZlIHRoZWlyIGVmZmVj dCBvbiB0aGUKcXVlcnkgcGxhbm5lci4KClRoZSBuZXcgZm9ybWF0IGlzIGFuIGFycmF5IG9mIG9i amVjdHMsIGVhY2ggb2JqZWN0IG11c3QgaGF2ZSB0aGUga2V5cwoiYXR0cmlidXRlcyIsIHdoaWNo IG11c3QgY29udGFpbiBhbiBhcnJheSBvZiBhdHRudW1zLCBhbmQgIm5kaXN0aW5jdCIsCndoaWNo IG11c3QgYmUgYW4gaW50ZWdlci4gVGhpcyBpcyBhIHF1aXJrIGJlY2F1c2UgdGhlIHVuZGVybHlp bmcKaW50ZXJuYWwgc3RvcmFnZSBpcyBhIGRvdWJsZSwgYnV0IHRoZSB2YWx1ZSBzdG9yZWQgd2Fz IGFsd2F5cyBhbgppbnRlZ2VyLgoKVGhlIGNoYW5nZSBpbiBmb3JtYXQgaXMgZGVzY3JpYmVkIGZy b20gdGhlIGNoYW5nZXMgdG8Kc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0 LgotLS0KIHNyYy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3RhdGlzdGljc19mb3JtYXQuaCB8ICAzMCAr KysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbmRpc3RpbmN0LmMgICAgICAgfCAgMjIgKy0t CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgICAgfCAxNTYgKysrKysr KysrKysrKysrKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsICAgICAg ICAgfCAgMTIgKy0KIGRvYy9zcmMvc2dtbC9wZXJmb3JtLnNnbWwgICAgICAgICAgICAgICAgICB8 ICAzNiArKysrLQogNSBmaWxlcyBjaGFuZ2VkLCAyMjAgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0 aWNzX2Zvcm1hdC5oCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0 aWNzX2Zvcm1hdC5oIGIvc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0aWNzX2Zvcm1hdC5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYTk3YzA4ODBiZQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3RhdGlzdGljc19mb3JtYXQu aApAQCAtMCwwICsxLDMwIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzdGF0aXN0aWNz X2Zvcm1hdC5oCisgKgkgIERhdGEgcmVsYXRlZCB0byB0aGUgZm9ybWF0IG9mIGV4dGVuZGVkIHN0 YXRpc3RpY3MsIHVzYWJsZSBieSBib3RoCisgKgkgIGZyb250ZW5kIGFuZCBiYWNrZW5kIGNvZGUu CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjUsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRl L3N0YXRpc3RpY3Mvc3RhdGlzdGljc19mb3JtYXQuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisjaWZuZGVmIFNUQVRJU1RJQ1NfRk9STUFUX0gKKyNkZWZpbmUgU1RBVElTVElDU19GT1JN QVRfSAorCisvKiAtLS0tLS0tLS0tCisgKiBwZ19uZGlzdGluY3QgaW4gaHVtYW4tcmVhZGFibGUg Zm9ybWF0IGlzIGEgSlNPTiBhcnJheSBtYWRlIG9mIGVsZW1lbnRzIHdpdGgKKyAqIGEgcHJlZGVm aW5lZCBzZXQgb2Yga2V5cywgbGlrZToKKyAqCisgKiBbeyJuZGlzdGluY3QiOiAxMSwgImF0dHJp YnV0ZXMiOiBbMyw0XX0sCisgKiAgeyJuZGlzdGluY3QiOiAxMSwgImF0dHJpYnV0ZXMiOiBbMyw2 XX0sCisgKiAgeyJuZGlzdGluY3QiOiAxMSwgImF0dHJpYnV0ZXMiOiBbNCw2XX0sCisgKiAgeyJu ZGlzdGluY3QiOiAxMSwgImF0dHJpYnV0ZXMiOiBbMyw0LDZdfV0KKyAqIC0tLS0tLS0tLS0KKyAq LworI2RlZmluZSBQR19ORElTVElOQ1RfS0VZX0FUVFJJQlVURVMJImF0dHJpYnV0ZXMiCisjZGVm aW5lIFBHX05ESVNUSU5DVF9LRVlfTkRJU1RJTkNUCSJuZGlzdGluY3QiCisKKyNlbmRpZgkJCQkJ CQkvKiBTVEFUSVNUSUNTX0ZPUk1BVF9IICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcGdfbmRpc3RpbmN0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbmRpc3RpbmN0 LmMKaW5kZXggNjY3YWRhOWMzYjQuLjk3ZWZjMjkwZWY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdfbmRpc3RpbmN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn X25kaXN0aW5jdC5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJsaWIvc3RyaW5naW5m by5oIgogI2luY2x1ZGUgInN0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaCIKKyNp bmNsdWRlICJzdGF0aXN0aWNzL3N0YXRpc3RpY3NfZm9ybWF0LmgiCiAjaW5jbHVkZSAidXRpbHMv Zm1ncnByb3Rvcy5oIgogCiAKQEAgLTUxLDI2ICs1MiwyOSBAQCBwZ19uZGlzdGluY3Rfb3V0KFBH X0ZVTkNUSU9OX0FSR1MpCiAJU3RyaW5nSW5mb0RhdGEgc3RyOwogCiAJaW5pdFN0cmluZ0luZm8o JnN0cik7Ci0JYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnN0ciwgJ3snKTsKKwlhcHBlbmRTdHJpbmdJ bmZvQ2hhcigmc3RyLCAnWycpOwogCiAJZm9yIChpID0gMDsgaSA8IG5kaXN0LT5uaXRlbXM7IGkr KykKIAl7Ci0JCWludAkJCWo7CiAJCU1WTkRpc3RpbmN0SXRlbSBpdGVtID0gbmRpc3QtPml0ZW1z W2ldOwogCiAJCWlmIChpID4gMCkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnN0ciwgIiwg Iik7CiAKLQkJZm9yIChqID0gMDsgaiA8IGl0ZW0ubmF0dHJpYnV0ZXM7IGorKykKLQkJewotCQkJ QXR0ck51bWJlcglhdHRudW0gPSBpdGVtLmF0dHJpYnV0ZXNbal07CisJCWlmIChpdGVtLm5hdHRy aWJ1dGVzIDw9IDApCisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCB6ZXJvLWxlbmd0aCBhdHRyaWJ1 dGUgYXJyYXkgaW4gTVZORGlzdGluY3QiKTsKIAotCQkJYXBwZW5kU3RyaW5nSW5mbygmc3RyLCAi JXMlZCIsIChqID09IDApID8gIlwiIiA6ICIsICIsIGF0dG51bSk7Ci0JCX0KLQkJYXBwZW5kU3Ry aW5nSW5mbygmc3RyLCAiXCI6ICVkIiwgKGludCkgaXRlbS5uZGlzdGluY3QpOworCQlhcHBlbmRT dHJpbmdJbmZvKCZzdHIsICJ7XCIiIFBHX05ESVNUSU5DVF9LRVlfQVRUUklCVVRFUyAiXCI6IFsl ZCIsCisJCQkJCQkgaXRlbS5hdHRyaWJ1dGVzWzBdKTsKKworCQlmb3IgKGludCBqID0gMTsgaiA8 IGl0ZW0ubmF0dHJpYnV0ZXM7IGorKykKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnN0ciwgIiwgJWQi LCBpdGVtLmF0dHJpYnV0ZXNbal0pOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnN0ciwgIl0sIFwi IiBQR19ORElTVElOQ1RfS0VZX05ESVNUSU5DVCAiXCI6ICVkfSIsCisJCQkJCQkgKGludCkgaXRl bS5uZGlzdGluY3QpOwogCX0KIAotCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZzdHIsICd9Jyk7CisJ YXBwZW5kU3RyaW5nSW5mb0NoYXIoJnN0ciwgJ10nKTsKIAogCVBHX1JFVFVSTl9DU1RSSU5HKHN0 ci5kYXRhKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNf ZXh0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dAppbmRleCA0 OTVhMWIzNTAxOC4uZTkzNzlhZmUzOWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3RhdHNfZXh0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRz X2V4dC5vdXQKQEAgLTE5Niw3ICsxOTYsNyBAQCBTdGF0aXN0aWNzIG9iamVjdHM6CiAgICAgInB1 YmxpYy5hYjFfYV9iX3N0YXRzIiBPTiBhLCBiIEZST00gYWIxOyBTVEFUSVNUSUNTIDAKIAogQU5B TFlaRSBhYjE7Ci1TRUxFQ1Qgc3R4bmFtZSwgc3R4ZG5kaXN0aW5jdCwgc3R4ZGRlcGVuZGVuY2ll cywgc3R4ZG1jdiwgc3R4ZGluaGVyaXQKK1NFTEVDVCBzdHhuYW1lLCBqc29uYl9wcmV0dHkoZC5z dHhkbmRpc3RpbmN0Ojp0ZXh0Ojpqc29uYikgQVMgc3R4ZG5kaXN0aW5jdCwgc3R4ZGRlcGVuZGVu Y2llcywgc3R4ZG1jdiwgc3R4ZGluaGVyaXQKICAgRlJPTSBwZ19zdGF0aXN0aWNfZXh0IHMgTEVG VCBKT0lOIHBnX3N0YXRpc3RpY19leHRfZGF0YSBkIE9OIChkLnN0eG9pZCA9IHMub2lkKQogIFdI RVJFIHMuc3R4bmFtZSA9ICdhYjFfYV9iX3N0YXRzJzsKICAgICBzdHhuYW1lICAgIHwgc3R4ZG5k aXN0aW5jdCB8IHN0eGRkZXBlbmRlbmNpZXMgfCBzdHhkbWN2IHwgc3R4ZGluaGVyaXQgCkBAIC00 NzYsMTMgKzQ3Niw0MyBAQCBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxF Q1QgQ09VTlQoKikgRlJPTSBuZGlzdGluY3QgR1JPVVAgQlkgYSwgKAogLS0gY29ycmVjdCBjb21t YW5kCiBDUkVBVEUgU1RBVElTVElDUyBzMTAgT04gYSwgYiwgYyBGUk9NIG5kaXN0aW5jdDsKIEFO QUxZWkUgbmRpc3RpbmN0OwotU0VMRUNUIHMuc3R4a2luZCwgZC5zdHhkbmRpc3RpbmN0CitTRUxF Q1Qgcy5zdHhraW5kLCBqc29uYl9wcmV0dHkoZC5zdHhkbmRpc3RpbmN0Ojp0ZXh0Ojpqc29uYikg QVMgc3R4ZG5kaXN0aW5jdAogICBGUk9NIHBnX3N0YXRpc3RpY19leHQgcywgcGdfc3RhdGlzdGlj X2V4dF9kYXRhIGQKICBXSEVSRSBzLnN0eHJlbGlkID0gJ25kaXN0aW5jdCc6OnJlZ2NsYXNzCiAg ICBBTkQgZC5zdHhvaWQgPSBzLm9pZDsKLSBzdHhraW5kIHwgICAgICAgICAgICAgICAgICAgIHN0 eGRuZGlzdGluY3QgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0ge2QsZixtfSB8IHsiMywg NCI6IDExLCAiMywgNiI6IDExLCAiNCwgNiI6IDExLCAiMywgNCwgNiI6IDExfQorIHN0eGtpbmQg fCAgICAgIHN0eGRuZGlzdGluY3QgICAgICAgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB7ZCxmLG19IHwgWyAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg fCAgICAgeyAgICAgICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgIm5kaXN0aW5j dCI6IDExLCsKKyAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgKworICAgICAgICAg fCAgICAgICAgICAgICAzLCAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgICAgIDQgICAg ICAgICAgICsKKyAgICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICAgKworICAgICAgICAg fCAgICAgfSwgICAgICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICB7ICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogMTEsKworICAgICAgICAg fCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyArCisgICAgICAgICB8ICAgICAgICAgICAgIDMsICAg ICAgICAgICsKKyAgICAgICAgIHwgICAgICAgICAgICAgNiAgICAgICAgICAgKworICAgICAgICAg fCAgICAgICAgIF0gICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICB9LCAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg fCAgICAgICAgICJuZGlzdGluY3QiOiAxMSwrCisgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0 ZXMiOiBbICsKKyAgICAgICAgIHwgICAgICAgICAgICAgNCwgICAgICAgICAgKworICAgICAgICAg fCAgICAgICAgICAgICA2ICAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgXSAgICAgICAg ICAgICAgICsKKyAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgKworICAgICAgICAg fCAgICAgeyAgICAgICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgIm5kaXN0aW5j dCI6IDExLCsKKyAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgKworICAgICAgICAg fCAgICAgICAgICAgICAzLCAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgICAgIDQsICAg ICAgICAgICsKKyAgICAgICAgIHwgICAgICAgICAgICAgNiAgICAgICAgICAgKworICAgICAgICAg fCAgICAgICAgIF0gICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICB9ICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgIHwgXQogKDEgcm93KQogCiAtLSBtaW5vciBpbXByb3ZlbWVudCwg bWFrZSBzdXJlIHRoZSBjdGlkIGRvZXMgbm90IGJyZWFrIHRoZSBtYXRjaGluZwpAQCAtNTU4LDEz ICs1ODgsNDMgQEAgSU5TRVJUIElOVE8gbmRpc3RpbmN0IChhLCBiLCBjLCBmaWxsZXIxKQogICAg ICAgICAgICAgbW9kKGksMjMpIHx8ICcgZG9sbGFycyBhbmQgemVybyBjZW50cycKICAgICAgICBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDApIHMoaSk7CiBBTkFMWVpFIG5kaXN0aW5jdDsKLVNF TEVDVCBzLnN0eGtpbmQsIGQuc3R4ZG5kaXN0aW5jdAorU0VMRUNUIHMuc3R4a2luZCwganNvbmJf cHJldHR5KGQuc3R4ZG5kaXN0aW5jdDo6dGV4dDo6anNvbmIpIEFTIHN0eGRuZGlzdGluY3QKICAg RlJPTSBwZ19zdGF0aXN0aWNfZXh0IHMsIHBnX3N0YXRpc3RpY19leHRfZGF0YSBkCiAgV0hFUkUg cy5zdHhyZWxpZCA9ICduZGlzdGluY3QnOjpyZWdjbGFzcwogICAgQU5EIGQuc3R4b2lkID0gcy5v aWQ7Ci0gc3R4a2luZCB8ICAgICAgICAgICAgICAgICAgICAgIHN0eGRuZGlzdGluY3QgICAgICAg ICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSB7ZCxmLG19IHwgeyIzLCA0IjogMjIxLCAi MywgNiI6IDI0NywgIjQsIDYiOiAzMjMsICIzLCA0LCA2IjogMTAwMH0KKyBzdHhraW5kIHwgICAg ICAgc3R4ZG5kaXN0aW5jdCAgICAgICAgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHtkLGYsbX0gfCBbICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg IHwgICAgIHsgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgIm5kaXN0 aW5jdCI6IDIyMSwgKworICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICsKKyAg ICAgICAgIHwgICAgICAgICAgICAgMywgICAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAg ICAgIDQgICAgICAgICAgICAgKworICAgICAgICAgfCAgICAgICAgIF0gICAgICAgICAgICAgICAg ICsKKyAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICB8ICAg ICB7ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgfCAgICAgICAgICJuZGlzdGluY3Qi OiAyNDcsICsKKyAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICArCisgICAgICAg ICB8ICAgICAgICAgICAgIDMsICAgICAgICAgICAgKworICAgICAgICAgfCAgICAgICAgICAgICA2 ICAgICAgICAgICAgICsKKyAgICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICAgICArCisg ICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgfCAgICAgeyAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogMzIz LCArCisgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgKworICAgICAgICAgfCAg ICAgICAgICAgICA0LCAgICAgICAgICAgICsKKyAgICAgICAgIHwgICAgICAgICAgICAgNiAgICAg ICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgXSAgICAgICAgICAgICAgICAgKworICAgICAg ICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHwgICAgIHsgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgIm5kaXN0aW5jdCI6IDEwMDAsKwor ICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICsKKyAgICAgICAgIHwgICAgICAg ICAgICAgMywgICAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgICAgIDQsICAgICAgICAg ICAgKworICAgICAgICAgfCAgICAgICAgICAgICA2ICAgICAgICAgICAgICsKKyAgICAgICAgIHwg ICAgICAgICBdICAgICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICB9ICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgfCBdCiAoMSByb3cpCiAKIC0tIGNvcnJlY3QgZXN0aW1hdGVz CkBAIC02MjMsNyArNjgzLDcgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygn U0VMRUNUIENPVU5UKCopIEZST00gbmRpc3RpbmN0IEdST1VQIEJZIGEsICgKICgxIHJvdykKIAog RFJPUCBTVEFUSVNUSUNTIHMxMDsKLVNFTEVDVCBzLnN0eGtpbmQsIGQuc3R4ZG5kaXN0aW5jdAor U0VMRUNUIHMuc3R4a2luZCwganNvbmJfcHJldHR5KGQuc3R4ZG5kaXN0aW5jdDo6dGV4dDo6anNv bmIpIEFTIHN0eGRuZGlzdGluY3QKICAgRlJPTSBwZ19zdGF0aXN0aWNfZXh0IHMsIHBnX3N0YXRp c3RpY19leHRfZGF0YSBkCiAgV0hFUkUgcy5zdHhyZWxpZCA9ICduZGlzdGluY3QnOjpyZWdjbGFz cwogICAgQU5EIGQuc3R4b2lkID0gcy5vaWQ7CkBAIC03MDcsMTMgKzc2Nyw0MyBAQCBTRUxFQ1Qg KiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgQ09VTlQoKikgRlJPTSBuZGlzdGlu Y3QgR1JPVVAgQlkgYSwgKAogCiBDUkVBVEUgU1RBVElTVElDUyBzMTAgKG5kaXN0aW5jdCkgT04g KGErMSksIChiKzEwMCksICgyKmMpIEZST00gbmRpc3RpbmN0OwogQU5BTFlaRSBuZGlzdGluY3Q7 Ci1TRUxFQ1Qgcy5zdHhraW5kLCBkLnN0eGRuZGlzdGluY3QKK1NFTEVDVCBzLnN0eGtpbmQsIGpz b25iX3ByZXR0eShkLnN0eGRuZGlzdGluY3Q6OnRleHQ6Ompzb25iKSBBUyBzdHhkbmRpc3RpbmN0 CiAgIEZST00gcGdfc3RhdGlzdGljX2V4dCBzLCBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgZAogIFdI RVJFIHMuc3R4cmVsaWQgPSAnbmRpc3RpbmN0Jzo6cmVnY2xhc3MKICAgIEFORCBkLnN0eG9pZCA9 IHMub2lkOwotIHN0eGtpbmQgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eGRuZGlzdGlu Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0ge2Qs ZX0gICB8IHsiLTEsIC0yIjogMjIxLCAiLTEsIC0zIjogMjQ3LCAiLTIsIC0zIjogMzIzLCAiLTEs IC0yLCAtMyI6IDEwMDB9Cisgc3R4a2luZCB8ICAgICAgIHN0eGRuZGlzdGluY3QgICAgICAgIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7ZCxlfSAgIHwgWyAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgfCAgICAgICAgICJuZGlzdGluY3QiOiAyMjEsICsKKyAgICAgICAgIHwg ICAgICAgICAiYXR0cmlidXRlcyI6IFsgICArCisgICAgICAgICB8ICAgICAgICAgICAgIC0xLCAg ICAgICAgICAgKworICAgICAgICAgfCAgICAgICAgICAgICAtMiAgICAgICAgICAgICsKKyAgICAg ICAgIHwgICAgICAgICBdICAgICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICB9LCAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogMjQ3LCArCisgICAgICAgICB8ICAgICAg ICAgImF0dHJpYnV0ZXMiOiBbICAgKworICAgICAgICAgfCAgICAgICAgICAgICAtMSwgICAgICAg ICAgICsKKyAgICAgICAgIHwgICAgICAgICAgICAgLTMgICAgICAgICAgICArCisgICAgICAgICB8 ICAgICAgICAgXSAgICAgICAgICAgICAgICAgKworICAgICAgICAgfCAgICAgfSwgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICB8ICAgICAgICAgIm5kaXN0aW5jdCI6IDMyMywgKworICAgICAgICAgfCAgICAgICAgICJh dHRyaWJ1dGVzIjogWyAgICsKKyAgICAgICAgIHwgICAgICAgICAgICAgLTIsICAgICAgICAgICAr CisgICAgICAgICB8ICAgICAgICAgICAgIC0zICAgICAgICAgICAgKworICAgICAgICAgfCAgICAg ICAgIF0gICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg fCAgICAgICAgICJuZGlzdGluY3QiOiAxMDAwLCsKKyAgICAgICAgIHwgICAgICAgICAiYXR0cmli dXRlcyI6IFsgICArCisgICAgICAgICB8ICAgICAgICAgICAgIC0xLCAgICAgICAgICAgKworICAg ICAgICAgfCAgICAgICAgICAgICAtMiwgICAgICAgICAgICsKKyAgICAgICAgIHwgICAgICAgICAg ICAgLTMgICAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgXSAgICAgICAgICAgICAgICAg KworICAgICAgICAgfCAgICAgfSAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHwgXQog KDEgcm93KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgQ09V TlQoKikgRlJPTSBuZGlzdGluY3QgR1JPVVAgQlkgKGErMSksIChiKzEwMCknKTsKQEAgLTc1Niwx MyArODQ2LDQzIEBAIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCBD T1VOVCgqKSBGUk9NIG5kaXN0aW5jdCBHUk9VUCBCWSBhLCBiCiAKIENSRUFURSBTVEFUSVNUSUNT IHMxMCAobmRpc3RpbmN0KSBPTiBhLCBiLCAoMipjKSBGUk9NIG5kaXN0aW5jdDsKIEFOQUxZWkUg bmRpc3RpbmN0OwotU0VMRUNUIHMuc3R4a2luZCwgZC5zdHhkbmRpc3RpbmN0CitTRUxFQ1Qgcy5z dHhraW5kLCBqc29uYl9wcmV0dHkoZC5zdHhkbmRpc3RpbmN0Ojp0ZXh0Ojpqc29uYikgQVMgc3R4 ZG5kaXN0aW5jdAogICBGUk9NIHBnX3N0YXRpc3RpY19leHQgcywgcGdfc3RhdGlzdGljX2V4dF9k YXRhIGQKICBXSEVSRSBzLnN0eHJlbGlkID0gJ25kaXN0aW5jdCc6OnJlZ2NsYXNzCiAgICBBTkQg ZC5zdHhvaWQgPSBzLm9pZDsKLSBzdHhraW5kIHwgICAgICAgICAgICAgICAgICAgICAgICBzdHhk bmRpc3RpbmN0ICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHtkLGV9 ICAgfCB7IjMsIDQiOiAyMjEsICIzLCAtMSI6IDI0NywgIjQsIC0xIjogMzIzLCAiMywgNCwgLTEi OiAxMDAwfQorIHN0eGtpbmQgfCAgICAgICBzdHhkbmRpc3RpbmN0ICAgICAgICAKKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge2QsZX0gICB8IFsgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogMjIxLCArCisgICAgICAgICB8ICAgICAgICAg ImF0dHJpYnV0ZXMiOiBbICAgKworICAgICAgICAgfCAgICAgICAgICAgICAzLCAgICAgICAgICAg ICsKKyAgICAgICAgIHwgICAgICAgICAgICAgNCAgICAgICAgICAgICArCisgICAgICAgICB8ICAg ICAgICAgXSAgICAgICAgICAgICAgICAgKworICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICB8ICAgICAgICAgIm5kaXN0aW5jdCI6IDI0NywgKworICAgICAgICAgfCAgICAgICAgICJhdHRy aWJ1dGVzIjogWyAgICsKKyAgICAgICAgIHwgICAgICAgICAgICAgMywgICAgICAgICAgICArCisg ICAgICAgICB8ICAgICAgICAgICAgIC0xICAgICAgICAgICAgKworICAgICAgICAgfCAgICAgICAg IF0gICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgfCAg ICAgICAgICJuZGlzdGluY3QiOiAzMjMsICsKKyAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRl cyI6IFsgICArCisgICAgICAgICB8ICAgICAgICAgICAgIDQsICAgICAgICAgICAgKworICAgICAg ICAgfCAgICAgICAgICAgICAtMSAgICAgICAgICAgICsKKyAgICAgICAgIHwgICAgICAgICBdICAg ICAgICAgICAgICAgICArCisgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHwgICAgICAg ICAibmRpc3RpbmN0IjogMTAwMCwrCisgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBb ICAgKworICAgICAgICAgfCAgICAgICAgICAgICAzLCAgICAgICAgICAgICsKKyAgICAgICAgIHwg ICAgICAgICAgICAgNCwgICAgICAgICAgICArCisgICAgICAgICB8ICAgICAgICAgICAgIC0xICAg ICAgICAgICAgKworICAgICAgICAgfCAgICAgICAgIF0gICAgICAgICAgICAgICAgICsKKyAgICAg ICAgIHwgICAgIH0gICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICB8IF0KICgxIHJvdykK IAogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUIENPVU5UKCopIEZS T00gbmRpc3RpbmN0IEdST1VQIEJZIGEsIGInKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3N0YXRzX2V4dC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3Fs CmluZGV4IGZjNmYxNTJhMDcyLi5mYzRhZWU2ZDgzOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvc3RhdHNfZXh0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19l eHQuc3FsCkBAIC0xMjUsNyArMTI1LDcgQEAgQUxURVIgVEFCTEUgYWIxIEFMVEVSIGEgU0VUIFNU QVRJU1RJQ1MgLTE7CiBBTFRFUiBTVEFUSVNUSUNTIGFiMV9hX2Jfc3RhdHMgU0VUIFNUQVRJU1RJ Q1MgMDsKIFxkIGFiMQogQU5BTFlaRSBhYjE7Ci1TRUxFQ1Qgc3R4bmFtZSwgc3R4ZG5kaXN0aW5j dCwgc3R4ZGRlcGVuZGVuY2llcywgc3R4ZG1jdiwgc3R4ZGluaGVyaXQKK1NFTEVDVCBzdHhuYW1l LCBqc29uYl9wcmV0dHkoZC5zdHhkbmRpc3RpbmN0Ojp0ZXh0Ojpqc29uYikgQVMgc3R4ZG5kaXN0 aW5jdCwgc3R4ZGRlcGVuZGVuY2llcywgc3R4ZG1jdiwgc3R4ZGluaGVyaXQKICAgRlJPTSBwZ19z dGF0aXN0aWNfZXh0IHMgTEVGVCBKT0lOIHBnX3N0YXRpc3RpY19leHRfZGF0YSBkIE9OIChkLnN0 eG9pZCA9IHMub2lkKQogIFdIRVJFIHMuc3R4bmFtZSA9ICdhYjFfYV9iX3N0YXRzJzsKIEFMVEVS IFNUQVRJU1RJQ1MgYWIxX2FfYl9zdGF0cyBTRVQgU1RBVElTVElDUyAtMTsKQEAgLTI5Nyw3ICsy OTcsNyBAQCBDUkVBVEUgU1RBVElTVElDUyBzMTAgT04gYSwgYiwgYyBGUk9NIG5kaXN0aW5jdDsK IAogQU5BTFlaRSBuZGlzdGluY3Q7CiAKLVNFTEVDVCBzLnN0eGtpbmQsIGQuc3R4ZG5kaXN0aW5j dAorU0VMRUNUIHMuc3R4a2luZCwganNvbmJfcHJldHR5KGQuc3R4ZG5kaXN0aW5jdDo6dGV4dDo6 anNvbmIpIEFTIHN0eGRuZGlzdGluY3QKICAgRlJPTSBwZ19zdGF0aXN0aWNfZXh0IHMsIHBnX3N0 YXRpc3RpY19leHRfZGF0YSBkCiAgV0hFUkUgcy5zdHhyZWxpZCA9ICduZGlzdGluY3QnOjpyZWdj bGFzcwogICAgQU5EIGQuc3R4b2lkID0gcy5vaWQ7CkBAIC0zMzgsNyArMzM4LDcgQEAgSU5TRVJU IElOVE8gbmRpc3RpbmN0IChhLCBiLCBjLCBmaWxsZXIxKQogCiBBTkFMWVpFIG5kaXN0aW5jdDsK IAotU0VMRUNUIHMuc3R4a2luZCwgZC5zdHhkbmRpc3RpbmN0CitTRUxFQ1Qgcy5zdHhraW5kLCBq c29uYl9wcmV0dHkoZC5zdHhkbmRpc3RpbmN0Ojp0ZXh0Ojpqc29uYikgQVMgc3R4ZG5kaXN0aW5j dAogICBGUk9NIHBnX3N0YXRpc3RpY19leHQgcywgcGdfc3RhdGlzdGljX2V4dF9kYXRhIGQKICBX SEVSRSBzLnN0eHJlbGlkID0gJ25kaXN0aW5jdCc6OnJlZ2NsYXNzCiAgICBBTkQgZC5zdHhvaWQg PSBzLm9pZDsKQEAgLTM2NCw3ICszNjQsNyBAQCBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRl ZF9yb3dzKCdTRUxFQ1QgQ09VTlQoKikgRlJPTSBuZGlzdGluY3QgR1JPVVAgQlkgYSwgKAogCiBE Uk9QIFNUQVRJU1RJQ1MgczEwOwogCi1TRUxFQ1Qgcy5zdHhraW5kLCBkLnN0eGRuZGlzdGluY3QK K1NFTEVDVCBzLnN0eGtpbmQsIGpzb25iX3ByZXR0eShkLnN0eGRuZGlzdGluY3Q6OnRleHQ6Ompz b25iKSBBUyBzdHhkbmRpc3RpbmN0CiAgIEZST00gcGdfc3RhdGlzdGljX2V4dCBzLCBwZ19zdGF0 aXN0aWNfZXh0X2RhdGEgZAogIFdIRVJFIHMuc3R4cmVsaWQgPSAnbmRpc3RpbmN0Jzo6cmVnY2xh c3MKICAgIEFORCBkLnN0eG9pZCA9IHMub2lkOwpAQCAtMzk5LDcgKzM5OSw3IEBAIENSRUFURSBT VEFUSVNUSUNTIHMxMCAobmRpc3RpbmN0KSBPTiAoYSsxKSwgKGIrMTAwKSwgKDIqYykgRlJPTSBu ZGlzdGluY3Q7CiAKIEFOQUxZWkUgbmRpc3RpbmN0OwogCi1TRUxFQ1Qgcy5zdHhraW5kLCBkLnN0 eGRuZGlzdGluY3QKK1NFTEVDVCBzLnN0eGtpbmQsIGpzb25iX3ByZXR0eShkLnN0eGRuZGlzdGlu Y3Q6OnRleHQ6Ompzb25iKSBBUyBzdHhkbmRpc3RpbmN0CiAgIEZST00gcGdfc3RhdGlzdGljX2V4 dCBzLCBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgZAogIFdIRVJFIHMuc3R4cmVsaWQgPSAnbmRpc3Rp bmN0Jzo6cmVnY2xhc3MKICAgIEFORCBkLnN0eG9pZCA9IHMub2lkOwpAQCAtNDIzLDcgKzQyMyw3 IEBAIENSRUFURSBTVEFUSVNUSUNTIHMxMCAobmRpc3RpbmN0KSBPTiBhLCBiLCAoMipjKSBGUk9N IG5kaXN0aW5jdDsKIAogQU5BTFlaRSBuZGlzdGluY3Q7CiAKLVNFTEVDVCBzLnN0eGtpbmQsIGQu c3R4ZG5kaXN0aW5jdAorU0VMRUNUIHMuc3R4a2luZCwganNvbmJfcHJldHR5KGQuc3R4ZG5kaXN0 aW5jdDo6dGV4dDo6anNvbmIpIEFTIHN0eGRuZGlzdGluY3QKICAgRlJPTSBwZ19zdGF0aXN0aWNf ZXh0IHMsIHBnX3N0YXRpc3RpY19leHRfZGF0YSBkCiAgV0hFUkUgcy5zdHhyZWxpZCA9ICduZGlz dGluY3QnOjpyZWdjbGFzcwogICAgQU5EIGQuc3R4b2lkID0gcy5vaWQ7CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sIGIvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbAppbmRl eCAxMDY1ODNmYjI5Ni4uYjJkYzJkMjdhNzcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wZXJm b3JtLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbApAQCAtMTU3NiwxMiArMTU3 Niw0MiBAQCBDUkVBVEUgU1RBVElTVElDUyBzdHRzMiAobmRpc3RpbmN0KSBPTiBjaXR5LCBzdGF0 ZSwgemlwIEZST00gemlwY29kZXM7CiAKIEFOQUxZWkUgemlwY29kZXM7CiAKLVNFTEVDVCBzdHhr ZXlzIEFTIGssIHN0eGRuZGlzdGluY3QgQVMgbmQKK1NFTEVDVCBzdHhrZXlzIEFTIGssIGpzb25i X3ByZXR0eShzdHhkbmRpc3RpbmN0Ojp0ZXh0Ojpqc29uYikgQVMgbmQKICAgRlJPTSBwZ19zdGF0 aXN0aWNfZXh0IGpvaW4gcGdfc3RhdGlzdGljX2V4dF9kYXRhIG9uIChvaWQgPSBzdHhvaWQpCiAg IFdIRVJFIHN0eG5hbWUgPSAnc3R0czInOwotLVsgUkVDT1JEIDEgXS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSZ6d3NwOy0tCistWyBSRUNPUkQg MSBdLS0tLS0tLS0tLS0tLS0tLS0tLQogayAgfCAxIDIgNQotbmQgfCB7IjEsIDIiOiAzMzE3OCwg IjEsIDUiOiAzMzE3OCwgIjIsIDUiOiAyNzQzNSwgIjEsIDIsIDUiOiAzMzE3OH0KK25kIHwgWyAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAg ICArCisgICB8ICAgICAgICAgIm5kaXN0aW5jdCI6IDMzMTc4LCsKKyAgIHwgICAgICAgICAiYXR0 cmlidXRlcyI6IFsgICAgKworICAgfCAgICAgICAgICAgICAxLCAgICAgICAgICAgICArCisgICB8 ICAgICAgICAgICAgIDIgICAgICAgICAgICAgICsKKyAgIHwgICAgICAgICBdICAgICAgICAgICAg ICAgICAgKworICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICArCisgICB8ICAgICB7ICAg ICAgICAgICAgICAgICAgICAgICsKKyAgIHwgICAgICAgICAibmRpc3RpbmN0IjogMzMxNzgsKwor ICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICArCisgICB8ICAgICAgICAgICAgIDEsICAg ICAgICAgICAgICsKKyAgIHwgICAgICAgICAgICAgNSAgICAgICAgICAgICAgKworICAgfCAgICAg ICAgIF0gICAgICAgICAgICAgICAgICArCisgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAg ICsKKyAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgKworICAgfCAgICAgICAgICJuZGlz dGluY3QiOiAyNzQzNSwrCisgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICsKKyAgIHwg ICAgICAgICAgICAgMiwgICAgICAgICAgICAgKworICAgfCAgICAgICAgICAgICA1ICAgICAgICAg ICAgICArCisgICB8ICAgICAgICAgXSAgICAgICAgICAgICAgICAgICsKKyAgIHwgICAgIH0sICAg ICAgICAgICAgICAgICAgICAgKworICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICArCisg ICB8ICAgICAgICAgIm5kaXN0aW5jdCI6IDMzMTc4LCsKKyAgIHwgICAgICAgICAiYXR0cmlidXRl cyI6IFsgICAgKworICAgfCAgICAgICAgICAgICAxLCAgICAgICAgICAgICArCisgICB8ICAgICAg ICAgICAgIDIsICAgICAgICAgICAgICsKKyAgIHwgICAgICAgICAgICAgNSAgICAgICAgICAgICAg KworICAgfCAgICAgICAgIF0gICAgICAgICAgICAgICAgICArCisgICB8ICAgICB9ICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIHwgXQogKDEgcm93KQogPC9wcm9ncmFtbGlzdGluZz4KICAgICAg VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgdGhyZWUgY29tYmluYXRpb25zIG9mIGNvbHVt bnMgdGhhdAoKYmFzZS1jb21taXQ6IDkxMDY5MDQxNWI2NjExODZhZTQ0ZTNiNWU1MzhlMjNlYWE0 OGRlMWIKLS0gCjIuNTEuMQoK --00000000000009c16c0643879075 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0002-Refactor-output-format-of-pg_dependencies.patch" Content-Disposition: attachment; filename="v13-0002-Refactor-output-format-of-pg_dependencies.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhyftkgq1 RnJvbSAxYTI5YzA5NDhjYjlmMWQyNjFiOTZjNzFjODIwYzVlMTEzZDA5NTk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWllci54eXo+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMTQ6MTU6MjcgKzA5MDAKU3ViamVjdDogW1BBVENIIHYx MyAyLzddIFJlZmFjdG9yIG91dHB1dCBmb3JtYXQgb2YgcGdfZGVwZW5kZW5jaWVzLgoKVGhlIGV4 aXN0aW5nIGZvcm1hdCBvZiBwZ19kZXBlbmRlbmNpZXMgdXNlcyBhIHNpbmdsZS1vYmplY3QgSlNP TiBzdHJ1Y3R1cmUKd2hlcmUgZWFjaCBrZXkgaXMgaXRzZWxmIGEgY29tbWEtc2VwYXJhdGVkIGxp c3Qgb2YgYXR0bnVtcy4gV2hpbGUgdGhpcwppcyBhIHZlcnkgY29tcGFjdCBmb3JtYXQsIGl0J3Mg Y29uZnVzaW5nIHRvIHJlYWQgYW5kIGlzIGRpZmZpY3VsdCB0bwptYW5pcHVsYXRlIHZhbHVlcyB3 aXRoaW4gdGhlIG9iamVjdC4gVGhpcyB3YXNuJ3QgYSBjb25jZXJuIHVudGlsCnN0YXRpc3RpY3Mg aW1wb3J0IGZ1bmN0aW9ucyB3ZXJlIGludHJvZHVjZWQsIGVuYWJsaW5nIHVzZXJzIHRvIGluamVj dApoeXBvdGhldGljYWwgc3RhdGlzdGljcyBpbnRvIGFuIG9iamVjdCB0byBvYnNlcnZlIHRoZWly IGVmZmVjdCBvbiB0aGUKcXVlcnkgcGxhbm5lci4KClRoZSBuZXcgZm9ybWF0IGlzIGFuIGFycmF5 IG9mIG9iamVjdHMsIGVhY2ggb2JqZWN0IG11c3QgaGF2ZSB0aGUga2V5cwoiYXR0cmlidXRlcyIs IHdoaWNoIG11c3QgY29udGFpbiBhbiBhcnJheSBvZiBhdHRudW1zLCAiZGVwZW5kZW5jeSIsCndo aWNoIG11c3QgYmUgYW4gaW50ZWdlciwgYW5kICJkZWdyZWUiLCB3aGljaCBtdXN0IGJlIGEgZmxv YXQuCgpUaGUgY2hhbmdlIGluIGZvcm1hdCBpcyBhZGVxdWF0ZWx5IGRlc2NyaWJlZCBmcm9tIHRo ZSBjaGFuZ2VzIHRvCnNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCBzbyBk ZXNjcmlwdGlvbiBoZXJlIGlzCnJlZHVuZGFudC4KLS0tCiBzcmMvaW5jbHVkZS9zdGF0aXN0aWNz L3N0YXRpc3RpY3NfZm9ybWF0LmggfCAyMCArKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn X2RlcGVuZGVuY2llcy5jICAgIHwgMzEgKysrLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdGF0c19leHQub3V0ICAgIHwgOTUgKysrKysrKysrKysrKysrKysrKystLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbCAgICAgICAgIHwgIDcgKy0KIGRvYy9zcmMvc2dtbC9w ZXJmb3JtLnNnbWwgICAgICAgICAgICAgICAgICB8ICA2ICstCiA1IGZpbGVzIGNoYW5nZWQsIDEy NyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3NfZm9ybWF0LmggYi9zcmMvaW5jbHVkZS9zdGF0aXN0aWNz L3N0YXRpc3RpY3NfZm9ybWF0LmgKaW5kZXggYmE5N2MwODgwYmUuLjQwNjU1YjllYzNiIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3NfZm9ybWF0LmgKKysrIGIv c3JjL2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0aWNzX2Zvcm1hdC5oCkBAIC0yMCwxMSArMjAs MjcgQEAKICAqCiAgKiBbeyJuZGlzdGluY3QiOiAxMSwgImF0dHJpYnV0ZXMiOiBbMyw0XX0sCiAg KiAgeyJuZGlzdGluY3QiOiAxMSwgImF0dHJpYnV0ZXMiOiBbMyw2XX0sCi0gKiAgeyJuZGlzdGlu Y3QiOiAxMSwgImF0dHJpYnV0ZXMiOiBbNCw2XX0sCi0gKiAgeyJuZGlzdGluY3QiOiAxMSwgImF0 dHJpYnV0ZXMiOiBbMyw0LDZdfV0KKyAqICAuLi4gXQorICoKICAqIC0tLS0tLS0tLS0KICAqLwog I2RlZmluZSBQR19ORElTVElOQ1RfS0VZX0FUVFJJQlVURVMJImF0dHJpYnV0ZXMiCiAjZGVmaW5l IFBHX05ESVNUSU5DVF9LRVlfTkRJU1RJTkNUCSJuZGlzdGluY3QiCiAKKworLyogLS0tLS0tLS0t LQorICogcGdfZGVwZW5kZW5jaWVzIGluIGh1bWFuLXJlYWRhYmxlIGZvcm1hdCBpcyBhIEpTT04g YXJyYXkgbWFkZSBvZiBlbGVtZW50cworICogd2l0aCBhIHByZWRlZmluZWQgc2V0IG9mIGtleXMs IGxpa2U6CisgKgorICogW3siZGVncmVlIjogMS4wMDAwMDAsICJhdHRyaWJ1dGVzIjogWzNdLCAi ZGVwZW5kZW5jeSI6IDR9LAorICogIHsiZGVncmVlIjogMS4wMDAwMDAsICJhdHRyaWJ1dGVzIjog WzNdLCAiZGVwZW5kZW5jeSI6IDZ9LAorICogIC4uLiBdCisgKgorICogLS0tLS0tLS0tLQorICov CisKKyNkZWZpbmUgUEdfREVQRU5ERU5DSUVTX0tFWV9BVFRSSUJVVEVTCSJhdHRyaWJ1dGVzIgor I2RlZmluZSBQR19ERVBFTkRFTkNJRVNfS0VZX0RFUEVOREVOQ1kJImRlcGVuZGVuY3kiCisjZGVm aW5lIFBHX0RFUEVOREVOQ0lFU19LRVlfREVHUkVFCQkiZGVncmVlIgorCiAjZW5kaWYJCQkJCQkJ LyogU1RBVElTVElDU19GT1JNQVRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3BnX2RlcGVuZGVuY2llcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2RlcGVuZGVu Y2llcy5jCmluZGV4IGEwYTk0NDBmZDVjLi44NzE4MWFhMDBlOSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX2RlcGVuZGVuY2llcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19kZXBlbmRlbmNpZXMuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAibGli L3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJzdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzX2ludGVy bmFsLmgiCisjaW5jbHVkZSAic3RhdGlzdGljcy9zdGF0aXN0aWNzX2Zvcm1hdC5oIgogI2luY2x1 ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKIAogLyoKQEAgLTQ2LDM0ICs0NywzNCBAQCBwZ19kZXBl bmRlbmNpZXNfb3V0KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJYnl0ZWEJICAgKmRhdGEgPSBQR19H RVRBUkdfQllURUFfUFAoMCk7CiAJTVZEZXBlbmRlbmNpZXMgKmRlcGVuZGVuY2llcyA9IHN0YXRl eHRfZGVwZW5kZW5jaWVzX2Rlc2VyaWFsaXplKGRhdGEpOwotCWludAkJCWksCi0JCQkJajsKIAlT dHJpbmdJbmZvRGF0YSBzdHI7CiAKIAlpbml0U3RyaW5nSW5mbygmc3RyKTsKLQlhcHBlbmRTdHJp bmdJbmZvQ2hhcigmc3RyLCAneycpOworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZzdHIsICdbJyk7 CiAKLQlmb3IgKGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLT5uZGVwczsgaSsrKQorCWZvciAoaW50 IGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLT5uZGVwczsgaSsrKQogCXsKIAkJTVZEZXBlbmRlbmN5 ICpkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzLT5kZXBzW2ldOwogCiAJCWlmIChpID4gMCkKIAkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnN0ciwgIiwgIik7CiAKLQkJYXBwZW5kU3RyaW5nSW5m b0NoYXIoJnN0ciwgJyInKTsKLQkJZm9yIChqID0gMDsgaiA8IGRlcGVuZGVuY3ktPm5hdHRyaWJ1 dGVzOyBqKyspCi0JCXsKLQkJCWlmIChqID09IGRlcGVuZGVuY3ktPm5hdHRyaWJ1dGVzIC0gMSkK LQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZzdHIsICIgPT4gIik7Ci0JCQllbHNlIGlmIChq ID4gMCkKLQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZzdHIsICIsICIpOworCQlpZiAoZGVw ZW5kZW5jeS0+bmF0dHJpYnV0ZXMgPD0gMSkKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIHplcm8t bGVuZ3RoIG5hdHRyaWJ1dGVzIGFycmF5IGluIE1WRGVwZW5kZW5jaWVzIik7CiAKLQkJCWFwcGVu ZFN0cmluZ0luZm8oJnN0ciwgIiVkIiwgZGVwZW5kZW5jeS0+YXR0cmlidXRlc1tqXSk7Ci0JCX0K LQkJYXBwZW5kU3RyaW5nSW5mbygmc3RyLCAiXCI6ICVmIiwgZGVwZW5kZW5jeS0+ZGVncmVlKTsK KwkJYXBwZW5kU3RyaW5nSW5mbygmc3RyLCAie1wiIiBQR19ERVBFTkRFTkNJRVNfS0VZX0FUVFJJ QlVURVMgIlwiOiBbJWQiLAorCQkJCQkJIGRlcGVuZGVuY3ktPmF0dHJpYnV0ZXNbMF0pOworCisJ CWZvciAoaW50IGogPSAxOyBqIDwgZGVwZW5kZW5jeS0+bmF0dHJpYnV0ZXMgLSAxOyBqKyspCisJ CQlhcHBlbmRTdHJpbmdJbmZvKCZzdHIsICIsICVkIiwgZGVwZW5kZW5jeS0+YXR0cmlidXRlc1tq XSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmc3RyLCAiXSwgXCIiIFBHX0RFUEVOREVOQ0lFU19L RVlfREVQRU5ERU5DWSAiXCI6ICVkLCAiCisJCQkJCQkgIlwiIiBQR19ERVBFTkRFTkNJRVNfS0VZ X0RFR1JFRSAiXCI6ICVmfSIsCisJCQkJCQkgZGVwZW5kZW5jeS0+YXR0cmlidXRlc1tkZXBlbmRl bmN5LT5uYXR0cmlidXRlcyAtIDFdLAorCQkJCQkJIGRlcGVuZGVuY3ktPmRlZ3JlZSk7CiAJfQog Ci0JYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnN0ciwgJ30nKTsKKwlhcHBlbmRTdHJpbmdJbmZvQ2hh cigmc3RyLCAnXScpOwogCiAJUEdfUkVUVVJOX0NTVFJJTkcoc3RyLmRhdGEpOwogfQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CmluZGV4IGU5Mzc5YWZlMzllLi41YTQwNzdm OGVkNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dApAQCAtMTk2LDcg KzE5Niw4IEBAIFN0YXRpc3RpY3Mgb2JqZWN0czoKICAgICAicHVibGljLmFiMV9hX2Jfc3RhdHMi IE9OIGEsIGIgRlJPTSBhYjE7IFNUQVRJU1RJQ1MgMAogCiBBTkFMWVpFIGFiMTsKLVNFTEVDVCBz dHhuYW1lLCBqc29uYl9wcmV0dHkoZC5zdHhkbmRpc3RpbmN0Ojp0ZXh0Ojpqc29uYikgQVMgc3R4 ZG5kaXN0aW5jdCwgc3R4ZGRlcGVuZGVuY2llcywgc3R4ZG1jdiwgc3R4ZGluaGVyaXQKK1NFTEVD VCBzdHhuYW1lLCBqc29uYl9wcmV0dHkoZC5zdHhkbmRpc3RpbmN0Ojp0ZXh0Ojpqc29uYikgQVMg c3R4ZG5kaXN0aW5jdCwKKyAgICAgICBqc29uYl9wcmV0dHkoZC5zdHhkZGVwZW5kZW5jaWVzOjp0 ZXh0Ojpqc29uYikgQVMgc3R4ZGRlcGVuZGVuY2llcywgc3R4ZG1jdiwgc3R4ZGluaGVyaXQKICAg RlJPTSBwZ19zdGF0aXN0aWNfZXh0IHMgTEVGVCBKT0lOIHBnX3N0YXRpc3RpY19leHRfZGF0YSBk IE9OIChkLnN0eG9pZCA9IHMub2lkKQogIFdIRVJFIHMuc3R4bmFtZSA9ICdhYjFfYV9iX3N0YXRz JzsKICAgICBzdHhuYW1lICAgIHwgc3R4ZG5kaXN0aW5jdCB8IHN0eGRkZXBlbmRlbmNpZXMgfCBz dHhkbWN2IHwgc3R4ZGluaGVyaXQgCkBAIC0xNDMzLDEwICsxNDM0LDQ4IEBAIFNFTEVDVCAqIEZS T00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRl bmNpZXMgV0hFUkUKIENSRUFURSBTVEFUSVNUSUNTIGZ1bmNfZGVwc19zdGF0IChkZXBlbmRlbmNp ZXMpIE9OIGEsIGIsIGMgRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llczsKIEFOQUxZWkUgZnVu Y3Rpb25hbF9kZXBlbmRlbmNpZXM7CiAtLSBwcmludCB0aGUgZGV0ZWN0ZWQgZGVwZW5kZW5jaWVz Ci1TRUxFQ1QgZGVwZW5kZW5jaWVzIEZST00gcGdfc3RhdHNfZXh0IFdIRVJFIHN0YXRpc3RpY3Nf bmFtZSA9ICdmdW5jX2RlcHNfc3RhdCc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotIHsiMyA9PiA0IjogMS4wMDAwMDAsICIzID0+IDYiOiAxLjAwMDAw MCwgIjQgPT4gNiI6IDEuMDAwMDAwLCAiMywgNCA9PiA2IjogMS4wMDAwMDAsICIzLCA2ID0+IDQi OiAxLjAwMDAwMH0KK1NFTEVDVCBqc29uYl9wcmV0dHkoZGVwZW5kZW5jaWVzOjp0ZXh0Ojpqc29u YikgQVMgZGVwZW5kZW5jaWVzIEZST00gcGdfc3RhdHNfZXh0IFdIRVJFIHN0YXRpc3RpY3NfbmFt ZSA9ICdmdW5jX2RlcHNfc3RhdCc7CisgICAgICAgIGRlcGVuZGVuY2llcyAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgIHsgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgImRlZ3JlZSI6IDEuMDAw MDAwLCsKKyAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICArCisgICAgICAgICAgICAgMyAgICAg ICAgICAgICAgKworICAgICAgICAgXSwgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICJkZXBl bmRlbmN5IjogNCAgICArCisgICAgIH0sICAgICAgICAgICAgICAgICAgICAgKworICAgICB7ICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwrCisgICAg ICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAgICAgICAgIDMgICAgICAgICAgICAgICsK KyAgICAgICAgIF0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAiZGVwZW5kZW5jeSI6IDYg ICAgKworICAgICB9LCAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgeyAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsKworICAgICAgICAgImF0dHJp YnV0ZXMiOiBbICAgICsKKyAgICAgICAgICAgICA0ICAgICAgICAgICAgICArCisgICAgICAgICBd LCAgICAgICAgICAgICAgICAgKworICAgICAgICAgImRlcGVuZGVuY3kiOiA2ICAgICsKKyAgICAg fSwgICAgICAgICAgICAgICAgICAgICArCisgICAgIHsgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgImRlZ3JlZSI6IDEuMDAwMDAwLCsKKyAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAg ICArCisgICAgICAgICAgICAgMywgICAgICAgICAgICAgKworICAgICAgICAgICAgIDQgICAgICAg ICAgICAgICsKKyAgICAgICAgIF0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAiZGVwZW5k ZW5jeSI6IDYgICAgKworICAgICB9LCAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgeyAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsKworICAgICAg ICAgImF0dHJpYnV0ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAzLCAgICAgICAgICAgICArCisg ICAgICAgICAgICAgNiAgICAgICAgICAgICAgKworICAgICAgICAgXSwgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICJkZXBlbmRlbmN5IjogNCAgICArCisgICAgIH0gICAgICAgICAgICAgICAg ICAgICAgKworIF0KICgxIHJvdykKIAogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93 cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSBhID0gMSBBTkQg YiA9ICcnMScnJyk7CkBAIC0xNzc1LDEwICsxODE0LDQ4IEBAIFNFTEVDVCAqIEZST00gY2hlY2tf ZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hF UkUKIENSRUFURSBTVEFUSVNUSUNTIGZ1bmNfZGVwc19zdGF0IChkZXBlbmRlbmNpZXMpIE9OIChh ICogMiksIHVwcGVyKGIpLCAoYyArIDEpIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXM7CiBB TkFMWVpFIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzOwogLS0gcHJpbnQgdGhlIGRldGVjdGVkIGRl cGVuZGVuY2llcwotU0VMRUNUIGRlcGVuZGVuY2llcyBGUk9NIHBnX3N0YXRzX2V4dCBXSEVSRSBz dGF0aXN0aWNzX25hbWUgPSAnZnVuY19kZXBzX3N0YXQnOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSB7Ii0x ID0+IC0yIjogMS4wMDAwMDAsICItMSA9PiAtMyI6IDEuMDAwMDAwLCAiLTIgPT4gLTMiOiAxLjAw MDAwMCwgIi0xLCAtMiA9PiAtMyI6IDEuMDAwMDAwLCAiLTEsIC0zID0+IC0yIjogMS4wMDAwMDB9 CitTRUxFQ1QganNvbmJfcHJldHR5KGRlcGVuZGVuY2llczo6dGV4dDo6anNvbmIpIEFTIGRlcGVu ZGVuY2llcyBGUk9NIHBnX3N0YXRzX2V4dCBXSEVSRSBzdGF0aXN0aWNzX25hbWUgPSAnZnVuY19k ZXBzX3N0YXQnOworICAgICAgICBkZXBlbmRlbmNpZXMgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgWyAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB7ICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwrCisgICAg ICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAgICAgICAgIC0xICAgICAgICAgICAgICsK KyAgICAgICAgIF0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAiZGVwZW5kZW5jeSI6IC0y ICAgKworICAgICB9LCAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgeyAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsKworICAgICAgICAgImF0dHJp YnV0ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAtMSAgICAgICAgICAgICArCisgICAgICAgICBd LCAgICAgICAgICAgICAgICAgKworICAgICAgICAgImRlcGVuZGVuY3kiOiAtMyAgICsKKyAgICAg fSwgICAgICAgICAgICAgICAgICAgICArCisgICAgIHsgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgImRlZ3JlZSI6IDEuMDAwMDAwLCsKKyAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAg ICArCisgICAgICAgICAgICAgLTIgICAgICAgICAgICAgKworICAgICAgICAgXSwgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICJkZXBlbmRlbmN5IjogLTMgICArCisgICAgIH0sICAgICAgICAg ICAgICAgICAgICAgKworICAgICB7ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICJk ZWdyZWUiOiAxLjAwMDAwMCwrCisgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAg ICAgICAgIC0xLCAgICAgICAgICAgICsKKyAgICAgICAgICAgICAtMiAgICAgICAgICAgICArCisg ICAgICAgICBdLCAgICAgICAgICAgICAgICAgKworICAgICAgICAgImRlcGVuZGVuY3kiOiAtMyAg ICsKKyAgICAgfSwgICAgICAgICAgICAgICAgICAgICArCisgICAgIHsgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgImRlZ3JlZSI6IDEuMDAwMDAwLCsKKyAgICAgICAgICJhdHRyaWJ1 dGVzIjogWyAgICArCisgICAgICAgICAgICAgLTEsICAgICAgICAgICAgKworICAgICAgICAgICAg IC0zICAgICAgICAgICAgICsKKyAgICAgICAgIF0sICAgICAgICAgICAgICAgICArCisgICAgICAg ICAiZGVwZW5kZW5jeSI6IC0yICAgKworICAgICB9ICAgICAgICAgICAgICAgICAgICAgICsKKyBd CiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAq IEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgKiAyKSA9IDIgQU5EIHVwcGVy KGIpID0gJycxJycnKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4 dC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCmluZGV4IGZjNGFlZTZk ODM5Li45NGUyMTM5YzUwNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNf ZXh0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsCkBAIC0xMjUs NyArMTI1LDggQEAgQUxURVIgVEFCTEUgYWIxIEFMVEVSIGEgU0VUIFNUQVRJU1RJQ1MgLTE7CiBB TFRFUiBTVEFUSVNUSUNTIGFiMV9hX2Jfc3RhdHMgU0VUIFNUQVRJU1RJQ1MgMDsKIFxkIGFiMQog QU5BTFlaRSBhYjE7Ci1TRUxFQ1Qgc3R4bmFtZSwganNvbmJfcHJldHR5KGQuc3R4ZG5kaXN0aW5j dDo6dGV4dDo6anNvbmIpIEFTIHN0eGRuZGlzdGluY3QsIHN0eGRkZXBlbmRlbmNpZXMsIHN0eGRt Y3YsIHN0eGRpbmhlcml0CitTRUxFQ1Qgc3R4bmFtZSwganNvbmJfcHJldHR5KGQuc3R4ZG5kaXN0 aW5jdDo6dGV4dDo6anNvbmIpIEFTIHN0eGRuZGlzdGluY3QsCisgICAgICAganNvbmJfcHJldHR5 KGQuc3R4ZGRlcGVuZGVuY2llczo6dGV4dDo6anNvbmIpIEFTIHN0eGRkZXBlbmRlbmNpZXMsIHN0 eGRtY3YsIHN0eGRpbmhlcml0CiAgIEZST00gcGdfc3RhdGlzdGljX2V4dCBzIExFRlQgSk9JTiBw Z19zdGF0aXN0aWNfZXh0X2RhdGEgZCBPTiAoZC5zdHhvaWQgPSBzLm9pZCkKICBXSEVSRSBzLnN0 eG5hbWUgPSAnYWIxX2FfYl9zdGF0cyc7CiBBTFRFUiBTVEFUSVNUSUNTIGFiMV9hX2Jfc3RhdHMg U0VUIFNUQVRJU1RJQ1MgLTE7CkBAIC03MDgsNyArNzA5LDcgQEAgQ1JFQVRFIFNUQVRJU1RJQ1Mg ZnVuY19kZXBzX3N0YXQgKGRlcGVuZGVuY2llcykgT04gYSwgYiwgYyBGUk9NIGZ1bmN0aW9uYWxf ZGVwZW4KIEFOQUxZWkUgZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXM7CiAKIC0tIHByaW50IHRoZSBk ZXRlY3RlZCBkZXBlbmRlbmNpZXMKLVNFTEVDVCBkZXBlbmRlbmNpZXMgRlJPTSBwZ19zdGF0c19l eHQgV0hFUkUgc3RhdGlzdGljc19uYW1lID0gJ2Z1bmNfZGVwc19zdGF0JzsKK1NFTEVDVCBqc29u Yl9wcmV0dHkoZGVwZW5kZW5jaWVzOjp0ZXh0Ojpqc29uYikgQVMgZGVwZW5kZW5jaWVzIEZST00g cGdfc3RhdHNfZXh0IFdIRVJFIHN0YXRpc3RpY3NfbmFtZSA9ICdmdW5jX2RlcHNfc3RhdCc7CiAK IFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rp b25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgYSA9IDEgQU5EIGIgPSAnJzEnJycpOwogCkBAIC04NDQs NyArODQ1LDcgQEAgQ1JFQVRFIFNUQVRJU1RJQ1MgZnVuY19kZXBzX3N0YXQgKGRlcGVuZGVuY2ll cykgT04gKGEgKiAyKSwgdXBwZXIoYiksIChjICsgMSkgRlIKIEFOQUxZWkUgZnVuY3Rpb25hbF9k ZXBlbmRlbmNpZXM7CiAKIC0tIHByaW50IHRoZSBkZXRlY3RlZCBkZXBlbmRlbmNpZXMKLVNFTEVD VCBkZXBlbmRlbmNpZXMgRlJPTSBwZ19zdGF0c19leHQgV0hFUkUgc3RhdGlzdGljc19uYW1lID0g J2Z1bmNfZGVwc19zdGF0JzsKK1NFTEVDVCBqc29uYl9wcmV0dHkoZGVwZW5kZW5jaWVzOjp0ZXh0 Ojpqc29uYikgQVMgZGVwZW5kZW5jaWVzIEZST00gcGdfc3RhdHNfZXh0IFdIRVJFIHN0YXRpc3Rp Y3NfbmFtZSA9ICdmdW5jX2RlcHNfc3RhdCc7CiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1h dGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEg KiAyKSA9IDIgQU5EIHVwcGVyKGIpID0gJycxJycnKTsKIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3BlcmZvcm0uc2dtbCBiL2RvYy9zcmMvc2dtbC9wZXJmb3JtLnNnbWwKaW5kZXggYjJkYzJk MjdhNzcuLjAxNGE1NDJkYWY1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9wZXJmb3JtLnNnbWwKQEAgLTE0ODgsOSArMTQ4OCw5IEBAIEFO QUxZWkUgemlwY29kZXM7CiBTRUxFQ1Qgc3R4bmFtZSwgc3R4a2V5cywgc3R4ZGRlcGVuZGVuY2ll cwogICBGUk9NIHBnX3N0YXRpc3RpY19leHQgam9pbiBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgb24g KG9pZCA9IHN0eG9pZCkKICAgV0hFUkUgc3R4bmFtZSA9ICdzdHRzJzsKLSBzdHhuYW1lIHwgc3R4 a2V5cyB8ICAgICAgICAgICAgIHN0eGRkZXBlbmRlbmNpZXMKLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3R0cyAgICB8IDEg NSAgICAgfCB7IjEgPT4gNSI6IDEuMDAwMDAwLCAiNSA9PiAxIjogMC40MjMxMzB9Cisgc3R4bmFt ZSB8IHN0eGtleXMgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0eGRkZXBlbmRlbmNpZXMKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHN0dHMgICAg fCAxIDUgICAgIHwgW3siYXR0cmlidXRlcyI6IFsxXSwgImRlcGVuZGVuY3kiOiA1LCAiZGVncmVl IjogMS4wMDAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbNV0sICJkZXBlbmRlbmN5IjogMSwgImRlZ3Jl ZSI6IDAuNDIzMTMwfV0KICgxIHJvdykKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgIEhlcmUgaXQg Y2FuIGJlIHNlZW4gdGhhdCBjb2x1bW4gMSAoemlwIGNvZGUpIGZ1bGx5IGRldGVybWluZXMgY29s dW1uCi0tIAoyLjUxLjEKCg== --00000000000009c16c0643879075 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0003-Add-working-input-function-for-pg_ndistinct.patch" Content-Disposition: attachment; filename="v13-0003-Add-working-input-function-for-pg_ndistinct.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhyftnun2 RnJvbSBkN2RiMTUzYjQyOTQ1ZWEzZDI5YTgyNDM3YmQxY2JlZTc3MDU3Yjg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWllci54eXo+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMTY6NDc6MDAgKzA5MDAKU3ViamVjdDogW1BBVENIIHYx MyAzLzddIEFkZCB3b3JraW5nIGlucHV0IGZ1bmN0aW9uIGZvciBwZ19uZGlzdGluY3QuCgpUaGlz IHdpbGwgY29uc3VtZSB0aGUgZm9ybWF0IHRoYXQgd2FzIGVzdGFibGlzaGVkIHdoZW4gdGhlIG91 dHB1dApmdW5jdGlvbiBmb3IgcGdfbmRpc3RpbmN0IHdhcyByZWNlbnRseSBjaGFuZ2VkLgoKVGhp cyB3aWxsIGJlIG5lZWRlZCBmb3IgaW1wb3J0aW5nIGV4dGVuZGVkIHN0YXRpc3RpY3MuCi0tLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX25kaXN0aW5jdC5jICAgICAgIHwgNzAxICsrKysrKysr KysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZ19uZGlzdGluY3Qub3V0 IHwgMTA5ICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICB8 ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGdfbmRpc3RpbmN0LnNxbCAgICAgIHwgIDM0 ICsKIDQgZmlsZXMgY2hhbmdlZCwgODM0IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGdfbmRpc3RpbmN0 Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BnX25kaXN0aW5j dC5zcWwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbmRpc3RpbmN0LmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbmRpc3RpbmN0LmMKaW5kZXggOTdlZmMyOTBlZjUu Ljg2NDYwZGI4NmVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbmRpc3Rp bmN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX25kaXN0aW5jdC5jCkBAIC0xNCw0 MiArMTQsNzIxIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiY29tbW9u L2ludC5oIgorI2luY2x1ZGUgImNvbW1vbi9qc29uYXBpLmgiCiAjaW5jbHVkZSAibGliL3N0cmlu Z2luZm8uaCIKKyNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgorI2luY2x1ZGUgIm5vZGVzL21pc2Nu b2Rlcy5oIgogI2luY2x1ZGUgInN0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaCIK ICNpbmNsdWRlICJzdGF0aXN0aWNzL3N0YXRpc3RpY3NfZm9ybWF0LmgiCisjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAKK3R5cGVkZWYg ZW51bQoreworCU5ESVNUX0VYUEVDVF9TVEFSVCA9IDAsCisJTkRJU1RfRVhQRUNUX0lURU0sCisJ TkRJU1RfRVhQRUNUX0tFWSwKKwlORElTVF9FWFBFQ1RfQVRUTlVNX0xJU1QsCisJTkRJU1RfRVhQ RUNUX0FUVE5VTSwKKwlORElTVF9FWFBFQ1RfTkRJU1RJTkNULAorCU5ESVNUX0VYUEVDVF9DT01Q TEVURQorfSBORGlzdGluY3RTZW1hbnRpY1N0YXRlOworCit0eXBlZGVmIHN0cnVjdAoreworCWNv bnN0IGNoYXIgKnN0cjsKKwlORGlzdGluY3RTZW1hbnRpY1N0YXRlIHN0YXRlOworCisJTGlzdAkg ICAqZGlzdGluY3RfaXRlbXM7IC8qIEFjY3VtdWxhdGVkIGNvbXBsZXRlIE1WTkRpc3RpbmN0SXRl bXMgKi8KKwlOb2RlCSAgICplc2NvbnRleHQ7CisKKwlib29sCQlmb3VuZF9hdHRyaWJ1dGVzOwkv KiBJdGVtIGhhcyBhbiBhdHRyaWJ1dGVzIGtleSAqLworCWJvb2wJCWZvdW5kX25kaXN0aW5jdDsJ LyogSXRlbSBoYXMgbmRpc3RpbmN0IGtleSAqLworCUxpc3QJICAgKmF0dG51bV9saXN0OwkvKiBB Y2N1bXVsYXRlZCBhdHRyaWJ1dGVzIGF0dG51bXMgKi8KKwlpbnQzMgkJbmRpc3RpbmN0OworfSBO RGlzdGluY3RQYXJzZVN0YXRlOworCisvKgorICogSW52b2tlZCBhdCB0aGUgc3RhcnQgb2YgZWFj aCBNVk5EaXN0aW5jdEl0ZW0uCisgKgorICogVGhlIGVudGlyZSBKU09OIGRvY3VtZW50IHNob3Vs IGJlIG9uZSBhcnJheSBvZiBNVk5EaXN0aW5jdEl0ZW0gb2JqZWN0cy4KKyAqCisgKiBJZiB3ZSdy ZSBhbnl3aGVyZSBlbHNlIGluIHRoZSBkb2N1bWVudCwgaXQncyBhbiBlcnJvci4KKyAqLworc3Rh dGljIEpzb25QYXJzZUVycm9yVHlwZQorbmRpc3RpbmN0X29iamVjdF9zdGFydCh2b2lkICpzdGF0 ZSkKK3sKKwlORGlzdGluY3RQYXJzZVN0YXRlICpwYXJzZSA9IHN0YXRlOworCisJc3dpdGNoKHBh cnNlLT5zdGF0ZSkKKwl7CisJCWNhc2UgTkRJU1RfRVhQRUNUX0lURU06CisJCQkvKiBOb3cgd2Ug ZXhwZWN0IHRvIHNlZSBhdHRyaWJ1dGVzL25kaXN0aW5jdCBrZXlzICovCisJCQlwYXJzZS0+c3Rh dGUgPSBORElTVF9FWFBFQ1RfS0VZOworCQkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKKwkJCWJyZWFr OworCisJCWNhc2UgTkRJU1RfRVhQRUNUX1NUQVJUOgorCQkJLyogcGdfbmRpc3RpbmN0IG11c3Qg YmVnaW4gd2l0aCBhICdbJyAqLworCQkJZXJyc2F2ZShwYXJzZS0+ZXNjb250ZXh0LAorCQkJCQll cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJZXJybXNn KCJtYWxmb3JtZWQgcGdfbmRpc3RpbmN0OiBcIiVzXCIiLCBwYXJzZS0+c3RyKSwKKwkJCQkJZXJy ZGV0YWlsKCJJbml0aWFsIGVsZW1lbnQgbXVzdCBiZSBhbiBhcnJheS4iKSk7CisJCQlicmVhazsK KworCQljYXNlIE5ESVNUX0VYUEVDVF9LRVk6CisJCQkvKiBJbiBhbiBvYmplY3QsIGV4cGVjdGlu ZyBrZXkgKi8KKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4dCwKKwkJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCWVycm1zZygibWFsZm9ybWVk IHBnX25kaXN0aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJCWVycmRldGFpbCgiRXhw ZWN0ZWQgYW4gb2JqZWN0IGtleS4iKSk7CisJCQlicmVhazsKKworCQljYXNlIE5ESVNUX0VYUEVD VF9BVFROVU1fTElTVDoKKwkJCS8qIEp1c3QgZm9sbG93ZWQgYW4gImF0dHJpYnV0ZXMiOiBrZXkg Ki8KKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4dCwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX25k aXN0aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJCWVycmRldGFpbCgiVmFsdWUgb2Yg XCIiIFBHX05ESVNUSU5DVF9LRVlfQVRUUklCVVRFUworCQkJCQkJCSAgIlwiIG11c3QgYmUgYW4g YXJyYXkgb2YgYXR0cmlidXRlIG51bWJlcnMuIikpOworCQkJYnJlYWs7CisKKwkJY2FzZSBORElT VF9FWFBFQ1RfQVRUTlVNOgorCQkJLyogSW4gYW4gYXR0bnVtIGxpc3QsIGV4cGVjdCBvbmx5IHNj YWxhciBpbnRlZ2VycyAqLworCQkJZXJyc2F2ZShwYXJzZS0+ZXNjb250ZXh0LAorCQkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJZXJybXNnKCJt YWxmb3JtZWQgcGdfbmRpc3RpbmN0OiBcIiVzXCIiLCBwYXJzZS0+c3RyKSwKKwkJCQkJZXJyZGV0 YWlsKCJBdHRyaWJ1dGUgbGlzdHMgY2FuIG9ubHkgY29udGFpbiBhdHRyaWJ1dGUgbnVtYmVycy4i KSk7CisJCQlicmVhazsKKworCQljYXNlIE5ESVNUX0VYUEVDVF9ORElTVElOQ1Q6CisJCQkvKiBK dXN0IGZvbGxvd2VkIGFuICJuZGlzdGluY3QiOiBrZXkgKi8KKwkJCWVycnNhdmUocGFyc2UtPmVz Y29udGV4dCwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElP TiksCisJCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX25kaXN0aW5jdDogXCIlc1wiIiwgcGFyc2Ut PnN0ciksCisJCQkJCWVycmRldGFpbCgiVmFsdWUgb2YgXCIiIFBHX05ESVNUSU5DVF9LRVlfTkRJ U1RJTkNUCisJCQkJCQkJICAiXCIgbXVzdCBiZSBhbiBpbnRlZ2VyLiIpKTsKKwkJCWJyZWFrOwor CisJCWRlZmF1bHQ6CisJCQllcnJzYXZlKHBhcnNlLT5lc2NvbnRleHQsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQllcnJtc2coIm1hbGZv cm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQllcnJkZXRhaWwo IlVuZXhwZWN0ZWQgcGFyc2Ugc3RhdGU6ICVkIiwgKGludCkgcGFyc2UtPnN0YXRlKSk7CisJfQor CisJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7Cit9CisKKy8qCisgKiBSb3V0aW5lIHRv IGFsbG93IHFzb3J0aW5nIG9mIEF0dE51bWJlcnMKKyAqLworc3RhdGljIGludAorYXR0bnVtX2Nv bXBhcmUoY29uc3Qgdm9pZCAqYXB0ciwgY29uc3Qgdm9pZCAqYnB0cikKK3sKKwlBdHRyTnVtYmVy CWEgPSAqKGNvbnN0IEF0dHJOdW1iZXIgKikgYXB0cjsKKwlBdHRyTnVtYmVyCWIgPSAqKGNvbnN0 IEF0dHJOdW1iZXIgKikgYnB0cjsKKworCXJldHVybiBwZ19jbXBfczE2KGEsIGIpOworfQorCisK Ky8qCisgKiBJbnZva2VkIGF0IHRoZSBlbmQgb2YgYW4gb2JqZWN0LgorICoKKyAqIENoZWNrIHRv IGVuc3VyZSB0aGF0IGl0IHdhcyBhIGNvbXBsZXRlIE1WTkRpc3RpbmN0SXRlbQorICoKKyAqLwor c3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorbmRpc3RpbmN0X29iamVjdF9lbmQodm9pZCAqc3Rh dGUpCit7CisJTkRpc3RpbmN0UGFyc2VTdGF0ZSAqcGFyc2UgPSBzdGF0ZTsKKworCWludAkJCW5h dHRzID0gMDsKKwlBdHRyTnVtYmVyICphdHRyc29ydDsKKworCU1WTkRpc3RpbmN0SXRlbSAqaXRl bTsKKworCWlmIChwYXJzZS0+c3RhdGUgIT0gTkRJU1RfRVhQRUNUX0tFWSkKKwl7CisJCWVycnNh dmUocGFyc2UtPmVzY29udGV4dCwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JF UFJFU0VOVEFUSU9OKSwKKwkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNc IiIsIHBhcnNlLT5zdHIpLAorCQkJCWVycmRldGFpbCgiVW5leHBlY3RlZCBwYXJzZSBzdGF0ZTog JWQiLCAoaW50KSBwYXJzZS0+c3RhdGUpKTsKKwkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlM RUQ7CisJfQorCisJaWYgKCFwYXJzZS0+Zm91bmRfYXR0cmlidXRlcykKKwl7CisJCWVycnNhdmUo cGFyc2UtPmVzY29udGV4dCwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJF U0VOVEFUSU9OKSwKKwkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIs IHBhcnNlLT5zdHIpLAorCQkJCWVycmRldGFpbCgiSXRlbSBtdXN0IGNvbnRhaW4gXCIiIFBHX05E SVNUSU5DVF9LRVlfQVRUUklCVVRFUyAiXCIga2V5LiIpKTsKKwkJcmV0dXJuIEpTT05fU0VNX0FD VElPTl9GQUlMRUQ7CisJfQorCisJaWYgKCFwYXJzZS0+Zm91bmRfbmRpc3RpbmN0KQorCXsKKwkJ ZXJyc2F2ZShwYXJzZS0+ZXNjb250ZXh0LAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RF WFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX25kaXN0aW5jdDog XCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJZXJyZGV0YWlsKCJJdGVtIG11c3QgY29udGFpbiBc IiIgUEdfTkRJU1RJTkNUX0tFWV9ORElTVElOQ1QgIlwiIGtleS4iKSk7CisJCXJldHVybiBKU09O X1NFTV9BQ1RJT05fRkFJTEVEOworCX0KKworCS8qCisJICogV2UgbmVlZCBhdCBsZWFzdCAyIGF0 dG51bXMgZm9yIGEgbmRpc3RpbmN0IGl0ZW0sIGFueXRoaW5nIGxlc3MgaXMKKwkgKiBtYWxmb3Jt ZWQuCisJICovCisJbmF0dHMgPSBwYXJzZS0+YXR0bnVtX2xpc3QtPmxlbmd0aDsKKwlpZiAobmF0 dHMgPCAyKQorCXsKKwkJZXJyc2F2ZShwYXJzZS0+ZXNjb250ZXh0LAorCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCWVycm1zZygibWFsZm9ybWVk IHBnX25kaXN0aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJZXJyZGV0YWlsKCJUaGUg XCIiIFBHX05ESVNUSU5DVF9LRVlfQVRUUklCVVRFUworCQkJCQkJICAgIlwiIGtleSBtdXN0IGNv bnRhaW4gYW4gYXJyYXkgb2YgYXQgbGVhc3QgdHdvIGF0dG51bXMuIikpOworCQlyZXR1cm4gSlNP Tl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwl9CisJYXR0cnNvcnQgPSBwYWxsb2MwKG5hdHRzICogc2l6 ZW9mKEF0dHJOdW1iZXIpKTsKKworCS8qIENyZWF0ZSB0aGUgTVZORGlzdGluY3RJdGVtICovCisJ aXRlbSA9IHBhbGxvYyhzaXplb2YoTVZORGlzdGluY3RJdGVtKSk7CisJaXRlbS0+bmF0dHJpYnV0 ZXMgPSBuYXR0czsKKwlpdGVtLT5hdHRyaWJ1dGVzID0gcGFsbG9jMChuYXR0cyAqIHNpemVvZihB dHRyTnVtYmVyKSk7CisJaXRlbS0+bmRpc3RpbmN0ID0gKGRvdWJsZSkgcGFyc2UtPm5kaXN0aW5j dDsKKworCS8qIGZpbGwgb3V0IGJvdGggYXR0bnVtIGxpc3QgYW5kIHNvcnRhYmxlIGxpc3QgKi8K Kwlmb3IgKGludCBpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJeworCQlhdHRyc29ydFtpXSA9IChB dHRyTnVtYmVyKSBwYXJzZS0+YXR0bnVtX2xpc3QtPmVsZW1lbnRzW2ldLmludF92YWx1ZTsKKwkJ aXRlbS0+YXR0cmlidXRlc1tpXSA9IGF0dHJzb3J0W2ldOworCX0KKworCS8qIENoZWNrIGF0dHJz b3J0IGZvciB1bmlxdWVuZXNzICovCisJcXNvcnQoYXR0cnNvcnQsIG5hdHRzLCBzaXplb2YoQXR0 ck51bWJlciksIGF0dG51bV9jb21wYXJlKTsKKwlmb3IgKGludCBpID0gMTsgaSA8IG5hdHRzOyBp KyspCisJeworCQlpZiAoYXR0cnNvcnRbaV0gPT0gYXR0cnNvcnRbaSAtIDFdKQorCQl7CisJCQll cnJzYXZlKHBhcnNlLT5lc2NvbnRleHQsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RF WFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6 IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQllcnJkZXRhaWwoImF0dG51bSBsaXN0IGR1cGxp Y2F0ZSB2YWx1ZSBmb3VuZDogJWQuIiwgYXR0cnNvcnRbaV0pKTsKKwkJCXBmcmVlKGF0dHJzb3J0 KTsKKwkJCXBmcmVlKGl0ZW0tPmF0dHJpYnV0ZXMpOworCQkJcGZyZWUoaXRlbSk7CisJCQlyZXR1 cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwkJfQorCX0KKwlwZnJlZShhdHRyc29ydCk7CisK KwlwYXJzZS0+ZGlzdGluY3RfaXRlbXMgPSBsYXBwZW5kKHBhcnNlLT5kaXN0aW5jdF9pdGVtcywg KHZvaWQgKikgaXRlbSk7CisKKwkvKiByZXNldCBpdGVtIHN0YXRlIHZhcnMgKi8KKwlsaXN0X2Zy ZWUocGFyc2UtPmF0dG51bV9saXN0KTsKKwlwYXJzZS0+YXR0bnVtX2xpc3QgPSBOSUw7CisJcGFy c2UtPm5kaXN0aW5jdCA9IDA7CisJcGFyc2UtPmZvdW5kX2F0dHJpYnV0ZXMgPSBmYWxzZTsKKwlw YXJzZS0+Zm91bmRfbmRpc3RpbmN0ID0gZmFsc2U7CisKKwkvKiBOb3cgd2UgYXJlIGxvb2tpbmcg Zm9yIHRoZSBuZXh0IE1WTkRpc3RpbmN0SXRlbSAqLworCXBhcnNlLT5zdGF0ZSA9IE5ESVNUX0VY UEVDVF9JVEVNOworCXJldHVybiBKU09OX1NVQ0NFU1M7Cit9CisKKworLyoKKyAqIG5kc2l0aW5j dCBpbnB1dCBmb3JtYXQgaGFzIHR3byB0eXBlcyBvZiBhcnJheXMsIHRoZSBvdXRlciBNVk5EaXN0 aW5jdEl0ZW0KKyAqIGFycmF5LCBhbmQgdGhlIGF0dG51bSBsaXN0IGFycmF5IHdpdGhpbiBlYWNo IE1WTkRpc3RpbmN0SXRlbS4KKyAqLworc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorbmRpc3Rp bmN0X2FycmF5X3N0YXJ0KHZvaWQgKnN0YXRlKQoreworCU5EaXN0aW5jdFBhcnNlU3RhdGUgKnBh cnNlID0gc3RhdGU7CisKKwlzd2l0Y2ggKHBhcnNlLT5zdGF0ZSkKKwl7CisJCWNhc2UgTkRJU1Rf RVhQRUNUX0FUVE5VTV9MSVNUOgorCQkJcGFyc2UtPnN0YXRlID0gTkRJU1RfRVhQRUNUX0FUVE5V TTsKKwkJCWJyZWFrOworCisJCWNhc2UgTkRJU1RfRVhQRUNUX1NUQVJUOgorCQkJcGFyc2UtPnN0 YXRlID0gTkRJU1RfRVhQRUNUX0lURU07CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZXJy c2F2ZShwYXJzZS0+ZXNjb250ZXh0LAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhU X1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJZXJybXNnKCJtYWxmb3JtZWQgcGdfbmRpc3RpbmN0OiBc IiVzXCIiLCBwYXJzZS0+c3RyKSwKKwkJCQkJZXJyZGV0YWlsKCJBcnJheSBmb3VuZCBpbiB1bmV4 cGVjdGVkIHBsYWNlLiIpKTsKKwkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0K KworCXJldHVybiBKU09OX1NVQ0NFU1M7Cit9CisKKworLyoKKyAqIEFycmF5cyBjYW4gbmV2ZXIg YmUgZW1wdHkuCisgKi8KK3N0YXRpYyBKc29uUGFyc2VFcnJvclR5cGUKK25kaXN0aW5jdF9hcnJh eV9lbmQodm9pZCAqc3RhdGUpCit7CisJTkRpc3RpbmN0UGFyc2VTdGF0ZSAqcGFyc2UgPSBzdGF0 ZTsKKworCXN3aXRjaCAocGFyc2UtPnN0YXRlKQorCXsKKwkJY2FzZSBORElTVF9FWFBFQ1RfQVRU TlVNOgorCQkJaWYgKHBhcnNlLT5hdHRudW1fbGlzdCAhPSBOSUwpCisJCQl7CisJCQkJLyogVGhl IGF0dG51bSBsaXN0IGlzIGNvbXBsZXRlLCBsb29rIGZvciBtb3JlIE1WTkRpc3RpbmN0SXRlbSBr ZXlzICovCisJCQkJcGFyc2UtPnN0YXRlID0gTkRJU1RfRVhQRUNUX0tFWTsKKwkJCQlyZXR1cm4g SlNPTl9TVUNDRVNTOworCQkJfQorCisJCQllcnJzYXZlKHBhcnNlLT5lc2NvbnRleHQsCisJCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQllcnJt c2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQll cnJkZXRhaWwoIlRoZSBcIiIgUEdfTkRJU1RJTkNUX0tFWV9BVFRSSUJVVEVTCisJCQkJCQkJIlwi IGtleSBtdXN0IGJlIGFuIG5vbi1lbXB0eSBhcnJheS4iKSk7CisJCQlicmVhazsKKworCQljYXNl IE5ESVNUX0VYUEVDVF9JVEVNOgorCQkJaWYgKHBhcnNlLT5kaXN0aW5jdF9pdGVtcyAhPSBOSUwp CisJCQl7CisJCQkJLyogSXRlbSBsaXN0IGlzIGNvbXBsZXRlLCB3ZSdyZSBkb25lLiAqLworCQkJ CXBhcnNlLT5zdGF0ZSA9IE5ESVNUX0VYUEVDVF9DT01QTEVURTsKKwkJCQlyZXR1cm4gSlNPTl9T VUNDRVNTOworCQkJfQorCisJCQllcnJzYXZlKHBhcnNlLT5lc2NvbnRleHQsCisJCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQllcnJtc2coIm1h bGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQllcnJkZXRh aWwoIkl0ZW0gYXJyYXkgY2Fubm90IGJlIGVtcHR5LiIpKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0 OgorCQkJLyoKKwkJCSAqIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIGEgY2FzZSB3YXMgbWlzc2Vk IGluIG5kaXN0aW5jdF9hcnJheV9zdGFydCgpCisJCQkgKi8KKwkJCWVycnNhdmUocGFyc2UtPmVz Y29udGV4dCwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElP TiksCisJCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX25kaXN0aW5jdDogXCIlc1wiIiwgcGFyc2Ut PnN0ciksCisJCQkJCWVycmRldGFpbCgiQXJyYXkgZm91bmQgaW4gdW5leHBlY3RlZCBwbGFjZS4i KSk7CisJfQorCisJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7Cit9CisKKworLyoKKyAq IFRoZSB2YWxpZCBrZXlzIGZvciB0aGUgTVZORGlzdGluY3RJdGVtIG9iamVjdCBhcmU6CisgKiAg IC0gYXR0cmlidXRlcworICogICAtIG5kaXN0aW5jdAorICovCitzdGF0aWMgSnNvblBhcnNlRXJy b3JUeXBlCituZGlzdGluY3Rfb2JqZWN0X2ZpZWxkX3N0YXJ0KHZvaWQgKnN0YXRlLCBjaGFyICpm bmFtZSwgYm9vbCBpc251bGwpCit7CisJTkRpc3RpbmN0UGFyc2VTdGF0ZSAqcGFyc2UgPSBzdGF0 ZTsKKworCWlmIChzdHJjbXAoZm5hbWUsIFBHX05ESVNUSU5DVF9LRVlfQVRUUklCVVRFUykgPT0g MCkKKwl7CisJCXBhcnNlLT5mb3VuZF9hdHRyaWJ1dGVzID0gdHJ1ZTsKKwkJcGFyc2UtPnN0YXRl ID0gTkRJU1RfRVhQRUNUX0FUVE5VTV9MSVNUOworCQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCX0K KworCWlmIChzdHJjbXAoZm5hbWUsIFBHX05ESVNUSU5DVF9LRVlfTkRJU1RJTkNUKSA9PSAwKQor CXsKKwkJcGFyc2UtPmZvdW5kX25kaXN0aW5jdCA9IHRydWU7CisJCXBhcnNlLT5zdGF0ZSA9IE5E SVNUX0VYUEVDVF9ORElTVElOQ1Q7CisJCXJldHVybiBKU09OX1NVQ0NFU1M7CisJfQorCisJZXJy c2F2ZShwYXJzZS0+ZXNjb250ZXh0LAorCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9S RVBSRVNFTlRBVElPTiksCisJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNc IiIsIHBhcnNlLT5zdHIpLAorCQkJZXJyZGV0YWlsKCJJbnZhbGlkIGtleSBcIiVzXCIuIE9ubHkg YWxsb3dlZCBrZXlzIGFyZSBcIiIKKwkJCQkJICBQR19ORElTVElOQ1RfS0VZX0FUVFJJQlVURVMg IlwiIGFuZCBcIiIKKwkJCQkJICBQR19ORElTVElOQ1RfS0VZX05ESVNUSU5DVCAiXCIuIiwgZm5h bWUpKTsKKwlyZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKK30KKworLyoKKyAqIEhhbmRs ZSBhbnkgYXJyYXkgZWxlbWVudC4KKyAqLworc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorbmRp c3RpbmN0X2FycmF5X2VsZW1lbnRfc3RhcnQodm9pZCAqc3RhdGUsIGJvb2wgaXNudWxsKQorewor CU5EaXN0aW5jdFBhcnNlU3RhdGUgKnBhcnNlID0gc3RhdGU7CisKKwlzd2l0Y2gocGFyc2UtPnN0 YXRlKQorCXsKKwkJY2FzZSBORElTVF9FWFBFQ1RfQVRUTlVNOgorCQkJaWYgKCFpc251bGwpCisJ CQkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKKworCQkJZXJyc2F2ZShwYXJzZS0+ZXNjb250ZXh0LAor CQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJ ZXJybXNnKCJtYWxmb3JtZWQgcGdfbmRpc3RpbmN0OiBcIiVzXCIiLCBwYXJzZS0+c3RyKSwKKwkJ CQkJZXJyZGV0YWlsKCJBdHRudW0gbGlzdCBlbGVtZW50cyBjYW5ub3QgYmUgbnVsbC4iKSk7CisK KwkJCWJyZWFrOworCisJCWNhc2UgTkRJU1RfRVhQRUNUX0lURU06CisJCQlpZiAoIWlzbnVsbCkK KwkJCQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCisJCQllcnJzYXZlKHBhcnNlLT5lc2NvbnRleHQs CisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJ CQllcnJtc2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAor CQkJCQllcnJkZXRhaWwoIkl0ZW0gbGlzdCBlbGVtZW50cyBjYW5ub3QgYmUgbnVsbC4iKSk7CisK KwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllcnJzYXZlKHBhcnNlLT5lc2NvbnRleHQsCisJ CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQll cnJtc2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJ CQllcnJkZXRhaWwoIlVuZXhwZWN0ZWQgYXJyYXkgZWxlbWVudC4iKSk7CisJfQorCisJcmV0dXJu IEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7Cit9CisKKy8qCisgKiBIYW5kbGUgc2NhbGFyIGV2ZW50 cyBmcm9tIHRoZSBuZGlzdGluY3QgaW5wdXQgcGFyc2VyLgorICoKKyAqIE92ZXJyaWRlIGludGVn ZXIgcGFyc2UgZXJyb3IgbWVzc2FnZXMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGVycm9ycworICog c3BlY2lmaWMgdG8gdGhlIGNvbnRleHQuCisgKi8KK3N0YXRpYyBKc29uUGFyc2VFcnJvclR5cGUK K25kaXN0aW5jdF9zY2FsYXIodm9pZCAqc3RhdGUsIGNoYXIgKnRva2VuLCBKc29uVG9rZW5UeXBl IHRva2VudHlwZSkKK3sKKwlORGlzdGluY3RQYXJzZVN0YXRlICpwYXJzZSA9IHN0YXRlOworCUF0 dHJOdW1iZXIJYXR0bnVtOworCisJc3dpdGNoKHBhcnNlLT5zdGF0ZSkKKwl7CisJCWNhc2UgTkRJ U1RfRVhQRUNUX0FUVE5VTToKKwkJCWF0dG51bSA9IHBnX3N0cnRvaW50MTZfc2FmZSh0b2tlbiwg cGFyc2UtPmVzY29udGV4dCk7CisKKwkJCWlmICghU09GVF9FUlJPUl9PQ0NVUlJFRChwYXJzZS0+ ZXNjb250ZXh0KSkKKwkJCXsKKwkJCQlwYXJzZS0+YXR0bnVtX2xpc3QgPSBsYXBwZW5kX2ludChw YXJzZS0+YXR0bnVtX2xpc3QsIChpbnQpIGF0dG51bSk7CisJCQkJcmV0dXJuIEpTT05fU1VDQ0VT UzsKKwkJCX0KKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4dCwKKwkJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCWVycm1zZygibWFsZm9ybWVk IHBnX25kaXN0aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJCWVycmRldGFpbCgiSW52 YWxpZCBhdHRyaWJ1dGUgbnVtYmVyOiBcIiVzXCIuIiwgdG9rZW4pKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgTkRJU1RfRVhQRUNUX05ESVNUSU5DVDoKKwkJCS8qCisJCQkqIFdoaWxlIHRoZSBzdHJ1 Y3R1cmUgZGljdGF0ZXMgdGhhdCBuZGlzdGluY3QgaW4gYSBkb3VibGUgcHJlY2lzaW9uCisJCQkq IGZsb2F0aW5nIHBvaW50LCBpbiBwcmFjdGljZSBpdCBoYXMgYWx3YXlzIGJlZW4gYW4gaW50ZWdl ciwgYW5kIGl0CisJCQkqIGlzIG91dHB1dCBhcyBzdWNoLiBUaGVyZWZvcmUsIHdlIGZvbGxvdyB1 c2FnZSBwcmVjZW5kZW50IG92ZXIgdGhlCisJCQkqIGFjdHVhbCBzdG9yYWdlIHN0cnVjdHVyZSwg YW5kIHJlYWQgaXQgaW4gYXMgYW4gaW50ZWdlci4KKwkJCSovCisJCQlwYXJzZS0+bmRpc3RpbmN0 ID0gcGdfc3RydG9pbnQzMl9zYWZlKHRva2VuLCBwYXJzZS0+ZXNjb250ZXh0KTsKKworCQkJaWYg KCFTT0ZUX0VSUk9SX09DQ1VSUkVEKHBhcnNlLT5lc2NvbnRleHQpKQorCQkJeworCQkJCXBhcnNl LT5zdGF0ZSA9IE5ESVNUX0VYUEVDVF9LRVk7CisJCQkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKKwkJ CX0KKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4dCwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX25k aXN0aW5jdDogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJCWVycmRldGFpbCgiSW52YWxpZCAi IFBHX05ESVNUSU5DVF9LRVlfTkRJU1RJTkNUICIgdmFsdWU6IFwiJXNcIi4iLAorCQkJCQkJCSAg dG9rZW4pKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllcnJzYXZlKHBhcnNlLT5lc2Nv bnRleHQsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04p LAorCQkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6IFwiJXNcIiIsIHBhcnNlLT5z dHIpLAorCQkJCQllcnJkZXRhaWwoIlVuZXhwZWN0ZWQgc2NhbGFyIFwiJXNcIi4iLCB0b2tlbikp OworCX0KKworCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworfQorCisvKgorICogQ29t cGFyZSB0aGUgYXR0cmlidXRlIGFycmF5cyBvZiB0d28gTVZORGlzdGluY3RJdGVtIHZhbHVlcywK KyAqIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZSBzZXRzLgorICovCitzdGF0aWMKK2Jvb2wgaGFzX2R1 cGxpY2F0ZV9hdHRyaWJ1dGVzKGNvbnN0IE1WTkRpc3RpbmN0SXRlbSAqYSwKKwkJCQkJCQkgIGNv bnN0IE1WTkRpc3RpbmN0SXRlbSAqYikKK3sKKwlpZiAoYS0+bmF0dHJpYnV0ZXMgIT0gYi0+bmF0 dHJpYnV0ZXMpCisJCXJldHVybiBmYWxzZTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgYS0+bmF0 dHJpYnV0ZXM7IGkrKykKKwl7CisJCWlmIChhLT5hdHRyaWJ1dGVzW2ldICE9IGItPmF0dHJpYnV0 ZXNbaV0pCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisg KiBFbnN1cmUgdGhhdCBhbiBhdHRudW0gYXBwZWFycyBhcyBvbmUgb2YgdGhlIGF0dG51bXMgaW4g YSBnaXZlbgorICogTVZORGlzdGluY3RJdGVtLgorICovCitzdGF0aWMKK2Jvb2wgaXRlbV9oYXNf YXR0bnVtKGNvbnN0IE1WTkRpc3RpbmN0SXRlbSAqaXRlbSwgQXR0ck51bWJlciBhdHRudW0pCit7 CisJZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtLT5uYXR0cmlidXRlczsgaSsrKQorCXsKKwkJaWYg KGF0dG51bSA9PSBpdGVtLT5hdHRyaWJ1dGVzW2ldKQorCQkJcmV0dXJuIHRydWU7CisJfQorCXJl dHVybiBmYWxzZTsKK30KKworLyoKKyAqIEVuc3VyZSB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIG9u ZSBNVk5EaXN0aW5jdEl0ZW0gQSBhcmUgYSBwcm9wZXIgc3Vic2V0CisgKiBvZiB0aGUgcmVmZXJl bmNlIE1WTkRpc3RpbmN0SXRlbSBCLgorICovCitzdGF0aWMKK2Jvb2wgaXRlbV9pc19hdHRudW1f c3Vic2V0KGNvbnN0IE1WTkRpc3RpbmN0SXRlbSAqaXRlbSwKKwkJCQkJCSAgIGNvbnN0IE1WTkRp c3RpbmN0SXRlbSAqcmVmaXRlbSkKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IGl0ZW0tPm5hdHRy aWJ1dGVzOyBpKyspCisJeworCQlpZiAoIWl0ZW1faGFzX2F0dG51bShyZWZpdGVtLGl0ZW0tPmF0 dHJpYnV0ZXNbaV0pKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKwlyZXR1cm4gdHJ1ZTsKK30KKwor LyoKKyAqIEdlbmVyYXRlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhbiBhcnJheSBvZiBhdHRudW0u CisgKgorICogRnJlZWluZyB0aGUgYWxsb2NhdGVkIHN0cmluZyBpcyByZXNwb25zaWJpbGl0eSBv ZiB0aGUgY2FsbGVyLgorICovCitzdGF0aWMKK2NvbnN0IGNoYXIgKml0ZW1fYXR0bnVtX2xpc3Qo Y29uc3QgTVZORGlzdGluY3RJdGVtICppdGVtKQoreworCVN0cmluZ0luZm9EYXRhCXN0cjsKKwor CWluaXRTdHJpbmdJbmZvKCZzdHIpOworCisJYXBwZW5kU3RyaW5nSW5mbygmc3RyLCAiJWQiLCBp dGVtLT5hdHRyaWJ1dGVzWzBdKTsKKworCWZvciAoaW50IGkgPSAxOyBpIDwgaXRlbS0+bmF0dHJp YnV0ZXM7IGkrKykKKwkJYXBwZW5kU3RyaW5nSW5mbygmc3RyLCAiLCAlZCIsIGl0ZW0tPmF0dHJp YnV0ZXNbaV0pOworCisJcmV0dXJuIHN0ci5kYXRhOworfQogCiAvKgogICogcGdfbmRpc3RpbmN0 X2luCiAgKgkJaW5wdXQgcm91dGluZSBmb3IgdHlwZSBwZ19uZGlzdGluY3QKICAqCi0gKiBwZ19u ZGlzdGluY3QgaXMgcmVhbCBlbm91Z2ggdG8gYmUgYSB0YWJsZSBjb2x1bW4sIGJ1dCBpdCBoYXMg bm8KLSAqIG9wZXJhdGlvbnMgb2YgaXRzIG93biwgYW5kIGRpc2FsbG93cyBpbnB1dCAoanVzdCBs aWtlIHBnX25vZGVfdHJlZSkuCisgKiBleGFtcGxlIGlucHV0OgorICogICAgIFt7ImF0dHJpYnV0 ZXMiOiBbNiwgLTFdLCAibmRpc3RpbmN0IjogMTR9LAorICogICAgICB7ImF0dHJpYnV0ZXMiOiBb NiwgLTJdLCAibmRpc3RpbmN0IjogOTE0M30sCisgKiAgICAgIHsiYXR0cmlidXRlcyI6IFstMSwt Ml0sICJuZGlzdGluY3QiOiAxMzQ1NH0sCisgKiAgICAgIHsiYXR0cmlidXRlcyI6IFs2LCAtMSwg LTJdLCAibmRpc3RpbmN0IjogMTQ1NDl9XQogICovCiBEYXR1bQogcGdfbmRpc3RpbmN0X2luKFBH X0ZVTkNUSU9OX0FSR1MpCiB7Ci0JZXJlcG9ydChFUlJPUiwKLQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCSBlcnJtc2coImNhbm5vdCBhY2NlcHQgYSB2YWx1 ZSBvZiB0eXBlICVzIiwgInBnX25kaXN0aW5jdCIpKSk7CisJY2hhcgkgICAqc3RyID0gUEdfR0VU QVJHX0NTVFJJTkcoMCk7CiAKLQlQR19SRVRVUk5fVk9JRCgpOwkJCS8qIGtlZXAgY29tcGlsZXIg cXVpZXQgKi8KKwlORGlzdGluY3RQYXJzZVN0YXRlIHBhcnNlX3N0YXRlOworCUpzb25QYXJzZUVy cm9yVHlwZSByZXN1bHQ7CisJSnNvbkxleENvbnRleHQgKmxleDsKKwlKc29uU2VtQWN0aW9uIHNl bV9hY3Rpb247CisKKwlpbnQJCWl0ZW1fbW9zdF9hdHRycyA9IDA7CisJaW50CQlpdGVtX21vc3Rf YXR0cnNfaWR4ID0gMDsKKworCS8qIGluaXRpYWxpemUgc2VtYW50aWMgc3RhdGUgKi8KKwlwYXJz ZV9zdGF0ZS5zdHIgPSBzdHI7CisJcGFyc2Vfc3RhdGUuc3RhdGUgPSBORElTVF9FWFBFQ1RfU1RB UlQ7CisJcGFyc2Vfc3RhdGUuZGlzdGluY3RfaXRlbXMgPSBOSUw7CisJcGFyc2Vfc3RhdGUuZXNj b250ZXh0ID0gZmNpbmZvLT5jb250ZXh0OworCXBhcnNlX3N0YXRlLmZvdW5kX2F0dHJpYnV0ZXMg PSBmYWxzZTsKKwlwYXJzZV9zdGF0ZS5mb3VuZF9uZGlzdGluY3QgPSBmYWxzZTsKKwlwYXJzZV9z dGF0ZS5hdHRudW1fbGlzdCA9IE5JTDsKKwlwYXJzZV9zdGF0ZS5uZGlzdGluY3QgPSAwOworCisJ Lyogc2V0IGNhbGxiYWNrcyAqLworCXNlbV9hY3Rpb24uc2Vtc3RhdGUgPSAodm9pZCAqKSAmcGFy c2Vfc3RhdGU7CisJc2VtX2FjdGlvbi5vYmplY3Rfc3RhcnQgPSBuZGlzdGluY3Rfb2JqZWN0X3N0 YXJ0OworCXNlbV9hY3Rpb24ub2JqZWN0X2VuZCA9IG5kaXN0aW5jdF9vYmplY3RfZW5kOworCXNl bV9hY3Rpb24uYXJyYXlfc3RhcnQgPSBuZGlzdGluY3RfYXJyYXlfc3RhcnQ7CisJc2VtX2FjdGlv bi5hcnJheV9lbmQgPSBuZGlzdGluY3RfYXJyYXlfZW5kOworCXNlbV9hY3Rpb24ub2JqZWN0X2Zp ZWxkX3N0YXJ0ID0gbmRpc3RpbmN0X29iamVjdF9maWVsZF9zdGFydDsKKwlzZW1fYWN0aW9uLm9i amVjdF9maWVsZF9lbmQgPSBOVUxMOworCXNlbV9hY3Rpb24uYXJyYXlfZWxlbWVudF9zdGFydCA9 IG5kaXN0aW5jdF9hcnJheV9lbGVtZW50X3N0YXJ0OworCXNlbV9hY3Rpb24uYXJyYXlfZWxlbWVu dF9lbmQgPSBOVUxMOworCXNlbV9hY3Rpb24uc2NhbGFyID0gbmRpc3RpbmN0X3NjYWxhcjsKKwor CWxleCA9IG1ha2VKc29uTGV4Q29udGV4dENzdHJpbmdMZW4oTlVMTCwgc3RyLCBzdHJsZW4oc3Ry KSwKKwkJCQkJCQkJCSAgIFBHX1VURjgsIHRydWUpOworCXJlc3VsdCA9IHBnX3BhcnNlX2pzb24o bGV4LCAmc2VtX2FjdGlvbik7CisJZnJlZUpzb25MZXhDb250ZXh0KGxleCk7CisKKwlpZiAocmVz dWx0ID09IEpTT05fU1VDQ0VTUykKKwl7CisJCU1WTkRpc3RpbmN0ICpuZGlzdGluY3Q7CisJCWlu dAkJCW5pdGVtcyA9IHBhcnNlX3N0YXRlLmRpc3RpbmN0X2l0ZW1zLT5sZW5ndGg7CisJCWJ5dGVh CSAgICpieXRlczsKKworCQlzd2l0Y2gocGFyc2Vfc3RhdGUuc3RhdGUpCisJCXsKKwkJCWNhc2Ug TkRJU1RfRVhQRUNUX0NPTVBMRVRFOgorCQkJCS8qCisJCQkJICogUGFyc2UgZW5kZWQgaW4gdGhl IGV4cGVjdGVkIHBsYWNlLiBXZSBzaG91bGQgaGF2ZSBhIGxpc3Qgb2YgaXRlbXMsCisJCQkJICog YnV0IGlmIHdlIGRvbid0IGl0IGlzIGJlY2F1c2UgdGhlcmUgYXJlIGJ1Z3MgaW4gb3RoZXIgcGFy c2Ugc3RlcHMuCisJCQkJICovCisJCQkJaWYgKHBhcnNlX3N0YXRlLmRpc3RpbmN0X2l0ZW1zID09 IE5JTCkKKwkJCQkJZWxvZyhFUlJPUiwKKwkJCQkJCSAicGdfbmRpc3RpbmN0IHBhcnNzaW5nIGNs YWltcyBzdWNjZXNzIHdpdGggYW4gZW1wdHkgaXRlbSBsaXN0LiIpOworCisJCQkJYnJlYWs7CisK KwkJCWNhc2UgTkRJU1RfRVhQRUNUX1NUQVJUOgorCQkJCS8qIGJsYW5rICovCisJCQkJZXJyc2F2 ZShwYXJzZV9zdGF0ZS5lc2NvbnRleHQsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9U RVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX25kaXN0aW5j dDogXCIlc1wiIiwgc3RyKSwKKwkJCQkJCWVycmRldGFpbCgiVmFsdWUgY2Fubm90IGJlIGVtcHR5 LiIpKTsKKwkJCQlQR19SRVRVUk5fTlVMTCgpOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0Ogor CQkJCS8qIFVuZXhwZWN0ZWQgZW5kLXN0YXRlLiBUT0RPOiBJcyB0aGlzIGFuIGVsb2coKT8gKi8K KwkJCQllcnJzYXZlKHBhcnNlX3N0YXRlLmVzY29udGV4dCwKKwkJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQkJZXJybXNnKCJtYWxmb3JtZWQg cGdfbmRpc3RpbmN0OiBcIiVzXCIiLCBzdHIpLAorCQkJCQkJZXJyZGV0YWlsKCJVbmV4cGVjdGVk IGVuZCBzdGF0ZSAlZC4iLCBwYXJzZV9zdGF0ZS5zdGF0ZSkpOworCQkJCVBHX1JFVFVSTl9OVUxM KCk7CisJCQkJYnJlYWs7CisJCX0KKworCQluZGlzdGluY3QgPSBwYWxsb2Mob2Zmc2V0b2YoTVZO RGlzdGluY3QsIGl0ZW1zKSArCisJCQkJCQkgICBuaXRlbXMgKiBzaXplb2YoTVZORGlzdGluY3RJ dGVtKSk7CisKKwkJbmRpc3RpbmN0LT5tYWdpYyA9IFNUQVRTX05ESVNUSU5DVF9NQUdJQzsKKwkJ bmRpc3RpbmN0LT50eXBlID0gU1RBVFNfTkRJU1RJTkNUX1RZUEVfQkFTSUM7CisJCW5kaXN0aW5j dC0+bml0ZW1zID0gbml0ZW1zOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbml0ZW1zOyBpKysp CisJCXsKKwkJCU1WTkRpc3RpbmN0SXRlbSAqaXRlbSA9IHBhcnNlX3N0YXRlLmRpc3RpbmN0X2l0 ZW1zLT5lbGVtZW50c1tpXS5wdHJfdmFsdWU7CisKKwkJCS8qCisJCQkgKiBFbnN1cmUgdGhhdCB0 aGlzIGl0ZW0gZG9lcyBub3QgZHVwbGljYXRlIHRoZSBhdHRyaWJ1dGVzIG9mIGFueQorCQkJICog cHJlLWV4aXN0aW5nIGl0ZW0uCisJCQkgKi8KKwkJCWZvciAoaW50IGogPSAwOyBqIDwgaTsgaisr KQorCQkJeworCQkJCWlmIChoYXNfZHVwbGljYXRlX2F0dHJpYnV0ZXMoaXRlbSwgJm5kaXN0aW5j dC0+aXRlbXNbal0pKQorCQkJCXsKKwkJCQkJZXJyc2F2ZShwYXJzZV9zdGF0ZS5lc2NvbnRleHQs CisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJ CQkJCQkJZXJybXNnKCJtYWxmb3JtZWQgcGdfbmRpc3RpbmN0OiBcIiVzXCIiLCBzdHIpLAorCQkJ CQkJCWVycmRldGFpbCgiRHVwbGljYXRlIFwiIiBQR19ORElTVElOQ1RfS0VZX0FUVFJJQlVURVMg IlwiIGFycmF5IDogWyVzXSIsCisJCQkJCQkJCQkJaXRlbV9hdHRudW1fbGlzdChpdGVtKSkpOwor CQkJCQlQR19SRVRVUk5fTlVMTCgpOworCQkJCX0KKwkJCX0KKworCQkJbmRpc3RpbmN0LT5pdGVt c1tpXS5uZGlzdGluY3QgPSBpdGVtLT5uZGlzdGluY3Q7CisJCQluZGlzdGluY3QtPml0ZW1zW2ld Lm5hdHRyaWJ1dGVzID0gaXRlbS0+bmF0dHJpYnV0ZXM7CisJCQluZGlzdGluY3QtPml0ZW1zW2ld LmF0dHJpYnV0ZXMgPSBpdGVtLT5hdHRyaWJ1dGVzOworCisJCQkvKgorCQkJICogS2VlcCB0cmFj ayBvZiB0aGUgZmlyc3QgbG9uZ2VzdCBhdHRyaWJ1dGUgbGlzdC4gQWxsIG90aGVyIGF0dHJpYnV0 ZQorCQkJICogbGlzdHMgbXVzdCBiZSBhIHN1YnNldCBvZiB0aGlzIGxpc3QuCisJCQkgKi8KKwkJ CWlmIChpdGVtLT5uYXR0cmlidXRlcyA+IGl0ZW1fbW9zdF9hdHRycykKKwkJCXsKKwkJCQlpdGVt X21vc3RfYXR0cnMgPSBpdGVtLT5uYXR0cmlidXRlczsKKwkJCQlpdGVtX21vc3RfYXR0cnNfaWR4 ID0gaTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIEZyZWUgdGhlIE1WTkRpc3RpbmN0SXRlbSwgYnV0 IG5vdCB0aGUgYXR0cmlidXRlcyB3ZSdyZSBzdGlsbAorCQkJICogdXNpbmcuCisJCQkgKi8KKwkJ CXBmcmVlKGl0ZW0pOworCQl9CisKKwkJLyoKKwkJICogVmVyaWZ5IHRoYXQgYWxsIGF0dG51bSBz ZXRzIGFyZSBhIHByb3BlciBzdWJzZXQgb2YgdGhlIGZpcnN0IGxvbmdlc3QKKwkJICogYXR0bnVt IHNldC4KKwkJICovCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbml0ZW1zOyBpKyspCisJCXsKKwkJ CWlmIChpID09IGl0ZW1fbW9zdF9hdHRyc19pZHgpCisJCQkJY29udGludWU7CisKKwkJCWlmICgh aXRlbV9pc19hdHRudW1fc3Vic2V0KCZuZGlzdGluY3QtPml0ZW1zW2ldLAorCQkJCQkJCQkJICAg Jm5kaXN0aW5jdC0+aXRlbXNbaXRlbV9tb3N0X2F0dHJzX2lkeF0pKQorCQkJeworCQkJCWNvbnN0 IE1WTkRpc3RpbmN0SXRlbSAgKml0ZW0gPSAmbmRpc3RpbmN0LT5pdGVtc1tpXTsKKwkJCQljb25z dCBNVk5EaXN0aW5jdEl0ZW0gICpyZWZpdGVtID0gJm5kaXN0aW5jdC0+aXRlbXNbaXRlbV9tb3N0 X2F0dHJzX2lkeF07CisJCQkJY29uc3QgY2hhciAqaXRlbV9saXN0ID0gaXRlbV9hdHRudW1fbGlz dChpdGVtKTsKKwkJCQljb25zdCBjaGFyICpyZWZpdGVtX2xpc3QgPSBpdGVtX2F0dG51bV9saXN0 KHJlZml0ZW0pOworCisJCQkJZXJyc2F2ZShwYXJzZV9zdGF0ZS5lc2NvbnRleHQsCisJCQkJCQll cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJCWVycm1z ZygibWFsZm9ybWVkIHBnX25kaXN0aW5jdDogXCIlc1wiIiwgc3RyKSwKKwkJCQkJCWVycmRldGFp bCgiXCIiIFBHX05ESVNUSU5DVF9LRVlfQVRUUklCVVRFUyAiXCIgYXJyYXk6IFslc10iCisJCQkJ CQkJCSAgIm11c3QgYmUgYSBzdWJzZXQgb2YgYXJyYXk6IFslc10iLAorCQkJCQkJCQkgIGl0ZW1f bGlzdCwgcmVmaXRlbV9saXN0KSk7CisJCQkJUEdfUkVUVVJOX05VTEwoKTsKKwkJCX0KKwkJfQor CisJCWJ5dGVzID0gc3RhdGV4dF9uZGlzdGluY3Rfc2VyaWFsaXplKG5kaXN0aW5jdCk7CisKKwkJ bGlzdF9mcmVlKHBhcnNlX3N0YXRlLmRpc3RpbmN0X2l0ZW1zKTsKKwkJZm9yIChpbnQgaSA9IDA7 IGkgPCBuaXRlbXM7IGkrKykKKwkJCXBmcmVlKG5kaXN0aW5jdC0+aXRlbXNbaV0uYXR0cmlidXRl cyk7CisJCXBmcmVlKG5kaXN0aW5jdCk7CisKKwkJUEdfUkVUVVJOX0JZVEVBX1AoYnl0ZXMpOwor CX0KKworCS8qCisJICogSWYgZXNjb250ZXh0IGFscmVhZHkgc2V0LCBqdXN0IHVzZSB0aGF0Lgor CSAqIEFueXRoaW5nIGVsc2UgaXMgYSBnZW5lcmljIEpTT04gcGFyc2UgZXJyb3IuCisJICovCisJ aWYgKCFTT0ZUX0VSUk9SX09DQ1VSUkVEKHBhcnNlX3N0YXRlLmVzY29udGV4dCkpCisJCWVycnNh dmUocGFyc2Vfc3RhdGUuZXNjb250ZXh0LAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RF WFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX25kaXN0aW5jdDog XCIlc1wiIiwgc3RyKSwKKwkJCQllcnJkZXRhaWwoIk11c3QgYmUgdmFsaWQgSlNPTi4iKSk7CisK KwlQR19SRVRVUk5fTlVMTCgpOwogfQogCiAvKgogICogcGdfbmRpc3RpbmN0X291dAogICoJCW91 dHB1dCByb3V0aW5lIGZvciB0eXBlIHBnX25kaXN0aW5jdAogICoKLSAqIFByb2R1Y2VzIGEgaHVt YW4tcmVhZGFibGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlLgorICogUHJvZHVjZXMgYSBo dW1hbi1yZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUsIGluIHRoZSBmb3JtYXQ6 CisgKiAgIFt7ImF0dHJpYnV0ZXMiOiBbYXR0bnVtLC4gLi5dLCAibmRpc3RpbmN0IjogaW50fSwg Li4uXQorICoKICAqLwogRGF0dW0KIHBnX25kaXN0aW5jdF9vdXQoUEdfRlVOQ1RJT05fQVJHUykK IHsKLQlieXRlYQkgICAqZGF0YSA9IFBHX0dFVEFSR19CWVRFQV9QUCgwKTsKLQlNVk5EaXN0aW5j dCAqbmRpc3QgPSBzdGF0ZXh0X25kaXN0aW5jdF9kZXNlcmlhbGl6ZShkYXRhKTsKLQlpbnQJCQlp OwotCVN0cmluZ0luZm9EYXRhIHN0cjsKKwlieXRlYQkJICAgKmRhdGEgPSBQR19HRVRBUkdfQllU RUFfUFAoMCk7CisJTVZORGlzdGluY3QJICAgKm5kaXN0ID0gc3RhdGV4dF9uZGlzdGluY3RfZGVz ZXJpYWxpemUoZGF0YSk7CisJaW50MzIJCQlpOworCVN0cmluZ0luZm9EYXRhCXN0cjsKIAogCWlu aXRTdHJpbmdJbmZvKCZzdHIpOwogCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZzdHIsICdbJyk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BnX25kaXN0aW5jdC5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BnX25kaXN0aW5jdC5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk3NWE5ZWZmMDlkCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZ19uZGlzdGluY3Qub3V0CkBAIC0wLDAgKzEsMTA5 IEBACistLSBUZXN0cyBmb3IgdHlwZSBwZ19kaXN0aW5jdAorLS0gSW52YWxpZCBpbnB1dHMKK1NF TEVDVCAnW10nOjpwZ19uZGlzdGluY3Q7CitFUlJPUjogIG1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6 ICJbXSIKK0xJTkUgMTogU0VMRUNUICdbXSc6OnBnX25kaXN0aW5jdDsKKyAgICAgICAgICAgICAg IF4KK0RFVEFJTDogIEl0ZW0gYXJyYXkgY2Fubm90IGJlIGVtcHR5LgorU0VMRUNUICdbbnVsbF0n OjpwZ19uZGlzdGluY3Q7CitFUlJPUjogIG1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6ICJbbnVsbF0i CitMSU5FIDE6IFNFTEVDVCAnW251bGxdJzo6cGdfbmRpc3RpbmN0OworICAgICAgICAgICAgICAg XgorREVUQUlMOiAgSXRlbSBsaXN0IGVsZW1lbnRzIGNhbm5vdCBiZSBudWxsLgorLS0gSW52YWxp ZCBrZXlzCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXNfaW52YWxpZCIgOiBbMiwzXSwgIm5kaXN0aW5j dCIgOiA0fV0nOjpwZ19uZGlzdGluY3Q7CitFUlJPUjogIG1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6 ICJbeyJhdHRyaWJ1dGVzX2ludmFsaWQiIDogWzIsM10sICJuZGlzdGluY3QiIDogNH1dIgorTElO RSAxOiBTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXNfaW52YWxpZCIgOiBbMiwzXSwgIm5kaXN0aW5jdCIg OiA0fV0nOjouLi4KKyAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEludmFsaWQga2V5ICJhdHRy aWJ1dGVzX2ludmFsaWQiLiBPbmx5IGFsbG93ZWQga2V5cyBhcmUgImF0dHJpYnV0ZXMiIGFuZCAi bmRpc3RpbmN0Ii4KK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwzXSwgImludmFsaWQiIDog MywgIm5kaXN0aW5jdCIgOiA0fV0nOjpwZ19uZGlzdGluY3Q7CitFUlJPUjogIG1hbGZvcm1lZCBw Z19uZGlzdGluY3Q6ICJbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiaW52YWxpZCIgOiAzLCAibmRp c3RpbmN0IiA6IDR9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAi aW52YWxpZCIgOiAzLCAibmRpc3RpbmN0IiA6Li4uCisgICAgICAgICAgICAgICBeCitERVRBSUw6 ICBJbnZhbGlkIGtleSAiaW52YWxpZCIuIE9ubHkgYWxsb3dlZCBrZXlzIGFyZSAiYXR0cmlidXRl cyIgYW5kICJuZGlzdGluY3QiLgorLS0gTWlzc2luZyBrZXkKK1NFTEVDVCAnW3siYXR0cmlidXRl cyIgOiBbMiwzXX1dJzo6cGdfbmRpc3RpbmN0OworRVJST1I6ICBtYWxmb3JtZWQgcGdfbmRpc3Rp bmN0OiAiW3siYXR0cmlidXRlcyIgOiBbMiwzXX1dIgorTElORSAxOiBTRUxFQ1QgJ1t7ImF0dHJp YnV0ZXMiIDogWzIsM119XSc6OnBnX25kaXN0aW5jdDsKKyAgICAgICAgICAgICAgIF4KK0RFVEFJ TDogIEl0ZW0gbXVzdCBjb250YWluICJuZGlzdGluY3QiIGtleS4KK1NFTEVDVCAnW3sibmRpc3Rp bmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdDsKK0VSUk9SOiAgbWFsZm9ybWVkIHBnX25kaXN0aW5j dDogIlt7Im5kaXN0aW5jdCIgOiA0fV0iCitMSU5FIDE6IFNFTEVDVCAnW3sibmRpc3RpbmN0IiA6 IDR9XSc6OnBnX25kaXN0aW5jdDsKKyAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEl0ZW0gbXVz dCBjb250YWluICJhdHRyaWJ1dGVzIiBrZXkuCistLSBWYWxpZCBrZXlzLCBpbnZhbGlkIHZhbHVl cworU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IG51bGwsICJuZGlzdGluY3QiIDogNH1dJzo6cGdf bmRpc3RpbmN0OworRVJST1I6ICBtYWxmb3JtZWQgcGdfbmRpc3RpbmN0OiAiW3siYXR0cmlidXRl cyIgOiBudWxsLCAibmRpc3RpbmN0IiA6IDR9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1 dGVzIiA6IG51bGwsICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpc3RpLi4uCisgICAgICAgICAg ICAgICBeCitERVRBSUw6ICBVbmV4cGVjdGVkIHNjYWxhciAibnVsbCIuCitTRUxFQ1QgJ1t7ImF0 dHJpYnV0ZXMiIDogWzIsbnVsbF0sICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpc3RpbmN0Owor RVJST1I6ICBtYWxmb3JtZWQgcGdfbmRpc3RpbmN0OiAiW3siYXR0cmlidXRlcyIgOiBbMixudWxs XSwgIm5kaXN0aW5jdCIgOiA0fV0iCitMSU5FIDE6IFNFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBb MixudWxsXSwgIm5kaXN0aW5jdCIgOiA0fV0nOjpwZ19uZC4uLgorICAgICAgICAgICAgICAgXgor REVUQUlMOiAgQXR0bnVtIGxpc3QgZWxlbWVudHMgY2Fubm90IGJlIG51bGwuCitTRUxFQ1QgJ1t7 ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogbnVsbH1dJzo6cGdfbmRpc3RpbmN0 OworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAibnVsbCIK K0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6IG51 bGx9XSc6OnBnX25kLi4uCisgICAgICAgICAgICAgICBeCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMi IDogWzIsImEiXSwgIm5kaXN0aW5jdCIgOiA0fV0nOjpwZ19uZGlzdGluY3Q7CitFUlJPUjogIGlu dmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAiYSIKK0xJTkUgMTogU0VMRUNU ICdbeyJhdHRyaWJ1dGVzIiA6IFsyLCJhIl0sICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpLi4u CisgICAgICAgICAgICAgICBeCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlz dGluY3QiIDogImEifV0nOjpwZ19uZGlzdGluY3Q7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3lu dGF4IGZvciB0eXBlIGludGVnZXI6ICJhIgorTElORSAxOiBTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMi IDogWzIsM10sICJuZGlzdGluY3QiIDogImEifV0nOjpwZ19uZGkuLi4KKyAgICAgICAgICAgICAg IF4KK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwzXSwgIm5kaXN0aW5jdCIgOiBbXX1dJzo6 cGdfbmRpc3RpbmN0OworRVJST1I6ICBtYWxmb3JtZWQgcGdfbmRpc3RpbmN0OiAiW3siYXR0cmli dXRlcyIgOiBbMiwzXSwgIm5kaXN0aW5jdCIgOiBbXX1dIgorTElORSAxOiBTRUxFQ1QgJ1t7ImF0 dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogW119XSc6OnBnX25kaXMuLi4KKyAgICAg ICAgICAgICAgIF4KK0RFVEFJTDogIEFycmF5IGZvdW5kIGluIHVuZXhwZWN0ZWQgcGxhY2UuCitT RUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogW251bGxdfV0nOjpw Z19uZGlzdGluY3Q7CitFUlJPUjogIG1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6ICJbeyJhdHRyaWJ1 dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6IFtudWxsXX1dIgorTElORSAxOiBTRUxFQ1QgJ1t7 ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogW251bGxdfV0nOjpwZ18uLi4KKyAg ICAgICAgICAgICAgIF4KK0RFVEFJTDogIEFycmF5IGZvdW5kIGluIHVuZXhwZWN0ZWQgcGxhY2Uu CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogWzEsbnVsbF19 XSc6OnBnX25kaXN0aW5jdDsKK0VSUk9SOiAgbWFsZm9ybWVkIHBnX25kaXN0aW5jdDogIlt7ImF0 dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogWzEsbnVsbF19XSIKK0xJTkUgMTogU0VM RUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6IFsxLG51bGxdfV0nOjpw Li4uCisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBBcnJheSBmb3VuZCBpbiB1bmV4cGVjdGVk IHBsYWNlLgorU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IDEsICJuZGlzdGluY3QiIDogNH1dJzo6 cGdfbmRpc3RpbmN0OworRVJST1I6ICBtYWxmb3JtZWQgcGdfbmRpc3RpbmN0OiAiW3siYXR0cmli dXRlcyIgOiAxLCAibmRpc3RpbmN0IiA6IDR9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1 dGVzIiA6IDEsICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpc3RpbmN0Li4uCisgICAgICAgICAg ICAgICBeCitERVRBSUw6ICBVbmV4cGVjdGVkIHNjYWxhciAiMSIuCitTRUxFQ1QgJ1t7ImF0dHJp YnV0ZXMiIDogImEiLCAibmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdDsKK0VSUk9SOiAg bWFsZm9ybWVkIHBnX25kaXN0aW5jdDogIlt7ImF0dHJpYnV0ZXMiIDogImEiLCAibmRpc3RpbmN0 IiA6IDR9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6ICJhIiwgIm5kaXN0aW5j dCIgOiA0fV0nOjpwZ19uZGlzdGluLi4uCisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBVbmV4 cGVjdGVkIHNjYWxhciAiYSIuCistLSBEdXBsaWNhdGVkIGF0dHJpYnV0ZXMKK1NFTEVDVCAnW3si YXR0cmlidXRlcyIgOiBbMiwyXSwgIm5kaXN0aW5jdCIgOiA0fV0nOjpwZ19uZGlzdGluY3Q7CitF UlJPUjogIG1hbGZvcm1lZCBwZ19uZGlzdGluY3Q6ICJbeyJhdHRyaWJ1dGVzIiA6IFsyLDJdLCAi bmRpc3RpbmN0IiA6IDR9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDJd LCAibmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0Li4uCisgICAgICAgICAgICAgICBeCitERVRB SUw6ICBhdHRudW0gbGlzdCBkdXBsaWNhdGUgdmFsdWUgZm91bmQ6IDIuCistLSBWYWxpZCBpbnB1 dHMKKy0tIER1cGxpY2F0ZWQgYXR0cmlidXRlIGxpc3RzLgorU0VMRUNUICdbeyJhdHRyaWJ1dGVz IiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsy LDNdLCAibmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdDsKK0VSUk9SOiAgbWFsZm9ybWVk IHBnX25kaXN0aW5jdDogIlt7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogNH0s CisgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogNH1dIgorTElO RSAxOiBTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogNH0sCisg ICAgICAgICAgICAgICBeCitERVRBSUw6ICBEdXBsaWNhdGUgImF0dHJpYnV0ZXMiIGFycmF5IDog WzIsIDNdCistLSBQYXJ0aWFsbHktY292ZXJlZCBhdHRyaWJ1dGUgbGlzdHMuCitTRUxFQ1QgJ1t7 ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICB7ImF0dHJp YnV0ZXMiIDogWzIsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgeyJhdHRyaWJ1dGVz IiA6IFsyLDMsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6 IFsxLDMsLTEsLTJdLCAibmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdDsKK0VSUk9SOiAg bWFsZm9ybWVkIHBnX25kaXN0aW5jdDogIlt7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGlu Y3QiIDogNH0sCisgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsLTFdLCAibmRpc3RpbmN0IiA6 IDR9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMsLTFdLCAibmRpc3RpbmN0IiA6IDR9 LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsxLDMsLTEsLTJdLCAibmRpc3RpbmN0IiA6IDR9 XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6 IDR9LAorICAgICAgICAgICAgICAgXgorREVUQUlMOiAgImF0dHJpYnV0ZXMiIGFycmF5OiBbMiwg M11tdXN0IGJlIGEgc3Vic2V0IG9mIGFycmF5OiBbMSwgMywgLTEsIC0yXQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKaW5kZXggZjU2NDgyZmI5ZjEuLmYzZjBiNWYyZjMxIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTI4LDcgKzI4LDcgQEAgdGVzdDogc3RyaW5ncyBtZDUg bnVtZXJvbG9neSBwb2ludCBsc2VnIGxpbmUgYm94IHBhdGggcG9seWdvbiBjaXJjbGUgZGF0ZSB0 aW1lIHQKICMgZ2VvbWV0cnkgZGVwZW5kcyBvbiBwb2ludCwgbHNlZywgbGluZSwgYm94LCBwYXRo LCBwb2x5Z29uLCBjaXJjbGUKICMgaG9yb2xvZ3kgZGVwZW5kcyBvbiBkYXRlLCB0aW1lLCB0aW1l dHosIHRpbWVzdGFtcCwgdGltZXN0YW1wdHosIGludGVydmFsCiAjIC0tLS0tLS0tLS0KLXRlc3Q6 IGdlb21ldHJ5IGhvcm9sb2d5IHRzdHlwZXMgcmVnZXggdHlwZV9zYW5pdHkgb3ByX3Nhbml0eSBt aXNjX3Nhbml0eSBjb21tZW50cyBleHByZXNzaW9ucyB1bmljb2RlIHhpZCBtdmNjIGRhdGFiYXNl IHN0YXRzX2ltcG9ydAordGVzdDogZ2VvbWV0cnkgaG9yb2xvZ3kgdHN0eXBlcyByZWdleCB0eXBl X3Nhbml0eSBvcHJfc2FuaXR5IG1pc2Nfc2FuaXR5IGNvbW1lbnRzIGV4cHJlc3Npb25zIHVuaWNv ZGUgeGlkIG12Y2MgZGF0YWJhc2Ugc3RhdHNfaW1wb3J0IHBnX25kaXN0aW5jdAogCiAjIC0tLS0t LS0tLS0KICMgTG9hZCBodWdlIGFtb3VudHMgb2YgZGF0YQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGdfbmRpc3RpbmN0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BnX25k aXN0aW5jdC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNhODlm ZWQ2ZmUyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGdfbmRpc3Rp bmN0LnNxbApAQCAtMCwwICsxLDM0IEBACistLSBUZXN0cyBmb3IgdHlwZSBwZ19kaXN0aW5jdAor CistLSBJbnZhbGlkIGlucHV0cworU0VMRUNUICdbXSc6OnBnX25kaXN0aW5jdDsKK1NFTEVDVCAn W251bGxdJzo6cGdfbmRpc3RpbmN0OworLS0gSW52YWxpZCBrZXlzCitTRUxFQ1QgJ1t7ImF0dHJp YnV0ZXNfaW52YWxpZCIgOiBbMiwzXSwgIm5kaXN0aW5jdCIgOiA0fV0nOjpwZ19uZGlzdGluY3Q7 CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJpbnZhbGlkIiA6IDMsICJuZGlzdGlu Y3QiIDogNH1dJzo6cGdfbmRpc3RpbmN0OworLS0gTWlzc2luZyBrZXkKK1NFTEVDVCAnW3siYXR0 cmlidXRlcyIgOiBbMiwzXX1dJzo6cGdfbmRpc3RpbmN0OworU0VMRUNUICdbeyJuZGlzdGluY3Qi IDogNH1dJzo6cGdfbmRpc3RpbmN0OworLS0gVmFsaWQga2V5cywgaW52YWxpZCB2YWx1ZXMKK1NF TEVDVCAnW3siYXR0cmlidXRlcyIgOiBudWxsLCAibmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0 aW5jdDsKK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMixudWxsXSwgIm5kaXN0aW5jdCIgOiA0 fV0nOjpwZ19uZGlzdGluY3Q7CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlz dGluY3QiIDogbnVsbH1dJzo6cGdfbmRpc3RpbmN0OworU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6 IFsyLCJhIl0sICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpc3RpbmN0OworU0VMRUNUICdbeyJh dHRyaWJ1dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6ICJhIn1dJzo6cGdfbmRpc3RpbmN0Owor U0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAibmRpc3RpbmN0IiA6IFtdfV0nOjpwZ19u ZGlzdGluY3Q7CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlzdGluY3QiIDog W251bGxdfV0nOjpwZ19uZGlzdGluY3Q7CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10s ICJuZGlzdGluY3QiIDogWzEsbnVsbF19XSc6OnBnX25kaXN0aW5jdDsKK1NFTEVDVCAnW3siYXR0 cmlidXRlcyIgOiAxLCAibmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdDsKK1NFTEVDVCAn W3siYXR0cmlidXRlcyIgOiAiYSIsICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpc3RpbmN0Owor LS0gRHVwbGljYXRlZCBhdHRyaWJ1dGVzCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsMl0s ICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRpc3RpbmN0OworCistLSBWYWxpZCBpbnB1dHMKKy0t IER1cGxpY2F0ZWQgYXR0cmlidXRlIGxpc3RzLgorU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsy LDNdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAi bmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdDsKKy0tIFBhcnRpYWxseS1jb3ZlcmVkIGF0 dHJpYnV0ZSBsaXN0cy4KK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwzXSwgIm5kaXN0aW5j dCIgOiA0fSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwtMV0sICJuZGlzdGluY3QiIDog NH0sCisgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsMywtMV0sICJuZGlzdGluY3QiIDogNH0s CisgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzEsMywtMSwtMl0sICJuZGlzdGluY3QiIDogNH1d Jzo6cGdfbmRpc3RpbmN0OwotLSAKMi41MS4xCgo= --00000000000009c16c0643879075 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0004-Add-working-input-function-for-pg_dependencies.patch" Content-Disposition: attachment; filename="v13-0004-Add-working-input-function-for-pg_dependencies.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhyftq2q3 RnJvbSA1ZDdkYzBjYTE5ZWEyYTU0Njg4NmViOThmN2YyOWJiMWZlYzBlNWFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWllci54eXo+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMTY6NTU6NDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHYx MyA0LzddIEFkZCB3b3JraW5nIGlucHV0IGZ1bmN0aW9uIGZvciBwZ19kZXBlbmRlbmNpZXMuCgpU aGlzIHdpbGwgY29uc3VtZSB0aGUgZm9ybWF0IHRoYXQgd2FzIGVzdGFibGlzaGVkIHdoZW4gdGhl IG91dHB1dApmdW5jdGlvbiBmb3IgcGdfZGVwZW5kZW5jaWVzIHdhcyByZWNlbnRseSBjaGFuZ2Vk LgoKVGhpcyB3aWxsIGJlIG5lZWRlZCBmb3IgaW1wb3J0aW5nIGV4dGVuZGVkIHN0YXRpc3RpY3Mu Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2RlcGVuZGVuY2llcy5jICAgICAgIHwgNzQ2 ICsrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZ19kZXBlbmRl bmNpZXMub3V0IHwgMTI4ICsrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAg ICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wZ19kZXBlbmRlbmNpZXMu c3FsICAgICAgfCAgMzkgKwogNCBmaWxlcyBjaGFuZ2VkLCA5MDQgaW5zZXJ0aW9ucygrKSwgMTEg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wZ19kZXBlbmRlbmNpZXMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVz cy9zcWwvcGdfZGVwZW5kZW5jaWVzLnNxbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19kZXBlbmRlbmNpZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19kZXBlbmRl bmNpZXMuYwppbmRleCA4NzE4MWFhMDBlOS4uZmU0YWVjYjJmZDcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZ19kZXBlbmRlbmNpZXMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcGdfZGVwZW5kZW5jaWVzLmMKQEAgLTE0LDI5ICsxNCw3NTUgQEAKIAogI2luY2x1ZGUg InBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJjb21tb24vaW50LmgiCisjaW5jbHVkZSAiY29tbW9u L2pzb25hcGkuaCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgorI2luY2x1ZGUgIm1iL3Bn X3djaGFyLmgiCisjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgiCiAjaW5jbHVkZSAic3RhdGlz dGljcy9leHRlbmRlZF9zdGF0c19pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0YXRpc3RpY3Mvc3Rh dGlzdGljc19mb3JtYXQuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUg InV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogCit0eXBlZGVm IGVudW0KK3sKKwlERVBTX0VYUEVDVF9TVEFSVCA9IDAsCisJREVQU19FWFBFQ1RfSVRFTSwKKwlE RVBTX0VYUEVDVF9LRVksCisJREVQU19FWFBFQ1RfQVRUTlVNX0xJU1QsCisJREVQU19FWFBFQ1Rf QVRUTlVNLAorCURFUFNfRVhQRUNUX0RFUEVOREVOQ1ksCisJREVQU19FWFBFQ1RfREVHUkVFLAor CURFUFNfUEFSU0VfQ09NUExFVEUKK30gRGVwc1BhcnNlU2VtYW50aWNTdGF0ZTsKKwordHlwZWRl ZiBzdHJ1Y3QKK3sKKwljb25zdCBjaGFyICpzdHI7CisJRGVwc1BhcnNlU2VtYW50aWNTdGF0ZSBz dGF0ZTsKKworCUxpc3QJICAgKmRlcGVuZGVuY3lfbGlzdDsKKwlOb2RlCSAgICplc2NvbnRleHQ7 CisKKwlib29sCQlmb3VuZF9hdHRyaWJ1dGVzOwkvKiBJdGVtIGhhcyBhbiBhdHRyaWJ1dGVzIGtl eSAqLworCWJvb2wJCWZvdW5kX2RlcGVuZGVuY3k7CS8qIEl0ZW0gaGFzIGFuIGRlcGVuZGVuY3kg a2V5ICovCisJYm9vbAkJZm91bmRfZGVncmVlOwkvKiBJdGVtIGhhcyBkZWdyZWUga2V5ICovCisJ TGlzdAkgICAqYXR0bnVtX2xpc3Q7CS8qIEFjY3VtdWxhdGVkIGF0dHJpYnV0ZXMgYXR0bnVtcyAq LworCUF0dHJOdW1iZXIJZGVwZW5kZW5jeTsKKwlkb3VibGUJCWRlZ3JlZTsKK30gRGVwZW5kZW5j aWVzUGFyc2VTdGF0ZTsKKworLyoKKyAqIEludm9rZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggTVZE ZXBlbmRlbmN5IG9iamVjdC4KKyAqCisgKiBUaGUgZW50aXJlIEpTT04gZG9jdW1lbnQgc2hvdWwg YmUgb25lIGFycmF5IG9mIE1WRGVwZW5kZW5jeSBvYmplY3RzLgorICoKKyAqIElmIHdlJ3JlIGFu eXdoZXJlIGVsc2UgaW4gdGhlIGRvY3VtZW50LCBpdCdzIGFuIGVycm9yLgorICovCitzdGF0aWMg SnNvblBhcnNlRXJyb3JUeXBlCitkZXBlbmRlbmNpZXNfb2JqZWN0X3N0YXJ0KHZvaWQgKnN0YXRl KQoreworCURlcGVuZGVuY2llc1BhcnNlU3RhdGUgKnBhcnNlID0gc3RhdGU7CisKKwlzd2l0Y2go cGFyc2UtPnN0YXRlKQorCXsKKwkJY2FzZSBERVBTX0VYUEVDVF9JVEVNOgorCQkJLyogTm93IHdl IGV4cGVjdCB0byBzZWUgYXR0cmlidXRlcy9kZXBlbmRlbmN5L2RlZ3JlZSBrZXlzICovCisJCQlw YXJzZS0+c3RhdGUgPSBERVBTX0VYUEVDVF9LRVk7CisJCQlyZXR1cm4gSlNPTl9TVUNDRVNTOwor CQkJYnJlYWs7CisKKwkJY2FzZSBERVBTX0VYUEVDVF9TVEFSVDoKKwkJCS8qIHBnX2RlcGVuZGVu Y2llcyBtdXN0IGJlZ2luIHdpdGggYSAnWycgKi8KKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4 dCwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJ CQkJCWVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0 ciksCisJCQkJCWVycmRldGFpbCgiSW5pdGlhbCBlbGVtZW50IG11c3QgYmUgYW4gYXJyYXkuIikp OworCQkJYnJlYWs7CisKKwkJY2FzZSBERVBTX0VYUEVDVF9LRVk6CisJCQkvKiBJbiBhbiBvYmpl Y3QsIGV4cGVjdGluZyBrZXkgKi8KKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4dCwKKwkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCWVycm1z ZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJ CWVycmRldGFpbCgiRXhwZWN0ZWQgYW4gb2JqZWN0IGtleS4iKSk7CisJCQlicmVhazsKKworCQlj YXNlIERFUFNfRVhQRUNUX0FUVE5VTV9MSVNUOgorCQkJLyogSnVzdCBmb2xsb3dlZCBhbiAiYXR0 cmlidXRlcyI6IGtleSAqLworCQkJZXJyc2F2ZShwYXJzZS0+ZXNjb250ZXh0LAorCQkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJZXJybXNnKCJt YWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVzXCIiLCBwYXJzZS0+c3RyKSwKKwkJCQkJZXJy ZGV0YWlsKCJWYWx1ZSBvZiBcIiIgUEdfREVQRU5ERU5DSUVTX0tFWV9BVFRSSUJVVEVTCisJCQkJ CQkJICAiXCIgbXVzdCBiZSBhbiBhcnJheSBvZiBhdHRyaWJ1dGUgbnVtYmVycy4iKSk7CisJCQli cmVhazsKKworCQljYXNlIERFUFNfRVhQRUNUX0FUVE5VTToKKwkJCS8qIEluIGFuIGF0dG51bSBs aXN0LCBleHBlY3Qgb25seSBzY2FsYXIgaW50ZWdlcnMgKi8KKwkJCWVycnNhdmUocGFyc2UtPmVz Y29udGV4dCwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElP TiksCisJCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFy c2UtPnN0ciksCisJCQkJCWVycmRldGFpbCgiQXR0cmlidXRlIGxpc3RzIGNhbiBvbmx5IGNvbnRh aW4gYXR0cmlidXRlIG51bWJlcnMuIikpOworCQkJYnJlYWs7CisKKwkJY2FzZSBERVBTX0VYUEVD VF9ERVBFTkRFTkNZOgorCQkJLyogSnVzdCBmb2xsb3dlZCBhbiAiZGVwZW5kZW5jeSI6IGtleSAq LworCQkJZXJyc2F2ZShwYXJzZS0+ZXNjb250ZXh0LAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJZXJybXNnKCJtYWxmb3JtZWQgcGdfZGVw ZW5kZW5jaWVzOiBcIiVzXCIiLCBwYXJzZS0+c3RyKSwKKwkJCQkJZXJyZGV0YWlsKCJWYWx1ZSBv ZiBcIiIgUEdfREVQRU5ERU5DSUVTX0tFWV9ERVBFTkRFTkNZCisJCQkJCQkJICAiXCIgbXVzdCBi ZSBhbiBhdHRyaWJ1dGUgbnVtYmVyLiIpKTsKKwkJCWJyZWFrOworCisJCWNhc2UgREVQU19FWFBF Q1RfREVHUkVFOgorCQkJLyogSnVzdCBmb2xsb3dlZCBhbiAiZGVncmVlIjoga2V5ICovCisJCQll cnJzYXZlKHBhcnNlLT5lc2NvbnRleHQsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RF WFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNp ZXM6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQllcnJkZXRhaWwoIlZhbHVlIG9mIFwiIiBQ R19ERVBFTkRFTkNJRVNfS0VZX0RFR1JFRQorCQkJCQkJCSAgIlwiIG11c3QgYmUgYSBudW1iZXIu IikpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4 dCwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJ CQkJCWVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0 ciksCisJCQkJCWVycmRldGFpbCgiVW5leHBlY3RlZCBwYXJzZSBzdGF0ZTogJWQiLCAoaW50KSBw YXJzZS0+c3RhdGUpKTsKKwl9CisKKwlyZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKK30K Kworc3RhdGljIGludAorYXR0bnVtX2NvbXBhcmUoY29uc3Qgdm9pZCAqYXB0ciwgY29uc3Qgdm9p ZCAqYnB0cikKK3sKKwlBdHRyTnVtYmVyCWEgPSAqKGNvbnN0IEF0dHJOdW1iZXIgKikgYXB0cjsK KwlBdHRyTnVtYmVyCWIgPSAqKGNvbnN0IEF0dHJOdW1iZXIgKikgYnB0cjsKKworCXJldHVybiBw Z19jbXBfczE2KGEsIGIpOworfQorCitzdGF0aWMgSnNvblBhcnNlRXJyb3JUeXBlCitkZXBlbmRl bmNpZXNfb2JqZWN0X2VuZCh2b2lkICpzdGF0ZSkKK3sKKwlEZXBlbmRlbmNpZXNQYXJzZVN0YXRl ICpwYXJzZSA9IHN0YXRlOworCisJTVZEZXBlbmRlbmN5ICpkZXA7CisJQXR0ck51bWJlciAqYXR0 cnNvcnQ7CisKKwlpbnQJCQluYXR0cyA9IDA7CisKKwlpZiAocGFyc2UtPnN0YXRlICE9IERFUFNf RVhQRUNUX0tFWSkKKwl7CisJCWVycnNhdmUocGFyc2UtPmVzY29udGV4dCwKKwkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQllcnJtc2coIm1hbGZv cm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCWVycmRldGFp bCgiZVVuZXhwZWN0ZWQgcGFyc2Ugc3RhdGU6ICVkIiwgKGludCkgcGFyc2UtPnN0YXRlKSk7CisJ CXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0KKworCWlmICghcGFyc2UtPmZvdW5k X2F0dHJpYnV0ZXMpCisJeworCQllcnJzYXZlKHBhcnNlLT5lc2NvbnRleHQsCisJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJZXJybXNnKCJtYWxm b3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVzXCIiLCBwYXJzZS0+c3RyKSwKKwkJCQllcnJkZXRh aWwoIkl0ZW0gbXVzdCBjb250YWluIFwiIiBQR19ERVBFTkRFTkNJRVNfS0VZX0FUVFJJQlVURVMg IlwiIGtleS4iKSk7CisJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworCX0KKworCWlm ICghcGFyc2UtPmZvdW5kX2RlcGVuZGVuY3kpCisJeworCQllcnJzYXZlKHBhcnNlLT5lc2NvbnRl eHQsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJ CQkJZXJybXNnKCJtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVzXCIiLCBwYXJzZS0+c3Ry KSwKKwkJCQllcnJkZXRhaWwoIkl0ZW0gbXVzdCBjb250YWluIFwiIiBQR19ERVBFTkRFTkNJRVNf S0VZX0RFUEVOREVOQ1kgIlwiIGtleS4iKSk7CisJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJ TEVEOworCX0KKworCWlmICghcGFyc2UtPmZvdW5kX2RlZ3JlZSkKKwl7CisJCWVycnNhdmUocGFy c2UtPmVzY29udGV4dCwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VO VEFUSU9OKSwKKwkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIs IHBhcnNlLT5zdHIpLAorCQkJCWVycmRldGFpbCgiSXRlbSBtdXN0IGNvbnRhaW4gXCIiIFBHX0RF UEVOREVOQ0lFU19LRVlfREVHUkVFICJcIiBrZXkuIikpOworCQlyZXR1cm4gSlNPTl9TRU1fQUNU SU9OX0ZBSUxFRDsKKwl9CisKKwkvKgorCSAqIFdlIG5lZWQgYXQgbGVhc3QgMSBhdHRudW0gZm9y IGEgZGVwZW5kZW5jaWVzIGl0ZW0sIGFueXRoaW5nIGxlc3MgaXMKKwkgKiBtYWxmb3JtZWQuCisJ ICovCisJbmF0dHMgPSBwYXJzZS0+YXR0bnVtX2xpc3QtPmxlbmd0aDsKKwlpZiAobmF0dHMgPCAx KQorCXsKKwkJZXJyc2F2ZShwYXJzZS0+ZXNjb250ZXh0LAorCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX2Rl cGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJZXJyZGV0YWlsKCJUaGUgXCIi IFBHX0RFUEVOREVOQ0lFU19LRVlfQVRUUklCVVRFUyAiXCIga2V5IG11c3QgY29udGFpbiBhbiBh cnJheSBvZiBhdCBsZWFzdCBvbmUgYXR0bnVtLiIpKTsKKwkJcmV0dXJuIEpTT05fU0VNX0FDVElP Tl9GQUlMRUQ7CisJfQorCWF0dHJzb3J0ID0gcGFsbG9jMChuYXR0cyAqIHNpemVvZihBdHRyTnVt YmVyKSk7CisKKwkvKgorCSAqIEFsbG9jYXRlIGVub3VnaCBzcGFjZSBmb3IgdGhlIGRlcGVuZGVu Y3ksIHRoZSBhdHRudW1zIGluIHRoZSBsaXN0LCBwbHVzCisJICogdGhlIGZpbmFsIGF0dG51bQor CSAqLworCWRlcCA9IHBhbGxvYzAob2Zmc2V0b2YoTVZEZXBlbmRlbmN5LCBhdHRyaWJ1dGVzKSAr ICgobmF0dHMgKyAxKSAqIHNpemVvZihBdHRyTnVtYmVyKSkpOworCWRlcC0+bmF0dHJpYnV0ZXMg PSBuYXR0cyArIDE7CisKKwlkZXAtPmF0dHJpYnV0ZXNbbmF0dHNdID0gcGFyc2UtPmRlcGVuZGVu Y3k7CisJZGVwLT5kZWdyZWUgPSBwYXJzZS0+ZGVncmVlOworCisJYXR0cnNvcnQgPSBwYWxsb2Mw KGRlcC0+bmF0dHJpYnV0ZXMgKiBzaXplb2YoQXR0ck51bWJlcikpOworCWF0dHJzb3J0W25hdHRz XSA9IHBhcnNlLT5kZXBlbmRlbmN5OworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuYXR0czsgaSsr KQorCXsKKwkJYXR0cnNvcnRbaV0gPSAoQXR0ck51bWJlcikgcGFyc2UtPmF0dG51bV9saXN0LT5l bGVtZW50c1tpXS5pbnRfdmFsdWU7CisJCWRlcC0+YXR0cmlidXRlc1tpXSA9IGF0dHJzb3J0W2ld OworCX0KKworCS8qIENoZWNrIGF0dHJzb3J0IGZvciB1bmlxdWVuZXNzICovCisJcXNvcnQoYXR0 cnNvcnQsIG5hdHRzICsgMSwgc2l6ZW9mKEF0dHJOdW1iZXIpLCBhdHRudW1fY29tcGFyZSk7CisJ Zm9yIChpbnQgaSA9IDE7IGkgPCBkZXAtPm5hdHRyaWJ1dGVzOyBpKyspCisJCWlmIChhdHRyc29y dFtpXSA9PSBhdHRyc29ydFtpIC0gMV0pCisJCXsKKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4 dCwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJ CQkJCWVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0 ciksCisJCQkJCWVycmRldGFpbCgiXCIiIFBHX0RFUEVOREVOQ0lFU19LRVlfQVRUUklCVVRFUyAi XCIgbGlzdCBkdXBsaWNhdGUgdmFsdWUgZm91bmQ6ICVkLiIsIGF0dHJzb3J0W2ldKSk7CisJCQlw ZnJlZShhdHRyc29ydCk7CisJCQlwZnJlZShkZXApOworCQkJcmV0dXJuIEpTT05fU0VNX0FDVElP Tl9GQUlMRUQ7CisJCX0KKwlwZnJlZShhdHRyc29ydCk7CisKKwlwYXJzZS0+ZGVwZW5kZW5jeV9s aXN0ID0gbGFwcGVuZChwYXJzZS0+ZGVwZW5kZW5jeV9saXN0LCAodm9pZCAqKSBkZXApOworCisJ LyogcmVzZXQgZGVwIGl0ZW0gc3RhdGUgdmFycyAqLworCWxpc3RfZnJlZShwYXJzZS0+YXR0bnVt X2xpc3QpOworCXBhcnNlLT5hdHRudW1fbGlzdCA9IE5JTDsKKwlwYXJzZS0+ZGVwZW5kZW5jeSA9 IDA7CisJcGFyc2UtPmRlZ3JlZSA9IDAuMDsKKwlwYXJzZS0+Zm91bmRfYXR0cmlidXRlcyA9IGZh bHNlOworCXBhcnNlLT5mb3VuZF9kZXBlbmRlbmN5ID0gZmFsc2U7CisJcGFyc2UtPmZvdW5kX2Rl Z3JlZSA9IGZhbHNlOworCisJLyogTm93IHdlIGFyZSBsb29raW5nIGZvciB0aGUgbmV4dCBNVkRl cGVuZGVuY3kgKi8KKwlwYXJzZS0+c3RhdGUgPSBERVBTX0VYUEVDVF9JVEVNOworCXJldHVybiBK U09OX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBkZXBlbmRlbmNpZXMgaW5wdXQgZm9ybWF0IGRvZXMg bm90IGhhdmUgYXJyYXlzLCBzbyBhbnkgYXJyYXkgZWxlbWVudHMgZW5jb3VudGVyZWQKKyAqIGFy ZSBhbiBlcnJvci4KKyAqLworc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorZGVwZW5kZW5jaWVz X2FycmF5X3N0YXJ0KHZvaWQgKnN0YXRlKQoreworCURlcGVuZGVuY2llc1BhcnNlU3RhdGUgKnBh cnNlID0gc3RhdGU7CisKKwlzd2l0Y2ggKHBhcnNlLT5zdGF0ZSkKKwl7CisJCWNhc2UgREVQU19F WFBFQ1RfQVRUTlVNX0xJU1Q6CisJCQlwYXJzZS0+c3RhdGUgPSBERVBTX0VYUEVDVF9BVFROVU07 CisJCQlicmVhazsKKwkJY2FzZSBERVBTX0VYUEVDVF9TVEFSVDoKKwkJCXBhcnNlLT5zdGF0ZSA9 IERFUFNfRVhQRUNUX0lURU07CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVycnNhdmUocGFy c2UtPmVzY29udGV4dCwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNF TlRBVElPTiksCisJCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wi IiwgcGFyc2UtPnN0ciksCisJCQkJCWVycmRldGFpbCgiQXJyYXkgZm91bmQgaW4gdW5leHBlY3Rl ZCBwbGFjZS4iKSk7CisJCQlyZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwl9CisKKwly ZXR1cm4gSlNPTl9TVUNDRVNTOworfQorCisvKgorICogRWl0aGVyIHRoZSBlbmQgb2YgYW4gYXR0 bnVtIGxpc3Qgb3IgdGhlIHdob2xlIG9iamVjdAorICovCitzdGF0aWMgSnNvblBhcnNlRXJyb3JU eXBlCitkZXBlbmRlbmNpZXNfYXJyYXlfZW5kKHZvaWQgKnN0YXRlKQoreworCURlcGVuZGVuY2ll c1BhcnNlU3RhdGUgKnBhcnNlID0gc3RhdGU7CisKKwlzd2l0Y2ggKHBhcnNlLT5zdGF0ZSkKKwl7 CisJCWNhc2UgREVQU19FWFBFQ1RfQVRUTlVNOgorCQkJaWYgKHBhcnNlLT5hdHRudW1fbGlzdCAh PSBOSUwpCisJCQl7CisJCQkJcGFyc2UtPnN0YXRlID0gREVQU19FWFBFQ1RfS0VZOworCQkJCXJl dHVybiBKU09OX1NVQ0NFU1M7CisJCQl9CisKKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4dCwK KwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJ CWVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0ciks CisJCQkJCWVycmRldGFpbCgiVGhlIFwiIiBQR19ERVBFTkRFTkNJRVNfS0VZX0FUVFJJQlVURVMK KwkJCQkJCQkJIlwiIGtleSBtdXN0IGJlIGFuIG5vbi1lbXB0eSBhcnJheS4iKSk7CisJCQlicmVh azsKKworCQljYXNlIERFUFNfRVhQRUNUX0lURU06CisJCQlpZiAocGFyc2UtPmRlcGVuZGVuY3lf bGlzdCAhPSBOSUwpCisJCQl7CisJCQkJcGFyc2UtPnN0YXRlID0gREVQU19QQVJTRV9DT01QTEVU RTsKKwkJCQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCQkJfQorCisJCQllcnJzYXZlKHBhcnNlLT5l c2NvbnRleHQsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJ T04pLAorCQkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHBh cnNlLT5zdHIpLAorCQkJCQllcnJkZXRhaWwoIlRoZSBkZXBlbmRlbmN5IGxpc3QgbXVzdCBiZSBh biBub24tZW1wdHkgYXJyYXkuIikpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCS8qCisJ CQkgKiBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpZiBhIGNhc2Ugd2FzIG1pc3NlZCBpbiBkZXBlbmVu Y2VpZXNfYXJyYXlfc3RhcnQoKQorCQkJICovCisJCQllcnJzYXZlKHBhcnNlLT5lc2NvbnRleHQs CisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAorCQkJ CQllcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHBhcnNlLT5zdHIp LAorCQkJCQllcnJkZXRhaWwoIkFycmF5IGZvdW5kIGluIHVuZXhwZWN0ZWQgcGxhY2UuICVkIiwg cGFyc2UtPnN0YXRlKSk7CisJfQorCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOworfQor CisvKgorICogVGhlIHZhbGlkIGtleXMgZm9yIHRoZSBNVkRlcGVuZGVuY3kgb2JqZWN0IGFyZToK KyAqICAgLSBhdHRyaWJ1dGVzCisgKiAgIC0gZGVwZWVuZGVuY3kKKyAqICAgLSBkZWdyZWUKKyAq Lworc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZQorZGVwZW5kZW5jaWVzX29iamVjdF9maWVsZF9z dGFydCh2b2lkICpzdGF0ZSwgY2hhciAqZm5hbWUsIGJvb2wgaXNudWxsKQoreworCURlcGVuZGVu Y2llc1BhcnNlU3RhdGUgKnBhcnNlID0gc3RhdGU7CisKKwlpZiAoc3RyY21wKGZuYW1lLCBQR19E RVBFTkRFTkNJRVNfS0VZX0FUVFJJQlVURVMpID09IDApCisJeworCQlwYXJzZS0+Zm91bmRfYXR0 cmlidXRlcyA9IHRydWU7CisJCXBhcnNlLT5zdGF0ZSA9IERFUFNfRVhQRUNUX0FUVE5VTV9MSVNU OworCQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCX0KKworCWlmIChzdHJjbXAoZm5hbWUsIFBHX0RF UEVOREVOQ0lFU19LRVlfREVQRU5ERU5DWSkgPT0gMCkKKwl7CisJCXBhcnNlLT5mb3VuZF9kZXBl bmRlbmN5ID0gdHJ1ZTsKKwkJcGFyc2UtPnN0YXRlID0gREVQU19FWFBFQ1RfREVQRU5ERU5DWTsK KwkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKKwl9CisKKwlpZiAoc3RyY21wKGZuYW1lLCBQR19ERVBF TkRFTkNJRVNfS0VZX0RFR1JFRSkgPT0gMCkKKwl7CisJCXBhcnNlLT5mb3VuZF9kZWdyZWUgPSB0 cnVlOworCQlwYXJzZS0+c3RhdGUgPSBERVBTX0VYUEVDVF9ERUdSRUU7CisJCXJldHVybiBKU09O X1NVQ0NFU1M7CisJfQorCisJZXJyc2F2ZShwYXJzZS0+ZXNjb250ZXh0LAorCQkJZXJyY29kZShF UlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQllcnJtc2coIm1hbGZvcm1l ZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJZXJyZGV0YWlsKCJJ bnZhbGlkIGtleSBcIiVzXCIuIE9ubHkgYWxsb3dlZCBrZXlzIGFyZSBcIiIKKwkJCQkJICBQR19E RVBFTkRFTkNJRVNfS0VZX0FUVFJJQlVURVMgIlwiLCBcIiIKKwkJCQkJICBQR19ERVBFTkRFTkNJ RVNfS0VZX0RFUEVOREVOQ1kgIlwiIGFuZCBcIiIKKwkJCQkJICBQR19ERVBFTkRFTkNJRVNfS0VZ X0RFR1JFRSAiXCIuIiwgZm5hbWUpKTsKKwlyZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsK K30KKworLyoKKyAqIHBnX2RlcGVuZGVuY2llcyBpbnB1dCBmb3JtYXQgZG9lcyBub3QgaGF2ZSBh cnJheXMsIHNvIGFueSBhcnJheSBlbGVtZW50cworICogZW5jb3VudGVyZWQgYXJlIGFuIGVycm9y LgorICovCitzdGF0aWMgSnNvblBhcnNlRXJyb3JUeXBlCitkZXBlbmRlbmNpZXNfYXJyYXlfZWxl bWVudF9zdGFydCh2b2lkICpzdGF0ZSwgYm9vbCBpc251bGwpCit7CisJRGVwZW5kZW5jaWVzUGFy c2VTdGF0ZSAqcGFyc2UgPSBzdGF0ZTsKKworCXN3aXRjaChwYXJzZS0+c3RhdGUpCisJeworCQlj YXNlIERFUFNfRVhQRUNUX0FUVE5VTToKKwkJCWlmICghaXNudWxsKQorCQkJCXJldHVybiBKU09O X1NVQ0NFU1M7CisKKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4dCwKKwkJCQkJZXJyY29kZShF UlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCWVycm1zZygibWFsZm9y bWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJCWVycmRldGFp bCgiQXR0bnVtIGxpc3QgZWxlbWVudHMgY2Fubm90IGJlIG51bGwuIikpOworCisJCQlyZXR1cm4g SlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwkJCWJyZWFrOworCisJCWNhc2UgREVQU19FWFBFQ1Rf SVRFTToKKwkJCWlmICghaXNudWxsKQorCQkJCXJldHVybiBKU09OX1NVQ0NFU1M7CisJCQllcnJz YXZlKHBhcnNlLT5lc2NvbnRleHQsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRf UkVQUkVTRU5UQVRJT04pLAorCQkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6 IFwiJXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQllcnJkZXRhaWwoIkl0ZW0gbGlzdCBlbGVtZW50 cyBjYW5ub3QgYmUgbnVsbC4iKSk7CisKKwkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVE OworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4dCwK KwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJ CWVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0ciks CisJCQkJCWVycmRldGFpbCgiVW5leHBlY3RlZCBhcnJheSBlbGVtZW50LiIpKTsKKwl9CisKKwly ZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKK30KKworLyoKKyAqIEhhbmRsZSBzY2FsYXIg ZXZlbnRzIGZyb20gdGhlIGRlcGVuZGVuY2llcyBpbnB1dCBwYXJzZXIuCisgKgorICogVGhlcmUg aXMgb25seSBvbmUgY2FzZSB3aGVyZSB3ZSB3aWxsIGVuY291bnRlciBhIHNjYWxhciwgYW5kIHRo YXQgaXMgdGhlCisgKiBkZXBlbmRlbmN5IGRlZ3JlZSBmb3IgdGhlIHByZXZpb3VzIG9iamVjdCBr ZXkuCisgKi8KK3N0YXRpYyBKc29uUGFyc2VFcnJvclR5cGUKK2RlcGVuZGVuY2llc19zY2FsYXIo dm9pZCAqc3RhdGUsIGNoYXIgKnRva2VuLCBKc29uVG9rZW5UeXBlIHRva2VudHlwZSkKK3sKKwlE ZXBlbmRlbmNpZXNQYXJzZVN0YXRlICpwYXJzZSA9IHN0YXRlOworCUF0dHJOdW1iZXIJYXR0bnVt OworCisJc3dpdGNoKHBhcnNlLT5zdGF0ZSkKKwl7CisJCWNhc2UgREVQU19FWFBFQ1RfQVRUTlVN OgorCQkJYXR0bnVtID0gcGdfc3RydG9pbnQxNl9zYWZlKHRva2VuLCBwYXJzZS0+ZXNjb250ZXh0 KTsKKworCQkJaWYgKCFTT0ZUX0VSUk9SX09DQ1VSUkVEKHBhcnNlLT5lc2NvbnRleHQpKQorCQkJ eworCQkJCXBhcnNlLT5hdHRudW1fbGlzdCA9IGxhcHBlbmRfaW50KHBhcnNlLT5hdHRudW1fbGlz dCwgKGludCkgYXR0bnVtKTsKKwkJCQkvKiBObyBzdGF0ZSBjaGFuZ2UsIHdlIGV4cGVjdCBtb3Jl IGF0dG51bXMgKi8KKwkJCQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCQkJfQorCisJCQllcnJzYXZl KHBhcnNlLT5lc2NvbnRleHQsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQ UkVTRU5UQVRJT04pLAorCQkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwi JXNcIiIsIHBhcnNlLT5zdHIpLAorCQkJCQllcnJkZXRhaWwoIkludmFsaWQgYXR0cmlidXRlIG51 bWJlcjogXCIlc1wiLiIsIHRva2VuKSk7CisKKwkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJ TEVEOworCQkJYnJlYWs7CisKKwkJY2FzZSBERVBTX0VYUEVDVF9ERVBFTkRFTkNZOgorCQkJcGFy c2UtPmRlcGVuZGVuY3kgPSAoQXR0ck51bWJlcikgcGdfc3RydG9pbnQxNl9zYWZlKHRva2VuLCBw YXJzZS0+ZXNjb250ZXh0KTsKKworCQkJaWYgKCFTT0ZUX0VSUk9SX09DQ1VSUkVEKHBhcnNlLT5l c2NvbnRleHQpKQorCQkJeworCQkJCXBhcnNlLT5zdGF0ZSA9IERFUFNfRVhQRUNUX0tFWTsKKwkJ CQlyZXR1cm4gSlNPTl9TVUNDRVNTOworCQkJfQorCisJCQllcnJzYXZlKHBhcnNlLT5lc2NvbnRl eHQsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAor CQkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHBhcnNlLT5z dHIpLAorCQkJCQllcnJkZXRhaWwoIkludmFsaWQgIiBQR19ERVBFTkRFTkNJRVNfS0VZX0RFUEVO REVOQ1kKKwkJCSAgIAkJCQkgICIgYXR0cmlidXRlIG51bWJlcjogXCIlc1wiLiIsIHRva2VuKSk7 CisJCQlyZXR1cm4gSlNPTl9TRU1fQUNUSU9OX0ZBSUxFRDsKKwkJCWJyZWFrOworCisJCWNhc2Ug REVQU19FWFBFQ1RfREVHUkVFOgorCQkJcGFyc2UtPmRlZ3JlZSA9IGZsb2F0OGluX2ludGVybmFs KHRva2VuLCBOVUxMLCAiZG91YmxlIiwKKwkJCQkJCQkJCQkJdG9rZW4sIHBhcnNlLT5lc2NvbnRl eHQpOworCisJCQlpZiAoIVNPRlRfRVJST1JfT0NDVVJSRUQocGFyc2UtPmVzY29udGV4dCkpCisJ CQl7CisJCQkJcGFyc2UtPnN0YXRlID0gREVQU19FWFBFQ1RfS0VZOworCQkJCXJldHVybiBKU09O X1NVQ0NFU1M7CisJCQl9CisKKwkJCWVycnNhdmUocGFyc2UtPmVzY29udGV4dCwKKwkJCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCWVycm1zZygi bWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJCWVy cmRldGFpbCgiSW52YWxpZCAiIFBHX0RFUEVOREVOQ0lFU19LRVlfREVHUkVFCisJCQkJCQkJICAi IHZhbHVlOiBcIiVzXCIuIiwgdG9rZW4pKTsKKworCQkJcmV0dXJuIEpTT05fU0VNX0FDVElPTl9G QUlMRUQ7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZXJyc2F2ZShwYXJzZS0+ZXNjb250 ZXh0LAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwK KwkJCQkJZXJybXNnKCJtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVzXCIiLCBwYXJzZS0+ c3RyKSwKKwkJCQkJZXJyZGV0YWlsKCJVbmV4cGVjdGVkIHNjYWxhci4iKSk7CisJfQorCisJcmV0 dXJuIEpTT05fU0VNX0FDVElPTl9GQUlMRUQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiogQkxBSCAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogQ29tcGFyZSB0aGUgYXR0cmlidXRlIGFy cmF5cyBvZiB0d28gTVZEZXBlbmRlbmN5IHZhbHVlcywKKyAqIGxvb2tpbmcgZm9yIGR1cGxpY2F0 ZSBzZXRzLgorICovCitzdGF0aWMKK2Jvb2wgaGFzX2R1cGxpY2F0ZV9hdHRyaWJ1dGVzKGNvbnN0 IE1WRGVwZW5kZW5jeSAqYSwgY29uc3QgTVZEZXBlbmRlbmN5ICpiKQoreworCWludAkJaTsKKwor CWlmIChhLT5uYXR0cmlidXRlcyAhPSBiLT5uYXR0cmlidXRlcykKKwkJcmV0dXJuIGZhbHNlOwor CisJZm9yIChpID0gMDsgaSA8IGEtPm5hdHRyaWJ1dGVzOyBpKyspCisJeworCQlpZiAoYS0+YXR0 cmlidXRlc1tpXSAhPSBiLT5hdHRyaWJ1dGVzW2ldKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKwor CXJldHVybiB0cnVlOworfQorCisvKgorICogRW5zdXJlIHRoYXQgYW4gYXR0bnVtIGFwcGVhcnMg YXMgb25lIG9mIHRoZSBhdHRudW1zIGluIGEgZ2l2ZW4KKyAqIE1WRGVwZW5kZW5jeS4KKyAqLwor c3RhdGljCitib29sIGRlcF9oYXNfYXR0bnVtKGNvbnN0IE1WRGVwZW5kZW5jeSAqaXRlbSwgQXR0 ck51bWJlciBhdHRudW0pCit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtLT5uYXR0cmlidXRl czsgaSsrKQorCXsKKwkJaWYgKGF0dG51bSA9PSBpdGVtLT5hdHRyaWJ1dGVzW2ldKQorCQkJcmV0 dXJuIHRydWU7CisJfQorCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIEVuc3VyZSB0aGF0IHRo ZSBhdHRyaWJ1dGVzIG9mIG9uZSBNVkRlcGVuZGVuY3kgQSBhcmUgYSBwcm9wZXIgc3Vic2V0Cisg KiBvZiB0aGUgcmVmZXJlbmNlIE1WRGVwZW5kZW5jeSBCLgorICovCitzdGF0aWMKK2Jvb2wgZGVw X2lzX2F0dG51bV9zdWJzZXQoY29uc3QgTVZEZXBlbmRlbmN5ICppdGVtLAorCQkJCQkJICBjb25z dCBNVkRlcGVuZGVuY3kgKnJlZml0ZW0pCit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtLT5u YXR0cmlidXRlczsgaSsrKQorCXsKKwkJaWYgKCFkZXBfaGFzX2F0dG51bShyZWZpdGVtLGl0ZW0t PmF0dHJpYnV0ZXNbaV0pKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKwlyZXR1cm4gdHJ1ZTsKK30K KworLyoKKyAqIEdlbmVyYXRlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhbiBhcnJheSBvZiBhdHRu dW1zLiBJbnRlcm5hbGx5LCB0aGUKKyAqIGRlcGVuZGVuY3kgYXR0cmlidXRlIGlzIHRoZSBsYXN0 IGVsZW1lbnQsIHNvIHdlIGxlYXZlIHRoYXQgb2ZmLgorICoKKyAqCisgKiBGcmVlaW5nIHRoZSBh bGxvY2F0ZWQgc3RyaW5nIGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIuCisgKi8KK3N0 YXRpYworY29uc3QgY2hhciAqZGVwX2F0dG51bV9saXN0KGNvbnN0IE1WRGVwZW5kZW5jeSAqaXRl bSkKK3sKKwlTdHJpbmdJbmZvRGF0YQlzdHI7CisKKwlpbml0U3RyaW5nSW5mbygmc3RyKTsKKwor CWFwcGVuZFN0cmluZ0luZm8oJnN0ciwgIiVkIiwgaXRlbS0+YXR0cmlidXRlc1swXSk7CisKKwlm b3IgKGludCBpID0gMTsgaSA8IGl0ZW0tPm5hdHRyaWJ1dGVzIC0gMTsgaSsrKQorCQlhcHBlbmRT dHJpbmdJbmZvKCZzdHIsICIsICVkIiwgaXRlbS0+YXR0cmlidXRlc1tpXSk7CisKKwlyZXR1cm4g c3RyLmRhdGE7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGRlcGVuZGVuY3ksIHdoaWNoIGlzIHRo ZSBsYXN0IGF0dHJpYnV0ZSBlbGVtZW50LgorICovCitzdGF0aWMKK2NvbnN0IEF0dHJOdW1iZXIg ZGVwX2F0dG51bV9kZXBlbmRlbmN5KGNvbnN0IE1WRGVwZW5kZW5jeSAqaXRlbSkKK3sKKwlyZXR1 cm4gaXRlbS0+YXR0cmlidXRlc1tpdGVtLT5uYXR0cmlidXRlcyAtIDFdOworfQorCisKKworCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEJMQUgg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoKICAqIHBn X2RlcGVuZGVuY2llc19pbgkJLSBpbnB1dCByb3V0aW5lIGZvciB0eXBlIHBnX2RlcGVuZGVuY2ll cy4KICAqCi0gKiBwZ19kZXBlbmRlbmNpZXMgaXMgcmVhbCBlbm91Z2ggdG8gYmUgYSB0YWJsZSBj b2x1bW4sIGJ1dCBpdCBoYXMgbm8gb3BlcmF0aW9ucwotICogb2YgaXRzIG93biwgYW5kIGRpc2Fs bG93cyBpbnB1dCB0b28KKyAqIFRoaXMgZm9ybWF0IGlzIHZhbGlkIEpTT04sIHdpdGggdGhlIGV4 cGVjdGVkIGZvcm1hdDoKKyAqICAgIFt7ImF0dHJpYnV0ZXMiOiBbMSwyXSwgImRlcGVuZGVuY3ki OiAtMSwgImRlZ3JlZSI6IDEuMDAwMH0sCisgKiAgICAgeyJhdHRyaWJ1dGVzIjogWzEsLTFdLCAi ZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAwLjAwMDB9LAorICogICAgIHsiYXR0cmlidXRlcyI6 IFsyLC0xXSwgImRlcGVuZGVuY3kiOiAxLCAiZGVncmVlIjogMS4wMDAwfV0KKyAqCiAgKi8KIERh dHVtCiBwZ19kZXBlbmRlbmNpZXNfaW4oUEdfRlVOQ1RJT05fQVJHUykKIHsKLQkvKgotCSAqIHBn X25vZGVfbGlzdCBzdG9yZXMgdGhlIGRhdGEgaW4gYmluYXJ5IGZvcm0gYW5kIHBhcnNpbmcgdGV4 dCBpbnB1dCBpcwotCSAqIG5vdCBuZWVkZWQsIHNvIGRpc2FsbG93IHRoaXMuCi0JICovCi0JZXJl cG9ydChFUlJPUiwKLQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK LQkJCSBlcnJtc2coImNhbm5vdCBhY2NlcHQgYSB2YWx1ZSBvZiB0eXBlICVzIiwgInBnX2RlcGVu ZGVuY2llcyIpKSk7CisJY2hhcgkgICAqc3RyID0gUEdfR0VUQVJHX0NTVFJJTkcoMCk7CiAKLQlQ R19SRVRVUk5fVk9JRCgpOwkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwlEZXBlbmRlbmNp ZXNQYXJzZVN0YXRlIHBhcnNlX3N0YXRlOworCUpzb25QYXJzZUVycm9yVHlwZSByZXN1bHQ7CisJ SnNvbkxleENvbnRleHQgKmxleDsKKwlKc29uU2VtQWN0aW9uIHNlbV9hY3Rpb247CisKKwkvKiBp bml0aWFsaXplIHRoZSBzZW1hbnRpYyBzdGF0ZSAqLworCXBhcnNlX3N0YXRlLnN0ciA9IHN0cjsK KwlwYXJzZV9zdGF0ZS5zdGF0ZSA9IERFUFNfRVhQRUNUX1NUQVJUOworCXBhcnNlX3N0YXRlLmRl cGVuZGVuY3lfbGlzdCA9IE5JTDsKKwlwYXJzZV9zdGF0ZS5hdHRudW1fbGlzdCA9IE5JTDsKKwlw YXJzZV9zdGF0ZS5kZXBlbmRlbmN5ID0gMDsKKwlwYXJzZV9zdGF0ZS5kZWdyZWUgPSAwLjA7CisJ cGFyc2Vfc3RhdGUuZm91bmRfYXR0cmlidXRlcyA9IGZhbHNlOworCXBhcnNlX3N0YXRlLmZvdW5k X2RlcGVuZGVuY3kgPSBmYWxzZTsKKwlwYXJzZV9zdGF0ZS5mb3VuZF9kZWdyZWUgPSBmYWxzZTsK KwlwYXJzZV9zdGF0ZS5lc2NvbnRleHQgPSBmY2luZm8tPmNvbnRleHQ7CisKKwkvKiBzZXQgY2Fs bGJhY2tzICovCisJc2VtX2FjdGlvbi5zZW1zdGF0ZSA9ICh2b2lkICopICZwYXJzZV9zdGF0ZTsK KwlzZW1fYWN0aW9uLm9iamVjdF9zdGFydCA9IGRlcGVuZGVuY2llc19vYmplY3Rfc3RhcnQ7CisJ c2VtX2FjdGlvbi5vYmplY3RfZW5kID0gZGVwZW5kZW5jaWVzX29iamVjdF9lbmQ7CisJc2VtX2Fj dGlvbi5hcnJheV9zdGFydCA9IGRlcGVuZGVuY2llc19hcnJheV9zdGFydDsKKwlzZW1fYWN0aW9u LmFycmF5X2VuZCA9IGRlcGVuZGVuY2llc19hcnJheV9lbmQ7CisJc2VtX2FjdGlvbi5hcnJheV9l bGVtZW50X3N0YXJ0ID0gZGVwZW5kZW5jaWVzX2FycmF5X2VsZW1lbnRfc3RhcnQ7CisJc2VtX2Fj dGlvbi5hcnJheV9lbGVtZW50X2VuZCA9IE5VTEw7CisJc2VtX2FjdGlvbi5vYmplY3RfZmllbGRf c3RhcnQgPSBkZXBlbmRlbmNpZXNfb2JqZWN0X2ZpZWxkX3N0YXJ0OworCXNlbV9hY3Rpb24ub2Jq ZWN0X2ZpZWxkX2VuZCA9IE5VTEw7CisJc2VtX2FjdGlvbi5zY2FsYXIgPSBkZXBlbmRlbmNpZXNf c2NhbGFyOworCisJbGV4ID0gbWFrZUpzb25MZXhDb250ZXh0Q3N0cmluZ0xlbihOVUxMLCBzdHIs IHN0cmxlbihzdHIpLCBQR19VVEY4LCB0cnVlKTsKKworCXJlc3VsdCA9IHBnX3BhcnNlX2pzb24o bGV4LCAmc2VtX2FjdGlvbik7CisJZnJlZUpzb25MZXhDb250ZXh0KGxleCk7CisKKwlpZiAocmVz dWx0ID09IEpTT05fU1VDQ0VTUykKKwl7CisJCUxpc3QJICAgKmxpc3QgPSBwYXJzZV9zdGF0ZS5k ZXBlbmRlbmN5X2xpc3Q7CisJCWludAkJCW5kZXBzID0gbGlzdC0+bGVuZ3RoOworCQlNVkRlcGVu ZGVuY2llcyAqbXZkZXBzOworCQlieXRlYQkgICAqYnl0ZXM7CisKKwkJaW50CQlkZXBfbW9zdF9h dHRycyA9IDA7CisJCWludAkJZGVwX21vc3RfYXR0cnNfaWR4ID0gMDsKKworCQlzd2l0Y2gocGFy c2Vfc3RhdGUuc3RhdGUpCisJCXsKKwkJCWNhc2UgREVQU19QQVJTRV9DT01QTEVURToKKwkJCQkv KgorCQkJCSAqIFBhcnNlIGVuZGVkIGluIHRoZSBleHBlY3RlZCBwbGFjZS4gV2Ugc2hvdWxkIGhh dmUgYSBsaXN0IG9mIGl0ZW1zLAorCQkJCSAqIGJ1dCBpZiB3ZSBkb24ndCBpdCBpcyBiZWNhdXNl IHRoZXJlIGFyZSBidWdzIGluIG90aGVyIHBhcnNlIHN0ZXBzLgorCQkJCSAqLworCQkJCWlmIChw YXJzZV9zdGF0ZS5kZXBlbmRlbmN5X2xpc3QgPT0gTklMKQorCQkJCQllbG9nKEVSUk9SLAorCQkJ CQkJICJwZ19kZXBlbmRlbmNpZXMgcGFyc3NpbmcgY2xhaW1zIHN1Y2Nlc3Mgd2l0aCBhbiBlbXB0 eSBpdGVtIGxpc3QuIik7CisKKwkJCQlicmVhazsKKworCQkJY2FzZSBERVBTX0VYUEVDVF9TVEFS VDoKKwkJCQkvKiBibGFuayAqLworCQkJCWVycnNhdmUocGFyc2Vfc3RhdGUuZXNjb250ZXh0LAor CQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJ CQllcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHN0ciksCisJCQkJ CQllcnJkZXRhaWwoIlZhbHVlIGNhbm5vdCBiZSBlbXB0eS4iKSk7CisJCQkJUEdfUkVUVVJOX05V TEwoKTsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQkvKiBVbmV4cGVjdGVkIGVuZC1z dGF0ZS4gVE9ETzogSXMgdGhpcyBhbiBlbG9nKCk/ICovCisJCQkJZXJyc2F2ZShwYXJzZV9zdGF0 ZS5lc2NvbnRleHQsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VO VEFUSU9OKSwKKwkJCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wi Iiwgc3RyKSwKKwkJCQkJCWVycmRldGFpbCgiVW5leHBlY3RlZCBlbmQgc3RhdGUgJWQuIiwgcGFy c2Vfc3RhdGUuc3RhdGUpKTsKKwkJCQlQR19SRVRVUk5fTlVMTCgpOworCQkJCWJyZWFrOworCQl9 CisKKwkJbXZkZXBzID0gcGFsbG9jMChvZmZzZXRvZihNVkRlcGVuZGVuY2llcywgZGVwcykgKyBu ZGVwcyAqIHNpemVvZihNVkRlcGVuZGVuY3kpKTsKKwkJbXZkZXBzLT5tYWdpYyA9IFNUQVRTX0RF UFNfTUFHSUM7CisJCW12ZGVwcy0+dHlwZSA9IFNUQVRTX0RFUFNfVFlQRV9CQVNJQzsKKwkJbXZk ZXBzLT5uZGVwcyA9IG5kZXBzOworCisJCS8qIGNvcHkgTVZEZXBlbmRlbmN5IHN0cnVjdHMgb3V0 IG9mIHRoZSBsaXN0IGludG8gdGhlIE1WRGVwZW5kZW5jaWVzICovCisJCWZvciAoaW50IGkgPSAw OyBpIDwgbmRlcHM7IGkrKykKKwkJeworCQkJbXZkZXBzLT5kZXBzW2ldID0gbGlzdC0+ZWxlbWVu dHNbaV0ucHRyX3ZhbHVlOworCisJCQkvKgorCQkJICogRW5zdXJlIHRoYXQgdGhpcyBpdGVtIGRv ZXMgbm90IGR1cGxpY2F0ZSB0aGUgYXR0cmlidXRlcyBvZiBhbnkKKwkJCSAqIHByZS1leGlzdGlu ZyBpdGVtLgorCQkJICovCisJCQlmb3IgKGludCBqID0gMDsgaiA8IGk7IGorKykKKwkJCXsKKwkJ CQlpZiAoaGFzX2R1cGxpY2F0ZV9hdHRyaWJ1dGVzKG12ZGVwcy0+ZGVwc1tpXSwgbXZkZXBzLT5k ZXBzW2pdKSkKKwkJCQl7CisJCQkJCU1WRGVwZW5kZW5jeSAgICpkZXAgPSBtdmRlcHMtPmRlcHNb aV07CisKKwkJCQkJZXJyc2F2ZShwYXJzZV9zdGF0ZS5lc2NvbnRleHQsCisJCQkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCQkJZXJybXNnKCJt YWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVzXCIiLCBzdHIpLAorCQkJCQkJCWVycmRldGFp bCgiRHVwbGljYXRlIFwiIiBQR19ERVBFTkRFTkNJRVNfS0VZX0FUVFJJQlVURVMgIlwiIGFycmF5 OiBbJXNdIgorCQkJCQkJCQkJICAiIHdpdGggXCIiIFBHX0RFUEVOREVOQ0lFU19LRVlfREVQRU5E RU5DWSAiXCI6ICVkLiIsCisJCQkJCQkJCQkgIGRlcF9hdHRudW1fbGlzdChkZXApLCBkZXBfYXR0 bnVtX2RlcGVuZGVuY3koZGVwKSkpOworCQkJCQlQR19SRVRVUk5fTlVMTCgpOworCQkJCX0KKwkJ CX0KKworCQkJLyoKKwkJCSAqIEtlZXAgdHJhY2sgb2YgdGhlIGZpcnN0IGxvbmdlc3QgYXR0cmli dXRlIGxpc3QuIEFsbCBvdGhlciBhdHRyaWJ1dGUKKwkJCSAqIGxpc3RzIG11c3QgYmUgYSBzdWJz ZXQgb2YgdGhpcyBsaXN0LgorCQkJICovCisJCQlpZiAobXZkZXBzLT5kZXBzW2ldLT5uYXR0cmli dXRlcyA+IGRlcF9tb3N0X2F0dHJzKQorCQkJeworCQkJCWRlcF9tb3N0X2F0dHJzID0gbXZkZXBz LT5kZXBzW2ldLT5uYXR0cmlidXRlczsKKwkJCQlkZXBfbW9zdF9hdHRyc19pZHggPSBpOworCQkJ fQorCQl9CisKKwkJLyoKKwkJICogVmVyaWZ5IHRoYXQgYWxsIGF0dG51bSBzZXRzIGFyZSBhIHBy b3BlciBzdWJzZXQgb2YgdGhlIGZpcnN0IGxvbmdlc3QKKwkJICogYXR0bnVtIHNldC4KKwkJICov CisJCWZvciAoaW50IGkgPSAwOyBpIDwgbmRlcHM7IGkrKykKKwkJeworCQkJaWYgKGkgPT0gZGVw X21vc3RfYXR0cnNfaWR4KQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAoIWRlcF9pc19hdHRudW1f c3Vic2V0KG12ZGVwcy0+ZGVwc1tpXSwKKwkJCQkJCQkJCSAgbXZkZXBzLT5kZXBzW2RlcF9tb3N0 X2F0dHJzX2lkeF0pKQorCQkJeworCQkJCU1WRGVwZW5kZW5jeSAgICpkZXAgPSBtdmRlcHMtPmRl cHNbaV07CisJCQkJTVZEZXBlbmRlbmN5ICAgKnJlZmRlcCA9IG12ZGVwcy0+ZGVwc1tkZXBfbW9z dF9hdHRyc19pZHhdOworCSAgIAkJCWNvbnN0IGNoYXIgKmRlcF9saXN0ID0gZGVwX2F0dG51bV9s aXN0KGRlcCk7CisJICAgCQkJY29uc3QgY2hhciAqcmVmZGVwX2xpc3QgPSBkZXBfYXR0bnVtX2xp c3QocmVmZGVwKTsKKworCQkJCWVycnNhdmUocGFyc2Vfc3RhdGUuZXNjb250ZXh0LAorCQkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCQllcnJt c2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHN0ciksCisJCQkJCQllcnJk ZXRhaWwoIlwiIiBQR19ERVBFTkRFTkNJRVNfS0VZX0FUVFJJQlVURVMgIlwiIGFycmF5OiBbJXNd IgorCQkJCQkJCQkgICIgd2l0aCBkZXBlbmRlbmN5ICVkIG11c3QgYmUgYSBzdWJzZXQgb2YgYXJy YXk6IFslc10iCisJCQkJCQkJCSAgIiB3aXRoIGRlcGVuZGVuY3kgJWQuIiwKKwkJCQkJCQkJICBk ZXBfbGlzdCwgZGVwX2F0dG51bV9kZXBlbmRlbmN5KGRlcCksCisJCQkJCQkJCSAgcmVmZGVwX2xp c3QsIGRlcF9hdHRudW1fZGVwZW5kZW5jeShyZWZkZXApKSk7CisJCQkJUEdfUkVUVVJOX05VTEwo KTsKKwkJCX0KKwkJfQorCQlieXRlcyA9IHN0YXRleHRfZGVwZW5kZW5jaWVzX3NlcmlhbGl6ZSht dmRlcHMpOworCisJCWxpc3RfZnJlZShsaXN0KTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBuZGVw czsgaSsrKQorCQkJcGZyZWUobXZkZXBzLT5kZXBzW2ldKTsKKwkJcGZyZWUobXZkZXBzKTsKKwor CQlQR19SRVRVUk5fQllURUFfUChieXRlcyk7CisJfQorCisJLyoKKwkgKiBJZiBlc2NvbnRleHQg YWxyZWFkeSBzZXQsIGp1c3QgdXNlIHRoYXQuCisJICogQW55dGhpbmcgZWxzZSBpcyBhIGdlbmVy aWMgSlNPTiBwYXJzZSBlcnJvci4KKwkgKi8KKwlpZiAoIVNPRlRfRVJST1JfT0NDVVJSRUQocGFy c2Vfc3RhdGUuZXNjb250ZXh0KSkKKwkJZXJyc2F2ZShwYXJzZV9zdGF0ZS5lc2NvbnRleHQsCisJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJZXJy bXNnKCJtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVzXCIiLCBzdHIpLAorCQkJCWVycmRl dGFpbCgiTXVzdCBiZSB2YWxpZCBKU09OLiIpKTsKKworCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyog a2VlcCBjb21waWxlciBxdWlldCAqLwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wZ19kZXBlbmRlbmNpZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wZ19kZXBlbmRlbmNpZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi45YWEyZGYyNDI3OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGdfZGVwZW5kZW5jaWVzLm91dApAQCAtMCwwICsxLDEyOCBAQAorLS0gVGVzdHMg Zm9yIHR5cGUgcGdfZGlzdGluY3QKKy0tIEludmFsaWQgaW5wdXRzCitTRUxFQ1QgJ1tdJzo6cGdf ZGVwZW5kZW5jaWVzOworRVJST1I6ICBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAiW10iCitM SU5FIDE6IFNFTEVDVCAnW10nOjpwZ19kZXBlbmRlbmNpZXM7CisgICAgICAgICAgICAgICBeCitE RVRBSUw6ICBUaGUgZGVwZW5kZW5jeSBsaXN0IG11c3QgYmUgYW4gbm9uLWVtcHR5IGFycmF5Lgor U0VMRUNUICdbbnVsbF0nOjpwZ19kZXBlbmRlbmNpZXM7CitFUlJPUjogIG1hbGZvcm1lZCBwZ19k ZXBlbmRlbmNpZXM6ICJbbnVsbF0iCitMSU5FIDE6IFNFTEVDVCAnW251bGxdJzo6cGdfZGVwZW5k ZW5jaWVzOworICAgICAgICAgICAgICAgXgorREVUQUlMOiAgSXRlbSBsaXN0IGVsZW1lbnRzIGNh bm5vdCBiZSBudWxsLgorLS0gSW52YWxpZCBrZXlzCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXNfaW52 YWxpZCIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogNH1dJzo6cGdfZGVwZW5kZW5jaWVzOworRVJS T1I6ICBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAiW3siYXR0cmlidXRlc19pbnZhbGlkIiA6 IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiA0fV0iCitMSU5FIDE6IFNFTEVDVCAnW3siYXR0cmlidXRl c19pbnZhbGlkIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiA0fV0nOi4uLgorICAgICAgICAgICAg ICAgXgorREVUQUlMOiAgSW52YWxpZCBrZXkgImF0dHJpYnV0ZXNfaW52YWxpZCIuIE9ubHkgYWxs b3dlZCBrZXlzIGFyZSAiYXR0cmlidXRlcyIsICJkZXBlbmRlbmN5IiBhbmQgImRlZ3JlZSIuCitT RUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJpbnZhbGlkIiA6IDMsICJkZXBlbmRlbmN5 IiA6IDR9XSc6OnBnX2RlcGVuZGVuY2llczsKK0VSUk9SOiAgbWFsZm9ybWVkIHBnX2RlcGVuZGVu Y2llczogIlt7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJpbnZhbGlkIiA6IDMsICJkZXBlbmRlbmN5 IiA6IDR9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiaW52YWxp ZCIgOiAzLCAiZGVwZW5kZW5jeSIgLi4uCisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBJbnZh bGlkIGtleSAiaW52YWxpZCIuIE9ubHkgYWxsb3dlZCBrZXlzIGFyZSAiYXR0cmlidXRlcyIsICJk ZXBlbmRlbmN5IiBhbmQgImRlZ3JlZSIuCistLSBNaXNzaW5nIGtleXMKK1NFTEVDVCAnW3siYXR0 cmlidXRlcyIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogNH1dJzo6cGdfZGVwZW5kZW5jaWVzOwor RVJST1I6ICBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAiW3siYXR0cmlidXRlcyIgOiBbMiwz XSwgImRlcGVuZGVuY3kiIDogNH1dIgorTElORSAxOiBTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDog WzIsM10sICJkZXBlbmRlbmN5IiA6IDR9XSc6OnBnX2RlcGUuLi4KKyAgICAgICAgICAgICAgIF4K K0RFVEFJTDogIEl0ZW0gbXVzdCBjb250YWluICJkZWdyZWUiIGtleS4KK1NFTEVDVCAnW3siYXR0 cmlidXRlcyIgOiBbMiwzXSwgImRlZ3JlZSIgOiAxLjAwMH1dJzo6cGdfZGVwZW5kZW5jaWVzOwor RVJST1I6ICBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAiW3siYXR0cmlidXRlcyIgOiBbMiwz XSwgImRlZ3JlZSIgOiAxLjAwMH1dIgorTElORSAxOiBTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDog WzIsM10sICJkZWdyZWUiIDogMS4wMDB9XSc6OnBnX2RlcGUuLi4KKyAgICAgICAgICAgICAgIF4K K0RFVEFJTDogIEl0ZW0gbXVzdCBjb250YWluICJkZXBlbmRlbmN5IiBrZXkuCitTRUxFQ1QgJ1t7 ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZXBlbmRlbmN5IiA6IDR9XSc6OnBnX2RlcGVuZGVuY2ll czsKK0VSUk9SOiAgbWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogIlt7ImF0dHJpYnV0ZXMiIDog WzIsM10sICJkZXBlbmRlbmN5IiA6IDR9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVz IiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiA0fV0nOjpwZ19kZXBlLi4uCisgICAgICAgICAgICAg ICBeCitERVRBSUw6ICBJdGVtIG11c3QgY29udGFpbiAiZGVncmVlIiBrZXkuCistLSBWYWxpZCBr ZXlzLCBpbnZhbGlkIHZhbHVlcworU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IG51bGwsICJkZXBl bmRlbmN5IiA6IDQsICJkZWdyZWUiOiAxLjAwMH1dJzo6cGdfZGVwZW5kZW5jaWVzOworRVJST1I6 ICBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAiW3siYXR0cmlidXRlcyIgOiBudWxsLCAiZGVw ZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDB9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRy aWJ1dGVzIiA6IG51bGwsICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAxLi4uCisgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBVbmV4cGVjdGVkIHNjYWxhci4KK1NFTEVDVCAnW3siYXR0cmli dXRlcyIgOiBbMixudWxsXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuMDAwfV0nOjpw Z19kZXBlbmRlbmNpZXM7CitFUlJPUjogIG1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6ICJbeyJh dHRyaWJ1dGVzIiA6IFsyLG51bGxdLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDB9 XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLG51bGxdLCAiZGVwZW5kZW5j eSIgOiA0LCAiZGVncmVlLi4uCisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBBdHRudW0gbGlz dCBlbGVtZW50cyBjYW5ub3QgYmUgbnVsbC4KK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwz XSwgImRlcGVuZGVuY3kiIDogbnVsbCwgImRlZ3JlZSI6IDEuMDAwfV0nOjpwZ19kZXBlbmRlbmNp ZXM7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAibnVs bCIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIg OiBudWxsLCAiZGVncmVlLi4uCisgICAgICAgICAgICAgICBeCitTRUxFQ1QgJ1t7ImF0dHJpYnV0 ZXMiIDogWzIsImEiXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuMDAwfV0nOjpwZ19k ZXBlbmRlbmNpZXM7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxs aW50OiAiYSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLCJhIl0sICJkZXBl bmRlbmN5IiA6IDQsICJkZWdyZWUiLi4uCisgICAgICAgICAgICAgICBeCitTRUxFQ1QgJ1t7ImF0 dHJpYnV0ZXMiIDogWzIsM10sICJkZXBlbmRlbmN5IiA6ICJhIiwgImRlZ3JlZSI6IDEuMDAwfV0n OjpwZ19kZXBlbmRlbmNpZXM7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBl IHNtYWxsaW50OiAiYSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAi ZGVwZW5kZW5jeSIgOiAiYSIsICJkZWdyZWUiLi4uCisgICAgICAgICAgICAgICBeCitTRUxFQ1Qg J1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZXBlbmRlbmN5IiA6IFtdLCAiZGVncmVlIjogMS4w MDB9XSc6OnBnX2RlcGVuZGVuY2llczsKK0VSUk9SOiAgbWFsZm9ybWVkIHBnX2RlcGVuZGVuY2ll czogIlt7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZXBlbmRlbmN5IiA6IFtdLCAiZGVncmVlIjog MS4wMDB9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5k ZW5jeSIgOiBbXSwgImRlZ3JlZSI6Li4uCisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBBcnJh eSBmb3VuZCBpbiB1bmV4cGVjdGVkIHBsYWNlLgorU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsy LDNdLCAiZGVwZW5kZW5jeSIgOiBbbnVsbF0sICJkZWdyZWUiOiAxLjAwMH1dJzo6cGdfZGVwZW5k ZW5jaWVzOworRVJST1I6ICBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAiW3siYXR0cmlidXRl cyIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogW251bGxdLCAiZGVncmVlIjogMS4wMDB9XSIKK0xJ TkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiBbbnVs bF0sICJkZWdyLi4uCisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBBcnJheSBmb3VuZCBpbiB1 bmV4cGVjdGVkIHBsYWNlLgorU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5k ZW5jeSIgOiBbMSxudWxsXSwgImRlZ3JlZSI6IDEuMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXM7CitF UlJPUjogIG1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6ICJbeyJhdHRyaWJ1dGVzIiA6IFsyLDNd LCAiZGVwZW5kZW5jeSIgOiBbMSxudWxsXSwgImRlZ3JlZSI6IDEuMDAwfV0iCitMSU5FIDE6IFNF TEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogWzEsbnVsbF0sICJk ZS4uLgorICAgICAgICAgICAgICAgXgorREVUQUlMOiAgQXJyYXkgZm91bmQgaW4gdW5leHBlY3Rl ZCBwbGFjZS4KK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiAxLCAiZGVwZW5kZW5jeSIgOiA0LCAi ZGVncmVlIjogMS4wMDB9XSc6OnBnX2RlcGVuZGVuY2llczsKK0VSUk9SOiAgbWFsZm9ybWVkIHBn X2RlcGVuZGVuY2llczogIlt7ImF0dHJpYnV0ZXMiIDogMSwgImRlcGVuZGVuY3kiIDogNCwgImRl Z3JlZSI6IDEuMDAwfV0iCitMSU5FIDE6IFNFTEVDVCAnW3siYXR0cmlidXRlcyIgOiAxLCAiZGVw ZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMC4uLgorICAgICAgICAgICAgICAgXgorREVUQUlM OiAgVW5leHBlY3RlZCBzY2FsYXIuCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogImEiLCAiZGVw ZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDB9XSc6OnBnX2RlcGVuZGVuY2llczsKK0VSUk9S OiAgbWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogIlt7ImF0dHJpYnV0ZXMiIDogImEiLCAiZGVw ZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDB9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRy aWJ1dGVzIiA6ICJhIiwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuLi4uCisgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBVbmV4cGVjdGVkIHNjYWxhci4KK1NFTEVDVCAnW3siYXR0cmli dXRlcyIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IE5hTn1dJzo6cGdfZGVw ZW5kZW5jaWVzOworRVJST1I6ICBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAiW3siYXR0cmli dXRlcyIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IE5hTn1dIgorTElORSAx OiBTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdy ZWUiOiAuLi4KKyAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIE11c3QgYmUgdmFsaWQgSlNPTi4K Ky0tIER1cGxpY2F0ZWQgYXR0cmlidXRlcworU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDJd LCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMC41MDB9XSc6OnBnX2RlcGVuZGVuY2llczsK K0VSUk9SOiAgbWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogIlt7ImF0dHJpYnV0ZXMiIDogWzIs Ml0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAwLjUwMH1dIgorTElORSAxOiBTRUxFQ1Qg J1t7ImF0dHJpYnV0ZXMiIDogWzIsMl0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAuLi4K KyAgICAgICAgICAgICAgIF4KK0RFVEFJTDogICJhdHRyaWJ1dGVzIiBsaXN0IGR1cGxpY2F0ZSB2 YWx1ZSBmb3VuZDogMi4KKy0tIER1cGxpY2F0ZWQgYXR0cmlidXRlIGxpc3RzLgorU0VMRUNUICdb eyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDB9 LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVn cmVlIjogMS4wMDB9XSc6OnBnX2RlcGVuZGVuY2llczsKK0VSUk9SOiAgbWFsZm9ybWVkIHBnX2Rl cGVuZGVuY2llczogIlt7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZXBlbmRlbmN5IiA6IDQsICJk ZWdyZWUiOiAxLjAwMH0sCisgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZXBlbmRl bmN5IiA6IDQsICJkZWdyZWUiOiAxLjAwMH1dIgorTElORSAxOiBTRUxFQ1QgJ1t7ImF0dHJpYnV0 ZXMiIDogWzIsM10sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAuLi4KKyAgICAgICAgICAg ICAgIF4KK0RFVEFJTDogIER1cGxpY2F0ZSAiYXR0cmlidXRlcyIgYXJyYXk6IFsyLCAzXSB3aXRo ICJkZXBlbmRlbmN5IjogNC4KKy0tIFBhcnRpYWxseS1jb3ZlcmVkIGF0dHJpYnV0ZSBsaXN0cy4K K1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3Jl ZSI6IDEuMDAwfSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMSwtMV0sICJkZXBlbmRlbmN5 IiA6IDQsICJkZWdyZWUiOiAxLjAwMH0sCisgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsMywt MV0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAxLjAwMH0sCisgICAgICAgICB7ImF0dHJp YnV0ZXMiIDogWzIsMywtMSwtMl0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAxLjAwMH1d Jzo6cGdfZGVwZW5kZW5jaWVzOworRVJST1I6ICBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAi W3siYXR0cmlidXRlcyIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuMDAw fSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMSwtMV0sICJkZXBlbmRlbmN5IiA6IDQsICJk ZWdyZWUiOiAxLjAwMH0sCisgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsMywtMV0sICJkZXBl bmRlbmN5IiA6IDQsICJkZWdyZWUiOiAxLjAwMH0sCisgICAgICAgICB7ImF0dHJpYnV0ZXMiIDog WzIsMywtMSwtMl0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAxLjAwMH1dIgorTElORSAx OiBTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdy ZWUiOiAuLi4KKyAgICAgICAgICAgICAgIF4KK0RFVEFJTDogICJhdHRyaWJ1dGVzIiBhcnJheTog WzEsIC0xXSB3aXRoIGRlcGVuZGVuY3kgNCBtdXN0IGJlIGEgc3Vic2V0IG9mIGFycmF5OiBbMiwg MywgLTEsIC0yXSB3aXRoIGRlcGVuZGVuY3kgNC4KKy0tIFZhbGlkIGlucHV0cworU0VMRUNUICdb eyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMC4yNTB9 LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLC0xXSwgImRlcGVuZGVuY3kiIDogNCwgImRl Z3JlZSI6IDAuNTAwfSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0xXSwgImRlcGVu ZGVuY3kiIDogNCwgImRlZ3JlZSI6IDAuNzUwfSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBb MiwzLC0xLC0yXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuMDAwfV0nOjpwZ19kZXBl bmRlbmNpZXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2RlcGVuZGVuY2llcyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgW3siYXR0cmlidXRlcyI6IFsyLCAzXSwgImRlcGVuZGVuY3ki OiA0LCAiZGVncmVlIjogMC4yNTAwMDB9LCB7ImF0dHJpYnV0ZXMiOiBbMiwgLTFdLCAiZGVwZW5k ZW5jeSI6IDQsICJkZWdyZWUiOiAwLjUwMDAwMH0sIHsiYXR0cmlidXRlcyI6IFsyLCAzLCAtMV0s ICJkZXBlbmRlbmN5IjogNCwgImRlZ3JlZSI6IDAuNzUwMDAwfSwgeyJhdHRyaWJ1dGVzIjogWzIs IDMsIC0xLCAtMl0sICJkZXBlbmRlbmN5IjogNCwgImRlZ3JlZSI6IDEuMDAwMDAwfV0KKygxIHJv dykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggZjNmMGI1ZjJmMzEuLmNjNmQ3 OTliY2VhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTI4LDcgKzI4LDcgQEAg dGVzdDogc3RyaW5ncyBtZDUgbnVtZXJvbG9neSBwb2ludCBsc2VnIGxpbmUgYm94IHBhdGggcG9s eWdvbiBjaXJjbGUgZGF0ZSB0aW1lIHQKICMgZ2VvbWV0cnkgZGVwZW5kcyBvbiBwb2ludCwgbHNl ZywgbGluZSwgYm94LCBwYXRoLCBwb2x5Z29uLCBjaXJjbGUKICMgaG9yb2xvZ3kgZGVwZW5kcyBv biBkYXRlLCB0aW1lLCB0aW1ldHosIHRpbWVzdGFtcCwgdGltZXN0YW1wdHosIGludGVydmFsCiAj IC0tLS0tLS0tLS0KLXRlc3Q6IGdlb21ldHJ5IGhvcm9sb2d5IHRzdHlwZXMgcmVnZXggdHlwZV9z YW5pdHkgb3ByX3Nhbml0eSBtaXNjX3Nhbml0eSBjb21tZW50cyBleHByZXNzaW9ucyB1bmljb2Rl IHhpZCBtdmNjIGRhdGFiYXNlIHN0YXRzX2ltcG9ydCBwZ19uZGlzdGluY3QKK3Rlc3Q6IGdlb21l dHJ5IGhvcm9sb2d5IHRzdHlwZXMgcmVnZXggdHlwZV9zYW5pdHkgb3ByX3Nhbml0eSBtaXNjX3Nh bml0eSBjb21tZW50cyBleHByZXNzaW9ucyB1bmljb2RlIHhpZCBtdmNjIGRhdGFiYXNlIHN0YXRz X2ltcG9ydCBwZ19uZGlzdGluY3QgcGdfZGVwZW5kZW5jaWVzCiAKICMgLS0tLS0tLS0tLQogIyBM b2FkIGh1Z2UgYW1vdW50cyBvZiBkYXRhCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wZ19kZXBlbmRlbmNpZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGdfZGVwZW5kZW5j aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTE2ZjZjOTI0 Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZ19kZXBlbmRlbmNp ZXMuc3FsCkBAIC0wLDAgKzEsMzkgQEAKKy0tIFRlc3RzIGZvciB0eXBlIHBnX2Rpc3RpbmN0CisK Ky0tIEludmFsaWQgaW5wdXRzCitTRUxFQ1QgJ1tdJzo6cGdfZGVwZW5kZW5jaWVzOworU0VMRUNU ICdbbnVsbF0nOjpwZ19kZXBlbmRlbmNpZXM7CistLSBJbnZhbGlkIGtleXMKK1NFTEVDVCAnW3si YXR0cmlidXRlc19pbnZhbGlkIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiA0fV0nOjpwZ19kZXBl bmRlbmNpZXM7CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJpbnZhbGlkIiA6IDMs ICJkZXBlbmRlbmN5IiA6IDR9XSc6OnBnX2RlcGVuZGVuY2llczsKKy0tIE1pc3Npbmcga2V5cwor U0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiA0fV0nOjpwZ19k ZXBlbmRlbmNpZXM7CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZWdyZWUiIDog MS4wMDB9XSc6OnBnX2RlcGVuZGVuY2llczsKK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwz XSwgImRlcGVuZGVuY3kiIDogNH1dJzo6cGdfZGVwZW5kZW5jaWVzOworLS0gVmFsaWQga2V5cywg aW52YWxpZCB2YWx1ZXMKK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBudWxsLCAiZGVwZW5kZW5j eSIgOiA0LCAiZGVncmVlIjogMS4wMDB9XSc6OnBnX2RlcGVuZGVuY2llczsKK1NFTEVDVCAnW3si YXR0cmlidXRlcyIgOiBbMixudWxsXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuMDAw fV0nOjpwZ19kZXBlbmRlbmNpZXM7CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJk ZXBlbmRlbmN5IiA6IG51bGwsICJkZWdyZWUiOiAxLjAwMH1dJzo6cGdfZGVwZW5kZW5jaWVzOwor U0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLCJhIl0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdy ZWUiOiAxLjAwMH1dJzo6cGdfZGVwZW5kZW5jaWVzOworU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6 IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiAiYSIsICJkZWdyZWUiOiAxLjAwMH1dJzo6cGdfZGVwZW5k ZW5jaWVzOworU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiBb XSwgImRlZ3JlZSI6IDEuMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXM7CitTRUxFQ1QgJ1t7ImF0dHJp YnV0ZXMiIDogWzIsM10sICJkZXBlbmRlbmN5IiA6IFtudWxsXSwgImRlZ3JlZSI6IDEuMDAwfV0n OjpwZ19kZXBlbmRlbmNpZXM7CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZXBl bmRlbmN5IiA6IFsxLG51bGxdLCAiZGVncmVlIjogMS4wMDB9XSc6OnBnX2RlcGVuZGVuY2llczsK K1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiAxLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjog MS4wMDB9XSc6OnBnX2RlcGVuZGVuY2llczsKK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiAiYSIs ICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAxLjAwMH1dJzo6cGdfZGVwZW5kZW5jaWVzOwor U0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVl IjogTmFOfV0nOjpwZ19kZXBlbmRlbmNpZXM7CistLSBEdXBsaWNhdGVkIGF0dHJpYnV0ZXMKK1NF TEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwyXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6 IDAuNTAwfV0nOjpwZ19kZXBlbmRlbmNpZXM7CistLSBEdXBsaWNhdGVkIGF0dHJpYnV0ZSBsaXN0 cy4KK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogNCwgImRl Z3JlZSI6IDEuMDAwfSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzXSwgImRlcGVuZGVu Y3kiIDogNCwgImRlZ3JlZSI6IDEuMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXM7CistLSBQYXJ0aWFs bHktY292ZXJlZCBhdHRyaWJ1dGUgbGlzdHMuCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzIs M10sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAxLjAwMH0sCisgICAgICAgICB7ImF0dHJp YnV0ZXMiIDogWzEsLTFdLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDB9LAorICAg ICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMsLTFdLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVl IjogMS4wMDB9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMsLTEsLTJdLCAiZGVwZW5k ZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDB9XSc6OnBnX2RlcGVuZGVuY2llczsKKy0tIFZhbGlk IGlucHV0cworU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5kZW5jeSIgOiA0 LCAiZGVncmVlIjogMC4yNTB9LAorICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLC0xXSwgImRl cGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDAuNTAwfSwKKyAgICAgICAgIHsiYXR0cmlidXRlcyIg OiBbMiwzLC0xXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDAuNzUwfSwKKyAgICAgICAg IHsiYXR0cmlidXRlcyIgOiBbMiwzLC0xLC0yXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6 IDEuMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXM7Ci0tIAoyLjUxLjEKCg== --00000000000009c16c0643879075 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0005-Expose-attribute-statistics-functions-for-use-in.patch" Content-Disposition: attachment; filename="v13-0005-Expose-attribute-statistics-functions-for-use-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhyftsne4 RnJvbSBjOWZkMjE3M2VlODdiYjVlNmFiYzA3MzE4Yzk5NjFkOGJlNGFmOGYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDb3JleSBIdWlua2VyIDxjb3JleS5odWlua2VyQGdtYWlsLmNv bT4KRGF0ZTogVHVlLCA0IE5vdiAyMDI1IDIzOjUwOjAxIC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2 MTMgNS83XSBFeHBvc2UgYXR0cmlidXRlIHN0YXRpc3RpY3MgZnVuY3Rpb25zIGZvciB1c2UgaW4K IGV4dGVuZGVkX3N0YXRzLgoKTWFueSBvZiB0aGUgb3BlcmF0aW9ucyBvZiBhdHRyaWJ1dGUgc3Rh dHMgaGF2ZSBhbmFsb2dvdXMgb3BlcmF0aW9ucyBpbgpleHRlbmRlZCBzdGF0cy4KCiogZ2V0X2F0 dHJfc3RhdF90eXBlKCkgcmVuYW1lZCB0byBzdGF0YXR0X2dldF90eXBlKCkKKiBpbml0X2VtcHR5 X3N0YXRzX3R1cGxlKCkgcmVuYW1lZCB0byBzdGF0YXR0X2luaXRfZW1wdHlfdHVwbGUoKQoqIHRl eHRfdG9fc3RhdmFsdWVzKCkKKiBnZXRfZWxlbV9zdGF0X3R5cGUoKSByZW5hbWVkIHRvIHN0YXRh dHRfZ2V0X2VsZW1fdHlwZSgpCgpBbHNvLCBhZGQgY29tbWVudHMgZXhwbGFpbmluZyB0aGUgZnVu Y3Rpb24gYXJndW1lbnQgaW5kZXggZW51bXMsIGFuZCB0aGUKYXJyYXlzIHRoYXQgYXJlIGluZGV4 ZWQgYnkgdGhvc2UgZW51bXMuCi0tLQogc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0aWNz LmggICAgICB8ICAxNyArKysKIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvYXR0cmlidXRlX3N0YXRz LmMgfCAxMjYgKysrKysrKysrKystLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNzcgaW5z ZXJ0aW9ucygrKSwgNjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rh dGlzdGljcy9zdGF0aXN0aWNzLmggYi9zcmMvaW5jbHVkZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3Mu aAppbmRleCA3ZGQwZjk3NTU0NS4uMGRmNjZiMzUyYTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0YXRpc3RpY3Mvc3RhdGlzdGljcy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3Rh dGlzdGljcy5oCkBAIC0xMjcsNCArMTI3LDIxIEBAIGV4dGVybiBTdGF0aXN0aWNFeHRJbmZvICpj aG9vc2VfYmVzdF9zdGF0aXN0aWNzKExpc3QgKnN0YXRzLCBjaGFyIHJlcXVpcmVka2luZCwKIAkJ CQkJCQkJCQkJCWludCBuY2xhdXNlcyk7CiBleHRlcm4gSGVhcFR1cGxlIHN0YXRleHRfZXhwcmVz c2lvbnNfbG9hZChPaWQgc3R4b2lkLCBib29sIGluaCwgaW50IGlkeCk7CiAKK2V4dGVybiB2b2lk IHN0YXRhdHRfZ2V0X3R5cGUoT2lkIHJlbG9pZCwgQXR0ck51bWJlciBhdHRudW0sCisJCQkJCQkJ IE9pZCAqYXR0dHlwaWQsIGludDMyICphdHR0eXBtb2QsCisJCQkJCQkJIGNoYXIgKmF0dHR5cHR5 cGUsIE9pZCAqYXR0dHlwY29sbCwKKwkJCQkJCQkgT2lkICplcV9vcHIsIE9pZCAqbHRfb3ByKTsK K2V4dGVybiB2b2lkIHN0YXRhdHRfaW5pdF9lbXB0eV90dXBsZShPaWQgcmVsb2lkLCBpbnQxNiBh dHRudW0sIGJvb2wgaW5oZXJpdGVkLAorCQkJCQkJCQkJIERhdHVtICp2YWx1ZXMsIGJvb2wgKm51 bGxzLCBib29sICpyZXBsYWNlcyk7CisKK2V4dGVybiB2b2lkIHN0YXRhdHRfc2V0X3Nsb3QoRGF0 dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsIGJvb2wgKnJlcGxhY2VzLAorCQkJCQkJCSBpbnQxNiBz dGFraW5kLCBPaWQgc3Rhb3AsIE9pZCBzdGFjb2xsLAorCQkJCQkJCSBEYXR1bSBzdGFudW1iZXJz LCBib29sIHN0YW51bWJlcnNfaXNudWxsLAorCQkJCQkJCSBEYXR1bSBzdGF2YWx1ZXMsIGJvb2wg c3RhdmFsdWVzX2lzbnVsbCk7CisKK2V4dGVybiBEYXR1bSB0ZXh0X3RvX3N0YXZhbHVlcyhjb25z dCBjaGFyICpzdGFuYW1lLCBGbWdySW5mbyAqYXJyYXlfaW4sIERhdHVtIGQsCisJCQkJCQkJICAg T2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIGJvb2wgKm9rKTsKK2V4dGVybiBib29sIHN0YXRhdHRf Z2V0X2VsZW1fdHlwZShPaWQgYXR0dHlwaWQsIGNoYXIgYXR0dHlwdHlwZSwKKwkJCQkJCQkJICBP aWQgKmVsZW10eXBpZCwgT2lkICplbGVtX2VxX29wcik7CisKICNlbmRpZgkJCQkJCQkvKiBTVEFU SVNUSUNTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvYXR0cmlidXRl X3N0YXRzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2F0dHJpYnV0ZV9zdGF0cy5jCmluZGV4 IGVmNGQ3NjhmZWFiLi5kMGM2N2E0MTI4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlz dGljcy9hdHRyaWJ1dGVfc3RhdHMuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2F0dHJp YnV0ZV9zdGF0cy5jCkBAIC02NCw2ICs2NCwxMCBAQCBlbnVtIGF0dHJpYnV0ZV9zdGF0c19hcmdu dW0KIAlOVU1fQVRUUklCVVRFX1NUQVRTX0FSR1MKIH07CiAKKy8qCisgKiBUaGUgYXJndW1lbnQg bmFtZXMgYW5kIHR5cG9pZHMgb2YgdGhlIGFyZ3VtZW50cyBmb3IKKyAqIGF0dHJpYnV0ZV9zdGF0 aXN0aWNzX3VwZGF0ZS4KKyAqLwogc3RhdGljIHN0cnVjdCBTdGF0c0FyZ0luZm8gYXR0YXJnaW5m b1tdID0KIHsKIAlbQVRUUkVMU0NIRU1BX0FSR10gPSB7InNjaGVtYW5hbWUiLCBURVhUT0lEfSwK QEAgLTEwMSw2ICsxMDUsMTAgQEAgZW51bSBjbGVhcl9hdHRyaWJ1dGVfc3RhdHNfYXJnbnVtCiAJ Q19OVU1fQVRUUklCVVRFX1NUQVRTX0FSR1MKIH07CiAKKy8qCisgKiBUaGUgYXJndW1lbnQgbmFt ZXMgYW5kIHR5cG9pZHMgb2YgdGhlIGFyZ3VtZW50cyBmb3IKKyAqIHBnX2NsZWFyX2F0dHJpYnV0 ZV9zdGF0cy4KKyAqLwogc3RhdGljIHN0cnVjdCBTdGF0c0FyZ0luZm8gY2xlYXJhcmdpbmZvW10g PQogewogCVtDX0FUVFJFTFNDSEVNQV9BUkddID0geyJyZWxhdGlvbiIsIFRFWFRPSUR9LApAQCAt MTEyLDIzICsxMjAsOSBAQCBzdGF0aWMgc3RydWN0IFN0YXRzQXJnSW5mbyBjbGVhcmFyZ2luZm9b XSA9CiAKIHN0YXRpYyBib29sIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlvbkNh bGxJbmZvIGZjaW5mbyk7CiBzdGF0aWMgTm9kZSAqZ2V0X2F0dHJfZXhwcihSZWxhdGlvbiByZWws IGludCBhdHRudW0pOwotc3RhdGljIHZvaWQgZ2V0X2F0dHJfc3RhdF90eXBlKE9pZCByZWxvaWQs IEF0dHJOdW1iZXIgYXR0bnVtLAotCQkJCQkJCSAgIE9pZCAqYXR0dHlwaWQsIGludDMyICphdHR0 eXBtb2QsCi0JCQkJCQkJICAgY2hhciAqYXR0dHlwdHlwZSwgT2lkICphdHR0eXBjb2xsLAotCQkJ CQkJCSAgIE9pZCAqZXFfb3ByLCBPaWQgKmx0X29wcik7Ci1zdGF0aWMgYm9vbCBnZXRfZWxlbV9z dGF0X3R5cGUoT2lkIGF0dHR5cGlkLCBjaGFyIGF0dHR5cHR5cGUsCi0JCQkJCQkJICAgT2lkICpl bGVtdHlwaWQsIE9pZCAqZWxlbV9lcV9vcHIpOwotc3RhdGljIERhdHVtIHRleHRfdG9fc3RhdmFs dWVzKGNvbnN0IGNoYXIgKnN0YW5hbWUsIEZtZ3JJbmZvICphcnJheV9pbiwgRGF0dW0gZCwKLQkJ CQkJCQkgICBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgYm9vbCAqb2spOwotc3RhdGljIHZvaWQg c2V0X3N0YXRzX3Nsb3QoRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsIGJvb2wgKnJlcGxhY2Vz LAotCQkJCQkJICAgaW50MTYgc3Rha2luZCwgT2lkIHN0YW9wLCBPaWQgc3RhY29sbCwKLQkJCQkJ CSAgIERhdHVtIHN0YW51bWJlcnMsIGJvb2wgc3RhbnVtYmVyc19pc251bGwsCi0JCQkJCQkgICBE YXR1bSBzdGF2YWx1ZXMsIGJvb2wgc3RhdmFsdWVzX2lzbnVsbCk7CiBzdGF0aWMgdm9pZCB1cHNl cnRfcGdfc3RhdGlzdGljKFJlbGF0aW9uIHN0YXJlbCwgSGVhcFR1cGxlIG9sZHR1cCwKIAkJCQkJ CQkJY29uc3QgRGF0dW0gKnZhbHVlcywgY29uc3QgYm9vbCAqbnVsbHMsIGNvbnN0IGJvb2wgKnJl cGxhY2VzKTsKIHN0YXRpYyBib29sIGRlbGV0ZV9wZ19zdGF0aXN0aWMoT2lkIHJlbG9pZCwgQXR0 ck51bWJlciBhdHRudW0sIGJvb2wgc3RhaW5oZXJpdCk7Ci1zdGF0aWMgdm9pZCBpbml0X2VtcHR5 X3N0YXRzX3R1cGxlKE9pZCByZWxvaWQsIGludDE2IGF0dG51bSwgYm9vbCBpbmhlcml0ZWQsCi0J CQkJCQkJCSAgIERhdHVtICp2YWx1ZXMsIGJvb2wgKm51bGxzLCBib29sICpyZXBsYWNlcyk7CiAK IC8qCiAgKiBJbnNlcnQgb3IgVXBkYXRlIEF0dHJpYnV0ZSBTdGF0aXN0aWNzCkBAIC0yOTgsMTYg KzI5MiwxNiBAQCBhdHRyaWJ1dGVfc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8pCiAJfQogCiAJLyogZGVyaXZlIGluZm9ybWF0aW9uIGZyb20gYXR0cmlidXRlICovCi0J Z2V0X2F0dHJfc3RhdF90eXBlKHJlbG9pZCwgYXR0bnVtLAotCQkJCQkgICAmYXR0dHlwaWQsICZh dHR0eXBtb2QsCi0JCQkJCSAgICZhdHR0eXB0eXBlLCAmYXR0dHlwY29sbCwKLQkJCQkJICAgJmVx X29wciwgJmx0X29wcik7CisJc3RhdGF0dF9nZXRfdHlwZShyZWxvaWQsIGF0dG51bSwKKwkJCQkJ ICZhdHR0eXBpZCwgJmF0dHR5cG1vZCwKKwkJCQkJICZhdHR0eXB0eXBlLCAmYXR0dHlwY29sbCwK KwkJCQkJICZlcV9vcHIsICZsdF9vcHIpOwogCiAJLyogaWYgbmVlZGVkLCBkZXJpdmUgZWxlbWVu dCB0eXBlICovCiAJaWYgKGRvX21jZWxlbSB8fCBkb19kZWNoaXN0KQogCXsKLQkJaWYgKCFnZXRf ZWxlbV9zdGF0X3R5cGUoYXR0dHlwaWQsIGF0dHR5cHR5cGUsCi0JCQkJCQkJCSZlbGVtdHlwaWQs ICZlbGVtX2VxX29wcikpCisJCWlmICghc3RhdGF0dF9nZXRfZWxlbV90eXBlKGF0dHR5cGlkLCBh dHR0eXB0eXBlLAorCQkJCQkJCQkgICAmZWxlbXR5cGlkLCAmZWxlbV9lcV9vcHIpKQogCQl7CiAJ CQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCShlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1pbmUgZWxl bWVudCB0eXBlIG9mIGNvbHVtbiBcIiVzXCIiLCBhdHRuYW1lKSwKQEAgLTM2MSw3ICszNTUsNyBA QCBhdHRyaWJ1dGVfc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJ aWYgKEhlYXBUdXBsZUlzVmFsaWQoc3RhdHVwKSkKIAkJaGVhcF9kZWZvcm1fdHVwbGUoc3RhdHVw LCBSZWxhdGlvbkdldERlc2NyKHN0YXJlbCksIHZhbHVlcywgbnVsbHMpOwogCWVsc2UKLQkJaW5p dF9lbXB0eV9zdGF0c190dXBsZShyZWxvaWQsIGF0dG51bSwgaW5oZXJpdGVkLCB2YWx1ZXMsIG51 bGxzLAorCQlzdGF0YXR0X2luaXRfZW1wdHlfdHVwbGUocmVsb2lkLCBhdHRudW0sIGluaGVyaXRl ZCwgdmFsdWVzLCBudWxscywKIAkJCQkJCQkgICByZXBsYWNlcyk7CiAKIAkvKiBpZiBzcGVjaWZp ZWQsIHNldCB0byBhcmd1bWVudCB2YWx1ZXMgKi8KQEAgLTM5NCwxMCArMzg4LDEwIEBAIGF0dHJp YnV0ZV9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAogCQlpZiAo Y29udmVydGVkKQogCQl7Ci0JCQlzZXRfc3RhdHNfc2xvdCh2YWx1ZXMsIG51bGxzLCByZXBsYWNl cywKLQkJCQkJCSAgIFNUQVRJU1RJQ19LSU5EX01DViwKLQkJCQkJCSAgIGVxX29wciwgYXR0dHlw Y29sbCwKLQkJCQkJCSAgIHN0YW51bWJlcnMsIGZhbHNlLCBzdGF2YWx1ZXMsIGZhbHNlKTsKKwkJ CXN0YXRhdHRfc2V0X3Nsb3QodmFsdWVzLCBudWxscywgcmVwbGFjZXMsCisJCQkJCQkJIFNUQVRJ U1RJQ19LSU5EX01DViwKKwkJCQkJCQkgZXFfb3ByLCBhdHR0eXBjb2xsLAorCQkJCQkJCSBzdGFu dW1iZXJzLCBmYWxzZSwgc3RhdmFsdWVzLCBmYWxzZSk7CiAJCX0KIAkJZWxzZQogCQkJcmVzdWx0 ID0gZmFsc2U7CkBAIC00MTcsMTAgKzQxMSwxMCBAQCBhdHRyaWJ1dGVfc3RhdGlzdGljc191cGRh dGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAKIAkJaWYgKGNvbnZlcnRlZCkKIAkJewotCQkJ c2V0X3N0YXRzX3Nsb3QodmFsdWVzLCBudWxscywgcmVwbGFjZXMsCi0JCQkJCQkgICBTVEFUSVNU SUNfS0lORF9ISVNUT0dSQU0sCi0JCQkJCQkgICBsdF9vcHIsIGF0dHR5cGNvbGwsCi0JCQkJCQkg ICAwLCB0cnVlLCBzdGF2YWx1ZXMsIGZhbHNlKTsKKwkJCXN0YXRhdHRfc2V0X3Nsb3QodmFsdWVz LCBudWxscywgcmVwbGFjZXMsCisJCQkJCQkJIFNUQVRJU1RJQ19LSU5EX0hJU1RPR1JBTSwKKwkJ CQkJCQkgbHRfb3ByLCBhdHR0eXBjb2xsLAorCQkJCQkJCSAwLCB0cnVlLCBzdGF2YWx1ZXMsIGZh bHNlKTsKIAkJfQogCQllbHNlCiAJCQlyZXN1bHQgPSBmYWxzZTsKQEAgLTQzMywxMCArNDI3LDEw IEBAIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykK IAkJQXJyYXlUeXBlICAqYXJyeSA9IGNvbnN0cnVjdF9hcnJheV9idWlsdGluKGVsZW1zLCAxLCBG TE9BVDRPSUQpOwogCQlEYXR1bQkJc3RhbnVtYmVycyA9IFBvaW50ZXJHZXREYXR1bShhcnJ5KTsK IAotCQlzZXRfc3RhdHNfc2xvdCh2YWx1ZXMsIG51bGxzLCByZXBsYWNlcywKLQkJCQkJICAgU1RB VElTVElDX0tJTkRfQ09SUkVMQVRJT04sCi0JCQkJCSAgIGx0X29wciwgYXR0dHlwY29sbCwKLQkJ CQkJICAgc3RhbnVtYmVycywgZmFsc2UsIDAsIHRydWUpOworCQlzdGF0YXR0X3NldF9zbG90KHZh bHVlcywgbnVsbHMsIHJlcGxhY2VzLAorCQkJCQkJIFNUQVRJU1RJQ19LSU5EX0NPUlJFTEFUSU9O LAorCQkJCQkJIGx0X29wciwgYXR0dHlwY29sbCwKKwkJCQkJCSBzdGFudW1iZXJzLCBmYWxzZSwg MCwgdHJ1ZSk7CiAJfQogCiAJLyogU1RBVElTVElDX0tJTkRfTUNFTEVNICovCkBAIC00NTQsMTAg KzQ0OCwxMCBAQCBhdHRyaWJ1dGVfc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8pCiAKIAkJaWYgKGNvbnZlcnRlZCkKIAkJewotCQkJc2V0X3N0YXRzX3Nsb3QodmFsdWVz LCBudWxscywgcmVwbGFjZXMsCi0JCQkJCQkgICBTVEFUSVNUSUNfS0lORF9NQ0VMRU0sCi0JCQkJ CQkgICBlbGVtX2VxX29wciwgYXR0dHlwY29sbCwKLQkJCQkJCSAgIHN0YW51bWJlcnMsIGZhbHNl LCBzdGF2YWx1ZXMsIGZhbHNlKTsKKwkJCXN0YXRhdHRfc2V0X3Nsb3QodmFsdWVzLCBudWxscywg cmVwbGFjZXMsCisJCQkJCQkJIFNUQVRJU1RJQ19LSU5EX01DRUxFTSwKKwkJCQkJCQkgZWxlbV9l cV9vcHIsIGF0dHR5cGNvbGwsCisJCQkJCQkJIHN0YW51bWJlcnMsIGZhbHNlLCBzdGF2YWx1ZXMs IGZhbHNlKTsKIAkJfQogCQllbHNlCiAJCQlyZXN1bHQgPSBmYWxzZTsKQEAgLTQ2OCwxMCArNDYy LDEwIEBAIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5m bykKIAl7CiAJCURhdHVtCQlzdGFudW1iZXJzID0gUEdfR0VUQVJHX0RBVFVNKEVMRU1fQ09VTlRf SElTVE9HUkFNX0FSRyk7CiAKLQkJc2V0X3N0YXRzX3Nsb3QodmFsdWVzLCBudWxscywgcmVwbGFj ZXMsCi0JCQkJCSAgIFNUQVRJU1RJQ19LSU5EX0RFQ0hJU1QsCi0JCQkJCSAgIGVsZW1fZXFfb3By LCBhdHR0eXBjb2xsLAotCQkJCQkgICBzdGFudW1iZXJzLCBmYWxzZSwgMCwgdHJ1ZSk7CisJCXN0 YXRhdHRfc2V0X3Nsb3QodmFsdWVzLCBudWxscywgcmVwbGFjZXMsCisJCQkJCQkgU1RBVElTVElD X0tJTkRfREVDSElTVCwKKwkJCQkJCSBlbGVtX2VxX29wciwgYXR0dHlwY29sbCwKKwkJCQkJCSBz dGFudW1iZXJzLCBmYWxzZSwgMCwgdHJ1ZSk7CiAJfQogCiAJLyoKQEAgLTQ5NCwxMCArNDg4LDEw IEBAIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykK IAogCQlpZiAoY29udmVydGVkKQogCQl7Ci0JCQlzZXRfc3RhdHNfc2xvdCh2YWx1ZXMsIG51bGxz LCByZXBsYWNlcywKLQkJCQkJCSAgIFNUQVRJU1RJQ19LSU5EX0JPVU5EU19ISVNUT0dSQU0sCi0J CQkJCQkgICBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLAotCQkJCQkJICAgMCwgdHJ1ZSwgc3RhdmFs dWVzLCBmYWxzZSk7CisJCQlzdGF0YXR0X3NldF9zbG90KHZhbHVlcywgbnVsbHMsIHJlcGxhY2Vz LAorCQkJCQkJCSBTVEFUSVNUSUNfS0lORF9CT1VORFNfSElTVE9HUkFNLAorCQkJCQkJCSBJbnZh bGlkT2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCSAwLCB0cnVlLCBzdGF2YWx1ZXMsIGZhbHNlKTsK IAkJfQogCQllbHNlCiAJCQlyZXN1bHQgPSBmYWxzZTsKQEAgLTUyMSwxMCArNTE1LDEwIEBAIGF0 dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAogCQlp ZiAoY29udmVydGVkKQogCQl7Ci0JCQlzZXRfc3RhdHNfc2xvdCh2YWx1ZXMsIG51bGxzLCByZXBs YWNlcywKLQkJCQkJCSAgIFNUQVRJU1RJQ19LSU5EX1JBTkdFX0xFTkdUSF9ISVNUT0dSQU0sCi0J CQkJCQkgICBGbG9hdDhMZXNzT3BlcmF0b3IsIEludmFsaWRPaWQsCi0JCQkJCQkgICBzdGFudW1i ZXJzLCBmYWxzZSwgc3RhdmFsdWVzLCBmYWxzZSk7CisJCQlzdGF0YXR0X3NldF9zbG90KHZhbHVl cywgbnVsbHMsIHJlcGxhY2VzLAorCQkJCQkJCSBTVEFUSVNUSUNfS0lORF9SQU5HRV9MRU5HVEhf SElTVE9HUkFNLAorCQkJCQkJCSBGbG9hdDhMZXNzT3BlcmF0b3IsIEludmFsaWRPaWQsCisJCQkJ CQkJIHN0YW51bWJlcnMsIGZhbHNlLCBzdGF2YWx1ZXMsIGZhbHNlKTsKIAkJfQogCQllbHNlCiAJ CQlyZXN1bHQgPSBmYWxzZTsKQEAgLTU4NCwxMSArNTc4LDExIEBAIGdldF9hdHRyX2V4cHIoUmVs YXRpb24gcmVsLCBpbnQgYXR0bnVtKQogLyoKICAqIERlcml2ZSB0eXBlIGluZm9ybWF0aW9uIGZy b20gdGhlIGF0dHJpYnV0ZS4KICAqLwotc3RhdGljIHZvaWQKLWdldF9hdHRyX3N0YXRfdHlwZShP aWQgcmVsb2lkLCBBdHRyTnVtYmVyIGF0dG51bSwKLQkJCQkgICBPaWQgKmF0dHR5cGlkLCBpbnQz MiAqYXR0dHlwbW9kLAotCQkJCSAgIGNoYXIgKmF0dHR5cHR5cGUsIE9pZCAqYXR0dHlwY29sbCwK LQkJCQkgICBPaWQgKmVxX29wciwgT2lkICpsdF9vcHIpCit2b2lkCitzdGF0YXR0X2dldF90eXBl KE9pZCByZWxvaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAorCQkJCSBPaWQgKmF0dHR5cGlkLCBpbnQz MiAqYXR0dHlwbW9kLAorCQkJCSBjaGFyICphdHR0eXB0eXBlLCBPaWQgKmF0dHR5cGNvbGwsCisJ CQkJIE9pZCAqZXFfb3ByLCBPaWQgKmx0X29wcikKIHsKIAlSZWxhdGlvbglyZWwgPSByZWxhdGlv bl9vcGVuKHJlbG9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRy OwpAQCAtNjY2LDkgKzY2MCw5IEBAIGdldF9hdHRyX3N0YXRfdHlwZShPaWQgcmVsb2lkLCBBdHRy TnVtYmVyIGF0dG51bSwKIC8qCiAgKiBEZXJpdmUgZWxlbWVudCB0eXBlIGluZm9ybWF0aW9uIGZy b20gdGhlIGF0dHJpYnV0ZSB0eXBlLgogICovCi1zdGF0aWMgYm9vbAotZ2V0X2VsZW1fc3RhdF90 eXBlKE9pZCBhdHR0eXBpZCwgY2hhciBhdHR0eXB0eXBlLAotCQkJCSAgIE9pZCAqZWxlbXR5cGlk LCBPaWQgKmVsZW1fZXFfb3ByKQorYm9vbAorc3RhdGF0dF9nZXRfZWxlbV90eXBlKE9pZCBhdHR0 eXBpZCwgY2hhciBhdHR0eXB0eXBlLAorCQkJCQkgIE9pZCAqZWxlbXR5cGlkLCBPaWQgKmVsZW1f ZXFfb3ByKQogewogCVR5cGVDYWNoZUVudHJ5ICplbGVtdHlwY2FjaGU7CiAKQEAgLTcwNiw3ICs3 MDAsNyBAQCBnZXRfZWxlbV9zdGF0X3R5cGUoT2lkIGF0dHR5cGlkLCBjaGFyIGF0dHR5cHR5cGUs CiAgKiB0byBmYWxzZS4gSWYgdGhlIHJlc3VsdGluZyBhcnJheSBjb250YWlucyBOVUxMcywgcmFp c2UgYSBXQVJOSU5HIGFuZCBzZXQgb2sKICAqIHRvIGZhbHNlLiBPdGhlcndpc2UsIHNldCBvayB0 byB0cnVlLgogICovCi1zdGF0aWMgRGF0dW0KK0RhdHVtCiB0ZXh0X3RvX3N0YXZhbHVlcyhjb25z dCBjaGFyICpzdGFuYW1lLCBGbWdySW5mbyAqYXJyYXlfaW4sIERhdHVtIGQsIE9pZCB0eXBpZCwK IAkJCQkgIGludDMyIHR5cG1vZCwgYm9vbCAqb2spCiB7CkBAIC03NTksMTEgKzc1MywxMSBAQCB0 ZXh0X3RvX3N0YXZhbHVlcyhjb25zdCBjaGFyICpzdGFuYW1lLCBGbWdySW5mbyAqYXJyYXlfaW4s IERhdHVtIGQsIE9pZCB0eXBpZCwKICAqIEZpbmQgYW5kIHVwZGF0ZSB0aGUgc2xvdCB3aXRoIHRo ZSBnaXZlbiBzdGFraW5kLCBvciB1c2UgdGhlIGZpcnN0IGVtcHR5CiAgKiBzbG90LgogICovCi1z dGF0aWMgdm9pZAotc2V0X3N0YXRzX3Nsb3QoRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsIGJv b2wgKnJlcGxhY2VzLAotCQkJICAgaW50MTYgc3Rha2luZCwgT2lkIHN0YW9wLCBPaWQgc3RhY29s bCwKLQkJCSAgIERhdHVtIHN0YW51bWJlcnMsIGJvb2wgc3RhbnVtYmVyc19pc251bGwsCi0JCQkg ICBEYXR1bSBzdGF2YWx1ZXMsIGJvb2wgc3RhdmFsdWVzX2lzbnVsbCkKK3ZvaWQKK3N0YXRhdHRf c2V0X3Nsb3QoRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsIGJvb2wgKnJlcGxhY2VzLAorCQkJ CSBpbnQxNiBzdGFraW5kLCBPaWQgc3Rhb3AsIE9pZCBzdGFjb2xsLAorCQkJCSBEYXR1bSBzdGFu dW1iZXJzLCBib29sIHN0YW51bWJlcnNfaXNudWxsLAorCQkJCSBEYXR1bSBzdGF2YWx1ZXMsIGJv b2wgc3RhdmFsdWVzX2lzbnVsbCkKIHsKIAlpbnQJCQlzbG90aWR4OwogCWludAkJCWZpcnN0X2Vt cHR5ID0gLTE7CkBAIC04ODMsOSArODc3LDkgQEAgZGVsZXRlX3BnX3N0YXRpc3RpYyhPaWQgcmVs b2lkLCBBdHRyTnVtYmVyIGF0dG51bSwgYm9vbCBzdGFpbmhlcml0KQogLyoKICAqIEluaXRpYWxp emUgdmFsdWVzIGFuZCBudWxscyBmb3IgYSBuZXcgc3RhdHMgdHVwbGUuCiAgKi8KLXN0YXRpYyB2 b2lkCi1pbml0X2VtcHR5X3N0YXRzX3R1cGxlKE9pZCByZWxvaWQsIGludDE2IGF0dG51bSwgYm9v bCBpbmhlcml0ZWQsCi0JCQkJCSAgIERhdHVtICp2YWx1ZXMsIGJvb2wgKm51bGxzLCBib29sICpy ZXBsYWNlcykKK3ZvaWQKK3N0YXRhdHRfaW5pdF9lbXB0eV90dXBsZShPaWQgcmVsb2lkLCBpbnQx NiBhdHRudW0sIGJvb2wgaW5oZXJpdGVkLAorCQkJCQkJIERhdHVtICp2YWx1ZXMsIGJvb2wgKm51 bGxzLCBib29sICpyZXBsYWNlcykKIHsKIAltZW1zZXQobnVsbHMsIHRydWUsIHNpemVvZihib29s KSAqIE5hdHRzX3BnX3N0YXRpc3RpYyk7CiAJbWVtc2V0KHJlcGxhY2VzLCB0cnVlLCBzaXplb2Yo Ym9vbCkgKiBOYXR0c19wZ19zdGF0aXN0aWMpOwotLSAKMi41MS4xCgo= --00000000000009c16c0643879075 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0006-Add-extended-statistics-support-functions.patch" Content-Disposition: attachment; filename="v13-0006-Add-extended-statistics-support-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhyfty096 RnJvbSBiYTM3OGE3NGE5NmI5NDBkYmZmNTU5MTIwNGRiMjU2NzI3MTAzNzcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWllci54eXo+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMTY6NTg6MjYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYx MyA2LzddIEFkZCBleHRlbmRlZCBzdGF0aXN0aWNzIHN1cHBvcnQgZnVuY3Rpb25zLgoKQWRkIHBn X3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoKSBhbmQgcGdfY2xlYXJfZXh0ZW5kZWRfc3RhdHMoKS4g VGhlc2UKZnVuY3Rpb25zIGNsb3NlbHkgbWlycm9yIHRoZWlyIHJlbGF0aW9uIGFuZCBhdHRyaWJ1 dGUgY291bnRlcnBhcnRzLApidXQgZm9yIGV4dGVuZGVkIHN0YXRpc3RpY3MgKGkuZS4gIENSRUFU RSBTVEFUSVNUSUNTKSBvYmplY3RzLgotLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQgICAgICAgICAgICAgICB8ICAgMTggKwogLi4uL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNf aW50ZXJuYWwuaCAgICAgIHwgICAxNyArCiBzcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVu Y2llcy5jICAgICAgICAgfCAgIDYxICsKIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRf c3RhdHMuYyAgICAgICB8IDExNDEgKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3N0YXRp c3RpY3MvbWN2LmMgICAgICAgICAgICAgICAgICB8ICAxNDQgKysrCiBzcmMvYmFja2VuZC9zdGF0 aXN0aWNzL212ZGlzdGluY3QuYyAgICAgICAgICAgfCAgIDYyICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3RhdHNfaW1wb3J0Lm91dCAgICB8IDExMjMgKysrKysrKysrKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfaW1wb3J0LnNxbCAgICAgICAgIHwgIDM2NCArKysrKysK IGRvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbCAgICAgICAgICAgICB8ICAgOTggKysK IDkgZmlsZXMgY2hhbmdlZCwgMzAyNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNWNmOWUxMmZjYjkuLjg0ZTlmMTc2ZDE5IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKQEAgLTEyNTk0LDYgKzEyNTk0LDI0IEBACiAgIHByb25hbWUgPT4g J2dpc3RfdHJhbnNsYXRlX2NtcHR5cGVfY29tbW9uJywgcHJvcmV0dHlwZSA9PiAnaW50MicsCiAg IHByb2FyZ3R5cGVzID0+ICdpbnQ0JywgcHJvc3JjID0+ICdnaXN0X3RyYW5zbGF0ZV9jbXB0eXBl X2NvbW1vbicgfSwKIAorIyBFeHRlbmRlZCBTdGF0aXN0aWNzIEltcG9ydAoreyBvaWQgPT4gJzk5 NDcnLAorICBkZXNjciA9PiAncmVzdG9yZSBzdGF0aXN0aWNzIG9uIGV4dGVuZGVkIHN0YXRpc3Rp Y3Mgb2JqZWN0JywKKyAgcHJvbmFtZSA9PiAncGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cycsIHBy b3ZvbGF0aWxlID0+ICd2JywgcHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm92YXJpYWRpYyA9PiAn YW55JywKKyAgcHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9yZXR0eXBlID0+ICdib29sJywKKyAgcHJv YXJndHlwZXMgPT4gJ2FueScsCisgIHByb2FyZ25hbWVzID0+ICd7a3dhcmdzfScsCisgIHByb2Fy Z21vZGVzID0+ICd7dn0nLAorICBwcm9zcmMgPT4gJ3BnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMn IH0sCit7IG9pZCA9PiAnOTk0OCcsCisgIGRlc2NyID0+ICdjbGVhciBzdGF0aXN0aWNzIG9uIGV4 dGVuZGVkIHN0YXRpc3RpY3Mgb2JqZWN0JywKKyAgcHJvbmFtZSA9PiAncGdfY2xlYXJfZXh0ZW5k ZWRfc3RhdHMnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJv cGFyYWxsZWwgPT4gJ3UnLCBwcm9yZXR0eXBlID0+ICd2b2lkJywKKyAgcHJvYXJndHlwZXMgPT4g J3RleHQgdGV4dCBib29sJywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzdGF0aXN0aWNzX3NjaGVtYW5h bWUsc3RhdGlzdGljc19uYW1lLGluaGVyaXRlZH0nLAorICBwcm9zcmMgPT4gJ3BnX2NsZWFyX2V4 dGVuZGVkX3N0YXRzJyB9LAorCiAjIEFJTyByZWxhdGVkIGZ1bmN0aW9ucwogeyBvaWQgPT4gJzYz OTknLCBkZXNjciA9PiAnaW5mb3JtYXRpb24gYWJvdXQgaW4tcHJvZ3Jlc3MgYXN5bmNocm9ub3Vz IElPcycsCiAgIHByb25hbWUgPT4gJ3BnX2dldF9haW9zJywgcHJvcm93cyA9PiAnMTAwJywgcHJv cmV0c2V0ID0+ICd0JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5k ZWRfc3RhdHNfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3Rh dHNfaW50ZXJuYWwuaAppbmRleCBlZmNiN2RjMzU0Ni4uYmE3ZjVkY2FkODIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaAorKysgYi9z cmMvaW5jbHVkZS9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzX2ludGVybmFsLmgKQEAgLTEyNyw0 ICsxMjcsMjEgQEAgZXh0ZXJuIFNlbGVjdGl2aXR5IG1jdl9jbGF1c2Vfc2VsZWN0aXZpdHlfb3Io UGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCSBTZWxlY3Rpdml0eSAqb3ZlcmxhcF9iYXNl c2VsLAogCQkJCQkJCQkJCQkgU2VsZWN0aXZpdHkgKnRvdGFsc2VsKTsKIAorZXh0ZXJuIERhdHVt IGltcG9ydF9tY3ZsaXN0KEhlYXBUdXBsZSB0dXAsIGludCBlbGV2ZWwsIGludCBudW1hdHRycywK KwkJCQkJCQlPaWQgKmF0dHR5cGlkcywgaW50MzIgKmF0dHR5cG1vZHMsIE9pZCAqYXR0dHlwY29s bHMsCisJCQkJCQkJaW50IG5pdGVtcywgRGF0dW0gKm1jdl9lbGVtcywgYm9vbCAqbWN2X251bGxz LAorCQkJCQkJCWJvb2wgKm1jdl9lbGVtX251bGxzLCBmbG9hdDggKmZyZXFzLCBmbG9hdDggKmJh c2VfZnJlcXMpOworCitleHRlcm4gRGF0dW0gaW1wb3J0X21jdmxpc3QoSGVhcFR1cGxlIHR1cCwg aW50IGVsZXZlbCwgaW50IG51bWF0dHJzLAorCQkJCQkJCU9pZCAqYXR0dHlwaWRzLCBpbnQzMiAq YXR0dHlwbW9kcywgT2lkICphdHR0eXBjb2xscywKKwkJCQkJCQlpbnQgbml0ZW1zLCBEYXR1bSAq bWN2X2VsZW1zLCBib29sICptY3ZfbnVsbHMsCisJCQkJCQkJYm9vbCAqbWN2X2VsZW1fbnVsbHMs IGZsb2F0OCAqZnJlcXMsIGZsb2F0OCAqYmFzZV9mcmVxcyk7CitleHRlcm4gYm9vbCBwZ19uZGlz dGluY3RfdmFsaWRhdGVfaXRlbXMoTVZORGlzdGluY3QgKm5kaXN0aW5jdCwgaW50MnZlY3RvciAq c3R4a2V5cywKKwkJCQkJCQkJCQlpbnQgbnVtZXhwcnMsIGludCBlbGV2ZWwpOworZXh0ZXJuIHZv aWQgZnJlZV9wZ19uZGlzdGluY3QoTVZORGlzdGluY3QgKm5kaXN0aW5jdCk7CitleHRlcm4gYm9v bCBwZ19kZXBlbmRlbmNpZXNfdmFsaWRhdGVfZGVwcyhNVkRlcGVuZGVuY2llcyAqZGVwZW5kZW5j aWVzLAorCQkJCQkJCQkJCSAgaW50MnZlY3RvciAqc3R4a2V5cywgaW50IG51bWV4cHJzLAorCQkJ CQkJCQkJCSAgaW50IGVsZXZlbCk7CitleHRlcm4gdm9pZCBmcmVlX3BnX2RlcGVuZGVuY2llcyhN VkRlcGVuZGVuY2llcyAqZGVwZW5kZW5jaWVzKTsKKwogI2VuZGlmCQkJCQkJCS8qIEVYVEVOREVE X1NUQVRTX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3Mv ZGVwZW5kZW5jaWVzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCmlu ZGV4IDZmNjNiNGYzZmZiLi4zMWE5ZjFjZmM3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9kZXBlbmRlbmNpZXMuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVu ZGVuY2llcy5jCkBAIC0xMDY1LDYgKzEwNjUsNTUgQEAgY2xhdXNlbGlzdF9hcHBseV9kZXBlbmRl bmNpZXMoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmNsYXVzZXMsCiAJcmV0dXJuIHMxOwogfQog CisvKgorICogVmFsaWRhdGUgYW4gTVZEZXBlbmRlbmNpZXMgYWdhaW5zdCB0aGUgZXh0ZW5kZWQg c3RhdGlzdGljcyBvYmplY3QgZGVmaW5pdGlvbi4KKyAqCisgKiBFdmVyeSBNVkRlcGVuZGVuY2ll cyBtdXN0IGJlIGNoZWNrZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGF0dG51bXMgaW4gdGhlCisgKiBh dHRyaWJ1dGVzIGxpc3QgY29ycmVzcG9uZCB0byBhdHRudW1zL2V4cHJlc3Npb25zIGRlZmluZWQg YnkgdGhlCisgKiBleHRlbmRlZCBzdGF0aXN0aWNzIG9iamVjdC4KKyAqCisgKiBQb3NpdGl2ZSBh dHRudW1zIGFyZSBhdHRyaWJ1dGVzIHdoaWNoIG11c3QgYmUgZm91bmQgaW4gdGhlIHN0eGtleXMs CisgKiB3aGlsZSBuZWdhdGl2ZSBhdHRudW1zIGNvcnJlc3BvbmQgdG8gYW4gZXhwciBudW1iZXIs IHNvIHRoZSBhdHRudW0KKyAqIGNhbid0IGJlIGJlbG93ICgwIC0gbnVtZXhwcnMpLgorICovCiti b29sCitwZ19kZXBlbmRlbmNpZXNfdmFsaWRhdGVfZGVwcyhNVkRlcGVuZGVuY2llcyAqZGVwZW5k ZW5jaWVzLCBpbnQydmVjdG9yICpzdHhrZXlzLCBpbnQgbnVtZXhwcnMsIGludCBlbGV2ZWwpCit7 CisJaW50CQlhdHRudW1fZXhwcl9sb3dib3VuZCA9IDAgLSBudW1leHByczsKKworCWZvciAoaW50 IGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLT5uZGVwczsgaSsrKQorCXsKKwkJTVZEZXBlbmRlbmN5 ICpkZXAgPSBkZXBlbmRlbmNpZXMtPmRlcHNbaV07CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCBk ZXAtPm5hdHRyaWJ1dGVzOyBqKyspCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0bnVtID0gZGVwLT5h dHRyaWJ1dGVzW2pdOworCQkJYm9vbAkJb2sgPSBmYWxzZTsKKworCQkJaWYgKGF0dG51bSA+IDAp CisJCQl7CisJCQkJZm9yIChpbnQgayA9IDA7IGsgPCBzdHhrZXlzLT5kaW0xOyBrKyspCisJCQkJ CWlmIChhdHRudW0gPT0gc3R4a2V5cy0+dmFsdWVzW2tdKQorCQkJCQl7CisJCQkJCQlvayA9IHRy dWU7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJfQorCQkJZWxzZSBpZiAoKGF0dG51bSA8IDAp ICYmIChhdHRudW0gPj0gYXR0bnVtX2V4cHJfbG93Ym91bmQpKQorCQkJCW9rID0gdHJ1ZTsKKwor CQkJaWYgKCFvaykKKwkJCXsKKwkJCQllcmVwb3J0KGVsZXZlbCwKKwkJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJCWVycm1zZygicGdfZGVw ZW5kZW5jaWVzOiBpbnZhbGlkIGF0dG51bSBmb3IgdGhpcyBzdGF0aXN0aWNzIG9iamVjdDogJWQi LCBhdHRudW0pKSk7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQl9CisJfQorCXJldHVybiB0 cnVlOworfQorCiAvKgogICogZGVwZW5kZW5jeV9pc19jb21wYXRpYmxlX2V4cHJlc3Npb24KICAq CQlEZXRlcm1pbmVzIGlmIHRoZSBleHByZXNzaW9uIGlzIGNvbXBhdGlibGUgd2l0aCBmdW5jdGlv bmFsIGRlcGVuZGVuY2llcwpAQCAtMTI0OCw2ICsxMjk3LDE4IEBAIGRlcGVuZGVuY3lfaXNfY29t cGF0aWJsZV9leHByZXNzaW9uKE5vZGUgKmNsYXVzZSwgSW5kZXggcmVsaWQsIExpc3QgKnN0YXRs aXN0LCBOCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogRnJlZSBhbGxvY2F0aW9ucyBvZiBh biBNVk5EaXN0aW5jdAorICovCit2b2lkCitmcmVlX3BnX2RlcGVuZGVuY2llcyhNVkRlcGVuZGVu Y2llcyAqZGVwZW5kZW5jaWVzKQoreworCWZvciAoaW50IGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVz LT5uZGVwczsgaSsrKQorCQlwZnJlZShkZXBlbmRlbmNpZXMtPmRlcHNbaV0pOworCisJcGZyZWUo ZGVwZW5kZW5jaWVzKTsKK30KKwogLyoKICAqIGRlcGVuZGVuY2llc19jbGF1c2VsaXN0X3NlbGVj dGl2aXR5CiAgKgkJUmV0dXJuIHRoZSBlc3RpbWF0ZWQgc2VsZWN0aXZpdHkgb2YgKGEgc3Vic2V0 IG9mKSB0aGUgZ2l2ZW4gY2xhdXNlcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9leHRlbmRlZF9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0 cy5jCmluZGV4IDNjM2QyZDMxNWM2Li4yM2FiM2NmODdlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3Rp Y3MvZXh0ZW5kZWRfc3RhdHMuYwpAQCAtMTgsMjEgKzE4LDI4IEBACiAKICNpbmNsdWRlICJhY2Nl c3MvZGV0b2FzdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1ZGUgImFjY2Vz cy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cC5oIgogI2luY2x1ZGUgImFjY2Vzcy9o dHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJjYXRh bG9nL2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0 YXRpc3RpY19leHRfZGF0YS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZV9kLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIK ICNpbmNsdWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1 dG9yLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNz LmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29w dGltaXplci5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJzdGF0 aXN0aWNzL2V4dGVuZGVkX3N0YXRzX2ludGVybmFsLmgiCisjaW5jbHVkZSAic3RhdGlzdGljcy9z dGF0X3V0aWxzLmgiCiAjaW5jbHVkZSAic3RhdGlzdGljcy9zdGF0aXN0aWNzLmgiCiAjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKQEAgLTcyLDYgKzc5LDg0 IEBAIHR5cGVkZWYgc3RydWN0IFN0YXRFeHRFbnRyeQogCUxpc3QJICAgKmV4cHJzOwkJCS8qIGV4 cHJlc3Npb25zICovCiB9IFN0YXRFeHRFbnRyeTsKIAorLyoKKyAqIEFuIGluZGV4IG9mIHRoZSBh cmdzIGZvciBleHRlbmRlZF9zdGF0aXN0aWNzX3VwZGF0ZSgpLgorICovCitlbnVtIGV4dGVuZGVk X3N0YXRzX2FyZ251bQoreworCVNUQVRTQ0hFTUFfQVJHID0gMCwKKwlTVEFUTkFNRV9BUkcsCisJ SU5IRVJJVEVEX0FSRywKKwlORElTVElOQ1RfQVJHLAorCURFUEVOREVOQ0lFU19BUkcsCisJTU9T VF9DT01NT05fVkFMU19BUkcsCisJTU9TVF9DT01NT05fVkFMX05VTExTX0FSRywKKwlNT1NUX0NP TU1PTl9GUkVRU19BUkcsCisJTU9TVF9DT01NT05fQkFTRV9GUkVRU19BUkcsCisJRVhQUkVTU0lP TlNfQVJHLAorCU5VTV9FWFRFTkRFRF9TVEFUU19BUkdTCit9OworCisvKgorICogVGhlIGFyZ3Vt ZW50IG5hbWVzIGFuZCB0eXBvaWRzIG9mIHRoZSBhcmd1bWVudHMgZm9yCisgKiBleHRlbmRlZF9z dGF0aXN0aWNzX3VwZGF0ZSgpLgorICovCitzdGF0aWMgc3RydWN0IFN0YXRzQXJnSW5mbyBleHRh cmdpbmZvW10gPQoreworCVtTVEFUU0NIRU1BX0FSR10gPSB7InN0YXRpc3RpY3Nfc2NoZW1hbmFt ZSIsIFRFWFRPSUR9LAorCVtTVEFUTkFNRV9BUkddID0geyJzdGF0aXN0aWNzX25hbWUiLCBURVhU T0lEfSwKKwlbSU5IRVJJVEVEX0FSR10gPSB7ImluaGVyaXRlZCIsIEJPT0xPSUR9LAorCVtORElT VElOQ1RfQVJHXSA9IHsibl9kaXN0aW5jdCIsIFBHX05ESVNUSU5DVE9JRH0sCisJW0RFUEVOREVO Q0lFU19BUkddID0geyJkZXBlbmRlbmNpZXMiLCBQR19ERVBFTkRFTkNJRVNPSUR9LAorCVtNT1NU X0NPTU1PTl9WQUxTX0FSR10gPSB7Im1vc3RfY29tbW9uX3ZhbHMiLCBURVhUQVJSQVlPSUR9LAor CVtNT1NUX0NPTU1PTl9WQUxfTlVMTFNfQVJHXSA9IHsibW9zdF9jb21tb25fdmFsX251bGxzIiwg Qk9PTEFSUkFZT0lEfSwKKwlbTU9TVF9DT01NT05fRlJFUVNfQVJHXSA9IHsibW9zdF9jb21tb25f ZnJlcXMiLCBGTE9BVDhBUlJBWU9JRH0sCisJW01PU1RfQ09NTU9OX0JBU0VfRlJFUVNfQVJHXSA9 IHsibW9zdF9jb21tb25fYmFzZV9mcmVxcyIsIEZMT0FUOEFSUkFZT0lEfSwKKwlbRVhQUkVTU0lP TlNfQVJHXSA9IHsiZXhwcnMiLCBURVhUQVJSQVlPSUR9LAorCVtOVU1fRVhURU5ERURfU1RBVFNf QVJHU10gPSB7MH0KK307CisKKy8qCisgKiBBbiBpbmRleCBvZiB0aGUgZWxlbWVudHMgb2YgdGhl IHN0eGRleHBycyBkYXR1bSwgd2hpY2ggcmVwZWF0IGZvciBlYWNoCisgKiBleHByZXNzaW9uIGlu IHRoZSBleHRlbmRlZCBzdGF0aXN0aWNzIG9iamVjdC4KKyAqCisgKiBOT1RFOiB0aGUgUkFOR0Vf TEVOR1RIICYgUkFOR0VfQk9VTkRTIHN0YXRzIGFyZSBub3QgeWV0IHJlZmxlY3RlZCBpbiBhbnkK KyAqIHZlcnNpb24gb2YgcGdfc3RhdF9leHRfZXhwcnMuCisgKi8KK2VudW0gZXh0ZW5kZWRfc3Rh dHNfZXhwcnNfZWxlbWVudAoreworCU5VTExfRlJBQ19FTEVNID0gMCwKKwlBVkdfV0lEVEhfRUxF TSwKKwlOX0RJU1RJTkNUX0VMRU0sCisJTU9TVF9DT01NT05fVkFMU19FTEVNLAorCU1PU1RfQ09N TU9OX0ZSRVFTX0VMRU0sCisJSElTVE9HUkFNX0JPVU5EU19FTEVNLAorCUNPUlJFTEFUSU9OX0VM RU0sCisJTU9TVF9DT01NT05fRUxFTVNfRUxFTSwKKwlNT1NUX0NPTU1PTl9FTEVNX0ZSRVFTX0VM RU0sCisJRUxFTV9DT1VOVF9ISVNUT0dSQU1fRUxFTSwKKwlOVU1fQVRUUklCVVRFX1NUQVRTX0VM RU1TCit9OworCisvKgorICogVGhlIGFyZ3VtZW50IG5hbWVzIGFuZCB0eXBvaWRzIG9mIHRoZSBy ZXBlYXRpbmcgYXJndW1lbnRzIGZvciBzdHhkZXhwcnMuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgU3Rh dHNBcmdJbmZvIGV4dGV4cHJhcmdpbmZvW10gPQoreworCVtOVUxMX0ZSQUNfRUxFTV0gPSB7Im51 bGxfZnJhYyIsIEZMT0FUNE9JRH0sCisJW0FWR19XSURUSF9FTEVNXSA9IHsiYXZnX3dpZHRoIiwg SU5UNE9JRH0sCisJW05fRElTVElOQ1RfRUxFTV0gPSB7Im5fZGlzdGluY3QiLCBGTE9BVDRPSUR9 LAorCVtNT1NUX0NPTU1PTl9WQUxTX0VMRU1dID0geyJtb3N0X2NvbW1vbl92YWxzIiwgVEVYVE9J RH0sCisJW01PU1RfQ09NTU9OX0ZSRVFTX0VMRU1dID0geyJtb3N0X2NvbW1vbl9mcmVxcyIsIEZM T0FUNEFSUkFZT0lEfSwKKwlbSElTVE9HUkFNX0JPVU5EU19FTEVNXSA9IHsiaGlzdG9ncmFtX2Jv dW5kcyIsIFRFWFRPSUR9LAorCVtDT1JSRUxBVElPTl9FTEVNXSA9IHsiY29ycmVsYXRpb24iLCBG TE9BVDRPSUR9LAorCVtNT1NUX0NPTU1PTl9FTEVNU19FTEVNXSA9IHsibW9zdF9jb21tb25fZWxl bXMiLCBURVhUT0lEfSwKKwlbTU9TVF9DT01NT05fRUxFTV9GUkVRU19FTEVNXSA9IHsibW9zdF9j b21tb25fZWxlbV9mcmVxcyIsIEZMT0FUNEFSUkFZT0lEfSwKKwlbRUxFTV9DT1VOVF9ISVNUT0dS QU1fRUxFTV0gPSB7ImVsZW1fY291bnRfaGlzdG9ncmFtIiwgRkxPQVQ0QVJSQVlPSUR9LAorCVtO VU1fQVRUUklCVVRFX1NUQVRTX0VMRU1TXSA9IHswfQorfTsKKworc3RhdGljIGJvb2wgZXh0ZW5k ZWRfc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pOwogCiBzdGF0aWMg TGlzdCAqZmV0Y2hfc3RhdGVudHJpZXNfZm9yX3JlbGF0aW9uKFJlbGF0aW9uIHBnX3N0YXRleHQs IE9pZCByZWxpZCk7CiBzdGF0aWMgVmFjQXR0clN0YXRzICoqbG9va3VwX3Zhcl9hdHRyX3N0YXRz KEJpdG1hcHNldCAqYXR0cnMsIExpc3QgKmV4cHJzLApAQCAtOTksNiArMTg0LDI4IEBAIHN0YXRp YyBTdGF0c0J1aWxkRGF0YSAqbWFrZV9idWlsZF9kYXRhKFJlbGF0aW9uIHJlbCwgU3RhdEV4dEVu dHJ5ICpzdGF0LAogCQkJCQkJCQkJICAgaW50IG51bXJvd3MsIEhlYXBUdXBsZSAqcm93cywKIAkJ CQkJCQkJCSAgIFZhY0F0dHJTdGF0cyAqKnN0YXRzLCBpbnQgc3RhdHRhcmdldCk7CiAKK3N0YXRp YyBIZWFwVHVwbGUgZ2V0X3BnX3N0YXRpc3RpY19leHQoUmVsYXRpb24gcGdfc3RleHQsIE9pZCBu c3BvaWQsCisJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnN0eG5hbWUpOworc3RhdGljIGJvb2wgZGVs ZXRlX3BnX3N0YXRpc3RpY19leHRfZGF0YShPaWQgc3R4b2lkLCBib29sIGluaGVyaXRlZCk7CisK K3R5cGVkZWYgc3RydWN0Cit7CisJYm9vbAkJbmRpc3RpbmN0OworCWJvb2wJCWRlcGVuZGVuY2ll czsKKwlib29sCQltY3Y7CisJYm9vbAkJZXhwcmVzc2lvbnM7Cit9CQkJc3Rha2luZEZsYWdzOwor CitzdGF0aWMgdm9pZCBleHBhbmRfc3R4a2luZChIZWFwVHVwbGUgdHVwLCBzdGFraW5kRmxhZ3Mg KiBlbmFibGVkKTsKK3N0YXRpYyB2b2lkIHVwc2VydF9wZ19zdGF0aXN0aWNfZXh0X2RhdGEoRGF0 dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsIGJvb2wgKnJlcGxhY2VzKTsKK3N0YXRpYyBib29sIGNo ZWNrX21jdmxpc3RfYXJyYXkoQXJyYXlUeXBlICphcnIsIGludCBhcmdpbmRleCwKKwkJCQkJCQkJ aW50IHJlcXVpcmVkX25kaW1zLCBpbnQgbWN2X2xlbmd0aCk7CitzdGF0aWMgRGF0dW0gaW1wb3J0 X2V4cHJlc3Npb25zKFJlbGF0aW9uIHBnc2QsIGludCBudW1leHBycywKKwkJCQkJCQkJT2lkICph dHR0eXBpZHMsIGludDMyICphdHR0eXBtb2RzLAorCQkJCQkJCQlPaWQgKmF0dHR5cGNvbGxzLCBB cnJheVR5cGUgKmV4cHJzX2Fycik7CitzdGF0aWMgYm9vbCB0ZXh0X3RvX2Zsb2F0NChEYXR1bSBp bnB1dCwgRGF0dW0gKm91dHB1dCk7CitzdGF0aWMgYm9vbCB0ZXh0X3RvX2ludDQoRGF0dW0gaW5w dXQsIERhdHVtICpvdXRwdXQpOworCiAKIC8qCiAgKiBDb21wdXRlIHJlcXVlc3RlZCBleHRlbmRl ZCBzdGF0cywgdXNpbmcgdGhlIHJvd3Mgc2FtcGxlZCBmb3IgdGhlIHBsYWluCkBAIC0xMjEsNyAr MjI4LDcgQEAgQnVpbGRSZWxhdGlvbkV4dFN0YXRpc3RpY3MoUmVsYXRpb24gb25lcmVsLCBib29s IGluaCwgZG91YmxlIHRvdGFscm93cywKIAogCS8qIERvIG5vdGhpbmcgaWYgdGhlcmUgYXJlIG5v IGNvbHVtbnMgdG8gYW5hbHl6ZS4gKi8KIAlpZiAoIW5hdHRzKQotCQlyZXR1cm47CisJcmV0dXJu OwogCiAJLyogdGhlIGxpc3Qgb2Ygc3RhdHMgaGFzIHRvIGJlIGFsbG9jYXRlZCBvdXRzaWRlIHRo ZSBtZW1vcnkgY29udGV4dCAqLwogCXBnX3N0ZXh0ID0gdGFibGVfb3BlbihTdGF0aXN0aWNFeHRS ZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKQEAgLTI2MTIsMyArMjcxOSwxMDM1IEBAIG1h a2VfYnVpbGRfZGF0YShSZWxhdGlvbiByZWwsIFN0YXRFeHRFbnRyeSAqc3RhdCwgaW50IG51bXJv d3MsIEhlYXBUdXBsZSAqcm93cywKIAogCXJldHVybiByZXN1bHQ7CiB9CisKK3N0YXRpYyBIZWFw VHVwbGUKK2dldF9wZ19zdGF0aXN0aWNfZXh0KFJlbGF0aW9uIHBnX3N0ZXh0LCBPaWQgbnNwb2lk LCBjb25zdCBjaGFyICpzdHhuYW1lKQoreworCVNjYW5LZXlEYXRhIGtleVsyXTsKKwlTeXNTY2Fu RGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXA7CisJT2lkCQkJc3R4b2lkID0gSW52YWxpZE9pZDsK KworCVNjYW5LZXlJbml0KCZrZXlbMF0sCisJCQkJQW51bV9wZ19zdGF0aXN0aWNfZXh0X3N0eG5h bWUsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLAorCQkJCUZfTkFNRUVRLAorCQkJCUNTdHJp bmdHZXREYXR1bShzdHhuYW1lKSk7CisJU2NhbktleUluaXQoJmtleVsxXSwKKwkJCQlBbnVtX3Bn X3N0YXRpc3RpY19leHRfc3R4bmFtZXNwYWNlLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwK KwkJCQlGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0obnNwb2lkKSk7CisKKwkvKgorCSAq IFRyeSB0byBmaW5kIG1hdGNoaW5nIHBnX3N0YXRpc3RpY19leHQgcm93LgorCSAqLworCXNjYW4g PSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfc3RleHQsCisJCQkJCQkJICBTdGF0aXN0aWNFeHROYW1l SW5kZXhJZCwKKwkJCQkJCQkgIHRydWUsCisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAgMiwKKwkJ CQkJCQkgIGtleSk7CisKKwkvKiBVbmlxdWUgaW5kZXgsIGVpdGhlciB3ZSBnZXQgYSB0dXBsZSBv ciB3ZSBkb24ndC4gKi8KKwl0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pOworCisJaWYgKEhl YXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJc3R4b2lkID0gKChGb3JtX3BnX3N0YXRpc3RpY19leHQp IEdFVFNUUlVDVCh0dXApKS0+b2lkOworCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCWlm ICghT2lkSXNWYWxpZChzdHhvaWQpKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiBTZWFyY2hT eXNDYWNoZUNvcHkxKFNUQVRFWFRPSUQsIE9iamVjdElkR2V0RGF0dW0oc3R4b2lkKSk7Cit9CisK Ky8qCisgKiBEZWNvZGUgdGhlIHN0eGtpbmQgY29sdW1uIHNvIHRoYXQgd2Uga25vdyB3aGljaCBz dGF0cyB0eXBlcyB0byBleHBlY3QuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfc3R4a2luZChI ZWFwVHVwbGUgdHVwLCBzdGFraW5kRmxhZ3MgKiBlbmFibGVkKQoreworCURhdHVtCQlkYXR1bTsK KwlBcnJheVR5cGUgICphcnI7CisJY2hhcgkgICAqa2luZHM7CisKKwlkYXR1bSA9IFN5c0NhY2hl R2V0QXR0ck5vdE51bGwoU1RBVEVYVE9JRCwKKwkJCQkJCQkJICAgdHVwLAorCQkJCQkJCQkgICBB bnVtX3BnX3N0YXRpc3RpY19leHRfc3R4a2luZCk7CisJYXJyID0gRGF0dW1HZXRBcnJheVR5cGVQ KGRhdHVtKTsKKwlpZiAoQVJSX05ESU0oYXJyKSAhPSAxIHx8IEFSUl9IQVNOVUxMKGFycikgfHwg QVJSX0VMRU1UWVBFKGFycikgIT0gQ0hBUk9JRCkKKwkJZWxvZyhFUlJPUiwgInN0eGtpbmQgaXMg bm90IGEgMS1EIGNoYXIgYXJyYXkiKTsKKworCWtpbmRzID0gKGNoYXIgKikgQVJSX0RBVEFfUFRS KGFycik7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IEFSUl9ESU1TKGFycilbMF07IGkrKykKKwkJ aWYgKGtpbmRzW2ldID09IFNUQVRTX0VYVF9ORElTVElOQ1QpCisJCQllbmFibGVkLT5uZGlzdGlu Y3QgPSB0cnVlOworCQllbHNlIGlmIChraW5kc1tpXSA9PSBTVEFUU19FWFRfREVQRU5ERU5DSUVT KQorCQkJZW5hYmxlZC0+ZGVwZW5kZW5jaWVzID0gdHJ1ZTsKKwkJZWxzZSBpZiAoa2luZHNbaV0g PT0gU1RBVFNfRVhUX01DVikKKwkJCWVuYWJsZWQtPm1jdiA9IHRydWU7CisJCWVsc2UgaWYgKGtp bmRzW2ldID09IFNUQVRTX0VYVF9FWFBSRVNTSU9OUykKKwkJCWVuYWJsZWQtPmV4cHJlc3Npb25z ID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQKK3Vwc2VydF9wZ19zdGF0aXN0aWNfZXh0X2RhdGEo RGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsIGJvb2wgKnJlcGxhY2VzKQoreworCVJlbGF0aW9u CXBnX3N0ZXh0ZGF0YTsKKwlIZWFwVHVwbGUJc3R4ZHR1cDsKKwlIZWFwVHVwbGUJbmV3dHVwOwor CisJcGdfc3RleHRkYXRhID0gdGFibGVfb3BlbihTdGF0aXN0aWNFeHREYXRhUmVsYXRpb25JZCwg Um93RXhjbHVzaXZlTG9jayk7CisKKwlzdHhkdHVwID0gU2VhcmNoU3lzQ2FjaGUyKFNUQVRFWFRE QVRBU1RYT0lELAorCQkJCQkJCSAgdmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0 eG9pZCAtIDFdLAorCQkJCQkJCSAgdmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0 eGRpbmhlcml0IC0gMV0pOworCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQoc3R4ZHR1cCkpCisJewor CQluZXd0dXAgPSBoZWFwX21vZGlmeV90dXBsZShzdHhkdHVwLAorCQkJCQkJCQkgICBSZWxhdGlv bkdldERlc2NyKHBnX3N0ZXh0ZGF0YSksCisJCQkJCQkJCSAgIHZhbHVlcywKKwkJCQkJCQkJICAg bnVsbHMsCisJCQkJCQkJCSAgIHJlcGxhY2VzKTsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBnX3N0 ZXh0ZGF0YSwgJm5ld3R1cC0+dF9zZWxmLCBuZXd0dXApOworCQlSZWxlYXNlU3lzQ2FjaGUoc3R4 ZHR1cCk7CisJfQorCWVsc2UKKwl7CisJCW5ld3R1cCA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlv bkdldERlc2NyKHBnX3N0ZXh0ZGF0YSksIHZhbHVlcywgbnVsbHMpOworCQlDYXRhbG9nVHVwbGVJ bnNlcnQocGdfc3RleHRkYXRhLCBuZXd0dXApOworCX0KKworCWhlYXBfZnJlZXR1cGxlKG5ld3R1 cCk7CisKKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJdGFibGVfY2xvc2UocGdfc3Rl eHRkYXRhLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30KKworLyoKKyAqIEluc2VydCBvciBVcGRhdGUg RXh0ZW5kZWQgU3RhdGlzdGljcworICoKKyAqIE1ham9yIGVycm9ycywgc3VjaCBhcyB0aGUgdGFi bGUgbm90IGV4aXN0aW5nLCB0aGUgc3RhdGlzdGljcyBvYmplY3Qgbm90CisgKiBleGlzdGluZywg b3IgYSBwZXJtaXNzaW9ucyBmYWlsdXJlIGFyZSBhbHdheXMgcmVwb3J0ZWQgYXQgRVJST1IuIE90 aGVyCisgKiBlcnJvcnMsIHN1Y2ggYXMgYSBjb252ZXJzaW9uIGZhaWx1cmUgb24gb25lIHN0YXRp c3RpYyBraW5kLCBhcmUgcmVwb3J0ZWQKKyAqIGFzIFdBUk5JTkdzLCBhbmQgb3RoZXIgc3RhdGlz dGljIGtpbmRzIG1heSBzdGlsbCBiZSB1cGRhdGVkLgorICovCitzdGF0aWMgYm9vbAorZXh0ZW5k ZWRfc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCit7CisJT2lkCQkJ bnNwb2lkOworCWNoYXIJICAgKm5zcG5hbWU7CisJY2hhcgkgICAqc3R4bmFtZTsKKwlib29sCQlp bmhlcml0ZWQ7CisJUmVsYXRpb24JcGdfc3RleHQ7CisJSGVhcFR1cGxlCXR1cCA9IE5VTEw7CisK KwlzdGFraW5kRmxhZ3MgZW5hYmxlZDsKKwlzdGFraW5kRmxhZ3MgaGFzOworCisJRm9ybV9wZ19z dGF0aXN0aWNfZXh0IHN0eGZvcm07CisKKwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3N0YXRpc3Rp Y19leHRfZGF0YV07CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfc3RhdGlzdGljX2V4dF9kYXRhXTsK Kwlib29sCQlyZXBsYWNlc1tOYXR0c19wZ19zdGF0aXN0aWNfZXh0X2RhdGFdOworCisJYm9vbAkJ c3VjY2VzcyA9IHRydWU7CisKKwlEYXR1bQkJZXhwcmRhdHVtOworCWJvb2wJCWlzbnVsbDsKKwlM aXN0CSAgICpleHBycyA9IE5JTDsKKwlpbnQJCQludW1hdHRudW1zID0gMDsKKwlpbnQJCQludW1l eHBycyA9IDA7CisJaW50CQkJbnVtYXR0cnMgPSAwOworCisJLyogYXJyYXlzIG9mIHR5cGUgaW5m bywgaWYgd2UgbmVlZCB0aGVtICovCisJT2lkCQkgICAqYXR0dHlwaWRzID0gTlVMTDsKKwlpbnQz MgkgICAqYXR0dHlwbW9kcyA9IE5VTEw7CisJT2lkCQkgICAqYXR0dHlwY29sbHMgPSBOVUxMOwor CVJlbGF0aW9uCXJlbDsKKwlPaWQJCQlsb2NrZWRfdGFibGUgPSBJbnZhbGlkT2lkOworCisJbWVt c2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisJbWVtc2V0KHZhbHVlcywgMCwgc2l6 ZW9mKHZhbHVlcykpOworCW1lbXNldChyZXBsYWNlcywgMCwgc2l6ZW9mKHJlcGxhY2VzKSk7CisJ bWVtc2V0KCZlbmFibGVkLCAwLCBzaXplb2YoZW5hYmxlZCkpOworCisJaGFzLm1jdiA9ICghUEdf QVJHSVNOVUxMKE1PU1RfQ09NTU9OX1ZBTFNfQVJHKSAmJgorCQkJICAgIVBHX0FSR0lTTlVMTChN T1NUX0NPTU1PTl9WQUxfTlVMTFNfQVJHKSAmJgorCQkJICAgIVBHX0FSR0lTTlVMTChNT1NUX0NP TU1PTl9GUkVRU19BUkcpICYmCisJCQkgICAhUEdfQVJHSVNOVUxMKE1PU1RfQ09NTU9OX0JBU0Vf RlJFUVNfQVJHKSk7CisJaGFzLm5kaXN0aW5jdCA9ICFQR19BUkdJU05VTEwoTkRJU1RJTkNUX0FS Ryk7CisJaGFzLmRlcGVuZGVuY2llcyA9ICFQR19BUkdJU05VTEwoREVQRU5ERU5DSUVTX0FSRyk7 CisJaGFzLmV4cHJlc3Npb25zID0gIVBHX0FSR0lTTlVMTChFWFBSRVNTSU9OU19BUkcpOworCisJ aWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBl cnJtc2coInJlY292ZXJ5IGlzIGluIHByb2dyZXNzIiksCisJCQkJIGVycmhpbnQoIlN0YXRpc3Rp Y3MgY2Fubm90IGJlIG1vZGlmaWVkIGR1cmluZyByZWNvdmVyeS4iKSkpOworCQlQR19SRVRVUk5f Qk9PTChmYWxzZSk7CisJfQorCisJc3RhdHNfY2hlY2tfcmVxdWlyZWRfYXJnKGZjaW5mbywgZXh0 YXJnaW5mbywgU1RBVFNDSEVNQV9BUkcpOworCW5zcG5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5n KFBHX0dFVEFSR19EQVRVTShTVEFUU0NIRU1BX0FSRykpOworCXN0YXRzX2NoZWNrX3JlcXVpcmVk X2FyZyhmY2luZm8sIGV4dGFyZ2luZm8sIFNUQVROQU1FX0FSRyk7CisJc3R4bmFtZSA9IFRleHRE YXR1bUdldENTdHJpbmcoUEdfR0VUQVJHX0RBVFVNKFNUQVROQU1FX0FSRykpOworCXN0YXRzX2No ZWNrX3JlcXVpcmVkX2FyZyhmY2luZm8sIGV4dGFyZ2luZm8sIElOSEVSSVRFRF9BUkcpOworCWlu aGVyaXRlZCA9IFBHX0dFVEFSR19OQU1FKElOSEVSSVRFRF9BUkcpOworCisJbnNwb2lkID0gZ2V0 X25hbWVzcGFjZV9vaWQobnNwbmFtZSwgdHJ1ZSk7CisJaWYgKG5zcG9pZCA9PSBJbnZhbGlkT2lk KQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X09CSkVDVCksCisJCQkJIGVycm1zZygiTmFtZXNwYWNlIFwiJXNcIiBub3QgZm91bmQuIiwgc3R4 bmFtZSkpKTsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCXBnX3N0ZXh0ID0gdGFi bGVfb3BlbihTdGF0aXN0aWNFeHRSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAg PSBnZXRfcGdfc3RhdGlzdGljX2V4dChwZ19zdGV4dCwgbnNwb2lkLCBzdHhuYW1lKTsKKworCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCXsKKwkJdGFibGVfY2xvc2UocGdfc3RleHQsIFJv d0V4Y2x1c2l2ZUxvY2spOworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNnKCJFeHRlbmRlZCBTdGF0aXN0aWNzIE9i amVjdCBcIiVzXCIuXCIlc1wiIG5vdCBmb3VuZC4iLAorCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1l KG5zcG9pZCksIHN0eG5hbWUpKSk7CisJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9CisKKwlz dHhmb3JtID0gKEZvcm1fcGdfc3RhdGlzdGljX2V4dCkgR0VUU1RSVUNUKHR1cCk7CisJZXhwYW5k X3N0eGtpbmQodHVwLCAmZW5hYmxlZCk7CisJbnVtYXR0bnVtcyA9IHN0eGZvcm0tPnN0eGtleXMu ZGltMTsKKworCS8qIGRlY29kZSBleHByZXNzaW9uIChpZiBhbnkpICovCisJZXhwcmRhdHVtID0g U3lzQ2FjaGVHZXRBdHRyKFNUQVRFWFRPSUQsCisJCQkJCQkJCXR1cCwKKwkJCQkJCQkJQW51bV9w Z19zdGF0aXN0aWNfZXh0X3N0eGV4cHJzLAorCQkJCQkJCQkmaXNudWxsKTsKKworCWlmICghaXNu dWxsKQorCXsKKwkJY2hhcgkgICAqczsKKworCQlzID0gVGV4dERhdHVtR2V0Q1N0cmluZyhleHBy ZGF0dW0pOworCQlleHBycyA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShzKTsKKwkJcGZyZWUocyk7 CisKKwkJLyoKKwkJCSogUnVuIHRoZSBleHByZXNzaW9ucyB0aHJvdWdoIGV2YWxfY29uc3RfZXhw cmVzc2lvbnMuIFRoaXMgaXMgbm90CisJCQkqIGp1c3QgYW4gb3B0aW1pemF0aW9uLCBidXQgaXMg bmVjZXNzYXJ5LCBiZWNhdXNlIHRoZSBwbGFubmVyCisJCQkqIHdpbGwgYmUgY29tcGFyaW5nIHRo ZW0gdG8gc2ltaWxhcmx5LXByb2Nlc3NlZCBxdWFsIGNsYXVzZXMsIGFuZAorCQkJKiBtYXkgZmFp bCB0byBkZXRlY3QgdmFsaWQgbWF0Y2hlcyB3aXRob3V0IHRoaXMuICBXZSBtdXN0IG5vdCB1c2UK KwkJCSogY2Fub25pY2FsaXplX3F1YWwsIGhvd2V2ZXIsIHNpbmNlIHRoZXNlIGFyZW4ndCBxdWFs CisJCQkqIGV4cHJlc3Npb25zLgorCQkJKi8KKwkJZXhwcnMgPSAoTGlzdCAqKSBldmFsX2NvbnN0 X2V4cHJlc3Npb25zKE5VTEwsIChOb2RlICopIGV4cHJzKTsKKworCQkvKiBNYXkgYXMgd2VsbCBm aXggb3BmdW5jaWRzIHRvbyAqLworCQlmaXhfb3BmdW5jaWRzKChOb2RlICopIGV4cHJzKTsKKwl9 CisJbnVtZXhwcnMgPSBsaXN0X2xlbmd0aChleHBycyk7CisJbnVtYXR0cnMgPSBudW1hdHRudW1z ICsgbnVtZXhwcnM7CisKKwkvKiBSb3VuZGFib3V0IHdheSBvZiBnZXR0aW5nIGEgUmFuZ2VWYXIg b24gdGhlIHVuZGVybHlpbmcgdGFibGUgKi8KKwlyZWwgPSByZWxhdGlvbl9vcGVuKHN0eGZvcm0t PnN0eHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJLyogbm8gbmVlZCB0byBmZXRjaCByZWxv aWQsIHdlIGFscmVhZHkgaGF2ZSBpdCAqLworCVJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChtYWtl UmFuZ2VWYXIobnNwbmFtZSwKKwkJCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWwpLCAtMSksCisJCQkJICAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrLCAwLAorCQkJCSAgIFJh bmdlVmFyQ2FsbGJhY2tGb3JTdGF0cywgJmxvY2tlZF90YWJsZSk7CisKKwlyZWxhdGlvbl9jbG9z ZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlpZiAoaGFzLm1jdikKKwl7CisJCWlmICghZW5h YmxlZC5tY3YpCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coIk1DViBwYXJhbWV0ZXJz IFwiJXNcIiwgXCIlc1wiLCBcIiVzXCIsIGFuZCBcIiVzXCIgd2VyZSBhbGwgIgorCQkJCQkJCSJz cGVjaWZpZWQgZm9yIGV4dGVuZGVkIHN0YXRpc3RpY3Mgb2JqZWN0IHRoYXQgZG9lcyBub3QgZXhw ZWN0IE1DViAiLAorCQkJCQkJCWV4dGFyZ2luZm9bTU9TVF9DT01NT05fVkFMU19BUkddLmFyZ25h bWUsCisJCQkJCQkJZXh0YXJnaW5mb1tNT1NUX0NPTU1PTl9WQUxfTlVMTFNfQVJHXS5hcmduYW1l LAorCQkJCQkJCWV4dGFyZ2luZm9bTU9TVF9DT01NT05fRlJFUVNfQVJHXS5hcmduYW1lLAorCQkJ CQkJCWV4dGFyZ2luZm9bTU9TVF9DT01NT05fQkFTRV9GUkVRU19BUkddLmFyZ25hbWUpKSk7CisJ CQloYXMubWN2ID0gZmFsc2U7CisJCQlzdWNjZXNzID0gZmFsc2U7CisJCX0KKwl9CisJZWxzZQor CXsKKwkJLyogVGhlIE1DViBhcmdzIG11c3QgYWxsIGJlIE5VTEwgKi8KKwkJaWYgKCFQR19BUkdJ U05VTEwoTU9TVF9DT01NT05fVkFMU19BUkcpIHx8CisJCQkhUEdfQVJHSVNOVUxMKE1PU1RfQ09N TU9OX1ZBTF9OVUxMU19BUkcpIHx8CisJCQkhUEdfQVJHSVNOVUxMKE1PU1RfQ09NTU9OX0ZSRVFT X0FSRykgfHwKKwkJCSFQR19BUkdJU05VTEwoTU9TVF9DT01NT05fQkFTRV9GUkVRU19BUkcpKQor CQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJNQ1YgcGFyYW1ldGVycyBcIiVzXCIsIFwi JXNcIiwgXCIlc1wiLCBhbmQgXCIlc1wiIG11c3QgYmUgYWxsIHNwZWNpZmllZCBpZiBhbnkgYXJl IHNwZWNpZmllZCIsCisJCQkJCQkJZXh0YXJnaW5mb1tNT1NUX0NPTU1PTl9WQUxTX0FSR10uYXJn bmFtZSwKKwkJCQkJCQlleHRhcmdpbmZvW01PU1RfQ09NTU9OX1ZBTF9OVUxMU19BUkddLmFyZ25h bWUsCisJCQkJCQkJZXh0YXJnaW5mb1tNT1NUX0NPTU1PTl9GUkVRU19BUkddLmFyZ25hbWUsCisJ CQkJCQkJZXh0YXJnaW5mb1tNT1NUX0NPTU1PTl9CQVNFX0ZSRVFTX0FSR10uYXJnbmFtZSkpKTsK KwkJCXN1Y2Nlc3MgPSBmYWxzZTsKKwkJfQorCX0KKworCWlmIChoYXMubmRpc3RpbmN0ICYmICFl bmFibGVkLm5kaXN0aW5jdCkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJQYXJhbWV0ZXJz IFwiJXNcIiB3YXMgc3BlY2lmaWVkIGZvciBleHRlbmRlZCBzdGF0aXN0aWNzIG9iamVjdCAiCisJ CQkJCQkidGhhdCBkb2VzIG5vdCBleHBlY3QgXCIlc1wiIiwKKwkJCQkJCWV4dGFyZ2luZm9bTkRJ U1RJTkNUX0FSR10uYXJnbmFtZSwKKwkJCQkJCWV4dGFyZ2luZm9bTkRJU1RJTkNUX0FSR10uYXJn bmFtZSkpKTsKKwkJaGFzLm5kaXN0aW5jdCA9IGZhbHNlOworCQlzdWNjZXNzID0gZmFsc2U7CisJ fQorCisJaWYgKGhhcy5kZXBlbmRlbmNpZXMgJiYgIWVuYWJsZWQuZGVwZW5kZW5jaWVzKQorCXsK KwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCSBlcnJtc2coIlBhcmFtZXRlcnMgXCIlc1wiIHdhcyBzcGVjaWZpZWQg Zm9yIGV4dGVuZGVkIHN0YXRpc3RpY3Mgb2JqZWN0ICIKKwkJCQkJCSJ0aGF0IGRvZXMgbm90IGV4 cGVjdCBcIiVzXCIiLAorCQkJCQkJZXh0YXJnaW5mb1tERVBFTkRFTkNJRVNfQVJHXS5hcmduYW1l LAorCQkJCQkJZXh0YXJnaW5mb1tERVBFTkRFTkNJRVNfQVJHXS5hcmduYW1lKSkpOworCQloYXMu ZGVwZW5kZW5jaWVzID0gZmFsc2U7CisJCXN1Y2Nlc3MgPSBmYWxzZTsKKwl9CisKKwlpZiAoaGFz LmV4cHJlc3Npb25zICYmICFlbmFibGVkLmV4cHJlc3Npb25zKQorCXsKKwkJZXJlcG9ydChXQVJO SU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJ CSBlcnJtc2coIlBhcmFtZXRlcnMgXCIlc1wiIHdhcyBzcGVjaWZpZWQgZm9yIGV4dGVuZGVkIHN0 YXRpc3RpY3Mgb2JqZWN0ICIKKwkJCQkJCSJ0aGF0IGRvZXMgbm90IGV4cGVjdCBcIiVzXCIiLAor CQkJCQkJZXh0YXJnaW5mb1tERVBFTkRFTkNJRVNfQVJHXS5hcmduYW1lLAorCQkJCQkJZXh0YXJn aW5mb1tERVBFTkRFTkNJRVNfQVJHXS5hcmduYW1lKSkpOworCQloYXMuZXhwcmVzc2lvbnMgPSBm YWxzZTsKKwkJc3VjY2VzcyA9IGZhbHNlOworCX0KKworCS8qCisJICogRWl0aGVyIG9mIHRoZXNl IHN0YXRzaXN0aWMgdHlwZXMgcmVxdWlyZXMgdGhhdCB3ZSBzdXBwbHkKKwkgKiBzZW1pLWZpbGxl ZC1vdXQgVmFjQXR0clN0YXRQIGFycmF5LgorCSAqCisJICoKKwkgKiBJdCBpcyBub3QgcG9zc2li bGUgdG8gdXNlIHRoZSBleGlzdGluZyBsb29rdXBfdmFyX2F0dHJfc3RhdHMoKSBhbmQKKwkgKiBl eGFtaW5lX2F0dHJpYnV0ZSgpIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIHdpbGwgc2tpcCBhdHRy aWJ1dGVzIGZvcgorCSAqIHdoaWNoIGF0dHN0YXR0YXJnZXQgaXMgMCwgYW5kIHdlIG1heSBoYXZl IHN0YXRzIHRvIGltcG9ydCBmb3IgdGhvc2UKKwkgKiBhdHRyaWJ1dGVzLgorCSAqLworCWlmICho YXMubWN2IHx8IGhhcy5leHByZXNzaW9ucykKKwl7CisJCWF0dHR5cGlkcyA9IHBhbGxvYzAobnVt YXR0cnMgKiBzaXplb2YoT2lkKSk7CisJCWF0dHR5cG1vZHMgPSBwYWxsb2MwKG51bWF0dHJzICog c2l6ZW9mKGludDMyKSk7CisJCWF0dHR5cGNvbGxzID0gcGFsbG9jMChudW1hdHRycyAqIHNpemVv ZihPaWQpKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IG51bWF0dG51bXM7IGkrKykKKwkJewor CQkJQXR0ck51bWJlcglhdHRudW0gPSBzdHhmb3JtLT5zdHhrZXlzLnZhbHVlc1tpXTsKKworCQkJ T2lkCQkJbHRfb3ByOworCQkJT2lkCQkJZXFfb3ByOworCQkJY2hhcgkJdHlwZXR5cGU7CisKKwkJ CS8qCisJCQkgKiBmZXRjaCBhdHRyaWJ1dGUgZW50cmllcyB0aGUgc2FtZSBhcyBhcmUgZG9uZSBm b3IgYXR0cmlidXRlCisJCQkgKiBzdGF0cworCQkJICovCisJCQlzdGF0YXR0X2dldF90eXBlKHN0 eGZvcm0tPnN0eHJlbGlkLAorCQkJCQkJCSBhdHRudW0sCisJCQkJCQkJICZhdHR0eXBpZHNbaV0s CisJCQkJCQkJICZhdHR0eXBtb2RzW2ldLAorCQkJCQkJCSAmdHlwZXR5cGUsCisJCQkJCQkJICZh dHR0eXBjb2xsc1tpXSwKKwkJCQkJCQkgJmx0X29wciwKKwkJCQkJCQkgJmVxX29wcik7CisJCX0K KworCQlmb3IgKGludCBpID0gbnVtYXR0bnVtczsgaSA8IG51bWF0dHJzOyBpKyspCisJCXsKKwkJ CU5vZGUJICAgKmV4cHIgPSBsaXN0X250aChleHBycywgaSAtIG51bWF0dG51bXMpOworCisJCQlh dHR0eXBpZHNbaV0gPSBleHByVHlwZShleHByKTsKKwkJCWF0dHR5cG1vZHNbaV0gPSBleHByVHlw bW9kKGV4cHIpOworCQkJYXR0dHlwY29sbHNbaV0gPSBleHByQ29sbGF0aW9uKGV4cHIpOworCisJ CQkvKgorCQkJICogRHVwbGljYXRlIGxvZ2ljIGZyb20gZ2V0X2F0dHJfc3RhdF90eXBlCisJCQkg Ki8KKworCQkJLyoKKwkJCSAqIElmIGl0J3MgYSBtdWx0aXJhbmdlLCBzdGVwIGRvd24gdG8gdGhl IHJhbmdlIHR5cGUsIGFzIGlzIGRvbmUKKwkJCSAqIGJ5IG11bHRpcmFuZ2VfdHlwYW5hbHl6ZSgp LgorCQkJICovCisJCQlpZiAodHlwZV9pc19tdWx0aXJhbmdlKGF0dHR5cGlkc1tpXSkpCisJCQkJ YXR0dHlwaWRzW2ldID0gZ2V0X211bHRpcmFuZ2VfcmFuZ2UoYXR0dHlwaWRzW2ldKTsKKworCQkJ LyoKKwkJCSAqIFNwZWNpYWwgY2FzZTogY29sbGF0aW9uIGZvciB0c3ZlY3RvciBpcyBERUZBVUxU X0NPTExBVElPTl9PSUQuCisJCQkgKiBTZWUgY29tcHV0ZV90c3ZlY3Rvcl9zdGF0cygpLgorCQkJ ICovCisJCQlpZiAoYXR0dHlwaWRzW2ldID09IFRTVkVDVE9ST0lEKQorCQkJCWF0dHR5cGNvbGxz W2ldID0gREVGQVVMVF9DT0xMQVRJT05fT0lEOworCisJCX0KKwl9CisKKwkvKiBQcmltYXJ5IEtl eTogY2Fubm90IGJlIE5VTEwgb3IgcmVwbGFjZWQuICovCisJdmFsdWVzW0FudW1fcGdfc3RhdGlz dGljX2V4dF9kYXRhX3N0eG9pZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShzdHhmb3JtLT5vaWQp OworCXZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkaW5oZXJpdCAtIDFdID0g Qm9vbEdldERhdHVtKGluaGVyaXRlZCk7CisKKwlpZiAoaGFzLm5kaXN0aW5jdCkKKwl7CisJCURh dHVtCQkJbmRpc3RpbmN0X2RhdHVtID0gUEdfR0VUQVJHX0RBVFVNKE5ESVNUSU5DVF9BUkcpOwor CQlieXRlYQkJICAgKmRhdGEgPSBEYXR1bUdldEJ5dGVhUFAobmRpc3RpbmN0X2RhdHVtKTsKKwkJ TVZORGlzdGluY3QJICAgKm5kaXN0aW5jdCA9IHN0YXRleHRfbmRpc3RpbmN0X2Rlc2VyaWFsaXpl KGRhdGEpOworCisJCWlmIChwZ19uZGlzdGluY3RfdmFsaWRhdGVfaXRlbXMobmRpc3RpbmN0LCAm c3R4Zm9ybS0+c3R4a2V5cywgbnVtZXhwcnMsIFdBUk5JTkcpKQorCQl7CisJCQl2YWx1ZXNbQW51 bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4ZG5kaXN0aW5jdCAtIDFdID0gbmRpc3RpbmN0X2Rh dHVtOworCQkJcmVwbGFjZXNbQW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4ZG5kaXN0aW5j dCAtIDFdID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCW51bGxzW0FudW1fcGdfc3RhdGlz dGljX2V4dF9kYXRhX3N0eGRuZGlzdGluY3QgLSAxXSA9IHRydWU7CisJCQlzdWNjZXNzID0gZmFs c2U7CisJCX0KKworCQlmcmVlX3BnX25kaXN0aW5jdChuZGlzdGluY3QpOworCX0KKwllbHNlCisJ CW51bGxzW0FudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRuZGlzdGluY3QgLSAxXSA9IHRy dWU7CisKKwlpZiAoaGFzLmRlcGVuZGVuY2llcykKKwl7CisJCURhdHVtCQkJZGVwZW5kZW5jaWVz X2RhdHVtID0gUEdfR0VUQVJHX0RBVFVNKERFUEVOREVOQ0lFU19BUkcpOworCQlieXRlYQkJICAg KmRhdGEgPSBEYXR1bUdldEJ5dGVhUFAoZGVwZW5kZW5jaWVzX2RhdHVtKTsKKwkJTVZEZXBlbmRl bmNpZXMgKmRlcGVuZGVuY2llcyA9IHN0YXRleHRfZGVwZW5kZW5jaWVzX2Rlc2VyaWFsaXplKGRh dGEpOworCisJCWlmIChwZ19kZXBlbmRlbmNpZXNfdmFsaWRhdGVfZGVwcyhkZXBlbmRlbmNpZXMs ICZzdHhmb3JtLT5zdHhrZXlzLCBudW1leHBycywgV0FSTklORykpCisJCXsKKwkJCXZhbHVlc1tB bnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkZGVwZW5kZW5jaWVzIC0gMV0gPSBkZXBlbmRl bmNpZXNfZGF0dW07CisJCQlyZXBsYWNlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhk ZGVwZW5kZW5jaWVzIC0gMV0gPSB0cnVlOworCQl9CisJCWVsc2UKKwkJeworCQkJbnVsbHNbQW51 bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4ZGRlcGVuZGVuY2llcyAtIDFdID0gdHJ1ZTsKKwkJ CXN1Y2Nlc3MgPSBmYWxzZTsKKwkJfQorCisJCWZyZWVfcGdfZGVwZW5kZW5jaWVzKGRlcGVuZGVu Y2llcyk7CisJfQorCWVsc2UKKwkJbnVsbHNbQW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4 ZGRlcGVuZGVuY2llcyAtIDFdID0gdHJ1ZTsKKworCWlmIChoYXMubWN2KQorCXsKKwkJRGF0dW0J CWRhdHVtOworCQlBcnJheVR5cGUgICptY3ZfYXJyID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKE1P U1RfQ09NTU9OX1ZBTFNfQVJHKTsKKwkJQXJyYXlUeXBlICAqbnVsbHNfYXJyID0gUEdfR0VUQVJH X0FSUkFZVFlQRV9QKE1PU1RfQ09NTU9OX1ZBTF9OVUxMU19BUkcpOworCQlBcnJheVR5cGUgICpm cmVxc19hcnIgPSBQR19HRVRBUkdfQVJSQVlUWVBFX1AoTU9TVF9DT01NT05fRlJFUVNfQVJHKTsK KwkJQXJyYXlUeXBlICAqYmFzZV9mcmVxc19hcnIgPSBQR19HRVRBUkdfQVJSQVlUWVBFX1AoTU9T VF9DT01NT05fQkFTRV9GUkVRU19BUkcpOworCQlpbnQJCQluaXRlbXM7CisJCURhdHVtCSAgICpt Y3ZfZWxlbXM7CisJCWJvb2wJICAgKm1jdl9udWxsczsKKwkJaW50CQkJY2hlY2tfbnVtbWN2Owor CisJCS8qCisJCSAqIFRoZSBtY3ZfYXJyIGlzIGFuIGFycmF5IG9mIGFycmF5cyBvZiB0ZXh0LCBh bmQgd2UgdXNlIGl0IGFzIHRoZQorCQkgKiByZWZlcmVuY2UgYXJyYXkgZm9yIGNoZWNraW5nIHRo ZSBsZW5ndGhzIG9mIHRoZSBvdGhlciAzIGFycmF5cy4KKwkJICovCisJCWlmIChBUlJfTkRJTSht Y3ZfYXJyKSAhPSAyKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJQYXJhbWV0ZXJz IFwiJXNcIiBtdXN0IGJlIGEgdGV4dCBhcnJheSBvZiAyIGRpbWVuc2lvbnMuIiwKKwkJCQkJCQll eHRhcmdpbmZvW01PU1RfQ09NTU9OX1ZBTFNfQVJHXS5hcmduYW1lKSkpOworCQkJcmV0dXJuIChE YXR1bSkgMDsKKwkJfQorCisJCW5pdGVtcyA9IEFSUl9ESU1TKG1jdl9hcnIpWzBdOworCisJCS8q IGZpeGVkIGxlbmd0aCBhcnJheXMgdGhhdCBjYW5ub3QgY29udGFpbiBOVUxMcyAqLworCQlpZiAo IWNoZWNrX21jdmxpc3RfYXJyYXkobnVsbHNfYXJyLCBNT1NUX0NPTU1PTl9WQUxfTlVMTFNfQVJH LAorCQkJCQkJCQkgMiwgbml0ZW1zKSB8fAorCQkJIWNoZWNrX21jdmxpc3RfYXJyYXkoZnJlcXNf YXJyLCBNT1NUX0NPTU1PTl9GUkVRU19BUkcsCisJCQkJCQkJCSAxLCBuaXRlbXMpIHx8CisJCQkh Y2hlY2tfbWN2bGlzdF9hcnJheShiYXNlX2ZyZXFzX2FyciwgTU9TVF9DT01NT05fQkFTRV9GUkVR U19BUkcsCisJCQkJCQkJCSAxLCBuaXRlbXMpKQorCQkJcmV0dXJuIChEYXR1bSkgMDsKKworCisJ CWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4obWN2X2FyciwgVEVYVE9JRCwgJm1jdl9lbGVtcywK KwkJCQkJCQkJICAmbWN2X251bGxzLCAmY2hlY2tfbnVtbWN2KTsKKworCQlBc3NlcnQoY2hlY2tf bnVtbWN2ID09IChuaXRlbXMgKiBudW1hdHRycykpOworCisJCWRhdHVtID0gaW1wb3J0X21jdmxp c3QodHVwLCBXQVJOSU5HLCBudW1hdHRycywKKwkJCQkJCQkgICBhdHR0eXBpZHMsIGF0dHR5cG1v ZHMsIGF0dHR5cGNvbGxzLAorCQkJCQkJCSAgIG5pdGVtcywgbWN2X2VsZW1zLCBtY3ZfbnVsbHMs CisJCQkJCQkJICAgKGJvb2wgKikgQVJSX0RBVEFfUFRSKG51bGxzX2FyciksCisJCQkJCQkJICAg KGZsb2F0OCAqKSBBUlJfREFUQV9QVFIoZnJlcXNfYXJyKSwKKwkJCQkJCQkgICAoZmxvYXQ4ICop IEFSUl9EQVRBX1BUUihiYXNlX2ZyZXFzX2FycikpOworCisJCXZhbHVlc1tBbnVtX3BnX3N0YXRp c3RpY19leHRfZGF0YV9zdHhkbWN2IC0gMV0gPSBkYXR1bTsKKwkJcmVwbGFjZXNbQW51bV9wZ19z dGF0aXN0aWNfZXh0X2RhdGFfc3R4ZG1jdiAtIDFdID0gdHJ1ZTsKKwl9CisJZWxzZQorCQludWxs c1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9zdHhkbWN2IC0gMV0gPSB0cnVlOworCisJaWYg KGhhcy5leHByZXNzaW9ucykKKwl7CisJCURhdHVtCQlkYXR1bTsKKwkJUmVsYXRpb24JcGdzZDsK KworCQlwZ3NkID0gdGFibGVfb3BlbihTdGF0aXN0aWNSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVM b2NrKTsKKworCQlkYXR1bSA9IGltcG9ydF9leHByZXNzaW9ucyhwZ3NkLCBudW1leHBycywKKwkJ CQkJCQkJICAgJmF0dHR5cGlkc1tudW1hdHRudW1zXSwgJmF0dHR5cG1vZHNbbnVtYXR0bnVtc10s CisJCQkJCQkJCSAgICZhdHR0eXBjb2xsc1tudW1hdHRudW1zXSwKKwkJCQkJCQkJICAgUEdfR0VU QVJHX0FSUkFZVFlQRV9QKEVYUFJFU1NJT05TX0FSRykpOworCisJCXRhYmxlX2Nsb3NlKHBnc2Qs IFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCXZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0 YV9zdHhkZXhwciAtIDFdID0gZGF0dW07CisJCXJlcGxhY2VzW0FudW1fcGdfc3RhdGlzdGljX2V4 dF9kYXRhX3N0eGRleHByIC0gMV0gPSB0cnVlOworCX0KKwllbHNlCisJCW51bGxzW0FudW1fcGdf c3RhdGlzdGljX2V4dF9kYXRhX3N0eGRleHByIC0gMV0gPSB0cnVlOworCisJdXBzZXJ0X3BnX3N0 YXRpc3RpY19leHRfZGF0YSh2YWx1ZXMsIG51bGxzLCByZXBsYWNlcyk7CisKKwloZWFwX2ZyZWV0 dXBsZSh0dXApOworCXRhYmxlX2Nsb3NlKHBnX3N0ZXh0LCBSb3dFeGNsdXNpdmVMb2NrKTsKKwor CWlmIChhdHR0eXBpZHMgIT0gTlVMTCkKKwkJcGZyZWUoYXR0dHlwaWRzKTsKKwlpZiAoYXR0dHlw bW9kcyAhPSBOVUxMKQorCQlwZnJlZShhdHR0eXBtb2RzKTsKKwlpZiAoYXR0dHlwY29sbHMgIT0g TlVMTCkKKwkJcGZyZWUoYXR0dHlwY29sbHMpOworCXJldHVybiBzdWNjZXNzOworfQorCisvKgor ICogQ29uc2lzdGVuY3kgY2hlY2tzIHRvIGVuc3VyZSB0aGF0IG90aGVyIG1jdmxpc3QgYXJyYXlz IGFyZSBpbiBhbGlnbm1lbnQKKyAqIHdpdGggdGhlIG1jdiBhcnJheS4KKyAqLworc3RhdGljIGJv b2wKK2NoZWNrX21jdmxpc3RfYXJyYXkoQXJyYXlUeXBlICphcnIsIGludCBhcmdpbmRleCwgaW50 IHJlcXVpcmVkX25kaW1zLAorCQkJCQlpbnQgbWN2X2xlbmd0aCkKK3sKKwlpZiAoQVJSX05ESU0o YXJyKSAhPSByZXF1aXJlZF9uZGltcykKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJQYXJh bWV0ZXIgXCIlc1wiIG11c3QgYmUgYW4gYXJyYXkgb2YgJWQgZGltZW5zaW9ucy4iLAorCQkJCQkJ ZXh0YXJnaW5mb1thcmdpbmRleF0uYXJnbmFtZSwgcmVxdWlyZWRfbmRpbXMpKSk7CisJCXJldHVy biBmYWxzZTsKKwl9CisKKwlpZiAoYXJyYXlfY29udGFpbnNfbnVsbHMoYXJyKSkKKwl7CisJCWVy ZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKKwkJCQkgZXJybXNnKCJBcnJheSBcIiVzXCIgY2Fubm90IGNvbnRhaW4gTlVMTHMuIiwK KwkJCQkJCWV4dGFyZ2luZm9bYXJnaW5kZXhdLmFyZ25hbWUpKSk7CisJCXJldHVybiBmYWxzZTsK Kwl9CisKKwlpZiAoQVJSX0RJTVMoYXJyKVswXSAhPSBtY3ZfbGVuZ3RoKQorCXsKKwkJZXJlcG9y dChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJCSBlcnJtc2coIlBhcmFtZXRlcnMgXCIlc1wiIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1i ZXIgb2YgZWxlbWVudHMgYXMgXCIlc1wiIiwKKwkJCQkJCWV4dGFyZ2luZm9bYXJnaW5kZXhdLmFy Z25hbWUsCisJCQkJCQlleHRhcmdpbmZvW01PU1RfQ09NTU9OX1ZBTFNfQVJHXS5hcmduYW1lKSkp OworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBDcmVh dGUgdGhlIHN0eGRleHBycyBkYXR1bSB1c2luZyB0aGUgdXNlciBpbnB1dCBpbiBhbiBhcnJheSBv ZiBhcnJheSBvZgorICogdGV4dCwgcmVmZXJlbmNlZCBhZ2FpbnN0IHRoZSBkYXRhdHlwZXMgZm9y IHRoZSBleHByZXNzaW9ucy4KKyAqLworc3RhdGljIERhdHVtCitpbXBvcnRfZXhwcmVzc2lvbnMo UmVsYXRpb24gcGdzZCwgaW50IG51bWV4cHJzLAorCQkJCSAgIE9pZCAqYXR0dHlwaWRzLCBpbnQz MiAqYXR0dHlwbW9kcywKKwkJCQkgICBPaWQgKmF0dHR5cGNvbGxzLCBBcnJheVR5cGUgKmV4cHJz X2FycikKK3sKKwlEYXR1bQkgICAqZXhwcnNfZWxlbXM7CisJYm9vbAkgICAqZXhwcnNfbnVsbHM7 CisJaW50CQkJY2hlY2tfbnVtZXhwcnM7CisJaW50CQkJb2Zmc2V0ID0gMDsKKworCUZtZ3JJbmZv CWFycmF5X2luX2ZuOworCisJT2lkCQkJcGdzdHlwb2lkID0gZ2V0X3JlbF90eXBlX2lkKFN0YXRp c3RpY1JlbGF0aW9uSWQpOworCisJQXJyYXlCdWlsZFN0YXRlICphc3RhdGUgPSBOVUxMOworCisK KwlpZiAoQVJSX05ESU0oZXhwcnNfYXJyKSAhPSAyKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAor CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJt c2coIlBhcmFtZXRlciBcIiVzXCIgbXVzdCBiZSBhIHRleHQgYXJyYXkgb2YgMiBkaW1lbnNpb25z LiIsCisJCQkJCQlleHRhcmdpbmZvW0VYUFJFU1NJT05TX0FSR10uYXJnbmFtZSkpKTsKKwkJcmV0 dXJuIChEYXR1bSkgMDsKKwl9CisKKwlpZiAoQVJSX0RJTVMoZXhwcnNfYXJyKVswXSAhPSBudW1l eHBycykKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJQYXJhbWV0ZXIgXCIlc1wiIG11c3Qg aGF2ZSBhbiBvdXRlciBkaW1lbnNpb24gb2YgJWQgZWxlbWVudHMuIiwKKwkJCQkJCWV4dGFyZ2lu Zm9bRVhQUkVTU0lPTlNfQVJHXS5hcmduYW1lLCBudW1leHBycykpKTsKKwkJcmV0dXJuIChEYXR1 bSkgMDsKKwl9CisJaWYgKEFSUl9ESU1TKGV4cHJzX2FycilbMV0gIT0gTlVNX0FUVFJJQlVURV9T VEFUU19FTEVNUykKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJQYXJhbWV0ZXIgXCIlc1wi IG11c3QgaGF2ZSBhbiBpbm5lciBkaW1lbnNpb24gb2YgJWQgZWxlbWVudHMuIiwKKwkJCQkJCWV4 dGFyZ2luZm9bRVhQUkVTU0lPTlNfQVJHXS5hcmduYW1lLAorCQkJCQkJTlVNX0FUVFJJQlVURV9T VEFUU19FTEVNUykpKTsKKwkJcmV0dXJuIChEYXR1bSkgMDsKKwl9CisKKwlmbWdyX2luZm8oRl9B UlJBWV9JTiwgJmFycmF5X2luX2ZuKTsKKworCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4oZXhw cnNfYXJyLCBURVhUT0lELCAmZXhwcnNfZWxlbXMsCisJCQkJCQkJICAmZXhwcnNfbnVsbHMsICZj aGVja19udW1leHBycyk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bWV4cHJzOyBpKyspCisJ eworCQlPaWQJCQl0eXBpZCA9IGF0dHR5cGlkc1tpXTsKKwkJaW50MzIJCXR5cG1vZCA9IGF0dHR5 cG1vZHNbaV07CisJCU9pZAkJCXN0YWNvbGwgPSBhdHR0eXBjb2xsc1tpXTsKKwkJVHlwZUNhY2hl RW50cnkgKnR5cGNhY2hlOworCisJCU9pZAkJCWVsZW10eXBpZCA9IEludmFsaWRPaWQ7CisJCU9p ZAkJCWVsZW1fZXFfb3ByID0gSW52YWxpZE9pZDsKKworCQlib29sCQlvazsKKworCQlEYXR1bQkJ dmFsdWVzW05hdHRzX3BnX3N0YXRpc3RpY107CisJCWJvb2wJCW51bGxzW05hdHRzX3BnX3N0YXRp c3RpY107CisJCWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3N0YXRpc3RpY107CisKKwkJSGVhcFR1 cGxlCXBnc3R1cDsKKwkJRGF0dW0JCXBnc3RkYXQ7CisKKwkJLyogZmluZHMgdGhlIHJpZ2h0IG9w ZXJhdG9ycyBldmVuIGlmIGF0dHR5cGlkIGlzIGEgZG9tYWluICovCisJCXR5cGNhY2hlID0gbG9v a3VwX3R5cGVfY2FjaGUodHlwaWQsIFRZUEVDQUNIRV9MVF9PUFIgfCBUWVBFQ0FDSEVfRVFfT1BS KTsKKworCQlzdGF0YXR0X2luaXRfZW1wdHlfdHVwbGUoSW52YWxpZE9pZCwgSW52YWxpZEF0dHJO dW1iZXIsIGZhbHNlLAorCQkJCQkJCQkgdmFsdWVzLCBudWxscywgcmVwbGFjZXMpOworCisJCWlm ICghZXhwcnNfbnVsbHNbb2Zmc2V0ICsgTlVMTF9GUkFDX0VMRU1dKQorCQl7CisJCQlvayA9IHRl eHRfdG9fZmxvYXQ0KGV4cHJzX2VsZW1zW29mZnNldCArIE5VTExfRlJBQ19FTEVNXSwKKwkJCQkJ CQkJJnZhbHVlc1tBbnVtX3BnX3N0YXRpc3RpY19zdGFudWxsZnJhYyAtIDFdKTsKKworCQkJaWYg KCFvaykKKwkJCXsKKwkJCQljaGFyCSAgICpzID0gVGV4dERhdHVtR2V0Q1N0cmluZyhleHByc19l bGVtc1tvZmZzZXQgKyBOVUxMX0ZSQUNfRUxFTV0pOworCisJCQkJZXJlcG9ydChXQVJOSU5HLAor CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkg ZXJybXNnKCJFeHByZXNzaW9uICVzIGVsZW1lbnQgXCIlc1wiIGRvZXMgbm90IG1hdGNoIGV4cGVj dGVkIGlucHV0IHR5cGUuIiwKKwkJCQkJCQkJZXh0ZXhwcmFyZ2luZm9bTlVMTF9GUkFDX0VMRU1d LmFyZ25hbWUsIHMpKSk7CisJCQkJcGZyZWUocyk7CisJCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJ CX0KKwkJfQorCisJCWlmICghZXhwcnNfbnVsbHNbb2Zmc2V0ICsgQVZHX1dJRFRIX0VMRU1dKQor CQl7CisJCQlvayA9IHRleHRfdG9faW50NChleHByc19lbGVtc1tvZmZzZXQgKyBBVkdfV0lEVEhf RUxFTV0sCisJCQkJCQkJICAmdmFsdWVzW0FudW1fcGdfc3RhdGlzdGljX3N0YXdpZHRoIC0gMV0p OworCisJCQlpZiAoIW9rKQorCQkJeworCQkJCWNoYXIJICAgKnMgPSBUZXh0RGF0dW1HZXRDU3Ry aW5nKGV4cHJzX2VsZW1zW29mZnNldCArIE5VTExfRlJBQ19FTEVNXSk7CisKKwkJCQllcmVwb3J0 KFdBUk5JTkcsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQkJCSBlcnJtc2coIkV4cHJlc3Npb24gJXMgZWxlbWVudCBcIiVzXCIgZG9lcyBub3Qg bWF0Y2ggZXhwZWN0ZWQgaW5wdXQgdHlwZS4iLAorCQkJCQkJCQlleHRleHByYXJnaW5mb1tBVkdf V0lEVEhfRUxFTV0uYXJnbmFtZSwgcykpKTsKKwkJCQlwZnJlZShzKTsKKwkJCQlyZXR1cm4gKERh dHVtKSAwOworCQkJfQorCQl9CisKKwkJaWYgKCFleHByc19udWxsc1tvZmZzZXQgKyBOX0RJU1RJ TkNUX0VMRU1dKQorCQl7CisJCQlvayA9IHRleHRfdG9fZmxvYXQ0KGV4cHJzX2VsZW1zW29mZnNl dCArIE5fRElTVElOQ1RfRUxFTV0sCisJCQkJCQkJCSZ2YWx1ZXNbQW51bV9wZ19zdGF0aXN0aWNf c3RhZGlzdGluY3QgLSAxXSk7CisKKwkJCWlmICghb2spCisJCQl7CisJCQkJY2hhcgkgICAqcyA9 IFRleHREYXR1bUdldENTdHJpbmcoZXhwcnNfZWxlbXNbb2Zmc2V0ICsgTlVMTF9GUkFDX0VMRU1d KTsKKworCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygiRXhwcmVzc2lvbiAlcyBlbGVtZW50 IFwiJXNcIiBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCBpbnB1dCB0eXBlLiIsCisJCQkJCQkJCWV4 dGV4cHJhcmdpbmZvW05fRElTVElOQ1RfRUxFTV0uYXJnbmFtZSwgcykpKTsKKwkJCQlwZnJlZShz KTsKKwkJCQlyZXR1cm4gKERhdHVtKSAwOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogVGhlIFNU QUtJTkQgc3RhdGlzdGljcyBhcmUgdGhlIHNhbWUgYXMgdGhlIG9uZXMgZm91bmQgaW4gYXR0cmli dXRlCisJCSAqIHN0YXRzLiBIb3dldmVyLCB0aGVzZSBhcmUgYWxsIGRlcml2ZWQgZnJvbSB0ZXh0 IGNvbHVtbnMsIHdoZXJlYXMKKwkJICogdGhlIG9uZXMgZGVyaXZlZCBmb3IgYXR0cmlidXRlIHN0 YXRzIGFyZSBhIG1peCBvZiBkYXRhdHlwZXMuIFRoaXMKKwkJICogbGltaXRzIHRoZSBvcHBvcnR1 bml0aWVzIGZvciBjb2RlIHNoYXJpbmcgYmV0d2VlbiB0aGUgdHdvLgorCQkgKi8KKworCQkvKiBT VEFUSVNUSUNfS0lORF9NQ1YgKi8KKwkJaWYgKGV4cHJzX251bGxzW29mZnNldCArIE1PU1RfQ09N TU9OX1ZBTFNfRUxFTV0gIT0KKwkJCWV4cHJzX251bGxzW29mZnNldCArIE1PU1RfQ09NTU9OX0ZS RVFTX0VMRU1dKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJFeHByZXNzaW9uICVz IGFuZCAlcyBtdXN0IGJvdGggYmUgTk9UIE5VTEwgb3IgYm90aCBOVUxMLiIsCisJCQkJCQkJZXh0 ZXhwcmFyZ2luZm9bTU9TVF9DT01NT05fVkFMU19FTEVNXS5hcmduYW1lLAorCQkJCQkJCWV4dGV4 cHJhcmdpbmZvW01PU1RfQ09NTU9OX0ZSRVFTX0VMRU1dLmFyZ25hbWUpKSk7CisJCQlyZXR1cm4g KERhdHVtKSAwOworCQl9CisKKwkJaWYgKCFleHByc19udWxsc1tvZmZzZXQgKyBNT1NUX0NPTU1P Tl9WQUxTX0VMRU1dKQorCQl7CisJCQlEYXR1bQkJc3RhdmFsdWVzOworCQkJRGF0dW0JCXN0YW51 bWJlcnM7CisKKwkJCXN0YXZhbHVlcyA9IHRleHRfdG9fc3RhdmFsdWVzKGV4dGV4cHJhcmdpbmZv W01PU1RfQ09NTU9OX1ZBTFNfRUxFTV0uYXJnbmFtZSwKKwkJCQkJCQkJCQkgICZhcnJheV9pbl9m biwgZXhwcnNfZWxlbXNbb2Zmc2V0ICsgTU9TVF9DT01NT05fVkFMU19FTEVNXSwKKwkJCQkJCQkJ CQkgIHR5cGlkLCB0eXBtb2QsICZvayk7CisKKwkJCWlmICghb2spCisJCQkJcmV0dXJuIChEYXR1 bSkgMDsKKworCQkJc3RhbnVtYmVycyA9IHRleHRfdG9fc3RhdmFsdWVzKGV4dGV4cHJhcmdpbmZv W01PU1RfQ09NTU9OX1ZBTFNfRUxFTV0uYXJnbmFtZSwKKwkJCQkJCQkJCQkgICAmYXJyYXlfaW5f Zm4sIGV4cHJzX2VsZW1zW29mZnNldCArIE1PU1RfQ09NTU9OX0ZSRVFTX0VMRU1dLAorCQkJCQkJ CQkJCSAgIEZMT0FUNE9JRCwgLTEsICZvayk7CisKKwkJCWlmICghb2spCisJCQkJcmV0dXJuIChE YXR1bSkgMDsKKworCQkJc3RhdGF0dF9zZXRfc2xvdCh2YWx1ZXMsIG51bGxzLCByZXBsYWNlcywK KwkJCQkJCQkgU1RBVElTVElDX0tJTkRfTUNWLAorCQkJCQkJCSB0eXBjYWNoZS0+ZXFfb3ByLCBz dGFjb2xsLAorCQkJCQkJCSBzdGFudW1iZXJzLCBmYWxzZSwgc3RhdmFsdWVzLCBmYWxzZSk7CisJ CX0KKworCQkvKiBTVEFUSVNUSUNfS0lORF9ISVNUT0dSQU0gKi8KKwkJaWYgKCFleHByc19udWxs c1tvZmZzZXQgKyBISVNUT0dSQU1fQk9VTkRTX0VMRU1dKQorCQl7CisJCQlEYXR1bQkJc3RhdmFs dWVzOworCisJCQlzdGF2YWx1ZXMgPSB0ZXh0X3RvX3N0YXZhbHVlcyhleHRleHByYXJnaW5mb1tI SVNUT0dSQU1fQk9VTkRTX0VMRU1dLmFyZ25hbWUsCisJCQkJCQkJCQkJICAmYXJyYXlfaW5fZm4s IGV4cHJzX2VsZW1zW29mZnNldCArIEhJU1RPR1JBTV9CT1VORFNfRUxFTV0sCisJCQkJCQkJCQkJ ICB0eXBpZCwgdHlwbW9kLCAmb2spOworCisJCQlpZiAoIW9rKQorCQkJCXJldHVybiAoRGF0dW0p IDA7CisKKwkJCXN0YXRhdHRfc2V0X3Nsb3QodmFsdWVzLCBudWxscywgcmVwbGFjZXMsCisJCQkJ CQkJIFNUQVRJU1RJQ19LSU5EX0hJU1RPR1JBTSwKKwkJCQkJCQkgdHlwY2FjaGUtPmx0X29wciwg c3RhY29sbCwKKwkJCQkJCQkgMCwgdHJ1ZSwgc3RhdmFsdWVzLCBmYWxzZSk7CisJCX0KKworCQkv KiBTVEFUSVNUSUNfS0lORF9DT1JSRUxBVElPTiAqLworCQlpZiAoIWV4cHJzX251bGxzW29mZnNl dCArIENPUlJFTEFUSU9OX0VMRU1dKQorCQl7CisJCQlEYXR1bQkJY29ycltdID0geyhEYXR1bSkg MH07CisJCQlBcnJheVR5cGUgICphcnJ5OworCQkJRGF0dW0JCXN0YW51bWJlcnM7CisKKwkJCW9r ID0gdGV4dF90b19mbG9hdDQoZXhwcnNfZWxlbXNbb2Zmc2V0ICsgQ09SUkVMQVRJT05fRUxFTV0s ICZjb3JyWzBdKTsKKworCQkJaWYgKCFvaykKKwkJCXsKKwkJCQljaGFyCSAgICpzID0gVGV4dERh dHVtR2V0Q1N0cmluZyhleHByc19lbGVtc1tvZmZzZXQgKyBDT1JSRUxBVElPTl9FTEVNXSk7CisK KwkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2coIkV4cHJlc3Npb24gJXMgZWxlbWVudCBcIiVz XCIgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgaW5wdXQgdHlwZS4iLAorCQkJCQkJCQlleHRleHBy YXJnaW5mb1tDT1JSRUxBVElPTl9FTEVNXS5hcmduYW1lLCBzKSkpOworCQkJCXJldHVybiAoRGF0 dW0pIDA7CisJCQl9CisKKwkJCWFycnkgPSBjb25zdHJ1Y3RfYXJyYXlfYnVpbHRpbihjb3JyLCAx LCBGTE9BVDRPSUQpOworCisJCQlzdGFudW1iZXJzID0gUG9pbnRlckdldERhdHVtKGFycnkpOwor CisJCQlzdGF0YXR0X3NldF9zbG90KHZhbHVlcywgbnVsbHMsIHJlcGxhY2VzLAorCQkJCQkJCSBT VEFUSVNUSUNfS0lORF9DT1JSRUxBVElPTiwKKwkJCQkJCQkgdHlwY2FjaGUtPmx0X29wciwgc3Rh Y29sbCwKKwkJCQkJCQkgc3RhbnVtYmVycywgZmFsc2UsIDAsIHRydWUpOworCQl9CisKKwkJLyog U1RBVElTVElDX0tJTkRfTUNFTEVNICovCisJCWlmIChleHByc19udWxsc1tvZmZzZXQgKyBNT1NU X0NPTU1PTl9FTEVNU19FTEVNXSAhPQorCQkJZXhwcnNfbnVsbHNbb2Zmc2V0ICsgTU9TVF9DT01N T05fRUxFTV9GUkVRU19FTEVNXSkKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygiRXhw cmVzc2lvbiAlcyBhbmQgJXMgbXVzdCBib3RoIGJlIE5PVCBOVUxMIG9yIGJvdGggTlVMTC4iLAor CQkJCQkJCWV4dGV4cHJhcmdpbmZvW01PU1RfQ09NTU9OX0VMRU1TX0VMRU1dLmFyZ25hbWUsCisJ CQkJCQkJZXh0ZXhwcmFyZ2luZm9bTU9TVF9DT01NT05fRUxFTV9GUkVRU19FTEVNXS5hcmduYW1l KSkpOworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQorCisJCS8qCisJCSAqIFdlIG9ubHkgbmVl ZCB0byBmZXRjaCBlbGVtZW50IHR5cGUgYW5kIGVxIG9wZXJhdG9yIGlmIHdlIGhhdmUgYQorCQkg KiBzdGF0IG9mIHR5cGUgTUNFTEVNIG9yIERFQ0hJU1QuCisJCSAqLworCQlpZiAoIWV4cHJzX251 bGxzW29mZnNldCArIE1PU1RfQ09NTU9OX0VMRU1TX0VMRU1dIHx8CisJCQkhZXhwcnNfbnVsbHNb b2Zmc2V0ICsgRUxFTV9DT1VOVF9ISVNUT0dSQU1fRUxFTV0pCisJCXsKKwkJCWlmICghc3RhdGF0 dF9nZXRfZWxlbV90eXBlKHR5cGlkLCB0eXBjYWNoZS0+dHlwdHlwZSwKKwkJCQkJCQkJCSAgICZl bGVtdHlwaWQsICZlbGVtX2VxX29wcikpCisJCQl7CisJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkgKGVy cm1zZygidW5hYmxlIHRvIGRldGVybWluZSBlbGVtZW50IHR5cGUgb2YgZXhwcmVzc2lvbiIpKSkp OworCQkJCXJldHVybiAoRGF0dW0pIDA7CisJCQl9CisJCX0KKworCQlpZiAoIWV4cHJzX251bGxz W29mZnNldCArIE1PU1RfQ09NTU9OX0VMRU1TX0VMRU1dKQorCQl7CisJCQlEYXR1bQkJc3RhdmFs dWVzOworCQkJRGF0dW0JCXN0YW51bWJlcnM7CisKKwkJCXN0YXZhbHVlcyA9IHRleHRfdG9fc3Rh dmFsdWVzKGV4dGV4cHJhcmdpbmZvW01PU1RfQ09NTU9OX0VMRU1TX0VMRU1dLmFyZ25hbWUsCisJ CQkJCQkJCQkJICAmYXJyYXlfaW5fZm4sCisJCQkJCQkJCQkJICBleHByc19lbGVtc1tvZmZzZXQg KyBNT1NUX0NPTU1PTl9FTEVNU19FTEVNXSwKKwkJCQkJCQkJCQkgIGVsZW10eXBpZCwgdHlwbW9k LCAmb2spOworCisJCQlpZiAoIW9rKQorCQkJCXJldHVybiAoRGF0dW0pIDA7CisKKwkJCXN0YW51 bWJlcnMgPSB0ZXh0X3RvX3N0YXZhbHVlcyhleHRleHByYXJnaW5mb1tNT1NUX0NPTU1PTl9FTEVN X0ZSRVFTX0VMRU1dLmFyZ25hbWUsCisJCQkJCQkJCQkJICAgJmFycmF5X2luX2ZuLAorCQkJCQkJ CQkJCSAgIGV4cHJzX2VsZW1zW29mZnNldCArIE1PU1RfQ09NTU9OX0VMRU1fRlJFUVNfRUxFTV0s CisJCQkJCQkJCQkJICAgRkxPQVQ0T0lELCAtMSwgJm9rKTsKKworCQkJaWYgKCFvaykKKwkJCQly ZXR1cm4gKERhdHVtKSAwOworCisJCQlzdGF0YXR0X3NldF9zbG90KHZhbHVlcywgbnVsbHMsIHJl cGxhY2VzLAorCQkJCQkJCSBTVEFUSVNUSUNfS0lORF9NQ0VMRU0sCisJCQkJCQkJIGVsZW1fZXFf b3ByLCBzdGFjb2xsLAorCQkJCQkJCSBzdGFudW1iZXJzLCBmYWxzZSwgc3RhdmFsdWVzLCBmYWxz ZSk7CisJCX0KKworCQlpZiAoIWV4cHJzX251bGxzW29mZnNldCArIEVMRU1fQ09VTlRfSElTVE9H UkFNX0VMRU1dKQorCQl7CisJCQlEYXR1bQkJc3RhbnVtYmVyczsKKworCQkJc3RhbnVtYmVycyA9 IHRleHRfdG9fc3RhdmFsdWVzKGV4dGV4cHJhcmdpbmZvW0VMRU1fQ09VTlRfSElTVE9HUkFNX0VM RU1dLmFyZ25hbWUsCisJCQkJCQkJCQkJICAgJmFycmF5X2luX2ZuLAorCQkJCQkJCQkJCSAgIGV4 cHJzX2VsZW1zW29mZnNldCArIEVMRU1fQ09VTlRfSElTVE9HUkFNX0VMRU1dLAorCQkJCQkJCQkJ CSAgIEZMT0FUNE9JRCwgLTEsICZvayk7CisKKwkJCWlmICghb2spCisJCQkJcmV0dXJuIChEYXR1 bSkgMDsKKworCQkJc3RhdGF0dF9zZXRfc2xvdCh2YWx1ZXMsIG51bGxzLCByZXBsYWNlcywgU1RB VElTVElDX0tJTkRfREVDSElTVCwKKwkJCQkJCQkgZWxlbV9lcV9vcHIsIHN0YWNvbGwsCisJCQkJ CQkJIHN0YW51bWJlcnMsIGZhbHNlLCAwLCB0cnVlKTsKKwkJfQorCisJCS8qCisJCSAqIEN1cnJl bnRseSB0aGVyZSBhcmUgbm8gZXh0ZW5kZWQgc3RhdHMgZXhwb3J0cyBvZiB0aGUgc3RhdGlzdGlj CisJCSAqIGtpbmRzIFNUQVRJU1RJQ19LSU5EX0JPVU5EU19ISVNUT0dSQU0gb3IKKwkJICogU1RB VElTVElDX0tJTkRfUkFOR0VfTEVOR1RIX0hJU1RPR1JBTSBzbyB0aGVzZSBjYW5ub3QgYmUgaW1w b3J0ZWQuCisJCSAqIFRoZXNlIG1heSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgorCQkgKi8KKwor CQlwZ3N0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihwZ3NkKSwgdmFsdWVz LCBudWxscyk7CisJCXBnc3RkYXQgPSBoZWFwX2NvcHlfdHVwbGVfYXNfZGF0dW0ocGdzdHVwLCBS ZWxhdGlvbkdldERlc2NyKHBnc2QpKTsKKwkJYXN0YXRlID0gYWNjdW1BcnJheVJlc3VsdChhc3Rh dGUsIHBnc3RkYXQsIGZhbHNlLCBwZ3N0eXBvaWQsCisJCQkJCQkJCSAgQ3VycmVudE1lbW9yeUNv bnRleHQpOworCisJCW9mZnNldCArPSBOVU1fQVRUUklCVVRFX1NUQVRTX0VMRU1TOworCX0KKwor CXBmcmVlKGV4cHJzX2VsZW1zKTsKKwlwZnJlZShleHByc19udWxscyk7CisKKwlyZXR1cm4gbWFr ZUFycmF5UmVzdWx0KGFzdGF0ZSwgQ3VycmVudE1lbW9yeUNvbnRleHQpOworfQorCitzdGF0aWMg Ym9vbAordGV4dF90b19mbG9hdDQoRGF0dW0gaW5wdXQsIERhdHVtICpvdXRwdXQpCit7CisJRXJy b3JTYXZlQ29udGV4dCBlc2NvbnRleHQgPSB7VF9FcnJvclNhdmVDb250ZXh0fTsKKworCWNoYXIJ ICAgKnM7CisJYm9vbAkJb2s7CisKKwlzID0gVGV4dERhdHVtR2V0Q1N0cmluZyhpbnB1dCk7CisJ b2sgPSBEaXJlY3RJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoZmxvYXQ0aW4sIHMsIEludmFsaWRPaWQs IC0xLAorCQkJCQkJCQkJIChOb2RlICopICZlc2NvbnRleHQsIG91dHB1dCk7CisKKwlwZnJlZShz KTsKKwlyZXR1cm4gb2s7Cit9CisKKworc3RhdGljIGJvb2wKK3RleHRfdG9faW50NChEYXR1bSBp bnB1dCwgRGF0dW0gKm91dHB1dCkKK3sKKwlFcnJvclNhdmVDb250ZXh0IGVzY29udGV4dCA9IHtU X0Vycm9yU2F2ZUNvbnRleHR9OworCisJY2hhcgkgICAqczsKKwlib29sCQlvazsKKworCXMgPSBU ZXh0RGF0dW1HZXRDU3RyaW5nKGlucHV0KTsKKwlvayA9IERpcmVjdElucHV0RnVuY3Rpb25DYWxs U2FmZShpbnQ0aW4sIHMsIEludmFsaWRPaWQsIC0xLAorCQkJCQkJCQkJIChOb2RlICopICZlc2Nv bnRleHQsIG91dHB1dCk7CisKKwlwZnJlZShzKTsKKwlyZXR1cm4gb2s7Cit9CisKK3N0YXRpYyBi b29sCitkZWxldGVfcGdfc3RhdGlzdGljX2V4dF9kYXRhKE9pZCBzdHhvaWQsIGJvb2wgaW5oZXJp dGVkKQoreworCVJlbGF0aW9uCXNlZCA9IHRhYmxlX29wZW4oU3RhdGlzdGljRXh0RGF0YVJlbGF0 aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCUhlYXBUdXBsZQlvbGR0dXA7CisJYm9vbAkJcmVz dWx0ID0gZmFsc2U7CisKKwkvKiBJcyB0aGVyZSBhbHJlYWR5IGEgcGdfc3RhdGlzdGljIHR1cGxl IGZvciB0aGlzIGF0dHJpYnV0ZT8gKi8KKwlvbGR0dXAgPSBTZWFyY2hTeXNDYWNoZTIoU1RBVEVY VERBVEFTVFhPSUQsCisJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0oc3R4b2lkKSwKKwkJCQkJCQkg Qm9vbEdldERhdHVtKGluaGVyaXRlZCkpOworCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQob2xkdHVw KSkKKwl7CisJCUNhdGFsb2dUdXBsZURlbGV0ZShzZWQsICZvbGR0dXAtPnRfc2VsZik7CisJCVJl bGVhc2VTeXNDYWNoZShvbGR0dXApOworCQlyZXN1bHQgPSB0cnVlOworCX0KKworCXRhYmxlX2Ns b3NlKHNlZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgp OworCisJcmV0dXJuIHJlc3VsdDsKK30KKworRGF0dW0KK3BnX3Jlc3RvcmVfZXh0ZW5kZWRfc3Rh dHMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlMT0NBTF9GQ0lORk8ocG9zaXRpb25hbF9mY2luZm8s IE5VTV9FWFRFTkRFRF9TVEFUU19BUkdTKTsKKwlib29sCQlyZXN1bHQgPSB0cnVlOworCisJSW5p dEZ1bmN0aW9uQ2FsbEluZm9EYXRhKCpwb3NpdGlvbmFsX2ZjaW5mbywgTlVMTCwgTlVNX0VYVEVO REVEX1NUQVRTX0FSR1MsCisJCQkJCQkJIEludmFsaWRPaWQsIE5VTEwsIE5VTEwpOworCisJaWYg KCFzdGF0c19maWxsX2ZjaW5mb19mcm9tX2FyZ19wYWlycyhmY2luZm8sIHBvc2l0aW9uYWxfZmNp bmZvLCBleHRhcmdpbmZvKSkKKwkJcmVzdWx0ID0gZmFsc2U7CisKKwlpZiAoIWV4dGVuZGVkX3N0 YXRpc3RpY3NfdXBkYXRlKHBvc2l0aW9uYWxfZmNpbmZvKSkKKwkJcmVzdWx0ID0gZmFsc2U7CisK KwlQR19SRVRVUk5fQk9PTChyZXN1bHQpOworfQorCisvKgorICogRGVsZXRlIHN0YXRpc3RpY3Mg Zm9yIHRoZSBnaXZlbiBzdGF0aXN0aWNzIG9iamVjdC4KKyAqLworRGF0dW0KK3BnX2NsZWFyX2V4 dGVuZGVkX3N0YXRzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJY2hhcgkgICAqbnNwbmFtZTsKKwlP aWQJCQluc3BvaWQ7CisJY2hhcgkgICAqc3R4bmFtZTsKKwlib29sCQlpbmhlcml0ZWQ7CisJUmVs YXRpb24JcGdfc3RleHQ7CisJSGVhcFR1cGxlCXR1cDsKKwlSZWxhdGlvbglyZWw7CisJT2lkCQkJ bG9ja2VkX3RhYmxlID0gSW52YWxpZE9pZDsKKworCUZvcm1fcGdfc3RhdGlzdGljX2V4dCBzdHhm b3JtOworCisJc3RhdHNfY2hlY2tfcmVxdWlyZWRfYXJnKGZjaW5mbywgZXh0YXJnaW5mbywgU1RB VFNDSEVNQV9BUkcpOworCW5zcG5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKFBHX0dFVEFSR19E QVRVTShTVEFUU0NIRU1BX0FSRykpOworCXN0YXRzX2NoZWNrX3JlcXVpcmVkX2FyZyhmY2luZm8s IGV4dGFyZ2luZm8sIFNUQVROQU1FX0FSRyk7CisJc3R4bmFtZSA9IFRleHREYXR1bUdldENTdHJp bmcoUEdfR0VUQVJHX0RBVFVNKFNUQVROQU1FX0FSRykpOworCXN0YXRzX2NoZWNrX3JlcXVpcmVk X2FyZyhmY2luZm8sIGV4dGFyZ2luZm8sIElOSEVSSVRFRF9BUkcpOworCWluaGVyaXRlZCA9IFBH X0dFVEFSR19OQU1FKElOSEVSSVRFRF9BUkcpOworCisJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygp KQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInJlY292ZXJ5IGlzIGluIHBy b2dyZXNzIiksCisJCQkJIGVycmhpbnQoIlN0YXRpc3RpY3MgY2Fubm90IGJlIG1vZGlmaWVkIGR1 cmluZyByZWNvdmVyeS4iKSkpOworCQlQR19SRVRVUk5fVk9JRCgpOworCX0KKworCW5zcG9pZCA9 IGdldF9uYW1lc3BhY2Vfb2lkKG5zcG5hbWUsIHRydWUpOworCWlmIChuc3BvaWQgPT0gSW52YWxp ZE9pZCkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coIk5hbWVzcGFjZSBcIiVzXCIgbm90IGZvdW5kLiIs IHN0eG5hbWUpKSk7CisJCVBHX1JFVFVSTl9WT0lEKCk7CisJfQorCisJcGdfc3RleHQgPSB0YWJs ZV9vcGVuKFN0YXRpc3RpY0V4dFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXR1cCA9 IGdldF9wZ19zdGF0aXN0aWNfZXh0KHBnX3N0ZXh0LCBuc3BvaWQsIHN0eG5hbWUpOworCisJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJeworCQl0YWJsZV9jbG9zZShwZ19zdGV4dCwgUm93 RXhjbHVzaXZlTG9jayk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNnKCJFeHRlbmRlZCBTdGF0aXN0aWNzIE9iamVj dCBcIiVzXCIuXCIlc1wiIG5vdCBmb3VuZC4iLAorCQkJCQkJbnNwbmFtZSwgc3R4bmFtZSkpKTsK KwkJUEdfUkVUVVJOX1ZPSUQoKTsKKwl9CisKKwlzdHhmb3JtID0gKEZvcm1fcGdfc3RhdGlzdGlj X2V4dCkgR0VUU1RSVUNUKHR1cCk7CisKKwkvKiBSb3VuZGFib3V0IHdheSBvZiBnZXR0aW5nIGEg UmFuZ2VWYXIgb24gdGhlIHVuZGVybHlpbmcgdGFibGUgKi8KKwlyZWwgPSByZWxhdGlvbl9vcGVu KHN0eGZvcm0tPnN0eHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJLyogbm8gbmVlZCB0byBm ZXRjaCByZWxvaWQsIHdlIGFscmVhZHkgaGF2ZSBpdCAqLworCVJhbmdlVmFyR2V0UmVsaWRFeHRl bmRlZChtYWtlUmFuZ2VWYXIobnNwbmFtZSwKKwkJCQkJCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpLCAtMSksCisJCQkJICAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrLCAwLAor CQkJCSAgIFJhbmdlVmFyQ2FsbGJhY2tGb3JTdGF0cywgJmxvY2tlZF90YWJsZSk7CisKKwlyZWxh dGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlkZWxldGVfcGdfc3RhdGlzdGlj X2V4dF9kYXRhKHN0eGZvcm0tPm9pZCwgaW5oZXJpdGVkKTsKKwloZWFwX2ZyZWV0dXBsZSh0dXAp OworCXRhYmxlX2Nsb3NlKHBnX3N0ZXh0LCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCVBHX1JFVFVS Tl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jIGIv c3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYwppbmRleCBmNTlmYjgyMTU0My4uYTkxNzA3OWNl YjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2LmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RhdGlzdGljcy9tY3YuYwpAQCAtMjE3MywzICsyMTczLDE0NyBAQCBtY3ZfY2xhdXNl X3NlbGVjdGl2aXR5X29yKFBsYW5uZXJJbmZvICpyb290LCBTdGF0aXN0aWNFeHRJbmZvICpzdGF0 LAogCiAJcmV0dXJuIHM7CiB9CisKKy8qCisgICogVGhlIE1DViBpcyBhbiBhcnJheSBvZiByZWNv cmRzLCBidXQgdGhpcyBpcyBleHBlY3RlZCBhcyA0IHNlcGFyYXRlIGFycmF5cy4KKyAgKiBJdCBp cyBub3QgcG9zc2libGUgdG8gaGF2ZSBhIGdlbmVyaWMgaW5wdXQgZnVuY3Rpb24gZm9yIHBnX21j dl9saXN0CisgICogYmVjYXVzZSB0aGUgbW9zdF9jb21tb25fdmFsdWVzIGlzIGEgY29tcG9zaXRl IHR5cGUgd2l0aCBlbGVtZW50IHR5cGVzCisgICogZGVmaW5lZCBieSB0aGUgc3BlY2lmaWMgc3Rh dGlzdGljcyBvYmplY3QuCisgICovCitEYXR1bQoraW1wb3J0X21jdmxpc3QoSGVhcFR1cGxlIHR1 cCwgaW50IGVsZXZlbCwgaW50IG51bWF0dHJzLCBPaWQgKmF0dHR5cGlkcywKKwkJCSAgIGludDMy ICphdHR0eXBtb2RzLCBPaWQgKmF0dHR5cGNvbGxzLCBpbnQgbml0ZW1zLAorCQkJICAgRGF0dW0g Km1jdl9lbGVtcywgYm9vbCAqbWN2X251bGxzLAorCQkJICAgYm9vbCAqbWN2X2VsZW1fbnVsbHMs IGZsb2F0OCAqZnJlcXMsIGZsb2F0OCAqYmFzZV9mcmVxcykKK3sKKwlNQ1ZMaXN0ICAgICptY3Zs aXN0OworCWJ5dGVhCSAgICpieXRlczsKKworCUhlYXBUdXBsZSAgKnZhdHVwbGVzOworCVZhY0F0 dHJTdGF0cyAqKnZhc3RhdHM7CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBNQ1YgbGlzdCBzdHJ1 Y3R1cmUsIHNldCB0aGUgZ2xvYmFsIHBhcmFtZXRlcnMuCisJICovCisJbWN2bGlzdCA9IChNQ1ZM aXN0ICopIHBhbGxvYzAob2Zmc2V0b2YoTUNWTGlzdCwgaXRlbXMpICsKKwkJCQkJCQkJICAoc2l6 ZW9mKE1DVkl0ZW0pICogbml0ZW1zKSk7CisKKwltY3ZsaXN0LT5tYWdpYyA9IFNUQVRTX01DVl9N QUdJQzsKKwltY3ZsaXN0LT50eXBlID0gU1RBVFNfTUNWX1RZUEVfQkFTSUM7CisJbWN2bGlzdC0+ bmRpbWVuc2lvbnMgPSBudW1hdHRyczsKKwltY3ZsaXN0LT5uaXRlbXMgPSBuaXRlbXM7CisKKwkv KiBTZXQgdGhlIHZhbHVlcyBmb3IgdGhlIDEtRCBhcnJheXMgYW5kIGFsbG9jYXRlIHNwYWNlIGZv ciB0aGUgMi1EIGFycmF5cyAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbml0ZW1zOyBpKyspCisJ eworCQlNQ1ZJdGVtICAgICppdGVtID0gJm1jdmxpc3QtPml0ZW1zW2ldOworCisJCWl0ZW0tPmZy ZXF1ZW5jeSA9IGZyZXFzW2ldOworCQlpdGVtLT5iYXNlX2ZyZXF1ZW5jeSA9IGJhc2VfZnJlcXNb aV07CisJCWl0ZW0tPnZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MwKHNpemVvZihEYXR1bSkgKiBu dW1hdHRycyk7CisJCWl0ZW0tPmlzbnVsbCA9IChib29sICopIHBhbGxvYzAoc2l6ZW9mKGJvb2wp ICogbnVtYXR0cnMpOworCX0KKworCS8qIFdhbGsgdGhyb3VnaCBlYWNoIGRpbWVuc2lvbiAqLwor CWZvciAoaW50IGogPSAwOyBqIDwgbnVtYXR0cnM7IGorKykKKwl7CisJCUZtZ3JJbmZvCWZpbmZv OworCQlPaWQJCQlpb3BhcmFtOworCQlPaWQJCQlpbmZ1bmM7CisJCWludAkJCWluZGV4ID0gajsK KworCQlnZXRUeXBlSW5wdXRJbmZvKGF0dHR5cGlkc1tqXSwgJmluZnVuYywgJmlvcGFyYW0pOwor CQlmbWdyX2luZm8oaW5mdW5jLCAmZmluZm8pOworCisJCS8qIHN0b3JlIGluZm8gYWJvdXQgZGF0 YSB0eXBlIE9JRHMgKi8KKwkJbWN2bGlzdC0+dHlwZXNbal0gPSBhdHR0eXBpZHNbal07CisKKwkJ Zm9yIChpbnQgaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKKwkJeworCQkJTUNWSXRlbSAgICAqaXRl bSA9ICZtY3ZsaXN0LT5pdGVtc1tpXTsKKworCQkJLyogVGhlc2Ugc2hvdWxkIGJlIGluIGFncmVl bWVudCwgYnV0IGp1c3QgdG8gYmUgc2FmZSBjaGVjayBib3RoICovCisJCQlpZiAobWN2X2VsZW1f bnVsbHNbaW5kZXhdIHx8IG1jdl9udWxsc1tpbmRleF0pCisJCQl7CisJCQkJaXRlbS0+dmFsdWVz W2pdID0gKERhdHVtKSAwOworCQkJCWl0ZW0tPmlzbnVsbFtqXSA9IHRydWU7CisJCQl9CisJCQll bHNlCisJCQl7CisJCQkJY2hhcgkgICAqcyA9IFRleHREYXR1bUdldENTdHJpbmcobWN2X2VsZW1z W2luZGV4XSk7CisJCQkJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRleHQgPSB7VF9FcnJvclNhdmVD b250ZXh0fTsKKworCQkJCWlmICghSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZmaW5mbywgcywgaW9w YXJhbSwgYXR0dHlwbW9kc1tqXSwKKwkJCQkJCQkJCQkgICAoTm9kZSAqKSAmZXNjb250ZXh0LCAm aXRlbS0+dmFsdWVzW2pdKSkKKwkJCQl7CisJCQkJCWVyZXBvcnQoZWxldmVsLAorCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJCSBlcnJtc2co Ik1DViBlbGVtZW1lbnQgXCIlc1wiIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIGlucHV0IHR5cGUu IiwgcykpKTsKKwkJCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJCQl9CisKKwkJCQlwZnJlZShzKTsK KwkJCX0KKworCQkJaW5kZXggKz0gbnVtYXR0cnM7CisJCX0KKwl9CisKKwkvKgorCSAqIFRoZSBm dW5jdGlvbiBzdGF0ZXh0X21jdl9zZXJpYWxpemUoKSByZXF1aXJlcyBhbiBhcnJheSBvZiBwb2lu dGVycyB0bworCSAqIFZhY0F0dHJTdGF0cyByZWNvcmRzLCBidXQgb25seSBhIGZldyBmaWVsZHMg d2l0aGluIHRob3NlIHJlY29yZHMgaGF2ZQorCSAqIHRvIGJlIGZpbGxlZCBvdXQuCisJICovCisJ dmFzdGF0cyA9IChWYWNBdHRyU3RhdHMgKiopIHBhbGxvYzAobnVtYXR0cnMgKiBzaXplb2YoVmFj QXR0clN0YXRzKSk7CisJdmF0dXBsZXMgPSAoSGVhcFR1cGxlICopIHBhbGxvYzAobnVtYXR0cnMg KiBzaXplb2YoSGVhcFR1cGxlKSk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bWF0dHJzOyBp KyspCisJeworCQlPaWQJCQl0eXBpZCA9IGF0dHR5cGlkc1tpXTsKKwkJSGVhcFR1cGxlCXR5cHR1 cGxlOworCisJCXR5cHR1cGxlID0gU2VhcmNoU3lzQ2FjaGVDb3B5MShUWVBFT0lELCBPYmplY3RJ ZEdldERhdHVtKHR5cGlkKSk7CisKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR5cHR1cGxlKSkK KwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0eXBlICV1IiwgdHlwaWQp OworCisJCXZhdHVwbGVzW2ldID0gdHlwdHVwbGU7CisKKwkJdmFzdGF0c1tpXSA9IHBhbGxvYzAo c2l6ZW9mKFZhY0F0dHJTdGF0cykpOworCisJCXZhc3RhdHNbaV0tPmF0dHJ0eXBlID0gKEZvcm1f cGdfdHlwZSkgR0VUU1RSVUNUKHR5cHR1cGxlKTsKKwkJdmFzdGF0c1tpXS0+YXR0cnR5cGlkID0g dHlwaWQ7CisJCXZhc3RhdHNbaV0tPmF0dHJjb2xsaWQgPSBhdHR0eXBjb2xsc1tpXTsKKwl9CisK KwlieXRlcyA9IHN0YXRleHRfbWN2X3NlcmlhbGl6ZShtY3ZsaXN0LCB2YXN0YXRzKTsKKworCWZv ciAoaW50IGkgPSAwOyBpIDwgbnVtYXR0cnM7IGkrKykKKwl7CisJCXBmcmVlKHZhdHVwbGVzW2ld KTsKKwkJcGZyZWUodmFzdGF0c1tpXSk7CisJfQorCXBmcmVlKCh2b2lkICopIHZhdHVwbGVzKTsK KwlwZnJlZSgodm9pZCAqKSB2YXN0YXRzKTsKKworCWlmIChieXRlcyA9PSBOVUxMKQorCXsKKwkJ ZXJlcG9ydChlbGV2ZWwsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCisJCQkJIGVycm1zZygiVW5hYmxlIHRvIGltcG9ydCBtY3YgbGlzdCIpKSk7CisJCXJl dHVybiAoRGF0dW0pIDA7CisJfQorCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykK Kwl7CisJCU1DVkl0ZW0gICAgKml0ZW0gPSAmbWN2bGlzdC0+aXRlbXNbaV07CisKKwkJcGZyZWUo aXRlbS0+dmFsdWVzKTsKKwkJcGZyZWUoaXRlbS0+aXNudWxsKTsKKwl9CisJcGZyZWUobWN2bGlz dCk7CisJcGZyZWUobWN2X2VsZW1zKTsKKwlwZnJlZShtY3ZfbnVsbHMpOworCisJcmV0dXJuIFBv aW50ZXJHZXREYXR1bShieXRlcyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0 aWNzL212ZGlzdGluY3QuYyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbXZkaXN0aW5jdC5jCmlu ZGV4IGZlNDUyZjUzYWU0Li44MzliY2M5YWY5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9tdmRpc3RpbmN0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tdmRpc3Rp bmN0LmMKQEAgLTU5OSw2ICs1OTksNjggQEAgZ2VuZXJhdGVfY29tYmluYXRpb25zX3JlY3Vyc2Uo Q29tYmluYXRpb25HZW5lcmF0b3IgKnN0YXRlLAogCX0KIH0KIAorLyoKKyAqIEZyZWUgYWxsb2Nh dGlvbnMgb2YgYW4gTVZORGlzdGluY3QKKyAqLwordm9pZAorZnJlZV9wZ19uZGlzdGluY3QoTVZO RGlzdGluY3QgKm5kaXN0aW5jdCkKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IG5kaXN0aW5jdC0+ bml0ZW1zOyBpKyspCisJCXBmcmVlKG5kaXN0aW5jdC0+aXRlbXNbaV0uYXR0cmlidXRlcyk7CisK KwlwZnJlZShuZGlzdGluY3QpOworfQorCisvKgorICogVmFsaWRhdGUgYW4gTVZORGlzdGluY3Qg YWdhaW5zdCB0aGUgZXh0ZW5kZWQgc3RhdGlzdGljcyBvYmplY3QgZGVmaW5pdGlvbi4KKyAqCisg KiBFdmVyeSBNVk5EaXN0aW5jdEl0ZW0gbXVzdCBiZSBjaGVja2VkIHRvIGVuc3VyZSB0aGF0IHRo ZSBhdHRudW1zIGluIHRoZQorICogYXR0cmlidXRlcyBsaXN0IGNvcnJlc3BvbmQgdG8gYXR0bnVt cy9leHByZXNzaW9ucyBkZWZpbmVkIGJ5IHRoZQorICogZXh0ZW5kZWQgc3RhdGlzdGljcyBvYmpl Y3QuCisgKgorICogUG9zaXRpdmUgYXR0bnVtcyBhcmUgYXR0cmlidXRlcyB3aGljaCBtdXN0IGJl IGZvdW5kIGluIHRoZSBzdHhrZXlzLAorICogd2hpbGUgbmVnYXRpdmUgYXR0bnVtcyBjb3JyZXNw b25kIHRvIGFuIGV4cHIgbnVtYmVyLCBzbyB0aGUgYXR0bnVtCisgKiBjYW4ndCBiZSBiZWxvdyAo MCAtIG51bWV4cHJzKS4KKyAqLworYm9vbAorcGdfbmRpc3RpbmN0X3ZhbGlkYXRlX2l0ZW1zKE1W TkRpc3RpbmN0ICpuZGlzdGluY3QsIGludDJ2ZWN0b3IgKnN0eGtleXMsIGludCBudW1leHBycywg aW50IGVsZXZlbCkKK3sKKwlpbnQJCWF0dG51bV9leHByX2xvd2JvdW5kID0gMCAtIG51bWV4cHJz OworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuZGlzdGluY3QtPm5pdGVtczsgaSsrKQorCXsKKwkJ TVZORGlzdGluY3RJdGVtIGl0ZW0gPSBuZGlzdGluY3QtPml0ZW1zW2ldOworCisJCWZvciAoaW50 IGogPSAwOyBqIDwgaXRlbS5uYXR0cmlidXRlczsgaisrKQorCQl7CisJCQlBdHRyTnVtYmVyCWF0 dG51bSA9IGl0ZW0uYXR0cmlidXRlc1tqXTsKKwkJCWJvb2wJCW9rID0gZmFsc2U7CisKKwkJCWlm IChhdHRudW0gPiAwKQorCQkJeworCQkJCWZvciAoaW50IGsgPSAwOyBrIDwgc3R4a2V5cy0+ZGlt MTsgaysrKQorCQkJCQlpZiAoYXR0bnVtID09IHN0eGtleXMtPnZhbHVlc1trXSkKKwkJCQkJewor CQkJCQkJb2sgPSB0cnVlOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCX0KKwkJCWVsc2UgaWYg KChhdHRudW0gPCAwKSAmJiAoYXR0bnVtID49IGF0dG51bV9leHByX2xvd2JvdW5kKSkKKwkJCQlv ayA9IHRydWU7CisKKwkJCWlmICghb2spCisJCQl7CisJCQkJZXJlcG9ydChlbGV2ZWwsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCQll cnJtc2coInBnX25kaXN0aW5jdDogaW52YWxpZCBhdHRudW0gZm9yIHRoaXMgc3RhdGlzdGljcyBv YmplY3Q6ICVkIiwgYXR0bnVtKSkpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJfQorCX0K KwlyZXR1cm4gdHJ1ZTsKK30KKworCiAvKgogICogZ2VuZXJhdGVfY29tYmluYXRpb25zCiAgKgkJ Z2VuZXJhdGUgYWxsIGstY29tYmluYXRpb25zIG9mIE4gZWxlbWVudHMKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfaW1wb3J0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3RhdHNfaW1wb3J0Lm91dAppbmRleCA5OGNlN2RjMjg0MS4uOTcwZTliZDA5 ODMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfaW1wb3J0Lm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2ltcG9ydC5vdXQKQEAgLTEw ODQsMTEgKzEwODQsMTUgQEAgU0VMRUNUIDMsICd0cmUnLCAoMywgMy4zLCAnVFJFJywgJzIwMDMt MDMtMDMnLCBOVUxMKTo6c3RhdHNfaW1wb3J0LmNvbXBsZXhfdHlwZSwKIFVOSU9OIEFMTAogU0VM RUNUIDQsICdmb3VyJywgTlVMTCwgaW50NHJhbmdlKDAsMTAwKSwgTlVMTDsKIENSRUFURSBJTkRF WCBpc19vZGQgT04gc3RhdHNfaW1wb3J0LnRlc3QoKChjb21wKS5hICUgMiA9IDEpKTsKK0NSRUFU RSBTVEFUSVNUSUNTIHN0YXRzX2ltcG9ydC50ZXN0X3N0YXQgT04gbmFtZSwgY29tcCwgbG93ZXIo YXJhbmdlKSwgYXJyYXlfbGVuZ3RoKHRhZ3MsMSkKK0ZST00gc3RhdHNfaW1wb3J0LnRlc3Q7CiAt LSBHZW5lcmF0ZSBzdGF0aXN0aWNzIG9uIHRhYmxlIHdpdGggZGF0YQogQU5BTFlaRSBzdGF0c19p bXBvcnQudGVzdDsKIENSRUFURSBUQUJMRSBzdGF0c19pbXBvcnQudGVzdF9jbG9uZSAoIExJS0Ug c3RhdHNfaW1wb3J0LnRlc3QgKQogICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNl KTsKIENSRUFURSBJTkRFWCBpc19vZGRfY2xvbmUgT04gc3RhdHNfaW1wb3J0LnRlc3RfY2xvbmUo KChjb21wKS5hICUgMiA9IDEpKTsKK0NSRUFURSBTVEFUSVNUSUNTIHN0YXRzX2ltcG9ydC50ZXN0 X3N0YXRfY2xvbmUgT04gbmFtZSwgY29tcCwgbG93ZXIoYXJhbmdlKSwgYXJyYXlfbGVuZ3RoKHRh Z3MsMSkKK0ZST00gc3RhdHNfaW1wb3J0LnRlc3RfY2xvbmU7CiAtLQogLS0gQ29weSBzdGF0cyBm cm9tIHRlc3QgdG8gdGVzdF9jbG9uZSwgYW5kIGlzX29kZCB0byBpc19vZGRfY2xvbmUKIC0tCkBA IC0xMzQyLDYgKzEzNDYsMTEyNSBAQCBBTkQgYXR0bmFtZSA9ICdpJzsKICgxIHJvdykKIAogRFJP UCBUQUJMRSBzdGF0c190ZW1wOworLS0gc2V0IG5fZGlzdGluY3QgdXNpbmcgYXQgYXR0bnVtICgx KSB0aGF0IGlzIG5vdCBpbiB0aGUgc3RhdGlzdGljcyBvYmplY3QKK1NFTEVDVAorICAgIHBnX2Nh dGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2No ZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAgICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rl c3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhlcml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ25f ZGlzdGluY3QnLCAnW3siYXR0cmlidXRlcyIgOiBbMywtMV0sICJuZGlzdGluY3QiIDogNH0sCisg ICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzMsLTJdLCAibmRpc3RpbmN0 IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFstMSwtMl0s ICJuZGlzdGluY3QiIDogM30sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMi IDogWzIsMywtMV0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7 ImF0dHJpYnV0ZXMiIDogWzIsMywtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAg ICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsLTEsLTJdLCAibmRpc3RpbmN0IiA6IDR9LAor ICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFszLC0xLC0yXSwgIm5kaXN0 aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwz LC0xLC0yLDFdLCAibmRpc3RpbmN0IiA6IDR9XSc6OnBnX25kaXN0aW5jdAorICAgICAgKTsKK1dB Uk5JTkc6ICBwZ19uZGlzdGluY3Q6IGludmFsaWQgYXR0bnVtIGZvciB0aGlzIHN0YXRpc3RpY3Mg b2JqZWN0OiAxCisgcGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworLS0gc2V0IG5fZGlzdGluY3QgdXNpbmcgYXQgYXR0 bnVtIHRoYXQgaXMgMAorU0VMRUNUCisgICAgcGdfY2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVk X3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcs CisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAg J2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAnbl9kaXN0aW5jdCcsICdbeyJhdHRyaWJ1dGVz IiA6IFszLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsi YXR0cmlidXRlcyIgOiBbMywtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAg ICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWy0xLC0yXSwgIm5kaXN0aW5jdCIgOiAzfSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0xXSwgIm5kaXN0aW5jdCIg OiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0yXSwg Im5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIg OiBbMiwtMSwtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7 ImF0dHJpYnV0ZXMiIDogWzIsMywtMSwtMiwwXSwgIm5kaXN0aW5jdCIgOiA0fV0nOjpwZ19uZGlz dGluY3QKKyAgICAgICk7CitXQVJOSU5HOiAgcGdfbmRpc3RpbmN0OiBpbnZhbGlkIGF0dG51bSBm b3IgdGhpcyBzdGF0aXN0aWNzIG9iamVjdDogMAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIHNldCBuX2Rp c3RpbmN0IHVzaW5nIGF0IGF0dG51bSB0aGF0IGlzIG91dHNpZGUgdGhlIGV4cHJlc3Npb24gYm91 bmRzKGJlbG93IC0yKQorU0VMRUNUCisgICAgcGdfY2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVk X3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcs CisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAg J2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAnbl9kaXN0aW5jdCcsICdbeyJhdHRyaWJ1dGVz IiA6IFszLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsi YXR0cmlidXRlcyIgOiBbMywtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAg ICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWy0xLC0yXSwgIm5kaXN0aW5jdCIgOiAzfSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbLTQsMywtMV0sICJuZGlzdGluY3Qi IDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWy00LDMsLTJd LCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVz IiA6IFstNCwtMSwtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAg ICB7ImF0dHJpYnV0ZXMiIDogWzMsLTEsLTIsLTRdLCAibmRpc3RpbmN0IiA6IDR9XSc6OnBnX25k aXN0aW5jdAorICAgICAgKTsKK1dBUk5JTkc6ICBwZ19uZGlzdGluY3Q6IGludmFsaWQgYXR0bnVt IGZvciB0aGlzIHN0YXRpc3RpY3Mgb2JqZWN0OiAtNAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3Rh dHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIG9rCitT RUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAg ICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAgJ3N0YXRp c3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZmFs c2UsCisgICAgICAgICduX2Rpc3RpbmN0JywgJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJuZGlz dGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIs LTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1 dGVzIiA6IFszLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAg IHsiYXR0cmlidXRlcyIgOiBbMywtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAg ICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWy0xLC0yXSwgIm5kaXN0aW5jdCIgOiAzfSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0xXSwgIm5kaXN0aW5j dCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0y XSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRl cyIgOiBbMiwtMSwtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAg ICB7ImF0dHJpYnV0ZXMiIDogWzIsMywtMSwtMl0sICJuZGlzdGluY3QiIDogNH1dJzo6cGdfbmRp c3RpbmN0CisgICAgICApOworIHBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVAorICAgIGpzb25iX3ByZXR0 eShlLm5fZGlzdGluY3Q6OnRleHQ6Ompzb25iKSBBUyBuX2Rpc3RpbmN0LAorICAgIGUuZGVwZW5k ZW5jaWVzLAorICAgIGUubW9zdF9jb21tb25fdmFscywgZS5tb3N0X2NvbW1vbl92YWxfbnVsbHMs CisgICAgZS5tb3N0X2NvbW1vbl9mcmVxcywgZS5tb3N0X2NvbW1vbl9iYXNlX2ZyZXFzCitGUk9N IHBnX3N0YXRzX2V4dCBBUyBlCitXSEVSRSBlLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0 c19pbXBvcnQnCitBTkQgZS5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJworQU5E IGUuaW5oZXJpdGVkID0gZmFsc2UKK1xneAorLVsgUkVDT1JEIDEgXS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCituX2Rpc3RpbmN0ICAgICAgICAgICAgIHwgWyAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogNCwr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsrCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMiwgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgMyAgICAgICAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIH0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg IHsgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAi bmRpc3RpbmN0IjogNCwrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmli dXRlcyI6IFsrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMiwgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTEgICAgICAgICArCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogNCwrCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAiYXR0cmlidXRlcyI6IFsrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgMywgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg LTEgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogNCwrCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsrCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgMywgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgLTIgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICBdICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0Ijog MywrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsrCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTEsICAgICAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTIgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgIHsgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAibmRpc3RpbmN0IjogNCwrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0 cmlidXRlcyI6IFsrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMiwgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMywgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTEgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAibmRpc3RpbmN0IjogNCwrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAiYXR0cmlidXRlcyI6IFsrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgMiwgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMywg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTIgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICArCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogNCwrCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsrCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgMiwgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgLTEsICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg LTIgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogNCwrCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsrCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgMiwgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgMywgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgLTEsICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgLTIgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0gICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgXQorZGVwZW5kZW5jaWVzICAgICAgICAgICB8 IAorbW9zdF9jb21tb25fdmFscyAgICAgICB8IAorbW9zdF9jb21tb25fdmFsX251bGxzICB8IAor bW9zdF9jb21tb25fZnJlcXMgICAgICB8IAorbW9zdF9jb21tb25fYmFzZV9mcmVxcyB8IAorCist LSBzZXQgZGVwZW5kZW5jaWVzIHVzaW5nIGF0IGF0dG51bSAoMSkgdGhhdCBpcyBub3QgaW4gdGhl IHN0YXRpc3RpY3Mgb2JqZWN0CitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0 ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1w b3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAg ICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAgICdkZXBlbmRlbmNpZXMnLCAnW3siYXR0 cmlidXRlcyI6IFsyXSwgImRlcGVuZGVuY3kiOiAxLCAiZGVncmVlIjogMS4wMDAwMDB9XSc6OnBn X2RlcGVuZGVuY2llcworICAgICAgKTsKK1dBUk5JTkc6ICBwZ19kZXBlbmRlbmNpZXM6IGludmFs aWQgYXR0bnVtIGZvciB0aGlzIHN0YXRpc3RpY3Mgb2JqZWN0OiAxCisgcGdfcmVzdG9yZV9leHRl bmRlZF9zdGF0cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKwor LS0gc2V0IGRlcGVuZGVuY2llcyB1c2luZyBhdCBhdHRudW0gdGhhdCBpcyAwCitTRUxFQ1QKKyAg ICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0 aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFt ZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAg ICAgICdkZXBlbmRlbmNpZXMnLCAnW3siYXR0cmlidXRlcyI6IFswXSwgImRlcGVuZGVuY3kiOiAt MSwgImRlZ3JlZSI6IDEuMDAwMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXMKKyAgICAgICk7CitXQVJO SU5HOiAgcGdfZGVwZW5kZW5jaWVzOiBpbnZhbGlkIGF0dG51bSBmb3IgdGhpcyBzdGF0aXN0aWNz IG9iamVjdDogMAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIHNldCBkZXBlbmRlbmNpZXMgdXNpbmcgYXQg YXR0bnVtIHRoYXQgaXMgb3V0c2lkZSB0aGUgZXhwcmVzc2lvbiBib3VuZHMoYmVsb3cgLTIpCitT RUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAg ICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAgJ3N0YXRp c3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZmFs c2UsCisgICAgICAgICdkZXBlbmRlbmNpZXMnLCAnW3siYXR0cmlidXRlcyI6IFsyXSwgImRlcGVu ZGVuY3kiOiAtMywgImRlZ3JlZSI6IDEuMDAwMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXMKKyAgICAg ICk7CitXQVJOSU5HOiAgcGdfZGVwZW5kZW5jaWVzOiBpbnZhbGlkIGF0dG51bSBmb3IgdGhpcyBz dGF0aXN0aWNzIG9iamVjdDogLTMKKyBwZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCistLSBvaworU0VMRUNUCisgICAg cGdfY2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGlj c19zY2hlbWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25hbWUn LCAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAg ICAnZGVwZW5kZW5jaWVzJywgJ1t7ImF0dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5IjogMywg ImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1 dGVzIjogWzJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5IjogLTIs ICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmli dXRlcyI6IFszXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogLTEs ICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmli dXRlcyI6IFszXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAy LCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJp YnV0ZXMiOiBbLTFdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMV0sICJkZXBlbmRlbmN5Ijog LTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0 cmlidXRlcyI6IFstMl0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3ki OiAzLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0 dHJpYnV0ZXMiOiBbLTJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAor ICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzXSwgImRlcGVuZGVu Y3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg eyJhdHRyaWJ1dGVzIjogWzIsM10sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAw MH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0xXSwgImRl cGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAg ICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwtMV0sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAx LjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0y XSwgImRlcGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAg ICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwtMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdy ZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6 IFszLC0xXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAg ICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMV0sICJkZXBlbmRlbmN5IjogLTIs ICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmli dXRlcyI6IFszLC0yXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAg ICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMl0sICJkZXBlbmRlbmN5 IjogLTEsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsi YXR0cmlidXRlcyI6IFstMSwtMl0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDAuNTAwMDAw fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xLC0yXSwgImRl cGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAg ICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzLC0yXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6 IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIs LTEsLTJdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0xLC0yXSwgImRlcGVuZGVuY3kiOiAy LCAiZGVncmVlIjogMS4wMDAwMDB9XSc6OnBnX2RlcGVuZGVuY2llcworICAgICAgKTsKKyBwZ19y ZXN0b3JlX2V4dGVuZGVkX3N0YXRzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCitTRUxFQ1QKKyAgICBqc29uYl9wcmV0dHkoZS5uX2Rpc3RpbmN0Ojp0ZXh0Ojpq c29uYikgQVMgbl9kaXN0aW5jdCwKKyAgICBqc29uYl9wcmV0dHkoZS5kZXBlbmRlbmNpZXM6OnRl eHQ6Ompzb25iKSBBUyBkZXBlbmRlbmNpZXMsCisgICAgZS5tb3N0X2NvbW1vbl92YWxzLCBlLm1v c3RfY29tbW9uX3ZhbF9udWxscywKKyAgICBlLm1vc3RfY29tbW9uX2ZyZXFzLCBlLm1vc3RfY29t bW9uX2Jhc2VfZnJlcXMKK0ZST00gcGdfc3RhdHNfZXh0IEFTIGUKK1dIRVJFIGUuc3RhdGlzdGlj c19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBlLnN0YXRpc3RpY3NfbmFtZSA9ICd0 ZXN0X3N0YXRfY2xvbmUnCitBTkQgZS5pbmhlcml0ZWQgPSBmYWxzZQorXGd4CistWyBSRUNPUkQg MSBdLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCituX2Rpc3RpbmN0ICAg ICAgICAgICAgIHwgWyAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICJuZGlzdGluY3QiOiA0LCAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgIDIsICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAzICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICBdICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICB9LCAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg eyAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAibmRpc3RpbmN0IjogNCwgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ImF0dHJpYnV0ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAyLCAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg LTEgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSwgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIm5kaXN0aW5jdCI6 IDQsICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjog WyAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMywgICAgICAgICAg ICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0xICAgICAgICAgICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0gICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJuZGlzdGluY3QiOiA0LCAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDMsICAgICAgICAgICAgICsKKyAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAtMiAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogMywgICAgKworICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAtMSwgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgLTIgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgXSAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgfSwgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg IHsgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgIm5kaXN0aW5jdCI6IDQsICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICJhdHRyaWJ1dGVzIjogWyAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgMiwgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg IDMsICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAt MSAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0Ijog NCwgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBb ICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAyLCAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMywgICAgICAgICAgICAg KworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0yICAgICAgICAgICAgICsK KyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0gICAgICAgICAgICAgICAgICArCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJuZGlzdGluY3QiOiA0LCAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDIsICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAtMSwgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgLTIgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgXSAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgIm5kaXN0aW5jdCI6IDQsICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgMiwgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgIDMsICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAtMSwgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgLTIgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg XSAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgXQorZGVwZW5kZW5j aWVzICAgICAgICAgICB8IFsgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAyICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICBdLCAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgImRlcGVuZGVuY3kiOiAzICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgfSwgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgIHsgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgImRlZ3JlZSI6IDEuMDAwMDAwLCsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICJhdHRyaWJ1dGVzIjogWyAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgMiAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg XSwgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJk ZXBlbmRlbmN5IjogLTEgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZWdyZWUi OiAxLjAwMDAwMCwrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRl cyI6IFsgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDIgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IC0y ICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsKwor ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICsKKyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAzICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdLCAgICAgICAgICAgICAgICAgKworICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlcGVuZGVuY3kiOiAyICAgICsKKyAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgImRlZ3JlZSI6IDEuMDAwMDAwLCsKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgMyAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogLTEgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgIDMgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg IF0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAi ZGVwZW5kZW5jeSI6IC0yICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVl IjogMC41MDAwMDAsKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0 ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAtMSAgICAg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdLCAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlcGVuZGVuY3kiOiAy ICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlZ3JlZSI6IDAuNTAwMDAwLCsK KyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICArCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTEgICAgICAgICAgICAgKworICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogMyAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwrCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgIC0xICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgIF0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IC0yICAgKworICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgeyAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAiZGVncmVlIjogMC41MDAwMDAsKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAtMiAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICBdLCAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ImRlcGVuZGVuY3kiOiAyICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSwgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlZ3Jl ZSI6IDAuNTAwMDAwLCsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1 dGVzIjogWyAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTIgICAg ICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZXBlbmRlbmN5Ijog MyAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgKwor ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0yICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IC0xICAgKworICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsKworICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAyLCAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgMyAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogLTEgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwrCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgIDIsICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAzICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBd LCAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRl cGVuZGVuY3kiOiAtMiAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSwgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlZ3JlZSI6 IDEuMDAwMDAwLCsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVz IjogWyAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMiwgICAgICAg ICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0xICAgICAgICAg ICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IDMgICAg KworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsKworICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICsKKyAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAyLCAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTEgICAgICAgICAgICAgKworICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogLTIgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwrCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgIDIsICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAtMiAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICBdLCAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgImRlcGVuZGVuY3kiOiAzICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg fSwgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ImRlZ3JlZSI6IDEuMDAwMDAwLCsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJh dHRyaWJ1dGVzIjogWyAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg MiwgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0y ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5j eSI6IC0xICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4wMDAw MDAsKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAzLCAgICAgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTEgICAgICAgICAgICAgKwor ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogMiAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwrCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgIDMsICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAtMSAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICBdLCAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgImRlcGVuZGVuY3kiOiAtMiAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgImRlZ3JlZSI6IDEuMDAwMDAwLCsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgMywgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgIC0yICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg IF0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAi ZGVwZW5kZW5jeSI6IDIgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVl IjogMS4wMDAwMDAsKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0 ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAzLCAgICAg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTIgICAgICAg ICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogLTEg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZWdyZWUiOiAwLjUwMDAwMCwrCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgKworICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0xLCAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAtMiAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICBdLCAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgImRlcGVuZGVuY3kiOiAyICAgICsKKyAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgImRlZ3JlZSI6IDAuNTAwMDAwLCsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgLTEsICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgIC0yICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgIF0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAiZGVwZW5kZW5jeSI6IDMgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICB9LCAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg eyAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAiZGVncmVlIjogMS4wMDAwMDAsKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ImF0dHJpYnV0ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAyLCAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg MywgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0y ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5j eSI6IC0xICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4wMDAw MDAsKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAyLCAgICAgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTEsICAgICAgICAgICAgKwor ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0yICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IDMgICAgKworICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsKworICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICsKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAzLCAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgLTEsICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgIC0yICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgIF0sICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAiZGVwZW5kZW5jeSI6IDIgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICB9ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCBd Cittb3N0X2NvbW1vbl92YWxzICAgICAgIHwgCittb3N0X2NvbW1vbl92YWxfbnVsbHMgIHwgCitt b3N0X2NvbW1vbl9mcmVxcyAgICAgIHwgCittb3N0X2NvbW1vbl9iYXNlX2ZyZXFzIHwgCisKKy0t IGlmIGFueSBvbmUgbWN2IHBhcmFtIHNwZWNpZmllZCwgYWxsIGZvdXIgbXVzdCBiZSBzcGVjaWZp ZWQgKHBhcnQgMSkKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9z dGF0cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAor ICAgICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdp bmhlcml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ21vc3RfY29tbW9uX3ZhbHMnLCAne3tmb3VyLE5V TEwsMCxOVUxMfSx7b25lLCIoMSwxLjEsT05FLDAxLTAxLTIwMDEsXCJ7XCJcInhrZXlcIlwiOiBc IlwieHZhbFwiXCJ9XCIpIiwxLDJ9LHt0cmUsIigzLDMuMyxUUkUsMDMtMDMtMjAwMywpIiwtMSwz fSx7dHdvLCIoMiwyLjIsVFdPLDAyLTAyLTIwMDIsXCJbdHJ1ZSwgNCwgXCJcInNpeFwiXCJdXCIp IiwxLDJ9fSc6OnRleHRbXQorICAgICAgKTsKK1dBUk5JTkc6ICBNQ1YgcGFyYW1ldGVycyAibW9z dF9jb21tb25fdmFscyIsICJtb3N0X2NvbW1vbl92YWxfbnVsbHMiLCAibW9zdF9jb21tb25fZnJl cXMiLCBhbmQgIm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMiIG11c3QgYmUgYWxsIHNwZWNpZmllZCBp ZiBhbnkgYXJlIHNwZWNpZmllZAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIGlmIGFueSBvbmUgbWN2IHBh cmFtIHNwZWNpZmllZCwgYWxsIGZvdXIgbXVzdCBiZSBzcGVjaWZpZWQgKHBhcnQgMikKK1NFTEVD VAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygKKyAgICAgICAgJ3N0 YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAgICAgICAnc3RhdGlzdGlj c19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhlcml0ZWQnLCBmYWxzZSwK KyAgICAgICAgJ21vc3RfY29tbW9uX3ZhbF9udWxscycsICd7e2YsdCxmLHR9LHtmLGYsZixmfSx7 ZixmLGYsZn0se2YsZixmLGZ9fSc6OmJvb2xlYW5bXQorICAgICAgKTsKK1dBUk5JTkc6ICBNQ1Yg cGFyYW1ldGVycyAibW9zdF9jb21tb25fdmFscyIsICJtb3N0X2NvbW1vbl92YWxfbnVsbHMiLCAi bW9zdF9jb21tb25fZnJlcXMiLCBhbmQgIm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMiIG11c3QgYmUg YWxsIHNwZWNpZmllZCBpZiBhbnkgYXJlIHNwZWNpZmllZAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRf c3RhdHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIGlm IGFueSBvbmUgbWN2IHBhcmFtIHNwZWNpZmllZCwgYWxsIGZvdXIgbXVzdCBiZSBzcGVjaWZpZWQg KHBhcnQgMykKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0 cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAg ICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhl cml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ21vc3RfY29tbW9uX2ZyZXFzJywgJ3swLjI1LDAuMjUs MC4yNSwwLjI1fSc6OmRvdWJsZSBwcmVjaXNpb25bXQorICAgICAgKTsKK1dBUk5JTkc6ICBNQ1Yg cGFyYW1ldGVycyAibW9zdF9jb21tb25fdmFscyIsICJtb3N0X2NvbW1vbl92YWxfbnVsbHMiLCAi bW9zdF9jb21tb25fZnJlcXMiLCBhbmQgIm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMiIG11c3QgYmUg YWxsIHNwZWNpZmllZCBpZiBhbnkgYXJlIHNwZWNpZmllZAorIHBnX3Jlc3RvcmVfZXh0ZW5kZWRf c3RhdHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIGlm IGFueSBvbmUgbWN2IHBhcmFtIHNwZWNpZmllZCwgYWxsIGZvdXIgbXVzdCBiZSBzcGVjaWZpZWQg KHBhcnQgNCkKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0 cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAg ICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhl cml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ21vc3RfY29tbW9uX2Jhc2VfZnJlcXMnLCAnezAuMDAz OTA2MjUsMC4wMTU2MjUsMC4wMDM5MDYyNSwwLjAxNTYyNX0nOjpkb3VibGUgcHJlY2lzaW9uW10K KyAgICAgICk7CitXQVJOSU5HOiAgTUNWIHBhcmFtZXRlcnMgIm1vc3RfY29tbW9uX3ZhbHMiLCAi bW9zdF9jb21tb25fdmFsX251bGxzIiwgIm1vc3RfY29tbW9uX2ZyZXFzIiwgYW5kICJtb3N0X2Nv bW1vbl9iYXNlX2ZyZXFzIiBtdXN0IGJlIGFsbCBzcGVjaWZpZWQgaWYgYW55IGFyZSBzcGVjaWZp ZWQKKyBwZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgZgorKDEgcm93KQorCistLSBvaworU0VMRUNUCisgICAgcGdfY2F0YWxvZy5wZ19yZXN0 b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywgJ3N0 YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Nsb25l JywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAnbW9zdF9jb21tb25fdmFs cycsICd7e2ZvdXIsTlVMTCwwLE5VTEx9LHtvbmUsIigxLDEuMSxPTkUsMDEtMDEtMjAwMSxcIntc IlwieGtleVwiXCI6IFwiXCJ4dmFsXCJcIn1cIikiLDEsMn0se3RyZSwiKDMsMy4zLFRSRSwwMy0w My0yMDAzLCkiLC0xLDN9LHt0d28sIigyLDIuMixUV08sMDItMDItMjAwMixcIlt0cnVlLCA0LCBc Ilwic2l4XCJcIl1cIikiLDEsMn19Jzo6dGV4dFtdLAorICAgICAgICAnbW9zdF9jb21tb25fdmFs X251bGxzJywgJ3t7Zix0LGYsdH0se2YsZixmLGZ9LHtmLGYsZixmfSx7ZixmLGYsZn19Jzo6Ym9v bGVhbltdLAorICAgICAgICAnbW9zdF9jb21tb25fZnJlcXMnLCAnezAuMjUsMC4yNSwwLjI1LDAu MjV9Jzo6ZG91YmxlIHByZWNpc2lvbltdLAorICAgICAgICAnbW9zdF9jb21tb25fYmFzZV9mcmVx cycsICd7MC4wMDM5MDYyNSwwLjAxNTYyNSwwLjAwMzkwNjI1LDAuMDE1NjI1fSc6OmRvdWJsZSBw cmVjaXNpb25bXQorICAgICAgKTsKKyBwZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QKKyAgICBqc29uYl9w cmV0dHkoZS5uX2Rpc3RpbmN0Ojp0ZXh0Ojpqc29uYikgQVMgbl9kaXN0aW5jdCwKKyAgICBqc29u Yl9wcmV0dHkoZS5kZXBlbmRlbmNpZXM6OnRleHQ6Ompzb25iKSBBUyBkZXBlbmRlbmNpZXMsCisg ICAgZS5tb3N0X2NvbW1vbl92YWxzLCBlLm1vc3RfY29tbW9uX3ZhbF9udWxscywKKyAgICBlLm1v c3RfY29tbW9uX2ZyZXFzLCBlLm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMKK0ZST00gcGdfc3RhdHNf ZXh0IEFTIGUKK1dIRVJFIGUuc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcK K0FORCBlLnN0YXRpc3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXRfY2xvbmUnCitBTkQgZS5pbmhlcml0 ZWQgPSBmYWxzZQorXGd4CistWyBSRUNPUkQgMSBdLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorbl9kaXN0aW5jdCAgICAgICAgICAgICB8IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICJuZGlzdGluY3QiOiA0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0 dHJpYnV0ZXMiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMiwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAzICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0s ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIm5kaXN0aW5jdCI6IDQsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0x ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAi bmRpc3RpbmN0IjogNCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjog WyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDMsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICJuZGlzdGluY3QiOiA0LCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg MywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAtMiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIm5kaXN0aW5jdCI6 IDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAtMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgIC0yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAibmRpc3RpbmN0IjogNCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJh dHRyaWJ1dGVzIjogWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDIsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMywgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAtMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgIm5kaXN0aW5jdCI6IDQsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAy LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDMsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJuZGlzdGluY3QiOiA0LCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAtMSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0yICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAibmRpc3RpbmN0IjogNCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAtMSwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0yICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8IF0KK2RlcGVuZGVuY2ll cyAgICAgICAgICAgfCBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVn cmVlIjogMS4wMDAwMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICJkZXBlbmRlbmN5IjogMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgImRlcGVuZGVuY3kiOiAtMSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlZ3JlZSI6IDEuMDAw MDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5j eSI6IC0yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRy aWJ1dGVzIjogWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlcGVuZGVuY3kiOiAtMSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRl Z3JlZSI6IDEuMDAwMDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAzICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAiZGVwZW5kZW5jeSI6IC0yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMC41MDAwMDAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0x ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogMiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZWdyZWUiOiAwLjUw MDAwMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlcGVuZGVu Y3kiOiAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgImRlZ3JlZSI6IDEuMDAwMDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0 cmlidXRlcyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAtMSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IC0yICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMC41MDAwMDAsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgIC0yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJk ZWdyZWUiOiAwLjUwMDAwMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBb ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgImRlcGVuZGVuY3kiOiAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgImRlZ3JlZSI6IDEuMDAwMDAwLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAt MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IC0xICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4w MDAwMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlcGVuZGVuY3kiOiAtMSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRl Z3JlZSI6IDEuMDAwMDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZXBlbmRlbmN5 IjogLTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJp YnV0ZXMiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMiwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAtMSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAi ZGVwZW5kZW5jeSI6IDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICJhdHRyaWJ1dGVzIjogWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDIsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgImRlcGVuZGVuY3kiOiAtMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlZ3JlZSI6IDEuMDAwMDAwLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0yICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogMyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAtMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IC0xICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjog MS4wMDAwMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgIDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlcGVuZGVuY3kiOiAyICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ImRlZ3JlZSI6IDEuMDAwMDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6 IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAzLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgIC0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZXBlbmRl bmN5IjogLTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICJkZWdyZWUiOiAxLjAwMDAwMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0 dHJpYnV0ZXMiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMywgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAtMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAiZGVwZW5kZW5jeSI6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4wMDAwMDAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDMs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgLTIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgImRlcGVuZGVuY3kiOiAtMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIH0sICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgImRlZ3JlZSI6IDAuNTAwMDAwLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAiYXR0cmlidXRlcyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAtMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIC0yICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBdLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICJkZXBlbmRlbmN5IjogMiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJkZWdyZWUiOiAwLjUwMDAw MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgImF0dHJpYnV0ZXMiOiBbICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgLTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAtMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IDMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVl IjogMS4wMDAwMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAtMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IC0xICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjog MS4wMDAwMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgLTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAt MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IDMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAiZGVncmVlIjogMS4w MDAwMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICJhdHRyaWJ1dGVzIjogWyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgIDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgLTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAtMiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgXSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAiZGVwZW5kZW5jeSI6IDIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgICB8IF0KK21vc3RfY29t bW9uX3ZhbHMgICAgICAgfCB7e2ZvdXIsTlVMTCwwLE5VTEx9LHtvbmUsIigxLDEuMSxPTkUsMDEt MDEtMjAwMSxcIntcIlwieGtleVwiXCI6IFwiXCJ4dmFsXCJcIn1cIikiLDEsMn0se3RyZSwiKDMs My4zLFRSRSwwMy0wMy0yMDAzLCkiLC0xLDN9LHt0d28sIigyLDIuMixUV08sMDItMDItMjAwMixc Ilt0cnVlLCA0LCBcIlwic2l4XCJcIl1cIikiLDEsMn19Cittb3N0X2NvbW1vbl92YWxfbnVsbHMg IHwge3tmLHQsZix0fSx7ZixmLGYsZn0se2YsZixmLGZ9LHtmLGYsZixmfX0KK21vc3RfY29tbW9u X2ZyZXFzICAgICAgfCB7MC4yNSwwLjI1LDAuMjUsMC4yNX0KK21vc3RfY29tbW9uX2Jhc2VfZnJl cXMgfCB7MC4wMDM5MDYyNSwwLjAxNTYyNSwwLjAwMzkwNjI1LDAuMDE1NjI1fQorCitTRUxFQ1QK KyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0 aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3Nf bmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisg ICAgICAgICdleHBycycsICd7ezAsNCwtMC43NSwiezF9IiwiezAuNX0iLCJ7LTEsMH0iLC0wLjYs TlVMTCxOVUxMLE5VTEx9LHswLjI1LDQsLTAuNSwiezJ9IiwiezAuNX0iLE5VTEwsMSxOVUxMLE5V TEwsTlVMTH19Jzo6dGV4dFtdCisgICAgICApOworIHBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVAorICAg IGUuaW5oZXJpdGVkLCBlLm51bGxfZnJhYywgZS5hdmdfd2lkdGgsIGUubl9kaXN0aW5jdCwgZS5t b3N0X2NvbW1vbl92YWxzLAorICAgIGUubW9zdF9jb21tb25fZnJlcXMsIGUuaGlzdG9ncmFtX2Jv dW5kcywgZS5jb3JyZWxhdGlvbiwKKyAgICBlLm1vc3RfY29tbW9uX2VsZW1zLCBlLm1vc3RfY29t bW9uX2VsZW1fZnJlcXMsIGUuZWxlbV9jb3VudF9oaXN0b2dyYW0KK0ZST00gcGdfc3RhdHNfZXh0 X2V4cHJzIEFTIGUKK1dIRVJFIGUuc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9y dCcKK0FORCBlLnN0YXRpc3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXRfY2xvbmUnCithbmQgZS5pbmhl cml0ZWQgPSBmYWxzZQorXGd4CistWyBSRUNPUkQgMSBdLS0tLS0tLS0tLSstLS0tLS0tCitpbmhl cml0ZWQgICAgICAgICAgICAgIHwgZgorbnVsbF9mcmFjICAgICAgICAgICAgICB8IDAKK2F2Z193 aWR0aCAgICAgICAgICAgICAgfCA0CituX2Rpc3RpbmN0ICAgICAgICAgICAgIHwgLTAuNzUKK21v c3RfY29tbW9uX3ZhbHMgICAgICAgfCB7MX0KK21vc3RfY29tbW9uX2ZyZXFzICAgICAgfCB7MC41 fQoraGlzdG9ncmFtX2JvdW5kcyAgICAgICB8IHstMSwwfQorY29ycmVsYXRpb24gICAgICAgICAg ICB8IC0wLjYKK21vc3RfY29tbW9uX2VsZW1zICAgICAgfCAKK21vc3RfY29tbW9uX2VsZW1fZnJl cXMgfCAKK2VsZW1fY291bnRfaGlzdG9ncmFtICAgfCAKKy1bIFJFQ09SRCAyIF0tLS0tLS0tLS0t Ky0tLS0tLS0KK2luaGVyaXRlZCAgICAgICAgICAgICAgfCBmCitudWxsX2ZyYWMgICAgICAgICAg ICAgIHwgMC4yNQorYXZnX3dpZHRoICAgICAgICAgICAgICB8IDQKK25fZGlzdGluY3QgICAgICAg ICAgICAgfCAtMC41Cittb3N0X2NvbW1vbl92YWxzICAgICAgIHwgezJ9Cittb3N0X2NvbW1vbl9m cmVxcyAgICAgIHwgezAuNX0KK2hpc3RvZ3JhbV9ib3VuZHMgICAgICAgfCAKK2NvcnJlbGF0aW9u ICAgICAgICAgICAgfCAxCittb3N0X2NvbW1vbl9lbGVtcyAgICAgIHwgCittb3N0X2NvbW1vbl9l bGVtX2ZyZXFzIHwgCitlbGVtX2NvdW50X2hpc3RvZ3JhbSAgIHwgCisKK1NFTEVDVAorICAgIHBn X2NhdGFsb2cucGdfY2xlYXJfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgIHN0YXRpc3RpY3Nfc2No ZW1hbmFtZSA9PiAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAgc3RhdGlzdGljc19uYW1lID0+ICd0 ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICBpbmhlcml0ZWQgPT4gZmFsc2UpOworIHBnX2NsZWFy X2V4dGVuZGVkX3N0YXRzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgQ09VTlQoKikKK0ZST00gcGdfc3RhdHNfZXh0IEFTIGUKK1dIRVJFIGUuc3RhdGlz dGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBlLnN0YXRpc3RpY3NfbmFtZSA9 ICd0ZXN0X3N0YXRfY2xvbmUnCitBTkQgZS5pbmhlcml0ZWQgPSBmYWxzZTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgICAgMAorKDEgcm93KQorCitTRUxFQ1QgQ09VTlQoKikKK0ZST00gcGdfc3RhdHNf ZXh0X2V4cHJzIEFTIGUKK1dIRVJFIGUuc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2lt cG9ydCcKK0FORCBlLnN0YXRpc3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXRfY2xvbmUnCitBTkQgZS5p bmhlcml0ZWQgPSBmYWxzZTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCist LQorLS0gQ29weSBzdGF0cyBmcm9tIHRlc3Rfc3RhdCB0byB0ZXN0X3N0YXRfY2xvbmUKKy0tCitT RUxFQ1QKKyAgICBlLnN0YXRpc3RpY3NfbmFtZSwKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVf ZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCBlLnN0YXRp c3RpY3Nfc2NoZW1hbmFtZTo6dGV4dCwKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0 X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZS5pbmhlcml0ZWQsCisgICAgICAg ICduX2Rpc3RpbmN0JywgZS5uX2Rpc3RpbmN0LAorICAgICAgICAnZGVwZW5kZW5jaWVzJywgZS5k ZXBlbmRlbmNpZXMsCisgICAgICAgICdtb3N0X2NvbW1vbl92YWxzJywgZS5tb3N0X2NvbW1vbl92 YWxzLAorICAgICAgICAnbW9zdF9jb21tb25fdmFsX251bGxzJywgZS5tb3N0X2NvbW1vbl92YWxf bnVsbHMsCisgICAgICAgICdtb3N0X2NvbW1vbl9mcmVxcycsIGUubW9zdF9jb21tb25fZnJlcXMs CisgICAgICAgICdtb3N0X2NvbW1vbl9iYXNlX2ZyZXFzJywgZS5tb3N0X2NvbW1vbl9iYXNlX2Zy ZXFzLAorICAgICAgICAnZXhwcnMnLCB4LmV4cHJzCisgICAgKQorRlJPTSBwZ19zdGF0c19leHQg QVMgZQorQ1JPU1MgSk9JTiBMQVRFUkFMICgKKyAgICBTRUxFQ1QKKyAgICAgICAgYXJyYXlfYWdn KAorICAgICAgICAgICAgQVJSQVlbZWUubnVsbF9mcmFjOjp0ZXh0LCBlZS5hdmdfd2lkdGg6OnRl eHQsCisgICAgICAgICAgICAgICAgICBlZS5uX2Rpc3RpbmN0Ojp0ZXh0LCBlZS5tb3N0X2NvbW1v bl92YWxzOjp0ZXh0LAorICAgICAgICAgICAgICAgICAgZWUubW9zdF9jb21tb25fZnJlcXM6OnRl eHQsIGVlLmhpc3RvZ3JhbV9ib3VuZHM6OnRleHQsCisgICAgICAgICAgICAgICAgICBlZS5jb3Jy ZWxhdGlvbjo6dGV4dCwgZWUubW9zdF9jb21tb25fZWxlbXM6OnRleHQsCisgICAgICAgICAgICAg ICAgICBlZS5tb3N0X2NvbW1vbl9lbGVtX2ZyZXFzOjp0ZXh0LAorICAgICAgICAgICAgICAgICAg ZWUuZWxlbV9jb3VudF9oaXN0b2dyYW06OnRleHRdKQorICAgIEZST00gcGdfc3RhdHNfZXh0X2V4 cHJzIEFTIGVlCisgICAgV0hFUkUgZWUuc3RhdGlzdGljc19zY2hlbWFuYW1lID0gZS5zdGF0aXN0 aWNzX3NjaGVtYW5hbWUKKyAgICBBTkQgZWUuc3RhdGlzdGljc19uYW1lID0gZS5zdGF0aXN0aWNz X25hbWUKKyAgICBBTkQgZWUuaW5oZXJpdGVkID0gZS5pbmhlcml0ZWQKKyAgICApIEFTIHgoZXhw cnMpCitXSEVSRSBlLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQg ZS5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0JzsKKyBzdGF0aXN0aWNzX25hbWUgfCBwZ19y ZXN0b3JlX2V4dGVuZGVkX3N0YXRzIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgdGVzdF9zdGF0ICAgICAgIHwgdAorKDEgcm93KQorCitTRUxFQ1Qgby5p bmhlcml0ZWQsCisgICAgICAgby5uX2Rpc3RpbmN0LCBvLmRlcGVuZGVuY2llcywgby5tb3N0X2Nv bW1vbl92YWxzLAorICAgICAgIG8ubW9zdF9jb21tb25fdmFsX251bGxzLCBvLm1vc3RfY29tbW9u X2ZyZXFzLAorICAgICAgIG8ubW9zdF9jb21tb25fYmFzZV9mcmVxcworRlJPTSBwZ19zdGF0c19l eHQgQVMgbworV0hFUkUgby5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0Jwor QU5EIG8uc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdCcKK0VYQ0VQVAorU0VMRUNUIG4uaW5o ZXJpdGVkLAorICAgICAgIG4ubl9kaXN0aW5jdCwgbi5kZXBlbmRlbmNpZXMsIG4ubW9zdF9jb21t b25fdmFscywKKyAgICAgICBuLm1vc3RfY29tbW9uX3ZhbF9udWxscywgbi5tb3N0X2NvbW1vbl9m cmVxcywKKyAgICAgICBuLm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMKK0ZST00gcGdfc3RhdHNfZXh0 IEFTIG4KK1dIRVJFIG4uc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FO RCBuLnN0YXRpc3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXRfY2xvbmUnOworIGluaGVyaXRlZCB8IG5f ZGlzdGluY3QgfCBkZXBlbmRlbmNpZXMgfCBtb3N0X2NvbW1vbl92YWxzIHwgbW9zdF9jb21tb25f dmFsX251bGxzIHwgbW9zdF9jb21tb25fZnJlcXMgfCBtb3N0X2NvbW1vbl9iYXNlX2ZyZXFzIAor LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorKDAgcm93cykKKworU0VMRUNUIG4uaW5oZXJpdGVkLAorICAgICAgIG4u bl9kaXN0aW5jdCwgbi5kZXBlbmRlbmNpZXMsIG4ubW9zdF9jb21tb25fdmFscywKKyAgICAgICBu Lm1vc3RfY29tbW9uX3ZhbF9udWxscywgbi5tb3N0X2NvbW1vbl9mcmVxcywKKyAgICAgICBuLm1v c3RfY29tbW9uX2Jhc2VfZnJlcXMKK0ZST00gcGdfc3RhdHNfZXh0IEFTIG4KK1dIRVJFIG4uc3Rh dGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBuLnN0YXRpc3RpY3NfbmFt ZSA9ICd0ZXN0X3N0YXRfY2xvbmUnCitFWENFUFQKK1NFTEVDVCBvLmluaGVyaXRlZCwKKyAgICAg ICBvLm5fZGlzdGluY3QsIG8uZGVwZW5kZW5jaWVzLCBvLm1vc3RfY29tbW9uX3ZhbHMsCisgICAg ICAgby5tb3N0X2NvbW1vbl92YWxfbnVsbHMsIG8ubW9zdF9jb21tb25fZnJlcXMsCisgICAgICAg by5tb3N0X2NvbW1vbl9iYXNlX2ZyZXFzCitGUk9NIHBnX3N0YXRzX2V4dCBBUyBvCitXSEVSRSBv LnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQgby5zdGF0aXN0aWNz X25hbWUgPSAndGVzdF9zdGF0JzsKKyBpbmhlcml0ZWQgfCBuX2Rpc3RpbmN0IHwgZGVwZW5kZW5j aWVzIHwgbW9zdF9jb21tb25fdmFscyB8IG1vc3RfY29tbW9uX3ZhbF9udWxscyB8IG1vc3RfY29t bW9uX2ZyZXFzIHwgbW9zdF9jb21tb25fYmFzZV9mcmVxcyAKKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKygwIHJv d3MpCisKK1NFTEVDVCBvLmluaGVyaXRlZCwKKyAgICAgICBvLm51bGxfZnJhYywgby5hdmdfd2lk dGgsIG8ubl9kaXN0aW5jdCwKKyAgICAgICBvLm1vc3RfY29tbW9uX3ZhbHM6OnRleHQgQVMgbW9z dF9jb21tb25fdmFscywKKyAgICAgICBvLm1vc3RfY29tbW9uX2ZyZXFzLAorICAgICAgIG8uaGlz dG9ncmFtX2JvdW5kczo6dGV4dCBBUyBoaXN0b2dyYW1fYm91bmRzLAorICAgICAgIG8uY29ycmVs YXRpb24sCisgICAgICAgby5tb3N0X2NvbW1vbl9lbGVtczo6dGV4dCBBUyBtb3N0X2NvbW1vbl9l bGVtcywKKyAgICAgICBvLm1vc3RfY29tbW9uX2VsZW1fZnJlcXMsIG8uZWxlbV9jb3VudF9oaXN0 b2dyYW0KK0ZST00gcGdfc3RhdHNfZXh0X2V4cHJzIEFTIG8KK1dIRVJFIG8uc3RhdGlzdGljc19z Y2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBvLnN0YXRpc3RpY3NfbmFtZSA9ICd0ZXN0 X3N0YXQnCitFWENFUFQKK1NFTEVDVCBuLmluaGVyaXRlZCwKKyAgICAgICBuLm51bGxfZnJhYywg bi5hdmdfd2lkdGgsIG4ubl9kaXN0aW5jdCwKKyAgICAgICBuLm1vc3RfY29tbW9uX3ZhbHM6OnRl eHQgQVMgbW9zdF9jb21tb25fdmFscywKKyAgICAgICBuLm1vc3RfY29tbW9uX2ZyZXFzLAorICAg ICAgIG4uaGlzdG9ncmFtX2JvdW5kczo6dGV4dCBBUyBoaXN0b2dyYW1fYm91bmRzLAorICAgICAg IG4uY29ycmVsYXRpb24sCisgICAgICAgbi5tb3N0X2NvbW1vbl9lbGVtczo6dGV4dCBBUyBtb3N0 X2NvbW1vbl9lbGVtcywKKyAgICAgICBuLm1vc3RfY29tbW9uX2VsZW1fZnJlcXMsIG4uZWxlbV9j b3VudF9oaXN0b2dyYW0KK0ZST00gcGdfc3RhdHNfZXh0X2V4cHJzIEFTIG4KK1dIRVJFIG4uc3Rh dGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBuLnN0YXRpc3RpY3NfbmFt ZSA9ICd0ZXN0X3N0YXRfY2xvbmUnOworIGluaGVyaXRlZCB8IG51bGxfZnJhYyB8IGF2Z193aWR0 aCB8IG5fZGlzdGluY3QgfCBtb3N0X2NvbW1vbl92YWxzIHwgbW9zdF9jb21tb25fZnJlcXMgfCBo aXN0b2dyYW1fYm91bmRzIHwgY29ycmVsYXRpb24gfCBtb3N0X2NvbW1vbl9lbGVtcyB8IG1vc3Rf Y29tbW9uX2VsZW1fZnJlcXMgfCBlbGVtX2NvdW50X2hpc3RvZ3JhbSAKKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisoMCByb3dzKQorCitTRUxFQ1Qgbi5pbmhlcml0ZWQsCisgICAgICAgbi5udWxsX2ZyYWMs IG4uYXZnX3dpZHRoLCBuLm5fZGlzdGluY3QsCisgICAgICAgbi5tb3N0X2NvbW1vbl92YWxzOjp0 ZXh0IEFTIG1vc3RfY29tbW9uX3ZhbHMsCisgICAgICAgbi5tb3N0X2NvbW1vbl9mcmVxcywKKyAg ICAgICBuLmhpc3RvZ3JhbV9ib3VuZHM6OnRleHQgQVMgaGlzdG9ncmFtX2JvdW5kcywKKyAgICAg ICBuLmNvcnJlbGF0aW9uLAorICAgICAgIG4ubW9zdF9jb21tb25fZWxlbXM6OnRleHQgQVMgbW9z dF9jb21tb25fZWxlbXMsCisgICAgICAgbi5tb3N0X2NvbW1vbl9lbGVtX2ZyZXFzLCBuLmVsZW1f Y291bnRfaGlzdG9ncmFtCitGUk9NIHBnX3N0YXRzX2V4dF9leHBycyBBUyBuCitXSEVSRSBuLnN0 YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQgbi5zdGF0aXN0aWNzX25h bWUgPSAndGVzdF9zdGF0X2Nsb25lJworRVhDRVBUCitTRUxFQ1Qgby5pbmhlcml0ZWQsCisgICAg ICAgby5udWxsX2ZyYWMsIG8uYXZnX3dpZHRoLCBvLm5fZGlzdGluY3QsCisgICAgICAgby5tb3N0 X2NvbW1vbl92YWxzOjp0ZXh0IEFTIG1vc3RfY29tbW9uX3ZhbHMsCisgICAgICAgby5tb3N0X2Nv bW1vbl9mcmVxcywKKyAgICAgICBvLmhpc3RvZ3JhbV9ib3VuZHM6OnRleHQgQVMgaGlzdG9ncmFt X2JvdW5kcywKKyAgICAgICBvLmNvcnJlbGF0aW9uLAorICAgICAgIG8ubW9zdF9jb21tb25fZWxl bXM6OnRleHQgQVMgbW9zdF9jb21tb25fZWxlbXMsCisgICAgICAgby5tb3N0X2NvbW1vbl9lbGVt X2ZyZXFzLCBvLmVsZW1fY291bnRfaGlzdG9ncmFtCitGUk9NIHBnX3N0YXRzX2V4dF9leHBycyBB UyBvCitXSEVSRSBvLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQg by5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0JzsKKyBpbmhlcml0ZWQgfCBudWxsX2ZyYWMg fCBhdmdfd2lkdGggfCBuX2Rpc3RpbmN0IHwgbW9zdF9jb21tb25fdmFscyB8IG1vc3RfY29tbW9u X2ZyZXFzIHwgaGlzdG9ncmFtX2JvdW5kcyB8IGNvcnJlbGF0aW9uIHwgbW9zdF9jb21tb25fZWxl bXMgfCBtb3N0X2NvbW1vbl9lbGVtX2ZyZXFzIHwgZWxlbV9jb3VudF9oaXN0b2dyYW0gCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorKDAgcm93cykKKwogRFJPUCBTQ0hFTUEgc3RhdHNfaW1wb3J0IENBU0NB REU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDYgb3RoZXIgb2JqZWN0cwogREVUQUlMOiAg ZHJvcCBjYXNjYWRlcyB0byB0eXBlIHN0YXRzX2ltcG9ydC5jb21wbGV4X3R5cGUKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2ltcG9ydC5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9zdGF0c19pbXBvcnQuc3FsCmluZGV4IGQxNDA3MzNhNzUwLi40OGEwM2Y1YjgwMyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfaW1wb3J0LnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19pbXBvcnQuc3FsCkBAIC03NjYsNiArNzY2LDkgQEAg U0VMRUNUIDQsICdmb3VyJywgTlVMTCwgaW50NHJhbmdlKDAsMTAwKSwgTlVMTDsKIAogQ1JFQVRF IElOREVYIGlzX29kZCBPTiBzdGF0c19pbXBvcnQudGVzdCgoKGNvbXApLmEgJSAyID0gMSkpOwog CitDUkVBVEUgU1RBVElTVElDUyBzdGF0c19pbXBvcnQudGVzdF9zdGF0IE9OIG5hbWUsIGNvbXAs IGxvd2VyKGFyYW5nZSksIGFycmF5X2xlbmd0aCh0YWdzLDEpCitGUk9NIHN0YXRzX2ltcG9ydC50 ZXN0OworCiAtLSBHZW5lcmF0ZSBzdGF0aXN0aWNzIG9uIHRhYmxlIHdpdGggZGF0YQogQU5BTFla RSBzdGF0c19pbXBvcnQudGVzdDsKIApAQCAtNzc0LDYgKzc3Nyw5IEBAIENSRUFURSBUQUJMRSBz dGF0c19pbXBvcnQudGVzdF9jbG9uZSAoIExJS0Ugc3RhdHNfaW1wb3J0LnRlc3QgKQogCiBDUkVB VEUgSU5ERVggaXNfb2RkX2Nsb25lIE9OIHN0YXRzX2ltcG9ydC50ZXN0X2Nsb25lKCgoY29tcCku YSAlIDIgPSAxKSk7CiAKK0NSRUFURSBTVEFUSVNUSUNTIHN0YXRzX2ltcG9ydC50ZXN0X3N0YXRf Y2xvbmUgT04gbmFtZSwgY29tcCwgbG93ZXIoYXJhbmdlKSwgYXJyYXlfbGVuZ3RoKHRhZ3MsMSkK K0ZST00gc3RhdHNfaW1wb3J0LnRlc3RfY2xvbmU7CisKIC0tCiAtLSBDb3B5IHN0YXRzIGZyb20g dGVzdCB0byB0ZXN0X2Nsb25lLCBhbmQgaXNfb2RkIHRvIGlzX29kZF9jbG9uZQogLS0KQEAgLTk3 MCw0ICs5NzYsMzYyIEBAIEFORCB0YWJsZW5hbWUgPSAnc3RhdHNfdGVtcCcKIEFORCBpbmhlcml0 ZWQgPSBmYWxzZQogQU5EIGF0dG5hbWUgPSAnaSc7CiBEUk9QIFRBQkxFIHN0YXRzX3RlbXA7CisK Ky0tIHNldCBuX2Rpc3RpbmN0IHVzaW5nIGF0IGF0dG51bSAoMSkgdGhhdCBpcyBub3QgaW4gdGhl IHN0YXRpc3RpY3Mgb2JqZWN0CitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0 ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1w b3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAg ICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAgICduX2Rpc3RpbmN0JywgJ1t7ImF0dHJp YnV0ZXMiIDogWzMsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAg ICAgeyJhdHRyaWJ1dGVzIiA6IFszLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAg ICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbLTEsLTJdLCAibmRpc3RpbmN0IiA6IDN9LAor ICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMsLTFdLCAibmRpc3Rp bmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMs LTJdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1 dGVzIiA6IFsyLC0xLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHsiYXR0cmlidXRlcyIgOiBbMywtMSwtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAg ICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsMywtMSwtMiwxXSwgIm5kaXN0aW5j dCIgOiA0fV0nOjpwZ19uZGlzdGluY3QKKyAgICAgICk7CisKKy0tIHNldCBuX2Rpc3RpbmN0IHVz aW5nIGF0IGF0dG51bSB0aGF0IGlzIDAKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9y ZV9leHRlbmRlZF9zdGF0cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0 c19pbXBvcnQnLAorICAgICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScs CisgICAgICAgICdpbmhlcml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ25fZGlzdGluY3QnLCAnW3si YXR0cmlidXRlcyIgOiBbMywtMV0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAg ICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzMsLTJdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAg ICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFstMSwtMl0sICJuZGlzdGluY3QiIDog M30sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsMywtMV0sICJu ZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDog WzIsMywtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0 dHJpYnV0ZXMiIDogWzIsLTEsLTJdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAg ICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFsyLDMsLTEsLTIsMF0sICJuZGlzdGluY3QiIDogNH1d Jzo6cGdfbmRpc3RpbmN0CisgICAgICApOworCistLSBzZXQgbl9kaXN0aW5jdCB1c2luZyBhdCBh dHRudW0gdGhhdCBpcyBvdXRzaWRlIHRoZSBleHByZXNzaW9uIGJvdW5kcyhiZWxvdyAtMikKK1NF TEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygKKyAgICAgICAg J3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBvcnQnLAorICAgICAgICAnc3RhdGlz dGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAgICAgICdpbmhlcml0ZWQnLCBmYWxz ZSwKKyAgICAgICAgJ25fZGlzdGluY3QnLCAnW3siYXR0cmlidXRlcyIgOiBbMywtMV0sICJuZGlz dGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzMs LTJdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1 dGVzIiA6IFstMSwtMl0sICJuZGlzdGluY3QiIDogM30sCisgICAgICAgICAgICAgICAgICAgICAg ICB7ImF0dHJpYnV0ZXMiIDogWy00LDMsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAg ICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6IFstNCwzLC0yXSwgIm5kaXN0aW5jdCIgOiA0 fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbLTQsLTEsLTJdLCAi bmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIiA6 IFszLC0xLC0yLC00XSwgIm5kaXN0aW5jdCIgOiA0fV0nOjpwZ19uZGlzdGluY3QKKyAgICAgICk7 CisKKy0tIG9rCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3Rh dHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAg ICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5o ZXJpdGVkJywgZmFsc2UsCisgICAgICAgICduX2Rpc3RpbmN0JywgJ1t7ImF0dHJpYnV0ZXMiIDog WzIsM10sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJp YnV0ZXMiIDogWzIsLTFdLCAibmRpc3RpbmN0IiA6IDR9LAorICAgICAgICAgICAgICAgICAgICAg ICAgeyJhdHRyaWJ1dGVzIiA6IFszLC0xXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAg ICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMywtMl0sICJuZGlzdGluY3QiIDogNH0sCisg ICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWy0xLC0yXSwgIm5kaXN0aW5j dCIgOiAzfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyIgOiBbMiwzLC0x XSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRl cyIgOiBbMiwzLC0yXSwgIm5kaXN0aW5jdCIgOiA0fSwKKyAgICAgICAgICAgICAgICAgICAgICAg IHsiYXR0cmlidXRlcyIgOiBbMiwtMSwtMl0sICJuZGlzdGluY3QiIDogNH0sCisgICAgICAgICAg ICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiIDogWzIsMywtMSwtMl0sICJuZGlzdGluY3QiIDog NH1dJzo6cGdfbmRpc3RpbmN0CisgICAgICApOworCitTRUxFQ1QKKyAgICBqc29uYl9wcmV0dHko ZS5uX2Rpc3RpbmN0Ojp0ZXh0Ojpqc29uYikgQVMgbl9kaXN0aW5jdCwKKyAgICBlLmRlcGVuZGVu Y2llcywKKyAgICBlLm1vc3RfY29tbW9uX3ZhbHMsIGUubW9zdF9jb21tb25fdmFsX251bGxzLAor ICAgIGUubW9zdF9jb21tb25fZnJlcXMsIGUubW9zdF9jb21tb25fYmFzZV9mcmVxcworRlJPTSBw Z19zdGF0c19leHQgQVMgZQorV0hFUkUgZS5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNf aW1wb3J0JworQU5EIGUuc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdF9jbG9uZScKK0FORCBl LmluaGVyaXRlZCA9IGZhbHNlCitcZ3gKKworLS0gc2V0IGRlcGVuZGVuY2llcyB1c2luZyBhdCBh dHRudW0gKDEpIHRoYXQgaXMgbm90IGluIHRoZSBzdGF0aXN0aWNzIG9iamVjdAorU0VMRUNUCisg ICAgcGdfY2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlz dGljc19zY2hlbWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25h bWUnLCAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAg ICAgICAnZGVwZW5kZW5jaWVzJywgJ1t7ImF0dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5Ijog MSwgImRlZ3JlZSI6IDEuMDAwMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXMKKyAgICAgICk7CisKKy0t IHNldCBkZXBlbmRlbmNpZXMgdXNpbmcgYXQgYXR0bnVtIHRoYXQgaXMgMAorU0VMRUNUCisgICAg cGdfY2F0YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGlj c19zY2hlbWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25hbWUn LCAndGVzdF9zdGF0X2Nsb25lJywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAg ICAnZGVwZW5kZW5jaWVzJywgJ1t7ImF0dHJpYnV0ZXMiOiBbMF0sICJkZXBlbmRlbmN5IjogLTEs ICJkZWdyZWUiOiAxLjAwMDAwMH1dJzo6cGdfZGVwZW5kZW5jaWVzCisgICAgICApOworCistLSBz ZXQgZGVwZW5kZW5jaWVzIHVzaW5nIGF0IGF0dG51bSB0aGF0IGlzIG91dHNpZGUgdGhlIGV4cHJl c3Npb24gYm91bmRzKGJlbG93IC0yKQorU0VMRUNUCisgICAgcGdfY2F0YWxvZy5wZ19yZXN0b3Jl X2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywgJ3N0YXRz X2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Nsb25lJywK KyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAnZGVwZW5kZW5jaWVzJywgJ1t7 ImF0dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5IjogLTMsICJkZWdyZWUiOiAxLjAwMDAwMH1d Jzo6cGdfZGVwZW5kZW5jaWVzCisgICAgICApOworCistLSBvaworU0VMRUNUCisgICAgcGdfY2F0 YWxvZy5wZ19yZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19zY2hl bWFuYW1lJywgJ3N0YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAndGVz dF9zdGF0X2Nsb25lJywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAnZGVw ZW5kZW5jaWVzJywgJ1t7ImF0dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5IjogMywgImRlZ3Jl ZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjog WzJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAg ICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5IjogLTIsICJkZWdy ZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6 IFszXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAg ICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogLTEsICJkZWdy ZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6 IFszXSwgImRlcGVuZGVuY3kiOiAtMiwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVn cmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMi OiBbLTFdLCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAwLjUwMDAwMH0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFstMV0sICJkZXBlbmRlbmN5IjogLTIsICJk ZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRl cyI6IFstMl0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0yXSwgImRlcGVuZGVuY3kiOiAzLCAi ZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0 ZXMiOiBbLTJdLCAiZGVwZW5kZW5jeSI6IC0xLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAg ICAgICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwzXSwgImRlcGVuZGVuY3kiOiAt MSwgImRlZ3JlZSI6IDEuMDAwMDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRy aWJ1dGVzIjogWzIsM10sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0xXSwgImRlcGVuZGVu Y3kiOiAzLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7 ImF0dHJpYnV0ZXMiOiBbMiwtMV0sICJkZXBlbmRlbmN5IjogLTIsICJkZWdyZWUiOiAxLjAwMDAw MH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFsyLC0yXSwgImRl cGVuZGVuY3kiOiAzLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAg ICAgICB7ImF0dHJpYnV0ZXMiOiBbMiwtMl0sICJkZXBlbmRlbmN5IjogLTEsICJkZWdyZWUiOiAx LjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0x XSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAgICAgICAg ICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMV0sICJkZXBlbmRlbmN5IjogLTIsICJkZWdy ZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmlidXRlcyI6 IFszLC0yXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMS4wMDAwMDB9LAorICAgICAgICAg ICAgICAgICAgICAgICAgICB7ImF0dHJpYnV0ZXMiOiBbMywtMl0sICJkZXBlbmRlbmN5IjogLTEs ICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiYXR0cmli dXRlcyI6IFstMSwtMl0sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDAuNTAwMDAwfSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWy0xLC0yXSwgImRlcGVuZGVu Y3kiOiAzLCAiZGVncmVlIjogMC41MDAwMDB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7 ImF0dHJpYnV0ZXMiOiBbMiwzLC0yXSwgImRlcGVuZGVuY3kiOiAtMSwgImRlZ3JlZSI6IDEuMDAw MDAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGVzIjogWzIsLTEsLTJd LCAiZGVwZW5kZW5jeSI6IDMsICJkZWdyZWUiOiAxLjAwMDAwMH0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHsiYXR0cmlidXRlcyI6IFszLC0xLC0yXSwgImRlcGVuZGVuY3kiOiAyLCAiZGVn cmVlIjogMS4wMDAwMDB9XSc6OnBnX2RlcGVuZGVuY2llcworICAgICAgKTsKKworU0VMRUNUCisg ICAganNvbmJfcHJldHR5KGUubl9kaXN0aW5jdDo6dGV4dDo6anNvbmIpIEFTIG5fZGlzdGluY3Qs CisgICAganNvbmJfcHJldHR5KGUuZGVwZW5kZW5jaWVzOjp0ZXh0Ojpqc29uYikgQVMgZGVwZW5k ZW5jaWVzLAorICAgIGUubW9zdF9jb21tb25fdmFscywgZS5tb3N0X2NvbW1vbl92YWxfbnVsbHMs CisgICAgZS5tb3N0X2NvbW1vbl9mcmVxcywgZS5tb3N0X2NvbW1vbl9iYXNlX2ZyZXFzCitGUk9N IHBnX3N0YXRzX2V4dCBBUyBlCitXSEVSRSBlLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0 c19pbXBvcnQnCitBTkQgZS5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJworQU5E IGUuaW5oZXJpdGVkID0gZmFsc2UKK1xneAorCistLSBpZiBhbnkgb25lIG1jdiBwYXJhbSBzcGVj aWZpZWQsIGFsbCBmb3VyIG11c3QgYmUgc3BlY2lmaWVkIChwYXJ0IDEpCitTRUxFQ1QKKyAgICBw Z19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNz X3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScs ICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAg ICdtb3N0X2NvbW1vbl92YWxzJywgJ3t7Zm91cixOVUxMLDAsTlVMTH0se29uZSwiKDEsMS4xLE9O RSwwMS0wMS0yMDAxLFwie1wiXCJ4a2V5XCJcIjogXCJcInh2YWxcIlwifVwiKSIsMSwyfSx7dHJl LCIoMywzLjMsVFJFLDAzLTAzLTIwMDMsKSIsLTEsM30se3R3bywiKDIsMi4yLFRXTywwMi0wMi0y MDAyLFwiW3RydWUsIDQsIFwiXCJzaXhcIlwiXVwiKSIsMSwyfX0nOjp0ZXh0W10KKyAgICAgICk7 CisKKy0tIGlmIGFueSBvbmUgbWN2IHBhcmFtIHNwZWNpZmllZCwgYWxsIGZvdXIgbXVzdCBiZSBz cGVjaWZpZWQgKHBhcnQgMikKK1NFTEVDVAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9leHRl bmRlZF9zdGF0cygKKyAgICAgICAgJ3N0YXRpc3RpY3Nfc2NoZW1hbmFtZScsICdzdGF0c19pbXBv cnQnLAorICAgICAgICAnc3RhdGlzdGljc19uYW1lJywgJ3Rlc3Rfc3RhdF9jbG9uZScsCisgICAg ICAgICdpbmhlcml0ZWQnLCBmYWxzZSwKKyAgICAgICAgJ21vc3RfY29tbW9uX3ZhbF9udWxscycs ICd7e2YsdCxmLHR9LHtmLGYsZixmfSx7ZixmLGYsZn0se2YsZixmLGZ9fSc6OmJvb2xlYW5bXQor ICAgICAgKTsKKworLS0gaWYgYW55IG9uZSBtY3YgcGFyYW0gc3BlY2lmaWVkLCBhbGwgZm91ciBt dXN0IGJlIHNwZWNpZmllZCAocGFydCAzKQorU0VMRUNUCisgICAgcGdfY2F0YWxvZy5wZ19yZXN0 b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywgJ3N0 YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Nsb25l JywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAnbW9zdF9jb21tb25fZnJl cXMnLCAnezAuMjUsMC4yNSwwLjI1LDAuMjV9Jzo6ZG91YmxlIHByZWNpc2lvbltdCisgICAgICAp OworCistLSBpZiBhbnkgb25lIG1jdiBwYXJhbSBzcGVjaWZpZWQsIGFsbCBmb3VyIG11c3QgYmUg c3BlY2lmaWVkIChwYXJ0IDQpCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0 ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1w b3J0JywKKyAgICAgICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAg ICAgICAnaW5oZXJpdGVkJywgZmFsc2UsCisgICAgICAgICdtb3N0X2NvbW1vbl9iYXNlX2ZyZXFz JywgJ3swLjAwMzkwNjI1LDAuMDE1NjI1LDAuMDAzOTA2MjUsMC4wMTU2MjV9Jzo6ZG91YmxlIHBy ZWNpc2lvbltdCisgICAgICApOworCistLSBvaworU0VMRUNUCisgICAgcGdfY2F0YWxvZy5wZ19y ZXN0b3JlX2V4dGVuZGVkX3N0YXRzKAorICAgICAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywg J3N0YXRzX2ltcG9ydCcsCisgICAgICAgICdzdGF0aXN0aWNzX25hbWUnLCAndGVzdF9zdGF0X2Ns b25lJywKKyAgICAgICAgJ2luaGVyaXRlZCcsIGZhbHNlLAorICAgICAgICAnbW9zdF9jb21tb25f dmFscycsICd7e2ZvdXIsTlVMTCwwLE5VTEx9LHtvbmUsIigxLDEuMSxPTkUsMDEtMDEtMjAwMSxc IntcIlwieGtleVwiXCI6IFwiXCJ4dmFsXCJcIn1cIikiLDEsMn0se3RyZSwiKDMsMy4zLFRSRSww My0wMy0yMDAzLCkiLC0xLDN9LHt0d28sIigyLDIuMixUV08sMDItMDItMjAwMixcIlt0cnVlLCA0 LCBcIlwic2l4XCJcIl1cIikiLDEsMn19Jzo6dGV4dFtdLAorICAgICAgICAnbW9zdF9jb21tb25f dmFsX251bGxzJywgJ3t7Zix0LGYsdH0se2YsZixmLGZ9LHtmLGYsZixmfSx7ZixmLGYsZn19Jzo6 Ym9vbGVhbltdLAorICAgICAgICAnbW9zdF9jb21tb25fZnJlcXMnLCAnezAuMjUsMC4yNSwwLjI1 LDAuMjV9Jzo6ZG91YmxlIHByZWNpc2lvbltdLAorICAgICAgICAnbW9zdF9jb21tb25fYmFzZV9m cmVxcycsICd7MC4wMDM5MDYyNSwwLjAxNTYyNSwwLjAwMzkwNjI1LDAuMDE1NjI1fSc6OmRvdWJs ZSBwcmVjaXNpb25bXQorICAgICAgKTsKKworU0VMRUNUCisgICAganNvbmJfcHJldHR5KGUubl9k aXN0aW5jdDo6dGV4dDo6anNvbmIpIEFTIG5fZGlzdGluY3QsCisgICAganNvbmJfcHJldHR5KGUu ZGVwZW5kZW5jaWVzOjp0ZXh0Ojpqc29uYikgQVMgZGVwZW5kZW5jaWVzLAorICAgIGUubW9zdF9j b21tb25fdmFscywgZS5tb3N0X2NvbW1vbl92YWxfbnVsbHMsCisgICAgZS5tb3N0X2NvbW1vbl9m cmVxcywgZS5tb3N0X2NvbW1vbl9iYXNlX2ZyZXFzCitGUk9NIHBnX3N0YXRzX2V4dCBBUyBlCitX SEVSRSBlLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCitBTkQgZS5zdGF0 aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJworQU5EIGUuaW5oZXJpdGVkID0gZmFsc2UK K1xneAorCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMo CisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVtYW5hbWUnLCAnc3RhdHNfaW1wb3J0JywKKyAgICAg ICAgJ3N0YXRpc3RpY3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJp dGVkJywgZmFsc2UsCisgICAgICAgICdleHBycycsICd7ezAsNCwtMC43NSwiezF9IiwiezAuNX0i LCJ7LTEsMH0iLC0wLjYsTlVMTCxOVUxMLE5VTEx9LHswLjI1LDQsLTAuNSwiezJ9IiwiezAuNX0i LE5VTEwsMSxOVUxMLE5VTEwsTlVMTH19Jzo6dGV4dFtdCisgICAgICApOworCitTRUxFQ1QKKyAg ICBlLmluaGVyaXRlZCwgZS5udWxsX2ZyYWMsIGUuYXZnX3dpZHRoLCBlLm5fZGlzdGluY3QsIGUu bW9zdF9jb21tb25fdmFscywKKyAgICBlLm1vc3RfY29tbW9uX2ZyZXFzLCBlLmhpc3RvZ3JhbV9i b3VuZHMsIGUuY29ycmVsYXRpb24sCisgICAgZS5tb3N0X2NvbW1vbl9lbGVtcywgZS5tb3N0X2Nv bW1vbl9lbGVtX2ZyZXFzLCBlLmVsZW1fY291bnRfaGlzdG9ncmFtCitGUk9NIHBnX3N0YXRzX2V4 dF9leHBycyBBUyBlCitXSEVSRSBlLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBv cnQnCitBTkQgZS5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJworYW5kIGUuaW5o ZXJpdGVkID0gZmFsc2UKK1xneAorCitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX2NsZWFyX2V4 dGVuZGVkX3N0YXRzKAorICAgICAgICBzdGF0aXN0aWNzX3NjaGVtYW5hbWUgPT4gJ3N0YXRzX2lt cG9ydCcsCisgICAgICAgIHN0YXRpc3RpY3NfbmFtZSA9PiAndGVzdF9zdGF0X2Nsb25lJywKKyAg ICAgICAgaW5oZXJpdGVkID0+IGZhbHNlKTsKKworU0VMRUNUIENPVU5UKCopCitGUk9NIHBnX3N0 YXRzX2V4dCBBUyBlCitXSEVSRSBlLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBv cnQnCitBTkQgZS5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJworQU5EIGUuaW5o ZXJpdGVkID0gZmFsc2U7CisKK1NFTEVDVCBDT1VOVCgqKQorRlJPTSBwZ19zdGF0c19leHRfZXhw cnMgQVMgZQorV0hFUkUgZS5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0Jwor QU5EIGUuc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdF9jbG9uZScKK0FORCBlLmluaGVyaXRl ZCA9IGZhbHNlOworCistLQorLS0gQ29weSBzdGF0cyBmcm9tIHRlc3Rfc3RhdCB0byB0ZXN0X3N0 YXRfY2xvbmUKKy0tCitTRUxFQ1QKKyAgICBlLnN0YXRpc3RpY3NfbmFtZSwKKyAgICBwZ19jYXRh bG9nLnBnX3Jlc3RvcmVfZXh0ZW5kZWRfc3RhdHMoCisgICAgICAgICdzdGF0aXN0aWNzX3NjaGVt YW5hbWUnLCBlLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZTo6dGV4dCwKKyAgICAgICAgJ3N0YXRpc3Rp Y3NfbmFtZScsICd0ZXN0X3N0YXRfY2xvbmUnLAorICAgICAgICAnaW5oZXJpdGVkJywgZS5pbmhl cml0ZWQsCisgICAgICAgICduX2Rpc3RpbmN0JywgZS5uX2Rpc3RpbmN0LAorICAgICAgICAnZGVw ZW5kZW5jaWVzJywgZS5kZXBlbmRlbmNpZXMsCisgICAgICAgICdtb3N0X2NvbW1vbl92YWxzJywg ZS5tb3N0X2NvbW1vbl92YWxzLAorICAgICAgICAnbW9zdF9jb21tb25fdmFsX251bGxzJywgZS5t b3N0X2NvbW1vbl92YWxfbnVsbHMsCisgICAgICAgICdtb3N0X2NvbW1vbl9mcmVxcycsIGUubW9z dF9jb21tb25fZnJlcXMsCisgICAgICAgICdtb3N0X2NvbW1vbl9iYXNlX2ZyZXFzJywgZS5tb3N0 X2NvbW1vbl9iYXNlX2ZyZXFzLAorICAgICAgICAnZXhwcnMnLCB4LmV4cHJzCisgICAgKQorRlJP TSBwZ19zdGF0c19leHQgQVMgZQorQ1JPU1MgSk9JTiBMQVRFUkFMICgKKyAgICBTRUxFQ1QKKyAg ICAgICAgYXJyYXlfYWdnKAorICAgICAgICAgICAgQVJSQVlbZWUubnVsbF9mcmFjOjp0ZXh0LCBl ZS5hdmdfd2lkdGg6OnRleHQsCisgICAgICAgICAgICAgICAgICBlZS5uX2Rpc3RpbmN0Ojp0ZXh0 LCBlZS5tb3N0X2NvbW1vbl92YWxzOjp0ZXh0LAorICAgICAgICAgICAgICAgICAgZWUubW9zdF9j b21tb25fZnJlcXM6OnRleHQsIGVlLmhpc3RvZ3JhbV9ib3VuZHM6OnRleHQsCisgICAgICAgICAg ICAgICAgICBlZS5jb3JyZWxhdGlvbjo6dGV4dCwgZWUubW9zdF9jb21tb25fZWxlbXM6OnRleHQs CisgICAgICAgICAgICAgICAgICBlZS5tb3N0X2NvbW1vbl9lbGVtX2ZyZXFzOjp0ZXh0LAorICAg ICAgICAgICAgICAgICAgZWUuZWxlbV9jb3VudF9oaXN0b2dyYW06OnRleHRdKQorICAgIEZST00g cGdfc3RhdHNfZXh0X2V4cHJzIEFTIGVlCisgICAgV0hFUkUgZWUuc3RhdGlzdGljc19zY2hlbWFu YW1lID0gZS5zdGF0aXN0aWNzX3NjaGVtYW5hbWUKKyAgICBBTkQgZWUuc3RhdGlzdGljc19uYW1l ID0gZS5zdGF0aXN0aWNzX25hbWUKKyAgICBBTkQgZWUuaW5oZXJpdGVkID0gZS5pbmhlcml0ZWQK KyAgICApIEFTIHgoZXhwcnMpCitXSEVSRSBlLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0 c19pbXBvcnQnCitBTkQgZS5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0JzsKKworU0VMRUNU IG8uaW5oZXJpdGVkLAorICAgICAgIG8ubl9kaXN0aW5jdCwgby5kZXBlbmRlbmNpZXMsIG8ubW9z dF9jb21tb25fdmFscywKKyAgICAgICBvLm1vc3RfY29tbW9uX3ZhbF9udWxscywgby5tb3N0X2Nv bW1vbl9mcmVxcywKKyAgICAgICBvLm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMKK0ZST00gcGdfc3Rh dHNfZXh0IEFTIG8KK1dIRVJFIG8uc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9y dCcKK0FORCBvLnN0YXRpc3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXQnCitFWENFUFQKK1NFTEVDVCBu LmluaGVyaXRlZCwKKyAgICAgICBuLm5fZGlzdGluY3QsIG4uZGVwZW5kZW5jaWVzLCBuLm1vc3Rf Y29tbW9uX3ZhbHMsCisgICAgICAgbi5tb3N0X2NvbW1vbl92YWxfbnVsbHMsIG4ubW9zdF9jb21t b25fZnJlcXMsCisgICAgICAgbi5tb3N0X2NvbW1vbl9iYXNlX2ZyZXFzCitGUk9NIHBnX3N0YXRz X2V4dCBBUyBuCitXSEVSRSBuLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQn CitBTkQgbi5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0X2Nsb25lJzsKKworU0VMRUNUIG4u aW5oZXJpdGVkLAorICAgICAgIG4ubl9kaXN0aW5jdCwgbi5kZXBlbmRlbmNpZXMsIG4ubW9zdF9j b21tb25fdmFscywKKyAgICAgICBuLm1vc3RfY29tbW9uX3ZhbF9udWxscywgbi5tb3N0X2NvbW1v bl9mcmVxcywKKyAgICAgICBuLm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMKK0ZST00gcGdfc3RhdHNf ZXh0IEFTIG4KK1dIRVJFIG4uc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcK K0FORCBuLnN0YXRpc3RpY3NfbmFtZSA9ICd0ZXN0X3N0YXRfY2xvbmUnCitFWENFUFQKK1NFTEVD VCBvLmluaGVyaXRlZCwKKyAgICAgICBvLm5fZGlzdGluY3QsIG8uZGVwZW5kZW5jaWVzLCBvLm1v c3RfY29tbW9uX3ZhbHMsCisgICAgICAgby5tb3N0X2NvbW1vbl92YWxfbnVsbHMsIG8ubW9zdF9j b21tb25fZnJlcXMsCisgICAgICAgby5tb3N0X2NvbW1vbl9iYXNlX2ZyZXFzCitGUk9NIHBnX3N0 YXRzX2V4dCBBUyBvCitXSEVSRSBvLnN0YXRpc3RpY3Nfc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBv cnQnCitBTkQgby5zdGF0aXN0aWNzX25hbWUgPSAndGVzdF9zdGF0JzsKKworU0VMRUNUIG8uaW5o ZXJpdGVkLAorICAgICAgIG8ubnVsbF9mcmFjLCBvLmF2Z193aWR0aCwgby5uX2Rpc3RpbmN0LAor ICAgICAgIG8ubW9zdF9jb21tb25fdmFsczo6dGV4dCBBUyBtb3N0X2NvbW1vbl92YWxzLAorICAg ICAgIG8ubW9zdF9jb21tb25fZnJlcXMsCisgICAgICAgby5oaXN0b2dyYW1fYm91bmRzOjp0ZXh0 IEFTIGhpc3RvZ3JhbV9ib3VuZHMsCisgICAgICAgby5jb3JyZWxhdGlvbiwKKyAgICAgICBvLm1v c3RfY29tbW9uX2VsZW1zOjp0ZXh0IEFTIG1vc3RfY29tbW9uX2VsZW1zLAorICAgICAgIG8ubW9z dF9jb21tb25fZWxlbV9mcmVxcywgby5lbGVtX2NvdW50X2hpc3RvZ3JhbQorRlJPTSBwZ19zdGF0 c19leHRfZXhwcnMgQVMgbworV0hFUkUgby5zdGF0aXN0aWNzX3NjaGVtYW5hbWUgPSAnc3RhdHNf aW1wb3J0JworQU5EIG8uc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdCcKK0VYQ0VQVAorU0VM RUNUIG4uaW5oZXJpdGVkLAorICAgICAgIG4ubnVsbF9mcmFjLCBuLmF2Z193aWR0aCwgbi5uX2Rp c3RpbmN0LAorICAgICAgIG4ubW9zdF9jb21tb25fdmFsczo6dGV4dCBBUyBtb3N0X2NvbW1vbl92 YWxzLAorICAgICAgIG4ubW9zdF9jb21tb25fZnJlcXMsCisgICAgICAgbi5oaXN0b2dyYW1fYm91 bmRzOjp0ZXh0IEFTIGhpc3RvZ3JhbV9ib3VuZHMsCisgICAgICAgbi5jb3JyZWxhdGlvbiwKKyAg ICAgICBuLm1vc3RfY29tbW9uX2VsZW1zOjp0ZXh0IEFTIG1vc3RfY29tbW9uX2VsZW1zLAorICAg ICAgIG4ubW9zdF9jb21tb25fZWxlbV9mcmVxcywgbi5lbGVtX2NvdW50X2hpc3RvZ3JhbQorRlJP TSBwZ19zdGF0c19leHRfZXhwcnMgQVMgbgorV0hFUkUgbi5zdGF0aXN0aWNzX3NjaGVtYW5hbWUg PSAnc3RhdHNfaW1wb3J0JworQU5EIG4uc3RhdGlzdGljc19uYW1lID0gJ3Rlc3Rfc3RhdF9jbG9u ZSc7CisKK1NFTEVDVCBuLmluaGVyaXRlZCwKKyAgICAgICBuLm51bGxfZnJhYywgbi5hdmdfd2lk dGgsIG4ubl9kaXN0aW5jdCwKKyAgICAgICBuLm1vc3RfY29tbW9uX3ZhbHM6OnRleHQgQVMgbW9z dF9jb21tb25fdmFscywKKyAgICAgICBuLm1vc3RfY29tbW9uX2ZyZXFzLAorICAgICAgIG4uaGlz dG9ncmFtX2JvdW5kczo6dGV4dCBBUyBoaXN0b2dyYW1fYm91bmRzLAorICAgICAgIG4uY29ycmVs YXRpb24sCisgICAgICAgbi5tb3N0X2NvbW1vbl9lbGVtczo6dGV4dCBBUyBtb3N0X2NvbW1vbl9l bGVtcywKKyAgICAgICBuLm1vc3RfY29tbW9uX2VsZW1fZnJlcXMsIG4uZWxlbV9jb3VudF9oaXN0 b2dyYW0KK0ZST00gcGdfc3RhdHNfZXh0X2V4cHJzIEFTIG4KK1dIRVJFIG4uc3RhdGlzdGljc19z Y2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBuLnN0YXRpc3RpY3NfbmFtZSA9ICd0ZXN0 X3N0YXRfY2xvbmUnCitFWENFUFQKK1NFTEVDVCBvLmluaGVyaXRlZCwKKyAgICAgICBvLm51bGxf ZnJhYywgby5hdmdfd2lkdGgsIG8ubl9kaXN0aW5jdCwKKyAgICAgICBvLm1vc3RfY29tbW9uX3Zh bHM6OnRleHQgQVMgbW9zdF9jb21tb25fdmFscywKKyAgICAgICBvLm1vc3RfY29tbW9uX2ZyZXFz LAorICAgICAgIG8uaGlzdG9ncmFtX2JvdW5kczo6dGV4dCBBUyBoaXN0b2dyYW1fYm91bmRzLAor ICAgICAgIG8uY29ycmVsYXRpb24sCisgICAgICAgby5tb3N0X2NvbW1vbl9lbGVtczo6dGV4dCBB UyBtb3N0X2NvbW1vbl9lbGVtcywKKyAgICAgICBvLm1vc3RfY29tbW9uX2VsZW1fZnJlcXMsIG8u ZWxlbV9jb3VudF9oaXN0b2dyYW0KK0ZST00gcGdfc3RhdHNfZXh0X2V4cHJzIEFTIG8KK1dIRVJF IG8uc3RhdGlzdGljc19zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKK0FORCBvLnN0YXRpc3Rp Y3NfbmFtZSA9ICd0ZXN0X3N0YXQnOworCiBEUk9QIFNDSEVNQSBzdGF0c19pbXBvcnQgQ0FTQ0FE RTsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbCBiL2RvYy9z cmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbAppbmRleCAxYjQ2NWJjOGJhNy4uNTc0ZDRhMzVh NjQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNnbWwKQEAgLTIxNjcsNiArMjE2NywxMDQgQEAg U0VMRUNUIHBnX3Jlc3RvcmVfYXR0cmlidXRlX3N0YXRzKAogICAgICAgICA8L3BhcmE+CiAgICAg ICAgPC9lbnRyeT4KICAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9s ZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAg ICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0 czwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19y ZXN0b3JlX2V4dGVuZGVkX3N0YXRzPC9mdW5jdGlvbj4gKAorICAgICAgICA8bGl0ZXJhbD5WQVJJ QURJQzwvbGl0ZXJhbD4gPHBhcmFtZXRlcj5rd2FyZ3M8L3BhcmFtZXRlcj4gPHR5cGU+ImFueSI8 L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmJvb2xlYW48L3JldHVybnZhbHVlPgorICAg ICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgQ3JlYXRlcyBvciB1cGRhdGVz IHN0YXRpc3RpY3MgZm9yIHN0YXRpc3RpY3Mgb2JqZWN0cy4gIE9yZGluYXJpbHksCisgICAgICAg ICB0aGVzZSBzdGF0aXN0aWNzIGFyZSBjb2xsZWN0ZWQgYXV0b21hdGljYWxseSBvciB1cGRhdGVk IGFzIGEgcGFydCBvZgorICAgICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLXZhY3V1bSIvPiBvciA8 eHJlZiBsaW5rZW5kPSJzcWwtYW5hbHl6ZSIvPiwgc28KKyAgICAgICAgIGl0J3Mgbm90IG5lY2Vz c2FyeSB0byBjYWxsIHRoaXMgZnVuY3Rpb24uICBIb3dldmVyLCBpdCBpcyB1c2VmdWwKKyAgICAg ICAgIGFmdGVyIGEgcmVzdG9yZSB0byBlbmFibGUgdGhlIG9wdGltaXplciB0byBjaG9vc2UgYmV0 dGVyIHBsYW5zIGlmCisgICAgICAgICA8Y29tbWFuZD5BTkFMWVpFPC9jb21tYW5kPiBoYXMgbm90 IGJlZW4gcnVuIHlldC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAg IFRoZSB0cmFja2VkIHN0YXRpc3RpY3MgbWF5IGNoYW5nZSBmcm9tIHZlcnNpb24gdG8gdmVyc2lv biwgc28KKyAgICAgICAgIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGFzIHBhaXJzIG9mIDxyZXBsYWNl YWJsZT5hcmduYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgIGFuZCA8cmVwbGFjZWFibGU+YXJn dmFsdWU8L3JlcGxhY2VhYmxlPiBpbiB0aGUgZm9ybToKKzxwcm9ncmFtbGlzdGluZz4KKyBTRUxF Q1QgcGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygKKyAgICAnPHJlcGxhY2VhYmxlPmFyZzFuYW1l PC9yZXBsYWNlYWJsZT4nLCAnPHJlcGxhY2VhYmxlPmFyZzF2YWx1ZTwvcmVwbGFjZWFibGU+Jzo6 PHJlcGxhY2VhYmxlPmFyZzF0eXBlPC9yZXBsYWNlYWJsZT4sCisgICAgJzxyZXBsYWNlYWJsZT5h cmcybmFtZTwvcmVwbGFjZWFibGU+JywgJzxyZXBsYWNlYWJsZT5hcmcydmFsdWU8L3JlcGxhY2Vh YmxlPic6OjxyZXBsYWNlYWJsZT5hcmcydHlwZTwvcmVwbGFjZWFibGU+LAorICAgICc8cmVwbGFj ZWFibGU+YXJnM25hbWU8L3JlcGxhY2VhYmxlPicsICc8cmVwbGFjZWFibGU+YXJnM3ZhbHVlPC9y ZXBsYWNlYWJsZT4nOjo8cmVwbGFjZWFibGU+YXJnM3R5cGU8L3JlcGxhY2VhYmxlPik7Cis8L3By b2dyYW1saXN0aW5nPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAg Rm9yIGV4YW1wbGUsIHRvIHNldCB0aGUgPHN0cnVjdGZpZWxkPm5fZGlzdGluY3Q8L3N0cnVjdGZp ZWxkPiwKKyAgICAgICAgIDxzdHJ1Y3RmaWVsZD5kZXBlbmRlbmNpZXM8L3N0cnVjdGZpZWxkPiwg YW5kIDxzdHJ1Y3RmaWVsZD5leHByczwvc3RydWN0ZmllbGQ+CisgICAgICAgICB2YWx1ZXMgZm9y IHRoZSBzdGF0aXN0aWNzIG9iamVjdCA8c3RydWN0bmFtZT5teXNjaGVtYS5teXN0YXRzb2JqPC9z dHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KKyBTRUxFQ1QgcGdfcmVzdG9yZV9leHRlbmRl ZF9zdGF0cygKKyAgICAnc3RhdGlzdGljc19zY2hlbWFuYW1lJywgJ215c2NoZW1hJzo6bmFtZSwK KyAgICAnc3RhdGlzdGljc19uYW1lJywgICAgICAgJ215dGFibGUnOjpuYW1lLAorICAgICdpbmhl cml0ZWQnLCAgICAgICAgICAgICBmYWxzZSwKKyAgICAnbl9kaXN0aW5jdCcsICAgICAgICAgICAg J3siMiwgMyI6IDQsICIyLCAtMSI6IDQsICIyLCAtMiI6IDQsICIzLCAtMSI6IDQsICIzLCAtMiI6 IDR9Jzo6cGdfbmRpc3RpbmN0LAorICAgICdkZXBlbmRlbmNpZXMnLCAgICAgICAgICAneyIyID0+ IDEiOiAxLjAwMDAwMCwgIjIgPT4gLTEiOiAxLjAwMDAwMCwgIjIgPT4gLTIiOiAxLjAwMDAwMH0n OjpwZ19kZXBlbmRlbmNpZXMKKyAgICAnZXhwcnMnLCAgICAgICAgICAgICAgICAgJ3t7MCw0LC0w Ljc1LCJ7MX0iLCJ7MC41fSIsInstMSwwfSIsLTAuNixOVUxMLE5VTEwsTlVMTH0sezAuMjUsNCwt MC41LCJ7Mn0iLCJ7MC41fSIsTlVMTCwxLE5VTEwsTlVMTCxOVUxMfX0nOjp0ZXh0W10pOworPC9w cm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAg IFRoZSByZXF1aXJlZCBhcmd1bWVudHMgYXJlIDxsaXRlcmFsPnN0YXRpc3RpY3Nfc2NoZW1hbmFt ZTwvbGl0ZXJhbD4gd2l0aCBhIHZhbHVlCisgICAgICAgICBvZiB0eXBlIDx0eXBlPm5hbWU8L3R5 cGU+LCB3aGljaCBzcGVjaWZpZXMgdGhlIHN0YXRpc3RpY3Mgb2JqZWN0J3Mgc2NoZW1hOworICAg ICAgICAgPGxpdGVyYWw+c3RhdGlzdGljc19uYW1lPC9saXRlcmFsPiB3aXRoIGEgdmFsdWUgb2Yg dHlwZSA8dHlwZT5uYW1lPC90eXBlPiwgd2hpY2ggc3BlY2lmaWVzCisgICAgICAgICB0aGUgbmFt ZSBvZiB0aGUgc3RhdGlzdGljcyBvYmplY3Q7IGFuZCA8bGl0ZXJhbD5pbmhlcml0ZWQ8L2xpdGVy YWw+LCB3aGljaAorICAgICAgICAgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHN0YXRpc3RpY3MgaW5j bHVkZSB2YWx1ZXMgZnJvbSBjaGlsZCB0YWJsZXMuCisgICAgICAgICBPdGhlciBhcmd1bWVudHMg YXJlIHRoZSBuYW1lcyBhbmQgdmFsdWVzIG9mIHN0YXRpc3RpY3MgY29ycmVzcG9uZGluZworICAg ICAgICAgdG8gY29sdW1ucyBpbiA8bGluayBsaW5rZW5kPSJ2aWV3LXBnLXN0YXRzLWV4dCI+PHN0 cnVjdG5hbWU+cGdfc3RhdHNfZXh0PC9zdHJ1Y3RuYW1lPgorICAgICAgICAgPC9saW5rPi4gVG8g YWNjZXB0IHN0YXRpc3RpY3MgZm9yIGFueSBleHByZXNzaW9ucyBpbiB0aGUgZXh0ZW5kZWQgc3Rh dGlzdGljcyBvYmplY3QsIHRoZQorICAgICAgICAgcGFyYW1ldGVyIDxsaXRlcmFsPmV4cHJzPC9s aXRlcmFsPiB3aXRoIGEgdHlwZSA8dHlwZT50ZXh0W108L3R5cGU+IGlzIGF2YWlsYWJsZSwgdGhl IGFycmF5CisgICAgICAgICBtdXN0IGJlIHR3byBkaW1lbnNpb25hbCB3aXRoIGFuIG91dGVyIGFy cmF5IGluIGxlbmd0aCBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluCisgICAg ICAgICB0aGUgb2JqZWN0LCBhbmQgdGhlIGlubmVyIGFycmF5IGVsZW1lbnRzIGZvciBlYWNoIG9m IHRoZSBzdGF0aXN0aWNhbCBjb2x1bW5zIGluIDxsaW5rCisgICAgICAgICBsaW5rZW5kPSJ2aWV3 LXBnLXN0YXRzLWV4dC1leHBycyI+PHN0cnVjdG5hbWU+cGdfc3RhdHNfZXh0X2V4cHJzPC9zdHJ1 Y3RuYW1lPjwvbGluaz4sIHNvbWUKKyAgICAgICAgIG9mIHdoaWNoIGFyZSB0aGVtc2VsdmVzIGFy cmF5cy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEFkZGl0aW9u YWxseSwgdGhpcyBmdW5jdGlvbiBhY2NlcHRzIGFyZ3VtZW50IG5hbWUKKyAgICAgICAgIDxsaXRl cmFsPnZlcnNpb248L2xpdGVyYWw+IG9mIHR5cGUgPHR5cGU+aW50ZWdlcjwvdHlwZT4sIHdoaWNo CisgICAgICAgICBzcGVjaWZpZXMgdGhlIHNlcnZlciB2ZXJzaW9uIGZyb20gd2hpY2ggdGhlIHN0 YXRpc3RpY3Mgb3JpZ2luYXRlZC4KKyAgICAgICAgIFRoaXMgaXMgYW50aWNpcGF0ZWQgdG8gYmUg aGVscGZ1bCBpbiBwb3J0aW5nIHN0YXRpc3RpY3MgZnJvbSBvbGRlcgorICAgICAgICAgdmVyc2lv bnMgb2YgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPi4KKyAgICAgICAgPC9w YXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIE1pbm9yIGVycm9ycyBhcmUgcmVwb3J0ZWQg YXMgYSA8bGl0ZXJhbD5XQVJOSU5HPC9saXRlcmFsPiBhbmQKKyAgICAgICAgIGlnbm9yZWQsIGFu ZCByZW1haW5pbmcgc3RhdGlzdGljcyB3aWxsIHN0aWxsIGJlIHJlc3RvcmVkLiBJZiBhbGwKKyAg ICAgICAgIHNwZWNpZmllZCBzdGF0aXN0aWNzIGFyZSBzdWNjZXNzZnVsbHkgcmVzdG9yZWQsIHJl dHVybnMKKyAgICAgICAgIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCBvdGhlcndpc2UgPGxpdGVy YWw+ZmFsc2U8L2xpdGVyYWw+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAg ICAgICAgVGhlIGNhbGxlciBtdXN0IGhhdmUgdGhlIDxsaXRlcmFsPk1BSU5UQUlOPC9saXRlcmFs PiBwcml2aWxlZ2Ugb24gdGhlCisgICAgICAgICB0YWJsZSBvciBiZSB0aGUgb3duZXIgb2YgdGhl IGRhdGFiYXNlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvcm93 PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+Cisg ICAgICAgIDxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgIDxpbmRleHRlcm0+ CisgICAgICAgICAgPHByaW1hcnk+cGdfY2xlYXJfZXh0ZW5kZWRfc3RhdHM8L3ByaW1hcnk+Cisg ICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgIDxmdW5jdGlvbj5wZ19jbGVhcl9leHRlbmRl ZF9zdGF0czwvZnVuY3Rpb24+ICgKKyAgICAgICAgIDxwYXJhbWV0ZXI+c3RhdGlzdGljc19zY2hl bWFuYW1lPC9wYXJhbWV0ZXI+IDx0eXBlPm5hbWU8L3R5cGU+LAorICAgICAgICAgPHBhcmFtZXRl cj5zdGF0aXN0aWNzX25hbWU8L3BhcmFtZXRlcj4gPHR5cGU+bmFtZTwvdHlwZT4sCisgICAgICAg ICA8cGFyYW1ldGVyPmluaGVyaXRlZDwvcGFyYW1ldGVyPiA8dHlwZT5ib29sZWFuPC90eXBlPiAp CisgICAgICAgICA8cmV0dXJudmFsdWU+dm9pZDwvcmV0dXJudmFsdWU+CisgICAgICAgIDwvcGFy YT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBDbGVhcnMgc3RhdGlzdGljcyBmb3IgdGhlIGdp dmVuIHN0YXRpc3RpY3Mgb2JqZWN0LCBhcworICAgICAgICAgdGhvdWdoIHRoZSBvYmplY3Qgd2Fz IG5ld2x5IGNyZWF0ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAg ICBUaGUgY2FsbGVyIG11c3QgaGF2ZSB0aGUgPGxpdGVyYWw+TUFJTlRBSU48L2xpdGVyYWw+IHBy aXZpbGVnZSBvbgorICAgICAgICAgdGhlIHRhYmxlIG9yIGJlIHRoZSBvd25lciBvZiB0aGUgZGF0 YWJhc2UuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5PgorICAgICAgPC9yb3c+CiAg ICAgIDwvdGJvZHk+CiAgICAgPC90Z3JvdXA+CiAgICA8L3RhYmxlPgotLSAKMi41MS4xCgo= --00000000000009c16c0643879075 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0007-Include-Extended-Statistics-in-pg_dump.patch" Content-Disposition: attachment; filename="v13-0007-Include-Extended-Statistics-in-pg_dump.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhyfu3s26 RnJvbSA5ZmVkMDk0NTkwMTBjOTc1ZWU5MWIyZjk5MTY0OGQ4MmY4YzBlYWY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDb3JleSBIdWlua2VyIDxjb3JleS5odWlua2VyQGdtYWlsLmNv bT4KRGF0ZTogV2VkLCA1IE5vdiAyMDI1IDAxOjEzOjA0IC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2 MTMgNy83XSBJbmNsdWRlIEV4dGVuZGVkIFN0YXRpc3RpY3MgaW4gcGdfZHVtcC4KCkluY29ycG9y YXRlIHRoZSBuZXcgcGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cygpIGZ1bmN0aW9uIGludG8gcGdf ZHVtcC4KVGhpcyBkZXRlY3RzIHRoZSBleGlzdGVuY2Ugb2YgZXh0ZW5kZWQgc3RhdGlzdGljcyBz dGF0aXN0aWNzIChpLmUuCnBnX3N0YXRpc3RpY19leHRfZGF0YSByb3dzKS4KClRoaXMgaGFuZGxl cyBtYW55IG9mIHRoZSBjaGFuZ2VzIHRoYXQgaGF2ZSBoYXBwZW5lZCB0byBleHRlbmRlZApzdGF0 aXN0aWMgc3RhdGlzdGljcyBvdmVyIHRoZSB2YXJpb3VzIHZlcnNpb25zLCBpbmNsdWRpbmc6Cgoq IEZvcm1hdCBjaGFuZ2UgZm9yIHBnX25kaXN0aW5jdCBhbmQgcGdfZGVwZW5kZW5jaWVzIGluIGN1 cnJlbnQKICBkZXZlbG9wbWVudCB2ZXJzaW9uLiBFYXJsaWVyIHZlcnNpb25zIGhhdmUgdGhlIGZv cm1hdCB0cmFuc2xhdGVkIHZpYQogIHRoZSBwZ19kdW1wIFNRTCBzdGF0ZW1lbnQuCgoqIEluaGVy aXRlZCBleHRlbmRlZCBzdGF0aXN0aWNzIHdlcmUgaW50cm9kdWNlZCBpbiB2MTUuCgoqIEV4cHJl c3Npb25zIHdlcmUgaW50cm9kdWNlZCB0byBleHRlbmRlZCBzdGF0aXN0aWNzIGluIHYxNC4KCiog TUNWIGV4dGVuZGVkIHN0YXRpc3RpY3Mgd2VyZSBpbnRyb2R1Y2VkIGluIHYxMy4KCiogcGdfc3Rh dGlzdGljX2V4dF9kYXRhIGFuZCBwZ19zdGF0c19leHQgaW50cm9kdWNlZCBpbiB2MTIsIHByaW9y IHRvCiAgdGhhdCBuZHN0aW5jdCBhbmQgZGVwZGVuZGVuY2llcyBkYXRhICh0aGUgb25seSBraW5k IG9mIHN0YXRzIHRoYXQKICBleGlzdGVkIHdlcmUgZGlyZWN0bHkgb24gcGdfc3RhdGlzdGljX2V4 dC4KCiogRXh0ZW5kZWQgU3RhdGlzdGljcyB3ZXJlIGludHJvZHVjZWQgaW4gdjEwLCBzbyB0aGVy ZSBpcyBubyBzdXBwb3J0IGZvcgogIHByaW9yIHZlcnNpb25zIG5lY2Vzc2FyeS4KLS0tCiBzcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwLmggICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF9hcmNoaXZlci5jIHwgICAzICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j ICAgICAgICAgICAgfCAyNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgfCAgMjggKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI4 MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCmluZGV4IGQ5MDQx ZGFkNzIwLi5kZjcwOGU0Y2VkNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaApAQCAtNjgsNiArNjgsNyBAQCBl bnVtIF9kdW1wUHJlcGFyZWRRdWVyaWVzCiAJUFJFUFFVRVJZX0RVTVBDT01QT1NJVEVUWVBFLAog CVBSRVBRVUVSWV9EVU1QRE9NQUlOLAogCVBSRVBRVUVSWV9EVU1QRU5VTVRZUEUsCisJUFJFUFFV RVJZX0RVTVBFWFRTVEFUU1NUQVRTLAogCVBSRVBRVUVSWV9EVU1QRlVOQywKIAlQUkVQUVVFUllf RFVNUE9QUiwKIAlQUkVQUVVFUllfRFVNUFJBTkdFVFlQRSwKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf YXJjaGl2ZXIuYwppbmRleCBjODRiMDE3ZjIxYi4uYWI5Y2I3NWE4NmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTMwMDgsNyArMzAwOCw4IEBAIF90b2NFbnRyeVJlcXVp cmVkKFRvY0VudHJ5ICp0ZSwgdGVTZWN0aW9uIGN1clNlY3Rpb24sIEFyY2hpdmVIYW5kbGUgKkFI KQogCQlzdHJjbXAodGUtPmRlc2MsICJTRUFSQ0hQQVRIIikgPT0gMCkKIAkJcmV0dXJuIFJFUV9T UEVDSUFMOwogCi0JaWYgKHN0cmNtcCh0ZS0+ZGVzYywgIlNUQVRJU1RJQ1MgREFUQSIpID09IDAp CisJaWYgKChzdHJjbXAodGUtPmRlc2MsICJTVEFUSVNUSUNTIERBVEEiKSA9PSAwKSB8fAorCQko c3RyY21wKHRlLT5kZXNjLCAiRVhURU5ERUQgU1RBVElTVElDUyBEQVRBIikgPT0gMCkpCiAJewog CQlpZiAoIXJvcHQtPmR1bXBTdGF0aXN0aWNzKQogCQkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRl eCBhMDA5MThiYWNiNC4uOGM1ODUwZjllOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMzI0LDYgKzMyNCw3 IEBAIHN0YXRpYyB2b2lkIGR1bXBTZXF1ZW5jZURhdGEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFi bGVEYXRhSW5mbyAqdGRpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBJbmRleChBcmNoaXZlICpmb3V0 LCBjb25zdCBJbmR4SW5mbyAqaW5keGluZm8pOwogc3RhdGljIHZvaWQgZHVtcEluZGV4QXR0YWNo KEFyY2hpdmUgKmZvdXQsIGNvbnN0IEluZGV4QXR0YWNoSW5mbyAqYXR0YWNoaW5mbyk7CiBzdGF0 aWMgdm9pZCBkdW1wU3RhdGlzdGljc0V4dChBcmNoaXZlICpmb3V0LCBjb25zdCBTdGF0c0V4dElu Zm8gKnN0YXRzZXh0aW5mbyk7CitzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljc0V4dFN0YXRzKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IFN0YXRzRXh0SW5mbyAqc3RhdHNleHRpbmZvKTsKIHN0YXRpYyB2 b2lkIGR1bXBDb25zdHJhaW50KEFyY2hpdmUgKmZvdXQsIGNvbnN0IENvbnN0cmFpbnRJbmZvICpj b25pbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBUYWJsZUNvbnN0cmFpbnRDb21tZW50KEFyY2hpdmUg KmZvdXQsIGNvbnN0IENvbnN0cmFpbnRJbmZvICpjb25pbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBU U1BhcnNlcihBcmNoaXZlICpmb3V0LCBjb25zdCBUU1BhcnNlckluZm8gKnByc2luZm8pOwpAQCAt ODI1OCw2ICs4MjU5LDkgQEAgZ2V0RXh0ZW5kZWRTdGF0aXN0aWNzKEFyY2hpdmUgKmZvdXQpCiAK IAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBh YmxlU3RhdGlzdGljc09iamVjdCgmKHN0YXRzZXh0aW5mb1tpXSksIGZvdXQpOworCisJCWlmIChm b3V0LT5kb3B0LT5kdW1wU3RhdGlzdGljcykKKwkJCXN0YXRzZXh0aW5mb1tpXS5kb2JqLmNvbXBv bmVudHMgfD0gRFVNUF9DT01QT05FTlRfU1RBVElTVElDUzsKIAl9CiAKIAlQUWNsZWFyKHJlcyk7 CkBAIC0xMTcxMiw2ICsxMTcxNiw3IEBAIGR1bXBEdW1wYWJsZU9iamVjdChBcmNoaXZlICpmb3V0 LCBEdW1wYWJsZU9iamVjdCAqZG9iaikKIAkJCWJyZWFrOwogCQljYXNlIERPX1NUQVRTRVhUOgog CQkJZHVtcFN0YXRpc3RpY3NFeHQoZm91dCwgKGNvbnN0IFN0YXRzRXh0SW5mbyAqKSBkb2JqKTsK KwkJCWR1bXBTdGF0aXN0aWNzRXh0U3RhdHMoZm91dCwgKGNvbnN0IFN0YXRzRXh0SW5mbyAqKSBk b2JqKTsKIAkJCWJyZWFrOwogCQljYXNlIERPX1JFRlJFU0hfTUFUVklFVzoKIAkJCXJlZnJlc2hN YXRWaWV3RGF0YShmb3V0LCAoY29uc3QgVGFibGVEYXRhSW5mbyAqKSBkb2JqKTsKQEAgLTE4NTE0 LDYgKzE4NTE5LDI1MyBAQCBkdW1wU3RhdGlzdGljc0V4dChBcmNoaXZlICpmb3V0LCBjb25zdCBT dGF0c0V4dEluZm8gKnN0YXRzZXh0aW5mbykKIAlmcmVlKHFzdGF0c2V4dG5hbWUpOwogfQogCisv KgorICogZHVtcFN0YXRpc3RpY3NFeHRTdGF0cworICoJICB3cml0ZSBvdXQgdG8gZm91dCB0aGUg c3RhdHMgZm9yIGFuIGV4dGVuZGVkIHN0YXRpc3RpY3Mgb2JqZWN0CisgKi8KK3N0YXRpYyB2b2lk CitkdW1wU3RhdGlzdGljc0V4dFN0YXRzKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN0YXRzRXh0SW5m byAqc3RhdHNleHRpbmZvKQoreworCUR1bXBPcHRpb25zICpkb3B0ID0gZm91dC0+ZG9wdDsKKwlQ UUV4cEJ1ZmZlciBxdWVyeTsKKwlQR3Jlc3VsdCAgICpyZXM7CisJaW50CQkJbnN0YXRzOworCisJ LyogRG8gbm90aGluZyBpZiBub3QgZHVtcGluZyBzdGF0aXN0aWNzICovCisJaWYgKCFkb3B0LT5k dW1wU3RhdGlzdGljcykKKwkJcmV0dXJuOworCisJaWYgKCFmb3V0LT5pc19wcmVwYXJlZFtQUkVQ UVVFUllfRFVNUEVYVFNUQVRTU1RBVFNdKQorCXsKKwkJUFFFeHBCdWZmZXIgcHEgPSBjcmVhdGVQ UUV4cEJ1ZmZlcigpOworCisJCS8qCisJCSAqIFNldCB1cCBxdWVyeSBmb3IgY29uc3RyYWludC1z cGVjaWZpYyBkZXRhaWxzLgorCQkgKgorCQkgKiAxOSs6IHF1ZXJ5IHBnX3N0YXRzX2V4dCBhbmQg cGdfc3RhdHNfZXh0X2V4cHJzIGFzLWlzIDE1LTE4OiBxdWVyeQorCQkgKiBwZ19zdGF0c19leHQg dHJhbnNsYXRpbmcgdGhlIG5kaXN0aW5jdCBhbmQgZGVwZGVuZGVuY2llcywgMTQ6CisJCSAqIGlu aGVyaXRlZCBpcyBhbHdheXMgTlVMTCAxMi0xMzogbm8gcGdfc3RhdHNfZXh0X2V4cHJzIDEwLTEx OiBubworCQkgKiBwZ19zdGF0c19leHQsIGpvaW4gcGdfc3RhdGlzdGljX2V4dCBhbmQgcGdfbmFt ZXNwYWNlCisJCSAqLworCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBxLAorCQkJCQkJCSAiUFJF UEFSRSBnZXRFeHRTdGF0c1N0YXRzKHBnX2NhdGFsb2cubmFtZSwgcGdfY2F0YWxvZy5uYW1lKSBB U1xuIgorCQkJCQkJCSAiU0VMRUNUICIpOworCisJCS8qCisJCSAqIFZlcnNpb25zIDE1KyBoYXZl IGluaGVyaXRlZCBzdGF0cy4KKwkJICoKKwkJICogQ3JlYXRlIHRoaXMgY29sdW1uIGluIGFsbCB2 ZXJzaW9uIGJlY2F1c2Ugd2UgbmVlZCB0byBvcmRlciBieSBpdCBsYXRlci4KKwkJICovCisJCWlm IChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHBxLCAiZS5pbmhlcml0ZWQsICIpOworCQllbHNlCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihw cSwgImZhbHNlIEFTIGluaGVyaXRlZCwgIik7CisKKwkJLyoKKwkJICogVmVyc2lvbnMgPCAxOSB1 c2UgdGhlIG9sZCBuZGlzdGludGluY3QgYW5kIGRlcGRlbmRlbmNpZXMgZm9ybWF0cworCQkgKgor CQkgKiBUaGVzZSB0cmFuc2Zvcm1hdGlvbnMgbWF5IGxvb2sgc2NhcnksIGJ1dCBhbGwgd2UncmUg ZG9pbmcgaXMgdHJhbnNsYXRpbmcKKwkJICoKKwkJICogeyIzLCA0IjogMTEsICIzLCA2IjogMTEs ICI0LCA2IjogMTEsICIzLCA0LCA2IjogMTF9CisJCSAqCisJCSAqIHRvCisJCSAqCisJCSAqIFt7 Im5kaXN0aW5jdCI6IDExLCAiYXR0cmlidXRlcyI6IFszLDRdfSwKKwkJICogIHsibmRpc3RpbmN0 IjogMTEsICJhdHRyaWJ1dGVzIjogWzMsNl19LAorCQkgKiAgeyJuZGlzdGluY3QiOiAxMSwgImF0 dHJpYnV0ZXMiOiBbNCw2XX0sCisJCSAqICB7Im5kaXN0aW5jdCI6IDExLCAiYXR0cmlidXRlcyI6 IFszLDQsNl19XQorCQkgKgorCQkgKiBhbmQKKwkJICogeyIzID0+IDQiOiAxLjAwMDAwMCwgIjMg PT4gNiI6IDEuMDAwMDAwLCAiNCA9PiA2IjogMS4wMDAwMDAsCisJCSAqICAiMywgNCA9PiA2Ijog MS4wMDAwMDAsICIzLCA2ID0+IDQiOiAxLjAwMDAwMH0KKwkJICoKKwkJICogIHRvCisJCSAqCisJ CSAqIFt7ImRlZ3JlZSI6IDEuMDAwMDAwLCAiYXR0cmlidXRlcyI6IFszXSwgImRlcGVuZGVuY3ki OiA0fSwKKwkJICogIHsiZGVncmVlIjogMS4wMDAwMDAsICJhdHRyaWJ1dGVzIjogWzNdLCAiZGVw ZW5kZW5jeSI6IDZ9LAorCQkgKiAgeyJkZWdyZWUiOiAxLjAwMDAwMCwgImF0dHJpYnV0ZXMiOiBb NF0sICJkZXBlbmRlbmN5IjogNn0sCisJCSAqICB7ImRlZ3JlZSI6IDEuMDAwMDAwLCAiYXR0cmli dXRlcyI6IFszLDRdLCAiZGVwZW5kZW5jeSI6IDZ9LAorCQkgKiAgeyJkZWdyZWUiOiAxLjAwMDAw MCwgImF0dHJpYnV0ZXMiOiBbMyw2XSwgImRlcGVuZGVuY3kiOiA0fV0KKwkJICovCisJCWlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE5MDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBx LCAiZS5uX2Rpc3RpbmN0LCBlLmRlcGVuZGVuY2llcywgIik7CisJCWVsc2UKKwkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHBxLAorCQkJCQkJCQkgIiggIgorCQkJCQkJCQkgIlNFTEVDVCBqc29uX2Fn ZyggIgorCQkJCQkJCQkgIiAgICBqc29uX2J1aWxkX29iamVjdCggIgorCQkJCQkJCQkgIiAgICAg ICAgJ2F0dHJpYnV0ZXMnLCAiCisJCQkJCQkJCSAiICAgICAgICAgc3RyaW5nX3RvX2FycmF5KGt2 LmtleSwgJywgJyk6OmludGVnZXJbXSwgIgorCQkJCQkJCQkgIiAgICAgICAgJ25kaXN0aW5jdCcs ICIKKwkJCQkJCQkJICIgICAgICAgIGt2LnZhbHVlOjpiaWdpbnQgKSkgIgorCQkJCQkJCQkgIkZS T00ganNvbl9lYWNoX3RleHQoZS5uX2Rpc3RpbmN0Ojp0ZXh0Ojpqc29uKSBBUyBrdiIKKwkJCQkJ CQkJICIpIEFTIG5fZGlzdGluY3QsICIKKwkJCQkJCQkJICIoICIKKwkJCQkJCQkJICJTRUxFQ1Qg anNvbl9hZ2coICIKKwkJCQkJCQkJICIgICAganNvbl9idWlsZF9vYmplY3QoICIKKwkJCQkJCQkJ ICIgICAgICAgICdhdHRyaWJ1dGVzJywgIgorCQkJCQkJCQkgIiAgICAgICAgc3RyaW5nX3RvX2Fy cmF5KCAiCisJCQkJCQkJCSAiICAgICAgICAgICAgc3BsaXRfcGFydChrdi5rZXksICcgPT4gJywg MSksICIKKwkJCQkJCQkJICIgICAgICAgICAgICAnLCAnKTo6aW50ZWdlcltdLCAiCisJCQkJCQkJ CSAiICAgICAgICAnZGVwZW5kZW5jeScsICIKKwkJCQkJCQkJICIgICAgICAgIHNwbGl0X3BhcnQo a3Yua2V5LCAnID0+ICcsIDIpOjppbnRlZ2VyLCAiCisJCQkJCQkJCSAiICAgICAgICAnZGVncmVl JywgIgorCQkJCQkJCQkgIiAgICAgICAga3YudmFsdWU6OmRvdWJsZSBwcmVjaXNpb24gKSkgIgor CQkJCQkJCQkgIkZST00ganNvbl9lYWNoX3RleHQoZS5kZXBlbmRlbmNpZXM6OnRleHQ6Ompzb24p IEFTIGt2ICIKKwkJCQkJCQkJICIpIEFTIGRlcGVuZGVuY2llcywgIik7CisKKwkJLyogVmVyc2lv bnMgPCAxMiBkbyBub3QgaGF2ZSBNQ1YgKi8KKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0g MTMwMDAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocHEsCisJCQkJCQkJCSAiZS5tb3N0X2Nv bW1vbl92YWxzLCBlLm1vc3RfY29tbW9uX3ZhbF9udWxscywgIgorCQkJCQkJCQkgImUubW9zdF9j b21tb25fZnJlcXMsIGUubW9zdF9jb21tb25fYmFzZV9mcmVxcywgIik7CisJCWVsc2UKKwkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHBxLAorCQkJCQkJCQkgIk5VTEwgQVMgbW9zdF9jb21tb25fdmFs cywgTlVMTCBBUyBtb3N0X2NvbW1vbl92YWxfbnVsbHMsICIKKwkJCQkJCQkJICJOVUxMIEFTIG1v c3RfY29tbW9uX2ZyZXFzLCBOVUxMIEFTIG1vc3RfY29tbW9uX2Jhc2VfZnJlcXMsICIpOworCisJ CS8qIEV4cHJlc3Npb25zIHdlcmUgaW50cm9kdWNlZCBpbiB2MTQgKi8KKwkJaWYgKGZvdXQtPnJl bW90ZVZlcnNpb24gPj0gMTQwMDAwKQorCQl7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihwcSwK KwkJCQkJCQkJICIoICIKKwkJCQkJCQkJICJTRUxFQ1QgYXJyYXlfYWdnKCAiCisJCQkJCQkJCSAi ICAgIEFSUkFZW2VlLm51bGxfZnJhYzo6dGV4dCwgZWUuYXZnX3dpZHRoOjp0ZXh0LCAiCisJCQkJ CQkJCSAiICAgICAgICAgIGVlLm5fZGlzdGluY3Q6OnRleHQsIGVlLm1vc3RfY29tbW9uX3ZhbHM6 OnRleHQsICIKKwkJCQkJCQkJICIgICAgICAgICAgZWUubW9zdF9jb21tb25fZnJlcXM6OnRleHQs IGVlLmhpc3RvZ3JhbV9ib3VuZHM6OnRleHQsICIKKwkJCQkJCQkJICIgICAgICAgICAgZWUuY29y cmVsYXRpb246OnRleHQsIGVlLm1vc3RfY29tbW9uX2VsZW1zOjp0ZXh0LCAiCisJCQkJCQkJCSAi ICAgICAgICAgIGVlLm1vc3RfY29tbW9uX2VsZW1fZnJlcXM6OnRleHQsICIKKwkJCQkJCQkJICIg ICAgICAgICAgZWUuZWxlbV9jb3VudF9oaXN0b2dyYW06OnRleHRdKSAiCisJCQkJCQkJCSAiRlJP TSBwZ19zdGF0c19leHRfZXhwcnMgQVMgZWUgIgorCQkJCQkJCQkgIldIRVJFIGVlLnN0YXRpc3Rp Y3Nfc2NoZW1hbmFtZSA9ICQxICIKKwkJCQkJCQkJICJBTkQgZWUuc3RhdGlzdGljc19uYW1lID0g JDIgIik7CisKKwkJCS8qIEluaGVyaXRlZCBleHByZXNzaW9ucyBpbnRyb2R1Y2VkIGluIHYxNSAq LworCQkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCQkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHBxLCAiQU5EIGVlLmluaGVyaXRlZCA9IGUuaW5oZXJpdGVkIik7CisKKwkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHBxLCAiKSBBUyBleHBycyAiKTsKKwkJfQorCQllbHNlCisJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihwcSwgIk5VTEwgQVMgZXhwcnMgIik7CisKKwkJLyogcGdfc3Rh dHNfZXh0IGludHJvZHVjZWQgaW4gdjEyICovCisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDEyMDAwMCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBxLAorCQkJCQkJCQkgIkZST00gcGdf Y2F0YWxvZy5wZ19zdGF0c19leHQgQVMgZSAiCisJCQkJCQkJCSAiV0hFUkUgZS5zdGF0aXN0aWNz X3NjaGVtYW5hbWUgPSAkMSAiCisJCQkJCQkJCSAiQU5EIGUuc3RhdGlzdGljc19uYW1lID0gJDIg Iik7CisJCWVsc2UKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBxLAorCQkJCQkJCQkgIkZST00g KCAiCisJCQkJCQkJCSAiU0VMRUNUIHMuc3R4bmRpc3RpbmN0IEFTIG5fZGlzdGluY3QsICIKKwkJ CQkJCQkJICIgICAgcy5zdHhkZXBlbmRlbmNpZXMgQVMgZGVwZW5kZW5jaWVzICIKKwkJCQkJCQkJ ICJGUk9NIHBnX2NhdGFsb2cucGdfc3RhdGlzdGljc19leHQgQVMgcyAiCisJCQkJCQkJCSAiSk9J TiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBBUyBuICIKKwkJCQkJCQkJICJPTiBuLm9pZCA9IHMu c3R4bmFtZXNwYWNlICIKKwkJCQkJCQkJICJXSEVSRSBuLm5zcG5hbWUgPSAkMSAiCisJCQkJCQkJ CSAiQU5EIGUuc3R4bmFtZSA9ICQyICIKKwkJCQkJCQkJICIpIEFTIGUgIik7CisKKwkJLyogd2Ug YWx3YXlzIGhhdmUgYW4gaW5oZXJpdGVkIGNvbHVtbiwgYnV0IGl0IG1heSBiZSBhIGNvbnN0YW50 ICovCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHBxLCAiT1JERVIgQlkgaW5oZXJpdGVkIik7CisK KwkJRXhlY3V0ZVNxbFN0YXRlbWVudChmb3V0LCBwcS0+ZGF0YSk7CisKKwkJZm91dC0+aXNfcHJl cGFyZWRbUFJFUFFVRVJZX0RVTVBFWFRTVEFUU1NUQVRTXSA9IHRydWU7CisKKwkJZGVzdHJveVBR RXhwQnVmZmVyKHBxKTsKKwl9CisKKwlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIkVYRUNVVEUgZ2V0RXh0U3RhdHNTdGF0cygiKTsK KwlhcHBlbmRTdHJpbmdMaXRlcmFsQUgocXVlcnksIHN0YXRzZXh0aW5mby0+ZG9iai5uYW1lc3Bh Y2UtPmRvYmoubmFtZSwgZm91dCk7CisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICI6OnBn X2NhdGFsb2cubmFtZSwgIik7CisJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHF1ZXJ5LCBzdGF0c2V4 dGluZm8tPmRvYmoubmFtZSwgZm91dCk7CisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICI6 OnBnX2NhdGFsb2cubmFtZSkiKTsKKworCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVy eS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7 CisKKwluc3RhdHMgPSBQUW50dXBsZXMocmVzKTsKKworCWlmIChuc3RhdHMgPiAwKQorCXsKKwkJ UFFFeHBCdWZmZXIgb3V0ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCQlpbnQJCQlpX2luaGVy aXRlZCA9IFBRZm51bWJlcihyZXMsICJpbmhlcml0ZWQiKTsKKwkJaW50CQkJaV9uZGlzdGluY3Qg PSBQUWZudW1iZXIocmVzLCAibl9kaXN0aW5jdCIpOworCQlpbnQJCQlpX2RlcGVuZGVuY2llcyA9 IFBRZm51bWJlcihyZXMsICJkZXBlbmRlbmNpZXMiKTsKKwkJaW50CQkJaV9tY3YgPSBQUWZudW1i ZXIocmVzLCAibW9zdF9jb21tb25fdmFscyIpOworCQlpbnQJCQlpX21jdl9udWxscyA9IFBRZm51 bWJlcihyZXMsICJtb3N0X2NvbW1vbl92YWxfbnVsbHMiKTsKKwkJaW50CQkJaV9tY2YgPSBQUWZu dW1iZXIocmVzLCAibW9zdF9jb21tb25fZnJlcXMiKTsKKwkJaW50CQkJaV9tY2JmID0gUFFmbnVt YmVyKHJlcywgIm1vc3RfY29tbW9uX2Jhc2VfZnJlcXMiKTsKKwkJaW50CQkJaV9leHBycyA9IFBR Zm51bWJlcihyZXMsICJleHBycyIpOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbnN0YXRzOyBp KyspCisJCXsKKwkJCWlmIChQUWdldGlzbnVsbChyZXMsIGksIGlfaW5oZXJpdGVkKSkKKwkJCQlw Z19mYXRhbCgiaW5oZXJpdGVkIGNhbm5vdCBiZSBOVUxMIik7CisKKwkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKG91dCwKKwkJCQkJCQkJICJTRUxFQ1QgKiBGUk9NIHBnX2NhdGFsb2cucGdfcmVzdG9y ZV9leHRlbmRlZF9zdGF0cyhcbiIpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIob3V0LCAiXHQndmVy c2lvbicsICclZCc6OmludGVnZXIsXG4iLAorCQkJCQkJCSAgZm91dC0+cmVtb3RlVmVyc2lvbik7 CisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihvdXQsICJcdCdzdGF0aXN0aWNzX3NjaGVtYW5hbWUn LCAiKTsKKwkJCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChvdXQsIHN0YXRzZXh0aW5mby0+ZG9iai5u YW1lc3BhY2UtPmRvYmoubmFtZSwgZm91dCk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihvdXQs ICIsXG5cdCdzdGF0aXN0aWNzX25hbWUnLCAiKTsKKwkJCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChv dXQsIHN0YXRzZXh0aW5mby0+ZG9iai5uYW1lLCBmb3V0KTsKKwkJCWFwcGVuZE5hbWVkQXJndW1l bnQob3V0LCBmb3V0LCAiaW5oZXJpdGVkIiwgImJvb2xlYW4iLAorCQkJCQkJCQlQUWdldHZhbHVl KHJlcywgaSwgaV9pbmhlcml0ZWQpKTsKKworCQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIGlf bmRpc3RpbmN0KSkKKwkJCQlhcHBlbmROYW1lZEFyZ3VtZW50KG91dCwgZm91dCwgIm5fZGlzdGlu Y3QiLCAicGdfbmRpc3RpbmN0IiwKKwkJCQkJCQkJCVBRZ2V0dmFsdWUocmVzLCBpLCBpX25kaXN0 aW5jdCkpOworCisJCQlpZiAoIVBRZ2V0aXNudWxsKHJlcywgaSwgaV9kZXBlbmRlbmNpZXMpKQor CQkJCWFwcGVuZE5hbWVkQXJndW1lbnQob3V0LCBmb3V0LCAiZGVwZW5kZW5jaWVzIiwgInBnX2Rl cGVuZGVuY2llcyIsCisJCQkJCQkJCQlQUWdldHZhbHVlKHJlcywgaSwgaV9kZXBlbmRlbmNpZXMp KTsKKworCQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIGlfbWN2KSkKKwkJCQlhcHBlbmROYW1l ZEFyZ3VtZW50KG91dCwgZm91dCwgIm1vc3RfY29tbW9uX3ZhbHMiLCAidGV4dFtdIiwKKwkJCQkJ CQkJCVBRZ2V0dmFsdWUocmVzLCBpLCBpX21jdikpOworCisJCQlpZiAoIVBRZ2V0aXNudWxsKHJl cywgaSwgaV9tY3ZfbnVsbHMpKQorCQkJCWFwcGVuZE5hbWVkQXJndW1lbnQob3V0LCBmb3V0LCAi bW9zdF9jb21tb25fdmFsX251bGxzIiwgImJvb2xlYW5bXSIsCisJCQkJCQkJCQlQUWdldHZhbHVl KHJlcywgaSwgaV9tY3ZfbnVsbHMpKTsKKworCQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIGlf bWNmKSkKKwkJCQlhcHBlbmROYW1lZEFyZ3VtZW50KG91dCwgZm91dCwgIm1vc3RfY29tbW9uX2Zy ZXFzIiwgImRvdWJsZSBwcmVjaXNpb25bXSIsCisJCQkJCQkJCQlQUWdldHZhbHVlKHJlcywgaSwg aV9tY2YpKTsKKworCQkJaWYgKCFQUWdldGlzbnVsbChyZXMsIGksIGlfbWNiZikpCisJCQkJYXBw ZW5kTmFtZWRBcmd1bWVudChvdXQsIGZvdXQsICJtb3N0X2NvbW1vbl9iYXNlX2ZyZXFzIiwgImRv dWJsZSBwcmVjaXNpb25bXSIsCisJCQkJCQkJCQlQUWdldHZhbHVlKHJlcywgaSwgaV9tY2JmKSk7 CisKKwkJCWlmICghUFFnZXRpc251bGwocmVzLCBpLCBpX2V4cHJzKSkKKwkJCQlhcHBlbmROYW1l ZEFyZ3VtZW50KG91dCwgZm91dCwgImV4cHJzIiwgInRleHRbXSIsCisJCQkJCQkJCQlQUWdldHZh bHVlKHJlcywgaSwgaV9leHBycykpOworCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihvdXQsICJc bik7XG4iKTsKKwkJfQorCisJCUFyY2hpdmVFbnRyeShmb3V0LCBuaWxDYXRhbG9nSWQsIGNyZWF0 ZUR1bXBJZCgpLAorCQkJCQkgQVJDSElWRV9PUFRTKC50YWcgPSBzdGF0c2V4dGluZm8tPmRvYmou bmFtZSwKKwkJCQkJCQkJICAubmFtZXNwYWNlID0gc3RhdHNleHRpbmZvLT5kb2JqLm5hbWVzcGFj ZS0+ZG9iai5uYW1lLAorCQkJCQkJCQkgIC5vd25lciA9IHN0YXRzZXh0aW5mby0+cm9sbmFtZSwK KwkJCQkJCQkJICAuZGVzY3JpcHRpb24gPSAiRVhURU5ERUQgU1RBVElTVElDUyBEQVRBIiwKKwkJ CQkJCQkJICAuc2VjdGlvbiA9IFNFQ1RJT05fUE9TVF9EQVRBLAorCQkJCQkJCQkgIC5jcmVhdGVT dG10ID0gb3V0LT5kYXRhLAorCQkJCQkJCQkgIC5kZXBzID0gJnN0YXRzZXh0aW5mby0+ZG9iai5k dW1wSWQsCisJCQkJCQkJCSAgLm5EZXBzID0gMSkpOworCQlkZXN0cm95UFFFeHBCdWZmZXIob3V0 KTsKKwl9CisJUFFjbGVhcihyZXMpOworfQorCiAvKgogICogZHVtcENvbnN0cmFpbnQKICAqCSAg d3JpdGUgb3V0IHRvIGZvdXQgYSB1c2VyLWRlZmluZWQgY29uc3RyYWludApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbAppbmRleCA0NDVhNTQxYWJmNi4uNjY4MTI2NTk3NGYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsCkBAIC00NzcyLDYgKzQ3NzIsMzQgQEAgbXkgJXRlc3RzID0gKAogCQl9LAog CX0sCiAKKwkjCisJIyBFWFRFTkRFRCBzdGF0cyB3aWxsIGVuZCB1cCBpbiBTRUNUSU9OX1BPU1Rf REFUQS4KKwkjCisJJ2V4dGVuZGVkX3N0YXRpc3RpY3NfaW1wb3J0JyA9PiB7CisJCWNyZWF0ZV9z cWwgPT4gJworCQkJQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC5oYXNfZXh0X3N0YXRzCisJCQlBUyBT RUxFQ1QgZy5nIEFTIHgsIGcuZyAvIDIgQVMgeSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkg QVMgZyhnKTsKKwkJCUNSRUFURSBTVEFUSVNUSUNTIGR1bXBfdGVzdC5lczEgT04geCwgKHkgJSAy KSBGUk9NIGR1bXBfdGVzdC5oYXNfZXh0X3N0YXRzOworCQkJQU5BTFlaRSBkdW1wX3Rlc3QuaGFz X2V4dF9zdGF0czsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFTRUxFQ1QgKiBGUk9NIHBnX2Nh dGFsb2cucGdfcmVzdG9yZV9leHRlbmRlZF9zdGF0cyhcRVxzKy94bSwKKwkJbGlrZSA9PiB7CisJ CQklZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVucywKKwkJCW5vX2RhdGFfbm9f c2NoZW1hID0+IDEsCisJCQlub19zY2hlbWEgPT4gMSwKKwkJCXNlY3Rpb25fcG9zdF9kYXRhID0+ IDEsCisJCQlzdGF0aXN0aWNzX29ubHkgPT4gMSwKKwkJCXNjaGVtYV9vbmx5X3dpdGhfc3RhdGlz dGljcyA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2No ZW1hID0+IDEsCisJCQlub19zdGF0aXN0aWNzID0+IDEsCisJCQlvbmx5X2R1bXBfbWVhc3VyZW1l bnQgPT4gMSwKKwkJCXNjaGVtYV9vbmx5ID0+IDEsCisJCX0sCisJfSwKKwogCSMKIAkjIFdoaWxl IGF0dHJpYnV0ZSBzdGF0cyAoYWthIHBnX3N0YXRpc3RpYyBzdGF0cykgb25seSBhcHBlYXIgZm9y IHRhYmxlcwogCSMgdGhhdCBoYXZlIGJlZW4gYW5hbHl6ZWQsIGFsbCB0YWJsZXMgd2lsbCBoYXZl IHJlbGF0aW9uIHN0YXRzIGJlY2F1c2UKLS0gCjIuNTEuMQoK --00000000000009c16c0643879075--