LyoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KLyogRE8gTk9UIEVESVQhISAtIHRoaXMgZmlsZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZAogKiAgICAgICAgICAgICAgICAgZnJvbSAucyBmaWxlIGJ5IGF3ayAtZiBzMmguYXdrCiAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogKiBDb3B5cmlnaHQgqSBBUk0gTGltaXRlZCAxOTk4LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiAgIEludGVncmF0b3IgYWRkcmVzcyBtYXAKICoKICogCU5PVEU6IFRoaXMgaXMgYSBtdWx0aS1ob3N0ZWQgaGVhZGVyIGZpbGUgZm9yIHVzZSB3aXRoIHVIQUwgYW5kCiAqIAkgICAgICBzdXBwb3J0ZWQgZGVidWdnZXJzLgogKgogKiAJJElkOiBwbGF0Zm9ybS5zLHYgMS4zMiAyMDAwLzAyLzE4IDEwOjUxOjM5IGFzaW1zIEV4cCAkCiAqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmbmRlZiBfX2FkZHJlc3NfaAojZGVmaW5lIF9fYWRkcmVzc19oICAgICAgICAgICAgICAgICAgICAgMQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqICBJbnRlZ3JhdG9yIGRlZmluaXRpb25zCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogIE1lbW9yeSBkZWZpbml0aW9ucwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogIEludGVncmF0b3IgbWVtb3J5IG1hcAogKgogKi8KI2RlZmluZSBJTlRFR1JBVE9SX0JPT1RfUk9NX0xPICAgICAgICAgIDB4MDAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0JPT1RfUk9NX0hJICAgICAgICAgIDB4MjAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0JPT1RfUk9NX0JBU0UgICAgICAgIElOVEVHUkFUT1JfQk9PVF9ST01fSEkJIC8qICBOb3JtYWwgcG9zaXRpb24gKi8KI2RlZmluZSBJTlRFR1JBVE9SX0JPT1RfUk9NX1NJWkUgICAgICAgIFNaXzUxMksKCi8qCiAqICBOZXcgQ29yZSBNb2R1bGVzIGhhdmUgZGlmZmVyZW50IGFtb3VudHMgb2YgU1NSQU0sIHRoZSBhbW91bnQgb2YgU1NSQU0KICogIGZpdHRlZCBjYW4gYmUgZm91bmQgaW4gSERSX1NUQVQuCiAqCiAqICBUaGUgc3ltYm9sIElOVEVHUkFUT1JfU1NSQU1fU0laRSBpcyBrZXB0LCBob3dldmVyIHRoaXMgbm93IHJlZmVycyB0bwogKiAgdGhlIG1pbmltdW0gYW1vdW50IG9mIFNTUkFNIGZpdHRlZCBvbiBhbnkgY29yZSBtb2R1bGUuCiAqCiAqICBOZXcgQ29yZSBNb2R1bGVzIGFsc28gYWxpYXMgdGhlIFNTUkFNLgogKgogKi8KI2RlZmluZSBJTlRFR1JBVE9SX1NTUkFNX0JBU0UgICAgICAgICAgIDB4MDAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX1NTUkFNX0FMSUFTX0JBU0UgICAgIDB4MTA4MDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX1NTUkFNX1NJWkUgICAgICAgICAgIFNaXzI1NksKCiNkZWZpbmUgSU5URUdSQVRPUl9GTEFTSF9CQVNFICAgICAgICAgICAweDI0MDAwMDAwCiNkZWZpbmUgSU5URUdSQVRPUl9GTEFTSF9TSVpFICAgICAgICAgICBTWl8zMk0KCiNkZWZpbmUgSU5URUdSQVRPUl9NQlJEX1NTUkFNX0JBU0UgICAgICAweDI4MDAwMDAwCiNkZWZpbmUgSU5URUdSQVRPUl9NQlJEX1NTUkFNX1NJWkUgICAgICBTWl81MTJLCgovKgogKiAgU0RSQU0gaXMgYSBTSU1NIHRoZXJlZm9yZSB0aGUgc2l6ZSBpcyBub3Qga25vd24uCiAqCiAqLwojZGVmaW5lIElOVEVHUkFUT1JfU0RSQU1fQkFTRSAgICAgICAgICAgMHgwMDA0MDAwMAoKI2RlZmluZSBJTlRFR1JBVE9SX1NEUkFNX0FMSUFTX0JBU0UgICAgIDB4ODAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0hEUjBfU0RSQU1fQkFTRSAgICAgIDB4ODAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0hEUjFfU0RSQU1fQkFTRSAgICAgIDB4OTAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0hEUjJfU0RSQU1fQkFTRSAgICAgIDB4QTAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0hEUjNfU0RSQU1fQkFTRSAgICAgIDB4QjAwMDAwMDAKCi8qCiAqICBMb2dpYyBleHBhbnNpb24gbW9kdWxlcwogKgogKi8KI2RlZmluZSBJTlRFR1JBVE9SX0xPR0lDX01PRFVMRVNfQkFTRSAgIDB4QzAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0xPR0lDX01PRFVMRTBfQkFTRSAgIDB4QzAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0xPR0lDX01PRFVMRTFfQkFTRSAgIDB4RDAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0xPR0lDX01PRFVMRTJfQkFTRSAgIDB4RTAwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0xPR0lDX01PRFVMRTNfQkFTRSAgIDB4RjAwMDAwMDAKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiAgSW50ZWdyYXRvciBoZWFkZXIgY2FyZCByZWdpc3RlcnMKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqCiAqLwojZGVmaW5lIElOVEVHUkFUT1JfSERSX0lEX09GRlNFVCAgICAgICAgMHgwMAojZGVmaW5lIElOVEVHUkFUT1JfSERSX1BST0NfT0ZGU0VUICAgICAgMHgwNAojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19PRkZTRVQgICAgICAgMHgwOAojZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfT0ZGU0VUICAgICAgMHgwQwojZGVmaW5lIElOVEVHUkFUT1JfSERSX1NUQVRfT0ZGU0VUICAgICAgMHgxMAojZGVmaW5lIElOVEVHUkFUT1JfSERSX0xPQ0tfT0ZGU0VUICAgICAgMHgxNAojZGVmaW5lIElOVEVHUkFUT1JfSERSX1NEUkFNX09GRlNFVCAgICAgMHgyMAojZGVmaW5lIElOVEVHUkFUT1JfSERSX0lOSVRfT0ZGU0VUICAgICAgMHgyNAkgLyogIENNOXg2ICovCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfSUNfT0ZGU0VUICAgICAgICAweDQwCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfU1BEQkFTRV9PRkZTRVQgICAweDEwMAojZGVmaW5lIElOVEVHUkFUT1JfSERSX1NQRFRPUF9PRkZTRVQgICAgMHgyMDAKCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfQkFTRSAgICAgICAgICAgICAweDEwMDAwMDAwCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfSUQgICAgICAgICAgICAgICAoSU5URUdSQVRPUl9IRFJfQkFTRSArIElOVEVHUkFUT1JfSERSX0lEX09GRlNFVCkKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9QUk9DICAgICAgICAgICAgIChJTlRFR1JBVE9SX0hEUl9CQVNFICsgSU5URUdSQVRPUl9IRFJfUFJPQ19PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDICAgICAgICAgICAgICAoSU5URUdSQVRPUl9IRFJfQkFTRSArIElOVEVHUkFUT1JfSERSX09TQ19PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfQ1RSTCAgICAgICAgICAgICAoSU5URUdSQVRPUl9IRFJfQkFTRSArIElOVEVHUkFUT1JfSERSX0NUUkxfT0ZGU0VUKQojZGVmaW5lIElOVEVHUkFUT1JfSERSX1NUQVQgICAgICAgICAgICAgKElOVEVHUkFUT1JfSERSX0JBU0UgKyBJTlRFR1JBVE9SX0hEUl9TVEFUX09GRlNFVCkKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9MT0NLICAgICAgICAgICAgIChJTlRFR1JBVE9SX0hEUl9CQVNFICsgSU5URUdSQVRPUl9IRFJfTE9DS19PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfU0RSQU0gICAgICAgICAgICAoSU5URUdSQVRPUl9IRFJfQkFTRSArIElOVEVHUkFUT1JfSERSX1NEUkFNX09GRlNFVCkKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9JTklUICAgICAgICAgICAgIChJTlRFR1JBVE9SX0hEUl9CQVNFICsgSU5URUdSQVRPUl9IRFJfSU5JVF9PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfSUMgICAgICAgICAgICAgICAoSU5URUdSQVRPUl9IRFJfQkFTRSArIElOVEVHUkFUT1JfSERSX0lDX09GRlNFVCkKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9TUERCQVNFICAgICAgICAgIChJTlRFR1JBVE9SX0hEUl9CQVNFICsgSU5URUdSQVRPUl9IRFJfU1BEQkFTRV9PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfU1BEVE9QICAgICAgICAgICAoSU5URUdSQVRPUl9IRFJfQkFTRSArIElOVEVHUkFUT1JfSERSX1NQRFRPUF9PRkZTRVQpCgojZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfTEVEICAgICAgICAgMHgwMQojZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfTUJSRF9ERVRFQ0ggMHgwMgojZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfUkVNQVAgICAgICAgMHgwNAojZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfUkVTRVQgICAgICAgMHgwOAojZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfSElHSFZFQ1RPUlMgMHgxMAojZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfQklHX0VORElBTiAgMHgyMAojZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfRkFTVEJVUyAgICAgMHg0MAojZGVmaW5lIElOVEVHUkFUT1JfSERSX0NUUkxfU1lOQyAgICAgICAgMHg4MAoKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xME1IeiAgIDB4MTAyCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTVNSHogICAweDEwNwojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzIwTUh6ICAgMHgxMEMKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8yNU1IeiAgIDB4MTExCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMzBNSHogICAweDExNgojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzM1TUh6ICAgMHgxMUIKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV80ME1IeiAgIDB4MTIwCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfNDVNSHogICAweDEyNQojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzUwTUh6ICAgMHgxMkEKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV81NU1IeiAgIDB4MTJGCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfNjBNSHogICAweDEzNAojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzY1TUh6ICAgMHgxMzkKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV83ME1IeiAgIDB4MTNFCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfNzVNSHogICAweDE0MwojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzgwTUh6ICAgMHgxNDgKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV84NU1IeiAgIDB4MTRECiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfOTBNSHogICAweDE1MgojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzk1TUh6ICAgMHgxNTcKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xMDBNSHogIDB4MTVDCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTA1TUh6ICAweDE2MQojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzExME1IeiAgMHgxNjYKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xMTVNSHogIDB4MTZCCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTIwTUh6ICAweDE3MAojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzEyNU1IeiAgMHgxNzUKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xMzBNSHogIDB4MTdBCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTM1TUh6ICAweDE3RgojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzE0ME1IeiAgMHgxODQKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xNDVNSHogIDB4MTg5CiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfMTUwTUh6ICAweDE4RQojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19DT1JFXzE1NU1IeiAgMHgxOTMKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQ09SRV8xNjBNSHogIDB4MTk4CiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0NPUkVfTUFTSyAgICAweDdGRgoKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfTUVNXzEwTUh6ICAgIDB4MTBDMDAwCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX01FTV8xNU1IeiAgICAweDExNjAwMAojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19NRU1fMjBNSHogICAgMHgxMjAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfTUVNXzI1TUh6ICAgIDB4MTJBMDAwCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX01FTV8zME1IeiAgICAweDEzNDAwMAojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19NRU1fMzNNSHogICAgMHgxM0EwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfTUVNXzQwTUh6ICAgIDB4MTQ4MDAwCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX01FTV81ME1IeiAgICAweDE1QzAwMAojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19NRU1fNjBNSHogICAgMHgxNzAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfTUVNXzY2TUh6ICAgIDB4MTdDMDAwCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX01FTV9NQVNLICAgICAweDdGRjAwMAoKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQlVTX01PREVfQ003eDAgIDB4MAojZGVmaW5lIElOVEVHUkFUT1JfSERSX09TQ19CVVNfTU9ERV9DTTl4MCAgMHgwODAwMDAwCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0JVU19NT0RFX0NNOXg2ICAweDEwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9PU0NfQlVTX01PREVfQ00xMHgwMCAgMHgxODAwMDAwCiNkZWZpbmUgSU5URUdSQVRPUl9IRFJfT1NDX0JVU19NT0RFX01BU0sgIDB4MTgwMDAwMAoKI2RlZmluZSBJTlRFR1JBVE9SX0hEUl9TRFJBTV9TUERfT0sgICAgICgxIDw8IDUpCgoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqICBJbnRlZ3JhdG9yIHN5c3RlbSByZWdpc3RlcnMKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqCiAqLwoKLyoKICogIFN5c3RlbSBDb250cm9sbGVyCiAqCiAqLwojZGVmaW5lIElOVEVHUkFUT1JfU0NfSURfT0ZGU0VUICAgICAgICAgMHgwMAojZGVmaW5lIElOVEVHUkFUT1JfU0NfT1NDX09GRlNFVCAgICAgICAgMHgwNAojZGVmaW5lIElOVEVHUkFUT1JfU0NfQ1RSTFNfT0ZGU0VUICAgICAgMHgwOAojZGVmaW5lIElOVEVHUkFUT1JfU0NfQ1RSTENfT0ZGU0VUICAgICAgMHgwQwojZGVmaW5lIElOVEVHUkFUT1JfU0NfREVDX09GRlNFVCAgICAgICAgMHgxMAojZGVmaW5lIElOVEVHUkFUT1JfU0NfQVJCX09GRlNFVCAgICAgICAgMHgxNAojZGVmaW5lIElOVEVHUkFUT1JfU0NfUENJRU5BQkxFX09GRlNFVCAgMHgxOAojZGVmaW5lIElOVEVHUkFUT1JfU0NfTE9DS19PRkZTRVQgICAgICAgMHgxQwoKI2RlZmluZSBJTlRFR1JBVE9SX1NDX0JBU0UgICAgICAgICAgICAgIDB4MTEwMDAwMDAKI2RlZmluZSBJTlRFR1JBVE9SX1NDX0lEICAgICAgICAgICAgICAgIChJTlRFR1JBVE9SX1NDX0JBU0UgKyBJTlRFR1JBVE9SX1NDX0lEX09GRlNFVCkKI2RlZmluZSBJTlRFR1JBVE9SX1NDX09TQyAgICAgICAgICAgICAgIChJTlRFR1JBVE9SX1NDX0JBU0UgKyBJTlRFR1JBVE9SX1NDX09TQ19PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19DVFJMUyAgICAgICAgICAgICAoSU5URUdSQVRPUl9TQ19CQVNFICsgSU5URUdSQVRPUl9TQ19DVFJMU19PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19DVFJMQyAgICAgICAgICAgICAoSU5URUdSQVRPUl9TQ19CQVNFICsgSU5URUdSQVRPUl9TQ19DVFJMQ19PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19ERUMgICAgICAgICAgICAgICAoSU5URUdSQVRPUl9TQ19CQVNFICsgSU5URUdSQVRPUl9TQ19ERUNfT0ZGU0VUKQojZGVmaW5lIElOVEVHUkFUT1JfU0NfQVJCICAgICAgICAgICAgICAgKElOVEVHUkFUT1JfU0NfQkFTRSArIElOVEVHUkFUT1JfU0NfQVJCX09GRlNFVCkKI2RlZmluZSBJTlRFR1JBVE9SX1NDX1BDSUVOQUJMRSAgICAgICAgIChJTlRFR1JBVE9SX1NDX0JBU0UgKyBJTlRFR1JBVE9SX1NDX1BDSUVOQUJMRV9PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19MT0NLICAgICAgICAgICAgICAoSU5URUdSQVRPUl9TQ19CQVNFICsgSU5URUdSQVRPUl9TQ19MT0NLX09GRlNFVCkKCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19PU0NfU1lTXzEwTUh6ICAgICAweDIwCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19PU0NfU1lTXzE1TUh6ICAgICAweDM0CiNkZWZpbmUgSU5URUdSQVRPUl9TQ19PU0NfU1lTXzIwTUh6ICAgICAweDQ4CiNkZWZpbmUgSU5URUdSQVRPUl9TQ19PU0NfU1lTXzI1TUh6ICAgICAweDVDCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19PU0NfU1lTXzMzTUh6ICAgICAweDdDCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19PU0NfU1lTX01BU0sgICAgICAweEZGCgojZGVmaW5lIElOVEVHUkFUT1JfU0NfT1NDX1BDSV8yNU1IeiAgICAgMHgxMDAKI2RlZmluZSBJTlRFR1JBVE9SX1NDX09TQ19QQ0lfMzNNSHogICAgIDB4MAojZGVmaW5lIElOVEVHUkFUT1JfU0NfT1NDX1BDSV9NQVNLICAgICAgMHgxMDAKCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19DVFJMX1NPRlRSU1QgICAgICAoMSA8PCAwKQojZGVmaW5lIElOVEVHUkFUT1JfU0NfQ1RSTF9uRkxWUFBFTiAgICAgKDEgPDwgMSkKI2RlZmluZSBJTlRFR1JBVE9SX1NDX0NUUkxfbkZMV1AgICAgICAgICgxIDw8IDIpCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19DVFJMX1VSVFMwICAgICAgICAoMSA8PCA0KQojZGVmaW5lIElOVEVHUkFUT1JfU0NfQ1RSTF9VRFRSMCAgICAgICAgKDEgPDwgNSkKI2RlZmluZSBJTlRFR1JBVE9SX1NDX0NUUkxfVVJUUzEgICAgICAgICgxIDw8IDYpCiNkZWZpbmUgSU5URUdSQVRPUl9TQ19DVFJMX1VEVFIxICAgICAgICAoMSA8PCA3KQoKLyoKICogIEV4dGVybmFsIEJ1cyBJbnRlcmZhY2UKICoKICovCiNkZWZpbmUgSU5URUdSQVRPUl9FQklfQkFTRSAgICAgICAgICAgICAweDEyMDAwMDAwCgojZGVmaW5lIElOVEVHUkFUT1JfRUJJX0NTUjBfT0ZGU0VUICAgICAgMHgwMAojZGVmaW5lIElOVEVHUkFUT1JfRUJJX0NTUjFfT0ZGU0VUICAgICAgMHgwNAojZGVmaW5lIElOVEVHUkFUT1JfRUJJX0NTUjJfT0ZGU0VUICAgICAgMHgwOAojZGVmaW5lIElOVEVHUkFUT1JfRUJJX0NTUjNfT0ZGU0VUICAgICAgMHgwQwojZGVmaW5lIElOVEVHUkFUT1JfRUJJX0xPQ0tfT0ZGU0VUICAgICAgMHgyMAoKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9DU1IwICAgICAgICAgICAgIChJTlRFR1JBVE9SX0VCSV9CQVNFICsgSU5URUdSQVRPUl9FQklfQ1NSMF9PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9FQklfQ1NSMSAgICAgICAgICAgICAoSU5URUdSQVRPUl9FQklfQkFTRSArIElOVEVHUkFUT1JfRUJJX0NTUjFfT0ZGU0VUKQojZGVmaW5lIElOVEVHUkFUT1JfRUJJX0NTUjIgICAgICAgICAgICAgKElOVEVHUkFUT1JfRUJJX0JBU0UgKyBJTlRFR1JBVE9SX0VCSV9DU1IyX09GRlNFVCkKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9DU1IzICAgICAgICAgICAgIChJTlRFR1JBVE9SX0VCSV9CQVNFICsgSU5URUdSQVRPUl9FQklfQ1NSM19PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9FQklfTE9DSyAgICAgICAgICAgICAoSU5URUdSQVRPUl9FQklfQkFTRSArIElOVEVHUkFUT1JfRUJJX0xPQ0tfT0ZGU0VUKQoKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV84X0JJVCAgICAgICAgICAgIDB4MDAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV8xNl9CSVQgICAgICAgICAgIDB4MDEKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV8zMl9CSVQgICAgICAgICAgIDB4MDIKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XUklURV9FTkFCTEUgICAgIDB4MDQKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9TWU5DICAgICAgICAgICAgIDB4MDgKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18yICAgICAgICAgICAgIDB4MDAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18zICAgICAgICAgICAgIDB4MTAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU180ICAgICAgICAgICAgIDB4MjAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU181ICAgICAgICAgICAgIDB4MzAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU182ICAgICAgICAgICAgIDB4NDAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU183ICAgICAgICAgICAgIDB4NTAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU184ICAgICAgICAgICAgIDB4NjAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU185ICAgICAgICAgICAgIDB4NzAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xMCAgICAgICAgICAgIDB4ODAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xMSAgICAgICAgICAgIDB4OTAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xMiAgICAgICAgICAgIDB4QTAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xMyAgICAgICAgICAgIDB4QjAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xNCAgICAgICAgICAgIDB4QzAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xNSAgICAgICAgICAgIDB4RDAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xNiAgICAgICAgICAgIDB4RTAKI2RlZmluZSBJTlRFR1JBVE9SX0VCSV9XU18xNyAgICAgICAgICAgIDB4RjAKCgojZGVmaW5lIElOVEVHUkFUT1JfQ1RfQkFTRSAgICAgICAgICAgICAgMHgxMzAwMDAwMAkgLyogIENvdW50ZXIvVGltZXJzICovCiNkZWZpbmUgSU5URUdSQVRPUl9JQ19CQVNFICAgICAgICAgICAgICAweDE0MDAwMDAwCSAvKiAgSW50ZXJydXB0IENvbnRyb2xsZXIgKi8KI2RlZmluZSBJTlRFR1JBVE9SX1JUQ19CQVNFICAgICAgICAgICAgIDB4MTUwMDAwMDAJIC8qICBSZWFsIFRpbWUgQ2xvY2sgKi8KI2RlZmluZSBJTlRFR1JBVE9SX1VBUlQwX0JBU0UgICAgICAgICAgIDB4MTYwMDAwMDAJIC8qICBVQVJUIDAgKi8KI2RlZmluZSBJTlRFR1JBVE9SX1VBUlQxX0JBU0UgICAgICAgICAgIDB4MTcwMDAwMDAJIC8qICBVQVJUIDEgKi8KI2RlZmluZSBJTlRFR1JBVE9SX0tCRF9CQVNFICAgICAgICAgICAgIDB4MTgwMDAwMDAJIC8qICBLZXlib2FyZCAqLwojZGVmaW5lIElOVEVHUkFUT1JfTU9VU0VfQkFTRSAgICAgICAgICAgMHgxOTAwMDAwMAkgLyogIE1vdXNlICovCgovKgogKiAgTEVEJ3MgJiBTd2l0Y2hlcwogKgogKi8KI2RlZmluZSBJTlRFR1JBVE9SX0RCR19BTFBIQV9PRkZTRVQgICAgIDB4MDAKI2RlZmluZSBJTlRFR1JBVE9SX0RCR19MRURTX09GRlNFVCAgICAgIDB4MDQKI2RlZmluZSBJTlRFR1JBVE9SX0RCR19TV0lUQ0hfT0ZGU0VUICAgIDB4MDgKCiNkZWZpbmUgSU5URUdSQVRPUl9EQkdfQkFTRSAgICAgICAgICAgICAweDFBMDAwMDAwCiNkZWZpbmUgSU5URUdSQVRPUl9EQkdfQUxQSEEgICAgICAgICAgICAoSU5URUdSQVRPUl9EQkdfQkFTRSArIElOVEVHUkFUT1JfREJHX0FMUEhBX09GRlNFVCkKI2RlZmluZSBJTlRFR1JBVE9SX0RCR19MRURTICAgICAgICAgICAgIChJTlRFR1JBVE9SX0RCR19CQVNFICsgSU5URUdSQVRPUl9EQkdfTEVEU19PRkZTRVQpCiNkZWZpbmUgSU5URUdSQVRPUl9EQkdfU1dJVENIICAgICAgICAgICAoSU5URUdSQVRPUl9EQkdfQkFTRSArIElOVEVHUkFUT1JfREJHX1NXSVRDSF9PRkZTRVQpCgoKI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfSU5URUdSQVRPUl9BUCkKI2RlZmluZSBJTlRFR1JBVE9SX0dQSU9fQkFTRSAgICAgICAgICAgIDB4MUIwMDAwMDAJIC8qICBHUElPICovCiNlbGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfSU5URUdSQVRPUl9DUCkKI2RlZmluZSBJTlRFR1JBVE9SX0dQSU9fQkFTRSAgICAgICAgICAgIDB4QzkwMDAwMDAJIC8qICBHUElPICovCiNlbmRpZgoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqICBLTUkga2V5Ym9hcmQvbW91c2UgZGVmaW5pdGlvbnMKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwovKiBQUzIgS2V5Ym9hcmQgaW50ZXJmYWNlICovCiNkZWZpbmUgS01JMF9CQVNFICAgICAgICAgICAgICAgICAgICAgICBJTlRFR1JBVE9SX0tCRF9CQVNFCgovKiBQUzIgTW91c2UgaW50ZXJmYWNlICovCiNkZWZpbmUgS01JMV9CQVNFICAgICAgICAgICAgICAgICAgICAgICBJTlRFR1JBVE9SX01PVVNFX0JBU0UKCi8qIEtNSSBkZWZpbml0aW9ucyBhcmUgbm93IGluIGluY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9hbWJhX2ttaS5oIC0tIHJtayAqLwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqICBXaGVyZSBpbiB0aGUgbWVtb3J5IG1hcCBkb2VzIFBDSSBsaXZlPwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogIFRoaXMgcmVwcmVzZW50cyBhIGZhaXJseSBsaWJlcmFsIHVzYWdlIG9mIGFkZHJlc3Mgc3BhY2UuICBFdmVuIHRob3VnaAogKiAgdGhlIFYzIG9ubHkgaGFzIHR3byB3aW5kb3dzICh0aGVyZWZvcmUgd2UgbmVlZCB0byBtYXAgc3R1ZmYgb24gdGhlIGZseSksCiAqICB3ZSBtYWludGFpbiB0aGUgc2FtZSBhZGRyZXNzZXMsIGV2ZW4gaWYgdGhleSdyZSBub3QgbWFwcGVkLgogKgogKi8KI2RlZmluZSBQSFlTX1BDSV9NRU1fQkFTRSAgICAgICAgICAgICAgIDB4NDAwMDAwMDAgICAvKiA1MTJNIHRvIHh4eCAqLwovKiAgdW51c2VkIDI1Nk0gZnJvbSBBMDAwMDAwMC1BRkZGRkZGRiBtaWdodCBiZSB1c2VkIGZvciBJMk8gPz8/CiAqLwojZGVmaW5lIFBIWVNfUENJX0lPX0JBU0UgICAgICAgICAgICAgICAgMHg2MDAwMDAwMCAgIC8qIDE2TSB0byB4eHggKi8KLyogIHVudXNlZCAoMTI4LTE2KU0gZnJvbSBCMTAwMDAwMC1CN0ZGRkZGRgogKi8KI2RlZmluZSBQSFlTX1BDSV9DT05GSUdfQkFTRSAgICAgICAgICAgIDB4NjEwMDAwMDAgICAvKiAxNk0gdG8geHh4ICovCi8qICB1bnVzZWQgKCgxMjgtMTYpTSAtIDY0SykgZnJvbSBYWFgKICovCiNkZWZpbmUgUEhZU19QQ0lfVjNfQkFTRSAgICAgICAgICAgICAgICAweDYyMDAwMDAwCgojZGVmaW5lIFBDSV9EUkFNU0laRSAgICAgICAgICAgICAgICAgICAgSU5URUdSQVRPUl9TU1JBTV9TSVpFCgovKiAnZXhwb3J0JyB0aGVzZSB0byBVSEFMICovCiNkZWZpbmUgVUhBTF9QQ0lfSU8gICAgICAgICAgICAgICAgICAgICBQQ0lfSU9fQkFTRQojZGVmaW5lIFVIQUxfUENJX01FTSAgICAgICAgICAgICAgICAgICAgUENJX01FTV9CQVNFCiNkZWZpbmUgVUhBTF9QQ0lfQUxMT0NfSU9fQkFTRSAgICAgICAgICAweDAwMDA0MDAwCiNkZWZpbmUgVUhBTF9QQ0lfQUxMT0NfTUVNX0JBU0UgICAgICAgICBQQ0lfTUVNX0JBU0UKI2RlZmluZSBVSEFMX1BDSV9NQVhfU0xPVCAgICAgICAgICAgICAgIDIwCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogIFN0YXJ0IG9mIHVIQUwgZGVmaW5pdGlvbnMKICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqLwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqICBJbnRlZ3JhdG9yIEludGVycnVwdCBDb250cm9sbGVycwogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICoKICogIE9mZnNldHMgZnJvbSBpbnRlcnJ1cHQgY29udHJvbGxlciBiYXNlCiAqCiAqICBTeXN0ZW0gQ29udHJvbGxlciBpbnRlcnJ1cHQgY29udHJvbGxlciBiYXNlIGlzCiAqCiAqIAlJTlRFR1JBVE9SX0lDX0JBU0UgKyAoaGVhZGVyX251bWJlciA8PCA2KQogKgogKiAgQ29yZSBNb2R1bGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgYmFzZSBpcwogKgogKiAJSU5URUdSQVRPUl9IRFJfSUMKICoKICovCiNkZWZpbmUgSVJRX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAwCiNkZWZpbmUgSVJRX1JBV19TVEFUVVMgICAgICAgICAgICAgICAgICAweDA0CiNkZWZpbmUgSVJRX0VOQUJMRSAgICAgICAgICAgICAgICAgICAgICAweDA4CiNkZWZpbmUgSVJRX0VOQUJMRV9TRVQgICAgICAgICAgICAgICAgICAweDA4CiNkZWZpbmUgSVJRX0VOQUJMRV9DTEVBUiAgICAgICAgICAgICAgICAweDBDCgojZGVmaW5lIElOVF9TT0ZUX1NFVCAgICAgICAgICAgICAgICAgICAgMHgxMAojZGVmaW5lIElOVF9TT0ZUX0NMRUFSICAgICAgICAgICAgICAgICAgMHgxNAoKI2RlZmluZSBGSVFfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgIDB4MjAKI2RlZmluZSBGSVFfUkFXX1NUQVRVUyAgICAgICAgICAgICAgICAgIDB4MjQKI2RlZmluZSBGSVFfRU5BQkxFICAgICAgICAgICAgICAgICAgICAgIDB4MjgKI2RlZmluZSBGSVFfRU5BQkxFX1NFVCAgICAgICAgICAgICAgICAgIDB4MjgKI2RlZmluZSBGSVFfRU5BQkxFX0NMRUFSICAgICAgICAgICAgICAgIDB4MkMKCgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogIEludGVycnVwdHMKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqCiAqCiAqICBFYWNoIENvcmUgTW9kdWxlIGhhcyB0d28gaW50ZXJydXB0cyBjb250cm9sbGVycywgb25lIG9uIHRoZSBjb3JlIG1vZHVsZQogKiAgaXRzZWxmIGFuZCBvbmUgaW4gdGhlIHN5c3RlbSBjb250cm9sbGVyIG9uIHRoZSBtb3RoZXJib2FyZC4gIFRoZQogKiAgUkVBRF9JTlQgbWFjcm8gaW4gdGFyZ2V0LnMgcmVhZHMgYm90aCBpbnRlcnJ1cHQgY29udHJvbGxlcnMgYW5kIHJldHVybnMKICogIGEgMzIgYml0IGJpdG1hc2ssIGJpdHMgMCB0byAyMyBhcmUgaW50ZXJydXB0cyBmcm9tIHRoZSBzeXN0ZW0gY29udHJvbGxlcgogKiAgYW5kIGJpdHMgMjQgdG8gMzEgYXJlIGZyb20gdGhlIGNvcmUgbW9kdWxlLgogKgogKiAgVGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyByZWxhdGUgdG8gdGhlIGJpdG1hc2sgcmV0dXJuZWQgYnkgUkVBRF9JTlQuCiAqCiAqLwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqICBMRUQncyAtIFRoZSBoZWFkZXIgTEVEIGlzIG5vdCBhY2Nlc3NpYmxlIHZpYSB0aGUgdUhBTCBBUEkKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqCiAqLwojZGVmaW5lIEdSRUVOX0xFRCAgICAgICAgICAgICAgICAgICAgICAgMHgwMQojZGVmaW5lIFlFTExPV19MRUQgICAgICAgICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIFJFRF9MRUQgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNAojZGVmaW5lIEdSRUVOX0xFRF8yICAgICAgICAgICAgICAgICAgICAgMHgwOAojZGVmaW5lIEFMTF9MRURTICAgICAgICAgICAgICAgICAgICAgICAgMHgwRgoKI2RlZmluZSBMRURfQkFOSyAgICAgICAgICAgICAgICAgICAgICAgIElOVEVHUkFUT1JfREJHX0xFRFMKCi8qCiAqICBNZW1vcnkgZGVmaW5pdGlvbnMgLSBydW4gdUhBTCBvdXQgb2YgU1NSQU0uCiAqCiAqLwojZGVmaW5lIHVIQUxfTUVNT1JZX1NJWkUgICAgICAgICAgICAgICAgSU5URUdSQVRPUl9TU1JBTV9TSVpFCgovKgogKiAgQXBwbGljYXRpb24gRmxhc2gKICoKICovCiNkZWZpbmUgRkxBU0hfQkFTRSAgICAgICAgICAgICAgICAgICAgICBJTlRFR1JBVE9SX0ZMQVNIX0JBU0UKI2RlZmluZSBGTEFTSF9TSVpFICAgICAgICAgICAgICAgICAgICAgIElOVEVHUkFUT1JfRkxBU0hfU0laRQojZGVmaW5lIEZMQVNIX0VORCAgICAgICAgICAgICAgICAgICAgICAgKEZMQVNIX0JBU0UgKyBGTEFTSF9TSVpFIC0gMSkKI2RlZmluZSBGTEFTSF9CTE9DS19TSVpFICAgICAgICAgICAgICAgIFNaXzEyOEsKCi8qCiAqICBCb290IEZsYXNoCiAqCiAqLwojZGVmaW5lIEVQUk9NX0JBU0UgICAgICAgICAgICAgICAgICAgICAgSU5URUdSQVRPUl9CT09UX1JPTV9ISQojZGVmaW5lIEVQUk9NX1NJWkUgICAgICAgICAgICAgICAgICAgICAgSU5URUdSQVRPUl9CT09UX1JPTV9TSVpFCiNkZWZpbmUgRVBST01fRU5EICAgICAgICAgICAgICAgICAgICAgICAoRVBST01fQkFTRSArIEVQUk9NX1NJWkUgLSAxKQoKLyoKICogIENsZWFuIGJhc2UgLSBkdW1teQogKgogKi8KI2RlZmluZSBDTEVBTl9CQVNFICAgICAgICAgICAgICAgICAgICAgIEVQUk9NX0JBU0UKCi8qCiAqICBUaW1lciBkZWZpbml0aW9ucwogKgogKiAgT25seSB1c2UgdGltZXIgMSAmIDIKICogIChib3RoIHJ1biBhdCAyNE1IeiBhbmQgd2lsbCBuZWVkIHRoZSBjbG9jayBkaXZpZGVyIHNldCB0byAxNikuCiAqCiAqICBUaW1lciAwIHJ1bnMgYXQgYnVzIGZyZXF1ZW5jeSBhbmQgdGhlcmVmb3JlIGNvdWxkIHZhcnkgYW5kIGN1cnJlbnRseQogKiAgdUhBTCBjYW4ndCBoYW5kbGUgdGhhdC4KICoKICovCgojZGVmaW5lIElOVEVHUkFUT1JfVElNRVIwX0JBU0UgICAgICAgICAgSU5URUdSQVRPUl9DVF9CQVNFCiNkZWZpbmUgSU5URUdSQVRPUl9USU1FUjFfQkFTRSAgICAgICAgICAoSU5URUdSQVRPUl9DVF9CQVNFICsgMHgxMDApCiNkZWZpbmUgSU5URUdSQVRPUl9USU1FUjJfQkFTRSAgICAgICAgICAoSU5URUdSQVRPUl9DVF9CQVNFICsgMHgyMDApCgojZGVmaW5lIE1BWF9USU1FUiAgICAgICAgICAgICAgICAgICAgICAgMgojZGVmaW5lIE1BWF9QRVJJT0QgICAgICAgICAgICAgICAgICAgICAgNjk5MDUwCiNkZWZpbmUgVElDS1NfUEVSX3VTRUMgICAgICAgICAgICAgICAgICAyNAoKLyoKICogIFRoZXNlIGFyZSB1c2Vjb25kcyBOT1QgdGlja3MuCiAqCiAqLwojZGVmaW5lIG1TRUNfMSAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMAojZGVmaW5lIG1TRUNfNSAgICAgICAgICAgICAgICAgICAgICAgICAgKG1TRUNfMSAqIDUpCiNkZWZpbmUgbVNFQ18xMCAgICAgICAgICAgICAgICAgICAgICAgICAobVNFQ18xICogMTApCiNkZWZpbmUgbVNFQ18yNSAgICAgICAgICAgICAgICAgICAgICAgICAobVNFQ18xICogMjUpCiNkZWZpbmUgU0VDXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAobVNFQ18xICogMTAwMCkKCiNkZWZpbmUgSU5URUdSQVRPUl9DU1JfQkFTRSAgICAgICAgICAgICAweDEwMDAwMDAwCiNkZWZpbmUgSU5URUdSQVRPUl9DU1JfU0laRSAgICAgICAgICAgICAweDEwMDAwMDAwCgojZW5kaWYKCi8qIAlFTkQgKi8K