From: michael <mi...@mp...> - 2004-04-21 16:10:52
|
ZG8geW91IHRoaW5rIGl0IHJlYWxseSB3b3JrIG9uIG1vc3QgcGxhdGZvcm1zPw0KDQppIHRlc3Qg b24gdHdvLCByZWRoYXQgb24geDg2IGFuZCBMRlMgb24gb3RoZXIgcGxhdGZvcm0NCg0KeDg2IGlj b252IG91dCB3aXRoIHR3byBsZWFkaW5nIGJ5dGUgZm9yIHVuaWNvZGUsIA0KDQphbmQgYW5vdGhl ciBwbGF0Zm9ybSB3aXRob3V0IHRoYXQsDQoNCmFuZCBhbHNvIHNvbWUgcGxhdGZvcm0gdGhlIHR3 byBieXRlcyBmb3Igb25lIGNoYXIgaW4gdW5pY29kZSANCg0KYXJlIG5vdCBpbiB0aGUgc2FtZSBv cmRlciwgc28gSSBtdXN0IHJldmlzZSB0aGUgY29kZSB0aGUgDQoNCnN3YXAgdGhlIHR3byBieXRl cyBvZiBlYWNoIGNoYXIgb25lIGJ5IG9uZSANCg0Kc28gdWdseSA6ICkNCi0tLS0tIE9yaWdpbmFs IE1lc3NhZ2UgLS0tLS0gDQpGcm9tOiAiQW5keSBJZ29zaGluIiA8YWlAdnN1LnJ1Pg0KVG86ICJt aWNoYWVsIiA8bWljaGFlbEBtcHJjLnBrdS5lZHUuY24+OyA8cmRlc2t0b3AtZGV2ZWxAbGlzdHMu c291cmNlZm9yZ2UubmV0Pg0KU2VudDogV2VkbmVzZGF5LCBBcHJpbCAyMSwgMjAwNCA5OjM2IFBN DQpTdWJqZWN0OiBSZTogW3JkZXNrdG9wLWRldmVsXSBSZTogYWJvdXQgZHJpdmVyIG1hcHBpbmcg cHJvYmxlbQ0KDQoNCj4gYW5kIHNvbWUgb3B0aW1pemF0aW9uIGFnYWluLiA6KQ0KPiANCj4gQW5k eSBJZ29zaGluIHdyb3RlOg0KPiA+IA0KPiA+IEFuZCByZXNlbmQgcGF0Y2ggYWdhaW4uIDopDQo+ ID4gDQo+ID4gc29tZSBvcHRpbWl6YXRpb25zIGFyZSBwcmVzZW50ZWQuDQo+ID4gDQo+ID4gQW5k eSBJZ29zaGluIHdyb3RlOg0KPiA+ID4NCj4gPiA+IG1pY2hhZWwgd3JvdGU6DQo+ID4gPiA+DQo+ ID4gPiA+IHJlYWxseSBnb29k7z8/DQo+ID4gPiA+DQo+ID4gPiA+IGJ1dCBvbiBteSBwbGF0Zm9y bSwgYnkgbmxfbGFuZ2luZm8gaXQgZ2V0cyBHQjIzMTItMTk4MCwgYW5kIGl0IGNhbid0DQo+ID4g PiA+DQo+ID4gPiA+IGJlIHJlY29nbml6ZWQgYnkgaWNvbnYsIGljb252IG9ubHkgc3VwcG9ydCBH YjIzMTIsIGRvIHlvdSBtZWV0DQo+ID4gPiA+DQo+ID4gPiA+IHByb2JsZW0gbGlrZSB0aGlzPw0K PiA+ID4NCj4gPiA+IE5vLg0KPiA+ID4NCj4gPiA+IEluIFNvbGFyaXMvcnUoSVNPODg1OS01KSwg QUlYL3J1X1JVKElTTzg4NTktNSkgYW5kIGxpbnV4L3J1X1JVLlVURi04DQo+ID4gPiBjb2RlcGFn ZXMgYXJlIGRldGVybWluZWQgY29ycmVjdGx5OiBhcyBJU084ODU5LTUgYW5kIFVURi04DQo+ID4g Pg0KPiA+ID4gTWF5YmUgeW91IG5lZWQgdG8gYWRkIGFsaWFzIGZvciBpY29udiBHQjIzMTIgLT4g R0IyMzEyLTE5ODANCj4gPiA+DQo+ID4gPg0KPiA+ID4gPiAtLS0tLSBPcmlnaW5hbCBNZXNzYWdl IC0tLS0tDQo+ID4gPiA+IEZyb206ICJBbmR5IElnb3NoaW4iIDxhaUB2c3UucnU+DQo+ID4gPiA+ IFRvOiA8cmRlc2t0b3AtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Pg0KPiA+ID4gPiBTZW50 OiBUdWVzZGF5LCBBcHJpbCAyMCwgMjAwNCAxMDo0OCBQTQ0KPiA+ID4gPiBTdWJqZWN0OiBSZTog W3JkZXNrdG9wLWRldmVsXSBSZTogYWJvdXQgZHJpdmVyIG1hcHBpbmcgcHJvYmxlbQ0KPiA+ID4g Pg0KPiA+ID4gPiA+IFJlc2VuZGluZyBhZ2FpbiwgdGhpcyB0aW1lIHdpdGggYXV0b21hdGljIGRl dGVybWluYXRpb24gb2YgdGhlIGNvZGVwYWdlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gcGF0Y2gg YXR0YWNoZWQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBBbmR5IElnb3NoaW4gd3JvdGU6DQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gSGksIE1pY2hhZWwhDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gSSBtYWRlIHNtYWxsIGNoYW5nZXMgZm9yIHlvdXIgcGF0Y2ggYW5kIGltcGxlbWVudCBhIGNv bW1hbmQgbGluZSBrZXkNCj4gPiA+ID4gPiA+IGZvciBzcGVjaWZ5aW5nIGEgY29kZXBhZ2UuIGZv ciBleGFtcGxlOiByZGVza3RvcCAtUCBVVEYtOCAuLi4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiBhbmQgc21hbGwgZml4ZXMgYWJvdXQgZ191c2VybmFtZSBzaXplLg0KPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+IHBhdGNoIGF0dGFjaGVkLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBt aWNoYWVsIHdyb3RlOg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IE9LLCBJ IGhhdmUgdGhlIGRpZmYgaW4gdGhlIGF0dGFjaG1lbnQgb2YgdGhpcyBsZXR0ZXIuDQo+ID4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gQnV0IHRoZSBzb3VyY2UgY29kZSBpcyBmb3Ig Y29udmVyc2lvbiBiZXR3ZWVuIGNoaW5lc2UgYW5kIGFzY2lpLA0KPiA+ID4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gPiA+IEkgdXNlIGljb252IGZ1bmN0aW9uIHRvIGdldCBpdCB0byB3b3Jr LiBJIGRvbid0IGtub3cgbXVjaCBhYm91dA0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiA+IGxvY2FsZSBmdW5jdGlvbnMsIHNvIEkgY2FuJ3QgY29kZSBpdCBtb3JlIGNvbW1vbmx5 IGZvciBhdXRvbWF0aWMNCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBjb252 ZXJzaW9uIGJldHdlZW4gbGFuZ3VhZ2VzLCBUaG91Z2ggeW91IGNhbiBlYXNpbHkgZ2V0IGl0IHdv cmtlZA0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IHdpdGggeW91ciBsb2Nh bGUsIEkgdGhpbmsuDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gSSBob3Bl IHNvbWVvbmUgd2lsbCBnZXQgaXQgbW9yZSBjb21tb24gZm9yIGFsbCB1c2Vycy4gUGVyaGFwcw0K PiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IHdlIGNhbiBhZGQgc29tZSBvcHRp b25zIGZvciBpdCwgdGh4IGZvciBhbGwgdGhlIHdvcmsgb2YgcmRlc2t0b3ANCj4gPiA+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBkZXZlbG9wZXJzLCByZWFsbHkhDQo+IA0KPiANCj4g LS0gDQo+IEFuZHkgSWdvc2hpbiA8YWlAdnN1LnJ1PiAgICAgICAgICAgICAgICAgVm9yb25lemgg U3RhdGUgVW5pdmVyc2l0eQ0KPiBQaG9uZTogKzcgKDA3MzIpIDUyMjQwNiAgICAgICAgICAgICAg ICAgIE5ldHdvcmsgT3BlcmF0aW9uIENlbnRlcg0KPiBGYXg6ICAgKzcgKDA3MzIpIDIwODgyMCAg ICAgICAgICAgICAgICAgIFZvcm9uZXpoLCBSdXNzaWENCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KDQoNCj4gZGlmZiAtdXIgcmRlc2t0b3AvY29uc3RhbnRzLmggcmRlc2t0b3AtMS40cHJl L2NvbnN0YW50cy5oDQo+IC0tLSByZGVza3RvcC9jb25zdGFudHMuaCAyMDA0LTA0LTIwIDE3OjQ5 OjUwLjAwMDAwMDAwMCArMDQwMA0KPiArKysgcmRlc2t0b3AtMS40cHJlL2NvbnN0YW50cy5oIDIw MDQtMDQtMjEgMTA6NTQ6MzguMDAwMDAwMDAwICswNDAwDQo+IEBAIC0yMSw2ICsyMSw4IEBADQo+ ICAvKiBUQ1AgcG9ydCBmb3IgUmVtb3RlIERlc2t0b3AgUHJvdG9jb2wgKi8NCj4gICNkZWZpbmUg VENQX1BPUlRfUkRQIDMzODkNCj4gIA0KPiArI2RlZmluZSBERUZBVUxUX0NPREVQQUdFICJVVEYt OCINCj4gKw0KPiAgLyogSVNPIFBEVSBjb2RlcyAqLw0KPiAgZW51bSBJU09fUERVX0NPREUNCj4g IHsNCj4gZGlmZiAtdXIgcmRlc2t0b3AvbGljZW5jZS5jIHJkZXNrdG9wLTEuNHByZS9saWNlbmNl LmMNCj4gLS0tIHJkZXNrdG9wL2xpY2VuY2UuYyAyMDAzLTA3LTI5IDAxOjQxOjEyLjAwMDAwMDAw MCArMDQwMA0KPiArKysgcmRlc2t0b3AtMS40cHJlL2xpY2VuY2UuYyAyMDA0LTA0LTIxIDEwOjU0 OjM4LjAwMDAwMDAwMCArMDQwMA0KPiBAQCAtMjYsNyArMjYsNyBAQA0KPiAgI2luY2x1ZGUgImNy eXB0by9yYzQuaCINCj4gICNlbmRpZg0KPiAgDQo+IC1leHRlcm4gY2hhciBnX3VzZXJuYW1lWzE2 XTsNCj4gK2V4dGVybiBjaGFyIGdfdXNlcm5hbWVbNjRdOw0KPiAgZXh0ZXJuIGNoYXIgaG9zdG5h bWVbMTZdOw0KPiAgDQo+ICBzdGF0aWMgdWludDggZ19saWNlbmNlX2tleVsxNl07DQo+IGRpZmYg LXVyIHJkZXNrdG9wL3JkZXNrdG9wLmMgcmRlc2t0b3AtMS40cHJlL3JkZXNrdG9wLmMNCj4gLS0t IHJkZXNrdG9wL3JkZXNrdG9wLmMgMjAwNC0wNC0yMCAxNzo0OTo1MC4wMDAwMDAwMDAgKzA0MDAN Cj4gKysrIHJkZXNrdG9wLTEuNHByZS9yZGVza3RvcC5jIDIwMDQtMDQtMjEgMTA6NTQ6MzguMDAw MDAwMDAwICswNDAwDQo+IEBAIC0yOCw2ICsyOCw4IEBADQo+ICAjaW5jbHVkZSA8c3lzL3RpbWVz Lmg+IC8qIHRpbWVzICovDQo+ICAjaW5jbHVkZSA8Y3R5cGUuaD4gLyogdG91cHBlciAqLw0KPiAg I2luY2x1ZGUgPGVycm5vLmg+DQo+ICsjaW5jbHVkZSA8bG9jYWxlLmg+DQo+ICsjaW5jbHVkZSA8 bGFuZ2luZm8uaD4NCj4gICNpbmNsdWRlICJyZGVza3RvcC5oIg0KPiAgDQo+ICAjaWZkZWYgRUdE X1NPQ0tFVA0KPiBAQCAtNDMsNiArNDUsNyBAQA0KPiAgDQo+ICBjaGFyIGdfdGl0bGVbNjRdID0g IiI7DQo+ICBjaGFyIGdfdXNlcm5hbWVbNjRdOw0KPiArY2hhciBnX2NvZGVwYWdlWzE2XSA9ICIi Ow0KPiAgY2hhciBob3N0bmFtZVsxNl07DQo+ICBjaGFyIGtleW1hcG5hbWVbMTZdOw0KPiAgaW50 IGtleWxheW91dCA9IDB4NDA5OyAvKiBEZWZhdWx0cyB0byBVUyBrZXlib2FyZCBsYXlvdXQgKi8N Cj4gQEAgLTExMiw2ICsxMTUsNyBAQA0KPiAgIGZwcmludGYoc3RkZXJyLCAiICAgLWc6IGRlc2t0 b3AgZ2VvbWV0cnkgKFd4SClcbiIpOw0KPiAgIGZwcmludGYoc3RkZXJyLCAiICAgLWY6IGZ1bGwt c2NyZWVuIG1vZGVcbiIpOw0KPiAgIGZwcmludGYoc3RkZXJyLCAiICAgLWI6IGZvcmNlIGJpdG1h cCB1cGRhdGVzXG4iKTsNCj4gKyBmcHJpbnRmKHN0ZGVyciwgIiAgIC1QOiBsb2NhbCBjb2RlcGFn ZVxuIik7DQo+ICAgZnByaW50ZihzdGRlcnIsICIgICAtQjogdXNlIEJhY2tpbmdTdG9yZSBvZiBY LXNlcnZlciAoaWYgYXZhaWxhYmxlKVxuIik7DQo+ICAgZnByaW50ZihzdGRlcnIsICIgICAtZTog ZGlzYWJsZSBlbmNyeXB0aW9uIChGcmVuY2ggVFMpXG4iKTsNCj4gICBmcHJpbnRmKHN0ZGVyciwg IiAgIC1FOiBkaXNhYmxlIGVuY3J5cHRpb24gZnJvbSBjbGllbnQgdG8gc2VydmVyXG4iKTsNCj4g QEAgLTM2NCw3ICszNjgsNyBAQA0KPiAgI2RlZmluZSBWTkNPUFQNCj4gICNlbmRpZg0KPiAgDQo+ IC0gd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFZOQ09QVCAidTpkOnM6YzpwOm46azpn OmZiQmVFbUNES1M6VDpOWDphOng6cjowNDVoPyIpKSAhPSAtMSkNCj4gKyB3aGlsZSAoKGMgPSBn ZXRvcHQoYXJnYywgYXJndiwgVk5DT1BUICJ1OlA6ZDpzOmM6cDpuOms6ZzpmYkJlRW1DREtTOlQ6 Tlg6YTp4OnI6MDQ1aD8iKSkgIT0gLTEpDQo+ICAgew0KPiAgIHN3aXRjaCAoYykNCj4gICB7DQo+ IEBAIC0zODcsNiArMzkxLDEwIEBADQo+ICAgdXNlcm5hbWVfb3B0aW9uID0gMTsNCj4gICBicmVh azsNCj4gIA0KPiArIGNhc2UgJ1AnOg0KPiArIFNUUk5DUFkoZ19jb2RlcGFnZSwgb3B0YXJnLCBz aXplb2YoZ19jb2RlcGFnZSkpOw0KPiArIGJyZWFrOw0KPiArDQo+ICAgY2FzZSAnZCc6DQo+ICAg U1RSTkNQWShkb21haW4sIG9wdGFyZywgc2l6ZW9mKGRvbWFpbikpOw0KPiAgIGJyZWFrOw0KPiBA QCAtNjUyLDYgKzY2MCwxOCBAQA0KPiAgIFNUUk5DUFkoZ191c2VybmFtZSwgcHctPnB3X25hbWUs IHNpemVvZihnX3VzZXJuYW1lKSk7DQo+ICAgfQ0KPiAgDQo+ICsgaWYgKGdfY29kZXBhZ2VbMF0g PT0gMCkNCj4gKyB7DQo+ICsgaWYgKHNldGxvY2FsZShMQ19DVFlQRSwgIiIpKQ0KPiArIHsNCj4g KyBTVFJOQ1BZKGdfY29kZXBhZ2UsIG5sX2xhbmdpbmZvKENPREVTRVQpLCBzaXplb2YoZ19jb2Rl cGFnZSkpOw0KPiArIH0NCj4gKyBlbHNlDQo+ICsgew0KPiArIFNUUk5DUFkoZ19jb2RlcGFnZSwg REVGQVVMVF9DT0RFUEFHRSwgc2l6ZW9mKGdfY29kZXBhZ2UpKTsNCj4gKyB9DQo+ICsgfQ0KPiAr DQo+ICAgaWYgKGhvc3RuYW1lWzBdID09IDApDQo+ICAgew0KPiAgIGlmIChnZXRob3N0bmFtZShm dWxsaG9zdG5hbWUsIHNpemVvZihmdWxsaG9zdG5hbWUpKSA9PSAtMSkNCj4gZGlmZiAtdXIgcmRl c2t0b3AvcmRwLmMgcmRlc2t0b3AtMS40cHJlL3JkcC5jDQo+IC0tLSByZGVza3RvcC9yZHAuYyAy MDA0LTA0LTIwIDE3OjQ5OjUwLjAwMDAwMDAwMCArMDQwMA0KPiArKysgcmRlc2t0b3AtMS40cHJl L3JkcC5jIDIwMDQtMDQtMjEgMTc6MTU6MjcuMDAwMDAwMDAwICswNDAwDQo+IEBAIC0xOSwxMCAr MTksMTMgQEANCj4gICovDQo+ICANCj4gICNpbmNsdWRlIDx0aW1lLmg+DQo+ICsjaW5jbHVkZSA8 ZXJybm8uaD4NCj4gKyNpbmNsdWRlIDxpY29udi5oPg0KPiAgI2luY2x1ZGUgInJkZXNrdG9wLmgi DQo+ICANCj4gIGV4dGVybiB1aW50MTYgZ19tY3NfdXNlcmlkOw0KPiAtZXh0ZXJuIGNoYXIgZ191 c2VybmFtZVsxNl07DQo+ICtleHRlcm4gY2hhciBnX3VzZXJuYW1lWzY0XTsNCj4gK2V4dGVybiBj aGFyIGdfY29kZXBhZ2VbMTZdOw0KPiAgZXh0ZXJuIEJPT0wgZ19iaXRtYXBfY29tcHJlc3Npb247 DQo+ICBleHRlcm4gQk9PTCBnX29yZGVyczsNCj4gIGV4dGVybiBCT09MIGdfZW5jcnlwdGlvbjsN Cj4gQEAgLTEyMCwxNyArMTIzLDM4IEBADQo+ICB2b2lkDQo+ICByZHBfb3V0X3VuaXN0cihTVFJF QU0gcywgY2hhciAqc3RyaW5nLCBpbnQgbGVuKQ0KPiAgew0KPiAtIGludCBpID0gMCwgaiA9IDA7 DQo+ICsgc3RhdGljIGljb252X3QgaWNvbnZfaCA9IChpY29udl90KS0xOw0KPiArIHNpemVfdCBp YmwgPSBzdHJsZW4oc3RyaW5nKSwgb2JsID0gbGVuICsgMjsNCj4gKyBjaGFyICpwaW4gPSBzdHJp bmcsICpwb3V0ID0gcy0+cDsNCj4gIA0KPiAtIGxlbiArPSAyOw0KPiArIGlmIChpY29udl9oID09 IChpY29udl90KS0xKQ0KPiArIHsNCj4gKyBzaXplX3QgaSA9IDEsIG8gPSA0Ow0KPiArIGlmICgo aWNvbnZfaCA9IGljb252X29wZW4oIlVOSUNPREUiLCBnX2NvZGVwYWdlKSkgPT0gKGljb252X3Qp LTEpDQo+ICsgew0KPiArIHByaW50ZigiY29udiA6IGljb252X29wZW4gZmFpbCAlZFxuIiwgKGlu dClpY29udl9oKTsNCj4gKyByZXR1cm47DQo+ICsgfQ0KPiArIGlmIChpY29udihpY29udl9oLCAm cGluLCAmaSwgJnBvdXQsICZvKSA9PSAoc2l6ZV90KS0xKQ0KPiArIHsNCj4gKyBpY29udl9jbG9z ZShpY29udl9oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgDQo+ICsgaWNvbnZfaCA9IChpY29udl90KS0xOw0KPiArIHByaW50Zigi Y29udiA6IGljb252KDEpIGZhaWwsIGVycm5vICVkXG4iLCBlcnJubyk7DQo+ICsgcmV0dXJuOw0K PiArIH0NCj4gKyBwaW4gPSBzdHJpbmc7IHBvdXQgPSBzLT5wOw0KPiArIH0NCj4gIA0KPiAtIHdo aWxlIChpIDwgbGVuKQ0KPiArIGlmIChpY29udihpY29udl9oLCAmcGluLCAmaWJsLCAmcG91dCwg Jm9ibCkgPT0gKHNpemVfdCktMSkNCj4gICB7DQo+IC0gcy0+cFtpKytdID0gc3RyaW5nW2orK107 DQo+IC0gcy0+cFtpKytdID0gMDsNCj4gKyBpY29udl9jbG9zZShpY29udl9oKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+ICsg aWNvbnZfaCA9IChpY29udl90KS0xOw0KPiArIHByaW50ZigiY29udiA6IGljb252KDIpIGZhaWws IGVycm5vICVkXG4iLCBlcnJubyk7DQo+ICsgcmV0dXJuOw0KPiAgIH0NCj4gIA0KPiAtIHMtPnAg Kz0gbGVuOw0KPiArIG1lbXNldChwb3V0LCAwLCA0KTsNCj4gKyBzLT5wICs9IGxlbiArIDI7DQo+ ICB9DQo+ICANCj4gIC8qIElucHV0IGEgc3RyaW5nIGluIFVuaWNvZGUNCj4gQEAgLTE0MCwxNyAr MTY0LDI5IEBADQo+ICBpbnQNCj4gIHJkcF9pbl91bmlzdHIoU1RSRUFNIHMsIGNoYXIgKnN0cmlu ZywgaW50IHVuaV9sZW4pDQo+ICB7DQo+IC0gaW50IGkgPSAwOw0KPiArIHN0YXRpYyBpY29udl90 IGljb252X2ggPSAoaWNvbnZfdCktMTsNCj4gKyBzaXplX3QgaWJsID0gdW5pX2xlbiwgb2JsID0g dW5pX2xlbjsNCj4gKyBjaGFyICpwaW4gPSBzLT5wLCAqcG91dCA9IHN0cmluZzsNCj4gIA0KPiAt IHdoaWxlIChpIDwgdW5pX2xlbiAvIDIpDQo+ICsgaWYgKGljb252X2ggPT0gKGljb252X3QpLTEp DQo+ICAgew0KPiAtIGluX3VpbnQ4YShzLCAmc3RyaW5nW2krK10sIDEpOw0KPiAtIGluX3VpbnQ4 cyhzLCAxKTsNCj4gKyBpZiAoKGljb252X2ggPSBpY29udl9vcGVuKGdfY29kZXBhZ2UsICJVTklD T0RFIikpID09IChpY29udl90KS0xKQ0KPiArIHsNCj4gKyBwcmludGYoImNvbnYgOiBpY29udl9v cGVuIGZhaWwgJWRcbiIsIChpbnQpaWNvbnZfaCk7DQo+ICsgcmV0dXJuIDA7DQo+ICsgfQ0KPiAg IH0NCj4gIA0KPiAtIHJldHVybiBpIC0gMTsNCj4gLX0NCj4gKyBpZiAoaWNvbnYoaWNvbnZfaCwg JnBpbiwgJmlibCwgJnBvdXQsICZvYmwpID09IChzaXplX3QpLTEpDQo+ICsgew0KPiArIGljb252 X2Nsb3NlKGljb252X2gpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICANCj4gKyBpY29udl9oID0gKGljb252X3QpLTE7DQo+ICsgcHJp bnRmKCJjb252IDogaWNvbnYgZmFpbCwgZXJybm8gJWRcbiIsIGVycm5vKTsNCj4gKyByZXR1cm4g MDsNCj4gKyB9DQo+ICANCj4gKyByZXR1cm4gcG91dCAtIHN0cmluZzsNCj4gK30NCj4gIA0KPiAg LyogUGFyc2UgYSBsb2dvbiBpbmZvIHBhY2tldCAqLw0KPiAgc3RhdGljIHZvaWQNCj4g |