From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7CF13C83F1D for ; Tue, 15 Jul 2025 05:37:13 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ubYLR-00036i-43; Tue, 15 Jul 2025 01:36:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ubYLM-00034t-JN for grub-devel@gnu.org; Tue, 15 Jul 2025 01:36:44 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ubYLJ-0008Kv-N9 for grub-devel@gnu.org; Tue, 15 Jul 2025 01:36:44 -0400 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-3a503d9ef59so3660613f8f.3 for ; Mon, 14 Jul 2025 22:36:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1752557798; x=1753162598; darn=gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=lWaYCQqRh/z6kQF0NwHEKdaZIkMWRlWkJP51Kk7Bm08=; b=gYyLyEK0PsI5iYTyvpscH+zbXo2jLO2rBOSZhAhckI6+K3EWUEKHH1zRnaPztuQi1O szezN9S/40BGNbZn1+NEvfCUectNSZyaIXSuH2YoWoSvGKq8bmlYIY5L0R9SknY1g5j7 mH6HMj2aBHl47Amy7wngaIwduGV2ltDNWOGB2a6h6qxPOzBD0Eo/hy5pW+bxJntXi6We wk0R384NdCH7yFqYZkySDl2SAQrT1rV23orSU+9+4ghZZyr/ZkXG7SXb81G0ClVNQyly UBq1V17hBebfA+DlE5Mqt7HYwldZ2rD7rB5r/nN+/ZpyvtphBDtCQo7c8iGbODi5K1Cy Nhgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752557798; x=1753162598; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lWaYCQqRh/z6kQF0NwHEKdaZIkMWRlWkJP51Kk7Bm08=; b=SDO0w5k4hWaflxZuuKx/2B98uiW5RV0tT6tgJyLPknWTeliCQBBusVsg5lMdUhmKS8 1iFIT7tHpdDTfNc+nQmd++OD3nDBcvudgR97DHXsCPK0pJgb+H1JnAmSIcmHzWGnWSSn uJ/KDDq8tMfB/wv2eK1flfB7OBG2Cpz1Dl1IcD4iyEG2crQUMWKjaoTyZ32YOZKRw3Zk wrpJ3BDyPJT09nMTBw7XkC0CyN7qUw2Ibq/trYrX19fiIK0il0WpozteBSkpj2wyjUkR 86ZRdAmyVJvDTPkA72mt8qcLEXf0rW5oMIMz/wKpVkYQ5TI+3RoFyu3EZ5aXYxlRActd ZR+Q== X-Gm-Message-State: AOJu0YygMVjXOFaoYFrBPlwa3JvMgN6xykbYZHx3UfbY3YYq6CFwafGq xbqftltf2ceWFeapWT5iFVjAK2GAlwSMgsHG+nA5o4H2nIuQhaxxRsuAGVFYF8pfTPw7WKE4MIW cCgk+ X-Gm-Gg: ASbGnctoSQFfVpELBuTyaYPcGSgdHQx8yRsL3BJ7A71l2w6E5c9TQjK4f+dXDBTn1wg vnjUSomdLxLAh3ljutYSYQrmpEe29h7zzcBHet9qrmlWxP8aiX0yhC7gCR71A0esJZ8B73tlDkL IZ43Tnh1He+q/RdpQvFuB+r0PC80qiyTaaw3Fin2+pkbACMy6gHnKITzEpTLYGvnA3AYPfHMIeq hWQGzxjePvkb3OntmNYF8/lrT+wlZFApmU4XJiBrIhb5ggLYbNh+BtqT99BW49Ih1tJSK8BvfrX +jqb9pKYfnniIje/tFBPd6So0FxviMrnZctbY24m7GuOlcq6noYQg4ur8ODuEimTn85tZf1Nfn3 KeD2Hh56sJ9zJAMzYiNF+CxZvdtu5d091EmqIIA0SzBmlOYMnHI7W X-Google-Smtp-Source: AGHT+IFtH8a+fHL64MhkUiCBKry7gxBqWEtL9FSFpVOJ5aNTJ8q09EKweLKVmTYR3p5IU0x2wKLQzQ== X-Received: by 2002:a5d:5f4e:0:b0:3a4:e5fa:73f0 with SMTP id ffacd0b85a97d-3b5f2dd0a4emr11854993f8f.20.1752557798099; Mon, 14 Jul 2025 22:36:38 -0700 (PDT) Received: from localhost (111-240-155-162.dynamic-ip.hinet.net. [111.240.155.162]) by smtp.gmail.com with UTF8SMTPSA id 41be03b00d2f7-b3bbe52c4fasm11288573a12.5.2025.07.14.22.36.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Jul 2025 22:36:37 -0700 (PDT) To: The development of GNU GRUB Subject: [PATCH v2 0/7] TPM2 PCR Capping Date: Tue, 15 Jul 2025 13:36:27 +0800 Message-ID: <20250715053634.20799-1-glin@suse.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42e; envelope-from=glin@suse.com; helo=mail-wr1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Gary Lin via Grub-devel Reply-To: The development of GNU GRUB Cc: Gary Lin , Daniel Kiper , mchang@suse.com, patrick.colp@oracle.com, Stefan Berger , Sudhakar Kuppusamy Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Rm9yIHVzZXJzIHdobyByZXF1aXJlIGEgc2VhbGVkIGtleSB0byBiZSB1bnNlYWxhYmxlIG9ubHkg b25jZSBwZXIgYm9vdApwcm9jZXNzLCBhIHN0cmFpZ2h0Zm9yd2FyZCB0ZWNobmlxdWUgaW52b2x2 ZXMgImNhcHBpbmciIHRoZSBrZXkgYnkKZXh0ZW5kaW5nIHRoZSBhc3NvY2lhdGVkIFBDUnMuIFRo aXMgcGF0Y2ggc2V0IGludHJvZHVjZXMgUENSIGNhcHBpbmcKc3VwcG9ydCBmb3IgdGhlIFRQTTIg a2V5IHByb3RlY3RvciwgYWxsb3dpbmcgdXNlcnMgdG8gc2VsZWN0IHNwZWNpZmljClBDUnMgdG8g ZXh0ZW5kIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBrZXkgaXMgdW5zZWFsZWQuCgp2MjoKICAtIEZp eGluZyB0eXBvcwogIC0gTW92aW5nIHRoZSBlcnJvciBtZXNzYWdlIHRvIGdydWJfaWVlZTEyNzVf aWJtdnRwbV8yaGFzaF9leHRfbG9nKCkKICAtIFJlcGxhY2luZyAnU0VQQVJBVE9SJyB3aXRoICdF Vl9TRVBBUkFUT1InCiAgLSBBbWVuZGluZyB0aGUgY29uZGl0aW9uYWwgY2hlY2sgZm9yIGdydWJf dHBtMl9idWZmZXIuZXJyb3IKICAtIFJlbW92aW5nIHRoZSB1bm5lY2Vzc2FyeSAnZXh0ZXJuJyBm cm9tIGdydWJfdHBtMl9wY3JfZXZlbnQoKQoKR2FyeSBMaW4gKDcpOgogIHRzczI6IEFkZCBUUE0y X1BDUl9FdmVudCBjb21tYW5kCiAgdHNzMjogSW50cm9kdWNlIGdydWJfdGNnMl9jYXBfcGNyKCkK ICB0c3MyOiBJbXBsZW1lbnQgZ3J1Yl90Y2cyX2NhcF9wY3IoKSBmb3IgRUZJCiAgdHNzMjogSW1w bGVtZW50IGdydWJfdGNnMl9jYXBfcGNyKCkgZm9yIGllZWUxMjc1CiAgdHNzMjogSW1wbGVtZW50 IGdydWJfdGNnMl9jYXBfcGNyKCkgZm9yIEVNVQogIHRwbTJfa2V5X3Byb3RlY3RvcjogU3VwcG9y dCBQQ1IgY2FwcGluZwogIHRlc3RzL3RwbTJfa2V5X3Byb3RlY3Rvcl90ZXN0OiBBZGQgYSB0ZXN0 IGZvciBQQ1IgQ2FwcGluZwoKIGRvY3MvZ3J1Yi50ZXhpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDIwICsrKysrLQogZ3J1Yi1jb3JlL2NvbW1hbmRzL2llZWUxMjc1L2libXZ0cG0u YyAgICAgICAgIHwgNTkgKystLS0tLS0tLS0tLS0tLS0KIC4uLi9jb21tYW5kcy90cG0yX2tleV9w cm90ZWN0b3IvbW9kdWxlLmMgICAgICB8IDU2ICsrKysrKysrKysrKysrKy0KIGdydWItY29yZS9s aWIvZWZpL3RjZzIuYyAgICAgICAgICAgICAgICAgICAgICB8IDQwICsrKysrKysrKysrKwogZ3J1 Yi1jb3JlL2xpYi9pZWVlMTI3NS90Y2cyLmMgICAgICAgICAgICAgICAgIHwgNjUgKysrKysrKysr KysrKysrKysrKwogZ3J1Yi1jb3JlL2xpYi90c3MyL3RjZzIuaCAgICAgICAgICAgICAgICAgICAg IHwgIDUgKysKIGdydWItY29yZS9saWIvdHNzMi90Y2cyX2VtdS5jICAgICAgICAgICAgICAgICB8 IDIwICsrKysrKwogZ3J1Yi1jb3JlL2xpYi90c3MyL3RwbTJfY21kLmMgICAgICAgICAgICAgICAg IHwgNTEgKysrKysrKysrKysrKysrCiBncnViLWNvcmUvbGliL3RzczIvdHBtMl9jbWQuaCAgICAg ICAgICAgICAgICAgfCAgNyArKwogZ3J1Yi1jb3JlL2xpYi90c3MyL3RzczJfbXUuYyAgICAgICAg ICAgICAgICAgIHwgMTggKysrKysKIGdydWItY29yZS9saWIvdHNzMi90c3MyX211LmggICAgICAg ICAgICAgICAgICB8ICA0ICsrCiBncnViLWNvcmUvbGliL3RzczIvdHNzMl9zdHJ1Y3RzLmggICAg ICAgICAgICAgfCAgNyArKwogZ3J1Yi1jb3JlL2xpYi90c3MyL3RzczJfdHlwZXMuaCAgICAgICAg ICAgICAgIHwgIDEgKwogZ3J1Yi1jb3JlL25vcm1hbC9tYWluLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGluY2x1ZGUvZ3J1Yi9pZWVlMTI3NS90cG0uaCAgICAgICAgICAgICAgICAg ICB8ICA1ICsrCiB0ZXN0cy90cG0yX2tleV9wcm90ZWN0b3JfdGVzdC5pbiAgICAgICAgICAgICAg fCA2NSArKysrKysrKysrKysrKysrKysrCiAxNiBmaWxlcyBjaGFuZ2VkLCAzNjcgaW5zZXJ0aW9u cygrKSwgNTggZGVsZXRpb25zKC0pCgpSYW5nZS1kaWZmIGFnYWluc3QgdjE6CjE6ICA3OGE4NGEy ZjEgISAxOiAgZTg5NGRkZWNkIHRzczI6IEFkZCBUUE0yX1BDUl9FdmVudCBjb21tYW5kCiAgICBA QCBncnViLWNvcmUvbGliL3RzczIvdHBtMl9jbWQuYzogZ3J1Yl90cG0yX2ZsdXNoY29udGV4dCAo Y29uc3QgVFBNSV9ESF9DT05URVhUX3QgaAogICAgICAgIHJldHVybiBUUE1fUkNfU1VDQ0VTUzsK ICAgICAgfQogICAgICAKICAgIC0rZXh0ZXJuIFRQTV9SQ190CiAgICArK1RQTV9SQ190CiAgICAg K2dydWJfdHBtMl9wY3JfZXZlbnQgKGNvbnN0IFRQTUlfREhfUENSX3QgcGNySGFuZGxlLAogICAg ICsJCSAgICAgY29uc3QgVFBNU19BVVRIX0NPTU1BTkRfdCAqYXV0aENvbW1hbmQsCiAgICAgKwkJ ICAgICBjb25zdCBUUE0yQl9FVkVOVF90ICpldmVudERhdGEsCiAgICBAQCBncnViLWNvcmUvbGli L3RzczIvdHBtMl9jbWQuYzogZ3J1Yl90cG0yX2ZsdXNoY29udGV4dCAoY29uc3QgVFBNSV9ESF9D T05URVhUX3QgaAogICAgICsgIGdydWJfdHBtMl9idWZmZXJfcGFja191MzIgKCZpbiwgcGNySGFu ZGxlKTsKICAgICArICBncnViX1RzczJfTVVfVFBNU19BVVRIX0NPTU1BTkRfTWFyc2hhbCAoJmlu LCBhdXRoQ29tbWFuZCk7CiAgICAgKyAgZ3J1Yl9Uc3MyX01VX1RQTTJCX01hcnNoYWwgKCZpbiwg ZXZlbnREYXRhLT5zaXplLCBldmVudERhdGEtPmJ1ZmZlcik7CiAgICAtKyAgaWYgKGluLmVycm9y ICE9IDApCiAgICArKyAgaWYgKGluLmVycm9yID09IHRydWUpCiAgICAgKyAgICByZXR1cm4gVFBN X1JDX0ZBSUxVUkU7CiAgICAgKwogICAgICsgIC8qIFN1Ym1pdCAqLwogICAgQEAgZ3J1Yi1jb3Jl L2xpYi90c3MyL3RwbTJfY21kLmM6IGdydWJfdHBtMl9mbHVzaGNvbnRleHQgKGNvbnN0IFRQTUlf REhfQ09OVEVYVF90IGgKICAgICArICBncnViX3RwbTJfYnVmZmVyX3VucGFja191MzIgKCZvdXQs ICZwYXJhbWV0ZXJTaXplKTsKICAgICArICBncnViX1RzczJfTVVfVFBNTF9ESUdFU1RfVkFMVUVf VW5tYXJzaGFsICgmb3V0LCBkaWdlc3RzKTsKICAgICArICBncnViX1RzczJfTVVfVFBNU19BVVRI X1JFU1BPTlNFX1VubWFyc2hhbCAoJm91dCwgYXV0aFJlc3BvbnNlKTsKICAgIC0rICBpZiAob3V0 LmVycm9yICE9IDApCiAgICArKyAgaWYgKG91dC5lcnJvciA9PSB0cnVlKQogICAgICsgICAgcmV0 dXJuIFRQTV9SQ19GQUlMVVJFOwogICAgICsKICAgICArICByZXR1cm4gVFBNX1JDX1NVQ0NFU1M7 CiAgICBAQCBncnViLWNvcmUvbGliL3RzczIvdHNzMl9tdS5jOiBncnViX1RzczJfTVVfVFBNTF9E SUdFU1RfVW5tYXJzaGFsIChncnViX3RwbTJfYnVmZgogICAgICsKICAgICArICBpZiAoZGlnZXN0 cy0+Y291bnQgPiBUUE1fTlVNX1BDUl9CQU5LUykKICAgICArICAgIHsKICAgIC0rICAgICAgYnVm ZmVyLT5lcnJvciA9IDE7CiAgICArKyAgICAgIGJ1ZmZlci0+ZXJyb3IgPSB0cnVlOwogICAgICsg ICAgICByZXR1cm47CiAgICAgKyAgICB9CiAgICAgKwoyOiAgYmI0YTlmYWQyICEgMjogIDQwMzNi ZDI0MiB0c3MyOiBJbnRyb2R1Y2UgZ3J1Yl90Y2cyX2NhcF9wY3IoKQogICAgQEAgQ29tbWl0IG1l c3NhZ2UKICAgICAKICAgICAgICAgVGhpcyBjb21taXQgaW50cm9kdWNlcyB0aGUgZGVmaW5pdGlv biBvZiBncnViX3RjZzJfY2FwX3BjcigpLCBhIG5ldwogICAgICAgICBmdW5jdGlvbiBkZXNpZ25l ZCB0byBlbmhhbmNlIHRoZSBzZWN1cml0eSBvZiBzZWFsZWQga2V5cy4gSXRzIHByaW1hcnkKICAg IC0gICAgcHVycG9zZSBpcyB0byAiY2FwIiBhIHNwZWNpZmljIFBDUiBieSBleHRlbmRpbmcgaXQg d2l0aCBhIFNFUEFSQVRPUgogICAgKyAgICBwdXJwb3NlIGlzIHRvICJjYXAiIGEgc3BlY2lmaWMg UENSIGJ5IGV4dGVuZGluZyBpdCB3aXRoIGFuIEVWX1NFUEFSQVRPUgogICAgICAgICBldmVudC4g VGhpcyBhY3Rpb24gY3J5cHRvZ3JhcGhpY2FsbHkgYWx0ZXJzIHRoZSBQQ1IgdmFsdWUsIG1ha2lu ZyBpdAogICAgICAgICBpbXBvc3NpYmxlIHRvIHVuc2VhbCBhbnkga2V5IHRoYXQgd2FzIHByZXZp b3VzbHkgc2VhbGVkIHRvIHRoZSBvcmlnaW5hbAogICAgICAgICBQQ1Igc3RhdGUuIENvbnNlcXVl bnRseSwgdGhlIHNlYWxlZCBrZXkgcmVtYWlucyBwcm90ZWN0ZWQgYWdhaW5zdAogICAgQEAgQ29t bWl0IG1lc3NhZ2UKICAgICAgICAgc3lzdGVtIGJvb3QuCiAgICAgCiAgICAgICAgIFNpZ25lZC1v ZmYtYnk6IEdhcnkgTGluIDxnbGluQHN1c2UuY29tPgogICAgKyAgICBSZXZpZXdlZC1ieTogU3Rl ZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC5pYm0uY29tPgogICAgIAogICAgICAjIyBncnViLWNv cmUvbGliL3RzczIvdGNnMi5oICMjCiAgICAgQEAKMzogIDJmZTUyZDY5MiAhIDM6ICAzOTY1Y2Nh YzYgdHNzMjogSW1wbGVtZW50IGdydWJfdGNnMl9jYXBfcGNyKCkgZm9yIEVGSQogICAgQEAgQ29t bWl0IG1lc3NhZ2UKICAgICAgICAgdHNzMjogSW1wbGVtZW50IGdydWJfdGNnMl9jYXBfcGNyKCkg Zm9yIEVGSQogICAgIAogICAgICAgICBUaGlzIGNvbW1pdCBpbXBsZW1lbnRzIGdydWJfdGNnMl9j YXBfcGNyKCkgZm9yIEVGSSBieSB1c2luZyB0aGUgVUVGSQogICAgLSAgICBUQ0cyIHByb3RvY29s LCBIYXNoTG9nRXh0ZW5kRXZlbnQsIHRvIGV4dGVuZCB0aGUgc3BlY2lmaWVkIFBDUiB3aXRoIGEK ICAgIC0gICAgU0VQQVJBVE9SIGV2ZW50IGFuZCBlbnN1cmUgdGhlIGV2ZW50IHdpbGwgYmUgcmVj b3JkZWQgcHJvcGVybHkgaW4gdGhlCiAgICArICAgIFRDRzIgcHJvdG9jb2wsIEhhc2hMb2dFeHRl bmRFdmVudCwgdG8gZXh0ZW5kIHRoZSBzcGVjaWZpZWQgUENSIHdpdGggYW4KICAgICsgICAgRVZf U0VQQVJBVE9SIGV2ZW50IGFuZCBlbnN1cmUgdGhlIGV2ZW50IHdpbGwgYmUgcmVjb3JkZWQgcHJv cGVybHkgaW4gdGhlCiAgICAgICAgIFRQTSBldmVudCBsb2cuCiAgICAgCiAgICAgICAgIFNpZ25l ZC1vZmYtYnk6IEdhcnkgTGluIDxnbGluQHN1c2UuY29tPgogICAgKyAgICBSZXZpZXdlZC1ieTog U3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC5pYm0uY29tPgogICAgIAogICAgICAjIyBncnVi LWNvcmUvbGliL2VmaS90Y2cyLmMgIyMKICAgICBAQAogICAgQEAgZ3J1Yi1jb3JlL2xpYi9lZmkv dGNnMi5jOiBncnViX3RjZzJfc3VibWl0X2NvbW1hbmQgKGdydWJfc2l6ZV90IGlucHV0X3NpemUs CiAgICAgKyAgZXZlbnQtPlNpemUgPSBzaXplb2YgKCpldmVudCkgLSBzaXplb2YgKGV2ZW50LT5F dmVudCkgKyBzaXplb2YgKHNlcGFyYXRvcik7CiAgICAgKyAgZ3J1Yl9tZW1jcHkgKGV2ZW50LT5F dmVudCwgc2VwYXJhdG9yLCBzaXplb2YgKHNlcGFyYXRvcikpOwogICAgICsKICAgIC0rCiAgICAg KyAgc3RhdHVzID0gcHJvdG9jb2wtPmhhc2hfbG9nX2V4dGVuZF9ldmVudCAocHJvdG9jb2wsIDAs CiAgICAgKwkJCQkJICAgIChncnViX2FkZHJfdCkgc2VwYXJhdG9yLAogICAgICsJCQkJCSAgICBz aXplb2YgKHNlcGFyYXRvciksIGV2ZW50KTsKNDogIDc0OTJkMDg2YSAhIDQ6ICAxOTMyNWEyMzQg dHNzMjogSW1wbGVtZW50IGdydWJfdGNnMl9jYXBfcGNyKCkgZm9yIGllZWUxMjc1CiAgICBAQCBD b21taXQgbWVzc2FnZQogICAgICAgICB0c3MyOiBJbXBsZW1lbnQgZ3J1Yl90Y2cyX2NhcF9wY3Io KSBmb3IgaWVlZTEyNzUKICAgICAKICAgICAgICAgVGhpcyBjb21taXQgaW1wbGVtZW50cyBncnVi X3RjZzJfY2FwX3BjcigpIGZvciBpZWVlMTI3NSB3aXRoIHRoZQogICAgLSAgICBmaXJtd2FyZSBm dW5jdGlvbiwgMmhhc2gtZXh0LWxvZywgdG8gZXh0ZW5kIHRoZSB0YXJnZXQgUENSIHdpdGggYQog ICAgLSAgICBTRVBBUkFUT1IgZXZlbnQgYW5kIHJlY29yZCB0aGUgZXZlbnQgaW50byB0aGUgVFBN IGV2ZW50IGxvZy4KICAgICsgICAgZmlybXdhcmUgZnVuY3Rpb24sIDJoYXNoLWV4dC1sb2csIHRv IGV4dGVuZCB0aGUgdGFyZ2V0IFBDUiB3aXRoIGFuCiAgICArICAgIEVWX1NFUEFSQVRPUiBldmVu dCBhbmQgcmVjb3JkIHRoZSBldmVudCBpbnRvIHRoZSBUUE0gZXZlbnQgbG9nLgogICAgIAogICAg ICAgICBUbyBhdm9pZCBkdXBsaWNhdGUgY29kZSwgaWJtdnRwbV8yaGFzaF9leHRfbG9nKCkgaXMg bW92ZWQgdG8gdGNnMi5jCiAgICAgICAgIGFuZCBleHBvcnRlZCBhcyBhIGdsb2JhbCBmdW5jdGlv bi4KICAgIEBAIGdydWItY29yZS9jb21tYW5kcy9pZWVlMTI3NS9pYm12dHBtLmMKICAgICAgc3Rh dGljIGdydWJfZXJyX3QKICAgICAgdHBtMl9sb2dfZXZlbnQgKHVuc2lnbmVkIGNoYXIgKmJ1Ziwg Z3J1Yl9zaXplX3Qgc2l6ZSwgZ3J1Yl91aW50OF90IHBjciwKICAgICAgCQljb25zdCBjaGFyICpk ZXNjcmlwdGlvbikKICAgIC1AQCBncnViLWNvcmUvY29tbWFuZHMvaWVlZTEyNzUvaWJtdnRwbS5j OiB0cG0yX2xvZ19ldmVudCAodW5zaWduZWQgY2hhciAqYnVmLCBncnViX3NpemVfdCBzaXplLCBn cnViX3VpbnQ4X3QgcGNyLAogICAgKyB7CiAgICAgICAgc3RhdGljIGludCBlcnJvcl9kaXNwbGF5 ZWQgPSAwOwogICAgLSAgIGludCByYzsKICAgICstICBpbnQgcmM7CiAgICArKyAgZ3J1Yl9lcnJf dCBlcnI7CiAgICAgIAogICAgIC0gIHJjID0gaWJtdnRwbV8yaGFzaF9leHRfbG9nIChwY3IsIEVW X0lQTCwKICAgICAtCQkJICAgICAgZGVzY3JpcHRpb24sIGdydWJfc3RybGVuKGRlc2NyaXB0aW9u KSArIDEsCiAgICAgLQkJCSAgICAgIGJ1Ziwgc2l6ZSk7CiAgICAtKyAgcmMgPSBncnViX2llZWUx Mjc1X2libXZ0cG1fMmhhc2hfZXh0X2xvZyAocGNyLCBFVl9JUEwsCiAgICAtKwkJCQkJICAgIGRl c2NyaXB0aW9uLCBncnViX3N0cmxlbihkZXNjcmlwdGlvbikgKyAxLAogICAgLSsJCQkJCSAgICBi dWYsIHNpemUpOwogICAgLSAgIGlmIChyYyAmJiAhZXJyb3JfZGlzcGxheWVkKQogICAgKy0gIGlm IChyYyAmJiAhZXJyb3JfZGlzcGxheWVkKQogICAgKysgIGVyciA9IGdydWJfaWVlZTEyNzVfaWJt dnRwbV8yaGFzaF9leHRfbG9nIChwY3IsIEVWX0lQTCwKICAgICsrCQkJCQkgICAgIGRlc2NyaXB0 aW9uLCBncnViX3N0cmxlbihkZXNjcmlwdGlvbikgKyAxLAogICAgKysJCQkJCSAgICAgYnVmLCBz aXplKTsKICAgICsrICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUgJiYgIWVycm9yX2Rpc3BsYXll ZCkKICAgICAgICAgIHsKICAgICAgICAgICAgZXJyb3JfZGlzcGxheWVkKys7CiAgICArLSAgICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfREVWSUNFLAogICAgKy0JCQkgIjJIQVNI LUVYVC1MT0cgZmFpbGVkOiBGaXJtd2FyZSBpcyBsaWtlbHkgdG9vIG9sZC5cbiIpOwogICAgKysg ICAgICByZXR1cm4gZXJyOwogICAgKyAgICAgfQogICAgKyAKICAgICsgICByZXR1cm4gR1JVQl9F UlJfTk9ORTsKICAgICAKICAgICAgIyMgZ3J1Yi1jb3JlL2xpYi9pZWVlMTI3NS90Y2cyLmMgIyMK ICAgICBAQCBncnViLWNvcmUvbGliL2llZWUxMjc1L3RjZzIuYzogZ3J1Yl9pZWVlMTI3NV90cG1f aW5pdCAodm9pZCkKICAgICAgICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKICAgICAgfQogICAgICAK ICAgIC0raW50CiAgICArK2dydWJfZXJyX3QKICAgICArZ3J1Yl9pZWVlMTI3NV9pYm12dHBtXzJo YXNoX2V4dF9sb2cgKGdydWJfdWludDhfdCBwY3JpbmRleCwKICAgICArCQkJCSAgICAgZ3J1Yl91 aW50MzJfdCBldmVudHR5cGUsCiAgICAgKwkJCQkgICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9u LAogICAgQEAgZ3J1Yi1jb3JlL2xpYi9pZWVlMTI3NS90Y2cyLmM6IGdydWJfaWVlZTEyNzVfdHBt X2luaXQgKHZvaWQpCiAgICAgKyAgYXJncy5zaXplID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSBz aXplOwogICAgICsKICAgICArICBpZiAoSUVFRTEyNzVfQ0FMTF9FTlRSWV9GTiAoJmFyZ3MpID09 IC0xKQogICAgLSsgICAgcmV0dXJuIC0xOwogICAgKysgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdS VUJfRVJSX0JBRF9ERVZJQ0UsICIySEFTSC1FWFQtTE9HIGZhaWxlZDogRmlybXdhcmUgaXMgbGlr ZWx5IHRvbyBvbGQuXG4iKTsKICAgICArCiAgICAgKyAgLyoKICAgICArICAgKiBjYXRjaF9yZXN1 bHQgaXMgc2V0IGlmIGZpcm13YXJlIGRvZXMgbm90IHN1cHBvcnQgMmhhc2gtZXh0LWxvZwogICAg ICsgICAqIHJjIGlzIEdSVUJfSUVFRTEyNzVfQ0VMTF9GQUxTRSAoMCkgb24gZmFpbHVyZQogICAg ICsgICAqLwogICAgICsgIGlmICgoYXJncy5jYXRjaF9yZXN1bHQpIHx8IGFyZ3MucmMgPT0gR1JV Ql9JRUVFMTI3NV9DRUxMX0ZBTFNFKQogICAgLSsgICAgcmV0dXJuIC0xOwogICAgKysgICAgcmV0 dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9ERVZJQ0UsICIySEFTSC1FWFQtTE9HIGZhaWxl ZDogRmlybXdhcmUgaXMgbGlrZWx5IHRvbyBvbGQuXG4iKTsKICAgICArCiAgICAtKyAgcmV0dXJu IDA7CiAgICArKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CiAgICAgK30KICAgICArCiAgICAgIGdy dWJfZXJyX3QKICAgIEBAIGdydWItY29yZS9saWIvaWVlZTEyNzUvdGNnMi5jOiBncnViX3RjZzJf c3VibWl0X2NvbW1hbmQgKGdydWJfc2l6ZV90IGlucHV0X3NpemUsCiAgICAgK3sKICAgICArICBn cnViX3VpbnQ4X3Qgc2VwYXJhdG9yWzRdID0gezB9OwogICAgICsgIHN0YXRpYyBpbnQgZXJyb3Jf ZGlzcGxheWVkID0gMDsKICAgIC0rICBpbnQgcmM7CiAgICArKyAgZ3J1Yl9lcnJfdCBlcnI7CiAg ICAgKwogICAgLSsgIHJjID0gZ3J1Yl9pZWVlMTI3NV9pYm12dHBtXzJoYXNoX2V4dF9sb2cgKHBj ciwgRVZfU0VQQVJBVE9SLAogICAgLSsJCQkJCSAgICBzZXBhcmF0b3IsIHNpemVvZihzZXBhcmF0 b3IpLAogICAgLSsJCQkJCSAgICBzZXBhcmF0b3IsIHNpemVvZihzZXBhcmF0b3IpKTsKICAgIC0r ICBpZiAocmMgJiYgIWVycm9yX2Rpc3BsYXllZCkKICAgICsrICBlcnIgPSBncnViX2llZWUxMjc1 X2libXZ0cG1fMmhhc2hfZXh0X2xvZyAocGNyLCBFVl9TRVBBUkFUT1IsCiAgICArKwkJCQkJICAg ICBzZXBhcmF0b3IsIHNpemVvZihzZXBhcmF0b3IpLAogICAgKysJCQkJCSAgICAgc2VwYXJhdG9y LCBzaXplb2Yoc2VwYXJhdG9yKSk7CiAgICArKyAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FICYm ICFlcnJvcl9kaXNwbGF5ZWQpCiAgICAgKyAgICB7CiAgICAgKyAgICAgIGVycm9yX2Rpc3BsYXll ZCsrOwogICAgLSsgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0RFVklDRSwK ICAgIC0rCQkJICIySEFTSC1FWFQtTE9HIGZhaWxlZDogRmlybXdhcmUgaXMgbGlrZWx5IHRvbyBv bGQuXG4iKTsKICAgICsrICAgICAgcmV0dXJuIGVycjsKICAgICArICAgIH0KICAgICArCiAgICAg KyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CiAgICBAQCBpbmNsdWRlL2dydWIvaWVlZTEyNzUvdHBt Lmg6IGV4dGVybiBncnViX2llZWUxMjc1X2loYW5kbGVfdCBncnViX2llZWUxMjc1X3RwbV9paAog ICAgICAKICAgICAgZXh0ZXJuIGdydWJfZXJyX3QgZ3J1Yl9pZWVlMTI3NV90cG1faW5pdCAodm9p ZCk7CiAgICAgIAogICAgLStleHRlcm4gaW50IGdydWJfaWVlZTEyNzVfaWJtdnRwbV8yaGFzaF9l eHRfbG9nIChncnViX3VpbnQ4X3QgcGNyaW5kZXgsCiAgICAtKwkJCQkJCWdydWJfdWludDMyX3Qg ZXZlbnR0eXBlLAogICAgLSsJCQkJCQljb25zdCBjaGFyICpkZXNjcmlwdGlvbiwKICAgIC0rCQkJ CQkJZ3J1Yl9zaXplX3QgZGVzY3JpcHRpb25fc2l6ZSwKICAgIC0rCQkJCQkJdm9pZCAqYnVmLCBn cnViX3NpemVfdCBzaXplKTsKICAgICsrZXh0ZXJuIGdydWJfZXJyX3QgZ3J1Yl9pZWVlMTI3NV9p Ym12dHBtXzJoYXNoX2V4dF9sb2cgKGdydWJfdWludDhfdCBwY3JpbmRleCwKICAgICsrCQkJCQkJ ICAgICAgIGdydWJfdWludDMyX3QgZXZlbnR0eXBlLAogICAgKysJCQkJCQkgICAgICAgY29uc3Qg Y2hhciAqZGVzY3JpcHRpb24sCiAgICArKwkJCQkJCSAgICAgICBncnViX3NpemVfdCBkZXNjcmlw dGlvbl9zaXplLAogICAgKysJCQkJCQkgICAgICAgdm9pZCAqYnVmLCBncnViX3NpemVfdCBzaXpl KTsKICAgICAgI2VuZGlmCjU6ICBmZmE4NTU0ZTkgISA1OiAgYTliMTdjNTkwIHRzczI6IEltcGxl bWVudCBncnViX3RjZzJfY2FwX3BjcigpIGZvciBFTVUKICAgIEBAIE1ldGFkYXRhCiAgICAgICMj IENvbW1pdCBtZXNzYWdlICMjCiAgICAgICAgIHRzczI6IEltcGxlbWVudCBncnViX3RjZzJfY2Fw X3BjcigpIGZvciBFTVUKICAgICAKICAgIC0gICAgU2luY2UgdGhlcmUgaXMgbm8gc3lzdGVtIGZp bXdhcmUgZm9yIGdydWItZW11LCB0aGUgVFBNMl9QQ1JfRXZlbnQKICAgICsgICAgU2luY2UgdGhl cmUgaXMgbm8gc3lzdGVtIGZpcm13YXJlIGZvciBncnViLWVtdSwgdGhlIFRQTTJfUENSX0V2ZW50 CiAgICAgICAgIGNvbW1hbmQgYmVjb21lcyB0aGUgb25seSBjaG9pY2UgdG8gaW1wbGVtZW50IGdy dWJfdGNnMl9jYXBfcGNyKCkuCiAgICAgCiAgICAgICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgTGlu IDxnbGluQHN1c2UuY29tPgogICAgKyAgICBSZXZpZXdlZC1ieTogU3RlZmFuIEJlcmdlciA8c3Rl ZmFuYkBsaW51eC5pYm0uY29tPgogICAgIAogICAgICAjIyBncnViLWNvcmUvbGliL3RzczIvdGNn Ml9lbXUuYyAjIwogICAgIEBACiAgICBAQCBncnViLWNvcmUvbGliL3RzczIvdGNnMl9lbXUuYzog Z3J1Yl90Y2cyX3N1Ym1pdF9jb21tYW5kIChncnViX3NpemVfdCBpbnB1dF9zaXplLAogICAgICtn cnViX2Vycl90CiAgICAgK2dydWJfdGNnMl9jYXBfcGNyIChncnViX3VpbnQ4X3QgcGNyKQogICAg ICt7CiAgICAtKyAgVFBNU19BVVRIX0NPTU1BTkRfdCBhdXRoQ21kID0gezB9OwogICAgLSsgIFRQ TTJCX0VWRU5UX3QgZGF0YSA9IHswfTsKICAgICsrICBUUE1TX0FVVEhfQ09NTUFORF90IGF1dGhD bWQgPSB7CiAgICArKyAgICAuc2Vzc2lvbkhhbmRsZSA9IFRQTV9SU19QVywKICAgICsrICB9Owog ICAgKysgIFRQTTJCX0VWRU5UX3QgZGF0YSA9IHsKICAgICsrICAgIC5zaXplID0gNCwKICAgICsr ICB9OwogICAgICsgIFRQTV9SQ190IHJjOwogICAgICsKICAgIC0rICAvKiBBIFNFUEFSQVRPUiBl dmVudCBpcyBhbiBldmVudCB3aXRoIDQgMC1ieXRlcy4gKi8KICAgIC0rICBkYXRhLnNpemUgPSA0 OwogICAgLSsgIGF1dGhDbWQuc2Vzc2lvbkhhbmRsZSA9IFRQTV9SU19QVzsKICAgIC0rCiAgICAr KyAgLyogU3VibWl0IGFuIEVWX1NFUEFSQVRPUiBldmVudCwgaS5lLiBhbiBldmVudCB3aXRoIDQg emVyby1ieXRlcyAqLwogICAgICsgIHJjID0gZ3J1Yl90cG0yX3Bjcl9ldmVudCAocGNyLCAmYXV0 aENtZCwgJmRhdGEsIE5VTEwsIE5VTEwpOwogICAgICsgIGlmIChyYyAhPSBUUE1fUkNfU1VDQ0VT UykKICAgICArICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfREVWSUNFLCBOXygi Y2Fubm90IGNhcCBQQ1IgJXUiKSwgcGNyKTsKNjogIDdkMjk1YTFkNiAhIDY6ICBhYzI1MDU2ZmQg dHBtMl9rZXlfcHJvdGVjdG9yOiBTdXBwb3J0IFBDUiBjYXBwaW5nCiAgICBAQCBDb21taXQgbWVz c2FnZQogICAgICAgICBUbyBjYXAgYSBzcGVjaWZpYyBzZXQgb2YgUENScywgc2ltcGx5IGFwcGVu ZCB0aGUgYXJndW1lbnQgJy1jIHBjcl9saXN0JwogICAgICAgICB0byB0aGUgdHBtMl9rZXlfcHJv dGVjdG9yIGNvbW1hbmQuIFVwb24gc3VjY2Vzc2Z1bGx5IHVuc2VhbGluZyB0aGUga2V5LAogICAg ICAgICB0aGUgVFBNMiBrZXkgcHJvdGVjdG9yIHdpbGwgdGhlbiBpbnZva2UgdHBtMl9wcm90ZWN0 b3JfY2FwX3BjcnMoKS4gVGhpcwogICAgLSAgICBmdW5jdGlvbiBleHRlbmRzIHRoZSBzZWxlY3Rl ZCBQQ1JzIHdpdGggYSBTRVBBUkFUT1IgZXZlbnQsIGVmZmVjdGl2ZWx5CiAgICAtICAgICJjYXBw aW5nIiB0aGVtLiBDb25zZXF1ZW50bHksIHRoZSBhc3NvY2lhdGVkIGtleSBjYW5ub3QgYmUgdW5z ZWFsZWQgaW4KICAgIC0gICAgYW55IHN1YnNlcXVlbnQgYXR0ZW1wdHMgdW50aWwgdGhlc2UgUENS cyBhcmUgcmVzZXQgdG8gdGhlaXIgb3JpZ2luYWwsCiAgICAtICAgIHByZS1jYXBwZWQgc3RhdGUs IHR5cGljYWxseSBvY2N1cnJpbmcgdXBvbiB0aGUgbmV4dCBzeXN0ZW0gYm9vdC4KICAgICsgICAg ZnVuY3Rpb24gZXh0ZW5kcyB0aGUgc2VsZWN0ZWQgUENScyB3aXRoIGFuIEVWX1NFUEFSQVRPUiBl dmVudCwKICAgICsgICAgZWZmZWN0aXZlbHkgImNhcHBpbmciIHRoZW0uIENvbnNlcXVlbnRseSwg dGhlIGFzc29jaWF0ZWQga2V5IGNhbm5vdCBiZQogICAgKyAgICB1bnNlYWxlZCBpbiBhbnkgc3Vi c2VxdWVudCBhdHRlbXB0cyB1bnRpbCB0aGVzZSBQQ1JzIGFyZSByZXNldCB0byB0aGVpcgogICAg KyAgICBvcmlnaW5hbCwgcHJlLWNhcHBlZCBzdGF0ZSwgdHlwaWNhbGx5IG9jY3VycmluZyB1cG9u IHRoZSBuZXh0IHN5c3RlbQogICAgKyAgICBib290LgogICAgIAogICAgICAgICBTaWduZWQtb2Zm LWJ5OiBHYXJ5IExpbiA8Z2xpbkBzdXNlLmNvbT4KICAgICsgICAgUmV2aWV3ZWQtYnk6IFN0ZWZh biBCZXJnZXIgPHN0ZWZhbmJAbGludXguaWJtLmNvbT4KICAgICsgICAgUmV2aWV3ZWQtYnk6IFN1 ZGhha2FyIEt1cHB1c2FteSA8c3VkaGFrYXJAbGludXguaWJtLmNvbT4KICAgICAKICAgICAgIyMg ZG9jcy9ncnViLnRleGkgIyMKICAgICBAQCBkb2NzL2dydWIudGV4aTogZWl0aGVyIEB2YXJ7ZXhw cmVzc2lvbjF9IG9yIEB2YXJ7ZXhwcmVzc2lvbjJ9IGlzIHRydWUKICAgIEBAIGRvY3MvZ3J1Yi50 ZXhpOiBiYW5rIHRoYXQgdGhlIGtleSBpcyBzZWFsZWQgd2l0aC4gVGhlIFBDUiBsaXN0IGlzIGEg Y29tbWEtc2VwYXJhCiAgICAgK1BDUnMuIFRoaXMgZmVhdHVyZSBhZGRyZXNzZXMgc2NlbmFyaW9z IHdoZXJlIGEgdXNlciB3YW50cyB0byBlbnN1cmUgYSBzZWFsZWQga2V5CiAgICAgK2Nhbm5vdCBi ZSB1bnNlYWxlZCBhZ2FpbiBhZnRlciBpdHMgaW5pdGlhbCB1c2UuIFdoZW4gdGhlIEBvcHRpb257 LWN9IG9wdGlvbiBpcwogICAgICtlbXBsb3llZCwgYW5kIHRoZSBrZXkgaXMgc3VjY2Vzc2Z1bGx5 IHVuc2VhbGVkLCB0aGUgVFBNMiBrZXkgcHJvdGVjdG9yIGF1dG9tYXRpY2FsbHkKICAgIC0rZXh0 ZW5kcyB0aGUgc2VsZWN0ZWQgUENScyB3aXRoIGEgU0VQQVJBVE9SIGV2ZW50LiBUaGlzIGFjdGlv biBjcnlwdG9ncmFwaGljYWxseQogICAgKytleHRlbmRzIHRoZSBzZWxlY3RlZCBQQ1JzIHdpdGgg YW4gRVZfU0VQQVJBVE9SIGV2ZW50LiBUaGlzIGFjdGlvbiBjcnlwdG9ncmFwaGljYWxseQogICAg ICthbHRlcnMgdGhlIFBDUiB2YWx1ZXMsIHRoZXJlYnkgcHJldmVudGluZyB0aGUgYXNzb2NpYXRl ZCBrZXkgZnJvbSBiZWluZyB1bnNlYWxlZCBpbgogICAgICthbnkgc3Vic2VxdWVudCBhdHRlbXB0 cyB1bnRpbCB0aG9zZSBzcGVjaWZpYyBQQ1JzIGFyZSByZXNldCB0byB0aGVpciBvcmlnaW5hbCBz dGF0ZSwKICAgICArd2hpY2ggdHlwaWNhbGx5IG9jY3VycyBkdXJpbmcgYSBzeXN0ZW0gcmVib290 LiBJbiBnZW5lcmFsLCBpdCBpcyBzdWZmaWNpZW50IHRvCjc6ICBkYWI2MDUyZmUgISA3OiAgNzE5 NzIxYjM1IHRlc3RzL3RwbTJfa2V5X3Byb3RlY3Rvcl90ZXN0OiBBZGQgYSB0ZXN0IGZvciBQQ1Ig Q2FwcGluZwogICAgQEAgQ29tbWl0IG1lc3NhZ2UKICAgICAgICAgYWZ0ZXIga2V5IHVuc2VhbGlu Zy4KICAgICAKICAgICAgICAgU2lnbmVkLW9mZi1ieTogR2FyeSBMaW4gPGdsaW5Ac3VzZS5jb20+ CiAgICArICAgIFJldmlld2VkLWJ5OiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LmlibS5j b20+CiAgICArICAgIFJldmlld2VkLWJ5OiBTdWRoYWthciBLdXBwdXNhbXkgPHN1ZGhha2FyQGxp bnV4LmlibS5jb20+CiAgICAgCiAgICAgICMjIHRlc3RzL3RwbTJfa2V5X3Byb3RlY3Rvcl90ZXN0 LmluICMjCiAgICAgQEAgdGVzdHMvdHBtMl9rZXlfcHJvdGVjdG9yX3Rlc3QuaW46IEVPRgotLSAK Mi40My4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K R3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMu Z251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK