UGx1ZyZwbGF5LiBJbiBmYWN0LCBpdCB3b3JrZWQgYmVmb3JlIEkgaGFkIGZvdW5kIG91dCBob3cg dG8gaW5zdGFsbAp0aGUgcHJpbnRlci4gQXMgc29vbiBhcyBJIGZvdW5kIHRoZSBkaWFsb2cgdGhl IHByaW50ZXIgd2FzIGluc3RhbGxlZCAmCnJlYWR5LgoKSSBrbm93IHRoYXQgSSd2ZSB1c2VkIGl0 IGJlZm9yZSBvbiBTbGFja3dhcmUgd2hpY2ggaXNuJ3QgYXMgdXNlcgpmcmllbmRseSwgd2hlcmUg aXQgd29ya2VkIG91dCBvZiB0aGUgYm94IHdpdGggR2hvc3RzY3JpcHQgdXNpbmcgdGhlCmdkaSBk cml2ZXIgKG5vdCByZWxhdGVkIHRvIHRoZSBXaW5kb3dzIEdESSsgc3R1ZmYpIGFuZCByZWRpcmVj dGluZyBpdHMKb3V0cHV0IHRvIHRoZSBwcmludGVyIGRldmljZS4gU28gSSdtIHZlcnkgc3VyZSBp dCdzIG5vdCBhIHZpcnR1YWwKdGhpbmcuCgpJIGNhbiBvbmx5IHZvdWNoIGZvciBteSBvd24gTUwt MTYxMCB0aG91Z2guIEkgc3Ryb25nbHkgc3VzcGVjdCB0aGF0CnRoZSBNTC0xNngwIGlzIGp1c3Qg YSBmYW1pbHkgb2YgbWlub3IgdXBkYXRlcyBidXQgdGhlIG5ldyBvbmVzIG1pZ2h0CmJlIGRpZmZl cmVudC4gQW55Ym9keSBlbHNlIG9uIHRoZSBsaXN0IGhhdmUgZXhwZXJpZW5jZSB3aXRoIHRoZW0/ CgpLaW5kIHJlZ2FyZHMsClBldGVyCgoyMDA5LzExLzI2IFRhbWFzIFJ1ZG5haSA8dGFtYXMucnVk bmFpQGdtYWlsLmNvbT46Cj4gT24gVGh1LCBOb3YgMjYsIDIwMDkgYXQgMTE6NTMgQU0sIFBldGVy IEJpbmRlbHMgPGRhc2NhbmR5QGdtYWlsLmNvbT4gd3JvdGU6Cj4+IElmIHlvdSdyZSB0YWxraW5n IGFib3V0IHRoZSBsYXNlciBwcmludGVycyAobGlrZSBtZW50aW9uZWQgaW4gdGhlCj4+IGV0Y2hp bmcgdG9waWMpLCBpdCdzIGEgdHJpdmlhbCB0aGluZyB1bmRlciBVYnVudHUgLSBqdXN0IGNvbm5l Y3QgJgo+PiBwcmVzcyBwcmludC4gR2V0dGluZyBXaW5kb3dzIFZpc3RhIHRvIHByaW50IHRvIGl0 IHRvb2sgbW9yZSB3b3JrIChib3RoCj4+IGxvY2FsICYgbmV0d29yayksIFdpbmRvd3MgWFAgeWV0 IGFnYWluIG1vcmUgd29yay4KPgo+IFRoYW5rcyBQZXRlciwKPgo+IEkgd2FzIGp1c3QgY29uY2Vy biBpZiB0aGUgcHJpbnRlciBpcyAid2lucHJpbnRlciIuIFdpdGggdGhlIEhQCj4gZGVza2pldHMg SSBoYWQgdGhpcyBuaWNlIGV4cGVyaWVuY2UgbGlrZSB5b3Ugc2FpZCwganVzdCAicGx1ZyBhbmQK PiB3b3JrIi4gV2l0aCB0aGlzIERlbGwgdGhhdCBJIGhhdmUgaXQganVzdCBkb2VzIG5vdCB3b3Jr IHNvIEkgdXNlIHRoZQo+IFZpcnR1YWxib3ggKyBXaW5YUCB0byBwcmludGluZyBhbmQgc2Nhbm5p bmcgYnV0IHRoYXQgaXMgbm90IGEgdmVyeQo+IHJlbGlhYmxlIG1ldGhvZC4KPgo+IFNvIGFyZSB5 b3Ugc2F5aW5nIHRoYXQgU2Ftc3VuZyBwcmludGVycyBhcmUgc3VwcG9ydGVkIGJ5IGxpbnV4IC8g VWJ1bnR1Pwo+Cj4gVGhhbmtzCj4gVGFtYXMKPgo+Cj4KPj4KPj4gS2luZCByZWdhcmRzLAo+PiBQ ZXRlciBCaW5kZWxzCj4+Cj4+IDIwMDkvMTEvMjYgVGFtYXMgUnVkbmFpIDx0YW1hcy5ydWRuYWlA Z21haWwuY29tPjoKPj4+IFRoYW5rcyBndXlzIQo+Pj4KPj4+IFNvIG1hbnkgcmVwbGllcywgZGlk IG5vdCBleHBlY3QgdGhhdCBtdWNoLiA6LSkKPj4+Cj4+PiBBbnl3YXksIGl0IHNlZW1zIHRoYXQg bm9uZSBvZiB0aGUgbWV0aG9kcyB3b3JrZWQgc28gZmFyLiBXaXRoIHRoZQo+Pj4gd2luZG93IGNs ZWFuZXIgSSBnb3QgdGhlIGJlc3QgcmVzdWx0czogVGhlIGxpcXVpZCBiZWNvbWUgYmxhY2ssIHNv IEkKPj4+IGZlbHQgbHVja3kuIEFmdGVyIGNsZWFuaW5nIG9mZiB0aGUgbGlxdWlkIEkgcHV0IHRo ZSBjYXJ0cmlkZ2UgdG8gdGhlCj4+PiBwcmludGVyLCBhbmQgc29tZSBvZiB0aGUgbWljcm8gbGlu ZXMgc3RhcnRlZCB0byB3b3JrIGJ1dCBvbmx5Cj4+PiBtb21lbnRhcmlseS4gSSBndWVzcyBJIG5l ZWQgdG8gYnV5IG5ldyBpbmsuCj4+Pgo+Pj4gQW55d2F5LCBpZiBJIG5lZWQgdG8gYnV5IG5ldyBp bmsgcHJvYmFibHkgSSB3aWxsIGxpc3RlbiB0byB5b3UsCj4+PiBYaWFvZmFuIGFuZCBidXkgbmV3 IHByaW50ZXIgaW5zdGVhZC4gVGhpcyBvbmUgZG9lcyBub3QgZXZlbiB3b3JrIHdpdGgKPj4+IExp bnV4ICh3aW5wcmludGVyIG9yIGhvdyB0aGV5IGNhbGwgaXQpLiBEbyB5b3Uga25vdyBpZiB0aGVz ZSBTYW1zdW5nCj4+PiBwcmludGVycyB3b3JrIHdpdGggTGludXg/Cj4+Pgo+Pj4gVGhhbmtzLAo+ Pj4gVGFtYXMKPj4+Cj4+Pgo+Pj4KPj4+IE9uIFRodSwgTm92IDI2LCAyMDA5IGF0IDE6MjYgQU0s IFhpYW9mYW4gQ2hlbiA8eGlhb2ZhbmNAZ21haWwuY29tPiB3cm90ZToKPj4+PiBPbiBXZWQsIE5v diAyNSwgMjAwOSBhdCAxMDoxMiBQTSwgVGFtYXMgUnVkbmFpIDx0YW1hcy5ydWRuYWlAZ21haWwu Y29tPiB3cm90ZToKPj4+Pj4gSGksCj4+Pj4+Cj4+Pj4+IEkgaGF2ZSBhIERlbGwgQUlPIDk1MCBh bmQgSSBkaWQgbm90IHVzZSB0aGF0IHByaW50ZXIgZm9yIGEgeWVhci4KPj4+Pj4gWWVzdGVyZGF5 IEkgd2FudGVkIHRvIHByaW50IHNvbWV0aGluZyBhbmQgcmVhbGlzZWQgdGhhdCB0aGUgYmxhY2sg aW5rCj4+Pj4+IGRvZXMgbm90IHdvcmsuIEkgdGhpbmsgaXQgY291bGQgaGF2ZSBiZWVuIGRyaWVk IG91dD8gSXMgdGhlcmUgYW55IHdheQo+Pj4+PiB0byBnZXQgaXQgYmFjaywgb3Igc2hvdWxkIG5v dCBib3RoZXIganVzdCBidXkgYSBuZXcgY2FydHJpZGdlPyAoYnV0Cj4+Pj4+IHRoZW4gSSB3b24n dCB1c2UgdGhhdCBhZ2FpbiBmb3IgYSB5ZWFyIHNvIGR1bm5vIHdoYXQgdG8gZG8gd2l0aCBhbgo+ Pj4+PiBpbmtqZXQgaWYgdGhhdCBoYXBwZW5zIGV2ZXJ5IG9mdGVuLi4uKSBBbnkgYWR2aXNlPwo+ Pj4+Pgo+Pj4+Cj4+Pj4gQnV5IGEgbmV3IGNhcnRyaWRnZS4gT3IgYmV0dGVyIGdpdmUgdXAgdXNp bmcgdGhlIElua2pldC4gTGFzZXIKPj4+PiBwcmludGVyIGFyZSBnZXR0aW5nIGNoZWFwZXIgbm93 IGFuZCB0aGV5IGFyZSBlYXNpZXIgdG8KPj4+PiBtYWludGFpbiBhbmQgbW9yZSBlY29ub21pYyB0 byB1c2UgaW4gdGhlIGxvbmcgcnVuLgo+Pj4+IFRoZSBtYWluIHByaW50ZXIgd2UgdXNlIG5vdyBp cyBhIDIuNSB5ZWFycyBvbGQgU2Ftc3VuZyBTQ1gtNDIwMAo+Pj4+IChtb25vIE1GUCkuIEFuZCBt eSBwaG90byBwcmludGVyIChTYW1zdW5nIFNQUC0yMDIwLCBhcm91bmQgMwo+Pj4+IHllYXIgb2xk KSBpcyBub3QgwqBhbiBpbmtqZXQsIGl0IGlzIHVzaW5nIER5ZSBEaWZmdXNpb24gVGhlcm1hbCBU cmFuc2Zlcgo+Pj4+IGFuZCBpdCB3b3JrcyB3ZWxsLiBUaGUgb2xkIENhbm9uIElua2pldCBpcyBz dGlsbCBhbGl2ZSBidXQgd2Ugc2VsZG9tCj4+Pj4gdXNlIGl0Lgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+ IC0tCj4+Pj4gWGlhb2ZhbiBodHRwOi8vbWN1ZWUuYmxvZ3Nwb3QuY29tCj4+Pj4gLS0KPj4+PiBo dHRwOi8vd3d3LnBpY2xpc3QuY29tIFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKPj4+PiBWaWV3 L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdAo+Pj4+IGh0dHA6Ly9tYWlsbWFuLm1p dC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cj4+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IC0tCj4+ PiAvKiB3d3cubWN1aG9iYnkuY29tICovIGludCBtYWluKCkgeyBjaGFyICphLCpzLCpxOyBwcmlu dGYocz0iLyoKPj4+IHd3dy5tY3Vob2JieS5jb20gKi8gaW50IG1haW4oKSB7IGNoYXIgKmEsKnMs KnE7IHByaW50ZihzPSVzJXMlcywKPj4+IHE9JXMlcyVzJXMscyxxLHEsYT0lcyVzJXMlcyxxLHEs cSxhLGEscSk7IH0iLAo+Pj4gcT0iXCIiLHMscSxxLGE9IlxcIixxLHEscSxhLGEscSk7IH0KPj4+ Cj4+PiAtLQo+Pj4gaHR0cDovL3d3dy5waWNsaXN0LmNvbSBQSUMvU1ggRkFRICYgbGlzdCBhcmNo aXZlCj4+PiBWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdAo+Pj4gaHR0cDov L21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QKPj4+Cj4+Cj4+IC0tCj4+ IGh0dHA6Ly93d3cucGljbGlzdC5jb20gUElDL1NYIEZBUSAmIGxpc3QgYXJjaGl2ZQo+PiBWaWV3 L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdAo+PiBodHRwOi8vbWFpbG1hbi5taXQu ZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo+Pgo+Cj4KPgo+IC0tCj4gLyogd3d3Lm1jdWhv YmJ5LmNvbSAqLyBpbnQgbWFpbigpIHsgY2hhciAqYSwqcywqcTsgcHJpbnRmKHM9Ii8qCj4gd3d3 Lm1jdWhvYmJ5LmNvbSAqLyBpbnQgbWFpbigpIHsgY2hhciAqYSwqcywqcTsgcHJpbnRmKHM9JXMl cyVzLAo+IHE9JXMlcyVzJXMscyxxLHEsYT0lcyVzJXMlcyxxLHEscSxhLGEscSk7IH0iLAo+IHE9 IlwiIixzLHEscSxhPSJcXCIscSxxLHEsYSxhLHEpOyB9Cj4KPiAtLQo+IGh0dHA6Ly93d3cucGlj bGlzdC5jb20gUElDL1NYIEZBUSAmIGxpc3QgYXJjaGl2ZQo+IFZpZXcvY2hhbmdlIHlvdXIgbWVt YmVyc2hpcCBvcHRpb25zIGF0Cj4gaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3Rp bmZvL3BpY2xpc3QKPgoKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20gUElDL1NYIEZBUSAmIGxp c3QgYXJjaGl2ZQpWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdApodHRwOi8v bWFpbG1hbi5taXQuZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo=