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 E16351FF38F for ; Tue, 4 Jun 2024 11:29:07 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 2AF90E5F3; Tue, 4 Jun 2024 11:29:38 +0200 (CEST) From: Max Carrara To: pve-devel@lists.proxmox.com Date: Tue, 4 Jun 2024 11:28:48 +0200 Message-Id: <20240604092850.126083-2-m.carrara@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240604092850.126083-1-m.carrara@proxmox.com> References: <20240604092850.126083-1-m.carrara@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.016 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 T_SCC_BODY_TEXT_LINE -0.01 - URIBL_SBL_A 0.1 Contains URL's A record listed in the Spamhaus SBL blocklist [185.199.108.153, 185.199.109.153, 185.199.110.153, 185.199.111.153] Subject: [pve-devel] [PATCH v1 pve-common 1/3] section config: document package and its methods with POD 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" QXBhcnQgZnJvbSB0aGUgb2J2aW91cyBiZW5lZml0cyB0aGF0IGRvY3VtZW50YXRpb24gaGFzLCB0 aGlzIGFsc28KYWxsb3dzIExTUHMgdG8gcHJvdmlkZSBkb2NzdHJpbmdzIGUuZy4gdmlhICd0ZXh0 RG9jdW1lbnQvaG92ZXInIFswXS4KClRlc3RlZCB3aXRoIFBlcmwgTmF2aWdhdG9yIFsxXS4KClsw XTogaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL2xhbmd1YWdlLXNlcnZlci1wcm90b2NvbC9z cGVjaWZpY2F0aW9ucy9sc3AvMy4xNy9zcGVjaWZpY2F0aW9uLyN0ZXh0RG9jdW1lbnRfaG92ZXIK WzFdOiBodHRwczovL2dpdGh1Yi5jb20vYnNjYW4vUGVybE5hdmlnYXRvcgoKU2lnbmVkLW9mZi1i eTogTWF4IENhcnJhcmEgPG0uY2FycmFyYUBwcm94bW94LmNvbT4KLS0tCiBzcmMvUFZFL1NlY3Rp b25Db25maWcucG0gfCA3MzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t CiAxIGZpbGUgY2hhbmdlZCwgNjcyIGluc2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9QVkUvU2VjdGlvbkNvbmZpZy5wbSBiL3NyYy9QVkUvU2VjdGlvbkNvbmZp Zy5wbQppbmRleCBhMThlOWQ4Li45OWVlMzQ4IDEwMDY0NAotLS0gYS9zcmMvUFZFL1NlY3Rpb25D b25maWcucG0KKysrIGIvc3JjL1BWRS9TZWN0aW9uQ29uZmlnLnBtCkBAIC0xMCw2NSArMTAsMTAy IEBAIHVzZSBQVkU6OkV4Y2VwdGlvbiBxdyhyYWlzZV9wYXJhbV9leGMpOwogdXNlIFBWRTo6SlNP TlNjaGVtYSBxdyhnZXRfc3RhbmRhcmRfb3B0aW9uKTsKIHVzZSBQVkU6OlRvb2xzOwogCi0jIFRo aXMgcGFja2FnZSBwcm92aWRlcyBhIHdheSB0byBoYXZlIG11bHRpcGxlIChvZnRlbiBzaW1pbGFy KSB0eXBlcyBvZiBlbnRyaWVzCi0jIGluIHRoZSBzYW1lIGNvbmZpZyBmaWxlLCBlYWNoIGluIGl0 cyBvd24gc2VjdGlvbiwgdGh1cyAiU2VjdGlvbiBDb25maWciLgotIwotIyBUaGUgaW50ZW5kZWQg c3RydWN0dXJlIGlzIHRvIGhhdmUgYSBzaW5nbGUgJ2Jhc2UnIHBsdWdpbiB0aGF0IGluaGVyaXRz IGZyb20KLSMgdGhpcyBjbGFzcyBhbmQgcHJvdmlkZXMgbWVhbmluZ2Z1bCBkZWZhdWx0cyBpbiBp dHMgJyRkZWZhdWx0RGF0YScsIGUuZy4gYQotIyBkZWZhdWx0IGxpc3Qgb2YgdGhlIGNvcmUgcHJv cGVydGllcyBpbiBpdHMgcHJvcGVydHlMaXN0IChtb3N0IG9mdGVuIG9ubHkgJ2lkJwotIyBhbmQg J3R5cGUnKQotIwotIyBFYWNoICdyZWFsJyBwbHVnaW4gdGhlbiBoYXMgaXQncyBvd24gcGFja2Fn ZSB0aGF0IHNob3VsZCBpbmhlcml0IGZyb20gdGhlCi0jICdiYXNlJyBwbHVnaW4gYW5kIHJldHVy bnMgaXQncyBzcGVjaWZpYyBwcm9wZXJ0aWVzIGluIHRoZSAncHJvcGVydGllcycgbWV0aG9kLAot IyBpdHMgdHlwZSBpbiB0aGUgJ3R5cGUnIG1ldGhvZCBhbmQgYWxsIHRoZSBrbm93biBvcHRpb25z LCBmcm9tIGJvdGggcGFyZW50IGFuZAotIyBpdHNlbGYsIGluIHRoZSAnb3B0aW9ucycgbWV0aG9k LgotIyBUaGUgb3B0aW9ucyBtZXRob2QgY2FuIGFsc28gYmUgdXNlZCB0byBkZWZpbmUgaWYgYSBw cm9wZXJ0eSBpcyAnb3B0aW9uYWwnIG9yCi0jICdmaXhlZCcgKG9ubHkgc2V0dGFibGUgb24gY29u ZmlnIGVudGl0eS1jcmVhdGlvbiksIGZvciBleGFtcGxlOgotIwotIyBgYGBgCi0jIHN1YiBvcHRp b25zIHsKLSMgICAgIHJldHVybiB7Ci0jICAgICAgICAgJ3NvbWUtb3B0aW9uYWwtcHJvcGVydHkn ID0+IHsgb3B0aW9uYWwgPT4gMSB9LAotIyAgICAgICAgICdhLWZpeGVkLXByb3BlcnR5JyA9PiB7 IGZpeGVkID0+IDEgfSwKLSMgICAgICAgICAnYS1yZXF1aXJlZC1idXQtbm90LWZpeGVkLXByb3Bl cnR5JyA9PiB7fSwKLSMgICAgIH07Ci0jIH0KLSMgYGBgCi0jCi0jICdmaXhlZCcgb3B0aW9ucyBj YW4gYmUgc2V0IG9uIGNyZWF0ZSwgYnV0IG5vdCBjaGFuZ2VkIGFmdGVyd2FyZHMuCi0jCi0jIFRv IGFjdHVhbGx5IHVzZSBpdCwgeW91IGhhdmUgdG8gZmlyc3QgcmVnaXN0ZXIgYWxsIHRoZSBwbHVn aW5zIGFuZCB0aGVuIGluaXQKLSMgdGhlICdiYXNlJyBwbHVnaW4sIGxpa2Ugc286Ci0jCi0jIGBg YAotIyB1c2UgUFZFOjpEdW1teTo6UGx1Z2luMTsKLSMgdXNlIFBWRTo6RHVtbXk6OlBsdWdpbjI7 Ci0jIHVzZSBQVkU6OkR1bW15OjpCYXNlUGx1Z2luOwotIwotIyBQVkU6OkR1bW15OjpQbHVnaW4x LT5yZWdpc3RlcigpOwotIyBQVkU6OkR1bW15OjpQbHVnaW4yLT5yZWdpc3RlcigpOwotIyBQVkU6 OkR1bW15OjpCYXNlUGx1Z2luLT5pbml0KCk7Ci0jIGBgYAotIwotIyBUaGVyZSBhcmUgdHdvIG1v ZGVzIGZvciBob3cgcHJvcGVydGllcyBhcmUgZXhwb3NlZCwgdGhlIGRlZmF1bHQgJ3VuaWZpZWQn Ci0jIG1vZGUgYW5kIHRoZSAnaXNvbGF0ZWQnIG1vZGUuCi0jIEluIHRoZSBkZWZhdWx0IHVuaWZp ZWQgbW9kZSwgdGhlcmUgaXMgb25seSBhIGdsb2JhbCBsaXN0IG9mIHByb3BlcnRpZXMKLSMgd2hp Y2ggdGhlIHBsdWdpbnMgY2FuIHVzZSwgc28geW91IGNhbm5vdCBkZWZpbmUgdGhlIHNhbWUgcHJv cGVydHkgbmFtZSB0d2ljZQotIyBpbiBkaWZmZXJlbnQgcGx1Z2lucy4gVGhlIHJlYXNvbiBmb3Ig dGhpcyBpcyB0byBmb3JjZSB0aGUgdXNlIG9mIGlkZW50aWNhbAotIyBwcm9wZXJ0aWVzIGZvciBt dWx0aXBsZSBwbHVnaW5zLgotIwotIyBUaGUgc2Vjb25kIHdheSBpcyB0byB1c2UgdGhlICdpc29s YXRlZCcgbW9kZSwgd2hpY2ggY2FuIGJlIGFjaGlldmVkIGJ5Ci0jIGNhbGxpbmcgaW5pdCB3aXRo IGAxYCBhcyBpdHMgcGFyYW1ldGVyIGxpa2UgdGhpczoKLSMKLSMgYGBgCi0jIFBWRTo6RHVtbXk6 OkJhc2VQbHVnaW4tPmluaXQocHJvcGVydHlfaXNvbGF0aW9uID0+IDEpOwotIyBgYGAKLSMKLSMg V2l0aCB0aGlzLCBlYWNoIHBsdWdpbiBnZXQncyB0aGVpciBvd24gaXNvbGF0ZWQgbGlzdCBvZiBw cm9wZXJ0aWVzIHdoaWNoIGl0Ci0jIGNhbiB1c2UuIE5vdGUgdGhhdCBpbiB0aGlzIG1vZGUsIHlv dSBvbmx5IGhhdmUgdG8gc3BlY2lmeSB0aGUgcHJvcGVydHkgaW4gdGhlCi0jIG9wdGlvbnMgbWV0 aG9kIHdoZW4gaXQgaXMgZWl0aGVyICdmaXhlZCcgb3IgY29tZXMgZnJvbSB0aGUgZ2xvYmFsIGxp c3Qgb2YKLSMgcHJvcGVydGllcy4gQWxsIGxvY2FsbHkgZGVmaW5lZCBvbmVzIGdldCBhdXRvbWF0 aWNhbGx5IGFkZGVkIHRvIHRoZSBzY2hlbWEKLSMgZm9yIHRoYXQgcGx1Z2luLgorPXBvZAorCis9 aGVhZDEgTkFNRQorCitTZWN0aW9uQ29uZmlnCisKKz1oZWFkMSBERVNDUklQVElPTgorCitUaGlz IHBhY2thZ2UgcHJvdmlkZXMgYSB3YXkgdG8gaGF2ZSBtdWx0aXBsZSAob2Z0ZW4gc2ltaWxhcikg dHlwZXMgb2YgZW50cmllcworaW4gdGhlIHNhbWUgY29uZmlnIGZpbGUsIGVhY2ggaW4gaXRzIG93 biBzZWN0aW9uLCB0aHVzIEk8U2VjdGlvbiBDb25maWc+LgorCitVbmRlciB0aGUgaG9vZCwgdGhp cyBwYWNrYWdlIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhbmQgbWFuYWdlcyBhIG1hdGNoaW5nCitJ PEpTT05TY2hlbWE+IGZvciBvbmUncyBwbHVnaW4gYXJjaGl0ZWN0dXJlIHRoYXQgaXMgdXNlZCB0 byByZXByZXNlbnQgZGF0YQordGhhdCBpcyByZWFkIGZyb20gYW5kIHdyaXR0ZW4gdG8gdGhlIGNv bmZpZyBmaWxlLgorCitXaGVyZSB0aGlzIGNvbmZpZyBmaWxlIGlzIGxvY2F0ZWQsIGFzIHdlbGwg YXMgaXRzIHBlcm1pc3Npb25zIGFuZCBvdGhlciByZWxhdGVkCit0aGluZ3MsIGlzIHVwIHRvIHRo ZSBwbHVnaW4gYXV0aG9yIGFuZCBpcyBub3QgaGFuZGxlZCBieSBDPFBWRTo6U2VjdGlvbkNvbmZp Zz4KK2F0IGFsbC4KKworPWhlYWQxIFVTQUdFCisKK1RoZSBpbnRlbmRlZCBzdHJ1Y3R1cmUgaXMg dG8gaGF2ZSBhIHNpbmdsZSBJPGJhc2UgcGx1Z2luPiB0aGF0IGluaGVyaXRzIGZyb20KK3RoaXMg Y2xhc3MgYW5kIHByb3ZpZGVzIG1lYW5pbmdmdWwgZGVmYXVsdHMgaW4gaXRzIEM8JGRlZmF1bHRE YXRhPiwgc3VjaCBhcyBhCitkZWZhdWx0IGxpc3Qgb2YgY29yZSBDPFBWRTo6SlNPTlNjaGVtYT4g STxwcm9wZXJ0aWVzPi4gVGhlIEk8YmFzZSBwbHVnaW4+IGlzCit0aHVzIHZlcnkgc2ltaWxhciB0 byBhbiBJPGFic3RyYWN0IGNsYXNzPi4KKworRWFjaCBJPGNoaWxkIHBsdWdpbj4gaXMgdGhlbiBk ZWZpbmVkIGluIGl0cyBvd24gcGFja2FnZSB0aGF0IHNob3VsZCBpbmhlcml0Citmcm9tIHRoZSBJ PGJhc2UgcGx1Z2luPiBhbmQgZGVmaW5lcyB3aGljaCBJPHByb3BlcnRpZXM+IGl0IGl0c2VsZiBw cm92aWRlcyBhbmQKK3VzZXMsIGFzIHdlbGwgYXMgd2hpY2ggSTxwcm9wZXJ0aWVzPiBpdCB1c2Vz IGZyb20gdGhlIEk8YmFzZSBwbHVnaW4+LgorCitUaGUgbWV0aG9kcyB0aGF0IG5lZWQgdG8gYmUg aW1wbGVtZW50ZWQgYXJlIGFubm90YXRlZCBpbiB0aGUgTDwvTUVUSE9EUz4gc2VjdGlvbgorYmVs b3cuCisKKyAgICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAgICAgICAgIAorICAgICAgICAgICAgICDilIIgIFNlY3Rp b25Db25maWcgIOKUgiAgICAgICAgICAKKyAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICAgICAgIAorICAgICAg ICAgICAgICAgICAgICAgICDilIIgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg ICAgICAgIOKUgiAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAg4pSC ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICDilIzilIDilIDilIDilIDilIDilIDi lIDilIDilrzilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgICAgICAgCisgICAgICAgICAg ICAgIOKUgiAgICBCYXNlUGx1Z2luICAg4pSCICAgICAgICAgIAorICAgICAgICAgICAgICDilJTi lIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilJggICAg ICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDi lIDilIDilIDilIDilIDilJAgICAgICAgICAKKyAgICAgICAgICAgICDilIIgICAgICAgICAgICAg ICAgICAg4pSCICAgICAgICAgCisgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pa84pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKWvOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkAorICAgIOKUgkNvbmNyZXRlUGx1Z2luRm9v4pSCIOKU gkNvbmNyZXRlUGx1Z2luQmFy4pSCCisgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmAorCis9aGVhZDIgUkVHSVNURVJJTkcgUExVR0lO UworCitJbiBvcmRlciB0byBhY3R1YWxseSBiZSBhYmxlIHRvIHVzZSBwbHVnaW5zLCB0aGV5IG11 c3QgZmlyc3QgYmUgSTxyZWdpc3RlcmVkPgorYW5kIHRoZW4gSTxpbml0aWFsaXplZD4gdmlhIHRo ZSAiYmFzZSIgcGx1Z2luOgorCisgICAgdXNlIFBWRTo6RXhhbXBsZTo6QmFzZVBsdWdpbjsKKyAg ICB1c2UgUFZFOjpFeGFtcGxlOjpQbHVnaW5BOworICAgIHVzZSBQVkU6OkV4YW1wbGU6OlBsdWdp bkI7CisKKyAgICBQVkU6OkV4YW1wbGU6OlBsdWdpbkEtPnJlZ2lzdGVyKCk7CisgICAgUFZFOjpF eGFtcGxlOjpQbHVnaW5CLT5yZWdpc3RlcigpOworICAgIFBWRTo6RXhhbXBsZTo6QmFzZVBsdWdp bi0+aW5pdCgpOworCis9aGVhZDIgTU9ERVMKKworVGhlcmUgYXJlIHR3byBtb2RlcyBmb3IgaG93 IEk8cHJvcGVydGllcz4gYXJlIGV4cG9zZWQuCisKKz1oZWFkMyB1bmlmaWVkIG1vZGUgKGRlZmF1 bHQpCisKK0luIHRoaXMgbW9kZSB0aGVyZSBpcyBvbmx5IGEgZ2xvYmFsIGxpc3Qgb2YgSTxwcm9w ZXJ0aWVzPiB3aGljaCB0aGUgY2hpbGQKK3BsdWdpbnMgY2FuIHVzZS4gVGhpcyBoYXMgdGhlIGNv bnNlcXVlbmNlIHRoYXQgaXQncyBub3QgcG9zc2libGUgdG8gZGVmaW5lIHRoZQorc2FtZSBwcm9w ZXJ0eSBuYW1lIG1vcmUgdGhhbiBvbmNlIGluIGRpZmZlcmVudCBwbHVnaW5zLgorCitUaGUgcmVh c29uIGJlaGluZCB0aGlzIGJlaGF2aW91ciBpcyB0byBlbnN1cmUgdGhhdCBwcm9wZXJ0aWVzIHdp dGggdGhlIHNhbWUKK25hbWUgZG9uJ3QgYmVoYXZlIGluIGRpZmZlcmVudCB3YXlzLCBvciBpbiBv dGhlciB3b3JkcywgdG8gZW5mb3JjZSB0aGUgdXNlIG9mCitpZGVudGljYWwgcHJvcGVydGllcyBm b3IgbXVsdGlwbGUgcGx1Z2lucy4KKworPWhlYWQzIGlzb2xhdGVkIG1vZGUKKworVGhpcyBtb2Rl IGNhbiBiZSB1c2VkIGJ5IGNhbGxpbmcgQzxpbml0PiB3aXRoIGFuIGFkZGl0aW9uYWwgcGFyYW1l dGVyOgorCisgICAgUFZFOjpFeGFtcGxlOjpCYXNlUGx1Z2luLT5pbml0KHByb3BlcnR5X2lzb2xh dGlvbiA9PiAxKTsKKworV2l0aCB0aGlzIG1vZGUgZWFjaCBJPGNoaWxkIHBsdWdpbj4gZ2V0cyBp dHMgb3duIGlzb2xhdGVkIGxpc3Qgb2YgSTxwcm9wZXJ0aWVzPiwKK29yIGluIG90aGVyIHdvcmRz LCBhIGZ1bGx5IGlzb2xhdGVkIHNjaGVtYSBuYW1lc3BhY2UuIE5vcm1hbGx5IG9uZSB3YW50cyB0 byB1c2UKK0M8b25lT2Y+IHNjaGVtYXMgd2hlbiBlbmFibGluZyBpc29sYXRpb24uCisKK05vdGUg dGhhdCBpbiB0aGlzIG1vZGUgaXQncyBvbmx5IG5lY2Vzc2FyeSB0byBzcGVjaWZ5IGEgSTxwcm9w ZXJ0eT4gaW4gdGhlCitDPG9wdGlvbnM+IG1ldGhvZCB3aGVuIGl0J3MgZWl0aGVyIEM8Zml4ZWQ+ IG9yIHN0ZW1zIGZyb20gdGhlIGdsb2JhbCBsaXN0IG9mCitJPHByb3BlcnRpZXM+LgorCitBbGwg bG9jYWxseSBkZWZpbmVkIEk8cHJvcGVydGllcz4gb2YgYSBJPGNoaWxkIHBsdWdpbj4gYXJlIGF1 dG9tYXRpY2FsbHkgYWRkZWQKK3RvIGl0cyBzY2hlbWEuCisKKz1oZWFkMiBNRVRIT0RTCisKKz1j dXQKIAogbXkgJGRlZmF1bHREYXRhID0gewogICAgIG9wdGlvbnMgPT4ge30sCkBAIC03NywxMSAr MTE0LDg1IEBAIG15ICRkZWZhdWx0RGF0YSA9IHsKICAgICBwcm9wZXJ0eUxpc3QgPT4ge30sCiB9 OwogCis9cG9kCisKKz1oZWFkMyBwcml2YXRlCisKK0I8UkVRVUlSRUQ6PiBNdXN0IGJlIGltcGxl bWVudGVkIGluIHRoZSBJPGJhc2UgcGx1Z2luPi4KKworICAgICRkYXRhID0gUFZFOjpFeGFtcGxl OjpQbHVnaW4tPnByaXZhdGUoKQorICAgICRkYXRhID0gJGNsYXNzLT5wcml2YXRlKCkKKworR2V0 dGVyIGZvciBDPFNlY3Rpb25Db25maWc+LXJlbGF0ZWQgcHJpdmF0ZSBkYXRhLgorCitNb3N0IGNv bW1vbmx5IHRoaXMgaXMgdXNlZCB0byBzaW1wbHkgcmV0cmlldmUgdGhlIGRlZmF1bHQgSTxwcm9w ZXJ0eT4gbGlzdCBvZgorb25lJ3MgcGx1Z2luIGFyY2hpdGVjdHVyZSwgZm9yIGV4YW1wbGU6CisK KyAgICB1c2UgUFZFOjpKU09OU2NoZW1hIHF3KGdldF9zdGFuZGFyZF9vcHRpb24pOworCisgICAg dXNlIGJhc2UgcXcoUFZFOjpTZWN0aW9uQ29uZmlnKTsKKworICAgICMgWy4uLl0KKworICAgIG15 ICRkZWZhdWx0RGF0YSA9IHsKKwlwcm9wZXJ0eUxpc3QgPT4geworCSAgICB0eXBlID0+IHsKKwkJ ZGVzY3JpcHRpb24gPT4gIlR5cGUgb2YgcGx1Z2luLiIKKwkgICAgfSwKKwkgICAgbm9kZXMgPT4g Z2V0X3N0YW5kYXJkX29wdGlvbigncHZlLW5vZGUtbGlzdCcsIHsKKwkJZGVzY3JpcHRpb24gPT4g Ikxpc3Qgb2Ygbm9kZXMgZm9yIHdoaWNoIHRoZSBwbHVnaW4gYXBwbGllcy4iLAorCQlvcHRpb25h bCA9PiAxLAorCSAgICB9KSwKKwkgICAgZGlzYWJsZSA9PiB7CisJCWRlc2NyaXB0aW9uID0+ICJG bGFnIHRvIGRpc2FibGUgdGhlIHBsdWdpbi4iLAorCQl0eXBlID0+ICdib29sZWFuJywKKwkJb3B0 aW9uYWwgPT4gMSwKKwkgICAgfSwKKwkgICAgJ21heC1mb28tcmF0ZScgPT4geworCQlkZXNjcmlw dGlvbiA9PiAiTWF4aW11bSAnZm9vJyByYXRlIG9mIHRoZSBwbHVnaW4uIFVzZSAnLTEnIGZvciB1 bmxpbWl0ZWQuIiwKKwkJdHlwZSA9PiAnaW50ZWdlcicsCisJCW1pbmltdW0gPT4gLTEsCisJCWRl ZmF1bHQgPT4gNDIsCisJCW9wdGlvbmFsID0+IDEsCisJICAgIH0sCisJICAgICMgWy4uLl0KKwl9 LAorICAgIH07CisKKyAgICBzdWIgcHJpdmF0ZSB7CisJcmV0dXJuICRkZWZhdWx0RGF0YTsKKyAg ICB9CisKKz1jdXQKKwogc3ViIHByaXZhdGUgewogICAgIGRpZSAib3ZlcndyaXRlIG1lIjsKICAg ICByZXR1cm4gJGRlZmF1bHREYXRhOwogfQogCis9cG9kCisKKz1oZWFkMyByZWdpc3RlcgorCisg ICAgUFZFOjpFeGFtcGxlOjpQbHVnaW4tPnJlZ2lzdGVyKCkKKworVXNlZCB0byByZWdpc3RlciBJ PGNoaWxkIHBsdWdpbnM+LgorCitUaGlzIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCBvbiBlYWNoIGNo aWxkIHBsdWdpbiBiZWZvcmUgSTxpbml0aWFsaXppbmc+IHRoZSBiYXNlCitwbHVnaW4uCisKK0Zv ciBleGFtcGxlOgorCisgICAgdXNlIFBWRTo6RXhhbXBsZTo6QmFzZVBsdWdpbjsKKyAgICB1c2Ug UFZFOjpFeGFtcGxlOjpQbHVnaW5BOworICAgIHVzZSBQVkU6OkV4YW1wbGU6OlBsdWdpbkI7CisK KyAgICBQVkU6OkV4YW1wbGU6OlBsdWdpbkEtPnJlZ2lzdGVyKCk7CisgICAgUFZFOjpFeGFtcGxl OjpQbHVnaW5CLT5yZWdpc3RlcigpOworICAgIFBWRTo6RXhhbXBsZTo6QmFzZVBsdWdpbi0+aW5p dCgpOworCis9Y3V0CisKIHN1YiByZWdpc3RlciB7CiAgICAgbXkgKCRjbGFzcykgPSBAXzsKIApA QCAtOTYsMjIgKzIwNywxMjcgQEAgc3ViIHJlZ2lzdGVyIHsKICAgICAkcGRhdGEtPntwbHVnaW5z fS0+eyR0eXBlfSA9ICRjbGFzczsKIH0KIAorPXBvZAorCis9aGVhZDMgdHlwZQorCitCPFJFUVVJ UkVEOj4gTXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBJPGNoaWxkIHBsdWdpbnM+LgorCisgICAgJHR5 cGUgPSBQVkU6OkV4YW1wbGU6OlBsdWdpbi0+dHlwZSgpCisgICAgJHR5cGUgPSAkY2xhc3MtPnR5 cGUoKQorCitSZXR1cm5zIHRoZSBJPHR5cGU+IG9mIGEgSTxjaGlsZCBwbHVnaW4+LCB3aGljaCBp cyBhIEk8dW5pcXVlPiBzdHJpbmcuIFRoaXMgaXMKK3VzZWQgdG8gaWRlbnRpZnkgdGhlIEk8Y2hp bGQgcGx1Z2luPi4KKworU2hvdWxkIGJlIG92ZXJyaWRkZW4gb24gSTxjaGlsZCBwbHVnaW5zPjoK KworICAgIHN1YiB0eXBlIHsKKwlyZXR1cm4gImZvbyI7CisgICAgfQorCis9Y3V0CisKIHN1YiB0 eXBlIHsKICAgICBkaWUgIm92ZXJ3cml0ZSBtZSI7CiB9CiAKKz1wb2QKKworPWhlYWQzIHByb3Bl cnRpZXMKKworQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4gSTxjaGlsZCBwbHVn aW5zPi4KKworICAgICRwcm9wcyA9IFBWRTo6RXhhbXBsZTo6UGx1Z2luLT5wcm9wZXJ0aWVzKCkK KyAgICAkcHJvcHMgPSAkY2xhc3MtPnByb3BlcnRpZXMoKQorCitSZXR1cm5zIHRoZSBJPHByb3Bl cnRpZXM+IHNwZWNpZmljIHRvIGEgSTxjaGlsZCBwbHVnaW4+IGFzIGEgaGFzaC4KKworICAgIHN1 YiBwcm9wZXJ0aWVzKCkgeworCXJldHVybiB7CisJICAgIHBhdGggPT4geworCQlkZXNjcmlwdGlv biA9PiAiUGF0aCB1c2VkIHRvIHJldHJpZXZlIGEgJ2ZvbycuIiwKKwkJdHlwZSA9PiAnc3RyaW5n JywKKwkJZm9ybWF0ID0+ICdzb21lLWN1c3RvbS1mb3JtYXQtaGFuZGxlci1mb3ItcGF0aHMnLAor CSAgICB9LAorCSAgICBpc19iYXIgPSB7CisJCWRlc2NyaXB0aW9uID0+ICJXaGV0aGVyIHRoZSAn Zm9vJyBpcyAnYmFyJyBvciBub3QuIiwKKwkJdHlwZSA9PiAnYm9vbGVhbicsCisJICAgIH0sCisJ ICAgIGJ3bGltaXQgPT4gZ2V0X3N0YW5kYXJkX29wdGlvbignYndsaW1pdCcpLAorCX07CisgICAg fQorCis9Y3V0CisKIHN1YiBwcm9wZXJ0aWVzIHsKICAgICByZXR1cm4ge307CiB9CiAKKz1wb2QK KworPWhlYWQzIG9wdGlvbnMKKworQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4g STxjaGlsZCBwbHVnaW5zPi4KKworICAgICRvcHRzID0gUFZFOjpFeGFtcGxlOjpQbHVnaW4tPm9w dGlvbnMoKQorICAgICRvcHRzID0gJGNsYXNzLT5vcHRpb25zKCkKKworVGhpcyBtZXRob2QgaXMg dXNlZCB0byBzcGVjaWZ5IHdoaWNoIEk8cHJvcGVydGllcz4gYXJlIGFjdHVhbGx5IGNvbmZpZ3Vy ZWQgZm9yCithIGdpdmVuIEk8Y2hpbGQgcGx1Z2luPi4gTW9yZSBwcmVjaXNlbHksIG9ubHkgdGhl IEk8cHJvcGVydGllcz4gdGhhdCBhcmUKK2NvbnRhaW5lZCBpbiB0aGUgaGFzaCB0aGlzIG1ldGhv ZCByZXR1cm5zIGNhbiBiZSB1c2VkLgorCitBZGRpdGlvbmFsbHksIGl0IGFsc28gYWxsb3dzIHRv IGRlY2xhcmUgd2hldGhlciBhIHByb3BlcnR5IGlzIEM8b3B0aW9uYWw+IG9yCitDPGZpeGVkPi4K KworICAgIHN1YiBvcHRpb25zIHsKKwlyZXR1cm4geworCSAgICAnc29tZS1vcHRpb25hbC1wcm9w ZXJ0eScgPT4geyBvcHRpb25hbCA9PiAxIH0sCisJICAgICdhLWZpeGVkLXByb3BlcnR5JyA9PiB7 IGZpeGVkID0+IDEgfSwKKwkgICAgJ2EtcmVxdWlyZWQtYnV0LW5vdC1maXhlZC1wcm9wZXJ0eScg PT4ge30sCisJfTsKKyAgICB9CisKK0M8b3B0aW9uYWw+IEk8cHJvcGVydGllcz4gYXJlIG5vdCBy ZXF1aXJlZCB0byBiZSBzZXQuCisKK0M8Zml4ZWQ+IEk8cHJvcGVydGllcz4gbWF5IG9ubHkgYmUg c2V0IG9uIGNyZWF0aW9uIG9mIHRoZSBjb25maWcgZW50aXR5LgorCis9Y3V0CisKIHN1YiBvcHRp b25zIHsKICAgICByZXR1cm4ge307CiB9CiAKKz1wb2QKKworPWhlYWQzIHBsdWdpbmRhdGEKKwor QjxPUFRJT05BTDo+IENhbiBiZSBpbXBsZW1lbnRlZCBpbiBJPGNoaWxkIHBsdWdpbnM+LgorCisg ICAgJHBsdWdpbmRhdGEgPSBQVkU6OkV4YW1wbGU6OlBsdWdpbi0+cGx1Z2luZGF0YSgpCisgICAg JHBsdWdpbmRhdGEgPSAkY2xhc3MtPnBsdWdpbmRhdGEoKQorCitUaGlzIG1ldGhvZCBpcyB1c2Vk IGJ5IHBsdWdpbiBhdXRob3JzIHRvIHByb3ZpZGUgYW55IGtpbmQgb2YgZGF0YSBzcGVjaWZpYyB0 bwordGhlaXIgcGx1Z2luIGltcGxlbWVudGF0aW9uIGFuZCBpcyBvdGhlcndpc2Ugbm90IHRvdWNo ZWQgYnkgQzxTZWN0aW9uQ29uZmlnPi4KKworVGhpcyBtb3N0bHkgZXhpc3RzIGZvciBjb252ZW5p ZW5jZSBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIGltcGxlbWVudGVkLgorCis9Y3V0CisKIHN1YiBw bHVnaW5kYXRhIHsKICAgICByZXR1cm4ge307CiB9CiAKKz1wb2QKKworPWhlYWQzIGhhc19pc29s YXRlZF9wcm9wZXJ0aWVzCisKKyAgICAkaXNfaXNvbGF0ZWQgPSBQVkU6OkV4YW1wbGU6OlBsdWdp bi0+aGFzX2lzb2xhdGVkX3Byb3BlcnRpZXMoKQorICAgICRpc19pc29sYXRlZCA9ICRjbGFzcy0+ aGFzX2lzb2xhdGVkX3Byb3BlcnRpZXMoKQorCitDaGVja3Mgd2hldGhlciB0aGUgcGx1Z2luIGhh cyBpc29sYXRlZCBJPHByb3BlcnRpZXM+IChydW5zIGluIGlzb2xhdGVkIG1vZGUpLgorCis9Y3V0 CisKIHN1YiBoYXNfaXNvbGF0ZWRfcHJvcGVydGllcyB7CiAgICAgbXkgKCRjbGFzcykgPSBAXzsK IApAQCAtMTY4LDYgKzM4NCwzNCBAQCBteSBzdWIgYWRkX3Byb3BlcnR5IHsKICAgICB9CiB9Owog Cis9cG9kCisKKz1oZWFkMyBjcmVhdGVTY2hlbWEKKworICAgICRzY2hlbWEgPSBQVkU6OkV4YW1w bGU6OlBsdWdpbi0+KCRza2lwX3R5cGUsICRiYXNlKQorICAgICRzY2hlbWEgPSAkY2xhc3MtPigk c2tpcF90eXBlLCAkYmFzZSkKKworUmV0dXJucyB0aGUgQzxQVkU6OkpTT05TY2hlbWE+IHVzZWQg Zm9yIEk8Y3JlYXRpbmc+IGluc3RhbmNlcyBvZiBhCitJPGNoaWxkIHBsdWdpbj4uCisKK1RoaXMg c2NoZW1hIG1heSB0aGVuIGJlIHVzZWQgYXMgZGVzaXJlZCwgZm9yIGV4YW1wbGUgYXMgdGhlIGRl ZmluaXRpb24gb2YKK3BhcmFtZXRlcnMgb2YgYW4gQVBJIGhhbmRsZXIgKEM8UE9TVD4pLgorCis9 b3ZlcgorCis9aXRlbSBDPCRza2lwX3R5cGU+IChvcHRpb25hbCkKKworQ2FuIGJlIHNldCB0byBD PDE+IGlmIHRoZXJlJ3MgYSBJPHByb3BlcnR5PiBuYW1lZCAidHlwZSIgaW4gdGhlIGxpc3Qgb2YK K2RlZmF1bHQgSTxwcm9wZXJ0aWVzPiB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIHRoZSBn ZW5lcmF0ZWQgc2NoZW1hLgorCis9aXRlbSBDPCRiYXNlPiAob3B0aW9uYWwpCisKK1RoZSBJPHBy b3BlcnRpZXM+IHRvIHVzZSBwZXIgZGVmYXVsdC4KKworPWJhY2sKKworPWN1dAorCiBzdWIgY3Jl YXRlU2NoZW1hIHsKICAgICBteSAoJGNsYXNzLCAkc2tpcF90eXBlLCAkYmFzZSkgPSBAXzsKIApA QCAtMjQyLDYgKzQ4NiwxOCBAQCBzdWIgY3JlYXRlU2NoZW1hIHsKICAgICB9OwogfQogCis9cG9k CisKKz1oZWFkMyB1cGRhdGVTY2hlbWEKKworUmV0dXJucyB0aGUgQzxQVkU6OkpTT05TY2hlbWE+ IHVzZWQgZm9yIEk8dXBkYXRpbmc+IGluc3RhbmNlcyBvZiBhCitJPGNoaWxkIHBsdWdpbj4uCisK K1RoaXMgc2NoZW1hIG1heSB0aGVuIGJlIHVzZWQgYXMgZGVzaXJlZCwgZm9yIGV4YW1wbGUgYXMg dGhlIGRlZmluaXRpb24gb2YKK3BhcmFtZXRlcnMgb2YgYW4gQVBJIGhhbmRsZXIgKEM8UFVUPiku CisKKz1jdXQKKwogc3ViIHVwZGF0ZVNjaGVtYSB7CiAgICAgbXkgKCRjbGFzcywgJHNpbmdsZV9j bGFzcywgJGJhc2UpID0gQF87CiAKQEAgLTMyNiwxMiArNTgyLDIyIEBAIHN1YiB1cGRhdGVTY2hl bWEgewogICAgIH07CiB9CiAKLSMgdGhlICVwYXJhbSBoYXNoIGNvbnRyb2xzIHNvbWUgYmVoYXZp b3Igb2YgdGhlIHNlY3Rpb24gY29uZmlnLCBjdXJyZW50bHkgdGhlIGZvbGxvd2luZyBvcHRpb25z IGFyZQotIyB1bmRlcnN0b29kOgotIwotIyAtIHByb3BlcnR5X2lzb2xhdGlvbjogaWYgc2V0LCBl YWNoIGNoaWxkLXBsdWdpbiBoYXMgYSBmdWxseSBpc29sYXRlZCBwcm9wZXJ0eSAoc2NoZW1hKSBu YW1lc3BhY2UuCi0jICAgQnkgZGVmYXVsdCB0aGlzIGlzIG9mZiwgbWVhbmluZyBhbGwgY2hpbGQt cGx1Z2lucyBzaGFyZSB0aGUgc2NoZW1hIG9mIHByb3BlcnRpZXMgd2l0aCB0aGUgc2FtZQotIyAg IG5hbWUuIE5vcm1hbGx5IG9uZSB3YW50cyB0byB1c2Ugb25lT2Ygc2NoZW1hJ3Mgd2hlbiBlbmFi bGluZyBpc29sYXRpb24uCis9cG9kCisKKz1oZWFkMyBpbml0CisKKyAgICAkYmFzZV9wbHVnaW4t PmluaXQoKTsKKyAgICAkYmFzZV9wbHVnaW4tPmluaXQocHJvcGVydHlfaXNvbGF0aW9uID0+IDEp OworCitUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgYWxsIEk8Y2hpbGQgcGx1Z2lu cz4gdGhhdCBoYXZlIGJlZW4KK0k8cmVnaXN0ZXJlZD4gYmVmb3JlaGFuZC4KKworT3B0aW9uYWxs eSwgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBwYXNzIEM8cHJvcGVydHlfaXNvbGF0aW9uPiBhcyBw YXJhbWV0ZXIgaW4KK29yZGVyIHRvIGFjdGl2YXRlIEk8aXNvbGF0ZWQgbW9kZT4uIFNlZSBMPC9N T0RFUz4gaW4gdGhlIHBhY2thZ2UtbGV2ZWwKK2RvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3Jt YXRpb24uCisKKz1jdXQKKwogc3ViIGluaXQgewogICAgIG15ICgkY2xhc3MsICVwYXJhbSkgPSBA XzsKIApAQCAtMzkyLDYgKzY1OCwxOCBAQCBzdWIgaW5pdCB7CiAgICAgJHByb3BlcnR5TGlzdC0+ e3R5cGV9LT57ZW51bX0gPSBbc29ydCBrZXlzICUkcGx1Z2luc107CiB9CiAKKz1wb2QKKworPWhl YWQzIGxvb2t1cAorCisgICAgJHBsdWdpbiA9IFBWRTo6RXhhbXBsZTo6QmFzZVBsdWdpbi0+bG9v a3VwKCR0eXBlKQorICAgICRwbHVnaW4gPSAkY2xhc3MtPmxvb2t1cCgkdHlwZSkKKworUmV0dXJu cyB0aGUgSTxjaGlsZCBwbHVnaW4+IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIEM8dHlwZT4g b3IgZGllcyBpZiBpdAorY2Fubm90IGJlIGZvdW5kLgorCis9Y3V0CisKIHN1YiBsb29rdXAgewog ICAgIG15ICgkY2xhc3MsICR0eXBlKSA9IEBfOwogCkBAIC00MDUsNiArNjgzLDE3IEBAIHN1YiBs b29rdXAgewogICAgIHJldHVybiAkcGx1Z2luOwogfQogCis9cG9kCisKKz1oZWFkMyBsb29rdXBf dHlwZXMKKworICAgICR0eXBlcyA9IFBWRTo6RXhhbXBsZTo6QmFzZVBsdWdpbi0+bG9va3VwX3R5 cGVzKCkKKyAgICAkdHlwZXMgPSAkY2xhc3MtPmxvb2t1cF90eXBlcygpCisKK1JldHVybnMgYSBs aXN0IG9mIGFsbCBJPGNoaWxkIHBsdWdpbnMnPiBDPHR5cGU+cy4KKworPWN1dAorCiBzdWIgbG9v a3VwX3R5cGVzIHsKICAgICBteSAoJGNsYXNzKSA9IEBfOwogCkBAIC00MTMsMTggKzcwMiw2NiBA QCBzdWIgbG9va3VwX3R5cGVzIHsKICAgICByZXR1cm4gWyBzb3J0IGtleXMgJXskcGRhdGEtPntw bHVnaW5zfX0gXTsKIH0KIAorPXBvZAorCis9aGVhZDMgZGVjb2RlX3ZhbHVlCisKK0I8T1BUSU9O QUw6PiBDYW4gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIEk8YmFzZSBwbHVnaW4+LgorCisgICAgJGRl Y29kZWRfdmFsdWUgPSBQVkU6OkV4YW1wbGU6OkJhc2VQbHVnaW4tPmRlY29kZV92YWx1ZSgkdHlw ZSwgJGtleSwgJHZhbHVlKQorICAgICRkZWNvZGVkX3ZhbHVlID0gJGNsYXNzLT4oJHR5cGUsICRr ZXksICR2YWx1ZSkKKworQ2FsbGVkIGR1cmluZyBDPGNoZWNrX2NvbmZpZz4gaW4gb3JkZXIgdG8g Y29udmVydCB2YWx1ZXMgdGhhdCBoYXZlIGJlZW4gcmVhZAorZnJvbSBhIEM8U2VjdGlvbkNvbmZp Zz4gZmlsZSB3aGljaCBoYXZlIGJlZW4gSTxlbmNvZGVkPiBiZWZvcmVoYW5kIGJ5CitDPGVuY29k ZV92YWx1ZT4uCisKK0RvZXMgbm90aGluZyB0byBDPCR2YWx1ZT4gYnkgZGVmYXVsdCwgYnV0IGNh biBiZSBvdmVycmlkZGVuIGluIHRoZSBJPGJhc2UgcGx1Z2luPgoraW4gb3JkZXIgdG8gaW1wbGVt ZW50IGN1c3RvbSBjb252ZXJzaW9uIGJlaGF2aW9yLgorCis9Y3V0CisKIHN1YiBkZWNvZGVfdmFs dWUgewogICAgIG15ICgkY2xhc3MsICR0eXBlLCAka2V5LCAkdmFsdWUpID0gQF87CiAKICAgICBy ZXR1cm4gJHZhbHVlOwogfQogCis9cG9kCisKKz1oZWFkMyBlbmNvZGVfdmFsdWUKKworQjxPUFRJ T05BTDo+IENhbiBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgSTxiYXNlIHBsdWdpbj4uCisKKyAgICAk ZW5jb2RlZF92YWx1ZSA9IFBWRTo6RXhhbXBsZTo6QmFzZVBsdWdpbi0+ZW5jb2RlX3ZhbHVlKCR0 eXBlLCAka2V5LCAkdmFsdWUpCisgICAgJGVuY29kZWRfdmFsdWUgPSAkY2xhc3MtPigkdHlwZSwg JGtleSwgJHZhbHVlKQorCitDYWxsZWQgZHVyaW5nIEM8d3JpdGVfY29uZmlnPiBpbiBvcmRlciB0 byBjb252ZXJ0IHZhbHVlcyBpbnRvIGEgc2VyaWFsaXphYmxlCitmb3JtYXQuCisKK0RvZXMgbm90 aGluZyB0byBDPCR2YWx1ZT4gYnkgZGVmYXVsdCwgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGluIHRo ZSBJPGJhc2UgcGx1Z2luPgoraW4gb3JkZXIgdG8gaW1wbGVtZW50IGN1c3RvbSBjb252ZXJzaW9u IGJlaGF2aW9yLiBVc3VhbGx5IG9uZSBzaG91bGQgYWxzbworb3ZlcnJpZGUgQzxkZWNvZGVfdmFs dWU+IGluIGEgbWF0Y2hpbmcgbWFubmVyLgorCis9Y3V0CisKIHN1YiBlbmNvZGVfdmFsdWUgewog ICAgIG15ICgkY2xhc3MsICR0eXBlLCAka2V5LCAkdmFsdWUpID0gQF87CiAKICAgICByZXR1cm4g JHZhbHVlOwogfQogCis9cG9kCisKKz1oZWFkMyBjaGVja192YWx1ZQorCisgICAgJGNoZWNrZWRf dmFsdWUgPSBQVkU6OkV4YW1wbGU6OkJhc2VQbHVnaW4tPmNoZWNrX3ZhbHVlKCR0eXBlLCAka2V5 LCAkdmFsdWUsICRzdG9yZWlkLCAkc2tpcFNjaGVtYUNoZWNrKQorICAgICRjaGVja2VkX3ZhbHVl ID0gJGNsYXNzLT5jaGVja192YWx1ZSgkdHlwZSwgJGtleSwgJHZhbHVlLCAkc3RvcmVpZCwgJHNr aXBTY2hlbWFDaGVjaykKKworVXNlZCBpbnRlcm5hbGx5IHRvIGNoZWNrIGlmIHZhcmlvdXMgaW52 YXJpYW50cyBhcmUgdXBoZWxkLiBJdCdzIGJlc3QgdG8gbm90CitvdmVycmlkZSB0aGlzLgorCis9 Y3V0CisKIHN1YiBjaGVja192YWx1ZSB7CiAgICAgbXkgKCRjbGFzcywgJHR5cGUsICRrZXksICR2 YWx1ZSwgJHN0b3JlaWQsICRza2lwU2NoZW1hQ2hlY2spID0gQF87CiAKQEAgLTQ3Myw2ICs4MTAs NDYgQEAgc3ViIGNoZWNrX3ZhbHVlIHsKICAgICByZXR1cm4gJHZhbHVlOwogfQogCis9cG9kCisK Kz1oZWFkMyBwYXJzZV9zZWN0aW9uX2hlYWRlcgorCitCPE9QVElPTkFMOj4gQ2FuIGJlIEk8ZXh0 ZW5kZWQ+IGluIHRoZSBJPGJhc2UgcGx1Z2luPi4KKworICAgICgkdHlwZSwgJHNlY3Rpb25JZCwg JGVycm1zZywgJGNvbmZpZykgPSBQVkU6OkV4YW1wbGU6OkJhc2VQbHVnaW4tPnBhcnNlX3NlY3Rp b25faGVhZGVyKCRsaW5lKQorICAgICgkdHlwZSwgJHNlY3Rpb25JZCwgJGVycm1zZywgJGNvbmZp ZykgPSAkY2xhc3MtPnBhcnNlX3NlY3Rpb25faGVhZGVyKCRsaW5lKQorCitQYXJzZXMgdGhlIGhl YWRlciBvZiBhIHNlY3Rpb24gYW5kIHJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc2Vj dGlvbidzCitDPHR5cGU+LCBJRCBhbmQgb3B0aW9uYWxseSBhbiBlcnJvciBtZXNzYWdlIGFzIHdl bGwgYXMgYWRkaXRpb25hbCBjb25maWcKK2F0dHJpYnV0ZXMuCisKK0NhbiBiZSBvdmVycmlkZW4g b24gdGhlIEk8YmFzZSBwbHVnaW4+IGluIG9yZGVyIHRvIHByb3ZpZGUgY3VzdG9tIGxvZ2ljIGZv cgoraGFuZGxpbmcgdGhlIGhlYWRlciwgZS5nLiBpZiB0aGUgc2VjdGlvbiBJRHMgbmVlZCB0byBi ZSBwYXJzZWQgb3IgdmFsaWRhdGVkIGluCithIGNlcnRhaW4gd2F5LgorCitOb3RlIHRoYXQgdGhl IHNlY3Rpb24gQjxNVVNUPiBpbml0aWFsbHkgYmUgcGFyc2VkIHdpdGggdGhlIHJlZ2V4IHVzZWQg YnkgdGhlCitvcmlnaW5hbCBtZXRob2Qgd2hlbiBvdmVycmlkaW5nIGluIG9yZGVyIHRvIGd1YXJh bnRlZSBjb21wYXRpYmlsaXR5LgorRm9yIGV4YW1wbGU6CisKKyAgICBzdWIgcGFyc2Vfc2VjdGlv bl9oZWFkZXIgeworCW15ICgkY2xhc3MsICRsaW5lKSA9IEBfOworCisJaWYgKCRsaW5lID1+IG0v XihcUyk6XHMqKFxTKylccyokLykgeworCSAgICBteSAoJHR5cGUsICRzZWN0aW9uSWQpID0gKCQx LCAkMik7CisKKwkgICAgbXkgJGVycm1zZyA9IHVuZGVmOworCSAgICBldmFsIHsgY2hlY2tfc2Vj dGlvbl9pZF9pc192YWxpZCgkc2VjdGlvbklkKTsgfTsKKwkgICAgJGVycm1zZyA9ICRAIGlmICRA OworCisJICAgIG15ICRjb25maWcgPSBwYXJzZV9leHRyYV9zdHVmZl9mcm9tX3NlY3Rpb25faWQo JHNlY3Rpb25JZCk7CisKKwkgICAgcmV0dXJuICgkdHlwZSwgJHNlY3Rpb25JZCwgJGVycm1zZywg JGNvbmZpZyk7CisJfQorCXJldHVybiB1bmRlZjsKKyAgICB9CisKKz1jdXQKKwogc3ViIHBhcnNl X3NlY3Rpb25faGVhZGVyIHsKICAgICBteSAoJGNsYXNzLCAkbGluZSkgPSBAXzsKIApAQCAtNDg1 LDEyICs4NjIsNDAgQEAgc3ViIHBhcnNlX3NlY3Rpb25faGVhZGVyIHsKICAgICByZXR1cm4gdW5k ZWY7CiB9CiAKKz1wb2QKKworPWhlYWQzIGZvcm1hdF9zZWN0aW9uX2hlYWRlcgorCitCPE9QVElP TkFMOj4gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIEk8YmFzZSBwbHVnaW4+LgorCisgICAgJGhl YWRlciA9IFBWRTo6RXhhbXBsZTo6QmFzZVBsdWdpbi0+Zm9ybWF0X3NlY3Rpb25faGVhZGVyKCR0 eXBlLCAkc2VjdGlvbklkLCAkc2NmZywgJGRvbmVfaGFzaCkKKyAgICAkaGVhZGVyID0gJGNsYXNz LT5mb3JtYXRfc2VjdGlvbl9oZWFkZXIoJHR5cGUsICRzZWN0aW9uSWQsICRzY2ZnLCAkZG9uZV9o YXNoKQorCitGb3JtYXRzIHRoZSBoZWFkZXIgb2YgYSBzZWN0aW9uLiBTaW1wbHkgQzwiJHR5cGU6 ICRzZWN0aW9uSWRcbiI+IGJ5IGRlZmF1bHQuCisKK05vdGUgdGhhdCB3aGVuIG92ZXJyaWRpbmcg dGhpcywgdGhlIGhlYWRlciBCPE1VU1Q+IGVuZCB3aXRoIGEgbmV3bGluZSAoQzxcbj4pLgorT25l IGFsc28gbWlnaHQgd2FudCB0byBhZGQgYSBtYXRjaGluZyBvdmVycmlkZSBmb3IgQzxwYXJzZV9z ZWN0aW9uX2hlYWRlcj4uCisKKz1jdXQKKwogc3ViIGZvcm1hdF9zZWN0aW9uX2hlYWRlciB7CiAg ICAgbXkgKCRjbGFzcywgJHR5cGUsICRzZWN0aW9uSWQsICRzY2ZnLCAkZG9uZV9oYXNoKSA9IEBf OwogCiAgICAgcmV0dXJuICIkdHlwZTogJHNlY3Rpb25JZFxuIjsKIH0KIAorPXBvZAorCis9aGVh ZDMgZ2V0X3Byb3BlcnR5X3NjaGVtYQorCisgICAgJHNjaGVtYSA9IFBWRTo6RXhhbXBsZTo6QmFz ZVBsdWdpbi0+Z2V0X3Byb3BlcnR5X3NjaGVtYSgkdHlwZSwgJGtleSkKKyAgICAkc2NoZW1hID0g JGNsYXNzLT5nZXRfcHJvcGVydHlfc2NoZW1hKCR0eXBlLCAka2V5KQorCitSZXR1cm5zIHRoZSBz Y2hlbWEgb2YgYSBJPHByb3BlcnR5PiBvZiBhIEk8Y2hpbGQgcGx1Z2luPiB0aGF0IGlzIGRlbm90 ZWQgdmlhCitpdHMgQzwkdHlwZT4uCisKKz1jdXQKKwogc3ViIGdldF9wcm9wZXJ0eV9zY2hlbWEg ewogICAgIG15ICgkY2xhc3MsICR0eXBlLCAka2V5KSA9IEBfOwogCkBAIC01MDYsNiArOTExLDEw NiBAQCBzdWIgZ2V0X3Byb3BlcnR5X3NjaGVtYSB7CiAgICAgcmV0dXJuICRzY2hlbWE7CiB9CiAK Kz1wb2QKKworPWhlYWQzIHBhcnNlX2NvbmZpZworCisgICAgJGNvbmZpZyA9IFBWRTo6RXhhbXBs ZTo6QmFzZVBsdWdpbi0+cGFyc2VfY29uZmlnKCRmaWxlbmFtZSwgJHJhdywgJGFsbG93X3Vua25v d24pCisgICAgJGNvbmZpZyA9ICRjbGFzcy0+cGFyc2VfY29uZmlnKCRmaWxlbmFtZSwgJHJhdywg JGFsbG93X3Vua25vd24pCisKK1BhcnNlcyB0aGUgY29udGVudHMgb2YgYSBDPFNlY3Rpb25Db25m aWc+IGZpbGUgYW5kIHJldHVybnMgYSBjb21wbGV4IG5lc3RlZAoraGFzaCB3aGljaCBub3Qgb25s eSBjb250YWlucyB0aGUgcGFyc2VkIGRhdGEsIGJ1dCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRo YXQKK29uZSBtYXkgb3IgbWF5IG5vdCBmaW5kIHVzZWZ1bC4gTW9yZSBiZWxvdy4KKworPW92ZXIK KworPWl0ZW0gQzwkZmlsZW5hbWU+CisKK1RoZSBuYW1lIG9mIHRoZSBmaWxlIHdob3NlIGNvbnRl bnQgaXMgc3RvcmVkIGluIEM8JHJhdz4uCisKKz1pdGVtIEM8JHJhdz4KKworVGhlIHJhdyBjb250 ZW50IG9mIEM8JGZpbGVuYW1lPi4KKworPWl0ZW0gQzwkYWxsb3dfdW5rbm93bj4KKworV2hldGhl ciB0byBhbGxvdyBwYXJzaW5nIHVua25vd24gSTx0eXBlcz4uCisKKz1iYWNrCisKK1RoZSByZXR1 cm5lZCBoYXNoIGlzIHN0cnVjdHVyZWQgYXMgZm9sbG93czoKKworICAgIHsKKwlpZHMgPT4gewor CSAgICBmb28gPT4geworCQlrZXkgPT4gdmFsdWUsCisJCS4uLgorCSAgICB9LAorCSAgICBiYXIg PT4geworCQlrZXkgPT4gdmFsdWUsCisJCS4uLgorCSAgICB9LAorCX0sCisJb3JkZXIgPT4gewor CSAgICBmb28gPT4gMSwKKwkgICAgYmFyID0+IDIsCisJfSwKKwlkaWdlc3QgPT4gIjVmNTUxM2Y4 ODIyZmRiZTUxNDVhZjMzYjY0ZDhkOTcwZGNmOTVjNmUiLAorCWVycm9ycyA9PiAoCisJICAgIHsK KwkJY29udGV4dCA9PiAuLi4sCisJCXNlY3Rpb24gPT4gInNlY3Rpb24gSUQiLAorCQlrZXkgPT4g InNvbWVfa2V5IiwKKwkJZXJyID0+ICJlcnJvciBtZXNzYWdlIiwKKwkgICAgfSwKKwkgICAgLi4u CisJKSwKKyAgICB9CisKKz1vdmVyCisKKz1pdGVtIEM8aWRzPgorCitFYWNoIHNlY3Rpb24ncyBw YXJzZWQgY29uZmlndXJhdGlvbiB2YWx1ZXMsIG9yIG1vcmUgcHJlY2lzZWx5LCB0aGUgSTxzZWN0 aW9uCitpZGVudGlmaWVycz4gYW5kIHRoZWlyIGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbiBvcHRp b25zIGFzIHJldHVybmVkIGJ5CitDPGNoZWNrX2NvbmZpZz4uCisKKz1pdGVtIEM8b3JkZXI+CisK K1RoZSBvcmRlciBpbiB3aGljaCB0aGUgc2VjdGlvbnMgaW4gQzxpZHM+IHdlcmUgcGFyc2VkLgor Cis9aXRlbSBDPGRpZ2VzdD4KKworQSBTSEExIGhleCBkaWdlc3Qgb2YgdGhlIGNvbnRlbnRzIGlu IEM8JHJhdz4uCisKKz1pdGVtIEM8ZXJyb3JzPiAob3B0aW9uYWwpCisKK0FuIG9wdGlvbmFsIGxp c3Qgb2YgZXJyb3IgaGFzaGVzLCB3aGVyZSBlYWNoIGhhc2ggY29udGFpbnMgdGhlIGZvbGxvd2lu ZyBrZXlzOgorCis9b3ZlciAyCisKKz1pdGVtIEM8Y29udGV4dD4KKworSW4gd2hpY2ggZmlsZSBh bmQgaW4gd2hpY2ggbGluZSB0aGUgZXJyb3Igd2FzIGVuY291bnRlcmVkLgorCis9aXRlbSBDPHNl Y3Rpb24+CisKK0luIHdoaWNoIHNlY3Rpb24gdGhlIGVycm9yIHdhcyBlbmNvdW50ZXJlZC4KKwor PWl0ZW0gQzxrZXk+CisKK1doaWNoIEk8cHJvcGVydHk+IHRoZSBlcnJvciBjb3JyZXNwb25kcyB0 by4KKworPWl0ZW0gQzxlcnI+CisKK1RoZSBlcnJvci4KKworPWJhY2sKKworPWJhY2sKKworPWN1 dAorCiBzdWIgcGFyc2VfY29uZmlnIHsKICAgICBteSAoJGNsYXNzLCAkZmlsZW5hbWUsICRyYXcs ICRhbGxvd191bmtub3duKSA9IEBfOwogCkBAIC02NDIsNiArMTE0NywyMyBAQCBzdWIgcGFyc2Vf Y29uZmlnIHsKICAgICByZXR1cm4gJGNmZzsKIH0KIAorPXBvZAorCis9aGVhZDMgY2hlY2tfY29u ZmlnCisKKyAgICAkc2V0dGluZ3MgPSBQVkU6OkV4YW1wbGU6OkJhc2VQbHVnaW4tPmNoZWNrX2Nv bmZpZygkc2VjdGlvbklkLCAkY29uZmlnLCAkY3JlYXRlLCAkc2tpcFNjaGVtYUNoZWNrKQorICAg ICRzZXR0aW5ncyA9ICRjbGFzcy0+Y2hlY2tfY29uZmlnKCRzZWN0aW9uSWQsICRjb25maWcsICRj cmVhdGUsICRza2lwU2NoZW1hQ2hlY2spCisKK0RvZXMgbm90IGp1c3QgY2hlY2sgd2hldGhlciBh IHNlY3Rpb24ncyBjb25maWd1cmF0aW9uIGlzIHZhbGlkLCBkZXNwaXRlIGl0cworbmFtZSwgYnV0 IGFsc28gY2FsbHMgQzxkZWNvZGVfdmFsdWU+IChhbW9uZyBvdGhlciB0aGluZ3MpIGludGVybmFs bHkuCisKK1JldHVybnMgYSBoYXNoIHdoaWNoIGNvbnRhaW5zIGFsbCBJPHByb3BlcnRpZXM+IGZv ciB0aGUgZ2l2ZW4gQzwkc2VjdGlvbklkPi4KK0luIG90aGVyIHdvcmRzLCBhbGwgY29uZmlndXJl ZCBrZXktdmFsdWUgcGFpcnMgZm9yIHRoZSBwcm92aWRlZCBzZWN0aW9uLgorCitJdCdzIGJlc3Qg dG8gbm90IG92ZXJyaWRlIHRoaXMuCisKKz1jdXQKKwogc3ViIGNoZWNrX2NvbmZpZyB7CiAgICAg bXkgKCRjbGFzcywgJHNlY3Rpb25JZCwgJGNvbmZpZywgJGNyZWF0ZSwgJHNraXBTY2hlbWFDaGVj aykgPSBAXzsKIApAQCAtNzAwLDYgKzEyMjIsNTIgQEAgbXkgJGZvcm1hdF9jb25maWdfbGluZSA9 IHN1YiB7CiAgICAgfQogfTsKIAorPXBvZAorCis9aGVhZDMgd3JpdGVfY29uZmlnCisKKyAgICAk b3V0cHV0ID0gUFZFOjpFeGFtcGxlOjpCYXNlUGx1Z2luLT53cml0ZV9jb25maWcoJGZpbGVuYW1l LCAkY2ZnLCAkYWxsb3dfdW5rbm93bikKKyAgICAkb3V0cHV0ID0gJGNsYXNzLT53cml0ZV9jb25m aWcoJGZpbGVuYW1lLCAkY2ZnLCAkYWxsb3dfdW5rbm93bikKKworR2VuZXJhdGVzIHRoZSBvdXRw dXQgdGhhdCBzaG91bGQgYmUgd3JpdHRlbiB0byB0aGUgQzxTZWN0aW9uQ29uZmlnPiBmaWxlLgor Cis9b3ZlcgorCis9aXRlbSBDPCRmaWxlbmFtZT4gKHVudXNlZCkKKworVGhlIG5hbWUgb2YgdGhl IGZpbGUgdG8gd2hpY2ggdGhlIGdlbmVyYXRlZCBvdXRwdXQgd2lsbCBiZSB3cml0dGVuIHRvLgor VGhpcyBwYXJhbWV0ZXIgaXMgY3VycmVudGx5IHVudXNlZCBhbmQgaGFzIG5vIGVmZmVjdC4KKwor PWl0ZW0gQzwkY2ZnPgorCitUaGUgaGFzaCB0aGF0IHJlcHJlc2VudHMgdGhlIGVudGlyZSBjb25m aWd1cmF0aW9uIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4uCitUaGlzIGhhc2ggaXMgZXhwZWN0ZWQg dG8gaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKKworICAgIHsKKwlpZHMgPT4geworCSAgICBm b28gPT4geworCQlrZXkgPT4gdmFsdWUsCisJCS4uLgorCSAgICB9LAorCSAgICBiYXIgPT4gewor CQlrZXkgPT4gdmFsdWUsCisJCS4uLgorCSAgICB9LAorCX0sCisJb3JkZXIgPT4geworCSAgICBm b28gPT4gMSwKKwkgICAgYmFyID0+IDIsCisJfSwKKyAgICB9CisKKz1pdGVtIEM8JGFsbG93X3Vu a25vd24+CisKK1doZXRoZXIgdG8gYWxsb3cgd3JpdGluZyBzZWN0aW9ucyB3aXRoIGFuIHVua25v d24gQzx0eXBlPi4KKworPWJhY2sKKworPWN1dAorCiBzdWIgd3JpdGVfY29uZmlnIHsKICAgICBt eSAoJGNsYXNzLCAkZmlsZW5hbWUsICRjZmcsICRhbGxvd191bmtub3duKSA9IEBfOwogCkBAIC03 OTgsNiArMTM2Niw0NSBAQCBzdWIgYXNzZXJ0X2lmX21vZGlmaWVkIHsKICAgICBQVkU6OlRvb2xz Ojphc3NlcnRfaWZfbW9kaWZpZWQoJGNmZy0+e2RpZ2VzdH0sICRkaWdlc3QpOwogfQogCis9cG9k CisKKz1oZWFkMyBkZWxldGVfZnJvbV9jb25maWcKKworICAgICRjb25maWcgPSBQVkU6OkV4YW1w bGU6OkJhc2VQbHVnaW4tPmRlbGV0ZV9mcm9tX2NvbmZpZygkY29uZmlnLCAkb3B0aW9uX3NjaGVt YSwgJG5ld19vcHRpb25zLCAkdG9fZGVsZXRlKQorICAgICRjb25maWcgPSAkY2xhc3MtPmRlbGV0 ZV9mcm9tX2NvbmZpZygkY29uZmlnLCAkb3B0aW9uX3NjaGVtYSwgJG5ld19vcHRpb25zLCAkdG9f ZGVsZXRlKQorCitDb252ZW5pZW5jZSBtZXRob2QgdG8gZGVsZXRlIGtleSBmcm9tIGEgaGFzaCBv ZiBjb25maWd1cmVkIEk8cHJvcGVydGllcz4gd2hpY2gKK3BlcmZvcm1zIG5lY2Vzc2FyeSBjaGVj a3MgYmVmb3JlaGFuZC4KKworTm90ZTogVGhlIHBhc3NlZCBDPCRjb25maWc+IGlzIG1vZGlmaWVk IGluIHBsYWNlIGFuZCBhbHNvIHJldHVybmVkLgorCis9b3ZlcgorCis9aXRlbSBDPCRjb25maWc+ CisKK1RoZSBzZWN0aW9uJ3MgY29uZmlndXJhdGlvbiB0aGF0IHRoZSBnaXZlbiBJPHByb3BlcnRp ZXM+IGluIEM8JHRvX2RlbGV0ZT4gc2hvdWxkCitiZSBkZWxldGVkIGZyb20uCisKKz1pdGVtIEM8 JG9wdGlvbl9zY2hlbWE+CisKK1RoZSBzY2hlbWEgb2YgdGhlIEk8cHJvcGVydGllcz4gYXNzb2Np YXRlZCB3aXRoIEM8JGNvbmZpZz4uIFNlZSB0aGUgQzxvcHRpb25zPgorbWV0aG9kLgorCis9aXRl bSBDPCRuZXdfb3B0aW9ucz4KKworVGhlIEk8cHJvcGVydGllcz4gd2hpY2ggYXJlIHRvIGJlIGFk ZGVkIHRvIEM8JGNvbmZpZz4uIE5vdGUgdGhhdCB0aGlzIG1ldGhvZAorZG9lc24ndCBhZGQgYW55 IEk8cHJvcGVydGllcz4gaXRzZWxmOyB0aGlzIGlzIHRvIHByb2hpYml0IHNpbXVsdGFuZW91c2x5 CitzZXR0aW5nIGFuZCBkZWxldGluZyB0aGUgc2FtZSBJPHByb3BlcnR5Pi4KKworPWl0ZW0gQzwk dG9fZGVsZXRlPgorCitBIHJlZmVyZW5jZSB0byBhbiBhcnJheSBjb250YWluaW5nIHRoZSBuYW1l cyBvZiB0aGUgSTxwcm9wZXJ0aWVzPiB0byBkZWxldGUKK2Zyb20gQzwkY29uZmlnPi4KKworPWJh Y2sKKworPWN1dAorCiBzdWIgZGVsZXRlX2Zyb21fY29uZmlnIHsKICAgICBteSAoJGNvbmZpZywg JG9wdGlvbl9zY2hlbWEsICRuZXdfb3B0aW9ucywgJHRvX2RlbGV0ZSkgPSBAXzsKIAotLSAKMi4z OS4yCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2 ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8v bGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=