From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liam Girdwood Subject: Re: [PATCH 1/2] ucm: Automatically load the best config file based on the card long name Date: Thu, 22 Dec 2016 15:35:10 +0000 Message-ID: <1482420910.24233.41.camel@loki> References: <1482325768-20084-1-git-send-email-mengdong.lin@linux.intel.com> <1482331138.2554.101.camel@loki> <1482408879.24233.32.camel@loki> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by alsa0.perex.cz (Postfix) with ESMTP id CF9D426663B for ; Thu, 22 Dec 2016 16:35:21 +0100 (CET) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: "Lin, Mengdong" Cc: "alsa-devel@alsa-project.org" , "mengdong.lin@linux.intel.com" , "tiwai@suse.de" , "Koul, Vinod" , "broonie@kernel.org" , "Bossart, Pierre-louis" List-Id: alsa-devel@alsa-project.org T24gVGh1LCAyMDE2LTEyLTIyIGF0IDE0OjM1ICswMDAwLCBMaW4sIE1lbmdkb25nIHdyb3RlOgo+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+IEZyb206IExpYW0gR2lyZHdvb2QgW21h aWx0bzpsaWFtLnIuZ2lyZHdvb2RAbGludXguaW50ZWwuY29tXQo+ID4gU2VudDogVGh1cnNkYXks IERlY2VtYmVyIDIyLCAyMDE2IDg6MTUgUE0KPiA+IFRvOiBMaW4sIE1lbmdkb25nIDxtZW5nZG9u Zy5saW5AaW50ZWwuY29tPgo+ID4gQ2M6IG1lbmdkb25nLmxpbkBsaW51eC5pbnRlbC5jb207IGFs c2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZzsKPiA+IGJyb29uaWVAa2VybmVsLm9yZzsgdGl3YWlA c3VzZS5kZTsgS291bCwgVmlub2QgPHZpbm9kLmtvdWxAaW50ZWwuY29tPjsKPiA+IEJvc3NhcnQs IFBpZXJyZS1sb3VpcyA8cGllcnJlLWxvdWlzLmJvc3NhcnRAaW50ZWwuY29tPgo+ID4gU3ViamVj dDogUmU6IFthbHNhLWRldmVsXSBbUEFUQ0ggMS8yXSB1Y206IEF1dG9tYXRpY2FsbHkgbG9hZCB0 aGUgYmVzdCBjb25maWcKPiA+IGZpbGUgYmFzZWQgb24gdGhlIGNhcmQgbG9uZyBuYW1lCj4gPiAK PiA+IE9uIFdlZCwgMjAxNi0xMi0yMSBhdCAxNjoxMiArMDAwMCwgTGluLCBNZW5nZG9uZyB3cm90 ZToKPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gPiA+IEZyb206IExpYW0g R2lyZHdvb2QgW21haWx0bzpsaWFtLnIuZ2lyZHdvb2RAbGludXguaW50ZWwuY29tXQo+ID4gPiA+ IFNlbnQ6IFdlZG5lc2RheSwgRGVjZW1iZXIgMjEsIDIwMTYgMTA6MzkgUE0KPiA+ID4gPgo+ID4g PiA+IE9uIFdlZCwgMjAxNi0xMi0yMSBhdCAyMTowOSArMDgwMCwgbWVuZ2RvbmcubGluQGxpbnV4 LmludGVsLmNvbQo+ID4gd3JvdGU6Cj4gPiA+ID4gPiBGcm9tOiBNZW5nZG9uZyBMaW4gPG1lbmdk b25nLmxpbkBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gSW50ZWwgRFNQIHBs YXRmb3JtIGRyaXZlcnMgYXJlIHVzZWQgYnkgbWFueSBkaWZmZXJlbnQgZGV2aWNlcy4gRm9yCj4g PiA+ID4gPiB1c2VyIHNwYWNlIHRvIGRpZmZlcmVudGlhdGUgdGhlbSwgQVNvQyBtYWNoaW5lIGRy aXZlciBtYXkgaW5jbHVkZQo+ID4gPiA+ID4gdGhlIERNSSBpbmZvICh2ZW5kb3IsIHByb2R1Y3Qg YW5kIGJvYXJkKSBpbiBjYXJkIGxvbmcgbmFtZS4KPiA+ID4gPiA+IFBvc3NpYmxlIGNhcmQgbG9u ZyBuYW1lcwo+ID4gPiA+ID4gYXJlOgo+ID4gPiA+ID4gYnJvYWR3ZWxsLXJ0Mjg2LURlbGwgSW5j Li1YUFMgMTMgOTM0My0wMzEwSkgKPiA+ID4gPgo+ID4gPiA+IFNlZSBteSBwcmV2aW91cyBjb21t ZW50cyBvbiB0aGUga2VybmVsIHBhdGNoLCBidXQgdGhlIGxvbmduYW1lCj4gPiA+ID4gc2hvdWxk IGJlIGxpa2UgOi0KPiA+ID4gPgo+ID4gPiA+ICJEZWxsIEluYy4tWFBTIDEzIgo+ID4gPgo+ID4g PiBNYXkgd2Uga2VlcCBpdD8gSXQgY2FuIG1ha2UgdGhlIG1hdGNoaW5nIGNvZGUgc2ltcGxlci4K PiA+IAo+ID4gU29ycnksIGRvbnQgZm9sbG93Lgo+IAo+IEknbGwgcmVtb3ZlIHRoZSBjYXJkIG5h bWUgKGRyaXZlciBuYW1lKSBmcm9tIHRoZSBsb25nIG5hbWUgYXMgeW91IHN1Z2dlc3RlZCwgcGxl YXNlIHNlZSBteSBwcmV2aW91cyBtYWlsOgo+IGh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5v cmcvcGlwZXJtYWlsL2Fsc2EtZGV2ZWwvMjAxNi1EZWNlbWJlci8xMTU5ODkuaHRtbAo+IAo+ID4g Cj4gPiA+ID4KPiA+ID4gPiA+IGJyb2Fkd2VsbC1ydDI4Ni1JbnRlbCBDb3JwLi1Ccm9hZHdlbGwg Q2xpZW50IHBsYXRmb3JtLVdpbHNvbiBCZWFjaAo+ID4gPiA+ID4gU0RTIGJ5dGNyLXJ0NTY0MC1B U1VTVGVLIENPTVBVVEVSIElOQy4tVDEwMFRBLVQxMDBUQQo+ID4gPiA+ID4gYnl0Y3ItcnQ1NjUx LUNpcmN1aXRjby1NaW5ub3dib2FyZCBNYXggRDAgUExBVEZPUk0tTWlubm93Qm9hcmQKPiA+ID4g PiBNQVggLi4uCj4gPiA+ID4gPgo+ID4gPiA+ID4gQW5kIHVzZXIgc3BhY2UgY2FuIGRlZmluZSBj b25maWd1cmF0aW9uIGZpbGVzIGluY2x1ZGluZyBmaWVsZHMKPiA+ID4gPiA+IHNlcGFyYXRlZCBi eSAnLicgYXMgYmVsb3c6Cj4gPiA+ID4gPiBicm9hZHdlbGwtcnQyODYKPiA+ID4gPiA+IGJyb2Fk d2VsbC1ydDI4Ni5EZWxsLlhQUwo+ID4gPiA+Cj4gPiA+ID4gRG9udCBuZWVkIHRvIHVzZSBhIC4g YXMgdGhlIG5hbWVzIHNob3VsZCBiZSB1bmlxdWUuCj4gPiA+ID4KPiA+ID4gPiA+IGJ5dGNyLXJ0 NTY0MAo+ID4gPiA+ID4gYnl0Y3ItcnQ1NjQwLkFTVVMuVDEwMAo+ID4gPiA+ID4gYnl0Y3ItcnQ1 NjUxLk1pbm5vd2JvYXJkTWF4Cj4gPiA+ID4gPiAuLi4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBXaGVu IGJlaW5nIGFza2VkIHRvIGxvYWQgY29uZmlndXJhdGlvbiBmaWxlIG9mIGEgY2FyZCwgVUNNIHdp bGwKPiA+ID4gPiA+IHRyeSB0byBmaW5kIHRoZSBjYXJkIGxvbmcgbmFtZSBmcm9tIHRoZSBsb2Nh bCBtYWNoaW5lLCBhbmQgdGhlbgo+ID4gPiA+ID4gc2NhbiBhbGwgYXZhaWxhYmxlIGNvbmZpZ3Vy YXRpb24gZmlsZSBuYW1lcywgc2VhcmNoIGV2ZXJ5IGZpZWxkIG9mCj4gPiA+ID4gPiBjb25maWcg ZmlsZSBuYW1lIGluIHRoZSBjYXJkIGxvbmcgbmFtZS4gVGhlIG1vcmUgY2hhcmFjdGVycyBtYXRj aCwKPiA+ID4gPiA+IHRoZSBoaWdoZXIgc2NvcmUgdGhlIGZpbGUgaGFzLiBGaW5hbGx5LCB0aGUg ZmlsZSB3aXRoIHRoZSBoaWdoZXN0Cj4gPiA+ID4gPiBzY29yZSB3aWxsIGJlIGxvYWRlZCB0byBj b25maWd1cmUgdGhlIHNvdW5kIGNhcmQuCj4gPiA+ID4gPgo+ID4gPiA+ID4gU2lnbmVkLW9mZi1i eTogTWVuZ2RvbmcgTGluIDxtZW5nZG9uZy5saW5AbGludXguaW50ZWwuY29tPgo+ID4gPiA+ID4K PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9zcmMvdWNtL3BhcnNlci5jIGIvc3JjL3VjbS9wYXJzZXIu YyBpbmRleAo+ID4gPiA+ID4gYzk4MzczYS4uZmY3NWRhNyAxMDA2NDQKPiA+ID4gPiA+IC0tLSBh L3NyYy91Y20vcGFyc2VyLmMKPiA+ID4gPiA+ICsrKyBiL3NyYy91Y20vcGFyc2VyLmMKPiA+ID4g PiA+IEBAIC01NSw2ICs1NSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY29tcG9uZW50 X2RpcltdID0gewo+ID4gPiA+ID4gIAlOVUxMLAkJLyogdGVybWluYXRvciAqLwo+ID4gPiA+ID4g IH07Cj4gPiA+ID4gPgo+ID4gPiA+ID4gK3N0YXRpYyBpbnQgZmlsZW5hbWVfZmlsdGVyKGNvbnN0 IHN0cnVjdCBkaXJlbnQgKmRpcmVudCk7IHN0YXRpYwo+ID4gPiA+ID4gK2ludCBpc19jb21wb25l bnRfZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpcik7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgc3Rh dGljIGludCBwYXJzZV9zZXF1ZW5jZShzbmRfdXNlX2Nhc2VfbWdyX3QgKnVjX21nciwKPiA+ID4g PiA+ICAJCQkgIHN0cnVjdCBsaXN0X2hlYWQgKmJhc2UsCj4gPiA+ID4gPiAgCQkJICBzbmRfY29u ZmlnX3QgKmNmZyk7Cj4gPiA+ID4gPiBAQCAtMTMyOCw2ICsxMzMxLDIxMCBAQCBzdGF0aWMgaW50 Cj4gPiA+ID4gcGFyc2VfbWFzdGVyX2ZpbGUoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IsIHNu ZF9jb25maWdfdCAqY2ZnKQo+ID4gPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gPiA+ICB9Cj4gPiA+ ID4gPgo+ID4gPiA+ID4gKy8qIHRyaW0gU1BBQ0UgKDB4MjApIGZyb20gdGhlIHN0cmluZyAqLyBz dGF0aWMgdm9pZAo+ID4gPiA+ID4gK3RyaW1fc3BhY2UoY2hhcgo+ID4gPiA+ID4gKypzdHIpIHsK PiA+ID4gPiA+ICsJaW50IGksIGogPSAwOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlmb3IgKGkg PSAwOyBzdHJbaV0gJiYgaSA8IE1BWF9GSUxFOyBpKyspIHsKPiA+ID4gPiA+ICsJCWlmIChzdHJb aV0gIT0gMHgyMCkKPiA+ID4gPiA+ICsJCQlzdHJbaisrXSA9IHN0cltpXTsKPiA+ID4gPiA+ICsJ fQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlzdHJbal0gPSAnXDAnOwo+ID4gPiA+ID4gK30KPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsvKiBmaW5kIGFuZCBzdG9yZSB0aGUgY2FyZCBsb25nIG5hbWUg aWYgdGhlIGNhcmQgaXMgaW4gdGhpcwo+ID4gPiA+ID4gK21hY2hpbmUgKi8gc3RhdGljIGludCBn ZXRfY2FyZF9sb25nX25hbWUoc25kX3VzZV9jYXNlX21ncl90ICptZ3IpCj4gPiB7Cj4gPiA+ID4g PiArCWNvbnN0IGNoYXIgKmNhcmRfbmFtZSA9IG1nci0+Y2FyZF9uYW1lOwo+ID4gPiA+ID4gKwlz bmRfY3RsX3QgKmhhbmRsZTsKPiA+ID4gPiA+ICsJaW50IGNhcmQsIGVyciwgZGV2LCBpZHg7Cj4g PiA+ID4gPiArCXNuZF9jdGxfY2FyZF9pbmZvX3QgKmluZm87Cj4gPiA+ID4gPiArCWNvbnN0IGNo YXIgKl9uYW1lLCAqX2xvbmdfbmFtZTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJc25kX2N0bF9j YXJkX2luZm9fYWxsb2NhKCZpbmZvKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJY2FyZCA9IC0x Owo+ID4gPiA+ID4gKwlpZiAoc25kX2NhcmRfbmV4dCgmY2FyZCkgPCAwIHx8IGNhcmQgPCAwKSB7 Cj4gPiA+ID4gPiArCQl1Y19lcnJvcigibm8gc291bmRjYXJkcyBmb3VuZC4uLiIpOwo+ID4gPiA+ ID4gKwkJcmV0dXJuIC0xOwo+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXdo aWxlIChjYXJkID49IDApIHsKPiA+ID4gPiA+ICsJCWNoYXIgbmFtZVszMl07Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArCQlzcHJpbnRmKG5hbWUsICJodzolZCIsIGNhcmQpOwo+ID4gPiA+ID4gKwkJ ZXJyID0gc25kX2N0bF9vcGVuKCZoYW5kbGUsIG5hbWUsIDApOwo+ID4gPiA+ID4gKwkJaWYgKGVy ciA8IDApIHsKPiA+ID4gPiA+ICsJCQl1Y19lcnJvcigiY29udHJvbCBvcGVuICglaSk6ICVzIiwg Y2FyZCwKPiA+ID4gPiA+ICsJCQkJIHNuZF9zdHJlcnJvcihlcnIpKTsKPiA+ID4gPiA+ICsJCQln b3RvIG5leHRfY2FyZDsKPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCWVy ciA9IHNuZF9jdGxfY2FyZF9pbmZvKGhhbmRsZSwgaW5mbyk7Cj4gPiA+ID4gPiArCQlpZiAoZXJy IDwgMCkgewo+ID4gPiA+ID4gKwkJCXVjX2Vycm9yKCJjb250cm9sIGhhcmR3YXJlIGluZm8gKCVp KTogJXMiLCBjYXJkLAo+ID4gPiA+ID4gKwkJCQkgc25kX3N0cmVycm9yKGVycikpOwo+ID4gPiA+ ID4gKwkJCXNuZF9jdGxfY2xvc2UoaGFuZGxlKTsKPiA+ID4gPiA+ICsJCQlnb3RvIG5leHRfY2Fy ZDsKPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCV9uYW1lID0gc25kX2N0 bF9jYXJkX2luZm9fZ2V0X25hbWUoaW5mbyk7Cj4gPiA+ID4gPiArCQlpZiAoIXN0cm5jbXAoY2Fy ZF9uYW1lLCBfbmFtZSwgMzIpKSB7Cj4gPiA+ID4gPiArCQkJX2xvbmdfbmFtZSA9IHNuZF9jdGxf Y2FyZF9pbmZvX2dldF9sb25nbmFtZShpbmZvKTsKPiA+ID4gPiA+ICsJCQlzdHJuY3B5KG1nci0+ Y2FyZF9sb25nX25hbWUsIF9sb25nX25hbWUsCj4gPiA+ID4gPiArCQkJCU1BWF9DQVJEX0xPTkdf TkFNRSk7Cj4gPiA+ID4gPiArCQkJc25kX2N0bF9jbG9zZShoYW5kbGUpOwo+ID4gPiA+ID4gKwkJ CXJldHVybiAwOwo+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJc25kX2N0 bF9jbG9zZShoYW5kbGUpOwo+ID4gPiA+ID4gK25leHRfY2FyZDoKPiA+ID4gPiA+ICsJCWlmIChz bmRfY2FyZF9uZXh0KCZjYXJkKSA8IDApIHsKPiA+ID4gPiA+ICsJCQl1Y19lcnJvcigic25kX2Nh cmRfbmV4dCIpOwo+ID4gPiA+ID4gKwkJCWJyZWFrOwo+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4g Kwl9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXJldHVybiAtMTsKPiA+ID4gPiA+ICt9Cj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArLyogVGhpcyBmdW5jdGlvbiB3aWxsIGZpbmQgdGhlIGJlc3QgZGV2 aWNlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24KPiA+ID4gPiA+ICtmaWxlIGJhc2VkCj4gPiA+ID4g PiArICogb24gdGhlIHNvdW5kIGNhcmQgbG9uZyBuYW1lLgo+ID4gPiA+ID4gKyAqIERpZmZlcmVu dCBkZXZpY2VzIG1heSBzaGFyZSB0aGUgc2FtZSBzb3VuZCBkcml2ZXIgYW5kIHRodXMgdGhlCj4g PiA+ID4gPiArc2FtZSBzb3VuZAo+ID4gPiA+ID4gKyAqIGNhcmQgbmFtZSAoc2hvcnQgbmFtZSks IGJ1dCB0aGV5IG1heSBzdGlsbCBuZWVkIGRpZmZlcmVudAo+ID4gPiA+ID4gK2RldmljZS1zcGVj aWZpYwo+ID4gPiA+ID4gKyAqIGNvbmZpZ3VyYXRpb25zLiBGb3IgdXNlciBzcGFjZSB0byBkaWZm ZXJlbnRpYXRlIHRoZW0sIGtlcm5lbAo+ID4gPiA+ID4gK2RyaXZlcnMgbWF5Cj4gPiA+ID4gPiAr ICogaW5jbHVkZSB0aGUgRE1JIGluZm8gKHZlbmRvciwgcHJvZHVjdCBhbmQgYm9hcmQpIGluIHRo ZSBjYXJkCj4gPiA+ID4gPiArbG9uZwo+ID4gPiA+IG5hbWUuCj4gPiA+ID4gPiArICogQW5kIHVz ZXIgc3BhY2UgY2FuIGRlZmluZSBjb25maWd1cmF0aW9uIGZpbGUgbmFtZXMgYXBwZW5kaW5nCj4g PiA+ID4gPiArRE1JIGtleXdvcmRzCj4gPiA+ID4gPiArICogdG8gdGhlIGNhcmQgbmFtZSwgbGlr ZToKPiA+ID4gPiA+ICsgKiBieXRjci1ydDU2NDAuQVNVUy5UMTAwCj4gPiA+ID4gPiArICogYnl0 Y3ItcnQ1NjUxLk1pbm5vd0JvYXJkCj4gPiA+ID4gPiArICoKPiA+ID4gPiA+ICsgKiBXaGVuIGJl aW5nIGFza2VkIHRvIGxvYWQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgYSBjYXJkLAo+ID4g PiA+ID4gK3RoaXMgZnVuY3Rpb24KPiA+ID4gPiA+ICsgKiB3aWxsIHRyeSB0byBmaW5kIHRoZSBj YXJkIGxvbmcgbmFtZSBmcm9tIHRoZSBsb2NhbCBtYWNoaW5lLAo+ID4gPiA+ID4gK2FuZCB0aGVu IHNjYW4KPiA+ID4gPiA+ICsgKiBhbGwgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24gZmlsZSBuYW1l cywgc2VhcmNoIGV2ZXJ5IGZpZWxkIG9mCj4gPiA+ID4gPiArdGhlIGNvbmZpZwo+ID4gPiA+ID4g KyAqIGZpbGUgbmFtZSBpbiB0aGUgY2FyZCBsb25nIG5hbWUuIFRoZSBtb3JlIGNoYXJhY3RlcnMg bWF0Y2gsCj4gPiA+ID4gPiArdGhlIGhpZ2hlcgo+ID4gPiA+ID4gKyAqIHNjb3JlIHRoZSBmaWxl IGhhcy4gRmluYWxseSwgdGhlIGZpbGUgd2l0aCB0aGUgaGlnaGVzdCBzY29yZSB3aWxsIGJlCj4g PiBsb2FkZWQuCj4gPiA+ID4gPiArICovCj4gPiA+ID4KPiA+ID4gPiBJZCcgZXhwZWN0IHRoaXMg ZnVuY3Rpb24gdG8gdHJ5IGFuZCBvcGVuIGNhcmQgbG9uZ25hbWUgYW5kIHRoZW4gY2FyZAo+ID4g PiA+IG5hbWUgaWYgbG9uZ25hbWUgaXMgbm90IGZvdW5kLiBTbyBwcm92aWRpbmcgd2UgdXNlIHRo ZSBleGFjdCBzYW1lCj4gPiA+ID4gbmFtZXMgYXMgdGhlIERNSSBuYW1lIHdlIHdvbnQgbmVlZCBh bnkgc3RyaW5nIGZvcm1hdHRpbmcgb3Igc2NvcmluZwo+ID4gPiA+IChpLmUuIGZpbGUKPiA+ID4g PiBvcGVuKCJsb25nbmFtZS9sb25nbmFtZS5jb25mIikgd2lsbCBlaXRoZXIgc3VjY2VlZCBvciBm YWlsKQo+ID4gPiA+Cj4gPiA+ID4gTGlhbQo+ID4gPgo+ID4gPiBJIGZlZWwgd2UgY2Fubm90IHVz ZSB0aGUgZXhhY3Qgc2FtZSBuYW1lcyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQo+ID4gPiBh bmQgY2FyZCBsb25nIG5hbWUuIFRoZSBETUkgaW5mbyBpbiB0aGUgY2FyZCBsb25nIG5hbWUgY2Fu IGJlIGxlbmd0aHksCj4gPiA+IGluY2x1ZGluZyAnLicgLCBTUEFDRSwgbWVhbmluZ2xlc3MgaW5m byBsaWtlICJDb3JwLiIgYW5kIHNvbWV0aW1lCj4gPiA+IGR1cGxpY2F0ZWQgaW5mbyBmb3Igc29t ZSBPRU1z77yOSSBob3BlIGRldmVsb3BlcnMgY2FuIGp1c3QgZXh0cmFjdCBrZXkKPiA+ID4gd29y ZHMgZnJvbSB0aGUgbWVzc3kgRE1JIGluZm8gdG8gbWFrZSBhIHNpbXBsZSBjb25maWd1cmF0aW9u IGZpbGUKPiA+ID4gbmFtZSwgYW5kIFVDTSBhdXRvbWF0aWNhbGx5IGRvIHRoZSBtYXRjaGluZyBh bmQgZ2l2ZSBlYWNoCj4gPiA+IGNvbmZpZ3VyYXRpb24gZmlsZSBhIHNjb3JlLiBUaGVuIHRoZSBm aWxlIHdpdGggaGlnaGVzdCBzY29yZSB3aWxsIGJlCj4gPiA+IHVzZWQgZm9yIHRoZSBjYXJkLgo+ ID4gCj4gPiBQcm92aWRpbmcgdGhlIERNSSBuYW1lIGRvZXMgbm90IHVzZSBpbnZhbGlkIGZpbGVu YW1lIGNoYXJhY3RlcnMgd2UgYXJlIG9rLgo+ID4gRXh0cmFjdGluZyBrZXkgd29yZHMgYW5kIG1h dGNoaW5nIGlzIHByb25lIHRvIG1hbnkgcHJvYmxlbXMgYW5kIHBhaW5mdWwgdG8KPiA+IGRlYnVn Li4uLgo+IAo+IE1heSBJIHJldmlzZSB0aGUgVUNNIGNvZGUgbGlrZSB0aGlzPyBJdCB3aWxsIHRy eSB0byBvcGVuIHRoZSBmaWxlIHdpdGgKPiBETUkgbmFtZSBhdCBmaXJzdC4gQW5kIG9ubHkgaWYg dGhhdCBmaWxlIGlzIG5vdCBhdmFpbGFibGUsIGZhbGwgYmFjawo+IHRvIGtleSB3b3JkcyBtYXRj aGluZy4gCj4gCj4gSSBob3BlIHRvIGtlZXAgdGhlIHBvc3NpYmlsaXR5IHRoYXQgdXNlciBjYW4g dXNlIGEgc2ltcGxlCj4gY29uZmlndXJhdGlvbiBmaWxlIGZvciBhIHByb2R1Y3QgZmFtaWx5LCB3 aXRob3V0IGdlbmVyYXRpbmcgdG9vIG1hbnkKPiBjYXJkIGRpcmVjdG9yaWVzIGFuZCBmaWxlcy4K PiAKCklmIHRoZSBETUkgbmFtZXMgYXJlIHRvbyBjb21wbGV4IGZvciBkaXJlY3RvcnkgbmFtZXMs IHRoZW4geW91IGNvdWxkIGFkZAphbiBhbGlhcyBmaWxlIGF0IHRoZSB0b3AgbGV2ZWwgdGhhdCB3 b3VsZCBsaXN0IHRoZSBETUkgbmFtZSBhbmQgdGhlCnNob3J0ZW5lZCBuYW1lIGkuZS4KCiMgRE1J IG5hbWUgICAgICAgICAgICAgICAgICAgICAjIFVDTSBkaXJlY3RvcnkgbmFtZQoiRGVsbCBibGFo IENvcnAuIFhQUywgMTMgYmxhaCIgIkRlbGwgWFBTMTMgQkRXIgoKU28gdGhlIGFsaWFzIGZpbGUg Y291bGQgYmUgc2VhcmNoZWQgZm9yIHRoZSBETUkgbmFtZSwgYmVmb3JlIHRoZSBsZWdhY3kKbmFt ZSB3YXMgdHJpZWQuCgpUaGUgYWxpYXMgbWV0aG9kIGFib3ZlIGFsc28gYWxsb3dzIGZvciByZXVz ZSBvZiBjb25maWdzIG9uIG1hY2hpbmVzIHRoYXQKYXJlIHNpbWlsYXIsIGJ1dCB3aXRoIGRpZmZl cmVudCBETUkgbmFtZXMuIFNvIHRoaXMgd291bGQgYWxzbyBrZWVwIHRoZQpudW1iZXIgb2YgY29u ZmlncyBsb3cuCgpMaWFtCgoKPiBUaGFua3MKPiBNZW5nZG9uZwo+IAo+ID4gCj4gPiBUaGUgYWx0 ZXJuYXRpdmUgaXMgdG8gaW5jbHVkZSB0aGUgZXhhY3QgRE1JIG5hbWUgaW4gYSB0b3AgbGV2ZWwg Y29uZmlnIGZpbGUKPiA+IHRoYXQgcG9pbnRzIHRvIHRoZSBVQ00gY29uZmlnLgo+IAo+IAo+IAo+ IFRoYW5rcwo+IE1lbmdkb25nCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KQWxzYS1kZXZlbCBtYWlsaW5nIGxpc3QKQWxzYS1kZXZlbEBhbHNhLXByb2pl Y3Qub3JnCmh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bHNhLWRldmVsCg==