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 5265E1FF16F for ; Tue, 16 Sep 2025 14:41:36 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id CAAB113F12; Tue, 16 Sep 2025 14:41:46 +0200 (CEST) From: Gabriel Goller To: pve-devel@lists.proxmox.com Date: Tue, 16 Sep 2025 14:40:54 +0200 Message-ID: <20250916124108.209042-1-g.goller@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1758026465514 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.005 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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [fabrics.rs] Subject: [pve-devel] [PATCH perl-rs v2] fix: sdn: fabrics: always add node-ip to all fabric interfaces 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" T3BlbkZhYnJpYyBjYW4gaGFuZGxlIGNvbXBsZXRlbHkgdW5udW1iZXJlZCBpbnRlcmZhY2VzLCBz byBpbnRlcmZhY2VzCndoaWNoIGRvbid0IGhhdmUgYW4gaXAgY29uZmlndXJlZC4gVGhpcyB3b3Jr cyBncmVhdCBpbiBtYW55IHNldHVwcywgYnV0CmNhbiBjYXVzZSBzb21lIGludHJpY2F0ZSBBUlAg aXNzdWVzIGluIHNvbWUgc3BlY2lmaWMgc2V0dXBzLgoKVGhlIHByb2JsZW0KPT09PT09PT09PT0K CkNvbnNpZGVyIGEgc2V0dXAgbGlrZSB0aGlzOgoKICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSQICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgIOKUjOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUkAogICDilIIgTm9kZTEgIOKUnOKUgOKUgOKUgOKUgOKUgOKUpCBO b2RlMiAg4pSc4pSA4pSA4pSA4pSA4pSA4pSkIE5vZGUzICDilIIKICAg4pSCMTAuMC4xLjHilIIg ICAgIOKUgjEwLjAuMS4y4pSCICAgICDilIIxMC4wLjEuM+KUggogICDilJTilIDilIDilIDilIDi lIDilIDilIDilIDilJggICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAg4pSU 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYCgpXaGVuIHBpbmdpbmcgZnJvbSBOb2RlMSB0byBO b2RlMiBhbmQgZnJvbSBOb2RlMiB0byBOb2RlMyBldmVyeXRoaW5nCndvcmtzLiBBIHBpbmcgZnJv bSBOb2RlMSB0byBOb2RlMyBhbHNvIHdvcmtzLCBidXQgT05MWSBpZiB0aGVyZSBoYXMgYmVlbgph IHBpbmcgYmV0d2VlbiBOb2RlMi1Ob2RlMyBhbmQgTm9kZTItTm9kZTEgaW4gdGhlIGxhc3QgNjAg c2Vjb25kcy4gVGhpcwppcyBiZWNhdXNlIHRoZXJlIGlzIGEgc3VidGxlIGRpZmZlcmVuY2UgYmV0 d2VlbiBwaW5naW5nIGZyb20gTm9kZTIgdG8KTm9kZTMgdnMgYW4gQVJQIGxvb2t1cCBmcm9tIE5v ZGUyIHRvIE5vZGUzIGhhcHBlbmluZyBiZWNhdXNlIE5vZGUyIHdhbnRzCnRvIGZvcndhcmQgYSBw YWNrZXQgZnJvbSBOb2RlMSB0byBOb2RlMy4KCldlIGNhbiBzZWUgdGhpcyBkaWZmZXJlbmNlIHF1 aXRlIGVhc2lseSBieSBqdXN0IHRjcGR1bXBpbmcgYWxsIHRoZSBBUlAKcGFja2FnZXMgZXhpdGlu ZyBOb2RlMi4KClNjZW5hcmlvIDE6IFBpbmcgZnJvbSBOb2RlMiB0byBOb2RlMwotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkEgc2ltcGxlIGxvb2t1cCBpbiB0aGUgcm91dGlu ZyB0YWJsZSB3aWxsIHRlbGwgdXMgdGhhdCB0byByZWFjaCBOb2RlMyB3ZQpuZWVkIHRvIGdvIHRo cm91Z2ggaW50ZXJmYWNlIChlLmcuKSBlbnMyMCBvbmxpbmsgKHNvIGp1c3QgdGhyb3cgaXQgb250 bwp0aGUgbGluayB3aXRob3V0aCBhbnkgbmV4dGhvcCBjaGVjaykgYW5kIHVzZSB0aGUgc3JjIGFk ZHJlc3Mgb2YKMTAuMC4xLjIuIFNvIHBpbmcgd2lsbCBjcmVhdGUgYSBzaW1wbGUgSUNNUCBwYWNr ZXQgd2l0aCB0aGUgZGVzdGluYXRpb24KYWRkcmVzcyBvZiAxMC4wLjEuMyBhbmQgdGhlIHNvdXJj ZSBhZGRyZXNzIG9mIDEwLjAuMS4yLiBUbyBzZW5kIHRoZQpwYWNrYWdlIHRoZSBtYWMgYWRkcmVz cyBvZiB0aGUgZGVzdGluYXRpb24gbmVlZHMgdG8gYmUgZmlndXJlZCBvdXQsIHNvIGEKQVJQIHBh Y2tldCBpcyBzZW5kIFswXS4gVGhlIGFycF9hbm5vdW5jZSBzeXNjdGwgaXMgMCBieSBkZWZhdWx0 LCBzbyB3ZQpzaW1wbHkgbG9va3VwIGlmIGFueSBsb2NhbCBpbnRlcmZhY2UgaGFzIHRoZSBhZGRy ZXNzIDEwLjAuMS4yICh0aGUKc291cmNlIGFkZHJlc3Mgb2YgdGhlIHBhY2tldCB3ZSB3YW50IHRv IHNlbmQgb3V0KSwgaWYgeWVzLCB0aGVuIHdlCmNob29zZSB0aGF0IGFzIGEgc291cmNlIGFkZHJl c3MgZm9yIHRoZSBBUlAgcGFja2V0IGFzIHdlbGwgYW5kIHNlbmQgaXQKb3V0IFsxXS4gVGhpcyB3 aWxsIGdlbmVyYXRlIGFuIEFSUCByZXF1ZXN0IGxpa2UgdGhlIGZvbGxvd2luZzoKCiAgICBSZXF1 ZXN0IHdoby1oYXMgMTAuMC4xLjIgdGVsbCAxMC4wLjEuMwoKV2UgZ2V0IGEgbmljZSByZXNwb25z ZToKCiAgICBSZXBseSAxMC4wLjEuMiBpcy1hdCBiYzoyNDoxMTo5MTphMDo0OQoKQW5kIHNlbmQg YSBwaW5nIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcywgd2hpY2ggd2lsbCB3b3JrIGFuZCBnaXZl IHVzIGEKcmVzdWx0LgoKVGhlIHNlY29uZCBzY2VuYXJpbyBkb2VzIG5vdCB3b3JrIHRoYXQgd2Vs bCwgYmVjYXVzZSB0aGUgQVJQIHBhY2tldCBpcwpjb25zdHJ1Y3RlZCB3cm9uZ2x5LgoKU2NlbmFy aW8gMjogUGFja2V0IGZvcndhcmQgZnJvbSBOb2RlMiB0byBOb2RlMwotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpJbiB0aGlzIHNjZW5hcmlvIHdlIHBpbmcg ZnJvbSBOb2RlMSB0byBOb2RlMywgd2hpY2ggbWVhbnMgdGhhdCBOb2RlMgpuZWVkcyB0byBmb3J3 YXJkIG91ciBwYWNrZXQuIFdoZW4gdGhlIHBhY2tldCBhcnJpdmVzIGF0IE5vZGUyLCB3ZSBhZ2Fp bgpjaGVjayB0aGUgcm91dGluZyB0YWJsZSwgd2hlcmUgd2Ugc2VlIHRoZSBzYW1lIGVudHJ5IGFz IGJlZm9yZSwgc28KMTAuMC4xLjMgaXMgYXZhaWxhYmxlIGF0IChlLmcuKSBlbnMyMCBvbmxpbmsg d2l0aCB0aGUgc3JjIGFkZHJlc3MKMTAuMC4xLjIuIFRoaXMgaXMgZmluZSwgYnV0IHdlIHN0aWxs IG5lZWQgdG8gZG8gYW4gQVJQIHJlcXVlc3QgdG8gbG9va3VwCnRoZSBtYWMgYWRkcmVzcyBvZiB0 aGUgbmVpZ2hib3Igd2hpY2ggaXMgYXR0YWNoZWQgYXQgZW5zMjAuIFNvIHdlIHRha2UKdGhlIHBh Y2tldCB3ZSBnZXQgZnJvbSBOb2RlMSwgd2hpY2ggaGFzIGEgc291cmNlIGFkZHJlc3Mgb2YgMTAu MC4xLjEsIGFuZApjYWxsIGFycF9zb2xpY2l0IG9uIGl0IHRvIG1ha2UgYW4gQVJQIHJlcXVlc3Qg YW5kIGZpbmQgdGhlIG5laWdoYm9ycyBtYWMKYWRkcmVzcy4gYXJwX3NvbGljaXQgd2lsbCB0YWtl IHRoZSBzb3VyY2UgYWRkcmVzcyBvZiB0aGUgcGFja2V0CigxMC4wLjEuMSkgYW5kIGxvb2t1cCB0 byBzZWFyY2ggaXQgbG9jYWxseS4gVGhpcyBjaGVjayBmYWlscyBiZWNhdXNlCjEwLjAuMS4xIGlz IG5vdCBhdmFpbGFibGUgbG9jYWxseSAodGhlcmUgaXMgYSBkaXJlY3Qgcm91dGUgdG8gaXQsIGJ1 dAppdCdzIG5vdCBjb25maWd1cmVkIG9uIGFueSBsb2NhbCBpbnRlcmZhY2UgKFJUTl9MT0NBTCkp LiBhcnBfc29saWNpdAp3aWxsIHRodXMgWzJdIGNhbGwgaW5ldF9zZWxlY3RfYWRkciwgd2hpY2gg Z29lcyB0aHJvdWdoIGFsbCB0aGUgaXAKYWRkcmVzc2VzIG9uIHRoZSBjdXJyZW50IGludGVyZmFj ZSAodGhlcmUgYXJlIG5vbmUsIGJlY2F1c2UgdGhpcwppbnRlcmZhY2UgaXMgdW5udW1iZXJlZCkg YW5kIHRoZW4gaXRlcmF0ZSB0aHJvdWdoIGFsbCB0aGUgb3RoZXIKaW50ZXJmYWNlcyBvbiB0aGUg aG9zdCBhbmQgc2VsZWN0IHRoZSBmaXJzdCBvbmUgd2l0aCAnc2NvcGUgbGluaycuIFRoaXMKaXAg d2lsbCB0aGVuIGJlIHNlbGVjdGVkIGFzIHRoZSBzb3VyY2UgYWRkcmVzcyBmb3IgdGhlIG91dGdv aW5nIEFSUApwYWNrYWdlLiBOb3cgaWYgd2UncmUgbHVja3kgdGhpcyBpcyB0aGUgZHVtbXkgaW50 ZXJmYWNlIG9uIG91ciBub2RlIGFuZAp3ZSBzZWxlY3QgdGhlIGNvcnJlY3Qgc291cmNlIGFkZHJl c3MgKDEwLjAuMS4yKSAtLSBidXQgd2UgY291bGQgYWxzbyBiZQp1bmx1Y2t5IGFuZCBpdCBzZWxl Y3RzIGEgY29tcGxldGVseSByYW5kb20gYWRkcmVzcyBmcm9tIGFub3RoZXIKaW50ZXJmYWNlIGUu Zy4gMTcyLjE2LjAuMjYuIElmIHdlJ3JlIHVubHVja3kgYXJwX3NvbGljaXQgd2lsbCBzZW5kIG91 dAp0aGUgZm9sbG93aW5nIEFSUCBwYWNrZXQ6CgogICAgUmVxdWVzdCB3aG8taGFzIDEwLjAuMS4z IHRlbGwgMTcyLjE2LjAuMjYKCldlIHdpbGwgZ2V0IGEgY29ycmVjdCByZXNwb25zZSBidXQgdGhl IHJlc3BvbnNlIHdpbGwgZW5kIHVwIG9uIGFub3RoZXIKaW50ZXJmYWNlIChiZWNhdXNlIDE3Mi4x Ni4wLjI2IGlzIG5vdCBvbiB0aGUgc2FtZSBpbnRlcmZhY2UgYXMKMTAuMC4xLjIpLiBUaGlzIG1l YW5zIHdlIHdpbGwgc2VuZCBvdXQgdGhlc2UgQVJQIHJlcXVlc3RzIHJlcGVhdGVkbHkgYW5kCm5l dmVyIGdldCBhbiBhbnN3ZXIsIHNvIHRoZSBwaW5nIGZyb20gTm9kZTEgdG8gTm9kZTMgd2lsbCBn ZXQKIkRlc3RpbmF0aW9uIGhvc3QgdW5yZWFjaGFibGUgZXJyb3JzIi4KCkZvciBtb3JlIGluZm9y bWF0aW9uIGNoZWNrIG91dCB0aGUgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIHRoZSBhcnBfc29saWNp dApmdW5jdGlvbiBiZWxvdzoKClRoZSBsb2dpYyBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgYXJwX3Nv bGljaXQgZnVuY3Rpb24gd2hpY2ggaXMgc2hvd24gaGVyZQppbiBhIHNpbXBsaWZpZWQgZm9ybToK CiAgICBzdGF0aWMgdm9pZCBhcnBfc29saWNpdChzdHJ1Y3QgbmVpZ2hib3VyICpuZWlnaCwgc3Ry dWN0IHNrX2J1ZmYgKnNrYikKICAgIHsKCSAgICBfX2JlMzIgc2FkZHIgPSAwOwoJICAgIHN0cnVj dCBuZXRfZGV2aWNlICpkZXYgPSBuZWlnaC0+ZGV2OwoJICAgIF9fYmUzMiB0YXJnZXQgPSAqKF9f YmUzMiAqKW5laWdoLT5wcmltYXJ5X2tleTsKCgkgICAgc3dpdGNoIChJTl9ERVZfQVJQX0FOTk9V TkNFKGluX2RldikpIHsKCSAgICBkZWZhdWx0OgoJICAgIGNhc2UgMDoJCS8qIEJ5IGRlZmF1bHQg YW5ub3VuY2UgYW55IGxvY2FsIElQICovCgkJICAgIGlmIChza2IgJiYgaW5ldF9hZGRyX3R5cGVf ZGV2X3RhYmxlKGRldl9uZXQoZGV2KSwgZGV2LAoJCQkJCSAgICAgIGlwX2hkcihza2IpLT5zYWRk cikgPT0gUlROX0xPQ0FMKQoJCQkgICAgc2FkZHIgPSBpcF9oZHIoc2tiKS0+c2FkZHI7CgkJICAg IGJyZWFrOwoJICAgIGNhc2UgMToJCS8qIFJlc3RyaWN0IGFubm91bmNlbWVudHMgb2Ygc2FkZHIg aW4gc2FtZSBzdWJuZXQgKi8KCQkgICAgaWYgKCFza2IpCgkJCSAgICBicmVhazsKCQkgICAgc2Fk ZHIgPSBpcF9oZHIoc2tiKS0+c2FkZHI7CgkJICAgIGlmIChpbmV0X2FkZHJfdHlwZV9kZXZfdGFi bGUoZGV2X25ldChkZXYpLCBkZXYsCgkJCQkJCSBzYWRkcikgPT0gUlROX0xPQ0FMKSB7CgkJCSAg ICAvKiBzYWRkciBzaG91bGQgYmUga25vd24gdG8gdGFyZ2V0ICovCgkJCSAgICBpZiAoaW5ldF9h ZGRyX29ubGluayhpbl9kZXYsIHRhcmdldCwgc2FkZHIpKQoJCQkJICAgIGJyZWFrOwoJCSAgICB9 CgkJICAgIHNhZGRyID0gMDsKCQkgICAgYnJlYWs7CgkgICAgY2FzZSAyOgkJLyogQXZvaWQgc2Vj b25kYXJ5IElQcywgZ2V0IGEgcHJpbWFyeS9wcmVmZXJyZWQgb25lICovCgkJICAgIGJyZWFrOwoJ ICAgIH0KCgkgICAgaWYgKCFzYWRkcikKCQkgICAgc2FkZHIgPSBpbmV0X3NlbGVjdF9hZGRyKGRl diwgdGFyZ2V0LCBSVF9TQ09QRV9MSU5LKTsKCgkgICAgYXJwX3NlbmRfZHN0KEFSUE9QX1JFUVVF U1QsIEVUSF9QX0FSUCwgdGFyZ2V0LCBkZXYsIHNhZGRyLAoJCQkgZHN0X2h3LCBkZXYtPmRldl9h ZGRyLCBOVUxMLCBkc3QpOwogICAgfQoKSG93IHRvIGZpeCB0aGlzCj09PT09PT09PT09PT09PQoK V2UgY291bGQgZml4IHRoaXMgYnkgdHdlYWtpbmcgdGhlIGFycF9hbm5vdW5jZSBvcHRpb24sIGJ1 dCB3ZSB3b3VsZCBuZWVkCnRvIGJlIGNhcmVmdWwgYW5kIG9ubHkgZG8gdGhpcyBvbiBvdXRnb2lu ZyBpbnRlcmZhY2VzLiBUaGUgcHJvYmxlbSBpcwpoZXJlIHRoYXQgd2UgY2FuJ3QgdGVsbCB3aGlj aCBpbnRlcmZhY2VzIHdpbGwgb25seSBiZSBvdXRnb2luZwppbnRlcmZhY2VzLgpBIG11Y2ggc2lt cGxlciBzb2x1dGlvbiB3b3VsZCBiZSB0byBqdXN0IHNldCB0aGUgaXAgYWRkcmVzcyBvZiB0aGUg bm9kZQooaW4gb3VyIGNhc2UgZm9yIE5vZGUyIDEwLjAuMS4yKSBvbiBldmVyeSBpbnRlcmZhY2Vz IHdoaWNoIGlzIGluIHRoZQpmYWJyaWMuIEluIHRoYXQgY2FzZSBpbmV0X3NlbGVjdF9hZGRyIHdp bGwgc2VsZWN0IHRoZSBjb3JyZWN0IGFkZHJlc3MKYmVjYXVzZSBpdCdzIHNldCBvbiB0aGUgb3V0 Z29pbmcgaW50ZXJmYWNlLiBUaGlzIG1lYW5zIGFsbCB0aGUgQVJQCnJlcXVlc3RzIHdpbGwgYmUg c2VudCBvdXQgd2l0aCB0aGUgY29ycmVjdCBzb3VyY2UgYWRkcmVzcy4KClswXTogaHR0cHM6Ly9n aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0 L3RyZWUvbmV0L2lwdjQvYXJwLmMjbjMzMwpbMV06IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHVi L3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL25ldC9pcHY0L2Fy cC5jI24zNTIKWzJdOiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs L2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9uZXQvaXB2NC9hcnAuYyNuMzczCgpTaWduZWQt b2ZmLWJ5OiBHYWJyaWVsIEdvbGxlciA8Zy5nb2xsZXJAcHJveG1veC5jb20+Ci0tLQoKQ2hhbmdl bG9nOgp2MToKICogZXhwbGFpbmVkIHRoZSBwcm9ibGVtIGluIHRoZSBjb21taXQgbWVzc2FnZSBi ZXR0ZXIsIG5vIGZ1bmN0aW9uYWwKICAgY2hhbmdlLgoKIHB2ZS1ycy9zcmMvYmluZGluZ3Mvc2Ru L2ZhYnJpY3MucnMgfCAxNyArKysrKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEzIGlu c2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcHZlLXJzL3NyYy9iaW5k aW5ncy9zZG4vZmFicmljcy5ycyBiL3B2ZS1ycy9zcmMvYmluZGluZ3Mvc2RuL2ZhYnJpY3MucnMK aW5kZXggNTg3YjFkNjhjOGZiLi45ZDVmYTZjNTNkNzAgMTAwNjQ0Ci0tLSBhL3B2ZS1ycy9zcmMv YmluZGluZ3Mvc2RuL2ZhYnJpY3MucnMKKysrIGIvcHZlLXJzL3NyYy9iaW5kaW5ncy9zZG4vZmFi cmljcy5ycwpAQCAtNTQ0LDEyICs1NDQsMjEgQEAgcHViIG1vZCBwdmVfcnNfc2RuX2ZhYnJpY3Mg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlIShpbnRlcmZhY2VzLCAie2ludGVy ZmFjZX0iKT87CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAg ICAgICAgIC8vIElmIG5vdCBpcCBpcyBjb25maWd1cmVkLCBhZGQgYXV0byBhbmQgZW1wdHkgaWZh Y2UgdG8gYnJpbmcgaW50ZXJmYWNlIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBu byBpcCBpcyBjb25maWd1cmVkLCBhZGQgYXV0byBhbmQgaWZhY2Ugd2l0aCBub2RlIGlwIHRvIGJy aW5nIGludGVyZmFjZSB1cAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3BlbkZhYnJpYyBk b2Vzbid0IHJlYWxseSBuZWVkIGFuIGlwIG9uIHRoZSBpbnRlcmZhY2UsIGJ1dCB0aGUgcHJvYmxl bQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdGhhdCBhcnAgY2FuJ3QgdGVsbCB3aGlj aCBzb3VyY2UgYWRkcmVzcyB0byB1c2UgaW4gc29tZSBjYXNlcywgc28KKyAgICAgICAgICAgICAg ICAgICAgICAgIC8vIGl0J3MgYmV0dGVyIGlmIHdlIHNldCB0aGUgbm9kZSBhZGRyZXNzIG9uIGFs bCB0aGUgZmFicmljIGludGVyZmFjZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsZXQg KE5vbmUsIE5vbmUpID0gKGludGVyZmFjZS5pcCgpLCBpbnRlcmZhY2UuaXA2KCkpIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2lkciA9IENpZHI6OmZyb20oaWYgbGV0IFNvbWUo aXApID0gbm9kZS5pcCgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXBBZGRy Ojpmcm9tKGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiBsZXQgU29t ZShpcCkgPSBub2RlLmlwNigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXBB ZGRyOjpmcm9tKGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueWhvdzo6YmFpbCEoInRoZXJlIGhhcyB0byBi ZSBhIGlwdjQgb3IgaXB2NiBub2RlIGFkZHJlc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW50ZXJmYWNlID0gcmVu ZGVyX2ludGVyZmFjZShpbnRlcmZhY2UubmFtZSgpLCBjaWRyLCBmYWxzZSk/OwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHdyaXRlbG4hKGludGVyZmFjZXMpPzsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICB3cml0ZWxuIShpbnRlcmZhY2VzLCAiYXV0byB7fSIsIGludGVyZmFjZS5u YW1lKCkpPzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZWxuIShpbnRlcmZhY2Vz LCAiaWZhY2Uge30iLCBpbnRlcmZhY2UubmFtZSgpKT87Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgd3JpdGVsbiEoaW50ZXJmYWNlcywgIlx0aXAtZm9yd2FyZCAxIik/OworICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHdyaXRlIShpbnRlcmZhY2VzLCAie2ludGVyZmFjZX0iKT87CiAg ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICB9Ci0tIAoyLjQ3LjMKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJv eG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGlu Zm8vcHZlLWRldmVsCg==