LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZS4KICoKICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICogcHJvamVjdC4KICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICogTUEgMDIxMTEtMTMwNyBVU0EKICovCgovKiBpODI1OS5oIGk4MjU5IFBJQyBSZWdpc3RlcnMgKi8KCiNpZm5kZWYgX0FTTUkzODZfSTgyNTlfSF8KI2RlZmluZSBfQVNNSTM4Nl9JODk1OV9IXyAgICAgICAxCgoKLyogUElDIEkvTyBtYXBwZWQgcmVnaXN0ZXJzICovCgojZGVmaW5lIElSUgkJMHgwCS8qIEludGVycnVwdCBSZXF1ZXN0IFJlZ2lzdGVyICovCiNkZWZpbmUgSVNSCQkweDAJLyogSW4tU2VydmljZSBSZWdpc3RlciAqLwojZGVmaW5lIElDVzEJCTB4MAkvKiBJbml0aWFsaXphdGlvbiBDb250cm9sIFdvcmQgMSAqLwojZGVmaW5lIE9DVzIJCTB4MAkvKiBPcGVyYXRpb24gQ29udHJvbCBXb3JkIDIgKi8KI2RlZmluZSBPQ1czCQkweDAJLyogT3BlcmF0aW9uIENvbnRyb2wgV29yZCAzICovCiNkZWZpbmUgSUNXMgkJMHgxCS8qIEluaXRpYWxpemF0aW9uIENvbnRyb2wgV29yZCAyICovCiNkZWZpbmUgSUNXMwkJMHgxCS8qIEluaXRpYWxpemF0aW9uIENvbnRyb2wgV29yZCAzICovCiNkZWZpbmUgSUNXNAkJMHgxCS8qIEluaXRpYWxpemF0aW9uIENvbnRyb2wgV29yZCA0ICovCiNkZWZpbmUgSU1SCQkweDEJLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgKi8KCi8qIGJpdHMgZm9yIElSUiwgSU1SLCBJU1IgYW5kIElDVzMgKi8KI2RlZmluZQlJUjcJCTB4ODAJLyogSVI3ICovCiNkZWZpbmUJSVI2CQkweDQwCS8qIElSNiAqLwojZGVmaW5lCUlSNQkJMHgyMAkvKiBJUjUgKi8KI2RlZmluZQlJUjQJCTB4MTAJLyogSVI0ICovCiNkZWZpbmUJSVIzCQkweDA4CS8qIElSMyAqLwojZGVmaW5lCUlSMgkJMHgwNAkvKiBJUjIgKi8KI2RlZmluZQlJUjEJCTB4MDIJLyogSVIxICovCiNkZWZpbmUJSVIwCQkweDAxCS8qIElSMCAqLwoKLyogYml0cyBmb3IgU0VPSSAqLwojZGVmaW5lCVNFT0lfSVI3CTB4MDcJLyogSVI3ICovCiNkZWZpbmUJU0VPSV9JUjYJMHgwNgkvKiBJUjYgKi8KI2RlZmluZQlTRU9JX0lSNQkweDA1CS8qIElSNSAqLwojZGVmaW5lCVNFT0lfSVI0CTB4MDQJLyogSVI0ICovCiNkZWZpbmUJU0VPSV9JUjMJMHgwMwkvKiBJUjMgKi8KI2RlZmluZQlTRU9JX0lSMgkweDAyCS8qIElSMiAqLwojZGVmaW5lCVNFT0lfSVIxCTB4MDEJLyogSVIxICovCiNkZWZpbmUJU0VPSV9JUjAJMHgwMAkvKiBJUjAgKi8KCi8qIE9DVzIgYml0cyAqLwojZGVmaW5lIE9DVzJfUkNMUgkweDAwCS8qIFJvdGF0ZS9jbGVhciAqLwojZGVmaW5lIE9DVzJfTkVPSQkweDIwCS8qIE5vbiBzcGVjaWZpYyBFT0kgKi8KI2RlZmluZSBPQ1cyX05PUAkweDQwCS8qIE5PUCAqLwojZGVmaW5lIE9DVzJfU0VPSQkweDYwCS8qIFNwZWNpZmljIEVPSSAqLwojZGVmaW5lIE9DVzJfUlNFVAkweDgwCS8qIFJvdGF0ZS9zZXQgKi8KI2RlZmluZSBPQ1cyX1JFT0kJMHhBMAkvKiBSb3RhdGUgb24gbm9uIHNwZWNpZmljIEVPSSAqLwojZGVmaW5lIE9DVzJfUFNFVAkweEMwCS8qIFByaW9yaXR5IFNldCBDb21tYW5kICovCiNkZWZpbmUgT0NXMl9SU0VPSQkweEUwCS8qIFJvdGF0ZSBvbiBzcGVjaWZpYyBFT0kgKi8KCi8qIElDVzEgYml0cyAqLwojZGVmaW5lIElDVzFfU0VMCTB4MTAJLyogU2VsZWN0IElDVzEgKi8KI2RlZmluZSBJQ1cxX0xUSU0JMHgwOAkvKiBMZXZlbC1UcmlnZ2VyZWQgSW50ZXJydXB0IE1vZGUgKi8KI2RlZmluZSBJQ1cxX0FESQkweDA0CS8qIEFkZHJlc3MgSW50ZXJ2YWwgKi8KI2RlZmluZSBJQ1cxX1NOR0wJMHgwMgkvKiBTaW5nbGUgUElDICovCiNkZWZpbmUgSUNXMV9FSUNXNAkweDAxCS8qIEV4cGVjdCBpbml0aWxpemF0aW9uIElDVzQgKi8KCi8qIElDVzIgaXMgdGhlIHN0YXJ0aW5nIHZlY3RvciBudW1iZXIgKi8KCi8qIElDVzIgaXMgYml0LW1hc2sgb2YgcHJlc2VudCBzbGF2ZXMgZm9yIGEgbWFzdGVyIGRldmljZSwKICogb3IgdGhlIHNsYXZlIElEIGZvciBhIHNsYXZlIGRldmljZSAqLwoKLyogSUNXNCBiaXRzICovCiNkZWZpbmUJSUNXNF9BRU9JCTB4MDIJLyogQXV0b21hdGljIEVPSSBNb2RlICovCiNkZWZpbmUgSUNXNF9QTQkJMHgwMQkvKiBNaWNyb3Byb2Nlc3NvciBNb2RlICovCgojZW5kaWYK