LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIAogKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCiAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQogKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgogKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCiAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKICogIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQogKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqIAogKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKiAKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAogKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgogKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCiAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKICogdW5kZXIgdGhlIExpY2Vuc2UuCiAqIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgoKI2lmbmRlZiBfVFRCQVNJQ19IWFgKI2RlZmluZSBfVFRCQVNJQ19IWFgKCiNpbmNsdWRlIDxiYXNpYy9zYnN0YXIuaHh4PgojaW5jbHVkZSA8YmFzaWMvbXliYXNpYy5oeHg+CgpjbGFzcyBFcnJvckVudHJ5OwoKI2RlZmluZSBTQlhJRF9UVEJBU0lDCTB4NTQ1NAkJLy8gVFRCYXNpYzogVFQKCiNkZWZpbmUgU0JYQ1JfVEVTVDIgICAweDU0NTM0NTU0TCAgIC8vIFRFU1QKCmNsYXNzIFRUQmFzaWMgOiBwdWJsaWMgTXlCYXNpYwp7CnB1YmxpYzoKCVNCWF9ERUNMX1BFUlNJU1RfTk9EQVRBKFNCWENSX1RFU1QyLFNCWElEX1RUQkFTSUMsMSk7CglUVEJhc2ljKCk7CiAgIH5UVEJhc2ljKCk7CglzYWxfQm9vbCBDb21waWxlKCBTYk1vZHVsZSogKTsKCXN0YXRpYyBNeUJhc2ljKiBDcmVhdGVNeUJhc2ljKCk7CgoJLy8gbmljaHQgbWl0ICNpZmRlZnMga2xhbW1lcm4sIGRhIGRpZXNlIEhlYWRlcmRhdGVpIGb8ciB0ZXN0dG9vbCB1bmQgYmFzaWMKCS8vIGdsZWljaGVybWHfZW4gdmVyd2VuZGV0IHdpcmQuCglERUNMX0xJTksoIENFcnJvckltcGwsIEVycm9yRW50cnkqICk7Ci8vCVNieE9iamVjdCAqcFRlc3RPYmplY3Q7CQkJLy8gZvxyIGRhcyBUZXN0dG9vbDsgYW5zb25zdGVuIE5VTEwKCgl2b2lkIExvYWRJbmlGaWxlKCk7CglTYlRleHRUeXBlIEdldFN5bWJvbFR5cGUoIGNvbnN0IFN0cmluZyAmU3ltYm9sLCBzYWxfQm9vbCBiV2FzVFRDb250cm9sICk7CS8vIEJlc2ltbXQgZGVuIGVyd2VpdGVydGVuIFN5bWJvbHR5cCBm/HIgZGFzIFN5bnRheGhpZ2hsaWdodGluZwoJdmlydHVhbCBjb25zdCBTdHJpbmcgR2V0U3BlY2hpYWxFcnJvclRleHQoKTsKCXZpcnR1YWwgdm9pZCBSZXBvcnRSdW50aW1lRXJyb3IoIEFwcEJhc0VkICpwRWRpdFdpbiApOwoJdmlydHVhbCB2b2lkIERlYnVnRmluZE5vRXJyb3JzKCBzYWxfQm9vbCBiRGVidWdGaW5kTm9FcnJvcnMgKTsKfTsKClNWX0RFQ0xfSU1QTF9SRUYoVFRCYXNpYykKCiNlbmRpZgo=