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 389E01FF164 for ; Fri, 22 Nov 2024 13:16:17 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 62EB611A5A; Fri, 22 Nov 2024 13:16:24 +0100 (CET) From: Gabriel Goller To: pbs-devel@lists.proxmox.com Date: Fri, 22 Nov 2024 13:16:14 +0100 Message-Id: <20241122121617.185615-2-g.goller@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20241122121617.185615-1-g.goller@proxmox.com> References: <20241122121617.185615-1-g.goller@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.038 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: [pbs-devel] [PATCH proxmox-backup v6 1/4] snapshot: add helper function to retrieve verify_state X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" QWRkIGhlbHBlciBmdW5jdGlvbnMgdG8gcmV0cmlldmUgdGhlIHZlcmlmeV9zdGF0ZSBmcm9tIHRo ZSBtYW5pZmVzdCBvZiBhCnNuYXBzaG90LiBSZXBsYWNlZCBhbGwgdGhlIG1hbnVhbCAidmVyaWZ5 X3N0YXRlIiBwYXJzaW5nIHdpdGggdGhlIGhlbHBlcgpmdW5jdGlvbi4KClN1Z2dlc3RlZC1ieTog RmFiaWFuIEdyw7xuYmljaGxlciA8Zi5ncnVlbmJpY2hsZXJAcHJveG1veC5jb20+ClNpZ25lZC1v ZmYtYnk6IEdhYnJpZWwgR29sbGVyIDxnLmdvbGxlckBwcm94bW94LmNvbT4KLS0tCiBwYnMtZGF0 YXN0b3JlL3NyYy9iYWNrdXBfaW5mby5ycyB8ICA5ICsrKysrKystLQogcGJzLWRhdGFzdG9yZS9z cmMvbWFuaWZlc3QucnMgICAgfCAxNCArKysrKysrKysrKysrLQogc3JjL2FwaTIvYWRtaW4vZGF0 YXN0b3JlLnJzICAgICAgfCAxNiArKysrKysrLS0tLS0tLS0tCiBzcmMvYXBpMi9iYWNrdXAvbW9k LnJzICAgICAgICAgICB8IDE4ICsrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2t1cC92ZXJpZnku cnMgICAgICAgICAgICAgfCAxMyArKysrKysrKy0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDQ2IGlu c2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Bicy1kYXRhc3RvcmUv c3JjL2JhY2t1cF9pbmZvLnJzIGIvcGJzLWRhdGFzdG9yZS9zcmMvYmFja3VwX2luZm8ucnMKaW5k ZXggNjJkMTJiMTE4M2RmLi5hNTgxZDc1NzU3YjQgMTAwNjQ0Ci0tLSBhL3Bicy1kYXRhc3RvcmUv c3JjL2JhY2t1cF9pbmZvLnJzCisrKyBiL3Bicy1kYXRhc3RvcmUvc3JjL2JhY2t1cF9pbmZvLnJz CkBAIC04LDggKzgsOCBAQCB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9Owog dXNlIHByb3htb3hfc3lzOjpmczo6e2xvY2tfZGlyX25vYmxvY2ssIHJlcGxhY2VfZmlsZSwgQ3Jl YXRlT3B0aW9uc307CiAKIHVzZSBwYnNfYXBpX3R5cGVzOjp7Ci0gICAgQXV0aGlkLCBCYWNrdXBH cm91cERlbGV0ZVN0YXRzLCBCYWNrdXBOYW1lc3BhY2UsIEJhY2t1cFR5cGUsIEdyb3VwRmlsdGVy LCBCQUNLVVBfREFURV9SRUdFWCwKLSAgICBCQUNLVVBfRklMRV9SRUdFWCwKKyAgICBBdXRoaWQs IEJhY2t1cEdyb3VwRGVsZXRlU3RhdHMsIEJhY2t1cE5hbWVzcGFjZSwgQmFja3VwVHlwZSwgR3Jv dXBGaWx0ZXIsIFZlcmlmeVN0YXRlLAorICAgIEJBQ0tVUF9EQVRFX1JFR0VYLCBCQUNLVVBfRklM RV9SRUdFWCwKIH07CiB1c2UgcGJzX2NvbmZpZzo6e29wZW5fYmFja3VwX2xvY2tmaWxlLCBCYWNr dXBMb2NrR3VhcmR9OwogCkBAIC01NTUsNiArNTU1LDExIEBAIGltcGwgQmFja3VwRGlyIHsKIAog ICAgICAgICBPaygoKSkKICAgICB9CisKKyAgICAvLy8gTG9hZCB0aGUgdmVyaWZ5IHN0YXRlIGZy b20gdGhlIG1hbmlmZXN0LgorICAgIHB1YiBmbiB2ZXJpZnlfc3RhdGUoJnNlbGYpIC0+IFJlc3Vs dDxPcHRpb248VmVyaWZ5U3RhdGU+LCBhbnlob3c6OkVycm9yPiB7CisgICAgICAgIE9rKHNlbGYu bG9hZF9tYW5pZmVzdCgpPy4wLnZlcmlmeV9zdGF0ZSgpPy5tYXAofHN2c3wgc3ZzLnN0YXRlKSkK KyAgICB9CiB9CiAKIGltcGwgQXNSZWY8cGJzX2FwaV90eXBlczo6QmFja3VwTmFtZXNwYWNlPiBm b3IgQmFja3VwRGlyIHsKZGlmZiAtLWdpdCBhL3Bicy1kYXRhc3RvcmUvc3JjL21hbmlmZXN0LnJz IGIvcGJzLWRhdGFzdG9yZS9zcmMvbWFuaWZlc3QucnMKaW5kZXggYzNkZjAxNDI3MmEwLi4zMDEz ZmFiOTcyMjEgMTAwNjQ0Ci0tLSBhL3Bicy1kYXRhc3RvcmUvc3JjL21hbmlmZXN0LnJzCisrKyBi L3Bicy1kYXRhc3RvcmUvc3JjL21hbmlmZXN0LnJzCkBAIC01LDcgKzUsNyBAQCB1c2UgYW55aG93 Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9OwogdXNlIHNlcmRlOjp7RGVzZXJpYWxpemUsIFNl cmlhbGl6ZX07CiB1c2Ugc2VyZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKIAotdXNlIHBic19hcGlf dHlwZXM6OntCYWNrdXBUeXBlLCBDcnlwdE1vZGUsIEZpbmdlcnByaW50fTsKK3VzZSBwYnNfYXBp X3R5cGVzOjp7QmFja3VwVHlwZSwgQ3J5cHRNb2RlLCBGaW5nZXJwcmludCwgU25hcHNob3RWZXJp ZnlTdGF0ZX07CiB1c2UgcGJzX3Rvb2xzOjpjcnlwdF9jb25maWc6OkNyeXB0Q29uZmlnOwogCiBw dWIgY29uc3QgTUFOSUZFU1RfQkxPQl9OQU1FOiAmc3RyID0gImluZGV4Lmpzb24uYmxvYiI7CkBA IC0yNDIsNiArMjQyLDE4IEBAIGltcGwgQmFja3VwTWFuaWZlc3QgewogICAgICAgICBsZXQgbWFu aWZlc3Q6IEJhY2t1cE1hbmlmZXN0ID0gc2VyZGVfanNvbjo6ZnJvbV92YWx1ZShqc29uKT87CiAg ICAgICAgIE9rKG1hbmlmZXN0KQogICAgIH0KKworICAgIC8vLyBHZXQgdGhlIHZlcmlmeSBzdGF0 ZSBvZiB0aGUgc25hcHNob3QKKyAgICAvLy8KKyAgICAvLy8gTm90ZTogTmV3IHNuYXBzaG90cywg d2hpY2ggaGF2ZSBub3QgYmVlbiB2ZXJpZmllZCB5ZXQsIGRvIG5vdCBoYXZlIGEgc3RhdHVzIGFu ZCB0aGlzCisgICAgLy8vIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGBPayhOb25lKWAuCisgICAgcHVi IGZuIHZlcmlmeV9zdGF0ZSgmc2VsZikgLT4gUmVzdWx0PE9wdGlvbjxTbmFwc2hvdFZlcmlmeVN0 YXRlPiwgYW55aG93OjpFcnJvcj4geworICAgICAgICBsZXQgdmVyaWZ5ID0gc2VsZi51bnByb3Rl Y3RlZFsidmVyaWZ5X3N0YXRlIl0uY2xvbmUoKTsKKyAgICAgICAgaWYgdmVyaWZ5LmlzX251bGwo KSB7CisgICAgICAgICAgICByZXR1cm4gT2soTm9uZSk7CisgICAgICAgIH0KKyAgICAgICAgT2so U29tZShzZXJkZV9qc29uOjpmcm9tX3ZhbHVlOjo8U25hcHNob3RWZXJpZnlTdGF0ZT4odmVyaWZ5 KT8pKQorICAgIH0KIH0KIAogaW1wbCBUcnlGcm9tPHN1cGVyOjpEYXRhQmxvYj4gZm9yIEJhY2t1 cE1hbmlmZXN0IHsKZGlmZiAtLWdpdCBhL3NyYy9hcGkyL2FkbWluL2RhdGFzdG9yZS5ycyBiL3Ny Yy9hcGkyL2FkbWluL2RhdGFzdG9yZS5ycwppbmRleCA5OWI1NzlmMDJjNTAuLjM2MjRkYmE0MTE5 OSAxMDA2NDQKLS0tIGEvc3JjL2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJzCisrKyBiL3NyYy9hcGky L2FkbWluL2RhdGFzdG9yZS5ycwpAQCAtNTM3LDE1ICs1MzcsMTMgQEAgdW5zYWZlIGZuIGxpc3Rf c25hcHNob3RzX2Jsb2NraW5nKAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgfTsKIAotICAgICAgICAgICAgICAgIGxldCB2ZXJpZmljYXRpb24gPSBtYW5pZmVzdC51bnBy b3RlY3RlZFsidmVyaWZ5X3N0YXRlIl0uY2xvbmUoKTsKLSAgICAgICAgICAgICAgICBsZXQgdmVy aWZpY2F0aW9uOiBPcHRpb248U25hcHNob3RWZXJpZnlTdGF0ZT4gPQotICAgICAgICAgICAgICAg ICAgICBtYXRjaCBzZXJkZV9qc29uOjpmcm9tX3ZhbHVlKHZlcmlmaWNhdGlvbikgewotICAgICAg ICAgICAgICAgICAgICAgICAgT2sodmVyaWZ5KSA9PiB2ZXJpZnksCi0gICAgICAgICAgICAgICAg ICAgICAgICBFcnIoZXJyKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50 bG4hKCJlcnJvciBwYXJzaW5nIHZlcmlmaWNhdGlvbiBzdGF0ZSA6ICd7fSciLCBlcnIpOwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBsZXQgdmVyaWZpY2F0aW9u OiBPcHRpb248U25hcHNob3RWZXJpZnlTdGF0ZT4gPSBtYXRjaCBtYW5pZmVzdC52ZXJpZnlfc3Rh dGUoKSB7CisgICAgICAgICAgICAgICAgICAgIE9rKHZlcmlmeSkgPT4gdmVyaWZ5LAorICAgICAg ICAgICAgICAgICAgICBFcnIoZXJyKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcHJp bnRsbiEoImVycm9yIHBhcnNpbmcgdmVyaWZpY2F0aW9uIHN0YXRlIDogJ3t9JyIsIGVycik7Cisg ICAgICAgICAgICAgICAgICAgICAgICBOb25lCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAgICAgbGV0IHNpemUgPSBTb21lKGZpbGVzLml0 ZXIoKS5tYXAofHh8IHguc2l6ZS51bndyYXBfb3IoMCkpLnN1bSgpKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2FwaTIvYmFja3VwL21vZC5ycyBiL3NyYy9hcGkyL2JhY2t1cC9tb2QucnMKaW5kZXggNjNj NDlmNjUzN2Y3Li5kY2U0MGU1MzE4YjggMTAwNjQ0Ci0tLSBhL3NyYy9hcGkyL2JhY2t1cC9tb2Qu cnMKKysrIGIvc3JjL2FwaTIvYmFja3VwL21vZC5ycwpAQCAtOCw2ICs4LDcgQEAgdXNlIGh5cGVy OjpodHRwOjpyZXF1ZXN0OjpQYXJ0czsKIHVzZSBoeXBlcjo6e0JvZHksIFJlcXVlc3QsIFJlc3Bv bnNlLCBTdGF0dXNDb2RlfTsKIHVzZSBzZXJkZTo6RGVzZXJpYWxpemU7CiB1c2Ugc2VyZGVfanNv bjo6e2pzb24sIFZhbHVlfTsKK3VzZSB0cmFjaW5nOjp3YXJuOwogCiB1c2UgcHJveG1veF9yZXN0 X3NlcnZlcjo6e0gyU2VydmljZSwgV29ya2VyVGFza307CiB1c2UgcHJveG1veF9yb3V0ZXI6Onto dHRwX2VyciwgbGlzdF9zdWJkaXJzX2FwaV9tZXRob2R9OwpAQCAtMTksOSArMjAsOSBAQCB1c2Ug cHJveG1veF9zb3J0YWJsZV9tYWNybzo6c29ydGFibGU7CiB1c2UgcHJveG1veF9zeXM6OmZzOjps b2NrX2Rpcl9ub2Jsb2NrX3NoYXJlZDsKIAogdXNlIHBic19hcGlfdHlwZXM6OnsKLSAgICBBdXRo aWQsIEJhY2t1cE5hbWVzcGFjZSwgQmFja3VwVHlwZSwgT3BlcmF0aW9uLCBTbmFwc2hvdFZlcmlm eVN0YXRlLCBWZXJpZnlTdGF0ZSwKLSAgICBCQUNLVVBfQVJDSElWRV9OQU1FX1NDSEVNQSwgQkFD S1VQX0lEX1NDSEVNQSwgQkFDS1VQX05BTUVTUEFDRV9TQ0hFTUEsIEJBQ0tVUF9USU1FX1NDSEVN QSwKLSAgICBCQUNLVVBfVFlQRV9TQ0hFTUEsIENIVU5LX0RJR0VTVF9TQ0hFTUEsIERBVEFTVE9S RV9TQ0hFTUEsIFBSSVZfREFUQVNUT1JFX0JBQ0tVUCwKKyAgICBBdXRoaWQsIEJhY2t1cE5hbWVz cGFjZSwgQmFja3VwVHlwZSwgT3BlcmF0aW9uLCBWZXJpZnlTdGF0ZSwgQkFDS1VQX0FSQ0hJVkVf TkFNRV9TQ0hFTUEsCisgICAgQkFDS1VQX0lEX1NDSEVNQSwgQkFDS1VQX05BTUVTUEFDRV9TQ0hF TUEsIEJBQ0tVUF9USU1FX1NDSEVNQSwgQkFDS1VQX1RZUEVfU0NIRU1BLAorICAgIENIVU5LX0RJ R0VTVF9TQ0hFTUEsIERBVEFTVE9SRV9TQ0hFTUEsIFBSSVZfREFUQVNUT1JFX0JBQ0tVUCwKIH07 CiB1c2UgcGJzX2NvbmZpZzo6Q2FjaGVkVXNlckluZm87CiB1c2UgcGJzX2RhdGFzdG9yZTo6aW5k ZXg6OkluZGV4RmlsZTsKQEAgLTE1OSwxNSArMTYwLDE4IEBAIGZuIHVwZ3JhZGVfdG9fYmFja3Vw X3Byb3RvY29sKAogICAgICAgICAgICAgbGV0IGluZm8gPSBiYWNrdXBfZ3JvdXAubGFzdF9iYWNr dXAodHJ1ZSkudW53cmFwX29yKE5vbmUpOwogICAgICAgICAgICAgaWYgbGV0IFNvbWUoaW5mbykg PSBpbmZvIHsKICAgICAgICAgICAgICAgICBsZXQgKG1hbmlmZXN0LCBfKSA9IGluZm8uYmFja3Vw X2Rpci5sb2FkX21hbmlmZXN0KCk/OwotICAgICAgICAgICAgICAgIGxldCB2ZXJpZnkgPSBtYW5p ZmVzdC51bnByb3RlY3RlZFsidmVyaWZ5X3N0YXRlIl0uY2xvbmUoKTsKLSAgICAgICAgICAgICAg ICBtYXRjaCBzZXJkZV9qc29uOjpmcm9tX3ZhbHVlOjo8U25hcHNob3RWZXJpZnlTdGF0ZT4odmVy aWZ5KSB7Ci0gICAgICAgICAgICAgICAgICAgIE9rKHZlcmlmeSkgPT4gbWF0Y2ggdmVyaWZ5LnN0 YXRlIHsKKyAgICAgICAgICAgICAgICBtYXRjaCBtYW5pZmVzdC52ZXJpZnlfc3RhdGUoKSB7Cisg ICAgICAgICAgICAgICAgICAgIE9rKFNvbWUodmVyaWZ5KSkgPT4gbWF0Y2ggdmVyaWZ5LnN0YXRl IHsKICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmeVN0YXRlOjpPayA9PiBTb21lKGluZm8p LAogICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZ5U3RhdGU6OkZhaWxlZCA9PiBOb25lLAog ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBFcnIoXykgPT4gewor ICAgICAgICAgICAgICAgICAgICBPayhOb25lKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAvLyBubyB2ZXJpZnkgc3RhdGUgZm91bmQsIHRyZWF0IGFzIHZhbGlkCiAgICAgICAgICAgICAg ICAgICAgICAgICBTb21lKGluZm8pCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgICAgICAgIEVycihlcnIpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4hKCJl cnJvciBwYXJzaW5nIHRoZSBzbmFwc2hvdCBtYW5pZmVzdDoge2VycjojfSIpOworICAgICAgICAg ICAgICAgICAgICAgICAgU29tZShpbmZvKQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrdXAv dmVyaWZ5LnJzIGIvc3JjL2JhY2t1cC92ZXJpZnkucnMKaW5kZXggNmVmN2U4ZWIzZWJiLi5jMWFi ZTY5YTRmZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrdXAvdmVyaWZ5LnJzCisrKyBiL3NyYy9iYWNr dXAvdmVyaWZ5LnJzCkBAIC01LDcgKzUsNyBAQCB1c2Ugc3RkOjp0aW1lOjpJbnN0YW50OwogCiB1 c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9OwogdXNlIG5peDo6ZGlyOjpEaXI7 Ci11c2UgdHJhY2luZzo6e2Vycm9yLCBpbmZvfTsKK3VzZSB0cmFjaW5nOjp7ZXJyb3IsIGluZm8s IHdhcm59OwogCiB1c2UgcHJveG1veF9zeXM6OmZzOjpsb2NrX2Rpcl9ub2Jsb2NrX3NoYXJlZDsK IHVzZSBwcm94bW94X3dvcmtlcl90YXNrOjpXb3JrZXJUYXNrQ29udGV4dDsKQEAgLTU1MywxMCAr NTUzLDEzIEBAIHB1YiBmbiB2ZXJpZnlfZmlsdGVyKAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg ICB9CiAKLSAgICBsZXQgcmF3X3ZlcmlmeV9zdGF0ZSA9IG1hbmlmZXN0LnVucHJvdGVjdGVkWyJ2 ZXJpZnlfc3RhdGUiXS5jbG9uZSgpOwotICAgIG1hdGNoIHNlcmRlX2pzb246OmZyb21fdmFsdWU6 OjxTbmFwc2hvdFZlcmlmeVN0YXRlPihyYXdfdmVyaWZ5X3N0YXRlKSB7Ci0gICAgICAgIEVycihf KSA9PiB0cnVlLCAvLyBubyBsYXN0IHZlcmlmaWNhdGlvbiwgYWx3YXlzIGluY2x1ZGUKLSAgICAg ICAgT2sobGFzdF92ZXJpZnkpID0+IHsKKyAgICBtYXRjaCBtYW5pZmVzdC52ZXJpZnlfc3RhdGUo KSB7CisgICAgICAgIEVycihlcnIpID0+IHsKKyAgICAgICAgICAgIHdhcm4hKCJlcnJvciByZWFk aW5nIG1hbmlmZXN0OiB7ZXJyOiN9Iik7CisgICAgICAgICAgICB0cnVlCisgICAgICAgIH0KKyAg ICAgICAgT2soTm9uZSkgPT4gdHJ1ZSwgLy8gbm8gbGFzdCB2ZXJpZmljYXRpb24sIGFsd2F5cyBp bmNsdWRlCisgICAgICAgIE9rKFNvbWUobGFzdF92ZXJpZnkpKSA9PiB7CiAgICAgICAgICAgICBt YXRjaCBvdXRkYXRlZF9hZnRlciB7CiAgICAgICAgICAgICAgICAgTm9uZSA9PiBmYWxzZSwgLy8g bmV2ZXIgcmUtdmVyaWZ5IGlmIGlnbm9yZWQgYW5kIG5vIG1heCBhZ2UKICAgICAgICAgICAgICAg ICBTb21lKG1heF9hZ2UpID0+IHsKLS0gCjIuMzkuNQoKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZl bEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFp bG1hbi9saXN0aW5mby9wYnMtZGV2ZWwK