From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id BDA431FF16B for ; Tue, 9 Sep 2025 10:37:14 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 95C552A60; Tue, 9 Sep 2025 10:35:57 +0200 (CEST) From: Daniel Kral To: pve-devel@lists.proxmox.com Date: Tue, 9 Sep 2025 10:33:47 +0200 Message-ID: <20250909083539.39675-11-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20250909083539.39675-1-d.kral@proxmox.com> References: <20250909083539.39675-1-d.kral@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1757406920754 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.015 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH ha-manager v2 10/18] compile ha rules to a more compact representation X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" VGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgZmV0Y2hpbmcgYSBoYSByZXNvdXJjZSdzIHJ1 bGVzIGluIHRoZQpzY2hlZHVsZXIgYW5kIG90aGVyIHVzZXJzIGlzIHJhdGhlciBpbmVmZmljaWVu dCBhcyBpdCBuZWVkcyB0byBnbwp0aHJvdWdoIHRoZSByYXcgcnVsZXMgaGFzaCBtYXAgYW5kIGdh dGhlcnMgcXVpdGUgYSBsb3Qgb2YgaW5mb3JtYXRpb24Kd2hpY2ggZG9lc24ndCBjaGFuZ2UgdW5s ZXNzIHRoZSBIQSBydWxlcyBuZWVkIHRvIGJlIHJlLXRyYW5zbGF0ZWQKYW55d2F5LgoKVGhlcmVm b3JlIGFkZCBhIGNvbXBpbGUgc3RhZ2Ugd2hlbiByZS10cmFuc2xhdGluZyB0aGUgSEEgcnVsZXMs IHdoaWNoCmNvbXBpbGVzIGVhY2ggcnVsZSBwbHVnaW4ncyBydWxlcyBpbnRvIGEgbW9yZSBjb21w YWN0IGRhdGEgc3RydWN0dXJlLgpUaGlzIHJlZHVjZXMgdGhlIHVubmVjZXNzYXJ5IHJlY29tcHV0 YXRpb24gb2YgaW52YXJpYW50IGRhdGEgZG9uZSBpbiB0aGUKaG90IHBhdGggb2YgdGhlIHNjaGVk dWxlcidzIHNlbGVjdF9zZXJ2aWNlX25vZGUoLi4uKS4KCkEgYmVuY2htYXJrIGRvbmUgd2l0aCBO WVRQcm9mIFswXSBzaG93cyB0aGUgZm9sbG93aW5nIHJ1bnRpbWUKaW1wcm92ZW1lbnQsIHdoZXJl IGVhY2ggZHVyYXRpb24gaXMgdGhlIGF2ZXJhZ2UgdGltZSBuZWVkZWQgcGVyIGNhbGwuClRoZSBi ZW5jaG1hcmsgd2FzIGRvbmUgYnkgc3RhcnRpbmcgdXAgYSAzLW5vZGUgY2x1c3RlciB3aXRoIDEy MDAKY29uZmlndXJlZCBIQSByZXNvdXJjZXMsIHdoZXJlIGVhY2ggSEEgcmVzb3VyY2UgaXMgaW4g YSBub2RlIGFmZmluaXR5CnJ1bGUgYW5kIGEgbmVnYXRpdmUgcmVzb3VyY2UgYWZmaW5pdHkgdG8g dHdvIG90aGVyIEhBIHJlc291cmNlcy4KCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0rCnwgRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAg fCBCZWZvcmUgfCBBZnRlciB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0rCnwgc2VsZWN0X3NlcnZpY2Vfbm9kZSAgICAgICAgICAgICAgfCAxMC41 bXMgfCA0NMK1cyAgfAp8IGdldF9ub2RlX2FmZmluaXR5ICAgICAgICAgICAgICAgIHwgNS4yNm1z IHwgMTDCtXMgIHwKfCBnZXRfcmVzb3VyY2VfYWZmaW5pdHkgICAgICAgICAgICB8IDUuMTdtcyB8 IDEywrVzICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0rCgpbMF0gaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL0RldmVsOjpOWVRQcm9mCgpTaWdu ZWQtb2ZmLWJ5OiBEYW5pZWwgS3JhbCA8ZC5rcmFsQHByb3htb3guY29tPgotLS0KY2hhbmdlcyBz aW5jZSB2MToKICAtIGFkZCBiZW5jaG1hcmsgaW4gdGhlIHBhdGNoIG1lc3NhZ2UKICAtIHMvYWZm aW5pdHkvY29tcGlsZWRfcnVsZXMvIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIGNvbXBpbGUoLi4u KQogIC0gZml4IHVwIHByb2JhYmxlIGF1dG8tdml2aWZpY2F0aW9uIGluIGVhcmx5IHJldHVybiBv ZgogICAgZ2V0X3Jlc291cmNlX2FmZmluaXR5KC4uLikKCiBzcmMvUFZFL0hBL0NvbmZpZy5wbSAg ICAgICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9QVkUvSEEvTWFuYWdlci5wbSAgICAgICAgICAg ICAgICB8IDI5ICsrKysrLS0tLQogc3JjL1BWRS9IQS9SdWxlcy5wbSAgICAgICAgICAgICAgICAg IHwgNTkgKysrKysrKysrKysrKysrKysKIHNyYy9QVkUvSEEvUnVsZXMvTm9kZUFmZmluaXR5LnBt ICAgICB8IDgyICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL1BWRS9IQS9SdWxlcy9SZXNv dXJjZUFmZmluaXR5LnBtIHwgOTUgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL3Rl c3QvdGVzdF9mYWlsb3ZlcjEucGwgICAgICAgICAgIHwgMTUgKysrLS0KIDYgZmlsZXMgY2hhbmdl ZCwgMTgwIGluc2VydGlvbnMoKyksIDEwOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv UFZFL0hBL0NvbmZpZy5wbSBiL3NyYy9QVkUvSEEvQ29uZmlnLnBtCmluZGV4IGJkODdhMGFiLi5l YTBiZTZkZCAxMDA2NDQKLS0tIGEvc3JjL1BWRS9IQS9Db25maWcucG0KKysrIGIvc3JjL1BWRS9I QS9Db25maWcucG0KQEAgLTIyNCw3ICsyMjQsNyBAQCBzdWIgcmVhZF9hbmRfY2hlY2tfcnVsZXNf Y29uZmlnIHsKICAgICByZXR1cm4gJHJ1bGVzOwogfQogCi1zdWIgcmVhZF9hbmRfY2hlY2tfZWZm ZWN0aXZlX3J1bGVzX2NvbmZpZyB7CitzdWIgcmVhZF9hbmRfY29tcGlsZV9ydWxlc19jb25maWcg ewogCiAgICAgbXkgJHJ1bGVzID0gcmVhZF9hbmRfY2hlY2tfcnVsZXNfY29uZmlnKCk7CiAKQEAg LTIzOSw3ICsyMzksNyBAQCBzdWIgcmVhZF9hbmRfY2hlY2tfZWZmZWN0aXZlX3J1bGVzX2NvbmZp ZyB7CiAKICAgICBQVkU6OkhBOjpSdWxlcy0+dHJhbnNmb3JtKCRydWxlcywgJG5vZGVzKTsKIAot ICAgIHJldHVybiAkcnVsZXM7CisgICAgcmV0dXJuIFBWRTo6SEE6OlJ1bGVzLT5jb21waWxlKCRy dWxlcywgJG5vZGVzKTsKIH0KIAogc3ViIHdyaXRlX3J1bGVzX2NvbmZpZyB7CkBAIC0zOTEsOCAr MzkxLDkgQEAgc3ViIGdldF9yZXNvdXJjZV9tb3Rpb25faW5mbyB7CiAgICAgICAgIG15ICRzcyA9 ICRtYW5hZ2VyX3N0YXR1cy0+e3NlcnZpY2Vfc3RhdHVzfTsKICAgICAgICAgbXkgJG5zID0gJG1h bmFnZXJfc3RhdHVzLT57bm9kZV9zdGF0dXN9OwogCi0gICAgICAgIG15ICRydWxlcyA9IHJlYWRf YW5kX2NoZWNrX2VmZmVjdGl2ZV9ydWxlc19jb25maWcoKTsKLSAgICAgICAgbXkgKCR0b2dldGhl ciwgJHNlcGFyYXRlKSA9IGdldF9hZmZpbml0aXZlX3Jlc291cmNlcygkcnVsZXMsICRzaWQpOwor ICAgICAgICBteSAkY29tcGlsZWRfcnVsZXMgPSByZWFkX2FuZF9jb21waWxlX3J1bGVzX2NvbmZp ZygpOworICAgICAgICBteSAoJHRvZ2V0aGVyLCAkc2VwYXJhdGUpID0KKyAgICAgICAgICAgIGdl dF9hZmZpbml0aXZlX3Jlc291cmNlcygkY29tcGlsZWRfcnVsZXMtPnsncmVzb3VyY2UtYWZmaW5p dHknfSwgJHNpZCk7CiAKICAgICAgICAgZm9yIG15ICRjc2lkIChzb3J0IGtleXMgJSR0b2dldGhl cikgewogICAgICAgICAgICAgbmV4dCBpZiAhZGVmaW5lZCgkc3MtPnskY3NpZH0pOwpkaWZmIC0t Z2l0IGEvc3JjL1BWRS9IQS9NYW5hZ2VyLnBtIGIvc3JjL1BWRS9IQS9NYW5hZ2VyLnBtCmluZGV4 IDMwMTNkMzY5Li5mNjNjZGFlMSAxMDA2NDQKLS0tIGEvc3JjL1BWRS9IQS9NYW5hZ2VyLnBtCisr KyBiL3NyYy9QVkUvSEEvTWFuYWdlci5wbQpAQCAtMTIxLDExICsxMjEsMTEgQEAgc3ViIGZsdXNo X21hc3Rlcl9zdGF0dXMgewogCiA9aGVhZDMgc2VsZWN0X3NlcnZpY2Vfbm9kZSguLi4pCiAKLT1o ZWFkMyBzZWxlY3Rfc2VydmljZV9ub2RlKCRydWxlcywgJG9ubGluZV9ub2RlX3VzYWdlLCAkc2lk LCAkc2VydmljZV9jb25mLCAkc2QsICRub2RlX3ByZWZlcmVuY2UpCis9aGVhZDMgc2VsZWN0X3Nl cnZpY2Vfbm9kZSgkY29tcGlsZWRfcnVsZXMsICRvbmxpbmVfbm9kZV91c2FnZSwgJHNpZCwgJHNl cnZpY2VfY29uZiwgJHNkLCAkbm9kZV9wcmVmZXJlbmNlKQogCiBVc2VkIHRvIHNlbGVjdCB0aGUg YmVzdCBmaXR0aW5nIG5vZGUgZm9yIHRoZSBzZXJ2aWNlIEM8JHNpZD4sIHdpdGggdGhlCi1jb25m aWd1cmF0aW9uIEM8JHNlcnZpY2VfY29uZj4gYW5kIHN0YXRlIEM8JHNkPiwgYWNjb3JkaW5nIHRv IHRoZSBydWxlcyBkZWZpbmVkCi1pbiBDPCRydWxlcz4sIGF2YWlsYWJsZSBub2RlIHV0aWxpemF0 aW9uIGluIEM8JG9ubGluZV9ub2RlX3VzYWdlPiwgYW5kIHRoZQorY29uZmlndXJhdGlvbiBDPCRz ZXJ2aWNlX2NvbmY+IGFuZCBzdGF0ZSBDPCRzZD4sIGFjY29yZGluZyB0byB0aGUgcnVsZXMgaW4K K0M8JGNvbXBpbGVkX3J1bGVzPiwgYXZhaWxhYmxlIG5vZGUgdXRpbGl6YXRpb24gaW4gQzwkb25s aW5lX25vZGVfdXNhZ2U+LCBhbmQgdGhlCiBnaXZlbiBDPCRub2RlX3ByZWZlcmVuY2U+LgogCiBU aGUgQzwkbm9kZV9wcmVmZXJlbmNlPiBjYW4gYmUgc2V0IHRvOgpAQCAtMTQzLDIwICsxNDMsMjIg QEAgVGhlIEM8JG5vZGVfcHJlZmVyZW5jZT4gY2FuIGJlIHNldCB0bzoKID1jdXQKIAogc3ViIHNl bGVjdF9zZXJ2aWNlX25vZGUgewotICAgIG15ICgkcnVsZXMsICRvbmxpbmVfbm9kZV91c2FnZSwg JHNpZCwgJHNlcnZpY2VfY29uZiwgJHNkLCAkbm9kZV9wcmVmZXJlbmNlKSA9IEBfOworICAgIG15 ICgkY29tcGlsZWRfcnVsZXMsICRvbmxpbmVfbm9kZV91c2FnZSwgJHNpZCwgJHNlcnZpY2VfY29u ZiwgJHNkLCAkbm9kZV9wcmVmZXJlbmNlKSA9IEBfOwogCiAgICAgZGllICInJG5vZGVfcHJlZmVy ZW5jZScgaXMgbm90IGEgdmFsaWQgbm9kZV9wcmVmZXJlbmNlIGZvciBzZWxlY3Rfc2VydmljZV9u b2RlXG4iCiAgICAgICAgIGlmICRub2RlX3ByZWZlcmVuY2UgIX4gbS8obm9uZXxiZXN0LXNjb3Jl fHRyeS1uZXh0KS87CiAKICAgICBteSAoJGN1cnJlbnRfbm9kZSwgJHRyaWVkX25vZGVzLCAkbWFp bnRlbmFuY2VfZmFsbGJhY2spID0KICAgICAgICAgJHNkLT5Ae3F3KG5vZGUgZmFpbGVkX25vZGVz IG1haW50ZW5hbmNlX25vZGUpfTsKKyAgICBteSAoJG5vZGVfYWZmaW5pdHksICRyZXNvdXJjZV9h ZmZpbml0eSkgPQorICAgICAgICAkY29tcGlsZWRfcnVsZXMtPkB7cXcobm9kZS1hZmZpbml0eSBy ZXNvdXJjZS1hZmZpbml0eSl9OwogCiAgICAgbXkgJG9ubGluZV9ub2RlcyA9IHsgbWFwIHsgJF8g PT4gMSB9ICRvbmxpbmVfbm9kZV91c2FnZS0+bGlzdF9ub2RlcygpIH07Ci0gICAgbXkgKCRhbGxv d2VkX25vZGVzLCAkcHJpX25vZGVzKSA9IGdldF9ub2RlX2FmZmluaXR5KCRydWxlcywgJHNpZCwg JG9ubGluZV9ub2Rlcyk7CisgICAgbXkgKCRhbGxvd2VkX25vZGVzLCAkcHJpX25vZGVzKSA9IGdl dF9ub2RlX2FmZmluaXR5KCRub2RlX2FmZmluaXR5LCAkc2lkLCAkb25saW5lX25vZGVzKTsKIAog ICAgIHJldHVybiB1bmRlZiBpZiAhJSRwcmlfbm9kZXM7CiAKLSAgICBteSAoJHRvZ2V0aGVyLCAk c2VwYXJhdGUpID0gZ2V0X3Jlc291cmNlX2FmZmluaXR5KCRydWxlcywgJHNpZCwgJG9ubGluZV9u b2RlX3VzYWdlKTsKKyAgICBteSAoJHRvZ2V0aGVyLCAkc2VwYXJhdGUpID0gZ2V0X3Jlc291cmNl X2FmZmluaXR5KCRyZXNvdXJjZV9hZmZpbml0eSwgJHNpZCwgJG9ubGluZV9ub2RlX3VzYWdlKTsK IAogICAgICMgc3RheSBvbiBjdXJyZW50IG5vZGUgaWYgcG9zc2libGUgKGF2b2lkcyByYW5kb20g bWlncmF0aW9ucykKICAgICBpZiAoCkBAIC00MTgsNyArNDIwLDggQEAgc3ViIGV4ZWN1dGVfbWln cmF0aW9uIHsKIAogICAgIG15ICgkaGFlbnYsICRzcykgPSAkc2VsZi0+QHtxdyhoYWVudiBzcyl9 OwogCi0gICAgbXkgKCR0b2dldGhlciwgJHNlcGFyYXRlKSA9IGdldF9hZmZpbml0aXZlX3Jlc291 cmNlcygkc2VsZi0+e3J1bGVzfSwgJHNpZCk7CisgICAgbXkgJHJlc291cmNlX2FmZmluaXR5ID0g JHNlbGYtPntjb21waWxlZF9ydWxlc30tPnsncmVzb3VyY2UtYWZmaW5pdHknfTsKKyAgICBteSAo JHRvZ2V0aGVyLCAkc2VwYXJhdGUpID0gZ2V0X2FmZmluaXRpdmVfcmVzb3VyY2VzKCRyZXNvdXJj ZV9hZmZpbml0eSwgJHNpZCk7CiAKICAgICBmb3IgbXkgJGNzaWQgKHNvcnQga2V5cyAlJHNlcGFy YXRlKSB7CiAgICAgICAgIG5leHQgaWYgIWRlZmluZWQoJHNzLT57JGNzaWR9KTsKQEAgLTc0Niw3 ICs3NDksNyBAQCBzdWIgbWFuYWdlIHsKICAgICBQVkU6OkhBOjpHcm91cHM6Om1pZ3JhdGVfZ3Jv dXBzX3RvX3Jlc291cmNlcygkc2VsZi0+e2dyb3Vwc30sICRzYyk7CiAKICAgICBpZiAoCi0gICAg ICAgICEkc2VsZi0+e3J1bGVzfQorICAgICAgICAhJHNlbGYtPntjb21waWxlZF9ydWxlc30KICAg ICAgICAgfHwgJGhhc19jaGFuZ2VkX25vZGVsaXN0CiAgICAgICAgIHx8ICRuZXdfcnVsZXMtPntk aWdlc3R9IG5lICRzZWxmLT57bGFzdF9ydWxlc19kaWdlc3R9CiAgICAgICAgIHx8ICRzZWxmLT57 Z3JvdXBzfS0+e2RpZ2VzdH0gbmUgJHNlbGYtPntsYXN0X2dyb3Vwc19kaWdlc3R9CkBAIC03NTgs OSArNzYxLDkgQEAgc3ViIG1hbmFnZSB7CiAgICAgICAgIG15ICRtZXNzYWdlcyA9IFBWRTo6SEE6 OlJ1bGVzLT50cmFuc2Zvcm0oJG5ld19ydWxlcywgJG5vZGVzKTsKICAgICAgICAgJGhhZW52LT5s b2coJ2luZm8nLCAkXykgZm9yIEAkbWVzc2FnZXM7CiAKLSAgICAgICAgJHNlbGYtPntydWxlc30g PSAkbmV3X3J1bGVzOworICAgICAgICAkc2VsZi0+e2NvbXBpbGVkX3J1bGVzfSA9IFBWRTo6SEE6 OlJ1bGVzLT5jb21waWxlKCRuZXdfcnVsZXMsICRub2Rlcyk7CiAKLSAgICAgICAgJHNlbGYtPnts YXN0X3J1bGVzX2RpZ2VzdH0gPSAkc2VsZi0+e3J1bGVzfS0+e2RpZ2VzdH07CisgICAgICAgICRz ZWxmLT57bGFzdF9ydWxlc19kaWdlc3R9ID0gJG5ld19ydWxlcy0+e2RpZ2VzdH07CiAgICAgICAg ICRzZWxmLT57bGFzdF9ncm91cHNfZGlnZXN0fSA9ICRzZWxmLT57Z3JvdXBzfS0+e2RpZ2VzdH07 CiAgICAgICAgICRzZWxmLT57bGFzdF9zZXJ2aWNlc19kaWdlc3R9ID0gJHNlcnZpY2VzX2RpZ2Vz dDsKICAgICB9CkBAIC0xMDIwLDcgKzEwMjMsNyBAQCBzdWIgbmV4dF9zdGF0ZV9yZXF1ZXN0X3N0 YXJ0IHsKIAogICAgIGlmICgkc2VsZi0+e2Nyc30tPntyZWJhbGFuY2Vfb25fcmVxdWVzdF9zdGFy dH0pIHsKICAgICAgICAgbXkgJHNlbGVjdGVkX25vZGUgPSBzZWxlY3Rfc2VydmljZV9ub2RlKAot ICAgICAgICAgICAgJHNlbGYtPntydWxlc30sCisgICAgICAgICAgICAkc2VsZi0+e2NvbXBpbGVk X3J1bGVzfSwKICAgICAgICAgICAgICRzZWxmLT57b25saW5lX25vZGVfdXNhZ2V9LAogICAgICAg ICAgICAgJHNpZCwKICAgICAgICAgICAgICRjZCwKQEAgLTExODcsNyArMTE5MCw3IEBAIHN1YiBu ZXh0X3N0YXRlX3N0YXJ0ZWQgewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBteSAkbm9k ZSA9IHNlbGVjdF9zZXJ2aWNlX25vZGUoCi0gICAgICAgICAgICAgICAgJHNlbGYtPntydWxlc30s CisgICAgICAgICAgICAgICAgJHNlbGYtPntjb21waWxlZF9ydWxlc30sCiAgICAgICAgICAgICAg ICAgJHNlbGYtPntvbmxpbmVfbm9kZV91c2FnZX0sCiAgICAgICAgICAgICAgICAgJHNpZCwKICAg ICAgICAgICAgICAgICAkY2QsCkBAIC0xMzA2LDcgKzEzMDksNyBAQCBzdWIgbmV4dF9zdGF0ZV9y ZWNvdmVyeSB7CiAgICAgJHNlbGYtPnJlY29tcHV0ZV9vbmxpbmVfbm9kZV91c2FnZSgpOyAjIHdl IHdhbnQgdGhlIG1vc3QgY3VycmVudCBub2RlIHN0YXRlCiAKICAgICBteSAkcmVjb3Zlcnlfbm9k ZSA9IHNlbGVjdF9zZXJ2aWNlX25vZGUoCi0gICAgICAgICRzZWxmLT57cnVsZXN9LAorICAgICAg ICAkc2VsZi0+e2NvbXBpbGVkX3J1bGVzfSwKICAgICAgICAgJHNlbGYtPntvbmxpbmVfbm9kZV91 c2FnZX0sCiAgICAgICAgICRzaWQsCiAgICAgICAgICRjZCwKZGlmZiAtLWdpdCBhL3NyYy9QVkUv SEEvUnVsZXMucG0gYi9zcmMvUFZFL0hBL1J1bGVzLnBtCmluZGV4IGEwNzVmZWFjLi42OWM1MzM1 NiAxMDA2NDQKLS0tIGEvc3JjL1BWRS9IQS9SdWxlcy5wbQorKysgYi9zcmMvUFZFL0hBL1J1bGVz LnBtCkBAIC00Nyw2ICs0NywxMiBAQCBFYWNoIEk8cnVsZSBwbHVnaW4+IGlzIHJlcXVpcmVkIHRv IGltcGxlbWVudCB0aGUgbWV0aG9kcyBDPEw8dHlwZSgpPj4sCiBDPEw8cHJvcGVydGllcygpPj4s IGFuZCBDPEw8b3B0aW9ucz4+IGZyb20gdGhlIEM8TDxQVkU6OlNlY3Rpb25Db25maWc+PiB0bwog ZXh0ZW5kIHRoZSBwcm9wZXJ0aWVzIG9mIHRoaXMgSTxiYXNlIHBsdWdpbj4gd2l0aCBwbHVnaW4t c3BlY2lmaWMgcHJvcGVydGllcy4KIAorRWFjaCBJPHJ1bGUgcGx1Z2luPiBpcyByZXF1aXJlZCB0 byBpbXBsZW1lbnQgdGhlIG1ldGhvZAorQzxMPDwgcGx1Z2luX2NvbXBpbGUoKXwvJGNsYXNzLT5w bHVnaW5fY29tcGlsZSguLi4pID4+PiB0byBkaXN0aWxsIGEgY29tcGlsZWQKK3JlcHJlc2VudGF0 aW9uIG9mIHRoZSBtb3JlIHZlcmJvc2UgQzwkcnVsZXM+IGZyb20gdGhlIGNvbmZpZyBmaWxlLCB3 aGljaCBpcworcmV0dXJuZWQgYnkgQzxMPDwgY29tcGlsZSgpfC8kY2xhc3MtPmNvbXBpbGUoLi4u KSA+Pj4gdG8gYmUgbW9yZSBhcHByb3ByaWF0ZQorYW5kIGVmZmljaWVudCBmb3IgdGhlIHNjaGVk dWxlciBhbmQgb3RoZXIgdXNlcnMuCisKID1oZWFkMiBSRUdJU1RFUklORyBDSEVDS1MKIAogSW4g b3JkZXIgdG8gQzxMPDwgcmVnaXN0ZXIgY2hlY2tzfC8kY2xhc3MtPnJlZ2lzdGVyX2NoZWNrKC4u LikgPj4+IGZvciBhIHJ1bGUKQEAgLTQ1Myw2ICs0NTksNTkgQEAgc3ViIHRyYW5zZm9ybSA6IHBy b3RvdHlwZSgkJCQpIHsKICAgICByZXR1cm4gJG1lc3NhZ2VzOwogfQogCis9aGVhZDMgJGNsYXNz LT5wbHVnaW5fY29tcGlsZSguLi4pCisKKz1oZWFkMyAkY2xhc3MtPnBsdWdpbl9jb21waWxlKCRy dWxlcywgJG5vZGVzKQorCitCPE1BTkRBVE9SWTo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4gYSBJ PHJ1bGUgcGx1Z2luPi4KKworQ2FsbGVkIGluIEM8JGNsYXNzLT5jb21waWxlKCRydWxlcywgJG5v ZGVzKT4gaW4gb3JkZXIgdG8gZ2V0IGEgbW9yZSBjb21wYWN0CityZXByZXNlbnRhdGlvbiBvZiB0 aGUgcnVsZSBwbHVnaW4ncyBydWxlcyBpbiBDPCRydWxlcz4sIHdoaWNoIGhvbGRzIG9ubHkgdGhl CityZWxldmFudCBpbmZvcm1hdGlvbiBmb3IgdGhlIHNjaGVkdWxlciBhbmQgb3RoZXIgdXNlcnMu CisKK0M8JG5vZGVzPiBpcyBhIGxpc3Qgb2YgdGhlIGNvbmZpZ3VyZWQgY2x1c3RlciBub2Rlcy4K KworPWN1dAorCitzdWIgcGx1Z2luX2NvbXBpbGUgeworICAgIG15ICgkY2xhc3MsICRydWxlcywg JG5vZGVzKSA9IEBfOworCisgICAgZGllICJpbXBsZW1lbnQgaW4gc3ViY2xhc3MiOworfQorCis9 aGVhZDMgJGNsYXNzLT5jb21waWxlKC4uLikKKworPWhlYWQzICRjbGFzcy0+Y29tcGlsZSgkcnVs ZXMsICRub2RlcykKKworQ29tcGlsZXMgYW5kIHJldHVybnMgYSBoYXNoLCB3aGVyZSBlYWNoIGtl eS12YWx1ZSBwYWlyIHJlcHJlc2VudHMgYSBydWxlCitwbHVnaW4ncyBtb3JlIGNvbXBhY3QgcmVw cmVzZW50YXRpb24gY29tcGlsZWQgZnJvbSB0aGUgbW9yZSB2ZXJib3NlIHJ1bGVzCitkZWZpbmVk IGluIEM8JHJ1bGVzPi4KKworQzwkbm9kZXM+IGlzIGEgbGlzdCBvZiB0aGUgY29uZmlndXJlZCBj bHVzdGVyIG5vZGVzLgorCitUaGUgdHJhbnNmb3JtYXRpb24gdG8gdGhlIGNvbXBhY3QgcmVwcmVz ZW50YXRpb24gZm9yIGVhY2ggcnVsZSBwbHVnaW4gaXMKK2ltcGxlbWVudGVkIGluIEM8TDw8IHBs dWdpbl9jb21waWxlKCl8LyRjbGFzcy0+cGx1Z2luX2NvbXBpbGUoLi4uKSA+Pj4uCisKKz1jdXQK Kworc3ViIGNvbXBpbGUgeworICAgIG15ICgkY2xhc3MsICRydWxlcywgJG5vZGVzKSA9IEBfOwor CisgICAgbXkgJGNvbXBpbGVkX3J1bGVzID0ge307CisKKyAgICBmb3IgbXkgJHR5cGUgKEAkdHlw ZXMpIHsKKyAgICAgICAgbXkgJHBsdWdpbiA9ICRjbGFzcy0+bG9va3VwKCR0eXBlKTsKKyAgICAg ICAgbXkgJGNvbXBpbGVkX3BsdWdpbl9ydWxlcyA9ICRwbHVnaW4tPnBsdWdpbl9jb21waWxlKCRy dWxlcywgJG5vZGVzKTsKKworICAgICAgICBkaWUgInBsdWdpbl9jb21waWxlKC4uLikgb2YgdHlw ZSAnJHR5cGUnIG11c3QgcmV0dXJuIGhhc2ggcmVmZXJlbmNlXG4iCisgICAgICAgICAgICBpZiBy ZWYoJGNvbXBpbGVkX3BsdWdpbl9ydWxlcykgbmUgJ0hBU0gnOworCisgICAgICAgICRjb21waWxl ZF9ydWxlcy0+eyR0eXBlfSA9ICRjb21waWxlZF9wbHVnaW5fcnVsZXM7CisgICAgfQorCisgICAg cmV0dXJuICRjb21waWxlZF9ydWxlczsKK30KKwogPWhlYWQxIEZVTkNUSU9OUwogCiA9Y3V0CmRp ZmYgLS1naXQgYS9zcmMvUFZFL0hBL1J1bGVzL05vZGVBZmZpbml0eS5wbSBiL3NyYy9QVkUvSEEv UnVsZXMvTm9kZUFmZmluaXR5LnBtCmluZGV4IGI3YWJmOWE0Li5mNWJjNWJmMyAxMDA2NDQKLS0t IGEvc3JjL1BWRS9IQS9SdWxlcy9Ob2RlQWZmaW5pdHkucG0KKysrIGIvc3JjL1BWRS9IQS9SdWxl cy9Ob2RlQWZmaW5pdHkucG0KQEAgLTE1NSw2ICsxNTUsNDAgQEAgc3ViIGdldF9wbHVnaW5fY2hl Y2tfYXJndW1lbnRzIHsKICAgICByZXR1cm4gJHJlc3VsdDsKIH0KIAorc3ViIHBsdWdpbl9jb21w aWxlIHsKKyAgICBteSAoJGNsYXNzLCAkcnVsZXMsICRub2RlcykgPSBAXzsKKworICAgIG15ICRu b2RlX2FmZmluaXR5ID0ge307CisKKyAgICBQVkU6OkhBOjpSdWxlczo6Zm9yZWFjaF9ydWxlKAor ICAgICAgICAkcnVsZXMsCisgICAgICAgIHN1YiB7CisgICAgICAgICAgICBteSAoJHJ1bGUpID0g QF87CisKKyAgICAgICAgICAgIG15ICRlZmZlY3RpdmVfbm9kZXMgPSBkY2xvbmUoJHJ1bGUtPntu b2Rlc30pOworCisgICAgICAgICAgICAjIGFkZCByZW1haW5pbmcgbm9kZXMgd2l0aCBsb3cgcHJp b3JpdHkgZm9yIG5vbi1zdHJpY3Qgbm9kZSBhZmZpbml0eQorICAgICAgICAgICAgaWYgKCEkcnVs ZS0+e3N0cmljdH0pIHsKKyAgICAgICAgICAgICAgICBmb3IgbXkgJG5vZGUgKEAkbm9kZXMpIHsK KyAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiBkZWZpbmVkKCRlZmZlY3RpdmVfbm9kZXMtPnsk bm9kZX0pOworCisgICAgICAgICAgICAgICAgICAgICRlZmZlY3RpdmVfbm9kZXMtPnskbm9kZX0g PSB7IHByaW9yaXR5ID0+IC0xIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor CisgICAgICAgICAgICBmb3IgbXkgJHNpZCAoa2V5cyAkcnVsZS0+e3Jlc291cmNlc30tPiUqKSB7 CisgICAgICAgICAgICAgICAgJG5vZGVfYWZmaW5pdHktPnskc2lkfSA9IHsKKyAgICAgICAgICAg ICAgICAgICAgbm9kZXMgPT4gJGVmZmVjdGl2ZV9ub2RlcywKKyAgICAgICAgICAgICAgICB9Owor ICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB0eXBlID0+ICdub2RlLWFmZmluaXR5 JywKKyAgICAgICAgZXhjbHVkZV9kaXNhYmxlZF9ydWxlcyA9PiAxLAorICAgICk7CisKKyAgICBy ZXR1cm4gJG5vZGVfYWZmaW5pdHk7Cit9CisKID1oZWFkMSBOT0RFIEFGRklOSVRZIFJVTEUgQ0hF Q0tFUlMKIAogPWN1dApAQCAtMjE3LDMwICsyNTEsMTAgQEAgX19QQUNLQUdFX18tPnJlZ2lzdGVy X2NoZWNrKAogCiA9Y3V0CiAKLW15ICRnZXRfcmVzb3VyY2Vfbm9kZV9hZmZpbml0eV9ydWxlID0g c3ViIHsKLSAgICBteSAoJHJ1bGVzLCAkc2lkKSA9IEBfOwotCi0gICAgIyB3aXRoIHRoZSBjdXJy ZW50IHJlc3RyaWN0aW9uIGEgcmVzb3VyY2UgY2FuIG9ubHkgYmUgaW4gb25lIG5vZGUgYWZmaW5p dHkgcnVsZQotICAgIG15ICRub2RlX2FmZmluaXR5X3J1bGU7Ci0gICAgUFZFOjpIQTo6UnVsZXM6 OmZvcmVhY2hfcnVsZSgKLSAgICAgICAgJHJ1bGVzLAotICAgICAgICBzdWIgewotICAgICAgICAg ICAgbXkgKCRydWxlKSA9IEBfOwotCi0gICAgICAgICAgICAkbm9kZV9hZmZpbml0eV9ydWxlID0g ZGNsb25lKCRydWxlKSBpZiAhJG5vZGVfYWZmaW5pdHlfcnVsZTsKLSAgICAgICAgfSwKLSAgICAg ICAgc2lkID0+ICRzaWQsCi0gICAgICAgIHR5cGUgPT4gJ25vZGUtYWZmaW5pdHknLAotICAgICAg ICBleGNsdWRlX2Rpc2FibGVkX3J1bGVzID0+IDEsCi0gICAgKTsKLQotICAgIHJldHVybiAkbm9k ZV9hZmZpbml0eV9ydWxlOwotfTsKLQotPWhlYWQzIGdldF9ub2RlX2FmZmluaXR5KCRydWxlcywg JHNpZCwgJG9ubGluZV9ub2RlX3VzYWdlKQorPWhlYWQzIGdldF9ub2RlX2FmZmluaXR5KCRub2Rl X2FmZmluaXR5LCAkc2lkLCAkb25saW5lX25vZGVfdXNhZ2UpCiAKIFJldHVybnMgYSBsaXN0IG9m IHR3byBoYXNoZXMgcmVwcmVzZW50aW5nIHRoZSBub2RlIGFmZmluaXR5IG9mIEM8JHNpZD4KLWFj Y29yZGluZyB0byB0aGUgbm9kZSBhZmZpbml0eSBydWxlcyBpbiBDPCRydWxlcz4gYW5kIHRoZSBh dmFpbGFibGUgbm9kZXMgaW4KK2FjY29yZGluZyB0byB0aGUgbm9kZSBhZmZpbml0eSBDPCRub2Rl X2FmZmluaXR5PiBhbmQgdGhlIGF2YWlsYWJsZSBub2RlcyBpbgogdGhlIEM8JG9ubGluZV9ub2Rl cz4gaGFzaC4KIAogVGhlIGZpcnN0IGhhc2ggaXMgYSBoYXNoIHNldCBvZiBhdmFpbGFibGUgbm9k ZXMsIGkuZS4gbm9kZXMgd2hlcmUgdGhlCkBAIC0yNTEsMzEgKzI2NSwxNSBAQCBJZiB0aGVyZSBh cmUgbm8gYXZhaWxhYmxlIG5vZGVzIGF0IGFsbCwgcmV0dXJucyBDPHVuZGVmPi4KIAogPWN1dAog Ci1zdWIgZ2V0X25vZGVfYWZmaW5pdHkgOiBwcm90b3R5cGUoJCQkKSB7Ci0gICAgbXkgKCRydWxl cywgJHNpZCwgJG9ubGluZV9ub2RlcykgPSBAXzsKK3N1YiBnZXRfbm9kZV9hZmZpbml0eSB7Cisg ICAgbXkgKCRub2RlX2FmZmluaXR5LCAkc2lkLCAkb25saW5lX25vZGVzKSA9IEBfOwogCi0gICAg bXkgJG5vZGVfYWZmaW5pdHlfcnVsZSA9ICRnZXRfcmVzb3VyY2Vfbm9kZV9hZmZpbml0eV9ydWxl LT4oJHJ1bGVzLCAkc2lkKTsKLQotICAgICMgZGVmYXVsdCB0byBhIG5vZGUgYWZmaW5pdHkgcnVs ZSB3aXRoIGFsbCBhdmFpbGFibGUgbm9kZXMKLSAgICBpZiAoISRub2RlX2FmZmluaXR5X3J1bGUp IHsKLSAgICAgICAgZm9yIG15ICRub2RlIChrZXlzICUkb25saW5lX25vZGVzKSB7Ci0gICAgICAg ICAgICAkbm9kZV9hZmZpbml0eV9ydWxlLT57bm9kZXN9LT57JG5vZGV9ID0geyBwcmlvcml0eSA9 PiAwIH07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAjIGFkZCByZW1haW5pbmcgbm9kZXMgd2l0 aCBsb3cgcHJpb3JpdHkgZm9yIG5vbi1zdHJpY3Qgbm9kZSBhZmZpbml0eSBydWxlcwotICAgIGlm ICghJG5vZGVfYWZmaW5pdHlfcnVsZS0+e3N0cmljdH0pIHsKLSAgICAgICAgZm9yIG15ICRub2Rl IChrZXlzICUkb25saW5lX25vZGVzKSB7Ci0gICAgICAgICAgICBuZXh0IGlmIGRlZmluZWQoJG5v ZGVfYWZmaW5pdHlfcnVsZS0+e25vZGVzfS0+eyRub2RlfSk7Ci0KLSAgICAgICAgICAgICRub2Rl X2FmZmluaXR5X3J1bGUtPntub2Rlc30tPnskbm9kZX0gPSB7IHByaW9yaXR5ID0+IC0xIH07Ci0g ICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJuICgkb25saW5lX25vZGVzLCAkb25saW5lX25vZGVz KSBpZiAhZGVmaW5lZCgkbm9kZV9hZmZpbml0eS0+eyRzaWR9KTsKIAogICAgIG15ICRhbGxvd2Vk X25vZGVzID0ge307CiAgICAgbXkgJHByaW9yaXRpemVkX25vZGVzID0ge307CiAKLSAgICB3aGls ZSAobXkgKCRub2RlLCAkcHJvcHMpID0gZWFjaCAleyAkbm9kZV9hZmZpbml0eV9ydWxlLT57bm9k ZXN9IH0pIHsKKyAgICB3aGlsZSAobXkgKCRub2RlLCAkcHJvcHMpID0gZWFjaCAkbm9kZV9hZmZp bml0eS0+eyRzaWR9LT57bm9kZXN9LT4lKikgewogICAgICAgICBuZXh0IGlmICFkZWZpbmVkKCRv bmxpbmVfbm9kZXMtPnskbm9kZX0pOyAjIG5vZGUgaXMgb2ZmbGluZQogCiAgICAgICAgICRhbGxv d2VkX25vZGVzLT57JG5vZGV9ID0gMTsKZGlmZiAtLWdpdCBhL3NyYy9QVkUvSEEvUnVsZXMvUmVz b3VyY2VBZmZpbml0eS5wbSBiL3NyYy9QVkUvSEEvUnVsZXMvUmVzb3VyY2VBZmZpbml0eS5wbQpp bmRleCBmMmQ1N2NlNi4uYzNjZGU2ZTggMTAwNjQ0Ci0tLSBhL3NyYy9QVkUvSEEvUnVsZXMvUmVz b3VyY2VBZmZpbml0eS5wbQorKysgYi9zcmMvUFZFL0hBL1J1bGVzL1Jlc291cmNlQWZmaW5pdHku cG0KQEAgLTEwMCw2ICsxMDAsMzUgQEAgc3ViIGdldF9wbHVnaW5fY2hlY2tfYXJndW1lbnRzIHsK ICAgICByZXR1cm4gJHJlc3VsdDsKIH0KIAorc3ViIHBsdWdpbl9jb21waWxlIHsKKyAgICBteSAo JGNsYXNzLCAkcnVsZXMsICRub2RlcykgPSBAXzsKKworICAgIG15ICRwb3NpdGl2ZSA9IHt9Owor ICAgIG15ICRuZWdhdGl2ZSA9IHt9OworCisgICAgUFZFOjpIQTo6UnVsZXM6OmZvcmVhY2hfcnVs ZSgKKyAgICAgICAgJHJ1bGVzLAorICAgICAgICBzdWIgeworICAgICAgICAgICAgbXkgKCRydWxl LCAkcnVsZWlkKSA9IEBfOworCisgICAgICAgICAgICBteSAkYWZmaW5pdHlfc2V0ID0gJHJ1bGUt PnthZmZpbml0eX0gZXEgJ3Bvc2l0aXZlJyA/ICRwb3NpdGl2ZSA6ICRuZWdhdGl2ZTsKKworICAg ICAgICAgICAgZm9yIG15ICRzaWQgKGtleXMgJHJ1bGUtPntyZXNvdXJjZXN9LT4lKikgeworICAg ICAgICAgICAgICAgIGZvciBteSAkY3NpZCAoa2V5cyAkcnVsZS0+e3Jlc291cmNlc30tPiUqKSB7 CisgICAgICAgICAgICAgICAgICAgICRhZmZpbml0eV9zZXQtPnskc2lkfS0+eyRjc2lkfSA9IDEg aWYgJGNzaWQgbmUgJHNpZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg ICAgIH0sCisgICAgICAgIHR5cGUgPT4gJ3Jlc291cmNlLWFmZmluaXR5JywKKyAgICAgICAgZXhj bHVkZV9kaXNhYmxlZF9ydWxlcyA9PiAxLAorICAgICk7CisKKyAgICByZXR1cm4geworICAgICAg ICBwb3NpdGl2ZSA9PiAkcG9zaXRpdmUsCisgICAgICAgIG5lZ2F0aXZlID0+ICRuZWdhdGl2ZSwK KyAgICB9OworfQorCiA9aGVhZDEgUkVTT1VSQ0UgQUZGSU5JVFkgUlVMRSBDSEVDS0VSUwogCiA9 Y3V0CkBAIC00MDMsMTIgKzQzMiwxMiBAQCBfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfdHJhbnNmb3Jt KHN1YiB7CiAKID1jdXQKIAotPWhlYWQzIGdldF9hZmZpbml0aXZlX3Jlc291cmNlcygkcnVsZXMs ICRzaWQpCis9aGVhZDMgZ2V0X2FmZmluaXRpdmVfcmVzb3VyY2VzKCRyZXNvdXJjZV9hZmZpbml0 eSwgJHNpZCkKIAogUmV0dXJucyBhIGxpc3Qgb2YgdHdvIGhhc2ggc2V0cywgd2hlcmUgdGhlIGZp cnN0IGhhc2ggc2V0IGNvbnRhaW5zIHRoZQogcmVzb3VyY2VzLCB3aGljaCBDPCRzaWQ+IGlzIHBv c2l0aXZlbHkgYWZmaW5pdGl2ZSB0bywgYW5kIHRoZSBzZWNvbmQgaGFzaAogY29udGFpbnMgdGhl IHJlc291cmNlcywgd2hpY2ggQzwkc2lkPiBpcyBuZWdhdGl2ZWx5IGFmZmluaXRpdmUgdG8sIGFj b3JkaW5nIHRvCi10aGUgcmVzb3VyY2UgYWZmaW5pdHkgcnVsZXMgaW4gQzwkcnVsZXM+LgordGhl IHJlc291cmNlJ3MgcmVzb3VyY2UgYWZmaW5pdHkgaW4gQzwkcmVzb3VyY2VfYWZmaW5pdHk+Lgog CiBOb3RlIHRoYXQgYSByZXNvdXJjZSBDPCRzaWQ+IGJlY29tZXMgcGFydCBvZiBhbnkgbmVnYXRp dmUgYWZmaW5pdHkgcmVsYXRpb24KIG9mIGl0cyBwb3NpdGl2ZWx5IGFmZmluaXRpdmUgcmVzb3Vy Y2VzLgpAQCAtNDI5LDM2ICs0NTgsMjAgQEAgYWZmaW5pdGl2ZSB0byBDPCdjdDoyMDAnPiBhbmQg QzwnY3Q6MjAxJz4sIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIGJlOgogPWN1dAogCiBzdWIgZ2V0 X2FmZmluaXRpdmVfcmVzb3VyY2VzIDogcHJvdG90eXBlKCQkKSB7Ci0gICAgbXkgKCRydWxlcywg JHNpZCkgPSBAXzsKKyAgICBteSAoJHJlc291cmNlX2FmZmluaXR5LCAkc2lkKSA9IEBfOwogCi0g ICAgbXkgJHRvZ2V0aGVyID0ge307Ci0gICAgbXkgJHNlcGFyYXRlID0ge307Ci0KLSAgICBQVkU6 OkhBOjpSdWxlczo6Zm9yZWFjaF9ydWxlKAotICAgICAgICAkcnVsZXMsCi0gICAgICAgIHN1YiB7 Ci0gICAgICAgICAgICBteSAoJHJ1bGUsICRydWxlaWQpID0gQF87Ci0KLSAgICAgICAgICAgIG15 ICRhZmZpbml0eV9zZXQgPSAkcnVsZS0+e2FmZmluaXR5fSBlcSAncG9zaXRpdmUnID8gJHRvZ2V0 aGVyIDogJHNlcGFyYXRlOwotCi0gICAgICAgICAgICBmb3IgbXkgJGNzaWQgKHNvcnQga2V5cyAl eyAkcnVsZS0+e3Jlc291cmNlc30gfSkgewotICAgICAgICAgICAgICAgICRhZmZpbml0eV9zZXQt PnskY3NpZH0gPSAxIGlmICRjc2lkIG5lICRzaWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0s Ci0gICAgICAgIHNpZCA9PiAkc2lkLAotICAgICAgICB0eXBlID0+ICdyZXNvdXJjZS1hZmZpbml0 eScsCi0gICAgICAgIGV4Y2x1ZGVfZGlzYWJsZWRfcnVsZXMgPT4gMSwKLSAgICApOworICAgIG15 ICR0b2dldGhlciA9ICRyZXNvdXJjZV9hZmZpbml0eS0+e3Bvc2l0aXZlfS0+eyRzaWR9IC8vIHt9 OworICAgIG15ICRzZXBhcmF0ZSA9ICRyZXNvdXJjZV9hZmZpbml0eS0+e25lZ2F0aXZlfS0+eyRz aWR9IC8vIHt9OwogCiAgICAgcmV0dXJuICgkdG9nZXRoZXIsICRzZXBhcmF0ZSk7CiB9CiAKLT1o ZWFkMyBnZXRfcmVzb3VyY2VfYWZmaW5pdHkoJHJ1bGVzLCAkc2lkLCAkb25saW5lX25vZGVfdXNh Z2UpCis9aGVhZDMgZ2V0X3Jlc291cmNlX2FmZmluaXR5KCRyZXNvdXJjZV9hZmZpbml0eSwgJHNp ZCwgJG9ubGluZV9ub2RlX3VzYWdlKQogCiBSZXR1cm5zIGEgbGlzdCBvZiB0d28gaGFzaGVzLCB3 aGVyZSB0aGUgZmlyc3QgZGVzY3JpYmVzIHRoZSBwb3NpdGl2ZSByZXNvdXJjZQogYWZmaW5pdHkg YW5kIHRoZSBzZWNvbmQgaGFzaCBkZXNjcmliZXMgdGhlIG5lZ2F0aXZlIHJlc291cmNlIGFmZmlu aXR5IGZvcgotcmVzb3VyY2UgQzwkc2lkPiBhY2NvcmRpbmcgdG8gdGhlIHJlc291cmNlIGFmZmlu aXR5IHJ1bGVzIGluIEM8JHJ1bGVzPiBhbmQgdGhlCi1yZXNvdXJjZSBsb2NhdGlvbnMgaW4gQzwk b25saW5lX25vZGVfdXNhZ2U+LgorcmVzb3VyY2UgQzwkc2lkPiBhY2NvcmRpbmcgdG8gdGhlIHJl c291cmNlJ3MgcmVzb3VyY2UgYWZmaW5pdHkgaW4KK0M8JHJlc291cmNlX2FmZmluaXR5PiBhbmQg dGhlIHJlc291cmNlIGxvY2F0aW9ucyBpbiBDPCRvbmxpbmVfbm9kZV91c2FnZT4uCiAKIEZvciB0 aGUgcG9zaXRpdmUgcmVzb3VyY2UgYWZmaW5pdHkgb2YgYSByZXNvdXJjZSBDPCRzaWQ+LCBlYWNo IGVsZW1lbnQgaW4gdGhlCiBoYXNoIHJlcHJlc2VudHMgYW4gb25saW5lIG5vZGUsIHdoZXJlIG90 aGVyIHJlc291cmNlcywgd2hpY2ggQzwkc2lkPiBpcyBpbgpAQCAtNDg3LDM2ICs1MDAsMjYgQEAg cmVzb3VyY2UgQzwkc2lkPiBpcyBpbiBhIG5lZ2F0aXZlIGFmZmluaXR5IHdpdGgsIHRoZSByZXR1 cm5lZCB2YWx1ZSB3aWxsIGJlOgogPWN1dAogCiBzdWIgZ2V0X3Jlc291cmNlX2FmZmluaXR5IDog cHJvdG90eXBlKCQkJCkgewotICAgIG15ICgkcnVsZXMsICRzaWQsICRvbmxpbmVfbm9kZV91c2Fn ZSkgPSBAXzsKKyAgICBteSAoJHJlc291cmNlX2FmZmluaXR5LCAkc2lkLCAkb25saW5lX25vZGVf dXNhZ2UpID0gQF87CiAKICAgICBteSAkdG9nZXRoZXIgPSB7fTsKICAgICBteSAkc2VwYXJhdGUg PSB7fTsKIAotICAgIFBWRTo6SEE6OlJ1bGVzOjpmb3JlYWNoX3J1bGUoCi0gICAgICAgICRydWxl cywKLSAgICAgICAgc3ViIHsKLSAgICAgICAgICAgIG15ICgkcnVsZSkgPSBAXzsKKyAgICBteSAo JHBvc2l0aXZlLCAkbmVnYXRpdmUpID0gZ2V0X2FmZmluaXRpdmVfcmVzb3VyY2VzKCRyZXNvdXJj ZV9hZmZpbml0eSwgJHNpZCk7CiAKLSAgICAgICAgICAgIGZvciBteSAkY3NpZCAoa2V5cyAleyAk cnVsZS0+e3Jlc291cmNlc30gfSkgewotICAgICAgICAgICAgICAgIG5leHQgaWYgJGNzaWQgZXEg JHNpZDsKKyAgICBmb3IgbXkgJGNzaWQgKGtleXMgJHBvc2l0aXZlLT4lKikgeworICAgICAgICBt eSAkbm9kZXMgPSAkb25saW5lX25vZGVfdXNhZ2UtPmdldF9zZXJ2aWNlX25vZGVzKCRjc2lkKTsK KyAgICAgICAgbmV4dCBpZiAhJG5vZGVzIHx8ICFAJG5vZGVzOyAjIHNraXAgdW5hc3NpZ25lZCBo YSByZXNvdXJjZXMKIAotICAgICAgICAgICAgICAgIG15ICRub2RlcyA9ICRvbmxpbmVfbm9kZV91 c2FnZS0+Z2V0X3NlcnZpY2Vfbm9kZXMoJGNzaWQpOworICAgICAgICAkdG9nZXRoZXItPnskX30r KyBmb3IgQCRub2RlczsKKyAgICB9CiAKLSAgICAgICAgICAgICAgICBuZXh0IGlmICEkbm9kZXMg fHwgIUAkbm9kZXM7ICMgc2tpcCB1bmFzc2lnbmVkIG5vZGVzCisgICAgZm9yIG15ICRjc2lkIChr ZXlzICRuZWdhdGl2ZS0+JSopIHsKKyAgICAgICAgbXkgJG5vZGVzID0gJG9ubGluZV9ub2RlX3Vz YWdlLT5nZXRfc2VydmljZV9ub2RlcygkY3NpZCk7CisgICAgICAgIG5leHQgaWYgISRub2RlcyB8 fCAhQCRub2RlczsgIyBza2lwIHVuYXNzaWduZWQgaGEgcmVzb3VyY2VzCiAKLSAgICAgICAgICAg ICAgICBpZiAoJHJ1bGUtPnthZmZpbml0eX0gZXEgJ3Bvc2l0aXZlJykgewotICAgICAgICAgICAg ICAgICAgICAkdG9nZXRoZXItPnskX30rKyBmb3IgQCRub2RlczsKLSAgICAgICAgICAgICAgICB9 IGVsc2lmICgkcnVsZS0+e2FmZmluaXR5fSBlcSAnbmVnYXRpdmUnKSB7Ci0gICAgICAgICAgICAg ICAgICAgICRzZXBhcmF0ZS0+eyRffSA9IDEgZm9yIEAkbm9kZXM7Ci0gICAgICAgICAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZGllICJ1bmltcGxlbWVudGVkIHJlc291cmNl IGFmZmluaXR5IHR5cGUgJHJ1bGUtPnthZmZpbml0eX1cbiI7Ci0gICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBzaWQgPT4gJHNpZCwKLSAgICAgICAg dHlwZSA9PiAncmVzb3VyY2UtYWZmaW5pdHknLAotICAgICAgICBleGNsdWRlX2Rpc2FibGVkX3J1 bGVzID0+IDEsCi0gICAgKTsKKyAgICAgICAgJHNlcGFyYXRlLT57JF99ID0gMSBmb3IgQCRub2Rl czsKKyAgICB9CiAKICAgICByZXR1cm4gKCR0b2dldGhlciwgJHNlcGFyYXRlKTsKIH0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3Rlc3RfZmFpbG92ZXIxLnBsIGIvc3JjL3Rlc3QvdGVzdF9mYWlsb3Zl cjEucGwKaW5kZXggNzhhMDAxZWIuLjJkOGJhNjYyIDEwMDc1NQotLS0gYS9zcmMvdGVzdC90ZXN0 X2ZhaWxvdmVyMS5wbAorKysgYi9zcmMvdGVzdC90ZXN0X2ZhaWxvdmVyMS5wbApAQCAtMjAsMTEg KzIwLDEzIEBAIG5vZGUtYWZmaW5pdHk6IHByZWZlcl9ub2RlMQogCW5vZGVzIG5vZGUxCiBFT0QK IAorbXkgJG5vZGVzID0gWydub2RlMScsICdub2RlMicsICdub2RlMyddOworCitteSAkY29tcGls ZWRfcnVsZXMgPSBQVkU6OkhBOjpSdWxlcy0+Y29tcGlsZSgkcnVsZXMsICRub2Rlcyk7CisKICMg UmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgdGhlIGJhc2ljIHBsdWdpbiBkb2Vzbid0IHVzZSB0aGUg aGFlbnYuCiBteSAkb25saW5lX25vZGVfdXNhZ2UgPSBQVkU6OkhBOjpVc2FnZTo6QmFzaWMtPm5l dygpOwotJG9ubGluZV9ub2RlX3VzYWdlLT5hZGRfbm9kZSgibm9kZTEiKTsKLSRvbmxpbmVfbm9k ZV91c2FnZS0+YWRkX25vZGUoIm5vZGUyIik7Ci0kb25saW5lX25vZGVfdXNhZ2UtPmFkZF9ub2Rl KCJub2RlMyIpOworJG9ubGluZV9ub2RlX3VzYWdlLT5hZGRfbm9kZSgkXykgZm9yIEAkbm9kZXM7 CiAKIG15ICRzZXJ2aWNlX2NvbmYgPSB7CiAgICAgbm9kZSA9PiAnbm9kZTEnLApAQCAtNDMsNyAr NDUsMTIgQEAgc3ViIHRlc3QgewogICAgIG15ICRzZWxlY3Rfbm9kZV9wcmVmZXJlbmNlID0gJHRy eV9uZXh0ID8gJ3RyeS1uZXh0JyA6ICdub25lJzsKIAogICAgIG15ICRub2RlID0gUFZFOjpIQTo6 TWFuYWdlcjo6c2VsZWN0X3NlcnZpY2Vfbm9kZSgKLSAgICAgICAgJHJ1bGVzLCAkb25saW5lX25v ZGVfdXNhZ2UsICJ2bToxMTEiLCAkc2VydmljZV9jb25mLCAkc2QsICRzZWxlY3Rfbm9kZV9wcmVm ZXJlbmNlLAorICAgICAgICAkY29tcGlsZWRfcnVsZXMsCisgICAgICAgICRvbmxpbmVfbm9kZV91 c2FnZSwKKyAgICAgICAgInZtOjExMSIsCisgICAgICAgICRzZXJ2aWNlX2NvbmYsCisgICAgICAg ICRzZCwKKyAgICAgICAgJHNlbGVjdF9ub2RlX3ByZWZlcmVuY2UsCiAgICAgKTsKIAogICAgIG15 ICh1bmRlZiwgdW5kZWYsICRsaW5lKSA9IGNhbGxlcigpOwotLSAKMi40Ny4zCgoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2ZS1kZXZlbCBtYWlsaW5n IGxpc3QKcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5j b20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=