Re: [RFC] Proposal for tagged_by attribute to describe union discriminators
Heiko Lewin via Gcc <[email protected]> Tue, 28 Jul 2026 11:39:06 +0000
| Newsgroups | gmane.comp.gcc.devel |
|---|---|
| Message-ID | <AM9P193MB18754AC948154260E9E5702C81CB2@AM9P193MB1875.EURP193.PROD.OUTLOOK.COM> |
SGVsbG8hDQoNClJlYWRpbmcgdGhyb3VnaCB0aGlzIGxvb3NlbHkgaXQgc2VlbXMgdGhhdCBzdWNo IOKAnGFzc29jaWF0aW9uc+KAnCB3b3VsZCBiZSB1c2VmdWwgZnVyIG11Y2ggbW9yZSB1c2UtY2Fz ZXMgYW5kIGVsZW1lbnRzOiBBdHRhY2hpbmcgcGllY2VzIG9mIGNvbnN0YW50IGluZm9ybWF0aW9u IHRvIG1lbWJlcnMgd291bGQgbWFrZSBzZW5zZSBmb3Igc3RydWN0cywgZW51bXMgYW5kIHVuaW9u cy4gVGhpbmsgYWJvdXQgYXR0YWNoaW5nIHN0cmluZy1jb25zdGFudHMgdG8gZW51bSBlbnRyaWVz IGFzIHdlbGwgYXMgYXR0YWNoaW5nIHR5cGUtZW51bXMgdG8gdW5pb24gbWVtYmVycy4gVGhpcyBj b3VsZCBiZSBhIHNpbXBsZSBidXQgcXVpdGUgcG93ZXJmdWwgbWVjaGFuaWMuDQoNClRoZSB3YXJu aW5nIGZvciBtaXNzaW5nIHN3aXRjaC1jYXNlcyBjb3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgdHlw ZSBlbnVtIGFzIGFuIGF0dHJpYnV0ZSB3aGljaCB3b3VsZCBtYWtlIHRoZSB1c2UtY2FzZSBtdWNo IG1vcmUgZ2VuZXJhbCAobm90IGp1c3QgZm9yIHRhZ2dlZCB1bmlvbnMpLg0KDQpSZWdhcmRzDQpI ZWlrbyBMZXdpbg0KDQoNCg0KDQpGcm9tOiBHY2MgPGdjYy1ib3VuY2VzfmhsZXdpbj13b3JsZGll dHkuZGVAZ2NjLmdudS5vcmc+IG9uIGJlaGFsZiBvZiBGbGFtZSBNb250Z29tZXJ5IHZpYSBHY2Mg PGdjY0BnY2MuZ251Lm9yZz4NCkRhdGU6IFR1ZXNkYXksIDI4LiBKdWx5IDIwMjYgYXQgMTM6MDYN ClRvOiBnY2NAZ2NjLmdudS5vcmcgPGdjY0BnY2MuZ251Lm9yZz4NClN1YmplY3Q6IEZ3ZDogW1JG Q10gUHJvcG9zYWwgZm9yIHRhZ2dlZF9ieSBhdHRyaWJ1dGUgdG8gZGVzY3JpYmUgdW5pb24gZGlz Y3JpbWluYXRvcnMNCg0KLS0tLS0tLS0tLSBGb3J3YXJkZWQgbWVzc2FnZSAtLS0tLS0tLS0NCkZy b206IEFzaHRvbiBXYXJuZXIgPGRyZmxhbWVtb250Z29tZXJ5QGdtYWlsLmNvbT4NCkRhdGU6IFR1 ZSwgMjggSnVsIDIwMjYsIDExOjAxIHBtDQpTdWJqZWN0OiBSZTogW1JGQ10gUHJvcG9zYWwgZm9y IHRhZ2dlZF9ieSBhdHRyaWJ1dGUgdG8gZGVzY3JpYmUgdW5pb24NCmRpc2NyaW1pbmF0b3JzDQpU bzogTWFydGluIFVlY2tlciA8bXVlY2tlckBnd2RnLmRlPg0KDQoNCk9uIFR1ZSwgSnVsIDI4LCAy MDI2IGF0IDA5OjI5OjA3QU0gKzAyMDAsIE1hcnRpbiBVZWNrZXIgd3JvdGU6DQo+IEFtIERpZW5z dGFnLCBkZW0gMjguMDcuMjAyNiB1bSAwODozMSArMDIwMCBzY2hyaWViIFJpY2hhcmQgQmllbmVy Og0KPiA+IE9uIFR1ZSwgSnVsIDI4LCAyMDI2IGF0IDE6MjDigK9BTSBBc2h0b24gV2FybmVyIHZp YSBHY2MgPGdjY0BnY2MuZ251Lm9yZz4NCndyb3RlOg0KPiA+ID4NCj4gPiA+IE9uIFRodSwgSnVs IDE2LCAyMDI2IGF0IDA5OjU5OjI2QU0gKzAyMDAsIE1hcnRpbiBVZWNrZXIgd3JvdGU6DQo+ID4g PiA+IEFtIERvbm5lcnN0YWcsIGRlbSAxNi4wNy4yMDI2IHVtIDA5OjE3ICsxMjAwIHNjaHJpZWIg QXNodG9uIFdhcm5lcg0KdmlhIEdjYzoNCj4gPiA+ID4gPiBIZWxsbywNCj4gPiA+ID4gPg0KPiA+ ID4gPiA+IEkgd291bGQgbGlrZSB0byBkaXNjdXNzIHRoZSBwb3NzaWJpbGl0eSBvZiBhZGRpbmcg YSBHQ0MgYXR0cmlidXRlDQpmb3INCj4gPiA+ID4gPiBkZXNjcmliaW5nIHRhZ2dlZCB1bmlvbnMg KGRpc2NyaW1pbmF0ZWQgdW5pb25zKSB0byBpbXByb3ZlIHN0YXRpYw0KPiA+ID4gPiA+IGFuYWx5 c2lzIGRpYWdub3N0aWNzLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhlIG1vdGl2YXRpb24gaXMg dG8gYWxsb3cgcHJvZ3JhbW1lcnMgdG8gZXhwbGljaXRseSBkZXNjcmliZSBhDQo+ID4gPiA+ID4g cmVsYXRpb25zaGlwIGJldHdlZW4gYW4gZW51bSBkaXNjcmltaW5hdG9yIGFuZCBhIHVuaW9uIG1l bWJlci4gQw0KaGFzIGENCj4gPiA+ID4gPiBjb21tb24gcGF0dGVybiBvZiByZXByZXNlbnRpbmcg dmFyaWFudHMgdXNpbmcgYSBzdHJ1Y3QgY29udGFpbmluZw0KYW4NCj4gPiA+ID4gPiBlbnVtIGFu ZCBhIHVuaW9uOg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gZW51bSBudW1fdHlwZSB7DQo+ID4gPiA+ ID4gICBUX0lOVCwNCj4gPiA+ID4gPiAgIFRfRkxPQVQsDQo+ID4gPiA+ID4gfTsNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IHN0cnVjdCBudW1iZXIgew0KPiA+ID4gPiA+ICAgZW51bSBudW1fdHlwZSB0 eXBlOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICB1bmlvbiB7DQo+ID4gPiA+ID4gICAgIGludCBp dmFsOw0KPiA+ID4gPiA+ICAgICBmbG9hdCBmdmFsOw0KPiA+ID4gPiA+ICAgfTsNCj4gPiA+ID4g PiB9Ow0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSSBwcm9wb3NlIHRoZSBHQ0MgYXR0cmlidXRlIF9f YXR0cmlidXRlX18oKHRhZ2dlZF9ieSguLi4pKSkgd2l0aA0KdGhlDQo+ID4gPiA+ID4gZm9sbG93 aW5nIHN5bnRheDoNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IHRhZ2dlZF9ieShkaXNjcmltaW5hdG9y LCBtYXBwaW5nLWxpc3QpDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiB3aGVyZToNCj4gPiA+ID4gPg0K PiA+ID4gPiA+IC0gZGlzY3JpbWluYXRvciBpcyBhbiBpZGVudGlmaWVyDQo+ID4gPiA+ID4gLSBt YXBwaW5nLWxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBvbmUgb3IgbW9yZSBtYXBw aW5ncy4NCj4gPiA+ID4gPiAtIEVhY2ggbWFwcGluZyBoYXMgdGhlIGZvcm06DQo+ID4gPiA+ID4g ICAgIChlbnVtZXJhdG9yLCB1bmlvbi1tZW1iZXIpDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBGb3Ig ZXhhbXBsZToNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IHN0cnVjdCBudW1iZXIgew0KPiA+ID4gPiA+ ICAgZW51bSBudW1fdHlwZSB0eXBlOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICB1bmlvbiB7DQo+ ID4gPiA+ID4gICAgIGludCBpdmFsOw0KPiA+ID4gPiA+ICAgICBmbG9hdCBmdmFsOw0KPiA+ID4g PiA+ICAgfSBfX2F0dHJpYnV0ZV9fKCh0YWdnZWRfYnkodHlwZSwNCj4gPiA+ID4gPiAgICAgKFRf SU5ULCBpdmFsKSwNCj4gPiA+ID4gPiAgICAgKFRfRkxPQVQsIGZ2YWwpDQo+ID4gPiA+ID4gICAp KSk7DQo+ID4gPiA+ID4gfTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoZSBtYXBwaW5nIGlzIGlu dGVudGlvbmFsbHkgZXhwbGljaXQgcmF0aGVyIHRoYW4gaW5mZXJyZWQgZnJvbQ0KdGhlDQo+ID4g PiA+ID4gZGVjbGFyYXRpb24gb3JkZXIgb2YgZW51bSB2YWx1ZXMgYW5kIHVuaW9uIG1lbWJlcnMu IFRoaXMgYXZvaWRzDQo+ID4gPiA+ID4gY2hhbmdpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIGF0dHJp YnV0ZSBpZiBlaXRoZXIgdGhlIGVudW0gb3IgdW5pb24NCj4gPiA+ID4gPiBtZW1iZXJzIGFyZSBy ZW9yZGVyZWQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGUgYXR0cmlidXRlIGRvZXMgbm90IGNo YW5nZSB0aGUgcmVwcmVzZW50YXRpb24gb3IgcnVudGltZQ0KYmVoYXZpb3VyDQo+ID4gPiA+ID4g b2YgdGhlIHVuaW9uLiBJdCBwcm92aWRlcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRoYXQgR0ND IGNhbiB1c2UNCmZvcg0KPiA+ID4gPiA+IGRpYWdub3N0aWNzIGFuZCBzdGF0aWMgYW5hbHlzaXMu DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBGb3IgZXhhbXBsZToNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ IHN0cnVjdCBudW1iZXIgbjsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IG4udHlwZSA9IFRfSU5UOw0K PiA+ID4gPiA+IG4uZnZhbCA9IDEuMGY7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBjb3VsZCBwcm9k dWNlIGEgZGlhZ25vc3RpYyBiZWNhdXNlIGZ2YWwgaXMgbm90IHRoZSBtZW1iZXINCmFzc29jaWF0 ZWQNCj4gPiA+ID4gPiB3aXRoIHRoZSBjdXJyZW50IGRpc2NyaW1pbmF0b3IgdmFsdWUuDQo+ID4g PiA+ID4NCj4gPiA+ID4gPiBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGRpYWdub3NlIGludmFs aWQgbWFwcGluZ3MsIHN1Y2ggYXMgYW4NCj4gPiA+ID4gPiBlbnVtZXJhdG9yIHRoYXQgaXMgbm90 IHBhcnQgb2YgdGhlIGRpc2NyaW1pbmF0b3IncyBlbnVtIHR5cGUgb3IgYQ0KPiA+ID4gPiA+IG1l bWJlciB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSB1bmlvbi4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+IFRoZSBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBzZW1hbnRpYyBpbmZvcm1h dGlvbiBpbiBhDQpzaW1pbGFyDQo+ID4gPiA+ID4gd2F5IHRvIGV4aXN0aW5nIGF0dHJpYnV0ZXMg c3VjaCBhcyBjb3VudGVkX2J5LCB3aGVyZSB0aGUgY29tcGlsZXINCmlzDQo+ID4gPiA+ID4gZ2l2 ZW4gaW5mb3JtYXRpb24gYWJvdXQgYSByZWxhdGlvbnNoaXAgdGhhdCBhbHJlYWR5IGV4aXN0cyBp biB0aGUNCj4gPiA+ID4gPiBwcm9ncmFtLg0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEkg YWdyZWUgd2l0aCB0aGlzIHByb3Bvc2FsLiAgVGhlcmUgaXMgYW4gZXhpc3RpbmcgZW5oYW5jZW1l bnQNCj4gPiA+ID4gcmVxdWVzdDogaHR0cHM6Ly9ldXIwNC5zYWZlbGlua3MucHJvdGVjdGlvbi5v dXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGZ2NjLmdudS5vcmclMkZidWd6aWxsYSUyRnNo b3dfYnVnLmNnaSUzRmlkJTNEMTEyODQwJmRhdGE9MDUlN0MwMiU3Q2hlaWtvLmxld2luJTQwd29y bGRpZXR5LmRlJTdDYzEyNjRiMzk5ZDhmNDE3YmNlOWMwOGRlZWM5ODRhNTIlN0NlNDgwYzQ0NDU1 NDA0NDlmYjg5NjlkNWZmMmE4ZTliOCU3QzAlN0MwJTdDNjM5MjA4MzM2MDI2NzY0ODkxJTdDVW5r bm93biU3Q1RXRnBiR1pzYjNkOGV5SkZiWEIwZVUxaGNHa2lPblJ5ZFdVc0lsWWlPaUl3TGpBdU1E QXdNQ0lzSWxBaU9pSlhhVzR6TWlJc0lrRk9Jam9pVFdGcGJDSXNJbGRVSWpveWZRJTNEJTNEJTdD MCU3QyU3QyU3QyZzZGF0YT1SQ21OMnV6a0ZGWFA1bmpPSTVzYnRqMlJhSVc5NHozVmpNZzJibDh1 VGxjJTNEJnJlc2VydmVkPTA8aHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5j Z2k/aWQ9MTEyODQwPg0KPiA+ID4gPg0KPiA+ID4gPiBJIGxpa2UgYW4gYXR0cmlidXRlIG9uIHRo ZSBtZW1iZXIgbW9yZSB0aGFuIHRoZSBhdHRyaWJ1dGUgb24gdGhlDQo+ID4gPiA+IHVuaW9uIHR5 cGUuDQo+ID4gPiA+DQo+ID4gPiA+ID4gT3BlbiBxdWVzdGlvbnM6DQo+ID4gPiA+ID4NCj4gPiA+ ID4gPiAtIEhvdyBzaG91bGQgZW51bWVyYXRvcnMgd2l0aG91dCBhbiBhc3NvY2lhdGVkIHVuaW9u IG1lbWJlciBiZQ0KPiA+ID4gPiA+ICAgcmVwcmVzZW50ZWQ/IE9uZSBwb3NzaWJpbGl0eSBpcyBh bGxvd2luZyBhIG1hcHBpbmcgd2l0aG91dCBhDQptZW1iZXIsDQo+ID4gPiA+ID4gICBmb3IgZXhh bXBsZSAoVF9VTktOT1dOKSwgdG8gZXhwbGljaXRseSBpbmRpY2F0ZSB0aGF0IGFuDQplbnVtZXJh dG9yDQo+ID4gPiA+ID4gICByZXByZXNlbnRzIGEgdmFsaWQgZGlzY3JpbWluYXRvciBzdGF0ZSB3 aXRoIG5vIGFjdGl2ZSB1bmlvbg0KbWVtYmVyLg0KPiA+ID4gPiA+ICAgRW51bWVyYXRvcnMgdGhh dCBhcmUgbm90IG1lbnRpb25lZCBpbiB0aGUgYXR0cmlidXRlIGNvdWxkIHRoZW4NCmJlDQo+ID4g PiA+ID4gICBkaWFnbm9zZWQuDQo+ID4gPiA+ID4gLSBTaG91bGQgZGlhZ25vc3RpY3MgYmFzZWQg b24gdGhpcyBhdHRyaWJ1dGUgYmUgaW1wbGVtZW50ZWQgYXMNCnBhcnQgb2YNCj4gPiA+ID4gPiAg IGV4aXN0aW5nIHdhcm5pbmcgaW5mcmFzdHJ1Y3R1cmUsIC1mYW5hbHl6ZXIsIG9yIGFub3RoZXIg YW5hbHlzaXMNCj4gPiA+ID4gPiAgIHBhc3M/DQo+ID4gPiA+ID4gLSBDb3VsZCB0aGlzIGluZm9y bWF0aW9uIGJlIHVzZWZ1bCB0byBmdXR1cmUgcnVudGltZSBjaGVja2luZw0KdG9vbHM/DQo+ID4g PiA+DQo+ID4gPiA+IFllcywgSSB0aGluayB0aGlzIHdvdWxkIGJlIHVzZWZ1bCBmb3IgY2hlY2tp bmcgYXQgcnVuLXRpbWUgc2ltaWxhcg0KPiA+ID4gPiB0byBzYW5pdGl6ZXJzLiAgVGhpcyB3b3Vs ZCBiZSBlYXN5IHRvIGltcGxlbWVudC4NCj4gPiA+ID4NCj4gPiA+ID4gPiAtIEFyZSB0aGVyZSBl eGlzdGluZyBHQ0MgbWVjaGFuaXNtcyB0aGF0IG92ZXJsYXAgd2l0aCB0aGlzDQo+ID4gPiA+ID4g ICBmdW5jdGlvbmFsaXR5Pw0KPiA+ID4gPiA+IC0gQXJlIHRoZXJlIGFkZGl0aW9uYWwgY29uc3Ry YWludHMgb3Igc2VtYW50aWNzIHRoYXQgd291bGQgYmUNCm5lZWRlZA0KPiA+ID4gPiA+ICAgZm9y IEdDQyB0byBpbXBsZW1lbnQgdGhpcyBhdHRyaWJ1dGU/DQo+ID4gPiA+DQo+ID4gPiA+IFRoZSBp c3N1ZSBzaW1pbGFyIHRvIGNvdW50ZWRfYnkgYXJlIHRoZSBleGFjdCBzZW1hbnRpY3MgZm9yIHdo ZW4NCj4gPiA+ID4gdGhlIGNvbnN0cmFpbnRzIGFyZSBpbiBlZmZlY3QgcmVsYXRpdmUgdG8gd2hl biB0aGUgbWVtYmVycyBhcmUNCj4gPiA+ID4gYWNjZXNzZWQgLyBjaGFuZ2VkLg0KPiA+ID4gPg0K PiA+ID4gPiBNYXJ0aW4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gPiBJIGFncmVlIHdpdGggdGhpcyBw cm9wb3NhbC4gIFRoZXJlIGlzIGFuIGV4aXN0aW5nIGVuaGFuY2VtZW50DQo+ID4gPiA+IHJlcXVl c3Q6IGh0dHBzOi8vZXVyMDQuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1o dHRwcyUzQSUyRiUyRmdjYy5nbnUub3JnJTJGYnVnemlsbGElMkZzaG93X2J1Zy5jZ2klM0ZpZCUz RDExMjg0MCZkYXRhPTA1JTdDMDIlN0NoZWlrby5sZXdpbiU0MHdvcmxkaWV0eS5kZSU3Q2MxMjY0 YjM5OWQ4ZjQxN2JjZTljMDhkZWVjOTg0YTUyJTdDZTQ4MGM0NDQ1NTQwNDQ5ZmI4OTY5ZDVmZjJh OGU5YjglN0MwJTdDMCU3QzYzOTIwODMzNjAyNjgwNDU5MiU3Q1Vua25vd24lN0NUV0ZwYkdac2Iz ZDhleUpGYlhCMGVVMWhjR2tpT25SeWRXVXNJbFlpT2lJd0xqQXVNREF3TUNJc0lsQWlPaUpYYVc0 ek1pSXNJa0ZPSWpvaVRXRnBiQ0lzSWxkVUlqb3lmUSUzRCUzRCU3QzAlN0MlN0MlN0Mmc2RhdGE9 aXBDdVJuMSUyRlJZOCUyRkVGODdTSDVPZDFxbiUyQmRQZ01lS2ptT2xzb2pMZEhSZyUzRCZyZXNl cnZlZD0wPGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTExMjg0 MD4NCj4gPiA+ID4NCj4gPiA+ID4gSSBsaWtlIGFuIGF0dHJpYnV0ZSBvbiB0aGUgbWVtYmVyIG1v cmUgdGhhbiB0aGUgYXR0cmlidXRlIG9uIHRoZQ0KPiA+ID4gPiB1bmlvbiB0eXBlLg0KPiA+ID4N Cj4gPiA+IFRoaXMgcHJvcG9zYWwgbG9va3MgaW50ZXJlc3RpbmcgYW5kIG1vcmUgcmVhZGFibGUg dGhhbiBteSBpbml0aWFsDQo+ID4gPiBwcm9wb3NhbC4gVGhlIG9uZSBzZW1hbnRpY3MgdGhhdCBp cyBtaXNzaW5nIGZyb20gdGhpcyBwcm9wb3NhbCBpcyBhDQo+ID4gPiBzeXN0ZW0gdG8gYWxsb3cg dGhlIHVzZXIgdG8gYmUgbm90aWZpZWQgd2hlbiBhIHVuaW9uIGZpZWxkIGRvZXMgbm90DQo+ID4g PiBjb250YWluIGEgdGFnLCBvciB3aGVuIHRoZXJlIGlzIG5vIGZpZWxkIGZvciBhIGdpdmVuIGVu dW0gdmFsdWUuDQo+ID4gPg0KPiA+ID4gV291bGQgYW4gYXR0cmlidXRlIHRoYXQgZW5hYmxlcyB3 YXJuaW5nIG9uIHRoZXNlIGlzc3VlcyBiZSBhY2hpZXZhYmxlPw0KPiA+ID4NCj4gPiA+IEFuIGV4 YW1wbGUgb2YgdGhpcyBhdHRyaWJ1dGUNCj4gPiA+DQo+ID4gPiBzdHJ1Y3QgbnVtYmVyIHsNCj4g PiA+ICAgZW51bSBudW1fdHlwZSB0eXBlOw0KPiA+ID4NCj4gPiA+ICAgdW5pb24gew0KPiA+ID4g ICAgIGludCBpdmFsIF9fYXR0cmlidXRlX18oKGd1YXJkKC50eXBlID09IFRfSU5UKSk7DQo+ID4N Cj4gPiBJIGFsc28gdGhpbmsgdGhhdCBhdHRyaWJ1dGVzIG9uIHRoZSBpbmRpdmlkdWFsIGZpZWxk cyBhcmUgYmV0dGVyLCBidXQNCnBvc3NpYmx5DQo+ID4gY29tYmluZWQgd2l0aCBhbiBhdHRyaWJ1 dGUgb24gdGhlIHVuaW9uPw0KPiA+DQo+ID4gICAgdW5pb24gew0KPiA+ICAgICAgIGludCBpdmFs IF9fYXR0cmlidXRlX18odGFnX3ZhbHVlKFRfSU5UKSk7DQo+ID4gICAgICAgZmxvYXQgZnZhbCBf X2F0dHJpYnV0ZV9fKCh0YWdfdmFsdWUoVF9GTE9BVCkpOw0KPiA+ICAgIH0gX19hdHRyaWJ1dGVf XygodGFnZ2VkX2J5KHR5cGUpKSk7DQo+ID4NCj4gPiA/DQo+DQo+IEkgZ3Vlc3MgdGhlIHF1ZXN0 aW9uIGlzIHdoZXRoZXIgeW91IHdhbnQgdG8gaGF2ZSBhIG1vcmUgY29uc3RyYWludCBmZWF0dXJl DQo+IG9yIGEgbW9yZSBnZW5lcmFsLCBvciBib3RoLg0KDQpNeSBjdXJyZW50IHRob3VnaHRzIGFy ZSB0aGF0IGEgbW9yZSBnZW5lcmFsIGZlYXR1cmUgd291bGQgYmUgYmV0dGVyIGFuZA0Kc3VpdCBt b3JlIGRldmVsb3BlcnMgYW5kIHNpdHVhdGlvbnMuDQoNCj4NCj4gSSBsaWtlICJndWFyZCIgYmVj YXVzZSB5b3UgY2FuIGV4cHJlc3MgYSBsb3Qgb2YgZGlmZmVyZW50IGNvbnN0cmFpbnRzDQo+IGFu ZCB0YWdnZWQgdW5pb25zIGFyZSBqdXN0IG9uZSBwb3NzaWJsZSB1c2UgY2FzZS4NCj4NCg0KSSBh Z3JlZSB3aXRoIHRoZSAiZ3VhcmQiIHN0YXRlbWVudHMgYW5kIGl0IHNob3VsZCBiZSBhYmxlIHRv IGltcGxlbWVudA0KdGFnZ2VkIHVuaW9ucyBlYXNpbHkgd2hpbGUga2VlcGluZyB0aGUgc3ludGF4 IGF2YWlsYWJsZSBmb3IgbW9yZQ0KY29tcGxleCByZWxhdGlvbnNoaXBzLiBGb3IgYSB0YWdnZWQg dW5pb24gd2l0aCB3YXJuaW5ncyBJIHdvdWxkIHByZWZlcg0KdG8gaGF2ZSBhIHNlcGFyYXRlIGF0 dHJpYnV0ZSB0aGF0IGVuYWJsZXMgd2FybmluZyB3aGVuIGVudW0gdmFsdWVzIGFyZQ0Kbm90IHVz ZWQgaW4gdGhlIHVuaW9uIGd1YXJkIHN0YXRlbWVudHMuDQoNCnVuaW9uIHsNCiAgaW50IGl2YWwg W1tnbnU6Omd1YXJkKC50eXBlID09IFRfSU5UKV1dOw0KICBmbG9hdCBmdmFsIFtbZ251OjpndWFy ZCgudHlwZSA9PSBUX0ZMT0FUIHx8IC50eXBlID09IFRfTlVNQkVSKV1dOw0KfSBbW2dudTo6d2Fy bl91bnVzZWRfdGFnKGVudW0gdHlwZSwgVF9VTktOT1dOKV1dOw0KDQpUaGlzIHdvdWxkIHNhdGlz ZnkgdGhlIHVzZSBvZiBUX0lOVCwgVF9GTE9BVCwgVF9OVU1CRVIgZm9yIHRoZQ0Kd2Fybl91bnVz ZWRfdGFnIGF0dHJpYnV0ZSBkZXNwaXRlIFRfRkxPQVQgYW5kIFRfTlVNQkVSIGJlaW5nIGluIHRo ZQ0Kc2FtZSBndWFyZCBzdGF0ZW1lbnQuICBJZiBhbm90aGVyIHZhbHVlIHdhcyBhZGRlZCBzdWNo IGFzIFRfU1RSLCBhDQp3YXJuaW5nIHdvdWxkIGJlIGluY3VycmVkLg0KDQo+ID4NCj4gPiBJbiBw cmluY2lwbGUgdGhlIFFVQUxfVU5JT04gZmFjaWxpdHkgd291bGQgYWxsb3cgaGF2aW5nIGRpZmZl cmVudA0KPiA+IHRhZyBtZW1iZXJzIGZvciBkaWZmZXJlbnQgZmllbGRzIG9yIGV2ZW4gY29tcGxl eCBjb21iaW5lZCBleHByZXNzaW9ucw0KPiA+IG9yIGNvbnN0YW50cy4gIERvIHdlIHdhbnQvbmVl ZA0KPiA+DQo+ID4gICB1bmlvbiB7DQo+ID4gICAgICAgaW50IGl2YWwgX19hdHRyaWJ1dGVfXyh0 YWdfdmFsdWUoVF9JTlQpKTsNCj4gPiAgICAgICBmbG9hdCBmdmFsIF9fYXR0cmlidXRlX18odGFn X3ZhbHVlKFRfRkxPQVQpKTsNCj4gPiAgICAgICBjaGFyIHBhZFtzaXplb2YodW5pb24pXSBfX2F0 dHJpYnV0ZV9fKCh0YWdfZGVmYXVsdCkpOw0KPiA+ICAgIH0gX19hdHRyaWJ1dGVfXygodGFnZ2Vk X2J5KHR5cGUpKSk7DQo+ID4NCj4gPiBha2EgYSBmYWxsYmFjayBhY3RpdmUgZWxlbWVudD8gIEZv ciBRVUFMX1VOSU9OIGl0IHdvdWxkIGJlIHRoZQ0KPiA+IGxhc3QgbWVtYmVyIHdpdGggYSB0cnVl IHF1YWxpZmllci4gIFRoZSBiZWhhdmlvciB3aGVuIG5vIGZpZWxkDQo+ID4gaXMgYWN0aXZlIGlz bid0IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCBidXQgeW91IGNvdWxkIHJlYWQgaXQgdG8gYmUNCj4g PiB0aGF0IHRoZSB1bmlvbiBpcyBlbXB0eSB0aGVuLg0KPg0KPiBJIGFncmVlIHRoYXQgYSBkZWZh dWx0IHRhZyBtYWtlcyBzZW5zZS4gSWYgd2UgYWRkIGEgbW9yZSBjb25zdHJhaW50DQo+IHZlcnNp b24gbGlrZSB0aGlzLCBJIHdvdWxkIHdvdWxkIHByb2JhYmx5IHVzZSBhbiBldmVuIHNob3J0ZXIg c3ludGF4DQo+IGFuZCByZXVzZSB0aGUgImRlZmF1bHQiIGtleXdvcmQ6DQo+DQo+IGVudW0gbnVt X3R5cGUgdHlwZTsNCj4gW1tnbnU6OnRhZ2dlZF9ieSh0eXBlKV1dIHVuaW9uIHsNCj4gICAgICAg W1tnbnU6OnRhZyhUX0lOVCldXSBpbnQgaXZhbDsNCj4gICAgICAgW1tnbnU6OnRhZyhUX0ZMT0FU KV0gZmxvYXQgZnZhbDsNCj4gICAgICAgW1tnbnU6OnRhZyhkZWZhdWx0KV1dIGNoYXIgcGFkW3Np emVvZih1bmlvbildOw0KPiB9Ow0KPg0KPiBJZiB0aGUgdW5kZXJseWluZyBmZWF0dXJlIGlzIFFV QUxfVU5JT04gYW5kIHRoaXMgY2hhbmdlcyB0aGUgc2l6ZSBvZg0KPiB0aGUgdW5pb24gZGVwZW5k aW5nIG9uIHRoZSB0YWcsIEkgd291bGQgbm90IHVzZSBhdHRyaWJ1dGVzIGF0IGFsbA0KPiBidXQg aW50cm9kdWNlIGEgbmV3IF9fdGFnZ2VkX3VuaW9uIHR5cGUgb3Igc29tZXRoaW5nLg0KDQpJZiBR VUFMX1VOSU9OIGNoYW5nZXMgdGhlIHNpemUgb2YgdGhlIHVuaW9uLCBJIHdvdWxkIHByZWZlciB0 byB1c2UgYQ0KZGlmZmVyZW50IGZlYXR1cmUgc28gdGhhdCBBQkkgc2l6ZSBpcyBjbGVhciBhbmQg bWF0Y2hlcyBzdGFuZGFyZCB1bmlvbg0Kc2l6aW5nLiBJZiB0aGVyZSB3ZXJlIGEgdW5pb24gdGhh dCBjaGFuZ2VkIHNpemUgZGVwZW5kaW5nIG9uIHRoZSB0YWcsIEkNCndvdWxkIGFsc28gcHJlZmVy IGludHJvZHVjaW5nIGEgbmV3IHR5cGUuDQoNCkFzaHRvbg0KDQo+DQo+IE1hcnRpbg0KPg0KPiA+ DQo+ID4gPiAgICAgZmxvYXQgZnZhbDsNCj4gPiA+ICAgfSBfX2F0dHJpYnV0ZV9fKCh3YXJuX3Vu dGFnZ2VkKSk7DQo+ID4gPiB9Ow0KPiA+ID4NCj4gPiA+IFdhcm5pbmc6IHVuaW9uIDxhbm9ueW1v dXM+IG1lbWJlciAnZnZhbCcgaXMgdW50YWdnZWQuIDx3YXJuX3VudGFnZ2VkPg0KPiA+ID4NCj4g PiA+DQo+ID4gPiBBbm90aGVyIGV4YW1wbGUgc2hvd2luZyB1bnVzZWQgZW51bSBmaWVsZA0KPiA+ ID4NCj4gPiA+IHN0cnVjdCBudW1iZXIgew0KPiA+ID4gICBlbnVtIG51bV90eXBlIHR5cGU7DQo+ ID4gPg0KPiA+ID4gICB1bmlvbiB7DQo+ID4gPiAgICAgaW50IGl2YWwgX19hdHRyaWJ1dGVfXygo Z3VhcmQoLnR5cGUgPT0gVF9JTlQpKTsNCj4gPiA+ICAgfSBfX2F0dHJpYnV0ZV9fKCh3YXJuX3Vu dGFnZ2VkKGVudW0gbnVtX3R5cGUsIFRfVU5LTk9XTikpKTsNCj4gPiA+IH07DQo+ID4gPg0KPiA+ ID4gV2FybmluZzogdW5pb24gPGFub255bW91cz4gbWlzc2luZyBlbnVtIHZhbHVlICdUX0ZMT0FU Jy4NCjx3YXJuX3VudGFnZ2VkPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBUaGUgYWJvdmUgc2hvd2lu ZyBhIHdhcm5fdW50YWdnZWQgdGhhdCBpZ25vcmVzIHRoZSBUX1VOS05PV04gdmFsdWUuDQo+ID4g Pg0KPiA+ID4gVGhlIG9ubHkgaXNzdWUgSSBoYXZlIHdpdGggbXkgY3VycmVudCBwcm9wb3NlZCBz eW50YXggZm9yDQp3YXJuX3VudGFnZ2VkDQo+ID4gPiB3b3VsZCBiZSB0aGF0IGl0IHdvdWxkIGJl IGNvbXBsZXggd2l0aCB0aGUgc3ludGF4IG9mIHRoZSBndWFyZA0KYXR0cmlidXRlDQo+ID4gPg0K PiA+ID4gQXNodG9uDQoNClNvZnR3YXJlIEVuZ2luZWVyDQoNCndvcmxkaWV0eSBHbWJIDQpOb3Jk c2Vlc3RyYcOfZSAyLCAyNjEzMSBPbGRlbmJ1cmcsIERldXRzY2hsYW5kDQoNClRlbGVmb24gKzQ5 IDQ0MSA1NTkgNzcwIDANCldlYiB3d3cud29ybGRpZXR5LmRlDQoNCktlaW5lIE5ld3MgcnVuZCB1 bSB3b3JsZGlldHkgdmVycGFzc2VuPw0KSGllciBOZXdzbGV0dGVyIGFib25uaWVyZW4hPGh0dHBz Oi8vd3d3LndvcmxkaWV0eS5kZS9uZXdzbGV0dGVyLWFubWVsZHVuZz4NCg0KRmFjZWJvb2s8aHR0 cHM6Ly93d3cuZmFjZWJvb2suY29tL3dvcmxkaWV0eS8+IHwgWGluZzxodHRwczovL3d3dy54aW5n LmNvbS9jb21wYW5pZXMvd29ybGRpZXR5Z21iaD4gfCBMaW5rZWRJbjxodHRwczovL2RlLmxpbmtl ZGluLmNvbS9jb21wYW55L3dvcmxkaWV0eS1nbWJoPiB8IEdpdEh1YjxodHRwczovL2dpdGh1Yi5j b20vd29ybGRpZXR5Pg0KDQpBbGxlaW52ZXJ0cmV0dW5nc2JlcmVjaHRpZ3RlIEdlc2VsbHNjaGFm dGVyOiBBZHJpYW4gTWFjaGEsIFRvcmJlbiBTY2hpbmtlDQpIYW5kZWxzbmllZGVybGFzc3VuZzog T2xkZW5idXJnIGkuTy4gfCBBbXRzZ2VyaWNodCBPbGRlbmJ1cmcgaS5PLiBIUkIgMjAgODQgMjgN Cg==