LyoKICogSGVscCBWaWV3ZXIKICoKICogQ29weXJpZ2h0IDE5OTYgVWxyaWNoIFNjaG1pZAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgovKiBUaGlzIGZpbGUgaXMgbm90IHlldCBjb21wbGV0ZSAhISAKICAgTXVzdCBiZSByZXdyaXR0ZW4gZm9yIHVzZSBvZiBOTFMgKi8KCiNkZWZpbmUgTEFOR1VBR0VfSUQgICAgICAgICAgICAgICAgICBTawojZGVmaW5lIExBTkdVQUdFX05VTUJFUiAgICAgICAgICAgICAgMTAKCi8qIE1lbnUgKi8KCiNkZWZpbmUgTUVOVV9GSUxFICAgICAgICAgICAgICAgICAgICAiJlP6Ym9yIgojZGVmaW5lIE1FTlVfRklMRV9PUEVOICAgICAgICAgICAgICAgIiZPdHZvcmmdLi4uIgojZGVmaW5lIE1FTlVfRklMRV9QUklOVCAgICAgICAgICAgICAgIiZUbGHoaZ0iCiNkZWZpbmUgTUVOVV9GSUxFX1BSSU5URVJfU0VUVVAgICAgICAiJk5hc3RhdmVuaWUgdGxh6GUuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX0VYSVQgICAgICAgICAgICAgICAiVSZrb27oaZ0iCgojZGVmaW5lIE1FTlVfRURJVCAgICAgICAgICAgICAgICAgICAgIiZVcHJhdmmdIgojZGVmaW5lIE1FTlVfRURJVF9DT1BZX0RJQUxPRyAgICAgICAgIktvcO0mcm92YZ0uLi4iCiNkZWZpbmUgTUVOVV9FRElUX0FOTk9UQVRFICAgICAgICAgICAiJlNrb21lbnRvdmGdLi4uIgoKI2RlZmluZSBNRU5VX0JPT0tNQVJLICAgICAgICAgICAgICAgICImWuFsb55rYSIKI2RlZmluZSBNRU5VX0JPT0tNQVJLX0RFRklORSAgICAgICAgICImRGVmaW5vdmGdLi4uIgoKI2RlZmluZSBNRU5VX0hFTFAgICAgICAgICAgICAgICAgICAgICImUG9tb2MiCiNkZWZpbmUgTUVOVV9IRUxQX09OX0hFTFAgICAgICAgICAgICAiUG9tb2MgJm5hIHBvbW9jaSIKI2RlZmluZSBNRU5VX0hFTFBfT05fVE9QICAgICAgICAgICAgICJWnmR5IG5hICZ2cmNodSIKI2RlZmluZSBNRU5VX0hFTFBfSU5GTyAgICAgICAgICAgICAgICImSW5mby4uLiIKI2RlZmluZSBNRU5VX0hFTFBfQUJPVVRfV0lORSAgICAgICAgICJPJiBXSU5FIgoKLyogU3RyaW5ncyAqLwoKI2RlZmluZSBTVFJJTkdfV0lORV9IRUxQICAgICAgICAgICAgICJXSU5FIFBvbW9jIgojZGVmaW5lIFNUUklOR19FUlJPUiAgICAgICAgICAgICAgICAgIkNIWUJBIgojZGVmaW5lIFNUUklOR19XQVJOSU5HICAgICAgICAgICAgICAgIlZBUk9WQU5JRSIKI2RlZmluZSBTVFJJTkdfSU5GTyAgICAgICAgICAgICAgICAgICJJbmZvcm3hY2llIgojZGVmaW5lIFNUUklOR19OT1RfSU1QTEVNRU5URUQgICAgICAgIk5laW1wbGVtZW50b3ZhbukiCiNkZWZpbmUgU1RSSU5HX0hMUEZJTEVfRVJST1JfcyAgICAgICAiQ2h5YmEgcG/oYXMg6O10YW5pYSBz+mJvcnUgYCVzJyIKI2RlZmluZSBTVFJJTkdfQ09OVEVOVFMgICAgICAgICAgICAgICImT2JzYWgiCiNkZWZpbmUgU1RSSU5HX1NFQVJDSCAgICAgICAgICAgICAgICAiJki+YWRhnSIKI2RlZmluZSBTVFJJTkdfQkFDSyAgICAgICAgICAgICAgICAgICImU3DknSIKI2RlZmluZSBTVFJJTkdfSElTVE9SWSAgICAgICAgICAgICAgICImSGlzdPNyaWEiCiNkZWZpbmUgU1RSSU5HX0FMTF9GSUxFUyAgICAgICAgICAgICAiVppldGt5IHP6Ym9yeSAoKi4qKSIKI2RlZmluZSBTVFJJTkdfSEVMUF9GSUxFU19ITFAgICAgICAgICJT+mJvcnkgcG9tb2NpICgqLmhscCkiCgojaW5jbHVkZSAiWHgucmMiCg==