VGhhbmtzIFJ1YmVuIGZvciB0aGUgZXhwbGFuYXRpb24uIEkgbWFuYWdlZCB0byBmb2xsb3cgaW5z dHJ1Y3Rpb24gYW5kCmluY2x1ZGUgaXQuCgpUaGUgdGFzayBub3cgcnVucyBleGNlcHQgaXQgb25s eSBydW5zIG9uY2UgYW5kIGFmdGVyIHRoYXQgdGhlCm1pY3JvY29udHJvbGxlciByZXNldHMuIFNv IGZhciB0aGUgY2FzZSB3YXMgdGhhdCB0aGUgdGFzayB3YXNudCBldmVuCmNyZWF0ZWQuIFNvIEkg YW0gaGFwcHkgYXMgdGhpcyBpcyBhIGxpdHRsZSBzdGVwIGZvcndhcmQuICBJIGNhbiBldmVuIHVz ZSBhbgp1YXJ0IGZ1bmN0aW9uIHRoYXQgd291bGQgc2VuZCBhIGxldHRlciAiayIgYW5kIEkgY2Fu IHNlZSBpdCBmbG9vZGluZyBteQpzZXJpYWwgbW9uaXRvciBvbiB0aGUgY29tcHV0ZXIuIFNvIG5v dyB0aGUgdGFzayBpcyBkZWZpbmF0ZWx5IGNyZWF0ZWQgYnV0CnRoZSB3aG9sZSB0aGluZyBzdGls bCByZXNldHMuCgpJIHN0aWxsIGdldCB0aGUgc2FtZSBtZXNzYWdlcyBkdXJpbmcgZGVidWc6Ck5v IHNvdXJjZSBjb2RlIGxpbmVzIHdlcmUgZm91bmQgYXQgY3VycmVudCBQQyAweDAwCk5vIHNvdXJj ZSBjb2RlIGxpbmVzIHdlcmUgZm91bmQgYXQgY3VycmVudCBQQyAweDI5ZQoKCldoZW4gSSBzdGVw IHRocm91Z2ggdGhlIGNvZGUgd2l0aCB0aGUgZGVidWdnZXIsIEkgY2FuIHNlZSB0aGUgcHJvZ3Jh bQpnZXR0aW5nIGludG8gdGhlIHBvcnRSRVNUT1JFX0NPTlRFWFQoKTsgZnVuY3Rpb24gYW5kIHRo YXRzIHdoZW4gaXQgcmVzZXRzCmFuZCBnb2VzIHRvIGFkZHJlc3MgMHgwLiBUaGUgcG9ydFJFU1RP UkVfQ09OVEVYVCgpOyBmdW5jdGlvbiBpcyBkZWZpbmVkCnVzaW5nIGFzc2VtYmx5IGFuZCBJIGRv bid0IHJlYWxseSB1bmRlcnN0YW5kIHdoYXRzIGdvaW5nIG9uIGluc2lkZSB0aGF0CmZ1bmN0aW9u LgoKI2RlZmluZSBwb3J0UkVTVE9SRV9DT05URVhUKCkgXAphc20gdm9sYXRpbGUoICJNT1YgX3B4 Q3VycmVudFRDQiwgVzAgXG4iIC8qIFJlc3RvcmUgdGhlIHN0YWNrIHBvaW50ZXIgZm9yCnRoZSB0 YXNrLiAqLyBcCiJNT1YgW1cwXSwgVzE1IFxuIiBcCiJQT1AgVzAgXG4iIC8qIFJlc3RvcmUgdGhl IGNyaXRpY2FsIG5lc3RpbmcgY291bnRlciBmb3IgdGhlIHRhc2suICovIFwKIk1PViBXMCwgX3V4 Q3JpdGljYWxOZXN0aW5nIFxuIiBcCiJQT1AgUFNWUEFHIFxuIiBcCiJQT1AgQ09SQ09OIFxuIiBc CiJQT1AgRE9FTkRIIFxuIiBcCiJQT1AgRE9FTkRMIFxuIiBcCiJQT1AgRE9TVEFSVEggXG4iIFwK IlBPUCBET1NUQVJUTCBcbiIgXAoiUE9QIERDT1VOVCBcbiIgXAoiUE9QIEFDQ0JVIFxuIiBcCiJQ T1AgQUNDQkggXG4iIFwKIlBPUCBBQ0NCTCBcbiIgXAoiUE9QIEFDQ0FVIFxuIiBcCiJQT1AgQUND QUggXG4iIFwKIlBPUCBBQ0NBTCBcbiIgXAoiUE9QIFRCTFBBRyBcbiIgXAoiUE9QIFJDT1VOVCBc biIgLyogUmVzdG9yZSB0aGUgcmVnaXN0ZXJzIGZyb20gdGhlIHN0YWNrLiAqLyBcCiJQT1AgVzE0 IFxuIiBcCiJQT1AuRCBXMTIgXG4iIFwKIlBPUC5EIFcxMCBcbiIgXAoiUE9QLkQgVzggXG4iIFwK IlBPUC5EIFc2IFxuIiBcCiJQT1AuRCBXNCBcbiIgXAoiUE9QLkQgVzIgXG4iIFwKIlBPUC5EIFcw IFxuIiBcCiJQT1AgU1IgICIgKTsKCk9uIE1vbiwgT2N0IDEzLCAyMDE0IGF0IDc6MjQgUE0sIFJ1 YmVuIErDtm5zc29uIDxydWJlbkByampvdXJuYWwubmV0PiB3cm90ZToKCj4gPiBCdXQgSSBhbHJl YWR5IGtub3cgIGlzIHRoYXQgSSBkb24ndCBrbm93IGhvdyB0byBkZWZpbmUgdGhpcyBpbiB0aGUK PiBwcm9qZWN0Cj4gPiBvcHRpb25zIGluIE1QTEFCWC4KPiA+Cj4KPiBSaWdodCBjbGljayB5b3Vy IHByb2plY3QsIHNlbGVjdCBQcm9wZXJ0aWVzLiBJbiB0aGUgUHJvamVjdAo+IFByb3BlcnRpZXMg ZGlhbG9nIHRoYXQgb3BlbnMsIHNlbGVjdCBYQzMyKEdsb2JhbCBPcHRpb25zKSAtPiB4YzMyLWdj Ywo+IGluIHRoZSBDYXRlZ29yaWVzIHRyZWUgdG8gdGhlIGxlZnQuIFNlbGVjdCBQcmVwcm9jZXNz aW5nIGFuZCBtZXNzYWdlcwo+IGluIHRoZSBPcHRpb24gY2F0ZWdvcmllcyBkcm9wIGRvd24gbGlz dCBhbmQgdGhlcmUgeW91IGhhdmUgYW4gb3B0aW9uCj4gY2FsbGVkIFByZXByb2Nlc3NvciBtYWNy b3MuIEFkZCB5b3VyIG1hY3JvIHRvIHRoZSBsaXN0IGFuZCBpdCB3aWxsIGJlCj4gaW5jbHVkZWQg YXMgYSAtRCBjb21tYW5kIGxpbmUgYXJndW1lbnQgd2hlbiBjb21waWxpbmcgZXZlcnkgYyBmaWxl IGluCj4geW91ciBwcm9qZWN0Lgo+Cj4gL1J1YmVuCj4KPgo+ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQo+IFJ1YmVuIErDtm5zc29uCj4gQUIgTGlyb3MgRWxlY3Ryb25pYwo+IEJveCA5 MTI0LCAyMDAgMzkgTWFsbcO2LCBTd2VkZW4KPiBURUwgSU5UICs0NiA0MDE0MjA3OAo+IEZBWCBJ TlQgKzQ2IDQwOTQ3Mzg4Cj4gcnViZW5AcHAuc2Jicy5zZQo+ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQo+Cj4gLS0KPiBodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvcGljbGlz dCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlCj4gVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlw IG9wdGlvbnMgYXQKPiBodHRwOi8vbWFpbG1hbi5taXQuZWR1L21haWxtYW4vbGlzdGluZm8vcGlj bGlzdAo+CgoKCi0tIAoidGhlcmUgaXMgbm8gc3Bvb24iCi0tIApodHRwOi8vd3d3LnBpY2xpc3Qu Y29tL3RlY2hyZWYvcGljbGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlClZpZXcvY2hhbmdl IHlvdXIgbWVtYmVyc2hpcCBvcHRpb25zIGF0Cmh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1h bi9saXN0aW5mby9waWNsaXN0Cg== .