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 aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 565A6FD006D for ; Sun, 1 Mar 2026 14:29:17 +0000 (UTC) Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.138804.1772375355562384864 for ; Sun, 01 Mar 2026 06:29:16 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20230601 header.b=OJkb6Mrn; spf=pass (domain: gmail.com, ip: 209.85.221.51, mailfrom: adrian.freihofer@gmail.com) Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-43992e3f9b8so3752859f8f.3 for ; Sun, 01 Mar 2026 06:29:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772375354; x=1772980154; darn=lists.openembedded.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=Jq5Gb82+cxVYksdeuY4u3wEbksPh5GQcXXfCHdZUyRw=; b=OJkb6MrnLRHXzc3jiMuC3GutBFYCrO7ivoZLZ+mdCaByL13z8DO9SKz7bpaC/t8ix2 oHglB09Eq7nQui2cLBB/6LGikMuveYLME2mA8bKxRD0PxT3DgSmqF40AylnHI4inQUM5 rk5/z7zdw+KvOO5mm1Hbd8sQ1uvFfjZhcO02eJ+X5LnPIvzMHwPlyVnCeoTg86bcm23X p+cenXHom+gJu6W2LM3tjawFT9HSjFIbhI9hjZVEW238OZ+g0mtNUO2SJnicQC8fjH5j FtB4dgw4D9SaVH59ApIH2mHVeHC/oGZsEUgNLegIpF6hh3e4Hxlu4khQmu+fyM/D0fBR D7Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772375354; x=1772980154; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Jq5Gb82+cxVYksdeuY4u3wEbksPh5GQcXXfCHdZUyRw=; b=CyWrJJoFN1slfyw19l6eB1jH9mtA1t/KlhUyVNAqnYLeSsWv0BIIPu5rfpWyLqGPam fHpx4ehbWubcaSZw/BWWQnXrikzLtOm0KXXBMG807TP/LWA38qbrJxjIPH8j8zYssCpd UK/zJ192uEDjtVTtRo22yvNTu+Q6RxgUBI9VgTsH9HG3HfMxMVj5hS0HR75ncfIC4a1Y L9ivpUPv+Y92FjmZ9xqa42t1RvRDQSwtd80DEzJju2MKMaV65fc01zOndwuwOEZWK6mC 8DvngrZuvRBdoe8EjmMOnWKhLs9YfsqcEgvQGTw4dFHtzZTPMv37tpnfhNiQjz1rnP0o SaDQ== X-Forwarded-Encrypted: i=1; AJvYcCUr0eZFxhX4nGVfYUCLbqugNG92Pbt65QTgOxr8z7OIBpLrOZiNFO5qmZtFnAFNMD7H6Egb6tKcaxTuFRgS5KdeXg==@lists.openembedded.org X-Gm-Message-State: AOJu0YwYeOPxRpSOzyODKERRw6vAeeS6pLezJ57KveiEBhWeFY6Tlfjf M7i2vN+1fhaGAu0y6uamOiMCGVcKZ90yE//qgfsTdml7fZDla/HutAHI X-Gm-Gg: ATEYQzySn4pU1phq5r1+rqjwV15ZFujb5Y8uCIjPUIeR7KnHQjdLgEWluG5VVVhkx6n fsoChTY0JpPQjPWmsFxnrXIiXGRVEzaUq6/JjRirGQy59hKabRzwC9/k7VjPYCdvvtBa9drRBZy lAvjnrG8k3OPo+A4BCTOwpjoGZ1lqjWukvJHBKtGIzUU1+jA8k1GXXJQG6OprIjvTNeVf2weCEa ScTUEk142HN0tvw27wIIT58GaiNQ3xytb9wZn8ourFxfJ2Yf8MhkxMczTo51+U0qDnbYtKhlV0b nzJnkKWAu+qhjpj6fz+0xmbRNMSiNll0svCfgQyIIz7x12SZitBYb03XVLvPQXGjnJOEH0cwosg wRFcxZMNhHbsISGeVQEBaMdf9TaBqfLrNR2cb2JENM4n4dBYynXhBPzgj98yFcVAT8AoP0QxPBL mt80PK3zH58zf21DVB0VdX5MOhzu3OmVZMVIlnbqE8r3XAHcVXJt21caU1zeBN0l2x1SL3aG06 X-Received: by 2002:a05:6000:2012:b0:439:8b42:9923 with SMTP id ffacd0b85a97d-4399ddd870cmr16150558f8f.9.1772375353791; Sun, 01 Mar 2026 06:29:13 -0800 (PST) Received: from ?IPv6:2a02:169:59a6:0:55c4:f628:91f3:4287? ([2a02:169:59a6:0:55c4:f628:91f3:4287]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439af926c53sm7754978f8f.8.2026.03.01.06.29.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Mar 2026 06:29:13 -0800 (PST) Message-ID: <00306dbbb432748b57cece3ef00544a2309f26f9.camel@gmail.com> Subject: Re: [OE-core] [PATCH 2/2] kernel-fit-image: support arbitrary loadables From: adrian.freihofer@gmail.com To: francesco@valla.it, openembedded-core@lists.openembedded.org, Adrian Freihofer Cc: Marek Vasut , Michael Opdenacker , Usama Arif Date: Sun, 01 Mar 2026 15:29:12 +0100 In-Reply-To: <20260228-fit_loadables-v1-2-3027ec37930d@valla.it> References: <20260228-fit_loadables-v1-0-3027ec37930d@valla.it> <20260228-fit_loadables-v1-2-3027ec37930d@valla.it> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.56.2 (3.56.2-2.fc42) MIME-Version: 1.0 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Sun, 01 Mar 2026 14:29:17 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/232143 SGkgRnJhbmNlc2NvCgpUaGlzIHBhdGNoIGxvb2tzIHZlcnkgbmljZS4gQWxzbyBoYXZpbmcgRklU IHN1cHBvcnQgaW4gdGhlIFNQTCBvbmx5CnNvdW5kcyBsaWtlIGFuIGludGVyZXN0aW5nIGlkZWEg d2hpY2ggY291bGQgcG90ZW50aWFsbHkgc2ltcGxpZnkgc29tZQp0aGluZ3MuCgpBcyBhIGxvbmcg dGVybSBnb2FsIHdlIHNob3VsZCBldmFsdWF0ZSBpZiB0aGlzIGFwcHJvYWNoIGNvdWxkIGJlY29t ZQp0aGUgbmV3IHN0YW5kYXJkIGZvciBhZGRpbmcgYXJ0aWZhY3RzIHRvIGEgRklUIGltYWdlLiBO b3Qgc3VyZSB3aGF0CnRoYXQgd291bGQgbWVhbiBpbiB0ZXJtcyBvZiB0ZXN0aW5nIGFuZCBzaWdu aW5nIHRoZSBhcnRpZmFjdHMuIEJ1dApkZWZpbml0ZWx5IGludGVyZXN0aW5nIHRvIGJlIGNvbnNp ZGVyZWQgZm9yIHRoZSBmdXR1cmUuCgpSZWdhcmRzLApBZHJpYW4KCk9uIFNhdCwgMjAyNi0wMi0y OCBhdCAwMDozNyArMDEwMCwgRnJhbmNlc2NvIFZhbGxhIHZpYQpsaXN0cy5vcGVuZW1iZWRkZWQu b3JnIHdyb3RlOgo+IEFsbG93IGEgdXNlciB0byBpbnNlcnQgYWRkaXRpb25hbCwgYXJiaXRyYXJ5 IGxvYWRhYmxlcyBpbiBhIEZJVAo+IGltYWdlLgo+IFRoZSBsb2FkYWJsZXMgY2FuIGJlIHNwZWNp ZmllZCB0aHJvdWdoIHRoZSBGSVRfTE9BREFCTEVTIHZhcmlhYmxlIGFzCj4gYSBsaXN0LCB3aXRo IHBhcmFtZXRlcnMgZGVmaW5lZCBieSBmbGFncyBvbiBkZWRpY2F0ZWQgRklUX0xPQURBQkxFXyoK PiB2YXJpYWJsZXM7IHRoZXkgd2lsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29uZmlndXJhdGlvbnMu Cj4gCj4gU2Vuc2libGUgZGVmYXVsdHMgd2lsbCBiZSB1c2VkIGZvciBzb21lIHBhcmFtZXRlcnMg KHR5cGUsCj4gY29tcHJlc3Npb24sCj4gZGVzY3JpcHRpb24sIGFyY2gsIG9zKSBpZiB0aGUgY29y cmVzcG9uZGluZyBmbGFnIGlzIG5vdCBzZXQsIHdoaWxlCj4gb3RoZXJzIChsb2FkIGFkZHJlc3Mg YW5kIGVudHJ5IHBvaW50KSB3aWxsIGJlIG9taXR0ZWQgaW4gdGhlIGZpbmFsCj4gRklUCj4gaW1h Z2UuCj4gCj4gQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGNhbiBi ZSBzcGVjaWZpZWQgdG8gYWRkIGFzCj4gbG9hZGFibGVzIGEgVEYtQSBCTDMxIGZpcm13YXJlIGFu ZCBhIChjb21wcmVzc2VkKSBURUUgZmlybXdhcmUsIHRvIGJlCj4gbG9hZGVkIHJlc3BlY3RpdmVs eSBhdCAweDIwNEUwMDAwIGFuZCAweDk2MDAwMDAwOgo+IAo+IMKgIEZJVF9MT0FEQUJMRVMgPSAi YXRmIHRlZSIKPiAKPiDCoCBGSVRfTE9BREFCTEVfRklMRU5BTUVbYXRmXSA9ICJibDMxLmJpbiIK PiDCoCBGSVRfTE9BREFCTEVfVFlQRVthdGZdID0gInRmYS1ibDMxIgo+IMKgIEZJVF9MT0FEQUJM RV9BUkNIW2F0Zl0gPSAiYXJtNjQiCj4gwqAgRklUX0xPQURBQkxFX09TW2F0Zl0gPSAiYXJtLXRy dXN0ZWQtZmlybXdhcmUiCj4gwqAgRklUX0xPQURBQkxFX0xPQURBRERSRVNTW2F0Zl0gPSAiMHgy MDRFMDAwMCIKPiAKPiDCoCBGSVRfTE9BREFCTEVfRklMRU5BTUVbdGVlXSA9ICJ0ZWUuYmluLmd6 Igo+IMKgIEZJVF9MT0FEQUJMRV9DT01QUkVTU1NJT05bdGVlXSA9ICJnemlwIgo+IMKgIEZJVF9M T0FEQUJMRV9UWVBFW3RlZV0gPSAidGVlIgo+IMKgIEZJVF9MT0FEQUJMRV9PU1t0ZWVdID0gInRl ZSIKPiDCoCBGSVRfTE9BREFCTEVfTE9BREFERFJFU1NbdGVlXSA9ICIweDIxMDAwMDAwIgo+IAo+ IFNpZ25lZC1vZmYtYnk6IEZyYW5jZXNjbyBWYWxsYSA8ZnJhbmNlc2NvQHZhbGxhLml0Pgo+IC0t LQo+IMKgbWV0YS9jbGFzc2VzLXJlY2lwZS9rZXJuZWwtZml0LWltYWdlLmJiY2xhc3MgfCAzMwo+ ICsrKysrKysrKysrKysrKysrKysKPiDCoG1ldGEvY29uZi9pbWFnZS1maXRpbWFnZS5jb25mwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTggKysrKysrKysrKysKPiDCoG1ldGEvbGli L29lL2ZpdGltYWdlLnB5wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgMzAgKysrKysrKysrKysrKysrKysrCj4gwqBtZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2Vz L2ZpdGltYWdlLnB5wqDCoMKgwqAgfCA0Nwo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiDCoDQgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEv bWV0YS9jbGFzc2VzLXJlY2lwZS9rZXJuZWwtZml0LWltYWdlLmJiY2xhc3MKPiBiL21ldGEvY2xh c3Nlcy1yZWNpcGUva2VybmVsLWZpdC1pbWFnZS5iYmNsYXNzCj4gaW5kZXgKPiA0ODgwMDI3YjIx MDE5NmQyNWY4M2Q3ZTY4M2MzN2JkNWU2NjU3NWQzLi40OGNjZGNmNGE5ZDk3YTE4NTQ0NDY1MjFm ZDQKPiBlZDhhMDIwMTUzZTg3IDEwMDY0NAo+IC0tLSBhL21ldGEvY2xhc3Nlcy1yZWNpcGUva2Vy bmVsLWZpdC1pbWFnZS5iYmNsYXNzCj4gKysrIGIvbWV0YS9jbGFzc2VzLXJlY2lwZS9rZXJuZWwt Zml0LWltYWdlLmJiY2xhc3MKPiBAQCAtMTM5LDYgKzEzOSwzOSBAQCBweXRob24gZG9fY29tcGls ZSgpIHsKPiDCoMKgwqDCoMKgwqDCoMKgIGlmIG5vdCBmb3VuZDoKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYmIuZmF0YWwoIkNvdWxkIG5vdCBmaW5kIGEgdmFsaWQgaW5pdHJhbWZzIHR5cGUg Zm9yICVzLAo+IHRoZSBzdXBwb3J0ZWQgdHlwZXMgYXJlOiAlcyIgJSAoZC5nZXRWYXIoJ0lOSVRS QU1GU19JTUFHRV9OQU1FJyksCj4gZC5nZXRWYXIoJ0ZJVF9TVVBQT1JURURfSU5JVFJBTUZTX0ZT VFlQRVMnKSkpCj4gwqAKPiArwqDCoMKgICMKPiArwqDCoMKgICMgUHJlcGFyZSBsb2FkYWJsZXMg c2VjdGlvbnMKPiArwqDCoMKgICMKPiArwqDCoMKgIGZvciBsb2FkYWJsZSBpbiBkLmdldFZhcign RklUX0xPQURBQkxFUycpLnNwbGl0KCk6Cj4gK8KgwqDCoMKgwqDCoMKgIGxvYWRhYmxlX2ZpbGUg PSBkLmdldFZhckZsYWcoJ0ZJVF9MT0FEQUJMRV9GSUxFTkFNRScsCj4gbG9hZGFibGUpCj4gK8Kg wqDCoMKgwqDCoMKgIGlmIG5vdCBsb2FkYWJsZV9maWxlOgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGJiLmZhdGFsKCJGaWxlIGZvciBsb2FkYWJsZSAlcyBub3Qgc3BlY2lmaWVkIHRocm91Z2gK PiBGSVRfTE9BREFCTEVfRklMRU5BTUVbJXNdIiAlIChsb2FkYWJsZSwgbG9hZGFibGUpKQo+ICsK PiArwqDCoMKgwqDCoMKgwqAgbG9hZGFibGVfbG9hZGFkZHJlc3MgPQo+IGQuZ2V0VmFyRmxhZygn RklUX0xPQURBQkxFX0xPQURBRERSRVNTJywgbG9hZGFibGUpCj4gK8KgwqDCoMKgwqDCoMKgIGlm IG5vdCBsb2FkYWJsZV9sb2FkYWRkcmVzczoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYi5m YXRhbCgiTG9hZCBhZGRyZXNzIGZvciBsb2FkYWJsZSAlcyBub3Qgc3BlY2lmaWVkCj4gdGhyb3Vn aCBGSVRfTE9BREFCTEVfTE9BREFERFJFU1NbJXNdIiAlIChsb2FkYWJsZSwgbG9hZGFibGUpKQo+ ICsKPiArwqDCoMKgwqDCoMKgwqAgIyBPcHRpb25hbCBwYXJhbWV0ZXJzCj4gK8KgwqDCoMKgwqDC oMKgIGxvYWRhYmxlX2Rlc2NyaXB0aW9uID0KPiBkLmdldFZhckZsYWcoJ0ZJVF9MT0FEQUJMRV9E RVNDUklQVElPTicsIGxvYWRhYmxlKSBvciAoIiVzIGxvYWRhYmxlIgo+ICUgbG9hZGFibGUpCj4g K8KgwqDCoMKgwqDCoMKgIGxvYWRhYmxlX2NvbXByZXNzaW9uID0KPiBkLmdldFZhckZsYWcoJ0ZJ VF9MT0FEQUJMRV9DT01QUkVTU0lPTicsIGxvYWRhYmxlKQo+ICvCoMKgwqDCoMKgwqDCoCBsb2Fk YWJsZV90eXBlID0gZC5nZXRWYXJGbGFnKCdGSVRfTE9BREFCTEVfVFlQRScsIGxvYWRhYmxlKQo+ ICvCoMKgwqDCoMKgwqDCoCBsb2FkYWJsZV9hcmNoID0gZC5nZXRWYXJGbGFnKCdGSVRfTE9BREFC TEVfQVJDSCcsIGxvYWRhYmxlKQo+ICvCoMKgwqDCoMKgwqDCoCBsb2FkYWJsZV9vcyA9IGQuZ2V0 VmFyRmxhZygnRklUX0xPQURBQkxFX09TJywgbG9hZGFibGUpCj4gK8KgwqDCoMKgwqDCoMKgIGxv YWRhYmxlX2VudHJ5cG9pbnQgPQo+IGQuZ2V0VmFyRmxhZygnRklUX0xPQURBQkxFX0VOVFJZUE9J TlQnLCBsb2FkYWJsZSkKPiArCj4gK8KgwqDCoMKgwqDCoMKgICMgQ2hlY2sgaWYgbG9hZGFibGUg YXJ0aWZhY3QgZXhpc3RzCj4gK8KgwqDCoMKgwqDCoMKgIGxvYWRhYmxlX3BhdGggPSBvcy5wYXRo LmpvaW4oZC5nZXRWYXIoIkRFUExPWV9ESVJfSU1BR0UiKSwKPiBsb2FkYWJsZV9maWxlKQo+ICvC oMKgwqDCoMKgwqDCoCBpZiBub3Qgb3MucGF0aC5leGlzdHMobG9hZGFibGVfcGF0aCk6Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYmIuZmF0YWwoIkZpbGUgZm9yIGxvYWRhYmxlICVzIG5vdCBm b3VuZCBhdCAlcyIgJQo+IChsb2FkYWJsZSwgbG9hZGFibGVfcGF0aCkpCj4gKwo+ICvCoMKgwqDC oMKgwqDCoCByb290X25vZGUuZml0aW1hZ2VfZW1pdF9zZWN0aW9uX2xvYWRhYmxlKGxvYWRhYmxl LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbG9hZGFibGVfcGF0 aCwKPiBsb2FkYWJsZV90eXBlLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAKPiBsb2FkYWJsZV9kZXNjcmlwdGlvbiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgCj4gbG9hZGFibGVfY29tcHJlc3Npb24sCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb2FkYWJsZV9hcmNoLAo+IGxvYWRhYmxlX29zLAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBsb2FkYWJsZV9sb2Fk YWRkcmVzcywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gbG9h ZGFibGVfZW50cnlwb2ludCkKPiArCj4gwqDCoMKgwqAgIyBHZW5lcmF0ZSB0aGUgY29uZmlndXJh dGlvbiBzZWN0aW9uCj4gwqDCoMKgwqAKPiByb290X25vZGUuZml0aW1hZ2VfZW1pdF9zZWN0aW9u X2NvbmZpZyhkLmdldFZhcigiRklUX0NPTkZfREVGQVVMVF9EVEIKPiAiKSwgZC5nZXRWYXIoIkZJ VF9DT05GX01BUFBJTkdTIikpCj4gwqAKPiBkaWZmIC0tZ2l0IGEvbWV0YS9jb25mL2ltYWdlLWZp dGltYWdlLmNvbmYgYi9tZXRhL2NvbmYvaW1hZ2UtCj4gZml0aW1hZ2UuY29uZgo+IGluZGV4Cj4g NGU3ZWEyNzUwZWRiYTk2MTRlNTJmOTgzY2JjNDEzODZlMWFjZjM5NS4uMmZkYjgxNmQ1NTZjNzg2 ZGNjMmMxNGNiMTQ5Cj4gNDQ2ZWFkZGMyZmY0YiAxMDA2NDQKPiAtLS0gYS9tZXRhL2NvbmYvaW1h Z2UtZml0aW1hZ2UuY29uZgo+ICsrKyBiL21ldGEvY29uZi9pbWFnZS1maXRpbWFnZS5jb25mCj4g QEAgLTgwLDMgKzgwLDIxIEBAIEZJVF9BRERSRVNTX0NFTExTID89ICIxIgo+IMKgIyBNYWNoaW5l IGNvbmZpZ3VyYXRpb25zIG5lZWRpbmcgc3VjaCBhIHNjcmlwdCBmaWxlIHNob3VsZCBpbmNsdWRl Cj4gaXQgaW4gdGhlCj4gwqAjIFNSQ19VUkkgb2YgdGhlIGtlcm5lbCByZWNpcGUgYW5kIHNldCB0 aGUgRklUX1VCT09UX0VOViBwYXJhbWV0ZXIuCj4gwqBGSVRfVUJPT1RfRU5WID89ICIiCj4gKwo+ ICsjIEFsbG93IHVzZXIgdG8gaW5zZXJ0IGFkZGl0aW9uYWwgbG9hZGFibGUgaW1hZ2VzLgo+ICsj IEZvciBlYWNoIGxvYWRhYmxlLCBhIG51bWJlciBvZiBwYXJhbWV0ZXJzIGNhbiBiZSBkZWZpbmVk IHRocm91Z2gKPiBhZGRpdGlvbmFsCj4gKyMgdmFyaWFibGUgZmxhZ3MuCj4gKyMgRXhhbXBsZToK PiArI8KgwqAgRklUX0xPQURBQkxFUyA9ICJhdGYiCj4gKyPCoMKgIEZJVF9MT0FEQUJMRV9GSUxF TkFNRVthdGZdID0gImJsMzEuYmluIgo+ICsjwqDCoCBGSVRfTE9BREFCTEVfQ09NUFJFU1NTSU9O W2F0Zl0gPSAibm9uZSIKPiArI8KgwqAgRklUX0xPQURBQkxFX0RFU0NSSVBUSU9OW2F0Zl0gPSAi VEYtQSBmaXJtd2FyZSBpbWFnZSIKPiArI8KgwqAgRklUX0xPQURBQkxFX1RZUEVbYXRmXSA9ICJ0 ZmEtYmwzMSIKPiArI8KgwqAgRklUX0xPQURBQkxFX0FSQ0hbYXRmXSA9ICJhcm02NCIKPiArI8Kg wqAgRklUX0xPQURBQkxFX09TW2F0Zl0gPSAiYXJtLXRydXN0ZWQtZmlybXdhcmUiCj4gKyPCoMKg IEZJVF9MT0FEQUJMRV9MT0FEQUREUkVTU1thdGZdID0gIjB4MjA0RTAwMDAiCj4gKyPCoMKgIEZJ VF9MT0FEQUJMRV9FTlRSWVBPSU5UW2F0Zl0gPSAiMHgyMDRFMDAwMCIKPiArIyBTZW5zaWJsZSBk ZWZhbHRzIHdpbGwgYmUgdXNlZCBmb3Igc29tZSBwYXJhbWV0ZXJzIChjb21wcmVzc2lvbiwKPiBk ZXNjcmlwdGlvbiwKPiArIyBhcmNoLCBvcykgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZyBpcyBu b3Qgc2V0LCB3aGlsZSBvdGhlcnMgKGxvYWQKPiBhZGRyZXNzCj4gKyMgYW5kIGVudHJ5IHBvaW50 KSB3aWxsIGJlIG9taXR0ZWQgaW4gdGhlIGZpbmFsIEZJVC4KPiArRklUX0xPQURBQkxFUyA/PSAi Igo+IGRpZmYgLS1naXQgYS9tZXRhL2xpYi9vZS9maXRpbWFnZS5weSBiL21ldGEvbGliL29lL2Zp dGltYWdlLnB5Cj4gaW5kZXgKPiA4YmY4M2MwYTU3ODIzZjY0MGM0YzBmYmMxNDU4NzQ1NjFjOWIz NzRmLi44ODFkMGVhZTBhYjBlYzQyN2E4NzAzMWM3ZDUKPiA3NjA4NjczZGIxOTNiIDEwMDY0NAo+ IC0tLSBhL21ldGEvbGliL29lL2ZpdGltYWdlLnB5Cj4gKysrIGIvbWV0YS9saWIvb2UvZml0aW1h Z2UucHkKPiBAQCAtMTk1LDYgKzE5NSw3IEBAIGNsYXNzIEl0c05vZGVSb290S2VybmVsKEl0c05v ZGUpOgo+IMKgwqDCoMKgwqDCoMKgwqAgc2VsZi5fcmFtZGlzayA9IE5vbmUKPiDCoMKgwqDCoMKg wqDCoMKgIHNlbGYuX2Jvb3RzY3IgPSBOb25lCj4gwqDCoMKgwqDCoMKgwqDCoCBzZWxmLl9zZXR1 cCA9IE5vbmUKPiArwqDCoMKgwqDCoMKgwqAgc2VsZi5fbG9hZGFibGVzID0gW10KPiDCoAo+IMKg wqDCoMKgIGRlZiBfc2FuaXRpemVfc2lnbl9jb25maWcoc2VsZik6Cj4gwqDCoMKgwqDCoMKgwqDC oCBpZiBzZWxmLl9zaWduX2VuYWJsZToKPiBAQCAtMzk2LDYgKzM5NywyOSBAQCBjbGFzcyBJdHNO b2RlUm9vdEtlcm5lbChJdHNOb2RlKToKPiDCoMKgwqDCoMKgwqDCoMKgICkKPiDCoMKgwqDCoMKg wqDCoMKgIHNlbGYuX3JhbWRpc2sgPSByYW1kaXNrX25vZGUKPiDCoAo+ICvCoMKgwqAgZGVmIGZp dGltYWdlX2VtaXRfc2VjdGlvbl9sb2FkYWJsZShzZWxmLCBuYW1lLCBmaWxlcGF0aCwKPiB0eXBl PU5vbmUsIGRlc2NyaXB0aW9uPU5vbmUsIGNvbXByZXNzaW9uPU5vbmUsIGFyY2g9Tm9uZSwgb3M9 Tm9uZSwKPiBsb2FkPU5vbmUsIGVudHJ5PU5vbmUpOgo+ICvCoMKgwqDCoMKgwqDCoCAiIiJFbWl0 IG9uZSBmaXRJbWFnZSBJVFMgbG9hZGFibGUgc2VjdGlvbiIiIgo+ICvCoMKgwqDCoMKgwqDCoCBv cHRfcHJvcHMgPSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImRhdGEiOiAnL2luY2Jpbi8o IicgKyBmaWxlcGF0aCArICciKScsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImFyY2giOiBh cmNoIGlmIGFyY2ggaXMgbm90IE5vbmUgZWxzZSBzZWxmLl9hcmNoLAo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICJvcyI6IG9zIGlmIG9zIGlzIG5vdCBOb25lIGVsc2UgImxpbnV4IiwKPiArwqDC oMKgwqDCoMKgwqAgfQo+ICsKPiArwqDCoMKgwqDCoMKgwqAgaWYgbG9hZDoKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBvcHRfcHJvcHNbImxvYWQiXSA9IGYiPHtsb2FkfT4iCj4gK8KgwqDCoMKg wqDCoMKgIGlmIGVudHJ5Ogo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wdF9wcm9wc1siZW50 cnkiXSA9IGYiPHtlbnRyeX0+Igo+ICsKPiArwqDCoMKgwqDCoMKgwqAgbG9hZGFibGVfbm9kZSA9 IHNlbGYuaXRzX2FkZF9ub2RlX2ltYWdlKAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5hbWUs Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVzY3JpcHRpb24gaWYgZGVzY3JpcHRpb24gaXMg bm90IE5vbmUgZWxzZSBuYW1lLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR5cGUgaWYgdHlw ZSBpcyBub3QgTm9uZSBlbHNlICJmaXJtd2FyZSIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29tcHJlc3Npb24gaWYgY29tcHJlc3Npb24gaXMgbm90IE5vbmUgZWxzZSAibm9uZSIsCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgb3B0X3Byb3BzCj4gK8KgwqDCoMKgwqDCoMKgICkKPiArCj4g K8KgwqDCoMKgwqDCoMKgIHNlbGYuX2xvYWRhYmxlcy5hcHBlbmQobG9hZGFibGVfbm9kZSkKPiAr Cj4gwqDCoMKgwqAgZGVmIF9maXRpbWFnZV9lbWl0X29uZV9zZWN0aW9uX2NvbmZpZyhzZWxmLCBj b25mX25vZGVfbmFtZSwKPiBkdGI9Tm9uZSk6Cj4gwqDCoMKgwqDCoMKgwqDCoCAiIiJFbWl0IHRo ZSBmaXRJbWFnZSBJVFMgY29uZmlndXJhdGlvbiBzZWN0aW9uIiIiCj4gwqDCoMKgwqDCoMKgwqDC oCBvcHRfcHJvcHMgPSB7fQo+IEBAIC00MzQsNiArNDU4LDEyIEBAIGNsYXNzIEl0c05vZGVSb290 S2VybmVsKEl0c05vZGUpOgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiBzZWxmLl9zaWdu X2VuYWJsZToKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaWduX2VudHJpZXMu YXBwZW5kKCJzZXR1cCIpCj4gwqAKPiArwqDCoMKgwqDCoMKgwqAgaWYgbGVuKHNlbGYuX2xvYWRh YmxlcykgPiAwOgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbmZfZGVzYy5hcHBlbmQoImxv YWRhYmxlcyIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3B0X3Byb3BzWyJsb2FkYWJsZXMi XSA9IFsgbG9hZGFibGUubmFtZSBmb3IgbG9hZGFibGUgaW4KPiBzZWxmLl9sb2FkYWJsZXMgXQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIHNlbGYuX3NpZ25fZW5hYmxlOgo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2lnbl9lbnRyaWVzLmFwcGVuZCgibG9hZGFibGVzIikK PiArCj4gwqDCoMKgwqDCoMKgwqDCoCAjIEZpcnN0IGFkZGVkIGNvbmZpZ3VyYXRpb24gaXMgdGhl IGRlZmF1bHQgY29uZmlndXJhdGlvbgo+IMKgwqDCoMKgwqDCoMKgwqAgZGVmYXVsdF9mbGFnID0g IjAiCj4gwqDCoMKgwqDCoMKgwqDCoCBpZiBsZW4oc2VsZi5jb25maWd1cmF0aW9ucy5zdWJfbm9k ZXMpID09IDA6Cj4gZGlmZiAtLWdpdCBhL21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZml0 aW1hZ2UucHkKPiBiL21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZml0aW1hZ2UucHkKPiBp bmRleAo+IDJhZmY1Yzg0YzhmYTEwYzQzY2NmMDA4ODU5ZmRiN2M0OTU4YmZiZTcuLjgxNTFjMTNk MjYyMTZjOWU4M2U2ZjA4MmMwZgo+IGY1Mzc5ZDhhMDFiMzQgMTAwNjQ0Cj4gLS0tIGEvbWV0YS9s aWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9maXRpbWFnZS5weQo+ICsrKyBiL21ldGEvbGliL29lcWEv c2VsZnRlc3QvY2FzZXMvZml0aW1hZ2UucHkKPiBAQCAtMjAzLDYgKzIwMywxNSBAQCBjbGFzcyBG aXRJbWFnZVRlc3RDYXNlKE9FU2VsZnRlc3RUZXN0Q2FzZSk6Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGR0Yl9zeW1saW5rcy5hcHBlbmQoImFtMzM1eC1ib25lZ3JlZW4tZXh0LWFsaWFzLmR0 YiIpCj4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gKGFsbF9kdGJzLCBkdGJfc3ltbGlua3MpCj4g wqAKPiArwqDCoMKgIEBzdGF0aWNtZXRob2QKPiArwqDCoMKgIGRlZiBfZ2V0X2xvYWRhYmxlcyhi Yl92YXJzKToKPiArwqDCoMKgwqDCoMKgwqAgIiIiUmV0dXJuIGEgbGlzdCBvZiBsb2FkYWJsZSBu YW1lcyIiIgo+ICvCoMKgwqDCoMKgwqDCoCBsb2FkYWJsZXMgPSBbXQo+ICvCoMKgwqDCoMKgwqDC oCB2YXJfbG9hZGFibGVzID0gYmJfdmFycy5nZXQoJ0ZJVF9MT0FEQUJMRVMnKQo+ICvCoMKgwqDC oMKgwqDCoCBpZiB2YXJfbG9hZGFibGVzOgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvYWRh YmxlcyArPSB2YXJfbG9hZGFibGVzLnNwbGl0KCkKPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGxv YWRhYmxlcwo+ICsKPiDCoMKgwqDCoCBkZWYgX2lzX3JlcV9kaWN0X2luX2RpY3Qoc2VsZiwgZm91 bmRfZGljdCwgcmVxX2RpY3QpOgo+IMKgwqDCoMKgwqDCoMKgwqAgIiIiCj4gwqDCoMKgwqDCoMKg wqDCoCBDaGVjayBpZiBhbGwga2V5LXZhbHVlIHBhaXJzIGluIHRoZSByZXF1aXJlZCBkaWN0aW9u YXJ5IGFyZQo+IHByZXNlbnQgaW4gdGhlIGZvdW5kIGRpY3Rpb25hcnkuCj4gQEAgLTQxOCw2ICs0 MjcsNyBAQCBjbGFzcyBLZXJuZWxGaXRJbWFnZUJhc2UoRml0SW1hZ2VUZXN0Q2FzZSk6Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICdGSVRfREVTQycsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICdGSVRfSEFTSF9BTEcnLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAnRklUX0tFUk5F TF9DT01QX0FMRycsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJ0ZJVF9MT0FEQUJMRVMnLAo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAnRklUX1NJR05fQUxHJywKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgJ0ZJVF9TSUdOX0lORElWSURVQUwnLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAnRklUX1VCT09UX0VOVicsCj4gQEAgLTUyMSw2ICs1MzEsNyBAQCBjbGFzcyBLZXJuZWxG aXRJbWFnZUJhc2UoRml0SW1hZ2VUZXN0Q2FzZSk6Cj4gwqDCoMKgwqDCoMKgwqDCoCBmaXRfdWJv b3RfZW52ID0gYmJfdmFyc1snRklUX1VCT09UX0VOViddCj4gwqDCoMKgwqDCoMKgwqDCoCBpbml0 cmFtZnNfaW1hZ2UgPSBiYl92YXJzWydJTklUUkFNRlNfSU1BR0UnXQo+IMKgwqDCoMKgwqDCoMKg wqAgaW5pdHJhbWZzX2ltYWdlX2J1bmRsZSA9IGJiX3ZhcnNbJ0lOSVRSQU1GU19JTUFHRV9CVU5E TEUnXQo+ICvCoMKgwqDCoMKgwqDCoCBsb2FkYWJsZXMgPSBGaXRJbWFnZVRlc3RDYXNlLl9nZXRf bG9hZGFibGVzKGJiX3ZhcnMpCj4gwqDCoMKgwqDCoMKgwqDCoCB1Ym9vdF9zaWduX2VuYWJsZSA9 IGJiX3ZhcnMuZ2V0KCdVQk9PVF9TSUdOX0VOQUJMRScpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg ICMgaW1hZ2Ugbm9kZXMKPiBAQCAtNTQ1LDYgKzU1Niw5IEBAIGNsYXNzIEtlcm5lbEZpdEltYWdl QmFzZShGaXRJbWFnZVRlc3RDYXNlKToKPiDCoMKgwqDCoMKgwqDCoMKgIGVsc2U6Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG5vdF9pbWFnZXMuYXBwZW5kKCdyYW1kaXNrLTEnKQo+IMKgCj4g K8KgwqDCoMKgwqDCoMKgIGlmIGxvYWRhYmxlczoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp bWFnZXMgKz0gbG9hZGFibGVzCj4gKwo+IMKgwqDCoMKgwqDCoMKgwqAgIyBjb25maWd1cmF0aW9u IG5vZGVzIChvbmUgcGVyIERUQiwgc3ltbGluaywgYW5kIG1hcHBpbmdzKQo+IMKgwqDCoMKgwqDC oMKgwqAgY29uZmlndXJhdGlvbnMgPSBbXQo+IMKgwqDCoMKgwqDCoMKgwqAgaWYgZHRiX2ZpbGVz Ogo+IEBAIC02OTUsNiArNzA5LDcgQEAgY2xhc3MgS2VybmVsRml0SW1hZ2VCYXNlKEZpdEltYWdl VGVzdENhc2UpOgo+IMKgwqDCoMKgwqDCoMKgwqAgZml0X3Vib290X2VudiA9IGJiX3ZhcnNbJ0ZJ VF9VQk9PVF9FTlYnXQo+IMKgwqDCoMKgwqDCoMKgwqAgaW5pdHJhbWZzX2ltYWdlID0gYmJfdmFy c1snSU5JVFJBTUZTX0lNQUdFJ10KPiDCoMKgwqDCoMKgwqDCoMKgIGluaXRyYW1mc19pbWFnZV9i dW5kbGUgPSBiYl92YXJzWydJTklUUkFNRlNfSU1BR0VfQlVORExFJ10KPiArwqDCoMKgwqDCoMKg wqAgbG9hZGFibGVzID0gRml0SW1hZ2VUZXN0Q2FzZS5fZ2V0X2xvYWRhYmxlcyhiYl92YXJzKQo+ IMKgwqDCoMKgwqDCoMKgwqAgdWJvb3Rfc2lnbl9lbmFibGUgPSBiYl92YXJzWydVQk9PVF9TSUdO X0VOQUJMRSddCj4gwqDCoMKgwqDCoMKgwqDCoCB1Ym9vdF9zaWduX2ltZ19rZXluYW1lID0gYmJf dmFyc1snVUJPT1RfU0lHTl9JTUdfS0VZTkFNRSddCj4gwqDCoMKgwqDCoMKgwqDCoCB1Ym9vdF9z aWduX2tleW5hbWUgPSBiYl92YXJzWydVQk9PVF9TSUdOX0tFWU5BTUUnXQo+IEBAIC03MjIsNiAr NzM3LDEwIEBAIGNsYXNzIEtlcm5lbEZpdEltYWdlQmFzZShGaXRJbWFnZVRlc3RDYXNlKToKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiTG9hZCBBZGRyZXNzIjogYmJfdmFyc1sn VUJPT1RfUkRfTE9BREFERFJFU1MnXSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAiRW50cnkgUG9pbnQiOiBiYl92YXJzWydVQk9PVF9SRF9FTlRSWVBPSU5UJ10KPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqDCoCAjIENyZWF0ZSBvbmUgc2VjdGlv biBwZXIgbG9hZGFibGUgKGRvIG5vdCBjaGVjayB0aGUgdmFsdWUgb2YKPiAiVHlwZSIgYXMKPiAr wqDCoMKgwqDCoMKgwqAgIyBmbGFncyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGJi X3ZhcnMpCj4gK8KgwqDCoMKgwqDCoMKgIGZvciBsb2FkYWJsZSBpbiBsb2FkYWJsZXM6Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVxX3NlY3Rpb25zW2xvYWRhYmxlXSA9IHsgIlR5cGUiOiBO b25lIH0KPiDCoMKgwqDCoMKgwqDCoMKgICMgQ3JlYXRlIGEgY29uZmlndXJhdGlvbiBzZWN0aW9u IGZvciBlYWNoIERUQgo+IMKgwqDCoMKgwqDCoMKgwqAgaWYgZHRiX2ZpbGVzOgo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBmb3IgZHRiIGluIGR0Yl9maWxlcyArIGR0Yl9zeW1saW5rczoKPiBA QCAtNzQxLDYgKzc2MCw4IEBAIGNsYXNzIEtlcm5lbEZpdEltYWdlQmFzZShGaXRJbWFnZVRlc3RD YXNlKToKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiBpbml0cmFtZnNfaW1hZ2UgYW5kIGluaXRy YW1mc19pbWFnZV9idW5kbGUgIT0KPiAiMSI6Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXFfc2VjdGlvbnNbY29uZl9uYW1lXVsnSW5pdCBSYW1kaXNrJ10gPQo+ ICJyYW1kaXNrLTEiCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiBsb2FkYWJs ZXM6Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlcV9zZWN0aW9u c1tjb25mX25hbWVdWydMb2FkYWJsZXMnXSA9Cj4gIiwiLmpvaW4obG9hZGFibGVzKQo+IMKgwqDC oMKgwqDCoMKgwqAgZWxzZToKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZl9uYW1lID0g YmJfdmFyc1snRklUX0NPTkZfUFJFRklYJ10gK8KgICcxJwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXFfc2VjdGlvbnNbY29uZl9uYW1lXSA9IHsKPiBAQCAtNzQ4LDYgKzc2OSw4IEBAIGNs YXNzIEtlcm5lbEZpdEltYWdlQmFzZShGaXRJbWFnZVRlc3RDYXNlKToKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiBpbml0cmFtZnNfaW1h Z2UgYW5kIGluaXRyYW1mc19pbWFnZV9idW5kbGUgIT0gIjEiOgo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJlcV9zZWN0aW9uc1tjb25mX25hbWVdWydJbml0IFJhbWRpc2snXSA9 ICJyYW1kaXNrLQo+IDEiCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgbG9hZGFibGVzOgo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVxX3NlY3Rpb25zW2NvbmZfbmFtZV1b J0xvYWRhYmxlcyddID0KPiAiLCIuam9pbihsb2FkYWJsZXMpCj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgICMgQWRkIHNpZ25pbmcgcmVsYXRlZCBwcm9wZXJ0aWVzIGlmIG5lZWRlZAo+IMKgwqDCoMKg wqDCoMKgwqAgaWYgdWJvb3Rfc2lnbl9lbmFibGUgPT0gIjEiOgo+IEBAIC04MzIsNiArODU1LDgg QEAgY2xhc3MKPiBLZXJuZWxGaXRJbWFnZVJlY2lwZVRlc3RzKEtlcm5lbEZpdEltYWdlQmFzZSk6 Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluIHRoZSBJbWFn ZSBUcmVlIFNvdXJjZS4gTm90IGFsbCB0aGUgZmllbGRzCj4gYXJlIHRlc3RlZCwKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb25seSB0aGUga2V5IGZpZWxkcyB0 aGF0IHdvbnQgdmFyeSBiZXR3ZWVuCj4gZGlmZmVyZW50Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFyY2hpdGVjdHVyZXMuCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMy4gVGhlIHR5cGUgdmFsdWUgb2YgZWFjaCBsb2FkYWJs ZSBpcyBhcwo+IGV4cGVjdGVkIGluIHRoZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEltYWdlIFRyZWUgU291cmNlLgo+IMKgwqDCoMKgwqDCoMKgwqAgUHJvZHVj dDrCoMKgwqDCoCBvZS1jb3JlCj4gwqDCoMKgwqDCoMKgwqDCoCBBdXRob3I6wqDCoMKgwqDCoCBV c2FtYSBBcmlmIDx1c2FtYS5hcmlmQGFybS5jb20+Cj4gwqDCoMKgwqDCoMKgwqDCoCAiIiIKPiBA QCAtODQ5LDYgKzg3NCwxNCBAQCBVQk9PVF9MT0FEQUREUkVTUyA9ICIweDgwMDgwMDAwIgo+IMKg VUJPT1RfRU5UUllQT0lOVCA9ICIweDgwMDgwMDAwIgo+IMKgRklUX0RFU0MgPSAiQSBtb2RlbCBk ZXNjcmlwdGlvbiIKPiDCoEZJVF9DT05GX1BSRUZJWCA9ICJmb28tIgo+ICsjIFVzZSB0aGUgbGlu dXguYmluIGtlcm5lbCBpbWFnZSBhcyBsb2FkYWJsZSBmaWxlIHRvIGF2b2lkIGJ1aWxkaW5nCj4g b3RoZXIgY29tcG9uZW50cwo+ICtGSVRfTE9BREFCTEVTID0gImxvYWRhYmxlMSBsb2FkYWJsZTIi Cj4gK0ZJVF9MT0FEQUJMRV9GSUxFTkFNRVtsb2FkYWJsZTFdID0gImxpbnV4LmJpbiIKPiArRklU X0xPQURBQkxFX0xPQURBRERSRVNTW2xvYWRhYmxlMV0gPSAiMHg4NjAwMDAwMCIKPiArRklUX0xP QURBQkxFX1RZUEVbbG9hZGFibGUxXSA9ICJmaXJtd2FyZSIKPiArRklUX0xPQURBQkxFX0ZJTEVO QU1FW2xvYWRhYmxlMl0gPSAibGludXguYmluIgo+ICtGSVRfTE9BREFCTEVfTE9BREFERFJFU1Nb bG9hZGFibGUyXSA9ICIweDg3MDAwMDAwIgo+ICtGSVRfTE9BREFCTEVfVFlQRVtsb2FkYWJsZTJd ID0gImZpcm13YXJlIgo+IMKgIiIiCj4gwqDCoMKgwqDCoMKgwqDCoCBjb25maWcgPSBzZWxmLl9j b25maWdfYWRkX2tlcm5lbF9jbGFzc2VzKGNvbmZpZykKPiDCoMKgwqDCoMKgwqDCoMKgIHNlbGYu d3JpdGVfY29uZmlnKGNvbmZpZykKPiBAQCAtMTEyMyw2ICsxMTU2LDcgQEAgY2xhc3MgRml0SW1h Z2VQeVRlc3RzKEtlcm5lbEZpdEltYWdlQmFzZSk6Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICdGSVRfS0VZX0dFTlJTQV9BUkdTJzogIi1GNCIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICdGSVRfS0VZX1JFUV9BUkdTJzogIi1iYXRjaCAtbmV3IiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgJ0ZJVF9LRVlfU0lHTl9QS0NTJzogIi14NTA5IiwKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAnRklUX0xPQURBQkxFUyc6ICIiLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAnRklU X0xJTlVYX0JJTic6ICJsaW51eC5iaW4iLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAnRklU X1BBRF9BTEcnOiAicGtjcy0xLjUiLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAnRklUX1NJ R05fQUxHJzogInJzYTIwNDgiLAo+IEBAIC0xMTk4LDYgKzEyMzIsMTIgQEAgY2xhc3MgRml0SW1h Z2VQeVRlc3RzKEtlcm5lbEZpdEltYWdlQmFzZSk6Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgImNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiLAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGJiX3ZhcnMuZ2V0KCJVQk9PVF9SRF9MT0FEQUREUkVTUyIpLAo+ IGJiX3ZhcnMuZ2V0KCJVQk9PVF9SRF9FTlRSWVBPSU5UIikpCj4gwqAKPiArwqDCoMKgwqDCoMKg wqAgbG9hZGFibGVzID0gRml0SW1hZ2VUZXN0Q2FzZS5fZ2V0X2xvYWRhYmxlcyhiYl92YXJzKQo+ ICvCoMKgwqDCoMKgwqDCoCBmb3IgbG9hZGFibGUgaW4gbG9hZGFibGVzOgo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJvb3Rfbm9kZS5maXRpbWFnZV9lbWl0X3NlY3Rpb25fbG9hZGFibGUobG9h ZGFibGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiYS1kaXIvbG9hZGFibGUt JXMiICUgbG9hZGFibGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAibG9hZGFi bGUtdHlwZSIpCj4gKwo+IMKgwqDCoMKgwqDCoMKgwqAKPiByb290X25vZGUuZml0aW1hZ2VfZW1p dF9zZWN0aW9uX2NvbmZpZyhiYl92YXJzWydGSVRfQ09ORl9ERUZBVUxUX0RUQicKPiBdLCBiYl92 YXJzLmdldCgnRklUX0NPTkZfTUFQUElOR1MnKSkKPiDCoMKgwqDCoMKgwqDCoMKgIHJvb3Rfbm9k ZS53cml0ZV9pdHNfZmlsZShmaXRpbWFnZV9pdHNfcGF0aCkKPiDCoAo+IEBAIC0xMjU0LDYgKzEy OTQsMTMgQEAgY2xhc3MgRml0SW1hZ2VQeVRlc3RzKEtlcm5lbEZpdEltYWdlQmFzZSk6Cj4gwqDC oMKgwqDCoMKgwqDCoCB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJCSGFuZGxlZEV4Y2VwdGlvbik6 Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlbGYuX3Rlc3RfZml0aW1hZ2VfcHkoYmJfdmFy c19vdmVycmlkZXMpCj4gwqAKPiArwqDCoMKgIGRlZiB0ZXN0X2ZpdGltYWdlX3B5X2NvbmZfbG9h ZGFibGVzKHNlbGYpOgo+ICvCoMKgwqDCoMKgwqDCoCAiIiJUZXN0IEZJVF9MT0FEQUJMRVMgYmFz aWMgZnVuY3Rpb25hbGl0eSIiIgo+ICvCoMKgwqDCoMKgwqDCoCBiYl92YXJzX292ZXJyaWRlcyA9 IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAnRklUX0xPQURBQkxFUyc6ICJteS1sb2FkYWJs ZSIsCj4gK8KgwqDCoMKgwqDCoMKgIH0KPiArwqDCoMKgwqDCoMKgwqAgc2VsZi5fdGVzdF9maXRp bWFnZV9weShiYl92YXJzX292ZXJyaWRlcykKPiArCj4gwqAKPiDCoGNsYXNzIFVCb290Rml0SW1h Z2VUZXN0cyhGaXRJbWFnZVRlc3RDYXNlKToKPiDCoMKgwqDCoCAiIiJUZXN0IGNhc2VzIGZvciB0 aGUgdWJvb3Qtc2lnbiBiYmNsYXNzIiIiCj4gCj4gCj4gLT0tPS09LT0tPS09LT0tPS09LT0tPS0K PiBMaW5rczogWW91IHJlY2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhpcyBncm91cC4KPiBW aWV3L1JlcGx5IE9ubGluZSAoIzIzMjExOCk6Cj4gaHR0cHM6Ly9saXN0cy5vcGVuZW1iZWRkZWQu b3JnL2cvb3BlbmVtYmVkZGVkLWNvcmUvbWVzc2FnZS8yMzIxMTgKPiBNdXRlIFRoaXMgVG9waWM6 IGh0dHBzOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9tdC8xMTgwNTE1MDcvNDQ1NDU4Mgo+IEdy b3VwIE93bmVyOiBvcGVuZW1iZWRkZWQtY29yZStvd25lckBsaXN0cy5vcGVuZW1iZWRkZWQub3Jn Cj4gVW5zdWJzY3JpYmU6Cj4gaHR0cHM6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL2cvb3BlbmVt YmVkZGVkLWNvcmUvdW5zdWLCoFsKPiBhZHJpYW4uZnJlaWhvZmVyQGdtYWlsLmNvbV0KPiAtPS09 LT0tPS09LT0tPS09LT0tPS09LQo=