From mboxrd@z Thu Jan 1 00:00:00 1970 From: "David.Wu" Subject: Re: Boundary between pinctrl and peripheral settings Date: Tue, 23 May 2017 21:05:40 +0800 Message-ID: <069d7620-16b3-e239-2196-76c1168ee26d@rock-chips.com> References: <1719598.F3JUalFtig@phil> <5983290.MocaVmHgjo@phil> <97536e9f-7ad9-032b-d2dd-921f97464123@rock-chips.com> <2621764.2a2E3U2WOa@phil> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <2621764.2a2E3U2WOa@phil> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Heiko Stuebner , linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org Cc: Kever Yang , Doug Anderson List-Id: linux-rockchip.vger.kernel.org SGkgSGVpa28sCgrlnKggMjAxNy81LzIzIDA6MjksIEhlaWtvIFN0dWVibmVyIOWGmemBkzoKPiBI aSBEYXZpZCwKPiAKPiBbSSd2ZSBkcm9wcGVkIExpbnVzIFdhbGxlaWosIHNvIHdlIGRvbid0IHNw YW0gaGltIHdpdGggb3VyIGRpc2N1c3Npb25zIDotKSAuCj4gICBJJ3ZlIGtlcHQgdGhlIGxpc3Qg dGhvdWdoLCBzbyBwZW9wbGUgY2FuIHJlYWQgdXAgb24gaXQgaWYgbmVjZXNzYXJ5IF0KCj4gCj4g QW0gTW9udGFnLCAyMi4gTWFpIDIwMTcsIDIxOjU4OjAwIENFU1Qgc2NocmllYiBEYXZpZC5XdToK Pj4g5ZyoIDIwMTcvNS8xOSAxNzoxMywgSGVpa28gU3R1ZWJuZXIg5YaZ6YGTOgo+Pj4+IElmIGEg cGluLXJvdXRpbmcgY29udGFpbnMgYSBmZXcgcGlucyBhcyBnbWFjLCBuZWVkIGFsbCB0aGUgcGlu cyAocGluLAo+Pj4+IHBpbmZ1bmMpIHRvIGJlIGNvbmZpZ3VyZWQgY29ycmVjdGx5IGZyb20gRFQs IHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgR1JGCj4+Pj4gc2V0dGluZyBpcyBjb25maWd1cmVkLgo+ Pj4+IElmIGNvbmZpZ3VyZWQgZ3JmLXNldHRpbmcgcGVyIHBpbiwgYXNzdW1pbmcgdGhhdCBvbmUg b2YgdGhlIHBpbidzCj4+Pj4gcGluZnVuYyBpcyB3cm9uZywgaXQgbWF5IGNhdXNlIHBpbi1yb3V0 aW5nIG5vdCB0byBiZSBlZmZlY3RpdmUgb3Igd3JvbmcuCj4+Pgo+Pj4gSSBzdGlsbCB0aGluayBp dCBzaG91bGQgYmUgZW5vdWdoIHRvIHdhdGNoIGZvciBvbmUgcGluIG9mIGEgc3BlY2lmYyBncm91 cAo+Pj4gdG8gYmUgc2V0IHRvIGl0cyBzcGVjaWFsIHBpbm11eCBmdW5jdGlvbi4gSWYgdGhlIHBp bm11eCBzZXR0aW5nIGlzIHdyb25nCj4+PiBmb3IgdGhhdCBwaW4gdGhlIGlwIGJsb2NrIHdvbid0 IHdvcmsgY29ycmVjdGx5IGFueXdheSAoaW5kZXBlbmRlbnQgb2YKPj4+IGl0cyBpbm5lci1zb2Mg cm91dGluZykuCj4+Pgo+Pj4gT3VyIHBpbmN0cmwgZ3JvdXBzIGFsc28gYXJlIGRlZmluZWQgb24g YSBnbG9iYWwgcGVyLXNvYyBsZXZlbAo+Pj4gKHJrMzM5OS5kdHNpIGV0YykgYW5kIHRodXMgaWYg dGhleSBhcmUgcmVhbGx5IHdyb25nLCBhIGxvdCBvZiBwZW9wbGUgd2lsbAo+Pj4gY29tcGxhaW4g YW55d2F5IDstKSAuCj4+Pgo+Pj4gU28gZm9yIGV4YW1wbGUganVzdCB0YWtlCj4+PiB1YXJ0MmRi Z2Ffc2luLCB1YXJ0MmRiZ2Jfc2luLCB1YXJ0MmRiZ2Nfc2luIG9uIHJrMzM5OQo+Pj4gYXMgcGlu cyB0byB3YXRjaCwgc29tZSB0aGluZyBsaWtlCj4+Pgo+Pj4gc3RydWN0IHJrMzM5OV9waW5yb3V0 aW5nW10gPSB7Cj4+PiAJewo+Pj4gCQkvKiB1YXJ0MmRiZ2EgKi8KPj4+IAkJLmJhbmsgPSA0LAo+ Pj4gCQkucGluID0gOCwKPj4+IAkJLmZ1bmMgPSAyLAo+Pj4gCQkucm91dGVfb2Zmc2V0ID0gMHgw ZTIxYywKPj4+IAkJLnJvdXRlX3ZhbCA9ICgzIDw8ICgxMCsxNikpLAo+Pj4gCX0sIHsKPj4+IAkJ LyogdWFydDJkYmdiICovCj4+PiAJCS5iYW5rID0gNCwKPj4+IAkJLnBpbiA9IDE2LAo+Pj4gCQku ZnVuYyA9IDIsCj4+PiAJCS5yb3V0ZV9vZmZzZXQgPSAweDBlMjFjLAo+Pj4gCQkucm91dGVfdmFs ID0gKDMgPDwgKDEwKzE2KSB8IDEgPDwgMTApLAo+Pj4gCX0sCj4+PiAuLi4KPj4+IH07Cj4+Pgo+ Pj4gVGhhdCB3YXkgeW91IGNhbiBqdXN0IGhvb2sgaXQgaW50byB0aGUgcm9ja2NoaXBfc2V0X211 eCBmdW5jdGlvbiBzaW1pbGFyCj4+PiB0byB0aGUgcmVjYWxjIHN0dWZmLCB3aXRob3V0IHRvIG11 Y2ggdHJvdWJsZS4KPj4+Cj4+IFRoZSBnbWFjX20xX3NlbCBpcyBkaWZmZXJlbnQsIGl0IG5lZWQg dG8gY29uZmlndXJlIGJvdGggYml0WzEwXSBhbmQKPj4gYml0WzJdIHdpdGggdmFsdWU6MSwgdXNl ZCBhZnRlciBvcHRpbWl6YXRpb24uIFRoZSBnbWFjX20xIGFmdGVyCj4+IG9wdGltaXphdGlvbiBu ZWVkIHRvIGNvbmZpZ3VyZSBhbGwgcGlucyBpb211eCBvZiBnbWFjX20xIGFuZCB0eCBwaW5zCj4+ IGlvbXV4IG9mIGdtYWNfbTAuIFRoZSB0eCBwaW5zIGlvbXV4IG9mIGdtYWNfbTAgaXMgYWxzbyBy ZXF1aXJlZCxzbyBpdCBpcwo+PiBjb25mbGljdCBvZiBnbWFjX20xIGFmdGVyIG9wdGltaXphdGlv bi4gQmVzaWRlcywgd2UgZG9uJ3QgbmVlZCB0byB1c2UKPj4gbTEsIGJlY2F1c2UgbTEgJ3Mgc2ln bmFsIGlzIGJhZCwgZG9uJ3QgdGhpbmsgYWJvdXQgaXQsIGJ1dAo+PiBnbWFjX20xIGFmdGVyIG9w dGltaXphdGlvbiBpcyBvYmxpZ2F0b3J5Lgo+IAo+IEknbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQg dGhlIHBhcmFncmFwaCBhYm92ZS4gRXNwZWNpYWxseSB3aGF0IGlzIHRoZQo+ICJvcHRpbWl6YXRp b24iIHRoaW5nLgo+IAo+IEJ1dCBpZiBJIHVuZGVyc3RhbmQgeW91IGNvcnJlY3RseSwgdGhhdCBz dGlsbCBsZWF2ZXMgdXMgd2l0aCBvbmx5IDIgc2V0dGluZ3MuCj4gZ21hYy1tMCBhbmQgZ21hYy1t MS1vcHRpbWl6ZWQgKG9yIHdoYXRldmVyIHdlIHdhbnQgdG8gY2FsbCBpdCkuCj4gCj4gRm9yIGdt YWMtbTAganVzdCBob29rIGl0IG9udG8gbWFjX3J4ZDAsIHdoaWNoIGlzIG9ubHkgdXNlZCBvbiBt MDsKPiBqdXN0IHVzZSBhbnkgb2YgdGhlIGdtYWMtbTEgcGlucyBmb3IgdGhhdCBnbWFjLW0xLW9w dGltaXplZCBzdGF0ZTsKPiBhbmQgYXMgeW8gd3JvdGUganVzdCBpZ25vcmUgdGhlIGdtYWMtbTEg c3RhdGUsIGFzIGl0IGlzIGJhZCBhbnl3YXkuCgpZZXMsIEp1c3QgdXNlIHRoZSBnbWFjLW0wIGFu ZCBnbWFjLW0xLW9wdGltaXplZCB0d28gc3RhdGVzLgpBbm90aGVyIGFzcGVjdCBpcyBJIHRoaW5r IHBlciBwaW4gbmVlZHMgdG8gdHJhdmVyc2UsIGFuZCBhcnJheSBlbGVtZW50IAp0b28gbXVjaCwg d2FudCB0byBpbXByb3ZlIHJvdXRlIG1hdGNoIHJhdGUuCgpIb3cgZG8geW91IGZlZWwgYWJvdXQg dGhlIHR3byBwb2ludHMgYmVsb3c6CjEuIGFkZCBJT01VWF9ST1VURSB0eXBlLHRoYXQgb25seSBw ZXIgOCBwaW5zIG5lZWQgdG8gdHJhdmVyc2UuCnN0YXRpYyBzdHJ1Y3Qgcm9ja2NoaXBfcGluX2Jh bmsgcmszMjI4X3Bpbl9iYW5rc1tdID0gewoJUElOX0JBTktfSU9NVVhfRkxBR1MoMCwgMzIsICJn cGlvMCIsIElPTVVYX1JPVVRFLCBJT01VWF9ST1VURSwgMCwgCklPTVVYX1JPVVRFKSwKCVBJTl9C QU5LX0lPTVVYX0ZMQUdTKDEsIDMyLCAiZ3BpbzEiLCBJT01VWF9ST1VURSwgSU9NVVhfUk9VVEUs IApJT01VWF9ST1VURSwgMCksCglQSU5fQkFOS19JT01VWF9GTEFHUygyLCAzMiwgImdwaW8yIiwg SU9NVVhfUk9VVEUsIDAsIDAsIDApLAoJUElOX0JBTktfSU9NVVhfRkxBR1MoMywgMzIsICJncGlv MyIsIElPTVVYX1JPVVRFLCBJT01VWF9ST1VURSwgCklPTVVYX1JPVVRFLCBJT01VWF9ST1VURSks Cn07CgoyLiBhZGQgcm91dGUgbWFyayBmb3IgcGVyIGJhbmssIHRoYXQgb25seSBpZiBjdXJyZW50 IEJJVChwaW4pICYgCnJvdXRlX21hc2sgaXMgdHVyZSwgbmVlZCB0byB0cmF2ZXJzZS4Kc3RhdGlj IHN0cnVjdCByb2NrY2hpcF9waW5fYmFuayByazMyMjhfcGluX2JhbmtzW10gPSB7CglQSU5fQkFO S19ST1VURV9NQVNLKDAsIDMyLCAiZ3BpbzAiLCAweDVjMDAyMDAyKSwKCS4uLi4uLgoJLi4uLi4u CgkuLi4uLi4KfTsKCnN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfbXV4X3JvdXRlX2RhdGEg IHJrMzIyOF9tdXhfcm91dGVfZGF0YVtdID0gewoJewoJCS8qIHB3bTAtMCAqLwoJCS5iYW5rID0g MCwKCQkucGluID0gMjYsCgkJLmZ1bmMgPSAxLAoJCS5yb3V0ZV9vZmZzZXQgPSAweDUwLAoJCS5y b3V0ZV92YWwgPSBCSVQoMTYpLAoJfSwgewoJCS8qIHB3bTAtMSAqLwoJCS5iYW5rID0gMywKCQku cGluID0gMjEsCgkJLmZ1bmMgPSAxLAoJCS5yb3V0ZV9vZmZzZXQgPSAweDUwLAoJCS5yb3V0ZV92 YWwgPSBCSVQoMTYpIHwgQklUKDApLAoJfSx7CgkJLyogcHdtMS0wICovCgkJLmJhbmsgPSAwLAoJ CS5waW4gPSAyNywKCQkuZnVuYyA9IDEsCgkJLnJvdXRlX29mZnNldCA9IDB4NTAsCgkJLnJvdXRl X3ZhbCA9IEJJVCgxNiArIDEpLAoJfSwgewoJCS8qIHB3bTEtMSAqLwoJCS5iYW5rID0gMCwKCQku cGluID0gMzAsCgkJLmZ1bmMgPSAyLAoJCS5yb3V0ZV9vZmZzZXQgPSAweDUwLAoJCS5yb3V0ZV92 YWwgPSBCSVQoMTYgKyAxKSB8IEJJVCgxKSwKCX0sewoJCS8qIHB3bTItMCAqLwoJCS5iYW5rID0g MCwKCQkucGluID0gMjgsCgkJLmZ1bmMgPSAxLAoJCS5yb3V0ZV9vZmZzZXQgPSAweDUwLAoJCS5y b3V0ZV92YWwgPSBCSVQoMTYgKyAyKSwKCX0sIHsKCQkvKiBwd20yLTEgKi8KCQkuYmFuayA9IDEs CgkJLnBpbiA9IDEyLAoJCS5mdW5jID0gMiwKCQkucm91dGVfb2Zmc2V0ID0gMHg1MCwKCQkucm91 dGVfdmFsID0gQklUKDE2ICsgMikgfCBCSVQoMiksCgl9LHsKCQkvKiBwd20zLTAgKi8KCQkuYmFu ayA9IDMsCgkJLnBpbiA9IDI2LAoJCS5mdW5jID0gMSwKCQkucm91dGVfb2Zmc2V0ID0gMHg1MCwK CQkucm91dGVfdmFsID0gQklUKDE2ICsgMyksCgl9LCB7CgkJLyogcHdtMy0xICovCgkJLmJhbmsg PSAxLAoJCS5waW4gPSAxMywKCQkuZnVuYyA9IDIsCgkJLnJvdXRlX29mZnNldCA9IDB4NTAsCgkJ LnJvdXRlX3ZhbCA9IEJJVCgxNiArIDMpIHwgQklUKDMpLAoJfSx7CgkJLyogc2Rpby0wX2QwICov CgkJLmJhbmsgPSAxLAoJCS5waW4gPSAxLAoJCS5mdW5jID0gMSwKCQkucm91dGVfb2Zmc2V0ID0g MHg1MCwKCQkucm91dGVfdmFsID0gQklUKDE2ICsgNCksCgl9LCB7CgkJLyogc2Rpby0xX2QwICov CgkJLmJhbmsgPSAzLAoJCS5waW4gPSAyLAoJCS5mdW5jID0gMSwKCQkucm91dGVfb2Zmc2V0ID0g MHg1MCwKCQkucm91dGVfdmFsID0gQklUKDE2ICsgNCkgfCBCSVQoNCksCgl9LHsKCQkvKiBzcGkt MF9yeCAqLwoJCS5iYW5rID0gMCwKCQkucGluID0gMTMsCgkJLmZ1bmMgPSAyLAoJCS5yb3V0ZV9v ZmZzZXQgPSAweDUwLAoJCS5yb3V0ZV92YWwgPSBCSVQoMTYgKyA1KSwKCX0sIHsKCQkvKiBzcGkt MV9yeCAqLwoJCS5iYW5rID0gMCwKCQkucGluID0gMSwKCQkuZnVuYyA9IDIsCgkJLnJvdXRlX29m ZnNldCA9IDB4NTAsCgkJLnJvdXRlX3ZhbCA9IEJJVCgxNiArIDUpIHwgQklUKDUpLAoJfSx7CgkJ LyogZW1tYy0wX2NtZCAqLwoJCS5iYW5rID0gMSwKCQkucGluID0gMjIsCgkJLmZ1bmMgPSAyLAoJ CS5yb3V0ZV9vZmZzZXQgPSAweDUwLAoJCS5yb3V0ZV92YWwgPSBCSVQoMTYgKyA3KSwKCX0sIHsK CQkvKiBlbW1jLTFfY21kICovCgkJLmJhbmsgPSAyLAoJCS5waW4gPSA0LAoJCS5mdW5jID0gMiwK CQkucm91dGVfb2Zmc2V0ID0gMHg1MCwKCQkucm91dGVfdmFsID0gQklUKDE2ICsgNykgfCBCSVQo NyksCgl9LHsKCQkvKiB1YXJ0Mi0wX3J4ICovCgkJLmJhbmsgPSAxLAoJCS5waW4gPSAxOSwKCQku ZnVuYyA9IDIsCgkJLnJvdXRlX29mZnNldCA9IDB4NTAsCgkJLnJvdXRlX3ZhbCA9IEJJVCgxNiAr IDgpLAoJfSwgewoJCS8qIHVhcnQyLTFfcnggKi8KCQkuYmFuayA9IDEsCgkJLnBpbiA9IDksCgkJ LmZ1bmMgPSAyLAoJCS5yb3V0ZV9vZmZzZXQgPSAweDUwLAoJCS5yb3V0ZV92YWwgPSBCSVQoMTYg KyA4KSB8IEJJVCg4KSwKCX0sewoJCS8qIHVhcnQxLTBfcnggKi8KCQkuYmFuayA9IDEsCgkJLnBp biA9IDksCgkJLmZ1bmMgPSAxLAoJCS5yb3V0ZV9vZmZzZXQgPSAweDUwLAoJCS5yb3V0ZV92YWwg PSBCSVQoMTYgKyAxMSksCgl9LCB7CgkJLyogdWFydDEtMV9yeCAqLwoJCS5iYW5rID0gMywKCQku cGluID0gMTMsCgkJLmZ1bmMgPSAxLAoJCS5yb3V0ZV9vZmZzZXQgPSAweDUwLAoJCS5yb3V0ZV92 YWwgPSBCSVQoMTYgKyAxMSkgfCBCSVQoMTEpLAoJfSwKfTsKCj4gCj4gCj4gSGVpa28KPiAKPiAK Pj4+PiBTbyBpIHRoaW5rIHRoZSBzbWFsbGVzdCBjZWxsIGlzIGEgZ3JvdXAsIHdoaWNoIGNvbnRh aW5zIHRoZSBwaW5zIGZvciB0aGUKPj4+PiBwaW4tcm91dGluZy4KPj4+Cj4+PiBUaG91Z2ggdGhh dCBjcmVhdGVzIG1vcmUgQUJJIGJldHdlZW4ga2VybmVsIGFuZCBkZXZpY2V0cmVlIChwaW5ncm91 cAo+Pj4gbmFtZXMpLCB3aGljaCB3aWxsIG1vc3QgbGlrZWx5IGJpdGUgdXMgc29tZSB0aW1lIGlu IHRoZSBmdXR1cmUuIEFsc28gSSdkCj4+PiBsaWtlIHRvIGtlZXAgdGhlc2UgZGVwZW5kZW5jaWVz IGFzIG1pbmltYWwgYXMgcG9zc2libGUsIGFzIGRlcGVuZGluZyBvbgo+Pj4gaG93IG11Y2ggbW9y ZSBmdW5ueSBpbnZlbnRpb25zIHdlIGFjY3VtdWxhdGUsIHdlIG1pZ2h0IHdhbnQgdG8gcmVzdHJ1 Y3R1cmUKPj4+IChvciBzcGxpdCkgdGhlIGRyaXZlciBhdCBzb21lIGxhdGVyIHBvaW50IC0gd2l0 aG91dCBicmVha2luZyBkZXZpY2V0cmVlcy4KPj4+Cj4+Pgo+Pj4gSGVpa28KPj4+Cj4+Pgo+Pj4+ IOWcqCAyMDE3LzUvMTggMTY6NDgsIEhlaWtvIFN0w7xibmVyIOWGmemBkzoKPj4+Pj4gSGkgS2V2 ZXIsIERhdmlkLAo+Pj4+Pgo+Pj4+PiBBbSBEb25uZXJzdGFnLCAxOC4gTWFpIDIwMTcsIDE2OjIx OjA5IENFU1Qgc2NocmllYiBLZXZlciBZYW5nOgo+Pj4+Pj4gSGkgSGVpa28sIExpbnVzLAo+Pj4+ Pj4gICAgICAgIElzIHRoZXJlIGFueSBuZXdzIHRvIGhhbmRsZSB0aGlzIGtpbmQgb2YgSU9NVVg/ Cj4+Pj4+Cj4+Pj4+IEkgd2FzIHRhbGtpbmcgd2l0aCBEYXZpZCBXdSBhYm91dCB0aGF0IGEgc2hv cnQgd2hpbGUgYWdvIGFzIHdlbGwgOi0pIC4KPj4+Pj4KPj4+Pj4gICBGcm9tIHdoYXQgSSd2ZSBo ZWFyZWQsIGluIHRoZSBmdXR1cmUgc29jcyBtYXkgYmUgYWJsZSB0byBzZWxlY3QgdGhhdAo+Pj4+ PiByb3V0aW5nIHRoZW1zZWxmcyBiYXNlZCBvbiB0aGUgaW9tdXggYW5kIGhhdmluZyBoYWQgdGlt ZSB0byBwb25kZXIKPj4+Pj4gdGhlIHdob2xlIGlzc3VlIGZvciBzb21lIHRpbWUgbm93LCBJIGRv IGd1ZXNzIHNvbWUgc29ydCBvZiBsaXN0IHdvdWxkIGJlCj4+Pj4+IHRoZSBsZWFzdCBpbnRydXNp dmUgc29sdXRpb24uCj4+Pj4+Cj4+Pj4+IEl0IHNlZW1zIHdlJ3JlIHRhbGtpbmcgYWJvdXQgb25s eSBhIGhhbmRmdWwgb2Ygc3VjaCByb3V0aW5ncyBwZXIgc29jLAo+Pj4+PiBzbyBJIGd1ZXNzIGhh dmluZyB0aGUgaW9tdXggc2V0dGluZyBjaGVjayBhIGxpc3QKPj4+Pj4KPj4+Pj4gCShwaW4sIHBp bmZ1bmMpIC0+IGdyZi1zZXR0aW5nIGZvciB0aGUgcGluLXJvdXRpbmcKPj4+Pj4KPj4+Pj4gcmVh bGx5IGlzIHRoZSBsZWFzdCBpbnRydXNpdmUgdGhpbmcgdG8gZG8gLSBhcyBpb211eCBzZXR0aW5n cyByZWFsbHkKPj4+Pj4gYXJlbid0IGNoYW5nZWQgdGhhdCBvZnRlbiBvbiBhIHJ1bm5pbmcgZGV2 aWNlIGFuZCBhZGRpbmcgbW9yZQo+Pj4+PiBzdHVmZiBvbiB0b3Agd291bGQganVzdCBjb21wbGlj YXRlIGV2ZXJ5dGhpbmcuCj4+Pj4+Cj4+Pj4+Cj4+Pj4+IEhlaWtvCj4+Pj4+Cj4+Pj4+Cj4+Pj4+ PiBUaGFua3MsCj4+Pj4+PiAtIEtldmVyCj4+Pj4+Pgo+Pj4+Pj4gT24gMDgvMDUvMjAxNiAwNzoz NiBBTSwgSGVpa28gU3TDvGJuZXIgd3JvdGU6Cj4+Pj4+Pj4gSGkgTGludXMsCj4+Pj4+Pj4KPj4+ Pj4+Pgo+Pj4+Pj4+IG9uIHRoZSByazMzOTkgd2UgZm91bmQgYW4gaW50ZXJlc3RpbmcgbmV3IGZl YXR1cmUgYW5kIHdvdWxkIGxpa2UgdG8gZ2V0Cj4+Pj4+Pj4gc29tZSBpbnB1dCBmcm9tIHRoZSBw aW5jdHJsIGV4cGVydCA6LSkgLCBhcyBEb3VnIGFuZCBtZSBjdXJyZW50bHkgYXJlIG9mCj4+Pj4+ Pj4gZGlmZmVyaW5nIG9waW5pb25zIG9uIHdoZXJlIHNwZWNpZmljIGNvbnRyb2wgZWxlbWVudHMg YmVsb25nLgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBJbiBhIG51dHNoZWxsIG9uIHRoZSByazMz OTkgc29tZSB0aGluZ3MgbGlrZSBvbmUgc3BlY2lmaWMgdWFydCBjYW4gdXNlCj4+Pj4+Pj4gbXVs dGlwbGUgcGlucyB0byBvdXRwdXQgZGF0YSwgYnV0IGNvbnRyb2wgb2YgdGhhdCBzZWVtcyB0byBi ZSBzcGxpdC4gVGhlCj4+Pj4+Pj4gYWN0dWFsIHBpbiBjb25maWcgaXMgaWRlbnRpY2FsIGZvciBh bGwgcGlucyAtIGVhY2ggbmVlZHMgdG8gYmUgY29uZmlndXJlZAo+Pj4+Pj4+IHRvIGZ1bmN0aW9u IDIsIHB1bGxzIHNldCBldGMuIFRoZW4gc29tZXdoZXJlIGJldHdlZW4gdGhlIHBpbiBpby1jZWxs cyBhbmQKPj4+Pj4+PiB0aGUgdWFydCBpdCBzZWVtcyB0byBoYXZlIHNvbWUgc29ydCBvZiBzd2l0 Y2ggdG8gZGVjaWRlIHRvIHdoaWNoIHBpbiB0bwo+Pj4+Pj4+IGFjdHVhbGx5IHJvdXRlIHRoZSBk YXRhLgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiArLS0tLS0tLSsgICAgKy0tLS0tLS0tKyAgLy0g R1BJTzRfQjEgKHBpbm11eCAyKQo+Pj4+Pj4+Cj4+Pj4+Pj4gfCB1YXJ0MiB8IC0tIHwgc3dpdGNo IHwgLS0tIEdQSU80X0MxIChwaW5tdXggMikKPj4+Pj4+Pgo+Pj4+Pj4+ICstLS0tLS0tKyAgICAr LS0tLS0tLS0rICBcLSBHUElPNF9DNCAocGlubXV4IDIpCj4+Pj4+Pj4gKHN3aXRjaCBzZWxlY3Rz IG9uZSBvZiB0aGUgMyBwaW5zIHRvIGFjdHVhbGx5IG91dHB1dCBkYXRhIHRvKQo+Pj4+Pj4+Cj4+ Pj4+Pj4KPj4+Pj4+PiBTbyB0aGUgcXVlc3Rpb24gbm93IGlzLCBzaG91bGQgdGhlIHBpbmN0cmwg ZHJpdmVyIGFsc28gZmxpcCB0aGF0IHN3aXRjaCB0bwo+Pj4+Pj4+IHRoZSBjb3JyZWN0IHBvc2l0 aW9uIGl0c2VsZiB3aGVuIHBpbi1mdW5jdGlvbiAyIG9mIHNheSBncGlvNF9icSBnZXRzCj4+Pj4+ Pj4gc2VsZWN0ZWQgb3IgaXMgdGhhdCByb3V0aW5nIG91dHNpZGUgb2YgcGluY3RybCdzIHNjb3Bl Pwo+Pj4+Pj4+Cj4+Pj4+Pj4gLS0tLS0KPj4+Pj4+Pgo+Pj4+Pj4+IEkgaG9wZSB0byBoYXZlIHBy ZXNlbnRlZCB0aGUgY29yZSBpc3N1ZSBhYm92ZSBzb21ld2hhdCBuZXV0cmFsbHksIGJlbG93Cj4+ Pj4+Pj4gYXJlCj4+Pj4+Pj4gbXkgcGVyc29uYWwgd29ycmllcyBhYm91dCBkb2luZyB0aGF0IGlu IHBpbmN0cmwgOi0pIC4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gQXBhcnQgZnJvbSBpdCBmZWVs aW5nICJib2x0ZWQtb24iIHRvIG1lLCBJIGhhdmUgdHdvIG1haW4gd29ycmllcyB3aXRoIHRoYXQK Pj4+Pj4+PiBhcHByb2FjaDoKPj4+Pj4+PiAoMSkgUmlnaHQgbm93IHRoZSB1bnVzZWQgcGlucyBh cmUgcmVhbGx5IHVudXNlZCBvbiB0aGUgc2FtZSBpb211eCwgc28gd2hlbgo+Pj4+Pj4+IGZsaXBw aW5nIHRoZSBzd2l0Y2ggaXQgZXNzZW50aWFsbHkgZG9lcwo+Pj4+Pj4+Cj4+Pj4+Pj4gICAgIHVh cnQtc291dCAgICB1bnVzZWQKPj4+Pj4+Pgo+Pj4+Pj4+ICAgICAgfChpb211eDIpICAgIHwoaW9t dXgyKQo+Pj4+Pj4+Cj4+Pj4+Pj4gKy0tLS0tLS0tLS0rICstLS0tLS0tLS0tKwo+Pj4+Pj4+Cj4+ Pj4+Pj4gfCBncGlvNF9iMCB8IHwgZ3BpbzRfYzAgfAo+Pj4+Pj4+Cj4+Pj4+Pj4gKy0tLS0tLS0t LS0rICstLS0tLS0tLS0tKwo+Pj4+Pj4+Cj4+Pj4+Pj4gZ29pbmcgdG8KPj4+Pj4+Pgo+Pj4+Pj4+ ICAgICB1bnVzZWQgICAgICAgdWFydC1zb3V0Cj4+Pj4+Pj4KPj4+Pj4+PiAgICAgIHwoaW9tdXgy KSAgICB8KGlvbXV4MikKPj4+Pj4+Pgo+Pj4+Pj4+ICstLS0tLS0tLS0tKyArLS0tLS0tLS0tLSsK Pj4+Pj4+Pgo+Pj4+Pj4+IHwgZ3BpbzRfYjAgfCB8IGdwaW80X2MwIHwKPj4+Pj4+Pgo+Pj4+Pj4+ ICstLS0tLS0tLS0tKyArLS0tLS0tLS0tLSsKPj4+Pj4+Pgo+Pj4+Pj4+IGJ1dCBub3RoaW5nIGtl ZXBzIGRlc2lnbmVycyBmcm9tIGRvaW5nCj4+Pj4+Pj4KPj4+Pj4+PiAgICAgdWFydC1zb3V0ICAg IHNwZWNpYWwxCj4+Pj4+Pj4KPj4+Pj4+PiAgICAgIHwoaW9tdXgyKSAgICB8KGlvbXV4MikKPj4+ Pj4+Pgo+Pj4+Pj4+ICstLS0tLS0tLS0tKyArLS0tLS0tLS0tLSsKPj4+Pj4+Pgo+Pj4+Pj4+IHwg Z3BpbzRfYjAgfCB8IGdwaW80X2MwIHwKPj4+Pj4+Pgo+Pj4+Pj4+ICstLS0tLS0tLS0tKyArLS0t LS0tLS0tLSsKPj4+Pj4+Pgo+Pj4+Pj4+IGdvaW5nIHRvCj4+Pj4+Pj4KPj4+Pj4+PiAgICAgc3Bl Y2lhbDIgICAgIHVhcnQtc291dAo+Pj4+Pj4+Cj4+Pj4+Pj4gICAgICB8KGlvbXV4MikgICAgfChp b211eDIpCj4+Pj4+Pj4KPj4+Pj4+PiArLS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0rCj4+Pj4+Pj4K Pj4+Pj4+PiB8IGdwaW80X2IwIHwgfCBncGlvNF9jMCB8Cj4+Pj4+Pj4KPj4+Pj4+PiArLS0tLS0t LS0tLSsgKy0tLS0tLS0tLS0rCj4+Pj4+Pj4KPj4+Pj4+PiBzb21ld2hlcmUgZG93biB0aGUgcm9h ZCwgc28gcmVseWluZyBvbiBmb2xsb3dpbmcgdGhlIHNlbGVjdGVkIGlvbXV4IGZlZWxzCj4+Pj4+ Pj4gbm90IGZ1dHVyZSBwcm9vZi4KPj4+Pj4+Pgo+Pj4+Pj4+ICgyKSBMb29raW5nIGF0IFswXSB3 ZSBhbHJlYWR5IGhhdmUgYSBzaW1pbGFyIGNhc2UsIHdoZXJlIHdlIGNvbmZpZ3VyZSB0aGUKPj4+ Pj4+PiBwaW5zIGZvciByZ21paSBidXQgc3RpbGwgdGVsbCB0aGUgZ21hYyBjb250cm9sbGVyIHRo YXQgaXQgaXMgc3VwcG9zZWQgdG8KPj4+Pj4+PiBkbwo+Pj4+Pj4+IHJnbWlpIGluc3RlYWQgb2Yg cm1paS4KPj4+Pj4+Pgo+Pj4+Pj4+IEhlcmUgdGhlIHBpbm11eCBpcyB0aGUgc2FtZSBmb3IgYWxs IHBpbnMsIHJtaWkganVzdCB1c2VzIGxlc3MgcGlucyB3aGVuCj4+Pj4+Pj4gY29tcGFyZWQgdG8g cmdtaWksIHNvIGJpbmRpbmcgdGhhdCB0byB0aGUgcGlubXV4IGlzbid0IGV2ZW4gcG9zc2libGUu Cj4+Pj4+Pj4KPj4+Pj4+PiBBbmQgZG9pbmcgaXQgb25lIHdheSBoZXJlIGFuZCBhbm90aGVyIHdh eSBmb3IgdGhlIHN3aXRjaCBmZWVscyB2ZXJ5Cj4+Pj4+Pj4gc3RyYW5nZS4KPj4+Pj4+Pgo+Pj4+ Pj4+Cj4+Pj4+Pj4gSSBob3BlIHRoaXMgb3Zlcmx5IGxvbmcgbWFpbCB3YXMgbm90IHRvIGNvbmZ1 c2luZyBhbmQgaG9wZSBmb3Igc29tZSB3b3Jkcwo+Pj4+Pj4+IG9mIHdpc2RvbSA7LSkKPj4+Pj4+ Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gQmlnIHRoYW5rcwo+Pj4+Pj4+IEhlaWtvCj4+Pj4+Pj4KPj4+Pj4+ Pgo+Pj4+Pj4+IFswXQo+Pj4+Pj4+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvY2dpdC9saW51eC9r ZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2FyY2gvCj4+Pj4+Pj4gYXJtL2Jvb3Qv ZHRzL3JrMzI4OC1taXFpLmR0cyNuMTM5Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4+Pj4gTGludXgtcm9j a2NoaXAgbWFpbGluZyBsaXN0Cj4+Pj4+Pj4gTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFk Lm9yZwo+Pj4+Pj4+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtcm9ja2NoaXAKPj4+Pj4KPj4+Pj4KPj4+Pj4KPj4+Pj4KPj4+Pj4KPj4+Pgo+Pj4KPj4+ Cj4+Pgo+Pj4KPj4+Cj4+Cj4+Cj4+Cj4gCj4gCj4gCj4gCj4gCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0 CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo=