From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pve-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id 000871FF15C
	for <inbox@lore.proxmox.com>; Fri,  4 Apr 2025 18:32:03 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 1613A37D9A;
	Fri,  4 Apr 2025 18:29:54 +0200 (CEST)
From: Gabriel Goller <g.goller@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Fri,  4 Apr 2025 18:28:26 +0200
Message-Id: <20250404162908.563060-16-g.goller@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250404162908.563060-1-g.goller@proxmox.com>
References: <20250404162908.563060-1-g.goller@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.022 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 proxmox-ve-rs v2 14/15] ve-config: add
 section-config to frr types conversion
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

QWRkIGEgRmFicmljQ29uZmlnIGJ1aWxkZXIgd2hpY2ggaXRlcmF0ZXMgdGhyb3VnaCBub2RlcyBh
bmQgZ2VuZXJhdGVzCnRoZSBmcnIgY29uZmlnIGZvciB0aGUgc3BlY2lmaWVkIGN1cnJlbnRfbm9k
ZS4gVGhpcyBwYXJ0IGFsc28KZGlzdHJpYnV0ZXMgdGhlIGZhYnJpYyBvcHRpb25zIG9uIGFsbCB0
aGUgaW50ZXJmYWNlcyDigJMgZS5nLiB0aGUKaGVsbG8taW50ZXJ2YWwgb3B0aW9uIG9uIHRoZSBm
YWJyaWMgd2lsbCBiZSBhZGRlZCB0byBhbGwgaW50ZXJmYWNlcwpoZXJlLgoKV2UgbWFpbmx5IG5l
ZWQgdG8gYWRkIHRoZXNlIG9iamVjdHMgdG8gRlJSOgoKKiBpbnRlcmZhY2VzCiAgICBXZSBzaW1w
bHkgaXRlcmF0ZSB0aHJvdWdoIGFsbCBjb25maWd1cmVkIGludGVyZmFjZXMgYW5kIGFkZCB0aGVt
IEZSUgogICAgd2l0aCBhIHNob3J0IGNvbmZpZyBsaW5lIHRlbGxpbmcgdGhlIGRhZW1vbiB0byBl
bmFibGUKICAgIG9wZW5mYWJyaWMvb3NwZiBvbiB0aGlzIGludGVyZmFjZS4KCiogcm91dGVycwog
ICAgVGhlIHRlbGwgdGhlIEZSUiBkYWVtb24gdG8gaW5pdGlhdGUgdGhlIG9wZW5mYWJyaWMvb3Nw
ZiBkYWVtb24gb24KICAgIGV2ZXJ5IG5vZGUuCgoqIGFjY2Vzcy1saXN0cwogICAgV2UgdGhyb3cg
YWxsIHRoZSByb3V0ZXItaXBzIG9mIGFsbCB0aGUgb3RoZXIgbm9kZXMgaW4gdGhlIHNhbWUKICAg
IGZhYnJpYyBpbiBhY2Nlc3MtbGlzdC4gVGhpcyB3YXkgd2UgY2FuIHNpbXBseSB1c2UgYSByb3V0
ZS1tYXAgdG8KICAgIG1hdGNoIG9uIGl0LgoKKiByb3V0ZS1tYXBzCiAgICBXZSBhZGQgYSByb3V0
ZS1tYXAgdG8gZXZlcnkgZmFicmljIHNvIHRoYXQgd2UgcmV3cml0ZSB0aGUgc291cmNlCiAgICBh
ZGRyZXNzIHRvIHRoZSBjdXJyZW50IHJvdXRlci1pcCB3aGljaCBpcyBvbiB0aGUgbG9jYWwKICAg
IGR1bW15X2ludGVyZmFjZS4KCiogaXAtcHJvdG9jb2wgc3RhdGVtZW50cwogICAgVGhlc2UgYWRk
IHRoZSByb3V0ZS1tYXAgdG8gdGhlIHByb3RvY29sIGFuZCBhbGwgdGhlIHJvdXRlcyBmcm9tIHRo
ZQogICAgcHJvdG9jb2wgYXJlIGdvaW5nIHRocm91Z2ggdGhlIHJvdXRlLW1hcC4KClNpZ25lZC1v
ZmYtYnk6IEdhYnJpZWwgR29sbGVyIDxnLmdvbGxlckBwcm94bW94LmNvbT4KLS0tCiBwcm94bW94
LXZlLWNvbmZpZy9DYXJnby50b21sICAgICAgICAgICAgfCAgIDUgKwogcHJveG1veC12ZS1jb25m
aWcvZGViaWFuL2NvbnRyb2wgICAgICAgIHwgIDIzICstCiBwcm94bW94LXZlLWNvbmZpZy9zcmMv
c2RuL2ZhYnJpYy9tb2QucnMgfCA0MjcgKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVz
IGNoYW5nZWQsIDQ1MyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L3Byb3htb3gtdmUtY29uZmlnL0NhcmdvLnRvbWwgYi9wcm94bW94LXZlLWNvbmZpZy9DYXJnby50
b21sCmluZGV4IGY1OGM2ZTJkMGI4Yy4uNzBjMjUzMTJhYzZkIDEwMDY0NAotLS0gYS9wcm94bW94
LXZlLWNvbmZpZy9DYXJnby50b21sCisrKyBiL3Byb3htb3gtdmUtY29uZmlnL0NhcmdvLnRvbWwK
QEAgLTExLDEyICsxMSwxNCBAQCBsb2cgPSAiMC40IgogYW55aG93ID0gIjEiCiBuaXggPSAiMC4y
NiIKIHRoaXNlcnJvciA9IHsgd29ya3NwYWNlID0gdHJ1ZSB9Cit0cmFjaW5nID0gIjAuMSIKIAog
c2VyZGUgPSB7IHdvcmtzcGFjZSA9IHRydWUsIGZlYXR1cmVzID0gWyAiZGVyaXZlIiBdIH0KIHNl
cmRlX2pzb24gPSAiMSIKIHNlcmRlX3BsYWluID0gIjEiCiBzZXJkZV93aXRoID0geyB3b3Jrc3Bh
Y2UgPSB0cnVlIH0KIAorcHJveG1veC1mcnIgPSB7IG9wdGlvbmFsID0gdHJ1ZSwgd29ya3NwYWNl
ID0gdHJ1ZSB9CiBwcm94bW94LW5ldHdvcmstdHlwZXMgPSB7IHdvcmtzcGFjZSA9IHRydWUgfQog
cHJveG1veC1zZG4tdHlwZXMgPSB7IHdvcmtzcGFjZSA9IHRydWUgfQogcHJveG1veC1zY2hlbWEg
PSB7IHZlcnNpb24gPSAiNCIsIGZlYXR1cmVzID0gWyAiYXBpLXR5cGVzIiBdIH0KQEAgLTI0LDMg
KzI2LDYgQEAgcHJveG1veC1zZWN0aW9uLWNvbmZpZyA9IHsgdmVyc2lvbiA9ICIyLjEuMiIgfQog
cHJveG1veC1zZXJkZSA9IHsgdmVyc2lvbiA9ICIwLjEuMiIgfQogcHJveG1veC1zeXMgPSAiMC42
LjQiCiBwcm94bW94LXNvcnRhYmxlLW1hY3JvID0gIjAuMS4zIgorCitbZmVhdHVyZXNdCitmcnIg
PSBbImRlcDpwcm94bW94LWZyciIgXQpkaWZmIC0tZ2l0IGEvcHJveG1veC12ZS1jb25maWcvZGVi
aWFuL2NvbnRyb2wgYi9wcm94bW94LXZlLWNvbmZpZy9kZWJpYW4vY29udHJvbAppbmRleCAwZGEy
NDFmZWQ3NzUuLmQwOTQwYjJjOGFjNSAxMDA2NDQKLS0tIGEvcHJveG1veC12ZS1jb25maWcvZGVi
aWFuL2NvbnRyb2wKKysrIGIvcHJveG1veC12ZS1jb25maWcvZGViaWFuL2NvbnRyb2wKQEAgLTIy
LDcgKzIyLDggQEAgQnVpbGQtRGVwZW5kcy1BcmNoOiBjYXJnbzpuYXRpdmUgPCFub2NoZWNrPiwK
ICBsaWJydXN0LXNlcmRlLWpzb24tMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+LAogIGxpYnJ1c3Qt
c2VyZGUtcGxhaW4tMStkZWZhdWx0LWRldiA8IW5vY2hlY2s+LAogIGxpYnJ1c3Qtc2VyZGUtd2l0
aC0zK2RlZmF1bHQtZGV2IDwhbm9jaGVjaz4sCi0gbGlicnVzdC10aGlzZXJyb3ItMStkZWZhdWx0
LWRldiAoPj0gMS4wLjU5LX5+KSA8IW5vY2hlY2s+CisgbGlicnVzdC10aGlzZXJyb3ItMStkZWZh
dWx0LWRldiAoPj0gMS4wLjU5LX5+KSA8IW5vY2hlY2s+LAorIGxpYnJ1c3QtdHJhY2luZy0wLjEr
ZGVmYXVsdC1kZXYgPCFub2NoZWNrPgogTWFpbnRhaW5lcjogUHJveG1veCBTdXBwb3J0IFRlYW0g
PHN1cHBvcnRAcHJveG1veC5jb20+CiBTdGFuZGFyZHMtVmVyc2lvbjogNC43LjAKIFZjcy1HaXQ6
IGdpdDovL2dpdC5wcm94bW94LmNvbS9naXQvcHJveG1veC12ZS1ycy5naXQKQEAgLTUxLDcgKzUy
LDEwIEBAIERlcGVuZHM6CiAgbGlicnVzdC1zZXJkZS1qc29uLTErZGVmYXVsdC1kZXYsCiAgbGli
cnVzdC1zZXJkZS1wbGFpbi0xK2RlZmF1bHQtZGV2LAogIGxpYnJ1c3Qtc2VyZGUtd2l0aC0zK2Rl
ZmF1bHQtZGV2LAotIGxpYnJ1c3QtdGhpc2Vycm9yLTErZGVmYXVsdC1kZXYgKD49IDEuMC41OS1+
fikKKyBsaWJydXN0LXRoaXNlcnJvci0xK2RlZmF1bHQtZGV2ICg+PSAxLjAuNTktfn4pLAorIGxp
YnJ1c3QtdHJhY2luZy0wLjErZGVmYXVsdC1kZXYKK1N1Z2dlc3RzOgorIGxpYnJ1c3QtcHJveG1v
eC12ZS1jb25maWcrZnJyLWRldiAoPSAke2JpbmFyeTpWZXJzaW9ufSkKIFByb3ZpZGVzOgogIGxp
YnJ1c3QtcHJveG1veC12ZS1jb25maWcrZGVmYXVsdC1kZXYgKD0gJHtiaW5hcnk6VmVyc2lvbn0p
LAogIGxpYnJ1c3QtcHJveG1veC12ZS1jb25maWctMC1kZXYgKD0gJHtiaW5hcnk6VmVyc2lvbn0p
LApAQCAtNjIsMyArNjYsMTggQEAgUHJvdmlkZXM6CiAgbGlicnVzdC1wcm94bW94LXZlLWNvbmZp
Zy0wLjIuMitkZWZhdWx0LWRldiAoPSAke2JpbmFyeTpWZXJzaW9ufSkKIERlc2NyaXB0aW9uOiBS
dXN0IGNyYXRlICJwcm94bW94LXZlLWNvbmZpZyIgLSBSdXN0IHNvdXJjZSBjb2RlCiAgU291cmNl
IGNvZGUgZm9yIERlYmlhbml6ZWQgUnVzdCBjcmF0ZSAicHJveG1veC12ZS1jb25maWciCisKK1Bh
Y2thZ2U6IGxpYnJ1c3QtcHJveG1veC12ZS1jb25maWcrZnJyLWRldgorQXJjaGl0ZWN0dXJlOiBh
bnkKK011bHRpLUFyY2g6IHNhbWUKK0RlcGVuZHM6CisgJHttaXNjOkRlcGVuZHN9LAorIGxpYnJ1
c3QtcHJveG1veC12ZS1jb25maWctZGV2ICg9ICR7YmluYXJ5OlZlcnNpb259KSwKKyBsaWJydXN0
LXByb3htb3gtZnJyLTAuMStkZWZhdWx0LWRldgorUHJvdmlkZXM6CisgbGlicnVzdC1wcm94bW94
LXZlLWNvbmZpZy0wK2Zyci1kZXYgKD0gJHtiaW5hcnk6VmVyc2lvbn0pLAorIGxpYnJ1c3QtcHJv
eG1veC12ZS1jb25maWctMC4yK2Zyci1kZXYgKD0gJHtiaW5hcnk6VmVyc2lvbn0pLAorIGxpYnJ1
c3QtcHJveG1veC12ZS1jb25maWctMC4yLjIrZnJyLWRldiAoPSAke2JpbmFyeTpWZXJzaW9ufSkK
K0Rlc2NyaXB0aW9uOiBSdXN0IGNyYXRlICJwcm94bW94LXZlLWNvbmZpZyIgLSBmZWF0dXJlICJm
cnIiCisgVGhpcyBtZXRhcGFja2FnZSBlbmFibGVzIGZlYXR1cmUgImZyciIgZm9yIHRoZSBSdXN0
IHByb3htb3gtdmUtY29uZmlnIGNyYXRlLCBieQorIHB1bGxpbmcgaW4gYW55IGFkZGl0aW9uYWwg
ZGVwZW5kZW5jaWVzIG5lZWRlZCBieSB0aGF0IGZlYXR1cmUuCmRpZmYgLS1naXQgYS9wcm94bW94
LXZlLWNvbmZpZy9zcmMvc2RuL2ZhYnJpYy9tb2QucnMgYi9wcm94bW94LXZlLWNvbmZpZy9zcmMv
c2RuL2ZhYnJpYy9tb2QucnMKaW5kZXggNDU3OTViMGU1MWIwLi5iMzU4MGVjNGM3ZDAgMTAwNjQ0
Ci0tLSBhL3Byb3htb3gtdmUtY29uZmlnL3NyYy9zZG4vZmFicmljL21vZC5ycworKysgYi9wcm94
bW94LXZlLWNvbmZpZy9zcmMvc2RuL2ZhYnJpYy9tb2QucnMKQEAgLTEsOSArMSwxMiBAQAogcHVi
IG1vZCBvcGVuZmFicmljOwogcHViIG1vZCBvc3BmOwogCit1c2Ugb3BlbmZhYnJpYzo6T3BlbkZh
YnJpY1NlY3Rpb25Db25maWc7Cit1c2Ugb3NwZjo6T3NwZlNlY3Rpb25Db25maWc7CiB1c2UgcHJv
eG1veF9uZXR3b3JrX3R5cGVzOjpkZWJpYW46Okhvc3RuYW1lOwogdXNlIHByb3htb3hfc2VjdGlv
bl9jb25maWc6OnR5cGVkOjpBcGlTZWN0aW9uRGF0YUVudHJ5OwogdXNlIHByb3htb3hfc2VjdGlv
bl9jb25maWc6OnR5cGVkOjpTZWN0aW9uQ29uZmlnRGF0YTsKK3VzZSB0aGlzZXJyb3I6OkVycm9y
OwogCiB1c2Ugc3RkOjpvcHM6OkRlcmVmOwogCkBAIC0xMTAsNiArMTEzLDIyIEBAIGltcGwgc3Rk
OjpzdHI6OkZyb21TdHIgZm9yIFNlY3Rpb25UeXBlIHsKICAgICB9CiB9CiAKKyNbY2ZnKGZlYXR1
cmUgPSAiZnJyIildCit1c2UgeworICAgIGFueWhvdzo6YW55aG93LAorICAgIHByb3htb3hfZnJy
Ojp7CisgICAgICAgIG9zcGY6OkFyZWEsCisgICAgICAgIHJvdXRlX21hcDo6eworICAgICAgICAg
ICAgQWNjZXNzQWN0aW9uLCBBY2Nlc3NMaXN0LCBBY2Nlc3NMaXN0TmFtZSwgQWNjZXNzTGlzdFJ1
bGUsIFByb3RvY29sUm91dGVNYXAsCisgICAgICAgICAgICBQcm90b2NvbFR5cGUsIFJvdXRlTWFw
LCBSb3V0ZU1hcE1hdGNoLCBSb3V0ZU1hcE5hbWUsIFJvdXRlTWFwU2V0LAorICAgICAgICB9LAor
ICAgICAgICBGcnJDb25maWcsIEZycldvcmQsIEludGVyZmFjZSwgSW50ZXJmYWNlTmFtZSwgUm91
dGVyLCBSb3V0ZXJOYW1lLAorICAgIH0sCisgICAgcHJveG1veF9zZG5fdHlwZXM6Om5ldDo6TmV0
LAorICAgIHN0ZDo6Y29sbGVjdGlvbnM6OntCVHJlZU1hcCwgSGFzaE1hcH0sCisgICAgc3RkOjpu
ZXQ6OntJcEFkZHIsIElwdjRBZGRyfSwKK307CisKICNbZGVyaXZlKERlYnVnLCBDbG9uZSldCiBw
dWIgc3RydWN0IFZhbGlkPFQ+KFNlY3Rpb25Db25maWdEYXRhPFQ+KTsKIApAQCAtMTQyLDMgKzE2
MSw0MTEgQEAgd2hlcmUKICAgICB9CiB9CiAKKyNbZGVyaXZlKEVycm9yLCBEZWJ1ZyldCitwdWIg
ZW51bSBDb25maWdFcnJvciB7CisgICAgI1tlcnJvcigibm9kZSBpZCBoYXMgaW52YWxpZCBmb3Jt
YXQiKV0KKyAgICBJbnZhbGlkTm9kZUlkLAorfQorCisjW2Rlcml2ZShEZWZhdWx0LCBDbG9uZSld
CitwdWIgc3RydWN0IEZhYnJpY0NvbmZpZyB7CisgICAgb3BlbmZhYnJpYzogT3B0aW9uPFZhbGlk
PE9wZW5GYWJyaWNTZWN0aW9uQ29uZmlnPj4sCisgICAgb3NwZjogT3B0aW9uPFZhbGlkPE9zcGZT
ZWN0aW9uQ29uZmlnPj4sCit9CisKK2ltcGwgRmFicmljQ29uZmlnIHsKKyAgICBwdWIgZm4gbmV3
KHJhd19vcGVuZmFicmljOiAmc3RyLCByYXdfb3NwZjogJnN0cikgLT4gUmVzdWx0PFNlbGYsIGFu
eWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IG9wZW5mYWJyaWMgPSA8VmFsaWQ8T3BlbkZhYnJp
Y1NlY3Rpb25Db25maWc+Pjo6cGFyc2Vfc2VjdGlvbl9jb25maWcoCisgICAgICAgICAgICAib3Bl
bmZhYnJpYy5jZmciLAorICAgICAgICAgICAgcmF3X29wZW5mYWJyaWMsCisgICAgICAgICk/Owor
ICAgICAgICBsZXQgb3NwZiA9IDxWYWxpZDxPc3BmU2VjdGlvbkNvbmZpZz4+OjpwYXJzZV9zZWN0
aW9uX2NvbmZpZygib3NwZi5jZmciLCByYXdfb3NwZik/OworCisgICAgICAgIE9rKFNlbGYgewor
ICAgICAgICAgICAgb3BlbmZhYnJpYzogU29tZShvcGVuZmFicmljKSwKKyAgICAgICAgICAgIG9z
cGY6IFNvbWUob3NwZiksCisgICAgICAgIH0pCisgICAgfQorCisgICAgcHViIGZuIG9wZW5mYWJy
aWMoJnNlbGYpIC0+ICZPcHRpb248VmFsaWQ8T3BlbkZhYnJpY1NlY3Rpb25Db25maWc+PiB7Cisg
ICAgICAgICZzZWxmLm9wZW5mYWJyaWMKKyAgICB9CisgICAgcHViIGZuIG9zcGYoJnNlbGYpIC0+
ICZPcHRpb248VmFsaWQ8T3NwZlNlY3Rpb25Db25maWc+PiB7CisgICAgICAgICZzZWxmLm9zcGYK
KyAgICB9CisKKyAgICBwdWIgZm4gd2l0aF9vcGVuZmFicmljKGNvbmZpZzogVmFsaWQ8T3BlbkZh
YnJpY1NlY3Rpb25Db25maWc+KSAtPiBGYWJyaWNDb25maWcgeworICAgICAgICBTZWxmIHsKKyAg
ICAgICAgICAgIG9wZW5mYWJyaWM6IFNvbWUoY29uZmlnKSwKKyAgICAgICAgICAgIG9zcGY6IE5v
bmUsCisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWIgZm4gd2l0aF9vc3BmKGNvbmZpZzogVmFs
aWQ8T3NwZlNlY3Rpb25Db25maWc+KSAtPiBGYWJyaWNDb25maWcgeworICAgICAgICBTZWxmIHsK
KyAgICAgICAgICAgIG9zcGY6IFNvbWUoY29uZmlnKSwKKyAgICAgICAgICAgIG9wZW5mYWJyaWM6
IE5vbmUsCisgICAgICAgIH0KKyAgICB9Cit9CisKK3B1YiB0cmFpdCBGcm9tU2VjdGlvbkNvbmZp
Zword2hlcmUKKyAgICBTZWxmOiBTaXplZCArIFRyeUZyb208U2VjdGlvbkNvbmZpZ0RhdGE8U2Vs
Zjo6U2VjdGlvbj4+LAorICAgIDxTZWxmIGFzIFRyeUZyb208U2VjdGlvbkNvbmZpZ0RhdGE8U2Vs
Zjo6U2VjdGlvbj4+Pjo6RXJyb3I6IHN0ZDo6Zm10OjpEZWJ1ZywKK3sKKyAgICB0eXBlIFNlY3Rp
b246IEFwaVNlY3Rpb25EYXRhRW50cnkgKyBEZXNlcmlhbGl6ZU93bmVkOworCisgICAgZm4gZnJv
bV9zZWN0aW9uX2NvbmZpZyhyYXc6ICZzdHIpIC0+IFJlc3VsdDxTZWxmLCBhbnlob3c6OkVycm9y
PiB7CisgICAgICAgIGxldCBzZWN0aW9uX2NvbmZpZ19kYXRhID0gU2VsZjo6U2VjdGlvbjo6c2Vj
dGlvbl9jb25maWcoKQorICAgICAgICAgICAgLnBhcnNlKFNlbGY6OmZpbGVuYW1lKCksIHJhdyk/
CisgICAgICAgICAgICAudHJ5X2ludG8oKT87CisKKyAgICAgICAgbGV0IG91dHB1dCA9IFNlbGY6
OnRyeV9mcm9tKHNlY3Rpb25fY29uZmlnX2RhdGEpLnVud3JhcCgpOworICAgICAgICBPayhvdXRw
dXQpCisgICAgfQorCisgICAgZm4gZmlsZW5hbWUoKSAtPiBTdHJpbmc7Cit9CisKKy8vLyBCdWls
ZGVyIHRoYXQgaGVscHMgYnVpbGRpbmcgdGhlIEZyckNvbmZpZy4KKyNbZGVyaXZlKERlZmF1bHQp
XQorI1tjZmcoZmVhdHVyZSA9ICJmcnIiKV0KK3B1YiBzdHJ1Y3QgRnJyQ29uZmlnQnVpbGRlciB7
CisgICAgZmFicmljczogRmFicmljQ29uZmlnLAorfQorCisjW2NmZyhmZWF0dXJlID0gImZyciIp
XQoraW1wbCBGcnJDb25maWdCdWlsZGVyIHsKKyAgICAvLy8gQWRkIGZhYnJpY3MgdG8gdGhlIGJ1
aWxkZXIKKyAgICBwdWIgZm4gYWRkX2ZhYnJpY3MobXV0IHNlbGYsIGZhYnJpYzogRmFicmljQ29u
ZmlnKSAtPiBGcnJDb25maWdCdWlsZGVyIHsKKyAgICAgICAgc2VsZi5mYWJyaWNzID0gZmFicmlj
OworICAgICAgICBzZWxmCisgICAgfQorCisgICAgLy8vIEJ1aWxkIHRoZSBjb21wbGV0ZSBbYEZy
ckNvbmZpZ2BdIGZyb20gdGhpcyBidWlsZGVyIGNvbmZpZ3VyYXRpb24gZ2l2ZW4gdGhlIGhvc3Ru
YW1lIG9mIHRoZQorICAgIC8vLyBub2RlIGZvciB3aGljaCB3ZSB3YW50IHRvIGJ1aWxkIHRoZSBj
b25maWcuIFdlIGFsc28gaW5qZWN0IHRoZSBjb21tb24gZmFicmljLWxldmVsIG9wdGlvbnMKKyAg
ICAvLy8gaW50byB0aGUgaW50ZXJmYWNlcyBoZXJlLiAoZS5nLiB0aGUgZmFicmljLWxldmVsICJo
ZWxsby1pbnRlcnZhbCIgZ2V0cyBhZGRlZCB0byBldmVyeQorICAgIC8vLyBpbnRlcmZhY2UgaWYg
dGhlcmUgaXNuJ3QgYSBtb3JlIHNwZWNpZmljIG9uZS4pCisgICAgcHViIGZuIGJ1aWxkKHNlbGYs
IGN1cnJlbnRfbm9kZTogSG9zdG5hbWUpIC0+IFJlc3VsdDxGcnJDb25maWcsIGFueWhvdzo6RXJy
b3I+IHsKKyAgICAgICAgbGV0IG11dCByb3V0ZXI6IEJUcmVlTWFwPFJvdXRlck5hbWUsIFJvdXRl
cj4gPSBCVHJlZU1hcDo6bmV3KCk7CisgICAgICAgIGxldCBtdXQgaW50ZXJmYWNlczogQlRyZWVN
YXA8SW50ZXJmYWNlTmFtZSwgSW50ZXJmYWNlPiA9IEJUcmVlTWFwOjpuZXcoKTsKKyAgICAgICAg
bGV0IG11dCBhY2Nlc3NfbGlzdHM6IEJUcmVlTWFwPEFjY2Vzc0xpc3ROYW1lLCBBY2Nlc3NMaXN0
PiA9IEJUcmVlTWFwOjpuZXcoKTsKKyAgICAgICAgbGV0IG11dCByb3V0ZW1hcHM6IFZlYzxSb3V0
ZU1hcD4gPSBWZWM6Om5ldygpOworICAgICAgICBsZXQgbXV0IHByb3RvY29sX3JvdXRlbWFwczog
VmVjPFByb3RvY29sUm91dGVNYXA+ID0gVmVjOjpuZXcoKTsKKworICAgICAgICBpZiBsZXQgU29t
ZShvcGVuZmFicmljKSA9IHNlbGYuZmFicmljcy5vcGVuZmFicmljIHsKKyAgICAgICAgICAgIGxl
dCBtdXQgZmFicmljcyA9IEhhc2hNYXA6Om5ldygpOworICAgICAgICAgICAgbGV0IG11dCBsb2Nh
bF9jb25maWd1cmF0aW9uID0gVmVjOjpuZXcoKTsKKworICAgICAgICAgICAgZm9yIChfLCBzZWN0
aW9uKSBpbiAoJipvcGVuZmFicmljKS5pbnRvX2l0ZXIoKSB7CisgICAgICAgICAgICAgICAgbWF0
Y2ggc2VjdGlvbiB7CisgICAgICAgICAgICAgICAgICAgIE9wZW5GYWJyaWNTZWN0aW9uQ29uZmln
OjpGYWJyaWMoZmFicmljKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWJyaWNzLmlu
c2VydChmYWJyaWMuZmFicmljX2lkLmNsb25lKCksIGZhYnJpYyk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgT3BlbkZhYnJpY1NlY3Rpb25Db25maWc6Ok5vZGUo
bm9kZSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5ub2RlX2lkID09IGN1
cnJlbnRfbm9kZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfY29uZmlndXJh
dGlvbi5wdXNoKG5vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBsZXQgbXV0IHJvdXRlbWFwX3NlcSA9IDEwMDsKKyAgICAgICAgICAgIGxldCBtdXQgY3VycmVu
dF9uZXQ6IE9wdGlvbjxOZXQ+ID0gTm9uZTsKKworICAgICAgICAgICAgZm9yIG5vZGUgaW4gbG9j
YWxfY29uZmlndXJhdGlvbiB7CisgICAgICAgICAgICAgICAgLy8gaWYgbm8gaW50ZXJmYWNlcyBh
cmUgY29uZmlndXJlZCwgZG9uJ3QgZ2VuZXJhdGUgYW55IGNvbmZpZworICAgICAgICAgICAgICAg
IGlmIG5vZGUuaW50ZXJmYWNlcy5pc19lbXB0eSgpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbGV0IGZhYnJpYyA9IGZh
YnJpY3MKKyAgICAgICAgICAgICAgICAgICAgLmdldCgmbm9kZS5mYWJyaWNfaWQpCisgICAgICAg
ICAgICAgICAgICAgIC5va19vcl9lbHNlKHx8IGFueWhvdyEoImNvdWxkIG5vdCBmaW5kIGZhYnJp
Yzoge30iLCBub2RlLmZhYnJpY19pZCkpPzsKKworICAgICAgICAgICAgICAgIGxldCBuZXQgPSBj
dXJyZW50X25ldC5nZXRfb3JfaW5zZXJ0KG5vZGUucm91dGVyX2lkLmludG8oKSk7CisgICAgICAg
ICAgICAgICAgbGV0IChyb3V0ZXJfbmFtZSwgcm91dGVyX2l0ZW0pID0KKyAgICAgICAgICAgICAg
ICAgICAgU2VsZjo6YnVpbGRfb3BlbmZhYnJpY19yb3V0ZXIoJm5vZGUuZmFicmljX2lkLCBuZXQp
PzsKKyAgICAgICAgICAgICAgICByb3V0ZXIuaW5zZXJ0KHJvdXRlcl9uYW1lLCByb3V0ZXJfaXRl
bSk7CisKKyAgICAgICAgICAgICAgICBsZXQgKGludGVyZmFjZSwgaW50ZXJmYWNlX25hbWUpID0K
KyAgICAgICAgICAgICAgICAgICAgU2VsZjo6YnVpbGRfb3BlbmZhYnJpY19kdW1teV9pbnRlcmZh
Y2UoJm5vZGUuZmFicmljX2lkLCBub2RlLnJvdXRlcl9pZCk/OworCisgICAgICAgICAgICAgICAg
aWYgaW50ZXJmYWNlcy5pbnNlcnQoaW50ZXJmYWNlX25hbWUsIGludGVyZmFjZSkuaXNfc29tZSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2luZzo6ZXJyb3IhKAorICAgICAgICAgICAgICAg
ICAgICAgICAgIkFuIGludGVyZmFjZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGR1bW15IGlu
dGVyZmFjZSBleGlzdHMiCisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgZm9yIGludGVyZmFjZSBpbiBub2RlLmludGVyZmFjZXMuaXRl
cigpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IChpbnRlcmZhY2UsIGludGVyZmFjZV9uYW1l
KSA9IFNlbGY6OmJ1aWxkX29wZW5mYWJyaWNfaW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICAg
ICAgICAgJm5vZGUuZmFicmljX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgZmFicmljLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS5yb3V0ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICk/OworCisgICAgICAgICAg
ICAgICAgICAgIGlmIGludGVyZmFjZXMuaW5zZXJ0KGludGVyZmFjZV9uYW1lLCBpbnRlcmZhY2Up
LmlzX3NvbWUoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFjaW5nOjp3YXJuISgiQW4g
aW50ZXJmYWNlIGNhbm5vdCBiZSBpbiBtdWx0aXBsZSBvcGVuZmFicmljIGZhYnJpY3MiKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGxldCBhY2Nlc3NfbGlzdF9uYW1lID0KKyAgICAgICAgICAgICAgICAgICAgQWNjZXNzTGlzdE5h
bWU6Om5ldyhmb3JtYXQhKCJvcGVuZmFicmljX3t9X2lwcyIsIG5vZGUuZmFicmljX2lkKSk7CisK
KyAgICAgICAgICAgICAgICBsZXQgcnVsZSA9IEFjY2Vzc0xpc3RSdWxlIHsKKyAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uOiBBY2Nlc3NBY3Rpb246OlBlcm1pdCwKKyAgICAgICAgICAgICAgICAg
ICAgbmV0d29yazogZmFicmljLmxvb3BiYWNrX3ByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAg
c2VxOiBOb25lLAorICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBhY2Nlc3Nf
bGlzdHMKKyAgICAgICAgICAgICAgICAgICAgLmVudHJ5KGFjY2Vzc19saXN0X25hbWUuY2xvbmUo
KSkKKyAgICAgICAgICAgICAgICAgICAgLmFuZF9tb2RpZnkofGx8IGwucnVsZXMucHVzaChydWxl
LmNsb25lKCkpKQorICAgICAgICAgICAgICAgICAgICAub3JfaW5zZXJ0KEFjY2Vzc0xpc3Qgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWNjZXNzX2xpc3RfbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJ1bGVzOiB2ZWMhW3J1bGVdLAorICAgICAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIGxldCByb3V0ZW1hcCA9IFNlbGY6OmJ1aWxkX29wZW5mYWJy
aWNfZHVtbXlfcm91dGVtYXAoCisgICAgICAgICAgICAgICAgICAgICZub2RlLmZhYnJpY19pZCwK
KyAgICAgICAgICAgICAgICAgICAgbm9kZS5yb3V0ZXJfaWQsCisgICAgICAgICAgICAgICAgICAg
IHJvdXRlbWFwX3NlcSwKKyAgICAgICAgICAgICAgICApPzsKKworICAgICAgICAgICAgICAgIHJv
dXRlbWFwX3NlcSArPSAxMDsKKworICAgICAgICAgICAgICAgIHJvdXRlbWFwcy5wdXNoKHJvdXRl
bWFwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgIXJvdXRlbWFwcy5pc19lbXB0
eSgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcHJvdG9jb2xfcm91dGVtYXAgPSBQcm90b2NvbFJv
dXRlTWFwIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w6IFByb3RvY29sVHlwZTo6T3Bl
bkZhYnJpYywKKyAgICAgICAgICAgICAgICAgICAgcm91dGVtYXBfbmFtZTogUm91dGVNYXBOYW1l
OjpuZXcoIm9wZW5mYWJyaWMiLnRvX293bmVkKCkpLAorICAgICAgICAgICAgICAgIH07CisKKyAg
ICAgICAgICAgICAgICBwcm90b2NvbF9yb3V0ZW1hcHMucHVzaChwcm90b2NvbF9yb3V0ZW1hcCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiBsZXQgU29tZShvc3BmKSA9
IHNlbGYuZmFicmljcy5vc3BmIHsKKyAgICAgICAgICAgIGxldCBtdXQgZmFicmljcyA9IEhhc2hN
YXA6Om5ldygpOworICAgICAgICAgICAgbGV0IG11dCBsb2NhbF9jb25maWd1cmF0aW9uID0gVmVj
OjpuZXcoKTsKKworICAgICAgICAgICAgZm9yIChfLCBzZWN0aW9uKSBpbiAoJipvc3BmKS5pbnRv
X2l0ZXIoKSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggc2VjdGlvbiB7CisgICAgICAgICAgICAg
ICAgICAgIE9zcGZTZWN0aW9uQ29uZmlnOjpGYWJyaWMoZmFicmljKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmYWJyaWNzLmluc2VydChmYWJyaWMuZmFicmljX2lkLmNsb25lKCksIGZh
YnJpYyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgT3NwZlNl
Y3Rpb25Db25maWc6Ok5vZGUobm9kZSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
bm9kZS5ub2RlX2lkID09IGN1cnJlbnRfbm9kZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9jYWxfY29uZmlndXJhdGlvbi5wdXNoKG5vZGUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBsZXQgbXV0IHJvdXRlbWFwX3NlcSA9IDEwMDsKKyAgICAgICAg
ICAgIGxldCBtdXQgY3VycmVudF9yb3V0ZXJfaWQ6IE9wdGlvbjxJcHY0QWRkcj4gPSBOb25lOwor
CisgICAgICAgICAgICBmb3Igbm9kZSBpbiBsb2NhbF9jb25maWd1cmF0aW9uIHsKKyAgICAgICAg
ICAgICAgICAvLyBpZiBubyBpbnRlcmZhY2VzIGFyZSBjb25maWd1cmVkLCBkb24ndCBnZW5lcmF0
ZSBhbnkgY29uZmlnCisgICAgICAgICAgICAgICAgaWYgbm9kZS5pbnRlcmZhY2VzLmlzX2VtcHR5
KCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBsZXQgZmFicmljID0gZmFicmljcworICAgICAgICAgICAgICAgICAgICAu
Z2V0KCZub2RlLmZhYnJpY19pZCkKKyAgICAgICAgICAgICAgICAgICAgLm9rX29yX2Vsc2UofHwg
YW55aG93ISgiY291bGQgbm90IGZpbmQgZmFicmljOiB7fSIsIG5vZGUuZmFicmljX2lkKSk/Owor
CisgICAgICAgICAgICAgICAgbGV0IHJvdXRlcl9pZCA9IGN1cnJlbnRfcm91dGVyX2lkLmdldF9v
cl9pbnNlcnQobm9kZS5yb3V0ZXJfaWQpOworICAgICAgICAgICAgICAgIGxldCAocm91dGVyX25h
bWUsIHJvdXRlcl9pdGVtKSA9CisgICAgICAgICAgICAgICAgICAgIFNlbGY6OmJ1aWxkX29zcGZf
cm91dGVyKCZmYWJyaWMuYXJlYSwgbm9kZSwgKnJvdXRlcl9pZCk/OworICAgICAgICAgICAgICAg
IHJvdXRlci5pbnNlcnQocm91dGVyX25hbWUsIHJvdXRlcl9pdGVtKTsKKworICAgICAgICAgICAg
ICAgIC8vIEFkZCBkdW1teSBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICBsZXQgKGludGVyZmFj
ZSwgaW50ZXJmYWNlX25hbWUpID0KKyAgICAgICAgICAgICAgICAgICAgU2VsZjo6YnVpbGRfb3Nw
Zl9kdW1teV9pbnRlcmZhY2UoJmZhYnJpYy5mYWJyaWNfaWQsICZmYWJyaWMuYXJlYSk/OworCisg
ICAgICAgICAgICAgICAgaWYgaW50ZXJmYWNlcy5pbnNlcnQoaW50ZXJmYWNlX25hbWUsIGludGVy
ZmFjZSkuaXNfc29tZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2luZzo6ZXJyb3IhKAor
ICAgICAgICAgICAgICAgICAgICAgICAgIkFuIGludGVyZmFjZSB3aXRoIHRoZSBzYW1lIG5hbWUg
YXMgdGhlIGR1bW15IGludGVyZmFjZSBleGlzdHMiCisgICAgICAgICAgICAgICAgICAgICk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIGludGVyZmFjZSBpbiBub2Rl
LmludGVyZmFjZXMuaXRlcigpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IChpbnRlcmZhY2Us
IGludGVyZmFjZV9uYW1lKSA9CisgICAgICAgICAgICAgICAgICAgICAgICBTZWxmOjpidWlsZF9v
c3BmX2ludGVyZmFjZSgmZmFicmljLmFyZWEsIGludGVyZmFjZSk/OworCisgICAgICAgICAgICAg
ICAgICAgIGlmIGludGVyZmFjZXMuaW5zZXJ0KGludGVyZmFjZV9uYW1lLCBpbnRlcmZhY2UpLmlz
X3NvbWUoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFjaW5nOjp3YXJuISgiQW4gaW50
ZXJmYWNlIGNhbm5vdCBiZSBpbiBtdWx0aXBsZSBvcGVuZmFicmljIGZhYnJpY3MiKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGxl
dCBhY2Nlc3NfbGlzdF9uYW1lID0gQWNjZXNzTGlzdE5hbWU6Om5ldyhmb3JtYXQhKCJvc3BmX3t9
X2lwcyIsIG5vZGUuZmFicmljX2lkKSk7CisKKyAgICAgICAgICAgICAgICBsZXQgcnVsZSA9IEFj
Y2Vzc0xpc3RSdWxlIHsKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBBY2Nlc3NBY3Rpb246
OlBlcm1pdCwKKyAgICAgICAgICAgICAgICAgICAgbmV0d29yazogZmFicmljLmxvb3BiYWNrX3By
ZWZpeC5pbnRvKCksCisgICAgICAgICAgICAgICAgICAgIHNlcTogTm9uZSwKKyAgICAgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICAgICAgYWNjZXNzX2xpc3RzCisgICAgICAgICAgICAgICAg
ICAgIC5lbnRyeShhY2Nlc3NfbGlzdF9uYW1lLmNsb25lKCkpCisgICAgICAgICAgICAgICAgICAg
IC5hbmRfbW9kaWZ5KHxsfCBsLnJ1bGVzLnB1c2gocnVsZS5jbG9uZSgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgLm9yX2luc2VydChBY2Nlc3NMaXN0IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5hbWU6IGFjY2Vzc19saXN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBydWxlczog
dmVjIVtydWxlXSwKKyAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBs
ZXQgcm91dGVtYXAgPSBTZWxmOjpidWlsZF9vc3BmX2R1bW15X3JvdXRlbWFwKAorICAgICAgICAg
ICAgICAgICAgICAmZmFicmljLmZhYnJpY19pZCwKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5y
b3V0ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgIHJvdXRlbWFwX3NlcSwKKyAgICAgICAgICAg
ICAgICApPzsKKyAgICAgICAgICAgICAgICByb3V0ZW1hcF9zZXEgKz0gMTA7CisgICAgICAgICAg
ICAgICAgcm91dGVtYXBzLnB1c2gocm91dGVtYXApOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAhcm91dGVtYXBzLmlzX2VtcHR5KCkgeworICAgICAgICAgICAgICAgIGxldCBwcm90
b2NvbF9yb3V0ZW1hcCA9IFByb3RvY29sUm91dGVNYXAgeworICAgICAgICAgICAgICAgICAgICBw
cm90b2NvbDogUHJvdG9jb2xUeXBlOjpPc3BmLAorICAgICAgICAgICAgICAgICAgICByb3V0ZW1h
cF9uYW1lOiBSb3V0ZU1hcE5hbWU6Om5ldygib3NwZiIudG9fb3duZWQoKSksCisgICAgICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgICAgIHByb3RvY29sX3JvdXRlbWFwcy5wdXNoKHByb3Rv
Y29sX3JvdXRlbWFwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIE9rKEZy
ckNvbmZpZyB7CisgICAgICAgICAgICByb3V0ZXIsCisgICAgICAgICAgICBpbnRlcmZhY2VzLAor
ICAgICAgICAgICAgYWNjZXNzX2xpc3RzLAorICAgICAgICAgICAgcm91dGVtYXBzLAorICAgICAg
ICAgICAgcHJvdG9jb2xfcm91dGVtYXBzLAorICAgICAgICB9KQorICAgIH0KKworICAgIGZuIGJ1
aWxkX29zcGZfcm91dGVyKAorICAgICAgICBhcmVhOiAmb3NwZjo6QXJlYSwKKyAgICAgICAgX25v
ZGVfY29uZmlnOiAmb3NwZjo6Tm9kZVNlY3Rpb24sCisgICAgICAgIHJvdXRlcl9pZDogSXB2NEFk
ZHIsCisgICAgKSAtPiBSZXN1bHQ8KFJvdXRlck5hbWUsIFJvdXRlciksIGFueWhvdzo6RXJyb3I+
IHsKKyAgICAgICAgbGV0IG9zcGZfcm91dGVyID0gcHJveG1veF9mcnI6Om9zcGY6Ok9zcGZSb3V0
ZXIgeyByb3V0ZXJfaWQgfTsKKyAgICAgICAgbGV0IHJvdXRlcl9pdGVtID0gUm91dGVyOjpPc3Bm
KG9zcGZfcm91dGVyKTsKKyAgICAgICAgbGV0IGZycl93b3JkX2lkID0gRnJyV29yZDo6bmV3KGFy
ZWEudG9fc3RyaW5nKCkpPzsKKyAgICAgICAgbGV0IHJvdXRlcl9uYW1lID0gUm91dGVyTmFtZTo6
T3NwZihwcm94bW94X2Zycjo6b3NwZjo6T3NwZlJvdXRlck5hbWU6OmZyb20oQXJlYTo6bmV3KAor
ICAgICAgICAgICAgZnJyX3dvcmRfaWQsCisgICAgICAgICk/KSk7CisgICAgICAgIE9rKChyb3V0
ZXJfbmFtZSwgcm91dGVyX2l0ZW0pKQorICAgIH0KKworICAgIGZuIGJ1aWxkX29wZW5mYWJyaWNf
cm91dGVyKAorICAgICAgICBmYWJyaWNfaWQ6ICZGYWJyaWNJZCwKKyAgICAgICAgbmV0OiAmTmV0
LAorICAgICkgLT4gUmVzdWx0PChSb3V0ZXJOYW1lLCBSb3V0ZXIpLCBhbnlob3c6OkVycm9yPiB7
CisgICAgICAgIGxldCBvZnIgPSBwcm94bW94X2Zycjo6b3BlbmZhYnJpYzo6T3BlbkZhYnJpY1Jv
dXRlciB7IG5ldDogbmV0LmNsb25lKCkgfTsKKyAgICAgICAgbGV0IHJvdXRlcl9pdGVtID0gUm91
dGVyOjpPcGVuRmFicmljKG9mcik7CisgICAgICAgIGxldCBmcnJfd29yZF9pZCA9IEZycldvcmQ6
Om5ldyhmYWJyaWNfaWQudG9fc3RyaW5nKCkpPzsKKyAgICAgICAgbGV0IHJvdXRlcl9uYW1lID0g
Um91dGVyTmFtZTo6T3BlbkZhYnJpYyhmcnJfd29yZF9pZC5pbnRvKCkpOworICAgICAgICBPaygo
cm91dGVyX25hbWUsIHJvdXRlcl9pdGVtKSkKKyAgICB9CisKKyAgICBmbiBidWlsZF9vc3BmX2lu
dGVyZmFjZSgKKyAgICAgICAgYXJlYTogJm9zcGY6OkFyZWEsCisgICAgICAgIGludGVyZmFjZTog
Jm9zcGY6OkludGVyZmFjZVByb3BlcnRpZXMsCisgICAgKSAtPiBSZXN1bHQ8KEludGVyZmFjZSwg
SW50ZXJmYWNlTmFtZSksIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IGZycl9pbnRlcmZh
Y2U6IHByb3htb3hfZnJyOjpvc3BmOjpPc3BmSW50ZXJmYWNlID0gaW50ZXJmYWNlLnRvX2Zycl9p
bnRlcmZhY2UoYXJlYSk/OworCisgICAgICAgIGxldCBpbnRlcmZhY2VfbmFtZSA9IEludGVyZmFj
ZU5hbWU6Ok9zcGYoaW50ZXJmYWNlLm5hbWUucGFyc2UoKT8pOworICAgICAgICBPaygoZnJyX2lu
dGVyZmFjZS5pbnRvKCksIGludGVyZmFjZV9uYW1lKSkKKyAgICB9CisKKyAgICBmbiBidWlsZF9v
c3BmX2R1bW15X2ludGVyZmFjZSgKKyAgICAgICAgZmFicmljX2lkOiAmRmFicmljSWQsCisgICAg
ICAgIGFyZWE6ICZvc3BmOjpBcmVhLAorICAgICkgLT4gUmVzdWx0PChJbnRlcmZhY2UsIEludGVy
ZmFjZU5hbWUpLCBhbnlob3c6OkVycm9yPiB7CisgICAgICAgIGxldCBmcnJfd29yZCA9IEZycldv
cmQ6Om5ldyhhcmVhLnRvX3N0cmluZygpKT87CisgICAgICAgIGxldCBmcnJfaW50ZXJmYWNlID0g
cHJveG1veF9mcnI6Om9zcGY6Ok9zcGZJbnRlcmZhY2UgeworICAgICAgICAgICAgYXJlYTogZnJy
X3dvcmQudHJ5X2ludG8oKT8sCisgICAgICAgICAgICBwYXNzaXZlOiBTb21lKHRydWUpLAorICAg
ICAgICAgICAgbmV0d29ya190eXBlOiBOb25lLAorICAgICAgICB9OworICAgICAgICBsZXQgaW50
ZXJmYWNlX25hbWUgPSBJbnRlcmZhY2VOYW1lOjpPcGVuRmFicmljKGZvcm1hdCEoImR1bW15X3t9
IiwgZmFicmljX2lkKS5wYXJzZSgpPyk7CisgICAgICAgIE9rKChmcnJfaW50ZXJmYWNlLmludG8o
KSwgaW50ZXJmYWNlX25hbWUpKQorICAgIH0KKworICAgIGZuIGJ1aWxkX29wZW5mYWJyaWNfaW50
ZXJmYWNlKAorICAgICAgICBmYWJyaWNfaWQ6ICZGYWJyaWNJZCwKKyAgICAgICAgaW50ZXJmYWNl
OiAmb3BlbmZhYnJpYzo6SW50ZXJmYWNlUHJvcGVydGllcywKKyAgICAgICAgZmFicmljX2NvbmZp
ZzogJm9wZW5mYWJyaWM6OkZhYnJpY1NlY3Rpb24sCisgICAgICAgIHJvdXRlcl9pZDogSXBBZGRy
LAorICAgICkgLT4gUmVzdWx0PChJbnRlcmZhY2UsIEludGVyZmFjZU5hbWUpLCBhbnlob3c6OkVy
cm9yPiB7CisgICAgICAgIGxldCBtdXQgZnJyX2ludGVyZmFjZTogcHJveG1veF9mcnI6Om9wZW5m
YWJyaWM6Ok9wZW5GYWJyaWNJbnRlcmZhY2UgPQorICAgICAgICAgICAgaW50ZXJmYWNlLnRvX2Zy
cl9pbnRlcmZhY2UoZmFicmljX2lkLCByb3V0ZXJfaWQuaXNfaXB2NigpKT87CisgICAgICAgIC8v
IElmIG5vIHNwZWNpZmljIGhlbGxvX2ludGVydmFsIGlzIHNldCwgZ2V0IGRlZmF1bHQgb25lIGZy
b20gZmFicmljCisgICAgICAgIC8vIGNvbmZpZworICAgICAgICBpZiBmcnJfaW50ZXJmYWNlLmhl
bGxvX2ludGVydmFsKCkuaXNfbm9uZSgpIHsKKyAgICAgICAgICAgIGZycl9pbnRlcmZhY2Uuc2V0
X2hlbGxvX2ludGVydmFsKGZhYnJpY19jb25maWcuaGVsbG9faW50ZXJ2YWwpOworICAgICAgICB9
CisgICAgICAgIGxldCBpbnRlcmZhY2VfbmFtZSA9IEludGVyZmFjZU5hbWU6Ok9wZW5GYWJyaWMo
aW50ZXJmYWNlLm5hbWUucGFyc2UoKT8pOworICAgICAgICBPaygoZnJyX2ludGVyZmFjZS5pbnRv
KCksIGludGVyZmFjZV9uYW1lKSkKKyAgICB9CisKKyAgICBmbiBidWlsZF9vcGVuZmFicmljX2R1
bW15X2ludGVyZmFjZSgKKyAgICAgICAgZmFicmljX2lkOiAmRmFicmljSWQsCisgICAgICAgIHJv
dXRlcl9pZDogSXBBZGRyLAorICAgICkgLT4gUmVzdWx0PChJbnRlcmZhY2UsIEludGVyZmFjZU5h
bWUpLCBhbnlob3c6OkVycm9yPiB7CisgICAgICAgIGxldCBmcnJfd29yZCA9IEZycldvcmQ6Om5l
dyhmYWJyaWNfaWQudG9fc3RyaW5nKCkpPzsKKyAgICAgICAgbGV0IGZycl9pbnRlcmZhY2UgPSBw
cm94bW94X2Zycjo6b3BlbmZhYnJpYzo6T3BlbkZhYnJpY0ludGVyZmFjZSB7CisgICAgICAgICAg
ICBmYWJyaWNfaWQ6IGZycl93b3JkLmludG8oKSwKKyAgICAgICAgICAgIGhlbGxvX2ludGVydmFs
OiBOb25lLAorICAgICAgICAgICAgcGFzc2l2ZTogU29tZSh0cnVlKSwKKyAgICAgICAgICAgIGNz
bnBfaW50ZXJ2YWw6IE5vbmUsCisgICAgICAgICAgICBoZWxsb19tdWx0aXBsaWVyOiBOb25lLAor
ICAgICAgICAgICAgaXNfaXB2Njogcm91dGVyX2lkLmlzX2lwdjYoKSwKKyAgICAgICAgfTsKKyAg
ICAgICAgbGV0IGludGVyZmFjZV9uYW1lID0gSW50ZXJmYWNlTmFtZTo6T3BlbkZhYnJpYyhmb3Jt
YXQhKCJkdW1teV97fSIsIGZhYnJpY19pZCkucGFyc2UoKT8pOworICAgICAgICBPaygoZnJyX2lu
dGVyZmFjZS5pbnRvKCksIGludGVyZmFjZV9uYW1lKSkKKyAgICB9CisKKyAgICBmbiBidWlsZF9v
cGVuZmFicmljX2R1bW15X3JvdXRlbWFwKAorICAgICAgICBmYWJyaWNfaWQ6ICZGYWJyaWNJZCwK
KyAgICAgICAgcm91dGVyX2lwOiBJcEFkZHIsCisgICAgICAgIHNlcTogdTMyLAorICAgICkgLT4g
UmVzdWx0PFJvdXRlTWFwLCBhbnlob3c6OkVycm9yPiB7CisgICAgICAgIGxldCByb3V0ZW1hcF9u
YW1lID0gUm91dGVNYXBOYW1lOjpuZXcoIm9wZW5mYWJyaWMiLnRvX293bmVkKCkpOworICAgICAg
ICAvLyBjcmVhdGUgcm91dGUtbWFwCisgICAgICAgIGxldCByb3V0ZW1hcCA9IFJvdXRlTWFwIHsK
KyAgICAgICAgICAgIG5hbWU6IHJvdXRlbWFwX25hbWUuY2xvbmUoKSwKKyAgICAgICAgICAgIHNl
cSwKKyAgICAgICAgICAgIGFjdGlvbjogQWNjZXNzQWN0aW9uOjpQZXJtaXQsCisgICAgICAgICAg
ICBtYXRjaGVzOiB2ZWMhW1JvdXRlTWFwTWF0Y2g6OklwQWRkcmVzcyhBY2Nlc3NMaXN0TmFtZTo6
bmV3KGZvcm1hdCEoCisgICAgICAgICAgICAgICAgIm9wZW5mYWJyaWNfe2ZhYnJpY19pZH1faXBz
IgorICAgICAgICAgICAgKSkpXSwKKyAgICAgICAgICAgIHNldHM6IHZlYyFbUm91dGVNYXBTZXQ6
OklwU3JjKHJvdXRlcl9pcCldLAorICAgICAgICB9OworICAgICAgICBPayhyb3V0ZW1hcCkKKyAg
ICB9CisKKyAgICBmbiBidWlsZF9vc3BmX2R1bW15X3JvdXRlbWFwKAorICAgICAgICBmYWJyaWNf
aWQ6ICZGYWJyaWNJZCwKKyAgICAgICAgcm91dGVyX2lwOiBJcHY0QWRkciwKKyAgICAgICAgc2Vx
OiB1MzIsCisgICAgKSAtPiBSZXN1bHQ8Um91dGVNYXAsIGFueWhvdzo6RXJyb3I+IHsKKyAgICAg
ICAgbGV0IHJvdXRlbWFwX25hbWUgPSBSb3V0ZU1hcE5hbWU6Om5ldygib3NwZiIudG9fb3duZWQo
KSk7CisgICAgICAgIC8vIGNyZWF0ZSByb3V0ZS1tYXAKKyAgICAgICAgbGV0IHJvdXRlbWFwID0g
Um91dGVNYXAgeworICAgICAgICAgICAgbmFtZTogcm91dGVtYXBfbmFtZS5jbG9uZSgpLAorICAg
ICAgICAgICAgc2VxLAorICAgICAgICAgICAgYWN0aW9uOiBBY2Nlc3NBY3Rpb246OlBlcm1pdCwK
KyAgICAgICAgICAgIG1hdGNoZXM6IHZlYyFbUm91dGVNYXBNYXRjaDo6SXBBZGRyZXNzKEFjY2Vz
c0xpc3ROYW1lOjpuZXcoZm9ybWF0ISgKKyAgICAgICAgICAgICAgICAib3NwZl97ZmFicmljX2lk
fV9pcHMiCisgICAgICAgICAgICApKSldLAorICAgICAgICAgICAgc2V0czogdmVjIVtSb3V0ZU1h
cFNldDo6SXBTcmMoSXBBZGRyOjpmcm9tKHJvdXRlcl9pcCkpXSwKKyAgICAgICAgfTsKKworICAg
ICAgICBPayhyb3V0ZW1hcCkKKyAgICB9Cit9Ci0tIAoyLjM5LjUKCgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApw
dmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2kt
YmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==