From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH][RFC] Allowing QEMU to directly execute a directory (and storing command line options in it) Date: Fri, 31 Aug 2007 13:54:17 -0500 Message-ID: <1188586457.8543.2.camel@squirrel> References: <59abf66e0708311119p2b83fcffg31fac1c298cfc10a@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org, qemu-devel-qX2TKyscuCcdnm+yROfE0A@public.gmane.org To: Jorge =?ISO-8859-1?Q?Luc=E1ngeli?= Obes Return-path: In-Reply-To: <59abf66e0708311119p2b83fcffg31fac1c298cfc10a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org SXQgbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHBhc3MgYSBkaXJlY3Rvcnkgd2hlbiB5b3UgY2FuIHBh c3MgYSBjb25maWcKZmlsZSBhbmQgYXNzdW1lIHRoYXQgdGhlIGRpcmVjdG9yeSB0aGUgY29uZmln IGZpbGUgaXMgaW4gaXMgdGhlIENXRC4KCkZvciBpbnN0YW5jZSwgaWYgdm0uY2ZnIGNvbnRhaW5l ZCBqdXN0IHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLCB5b3UKY291bGQgaGF2ZToKCk15SW1h Z2Uvdm0uY2ZnOiAgICAgICAgLWhkYSBkaXNrMC5xY293IC1tIDUxMgpNeUltYWdlL2Rpc2swLnFj b3c6ICAgIDxkaXNrIGltYWdlPgoKQW5kIHRoZW4gZG86CgpxZW11IC1jIE15SW1hZ2Uvdm0uY2Zn CgpSZWdhcmRzLAoKQW50aG9ueSBMaWd1b3JpCgoKT24gRnJpLCAyMDA3LTA4LTMxIGF0IDE1OjE5 IC0wMzAwLCBKb3JnZSBMdWPDoW5nZWxpIE9iZXMgd3JvdGU6Cj4gSGkgYWxsLAo+IAo+IFRoZSBs YXN0IHRpbWUgdGhpcyBpc3N1ZSB3YXMgZGlzY3Vzc2VkLCB0aGUgZXhlY3V0YWJsZS1kaXJlY3Rv cnkgaWRlYQo+IGdhaW5lZCBtb3JlIGNvbnNlbnN1cyB0aGFuIHRoZSBzbmFwc2hvdC1iYXNlZCBp ZGVhLiBUaGlzIHBhdGNoCj4gaW1wbGVtZW50cyBteSBwZXJjZXB0aW9uIG9mIHRoZSBmaXJzdCBp ZGVhLiBOb24tV2luZG93cyBmb3Igbm93LCBhcyBJCj4gY2FuJ3QgdGVzdCBvbiBhIFdpbmRvd3Mg c3lzdGVtLiBTdWdnZXN0aW9ucyBhbmQgY29uc3RydWN0aXZlIGNyaXRpY2lzbQo+IG1vcmUgdGhh biB3ZWxjb21lLgo+IAo+IENoZWVycywKPiBKb3JnZQo+IAo+IFRoaXMgcGF0Y2ggYWxsb3dzIFFF TVUgdG8gZXhlY3V0ZSBhIGRpcmVjdG9yeSB3aXRoIGEgc3BlY2lhbCBmb3JtYXQuCj4gCj4gVGhp cyBwYXRjaCBhbGxvd3Mgc3RvcmluZyBjb21tYW5kIGxpbmUgb3B0aW9ucyBpbiBhIGNvbmZpZ3Vy YXRpb24gZmlsZSBpbnNpZGUKPiBhIGRpcmVjdG9yeSBhbmQgdGhlbiBkaXJlY3RseSBleGVjdXRp bmcgdGhhdCBkaXJlY3RvcnkuIEEgc2ltcGxlIGNoZWNrIGlzCj4gaW5jbHVkZWQgdG8gcHJldmVu dCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHRvIGFjY2VzcyBpbWFnZSBmaWxlcyBvdXRzaWRlCj4g dGhlIGV4ZWN1dGVkIGRpcmVjdG9yeS4gRXh0cmEgY29tbWFuZCBsaW5lIG9wdGlvbnMgY2FuIGJl IHBhc3NlZCBvbiBpbnZvY2F0aW9uLAo+IHdoaWNoIHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIg dGhlIG9uZXMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCj4gCj4gVGhlIGNvbmZp Z3VyYXRpb24gZmlsZSBzcGVjaWZpZXMsIG9uIGl0cyBmaXJzdCBsaW5lLCB0aGUgaW1hZ2UgZmls ZSB0byB1c2UuCj4gVGhlIHJlc3Qgb2YgdGhlIGZpbGUgc3BlY2lmaWVzIGNvbW1hbmQgbGluZSBv cHRpb25zIHNlcGFyYXRlZCBieSBzcGFjZXMgb3IKPiBuZXdsaW5lcy4gQ2FyZWZ1bCByZWNvbnN0 cnVjdGlvbiBvZiB0aGUgY29tbWFuZCBsaW5lIG1ha2VzIHN1cmUgdGhlIHNwZWZpY2llZAo+IGlt YWdlIGZpbGUgZ2V0cyBleGVjdXRlZCBldmVuIGlmIG90aGVyIGltYWdlIGZpbGVzIHdlcmUgaW5j bHVkZWQgbGF0ZXIgaW4gdGhlCj4gY29uZmlndXJhdGlvbiBmaWxlLgo+IAo+IFNpZ25lZC1vZmYt Ynk6IEpvcmdlIEx1Y8OhbmdlbGkgT2Jlcwo+IC0tLQo+IGRpZmYgLS1naXQgYS9xZW11L3ZsLmMg Yi9xZW11L3ZsLmMKPiBpbmRleCBmY2M4OTliLi44OGNlZmQyIDEwMDY0NAo+IC0tLSBhL3FlbXUv dmwuYwo+ICsrKyBiL3FlbXUvdmwuYwo+IEBAIC00Miw4ICs0Miw4IEBACj4gICNpbmNsdWRlIDxu ZXRpbmV0L2luLmg+Cj4gICNpbmNsdWRlIDxkaXJlbnQuaD4KPiAgI2luY2x1ZGUgPG5ldGRiLmg+ Cj4gLSNpZmRlZiBfQlNECj4gICNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsjaWZkZWYgX0JTRAo+ ICAjaWZuZGVmIF9fQVBQTEVfXwo+ICAjaW5jbHVkZSA8bGlidXRpbC5oPgo+ICAjZW5kaWYKPiBA QCAtNjM2Nyw5ICs2MzY3LDE2IEBAIGludCBtYWluX2xvb3Aodm9pZCkKPiAgdm9pZCBoZWxwKHZv aWQpCj4gIHsKPiAgICAgIHByaW50ZigiUUVNVSBQQyBlbXVsYXRvciB2ZXJzaW9uICIgUUVNVV9W RVJTSU9OICIsIENvcHlyaWdodCAoYykKPiAyMDAzLTIwMDcgRmFicmljZSBCZWxsYXJkXG4iCj4g LSAgICAgICAgICAgInVzYWdlOiAlcyBbb3B0aW9uc10gW2Rpc2tfaW1hZ2VdXG4iCj4gKyAgICAg ICAgICAgInVzYWdlOiAlcyBbb3B0aW9uc10gW2Rpc2tfaW1hZ2V8Zm9sZGVyXVxuIgo+ICAgICAg ICAgICAgICJcbiIKPiArI2lmZGVmIF9XSU4zMgo+ICAgICAgICAgICAgICInZGlza19pbWFnZScg aXMgYSByYXcgaGFyZCBpbWFnZSBpbWFnZSBmb3IgSURFIGhhcmQgZGlzayAwXG4iCj4gKyNlbHNl Cj4gKyAgICAgICAgICAgIidkaXNrX2ltYWdlJyBpcyBhIHJhdyBoYXJkIGltYWdlIGltYWdlIGZv ciBJREUgaGFyZCBkaXNrIDAgb3JcbiIKPiArICAgICAgICAgICAiJ2ZvbGRlcicgaXMgYSBmb2xk ZXIgd2l0aCBhIGZpbGUgJ2NvbmZpZycgY29udGFpbmluZyBpbgo+IHRoZSBmaXJzdCBsaW5lXG4i Cj4gKyAgICAgICAgICAgInRoZSBuYW1lIG9mIGFuIGltYWdlIGZpbGUgaW5zaWRlIHRoZSBmb2xk ZXIgYW5kIGluIHRoZQo+IHJlc3Qgb2YgdGhlIGZpbGVcbiIKPiArICAgICAgICAgICAib3B0aW9u cyBzZXBhcmF0ZWQgYnkgJyAnIG9yICdcXG4nXG4iCj4gKyNlbmRpZgo+ICAgICAgICAgICAgICJc biIKPiAgICAgICAgICAgICAiU3RhbmRhcmQgb3B0aW9uczpcbiIKPiAgICAgICAgICAgICAiLU0g bWFjaGluZSAgICAgIHNlbGVjdCBlbXVsYXRlZCBtYWNoaW5lICgtTSA/IGZvciBsaXN0KVxuIgo+ IEBAIC02ODkyLDYgKzY4OTksMjAgQEAgdm9pZCBxZW11X2dldF9sYXVuY2hfaW5mbyhpbnQgKmFy Z2MsIGNoYXIKPiAqKiphcmd2LCBpbnQgKm9wdF9kYWVtb25pemUsIGNvbnN0IGNoYQo+ICAgICAg Km9wdF9pbmNvbWluZyA9IGluY29taW5nOwo+ICB9Cj4gCj4gK2NoYXIgKmRpcl9maWxlX2NhdChj b25zdCBjaGFyICpmb2xkZXIsIGNvbnN0IGNoYXIgKmZpbGUpIHsKPiArICAgIGludCBmb2xkbGVu ID0gc3RybGVuKGZvbGRlcik7Cj4gKyAgICBpbnQgZmlsZWxlbiA9IHN0cmxlbihmaWxlKTsKPiAr ICAgIGludCByZXNsZW4gPSBmb2xkbGVuICsgMSArIGZpbGVsZW4gKyAxOwo+ICsKPiArICAgIGNo YXIgKnJlcyA9IG1hbGxvYyhzaXplb2YoY2hhcikgKiByZXNsZW4pOwo+ICsKPiArICAgIHBzdHJj cHkocmVzLCByZXNsZW4sIGZvbGRlcik7Cj4gKyAgICBzdHJuY2F0KHJlcywgIi8iLCAxKTsKPiAr ICAgIHN0cm5jYXQocmVzLCBmaWxlLCBmaWxlbGVuKTsKPiArCj4gKyAgICByZXR1cm4gcmVzOwo+ ICt9Cj4gKwo+ICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gIHsKPiAgI2lmZGVm IENPTkZJR19HREJTVFVCCj4gQEAgLTcwMDMsNyArNzAyNCwxMjAgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQo+IAo+ICAgICAgbmJfbmljcyA9IDA7Cj4gICAgICAvKiBkZWZhdWx0 IG1hYyBhZGRyZXNzIG9mIHRoZSBmaXJzdCBuZXR3b3JrIGludGVyZmFjZSAqLwo+ICsKPiArI2lm bmRlZiBfV0lOMzIKPiArI2RlZmluZSBESVJfQ01ETElORV9TSVpFIDE8PDEzCj4gKyAgICBpbnQg aGRfZm91bmQgPSAwOwo+ICsgICAgY2hhciAqZGlyLCAqb3B0czsKPiArICAgIHN0cnVjdCBzdGF0 ICpzID0gTlVMTDsKPiArCj4gKyAgICBvcHRpbmQgPSAxOwo+ICsgICAgZm9yKDs7KSB7Cj4gKyAg ICAgICAgaWYgKG9wdGluZCA+PSBhcmdjKQo+ICsgICAgICAgICAgICBicmVhazsKPiArCj4gKyAg ICAgICAgZGlyID0gYXJndltvcHRpbmQrK107Cj4gKwo+ICsgICAgICAgIGlmIChkaXJbMF0gIT0g Jy0nKSB7Cj4gKyAgICAgICAgICAgIGhkX2ZvdW5kID0gMTsKPiArICAgICAgICAgICAgYnJlYWs7 Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+IAo+ICsgICAgaWYgKGhkX2ZvdW5kKSB7Cj4gKyAgICAg ICAgcyA9IG1hbGxvYyhzaXplb2YoKnMpKTsKPiArCj4gKyAgICAgICAgaWYgKHN0YXQoZGlyLCBz KSA8IDApIHsKPiArICAgICAgICAgICAgLyogRXJyb3IgKi8KPiArICAgICAgICAgICAgZnByaW50 ZihzdGRlcnIsICJ1bmFibGUgdG8gc3RhdDogJyVzJ1xuIiwKPiArICAgICAgICAgICAgICAgICAg ICBkaXIpOwo+ICsgICAgICAgICAgICBleGl0KDEpOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAg ICAgaWYgKFNfSVNESVIocy0+c3RfbW9kZSkpIHsKPiArICAgICAgICAgICAgLyogVGhlIHVzZXIg c3BlY2lmaWVkIGEgZGlyZWN0b3J5LCBzZWFyY2ggZm9yIC4vY29uZmlnICovCj4gKyAgICAgICAg ICAgIGludCBjb25maWdsZW4gPSBzdHJsZW4oZGlyKTsKPiArICAgICAgICAgICAgY29uZmlnbGVu ICs9IDg7IC8qICIvY29uZmlnXDAiICovCj4gKyAgICAgICAgICAgIGNoYXIgKmNvbmZpZyA9IG1h bGxvYyhzaXplb2YoY2hhcikgKiBjb25maWdsZW4pOwo+ICsKPiArICAgICAgICAgICAgcHN0cmNw eShjb25maWcsIGNvbmZpZ2xlbiwgZGlyKTsKPiArICAgICAgICAgICAgc3RybmNhdChjb25maWcs ICIvY29uZmlnIiwgNyk7Cj4gKwo+ICsgICAgICAgICAgICBpbnQgZmRfY29uZmlnOwo+ICsKPiAr ICAgICAgICAgICAgaWYgKChmZF9jb25maWcgPSBvcGVuKGNvbmZpZywgMCkpIDwgMCkgewo+ICsg ICAgICAgICAgICAgICAgLyogRXJyb3IgKi8KPiArICAgICAgICAgICAgICAgIGlmIChlcnJubyA9 PSBFTk9FTlQpCj4gKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjb25maWcg ZmlsZSBub3QgZm91bmQ6ICclcydcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25maWcpOwo+ICsgICAgICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgIGZw cmludGYoc3RkZXJyLCAidW5hYmxlIHRvIG9wZW4gY29uZmlnIGZpbGU6ICclcydcbiIsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcpOwo+ICsgICAgICAgICAgICAgICAgZXhp dCgxKTsKPiArICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgb3B0cyA9IG1hbGxvYyhz aXplb2YoY2hhcikgKiAoRElSX0NNRExJTkVfU0laRSkpOwo+ICsKPiArICAgICAgICAgICAgc3Np emVfdCByZWFkYiA9IHJlYWQoZmRfY29uZmlnLCBvcHRzLCAoRElSX0NNRExJTkVfU0laRSkgLSAx KTsKPiArCj4gKyAgICAgICAgICAgIG9wdHNbcmVhZGJdID0gJ1wwJzsKPiArCj4gKyAgICAgICAg ICAgIGNoYXIgKmZpbGVuYW1lID0gc3Ryc2VwKCZvcHRzLCAiXG4iKTsKPiArCj4gKyAgICAgICAg ICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgICAvKiBFcnJvciAq Lwo+ICsgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJtYWxmb3JtZWQgY29uZmlndXJh dGlvbiBmaWxlOiAnJXMnXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcpOwo+ ICsgICAgICAgICAgICAgICAgZXhpdCgxKTsKPiArICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJj aHIoZmlsZW5hbWUsICcvJykgIT0gTlVMTCkgewo+ICsgICAgICAgICAgICAgICAgLyogRXJyb3Ig Ki8KPiArICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJyVzJyBtYXkgcG9pbnQgb3V0 c2lkZSBmb2xkZXIgJyVzJ1xuIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJh dm9pZCB1c2luZyAnLycgaW4gY29uZmlnIGZpbGVcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGZpbGVuYW1lLCBkaXIpOwo+ICsgICAgICAgICAgICAgICAgZXhpdCgxKTsKPiArICAgICAg ICAgICAgfQo+ICsKPiArICAgICAgICAgICAgY2hhciB0bXBvcHRzW0RJUl9DTURMSU5FX1NJWkVd Owo+ICsgICAgICAgICAgICBpbnQgZG9uZSA9IDA7Cj4gKyAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBuYnRva3MgPSAwOwo+ICsgICAgICAgICAgICBjaGFyICp0b2s7Cj4gKwo+ICsgICAgICAgICAg ICBwc3RyY3B5KHRtcG9wdHMsIERJUl9DTURMSU5FX1NJWkUsIG9wdHMpOwo+ICsKPiArICAgICAg ICAgICAgZG8gewo+ICsgICAgICAgICAgICAgICAgdG9rID0gc3RydG9rKG5idG9rcyA9PSAwPyB0 bXBvcHRzIDogTlVMTCwgIiBcbiIpOwo+ICsKPiArICAgICAgICAgICAgICAgIGlmICh0b2sgIT0g TlVMTCkKPiArICAgICAgICAgICAgICAgICAgICBuYnRva3MrKzsKPiArICAgICAgICAgICAgICAg IGVsc2UKPiArICAgICAgICAgICAgICAgICAgICBkb25lID0gMTsKPiArICAgICAgICAgICAgfSB3 aGlsZSAoIWRvbmUpOwo+ICsKPiArICAgICAgICAgICAgaWYgKG5idG9rcyA+IDApIHsKPiArICAg ICAgICAgICAgICAgIGNoYXIgKiphcmd2cHJpbWUgPSBtYWxsb2MoKG5idG9rcyArIGFyZ2MgKyAx KSAqIHNpemVvZihjaGFyKikpOwo+ICsKPiArICAgICAgICAgICAgICAgIGFyZ3ZwcmltZVswXSA9 IGFyZ3ZbMF07Cj4gKwo+ICsgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5idG9rczsg aSsrKQo+ICsgICAgICAgICAgICAgICAgICAgIGFyZ3ZwcmltZVtpICsgMV0gPSBzdHJ0b2soaSA9 PSAwPyBvcHRzIDogTlVMTCwgIiBcbiIpOwo+ICsKPiArICAgICAgICAgICAgICAgIGZvciAoaSA9 IDE7IGkgPCBhcmdjOyBpKyspCj4gKyAgICAgICAgICAgICAgICAgICAgYXJndnByaW1lW25idG9r cyArIGldID0gYXJndltpXTsKPiArCj4gKyAgICAgICAgICAgICAgICBhcmd2cHJpbWVbbmJ0b2tz ICsgYXJnY10gPSBkaXJfZmlsZV9jYXQoZGlyLCBmaWxlbmFtZSk7Cj4gKwo+ICsgICAgICAgICAg ICAgICAgYXJndiA9IGFyZ3ZwcmltZTsKPiArICAgICAgICAgICAgICAgIGFyZ2MgPSBuYnRva3Mg KyBhcmdjICsgMTsKPiArCj4gKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsg aSsrKQo+ICsgICAgICAgICAgICAgICAgICAgIHByaW50ZigiYXJndlslZF0gPSAlc1xuIiwgaSwg YXJndltpXSk7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsg ICAgZnJlZShzKTsKPiArI2VuZGlmCj4gKwo+ICAgICAgb3B0aW5kID0gMTsKPiAgICAgIGZvcig7 Oykgewo+ICAgICAgICAgIGlmIChvcHRpbmQgPj0gYXJnYykKPiBAQCAtNzc3Myw1ICs3OTA3LDEw IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPiAKPiAgICAgIG1haW5fbG9vcCgp Owo+ICAgICAgcXVpdF90aW1lcnMoKTsKPiArCj4gKyAgICAvKiBhcmd2IHdhcyBvdmVyd3JpdHRl biB3aGVuIHBhcnNpbmcgY29uZmlnIGZpbGUgKi8KPiArICAgIGlmIChoZF9mb3VuZCkKPiArICAg IAlmcmVlKGFyZ3YpOwo+ICsKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+IFRoaXMgU0YubmV0IGVtYWlsIGlzIHNwb25zb3JlZCBieTogU3BsdW5rIEluYy4KPiBTdGls bCBncmVwcGluZyB0aHJvdWdoIGxvZyBmaWxlcyB0byBmaW5kIHByb2JsZW1zPyAgU3RvcC4KPiBO b3cgU2VhcmNoIGxvZyBldmVudHMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdXNpbmcgQUpBWCBh bmQgYSBicm93c2VyLgo+IERvd25sb2FkIHlvdXIgRlJFRSBjb3B5IG9mIFNwbHVuayBub3cgPj4g IGh0dHA6Ly9nZXQuc3BsdW5rLmNvbS8KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXyBrdm0tZGV2ZWwgbWFpbGluZyBsaXN0IGt2bS1kZXZlbEBsaXN0cy5z b3VyY2Vmb3JnZS5uZXQgaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGlu Zm8va3ZtLWRldmVsCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaGlzIFNGLm5ldCBlbWFpbCBpcyBzcG9u c29yZWQgYnk6IFNwbHVuayBJbmMuClN0aWxsIGdyZXBwaW5nIHRocm91Z2ggbG9nIGZpbGVzIHRv IGZpbmQgcHJvYmxlbXM/ICBTdG9wLgpOb3cgU2VhcmNoIGxvZyBldmVudHMgYW5kIGNvbmZpZ3Vy YXRpb24gZmlsZXMgdXNpbmcgQUpBWCBhbmQgYSBicm93c2VyLgpEb3dubG9hZCB5b3VyIEZSRUUg Y29weSBvZiBTcGx1bmsgbm93ID4+ICBodHRwOi8vZ2V0LnNwbHVuay5jb20vCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmt2bS1kZXZlbCBtYWlsaW5nIGxp c3QKa3ZtLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZv cmdlLm5ldC9saXN0cy9saXN0aW5mby9rdm0tZGV2ZWwK