QXJlIHlvdSBzZXR0aW5nIEdJRT8NCg0KQ2hlZXJzLA0KLU5laWwNCg0KDQoNCg0KT24gMi8yOC8y MDE4IDM6MjYgUE0sIENhcmV5IEZpc2hlciB3cm90ZToNCj4gV2hhdCBJIG1lYW50IHdhcywgdGhl cmUgYXJlIG5vIGFuYWxvZyBwZXJpcGhlcmFscyBvbiBQT1JUQyBzbyB0aGVyZSBpcyBubyBBTlNF TEMgcmVnaXN0ZXIuDQo+DQo+IFRoZSBtYWluIHByb2JsZW0gSSdtIGhhdmluZyB3aXRoIHVzaW5n IHRoZSBzYW1wbGUgY29kZSBpcyB0aGUgSW50ZXJydXB0IGZsYWcsIFBJUjMsU1NQMUlGLCBuZXZl ciBnZXRzIGFzc2VydGVkLiAgVGhlIFNDTCBhbmQgU0RBIGxpbmVzIHNlZW0gdG8gYWN0IGNvcnJl Y3RseSB3aGVuIHZpZXdlZCBvbiBhIHNjb3BlIGJ1dCB0aGUgY29kZSBzdG9wcyB3aGVuIHdhaXRp bmcgZm9yIHRoZSBJbnRlcnJ1cHQgZmxhZywgUElSMyxTU1AxSUYsIHRvIGdldCBhc3NlcnRlZC4N Cj4NCj4gQ2FyZXkgRmlzaGVyIOKUgiBEaXJlY3RvciBvZiBFbmdpbmVlcmluZw0KPiBQIDc3MC0y MDktMDAxMiBleHQuIDIwMzENCj4gd3d3Lm9tbmltZXRyaXgubmV0DQo+DQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IHBpY2xpc3QtYm91bmNlc0BtaXQuZWR1IFttYWlsdG86 cGljbGlzdC1ib3VuY2VzQG1pdC5lZHVdIE9uIEJlaGFsZiBPZiBSYXkgSGFkZGFkDQo+IFNlbnQ6 IFdlZG5lc2RheSwgRmVicnVhcnkgMjgsIDIwMTggMjo0MiBQTQ0KPiBUbzogTWljcm9jb250cm9s bGVyIGRpc2N1c3Npb24gbGlzdCAtIFB1YmxpYy4gPHBpY2xpc3RAbWl0LmVkdT4NCj4gU3ViamVj dDogUkU6IFtQSUNdIEkyQyBNb2R1bGUgb24gMThGNjdLNDANCj4NCj4gQ2FyZXksDQo+DQo+IERl c3BpdGUgbm90IGV4cGVjdGluZyBhbnkgYW5hbG9nIHNpZ25hbHMsIHlvdSBzdGlsbCBoYXZlIHRv IGRpc2FibGUgdGhlIGFuYWxvZyBpbnB1dCB0byBlbnN1cmUgdGhhdCB5b3VyIEkyQyBsaW5lcyBo YXZlIHRoZSBjb3JyZWN0IGltcGVkYW5jZS4gSXQgbWF5IHNlZW0gaWxsb2dpY2FsIGJ1dCB0aGF0 J3MgdGhlIHdheSB0aGUgSyBzZXJpZXMgb2YgUElDcyB3b3Jrcy4NCj4NCj4gQmVzdCwNCj4gUmF5 DQo+DQo+IENhcmV5IEZpc2hlciB3cm90ZToNCj4+IFJheSwNCj4+DQo+PiBUaGFuayB5b3UgZm9y IHRoZSByZXNwb25zZS4NCj4+DQo+PiBJJ3ZlIHNldCBTU1AxQ09OMS5TU1BFTiB0byBjb25maWd1 cmUgdGhlIHBpbnMuIFRoZXJlIGFyZSBubyBhbmFsb2dzIG9uDQo+PiBQb3J0QyBzbyBubyBuZWVk IHRvIGNvbmZpZ3VyZSBBTlNFTEMuIFRoZSBwb3J0IHBpbiBhc3NpZ25tZW50cyBkZWZhdWx0DQo+ PiB0byB0aGUgY29ycmVjdCB2YWx1ZXMgYXQgcG93ZXIgb24gc28gbm8gbmVlZCB0byBtZXNzIHdp dGggdGhlIFBQUyByZWdpc3RlcnMuDQo+Pg0KPj4gV2hhdCBlbHNlIG5lZWRzIHRvIGJlIGRvbmU/ DQo+Pg0KPj4gQ2FyZXkgRmlzaGVyDQo+Pg0KPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4+IEZyb206IHBpY2xpc3QtYm91bmNlc0BtaXQuZWR1IFttYWlsdG86cGljbGlzdC1ib3VuY2Vz QG1pdC5lZHVdIE9uDQo+PiBCZWhhbGYgT2YgUmF5IEhhZGRhZA0KPj4gU2VudDogVHVlc2RheSwg RmVicnVhcnkgMjcsIDIwMTggMzo1NiBQTQ0KPj4gVG86IE1pY3JvY29udHJvbGxlciBkaXNjdXNz aW9uIGxpc3QgLSBQdWJsaWMuIDxwaWNsaXN0QG1pdC5lZHU+DQo+PiBTdWJqZWN0OiBSZTogW1BJ Q10gSTJDIE1vZHVsZSBvbiAxOEY2N0s0MA0KPj4NCj4+IENhcmV5LA0KPj4NCj4+IEFsbCBvdGhl ciBmdW5jdGlvbnMgb24gdGhvc2UgcGlucyBtdXN0IGJlIGRpc2FibGVkIGluIHlvdXIgaGVhZGVy Lg0KPj4gT25seSB0aGUgU0NMIGFuZCBTREEgb3V0cHV0cyBjYW4gYmUgZW5hYmxlLiBSZWZlciB0 byB0aGUgc3BlYyBzaGVldCBzbw0KPj4gc2V0IHlvdXIgcmVnaXN0ZXJzIHRvIGRpc2FibGUgdGhv c2UgZnVuY3Rpb25zLg0KPj4NCj4+IFJheQ0KPj4NCj4+DQo+PiBDYXJleSBGaXNoZXIgd3JvdGU6 DQo+Pj4gSSdtIGhhdmluZyBhIHRlcnJpYmxlIHRpbWUgdHJ5aW5nIHRvIGdldCB0aGUgSTJDIG1v ZHVsZSBvbiB0aGUNCj4+PiAxOEY2N0s0MCB3b3JraW5nLiBNeSB0ZXN0IGNvZGUgaXMgcG9zdGVk IGJlbG93LiBUaGlzIGNvZGUgYW5kIHRoZSBJMkMNCj4+PiBtb2R1bGUgc2VlbSB2ZXJ5IHNpbXBs ZSBzbyBJIG11c3QgYmUgbWlzc2luZyBzb21ldGhpbmcgc2ltcGxlLg0KPj4+IFRoaXMgY29kZSB0 cmllcyB0byByZWFkIGFkZHJlc3MgMDAwMCBvZiBhbiBhdHRhY2hlZCAyNExDNTEyIEVFUFJPTS4g SQ0KPj4+IGtub3cgdGhlIGhhcmR3YXJlIGlzIGdvb2QgYmVjYXVzZSBJIGNhbiB1c2UgUGljIEJh c2ljIFBybyBhbmQgcmVhZA0KPj4+IGFuZCB3cml0ZSB0aGUgRUVQUk9NIHVzaW5nIEkyQy4NCj4+ PiBUaGUgY29kZSBJJ20gdXNpbmcgY2FtZSBvZmYgYSBmb3J1bSBvbiB0aGUgTWljcm9jaGlwIFN1 cHBvcnQgd2Vic2l0ZS4NCj4+PiBJdCBpcyAiYnVsbGV0IHByb29mIi4gSGEuDQo+Pj4NCj4+PiBJ J3ZlIHB1dCBkZWJ1Z2dpbmcgc3RhdGVtZW50cyBpbiB0aGUgY29kZSBhbmQgd2hhdCBJJ3ZlIGZv dW5kIGlzIHRoYXQNCj4+PiB0aGUgSW50ZXJydXB0IGZsYWcsIFBJUjMsU1NQMUlGLCBuZXZlciBn ZXRzIGFzc2VydGVkLg0KPj4+DQo+Pj4gQW55IHBvaW50ZXJzIHdvdWxkIGJlIGdyZWF0bHkgYXBw cmVjaWF0ZWQuDQo+Pj4NCj4+Pg0KPj4+ICdpMmN0ZXN0LnBicA0KPj4+ICdhbm90aGVyIHRyeSBh dCByZWFkaW5nIEkyQyBkYXRhIGZyb20gMjRMQzUxMg0KPj4+DQo+Pj4gJ1N0YXJ0IENvbmRpdGlv bg0KPj4+ICdDb250cm9sIEJ5dGUgZm9yIHdyaXRlDQo+Pj4gJ0hpZ2ggYWRkcmVzcyBieXRlDQo+ Pj4gJ0xvdyBhZGRyZXNzIGJ5dGUNCj4+PiAnU3RhcnQgQ29uZGl0aW9uDQo+Pj4gJ0NvbnRyb2wg Qnl0ZSBmb3IgcmVhZA0KPj4+ICdSZWFkIGluIGRhdGEgYnl0ZQ0KPj4+ICdSZXR1cm4gd2l0aCBO QUNLDQo+Pj4gJ1N0b3AgQ29uZGl0aW9uDQo+Pj4NCj4+Pg0KPj4+IGFzbQ0KPj4+ICNkZWZpbmUg TWVtdG9wIDB4MTAwMDAgICAgICAgO2hpZ2VzdCBtZW1vcnkgaW4gdGhlIDE4RjY3azQwIHByb2Nl c3Nvcg0KPj4+IFN0YXJ0YWRkcmVzcyA9ICAgTWVtVG9wLTgwMA0KPj4+IFNEQSA9IDQNCj4+PiBT Q0wgPSAzDQo+Pj4NCj4+PiAgICAgIE9SRyBTdGFydGFkZHJlc3MNCj4+Pg0KPj4+IDsqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN Cj4+PiAgIDsNCj4+PiAgIDsgIDI0TEMyNTYgSTJDIFNpbmdsZSBCeXRlIFJlYWQgUm91dGluZXMg IDsNCj4+Pg0KPj4+ICAgOw0KPj4+ICAgOw0KPj4+IF9JMkNURVNUMQ0KPj4+ICAgICAgICAgICAg IHJjYWxsICAgSTJDSW5pdA0KPj4+DQo+Pj4gO0VFX1JEDQo+Pj4gICAgICAgICAgICAgcmNhbGwg ICBJMkNTdHJ0ICAgICAgICAgO3NlbmQgSTJDIFNUQVJUDQo+Pj4gICAgICAgICAgICAgbW92bHcg IGgnQTYnDQo+Pj4gICAgIHJjYWxsICAgSTJDU2VuZCAgICAgICAgIDtzZW5kIGRldmljZSBhZGRy ZXNzIChjb250cm9sIGJ5dGUpDQo+Pj4gICAgICAgICAgICAgIG1vdmx3ICAgaCcwMCcNCj4+PiAg ICAgcmNhbGwgICBJMkNTZW5kICAgICAgICAgO3NlbmQgYWRkcmVzcyBoaSBieXRlDQo+Pj4gICAg ICAgICAgICAgIG1vdmx3ICAgaCcwMCcNCj4+PiAgICAgcmNhbGwgICBJMkNTZW5kICAgICAgICAg O3NlbmQgYWRkcmVzcyBsbyBieXRlDQo+Pj4gICAgIHJjYWxsICAgSTJDU3RydCAgICAgICAgIDtz ZW5kIEkyQyBTVEFSVA0KPj4+ICAgICAgICAgICAgICBtb3ZsdyAgIGgnQTcnDQo+Pj4gICAgIHJj YWxsICAgSTJDU2VuZCAgICAgICAgIDtzZW5kIGRldmljZSBhZGRyZXNzIChjb250cm9sIGJ5dGUp DQo+Pj4gRUVfUjENCj4+PiAgICAgICAgICAgICByY2FsbCAgIEkyQ1JjdiAgICAgICAgICA7cmVj ZWl2ZSBtb2RlIChyZWNlaXZlIGJ5dGUpDQo+Pj4gICAgICAgICAgICAgbW92d2YgICBfdGVzdGJ5 dGUxDQo+Pj4gICAgIHJjYWxsICAgSTJDTmFjayAgICAgICAgIDtzaWduYWwgZW5kIG9mIHJlY2Vp dmUNCj4+PiAgICAgcmNhbGwgICBJMkNTdG9wcCAgICAgICAgICAgICAgICA7c2VuZCBTVE9QDQo+ Pj4gICAgIHJldHVybiAgICAgICAgICAgICAgICAgIDsNCj4+Pg0KPj4+ICAgOyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPj4+ ICAgOw0KPj4+ICAgOyAgSTJDIHByaW1pdGl2ZXMNCj4+PiAgIDsNCj4+PiAgIDsgIFNTUEFERCA9 ICgoRm9zYy9JMkNjbG9jaykvNCktMSAge2Zvcm11bGEgZnJvbSBBTjczNX0gIDsNCj4+Pg0KPj4+ IEkyQ0luaXQNCj4+PiAgICAgICAgICAgICBic2YgUElFMyxTU1AxSUUgIDsgZW5hYmxlIHRoZSBJ bnRlcnJ1cHQgZmxhZywgUElSMyxTU1AxSUYNCj4+PiAgICAgICAgIGJzZiBUUklTQyxTQ0wgICAg ICAgOw0KPj4+ICAgICBic2YgICAgIFRSSVNDLFNEQSAgICAgICA7DQo+Pj4gICAgIG1vdmx3ICAg YicwMDEwMTAwMCcgICAgIDtTU1BFTiArIDEyQyBNYXN0ZXINCj4+PiAgICAgbW92d2YgICBTU1Ax Q09OMSAgICAgICAgICAgICAgICA7DQo+Pj4gICAgIG1vdmx3ICAgYicwMDAwMDAwMCcgICAgIDsN Cj4+PiAgICAgbW92d2YgICBTU1AxQ09OMiAgICAgICAgICAgICAgICA7DQo+Pj4gICAgIG1vdmx3 ICAgYicwMDAwMDAwMCcgICAgIDtzbGV3IHJhdGUgb24gZm9yIDQwMGtoeg0KPj4+ICAgICBtb3Z3 ZiAgIFNTUDFTVEFUICAgICAgICAgICAgICAgIDsNCj4+PiAgICAgbW92bHcgICBkJzEzJyAgICAg ICAgICAgOygyMDAwMDAwMC8xMDAwMDApLTEvNA0KPj4+ICAgICBtb3Z3ZiAgIFNTUDFBREQgICAg ICAgICA7NDAwa2h6IHVzaW5nIDIwbWh6IHh0YWwNCj4+PiAgICAgIHJldHVybiAgICAgICAgICAg ICAgICAgOw0KPj4+DQo+Pj4gSTJDRGVidWcNCj4+PiAgICAgICAgICAgICAgbW92ZiAgc3NwMXN0 YXQsMA0KPj4+ICAgICBtb3Z3ZiBfdGVzdGJ5dGUxDQo+Pj4gICAgIG1vdmYgc3NwMWNvbjEsMA0K Pj4+ICAgICBtb3Z3ZiBfdGVzdGJ5dGUyDQo+Pj4gICAgIG1vdmYgc3NwMWNvbjIsMA0KPj4+ICAg ICBtb3Z3ZiBfdGVzdGJ5dGUzDQo+Pj4gICAgIG1vdmYgc3NwMWNvbjMsMA0KPj4+ICAgICBtb3Z3 ZiBfdGVzdGJ5dGU0DQo+Pj4gICAgICByZXR1cm4NCj4+Pg0KPj4+IEkyQ1dhaXQNCj4+PiAgICAg ICAgICAgICBidGZzcyBQSVIzLFNTUDFJRiAgICAgICA7Y29tcGxldGUgZmxhZz8NCj4+PiAgICAg YnJhICAgICBJMkNXYWl0ICAgICAgICAgO25vLCB3YWl0DQo+Pj4gICAgIGJjZiAgICAgUElSMyxT U1AxSUYgICAgIDtjbGVhciBpcnEgZmxhZw0KPj4+ICAgcmV0dXJuICAgICAgICAgICAgICAgICAg ICA7DQo+Pj4NCj4+PiBJMkNTdHJ0DQo+Pj4gICAgICAgICAgICAgYnNmICAgICBTU1AxQ09OMixT RU5fU1NQMUNPTjIgICA7c2VuZCBTVEFSVCBjb25kaXRpb24NCj4+PiAgICAgICAgICAgICBicmEg ICAgIEkyQ1dhaXQgICAgICAgICA7DQo+Pj4NCj4+PiBJMkNTdG9wcA0KPj4+ICAgICAgICAgICAg IGJzZiAgICAgU1NQMUNPTjIsUEVOICAgIDtzZW5kIFNUT1AgY29uZGl0aW9uDQo+Pj4gICAgIGJy YSAgICAgSTJDV2FpdCAgICAgICAgIDsNCj4+Pg0KPj4+IEkyQ1NlbmQNCj4+PiAgICAgICAgICAg ICBtb3Z3ZiAgIFNTUDFCVUYgICAgICAgICA7c2VuZCBieXRlDQo+Pj4gICAgIGJyYSAgICAgSTJD V2FpdCAgICAgICAgIDsNCj4+Pg0KPj4+IEkyQ1Jjdg0KPj4+ICAgICAgICAgICAgIGJ0ZnNjICAg U1NQMVNUQVQsUl9XICAgIDt0cmFuc21pdCBjb21wbGV0ZT8NCj4+PiAgICAgYnJhICAgICBJMkNS Y3YgICAgICAgICAgO25vLCB3YWl0DQo+Pj4gICAgIGJzZiAgICAgU1NQMUNPTjIsUkNFTiAgIDty ZWNlaXZlIGVuYWJsZQ0KPj4+ICAgICAgICAgICAgIGJjZiAgICAgUElSMyxTU1AxSUYgICAgIDtj bGVhciBpcnEgZmxhZw0KPj4+ICAgICAgICAgICAgICByY2FsbCAgSTJDV2FpdCAgICAgICAgIDsN Cj4+PiAgICAgbW92ZiAgICBTU1AxQlVGLFcgICAgICAgOw0KPj4+ICAgcmV0dXJuICAgICAgICAg ICAgICAgICAgICA7DQo+Pj4NCj4+PiBJMkNBY2sNCj4+PiAgICAgICAgICAgICBiY2YgICAgIFNT UDFDT04yLEFDS0RUICA7c2V0IEFDSw0KPj4+ICAgICBicmEgICAgIEkyQ05hY2srMiAgICAgICA7 DQo+Pj4NCj4+PiBJMkNOYWNrDQo+Pj4gICAgICAgICAgICAgIGJzZiAgICBTU1AxQ09OMixBQ0tE VCAgO3NldCBOQUNLDQo+Pj4gICAgIGJzZiAgICAgU1NQMUNPTjIsQUNLRU4gIDtzZW5kIEFDSyBv ciBOQUNLDQo+Pj4gICAgIGJyYSAgICAgSTJDV2FpdCAgICAgICAgIDsNCj4+Pg0KPj4+IEkyQ1Jl cw0KPj4+ICAgICAgICAgICAgIGJzZiAgICAgU1NQMUNPTjIsUlNFTiAgIDtzZW5kIFJFU1RBUlQg Y29uZGl0aW9uDQo+Pj4gICAgIGJyYSAgICAgSTJDV2FpdCAgICAgICAgIDsNCj4+Pg0KPj4+IGVu ZGFzbQ0KPj4+DQo+Pj4gQ2FyZXkgRmlzaGVyIOKUgiBEaXJlY3RvciBvZiBFbmdpbmVlcmluZyBP ICsxIDc3MC0yMDktMDAxMiB4MjAzMSDilIIgRiArMQ0KPj4+IDc3MC0yMDktMDcxOQ0KPj4+IDQy OTUgSGFtaWx0b24gTWlsbCBSb2FkIOKUgiBTdWl0ZSAxMDAg4pSCIEJ1Zm9yZCwgR0EgMzA1MTgN Cj4+PiB3d3cub21uaW1ldHJpeC5uZXQNCj4+Pg0KPj4+DQo+Pj4NCj4+PiBUZWxsIHVzIGhvdyB3 ZSdyZSBkb2luZyEgQ2xpY2sgaGVyZSB0byB0YWtlIG91ciB0d28tcXVlc3Rpb24gc3VydmV5Lg0K Pj4+DQo+Pj4NCj4+Pg0KPj4+DQo+Pj4gLS0NCj4+PiBodHRwOi8vd3d3LnBpY2xpc3QuY29tL3Rl Y2hyZWYvcGljbGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlDQo+Pj4gVmlldy9jaGFuZ2Ug eW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQNCj4+PiBodHRwOi8vbWFpbG1hbi5taXQuZWR1L21h aWxtYW4vbGlzdGluZm8vcGljbGlzdA0KPj4+DQo+Pg0KPj4gLS0NCj4+IGh0dHA6Ly93d3cucGlj bGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUNCj4+IFZp ZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRpb25zIGF0DQo+PiBodHRwOi8vbWFpbG1hbi5t aXQuZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdA0KPj4NCj4+IC0tDQo+PiBodHRwOi8vd3d3 LnBpY2xpc3QuY29tL3RlY2hyZWYvcGljbGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlDQo+ PiBWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdA0KPj4gaHR0cDovL21haWxt YW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QNCj4+DQo+DQo+IC0tDQo+IGh0dHA6 Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hp dmUgVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQgaHR0cDovL21haWxtYW4u bWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QNCj4NCg0KLS0NCmh0dHA6Ly93d3cucGlj bGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUNClZpZXcv Y2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRpb25zIGF0DQpodHRwOi8vbWFpbG1hbi5taXQuZWR1 L21haWxtYW4vbGlzdGluZm8vcGljbGlzdA0K .