From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id 0ChUOgzsO2MPwQAAbAwnHQ (envelope-from ) for ; Tue, 04 Oct 2022 10:17:17 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id h8x5OgzsO2P07gAA9RJhRA (envelope-from ) for ; Tue, 04 Oct 2022 10:17:16 +0200 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 aspmx1.migadu.com (Postfix) with ESMTPS id A5F483F9E3 for ; Tue, 4 Oct 2022 10:17:16 +0200 (CEST) Received: from localhost ([::1]:52318 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ofd75-0004zi-CA for larch@yhetil.org; Tue, 04 Oct 2022 04:17:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49548) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ofcgo-00069F-MT for guix-patches@gnu.org; Tue, 04 Oct 2022 03:50:07 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:53251) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ofcgk-0005Il-B6 for guix-patches@gnu.org; Tue, 04 Oct 2022 03:50:06 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ofcgk-0005M6-1L for guix-patches@gnu.org; Tue, 04 Oct 2022 03:50:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#58261] [PATCH 06/11] gnu: Add gemmi. Resent-From: Liliana Marie Prikler Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 04 Oct 2022 07:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58261 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: David Elsing , 58261@debbugs.gnu.org Received: via spool by 58261-submit@debbugs.gnu.org id=B58261.166486976020532 (code B ref 58261); Tue, 04 Oct 2022 07:50:02 +0000 Received: (at 58261) by debbugs.gnu.org; 4 Oct 2022 07:49:20 +0000 Received: from localhost ([127.0.0.1]:52329 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ofcg2-0005L4-TV for submit@debbugs.gnu.org; Tue, 04 Oct 2022 03:49:20 -0400 Received: from mailrelay.tugraz.at ([129.27.2.202]:29774) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ofcfz-0005Ks-Ix for 58261@debbugs.gnu.org; Tue, 04 Oct 2022 03:49:17 -0400 Received: from lprikler-laptop.ist.intra (gw.ist.tugraz.at [129.27.202.101]) by mailrelay.tugraz.at (Postfix) with ESMTPSA id 4MhVFy5Cqfz1LXt4; Tue, 4 Oct 2022 09:49:10 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 mailrelay.tugraz.at 4MhVFy5Cqfz1LXt4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tugraz.at; s=mailrelay; t=1664869750; bh=0dhdiRYV2CafEK6vptVaVw4qXdEBOzUS1qM8xpT2fFc=; h=Subject:From:To:Date:In-Reply-To:References:From; b=DeSOu1NeRhjy3m/3cZaY2+vDRPgxmXSAywqeOXGtoPKFblT5GIriByyuExpbJlAMC BBvmZRV3/D+Br1qFWW42/OtCrCx5gBRhpcBvfs4UxepxHsBwr/jAOWubqIk40XLHL4 dRJBmCDnVJbof378epp8NYrah99WJysXgebqg3Ok= Message-ID: <7cc7f87c99df0b7f9701779fdae7b6c4d888c2ee.camel@ist.tugraz.at> From: Liliana Marie Prikler Date: Tue, 04 Oct 2022 09:49:10 +0200 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.0 MIME-Version: 1.0 X-TUG-Backscatter-control: waObeELIUl4ypBWmcn/8wQ X-Scanned-By: MIMEDefang 2.74 on 129.27.10.117 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1664871436; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=0dhdiRYV2CafEK6vptVaVw4qXdEBOzUS1qM8xpT2fFc=; b=kOiRRL7dSg0wcl5S7tpZ47XBHauUsSwV3hwG0uDzn9015g/a+A0fET21Dv/8k/8WMjnbP7 rm5AEfXFQ2eArryMwa6grxqUsQMSW9GXm/nYIjaQabmVvTqBcyjGa5eQgE0+TN7W6/dLE5 fmQq/hFQk6AYtYQYT67NiQ/w1BLrQ8JoS+Rr+Tv32dCLPNBTZjrDCV2ou+MCpCFe9AHEN6 n83y1IMVxsXH/mqBwiLG1guOQRZOv95Nseq/ZxwXxURvhjraLW0eA5cGzJrHoRBxneG1k+ 3FkbeV9q6bpvLGwrqp4mTLkV3CIMr9201/82Uk0boe8snNYtXjjdzWW+nY9+3Q== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1664871436; a=rsa-sha256; cv=none; b=MuwXFja8d+acBzIqEBMugDCsqmflur5kRhvvSQN3EVKx7VFFkVBU9VwovzBtWDtyhXPORK wipzJd/d3rBtLR5Slxr4DUKMVUM2oCL/KG+LJdHH6vWRrxoDg7bCJ1o6hqO+CFEBZMaHEf ZytjsN0dFXextJyvn3pSnH2UT418p/Jj0WbPfR+pfzYKsSlFGWvyXAGPc+ZsJ9N40WR9j8 yrDQbyttZuXGbdLcAbwak9nKgFyTKGJhvVTBTZ510lGK1f99EqpyFQABG6zsUPApwZ3Lec P1NXkytam0xV6sTFEVghGGs8E35fTChhXRmSf0EDyGMPuLC9kOPtZQriYaRIcw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=tugraz.at header.s=mailrelay header.b=DeSOu1Ne; dmarc=fail reason="SPF not aligned (relaxed)" header.from=tugraz.at (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 7.01 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=tugraz.at header.s=mailrelay header.b=DeSOu1Ne; dmarc=fail reason="SPF not aligned (relaxed)" header.from=tugraz.at (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: A5F483F9E3 X-Spam-Score: 7.01 X-Migadu-Scanner: scn1.migadu.com X-TUID: rlS7+97/NURN QW0gTW9udGFnLCBkZW0gMDMuMTAuMjAyMiB1bSAwMDoxOSArMDAwMCBzY2hyaWViIERhdmlkIEVs c2luZzoKPiAqIGdudS9wYWNrYWdlcy9jaGVtaXN0cnkuc2NtIChnZW1taSk6IE5ldyB2YXJpYWJs ZS4KPiAtLS0KPiDCoGdudS9wYWNrYWdlcy9jaGVtaXN0cnkuc2NtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxMjIgKysrKysrKysrKysKPiDCoC4uLi9wYXRjaGVzL2dl bW1pLWZpeC1zYWpzb24tdHlwZXMucGF0Y2jCoMKgwqDCoMKgIHzCoCAxMSArCj4gwqAuLi4vc2Fq c29uLWZvci1nZW1taS1udW1iZXJzLWFzLXN0cmluZ3MucGF0Y2ggfCAxOTUKPiArKysrKysrKysr KysrKysrKysKPiDCoDMgZmlsZXMgY2hhbmdlZCwgMzI4IGluc2VydGlvbnMoKykKPiDCoGNyZWF0 ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9nZW1taS1maXgtc2Fqc29uLXR5cGVz LnBhdGNoCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2VzL3BhdGNoZXMvc2Fqc29u LWZvci1nZW1taS1udW1iZXJzLWFzLQo+IHN0cmluZ3MucGF0Y2gKPiAKPiBkaWZmIC0tZ2l0IGEv Z251L3BhY2thZ2VzL2NoZW1pc3RyeS5zY20gYi9nbnUvcGFja2FnZXMvY2hlbWlzdHJ5LnNjbQo+ IGluZGV4IGM1MTc2MTBmZTguLmY4ZmQ4NTgxNGYgMTAwNjQ0Cj4gLS0tIGEvZ251L3BhY2thZ2Vz L2NoZW1pc3RyeS5zY20KPiArKysgYi9nbnUvcGFja2FnZXMvY2hlbWlzdHJ5LnNjbQo+IEBAIC02 LDYgKzYsNyBAQAo+IMKgOzs7IENvcHlyaWdodCDCqSAyMDIwIEJqw7ZybiBIw7ZmbGluZwo+IDxi am9lcm4uaG9lZmxpbmdAYmpvZXJuaG9lZmxpbmcuZGU+Cj4gwqA7OzsgQ29weXJpZ2h0IMKpIDIw MjAgVmluY2VudCBMZWdvbGwgPHZpbmNlbnQubGVnb2xsQGdtYWlsLmNvbT4KPiDCoDs7OyBDb3B5 cmlnaHQgwqkgMjAyMSBSaWNhcmRvIFd1cm11cyA8cmVrYWRvQGVsZXBobHkubmV0Pgo+ICs7Ozsg Q29weXJpZ2h0IMKpIDIwMjIgRGF2aWQgRWxzaW5nIDxkYXZpZC5lbHNpbmdAcG9zdGVvLm5ldD4K PiDCoDs7Owo+IMKgOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4Lgo+IMKgOzs7Cj4g QEAgLTIzLDYgKzI0LDcgQEAKPiDCoDs7OyBhbG9uZyB3aXRoIEdOVSBHdWl4LsKgIElmIG5vdCwg c2VlCj4gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo+IMKgCj4gwqAoZGVmaW5lLW1v ZHVsZSAoZ251IHBhY2thZ2VzIGNoZW1pc3RyeSkKPiArwqAgIzp1c2UtbW9kdWxlIChndWl4IGdl eHApCj4gwqDCoCAjOnVzZS1tb2R1bGUgKGd1aXggcGFja2FnZXMpCj4gwqDCoCAjOnVzZS1tb2R1 bGUgKGd1aXggdXRpbHMpCj4gwqDCoCAjOnVzZS1tb2R1bGUgKChndWl4IGxpY2Vuc2VzKSAjOnBy ZWZpeCBsaWNlbnNlOikKPiBAQCAtMzUsNiArMzcsNyBAQCAoZGVmaW5lLW1vZHVsZSAoZ251IHBh Y2thZ2VzIGNoZW1pc3RyeSkKPiDCoMKgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGJvb3N0 KQo+IMKgwqAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgY2hlY2spCj4gwqDCoCAjOnVzZS1t b2R1bGUgKGdudSBwYWNrYWdlcyBjb21wcmVzc2lvbikKPiArwqAgIzp1c2UtbW9kdWxlIChnbnUg cGFja2FnZXMgY3BwKQo+IMKgwqAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZG9jdW1lbnRh dGlvbikKPiDCoMKgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGZvbnR1dGlscykKPiDCoMKg ICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGdsKQo+IEBAIC01MCw4ICs1MywxMCBAQCAoZGVm aW5lLW1vZHVsZSAoZ251IHBhY2thZ2VzIGNoZW1pc3RyeSkKPiDCoMKgICM6dXNlLW1vZHVsZSAo Z251IHBhY2thZ2VzIHF0KQo+IMKgwqAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgc2VyaWFs aXphdGlvbikKPiDCoMKgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHNwaGlueCkKPiArwqAg Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgc3RiKQo+IMKgwqAgIzp1c2UtbW9kdWxlIChnbnUg cGFja2FnZXMgeG1sKQo+IMKgwqAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBjbWFr ZSkKPiArwqAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBjb3B5KQo+IMKgwqAgIzp1 c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBnbnUpCj4gwqDCoCAjOnVzZS1tb2R1bGUgKGd1 aXggYnVpbGQtc3lzdGVtIHB5dGhvbikpCj4gwqAKPiBAQCAtNTY2LDMgKzU3MSwxMjAgQEAgKGRl ZmluZS1wdWJsaWMgcHl0aG9uLXB5bW9sCj4gwqB1c2VkIHRvIHByZXBhcmUgcHVibGljYXRpb24t cXVhbGl0eSBmaWd1cmVzLCB0byBzaGFyZSBpbnRlcmFjdGl2ZQo+IHJlc3VsdHMgd2l0aAo+IMKg eW91ciBjb2xsZWFndWVzLCBvciB0byBnZW5lcmF0ZSBwcmUtcmVuZGVyZWQgYW5pbWF0aW9ucy4i KQo+IMKgwqDCoMKgIChsaWNlbnNlIGxpY2Vuc2U6YnNkLTMpKSkKPiArCj4gKyhkZWZpbmUgc2Fq c29uLWZvci1nZW1taQo+ICvCoCAocGFja2FnZS9pbmhlcml0IHNhanNvbgo+ICvCoMKgwqAgKG5h bWUgInNhanNvbi1mb3ItZ2VtbWkiKQo+ICvCoMKgwqAgKHNvdXJjZSAob3JpZ2luCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIChpbmhlcml0IChwYWNrYWdlLXNvdXJjZSBzYWpzb24pKQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAocGF0Y2hlcyAoY29ucwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzZWFyY2gtcGF0Y2gKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJzYWpzb24tZm9y LWdlbW1pLW51bWJlcnMtYXMtCj4gc3RyaW5ncy5wYXRjaCIpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG9yaWdpbi1wYXRjaGVzIChwYWNrYWdlLXNv dXJjZSBzYWpzb24pKSkpKSkKPiArwqDCoMKgIChidWlsZC1zeXN0ZW0gY29weS1idWlsZC1zeXN0 ZW0pCj4gK8KgwqDCoCAoYXJndW1lbnRzCj4gK8KgwqDCoMKgIChsaXN0Cj4gK8KgwqDCoMKgwqAg IzppbnN0YWxsLXBsYW4KPiArwqDCoMKgwqDCoCAjficoKCJpbmNsdWRlL3NhanNvbi5oIiAiaW5j bHVkZS8iKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqAgKCJpbmNsdWRlL3NhanNvbl9vc3RyZWFtLmgi ICJpbmNsdWRlLyIpKSkpKSkKVGhlc2UgYXJlIHRlY2huaWNhbGx5IHR3byBwYWNrYWdlczsgdGhl cmVmb3JlIHR3byBwYXRjaGVzLgpZb3Ugc2hvdWxkIHJldXNlIGFzIG11Y2ggYXMgeW91IGNhbiBm cm9tIHNhanNvbi4gIFNpbmNlIHRoaXMgcGF0Y2ggaXMKbGlrZWx5IHRvIGJyZWFrIHRlc3RzLCB5 b3UgbWlnaHQgdXNlIGFuIGFwcHJvcHJpYXRlbHkgYW5ub3RhdGVkCiM6dGVzdHM/ICNmIHRvIGNv bnZleSB0aGlzIGluZm9ybWF0aW9uLgoKPiArKGRlZmluZS1wdWJsaWMgZ2VtbWkKPiArwqAgKHBh Y2thZ2UKPiArwqDCoMKgIChuYW1lICJnZW1taSIpCj4gK8KgwqDCoCAodmVyc2lvbiAiMC41Ljci KQo+ICvCoMKgwqAgKHNvdXJjZSAob3JpZ2luCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IChtZXRob2QgZ2l0LWZldGNoKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodXJpIChn aXQtcmVmZXJlbmNlCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1 cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZWN0LWdlbW1pL2dlbW1pIikKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGNvbW1pdCAoc3RyaW5nLWFwcGVuZCAidiIg dmVyc2lvbikpKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGZpbGUtbmFtZSAoZ2l0 LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24pKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAo c2hhMjU2Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGJhc2UzMgo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiAiMDBrbTVxNzI2YnNscnc3eGJmd2IzZjNtcnNrMTlx YmltZm5sM2h2cjR3aTF5M3o4aTE4YSIpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAo cGF0Y2hlcwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzZWFyY2gtcGF0Y2hlcyAi Z2VtbWktZml4LXNhanNvbi10eXBlcy5wYXRjaCIpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAobW9kdWxlcyAnKChndWl4IGJ1aWxkIHV0aWxzKSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIChzbmlwcGV0Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJyhiZWdp bgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChkZWxldGUtZmlsZS1yZWN1 cnNpdmVseQo+ICJpbmNsdWRlL2dlbW1pL3RoaXJkX3BhcnR5IikKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAoZGVsZXRlLWZpbGUtcmVjdXJzaXZlbHkgInRoaXJkX3BhcnR5 IikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjdCkpKSkKPiArwqDCoMKg IChidWlsZC1zeXN0ZW0gY21ha2UtYnVpbGQtc3lzdGVtKQo+ICvCoMKgwqAgKG5hdGl2ZS1pbnB1 dHMgKGxpc3Qgb3B0aW9ucGFyc2VyIHB5YmluZDExKSkKPiArwqDCoMKgIChwcm9wYWdhdGVkLWlu cHV0cwo+ICvCoMKgwqDCoCAobGlzdCBmYXN0LWZsb2F0Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg IHBvY2tldGZmdAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBzYWpzb24tZm9yLWdlbW1pCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgIHN0Yi1zcHJpbnRmCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHBl Z3RsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHRpbnlkaXIpKQpSZWZyYWluIGZyb20gcHJvcGFn YXRpbmcgaW5wdXRzLgo+ICvCoMKgwqAgKGlucHV0cyAobGlzdCB6bGliIHB5dGhvbikpCj4gK8Kg wqDCoCAob3V0cHV0cyAnKCJvdXQiICJiaW4iICJweXRob24iKSkKPiArwqDCoMKgIChhcmd1bWVu dHMKVGhlIHVzdWFsIHNlcXVlbmNlIGlzIG91dHB1dHMsIGJ1aWxkLXN5c3RlbSwgYXJndW1lbnRz LCAqaW5wdXRzLgo+ICvCoMKgwqDCoCAobGlzdAo+ICvCoMKgwqDCoMKgICM6Y29uZmlndXJlLWZs YWdzCj4gK8KgwqDCoMKgwqAgI34obGV0KiAoKHB5dGhvbi1saWIKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIChzdHJpbmctYXBwZW5kCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICMkb3V0cHV0OnB5dGhvbiAiL2xpYi9weXRob24iCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICMkKHZlcnNpb24tbWFqb3IrbWlub3IgKHBhY2thZ2UtdmVyc2lv biBweXRob24pKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiL3NpdGUtcGFj a2FnZXMiKSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoCAobGlzdCAiLURVU0VfUFlUSE9OPU9OIgo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0cmluZy1hcHBlbmQgIi1EUFlUSE9O X0lOU1RBTExfRElSPSIgcHl0aG9uLWxpYikpKQo+ICvCoMKgwqDCoMKgICM6cGhhc2VzCj4gK8Kg wqDCoMKgwqAgI34obW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCj4gK8KgwqDCoMKgwqDC oMKgwqDCoCAoYWRkLWFmdGVyICd1bnBhY2sgJ3BhdGNoLWluY2x1ZGVzCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKGxhbWJkYSBfCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdWJz dGl0dXRlKiAiaW5jbHVkZS9nZW1taS9zcHJpbnRmLmhwcCIKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICgoIjxzdGIvc3RiX3NwcmludGYuaD4iKSAiPHN0Yl9zcHJpbnRmLmg+Iikp Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdWJzdGl0dXRlKiAiaW5jbHVkZS9nZW1t aS9kaXJ3YWxrLmhwcCIKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoIlwidGhp cmRfcGFydHkvdGlueWRpci5oXCIiKSAiPHRpbnlkaXIuaD4iKSkKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKHN1YnN0aXR1dGUqICJpbmNsdWRlL2dlbW1pL2NpZi5ocHAiCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKCJcInRoaXJkX3BhcnR5L3Rhby9wZWd0bC5ocHBc IiIpCj4gIjx0YW8vcGVndGwuaHBwPiIpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAo c3Vic3RpdHV0ZSogImluY2x1ZGUvZ2VtbWkvanNvbi5ocHAiCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoKCJcInRoaXJkX3BhcnR5L3NhanNvbi5oXCIiKSAiPHNhanNvbi5oPiIp KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc3Vic3RpdHV0ZSogInB5dGhvbi9nZW1t aS5jcHAiCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKCJcImdlbW1pL3RoaXJk X3BhcnR5L3Rhby9wZWd0bC9wYXJzZV9lcnJvci5ocHBcIiIpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICI8dGFvL3BlZ3RsL3BhcnNlX2Vycm9yLmhwcD4iKSkKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN1YnN0aXR1dGUqICcoImluY2x1ZGUvZ2VtbWkvYXRvZi5o cHAiCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICJpbmNsdWRlL2dlbW1pL251bWIuaHBwIikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICgoIlwidGhpcmRfcGFydHkvZmFzdF9mbG9hdC5oXCIiKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiPGZhc3RfZmxvYXQvZmFzdF9mbG9hdC5oPiIpKQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc3Vic3RpdHV0ZSogImluY2x1ZGUvZ2VtbWkvZm91 cmllci5ocHAiCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKCJcInRoaXJkX3Bh cnR5L3BvY2tldGZmdF9oZHJvbmx5LmhcIiIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICI8cG9ja2V0ZmZ0X2hkcm9ubHkuaD4iKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgI3QpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqAgKGFkZC1hZnRlciAncGF0Y2gtaW5jbHVk ZXMgJ3BhdGNoLWNpZgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsYW1iZGEgXwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc3Vic3RpdHV0ZSogImluY2x1ZGUvZ2VtbWkvY2lmLmhw cCIKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoKHN0cmluZy1hcHBlbmQKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJeLip1c2luZyBhbmFseXplX3Qg PSBwZWd0bDo6YW5hbHlzaXM6OmdlbmVyaWMiCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAiPHBlZ3RsOjphbmFseXNpczo6cnVsZV90eXBlOjpBTlk+Oy4qJCIpKSAiIikK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoIlRBT0NQUF9QRUdUTF8iKSAiVEFP X1BFR1RMXyIpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjdCkpCj4gK8KgwqDCoMKg wqDCoMKgwqDCoCAoYWRkLWFmdGVyICd1bnBhY2sgJ2NoYW5nZS1iaW4tcHJlZml4Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKGxhbWJkYSBfCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IChzdWJzdGl0dXRlKiAiQ01ha2VMaXN0cy50eHQiCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAoKCJpbnN0YWxsXFwoVEFSR0VUUyBwcm9ncmFtIERFU1RJTkFUSU9OIGJpblxcKSIp Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdHJpbmctYXBwZW5kCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImluc3RhbGwoVEFSR0VUUyBwcm9ncmFt IERFU1RJTkFUSU9OICIKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjJG91 dHB1dDpiaW4gIi9iaW4pIikpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAjdCkpCj4g K8KgwqDCoMKgwqDCoMKgwqDCoCAocmVwbGFjZSAnY2hlY2sKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAobGFtYmRhKiAoIzprZXkgdGVzdHM/ICM6YWxsb3ctb3RoZXIta2V5cykKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKHdoZW4gdGVzdHM/Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAod2l0aC1kaXJlY3RvcnktZXhjdXJzaW9uICIuLi9zb3VyY2UiCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHNldGVudiAiUFlUSE9OUEFUSCIgIi4uL2J1 aWxkIikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoaW52b2tlICJweXRo b24zIiAiLW0iICJ1bml0dGVzdCIgImRpc2NvdmVyIiAiLXYiCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICItcyIgInRlc3RzIikpKSkpKSkpCj4g K8KgwqDCoCAoaG9tZS1wYWdlICJodHRwczovL2dlbW1pLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVz dC8iKQo+ICvCoMKgwqAgKHN5bm9wc2lzICJNYWNyb21vbGVjdWxhciBjcnlzdGFsbG9ncmFwaHkg bGlicmFyeSBhbmQKPiB1dGlsaXRpZXMiKQo+ICvCoMKgwqAgKGRlc2NyaXB0aW9uICJHRU1NSSBp cyBhIEMrKyBsaWJyYXJ5IGZvciBtYWNyb21vbGVjdWxhcgo+IGNyeXN0YWxsb2dyYXBoeS4KPiAr SXQgY2FuIGJlIHVzZWQgZm9yIHdvcmtpbmcgd2l0aAo+ICtAZW51bWVyYXRlCj4gK0BpdGVtIG1h Y3JvbW9sZWN1bGFyIG1vZGVscyAoY29udGVudCBvZiBQREIsIFBEQngvbW1DSUYgYW5kIG1tSlNP Tgo+IGZpbGVzKSwKPiArQGl0ZW0gcmVmaW5lbWVudCByZXN0cmFpbnRzIChDSUYgZmlsZXMpLAo+ ICtAaXRlbSByZWZsZWN0aW9uIGRhdGEgKE1UWiBhbmQgbW1DSUYgZm9ybWF0cyksCj4gK0BpdGVt IGRhdGEgb24gYSAzRCBncmlkIChlbGVjdHJvbiBkZW5zaXR5IG1hcHMsIG1hc2tzLCBNUkMvQ0NQ NAo+IGZvcm1hdCkKPiArQGl0ZW0gY3J5c3RhbGxvZ3JhcGhpYyBzeW1tZXRyeS4KPiArQGVuZCBl bnVtZXJhdGUiKQo+ICvCoMKgwqAgKGxpY2Vuc2UgbGljZW5zZTptcGwyLjApKSkKPiBkaWZmIC0t Z2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvZ2VtbWktZml4LXNhanNvbi10eXBlcy5wYXRjaAo+ IGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvZ2VtbWktZml4LXNhanNvbi10eXBlcy5wYXRjaAo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4uOTYzM2RkYWM4Ygo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9nZW1taS1maXgtc2Fqc29uLXR5 cGVzLnBhdGNoCj4gQEAgLTAsMCArMSwxMSBAQAo+ICtkaWZmIC11ciBhL2luY2x1ZGUvZ2VtbWkv anNvbi5ocHAgYi9pbmNsdWRlL2dlbW1pL2pzb24uaHBwCj4gKy0tLSBhL2luY2x1ZGUvZ2VtbWkv anNvbi5ocHAKPiArKysrIGIvaW5jbHVkZS9nZW1taS9qc29uLmhwcAo+ICtAQCAtMzgsNiArMzgs NyBAQAo+ICsgCj4gKyBpbmxpbmUgc3RkOjpzdHJpbmcgYXNfY2lmX3ZhbHVlKGNvbnN0IHNhanNv bjo6dmFsdWUmIHZhbCkgewo+ICvCoMKgIHN3aXRjaCAodmFsLmdldF90eXBlKCkpIHsKPiArK8Kg wqDCoCBjYXNlIHNhanNvbjo6VFlQRV9JTlRFR0VSOgo+ICvCoMKgwqDCoCBjYXNlIHNhanNvbjo6 VFlQRV9ET1VCTEU6Cj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gdmFsLmFzX3N0cmluZygpOwo+ICvC oMKgwqDCoCBjYXNlIHNhanNvbjo6VFlQRV9OVUxMOgo+IGRpZmYgLS1naXQgYS9nbnUvcGFja2Fn ZXMvcGF0Y2hlcy9zYWpzb24tZm9yLWdlbW1pLW51bWJlcnMtYXMtCj4gc3RyaW5ncy5wYXRjaCBi L2dudS9wYWNrYWdlcy9wYXRjaGVzL3NhanNvbi1mb3ItZ2VtbWktbnVtYmVycy1hcy0KPiBzdHJp bmdzLnBhdGNoCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi42ZjQ3 NmI4NTgzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL3NhanNv bi1mb3ItZ2VtbWktbnVtYmVycy1hcy1zdHJpbmdzLnBhdGNoCj4gQEAgLTAsMCArMSwxOTUgQEAK PiArUGF0Y2ggZm9yIGdlbW1pOiBLZWVwIG51bWJlcnMgaW4gSlNPTiBmaWxlIGFzIHN0cmluZ3Mu Cj4gKwo+ICtBZGFwdGVkIGZyb20gdGhpcyBjb21taXQgb2YgdGhlIGJ1bmRsZWQgZm9yayBvZiBz YWpzb24gaW4gZ2VtbWk6Cj4gKwo+IGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZWN0LWdlbW1pL2dl bW1pL2NvbW1pdC9mY2NiY2E0ZjYwNDAzNjRiYTcwODYxM2UKPiAxNDI5YzIyNTE4NzIyNDBkCj4g Kwo+ICtkaWZmIC11ciBhL2luY2x1ZGUvc2Fqc29uLmggYi9pbmNsdWRlL3NhanNvbi5oCj4gKy0t LSBhL2luY2x1ZGUvc2Fqc29uLmgKPiArKysrIGIvaW5jbHVkZS9zYWpzb24uaAo+ICtAQCAtNDEx LDQzICs0MTEsNiBAQAo+ICsgfTsKPiArIH0gLy8gbmFtZXNwYWNlIGludGVybmFsCj4gKyAKPiAr LW5hbWVzcGFjZSBpbnRlZ2VyX3N0b3JhZ2Ugewo+ICstZW51bSB7IHdvcmRfbGVuZ3RoID0gMSB9 Owo+ICstCj4gKy1pbmxpbmUgaW50IGxvYWQoY29uc3Qgc2l6ZV90KiBsb2NhdGlvbikgewo+ICst wqDCoMKgIGludCB2YWx1ZTsKPiArLcKgwqDCoCBtZW1jcHkoJnZhbHVlLCBsb2NhdGlvbiwgc2l6 ZW9mKHZhbHVlKSk7Cj4gKy3CoMKgwqAgcmV0dXJuIHZhbHVlOwo+ICstfQo+ICstCj4gKy1pbmxp bmUgdm9pZCBzdG9yZShzaXplX3QqIGxvY2F0aW9uLCBpbnQgdmFsdWUpIHsKPiArLcKgwqDCoCAv LyBOT1RFOiBNb3N0IG1vZGVybiBjb21waWxlcnMgb3B0aW1pemUgYXdheSB0aGlzIGNvbnN0YW50 LXNpemUKPiArLcKgwqDCoCAvLyBtZW1jcHkgaW50byBhIHNpbmdsZSBpbnN0cnVjdGlvbi4gSWYg YW55IGRvbid0LCBhbmQgdHJlYXQKPiArLcKgwqDCoCAvLyBwdW5uaW5nIHRocm91Z2ggYSB1bmlv biBhcyBsZWdhbCwgdGhleSBjYW4gYmUgc3BlY2lhbC1jYXNlZC4KPiArLcKgwqDCoCBzdGF0aWNf YXNzZXJ0KAo+ICstwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKHZhbHVlKSA8PSBzaXplb2YoKmxvY2F0 aW9uKSwKPiArLcKgwqDCoMKgwqDCoMKgICJzaXplX3QgbXVzdCBub3QgYmUgc21hbGxlciB0aGFu IGludCIpOwo+ICstwqDCoMKgIG1lbWNweShsb2NhdGlvbiwgJnZhbHVlLCBzaXplb2YodmFsdWUp KTsKPiArLX0KPiArLX0gLy8gbmFtZXNwYWNlIGludGVnZXJfc3RvcmFnZQo+ICstCj4gKy1uYW1l c3BhY2UgZG91YmxlX3N0b3JhZ2Ugewo+ICstZW51bSB7IHdvcmRfbGVuZ3RoID0gc2l6ZW9mKGRv dWJsZSkgLyBzaXplb2Yoc2l6ZV90KSB9Owo+ICstCj4gKy1pbmxpbmUgZG91YmxlIGxvYWQoY29u c3Qgc2l6ZV90KiBsb2NhdGlvbikgewo+ICstwqDCoMKgIGRvdWJsZSB2YWx1ZTsKPiArLcKgwqDC oCBtZW1jcHkoJnZhbHVlLCBsb2NhdGlvbiwgc2l6ZW9mKGRvdWJsZSkpOwo+ICstwqDCoMKgIHJl dHVybiB2YWx1ZTsKPiArLX0KPiArLQo+ICstaW5saW5lIHZvaWQgc3RvcmUoc2l6ZV90KiBsb2Nh dGlvbiwgZG91YmxlIHZhbHVlKSB7Cj4gKy3CoMKgwqAgLy8gTk9URTogTW9zdCBtb2Rlcm4gY29t cGlsZXJzIG9wdGltaXplIGF3YXkgdGhpcyBjb25zdGFudC1zaXplCj4gKy3CoMKgwqAgLy8gbWVt Y3B5IGludG8gYSBzaW5nbGUgaW5zdHJ1Y3Rpb24uIElmIGFueSBkb24ndCwgYW5kIHRyZWF0Cj4g Ky3CoMKgwqAgLy8gcHVubmluZyB0aHJvdWdoIGEgdW5pb24gYXMgbGVnYWwsIHRoZXkgY2FuIGJl IHNwZWNpYWwtY2FzZWQuCj4gKy3CoMKgwqAgbWVtY3B5KGxvY2F0aW9uLCAmdmFsdWUsIHNpemVv Zihkb3VibGUpKTsKPiArLX0KPiArLX0gLy8gbmFtZXNwYWNlIGRvdWJsZV9zdG9yYWdlCj4gKy0K PiArIC8vLyBSZXByZXNlbnRzIGEgSlNPTiB2YWx1ZS7CoCBGaXJzdCwgY2FsbCBnZXRfdHlwZSgp IHRvIGNoZWNrIGl0cwo+IHR5cGUsCj4gKyAvLy8gd2hpY2ggZGV0ZXJtaW5lcyB3aGljaCBtZXRo b2RzIGFyZSBhdmFpbGFibGUuCj4gKyAvLy8KPiArQEAgLTU4NSw3MCArNTQ4LDEwIEBACj4gK8Kg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIGxlbmd0aDsKPiArwqDCoMKgwqAgfQo+ICsgCj4gKy3CoMKg wqAgLy8vIElmIGEgbnVtZXJpYyB2YWx1ZSB3YXMgcGFyc2VkIGFzIGEgMzItYml0IGludGVnZXIs IHJldHVybnMKPiBpdC4KPiArLcKgwqDCoCAvLy8gT25seSBsZWdhbCBpZiBnZXRfdHlwZSgpIGlz IFRZUEVfSU5URUdFUi4KPiArLcKgwqDCoCBpbnQgZ2V0X2ludGVnZXJfdmFsdWUoKSBjb25zdCB7 Cj4gKy3CoMKgwqDCoMKgwqDCoCBhc3NlcnRfdGFnKHRhZzo6aW50ZWdlcik7Cj4gKy3CoMKgwqDC oMKgwqDCoCByZXR1cm4gaW50ZWdlcl9zdG9yYWdlOjpsb2FkKHBheWxvYWQpOwo+ICstwqDCoMKg IH0KPiArLQo+ICstwqDCoMKgIC8vLyBJZiBhIG51bWVyaWMgdmFsdWUgd2FzIHBhcnNlZCBhcyBh IGRvdWJsZSwgcmV0dXJucyBpdC4KPiArLcKgwqDCoCAvLy8gT25seSBsZWdhbCBpZiBnZXRfdHlw ZSgpIGlzIFRZUEVfRE9VQkxFLgo+ICstwqDCoMKgIGRvdWJsZSBnZXRfZG91YmxlX3ZhbHVlKCkg Y29uc3Qgewo+ICstwqDCoMKgwqDCoMKgwqAgYXNzZXJ0X3RhZyh0YWc6OmRvdWJsZV8pOwo+ICst wqDCoMKgwqDCoMKgwqAgcmV0dXJuIGRvdWJsZV9zdG9yYWdlOjpsb2FkKHBheWxvYWQpOwo+ICst wqDCoMKgIH0KPiArLQo+ICstwqDCoMKgIC8vLyBSZXR1cm5zIGEgbnVtZXJpYyB2YWx1ZSBhcyBh IGRvdWJsZS1wcmVjaXNpb24gZmxvYXQuCj4gKy3CoMKgwqAgLy8vIE9ubHkgbGVnYWwgaWYgZ2V0 X3R5cGUoKSBpcyBUWVBFX0lOVEVHRVIgb3IgVFlQRV9ET1VCTEUuCj4gKy3CoMKgwqAgZG91Ymxl IGdldF9udW1iZXJfdmFsdWUoKSBjb25zdCB7Cj4gKy3CoMKgwqDCoMKgwqDCoCBhc3NlcnRfdGFn XzIodGFnOjppbnRlZ2VyLCB0YWc6OmRvdWJsZV8pOwo+ICstwqDCoMKgwqDCoMKgwqAgaWYgKHZh bHVlX3RhZyA9PSB0YWc6OmludGVnZXIpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIGdldF9pbnRlZ2VyX3ZhbHVlKCk7Cj4gKy3CoMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gZ2V0X2RvdWJsZV92YWx1ZSgpOwo+ICstwqDC oMKgwqDCoMKgwqAgfQo+ICstwqDCoMKgIH0KPiArLQo+ICstwqDCoMKgIC8vLyBSZXR1cm5zIHRy dWUgYW5kIHdyaXRlcyB0byB0aGUgb3V0cHV0IGFyZ3VtZW50IGlmIHRoZQo+IG51bWVyaWMgdmFs dWUKPiArLcKgwqDCoCAvLy8gZml0cyBpbiBhIDUzLWJpdCBpbnRlZ2VyLsKgIFRoaXMgaXMgdXNl ZnVsIGZvciB0aW1lc3RhbXBzCj4gYW5kIG90aGVyCj4gKy3CoMKgwqAgLy8vIHNpdHVhdGlvbnMg d2hlcmUgaW50ZWdyYWwgdmFsdWVzIHdpdGggZ3JlYXRlciB0aGFuIDMyLWJpdAo+IHByZWNpc2lv bgo+ICstwqDCoMKgIC8vLyBhcmUgdXNlZCwgYXMgNjQtYml0IHZhbHVlcyBhcmUgbm90IHVuZGVy c3Rvb2QgYnkgYWxsIEpTT04KPiArLcKgwqDCoCAvLy8gaW1wbGVtZW50YXRpb25zIG9yIGxhbmd1 YWdlcy4KPiArLcKgwqDCoCAvLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgdmFsdWUgaXMgbm90IGFu IGludGVnZXIgb3Igbm90IGluCj4gcmFuZ2UuCj4gKy3CoMKgwqAgLy8vIE9ubHkgbGVnYWwgaWYg Z2V0X3R5cGUoKSBpcyBUWVBFX0lOVEVHRVIgb3IgVFlQRV9ET1VCTEUuCj4gKy3CoMKgwqAgYm9v bCBnZXRfaW50NTNfdmFsdWUoaW50NjRfdCogb3V0KSBjb25zdCB7Cj4gKy3CoMKgwqDCoMKgwqDC oCAvLyBNYWtlIHN1cmUgdGhlIG91dHB1dCB2YXJpYWJsZSBpcyBhbHdheXMgZGVmaW5lZCB0byBh dm9pZAo+IGFueQo+ICstwqDCoMKgwqDCoMKgwqAgLy8gcG9zc2libGUgc2l0dWF0aW9uIGxpa2UK PiArLcKgwqDCoMKgwqDCoMKgIC8vCj4gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vY2hhZGF1c3Rp bi8yYzI0OWNiODUwNjE5ZGRlYzA1YjIzY2E0MmNmN2ExOAo+ICstwqDCoMKgwqDCoMKgwqAgKm91 dCA9IDA7Cj4gKy0KPiArLcKgwqDCoMKgwqDCoMKgIGFzc2VydF90YWdfMih0YWc6OmludGVnZXIs IHRhZzo6ZG91YmxlXyk7Cj4gKy3CoMKgwqDCoMKgwqDCoCBzd2l0Y2ggKHZhbHVlX3RhZykgewo+ ICstwqDCoMKgwqDCoMKgwqAgY2FzZSB0YWc6OmludGVnZXI6Cj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgICpvdXQgPSBnZXRfaW50ZWdlcl92YWx1ZSgpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gdHJ1ZTsKPiArLcKgwqDCoMKgwqDCoMKgIGNhc2UgdGFnOjpkb3VibGVfOiB7 Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRvdWJsZSB2ID0gZ2V0X2RvdWJsZV92YWx1ZSgp Owo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodiA8IC0oMUxMIDw8IDUzKSB8fCB2ID4g KDFMTCA8PCA1MykpIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g ZmFsc2U7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaW50NjRfdCBhc19pbnQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pih2KTsKPiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFzX2ludCAhPSB2KSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9 Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpvdXQgPSBhc19pbnQ7Cj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOwo+ICstwqDCoMKgwqDCoMKgwqAgfQo+ICstwqDCoMKg wqDCoMKgwqAgZGVmYXVsdDoKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNl Owo+ICstwqDCoMKgwqDCoMKgwqAgfQo+ICstwqDCoMKgIH0KPiArLQo+ICvCoMKgwqDCoCAvLy8g UmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCj4gK8KgwqDCoMKgIC8vLyBPbmx5IGxl Z2FsIGlmIGdldF90eXBlKCkgaXMgVFlQRV9TVFJJTkcuCj4gK8KgwqDCoMKgIHNpemVfdCBnZXRf c3RyaW5nX2xlbmd0aCgpIGNvbnN0IHsKPiArLcKgwqDCoMKgwqDCoMKgIGFzc2VydF90YWcodGFn OjpzdHJpbmcpOwo+ICsrwqDCoMKgwqDCoMKgwqAgYXNzZXJ0X3RhZ18zKHRhZzo6c3RyaW5nLCB0 YWc6OmludGVnZXIsIHRhZzo6ZG91YmxlXyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHBh eWxvYWRbMV0gLSBwYXlsb2FkWzBdOwo+ICvCoMKgwqDCoCB9Cj4gKyAKPiArQEAgLTY1OSw3ICs1 NjIsNyBAQAo+ICvCoMKgwqDCoCAvLy8gZW1iZWRkZWQgTlVMcy4KPiArwqDCoMKgwqAgLy8vIE9u bHkgbGVnYWwgaWYgZ2V0X3R5cGUoKSBpcyBUWVBFX1NUUklORy4KPiArwqDCoMKgwqAgY29uc3Qg Y2hhciogYXNfY3N0cmluZygpIGNvbnN0IHsKPiArLcKgwqDCoMKgwqDCoMKgIGFzc2VydF90YWco dGFnOjpzdHJpbmcpOwo+ICsrwqDCoMKgwqDCoMKgwqAgYXNzZXJ0X3RhZ18zKHRhZzo6c3RyaW5n LCB0YWc6OmludGVnZXIsIHRhZzo6ZG91YmxlXyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IHRleHQgKyBwYXlsb2FkWzBdOwo+ICvCoMKgwqDCoCB9Cj4gKyAKPiArQEAgLTY2Nyw3ICs1NzAs NyBAQAo+ICvCoMKgwqDCoCAvLy8gUmV0dXJucyBhIHN0cmluZydzIHZhbHVlIGFzIGEgc3RkOjpz dHJpbmcuCj4gK8KgwqDCoMKgIC8vLyBPbmx5IGxlZ2FsIGlmIGdldF90eXBlKCkgaXMgVFlQRV9T VFJJTkcuCj4gK8KgwqDCoMKgIHN0ZDo6c3RyaW5nIGFzX3N0cmluZygpIGNvbnN0IHsKPiArLcKg wqDCoMKgwqDCoMKgIGFzc2VydF90YWcodGFnOjpzdHJpbmcpOwo+ICsrwqDCoMKgwqDCoMKgwqAg YXNzZXJ0X3RhZ18zKHRhZzo6c3RyaW5nLCB0YWc6OmludGVnZXIsIHRhZzo6ZG91YmxlXyk7Cj4g K8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHN0ZDo6c3RyaW5nKHRleHQgKyBwYXlsb2FkWzBdLCB0 ZXh0ICsgcGF5bG9hZFsxXSk7Cj4gK8KgwqDCoMKgIH0KPiArICNlbmRpZgo+ICtAQCAtNjkwLDYg KzU5MywxMCBAQAo+ICvCoMKgwqDCoMKgwqDCoMKgIGFzc2VydChlMSA9PSB2YWx1ZV90YWcgfHwg ZTIgPT0gdmFsdWVfdGFnKTsKPiArwqDCoMKgwqAgfQo+ICsgCj4gKyvCoMKgwqAgdm9pZCBhc3Nl cnRfdGFnXzModGFnIGUxLCB0YWcgZTIsIHRhZyBlMykgY29uc3Qgewo+ICsrwqDCoMKgwqDCoMKg wqAgYXNzZXJ0KGUxID09IHZhbHVlX3RhZyB8fCBlMiA9PSB2YWx1ZV90YWcgfHwgZTMgPT0KPiB2 YWx1ZV90YWcpOwo+ICsrwqDCoMKgIH0KPiArKwo+ICvCoMKgwqDCoCB2b2lkIGFzc2VydF9pbl9i b3VuZHMoc2l6ZV90IGkpIGNvbnN0IHsgYXNzZXJ0KGkgPAo+IGdldF9sZW5ndGgoKSk7IH0KPiAr IAo+ICvCoMKgwqDCoCBjb25zdCB0YWcgdmFsdWVfdGFnOwo+ICtAQCAtMjA1OSw2ICsxOTY2LDgg QEAKPiArwqDCoMKgwqAgc3RkOjpwYWlyPGNoYXIqLCBpbnRlcm5hbDo6dGFnPiBwYXJzZV9udW1i ZXIoY2hhciogcCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgIHVzaW5nIGludGVybmFsOjp0YWc7Cj4g KyAKPiArK8KgwqDCoMKgwqDCoHNpemVfdCBzdGFydCA9IHAgLSBpbnB1dC5nZXRfZGF0YSgpOwo+ ICsrCj4gK8KgwqDCoMKgwqDCoMKgwqAgLy8gQXNzdW1lIDMyLWJpdCwgdHdvJ3MgY29tcGxlbWVu dCBpbnRlZ2Vycy4KPiArwqDCoMKgwqDCoMKgwqDCoCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk IFJJU0tZID0gSU5UX01BWCAvIDEwdTsKPiArwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBtYXhf ZGlnaXRfYWZ0ZXJfcmlza3kgPSBJTlRfTUFYICUgMTB1Owo+ICtAQCAtMjIzNSwyMyArMjE0NCwx OCBAQAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1ID0gMHUgLSB1Owo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqDCoMKgIH0KPiArKwo+ICsr wqDCoMKgwqDCoMKgwqAgYm9vbCBzdWNjZXNzOwo+ICsrwqDCoMKgwqDCoMKgwqAgc2l6ZV90KiBv dXQgPSBhbGxvY2F0b3IucmVzZXJ2ZSgyLCAmc3VjY2Vzcyk7Cj4gKyvCoMKgwqDCoMKgwqDCoCBp ZiAoU0FKU09OX1VOTElLRUxZKCFzdWNjZXNzKSkgewo+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gc3RkOjptYWtlX3BhaXIob29tKHAsICJudW1iZXIiKSwgdGFnOjpudWxsKTsKPiAr K8KgwqDCoMKgwqDCoMKgIH0KPiArK8KgwqDCoMKgwqDCoMKgIG91dFswXSA9IHN0YXJ0Owo+ICsr wqDCoMKgwqDCoMKgwqAgb3V0WzFdID0gcCAtIGlucHV0LmdldF9kYXRhKCk7Cj4gKysKPiArwqDC oMKgwqDCoMKgwqDCoCBpZiAodHJ5X2RvdWJsZSkgewo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBib29sIHN1Y2Nlc3M7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVfdCogb3V0Cj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBhbGxvY2F0b3IucmVzZXJ2ZShkb3Vi bGVfc3RvcmFnZTo6d29yZF9sZW5ndGgsCj4gJnN1Y2Nlc3MpOwo+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoU0FKU09OX1VOTElLRUxZKCFzdWNjZXNzKSkgewo+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihvb20ocCwgImRvdWJsZSIp LCB0YWc6Om51bGwpOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRvdWJsZV9zdG9yYWdlOjpzdG9yZShvdXQsIGQpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHAsIHRhZzo6ZG91YmxlXyk7Cj4g K8KgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9v bCBzdWNjZXNzOwo+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplX3QqIG91dAo+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gYWxsb2NhdG9yLnJlc2VydmUoaW50ZWdlcl9z dG9yYWdlOjp3b3JkX2xlbmd0aCwKPiAmc3VjY2Vzcyk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChTQUpTT05fVU5MSUtFTFkoIXN1Y2Nlc3MpKSB7Cj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG9vbShwLCAiaW50ZWdlciIpLAo+ IHRhZzo6bnVsbCk7Cj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaW50ZWdlcl9zdG9yYWdlOjpzdG9yZShvdXQsIHN0YXRpY19jYXN0PGludD4o dSkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHAs IHRhZzo6aW50ZWdlcik7Cj4gK8KgwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoCB9CkNoZWVy cwo=