Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1un46c-002NSx-LK for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Aug 2025 23:45:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1un45b-002z4R-Lo for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Aug 2025 23:44:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1un45b-002z3j-76 for pgsql-hackers@lists.postgresql.org; Fri, 15 Aug 2025 23:44:03 +0000 Received: from mail-il1-x12e.google.com ([2607:f8b0:4864:20::12e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1un45Y-0004wk-3D for pgsql-hackers@postgresql.org; Fri, 15 Aug 2025 23:44:03 +0000 Received: by mail-il1-x12e.google.com with SMTP id e9e14a558f8ab-3e570042988so22715485ab.2 for ; Fri, 15 Aug 2025 16:44:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755301438; x=1755906238; darn=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=mdpYRqRZ6h3YvHGQMfYzy1dcF4aYJ5O3/MPwd05MnG8=; b=Ml7UNUm9mNvPNFcQvDiaKPBqd9mdwqsG6+wkp7Art9Wx6m885fdkyeyf1PwEC6XXAY rZzakEs3ZmosZRFNDkfgu+ROPTasQ/2ElxHWsMZzfcyhMxDzZV3cRcTUgcrF22Rm99AX gYM3k4e8fJMecUH1ImqBHNJ4v7XAfFp/mg+3bRko1iWz2e1ToAZIZ5qZNabxFeKFtaFY YaEvcAB+WqQQ1HIbrAZKizHCf69Zi7FJ5ug1aeWc7BCZC8puLuZBhpnSNw9mT2nZS7rP nvyA1tI5U/16FgJINrK9SYZOq7GFoV2xvO8QOY3f19PiVNDb7IXUdqp3/alOVXnZ8kJv SHbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755301438; x=1755906238; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=mdpYRqRZ6h3YvHGQMfYzy1dcF4aYJ5O3/MPwd05MnG8=; b=cTsoipC0TKMBKsaay4Vr5Q9W5QpkyeUAWf4/LvkJh+43mrZpuopP+9o4lrtUuZOOKr UnjXEfrtSaSAAyGh8MRjC3QS68OiQKkFXNc73lEJKPe4Uo3fi4kG2Tla6Du5FACUN5aL JuK+ufVqES11vVlZZJOgt+Q/x1KUnXLlYSorEM8LBiYM8MMlLOwcVzajuVaUzNdexg8c jeCm6JfYCCYVZuJrF9RrHLjpflMVCJhWSB8ldqFVyL9ql4tPeA3SiZIIV57IaAMNZoaX ldzFUr7inFCp3DhHovn+X0p8Zu+l9Mw0NEhwXPLBb1+Syv7aSx+e27wwnS32ymXIiifU OC+w== X-Forwarded-Encrypted: i=1; AJvYcCWyhRN+ND7HAgzagPzx9zAIJb++lC4IMZL/fb7edFqVmE1ZPMyB8xSMECKr2ny9FAr4+YkB6vEeB1LIytRD@postgresql.org X-Gm-Message-State: AOJu0YxZWXUAJQINfziqBvIvZxxf4oZk/htie9bMEY7ULgf/3Cs4VD9O +u9mEnBIFHo9CQTNJgFTOljWHGsuW4ZHpQdcx4mL6ZvyGvguj6F6u7DAIB7GvCVFA2c4t8ZLhMN bG4zUMfu9XtgXMBQHd1Xb1J61l45X3Cs= X-Gm-Gg: ASbGnctB9M+8HUPVZ34/L9QWTqust0bDHKf1OZvYwbkRxxhL1ZaE4zF3QC9VgQCMQ+b 04tLlsgPwx8OLMEhWYAnjKAq1T4mIGxEfG5CZZDDVcZ3OoDEvy4cS1zwUQ3APWPUcvCsdmodKZc DK/hpkh2RJUA8kpFjHYl6aGrsQiiqmho+HKpT+oMp//7JGvQ186NwduK0P8DliAJuqreMu3XoPT eNC2q0= X-Google-Smtp-Source: AGHT+IG8ML7ZaBwChtFWBEo1rAOutJ7Kr4eQUb/RJaiXwERlNO/J+Wx6EdQ9GyJp7npmHcogYEtyS2+QKXHrEqGDowk= X-Received: by 2002:a05:6e02:1a62:b0:3e5:5ac7:d8e2 with SMTP id e9e14a558f8ab-3e58390092fmr17956885ab.17.1755301437978; Fri, 15 Aug 2025 16:43:57 -0700 (PDT) MIME-Version: 1.0 References: <235381750793454@mail.yandex.ru> In-Reply-To: <235381750793454@mail.yandex.ru> From: Andrew Jackson Date: Fri, 15 Aug 2025 18:43:20 -0500 X-Gm-Features: Ac12FXwCj4-TaHywrLr9L6WrH074sW4aXKE26s9w0TQzHlCUnWv7bfuynP-lgWo Message-ID: Subject: Re: Add Option To Check All Addresses For Matching target_session_attr To: Navrotskiy Artem Cc: Andrey Borodin , Vladimir Sitnikov , Dave Page , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000af6509063c6ff6a2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000af6509063c6ff6a2 Content-Type: text/plain; charset="UTF-8" Hi, Attached is the rebased patch. The use case I am targeting is exactly what Artem describes above. Happy to make any necessary changes. Thanks, Andrew Jackson --000000000000af6509063c6ff6a2 Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0001-Add-option-to-check-all-addrs-for-target_session.patch" Content-Disposition: attachment; filename="v7-0001-Add-option-to-check-all-addrs-for-target_session.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_medh2gov0 RnJvbSBiMDU1OTIyNGJkYjRmYzhkNzIzMjNiMjVlZTA2NTkxM2MwMTEwY2ZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21tYW5kZXJLZXluZXMgPGFuZHJld2phY2tzb245NDdAZ21h aWwuY29tYT4KRGF0ZTogU2F0LCAxNyBNYXkgMjAyNSAwODoyOTowMSAtMDUwMApTdWJqZWN0OiBb UEFUQ0hdIEFkZCBvcHRpb24gdG8gY2hlY2sgYWxsIGFkZHJzIGZvciB0YXJnZXRfc2Vzc2lvbi4K ClRoZSBjdXJyZW50IGJlaGF2aW91ciBvZiBsaWJwcSB3aXRoIHJlZ2FyZCB0byBzZWFyY2hpbmcK Zm9yIGEgbWF0Y2hpbmcgdGFyZ2V0X3Nlc3Npb25fYXR0cnMgaW4gYSBsaXN0IG9mIGFkZHJzIGlz CnRoYXQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IGNvbm5lY3RpbmcgdG8gYSBzZXJ2ZXIgaWYgdGhlIHNl cnZlcnMKc2Vzc2lvbl9hdHRyIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1ZXN0IHRhcmdldF9zZXNz aW9uX2F0dHJzCm5vIGZ1dGhlciBhZGRyZXNzIGlzIGNvbnNpZGVyZWQuIFRoaXMgYmVoYXZpb3Vy IGlzIGV4dHJlbWVseQppbmNvbnZlbmllbnQgaW4gZW52aXJvbm1lbnRzIHdoZXJlIHRoZSB1c2Vy IGlzIGF0dGVtcHRpbmcgdG8KaW1wbGVtZW50IGEgaGlnaCBhdmFpbGFiaWxpdHkgc2V0dXAgd2l0 aG91dCBoYXZpbmcgdG8gbW9kaWZ5CkROUyByZWNvcmRzIG9yIGEgcHJveHkgc2VydmVyIGNvbmZp Zy4KClRoaXMgUFIgYWRkcyBhIGNsaWVudCBzaWRlIG9wdGlvbiBjYWxsZWQgY2hlY2tfYWxsX2Fk ZHJzLgpXaGVuIHNldCB0byAxIHRoaXMgb3B0aW9uIHdpbGwgdGVsbCBsaWJwcSB0byBjb250aW51 ZSBjaGVja2luZwphbnkgcmVtYWluaW5nIGFkZHJlc3NlcyBldmVuIGlmIHRoZXJlIHdhcyBhIHRh cmdldF9zZXNzaW9uX2F0dHJzCm1pc21hdGNoIG9uIG9uZSBvZiB0aGVtLgoKQXV0aG9yOiBBbmRy ZXcgSmFja3NvbgpSZXZpZXdlZC1ieTogQW5kcmV5IEJvcm9kaW4KRGlzY3Vzc2lvbjogaHR0cHM6 Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBS0s1QmtFU1NjNjlzcDJUaVRX SHZ2T0hDVWV5MHJEV1hTclI5cGlueVJxeWZhbVVZZyU0MG1haWwuZ21haWwuY29tCi0tLQogZG9j L3NyYy9zZ21sL2xpYnBxLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwgIDMzICsrKysrCiBz cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgICAgICAgICAgICAgfCAgMjUgKystLQog c3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggICAgICAgICAgICAgIHwgICAxICsKIC4u Li9saWJwcS90LzAwN190YXJnZXRfc2Vzc2lvbl9hdHRyX2Rucy5wbCAgICB8IDEyOSArKysrKysr KysrKysrKysrKysKIC4uLi90LzAwOF9sb2FkX2JhbGFuY2VfZG5zX2NoZWNrX2FsbF9hZGRycy5w bCB8IDEyOCArKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAzMDYgaW5zZXJ0aW9u cygrKSwgMTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2ludGVyZmFjZXMv bGlicHEvdC8wMDdfdGFyZ2V0X3Nlc3Npb25fYXR0cl9kbnMucGwKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvaW50ZXJmYWNlcy9saWJwcS90LzAwOF9sb2FkX2JhbGFuY2VfZG5zX2NoZWNrX2FsbF9h ZGRycy5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sIGIvZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwKaW5kZXggNWJmNTlhMTk4NS4uZmYzZGRkZGQ2MyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKQEAg LTI1NjgsNiArMjU2OCwzOSBAQCBwb3N0Z3Jlc3FsOi8vJTJGdmFyJTJGbGliJTJGcG9zdGdyZXNx bC9kYm5hbWUKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAg IDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLWNvbm5lY3QtY2hlY2stYWxsLWFkZHJzIiB4cmVmbGFi ZWw9ImNoZWNrX2FsbF9hZGRycyI+CisgICAgICA8dGVybT48bGl0ZXJhbD5jaGVja19hbGxfYWRk cnM8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAg ICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBhbGwgYWRkcmVzc2VzIHdpdGhpbiBhIGhvc3Ru YW1lIGFyZSBjaGVja2VkIHdoZW4gdHJ5aW5nIHRvIG1ha2UgYSBjb25uZWN0aW9uCisgICAgICAg IHdoZW4gYXR0ZW1wdGluZyB0byBmaW5kIGEgY29ubmVjdGlvbiB3aXRoIGEgbWF0Y2hpbmcgPHhy ZWYgbGlua2VuZD0ibGlicHEtY29ubmVjdC10YXJnZXQtc2Vzc2lvbi1hdHRycyIvPi4KKworICAg ICAgICBUaGVyZSBhcmUgdHdvIG1vZGVzOgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAg ICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dGVybT48bGl0ZXJhbD4wPC9saXRlcmFsPiAo ZGVmYXVsdCk8L3Rlcm0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICA8cGFyYT4K KyAgICAgICAgICAgIElmIGEgc3VjY2Vzc2Z1bCBjb25uZWN0aW9uIGlzIG1hZGUgYW5kIHRoYXQg Y29ubmVjdGlvbiBpcyBmb3VuZCB0byBoYXZlIGEKKyAgICAgICAgICAgIG1pc21hdGNoaW5nIDx4 cmVmIGxpbmtlbmQ9ImxpYnBxLWNvbm5lY3QtdGFyZ2V0LXNlc3Npb24tYXR0cnMiLz4gZG8gbm90 IGNoZWNrCisgICAgICAgICAgICBhbnkgYWRkaXRpb25hbCBhZGRyZXNzZXMgYW5kIG1vdmUgb250 byB0aGUgbmV4dCBob3N0IGlmIG9uZSB3YXMgcHJvdmlkZWQuCisgICAgICAgICAgIDwvcGFyYT4K KyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPjE8L2xpdGVyYWw+PC90 ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAg ICBJZiBhIHN1Y2Nlc3NmdWwgY29ubmVjdGlvbiBpcyBtYWRlIGFuZCB0aGF0IGNvbm5lY3Rpb24g aXMgZm91bmQgdG8gaGF2ZSBhCisgICAgICAgICAgICBtaXNtYXRjaGluZyA8eHJlZiBsaW5rZW5k PSJsaWJwcS1jb25uZWN0LXRhcmdldC1zZXNzaW9uLWF0dHJzIi8+IHByb2NlZWQKKyAgICAgICAg ICAgIHRvIGNoZWNrIGFueSBhZGRpdGlvbmFsIGFkZHJlc3Nlcy4KKyAgICAgICAgICAgPC9wYXJh PgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAg ICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAg ICAgPC92YXJsaXN0ZW50cnk+CiAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICA8L3BhcmE+CiAgIDwv c2VjdDI+CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9z cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKaW5kZXggYTNkMTI5MzFmZi4uYTAwNzc2 MTExNiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCisrKyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwpAQCAtMzkzLDYgKzM5MywxMCBAQCBz dGF0aWMgY29uc3QgaW50ZXJuYWxQUWNvbm5pbmZvT3B0aW9uIFBRY29ubmluZm9PcHRpb25zW10g PSB7CiAKIAl7InNjcmFtX3NlcnZlcl9rZXkiLCBOVUxMLCBOVUxMLCBOVUxMLCAiU0NSQU0tU2Vy dmVyLUtleSIsICJEIiwgU0NSQU1fTUFYX0tFWV9MRU4gKiAyLAogCW9mZnNldG9mKHN0cnVjdCBw Z19jb25uLCBzY3JhbV9zZXJ2ZXJfa2V5KX0sCisJeyJjaGVja19hbGxfYWRkcnMiLCAiUEdDSEVD S0FMTEFERFJTIiwKKwkJRGVmYXVsdExvYWRCYWxhbmNlSG9zdHMsIE5VTEwsCisJCSJDaGVjay1B bGwtQWRkcnMiLCAiIiwgMSwKKwlvZmZzZXRvZihzdHJ1Y3QgcGdfY29ubiwgY2hlY2tfYWxsX2Fk ZHJzKX0sCiAKIAkvKiBPQXV0aCB2MiAqLwogCXsib2F1dGhfaXNzdWVyIiwgTlVMTCwgTlVMTCwg TlVMTCwKQEAgLTQ0MzQsMTEgKzQ0MzgsMTEgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3aWxs IGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJCQljb25uLT5zdGF0dXMgPSBD T05ORUNUSU9OX09LOwogCQkJCQkJc2VuZFRlcm1pbmF0ZUNvbm4oY29ubik7CiAKLQkJCQkJCS8q Ci0JCQkJCQkgKiBUcnkgbmV4dCBob3N0IGlmIGFueSwgYnV0IHdlIGRvbid0IHdhbnQgdG8gY29u c2lkZXIKLQkJCQkJCSAqIGFkZGl0aW9uYWwgYWRkcmVzc2VzIGZvciB0aGlzIGhvc3QuCi0JCQkJ CQkgKi8KLQkJCQkJCWNvbm4tPnRyeV9uZXh0X2hvc3QgPSB0cnVlOworCQkJCQkJaWYgKHN0cmNt cChjb25uLT5jaGVja19hbGxfYWRkcnMsICIxIikgPT0gMCkKKwkJCQkJCQljb25uLT50cnlfbmV4 dF9hZGRyID0gdHJ1ZTsKKwkJCQkJCWVsc2UKKwkJCQkJCQljb25uLT50cnlfbmV4dF9ob3N0ID0g dHJ1ZTsKKwogCQkJCQkJZ290byBrZWVwX2dvaW5nOwogCQkJCQl9CiAJCQkJfQpAQCAtNDQ4OSwx MSArNDQ5MywxMSBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhl cmUgdW50aWwgdGhlcmUgaXMKIAkJCQkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fT0s7CiAJ CQkJCQlzZW5kVGVybWluYXRlQ29ubihjb25uKTsKIAotCQkJCQkJLyoKLQkJCQkJCSAqIFRyeSBu ZXh0IGhvc3QgaWYgYW55LCBidXQgd2UgZG9uJ3Qgd2FudCB0byBjb25zaWRlcgotCQkJCQkJICog YWRkaXRpb25hbCBhZGRyZXNzZXMgZm9yIHRoaXMgaG9zdC4KLQkJCQkJCSAqLwotCQkJCQkJY29u bi0+dHJ5X25leHRfaG9zdCA9IHRydWU7CisJCQkJCQlpZiAoc3RyY21wKGNvbm4tPmNoZWNrX2Fs bF9hZGRycywgIjEiKSA9PSAwKQorCQkJCQkJCWNvbm4tPnRyeV9uZXh0X2FkZHIgPSB0cnVlOwor CQkJCQkJZWxzZQorCQkJCQkJCWNvbm4tPnRyeV9uZXh0X2hvc3QgPSB0cnVlOworCiAJCQkJCQln b3RvIGtlZXBfZ29pbmc7CiAJCQkJCX0KIAkJCQl9CkBAIC01MTI3LDYgKzUxMzEsNyBAQCBmcmVl UEdjb25uKFBHY29ubiAqY29ubikKIAlmcmVlKGNvbm4tPmluQnVmZmVyKTsKIAlmcmVlKGNvbm4t Pm91dEJ1ZmZlcik7CiAJZnJlZShjb25uLT5yb3dCdWYpOworCWZyZWUoY29ubi0+Y2hlY2tfYWxs X2FkZHJzKTsKIAl0ZXJtUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSk7CiAJdGVybVBR RXhwQnVmZmVyKCZjb25uLT53b3JrQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFj ZXMvbGlicHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaApp bmRleCBhNzAxYzI1MDM4Li45OTllYjNjZjcxIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9saWJwcS1pbnQuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaApA QCAtNDMwLDYgKzQzMCw3IEBAIHN0cnVjdCBwZ19jb25uCiAJY2hhcgkgICAqc2NyYW1fY2xpZW50 X2tleTsJLyogYmFzZTY0LWVuY29kZWQgU0NSQU0gY2xpZW50IGtleSAqLwogCWNoYXIJICAgKnNj cmFtX3NlcnZlcl9rZXk7CS8qIGJhc2U2NC1lbmNvZGVkIFNDUkFNIHNlcnZlciBrZXkgKi8KIAlj aGFyCSAgICpzc2xrZXlsb2dmaWxlOwkvKiB3aGVyZSBzaG91bGQgdGhlIGNsaWVudCB3cml0ZSBz c2wga2V5bG9ncyAqLworCWNoYXIgICAgICAgKmNoZWNrX2FsbF9hZGRyczsgIC8qIHdoZXRoZXIg dG8gY2hlY2sgYWxsIGlwcyB3aXRoaW4gYSBob3N0IG9yIHRlcm1pbmF0ZSBvbiBmYWlsdXJlICov CiAKIAlib29sCQljYW5jZWxSZXF1ZXN0OwkvKiB0cnVlIGlmIHRoaXMgY29ubmVjdGlvbiBpcyB1 c2VkIHRvIHNlbmQgYQogCQkJCQkJCQkgKiBjYW5jZWwgcmVxdWVzdCwgaW5zdGVhZCBvZiBiZWlu ZyBhIG5vcm1hbApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvdC8wMDdfdGFyZ2V0 X3Nlc3Npb25fYXR0cl9kbnMucGwgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS90LzAwN190YXJnZXRf c2Vzc2lvbl9hdHRyX2Rucy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li45MTRmNmM0NzJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvdC8w MDdfdGFyZ2V0X3Nlc3Npb25fYXR0cl9kbnMucGwKQEAgLTAsMCArMSwxMjkgQEAKKworIyBDb3B5 cmlnaHQgKGMpIDIwMjMtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgQ29uZmlnOwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXI7Cit1c2UgVGVzdDo6TW9yZTsKKworaWYgKCEkRU5We1BHX1RFU1RfRVhUUkF9IHx8ICRFTlZ7 UEdfVEVTVF9FWFRSQX0gIX4gL1xibG9hZF9iYWxhbmNlXGIvKQoreworCXBsYW4gc2tpcF9hbGwg PT4KKwkgICdQb3RlbnRpYWxseSB1bnNhZmUgdGVzdCBsb2FkX2JhbGFuY2Ugbm90IGVuYWJsZWQg aW4gUEdfVEVTVF9FWFRSQSc7Cit9CisKKyMgQ2x1c3RlciBzZXR1cCB3aGljaCBpcyBzaGFyZWQg Zm9yIHRlc3RpbmcgYm90aCBsb2FkIGJhbGFuY2luZyBtZXRob2RzCitteSAkY2FuX2JpbmRfdG9f MTI3XzBfMF8yID0KKyAgJENvbmZpZ3tvc25hbWV9IGVxICdsaW51eCcgfHwgJFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp3aW5kb3dzX29zOworCisjIENoZWNrcyBmb3IgdGhlIHJlcXVpcmVtZW50 cyBmb3IgdGVzdGluZyBsb2FkIGJhbGFuY2luZyBtZXRob2QgMgoraWYgKCEkY2FuX2JpbmRfdG9f MTI3XzBfMF8yKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ2xvYWRfYmFsYW5jZSB0ZXN0IG9ubHkg c3VwcG9ydGVkIG9uIExpbnV4IGFuZCBXaW5kb3dzJzsKK30KKworbXkgJGhvc3RzX3BhdGg7Citp ZiAoJHdpbmRvd3Nfb3MpCit7CisJJGhvc3RzX3BhdGggPSAnYzpcV2luZG93c1xTeXN0ZW0zMlxE cml2ZXJzXGV0Y1xob3N0cyc7Cit9CitlbHNlCit7CisJJGhvc3RzX3BhdGggPSAnL2V0Yy9ob3N0 cyc7Cit9CisKK215ICRob3N0c19jb250ZW50ID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnNs dXJwX2ZpbGUoJGhvc3RzX3BhdGgpOworCitteSAkaG9zdHNfY291bnQgPSAoKSA9CisgICRob3N0 c19jb250ZW50ID1+IC8xMjdcLjBcLjBcLlsxLTNdIHBnLWxvYWRiYWxhbmNldGVzdC9nOworaWYg KCRob3N0c19jb3VudCAhPSAzKQoreworCSMgSG9zdCBmaWxlIGlzIG5vdCBwcmVwYXJlZCBmb3Ig dGhpcyB0ZXN0CisJcGxhbiBza2lwX2FsbCA9PiAiaG9zdHMgZmlsZSB3YXMgbm90IHByZXBhcmVk IGZvciBETlMgbG9hZCBiYWxhbmNlIHRlc3QiOworfQorCiskUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3Rlcjo6dXNlX3RjcCA9IDE7CiskUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlcjo6dGVzdF9wZ2hv c3QgPSAnMTI3LjAuMC4xJzsKK215ICRwb3J0ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlcjo6 Z2V0X2ZyZWVfcG9ydCgpOworCitteSAkbm9kZV9wcmltYXJ5MSA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygncHJpbWFyeTEnLCBwb3J0ID0+ICRwb3J0KTsKKyRub2RlX3ByaW1hcnkx LT5pbml0KGhhc19hcmNoaXZpbmcgPT4gMSwgYWxsb3dzX3N0cmVhbWluZyA9PiAxKTsKKworIyBT dGFydCBpdAorJG5vZGVfcHJpbWFyeTEtPnN0YXJ0OworCisjIFRha2UgYmFja3VwIGZyb20gd2hp Y2ggYWxsIG9wZXJhdGlvbnMgd2lsbCBiZSBydW4KKyRub2RlX3ByaW1hcnkxLT5iYWNrdXAoJ215 X2JhY2t1cCcpOworCitteSAkbm9kZV9zdGFuZGJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdzdGFuZGJ5JywgcG9ydCA9PiAkcG9ydCwgb3duX2hvc3QgPT4gMSk7Ciskbm9kZV9z dGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnkxLCAnbXlfYmFja3VwJywKKwlo YXNfcmVzdG9yaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+c3RhcnQoKTsKKworbXkgJG5vZGVf cHJpbWFyeTIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUxJywgcG9ydCA9 PiAkcG9ydCwgb3duX2hvc3QgPT4gMSk7Ciskbm9kZV9wcmltYXJ5MiAtPmluaXQoKTsKKyRub2Rl X3ByaW1hcnkyIC0+c3RhcnQoKTsKKworIyB0YXJnZXRfc2Vzc2lvbl9hdHRycz1wcmltYXJ5IHNo b3VsZCBhbHdheXMgY2hvb3NlIHRoZSBmaXJzdCBvbmUuCiskbm9kZV9wcmltYXJ5MS0+Y29ubmVj dF9vaygKKwkiaG9zdD1wZy1sb2FkYmFsYW5jZXRlc3QgcG9ydD0kcG9ydCB0YXJnZXRfc2Vzc2lv bl9hdHRycz1wcmltYXJ5IGNoZWNrX2FsbF9hZGRycz0xIiwKKwkidGFyZ2V0X3Nlc3Npb25fYXR0 cnM9cHJpbWFyeSBjb25uZWN0cyB0byB0aGUgZmlyc3Qgbm9kZSIsCisJc3FsID0+ICJTRUxFQ1Qg J2Nvbm5lY3QxJyIsCisJbG9nX2xpa2UgPT4gW3FyL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0 MScvXSk7Ciskbm9kZV9wcmltYXJ5MS0+Y29ubmVjdF9vaygKKwkiaG9zdD1wZy1sb2FkYmFsYW5j ZXRlc3QgcG9ydD0kcG9ydCB0YXJnZXRfc2Vzc2lvbl9hdHRycz1yZWFkLXdyaXRlIGNoZWNrX2Fs bF9hZGRycz0xIiwKKwkidGFyZ2V0X3Nlc3Npb25fYXR0cnM9cmVhZC13cml0ZSBjb25uZWN0cyB0 byB0aGUgZmlyc3Qgbm9kZSIsCisJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QxJyIsCisJbG9nX2xp a2UgPT4gW3FyL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0MScvXSk7Ciskbm9kZV9wcmltYXJ5 MS0+Y29ubmVjdF9vaygKKwkiaG9zdD1wZy1sb2FkYmFsYW5jZXRlc3QgcG9ydD0kcG9ydCB0YXJn ZXRfc2Vzc2lvbl9hdHRycz1hbnkgY2hlY2tfYWxsX2FkZHJzPTEiLAorCSJ0YXJnZXRfc2Vzc2lv bl9hdHRycz1hbnkgY29ubmVjdHMgdG8gdGhlIGZpcnN0IG5vZGUiLAorCXNxbCA9PiAiU0VMRUNU ICdjb25uZWN0MSciLAorCWxvZ19saWtlID0+IFtxci9zdGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVj dDEnL10pOworJG5vZGVfc3RhbmRieS0+Y29ubmVjdF9vaygKKwkiaG9zdD1wZy1sb2FkYmFsYW5j ZXRlc3QgcG9ydD0kcG9ydCB0YXJnZXRfc2Vzc2lvbl9hdHRycz1zdGFuZGJ5IGNoZWNrX2FsbF9h ZGRycz0xIiwKKwkidGFyZ2V0X3Nlc3Npb25fYXR0cnM9c3RhbmRieSBjb25uZWN0cyB0byB0aGUg dGhpcmQgbm9kZSIsCisJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QxJyIsCisJbG9nX2xpa2UgPT4g W3FyL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0MScvXSk7Ciskbm9kZV9zdGFuZGJ5LT5jb25u ZWN0X29rKAorCSJob3N0PXBnLWxvYWRiYWxhbmNldGVzdCBwb3J0PSRwb3J0IHRhcmdldF9zZXNz aW9uX2F0dHJzPXJlYWQtb25seSBjaGVja19hbGxfYWRkcnM9MSIsCisJInRhcmdldF9zZXNzaW9u X2F0dHJzPXJlYWQtb25seSBjb25uZWN0cyB0byB0aGUgdGhpcmQgbm9kZSIsCisJc3FsID0+ICJT RUxFQ1QgJ2Nvbm5lY3QxJyIsCisJbG9nX2xpa2UgPT4gW3FyL3N0YXRlbWVudDogU0VMRUNUICdj b25uZWN0MScvXSk7CisKKworJG5vZGVfcHJpbWFyeTEtPnN0b3AoKTsKKworIyB0YXJnZXRfc2Vz c2lvbl9hdHRycz1wcmltYXJ5IHNob3VsZCBhbHdheXMgY2hvb3NlIHRoZSBmaXJzdCBvbmUuCisk bm9kZV9wcmltYXJ5Mi0+Y29ubmVjdF9vaygKKwkiaG9zdD1wZy1sb2FkYmFsYW5jZXRlc3QgcG9y dD0kcG9ydCB0YXJnZXRfc2Vzc2lvbl9hdHRycz1wcmltYXJ5IGNoZWNrX2FsbF9hZGRycz0xIiwK KwkidGFyZ2V0X3Nlc3Npb25fYXR0cnM9cHJpbWFyeSBjb25uZWN0cyB0byB0aGUgZmlyc3Qgbm9k ZSIsCisJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QxJyIsCisJbG9nX2xpa2UgPT4gW3FyL3N0YXRl bWVudDogU0VMRUNUICdjb25uZWN0MScvXSk7Ciskbm9kZV9wcmltYXJ5Mi0+Y29ubmVjdF9vaygK KwkiaG9zdD1wZy1sb2FkYmFsYW5jZXRlc3QgcG9ydD0kcG9ydCB0YXJnZXRfc2Vzc2lvbl9hdHRy cz1yZWFkLXdyaXRlIGNoZWNrX2FsbF9hZGRycz0xIiwKKwkidGFyZ2V0X3Nlc3Npb25fYXR0cnM9 cmVhZC13cml0ZSBjb25uZWN0cyB0byB0aGUgZmlyc3Qgbm9kZSIsCisJc3FsID0+ICJTRUxFQ1Qg J2Nvbm5lY3QxJyIsCisJbG9nX2xpa2UgPT4gW3FyL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0 MScvXSk7Ciskbm9kZV9zdGFuZGJ5LT5jb25uZWN0X29rKAorCSJob3N0PXBnLWxvYWRiYWxhbmNl dGVzdCBwb3J0PSRwb3J0IHRhcmdldF9zZXNzaW9uX2F0dHJzPWFueSBjaGVja19hbGxfYWRkcnM9 MSIsCisJInRhcmdldF9zZXNzaW9uX2F0dHJzPWFueSBjb25uZWN0cyB0byB0aGUgZmlyc3Qgbm9k ZSIsCisJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QxJyIsCisJbG9nX2xpa2UgPT4gW3FyL3N0YXRl bWVudDogU0VMRUNUICdjb25uZWN0MScvXSk7Ciskbm9kZV9zdGFuZGJ5LT5jb25uZWN0X29rKAor CSJob3N0PXBnLWxvYWRiYWxhbmNldGVzdCBwb3J0PSRwb3J0IHRhcmdldF9zZXNzaW9uX2F0dHJz PXN0YW5kYnkgY2hlY2tfYWxsX2FkZHJzPTEiLAorCSJ0YXJnZXRfc2Vzc2lvbl9hdHRycz1zdGFu ZGJ5IGNvbm5lY3RzIHRvIHRoZSB0aGlyZCBub2RlIiwKKwlzcWwgPT4gIlNFTEVDVCAnY29ubmVj dDEnIiwKKwlsb2dfbGlrZSA9PiBbcXIvc3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5lY3QxJy9dKTsK KyRub2RlX3N0YW5kYnktPmNvbm5lY3Rfb2soCisJImhvc3Q9cGctbG9hZGJhbGFuY2V0ZXN0IHBv cnQ9JHBvcnQgdGFyZ2V0X3Nlc3Npb25fYXR0cnM9cmVhZC1vbmx5IGNoZWNrX2FsbF9hZGRycz0x IiwKKwkidGFyZ2V0X3Nlc3Npb25fYXR0cnM9cmVhZC1vbmx5IGNvbm5lY3RzIHRvIHRoZSB0aGly ZCBub2RlIiwKKwlzcWwgPT4gIlNFTEVDVCAnY29ubmVjdDEnIiwKKwlsb2dfbGlrZSA9PiBbcXIv c3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5lY3QxJy9dKTsKKworJG5vZGVfcHJpbWFyeTItPnN0b3Ao KTsKKyRub2RlX3N0YW5kYnktPnN0b3AoKTsKKworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3QvMDA4X2xvYWRfYmFsYW5jZV9kbnNfY2hlY2tfYWxs X2FkZHJzLnBsIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvdC8wMDhfbG9hZF9iYWxhbmNlX2Ruc19j aGVja19hbGxfYWRkcnMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u ZDM0MDU1OThlNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3QvMDA4 X2xvYWRfYmFsYW5jZV9kbnNfY2hlY2tfYWxsX2FkZHJzLnBsCkBAIC0wLDAgKzEsMTI4IEBACisj IENvcHlyaWdodCAoYykgMjAyMy0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBDb25m aWc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoISRFTlZ7UEdfVEVTVF9FWFRSQX0gfHwg JEVOVntQR19URVNUX0VYVFJBfSAhfiAvXGJsb2FkX2JhbGFuY2VcYi8pCit7CisJcGxhbiBza2lw X2FsbCA9PgorCSAgJ1BvdGVudGlhbGx5IHVuc2FmZSB0ZXN0IGxvYWRfYmFsYW5jZSBub3QgZW5h YmxlZCBpbiBQR19URVNUX0VYVFJBJzsKK30KKworbXkgJGNhbl9iaW5kX3RvXzEyN18wXzBfMiA9 CisgICRDb25maWd7b3NuYW1lfSBlcSAnbGludXgnIHx8ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czo6d2luZG93c19vczsKKworIyBDaGVja3MgZm9yIHRoZSByZXF1aXJlbWVudHMgZm9yIHRlc3Rp bmcgbG9hZCBiYWxhbmNpbmcgbWV0aG9kIDIKK2lmICghJGNhbl9iaW5kX3RvXzEyN18wXzBfMikK K3sKKwlwbGFuIHNraXBfYWxsID0+ICdsb2FkX2JhbGFuY2UgdGVzdCBvbmx5IHN1cHBvcnRlZCBv biBMaW51eCBhbmQgV2luZG93cyc7Cit9CisKK215ICRob3N0c19wYXRoOworaWYgKCR3aW5kb3dz X29zKQoreworCSRob3N0c19wYXRoID0gJ2M6XFdpbmRvd3NcU3lzdGVtMzJcRHJpdmVyc1xldGNc aG9zdHMnOworfQorZWxzZQoreworCSRob3N0c19wYXRoID0gJy9ldGMvaG9zdHMnOworfQorCitt eSAkaG9zdHNfY29udGVudCA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjpzbHVycF9maWxlKCRo b3N0c19wYXRoKTsKKworbXkgJGhvc3RzX2NvdW50ID0gKCkgPQorICAkaG9zdHNfY29udGVudCA9 fiAvMTI3XC4wXC4wXC5bMS0zXSBwZy1sb2FkYmFsYW5jZXRlc3QvZzsKK2lmICgkaG9zdHNfY291 bnQgIT0gMykKK3sKKwkjIEhvc3QgZmlsZSBpcyBub3QgcHJlcGFyZWQgZm9yIHRoaXMgdGVzdAor CXBsYW4gc2tpcF9hbGwgPT4gImhvc3RzIGZpbGUgd2FzIG5vdCBwcmVwYXJlZCBmb3IgRE5TIGxv YWQgYmFsYW5jZSB0ZXN0IjsKK30KKworJFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI6OnVzZV90 Y3AgPSAxOworJFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI6OnRlc3RfcGdob3N0ID0gJzEyNy4w LjAuMSc7CisKK215ICRwb3J0ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlcjo6Z2V0X2ZyZWVf cG9ydCgpOworbG9jYWwgJFRlc3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6Okxl dmVsICsgMTsKK215ICRub2RlX3ByaW1hcnkxID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCJwcmltYXJ5MSIsIHBvcnQgPT4gJHBvcnQpOworJG5vZGVfcHJpbWFyeTEtPmluaXQoaGFz X2FyY2hpdmluZyA9PiAxLCBhbGxvd3Nfc3RyZWFtaW5nID0+IDEpOworCisjIFN0YXJ0IGl0Cisk bm9kZV9wcmltYXJ5MS0+c3RhcnQoKTsKKworIyBUYWtlIGJhY2t1cCBmcm9tIHdoaWNoIGFsbCBv cGVyYXRpb25zIHdpbGwgYmUgcnVuCiskbm9kZV9wcmltYXJ5MS0+YmFja3VwKCJteV9iYWNrdXAi KTsKKworbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygi c3RhbmRieSIsIHBvcnQgPT4gJHBvcnQsIG93bl9ob3N0ID0+IDEpOworJG5vZGVfc3RhbmRieS0+ aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9wcmltYXJ5MSwgIm15X2JhY2t1cCIsCisJaGFzX3Jlc3Rv cmluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0KCk7CisKK215ICRub2RlX3ByaW1hcnky ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCJub2RlMSIsIHBvcnQgPT4gJHBvcnQs IG93bl9ob3N0ID0+IDEpOworJG5vZGVfcHJpbWFyeTItPmluaXQoKTsKKyRub2RlX3ByaW1hcnky LT5zdGFydCgpOworc3ViIHRlc3RfdGFyZ2V0X3Nlc3Npb25fYXR0ciB7CisJbXkgJHRhcmdldF9z ZXNzaW9uX2F0dHJzID0gc2hpZnQ7CisJbXkgJHRlc3RfbnVtID0gc2hpZnQ7CisJbXkgJHByaW1h cnkxX2V4cGVjdF90cmFmZmljID0gc2hpZnQ7CisJbXkgJHN0YW5kYnlfZXhwZWVjdF90cmFmZmlj ID0gc2hpZnQ7CisJbXkgJHByaW1hcnkyX2V4cGVjdF90cmFmZmljID0gc2hpZnQ7CisJIyBTdGF0 aXN0aWNhbGx5IHRoZSBmb2xsb3dpbmcgbG9vcCB3aXRoIGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5k b20gd2lsbCBhbG1vc3QKKwkjIGNlcnRhaW5seSBjb25uZWN0IGF0IGxlYXN0IG9uY2UgdG8gZWFj aCBvZiB0aGUgbm9kZXMuIFRoZSBjaGFuY2Ugb2YgdGhhdCBub3QKKwkjIGhhcHBlbmluZyBpcyBz byBzbWFsbCB0aGF0IGl0J3MgbmVnbGlnaWJsZTogKDIvMyleNTAgPSAxLjU2ODMyODU1ZS05CisJ Zm9yZWFjaCBteSAkaSAoMSAuLiA1MCkKKwl7CisJCSRub2RlX3ByaW1hcnkxLT5jb25uZWN0X29r KAorCQkJImhvc3Q9cGctbG9hZGJhbGFuY2V0ZXN0IHBvcnQ9JHBvcnQgbG9hZF9iYWxhbmNlX2hv c3RzPXJhbmRvbSB0YXJnZXRfc2Vzc2lvbl9hdHRycz0ke3RhcmdldF9zZXNzaW9uX2F0dHJzfSBj aGVja19hbGxfYWRkcnM9MSIsCisJCQkicmVwZWF0ZWQgY29ubmVjdGlvbnMgd2l0aCByYW5kb20g bG9hZCBiYWxhbmNpbmciLAorCQkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3Qke3Rlc3RfbnVtfSci KTsKKwl9CisJbXkgJG5vZGVfcHJpbWFyeTFfb2NjdXJyZW5jZXMgPSAoKSA9CisJICAkbm9kZV9w cmltYXJ5MS0+bG9nX2NvbnRlbnQoKSA9fiAvc3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5lY3Qke3Rl c3RfbnVtfScvZzsKKwlteSAkbm9kZV9zdGFuZGJ5X29jY3VycmVuY2VzID0gKCkgPQorCSAgJG5v ZGVfc3RhbmRieS0+bG9nX2NvbnRlbnQoKSA9fiAvc3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5lY3Qk e3Rlc3RfbnVtfScvZzsKKwlteSAkbm9kZV9wcmltYXJ5Ml9vY2N1cnJlbmNlcyA9ICgpID0KKwkg ICRub2RlX3ByaW1hcnkyLT5sb2dfY29udGVudCgpID1+IC9zdGF0ZW1lbnQ6IFNFTEVDVCAnY29u bmVjdCR7dGVzdF9udW19Jy9nOworCisJbXkgJHRvdGFsX29jY3VycmVuY2VzID0KKwkgICRub2Rl X3ByaW1hcnkxX29jY3VycmVuY2VzICsgJG5vZGVfc3RhbmRieV9vY2N1cnJlbmNlcyArICRub2Rl X3ByaW1hcnkyX29jY3VycmVuY2VzOworCisJaWYgKCRwcmltYXJ5MV9leHBlY3RfdHJhZmZpYyA9 PSAxKSB7CisJCW9rKCRub2RlX3ByaW1hcnkxX29jY3VycmVuY2VzID4gMCwgInJlY2VpdmVkIGF0 IGxlYXN0IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUxIik7CisJfWVsc2V7CisJCW9rKCRub2RlX3By aW1hcnkxX29jY3VycmVuY2VzID09IDAsICJyZWNlaXZlZCBhdCBsZWFzdCBvbmUgY29ubmVjdGlv biBvbiBub2RlMSIpOworCX0KKwlpZiAoJHN0YW5kYnlfZXhwZWVjdF90cmFmZmljID09IDEpIHsK KwkJb2soJG5vZGVfc3RhbmRieV9vY2N1cnJlbmNlcyA+IDAsICJyZWNlaXZlZCBhdCBsZWFzdCBv bmUgY29ubmVjdGlvbiBvbiBub2RlMSIpOworCX1lbHNleworCQlvaygkbm9kZV9zdGFuZGJ5X29j Y3VycmVuY2VzID09IDAsICJyZWNlaXZlZCBhdCBsZWFzdCBvbmUgY29ubmVjdGlvbiBvbiBub2Rl MSIpOworCX0KKworCWlmICgkcHJpbWFyeTJfZXhwZWN0X3RyYWZmaWMgPT0gMSkgeworCQlvaygk bm9kZV9wcmltYXJ5Ml9vY2N1cnJlbmNlcyA+IDAsICJyZWNlaXZlZCBhdCBsZWFzdCBvbmUgY29u bmVjdGlvbiBvbiBub2RlMSIpOworCX1lbHNleworCQlvaygkbm9kZV9wcmltYXJ5Ml9vY2N1cnJl bmNlcyA9PSAwLCAicmVjZWl2ZWQgYXQgbGVhc3Qgb25lIGNvbm5lY3Rpb24gb24gbm9kZTEiKTsK Kwl9CisKKwlvaygkdG90YWxfb2NjdXJyZW5jZXMgPT0gNTAsICJyZWNlaXZlZCA1MCBjb25uZWN0 aW9ucyBhY3Jvc3MgYWxsIG5vZGVzIik7Cit9CisKK3Rlc3RfdGFyZ2V0X3Nlc3Npb25fYXR0cign YW55JywKKwkxLCAxLCAxLCAxKTsKK3Rlc3RfdGFyZ2V0X3Nlc3Npb25fYXR0cigncmVhZC1vbmx5 JywKKwkyLCAwLCAxLCAwKTsKK3Rlc3RfdGFyZ2V0X3Nlc3Npb25fYXR0cigncmVhZC13cml0ZScs CisJMywgMSwgMCwgMSk7Cit0ZXN0X3RhcmdldF9zZXNzaW9uX2F0dHIoJ3ByaW1hcnknLAorCTQs IDEsIDAsIDEpOwordGVzdF90YXJnZXRfc2Vzc2lvbl9hdHRyKCdzdGFuZGJ5JywKKwk1LCAwLCAx LCAwKTsKKworCiskbm9kZV9wcmltYXJ5MS0+c3RvcCgpOworJG5vZGVfcHJpbWFyeTItPnN0b3Ao KTsKKyRub2RlX3N0YW5kYnktPnN0b3AoKTsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjQ5LjAK Cg== --000000000000af6509063c6ff6a2--