ZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9TT0xJRENBUkQzLmggYi9pbmNsdWRlL2NvbmZpZ3MvU09MSURDQVJEMy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZTY4YjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvU09MSURDQVJEMy5oCkBAIC0wLDAgKzEsNTM3IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA3CisgKiBIZWlrbyBTY2hvY2hlciwgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgPGhzQGRlbnguZGU+LgorICoKKyAqIEZyb206CisgKiAoQykgQ29weXJpZ2h0IDIwMDMKKyAqIEp1ZXJnZW4gQmVpc2VydCwgRXVyb0Rlc2lnbiBlbWJlZGRlZCB0ZWNobm9sb2dpZXMsIGpiZWlzZXJ0QGV1cm9kc24uZGUKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9fQ09ORklHX0gKKyNkZWZpbmUgX19DT05GSUdfSAorCisjdW5kZWYgVVNFX1ZHQV9HUkFQSElDUworCisvKiBNZW1vcnkgTWFwCisweDAwMDAwMDAwIC4uLi4gMHgwM0ZGRkZGRiAtPiBSQU0gKHVwIHRvIDEyOE1pQikKKzB4NzQwMDAwMDAgLi4uLiAweDc0MEZGRkZGIC0+IENTIzYKKzB4NzQxMDAwMDAgLi4uLiAweDc0MUZGRkZGIC0+IENTIzcKKzB4NzQyMDAwMDAgLi4uLiAweDc0MkZGRkZGIC0+IENTNCMgaWYgbm8gaW50ZXJuYWwgVVNCCisweDc0MzAwMDAwIC4uLi4gMHg3NDNGRkZGRiAtPiBDUzUjIGlmIG5vIGJvb3N0ZWQgSURFCisweDc3QzAwMDAwIC4uLi4gMHg3N0NGRkZGRiAtPiBDUzQjIFVTQiBIQyAoMSBNaUIpCisweDc3RDAwMDAwIC4uLi4gMHg3N0RGRkZGRiAtPiBDUzEjIE5BTkQtRmxhc2ggKDEgTWlCKQorMHg3ODAwMDAwMCAuLi4uIDB4NzhGRkZGRkYgLT4gQ1MyIyBJU0EtQnVzIFNwZWljaGVyenVncmlmZiAoMTYgTWlCKQorMHg3OTAwMDAwMCAuLi4uIDB4NzkwMEZGRkYgLT4gQ1MyIyBJU0EtQnVzIElPLVp1Z3JpZmYgKDE2IE1pQiwgbWFwcGVkOiA2NGtpQikKKzB4NzkwMTAwMDAgLi4uLiAweDc5RkZGRkZGIC0+IENTMiMgSVNBLUJ1cyBJTy1adWdyaWZmIChtaXJyb3JlZCkKKzB4N0EwMDAwMDAgLi4uLiAweDdBMEZGRkZGIC0+IENTNSMgSURFIGVtdWxhdGlvbiAoMU1pQikKKworMHg4MDAwMDAwMCAuLi4uIDB4OUZGRkZGRkYgLT4gUENJLUJ1cyBTcGVpY2hlcnp1Z3JpZmYgKDUxMk1pQiwgbWFwcGVkOiAxOjEpCisweEEwMDAwMDAwIC4uLi4gMHhCRkZGRkZGRiAtPiBQQ0ktQnVzIFNwZWljaGVyenVncmlmZiAoNTEyTWlCLCBtYXBwZWQ6IDB4MDAwMDAwMDAuLi4weDFGRkZGRkZGKQorMHhFODAwMDAwMCAuLi4uIDB4RTgwMEZGRkYgLT4gUENJLUJ1cyBJTy1adWdyaWZmICg2NGtpQiwgdHJhbnNsYXRlZCB0byBQQ0k6IDB4MDAwMC4uLjB4RkZGRikKKzB4RTg4MDAwMDAgLi4uLiAweEVCRkZGRkZGIC0+IFBDSS1CdXMgSU8tWnVncmlmZiAoNTZNaUIsIHRyYW5zbGF0ZWQgdG8gUENJOiAweDAwODAwMDAwLi4uMHgzRkZGRkZGKQorMHhFRUQwMDAwMCAuLi4uIDB4RUVEMDAwMDMgLT4gUENJLUJ1cworMHhFRjQwMDAwMCAuLi4uIDB4RUY0MDAwM0YgLT4gUENJLUJ1cyBMb2NhbCBDb25maWd1cmF0aW9uIFJlZ2lzdGVycworMHhFRjQwMDAzRiAuLi4uIDB4RUY1RkZGRkYgLT4gcmVzZXJ2ZWQKKzB4RUY2MDAwMDAgLi4uLiAweEVGRkZGRkZGIC0+IDQwNUdQIGludGVybmFsIERldmljZXMgKDEwIE1pQikKKzB4RjAwMDAwMDAgLi4uLiAweEYwMUZGRkZGIC0+IEZsYXNoLVJPTSAoMiBNaUIpCisweEYwMjAwMDAwIC4uLi4gMHhGN0ZGRkZGRiAtPiBmcmVlIGZvciBmbGFzaCBkZXZpY2VzCisweEY4MDAwMDAwIC4uLi4gMHhGODAwMEZGRiAtPiBPbkNoaXBNZW1vcnkgKDRraUIpCisweEY4MDAxMDAwIC4uLi4gMHhGRkRGRkZGRiAtPiBmcmVlIGZvciBmbGFzaCBkZXZpY2VzCisweEZGRTAwMDAwIC4uLi4gMHhGRkZGRkZGRiAtPiBCT09ULVJPTSAoMiBNaUIpCisqLworCisjZGVmaW5lIENPTkZJR19TT0xJRENBUkQzCTEKKyNkZWZpbmUgQ09ORklHXzR4eAkxCisjZGVmaW5lIENPTkZJR180MDVHUAkxCisKKyNkZWZpbmUgQ09ORklHX0JPQVJEX0VBUkxZX0lOSVRfRgkxCisKKy8qCisgKiBkZWZpbmUgSURFX1VTRVNfSVNBX0VNVUxBVElPTiBmb3Igc2xvd2VyIElERSBhY2Nlc3MgaW4gdGhlIElTQS1JTyBhZGRyZXNzIHJhbmdlCisgKiBJZiB1bmRlZmVkLCBJREUgYWNjZXNzIHVzZXMgYSBzZXBlcmF0IGVtdWxhdGlvbiB3aXRoIGhpZ2hlciBhY2Nlc3Mgc3BlZWQKKyAqIENvbnNpZGVyIHRvIGluZm9ybSB5b3VyIExpbnV4IElERSBkcml2ZXIgYWJvdXQgdGhlIGRpZmZlcmVudCBhZGRyZXNzZXMhCisgKiBJREVfVVNFU19JU0FfRU1VTEFUSU9OIGlzIG9ubHkgdXNlZCBpZiB5b3VyIENPTkZJR19DT01NQU5EUyBtYWNybyBpbmNsdWRlcyB0aGUgQ0ZHX0NNRF9JREUgbWFjcm8hCisgKi8KKyNkZWZpbmUgSURFX1VTRVNfSVNBX0VNVUxBVElPTgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTZXJpYWwgUG9ydAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNkZWZpbmUgQ09ORklHX1NFUklBTF9NVUxUSQorI3VuZGVmIENPTkZJR19TRVJJQUxfU09GVFdBUkVfRklGTworLyoKKyAqIGRlZmluZSBDT05GSUdfUE9XRVJfRE9XTiBpZiB5b3VyIGNwdSBzaG91bGQgcG93ZXIgZG93biB3aGlsZSB3YWl0aW5nIGZvciB5b3VyIGlucHV0CisgKiBXb3JrcyBvbmx5LCBpZiB5b3UgaGF2ZSBlbmFibGVkIHRoZSBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8gZmVhdHVyZQorICovCisjaWYgQ09ORklHX1NFUklBTF9TT0ZUV0FSRV9GSUZPCisgI2RlZmluZSBDT05GSUdfUE9XRVJfRE9XTgorI2VuZGlmCisKKy8qCisgKiBkZWZpbmUgQ09ORklHX1NZU19DTEtfRlJFUSB0byB5b3VyIGJhc2UgY3J5c3RhbCBjbG9jayBpbiBIegorICovCisjZGVmaW5lIENPTkZJR19TWVNfQ0xLX0ZSRVEJMzMzMzMzMzMKKworLyoKKyAqIGRlZmluZSBDT05GSUdfQkFVRFJBVEUgdG8gdGhlIGJhdWRyYXRlIHZhbHVlIHlvdSB3YW50IHRvIHVzZSBhcyBkZWZhdWx0CisgKi8KKyNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAKKyNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQkzIC8qIGF1dG9ib290IGFmdGVyIDMgc2Vjb25kcyAgICAgICAgICovCisKKyNkZWZpbmUgQ09ORklHX1NJTEVOVF9DT05TT0xFCTEJLyogZW5hYmxlIHNpbGVudCBzdGFydHVwICovCisjZGVmaW5lIENGR19ERVZJQ0VfTlVMTERFVgkxCS8qIGluY2x1ZGUgbnVsbGRldiBkZXZpY2UJKi8KKworI2lmIDEJLyogZmVlbCBmcmVlIHRvIGRpc2FibGUgZm9yIGRldmVsb3BtZW50ICovCisjZGVmaW5lIENPTkZJR19BVVRPQk9PVF9LRVlFRAkJLyogRW5hYmxlIHBhc3N3b3JkIHByb3RlY3Rpb24JKi8KKyNkZWZpbmUgQ09ORklHX0FVVE9CT09UX1BST01QVAkJIlxuU0MzIC0gYm9vdGluZy4uLiBzdG9wIHdpdGggU1xuIgorI2RlZmluZSBDT05GSUdfQVVUT0JPT1RfREVMQVlfU1RSCSJTIgkvKiAxc3QgInBhc3N3b3JkIgkqLworI2VuZGlmCisKKy8qCisgKiBkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5EIHRvIHRoZSBhdXRvYm9vdCBjb21tYW5kcy4gVGhleSB3aWxsIHJ1bm5pbmcgYWZ0ZXIKKyAqIHRoZSBDT05GSUdfQk9PVERFTEFZIGRlbGF5IHRvIGJvb3QgeW91ciBtYWNoaW5lCisgKi8KKyNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECSJib290cDtkY2FjaGUgb247Ym9vdG0iCisKKy8qCisgKiBkZWZpbmUgQ09ORklHX0JPT1RBUkdTIHRvIHRoZSBkZWZhdWx0IGtlcm5lbCBwYXJhbWV0ZXJzLiBUaGV5IHdpbGwgdXNlZCBpZiB5b3UgZG9uJ3QKKyAqIHNldCBkaWZmZXJlbnQgdmFsdWVzIGF0IHRoZSB1LWJvb3QgcHJvbXB0CisgKi8KKyNpZmRlZiBVU0VfVkdBX0dSQVBISUNTCisgI2RlZmluZSBDT05GSUdfQk9PVEFSR1MJInJvb3Q9L2Rldi9uZnMgcncgaXA9Ym9vdHAgbmZzcm9vdD0vdGZ0cGJvb3Qvc29saWRjYXJkM3JlIgorI2Vsc2UKKyAjZGVmaW5lIENPTkZJR19CT09UQVJHUwkiY29uc29sZT10dHlTMCwxMTUyMDAgcm9vdD0vZGV2L25mcyBydyBpcD1ib290cCIKKyNlbmRpZgorLyoKKyAqIElzIHRoZSBVU0IgaG9zdCBjb250cm9sbGVyIGFzc2VtYmxlZD8gSWYgeWVzIGRlZmluZSBDT05GSUdfSVNQMTE2MV9QUkVTRU5UCisgKiBUaGlzIHJlc2VydmVzIG1lbW9yeSBiYW5rICM0IGZvciB0aGlzIHB1cnBvc2UKKyAqLworI3VuZGVmIENPTkZJR19JU1AxMTYxX1BSRVNFTlQKKworI3VuZGVmIENPTkZJR19MT0FEU19FQ0hPICAgLyogbm8gZWNobyBvbiBmb3Igc2VyaWFsIGRvd25sb2FkCSovCisjZGVmaW5lIENGR19MT0FEU19CQVVEX0NIQU5HRQkxCS8qIGFsbG93IGJhdWRyYXRlIGNoYW5nZQkqLworCisjZGVmaW5lIENPTkZJR19ORVRfTVVMVEkKKy8qICNkZWZpbmUgQ09ORklHX0VFUFJPMTAwX1NST01fV1JJVEUgKi8KKy8qICNkZWZpbmUgQ09ORklHX1NIT1dfTUFDICovCisjZGVmaW5lIENPTkZJR19FRVBSTzEwMAorI2RlZmluZSBDT05GSUdfTUlJIDEJCQkvKiBhZGQgNDA1R1AgTUlJIFBIWSBtYW5hZ2VtZW50CQkqLworI2RlZmluZSBDT05GSUdfUEhZX0FERFIgMQkvKiB0aGUgY29ubmVjdGVkIFBoeSBkZWZhdWx0cyB0byBhZGRyZXNzIDEgKi8KKworI2RlZmluZSBDT05GSUdfQ09NTUFORFMJICBcCisgICAgICAgICAgIChDT05GSUdfQ01EX0RGTAl8IFwKKwkJCQlDRkdfQ01EX1BDSQl8IFwKKwkJCQlDRkdfQ01EX0lSUQl8IFwKKwkJCQlDRkdfQ01EX05FVCB8IFwKKwkJCQlDRkdfQ01EX01JSSB8IFwKKwkJCQlDRkdfQ01EX1BJTkcgfCBcCisJCQkJQ0ZHX0NNRF9OQU5EIHwgXAorCQkJCUNGR19DTURfSTJDIHwgXAorCQkJCUNGR19DTURfSURFIHwgXAorCQkJCUNGR19DTURfREFURSB8IFwKKwkJCQlDRkdfQ01EX0RIQ1AJfCBcCisJCQkJQ0ZHX0NNRF9DQUNIRSAgfCBcCisJCQkJQ0ZHX0NNRF9FTEYJKQorCisvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCisjaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CisKKyN1bmRlZiBDT05GSUdfV0FUQ0hET0cJCQkvKiB3YXRjaGRvZyBkaXNhYmxlZAkJKi8KKworLyoKKyAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKKyAqLworI2RlZmluZSBDRkdfTE9OR0hFTFAJMQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJCSovCisjZGVmaW5lIENGR19QUk9NUFQJIlNDMz4gIgkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0CSovCisjZGVmaW5lCUNGR19DQlNJWkUJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLworCisjZGVmaW5lIENGR19QQlNJWkUgKENGR19DQlNJWkUrc2l6ZW9mKENGR19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLworCisjZGVmaW5lIENGR19NQVhBUkdTCTE2CQkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncwkqLworI2RlZmluZSBDRkdfQkFSR1NJWkUJQ0ZHX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplCSovCisKKyNkZWZpbmUgQ0ZHX01FTVRFU1RfU1RBUlQJMHgwNDAwMDAwCS8qIG1lbXRlc3Qgd29ya3Mgb24JKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDBDMDAwMDAJLyogNCAuLi4gMTIgTUIgaW4gRFJBTQkqLworCisvKgorICogSWYgQ0ZHX0VYVF9TRVJJQUxfQ0xPQ0ssIHRoZW4gdGhlIFVBUlQgZGl2aXNvciBpcyAxLgorICogSWYgQ0ZHXzQwNV9VQVJUX0VSUkFUQV81OSwgdGhlbiBVQVJUIGRpdmlzb3IgaXMgMzEuCisgKiBPdGhlcndpc2UsIFVBUlQgZGl2aXNvciBpcyBkZXRlcm1pbmVkIGJ5IENQVSBDbG9jayBhbmQgQ0ZHX0JBU0VfQkFVRCB2YWx1ZS4KKyAqIFRoZSBMaW51eCBCQVNFX0JBVUQgZGVmaW5lIHNob3VsZCBtYXRjaCB0aGlzIGNvbmZpZ3VyYXRpb24uCisgKiAgICBiYXNlQmF1ZCA9IGNwdUNsb2NrLyh1YXJ0RGl2aXNvcioxNikKKyAqIElmIENGR180MDVfVUFSVF9FUlJBVEFfNTkgYW5kIDIwME1IeiBDUFUgY2xvY2ssCisgKiBzZXQgTGludXggQkFTRV9CQVVEIHRvIDQwMzIwMC4KKyAqCisgKiBDb25zaWRlciB0aGUgT1BCIGNsb2NrISBJZiBpdCBnZXQgbG93ZXIgdGhlIEJBU0VfQkFVRCBtdXN0IGJlIGxvd2VyIHRvCisgKiAoc2VlIDQwNUdQIGRhdGFzaGVldCBmb3IgZGVzY3JpdHBpb24pCisgKi8KKyN1bmRlZiAgQ0ZHX0VYVF9TRVJJQUxfQ0xPQ0sJCS8qIGV4dGVybmFsIHNlcmlhbCBjbG9jayAqLworI3VuZGVmICBDRkdfNDA1X1VBUlRfRVJSQVRBXzU5CQkvKiA0MDVHUC9DUiBSZXYuIEQgc2lsaWNvbiAqLworI2RlZmluZSBDRkdfQkFTRV9CQVVECQk5MjE2MDAJLyogaW50ZXJuYWwgY2xvY2sgKi8KKworLyogVGhlIGZvbGxvd2luZyB0YWJsZSBpbmNsdWRlcyB0aGUgc3VwcG9ydGVkIGJhdWRyYXRlcyAqLworI2RlZmluZSBDRkdfQkFVRFJBVEVfVEFCTEUgIFwKKyAgICB7MzAwLCA2MDAsIDEyMDAsIDI0MDAsIDQ4MDAsIDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCwgMjMwNDAwfQorCisjZGVmaW5lIENGR19MT0FEX0FERFIJCTB4MTAwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLworI2RlZmluZSBDRkdfRVhUQkRJTkZPCQkxCS8qIFRvIHVzZSBleHRlbmRlZCBib2FyZF9pbnRvIChiZF90KSAqLworCisjZGVmaW5lCUNGR19IWgkJCTEwMDAJLyogZGVjcmVtZW50ZXIgZnJlcTogMSBtcyB0aWNrcwkqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJSUMgc3R1ZmYKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSAgQ09ORklHX0hBUkRfSTJDCQkvKiBJMkMgd2l0aCBoYXJkd2FyZSBzdXBwb3J0CSovCisjdW5kZWYgIENPTkZJR19TT0ZUX0kyQwkJCS8qIEkyQyBiaXQtYmFuZ2VkCQkqLworCisjZGVmaW5lIEkyQ19JTklUCisjZGVmaW5lIEkyQ19BQ1RJVkUgMAorI2RlZmluZSBJMkNfVFJJU1RBVEUgMAorCisjZGVmaW5lIENGR19JMkNfU1BFRUQJCTEwMDAwMAkvKiB1c2UgdGhlIHN0YW5kYXJkIDEwMGtIeiBzcGVlZCAqLworI2RlZmluZSBDRkdfSTJDX1NMQVZFCQkweDdGCQkvKiBtYXNrIHZhbGlkIGJpdHMgKi8KKworI2RlZmluZSBDT05GSUdfUlRDX0RTMTMzNworI2RlZmluZSBDRkdfSTJDX1JUQ19BRERSIDB4NjgKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUENJIHN0dWZmCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgUENJX0hPU1RfQURBUFRFUiAwCQkvKiBjb25maWd1cmUgYXIgcGNpIGFkYXB0ZXIgICAgICovCisjZGVmaW5lIFBDSV9IT1NUX0ZPUkNFICAxCQkvKiBjb25maWd1cmUgYXMgcGNpIGhvc3QgICAgICAgICovCisjZGVmaW5lIFBDSV9IT1NUX0FVVE8gICAyCQkvKiBkZXRlY3RlZCB2aWEgYXJiaXRlciBlbmFibGUgICovCisKKyNkZWZpbmUgQ09ORklHX1BDSQkJCS8qIGluY2x1ZGUgcGNpIHN1cHBvcnQJICAgICAgICAqLworI2RlZmluZSBDT05GSUdfUENJX0hPU1QJUENJX0hPU1RfRk9SQ0UJLyogc2VsZWN0IHBjaSBob3N0IGZ1bmN0aW9uICAgICAqLworI2RlZmluZSBDT05GSUdfUENJX1BOUAkJCS8qIGRvIHBjaSBwbHVnLWFuZC1wbGF5ICAgICAgICAgKi8KKwkJCQkJLyogcmVzb3VyY2UgY29uZmlndXJhdGlvbiAgICAgICAqLworCisvKiBJZiB5b3Ugd2FudCB0byBzZWUsIHdoYXRzIGNvbm5lY3RlZCB0byB5b3VyIFBDSSBidXMgKi8KKy8qICNkZWZpbmUgQ09ORklHX1BDSV9TQ0FOX1NIT1cgKi8KKworI2RlZmluZSBDRkdfUENJX1NVQlNZU19WRU5ET1JJRCAweDAwMDAJLyogUENJIFZlbmRvciBJRDogdG8tZG8hISEgICAgICAqLworI2RlZmluZSBDRkdfUENJX1NVQlNZU19ERVZJQ0VJRCAweDAwMDAJLyogUENJIERldmljZSBJRDogdG8tZG8hISEgICAgICAqLworI2RlZmluZSBDRkdfUENJX1BUTTFMQSAgMHgwMDAwMDAwMAkvKiBwb2ludCB0byBzZHJhbSAgICAgICAgICAgICAgICovCisjZGVmaW5lIENGR19QQ0lfUFRNMU1TICAweDgwMDAwMDAxCS8qIDJHQiwgZW5hYmxlIGhhcmQtd2lyZWQgdG8gMSAgKi8KKyNkZWZpbmUgQ0ZHX1BDSV9QVE0xUENJIDB4MDAwMDAwMDAJLyogSG9zdDogdXNlIHRoaXMgcGNpIGFkZHJlc3MgICAqLworI2RlZmluZSBDRkdfUENJX1BUTTJMQSAgMHgwMDAwMDAwMAkvKiBkaXNhYmxlZCAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIENGR19QQ0lfUFRNMk1TICAweDAwMDAwMDAwCS8qIGRpc2FibGVkICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQ0ZHX1BDSV9QVE0yUENJIDB4MDQwMDAwMDAJLyogSG9zdDogdXNlIHRoaXMgcGNpIGFkZHJlc3MgICAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFeHRlcm5hbCBwZXJpcGhlcmFsIGJhc2UgYWRkcmVzcworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWYgIShDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0lERSkKKworI3VuZGVmICBDT05GSUdfSURFX0xFRAkJCS8qIG5vIGxlZCBmb3IgaWRlIHN1cHBvcnRlZCAgICAgKi8KKyN1bmRlZiAgQ09ORklHX0lERV9SRVNFVAkJLyogbm8gcmVzZXQgZm9yIGlkZSBzdXBwb3J0ZWQgICAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJREUvQVRBIHN0dWZmCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNlbHNlIC8qICEoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9JREUpICovCisjZGVmaW5lIENPTkZJR19TVEFSVF9JREUJMQkvKiBjaGVjaywgaWYgdXNlIElERSAqLworCisjdW5kZWYgIENPTkZJR19JREVfOHh4X0RJUkVDVAkJLyogbm8gcGNtY2lhIGludGVyZmFjZSByZXF1aXJlZCAqLworI3VuZGVmICBDT05GSUdfSURFX0xFRAkJCS8qIG5vIGxlZCBmb3IgaWRlIHN1cHBvcnRlZCAgICAgKi8KKyN1bmRlZiAgQ09ORklHX0lERV9SRVNFVAkJLyogbm8gcmVzZXQgZm9yIGlkZSBzdXBwb3J0ZWQgICAqLworCisjZGVmaW5lCUNPTkZJR19BVEFQSQorI2RlZmluZQlDT05GSUdfRE9TX1BBUlRJVElPTgorI2RlZmluZQlDRkdfSURFX01BWERFVklDRQkoQ0ZHX0lERV9NQVhCVVMqMSkgLyogbWF4LiAxIGRyaXZlcyBwZXIgSURFIGJ1cyAqLworCisjaWZuZGVmIElERV9VU0VTX0lTQV9FTVVMQVRJT04KKworLyogTmV3IGFuZCBmYXN0ZXIgYWNjZXNzICovCisjZGVmaW5lCUNGR19BVEFfQkFTRV9BRERSCQkweDdBMDAwMDAwCS8qIHN0YXJ0IG9mIElTQSBJTyBlbXVsYXRpb24gKi8KKworLyogSG93IG1hbnkgSURFIGJ1c3NlcyBhcmUgYXZhaWxhYmxlICovCisjZGVmaW5lCUNGR19JREVfTUFYQlVTCQkxCisKKy8qIFdoYXQgSURFIHBvcnRzIGFyZSBhdmFpbGFibGUgKi8KKyNkZWZpbmUJQ0ZHX0FUQV9JREUwX09GRlNFVAkweDAwMAkJLyogZmlyc3QgaXMgYXZhaWxhYmxlICovCisjdW5kZWYJQ0ZHX0FUQV9JREUxX09GRlNFVAkJCS8qIHNlY29uZCBub3QgYXZhaWxhYmxlICovCisKKy8qIGFjY2VzcyB0byB0aGUgZGF0YSBwb3J0IGlzIGNhbGN1bGF0ZWQ6CisgICBDRkdfQVRBX0JBU0VfQUREUiArIENGR19BVEFfSURFMF9PRkZTRVQgKyBDRkdfQVRBX0RBVEFfT0ZGU0VUICsgMCAqLworI2RlZmluZSBDRkdfQVRBX0RBVEFfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIGRhdGEgSS9PICovCisKKy8qIGFjY2VzcyB0byB0aGUgcmVnaXN0ZXJzIGlzIGNhbGN1bGF0ZWQ6CisgICBDRkdfQVRBX0JBU0VfQUREUiArIENGR19BVEFfSURFMF9PRkZTRVQgKyBDRkdfQVRBX1JFR19PRkZTRVQgKyBbMS4uN10gKi8KKyNkZWZpbmUJQ0ZHX0FUQV9SRUdfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIG5vcm1hbCByZWdpc3RlciBhY2Nlc3NlcwkqLworCisvKiBhY2Nlc3MgdG8gdGhlIGFsdGVybmF0ZSByZWdpc3RlciBpcyBjYWxjdWxhdGVkOgorICAgQ0ZHX0FUQV9CQVNFX0FERFIgKyBDRkdfQVRBX0lERTBfT0ZGU0VUICsgQ0ZHX0FUQV9BTFRfT0ZGU0VUICsgNiAqLworI2RlZmluZSBDRkdfQVRBX0FMVF9PRkZTRVQJMHgwMDgJCS8qIE9mZnNldCBmb3IgYWx0ZXJuYXRlIHJlZ2lzdGVycwkqLworCisjZWxzZSAvKiBJREVfVVNFU19JU0FfRU1VTEFUSU9OICovCisKKyNkZWZpbmUJQ0ZHX0FUQV9CQVNFX0FERFIJCTB4NzkwMDAwMDAJLyogc3RhcnQgb2YgSVNBIElPIGVtdWxhdGlvbiAqLworCisvKiBIb3cgbWFueSBJREUgYnVzc2VzIGFyZSBhdmFpbGFibGUgKi8KKyNkZWZpbmUJQ0ZHX0lERV9NQVhCVVMJCTEKKworLyogV2hhdCBJREUgcG9ydHMgYXJlIGF2YWlsYWJsZSAqLworI2RlZmluZQlDRkdfQVRBX0lERTBfT0ZGU0VUCTB4MDFGMAkvKiBmaXJzdCBpcyBhdmFpbGFibGUgKi8KKyN1bmRlZglDRkdfQVRBX0lERTFfT0ZGU0VUCQkJCS8qIHNlY29uZCBub3QgYXZhaWxhYmxlICovCisKKy8qIGFjY2VzcyB0byB0aGUgZGF0YSBwb3J0IGlzIGNhbGN1bGF0ZWQ6CisgICBDRkdfQVRBX0JBU0VfQUREUiArIENGR19BVEFfSURFMF9PRkZTRVQgKyBDRkdfQVRBX0RBVEFfT0ZGU0VUICsgMCAqLworI2RlZmluZSBDRkdfQVRBX0RBVEFfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIGRhdGEgSS9PICovCisKKy8qIGFjY2VzcyB0byB0aGUgcmVnaXN0ZXJzIGlzIGNhbGN1bGF0ZWQ6CisgICBDRkdfQVRBX0JBU0VfQUREUiArIENGR19BVEFfSURFMF9PRkZTRVQgKyBDRkdfQVRBX1JFR19PRkZTRVQgKyBbMS4uN10gKi8KKyNkZWZpbmUJQ0ZHX0FUQV9SRUdfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIG5vcm1hbCByZWdpc3RlciBhY2Nlc3NlcwkqLworCisvKiBhY2Nlc3MgdG8gdGhlIGFsdGVybmF0ZSByZWdpc3RlciBpcyBjYWxjdWxhdGVkOgorICAgQ0ZHX0FUQV9CQVNFX0FERFIgKyBDRkdfQVRBX0lERTBfT0ZGU0VUICsgQ0ZHX0FUQV9BTFRfT0ZGU0VUICsgNiAqLworI2RlZmluZSBDRkdfQVRBX0FMVF9PRkZTRVQJMHgwM0YwCQkvKiBPZmZzZXQgZm9yIGFsdGVybmF0ZSByZWdpc3RlcnMJKi8KKworI2VuZGlmIC8qIElERV9VU0VTX0lTQV9FTVVMQVRJT04gKi8KKworI2VuZGlmIC8qICEoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9JREUpICovCisKKy8qCisjZGVmaW5lCUNGR19LRVlfUkVHX0JBU0VfQUREUgkweEYwMTAwMDAwCisjZGVmaW5lCUNGR19JUl9SRUdfQkFTRV9BRERSCTB4RjAyMDAwMDAKKyNkZWZpbmUJQ0ZHX0ZQR0FfUkVHX0JBU0VfQUREUgkweEYwMzAwMDAwCisqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTdGFydCBhZGRyZXNzZXMgZm9yIHRoZSBmaW5hbCBtZW1vcnkgY29uZmlndXJhdGlvbgorICogKFNldCB1cCBieSB0aGUgc3RhcnR1cCBjb2RlKQorICogUGxlYXNlIG5vdGUgdGhhdCBDRkdfU0RSQU1fQkFTRSBfbXVzdF8gc3RhcnQgYXQgMAorICoKKyAqIENGR19GTEFTSF9CQVNFICAgLT4gc3RhcnQgYWRkcmVzcyBvZiBpbnRlcm5hbCBmbGFzaAorICogQ0ZHX01PTklUT1JfQkFTRSAtPiBzdGFydCBvZiB1LWJvb3QKKyAqLworI2lmbmRlZiBfX0FTU0VNQkxFUl9fCitleHRlcm4gdW5zaWduZWQgbG9uZyBvZmZzZXRPZkJpZ0ZsYXNoOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgb2Zmc2V0T2ZFbnZpcm9ubWVudDsKKyNlbmRpZgorCisjZGVmaW5lIENGR19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCisjZGVmaW5lIENGR19GTEFTSF9CQVNFCQkweEZGRTAwMDAwCisjZGVmaW5lIENGR19NT05JVE9SX0JBU0UJMHhGRkZDMDAwMCAgICAgLyogcGxhY2VkIGxhc3QgMjU2ayAqLworI2RlZmluZSBDRkdfTU9OSVRPUl9MRU4JCSgyMjQgKiAxMDI0KQkvKiBSZXNlcnZlIDIyNCBLaUIgZm9yIE1vbml0b3IJKi8KKyNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCSgxMjggKiAxMDI0KQkvKiBSZXNlcnZlIDEyOCBLaUIgZm9yIG1hbGxvYygpCSovCisKKy8qCisgKiBGb3IgYm9vdGluZyBMaW51eCwgdGhlIGJvYXJkIGluZm8gYW5kIGNvbW1hbmQgbGluZSBkYXRhCisgKiBoYXZlIHRvIGJlIGluIHRoZSBmaXJzdCA4IE1pQiBvZiBtZW1vcnksIHNpbmNlIHRoaXMgaXMKKyAqIHRoZSBtYXhpbXVtIG1hcHBlZCBieSB0aGUgTGludXgga2VybmVsIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAqLworI2RlZmluZSBDRkdfQk9PVE1BUFNaCQkoOCA8PCAyMCkJLyogSW5pdGlhbCBNZW1vcnkgbWFwIGZvciBMaW51eCAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRkxBU0ggb3JnYW5pemF0aW9uIC8vIEZJWE1FOiBsb29rdXAgaW4gZGF0YXNoZWV0CisgKi8KKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9CQU5LUwkyCS8qIG1heCBudW1iZXIgb2YgbWVtb3J5IGJhbmtzCQkqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJMjU2CS8qIG1heCBudW1iZXIgb2Ygc2VjdG9ycyBvbiBvbmUgY2hpcAkqLworCisjZGVmaW5lIENGR19GTEFTSF9DRkkJCQkvKiBmbGFzaCBpcyBDRkkgY29tcGF0LgkqLworI2RlZmluZSBDRkdfRkxBU0hfQ0ZJX0RSSVZFUgkJLyogVXNlIGNvbW1vbiBDRkkgZHJpdmVyKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX0VNUFRZX0lORk8JCS8qIHByaW50ICdFJyBmb3IgZW1wdHkgc2VjdG9yCSovCisjZGVmaW5lIENGR19GTEFTSF9RVUlFVF9URVNUCTEJLyogZG9uJ3Qgd2FybiB1cG9uIHVua25vd24gZmxhc2gqLworI2RlZmluZSBDRkdfRkxBU0hfRVJBU0VfVE9VVAkxMjAwMDAJLyogVGltZW91dCBmb3IgRmxhc2ggRXJhc2UgKGluIG1zKQkqLworI2RlZmluZSBDRkdfRkxBU0hfV1JJVEVfVE9VVAk1MDAJLyogVGltZW91dCBmb3IgRmxhc2ggV3JpdGUgKGluIG1zKQkqLworCisjZGVmaW5lIENGR19FTlZfSVNfSU5fRkxBU0gJMQorI2lmIENGR19FTlZfSVNfSU5fRkxBU0gKKwkjZGVmaW5lIENGR19FTlZfT0ZGU0VUCQkweDAwMDAwMDAwICAvKiBPZmZzZXQgb2YgRW52aXJvbm1lbnQgU2VjdG9yIGluIGJvdHRvbSB0eXBlICovCisJI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4NDAwMCAgICAgIC8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yCSovCisJI2RlZmluZSBDRkdfRU5WX1NFQ1RfU0laRQkweDQwMDAgICAgICAvKiBzZWUgUkVBRE1FIC0gZW52IHNlY3RvciB0b3RhbCBzaXplCSovCisjZW5kaWYKKy8qIGxldCB1cyBjaGFuZ2luZyBhbnl0aGluZyBpbiBvdXIgZW52aXJvbm1lbnQgKi8KKyNkZWZpbmUgQ09ORklHX0VOVl9PVkVSV1JJVEUKKworLyoKKyAqIE5BTkQtRkxBU0ggc3R1ZmYKKyAqLworI2RlZmluZSBDRkdfTUFYX05BTkRfREVWSUNFCTEKKyNkZWZpbmUgTkFORF9NQVhfQ0hJUFMJCTEKKyNkZWZpbmUgQ0ZHX05BTkRfQkFTRQkJMHg3N0QwMDAwMAorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDYWNoZSBDb25maWd1cmF0aW9uCisgKgorICogQ0ZHX0RDQUNIRV9TSVpFIC0+IHNpemUgb2YgZGF0YSBjYWNoZToKKyAqIC0gNDA1R1AgOGsKKyAqIC0gNDA1R1ByIDE2aworICogSG93IHRvIGhhbmRsZSB0aGUgZGlmZmVyZW5jZSBpbiBjaGFjaGUgc2l6ZT8KKyAqIENGR19DQUNIRUxJTkVfU0laRSAtPiBzaXplIG9mIG9uZSBjYWNoZSBsaW5lOiAzMiBieXRlcworICogKHVzZWQgaW4gY3B1L3BwYzR4eC9zdGFydC5TKQorKi8KKyNkZWZpbmUgQ0ZHX0RDQUNIRV9TSVpFICAgIDE2Mzg0CisKKyNkZWZpbmUgQ0ZHX0NBQ0hFTElORV9TSVpFIDMyCisKKyNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9LR0RCKQorICNkZWZpbmUgQ0ZHX0NBQ0hFTElORV9TSElGVAk1CS8qIGxvZyBiYXNlIDIgb2YgdGhlIGFib3ZlIHZhbHVlCSovCisjZW5kaWYKKworLyoKKyAqIEluaXQgTWVtb3J5IENvbnRyb2xsZXI6CisgKgorICovCisKKyNkZWZpbmUgRkxBU0hfQkFTRTBfUFJFTElNCUNGR19GTEFTSF9CQVNFCisjZGVmaW5lIEZMQVNIX0JBU0UxX1BSRUxJTQkwCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFNvbWUgaW5mb3JtYXRpb25zIGFib3V0IHRoZSBpbnRlcm5hbCBTUkFNIChPQ009T24gQ2hpcCBNZW1vcnkpCisgKgorICogQ0ZHX09DTV9EQVRBX0FERFIgLT4gbG9jYXRpb24KKyAqIENGR19PQ01fREFUQV9TSVpFIC0+IHNpemUKKyovCisKKyNkZWZpbmUgQ0ZHX1RFTVBfU1RBQ0tfT0NNCTEKKyNkZWZpbmUgQ0ZHX09DTV9EQVRBX0FERFIJMHhGODAwMDAwMAorI2RlZmluZSBDRkdfT0NNX0RBVEFfU0laRQkweDEwMDAKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSk6CisgKiAtIHdlIGFyZSB1c2luZyB0aGUgaW50ZXJuYWwgNGsgU1JBTSwgc28gd2UgZG9uJ3QgbmVlZCBkYXRhIGNhY2hlIG1hcHBpbmcKKyAqIC0gaW50ZXJuYWwgU1JBTSAoT0NNPU9uIENoaXAgTWVtb3J5KSBpcyBwbGFjZWQgdG8gQ0ZHX09DTV9EQVRBX0FERFIKKyAqIC0gU3RhY2twb2ludGVyIHdpbGwgYmUgbG9jYXRlZCB0bworICogICAoQ0ZHX0lOSVRfUkFNX0FERFImMHhGRkZGMDAwMCkgfCAoQ0ZHX0lOSVRfU1BfT0ZGU0VUJjB4MDAwMEZGRkYpCisgKiAgIGluIGNwdS9wcGM0eHgvc3RhcnQuUworICovCisKKyN1bmRlZiBDRkdfSU5JVF9EQ0FDSEVfQ1MKKy8qIFdoZXJlIHRoZSBpbnRlcm5hbCBTUkFNIHN0YXJ0cyAqLworI2RlZmluZSBDRkdfSU5JVF9SQU1fQUREUiAgICAgICBDRkdfT0NNX0RBVEFfQUREUgorLyogV2hlcmUgdGhlIGludGVybmFsIFNSQU0gZW5kcyAob25seSBvZmZzZXQpICovCisjZGVmaW5lIENGR19JTklUX1JBTV9FTkQgICAgICAgIDB4MEYwMAorCisvKgorCisgQ0ZHX0lOSVRfUkFNX0FERFIgLS0tLS0tPiAtLS0tLS0tLS0tLS0gbG93ZXIgYWRkcmVzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBeICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCBTdGFjayB8CisgQ0ZHX0dCTF9EQVRBX09GRlNFVCAtLS0tPiAtLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NCBCeXRlcyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKyBDRkdfSU5JVF9SQU1fRU5EICAtLS0tLS0+IC0tLS0tLS0tLS0tLSBoaWdoZXIgYWRkcmVzcworICAob2Zmc2V0IG9ubHkpCisKKyovCisvKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KKyNkZWZpbmUgQ0ZHX0dCTF9EQVRBX1NJWkUgICAgIDY0CisjZGVmaW5lIENGR19HQkxfREFUQV9PRkZTRVQgICAoQ0ZHX0lOSVRfUkFNX0VORCAtIENGR19HQkxfREFUQV9TSVpFKQorLyogSW5pdGlhbCB2YWx1ZSBvZiB0aGUgc3RhY2sgcG9pbnRlcm4gaW4gaW50ZXJuYWwgU1JBTSAqLworI2RlZmluZSBDRkdfSU5JVF9TUF9PRkZTRVQgICAgQ0ZHX0dCTF9EQVRBX09GRlNFVAorCisvKgorICogSW50ZXJuYWwgRGVmaW5pdGlvbnMKKyAqCisgKiBCb290IEZsYWdzCisgKi8KKyNkZWZpbmUgQk9PVEZMQUdfQ09MRAkweDAxCQkvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBGTEFTSAkqLworI2RlZmluZSBCT09URkxBR19XQVJNCTB4MDIJCS8qIFNvZnR3YXJlIHJlYm9vdAkJCSovCisKKy8qICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICovCisvKiBUaGVzZSBkZWZpbmVzIHdpbGwgYmUgdXNlZCBpbiBjcHUvcHBjNHh4L2NwdV9pbml0LmMgdG8gc2V0dXAgZXh0ZXJuYWwgY2hpcCBzZWxlY3RzICAqLworLyogVGhleSBhcmUgY3VycmVudGx5IHVuZGVmaW5lZCBjYXVzZSB0aGV5IGFyZSBpbml0aWFpemVkIGluIGJvYXJkL3NvbGlkY2FyZDMvaW5pdC5TICAgKi8KKworLyogVGhpcyBjaGlwIHNlbGVjdCBhY2Nlc3NlcyB0aGUgYm9vdCBkZXZpY2UgKi8KKy8qIEl0IGRlcGVuZHMgb24gYm9vdCBzZWxlY3Qgc3dpdGNoIGlmIHRoaXMgZGV2aWNlIGlzIDE2IG9yIDggYml0ICovCisKKyN1bmRlZiBDRkdfRUJDX1BCMEFQCisjdW5kZWYgQ0ZHX0VCQ19QQjBDUgorCisjdW5kZWYgQ0ZHX0VCQ19QQjFBUAorI3VuZGVmIENGR19FQkNfUEIxQ1IKKworI3VuZGVmIENGR19FQkNfUEIyQVAKKyN1bmRlZiBDRkdfRUJDX1BCMkNSCisKKyN1bmRlZiBDRkdfRUJDX1BCM0FQCisjdW5kZWYgQ0ZHX0VCQ19QQjNDUgorCisjdW5kZWYgQ0ZHX0VCQ19QQjRBUAorI3VuZGVmIENGR19FQkNfUEI0Q1IKKworI3VuZGVmIENGR19FQkNfUEI1QVAKKyN1bmRlZiBDRkdfRUJDX1BCNUNSCisKKyN1bmRlZiBDRkdfRUJDX1BCNkFQCisjdW5kZWYgQ0ZHX0VCQ19QQjZDUgorCisjdW5kZWYgQ0ZHX0VCQ19QQjdBUAorI3VuZGVmIENGR19FQkNfUEI3Q1IKKworI2RlZmluZSBDT05GSUdfU0RSQU1fQkFOSzAJLyogdXNlIHRoZSBzdGFuZGFyZCBTRFJBTSBpbml0aWFsaXphdGlvbiAqLworI3VuZGVmIENPTkZJR19TUERfRUVQUk9NCisKKy8qCisgKiBEZWZpbmUgdGhpcyB0byBnZXQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBzeXN0ZW0gY29uZmlndXJhdGlvbgorICovCisvKiAjZGVmaW5lIFNDM19ERUJVR09VVCAqLworI3VuZGVmIFNDM19ERUJVR09VVAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEV4dGVybmFsIHBlcmlwaGVyYWwgYmFzZSBhZGRyZXNzCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgQ0ZHX0lTQV9NRU1fQkFTRV9BRERSRVNTIDB4NzgwMDAwMDAKKy8qCisgRGllIEdyYWZpay1UcmVpYmVyIGdyZWlmZW4g/GJlciBkaWUgQWRyZXNzZSBpbiBkaWVzZW0gTWFjcm8gYXVmIGRlbiBDaGlwIHp1LgorIERhcyBmdW5rdGlvbmllcnQgYmVpIGRlcmVuIEthcnRlbiwgd2VpbCBzaWUgZWluZSBQQ0ktQnJpZGdlIGJlbnV0emVuLCBkaWUKKyBkYXMgZ2xlaWNoZSBNYXBwaW5nIGR1cmNoZvxocmVuIGthbm4sIHdpZSBkZXIgU0M1MjAgKGFsc28gQXVmdGVpbGVuIHZvbiBJTy1adWdyaWZmZW4KKyBhdWYgSVNBLSB1bmQgUENJLVp5a2xlbikKKyAqLworI2RlZmluZSBDRkdfSVNBX0lPX0JBU0VfQUREUkVTUyAgMHhFODAwMDAwMAorLyojZGVmaW5lIENGR19JU0FfSU9fQkFTRV9BRERSRVNTICAweDc5MDAwMDAwICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFZpZGVvIHN1cHBvcnQKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBVU0VfVkdBX0dSQVBISUNTCisjZGVmaW5lIENPTkZJR19WSURFTwkJLyogVG8gZW5hYmxlIHZpZGVvIGNvbnRyb2xsZXIgc3VwcG9ydCAqLworI2RlZmluZSBDT05GSUdfVklERU9fQ1Q2OTAwMAorI2RlZmluZSBDT05GSUdfQ0ZCX0NPTlNPTEUKKy8qICNkZWZpbmUgQ09ORklHX1ZJREVPX0xPR08gKi8KKyNkZWZpbmUgQ09ORklHX1ZHQV9BU19TSU5HTEVfREVWSUNFCisjZGVmaW5lIENPTkZJR19WSURFT19TV19DVVJTT1IKKy8qICNkZWZpbmUgQ09ORklHX1ZJREVPX0hXX0NVUlNPUiAqLworI2RlZmluZSBDT05GSUdfVklERU9fT05CT0FSRAkvKiBWaWRlbyBjb250cm9sbGVyIGlzIG9uLWJvYXJkICovCisKKyNkZWZpbmUgVklERU9fSFdfUkVDVEZJTEwKKyNkZWZpbmUgVklERU9fSFdfQklUQkxUCisKKyNlbmRpZgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBJZGVudAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgQ09ORklHX1NDM19WRVJTSU9OICJyMS40IgorCisjZGVmaW5lIFBPU1RfT1VUKHgpICgqKCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyKikoMHg3OTAwMDA4MCkpPXgpCisKKyNlbmRpZgkvKiBfX0NPTkZJR19IICovCg==