LyoKICogRGVmaW5pdGlvbnMgZm9yIHRoZSBGVERJIFVTQiBTaW5nbGUgUG9ydCBTZXJpYWwgQ29udmVydGVyIC0gCiAqIGtub3duIGFzIEZURElfU0lPIChTZXJpYWwgSW5wdXQvT3V0cHV0IGFwcGxpY2F0aW9uIG9mIHRoZSBjaGlwc2V0KSAKICoKICogVGhlIGV4YW1wbGUgSSBoYXZlIGlzIGtub3duIGFzIHRoZSBVU0MtMTAwMCB3aGljaCBpcyBhdmFpbGFibGUgZnJvbQogKiBodHRwOi8vd3d3LmRzZS5jby5ueiAtIGNhdCBubyBYSDQyMTQgSXQgbG9va3Mgc2ltaWxhciB0byB0aGlzOgogKiBodHRwOi8vd3d3LmRhbnNkYXRhLmNvbS91c2JzZXIuaHRtIGJ1dCBJIGNhbid0IGJlIHN1cmUgVGhlcmUgYXJlIG90aGVyCiAqIFVTQy0xMDAwcyB3aGljaCBkb24ndCBsb29rIGxpa2UgbXkgZGV2aWNlIHRob3VnaCBzbyBiZXdhcmUhCiAqCiAqIFRoZSBkZXZpY2UgaXMgYmFzZWQgb24gdGhlIEZUREkgRlQ4VTEwMEFYIGNoaXAuIEl0IGhhcyBhIERCMjUgb24gb25lIHNpZGUsIAogKiBVU0Igb24gdGhlIG90aGVyLgogKgogKiBUaGFueCB0byBGVERJIChodHRwOi8vd3d3LmZ0ZGkuY28udWspIGZvciBzbyBraW5kbHkgcHJvdmlkaW5nIGRldGFpbHMKICogb2YgdGhlIHByb3RvY29sIHJlcXVpcmVkIHRvIHRhbGsgdG8gdGhlIGRldmljZSBhbmQgb25nb2luZyBhc3Npc3RlbmNlCiAqIGR1cmluZyBkZXZlbG9wbWVudC4KICoKICogQmlsbCBSeWRlciAtIGJyeWRlckBzZ2kuY29tIGZvcm1lcmx5IG9mIFNpbGljb24gR3JhcGhpY3MsIEluYy4tIHdyb3RlIHRoZSAKICogRlRESV9TSU8gaW1wbGVtZW50YXRpb24uCiAqCiAqIFBoaWxpcHAgR/xocmluZyAtIHBnQGZ1dHVyZXdhcmUuYXQgLSBhZGRlZCB0aGUgRGV2aWNlIElEIG9mIHRoZSBVU0IgcmVsYWlzCiAqIGZyb20gUnVkb2xmIEd1Z2xlcgogKgogKi8KCiNkZWZpbmUgRlRESV9WSUQJMHgwNDAzCS8qIFZlbmRvciBJZCAqLwojZGVmaW5lIEZURElfU0lPX1BJRAkweDgzNzIJLyogUHJvZHVjdCBJZCBTSU8gYXBwbGljYXRpb24gb2YgOFUxMDBBWCAgKi8KI2RlZmluZSBGVERJXzhVMjMyQU1fUElEIDB4NjAwMSAvKiBTaW1pbGFyIGRldmljZSB0byBTSU8gYWJvdmUgKi8KI2RlZmluZSBGVERJXzhVMjMyQU1fQUxUX1BJRCAweDYwMDYgLyogRlRESSdzIGFsdGVybmF0ZSBQSUQgZm9yIGFib3ZlICovCiNkZWZpbmUgRlRESV84VTIyMzJDX1BJRCAweDYwMTAgLyogRHVhbCBjaGFubmVsIGRldmljZSAqLwojZGVmaW5lIEZURElfMjMyUkxfUElEICAweEZCRkEgIC8qIFByb2R1Y3QgSUQgZm9yIEZUMjMyUkwgKi8KI2RlZmluZSBGVERJX1JFTEFJU19QSUQJMHhGQTEwICAvKiBSZWxhaXMgZGV2aWNlIGZyb20gUnVkb2xmIEd1Z2xlciAqLwojZGVmaW5lIEZURElfTkZfUklDX1ZJRAkweDBEQ0QJLyogVmVuZG9yIElkICovCiNkZWZpbmUgRlRESV9ORl9SSUNfUElECTB4MDAwMQkvKiBQcm9kdWN0IElkICovCiNkZWZpbmUgRlRESV9VU0JYXzcwN19QSUQgMHhGODU3CS8qIEFEU1RlY2ggSVIgQmxhc3RlciBVU0JYLTcwNyAqLwoKCi8qIHd3dy5jYW51c2IuY29tIExhd2ljZWwgQ0FOVVNCIGRldmljZSAqLwojZGVmaW5lIEZURElfQ0FOVVNCX1BJRCAweEZGQTggLyogUHJvZHVjdCBJZCAqLwoKLyogQWxwaGFNaWNybyBDb21wb25lbnRzIEFNQy0yMzJVU0IwMSBkZXZpY2UgKi8KI2RlZmluZSBGVERJX0FNQzIzMl9QSUQgMHhGRjAwIC8qIFByb2R1Y3QgSWQgKi8KCi8qIEFDVCBTb2x1dGlvbnMgSG9tZVBybyBaV2F2ZSBpbnRlcmZhY2UgKGh0dHA6Ly93d3cuYWN0LXNvbHV0aW9ucy5jb20vSG9tZVByby5odG0pICovCiNkZWZpbmUgRlRESV9BQ1RaV0FWRV9QSUQJMHhGMkQwCgoKLyogd3d3LnN0YXJ0aW5nLXBvaW50LXN5c3RlbXMuY29tILVDaGFtZWxlb24gZGV2aWNlICovCiNkZWZpbmUgRlRESV9NSUNST19DSEFNRUxFT05fUElECTB4Q0FBMAkvKiBQcm9kdWN0IElkICovCgovKiB3d3cuaXJ0cmFucy5kZSBkZXZpY2UgKi8KI2RlZmluZSBGVERJX0lSVFJBTlNfUElEIDB4RkM2MCAvKiBQcm9kdWN0IElkICovCgoKLyogd3d3LnRob3VnaHR0ZWNobm9sb2d5LmNvbS8gVFQtVVNCIHByb3ZpZGUgd2l0aCBwcm9jb21wIHVzZSBmdGRpX3NpbyAqLwojZGVmaW5lIEZURElfVFRVU0JfUElEIDB4RkYyMCAvKiBQcm9kdWN0IElkICovCgovKiBpUGx1cyBkZXZpY2UgKi8KI2RlZmluZSBGVERJX0lQTFVTX1BJRCAweEQwNzAgLyogUHJvZHVjdCBJZCAqLwoKLyogRE1YNEFMTCBETVggSW50ZXJmYWNlcyAqLwojZGVmaW5lIEZURElfRE1YNEFMTCAweEM4NTAKCi8qIHd3dy5jcnlzdGFsZm9udHouY29tIGRldmljZXMgLSB0aGFueCBmb3IgcHJvdmlkaW5nIGZyZWUgZGV2aWNlcyBmb3IgZXZhbHVhdGlvbiAhICovCi8qIHRoZXkgdXNlIHRoZSBmdGRpIGNoaXBzZXQgZm9yIHRoZSBVU0IgaW50ZXJmYWNlIGFuZCB0aGUgdmVuZG9yIGlkIGlzIHRoZSBzYW1lICovCiNkZWZpbmUgRlRESV9YRl82MzJfUElEIDB4RkMwOAkvKiA2MzI6IDE2eDIgQ2hhcmFjdGVyIERpc3BsYXkgKi8KI2RlZmluZSBGVERJX1hGXzYzNF9QSUQgMHhGQzA5CS8qIDYzNDogMjB4NCBDaGFyYWN0ZXIgRGlzcGxheSAqLwojZGVmaW5lIEZURElfWEZfNTQ3X1BJRCAweEZDMEEJLyogNTQ3OiBUd28gbGluZSBEaXNwbGF5ICovCiNkZWZpbmUgRlRESV9YRl82MzNfUElEIDB4RkMwQgkvKiA2MzM6IDE2eDIgQ2hhcmFjdGVyIERpc3BsYXkgd2l0aCBLZXlzICovCiNkZWZpbmUgRlRESV9YRl82MzFfUElEIDB4RkMwQwkvKiA2MzE6IDIweDIgQ2hhcmFjdGVyIERpc3BsYXkgKi8KI2RlZmluZSBGVERJX1hGXzYzNV9QSUQgMHhGQzBECS8qIDYzNTogMjB4NCBDaGFyYWN0ZXIgRGlzcGxheSAqLwojZGVmaW5lIEZURElfWEZfNjQwX1BJRCAweEZDMEUJLyogNjQwOiBUd28gbGluZSBEaXNwbGF5ICovCiNkZWZpbmUgRlRESV9YRl82NDJfUElEIDB4RkMwRgkvKiA2NDI6IFR3byBsaW5lIERpc3BsYXkgKi8KCi8qIFZpZGVvIE5ldHdvcmtzIExpbWl0ZWQgLyBIb21lY2hvaWNlIGluIHRoZSBVSyB1c2UgYW4gZnRkaS1iYXNlZCBkZXZpY2UgZm9yIHRoZWlyIDFNYiAqLwovKiBicm9hZGJhbmQgaW50ZXJuZXQgc2VydmljZS4gIFRoZSBmb2xsb3dpbmcgUElEIGlzIGV4aGliaXRlZCBieSB0aGUgdXNiIGRldmljZSBzdXBwbGllZCAqLwovKiAodGhlIFZJRCBpcyB0aGUgc3RhbmRhcmQgZnRkaSB2aWQgKEZURElfVklEKSAqLwojZGVmaW5lIEZURElfVk5IQ1BDVVNCX0RfUElEIDB4ZmUzOCAvKiBQcm9kdWN0IElkICovCgovKgogKiBQQ0RKIHVzZSBmdGRpIGJhc2VkIGRqLWNvbnRyb2xsZXJzLiAgVGhlIGZvbGxvd2luZyBQSUQgaXMgZm9yIHRoZWlyIERBQy0yIGRldmljZQogKiBodHRwOi8vd3d3LnBjZGpoYXJkd2FyZS5jb20vREFDMi5hc3AgKFBJRCBzZW50IGJ5IFdvdXRlciBQYWVzZW4pCiAqICh0aGUgVklEIGlzIHRoZSBzdGFuZGFyZCBmdGRpIHZpZCAoRlRESV9WSUQpICovCiNkZWZpbmUgRlRESV9QQ0RKX0RBQzJfUElEIDB4RkE4OAoKLyoKICogVGhlIGZvbGxvd2luZyBhcmUgdGhlIHZhbHVlcyBmb3IgdGhlIE1hdHJpeCBPcmJpdGFsIExDRCBkaXNwbGF5cywKICogd2hpY2ggYXJlIHRoZSBGVDIzMkJNICggc2ltaWxhciB0byB0aGUgOFUyMzJBTSApCiAqLwojZGVmaW5lIEZURElfTVRYT1JCXzBfUElEICAgICAgMHhGQTAwICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCiNkZWZpbmUgRlRESV9NVFhPUkJfMV9QSUQgICAgICAweEZBMDEgIC8qIE1hdHJpeCBPcmJpdGFsIFByb2R1Y3QgSWQgKi8KI2RlZmluZSBGVERJX01UWE9SQl8yX1BJRCAgICAgIDB4RkEwMiAgLyogTWF0cml4IE9yYml0YWwgUHJvZHVjdCBJZCAqLwojZGVmaW5lIEZURElfTVRYT1JCXzNfUElEICAgICAgMHhGQTAzICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCiNkZWZpbmUgRlRESV9NVFhPUkJfNF9QSUQgICAgICAweEZBMDQgIC8qIE1hdHJpeCBPcmJpdGFsIFByb2R1Y3QgSWQgKi8KI2RlZmluZSBGVERJX01UWE9SQl81X1BJRCAgICAgIDB4RkEwNSAgLyogTWF0cml4IE9yYml0YWwgUHJvZHVjdCBJZCAqLwojZGVmaW5lIEZURElfTVRYT1JCXzZfUElEICAgICAgMHhGQTA2ICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCgovKiBJbnRlcmJpb21ldHJpY3MgVVNCIEkvTyBCb2FyZCAqLwovKiBEZXZlbG9wZWQgZm9yIEludGVyYmlvbWV0cmljcyBieSBSdWRvbGYgR3VnbGVyICovCiNkZWZpbmUgSU5URVJCSU9NRVRSSUNTX1ZJRCAgICAgICAgICAgICAgMHgxMjA5CiNkZWZpbmUgSU5URVJCSU9NRVRSSUNTX0lPQk9BUkRfUElEICAgICAgMHgxMDAyCiNkZWZpbmUgSU5URVJCSU9NRVRSSUNTX01JTklfSU9CT0FSRF9QSUQgMHgxMDA2CgovKgogKiBUaGUgZm9sbG93aW5nIGFyZSB0aGUgdmFsdWVzIGZvciB0aGUgUGVybGUgU3lzdGVtcwogKiBVbHRyYVBvcnQgVVNCIHNlcmlhbCBjb252ZXJ0ZXJzCiAqLwojZGVmaW5lIEZURElfUEVSTEVfVUxUUkFQT1JUX1BJRCAweEYwQzAJLyogUGVybGUgVWx0cmFQb3J0IFByb2R1Y3QgSWQgKi8KCi8qCiAqIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSB2YWx1ZXMgZm9yIHRoZSBTZWFsZXZlbCBTZWFMSU5LKyBhZGFwdGVycy4KICogKE9yaWdpbmFsIGxpc3Qgc2VudCBieSBUdWFuIEhvYW5nLiAgSWFuIEFiYm90dCByZW5hbWVkIHRoZSBtYWNyb3MgYW5kCiAqIHJlbW92ZWQgc29tZSBQSURzIHRoYXQgZG9uJ3Qgc2VlbSB0byBtYXRjaCBhbnkgZXhpc3RpbmcgcHJvZHVjdHMuKQogKi8KI2RlZmluZSBTRUFMRVZFTF9WSUQJCTB4MGM1MgkvKiBTZWFsZXZlbCBWZW5kb3IgSUQgKi8KI2RlZmluZSBTRUFMRVZFTF8yMTAxX1BJRAkweDIxMDEJLyogU2VhTElOSysyMzIgKDIxMDEvMjEwNSkgKi8KI2RlZmluZSBTRUFMRVZFTF8yMTAyX1BJRAkweDIxMDIJLyogU2VhTElOSys0ODUgKDIxMDIpICovCiNkZWZpbmUgU0VBTEVWRUxfMjEwM19QSUQJMHgyMTAzCS8qIFNlYUxJTksrMjMySSAoMjEwMykgKi8KI2RlZmluZSBTRUFMRVZFTF8yMTA0X1BJRAkweDIxMDQJLyogU2VhTElOSys0ODVJICgyMTA0KSAqLwojZGVmaW5lIFNFQUxFVkVMXzIxMDZfUElECTB4OTAyMAkvKiBTZWFMSU5LKzQyMiAoMjEwNikgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAxXzFfUElECTB4MjIxMQkvKiBTZWFQT1JUKzIvMjMyICgyMjAxKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAxXzJfUElECTB4MjIyMQkvKiBTZWFQT1JUKzIvMjMyICgyMjAxKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAyXzFfUElECTB4MjIxMgkvKiBTZWFQT1JUKzIvNDg1ICgyMjAyKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAyXzJfUElECTB4MjIyMgkvKiBTZWFQT1JUKzIvNDg1ICgyMjAyKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAzXzFfUElECTB4MjIxMwkvKiBTZWFQT1JUKzIgKDIyMDMpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzIyMDNfMl9QSUQJMHgyMjIzCS8qIFNlYVBPUlQrMiAoMjIwMykgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMV8xX1BJRAkweDI0MTEJLyogU2VhUE9SVCs0LzIzMiAoMjQwMSkgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMV8yX1BJRAkweDI0MjEJLyogU2VhUE9SVCs0LzIzMiAoMjQwMSkgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMV8zX1BJRAkweDI0MzEJLyogU2VhUE9SVCs0LzIzMiAoMjQwMSkgUG9ydCAzICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMV80X1BJRAkweDI0NDEJLyogU2VhUE9SVCs0LzIzMiAoMjQwMSkgUG9ydCA0ICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMl8xX1BJRAkweDI0MTIJLyogU2VhUE9SVCs0LzQ4NSAoMjQwMikgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMl8yX1BJRAkweDI0MjIJLyogU2VhUE9SVCs0LzQ4NSAoMjQwMikgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMl8zX1BJRAkweDI0MzIJLyogU2VhUE9SVCs0LzQ4NSAoMjQwMikgUG9ydCAzICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMl80X1BJRAkweDI0NDIJLyogU2VhUE9SVCs0LzQ4NSAoMjQwMikgUG9ydCA0ICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwM18xX1BJRAkweDI0MTMJLyogU2VhUE9SVCs0ICgyNDAzKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAzXzJfUElECTB4MjQyMwkvKiBTZWFQT1JUKzQgKDI0MDMpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDNfM19QSUQJMHgyNDMzCS8qIFNlYVBPUlQrNCAoMjQwMykgUG9ydCAzICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwM180X1BJRAkweDI0NDMJLyogU2VhUE9SVCs0ICgyNDAzKSBQb3J0IDQgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzFfUElECTBYMjgxMQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzJfUElECTBYMjgyMQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzNfUElECTBYMjgzMQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDMgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzRfUElECTBYMjg0MQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDQgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzVfUElECTBYMjg1MQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDUgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzZfUElECTBYMjg2MQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDYgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzdfUElECTBYMjg3MQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDcgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzhfUElECTBYMjg4MQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDggKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzFfUElECTBYMjgxMgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzJfUElECTBYMjgyMgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzNfUElECTBYMjgzMgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDMgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzRfUElECTBYMjg0MgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDQgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzVfUElECTBYMjg1MgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDUgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzZfUElECTBYMjg2MgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDYgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzdfUElECTBYMjg3MgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDcgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzhfUElECTBYMjg4MgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDggKi8KI2RlZmluZSBTRUFMRVZFTF8yODAzXzFfUElECTBYMjgxMwkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfMl9QSUQJMFgyODIzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfM19QSUQJMFgyODMzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgMyAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfNF9QSUQJMFgyODQzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgNCAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfNV9QSUQJMFgyODUzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgNSAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfNl9QSUQJMFgyODYzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgNiAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfN19QSUQJMFgyODczIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgNyAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfOF9QSUQJMFgyODgzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgOCAqLwoKLyoKICogVGhlIGZvbGxvd2luZyBhcmUgdGhlIHZhbHVlcyBmb3IgdHdvIEtPQklMIGNoaXBjYXJkIHRlcm1pbmFscy4KICovCiNkZWZpbmUgS09CSUxfVklECQkweDBkNDYJLyogS09CSUwgVmVuZG9yIElEICovCiNkZWZpbmUgS09CSUxfQ09OVl9CMV9QSUQJMHgyMDIwCS8qIEtPQklMIEtvbnZlcnRlciBmb3IgQjEgKi8KI2RlZmluZSBLT0JJTF9DT05WX0tBQU5fUElECTB4MjAyMQkvKiBLT0JJTF9Lb252ZXJ0ZXIgZm9yIEtBQU4gKi8KCi8qCiAqIEljb20gSUQtMSBkaWdpdGFsIHRyYW5zY2VpdmVyCiAqLwoKI2RlZmluZSBJQ09NX0lEMV9WSUQgICAgICAgICAgICAweDBDMjYKI2RlZmluZSBJQ09NX0lEMV9QSUQgICAgICAgICAgICAweDAwMDQKCi8qCiAqIEFTSy5mciBkZXZpY2VzCiAqLwojZGVmaW5lIEZURElfQVNLX1JEUjQwMF9QSUQJMHhDOTkxCS8qIEFTSyBSRFIgNDAwIHNlcmllcyBjYXJkIHJlYWRlciAqLwoKLyoKICogRlRESSBVU0IgVUFSVCBjaGlwcyB1c2VkIGluIGNvbnN0cnVjdGlvbiBwcm9qZWN0cyBmcm9tIHRoZQogKiBFbGVrdG9yIEVsZWN0cm9uaWNzIG1hZ2F6aW5lIChodHRwOi8vZWxla3Rvci1lbGVjdHJvbmljcy5jby51aykKICovCiNkZWZpbmUgRUxFS1RPUl9WSUQJCTB4MEM3RAojZGVmaW5lIEVMRUtUT1JfRlQzMjNSX1BJRAkweDAwMDUJLyogUkZJRC1SZWFkZXIsIGlzc3VlIDA5LTIwMDYgKi8KCi8qCiAqIERTUy0yMCBTeW5jIFN0YXRpb24gZm9yIFNvbnkgRXJpY3Nzb24gUDgwMAogKi8KI2RlZmluZSBGVERJX0RTUzIwX1BJRCAgICAgICAgICAweEZDODIgIAoKLyoKICogSG9tZSBFbGVjdHJvbmljcyAod3d3LmhvbWUtZWxlY3Ryby5jb20pIFVTQiBnYWRnZXRzCiAqLwojZGVmaW5lIEZURElfSEVfVElSQTFfUElECTB4RkE3OAkvKiBUaXJhLTEgSVIgdHJhbnNjZWl2ZXIgKi8KCi8qIFVTQi1VSVJUIC0gQW4gaW5mcmFyZWQgcmVjZWl2ZXIgYW5kIHRyYW5zbWl0dGVyIHVzaW5nIHRoZSA4VTIzMkFNIGNoaXAgKi8KLyogaHR0cDovL2hvbWUuZWFydGhsaW5rLm5ldC9+anJoZWVzL1VTQlVJUlQvaW5kZXguaHRtICovCiNkZWZpbmUgRlRESV9VU0JfVUlSVF9QSUQJMHhGODUwCS8qIFByb2R1Y3QgSWQgKi8KCi8qIFROQy1YIFVTQi10by1wYWNrZXQtcmFkaW8gYWRhcHRlciwgdmVyc2lvbnMgcHJpb3IgdG8gMy4wIChETFAgbW9kdWxlKSAqLwoKI2RlZmluZSBGVERJX1ROQ19YX1BJRAkJMHhFQkUwCgovKgogKiBFTFYgVVNCIGRldmljZXMgc3VibWl0dGVkIGJ5IENocmlzdGlhbiBBYnQgb2YgRUxWICh3d3cuZWx2LmRlKS4KICogQWxsIG9mIHRoZXNlIGRldmljZXMgdXNlIEZUREkncyB2ZW5kb3IgSUQgKDB4MDQwMykuCiAqCiAqIFRoZSBwcmV2aW91c2x5IGluY2x1ZGVkIFBJRCBmb3IgdGhlIFVPIDEwMCBtb2R1bGUgd2FzIGluY29ycmVjdC4KICogSW4gZmFjdCwgdGhhdCBQSUQgd2FzIGZvciBFTFYncyBVUiAxMDAgVVNCLVJTMjMyIGNvbnZlcnRlciAoMHhGQjU4KS4KICoKICogQXJtaW4gTGFldWdlciBvcmlnaW5hbGx5IHNlbnQgdGhlIFBJRCBmb3IgdGhlIFVNIDEwMCBtb2R1bGUuCiAqLwojZGVmaW5lIEZURElfRUxWX1VSMTAwX1BJRAkweEZCNTgJLyogVVNCLVJTMjMyLVVtc2V0emVyIChVUiAxMDApICovCiNkZWZpbmUgRlRESV9FTFZfVU0xMDBfUElECTB4RkI1QQkvKiBVU0ItTW9kdWwgVU0gMTAwICovCiNkZWZpbmUgRlRESV9FTFZfVU8xMDBfUElECTB4RkI1QgkvKiBVU0ItTW9kdWwgVU8gMTAwICovCiNkZWZpbmUgRlRESV9FTFZfQUxDODUwMF9QSUQJMHhGMDZFCS8qIEFMQyA4NTAwIEV4cGVydCAqLwovKiBBZGRpdGlvbmFsIEVMViBQSURzIHRoYXQgZGVmYXVsdCB0byB1c2luZyB0aGUgRlRESSBEMlhYIGRyaXZlcnMgb24KICogTVMgV2luZG93cywgcmF0aGVyIHRoYW4gdGhlIEZUREkgVmlydHVhbCBDb20gUG9ydCBkcml2ZXJzLgogKiBNYXliZSB0aGVzZSB3aWxsIGJlIGVhc2llciB0byB1c2Ugd2l0aCB0aGUgbGliZnRkaS9saWJ1c2IgdXNlci1zcGFjZQogKiBkcml2ZXJzLCBvciBwb3NzaWJseSB0aGUgQ29tZWRpIGRyaXZlcnMgaW4gc29tZSBjYXNlcy4gKi8KI2RlZmluZSBGVERJX0VMVl9DTEk3MDAwX1BJRAkweEZCNTkJLyogQ29tcHV0ZXItTGlnaHQtSW50ZXJmYWNlIChDTEkgNzAwMCkgKi8KI2RlZmluZSBGVERJX0VMVl9QUFM3MzMwX1BJRAkweEZCNUMJLyogUHJvY2Vzc29yLVBvd2VyLVN1cHBseSAoUFBTIDczMzApICovCiNkZWZpbmUgRlRESV9FTFZfVEZNMTAwX1BJRAkweEZCNUQJLyogVGVtcGVyYXJ0dXItRmV1Y2h0ZSBNZXNzZ2VyYWV0IChURk0gMTAwKSAqLwojZGVmaW5lIEZURElfRUxWX1VERjc3X1BJRAkweEZCNUUJLyogVVNCIERDRiBGdW5rdXJoIChVREYgNzcpICovCiNkZWZpbmUgRlRESV9FTFZfVUlPODhfUElECTB4RkI1RgkvKiBVU0ItSS9PIEludGVyZmFjZSAoVUlPIDg4KSAqLwojZGVmaW5lIEZURElfRUxWX1VBRDhfUElECTB4RjA2OAkvKiBVU0ItQUQtV2FuZGxlciAoVUFEIDgpICovCiNkZWZpbmUgRlRESV9FTFZfVURBN19QSUQJMHhGMDY5CS8qIFVTQi1EQS1XYW5kbGVyIChVREEgNykgKi8KI2RlZmluZSBGVERJX0VMVl9VU0kyX1BJRAkweEYwNkEJLyogVVNCLVNjaHJpdHRtb3RvcmVuLUludGVyZmFjZSAoVVNJIDIpICovCiNkZWZpbmUgRlRESV9FTFZfVDExMDBfUElECTB4RjA2QgkvKiBUaGVybW9tZXRlciAoVCAxMTAwKSAqLwojZGVmaW5lIEZURElfRUxWX1BDRDIwMF9QSUQJMHhGMDZDCS8qIFBDLURhdGVubG9nZ2VyIChQQ0QgMjAwKSAqLwojZGVmaW5lIEZURElfRUxWX1VMQTIwMF9QSUQJMHhGMDZECS8qIFVTQi1MQ0QtQW5zdGV1ZXJ1bmcgKFVMQSAyMDApICovCiNkZWZpbmUgRlRESV9FTFZfRkhaMTAwMFBDX1BJRAkweEYwNkYJLyogRkhaIDEwMDAgUEMgKi8KI2RlZmluZSBGVERJX0VMVl9DU0k4X1BJRAkweEUwRjAJLyogQ29tcHV0ZXItU2NoYWx0LUludGVyZmFjZSAoQ1NJIDgpICovCiNkZWZpbmUgRlRESV9FTFZfRU0xMDAwRExfUElECTB4RTBGMQkvKiBQQy1EYXRlbmxvZ2dlciBmdWVyIEVuZXJnaWVtb25pdG9yIChFTSAxMDAwIERMKSAqLwojZGVmaW5lIEZURElfRUxWX1BDSzEwMF9QSUQJMHhFMEYyCS8qIFBDLUthYmVsdGVzdGVyIChQQ0sgMTAwKSAqLwojZGVmaW5lIEZURElfRUxWX1JGUDUwMF9QSUQJMHhFMEYzCS8qIEhGLUxlaXN0dW5nc21lc3NlciAoUkZQIDUwMCkgKi8KI2RlZmluZSBGVERJX0VMVl9GUzIwU0lHX1BJRAkweEUwRjQJLyogU2lnbmFsZ2ViZXIgKEZTIDIwIFNJRykgKi8KI2RlZmluZSBGVERJX0VMVl9XUzMwMFBDX1BJRAkweEUwRjYJLyogUEMtV2V0dGVyc3RhdGlvbiAoV1MgMzAwIFBDKSAqLwojZGVmaW5lIEZURElfRUxWX0ZIWjEzMDBQQ19QSUQJMHhFMEU4CS8qIEZIWiAxMzAwIFBDICovCiNkZWZpbmUgRlRESV9FTFZfV1M1MDBfUElECTB4RTBFOQkvKiBQQy1XZXR0ZXJzdGF0aW9uIChXUyA1MDApICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgSUQgVEVDSCAod3d3LmlkdC1uZXQuY29tKSBkZXZpY2VzCiAqLwojZGVmaW5lIElEVEVDSF9WSUQJCTB4MEFDRAkvKiBJRCBURUNIIFZlbmRvciBJRCAqLwojZGVmaW5lIElEVEVDSF9JRFQxMjIxVV9QSUQJMHgwMzAwCS8qIElEVDEyMjFVIFVTQiB0byBSUy0yMzIgYWRhcHRlciAqLwoKLyoKICogRGVmaW5pdGlvbnMgZm9yIE9tbmlkaXJlY3Rpb25hbCBDb250cm9sIFRlY2hub2xvZ3ksIEluYy4gZGV2aWNlcwogKi8KI2RlZmluZSBPQ1RfVklECQkJMHgwQjM5CS8qIE9DVCB2ZW5kb3IgSUQgKi8KLyogTm90ZTogT0NUIFVTMTAxIGlzIGFsc28gcmViYWRnZWQgYXMgRGljayBTbWl0aCBFbGVjdHJvbmljcyAoTlopIFhINjM4MSAqLwovKiBBbHNvIHJlYmFkZ2VkIGFzIERpY2sgU21pdGggRWxlY3Ryb25pY3MgKEF1cykgWEg2NDUxICovCi8qIEFsc28gcmViYWRnZWQgYXMgU0lJRyBJbmMuIG1vZGVsIFVTMjMwOCBoYXJkd2FyZSB2ZXJzaW9uIDEgKi8KI2RlZmluZSBPQ1RfVVMxMDFfUElECQkweDA0MjEJLyogT0NUIFVTMTAxIFVTQiB0byBSUy0yMzIgKi8KCi8qIGFuIGluZnJhcmVkIHJlY2VpdmVyIGZvciB1c2VyIGFjY2VzcyBjb250cm9sIHdpdGggSVIgdGFncyAqLwojZGVmaW5lIEZURElfUElFR1JPVVBfUElECTB4RjIwOAkvKiBQcm9kdWN0IElkICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgQXJ0ZW1pcyBhc3Ryb25vbWljYWwgVVNCIGJhc2VkIGNhbWVyYXMKICogQ2hlY2sgaXQgYXQgaHR0cDovL3d3dy5hcnRlbWlzY2NkLmNvLnVrLwogKi8KI2RlZmluZSBGVERJX0FSVEVNSVNfUElECTB4REYyOAkvKiBBbGwgQXJ0ZW1pcyBDYW1lcmFzICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgQVRJSyBJbnN0cnVtZW50cyBhc3Ryb25vbWljYWwgVVNCIGJhc2VkIGNhbWVyYXMKICogQ2hlY2sgaXQgYXQgaHR0cDovL3d3dy5hdGlrLWluc3RydW1lbnRzLmNvbS8KICovCiNkZWZpbmUgRlRESV9BVElLX0FUSzE2X1BJRAkweERGMzAJLyogQVRJSyBBVEstMTYgR3JheXNjYWxlIENhbWVyYSAqLwojZGVmaW5lIEZURElfQVRJS19BVEsxNkNfUElECTB4REYzMgkvKiBBVElLIEFUSy0xNkMgQ29sb3VyIENhbWVyYSAqLwojZGVmaW5lIEZURElfQVRJS19BVEsxNkhSX1BJRAkweERGMzEJLyogQVRJSyBBVEstMTZIUiBHcmF5c2NhbGUgQ2FtZXJhICovCiNkZWZpbmUgRlRESV9BVElLX0FUSzE2SFJDX1BJRAkweERGMzMJLyogQVRJSyBBVEstMTZIUkMgQ29sb3VyIENhbWVyYSAqLwoKLyoKICogUHJvdGVnbyBwcm9kdWN0IGlkcwogKi8KI2RlZmluZSBQUk9URUdPX1NQRUNJQUxfMQkweEZDNzAJLyogc3BlY2lhbC91bmtub3duIGRldmljZSAqLwojZGVmaW5lIFBST1RFR09fUjJYMAkJMHhGQzcxCS8qIFIyMDAtVVNCIFRSTkcgdW5pdCAoUjIxMCwgUjIyMCwgYW5kIFIyMzApICovCiNkZWZpbmUgUFJPVEVHT19TUEVDSUFMXzMJMHhGQzcyCS8qIHNwZWNpYWwvdW5rbm93biBkZXZpY2UgKi8KI2RlZmluZSBQUk9URUdPX1NQRUNJQUxfNAkweEZDNzMJLyogc3BlY2lhbC91bmtub3duIGRldmljZSAqLwoKLyoKICogR3VkZSBBbmFsb2ctIHVuZCBEaWdpdGFsc3lzdGVtZSBHbWJICiAqLwojZGVmaW5lIEZURElfR1VERUFEU19FODA4X1BJRCAgICAweEU4MDgKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwOV9QSUQgICAgMHhFODA5CiNkZWZpbmUgRlRESV9HVURFQURTX0U4MEFfUElEICAgIDB4RTgwQQojZGVmaW5lIEZURElfR1VERUFEU19FODBCX1BJRCAgICAweEU4MEIKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwQ19QSUQgICAgMHhFODBDCiNkZWZpbmUgRlRESV9HVURFQURTX0U4MERfUElEICAgIDB4RTgwRAojZGVmaW5lIEZURElfR1VERUFEU19FODBFX1BJRCAgICAweEU4MEUKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwRl9QSUQgICAgMHhFODBGCiNkZWZpbmUgRlRESV9HVURFQURTX0U4ODhfUElEICAgIDB4RTg4OCAgLyogRXhwZXJ0IElTRE4gQ29udHJvbCBVU0IgKi8KI2RlZmluZSBGVERJX0dVREVBRFNfRTg4OV9QSUQgICAgMHhFODg5ICAvKiBVU0IgUlMtMjMyIE9wdG9CcmlkZ2UgKi8KI2RlZmluZSBGVERJX0dVREVBRFNfRTg4QV9QSUQgICAgMHhFODhBCiNkZWZpbmUgRlRESV9HVURFQURTX0U4OEJfUElEICAgIDB4RTg4QgojZGVmaW5lIEZURElfR1VERUFEU19FODhDX1BJRCAgICAweEU4OEMKI2RlZmluZSBGVERJX0dVREVBRFNfRTg4RF9QSUQgICAgMHhFODhECiNkZWZpbmUgRlRESV9HVURFQURTX0U4OEVfUElEICAgIDB4RTg4RQojZGVmaW5lIEZURElfR1VERUFEU19FODhGX1BJRCAgICAweEU4OEYKCi8qCiAqIExpbnggVGVjaG5vbG9naWVzIHByb2R1Y3QgaWRzCiAqLwojZGVmaW5lIExJTlhfU0RNVVNCUVNTX1BJRAkweEY0NDgJLyogTGlueCBTRE0tVVNCLVFTLVMgKi8KI2RlZmluZSBMSU5YX01BU1RFUkRFVkVMMl9QSUQgICAweEY0NDkgICAvKiBMaW54IE1hc3RlciBEZXZlbG9wbWVudCAyLjAgKi8KI2RlZmluZSBMSU5YX0ZVVFVSRV8wX1BJRCAgIDB4RjQ0QSAgIC8qIExpbnggZnV0dXJlIGRldmljZSAqLwojZGVmaW5lIExJTlhfRlVUVVJFXzFfUElEICAgMHhGNDRCICAgLyogTGlueCBmdXR1cmUgZGV2aWNlICovCiNkZWZpbmUgTElOWF9GVVRVUkVfMl9QSUQgICAweEY0NEMgICAvKiBMaW54IGZ1dHVyZSBkZXZpY2UgKi8KCi8qIENDUyBJbmMuIElDRFUvSUNEVTQwIHByb2R1Y3QgSUQgLSB0aGUgRlQyMzJCTSBpcyB1c2VkIGluIGFuIGluLWNpcmN1aXQtZGVidWdnZXIgKi8KLyogdW5pdCBmb3IgUElDMTYncy9QSUMxOCdzICovCiNkZWZpbmUgRlRESV9DQ1NJQ0RVMjBfMF9QSUQgICAgMHhGOUQwCiNkZWZpbmUgRlRESV9DQ1NJQ0RVNDBfMV9QSUQgICAgMHhGOUQxCiNkZWZpbmUgRlRESV9DQ1NNQUNIWF8yX1BJRCAgICAgMHhGOUQyCgovKiBJbnNpZGUgQWNjZXNzbyBjb250YWN0bGVzcyByZWFkZXIgKGh0dHA6Ly93d3cuaW5zaWRlZnIuY29tKSAqLwojZGVmaW5lIElOU0lERV9BQ0NFU1NPCQkweEZBRDAKCi8qCiAqIEludHJlcGlkIENvbnRyb2wgU3lzdGVtcyAoaHR0cDovL3d3dy5pbnRyZXBpZGNzLmNvbS8pIFZhbHVlQ0FOIGFuZCBOZW9WSQogKi8KI2RlZmluZSBJTlRSRVBJRF9WSUQJCTB4MDkzQwojZGVmaW5lIElOVFJFUElEX1ZBTFVFQ0FOX1BJRAkweDA2MDEKI2RlZmluZSBJTlRSRVBJRF9ORU9WSV9QSUQJMHgwNzAxCgovKgogKiBGYWxjb20gV2lyZWxlc3MgQ29tbXVuaWNhdGlvbnMgR21iSAogKi8KI2RlZmluZSBGQUxDT01fVklECQkweDBGOTQJLyogVmVuZG9yIElkICovCiNkZWZpbmUgRkFMQ09NX1RXSVNUX1BJRAkweDAwMDEJLyogRmFsY29tIFR3aXN0IFVTQiBHUFJTIG1vZGVtICovCiNkZWZpbmUgRkFMQ09NX1NBTUJBX1BJRAkweDAwMDUJLyogRmFsY29tIFNhbWJhIFVTQiBHUFJTIG1vZGVtICovCgovKgogKiBTVVVOVE8gcHJvZHVjdCBpZHMKICovCiNkZWZpbmUgRlRESV9TVVVOVE9fU1BPUlRTX1BJRAkweEY2ODAJLyogU3V1bnRvIFNwb3J0cyBpbnN0cnVtZW50ICovCgovKgogKiBUVGkgKFRodXJsYnkgVGhhbmRhciBJbnN0cnVtZW50cykKICovCiNkZWZpbmUgVFRJX1ZJRAkJCTB4MTAzRQkvKiBWZW5kb3IgSWQgKi8KI2RlZmluZSBUVElfUUwzNTVQX1BJRAkJMHgwM0U4CS8qIFRUaSBRTDM1NVAgcG93ZXIgc3VwcGx5ICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgQiZCIEVsZWN0cm9uaWNzIHByb2R1Y3RzLgogKi8KI2RlZmluZSBCQU5EQl9WSUQJCTB4MDg1NgkvKiBCJkIgRWxlY3Ryb25pY3MgVmVuZG9yIElEICovCiNkZWZpbmUgQkFOREJfVVNPVEw0X1BJRAkweEFDMDEJLyogVVNPVEw0IElzb2xhdGVkIFJTLTQ4NSBDb252ZXJ0ZXIgKi8KI2RlZmluZSBCQU5EQl9VU1RMNF9QSUQJCTB4QUMwMgkvKiBVU1RMNCBSUy00ODUgQ29udmVydGVyICovCiNkZWZpbmUgQkFOREJfVVNPOU1MMl9QSUQJMHhBQzAzCS8qIFVTTzlNTDIgSXNvbGF0ZWQgUlMtMjMyIENvbnZlcnRlciAqLwoKLyoKICogUk0gTWljaGFlbGlkZXMgQ0FOdmlldyBVU0IgKGh0dHA6Ly93d3cucm1jYW4uY29tKQogKiBDQU4gZmllbGRidXMgaW50ZXJmYWNlIGFkYXB0ZXIsIGFkZGVkIGJ5IHBvcnQgR21iSCB3d3cucG9ydC5kZSkKICogSWFuIEFiYm90dCBjaGFuZ2VkIHRoZSBtYWNybyBuYW1lcyBmb3IgY29uc2lzdGVuY3kuCiAqLwojZGVmaW5lIEZURElfUk1fQ0FOVklFV19QSUQJMHhmZDYwCS8qIFByb2R1Y3QgSWQgKi8KCi8qCiAqIEVWRVIgRWNvIFBybyBVUFMgKGh0dHA6Ly93d3cuZXZlci5jb20ucGwvKQogKi8KCiNkZWZpbmUJRVZFUl9FQ09fUFJPX0NEUwkweGU1MjAJLyogUlMtMjMyIGNvbnZlcnRlciAqLwoKLyoKICogNE4tR0FMQVhZLkRFIFBJRHMgZm9yIENBTi1VU0IsIFVTQi1SUzIzMiwgVVNCLVJTNDIyLCBVU0ItUlM0ODUsCiAqIFVTQi1UVFkgYWN0aXYsIFVTQi1UVFkgcGFzc2l2LiAgU29tZSBQSURzIGFyZSB1c2VkIGJ5IHNldmVyYWwgZGV2aWNlcwogKiBhbmQgSSdtIG5vdCBlbnRpcmVseSBzdXJlIHdoaWNoIGFyZSB1c2VkIGJ5IHdoaWNoLgogKi8KI2RlZmluZSBGVERJXzROX0dBTEFYWV9ERV8xX1BJRAkweEYzQzAKI2RlZmluZSBGVERJXzROX0dBTEFYWV9ERV8yX1BJRAkweEYzQzEKCi8qCiAqIE1vYmlsaXR5IEVsZWN0cm9uaWNzIHByb2R1Y3RzLgogKi8KI2RlZmluZSBNT0JJTElUWV9WSUQJCQkweDEzNDIKI2RlZmluZSBNT0JJTElUWV9VU0JfU0VSSUFMX1BJRAkJMHgwMjAyCS8qIEVhc2lEb2NrIFVTQiAyMDAgc2VyaWFsICovCgovKgogKiBtaWNyb0hBTSBwcm9kdWN0IElEcyAoaHR0cDovL3d3dy5taWNyb2hhbS5jb20pLgogKiBTdWJtaXR0ZWQgYnkgSnVzdGluIEJ1cmtldCAoS0wxUkwpIDx6b3J0b25AanRhbi5jb20+CiAqIGFuZCBNaWtlIFN0dWRlciAoSzZFRVApIDxrNmVlcEBoYW1zb2Z0d2FyZS5vcmc+LgogKiBJYW4gQWJib3R0IDxhYmJvdHRpQG1ldi5jby51az4gYWRkZWQgYSBmZXcgbW9yZSBmcm9tIHRoZSBkcml2ZXIgSU5GIGZpbGUuCiAqLwojZGVmaW5lIEZURElfTUhBTV9LV19QSUQgMHhFRUU4CQkvKiBVU0ItS1cgaW50ZXJmYWNlICovCiNkZWZpbmUgRlRESV9NSEFNX1lTX1BJRCAweEVFRTkJCS8qIFVTQi1ZUyBpbnRlcmZhY2UgKi8KI2RlZmluZSBGVERJX01IQU1fWTZfUElEIDB4RUVFQQkJLyogVVNCLVk2IGludGVyZmFjZSAqLwojZGVmaW5lIEZURElfTUhBTV9ZOF9QSUQgMHhFRUVCCQkvKiBVU0ItWTggaW50ZXJmYWNlICovCiNkZWZpbmUgRlRESV9NSEFNX0lDX1BJRCAweEVFRUMJCS8qIFVTQi1JQyBpbnRlcmZhY2UgKi8KI2RlZmluZSBGVERJX01IQU1fREI5X1BJRCAweEVFRUQJLyogVVNCLURCOSBpbnRlcmZhY2UgKi8KI2RlZmluZSBGVERJX01IQU1fUlMyMzJfUElEIDB4RUVFRQkvKiBVU0ItUlMyMzIgaW50ZXJmYWNlICovCiNkZWZpbmUgRlRESV9NSEFNX1k5X1BJRCAweEVFRUYJCS8qIFVTQi1ZOSBpbnRlcmZhY2UgKi8KCi8qCiAqIEFjdGl2ZSBSb2JvdHMgcHJvZHVjdCBpZHMuCiAqLwojZGVmaW5lIEZURElfQUNUSVZFX1JPQk9UU19QSUQJMHhFNTQ4CS8qIFVTQiBjb21tcyBib2FyZCAqLwoKLyoKICogWHNlbnMgVGVjaG5vbG9naWVzIEJWIHByb2R1Y3RzIChodHRwOi8vd3d3LnhzZW5zLmNvbSkuCiAqLwojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl8wX1BJRAkweEQzODgKI2RlZmluZSBYU0VOU19DT05WRVJURVJfMV9QSUQJMHhEMzg5CiNkZWZpbmUgWFNFTlNfQ09OVkVSVEVSXzJfUElECTB4RDM4QQojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl8zX1BJRAkweEQzOEIKI2RlZmluZSBYU0VOU19DT05WRVJURVJfNF9QSUQJMHhEMzhDCiNkZWZpbmUgWFNFTlNfQ09OVkVSVEVSXzVfUElECTB4RDM4RAojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl82X1BJRAkweEQzOEUKI2RlZmluZSBYU0VOU19DT05WRVJURVJfN19QSUQJMHhEMzhGCgovKgogKiBUZXJhdHJvbmlrIHByb2R1Y3QgaWRzLgogKiBTdWJtaXR0ZWQgYnkgTy4gV/ZsZmVsc2NobmVpZGVyLgogKi8KI2RlZmluZSBGVERJX1RFUkFUUk9OSUtfVkNQX1BJRAkgMHhFQzg4CS8qIFRlcmF0cm9uaWsgZGV2aWNlIChwcmVmZXJyaW5nIFZDUCBkcml2ZXIgb24gd2luZG93cykgKi8KI2RlZmluZSBGVERJX1RFUkFUUk9OSUtfRDJYWF9QSUQgMHhFQzg5CS8qIFRlcmF0cm9uaWsgZGV2aWNlIChwcmVmZXJyaW5nIEQyWFggZHJpdmVyIG9uIHdpbmRvd3MpICovCgovKgogKiBFdm9sdXRpb24gUm9ib3RpY3MgcHJvZHVjdHMgKGh0dHA6Ly93d3cuZXZvbHV0aW9uLmNvbS8pLgogKiBTdWJtaXR0ZWQgYnkgU2hhd24gTS4gTGF2ZWxsZS4KICovCiNkZWZpbmUgRVZPTFVUSU9OX1ZJRAkJMHhERUVFCS8qIFZlbmRvciBJRCAqLwojZGVmaW5lIEVWT0xVVElPTl9FUjFfUElECTB4MDMwMAkvKiBFUjEgQ29udHJvbCBNb2R1bGUgKi8KCi8qIFB5cmFtaWQgQ29tcHV0ZXIgR21iSCAqLwojZGVmaW5lIEZURElfUFlSQU1JRF9QSUQJMHhFNkM4CS8qIFB5cmFtaWQgQXBwbGlhbmNlIERpc3BsYXkgKi8KCi8qCiAqIFBvc2lmbGV4IGluYyByZXRhaWwgZXF1aXBtZW50IChodHRwOi8vd3d3LnBvc2lmbGV4LmNvbS50dykKICovCiNkZWZpbmUgUE9TSUZMRVhfVklECQkweDBkM2EgIC8qIFZlbmRvciBJRCAqLwojZGVmaW5lIFBPU0lGTEVYX1BQNzAwMF9QSUQJMHgwMzAwICAvKiBQUC03MDAwSUkgdGhlcm1hbCBwcmludGVyICovCgovKgogKiBXZXN0cmV4IEludGVybmF0aW9uYWwgZGV2aWNlcyBzdWJtaXR0ZWQgYnkgQ29yeSBMZWUKICovCiNkZWZpbmUgRlRESV9XRVNUUkVYX01PREVMXzc3N19QSUQJMHhEQzAwCS8qIE1vZGVsIDc3NyAqLwojZGVmaW5lIEZURElfV0VTVFJFWF9NT0RFTF84OTAwRl9QSUQJMHhEQzAxCS8qIE1vZGVsIDg5MDBGICovCgovKgogKiBSUi1DaXJLaXRzIExvY29CdWZmZXIgVVNCIChodHRwOi8vd3d3LnJyLWNpcmtpdHMuY29tKQogKi8KI2RlZmluZSBGVERJX1JSQ0lSS0lUU19MT0NPQlVGRkVSX1BJRAkweGM3ZDAJLyogTG9jb0J1ZmZlciBVU0IgKi8KCi8qCiAqIEVjbG8gKGh0dHA6Ly93d3cuZWNsby5wdC8pIHByb2R1Y3QgSURzLgogKiBQSUQgMHhFQTkwIHN1Ym1pdHRlZCBieSBNYXJ0aW4gR3JpbGwuCiAqLwojZGVmaW5lIEZURElfRUNMT19DT01fMVdJUkVfUElECTB4RUE5MAkvKiBDT00gdG8gMS1XaXJlIFVTQiBhZGFwdG9yICovCgovKgogKiBQYXBvdWNoIHByb2R1Y3RzIChodHRwOi8vd3d3LnBhcG91Y2guY29tLykKICogU3VibWl0dGVkIGJ5IEZvbGtlcnQgdmFuIEhldXNkZW4KICovCgojZGVmaW5lIFBBUE9VQ0hfVklECQkJMHg1MDUwCS8qIFZlbmRvciBJRCAqLwojZGVmaW5lIFBBUE9VQ0hfVE1VX1BJRAkJCTB4MDQwMAkvKiBUTVUgVVNCIFRoZXJtb21ldGVyICovCgovKgogKiBBQ0cgSWRlbnRpZmljYXRpb24gVGVjaG5vbG9naWVzIEdtYkggcHJvZHVjdHMgKGh0dHA6Ly93d3cuYWNnLmRlLykuCiAqIFN1Ym1pdHRlZCBieSBhbnRvbiAtYXQtIGdvdG8xMCAtZG90LSBvcmcuCiAqLwojZGVmaW5lIEZURElfQUNHX0hGRFVBTF9QSUQJCTB4REQyMAkvKiBIRiBEdWFsIElTTyBSZWFkZXIgKFJGSUQpICovCgovKgogKiBZb3N0IEVuZ2luZWVyaW5nLCBJbmMuIHByb2R1Y3RzICh3d3cueW9zdGVuZ2luZWVyaW5nLmNvbSkuCiAqIFBJRCAweEUwNTAgc3VibWl0dGVkIGJ5IEFhcm9uIFByb3NlLgogKi8KI2RlZmluZSBGVERJX1lFSV9TRVJWT0NFTlRFUjMxX1BJRAkweEUwNTAJLyogWUVJIFNlcnZvQ2VudGVyMy4xIFVTQiAqLwoKLyoKICogVGhvckxhYnMgVVNCIG1vdG9yIGRyaXZlcnMKICovCiNkZWZpbmUgRlRESV9USE9STEFCU19QSUQJCTB4ZmFmMCAvKiBUaG9yTGFicyBVU0IgbW90b3IgZHJpdmVycyAqLwoKLyoKICogVGVzdG8gcHJvZHVjdHMgKGh0dHA6Ly93d3cudGVzdG8uY29tLykKICogU3VibWl0dGVkIGJ5IENvbGluIExlcm95CiAqLwojZGVmaW5lIFRFU1RPX1ZJRAkJCTB4MTI4RAojZGVmaW5lIFRFU1RPX1VTQl9JTlRFUkZBQ0VfUElECQkweDAwMDEKCi8qCiAqIEdhbW1hIFNjb3V0IChodHRwOi8vZ2FtbWEtc2NvdXQuY29tLykuIFN1Ym1pdHRlZCBieSByc2NAcnVudHV4LmNvbS4KICovCiNkZWZpbmUgRlRESV9HQU1NQV9TQ09VVF9QSUQJCTB4RDY3OAkvKiBHYW1tYSBTY291dCBvbmxpbmUgKi8KCi8qCiAqIFRhY3RyaXggT3BlblBvcnQgKEVDVSkgZGV2aWNlcy4KICogT3BlblBvcnQgMS4zTSBzdWJtaXR0ZWQgYnkgRG9ub3VyIFNpemVtb3JlLgogKiBPcGVuUG9ydCAxLjNTIGFuZCAxLjNVIHN1Ym1pdHRlZCBieSBJYW4gQWJib3R0LgogKi8KI2RlZmluZSBGVERJX1RBQ1RSSVhfT1BFTlBPUlRfMTNNX1BJRAkweENDNDgJLyogT3BlblBvcnQgMS4zIE1pdHN1YmlzaGkgKi8KI2RlZmluZSBGVERJX1RBQ1RSSVhfT1BFTlBPUlRfMTNTX1BJRAkweENDNDkJLyogT3BlblBvcnQgMS4zIFN1YmFydSAqLwojZGVmaW5lIEZURElfVEFDVFJJWF9PUEVOUE9SVF8xM1VfUElECTB4Q0M0QQkvKiBPcGVuUG9ydCAxLjMgVW5pdmVyc2FsICovCgovKgogKiBUZWxsZHVzIFRlY2hub2xvZ2llcwogKi8KI2RlZmluZSBURUxMRFVTX1ZJRAkJCTB4MTc4MQkvKiBWZW5kb3IgSUQgKi8KI2RlZmluZSBURUxMRFVTX1RFTExTVElDS19QSUQJCTB4MEMzMAkvKiBSRiBjb250cm9sIGRvbmdsZSA0MzMgTUh6IHVzaW5nIEZUMjMyUkwgKi8KCi8qCiAqIElCUyBlbGVrdHJvbmlrIHByb2R1Y3QgaWRzCiAqIFN1Ym1pdHRlZCBieSBUaG9tYXMgU2NobGV1c2VuZXIKICovCiNkZWZpbmUgRlRESV9JQlNfVVM0ODVfUElECTB4ZmYzOCAgLyogSUJTIFVTNDg1IChVU0I8LS0+UlM0MjIvNDg1IGludGVyZmFjZSkgKi8KI2RlZmluZSBGVERJX0lCU19QSUNQUk9fUElECTB4ZmYzOSAgLyogSUJTIFBJQy1Qcm9ncmFtbWVyICovCiNkZWZpbmUgRlRESV9JQlNfUENNQ0lBX1BJRAkweGZmM2EgIC8qIElCUyBDYXJkIHJlYWRlciBmb3IgUENNQ0lBIFNSQU0tY2FyZHMgKi8KI2RlZmluZSBGVERJX0lCU19QSzFfUElECTB4ZmYzYiAgLyogSUJTIFBLMSAtIFBhcnRpY2VsIGNvdW50ZXIgKi8KI2RlZmluZSBGVERJX0lCU19SUzIzMk1PTl9QSUQJMHhmZjNjICAvKiBJQlMgUlMyMzIgLSBNb25pdG9yICovCiNkZWZpbmUgRlRESV9JQlNfQVBQNzBfUElECTB4ZmYzZCAgLyogQVBQIDcwIChkdXN0IG1vbml0b3Jpbmcgc3lzdGVtKSAqLwojZGVmaW5lIEZURElfSUJTX1BFRE9fUElECTB4ZmYzZSAgLyogSUJTIFBFRE8tTW9kZW0gKFJGIG1vZGVtIDg2OC4zNSBNSHopICovCiNkZWZpbmUgRlRESV9JQlNfUFJPRF9QSUQJMHhmZjNmICAvKiBmdXR1cmUgZGV2aWNlICovCgovKiBDb21tYW5kcyAqLwojZGVmaW5lIEZURElfU0lPX1JFU0VUIAkJMCAvKiBSZXNldCB0aGUgcG9ydCAqLwojZGVmaW5lIEZURElfU0lPX01PREVNX0NUUkwgCTEgLyogU2V0IHRoZSBtb2RlbSBjb250cm9sIHJlZ2lzdGVyICovCiNkZWZpbmUgRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTAkyIC8qIFNldCBmbG93IGNvbnRyb2wgcmVnaXN0ZXIgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfQkFVRF9SQVRFCTMgLyogU2V0IGJhdWQgcmF0ZSAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBCTQgLyogU2V0IHRoZSBkYXRhIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgcG9ydCAqLwojZGVmaW5lIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMJNSAvKiBSZXRyaWV2ZSBjdXJyZW50IHZhbHVlIG9mIG1vZGVybiBzdGF0dXMgcmVnaXN0ZXIgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUgk2IC8qIFNldCB0aGUgZXZlbnQgY2hhcmFjdGVyICovCiNkZWZpbmUgRlRESV9TSU9fU0VUX0VSUk9SX0NIQVIJNyAvKiBTZXQgdGhlIGVycm9yIGNoYXJhY3RlciAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCTkgLyogU2V0IHRoZSBsYXRlbmN5IHRpbWVyICovCiNkZWZpbmUgRlRESV9TSU9fR0VUX0xBVEVOQ1lfVElNRVIJMTAgLyogR2V0IHRoZSBsYXRlbmN5IHRpbWVyICovCgoKLyoKICogICBCbVJlcXVlc3RUeXBlOiAgMTEwMCAwMDAwYgogKiAgIGJSZXF1ZXN0OiAgICAgICBGVERJX0UyX1JFQUQKICogICB3VmFsdWU6ICAgICAgICAgMAogKiAgIHdJbmRleDogICAgICAgICBBZGRyZXNzIG9mIHdvcmQgdG8gcmVhZAogKiAgIHdMZW5ndGg6ICAgICAgICAyCiAqICAgRGF0YTogICAgICAgICAgIFdpbGwgcmV0dXJuIGEgd29yZCBvZiBkYXRhIGZyb20gRTJBZGRyZXNzCiAqCiAqLwoKLyogUG9ydCBJZGVudGlmaWVyIFRhYmxlICovCiNkZWZpbmUgUElUX0RFRkFVTFQgCQkwIC8qIFNJT0EgKi8KI2RlZmluZSBQSVRfU0lPQQkJMSAvKiBTSU9BICovCi8qIFRoZSBkZXZpY2UgdGhpcyBkcml2ZXIgaXMgdGVzdGVkIHdpdGggb25lIGhhcyBvbmx5IG9uZSBwb3J0ICovCiNkZWZpbmUgUElUX1NJT0IJCTIgLyogU0lPQiAqLwojZGVmaW5lIFBJVF9QQVJBTExFTAkJMyAvKiBQYXJhbGxlbCAqLwoKLyogRlRESV9TSU9fUkVTRVQgKi8KI2RlZmluZSBGVERJX1NJT19SRVNFVF9SRVFVRVNUIEZURElfU0lPX1JFU0VUCiNkZWZpbmUgRlRESV9TSU9fUkVTRVRfUkVRVUVTVF9UWVBFIDB4NDAKI2RlZmluZSBGVERJX1NJT19SRVNFVF9TSU8gMAojZGVmaW5lIEZURElfU0lPX1JFU0VUX1BVUkdFX1JYIDEKI2RlZmluZSBGVERJX1NJT19SRVNFVF9QVVJHRV9UWCAyCgovKgogKiBCbVJlcXVlc3RUeXBlOiAgMDEwMCAwMDAwQgogKiBiUmVxdWVzdDogICAgICAgRlRESV9TSU9fUkVTRVQKICogd1ZhbHVlOiAgICAgICAgIENvbnRyb2wgVmFsdWUgCiAqICAgICAgICAgICAgICAgICAgIDAgPSBSZXNldCBTSU8KICogICAgICAgICAgICAgICAgICAgMSA9IFB1cmdlIFJYIGJ1ZmZlcgogKiAgICAgICAgICAgICAgICAgICAyID0gUHVyZ2UgVFggYnVmZmVyCiAqIHdJbmRleDogICAgICAgICBQb3J0CiAqIHdMZW5ndGg6ICAgICAgICAwCiAqIERhdGE6ICAgICAgICAgICBOb25lCiAqCiAqIFRoZSBSZXNldCBTSU8gY29tbWFuZCBoYXMgdGhpcyBlZmZlY3Q6CiAqCiAqICAgIFNldHMgZmxvdyBjb250cm9sIHNldCB0byAnbm9uZScKICogICAgRXZlbnQgY2hhciA9ICQwRAogKiAgICBFdmVudCB0cmlnZ2VyID0gZGlzYWJsZWQKICogICAgUHVyZ2UgUlggYnVmZmVyCiAqICAgIFB1cmdlIFRYIGJ1ZmZlcgogKiAgICBDbGVhciBEVFIKICogICAgQ2xlYXIgUlRTCiAqICAgIGJhdWQgYW5kIGRhdGEgZm9ybWF0IG5vdCByZXNldAogKgogKiBUaGUgUHVyZ2UgUlggYW5kIFRYIGJ1ZmZlciBjb21tYW5kcyBhZmZlY3Qgbm90aGluZyBleGNlcHQgdGhlIGJ1ZmZlcnMKICoKICAgKi8KCi8qIEZURElfU0lPX1NFVF9CQVVEUkFURSAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9CQVVEUkFURV9SRVFVRVNUX1RZUEUgMHg0MAojZGVmaW5lIEZURElfU0lPX1NFVF9CQVVEUkFURV9SRVFVRVNUIDMKCi8qCiAqIEJtUmVxdWVzdFR5cGU6ICAwMTAwIDAwMDBCCiAqIGJSZXF1ZXN0OiAgICAgICBGVERJX1NJT19TRVRfQkFVRFJBVEUKICogd1ZhbHVlOiAgICAgICAgIEJhdWREaXZpc29yIHZhbHVlIC0gc2VlIGJlbG93CiAqIHdJbmRleDogICAgICAgICBQb3J0CiAqIHdMZW5ndGg6ICAgICAgICAwCiAqIERhdGE6ICAgICAgICAgICBOb25lCiAqIFRoZSBCYXVkRGl2aXNvciB2YWx1ZXMgYXJlIGNhbGN1bGF0ZWQgYXMgZm9sbG93czoKICogLSBCYXNlQ2xvY2sgaXMgZWl0aGVyIDEyMDAwMDAwIG9yIDQ4MDAwMDAwIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlLiBGSVhNRTogSSB3aXNoCiAqICAgSSBrbmV3IGhvdyB0byBkZXRlY3Qgb2xkIGNoaXBzIHRvIHNlbGVjdCBwcm9wZXIgYmFzZSBjbG9jayEKICogLSBCYXVkRGl2aXNvciBpcyBhIGZpeGVkIHBvaW50IG51bWJlciBlbmNvZGVkIGluIGEgZnVubnkgd2F5LgogKiAgICgtLVdST05HIFdBWSBPRiBUSElOS0lORy0tKQogKiAgIEJhdWREaXZpc29yIGlzIGEgZml4ZWQgcG9pbnQgbnVtYmVyIGVuY29kZWQgd2l0aCBmb2xsb3dpbmcgYml0IHdlaWdoczoKICogICAoLTIpKC0xKSgxMy4uMCkuIEl0IGlzIGEgcmFkaWNhbCB3aXRoIGEgZGVub21pbmF0b3Igb2YgNCwgc28gdmFsdWVzCiAqICAgZW5kIHdpdGggMC4wICgwMC4uLiksIDAuMjUgKDEwLi4uKSwgMC41ICgwMS4uLiksIGFuZCAwLjc1ICgxMS4uLikuCiAqICAgKC0tVEhFIFJFQUxJVFktLSkKICogICBUaGUgYm90aC1iaXRzLXNldCBoYXMgcXVpdGUgZGlmZmVyZW50IG1lYW5pbmcgZnJvbSAwLjc1IC0gdGhlIGNoaXAgZGVzaWduZXJzCiAqICAgaGF2ZSBkZWNpZGVkIGl0IHRvIG1lYW4gMC4xMjUgaW5zdGVhZCBvZiAwLjc1LgogKiAgIFRoaXMgaW5mbyBsb29rZWQgdXAgaW4gRlRESSBhcHBsaWNhdGlvbiBub3RlICJGVDhVMjMyIERFVklDRVMgXCBEYXRhIFJhdGVzCiAqICAgYW5kIEZsb3cgQ29udHJvbCBDb25zaWRlcmF0aW9uIGZvciBVU0IgdG8gUlMyMzIiLgogKiAtIEJhdWREaXZpc29yID0gKEJhc2VDbG9jayAvIDE2KSAvIEJhdWRSYXRlLCB3aGVyZSB0aGUgKD0pIG9wZXJhdGlvbiBzaG91bGQKICogICBhdXRvbWFnaWNhbGx5IHJlLWVuY29kZSB0aGUgcmVzdWx0aW5nIHZhbHVlIHRvIHRha2UgZnJhY3Rpb25zIGludG8gY29uc2lkZXJhdGlvbi4KICogQXMgYWxsIHZhbHVlcyBhcmUgaW50ZWdlcnMsIHNvbWUgYml0IHR3aWRkbGluZyBpcyBpbiBvcmRlcjoKICogICBCYXVkRGl2aXNvciA9IChCYXNlQ2xvY2sgLyAxNiAvIEJhdWRSYXRlKSB8CiAqICAgKCgoQmFzZUNsb2NrIC8gMiAvIEJhdWRSYXRlKSAmIDQpID8gMHg0MDAwICAgIC8vIDAuNQogKiAgICA6ICgoQmFzZUNsb2NrIC8gMiAvIEJhdWRSYXRlKSAmIDIpID8gMHg4MDAwICAvLyAwLjI1CiAqICAgIDogKChCYXNlQ2xvY2sgLyAyIC8gQmF1ZFJhdGUpICYgMSkgPyAweGMwMDAgIC8vIDAuMTI1CiAqICAgIDogMCkKICoKICogRm9yIHRoZSBGVDIzMkJNLCBhIDE3dGggZGl2aXNvciBiaXQgd2FzIGludHJvZHVjZWQgdG8gZW5jb2RlIHRoZSBtdWx0aXBsZXMKICogb2YgMC4xMjUgbWlzc2luZyBmcm9tIHRoZSBGVDhVMjMyQU0uICBCaXRzIDE2IHRvIDE0IGFyZSBjb2RlZCBhcyBmb2xsb3dzCiAqICh0aGUgZmlyc3QgZm91ciBjb2RlcyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBGVDhVMjMyQU0sIHdoZXJlIGJpdCAxNiBpcwogKiBhbHdheXMgMCk6CiAqICAgMDAwIC0gYWRkIC4wMDAgdG8gZGl2aXNvcgogKiAgIDAwMSAtIGFkZCAuNTAwIHRvIGRpdmlzb3IKICogICAwMTAgLSBhZGQgLjI1MCB0byBkaXZpc29yCiAqICAgMDExIC0gYWRkIC4xMjUgdG8gZGl2aXNvcgogKiAgIDEwMCAtIGFkZCAuMzc1IHRvIGRpdmlzb3IKICogICAxMDEgLSBhZGQgLjYyNSB0byBkaXZpc29yCiAqICAgMTEwIC0gYWRkIC43NTAgdG8gZGl2aXNvcgogKiAgIDExMSAtIGFkZCAuODc1IHRvIGRpdmlzb3IKICogQml0cyAxNSB0byAwIG9mIHRoZSAxNy1iaXQgZGl2aXNvciBhcmUgcGxhY2VkIGluIHRoZSB1cmIgdmFsdWUuICBCaXQgMTYgaXMgCiAqIHBsYWNlZCBpbiBiaXQgMCBvZiB0aGUgdXJiIGluZGV4LgogKgogKiBOb3RlIHRoYXQgdGhlcmUgYXJlIGEgY291cGxlIG9mIHNwZWNpYWwgY2FzZXMgdG8gc3VwcG9ydCB0aGUgaGlnaGVzdCBiYXVkCiAqIHJhdGVzLiAgSWYgdGhlIGNhbGN1bGF0ZWQgZGl2aXNvciB2YWx1ZSBpcyAxLCB0aGlzIG5lZWRzIHRvIGJlIHJlcGxhY2VkIHdpdGgKICogMC4gIEFkZGl0aW9uYWxseSBmb3IgdGhlIEZUMjMyQk0sIGlmIHRoZSBjYWxjdWxhdGVkIGRpdmlzb3IgdmFsdWUgaXMgMHg0MDAxCiAqICgxLjUpLCB0aGlzIG5lZWRzIHRvIGJlIHJlcGxhY2VkIHdpdGggMHgwMDAxICgxKSAoYnV0IHRoaXMgZGl2aXNvciB2YWx1ZSBpcwogKiBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBGVDhVMjMyQU0pLgogKi8KCnR5cGVkZWYgZW51bSB7CglTSU8gPSAxLAoJRlQ4VTIzMkFNID0gMiwKCUZUMjMyQk0gPSAzLAoJRlQyMjMyQyA9IDQsCglGVDIzMlJMID0gNSwKfSBmdGRpX2NoaXBfdHlwZV90OwoKdHlwZWRlZiBlbnVtIHsKIGZ0ZGlfc2lvX2IzMDAgPSAwLCAKIGZ0ZGlfc2lvX2I2MDAgPSAxLCAKIGZ0ZGlfc2lvX2IxMjAwID0gMiwKIGZ0ZGlfc2lvX2IyNDAwID0gMywKIGZ0ZGlfc2lvX2I0ODAwID0gNCwKIGZ0ZGlfc2lvX2I5NjAwID0gNSwKIGZ0ZGlfc2lvX2IxOTIwMCA9IDYsCiBmdGRpX3Npb19iMzg0MDAgPSA3LAogZnRkaV9zaW9fYjU3NjAwID0gOCwKIGZ0ZGlfc2lvX2IxMTUyMDAgPSA5Cn0gRlRESV9TSU9fYmF1ZHJhdGVfdCA7CgovKgogKiBUaGUgZnRkaV84VTIzMkFNX3h4TUh6X2J5eXkgY29uc3RhbnRzIGhhdmUgYmVlbiByZW1vdmVkLiBUaGUgZW5jb2RlZCBkaXZpc29yIHZhbHVlcwogKiBhcmUgY2FsY3VsYXRlZCBpbnRlcm5hbGx5LgogKi8KCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfUkVRVUVTVCBGVERJX1NJT19TRVRfREFUQQojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1JFUVVFU1RfVFlQRSAweDQwCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfUEFSSVRZX05PTkUgKDB4MCA8PCA4ICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9QQVJJVFlfT0REICgweDEgPDwgOCApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfUEFSSVRZX0VWRU4gKDB4MiA8PCA4ICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9QQVJJVFlfTUFSSyAoMHgzIDw8IDggKQojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1BBUklUWV9TUEFDRSAoMHg0IDw8IDggKQojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1NUT1BfQklUU18xICgweDAgPDwgMTEgKQojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1NUT1BfQklUU18xNSAoMHgxIDw8IDExICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9TVE9QX0JJVFNfMiAoMHgyIDw8IDExICkKI2RlZmluZSBGVERJX1NJT19TRVRfQlJFQUsgKDB4MSA8PCAxNCkKLyogRlRESV9TSU9fU0VUX0RBVEEgKi8KCi8qCiAqIEJtUmVxdWVzdFR5cGU6ICAwMTAwIDAwMDBCIAogKiBiUmVxdWVzdDogICAgICAgRlRESV9TSU9fU0VUX0RBVEEKICogd1ZhbHVlOiAgICAgICAgIERhdGEgY2hhcmFjdGVyaXN0aWNzIChzZWUgYmVsb3cpCiAqIHdJbmRleDogICAgICAgICBQb3J0CiAqIHdMZW5ndGg6ICAgICAgICAwCiAqIERhdGE6ICAgICAgICAgICBObwogKgogKiBEYXRhIGNoYXJhY3RlcmlzdGljcwogKgogKiAgIEIwLi43ICAgTnVtYmVyIG9mIGRhdGEgYml0cwogKiAgIEI4Li4xMCAgUGFyaXR5CiAqICAgICAgICAgICAwID0gTm9uZQogKiAgICAgICAgICAgMSA9IE9kZAogKiAgICAgICAgICAgMiA9IEV2ZW4KICogICAgICAgICAgIDMgPSBNYXJrCiAqICAgICAgICAgICA0ID0gU3BhY2UKICogICBCMTEuLjEzIFN0b3AgQml0cwogKiAgICAgICAgICAgMCA9IDEKICogICAgICAgICAgIDEgPSAxLjUKICogICAgICAgICAgIDIgPSAyCiAqICAgQjE0CiAqICAgICAgICAgICAxID0gVFggT04gKGJyZWFrKQogKiAgICAgICAgICAgMCA9IFRYIE9GRiAobm9ybWFsIHN0YXRlKQogKiAgIEIxNSBSZXNlcnZlZAogKgogKi8KCgoKLyogRlRESV9TSU9fTU9ERU1fQ1RSTCAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9NT0RFTV9DVFJMX1JFUVVFU1RfVFlQRSAweDQwCiNkZWZpbmUgRlRESV9TSU9fU0VUX01PREVNX0NUUkxfUkVRVUVTVCBGVERJX1NJT19NT0RFTV9DVFJMCgovKiAKICogQm1SZXF1ZXN0VHlwZTogICAwMTAwIDAwMDBCCiAqIGJSZXF1ZXN0OiAgICAgICAgRlRESV9TSU9fTU9ERU1fQ1RSTAogKiB3VmFsdWU6ICAgICAgICAgIENvbnRyb2xWYWx1ZSAoc2VlIGJlbG93KQogKiB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogd0xlbmd0aDogICAgICAgICAwCiAqIERhdGE6ICAgICAgICAgICAgTm9uZQogKgogKiBOT1RFOiBJZiB0aGUgZGV2aWNlIGlzIGluIFJUUy9DVFMgZmxvdyBjb250cm9sLCB0aGUgUlRTIHNldCBieSB0aGlzCiAqIGNvbW1hbmQgd2lsbCBiZSBJR05PUkVEIHdpdGhvdXQgYW4gZXJyb3IgYmVpbmcgcmV0dXJuZWQKICogQWxzbyAtIHlvdSBjYW4gbm90IHNldCBEVFIgYW5kIFJUUyB3aXRoIG9uZSBjb250cm9sIG1lc3NhZ2UKICovCgojZGVmaW5lIEZURElfU0lPX1NFVF9EVFJfTUFTSyAweDEKI2RlZmluZSBGVERJX1NJT19TRVRfRFRSX0hJR0ggKCAxIHwgKCBGVERJX1NJT19TRVRfRFRSX01BU0sgIDw8IDgpKQojZGVmaW5lIEZURElfU0lPX1NFVF9EVFJfTE9XICAoIDAgfCAoIEZURElfU0lPX1NFVF9EVFJfTUFTSyAgPDwgOCkpCiNkZWZpbmUgRlRESV9TSU9fU0VUX1JUU19NQVNLIDB4MgojZGVmaW5lIEZURElfU0lPX1NFVF9SVFNfSElHSCAoIDIgfCAoIEZURElfU0lPX1NFVF9SVFNfTUFTSyA8PCA4ICkpCiNkZWZpbmUgRlRESV9TSU9fU0VUX1JUU19MT1cgKCAwIHwgKCBGVERJX1NJT19TRVRfUlRTX01BU0sgPDwgOCApKQoKLyoKICogQ29udHJvbFZhbHVlCiAqIEIwICAgIERUUiBzdGF0ZQogKiAgICAgICAgICAwID0gcmVzZXQKICogICAgICAgICAgMSA9IHNldAogKiBCMSAgICBSVFMgc3RhdGUKICogICAgICAgICAgMCA9IHJlc2V0CiAqICAgICAgICAgIDEgPSBzZXQKICogQjIuLjcgUmVzZXJ2ZWQKICogQjggICAgRFRSIHN0YXRlIGVuYWJsZQogKiAgICAgICAgICAwID0gaWdub3JlCiAqICAgICAgICAgIDEgPSB1c2UgRFRSIHN0YXRlCiAqIEI5ICAgIFJUUyBzdGF0ZSBlbmFibGUKICogICAgICAgICAgMCA9IGlnbm9yZQogKiAgICAgICAgICAxID0gdXNlIFJUUyBzdGF0ZQogKiBCMTAuLjE1IFJlc2VydmVkCiAqLwoKLyogRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTCAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9GTE9XX0NUUkxfUkVRVUVTVF9UWVBFIDB4NDAKI2RlZmluZSBGVERJX1NJT19TRVRfRkxPV19DVFJMX1JFUVVFU1QgRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTAojZGVmaW5lIEZURElfU0lPX0RJU0FCTEVfRkxPV19DVFJMIDB4MCAKI2RlZmluZSBGVERJX1NJT19SVFNfQ1RTX0hTICgweDEgPDwgOCkKI2RlZmluZSBGVERJX1NJT19EVFJfRFNSX0hTICgweDIgPDwgOCkKI2RlZmluZSBGVERJX1NJT19YT05fWE9GRl9IUyAoMHg0IDw8IDgpCi8qCiAqICAgQm1SZXF1ZXN0VHlwZTogIDAxMDAgMDAwMGIKICogICBiUmVxdWVzdDogICAgICAgRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTAogKiAgIHdWYWx1ZTogICAgICAgICBYb2ZmL1hvbgogKiAgIHdJbmRleDogICAgICAgICBQcm90b2NvbC9Qb3J0IC0gaEluZGV4IGlzIHByb3RvY2wgLyBsSW5kZXggaXMgcG9ydAogKiAgIHdMZW5ndGg6ICAgICAgICAwIAogKiAgIERhdGE6ICAgICAgICAgICBOb25lCiAqCiAqIGhJbmRleCBwcm90b2NvbCBpczoKICogICBCMCBPdXRwdXQgaGFuZHNoYWtpbmcgdXNpbmcgUlRTL0NUUwogKiAgICAgICAwID0gZGlzYWJsZWQKICogICAgICAgMSA9IGVuYWJsZWQKICogICBCMSBPdXRwdXQgaGFuZHNoYWtpbmcgdXNpbmcgRFRSL0RTUgogKiAgICAgICAwID0gZGlzYWJsZWQKICogICAgICAgMSA9IGVuYWJsZWQKICogICBCMiBYb24vWG9mZiBoYW5kc2hha2luZwogKiAgICAgICAwID0gZGlzYWJsZWQKICogICAgICAgMSA9IGVuYWJsZWQKICoKICogQSB2YWx1ZSBvZiB6ZXJvIGluIHRoZSBoSW5kZXggZmllbGQgZGlzYWJsZXMgaGFuZHNoYWtpbmcKICoKICogSWYgWG9uL1hvZmYgaGFuZHNoYWtpbmcgaXMgc3BlY2lmaWVkLCB0aGUgaFZhbHVlIGZpZWxkIHNob3VsZCBjb250YWluIHRoZSBYT0ZGIGNoYXJhY3RlciAKICogYW5kIHRoZSBsVmFsdWUgZmllbGQgY29udGFpbnMgdGhlIFhPTiBjaGFyYWN0ZXIuCiAqLyAgCiAKLyoKICogRlRESV9TSU9fR0VUX0xBVEVOQ1lfVElNRVIKICoKICogU2V0IHRoZSB0aW1lb3V0IGludGVydmFsLiBUaGUgRlRESSBjb2xsZWN0cyBkYXRhIGZyb20gdGhlIHNsYXZlCiAqIGRldmljZSwgdHJhbnNtaXR0aW5nIGl0IHRvIHRoZSBob3N0IHdoZW4gZWl0aGVyIEEpIDYyIGJ5dGVzIGFyZQogKiByZWNlaXZlZCwgb3IgQikgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgaGFzIGVsYXBzZWQgYW5kIHRoZSBidWZmZXIKICogY29udGFpbnMgYXQgbGVhc3QgMSBieXRlLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGEgc21hbGwgbnVtYmVyCiAqIGNhbiBkcmFtYXRpY2FsbHkgaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3IgYXBwbGljYXRpb25zIHdoaWNoIHNlbmQKICogc21hbGwgcGFja2V0cywgc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgaXMgMTZtcy4KICovCiNkZWZpbmUgIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSX1JFUVVFU1QgRlRESV9TSU9fR0VUX0xBVEVOQ1lfVElNRVIKI2RlZmluZSAgRlRESV9TSU9fR0VUX0xBVEVOQ1lfVElNRVJfUkVRVUVTVF9UWVBFIDB4QzAKCi8qIAogKiAgQm1SZXF1ZXN0VHlwZTogICAxMTAwIDAwMDBiCiAqICBiUmVxdWVzdDogICAgICAgIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSCiAqICB3VmFsdWU6ICAgICAgICAgIDAKICogIHdJbmRleDogICAgICAgICAgUG9ydAogKiAgd0xlbmd0aDogICAgICAgICAwCiAqICBEYXRhOiAgICAgICAgICAgIGxhdGVuY3kgKG9uIHJldHVybikKICovCgovKiAKICogRlRESV9TSU9fU0VUX0xBVEVOQ1lfVElNRVIKICoKICogU2V0IHRoZSB0aW1lb3V0IGludGVydmFsLiBUaGUgRlRESSBjb2xsZWN0cyBkYXRhIGZyb20gdGhlIHNsYXZlCiAqIGRldmljZSwgdHJhbnNtaXR0aW5nIGl0IHRvIHRoZSBob3N0IHdoZW4gZWl0aGVyIEEpIDYyIGJ5dGVzIGFyZQogKiByZWNlaXZlZCwgb3IgQikgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgaGFzIGVsYXBzZWQgYW5kIHRoZSBidWZmZXIKICogY29udGFpbnMgYXQgbGVhc3QgMSBieXRlLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGEgc21hbGwgbnVtYmVyCiAqIGNhbiBkcmFtYXRpY2FsbHkgaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3IgYXBwbGljYXRpb25zIHdoaWNoIHNlbmQKICogc21hbGwgcGFja2V0cywgc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgaXMgMTZtcy4KICovCiNkZWZpbmUgIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSX1JFUVVFU1QgRlRESV9TSU9fU0VUX0xBVEVOQ1lfVElNRVIKI2RlZmluZSAgRlRESV9TSU9fU0VUX0xBVEVOQ1lfVElNRVJfUkVRVUVTVF9UWVBFIDB4NDAKCi8qIAogKiAgQm1SZXF1ZXN0VHlwZTogICAwMTAwIDAwMDBiCiAqICBiUmVxdWVzdDogICAgICAgIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCiAqICB3VmFsdWU6ICAgICAgICAgIExhdGVuY3kgKG1pbGxpc2Vjb25kcykKICogIHdJbmRleDogICAgICAgICAgUG9ydAogKiAgd0xlbmd0aDogICAgICAgICAwCiAqICBEYXRhOiAgICAgICAgICAgIE5vbmUKICoKICogd1ZhbHVlOgogKiAgIEIwLi43ICAgTGF0ZW5jeSB0aW1lcgogKiAgIEI4Li4xNSAgMAogKgogKi8KCi8qCiAqIEZURElfU0lPX1NFVF9FVkVOVF9DSEFSIAogKgogKiBTZXQgdGhlIHNwZWNpYWwgZXZlbnQgY2hhcmFjdGVyIGZvciB0aGUgc3BlY2lmaWVkIGNvbW11bmljYXRpb25zIHBvcnQuCiAqIElmIHRoZSBkZXZpY2Ugc2VlcyB0aGlzIGNoYXJhY3RlciBpdCB3aWxsIGltbWVkaWF0ZWx5IHJldHVybiB0aGUKICogZGF0YSByZWFkIHNvIGZhciAtIHJhdGhlciB0aGFuIHdhaXQgNDBtcyBvciB1bnRpbCA2MiBieXRlcyBhcmUgcmVhZAogKiB3aGljaCBpcyB3aGF0IG5vcm1hbGx5IGhhcHBlbnMuCiAqLwoKCiNkZWZpbmUgIEZURElfU0lPX1NFVF9FVkVOVF9DSEFSX1JFUVVFU1QgRlRESV9TSU9fU0VUX0VWRU5UX0NIQVIKI2RlZmluZSAgRlRESV9TSU9fU0VUX0VWRU5UX0NIQVJfUkVRVUVTVF9UWVBFIDB4NDAKCgovKiAKICogIEJtUmVxdWVzdFR5cGU6ICAgMDEwMCAwMDAwYgogKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUgogKiAgd1ZhbHVlOiAgICAgICAgICBFdmVudENoYXIKICogIHdJbmRleDogICAgICAgICAgUG9ydAogKiAgd0xlbmd0aDogICAgICAgICAwCiAqICBEYXRhOiAgICAgICAgICAgIE5vbmUKICoKICogd1ZhbHVlOgogKiAgIEIwLi43ICAgRXZlbnQgQ2hhcmFjdGVyCiAqICAgQjggICAgICBFdmVudCBDaGFyYWN0ZXIgUHJvY2Vzc2luZwogKiAgICAgICAgICAgICAwID0gZGlzYWJsZWQKICogICAgICAgICAgICAgMSA9IGVuYWJsZWQKICogICBCOS4uMTUgIFJlc2VydmVkCiAqCiAqLwogICAgICAgICAgCi8qIEZURElfU0lPX1NFVF9FUlJPUl9DSEFSICovCgovKiBTZXQgdGhlIHBhcml0eSBlcnJvciByZXBsYWNlbWVudCBjaGFyYWN0ZXIgZm9yIHRoZSBzcGVjaWZpZWQgY29tbXVuaWNhdGlvbnMgcG9ydCAqLwoKLyogCiAqICBCbVJlcXVlc3RUeXBlOiAgMDEwMCAwMDAwYgogKiAgYlJlcXVlc3Q6ICAgICAgIEZURElfU0lPX1NFVF9FVkVOVF9DSEFSCiAqICB3VmFsdWU6ICAgICAgICAgRXJyb3IgQ2hhcgogKiAgd0luZGV4OiAgICAgICAgIFBvcnQKICogIHdMZW5ndGg6ICAgICAgICAwCiAqICBEYXRhOiAgICAgICAgICAgTm9uZQogKgogKkVycm9yIENoYXIKICogIEIwLi43ICBFcnJvciBDaGFyYWN0ZXIKICogIEI4ICAgICBFcnJvciBDaGFyYWN0ZXIgUHJvY2Vzc2luZwogKiAgICAgICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgICAgICAxID0gZW5hYmxlZAogKiAgQjkuLjE1IFJlc2VydmVkCiAqCiAqLwoKLyogRlRESV9TSU9fR0VUX01PREVNX1NUQVRVUyAqLwovKiBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgbW9kZW0gc3RhdHVzIHJlZ2lzdGVyICovCgojZGVmaW5lIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVNfUkVRVUVTVF9UWVBFIDB4YzAKI2RlZmluZSBGVERJX1NJT19HRVRfTU9ERU1fU1RBVFVTX1JFUVVFU1QgRlRESV9TSU9fR0VUX01PREVNX1NUQVRVUwojZGVmaW5lIEZURElfU0lPX0NUU19NQVNLIDB4MTAKI2RlZmluZSBGVERJX1NJT19EU1JfTUFTSyAweDIwCiNkZWZpbmUgRlRESV9TSU9fUklfTUFTSyAgMHg0MAojZGVmaW5lIEZURElfU0lPX1JMU0RfTUFTSyAweDgwCi8qIAogKiAgIEJtUmVxdWVzdFR5cGU6ICAgMTEwMCAwMDAwYgogKiAgIGJSZXF1ZXN0OiAgICAgICAgRlRESV9TSU9fR0VUX01PREVNX1NUQVRVUwogKiAgIHdWYWx1ZTogICAgICAgICAgemVybwogKiAgIHdJbmRleDogICAgICAgICAgUG9ydAogKiAgIHdMZW5ndGg6ICAgICAgICAgMQogKiAgIERhdGE6ICAgICAgICAgICAgU3RhdHVzCiAqIAogKiBPbmUgYnl0ZSBvZiBkYXRhIGlzIHJldHVybmVkIAogKiBCMC4uMyAwCiAqIEI0ICAgIENUUwogKiAgICAgICAgIDAgPSBpbmFjdGl2ZQogKiAgICAgICAgIDEgPSBhY3RpdmUKICogQjUgICAgRFNSCiAqICAgICAgICAgMCA9IGluYWN0aXZlCiAqICAgICAgICAgMSA9IGFjdGl2ZQogKiBCNiAgICBSaW5nIEluZGljYXRvciAoUkkpCiAqICAgICAgICAgMCA9IGluYWN0aXZlCiAqICAgICAgICAgMSA9IGFjdGl2ZQogKiBCNyAgICBSZWNlaXZlIExpbmUgU2lnbmFsIERldGVjdCAoUkxTRCkKICogICAgICAgICAwID0gaW5hY3RpdmUKICogICAgICAgICAxID0gYWN0aXZlIAogKi8KCgoKLyogRGVzY3JpcHRvcnMgcmV0dXJuZWQgYnkgdGhlIGRldmljZSAKICogCiAqICBEZXZpY2UgRGVzY3JpcHRvcgogKiAKICogT2Zmc2V0CUZpZWxkCQlTaXplCVZhbHVlCURlc2NyaXB0aW9uCiAqIDAJYkxlbmd0aAkJMQkweDEyCVNpemUgb2YgZGVzY3JpcHRvciBpbiBieXRlcwogKiAxCWJEZXNjcmlwdG9yVHlwZQkxCTB4MDEJREVWSUNFIERlc2NyaXB0b3IgVHlwZQogKiAyCWJjZFVTQgkJMgkweDAxMTAJVVNCIFNwZWMgUmVsZWFzZSBOdW1iZXIKICogNAliRGV2aWNlQ2xhc3MJMQkweDAwCUNsYXNzIENvZGUKICogNQliRGV2aWNlU3ViQ2xhc3MJMQkweDAwCVN1YkNsYXNzIENvZGUKICogNgliRGV2aWNlUHJvdG9jb2wJMQkweDAwCVByb3RvY29sIENvZGUKICogNwliTWF4UGFja2V0U2l6ZTAgMQkweDA4CU1heGltdW0gcGFja2V0IHNpemUgZm9yIGVuZHBvaW50IDAKICogOAlpZFZlbmRvcgkyCTB4MDQwMwlWZW5kb3IgSUQKICogMTAJaWRQcm9kdWN0CTIJMHg4MzcyCVByb2R1Y3QgSUQgKEZURElfU0lPX1BJRCkKICogMTIJYmNkRGV2aWNlCTIJMHgwMDAxCURldmljZSByZWxlYXNlIG51bWJlcgogKiAxNAlpTWFudWZhY3R1cmVyCTEJMHgwMQlJbmRleCBvZiBtYW4uIHN0cmluZyBkZXNjCiAqIDE1CWlQcm9kdWN0CTEJMHgwMglJbmRleCBvZiBwcm9kIHN0cmluZyBkZXNjCiAqIDE2CWlTZXJpYWxOdW1iZXIJMQkweDAyCUluZGV4IG9mIHNlcmlhbCBubXIgc3RyaW5nIGRlc2MKICogMTcJYk51bUNvbmZpZ3VyYXRpb25zIDEgICAgMHgwMQlOdW1iZXIgb2YgcG9zc2libGUgY29uZmlndXJhdGlvbnMKICogCiAqIENvbmZpZ3VyYXRpb24gRGVzY3JpcHRvcgogKiAKICogT2Zmc2V0CUZpZWxkCQkJU2l6ZQlWYWx1ZQogKiAwCWJMZW5ndGgJCQkxCTB4MDkJU2l6ZSBvZiBkZXNjcmlwdG9yIGluIGJ5dGVzCiAqIDEJYkRlc2NyaXB0b3JUeXBlCQkxCTB4MDIJQ09ORklHVVJBVElPTiBEZXNjcmlwdG9yIFR5cGUKICogMgl3VG90YWxMZW5ndGgJCTIJMHgwMDIwCVRvdGFsIGxlbmd0aCBvZiBkYXRhCiAqIDQJYk51bUludGVyZmFjZXMJCTEJMHgwMQlOdW1iZXIgb2YgaW50ZXJmYWNlcyBzdXBwb3J0ZWQKICogNQliQ29uZmlndXJhdGlvblZhbHVlCTEJMHgwMQlBcmd1bWVudCBmb3IgU2V0Q09uZmlndXJhdGlvbigpIHJlcQogKiA2CWlDb25maWd1cmF0aW9uCQkxCTB4MDIJSW5kZXggb2YgY29uZmlnIHN0cmluZyBkZXNjcmlwdG9yCiAqIDcJYm1BdHRyaWJ1dGVzCQkxCTB4MjAJQ29uZmlnIGNoYXJhY3RlcmlzdGljcyBSZW1vdGUgV2FrZXVwCiAqIDgJTWF4UG93ZXIJCTEJMHgxRQlNYXggcG93ZXIgY29uc3VtcHRpb24KICogCiAqIEludGVyZmFjZSBEZXNjcmlwdG9yCiAqIAogKiBPZmZzZXQJRmllbGQJCQlTaXplCVZhbHVlCiAqIDAJYkxlbmd0aAkJCTEJMHgwOQlTaXplIG9mIGRlc2NyaXB0b3IgaW4gYnl0ZXMKICogMQliRGVzY3JpcHRvclR5cGUJCTEJMHgwNAlJTlRFUkZBQ0UgRGVzY3JpcHRvciBUeXBlCiAqIDIJYkludGVyZmFjZU51bWJlcgkxCTB4MDAJTnVtYmVyIG9mIGludGVyZmFjZQogKiAzCWJBbHRlcm5hdGVTZXR0aW5nCTEJMHgwMAlWYWx1ZSB1c2VkIHRvIHNlbGVjdCBhbHRlcm5hdGUKICogNAliTnVtRW5kcG9pbnRzCQkxCTB4MDIJTnVtYmVyIG9mIGVuZHBvaW50cwogKiA1CWJJbnRlcmZhY2VDbGFzcwkJMQkweEZGCUNsYXNzIENvZGUKICogNgliSW50ZXJmYWNlU3ViQ2xhc3MJMQkweEZGCVN1YmNsYXNzIENvZGUKICogNwliSW50ZXJmYWNlUHJvdG9jb2wJMQkweEZGCVByb3RvY29sIENvZGUKICogOAlpSW50ZXJmYWNlCQkxCTB4MDIJSW5kZXggb2YgaW50ZXJmYWNlIHN0cmluZyBkZXNjcmlwdGlvbgogKiAKICogSU4gRW5kcG9pbnQgRGVzY3JpcHRvcgogKiAKICogT2Zmc2V0CUZpZWxkCQkJU2l6ZQlWYWx1ZQogKiAwCWJMZW5ndGgJCQkxCTB4MDcJU2l6ZSBvZiBkZXNjcmlwdG9yIGluIGJ5dGVzCiAqIDEJYkRlc2NyaXB0b3JUeXBlCQkxCTB4MDUJRU5EUE9JTlQgZGVzY3JpcHRvciB0eXBlCiAqIDIJYkVuZHBvaW50QWRkcmVzcwkxCTB4ODIJQWRkcmVzcyBvZiBlbmRwb2ludAogKiAzCWJtQXR0cmlidXRlcwkJMQkweDAyCUVuZHBvaW50IGF0dHJpYnV0ZXMgLSBCdWxrCiAqIDQJYk51bUVuZHBvaW50cwkJMgkweDAwNDAJbWF4aW11bSBwYWNrZXQgc2l6ZQogKiA1CWJJbnRlcnZhbAkJMQkweDAwCUludGVydmFsIGZvciBwb2xsaW5nIGVuZHBvaW50CiAqIAogKiBPVVQgRW5kcG9pbnQgRGVzY3JpcHRvcgogKiAKICogT2Zmc2V0CUZpZWxkCQkJU2l6ZQlWYWx1ZQogKiAwCWJMZW5ndGgJCQkxCTB4MDcJU2l6ZSBvZiBkZXNjcmlwdG9yIGluIGJ5dGVzCiAqIDEJYkRlc2NyaXB0b3JUeXBlCQkxCTB4MDUJRU5EUE9JTlQgZGVzY3JpcHRvciB0eXBlCiAqIDIJYkVuZHBvaW50QWRkcmVzcwkxCTB4MDIJQWRkcmVzcyBvZiBlbmRwb2ludAogKiAzCWJtQXR0cmlidXRlcwkJMQkweDAyCUVuZHBvaW50IGF0dHJpYnV0ZXMgLSBCdWxrCiAqIDQJYk51bUVuZHBvaW50cwkJMgkweDAwNDAJbWF4aW11bSBwYWNrZXQgc2l6ZQogKiA1CWJJbnRlcnZhbAkJMQkweDAwCUludGVydmFsIGZvciBwb2xsaW5nIGVuZHBvaW50CiAqICAgICAKICogREFUQSBGT1JNQVQKICogCiAqIElOIEVuZHBvaW50CiAqIAogKiBUaGUgZGV2aWNlIHJlc2VydmVzIHRoZSBmaXJzdCB0d28gYnl0ZXMgb2YgZGF0YSBvbiB0aGlzIGVuZHBvaW50IHRvIGNvbnRhaW4gdGhlIGN1cnJlbnQKICogdmFsdWVzIG9mIHRoZSBtb2RlbSBhbmQgbGluZSBzdGF0dXMgcmVnaXN0ZXJzLiBJbiB0aGUgYWJzZW5jZSBvZiBkYXRhLCB0aGUgZGV2aWNlIAogKiBnZW5lcmF0ZXMgYSBtZXNzYWdlIGNvbnNpc3Rpbmcgb2YgdGhlc2UgdHdvIHN0YXR1cyBieXRlcyBldmVyeSA0MCBtcwogKiAKICogQnl0ZSAwOiBNb2RlbSBTdGF0dXMKICogCiAqIE9mZnNldAlEZXNjcmlwdGlvbgogKiBCMAlSZXNlcnZlZCAtIG11c3QgYmUgMQogKiBCMQlSZXNlcnZlZCAtIG11c3QgYmUgMAogKiBCMglSZXNlcnZlZCAtIG11c3QgYmUgMAogKiBCMwlSZXNlcnZlZCAtIG11c3QgYmUgMAogKiBCNAlDbGVhciB0byBTZW5kIChDVFMpCiAqIEI1CURhdGEgU2V0IFJlYWR5IChEU1IpCiAqIEI2CVJpbmcgSW5kaWNhdG9yIChSSSkKICogQjcJUmVjZWl2ZSBMaW5lIFNpZ25hbCBEZXRlY3QgKFJMU0QpCiAqIAogKiBCeXRlIDE6IExpbmUgU3RhdHVzCiAqIAogKiBPZmZzZXQJRGVzY3JpcHRpb24KICogQjAJRGF0YSBSZWFkeSAoRFIpCiAqIEIxCU92ZXJydW4gRXJyb3IgKE9FKQogKiBCMglQYXJpdHkgRXJyb3IgKFBFKQogKiBCMwlGcmFtaW5nIEVycm9yIChGRSkKICogQjQJQnJlYWsgSW50ZXJydXB0IChCSSkKICogQjUJVHJhbnNtaXR0ZXIgSG9sZGluZyBSZWdpc3RlciAoVEhSRSkKICogQjYJVHJhbnNtaXR0ZXIgRW1wdHkgKFRFTVQpCiAqIEI3CUVycm9yIGluIFJDVlIgRklGTwogKiAKICovCiNkZWZpbmUgRlRESV9SUzBfQ1RTCSgxIDw8IDQpCiNkZWZpbmUgRlRESV9SUzBfRFNSCSgxIDw8IDUpCiNkZWZpbmUgRlRESV9SUzBfUkkJKDEgPDwgNikKI2RlZmluZSBGVERJX1JTMF9STFNECSgxIDw8IDcpCgojZGVmaW5lIEZURElfUlNfRFIgIDEKI2RlZmluZSBGVERJX1JTX09FICgxPDwxKQojZGVmaW5lIEZURElfUlNfUEUgKDE8PDIpCiNkZWZpbmUgRlRESV9SU19GRSAoMTw8MykKI2RlZmluZSBGVERJX1JTX0JJICgxPDw0KQojZGVmaW5lIEZURElfUlNfVEhSRSAoMTw8NSkKI2RlZmluZSBGVERJX1JTX1RFTVQgKDE8PDYpCiNkZWZpbmUgRlRESV9SU19GSUZPICAoMTw8NykKCi8qCiAqIE9VVCBFbmRwb2ludAogKiAKICogVGhpcyBkZXZpY2UgcmVzZXJ2ZXMgdGhlIGZpcnN0IGJ5dGVzIG9mIGRhdGEgb24gdGhpcyBlbmRwb2ludCBjb250YWluIHRoZSBsZW5ndGgKICogYW5kIHBvcnQgaWRlbnRpZmllciBvZiB0aGUgbWVzc2FnZS4gRm9yIHRoZSBGVERJIFVTQiBTZXJpYWwgY29udmVydGVyIHRoZSBwb3J0IAogKiBpZGVudGlmaWVyIGlzIGFsd2F5cyAxLgogKiAKICogQnl0ZSAwOiBMaW5lIFN0YXR1cwogKiAKICogT2Zmc2V0CURlc2NyaXB0aW9uCiAqIEIwCVJlc2VydmVkIC0gbXVzdCBiZSAxCiAqIEIxCVJlc2VydmVkIC0gbXVzdCBiZSAwCiAqIEIyLi43CUxlbmd0aCBvZiBtZXNzYWdlIC0gKG5vdCBpbmNsdWRpbmcgQnl0ZSAwKQogKiAKICovCgo=