LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgICAKICogRmlsZW5hbWU6ICAgICAgaXJsYW5fZXZlbnQuaAogKiBWZXJzaW9uOiAgICAgICAKICogRGVzY3JpcHRpb246ICAgTEFOIGFjY2VzcwogKiBTdGF0dXM6ICAgICAgICBFeHBlcmltZW50YWwuCiAqIEF1dGhvcjogICAgICAgIERhZyBCcmF0dGxpIDxkYWdiQGNzLnVpdC5ubz4KICogQ3JlYXRlZCBhdDogICAgU3VuIEF1ZyAzMSAyMDoxNDozNyAxOTk3CiAqIE1vZGlmaWVkIGF0OiAgIFR1ZSBGZWIgIDIgMDk6NDU6MTcgMTk5OQogKiBNb2RpZmllZCBieTogICBEYWcgQnJhdHRsaSA8ZGFnYkBjcy51aXQubm8+CiAqIAogKiAgICAgQ29weXJpZ2h0IChjKSAxOTk3IERhZyBCcmF0dGxpIDxkYWdiQGNzLnVpdC5ubz4sIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqICAgICAKICogICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgCiAqICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyAKICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIAogKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCiAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcyAKICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmbmRlZiBJUkxBTl9FVkVOVF9ICiNkZWZpbmUgSVJMQU5fRVZFTlRfSAoKI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgojaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CgojaW5jbHVkZSA8bmV0L2lyZGEvaXJsYW5fY29tbW9uLmg+Cgp0eXBlZGVmIGVudW0gewoJSVJMQU5fSURMRSwKCUlSTEFOX1FVRVJZLAoJSVJMQU5fQ09OTiwgCglJUkxBTl9JTkZPLAoJSVJMQU5fTUVESUEsCglJUkxBTl9PUEVOLAoJSVJMQU5fV0FJVCwKCUlSTEFOX0FSQiwgCglJUkxBTl9EQVRBLAoJSVJMQU5fQ0xPU0UsCglJUkxBTl9TWU5DCn0gSVJMQU5fU1RBVEU7Cgp0eXBlZGVmIGVudW0gewoJSVJMQU5fRElTQ09WRVJZX0lORElDQVRJT04sCglJUkxBTl9JQVNfUFJPVklERVJfQVZBSUwsCglJUkxBTl9JQVNfUFJPVklERVJfTk9UX0FWQUlMLAoJSVJMQU5fTEFQX0RJU0NPTk5FQ1QsCglJUkxBTl9MTVBfRElTQ09OTkVDVCwKCUlSTEFOX0NPTk5FQ1RfQ09NUExFVEUsCglJUkxBTl9EQVRBX0lORElDQVRJT04sCglJUkxBTl9EQVRBX0NPTk5FQ1RfSU5ESUNBVElPTiwKCUlSTEFOX1JFVFJZX0NPTk5FQ1QsCgoJSVJMQU5fQ09OTkVDVF9JTkRJQ0FUSU9OLAoJSVJMQU5fR0VUX0lORk9fQ01ELAoJSVJMQU5fR0VUX01FRElBX0NNRCwKCUlSTEFOX09QRU5fREFUQV9DTUQsCglJUkxBTl9GSUxURVJfQ09ORklHX0NNRCwKCglJUkxBTl9DSEVDS19DT05fQVJCLAoJSVJMQU5fUFJPVklERVJfU0lHTkFMLAoKCUlSTEFOX1dBVENIRE9HX1RJTUVPVVQsCn0gSVJMQU5fRVZFTlQ7CgpleHRlcm4gY2hhciAqaXJsYW5fc3RhdGVbXTsKCnZvaWQgaXJsYW5fZG9fY2xpZW50X2V2ZW50KHN0cnVjdCBpcmxhbl9jYiAqc2VsZiwgSVJMQU5fRVZFTlQgZXZlbnQsIAoJCQkgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKCnZvaWQgaXJsYW5fZG9fcHJvdmlkZXJfZXZlbnQoc3RydWN0IGlybGFuX2NiICpzZWxmLCBJUkxBTl9FVkVOVCBldmVudCwgCgkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7Cgp2b2lkIGlybGFuX25leHRfY2xpZW50X3N0YXRlKHN0cnVjdCBpcmxhbl9jYiAqc2VsZiwgSVJMQU5fU1RBVEUgc3RhdGUpOwp2b2lkIGlybGFuX25leHRfcHJvdmlkZXJfc3RhdGUoc3RydWN0IGlybGFuX2NiICpzZWxmLCBJUkxBTl9TVEFURSBzdGF0ZSk7CgojZW5kaWYK