LyogY29uZmlnLmgtdm1zLiBHZW5lcmF0ZWQgYnkgaGFuZCBieSBLbGF1cyBL5G1wZiA8a2thZW1wZkBybWkuZGU+ICAgICAgLSotQy0qLQoKQ29weXJpZ2h0IChDKSAxOTk2LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuClRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBNYWtlLgoKR05VIE1ha2UgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlcgp2ZXJzaW9uLgoKR05VIE1ha2UgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCldBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAp0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwoKLyogY29uZmlnLmguICBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUuICAqLwovKiBjb25maWcuaC5pbi4gIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLwoKLyogRGVmaW5lIHRvIDEgaWYgb24gQUlYIDMuCiAgIFN5c3RlbSBoZWFkZXJzIHNvbWV0aW1lcyBkZWZpbmUgdGhpcy4KICAgV2UganVzdCB3YW50IHRvIGF2b2lkIGEgcmVkZWZpbml0aW9uIGVycm9yIG1lc3NhZ2UuICAqLwojaWZuZGVmIF9BTExfU09VUkNFCi8qICN1bmRlZiBfQUxMX1NPVVJDRSAqLwojZW5kaWYKCi8qIERlZmluZSB0byAxIGlmIE5MUyBpcyByZXF1ZXN0ZWQuICAqLwovKiAjdW5kZWYgRU5BQkxFX05MUyAqLwoKLyogRGVmaW5lIGFzIDEgaWYgeW91IGhhdmUgZGNnZXR0ZXh0LiAgKi8KLyogI3VuZGVmIEhBVkVfRENHRVRURVhUICovCgovKiBEZWZpbmUgYXMgMSBpZiB5b3UgaGF2ZSBnZXR0ZXh0IGFuZCBkb24ndCB3YW50IHRvIHVzZSBHTlUgZ2V0dGV4dC4gICovCi8qICN1bmRlZiBIQVZFX0dFVFRFWFQgKi8KCi8qIEVtYmVkIEdOVSBHdWlsZSBzdXBwb3J0ICovCi8qICN1bmRlZiBIQVZFX0dVSUxFICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIGxvY2FsZS5oIGZpbGUgY29udGFpbnMgTENfTUVTU0FHRVMuICAqLwovKiAjdW5kZWYgSEFWRV9MQ19NRVNTQUdFUyAqLwoKLyogRGVmaW5lIHRvIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGZvciBsb2NhbGVzLiAgKi8KI2RlZmluZSBMT0NBTEVESVIgIiIKCi8qIERlZmluZSBhcyAxIGlmIHlvdSBoYXZlIHRoZSBzdHBjcHkgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TVFBDUFkgKi8KCi8qIERlZmluZSB0byAxIGlmIHRoZSBjbG9zZWRpciBmdW5jdGlvbiByZXR1cm5zIHZvaWQgaW5zdGVhZCBvZiBpbnQuICAqLwovKiAjdW5kZWYgQ0xPU0VESVJfVk9JRCAqLwoKLyogRGVmaW5lIHRvIGVtcHR5IGlmIHRoZSBrZXl3b3JkIGRvZXMgbm90IHdvcmsuICAqLwovKiAjdW5kZWYgY29uc3QgKi8KCi8qIERlZmluZSB0byBvbmUgb2YgX2dldGI2NywgR0VUQjY3LCBnZXRiNjcgZm9yIENyYXktMiBhbmQgQ3JheS1ZTVAgc3lzdGVtcy4KICAgVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBmb3IgYWxsb2NhLmMgc3VwcG9ydCBvbiB0aG9zZSBzeXN0ZW1zLiAgKi8KLyogI3VuZGVmIENSQVlfU1RBQ0tTRUdfRU5EICovCgovKiBEZWZpbmUgZm9yIERHVVggd2l0aCA8c3lzL2RnX3N5c19pbmZvLmg+LiAgKi8KLyogI3VuZGVmIERHVVggKi8KCi8qIERlZmluZSB0byAxIGlmIHRoZSAnZ2V0bG9hZGF2ZycgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcnVuIHNldHVpZCBvciBzZXRnaWQuICAqLwovKiAjdW5kZWYgR0VUTE9BREFWR19QUklWSUxFR0VEICovCgovKiBEZWZpbmUgdG8gJ3Vuc2lnbmVkIGxvbmcnIG9yICd1bnNpZ25lZCBsb25nIGxvbmcnCiAgIGlmIDxpbnR0eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gICovCiNkZWZpbmUgdWludG1heF90IHVuc2lnbmVkIGxvbmcKCi8qIERlZmluZSB0byAnaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAgKi8KLyogI3VuZGVmIGdpZF90ICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhbGxvY2EsIGFzIGEgZnVuY3Rpb24gb3IgbWFjcm8uICAqLwojZGVmaW5lIEhBVkVfQUxMT0NBIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIDxhbGxvY2EuaD4gYW5kIGl0IHNob3VsZCBiZSB1c2VkIChub3Qgb24gVWx0cml4KS4gICovCi8qICN1bmRlZiBIQVZFX0FMTE9DQV9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZmRvcGVuIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX0ZET1BFTiAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBoYXMgYSB3b3JraW5nIGZubWF0Y2ggZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9GTk1BVENIICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBoYXMgaXRzIG93biAnZ2V0bG9hZGF2ZycgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9HRVRMT0FEQVZHICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2V0bW50ZW50IGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUTU5URU5UICovCgovKiBEZWZpbmUgdG8gMSBpZiB0aGUgJ2xvbmcgZG91YmxlJyB0eXBlIHdvcmtzLiAgKi8KLyogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBzdXBwb3J0IGZpbGUgbmFtZXMgbG9uZ2VyIHRoYW4gMTQgY2hhcmFjdGVycy4gICovCiNkZWZpbmUgSEFWRV9MT05HX0ZJTEVfTkFNRVMgMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSB3b3JraW5nICdtbWFwJyBzeXN0ZW0gY2FsbC4gICovCi8qICN1bmRlZiBIQVZFX01NQVAgKi8KCi8qIERlZmluZSB0byAxIGlmIHN5c3RlbSBjYWxscyBhdXRvbWF0aWNhbGx5IHJlc3RhcnQgYWZ0ZXIgaW50ZXJydXB0aW9uCiAgIGJ5IGEgc2lnbmFsLiAgKi8KLyogI3VuZGVmIEhBVkVfUkVTVEFSVEFCTEVfU1lTQ0FMTFMgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdXIgc3RydWN0IHN0YXQgaGFzIHN0X2Jsa3NpemUuICAqLwovKiAjdW5kZWYgSEFWRV9TVF9CTEtTSVpFICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHN0cnVjdCBzdGF0IGhhcyBzdF9ibG9ja3MuICAqLwovKiAjdW5kZWYgSEFWRV9TVF9CTE9DS1MgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJjb2xsIGZ1bmN0aW9uIGFuZCBpdCBpcyBwcm9wZXJseSBkZWZpbmVkLiAgKi8KLyogI3VuZGVmIEhBVkVfU1RSQ09MTCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cm5jYXNlY21wJyBmdW5jdGlvbi4gKi8KI2lmIF9fQ1JUTF9WRVIgPj0gNzAwMDAwMDAKI2RlZmluZSBIQVZFX1NUUk5DQVNFQ01QIDEKI2VuZGlmCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHN0cnVjdCBzdGF0IGhhcyBzdF9yZGV2LiAgKi8KLyogI3VuZGVmIEhBVkVfU1RfUkRFViAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cmZ0aW1lIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfU1RSRlRJTUUgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIDxzeXMvd2FpdC5oPiB0aGF0IGlzIFBPU0lYLjEgY29tcGF0aWJsZS4gICovCi8qICN1bmRlZiBIQVZFX1NZU19XQUlUX0ggKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdXIgc3RydWN0IHRtIGhhcyB0bV96b25lLiAgKi8KLyogI3VuZGVmIEhBVkVfVE1fWk9ORSAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGRvbid0IGhhdmUgdG1fem9uZSBidXQgZG8gaGF2ZSB0aGUgZXh0ZXJuYWwgYXJyYXkKICAgdHpuYW1lLiAgKi8KLyogI3VuZGVmIEhBVkVfVFpOQU1FICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA8dW5pc3RkLmg+LiAgKi8KI2lmZGVmIF9fREVDQwojZGVmaW5lIEhBVkVfVU5JU1REX0ggMQojZW5kaWYKCi8qIERlZmluZSB0byAxIGlmIHV0aW1lKGZpbGUsIE5VTEwpIHNldHMgZmlsZSdzIHRpbWVzdGFtcCB0byB0aGUgcHJlc2VudC4gICovCi8qICN1bmRlZiBIQVZFX1VUSU1FX05VTEwgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSB3YWl0MyBzeXN0ZW0gY2FsbC4gICovCi8qICN1bmRlZiBIQVZFX1dBSVQzICovCgovKiBEZWZpbmUgdG8gMSBpZiBvbiBNSU5JWC4gICovCi8qICN1bmRlZiBfTUlOSVggKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdXIgc3RydWN0IG5saXN0IGhhcyBhbiBuX3VuIG1lbWJlci4gICovCi8qICN1bmRlZiBOTElTVF9OQU1FX1VOSU9OICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA8bmxpc3QuaD4uICAqLwovKiAjdW5kZWYgTkxJU1RfU1RSVUNUICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIEMgY29tcGlsZXIgZG9lc24ndCBhY2NlcHQgLWMgYW5kIC1vIHRvZ2V0aGVyLiAgKi8KLyogI3VuZGVmIE5PX01JTlVTX0NfTUlOVVNfTyAqLwoKLyogRGVmaW5lIHRvICdpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwovKiBJIGFzc3VtZSB0eXBlcy5oIGlzIGF2YWlsYWJsZSBmb3IgYWxsIDUuMCBjYy9jeHggY29tcGlsZXJzICovCiNpZiBfX0RFQ0NfVkVSIDwgNTAwOTAwMDAKI2RlZmluZSBwaWRfdCBpbnQKI2VuZGlmCgovKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHByb3ZpZGUgUE9TSVguMSBmZWF0dXJlcyBleGNlcHQKICAgd2l0aCB0aGlzIGRlZmluZWQuICAqLwovKiAjdW5kZWYgX1BPU0lYXzFfU09VUkNFICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgbmVlZCB0byBpbiBvcmRlciBmb3Igc3RhdCBhbmQgb3RoZXIgdGhpbmdzIHRvIHdvcmsuICAqLwovKiAjdW5kZWYgX1BPU0lYX1NPVVJDRSAqLwoKLyogRGVmaW5lIGFzIHRoZSByZXR1cm4gdHlwZSBvZiBzaWduYWwgaGFuZGxlcnMgKGludCBvciB2b2lkKS4gICovCiNkZWZpbmUgUkVUU0lHVFlQRSB2b2lkCgovKiBEZWZpbmUgdG8gMSBpZiB0aGUgc2V0dmJ1ZiBmdW5jdGlvbiB0YWtlcyB0aGUgYnVmZmVyaW5nIHR5cGUgYXMgaXRzIHNlY29uZAogICBhcmd1bWVudCBhbmQgdGhlIGJ1ZmZlciBwb2ludGVyIGFzIHRoZSB0aGlyZCwgYXMgb24gU3lzdGVtIFYKICAgYmVmb3JlIHJlbGVhc2UgMy4gICovCi8qICN1bmRlZiBTRVRWQlVGX1JFVkVSU0VEICovCgovKiBJZiB1c2luZyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBhbGxvY2EsIGRlZmluZSBpZiB5b3Uga25vdyB0aGUKICAgZGlyZWN0aW9uIG9mIHN0YWNrIGdyb3d0aCBmb3IgeW91ciBzeXN0ZW07IG90aGVyd2lzZSBpdCB3aWxsIGJlCiAgIGF1dG9tYXRpY2FsbHkgZGVkdWNlZCBhdCBydW4tdGltZS4KICAgICAgICBTVEFDS19ESVJFQ1RJT04gPiAwID0+IGdyb3dzIHRvd2FyZCBoaWdoZXIgYWRkcmVzc2VzCiAgICAgICAgU1RBQ0tfRElSRUNUSU9OIDwgMCA9PiBncm93cyB0b3dhcmQgbG93ZXIgYWRkcmVzc2VzCiAgICAgICAgU1RBQ0tfRElSRUNUSU9OID0gMCA9PiBkaXJlY3Rpb24gb2YgZ3Jvd3RoIHVua25vd24KICovCi8qICN1bmRlZiBTVEFDS19ESVJFQ1RJT04gKi8KCi8qIERlZmluZSB0byAxIGlmIHRoZSAnU19JUyonIG1hY3JvcyBpbiA8c3lzL3N0YXQuaD4gZG8gbm90IHdvcmsgcHJvcGVybHkuICAqLwovKiAjdW5kZWYgU1RBVF9NQUNST1NfQlJPS0VOICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gICovCi8qICN1bmRlZiBTVERDX0hFQURFUlMgKi8KCi8qIERlZmluZSBvbiBTeXN0ZW0gViBSZWxlYXNlIDQuICAqLwovKiAjdW5kZWYgU1ZSNCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgJ3N5c19zaWdsaXN0JyBpcyBkZWNsYXJlZCBieSA8c2lnbmFsLmg+LiAgKi8KLyogI3VuZGVmIFNZU19TSUdMSVNUX0RFQ0xBUkVEICovCgovKiBEZWZpbmUgdG8gJ2ludCcgaWYgPHN5cy90eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gICovCiNpZiBfX0RFQ0NfVkVSIDwgNTAwOTAwMDAKI2RlZmluZSB1aWRfdCBpbnQKI2VuZGlmCgovKiBEZWZpbmUgZm9yIEVuY29yZSBVTUFYLiAgKi8KLyogI3VuZGVmIFVNQVggKi8KCi8qIERlZmluZSBmb3IgRW5jb3JlIFVNQVggNC4zIHRoYXQgaGFzIDxpbnFfc3RhdHVzL2NwdXN0YXRzLmg+CiAgIGluc3RlYWQgb2YgPHN5cy9jcHVzdGF0cy5oPi4gICovCi8qICN1bmRlZiBVTUFYNF8zICovCgovKiBOYW1lIG9mIHRoaXMgcGFja2FnZSAobmVlZGVkIGJ5IGF1dG9tYWtlKSAqLwojZGVmaW5lIFBBQ0tBR0UgIiVQQUNLQUdFJSIKCi8qIFZlcnNpb24gb2YgdGhpcyBwYWNrYWdlIChuZWVkZWQgYnkgYXV0b21ha2UpICovCiNkZWZpbmUgVkVSU0lPTiAiJVZFUlNJT04lIgoKLyogRGVmaW5lIHRvIHRoZSBuYW1lIG9mIHRoZSBTQ0NTICdnZXQnIGNvbW1hbmQuICAqLwovKiAjdW5kZWYgU0NDU19HRVQgKi8KCi8qIERlZmluZSB0aGlzIGlmIHRoZSBTQ0NTICdnZXQnIGNvbW1hbmQgdW5kZXJzdGFuZHMgdGhlICctRzxmaWxlPicgb3B0aW9uLiAgKi8KLyogI3VuZGVmIFNDQ1NfR0VUX01JTlVTX0cgKi8KCi8qIERlZmluZSB0aGlzIHRvIGVuYWJsZSBqb2Igc2VydmVyIHN1cHBvcnQgaW4gR05VIG1ha2UuICAqLwovKiAjdW5kZWYgTUFLRV9KT0JTRVJWRVIgKi8KCi8qIERlZmluZSB0byBiZSB0aGUgbmFub3NlY29uZHMgbWVtYmVyIG9mIHN0cnVjdCBzdGF0J3Mgc3RfbXRpbSwKICAgaWYgaXQgZXhpc3RzLiAgKi8KLyogI3VuZGVmIFNUX01USU1fTlNFQyAqLwoKLyogRGVmaW5lIHRvIDEgaWYgdGhlIEMgbGlicmFyeSBkZWZpbmVzIHRoZSB2YXJpYWJsZSAnc3lzX3NpZ2xpc3QnLiAgKi8KLyogI3VuZGVmaW5lIEhBVkVfU1lTX1NJR0xJU1QgKi8KCi8qIERlZmluZSB0byAxIGlmIHRoZSBDIGxpYnJhcnkgZGVmaW5lcyB0aGUgdmFyaWFibGUgJ19zeXNfc2lnbGlzdCcuICAqLwovKiAjdW5kZWYgSEFWRV9fU1lTX1NJR0xJU1QgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAndW5pb24gd2FpdCcgdHlwZSBpbiA8c3lzL3dhaXQuaD4uICAqLwovKiAjdW5kZWYgSEFWRV9VTklPTl9XQUlUICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZHVwMiBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9EVVAyIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnZXRjd2QgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfR0VUQ1dEIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnZXRncm91cHMgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9HRVRHUk9VUFMgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnZXRob3N0YnluYW1lIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRSAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGdldGhvc3RuYW1lIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUSE9TVE5BTUUgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBtZW1tb3ZlIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX01FTU1PVkUgMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIG1rdGVtcCBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9NS1RFTVAgMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHBzaWduYWwgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9QU0lHTkFMICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgcHN0YXRfZ2V0ZHluYW1pYyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1BTVEFUX0dFVERZTkFNSUMgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzZXRlZ2lkIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfU0VURUdJRCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNldGV1aWQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TRVRFVUlEICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc2V0bGluZWJ1ZiBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NFVExJTkVCVUYgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzZXRyZWdpZCBmdW5jdGlvbi4gICovCi8qICN1bmRlZmluZSBIQVZFX1NFVFJFR0lEICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc2V0cmV1aWQgZnVuY3Rpb24uICAqLwovKiAjZGVmaW5lIEhBVkVfU0VUUkVVSUQgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzaWdzZXRtYXNrIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX1NJR1NFVE1BU0sgMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNvY2tldCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NPQ0tFVCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cmNhc2VjbXAgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfU1RSQ0FTRUNNUCAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RyY21waSBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NUUkNNUEkgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJpY21wIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfU1RSSUNNUCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cmVycm9yIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX1NUUkVSUk9SIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJzaWduYWwgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TVFJTSUdOQUwgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSB3YWl0MyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1dBSVQzICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgd2FpdHBpZCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1dBSVRQSUQgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZW50Lmg+IGhlYWRlciBmaWxlLiAgKi8KI2RlZmluZSBIQVZFX0RJUkVOVF9IIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZmNudGwuaD4gaGVhZGVyIGZpbGUuICAqLwojaWZkZWYgX19ERUNDCiNkZWZpbmUgSEFWRV9GQ05UTF9IIDEKI2VuZGlmCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbWl0cy5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgSEFWRV9MSU1JVFNfSCAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1hY2gvbWFjaC5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX01BQ0hfTUFDSF9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX01FTU9SWV9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5kaXIuaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9ORElSX0ggKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAgKi8KI2RlZmluZSBIQVZFX1NURExJQl9IIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxlLiAgKi8KI2RlZmluZSBIQVZFX1NUUklOR19IIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2Rpci5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX1NZU19ESVJfSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvbmRpci5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX1NZU19ORElSX0ggKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3BhcmFtLmg+IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIEhBVkVfU1lTX1BBUkFNX0ggKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWViLmg+IGhlYWRlciBmaWxlLiAgKi8KI2lmbmRlZiBfX0dOVUNfXwojZGVmaW5lIEhBVkVfU1lTX1RJTUVCX0ggMQojZW5kaWYKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3dhaXQuaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9TWVNfV0FJVF9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGdjIGxpYnJhcnkgKC1sZGdjKS4gICovCi8qICN1bmRlZiBIQVZFX0xJQkRHQyAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGtzdGF0IGxpYnJhcnkgKC1sa3N0YXQpLiAgKi8KLyogI3VuZGVmIEhBVkVfTElCS1NUQVQgKgoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN1biBsaWJyYXJ5ICgtbHN1bikuICAqLwovKiAjdW5kZWYgSEFWRV9MSUJTVU4gKi8KCi8qIFVzZSBoaWdoIHJlc29sdXRpb24gZmlsZSB0aW1lc3RhbXBzIGlmIG5vbnplcm8uICovCiNkZWZpbmUgRklMRV9USU1FU1RBTVBfSElfUkVTIDAKCi8qIERlZmluZSBmb3IgY2FzZSBpbnNlbnNpdHZlIGZpbGVuYW1lcyAqLwojZGVmaW5lIEhBVkVfQ0FTRV9JTlNFTlNJVElWRV9GUyAxCgovKiBWTVMgc3BlY2lmaWMsIGRlZmluZSBpdCBpZiB5b3Ugd2FudCB0byB1c2UgY2FzZSBzZW5zaXRpdmUgdGFyZ2V0cyAqLwovKiAjdW5kZWYgV0FOVF9DQVNFX1NFTlNJVElWRV9UQVJHRVRTICovCgovKiBWTVMgc3BlY2lmaWMsIFY3LjAgaGFzIG9wZW5kaXIoKSBhbmQgZnJpZW5kcywgc28gaXQncyB1bmRlZmluZWQgKi8KLyogSWYgeW91IHdhbnQgdG8gdXNlIG5vbi1WTVMgY29kZSBmb3Igb3BlbmRpcigpIGV0Yy4gb24gVjcuMCBhbmQgZ3JlYXRlcgogICBkZWZpbmUgdGhlIGZpcnN0IG9yIGJvdGggbWFjcm9zIEFORCBjaGFuZ2UgdGhlIGNvbXBpbGUgY29tbWFuZCB0byBnZXQgdGhlCiAgIG5vbi1WTVMgdmVyc2lvbnMgbGlua2VkOiAocHJlZml4PShhbGwsZXhjZXB0PShvcGVuZGlyLC4uLiAgKi8KLyogI3VuZGVmIEhBVkVfVk1TRElSX0ggKi8KLyogI3VuZGVmIF9ESVJFTlRfSEFWRV9EX05BTUxFTiAqLwoKLyogT24gb2xkZXIgc3lzdGVtcyB3aXRob3V0IDcuMCBiYWNrcG9ydCBvZiBDUlRMIHRoZSBmaXJzdCBvbmUgaXMgZGVmaW5lZCAqLwojaWZkZWYgX19DUlRMX1ZFUgojIGlmIF9fQ1JUTF9WRVIgPCA3MDAwMDAwMAojICBkZWZpbmUgSEFWRV9WTVNESVJfSCAxCiMgZW5kaWYKI2Vsc2UKIyBpZiBfX1ZNU19WRVIgPCA3MDAwMDAwMAojICBkZWZpbmUgSEFWRV9WTVNESVJfSCAxCiMgZW5kaWYKI2VuZGlmCgojaWYgZGVmaW5lZChIQVZFX1ZNU0RJUl9IKSAmJiBkZWZpbmVkKEhBVkVfRElSRU5UX0gpCiN1bmRlZiBIQVZFX0RJUkVOVF9ICiNlbmRpZgoKI2RlZmluZSBIQVZFX1NURExJQl9IIDEKI2RlZmluZSBJTkNMVURFRElSICJzeXMkc3lzcm9vdDpbc3lzbGliXSIKI2RlZmluZSBMSUJESVIgInN5cyRzeXNyb290OltzeXNsaWJdIgoKLyogRG9uJ3QgdXNlIFJUTCBmdW5jdGlvbnMgb2YgT3BlblZNUyAqLwojaWZkZWYgX19ERUNDCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNkZWZpbmUgZ2V0b3B0ICAgZ251X2dldG9wdAojZGVmaW5lIG9wdGFyZyAgIGdudV9vcHRhcmcKI2RlZmluZSBvcHRvcHQgICBnbnVfb3B0b3B0CiNkZWZpbmUgb3B0aW5kICAgZ251X29wdGluZAojZGVmaW5lIG9wdGVyciAgIGdudV9vcHRlcnIKI2RlZmluZSBnbG9iZnJlZSBnbnVfZ2xvYmZyZWUKI2RlZmluZSBnbG9iICAgICBnbnVfZ2xvYgojZW5kaWYKCi8qIERlZmluZSBpZiB1c2luZyBhbGxvY2EuYy4gICovCi8qICN1bmRlZiBDX0FMTE9DQSAqLwovKiBtYXliZSB0aGlzIHNob3VsZCBiZSBwbGFjZWQgaW50byBtYWtlaW50LmggKi8KI2lmICAgICBkZWZpbmVkKF9fVkFYKSAmJiBkZWZpbmVkKF9fREVDQykKI2RlZmluZSBhbGxvY2EobikgICAgICAgX19BTExPQ0EobikKI2VuZGlmCgovKiBPdXRwdXQgc3luYyBzeXBwb3J0ICovCiNkZWZpbmUgTk9fT1VUUFVUX1NZTkMKCi8qIEJ1aWxkIGhvc3QgaW5mb3JtYXRpb24uICovCiNkZWZpbmUgTUFLRV9IT1NUICJWTVMiCg==