From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: Re: [PATCH v3 14/16] x86/boot: implement early command line parser in C Date: Wed, 25 May 2016 23:36:42 +0200 Message-ID: <20160525213642.GQ5490@olila.local.net-space.pl> References: <1460723596-13261-1-git-send-email-daniel.kiper@oracle.com> <1460723596-13261-15-git-send-email-daniel.kiper@oracle.com> <57459BB202000078000EE9E7@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b5gUJ-0002e5-HY for xen-devel@lists.xenproject.org; Wed, 25 May 2016 21:37:11 +0000 Content-Disposition: inline In-Reply-To: <57459BB202000078000EE9E7@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Juergen Gross , stefano.stabellini@eu.citrix.com, andrew.cooper3@citrix.com, cardoe@cardoe.com, pgnet.dev@gmail.com, ning.sun@intel.com, david.vrabel@citrix.com, xen-devel@lists.xenproject.org, qiaowei.ren@intel.com, richard.l.maliszewski@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBNYXkgMjUsIDIwMTYgYXQgMDQ6MzM6NTRBTSAtMDYwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4gPj4+IE9uIDE1LjA0LjE2IGF0IDE0OjMzLCA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+ IHdyb3RlOgo+ID4gLS0tIGEveGVuL2FyY2gveDg2L2Jvb3QvYnVpbGQzMi5sZHMKPiA+ICsrKyBi L3hlbi9hcmNoL3g4Ni9ib290L2J1aWxkMzIubGRzCj4gPiBAQCAtMjUsNiArMjUsNyBAQCBTRUNU SU9OUwo+ID4gICAgICAgICAgKigudGV4dCkKPiA+ICAgICAgICAgICooLnRleHQuKikKPiA+ICAg ICAgICAgICooLnJvZGF0YSkKPiA+ICsgICAgICAgICooLnJvZGF0YS4qKQo+ID4gICAgfQo+Cj4g SW50ZXJlc3RpbmcgLSBkaWRuJ3QgeW91IHNheSB5b3UgZG9uJ3Qgd2FudCB0aGlzIGZvciBub3c/ CgpZZXAsIGhvd2V2ZXIsIEkgYWxzbyBzYWlkIHRoYXQgd2Ugc2hvdWxkIGFkZCAiKigucm9kYXRh LiopIgppZiBpdCBpcyBuZWVkZWQuIEFuZCBpdCBpcyBuZWVkZWQgaGVyZS4KCj4gPiAtLS0gL2Rl di9udWxsCj4gPiArKysgYi94ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5lLmMKPiA+IEBAIC0wLDAg KzEsMzU3IEBACj4gPiArLyoKPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTUsIDIwMTYgT3JhY2xl IGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiA+ICsgKiAgICAg IERhbmllbCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+Cj4gPiArICoKPiA+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQo+ID4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4gPiArICogdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiA+ICsgKiAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ID4gKyAqCj4gPiArICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Cj4gPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKPiA+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gPiArICogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiA+ICsgKgo+ID4gKyAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCj4g PiArICogd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCj4gPiArICoKPiA+ICsgKiBzdHJsZW4oKSwgc3RybmNtcCgpLCBzdHJzcG4o KSBhbmQgc3RyY3NwbigpIHdlcmUgY29waWVkIGZyb20KPiA+ICsgKiBMaW51eCBrZXJuZWwgc291 cmNlIChsaW51eC9saWIvc3RyaW5nLmMpLgo+Cj4gQW55IHJlYXNvbiB5b3UgY2FuJ3QganVzdCAj aW5jbHVkZSAiLi4uL2NvbW1vbi9zdHJpbmcuYyIgaGVyZT8KCkkgYW0gY29uZnVzZWQuIFNvbWV0 aW1lcyB5b3UgcmVxdWVzdCB0byByZWR1Y2UgbnVtYmVyIG9mIHN1Y2ggc3RyYW5nZQppbmNsdWRl cyBhbmQgc29tZXRpbWVzIHlvdSBhc2sgbWUgdG8gZG8gc29tZXRoaW5nIGNvbnRyYXJ5PyBTbywg d2hhdAppcyB0aGUgcnVsZSBiZWhpbmQgdGhlc2UgcmVxdWVzdHM/CgpBZGRpdGlvbmFsbHksIHRo ZXJlIGlzIGEgY2hhbmNlIHRoYXQgZmluYWwgeGVuIEVMRiBmaWxlIHdpbGwgYmUKdW5uZWNlc3Nh cnkgbGFyZ2VyIGJlY2F1c2UgaXQgd2lsbCBjb250YWluIHVudXNlZCBmdW5jdGlvbnMuIFdhaXQs Cm1heWJlIHRoZXJlIGlzIGEgbGlua2VyIG9wdGlvbiB3aGljaCBhbGxvd3MgdXMgdG8gcmVtb3Zl IHVucmVmZXJlbmNlZApvYmplY3RzIGZyb20gZmluYWwgb3V0cHV0LgoKPiA+ICsvKgo+ID4gKyAq IFNwYWNlIGFuZCBUQUIgYXJlIG9idmlvdXMgZGVsaW1pdGVycy4gSG93ZXZlciwgSSBhbQo+ID4g KyAqIGFkZGluZyAiXG4iIGFuZCAiXHIiIGhlcmUgdG9vLiBKdXN0IGluIGNhc2Ugd2hlbgo+ID4g KyAqIGNyYXp5IGJvb3Rsb2FkZXIvdXNlciBwdXQgdGhlbSBzb21ld2hlcmUuCj4gPiArICovCj4g PiArI2RlZmluZSBERUxJTV9DSEFSUwkJIiBcblxyXHQiCj4gPiArI2RlZmluZSBERUxJTV9DSEFS U19DT01NQQlERUxJTV9DSEFSUyAiLCIKPgo+IHN0YXRpYyBjb25zdCBjaGFyW10gdmFyaWFibGVz IChvciByZWFsbHkganVzdCBvbmUsIHdpdGggdGhlIGNvbW1hIHB1dAo+IGZpcnN0IGFuZCB0aGUg bm9uLWNvbW1hIHZhcmlhbnQgaW5kZXhpbmcgaW50byB0aGF0IHZhcmlhYmxlIGJ5IDEpPwoKT0su Cgo+ID4gKyNkZWZpbmUgX19wYWNrZWQJX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpCj4KPiBO byB3YXkgdG8gaW5jbHVkZSBjb21waWxlci5oIGhlcmU/CgpEaXR0by4KCj4gPiArLyoKPiA+ICsg KiBDb21waWxlciBpcyBub3QgYWJsZSB0byBvcHRpbWl6ZSByZWd1bGFyIHN0cmxlbigpCj4gPiAr ICogaWYgYXJndW1lbnQgaXMgd2VsbCBrbm93biBzdHJpbmcgZHVyaW5nIGJ1aWxkLgo+ID4gKyAq IEhlbmNlLCBpbnRyb2R1Y2Ugb3B0aW1pemVkIHN0cmxlbl9vcHQoKS4KPiA+ICsgKi8KPiA+ICsj ZGVmaW5lIHN0cmxlbl9vcHQocykgKHNpemVvZihzKSAtIDEpCj4KPiBEbyB3ZSByZWFsbHkgY2Fy ZSBpbiB0aGlzIGNvZGU/CgpOb3QgdG8gc3Ryb25nbHkgYnV0IHdoeSBub3Q/Cgo+ID4gKy8qIEtl ZXAgaW4gc3luYyB3aXRoIHRyYW1wb2xpbmUuUzplYXJseV9ib290X29wdHMgbGFiZWwhICovCj4g PiArdHlwZWRlZiBzdHJ1Y3QgX19wYWNrZWQgewo+ID4gKyAgICB1OCBza2lwX3JlYWxtb2RlOwo+ ID4gKyAgICB1OCBvcHRfZWRkOwo+ID4gKyAgICB1OCBvcHRfZWRpZDsKPiA+ICsgICAgdTE2IGJv b3RfdmlkX21vZGU7Cj4gPiArICAgIHUxNiB2ZXNhX3dpZHRoOwo+ID4gKyAgICB1MTYgdmVzYV9o ZWlnaHQ7Cj4gPiArICAgIHUxNiB2ZXNhX2RlcHRoOwo+ID4gK30gZWFybHlfYm9vdF9vcHRzX3Q7 Cj4KPiBUaGlzICJrZWVwaW5nIGluIHN5bmMiIHNob3VsZCBiZSBhdXRvbWF0ZWQgaW4gc29tZSB3 YXksIGUuZy4gdmlhCj4gYSBuZXcgaGVhZGVyIGFuZCBzdWl0YWJsZSBtYWNyb2l6YXRpb24uCgpP Sy4KCj4gPiArc3RhdGljIGludCBzdHJ0b2koY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqc3Rv cCwgY29uc3QgY2hhciAqKm5leHQpCj4gPiArewo+ID4gKyAgICBpbnQgYmFzZSA9IDEwLCBpLCBv cmVzID0gMCwgcmVzID0gMDsKPgo+IFlvdSBkb24ndCBldmVuIGhhbmRsZSBhICctJyBvbiB0aGUg bnVtYmVycyBoZXJlLCBzbyBhbGwgdGhlIHZhcmlhYmxlcwoKWWVwLCBob3dldmVyLCAuLi4KCj4g YW5kIHRoZSBmdW5jdGlvbiByZXR1cm4gdHlwZSBzaG91bGQgYmUgdW5zaWduZWQgaW50IGFmYWlj dC4gQW5kIHRoZQo+IGZ1bmN0aW9uIG5hbWUgcGVyaGFwcyBiZSBzdHJ0b3VpKCkuCgouLi4gd2Ug cmV0dXJuIC0xIGluIGNhc2Ugb2YgZXJyb3IuCgo+ID4gKyAgICBpZiAoICpzID09ICcwJyApCj4g PiArICAgICAgYmFzZSA9ICh0b2xvd2VyKCorK3MpID09ICd4JykgPyAoKytzLCAxNikgOiA4Owo+ ID4gKwo+ID4gKyAgICBmb3IgKCA7ICpzICE9ICdcMCc7ICsrcyApCj4gPiArICAgIHsKPiA+ICsg ICAgICAgIGZvciAoIGkgPSAwOyBzdG9wICYmIHN0b3BbaV0gIT0gJ1wwJzsgKytpICkKPiA+ICsg ICAgICAgICAgICBpZiAoICpzID09IHN0b3BbaV0gKQo+ID4gKyAgICAgICAgICAgICAgICBnb3Rv IG91dDsKPgo+IHN0cmNocigpPwoKQ291bGQgYmUuCgo+ID4gKyAgICAgICAgaWYgKCAqcyA8ICcw JyB8fCAoKnMgPiAnNycgJiYgYmFzZSA9PSA4KSApCj4gPiArICAgICAgICB7Cj4gPiArICAgICAg ICAgICAgcmVzID0gLTE7Cj4gPiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiArICAgICAgICB9 Cj4gPiArCj4gPiArICAgICAgICBpZiAoICpzID4gJzknICYmIChiYXNlICE9IDE2IHx8IHRvbG93 ZXIoKnMpIDwgJ2EnIHx8IHRvbG93ZXIoKnMpID4gJ2YnKSApCj4gPiArICAgICAgICB7Cj4gPiAr ICAgICAgICAgICAgcmVzID0gLTE7Cj4gPiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiArICAg ICAgICB9Cj4gPiArCj4gPiArICAgICAgICByZXMgKj0gYmFzZTsKPiA+ICsgICAgICAgIHJlcyAr PSAodG9sb3dlcigqcykgPj0gJ2EnKSA/ICh0b2xvd2VyKCpzKSAtICdhJyArIDEwKSA6ICgqcyAt ICcwJyk7Cj4KPiBXaXRoIHRoZSBmb3VyIGluc3RhbmNlcywgaG93IGFib3V0IGxhdGNoaW5nIHRv bG93ZXIoKnMpIGludG8gYSBsb2NhbAo+IHZhcmlhYmxlPwoKTWFrZSBzZW5zZS4KCj4gPiArc3Rh dGljIHU4IHNraXBfcmVhbG1vZGUoY29uc3QgY2hhciAqY21kbGluZSkKPiA+ICt7Cj4gPiArICAg IHJldHVybiAhIWZpbmRfb3B0KGNtZGxpbmUsICJuby1yZWFsLW1vZGUiLCAwKSB8fCAhIWZpbmRf b3B0KGNtZGxpbmUsICJ0Ym9vdD0iLCAxKTsKPgo+IFRoZSB8fCBtYWtlcyB0aGUgdHdvICEhIHBv aW50bGVzcy4KPgo+IEFsc28gcGxlYXNlIHNldHRsZSBvbiB3aGljaCB0eXBlIHlvdSB3YW50IHRv IHVzZSBmb3IgYm9vbGVhbgo+IChmaW5kX29wdCgpJ3MgbGFzdCBwYXJhbWV0ZXIgaXMgImludCIs IHlldCBoZXJlIHlvdSB1c2UgInU4IiksIGFuZAoKQ291bGQgYmUgdTguCgo+IHBlcmhhcHMgbWFr ZSB5b3Vyc2VsZiBhIGJvb2xfdC4KCkkgZG8gbm90IHRoaW5rIGl0IG1ha2Ugc2Vuc2UgaGVyZS4K Cj4gPiArc3RhdGljIHZvaWQgdmdhX3BhcnNlKGNvbnN0IGNoYXIgKmNtZGxpbmUsIGVhcmx5X2Jv b3Rfb3B0c190ICplYm8pCj4gPiArewo+ID4gKyAgICBjb25zdCBjaGFyICpjOwo+ID4gKyAgICBp bnQgdG1wOwo+ID4gKwo+ID4gKyAgICBjID0gZmluZF9vcHQoY21kbGluZSwgInZnYT0iLCAxKTsK PiA+ICsKPiA+ICsgICAgaWYgKCAhYyApCj4gPiArICAgICAgICByZXR1cm47Cj4gPiArCj4gPiAr ICAgIGViby0+Ym9vdF92aWRfbW9kZSA9IEFTS19WR0E7Cj4gPiArCj4gPiArICAgIGlmICggIXN0 cm1heGNtcChjLCAiY3VycmVudCIsIERFTElNX0NIQVJTX0NPTU1BKSApCj4gPiArICAgICAgICBl Ym8tPmJvb3RfdmlkX21vZGUgPSBWSURFT19DVVJSRU5UX01PREU7Cj4gPiArICAgIGVsc2UgaWYg KCAhc3Ryc3ViY21wKGMsICJ0ZXh0LTgweCIpICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgYyAr PSBzdHJsZW5fb3B0KCJ0ZXh0LTgweCIpOwo+ID4gKyAgICAgICAgZWJvLT5ib290X3ZpZF9tb2Rl ID0gcm93czJ2bW9kZShzdHJ0b2koYywgREVMSU1fQ0hBUlNfQ09NTUEsIE5VTEwpKTsKPiA+ICsg ICAgfQo+ID4gKyAgICBlbHNlIGlmICggIXN0cnN1YmNtcChjLCAiZ2Z4LSIpICkKPiA+ICsgICAg ewo+ID4gKyAgICAgICAgdG1wID0gc3RydG9pKGMgKyBzdHJsZW5fb3B0KCJnZngtIiksICJ4Iiwg JmMpOwo+ID4gKwo+ID4gKyAgICAgICAgaWYgKCB0bXAgPCAwIHx8IHRtcCA+IFUxNl9NQVggKQo+ ID4gKyAgICAgICAgICAgIHJldHVybjsKPiA+ICsKPiA+ICsgICAgICAgIGViby0+dmVzYV93aWR0 aCA9IHRtcDsKPiA+ICsKPiA+ICsgICAgICAgIC8qCj4gPiArICAgICAgICAgKiBJbmNyZW1lbnQg YyBvdXRzaWRlIG9mIHN0cnRvaSgpIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUKPiA+ICsgICAgICAg ICAqIGNvbXBpbGVyIG1heSBjb21wbGFpbiB3aXRoIGZvbGxvd2luZyBtZXNzYWdlOgo+ID4gKyAg ICAgICAgICogd2FybmluZzogb3BlcmF0aW9uIG9uIOKAmGPigJkgbWF5IGJlIHVuZGVmaW5lZC4K PiA+ICsgICAgICAgICAqLwo+ID4gKyAgICAgICAgKytjOwo+ID4gKyAgICAgICAgdG1wID0gc3Ry dG9pKGMsICJ4IiwgJmMpOwo+Cj4gVGhlIGNvbW1lbnQgaXMgcG9pbnRsZXNzIC0gdGhlIG9wZXJh dGlvbiBpcyBmaXJtbHkgdW5kZWZpbmVkIGlmIHlvdQo+IHB1dCBpdCBpbiB0aGUgc3RydG9pKCkg aW52b2NhdGlvbi4KCkluIHRlcm1zIG9mIEMgc3BlYyB5b3UgYXJlIHJpZ2h0LiBIb3dldmVyLCBp dCBpcyBxdWl0ZSBzdXJwcmlzaW5nIHRoYXQgb2xkZXIKR0NDIGNvbXBsYWlucyBhbmQgbmV3ZXIg b25lcyBkbyBub3QuIFNob3VsZCBub3Qgd2UgaW52ZXN0aWdhdGUgdGhpcz8KCj4gPiArICAgICAg ICBpZiAoIHRtcCA8IDAgfHwgdG1wID4gVTE2X01BWCApCj4gPiArICAgICAgICAgICAgcmV0dXJu Owo+ID4gKwo+ID4gKyAgICAgICAgZWJvLT52ZXNhX2hlaWdodCA9IHRtcDsKPiA+ICsKPiA+ICsg ICAgICAgIHRtcCA9IHN0cnRvaSgrK2MsIERFTElNX0NIQVJTX0NPTU1BLCBOVUxMKTsKPiA+ICsK PiA+ICsgICAgICAgIGlmICggdG1wIDwgMCB8fCB0bXAgPiBVMTZfTUFYICkKPiA+ICsgICAgICAg ICAgICByZXR1cm47Cj4gPiArCj4gPiArICAgICAgICBlYm8tPnZlc2FfZGVwdGggPSB0bXA7Cj4g PiArCj4gPiArICAgICAgICBlYm8tPmJvb3RfdmlkX21vZGUgPSBWSURFT19WRVNBX0JZX1NJWkU7 Cj4KPiBJIHJlYWxpemUgdGhpcyBpcyByZWZsZWN0aW5nIG9yaWdpbmFsIGJlaGF2aW9yLCBidXQg bm93IHRoYXQgeW91IGRvIGl0IGluCj4gQywgcGxlYXNlIGxldmVyYWdlIHRoYXQgZmFjdCBhbmQg ZGVmZXIgc3RvcmluZyB3aWR0aCBhbmQgaGVpZ2h0IHVudGlsCj4geW91IGtub3cgdGhlIGVudGly ZSBvcHRpb24gd2FzIGdvb2QuCgpPSy4KCj4gPiAtLS0gYS94ZW4vYXJjaC94ODYvYm9vdC9oZWFk LlMKPiA+ICsrKyBiL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUwo+ID4gQEAgLTQzNiw4ICs0MzYs MjQgQEAgdHJhbXBvbGluZV9zZXR1cDoKPiA+ICAgICAgICAgIGNtcCAgICAgJHN5bV9waHlzKF9f dHJhbXBvbGluZV9zZWdfc3RvcCksJWVkaQo+ID4gICAgICAgICAgamIgICAgICAxYgo+ID4KPiA+ ICsgICAgICAgIC8qIERvIG5vdCBwYXJzZSBjb21tYW5kIGxpbmUgb24gRUZJIHBsYXRmb3JtIGhl cmUuICovCj4gPiArICAgICAgICBjbXBiICAgICQxLHN5bV9waHlzKHNraXBfcmVhbG1vZGUpCj4g PiArICAgICAgICBqZSAgICAgIDFmCj4KPiBEb2Vzbid0IHRoaXMgYmVsb25nIGluIGFuIGVhcmxp ZXIgcGF0Y2g/IEl0IGNlcnRhaW5seSBkb2Vzbid0IGdldAo+IG1vdmVkIGhlcmUgZnJvbSBjbWRs aW5lLlMuCgpQb3RlbnRpYWxseS4KCj4gPiArICAgICAgICAvKiBCYWlsIGlmIHRoZXJlIGlzIG5v IGNvbW1hbmQgbGluZSB0byBwYXJzZS4gKi8KPiA+ICsgICAgICAgIG1vdiAgICAgc3ltX3BoeXMo bXVsdGlib290X3B0ciksJWVieAo+ID4gKyAgICAgICAgdGVzdGwgICAkTUJJX0NNRExJTkUsTUJf ZmxhZ3MoJWVieCkKPiA+ICsgICAgICAgIGp6ICAgICAgMWYKPiA+ICsKPiA+ICsgICAgICAgIGNt cGwgICAgJDAsTUJfY21kbGluZSglZWJ4KQo+ID4gKyAgICAgICAganogICAgICAxZgo+Cj4gQW55 IHJlYXNvbiBub3QgdG8gbGVhdmUgYXQgbGVhc3QgdGhpcyBjaGVjayB0byB0aGUgQyBjb2RlPwoK T0suCgo+ID4gKyAgICAgICAgcHVzaGwgICAkc3ltX3BoeXMoZWFybHlfYm9vdF9vcHRzKQo+ID4g KyAgICAgICAgcHVzaGwgICBNQl9jbWRsaW5lKCVlYngpCj4gPiAgICAgICAgICBjYWxsICAgIGNt ZGxpbmVfcGFyc2VfZWFybHkKPiA+ICsgICAgICAgIGFkZCAgICAgJDgsJWVzcCAgICAgICAgICAg ICAvKiBSZW1vdmUgY21kbGluZV9wYXJzZV9lYXJseSgpIGFyZ3MgZnJvbSBzdGFjay4gKi8KPgo+ IEkgZG9uJ3QgdGhpbmsgc3VjaCBhIGNvbW1lbnQgaXMgcmVhbGx5IHVzZWZ1bCAoc2VlbXMgbGlr ZSBJIG92ZXJsb29rZWQKPiBhIHNpbWlsYXIgb25lIGluIGFuIGVhcmxpZXIgcGF0Y2gsIG9uIHRo ZSByZWxvYygpIGludm9jYXRpb24pLgoKVGhpcyB0aGluZyBpcyBxdWl0ZSBvYnZpb3VzIGJ1dCBJ IGRvIG5vdCB0aGluayB0aGF0IHRoaXMgY29tbWVudCBodXJ0cy4KCkRhbmllbAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK